pax_global_header00006660000000000000000000000064141457623450014525gustar00rootroot0000000000000052 comment=0008930811ff6830aa1117068fa9a49fbe0176c4 picolibc-1.7.4/000077500000000000000000000000001414576234500133225ustar00rootroot00000000000000picolibc-1.7.4/.clang-format000066400000000000000000000411401414576234500156750ustar00rootroot00000000000000# # clang-format configuration file. Intended for clang-format >= 4. # # For more information, see: # # Documentation/process/clang-format.rst # https://clang.llvm.org/docs/ClangFormat.html # https://clang.llvm.org/docs/ClangFormatStyleOptions.html # --- AccessModifierOffset: -4 AlignAfterOpenBracket: Align AlignConsecutiveAssignments: false AlignConsecutiveDeclarations: false #AlignEscapedNewlines: Left # Unknown to clang-format-4.0 AlignOperands: true AlignTrailingComments: false AllowAllParametersOfDeclarationOnNextLine: false AllowShortBlocksOnASingleLine: false AllowShortCaseLabelsOnASingleLine: false AllowShortFunctionsOnASingleLine: None AllowShortIfStatementsOnASingleLine: false AllowShortLoopsOnASingleLine: false AlwaysBreakAfterDefinitionReturnType: All AlwaysBreakAfterReturnType: AllDefinitions AlwaysBreakBeforeMultilineStrings: false AlwaysBreakTemplateDeclarations: false BinPackArguments: true BinPackParameters: true BraceWrapping: AfterClass: false AfterControlStatement: false AfterEnum: false AfterFunction: true AfterNamespace: true AfterObjCDeclaration: false AfterStruct: false AfterUnion: false #AfterExternBlock: false # Unknown to clang-format-5.0 BeforeCatch: false BeforeElse: false IndentBraces: false #SplitEmptyFunction: true # Unknown to clang-format-4.0 #SplitEmptyRecord: true # Unknown to clang-format-4.0 #SplitEmptyNamespace: true # Unknown to clang-format-4.0 BreakBeforeBinaryOperators: None BreakBeforeBraces: Custom #BreakBeforeInheritanceComma: false # Unknown to clang-format-4.0 BreakBeforeTernaryOperators: false BreakConstructorInitializersBeforeComma: false #BreakConstructorInitializers: BeforeComma # Unknown to clang-format-4.0 BreakAfterJavaFieldAnnotations: false BreakStringLiterals: false ColumnLimit: 80 CommentPragmas: '^ IWYU pragma:' #CompactNamespaces: false # Unknown to clang-format-4.0 ConstructorInitializerAllOnOneLineOrOnePerLine: false ConstructorInitializerIndentWidth: 4 ContinuationIndentWidth: 4 Cpp11BracedListStyle: false DerivePointerAlignment: false DisableFormat: false ExperimentalAutoDetectBinPacking: false #FixNamespaceComments: false # Unknown to clang-format-4.0 # Taken from: # git grep -h '^#define [^[:space:]]*for_each[^[:space:]]*(' include/ \ # | sed "s,^#define \([^[:space:]]*for_each[^[:space:]]*\)(.*$, - '\1'," \ # | sort | uniq ForEachMacros: - 'apei_estatus_for_each_section' - 'ata_for_each_dev' - 'ata_for_each_link' - '__ata_qc_for_each' - 'ata_qc_for_each' - 'ata_qc_for_each_raw' - 'ata_qc_for_each_with_internal' - 'ax25_for_each' - 'ax25_uid_for_each' - '__bio_for_each_bvec' - 'bio_for_each_bvec' - 'bio_for_each_bvec_all' - 'bio_for_each_integrity_vec' - '__bio_for_each_segment' - 'bio_for_each_segment' - 'bio_for_each_segment_all' - 'bio_list_for_each' - 'bip_for_each_vec' - 'bitmap_for_each_clear_region' - 'bitmap_for_each_set_region' - 'blkg_for_each_descendant_post' - 'blkg_for_each_descendant_pre' - 'blk_queue_for_each_rl' - 'bond_for_each_slave' - 'bond_for_each_slave_rcu' - 'bpf_for_each_spilled_reg' - 'btree_for_each_safe128' - 'btree_for_each_safe32' - 'btree_for_each_safe64' - 'btree_for_each_safel' - 'card_for_each_dev' - 'cgroup_taskset_for_each' - 'cgroup_taskset_for_each_leader' - 'cpufreq_for_each_entry' - 'cpufreq_for_each_entry_idx' - 'cpufreq_for_each_valid_entry' - 'cpufreq_for_each_valid_entry_idx' - 'css_for_each_child' - 'css_for_each_descendant_post' - 'css_for_each_descendant_pre' - 'device_for_each_child_node' - 'displayid_iter_for_each' - 'dma_fence_chain_for_each' - 'do_for_each_ftrace_op' - 'drm_atomic_crtc_for_each_plane' - 'drm_atomic_crtc_state_for_each_plane' - 'drm_atomic_crtc_state_for_each_plane_state' - 'drm_atomic_for_each_plane_damage' - 'drm_client_for_each_connector_iter' - 'drm_client_for_each_modeset' - 'drm_connector_for_each_possible_encoder' - 'drm_for_each_bridge_in_chain' - 'drm_for_each_connector_iter' - 'drm_for_each_crtc' - 'drm_for_each_crtc_reverse' - 'drm_for_each_encoder' - 'drm_for_each_encoder_mask' - 'drm_for_each_fb' - 'drm_for_each_legacy_plane' - 'drm_for_each_plane' - 'drm_for_each_plane_mask' - 'drm_for_each_privobj' - 'drm_mm_for_each_hole' - 'drm_mm_for_each_node' - 'drm_mm_for_each_node_in_range' - 'drm_mm_for_each_node_safe' - 'flow_action_for_each' - 'for_each_acpi_dev_match' - 'for_each_active_dev_scope' - 'for_each_active_drhd_unit' - 'for_each_active_iommu' - 'for_each_aggr_pgid' - 'for_each_available_child_of_node' - 'for_each_bio' - 'for_each_board_func_rsrc' - 'for_each_bvec' - 'for_each_card_auxs' - 'for_each_card_auxs_safe' - 'for_each_card_components' - 'for_each_card_dapms' - 'for_each_card_pre_auxs' - 'for_each_card_prelinks' - 'for_each_card_rtds' - 'for_each_card_rtds_safe' - 'for_each_card_widgets' - 'for_each_card_widgets_safe' - 'for_each_cgroup_storage_type' - 'for_each_child_of_node' - 'for_each_clear_bit' - 'for_each_clear_bit_from' - 'for_each_cmsghdr' - 'for_each_compatible_node' - 'for_each_component_dais' - 'for_each_component_dais_safe' - 'for_each_comp_order' - 'for_each_console' - 'for_each_cpu' - 'for_each_cpu_and' - 'for_each_cpu_not' - 'for_each_cpu_wrap' - 'for_each_dapm_widgets' - 'for_each_dev_addr' - 'for_each_dev_scope' - 'for_each_dma_cap_mask' - 'for_each_dpcm_be' - 'for_each_dpcm_be_rollback' - 'for_each_dpcm_be_safe' - 'for_each_dpcm_fe' - 'for_each_drhd_unit' - 'for_each_dss_dev' - 'for_each_dtpm_table' - 'for_each_efi_memory_desc' - 'for_each_efi_memory_desc_in_map' - 'for_each_element' - 'for_each_element_extid' - 'for_each_element_id' - 'for_each_endpoint_of_node' - 'for_each_evictable_lru' - 'for_each_fib6_node_rt_rcu' - 'for_each_fib6_walker_rt' - 'for_each_free_mem_pfn_range_in_zone' - 'for_each_free_mem_pfn_range_in_zone_from' - 'for_each_free_mem_range' - 'for_each_free_mem_range_reverse' - 'for_each_func_rsrc' - 'for_each_hstate' - 'for_each_if' - 'for_each_iommu' - 'for_each_ip_tunnel_rcu' - 'for_each_irq_nr' - 'for_each_link_codecs' - 'for_each_link_cpus' - 'for_each_link_platforms' - 'for_each_lru' - 'for_each_matching_node' - 'for_each_matching_node_and_match' - 'for_each_member' - 'for_each_memcg_cache_index' - 'for_each_mem_pfn_range' - '__for_each_mem_range' - 'for_each_mem_range' - '__for_each_mem_range_rev' - 'for_each_mem_range_rev' - 'for_each_mem_region' - 'for_each_migratetype_order' - 'for_each_msi_entry' - 'for_each_msi_entry_safe' - 'for_each_msi_vector' - 'for_each_net' - 'for_each_net_continue_reverse' - 'for_each_netdev' - 'for_each_netdev_continue' - 'for_each_netdev_continue_rcu' - 'for_each_netdev_continue_reverse' - 'for_each_netdev_feature' - 'for_each_netdev_in_bond_rcu' - 'for_each_netdev_rcu' - 'for_each_netdev_reverse' - 'for_each_netdev_safe' - 'for_each_net_rcu' - 'for_each_new_connector_in_state' - 'for_each_new_crtc_in_state' - 'for_each_new_mst_mgr_in_state' - 'for_each_new_plane_in_state' - 'for_each_new_private_obj_in_state' - 'for_each_node' - 'for_each_node_by_name' - 'for_each_node_by_type' - 'for_each_node_mask' - 'for_each_node_state' - 'for_each_node_with_cpus' - 'for_each_node_with_property' - 'for_each_nonreserved_multicast_dest_pgid' - 'for_each_of_allnodes' - 'for_each_of_allnodes_from' - 'for_each_of_cpu_node' - 'for_each_of_pci_range' - 'for_each_old_connector_in_state' - 'for_each_old_crtc_in_state' - 'for_each_old_mst_mgr_in_state' - 'for_each_oldnew_connector_in_state' - 'for_each_oldnew_crtc_in_state' - 'for_each_oldnew_mst_mgr_in_state' - 'for_each_oldnew_plane_in_state' - 'for_each_oldnew_plane_in_state_reverse' - 'for_each_oldnew_private_obj_in_state' - 'for_each_old_plane_in_state' - 'for_each_old_private_obj_in_state' - 'for_each_online_cpu' - 'for_each_online_node' - 'for_each_online_pgdat' - 'for_each_pci_bridge' - 'for_each_pci_dev' - 'for_each_pci_msi_entry' - 'for_each_pcm_streams' - 'for_each_physmem_range' - 'for_each_populated_zone' - 'for_each_possible_cpu' - 'for_each_present_cpu' - 'for_each_prime_number' - 'for_each_prime_number_from' - 'for_each_process' - 'for_each_process_thread' - 'for_each_prop_codec_conf' - 'for_each_prop_dai_codec' - 'for_each_prop_dai_cpu' - 'for_each_prop_dlc_codecs' - 'for_each_prop_dlc_cpus' - 'for_each_prop_dlc_platforms' - 'for_each_property_of_node' - 'for_each_registered_fb' - 'for_each_requested_gpio' - 'for_each_requested_gpio_in_range' - 'for_each_reserved_mem_range' - 'for_each_reserved_mem_region' - 'for_each_rtd_codec_dais' - 'for_each_rtd_components' - 'for_each_rtd_cpu_dais' - 'for_each_rtd_dais' - 'for_each_set_bit' - 'for_each_set_bit_from' - 'for_each_set_clump8' - 'for_each_sg' - 'for_each_sg_dma_page' - 'for_each_sg_page' - 'for_each_sgtable_dma_page' - 'for_each_sgtable_dma_sg' - 'for_each_sgtable_page' - 'for_each_sgtable_sg' - 'for_each_sibling_event' - 'for_each_subelement' - 'for_each_subelement_extid' - 'for_each_subelement_id' - '__for_each_thread' - 'for_each_thread' - 'for_each_unicast_dest_pgid' - 'for_each_vsi' - 'for_each_wakeup_source' - 'for_each_zone' - 'for_each_zone_zonelist' - 'for_each_zone_zonelist_nodemask' - 'fwnode_for_each_available_child_node' - 'fwnode_for_each_child_node' - 'fwnode_graph_for_each_endpoint' - 'gadget_for_each_ep' - 'genradix_for_each' - 'genradix_for_each_from' - 'hash_for_each' - 'hash_for_each_possible' - 'hash_for_each_possible_rcu' - 'hash_for_each_possible_rcu_notrace' - 'hash_for_each_possible_safe' - 'hash_for_each_rcu' - 'hash_for_each_safe' - 'hctx_for_each_ctx' - 'hlist_bl_for_each_entry' - 'hlist_bl_for_each_entry_rcu' - 'hlist_bl_for_each_entry_safe' - 'hlist_for_each' - 'hlist_for_each_entry' - 'hlist_for_each_entry_continue' - 'hlist_for_each_entry_continue_rcu' - 'hlist_for_each_entry_continue_rcu_bh' - 'hlist_for_each_entry_from' - 'hlist_for_each_entry_from_rcu' - 'hlist_for_each_entry_rcu' - 'hlist_for_each_entry_rcu_bh' - 'hlist_for_each_entry_rcu_notrace' - 'hlist_for_each_entry_safe' - 'hlist_for_each_entry_srcu' - '__hlist_for_each_rcu' - 'hlist_for_each_safe' - 'hlist_nulls_for_each_entry' - 'hlist_nulls_for_each_entry_from' - 'hlist_nulls_for_each_entry_rcu' - 'hlist_nulls_for_each_entry_safe' - 'i3c_bus_for_each_i2cdev' - 'i3c_bus_for_each_i3cdev' - 'ide_host_for_each_port' - 'ide_port_for_each_dev' - 'ide_port_for_each_present_dev' - 'idr_for_each_entry' - 'idr_for_each_entry_continue' - 'idr_for_each_entry_continue_ul' - 'idr_for_each_entry_ul' - 'in_dev_for_each_ifa_rcu' - 'in_dev_for_each_ifa_rtnl' - 'inet_bind_bucket_for_each' - 'inet_lhash2_for_each_icsk_rcu' - 'key_for_each' - 'key_for_each_safe' - 'klp_for_each_func' - 'klp_for_each_func_safe' - 'klp_for_each_func_static' - 'klp_for_each_object' - 'klp_for_each_object_safe' - 'klp_for_each_object_static' - 'kunit_suite_for_each_test_case' - 'kvm_for_each_memslot' - 'kvm_for_each_vcpu' - 'list_for_each' - 'list_for_each_codec' - 'list_for_each_codec_safe' - 'list_for_each_continue' - 'list_for_each_entry' - 'list_for_each_entry_continue' - 'list_for_each_entry_continue_rcu' - 'list_for_each_entry_continue_reverse' - 'list_for_each_entry_from' - 'list_for_each_entry_from_rcu' - 'list_for_each_entry_from_reverse' - 'list_for_each_entry_lockless' - 'list_for_each_entry_rcu' - 'list_for_each_entry_reverse' - 'list_for_each_entry_safe' - 'list_for_each_entry_safe_continue' - 'list_for_each_entry_safe_from' - 'list_for_each_entry_safe_reverse' - 'list_for_each_entry_srcu' - 'list_for_each_prev' - 'list_for_each_prev_safe' - 'list_for_each_safe' - 'llist_for_each' - 'llist_for_each_entry' - 'llist_for_each_entry_safe' - 'llist_for_each_safe' - 'mci_for_each_dimm' - 'media_device_for_each_entity' - 'media_device_for_each_intf' - 'media_device_for_each_link' - 'media_device_for_each_pad' - 'nanddev_io_for_each_page' - 'netdev_for_each_lower_dev' - 'netdev_for_each_lower_private' - 'netdev_for_each_lower_private_rcu' - 'netdev_for_each_mc_addr' - 'netdev_for_each_uc_addr' - 'netdev_for_each_upper_dev_rcu' - 'netdev_hw_addr_list_for_each' - 'nft_rule_for_each_expr' - 'nla_for_each_attr' - 'nla_for_each_nested' - 'nlmsg_for_each_attr' - 'nlmsg_for_each_msg' - 'nr_neigh_for_each' - 'nr_neigh_for_each_safe' - 'nr_node_for_each' - 'nr_node_for_each_safe' - 'of_for_each_phandle' - 'of_property_for_each_string' - 'of_property_for_each_u32' - 'pci_bus_for_each_resource' - 'pcl_for_each_chunk' - 'pcl_for_each_segment' - 'pcm_for_each_format' - 'ping_portaddr_for_each_entry' - 'plist_for_each' - 'plist_for_each_continue' - 'plist_for_each_entry' - 'plist_for_each_entry_continue' - 'plist_for_each_entry_safe' - 'plist_for_each_safe' - 'pnp_for_each_card' - 'pnp_for_each_dev' - 'protocol_for_each_card' - 'protocol_for_each_dev' - 'queue_for_each_hw_ctx' - 'radix_tree_for_each_slot' - 'radix_tree_for_each_tagged' - 'rb_for_each' - 'rbtree_postorder_for_each_entry_safe' - 'rdma_for_each_block' - 'rdma_for_each_port' - 'rdma_umem_for_each_dma_block' - 'resource_list_for_each_entry' - 'resource_list_for_each_entry_safe' - 'rhl_for_each_entry_rcu' - 'rhl_for_each_rcu' - 'rht_for_each' - 'rht_for_each_entry' - 'rht_for_each_entry_from' - 'rht_for_each_entry_rcu' - 'rht_for_each_entry_rcu_from' - 'rht_for_each_entry_safe' - 'rht_for_each_from' - 'rht_for_each_rcu' - 'rht_for_each_rcu_from' - '__rq_for_each_bio' - 'rq_for_each_bvec' - 'rq_for_each_segment' - 'scsi_for_each_prot_sg' - 'scsi_for_each_sg' - 'sctp_for_each_hentry' - 'sctp_skb_for_each' - 'shdma_for_each_chan' - '__shost_for_each_device' - 'shost_for_each_device' - 'sk_for_each' - 'sk_for_each_bound' - 'sk_for_each_entry_offset_rcu' - 'sk_for_each_from' - 'sk_for_each_rcu' - 'sk_for_each_safe' - 'sk_nulls_for_each' - 'sk_nulls_for_each_from' - 'sk_nulls_for_each_rcu' - 'snd_array_for_each' - 'snd_pcm_group_for_each_entry' - 'snd_soc_dapm_widget_for_each_path' - 'snd_soc_dapm_widget_for_each_path_safe' - 'snd_soc_dapm_widget_for_each_sink_path' - 'snd_soc_dapm_widget_for_each_source_path' - 'tb_property_for_each' - 'tcf_exts_for_each_action' - 'udp_portaddr_for_each_entry' - 'udp_portaddr_for_each_entry_rcu' - 'usb_hub_for_each_child' - 'v4l2_device_for_each_subdev' - 'v4l2_m2m_for_each_dst_buf' - 'v4l2_m2m_for_each_dst_buf_safe' - 'v4l2_m2m_for_each_src_buf' - 'v4l2_m2m_for_each_src_buf_safe' - 'virtio_device_for_each_vq' - 'while_for_each_ftrace_op' - 'xa_for_each' - 'xa_for_each_marked' - 'xa_for_each_range' - 'xa_for_each_start' - 'xas_for_each' - 'xas_for_each_conflict' - 'xas_for_each_marked' - 'xbc_array_for_each_value' - 'xbc_for_each_key_value' - 'xbc_node_for_each_array_value' - 'xbc_node_for_each_child' - 'xbc_node_for_each_key_value' - 'zorro_for_each_dev' #IncludeBlocks: Preserve # Unknown to clang-format-5.0 IncludeCategories: - Regex: '.*' Priority: 1 IncludeIsMainRegex: '(Test)?$' IndentCaseLabels: false #IndentPPDirectives: None # Unknown to clang-format-5.0 IndentWidth: 4 IndentWrappedFunctionNames: false JavaScriptQuotes: Leave JavaScriptWrapImports: true KeepEmptyLinesAtTheStartOfBlocks: false MacroBlockBegin: '' MacroBlockEnd: '' MaxEmptyLinesToKeep: 1 NamespaceIndentation: None #ObjCBinPackProtocolList: Auto # Unknown to clang-format-5.0 ObjCBlockIndentWidth: 4 ObjCSpaceAfterProperty: true ObjCSpaceBeforeProtocolList: true # Taken from git's rules #PenaltyBreakAssignment: 10 # Unknown to clang-format-4.0 PenaltyBreakBeforeFirstCallParameter: 30 PenaltyBreakComment: 10 PenaltyBreakFirstLessLess: 0 PenaltyBreakString: 10 PenaltyExcessCharacter: 100 PenaltyReturnTypeOnItsOwnLine: 60 PointerAlignment: Right ReflowComments: false SortIncludes: false #SortUsingDeclarations: false # Unknown to clang-format-4.0 SpaceAfterCStyleCast: false SpaceAfterTemplateKeyword: true SpaceBeforeAssignmentOperators: true #SpaceBeforeCtorInitializerColon: true # Unknown to clang-format-5.0 #SpaceBeforeInheritanceColon: true # Unknown to clang-format-5.0 SpaceBeforeParens: ControlStatements #SpaceBeforeRangeBasedForLoopColon: true # Unknown to clang-format-5.0 SpaceInEmptyParentheses: false SpacesBeforeTrailingComments: 1 SpacesInAngles: false SpacesInContainerLiterals: false SpacesInCStyleCastParentheses: false SpacesInParentheses: false SpacesInSquareBrackets: false Standard: Cpp03 TabWidth: 8 UseTab: Never ... picolibc-1.7.4/.editorconfig000066400000000000000000000001561414576234500160010ustar00rootroot00000000000000[*] tab_width = 8 charset = utf-8 insert_final_newline = true [*.{c,h}] indent_size = 4 indent_style = space picolibc-1.7.4/.gitattributes000066400000000000000000000011451414576234500162160ustar00rootroot00000000000000# -*- conf -*- ## Set merge driver for ChangeLog files # See gnulib's lib/git-merge-changelog.c (or git-merge-changelog(1)) # for per-user setup instructions. # # The short version of this (optional) procedure is: # # (1) Install git-merge-changelog (this is the tricky part!) # # (2) Add something like the following to your ~/.gitconfig: # # [merge "merge-changelog"] # name = GNU-style ChangeLog merge driver # driver = git-merge-changelog %O %A %B # # (3) Enjoy mostly effortless ChangeLog merges, at least until the # file gets renamed again ... ChangeLog merge=merge-changelog picolibc-1.7.4/.github/000077500000000000000000000000001414576234500146625ustar00rootroot00000000000000picolibc-1.7.4/.github/CODEOWNERS000066400000000000000000000000731414576234500162550ustar00rootroot00000000000000# Automatically request review on all PRs * @keith-packard picolibc-1.7.4/.github/Dockerfile000066400000000000000000000012511414576234500166530ustar00rootroot00000000000000FROM debian:testing COPY .github/packages.txt / RUN apt-get update && \ apt-get install -y wget gnupg && \ wget -O /etc/apt/trusted.gpg.d/altusmetrum.gpg https://maps.altusmetrum.org/archive/archive-key.gpg && \ echo "deb http://maps.altusmetrum.org/archive unstable/" > /etc/apt/sources.list.d/keithp.list && \ (apt-get update || apt-get update || apt-get update) && \ (apt-get upgrade -y || apt-get upgrade -y || apt-get upgrade -y) && \ (xargs -a packages.txt apt-get install -y || \ xargs -a packages.txt apt-get install -y || \ xargs -a packages.txt apt-get install -y || \ xargs -a packages.txt apt-get install -y) RUN apt-get clean picolibc-1.7.4/.github/do-build000077500000000000000000000003001414576234500163000ustar00rootroot00000000000000#!/bin/sh CONFIGURE=$1 DIR=$2 shift shift mkdir $DIR cd $DIR ../scripts/$CONFIGURE -Dwerror=true "$@" case $? in 77) echo 'Configuration skipped' exit 0 ;; esac cat meson-logs/* ninja picolibc-1.7.4/.github/do-test000077500000000000000000000003211414576234500161630ustar00rootroot00000000000000#!/bin/sh CONFIGURE=$1 DIR=$2 shift shift mkdir $DIR cd $DIR ../scripts/$CONFIGURE -Dwerror=true "$@" case $? in 77) echo 'Configuration skipped' exit 0 ;; esac cat meson-logs/* ninja && meson test -v picolibc-1.7.4/.github/packages.txt000066400000000000000000000003171414576234500172020ustar00rootroot00000000000000build-essential meson ninja-build gcc gcc-i686-linux-gnu gcc-arm-none-eabi gcc-riscv64-unknown-elf gcc-aarch64-linux-gnu gcc-xtensa-lx106 qemu-system-x86 qemu-system-arm=1:5.0-5.5 qemu-system-misc clang lld picolibc-1.7.4/.github/workflows/000077500000000000000000000000001414576234500167175ustar00rootroot00000000000000picolibc-1.7.4/.github/workflows/fortity-source.yml000066400000000000000000000076011414576234500224440ustar00rootroot00000000000000name: Fortify-source on: push: branches: - main pull_request: branches: - main env: IMAGE_FILE: dockerimg.tar IMAGE: picolibc jobs: cache-maker: runs-on: ubuntu-latest steps: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 - name: Build picolibc container uses: docker/build-push-action@v2 with: platforms: linux/amd64 file: .github/Dockerfile tags: ${{ env.IMAGE }}:latest outputs: type=docker,dest=${{ env.IMAGE_FILE }} - name: Check size run: | ls -al - name: Cache the Docker Image uses: actions/cache@v2 with: path: ${{ env.IMAGE_FILE }} key: ${{ env.IMAGE_FILE }}-${{ hashFiles(format('{0}', env.IMAGE_FILE)) }} test: needs: cache-maker runs-on: ubuntu-latest strategy: matrix: meson_flags: [ "", # Math configurations "-Dnewlib-obsolete-math=false", "-Dnewlib-obsolete-math=false -Dwant-math-errno=true", "-Dnewlib-obsolete-math-float=true -Dnewlib-obsolete-math-double=false", "-Dnewlib-obsolete-math=true", "-Dnewlib-obsolete-math=true -Dwant-math-errno=true", # Tinystdio configurations "-Dio-float-exact=false", "-Dio-long-long=true", "-Dformat-default=integer", "-Dformat-default=float", # Malloc configurations "-Dnewlib-nano-malloc=false", # Original stdio configurations "-Dtinystdio=false -Dnewlib-io-float=false", "-Dtinystdio=false -Dnewlib-io-float=false -Dio-long-long=true", "-Dtinystdio=false -Dnewlib-io-float=true", "-Dtinystdio=false -Dnewlib-io-float=true -Dio-long-long=true", "-Dtinystdio=false -Dnewlib-io-float=true -Dio-long-long=true -Dnewlib-io-long-double=true", # Locale configurations "-Dnewlib-locale-info=true -Dnewlib-locale-info-extended=true -Dnewlib-mb=true", # Iconv configurations "-Dnewlib-iconv-external-ccs=true", # Multithread disabled "-Dnewlib-multithread=false -Dnewlib-retargetable-locking=false", "-Dnewlib-multithread=false -Dnewlib-retargetable-locking=false -Dtinystdio=false" ] test: [ "./.github/do-test do-native-configure build-native", "./.github/do-test do-riscv-configure build-riscv", "./.github/do-test do-arm-configure build-arm", "./.github/do-test do-aarch64-configure build-aarch64", "./.github/do-build do-lx106-configure build-lx106", "./.github/do-test do-rv32imac-configure build-rv32imac", "./.github/do-test do-i386-configure build-i386", "./.github/do-test do-x86_64-configure build-x86_64", "./.github/do-build do-clang-riscv-configure build-riscv-clang", "./.github/do-test do-clang-thumbv7e+fp-configure build-clang-thumbv7e+fp", "./.github/do-test do-clang-thumbv7m-configure build-clang-thumbv7m", "./.github/do-test do-clang-rv32imafdc-configure build-clang-rv32imafdc", ] steps: - name: Clone picolibc uses: actions/checkout@v2 with: path: picolibc - name: Restore the Docker Image uses: actions/cache@v2 with: path: ${{ env.IMAGE_FILE }} key: ${{ env.IMAGE_FILE }}- - name: Check run: | ls -al - name: Load and Check the Docker Image run: | docker load -i $IMAGE_FILE docker images -a $IMAGE - name: Fortity source test run: | docker run -v $(readlink -f picolibc):/picolibc -w /picolibc $IMAGE ${{ matrix.test }} ${{ matrix.meson_flags }} -Dfortify-source=2 - name: Check Disk Space if: always() run: | df -h docker buildx du --verbose picolibc-1.7.4/.github/workflows/macos.yml000066400000000000000000000026761414576234500205570ustar00rootroot00000000000000name: Mac OS X on: push: branches: - main pull_request: branches: - main jobs: macos: runs-on: macos-latest strategy: matrix: meson_flags: [ "", # Math configurations "-Dnewlib-obsolete-math=false", "-Dnewlib-obsolete-math=false -Dwant-math-errno=true", "-Dnewlib-obsolete-math-float=true -Dnewlib-obsolete-math-double=false", "-Dnewlib-obsolete-math=true", "-Dnewlib-obsolete-math=true -Dwant-math-errno=true", # Tinystdio configurations "-Dio-float-exact=false", "-Dio-long-long=true", "-Dformat-default=integer", "-Dformat-default=float", # Malloc configurations "-Dnewlib-nano-malloc=false", # Locale configurations "-Dnewlib-locale-info=true -Dnewlib-locale-info-extended=true -Dnewlib-mb=true", # Iconv configurations "-Dnewlib-iconv-external-ccs=true" ] test: [ "./.github/do-test do-native-configure build-native -Dnative-tests=false", ] steps: - name: 'Clone picolibc' uses: actions/checkout@v2 - name: 'Setup python' uses: actions/setup-python@v1 with: python-version: '3.x' - name: 'Install meson and ninja' run: pip install meson ninja - name: 'MacOS test' run: ${{ matrix.test }} ${{ matrix.meson_flags }} picolibc-1.7.4/.github/workflows/minsize.yml000066400000000000000000000076021414576234500211250ustar00rootroot00000000000000name: Minsize on: push: branches: - main pull_request: branches: - main env: IMAGE_FILE: dockerimg.tar IMAGE: picolibc jobs: cache-maker: runs-on: ubuntu-latest steps: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 - name: Build picolibc container uses: docker/build-push-action@v2 with: platforms: linux/amd64 file: .github/Dockerfile tags: ${{ env.IMAGE }}:latest outputs: type=docker,dest=${{ env.IMAGE_FILE }} - name: Check size run: | ls -al - name: Cache the Docker Image uses: actions/cache@v2 with: path: ${{ env.IMAGE_FILE }} key: ${{ env.IMAGE_FILE }}-${{ hashFiles(format('{0}', env.IMAGE_FILE)) }} test: needs: cache-maker runs-on: ubuntu-latest strategy: matrix: meson_flags: [ "", # Math configurations "-Dnewlib-obsolete-math=false", "-Dnewlib-obsolete-math=false -Dwant-math-errno=true", "-Dnewlib-obsolete-math-float=true -Dnewlib-obsolete-math-double=true", "-Dnewlib-obsolete-math=true", "-Dnewlib-obsolete-math=true -Dwant-math-errno=true", # Tinystdio configurations "-Dio-float-exact=false", "-Dio-long-long=true", "-Dformat-default=integer", "-Dformat-default=float", # Malloc configurations "-Dnewlib-nano-malloc=false", # Original stdio configurations "-Dtinystdio=false -Dnewlib-io-float=false", "-Dtinystdio=false -Dnewlib-io-float=false -Dio-long-long=true", "-Dtinystdio=false -Dnewlib-io-float=true", "-Dtinystdio=false -Dnewlib-io-float=true -Dio-long-long=true", "-Dtinystdio=false -Dnewlib-io-float=true -Dio-long-long=true -Dnewlib-io-long-double=true", # Locale configurations "-Dnewlib-locale-info=true -Dnewlib-locale-info-extended=true -Dnewlib-mb=true", # Iconv configurations "-Dnewlib-iconv-external-ccs=true", # Multithread disabled "-Dnewlib-multithread=false -Dnewlib-retargetable-locking=false", "-Dnewlib-multithread=false -Dnewlib-retargetable-locking=false -Dtinystdio=false", ] test: [ "./.github/do-test do-native-configure build-native", "./.github/do-test do-riscv-configure build-riscv", "./.github/do-test do-arm-configure build-arm", "./.github/do-test do-aarch64-configure build-aarch64", "./.github/do-build do-lx106-configure build-lx106", "./.github/do-test do-rv32imac-configure build-rv32imac", "./.github/do-test do-i386-configure build-i386", "./.github/do-test do-x86_64-configure build-x86_64", "./.github/do-build do-clang-riscv-configure build-riscv-clang", "./.github/do-test do-clang-thumbv7e+fp-configure build-clang-thumbv7e+fp", "./.github/do-test do-clang-thumbv7m-configure build-clang-thumbv7m", "./.github/do-test do-clang-rv32imafdc-configure build-clang-rv32imafdc", ] steps: - name: Clone picolibc uses: actions/checkout@v2 with: path: picolibc - name: Restore the Docker Image uses: actions/cache@v2 with: path: ${{ env.IMAGE_FILE }} key: ${{ env.IMAGE_FILE }}- - name: Check run: | ls -al - name: Load and Check the Docker Image run: | docker load -i $IMAGE_FILE docker images -a $IMAGE - name: Minsize test run: | docker run -v $(readlink -f picolibc):/picolibc -w /picolibc $IMAGE ${{ matrix.test }} ${{ matrix.meson_flags }} --buildtype minsize - name: Check Disk Space if: always() run: | df -h docker buildx du --verbose picolibc-1.7.4/.github/workflows/release.yml000066400000000000000000000075651414576234500210770ustar00rootroot00000000000000name: Release on: push: branches: - main pull_request: branches: - main env: IMAGE_FILE: dockerimg.tar IMAGE: picolibc jobs: cache-maker: runs-on: ubuntu-latest steps: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 - name: Build picolibc container uses: docker/build-push-action@v2 with: platforms: linux/amd64 file: .github/Dockerfile tags: ${{ env.IMAGE }}:latest outputs: type=docker,dest=${{ env.IMAGE_FILE }} - name: Check size run: | ls -al - name: Cache the Docker Image uses: actions/cache@v2 with: path: ${{ env.IMAGE_FILE }} key: ${{ env.IMAGE_FILE }}-${{ hashFiles(format('{0}', env.IMAGE_FILE)) }} test: needs: cache-maker runs-on: ubuntu-latest strategy: matrix: meson_flags: [ "", # Math configurations "-Dnewlib-obsolete-math=false", "-Dnewlib-obsolete-math=false -Dwant-math-errno=true", "-Dnewlib-obsolete-math-float=true -Dnewlib-obsolete-math-double=true", "-Dnewlib-obsolete-math=true", "-Dnewlib-obsolete-math=true -Dwant-math-errno=true", # Tinystdio configurations "-Dio-float-exact=false", "-Dio-long-long=true", "-Dformat-default=integer", "-Dformat-default=float", # Malloc configurations "-Dnewlib-nano-malloc=false", # Original stdio configurations "-Dtinystdio=false -Dnewlib-io-float=false", "-Dtinystdio=false -Dnewlib-io-float=false -Dio-long-long=true", "-Dtinystdio=false -Dnewlib-io-float=true", "-Dtinystdio=false -Dnewlib-io-float=true -Dio-long-long=true", "-Dtinystdio=false -Dnewlib-io-float=true -Dio-long-long=true -Dnewlib-io-long-double=true", # Locale configurations "-Dnewlib-locale-info=true -Dnewlib-locale-info-extended=true -Dnewlib-mb=true", # Iconv configurations "-Dnewlib-iconv-external-ccs=true", # Multithread "-Dnewlib-multithread=true -Dnewlib-retargetable-locking=true", "-Dnewlib-multithread=true -Dnewlib-retargetable-locking=true -Dtinystdio=false", ] test: [ "./.github/do-test do-native-configure build-native", "./.github/do-test do-riscv-configure build-riscv", "./.github/do-test do-arm-configure build-arm", "./.github/do-test do-aarch64-configure build-aarch64", "./.github/do-build do-lx106-configure build-lx106", "./.github/do-test do-rv32imac-configure build-rv32imac", "./.github/do-test do-i386-configure build-i386", "./.github/do-test do-x86_64-configure build-x86_64", "./.github/do-build do-clang-riscv-configure build-riscv-clang", "./.github/do-test do-clang-thumbv7e+fp-configure build-clang-thumbv7e+fp", "./.github/do-test do-clang-thumbv7m-configure build-clang-thumbv7m", "./.github/do-test do-clang-rv32imafdc-configure build-clang-rv32imafdc", ] steps: - name: Clone picolibc uses: actions/checkout@v2 with: path: picolibc - name: Restore the Docker Image uses: actions/cache@v2 with: path: ${{ env.IMAGE_FILE }} key: ${{ env.IMAGE_FILE }}- - name: Check run: | ls -al - name: Load and Check the Docker Image run: | docker load -i $IMAGE_FILE docker images -a $IMAGE - name: Release test run: | docker run -v $(readlink -f picolibc):/picolibc -w /picolibc $IMAGE ${{ matrix.test }} ${{ matrix.meson_flags }} --buildtype release - name: Check Disk Space if: always() run: | df -h docker buildx du --verbose picolibc-1.7.4/.gitignore000066400000000000000000000005531414576234500153150ustar00rootroot00000000000000*.diff *.patch *.orig *.rej *~ .#* *# *.flt *.gmo *.info *.la *.lo *.o *.pyc *.swp *.tmp .deps .libs autom4te.cache config.cache config.intl config.log config.status libtool POTFILES *-POTFILES tags TAGS TAGS.sub .gdbinit .gdb_history # ignore core files, but not java/net/protocol/core/ core !core/ lost+found # ignore meson build directories build-*/ picolibc-1.7.4/CODE_OF_CONDUCT.md000066400000000000000000000064521414576234500161300ustar00rootroot00000000000000# Contributor Covenant Code of Conduct ## Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. ## Our Standards Examples of behavior that contributes to creating a positive environment include: * Using welcoming and inclusive language * Being respectful of differing viewpoints and experiences * Gracefully accepting constructive criticism * Focusing on what is best for the community * Showing empathy towards other community members Examples of unacceptable behavior by participants include: * The use of sexualized language or imagery and unwelcome sexual attention or advances * Trolling, insulting/derogatory comments, and personal or political attacks * Public or private harassment * Publishing others' private information, such as a physical or electronic address, without explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ## Scope This Code of Conduct applies within all project spaces, and it also applies when an individual is representing the project or its community in public spaces. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at conduct@keithp.com. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html [homepage]: https://www.contributor-covenant.org For answers to common questions about this code of conduct, see https://www.contributor-covenant.org/faq picolibc-1.7.4/CONTRIBUTING.md000066400000000000000000000064031414576234500155560ustar00rootroot00000000000000# Contributing to Picolibc We welcome contributions of all forms, including patches to code and documentation, issue reports, or just kind words. ## Getting Current Source Code Picolibc sources are maintained in git and hosted in two places. 1. [keithp.com](https://keithp.com/cgit/picolibc.git/). This is the 'canonical' source location. 2. [github](https://github.com/keith-packard/picolibc). This should exactly mirror the code at keithp.com. I've placed it here to make contributing to Picolibc easier for people familiar with github. You can create a local copy of the repository with git clone: $ git clone git://keithp.com/git/picolibc.git or $ git clone https://github.com/keith-packard/picolibc.git ## Meson Picolibc uses the [meson](https://mesonbuild.com/) build tool. You'll need to make sure that's installed before you start trying to build the software. ## Building Picolibc from Source As Picolibc is designed to be used for embedded systems, getting that configured correctly can be a challenge. Learn more about that in the [build](doc/build.md) page. ## Formatting Source Code Picolibc code comes from a multitude of sources using an enormous range of styles. As picolibc tries to retain compatibility with newlib so that bug fixes can be shared between projects, we can't easily reformat all of the existing code. Here are suggestions on how to preserve compatibility while still being able to write readable code: 1. Whitespace-only changes are not helpful, please don't submit changes that are only fixing formatting. 2. Try to adopt local coding styles as much as you can manage by matching code within the same files. 3. For brand-new files, please use the global .editorconfig settings if possible: * no literal tab characters, only spaces * 4-space indentation for nested elements * no trailing whitespace * utf-8 encoding ## Patch Submission You can submit patches in a couple of ways: 1. Mail to the picolibc list (see below). This can be tricky as it requires a friendly email system, and you'll have to subscribe to the mailing list before it will let you post anything (sigh). Here's a simple example sending the latest patch in your local repository to the list: $ git send-email --to picolibc@keithp.com HEAD^ 2. Generate a pull-request in github. 1. Fork the picolibc project into your own github account 2. Push patches to that repository 3. While viewing your repository, click on the 'New pull request' button and follow the instructions there. ## Issue Tracking We're using the issue tracker on Github for now; if you have issues, please submit them to the [Picolibc Issue Tracker](https://github.com/keith-packard/picolibc/issues) ## Mailing List Picolibc has a mailing list, hosted at keithp.com. You can [subscribe here](https://keithp.com/mailman/listinfo/picolibc). This is a public list, with public archives. Participants are expected to abide by the [Picolibc Code of Conduct](CODE_OF_CONDUCT.md). ## Code of Conduct Picolibc uses the [Contributor Covenant](https://www.contributor-covenant.org/), which you'll find in the source tree as [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md). Please help make picolibc a kind and welcoming environment by following those rules. picolibc-1.7.4/COPYING.GPL2000066400000000000000000000431221414576234500150620ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. picolibc-1.7.4/COPYING.NEWLIB000066400000000000000000001730151414576234500153430ustar00rootroot00000000000000The newlib subdirectory is a collection of software from several sources. Each file may have its own copyright/license that is embedded in the source file. Unless otherwise noted in the body of the source file(s), the following copyright notices will apply to the contents of the newlib subdirectory: (1) Red Hat Incorporated Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the BSD License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. A copy of this license is available at http://www.opensource.org/licenses. Any Red Hat trademarks that are incorporated in the source code or documentation are not subject to the BSD License and may only be used or replicated with the express permission of Red Hat, Inc. (2) University of California, Berkeley Copyright (c) 1981-2000 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (3) David M. Gay (AT&T 1991, Lucent 1998) The author of this software is David M. Gay. Copyright (c) 1991 by AT&T. Permission to use, copy, modify, and distribute this software for any purpose without fee is hereby granted, provided that this entire notice is included in all copies of any software which is or includes a copy or modification of this software and in all copies of the supporting documentation for such software. THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR AT&T MAKES ANY REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. ------------------------------------------------------------------- The author of this software is David M. Gay. Copyright (C) 1998-2001 by Lucent Technologies All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that the copyright notice and this permission notice and warranty disclaimer appear in supporting documentation, and that the name of Lucent or any of its entities not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. (4) Advanced Micro Devices Copyright 1989, 1990 Advanced Micro Devices, Inc. This software is the property of Advanced Micro Devices, Inc (AMD) which specifically grants the user the right to modify, use and distribute this software provided this notice is not removed or altered. All other rights are reserved by AMD. AMD MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS SOFTWARE. IN NO EVENT SHALL AMD BE LIABLE FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES IN CONNECTION WITH OR ARISING FROM THE FURNISHING, PERFORMANCE, OR USE OF THIS SOFTWARE. So that all may benefit from your experience, please report any problems or suggestions about this software to the 29K Technical Support Center at 800-29-29-AMD (800-292-9263) in the USA, or 0800-89-1131 in the UK, or 0031-11-1129 in Japan, toll free. The direct dial number is 512-462-4118. Advanced Micro Devices, Inc. 29K Support Products Mail Stop 573 5900 E. Ben White Blvd. Austin, TX 78741 800-292-9263 (5) (6) (7) Sun Microsystems Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. Developed at SunPro, a Sun Microsystems, Inc. business. Permission to use, copy, modify, and distribute this software is freely granted, provided that this notice is preserved. (8) Hewlett Packard (c) Copyright 1986 HEWLETT-PACKARD COMPANY To anyone who acknowledges that this file is provided "AS IS" without any express or implied warranty: permission to use, copy, modify, and distribute this file for any purpose is hereby granted without fee, provided that the above copyright notice and this notice appears in all copies, and that the name of Hewlett-Packard Company not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Hewlett-Packard Company makes no representations about the suitability of this software for any purpose. (9) Hans-Peter Nilsson Copyright (C) 2001 Hans-Peter Nilsson Permission to use, copy, modify, and distribute this software is freely granted, provided that the above copyright notice, this notice and the following disclaimer are preserved with no changes. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. (10) Stephane Carrez (m68hc11-elf/m68hc12-elf targets only) Copyright (C) 1999, 2000, 2001, 2002 Stephane Carrez (stcarrez@nerim.fr) The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply. (11) Christopher G. Demetriou Copyright (c) 2001 Christopher G. Demetriou All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (12) SuperH, Inc. Copyright 2002 SuperH, Inc. All rights reserved This software is the property of SuperH, Inc (SuperH) which specifically grants the user the right to modify, use and distribute this software provided this notice is not removed or altered. All other rights are reserved by SuperH. SUPERH MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS SOFTWARE. IN NO EVENT SHALL SUPERH BE LIABLE FOR INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES IN CONNECTION WITH OR ARISING FROM THE FURNISHING, PERFORMANCE, OR USE OF THIS SOFTWARE. So that all may benefit from your experience, please report any problems or suggestions about this software to the SuperH Support Center via e-mail at softwaresupport@superh.com . SuperH, Inc. 405 River Oaks Parkway San Jose CA 95134 USA (13) Royal Institute of Technology Copyright (c) 1999 Kungliga Tekniska Högskolan (Royal Institute of Technology, Stockholm, Sweden). All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of KTH nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY KTH AND ITS CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KTH OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (14) Alexey Zelkin Copyright (c) 2000, 2001 Alexey Zelkin All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (15) Andrey A. Chernov Copyright (C) 1997 by Andrey A. Chernov, Moscow, Russia. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (16) FreeBSD Copyright (c) 1997-2002 FreeBSD Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (17) S. L. Moshier Author: S. L. Moshier. Copyright (c) 1984,2000 S.L. Moshier Permission to use, copy, modify, and distribute this software for any purpose without fee is hereby granted, provided that this entire notice is included in all copies of any software which is or includes a copy or modification of this software and in all copies of the supporting documentation for such software. THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. (18) Citrus Project Copyright (c)1999 Citrus Project, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (19) Todd C. Miller Copyright (c) 1998 Todd C. Miller All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (20) DJ Delorie (i386 / arm) Copyright (C) 1991 DJ Delorie All rights reserved. Redistribution, modification, and use in source and binary forms is permitted provided that the above copyright notice and following paragraph are duplicated in all such forms. This file is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. (23) Intel (i960) Copyright (c) 1993 Intel Corporation Intel hereby grants you permission to copy, modify, and distribute this software and its documentation. Intel grants this permission provided that the above copyright notice appears in all copies and that both the copyright notice and this permission notice appear in supporting documentation. In addition, Intel grants this permission provided that you prominently mark as "not part of the original" any modifications made to this software or documentation, and that the name of Intel Corporation not be used in advertising or publicity pertaining to distribution of the software or the documentation without specific, written prior permission. Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or representations regarding the use of, or the results of the use of, the software and documentation in terms of correctness, accuracy, reliability, currentness, or otherwise; and you rely on the software, documentation and results solely at your own risk. IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. (24) Hewlett-Packard (hppa targets only) (c) Copyright 1986 HEWLETT-PACKARD COMPANY To anyone who acknowledges that this file is provided "AS IS" without any express or implied warranty: permission to use, copy, modify, and distribute this file for any purpose is hereby granted without fee, provided that the above copyright notice and this notice appears in all copies, and that the name of Hewlett-Packard Company not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Hewlett-Packard Company makes no representations about the suitability of this software for any purpose. (25) Henry Spencer (only *-linux targets) Copyright 1992, 1993, 1994 Henry Spencer. All rights reserved. This software is not subject to any license of the American Telephone and Telegraph Company or of the Regents of the University of California. Permission is granted to anyone to use this software for any purpose on any computer system, and to alter it and redistribute it, subject to the following restrictions: 1. The author is not responsible for the consequences of use of this software, no matter how awful, even if they arise from flaws in it. 2. The origin of this software must not be misrepresented, either by explicit claim or by omission. Since few users ever read sources, credits must appear in the documentation. 3. Altered versions must be plainly marked as such, and must not be misrepresented as being the original software. Since few users ever read sources, credits must appear in the documentation. 4. This notice may not be removed or altered. (26) Mike Barcroft Copyright (c) 2001 Mike Barcroft All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (27) Konstantin Chuguev (--enable-newlib-iconv) Copyright (c) 1999, 2000 Konstantin Chuguev. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. iconv (Charset Conversion Library) v2.0 (28) Artem Bityuckiy (--enable-newlib-iconv) Copyright (c) 2003, Artem B. Bityuckiy, SoftMine Corporation. Rights transferred to Franklin Electronic Publishers. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (29) IBM, Sony, Toshiba (only spu-* targets) (C) Copyright 2001,2006, International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (30) - Alex Tatmanjants (targets using libc/posix) Copyright (c) 1995 Alex Tatmanjants at Electronni Visti IA, Kiev, Ukraine. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (31) - M. Warner Losh (targets using libc/posix) Copyright (c) 1998, M. Warner Losh All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (32) - Andrey A. Chernov (targets using libc/posix) Copyright (C) 1996 by Andrey A. Chernov, Moscow, Russia. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (33) - Daniel Eischen (targets using libc/posix) Copyright (c) 2001 Daniel Eischen . All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (34) - Jon Beniston (only lm32-* targets) Contributed by Jon Beniston Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (35) - Arm Ltd Copyright (c) 2009-2018 Arm Ltd All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the company may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (36) - Xilinx, Inc. (microblaze-* and powerpc-* targets) Copyright (c) 2004, 2009 Xilinx, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of Xilinx nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (37) Texas Instruments Incorporated (tic6x-*, *-tirtos targets) Copyright (c) 1996-2010,2014 Texas Instruments Incorporated http://www.ti.com/ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of Texas Instruments Incorporated nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (38) National Semiconductor (cr16-* and crx-* targets) Copyright (c) 2004 National Semiconductor Corporation The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply. (39) - Adapteva, Inc. (epiphany-* targets) Copyright (c) 2011, Adapteva, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Adapteva nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (40) - Altera Corportion (nios2-* targets) Copyright (c) 2003 Altera Corporation All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: o Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. o Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. o Neither the name of Altera Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY ALTERA CORPORATION, THE COPYRIGHT HOLDER, AND ITS CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (41) Ed Schouten - Free BSD Copyright (c) 2008 Ed Schouten All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (42) - Rolls-Royce Controls and Data Services Limited (visium-* targets) Copyright (c) 2015 Rolls-Royce Controls and Data Services Limited. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Rolls-Royce Controls and Data Services Limited nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (43) - FTDI (ft32-* targets) Copyright (C) 2014 FTDI (support@ftdichip.com) The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply. (44) - Synopsys Inc (arc-* targets) Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (45) Phoenix Systems - Phoenix-RTOS targets Copyright (c) 2016 Phoenix Systems All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (46) embedded brains - RTEMS targets Copyright (c) 2017 embedded brains GmbH All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (47) John Baldwin - RTEMS targets Copyright (c) 2015 John Baldwin . All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the author nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (48) Jeffrey Roberson - RTEMS targets Copyright (c) 2008, Jeffrey Roberson All rights reserved. Copyright (c) 2008 Nokia Corporation All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice unmodified, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (49) - SiFive Inc. (riscv-* targets) Copyright (c) 2017 SiFive Inc. All rights reserved. This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the FreeBSD License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. A copy of this license is available at http://www.opensource.org/licenses. (50) Michael R. Neilly (riscv-* targets) (c) Copyright 2017 Michael R. Neilly All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (51) Mentor Graphics (amdgcn-* targets) Copyright (c) 2014-2017 Mentor Graphics. The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply. (52) BSD-2-Clause-FreeBSD (pru-* targets) SPDX-License-Identifier: BSD-2-Clause-FreeBSD Copyright (c) 2018-2019 Dimitar Dimitrov All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (53) Andrew Turner (arm-* targets) Copyright (c) 2013 Andrew Turner All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (54) BSD-2-Clause-FreeBSD David Schultz (arm-* targets) SPDX-License-Identifier: BSD-2-Clause-FreeBSD Copyright (c) 2004-2011 David Schultz All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (55) - C-SKY Microsystems (csky-* targets) Copyright (c) 2020 C-SKY Microsystems All rights reserved. This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the FreeBSD License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. A copy of this license is available at http://www.opensource.org/licenses. (56) BSD-3-Clause-FreeBSD Peter Wemm (rtems targets) SPDX-License-Identifier: BSD-3-Clause Copyright (c) 1997 Peter Wemm All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. picolibc-1.7.4/COPYING.picolibc000066400000000000000000006234521414576234500161540ustar00rootroot00000000000000Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: picolibc Upsream-Contact: Keith Packard Source: https://keithp.com/git/picolibc Copyright: 2019 Keith Packard License: BSD3-1 Files: * Copyright: 2020 The Newlib Project License: Default-1 Files: debian/* Copyright: 2019-2021 Keith Packard License: BSD3-1 Files: *.md Copyright: 2019 Keith Packard License: BSD3-1 Files: newlib/libc/iconv/ccs/ccs.h newlib/libc/iconv/ces/us-ascii.c newlib/libc/iconv/lib/aliasesi.c newlib/libc/iconv/lib/encoding.deps newlib/libc/iconv/lib/endian.h newlib/libc/iconv/lib/iconvnls.c newlib/libc/iconv/lib/iconvnls.h newlib/libc/iconv/lib/local.h Copyright: 2003-2004, Artem B. Bityuckiy License: BSD2-1 Files: newlib/libc/iconv/ccs/mktbl.pl newlib/libc/iconv/ces/mkdeps.pl Copyright: 2003-2004, Artem B. Bityuckiy, SoftMine Corporation. License: BSD2-1 Files: newlib/libc/iconv/ces/euc.c newlib/libc/iconv/ces/table.c newlib/libc/iconv/ces/ucs-2-internal.c newlib/libc/iconv/ces/ucs-2.c newlib/libc/iconv/ces/ucs-4-internal.c newlib/libc/iconv/ces/ucs-4.c newlib/libc/iconv/ces/utf-16.c newlib/libc/iconv/ces/utf-8.c newlib/libc/iconv/lib/conv.h newlib/libc/iconv/lib/iconv.c newlib/libc/iconv/lib/nullconv.c newlib/libc/iconv/lib/ucsconv.c newlib/libc/iconv/lib/ucsconv.h Copyright: 2003-2004, Artem B. Bityuckiy 1999,2000, Konstantin Chuguev. License: BSD2-1 Files: newlib/libc/include/devctl.h Copyright: 2016,2019 Joel Sherrill . License: BSD2-1 Files: newlib/libc/include/iconv.h Copyright: 2003-2004, Artem B. Bityuckiy, SoftMine Corporation. Rights transferred to Franklin Electronic Publishers. License: BSD2-1 Files: newlib/libc/include/langinfo.h newlib/libc/include/wchar.h newlib/libc/locale/lmessages.c newlib/libc/locale/nl_langinfo.c Copyright: 2001 Alexey Zelkin License: BSD2-1 Files: newlib/libc/include/spawn.h Copyright: 2008 Ed Schouten License: BSD2-1 Files: newlib/libc/include/strings.h newlib/libc/include/sys/_timeval.h Copyright: 2002 Mike Barcroft License: BSD2-1 Files: newlib/libc/include/sys/iconvnls.h Copyright: 2003-2004, Artem B. Bityuckiy. Rights transferred to Franklin Electronic Publishers. License: BSD2-1 Files: newlib/libc/include/threads.h Copyright: 2011 Ed Schouten License: BSD2-1 Files: newlib/libc/locale/lctype.c Copyright: 2010 Corinna Vinschen License: BSD2-1 Files: newlib/libc/locale/lmonetary.c newlib/libc/locale/lnumeric.c Copyright: 2000, 2001 Alexey Zelkin License: BSD2-1 Files: newlib/libc/locale/timelocal.c Copyright: 2001 Alexey Zelkin 1997 FreeBSD Inc. License: BSD2-1 Files: newlib/libc/machine/aarch64/machine/fenv-fp.h newlib/libc/machine/aarch64/sys/fenv.h newlib/libc/machine/arm/sys/fenv.h newlib/libc/machine/mips/machine/fenv-fp.h newlib/libc/machine/mips/sys/fenv.h newlib/libc/machine/powerpc/machine/fenv-fp.h newlib/libc/machine/powerpc/sys/fenv.h newlib/libc/machine/sparc/sys/fenv.h Copyright: 2004-2005 David Schultz License: BSD2-1 Files: newlib/libc/machine/lm32/setjmp.S Copyright: 2008 Jon Beniston License: BSD2-1 Files: newlib/libc/machine/mips/machine/fenv-softfloat.h Copyright: 2004-2011 David Schultz License: BSD2-1 Files: newlib/libc/machine/shared_x86/sys/fenv.h Copyright: 2010-2019 Red Hat, Inc. License: BSD2-1 Files: newlib/libc/stdio/clearerr_u.c newlib/libc/stdio/feof_u.c newlib/libc/stdio/ferror_u.c newlib/libc/stdio/fflush_u.c newlib/libc/stdio/fgetc_u.c newlib/libc/stdio/fgets_u.c newlib/libc/stdio/fgetwc_u.c newlib/libc/stdio/fgetws_u.c newlib/libc/stdio/fileno_u.c newlib/libc/stdio/fputc_u.c newlib/libc/stdio/fputs_u.c newlib/libc/stdio/fputwc_u.c newlib/libc/stdio/fputws_u.c newlib/libc/stdio/fread_u.c newlib/libc/stdio/fsetlocking.c newlib/libc/stdio/fwrite_u.c newlib/libc/stdio/getwc_u.c newlib/libc/stdio/getwchar_u.c newlib/libc/stdio/putwc_u.c newlib/libc/stdio/putwchar_u.c Copyright: 2014 Red Hat, Inc. License: BSD2-1 Files: newlib/libc/stdio/fgetwc.c newlib/libc/stdio/fgetws.c newlib/libc/stdio/fputwc.c newlib/libc/stdio/fputws.c newlib/libc/stdio/fwide.c newlib/libc/stdio/ungetwc.c Copyright: 2002-2004 Tim J. Robbins. License: BSD2-1 Files: newlib/libc/stdio/getwc.c newlib/libc/stdio/getwchar.c newlib/libc/stdio/putwc.c newlib/libc/stdio/putwchar.c newlib/libc/stdlib/wcstod.c Copyright: 2002 Tim J. Robbins. License: BSD2-1 Files: newlib/libc/stdlib/arc4random.h Copyright: 2016 embedded brains GmbH License: BSD2-1 Files: newlib/libc/stdlib/imaxabs.c newlib/libc/stdlib/imaxdiv.c newlib/libc/stdlib/llabs.c newlib/libc/stdlib/lldiv.c Copyright: 2001 Mike Barcroft License: BSD2-1 Files: newlib/libc/stdlib/quick_exit.c Copyright: 2011 David Chisnall 2015 embedded brains GmbH License: BSD2-1 Files: newlib/libc/stdlib/reallocf.c Copyright: 1998, M. Warner Losh License: BSD2-1 Files: newlib/libc/stdlib/rpmatch.c Copyright: 2004-2005 Tim J. Robbins. License: BSD2-1 Files: newlib/libc/string/ffsl.c newlib/libc/string/ffsll.c newlib/libc/string/fls.c newlib/libc/string/flsl.c newlib/libc/string/flsll.c newlib/libm/machine/arm/s_sqrt.c newlib/libm/machine/arm/sf_sqrt.c Copyright: 2017 embedded brains GmbH License: BSD2-1 Files: newlib/libc/string/wcscat.c newlib/libc/string/wcschr.c newlib/libc/string/wcscpy.c newlib/libc/string/wcscspn.c newlib/libc/string/wcslen.c newlib/libc/string/wcsncat.c newlib/libc/string/wcsncpy.c newlib/libc/string/wcspbrk.c newlib/libc/string/wcsrchr.c newlib/libc/string/wcsspn.c newlib/libc/string/wcsstr.c newlib/libc/string/wmemchr.c newlib/libc/string/wmemcmp.c newlib/libc/string/wmemcpy.c newlib/libc/string/wmemmove.c newlib/libc/string/wmemset.c Copyright: 1999 Citrus Project, License: BSD2-1 Files: newlib/libm/complex/csqrtl.c Copyright: 2007-2008 David Schultz License: BSD2-1 Files: newlib/libm/machine/aarch64/fenv.c Copyright: 2004 David Schultz 2013 Andrew Turner License: BSD2-1 Files: newlib/libm/machine/arm/_fenv.h newlib/libm/machine/arm/feclearexcept.c newlib/libm/machine/arm/fedisableexcept.c newlib/libm/machine/arm/feenableexcept.c newlib/libm/machine/arm/fegetenv.c newlib/libm/machine/arm/fegetexcept.c newlib/libm/machine/arm/fegetexceptflag.c newlib/libm/machine/arm/fegetround.c newlib/libm/machine/arm/feholdexcept.c newlib/libm/machine/arm/feraiseexcept.c newlib/libm/machine/arm/fesetenv.c newlib/libm/machine/arm/fesetexceptflag.c newlib/libm/machine/arm/fesetround.c newlib/libm/machine/arm/fetestexcept.c newlib/libm/machine/arm/feupdateenv.c Copyright: 2004-2005 David Schultz 2013 Andrew Turner License: BSD2-1 Files: newlib/libm/machine/mips/fenv.c newlib/libm/machine/powerpc/fenv.c Copyright: 2004 David Schultz License: BSD2-1 Files: newlib/testsuite/newlib.iconv/iconv.exp newlib/testsuite/newlib.iconv/iconvjp.c newlib/testsuite/newlib.iconv/iconvnm.c newlib/testsuite/newlib.iconv/iconvru.c Copyright: 2003, Artem B. Bityuckiy, SoftMine Corporation. Rights transferred to Franklin Electronic Publishers. License: BSD2-1 Files: newlib/libc/iconv/ces/table-pcs.c Copyright: 2003-2004, Artem B. Bityuckiy License: BSD2-2 Files: newlib/libc/include/ssp/ssp.h Copyright: 2006, 2011 The NetBSD Foundation, Inc. License: BSD2-3 Files: newlib/libc/include/ssp/stdio.h newlib/libc/include/ssp/string.h newlib/libc/include/ssp/unistd.h newlib/libc/ssp/gets_chk.c newlib/libc/ssp/memcpy_chk.c newlib/libc/ssp/memmove_chk.c newlib/libc/ssp/mempcpy_chk.c newlib/libc/ssp/memset_chk.c newlib/libc/ssp/snprintf_chk.c newlib/libc/ssp/sprintf_chk.c newlib/libc/ssp/strcat_chk.c newlib/libc/ssp/strcpy_chk.c newlib/libc/ssp/strncat_chk.c newlib/libc/ssp/strncpy_chk.c newlib/libc/ssp/vsnprintf_chk.c newlib/libc/ssp/vsprintf_chk.c Copyright: 2006 The NetBSD Foundation, Inc. License: BSD2-3 Files: newlib/libc/include/ssp/strings.h newlib/libm/complex/cabs.c newlib/libm/complex/cabsf.c newlib/libm/complex/cacos.c newlib/libm/complex/cacosf.c newlib/libm/complex/cacosh.c newlib/libm/complex/cacoshf.c newlib/libm/complex/cacoshl.c newlib/libm/complex/cacosl.c newlib/libm/complex/carg.c newlib/libm/complex/cargf.c newlib/libm/complex/cargl.c newlib/libm/complex/casin.c newlib/libm/complex/casinf.c newlib/libm/complex/casinh.c newlib/libm/complex/casinhf.c newlib/libm/complex/casinhl.c newlib/libm/complex/casinl.c newlib/libm/complex/catan.c newlib/libm/complex/catanf.c newlib/libm/complex/catanh.c newlib/libm/complex/catanhf.c newlib/libm/complex/catanhl.c newlib/libm/complex/catanl.c newlib/libm/complex/ccos.c newlib/libm/complex/ccosf.c newlib/libm/complex/ccosh.c newlib/libm/complex/ccoshf.c newlib/libm/complex/ccoshl.c newlib/libm/complex/ccosl.c newlib/libm/complex/cephes_subr.c newlib/libm/complex/cephes_subr.h newlib/libm/complex/cephes_subrf.c newlib/libm/complex/cephes_subrf.h newlib/libm/complex/cephes_subrl.c newlib/libm/complex/cephes_subrl.h newlib/libm/complex/cexp.c newlib/libm/complex/cexpf.c newlib/libm/complex/cexpl.c newlib/libm/complex/cimag.c newlib/libm/complex/cimagf.c newlib/libm/complex/clog.c newlib/libm/complex/clogf.c newlib/libm/complex/clogl.c newlib/libm/complex/conj.c newlib/libm/complex/conjf.c newlib/libm/complex/cpow.c newlib/libm/complex/cpowf.c newlib/libm/complex/cpowl.c newlib/libm/complex/creal.c newlib/libm/complex/crealf.c newlib/libm/complex/csin.c newlib/libm/complex/csinf.c newlib/libm/complex/csinh.c newlib/libm/complex/csinhf.c newlib/libm/complex/csinhl.c newlib/libm/complex/csinl.c newlib/libm/complex/csqrt.c newlib/libm/complex/csqrtf.c newlib/libm/complex/ctan.c newlib/libm/complex/ctanf.c newlib/libm/complex/ctanh.c newlib/libm/complex/ctanhf.c newlib/libm/complex/ctanhl.c newlib/libm/complex/ctanl.c Copyright: 2007 The NetBSD Foundation, Inc. License: BSD2-3 Files: newlib/libc/ssp/stpcpy_chk.c newlib/libc/ssp/stpncpy_chk.c Copyright: 2013 The NetBSD Foundation, Inc. License: BSD2-3 Files: newlib/libm/complex/conjl.c newlib/libm/complex/cproj.c newlib/libm/complex/cprojf.c newlib/libm/complex/cprojl.c Copyright: 2010 The NetBSD Foundation, Inc. License: BSD2-3 Files: newlib/libc/include/sys/fenv.h Copyright: 2019 Joel Sherrill License: BSD2-4 Files: newlib/libm/fenv/fe_dfl_env.c newlib/libm/fenv/feclearexcept.c newlib/libm/fenv/fedisableexcept.c newlib/libm/fenv/feenableexcept.c newlib/libm/fenv/fegetenv.c newlib/libm/fenv/fegetexcept.c newlib/libm/fenv/fegetexceptflag.c newlib/libm/fenv/fegetround.c newlib/libm/fenv/feholdexcept.c newlib/libm/fenv/feraiseexcept.c newlib/libm/fenv/fesetenv.c newlib/libm/fenv/fesetexceptflag.c newlib/libm/fenv/fesetround.c newlib/libm/fenv/fetestexcept.c newlib/libm/fenv/feupdateenv.c Copyright: 2019 Joel Sherrill License: BSD2-5 Files: newlib/libc/machine/pru/setjmp.s newlib/libm/machine/pru/fpclassify.c newlib/libm/machine/pru/fpclassifyf.c newlib/libm/machine/pru/isfinite.c newlib/libm/machine/pru/isfinitef.c newlib/libm/machine/pru/isinf.c newlib/libm/machine/pru/isinff.c newlib/libm/machine/pru/isnan.c newlib/libm/machine/pru/isnanf.c newlib/libm/machine/pru/isnormal.c newlib/libm/machine/pru/isnormalf.c Copyright: 2018-2019 Dimitar Dimitrov License: BSD2-5 Files: newlib/libc/locale/nl_langinfo.3 Copyright: 2001 Alexey Zelkin License: BSD2-6 Files: newlib/libc/posix/namespace.h newlib/libc/posix/un-namespace.h Copyright: 2001 Daniel Eischen . License: BSD2-6 Files: newlib/libc/locale/setlocale.h Copyright: 1997 Andrey A. Chernov, Moscow, Russia. License: BSD2-7 Files: newlib/libc/posix/collcmp.c Copyright: 1996 Andrey A. Chernov, Moscow, Russia. License: BSD2-7 Files: newlib/libc/machine/or1k/setjmp.S Copyright: 2014, Hesham ALMatary License: BSD2-8 Files: newlib/libc/machine/xtensa/sys/fenv.h newlib/libm/machine/xtensa/feclearexcept.c newlib/libm/machine/xtensa/fedisableexcept.c newlib/libm/machine/xtensa/feenableexcept.c newlib/libm/machine/xtensa/fegetenv.c newlib/libm/machine/xtensa/fegetexcept.c newlib/libm/machine/xtensa/fegetexceptflag.c newlib/libm/machine/xtensa/fegetround.c newlib/libm/machine/xtensa/feholdexcept.c newlib/libm/machine/xtensa/feraiseexcept.c newlib/libm/machine/xtensa/fesetenv.c newlib/libm/machine/xtensa/fesetexceptflag.c newlib/libm/machine/xtensa/fesetround.c newlib/libm/machine/xtensa/fetestexcept.c newlib/libm/machine/xtensa/feupdateenv.c Copyright: 2011 Tensilica Inc. License: BSD2-9 Files: newlib/libc/posix/collate.c newlib/libc/posix/collate.h Copyright: 1995 Alex Tatmanjants at Electronni Visti IA, Kiev, Ukraine. License: BSD2-10 Files: newlib/libc/signal/sig2str.c Copyright: 2021 Matthew Joyce License: BSD2-11 Files: newlib/libm/machine/sparc/fenv.c Copyright: 2004-2005 David Schultz License: BSD2-12 Files: dummyhost/iob.c dummyhost/meson.build hello-world/Makefile hello-world/hello-world.c hello-world/printf.c hello-world/run-aarch64 hello-world/run-aarch64++ hello-world/run-arm hello-world/run-riscv hello-world/run-riscv++ hello-world/*.ld meson_options.txt newlib/libc/argz/meson.build newlib/libc/ctype/meson.build newlib/libc/errno/meson.build newlib/libc/iconv/ccs/meson.build newlib/libc/iconv/ces/meson.build newlib/libc/iconv/lib/meson.build newlib/libc/iconv/meson.build newlib/libc/include/endian.h newlib/libc/include/machine/meson.build newlib/libc/include/meson.build newlib/libc/include/newlib.h newlib/libc/include/picotls.h newlib/libc/include/sys/meson.build newlib/libc/locale/meson.build newlib/libc/machine/arm/meson.build newlib/libc/machine/i386/meson.build newlib/libc/machine/riscv/meson.build newlib/libc/machine/riscv/sys/meson.build newlib/libc/machine/x86_64/meson.build newlib/libc/meson.build newlib/libc/misc/meson.build newlib/libc/picolib/dso_handle.c newlib/libc/picolib/inittls.c newlib/libc/picolib/machine/arm/interrupt.c newlib/libc/picolib/machine/arm/tls.c newlib/libc/picolib/machine/riscv/tls.c newlib/libc/picolib/meson.build newlib/libc/picolib/picosbrk.c newlib/libc/reent/meson.build newlib/libc/search/meson.build newlib/libc/signal/meson.build newlib/libc/ssp/meson.build newlib/libc/stdio/meson.build newlib/libc/stdio/svfiprintf.c newlib/libc/stdio/svfiscanf.c newlib/libc/stdio/svfiwprintf.c newlib/libc/stdio/svfiwscanf.c newlib/libc/stdio/svfprintf.c newlib/libc/stdio/svfscanf.c newlib/libc/stdio/svfwprintf.c newlib/libc/stdio/svfwscanf.c newlib/libc/stdio/sys/meson.build newlib/libc/stdio/vfiprintf.c newlib/libc/stdio/vfiscanf.c newlib/libc/stdio/vfiwprintf.c newlib/libc/stdio/vfiwscanf.c newlib/libc/stdlib/malloc-calloc.c newlib/libc/stdlib/malloc-cfree.c newlib/libc/stdlib/malloc-free.c newlib/libc/stdlib/malloc-mallinfo.c newlib/libc/stdlib/malloc-malloc.c newlib/libc/stdlib/malloc-malloc_stats.c newlib/libc/stdlib/malloc-malloc_usable_size.c newlib/libc/stdlib/malloc-mallopt.c newlib/libc/stdlib/malloc-memalign.c newlib/libc/stdlib/malloc-pvalloc.c newlib/libc/stdlib/malloc-realloc.c newlib/libc/stdlib/malloc-valloc.c newlib/libc/stdlib/meson.build newlib/libc/stdlib/nano-malloc-calloc.c newlib/libc/stdlib/nano-malloc-cfree.c newlib/libc/stdlib/nano-malloc-free.c newlib/libc/stdlib/nano-malloc-mallinfo.c newlib/libc/stdlib/nano-malloc-malloc.c newlib/libc/stdlib/nano-malloc-malloc_stats.c newlib/libc/stdlib/nano-malloc-malloc_usable_size.c newlib/libc/stdlib/nano-malloc-mallopt.c newlib/libc/stdlib/nano-malloc-memalign.c newlib/libc/stdlib/nano-malloc-pvalloc.c newlib/libc/stdlib/nano-malloc-realloc.c newlib/libc/stdlib/nano-malloc-valloc.c newlib/libc/string/meson.build newlib/libc/time/meson.build newlib/libc/tinystdio/fdopen.c newlib/libc/tinystdio/fileno.c newlib/libc/tinystdio/fopen.c newlib/libc/tinystdio/fseek.c newlib/libc/tinystdio/ftell.c newlib/libc/tinystdio/ftoa_data.c newlib/libc/tinystdio/meson.build newlib/libc/tinystdio/posixio.c newlib/libc/tinystdio/posixiob.c newlib/libc/tinystdio/setbuf.c newlib/libc/xdr/meson.build newlib/libm/common/meson.build newlib/libm/common/s_issignaling.c newlib/libm/common/sf_issignaling.c newlib/libm/common/signgam.c newlib/libm/common/sl_issignaling.c newlib/libm/complex/meson.build newlib/libm/fenv/meson.build newlib/libm/machine/arm/meson.build newlib/libm/machine/i386/meson.build newlib/libm/machine/riscv/meson.build newlib/libm/math/meson.build newlib/libm/meson.build newlib/libm/test/copysign_vec.c newlib/libm/test/copysignf_vec.c newlib/libm/test/issignaling_vec.c newlib/libm/test/meson.build newlib/libm/test/modf_vec.c newlib/libm/test/modff_vec.c newlib/libm/test/pow_vec.c newlib/libm/test/powf_vec.c newlib/meson.build newlib/testsuite/meson.build newlib/testsuite/newlib.iconv/meson.build newlib/testsuite/newlib.locale/meson.build newlib/testsuite/newlib.search/meson.build newlib/testsuite/newlib.stdio/meson.build newlib/testsuite/newlib.stdlib/meson.build newlib/testsuite/newlib.string/meson.build newlib/testsuite/newlib.wctype/meson.build newlib/testsuite/stdio-bits.c picocrt/crt0.h picocrt/machine/aarch64/crt0.c picocrt/machine/arm/crt0.c picocrt/meson.build picocrt/shared/crt0.c scripts/do-aarch64-configure scripts/do-aarch64-zephyr-elf-configure scripts/do-arm-configure scripts/do-clang-arm-configure scripts/do-clang-riscv-configure scripts/do-clang-rv32imafdc-configure scripts/do-clang-thumbv7e+fp-configure scripts/do-clang-thumbv7m-configure scripts/do-configure scripts/do-esp32-configure scripts/do-freedom-tools-configure scripts/do-i386-configure scripts/do-lx106-configure scripts/do-native-configure scripts/do-riscv-configure scripts/do-rv32imac-configure scripts/do-x86_64-configure scripts/do-zephyr-aarch64-configure scripts/do-zephyr-arm-configure scripts/do-zephyr-riscv-configure scripts/run-arm scripts/run-riscv scripts/run-thumbv7e scripts/run-thumbv7m semihost/close.c semihost/exit.c semihost/iob.c semihost/kill.c semihost/lseek.c semihost/lseek64.c semihost/machine/aarch64/semihost-aarch64.S semihost/machine/arm/semihost-arm.S semihost/machine/riscv/semihost-riscv.s semihost/meson.build semihost/open.c semihost/read.c semihost/semihost-private.h semihost/semihost.h semihost/sys_clock.c semihost/sys_close.c semihost/sys_elapsed.c semihost/sys_errno.c semihost/sys_exit.c semihost/sys_exit_extended.c semihost/sys_feature.c semihost/sys_flen.c semihost/sys_get_cmdline.c semihost/sys_getc.c semihost/sys_heapinfo.c semihost/sys_istty.c semihost/sys_open.c semihost/sys_putc.c semihost/sys_read.c semihost/sys_remove.c semihost/sys_rename.c semihost/sys_seek.c semihost/sys_time.c semihost/sys_tmpnam.c semihost/sys_write.c semihost/sys_write0.c semihost/unlink.c semihost/write.c test/libc-testsuite/meson.build test/meson.build test/posix-io.c test/printf_scanf.c test/rand.c test/ungetc.c Copyright: 2019 Keith Packard License: BSD3-1 Files: hello-world/hello-worldpp.cpp newlib/libc/errno/errno.c newlib/libc/iconv/ccs/binary/meson.build newlib/libc/include/machine/math.h newlib/libc/include/ssp/meson.build newlib/libc/include/sys/auxv.h newlib/libc/machine/aarch64/sys/meson.build newlib/libc/machine/arm/machine/meson.build newlib/libc/machine/arm/sys/meson.build newlib/libc/machine/csky/meson.build newlib/libc/machine/i386/machine/meson.build newlib/libc/machine/riscv/machine/math.h newlib/libc/machine/riscv/machine/meson.build newlib/libc/machine/xtensa/sys/meson.build newlib/libc/picolib/getauxval.c newlib/libc/picolib/machine/aarch64/tls.c newlib/libc/picolib/machine/arm/arm_tls.h newlib/libc/picolib/machine/arm/read_tp.S newlib/libc/posix/meson.build newlib/libc/stdio/nano-svfprintf.c newlib/libc/stdio/nano-svfscanf.c newlib/libc/stdio64/meson.build newlib/libc/tinystdio/asprintf.c newlib/libc/tinystdio/compare_exchange.c newlib/libc/tinystdio/ecvt.c newlib/libc/tinystdio/ecvt_data.c newlib/libc/tinystdio/ecvtbuf.c newlib/libc/tinystdio/ecvtf.c newlib/libc/tinystdio/ecvtf_data.c newlib/libc/tinystdio/ecvtfbuf.c newlib/libc/tinystdio/exchange.c newlib/libc/tinystdio/fcvt.c newlib/libc/tinystdio/fcvtbuf.c newlib/libc/tinystdio/fcvtf.c newlib/libc/tinystdio/fcvtfbuf.c newlib/libc/tinystdio/fflush.c newlib/libc/tinystdio/filestrget.c newlib/libc/tinystdio/filestrput.c newlib/libc/tinystdio/filestrputalloc.c newlib/libc/tinystdio/gcvt.c newlib/libc/tinystdio/gcvtbuf.c newlib/libc/tinystdio/gcvtf.c newlib/libc/tinystdio/gcvtfbuf.c newlib/libc/tinystdio/perror.c newlib/libc/tinystdio/setvbuf.c newlib/libc/tinystdio/strtod_l.c newlib/libc/tinystdio/strtold_l.c newlib/libc/tinystdio/vasprintf.c newlib/libm/machine/arm/s_fma_arm.c newlib/libm/machine/arm/sf_fma_arm.c newlib/libm/machine/riscv/s_fma.c newlib/libm/machine/riscv/s_fma_riscv.c newlib/libm/machine/riscv/s_sqrt.c newlib/libm/machine/riscv/sf_fma.c newlib/libm/machine/riscv/sf_fma_riscv.c newlib/libm/machine/riscv/sf_sqrt.c newlib/libm/machine/x86_64/meson.build newlib/libm/math/s_lgamma.c scripts/run-aarch64 scripts/run-i386 scripts/run-rv32imac scripts/run-rv32imafdc scripts/run-x86_64 scripts/test-arm.ld scripts/test-i386.ld scripts/test-riscv.ld scripts/test-riscv32.ld scripts/test-riscv64.ld scripts/test-x86_64.ld semihost/fstat.c semihost/isatty.c semihost/mapstdio.c semihost/sys_iserror.c semihost/sys_system.c semihost/sys_tickfreq.c test/fenv.c test/ffs.c test/malloc.c test/malloc_stress.c test/math_errhandling.c test/math_errhandling_tests.c test/regex.c test/semihost/meson.build test/semihost/semihost-clock.c test/semihost/semihost-close.c test/semihost/semihost-elapsed.c test/semihost/semihost-errno.c test/semihost/semihost-exit-extended-failure.c test/semihost/semihost-exit-extended.c test/semihost/semihost-exit-failure.c test/semihost/semihost-exit.c test/semihost/semihost-flen.c test/semihost/semihost-get-cmdline.c test/semihost/semihost-heapinfo.c test/semihost/semihost-iserror.c test/semihost/semihost-istty.c test/semihost/semihost-open.c test/semihost/semihost-read.c test/semihost/semihost-readc.c test/semihost/semihost-remove.c test/semihost/semihost-rename.c test/semihost/semihost-seek.c test/semihost/semihost-system-failure.c test/semihost/semihost-system.c test/semihost/semihost-tickfreq.c test/semihost/semihost-time.c test/semihost/semihost-tmpnam.c test/semihost/semihost-tmpname.c test/semihost/semihost-write.c test/semihost/semihost-write0.c test/semihost/semihost-writec.c test/setjmp.c test/stack-smash.c test/tls.c test/try-ilp32-sub.c test/try-ilp32.c test/try-ilp32.h Copyright: 2020 Keith Packard License: BSD3-1 Files: meson.build Copyright: 2019-2021 Keith Packard License: BSD3-1 Files: newlib/empty.c newlib/libc/machine/arm/memmove.c newlib/libc/machine/shared_x86/meson.build newlib/libc/machine/shared_x86/sys/meson.build newlib/libc/machine/xtensa/machine/meson.build newlib/libc/picolib/machine/aarch64/meson.build newlib/libc/picolib/machine/arm/meson.build newlib/libc/picolib/machine/riscv/meson.build newlib/libc/stdlib/pico-atexit.c newlib/libc/stdlib/pico-cxa-atexit.c newlib/libc/stdlib/pico-exit.c newlib/libc/stdlib/pico-onexit.c newlib/libc/stdlib/pico-onexit.h newlib/libc/tinystdio/atold_engine.c newlib/libc/tinystdio/matchcaseprefix.c newlib/libc/tinystdio/rewind.c newlib/libc/tinystdio/strfromd.c newlib/libc/tinystdio/strfromf.c newlib/libm/common/dreml.c newlib/libm/common/exp10l.c newlib/libm/common/math_inexact.c newlib/libm/common/math_inexactf.c newlib/libm/common/pow10l.c newlib/libm/common/sincosl.c newlib/libm/machine/powerpc/meson.build newlib/libm/test/scalbn_vec.c picocrt/machine/aarch64/meson.build picocrt/machine/arm/meson.build picocrt/machine/i386/meson.build picocrt/machine/riscv/meson.build picocrt/machine/x86_64/meson.build scripts/do-powerpc64le-configure semihost/machine/aarch64/meson.build semihost/machine/arm/meson.build semihost/machine/i386/bios.S semihost/machine/i386/e9_exit.c semihost/machine/i386/e9_io.c semihost/machine/i386/e9_kill.c semihost/machine/i386/e9_stub.c semihost/machine/i386/meson.build semihost/machine/riscv/meson.build test/atexit.c test/constructor-skip.c test/constructor.c test/hosted-exit.c test/libc-testsuite/testcase.h test/math-funcs.c test/on_exit.c test/rounding-mode-sub.c test/rounding-mode.c test/test-memset.c test/test-strchr.c test/timegm.c test/timegm.h Copyright: 2021 Keith Packard License: BSD3-1 Files: newlib/libc/machine/aarch64/meson.build newlib/libm/machine/aarch64/meson.build Copyright: 2019 Keith Packard, 2020 Anthony Anderson License: BSD3-1 Files: newlib/libc/machine/arm/machine/math.h Copyright: 2020 Keith Packard 2017 embedded brains GmbH. 2011, 2012 ARM Ltd. License: BSD3-1 Files: newlib/libc/machine/powerpc/meson.build Copyright: 2019 Ash Logan, Keith Packard License: BSD3-1 Files: newlib/libc/machine/xtensa/meson.build newlib/libm/machine/xtensa/meson.build Copyright: 2019 Jonathan McDowell License: BSD3-1 Files: newlib/libm/machine/riscv/s_copysign.c newlib/libm/machine/riscv/s_fabs.c newlib/libm/machine/riscv/s_finite.c newlib/libm/machine/riscv/s_fmax.c newlib/libm/machine/riscv/s_fmin.c newlib/libm/machine/riscv/s_fpclassify.c newlib/libm/machine/riscv/s_isinf.c newlib/libm/machine/riscv/s_isnan.c newlib/libm/machine/riscv/s_llrint.c newlib/libm/machine/riscv/s_llround.c newlib/libm/machine/riscv/s_lrint.c newlib/libm/machine/riscv/s_lround.c newlib/libm/machine/riscv/sf_copysign.c newlib/libm/machine/riscv/sf_fabs.c newlib/libm/machine/riscv/sf_finite.c newlib/libm/machine/riscv/sf_fmax.c newlib/libm/machine/riscv/sf_fmin.c newlib/libm/machine/riscv/sf_fpclassify.c newlib/libm/machine/riscv/sf_isinf.c newlib/libm/machine/riscv/sf_isnan.c newlib/libm/machine/riscv/sf_llrint.c newlib/libm/machine/riscv/sf_llround.c newlib/libm/machine/riscv/sf_lrint.c newlib/libm/machine/riscv/sf_lround.c Copyright: 2020 Kito Cheng License: BSD3-1 Files: picocrt/machine/i386/crt0.S picocrt/machine/x86_64/crt0.S Copyright: 2021 Mike Haertel and Keith Packard License: BSD3-1 Files: picocrt/machine/riscv/crt0.S Copyright: 2020 Sebastian Meyer License: BSD3-1 Files: scripts/do-freedom-tools-package Copyright: 2020 SiFive Inc. License: BSD3-1 Files: test/time-tests.c Copyright: 2021 R. Diez License: BSD3-1 Files: newlib/libc/ctype/ctype_.c newlib/libc/ctype/isalnum.c newlib/libc/ctype/isalpha.c newlib/libc/ctype/isascii.c newlib/libc/ctype/iscntrl.c newlib/libc/ctype/isdigit.c newlib/libc/ctype/islower.c newlib/libc/ctype/isprint.c newlib/libc/ctype/ispunct.c newlib/libc/ctype/isspace.c newlib/libc/ctype/isupper.c newlib/libc/ctype/isxdigit.c newlib/libc/ctype/toascii.c newlib/libc/ctype/tolower.c newlib/libc/ctype/toupper.c newlib/libc/include/pwd.h Copyright: 1989 The Regents of the University of California. License: BSD3-2 Files: newlib/libc/include/dirent.h newlib/libc/string/wcsncmp.c Copyright: 1989, 1993 The Regents of the University of California. License: BSD3-2 Files: newlib/libc/include/ndbm.h newlib/libc/include/search.h newlib/libc/search/hash_func.c newlib/libc/search/ndbm.c newlib/libc/stdlib/getsubopt.c newlib/libc/string/wcscmp.c Copyright: 1990, 1993 The Regents of the University of California. License: BSD3-2 Files: newlib/libc/include/sys/_timespec.h newlib/libc/include/sys/_types.h newlib/libc/include/sys/config.h newlib/libc/include/sys/dirent.h newlib/libc/include/sys/errno.h newlib/libc/include/sys/fcntl.h newlib/libc/include/sys/file.h newlib/libc/include/sys/param.h newlib/libc/include/sys/reent.h newlib/libc/include/sys/resource.h newlib/libc/include/sys/select.h newlib/libc/include/sys/signal.h newlib/libc/include/sys/stat.h newlib/libc/include/sys/time.h newlib/libc/include/sys/timeb.h newlib/libc/include/sys/times.h newlib/libc/include/sys/types.h newlib/libc/include/sys/unistd.h newlib/libc/include/sys/utime.h newlib/libc/include/sys/wait.h Copyright: 1982, 1986, 1993 The Regents of the University of California. License: BSD3-2 Files: newlib/libc/include/sys/cdefs.h newlib/libc/include/sys/queue.h Copyright: 1991, 1993 The Regents of the University of California. License: BSD3-2 Files: newlib/libc/include/sys/syslimits.h newlib/libc/stdlib/atoll.c Copyright: 1988, 1993 The Regents of the University of California. License: BSD3-2 Files: newlib/libc/include/unctrl.h newlib/libc/misc/ffs.c newlib/libc/misc/misc.tex newlib/libc/misc/unctrl.c Copyright: 1981, 1993 The Regents of the University of California. License: BSD3-2 Files: newlib/libc/machine/msp430/tiny-printf.c newlib/libc/machine/powerpc/machine/malloc.h newlib/libc/machine/powerpc/machine/stdlib.h newlib/libc/machine/powerpc/vec_calloc.c newlib/libc/machine/powerpc/vec_free.c newlib/libc/machine/powerpc/vec_malloc.c newlib/libc/machine/powerpc/vec_mallocr.c newlib/libc/machine/powerpc/vec_realloc.c newlib/libc/machine/powerpc/vfprintf.c newlib/libc/stdio/nano-vfprintf.c newlib/libc/stdio/nano-vfprintf_float.c newlib/libc/stdio/nano-vfprintf_local.h newlib/libc/stdio/vfprintf.c newlib/libc/stdlib/strtol.c newlib/libc/stdlib/strtoll.c newlib/libc/stdlib/wcstol.c newlib/libc/stdlib/wcstoll.c newlib/libc/stdlib/wcstoll_r.c newlib/libc/stdlib/wcstoull_r.c Copyright: 1990 The Regents of the University of California. License: BSD3-2 Files: newlib/libc/posix/cclass.h newlib/libc/posix/cname.h newlib/libc/posix/regex2.h newlib/libc/posix/utils.h Copyright: 1992, 1993, 1994 Henry Spencer. 1992, 1993, 1994 The Regents of the University of California. License: BSD3-2 Files: newlib/libc/search/bsearch.c newlib/libc/search/extern.h newlib/libc/search/hcreate.3 newlib/libc/search/tdelete.c newlib/libc/search/tdestroy.c newlib/libc/search/tfind.c newlib/libc/search/tsearch.c newlib/libc/search/twalk.c Copyright: 1991, 1993, 1994 The Regents of the University of California. License: BSD3-2 Files: newlib/libc/search/db_local.h newlib/libc/search/hash.c newlib/libc/search/hash.h newlib/libc/search/hash_bigkey.c newlib/libc/search/hash_buf.c newlib/libc/search/hash_log2.c newlib/libc/search/hash_page.c newlib/libc/search/page.h Copyright: 1990, 1993, 1994 The Regents of the University of California. License: BSD3-2 Files: newlib/libc/search/qsort.c Copyright: 1992, 1993 The Regents of the University of California. License: BSD3-2 Files: newlib/libc/stdlib/div.c newlib/libc/stdlib/ldiv.c newlib/libc/stdlib/strtoul.c newlib/libc/stdlib/strtoull.c newlib/libc/stdlib/wcstoul.c newlib/libc/stdlib/wcstoull.c Copyright: 1990 Regents of the University of California. License: BSD3-2 Files: newlib/libc/stdlib/getsubopt.3 Copyright: 1990, 1991, 1993 The Regents of the University of California. License: BSD3-2 Files: newlib/libc/string/strtok_r.c newlib/libc/string/wcstok.c Copyright: 1988 Regents of the University of California. License: BSD3-2 Files: newlib/libc/ctype/iswalnum.c newlib/libc/ctype/iswalpha.c newlib/libc/ctype/iswblank.c newlib/libc/ctype/iswcntrl.c newlib/libc/ctype/iswctype.c newlib/libc/ctype/iswdigit.c newlib/libc/ctype/iswgraph.c newlib/libc/ctype/iswlower.c newlib/libc/ctype/iswprint.c newlib/libc/ctype/iswpunct.c newlib/libc/ctype/iswspace.c newlib/libc/ctype/iswupper.c newlib/libc/ctype/iswxdigit.c newlib/libc/ctype/jp2uc.c newlib/libc/ctype/jp2uc.h newlib/libc/ctype/local.h newlib/libc/ctype/towctrans.c newlib/libc/ctype/towlower.c newlib/libc/ctype/towupper.c newlib/libc/ctype/wctrans.c newlib/libc/ctype/wctype.c Copyright: 2002 Red Hat Incorporated. License: BSD3-3 Files: newlib/libc/machine/hppa/setjmp.S Copyright: 1995, 2002 Red Hat Incorporated. License: BSD3-3 Files: newlib/libc/machine/m32c/setjmp.S Copyright: 2005 Red Hat Incorporated. License: BSD3-3 Files: newlib/libc/machine/rl78/setjmp.S Copyright: 2011 Red Hat Incorporated. License: BSD3-3 Files: newlib/libc/stdlib/environ.c Copyright: 1995, 1996, 2002 Red Hat Incorporated. License: BSD3-3 Files: newlib/libc/include/_ansi.h newlib/libc/include/_syslist.h newlib/libc/include/ar.h newlib/libc/include/assert.h newlib/libc/include/ctype.h newlib/libc/include/errno.h newlib/libc/include/fastmath.h newlib/libc/include/fcntl.h newlib/libc/include/ieeefp.h newlib/libc/include/locale.h newlib/libc/include/malloc.h newlib/libc/include/math.h newlib/libc/include/paths.h newlib/libc/include/reent.h newlib/libc/include/regdef.h newlib/libc/include/setjmp.h newlib/libc/include/signal.h newlib/libc/include/stdlib.h newlib/libc/include/string.h newlib/libc/include/termios.h newlib/libc/include/time.h newlib/libc/include/unistd.h newlib/libc/include/utime.h newlib/libc/include/utmp.h Copyright: 1991, 1993 The Regents of the University of California. License: BSD3-4 Files: newlib/libc/include/grp.h Copyright: 1989, 1993 The Regents of the University of California. License: BSD3-4 Files: newlib/libc/include/envlock.h newlib/libc/include/fnmatch.h Copyright: 1992, 1993 The Regents of the University of California. License: BSD3-5 Files: newlib/libc/include/glob.h Copyright: 1989, 1993 The Regents of the University of California. License: BSD3-5 Files: newlib/libc/include/regex.h Copyright: 1992 Henry Spencer. 1992, 1993 The Regents of the University of California. License: BSD3-5 Files: newlib/libc/include/sys/timespec.h Copyright: 1982, 1986, 1993 The Regents of the University of California. License: BSD3-5 Files: newlib/libc/locale/duplocale.c newlib/libc/locale/freelocale.c newlib/libc/locale/locale.c newlib/libc/locale/locale.tex newlib/libc/locale/localeconv.c newlib/libc/locale/newlocale.c newlib/libc/locale/uselocale.c Copyright: 1996 - 2002 FreeBSD Project 1991, 1993 The Regents of the University of California. License: BSD3-5 Files: newlib/libc/misc/__dprintf.c newlib/libc/stdio/vfwprintf.c Copyright: 1990 The Regents of the University of California. License: BSD3-5 Files: newlib/libc/posix/engine.c newlib/libc/posix/regcomp.c newlib/libc/posix/regerror.c newlib/libc/posix/regexec.c newlib/libc/posix/regfree.c Copyright: 1992, 1993, 1994 Henry Spencer. 1992, 1993, 1994 The Regents of the University of California. License: BSD3-5 Files: newlib/libc/posix/fnmatch.c Copyright: 1989, 1993, 1994 The Regents of the University of California. License: BSD3-5 Files: newlib/libc/posix/rune.h newlib/libc/posix/runetype.h Copyright: 1993 The Regents of the University of California. License: BSD3-5 Files: newlib/libc/posix/sysexits.h Copyright: 1987, 1993 The Regents of the University of California. License: BSD3-5 Files: newlib/libc/string/strcasestr.c Copyright: 1990, 1993 The Regents of the University of California. License: BSD3-5 Files: newlib/libc/include/rpc/types.h newlib/libc/include/rpc/xdr.h newlib/libc/xdr/xdr.c newlib/libc/xdr/xdr_array.c newlib/libc/xdr/xdr_float.c newlib/libc/xdr/xdr_float_vax.c newlib/libc/xdr/xdr_mem.c newlib/libc/xdr/xdr_rec.c newlib/libc/xdr/xdr_reference.c newlib/libc/xdr/xdr_sizeof.c newlib/libc/xdr/xdr_stdio.c Copyright: 2009, Sun Microsystems, Inc. License: BSD3-6 Files: newlib/libc/include/sys/_sigset.h Copyright: 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. License: BSD3-7 Files: newlib/libc/machine/aarch64/machine/_types.h Copyright: 2012 ARM Ltd License: BSD3-8 Files: newlib/libc/machine/aarch64/setjmp.S newlib/libm/machine/aarch64/s_ceil.c newlib/libm/machine/aarch64/s_floor.c newlib/libm/machine/aarch64/s_fma.c newlib/libm/machine/aarch64/s_fmax.c newlib/libm/machine/aarch64/s_fmin.c newlib/libm/machine/aarch64/s_llrint.c newlib/libm/machine/aarch64/s_llround.c newlib/libm/machine/aarch64/s_lrint.c newlib/libm/machine/aarch64/s_lround.c newlib/libm/machine/aarch64/s_nearbyint.c newlib/libm/machine/aarch64/s_rint.c newlib/libm/machine/aarch64/s_round.c newlib/libm/machine/aarch64/s_trunc.c newlib/libm/machine/aarch64/sf_ceil.c newlib/libm/machine/aarch64/sf_floor.c newlib/libm/machine/aarch64/sf_fma.c newlib/libm/machine/aarch64/sf_fmax.c newlib/libm/machine/aarch64/sf_fmin.c newlib/libm/machine/aarch64/sf_llrint.c newlib/libm/machine/aarch64/sf_llround.c newlib/libm/machine/aarch64/sf_lrint.c newlib/libm/machine/aarch64/sf_lround.c newlib/libm/machine/aarch64/sf_nearbyint.c newlib/libm/machine/aarch64/sf_rint.c newlib/libm/machine/aarch64/sf_round.c newlib/libm/machine/aarch64/sf_trunc.c newlib/libm/machine/arm/s_ceil.c newlib/libm/machine/arm/s_floor.c newlib/libm/machine/arm/s_nearbyint.c newlib/libm/machine/arm/s_rint.c newlib/libm/machine/arm/s_round.c newlib/libm/machine/arm/s_trunc.c newlib/libm/machine/arm/sf_ceil.c newlib/libm/machine/arm/sf_floor.c newlib/libm/machine/arm/sf_nearbyint.c newlib/libm/machine/arm/sf_rint.c newlib/libm/machine/arm/sf_round.c newlib/libm/machine/arm/sf_trunc.c Copyright: 2011, 2012 ARM Ltd License: BSD3-8 Files: newlib/libc/machine/arm/acle-compat.h newlib/libc/machine/arm/aeabi_memcpy-armv7a.S newlib/libc/machine/arm/machine/acle-compat.h newlib/libc/machine/arm/strcmp-armv6m.S Copyright: 2014 ARM Ltd License: BSD3-8 Files: newlib/libc/machine/arm/aeabi_memset.c newlib/libc/machine/arm/bzero.c newlib/libc/machine/arm/machine/_endian.h newlib/libc/machine/arm/memset-arm.S newlib/libc/machine/arm/memset-thumb.S newlib/libc/machine/arm/memset-thumb2.S newlib/libc/machine/arm/memset.S newlib/libc/machine/arm/memset.c newlib/libm/machine/aarch64/s_fabs.c newlib/libm/machine/aarch64/s_sqrt.c newlib/libm/machine/aarch64/sf_fabs.c newlib/libm/machine/aarch64/sf_sqrt.c Copyright: 2015 ARM Ltd License: BSD3-8 Files: newlib/libc/machine/arm/arm_asm.h Copyright: 2009 ARM Ltd License: BSD3-8 Files: newlib/libc/machine/arm/memcpy-armv7m.S Copyright: 2013 ARM Ltd License: BSD3-8 Files: newlib/libc/machine/arm/memcpy.S Copyright: 2013-2015 ARM Ltd License: BSD3-8 Files: newlib/libc/machine/arm/strcmp-arm-tiny.S newlib/libc/machine/arm/strcmp-armv4.S newlib/libc/machine/arm/strcmp-armv4t.S newlib/libc/machine/arm/strcmp-armv6.S newlib/libc/machine/arm/strcmp-armv7.S newlib/libc/machine/arm/strcmp-armv7m.S newlib/libc/machine/arm/strcmp.S newlib/libc/stdio/nano-vfprintf_i.c newlib/libc/stdio/nano-vfscanf_i.c Copyright: 2012-2014 ARM Ltd License: BSD3-8 Files: newlib/libc/machine/arm/strcpy.S Copyright: 2008 ARM Ltd License: BSD3-8 Files: newlib/libc/machine/arm/strlen.c Copyright: 2008-2015 ARM Ltd License: BSD3-8 Files: newlib/libc/stdlib/nano-mallocr.c Copyright: 2012, 2013 ARM Ltd License: BSD3-8 Files: newlib/testsuite/newlib.string/memcpy-1.c newlib/testsuite/newlib.string/strcmp-1.c Copyright: 2011 ARM Ltd License: BSD3-8 Files: newlib/libc/machine/aarch64/memchr-stub.c newlib/libc/machine/aarch64/memcmp-stub.c newlib/libc/machine/aarch64/memmove-stub.c newlib/libc/machine/aarch64/memmove.S newlib/libc/machine/aarch64/strlen-stub.c newlib/libc/machine/aarch64/strncmp-stub.c newlib/libc/machine/aarch64/strnlen-stub.c newlib/libc/machine/aarch64/strnlen.S Copyright: 2013, Linaro Limited License: BSD3-9 Files: newlib/libc/machine/aarch64/memcmp.S Copyright: 2018 Linaro Limited License: BSD3-9 Files: newlib/libc/machine/aarch64/memcpy-stub.c newlib/libc/machine/aarch64/memcpy.S newlib/libc/machine/aarch64/memset-stub.c newlib/libc/machine/aarch64/memset.S newlib/libc/machine/aarch64/strcmp-stub.c Copyright: 2012-2013, Linaro Limited License: BSD3-9 Files: newlib/libc/machine/aarch64/strcmp.S Copyright: 2012-2018, Linaro Limited License: BSD3-9 Files: newlib/libc/machine/aarch64/strlen.S Copyright: 2013-2015, Linaro Limited License: BSD3-9 Files: newlib/libc/machine/aarch64/strncmp.S Copyright: 2013, 2018, Linaro Limited License: BSD3-9 Files: newlib/libc/machine/arm/memchr.c newlib/libc/machine/arm/memcpy.c newlib/libc/machine/arm/strlen-thumb1-Os.S newlib/libc/machine/arm/strlen-thumb2-Os.S newlib/libc/machine/arm/strlen.S Copyright: 2015 ARM Ltd. License: BSD3-9 Files: newlib/libc/machine/aarch64/memchr.S newlib/libc/machine/aarch64/strchr-stub.c newlib/libc/machine/aarch64/strchr.S newlib/libc/machine/aarch64/strchrnul-stub.c newlib/libc/machine/aarch64/strchrnul.S newlib/libc/machine/aarch64/strcpy-stub.c newlib/libc/machine/aarch64/strrchr-stub.c newlib/libc/machine/aarch64/strrchr.S Copyright: 2014, ARM Limited License: BSD3-10 Files: newlib/libc/machine/aarch64/rawmemchr-stub.c newlib/libc/machine/aarch64/rawmemchr.S Copyright: 2015-2016, ARM Limited License: BSD3-10 Files: newlib/libc/machine/aarch64/stpcpy-stub.c Copyright: 2015, ARM Limited License: BSD3-10 Files: newlib/libc/machine/aarch64/stpcpy.S Copyright: 2015 ARM Ltd. License: BSD3-10 Files: newlib/libc/machine/aarch64/strcpy.S Copyright: 2013, 2014, 2015 ARM Ltd. License: BSD3-10 Files: newlib/libc/machine/arc/asm.h newlib/libc/machine/arc/memcmp-bs-norm.S newlib/libc/machine/arc/memcmp-stub.c newlib/libc/machine/arc/memcmp.S newlib/libc/machine/arc/memcpy-archs.S newlib/libc/machine/arc/memcpy-bs.S newlib/libc/machine/arc/memcpy-stub.c newlib/libc/machine/arc/memcpy.S newlib/libc/machine/arc/memset-archs.S newlib/libc/machine/arc/memset-bs.S newlib/libc/machine/arc/memset-stub.c newlib/libc/machine/arc/memset.S newlib/libc/machine/arc/setjmp.S newlib/libc/machine/arc/strchr-bs-norm.S newlib/libc/machine/arc/strchr-bs.S newlib/libc/machine/arc/strchr-stub.c newlib/libc/machine/arc/strchr.S newlib/libc/machine/arc/strcmp-archs.S newlib/libc/machine/arc/strcmp-stub.c newlib/libc/machine/arc/strcmp.S newlib/libc/machine/arc/strcpy-bs-arc600.S newlib/libc/machine/arc/strcpy-bs.S newlib/libc/machine/arc/strcpy-stub.c newlib/libc/machine/arc/strcpy.S newlib/libc/machine/arc/strlen-bs-norm.S newlib/libc/machine/arc/strlen-bs.S newlib/libc/machine/arc/strlen-stub.c newlib/libc/machine/arc/strlen.S newlib/libc/machine/arc/strncpy-bs.S newlib/libc/machine/arc/strncpy-stub.c newlib/libc/machine/arc/strncpy.S Copyright: 2015, Synopsys, Inc. License: BSD3-11 Files: newlib/libc/machine/arm/memchr.S Copyright: 2010-2011, Linaro Limited License: BSD3-12 Files: newlib/libc/machine/arm/memcpy-armv7a.S Copyright: 2013, Linaro Limited License: BSD3-12 Files: newlib/libc/machine/arm/strlen-armv7.S Copyright: 2010-2011,2013 Linaro Limited License: BSD3-12 Files: newlib/libc/machine/epiphany/setjmp.S Copyright: 2011, Adapteva, Inc. License: BSD3-13 Files: newlib/libc/machine/microblaze/abort.c newlib/libc/machine/microblaze/longjmp.S newlib/libc/machine/microblaze/setjmp.S Copyright: 2001, 2009 Xilinx, Inc. License: BSD3-14 Files: newlib/libc/machine/microblaze/strcmp.c newlib/libc/machine/microblaze/strcpy.c newlib/libc/machine/microblaze/strlen.c Copyright: 2009 Xilinx, Inc. License: BSD3-14 Files: newlib/libc/machine/mips/machine/asm.h newlib/libc/machine/mips/machine/regdef.h Copyright: 1996-2007 MIPS Technologies, Inc. 2009 CodeSourcery, LLC. License: BSD3-15 Files: newlib/libc/machine/mips/memcpy.S Copyright: 2012-2015 MIPS Technologies, Inc., California. License: BSD3-16 Files: newlib/libc/machine/mips/memset.S Copyright: 2013 MIPS Technologies, Inc., California. License: BSD3-16 Files: newlib/libc/machine/mips/strcmp.S Copyright: 2014 Imagination Technologies Limited. License: BSD3-17 Files: newlib/libc/machine/nds32/abort.c newlib/libc/machine/nds32/memcpy.S newlib/libc/machine/nds32/memset.S newlib/libc/machine/nds32/setjmp.S newlib/libc/machine/nds32/strcmp.S newlib/libc/machine/nds32/strcpy.S Copyright: 2013 Andes Technology Corporation. License: BSD3-18 Files: newlib/libm/machine/nds32/w_sqrt.S newlib/libm/machine/nds32/wf_sqrt.S Copyright: 2013-2014 Andes Technology Corporation. License: BSD3-18 Files: newlib/libc/machine/nios2/setjmp.s Copyright: 2003 Altera Corporation License: BSD3-19 Files: newlib/libc/machine/sparc/setjmp.S Copyright: 1992, 1993 The Regents of the University of California. License: BSD3-20 Files: newlib/libc/machine/spu/c99ppe.h newlib/libc/machine/spu/clearerr.c newlib/libc/machine/spu/fclose.c newlib/libc/machine/spu/feof.c newlib/libc/machine/spu/ferror.c newlib/libc/machine/spu/fflush.c newlib/libc/machine/spu/fgetc.c newlib/libc/machine/spu/fgetpos.c newlib/libc/machine/spu/fgets.c newlib/libc/machine/spu/fileno.c newlib/libc/machine/spu/fopen.c newlib/libc/machine/spu/fputc.c newlib/libc/machine/spu/fputs.c newlib/libc/machine/spu/fread.c newlib/libc/machine/spu/freopen.c newlib/libc/machine/spu/fseek.c newlib/libc/machine/spu/fsetpos.c newlib/libc/machine/spu/ftell.c newlib/libc/machine/spu/fwrite.c newlib/libc/machine/spu/getc.c newlib/libc/machine/spu/getchar.c newlib/libc/machine/spu/gets.c newlib/libc/machine/spu/perror.c newlib/libc/machine/spu/putc.c newlib/libc/machine/spu/putchar.c newlib/libc/machine/spu/puts.c newlib/libc/machine/spu/remove.c newlib/libc/machine/spu/rename.c newlib/libc/machine/spu/rewind.c newlib/libc/machine/spu/setbuf.c newlib/libc/machine/spu/setvbuf.c newlib/libc/machine/spu/sys/custom_file.h newlib/libc/machine/spu/tmpfile.c newlib/libc/machine/spu/tmpnam.c newlib/libc/machine/spu/ungetc.c newlib/libc/machine/spu/vfprintf.c newlib/libc/machine/spu/vfscanf.c newlib/libc/machine/spu/vprintf.c newlib/libc/machine/spu/vscanf.c newlib/libc/machine/spu/vsnprintf.c newlib/libc/machine/spu/vsprintf.c newlib/libc/machine/spu/vsscanf.c Copyright: IBM Corp. 2006 License: BSD3-21 Files: newlib/libc/machine/spu/calloc_ea.c newlib/libc/machine/spu/ea_internal.h newlib/libc/machine/spu/free_ea.c newlib/libc/machine/spu/include/ea.h newlib/libc/machine/spu/malloc_ea.c newlib/libc/machine/spu/memchr_ea.c newlib/libc/machine/spu/memcmp_ea.c newlib/libc/machine/spu/memcpy_ea.c newlib/libc/machine/spu/memmove_ea.c newlib/libc/machine/spu/memset_ea.c newlib/libc/machine/spu/mmap_ea.c newlib/libc/machine/spu/mremap_ea.c newlib/libc/machine/spu/msync_ea.c newlib/libc/machine/spu/munmap_ea.c newlib/libc/machine/spu/posix_memalign_ea.c newlib/libc/machine/spu/realloc_ea.c newlib/libc/machine/spu/strcat_ea.c newlib/libc/machine/spu/strchr_ea.c newlib/libc/machine/spu/strcmp_ea.c newlib/libc/machine/spu/strcpy_ea.c newlib/libc/machine/spu/strcspn_ea.c newlib/libc/machine/spu/strlen_ea.c newlib/libc/machine/spu/strncat_ea.c newlib/libc/machine/spu/strncmp_ea.c newlib/libc/machine/spu/strncpy_ea.c newlib/libc/machine/spu/strpbrk_ea.c newlib/libc/machine/spu/strrchr_ea.c newlib/libc/machine/spu/strspn_ea.c newlib/libc/machine/spu/strstr_ea.c Copyright: IBM Corp. 2007, 2008 License: BSD3-21 Files: newlib/libc/machine/spu/fdopen.c newlib/libc/stdlib/strtold.c newlib/libc/stdlib/wcstold.c newlib/libm/common/acoshl.c newlib/libm/common/acosl.c newlib/libm/common/asinhl.c newlib/libm/common/asinl.c newlib/libm/common/atan2l.c newlib/libm/common/atanhl.c newlib/libm/common/atanl.c newlib/libm/common/cbrtl.c newlib/libm/common/ceill.c newlib/libm/common/copysignl.c newlib/libm/common/coshl.c newlib/libm/common/cosl.c newlib/libm/common/erfcl.c newlib/libm/common/erfl.c newlib/libm/common/exp2l.c newlib/libm/common/expl.c newlib/libm/common/expm1l.c newlib/libm/common/fabsl.c newlib/libm/common/fdiml.c newlib/libm/common/finitel.c newlib/libm/common/floorl.c newlib/libm/common/fmal.c newlib/libm/common/fmaxl.c newlib/libm/common/fminl.c newlib/libm/common/fmodl.c newlib/libm/common/frexpl.c newlib/libm/common/ilogbl.c newlib/libm/common/isinfl.c newlib/libm/common/isnanl.c newlib/libm/common/ldexpl.c newlib/libm/common/lgammal.c newlib/libm/common/llrintl.c newlib/libm/common/llroundl.c newlib/libm/common/log10l.c newlib/libm/common/log1pl.c newlib/libm/common/logl.c newlib/libm/common/lrintl.c newlib/libm/common/lroundl.c newlib/libm/common/modfl.c newlib/libm/common/nanl.c newlib/libm/common/nearbyintl.c newlib/libm/common/nextafterl.c newlib/libm/common/powl.c newlib/libm/common/remainderl.c newlib/libm/common/remquol.c newlib/libm/common/rintl.c newlib/libm/common/roundl.c newlib/libm/common/scalblnl.c newlib/libm/common/scalbnl.c newlib/libm/common/sinhl.c newlib/libm/common/sinl.c newlib/libm/common/sqrtl.c newlib/libm/common/tanhl.c newlib/libm/common/tanl.c newlib/libm/common/tgammal.c newlib/libm/common/truncl.c Copyright: IBM Corp. 2009 License: BSD3-21 Files: newlib/libc/machine/spu/include/spu_timer.h newlib/libc/machine/spu/pread_ea.c newlib/libc/machine/spu/pwrite_ea.c newlib/libc/machine/spu/read_ea.c newlib/libc/machine/spu/readv_ea.c newlib/libc/machine/spu/spu-gmon.c newlib/libc/machine/spu/spu-mcount.S newlib/libc/machine/spu/spu_clock_stop.c newlib/libc/machine/spu/spu_clock_svcs.c newlib/libc/machine/spu/spu_timebase.c newlib/libc/machine/spu/spu_timer_flih.S newlib/libc/machine/spu/spu_timer_free.c newlib/libc/machine/spu/spu_timer_internal.h newlib/libc/machine/spu/spu_timer_slih.c newlib/libc/machine/spu/spu_timer_slih_reg.c newlib/libc/machine/spu/spu_timer_stop.c newlib/libc/machine/spu/spu_timer_svcs.c newlib/libc/machine/spu/sys/linux_syscalls.h newlib/libc/machine/spu/write_ea.c newlib/libc/machine/spu/writev_ea.c Copyright: IBM Corp. 2008 License: BSD3-21 Files: newlib/libc/machine/spu/setjmp.S Copyright: IBM Corp. 2005, 2006 License: BSD3-21 Files: newlib/libc/machine/spu/sys/mman.h Copyright: IBM Corp. 2007 License: BSD3-21 Files: newlib/libc/machine/spu/fiprintf.S newlib/libc/machine/spu/fiscanf.S newlib/libc/machine/spu/fprintf.S newlib/libc/machine/spu/fscanf.S newlib/libc/machine/spu/iprintf.S newlib/libc/machine/spu/iscanf.S newlib/libc/machine/spu/printf.S newlib/libc/machine/spu/scanf.S newlib/libc/machine/spu/siprintf.S newlib/libc/machine/spu/siscanf.S newlib/libc/machine/spu/sniprintf.S newlib/libc/machine/spu/snprintf.S newlib/libc/machine/spu/sprintf.S newlib/libc/machine/spu/sscanf.S newlib/libc/machine/spu/stack_reg_va.S Copyright: 2007, Toshiba Corporation License: BSD3-22 Files: newlib/libc/machine/spu/mk_syscalls newlib/libc/machine/spu/syscall.def Copyright: 2007 TOSHIBA CORPORATION License: BSD3-22 Files: newlib/libc/machine/spu/include/fenv.h newlib/libc/machine/spu/sys/fenv.h Copyright: 2006, 2007 International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, License: BSD3-23 Files: newlib/libc/machine/spu/machine/_types.h newlib/libc/machine/spu/sys/dirent.h newlib/libm/machine/spu/headers/dom_chkd_less_than.h newlib/libm/machine/spu/headers/dom_chkd_negone_one.h newlib/libm/machine/spu/headers/dom_chkf_less_than.h newlib/libm/machine/spu/headers/dom_chkf_negone_one.h newlib/libm/machine/spu/sf_finite.c newlib/libm/machine/spu/sf_isinf.c newlib/libm/machine/spu/sf_isinff.c newlib/libm/machine/spu/sf_isnan.c newlib/libm/machine/spu/sf_isnanf.c newlib/libm/machine/spu/sf_nan.c Copyright: 2007 International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, License: BSD3-23 Files: newlib/libc/machine/spu/memcmp.c newlib/libc/machine/spu/straddr.h newlib/libc/machine/spu/strcat.c newlib/libc/machine/spu/strcpy.c newlib/libc/machine/spu/strcpy.h newlib/libc/machine/spu/strncat.c newlib/libc/machine/spu/strncpy.c Copyright: 2008 International Business Machines Corporation License: BSD3-23 Files: newlib/libc/machine/spu/memcpy.c newlib/libc/machine/spu/memmove.c newlib/libc/machine/spu/memset.c newlib/libc/machine/spu/strchr.c newlib/libc/machine/spu/strcmp.c newlib/libc/machine/spu/strcspn.c newlib/libc/machine/spu/strlen.c newlib/libc/machine/spu/strncmp.c newlib/libc/machine/spu/strpbrk.c newlib/libc/machine/spu/strrchr.c newlib/libc/machine/spu/strspn.c newlib/libc/machine/spu/strxfrm.c newlib/libc/machine/spu/vec_literal.h newlib/libm/machine/spu/headers/atanf.h newlib/libm/machine/spu/headers/cbrt.h newlib/libm/machine/spu/headers/cbrtf.h newlib/libm/machine/spu/headers/ceil.h newlib/libm/machine/spu/headers/ceilf.h newlib/libm/machine/spu/headers/copysign.h newlib/libm/machine/spu/headers/copysignf.h newlib/libm/machine/spu/headers/exp2f.h newlib/libm/machine/spu/headers/expf.h newlib/libm/machine/spu/headers/fabs.h newlib/libm/machine/spu/headers/fabsf.h newlib/libm/machine/spu/headers/fdim.h newlib/libm/machine/spu/headers/fdimf.h newlib/libm/machine/spu/headers/feclearexcept.h newlib/libm/machine/spu/headers/fefpscr.h newlib/libm/machine/spu/headers/fegetenv.h newlib/libm/machine/spu/headers/fegetexceptflag.h newlib/libm/machine/spu/headers/fegetround.h newlib/libm/machine/spu/headers/feholdexcept.h newlib/libm/machine/spu/headers/feraiseexcept.h newlib/libm/machine/spu/headers/fesetenv.h newlib/libm/machine/spu/headers/fesetexceptflag.h newlib/libm/machine/spu/headers/fesetround.h newlib/libm/machine/spu/headers/fetestexcept.h newlib/libm/machine/spu/headers/feupdateenv.h newlib/libm/machine/spu/headers/floor.h newlib/libm/machine/spu/headers/floorf.h newlib/libm/machine/spu/headers/fma.h newlib/libm/machine/spu/headers/fmaf.h newlib/libm/machine/spu/headers/fmax.h newlib/libm/machine/spu/headers/fmaxf.h newlib/libm/machine/spu/headers/fmin.h newlib/libm/machine/spu/headers/fminf.h newlib/libm/machine/spu/headers/fmod.h newlib/libm/machine/spu/headers/fmodf.h newlib/libm/machine/spu/headers/frexp.h newlib/libm/machine/spu/headers/frexpf.h newlib/libm/machine/spu/headers/ilogb.h newlib/libm/machine/spu/headers/ilogbf.h newlib/libm/machine/spu/headers/ldexp.h newlib/libm/machine/spu/headers/ldexpf.h newlib/libm/machine/spu/headers/llrint.h newlib/libm/machine/spu/headers/llrintf.h newlib/libm/machine/spu/headers/llround.h newlib/libm/machine/spu/headers/llroundf.h newlib/libm/machine/spu/headers/log10f.h newlib/libm/machine/spu/headers/log2f.h newlib/libm/machine/spu/headers/logf.h newlib/libm/machine/spu/headers/lrint.h newlib/libm/machine/spu/headers/lrintf.h newlib/libm/machine/spu/headers/lround.h newlib/libm/machine/spu/headers/lroundf.h newlib/libm/machine/spu/headers/nearbyint.h newlib/libm/machine/spu/headers/remainder.h newlib/libm/machine/spu/headers/remainderf.h newlib/libm/machine/spu/headers/remquo.h newlib/libm/machine/spu/headers/remquof.h newlib/libm/machine/spu/headers/rint.h newlib/libm/machine/spu/headers/round.h newlib/libm/machine/spu/headers/roundf.h newlib/libm/machine/spu/headers/scalbn.h newlib/libm/machine/spu/headers/scalbnf.h newlib/libm/machine/spu/headers/sqrt.h newlib/libm/machine/spu/headers/trunc.h newlib/libm/machine/spu/headers/truncf.h newlib/libm/machine/spu/headers/vec_literal.h newlib/libm/machine/spu/llrint.c newlib/libm/machine/spu/llrintf.c newlib/libm/machine/spu/llround.c newlib/libm/machine/spu/llroundf.c newlib/libm/machine/spu/log2f.c newlib/libm/machine/spu/s_cbrt.c newlib/libm/machine/spu/s_ceil.c newlib/libm/machine/spu/s_copysign.c newlib/libm/machine/spu/s_fabs.c newlib/libm/machine/spu/s_fdim.c newlib/libm/machine/spu/s_floor.c newlib/libm/machine/spu/s_fma.c newlib/libm/machine/spu/s_fmax.c newlib/libm/machine/spu/s_fmin.c newlib/libm/machine/spu/s_frexp.c newlib/libm/machine/spu/s_ilogb.c newlib/libm/machine/spu/s_ldexp.c newlib/libm/machine/spu/s_lrint.c newlib/libm/machine/spu/s_lround.c newlib/libm/machine/spu/s_nearbyint.c newlib/libm/machine/spu/s_remquo.c newlib/libm/machine/spu/s_rint.c newlib/libm/machine/spu/s_round.c newlib/libm/machine/spu/s_scalbn.c newlib/libm/machine/spu/s_trunc.c newlib/libm/machine/spu/sf_atan.c newlib/libm/machine/spu/sf_cbrt.c newlib/libm/machine/spu/sf_ceil.c newlib/libm/machine/spu/sf_copysign.c newlib/libm/machine/spu/sf_fabs.c newlib/libm/machine/spu/sf_fdim.c newlib/libm/machine/spu/sf_floor.c newlib/libm/machine/spu/sf_fma.c newlib/libm/machine/spu/sf_fmax.c newlib/libm/machine/spu/sf_fmin.c newlib/libm/machine/spu/sf_frexp.c newlib/libm/machine/spu/sf_ilogb.c newlib/libm/machine/spu/sf_ldexp.c newlib/libm/machine/spu/sf_lrint.c newlib/libm/machine/spu/sf_lround.c newlib/libm/machine/spu/sf_remquo.c newlib/libm/machine/spu/sf_round.c newlib/libm/machine/spu/sf_scalbn.c newlib/libm/machine/spu/sf_trunc.c newlib/libm/machine/spu/w_fmod.c newlib/libm/machine/spu/w_remainder.c newlib/libm/machine/spu/w_sqrt.c newlib/libm/machine/spu/wf_exp.c newlib/libm/machine/spu/wf_exp2.c newlib/libm/machine/spu/wf_fmod.c newlib/libm/machine/spu/wf_log.c newlib/libm/machine/spu/wf_log10.c newlib/libm/machine/spu/wf_remainder.c Copyright: 2001,2006, International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, License: BSD3-23 Files: newlib/libc/machine/spu/stdio.c Copyright: 2007 Sony Computer Entertainment Inc. 2007 Sony Corp. License: BSD3-23 Files: newlib/libc/machine/spu/strncmp.h Copyright: 2001,2006,2008 International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, License: BSD3-23 Files: newlib/libc/machine/tic6x/setjmp.S Copyright: 1996-2010 Texas Instruments Incorporated http://www.ti.com License: BSD3-24 Files: newlib/libc/machine/visium/memcpy.c newlib/libc/machine/visium/memcpy.h newlib/libc/machine/visium/memmove.c newlib/libc/machine/visium/memset.c newlib/libc/machine/visium/memset.h newlib/libc/machine/visium/setjmp.S Copyright: 2015 Rolls-Royce Controls and Data Services Limited. License: BSD3-25 Files: newlib/libc/search/hcreate.c newlib/libc/search/hcreate_r.c newlib/testsuite/newlib.search/hsearchtest.c Copyright: 2001 Christopher G. Demetriou License: BSD3-26 Files: newlib/libc/search/tsearch.3 Copyright: 1997 Todd C. Miller License: BSD3-27 Files: newlib/libc/string/strlcat.c newlib/libc/string/strlcpy.c newlib/libc/string/wcslcat.c newlib/libc/string/wcslcpy.c Copyright: 1998 Todd C. Miller License: BSD3-27 Files: newlib/libc/stdlib/aligned_alloc.c Copyright: 2020 Arm Ltd. License: BSD3-28 Files: newlib/libc/string/memmem.c newlib/libc/string/strstr.c newlib/libm/common/cosf.c newlib/libm/common/exp.c newlib/libm/common/exp2.c newlib/libm/common/exp_data.c newlib/libm/common/log.c newlib/libm/common/log2.c newlib/libm/common/log2_data.c newlib/libm/common/log_data.c newlib/libm/common/math_err_check_oflow.c newlib/libm/common/math_err_check_uflow.c newlib/libm/common/math_err_divzero.c newlib/libm/common/math_err_invalid.c newlib/libm/common/math_err_may_uflow.c newlib/libm/common/math_err_oflow.c newlib/libm/common/math_err_uflow.c newlib/libm/common/math_err_with_errno.c newlib/libm/common/math_errf_check_oflowf.c newlib/libm/common/pow.c newlib/libm/common/pow_log_data.c newlib/libm/common/sincosf.c newlib/libm/common/sincosf.h newlib/libm/common/sincosf_data.c newlib/libm/common/sinf.c Copyright: 2018 Arm Ltd. License: BSD3-28 Files: newlib/libm/common/math_config.h newlib/libm/common/math_errf_divzerof.c newlib/libm/common/math_errf_invalidf.c newlib/libm/common/math_errf_may_uflowf.c newlib/libm/common/math_errf_oflowf.c newlib/libm/common/math_errf_uflowf.c newlib/libm/common/math_errf_with_errnof.c newlib/libm/common/sf_pow.c Copyright: 2017-2018 Arm Ltd. License: BSD3-28 Files: newlib/libm/common/sf_exp.c newlib/libm/common/sf_exp2.c newlib/libm/common/sf_exp2_data.c newlib/libm/common/sf_log.c newlib/libm/common/sf_log2.c newlib/libm/common/sf_log2_data.c newlib/libm/common/sf_log_data.c newlib/libm/common/sf_pow_log2_data.c Copyright: 2017 Arm Ltd. License: BSD3-28 Files: newlib/libc/stdlib/strtoimax.c newlib/libc/stdlib/strtoumax.c newlib/libc/stdlib/wcstoimax.c newlib/libc/stdlib/wcstoumax.c Copyright: 1992, 1993 The Regents of the University of California. 2011 The FreeBSD Foundation License: BSD3-29 Files: newlib/libc/sys/rtems/include/sys/poll.h Copyright: 1997 Peter Wemm License: BSD3-30 Files: newlib/libc/time/strptime.c Copyright: 1999 Kungliga Tekniska Hgskolan Royal Institute of Technology, Stockholm, Sweden). License: BSD3-31 Files: newlib/libc/tinystdio/atod_engine.c newlib/libc/tinystdio/atof_engine.c newlib/libc/tinystdio/conv_flt.c newlib/libc/tinystdio/scanf_private.h newlib/libc/tinystdio/vfscanf.c Copyright: 2002,2004,2005 Joerg Wunsch 2008 Dmitry Xmelkov License: BSD3-32 Files: newlib/libc/tinystdio/clearerr.c newlib/libc/tinystdio/fclose.c newlib/libc/tinystdio/feof.c newlib/libc/tinystdio/ferror.c newlib/libc/tinystdio/fgetc.c newlib/libc/tinystdio/stdio_private.h Copyright: 2002,2005 Joerg Wunsch License: BSD3-32 Files: newlib/libc/tinystdio/dtoa_data.c newlib/libc/tinystdio/dtoa_engine.c newlib/libc/tinystdio/dtoa_engine.h newlib/libc/tinystdio/make-dtoa-data newlib/libc/tinystdio/sprintfd.c newlib/libc/tinystdio/sprintff.c newlib/libc/tinystdio/vfiprintf.c newlib/libc/tinystdio/vfiscanf.c newlib/libc/tinystdio/vfprintff.c newlib/libc/tinystdio/vfscanff.c Copyright: 2018, Keith Packard License: BSD3-32 Files: newlib/libc/tinystdio/fdevopen.c Copyright: 2002,2005, 2007 Joerg Wunsch License: BSD3-32 Files: newlib/libc/tinystdio/fgets.c newlib/libc/tinystdio/fprintf.c newlib/libc/tinystdio/fputc.c newlib/libc/tinystdio/fputs.c newlib/libc/tinystdio/fread.c newlib/libc/tinystdio/fscanf.c newlib/libc/tinystdio/fwrite.c newlib/libc/tinystdio/getchar.c newlib/libc/tinystdio/gets.c newlib/libc/tinystdio/printf.c newlib/libc/tinystdio/putchar.c newlib/libc/tinystdio/puts.c newlib/libc/tinystdio/scanf.c newlib/libc/tinystdio/snprintf.c newlib/libc/tinystdio/sprintf.c newlib/libc/tinystdio/sscanf.c newlib/libc/tinystdio/ungetc.c Copyright: 2002, Joerg Wunsch License: BSD3-32 Files: newlib/libc/tinystdio/ftoa_engine.h newlib/libc/tinystdio/xtoa_fast.h Copyright: 2005, Dmitry Xmelkov License: BSD3-32 Files: newlib/libc/tinystdio/snprintfd.c newlib/libc/tinystdio/snprintff.c Copyright: 2021 Keith Packard License: BSD3-32 Files: newlib/libc/tinystdio/stdio.h Copyright: 2002, 2005, 2007 Joerg Wunsch 1990, 1991, 1993 The Regents of the University of California. License: BSD3-32 Files: newlib/libc/tinystdio/strtod.c newlib/libc/tinystdio/strtof.c newlib/libc/tinystdio/strtold.c Copyright: 2002-2005 Michael Stumpf 2006,2008 Dmitry Xmelkov License: BSD3-32 Files: newlib/libc/tinystdio/ultoa_invert.c Copyright: 2017 Keith Packard License: BSD3-32 Files: newlib/libc/tinystdio/vfprintf.c Copyright: 2002, Alexander Popov (sasho@vip.bg) 2002,2004,2005 Joerg Wunsch 2005, Helmut Wallner 2007, Dmitry Xmelkov License: BSD3-32 Files: newlib/libc/tinystdio/vprintf.c newlib/libc/tinystdio/vscanf.c newlib/libc/tinystdio/vsscanf.c Copyright: 2005, Joerg Wunsch License: BSD3-32 Files: newlib/libc/tinystdio/vsnprintf.c newlib/libc/tinystdio/vsprintf.c Copyright: 2003, Joerg Wunsch License: BSD3-32 Files: newlib/libc/tinystdio/ftoa_engine.c Copyright: 2005, Dmitry Xmelkov License: BSD3-33 Files: newlib/libm/common/log2l.c newlib/libm/common/logbl.c newlib/libm/common/nexttoward.c newlib/libm/common/nexttowardl.c Copyright: 2014 Mentor Graphics, Inc. License: BSD3-34 Files: newlib/libm/machine/riscv/feclearexcept.c newlib/libm/machine/riscv/fegetenv.c newlib/libm/machine/riscv/fegetexceptflag.c newlib/libm/machine/riscv/fegetround.c newlib/libm/machine/riscv/feholdexcept.c newlib/libm/machine/riscv/feraiseexcept.c newlib/libm/machine/riscv/fesetenv.c newlib/libm/machine/riscv/fesetexceptflag.c newlib/libm/machine/riscv/fesetround.c newlib/libm/machine/riscv/fetestexcept.c newlib/libm/machine/riscv/feupdateenv.c Copyright: 2017 Michael R. Neilly License: BSD3-35 Files: newlib/libm/machine/spu/headers/acos.h newlib/libm/machine/spu/headers/acosd2.h newlib/libm/machine/spu/headers/acosf.h newlib/libm/machine/spu/headers/acosh.h newlib/libm/machine/spu/headers/acoshf.h newlib/libm/machine/spu/headers/asin.h newlib/libm/machine/spu/headers/asind2.h newlib/libm/machine/spu/headers/asinf.h newlib/libm/machine/spu/headers/asinh.h newlib/libm/machine/spu/headers/asinhf.h newlib/libm/machine/spu/headers/atan.h newlib/libm/machine/spu/headers/atan2.h newlib/libm/machine/spu/headers/atan2f.h newlib/libm/machine/spu/headers/atanh.h newlib/libm/machine/spu/headers/atanhf.h newlib/libm/machine/spu/headers/cos.h newlib/libm/machine/spu/headers/cosf.h newlib/libm/machine/spu/headers/cosh.h newlib/libm/machine/spu/headers/coshd2.h newlib/libm/machine/spu/headers/coshf.h newlib/libm/machine/spu/headers/coshf4.h newlib/libm/machine/spu/headers/erf.h newlib/libm/machine/spu/headers/erfc.h newlib/libm/machine/spu/headers/erfcf.h newlib/libm/machine/spu/headers/erff.h newlib/libm/machine/spu/headers/exp.h newlib/libm/machine/spu/headers/exp2.h newlib/libm/machine/spu/headers/expm1.h newlib/libm/machine/spu/headers/expm1f.h newlib/libm/machine/spu/headers/hypot.h newlib/libm/machine/spu/headers/hypotd2.h newlib/libm/machine/spu/headers/hypotf.h newlib/libm/machine/spu/headers/isnan.h newlib/libm/machine/spu/headers/isnand2.h newlib/libm/machine/spu/headers/isnanf.h newlib/libm/machine/spu/headers/isnanf4.h newlib/libm/machine/spu/headers/lgamma.h newlib/libm/machine/spu/headers/lgammaf.h newlib/libm/machine/spu/headers/log.h newlib/libm/machine/spu/headers/log10.h newlib/libm/machine/spu/headers/log1p.h newlib/libm/machine/spu/headers/log1pf.h newlib/libm/machine/spu/headers/log2.h newlib/libm/machine/spu/headers/logbf.h newlib/libm/machine/spu/headers/logbf4.h newlib/libm/machine/spu/headers/nearbyintf.h newlib/libm/machine/spu/headers/nextafter.h newlib/libm/machine/spu/headers/nextafterf.h newlib/libm/machine/spu/headers/pow.h newlib/libm/machine/spu/headers/powf.h newlib/libm/machine/spu/headers/rintf.h newlib/libm/machine/spu/headers/signbit.h newlib/libm/machine/spu/headers/signbitd2.h newlib/libm/machine/spu/headers/simdmath.h newlib/libm/machine/spu/headers/sin.h newlib/libm/machine/spu/headers/sincos.h newlib/libm/machine/spu/headers/sincosf.h newlib/libm/machine/spu/headers/sinf.h newlib/libm/machine/spu/headers/sinh.h newlib/libm/machine/spu/headers/sinhd2.h newlib/libm/machine/spu/headers/sinhf.h newlib/libm/machine/spu/headers/sinhf4.h newlib/libm/machine/spu/headers/sqrtf.h newlib/libm/machine/spu/headers/tan.h newlib/libm/machine/spu/headers/tanf.h newlib/libm/machine/spu/headers/tanh.h newlib/libm/machine/spu/headers/tanhf.h newlib/libm/machine/spu/headers/tgamma.h newlib/libm/machine/spu/headers/tgammaf.h newlib/libm/machine/spu/log2.c newlib/libm/machine/spu/s_asinh.c newlib/libm/machine/spu/s_atan.c newlib/libm/machine/spu/s_cos.c newlib/libm/machine/spu/s_erf.c newlib/libm/machine/spu/s_expm1.c newlib/libm/machine/spu/s_isnan.c newlib/libm/machine/spu/s_log1p.c newlib/libm/machine/spu/s_nextafter.c newlib/libm/machine/spu/s_sin.c newlib/libm/machine/spu/s_tan.c newlib/libm/machine/spu/s_tanh.c newlib/libm/machine/spu/sf_asinh.c newlib/libm/machine/spu/sf_cos.c newlib/libm/machine/spu/sf_erf.c newlib/libm/machine/spu/sf_expm1.c newlib/libm/machine/spu/sf_log1p.c newlib/libm/machine/spu/sf_logb.c newlib/libm/machine/spu/sf_nearbyint.c newlib/libm/machine/spu/sf_nextafter.c newlib/libm/machine/spu/sf_rint.c newlib/libm/machine/spu/sf_sin.c newlib/libm/machine/spu/sf_tan.c newlib/libm/machine/spu/sf_tanh.c newlib/libm/machine/spu/w_acos.c newlib/libm/machine/spu/w_acosh.c newlib/libm/machine/spu/w_asin.c newlib/libm/machine/spu/w_atan2.c newlib/libm/machine/spu/w_atanh.c newlib/libm/machine/spu/w_cosh.c newlib/libm/machine/spu/w_exp.c newlib/libm/machine/spu/w_exp2.c newlib/libm/machine/spu/w_hypot.c newlib/libm/machine/spu/w_lgamma.c newlib/libm/machine/spu/w_log.c newlib/libm/machine/spu/w_log10.c newlib/libm/machine/spu/w_pow.c newlib/libm/machine/spu/w_sincos.c newlib/libm/machine/spu/w_sinh.c newlib/libm/machine/spu/w_tgamma.c newlib/libm/machine/spu/wf_acos.c newlib/libm/machine/spu/wf_acosh.c newlib/libm/machine/spu/wf_asin.c newlib/libm/machine/spu/wf_atan2.c newlib/libm/machine/spu/wf_atanh.c newlib/libm/machine/spu/wf_cosh.c newlib/libm/machine/spu/wf_hypot.c newlib/libm/machine/spu/wf_lgamma.c newlib/libm/machine/spu/wf_pow.c newlib/libm/machine/spu/wf_sincos.c newlib/libm/machine/spu/wf_sinh.c newlib/libm/machine/spu/wf_sqrt.c newlib/libm/machine/spu/wf_tgamma.c Copyright: 2006,2008, International Business Machines Corporation License: BSD3-36 Files: newlib/libm/machine/spu/headers/acosf4.h newlib/libm/machine/spu/headers/asinf4.h newlib/libm/machine/spu/headers/atanf4.h newlib/libm/machine/spu/headers/cos_sin.h newlib/libm/machine/spu/headers/cosd2.h newlib/libm/machine/spu/headers/cosf4.h newlib/libm/machine/spu/headers/divd2.h newlib/libm/machine/spu/headers/divf4.h newlib/libm/machine/spu/headers/exp2d2.h newlib/libm/machine/spu/headers/exp2f4.h newlib/libm/machine/spu/headers/expd2.h newlib/libm/machine/spu/headers/expf4.h newlib/libm/machine/spu/headers/floord2.h newlib/libm/machine/spu/headers/floorf4.h newlib/libm/machine/spu/headers/ldexpd2.h newlib/libm/machine/spu/headers/ldexpf4.h newlib/libm/machine/spu/headers/log10d2.h newlib/libm/machine/spu/headers/log2d2.h newlib/libm/machine/spu/headers/log2f4.h newlib/libm/machine/spu/headers/logd2.h newlib/libm/machine/spu/headers/logf4.h newlib/libm/machine/spu/headers/powd2.h newlib/libm/machine/spu/headers/powf4.h newlib/libm/machine/spu/headers/recipd2.h newlib/libm/machine/spu/headers/recipf4.h newlib/libm/machine/spu/headers/sind2.h newlib/libm/machine/spu/headers/sinf4.h newlib/libm/machine/spu/headers/sqrtd2.h newlib/libm/machine/spu/headers/sqrtf4.h newlib/libm/machine/spu/headers/tand2.h newlib/libm/machine/spu/headers/tanf4.h newlib/libm/machine/spu/headers/truncd2.h newlib/libm/machine/spu/headers/truncf4.h Copyright: 2001,2008, International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, License: BSD3-36 Files: newlib/libm/machine/spu/headers/acoshd2.h newlib/libm/machine/spu/headers/acoshf4.h newlib/libm/machine/spu/headers/asinhd2.h newlib/libm/machine/spu/headers/asinhf4.h newlib/libm/machine/spu/headers/atan2d2.h newlib/libm/machine/spu/headers/atan2f4.h newlib/libm/machine/spu/headers/atand2.h newlib/libm/machine/spu/headers/atanhd2.h newlib/libm/machine/spu/headers/atanhf4.h newlib/libm/machine/spu/headers/erf_utils.h newlib/libm/machine/spu/headers/erfcd2.h newlib/libm/machine/spu/headers/erfcf4.h newlib/libm/machine/spu/headers/erfd2.h newlib/libm/machine/spu/headers/erff4.h newlib/libm/machine/spu/headers/expm1d2.h newlib/libm/machine/spu/headers/expm1f4.h newlib/libm/machine/spu/headers/hypotf4.h newlib/libm/machine/spu/headers/lgammad2.h newlib/libm/machine/spu/headers/lgammaf4.h newlib/libm/machine/spu/headers/log1pd2.h newlib/libm/machine/spu/headers/log1pf4.h newlib/libm/machine/spu/headers/nextafterd2.h newlib/libm/machine/spu/headers/nextafterf4.h newlib/libm/machine/spu/headers/sincosd2.h newlib/libm/machine/spu/headers/sincosf4.h newlib/libm/machine/spu/headers/tanhd2.h newlib/libm/machine/spu/headers/tanhf4.h newlib/libm/machine/spu/headers/tgammad2.h newlib/libm/machine/spu/headers/tgammaf4.h Copyright: 2007,2008, International Business Machines Corporation License: BSD3-36 Files: newlib/libm/machine/spu/headers/nearbyintf4.h newlib/libm/machine/spu/headers/rintf4.h newlib/libm/machine/spu/headers/scalbnf4.h Copyright: 2006,2008, International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, License: BSD3-36 Files: .clang-format .gitattributes .github/Dockerfile .github/do-build .github/do-test .github/workflows/fortity-source.yml .github/workflows/macos.yml .github/workflows/minsize.yml .github/workflows/release.yml .gitignore README.md cross.tmpl doc/build.md doc/embedsource.md doc/init.md doc/linking.md doc/os.md doc/picolibc.svg doc/printf.md doc/releasing.md doc/testing.md doc/tls.md doc/using.md hello-world/README.md newlib/HOWTO newlib/README newlib/doc/doc.str newlib/libc/ctype/ctype.tex newlib/libc/include/sys/_tz_structs.h newlib/libc/libc.in.xml newlib/libc/machine/necv70/necv70.tex newlib/libc/machine/nvptx/clock.c newlib/libc/ssp/ssp.tex newlib/libc/stdlib/mul_overflow.h newlib/libc/string/wcstrings.tex newlib/libc/sys.tex newlib/libc/time/strftime.c newlib/libc/xdr/README newlib/libm/complex/complex.tex newlib/libm/fenv/fenv.tex newlib/libm/libm.in.xml newlib/newlib.hin picolibc.ld.in picolibc.specs.in scripts/cross-aarch64-linux-gnu.txt scripts/cross-aarch64-zephyr-elf.txt scripts/cross-arm-none-eabi.txt scripts/cross-arm-zephyr-eabi.txt scripts/cross-clang-riscv64-unknown-elf.txt scripts/cross-clang-rv32imafdc-unknown-elf.txt scripts/cross-clang-thumbv7e+fp-none-eabi.txt scripts/cross-clang-thumbv7m-none-eabi.txt scripts/cross-i686-linux-gnu.txt scripts/cross-powerpc64le-linux-gnu.txt scripts/cross-riscv64-unknown-elf.txt scripts/cross-riscv64-zephyr-elf.txt scripts/cross-rv32imac.txt scripts/cross-x86_64-linux-gnu.txt scripts/cross-xtensa-esp32-elf.txt scripts/cross-xtensa-lx106-elf.txt scripts/monitor-e9 semihost/machine/i386/bios.ld test/complex-funcs.c Copyright: 2020 The Newlib Project License: Default-1 Files: newlib/doc/chapter-texi2docbook.py newlib/doc/makedocbook.py Copyright: 2016 Jon Turney License: Default-1 Files: newlib/libc/ctype/categories.c newlib/libc/ctype/categories.h Copyright: 2017 Thomas Wolff towo@towo.net License: Default-1 Files: newlib/libc/ctype/ctype_.h newlib/libc/ctype/isalnum_l.c newlib/libc/ctype/isalpha_l.c newlib/libc/ctype/isascii_l.c newlib/libc/ctype/isblank_l.c newlib/libc/ctype/iscntrl_l.c newlib/libc/ctype/isdigit_l.c newlib/libc/ctype/islower_l.c newlib/libc/ctype/isprint_l.c newlib/libc/ctype/ispunct_l.c newlib/libc/ctype/isspace_l.c newlib/libc/ctype/isupper_l.c newlib/libc/ctype/iswalnum_l.c newlib/libc/ctype/iswalpha_l.c newlib/libc/ctype/iswblank_l.c newlib/libc/ctype/iswcntrl_l.c newlib/libc/ctype/iswctype_l.c newlib/libc/ctype/iswdigit_l.c newlib/libc/ctype/iswgraph_l.c newlib/libc/ctype/iswlower_l.c newlib/libc/ctype/iswprint_l.c newlib/libc/ctype/iswpunct_l.c newlib/libc/ctype/iswspace_l.c newlib/libc/ctype/iswupper_l.c newlib/libc/ctype/iswxdigit_l.c newlib/libc/ctype/isxdigit_l.c newlib/libc/ctype/toascii_l.c newlib/libc/ctype/tolower_l.c newlib/libc/ctype/toupper_l.c newlib/libc/ctype/towctrans_l.c newlib/libc/ctype/towlower_l.c newlib/libc/ctype/towupper_l.c newlib/libc/ctype/wctrans_l.c newlib/libc/ctype/wctype_l.c newlib/libc/include/sys/_locale.h newlib/libc/string/strcasecmp_l.c newlib/libc/string/strcoll_l.c newlib/libc/string/strncasecmp_l.c newlib/libc/string/strxfrm_l.c newlib/libc/string/wcscasecmp_l.c newlib/libc/string/wcscoll_l.c newlib/libc/string/wcsncasecmp_l.c newlib/libc/string/wcsxfrm_l.c Copyright: 2016 Corinna Vinschen License: Default-1 Files: newlib/libc/ctype/ctype_cp.h newlib/libc/ctype/ctype_iso.h newlib/libc/stdlib/mbsnrtowcs.c newlib/libc/stdlib/sb_charsets.c newlib/libc/stdlib/wcsnrtombs.c newlib/libc/string/local.h newlib/libc/string/wcscasecmp.c newlib/libc/string/wcsdup.c newlib/libc/string/wcsncasecmp.c Copyright: 2009 Corinna Vinschen License: Default-1 Files: newlib/libc/ctype/isblank.c newlib/libc/stdlib/btowc.c newlib/libc/stdlib/mbrlen.c newlib/libc/stdlib/mbrtowc.c newlib/libc/stdlib/mbsinit.c newlib/libc/stdlib/mbsrtowcs.c newlib/libc/stdlib/wcrtomb.c newlib/libc/stdlib/wcsrtombs.c newlib/libc/stdlib/wctob.c newlib/libm/math/s_sincos.c newlib/libm/math/sf_sincos.c Copyright: 2002 Thomas Fitzsimmons License: Default-1 Files: newlib/libc/ctype/mkcaseconv newlib/libc/ctype/mkcategories newlib/libc/ctype/mkunidata newlib/libc/string/mkunidata newlib/libc/string/mkwide newlib/libc/string/mkwidthA Copyright: 2018 Thomas Wolff License: Default-1 Files: newlib/libc/include/_newlib_version.h Copyright: 2016 Jeff Johnston License: Default-1 Files: newlib/libc/include/alloca.h Copyright: 2000 Werner Almesberger License: Default-1 Files: newlib/libc/include/cpio.h newlib/libm/complex/clog10.c newlib/libm/complex/clog10f.c newlib/libm/complex/clog10l.c Copyright: 2016 Yaakov Selkowitz License: Default-1 Files: newlib/libc/include/libgen.h newlib/libc/include/sys/string.h newlib/libc/time/gettzinfo.c Copyright: 2005 Jeff Johnston License: Default-1 Files: newlib/libc/include/limits.h newlib/libc/include/machine/malloc.h newlib/libc/include/machine/stdlib.h newlib/libc/include/machine/termios.h newlib/libc/include/sys/lock.h newlib/libc/include/wctype.h newlib/libc/reent/getreent.c newlib/libc/stdlib/_Exit.c newlib/libc/stdlib/a64l.c newlib/libc/stdlib/l64a.c newlib/libc/string/memccpy.c newlib/libc/string/mempcpy.c newlib/libc/string/strdup.c newlib/libc/string/strdup_r.c newlib/libc/string/strerror_r.c newlib/libc/string/strndup.c newlib/libc/string/strndup_r.c newlib/libc/string/strnlen.c newlib/libc/time/local.h newlib/libc/time/tzset.c newlib/testsuite/newlib.wctype/tiswctype.c newlib/testsuite/newlib.wctype/twctrans.c Copyright: 2002 Jeff Johnston License: Default-1 Files: newlib/libc/include/machine/_default_types.h newlib/libc/machine/spu/creat.c newlib/libc/machine/spu/sys/errno.h newlib/libc/machine/spu/sys/sched.h newlib/libc/machine/spu/sys/syscall.h newlib/libc/machine/spu/sys/uio.h newlib/libc/machine/spu/sys/utime.h Copyright: 2007 Patrick Mansfield License: Default-1 Files: newlib/libc/include/machine/_endian.h newlib/libc/include/machine/_time.h newlib/libc/include/memory.h Copyright: 2016 Sebastian Huber License: Default-1 Files: newlib/libc/include/machine/_types.h Copyright: 2005 Ralf Corsepious License: Default-1 Files: newlib/libc/include/machine/ansi.h Copyright: 2001 Jeff Johnston License: Default-1 Files: newlib/libc/include/machine/endian.h newlib/libc/include/machine/param.h newlib/libc/machine/arm/machine/param.h Copyright: 2004 Jeff Johnston License: Default-1 Files: newlib/libc/include/ssp/stdlib.h newlib/libc/include/ssp/wchar.h newlib/libc/ssp/stack_protector.c newlib/libc/string/wmempcpy.c Copyright: 2017 Yaakov Selkowitz License: Default-1 Files: newlib/libc/include/sys/_default_fcntl.h newlib/libc/include/sys/custom_file.h newlib/libc/machine/i386/machine/fastmath.h Copyright: 2007 Jeff Johnston License: Default-1 Files: newlib/libc/include/sys/dir.h Copyright: 2010 Yaakov Selkowitz License: Default-1 Files: newlib/libc/include/tar.h Copyright: 2007 Ralf Corsepius License: Default-1 Files: newlib/libc/machine/arm/setjmp.S newlib/libc/machine/xscale/setjmp.S Copyright: 1997 Nick Clifton, Cygnus Solutions License: Default-1 Files: newlib/libc/machine/cr16/setjmp.S newlib/libc/machine/crx/setjmp.S Copyright: 2004 National Semiconductor Corporation License: Default-1 Files: newlib/libc/machine/frv/setjmp.S Copyright: 2002 Dave Brolley License: Default-1 Files: newlib/libc/machine/h8300/h8sx_strcpy.S Copyright: 2003 Richard Sandiford License: Default-1 Files: newlib/libc/machine/h8300/setarch.h Copyright: 2003 Kazu Hirata License: Default-1 Files: newlib/libc/machine/iq2000/setjmp.S Copyright: 2003 Anthony Green License: Default-1 Files: newlib/libc/machine/m68k/m68kasm.h Copyright: 2008 Jeff Johnston License: Default-1 Files: newlib/libc/machine/mep/setjmp.S Copyright: 2003 DJ Delorie, Red Hat Inc. License: Default-1 Files: newlib/libc/machine/microblaze/mb_endian.h Copyright: 2013 Corinna Vinschen License: Default-1 Files: newlib/libc/machine/mt/setjmp.S Copyright: 2005 Aldy Hernandez License: Default-1 Files: newlib/libc/machine/rx/memchr.S newlib/libc/machine/rx/memcpy.S newlib/libc/machine/rx/memmove.S newlib/libc/machine/rx/mempcpy.S newlib/libc/machine/rx/memset.S newlib/libc/machine/rx/setjmp.S newlib/libc/machine/rx/strcat.S newlib/libc/machine/rx/strcmp.S newlib/libc/machine/rx/strcpy.S newlib/libc/machine/rx/strlen.S newlib/libc/machine/rx/strncat.S newlib/libc/machine/rx/strncmp.S newlib/libc/machine/rx/strncpy.S Copyright: 2009 Nick Clifton License: Default-1 Files: newlib/libc/machine/sh/memcpy.S newlib/libc/machine/sh/memset.S newlib/libc/machine/sh/strcmp.S newlib/libc/machine/sh/strcpy.S newlib/libc/machine/sh/strlen.S Copyright: 2002 SuperH Ltd. License: Default-1 Files: newlib/libc/machine/sh/strncpy.S Copyright: 2003 SuperH Ltd. License: Default-1 Files: newlib/libc/machine/spu/assert.c newlib/libc/machine/spu/impure.c newlib/libc/machine/spu/sleep.c Copyright: 2008 Patrick Mansfield License: Default-1 Files: newlib/libc/machine/spu/usleep.c Copyright: 2002 Jeff Johnston License: Default-1 Files: newlib/libc/machine/spu/vfiprintf.c newlib/libc/machine/spu/vfiscanf.c newlib/libc/machine/spu/viprintf.c newlib/libc/machine/spu/viscanf.c newlib/libc/machine/spu/vsiprintf.c newlib/libc/machine/spu/vsiscanf.c newlib/libc/machine/spu/vsniprintf.c Copyright: 2007 Kazunori Asayama License: Default-1 Files: newlib/libc/machine/xscale/memchr.c newlib/libc/machine/xscale/memcmp.c newlib/libc/machine/xscale/memcpy.c newlib/libc/machine/xscale/memmove.c newlib/libc/machine/xscale/memset.c newlib/libc/machine/xscale/strchr.c newlib/libc/machine/xscale/strcmp.c newlib/libc/machine/xscale/strcpy.c newlib/libc/machine/xscale/strlen.c newlib/libc/machine/xscale/xscale.h Copyright: 2000 Nick Clifton License: Default-1 Files: newlib/libc/machine/xstormy16/mallocr.c newlib/libc/machine/xstormy16/tiny-malloc.c Copyright: 2002 Geoffrey Keating License: Default-1 Files: newlib/libc/misc/lock.c Copyright: 2016 Thomas Preud'homme License: Default-1 Files: newlib/libc/search/bsd_qsort_r.c newlib/libc/search/qsort_r.c newlib/libc/stdio/stdio_ext.c Copyright: 2014 Yaakov Selkowitz License: Default-1 Files: newlib/libc/signal/psignal.c Copyright: 2002, 2011 Red Hat Inc. License: Default-1 Files: newlib/libc/ssp/chk_fail.c Copyright: 2017 Yaakov Selkowitz License: Default-1 Files: newlib/libc/stdio/getdelim.c newlib/libc/stdio/getline.c Copyright: 2002, Red Hat Inc. - License: Default-1 Files: newlib/libc/stdio/stdio_ext.h Copyright: 2011 Yaakov Selkowitz License: Default-1 Files: newlib/libc/stdio64/fdopen64.c Copyright: 2003 Christopher Faylor License: Default-1 Files: newlib/libc/stdlib/__atexit.c newlib/libc/stdlib/__call_atexit.c newlib/libc/stdlib/cxa_atexit.c newlib/libc/stdlib/cxa_finalize.c Copyright: 2004 Paul Brook License: Default-1 Files: newlib/libc/stdlib/abort.c newlib/libc/stdlib/abs.c newlib/libc/stdlib/assert.c newlib/libc/stdlib/atexit.c newlib/libc/stdlib/atexit.h newlib/libc/stdlib/atof.c newlib/libc/stdlib/atoff.c newlib/libc/stdlib/atoi.c newlib/libc/stdlib/atol.c newlib/libc/stdlib/calloc.c newlib/libc/stdlib/ecvtbuf.c newlib/libc/stdlib/efgcvt.c newlib/libc/stdlib/eprintf.c newlib/libc/stdlib/exit.c newlib/libc/stdlib/labs.c newlib/libc/stdlib/local.h newlib/libc/stdlib/malign.c newlib/libc/stdlib/malloc.c newlib/libc/stdlib/mallocr.c newlib/libc/stdlib/mbctype.h newlib/libc/stdlib/mblen.c newlib/libc/stdlib/mbstowcs.c newlib/libc/stdlib/mbtowc.c newlib/libc/stdlib/mbtowc_r.c newlib/libc/stdlib/msize.c newlib/libc/stdlib/mstats.c newlib/libc/stdlib/mtrim.c newlib/libc/stdlib/on_exit.c newlib/libc/stdlib/rand.c newlib/libc/stdlib/rand_r.c newlib/libc/stdlib/realloc.c newlib/libc/stdlib/srand.c newlib/libc/stdlib/std.h newlib/libc/stdlib/stdlib.tex newlib/libc/stdlib/system.c newlib/libc/stdlib/valloc.c newlib/libc/stdlib/wcstombs.c newlib/libc/stdlib/wctomb.c newlib/libc/stdlib/wctomb_r.c Copyright: 1990 Regents of the University of California. License: Default-1 Files: newlib/libc/stdlib/getenv_r.c newlib/libc/stdlib/putenv_r.c newlib/libc/stdlib/setenv_r.c Copyright: 1991 DJ Delorie. License: Default-1 Files: newlib/libc/stdlib/itoa.c newlib/libc/stdlib/utoa.c Copyright: 2014 Corinna Vinschen License: Default-1 Files: newlib/libc/stdlib/on_exit_args.c newlib/libc/stdlib/on_exit_args.h Copyright: 2015 Freddie Chopin License: Default-1 Files: newlib/libc/stdlib/random.c newlib/libc/stdlib/srandom.c Copyright: 2016 Joel Sherrill License: Default-1 Files: newlib/libc/string/memrchr.c Copyright: 2012 Corinna Vinschen License: Default-1 Files: newlib/libc/string/rawmemchr.c Copyright: 2013 Yaakov Selkowitz License: Default-1 Files: newlib/libc/string/stpcpy.c newlib/libc/string/stpncpy.c newlib/libc/string/wcpcpy.c newlib/libc/string/wcpncpy.c newlib/libc/string/wcsxfrm.c Copyright: 2007 Corinna Vinschen License: Default-1 Files: newlib/libc/string/strchrnul.c Copyright: 2011 Corinna Vinschen License: Default-1 Files: newlib/libc/string/strnstr.c Copyright: 2017 Sichen Zhao <1473996754@qq.com> License: Default-1 Files: newlib/libc/string/strsep.c Copyright: 2002, Red Hat Inc. License: Default-1 Files: newlib/libc/string/swab.c Copyright: 2000 Alexandre Oliva License: Default-1 Files: newlib/libc/string/uniset Copyright: 2018 Markus Kuhn License: Default-1 Files: newlib/libc/string/wcscoll.c newlib/libc/string/wcswidth.c newlib/libc/string/wcwidth.c Copyright: 2003 Corinna Vinschen License: Default-1 Files: newlib/libc/string/xpg_strerror_r.c Copyright: 2011 Eric Blake License: Default-1 Files: newlib/libc/time/month_lengths.c newlib/libc/time/tzcalc_limits.c Copyright: 2002 Arthur David Olson License: Default-1 Files: newlib/libc/time/tzvars.c Copyright: 2005 Tom Walsh License: Default-1 Files: newlib/libc/time/wcsftime.c Copyright: 2009 Craig Howland License: Default-1 Files: newlib/libm/fenv/fenv_stub.c Copyright: 2019 Joel Sherrill License: Default-1 Files: newlib/libm/machine/shared_x86/fenv.c Copyright: 2010-2019 Red Hat, Inc. License: Default-1 Files: newlib/libc/include/fenv.h newlib/libc/machine/riscv/ieeefp.c newlib/libc/machine/riscv/memcpy.c newlib/libc/machine/riscv/memset.S newlib/libc/machine/riscv/setjmp.S newlib/libc/machine/riscv/strcmp.S newlib/libc/machine/riscv/strcpy.c newlib/libc/machine/riscv/strlen.c newlib/libc/machine/riscv/sys/asm.h newlib/libc/machine/riscv/sys/fenv.h newlib/libc/machine/riscv/sys/string.h Copyright: 2017 SiFive Inc. License: FreeBSD-1 Files: newlib/libc/machine/csky/setjmp.S Copyright: 2020 C-SKY Microsystems License: FreeBSD-1 Files: newlib/libc/machine/riscv/memcpy-asm.S newlib/libc/machine/riscv/memmove-stub.c newlib/libc/machine/riscv/memmove.S Copyright: 2019 SiFive Inc. License: FreeBSD-1 Files: test/printf-tests.c test/testcases.c Copyright: 2013 Bart Massey License: GPL2-1 Files: newlib/libc/argz/argz_add.c newlib/libc/argz/argz_add_sep.c newlib/libc/argz/argz_append.c newlib/libc/argz/argz_count.c newlib/libc/argz/argz_create.c newlib/libc/argz/argz_create_sep.c newlib/libc/argz/argz_delete.c newlib/libc/argz/argz_extract.c newlib/libc/argz/argz_next.c newlib/libc/argz/argz_replace.c newlib/libc/argz/argz_stringify.c newlib/libc/argz/buf_findstr.c newlib/libc/argz/buf_findstr.h newlib/libc/argz/envz_add.c newlib/libc/argz/envz_entry.c newlib/libc/argz/envz_get.c newlib/libc/argz/envz_merge.c newlib/libc/argz/envz_remove.c newlib/libc/argz/envz_strip.c newlib/libc/include/argz.h newlib/libc/include/envz.h newlib/libc/machine/xscale/machine/profile.h newlib/libm/common/s_fdim.c newlib/libm/common/s_fma.c newlib/libm/common/s_fmax.c newlib/libm/common/s_fmin.c newlib/libm/common/s_signbit.c newlib/libm/common/sf_fdim.c newlib/libm/common/sf_fma.c newlib/libm/common/sf_fmax.c newlib/libm/common/sf_fmin.c newlib/libm/machine/spu/sf_fpclassify.c newlib/testsuite/config/default.exp newlib/testsuite/include/check.h newlib/testsuite/lib/checkoutput.exp newlib/testsuite/lib/newlib.exp newlib/testsuite/lib/passfail.exp newlib/testsuite/newlib.elix/elix.exp newlib/testsuite/newlib.elix/tmmap.c newlib/testsuite/newlib.locale/UTF-8.c newlib/testsuite/newlib.locale/UTF-8.exp newlib/testsuite/newlib.locale/locale.exp newlib/testsuite/newlib.search/hsearchtest.exp newlib/testsuite/newlib.stdlib/atexit.c newlib/testsuite/newlib.stdlib/atexit.exp newlib/testsuite/newlib.string/string.exp newlib/testsuite/newlib.string/tstring.c newlib/testsuite/newlib.wctype/twctype.c newlib/testsuite/newlib.wctype/wctype.exp Copyright: 2002 Red Hat, Incorporated. License: Other-1 Files: newlib/libc/argz/argz_insert.c Copyright: 2002, 2005 Red Hat, Incorporated. License: Other-1 Files: newlib/libc/include/inttypes.h newlib/libc/include/stdint.h newlib/libc/include/sys/_intsup.h newlib/libc/include/sys/_stdint.h Copyright: 2004, 2005 by Ralf Corsepius, Ulm/Germany. License: Other-1 Files: newlib/libc/include/wordexp.h Copyright: 2002, 2010 Red Hat, Incorporated. License: Other-1 Files: newlib/libc/machine/i386/memchr.S newlib/libc/machine/i386/memset.S newlib/libc/machine/i386/strchr.S newlib/libc/machine/i386/strlen.S Copyright: 1998, 2002, 2008 Red Hat Inc. License: Other-1 Files: newlib/libc/machine/i386/memcmp.S newlib/libc/machine/i386/memcpy.S newlib/libc/machine/i386/memmove.S newlib/libm/machine/i386/f_atan2.S newlib/libm/machine/i386/f_atan2f.S newlib/libm/machine/i386/f_exp.c newlib/libm/machine/i386/f_expf.c newlib/libm/machine/i386/f_frexp.S newlib/libm/machine/i386/f_frexpf.S newlib/libm/machine/i386/f_ldexp.S newlib/libm/machine/i386/f_ldexpf.S newlib/libm/machine/i386/f_log.S newlib/libm/machine/i386/f_log10.S newlib/libm/machine/i386/f_log10f.S newlib/libm/machine/i386/f_logf.S newlib/libm/machine/i386/f_math.h newlib/libm/machine/i386/f_pow.c newlib/libm/machine/i386/f_powf.c newlib/libm/machine/i386/f_tan.S newlib/libm/machine/i386/f_tanf.S newlib/libm/machine/i386/i386mach.h Copyright: 1998, 2002 Red Hat Inc. License: Other-1 Files: newlib/libc/machine/x86_64/memcpy.S newlib/libc/machine/x86_64/memset.S newlib/libc/machine/x86_64/setjmp.S newlib/libc/machine/x86_64/x86_64mach.h Copyright: 2007 Ellips BV. License: Other-1 Files: newlib/libc/machine/xstormy16/setjmp.S Copyright: 2001 Red Hat, Incorporated. License: Other-1 Files: newlib/libc/posix/basename.c newlib/libc/posix/dirname.c Copyright: 2005 Shaun Jackman License: Other-1 Files: newlib/libc/stdio/asniprintf.c newlib/libc/stdio/asnprintf.c newlib/libc/stdio/vasniprintf.c Copyright: 2007, 2008 Eric Blake License: Other-1 Files: newlib/libc/stdio/diprintf.c Copyright: 2005, 2007 Shaun Jackman License: Other-1 Files: newlib/libc/stdio/dprintf.c newlib/libc/stdio/vdiprintf.c newlib/libc/stdio/vdprintf.c Copyright: 2005, 2007 Shaun Jackman License: Other-1 Files: newlib/libc/stdio/fmemopen.c newlib/libc/stdio/fopencookie.c newlib/libc/stdio/funopen.c newlib/libc/stdio/open_memstream.c newlib/libc/stdio/vasnprintf.c Copyright: 2007 Eric Blake License: Other-1 Files: newlib/libc/stdio/fpurge.c Copyright: 2009 Eric Blake License: Other-1 Files: newlib/libc/string/gnu_basename.c Copyright: 2015 Red Hat, Inc. License: Other-1 Files: newlib/libc/string/str-two-way.h Copyright: 2008, 2010 Eric Blake License: Other-1 Files: newlib/libm/common/s_fpclassify.c newlib/libm/common/sf_fpclassify.c Copyright: 2002, 2007 Red Hat, Incorporated. License: Other-1 Files: newlib/libm/common/sl_finite.c newlib/libm/complex/cabsl.c newlib/libm/complex/cimagl.c newlib/libm/complex/creall.c newlib/libm/math/sl_hypot.c Copyright: 2015 Red Hat, Incorporated. License: Other-1 Files: newlib/testsuite/lib/flags.exp Copyright: 2002, 2011 Red Hat, Incorporated. License: Other-1 Files: newlib/testsuite/newlib.stdio/nulprintf.c Copyright: 2014 ARM Ltd. License: Other-1 Files: newlib/testsuite/newlib.stdio/stdio.exp newlib/testsuite/newlib.stdio/swprintf.c Copyright: 2011 ARM Ltd. License: Other-1 Files: newlib/testsuite/newlib.stdlib/size_max.c newlib/testsuite/newlib.stdlib/stdlib.exp Copyright: 2008 CodeSourcery, Inc. License: Other-1 Files: newlib/libc/include/complex.h Copyright: 2010 Matthias Drochner. License: Other-2 Files: newlib/libc/string/explicit_bzero.c Copyright: 2014 Ted Unangst License: Other-2 Files: newlib/libc/include/elf.h newlib/libc/string/strverscmp.c newlib/libm/common/nexttowardf.c Copyright: 2005-2014 Rich Felker, et al. License: Other-3 Files: newlib/libc/include/ftw.h newlib/libc/posix/ftw.c newlib/libc/posix/nftw.c Copyright: 2005-2020 Rich Felker, et al. License: Other-3 Files: newlib/libc/machine/xtensa/machine/core-isa.h Copyright: 1999-2010 Tensilica Inc. License: Other-3 Files: newlib/libc/machine/xtensa/memcpy.S Copyright: 2002-2008 Tensilica Inc. License: Other-3 Files: newlib/libc/machine/xtensa/memset.S newlib/libc/machine/xtensa/strcpy.S newlib/libc/machine/xtensa/strlen.S newlib/libc/machine/xtensa/strncpy.S Copyright: 2001-2008 Tensilica Inc. License: Other-3 Files: newlib/libc/machine/xtensa/setjmp.S Copyright: 2001-2006 Tensilica Inc. License: Other-3 Files: newlib/libc/machine/xtensa/strcmp.S Copyright: 2001-20012 Tensilica Inc. License: Other-3 Files: newlib/libc/machine/xtensa/xtensa-asm.h Copyright: 2006 Tensilica Inc. License: Other-3 Files: test/libc-testsuite/basename.c test/libc-testsuite/dirname.c test/libc-testsuite/fnmatch.c test/libc-testsuite/qsort.c test/libc-testsuite/snprintf.c test/libc-testsuite/sscanf.c test/libc-testsuite/string.c test/libc-testsuite/strtod.c test/libc-testsuite/strtol.c Copyright: 2005-2020 Rich Felker License: Other-3 Files: newlib/libc/include/getopt.h Copyright: 1997 Gregory Pietsch License: Other-4 Files: newlib/libc/include/machine/_arc4random.h newlib/libc/stdlib/arc4random.c newlib/libc/stdlib/chacha_private.h Copyright: 1996, David Mazieres 2008, Damien Miller 2013, Markus Friedl 2014, Theo de Raadt License: Other-5 Files: newlib/libc/stdlib/arc4random_uniform.c Copyright: 2008, Damien Miller License: Other-5 Files: newlib/libc/stdlib/reallocarray.c Copyright: 2008 Otto Moerbeek License: Other-5 Files: newlib/libc/string/timingsafe_bcmp.c Copyright: 2010 Damien Miller. License: Other-5 Files: newlib/libc/string/timingsafe_memcmp.c Copyright: 2014 Google Inc. License: Other-5 Files: newlib/libc/include/machine/fastmath.h newlib/libc/include/machine/ieeefp.h newlib/libc/include/machine/setjmp-dj.h newlib/libc/include/machine/setjmp.h newlib/libc/include/machine/time.h newlib/libc/include/machine/types.h newlib/libc/machine/i386/setjmp.S Copyright: 1991 DJ Delorie License: Other-6 Files: newlib/libc/include/sched.h newlib/libc/include/sys/sched.h Copyright: 1989-2010. On-Line Applications Research Corporation (OAR). License: Other-7 Files: newlib/libc/include/sys/features.h Copyright: 1989-2014. On-Line Applications Research Corporation (OAR). License: Other-7 Files: newlib/libc/string/strsignal.c Copyright: 2010, 2017. On-Line Applications Research Corporation (OAR). License: Other-7 Files: newlib/libc/machine/amdgcn/abort.c newlib/libc/machine/amdgcn/atexit.c newlib/libc/machine/amdgcn/exit.c newlib/libc/machine/amdgcn/getreent.c newlib/libc/machine/amdgcn/signal.c newlib/libc/machine/msp430/tiny-puts.c Copyright: 2014-2017 Mentor Graphics. License: Other-8 Files: newlib/libc/machine/amdgcn/exit-value.h newlib/libc/machine/amdgcn/malloc_support.c Copyright: 2017 Mentor Graphics. License: Other-8 Files: newlib/libc/machine/bfin/longjmp.S newlib/libc/machine/bfin/setjmp.S Copyright: 2006 Analog Devices, Inc. License: Other-8 Files: newlib/libc/machine/cr16/getenv.c newlib/libc/machine/cr16/sys/libh.h newlib/libc/machine/cr16/sys/syscall.h newlib/libc/machine/crx/getenv.c newlib/libc/machine/crx/sys/asm.h newlib/libc/machine/crx/sys/libh.h newlib/libc/machine/crx/sys/syscall.h Copyright: 2004 National Semiconductor Corporation License: Other-8 Files: newlib/libc/machine/cr16/sys/asm.h Copyright: 2012 National Semiconductor Corporation License: Other-8 Files: newlib/libc/machine/ft32/memcpy.S newlib/libc/machine/ft32/memset.S newlib/libc/machine/ft32/setjmp.S newlib/libc/machine/ft32/stpcmp.S newlib/libc/machine/ft32/strcmp.S newlib/libc/machine/ft32/strcpy.S newlib/libc/machine/ft32/strlen.S Copyright: 2014 FTDI (support@ftdichip.com) License: Other-8 Files: newlib/libc/machine/m68hc11/setjmp.S Copyright: 1999, 2000, 2001, 2002 Stephane Carrez (stcarrez@nerim.fr) License: Other-8 Files: newlib/libc/machine/m68k/memcpy.S newlib/libc/machine/m68k/memset.S Copyright: 2007 mocom software GmbH & Co KG) License: Other-8 Files: newlib/libc/machine/mips/strlen.c Copyright: 2001, 2002 Red Hat, Inc. License: Other-8 Files: newlib/libc/machine/mips/strncpy.c Copyright: 2001 Red Hat, Inc. License: Other-8 Files: newlib/libc/machine/moxie/setjmp.S Copyright: 2009, 2019 Anthony Green License: Other-8 Files: newlib/libc/machine/nvptx/abort.c newlib/libc/machine/nvptx/calloc.c newlib/libc/machine/nvptx/callocr.c newlib/libc/machine/nvptx/exit.c newlib/libc/machine/nvptx/mallocr.c newlib/libc/machine/nvptx/misc.c newlib/libc/machine/nvptx/reallocr.c newlib/libc/machine/nvptx/write.c Copyright: 2014-2018 Mentor Graphics. License: Other-8 Files: newlib/libc/machine/nvptx/assert.c newlib/libc/machine/nvptx/free.c newlib/libc/machine/nvptx/malloc.c newlib/libc/machine/nvptx/realloc.c Copyright: 2016-2018 Mentor Graphics. License: Other-8 Files: newlib/libc/machine/nvptx/printf.c newlib/libc/machine/nvptx/putchar.c newlib/libc/machine/nvptx/puts.c Copyright: 2015-2018 Mentor Graphics. License: Other-8 Files: newlib/libc/machine/cris/include/pthread.h newlib/libc/machine/cris/sys/errno.h newlib/libc/machine/cris/sys/fcntl.h newlib/libc/machine/cris/sys/signal.h Copyright: 2001, 2004, 2005 Axis Communications AB. License: Other-9 Files: newlib/libc/machine/cris/libcdtor.c Copyright: 1999, 2000, 2003, 2004, 2005 Axis Communications. License: Other-9 Files: newlib/libc/machine/cris/memcpy.c Copyright: 1994-2005 Axis Communications. License: Other-9 Files: newlib/libc/machine/cris/memmove.c Copyright: 2000-2005 Axis Communications. License: Other-9 Files: newlib/libc/machine/cris/memset.c Copyright: 1999-2005 Axis Communications. License: Other-9 Files: newlib/libc/machine/cris/setjmp.c Copyright: 1993-2005 Axis Communications. License: Other-9 Files: newlib/testsuite/newlib.string/memmove1.c Copyright: 2005 Axis Communications. License: Other-9 Files: newlib/libc/machine/hppa/memchr.S newlib/libc/machine/hppa/memcmp.S newlib/libc/machine/hppa/memcpy.S newlib/libc/machine/hppa/memset.S newlib/libc/machine/hppa/pcc_prefix.s newlib/libc/machine/hppa/strcat.S newlib/libc/machine/hppa/strcmp.S newlib/libc/machine/hppa/strcpy.S newlib/libc/machine/hppa/strlen.S newlib/libc/machine/hppa/strncat.S newlib/libc/machine/hppa/strncmp.S newlib/libc/machine/hppa/strncpy.S Copyright: 1986 HEWLETT-PACKARD COMPANY License: Other-10 Files: newlib/libc/machine/i960/memccpy.S newlib/libc/machine/i960/memccpy_ca.S newlib/libc/machine/i960/memchr.S newlib/libc/machine/i960/memchr_ca.S newlib/libc/machine/i960/memcmp.S newlib/libc/machine/i960/memcmp_ca.S newlib/libc/machine/i960/memcpy.S newlib/libc/machine/i960/memcpy_ca.S newlib/libc/machine/i960/memset.S newlib/libc/machine/i960/setjmp.S newlib/libc/machine/i960/strchr.S newlib/libc/machine/i960/strchr_ca.S newlib/libc/machine/i960/strcmp.S newlib/libc/machine/i960/strcmp_ca.S newlib/libc/machine/i960/strcpy.S newlib/libc/machine/i960/strcpy_ca.S newlib/libc/machine/i960/strcspn.S newlib/libc/machine/i960/strdup.S newlib/libc/machine/i960/strlen.S newlib/libc/machine/i960/strlen_ca.S newlib/libc/machine/i960/strncat.S newlib/libc/machine/i960/strncat_ca.S newlib/libc/machine/i960/strncmp.S newlib/libc/machine/i960/strncmp_ca.S newlib/libc/machine/i960/strncpy.S newlib/libc/machine/i960/strncpy_ca.S newlib/libc/machine/i960/strpbrk.S newlib/libc/machine/i960/strrchr.S Copyright: 1993 Intel Corporation License: Other-11 Files: newlib/libc/machine/msp430/setjmp.S Copyright: 2013 Red Hat, Inc. License: Other-12 Files: newlib/libc/machine/powerpc/atosfix16.c newlib/libc/machine/powerpc/atosfix32.c newlib/libc/machine/powerpc/atosfix64.c newlib/libc/machine/powerpc/atoufix16.c newlib/libc/machine/powerpc/atoufix32.c newlib/libc/machine/powerpc/atoufix64.c newlib/libc/machine/powerpc/fix64.h newlib/libc/machine/powerpc/simdldtoa.c newlib/libc/machine/powerpc/strtosfix16.c newlib/libc/machine/powerpc/strtosfix32.c newlib/libc/machine/powerpc/strtosfix64.c newlib/libc/machine/powerpc/strtoufix16.c newlib/libc/machine/powerpc/strtoufix32.c newlib/libc/machine/powerpc/strtoufix64.c newlib/libc/machine/powerpc/ufix64toa.c newlib/libc/stdlib/ldtoa.c Copyright: 1984,2000 S.L. Moshier License: Other-13 Files: newlib/libc/machine/tic4x/setjmp.S Copyright: 2004 Michael Hayes . License: Other-14 Files: newlib/libc/machine/xc16x/putchar.c newlib/libc/machine/xc16x/puts.c newlib/libc/machine/xc16x/setjmp.S Copyright: 2006 KPIT Cummins 2009 Conny Marco Menebröcker License: Other-15 Files: newlib/libc/machine/z8k/memcmp.S newlib/libc/machine/z8k/memcpy.S newlib/libc/machine/z8k/memmove.S newlib/libc/machine/z8k/memset.S Copyright: 2004 Christian Groessler License: Other-16 Files: newlib/libc/misc/fini.c Copyright: 2010 CodeSourcery, Inc. License: Other-16 Files: newlib/libc/misc/init.c Copyright: 2004 CodeSourcery, LLC License: Other-16 Files: newlib/libc/reent/impure.c newlib/libc/reent/reent.c newlib/libc/reent/reent.tex newlib/libc/signal/raise.c newlib/libc/signal/signal.c newlib/libc/signal/signal.tex newlib/libc/string/bcmp.c newlib/libc/string/bcopy.c newlib/libc/string/bzero.c newlib/libc/string/index.c newlib/libc/string/memchr.c newlib/libc/string/memcmp.c newlib/libc/string/memcpy.c newlib/libc/string/memmove.c newlib/libc/string/memset.c newlib/libc/string/rindex.c newlib/libc/string/strcasecmp.c newlib/libc/string/strcat.c newlib/libc/string/strchr.c newlib/libc/string/strcmp.c newlib/libc/string/strcoll.c newlib/libc/string/strcpy.c newlib/libc/string/strcspn.c newlib/libc/string/strerror.c newlib/libc/string/strings.tex newlib/libc/string/strlen.c newlib/libc/string/strlwr.c newlib/libc/string/strncasecmp.c newlib/libc/string/strncat.c newlib/libc/string/strncmp.c newlib/libc/string/strncpy.c newlib/libc/string/strpbrk.c newlib/libc/string/strrchr.c newlib/libc/string/strspn.c newlib/libc/string/strtok.c newlib/libc/string/strupr.c newlib/libc/string/strxfrm.c newlib/libc/string/u_strerr.c newlib/libc/time/asctime.c newlib/libc/time/asctime_r.c newlib/libc/time/clock.c newlib/libc/time/ctime.c newlib/libc/time/ctime_r.c newlib/libc/time/difftime.c newlib/libc/time/gmtime.c newlib/libc/time/gmtime_r.c newlib/libc/time/lcltime.c newlib/libc/time/lcltime_buf.c newlib/libc/time/lcltime_r.c newlib/libc/time/mktime.c newlib/libc/time/time.c newlib/libc/time/time.tex newlib/libm/test/acos_vec.c newlib/libm/test/acosf_vec.c newlib/libm/test/acosh_vec.c newlib/libm/test/acoshf_vec.c newlib/libm/test/asin_vec.c newlib/libm/test/asinf_vec.c newlib/libm/test/asinh_vec.c newlib/libm/test/asinhf_vec.c newlib/libm/test/atan2_vec.c newlib/libm/test/atan2f_vec.c newlib/libm/test/atan_vec.c newlib/libm/test/atanf_vec.c newlib/libm/test/atanh_vec.c newlib/libm/test/atanhf_vec.c newlib/libm/test/ceil_vec.c newlib/libm/test/ceilf_vec.c newlib/libm/test/conv_vec.c newlib/libm/test/convert.c newlib/libm/test/cos_vec.c newlib/libm/test/cosf_vec.c newlib/libm/test/cosh_vec.c newlib/libm/test/coshf_vec.c newlib/libm/test/dcvt.c newlib/libm/test/dvec.c newlib/libm/test/erf_vec.c newlib/libm/test/erfc_vec.c newlib/libm/test/erfcf_vec.c newlib/libm/test/erff_vec.c newlib/libm/test/exp_vec.c newlib/libm/test/expf_vec.c newlib/libm/test/fabs_vec.c newlib/libm/test/fabsf_vec.c newlib/libm/test/floor_vec.c newlib/libm/test/floorf_vec.c newlib/libm/test/fmod_vec.c newlib/libm/test/fmodf_vec.c newlib/libm/test/gamma_vec.c newlib/libm/test/gammaf_vec.c newlib/libm/test/hypot_vec.c newlib/libm/test/hypotf_vec.c newlib/libm/test/iconv_vec.c newlib/libm/test/j0_vec.c newlib/libm/test/j0f_vec.c newlib/libm/test/j1_vec.c newlib/libm/test/j1f_vec.c newlib/libm/test/jn_vec.c newlib/libm/test/jnf_vec.c newlib/libm/test/log10_vec.c newlib/libm/test/log10f_vec.c newlib/libm/test/log1p_vec.c newlib/libm/test/log1pf_vec.c newlib/libm/test/log2_vec.c newlib/libm/test/log2f_vec.c newlib/libm/test/log_vec.c newlib/libm/test/logf_vec.c newlib/libm/test/math.c newlib/libm/test/math2.c newlib/libm/test/sin_vec.c newlib/libm/test/sinf_vec.c newlib/libm/test/sinh_vec.c newlib/libm/test/sinhf_vec.c newlib/libm/test/sprint_ivec.c newlib/libm/test/sprint_vec.c newlib/libm/test/sqrt_vec.c newlib/libm/test/sqrtf_vec.c newlib/libm/test/string.c newlib/libm/test/tan_vec.c newlib/libm/test/tanf_vec.c newlib/libm/test/tanh_vec.c newlib/libm/test/tanhf_vec.c newlib/libm/test/test.c newlib/libm/test/test.h newlib/libm/test/test_ieee.c newlib/libm/test/test_is.c newlib/libm/test/trunc_vec.c newlib/libm/test/truncf_vec.c newlib/libm/test/y0_vec.c newlib/libm/test/y0f_vec.c newlib/libm/test/y1_vec.c newlib/libm/test/y1f_vec.c newlib/libm/test/yn_vec.c newlib/libm/test/ynf_vec.c Copyright: 1994 Cygnus Support. License: Other-17 Files: newlib/libc/stdio/vfieeefp.h newlib/libc/stdlib/dtoa.c newlib/libc/stdlib/mprec.c newlib/libc/stdlib/mprec.h Copyright: 1991 AT&T. License: Other-18 Files: newlib/libc/stdlib/drand48.c newlib/libc/stdlib/erand48.c newlib/libc/stdlib/jrand48.c newlib/libc/stdlib/lcong48.c newlib/libc/stdlib/lrand48.c newlib/libc/stdlib/mrand48.c newlib/libc/stdlib/nrand48.c newlib/libc/stdlib/rand48.c newlib/libc/stdlib/rand48.h newlib/libc/stdlib/seed48.c newlib/libc/stdlib/srand48.c Copyright: 1993 Martin Birgmeier License: Other-19 Files: newlib/libc/stdlib/gdtoa-gethex.c newlib/libc/stdlib/gdtoa.h Copyright: 1998 Lucent Technologies License: Other-20 Files: newlib/libc/stdlib/gdtoa-hexnan.c Copyright: 2000 Lucent Technologies License: Other-20 Files: newlib/libc/stdlib/strtod.c newlib/libc/stdlib/strtodg.c Copyright: 1998-2001 Lucent Technologies License: Other-20 Files: newlib/libc/stdlib/strtorx.c Copyright: 1998, 2000 Lucent Technologies License: Other-20 Files: newlib/libc/stdlib/getopt.c Copyright: 1997 Gregory Pietsch License: Other-21 Files: newlib/libc/string/wcsnlen.c Copyright: 2003, Artem B. Bityuckiy (dedekind@mail.ru). License: Other-22 Files: newlib/libc/tinystdio/atod_ryu.c newlib/libc/tinystdio/atof_ryu.c newlib/libc/tinystdio/ryu/ryu_parse.h Copyright: 2019 Ulf Adams License: Other-23 Files: newlib/libc/tinystdio/dtoa_ryu.c newlib/libc/tinystdio/ftoa_ryu.c newlib/libc/tinystdio/ryu/common.h newlib/libc/tinystdio/ryu/d2s_intrinsics.h newlib/libc/tinystdio/ryu/digit_table.h newlib/libc/tinystdio/ryu/f2s_intrinsics.h newlib/libc/tinystdio/ryu/ryu.h newlib/libc/tinystdio/ryu_divpow2.c newlib/libc/tinystdio/ryu_log10.c newlib/libc/tinystdio/ryu_log2pow5.c newlib/libc/tinystdio/ryu_pow5bits.c newlib/libc/tinystdio/ryu_table.c newlib/libc/tinystdio/ryu_umul128.c Copyright: 2018 Ulf Adams License: Other-23 Files: newlib/libc/xdr/xdr_private.c newlib/libc/xdr/xdr_private.h Copyright: 2009 Charles S. Wilson License: Other-24 Files: newlib/libm/common/fdlibm.h newlib/libm/common/isgreater.c newlib/libm/common/s_cbrt.c newlib/libm/common/s_copysign.c newlib/libm/common/s_exp10.c newlib/libm/common/s_expm1.c newlib/libm/common/s_finite.c newlib/libm/common/s_ilogb.c newlib/libm/common/s_infinity.c newlib/libm/common/s_isinf.c newlib/libm/common/s_isinfd.c newlib/libm/common/s_isnan.c newlib/libm/common/s_isnand.c newlib/libm/common/s_llrint.c newlib/libm/common/s_llround.c newlib/libm/common/s_log1p.c newlib/libm/common/s_log2.c newlib/libm/common/s_logb.c newlib/libm/common/s_lrint.c newlib/libm/common/s_lround.c newlib/libm/common/s_modf.c newlib/libm/common/s_nan.c newlib/libm/common/s_nearbyint.c newlib/libm/common/s_nextafter.c newlib/libm/common/s_pow10.c newlib/libm/common/s_rint.c newlib/libm/common/s_round.c newlib/libm/common/s_scalbln.c newlib/libm/common/s_scalbn.c newlib/libm/common/s_trunc.c newlib/libm/common/sf_cbrt.c newlib/libm/common/sf_copysign.c newlib/libm/common/sf_exp10.c newlib/libm/common/sf_expm1.c newlib/libm/common/sf_finite.c newlib/libm/common/sf_ilogb.c newlib/libm/common/sf_infinity.c newlib/libm/common/sf_isinf.c newlib/libm/common/sf_isinff.c newlib/libm/common/sf_isnan.c newlib/libm/common/sf_isnanf.c newlib/libm/common/sf_llrint.c newlib/libm/common/sf_llround.c newlib/libm/common/sf_log1p.c newlib/libm/common/sf_logb.c newlib/libm/common/sf_lrint.c newlib/libm/common/sf_lround.c newlib/libm/common/sf_modf.c newlib/libm/common/sf_nan.c newlib/libm/common/sf_nearbyint.c newlib/libm/common/sf_nextafter.c newlib/libm/common/sf_pow10.c newlib/libm/common/sf_rint.c newlib/libm/common/sf_round.c newlib/libm/common/sf_scalbln.c newlib/libm/common/sf_scalbn.c newlib/libm/common/sf_trunc.c newlib/libm/math/k_cos.c newlib/libm/math/k_rem_pio2.c newlib/libm/math/k_sin.c newlib/libm/math/k_tan.c newlib/libm/math/kf_cos.c newlib/libm/math/kf_rem_pio2.c newlib/libm/math/kf_sin.c newlib/libm/math/kf_tan.c newlib/libm/math/math.tex newlib/libm/math/s_acos.c newlib/libm/math/s_acosh.c newlib/libm/math/s_asin.c newlib/libm/math/s_asinh.c newlib/libm/math/s_atan.c newlib/libm/math/s_atan2.c newlib/libm/math/s_atanh.c newlib/libm/math/s_ceil.c newlib/libm/math/s_cos.c newlib/libm/math/s_cosh.c newlib/libm/math/s_drem.c newlib/libm/math/s_erf.c newlib/libm/math/s_exp.c newlib/libm/math/s_exp2.c newlib/libm/math/s_fabs.c newlib/libm/math/s_floor.c newlib/libm/math/s_fmod.c newlib/libm/math/s_frexp.c newlib/libm/math/s_gamma.c newlib/libm/math/s_hypot.c newlib/libm/math/s_j0.c newlib/libm/math/s_j1.c newlib/libm/math/s_jn.c newlib/libm/math/s_log.c newlib/libm/math/s_log10.c newlib/libm/math/s_pow.c newlib/libm/math/s_rem_pio2.c newlib/libm/math/s_remainder.c newlib/libm/math/s_scalb.c newlib/libm/math/s_signif.c newlib/libm/math/s_sin.c newlib/libm/math/s_sinh.c newlib/libm/math/s_sqrt.c newlib/libm/math/s_tan.c newlib/libm/math/s_tanh.c newlib/libm/math/s_tgamma.c newlib/libm/math/sf_acos.c newlib/libm/math/sf_acosh.c newlib/libm/math/sf_asin.c newlib/libm/math/sf_asinh.c newlib/libm/math/sf_atan.c newlib/libm/math/sf_atan2.c newlib/libm/math/sf_atanh.c newlib/libm/math/sf_ceil.c newlib/libm/math/sf_cos.c newlib/libm/math/sf_cosh.c newlib/libm/math/sf_drem.c newlib/libm/math/sf_erf.c newlib/libm/math/sf_exp.c newlib/libm/math/sf_exp2.c newlib/libm/math/sf_fabs.c newlib/libm/math/sf_floor.c newlib/libm/math/sf_fmod.c newlib/libm/math/sf_frexp.c newlib/libm/math/sf_gamma.c newlib/libm/math/sf_hypot.c newlib/libm/math/sf_j0.c newlib/libm/math/sf_j1.c newlib/libm/math/sf_jn.c newlib/libm/math/sf_lgamma.c newlib/libm/math/sf_log.c newlib/libm/math/sf_log10.c newlib/libm/math/sf_log2.c newlib/libm/math/sf_pow.c newlib/libm/math/sf_rem_pio2.c newlib/libm/math/sf_remainder.c newlib/libm/math/sf_scalb.c newlib/libm/math/sf_signif.c newlib/libm/math/sf_sin.c newlib/libm/math/sf_sinh.c newlib/libm/math/sf_sqrt.c newlib/libm/math/sf_tan.c newlib/libm/math/sf_tanh.c newlib/libm/math/sf_tgamma.c newlib/libm/math/sr_lgamma.c newlib/libm/math/srf_lgamma.c Copyright: 1993 Sun Microsystems, Inc. License: Other-25 Files: newlib/libm/common/s_remquo.c newlib/libm/common/sf_remquo.c Copyright: 1993 Sun Microsystems, Inc. License: Other-26 Files: newlib/libm/machine/i386/f_llrint.c newlib/libm/machine/i386/f_llrintf.c newlib/libm/machine/i386/f_llrintl.c newlib/libm/machine/i386/f_lrint.c newlib/libm/machine/i386/f_lrintf.c newlib/libm/machine/i386/f_lrintl.c newlib/libm/machine/i386/f_rint.c newlib/libm/machine/i386/f_rintf.c newlib/libm/machine/i386/f_rintl.c Copyright: 2007 Dave Korn License: Other-27 Files: newlib/libc/machine/d10v/setjmp.S newlib/libc/machine/d30v/setjmp.S newlib/libc/machine/fr30/setjmp.S newlib/libc/machine/h8300/defines.h newlib/libc/machine/h8300/memcpy.S newlib/libc/machine/h8300/memset.S newlib/libc/machine/h8300/reg_memcpy.S newlib/libc/machine/h8300/reg_memset.S newlib/libc/machine/h8300/setjmp.S newlib/libc/machine/h8300/strcmp.S newlib/libc/machine/h8500/cmpsi.c newlib/libc/machine/h8500/divhi3.S newlib/libc/machine/h8500/divsi3.c newlib/libc/machine/h8500/mulhi3.c newlib/libc/machine/h8500/mulsi3.c newlib/libc/machine/h8500/negsi2.c newlib/libc/machine/h8500/psi.S newlib/libc/machine/h8500/setjmp.S newlib/libc/machine/h8500/shifts.c newlib/libc/machine/hppa/DEFS.h newlib/libc/machine/i386/i386mach.h newlib/libc/machine/m32r/setjmp.S newlib/libc/machine/m68k/setjmp.S newlib/libc/machine/m68k/strcpy.c newlib/libc/machine/m68k/strlen.c newlib/libc/machine/m88k/setjmp.S newlib/libc/machine/mips/setjmp.S newlib/libc/machine/mn10200/setjmp.S newlib/libc/machine/mn10300/memchr.S newlib/libc/machine/mn10300/memcmp.S newlib/libc/machine/mn10300/memcpy.S newlib/libc/machine/mn10300/memset.S newlib/libc/machine/mn10300/setjmp.S newlib/libc/machine/mn10300/strchr.S newlib/libc/machine/mn10300/strcmp.S newlib/libc/machine/mn10300/strcpy.S newlib/libc/machine/mn10300/strlen.S newlib/libc/machine/necv70/fastmath.S newlib/libc/machine/necv70/machine/registers.h newlib/libc/machine/necv70/setjmp.S newlib/libc/machine/powerpc/setjmp.S newlib/libc/machine/powerpc/vfscanf.c newlib/libc/machine/sh/asm.h newlib/libc/machine/sh/setjmp.S newlib/libc/machine/sparc/machine/sparclet.h newlib/libc/machine/sparc/scan.c newlib/libc/machine/sparc/shuffle.c newlib/libc/machine/tic80/setjmp.S newlib/libc/machine/v850/setjmp.S newlib/libc/machine/w65/cmpsi.c newlib/libc/machine/w65/divsi3.c newlib/libc/machine/w65/lshrhi.S newlib/libc/machine/w65/mulsi3.c newlib/libc/machine/w65/sdivhi3.S newlib/libc/machine/w65/smulhi3.S newlib/libc/machine/w65/udivhi3.S newlib/libc/machine/w65/umodhi3.S newlib/libc/machine/z8k/args.h newlib/libc/machine/z8k/setjmp.S newlib/libc/stdio/asiprintf.c newlib/libc/stdio/clearerr.c newlib/libc/stdio/fclose.c newlib/libc/stdio/fcloseall.c newlib/libc/stdio/fdopen.c newlib/libc/stdio/feof.c newlib/libc/stdio/ferror.c newlib/libc/stdio/fflush.c newlib/libc/stdio/fgetc.c newlib/libc/stdio/fgetpos.c newlib/libc/stdio/fgets.c newlib/libc/stdio/fileno.c newlib/libc/stdio/findfp.c newlib/libc/stdio/fiprintf.c newlib/libc/stdio/fiscanf.c newlib/libc/stdio/floatio.h newlib/libc/stdio/fopen.c newlib/libc/stdio/fprintf.c newlib/libc/stdio/fputc.c newlib/libc/stdio/fputs.c newlib/libc/stdio/fscanf.c newlib/libc/stdio/fseek.c newlib/libc/stdio/fseeko.c newlib/libc/stdio/fsetpos.c newlib/libc/stdio/ftell.c newlib/libc/stdio/ftello.c newlib/libc/stdio/fvwrite.c newlib/libc/stdio/fwalk.c newlib/libc/stdio/fwprintf.c newlib/libc/stdio/fwrite.c newlib/libc/stdio/fwscanf.c newlib/libc/stdio/getc.c newlib/libc/stdio/getc_u.c newlib/libc/stdio/getchar.c newlib/libc/stdio/getchar_u.c newlib/libc/stdio/gets.c newlib/libc/stdio/getw.c newlib/libc/stdio/iprintf.c newlib/libc/stdio/iscanf.c newlib/libc/stdio/nano-vfscanf.c newlib/libc/stdio/nano-vfscanf_float.c newlib/libc/stdio/nano-vfscanf_local.h newlib/libc/stdio/perror.c newlib/libc/stdio/printf.c newlib/libc/stdio/putc.c newlib/libc/stdio/putc_u.c newlib/libc/stdio/putchar.c newlib/libc/stdio/putchar_u.c newlib/libc/stdio/puts.c newlib/libc/stdio/putw.c newlib/libc/stdio/refill.c newlib/libc/stdio/remove.c newlib/libc/stdio/rename.c newlib/libc/stdio/rewind.c newlib/libc/stdio/rget.c newlib/libc/stdio/scanf.c newlib/libc/stdio/sccl.c newlib/libc/stdio/setbuf.c newlib/libc/stdio/setbuffer.c newlib/libc/stdio/setlinebuf.c newlib/libc/stdio/setvbuf.c newlib/libc/stdio/siprintf.c newlib/libc/stdio/siscanf.c newlib/libc/stdio/sprintf.c newlib/libc/stdio/sscanf.c newlib/libc/stdio/stdio.c newlib/libc/stdio/stdio.h newlib/libc/stdio/stdio.tex newlib/libc/stdio/swscanf.c newlib/libc/stdio/sys/stdio.h newlib/libc/stdio/tmpfile.c newlib/libc/stdio/tmpnam.c newlib/libc/stdio/ungetc.c newlib/libc/stdio/vfscanf.c newlib/libc/stdio/vfwscanf.c newlib/libc/stdio/viprintf.c newlib/libc/stdio/viscanf.c newlib/libc/stdio/vprintf.c newlib/libc/stdio/vscanf.c newlib/libc/stdio/vsiprintf.c newlib/libc/stdio/vsiscanf.c newlib/libc/stdio/vsnprintf.c newlib/libc/stdio/vsprintf.c newlib/libc/stdio/vsscanf.c newlib/libc/stdio/vswprintf.c newlib/libc/stdio/vswscanf.c newlib/libc/stdio/vwprintf.c newlib/libc/stdio/vwscanf.c newlib/libc/stdio/wbuf.c newlib/libc/stdio/wprintf.c newlib/libc/stdio/wscanf.c newlib/libc/stdio64/fgetpos64.c newlib/libc/stdio64/fopen64.c newlib/libc/stdio64/freopen64.c newlib/libc/stdio64/fseeko64.c newlib/libc/stdio64/fsetpos64.c newlib/libc/stdio64/ftello64.c newlib/libc/stdio64/stdio64.c newlib/libc/stdio64/stdio64.tex newlib/libc/stdio64/tmpfile64.c Copyright: 1990 The Regents of the University of California. License: UCB-1 Files: newlib/libc/stdio/asprintf.c newlib/libc/stdio/fread.c newlib/libc/stdio/freopen.c newlib/libc/stdio/fvwrite.h newlib/libc/stdio/local.h newlib/libc/stdio/makebuf.c newlib/libc/stdio/sniprintf.c newlib/libc/stdio/snprintf.c newlib/libc/stdio/swprintf.c newlib/libc/stdio/vasiprintf.c newlib/libc/stdio/vasprintf.c newlib/libc/stdio/vsniprintf.c newlib/libc/stdio/wsetup.c Copyright: 1990, 2007 The Regents of the University of California. License: UCB-1 Files: newlib/libc/stdio/flags.c newlib/libc/tinystdio/sflags.c Copyright: 1990 Regents of the University of California. License: UCB-1 Files: newlib/libc/stdio/mktemp.c newlib/libc/stdlib/setenv.c Copyright: 1987 Regents of the University of California. License: UCB-2 Files: newlib/libc/stdlib/getenv.c Copyright: 1987, 2000 Regents of the University of California. License: UCB-2 Files: newlib/libc/stdlib/putenv.c Copyright: 1988 The Regents of the University of California. License: UCB-2 License: BSD2-1 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD2-2 modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD2-3 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD2-4 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. . 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD2-5 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD2-6 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD2-7 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD2-8 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. . 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD2-9 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. . 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL TENSILICA INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD2-10 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD2-11 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD2-12 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY License: BSD3-1 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. . 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-2 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-3 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. . Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . The name of Red Hat Incorporated may not be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-4 c) UNIX System Laboratories, Inc. All or some portions of this file are derived from material licensed to the University of California by American Telephone and Telegraph Co. or Unix System Laboratories, Inc. and are reproduced herein with the permission of UNIX System Laboratories, Inc. . Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-5 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 4. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-6 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of Sun Microsystems, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-7 c) UNIX System Laboratories, Inc. All or some portions of this file are derived from material licensed to the University of California by American Telephone and Telegraph Co. or Unix System Laboratories, Inc. and are reproduced herein with the permission of UNIX System Laboratories, Inc. . Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 4. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-8 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the company may not be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-9 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of the Linaro nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-10 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of the company nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-11 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. . 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-12 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. . Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . Neither the name of Linaro Limited nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-13 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of Adapteva nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-14 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . 1. Redistributions source code must retain the above copyright notice, this list of conditions and the following disclaimer. . 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . 3. Neither the name of Xilinx nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-15 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of MIPS Technologies Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-16 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the MIPS Technologies, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE MIPS TECHNOLOGIES, INC. ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE MIPS TECHNOLOGIES, INC. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-17 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the MIPS Technologies, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY IMAGINATION TECHNOLOGIES LIMITED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL IMAGINATION TECHNOLOGIES LIMITED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-18 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. . Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . The name of the company may not be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-19 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . o Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. o Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. o Neither the name of Altera Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY ALTERA CORPORATION, THE COPYRIGHT HOLDER, AND ITS CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-20 This software was developed by the Computer Systems Engineering group at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and contributed to Berkeley. . Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-21 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-22 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the names of Toshiba nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-23 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-24 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. . Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . Neither the name of Texas Instruments Incorporated nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-25 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of Rolls-Royce Controls and Data Services Limited nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-26 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-27 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-28 SPDX-License-Identifier: BSD-3-Clause . Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the company may not be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-29 Portions of this software were developed by David Chisnall under sponsorship from the FreeBSD Foundation. . Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-30 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-31 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. . 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . 3. Neither the name of KTH nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY KTH AND ITS CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KTH OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-32 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. . Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-33 Rewritten in C by Soren Kuula Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-34 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of Mentor Graphics nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY CODESOURCERY, INC. ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CODESOURCERY BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-35 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. . Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD3-36 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. . Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . Neither the name of IBM Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: Default-1 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. . 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: FreeBSD-1 This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the FreeBSD License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. A copy of this license is available at http://www.opensource.org/licenses. License: GPL2-1 This program is licensed under the GPL version 2 or later. Please see the file COPYING.GPL2 in this distribution for license terms. License: Other-1 Permission to use, copy, modify, and distribute this software is freely granted, provided that this notice is preserved. License: Other-2 Public domain. License: Other-3 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: . The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. . THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. License: Other-4 This file and the accompanying getopt.c implementation file are hereby placed in the public domain without restrictions. Just give the author credit, don't claim you wrote it or prevent anyone else from using it. . Gregory Pietsch's current e-mail address: gpietsch@comcast.net License: Other-5 Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. . THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. License: Other-6 Redistribution, modification, and use in source and binary forms is permitted provided that the above copyright notice and following paragraph are duplicated in all such forms. . This file is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. License: Other-7 Permission to use, copy, modify, and distribute this software for any purpose without fee is hereby granted, provided that this entire notice is included in all copies of any software which is or includes a copy or modification of this software. . THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. License: Other-8 The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply. License: Other-9 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. . 2. Neither the name of Axis Communications nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: Other-10 To anyone who acknowledges that this file is provided "AS IS" without any express or implied warranty: permission to use, copy, modify, and distribute this file for any purpose is hereby granted without fee, provided that the above copyright notice and this notice appears in all copies, and that the name of Hewlett-Packard Company not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Hewlett-Packard Company makes no representations about the suitability of this software for any purpose. License: Other-11 Intel hereby grants you permission to copy, modify, and distribute this software and its documentation. Intel grants this permission provided that the above copyright notice appears in all copies and that both the copyright notice and this permission notice appear in supporting documentation. In addition, Intel grants this permission provided that you prominently mark as "not part of the original" any modifications made to this software or documentation, and that the name of Intel Corporation not be used in advertising or publicity pertaining to distribution of the software or the documentation without specific, written prior permission. . Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY License: Other-12 This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the BSD License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. A copy of this license is available at http://www.opensource.org/licenses. Any Red Hat trademarks that are incorporated in the source code or documentation are not subject to the BSD License and may only be used or replicated with the express permission of Red Hat, Inc. License: Other-13 Permission to use, copy, modify, and distribute this software for any purpose without fee is hereby granted, provided that this entire notice is included in all copies of any software which is or includes a copy or modification of this software and in all copies of the supporting documentation for such software. . THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. License: Other-14 The author hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply. License: Other-15 Redistribution and use in source and binary forms is permitted provided that the above copyright notice and following paragraph are duplicated in all such forms. . This file is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. License: Other-16 Permission to use, copy, modify, and distribute this file for any purpose is hereby granted without fee, provided that the above copyright notice and this notice appears in all copies. . This file is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. License: Other-17 Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. License: Other-18 Permission to use, copy, modify, and distribute this software for any purpose without fee is hereby granted, provided that this entire notice is included in all copies of any software which is or includes a copy or modification of this software and in all copies of the supporting documentation for such software. . THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR AT&T MAKES ANY REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. License: Other-19 You may redistribute unmodified or modified versions of this source code provided that the above copyright notice and this and the following conditions are retained. . This software is provided ``as is'', and comes with no warranties of any kind. I shall in no event be liable for anything that happens to anyone/anything when using this software. License: Other-20 Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that the copyright notice and this permission notice and warranty disclaimer appear in supporting documentation, and that the name of Lucent or any of its entities not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. . LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. License: Other-21 This file and the accompanying getopt.h header file are hereby placed in the public domain without restrictions. Just give the author credit, don't claim you wrote it or prevent anyone else from using it. . Gregory Pietsch's current e-mail address: gpietsch@comcast.net License: Other-22 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the above copyright notice, this condition statement, and the following disclaimer are retained in any redistributions of the source code. . THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: Other-23 The contents of this file may be used under the terms of the Apache License, Version 2.0. . See accompanying file LICENSE-Apache or copy at http://www.apache.org/licenses/LICENSE-2.0) . Alternatively, the contents of this file may be used under the terms of the Boost Software License, Version 1.0. See accompanying file LICENSE-Boost or copy at https://www.boost.org/LICENSE_1_0.txt) . Unless required by applicable law or agreed to in writing, this software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. License: Other-24 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: . The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. . THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. License: Other-25 Developed at SunPro, a Sun Microsystems, Inc. business. Permission to use, copy, modify, and distribute this software is freely granted, provided that this notice is preserved. License: Other-26 Developed at SunSoft, a Sun Microsystems, Inc. business. Permission to use, copy, modify, and distribute this software is freely granted, provided that this notice is preserved. License: Other-27 x87 FP implementation contributed to Newlib by Dave Korn, November 2007. This file is placed in the public domain. Permission to use, copy, modify, and distribute this software is freely granted. License: UCB-1 Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. License: UCB-2 Redistribution and use in source and binary forms are permitted provided that: (1) source distributions retain this entire copyright notice and comment, and (2) distributions including binaries display the following acknowledgement: ``This product includes software developed by the University of California, Berkeley and its contributors'' in the documentation or other materials provided with the distribution. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. picolibc-1.7.4/README.md000066400000000000000000000524171414576234500146120ustar00rootroot00000000000000# Picolibc Copyright © 2018-2021 Keith Packard Picolibc is library offering standard C library APIs that targets small embedded systems with limited RAM. Picolibc was formed by blending code from [Newlib](http://sourceware.org/newlib/) and [AVR Libc](https://www.nongnu.org/avr-libc/). Build status: * ![Release](https://github.com/picolibc/picolibc/workflows/Release/badge.svg?branch=main) * ![Minsize](https://github.com/picolibc/picolibc/workflows/Minsize/badge.svg?branch=main) * ![Mac OS X](https://github.com/picolibc/picolibc/workflows/Mac%20OS%20X/badge.svg) ## License Picolibc source comes from a variety of places and has a huge variety of copyright holders and license texts. While much of the code comes from Newlib, none of the GPL-related bits used to build the library are left in the repository, so all of the source code uses BSD-like licenses, a mixture of 2- and 3- clause BSD itself and a variety of other (mostly older) licenses with similar terms. There are two files used for testing printf, test/printf-tests.c and test/testcases.c which are licensed under the GPL version 2 or later. The file COPYING.picolibc contains all of the current copyright and license information in the Debian standard machine-readable format. It was generated using the make-copyrights and find-copyright scripts. There are currently 78 distinct licenses: 10 versions of the 2-clause BSD license, 37 versions of the 3-clause BSD license, and 31 other licenses. ## Supported Architectures Picolibc inherited code for a *lot* of architectures from Newlib, but at this point only has code to build for the following targets: * ARM (32- and 64- bit) * i386 (Native and Linux hosted, for testing) * RISC-V (both 32- and 64- bit) * x86_64 (Native Linux hosted, for testing) * PowerPC * ESP8266 (xtensa-lx106-elf) Supporting architectures that already have Newlib code requires: 1. newlib/libc/machine/_architecture_/meson.build to build the architecture-specific libc bits. This should at least include setjmp/longjmp support as these cannot be performed in architecture independent code. 2. newlib/libm/machine/_architecture_/meson.build to build any architecture-specific libm bits 3. picocrt/machine/_architecture_ source code and build bits if you need custom startup code for the architecture. Useful in all cases, but this is necessary to run tests under qemu if your platform can do that. 4. cross-_gcc-triple_.txt to configure the meson cross-compilation mechanism to use the right tools 5. do-_architecture_-configure to make testing the cross-compilation setup easier. 6. newlib/libc/picolib support. This should include whatever startup helpers are required (like ARM interrupt vector) and TLS support (if your compiler includes this). 7. run-_architecture_ script to run tests under QEMU. Look at the ARM and RISC-V examples to get a sense of what this needs to do and how it gets invoked from the cross-_gcc-triple_.txt configuration file. ## Relation to newlib Picolibc is mostly built from pieces of newlib, and retains the directory structure of that project. While there have been a lot of changes in the build system and per-thread data storage, the bulk of the source code remains unchanged. To keep picolibc and newlib code in sync, newlib changes will be regularly incorporated. To ease integration of these changes into picolibc, some care needs to be taken while editing the code: * Files should not be renamed. * Fixes that also benefit users of newlib should also be sent to the newlib project * Changes, where possible, should be made in a way compatible with newlib design. For example, instead of using 'errno' (which is valid in picolibc), use __errno_r(r), even when 'r' is not defined in the local context. The bulk of newlib changes over the last several years have been in areas unrelated to the code used by picolibc, so keeping things in sync has not been difficult so far. ## Documentation Introductory documentation. Read these first: * [Building Picolibc](doc/build.md). Explains how to compile picolibc yourself. * [Using Picolibc](doc/using.md). Shows how to compile and link applications once you have picolibc built and installed. * [Linking with Picolibc.ld](doc/linking.md). Provides more details about the linking process. * [Hello World](hello-world/README.md). Build and run a stand-alone C application by following step-by-step instructions Detailed documentation. Use these to learn more details about how to use Picolibc: * [Picolibc initialization](doc/init.md) * [Operating System Support](doc/os.md). * [Printf and Scanf in Picolibc](doc/printf.md) * [Thread Local Storage](doc/tls.md) * [Picolibc as embedded source](doc/embedsource.md) * [Releasing Picolibc](doc/releasing.md) * [Copyright and license information](COPYING.picolibc) ## Releases ### Picolibc version 1.7.4 1. Clean up meson build bits, including use of 'fs module (thanks to Yasushi Shoji). 2. Speed up github actions by sharing Debian docker image (thanks to Yasushi Shoji). 3. Reduce use of intermediate static libraries during build 4. Use standard Meson architecture names everywhere (thanks to Yasushi Shoji). 5. Support building with -D_FORTIFY_SOURCE enabled. 6. Clean up 32-bit arm assembly code, eliminating __aeabi wrappers where possible. 7. Add basename, dirname and fnmatch back. 8. Fix all old-style (K&R) function definitions. 9. Enable lots more compiler warning flags. 10. Remove last uses of alloca in legacy stdio code. 11. Add tests from musl libc-testsuite. There aren't many tests, but these identified a few bugs. 12. Add lots more exception and errno tests for the math functions. 13. Restructure math library to always use the __math_err functions to raise exceptions and set errno. This removes the w_*.c wrapper functions and eliminates the __ieee names. This centralizes compiler work-arounds to ensure run-time evaluation of expressions intended to raise exceptions. In the process, all of the libm/math files were reformatted with clang-format. 14. Make tinystdio '%a' compatible with glibc, including supporting rounding and trimming trailing zeros when possible. 15. Remove floating point exception generation code on targets without floating point exception support. This reduces code size on soft float machines without affecting results. ### Picolibc version 1.7.3 1. Add -Wall -Wextra to default builds. Fixed warnings this raised. 2. Add htonl and friends (based on __htonl). Thanks to Johan de Claville Christiansen 3. Set errno in scalbn and scalbnf (patch forwarded to newlib). 4. Merge newlib recent changes which includes a couple of libm fixes. ### Picolibc version 1.7.2 1. Fix picolibc.ld to split C++ exceptions back apart (thanks to Khalil Estell) 2. Add vsscanf to tinystdio (required for libstdc++). 3. Also stick -isystem in C++ compile command to try and get picolibc headers to be used instead of newlib. ### Picolibc version 1.7.1 1. Add __cxa_atexit implementation to 'picoexit' path as required by C++ 2. Fix lack of 'hh' support in integer-only tinystdio printf path. 3. Fix tinystdio __file flag initialization for C++ apps ### Picolibc version 1.7 1. Merge libc and libm into a single library. Having them split doesn't offer any advantages while requiring that applications add '-lm' to link successfully. Having them merged allows use of libm calls from libc code. 2. Add hex float format to *printf, *scanf and strto{d,f,ld}. This is required for C99 support. 3. Unify strto{d,f,ld} and *scanf floating point parsing code. This ensures that the library is consistent in how floats are parsed. 4. Make strto{d,f,ld} set errno to ERANGE on overflow/underflow, including when the result is a subnormal number. ### Picolibc version 1.6.2 1. Change `restrict` keyword in published headers to `__restrict` to restore compatibility with applications building with --std=c18. 2. Additional cleanups in time conversion funcs (Thanks to R. Riez) ### Picolibc version 1.6.1 1. Code cleanups for time conversion funcs (Thanks to R. Diez) 2. Add '-fno-stack-protector' when supported by the C compiler to avoid trouble building with native Ubuntu GCC. 3. Bug fix for converting denorms with sscanf and strto{d,f,ld}. 4. Use __asm__ for inline asm code to allow building applications with --std=c18 5. Fix exit code for semihosting 'abort' call to make it visible to the hosting system. 6. Add strfromf and strfromd implementations. These are simple wrappers around sscanf, but strfromf handles float conversions without requiring a pass through 'double' or special linker hacks. ### Picolibc version 1.6 1. Bugfix for snprintf(buf, 0) and vsnprintf(buf, 0) to avoid smashing memory 2. Support building libstdc++ on top of picolibc 3. Add 'hosted' crt0 variant that calls exit when main returns. This makes testing easier without burdening embedded apps with unused exit processing code. 4. Add 'minimal' crt0 variant that skips constructors to save space on systems known to not use any. 5. Fix HW floating point initialization on 32-bit ARM processors to perform 'dsb' and 'isb' instructions to ensure the FPU enabling write is complete before executing any FPU instructions. 6. Create a new '--picolibc-prefix' GCC command line parameter that sets the base of all picolibc file names. 7. Add bare-metal i386 and x86_64 initializatiton code (thanks to Mike Haertel). These initalize the processor from power up to running code without requiring any BIOS. 8. Merge newlib as of late April, 2021 9. Add 'timegm' function (thanks to R. Diez). 10. Fix a number of tinystdio bugs: handle fread with size==0, parse 'NAN' and 'INF' in fscanf in a case-insensitive manner, fix negative precision to '*' arguments in printf, fix handling of 'j', 'z' and 't' argument size specifiers (thanks to Sebastian Meyer). 11. Make the fenv API more consistent and more conformant with the spec. All architectures now fall back to the default code for soft float versions, which avoids having the various exception and rounding modes get defined when not supported. ### Picolibc version 1.5.1 1. Make riscv crt0 '_exit' symbol 'weak' to allow linking without this function. ### Picolibc version 1.5 1. Make picolibc more compatible with C++ compilers. 2. Add GCC specs file and linker script for building C++ applications with G++ that enable exception handling by linking in call stack information. 3. A few clang build fixes, including libm exception generation 4. Nano malloc fixes, especially for 'unusual' arguments 5. Merge in newlib 4.1.0 code 6. More libm exception/errno/infinity fixes, mostly in the gamma funcs. 7. Add tests for all semihost v2.0 functions. 8. A few RISC-V assembly fixes and new libm code. 9. Build fixes to reliably replace generic code with architecture-specific implementations. With a patch which is pending for GCC 11, we'll be able to build C++ applications that use picolibc with exceptions and iostream. ### Picolibc version 1.4.7 1. Fix numerous libm exception and errno bugs. The math functions are all now verified to match the C19 and Posix standards in this area. 2. Change behavior of 'gamma' function to match glibc which returns lgamma for this function. Applications should not use this function, they should pick either lgamma or tgamma as appropriate. 3. Fix fma/fmaf on arm and RISC-V so that the machine-specific versions are used when the hardware has support. Also fix the math library to only use fma/fmaf when it is supported by the hardware. 4. Fix numerous nano-malloc bugs, especially with unusual parameters. 5. Change nano-malloc to always clear returned memory. 6. Improve nano-realloc to perform better in various ways, including merging adjacent free blocks and expanding the heap. 7. Add malloc tests, both a basic functional test and a stress test. 8. Improve build portability to Windows. Picolibc should now build using mingw. 9. Use hardware TLS register on ARM when available. 10. Support clang compiler. Thanks to Denis Feklushkin and Joakim Nohlgård . 11. Avoid implicit float/double conversions. Check this by having clang builds use -Wdouble-promotion -Werror=double-promotion flags 12. Have portable code check for machine-specific overrides by matching filenames. This avoids building libraries with duplicate symbols and retains compatibility with newlib (which uses a different mechanism for this effect). 13. Patches to support building with [CompCert](http://compcert.inria.fr/), a formally verified compiler. Thanks to Sebastian Meyer . ### Picolibc version 1.4.6 1. Install 'ssp' (stack smashing protection) header files. This fixes compiling with -D_FORTIFY_SOURCE. 2. Make getc/ungetc re-entrant. This feature, which is enabled by default, uses atomic instruction sequences that do not require OS support. 3. Numerous iconv fixes, including enabling testing and switching external CCS file loading to use stdio. By default, iconv provides built-in CCS data for all of the supported encodings, which takes a fairly large amount of read-only memory. Iconv is now always included in picolibc as it isn't included in applications unless explicitly referenced by them. 4. Add __getauxval stub implementation to make picolibc work with GCC version 10 compiled for aarch64-linux-gnu. 5. Change how integer- and float- only versions of printf and scanf are selected. Instead of re-defining the symbols using the C preprocessor, picolibc now re-defines the symbols at link time. This avoids having applications compiled with a mixture of modes link in multiple versions of the underlying functions, while still preserving the smallest possible integer-only implementation. 6. Document how to use picolibc on a native POSIX system for testing. Check out the [os.md](doc/os.md) file for details. 7. Merge current newlib bits in. This includes better fenv support, for which tests are now included in the picolibc test suite. ### Picolibc version 1.4.5 1. Fix section order in picolibc.ld to give applications correct control over the layout of .preserve, .init and .fini regions. 2. Add startup and TLS support for aarch64 and non Cortex-M 32-bit arm. ### Picolibc version 1.4.4 1. Fix floating point 'g' format output in tinystdio. (e.g., for 10.0, print '10' instead of '1e+01'). There are tests which verify a range of 'g' cases like these now. 2. Merge current newlib bits. The only thing which affects picolibc is the addition of fenv support for arm. ### Picolibc version 1.4.3 1. Make fix for CVE 2019-14871 - CVE 2019-14878 in original newlib stdio code not call 'abort'. Allocation failures are now reported back to the application. 2. Add 'exact' floating point print/scan code to tinystdio. Thanks to Sreepathi Pai for pointing me at the Ryu code by Ulf Adams. 3. Add regular expression functions from newlib. These were removed by accident while removing POSIX filesystem-specific code. 4. Make tinystdio versions of [efg]cvt functions. This means that the default tinystdio version of picolibc no longer calls malloc from these functions. 5. More clang-compatibility fixes. (Thanks to Denis Feklushkin) 6. Remove stdatomic.h and tgmath.h. (they should not be provide by picolibc) ### Picolibc version 1.4.2 1. Clang source compatibility. Clang should now be able to compile the library. Thanks to Denis Feklushkin for figuring out how to make this work. 2. aarch64 support. This enables the existing aarch64 code and provides an example configuration file for getting it built. Thanks for Anthony Anderson for this feature. 3. Testing on github on push and pull-request. For now, this is limited to building the library due to a bug in qemu. 4. Get newlib stdio working again. You can now usefully use Newlib's stdio. This requires a working malloc and is substantially larger than tinystdio, but has more accurate floating point input. This requires POSIX functions including read, write and a few others. 5. Fix long double strtold. The working version is only available when using tinystdio; if using newlib stdio, strtold is simply not available. 6. Improve tinystdio support for C99 printf/scanf additions. 7. Check for correct prefix when sysroot-install option is selected. The value of this option depends on how gcc was configured, and (alas) meson won't let us set it at runtime, so instead we complain if the wrong value was given and display the correct value. 8. Sync up with current newlib head. ### Picolibc version 1.4.1 This release contains an important TLS fix for ARM along with a few minor compatibility fixes 1. Make __aeabi_read_tp respect ARM ABI register requirements to avoid clobbering register contents during TLS variable use. 2. Use cpu_family instead of cpu in meson config, which is 'more correct' when building for a single cpu instead of multilib. 3. Make arm sample interrupt vector work with clang 4. Use __inline instead of inline in published headers to allow compiling with -ansi 5. Make 'naked' RISC-V _start function contain only asm statements as required by clang (and recommended by gcc). 6. Use -msave-restore in sample RISC-V cross-compile configuration. This saves text space. ### Picolibc version 1.4 This release was focused on cleaning up the copyright and license information. 1. Copyright information should now be present in every source file. 2. License information, where it could be inferred from the repository, was added to many files. 3. 4-clause BSD licenses were changed (with permission) to 3-clause 4. Fix RISC-V ieeefp.h exception bits 5. Merge past newlib 3.2.0 6. Add PICOLIBC_TLS preprocessor define when the library has TLS support ### Picolibc version 1.3 This release now includes tests, and fixes bugs found by them. 1. ESP8266 support added, thanks to Jonathan McDowell. 2. Numerous test cases from newlib have been fixed, and precision requirements adjusted so that the library now passes its own test suite on x86, RISC-V and ARM. 3. String/number conversion bug fixes. This includes fcvt/ecvt/gcvt shared with newlib and tinystdio printf/scanf 4. A few RISC-V ABI fixes, including setting the TLS base correctly, compiling with -mcmodel=medany, and enabling the FPU for libraries built to use it. 5. Semihosting updates, including adding unlink, kill and getpid (which are used by some tests). ### Picolibc version 1.2 This release includes important fixes in picolibc.ld and more semihosting support. 1. File I/O and clock support for semihosting. This enables fopen/fdopen support in tinystdio along with an API to fetch a real time clock value. 2. Fix picolibc.ld to not attempt to use redefined symbols for memory space definitions. These re-definitions would fail and the default values be used for system memory definitions. Instead, just use the ? : operators each place the values are needed. Linker scripts continue to mystify. 3. Expose library definitions in 'picolibc.h', instead of 'newlib.h' and '_newlib_version.h' 4. Define HAVE_SEMIHOST when semihosting support is available. This lets the 'hello-world' example do some semihost specific things. ### Picolibc version 1.1 A minor update from 1.0, this release includes: 1. semihost support. This adds console I/O and exit(3) support on ARM and RISC-V hosts using the standard semihosting interfaces. 2. Posix I/O support in tinystdio. When -Dposix-io=true is included in the meson command line (which is the default), tinystdio adds support for fopen and fdopen by using malloc, open, close, read, write and lseek. If -Dposix-console=true is also passed to meson, then picolibc will direct stdin/stdout/stderr to the posix standard file descriptors (0, 1, 2). 3. Merge recent upstream newlib code. This brings picolibc up to date with current newlib sources. 4. Hello world example. This uses a simple Makefile to demonstrate how to us picolibc when installed for ARM and RISC-V embedded processors. The resulting executables can be run under qemu. 5. Remove newlib/libm/mathfp directory. This experimental code never worked correctly anyways. ### Picolibc version 1.0 This is the first release of picolibc. Major changes from newlib include: 1. Remove all non-BSD licensed code. None of it was used in building the embedded library, and removing it greatly simplifies the license situation. 2. Move thread-local values to native TLS mechanism 3. Add smaller stdio from avr-libc, which is enabled by default 4. Switch build system to meson. This has two notable benefits; the first is that building the library is much faster, the second is that it isolates build system changes from newlib making merging of newlib changes much easier. 5. Add simple startup code. This can be used in environments that don't have complicated requirements, allowing small applications to avoid needing to figure this out. picolibc-1.7.4/cross.tmpl000066400000000000000000000005161414576234500153530ustar00rootroot00000000000000[binaries] c = '@ARCH@-gcc' ar = '@ARCH@-ar' as = '@ARCH@-as' [properties] sizeof_int = 4 sizeof_wchar_t = 2 sizeof_vooid* = 4 alignment_char = 1 alignment_void* = 4 alignment_double = 4 c_args = [ @C_ARGS@ ] cpu_dir = '@CPU_DIR@' [host_machine] system = '@SYSTEM@' cpu_family = '@CPU_FAMILY@' cpu = '@CPU@' endian = '@ENDIAN@' picolibc-1.7.4/doc/000077500000000000000000000000001414576234500140675ustar00rootroot00000000000000picolibc-1.7.4/doc/build.md000066400000000000000000000510741414576234500155170ustar00rootroot00000000000000# Building Picolibc Picolibc is designed to be cross-compiled for embedded systems on a Linux host using GCC. There is some support for Clang, but that doesn't include the built-in multilib support. Picolibc uses the meson build system, which is a slightly quirky build system designed to replace autotools with a single language. Picolibc requires meson version 0.50 or newer. If your operating system provides an older version, you can get the latest using pip. For example, on a Debian or Ubuntu system, you would do: $ sudo apt install pip $ pip install meson On POSIX systems, meson uses the low-level 'ninja' build tool and currently requires at least ninja version 1.5. If your operating system doesn't provide at least this version, head over to [ninja-build.org](https://ninja-build.org) to find out how to download and install the latest bits. ## Selecting build options Use -D= on the meson command line to change from the default value. Many of these options set configuration values for the newlib code base and should match that configuration system. The defaults should be reasonable for small embedded systems. ### General build options These options control some general build configuration values. | Option | Default | Description | | ------ | ------- | ----------- | | fast-strcmp | true | Always optimize strcmp for performance (to make Dhrystone happy) | | have-alias-attribute | auto | Compiler supports __alias__ attribute (default autodetected) | | have-format-attribute | auto | Compiler supports __format__ attribute (default autodetected) | | multilib | true | Build every multilib configuration supported by the compiler | | multilib-list | | If non-empty, the set of multilib configurations to compile for | | native-tests | false | Build tests against native libc (used to validate tests) | | picolib | true | Include picolib bits for tls and sbrk support | | picocrt | true | Build crt0.o (C startup function) | | specsdir | auto | Where to install the .specs file (default is in the GCC directory) | | sysroot-install | false | Install in GCC sysroot location (requires sysroot in GCC) | | tests | false | Enable tests | | tinystdio | true | Use tiny stdio from avr libc | If you set `specsdir` to `none`, then picolibc.specs will not be installed at all. ### Options applying to both legacy stdio and tinystdio These options extend support in printf and scanf for additional types and formats. | Option | Default | Description | | ------ | ------- | ----------- | | io-c99-formats | true | Enable C99 support in IO functions like printf/scanf | | io-long-long | false | Enable long long type support in IO functions like printf/scanf. | `long long` support is always enabled for the tinystdio full printf/scanf modes, the `io-long-long` option adds them to the limited (float and integer) versions, as well as to the original newlib stdio bits. ### Options when using tinystdio bits These options apply when tinystdio is enabled, which is the default. For stdin/stdout/stderr, the application will need to provide `stdin`, `stdout` and `stderr`, which are three pointers to FILE structures (which can all reference a single shared FILE structure, and which can be aliases to the same underlying global pointer). Note that while posix-io support is enabled by default, using it will require that the underlying system offer the required functions. POSIX console support offers built-in `stdin`, `stdout` and `stderr` definitions which use the same POSIX I/O functions. | Option | Default | Description | | ------ | ------- | ----------- | | atomic-ungetc | true | Make getc/ungetc re-entrant using atomic operations | | io-float-exact | true | Provide round-trip support in float/string conversions | | io-long-long | false | Include long-long support in integer-only printf function | | posix-io | true | Provide fopen/fdopen using POSIX I/O (requires open, close, read, write, lseek) | | posix-console | false | Use POSIX I/O for stdin/stdout/stderr | ### Options when using legacy stdio bits Normally, Picolibc is built with the small stdio library adapted from avrlibc (tinystdio=true). It still has the original newlib stdio bits and those still work (tinystdio=false), but depend on POSIX I/O functions from the underlying system, and perform many malloc calls at runtime. These options are relevant only in that configuration | Option | Default | Description | | ------ | ------- | ----------- | | newlib-elix-level | 0 | Extends stdio API based on level | | newlib-fseek-optimization | false | Enable fseek optimization | | newlib-fvwrite-in-streamio | false | Enable iov in streamio | | newlib-global-stdio-streams | false | Enable global stdio streams | | newlib-have-fcntl | false | System has fcntl function available | | newlib-io-float | false | Enable printf/scanf family float support | | newlib-io-pos-args | false | Enable printf-family positional arg support | | newlib-io-long-double | false | Enable long double type support in IO functions printf/scanf | | newlib-nano-formatted-io | false | Use nano version formatted IO | | newlib-reent-small | false | Enable small reentrant struct support | | newlib-stdio64 | true | Include 64-bit APIs | | newlib-unbuf-stream-opt | false | Enable unbuffered stream optimization in streamio | | newlib-wide-orient | false | Turn off wide orientation in streamio | ### Internationalization options These options control which character sets are supported by iconv. | Option | Default | Description | | ------ | ------- | ----------- | | newlib-iconv-encodings | | Comma-separated list of iconv encodings to be built-in (default all supported) | | newlib-iconv-from-encodings | | Comma-separated list of "from" iconv encodings to be built-in (default iconv-encodings) | | newlib-iconv-to-encodings | | Comma-separated list of "to" iconv encodings to be built-in (default iconv-encodings) | | newlib-iconv-external-ccs | false | Use file system to store iconv tables. Requires fopen. (default built-in to memory) | Thes options control how much Locale support is included in the library. By default, picolibc only supports the 'C' locale. | Option | Default | Description | | ------ | ------- | ----------- | | newlib-locale-info | false | Enable locale support | | newlib-locale-info-extended | false | Enable even more locale support | | newlib-mb | false | Enable multibyte support | ### Startup/shutdown options These control how much support picolibc includes for calling functions at startup and shutdown times. | Option | Default | Description | | ------ | ------- | ----------- | | lite-exit | true | Enable light weight exit | | newlib-atexit-dynamic-alloc | false | Enable dynamic allocation of atexit entries | | newlib-global-atexit | false | Enable atexit data structure as global | | newlib-initfini | true | Support _init() and _fini() functions in picocrt | | newlib-initfini-array | true | Use .init_array and .fini_array sections in picocrt | | newlib-register-fini | false | Enable finalization function registration using atexit | ### Thread local storage support By default, Picolibc can uses native TLS support as provided by the compiler, this allows re-entrancy into the library if the run-time environment supports that. A TLS model is specified only when TLS is enabled. The default TLS model is local-exec. As a separate option, you can make `errno` not use TLS if necessary. | Option | Default | Description | | ------ | ------- | ----------- | | thread-local-storage | auto | Use TLS for global variables. Default is automatic based on compiler support | | tls-model | local-exec | Select TLS model (global-dynamic, local-dynamic, initial-exec or local-exec) | | newlib-global-errno | false | Use single global errno even when thread-local-storage=true | ### Malloc option Picolibc offers two malloc implementations, the larger version offers better performance on large memory systems and for applications doing a lot of variable-sized allocations and deallocations. The smaller, default, implementation works best when applications perform few, persistent allocations. | Option | Default | Description | | ------ | ------- | ----------- | | newlib-nano-malloc | true | Use small-footprint nano-malloc implementation | ### Locking support There are some functions in picolibc that use global data that needs protecting when accessed by multiple threads. The largest set of these are the legacy stdio code, but there are other functions that can use locking, e.g. when newlib-global-atexit is enabled, calls to atexit need to lock the shared global data structure if they may be called from multiple threads at the same time. By default, all of this is disabled as it would require underlying system support. | Option | Default | Description | | ------ | ------- | ----------- | | newlib-retargetable-locking | false | Allow locking routines to be retargeted at link time | | newlib-multithread | false | Enable support for multiple threads | ### Legacy newlib options These either have no effect or should not be enabled in normal use of picolibc, they're left in the library to help users porting from newlib environments. | Option | Default | Description | | ------ | ------- | ----------- | | newlib-long-time_t | false | Define time_t to long instead of using a 64-bit type | | newlib-supplied-syscalls | false | Enable newlib supplied syscalls (obsolete) | | newlib-reentrant-syscalls-provided| false| Underlying system provides reentrant syscall API | | newlib-missing-syscall-names| false | Underlying system provides syscall names without leading underscore | ### Math library options There are two versions of many libm functions, old ones from SunPro and new ones from ARM. The new ones are usually better for current hardware, except that the float-valued functions use double-precision computations. On systems with HW double support, that's likely a good choice. On sytems without HW double support, that's going to pull in SW double code. POSIX requires many of the math functions to set errno when exceptions occur; disabling that makes them only support fenv() exception reporting. | Option | Default | Description | | ------ | ------- | ----------- | | newlib-obsolete-math | auto | Use old code for both float and double valued functions | | newlib-obsolete-math-float | auto | Use old code for float-valued functions | | newlib-obsolete-math-double | auto | Use old code for double-valued functions | | want-math-errno | false | Set errno when exceptions occur | ## Building for embedded RISC-V and ARM systems Meson sticks all of the cross-compilation build configuration bits in a separate configuration file. There are a bunch of things you need to set, which the build system really shouldn't care about. Example configuration settings for RISC-V processors are in cross-riscv64-unknown-elf.txt: [binaries] c = 'riscv64-unknown-elf-gcc' ar = 'riscv64-unknown-elf-ar' as = 'riscv64-unknown-elf-as' ld = 'riscv64-unknown-elf-ld' strip = 'riscv64-unknown-elf-strip' [host_machine] system = 'unknown' cpu_family = 'riscv' cpu = 'riscv' endian = 'little' [properties] c_args = [ '-nostdlib', '-msave-restore', '-fno-common' ] # default multilib is 64 bit c_args_ = [ '-mcmodel=medany' ] needs_exe_wrapper = true skip_sanity_check = true Settings for ARM processors are in cross-arm-none-eabi.txt: [binaries] c = 'arm-none-eabi-gcc' ar = 'arm-none-eabi-ar' as = 'arm-none-eabi-as' ld = 'arm-none-eabi-ld' strip = 'arm-none-eabi-strip' [host_machine] system = 'none' cpu_family = 'arm' cpu = 'arm' endian = 'little' [properties] c_args = [ '-nostdlib', '-fno-common' ] needs_exe_wrapper = true skip_sanity_check = true If those programs aren't in your path, you can edit the file to point wherever they may be. ### Auto-detecting the compiler multi-lib configurations The PicoLibc configuration detects the processor configurations supported by the compiler using the `--print-multi-lib` command-line option: $ riscv64-unknown-elf-gcc --print-multi-lib .; rv32e/ilp32e;@march=rv32e@mabi=ilp32e rv32ea/ilp32e;@march=rv32ea@mabi=ilp32e rv32em/ilp32e;@march=rv32em@mabi=ilp32e rv32eac/ilp32e;@march=rv32eac@mabi=ilp32e rv32emac/ilp32e;@march=rv32emac@mabi=ilp32e rv32i/ilp32;@march=rv32i@mabi=ilp32 rv32if/ilp32f;@march=rv32if@mabi=ilp32f rv32ifd/ilp32d;@march=rv32ifd@mabi=ilp32d rv32ia/ilp32;@march=rv32ia@mabi=ilp32 rv32iaf/ilp32f;@march=rv32iaf@mabi=ilp32f rv32imaf/ilp32f;@march=rv32imaf@mabi=ilp32f rv32iafd/ilp32d;@march=rv32iafd@mabi=ilp32d rv32im/ilp32;@march=rv32im@mabi=ilp32 rv32imf/ilp32f;@march=rv32imf@mabi=ilp32f rv32imfc/ilp32f;@march=rv32imfc@mabi=ilp32f rv32imfd/ilp32d;@march=rv32imfd@mabi=ilp32d rv32iac/ilp32;@march=rv32iac@mabi=ilp32 rv32imac/ilp32;@march=rv32imac@mabi=ilp32 rv32imafc/ilp32f;@march=rv32imafc@mabi=ilp32f rv32imafdc/ilp32d;@march=rv32imafdc@mabi=ilp32d rv64i/lp64;@march=rv64i@mabi=lp64 rv64if/lp64f;@march=rv64if@mabi=lp64f rv64ifd/lp64d;@march=rv64ifd@mabi=lp64d rv64ia/lp64;@march=rv64ia@mabi=lp64 rv64iaf/lp64f;@march=rv64iaf@mabi=lp64f rv64imaf/lp64f;@march=rv64imaf@mabi=lp64f rv64iafd/lp64d;@march=rv64iafd@mabi=lp64d rv64im/lp64;@march=rv64im@mabi=lp64 rv64imf/lp64f;@march=rv64imf@mabi=lp64f rv64imfc/lp64f;@march=rv64imfc@mabi=lp64f rv64imfd/lp64d;@march=rv64imfd@mabi=lp64d rv64iac/lp64;@march=rv64iac@mabi=lp64 rv64imac/lp64;@march=rv64imac@mabi=lp64 rv64imafc/lp64f;@march=rv64imafc@mabi=lp64f rv64imafdc/lp64d;@march=rv64imafdc@mabi=lp64d $ arm-none-eabi-gcc --print-multi-lib .; thumb;@mthumb hard;@mfloat-abi=hard thumb/v6-m;@mthumb@march=armv6s-m thumb/v7-m;@mthumb@march=armv7-m thumb/v7e-m;@mthumb@march=armv7e-m thumb/v7-ar;@mthumb@march=armv7 thumb/v8-m.base;@mthumb@march=armv8-m.base thumb/v8-m.main;@mthumb@march=armv8-m.main thumb/v7e-m/fpv4-sp/softfp;@mthumb@march=armv7e-m@mfpu=fpv4-sp-d16@mfloat-abi=softfp thumb/v7e-m/fpv4-sp/hard;@mthumb@march=armv7e-m@mfpu=fpv4-sp-d16@mfloat-abi=hard thumb/v7e-m/fpv5/softfp;@mthumb@march=armv7e-m@mfpu=fpv5-d16@mfloat-abi=softfp thumb/v7e-m/fpv5/hard;@mthumb@march=armv7e-m@mfpu=fpv5-d16@mfloat-abi=hard thumb/v7-ar/fpv3/softfp;@mthumb@march=armv7@mfpu=vfpv3-d16@mfloat-abi=softfp thumb/v7-ar/fpv3/hard;@mthumb@march=armv7@mfpu=vfpv3-d16@mfloat-abi=hard thumb/v7-ar/fpv3/hard/be;@mthumb@march=armv7@mfpu=vfpv3-d16@mfloat-abi=hard@mbig-endian thumb/v8-m.main/fpv5-sp/softfp;@mthumb@march=armv8-m.main@mfpu=fpv5-sp-d16@mfloat-abi=softfp thumb/v8-m.main/fpv5-sp/hard;@mthumb@march=armv8-m.main@mfpu=fpv5-sp-d16@mfloat-abi=hard thumb/v8-m.main/fpv5/softfp;@mthumb@march=armv8-m.main@mfpu=fpv5-d16@mfloat-abi=softfp thumb/v8-m.main/fpv5/hard;@mthumb@march=armv8-m.main@mfpu=fpv5-d16@mfloat-abi=hard On RISC-V, PicoLibc is compiled 36 times, while on ARM, the library is compiled 20 times with the specified compiler options (replace the '@'s with '-' to see what they will be). ### Running meson Because Picolibc targets smaller systems like the SiFive FE310 or ARM Cortex-M0 parts with only a few kB of RAM and flash, the default values for all of the configuration options are designed to minimize the library code size. Here's the [do-riscv-configure](../do-riscv-configure) script from the repository that configures the library for small RISC-V systems: #!/bin/sh ARCH=riscv64-unknown-elf DIR=`dirname $0` meson "$DIR" \ -Dincludedir=picolibc/$ARCH/include \ -Dlibdir=picolibc/$ARCH/lib \ --cross-file "$DIR"/cross-$ARCH.txt \ "$@" This script is designed to be run from a build directory, so you'd do: $ mkdir build-riscv64-unknown-elf $ cd build-riscv64-unknown-elf $ ../do-riscv-configure ### Compiling Once configured, you can compile the libraries with $ ninja ... $ ninja install ... $ picolibc-1.7.4/doc/embedsource.md000066400000000000000000000055041414576234500167120ustar00rootroot00000000000000# Using picolibc as an embedded source For projects where deterministic builds, reproduceability and traceability is important, it is possible to embed the entire picolibc library as a meson subproject into the source directory of the main project. The benefit is that git submodules and meson subprojects work nicely together, and it is possible to lock down the libc version together with the source tree. For more information on the meson subproject feature, refer to the documentation at : https://mesonbuild.com/Subprojects.html ## Adding picolibc as a subproject First you need to add picolibc as a git submodule: ``` mkdir subprojects git submodule add https://github.com/keith-packard/picolibc subprojects/picolibc ``` Your source directory could now look something like this: ``` subprojects/ picolibc/ otherlib/ src/ main.c meson.build ``` ## Add dependency to meson.build First of all, when using picolibc as an embedded source, you should not specify -specs=picolibc.specs in the c_args. Next you will need to include the dependency in your meson.build file: ``` dependencies += dependency('picolibc', fallback: ['picolibc', 'picolibc_dep']) ``` In order to avoid linker conflicts with any compiler bundled c-library, use the following link flags (also see the warning below): ``` link_args += '-nolibc' link_args += '-lgcc' ``` Finally use the dependency and linker arguments on your executable ``` exec = executable('myproject.elf', sources, dependencies: dependencies, link_args: link_args) ``` ## Warning: Remove bundled libc (newlib) As of today there is no option in gcc to ignore the bundled c-library. The development version GCC 9.0 will have an `-nolibc` option that we are waiting for. So currently the only way to avoid including the headers of the bundled library is to use the `-nostdinc` option. However, this also removes all the include directories, including the headers for libgcc, which we want. And i have found no good poartable way of re-adding the libgcc include header path. So until a better solution appears, it is best to uninstall the c-library if possible. On Debian/Ubuntu, the gcc-arm-none-eabi and libnewlib-arm-none-eabi are separate packages, so just uninstall libnewlib and any conflict is avoided. You can run a command in order to check which standard paths are included with your GCC: ``` echo | arm-none-eabi-gcc -E -Wp,-v - /usr/lib/gcc/arm-none-eabi/7.3.1/include /usr/lib/gcc/arm-none-eabi/7.3.1/include-fixed /usr/lib/gcc/arm-none-eabi/7.3.1/../../../arm-none-eabi/include <-- This is newlib (configured through ubuntu /etc/alternatives) sudo apt remove libnewlib-arm-none-eabi libnewlib-dev echo | arm-none-eabi-gcc -E -Wp,-v - /usr/lib/gcc/arm-none-eabi/7.3.1/include /usr/lib/gcc/arm-none-eabi/7.3.1/include-fixed picolibc-1.7.4/doc/init.md000066400000000000000000000045251414576234500153620ustar00rootroot00000000000000# Initializers/Constructors and Finalizers/Destructors in Picolibc The `__libc_init_array` and `__libc_fini_array` functions in Picolibc are called by Picocrt during application startup and shutdown. If you have custom start up code that replaces Picocrt, you probably want to call these as well. ## `__libc_init_array` This function performs application initialization by calling: 1) Functions listed in the preinit array 2) _init function 3) Functions listed in the init array ### _init function Your program may declare an optional initialization function called `_init`. If such a function is included in the binary it will be called before the init array contents are evaluated. ## `__libc_fini_array` Most embedded applications never return from main, but if yours does, Picocrt will call: 1) Functions listed in the fini array 2) _fini function ### _fini function Your program may declare an optional finalization function called `_fini`. If such a function is included in the binary it will be called after the fini array contents are evaluated. ## Automatically generated arrays of function pointers The `.preinit_array`, `.init_array` and `.fini_array` segments are built by the linker using data generated by the compiler. When you decorate a function with `__attribute__((constructor))`, the compiler places the address of the function into the `.init_array` segment. Decorate a function with `__attribute__((destructor))` and the compiler will place its address in the `.fini_array` segment. The `.preinit_array` segment is generated internally by the compiler for things like C++ vtable validation The linker script should collect all of the data from these segments into memory (probably flash as it doesn't change) so that the image ends up with arrays of function pointers. For data from the `.init_array` segment, the array should start with the symbol `__init_array_start` and ending with `__init_array_end`. For data from the `.fini_array` segment, the array should start with the symbol `__fini_array_start` and end with `__fini_array_end`. Finally, for data from the `.preinit_array` segment, the array starts with `__preinit_array_start` and ends with `__preinit_array_end`. Each of these arrays are complicated by the optional priority assigned to destructors and constructors, and the presense of the deprecated `.ctors` and `.dtors` segments. picolibc-1.7.4/doc/linking.md000066400000000000000000000152431414576234500160510ustar00rootroot00000000000000# Linking Picolibc applications Linking embedded applications requires significant target-specific information, including the location of various memory sections along with a range of application-specific memory settings. You can create your own custom linker script, or you can use the linker script provided by Picolibc. This document describes how to do either. ## Creating a Custom Linker Script Aside from the application and hardware specific aspects of creating a linker script, if your application is using the Picolib startup code, then you need to define the addresses used in that code, and set up the data as required. Checkout the [Initializers in Picolibc](init.md) document for details on what names to declare. To use a custom linker script when linking with gcc using `-specs=picolibc.specs`, you'll need to use the gcc `-T` option instead of using the `-Wl,-T` linker pass through option. This causes `picolibc.specs` to not add the picolibc linker script along with your custom one: gcc -specs=picolibc.specs -Tcustom.ld ## Using picolibc.ld Picolibc provides a default linker script which can often be used to link applications, providing that your linking requirements are fairly straightforward. To use picolibc.ld, you'll create a custom linker script that sets up some variables and then INCLUDE's picolibc.ld. Here's a sample custom linker script `sample.ld`: __flash = 0x08000000; __flash_size = 128K; __ram = 0x20000000; __ram_size = 16k; __stack_size = 512; INCLUDE picolibc.ld This is for an STM32L151 SoC with 128kB of flash and 16kB of RAM. We want to make sure there's space for at least 512 bytes of stack. To use this with gcc, the command line would look like this: gcc -specs=picolibc.specs -Tsample.ld ### Defining Memory Regions Picolibc.ld defines only two memory regions: `flash` and `ram`. Flash is an addressable region of read-only memory which holds program text, constant data and initializers for read-write data. Ram is read-write memory which needs to be initialized before your application starts. As shown above, you declare the base and size of both memory regions in your linker script: * `__flash` specifies the lowest address in read-only memory used by your application. This needs to be in flash, but need not be the start of actual flash in the device. * `__flash_size` specifies the amount of read-only memory you want to allow the application to fill. This need not be all of the available memory. * `__ram` specifies the lowest address you want the linker to allocate to read-write data for the application. * `__ram_size` specifies the maximum amount of read-write memory you want to permit the application to use. * `__stack_size` reserves this much space at the top of ram for the initial stack. ### Arranging Code and Data in Memory Where bits of code and data land in memory can be controlled to some degree by placing variables and functions in various sections by decorating them with `__attribute__ ((section(`*name*`)))`. You'll find '*' used in the following defintions; that can be replaced with any string. For instance, when you use -ffunction-sections or -fdata-sections with gcc, that creates a section named `.text.`*function-name* for each function and `.data.`*variable-name* for each variable. Here are all of the section names used in picolibc.ld: #### Flash contents These are stored in flash and used directly from flash. 1. Contents located first in flash. These can be used for interrupt vectors or startup code. * `.text.init.enter` * `.data.init.enter` * `.init`, `.init.*` 2. The bulk of the application code * `.text.unlikely`, `.text.unlikely.*` * `.text.startup`, `.text.startup.*` * `.text`, `.text.*` * `.gnu.linkonce.t.*` 3. Cleanup routines * `.fini`, `.fini.*` 4. Read-only data * `.rdata` * `.rodata`, `.rodata.*` * `.gnu.linkonce.r.*` * `.srodata.cst16` * `.srodata.cst8` * `.srodata.cst4` * `.srodata.cst2` * `.srodata`, `.srodata.*` * `.data.rel.ro`, `.data.rel.ro.*` * `.got`, `.got.*` 5. Addresses of pre-initialization functions. Each of the addresses in the list is called during program initialization, before `_init()`. * `.preinit_array` 6. Addresses of initializer/constructor functions. Each of the addresses in the list is called during program initialization, before `main()`. * `.init_array`, `.ctors` 7. Addresses of de-initializer/destructor functions. Each of the addresses in the list is called after the program finishes, after `main()`. * `.fini_array`, `.dtors` #### Uninitialized ram contents You can place items in RAM that is *not* initialized by picolibc. These can be handy if you need values in memory to survive reset, perhaps as a way to communicate from the application to a boot loader or similar. These are placed first in RAM and are sorted by name so that the order is consistent across linking operations: 1. `.preserve.*` 2. `.preserve` #### Initialized ram contents picolibc.ld places values for variables with explicit initializers in flash and marks the location in flash and in RAM. At application startup, picocrt uses those recorded addresses to copy data from flash to RAM. As a result, any initialized data takes twice as much memory; the initialization values stored in flash and the runtime values stored in ram. Making values read-only where possible saves the RAM. 1) `.data`, `.data.*` 2) `.gnu.linkonce.d.*` 3) `.sdata`, `.sdata.*`, `.sdata2.*` 4) `.gnu.linkonce.s.*` Picolibc uses native toolchain TLS support for values which should be per-thread. This means that variables like `errno` will be referenced using TLS mechanisms. To make these work even when the application doesn't support threading, Picolibc allocates a static copy of the TLS data in RAM. Picocrt initializes the architecture TLS mechanism to reference this static copy. By arranging the static copy of initialized and zero'd TLS data right at the data/bss boundary, picolibc can initialize the TLS block as a part of initializing RAM with no additional code. This requires a bit of a trick as the linker doesn't allocate any memory for TLS bss segments; picolibc.ld makes space by simply advancing the memory location by the size of the TLS bss segment. 1) `.tdata`, `.tdata.*`, `.gnu.linkonce.td.*` #### Cleared ram contents Variables without any explicit initializers are set to zero by picocrt at startup time. The first chunk of these is part of the TLS block: 1) `.tbss`, `.tbss.*`, `.gnu.linkonce.tb.*` 2) `.tcommon` After the TLS bss section comes the regular BSS variables: 1) `.sbss*` 2) `.gnu.linkonce.sb.*` 3) `.bss`, `.bss.*` 4) `.gnu.linkonce.b.*` 5) `COMMON` picolibc-1.7.4/doc/os.md000066400000000000000000000162701414576234500150400ustar00rootroot00000000000000# Picolibc and Operating Systems Picolibc is designed to be operating-system independent, so it doesn't embed any operating system support into libc. Some portions of Picolibc need system support, like I/O and task termination. ## System Interfaces used by Picolibc Here's the full list of system functions used by Picolibc, split into sections based on what libc support they enable ### stdin/stdout/stderr Picolibc stdio splits support for simple console input/output and more complex file operations so that a minimal system can easily support the former with only a few functions. To get stdin/stdout/stderr working, the application needs to define the `stdin`, `stdout` and `stderr` globals, which contain pointers to FILE objects. The pointers may reside in read-only memory, but the FILE objects may not. A single FILE object may be used for all three pointers, and linker aliases may be used to make all three pointers be stored in the same location. The FILE object contains function pointers for putc, getc, which might be defined as follows: static int sample_putc(char c, FILE *file) { (void) file; /* Not used in this function __uart_putc(c); /* Defined by underlying system */ return c; } static int sample_getc(FILE *file) { unsigned char c; (void) file; /* Not used in this function */ c = __uart_getc(); /* Defined by underlying system */ return c; } It also contains a pointer to an optional `flush` function, which, if provide, will be called to flush pending output to the file, e.g., when the `fflush()` function is called: static int sample_flush(FILE *file) { /* This function doesn't need to do anything */ (void) file; /* Not used in this function */ return 0; } These functions are used to initialize a FILE structure: static FILE __stdio = FDEV_SETUP_STREAM(sample_putc, sample_getc, NULL, _FDEV_SETUP_RW); This defines a FILE which can read and write characters using the putc and getc functions described above, but not using any flush function. The final paramter, which specifies the operations supported, can be one of the following: | Mode | Operations | Required Functions | |-------------------|------------|--------------------| | _FDEV_SETUP_READ | Read | getc | | _FDEV_SETUP_WRITE | Write | putc | | _FDEV_SETUP_RW | Read/Write | putc, getc | Finally, the FILE is used to initialize the `stdin`, `stdout` and `stderr` values, the latter two of which are simply aliases to `stdin`: FILE *const stdin = &__stdio; __strong_reference(stdin, stdout); __strong_reference(stdin, stderr); ### fopen, fdopen Support for these requires malloc/free along with a handful of POSIX-compatible functions: int open (const char *, int, ...); int close (int fd); ssize_t read (int fd, void *buf, size_t nbyte); ssize_t write (int fd, const void *buf, size_t nbyte); off_t lseek (int fd, off_t offset, int whence); The code needed for this is built into Picolibc by default, but can be disabled by specifying `-Dposix-io=false` in the meson command line. ### exit Exit is just a wrapper around _exit that also calls destructors and callbacks registered with atexit. To make it work, you'll need to implement the `_exit` function: void _exit (int status) _ATTRIBUTE ((__noreturn__)); ### malloc and free Both versions of malloc in picolibc require sbrk to be supported. The smaller version, enabled (by default) with -Dnewlib-nano-malloc=true, can handle sbrk returning dis-continuous memory while the larger version (enabled with -Dnewlib-nano-malloc=false) requires sbrk return contiguous chunks of memory. ### sbrk Picolibc includes a simple version of sbrk that can return chunks of memory from a pre-defined contiguous heap. To use this function, your application linking process needs to define two symbols: * __heap_start — points at the start of the heap available for sbrk. * __heap_end — points at the end of the heap available for sbrk. The sample linker script provided with picolibc defines these two symbols to enclose all RAM which is not otherwise used by the application. ## Linking with System Library To get Picolibc to use a system library, that library needs to be specified *after* libc on the linker command line. The picolibc.specs file provides a way to specify a library after libc using the `--oslib=` parameter: $ gcc -o program.elf program.o --oslib=myos This will include -lmyos after -lc so that the linker can resolve functions used by picolibc from libmyos.a. You can, alternatively, include the functions in object files with the rest of your application, which avoids the problem with libraries. Note that this mechanism requires the definition of _exit in the myos library. ## Semihosting support For RISC-V and ARM processors, Picolibc provides an implementation of all of the above functions along with a couple more POSIX APIs used by the Picolibc test suite. This implementation relies on semihosting support from the execution environment, which is available when running under qemu or when using openocd and gdb. Link this into your application using `--oslib=semihost` in your link command line. Please note that this will replace the default `crt0` with a variant calling `exit` upon return from `main`. The default is to enter an infinite loop, and the change ensure a clean return to the execution environment. ## POSIX console support As a build-time option, Picolibc can be configured to use POSIX read and write APIs to support stdin, stdout and stderr. Add `-Dposix-console=true` to enable this. This is incompatible with semihosting support above. ## Building picolibc on native POSIX systems To allow for testing of picolibc and applications using picolibc, you can actually build picolibc on a full POSIX system. In this configuration, picolibc provides the non-POSIX libc APIs while the underlying system C library is used for the POSIX functions described above. To build in this mode, you'll need to override a few default picolibc configuration parameters: $ meson \ -Dtls-model=global-dynamic \ -Dmultilib=false \ -Dpicolib=false \ -Dpicocrt=false \ -Dposix-console=true \ -Dnewlib-global-atexit=true \ -Dincludedir=lib/picolibc/include \ -Dlibdir=lib/picolibc/lib \ -Dspecsdir=none * -Dtls-model=global-dynamic makes picolibc use the default TLS model for GCC. * -Dmultilib-false makes picolibc build only a single library for the default GCC configuration. * -Dpicolib=false disables building the TLS and sbrk support built-in to picolibc so that the underlying system support is used instead. * -Dpicocrt=false disables building the C startup code as that is provided by the underlying system. * -Dposix-console=true uses POSIX I/O read/write APIs for stdin, stdout and stderr. * -Dnewlib-global-atexit=true disables the per-thread atexit behavior so that picolibc acts like a regular C library. * -Dincludedir and -Dlibdir specify install locations for the headers and library * -Dspecsdir=none disables installing picolibc.specs as that file is not useful in this environment Once built, you can install and use picolibc on the host: $ cc -I/usr/local/lib/picolibc/include hello-world.c \ /usr/local/lib/picolibc/lib/libc.a picolibc-1.7.4/doc/picolibc.svg000066400000000000000000000064071414576234500164030ustar00rootroot00000000000000 image/svg+xml c -9 picolibc-1.7.4/doc/printf.md000066400000000000000000000247231414576234500157230ustar00rootroot00000000000000# Printf and Scanf in Picolibc Embedded systems are often tightly constrained on code space, which makes it important to be able to only include code and data actually needed by the application. The format-string based interface to printf and scanf makes it very difficult to determine which conversion operations might be needed by the application. Picolibc handles this by providing multiple printf and scanf implementations in the library with varying levels of conversion support. The application developer selects among these at compile and link time based on knowledge of the requirements of the application. The selection is done using a compiler command line definition of a preprocessor symbol which maps the public printf and scanf names to internal names in the linker. The function name mapping happens in picolibc.specs file which scans the compiler command line looking for the preprocessor token and uses that to add --defsym options when linking. This means the preprocessor definition must be set on the command line and not in a file. Using the defsym approach, rather than renaming the functions with the C preprocessor has a couple of benefits: * Printf uses within picolibc (which are all integer-only) now share whichever printf the application needs, avoiding including both integer-only and float versions * Printf optimizations in the compiler which map to puts or fputs now work even when using integer-only or float printf functions. Because the linker gets --defsym flags for both vfprintf and vfscanf, those functions will always get included in the link process. To avoid linking them into the application when they aren't otherwise needed, picolibc.specs includes the --gc-sections linker flag. This causes those functions to be discarded if they aren't used in the application. However, the defsym approach does not work with link-time optimization. In that case, applications can only use the default function. For that case, the library needs to allow a different default version to be selected while compiling the library. ## Printf and Scanf levels in Picolibc There are three levels of printf support provided by Picolibc that can be selected when building applications. One of these is the default used when no symbol definitions are applied; that is selected using the picolibc built-time option, `-Dformat-default`, which defaults to `double`, selecting PICOLIBC_DOUBLE_PRINTF_SCANF. * PICOLIBC_DOUBLE_PRINTF_SCANF (default when `-Dformat-default=double`). This offers full printf functionality, including both float and double conversions. The picolibc.specs stanza that matches this option maps __d_vfprintf to vfprintf and __d_vfscanf to vfscanf. This is equivalent to adding this when linking your application: cc -Wl,--defsym=vfprintf=__d_vfprintf -Wl,--defsym=vfscanf=__d_vfscanf If you're using a linker that supports -alias instead of --defsym, you would use: cc -Wl,-alias,___d_vfprintf,_vfprintf -Wl,-alias,___d_vfscanf,_vfscanf * PICOLIBC_INTEGER_PRINTF_SCANF (default when `-Dformat-default=integer`). This removes support for all float and double conversions. The picolibc.specs stanza that matches this option maps __i_vfprintf to vfprintf and __i_vfscanf to vfscanf. This is equivalent to adding this when linking your application: cc -Wl,--defsym=vfprintf=__i_vfprintf -Wl,--defsym=vfscanf=__i_vfscanf If you're using a linker that supports -alias instead of --defsym, you would use: cc -Wl,-alias,___i_vfprintf,_vfprintf -Wl,-alias,___i_vfscanf,_vfscanf * PICOLIBC_FLOAT_PRINTF_SCANF (default when `-Dformat-default=float`). This provides support for float, but not double conversions. When picolibc.specs finds -DPICOLIBC_FLOAT_PRINTF_SCANF on the command line during linking, it maps __f_vfprintf to vfprintf and __f_vfscanf to vfscanf. This is equivalent to adding this when linking your application: cc -Wl,--defsym=vfprintf=__f_vfprintf -Wl,--defsym=vfscanf=__f_vfscanf If you're using a linker that supports -alias instead of --defsym, you would use: cc -Wl,-alias,___f_vfprintf,_vfprintf -Wl,-alias,___f_vfscanf,_vfscanf PICOLIBC_FLOAT_PRINTF_SCANF requires a special macro for float values: `printf_float`. To make it easier to switch between that and the default level, that macro is also correctly defined for the other two levels. Here's an example program to experiment with these options: #include void main(void) { printf(" 2⁶¹ = %lld π ≃ %.17g\n", 1ll << 61, printf_float(3.141592653589793)); } Now we can build and run it with the double options: $ arm-none-eabi-gcc -DPICOLIBC_DOUBLE_PRINTF_SCANF -Os -march=armv7-m --specs=picolibc.specs --oslib=semihost --crt0=hosted -Wl,--defsym=__flash=0 -Wl,--defsym=__flash_size=0x00200000 -Wl,--defsym=__ram=0x20000000 -Wl,--defsym=__ram_size=0x200000 -o printf.elf printf.c $ arm-none-eabi-size printf.elf text data bss dec hex filename 7760 80 2056 9896 26a8 printf.elf $ qemu-system-arm -chardev stdio,id=stdio0 -semihosting-config enable=on,chardev=stdio0 -monitor none -serial none -machine mps2-an385,accel=tcg -kernel printf.elf -nographic 2⁶¹ = 2305843009213693952 π ≃ 3.141592653589793 Switching to float-only reduces the size but lets this still work, although the floating point value has reduced precision: $ arm-none-eabi-gcc -DPICOLIBC_FLOAT_PRINTF_SCANF -Os -march=armv7-m --specs=picolibc.specs --oslib=semihost --crt0=hosted -Wl,--defsym=__flash=0 -Wl,--defsym=__flash_size=0x00200000 -Wl,--defsym=__ram=0x20000000 -Wl,--defsym=__ram_size=0x200000 -o printf-float.elf printf.c $ arm-none-eabi-size printf-float.elf text data bss dec hex filename 6232 80 2056 8368 20b0 printf-float.elf $ qemu-system-arm -chardev stdio,id=stdio0 -semihosting-config enable=on,chardev=stdio0 -monitor none -serial none -machine mps2-an385,accel=tcg -kernel printf-float.elf -nographic 2⁶¹ = 2305843009213693952 π ≃ 3.1415927 Going to integer-only reduces the size even further, but now it doesn't output the values correctly: $ arm-none-eabi-gcc -DPICOLIBC_INTEGER_PRINTF_SCANF -Os -march=armv7-m --specs=picolibc.specs --oslib=semihost --crt0=hosted -Wl,--defsym=__flash=0 -Wl,--defsym=__flash_size=0x00200000 -Wl,--defsym=__ram=0x20000000 -Wl,--defsym=__ram_size=0x200000 -o printf-int.elf printf.c $ arm-none-eabi-size printf-int.elf text data bss dec hex filename 1856 80 2056 3992 f98 printf-int.elf $ qemu-system-arm -chardev stdio,id=stdio0 -semihosting-config enable=on,chardev=stdio0 -monitor none -serial none -machine mps2-an385,accel=tcg -kernel printf-int.elf -nographic 2⁶¹ = 0 π ≃ *float* ## Picolibc build options for printf and scanf options In addition to the application build-time options, picolibc includes a number of picolibc build-time options to control the feature set (and hence the size) of the library: * `-Dio-c99-formats=true` This option controls whether support for the C99 type-specific format modifiers 'j', 'z' and 't' and the hex float format 'a' are included in the library. Support for the C99 format specifiers like PRId8 is always provided. This option is enabled by default. * `-Dio-long-long=true` This option controls whether support for long long types is included in the integer-only version of printf and scanf. long long support is always included in the full and float-only versions of printf and scanf. This option is disabled by default. * `-Dio-float-exact=true` This option, which is enabled by default, controls whether the tinystdio code uses exact algorithms for printf and scanf. When enabled, printing at least 9 digits (e.g. "%.9g") for 32-bit floats and 17 digits (e.g. "%.17g") for 64-bit floats ensures that passing the output back to scanf will exactly re-create the original value. * `-Datomic-ungetc=true` This option, which is enabled by default, controls whether getc/ungetc use atomic instruction sequences to make them re-entrant. Without this option, multiple threads using getc and ungetc may corrupt the state of the input buffer. For compatibility with newlib printf and scanf functionality, picolibc can be compiled with the original newlib stdio code. That greatly increases the code and data sizes of the library, including adding a requirement for heap support in the run time system. Here are the picolibc build options for that code: * `-Dtinystdio=false` This disables the tinystdio code and uses original newlib stdio code. * `-Dnewlib-io-pos-args=true` This option add support for C99 positional arguments (e.g. "%1$"). This option is disabled by default. * `-Dnewlib-io-long-double=true` This option add support long double parameters. That is limited to systems using 80- and 128- bit long doubles, or systems for which long double is the same as double. This option is disabled by default * `-Dnewlib-stdio64=true` This option changes the newlib stdio code to use 64 bit values for file sizes and offsets. It also adds 64-bit versions of stdio interfaces which are defined with types which may be 32-bits (like 'long'). This option is enabled by default. ### Newlib floating point printf To build the `printf` sample program using the original newlib stdio code, the first step is to build picolibc with the right options. The 'nano' printf code doesn't support long-long integer output, so we can't use that, and we need to enable long-long and floating point support in the full newlib stdio code: $ mkdir build-arm; cd build-arm $ ../scripts/do-arm-configure -Dtinystdio=false -Dio-long-long=true -Dnewlib-io-float=true $ ninja install Now we can build the example with the library: $ arm-none-eabi-gcc -Os -march=armv7-m --specs=picolibc.specs --oslib=semihost --crt0=hosted -Wl,--defsym=__flash=0 -Wl,--defsym=__flash_size=0x00200000 -Wl,--defsym=__ram=0x20000000 -Wl,--defsym=__ram_size=0x200000 -o printf.elf printf.c $ arm-none-eabi-size printf.elf text data bss dec hex filename 16008 824 2376 19208 4b08 printf.elf $ qemu-system-arm -chardev stdio,id=stdio0 -semihosting-config enable=on,chardev=stdio0 -monitor none -serial none -machine mps2-an385,accel=tcg -kernel printf.elf -nographic 2⁶¹ = 2305843009213693952 π ≃ 3.1415926535897931 This also uses 2332 bytes of space from the heap at runtime. Tinystdio saves 8088 bytes of text space and a total of 3396 bytes of data space. picolibc-1.7.4/doc/releasing.md000066400000000000000000000060061414576234500163640ustar00rootroot00000000000000# Releasing Picolibc Here are the current steps to perform when releasing a new version of picolibc: 1. Make sure the current code builds on all supported architectures: ** native ** 32-bit x86 ** RISC-V ** ARM 32-bit ** ARM 64-bit (aarch64) ** ESP8266 (xtensa-lx106) 2. Test on architectures that can do so * native * 64-bit x86 * 32-bit x86 * RISC-V, all targets (qemu) * ARM 32-bit, almost all targets (qemu) * ARM 64-bit 3. Verify that COPYING.picolibc includes information about the current source files 4. Add release notes to README.md 5. Update meson.build file with new version number 6. Commit release notes and meson.build $ git commit -m'Version ' README.md meson.build 7. Use native configuration to build release: $ mkdir -p builds/build-native $ cd builds/build-native $ ../../scripts/do-native-configure $ ninja dist 8. Use arm configuration to build bits for the Arm embedded toolkit: $ mkdir -p builds/build-arm $ cd builds/build-arm $ PATH=$ARM_TK/bin:$PATH ../../scripts/do-arm-configure -Dsysroot-install=true $ PATH=$ARM_TK/bin:$PATH DESTDIR=$PWD/dist ninja install $ cd dist/$ARM_TK $ zip -r picolibc--.zip . $ scp picolibc--.zip keithp.com:/var/www/picolibc/dist/gnu-arm-embedded 9. Tag release $ git tag -m'Version ' main 10. Push tag and branch to repositories $ git push origin main 11. Upload release to web site: $ scp build-native/meson-dist/* keithp.com:/var/www/picolibc/dist 12. Create new release on github site, pasting in relevant README.md section. Upload release tar and arm embedded toolkit zip files. 13. Email release message to mailing list. Paste in README.md section about the new release. ## Debian Packages Debian packaging information is contained on the 'debian' branch in the main picolibc repository. It's designed to be build using 'gbp buildpackage', the git-based debian package building system. Here's how to build debian packages: 1. Release upstream picolibc first 2. Checkout debian branch $ git checkout debian 3. Merge in main at the release tag $ git merge 4. Update debian packaging to current standards 5. Update debian/copyright from COPYING.picolibc $ cp COPYING.picolibc 6. Add new Debian change log entry $ dch -v -1 -D unstable 7. Commit debian changes to repository $ git commit -m'debian: Version -1' debian/changelog 8. Build debian packages $ gbp buildpackage 9. Verify package results remain lintian-clean: $ lintian --info --display-info --pedantic picolibc_-1_amd64.changes 10. Tag release $ git tag -m'debian: Version -1' -1 debian 11. Push tags and branches to salsa $ git push salsa main debian -1 12. Sign and upload source changes: $ debsign picolibc_-1_source.changes $ dput picolibc_-1_source.changes picolibc-1.7.4/doc/testing.md000066400000000000000000000021321414576234500160640ustar00rootroot00000000000000## Building for the local processor If you want to compile the library for your local processor to test changes in the library, the meson configuration is happy to do that for you. You won't need a meson cross compilation configuration file, so all you need is the right compile options. They're mostly the same as the embedded version, but you don't want the multi-architecture stuff and I prefer plain debug to an -Os, as that makes debugging the library easier. The do-native-configure script has an example: #!/bin/sh DIR=`dirname $0` meson $DIR \ -Dmultilib=false \ -Dnewlib-wide-orient=false\ -Dnewlib-nano-malloc=true\ -Dlite-exit=true\ -Dnewlib-global-atexit=true\ -Dincludedir=lib/newlib-nano/include \ -Dlibdir=lib/newlib-nano/lib \ -Dtests=true \ --buildtype debug Again, create a directory and build there: $ mkdir build-native $ cd build-native $ ../do-native-configure $ ninja This will also build a test case for printf and scanf in the 'test' directory, which I used to fix up the floating point input and output code. picolibc-1.7.4/doc/tls.md000066400000000000000000000070771414576234500152260ustar00rootroot00000000000000# Thread Local Storage in Picolibc Copyright © 2019 Keith Packard The standard C library API includes many functions that use persistent state held by the library not the application. One obvious example is 'errno', a global variable originall designed to hold error status from the Unix kernel, but which was co-opted by libc to provide additional error status values from the library itself. There are numerous other examples of this kind of state. To permit multiple threads sharing a single address space to use the library without conflicting over this data, each thread needs a private copy of data that it uses. Newlib did this by creating a global structure holding all thread-specific values and then defining an API for the library to get the global structure for the current thread. Picolibc does this by using the built-in thread-local-storage mechanisms in the toolchain. This has several benefits: 1) Source code is simpler as thread-local variables are accessed directly by name. 2) Thread local storage contains only values used by the application. 3) Generated code is smaller and faster. ## TLS model used by Picolibc Picolibc is normally compiled with -ftls-model=local-exec. The selected model is included in the .specs file so applications should not include -ftls-model in their compile commands. Local-exec defines a single block of storage for all TLS variables. Each TLS variable is assigned an offset within this block and those values are placed in the binary during relocation. ## Initial TLS block The sample Picolibc linker script (picolibc.ld) allocates RAM for an initial TLS block and arranges for it to be initialized as a part of the normal data/bss initialization process for the application. | flash | symbol | | ----- | ------ | | code | | | rodata | | | data initializers | __data_source | | TLS data initializers | __tdata_source | | RAM | symbol | | ---- | ------ | | data | __data_start | | TLS data | __tls_base | | | __data_end | | | __tdata_size = . - __tls_base | | TLS bss | __bss_start | | | __tbss_size = . - __bss_start | | | __tls_size = . - __tls_base | | bss | | | | __bss_end The crt0 code copies __data_end - __data_start bytes from _data_source to _data_start. This initializes the regular data segment *and* the initial TLS data segment. Then, it clears memory from __bss_start to __bss_end, initializing the TLS bss segment *and* the regular bss segment. Finally, it sets the architecture-specific TLS data pointer to __tls_base. Once that is set, access to TLS variables will reference this initial TLS block. ## Creating more TLS blocks If the application is multi-threaded and wants to allow these threads to have separate TLS data, it may allocate memory for additional TLS blocks: 1) Allocate a block of size __tls_size 2) Copy __tdata_size bytes from __tdata_source to the new block to set the initial TLS values. 3) Clear __tbss_size bytes starting _tdata_size bytes into the new block 4) Set the TLS pointer as necessary ## Picolibc APIs related to TLS Picolib provides a couple of helper APIs for TLS: * _set_tls ``` void _set_tls(void *tls); ``` This is an architecture-specific function which sets the TLS block pointer for the processor to `tls`. * _init_tls ``` void _init_tls(void *tls); ``` This function initializes the specified TLS block, copying values into the initialized data portion and clearing values in the uninitialized data portion. Picolib also provides architecture-specific internal GCC APIs as necessary, for example, __aeabi_read_tp for ARM processors. picolibc-1.7.4/doc/using.md000066400000000000000000000127541414576234500155470ustar00rootroot00000000000000# Using Picolibc in Embedded Systems Picolibc is designed to be used in deeply embedded systems, those running either no operating system or a small RTOS. It is designed to be linked statically along with any operating system and application code. ## Compiling with Picolibc To compile source code to use Picolibc, you can use the GCC .specs file delivered with Picolibc. This will set the system header file path and the linker library path to point at Picolibc. For example, to compile a single file and generate a .o file: $ gcc --specs=picolibc.specs -c foo.c When installed directly into the system, picolibc.specs is placed in the gcc directory so that it will be found using just the base name of the file. If installed in a separate location, you will need to provide an absolute pathname to the picolibc.specs file: $ gcc --specs=/usr/local/picolibc/picolibc.specs -c foo.c When building for an embedded system, you'll probably need to use a longer name for the compiler, something like `riscv-unknown-elf-gcc` or `arm-none-eabi-gcc`. ## Picolibc startup Initializing an embedded system usually requires a combination of hardware, run-time, library and application setup. You may want to perform all of these in your own code, or you be able to use the Picolibc startup code. Either works fine, using the Picolibc code means writing less of your own. ### Picocrt — Picolibc startup code Picocrt is the crt0.o code provided by Picolibc. This is enabled by default when using -specs=picolibc.specs: $ gcc -specs=picolibc.specs -o foo.elf foo.c Picocrt goes through a sequence of initialization steps, many of which you can plug your own code into: 1) Architecture-specific runtime initialization. For instance, RISC-V needs the `gp` register initialized for quick access to global variables while ARM with hardware floating point needs to have the FPSCR register set up to match C semantics for rounding. 2) Data initialization. Here's the code inside Picocrt:\ \ `memcpy(__data_start, __data_source, (uintptr_t) __data_size);`\ \ For this to work, the linker script must assign correct values to each of these symbols: * __data_start points to the RAM location where the .data segment starts. * __data_source points to the Flash location where the .data segment initialization values are stored. * __data_size is an absolute symbol noting the size of the initialized data segment 3) BSS initialization. Here's the code inside Picocrt:\ \ `memset(__bss_start, '\0', (uintptr_t) __bss_size);`\ \ Assign these symbols in the linker script as follows: * __bss_start points to the RAM location where the .bss segment starts. * __bss_size is an absolute symbol noting the size of the cleared data segment 4) Optionally call constructors: * The default and hosted crt0 variants call [initializers/constructors](init.md) using `__libc_init_array()` * The minimal crt0 variant doesn't call any constructors 5) Call `main()` 6) After main returns: * The default and minimal crt0 variants run an infinite loop if main returns. * The hosted crt0 variant calls `exit`, passing it the value returned from main. ## Linking Picolibc provides two sample linker scripts: `picolibc.ld` for C applications and `picolibcpp.ld` for C++ applications. These are designed to be useful for fairly simple applications running on embedded hardware which need read-only code and data stored in flash and read-write data allocated in RAM and initialized by picolibc at boot time. You can read more about this on the [linking](linking.md) page. ## Semihosting “Semihosting” is a mechanism used when the application is run under a debugger or emulation environment that provides access to some functionality of the OS running the debugger or emulator. Picolibc has semihosting support for console I/O and the exit() call. One common use for semihosting is to generate debug messages before any of the target hardware has been set up. Picolibc distributes the semihosting implementation as a separate library, `libsemihost.a`. Because it provides interfaces that are used by libc itself, it must be included in the linker command line *after* libc. You can do this by using the GCC --oslib=semihost command line flag defined by picolibc.specs: $ gcc --specs=picolibc.specs --oslib=semihost -o program.elf program.o You can also list libc and libsemihost in the correct order explicitly: $ gcc --specs=picolibc.specs -o program.elf program.o -lc -lsemihost ## Crt0 variants The default `crt0` version provided by Picolibc calls any constructors before it calls main and then goes into an infinite loop after main returns to avoid requiring an `_exit` function. In an environment which provides a useful `_exit` implementation, applications may want to use the `crt0-hosted` variant that calls `exit` when main returns, resulting in a clean return to the hosting environment (this conforms to a hosted execution environment as per the C specification). Select this using the `--crt0=hosted` flag: $ gcc --specs=picolibc.specs --crt0=hosted -o program.elf program.o In a smaller environment which is not using any constructors (or any Picolibc code which requires constructors) may want to use the `crt0-minimal` variant that removes the call to `__libc_init_array()`. This variant also runs an infinite loop in case main returns. Select this using the `--crt0=minimal` flag: $ gcc --specs=picolibc.specs --crt0=minimal -o program.elf program.o picolibc-1.7.4/dummyhost/000077500000000000000000000000001414576234500153535ustar00rootroot00000000000000picolibc-1.7.4/dummyhost/iob.c000066400000000000000000000045431414576234500162760ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2019 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include /* * Dummy stdio hooks. This allows programs to link without requiring * any system-dependent functions. This is only used if the program * doesn't provide its own version of stdin, stdout, stderr */ static int dummy_putc(char c, FILE *file) { (void) c; (void) file; return (unsigned char) c; } static int dummy_getc(FILE *file) { (void) file; return EOF; } static int dummy_flush(FILE *file) { (void) file; return 0; } static FILE __stdio = FDEV_SETUP_STREAM(dummy_putc, dummy_getc, dummy_flush, _FDEV_SETUP_RW); #ifdef __strong_reference #define STDIO_ALIAS(x) __strong_reference(stdin, x); #else #define STDIO_ALIAS(x) FILE *const x = &__stdio; #endif FILE *const stdin = &__stdio; STDIO_ALIAS(stdout); STDIO_ALIAS(stderr); picolibc-1.7.4/dummyhost/meson.build000066400000000000000000000040761414576234500175240ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # srcs_dummyhost = [ 'iob.c', ] foreach target : targets value = get_variable('target_' + target) instdir = join_paths(get_option('libdir'), value[0]) if target == '' libdummyhost_name = 'dummyhost' else libdummyhost_name = join_paths(target, 'libdummyhost') endif set_variable('lib_dummyhost' + target, static_library(libdummyhost_name, srcs_dummyhost, install : true, install_dir : instdir, include_directories : inc, c_args : value[1])) endforeach picolibc-1.7.4/find-copyright000077500000000000000000000440201414576234500161760ustar00rootroot00000000000000#!/usr/bin/python3 import sys import fileinput import magic import re from comment_parser import comment_parser end_pats = (r'This implementation just', r'Synopsis of public', r'The SPU must have', r'This is a simple version', r'This is a dummy', r'stdio_ext\.h', r'python script to', r'libgen\.h', r'Id:.*Exp', r'sccs\.', r'Tests gleaned', r'tar\.h', r'tzcalc_limits\.c', r'dummy file', r'Rearranged for general', r'sincos', r'POSIX', r'Reentrant', r'Copied', r'These are', r'creat', r'ARM configuration', r'Place holder', r'local header', r'GNU variant', r'default reentrant', r'A replacement', r'The signgam', r'dummy header', r'Uniset', r'wcsftime\.c', r'month_lengths\.c', r'Static instance', r'Conversion is performed', r'Common routine', r'l64a') end_pats_s = (r'FUNCTION',) end_res = [] for pat in end_pats: regex = re.compile(pat, re.I) end_res += [regex] for pat in end_pats_s: regex = re.compile(pat) end_res += [regex] left_res = re.compile(r'^[^A-Za-z0-9]*(.*)') right_res = re.compile(r'(.*)[ /*\t]$') def clean_copyright(string): copyright = [] have_cpr = False cpr_line = re.compile(r'copyright.*(20[0-2][0-9]|19[7-9][0-9])', re.I) upper = re.compile(r'[A-Z]') lower = re.compile(r'[a-z]') modified = re.compile(r'Modified') derived = re.compile(r'code is derived from software', re.I) skipping = False only_upper = False for line in string.splitlines(): m = cpr_line.search(line) if m: line = line[m.start():] m = re.match(r'(.*<[^>]+>).*', line) if m: line = line[:m.end()] have_cpr = True if not have_cpr: continue end = False for regex in end_res: if regex.search(line): end = True break if end: break if modified.search(line): skipping = True continue if derived.search(line): skipping = True continue if only_upper: if lower.search(line): break elif upper.search(line) and not lower.search(line): only_upper = True line = left_res.match(line).group(1) while True: m = right_res.match(line) if not m: break line = m.group(1) if skipping: if len(line) == 0: skipping = False continue copyright += [line] t = '\n'.join(copyright).strip() return t def get_license_type(copyright): if re.match(r'^no support for.*', copyright): return "Default" if copyright == 'none' or copyright == '': return "Default" if re.search(r'NetBSD', copyright): return "NetBSD" if (re.search(r'Redistributions *(of)? *source +code', copyright) and re.search(r'Redistributions +in +binary +form', copyright)): if re.search(r'[tT]he +names? of', copyright): return "BSD3" else: return "BSD2" if (re.search(r'University', copyright) and re.search(r'California', copyright) and re.search(r'Berkeley', copyright)): return "UCB" if re.search(r'FreeBSD', copyright): return "FreeBSD" if re.search(r'the GPL', copyright): if re.search(r'version 2', copyright): return "GPL2" if re.search(r'version 3', copyright): return "GPL3" return "GPL" return "Other" def find_copyright_source(name, mime): with open(name, 'rb') as f: text = f.read().decode('utf-8', errors='ignore') try: comments = comment_parser.extract_comments_from_str(text, mime) except: return None tog = re.compile(r'.*Open Group Base Specification', re.I | re.S) m = re.compile(r'.*copyright.*', re.I | re.S) for i in range(len(comments)): comment = comments[i] if tog.match(comment.text()): continue if m.match(comment.text()): bits = comment.text() line = comments[i].line_number() + 1 i += 1 while i < len(comments): if comments[i].line_number() != line: break bits += '\n' + comments[i].text() i += 1 line += 1 return clean_copyright(bits) return None # Copyright holder is generally the first paragraph of the text def pick_split(split,match,use_end): if not match: return split start = match.start() end = match.start() if use_end: end = match.end() if not split: return (start, end) if start < split[0]: return (start, end) return split def get_split(copyright): lastcopy = None for lastcopy in re.finditer(r'copyright (\(c\))? *(19[7-9][0-9]|20[0-2][0-9])[^A-Z]*[A-Z][^\n]*', copyright, re.I|re.S): pass if lastcopy: para = None for para in re.finditer(r'\n\n', copyright, re.S): if para.start() >= lastcopy.end(): break all = None for all in re.finditer(r'all rights reserved\.?', copyright, re.I | re.S): if all.start() >= lastcopy.end(): break else: para = re.search(r'\n\n', copyright, re.S) all = re.search(r'all rights reserved\.?', copyright, re.I | re.S) licensed = re.search(r'This ', copyright, re.I | re.S) portions = re.search(r'Portions', copyright, re.I | re.S) mod = re.search(r'modification', copyright, re.I | re.S) perm = re.search(r'permission to', copyright, re.I | re.S) public = re.search(r'public domain', copyright, re.I | re.S) split = None split = pick_split(split, all, True) if not split: split = pick_split(split, para, True) split = pick_split(split, licensed, False) split = pick_split(split, portions, False) split = pick_split(split, mod, False) split = pick_split(split, perm, False) split = pick_split(split, public, False) return split def get_holder(copyright): split = get_split(copyright) if split: return copyright[:split[0]] return copyright def get_license(copyright): split = get_split(copyright) if split: copyright = copyright[split[1]:] m = re.match(r'^[ \t]*\n[ \t]*\n*', copyright, re.I|re.S) if m: copyright = copyright[m.end():] return copyright if copyright == "unknown file type": return copyright return "" def pound_comments(name): l = re.compile(r'^#[ \t]*(.*)$') comments = [] comment = [] for line in open(name).readlines(): m = l.match(line) if m: after = m.group(1) comment += [after] elif comment: comments += ['\n'.join(comment)] comment = [] if comment: comments += ['\n'.join(comment)] return comments def find_copyright_pound(name): comments = pound_comments(name) m = re.compile(r'.*copyright.*', re.I | re.S) for comment in comments: if m.match(comment): return clean_copyright(comment) return None def semi_comments(name): l = re.compile(r'^;;*[ \t]*(.*)$') comments = [] comment = [] for line in open(name).readlines(): m = l.match(line) if m: after = m.group(1) comment += [after] elif comment: comments += ['\n'.join(comment)] comment = [] if comment: comments += ['\n'.join(comment)] return comments def find_copyright_semi(name): comments = semi_comments(name) m = re.compile(r'.*copyright.*', re.I | re.S) for comment in comments: if m.match(comment): return clean_copyright(comment) return None def troff_comments(name): l = re.compile(r'^\.\\"[ \t]*(.*)$') comments = [] comment = [] for line in open(name).readlines(): m = l.match(line) if m: after = m.group(1) comment += [after] elif comment: comments += ['\n'.join(comment)] comment = [] if comment: comments += ['\n'.join(comment)] return comments def find_copyright_troff(name): comments = troff_comments(name) m = re.compile(r'.*copyright.*', re.I | re.S) for comment in comments: if m.match(comment): return clean_copyright(comment) return None def clean(str,chars): out = "" for c in str: if c not in chars: out += c.lower() return out def pack_copyright(copyright): return clean(copyright, " .,!*\n\t") def num_lines(name): with open(name, 'rb') as f: text = f.read().decode('utf-8', errors='ignore').splitlines() return len(text) def starts_with(pattern, name): with open(name, 'rb') as f: text = f.read().decode('utf-8', errors='ignore') m = re.search(pattern, text) return m and m.start() == 0 def file_contains(pattern, name): with open(name, 'rb') as f: text = f.read().decode('utf-8', errors='ignore') return re.search(pattern, text) def main(): names = [] for name in sys.argv[1:]: if name == '-': for line in sys.stdin: names += [line.strip()] else: names += [name] copyright_users = {} copyrights = {} copyright_files = {} for name in names: copyright = None # Data files don't need a license if re.match(r'.*\.t$', name): continue if re.match(r'.*\.cct$', name): continue if re.match(r'.*ChangeLog.*', name): continue if re.match(r'.*COPYING.*', name): continue if re.match(r'.*NEWS.*', name): continue if re.match(r'.*MAINTAINERS', name): continue if re.match(r'CODE_OF_CONDUCT.*', name): continue if re.match(r'CONTRIBUTING.*', name): continue if re.match(r'.*\.[ch]$', name) or re.match(r'.*\.ld$', name) or re.match(r'.*\.[ch]\.in$', name): copyright = find_copyright_source(name, 'text/x-c') elif re.match(r'.*\.[sS]$', name): copyright = find_copyright_semi(name) if not copyright: copyright = find_copyright_source(name, 'text/x-c') elif re.match(r'.*meson.*', name) or re.match(r'.*Makefile.*', name): copyright = find_copyright_pound(name) elif re.match(r'.*\.[123]$', name): copyright = find_copyright_troff(name) if not copyright: m = magic.from_file(name) if m is None: copyright = 'unknown file type' else: if re.search(r'troff', m): copyright = find_copyright_troff(name) elif re.search(r'C source', m): copyright = find_copyright_source(name, 'text/x-c') elif (re.search(r'POSIX shell script', m) or re.search(r'Bourne-Again shell script', m) or re.search(r'Python script', m) or re.search(r'Perl script', m) or starts_with(r'#', name)): copyright = find_copyright_pound(name) if not copyright: # Skip very short files without a copyright if num_lines(name) < 15: continue # Skip generated files if (file_contains(r'generated automatically', name) or file_contains(r'automatically generated', name)): continue copyright = '' i = pack_copyright(copyright) if i not in copyrights: copyrights[i] = copyright copyright_users[i] = [name] else: copyright_users[i] += [name] license_map = {} licenses = {} license_ids = {} license_name = {} holders = {} copyright_map = {} for i in copyrights: holder = get_holder(copyrights[i]) license = get_license(copyrights[i]) license_key = pack_copyright(license) type = get_license_type(license) if license_key in license_name: name = license_name[license_key] else: if type in license_ids: id = license_ids[type] else: id = 1 license_ids[type] = id + 1 name = "%s-%d" % (type, id) licenses[name] = license holders[name] = holder license_name[license_key] = name if name in copyright_map: copyright_map[name] += [i] else: copyright_map[name] = [i] for type in sorted(license_ids.keys()): for id in range(1,license_ids[type]): name = "%s-%d" % (type, id) for i in copyright_map[name]: holder = get_holder(copyrights[i]) license = get_license(copyrights[i]) print("Files:", end='') for file in copyright_users[i]: print(" %s" % file) print("Copyright:", end='') done = False for line in holder.splitlines(): for pat in (r'(.*)copyright(.*)', r'(.*)©(.*)', r'(.*)\(c\)(.*)', r'(.*) by (.*)', r'(.*)all rights reserved\.?(.*)'): m = re.match(pat, line, re.I) if m: line = m.group(1).strip() + ' ' + m.group(2).strip() line = line.strip() if re.match(r'(19[89][0-9]|2[0-2][0-9][0-9]).*', line): if done: print() print(' %s' % line, end='') done = True print() print("License: %s" % name) print() started = False for type in sorted(license_ids.keys()): for id in range(1,license_ids[type]): if started: print() started = True name = "%s-%d" % (type, id) print("License: %s" % name) for line in licenses[name].splitlines(): if len(line) == 0: line = '.' print(" %s" % line) main() picolibc-1.7.4/hello-world/000077500000000000000000000000001414576234500155525ustar00rootroot00000000000000picolibc-1.7.4/hello-world/.gitignore000066400000000000000000000000131414576234500175340ustar00rootroot00000000000000*.elf *.mappicolibc-1.7.4/hello-world/Makefile000066400000000000000000000070061414576234500172150ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # CFLAGS=--oslib=semihost -Os CFLAGS_RISCV=$(CFLAGS) -march=rv32imac -mabi=ilp32 -Triscv.ld CC_RISCV=riscv64-unknown-elf-gcc -specs=picolibc.specs $(CFLAGS_RISCV) CPPFLAGS_RISCV=$(CFLAGS) -march=rv32imac -mabi=ilp32 -Triscv-cpp.ld CPP_RISCV=riscv64-unknown-elf-g++ -specs=picolibcpp.specs $(CPPFLAGS_RISCV) CFLAGS_ARM=$(CFLAGS) -mcpu=cortex-m3 -Tarm.ld CC_ARM=arm-none-eabi-gcc -specs=picolibc.specs $(CFLAGS_ARM) CPPFLAGS_ARM=$(CFLAGS) -mcpu=cortex-m3 -Tarm-cpp.ld CPP_ARM=arm-none-eabi-c++ -specs=picolibcpp.specs $(CPPFLAGS_ARM) CFLAGS_AARCH64=$(CFLAGS) -Taarch64.ld CC_AARCH64=aarch64-linux-gnu-gcc -specs=picolibc.specs $(CFLAGS_AARCH64) CPPFLAGS_AARCH64=$(CFLAGS) -Taarch64-cpp.ld CPP_AARCH64=aarch64-linux-gnu-g++ -specs=picolibcpp.specs $(CPPFLAGS_AARCH64) all: \ hello-world-arm.elf hello-world-aarch64.elf \ hello-world-riscv.elf hello-world-native.elf \ printf.elf printf-int.elf printf-float.elf all-cpp: \ hello-worldpp-arm.elf hello-worldpp-aarch64.elf \ hello-worldpp-riscv.elf hello-worldpp-native.elf hello-world-arm.elf: hello-world.c $(CC_ARM) -o $@ $^ -Wl,-Map=hello-world-arm.map hello-world-aarch64.elf: hello-world.c $(CC_AARCH64) -o $@ $^ -Wl,-Map=hello-world-aarch64.map hello-world-riscv.elf: hello-world.c $(CC_RISCV) -o $@ $^ -Wl,-Map=hello-world-riscv.map hello-world-native.elf: hello-world.c cc -o $@ $^ printf.elf: printf.c $(CC_ARM) -o $@ $^ -Wl,-Map=printf.map printf-int.elf: printf.c $(CC_ARM) -DPICOLIBC_INTEGER_PRINTF_SCANF -o $@ $^ -Wl,-Map=printf-int.map printf-float.elf: printf.c $(CC_ARM) -DPICOLIBC_FLOAT_PRINTF_SCANF -o $@ $^ -Wl,-Map=printf-float.map hello-worldpp-native.elf: hello-worldpp.cpp c++ -o $@ $^ hello-worldpp-arm.elf: hello-worldpp.cpp $(CPP_ARM) -Wl,-Map=hello-worldpp-arm.map -o $@ $^ hello-worldpp-aarch64.elf: hello-worldpp.cpp $(CPP_AARCH64) -Wl,-Map=hello-worldpp-aarch64.map -o $@ $^ hello-worldpp-riscv.elf: hello-worldpp.cpp $(CPP_RISCV) -Wl,-Map=hello-worldpp-riscv.map -o $@ $^ clean: rm -f *.elf *.map picolibc-1.7.4/hello-world/README.md000066400000000000000000000120151414576234500170300ustar00rootroot00000000000000# Hello World Building embedded applications is tricky in part because of the huge number of configuration settings necessary to get something that works. This example shows how to use the installed version of picolibc, and uses 'make' instead of 'meson' to try and make the operations as clear as possible. Here's our fine program: #include int main(void) { printf("hello, world\n"); return 0; } ## Selecting picolibc headers and C library Picolibc provides a GCC '.specs' file _(generated from picolibc.specs.in)_ which sets the search path for header files and picolibc libraries. gcc -specs=picolibc.specs ## Semihosting Our example program wants to display a string to stdout; because there aren't drivers for the serial ports emulated by qemu provided, the example uses Picolibc's semihosting support (`--oslib=semihost`) to direct stdout to the QEMU console: gcc -specs=picolibc.specs --oslib=semihost ## Target processor For ARM, QEMU emulates a "mps2-an385" board which has a Cortex-M3 processor: arm-none-eabi-gcc -specs=picolibc.specs --oslib=semihost -mcpu=cortex-m3 64-bit ARM (aarch64) processors are pretty much the same, so the default target code will run fine on a cortex-a57 processor as supported by QEMU: aarch64-linux-gnu-gcc -specs=picolibc.specs --oslib-semihost For RISC-V, QEMU lets you specify which CPU core you want, so we'll use something that looks like a SiFive E31 chip. That's a 32-bit processor with the 'imac' options (integer, multiply, atomics, compressed) and uses the 'ilp32' ABI (32-bit integer, long and pointer) riscv64-unknown-elf-gcc -specs=picolibc.specs --oslib-semihost -march=rv32imac -mabi=ilp32 ## Target Memory Layout The application needs to be linked at addresses which correspond to where the target memories are addressed. The default linker script provided with picolibc, `picolibc.ld`, assumes that the target device will have two kinds of memory, one for code and read-only data and another kind for read-write data. However, the linker script has no idea where those memories are placed in the address space. The example specifies those by setting a few values before including `picolibc.ld`. The mps2-an385 has at least 16kB of flash starting at 0. Picolibc places a small interrupt vector there which points at the first instruction of _start. The mps2-an385 also has 64kB of RAM starting at 0x20000000, so arm.ld looks like this: __flash = 0x00000000; __flash_size = 0x00004000; __ram = 0x20000000; __ram_size = 0x00010000; __stack_size = 1k; INCLUDE picolibc.ld The aarch64 virt model lets you define whatever memory spaces you like,so we'll just stick things at 0x40000000 (aarch64.ld): __flash = 0x40000000; __flash_size = 0x00400000; __ram = 0x40400000; __ram_size = 0x00200000; __stack_size = 8k; INCLUDE picolibc.ld For the RISC-V 'spike' model, you can have as much memory as you like, but execution starts at 0x80000000 so the first instruction in the application needs to land there. Picolibc on RISC-V puts _start at the first location in read-only memory, so we set things up like this (this is riscv.ld): __flash = 0x80000000; __flash_size = 0x00080000; __ram = 0x80080000; __ram_size = 0x40000; __stack_size = 1k; INCLUDE picolibc.ld The `-T` flag is used to specify the linker script in the compile line: arm-none-eabi-gcc -specs=picolibc.specs --oslib=semihost -mcpu=cortex-m3 -Tarm.ld aarch64-linux-gnu-gcc -specs=picolibc.specs --oslib=semihost -Taarch64.ld ## Final Commands The rest of the command line tells GCC what file to compile (hello-world.c) and where to put the output (hello-world-riscv.elf and hello-world-arm.elf): riscv64-unknown-elf-gcc --specs=picolibc.specs --oslib=semihost -march=rv32imac -mabi=ilp32 -Thello-world-riscv.ld -o hello-world-riscv.elf hello-world.c arm-none-eabi-gcc --specs=picolibc.specs --oslib=semihost -mcpu=cortex-m3 -Thello-world-arm.ld -o hello-world-arm.elf hello-world.c ## Running Under QEMU To run the hello-world example under qemu, we need to construct a virtual machine suitable for this. That means enabling semihosting (`-semihosting-config enable=on`), disabling the monitor interface (-monitor none), the emulated UART (-serial none) and the graphical interface (`-nographic). For arm, we're using the mps2-an385 qemu-system-arm -semihosting-config enable=on -monitor none -serial none -nographic -machine mps2-an385,accel=tcg -kernel hello-world-arm.elf On aarch64, we use the 'virt' machine, which lets us plug in any processor we want. In this case, we'll use the cortex-a57: qemu-system-aarch64 -semihosting-config enable=on -monitor none -serial none -nographic -machine virt -cpu cortex-a57 -kernel hello-world-aarch64.elf Risc-V is similar to aarch64 in providing a virtual host into which you can install any virtual processor you want, in our case, an rv32: qemu-system-riscv32 -semihosting-config enable=on -monitor none -serial none -nographic -machine virt,accel=tcg -cpu rv32 -bios none -kernel hello-world-riscv.elf picolibc-1.7.4/hello-world/aarch64-cpp.ld000066400000000000000000000002261414576234500201030ustar00rootroot00000000000000__flash = 0x40000000; __flash_size = 0x00400000; __ram = 0x40400000; __ram_size = 0x00200000; __stack_size = 8k; INCLUDE picolibcpp.ld picolibc-1.7.4/hello-world/aarch64.ld000066400000000000000000000002241414576234500173210ustar00rootroot00000000000000__flash = 0x40000000; __flash_size = 0x00400000; __ram = 0x40400000; __ram_size = 0x00200000; __stack_size = 8k; INCLUDE picolibc.ld picolibc-1.7.4/hello-world/arm-cpp.ld000066400000000000000000000002261414576234500174320ustar00rootroot00000000000000__flash = 0x00000000; __flash_size = 0x00100000; __ram = 0x20000000; __ram_size = 0x00010000; __stack_size = 1k; INCLUDE picolibcpp.ld picolibc-1.7.4/hello-world/arm.ld000066400000000000000000000002241414576234500166500ustar00rootroot00000000000000__flash = 0x00000000; __flash_size = 0x00100000; __ram = 0x20000000; __ram_size = 0x00010000; __stack_size = 1k; INCLUDE picolibc.ld picolibc-1.7.4/hello-world/hello-world.c000066400000000000000000000032601414576234500201470ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2019 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include int main(void) { printf("hello, world\n"); exit(0); } picolibc-1.7.4/hello-world/hello-worldpp.cpp000066400000000000000000000034371414576234500210550ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2020 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #include int main() { std::cout << "Hello, world!\n"; try { throw 20; } catch (int param) { std::cout << "int exception " << param << '\n'; } std::cout << "Goodbye, world!\n"; exit(0); } picolibc-1.7.4/hello-world/printf.c000066400000000000000000000034551414576234500172270ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2019 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #ifndef printf_float #define printf_float(x) (x) #endif void main(void) { printf(" 2⁶¹ = %lld π ≃ %.17g\n", 1ll << 61, printf_float(3.141592653589793)); _Exit(0); } picolibc-1.7.4/hello-world/riscv-cpp.ld000066400000000000000000000002051414576234500177760ustar00rootroot00000000000000__flash = 0x80000000; __flash_size = 0x00080000; __ram = 0x80080000; __ram_size = 0x40000; __stack_size = 1k; INCLUDE picolibcpp.ld picolibc-1.7.4/hello-world/riscv.ld000066400000000000000000000002031414576234500172140ustar00rootroot00000000000000__flash = 0x80000000; __flash_size = 0x00080000; __ram = 0x80080000; __ram_size = 0x40000; __stack_size = 1k; INCLUDE picolibc.ld picolibc-1.7.4/hello-world/run-aarch64000077500000000000000000000035451414576234500175410ustar00rootroot00000000000000#!/bin/sh # # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # qemu="qemu-system-aarch64" # select the program elf=hello-world-aarch64.elf case $1 in *.elf) elf="$1" shift; ;; esac # Set the target machine machine=virt cpu=cortex-a57 $qemu -semihosting-config enable=on -monitor none -serial none -nographic -machine $machine -cpu $cpu -kernel $elf "$@" picolibc-1.7.4/hello-world/run-aarch64++000077500000000000000000000041661414576234500176670ustar00rootroot00000000000000#!/bin/sh # # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # qemu="qemu-system-aarch64" # select the program elf=hello-world++-aarch64.elf # Set the target machine machine=virt cpu=cortex-a57 # Map stdio to a multiplexed character device so we can use it # for the monitor and semihosting output chardev=stdio,mux=on,id=stdio0 # Point the semihosting driver at our new chardev semi=enable=on,chardev=stdio0,arg="test-file" # Disable monitor mon=none # Disable the serial port serial=none $qemu -chardev $chardev -semihosting-config $semi -monitor $mon -serial $serial -machine $machine -cpu $cpu -kernel $elf -nographic "$@" picolibc-1.7.4/hello-world/run-arm000077500000000000000000000035431414576234500170660ustar00rootroot00000000000000#!/bin/sh # # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # qemu="qemu-system-arm" # select the program elf=hello-world-arm.elf case $1 in *.elf) elf="$1" shift; ;; esac # Set the target machine machine=mps2-an385,accel=tcg cpu=cortex-m3 $qemu -semihosting-config enable=on -monitor none -serial none -nographic -machine $machine -kernel $elf "$@" picolibc-1.7.4/hello-world/run-riscv000077500000000000000000000035621414576234500174360ustar00rootroot00000000000000#!/bin/sh # # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # qemu="qemu-system-riscv32" # select the program elf=hello-world-riscv.elf case $1 in *.elf) elf="$1" shift; ;; esac # Set the target machine machine=virt,accel=tcg cpu=rv32 $qemu -semihosting-config enable=on -monitor none -serial none -nographic -machine $machine -cpu $cpu -bios none -kernel $elf "$@" picolibc-1.7.4/hello-world/run-riscv++000077500000000000000000000043251414576234500175620ustar00rootroot00000000000000#!/bin/sh # # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # qemu="qemu-system-riscv32" # select the program #elf=hello-world-riscv.elf elf=hello-world++-riscv.elf # Set the target machine machine=virt,accel=tcg cpu=rv32 # Map stdio to a multiplexed character device so we can use it # for the monitor and semihosting output chardev=stdio,mux=on,id=stdio0 # Point the semihosting driver at our new chardev semi=enable=on,chardev=stdio0,arg="test-file" # Point the monitor at the new chardev too mon=chardev=stdio0,mode=readline # Disable the serial port serial=chardev:stdio0 $qemu -chardev $chardev -semihosting-config $semi -mon $mon -serial $serial -machine $machine -cpu $cpu -kernel $elf -bios none -nographic "$@" picolibc-1.7.4/hello-world/test-file000066400000000000000000000000261414576234500173670ustar00rootroot00000000000000Data from a test file picolibc-1.7.4/make-copyrights000077500000000000000000000001251414576234500163540ustar00rootroot00000000000000#!/bin/sh dir=`dirname $0` export LANG=C git ls-files | sort | $dir/find-copyright - picolibc-1.7.4/meson.build000066400000000000000000001122311414576234500154640ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019-2021 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # project('picolibc', 'c', default_options: [ 'buildtype=minsize', 'debug=true', 'c_std=c18', 'b_staticpic=false', 'warning_level=2', ], license : 'BSD', meson_version : '>= 0.53', version: '1.7.4' ) targets = [] cc = meson.get_compiler('c') fs = import('fs') # Find the picolibc name for the host cpu. Provide # for some common aliases cpu_family_aliases = { # aarch64 'arm64' : 'aarch64', # cris 'crisv32' : 'cris', # i386 'i486' : 'i386', 'i586' : 'i386', 'i686' : 'i386', 'x86' : 'i386', # m68hc11 'm6811' : 'm68hc11', 'm6812' : 'm68hc11', 'm68hc12' : 'm68hc11', # m68k 'fido' : 'm68k', # m88k 'm88110' : 'm88k', # or1k 'or1knd': 'or1k', # powerpc 'powerpc64' : 'powerpc', 'ppc64' : 'powerpc', 'ppc64le' : 'powerpc', # riscv 'riscv32' : 'riscv', 'riscv64' : 'riscv', # x86_64 'amd64' : 'x86_64', } # Check for an alias, default to provided name host_cpu_family = cpu_family_aliases.get(host_machine.cpu_family(), host_machine.cpu_family()) # Make sure we have meson build support for the machine-specific files if not fs.is_file('newlib/libc/machine' / host_cpu_family / 'meson.build') message = ''' Unsupported architecture: "@0@" Read the Supported Architectures section in README.md to learn how to add a new architecture. ''' error(message.format(host_cpu_family)) endif # Find out about long double type long_double_code = ''' #include #ifndef __LDBL_MANT_DIG__ #error No long double support in float.h #endif long double test() { long double ld = 0.0L; return ld; } ''' have_long_double = cc.compiles(long_double_code, name : 'long double check') long_double_size_code = ''' #include char size_test[sizeof(double) == sizeof(long double) ? 1 : -1]; ''' long_double_mant_64_code = ''' #include char size_test[__LDBL_MANT_DIG__ == 64 ? 1 : -1]; ''' long_double_mant_113_code = ''' #include char size_test[__LDBL_MANT_DIG__ == 113 ? 1 : -1]; ''' if have_long_double long_double_equals_double = cc.compiles(long_double_size_code, name : 'long double same as double') if not long_double_equals_double long_double_mant_is_64 = cc.compiles(long_double_mant_64_code, name : 'long double mantissa is 64 bits') long_double_mant_is_113 = cc.compiles(long_double_mant_113_code, name : 'long double mantissa is 113 bits') endif endif enable_multilib = get_option('multilib') multilib_list = get_option('multilib-list') enable_picolib = get_option('picolib') enable_picocrt = get_option('picocrt') enable_semihost = get_option('semihost') enable_tests = get_option('tests') enable_native_tests = get_option('native-tests') tests_enable_stack_protector = get_option('tests-enable-stack-protector') tests_enable_full_malloc_stress = get_option('tests-enable-full-malloc-stress') tests_enable_posix_io = get_option('tests-enable-posix-io') have_alias_attribute_option = get_option('have-alias-attribute') have_format_attribute_option = get_option('have-format-attribute') newlib_iconv_encodings = get_option('newlib-iconv-encodings') newlib_iconv_from_encodings = get_option('newlib-iconv-from-encodings') newlib_iconv_to_encodings = get_option('newlib-iconv-to-encodings') newlib_iconv_external_ccs = get_option('newlib-iconv-external-ccs') newlib_atexit_dynamic_alloc = get_option('newlib-atexit-dynamic-alloc') newlib_nano_malloc = get_option('newlib-nano-malloc') lite_exit = get_option('lite-exit') newlib_elix_level = get_option('newlib-elix-level') c_args = ['-include', '@0@/@1@'.format(meson.current_build_dir(), 'picolibc.h')] # Disable ssp and fortify source while building picolibc (it's enabled # by default by the ubuntu native compiler) c_args += cc.get_supported_arguments(['-fno-common', '-frounding-math', '-Wno-unsupported-floating-point-opt', '-fno-stack-protector']) # Select a fortify source option fortify_source = get_option('fortify-source') if fortify_source == 'none' c_args += '-U_FORTIFY_SOURCE' else c_args += '-D_FORTIFY_SOURCE=' + fortify_source endif if cc.symbols_have_underscore_prefix() global_prefix = '_' else global_prefix = '' endif fast_strcmp = get_option('fast-strcmp') newlib_mb = get_option('newlib-mb') newlib_locale_info = get_option('newlib-locale-info') newlib_obsolete_math = get_option('newlib-obsolete-math') newlib_obsolete_math_float = get_option('newlib-obsolete-math-float') newlib_obsolete_math_double = get_option('newlib-obsolete-math-double') sysroot_install = get_option('sysroot-install') prefix = get_option('prefix') nm = find_program('nm', required : false) check_duplicate_names = nm.found() if nm.found() duplicate_names = find_program('scripts/duplicate-names', required : true) endif # Select exit code picoexit = get_option('picoexit') # Shared stdio options io_long_long = get_option('io-long-long') newlib_io_long_long = get_option('newlib-io-long-long') if newlib_io_long_long != 'auto' io_long_long = newlib_io_long_long == 'true' endif io_c99_formats = get_option('io-c99-formats') newlib_io_c99_formats = get_option('newlib-io-c99-formats') if newlib_io_c99_formats != 'auto' io_c99_formats = newlib_io_c99_formats == 'true' endif # Select stdio implementation tinystdio = get_option('tinystdio') has_link_defsym = cc.has_link_argument('-Wl,--defsym=' + global_prefix + '_start=0') has_link_alias = cc.has_link_argument('-Wl,-alias,' + global_prefix + 'main,testalias') # tinystdio options posix_io = tinystdio and get_option('posix-io') posix_console = posix_io and get_option('posix-console') io_float_exact = not tinystdio or get_option('io-float-exact') atomic_ungetc = tinystdio and get_option('atomic-ungetc') format_default = get_option('format-default') double_printf_compile_args=['-DPICOLIBC_DOUBLE_PRINTF_SCANF'] double_printf_link_args=double_printf_compile_args float_printf_compile_args=['-DPICOLIBC_FLOAT_PRINTF_SCANF'] float_printf_link_args=float_printf_compile_args int_printf_compile_args=['-DPICOLIBC_INTEGER_PRINTF_SCANF'] int_printf_link_args=int_printf_compile_args if tinystdio vfprintf_symbol = global_prefix + 'vfprintf' __d_vfprintf_symbol = global_prefix + '__d_vfprintf' __f_vfprintf_symbol = global_prefix + '__f_vfprintf' __i_vfprintf_symbol = global_prefix + '__i_vfprintf' vfscanf_symbol = global_prefix + 'vfscanf' __d_vfscanf_symbol = global_prefix + '__d_vfscanf' __f_vfscanf_symbol = global_prefix + '__f_vfscanf' __i_vfscanf_symbol = global_prefix + '__i_vfscanf' if format_default == 'double' c_args += '-DFORMAT_DEFAULT_DOUBLE' elif format_default == 'float' c_args += '-DFORMAT_DEFAULT_FLOAT' elif format_default == 'integer' c_args += '-DFORMAT_DEFAULT_INTEGER' endif if has_link_defsym if format_default != 'double' double_printf_link_args += '-Wl,--defsym=' + vfprintf_symbol + '=' + __d_vfprintf_symbol double_printf_link_args += '-Wl,--defsym=' + vfscanf_symbol + '=' + __d_vfscanf_symbol endif if format_default != 'float' float_printf_link_args += '-Wl,--defsym=' + vfprintf_symbol + '=' + __f_vfprintf_symbol float_printf_link_args += '-Wl,--defsym=' + vfscanf_symbol + '=' + __f_vfscanf_symbol endif if format_default != 'integer' int_printf_link_args += '-Wl,--defsym=' + vfprintf_symbol + '=' + __i_vfprintf_symbol int_printf_link_args += '-Wl,--defsym=' + vfscanf_symbol + '=' + __i_vfscanf_symbol endif elif has_link_alias if format_default == 'double' float_printf_link_args += '-Wl,-alias,' + vfprintf_symbol + ',' + __d_vfprintf_symbol float_printf_link_args += '-Wl,-alias,' + vfscanf_symbol + ',' + __d_vfscanf_symbol int_printf_link_args += '-Wl,-alias,' + vfprintf_symbol + ',' + __d_vfprintf_symbol int_printf_link_args += '-Wl,-alias,' + vfscanf_symbol + ',' + __d_vfscanf_symbol endif if format_default == 'float' double_printf_link_args += '-Wl,-alias,' + vfprintf_symbol + ',' + __f_vfprintf_symbol double_printf_link_args += '-Wl,-alias,' + vfscanf_symbol + ',' + __f_vfscanf_symbol int_printf_link_args += '-Wl,-alias,' + vfprintf_symbol + ',' + __f_vfprintf_symbol int_printf_link_args += '-Wl,-alias,' + vfscanf_symbol + ',' + __f_vfscanf_symbol endif if format_default == 'int' double_printf_link_args += '-Wl,-alias,' + vfprintf_symbol + ',' + __i_vfprintf_symbol double_printf_link_args += '-Wl,-alias,' + vfscanf_symbol + ',' + __i_vfscanf_symbol float_printf_link_args += '-Wl,-alias,' + vfprintf_symbol + ',' + __i_vfprintf_symbol float_printf_link_args += '-Wl,-alias,' + vfscanf_symbol + ',' + __i_vfscanf_symbol endif if format_default != 'double' double_printf_link_args += '-Wl,-alias,' + __d_vfprintf_symbol + ',' + vfprintf_symbol double_printf_link_args += '-Wl,-alias,' + __d_vfscanf_symbol + ',' + vfscanf_symbol endif if format_default != 'float' float_printf_link_args += '-Wl,-alias,' + __f_vfprintf_symbol + ',' + vfprintf_symbol float_printf_link_args += '-Wl,-alias,' + __f_vfscanf_symbol + ',' + vfscanf_symbol endif if format_default != 'integer' int_printf_link_args += '-Wl,-alias,' + __i_vfprintf_symbol + ',' + vfprintf_symbol int_printf_link_args += '-Wl,-alias,' + __i_vfscanf_symbol + ',' + vfscanf_symbol endif endif endif # A bunch of newlib-stdio only options newlib_io_pos_args = get_option('newlib-io-pos-args') newlib_io_long_double = get_option('newlib-io-long-double') newlib_global_stdio_streams = get_option('newlib-global-stdio-streams') newlib_fvwrite_in_streamio = get_option('newlib-fvwrite-in-streamio') newlib_fseek_optimization = get_option('newlib-fseek-optimization') newlib_nano_formatted_io = get_option('newlib-nano-formatted-io') newlib_io_float = get_option('newlib-io-float') newlib_stdio64 = get_option('newlib-stdio64') newlib_wide_orient = get_option('newlib-wide-orient') newlib_have_fcntl = get_option('newlib-have-fcntl') # Check for a bunch of newlib-stdio only options and complain # if they are selected while using tinystdio if tinystdio if newlib_io_pos_args error('tinystdio does not support positional arguments (newlib-io-pos-args)') endif if newlib_io_long_double error('tinystdio does not support long double (newlib-io-long-double)') endif if newlib_io_float error('tinystdio uses a run-time mechanism to select floating point io (newlib-io-float)') endif if newlib_global_stdio_streams error('tinystdio always has (reentrant) global stdio streams (newlib-global-stdio-streams)') endif if newlib_fvwrite_in_streamio error('tinystdio has no fvwrite support (newlib-fvwrite-in-streamio)') endif if newlib_fseek_optimization error('tinystdio has no fseek support (newlib-fseek-optimization)') endif if newlib_nano_formatted_io error('tinystdio uses a run-time mechanism to select smaller printf code (newlib-nano-formatted-io)') endif if newlib_wide_orient error('tinystdio does not support the wide-orient option (newlib-wide-orient)') endif else if posix_console error('newlib stdio does not support the posix-console option (posix-console)') endif if newlib_io_long_double and not long_double_equals_double and not long_double_mant_is_64 error('newlib-io-long-double not supported on target') endif endif if host_cpu_family == '' host_cmds = cc.cmd_array() + ['-dumpmachine'] host_cc_machine=run_command(host_cmds).stdout().strip().split('-') host_cpu_family=host_cc_machine[0] message('Computed host_cpu_family as ' + host_cpu_family) endif if have_alias_attribute_option == 'auto' have_alias_attribute = cc.has_function_attribute('alias') else have_alias_attribute = have_alias_attribute_option == 'true' endif if have_format_attribute_option == 'auto' have_format_attribute = cc.has_function_attribute('format') else have_format_attribute = have_format_attribute_option == 'true' endif tls_model_spec = '' thread_local_storage = false if get_option('thread-local-storage') == 'auto' # We assume that _set_tls() is defined in the arch specific tls.c if fs.is_file('newlib/libc/picolib/machine' / host_cpu_family / 'tls.c') thread_local_storage = not cc.has_function('__emutls_get_address', args: ['-nostdlib', '-lgcc']) endif else thread_local_storage = get_option('thread-local-storage') == 'true' endif if thread_local_storage tls_model_spec = '%{!ftls-model:-ftls-model=' + get_option('tls-model') + '}' endif if sysroot_install sysroot = run_command(cc.cmd_array() + ['-print-sysroot']).stdout().split('\n')[0] if sysroot == '' error('sysroot install requested, but compiler has no sysroot') endif sysroot = run_command('realpath', sysroot).stdout().split('\n')[0] prefix_path = run_command('realpath', prefix).stdout().split('\n')[0] if sysroot != prefix_path error('sysroot install requires --prefix=' + sysroot) endif endif lib_dir = join_paths(prefix, get_option('libdir')) newlib_iconv_dir = get_option('newlib-iconv-dir') if newlib_iconv_dir == '' newlib_iconv_dir = join_paths(lib_dir, 'locale') endif newlib_iconv_runtime_dir = get_option('newlib-iconv-runtime-dir') if newlib_iconv_runtime_dir == '' newlib_iconv_runtime_dir = newlib_iconv_dir endif specs_dir_option = get_option('specsdir') if specs_dir_option == '' search_cmds = cc.cmd_array() + ['-print-search-dirs'] install_dir=run_command(search_cmds).stdout().split('\n')[0] # Meson 0.56 adds a 'substring' method which can be used here specs_dir=run_command(['expr', install_dir, ':', 'install: *\(.*\)']).stdout().split('\n')[0] specs_install = specs_dir != '' elif specs_dir_option == 'none' specs_install = false specs_dir = '' else specs_dir = join_paths(prefix, specs_dir_option) specs_install = true endif # When passing the specs file to CompCert, the libcompcert needs to be included there as well additional_libs = '' if cc.get_id() == 'ccomp' additional_libs = '-lcompcert' endif specs_extra = '' specs_extra_list = meson.get_cross_property('specs_extra', []) if specs_extra_list != [] specs_extra = '\n' + '\n'.join(specs_extra_list) endif specs_printf = '' if tinystdio specs_printf=('%{DPICOLIBC_FLOAT_PRINTF_SCANF:--defsym=vfprintf=__f_vfprintf}' + ' %{DPICOLIBC_FLOAT_PRINTF_SCANF:--defsym=vfscanf=__f_vfscanf}' + ' %{DPICOLIBC_DOUBLE_PRINTF_SCANF:--defsym=vfprintf=__d_vfprintf}' + ' %{DPICOLIBC_DOUBLE_PRINTF_SCANF:--defsym=vfscanf=__d_vfscanf}' + ' %{DPICOLIBC_INTEGER_PRINTF_SCANF:--defsym=vfprintf=__i_vfprintf}' + ' %{DPICOLIBC_INTEGER_PRINTF_SCANF:--defsym=vfscanf=__i_vfscanf}') endif specs_data = configuration_data() specs_data.set('PREFIX', sysroot_install? '%R' : prefix) specs_data.set('INCLUDEDIR', get_option('includedir')) specs_data.set('LIBDIR', get_option('libdir')) specs_data.set('TLSMODEL', tls_model_spec) specs_data.set('LINK_SPEC', meson.get_cross_property('link_spec', '')) specs_data.set('CC1_SPEC', meson.get_cross_property('cc1_spec', '')) specs_data.set('CC1PLUS_SPEC', meson.get_cross_property('cc1plus_spec', '')) specs_data.set('ADDITIONAL_LIBS', additional_libs) specs_data.set('SPECS_EXTRA', specs_extra) specs_data.set('SPECS_PRINTF', specs_printf) # Create C and C++ specific specs data, # that includes setting the correct linker script # and adding the C++ startup/shutdown files specs_c_data = specs_data specs_c_data.set('PICOLIBC_LD', 'picolibc.ld') specs_c_data.set('CRTBEGIN', '') specs_c_data.set('CRTEND', '') specs_cpp_data = specs_data specs_cpp_data.set('PICOLIBC_LD', 'picolibcpp.ld') specs_cpp_data.set('CRTBEGIN', 'crtbegin%O%s') specs_cpp_data.set('CRTEND', 'crtend%O%s') picolibc_specs = configure_file(input: 'picolibc.specs.in', output: '@BASENAME@', configuration: specs_c_data, install_dir: specs_dir, install: specs_install) picolibcpp_specs = configure_file(input: 'picolibc.specs.in', output: 'picolibcpp.specs', configuration: specs_cpp_data, install_dir: specs_dir, install: specs_install) test_specs = configure_file(input: 'test.specs.in', output: '@BASENAME@', configuration: specs_data, install: false) picolibc_ld_data = configuration_data() picolibc_ld_data.set('CPP_START', '/*') picolibc_ld_data.set('CPP_END', '*/') picolibc_ld_data.set('C_START', '') picolibc_ld_data.set('C_END', '') picolibc_ld = configure_file(input: 'picolibc.ld.in', output: 'picolibc.ld', configuration: picolibc_ld_data, install_dir: lib_dir) picolibcpp_ld_data = configuration_data() picolibcpp_ld_data.set('CPP_START', '') picolibcpp_ld_data.set('CPP_END', '') picolibcpp_ld_data.set('C_START', '/*') picolibcpp_ld_data.set('C_END', '*/') picolibcpp_ld = configure_file(input: 'picolibc.ld.in', output: 'picolibcpp.ld', configuration: picolibcpp_ld_data, install_dir: lib_dir) # Not all compilers necessarily support all warnings; only use these which are: c_warnings = ['-Werror=implicit-function-declaration', '-Werror=vla', '-Warray-bounds', '-Wold-style-definition'] disabled_warnings = ['-Wno-missing-braces', '-Wno-implicit-int', '-Wno-return-type', '-Wno-unused-command-line-argument'] c_args += cc.get_supported_arguments(c_warnings, disabled_warnings) # CompCert does not support bitfields in packed structs, so avoid using this optimization bitfields_in_packed_structs_code = ''' struct test { int part: 24; } __attribute__((packed)); unsigned int foobar (const struct test *p) { return p->part; } ''' have_bitfields_in_packed_structs = cc.compiles(bitfields_in_packed_structs_code, name : 'packed structs may contain bitfields') # CompCert does not have __builtin_mul_overflow builtin_mul_overflow_code = ''' #include int overflows (size_t a, size_t b) { size_t x; return __builtin_mul_overflow(a, b, &x); } volatile size_t aa = 42; int main (void) { return overflows(aa, aa); } ''' have_builtin_mul_overflow = cc.links(builtin_mul_overflow_code, name : 'has __builtin_mul_overflow') # CompCert does not support _Complex complex_code = ''' float _Complex test(float _Complex z) { return z; } ''' have_complex = cc.compiles(complex_code, name : 'supports _Complex') # CompCert does not have __builtin_expect builtin_expect_code = ''' volatile int a = 42; int main (void) { return __builtin_expect(a, 1); } ''' have_builtin_expect = cc.links(builtin_expect_code, name : 'has __builtin_expect') # CompCert uses the GCC preprocessor, which causes to # > #if __has_attribute(__alloc_size__) # produce a wrong result. So test if the compiler has that attribute alloc_size_code = ''' void *foobar(size_t) __attribute__((__alloc_size__(1))); void *foobar2(size_t, size_t) __attribute__((__alloc_size__(1, 2))); ''' have_alloc_size = cc.compiles(alloc_size_code, name : 'attribute __alloc_size__', args : (cc.has_argument('-Werror') ? '-Werror' : '')) # attributes constructor/destructor are a GNU extension - if the compiler doesn't have them, don't test them. attr_ctor_dtor_code = ''' void __attribute__((constructor(101))) ctor (void) {} void __attribute__((destructor(101))) dtor (void) {} ''' have_attr_ctor_dtor = cc.compiles(attr_ctor_dtor_code, name : 'attributes constructor/destructor', args : (cc.has_argument('-Werror') ? '-Werror' : '')) # Add c_args from the cross file. This # means that the command line values get # added to the cross file values instead of # replacing them. c_args += meson.get_cross_property('c_args', []) if enable_multilib used_libs = [] # Ask the compiler for the set of available multilib configurations, # set up the build system to compile for all desired ones foreach target : run_command(cc, '--print-multi-lib').stdout().strip().split('\n') tmp = target.split(';') flags = c_args # Let the user specify a subset of the possible multilib # configurations to build for if multilib_list == [] or tmp[0] in multilib_list used_libs += tmp[0] if tmp.length() > 1 foreach flag : tmp[1].strip('@').split('@') if flag != '' flags += '-' + flag endif endforeach if tmp[0] == '.' name = '' else name = tmp[0].underscorify() endif else name = '' endif targets += name # rv64 needs to use a non-default mcmodel so that variables can # live in a broader range of memory addresses if name.startswith('rv64') flags += [ '-mcmodel=medany' ] endif # Add any extra flags for this target from the cross file flags += meson.get_cross_property('c_args_' + name, []) value = [tmp[0], flags] set_variable('target_' + name, value) endif endforeach # Make sure all requested multilib configurations # are actually available if multilib_list != [] foreach lib : multilib_list if lib not in used_libs error('Unavailable multilib: ' + lib) endif endforeach endif else targets = [''] target_ = ['.', c_args] endif conf_data = configuration_data() # The supported builtins vary depending on compiler and target. # If you want to check for a given builtin, add an array # ['some_builtin_name', '__call_to_builtin(1,2,3);'] # The below loop will then add the define HAVE_SOME_BUILTIN_NAME if the code snippet # > int main (void) { __call_to_builtin(1,2,3); return 0; } # can be compiled + linked. # The name should match the builtin, but technically it's not necessary builtins = [ ['builtin_alloca', '__builtin_alloca(1)', 'void *'], ['builtin_ffs', '__builtin_ffs(42)', 'int'], ['builtin_ffsl', '__builtin_ffsl((long)42)', 'long'], ['builtin_ffsll', '__builtin_ffsll((long long)42)', 'long long'], ['builtin_ctz', '__builtin_ctz((unsigned int)42)', 'int'], ['builtin_ctzl', '__builtin_ctzl((unsigned long)42)', 'int'], ['builtin_ctzll', '__builtin_ctzll((unsigned long long)42)', 'int'], ['builtin_copysignl', '__builtin_copysignl((long double)42, (long double) 42)', 'long double'], ['builtin_copysign', '__builtin_copysign(42, 42)', 'double'], ['builtin_isinfl', '__builtin_isinfl((long double)42)', 'int'], ['builtin_isinf', '__builtin_isinf((long double)42)', 'int'], ['builtin_isnanl', '__builtin_isnanl((long double)42)', 'int'], ['builtin_isnan', '__builtin_isnan((long double)42)', 'int'], ['builtin_finitel', '__builtin_finitel((long double)42)', 'int'], ['builtin_isfinite', '__builtin_isfinite((long double)42)', 'int'], ] foreach builtin : builtins builtin_template=''' static int foo(@1@ i __attribute__((unused))) { return 0; } int main(void) { return foo(@0@); } ''' builtin_code = builtin_template.format(builtin[1], builtin[2]) have_current_builtin = cc.links(builtin_code, name : 'test for __' + builtin[0]) conf_data.set('HAVE_' + builtin[0].to_upper(), have_current_builtin, description: 'The compiler supports __' + builtin[0]) endforeach NEWLIB_VERSION='4.1.0' NEWLIB_MAJOR_VERSION=4 NEWLIB_MINOR_VERSION=1 NEWLIB_PATCHLEVEL_VERSION=0 conf_data.set('_HAVE_CC_INHIBIT_LOOP_TO_LIBCALL', cc.has_argument('-fno-tree-loop-distribute-patterns'), description: 'Compiler flag to prevent detecting memcpy/memset patterns') conf_data.set('_HAVE_NO_BUILTIN_ATTRIBUTE', cc.compiles('int __attribute__((no_builtin)) foo(int x) { return x + 1; }', name : 'no_builtin attribute', args : (cc.has_argument('-Werror=attributes') ? '-Werror=attributes' : '')), description: 'Compiler attribute to prevent the optimizer from adding new builtin calls') conf_data.set('_HAVE_LONG_DOUBLE', have_long_double, description: 'Compiler has long double type') if have_long_double conf_data.set('_LDBL_EQ_DBL', long_double_equals_double, description: 'long double is the same as double') endif conf_data.set('HAVE_ALIAS_ATTRIBUTE', have_alias_attribute) conf_data.set('HAVE_FORMAT_ATTRIBUTE', have_format_attribute) conf_data.set('_WANT_REGISTER_FINI', get_option('newlib-register-fini')) conf_data.set('_WANT_IO_LONG_LONG', io_long_long) conf_data.set('_WANT_IO_C99_FORMATS', io_c99_formats) conf_data.set('_IO_FLOAT_EXACT', io_float_exact) if not tinystdio conf_data.set('_WANT_IO_LONG_DOUBLE', newlib_io_long_double) conf_data.set('_WANT_IO_POS_ARGS', newlib_io_pos_args) conf_data.set('NO_FLOATING_POINT', not newlib_io_float) conf_data.set('FLOATING_POINT', newlib_io_float) conf_data.set('_WANT_REENT_GLOBAL_STDIO_STREAMS', newlib_global_stdio_streams) conf_data.set('__LARGE64_FILES', newlib_stdio64) endif conf_data.set('_WANT_REENT_SMALL', get_option('newlib-reent-small')) conf_data.set('_MB_CAPABLE', newlib_mb) conf_data.set('_MB_LEN_MAX', newlib_mb ? '8' : '1') conf_data.set('__SINGLE_THREAD__', get_option('newlib-multithread') == false) conf_data.set('_ICONV_ENABLE_EXTERNAL_CCS', newlib_iconv_external_ccs) if newlib_iconv_external_ccs conf_data.set_quoted('ICONV_DEFAULT_NLSPATH', newlib_iconv_runtime_dir) endif conf_data.set('_ATEXIT_DYNAMIC_ALLOC', newlib_atexit_dynamic_alloc) conf_data.set('_REENT_GLOBAL_ATEXIT', get_option('newlib-global-atexit')) conf_data.set('_FVWRITE_IN_STREAMIO', newlib_fvwrite_in_streamio) conf_data.set('_FSEEK_OPTIMIZATION', newlib_fseek_optimization) conf_data.set('_WIDE_ORIENT', newlib_wide_orient) conf_data.set('HAVE_FCNTL', newlib_have_fcntl) conf_data.set('_NANO_MALLOC', newlib_nano_malloc) conf_data.set('_UNBUF_STREAM_OPT', get_option('newlib-unbuf-stream-opt')) conf_data.set('_LITE_EXIT', lite_exit) conf_data.set('_NANO_FORMATTED_IO', newlib_nano_formatted_io) conf_data.set('_RETARGETABLE_LOCKING', get_option('newlib-retargetable-locking')) conf_data.set('TINY_STDIO', tinystdio, description: 'Use tiny stdio from gcc avr') conf_data.set('_IEEE_LIBM', not get_option('want-math-errno'), description: 'math library does not set errno (offering only ieee semantics)') conf_data.set('_WANT_MATH_ERRNO', get_option('want-math-errno'), description: 'math library sets errno') conf_data.set('PREFER_SIZE_OVER_SPEED', get_option('optimization') == 's', description: 'Optimize for space over speed') conf_data.set('FAST_STRCMP', fast_strcmp, description: 'Always optimize strcmp for performance') conf_data.set('__HAVE_LOCALE_INFO__', newlib_locale_info, description: 'locale support') conf_data.set('__HAVE_LOCALE_INFO_EXTENDED__', get_option('newlib-locale-info-extended'), description: 'extended locale support') conf_data.set('NEWLIB_GLOBAL_ERRNO', get_option('newlib-global-errno'), description: 'use global errno variable') conf_data.set('HAVE_INITFINI_ARRAY', get_option('newlib-initfini-array'), description: 'compiler supports INIT_ARRAY sections') conf_data.set('HAVE_INIT_FINI', get_option('newlib-initfini'), description: 'Support _init() and _fini() functions') conf_data.set('NEWLIB_TLS', thread_local_storage, description: 'use thread local storage') conf_data.set('PICOLIBC_TLS', thread_local_storage, description: 'use thread local storage') conf_data.set('HAVE_PICOLIBC_TLS_API', thread_local_storage, description: '_set_tls and _init_tls functions available') conf_data.set('POSIX_IO', posix_io, description: 'Use open/close/read/write in tinystdio') conf_data.set('ATOMIC_UNGETC', atomic_ungetc, description: 'Use atomics for fgetc/ungetc for re-entrancy') conf_data.set('HAVE_BITFIELDS_IN_PACKED_STRUCTS', have_bitfields_in_packed_structs, description: 'Use bitfields in packed structs') conf_data.set('HAVE_BUILTIN_MUL', have_builtin_mul_overflow, description: 'Compiler has __builtin_mul_overflow') conf_data.set('HAVE_COMPLEX', have_complex, description: 'Compiler supports _Complex') conf_data.set('HAVE_BUILTIN_EXPECT', have_builtin_expect, description: 'Compiler has __builtin_expect') conf_data.set('HAVE_ALLOC_SIZE', have_alloc_size, description: 'The compiler REALLY has the attribute __alloc_size__') conf_data.set('_HAVE_ATTRIBUTE_ALWAYS_INLINE', cc.has_function_attribute('always_inline'), descrption: 'The compiler supports the always_inline function attribute') conf_data.set('_HAVE_ATTRIBUTE_GNU_INLINE', cc.has_function_attribute('gnu_inline'), descrption: 'The compiler supports the gnu_inline function attribute') # Obsolete newlib options conf_data.set('_WANT_USE_LONG_TIME_T', get_option('newlib-long-time_t'), description: 'Obsoleted. Define time_t to long instead of using a 64-bit type') conf_data.set('REENTRANT_SYSCALLS_PROVIDED', get_option('newlib-reentrant-syscalls-provided'), description: 'Obsoleted. Reentrant syscalls provided for us') conf_data.set('MISSING_SYSCALL_NAMES', get_option('newlib-missing-syscall-names'), description: 'Obsoleted. Use regular syscalls') if newlib_obsolete_math == 'auto' obsolete_math_value = false elif newlib_obsolete_math == 'true' obsolete_math_value = 1 elif newlib_obsolete_math == 'false' obsolete_math_value = 0 endif if newlib_obsolete_math_float == 'auto' obsolete_math_float_value = false elif newlib_obsolete_math_float == 'true' obsolete_math_float_value = 1 elif newlib_obsolete_math_float == 'false' obsolete_math_float_value = 0 endif if newlib_obsolete_math_double == 'auto' obsolete_math_double_value = false elif newlib_obsolete_math_double == 'true' obsolete_math_double_value = 1 elif newlib_obsolete_math_double == 'false' obsolete_math_double_value = 0 endif conf_data.set('__OBSOLETE_MATH', obsolete_math_value, description: 'Use old math code (undef auto, 0 no, 1 yes)') conf_data.set('__OBSOLETE_MATH_FLOAT', obsolete_math_float_value, description: 'Use old math code for float funcs (undef auto, 0 no, 1 yes)') conf_data.set('__OBSOLETE_MATH_DOUBLE', obsolete_math_double_value, description: 'Use old math code for double funcs (undef auto, 0 no, 1 yes)') # Check if compiler has -fno-builtin arg_fnobuiltin = [] if cc.has_argument('-fno-builtin') arg_fnobuiltin = ['-fno-builtin'] endif # Compute iconv encodings to support in the library # Dig out the list of available encodings from the encoding.aliases file. Only # accept the first entry from each line available_encodings = run_command(['sed', '-e', '/^#/d', '-e', '/^$/d', '-e', 's/ .*$//', files('newlib/libc/iconv/encoding.aliases')[0]]).stdout().split('\n') # Include all available encodings if none were specified on the command line if newlib_iconv_encodings.length() == 0 newlib_iconv_encodings = available_encodings elif newlib_iconv_encodings.length() == 1 and newlib_iconv_encodings[0] == 'none' newlib_iconv_encodings = [] endif # Use newlib_iconv_encodings for from/to by default if newlib_iconv_from_encodings.length() == 0 newlib_iconv_from_encodings = newlib_iconv_encodings endif if newlib_iconv_to_encodings.length() == 0 newlib_iconv_to_encodings = newlib_iconv_encodings endif # Set config variables for each requested 'from' encoding foreach from : newlib_iconv_from_encodings if not available_encodings.contains(from) error('Requested from encoding ' + from + ' is not available. Look in newlib/libc/iconv/encoding.aliases') endif conf_data.set('_ICONV_FROM_ENCODING_' + from.to_upper(), true) endforeach # Set config variables for each requested 'to' encoding foreach to : newlib_iconv_to_encodings if not available_encodings.contains(to) error('Requested to encoding ' + to + ' is not available. Look in newlib/libc/iconv/encoding.aliases') endif conf_data.set('_ICONV_TO_ENCODING_' + to.to_upper(), true) endforeach version_array = meson.project_version().split('.') if version_array.length() > 2 picolibc_patch_level = version_array[2] else picolibc_patch_level = 0 endif conf_data.set('_PICOLIBC_VERSION', '"@0@"'.format(meson.project_version()), description: 'The Picolibc version in string format.') conf_data.set('_PICOLIBC__', version_array[0], description: 'The Picolibc major version number.') conf_data.set('_PICOLIBC_MINOR__', version_array[1], description: 'The Picolibc minor version number.') conf_data.set('__PICOLIBC_PATCHLEVEL__', picolibc_patch_level, description: 'The Picolibc patch level.') conf_data.set('_NEWLIB_VERSION', '"@0@"'.format(NEWLIB_VERSION), description: 'The newlib version in string format.') conf_data.set('_NEWLIB__', NEWLIB_MAJOR_VERSION, description: 'The newlib major version number.') conf_data.set('_NEWLIB_MINOR__', NEWLIB_MINOR_VERSION, description: 'The newlib minor version number.') conf_data.set('__NEWLIB_PATCHLEVEL__', NEWLIB_PATCHLEVEL_VERSION, description: 'The newlib patch level.') if tinystdio stdio_inc_dir = 'newlib/libc/tinystdio' else stdio_inc_dir = 'newlib/libc/stdio' endif inc_dirs = [stdio_inc_dir, '.', 'newlib/libc/include'] inc = include_directories(inc_dirs) includedir = join_paths(prefix, get_option('includedir')) # We don't need '-fdata-sections' currently as there aren't any # files with data used in separate code paths. This works around # versions of gcc for RISC-V which have a bug that mis-names # initialized read-only data segments when -fdata-sections # is defined arguments = [] if cc.has_argument('-ffunction-sections') arguments += ['-ffunction-sections'] endif if thread_local_storage tls_arg = '-ftls-model=' + get_option('tls-model') assert(cc.has_argument(tls_arg), 'Compiler does not support \'-ftls-model\'!') arguments += [tls_arg] endif add_project_arguments(arguments, language: 'c') # libc will adjust this if supported has_ieeefp_funcs = false # semihost will adjust these if supported # any kind of semihosting support, enough to run general has_semihost = false # arm compatible semihosting, enough to run arm semihost tests has_arm_semihost = false # some semihost needs bios to run the tests with qemu bios_bin = [] # make sure to include semihost BEFORE picocrt! if enable_semihost subdir('semihost') endif if tinystdio subdir('dummyhost') endif conf_data.set('HAVE_SEMIHOST', has_semihost, description: 'Semihost APIs supported') # By default, tests don't require any special arguments # disable compiler built-ins so we reach the library equivalents test_c_args = c_args + arg_fnobuiltin if tests_enable_stack_protector if cc.has_argument('-fstack-protector-all') and cc.has_argument('-fstack-protector-strong') test_c_args += ['-fstack-protector-all', '-fstack-protector-strong', '-DTESTS_ENABLE_STACK_PROTECTOR'] else tests_enable_stack_protector = false endif endif # CompCert needs the '-WUl,' prefix to correctly pass the --spec parameters to the linker specs_prefix = '' if cc.get_id() == 'ccomp' specs_prefix = '-WUl,' endif if has_semihost # If we're using semihosting, we assume that there's a custom linker # script that includes picolibc.specs. Linker args must be strings # (seems like a bug), so compute the path by hand. Because at the # linker's runtime, its working directory is the build dir, linker # scripts under scripts/ can't be found. We use the absolute path # for our convinience. custom_script = 'scripts/test-' + host_cpu_family + '.ld' test_link_args = ['-nostartfiles', '-nostdlib', '-T', meson.current_source_dir() / custom_script, '-T', '@0@'.format(picolibc_ld), '-lgcc'] test_linker_files = files(custom_script) + [picolibc_ld] specs = picolibc_specs else test_link_args = [] test_linker_files = [] specs = test_specs endif # Clang does not support spec files specs_line = [] if cc.get_id() != 'clang' specs_line += [specs_prefix + '--specs', specs_prefix + meson.current_build_dir() / '@0@'.format(specs)] endif test_c_args += specs_line test_link_args += specs_line # Make sure all of the tests get re-linked if the linker scripts change. test_link_depends = test_linker_files + [specs] # make sure to include semihost BEFORE picocrt! if enable_picocrt subdir('picocrt') endif subdir('newlib') if enable_tests subdir('test') endif conf_data.set('HAVE_IEEEFP_FUNCS', has_ieeefp_funcs, description: 'IEEE fp funcs available') configure_file(output : 'picolibc.h', configuration: conf_data, install_dir: includedir) # Usage as an embedded subproject: # If picolibc is embedded into the source as a subproject, # provide a dependency to be used by the main project: # dependency('libc', fallback: ['picolibc', 'libc_dep']) if not enable_multilib and meson.is_subproject() picolibc_dep = declare_dependency(include_directories: inc, link_with: [lib_c, lib_m]) endif picolibc-1.7.4/meson_options.txt000066400000000000000000000257021414576234500167650ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # option('fast-strcmp', type: 'boolean', value: true, description: 'Always optimize strcmp for performance') option('have-alias-attribute', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto', description: 'Compiler supports __alias__ attribute') option('have-format-attribute', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto', description: 'Compiler supports __format__ attribute') option('multilib', type: 'boolean', value: true, description: 'Enable multilib compile') option('multilib-list', type: 'array', value: [], description: 'List of multilib configurations to build for') option('picolib', type: 'boolean', value: true, description: 'Include pico lib bits') option('picocrt', type: 'boolean', value: true, description: 'Include pico crt bits') option('semihost', type: 'boolean', value: true, description: 'Include semihost bits') option('specsdir', type: 'string', description: 'Installation directory for .specs file') option('sysroot-install', type: 'boolean', value: false, description: 'Install in gcc sysroot') option('picoexit', type: 'boolean', value: true, description: 'Smaller exit/atexit/onexit code') option('fortify-source', type: 'combo', choices: ['none', '1', '2'], value: 'none', description: 'Set _FORTIFY_SOURCE=') # # Testing options # option('native-tests', type: 'boolean', value: false, description: 'Run math tests against native libc too') option('tests', type: 'boolean', value: false, description: 'Enable tests') option('tests-enable-stack-protector', type: 'boolean', value: true, description: 'tests enable stack protector') option('tests-enable-full-malloc-stress', type: 'boolean', value: false, description: 'tests enable stress test for full malloc') option('tests-enable-posix-io', type: 'boolean', value: true, description: 'tests enable posix-io when available') option('tinystdio', type: 'boolean', value: true, description: 'Use tiny stdio from avr libc') # # Options applying to both legacy stdio and tinystdio # option('io-c99-formats', type: 'boolean', value: true, description: 'enable C99 support in IO functions like printf/scanf') option('newlib-io-c99-formats', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto', description: 'enable C99 support in IO functions like printf/scanf') option('io-long-long', type: 'boolean', value: false, description: 'enable long long type support in IO functions like printf/scanf') option('newlib-io-long-long', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto', description: 'enable long long type support in IO functions like printf/scanf') # # Options applying only to tinystdio # option('io-float-exact', type: 'boolean', value: true, description: 'use float/string code which supports round-tripping') option('atomic-ungetc', type: 'boolean', value: true, description: 'use atomics in fgetc/ungetc to make them re-entrant') option('posix-io', type: 'boolean', value: true, description: 'Provide fopen/fdopen using POSIX I/O (open, close, read, write, lseek)') option('posix-console', type: 'boolean', value: false, description: 'Use POSIX I/O for stdin/stdout/stderr') option('format-default', type: 'combo', choices: ['double', 'float', 'integer'], value: 'double', description: 'which printf/scanf versions should be the default') # # Options applying to only legacy stdio # option('newlib-elix-level', type: 'integer', value: 2, description: 'desired elix library level (0-4)') option('newlib-fseek-optimization', type: 'boolean', value: false, description: 'enable fseek optimization') option('newlib-fvwrite-in-streamio', type: 'boolean', value: false, description: 'disable iov in streamio') option('newlib-global-stdio-streams', type: 'boolean', value: false, description: 'enable global stdio streams') option('newlib-io-float', type: 'boolean', value: false, description: 'enable printf/scanf family float support') option('newlib-io-pos-args', type: 'boolean', value: false, description: 'enable printf-family positional arg support') option('newlib-io-long-double', type: 'boolean', value: false, description: 'enable long double type support in IO functions printf/scanf (newlib stdio only)') option('newlib-nano-formatted-io', type: 'boolean', value: false, description: 'Use nano version formatted IO') option('newlib-reent-small', type: 'boolean', value: false, description: 'enable small reentrant struct support') option('newlib-stdio64', type: 'boolean', value: true, description: 'Include stdio64 with newlib stdio') option('newlib-unbuf-stream-opt', type: 'boolean', value: false, description: 'enable unbuffered stream optimization in streamio') option('newlib-wide-orient', type: 'boolean', value: false, description: 'Turn off wide orientation in streamio') option('newlib-have-fcntl', type: 'boolean', value: false, description: 'System has fcntl function') # # Internationalization options # option('newlib-iconv-encodings', type: 'array', description: 'enable specific comma-separated list of bidirectional iconv encodings to be built-in') option('newlib-iconv-from-encodings', type: 'array', description: 'enable specific comma-separated list of "from" iconv encodings to be built-in') option('newlib-iconv-to-encodings', type: 'array', description: 'enable specific comma-separated list of "to" iconv encodings to be built-in') option('newlib-iconv-external-ccs', type: 'boolean', value:false, description: 'Load iconv CCS tables from files rather than having them built-in') option('newlib-iconv-dir', type: 'string', description: 'Installation directory for iconv CCS files') option('newlib-iconv-runtime-dir', type: 'string', description: 'Path used at runtime to locate iconv CCS files') option('newlib-locale-info', type: 'boolean', value: false, description: 'locale support') option('newlib-locale-info-extended', type: 'boolean', value: false, description: 'extended locale support') option('newlib-mb', type: 'boolean', value: false, description: 'enable multibyte support') # # Startup/shutdown options # option('lite-exit', type: 'boolean', value: true, description: 'enable light weight exit') option('newlib-atexit-dynamic-alloc', type: 'boolean', value: false, description: 'enable dynamic allocation of atexit entries') option('newlib-global-atexit', type: 'boolean', value: false, description: 'enable atexit data structure as global') option('newlib-initfini', type: 'boolean', value: true, description: 'Supports _init() and _fini()') option('newlib-initfini-array', type: 'boolean', value: true, description: 'compiler supports INIT_ARRAY section types') option('newlib-register-fini', type: 'boolean', value: false, description: 'enable finalization function registration using atexit') # # Malloc option # option('newlib-nano-malloc', type: 'boolean', value: true, description: 'use small-footprint nano-malloc implementation') # # Locking support # option('newlib-multithread', type: 'boolean', value: true, description: 'enable support for multiple threads') option('newlib-retargetable-locking', type: 'boolean', value: true, description: 'Allow locking routines to be retargeted at link time') # # Thread-local storage support # option('thread-local-storage', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto', description: 'use thread local storage for static data (default: automatically detect support)') option('tls-model', type: 'combo', choices: ['global-dynamic', 'local-dynamic', 'initial-exec', 'local-exec'], value: 'local-exec', description: 'Set TLS model. No-op when thread-local-storage is false') option('newlib-global-errno', type: 'boolean', value: false, description: 'use global errno variable') # # Math options # # Use "obsolete" math code, which use 'float' for 'float' functions # instead of the newer code which uses 'double' instead. # option('newlib-obsolete-math', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto', description: 'Use float type for float valued math routines (default: automatic based on platform)') option('newlib-obsolete-math-float', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto', description: 'Use old math code that uses float type for float valued math routines (default: automatic based on platform)') option('newlib-obsolete-math-double', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto', description: 'Use old math code for double valued math routines (default: automatic based on platform)') option('want-math-errno', type: 'boolean', value: false, description: 'Set errno in math functions according to stdc (default: false)') # # Obsolete newlib options # option('newlib-long-time_t', type: 'boolean', value: false, description: 'define time_t to long instead of a 64-bit type') option('newlib-missing-syscall-names', type: 'boolean', value: false, description: 'system only provides regular syscall API') option('newlib-reentrant-syscalls-provided', type: 'boolean', value: false, description: 'system provides reentrant syscall API') option('newlib-supplied-syscalls', type: 'boolean', value: false, description: 'newlib supplies system call functions') picolibc-1.7.4/newlib/000077500000000000000000000000001414576234500146025ustar00rootroot00000000000000picolibc-1.7.4/newlib/ChangeLog000066400000000000000000000000421414576234500163500ustar00rootroot00000000000000Deprecated. See git log instead. picolibc-1.7.4/newlib/ChangeLog-2015000066400000000000000000037506151414576234500167620ustar00rootroot000000000000002015-12-21 Freddie Chopin * libc/stdlib/__atexit.c (__register_exitproc): Fix for _ATEXIT_DYNAMIC_ALLOC. 2015-12-21 Freddie Chopin * libc/stdlib/on_exit_args.{c,h}: New files. * libc/stdlib/Makefile.am: Add new source file. * libc/stdlib/Makefile.in: Regenerate. * libc/stdlib/__atexit.c (__register_exitproc): Initialize _on_exit_args_ptr field of _GLOBAL_ATEXIT on first run. * libc/stdlib/on_exit.c: Force linking of static instance of _on_exit_args. * libc/stdlib/cxa_atexit.c: Likewise. 2015-12-17 Anton Kolesov * libc/machine/arc/asm.h: Define new GCC definition for old compiler. * libc/machine/arc/memcmp-bs-norm.S: Use new GCC defines to detect processor features. * libc/machine/arc/memcmp.S: Likewise. * libc/machine/arc/memcpy-archs.S: Likewise. * libc/machine/arc/memcpy-bs.S: Likewise. * libc/machine/arc/memcpy.S: Likewise. * libc/machine/arc/memset-archs.S: Likewise. * libc/machine/arc/memset-archs.S: Likewise. * libc/machine/arc/memset-bs.S: Likewise. * libc/machine/arc/memset.S: Likewise. * libc/machine/arc/setjmp.S: Likewise. * libc/machine/arc/strchr-bs-norm.S: Likewise. * libc/machine/arc/strchr-bs.S: Likewise. * libc/machine/arc/strchr.S: Likewise. * libc/machine/arc/strcmp-archs.S: Likewise. * libc/machine/arc/strcmp.S: Likewise. * libc/machine/arc/strcpy-bs-arc600.S: Likewise. * libc/machine/arc/strcpy-bs.S: Likewise. * libc/machine/arc/strcpy.S: Likewise. * libc/machine/arc/strlen-bs-norm.S: Likewise. * libc/machine/arc/strlen-bs.S: Likewise. * libc/machine/arc/strlen.S: Likewise. * libc/machine/arc/strncpy-bs.S: Likewise. * libc/machine/arc/strncpy.S: Likewise. 2015-12-17 Corinna Vinschen * libc/include/sys/types.h: Remove including . 2015-12-14 Sebastian Huber * libc/include/sys/reent.h (_REENT_INIT_PTR_ZEROED): New. (_REENT_INIT_PTR): Define only once and use _REENT_INIT_PTR_ZEROED(). 2015-12-14 Sebastian Huber * libc/include/sys/_sigset.h: New. * libc/include/sys/select.h: Do not include and to avoid cyclic header file dependencies. Include specialized header files instead. (sigset_t): Conditionally define. * libc/include/sys/signal.h (sigset_t): Likewise. * libc/include/sys/time.h: Include if __BSD_VISIBLE. * libc/include/sys/types.h: Likewise. 2015-12-12 Freddie Chopin * libc/stdlib/__atexit.c (__register_exitproc): Always release lock before return. 2015-12-09 Thomas Preud'homme * libm/machine/arm/s_ceil.c: Also check that 64bit FP instructions are available in the guard. * libm/machine/arm/s_floor.c: Likewise. * libm/machine/arm/s_nearbyint.c: Likewise. * libm/machine/arm/s_rint.c: Likewise. * libm/machine/arm/s_round.c: Likewise. * libm/machine/arm/s_trunc.c: Likewise. 2015-12-08 Corinna Vinschen * libc/stdio/fclose.c (_fclose_r): Make _flockfile/_funlockfile calls dependent on __SNLK flag. * libc/stdio/findfp.c (__fp_lock): Ditto. (__fp_unlock): Ditto. * libc/stdio/freopen.c (_freopen_r): Ditto. * libc/stdio64/freopen64.c (_freopen64_r): Ditto. 2015-12-08 Corinna Vinschen * libc/stdio/freopen.c (_freopen_r): Only reset __SWID bit per SUSv4. * libc/stdio64/freopen64.c (_freopen64_r): Add missing resetting of flag values and _mbstate. 2015-12-07 Nick Withers * libc/sys/arm/sys/param.h (NBBY): Define if not already defined. * libc/sys/rtems/include/sys/param.h (NBBY): Define. 2015-12-07 Corinna Vinschen * libc/include/sys/types.h: Move definitions of NBBY and howmany to sys/param.h. Move definitions of select(2) macros to sys/select.h. * libc/include/sys/param.h: See above. * libc/include/sys/select.h: Move Cygwin's sys/select.h here. 2015-11-26 Corinna Vinschen * libc/stdlib/strtodg.c: Add ifdef to check _HAVE_LONG_DOUBLE and _LDBL_EQ_DBL. 2015-11-24 Steve Ellcey * libc/stdlib/strtorx.c: Fix ifdef to check _LDBL_EQ_DBL. 2015-11-23 Marcus Shawcroft * libc/machine/arm/strlen-stub.c: Adjust strlen-armv7.S selection logic. * libc/machine/arm/strlen.S: Likewise. 2015-11-23 Marcus Shawcroft * libc/machine/arm/strlen-stub.c: Move T2 -O2 implementation to... * libc/machine/arm/strlen-thumb2-Os.S: New file. * libc/machine/arm/strlen.S: Include strlen-thumb2-Os.S. 2015-11-21 Corinna Vinschen * libc/stdlib/strtodg.c: Define USE_LOCALE. (_strtodg_r): Handle multibyte decimal point. 2015-11-20 Corinna Vinschen * libc/stdlib/Makefile.am (GENERAL_SOURCES): Add strtodg.c and strtorx.c. * libc/stdlib/Makefile.in: Regenerate. * libc/stdlib/strtodg.c: New file implementing generic string to long double conversion. * libc/stdlib/strtorx.c: New file, implementing IEEE format string to long double conversion. * libc/stdlib/mprec.h (_strtodg_r): Declare. (_strtorx_r): Declare. * libc/stdlib/gdtoa.h (__UShort): Define. * libc/stdlib/strtold.c (__flt_rounds): Define for i386 and x86_64 target. (FLT_ROUNDS): Define, as 0 on platforms missing a __flt_rounds function. (_strtold_r): Converted from strtold. Call _strtorx_r on targets supporting distinct long doubles. (strtold): Just call _strtold_r. * libc/include/stdlib.h (_strtold_r): Declare. * libc/stdlib/ldtoa.c (_strtold): Comment out. Explain why. * libc/stdio/vfscanf.c (__SVFSCANF_R): Call _strtold_r instead of _strtold. * libc/machine/powerpc/vfscanf.c (__svfscanf_r): Ditto. 2015-11-20 Corinna Vinschen * libc/stdlib/strtod.c (match): Move from here... * libc/stdlib/gdtoa-hexnan.c (match): ...to here. * libc/stdlib/mprec.h (match): Declare and add __match define. 2015-11-20 Corinna Vinschen * libc/stdlib/wcstold.c (_strtold): Drop unused declaration. 2015-11-19 Yaakov Selkowitz * libc/stdlib/stdlib.tex: Fix typo in rpmatch reference. 2015-11-19 Corinna Vinschen * libc/stdlib/ldtoa.c: Convert to GNU style so as not to get crazy reading the code. 2015-11-19 Corinna Vinschen * libc/stdlib/rpmatch.c: Include sys/types.h to make GCC happy. 2015-11-12 Jon Turney * libc/stdio/sprintf.c: Simplify documentation markup. * libc/stdio/swprintf.c: Ditto. 2015-11-12 Jon Turney * libc/stdio/sscanf.c: Improve documentation markup. * libc/stdio/swscanf.c: Ditto. 2015-11-17 Yaakov Selkowitz * libc/include/stdlib.h (rpmatch): Declare. * libc/stdlib/Makefile.am (ELIX_4_SOURCES): Add rpmatch.c. (CHEWOUT_FILES): Add rpmatch.def. * libc/stdlib/Makefile.in: Regenerate. * libc/stdlib/rpmatch.c: New file. * libc/stdlib/stdlib.tex: Add references to rpmatch. 2015-11-13 Marcus Shawcroft * libc/machine/arm/strlen-stub.c: Move T1 -O2 implementation to... * libc/machine/arm/strlen-thumb1-Os.S: New file. * libc/machine/arm/strlen.S: Include strlen-thumb1-Os.S. 2015-11-13 Marcus Shawcroft * libc/machine/arm/Makefile.am: Adding strlen.S. * libc/machine/arm/Makefile.in: Regenerate. * libc/machine/arm/strlen.S: New. * libc/machine/arm/strlen-stub.c: Rewrite #if condition. * libc/machine/arm/strlen-armv7.S: Remove surrounding #if. 2015-11-13 Marcus Shawcroft * libc/machine/arm/Makefile.am: Rename strlen.c to strlen-stub.c * libc/machine/arm/Makefile.in: Regenerate. * libc/machine/arm/strlen.c: Rename to... * libc/machine/arm/strlen-stub.c: ... this. 2015-11-13 Marcus Shawcroft * libc/machine/arm/Makefile.am: Drop STRLEN_SRC and STRLEN_OBJ. Adding strlen.c. * libc/machine/arm/configure.in (HAVE_THUMB1, OPT_SIZE): Remove. * libc/machine/arm/strlen.c: Include ../../string/strlen.c. * libc/machine/arm/configure: Regenerate. * libc/machine/arm/Makefile.in: Regenerate. 2015-11-13 Marcus Shawcroft * libc/machine/arm/strlen.c: Refactor nested #if. 2015-11-12 Anton Kolesov * configure.host: Add ARC support. * libc/include/machine/setjmp.h: Likewise. * libc/machine/configure: Likewise. * libc/machine/configure.in: Likewise. * libc/machine/arc/Makefile.am: Likewise. * libc/machine/arc/Makefile.in: Likewise. * libc/machine/arc/aclocal.m4: Likewise. * libc/machine/arc/asm.h: Likewise. * libc/machine/arc/configure: Likewise. * libc/machine/arc/configure.in: Likewise. * libc/machine/arc/memcmp-bs-norm.S: Likewise. * libc/machine/arc/memcmp-stub.c: Likewise. * libc/machine/arc/memcmp.S: Likewise. * libc/machine/arc/memcpy-archs.S: Likewise. * libc/machine/arc/memcpy-bs.S: Likewise. * libc/machine/arc/memcpy-stub.c: Likewise. * libc/machine/arc/memcpy.S: Likewise. * libc/machine/arc/memset-archs.S: Likewise. * libc/machine/arc/memset-bs.S: Likewise. * libc/machine/arc/memset-stub.c: Likewise. * libc/machine/arc/memset.S: Likewise. * libc/machine/arc/setjmp.S: Likewise. * libc/machine/arc/strchr-bs-norm.S: Likewise. * libc/machine/arc/strchr-bs.S: Likewise. * libc/machine/arc/strchr-stub.c: Likewise. * libc/machine/arc/strchr.S: Likewise. * libc/machine/arc/strcmp-archs.S: Likewise. * libc/machine/arc/strcmp-stub.c: Likewise. * libc/machine/arc/strcmp.S: Likewise. * libc/machine/arc/strcpy-bs-arc600.S: Likewise. * libc/machine/arc/strcpy-bs.S: Likewise. * libc/machine/arc/strcpy-stub.c: Likewise. * libc/machine/arc/strcpy.S: Likewise. * libc/machine/arc/strlen-bs-norm.S: Likewise. * libc/machine/arc/strlen-bs.S: Likewise. * libc/machine/arc/strlen-stub.c: Likewise. * libc/machine/arc/strlen.S: Likewise. * libc/machine/arc/strncpy-bs.S: Likewise. * libc/machine/arc/strncpy-stub.c: Likewise. * libc/machine/arc/strncpy.S: Likewise. 2015-11-12 Anton Kolesov * configure.host: Remove ARC system. * libc/sys/configure: Likewise. * libc/sys/configure.in: Likewise. * libc/sys/arc/Makefile.am: Likewise. * libc/sys/arc/Makefile.in: Likewise. * libc/sys/arc/aclocal.m4: Likewise. * libc/sys/arc/configure: Likewise. * libc/sys/arc/configure.in: Likewise. * libc/sys/arc/crt0.S: Likewise. * libc/sys/arc/dummy.S: Likewise. * libc/sys/arc/isatty.c: Likewise. * libc/sys/arc/mem-layout.c: Likewise. * libc/sys/arc/sbrk.c: Likewise. * libc/sys/arc/sys/syscall.h: Likewise. * libc/sys/arc/syscalls.c: Likewise. 2015-11-12 Marcus Shawcroft * testsuite/lib/flags.exp (libgloss_link_flags): Drop multilibtop from target_build_path. 2015-11-06 Jon Turney * doc/makedoc.c (iscommand): Only allow commands to have trailing spaces, not space separated words. 2015-11-06 Jon Turney * libm/mathfp/s_acos.c: Fix QUICKREF. * libm/mathfp/e_acosh.c: Ditto. * libm/math/w_asin.c: Ditto. * libm/mathfp/e_acosh.c: Ditto. * libm/mathfp/s_acos.c: Ditto. 2015-11-06 Jon Turney * doc/doc.str: Fix INTERNAL_DEFINITION, INTERNAL_FUNCTION and INTERNAL. 2015-11-12 Wilco Dijkstra * newlib/libc/machine/aarch64/memcpy.S (memcpy): Further tuning for performance. 2015-11-12 Joseph Myers * libc/machine/arm/strcmp-arm-tiny.S: Use .cfi_sections .debug_frame. * libc/machine/arm/strcmp-armv4.S: Likewise. * libc/machine/arm/strcmp-armv4t.S: Likewise. * libc/machine/arm/strcmp-armv6.S: Likewise. * libc/machine/arm/strcmp-armv6m.S: Likewise. * libc/machine/arm/strcmp-armv7.S: Likewise. * libc/machine/arm/strcmp-armv7m.S: Likewise. 2015-11-06 Marcus Shawcroft * libc/machine/arm/Makefile.am: Drop MEMCHR_SRC and MEMCHR_OBJ. * libc/machine/arm/Makefile.in: Regenerate. * libc/machine/arm/memchr-stub.c: New. * libc/machine/arm/memchr.S: Adjust comments. Include memchr.c and acle-compat.h. Make .arch directive architecture dependent. * libc/machine/arm/configure.in (HAVE_ARMV7): Remove. * libc/machine/arm/configure: Regenerate. 2015-11-06 Marcus Shawcroft * libc/machine/arm/Makefile.am: Drop MEMCPY_SRC and MEMCPY_OBJ. * libc/machine/arm/Makefile.in: Regenerate. * libc/machine/arm/configure.in: Remove HAVE_ARMV8A, HAVE_ARMV7A and HAVE_ARM7M. * libc/machine/arm/configure: Regenerate. * libc/machine/arm/memcpy-stub.c: New. * libc/machine/arm/memcpy.c: Adjust copyright year. Adjust comments. Include acle-compat.h. 2015-11-06 Olivier Martin * libc/include/stdlib.h (mktemp): Change attribute to deprecated. (_mktemp_r): Ditto. 2015-11-03 Marcus Shawcroft * libc/machine/arm/configure.in: Check for __ARM_ARCH_8A__. * libc/machine/arm/memcpy.S: Handle __ARM_ARCH_8A__. * libc/machine/arm/Makefile.am: Consider HAVE_ARMV8A in memcpy selection. * libc/machine/arm/Makefile.in: Regenerate. * libc/machine/arm/configure: Regenerate. 2015-11-02 Jon Turney * HOWTO: Update. * Makefile.shared: Move documentation rules to here... * libc/argz/Makefile.am: ... from here ... * libc/ctype/Makefile.am: ... and here. * libc/errno/Makefile.am: Ditto. * libc/iconv/Makefile.am: Ditto. * libc/iconv/ccs/Makefile.am : Ditto. * libc/iconv/ces/Makefile.am: Ditto. * libc/iconv/lib/Makefile.am: Ditto. * libc/locale/Makefile.am: Ditto. * libc/misc/Makefile.am: Ditto. * libc/posix/Makefile.am: Ditto. * libc/reent/Makefile.am: Ditto. * libc/search/Makefile.am: Ditto. * libc/stdio/Makefile.am: Ditto. * libc/stdio64/Makefile.am: Ditto. * libc/stdlib/Makefile.am : Ditto. * libc/string/Makefile.am: Ditto. * libc/syscalls/Makefile.am: Ditto. * libc/time/Makefile.am : Ditto. * libc/unix/Makefile.am: Ditto. * libc/xdr/Makefile.am: Ditto. * libm/common/Makefile.am: Ditto. * libm/complex/Makefile.am: Ditto. * libm/math/Makefile.am: Ditto. * libm/mathfp/Makefile.am: Ditto. 2015-11-02 Jon Turney * libc/time/wcsftime.c: Consistently use an em-dash in FUNCTION summary. * libm/common/isgreater.c: Ditto. * libm/common/s_fdim.c: Ditto. * libm/common/s_fma.c: Ditto. * libm/common/s_fmax.c: Ditto. * libm/common/s_fmin.c: Ditto. * libm/common/s_infinity.c: Ditto. * libm/common/s_isnan.c: Ditto. * libm/common/s_log2.c: Ditto. * libm/common/s_logb.c: Ditto. * libm/common/s_lrint.c: Ditto. * libm/common/s_lround.c: Ditto. * libm/common/s_nearbyint.c: Ditto. * libm/common/s_remquo.c: Ditto. * libm/common/s_rint.c: Ditto. * libm/common/s_round.c: Ditto. * libm/common/s_scalbn.c: Ditto. * libm/common/s_signbit.c: Ditto. * libm/common/s_trunc.c: Ditto. * libm/math/w_exp2.c: Ditto. * libm/math/w_gamma.c: Ditto. 2015-11-02 Jon Turney * libc/stdio/fseek.c: Add missing semicolons to prototypes in SYNOPSIS. * libc/stdio/fwide.c: Ditto. * libc/stdio64/fseeko64.c: Ditto. * libc/string/strtok.c: Ditto. * libc/string/wcstok.c: Ditto. * libm/math/w_cosh.c: Ditto. * libm/math/w_fmod.c: Ditto. * libm/mathfp/s_cosh.c: Ditto. * libm/mathfp/s_fmod.c: Ditto. 2015-11-02 Steve Ellcey * libc/machine/mips/memcpy.S (memcpy): Add word copies for small aligned data. 2015-10-30 Sebastian Huber * libc/include/pthread.h: Include instead of . 2015-10-26 Brian Inglis * libc/time/strftime.c (__strftime): add support for %s (seconds from Unix epoch). Fix whitespaces. 2015-10-19 Nick Clifton * libc/include/sys/_intsup.h: Add support for 16-bit and 20-bit pointers. 2015-10-14 Sebastian Huber * libc/stdlib/Makefile.am (GENERAL_SOURCES): Add alloc_aligned.c.c. * libc/stdlib/Makefile.in: Regenerate. * libc/stdlib/aligned_alloc.c: New. 2015-10-14 Sebastian Huber * libc/include/stdlib.h (alloc_aligned): Declare. 2015-10-14 Sebastian Huber * libc/include/stdlib.h (at_quick_exit): Declare. (quick_exit): Likewise. * libc/stdlib/Makefile.am (GENERAL_SOURCES): Add quick_exit.c. * libc/stdlib/Makefile.in: Regenerate. * libc/stdlib/quick_exit.c: New. 2015-10-13 Sebastian Huber * libc/include/threads.h: New. * libc/sys/rtems/include/machine/_threads.h: Likewise. 2015-10-13 Sebastian Huber * libc/include/sys/cdefs.h: Synchronize with latest FreeBSD version. 2015-10-13 Sebastian Huber * libc/include/sys/cdefs.h: Add style changes of latest FreeBSD version. 2015-10-08 Nick Clifton * libc/include/machine/setjmp.h (_JBLEN): Define for IA64. 2015-09-22 James Bowman * configure.host (ft32): minimise newlib code size 2015-09-04 James Bowman * configure.host: Add ft32 support. * libc/include/machine/ieeefp.h: Ditto. * libc/include/machine/setjmp.h: Ditto. * libc/machine/configure.in: Ditto. * libc/machine/configure: Ditto. * libc/machine/ft32/Makefile.am: New file. * libc/machine/ft32/Makefile.in: Ditto. * libc/machine/ft32/aclocal.m4: Ditto. * libc/machine/ft32/configure.in: Ditto. * libc/machine/ft32/configure: Ditto. * libc/machine/ft32/memcpy.S: Ditto. * libc/machine/ft32/memset.S: Ditto. * libc/machine/ft32/setjmp.S: Ditto. * libc/machine/ft32/stpcmp.S: Ditto. * libc/machine/ft32/strcmp.S: Ditto. * libc/machine/ft32/strcpy.S: Ditto. * libc/machine/ft32/strlen.S: Ditto. 2015-09-03 Hans-Peter Nilsson * libc/machine/cris/sys/signal.h (kill): Declare. 2015-08-29 Corinna Vinschen * include/sys/unistd.h (_SC_LEVEL*): Add cache-related variables as on Linux. 2015-08-27 Markus Eisenmann * libc/machine/arm/strlen-armv7.S: Fix prepocessor check to avoid double definition of strlen. 2015-08-27 Andre Vieira * libc/include/sys/_intsup.h: Defined new __INTxx, __FASTxx and __LEASTxx macro's to hold information regarding the respective types print and scan formats. * libc/include/inttypes.h: Defined LEAST and FAST specific PRI and SCN macro's as these are not always the same as the INT variants. Used the new __INTxx, __FASTxx and __LEASTxx macro's in their corresponding PRI and SCN macros. 2015-08-07 Stefan Wallentowitz * libc/sys/or1k/mlock.c: Fix exception enable saving 2015-08-03 Shoichi Sakon * libc/stdio/vfwscanf.c (__SVFWSCANF_R): Convert wrong usage of va_arg to GET_ARG in %lc, %ls nad %l[] cases. Fix unterminated string in %l[] case. 2015-07-30 Sebastian Huber * libc/sys/rtems/include/sys/lock.h (__LOCK_INIT_RECURSIVE): Use proper type. 2015-07-30 Wilco Dijkstra * libc/machine/aarch64/memset.S (memset): Rewrite. 2015-07-28 Sebastian Huber libc/sys/rtems/machine/_types.h: Move to ... libc/sys/rtems/include/machine/_types.h: ... here. libc/sys/rtems/machine/limits.h: Move to ... libc/sys/rtems/include/machine/limits.h: ... here. libc/sys/rtems/machine/param.h: Move to ... libc/sys/rtems/include/machine/param.h: ... here. libc/sys/rtems/sys/cpuset.h: Move to ... libc/sys/rtems/include/sys/cpuset.h: ... here. libc/sys/rtems/sys/dirent.h: Move to ... libc/sys/rtems/include/sys/dirent.h: ... here. libc/sys/rtems/sys/param.h: Move to ... libc/sys/rtems/include/sys/param.h: ... here. libc/sys/rtems/sys/syslimits.h: Move to ... libc/sys/rtems/include/sys/syslimits.h: ... here. libc/sys/rtems/sys/utime.h: Move to ... libc/sys/rtems/include/sys/utime.h: ... here. 2015-07-28 Sebastian Huber * libc/sys/rtems/include/sys/lock.h: New. 2015-07-21 Corinna Vinschen * libc/include/machine/setjmp.h (siglongjmp): Declare as function on Cygwin. (sigsetjmp): Ditto. (_longjmp): Mark as noreturn function on Cygwin. 2015-07-15 Wilco Dijkstra * libc/machine/aarch64/memset.S (memset): Revert: Rewrite of optimized memset. 2015-07-13 Wilco Dijkstra * libc/machine/aarch64/memset.S (memset): Rewrite of optimized memset. 2015-07-13 Wilco Dijkstra * libc/machine/aarch64/memcpy.S (memcpy): Rewrite of optimized memcpy. 2015-07-13 Wilco Dijkstra * libc/machine/aarch64/memove.S (memmove): Rewrite of optimized memmove. 2015-07-06 Yaakov Selkowitz * libc/include/libgen.h (basename): Define as __xpg_basename for source compatibility with glibc. Declare with __ASMNAME("basename") for ABI compatibility. * libc/include/string.h (basename): Define as basename for source compatibility with glibc. Declare with __ASMNAME("__gnu_basename") for ABI compatibility. 2015-07-06 Corinna Vinschen * libc/include/sys/time.h: Explicitely include sys/cdefs.h. * libc/include/sys/types.h: Ditto. Guard BSD convenience base types with __BSD_VISIBLE rather than !_POSIX_SOURCE. 2015-07-01 Sebastian Huber * libc/stdio/fputs.c (_puts_r): Add missing CHECK_INIT(). * libc/stdio/gets.c (_gets_r): Add missing _REENT_SMALL_CHECK_INIT() and CHECK_INIT(). Use _stdin_r() to get the file pointer instead of stdin. 2015-06-29 Jon Turney * libc/ctype/Makefile.in: Regenerate. * libc/posix/Makefile.in: Ditto. * libc/stdio/Makefile.in: Ditto. * libc/stdio64/Makefile.in: Ditto. * libc/stdlib/Makefile.in: Ditto. * libc/string/Makefile.in: Ditto. 2015-06-23 Jon Turney * libc/ctype/Makefile.am (CHEWOUT_FILES): Add isblank.def. * libc/ctype/ctype.tex: Include isblank and add to menu. * libc/posix/Makefile.am (CHEWOUT_FILES): Add posix_spawn.def. * libc/posix/posix.tex: Include posix_spawn and add to menu. * libc/stdio64/Makefile.am (CHEWOUT_FILES): Add fdopen.def. * libc/stdio64/stdio64.tex: Include fdopen64 and add to menu. * libc/stdio64/fdopen64.c: Improve one-line description. * libc/string/Makefile.am (CHEWOUT_FILES): Add strchrnul.def. * libc/string/strings.tex: Include strchrnul and add to menu. 2015-06-23 Jon Turney * libc/stdlib/stdlib.tex: Include itoa and utoa, and add to menu. * libc/string/strings.tex: Include memrchr and rawmemchr, and add to menu. * libm/math/math.tex: Include exp10 and pow10, and add to menu. * libm/common/s_exp10.c: Improve one-line description. * libm/common/s_exp10.c: Ditto. 2015-06-23 Jon Turney * libc/stdlib/Makefile.am (CHEWOUT_FILES): Remove $(MALLOCR).def. * libc/stdio/Makefile.am (CHEWOUT_FILES): Remove getwc.def and putwc.def. 2015-06-23 Jon Turney * libc/locale/locale.c: Fix mismatched parentheses in documentation. * libc/locale/locale.tex: Ditto. * libc/stdio/fgetwc.c: Ditto. 2015-06-23 Jon Turney * libc/stdlib/efgcvt.c: Fix typo-ed function names in documentation. * libc/stdlib/stdlib.tex: Fix function name in menu to match. 2015-06-23 Jon Turney * libc/stdio/fread.c: Fix inconsistent use of '.' to separate function names in FUNCTION mark up. 2015-06-23 Jon Turney * libc/stdlib/llabs.c: Mark up parameter name in ANSI_SYNOPSIS. * libc/time/tzset.c: Add and mark up parameter in SYNOPSIS. * libm/common/s_nan.c: Ditto. 2015-06-23 Jon Turney * libc/stdio/getchar_u.c: Fix a non-ANSI prototype in SYNOPSIS. 2015-06-23 Jon Turney * libc/string/wcscpy.c: Remove stray ',' from prototype in ANSI_SYNOPSIS. * libc/string/wcpcpy.c: Ditto. 2015-06-23 Jon Turney * libc/stdlib/itoa.c: Fix makedoc markup. * libc/stdlib/wcsnrtombs.c: Ditto. 2015-06-23 Jon Turney * libc/signal/signal.tex: Use texinfo not makedoc markup. * libc/stdio/stdio.tex: Ditto. 2015-06-22 Corinna Vinschen * libc/include/sys/signal.h: Include forgotten sys/cdefs.h. 2015-06-20 Corinna Vinschen * libc/include/sys/signal.h: Move altstack macros completely outside of rtems block. 2015-06-19 Corinna Vinschen * libc/include/sys/signal.h: Define SS_ONSTACK and SS_DISABLE unconditionally. (sigaltstack): Enable prototype on Cygwin. 2015-06-15 Freddie Chopin * libc/time/gmtime_r.c (gmtime_r): use faster algorithm from civil_from_days() by Howard Hinnant 2015-06-01 Hale Wang * libc/machine/arm/aeabi_memmove-arm.S (__aeabi_memmove): Update the assembler implementation. * libc/machine/arm/aeabi_memmove-thumb.S (__aeabi_memmove): Ditto. * libc/machine/arm/aeabi_memmove-thumb2.S (__aeabi_memmove): Ditto. * libc/machine/arm/aeabi_memset-arm.S (__aeabi_memset): Ditto. * libc/machine/arm/aeabi_memset-thumb.S (__aeabi_memset): Ditto. * libc/machine/arm/aeabi_memset-thumb2.S (__aeabi_memset): Ditto. 2015-06-01 Szabolcs Nagy * libm/machine/aarch64/e_sqrt.c: New file. * libm/machine/aarch64/ef_sqrt.c: New file. * libm/machine/aarch64/s_fabs.c: New file. * libm/machine/aarch64/sf_fabs.c: New file. * libm/machine/aarch64/Makefile.in: Add new source files. * libm/machine/aarch64/Makefile.am: Regenerate. 2015-05-31 David Stacey * libc/argz/argz_replace.c (argz_replace): Correct behaviour when memory is exhausted. 2015-05-28 Corinna Vinschen * libc/include/sys/wait.h: Fix comment. 2015-05-27 David Stacey * libc/argz/argz_replace.c: Fix potential memory leak. 2015-05-26 DJ Delorie * libm/math/e_sqrt.c (__ieee754_sqrt): Don't truncate constant to "int". 2015-05-13 Nick Clifton * libm/common/s_signbit.c (__signbitf): Fix for 16-bit targets. (__signbitd): Likewise. 2015-05-02 Corinna Vinschen * libc/include/sys/time.h: Include sys/select.h on Cygwin. Explain why. 2015-04-29 Corinna Vinschen * libc/include/sys/config.h: Move evaluation of _UINTPTR_EQ_ULONG and _UINTPTR_EQ_ULONGLONG from here... * libc/include/sys/_intsup.h: ...to here. Rename to _INTPTR_EQ_LONG and _INTPTR_EQ_LONGLONG to refer to signed base type. Add test for base type of int32_t and set _INT32_EQ_LONG accordingly. * libc/include/stdint.h: Change checks for __have_long32 to checks for _INT32_EQ_LONG. * libc/include/inttypes.h: Ditto. Accommodate aforementioned name change. 2015-04-22 Corinna Vinschen * libc/include/libgen.h (basename): Drop defining _BASENAME_DEFINED. Always define macro basename. Add comment to explain why. * libc/include/string.h (basename): Check for basename instead of _BASENAME_DEFINED. Drop __GNUC__ branch, always use basename macro. Change comment to explain why. Add nonnull function attribute. 2015-04-09 Nick Clifton * libc/machine/rx/memchr.S: Add non-string insn using version. * libc/machine/rx/memcpy.S: Likewise. * libc/machine/rx/memmove.S: Likewise. * libc/machine/rx/mempcpy.S: Likewise. * libc/machine/rx/strcat.S: Likewise. * libc/machine/rx/strcmp.S: Likewise. * libc/machine/rx/strcpy.S: Likewise. * libc/machine/rx/strlen.S: Likewise. * libc/machine/rx/strncat.S: Likewise. * libc/machine/rx/strncmp.S: Likewise. * libc/machine/rx/strncpy.S: Likewise. 2015-04-01 Corinna Vinschen * libc/include/stdint.h: Throughout add parens around MIN/MAX values. 2015-04-01 Sebastian Huber * libc/include/sys/_stdint.h: New file. * libc/include/stdint.h (int8_t): Move to . (uint8_t): Likewise. (int16_t): Likewise. (uint16_t): Likewise. (int32_t): Likewise. (uint32_t): Likewise. (int64_t): Likewise. (uint64_t): Likewise. (intptr_t): Likewise. (uintptr_t): Likewise. * libc/include/sys/types.h: Include . * libc/sys/rtems/machine/_types.h: Remove include. * libc/sys/time.h>: Replace __uint32_t with uint32_t and __uint64_t with uint64_t. 2015-04-01 Jon TURNEY * libc/include/sys/signal.h (stack_t): Make typedef generally available. 2015-04-01 Corinna Vinschen * libc/stdlib/wctomb_r.c (__utf8_wctomb): Fix check for handling a lone high surrogate. 2015-03-31 Corinna Vinschen * libc/time/lcltime_r.c (localtime_r): Call _tzset_unlocked inside TZ lock. * libc/time/mktime.c (mktime): Ditto. * libc/time/strftime.c (strftime, wcsftime): Ditto. Guard against calling _tzset_unlocked more than once (baring recursion). 2015-03-31 Corinna Vinschen * libc/time/local.h (_tzset_unlocked_r): Add prototype. (_tzset_unlocked): Ditto. * libc/time/tzset.c (_tzset_unlocked): New function, call _tzset_unlocked_r. (tzset): Lock and call _tzset_unlocked_r. * libc/time/tzset_r (_tzset_unlocked_r): Remove locking and rename from _tzset_r. (_tzset_r): Lock and call _tzset_unlocked_r. 2015-03-30 Craig Howland * libc/stdlib/setenv_r.c (_setenv_r): Remove tzset() call for TZ definition. * libc/time/lcltime_r.c (localtime_r): Add tzset() call * libc/time/mktime.c (mktime): Ditto. * libc/time/strftime.c (strftime, wcsftime): Ditto. 2015-03-30 Yaakov Selkowitz * libc/time/strftime.c (strftime) <%Z>: Initialize tznam to NULL. Use _tzname as fallback if TM_ZONE is NULL. 2015-03-30 Yaakov Selkowitz * libc/include/libgen.h (_BASENAME_DEFINED): Define. * libc/include/string.h (basename): Declare. * libc/string/Makefile.am (ELIX_4_SOURCES): Add gnu_basename.c. * libc/string/Makefile.in: Regenerate. * libc/string/gnu_basename.c: New file. 2015-03-23 Sebastian Huber * libc/include/sys/tree.h: New file. 2013-03-23 Joel Sherrill * newlib.hin: Remove _UINTPTR_EQ_ULONG and _UINTPTR_EQ_ULONGLONG. 2015-03-23 Joel Sherrill . * configure: Regenerated. 2015-03-19 Steve Ellcey * libc/include/sys/time.h: Replace uint32_t and uint64_t with __uint32_t and __uint64_t. 2015-03-13 Jon TURNEY * libc/libc.texinfo: Fix directory entry. * libm/libm.texinfo: Ditto. 2015-03-13 Corinna Vinschen * libc/include/sys/time.h: Drop including cygwin/sys_time.h on Cygwin. 2015-03-13 Sebastian Huber * libc/include/machine/_types.h (__suseconds_t): Define. * libc/include/sys/_timeval.h: Import from FreeBSD and add MinGW-w64 compatibility. (timerclear): Copy from FreeBSD . (timerisset): Likewise. (timercmp): Likewise. (timeradd): Likewise. (timersub): Likewise. * libc/include/sys/time.h: (bintime, ...) Import from FreeBSD. (timespecclear, ...): Likewise. (inittodr, ...): Likewise. (timerclear): Delete. (timerisset): Likewise. (timercmp): Likewise. (timeradd): Likewise. (timersub): Likewise. (futimes): Declare if __BSD_VISIBLE. (futimesat): Likewise. (lutimes): Likewise. (setitimer): Declare unconditionally. (gettimeofday): Declare if __XSI_VISIBLE. * libc/include/sys/types.h (sbintime_t): Define. (suseconds_t): Define conditionally via __suseconds_t. 2015-03-12 Sebastian Huber * libc/sys/rtems/include/semaphore.h: Import from FreeBSD. 2015-03-11 Sebastian Huber * libc/include/sys/_timespec.h: Import from FreeBSD. * libc/include/sys/timespec.h: Likewise. * libc/include/time.h: Include . * libc/include/sys/types.h (timespec): Delete. (itimerspec): Likewise. * libc/include/machine/time.h: Include . * libc/include/sys/sched.h: Likewise. * libc/include/sys/signal.h: Likewise. * libc/include/sys/stat.h: Likewise. 2015-03-11 Nick Clifton * testsuite/newlib.stdio/swprintf.c (main): Change size of value used to initialise 'val' variable so that it will compile on targets with 32-bit doubles. 2015-03-05 Craig Howland * libc/include/stdio.h (FILE): Protect typedef from redefinition. * libc/include/wchar.h: Ditto. 2015-02-25 Gedare Bloom * libc/include/machine/time.h (_CLOCKS_PER_SEC_): redefine for RTEMS. 2015-03-03 Steve Ellcey * libc/machine/mips/memset.S: Add support for mips32r6/mips64r6. 2015-03-03 Steve Ellcey * libc/machine/mips/memcpy.S: Add support for mips32r6/mips64r6. 2015-02-26 Steve Ellcey * libc/machine/mips/memcpy.S: Fix macro indentation and typos in comments. 2015-02-24 Jon TURNEY * libc/include/sys/cdefs.h (_GNU_SOURCE): Move check so it has an effect when _XOPEN_SOURCE is also defined. 2015-02-17 Hale Wang * libc/machine/arm/aeabi_memclr.c: New file to support aeabi_memclr. * libc/machine/arm/aeabi_memset.c: New file to support aeabi_memset. * libc/machine/arm/aeabi_memset-soft.S: Ditto. * libc/machine/arm/aeabi_memset-arm.S: Ditto. * libc/machine/arm/aeabi_memset-thumb.S: Ditto. * libc/machine/arm/aeabi_memset-thumb2.S: Ditto. * libc/machine/arm/Makefile.am: Add dependencies. * libc/machine/arm/Makefile.in: Regenerated. 2015-02-17 Hale Wang * libc/machine/arm/aeabi_memmove.c: New file to support aeabi_memmove. * libc/machine/arm/aeabi_memmove-soft.S: Ditto. * libc/machine/arm/aeabi_memmove-arm.S: Ditto. * libc/machine/arm/aeabi_memmove-thumb.S: Ditto. * libc/machine/arm/aeabi_memmove-thumb2.S: Ditto. * libc/machine/arm/Makefile.am: Add dependencies. * libc/machine/arm/Makefile.in: Regenerated. 2015-02-06 Nick Clifton * libc/include/complex.h (cabsl): Add prototype. (cimagl): Add prototype. (creall): Add prototype. * libc/include/ieeefp.h: Include float.h. (EXT_EXPBITS, EXT_FRACHBITS, EXT_FRACLBITS) (EXT_EXP_INFNAN. EXT_EXP_BIAS, EXT_FRACBITS): Define. (struct ieee_ext, union ieee_ext_u): New types for long double support. * libc/include/math.h (finitel): Add prototype. (hypotl): Add prototype. (sqrtl): Add prototype. * libm/common/Makefile.am (lsrc): Add sl_finite.c. * libm/common/Makefile.in: Regenerate. * libm/common/fdlibm.h (__ieee754_hypotl): Add prototype. * libm/common/hypotl.c (hypotl): Add implementation for when long double is larger than double. * libm/common/sqrtl.c (sqrtl): Likewise. * libm/common/sl_finite.c: New file. Adds implementation of the finitel function. * libm/complex/Makefile.am (lsrc): Define. (libcomplex_la_SOURCES): Add lsrc. (lib_a_SOURCES): Add lsrc. * libm/complex/Makefile.in: Regenerate. * libm/complex/cabs.c: Add documentation of cabsl function. * libm/complex/cimag.c: Add documentation of cimagl function. * libm/complex/creall.c: Add documentation of creall function. * libm/complex/cabsl.c: New file. Adds implementation of the cabsl function. * libm/complex/cimagl.c: New file. Adds implementation of the cimagl function. * libm/complex/creall.c: New file. Adds implementation of the creall function. * libm/math/Makefile.am (lsrc): Define. (libmath_la_SOURCES): Add lsrc. (lib_a_SOURCES): Add lsrc. * libm/math/Makefile.in: Regenerate. * libm/math/el_hypot.c: New file. Adds implementation of the __ieee754_hypotl function. 2015-02-04 Corinna Vinschen * libc/include/wchar.h (wcstold): Drop _LDBL_EQ_DBL requirement for declaration. 2015-01-29 Nick Clifton * libc/stdlib/wcstold.c (wcstold): Add implementation for when long double is not the same as double. 2015-01-28 Christian Eggers * libc/include/sys/time.h: #include for __BSD_VISIBLE. 2015-01-23 Corinna Vinschen Complete action from 2001-12-18: * libc/machine/i386/f_*: Remove duplicate files. 2015-01-22 Yaakov Selkowitz * libc/sys/sparc64/sys/time.h: #include for time_t. 2015-01-22 Stefan Wallentowitz * libc/sys/or1k/mlock.c: Fix dependency on libgloss. 2015-01-21 Eric Botcazou * configure.host: Add Visium support. * libc/machine/configure.in: Likewise. * libc/machine/configure: Regenerate. * libc/machine/visium/: New directory. * libc/include/machine/setjmp.h (_JBLEN): Define for Visium. * libc/include/machine/ieeefp.h (__IEEE_BIG_ENDIAN): Likewise. * libc/include/machine/time.h (_CLOCKS_PER_SEC_): Likewise. 2015-01-20 Stefan Wallentowitz * libc/sys/configure.in: Add OpenRISC. * libc/sys/configure: Regenerate. 2015-01-20 Wilco Dijkstra * libc/machine/aarch64/strlen.S (strlen): Improve performance. 2015-01-20 Stefan Wallentowitz * configure.host: Add extra system for OpenRISC baremetal. 2015-01-14 Joel Sherrill * libc/include/sys/unistd.h [__BSD_VISIBLE]: Add issetugid() prototype. 2015-01-14 Joel Sherrill * doc/makedoc.c: Use uintptr_t to avoid int/pointer size warnings 2015-01-14 Stefan Wallentowitz * configure.host: Add extra system for OpenRISC baremetal * libc/include/sys/config.h: Dynamic reentrancy for or1k sys targets * libc/sys/or1k/: New system for or1k baremetal * libc/sys/or1k/Makefile.am: New file * libc/sys/or1k/Makefile.in: New file * libc/sys/or1k/aclocal.m4: New file * libc/sys/or1k/configure.in: New file * libc/sys/or1k/configure: New file * libc/sys/or1k/getreent.S: New file * libc/sys/or1k/mlock.S: New file * libc/sys/or1k/or1k-asm.S: New file 2015-01-12 Renlin Li * testsuite/newlib.wctype/tiswctype.c (main): Use wide character type function. 2015-01-08 Corinna Vinschen * libc/time/strftime.c (__strftime): Utilize __TM_GMTOFF and __TM_ZONE on systems where available. On Cygwin, call function to get values. Add comment to explain why. Drop TZ_LOCK/TZ_UNLOCK in 'z' case since it's not necessary. In 'Z' case, add a comment to document a potential codeset problem. 2015-01-08 Renlin Li * testsuite/newlib.wctype/twctrans.c (main): Use towlower and towupper. 2015-01-06 Richard Earnshaw * libc/machine/aarch64/strcpy.S (strcpy): Further performance improvements. Adjust to allow building as stpcpy. * libc/machine/aarch64/stpcpy.S: New file. * libc/machine/aarch64/stpcpy-stub.c: New file. * libc/machine/aarch64/Makefile.am (lib_a_SOURCES): Build stpcpy. * libc/machine/aarch64/Makefile.in: Regenerated. 2014-12-26 Freddie Chopin * libc/include/sys/features.h: update newlib version and copyright year 2014-12-18 Jeff Johnston * NEWS: Update with 2.2.0 info. * README: Ditto. * acinclude.m4: Change version number to 2.2.0. * libc/libc.texinfo: Ditto. * libm/libm.texinfo: Ditto. * configure: Regenerated. * Makefile.in: Regenerated. * doc/configure: Ditto. * libc/*/configure: Ditto. * libm/*/configure: Ditto. * libc/sys/linux/shared.ld: Add VERS_2.2 2014-12-18 Yaakov Selkowitz Implement BSD/GNU unlocked stdio extensions. * libc/include/stdio.h (clearerr_unlocked, feof_unlocked, ferror_unlocked, fflush_unlocked, fgetc_unlocked, fgets_unlocked, fileno_unlocked, fputc_unlocked, fputs_unlocked, fread_unlocked, fwrite_unlocked): Declare. * libc/include/wchar.h (fgetwc_unlocked, fgetws_unlocked, fputwc_unlocked, fputws_unlocked, getwc_unlocked, getwchar_unlocked, putwc_unlocked, putwchar_unlocked): Declare. * libc/stdio/Makefile.am (ELIX_4_SOURCES): Add clearerr_u.c, feof_u.c, ferror_u.c, fflush_u.c, fgetc_u.c, fgets_u.c, fgetwc_u.c, fgetws_u.c, fileno_u.c, fputc_u.c, fputs_u.c, fputwc_u.c, fputws_u.c, fread_u.c, fwrite_u.c, getwc_u.c, getwchar_u.c, putwc_u.c, putwchar_u.c. Add necessary dependencies. * libc/stdio/Makefile.in: Regenerate. * libc/stdio/clearerr.c: Document unlocked variant. * libc/stdio/clearerr_u.c: New file. * libc/stdio/feof.c: Document unlocked variant. * libc/stdio/feof_u.c: New file. * libc/stdio/ferror.c: Document unlocked variant. * libc/stdio/ferror_u.c: New file. * libc/stdio/fflush.c: Add __IMPL_UNLOCKED__ overrides. Document unlocked variants. * libc/stdio/fflush_u.c: New file. * libc/stdio/fgetc.c: Document unlocked variants. * libc/stdio/fgetc_u.c: New file. * libc/stdio/fgets.c: Add __IMPL_UNLOCKED__ overrides. Document unlocked variants. * libc/stdio/fgets_u.c: New file. * libc/stdio/fgetwc.c: Document unlocked variants. (__fgetwc): Make non-static. * libc/stdio/fgetwc_u.c: New file. * libc/stdio/fgetws.c: Add __IMPL_UNLOCKED__ overrides. Document unlocked variants. * libc/stdio/fgetws_u.c: New file. * libc/stdio/fileno.c: Document unlocked variant. * libc/stdio/fileno_u.c: New file. * libc/stdio/fputc.c: Document unlocked variants. * libc/stdio/fputc_u.c: New file. * libc/stdio/fputs.c: Add __IMPL_UNLOCKED__ overrides. Document unlocked variants. * libc/stdio/fputs_u.c: New file. * libc/stdio/fputwc.c: Document unlocked variants. (__fputwc): Make non-static. * libc/stdio/fputwc_u.c: New file. * libc/stdio/fputws.c: Add __IMPL_UNLOCKED__ overrides. Document unlocked variants. * libc/stdio/fputws_u.c: New file. * libc/stdio/fread.c: Add __IMPL_UNLOCKED__ overrides. Document unlocked variants. * libc/stdio/fread_u.c: New file. * libc/stdio/fwrite.c: Add __IMPL_UNLOCKED__ overrides. Document unlocked variants. * libc/stdio/fwrite_u.c: New file. * libc/stdio/getwc_u.c: New file. * libc/stdio/getwchar.c: Document unlocked variants. * libc/stdio/getwchar_u.c: New file. * libc/stdio/local.h: Define locking macros as empty ifdef __IMPL_UNLOCKED__. (__fgetwc, __fputwc): Declare. * libc/stdio/putwc_u.c: New file. * libc/stdio/putwchar.c: Document unlocked variants. * libc/stdio/putwchar_u.c: New file. 2014-12-18 Corinna Vinschen * stdio.tex: Add menu entries for __fsetlocking and stdio_ext. * stdio_ext.c: Add "stdio_ext" to synopsis. 2014-12-16 DJ Delorie * libc/stdlib/nano-mallocr.c (ALIGN_TO): Do not assume that integers are as big as pointers. 2014-12-16 Richard Earnshaw * libc/machine/aarch64/strcpy.S: Improve handling of short strings. 2014-12-16 Jon Beniston * libc/include/stdlib.h (__itoa): Declare prototype. (__utoa): Ditto. (itoa): Ditto, non-strict-ANSI only. (utoa): Ditto. * libc/stdlib/Makefile.am: Add itoa.c and utoa.c. * libc/stdlib/Makefile.in: Regenerate. * libc/stdlib/itoa.c: New file. * libc/stdlib/utoa.c: New file. 2014-12-15 Jonathan Roelofs * libc/include/math.h: Add log2l,logbl,nexttowardf, * nexttoward,nexttowardl * libm/common/Makefile.am: Reference new files * libm/common/Makefile.in: Reference new files * libm/common/log2l.c: New File * libm/common/logbl.c: Likewise * libm/common/nexttowardf.c: Likewise * libm/common/nexttoward.c: Likewise * libm/common/nexttowardl.c: Likewise 2014-12-15 Yaakov Selkowitz * libc/include/stdio.h (__SNLK): Define. * libc/include/stdio_ext.h (FSETLOCKING_QUERY, FSETLOCKING_INTERNAL, FSETLOCKING_BYCALLER): Define. (__fsetlocking): Declare. * libc/stdio/Makefile.am: Build fsetlocking.c. * libc/stdio/Makefile.in: Regenerate. * libc/stdio/fsetlocking.c: New file. * libc/stdio/local.h (_newlib_flockfile_start): Make _flockfile call dependent on __SNLK flag. (_newlib_flockfile_exit, _newlib_flockfile_end): Ditto for _funlockfile calls. Define all locking macros as empty if __SINGLE_THREAD__. * libc/stdio/stdio.tex: Include fsetlocking.def. 2014-12-15 Nick Hung * newlib/libc/include/machine/setjmp.h: Add FPU support. * newlib/libc/machine/nds32/setjmp.S: Add FPU support. 2014-12-15 Nick Hung * configure.host: Add libm nds32 machine directory. * libm/machine/configure: Regenerated. * libm/machine/configure.in: Add nds32 AC_CONFIG. * libm/machine/nds32/Makefile.am: New file. * libm/machine/nds32/Makefile.in: Generated. * libm/machine/nds32/aclocal.m4: Generated. * libm/machine/nds32/configure: Generated. * libm/machine/nds32/configure.in: New file. * libm/machine/nds32/w_sqrt.S: New file. * libm/machine/nds32/wf_sqrt.S: New file. 2014-12-15 Corinna Vinschen * libc/include/stdlib.h: Include sys/cdefs.h to avoid undefined __ASMNAME. 2014-12-12 Stefan Wallentowitz * configure.host: or1knd support, OpenRISC without delay slot * libc/include/machine/setjmp.h: Add or1knd * libc/machine/or1k/setjmp.S: Optional delay slot 2014-12-12 Stefan Wallentowitz * libc/machine/or1k/setjmp.S: Remove save/restore of r3-r8 2014-12-11 Jonathan Roelofs Corinna Vinschen * libc/include/stdio.h: Fix type signature of __sfeof and __sferror for C++. 2014-12-11 Yaakov Selkowitz * libc/include/stdio_ext.h: Rename __fwriteable to __fwritable. [!__GNUC__]: Declare real functions for the macros, and make the macros conditional on !__cplusplus. * libc/stdio/Makefile.am (ELIX_4_SOURCES): Add stdio_ext.c. (CHEWOUT_FILES): Add stdio_ext.def. * libc/stdio/Makefile.in: Regenerate. * libc/stdio/stdio.tex: Include stdio_ext.def. * libc/stdio/stdio_ext.c: New file. 2014-12-04 Corinna Vinschen * libc/include/stdio_ext.h: Remove excess "inline". 2014-12-10 Richard Earnshaw * libc/machine/aarch64/strchrnul.S (vrepmask): Use a call-clobbered register. 2014-12-08 Richard Earnshaw * libc/machine/aarch64/strrchr.S: New file. * libc/machine/aarch64/strrchr-stub.c: New file. * libc/machine/aarch64/Makefile.am: Add them to build list. * libc/machine/aarch64/Makefile.in: Regenerated. 2014-12-07 Freddie Chopin * libc/time/gmtime_r.c (gmtime_r): Fixed bug in calculations for dates after year 2069 or before year 1901. Ideas for solution taken from musl's __secs_to_tm() 2014-12-05 Yaakov Selkowitz * libc/include/stdlib.h (__bsd_qsort_r): Declare. (qsort_r): Declare. * libc/search/Makefile.am (ELIX_2_SOURCES): Rename from ELIX_SOURCES. (ELIX_4_SOURCES): Define. Add bsd_qsort_r.c and qsort_r.c. (libsearch_la_SOURCES): Adapt accordingly. (lib_a_SOURCES): Adapt accordingly. (CHEWOUT_FILES): Add qsort_r.def. * libc/search/Makefile.in: Regenerate. * libc/search/bsd_qsort_r.c: New file. * libc/search/qsort.c: Update from FreeBSD HEAD. Adapt for both BSD and GNU qsort_r flavors. * libc/search/qsort_r.c: New file. 2014-12-04 Ulrich Weigand Corinna Vinschen * libc/include/sys/signal.h [__SPU__] (kill): Declare. 2014-12-03 Jeff Johnston * libc/include/inttypes.h: Only enable the 8-bit scanning macros if _WANT_IO_C99_FORMATS is defined by configuration. Add comment on why. 2014-11-28 Matthew Fortune * libc/include/machine/setjmp.h [__mips__]: Remove __mips_fpr == 64 from the 64-bit _JBTYPE definition. * libc/machine/mips/setjmp.S: Re-work the o32 FP64 support to match the now one-and-only supported o32 FP64 ABI extension. Also support o32 FPXX. 2014-11-26 Hale Wang * libc/machine/arm/strcmp-armv6m.S: New file. * libc/machine/arm/strcmp.S: Add new wrapper. * libc/machine/arm/Makefile.am: Add dependencies. * libc/machine/arm/Makefile.in: Regenerated. 2014-11-25 Corinna Vinschen * libc/include/sys/_default_fcntl.h: Move all Cygwin-specific open flags from Cygwin's fcntl.h here. Remove check for WIN32. Remove Windows-specific macros. 2014-11-23 Joel Sherrill * libc/include/sys/resource.h: Add prototype for getrusage() to 2014-11-21 Nick Clifton PR target/63901 * configure.host (msp430): Add -mhwmult=none to newlib_cflags. 2014-11-20 Peter A. Bigot * libc/stdio/nano-vfprintf_i.c (_printf_i): Use LONGINT when void* is larger than an int. 2014-11-20 Sebastian Huber * libc/sys/rtems/sys/syslimits.h (NGROUPS_MAX): Adjust value so that NGROUPS is even. 2014-11-12 Jon Beniston * libc/stdlib/strtod.c (sulp): Cast to int32_t to avoid overflow. * libc/time/gmtime_r.c (DAYS_PER_*_YEARS): Convert to long constants to avoid overflow. 2014-11-10 Richard Earnshaw * libc/machine/aarch64/strcpy.S: New file. * libc/machine/aarch64/strcpy-stub.S: New file. * libc/machine/aarch64/Makefile.am (lib_a_SOURCES): Add new files. * libc/machine/aarch64/Makefile.in: Regenerate. 2014-11-06 Joel Sherrill * configure.in: Add autoconf test to determine size of uintptr_t. * newlib.hin: Add new autoconf feature variables. * libc/include/inttypes.h: Use new feature variables. * configure: Regenerate. 2014-11-06 Terry Guo * libc/stdio/nano-vfprintf_i.c (_printf_i): Use Newlib approach to handle string that might be not nul-terminated. * testsuite/newlib.stdio/nulprintf.c: New test. 2014-10-29 Jon Turney * libc/include/string.h: Correct guard for strcasecmp(). 2014-10-29 Terry Guo * libc/stdio/vfprintf.c (_VFPRINTF_R): Remove unnecessary comparison. 2014-10-27 Sebastian Huber * libc/include/sys/unistd.h (sethostname): Declare if requested. 2014-10-20 Freddie Chopin * libc/time/gmtime_r.c (gmtime_r): Remove dead code. 2014-10-16 Sebastian Huber * libc/unix/getcwd.c (getcwd): Close directory also in case of an error. 2014-10-10 Thomas Uhle * libc/include/_ansi.h: _LONG_LONG_TYPE definition removed. * libc/include/math.h: _LONG_LONG_TYPE replaced by "long long". Guards for C99 and C++11 functions fixed. * libc/include/stdlib.h: Guards for C99 and C++11 functions fixed. 2014-10-09 Sebastian Huber * libc/include/stdint.h: Include . (__STDINT_EXP): Delete. (__have_long32): Likewise. (__have_long64): Likewise. (__have_longlong64): Likewise. * libc/include/sys/_intsup.h: New file. (__STDINT_EXP): Move from libc/include/stdint.h. (__have_long32): Likewise. (__have_long64): Likewise. (__have_longlong64): Likewise. * libc/include/inttypes.h: Include . (__INTTYPES_EXP): Delete and use __STDINT_EXP() instead. 2014-10-09 Freddie Chopin * libc/string/memccpy.c (memccpy): Fix warning about signed-unsigned comparison * libc/string/memchr.c (memchr): Ditto. * libc/string/memrchr.c (memrchr): Ditto. * libc/string/memset.c: (memset): Ditto. * libc/string/rawmemchr.c (rawmemchr): Ditto. * libc/string/local.h (__locale_cjk_lang): Fix "function declaration isn't a prototype" warning. * libc/string/strcasestr.c (strcasestr): Ditto. * libc/string/u_strerr.c (_user_strerror): Fix "unused parameter" warnings. * libc/string/rawmemchr.c (rawmemchr): Fix comment type "// ..." -> "/* ... */". 2014-10-08 Steve Ellcey * newlib/libc/machine/mips/strcmp.c: Remove. * newlib/libc/machine/mips/strcmp.S: New. * newlib/libc/machine/mips/Makefile.am (lib_a_SOURCES): Replace strcmp.c with strcmp.S * newlib/libc/machine/mips/Makefile.in: Regenerate. 2014-10-08 Corinna Vinschen * libc/include/string.h (ffsl): Declare as GNU function. (ffsll): Ditto. 2014-09-17 Jeff Johnston * libc/include/sys/features.h: Add __NEWLIB__ and __NEWLIB_MINOR__ macros. 2014-09-17 Joel Sherrill Thomas Uhle * libc/include/string.h: Correct guard for strnlen(). 2014-09-15 Jeff Johnston * libc/time/month_lengths.c: Fix to define __month_lengths. 2014-09-12 Jeff Johnston * libc/time/tzcalc_limits.c: Fix __month_lengths reference. 2014-09-12 Jeff Johnston * libc/time/month_lengths.c: Actually add file this time. * libc/time/tzcalc_limits.c: Ditto. 2014-09-11 Freddie Chopin * libc/time/month_lengths.c: New file with __month_lengths array (previously mon_lengths array in mktm_r.c) * libc/time/tzcalc_limits.c: New file with __tzcalc_limits() from mktm_r.c * libc/time/lcltime_r.c (localtime_r): Simplify by changing call to _mktm_r() with call to gmtime_r() and code moved from _mktm_r() which was used to do time zone adjustments * libc/time/gmtime_r.c (gmtime_r): Simplify by moving all relevant code from _mktm_r(), breaking all dependencies on time zone related functions * libc/time/mktm_r.c: Delete file * libc/time/local.h: Update accordingly - remove declaration of _mktm_r(), add declaration of __month_lengths[] * libc/time/Makefile.am: Modify accordingly. * libc/time/Makefile.in: Regenerate. 2014-09-08 Freddie Chopin * libc/machine/arm/Makefile.am: Fix typo. * libc/machine/arm/Makefile.in: Regenerated. 2014-09-05 Hale Wang * libc/machine/arm/memchr.S: Clean up the wrapper. * libc/machine/arm/memcpy.S: Likewise. * libc/machine/arm/memchr-stub.c: Delete this redundant file. * libc/machine/arm/memcpy-stub.c: Likewise. * libc/machine/arm/strcmp.S: Add speed-preferred wrapper. * libc/machine/arm/strlen.S: Likewise. * libc/machine/arm/Makefile.am: Add dependencies. * libc/machine/arm/Makefile.in: Regenerated. * libc/machine/arm/configure.in: Add dependencies. * libc/machine/arm/configure: Regenerated. 2014-09-05 Bin Cheng * libc/stdio/findfp.c (_cleanup_r): Call _fflush_r when configuration option "--enable-lite-exit" is in effect. Refactor the code. 2014-09-05 Bin Cheng * libc/stdio/fwalk.c (_fwalk_reent): Remove redundant test. 2014-09-04 Freddie Chopin * libc/time/mktm_r.c (_mktm_r): Optimize speed. 2014-09-04 Freddie Chopin * libc/time/clock.c (clock): Fix warnings about signed-unsigned comparisons. * libc/time/strftime.c (strftime): Likewise. * libc/time/strptime.c (match_string): Fix warning about discarding 'restrict' qualifier from pointer target type. 2014-09-04 Hale Wang * libc/machine/arm/aeabi_memcpy.c: New file. * libc/machine/arm/aeabi_memcpy-armv7a.S: New file. * libc/machine/arm/Makefile.am: Add dependencies. * libc/machine/arm/Makefile.in: Regenerated. 2014-08-27 DJ Delorie * libc/include/math.h (frexpl): Remove parameter name. 2014-08-19 Richard Earnshaw * libc/machine/aarch64/memchr.S: Add check for zero-sized buffer. 2014-08-18 Corinna Vinschen * libc/include/sys/signal.h: Declare sigaltstack for RTEMS only. 2014-08-18 Jeff Johnston * libc/include/sys/config.h[__m68k__]: Set _READ_WRITE_RETURN_TYPE to _ssize_t to match underlying code in libgloss. 2014-08-18 Joel Sherrill * libc/include/string.h: Improve language and OS standard guards. 2014-08-18 Joel Sherrill * libc/include/sys/signal.h: Add sigaltstack() support. 2014-08-14 Bin Cheng * libc/stdio/findfp.c (std): Don't inline when optimizing for code size. 2014-08-04 Jon TURNEY * libc/include/math.h: Also define M_PI etc. if _XOPEN_SOURCE is defined appropriately. 2014-08-01 Eric Blake * libc/machine/spu/spu_timer_internal.h: Decorate attribute names with __, for namespace safety. * libc/machine/xscale/machine/profile.h: Likewise. * libc/include/stdlib.h: Likewise. * libc/include/_ansi.h: Likewise. * libc/include/sys/unistd.h: Likewise. * libc/sys/linux/linuxthreads/libc-symbols.h: Likewise. * libc/sys/linux/linuxthreads/internals.h: Likewise. * libc/sys/linux/machine/i386/weakalias.h: Likewise. * libc/sys/linux/machine/i386/dl-procinfo.h: Likewise. * libc/sys/linux/machine/i386/dl-machine.h: Likewise. * libc/sys/linux/libc-symbols.h: Likewise. * libc/sys/linux/iconv/gconv_charset.h: Likewise. * libc/sys/linux/include/resolv.h: Likewise. * libc/sys/linux/sys/unistd.h: Likewise. * libc/sys/linux/dl/atomicity.h: Likewise. * libc/sys/linux/dl/dynamic-link.h: Likewise. * libc/sys/linux/dl/ldsodefs.h: Likewise. 2014-07-30 Corinna Vinschen * libc/string/strerror.c: Fix documentation so makedoc doesn't stumble over a sole EAGAIN. 2014-07-27 Anthony Green * configure.host: Add moxie-*-moxiebox target. 2014-07-22 Joel Sherrill * libc/include/sys/time.h: Add prototype for adjtime() and wrap it and settimeofday() prototype with __BSD_VISIBLE. 2014-07-17 Hesham ALMatary * configure.host: Remove or16 and or32 targets and add or1k. * libc/include/machine/ieeefp.h: Replace or32 with or1k. * libc/machine/configure.in: Add or1k subdirectory. * libc/machine/configure: Regenerate. * libc/machine/or1k/configure.in: New file. * libc/machine/or1k/configure: New file. * libc/machine/or1k/Makefile.am: New file. * libc/machine/or1k/Makefile.in: New file. * libc/machine/or1k/setjmp.S: New file. 2014-07-14 Nick Withers * libc/include/sys/errno.h: Fix comments. * libc/string/strerror.c: Fix documentation. (_strerror_r): Handle ENETRESET, EILSEQ, ENODATA, ECONNRESET, EADDRNOTAVAIL, EOVERFLOW. Fix strings for EMFILE and EDOM. 2014-07-11 Kvin Petit * libc/machine/aarch64/memchr.S: New file. * libc/machine/aarch64/memchr-stub.c: New file. * libc/machine/aarch64/Makefile.am: Add the new files. * libc/machine/aarch64/Makefile.in: Regenerated. 2014-07-07 Pavel Pisa Richard Earnshaw * libc/machine/arm/memchr.S (.arch): Require revision ARMv6t2. 2014-07-07 Corinna Vinschen * configure.in (--enable-newlib-nano-formatted-io): Set to "no" by default. * configure: Regenerated. 2014-07-04 Bin Cheng * README (--enable-newlib-nano-formatted-io): Describe. * acconfig.h (_NANO_FORMATTED_IO): Undef. * newlib.hin (_NANO_FORMATTED_IO): Undef. * configure.in (--enable-newlib-nano-formatted-io): New option. * configure: Regenerated. * libc/configure.in (--enable-newlib-nano-formatted-io): New option. * libc/configure: Regenerated. * libc/stdio/Makefile.am (NEWLIB_NANO_FORMATTED_IO): Support new configuration option. * libc/stdio/Makefile.in: Regenerated. * libc/stdio/asnprintf.c (_asniprintf_r, asniprintf): Use _NANO_FORMATTED_IO to declare alias prototypes. * libc/stdio/asprintf.c (_asiprintf_r, asiprintf): Ditto. * libc/stdio/dprintf.c (_diprintf_r, diprintf): Ditto. * libc/stdio/fprintf.c (_fiprintf_r, fiprintf): Ditto. * libc/stdio/fscanf.c (fiscanf, _fiscanf_r): Ditto. * libc/stdio/printf.c (_iprintf_r, iprintf): Ditto. * libc/stdio/scanf.c (iscanf, _iscanf_r): Ditto. * libc/stdio/snprintf.c (_sniprintf_r, sniprintf): Ditto. * libc/stdio/sprintf.c (_siprintf_r, siprintf): Ditto. * libc/stdio/sscanf.c (siscanf, _siscanf_r): Ditto. * libc/stdio/vasnprintf.c (_vasniprintf_r, vasniprintf): Ditto. * libc/stdio/vasprintf.c (vasiprintf, _vasiprintf_r): Ditto. * libc/stdio/vdprintf.c (_vdiprintf_r, vdiprintf): Ditto. * libc/stdio/vprintf.c (viprintf, _viprintf_r): Ditto. * libc/stdio/vscanf.c (viscanf, _viscanf_r): Ditto. * libc/stdio/vsnprintf.c (vsniprintf, _vsniprintf_r): Ditto. * libc/stdio/vsprintf.c (vsiprintf, _vsiprintf_r): Ditto. * libc/stdio/vsscanf.c (vsiscanf, _vsiscanf_r): Ditto. * libc/stdio/nano-vfprintf.c: New file. * libc/stdio/nano-vfprintf_float.c: New file. * libc/stdio/nano-vfprintf_i.c: New file. * libc/stdio/nano-vfprintf_local.h: New file. * libc/stdio/nano-vfscanf.c: New file. * libc/stdio/nano-vfscanf_float.c: New file. * libc/stdio/nano-vfscanf_i.c: New file. * libc/stdio/nano-vfscanf_local.h: New file. 2014-06-23 Corinna Vinschen * libc/argz/envz_merge.c (envz_merge): Fix memory leak (Cygwin Coverity Scan CID 60023). * libc/ctype/iswalpha.c (iswalpha): Add bounds check to avoid out-of-bounds read from utf8 tables (CID 59949). * libc/locale/ldpart.c (__part_load_locale): Add 1 byte to size of lbuf. Write NUL into the last byte to accommodate split_lines (CID 60047). 2014-06-11 Richard Earnshaw * libc/machine/aarch64/strchrnul.S: New file. * libc/machine/aarch64/strchrnul-stub.c: New file. * libc/machine/aarch64/Makefile.am: Add them to build list. * libc/machine/aarch64/Makefile.in: Regenerated. 2014-06-10 Richard Earnshaw * libc/machine/aarch64/strchr.S: New file. * libc/machine/aarch64/strchr-stub.c: New file. * libc/machine/aarch64/Makefile.am: Add them to build list. * libc/machine/aarch64/Makefile.in: Regenerated. 2014-06-09 DJ Delorie * configure.host (default_newlib_nano_malloc): New. (msp430): Set it. * configure.in (newlib_nano_malloc): Leave unset if not set by the user. * configure: Regenerate. * libc/configure.in (NEWLIB_NANO_MALLOC): Set after running configure.host. (newlib_nano_malloc): Leave unset if not set by the user. * libc/configure: Regenerate. 2014-05-15 Daniel Cederman * libc/machine/sparc/setjmp.S (longjmp): Use register g1 instead of g6. 2014-05-14 Kaushik Phatak * libc/include/machine/ieeefp.h: Define _DOUBLE_IS_32BITS when double options is not __RL78_64BIT_DOUBLES__. 2014-05-12 Corinna Vinschen * libc/include/stdint.h (WCHAR_MIN): Copy definition from wchar.h. (WCHAR_MAX): Ditto. * libc/include/wchar.h (WCHAR_MIN): Add comment. (WCHAR_MAX): Ditto. 2014-05-09 Corinna Vinschen * libc/include/stdio.h (tempnam): Declare as __BSD_VISIBLE or __XSI_VISIBLE or if __POSIX_VISIBLE >= 200112. 2014-05-09 Corinna Vinschen * libc/include/stdio.h (fcloseall): Declare as __GNU_VISIBLE only. (renameat): Drop explicit __CYGWIN__ dependency. 2014-05-05 Corinna Vinschen * libc/include/stdio.h: Declare various C99 printf/scanf functions for C++11, too. 2014-04-22 Richard Earnshaw * libc/machine/arm/strcmp-arm-tiny.S: New file. * libc/machine/arm/strcmp-armv4.S: New file. * libc/machine/arm/strcmp-armv4t.S: New file. * libc/machine/arm/strcmp-armv6.S: New file. * libc/machine/arm/strcmp-armv7.S: New file. * libc/machine/arm/strcmp-armv7m.S: New file. * libc/machine/arm/strcmp.S: Replace with wrapper for various implementations. * libc/machine/arm/Makefile.am (strcmp.o, strcmp.obj): Add dependencies. * libc/machine/arm/Makefile.in: Regenerated. 2014-04-14 Sebastian Huber * libc/sys/rtems/sys/cpuset.h (CPU_SET_S): Add const qualifier. (CPU_SET): Likewise. 2014-04-09 DJ Delorie * libc/machine/rl78/setjmp.S: Add RL78/G10 support. 2014-04-04 Ashish Kapania * configure.host (sys_dir, newlib_cflags): Set sys_dir to tirtos and use -D__DYNAMIC_REENT__ and -DMALLOC_PROVIDED compiler options for TIRTOS target. * libc/stdio/local.h (_STDIO_CLOSE_PER_REENT_STD_STREAMS): Change #ifdef to not define this macro when __tirtos__ is defined. * libc/sys/tirtos : Add support for TIRTOS. * libc/sys/tirtos/Makefile.am, libc/sys/tirtos/lock.c: New files. * libc/sys/tirtos/configure.in, libc/sys/tirtos/include/sys/lock.h: Ditto. 2014-03-27 Richard Earnshaw * libc/machine/arm/acle-compat.h: New file. * libc/machine/arm/arm_asm.h: Use it. 2014-03-21 Maciej W. Rozycki * libc/stdlib/gd_qnan.h (f_QNAN, d_QNAN0, d_QNAN1): Add MIPS versions. (ld_QNAN0, ld_QNAN1, ld_QNAN2, ld_QNAN3): Don't define for MIPS. (ldus_QNAN0, ldus_QNAN1, ldus_QNAN2, ldus_QNAN3, ldus_QNAN4): Likewise. * libc/stdlib/ldtoa.c (nan113, nan64, nan53, nan24): Add MIPS versions. (enan): Handle legacy MIPS payloads. * libm/common/s_nan.c (nan): Use __builtin_nan if supported by the compiler. * libm/common/sf_nan.c (nanf): Likewise. 2014-03-21 Sabrina Ni * libc/machine/nds32/configure: Regenerated. * libc/machine/nds32/configure.in: Add AC_NOEXECUTABLES. 2014-03-21 Sabrina Ni * libc/machine/nds32/Makefile.am: Use C code implemented memcpy, memset for 'ISA V3M'. * libc/machine/nds32/Makefile.in: Generated. * libc/machine/nds32/configure: Generated. * libc/machine/nds32/configure.in: Detect IS_NDS32_ISA_V3M. 2014-03-21 Sabrina Ni * libc/machine/nds32/setjmp.S: Keep jmp_buff sync with GDB. 2014-03-21 Sabrina Ni * libc/machine/nds32/setjmp.S: Optimize. 2014-03-07 Corinna Vinschen Jeff Johnston * libc/include/stdlib.h (strtold): Define if _HAVE_LONG_DOUBLE is defined. * libc/stdlib/strtold.c (strtold): Ditto. Call strtod on systems with long double == double, _strtold otherwise. 2014-03-05 Corinna Vinschen * libc/include/time.h (__TM_GMTOFF): Remove Cygwin-specific definition. (__TM_ZONE): Ditto. 2014-03-05 Corinna Vinschen * libc/include/time.h (__TM_GMTOFF): Define on Cygwin. (__TM_ZONE): Ditto. (struct tm): Add __TM_GMTOFF and __TM_ZONE members if they are defined. 2014-03-04 Ed Nelson * libc/include/machine/_default_types.h: Define unsigned type using signed type macros in case unsigned type macros are not available. 2014-02-20 Agustin Henze * libm/complex/complex.tex: Fix wrong syntax in documentation. * libm/math/math.tex: Ditto. 2014-02-20 Corinna Vinschen * libc/stdio/open_memstream.c (internal_open_memstream_r): Initialize c->pos to 0. 2014-02-11 Joey Ye * libc/sys/arm/syscalls.c (_sbrk): Define as weak symbols. (_read, _write): Ditto. 2014-02-09 Corinna Vinschen * libc/include/pwd.h: Include . * libc/include/grp.h: Ditto. 2014-02-04 Matthias Braun * libm/mathfp/sf_numtest.c: Fix NaN/Inf detection logic. 2014-01-20 Corinna Vinschen * libc/include/setjmp.h (longjmp): Fix copy/paste error. 2014-01-19 Corinna Vinschen * libc/include/setjmp.h (longjmp): Mark "noreturn" when building with GCC. 2014-01-17 Corinna Vinschen * libc/include/pwd.h: Use __foo_VISIBLE macros from sys/cdefs.h. (setpassent): Declare. 2014-01-17 Sebastian Huber * libc/include/sys/_default_fcntl.h (LOCK_SH): Define. (LOCK_EX): Likewise. (LOCK_NB): Likewise. (LOCK_UN): Likewise. (flock): Declare. 2014-01-17 Corinna Vinschen Introduce _STDIO_BSD_SEMANTICS flag to switch fclose/exit file flushing semantics from POSIX to BSD. * libc/stdio/fclose.c (_fclose_r): Conditionalize file flushing on _STDIO_BSD_SEMANTICS. Call __sflush_r rather than _fflush_r. Add comment. * libc/stdio/fflush.c (__sflushw_r): New function, only available if _STDIO_BSD_SEMANTICS is defined. * libc/stdio/findfp.c (_cleanup_r): Call _fwalk_reent rather than _fwalk. Conditionalize cleanup function call on _STDIO_BSD_SEMANTICS. Add comments. Add FIXME. * libc/stdio/local.h (__sflushw_r): Declare if _STDIO_BSD_SEMANTICS is defined. 2014-01-06 Sebastian Huber * libc/include/sys/_default_fcntl.h (AT_FDCWD): Define according to POSIX. (AT_EACCESS): Likewise. (AT_SYMLINK_NOFOLLOW): Likewise. (AT_SYMLINK_FOLLOW): Likewise. (AT_REMOVEDIR): Likewise. (openat): Declare according to POSIX. * libc/include/stdio.h (renameat): Likewise. * libc/include/sys/stat.h (fchmodat): Likewise. (fstatat): Likewise. (mkdirat): Likewise. (mkfifoat): Likewise. (mknodat): Likewise. (utimensat): Likewise. (futimens): Likewise. * libc/include/sys/unistd.h (faccessat): Likewise. (fchownat): Likewise. (linkat): Likewise. (readlinkat): Likewise. (symlinkat): Likewise. (unlinkat): Likewise. 2014-01-06 Mike Frysinger * libc/search/hash.c (hash_delete): Change __uint32_t to u_int. (hash_get): Likewise. (hash_put): Likewise. (hash_seq): Likewise. (hash_sync): Likewise. 2014-01-06 Mike Frysinger * libc/ctype/jp2uc.c: Include string.h. 2013-12-23 Jeff Johnston * NEWS: Update with 2.1.0 info. * README: Ditto. * acinclude.m4: Change version number to 2.1.0. * aclocal.m4: Regenerated. * configure: Ditto. * Makefile.in: Regenerated. * doc/aclocal.m4: Ditto. * doc/configure: Ditto. * libc/*/aclocal.m4: Ditto. * libc/*/configure: Ditto. * libc/libc.texinfo: Ditto. * libm/*/aclocal.m4: Ditto. * libm/*/configure: Ditto. * libm/libm.texinfo: Ditto. * libc/sys/linux/shared.ld: Add VERS_2.1 2013-12-22 JF Bastien * libc/include/limits.h: Define LLONG_MIN, LLONG_MAX and ULLONG_MAX for C++11 too. * libc/include/stdlib.h: Define struct lldiv_t, _Exit, atoll, llabs and lldiv for C99 and C++11. Move wcstold to wchar.h. * libc/include/wchar.h: Define WCHAR_MIN and WCHAR_MAX according to __WCHAR_UNSIGNED__ if it is provided, and correct the limit when unsigned (to 32 all-1 bits, not 31). Define FILE as in stdio.h. Move wcstold from stdlib.h here. 2013-12-20 Nick Clifton * configure.host (newlib_cflags): Use -Os, -ffunction-sections and -fdata-sections for RL78. 2013-12-19 Corinna Vinschen * libc/stdio/vfwscanf.c (__SVFWSCANF_R): Fix fetching decimal_point in !_MB_CAPABLE as well as in !__HAVE_LOCALE_INFO_EXTENDED__ case. 2013-12-18 Corinna Vinschen * libc/stdio/vfscanf.c (BUF): Change definition to take multibyte decimal point into account. (__SVFSCANF_R): Handle radix char language-dependent per POSIX. * libc/stdio/vfwscanf.c (__SVFWSCANF_R): Ditto. 2013-12-10 Jeff Johnston * acconfig.h: Add _HAVE_CC_INHIBIT_LOOP_TO_LIBCALL. * newlib.hin: Ditto. * configure: Regenerate. * configure.in: Add setting of _HAVE_CC_INHIBIT_LOOP_TO_LIBCALL. * libc/string/local.h: Add check for _HAVE_CC_INHIBIT_LOOP_TO_LIBCALL and set __inhibit_loop_to_libcall macro appropriately. * libc/string/memmove.c: Use __inhibit_loop_to_libcall macro in function declaration. * libc/string/memset.c: Ditto. 2013-12-10 Chirayu Desai * libc/sys/rtems/include/limits.h: Update page size to match libc/sys/rtems/machine/param.h. 2013-12-03 Sebastian Huber * libc/sys/rtems/sys/cpuset.h: Use __inline instead of inline. 2013-12-03 Sebastian Huber * libc/include/machine/_default_types.h: Move extern "C" after header includes. Include for __GNUC_PREREQ__(). (__u?int.*_t): Define via GCC provided __U?INT.*_TYPE__ if available. (__intptr_t): Define. (__uintptr_t): Likewise. * libc/include/stdint.h: Include instead of <_ansi.h>. (u?int.*_t): Define via __u?int.*_t provided by . (u?int_fast.*_t): Define via GCC provided __U?INT_FAST.*_TYPE__ if available. (U?INT.*(MIN|MAX)): Define via GCC provided __U?INT.*(MIN|MAX)__ if available. (U?INT.*_C): Define via GCC provided __U?INT.*_C if available. * libc/include/sys/cdefs.h: Use instead of . * libc/sys/rtems/sys/cpuset.h: Likewise. * libc/sys/rtems/machine/_types.h: Include for FreeBSD compatibility. 2013-11-29 Sebastian Huber * libc/include/pthread.h (pthread_cleanup_push): Delete prototype and add macro of the same name. (pthread_cleanup_pop): Likewise. (_pthread_cleanup_context): Define. (_pthread_cleanup_push): Likewise. (_pthread_cleanup_pop): Likewise. (pthread_cleanup_push_defer_np): Define if _GNU_SOURCE is defined. (pthread_cleanup_pop_restore_np): Likewise. (_pthread_cleanup_push_defer): Likewise. (_pthread_cleanup_pop_restore): Likewise. 2013-11-29 Jennifer Averett * libc/include/pthread.h (pthread_attr_setaffinity_np): Add pthread SMP affinity attributes to methods to RTEMS for compatibility with GNU/Linux. (pthread_attr_getaffinity_np): Likewise. (pthread_setaffinity_np): Likewise. (pthread_getaffinity_np): Likewise. (pthread_getattr_np): Add for GNU/Linux compatibility. * libc/include/sys/types.h: Add cpuset to pthread_attr_t for RTEMS. * libc/include/sys/cdefs.h (_GNU_SOURCE): Defining _GNU_SOURCE turns on all _XXX_VISBLE feature flags. 2013-11-27 Sebastian Huber * libc/sys/rtems/cpusetalloc.c: New file. * libc/sys/rtems/cpusetfree.c: Likewise. * libc/sys/rtems/Makefile.am (lib_a_SOURCES): Add new files. * libc/sys/rtems/Makefile.in: Regenerate. * libc/sys/rtems/sys/cpuset.h: Delete #if 0 block. Include for size_t. (_NCPUBITS): Avoid NBBY and assume 8 bits per char. (__cpuset_mask): Use int instead of size_t parameter for Linux compatibility. (__cpuset_index): Likewise. (__cpuset_alloc): Declare. (__cpuset_free): Likewise. (CPU_ALLOC_SIZE): Likewise. (CPU_ALLOC): Define. (CPU_FREE): Likewise. (CPU_ZERO_S): Likewise. (CPU_FILL_S): Likewise. (CPU_SET_S): Likewise. (CPU_CLR_S): Likewise. (CPU_ISSET_S): Likewise. (CPU_COUNT_S): Likewise. (CPU_AND_S): Likewise. (CPU_OR_S): Likewise. (CPU_XOR_S): Likewise. (CPU_NAND_S): Likewise. (CPU_EQUAL_S): Likewise. (CPU_ZERO): Use CPU_ZERO_S(). (CPU_FILL): Use CPU_FILL_S(). (CPU_SET): Use CPU_SET_S(). (CPU_CLR): Use CPU_CLR_S(). (CPU_ISSET): Use CPU_ISSET_S(). (CPU_COUNT): Use CPU_COUNT_S(). (CPU_AND): Use CPU_AND_S(). (CPU_OR): Use CPU_OR_S(). (CPU_XOR): Use CPU_XOR_S(). (CPU_NAND): Use CPU_NAND_S(). (CPU_EQUAL): Use CPU_EQUAL_S(). (CPU_CMP): Delete superfluous const qualifier. (CPU_EMPTY): Likewise. 2013-11-27 Matheus Almeida * libc/machine/mips/setjmp.S: Fix definition of macro FPR_LAYOUT for ABI == N32. 2013-11-26 Matheus Almeida * libc/include/machine/setjmp.h: Add support for __mips_fpr being 64 and treat it the same as if __mips64 is set. * libc/machine/mips/setjmp.S: Ditto, plus add checks for _MIPS_SIM being _ABIN32 and _ABI64. 2013-11-26 Joel Sherrill * libc/machine/powerpc/vfscanf.c, libc/stdio/fgetpos.c, libc/stdio/fgets.c, libc/stdio/fputs.c, libc/stdio/fread.c, libc/stdio/freopen.c, libc/stdio/fwrite.c, libc/stdio/sscanf.c, libc/stdlib/mbstowcs.c, libc/stdlib/mbtowc.c, libc/stdlib/strtod.c, libc/stdlib/strtol.c, libc/stdlib/strtoll.c, libc/stdlib/strtoul.c, libc/stdlib/strtoull.c, libc/stdlib/wcstombs.c: Fix documentation prototypes which were over eighty columns. 2013-11-26 Julio Gutierrez *libc/include/wchar.h: Add restrict keyword. *libc/stdio/fgetws.c (fgetws): ditto. *libc/stdio/fputws.c (fputws): ditto. *libc/stdio/fwprintf.c (fwprintf): ditto. *libc/stdio/fwscanf.c (fwscanf): ditto. *libc/stdio/swprintf.c (swprintf): ditto. *libc/stdio/swscanf.c (swscanf): ditto. *libc/stdio/vfwprintf.c (vfwprintf): ditto. *libc/stdio/vfwscanf.c (vfwscanf): ditto. *libc/stdio/vswprintf.c (vswprintf): ditto. *libc/stdio/vswscanf.c (vswscanf): ditto. *libc/stdio/vwprintf.c (vwprintf): ditto. *libc/stdio/vwscanf.c (vwscanf): ditto. *libc/stdio/wprintf.c (wprintf): ditto. *libc/stdio/wscanf.c (wscanf): ditto. *libc/stdlib/mbrlen.c (mbrlen): ditto. *libc/stdlib/mbrtowc.c (mbrtowc): ditto. *libc/stdlib/mbsnrtowcs.c (mbsnrtowcs): ditto. *libc/stdlib/mbsrtowcs.c (mbsrtowcs): ditto. *libc/stdlib/wcrtomb.c (wcrtomb): ditto. *libc/stdlib/wcsnrtombs.c (wcsnrtombs): ditto. *libc/stdlib/wcsrtombs.c (wcsrtombs): ditto. *libc/stdlib/wcstod.c (wcstod): ditto. *libc/stdlib/wcstol.c (wcstol): ditto. *libc/stdlib/wcstold.c (wcstold): ditto. *libc/stdlib/wcstoll.c (wcstoll): ditto. *libc/stdlib/wcstoul.c (wcstoul): ditto. *libc/stdlib/wcstoull.c (cstoull): ditto. *libc/string/wcpcpy.c (wcpcpy): ditto. *libc/string/wcpncpy.c (wcpncpy): ditto. *libc/string/wcscat.c (wcscat): ditto. *libc/string/wcscpy.c (wcscpy): ditto. *libc/string/wcsncat.c (wcsncat): ditto. *libc/string/wcsncpy.c (wcsncpy): ditto. *libc/string/wcsstr.c (wcsstr): ditto. *libc/string/wcstok.c (wcstok): ditto. *libc/string/wcsxfrm.c (wcsxfrm): ditto. *libc/string/wmemcpy.c (wmemcpy): ditto. 2013-11-26 Corinna Vinschen * libc/posix/posix_spawn.c: Drop using namespace.h. 2013-11-26 Corinna Vinschen * libc/posix/posix_spawn.c: Eliminate OS function calls not present in newlib or Cygwin. (process_spawnattr): Use sigprocmask rather than _sigprocmask. Use sigaction rather than _sigaction. (process_file_actions_entry): Use dup2 rather than _dup2. (do_posix_spawn): Use execvpe rather than _execvpe. Use waitpid rather than _waitpid. 2013-11-25 Joel Sherrill * libc/iconv/lib/iconv.c, libc/time/strftime.c: Change "restrict<" to "restrict <" to fix formatting. 2013-11-25 Corinna Vinschen * libc/include/spawn.h (posix_spawn_file_actions_destroy): Fix typo in function name. * libc/posix/posix_spawn.c (posix_spawn_file_actions_destroy): Ditto. 2013-11-25 Sahil Patnayakuni * libc/include/time.h (time): Add restrict keyword. * libc/include/wchar.h (wcsftime): Add restrict keyword. * libc/time/asctime_r.c (asctime_r): Same. * libc/time/gmtime_r.c (gmtime_r): Same. * libc/time/lcltime_r.c (lcltime_r): Same. * libc/time/strftime.c (strftime): Same. * libc/time/strptime.c (strptime): Same. * libc/sys/linux/linuxthreads/timer_create.c (timer_create): Same. * libc/sys/linux/linuxthreads/timer_settime.c (timer_settime): Same. 2013-11-23 Bryan Dunsmore * libc/include/wordexp.h (wordexp): Add restrict keyword. * libc/posix/wordexp.c (wordexp): Ditto. 2013-11-22 Bryan Dunsmore * libc/include/sys/time.h (gettimeofday): Add restrict keyword. (setitimer): Likewise. * libc/sys/rdos/gettod.c (gettimeofday): Likewise. * libc/sys/rtems/crt0.c (gettimeofday): Likewise. 2013-11-22 Chirayu Desai * libc/include/sys/unistd.h (readlink): Add restrict keyword. (readlinkat): Ditto. (swab): Ditto. * libc/sys/rdos/readlink.c (readlink): Ditto. * libc/string/swab.c (swab): Ditto. 2013-11-21 Daniel Ramirez * libc/sys/linux/statvfs.c (statvfs): Added restrict keyword. 2013-11-21 Joel Sherrill * libc/sys/rdos/chown.c, libc/sys/rdos/close.c, libc/sys/rdos/execve.c, libc/sys/rdos/fork.c, libc/sys/rdos/fstat.c, libc/sys/rdos/getpid.c, libc/sys/rdos/gettod.c, libc/sys/rdos/isatty.c, libc/sys/rdos/kill.c, libc/sys/rdos/link.c, libc/sys/rdos/lseek.c, libc/sys/rdos/open.c, libc/sys/rdos/rdos.h, libc/sys/rdos/read.c, libc/sys/rdos/readlink.c, libc/sys/rdos/sbrk.c, libc/sys/rdos/stat.c, libc/sys/rdos/symlink.c, libc/sys/rdos/times.c, libc/sys/rdos/unlink.c, libc/sys/rdos/wait.c, libc/sys/rdos/write.c: Convert from DOS to UNIX CRLF. 2013-11-21 Julio Gutierrez * libc/include/glob.h (glob): Add restrict keyword. * libc/posix/glob.c (glob): Ditto. 2013-11-21 Joel Sherrill * libc/posix/readdir_r.c: Add restrict keyword. * libc/machine/spu/sys/dirent.h, libc/sys/decstation/sys/dirent.h, libc/sys/linux/sys/dirent.h, libc/sys/rtems/sys/dirent.h, libc/sys/sparc64/sys/dirent.h, libc/sys/sun4/sys/dirent.h, libc/sys/sysvi386/sys/dirent.h: Add readdir_r() prototype. 2013-11-21 Joel Sherrill * libc/sys/rdos/stat.c: Remove stray +. 2013-11-21 Daniel Ramirez * libc/include/sys/stat.h, libc/sys/linux/sys/stat.h, libc/sys/m88kbug/syscalls.c, libc/sys/rdos/stat.c, libc/sys/sparc64/sys/stat.h: Add restrict keyword. 2013-11-20 Daniel Ramirez * libc/include/search.h, libc/search/tdelete.c: Add restrict keyword. 2013-11-20 Chirayu Desai * libc/include/regex.h, libc/posix/regcomp.c, libc/posix/regerror.c, libc/posix/regex.3 libc/posix/regexec.c: Add restrict keyword. 2013-11-20 Daniel Ramirez * libc/iconv/lib/iconv.c, libc/include/iconv.h, libc/sys/linux/iconv/iconv.c: Add restrict keyword. 2013-11-20 Corinna Vinschen * libc/include/stdlib.h: Declare realpath only if !__STRICT_ANSI__. 2013-11-19 Jennifer Averett * libc/sys/rtems/sys/cpuset.h: New file. 2013-11-19 Joel Sherrill * libc/include/stdlib.h: Add prototype of realpath(). * libc/sys/linux/realpath.c: Add restrict keyword. 2013-11-19 Joel Sherrill * libm/common/modfl.c: Add cast to remove compiler warning. 2013-11-19 Terraneo Federico * libc/posix/closedir.c: Fix use after free. Remove useless test dd_fd != -1 * libc/posix/readdir.c: Remove useless test dd_fd == -1 * libc/posix/readdir_r.c: Ditto. 2013-11-18 Sahil Patnayakuni * libc/include/stdio.h, libc/machine/powerpc/vfscanf.c, libc/machine/spu/fgetpos.c, libc/machine/spu/fgets.c, libc/machine/spu/fopen.c, libc/machine/spu/fputs.c, libc/machine/spu/fread.c, libc/machine/spu/freopen.c, libc/machine/spu/fwrite.c, libc/machine/spu/setbuf.c, libc/machine/spu/vfprintf.c, libc/machine/spu/vfscanf.c, libc/machine/spu/vsnprintf.c, libc/machine/spu/vsprintf.c, libc/machine/spu/vsscanf.c, libc/stdio/asnprintf.c, libc/stdio/asprintf.c, libc/stdio/dprintf.c, libc/stdio/fgetpos.c, libc/stdio/fgets.c, libc/stdio/fmemopen.c, libc/stdio/fopen.c, libc/stdio/fprintf.c, libc/stdio/fputs.c, libc/stdio/fread.c, libc/stdio/freopen.c, libc/stdio/fscanf.c, libc/stdio/fwrite.c, libc/stdio/printf.c, libc/stdio/scanf.c, libc/stdio/setbuf.c, libc/stdio/snprintf.c, libc/stdio/sprintf.c, libc/stdio/sscanf.c, libc/stdio/vdprintf.c, libc/stdio/vprintf.c, libc/stdio/vscanf.c, libc/stdio/vsnprintf.c, libc/stdio/vsprintf.c, libc/stdio/vsscanf.c: Add restrict keyword. 2013-11-18 Sahil Patnayakuni * libc/include/stdlib.h, libc/stdlib/mbstowcs.c, libc/stdlib/mbstowcs_r.c, libc/stdlib/mbtowc.c, libc/stdlib/mbtowc_r.c, libc/stdlib/strtod.c, libc/stdlib/strtol.c, libc/stdlib/strtold.c, libc/stdlib/strtoll.c, libc/stdlib/strtoll_r.c, libc/stdlib/strtoul.c, libc/stdlib/strtoull.c, libc/stdlib/strtoull_r.c, libc/stdlib/wcstombs.c, libc/stdlib/wcstombs_r.c: Add restrict keyword. 2013-11-18 Marcus Shawcroft * libc/include/sys/unistd.h (ftruncate, truncate): Define for __arm__. 2013-11-13 Gregory Pietsch * newlib/libc/stdlib/getopt.c (getopt_internal): Add missing braces. 2013-11-13 Freddie Chopin * newlib/libc/include/getopt.h (struct option): name field should be "const char *". * newlib/libc/stdlib/getopt.c (getopt_internal): Use fputs()/fputc() instead of fprintf() to save code space. Fix signed/unsigned comparison. 2013-11-12 Sebastian Huber * libc/libc/stdlib/getopt.c (getopt_internal): Fix NULL pointer access. 2013-11-08 Terry Guo * libm/libm.texinfo: Rename node Index to Document Index. 2013-11-08 Corinna Vinschen * libc/libc.texinfo: Rename node Library Index to Document Index. 2013-11-04 Terraneo Federico * libc/stdio/fvwrite.c: Allow writing in larger chunks for fully buffered and unbuffered files, to improve write performance. 2013-10-31 Terraneo Federico * libc/stdio/fvwrite.h: change type of uio_resid from int to size_t to fix fwrite() of > 2GByte buffers. 2013-10-30 Joey Ye Implement malloc_stats for nano. * libc/stdlib/nano-mallocr.c (RONECALL): New parameter macro. (sbrk_start): New variable. (current_mallinfo, free_list): Forward declaration of data. (chunk): Define size as long type. (mallinfo): Synchronize with latest malloc.h. (nano_*): Forward declaration of functions. (get_chunk_from_ptr): Defined to static inline. (nano_mallinfo): Implement this function. (nano_malloc_stats): Implement this function. 2013-10-30 Sebastian Huber * libc/include/machine/_default_types.h: Revert change from 2013-10-10. 2013-10-24 Hans-Peter Nilsson * libc/include/stdio.h [!__LARGE64_FILES] (funopen): Fix typo in last change. 2013-10-23 Corinna Vinschen * libc/include/stdio.h (funopen): Change prototype of __readfn and __writefn parameter to match new definition of FILE's _read and _write methods. (_funopen_r): Ditto. (funopen): Ditto. (_funopen_r): Ditto. * libc/include/sys/config.h (_READ_WRITE_BUFSIZE_TYPE) Define as type int if not already defined. Add comment to explain. * libc/include/sys/reent.h: Include stddef.h. (struct __sFILE): Change type of last parameter in declaration of _read and _write methods to _READ_WRITE_BUFSIZE_TYPE. (struct __sFILE64): Ditto. * libc/stdio/local.h (__sread): Declare with last parameter set to _READ_WRITE_BUFSIZE_TYPE. (__seofread): Ditto. (__swrite): Ditto. (__swrite64): Ditto. * libc/stdio/fvwrite.c (__sfvwrite_r): Change type of local variables w and s to _READ_WRITE_RETURN_TYPE. * libc/stdio/fflush.c (__sflush_r): Change type of local variables n and t to _READ_WRITE_BUFSIZE_TYPE and _READ_WRITE_RETURN_TYPE. Add local variables flags to keep _flags value. * libc/stdio/fmemopen.c (fmemreader): Align to above change. (fmemwriter): Ditto. * libc/stdio/fopencookie.c (fcreader): Ditto. (fcwriter): Ditto. * libc/stdio/funopen.c (funread): Ditto. (funwrite): Ditto. (funreader): Ditto. (funwriter): Ditto. * libc/stdio/open_memstream.c (memwriter): Ditto. * libc/stdio/stdio.c (__sread): Ditto. (__seofread): Ditto. (__swrite): Ditto. * libc/stdio64/stdio64.c (__swrite64): Ditto. 2013-10-18 Joey Ye * configure.in (enable-newlib-global-atexit): New option. * configure: Regenerated. * newlib.hin (_REENT_GLOBAL_ATEXIT): Place-holder. * README (enable-newlib-global-atexit): Description for new option. 2013-10-18 Sebastian Huber * libc/include/sys/unistd.h (MAXPATHLEN): Delete. * libc/include/sys/param.h (MAXPATHLEN): Define. * libc/sys/rtems/sys/param.h (MAXPATHLEN): Likewise. * libc/unix/getcwd.c: Include for MAXPATHLEN. 2013-10-10 Sebastian Huber * libc/libc/sys/rtems/sys/param.h: Update some parameters to the latest FreeBSD values. 2013-10-10 Sebastian Huber * libc/sys/rtems/machine/_types.h (_HAVE_SYSTYPES): Define. 2013-10-10 Sebastian Huber * libc/sys/rtems/include/limits.h (_POSIX_HOST_NAME_MAX): Define. 2013-10-10 Sebastian Huber * libc/sys/rtems/machine/_types.h (__dev_t): Define. (__dev_t_defined) Likewise. * libc/include/sys/_types.h (__dev_t): Delete RTEMS specific definition. 2013-10-10 Sebastian Huber * libc/sys/rtems/machine/_types.h (_ssize_t): Delete. (__ssize_t_defined) Likewise. 2013-10-30 Sebastian Huber * libc/include/machine/_default_types.h: Revert change from 2013-10-10. 2013-10-10 Sebastian Huber * libc/include/machine/_default_types.h (__int8_t): Define via provided type. (__uint8_t): Likewise. (__int8_least_t): Likewise. (__uint8_least_t): Likewise. (__int16_t): Likewise. (__uint16_t): Likewise. (__int16_least_t): Likewise. (__uint16_least_t): Likewise. (__int32_t): Likewise. (__uint32_t): Likewise. (__int32_least_t): Likewise. (__uint32_least_t): Likewise. (__int64_t): Likewise. (__uint64_t): Likewise. 2013-10-10 Sebastian Huber * libc/include/paths.h (_PATH_DEVNULL): Define. (_PATH_DEVZERO): Likewise. 2013-10-09 Marcus Shawcroft * testsuite/newlib.wctype/twctype.c (main): Update iswprint(0xce2) test case. 2013-10-03 Steve Ellcey * libc/machine/mips/memset.c: Remove. * libc/machine/mips/memset.S: New. * libc/machine/mips/Makefile.am: Change memset.c to memset.S * libc/machine/mips/Makefile.in: Regenerate. 2013-10-01 Petr Hosek * configure.host: Disable new posix_spawn function for all users of posix dir except Cygwin. * libc/posix/Makefile.am: Add support for new posix_spawn function. * libc/posix/Makefile.in: Regenerate. * libc/posix/posix_spawn.c: New file. * libc/include/spawn.h: Ditto. 2013-09-13 Joey Ye * libc/stdlib/nano-mallocr.c (nano_allopt): Typo fixed to ... (nano_mallopt): ... this. 2013-09-12 Sebastian Huber * libc/include/sys/cdefs.h: Synchronize with latest FreeBSD version. * libc/include/stdatomic.h: Likewise. 2013-09-08 Yaakov Selkowitz * libc/include/search.h (__compar_fn_t): Add typedef. (tdelete, tfind, tsearch): Use it. * libc/include/stdlib.h (__compar_fn_t): Add typedef. (bsearch, qsort): Use it. 2013-08-19 Meador Inge * libc/stdlib/__atexit.c (__register_exitproc): NULL-ify _on_exit_args_ptr when creating a new _atexit structure while _REENT_SMALL is defined. 2013-08-12 Bin Cheng * libc/configure.in (--enable-newlib-wchar-orient): Remove. * libc/configure: Regenerated. * libc/stdio/Makefile.am (NEWLIB_WIDE_ORIENT): Remove. * libc/stdio/Makefile.in: Regenerated. 2013-08-12 Yufeng Zhang * libc/sys/arm/crt0.S: Remove 'start'. 2013-08-08 Freddie Chopin * libc/string/strncat.c: Fix typo in documentation. 2013-08-01 Corinna Vinschen * libc/include/stdio_ext.h (__fbufsize): Define as inline function for gcc, as macro otherwise. (__freading): Ditto. (__fwriting): Ditto. (__freadable): Ditto. (__fwriteable): Ditto. (__flbf): Ditto. (__fpending): Ditto. 2013-07-23 Sahil Patnayakuni * libc/sys/linux/include/netdb.h, libc/sys/linux/net/getaddrinfo.c, libc/sys/linux/net/getnameinfo.c: Add restrict keyword to getnameinfo() and getaddrinfo() to increase standards compliance and match glibc. 2013-07-23 Sahil Patnayakuni * libc/include/string.h, libc/string/memccpy.c, libc/string/memcpy.c, libc/string/stpcpy.c, libc/string/stpncpy.c, libc/string/strcat.c, libc/string/strncat.c, libc/string/strncpy.c, libc/string/strtok.c, libc/string/strtok_r.c, libc/string/strxfrm.c libc/machine/microblaze/strcpy.c, libc/machine/xscale/memcpy.c, libc/machine/cris/memcpy.c: Add __restrict to prototype to increase standards compliance. 2013-07-18 Ramana Radhakrishnan * libc/sys/arm/syscalls.c (do_AngelSWI): Delete. * libc/sys/arm/libcfuncs.c (do_AngelSWI): Delete. * libc/sys/arm/swi.h: Copy over from libgloss. 2013-07-17 Janis Johnson * libc/machine/powerpc/configure.in: Remove extra_sources; fix extra_objs for powerpc*-*altivec. * libc/machine/powerpc/Makefile.am: Define EXTRA_lib_a_SOURCES. * libc/machine/powerpc/configure: Regenerated. * libc/machine/powerpc/Makefile.in: Regenerated. 2013-07-16 David Holsgrove * configure.host: Change to microblaze*. * libc/include/machine/ieeefp.h: Add __MICROBLAZEEL__. * libc/machine/microblaze/mb_endian.h: New file. * newlib/libc/machine/microblaze/strcmp.c: Add little endian support. * newlib/libc/machine/microblaze/strcpy.c: Likewise. * newlib/libc/machine/microblaze/strlen.c: Likewise. 2013-07-09 Sabrina Ni * libc/machine/nds32/Makefile.am (lib_a_SOURCES): Add abort.c, memcpy.S, memset.S, strcmp.S, and strcpy.S. * libc/machine/nds32/Makefile.in: Regenerated. * libc/machine/nds32/{abort.c, memcpy.S, memset.S, strcmp.S, strcpy.S}: New. 2013-07-09 Sabrina Ni * configure.host (machine_dir, syscall_dir, newlib_cflags): Add settings for nds32*. * libc/include/machine/ieeefp.h (IEEE_BIG_ENDIAN, IEEE_LITTLE_ENDIAN): Ditto. * libc/include/machine/setjmp.h (JBLEN): Ditto. * libc/machine/configure.in: Add nds32 subdir. * libc/machine/configure: Regenerated. * libc/machine/nds32/Makefile.am: New. * libc/machine/nds32/Makefile.in: New (autogenerated). * libc/machine/nds32/aclocal.m4: New (autogenerated). * libc/machine/nds32/configure.in: New. * libc/machine/nds32/configure: New (autogenerated). * libc/machine/nds32/setjmp.S: New. 2013-07-09 Sebastian Huber * libc/include/sys/config.h (__DYNAMIC_REENT__): Define for RTEMS. 2013-07-09 Bin Cheng * libc/stdio/fwalk.c (_fwalk): Remove redundant test. 2013-07-05 Yaakov Selkowitz * libc/include/sys/types.h (u_char): Add redefinition guard. (u_short, u_int, u_long, caddr_t, daddr_t): Ditto. 2013-07-02 Joey Ye Lite exit support. * README: Add information about lite-exit. * acconfig.h (_LITE_EXIT): New macro. * configure.in (enable-lite-exit): New option. (_LITE_EXIT): Define new macro. * configure: Regenerated. * newlib.hin (_LITE_EXIT): New macro. * libc/stdlib/__atexit.c [_LITE_EXIT]: Add dummy explicit reference to __call_exitprocs. * libc/stdlib/cxa_atexit.c [_LITE_EXIT]: Make __register_exitproc a weak reference. * libc/stdlib/exit.c (exit)[_LITE_EXIT]: Remove TWS and weakly reference __call_exitprocs. 2013-07-02 Jeff Johnston * libc/include/sys/reent.h: Fix typo in comment. 2013-07-01 Will Newton * libc/machine/arm/memcpy-armv7a.S: Adjust entry to aligned loop to improve misaligned copy performance. 2013-06-26 Jeff Johnston * libc/include/stdio.h: Specify std streams always in terms of _REENT. * libc/include/wchar.h: Ditto. * libc/include/sys/reent.h: Remove _RENT_ONLY check around setting of _REENT macro. 2013-06-24 Yaakov Selkowitz * libc/include/string.h (rawmemchr): Declare. * libc/string/Makefile.am (ELIX_4_SOURCES): Add rawmemchr.c. (CHEWOUT_FILES): Add rawmemchr.def. * libc/string/Makefile.in: Regenerate. * libc/string/rawmemchr.c: New file. 2013-06-24 Terraneo Federico * libc/reent/reent.c (_reclaim_reent): Free also _misc and _signal_buf. 2013-06-24 Terraneo Federico * libc/include/sys/reent.h (_ATEXIT_INIT_PTR): Remove. (_REENT_INIT_ATEXIT_PTR): Remove. (_REENT_INIT_PTR): Reduce code size if _REENT_SMALL. 2013-06-21 Will Newton * libc/machine/arm/strlen-armv7.S: Import latest strlen code from Linaro cortex-strings. 2013-06-21 Will Newton * MAINTAINERS: Add Will Newton to Write After Approval. 2013-06-19 Bin Cheng * acconfig.h (_UNBUF_STREAM_OPT): Undefine. * newlib.hin (_UNBUF_STREAM_OPT): Undefine. * configure.in (--enable-newlib-unbuf-stream-opt): New option. * configure: Regenerate. * libc/stdio/vfprintf.c (_VFPRINTF_R): Don't do optimization on unbuffered stream files. * libc/stdio/vfwprintf.c (_VFWPRINTF_R): Likewise. * README: Add description about the option. 2013-06-19 Terraneo Federico * libc/posix/readdir_r.c: Fix potential read past dirp->dd_buf. 2013-06-13 Bir Cheng * README: Add description for NEWLIB's feature customizing configuration options. 2013-06-10 Terraneo Federico * libc/stdlib/gdtoa-gethex.c (__hexdig): Constify. (hexdig_init): Remove. (__hexdig_fun): New function. hexdig_init, added __hexdig_fun (gethex): Call __get_hexdig macro rather than hexdig. * libc/stdlib/gdtoa-hexnan.c (hexnan): Constify fpi argument. Call __get_hexdig macro rather than hexdig. * libc/stdlib/ldtoa.c: Throughout constify functions arguments where required by constifying the following arrays. (ezero): Constify. (eone): Constify. (ermsg): Constify. (etens): Constify. (emtens): Constify. (nan113): Constify. (nan64): Constify. (nan53): Constify. (nan24): Constify. * libc/stdlib/mprec.h (__get_hexdig): Define. (gethex): Constify args in declaration where appropriate. (hexnan): Ditto. (hexdig_init): Remove declaration. (__hexdig_fun): Declare. * libc/stdlib/strtod.c (fpi): Constify. (fpinan): Constify. 2013-06-07 Sebastian Huber * libc/include/sys/cdefs.h (__has_extension): New define. (__has_feature): Likewise. (__has_include): Likewise. (__has_builtin): Likewise. * libc/include/stdatomic.h: New. 2013-06-05 Joey Ye * libc/machine/arm/strcmp.S: Use local labels. 2013-06-03 Joey Ye * libc/machine/arm/Makefile.am (MEMCPY_DEP): New define. ($(lpfx)memcpy.o, $(lpfx)memcpy.obj): Depend on MEMCPY_DEP. * libc/machine/arm/Makefile.in: Regenerated. * newlib/libc/machine/arm/memcpy-stub.c: Exclude armv7-m/armv7e-m. * newlib/libc/machine/arm/memcpy-armv7m.S: New. * newlib/libc/machine/arm/memcpy.S: Replace with wrapper code. Old code moved to ... * newlib/libc/machine/arm/memcpy-armv7a.S: ... here. Remove redundant architecture check. 2013-05-30 Jeff Johnston * libc/machine/powerpc/times.c: Moved to libgloss/rs6000. * libc/machine/powerpc/Makefile.am: Remove times.c. * libc/machine/powerpc/Makefile.in: Regenerated. 2013-05-29 Joey Ye Bin Cheng * configure.in (--enable-newlib-nano-malloc): New option. * configure: Regenerated. * libc/configure.in (--enable-newlib-nano-malloc): New option. * libc/configure: Regenerated. * libc/stdlib/Makefile.am (NEWLIB_NANO_MALLOC): Use. * libc/stdlib/Makefile.in: Regenerated. * libc/stdlib/nano-mallocr.c: New file, implementing nano version malloc family functions. 2013-05-28 Richard Earnshaw * libc/machine/arm/strcpy.S: Explicitly set build attributes when building for thumb1 targets. 2013-05-22 Corinna Vinschen * libc/ctype/isalnum.c: Correct domain of definition to SUSv4 wording. * libc/ctype/isalpha.c: Ditto. * libc/ctype/isblank.c: Ditto. * libc/ctype/iscntrl.c: Ditto. * libc/ctype/isdigit.c: Ditto. * libc/ctype/islower.c: Ditto. * libc/ctype/isprint.c: Ditto. * libc/ctype/ispunct.c: Ditto. * libc/ctype/isxdigit.c: Ditto. 2013-05-22 Corinna Vinschen * libc/include/sys/cdefs.h (_Static_assert): Accommodate gcc >= 4.6. 2013-05-16 Sebastian Huber * libc/reent/reent.c (_wrapup_reent): Remove. 2013-05-13 DJ Delorie Nick Clifton * MAINTAINERS (msp430): Add. * configure.host (msp430): Add. * libc/include/machine/ieeefp.h: Add MSP430 support. * libc/include/machine/setjmp.h: Likewise. * libc/include/sys/config.h: Likewise. * libc/machine/configure.in (msp430): Add. * libc/machine/configure: Regenerate. * libc/machine/msp430: New directory. 2013-05-10 Freddie Chopin * configure.in: Fix help text for disable-newlib-atexit-dynamic-alloc option. * configure: Regenerated. 2013-05-07 Sebastian Huber * libc/include/sys/config.h (_REENT_GLOBAL_ATEXIT): Define for RTEMS. * libc/include/sys/reent.h (_reent): Use _REENT_GLOBAL_ATEXIT. (_global_atexit): Declare if _REENT_GLOBAL_ATEXIT is defined. * libc/reent/reent.c (_reclaim_reent): Remove atexit cleanup if _REENT_GLOBAL_ATEXIT is defined. (_wrapup_reent): Remove atexit handling if _REENT_GLOBAL_ATEXIT is defined. * libc/stdlib/__atexit.c (_global_atexit0): Define if _REENT_GLOBAL_ATEXIT is defined. * libc/stdlib/__call_atexit.c (_global_atexit): Define if _REENT_GLOBAL_ATEXIT is defined. 2013-05-07 Sebastian Huber * libc/include/sys/reent.h (_ATEXIT_INIT): Define. (_ATEXIT_INIT_PTR): Likewise. (_REENT_INIT_ATEXIT): Likewise. (_REENT_INIT_ATEXIT_PTR): Likewise. (_GLOBAL_ATEXIT): Likewise. * libc/stdlib/__atexit.c (_GLOBAL_ATEXIT0): Define. (__register_exitproc): Use _GLOBAL_ATEXIT and _GLOBAL_ATEXIT0. * libc/stdlib/__call_atexit.c (__call_exitprocs): Likewise. 2013-05-07 Sebastian Huber * libc/stdlib/__atexit.c (__atexit_lock): Declare. * libc/stdlib/__call_atexit.c (__atexit_lock): Define. 2013-05-06 Sandra Loosemore * configure.host (machine_dir, sys_dir, syscall_dir, newlib_cflags): Add settings for nios2*. * libc/include/machine/ieeefp.h (IEEE_BIG_ENDIAN, IEEE_LITTLE_ENDIAN): Likewise. * libc/include/machine/setjmp.h (JBLEN, JBTYPE): Likewise. * libc/machine/configure.in: Add nios2 subdir. * libc/machine/configure: Regenerated. * libc/machine/nios2/Makefile.am: New. * libc/machine/nios2/Makefile.in: New (autogenerated). * libc/machine/nios2/aclocal.m4: New (copied from mips version). * libc/machine/nios2/configure.in: New. * libc/machine/nios2/configure: New (autogenerated). * libc/machine/nios2/setjmp.s: New. 2013-04-29 Sebastian Huber * libc/stdio/local.h (CHECK_INIT): Evaluate argument only once. (CHECK_STD_INIT): Likewise. * libc/stdio/fgetc.c (fgetc): Use local variable for _REENT. * libc/stdio/fgetwc.c (fwgetc): Likewise. * libc/stdio/fgetws.c (fgetws): Likewise. * libc/stdio/fputc.c (fputc): Likewise. * libc/stdio/fputwc.c (fputwc): Likewise. * libc/stdio/fputws.c (fputws): Likewise. * libc/stdio/getc.c (getc): Likewise. * libc/stdio/getchar.c (_getchar_r): Likewise. * libc/stdio/putc.c (putc): Likewise. * libc/stdio/putchar.c (putchar): Likewise. * libc/stdio/scanf.c (scanf): Likewise. * libc/stdio/setvbuf.c (setvbuf): Likewise. * libc/stdio/ungetwc.c (ungetwc): Likewise. * libc/stdio/vfscanf.c (VFSCANF): Likewise. * libc/stdio/vfwscanf.c (VFWSCANF): Likewise. * libc/stdio/viprintf.c (viprintf): Likewise. * libc/stdio/viscanf.c (viscanf): Likewise. * libc/stdio/vprintf.c (vprintf): Likewise. * libc/stdio/vscanf.c (vscanf): Likewise. * libc/stdio/vwprintf.c (vwprintf): Likewise. * libc/stdio/vwscanf.c (vwscanf): Likewise. * libc/stdio/wscanf.c (wscanf): Likewise. * libc/stdlib/ecvtbuf.c (fcvtbuf): Likewise. (fcvtbuf): Likewise. (ecvtbuf): Likewise. (ecvtbuf): Likewise. * libc/stdlib/mblen.c (mblen): Likewise. * libc/stdlib/mbrlen.c (mbrlen): Likewise. * libc/stdlib/mbrtowc.c (mbrtowc): Likewise. * libc/stdlib/mbtowc.c (mbtowc): Likewise. * libc/stdlib/rand.c (srand): Likewise. (rand): Likewise. * libc/stdlib/wcrtomb.c (wcrtomb): Likewise. * libc/stdlib/wctob.c (wctob): Likewise. * libc/stdlib/wctomb.c (wctomb): Likewise. * libc/string/strtok.c (strtok): Likewise. * libc/time/asctime.c (asctime): Likewise. * libc/time/gmtime.c (gmtime): Likewise. * libc/time/lcltime.c (lcltime): Likewise. 2013-04-29 Sebastian Huber * libc/include/sys/reent.h (_REENT_INIT_PTR): Reduce code size. 2013-04-29 Freddie Chopin * libc/libc.texinfo: Fix @ references and change ifinfo to be ifnottexinfo. * libm/libm.texinfo: Ditto. 2013-04-25 Sebastian Huber * libc/stdio/local.h (_STDIO_CLOSE_PER_REENT_STD_STREAMS): New define. * libc/stdio/findfp.c (_STDIO_CLOSE_PER_REENT_STD_STREAMS): Use define. 2013-04-24 Corinna Vinschen Nick Clifton * libc/stdlib/strtod.c: Manual update to latest algorithm from NetBSD. 2013-04-23 Corinna Vinschen Port newlib to x86_64-pc-cygwin. * libc/include/sys/features.h: Redefine compilation environment definitions for Cygwin to cover 64 bit Cygwin. * libc/ctype/ctype_.c (_ctype_): Fix definition for 64 bit Cygwin. * libc/include/machine/setjmp.h: Change definition of _JBLEN to allow different values for 32 bit and 64 bit Cygwin. * libc/include/reent.h (stat64): Define as stat under Cygwin, instead of as __stat64. Undef stat64 if not building Newlib. * libc/include/sys/stat.h (stat64): Define as stat under Cygwin. 2013-04-22 Sebastian Huber * libc/include/sys/cdefs.h: Align with latest FreeBSD file header. * libc/include/sys/features.h (__GNUC_PREREQ__): Define. 2013-04-19 Corinna Vinschen * newlib/libc/search/hash.c: Revert patch from 2012-08-08. 2013-04-16 Sebastian Huber * libc/sys/rtems/sys/queue.h: Delete file. * libc/include/sys/cdefs.h (__containerof): New define. (__DEQUALIFY): Likewise. * libc/include/sys/queue.h (TRACEBUF_INITIALIZER): Likewise. (TRACEBUF): Likewise. (LIST_FOREACH_SAFE): Likewise. (LIST_PREV): Likewise. (LIST_SWAP): Likewise. (QMD_LIST_CHECK_HEAD): Likewise. (QMD_LIST_CHECK_NEXT): Likewise. (QMD_LIST_CHECK_PREV): Likewise. (QMD_SAVELINK): Likewise. (QMD_TAILQ_CHECK_HEAD): Likewise. (QMD_TAILQ_CHECK_NEXT): Likewise. (QMD_TAILQ_CHECK_PREV): Likewise. (QMD_TAILQ_CHECK_TAIL): Likewise. (QMD_TRACE_ELEM): Likewise. (QMD_TRACE_HEAD): Likewise. (SLIST_FOREACH_PREVPTR): Likewise. (SLIST_FOREACH_SAFE): Likewise. (SLIST_REMOVE_AFTER): Likewise. (SLIST_SWAP): Likewise. (STAILQ_FOREACH_SAFE): Likewise. (STAILQ_REMOVE_AFTER): Likewise. (STAILQ_SWAP): Likewise. (TAILQ_FOREACH_REVERSE_SAFE): Likewise. (TAILQ_FOREACH_SAFE): Likewise. (TAILQ_SWAP): Likewise. (TRASHIT): Likewise. (SLIST_REMOVE): Use SLIST_REMOVE_AFTER(). (STAILQ_LAST): Use __containerof(). (STAILQ_REMOVE): Use STAILQ_REMOVE_AFTER(). 2013-04-12 Will Newton * libc/machine/arm/memcpy-stub.c: Use generic memcpy if unaligned access is not enabled. * libc/machine/arm/memcpy.S: Faster memcpy implementation for Cortex A15 cores using NEON and VFP if available. 2013-04-12 Bin Cheng * acconfig.h (_WCHAR_ORIENT): Undef * newlib.hin (_WCHAR_ORIENT): Undef * configure.in (--enable-newlib-wchar-orient): New option. * configure: Regenerated. * libc/configure.in (--enable-newlib-wchar-orient): New option. * libc/configure: Regenerated. * libc/stdio/Makefile.am (NEWLIB_WIDE_ORIENT): Use. * libc/stdio/Makefile.in: Regenerated. * libc/stdio/local.h (ORIENT): Use _WCHAR_ORIENT to control the definition. Add alternative definition. * libc/stdio/vfprintf.c (__sfputs_r, __sprint_r): Use _WCHAR_ORIENT to control the wide char output. 2012-04-11 Jon TURNEY * libc/include/stdlib.h (strtof, strtoll, strtoull, strtold): Also prototype if C++11 or later. 2013-04-10 Bin Cheng * acconfig.h (_FSEEK_OPTIMIZATION): Undef * newlib.hin (_FSEEK_OPTIMIZATION): Undef * configure.in (--disable-newlib-fseek-optimization): New option. * configure: Regenerated. * libc/stdio/fflush.c (__sflush_r): Use _FSEEK_OPTIMIZATION to control fseek optimization. * libc/stdio/fseeko.c (_fseeko_r): Ditto. * libc/stdio/makebuf.c (__smakebuf_r): Ditto. * libc/stdio64/fseeko64.c (_fseeko64_r): Ditto. 2013-04-08 Matthew Gretton-Dann * libc/stdio/vfieeefp.h (ldieee): Fix typo. 2013-04-02 Sebastian Huber * libc/posix/scandir.c (DIRSIZ): Use offsetof instead of magic number. 2013-03-27 Bin Cheng * acconfig.h (_FVWRITE_IN_STREAMIO): Undefine. * newlib.hin (_FVWRITE_IN_STREAMIO): Undefine. * configure.in (--disable-newlib-fvwrite-in-streamio): New option. * configure: Regenerated. * libc/stdio/fputs.c (_fputs_r): Use _FVWRITE_IN_STREAMIO to control __sfvwrite_r. Add alternative implementation. * libc/stdio/fputws.c (_fputws_r): Ditto. * libc/stdio/fwrite.c (_fwrite_r): Ditto. * libc/stdio/puts.c (_puts_r): Ditto. * libc/stdio/vfprintf.c (__ssputs_r, __sfputs_r): New function. (_VFPRINTF_R): Use _FVWRITE_IN_STREAMIO to control vector buffer. (__SPRINT): Use _FVWRITE_IN_STREAMIO to control macro definition. * libc/stdio/vfwprintf.c (_VFWPRINTF_R): Use _FVWRITE_IN_STREAMIO to control vector buffer. 2013-03-26 Sebastian Huber * libc/stdio/local.h (_STDIO_WITH_THREAD_CANCELLATION_SUPPORT): New define. * libc/stdio/fclose.c: Use _STDIO_WITH_THREAD_CANCELLATION_SUPPORT. * libc/stdio/freopen.c: Likewise. * libc/stdio64/freopen64.c: Likewise. 2013-03-15 Sebastian Huber * newlib/libc/stdio/findfp.c (glue_with_file): New. (__sfmoreglue): Use glue_with_file to avoid alignment problems. 2013-02-28 Corinna Vinschen * libc/include/machine/setjmp.h (sigjmp_buf): Fix definition of sigjmp_buf size if _JBTYPE is defined. 2013-02-26 Corinna Vinschen * libc/include/malloc.h (struct mallinfo): Convert type of all members to size_t to match all targets. 2013-02-20 Yaakov Selkowitz Joseph S. Myers * libc/include/sys/_types.h (_ssize_t): Define as signed equivalent of size_t with GCC. 2013-02-19 Steve Ellcey * libc/machine/mips/memcpy.S: Fix USE_PREFETCH check. 2013-02-01 Nick Clifton * libc/sys/sysnecv850/crt0.S: Add recognition of the e3v5 architecture variant. 2013-01-22 Joel Sherrill * libc/include/pthread.h: Add PTHREAD_RWLOCK_INITIALIZER. Fix typo on PTHREAD_COJND_INITIALIZER. 2013-01-17 Marcus Shawcroft * libc/machine/aarch64/strncmp.S: Correct arithmetic for argument N values close to the maximum representable value in an unsigned 64 bit value. 2013-01-17 Marcus Shawcroft * libc/machine/aarch64/strnlen.S: Correct arithmetic for argument N values close to the maximum representable value in an unsigned 64 bit value. 2013-01-15 Nick Clifton * libc/sys/sysnecv850/crt0.S (_start): Enable FPU for the V850e2v3. 2013-01-12 Corinna Vinschen * libc/include/string.h: Fix preprocessor expressions using _XOPEN_SOURCE. 2013-01-11 Corinna Vinschen * libc/stdio/vfwprintf.c (_VFWPRINTF_R): Add code to correctly handle 's' format specifier on not _MB_CAPABLE targets. Fix a formatting glitch in _MB_CAPABLE enabled code. Add a missing 'L' specifier. 2013-01-10 Marcus Shawcroft * libc/machine/aarch64/Makefile.am (lib_a_SOURCES): Add memcmp-stub.c and memcmp.S * libc/machine/aarch64/Makefile.in: Regenerated. * libc/machine/aarch64/memcmp-stub.c: New file. * libc/machine/aarch64/memcmp.S: New file. 2013-01-10 Marcus Shawcroft * libc/machine/aarch64/Makefile.am (lib_a_SOURCES): Add strnlen-stub.c and strnlen.S * libc/machine/aarch64/Makefile.in: Regenerated. * libc/machine/aarch64/strnlen-stub.c: New file. * libc/machine/aarch64/strnlen.S: New file. 2013-01-10 Marcus Shawcroft * libc/machine/aarch64/Makefile.am (lib_a_SOURCES): Add strlen.S and strlen-stub.c. * libc/machine/aarch64/Makefile.in: Regenerated. * libc/machine/aarch64/strlen-stub.c: New file. * libc/machine/aarch64/strlen.S: New file. 2013-01-10 Marcus Shawcroft * libc/machine/aarch64/Makefile.am (lib_a_SOURCES): Add memmove.S and memmove-stub.c. * libc/machine/aarch64/Makefile.in: Regenerated. * libc/machine/aarch64/memmove-stub.c: New file. * libc/machine/aarch64/memmove.S: New file. 2013-01-10 Marcus Shawcroft * libc/machine/aarch64/Makefile.am (lib_a_SOURCES): Re-ordered. Add strncmp.S and strncmp-stub.c. * libc/machine/aarch64/Makefile.in: Regenerated. * libc/machine/aarch64/strncmp-stub.c: New file. * libc/machine/aarch64/strncmp.S: New file. 2013-01-10 Marcus Shawcroft * libc/machine/aarch64/Makefile.am (lib_a_SOURCES): Add memcpy.c memcpy-stub.c memset.S memset-stub.c strcmp.S strcmp-stub.c. * libc/machine/aarch64/Makefile.in: Regenerated. * libc/machine/aarch64/memcpy-stub.c: New file. * libc/machine/aarch64/memcpy.S: New file. * libc/machine/aarch64/memset-stub.c: New file. * libc/machine/aarch64/memset.S: New file. * libc/machine/aarch64/strcmp.S: New file. * libc/machine/aarch64/strcmp-stub.c: New file. 2013-01-08 Jeff Johnston * MAINTAINERS: Add Richard Earnshaw as Arm co-maintainer and add Richard and Marcus Shawcroft as aarch64 maintainers. 2013-01-07 Steve Ellcey * libc/machine/mips/memcpy.S (memcpy): Check if _MIPS_SIM is set. 2012-12-20 Jeff Johnston * NEWS: Update with 2.0.0 info. * README: Ditto. * acinclude.m4: Change version number to 2.0.0. * aclocal.m4: Regenerated. * configure: Ditto. * Makefile.in: Regenerated. * doc/aclocal.m4: Ditto. * doc/configure: Ditto. * libc/*/aclocal.m4: Ditto. * libc/*/configure: Ditto. * libc/libc.texinfo: Ditto. * libm/*/aclocal.m4: Ditto. * libm/*/configure: Ditto. * libm/libm.texinfo: Ditto. * libc/sys/linux/shared.ld: Add VERS_2.0 2012-12-19 Corinna Vinschen * libc/stdlib/strtod.c (_strtod_r): Revert change from 2011-05-16. 2012-12-18 Jeff Johnston * libc/include/math.h: Remove the log2f macro. 2012-12-18 Craig Howland * libc/include/math.h: Add recognition of values 1 and 2 for FLT_EVAL_METHOD. 2012-12-18 Corinna Vinschen * libc/stdio/puts.c (_puts_r): Fix typo in previous patch. Add local variable fp for better readability. 2012-12-17 Jeff Johnston * libc/stdio/puts.c: Add fp locking and use _stdout_r macro to refer to the stream rather than stdout. 2012-12-14 Yufeng Zhang * libc/machine/aarch64/machine/_types.h: New file; define _ssize_t as long. 2012-12-11 Steve Ellcey * libc/machine/mips/memcpy.c: Remove. * libc/machine/mips/memcpy.S: New. * libc/machine/mips/Makefile.am (lib_a_CCASFLAGS): Add -D_COMPILING_NEWLIB. (lib_a_CFLAGS): Ditto. 2012-12-04 Kyrylo Tkachov * configure.host: Define libm_machine_dir value for arm. * libm/machine/configure.in: Add arm to libm machines list. * libm/machine/configure: Regenerate. * libm/machine/arm/Makefile.am: New file. * libm/machine/arm/Makefile.in: Generated. * libm/machine/arm/aclocal.m4: Generated. * libm/machine/arm/configure: Generated. * libm/machine/arm/configure.in: New file. * libm/machine/arm/s_ceil.c: Likewise. * libm/machine/arm/s_floor.c: Likewise. * libm/machine/arm/s_nearbyint.c: Likewise. * libm/machine/arm/s_rint.c: Likewise. * libm/machine/arm/s_round.c: Likewise. * libm/machine/arm/s_trunc.c: Likewise. * libm/machine/arm/sf_ceil.c: Likewise. * libm/machine/arm/sf_floor.c: Likewise. * libm/machine/arm/sf_nearbyint.c: Likewise. * libm/machine/arm/sf_rint.c: Likewise. * libm/machine/arm/sf_round.c: Likewise. * libm/machine/arm/sf_trunc.c: Likewise. 2012-11-30 Greta Yorsh * libc/machine/arm/strcmp.S (compute_return_value): Fix return value. * testsuite/newlib.string/strcmp-1.c (main): Add new test cases. 2012-11-29 Sebastian Huber * libc/include/sys/reent.h (__sFILE): Change type of _offset from int to _off_t. * libc/stdio/ftell.c: Use _ftello_r(). * libc/stdio/ftello.c: Copy implementation from previous _ftell_r(). * libc/stdio/fseek.c: Use _fseeko_r(). * libc/stdio/fseeko.c: Copy implementation from previous _fseek_r(). 2012-11-26 Sebastian Huber * libc/include/inttypes.h: Add and use __INTTYPES_EXP(). 2012-11-23 Kyrylo Tkachov * libm/machine/aarch64/configure.in: Change comment to say libm instead of libc. 2012-11-12 Steve Ellcey * libc/machine/mips/machine/asm.h: New. * libc/machine/mips/machine/regdef.h: Update register definitions for different ABI's. 2012-11-11 Christopher Faylor * libc/include/sys/time.h: Avoid guarding other than timeval declaration with _TIMEVAL_DEFINED. Move timeval related macros under _TIMEVAL_DEFINED control. 2012-11-01 Corinna Vinschen * libc/include/locale.h (NULL): Fetch definition via stddef.h. * libc/include/stdio.h (NULL): Ditto. * libc/include/stdlib.h (NULL): Ditto. * libc/include/string.h (NULL): Ditto. * libc/include/wchar.h (NULL): Ditto. * libc/include/rpc/types.h (NULL): Ditto. * libc/include/time.h (NULL): Ditto. Include stddef.h earlier. 2012-10-27 Anthony Green * libc/machine/moxie/setjmp.S (setjmp): Minor optimization. 2012-10-26 Corinna Vinschen * libc/include/sys/signal.h (sigset_t): Don't define when building for Cygwin. 2012-10-24 Jeff Johnston * configure.in: Comment out the --enable-newlib-fp-hw option as the mathfp library is inaccurate and should not be used. * Makefile.am: Add comment regarding the mathfp directory. * configure: Regenerated. * Makefile.in: Ditto. * libm/mathfp/README: New file that details why the mathfp directory is not used. 2012-10-22 Jon TURNEY * libc/include/string.h (strdup, strndup): Declare if not __STRICT_ANSI__ or _XOPEN_SOURCE is defined appropriately. 2012-10-22 Jon TURNEY * libc/include/stdlib.h (strtof, strtoll, strtoull, strtold):Prototype if not __STRICT_ANSI__ or stdc version C99 or greater. 2012-10-21 Hans-Peter Nilsson * libc/sys/mmixware/sbrk.c (_sbrk): Drop unused extern declaration of "end". Mark allocated memory by applying PRELD. 2012-10-16 Gregory Pietsch * libc/stdlib/getopt.c (getopt_internal): Align handling of colon to SUSv4 requirements. (__getopt_long_r): Fix formatting. 2012-10-16 Corinna Vinschen * libc/stdio/vfprintf.c (__sbprintf): Fix comment. 2012-10-16 Aurelien Jacobs * libc/include/assert.h (static_assert): Define. 2012-10-16 Corinna Vinschen * libc/include/sys/features.h (__GNUC_PREREQ): Define. Use throughout in place of explicit GNUC version checks. * libc/include/_ansi.h (_NOINLINE): Define. (_NOINLINE_STATIC): Define. * libc/stdio/vfprintf.c (__sbprintf): Define _NOINLINE_STATIC. 2012-10-09 Peter Rosin * libc/posix/wordfree.c (wordfree): The wrong words are freed when WRDE_DOOFFS is in use. Restructure the code so that the memory needed to be freed is instead kept in an internal linked list... * libc/posix/wordexp2.h: ...as defined here... * libc/posix/wordexp.c (wordexp): ...and build this internal linked list here, avoiding wasteful strdup calls in the process. 2012-10-09 Peter Rosin * libc/posix/wordexp.c (wordexp): Return WRDE_NOSPACE on resource allocation failure. Cleanup leftover resources when failing. 2012-10-09 Peter Rosin * libc/posix/wordexp.c (wordexp): Handle expanded words longer than 500 bytes. 2012-10-09 Peter Rosin * libc/posix/wordexp.c (wordexp): Don't leak file streams. 2012-10-03 DJ Delorie * libc/machine/rl78/setjmp.S: Convert from CPP macros to GAS macros, to avoid dependence on the line separation character. 2012-10-01 DJ Delorie * libc/sys/sysnecv850/sbrk.c (_sbrk): Change heap_start to be an array of undefined size, to avoid problems when compiled with -msda=4. 2012-10-01 Jeff Johnston * README: replace sources.redhat.com with sourceware.org. * HOWTO: Ditto. 2012-09-26 Ian Bolton Jim MacArthur Marcus Shawcroft Nigel Stephens Ramana Radhakrishnan Richard Earnshaw Sofiane Naci Tejas Belagod Yufeng Zhang * configure.host: Add AArch64. * libc/include/machine/ieeefp.h: Add AArch64. * libc/include/machine/setjmp.h: Add AArch64. * libc/include/machine/time.h: Add AArch64. * libc/include/sys/config.h: Add AArch64. * libc/machine/aarch64/Makefile.am: New file. * libc/machine/aarch64/Makefile.in: Generated. * libc/machine/aarch64/aclocal.m4: Generated. * libc/machine/aarch64/configure: Generated. * libc/machine/aarch64/configure.in: New file. * libc/machine/aarch64/setjmp.S: New file. * libc/machine/configure.in: Add AArch64. * libc/machine/configure: Re-generated. * libm/machine/aarch64/Makefile.am: New file. * libm/machine/aarch64/Makefile.in: Generated. * libm/machine/aarch64/aclocal.m4: Generated. * libm/machine/aarch64/configure: Generated. * libm/machine/aarch64/configure.in: New file. * libm/machine/aarch64/s_ceil.c: New file. * libm/machine/aarch64/s_floor.c: New file. * libm/machine/aarch64/s_fma.c: New file. * libm/machine/aarch64/s_fmax.c: New file. * libm/machine/aarch64/s_fmin.c: New file. * libm/machine/aarch64/s_llrint.c: New file. * libm/machine/aarch64/s_llround.c: New file. * libm/machine/aarch64/s_lrint.c: New file. * libm/machine/aarch64/s_lround.c: New file. * libm/machine/aarch64/s_nearbyint.c: New file. * libm/machine/aarch64/s_rint.c: New file. * libm/machine/aarch64/s_round.c: New file. * libm/machine/aarch64/s_trunc.c: New file. * libm/machine/aarch64/sf_ceil.c: New file. * libm/machine/aarch64/sf_floor.c: New file. * libm/machine/aarch64/sf_fma.c: New file. * libm/machine/aarch64/sf_fmax.c: New file. * libm/machine/aarch64/sf_fmin.c: New file. * libm/machine/aarch64/sf_llrint.c: New file. * libm/machine/aarch64/sf_llround.c: New file. * libm/machine/aarch64/sf_lrint.c: New file. * libm/machine/aarch64/sf_lround.c: New file. * libm/machine/aarch64/sf_nearbyint.c: New file. * libm/machine/aarch64/sf_rint.c: New file. * libm/machine/aarch64/sf_round.c: New file. * libm/machine/aarch64/sf_trunc.c: New file. * libm/machine/configure.in: Add AArch64. * libm/machine/configure: Re-generated. 2012-09-26 Michael Hope * doc/makedoc.c (dup_): Rename to avoid colliding with dup(2). 2012-09-13 Anthony Green * libc/include/machine/ieeefp.h (__IEEE_BIG_ENDIAN): Add bi-endian support for moxie. 2012-08-23 Christopher Faylor * libc/stdio/flags.c (__sflags): Guard against using O_BINARY on systems which do not provide it. 2012-08-21 Christopher Faylor * libc/stdio/flags.c (__sflags): Rewrite recognition of extended mode flags to just loop over more allowed flags. Support glibc 'e' flag on systems defining _GLIBC_EXTENSION. Support C11 'x' flag. 2012-08-10 Corinna Vinschen * libc/stdlib/btowc.c (btowc): Cast to avoid compiler warning. * libc/search/hash_buf.c (__get_buf): Initialize local vars to avoid compiler warning. * libc/stdio/fgets.c (_fgets_r): Ditto. * libc/time/strftime.c (strftime): Ditto. 2012-08-10 Corinna Vinschen * libc/stdio/vfwprintf.c (_VFWPRINTF_R): Fix guard around state to allow usage in !FLOATING_POINT && _WANT_IO_C99_FORMATS case. 2012-08-08 Eric Blake * libc/posix/engine.c(dissect): Guard diagnostic pragma for right versions of GCC only. * libc/string/strcasestr.c: Ditto. 2012-08-08 Corinna Vinschen Throughout, run newlib with -Wall -Werror option and fix bugs and compiler warnings found this way. * libc/stdio/freopen.c (_freopen_r): Fix bug setting _flags. * libc/include/stdio.h (_rename): Define when building newlib. * libc/include/sys/signal.h (_kill): Ditto. * libc/include/sys/stat.h (_mkdir): Ditto. * libc/include/sys/time.h (_gettimeofday): Ditto. * libc/include/sys/times.h (_times): Ditto. * libc/include/sys/wait.h (_wait): Ditto. * libc/locale/lmessages.c (empty): Don't define for Cygwin. * libc/locale/lmonetary.c (cnv): Ditto. * libc/locale/nl_langinfo.c (nl_langinfo): Ditto for variable s. * libc/posix/collate.c: Throughout cast to avoid compiler warning. * libc/posix/engine.c (matcher): Initialize dp to avoid compiler warning. (dissect): Deliberately silence gcc compiler warning. Add comment to explain why. * libc/posix/glob.c: Disable on Cygwin. Explain why. * libc/posix/regcomp.c: Fix "uninitialized" compiler warnings. * libc/posix/wordexp.c (wordexp): Remove num_bytes variable since result is never used. * libc/posix/popen.c (popen): Ditto for variable last. * libc/reent/mkdirr.c: Include sys/stat.h. * libc/reent/renamer.c: Include stdio.h. * libc/search/hash.c: Throughout use underscored variants of the stat function family. (init_hash): Add missing definition for the __USE_INTERNAL_STAT64 case. * libc/search/hash_bigkey.c (__big_insert): Add parenthesis to avoid compiler warning. * libc/search/hash_page.c (overflow_page): Initalize freep to NULL to avoid compiler warning. * libc/stdio/asiprintf.c (_asiprintf_r): Cast unsigned char * to char * to avoid compiler warning. (asiprintf): Ditto. * libc/stdio/asprintf.c (_asprintf_r): Ditto. (asprintf): Ditto. * libc/stdio/vasiprintf.c (_vasiprintf_r): Ditto. * libc/stdio/vasprintf.c (_vasprintf_r): Ditto. * libc/stdio/mktemp.c (_gettemp): Cast to unsigned char in call to isdigit to avoid compiler warning. * libc/stdio/vfprintf.c (_VFPRINTF_R): Initialize variables used for grouping to avoid compiler warning. Only define and set nseps and nrepeats if they are really used. * libc/stdio/vfwprintf.c (_VFWPRINTF_R): Ditto. Only define state if it is really used. * libc/stdio/vfscanf.c (u_char): Revert to be defined as unsigned char. (__SVFSCANF_R): Cast fmt in call to __mbtowc. * libc/stdlib/mbtowc_r.c (JIS_state_table): Disable when building Cygwin. (JIS_action_table): Ditto. * libc/stdlib/wctomb_r.c (__utf8_wctomb): Add parenthesis to avoid compiler warning. * libc/string/strcasestr.c: Deliberately silence gcc compiler warning. Add comment to explain why. * libc/time/strptime.c (strptime): Cast to unsigned char in calls to isspace to avoid compiler warning. * libm/math/e_atan2.c (__ieee754_atan2): Add parenthesis to avoid compiler warning. * libm/math/e_exp.c (__ieee754_exp): Initialize k to 0 to avoid compiler warning. Drop setting it to 0 later. * libm/math/ef_exp.c (__ieee754_expf): Ditto. * libm/math/e_pow.c (__ieee754_pow): Add braces to avoid compiler warning. * libm/math/ef_pow.c (__ieee754_powf): Ditto. * libm/math/er_lgamma.c (__ieee754_lgamma_r): Initialize nadj to 0 to avoid compiler warning. * libm/math/erf_lgamma.c (__ieee754_lgammaf_r): Ditto. * libm/math/e_rem_pio2.c (__ieee754_rem_pio2): Ditto for variable z. * libm/common/sf_round.c (roundf): Remove signbit variable since result is never used. 2012-08-07 Corinna Vinschen * libc/stdlib/mprec.h (Storeinc): Add parenthesis to avoid compiler warning. 2012-07-30 Kevin Buettner * libc/sys/sysnecv850/crt0.S (_start): Use v850e-specific start up code for v850e2 and v850e2v3 too. 2012-07-20 Eric Blake * libc/posix/readdir.c (readdir): Drop bogus attempt to catch bogus pointers. 2012-07-18 Ralf Corsépius * libc/sys/rtems/machine/_types.h (_ssize_t): Use signed int for __v850__, __851__. 2012-07-17 Ralf Corsépius * libc/search/hcreate_r.c (hdestroy_r): #ifdef 0 unused vars ie, idx. 2012-07-16 Ralf Corsépius * libc/posix/telldir.c: Conditionally build dd_hash_lock. 2012-07-13 Ralf Corsépius * libc/sys/rtems/machine/_types.h (_ssize_t): Add __ARM_EABI__, __v850__, __851__. 2012-07-09 Corinna Vinschen * libc/stdio/fileno.c (fileno): Check if f is a valid stream. If not, return -1 and set errno to EBADF per POSIX. 2012-07-06 Corinna Vinschen Allow building of Cygwin using Mingw64 SDK headers: * libc/include/sys/time.h: Drop _WINSOCK_H guard. Just use _TIMEVAL_DEFINED instead. * libc/include/sys/types.h: Check for _WINSOCKAPI_ along with _WINSOCK_H. * libc/include/sys/unistd.h: Ditto. 2012-06-28 Matthew Gretton-Dann * doc/Makefile.am (makedoc): Use LDFLAGS_FOR_BUILD not LDFLAGS. * doc/Makefile.in: Regenerate. 2012-06-26 Christopher Faylor * libc/include/sys/types.h: Don't use the same preprocessor guard for time_t, timespec, and itimerspec. Add a separate guard specifically for timespec and always unconditionally define itimerspec. 2012-06-05 Corinna Vinschen * libc/stdio/findfp.c (__sinit): Avoid infinite recursion on _REENT_SMALL targets. Add comment to explain. 2012-05-31 Corinna Vinschen * libc/stdio/local.h (_newlib_sfp_lock_exit): Fix typo in non-pthread version. 2012-05-30 Corinna Vinschen * libc/stdio/fgetws.c (_fgetws_r): Call _mbsnrtowcs_r rather than _mbsrtowcs_r and restrict number of wide chars to n - 1. 2012-05-30 Corinna Vinschen * libc/stdio/local.h (_newlib_flockfile_start): New macro to secure stream related critical section against thread cancellation. (_newlib_flockfile_exit): Ditto. (_newlib_sfp_lock_end): Ditto. (_newlib_sfp_lock_start): Ditto for the list of streams. (_newlib_sfp_lock_exit): Ditto. (_newlib_sfp_lock_end): Ditto. Use aforementioned macros in place of _flockfile/_funlockfile and __sfp_lock_acquire/__sfp_lock_release throughout the code. * libc/stdio/fclose.c: Explicitely disable and re-enable thread cancellation. Explain why. * libc/stdio/freopen.c: Ditto. * libc/stdio64/freopen64.c: Ditto. 2012-05-21 Sandeep Kumar Singh * libc/machine/cr16/sys/asm.h: Added some missing instructions and removed few unsupported instructions of cr16 target. 2012-05-10 Yaakov Selkowitz * libc/include/string.h (memrchr): Declare. * libc/string/Makefile.am (ELIX_4_SOURCES): Add memrchr.c. (CHEWOUT_FILES): Add memrchr.def. * libc/string/Makefile.in: Regenerate. * libc/string/memrchr.c: New file. 2012-05-10 Joel Sherrill * libc/sys/rtems/machine/_types.h: Add Microblaze. 2012-05-09 Joel Sherrill * libc/sys/rtems/crt0.c: Add stubs for access(), ftruncate(), _getpid_r(), geteuid(), getgid, _getgid_r, getpid(), getppid(), and _getpid_r(). 2012-05-03 Greta Yorsh * testsuite/newlib.string/strcmp-1.c (LONG_TEST): New macro. (MAX_BLOCK_SIZE): Use small value when LONG_TEST is not set. (MAX_DIFF, MAX_LEN, MAX_ZEROS) Likewise. 2012-03-29 Corinna Vinschen * libc/locale/locale.c (__mb_cur_max): On Cygwin, align default value with default UTF-8 charset. 2012-03-26 Corinna Vinschen * libc/stdio/findfp.c (__sinit): Set __sdidinit last. 2012-03-09 Jeff Johnston * libc/include/machine/setjmp-dj.h: Modify license to include modification in clause as permitted by DJ Delorie. * libc/machine/arm/access.c: Ditto. * libc/machine/i386/setjmp.S: Ditto. * libc/sys/h8300hms/sys/file.h: Ditto. * libc/sys/linux/machine/i386/setjmp.S: Ditto. * libc/sys/sysmec/access.c: Ditto. * libc/sys/sysnecv850/access.c: Ditto. 2012-03-02 Jeff Johnston * libc/posix/readdir_r.c: Fix return code when end of directory is reached. 2012-02-23 Dan Egnor * configure.host: Accept "arm*" host spec instead of just "arm". 2012-02-21 Jeremy Bennett Alan Lehotsky Joern Rennecke * configure.host: Add Epiphany support. * libc/include/machine/ieeefp.h: Likewise. * libc/include/machine/setjmp.h: Likewise. * libc/machine/configure.in, libc/sys/configure.in: Likewise. * libc/machine/configure, libc/sys/configure: Regenerate. * libc/machine/epiphany, libc/sys/epiphany: New directories. * NEWS: Mention addition of Epiphany. 2012-02-15 Christopher Faylor * configure.host: Fix typo: xdir_dir -> xdr_dir. 2012-02-09 Eric Blake * libc/include/_ansi.h (_ELIDABLE_INLINE): Fix C99 mode. 2012-02-09 Sebastian Huber * libc/sys/rtems/sys/utime.h: Include to provide a definition of time_t. 2012-02-08 Greta Yorsh * libc/machine/arm/strcmp.S: New File. * libc/machine/arm/strcmp.c: Deleted. * libc/machine/arm/Makefile.am: Replaces strcmp.c with strcmp.S * libc/machine/arm/Makefile.in: Regenerated. * testsuite/newlib.string/strcmp-1.c: New file. 2012-02-07 Corinna Vinschen * libc/include/inttypes.h: Redefine pointer type macros. 2012-01-13 Yaakov Selkowitz * libc/stdio/sprintf.c: Document 'm' conversion specifier. * libc/stdio/swprintf.c: Ditto. * libc/stdio/vfprintf.c (_VFPRINTF_R) [_GLIBC_EXTENSION]: Handle 'm' conversion specifier. * libc/stdio/vfwprintf.c (_VFWPRINTF_R) [_GLIBC_EXTENSION]: Ditto. 2012-01-12 Yaakov Selkowitz * libc/include/tgmath.h: New header. 2012-01-09 Yaakov Selkowitz * libc/include/sys/unistd.h [__CYGWIN__] (get_current_dir_name): Declare. 2012-01-09 Yaakov Selkowitz * libc/include/complex.h: Fix "/*" within comment warning. 2012-01-09 Corinna Vinschen * libc/include/process.h: Remove Cygwin-only header. 2012-01-03 Viachaslau Kulakouski * libc/stdlib/__atexit.c: Refer to __atexit_lock instead of lock. 2011-12-20 Aleksandr Platonov * libc/stdio/fvwrite.c (__sfvwrite_r): Set __SMBF flag to avoid double free in fclose. Enhance comment. 2011-12-19 Jeff Johnston * NEWS: Update with 1.20.0 info. * README: Ditto. * acinclude.m4: Change version number to 1.20.0. * aclocal.m4: Regenerated. * configure: Ditto. * Makefile.in: Regenerated. * doc/aclocal.m4: Ditto. * doc/configure: Ditto. * libc/*/aclocal.m4: Ditto. * libc/*/configure: Ditto. * libc/libc.texinfo: Ditto. * libm/*/aclocal.m4: Ditto. * libm/*/configure: Ditto. * libm/libm.texinfo: Ditto. * libc/sys/linux/shared.ld: Add VERS_1.20 2011-12-13 Richard Earnshaw Thomas Klein * libc/sys/arm/crt0.S: Manually set the target architecture when compiling for Thumb1 on EABI targets. Don't use SWI on M-profile cores. Avoid v6-only Thumb-1 MOV instruction. 2011-12-12 Akio Idehara * libc/time/strftime.c (get_era_info): Fix off-by-one error in month calculation. 2011-12-06 Chris Johns * libc/iconv/Makefile.am (stmp-def): Use $(MAKE) rather than make. * libc/iconv/Makefile.in: Regenerate. 2011-11-28 DJ Delorie * configure.host: Add rl78. * libc/include/machine/ieeefp.h: Add rl78 support. * libc/include/machine/setjmp.h: Add rl78 support. * libc/machine/configure.in: Add rl78. * libc/machine/rl78: New directory. * MAINTAINERS (rl78): Add myself as RL78 maintainer. 2011-11-08 Corinna Vinschen * libc/iconv/ccs/Makefile.am: Add missing backslash. * libc/iconv/ccs/Makefile.in: Regenerate. 2011-10-18 Dr David Alan Gilbert * libc/machine/arm/Makefile.am (lib_a_SOURCES): Add memchr-stub.c, memchr.S. * libc/machine/arm/arm_asm.h: Add ifdef to allow it to be included in .S files. * libc/machine/arm/memchr-stub.c: New file - just selects what to compile. * libc/machine/arm/memchr.S: New file - ARMv6t2/v7 version. * libc/machine/arm/Makefile.am (lib_a_SOURCES): Add strlen-armv7.S. * libc/machine/arm/strlen-armv7.S: New file. * libc/machine/arm/strlen.c: Add ifdef optimised code so it isn't for v7 or 6t2. * libc/machine/arm/Makefile.in: Regenerate. 2011-10-11 Steven Abner * libc/time/mktm_r.c: (__tzcalc_limits) Fix Julian day calculation. * libc/time/mktime.c: (mktime) Fix tm_yday, tm_mday updating when timezone causes roll over. 2011-10-10 Nick Clifton * libc/sys/arm/crt0.S: Synchronise with libgloss version. * libc/sys/arm/arm.h: Imported from libgloss. 2011-10-04 Greta Yorsh * testsuite/newlib.string/memcpy-1.c: New test. 2011-10-04 Nick Clifton * libc/machine/arm/memcpy.S: Fix unaligned access copying. 2011-09-29 Greta Yorsh * libc/machine/arm/memcpy.S: New file. Contains a hand coded memcpy function optimized for the cortex-a15. * libc/machine/arm/memcpy-stub.c: New file. * libc/machine/arm/Makefile.am (lib_a_SOURCES): Add memcpy-stub.c, memcpy.S. * libc/machine/arm/Makefile.in: Regenerate. 2011-09-08 Jeff Johnston * testsuite/lib/flags.exp: Add logic to add the srcdir include directory to compile flags. 2011-08-26 Steven Abner * libc/time/mktm_r.c (_mktm_r): Fix previous fix. 2011-08-24 Corinna Vinschen * libc/time/mktm_r.c (_mktm_r): Fix computing tm_year. 2011-08-23 Ralf Corsépius * libc/stdlib/putenv_r.c: Use "strchr" instead of obsolete "index". * libc/stdlib/setenv_r.c: Use "memcpy" instead of obsolete "bcopy". 2011-08-23 Ralf Corsépius * libc/misc/ffs.c, libc/string/bcmp.c, libc/string/bcopy.c, libc/string/bzero.c, libc/string/index.c, libc/string/rindex.c, libc/string/strcasecmp.c, libc/string/strncasecmp.c: Let synopsis reference "#include ". 2011-08-23 Ralf Corsépius * libc/posix/regexec.c: Define "nope" only #ifndef NDEBUG. * libc/stdio/vfscanf.c: Define "state" only #ifdef _MB_CAPABLE. * libc/string/wcwidth.c: Include for "iswprint" and "iswcntrl". 2011-08-23 Ralf Corsépius * libc/sys/rtems/include/limits.h: Compute SSIZE_MAX based on __SIZE_MAX__, __SIZEOF_SIZE_T__ and __CHAR_BIT__. 2011-08-22 Ralf Corsépius * libc/string/index.c: Include for "index". * libc/string/rindex.c: Include for "rindex". * libc/string/strcasecmp.c: Include for "strcasecmp". Don't include . * libc/string/strncasecmp.c: Include for "strncasecmp". Don't include . * libc/string/bzero.c: Include for "bzero". Don't include * libc/misc/ffs.c: Include for "ffs". Don't include <_ansi.h>. 2011-08-19 Ralf Corsépius * libc/sys/rtems/crt0.c: Rework RTEMS_STUB macro. Include . Remove C++-style comments. Remove hppa, a29k. Add clock_gettime, gettimeofday, sched_yield. 2011-08-19 Ralf Corsépius * libc/stdio/vasiprintf.c: Include "local.h" for "_svfiprintf_r". * libc/stdio/vasprintf.c Include "local.h" for "_svfprintf_r". * libc/stdio/vsiprintf.c: Include "local.h" for "_svfiprintf_r". * libc/stdio/vsniprintf.c: Include "local.h" for "_svfiprintf_r". * libc/stdio/vsnprintf.c: Include "local.h" for "_svfprintf_r" * libc/stdio/vsprintf.c: Include "local.h" for "_svfprintf_r" 2011-08-19 Ralf Corsépius * libc/string/bcmp.c: Include for "bcmp". * libc/string/bcopy.c: Include for "bcopy". * libc/string/strcasestr.c: Include for "strncasecmp". * libc/time/strptime.c: Include for "strncasecmp". 2011-08-19 Corinna Vinschen * libc/include/process.h: Remove exec family function declarations. Add comment. * libc/include/sys/unistd.h (execlpe): Declare for Cygwin. 2011-08-19 Craig Howland * libc/time/mktime.c (validate_structure): Account for tm_mon possibly being given as negative. (mktime): Set tm_isdst=0 when !daylight. 2011-08-01 Sebastian Huber * libc/include/sys/types.h: XML and RTEMS define _UNIX98_THREAD_MUTEX_ATTRIBUTES and can use the standard definitions. This avoids redefinition warnings. 2011-07-26 Ralf Corsépius * libc/sys/rtems/sys/dirent.h (scandir): Add const to "select" parameter. 2011-07-25 Ralf Corsépius * libc/iconv/iconv.tex: Rename node "Introduction" into "Introduction to iconv". 2011-07-20 Yaakov Selkowitz * libc/include/time.h [_POSIX_CLOCK_SELECTION] (clock_nanosleep): Declare. * libc/include/sys/features.h [__CYGWIN__] (_POSIX_CLOCK_SELECTION): Define. 2011-07-19 Yaakov Selkowitz * libc/include/sys/unistd.h (_CS_XBS5_WIDTH_RESTRICTED_ENVS): Define. (_CS_V6_ENV): Fix definition. 2011-07-19 Ralf Corsépius * libc/locale/lmessages.c (_C_messages_locale): Move __HAVE_LOCALE_INFO_EXTENDED__ before codeset. 2011-07-19 Matt Johnson * libc/reent/sbrkr.c: Define _sbrk_r independently of the definition of MALLOC_PROVIDED. 2011-07-15 Yufeng Zhang * libc/stdio/vfwprintf.c (wcvt): Add a new parameter len of type int. *length is set to the value of (rev - digits) regardless of whether _MB_CAPABLE is defined or not. Replace BUF with len in calling _mbsnrtowcs_r and also in the loop where _MB_CAPABLE is not defined. (_VFWPRINTF_R): Call wcvt with an extra argument. Call wcvt again with allocated new buffer if buf is not large enough for the conversion. * testsuite/newlib.stdio/stdio.exp: New. * testsuite/newlib.stdio/swprintf.c: Likewise. 2011-07-15 Matt Johnson * libc/stdio/fscanf.c (fscanf): Call _vfscanf_r instead of __svfscanf_r to make sure CHECK_INIT is called. (_fscanf_r): Ditto. * /libc/stdio/scanf.c (scanf): Ditto. (_scanf_r): Ditto. * libc/stdio/fwscanf.c (fwscanf): Call _vfwscanf_r instead of __svfwscanf_r to make sure CHECK_INIT is called. (_fwscanf_r): Ditto. * libc/stdio/wscanf.c (wscanf): Ditto. (_wscanf_r): Ditto. 2011-07-13 Hans-Peter Nilsson * libm/complex/cacos.c: Use temporaries and correct sequencing error in previous reordering change. 2011-06-25 Andreas Becker * libc/time/mktime.c (mktime): Lock global timezone info while accessing it. 2011-06-14 Philip Munts * libc/time/asctime_r.c (asctime_r): Replace call to sprintf with call to siprintf. * libc/time/strftime.c: Define snprintf to sniprintf in multibyte case. * libc/time/tzset_r.c: Define sscanf to siscanf. 2011-06-14 Joseph Myers * configure.host: Don't handle ep9312, strongarm, xscale and thumb target names. * libc/machine/configure.in: Don't handle xscale target names. * libc/machine/configure: Regenerate. 2011-06-14 Craig Howland * libc/time/tzset_r.c (tzset_r): Correct behavior for changing from non-GMT to GMT, when un-setting TZ. Set _timezone and _daylight even if no DST is given in TZ. 2011-06-13 Eric Blake * libc/stdio/wsetup.c (__swsetup_r): Set errno on failure. * libc/stdio/fvwrite.c (__sfvwrite_r): Simplify. * libc/stdio/wbuf.c (__swbuf_r): Likewise. * libc/stdio/local.h (cantwrite): Adjust comment. 2011-06-09 Yaakov Selkowitz * libc/include/string.h (strdupa): New macro function. (strndupa): New macro function. 2011-05-27 Nick Clifton * libc/sys/sysnecv850/sbrk.c (_sbrk): Tidy code. Base start of heap on the "heap_start" symbol. 2011-05-25 Eric Blake * libc/string/strerror.c (_strerror_r): Report "Success" for 0. 2011-05-25 Eric Blake * libc/string/strerror.c (strerror): Split body into... (_strerror_r): ...new reentrant function. * libc/string/u_strerr.c (_user_strerror): Update signature. * libc/include/string.h (_strerror_r): New prototype. * libc/posix/collate.c (__collate_err): Adjust callers. * libc/stdio/perror.c (_perror_r): Likewise. * libc/string/strerror_r.c (strerror_r): Likewise. * libc/string/xpg_strerror_r.c (__xpg_strerror_r): Likewise. 2011-05-19 Yaakov Selkowitz * libc/include/stdio_ext.h: New header. * libc/stdio/fpurge.c [!__rtems__] (__fpurge): New function. 2011-05-19 Matthew Gretton-Dann * Makefile.am (install-data-local): Fix condition and rm call. * Makefile.in: Regenerate. 2011-05-16 Yaakov Selkowitz * libc/include/time.h (CLOCK_PROCESS_CPUTIME_ID): Rename from CLOCK_PROCESS_CPUTIME. (CLOCK_THREAD_CPUTIME_ID): Rename from CLOCK_THREAD_CPUTIME. * libc/include/sys/features.h [__CYGWIN__] (_POSIX_CPUTIME): Define. (_POSIX_THREAD_CPUTIME): Define. 2011-05-16 Christian Bruel * libc/stdlib/strtod.c (_strtod_r): Fix nf/nd counts to not exceed DBL_DIG. 2011-05-15 Corinna Vinschen * libc/include/sys/features.h (_POSIX_THREAD_ATTR_STACKADDR): Define to 200112L for Cygwin. 2011-05-12 Peter Rosin * libc/time/strptime.c (strptime): Fill in tm_yday when all of tm_year, tm_mon and tm_mday are updated. Fill in tm_mon, tm_mday and tm_wday when both of tm_year and tm_yday are updated. 2011-05-12 Peter Rosin * libc/time/strptime.c (first_day): Actually return the wday of the first day of the year. 2011-05-10 Corinna Vinschen * libc/locale/lmessages.c (_C_messages_locale): Add missing comma. 2011-05-04 Yaakov Selkowitz * libc/include/signal.h (psignal): Declare. * libc/sys/linux/psignal.c: Move from here... * libc/signal/psignal.c: ... to here. Document. * libc/sys/linux/Makefile.am (GENERAL_SOURCES): Move psignal.c from here... * libc/signal/Makefile.am (LIB_SOURCES): ... to here. (CHEWOUT_FILES): Add psignal.def. * libc/sys/linux/Makefile.in: Regenerate. * libc/signal/Makefile.in: Ditto. * libc/signal/signal.tex: Add references to psignal. 2011-05-04 Corinna Vinschen * libc/locale/lmessages.h (__messages_load_locale): Declare. Remove accidental declaration of __numeric_load_locale. * libc/locale/locale.c: Include timelocal.h to get declaration of __time_load_locale. (__set_locale_from_locale_alias): Fix return type. (__locale_msgcharset): Avoid compiler warnings. (_localeconv_r): Ditto. 2011-05-04 Andy Koppe * libc/locale/locale.c (current_categories): On Cygwin, set LC_CTYPE to C.UTF-8 to match initial __wctomb and __mbtowc settings. (lc_ctype_charset): On Cygwin, initialize to "UTF-8". (loadlocale): Remove unused Cygwin-specifc code. 2011-05-02 Yaakov Selkowitz * libc/include/sys/features.h [__CYGWIN__] (_POSIX_SPIN_LOCKS): Define. * libc/include/sys/types.h: Cygwin provides its own pthread_spinlock_t typedef. 2011-04-19 Corinna Vinschen * libc/include/sys/signal.h (_sig_func_ptr): Define with int parameter per POSIX. Explain in comment. 2011-04-15 Eric Blake * libc/string/strchrnul.c (strchrnul): Fix strchrnul. 2011-03-27 Yaakov Selkowitz * libc/include/string.h (strchrnul): Declare. * libc/string/strchrnul.c: New file. * libc/string/Makefile.am (ELIX_2_SOURCES): Add strchrnul.c. * libc/string/Makefile.in: Regenerate. 2011-03-23 Nick Clifton * libc/machine/frv/setjmp.S: Fix typo in .size directive. 2011-03-21 Kevin Buettner * libc/sys/sysnecv850/trap.S (___trap0): Fix errno handling. * libc/sys/sysnecv850/rename.c: New file. * libc/sys/sysnecv850/Makefile.am (lib_a_SOURCES): Add rename.c * libc/sys/sysnecv850/Makefile.in: Regenerate. * libc/sys/sysnecv850/fstat.c (_fstat): Invoke trap for SYS_fstat. * libc/sys/sysnecv850/unlink.c (_unlink): Invoke trap for SYS_unlink. 2011-03-03 Corinna Vinschen * libc/include/string.h: Include sys/cdefs.h. 2011-03-03 Corinna Vinschen * libc/include/sys/cdefs.h (__CONCAT1): Define. (__CONCAT): Define. (__STRING): Define. (__XSTRING): Define. (__ASMNAME): Define. * libc/include/string.h (strerror_r): Use __ASMNAME to take target specific label prefixes into account. 2011-03-01 Aaron Landwehr * libm/complex/cproj.c: Fix typo. * libm/complex/cprojf.c: Ditto. 2011-02-22 Corinna Vinschen * libc/stdio/fmemopen.c (fmemopen): Fix EINVAL condition. Avoid SEGV if incoming buffer is NULL. 2011-02-09 Eric Blake * libc/include/string.h (strerror_r): Update declaration. * libc/string/strerror.c (strerror): Update documentation. * libc/string/strerror_r.c (strerror_r): Always return NUL-terminated string; don't overwrite too-short buf. * libc/string/xpg_strerror_r.c (__xpg_strerror_r): Implement POSIX variant. * libc/string/Makefile.am (GENERAL_SOURCES): Build new file. * libc/string/Makefile.in: Regenerate. 2011-01-28 Corinna Vinschen * libc/stdio/fclose.c: Only use sfp lock to guard non-atomic changes of flags and fp lock. * libc/stdio/freopen.c: Ditto. * libc/stdio64/freopen64.c: Ditto. * libc/stdio/fgetc.c: Revert change from 2009-04-24, remove sfp locks which guard entire function to avoid potential deadlocks when using stdio functions in multiple thraeds. * libc/stdio/fgets.c: Ditto. * libc/stdio/fgetwc.c: Ditto. * libc/stdio/fgetws.c: Ditto. * libc/stdio/fread.c: Ditto. * libc/stdio/fseek.c: Ditto. * libc/stdio/getc.c: Ditto. * libc/stdio/getdelim.c: Ditto. * libc/stdio/gets.c: Ditto. * libc/stdio/vfscanf.c: Ditto. * libc/stdio/vfwscanf.c: Ditto. * libc/stdio/fflush.c (_fflush_r): Split out core functionality into new function __sflush_r. Just lock file and call __sflush_r from here. * libc/stdio/fwalk.c (_fwalk): Remove static helper function and move functionality back into main function. Don't walk a file with flags value of 1. Add comment. (_fwalk_reent): Ditto. * libc/stdio/local.h (__sflush_r): Declare. * libc/stdio/refill.c (__srefill): Before calling fwalk, set flags value to 1 so this file pointer isn't walked. Revert flags afterwards and call __sflush_r for this fp if necessary. Add comments. 2011-01-27 Corinna Vinschen * libc/include/sys/features.h: Define __STDC_ISO_10646__ for Cygwin. * libc/include/wchar.h: Include features.h. 2011-01-15 Yaakov Selkowitz * libc/include/sys/types.h (ulong): Add typedef. 2011-01-12 Ralf Corsépius * libm/math/w_tgamma.c: Only build ifndef _DOUBLE_IS_32BITS. * libm/math/wf_tgamma.c: Map tgamma to tgammaf, ifdef _DOUBLE_IS_32BITS. 2011-01-12 Jeff Johnston * configure.host: Add noinclude variable to allow specification of header files to remove from installation. * acinclude.m4: Provide NO_INCLUDE_LIST variable based on noinclude variable in configure.host. * configure: Regenerated. * Makefile.am: Remove all header files in NO_INCLUDE_LIST. * Makefile.in: Regenerated. 2011-01-12 Yaakov Selkowitz * libc/sys/linux/sys/signal.h (sig_t): Move from here... * libc/include/signal.h (sig_t): ...to here. 2011-01-10 Corinna Vinschen * libc/machine/mips/strlen.c (strlen): Add delay slot for R3000. 2011-01-10 Joel Sherrill * libc/include/string.h: Make strsignal() available unconditionally. 2011-01-07 Ralf Corsepius * libc/sys/rtems/crt0.c: Adjust free() and calloc() to match their public decls. 2011-01-05 Ralf Corsepius * Makefile.am: Move cleaning targ-include to clean-local. * Makefile.in: Regenerate. 2011-01-05 Ralf Corsepius * libc/stdio/open_memstream.c (internal_open_memstream_r): Don't limit c->max to 64*1024 on targets with SIZE_MAX < 64*1024. 2011-01-05 Ralf Corsepius * libc/xdr/xdr.c: Fix typos in #errors. 2011-01-05 Ralf Corsepius * libc/xdr/xdr_private.h: Include * libc/xdr/xdr_rec.c: Include limits.h 2011-01-05 Ralf Corsepius * libc/Makefile.am (SUBDEFS): Remove redundant posix/stmp-def. * libc/Makefile.in: Regenerate. 2011-01-05 Ralf Corsepius * libc/configure.in: Remove redundant posix_dir processing. * libc/configure: Regenerate. 2010-12-31 Ralf Corsepius * MAINTAINERS: Change corinna@vinchen.de to corinna@vinschen.de. 2010-12-26 Christopher Faylor * libc/include/sys/errno.h (program_invocation_name): Declare. (program_invocation_short_name): Ditto. 2010-12-16 Jeff Johnston * NEWS: Update with 1.19.0 info. * README: Ditto. * MAINTAINERS: Update. * acinclude.m4: Change version number to 1.19.0. * aclocal.m4: Regenerated. * configure: Ditto. * Makefile.am: Fix stmp-targ-include target. * Makefile.in: Regenerated. * doc/aclocal.m4: Ditto. * doc/configure: Ditto. * libc/*/aclocal.m4: Ditto. * libc/*/configure: Ditto. * libc/libc.texinfo: Ditto. * libm/*/aclocal.m4: Ditto. * libm/*/configure: Ditto. * libm/libm.texinfo: Ditto. * libc/sys/linux/shared.ld: Add VERS_1.19 2010-12-14 Jeff Johnston * Makefile.am: Add support to copy all sub-directories of the sys/SYS_DIR/include directory, if they contain header files. * Makefile.in: Regenerated. 2010-12-08 Jeff Johnston * libm/mathfp/sf_logarithm.c: Change isfinitef reference to isfinite. 2010-12-08 Ralf Corsepius * include/sys/types.h: Add #if defined(__rtems__) around pthread_attr_t.guardsize. 2010-12-08 Joel Sherrill * include/pthread.h: Add pthread_attr_setstack, pthread_attr_getstack, pthread_attr_getguardsize, pthread_attr_setguardsize. * include/sys/types.h (pthread_attr_t): Add guardsize. 2010-12-08 Corinna Vinschen * libc/include/strings.h: Don't include locale.h. 2010-12-07 Eric Blake * libc/include/strings.h: Don't declare removed functions when requesting POSIX 2008 compliance. 2010-12-07 Jeff Johnston * libc/stdlib/strtod.c (_strtod_r): Fix code to handle case whereby _DOUBLE_IS_32BITS is set and DBL_DIGS is 6 instead of 15. 2010-12-07 Ralf Corsépius * libc/include/strings.h: New (split-out from string.h). 2010-12-03 Craig Howland * libc/include/math.h: Missing from previous checkin. 2010-12-02 Craig Howland * libm/common/s_log2.c: Change from using M_LOG2_E to M_LN2 define (from math.h--the latter is POSIX, the former non-standard). * libm/common/sf_log2.c: Ditto. Change cast for M_LN2 from float to float_t (in case all math not done in float). * libc/include/math.h: Ditto (same 2 things as sf_log2.c). 2010-12-02 Jayant Sonar jayant.sonar@kpitcummins.com Kaushik Phatak kaushik.phatak@kpitcummins.com * configure.host: Add CR16 support. * libc/include/machine/ieeefp.h: Ditto. * libc/include/machine/setjmp.h: Ditto. * libc/include/sys/config.h: Ditto. * libc/machine/configure.in: Ditto * libc/machine/configure: Regenerated * libc/machine/cr16/aclocal.m4: New. * libc/machine/cr16/configure.in: New * libc/machine/cr16/configure: New * libc/machine/cr16/getenv.c: New * libc/machine/cr16/Makefile.am: New * libc/machine/cr16/Makefile.in: New * libc/machine/cr16/setjmp.S: New * libc/machine/cr16/sys/asm.h: New * libc/machine/cr16/sys/libh.h: New * libc/machine/cr16/sys/syscall.h: New 2010-11-29 Ralf Corsépius * libm/complex/catan.c, libm/complex/catanf.c, libm/complex/ctan.c, libm/complex/ctanf.c: Use HUGE_VAL instead of MAXNUM. 2010-11-25 Ralf Corsépius * libm/complex/cargf.c: Use crealf instead of creal. 2010-11-19 Andy Koppe * libc/locale/locale.c (loadlocale): Recognise the "cjknarrow" modifier on "C." locales too. 2010-11-18 Andy Koppe * libc/locale/locale.c (loadlocale): Fix width of CJK ambigous characters to 1 for singlebyte charsets and 2 for non-Unicode multibyte charsets. Change documentation accordingly. 2010-11-17 Bernd Schmidt * configure.host (newlib_cflags): For tic6x, add -DCLOCK_PROVIDED. 2010-11-16 Andrew Makhorin * libc/machine/i386/setjmp.S (longjmp): Per POSIX, return 1 if second argument is 0. 2010-11-16 Ralf Corsépius * libc/include/sys/types.h: Add _mode_t for __rtems__. * libc/sys/rtems/machine/_types.h: Provide _mode_t, _fpos_t, _off_t. Add _ssize_t for 64bit sparc. Let arm, i386, m68k, mips, PPC, sparc use 64bit _off_t, _fpos_t. 2010-11-16 Ralf Corsépius * configure.host: Add -D_COMPILING_NEWLIB to newlib_cflags. 2010-11-04 Ralf Corsépius * libm/complex/cacos.c: Reorder function calls to work around ICE in arm/thumb-gcc. 2010-10-27 Maurice Baijens * libc/stdlib/strtol.c: Make sure signed characters are not sign-extended when converted to int and passed to ctype macros. * libc/stdlib/strtoul.c: Ditto. * libc/stdlib/strtoll_r.c: Ditto. * libc/stdlib/strtoull_r.c: Ditto. 2010-10-18 Marco Atzeri * libm/Makefile.am: added complex functions documentation * libm/libm.texinfo: ditto * libm/complex/Makefile.am: Ditto * libm/complex/complex.tex: Ditto * libm/complex/(cabs.c, cacos.c, cacosh.c, carg.c, casin.c, casinh.c, catan.c, catanh.c, ccos.c, ccosh.c, cexp.c, cimag.c, clog.c, conj.c, cpow.c, cproj.c, creal.c, csin.c, csinh.c, csqrt.c, ctan.c, ctanh.c): Ditto * libm/Makefile.in: Regenerate * libm/complex/Makefile.in: Ditto 2010-10-14 Craig Howland * libc/include/math.h: Delete cabs() and cabs() prototypes (c.f. 2010-10-08 change by Corinna). 2010-10-08 Bernd Schmidt Joseph Myers * configure.host: Handle tic6x targets. * libc/include/machine/ieeefp.h: Define endianness for C6X. * libc/include/machine/setjmp.h: Add __TMS320C6X__ case. * libc/machine/configure.in: Handle tic6x targets. * libc/machine/configure: Regenerate. * libc/machine/tic6x/Makefile.am, libc/machine/tic6x/configure.in, libc/machine/tic6x/setjmp.S: New. * libc/machine/tic6x/Makefile.in, libc/machine/tic6x/aclocal.m4, libc/machine/tic6x/configure: New (generated). 2010-10-08 Ralf Corsépius * libc/include/sys/unistd.h: Declare getsid, setegid, seteuid for RTEMS. 2010-10-08 Ralf Corsépius * libm/common/sf_llrint.c, libm/common/sf_round.c: Add explicit casts to __uint32_t to avoid overflows on implicit casts. 2010-10-08 Ralf Corsépius * libm/complex/complex.tex: Add empty stub. 2010-10-08 Corinna Vinschen * libm/math/w_cabs.c: Delete. * libm/math/wf_cabs.c: Delete. * libm/math/Makefile.am (src): Remove w_cabs.c. (fsrc): Remove wf_cabs.c. * libm/math/Makefile.in: Regenerate. 2010-10-08 Marco Atzeri * libc/include/complex.h: New complex header. * libm/common/fdlibm.h: Added ifdef _COMPLEX_H. * libm/complex/*: New complex functions imported from NetBSD. * libm/Makefile.am: Added complex subdir. * libm/Makefile.in: Regenerate. * libm/configure.in: Added complex subdir. * libm/configure: Regenerate. 2010-10-06 Eric Blake * lib/str-two-way.h (two_way_long_needle): Avoid bug with long periodic needle having false positive. Affects memmem, strstr, strcasestr. 2010-09-21 Craig Howland * libc/string/memcpy.c: Do not assign size_t parameter to int. Use parameter directly, instead. * libc/string/memccpy.c: Likewise. * libc/string/mempcpy.c: Likewise. * libc/string/memmove.c: Likewise. 2010-09-09 Kevin Buettner * libc/sys/sysnecv850/Makefile.am (lib_a_SOURCES): Provide an empty definition. * libc/sys/sysnecv850/Makefile.in: Regenerate. 2010-08-25 Sebastian Huber * libc/posix/opendir.c (opendir): Fix potential memory leak. 2010-08-10 Yaakov Selkowitz * libc/include/sys/dir.h: New BSD-compatibility header. 2010-08-02 Yaakov Selkowitz * libc/include/sys/features.h: Define _POSIX_MONOTONIC_CLOCK for Cygwin. 2010-08-06 Corinna Vinschen * libc/include/sys/stat.h: Move all POSIX-defined symbolic constants out of `#ifndef _POSIX_SOURCE' guard. 2010-08-03 Craig Howland * libm/common/s_lrint.c (lrint): Annotate shift operations with possible shift amount ranges, and use SAFE_RIGHT_SHIFT to avoid undefined behaviour. * libm/common/s_llrint.c (llrint): Likewise. * libm/common/s_lround.c (lround): Correct some comments on ranges. * libm/common/s_llround.c (llround): Likewise. 2010-07-30 Anthony Green * libc/sys/rtems/machine/_types.h: Add moxie support. 2010-07-23 Naveen.H.S Gina Verlekar * configure.host: Compact v850* support and add check for newlib_may_supply_syscalls. * libc/sys/sysnecv850/Makefile.am: Add support for '--disable-newlib-supplied-syscalls' option. * libc/sys/sysnecv850/Makefile.in: Regenerated. 2010-07-20 Dave Korn * libm/common/fdlibm.h (SAFE_LEFT_SHIFT): New macro definition. (SAFE_RIGHT_SHIFT): Likewise. * libm/common/s_llround.c (llround): Annotate shift operations with possible shift amount ranges, and use SAFE_RIGHT_SHIFT to avoid undefined behaviour. * libm/common/s_lround.c (lround): Likewise. 2010-07-19 Eric Blake * libc/stdio/mktemp.c (_gettemp): Add parameter, all callers changed. (mkostemp, _mkostemp_r, mkostemps, _mkostemps_r): New interfaces, for ELIX level 4. * libc/include/stdlib.h (mktemp): Avoid namespace issues. (mkostemp, mkostemps): Declare. 2010-07-13 Corinna Vinschen * libc/include/signal.h (sighandler_t): Only define if _POSIX_SOURCE is undefined. 2010-07-06 Corinna Vinschen * libc/posix/rewinddir.c (rewinddir): Remove incorrect cast to off_t. * libc/sys/rtems/sys/dirent.h (_seekdir): Add prototype. * libc/sys/linux/sys/dirent.h (_seekdir): Fix prototype to use long rather than off_t. 2010-07-01 Yaakov Selkowitz * libc/include/signal.h (sighandler_t): Add typedef. 2010-06-29 Antony King * libc/ctype/ctype_.c (__ctype_ptr): Reinstate definition (guarded by _NEED_OLD_CTYPE_PTR_DEFINITION) for backwards compatibility with newlib 1.16.0 and earlier. 2010-06-28 Yaakov Selkowitz * libc/include/sys/stat.h: Add ACCESSPERMS, ALLPERMS, and DEFFILEMODE. 2010-06-18 Pavel Pisa * libc/include/machine/ieeefp.h[__arm__][!__VFP_FP__]: Set to __IEEE_BIG_ENDIAN and set __IEEE_BYTES_LITTLE_ENDIAN appropriately based on __ARMEL flag. * libc/include/machine/endian.h: To set byte order to LITTLE_ENDIAN, check for __IEEE_LITTLE_ENDIAN or __IEEE_BYTES_LITTLE_ENDIAN. 2010-06-09 Paul Brook * libc/include/sys/reent.h (_reent): Adjust _REENT_SMALL to be binary compatible with normal layout. (_REENT_INIT): Adjust to match struct layout. 2010-06-08 Jeff Johnston * libc/include/wordexp.h: Add __cplusplus wrapper. 2010-06-08 Jeff Johnston * configure.in: Add test for enable-newlib-register-fini to set the _WANT_REGISTER_FINI flag. * configure: Regenerated. * Makefile.in: Ditto. * newlib.hin: Add _WANT_REGISTER_FINI flag. * libc/stdlib/__call_atexit.c: Add test for _WANT_REGISTER_FINI to enable the register_fini function. 2010-06-04 Mark Mitchell * libc/stdlib/__call_atexit.c (__libc_fini): Declare. (register_fini): New function. * libc/misc/init.c (_fini): Remove. (__libc_fini_array): Likewise. * libc/misc/fini.c: New file. * libc/misc/Makefile.am (LIB_SOURCES): Add fini.c. * libc/misc/Makefile.in: Regenerate. 2010-05-31 Kazu Hirata * libc/stdlib/mallocr.c (malloc_extend_top): Backport the difference between versions 2.6.4 and 2.6.5. 2010-05-18 Christopher Faylor * libc/string/strsignal.c (strsignal): Avoid duplicate case statement where SIGPWR == SIGLOST. 2010-05-11 Jeff Johnston * libc/stdlib/__call_atexit.c: Fix lock to be of type _LOCK_RECURSIVE_T as recursive usage is needed. 2010-05-11 Jeff Johnston * libc/locale/locale.c (loadlocale): Fix dangling switch statement caused by __HAVE_LOCALE_INFO__ not being defined. 2010-05-11 Joel Sherrill * libc/string/strsignal.c: New file. * libc/string/Makefile.am: Add support for strsignal. * libc/string/strings.tex: Ditto. * libc/string/Makefile.in: Regenerated. 2010-05-05 DJ Delorie * libc/Makefile.am (stmp-sigset, stmp-iconvset, stmp-extra, stmp-stdio64, stmp-posix,stmp-targetdep): Use unique temporary file names to allow for parallel installs. (CLEANFILES): Add new temporary file names. * libc/Makefile.in: Regenerate. 2010-05-03 Corinna Vinschen * libc/locale/lctype.c: Include and "setlocale.h". (_C_ctype_locale): Add braces to initializer. (__ctype_load_locale): Fix compiler warnings in non-Cygwin case. * libc/locale/nl_langinfo.c (nl_langinfo): Expose _NL_CTYPE_MB_CUR_MAX case only if __HAVE_LOCALE_INFO__ is defined. 2010-05-02 Corinna Vinschen * libc/stdlib/wctob.c (wctob): Reorganize and fix WEOF check. Rename pwc to pmb and convert to array to avoid buffer overflow. Rename c to wc. Check wc for WEOF instead of for EOF. Return first byte of pmb if __wctomb conversion returned exactly one byte, EOF otherwise. 2010-04-30 Corinna Vinschen * libc/include/langinfo.h: Fix #endif positioning. 2010-04-28 Corinna Vinschen Extend locale support to maintain wide char values of native strings if __HAVE_LOCALE_INFO_EXTENDED__ is defined. * libc/include/langinfo.h (enum __nl_item): New type. Define all native values accessible through nl_langinfo. Define previously existing POSIX-compatible values as macros as well. * libc/include/stdlib.h (__mb_cur_max): Drop declaration. (__locale_mb_cur_max): Declare. (MB_CUR_MAX): Re-define calling __locale_mb_cur_max. * libc/locale/Makefile.am (ELIX_SOURCES): Add lctype.c. * libc/locale/Makefile.in: Regenerate. * libc/locale/lctype.c: New file to define and load LC_CTYPE category. * libc/locale/lctype.h: New file, matching header. * libc/locale/lmessages.c (_C_messages_locale): Add default values for wide char members. (__messages_load_locale): Add _C_messages_locale in call to __set_lc_messages_from_win. * libc/locale/lmessages.h (struct lc_messages_T): Add wide char members. * libc/locale/lmonetary.c (_C_monetary_locale): Add default values for wide char members. (__monetary_load_locale): Add _C_monetary_locale in call to __set_lc_monetary_from_win. * libc/locale/lmonetary.h (struct lc_monetary_T): Add wide char members. Add numerical values for international currency formatting per POSIX-1.2008, if __HAVE_LOCALE_INFO_EXTENDED__ is defined. * libc/locale/lnumeric.c (_C_numeric_locale): Add default values for wide char members. (__numeric_load_locale): Add _C_numeric_locale in call to __set_lc_numeric_from_win. * libc/locale/lnumeric.h (struct lc_numeric_T): Add wide char members. * libc/locale/locale.c (loadlocale): Return doing nothing if category locale didn't change. Convert category if chain to switch statement. Call __ctype_load_locale in LC_CTYPE case. (__locale_charset): Add (but disable for now) returning codeset from __get_current_ctype_locale. (__locale_mb_cur_max): Add (but disable for now) returning mb_cur_max from __get_current_ctype_locale. (__locale_msgcharset): Add returning codeset from __get_current_messages_locale. (_localeconv_r): Accommodate int_XXX values. * libc/locale/nl_langinfo.c (nl_ext): New array to define what is to be returned for non-POSIX values. (nl_Langinfo): Return correct codeset for each locale category. Return extended values if __HAVE_LOCALE_INFO_EXTENDED__ is defined. * libc/locale/timelocal.c (_C_time_locale): Add default values for wide char members. (__time_load_locale): Add _C_time_locale in call to __set_lc_time_from_win. * libc/locale/timelocal.h (struct lc_time_T): Add wide char members. * libc/stdio/vfwprintf.c (_VFWPRINTF_R): Use wide char decimal point and thousands_sep if __HAVE_LOCALE_INFO_EXTENDED__ is defined. * libc/time/strftime.c: Rework to accommodate availability of wide char strings in LC_TIME category if __HAVE_LOCALE_INFO_EXTENDED__ is defined. 2010-04-22 DJ Delorie * libc/Makefile.am (SUBDEFS): Add LIBC_POSIX_DEF. (libc.info): Add posix.texi. (libc.dvi): Likewise. (stmp-posix): New. (posix.texi): New. (libc_TEXINFOS): Add posix.texi. * libc/configure.in (LIBC_POSIX_LIB, LIBC_POSIX_DEF): Add tests. * libc/libc.texinfo: Include posix.texi * libc/locale/locale.c: Fix texinfo typo. * libc/time/strftime.c: Fix texinfo typo. * libc/configure: Regenerate. * libc/Makefile.in: Regenerate. * libc/argz/Makefile.in: Regenerate. * libc/ctype/Makefile.in: Regenerate. * libc/errno/Makefile.in: Regenerate. * libc/iconv/Makefile.in: Regenerate. * libc/iconv/ccs/Makefile.in: Regenerate. * libc/iconv/ccs/binary/Makefile.in: Regenerate. * libc/iconv/ces/Makefile.in: Regenerate. * libc/iconv/lib/Makefile.in: Regenerate. * libc/locale/Makefile.in: Regenerate. * libc/misc/Makefile.in: Regenerate. * libc/posix/Makefile.in: Regenerate. * libc/reent/Makefile.in: Regenerate. * libc/search/Makefile.in: Regenerate. * libc/signal/Makefile.in: Regenerate. * libc/stdio/Makefile.in: Regenerate. * libc/stdio64/Makefile.in: Regenerate. * libc/stdlib/Makefile.in: Regenerate. * libc/string/Makefile.in: Regenerate. * libc/syscalls/Makefile.in: Regenerate. * libc/time/Makefile.in: Regenerate. * libc/unix/Makefile.in: Regenerate. * libc/xdr/Makefile.in: Regenerate. 2010-04-06 Dave Korn * libc/stdlib/__atexit.c (__atexit_lock): Initialise as recursive rather than non-recursive lock type. (__register_exitproc): Use recursive locking APIs on it. * libc/stdlib/__call_atexit.c (__call_exitprocs): Likewise. 2010-04-06 Corinna Vinschen * libc/stdlib/btowc.c (btowc): Reorganize EOF check. Fix incorrect return value if input byte is ASCII NUL. 2010-04-01 Joel Sherrill * libc/include/sched.h: Include prototypes for sched_* methods. * libc/include/sys/sched.h: Update to POSIX 1003.1b-2008. Rework constants to allow sharing between RTEMS and Cygwin. 2010-03-27 Corinna Vinschen * libc/locale/locale.c (loadlocale): Optimize "EUC" charset check. Cygwin only: Allow GB2312 and EUC-CN as alternative codeset names for GBK. Add to documentation. * libc/locale/nl_langinfo.c (nl_langinfo): On Cygwin, translate EUCCN to GB2312. 2010-03-17 Craig Howland * libc/include/sys/features.h: Allow for _XOPEN_SOURCE to have an empty definition. Also add support for values of 500 or less. 2010-03-09 Jeff Johnston * libc/posix/telldir.c (dd_loccnt): Change start index to be 1 instead of 0. (_seekdir): A loc of 0 now means rewind dir. 2010-03-08 Craig Howland * libm/common/s_rint.c: Fix error when integral part had 18 bits and fraction had bits set beyond first radix bit. Also, make 2-part adjustment consistent with 1-part adjustment when adjusting fractional bits. * libm/common/sf_rint.c: Make fractional-bit adjustment consistent with s_rint.c by setting 0b.01 instead of 0b.001. 2010-03-05 Craig Howland * libm/math/ef_sqrt.c: Delete unused variable sign. * libc/stdlib/getenv.c: Delete "char *_findenv_r ();", as is not a proper prototype, and is properly prototyped in stdlib.h, anyway. * libc/stdlib/getenv_r.c: Ditto. * libc/search/hash.c: Add _DEFUN to __hash_open() declaration; add #define __DBINTERFACE_PRIVATE to activate prototypes from db_local.h. * libc/search/db_local.h: Correct __hash_open() prototype. * libc/sys/linux/cmath/math_private.h: Eliminate compiler warnings: Remove #define INFINITY (redefines from math.h); remove #define __isnanf and #define __isinff isinff. 2010-03-02 Craig Howland * libc/include/sys/features.h: Add POSIX.1-permitted definition of _POSIX_C_SOURCE if not already defined and _XOPEN_SOURCE has an appropriate value. Specifically, check for POSIX.1-2008 & 2001 values. * libc/include/sys/config.h: Add #include so that all includes get the new check added to it. 2010-03-02 Charles Wilson * libc/xdr/README: Correct grammatical errors. * libc/include/rpc/types.h: Add public types used by RPC implementations. * libc/include/rpc/xdr.h: Add defines used by RPC implementations. * libc/xdr/Makefile.am: Eliminate automake warning. * libc/xdr/Makefile.in: Regenerate. 2010-03-02 Corinna Vinschen * libc/xdr/Makefile.in: Regenerate. 2010-03-02 Charles Wilson Add eXtensible Data Record (XDR) support * configure.host: Build libc/xdr only on cygwin. * Makefile.am: Install xdr headers. * libc/configure.in: Support new libc/xdr subdirectory. * libc/Makefile.am: Support new libc/xdr subdirectory. * libc/include/rpc/types.h: New. * libc/include/rpc/xdr.h: New. * libc/xdr/README: New. * libc/xdr/Makefile.am: New. * libc/xdr/dummy.c: New. * libc/xdr/xdr.c: New. * libc/xdr/xdr_array.c: New. * libc/xdr/xdr_float.c: New. * libc/xdr/xdr_float_vax.c: New. * libc/xdr/xdr_mem.c: New. * libc/xdr/xdr_private.c: New. * libc/xdr/xdr_private.h: New. * libc/xdr/xdr_rec.c: New. * libc/xdr/xdr_reference.c: New. * libc/xdr/xdr_sizeof.c: New. * libc/xdr/xdr_stdio.c: New. Regenerate using ac-2.63 and am-1.11.1 * libc/xdr/Makefile.in: New. * Makefile.in: Regenerate. * libc/configure: Regenerate. * libc/Makefile.in: Regenerate. * libc/argz/Makefile.in: Regenerate. * libc/ctype/Makefile.in: Regenerate. * libc/errno/Makefile.in: Regenerate. * libc/iconv/ccs/binary/Makefile.in: Regenerate. * libc/iconv/ccs/Makefile.in: Regenerate. * libc/iconv/ces/Makefile.in: Regenerate. * libc/iconv/lib/Makefile.in: Regenerate. * libc/iconv/Makefile.in: Regenerate. * libc/locale/Makefile.in: Regenerate. * libc/misc/Makefile.in: Regenerate. * libc/posix/Makefile.in: Regenerate. * libc/reent/Makefile.in: Regenerate. * libc/search/Makefile.in: Regenerate. * libc/signal/Makefile.in: Regenerate. * libc/stdio/Makefile.in: Regenerate. * libc/stdio64/Makefile.in: Regenerate. * libc/stdlib/Makefile.in: Regenerate. * libc/string/Makefile.in: Regenerate. * libc/syscalls/Makefile.in: Regenerate. * libc/time/Makefile.in: Regenerate. * libc/unix/Makefile.in: Regenerate. 2010-02-26 Craig Howland * libm/common/s_ilogb.c: Fix typo in comments that causes doc generation to fail. 2010-02-26 Corinna Vinschen * libc/time/strftime.c: Add support for era and alt_digits data from LC_TIME locale category. Conditionalize using _WANT_C99_TIME_FORMATS flag. (STRTOUL): Define differently for building strftime or wcsftime. (STRCPY): Ditto. (STRCHR): Ditto. (STRLEN): Ditto. (CHECK_LENGTH): Define to simplify code. (era_info_t): New type to store era info. (get_era_info): New function to fetch era info matching incoming struct tm. (free_era_info): New function to free era info. (alt_digits_t): New type to store alternative digits. (get_alt_digits): New function to convert alt_digits string into alt_digits_t structure. (free_alt_digits): New function to free alt_digits info. (conv_to_alt_digits): New function to convert unsigned value into alternative digits. (strftime): Conditionalize on _WANT_C99_TIME_FORMATS. If _WANT_C99_TIME_FORMATS is defined, define as just a wrapper function providing era_info and alt_digits pointers and call ... (__strftime): Rename from strftime and make static if _WANT_C99_TIME_FORMATS is defined. Add parameters for era_info and alt_digits pointers. Handle conversion modifiers according to POSIX-1.2008. Redefine %F and %Y according to POSIX. Add default case to allow to bail out on invalid conversion specifiers. * libc/include/sys/config.h: Move Cygwin build flags to Cygwin's config.h. * libc/include/stdio.h: Remove __CYGWIN_USE_BIG_TYPES__ condition. 2010-02-25 Corinna Vinschen * libc/locale/locale.c (loadlocale): Fix typo in comment. 2010-02-25 Corinna Vinschen * libc/locale/locale.c: Throughout, extensively comment on the reason for using __CYGWIN__. (lconv): Remove _CONST entirely. (loadlocale): Guard calls to function loading locale-specific category data with __HAVE_LOCALE_INFO__ rather than __CYGWIN__. * libc/sys/config.h (__HAVE_LOCALE_INFO__): Define for Cygwin. 2010-02-24 Charles Wilson <...> Work around issues with new libtool files in .. * configure.in: Unconditionally call _LT_PROG_ECHO_BACKSLASH. * iconvdata/configure.in: Ditto. * libc/configure.in: Ditto. * libc/machine/configure.in: Ditto. * libc/machine/i386/configure.in: Ditto. * libc/sys/configure.in: Ditto. * libc/sys/linux/configure.in: Ditto. * libc/sys/linux/linuxthreads/configure.in: Ditto. * libc/sys/linux/linuxthreads/machine/configure.in: Ditto. * libc/sys/linux/linuxthreads/machine/i386/configure.in: Ditto. * libc/sys/linux/machine/configure.in: Ditto. * libc/sys/linux/machine/i386/configure.in: Ditto. * libm/configure.in: Ditto. * libm/machine/configure.in: Ditto. * libm/machine/i386/configure.in: Ditto. * libc/machine/sh/configure.in: Ditto. Also, call AC_NO_EXECUTABLES before NEWLIB_CONFIGURE. * aclocal.m4: Regenerated. * configure: Ditto. * Makefile.in: Ditto. * doc/aclocal.m4: Ditto. * doc/Makefile.in: Ditto. * libc/*/aclocal.m4: Ditto. * libc/*/Makefile.in: Ditto. * libc/*/configure: Ditto. * libm/*/aclocal.m4: Ditto. * libm/*/Makefile.in: Ditto. * libm/*/configure: Ditto. 2010-02-24 Jeff Johnston * libc/stdlib/__call_exit.c: Add include of sys/lock.h. 2010-02-23 Jeff Johnston * libc/include/sys/types.h: Fix __XMK__ sectioning and remove redundant code section for __XMK__. 2010-02-22 Corinna Vinschen * libc/include/langinfo.h (_NL_TIME_DATE_FMT): Define new nl_item value for LC_TIME entry date_fmt. (_DATE_FMT): Define "official" GNU name same as _NL_TIME_DATE_FMT. * libc/locale/nl_langinfo.c (nl_langinfo): Add case for _DATE_FMT. 2010-02-18 Corinna Vinschen * libc/ctype/iswalpha.c (iswalpha): Update to Unicode 5.2. * libc/ctype/iswprint.c (iswprint): Ditto. * libc/ctype/iswpunct.c (iswpunct): Drop standalone implementation. Define in terms of other wctype functions instead. * libc/ctype/towlower.c (towlower): Update to Unicode 5.2. Add comment to explain how to fetch the data from the Unicode database. * libc/ctype/towupper.c (towupper): Ditto. * libc/ctype/utf8alpha.h: Ditto. * libc/ctype/utf8print.h: Ditto. * libc/ctype/utf8punct.h: Remove. * libc/ctype/iswcntrl.c (iswcntrl): Add comment to explain how to fetch the data from the Unicode database. 2010-02-18 Corinna Vinschen * libc/locale/timelocal.h (struct lc_time_T): Add missing ERA-related members. * libc/locale/timelocal.c (_C_time_local): Set new members to empty strings. * libc/locale/nl_langinfo.c (nl_langinfo): Return values from __get_current_time_locale() for ERA related requests. 2010-02-16 Corinna Vinschen * libc/ctype/iswblank.c (iswblank): Remove Unicode characters U+00A0 and U+200B. Add Unicode character U+180E. Add comment to explain how to generate from Unicode data file. * libc/ctype/iswspace.c (iswspace): Ditto. 2010-02-15 Corinna Vinschen * libc/stdio/vfwprintf.c (_VFWPRINTF_R): Apply previous patch here as well. 2010-02-15 Corinna Vinschen * libc/stdio/vfprintf.c (_VFPRINTF_R): Drop printing a redundant decimal point in case the float argument is an integral value. 2010-02-11 Craig Howland * libc/include/machine/ieeefp.h: isfinite macro modified to run faster by only calling fpclassify once instead of possibly twice. 2010-02-11 Craig Howland * libm/common/s_ilogb.c: Adjust documentation to reflect new returns (see next items) and that ilogb() and ilogbf() are C99/POSIX. * libm/common/s_ilogb.c (ilogb): Use C99/POSIX FP_ILOGB0 and FP_ILOGBNAN returns for 0 and NAN arguments, respectively, instead of the prior -INT_MAX and INT_MAX. The FP_ILOGBx defines in math.h presently match the prior hard-codes, so no functional change is actually introduced. (Not at this time, nor planned, but the values are permitted to be different, so subsequent edits of math.h could possibly cause a functional change.) * libm/common/sf_ilogb.c (ilogbf): Ditto. 2010-02-09 Daniel Gutson * libc/machine/arm/arm_asm.h (_ISA_THUMB_2): __ARM_ARCH_7EM__ added to the preprocessor condition. 2010-02-09 Corinna Vinschen * libc/locale/lmessages.c (__messages_load_locale): Take additional parameters for wide char to multibyte conversion. Call __set_lc_messages_from_win on Cygwin. * libc/locale/lmessages.h: Make C++-safe. (__messages_load_locale): Change declaration. * libc/locale/lmonetary.c (__monetary_load_locale): Use _monetary_locale_buf as buffer pointer. * libc/locale/lnumeric.c (__numeric_load_locale): Use _numeric_locale_buf as buffer pointer. * libc/locale/timelocal.c (__time_load_locale): Use time_locale_buf as buffer pointer. * libc/locale/locale.c (loadlocale): Enable loading LC_MESSAGES data on Cygwin. 2010-02-08 Josef Wolf * libc/machine/m68k/memcpy.S: MISALIGEND_OK should not be set for __mcpu32__. 2010-02-07 Corinna Vinschen * libc/locale/locale.c: Add Cygwin's /usr/share/locale/locale.alias support to documentation. (__set_locale_from_locale_alias): Declare when build for Cygwin. (loadlocale): On Cygwin, if locale can't be recognized, call __set_locale_from_locale_alias to check for locale alias. Define FAIL macro to replace `return NULL' statements. Replace throughout. 2010-02-07 Corinna Vinschen * libc/locale/locale.c: Fix typo in documentation. Remove useless _MB_CAPABLE guards within other _MB_CAPABLE guards. Add comment to remaining #endif's. 2010-02-06 Corinna Vinschen * libc/ctype/ctype_cp.h (_CTYPE_GEORGIAN_PS_128_254): Define. (_CTYPE_GEORGIAN_PS_255): Define. (_CTYPE_PT154_128_254): Define. (_CTYPE_PT154_255): Define. (__ctype_cp): Add array members for above ctype definitions. * libc/locale/locale.c (loadlocale): Make TIS-620 charset name available for all targets. Add guards for setting the conversion function pointers. Add support for GEORGIAN-PS and PT154 charsets. Change documentation to reflect current behaviour more closely. * libc/locale/nl_langinfo.c (nl_langinfo): On Cygwin, translate "CP101" to "GEORGIAN-PS" and "CP102" to "PT154". * libc/stdlib/sb_charsets.c (__cp_conv): Add conversion arrays for GEORGIAN-PS and PT154. (__cp_index): Map invalid Windows codepage number 101 to GEORGIAN-PS conversion array, 102 to PT154 conversion array. 2010-02-06 Ralf Corsepius * libc/posix/telldir.c: Remove bogus nested prototype of lseek(). 2010-02-05 Corinna Vinschen * libc/locale/locale.c (loadlocale): Handle ISO-8859 and KOI8 charsets so that the dashes are optional. Align documentation. 2010-02-05 Corinna Vinschen * libc/stdio/vfprintf.c: Include locale.h also if _WANT_IO_C99_FORMATS is defined. Raise conversion buffer size to make sure it has enough room for numbers plus grouping character. Define GROUPING flag. (_VFPRINTF_R): Add PRINTANDPAD macro. Handle grouping flag character. Handle grouping for decimal integer and float values. * libc/stdio/vfwprintf.c: Ditto. 2010-02-01 Christopher Faylor * libc/stdlib/__atexit.c (__atexit_lock): Define a global lock for atexit functions. (__register_exitproc): Use __atexit_lock rather than a local static lock. * libc/stdlib/__call_atexit.c: Ditto. 2010-01-29 Jeff Johnston * libc/search/Makefile.am: Create .def files for bsearch and qsort. * libc/search/Makefile.in: Regenerated. * libc/stdlib/stdlib.tex: Add bsearch and qsort. 2010-01-24 Corinna Vinschen * libc/locale/nl_langinfo.c (nl_langinfo): Return "CP932" when using SJIS on Cygwin. Explain why. 2010-01-23 Corinna Vinschen * libc/locale/locale.c (loadlocale): Allow CP932 as alias for SJIS. Add to documentation. Add a few comments to #endif's for Cygwin. 2010-01-23 Corinna Vinschen * libc/locale/locale.c (loadlocale): Disable JIS entirely on Cygwin. Allow TIS620 and TIS-620 as aliases for CP874 on Cygwin. 2010-01-22 Corinna Vinschen * libc/locale/lmonetary.c (__monetary_load_locale): Take additional parameters for wide char to multibyte conversion. Call __set_lc_monetary_from_win on Cygwin. * libc/locale/lmonetary.h: Make C++-safe. (__monetary_load_locale): Change declaration. * libc/locale/lnumeric.c (__numeric_load_locale): Take additional parameters for wide char to multibyte conversion. Call __set_lc_numeric_from_win on Cygwin. * libc/locale/lnumeric.h: Make C++-safe. (__numeric_load_locale): Change declaration. * libc/locale/locale.c (lconv): De-constify for Cygwin. (__set_charset_from_locale): Rename from __set_charset_from_codepage. Take locale as parameter instead of a codepage. (loadlocale): Allow "EUC-JP" for "EUCJP" and "EUC-KR" for "EUCKR". Change documnetation accordingly. Enable LC_COLLATE, LC_MONETARY, LC_NUMERIC, and LC_TIME handling on Cygwin. (_localeconv_r): On Cygwin, copy values from monetary and numeric domain if change has been noted. * libc/locale/nl_langinfo.c (nl_langinfo): Accommodate change of am/pm layout in struct lc_time_T. * libc/locale/timelocal.c (_C_time_locale): Accommodate redefinition of am/pm members. (__time_load_locale): Take additional parameters for wide char to multibyte conversion. Call __set_lc_time_from_win on Cygwin. * libc/locale/timelocal.h: Make C++-safe. (struct lc_time_T): Convert am and pm to a am_pm array for easier consumption by strftime and strptime. (__time_load_locale): Change declaration. * libc/time/strftime.c: Change documentation to reflect changes to strftime. Remove locale constant strings in favor of access to locale-specifc data. (_ctloc): Define access method for locale-specifc data. (TOLOWER): Define for tolower conversion. (strftime): Throughout, convert locale-specific formats to use locale-specific data. Add GNU-specific "%P" format. * libc/time/strptime.c: Remove locale constant strings in favor of access to locale-specifc data. (_ctloc): Define access method for locale-specifc data. (strptime): Throughout, convert locale-specific formats to use locale-specific data. 2010-01-20 Corinna Vinschen * libc/locale/nl_langinfo.c (nl_langinfo): On Cygwin, translate often-used charsets into Linux compatible codesets. 2010-01-19 Andy Koppe * libc/stdio/vfscanf.c (__SVFSCANF_R): Fix handling of non-ASCII characters and allow invalid bytes in format string. 2010-01-19 Corinna Vinschen * libc/stdlib/wcstombs_r.c (_wcstombs_r): Handle invalid characters correctly also in the s==NULL case. 2010-01-17 Corinna Vinschen * libc/locale/locale.c (loadlocale): Change comments to refer to ISO 639-3 rather than 639-2. 2010-01-17 Corinna Vinschen * libc/locale/locale.c (loadlocale): Allow three character language codes to accommodate ISO 639-2 codes. 2010-01-17 Corinna Vinschen * libc/locale/locale.c (lc_ctype_charset): Disable defaulting to "UTF-8" on Cygwin. (lc_message_charset): Ditto. (loadlocale): Disable setting charset of the "C" locale to "UTF-8" on Cygwin. * libc/stdlib/mbtowc_r.c (__mbtowc): Add Cygwin-specific comment. * libc/stdlib/wctomb_r.c (__wctomb): Ditto. 2010-01-14 Corinna Vinschen * libc/include/sys/_default_fcntl.h (O_CLOEXEC): Define as _FNOINHERIT. (F_DUPFD_CLOEXEC): Define for Cygwin. * libc/include/sys/unistd.h (dup3): Define for Cygwin. (pipe2): Ditto. 2010-01-14 Corinna Vinschen * libc/stdio/vfprintf.c (_VFPRINTF_R): Just wave bytes invalid in the current charset through. 2010-01-11 Sebastian Huber * libc/posix/telldir.c (_cleanupdir): Fixed usage of freed memory. 2010-01-11 Yaakov Selkowitz * libc/include/math.h (log2, log2f): Disable macro versions for C++, as they are incompatible with OpenMP/C++ headers. 2010-01-10 Corinna Vinschen * libc/stdlib/mbtowc_r.c (__ascii_mbtowc): Disallow conversion of non-ASCII chars on Cygwin. * libc/stdlib/wctomb_r.c (__ascii_wctomb): Ditto. 2009-12-22 Eric Blake * libc/include/sys/unistd.h (suboptarg, getsubopt): Move... * libc/include/stdlib.h: ...here, to match POSIX for getsubopt. 2009-12-17 Jeff Johnston * NEWS: Update with 1.18.0 info. * README: Ditto. * acinclude.m4: Change version number to 1.18.0. * aclocal.m4: Regenerated. * configure: Ditto. * doc/aclocal.m4: Ditto. * doc/configure: Ditto. * libc/*/aclocal.m4: Ditto. * libc/*/configure: Ditto. * libc/libc.texinfo: Ditto. * libm/*/aclocal.m4: Ditto. * libm/*/configure: Ditto. * libm/libm.texinfo: Ditto. * libc/sys/linux/shared.ld: Add VERS_1.18 2009-12-17 Jeff Johnston * libc/include/_syslist.h: Add _mkdir transform. 2009-12-17 Jerker Back * libc/iconv/lib/local.h[!__GNUC__]: Add alternative version of ICONV_ZERO_MB_STATE_T macro. * libc/iconv/lib/ucsconv.c (ucs_based_conversion_get_state): Use temporary local variable nullstate to hold empty mbstate_t. 2009-12-17 Jerker Back * libc/include/_ansi.h: Add new _EXFNPTR macro for using with function pointer arguments. * libc/iconv/lib/conv.h: Use _EXFNPTR rather than _EXPARM macro. * libc/iconv/lib/ucsconv.h: Ditto. * libc/include/stdlib.h: Use new _EXFNPTR macro for function pointers. * libc/include/sys/reent.h: Ditto. * libc/include/sys/unistd.h: Ditto. * libc/search/bsearch.c: Ditto. * libc/stdio/fseek.c: Ditto. * libc/stdio64/fseeko64.c: Ditto. * libc/stdlib/atexit.c: Ditto. * libc/stdlib/on_exit.c: Ditto. 2009-12-17 Ralf Corsépius * libc/include/machine/ieeefp.h: Rework __IEEE_*_ENDIAN handling. * libc/machine/arm/machine/endian.h: Remove (Conflicts with libc/include/machine/endian.h) 2009-12-17 Ralf Corsépius * libc/include/machine/setjmp.h: Set up _JBLEN #ifdef __m68k__. 2009-12-17 Ralf Corsepius * libc/include/pthread.h: Add pthread_atfork, pthread_rwlock_unlock * libc/include/sys/stat.h: Use struct timespec st_*tim, blksize_t st_blksize, blkcnt_t st_blocks. Add st_*time compatibility macros. 2009-12-16 Joel Sherrill * libc/sys/rtems/machine/param.h: Only use sizeof(double) -1 for ALIGNBYTES on SPARC. 2009-12-16 Jeff Johnston * libc/include/sys/errno.h: Move EHOSTDOWN, EPFNOSUPPORT, and ETOOMANYREFS into general list as they are referenced by OpenGroup and needed by RTEMS. 2009-12-16 Ralf Corsépius * libc/search/hcreate.c: Don't include (Unused). 2009-12-16 Ralf Corsépius * libc/sys/rtems/machine/_types.h: New (Derived from machine/_default_types.h). * libc/sys/rtems/crt0.c: Rework. Introduce macro RTEMS_STUB. * libc/sys/rtems/sys/param.h: Update copyright notice from FreeBSD. Remove HZ. Add #include Remove priority handling (moved to sys/priority.h). Remove CLBYTES (Unused, abandoned in BSD). * libc/sys/rtems/sys/queue.h: Update copyright (from FreeBSD). Remove CIRCLEQ_*. 2009-12-15 Conny Marco Menebrocker * libc/machine/xc16x/Makefile.am: Fix typo and refer to puts.c instead of putc.c. * libc/machine/xc16x/Makefile.in: Regenerated. 2009-12-14 Maxim Kuvyrkov * libc/machine/m68k/memcpy.S: Patch to support boards which do not support unaligned read/write. 2009-12-10 Conny Marco Menebrocker * configure.host: Add xc16x support. * libc/include/machine/ieeefp.h: Ditto. * libc/include/sys/config.h: Ditto. * libc/machine/configure.in: Ditto. * libc/machine/Makefile.in: Regenerated. * libc/machine/aclocal.m4: Ditto. * libc/machine/configure: Ditto. * libc/machine/xc16x/Makefile.am: New file. * libc/machine/xc16x/Makefile.in: Ditto. * libc/machine/xc16x/aclocal.m4: Ditto. * libc/machine/xc16x/configure: Ditto. * libc/machine/xc16x/configure.in: Ditto. * libc/machine/xc16x/putchar.c: Ditto. * libc/machine/xc16x/puts.c: Ditto. * libc/machine/xc16x/setjmp.S: Ditto. 2009-12-08 Eric Blake Fix some *at declarations. * libc/include/stdio.h (symlinkat): Move this... * libc/include/sys/_default_fcntl.h (unlinkat): ...and this... * libc/include/sys/unistd.h (symlinkat, unlinkat): ...here, to match POSIX. 2009-12-03 Craig Howland * libc/stdlib/strtod.c: Correct "NO_REENT" to "_REENT_ONLY". * libc/stdlib/wcstod.c: Ditto. * libc/stdlib/dtoastub.c: Ditto. 2009-11-23 Corinna Vinschen Use NetBSD fix for CVE-2009-0689 security vulnerability. * libc/include/sys/reent.h (_Kmax): Define here based on the sizeof size_t, as in latest NetBSD. * libc/reent/reent.c (_reclaim_reent): Use _Kmax rather than constant value 15. * libc/stdlib/mprec.c (_Kmax): Don't define here. Explain why. 2009-11-20 Nick Clifton * libc/machine/rx/strncat.S (_strncat): Replace use of r6 (call-saved) with r14 (call-used). 2009-11-18 Dave Korn * libm/machine/i386/f_tan.S (_f_tan): Free fp stack register containing useless constant before advancing fp sp over it. (_f_tanf): Likewise. 2009-11-18 Corinna Vinschen * libc/stdio/vfprintf.c: Include ../stdlib/local.h. Replace call to _mbtowc_r with direct call to __mbtowc. * libc/stdio/vfscanf.c: Ditto. * libc/stdlib/btowc.c: Include local.h. Replace call to _mbtowc_r with direct call to __mbtowc. * libc/stdlib/mblen.c: Ditto. * libc/stdlib/mblen_r.c: Ditto. * libc/stdlib/mbrtowc.c: Ditto. * libc/stdlib/mbstowcs_r.c: Ditto. * libc/stdlib/mbtowc.c: Ditto. * libc/stdlib/wcrtomb.c: Include local.h. Replace call to _wctomb_r with direct call to __wctomb. * libc/stdlib/wcsnrtombs.c: Ditto. (_wcsnrtombs_r): Ditto. * libc/stdlib/wcstombs_r.c: Ditto. * libc/stdlib/wctob.c: Ditto. * libc/stdlib/wctomb.c: Ditto. * libc/stdlib/mbrtowc.c (mbrtowc): Implement independently from _mbrtowc_r, unless PREFER_SIZE_OVER_SPEED or __OPTIMIZE_SIZE__ are defined. * libc/stdlib/wcrtomb.c (wcrtomb): Implement independently from _wcrtomb_r, unless PREFER_SIZE_OVER_SPEED or __OPTIMIZE_SIZE__ are defined. * libc/stdlib/mbtowc_r.c (__utf8_mbtowc): Drop unnecessary test for ch >= 0. 2009-11-17 Yaakov Selkowitz * libm/common/fdlibm.h (logb, logbf): Move decls from here... * libc/include/math.h (logb, logbf): ...to here. 2009-11-06 Jon Turney * libc/include/ctype.h (__ctype_lookup): Fix precedence. 2009-10-30 Corinna Vinschen * libc/stdio/fflush.c (_fflush_r): Store old errno to check for low-level seek error condition. Restore old errno in case of success. Don't use new position after seek as error condition, rather check for return value of -1 and errno. Handle EINVAL just like ESPIPE. Only set fp->_offset if errno is 0. 2009-10-27 Nick Clifton * MAINTAINERS (ARM): Add myself as an ARM maintainer. 2009-10-26 DJ Delorie * configure.host: Add support for RX architecture. * libc/include/machine/ieeefp.h: Likewise. * libc/include/machine/setjmp.h: Likewise. * libc/include/machine/configure.in: Likewise. * libc/include/machine/configure: Regenerate. * libc/machine/rx: New directory. * libc/machine/rx/*: New files to support RX architecture. 2009-10-24 Eric Blake * libc/include/ctype.h (__ctype_lookup): New macro. (isalpha, isupper, islower, isdigit, isxdigit, isspace, ispunct) (isalnum, isprint, isgraph, iscntrl, isblank): Use it to fix bug on 64-bit machines. 2009-10-20 Jeff Johnston * configure.host: Don't set -O2 flag in newlib_cflags. Leave that to CFLAGS. * acinclude.m4: Don't reset CFLAGS before calling _AC_PROG_CC_G as it sets the same flags as we are using. * aclocal.m4: Regenerated. * configure: Ditto. * Makefile.in: Ditto. * iconvdata/aclocal.m4: Ditto. * iconvdata/configure: Ditto. * iconvdata/Makefile.in: Ditto. * doc/aclocal.m4: Ditto. * doc/configure: Ditto. * doc/Makefile.in: Ditto. * libc/aclocal.m4: Ditto. * libc/configure: Ditto. * libc/Makefile.in: Ditto. * libc/*Makefile.in: Ditto. * libc/*aclocal.m4: Ditto. * libc/*configure: Ditto. * libm/*Makefile.in: Ditto. * libm/*aclocal.m4: Ditto. * libm/*configure: Ditto. 2009-10-16 Jeff Johnston * libc/include/sys/config.h[__CYGWIN__]: Set __USE_XOPEN2K flag if not __STRICT_ANSI__ or stdc version C99 or greater. * libc/include/stdio.h[__STRICT_ANSI__]: Add __USE_XOPEN2K check for fseeko and ftello prototypes. 2009-10-15 Corinna Vinschen * libc/include/wchar.h (struct tm0: Declare as incomplete type. 2009-10-15 Corinna Vinschen * libc/locale/nl_langinfo.c (nl_langinfo): Add Cygwin-specific temporary exception for KOI8 charsets. 2009-10-13 Eric Blake * libc/include/sys/unistd.h: Add _PC*, _CS*, and _SC* constants new to POSIX 2008. 2009-10-13 Yaakov Selkowitz * libc/include/sys/signal.h: Include always. [__CYGWIN__, __rtems__]: Define kill first argument as pid_t per standards. 2009-10-09 Dave Korn * libc/include/sys/time.h (_TIMEVAL_DEFINED): Define when defining struct timeval. 2009-10-09 Corinna Vinschen * libc/locale/locale.c (DEFAULT_LOCALE): New define. (__default_locale): New global variable set to the default locale. (__get_locale_env): Return __default_locale rather than fixed "C". 2009-10-08 Jeff Johnston * configure.host: For RTEMS, define HAVE_ASSERT_FUNC. * libc/stdlib/assert.c (_assert_func): Do not specify __assert_func if HAVE_ASSERT_FUNC flag is set. 2009-10-08 Eric Blake * libc/include/getopt.h (__getopt_r, __getopt_long_r) (__getopt_long_only_r): Protect declarations, to avoid compiler warning. 2009-10-07 Corinna Vinschen * libc/locale/nl_langinfo.c (nl_langinfo): Just return current locale charset on Cygwin. 2009-10-03 Corinna Vinschen * libc/stdlib/mbtowc_r.c (__utf8_mbtowc): Allow CESU-8 surrogate value encoding. * libc/stdlib/wctomb_r.c (__utf8_mbtowc): Allow CESU-8 surrogate value decoding. 2009-09-29 Corinna Vinschen * libc/locale/locale.c (loadlocale): Allow "C." same as "C-" as locale prefix. Add some words to documentation. 2009-09-29 Corinna Vinschen * libc/stdlib/sb_charsets.c: Throughout, translate undefined characters to their corresponding Windows Unicode value. 2009-09-28 Michael Eager * configure.host: Add microblaze. * libc/include/machine/ieeefp.h [MICROBLAZE]: Define __IEEE_BIG_ENDIAN. * libc/include/machine/setjmp.h [MICROBLAZE]: Define _JBLEN, _JBTYPE. * libc/include/sys/config.h [MICROBLAZE]: Define _REENT_SMALL, _UNIX98_THREAD_MUTEX_ATTRIBUTES. * libc/include/sys/types.h: Treat XMK like rtems, define PTHREAD_MUTEX_NORMAL, PTHREAD_MUTEX_ERRORCHECK, PTHREAD_MUTEX_RECURSIVE, PTHREAD_MUTEX_DEFAULT, PTHREAD_STACK_MIN, define stuct pthread_attr_s. * libc/machine/configure.in: Add microblaze. * libc/machine/configure: Add microblaze (not regenerated). * libc/machine/microblaze/configure.in: NEW. * libc/machine/microblaze/configure: Generate. * libc/machine/microblaze/Makefile.am: NEW. * libc/machine/microblaze/Makefile.in: Generate. * libc/machine/microblaze/{abort.c, strcmp.c, strcpy.c, strlen.c, mallocr.c, longjmp.S, setjmp.S}: NEW. * libc/stdlib/mallocr.c [MICROBLAZE]: Don't declare sbrk prototype, mALLOc(): return malloc value. 2009-09-27 Corinna Vinschen * libc/locale/locale.c (lc_ctype_charset): Set to "UTF-8" on Cygwin. (lc_message_charset): Ditto. (loadlocale): Set charset of the "C" locale to "UTF-8" on Cygwin. * libc/stdlib/mbtowc_r.c (__mbtowc): Default to __utf8_mbtowc on Cygwin. * libc/stdlib/wctomb_r.c (__wctomb): Default to __utf8_wctomb on Cygwin. 2009-09-26 Eric Blake * libc/include/sys/unistd.h (execvpe, fexecve) [__CYGWIN__]: Add declarations. 2009-09-24 Eric Blake * libc/include/sys/unistd.h (eaccess, euidaccess) [__CYGWIN__]: Add declarations. 2009-09-23 Corinna Vinschen * libc/locale/locale.c: Drop Cygwin-specific windows.h include. (loadlocale): Call __set_charset_from_codepage with 0 codepage. 2009-09-22 Ralf Corsépius * libc/include/stdlib.h: Add posix_memalign. 2009-09-22 Ralf Corsépius * configure.host (*-rtems*): Remove -DMISSING_SYSCALL_NAMES. Add -DHAVE_BLKSIZE, -D_NO_WORDEXP -D_NO_POPEN. 2009-09-22 Ralf Corsépius * configure.host (m32c): Move setting -DABORT_PROVIDED to second "case $host". 2009-09-18 Christopher Faylor * libc/include/sys/unistd.h: Declare getpagesize as returning POSIX-mandated int. * libc/sys/linux/sys/unistd.h: Ditto. 2009-08-31 Takaki Makino * libm/machine/i386/f_pow.c(_f_pow): Alter ASM so it works with newer gcc versions. * libm/maachine/i386/f_powf.c(_f_powf): Ditto. 2009-08-25 Andy Koppe * libc/stdlib/sb_charsets.c (__micro_atoi): Allow five-digit codepage numbers. * libc/locale/locale.c (loadlocale): Set MB_CUR_MAX to 1 for KOI8 charsets. * libc/stdlib/local.h (__cp_conv): Remove incorrect number of codepages. 2009-08-24 Corinna Vinschen * libc/locale/locale.c: Update documentation. (loadlocale): Map "KOI8-R" and "KOI8-U" to CP20866 and CP21866. 2009-08-24 Andy Koppe * libc/stdlib/sb_charsets.c (__cp_conv): Add KOI8-R (Russian, CP20866) and KOI8-U (Ukrainian, CP21866) to Windows codepage conversion tables. * libc/ctype/ctype_cp.h (__ctype_cp): Likewise for ctype tables. 2009-08-24 Andy Koppe * libc/ctype/iswspace.c (iswspace): Include "non-breaking space" (U+00A0). * libc/ctype/iswblank.c (iswblank): Likewise. 2009-08-21 Corinna Vinschen * libc/locale/locale.c (loadlocale): Throughout check charset string case insensitive and store internal charset string uppercased. Allow "UTF8" additionally to "UTF-8". Add this change to documentation. 2009-08-21 Eric Blake * libc/include/iconv.h (iconv): Match POSIX prototype. * libc/iconv/lib/iconv.c (iconv): Likewise. 2009-08-21 Craig Howland * libm/common/s_remquo.c (remquo): Fix sign of quotient when |x|==|y|. * libc/stdio/mktemp.c: Add #include for function prototypes. 2009-08-19 Ralf Wildenhues * iconvdata/Makefile.am (all): Remove. * libc/sys/a29khif/Makefile.am (all-am): Rename from ... (all): ... this. * libc/sys/arc/Makefile.am: Likewise. * libc/sys/arm/Makefile.am: Likewise. * libc/sys/d10v/Makefile.am: Likewise. * libc/sys/decstation/Makefile.am: Likewise. * libc/sys/h8300hms/Makefile.am: Likewise. * libc/sys/h8500hms/Makefile.am: Likewise. * libc/sys/linux/Makefile.am: Likewise. * libc/sys/linux/machine/i386/Makefile.am: Likewise. * libc/sys/m88kbug/Makefile.am: Likewise. * libc/sys/mmixware/Makefile.am: Likewise. * libc/sys/netware/Makefile.am: Likewise. * libc/sys/rdos/Makefile.am: Likewise. * libc/sys/rtems/Makefile.am: Likewise. * libc/sys/sh/Makefile.am: Likewise. * libc/sys/sparc64/Makefile.am: Likewise. * libc/sys/sun4/Makefile.am: Likewise. * libc/sys/sysmec/Makefile.am: Likewise. * libc/sys/sysnec810/Makefile.am: Likewise. * libc/sys/sysnecv850/Makefile.am: Likewise. * libc/sys/sysvi386/Makefile.am: Likewise. * libc/sys/sysvnecv70/Makefile.am: Likewise. * libc/sys/tic80/Makefile.am: Likewise. * libc/sys/w65/Makefile.am: Likewise. * libc/sys/z8ksim/Makefile.am: Likewise. * iconvdata/Makefile.in: Regenerate. * libc/sys/a29khif/Makefile.in: Likewise. * libc/sys/arc/Makefile.in: Likewise. * libc/sys/arm/Makefile.in: Likewise. * libc/sys/d10v/Makefile.in: Likewise. * libc/sys/decstation/Makefile.in: Likewise. * libc/sys/h8300hms/Makefile.in: Likewise. * libc/sys/h8500hms/Makefile.in: Likewise. * libc/sys/linux/Makefile.in: Likewise. * libc/sys/linux/machine/i386/Makefile.in: Likewise. * libc/sys/m88kbug/Makefile.in: Likewise. * libc/sys/mmixware/Makefile.in: Likewise. * libc/sys/netware/Makefile.in: Likewise. * libc/sys/rdos/Makefile.in: Likewise. * libc/sys/rtems/Makefile.in: Likewise. * libc/sys/sh/Makefile.in: Likewise. * libc/sys/sparc64/Makefile.in: Likewise. * libc/sys/sun4/Makefile.in: Likewise. * libc/sys/sysmec/Makefile.in: Likewise. * libc/sys/sysnec810/Makefile.in: Likewise. * libc/sys/sysnecv850/Makefile.in: Likewise. * libc/sys/sysvi386/Makefile.in: Likewise. * libc/sys/sysvnecv70/Makefile.in: Likewise. * libc/sys/tic80/Makefile.in: Likewise. * libc/sys/w65/Makefile.in: Likewise. * libc/sys/z8ksim/Makefile.in: Likewise. * configure.in (newlib_cv_ldbl_eq_dbl): Rename cache variable from newlib_ldbl_eq_dbl. * configure: Regenerate. 2009-08-19 Eric Blake * libc/Makefile.am (SUBDEFS): Correctly build popen docs. * libc/libc.texinfo (Top): Add posix node to menu. 2009-08-18 Jeff Johnston * newlib.hin: Add comment regarding file being manually edited. * Makefile.am: Add no-op rule for newlib.hin. * Makefile.in: Regenerated. 2009-08-18 Jeff Johnston * acconfig.h: Add templates for _HAVE_LONG_DOUBLE and _LDBL_EQ_DBL. 2009-08-18 Eric Blake * libc/posix/popen.c (popen): Fix documented prototype. Improve popen compatibility with glibc. * libc/posix/popen.c (popen): The 2006-08-22 change to use FD_CLOEXEC disagrees with other implementations; instead, use pidlist to work even when fcntl is not available. Meanwhile, support the 'e' modifier to set CLOEXEC, as in glibc. Drop cygwin-specific code, now that cygwin has its own version. * libc/posix/Makefile.am (CHEWOUT_FILES): Document popen. * libc/posix/posix.tex: New file. 2009-08-17 Craig Howland * libc/string/wcsncpy.c (wcsncpy): Re-write function based on small version of strncpy() (fixing two bugs). 2009-08-13 Corinna Vinschen * libc/stdio/mktemp.c (mkdtemp): Fix typo in function name. 2009-08-12 Jeff Johnston * libc/stdio/mktemp.c (_gettemp): Do not call _mkdir_r unless HAVE_MKDIR is defined. 2009-08-12 Hans-Peter Nilsson * libc/include/reent.h: Add prototype and definition of _mkdir_r. * libc/reent/Makefile.am (GENERAL_SOURCES): Add mkdirr.c. (CHEWOUT_FILES): Add mkdirr.def. * libc/reent/Makefile.in: Regenerate. * libc/reent/mkdirr.c: New file. 2009-08-10 Jeff Johnston * libc/stdlib/wcstombs.c: Change documentation to specify size_t return type instead of int. 2009-07-29 Jeff Johnston * libc/stdlib/a64l.c: Fix to use 'a' instead of 'A' in calculation when a lower-case character is detected. 2009-07-29 Corinna Vinschen * libc/stdlib/mbtowc_r.c (__utf8_mbtowc): Rework UTF-16 surrogate pair handling to be more bullet-proof even with incomplete UTF-8 sequences. Add check for 4 byte sequences resulting in values outside the valid Unicode range. Add a comment to clarify checking for invalid CESU-8 sequences. 2009-07-28 Corinna Vinschen * libc/stdlib/mbtowc_r.c (__utf8_mbtowc): Fix incrementing n in case of handling incomplete sequences. 2009-07-22 Eric Blake Avoid a fault from locking a closed standard file. * libc/stdio/fflush.c (_fflush_r): Give up early if stream has been previously closed. 2009-07-09 Craig Howland * libm/math/ef_scalb.c: Replace isnanf() (pre-C99 function call) with isnan() (C99 macro). * libm/math/wf_log.c: Ditto. * libm/math/wf_j0.c: Ditto. * libm/math/wf_sqrt.c: Ditto. * libm/math/wf_pow.c: Ditto. * libm/math/wf_fmod.c: Ditto. * libm/math/wf_remainder.c: Ditto. * libm/math/wf_scalb.c: Ditto. * libm/math/wf_atanh.c: Ditto. * libm/math/wf_cosh.c: Ditto. * libm/math/wf_acos.c: Ditto. * libm/math/wf_acosh.c: Ditto. * libm/math/wf_jn.c: Ditto. * libm/math/wf_log10.c: Ditto. * libm/math/wf_asin.c: Ditto. * libm/math/wf_j1.c: Ditto. * libm/common/sf_isnan.c: Add #include , fix comment. * libm/common/sf_isinf.c: Add #include , adjust comment to match that from s_isinf.c. * libc/include/machine/ieeefp.h: Simplify isinf and isnan macros to remove un-necessary extension use (in a similar manner to as was recently done in math.h). * libc/include/math.h: Remove isnanf and isinff prototypes (are in ieeefp.h). * libm/machine/spu/sf_isinf.c: Fix comment (remove ). 2009-07-06 Joel Sherrill * libc/include/sys/features.h: Enable UNIX98 mutex attributes for RTEMS. 2009-07-03 Eric Blake Add mkdtemp, mkstemps. * libc/stdio/mktemp.c: Fix documentation. (_gettemp): Add domkdir and length parameters. Check for insufficient 'X' suffix. Drop cygwin-specific code. (_mkstemp_r, _mktemp_r, mkstemp, mktemp): Adjust clients. (_mkdtemp_r, _mkstemps_r, mkdtemp, mkstemps): New functions. * libc/include/stdlib.h (_mkdtemp_r, _mkstemps_r, mkdtemp) (mkstemps): Declare them. Add fpurge. * libc/stdio/fpurge.c (fpurge, _fpurge_r): New file. * libc/stdio/Makefile.am (ELIX_4_SOURCES, CHEWOUT_FILES, fpurge): Build it. * libc/stdio/Makefile.in: Regenerated. * libc/include/stdio.h (fpurge, _fpurge_r): New declarations. * libc/stdio/stdio.tex: Build documentation. 2009-06-23 Jeff Johnston * Makefile.am (MATHOBJS_IN_LIBC): Add s_fpclassify and sf_fpclassify as these are now used for infinity testing. * Makefile.in: Regenerated. 2009-06-19 Joel Sherrill * libc/sys/rtems/machine/param.h: Change ALIGNBYTES so it can point to an aligned structure or double. 2009-06-18 Corinna Vinschen * libc/locale/locale.c (loadlocale): Add handling of "@cjknarrow" modifier on _MB_CAPABLE targets. Add comment to explain. Improve documentation. 2009-06-17 Michael Eager * libc/include/pthread.h: Support XMK (Xilinx) BSP, add RTEMS to PTHREAD_MUTEX_NORMAL. * libc/include/sys/features.h: Same. * libc/include/sys/types.h: Same. 2009-06-16 Corinna Vinschen * libc/include/locale.h (struct lconv): Add missing members required by POSIX.1-2008. * libc/locale/locale.c (lconv): Initialize new members to default values in "C" locale. 2009-06-16 Corinna Vinschen * libc/stdio/vfprintf.c (_VFPRINTF_R): Use actual length of radix char instead of assuming length 1. * libc/stdlib/gdtoa-gethex.c: Remove use of USE_LOCALE. (gethex): Allow multibyte decimal point. Fix compiler warnings due to different signedness of pointer types. * libc/stdlib/strtod.c: Remove use of USE_LOCALE. (_strtod_r): Allow multibyte decimal point. * libc/stdlib/wcstod.c (_wcstod_r): Evaluate correct wide char endptr position if the decimal point is a multibyte char. 2009-06-16 Craig Howland * libc/ctype/local.h (__locale_charset): Add arguments to prototype * libc/stdlib/local.h (__locale_charset): Ditto. 2009-06-16 Craig Howland * libc/include/math.h: Simplify fpclassify, isinf, isnan, and signbit macros to remove un-necessary extension use. isinf and isnan also changed to use fpclassify. isfinite macro modified to run faster by only calling fpclassify once instead of possibly twice. 2009-06-09 Corinna Vinschen * libc/ctype/tolower.c (tolower): Cast conversion result from mbtowc/wctomb to unsigned char to avoid negative return values. * libc/ctype/toupper.c (toupper): Ditto. 2009-06-03 IWAMURO Motonori * libc/string/wcwidth.c: Optimize for speed. 2009-06-03 Corinna Vinschen * libc/locale/locale.c (lc_ctype_cjk_lang): New static int. (loadlocale): In case of setting LC_CTYPE, set lc_ctype_cjk_lang to 1 if the language is "jp", "ko", or "zh", to 0 otherwise. (__locale_cjk_lang): New function. * libc/string/local.h (__locale_cjk_lang): Declare. * libc/string/wcwidth.c: Fix comments. (__wcwidth): Handle CJK Ambiguous Width characters according to setting returned by __locale_cjk_lang. 2009-06-02 Richard Earnshaw * libc/include/sys/config.h: Remove specification of _REENT_SMALL for thumb2. 2009-06-02 IWAMURO Motonori * libc/ctype/jp2uc.c: Skip all definition if defined __CYGWIN__. (__jp2uc): Change the scope to static function. * libc/ctype/local.h (_jp2uc): Define as macro if defined __CYGWIN__. * libc/string/local.h (_jp2uc): Include ../ctype/local.h. 2009-05-27 Neal H. Walfield * libc/include/machine/setjmp.h (sigjmp_buf): Size according to _JBTYPE and the size of sigset_t. 2009-05-15 Craig Howland * configure.in: Add configuration test for long double type existing and set flag _HAVE_LONG_DOUBLE if true. Fix INIT_ARRAY (.init_array) and _LDBL_EQ_DBL tests to not link so that will work with cross-compilers. * configure: Regenerated. * Makefile.in: Ditto. * newlib.hin: Add _HAVE_LONG_DOUBLE flag. * libc/include/math.h: Change non-builtin defines for HUGE_VAL, HUGE_VALF, and HUGE_VALL to be constant expressions. Add definitions for the non-builtin case for INFINITY and NAN. Gate HUGE_VALL and union __ldmath definitions with (new) _HAVE_LONG_DOUBLE. *libm/common/s_infconst.c: Change definitions to use values from float.h instead of non-so-portable integer forms. Mark as being deprecated (because now removed from math.h, are not used anywhere in Newlib, itself). 2009-05-15 Corinna Vinschen * libc/string/local.h: New file. * libc/string/wcswidth.c (wcswidth): Convert japanese wide characters to Unicode here. Handle surrogate pairs for UTF-16 systems. Call __wcwidth rather than wcwidth. * libc/string/wcwidth.c: New implementation using Markus Kuhn's wcwidth implementation for Unicode. (bisearch): New static function. (__wcwidth): New function. Take wint_t rather than wchar_t as parameter to allow full Unicode handling on UTF-16 systems. Move old wcwidth implementation here for non-multibyte aware systems. (wcwidth): Convert japanese wide characters to Unicode here. Call __wcwidth rather than using iswprint/iswcntrl. 2009-05-14 Corinna Vinschen * libc/ctype/local.h (JP_JIS, JP_SJIS, JP_EUCJP): Move definition to jp2uc.c. (__jp2uc): Remove declaration. (_jp2uc): Declare. * libc/ctype/jp2uc.c (JP_JIS, JP_SJIS, JP_EUCJP): Define. (__jp2uc): Remove Cygwin special case. (_jp2uc): New function. On Cygwin, just return c. * libc/ctype/iswalpha.c (iswalpha): Just call _jp2uc. * libc/ctype/iswblank.c (iswblank): Ditto. * libc/ctype/iswcntrl.c (iswcntrl): Ditto. * libc/ctype/iswprint.c (iswprint): Ditto. * libc/ctype/iswpunct.c (iswpunt): Ditto. * libc/ctype/iswspace.c (iswspace): Ditto. * libc/ctype/towlower.c (towlower): Ditto. * libc/ctype/towupper.c (towupper): Ditto. 2009-05-13 Paul Brook * libc/machine/arm/setjmp.S: Don't bother saving IP. Copy SP to IP before saving. Likewise when restoring. 2009-05-13 Paul Brook * libc/machine/arm/setjmp.S: Add ARMv6-M implementation. 2009-05-13 Corinna Vinschen * libc/locale/locale.c (setlocale): Don't build on Cygwin. 2009-05-11 Craig Howland * libm/machine/i386/f_llrint.c: Remove llrint() definition. * libm/machine/i386/f_llrintf.c: Remove llrintf() definition. 2009-05-08 Nick Clifton * MAINTAINERS: Add myself as a maintainer for the MN10300 and to the write-after-approval list. 2009-04-30 Anthony Green * MAINTAINERS: Add myself as moxie maintainer and to the write-after-approval list. 2009-04-30 Eric Blake Allow gcc warning for toupper even with extended charsets. * libc/include/ctype.h (toupper, tolower) [_MB_EXTENDED_CHARSETS_ISO]: Allow gcc warning when called with 'char' even when we must call the function for correct behavior. [!_MB_EXTENDED_CHARSETS_ISO]: Fix regression in result type. 2009-04-24 Jeff johnston * libc/stdio/fgetc.c: Make sure sfp lock is acquired before the file lock and released before the file lock to avoid a deadlock scenario. * libc/stdio/fgets.c: Ditto. * libc/stdio/fgetwc.c: Ditto. * libc/stdio/fgetws.c: Ditto. * libc/stdio/fread.c: Ditto. * libc/stdio/fseek.c: Ditto. * libc/stdio/getc.c: Ditto. * libc/stdio/getdelim.c: Ditto. * libc/stdio/gets.c: Ditto. 2009-04-24 Jeff johnston * configure.in: Add configuration test for long double equals dbl and set flag _LDBL_EQ_DBL if true. * configure: Regenerated. * newlib.hin: Add _LDBL_EQ_DBL flag. * libc/include/math.h: Use _LDBL_EQ_DBL flag instead of _HAVE_LDBL_MATH. * libc/include/stdlib.h: Use _LDBL_EQ_DBL flag instead of _HAVE_LDBL_STDLIB. * libc/common/local.h: Remove _LDBL_EQ_DBL flag setting. * libc/stdlib/local.h: Ditto. 2009-04-24 Joseph Myers * libc/include/stdint.h (UINTPTR_MAX): Define to __UINTPTR_MAX__ if __UINTPTR_MAX__ defined. 2009-04-24 Eric Blake Be namespace clean in ctype.h. * libc/include/ctype.h (_tolower, _toupper, isalpha, isupper) (islower, isdigit, isxdigit, isspace, ispunct, isalnum) (isprint, isgraph, iscntrl, isblank, toupper, tolower) (isascii, toascii): Don't use 'c' as macro parameter name. Trigger gcc warning if isFoo macros are called with plain char. * libc/include/ctype.h (isalpha, isupper, islower, isdigit) (isxdigit, isspace, ispunct, isalnum, isprint, isgraph) (iscntrl, isblank, toupper, tolower): Rewrite to let 'gcc -Wall' warn when user calls macro with a char argument. 2009-04-23 Mike Burgess * libc/string/strcasecmp.c: Optimized rewrite. * libc/string/strncasecmp.c: Fix description. * libc/string/strlwr.c: Avoid passing signed char to tolower. * libc/string/strupr.c: Avoid passing signed char to tolower. 2009-04-23 Paul Brook Kazu Hirata * libc/stdlib/__atexit.c (__register_exitproc): Use weak reference to malloc. Allocate dynamically only if it is present. * libc/stdlib/__call_atexit.c (__call_exitprocs): Use weak reference to free. Call free only if it is present. 2009-04-22 Anthony Green * configure.host: Add moxie support. * libc/machine/configure.in: Add moxie support. * libc/machine/configure: Rebuilt. * libc/machine/moxie/aclocal.m4: New file. * libc/machine/moxie/configure: New file. * libc/machine/moxie/configure.in: New file. * libc/machine/moxie/Makefile.am: New file. * libc/machine/moxie/Makefile.in: New file. * libc/machine/moxie/setjmp.S: New file. * libc/include/machine/setjmp.h (_JBLEN): Define for moxie. * libc/include/machine/ieeefp.h: Add moxie support. 2009-04-22 Kazu Hirata * libc/stdio/local.h (__chclass, __state_table, __action_table): Add extern to the declarations. * libc/stdlib/local.h (__iso_8859_conv, __cp_conv): Likewise. 2009-04-21 Corinna Vinschen * libc/ctype/ctype_.c (_CTYPE_DATA_128_255): Rename from _CTYPE_DATA_128_256. * libc/ctype/ctype_cp.h: Split off all character class values for character 255 from the rest of the definitions. (__ctype_cp): Use the new definitions. Make sure that the table always contains 0 for EOF (-1). * libc/ctype/ctype_iso.h: Ditto. 2009-04-21 Sandra Loosemore * libc/reent/impure.c (__sf_fake_stdin, __sf_fake_stdout) (__sf_fake_stderr): Declare locally with weak attribute. 2009-04-21 Mark Mitchell * libc/include/_ansi.h: Move C++ defines to top of file. (_NOTHROW): New macro. (_EXFUN_NOTHROW): Likewise. * libc/include/stdlib.h (calloc): Declare with _EXFUN_NOTHROW. (free): Likewise. (malloc): Likewise. (realloc): Likewise. (_malloc_r): Likewise. (_callor_r): Likewise. (_free_r): Likewise. (_realloc_r): Likewise. 2009-04-20 Jeff johnston * libc/include/math.h: Change _LDBL_EQ_DBL flag usage to be _HAVE_LDBL_MATH. * libc/include/stdlib.h: Change _LDBL_EQ_DBL flag usage to be _HAVE_LDBL_STDLIB. 2009-04-17 Jeff johnston * libc/include/machine/ieeefp.h (_LDBL_EQ_DBL): Remove. * libc/stdlib/local.h (_LDBL_EQ_DBL): Add. * libc/stdlib/strtold.c: Include local.h. * libc/stdlib/wcstold.c: Likewise. * libm/common/atanl.c: Likewise. * libm/common/cosl.c: Likewise. * libm/common/sinl.c: Likewise. * libm/common/modfl.c: Likewise. * libm/common/frexpl.c: Likewise. * libm/common/tanhl.c: Likewise. * libm/common/tanl.c: Likewise. * libm/common/expm1l.c: Likewise. * libm/common/log1pl.c: Likewise. * libm/common/ceill.c: Likewise. * libm/common/fabsl.c: Likewise. * libm/common/floorl.c: Likewise. * libm/common/acosl.c: Likewise. * libm/common/asinl.c: Likewise. * libm/common/atan2l.c: Likewise. * libm/common/coshl.c: Likewise. * libm/common/expl.c: Likewise. * libm/common/fmodl.c: Likewise. * libm/common/hypotl.c: Likewise. * libm/common/ldexpl.c: Likewise. * libm/common/log10l.c: Likewise. * libm/common/logl.c: Likewise. * libm/common/powl.c: Likewise. * libm/common/sqrtl.c: Likewise. * libm/common/copysignl.c: Likewise. * libm/common/ilogbl.c: Likewise. * libm/common/nanl.c: Likewise. * libm/common/cbrtl.c: Likewise. * libm/common/asinhl.c: Likewise. * libm/common/nextafterl.c: Likewise. * libm/common/rintl.c: Likewise. * libm/common/scalbnl.c: Likewise. * libm/common/exp2l.c: Likewise. * libm/common/fdiml.c: Likewise. * libm/common/fmal.c: Likewise. * libm/common/fmaxl.c: Likewise. * libm/common/fminl.c: Likewise. * libm/common/lrintl.c: Likewise. * libm/common/lroundl.c: Likewise. * libm/common/nearbyintl.c: Likewise. * libm/common/remquol.c: Likewise. * libm/common/roundl.c: Likewise. * libm/common/scalblnl.c: Likewise. * libm/common/truncl.c: Likewise. * libm/common/acoshl.c: Likewise. * libm/common/atanhl.c: Likewise. * libm/common/erfcl.c: Likewise. * libm/common/erfl.c: Likewise. * libm/common/lgammal.c: Likewise. * libm/common/remainderl.c: Likewise. * libm/common/tgammal.c: Likewise. * libm/common/sinhl.c: Likewise. * libm/common/llroundl.c: Likewise. * libm/common/llrintl.c: Likewise. * libm/common/local.h: New file with _LDBL_EQ_DBL macro. 2009-04-17 Ken Werner * libc/include/machine/ieeefp.h: _LDBL_EQ_DBL check fixed. * libc/include/math.h (llrintl): Declare. * libm/common/llrintl.c: New File. * libm/common/Makefile.am: New File added. * libm/common/Makefile.in: Regenerate. 2009-04-17 Ken Werner * libc/configure.in: Change AC_TRY_COMPILE to AC_TRY_COMMAND to avoid executable test. * libc/configure: Regenerate. 2009-04-17 Jeff johnston * configure.in: Remove _HAVE_ARRAY_ALIASING check. * configure: Regenerated. * Makefile.in: Regenerated. * newlib.hin: Remove _HAVE_ARRAY_ALIASING flag. * libc/ctype/ctype_.c: Do not check for _HAVE_ARRAY_ALIASING. * libm/configure.in: Change AC_TRY_COMPILE to AC_TRY_COMMAND to avoid executable test. * libm/configure: Regenerated. 2009-04-16 Jeff johnston * libc/misc/init.c (__libc_fini_array): Process fini_array in reverse order as compliant with the ELF specification. 2009-04-16 Ken Werner * libc/machine/spu/Makefile.am: Add new File. * libc/machine/spu/Makefile.in: Regenerate. * libc/machine/spu/fdopen.c: New file. 2009-04-16 Hans-Peter Nilsson * libc/include/stdint.h (INTPTR_MIN, INTPTR_MAX, UINTPTR_MAX): Define. 2009-04-16 Ken Werner * libm/libm.texinfo: Add long double function support chapter. * libc/include/machine/ieeefp.h: Add _LDBL_EQ_DBL define. * libc/include/stdlib.h: Include . (strtold, wcstold): Declare. * libc/stdlib/strtold.c: New File. * libc/stdlib/wcstold.c: Likewise. * libc/configure.in: Add long double check. * libc/configure: Regenerate. * libc/stdlib/Makefile.am: Add strtold.c and wcstold.c. * libc/stdlib/Makefile.in: Regenerate. * libc/include/math.h (atanl, cosl, sinl, tanl, tanhl): Declare. (frexpl, modfl, ceill, fabsl, floorl, log1pl, expm1l, acosl): Ditto. (asinl, atan2l, coshl, sinhl, expl, ldexpl, logl, log10l, powl): Ditto. (sqrtl, fmodl, hypotl, copysignl, nanl, ilogbl, asinhl, cbrt): Ditto. (nextafterl, rintl, scalbnl, exp2l, scalblnl, tgammal): Ditto. (nearbyintl, lrintl, llrintl, roundl, lroundl, llround): Ditto. (llroundl, truncl, remquol, fdiml, fmaxl, fminl, fmal, acoshl): Ditto. (atanhl, remainderl, lgammal, erfl, erfcl): Ditto. * libm/common/atanl.c: New File. * libm/common/cosl.c: Likewise. * libm/common/sinl.c: Likewise. * libm/common/modfl.c: Likewise. * libm/common/frexpl.c: Likewise. * libm/common/tanhl.c: Likewise. * libm/common/tanl.c: Likewise. * libm/common/expm1l.c: Likewise. * libm/common/log1pl.c: Likewise. * libm/common/ceill.c: Likewise. * libm/common/fabsl.c: Likewise. * libm/common/floorl.c: Likewise. * libm/common/acosl.c: Likewise. * libm/common/asinl.c: Likewise. * libm/common/atan2l.c: Likewise. * libm/common/coshl.c: Likewise. * libm/common/expl.c: Likewise. * libm/common/fmodl.c: Likewise. * libm/common/hypotl.c: Likewise. * libm/common/ldexpl.c: Likewise. * libm/common/log10l.c: Likewise. * libm/common/logl.c: Likewise. * libm/common/powl.c: Likewise. * libm/common/sqrtl.c: Likewise. * libm/common/copysignl.c: Likewise. * libm/common/ilogbl.c: Likewise. * libm/common/nanl.c: Likewise. * libm/common/cbrtl.c: Likewise. * libm/common/asinhl.c: Likewise. * libm/common/nextafterl.c: Likewise. * libm/common/rintl.c: Likewise. * libm/common/scalbnl.c: Likewise. * libm/common/exp2l.c: Likewise. * libm/common/fdiml.c: Likewise. * libm/common/fmal.c: Likewise. * libm/common/fmaxl.c: Likewise. * libm/common/fminl.c: Likewise. * libm/common/lrintl.c: Likewise. * libm/common/lroundl.c: Likewise. * libm/common/nearbyintl.c: Likewise. * libm/common/remquol.c: Likewise. * libm/common/roundl.c: Likewise. * libm/common/scalblnl.c: Likewise. * libm/common/truncl.c: Likewise. * libm/common/acoshl.c: Likewise. * libm/common/atanhl.c: Likewise. * libm/common/erfcl.c: Likewise. * libm/common/erfl.c: Likewise. * libm/common/lgammal.c: Likewise. * libm/common/remainderl.c: Likewise. * libm/common/tgammal.c: Likewise. * libm/common/sinhl.c: Likewise. * libm/common/llroundl.c: Likewise. * libm/configure.in: Add long double check. * libm/configure: Regenerate. * libm/common/Makefile.am: Add new files. * libm/common/Makefile.in: Regenerate. 2009-04-09 Corinna Vinschen * libc/ctype/ctype_.c (_CTYPE_DATA_0_127): Remove _B flag from TAB. * libc/ctype/ctype_cp.h: Mark non-cased letters in tables for codepages 720, 862, 874, 1255, and 1256 to _U|_L. Fix a couple of incorrect class mappings. * libc/ctype/ctype_iso.h: Mark non-cased letters in ISO-8859 tables 6, 8, and 11 to _U|_L. Fix a couple of incorrect class mappings. * libc/ctype/isblank.c (isblank): Special case TAB. * libc/ctype/islower.c (islower): Check explicitely for _L flag only in (_U|_L). * libc/ctype/isupper.c (isupper): Ditto, but check for _U flag. * libc/include/ctype.h (islower): Same in macro. (isupper): Ditto. (isblank): Special case TAB. Redefine macro for GCC only. 2009-04-09 Corinna Vinschen * libc/stdlib/local.h (__mbtowc): Declare extern. (__wctomb): Ditto. 2009-04-09 Corinna Vinschen * libc/stdlib/mbctype.h (_iseucjp1): Like _iseucjp, but also recognizes 0x8e and 0x8f lead bytes. (_iseucjp2): Rename from _iseucjp. * libc/stdlib/mbtowc_r.c (__eucjp_mbtowc): Convert JIS-X-0212 triplebyte sequences as well. * libc/stdlib/wctomb_r.c (__eucjp_wctomb): Convert to JIS-X-0212 triplebyte sequences as well. 2009-04-08 Ken Werner * configure.in: Add square brackets for the array aliasing conftest. * configure: Regenerate. 2009-04-06 Mike Burgess * libc/string/strncasecmp.c: Optimized rewrite. 2009-04-06 Ken Werner * libc/include/sys/features.h: Undefine _POSIX_TIMERS for spu. * libc/include/machine/time.h (nanosleep): Declare. 2009-04-06 Corinna Vinschen * libc/locale/locale.c (loadlocale): Set mbc_max to 3 for EUCJP. 2009-04-04 Corinna Vinschen * libc/stdlib/wcstombs.c: Fix datatypes in documentation. 2009-04-04 Corinna Vinschen * libc/include/stdio.h (_ELIDABLE_INLINE): Move definition from here... * libc/include/_ansi.h (_ELIDABLE_INLINE): ..to here. 2009-04-03 Yaakov Selkowitz * libc/include/stdio.h [__SCLE] (__sgetc_r): Prototype before define to avoid a warning with -Wmissing-prototypes. 2009-04-03 Ken Werner * libc/machine/spu/mmap_ea.c (mmap_ea): Check length argument. 2009-04-03 Ken Werner * libc/machine/spu/sys/linux_syscalls.h: include (linux_getpid, linux_gettid): Declare. 2009-04-03 Ken Werner * libc/machine/spu/spu-gmon.c: Tweaks to support simultaneous SPU profiling. 2009-04-03 Ken Werner * libc/include/math.h: Remove duplicate copysign prototype. Fix __math_68881 define typo. Guard functions of the rint family. 2009-04-03 Craig Howland * libm/common/s_llrint.c: New file, implementing llrint(). * libm/common/sf_llrint.c: New file, implementing llrintf(). * libm/common/Makefile.am: Add s_llrint.c (src); sf_llrint.c (fsrc). * libm/common/Makefile.in: Regenerate. 2009-04-02 Corinna Vinschen * libc/ctype/ctype_c.c: Move inclusion of ctype_iso.h and ctype_cp.h out of ALLOW_NEGATIVE_CTYPE_INDEX case. (__ctype_ptr__): Constify in !_MB_CAPABLE case. Otherwise, de-constify in !ALLOW_NEGATIVE_CTYPE_INDEX case, too. Add comment. (__set_ctype): Set __ctype_ptr__ pointer according to definition of ALLOW_NEGATIVE_CTYPE_INDEX. * libc/include/ctype.h (__ctype_ptr__): Constify in !_MB_CAPABLE case. 2009-03-31 Corinna Vinschen * libc/ctype/Makefile.am: Remove _tolower.c and _toupper.c source files. Add a dependency rule for ctype_o to note changes in ctype_iso.h and ctype_cp.h. * libc/ctype/Makefile.in: Regenerate. * libc/ctype/_tolower.c: Remove file. * libc/ctype/_toupper.c: Remove file. * libc/ctype/ctype_.c: Make sure ALLOW_NEGATIVE_CTYPE_INDEX is always defined on Cygwin. (_ctype_b): Don't make `static const' on Cygwin. (ctype_iso.h): Include if _MB_EXTENDED_CHARSETS_ISO is set. (ctype_cp.h): Include if _MB_EXTENDED_CHARSETS_WINDOWS is set. (__ctype_ptr): Drop definition. (__ctype_ptr__): De-constify. Mark as __EXPORT symbol. (_ctype_): Add Cygwin-specifc asm define. (__set_ctype): New function to set __ctype_ptr__ according to current charset. * libc/ctype/ctype_cp.h: New file containing Windows codepage specific character class tables. * libc/ctype/ctype_iso.h: New file containing ISO-8859-x specific character class tables. * libc/ctype/tolower.c (tolower): Reimplement to support any singlebyte charset if one of the extended charsets is enabled. * libc/ctype/toupper.c (toupper): Ditto. * libc/include/ctype.h (_tolower): Define as macro per POSIX. (_toupper): Ditto. (__ctype_ptr__): De-constify. (toupper): Disable macro on systems supporting extended charsets. (tolower): Ditto. * libc/include/sys/config.h (__EXPORT): Define empty if not defined. * libc/locale/locale.c (__mb_cur_max): Mark as __EXPORT symbol. (__set_ctype): Declare unconditionally. (loadlocale): Remove __CYGWIN__ guard around __set_ctype call. 2009-03-26 Corinna Vinschen * libc/locale/locale.c (loadlocale): Revert to charset "GBK" instead of "GB2312". Fix documentation accordingly. 2009-03-26 Corinna Vinschen * libc/ctype/ctype_.c (_CTYPE_DATA_0_127): Mark TAB as blank character. * libc/ctype/isblank.c: Replace hardcoded test with test for having _B marker in ctype array. * libc/include/ctype.h (isblank): Add macro. 2009-03-25 Craig Howland * libc/include/math.h: (llround, llroundf): Declare. * libm/common/s_llround.c: New file, implementing llround(). * libm/common/sf_llround.c: New file, implementing llroundf(). * libm/common/sf_lround.c: Remove spurious cast in _DOUBLE_IS_32BITS version of function. * libm/common/sf_lrint.c: Ditto. * libm/common/sf_logb.c: Corrected return for subnormal argument by replacing existing function with a version created from sf_ilogb.c. * libm/common/s_logb.c: Ditto, except starting point s_ilogb.c. Also added documentation for logb() and logbf(). * libm/common/s_signbit.c: Add signbit() documentation. * libm/common/s_log2.c: Update return values to match what w_log2.c has, since log2 uses log(); add note about being derived instead of direct. * libm/common/sf_fma.c: Add casts to attempt to get correct results, as well as comments pointing out problems with the implementation. * libm/common/s_fma.c: Add fma() and fmaf() documentation. * libm/common/sf_remquo.c: Incorrect quotient returns for large values corrected by discarding existing function and replacing with Sun verion, with some enhancements. * libm/common/s_remquo.c: Ditto. Add remquo() and remquof() documentation. * libm/common/s_fmax.c: Add fmax() and fmaxf() documentation. * libm/common/s_fmin.c: Add fmin() and fminf() documentation. * libm/common/s_fdim.c: Return NAN for NAN arg, add fdim() and fdimf() documentation. * libm/common/sf_fdim.c: Return NAN for NAN arg, HUGE_VALF for inf arg. * libm/common/s_trunc.c: Add trunc() and truncf() documentation. * libm/common/s_rint.c: Add rint() and rintf() documentation. * libm/common/s_round.c: Add round() and roundf() documentation. * libm/common/s_scalbn.c: Add scalbln() and scalblnf() documentation. * libm/common/s_infinity.c: Add infinity() and infinityf() documentation. * libm/common/s_lround.c: Add lround(), lroundf(), llround(), and llroundf() documentation. * libm/common/s_lrint.c: Add lrint(), lrintf(), llrint(), and llrintf() documentation. * libm/common/isgreater.c: New file for documenting math.h function-like macros isgreater(), isgreaterequal(), isless(), islessequal(), islessgreater(), and isunordered(). * libm/common/s_isnan.c: Add documentation for function-like macros fpclassify(), isfinite(), isinf(), isnan(), and isnormal(). * libm/common/s_nearbyint.c: Add nearbyint() and nearbyintf() documentation. * libm/common/Makefile.am: Add s_llround.c (src); sf_llround.c (fsrc); s_fdim.def, s_fma.def, s_fmax.def, s_fmin.def, s_logb.def, s_lrint.def, s_lround.def, s_nearbyint.def, s_remquo.def, s_rint.def, s_round.def, s_signbit.def, s_trunc.def, and isgreater.def (chobj); re-name all existing chew files (chobj) to match source file base names (put in underscores), delete all special targets for chew files (leaving all to be generated by rule). * libm/common/Makefile.in: regenerate. * libm/math/w_exp2.c: Add "base 2" to documentation description (and delete TRAD_SYNOPSIS). * libm/math/w_gamma.c: Add tgamma() and tgammaf() documentation, along with some history behind the function names. * libm/math/math.tex: Add includes for newly-added documentation (see .def additions to common/Makefile.am and math/Makefile.am in this ChangeLog list), adjusted existing .def file names to match source file base names (added underscores); add mention of HUGE_VALF; rename "Version of library" section to "Error Handling" and add some text about floating-point exception; added section "Standards Compliance And Portability". * libm/math/Makefile.am: Add w_exp2.def (chobj); re-name all existing chew files (chobj) to match source file base names, delete all special targets for chew files (leaving all to be generated by rule). * libm/math/Makefile.in: regenerated * doc/makedoc.c: Change silent ignoring of commands < 5 characters to a failure when reading macro file for commands < 4 characters; add -v (verbose) option for printing some debugging information; get rid of spurious translation of "@*" to "*" (no source files used @*, so no existing doc pages were affected); clean up some compiler warnings. * doc/doc.str: add BUGS and SEEALSO sections (to match texi2pod.pl which has them); Remove ITEM command (redundant with makedoc built-in "o", not used in any present source file so nothing is lost, anyway). * HOWTO: New file to hold information for maintainers regarding how to do things. Initial sections on documentation and ELIX levels. 2009-03-25 Richard Earnshaw * libc/machine/arm/strcmp.c (strcmp_unaligned): Correctly detect the nul-byte in a big-endian string. 2009-03-25 Jeff Johnston * libc/string/wcsdup.c: Fix documentation error. * libc/string/Makefile.am: Fix CHEWOUT files to contain wcsdup.def rather than wcsdup. * libc/string/Makefile.in: Regenerated. 2009-03-25 Corinna Vinschen * libc/locale/locale.c (loadlocale): Only change __wctomb and __mbtowc pointers if category is LC_CTYPE. 2009-03-25 Corinna Vinschen * libc/locale/locale.c (loadlocale): Rename charset "GBK" to "GB2312". Fix documentation accordingly. 2009-03-24 Corinna Vinschen * libc/locale/locale.c (loadlocale): Rename charset "CP949" to "eucKR". Fix documentation accordingly. 2009-03-24 Corinna Vinschen * libc/locale/locale.c (loadlocale): Allow charset starting with 'e' for "eucJP" charset support. 2009-03-24 Jeff Johnston * libc/include/sys/errno.h: Move EFTYPE to general usage because it is used in libc/search. 2009-03-24 Corinna Vinschen * libc/ctype/iswalpha.c: Handle all wchar_t as unicode on _MB_CAPABLE systems. * libc/ctype/iswblank.c: Ditto. * libc/ctype/iswcntrl.c: Ditto. * libc/ctype/iswprint.c: Ditto. * libc/ctype/iswpunct.c: Ditto. * libc/ctype/iswspace.c: Ditto. * libc/ctype/jp2uc.c (__jp2uc): On Cygwin, just return c. Explain why. * libc/ctype/towlower.c: Ditto. * libc/ctype/towupper.c: Ditto. * libc/include/sys/config.h: Define _MB_EXTENDED_CHARSETS_ISO and _MB_EXTENDED_CHARSETS_WINDOWS if _MB_EXTENDED_CHARSETS_ALL is defined. Define _MB_EXTENDED_CHARSETS_ALL on Cygwin only for now. * libc/include/sys/reent.h (struct _reent): Mark _current_category and _current_locale as unused. * libc/locale/locale.c: Add new charset support to documentation. Include ../stdio/local.h from here. (lc_ctype_charset): Set to "ASCII" by default. (lc_message_charset): Ditto. (_setlocale_r): Don't set _current_category and _current_locale. (loadlocale): Add Cygwin codepage support. On _MB_CAPABLE systems, set __mbtowc and __wctomb function pointers to function corresponding with current charset. Don't allow non-existant ISO-8859-12 charset. Add support for Windows singlebyte codepages. On Cygwin, add support for GBK, CP949, and BIG5. On Cygwin, call __set_ctype() in case the catorgy is LC_CTYPE. Don't set _current_category and _current_locale. * libc/stdlib/Makefile.am (GENERAL_SOURCES): Add sb_charsets.c. * libc/stdlib/Makefile.in: Regenerate. * libc/stdlib/local.h: Add prototype for __locale_charset. Add prototypes for __mbtowc and __wctomb pointers. Add prototypes for charset-specific _wctomb_r and _mbtowc_r functions. Declare tables and functions from sb_charsets.c. * libc/stdlib/mbtowc_r.c (__mbtowc): Define. Set to __ascii_mbtowc by default. (_mbtowc_r): Just call __mbtowc from here. (__ascii_mbtowc): New function. (__iso_mbtowc): New function. (__cp_mbtowc): New function. (__utf8_mbtowc): New function. (__sjis_mbtowc): New function. Disable on Cygwin. (__eucjp_mbtowc): New function. Disable on Cygwin. (__jis_mbtowc): New function. Disable on Cygwin. * libc/stdlib/sb_charsets.c: New file, adding singlebyte to UTF conversion tables for all ISO and CP charsets. (__iso_8859_index): New function. (__cp_index): New function. * libc/stdlib/wctomb_r.c (__wctomb): Define. Set to __ascii_wctomb by default. (_wctomb_r): Just call __wctomb from here. (__ascii_wctomb): New function. (__utf8_wctomb): New function. (__sjis_wctomb): New function. Disable on Cygwin. (__eucjp_wctomb): New function. Disable on Cygwin. (__jis_wctomb): New function. Disable on Cygwin. (__iso_wctomb): New function. (__cp_wctomb): New function. 2009-03-23 Richard Earnshaw * libc/machine/arm/strcmp.c (strcmp): Treat char as unsigned. 2009-03-23 Corinna Vinschen * libc/locale/locale.c (loadlocale): Fix typo in language and territory evaluation. 2009-03-20 Jeff Johnston * libc/include/sys/errno.h: Protect various non-standard errnos with either __LINUX_ERRNO_EXTENSIONS__ or __CYGWIN__. * libc/include/sys/config.h[__CYGWIN__]: Define __LINUX_ERRNO_EXTENSIONS__. 2009-03-19 Corinna Vinschen * libc/stdlib/mbtowc_r.c (_mbtowc_r): Return EILSEQ in case of an invalid character sequence. * libc/stdlib/mbtowc_r.c (_mbtowc_r): Fix compiler warning due to missing declaration of __locale_charset. * libc/stdlib/wctomb_r.c (_wctomb_r): Ditto. 2009-03-18 Yaakov Selkowitz * libm/common/s_log2.c: New file. * libm/common/sf_log2.c: Ditto. * libm/common/Makefile.am: Add s_log2.c and sf_log2.c. * libm/common/Makefile.in: Regenerated. * libc/include/math.h: Add log2 and log2f function prototypes. 2009-03-17 Corinna Vinschen * libc/stdlib/mbstowcs_r.c (_mbstowcs_r): Handle NULL destination string correctly. 2009-03-16 Mark Mitchell * libc/machine/arm/strlen.c (strlen): Fix defect in Thumb-2 mode. 2009-03-16 Richard Earnshaw * libc/machine/arm/strlen.c (strlen): Correctly detect end-of-string. * libc/machine/arm/strcpy.c (strcpy): Likewise. * libc/machine/arm/strcmp.c (strcmp, strcmp_unaligned): Likewise. 2009-03-15 Yaakov Selkowitz * libc/include/sys/errno.h (ESTRPIPE): Define. * libc/string/strerror.c (strerror): Decode it. 2009-03-15 Corinna Vinschen * libc/include/wchar.h (wcsdup, _wcsdup_r): Declare. * libc/string/Makefile.am: Add wcsdup.c. * libc/string/Makefile.in: Regenerate. * libc/string/strings.tex: Add wcsdup documentation reference. * libc/string/wcsdup.c: New file. 2009-03-14 Corinna Vinschen * libc/include/stdlib.h (_mkstemp_r, _mktemp_r): Move out of !_REENT_ONLY section. 2009-03-14 Corinna Vinschen * libc/include/stdio.h (_mkstemp_r, _mktemp_r): Move declarations to stdlib.h. * libc/include/stdlib.h (mktemp, _mktemp_r): Warn when using. * libc/stdio/mktemp.c: Explain the security risk when using mktemp. 2009-03-12 Craig Howland * libc/time/time.tex (wcsftime.def): Include. * libc/time/wcsftime.c: Clean up documentation a little. 2009-03-12 Craig Howland * libc/stdio/swscanf.c: Some documentation corrections. 2009-03-12 Craig Howland * libc/stdio/swprintf.c (_swprintf_r, swprintf): correct how terminating L'\0' is added; change return to match standard for when output does not fit; some corrections and enhancements to the docs. * libc/stdio/vswprintf.c (_vswprintf_r): ditto, except for docs. * libc/stdio/vfwprintf.c: some corrections to the docs and some enhancements to comments. (No code changes.) * libc/time/strftime.c: Correct some problems that made wcsftime() not work correctly: work properly with swprintf returns that are different from snprintf returns, correct test vector lengths for when sizeof(wchar_t) > 1. * libc/stdio/sprintf.c: Some documentation and comment corrections and enhancements to match those done to swprintf.c. 2009-03-11 Corinna Vinschen * libc/include/wchar.h (wcscasecmp, wcsncasecmp): Declare. * libc/string/Makefile.am: Add wcscasecmp.c, wcsncasecmp.c * libc/stdio/Makefile.in: Regenerate. * libc/string/strings.tex: Add new documentation references. * libc/string/wcscasecmp.c: New file. * libc/string/wcsncasecmp.c: New file. 2009-03-11 Corinna Vinschen * libc/include/wchar.h (fwscanf, swscanf, vfwscanf, vswscanf, vwscanf, wscanf): Declare. (_fwscanf_r, _swscanf_r, _vfwscanf_r, _vswscanf_r, _vwscanf_r, _wscanf_r): Declare. * libc/stdio/Makefile.am: Add new wscanf files. * libc/stdio/Makefile.in: Regenerate. * libc/stdio/fwscanf.c: New file. * libc/stdio/local.h (__svfwscanf_r, __ssvfwscanf_r, __svfiwscanf_r, __ssvfiwscanf_r): Declare. * libc/stdio/stdio.tex: Add new documentation references. * libc/stdio/swscanf.c: New file. * libc/stdio/vfwscanf.c: New file. * libc/stdio/vswscanf.c: New file. * libc/stdio/vwscanf.c: New file. * libc/stdio/wscanf.c: New file. * libc/stdio/vfscanf.c (_sungetc_r): Make externaly available. Only define if INTEGER_ONLY is defined. Declare otherwise. (__ssrefill_r): Ditto. (_sfread_r): Ditto. Remove static eofread/eofread1 functions and use __seofread function instead, throughout. * libc/stdio/local.h (__seofread): Declare. * libc/stdio/stdio.c (__seofread): Define. * libc/stdio/fgetwc.c (__fgetwc): Fix compiler warning. * libc/stdio/fgetws.c (_fgetws_r): Ditto. * libc/stdio/fread.c (_fread_r): Ditto. * libc/stdio/vfprintf.c: Ditto. * libc/stdio/vswprintf.c: Ditto. 2009-03-09 Brooks Moses * libc/machine/arm/arm_asm.h: Fix typo. 2009-03-09 Craig Howland * libc/time/strftime.c: Adapt for dual-purpose use so not only defines strftime(), but can also define wcsftime(); add optional test package; speed up %Y handling. * libc/time/wcsftime.c: New file, defining wcsftime() (albeit indirectly by including strftime.c) and its documentation. * libc/time/time.tex: Enhance tm_isdst explanation, change strftime description to match modified description in strftime.c * libc/time/Makefile.am: Add wcsftime.c and wcsftime.def. Add a rule so that wcsftime.o gets rebuilt when strftime changes. * libc/time/Makefile.in: Regenerate. * libc/include/wchar.h (wcsftime): Declare. 2009-03-06 Hans-Erik Floryd , Corinna Vinschen * libc/reent/reent.c (_reclaim_reent): Make a block from MP-related statements in _REENT_SMALL case. Check if _atexit is not NULL before dereferencing it. (_wrapup_reent): Check if _atexit is not NULL before dereferencing it. 2009-03-06 Corinna Vinschen * libc/include/stdio.h (__VALIST): Guard against multiple definition. * libc/include/wchar.h: Include stdarg.h. (__VALIST): Define conditionally. (fwprintf, swprintf, vfwprintf, vswprintf, vwprintf, wprintf): Declare. (_fwprintf_r, _swprintf_r, _vfwprintf_r, _vswprintf_r, _vwprintf_r, _wprintf_r): Declare. * libc/stdio/Makefile.am: Add new files. * libc/stdio/Makefile.in: Regenerate. * libc/stdio/fwprintf.c: New file. * libc/stdio/local.h (_svfwprintf_r, _svfiwprintf_r): Declare. (__CH_CLASS, __STATE, __ACTION): Move definition from vfprintf.c here and move to the __ namespace. (__chclass, __state_table, __action_table): Declare. * libc/stdio/stdio.tex: Add new documentation references. * libc/stdio/swprintf.c: New file. * libc/stdio/vfprintf.c (__SPRINT): New macro to call the right __sprint_r function according to compilation unit. Use throughout. (__ssprint_r): Rename STRING_ONLY variant from __sprint_r. Make externaly available. Only define if INTEGER_ONLY is defined. (__sprint_r): Make externaly available. Only define if INTEGER_ONLY is defined. Handle stream orientation. (__sbprintf): Copy FILE's _flags2 member as well. (__chclass, __state_table, __action_table): Prepend __ to name and make externally available. * libc/stdio/vfwprintf.c: New file. * libc/stdio/vswprintf.c: New file. * libc/stdio/vwprintf.c: New file. * libc/stdio/wprintf.c: New file. 2009-03-03 Corinna Vinschen * libc/locale/locale.c (_setlocale_r): New implementation based on FreeBSD's setlocale. (currentlocale): New helper function. (loadlocale): Ditto. (__locale_charset): New function. (__locale_msgcharset): Rename from __locale_charset. * libc/ctype/local.h (__lc_ctype): Remove declaration. (__locale_charset): Declare. * libc/ctype/iswalpha.c (iswalpha): Call __locale_charset instead of using __lc_ctype directly. Only compare against the charset alone. * libc/ctype/iswblank.c (iswblank): Ditto. * libc/ctype/iswcntrl.c (iswcntrl): Ditto. * libc/ctype/iswprint.c (iswprint): Ditto. * libc/ctype/iswpunct.c (iswpunct): Ditto. * libc/ctype/iswspace.c (iswspace): Ditto. * libc/ctype/towlower.c (towlower): Ditto. * libc/ctype/towupper.c (towupper): Ditto. * libc/stdlib/mbtowc_r.c (_mbtowc_r): Ditto. * libc/stdlib/wctomb_r.c (_wctomb_r): Ditto. * libc/sys/linux/intl/loadmsgcat.c (_nl_init_domain_conv): Call __locale_msgcharset instead of __locale_charset. 2009-03-02 Jeff Johnston * libc/stdlib/wctomb_r.c (_wctomb_r): When checking single-byte charset, cast wchar to size_t in case wchar_t is signed. * libc/stdlib/wctomb.c (wctomb): Add similar single-byte check. 2009-03-02 Corinna Vinschen * libc/stdlib/wctomb_r.c (_wctomb_r): Return EILSEQ in case of an invalid wchar. Return -1 if wchar doesn't fit into singlebyte value in case of using a singlebyte charset. 2009-02-26 Brooks Moses * libc/machine/arm/strcpy.c: Add missing comma. 2009-02-26 Ralf Corsepius * libc/machine/lm32/configure.in: Let AC_CONFIG_SRCDIR point to setjmp.S instead of setjmp.s * libs/machine/lm32/configure: Regenerate. 2009-02-25 Brooks Moses * libc/stdlib/Makefile.am (CHEWOUT_FILES): Add mbsnrtowcs.def, wcsnrtombs.def. * libc/stdlib/Makefile.in: Regenerate. * libc/stdlib/stdlib.tex (@menu): Use correct section names for mbsrtowcs, wcsrtombs. * libc/stdlib/wcstod.c: Remove stray character in documentation. 2009-02-25 Corinna Vinschen * libc/stdlib/mbtowc_r.c (_mbtowc_r): Remove conversion of 5 and 6 byte UTF-8 sequences since they are invalid in the Unicode standard. Handle surrogate pairs in case of wchar_t == UTF-16. * libc/stdlib/wctomb_r.c (_wctomb_r): Don't convert invalid Unicode wchar_t values beyond 0x10ffff into UTF-8 chars. Handle surrogate pairs in case of wchar_t == UTF-16. 2009-02-24 Kevin Buettner * libc/stdio/open_memstream.c (stdint.h): Include. 2009-02-23 Craig Howland * libc/unix/ttyname.c: Remove ttyname_r() (to a new file to avoid coupling ttyname_r() and ttyname() due to the latter's large buffer). * libc/unix/ttyname_r.c: New file to hold ttyname_r(), previously in ttyname.c. * libc/unix/ttyname.h: New file (common size definition for the 2 ttyname*c files that are now split). * libc/unix/Makefile.am (ELIX_2_SOURCES): Add ttyname_r.c. * libc/unix/Makefile.in: Regenerate. 2009-02-19 Corinna Vinschen * libc/include/wchar.h (mbsnrtowcs): Declare. (_mbsnrtowcs_r): Declare. (wcsnrtombs): Declare. (_wcsnrtombs_r): Declare. * libc/stdlib/Makefile.am (ELIX_2_SOURCES): Add mbsnrtowcs.c and wcsnrtombs.c. * libc/stdlib/Makefile.in: Regenerate. * libc/stdlib/mbsnrtowcs.c: New file, implementing _mbsnrtowcs_r and mbsnrtowcs. Document mbsnrtowcs and mbsrtowcs. * libc/stdlib/mbsrtowcs.c (_mbsrtowcs_r): Just call _mbsnrtowcs_r. (mbsrtowcs): Ditto. * libc/stdlib/wcsnrtombs.c: New file, implementing _wcsnrtombs_r and wcsnrtombs. Document wcsrtombs and wcsnrtombs. * libc/stdlib/wcsrtombs.c (_wcsrtombs_r): Just call _wcsnrtombs_r. (wcsrtombs): Ditto. * libc/stdlib/stdlib.tex: Accommodate new documentation. 2009-02-18 Jeff Johnston * libc/stdio/open_memstream.c (internal_open_memstream_r): Fix max buffer size to be in wchar_t units if wide == 1 is passed in. In this case, also initialize the first character of the buffer to be wide char null. (_open_wmemstream_r): Cast buf to be (char **) to avoid warning. * libc/stdlib/mbtowc_r.c (_mbtowc_r): Change all occurences of incrementing the size_t value n to first check that n is not already size_t -1. Fix some compiler warnings. * libc/stdlib/wcstod.c: Add includes for and . 2009-02-18 Corinna Vinschen * libc/stdio/open_memstream.c: Add open_wmemstream to doumentation. (struct memstream): Add wide element. Change saved to a union to take char and wchar_t values. (memwriter): Accommodate wide-oriented oeprations. (memseeker): Ditto. (memseeker64): Ditto. (memcloser): Ditto. (internal_open_memstream_r): New static function. Take functionality from former _open_memstream_r and handle additional "wide" parameter. (_open_memstream_r): Just call internal_open_memstream_r with wide==-1 from here. (_open_wmemstream_r): New function. (open_wmemstream): Ditto. * libc/include/wchar.h (open_wmemstream): Declare. (_open_wmemstream_r): Declare. 2009-02-16 Corinna Vinschen * libc/stdio/fputwc.c: Fix typo in man page info. 2009-02-12 Corinna Vinschen * libc/include/wchar.h (_wcstod_r): Declare. (_wcstof_r): Declare. (wcstod): Declare. (wcstof): Declare. * libc/stdlib/Makefile.am (GENERAL_SOURCES): Add wcstod.c. (CHEWOUT_FILES): Add wcstod.def. * libc/stdlib/Makefile.in: Regenerate. * libc/stdlib/stdlib.tex: Add wcstod. * libc/stdlib/wcstod.c: New file. 2009-02-05 Neal H. Walfield * libc/machine/x86_64/memcpy.S (memcpy): Don't use the red zone. 2009-01-28 Jeff Johnston * libc/stdio/vfscanf.c (__SVFSCANF_R): Add additional check for inf and nan processing to not proceed if we have already collected zeroes. 2009-01-26 DJ Delorie * configure.host (m32c-*-*): Add long long I/O support by default. 2009-01-21 Richard Earnshaw * libc/machine/arm/arm_asm.h: New file. * libc/machine/arm/strlen.c: New file. * libc/machine/arm/strcpy.c: New file. * libc/machine/arm/strcmp.c: New file. * libc/machine/arm/Makefile.am: Add new string routines. 2009-01-19 Neal H. Walfield * libc/include/stdint.h (INT64_C, UINT64_C, INTMAX_C, UINTMAX_C) [__have_long64 && __have_longlong64]: Use L and UL, not LL and ULL. * libc/include/inttypes.h (__PRI64, __SCN64, __PRIMAX, __SCNMAX, __PRIPTR, __SCNPTR) [__have_long64 && __have_longlong64]: Use l, not ll. 2009-01-12 Nathan Froyd * libc/machine/powerpc/vfscanf.c (__sccl): Remove declaration. 2009-01-12 Jeff Johnston * libc/stdio/fwalk.c (__fwalk, __fwalk_reent): Remove locking of each fp. Let the function being called lock the fp, if necessary. 2009-01-07 Kazu Hirata * libc/include/sys/stdio.h (_flockfile, _funlockfile): Fix typos. 2009-01-05 Craig Howland * libc/stdio/fwide.c: Correct typo in TRAD_SYNOPSIS for _fwide_r. 2008-12-19 Jeff Johnston * NEWS: Update with 1.17.0 info. * README: Ditto. * acinclude.m4: Change version number to 1.17.0. * aclocal.m4: Regenerated. * configure: Ditto. * doc/aclocal.m4: Ditto. * doc/configure: Ditto. * libc/*/aclocal.m4: Ditto. * libc/*/configure: Ditto. * libc/libc.texinfo: Ditto. * libm/*/aclocal.m4: Ditto. * libm/*/configure: Ditto. * libm/libm.texinfo: Ditto. * libc/sys/linux/shared.ld: Add VERS_1.17 2008-12-17 Jon Beniston * configure.host: Set syscall_dir for lm32 target. 2008-12-15 Jeff Johnston * libc/stdio/stdio.tex: Remove putwc and getwc references as they are included as part of fputwc and fgetwc, respectively. 2008-12-12 Craig Howland * libc/include/wchar.h: Added wcstok() declaration. * libc/string/wcstok.c: New file, implementing wcstok. * libc/string/Makefile.am: Add wcstok support. * libc/string/wcstrings.tex: Ditto. * libc/string/Makefile.in: Regenerated. 2008-12-12 Ralf Corsepius * libc/stdio/fputws.c: Fix documentation. * libc/stdio/getwchar.c: Ditto. * libc/stdio/putwchar.c: Ditto. 2008-12-12 Ralf Corsepius * libc/include/sys/features.h: Set RTEMS's _POSIX_MONOTONIC_CLOCK to 200112L (SUSv3 compliance). Comment out RTEMS's _POSIX_SHARED_MEMORY_OBJECTS (Unsupported). 2008-12-12 Ralf Corsepius * libc/sys/rtems/crt0.c: Add stubs for getdents(), nanosleep(), _execve(), _exit(). 2008-12-12 Ralf Corsepius * configure.host: Let *rtems* default to c99-formats. 2008-12-12 Craig Howland * libc/stdio/freopen.c: Add for memset prototype. * libc/stdio/fseek.c: Ditto. * libc/stdio/fwide.c: Add for fwide prototype. 2008-12-11 Jeff Johnston * libc/include/sys/time.h (gettimeofday): Change prototype so 2nd parameter is void *, matching SUSV2. * libc/syscalls/sysgettod.c (gettimeofday): Ditto. 2008-12-11 Jukka Pietarinen * configure.host: Add lm32 * libc/include/machine/ieeefp.h: Add __lm32__ * libc/include/machine/setjmp.h: Add __lm32__ * libc/machine/configure.in: Add lm32 * libc/machine/configure: Regenerated. * libc/machine/lm32/aclocal.m4: New file. * libc/machine/lm32/configure.in: Ditto. * libc/machine/lm32/configure: Ditto. * libc/machine/lm32/Makefile.am: Ditto. * libc/machine/lm32/Makefile.in: Ditto. * libc/machine/lm32/setjmp.s: Ditto. 2008-12-11 Craig Howland * libc/include/sys/lock.h: Add void cast to avoid "statement has no effect" warnings from gcc. * libc/include/sys/stdio.h: Ditto. * libc/include/sys/time.h: Correct gettimeofday() prototype. * libc/stdlib/__exp10.c: Add #include "std.h" for function prototype. * libc/stdlib/__ten_mu.c: Ditto. * libc/stdlib/std.h: Correct __exp10's ANSI prototype. * libc/stdlib/ldtoa.c: Change eiisinf definition to ANSI form. (Are already others in file without _ansi method, so did not bother.) * libc/stdlib/system.c: Use _ansi forms for function prototypes and definitions. * libc/time/mktime.c: Ditto. * libc/misc/__dprintf.c: Ditto. * libc/include/stdio.h: Add function prototypes for _fgetc_r, _fgetpos_r, _fsetpos_r, _freopen_r, _rewind_r, freopen64, _freopen64_r, _funopen_r, and _fopencookie_r. * libc/include/reent.h: Add function prototype for _stat64_r, align _execve_r prototype with POSIX definition for execve. * libc/reent/execr.c: Align function prototype with POSIX definition. * libc/stdio/asniprintf.c: Add #include "local.h". * libc/stdio/vasniprintf.c: Ditto. * libc/stdio/fread.c: Remove unused variable newcount. * libc/stdio/local.h: Add function prototype for __sccl. * libc/stdio/open_memstream.c: Remove unused variable flags. * libc/stdio/vfscanf.c: Proper prototyping for ccfn, remove prototype for __sccl since now in local.h. * libc/string/memcpy.c: Add #include (for real and for traditional synopsis), remove extraneous stddef.h and limits.h. * libc/syscalls/sysclose.c: Add #include . * libc/syscalls/sysfork.c: Ditto. * libc/syscalls/sysgetpid.c: Ditto. * libc/syscalls/sysexecve.c: Add #include , align function prototype with POSIX definition. * libc/syscalls/sysfstat.c: Add #include . * libc/syscalls/sysgettod.c: Correct sys/times.h to sys/time.h. * libc/syscalls/syskill.c: Add #include . * libc/syscalls/syslink.c: Add #include , fix prototype. * libc/syscalls/sysunlink.c: Ditto. * libc/syscalls/sysstat.c: Add #include , fix prototype. * libc/syscalls/syswait.c: Add #include , fix prototype. 2008-12-10 Corinna Vinschen Implement basic wide char stdio functionality, based on FreeBSD. * libc/include/stdio.h (__SORD): Define. (__SWID): Define. * libc/include/wchar.h: Add declarations for new wide char functions. (getwc): Define as macro. (getwchar): Ditto. (putwc): Ditto. (putwchar): Ditto. * libc/include/sys/reent.h (struct __sFILE): Add _mbstate member. (struct __sFILE64): Ditto. * libc/stdio/Makefile.am (ELIX_4_SOURCES): Add fgetwc.c, fgetws.c, fputwc.c, fputws.c, fwide.c, getwc.c, getwchar.c, putwc.c, putwchar.c and ungetwc.c. (CHEWOUT_FILES): Add fgetwc.def, fgetws.def, fputwc.def, fputws.def, fwide.def, getwc.def, getwchar.def, putwc.def, putwchar.def and ungetwc.def. Add header dependency rules for the new files. * libc/stdio/Makefile.in: Regenerate. * libc/stdio/fgetwc.c: New file, implementing fgetwc and _fgetwc_r. * libc/stdio/fgetws.c: New file, implementing fgetws and _fgetws_r. * libc/stdio/findfp.c (std): Initialize FILE's _mbstate member. (__sfmoreglue): Ditto. * libc/stdio/fputs.c (_fputs_r): Set stream orientation. * libc/stdio/fputwc.c: New file, implementing fputwc and _fputwc_r. * libc/stdio/fputws.c: New file, implementing fputws and _fputws_r. * libc/stdio/fread.c (_fread_r): Set stream orientation. * libc/stdio/freopen.c (_freopen_r): Reset stream orientation. Reset _mbstate. * libc/stdio/fseek.c (_fseek_r): Reset _mbstate. * libc/stdio/fwide.c: New file, implementing fwide and _fwide_r. * libc/stdio/fwrite.c (_fwrite_r): Set stream orientation. * libc/stdio/getwc.c: New file, implementing getwc and _getwc_r. * libc/stdio/getwchar.c: New file, implementing getwchar and _getwchar_r. * libc/stdio/local.h (ORIENT): New macro. * libc/stdio/puts.c (_puts_r): Set stream orientation. * libc/stdio/putwc.c: New file, implementing putwc and _putwc_r. * libc/stdio/putwchar.c: New file, implementing putwchar and _putwchar_r. * libc/stdio/refill.c (__srefill_r): Set stream orientation. * libc/stdio/stdio.tex: Add documentation for new functions. * libc/stdio/ungetc.c (_ungetc_r): Set stream orientation. * libc/stdio/ungetwc.c: New file, implementing ungetwc and _ungetwc_r. * libc/stdio/vfscanf.c (__SVFSCANF_R): Set stream orientation. * libc/stdio/wbuf.c (__swbuf_r): Ditto. 2008-12-10 Joseph Myers * libc/include/stdint.h (INT32_MIN, INT32_MAX, UINT32_MAX, INT_LEAST32_MIN, INT_LEAST32_MAX, UINT_LEAST32_MAX): Define to constants with "long" types where appropriate. (INT_FAST8_MIN, INT_FAST8_MAX, UINT_FAST8_MAX, INT_FAST16_MIN, INT_FAST16_MAX, UINT_FAST16_MAX, INT_FAST32_MIN, INT_FAST32_MAX, UINT_FAST32_MAX, INT_FAST64_MIN, INT_FAST64_MAX, UINT_FAST64_MAX): Correct to match logic for defining corresponding types. (INTMAX_MAX, INTMAX_MIN, UINTMAX_MAX): Define. (SIZE_MAX): Define using __SIZE_MAX__ if available. (PTRDIFF_MAX): Define using __PTRDIFF_MAX__ if available. (PTRDIFF_MIN): Define in terms of PTRDIFF_MAX. (WCHAR_MAX, WCHAR_MIN, WINT_MAX, WINT_MIN): Define. (UINT8_C, UINT16_C): Define to give signed values if corresponding types would promote to int. 2008-12-04 Corinna Vinschen * libc/include/sys/features.h (_POSIX_V6_ILP32_OFF32): Always define. (_POSIX_V6_LP64_OFF64): Ditto. (_POSIX_V6_LPBIG_OFFBIG): Ditto. 2008-11-28 Jeff Johnston * libc/sys/linux/inode.c: Include instead of . * libc/sys/linux/io64.c: Add weak alias for _stat64. 2008-11-27 Ralf Corsepius * libc/posix/telldir.c: Use #if !defined() instead of #ifndef to fix GCC warning. 2008-11-27 Ken Werner * libc/machine/spu/Makefile.am: Add spu-mcount.S spu-gmon.c. * libc/machine/spu/Makefile.in: Regenerated. * libc/machine/spu/spu-gmon.c: New file. * libc/machine/spu/spu-mcount.S: New file. 2008-11-27 Joel Sherrill * configure.host (*-rtems*): Turn on using portion of unix subdirectory. 2008-11-27 Craig Howland * libc/argz/argz_add.c: Added #include to get function prototypes. * libc/argz/argz_append.c: Ditto. * libc/argz/argz_count.c: Ditto. * libc/argz/argz_create.c: Ditto. * libc/argz/argz_create_sep.c: Ditto. * libc/argz/argz_delete.c: Ditto. * libc/argz/argz_next.c: Ditto. * libc/argz/argz_stringify.c: Ditto * libc/stdlib/strtod.c: Added #include to get function prototypes. * libc/stdlib/wcstoul.c: Added #include to get function prototypes, corrected traditional usage comment. * libc/include/wchar.h: Added _mbsrtowcs_r() prototype. 2008-11-26 Ken Werner * libm/machine/spu/headers/acosd2.h: Rebase against current simdmath. * libm/machine/spu/headers/asind2.h: Likewise. * libm/machine/spu/headers/asinhf4.h: Likewise. * libm/machine/spu/headers/divd2.h: Likewise. * libm/machine/spu/headers/erf_utils.h: Likewise. * libm/machine/spu/headers/erfcd2.h: Likewise. * libm/machine/spu/headers/erfcf4.h: Likewise. * libm/machine/spu/headers/erfd2.h: Likewise. * libm/machine/spu/headers/recipd2.h: Likewise. 2008-11-25 Corinna Vinschen * libc/stdio/gets.c (_gets_r): Lock stdin here and call __sgetc_r instead of _getchar_r. 2008-11-24 Craig Howland * libc/stdlib/wcstoull_r.c: Add EINVAL return for bad base value, include wchar.h for prototype, remove extraneous includes, use C99/POSIX ULLONG_MAX (but allow for poor limits.h). * libc/stdlib/wcstoull.c: Fix usage comments (mistakes and to add base value check noted above), remove extraneous includes. * libc/stdio/asnprintf.c: Add #include "local.h" to get function prototype for _svfprintf_r(). * libc/stdio/vasnprintf.c: Ditto. * libc/stdio/local.h: Add function prototype for __submore(). * libc/include/stdio.h: Add function prototypes for _fseeko_r and _ftello_r. * libc/posix/namespace.h: Commented out define for write to eliminate write() prototype being missing for collate.c (which is the only file that presently includes namespace.h). * libc/include/reent.h: Added _rename_r. * libc/reent/renamer.c: Corrected function prototypes in synopses. * libc/locale/ldpart.c: Use struct stat64 when calling fstat64. 2008-11-24 Jeff Johnston * libc/search/hash_func.c: Comment out unused static hash functions. * libc/reent/stat64r.c: New file. * libc/reent/Makefile.am: Add stat64r.c support. * libc/reent/Makefile.in: Regenerated. 2008-11-24 Joel Sherrill * libc/posix/scandir.c: Fix memory leaks. 2008-11-24 Joel Sherrill * libc/posix/Makefile.am: Compile readdir_r.c not readdir.c twice. * libc/posix/Makefile.in: Regenerated. 2008-11-24 Corinna Vinschen * libc/include/stdio.h (__SMOD): Remove definition of unused flag. * libc/include/sys/reent.h (struct __sFILE): Add _flags2 member. * libc/stdio/findfp.c (std): Initialize _flags2. (__sfp): Ditto. * libc/stdio/refill.c (__srefill_r): Drop resetting __SMOD flag. * libc/stdio/vfscanf.c (__ssrefill_r): Ditto. * libc/stdio/fseek.c (_fseek_r): Drop checking __SMOD flag. * libc/stdio64/fseeko64.c (_fseeko64_r): Ditto. 2008-11-20 Ken Werner * libc/machine/spu/sys/linux_syscalls.h: Additional syscall defines to be in sync with current kernels. 2008-11-20 Ken Werner Patrick Mansfield Joel Schopp * libc/machine/spu/configure.in: Add __ea detection. * libc/machine/spu/Makefile.am: Add new files. * libc/machine/spu/include/ea.h: New file. * libc/machine/spu/ea_internal.h: Likewise. * libc/machine/spu/sys/mman.h: Likewise. * libc/machine/spu/mmap_ea.c: Likewise. * libc/machine/spu/munmap_ea.c: Likewise. * libc/machine/spu/mremap_ea.c: Likewise. * libc/machine/spu/msync_ea.c: Likewise. * libc/machine/spu/memchr_ea.c: Likewise. * libc/machine/spu/memcmp_ea.c: Likewise. * libc/machine/spu/memcpy_ea.c: Likewise. * libc/machine/spu/memmove_ea.c: Likewise. * libc/machine/spu/memset_ea.c: Likewise. * libc/machine/spu/malloc_ea.c: Likewise. * libc/machine/spu/realloc_ea.c: Likewise. * libc/machine/spu/calloc_ea.c: Likewise. * libc/machine/spu/free_ea.c: Likewise. * libc/machine/spu/posix_memalign_ea.c: Likewise. * libc/machine/spu/strcat_ea.c: Likewise. * libc/machine/spu/strchr_ea.c: Likewise. * libc/machine/spu/strcmp_ea.c: Likewise. * libc/machine/spu/strcpy_ea.c: Likewise. * libc/machine/spu/strcspn_ea.c: Likewise. * libc/machine/spu/strlen_ea.c: Likewise. * libc/machine/spu/strncat_ea.c: Likewise. * libc/machine/spu/strncmp_ea.c: Likewise. * libc/machine/spu/strncpy_ea.c: Likewise. * libc/machine/spu/strpbrk_ea.c: Likewise. * libc/machine/spu/strrchr_ea.c: Likewise. * libc/machine/spu/strspn_ea.c: Likewise. * libc/machine/spu/strstr_ea.c: Likewise. * libc/machine/spu/read_ea.c: Likewise. * libc/machine/spu/pread_ea.c: Likewise. * libc/machine/spu/readv_ea.c: Likewise. * libc/machine/spu/write_ea.c: Likewise. * libc/machine/spu/pwrite_ea.c: Likewise. * libc/machine/spu/writev_ea.c: Likewise. 2008-11-19 Joel Sherrill * libc/include/sys/config.h[__mips__]: Don't bother setting __ATTRIBUTE_IMPURE_PTR__ here. [__rtems__][__mips__]: No need to undef the __ATTRIBUTE_IMPURE_PTR__ macro anymore. 2008-11-19 Jeff Johnston * libc/sys/linux/bits/dirent.h: New header file. * libc/sys/linux/sys/dirent.h: Include instead of . * libc/posix/Makefile.am: Remove reallocf. * libc/posix/Makefile.in: Regenerated. * libc/posix/reallocf.c: Moved to... * libc/stdlib/reallocf.c: Here * libc/stdlib/malloc.c: Add reallocf documentation. * libc/include/stdlib.h: Add reallocf and _reallocf_r prototypes. * libc/stdlib/Makefile.am: Add reallocf. * libc/stdlib/Makefile.in: Regenerated. * libc/posix/_isatty.c: Set errno. 2008-11-19 Craig Howland * libc/unix/collate.c (__collate_err): simplify to remove unnecessary strdup() and strlen() calls, also getting rid of a compiler warning. 2008-11-19 Ralf Corsepius * libc/include/sys/config.h: Don't put __ATTRIBUTE_IMPURE_PTR__ into .sdata section for mips-rtems. 2008-11-19 Ralf Corsepius * libc/posix/runetype.h: Add include of stddef.h and remove defining standard types: size_t and wchar_t. 2008-11-19 Ralf Corsepius * libc/include/pthread.h: Remove prototypes for pthread_attr_getcputime and pthread_attr_setcputime which were proposed but never approved by the POSIX standard. 2008-11-18 Joel Sherrill * libc/unix/ttyname.c: Use isatty() instead of tcgetattr(). 2008-11-18 Jeff Johnston * libc/unix/basename.c: Add !_NO_BASENAME flag check so code can be ignored if desired by a platform. * libc/unix/dirname.c: Ditto except replace BASENAME with file name. * libc/unix/getcwd.c: Ditto. * libc/unix/getlogin.c: Ditto. * libc/unix/getpass.c: Ditto. * libc/unix/getpwent.c: Ditto. * libc/unix/getut.c: Ditto. * libc/unix/pread.c: Ditto. * libc/unix/pwrite.c: Ditto. * libc/unix/sigset.c: Ditto. 2008-11-18 Craig Howland * libc/unix/ttyname.c: Add ttyname_r and change ttyname to use ttyname_r. 2008-11-17 Joel Sherrill * configure.host: RTEMS now uses posix subdirectory. 2008-11-17 Joel Sherrill * sys/rtems/include/limits.h: Add _POSIX2_RE_DUP_MAX. * sys/rtems/sys/param.h: sys/rtprio.h not needed. 2008-10-31 Jeff Johnston * libc/stdio/diprintf.c: Modify documentation so eclipse newlib libhover docs generate properly. * libc/stdio/dprintf.c: Ditto. * libc/stdio/fflush.c: Ditto. * libc/stdio/fopencookie.c: Ditto. * libc/stdio/fread.c: Ditto. * libc/stdio/fsetpos.c: Ditto. * libc/stdio/getc_u.c: Ditto. * libc/stdio/getchar_u.c: Ditto. * libc/stdio/putc_u.c: Ditto. * libc/stdio/putchar_u.c: Ditto. * libc/stdio/remove.c: Ditto. * libc/stdio/siprintf.c: Ditto. * libc/stdio/siscanf.c: Ditto. * libc/stdio/sprintf.c: Ditto. * libc/stdio/sscanf.c: Ditto. * libc/stdio/vfprintf.c: Ditto. * libc/stdio/vfscanf.c: Ditto. * libc/stdio/viprintf.c: Ditto. * libc/stdio/viscanf.c: Ditto. * libc/stdlib/calloc.c: Ditto. * libc/stdlib/efgcvt.c: Ditto. * libc/stdlib/envlock.c: Ditto. * libc/time/asctime.c: Ditto. * libc/time/ctime.c: Ditto. * libc/time/gmtime.c: Ditto. * libc/time/lcltime.c: Ditto. * libc/time/tzset.c: Ditto. * libc/stdlib/envlock.h: Moved to libc/include. 2008-10-31 Jeff Johnston * libc/include/limits.h: Add ARG_MAX, PATH_MAX, and _POSIX2_RE_DUP_MAX. * libc/include/envlock.h: New file. * libc/include/fnmatch.h: Ditto. * libc/include/glob.h: Ditto. * libc/include/regex.h: Ditto. * libc/include/wordexp.h: Ditto. * libc/posix/Makefile.am: Add new files moved from libc/sys/linux/stdlib. * libc/posix/Makefile.in: Regenerated. * libc/posix/COPYRIGHT: New file moved from libc/sys/linux/stdlib. * libc/posix/cclass.h: Ditto. * libc/posix/cname.h: Ditto. * libc/posix/collate.c: Ditto. * libc/posix/collate.h: Ditto. * libc/posix/collcmp.c: Ditto. * libc/posix/engine.c: Ditto. * libc/posix/fnmatch.3: Ditto. * libc/posix/glob.3: Ditto. * libc/posix/fnmatch.c: Ditto. * libc/posix/glob.c: Ditto. * libc/posix/namespace.h: Ditto. * libc/posix/reallocf.c: Ditto. * libc/posix/regcomp.c: Ditto. * libc/posix/regerror.c: Ditto. * libc/posix/regex.3: Ditto. * libc/posix/regex2.h: Ditto. * libc/posix/regexec.c: Ditto. * libc/posix/regfree.c: Ditto. * libc/posix/rune.h: Ditto. * libc/posix/runetype.h: Ditto. * libc/posix/scandir.c: Remove advertising clause which is not in effect. * libc/posix/sysexits.h: Ditto. * libc/posix/un-namespace.h: Ditto. * libc/posix/utils.h: Ditto. * libc/posix/wordexp.c: Ditto. * libc/posix/wordfree.c: Ditto. * libc/posix/execl.c: Add !_NO_EXECVE flag check. * libc/posix/execle.c: Ditto. * libc/posix/execlp.c: Ditto. * libc/posix/execv.c: Ditto. * libc/posix/execve.c: Ditto. * libc/posix/execvp.c: Ditto. * libc/posix/popen.c: Add !_NO_POPEN flag check. * libc/sys/linux/configure: Regenerated. * libc/sys/linux/configure.in: Remove stdlib. * libc/sys/linux/include/limits.h: Add include of linux/limits.h. * libc/sys/linux/stdlib/Makefile.am: Removed. * libc/sys/linux/stdlib/Makefile.in: Ditto. * libc/sys/linux/stdlib/COPYRIGHT: Moved to libc/posix. * libc/sys/linux/stdlib/cclass.h: Ditto. * libc/sys/linux/stdlib/cname.h: Ditto. * libc/sys/linux/stdlib/collate.c: Ditto. * libc/sys/linux/stdlib/collate.h: Ditto. * libc/sys/linux/stdlib/collcmp.c: Ditto. * libc/sys/linux/stdlib/engine.c: Ditto. * libc/sys/linux/stdlib/fnmatch.3: Ditto. * libc/sys/linux/stdlib/fnmatch.c: Ditto. * libc/sys/linux/stdlib/glob.3: Ditto. * libc/sys/linux/stdlib/glob.c: Ditto. * libc/sys/linux/stdlib/reallocf.c: Ditto. * libc/sys/linux/stdlib/regcomp.c: Ditto. * libc/sys/linux/stdlib/regerror.c: Ditto. * libc/sys/linux/stdlib/regex.3: Ditto. * libc/sys/linux/stdlib/regex2.h: Ditto. * libc/sys/linux/stdlib/regexec.c: Ditto. * libc/sys/linux/stdlib/regfree.c: Ditto. * libc/sys/linux/stdlib/utils.h: Ditto. * libc/sys/linux/stdlib/wordexp.c: Ditto. * libc/sys/linux/stdlib/wordfree.c: Ditto. 2008-10-16 Joel Sherrill * libc/include/sys/unistd.h: RTEMS follows standard for sync(). 2008-10-16 Joel Sherrill * libc/include/time.h: Add CLOCK_MONOTONIC. * libc/include/sys/features.h: Define _POSIX_MONOTONIC_CLOCK for RTEMS. 2008-10-15 Jeff Johnston * newlib.hin: Restore to previous 1.14 version which has no PACKAGE_ macros. 2008-10-15 Joel Sherrill * libc/include/sys/unistd.h: Enable ttyname_r() for RTEMS. 2008-10-15 Craig Howland * libc/include/ctype.h (isblank): isblank is C99. * libc/ctype/isblank.c (isblank comments): ditto. isblank does not have a macro version (as was claimed in the description). 2008-10-15 Jeff Johnston * libc/stdio/vfscanf.c (__ssvfiscanf_r): Do not support %lc, %C, %ls or %S conversions when the EL/IX level is 1. 2008-10-06 Eric Blake * libc/stdlib/ldtoa.c (etoasc): Fix rounding to even when fraction is 0.5 or 0.75. 2008-10-06 Craig Howland * libc/time/tzset_r.c (_tzset_r): Change US default start/end dates to 2007 law revision of start in 2nd Sunday in March, end 1st Sun in Nov. 2008-10-02 Jeff Johnston * libc/string/str-two-way.h (critical_factorization): Cast the index operation to ensure unsigned rollover occurs when adding to SIZE_MAX. 2008-10-02 Jeff Johnston * libc/sys/linux/include/stdint.h (SIZE_MAX): Fix value which should be size of size_t, not int. (SIZE_MIN): Remove. * libc/sys/linux/sys/stdint.h: Ditto. 2008-10-02 Jeff Johnston * libc/include/sys/reent.h[_REENT_SMALL](_REENT_INIT_RAND48): Add initialization of _rand_next to 1. 2008-09-29 Peter O'Gorman Steve Ellcey * configure: Regenerate for new libtool. * aclocal.m4: Ditto. * Makefile.in: Ditto. * newlib.hin: Ditto. * doc/Makefile.in: Ditto. * doc/configure: Ditto. * iconvdata/Makefile.in: Ditto. * iconvdata/aclocal.m4: Ditto. * iconvdata/configure: Ditto. * libc/Makefile.in: Ditto. * libc/aclocal.m4: Ditto. * libc/configure: Ditto. * libc/argz/Makefile.in: Ditto. * libc/ctype/Makefile.in: Ditto. * libc/errno/Makefile.in: Ditto. * libc/iconv/Makefile.in: Ditto. * libc/iconv/ccs/Makefile.in: Ditto. * libc/iconv/ccs/binary/Makefile.in: Ditto. * libc/iconv/ces/Makefile.in: Ditto. * libc/iconv/lib/Makefile.in: Ditto. * libc/locale/Makefile.in: Ditto. * libc/machine/Makefile.in: Ditto. * libc/machine/aclocal.m4: Ditto. * libc/machine/configure: Ditto. * libc/machine/a29k/Makefile.in: Ditto. * libc/machine/a29k/configure: Ditto. * libc/machine/arm/Makefile.in: Ditto. * libc/machine/arm/configure: Ditto. * libc/machine/bfin/Makefile.in: Ditto. * libc/machine/bfin/configure: Ditto. * libc/machine/cris/Makefile.in: Ditto. * libc/machine/cris/configure: Ditto. * libc/machine/crx/Makefile.in: Ditto. * libc/machine/crx/configure: Ditto. * libc/machine/d10v/Makefile.in: Ditto. * libc/machine/d10v/configure: Ditto. * libc/machine/d30v/Makefile.in: Ditto. * libc/machine/d30v/configure: Ditto. * libc/machine/fr30/Makefile.in: Ditto. * libc/machine/fr30/configure: Ditto. * libc/machine/frv/Makefile.in: Ditto. * libc/machine/frv/configure: Ditto. * libc/machine/h8300/Makefile.in: Ditto. * libc/machine/h8300/configure: Ditto. * libc/machine/h8500/Makefile.in: Ditto. * libc/machine/h8500/configure: Ditto. * libc/machine/hppa/Makefile.in: Ditto. * libc/machine/hppa/configure: Ditto. * libc/machine/i386/Makefile.in: Ditto. * libc/machine/i386/aclocal.m4: Ditto. * libc/machine/i386/configure: Ditto. * libc/machine/i960/Makefile.in: Ditto. * libc/machine/i960/configure: Ditto. * libc/machine/iq2000/Makefile.in: Ditto. * libc/machine/iq2000/configure: Ditto. * libc/machine/m32c/Makefile.in: Ditto. * libc/machine/m32c/configure: Ditto. * libc/machine/m32r/Makefile.in: Ditto. * libc/machine/m32r/configure: Ditto. * libc/machine/m68hc11/Makefile.in: Ditto. * libc/machine/m68hc11/configure: Ditto. * libc/machine/m68k/Makefile.in: Ditto. * libc/machine/m68k/configure: Ditto. * libc/machine/m88k/Makefile.in: Ditto. * libc/machine/m88k/configure: Ditto. * libc/machine/mep/Makefile.in: Ditto. * libc/machine/mep/configure: Ditto. * libc/machine/mips/Makefile.in: Ditto. * libc/machine/mips/configure: Ditto. * libc/machine/mn10200/Makefile.in: Ditto. * libc/machine/mn10200/configure: Ditto. * libc/machine/mn10300/Makefile.in: Ditto. * libc/machine/mn10300/configure: Ditto. * libc/machine/mt/Makefile.in: Ditto. * libc/machine/mt/configure: Ditto. * libc/machine/necv70/Makefile.in: Ditto. * libc/machine/necv70/configure: Ditto. * libc/machine/powerpc/Makefile.in: Ditto. * libc/machine/powerpc/configure: Ditto. * libc/machine/sh/Makefile.in: Ditto. * libc/machine/sh/configure: Ditto. * libc/machine/sparc/Makefile.in: Ditto. * libc/machine/sparc/configure: Ditto. * libc/machine/spu/Makefile.in: Ditto. * libc/machine/spu/configure: Ditto. * libc/machine/tic4x/Makefile.in: Ditto. * libc/machine/tic4x/configure: Ditto. * libc/machine/tic80/Makefile.in: Ditto. * libc/machine/tic80/configure: Ditto. * libc/machine/v850/Makefile.in: Ditto. * libc/machine/v850/configure: Ditto. * libc/machine/w65/Makefile.in: Ditto. * libc/machine/w65/configure: Ditto. * libc/machine/x86_64/Makefile.in: Ditto. * libc/machine/x86_64/configure: Ditto. * libc/machine/xscale/Makefile.in: Ditto. * libc/machine/xscale/configure: Ditto. * libc/machine/xstormy16/Makefile.in: Ditto. * libc/machine/xstormy16/configure: Ditto. * libc/machine/z8k/Makefile.in: Ditto. * libc/machine/z8k/configure: Ditto. * libc/misc/Makefile.in: Ditto. * libc/posix/Makefile.in: Ditto. * libc/reent/Makefile.in: Ditto. * libc/search/Makefile.in: Ditto. * libc/signal/Makefile.in: Ditto. * libc/stdio/Makefile.in: Ditto. * libc/stdio64/Makefile.in: Ditto. * libc/stdlib/Makefile.in: Ditto. * libc/string/Makefile.in: Ditto. * libc/sys/Makefile.in: Ditto. * libc/sys/aclocal.m4: Ditto. * libc/sys/configure: Ditto. * libc/sys/a29khif/Makefile.in: Ditto. * libc/sys/a29khif/configure: Ditto. * libc/sys/arc/Makefile.in: Ditto. * libc/sys/arc/configure: Ditto. * libc/sys/arm/Makefile.in: Ditto. * libc/sys/arm/configure: Ditto. * libc/sys/d10v/Makefile.in: Ditto. * libc/sys/d10v/configure: Ditto. * libc/sys/decstation/Makefile.in: Ditto. * libc/sys/decstation/configure: Ditto. * libc/sys/h8300hms/Makefile.in: Ditto. * libc/sys/h8300hms/configure: Ditto. * libc/sys/h8500hms/Makefile.in: Ditto. * libc/sys/h8500hms/configure: Ditto. * libc/sys/linux/Makefile.in: Ditto. * libc/sys/linux/aclocal.m4: Ditto. * libc/sys/linux/configure: Ditto. * libc/sys/linux/argp/Makefile.in: Ditto. * libc/sys/linux/cmath/Makefile.in: Ditto. * libc/sys/linux/dl/Makefile.in: Ditto. * libc/sys/linux/iconv/Makefile.in: Ditto. * libc/sys/linux/intl/Makefile.in: Ditto. * libc/sys/linux/linuxthreads/Makefile.in: Ditto. * libc/sys/linux/linuxthreads/aclocal.m4: Ditto. * libc/sys/linux/linuxthreads/configure: Ditto. * libc/sys/linux/linuxthreads/machine/Makefile.in: Ditto. * libc/sys/linux/linuxthreads/machine/aclocal.m4: Ditto. * libc/sys/linux/linuxthreads/machine/configure: Ditto. * libc/sys/linux/linuxthreads/machine/i386/Makefile.in: Ditto. * libc/sys/linux/linuxthreads/machine/i386/aclocal.m4: Ditto. * libc/sys/linux/linuxthreads/machine/i386/configure: Ditto. * libc/sys/linux/machine/Makefile.in: Ditto. * libc/sys/linux/machine/aclocal.m4: Ditto. * libc/sys/linux/machine/configure: Ditto. * libc/sys/linux/machine/i386/Makefile.in: Ditto. * libc/sys/linux/machine/i386/aclocal.m4: Ditto. * libc/sys/linux/machine/i386/configure: Ditto. * libc/sys/linux/net/Makefile.in: Ditto. * libc/sys/linux/stdlib/Makefile.in: Ditto. * libc/sys/m88kbug/Makefile.in: Ditto. * libc/sys/m88kbug/configure: Ditto. * libc/sys/mmixware/Makefile.in: Ditto. * libc/sys/mmixware/configure: Ditto. * libc/sys/netware/Makefile.in: Ditto. * libc/sys/netware/configure: Ditto. * libc/sys/rdos/Makefile.in: Ditto. * libc/sys/rdos/configure: Ditto. * libc/sys/rtems/Makefile.in: Ditto. * libc/sys/rtems/configure: Ditto. * libc/sys/sh/Makefile.in: Ditto. * libc/sys/sh/configure: Ditto. * libc/sys/sparc64/Makefile.in: Ditto. * libc/sys/sparc64/configure: Ditto. * libc/sys/sun4/Makefile.in: Ditto. * libc/sys/sun4/configure: Ditto. * libc/sys/sysmec/Makefile.in: Ditto. * libc/sys/sysmec/configure: Ditto. * libc/sys/sysnec810/Makefile.in: Ditto. * libc/sys/sysnec810/configure: Ditto. * libc/sys/sysnecv850/Makefile.in: Ditto. * libc/sys/sysnecv850/configure: Ditto. * libc/sys/sysvi386/Makefile.in: Ditto. * libc/sys/sysvi386/configure: Ditto. * libc/sys/sysvnecv70/Makefile.in: Ditto. * libc/sys/sysvnecv70/configure: Ditto. * libc/sys/tic80/Makefile.in: Ditto. * libc/sys/tic80/configure: Ditto. * libc/sys/w65/Makefile.in: Ditto. * libc/sys/w65/configure: Ditto. * libc/sys/z8ksim/Makefile.in: Ditto. * libc/sys/z8ksim/configure: Ditto. * libc/syscalls/Makefile.in: Ditto. * libc/time/Makefile.in: Ditto. * libc/unix/Makefile.in: Ditto. * libm/Makefile.in: Ditto. * libm/aclocal.m4: Ditto. * libm/configure: Ditto. * libm/common/Makefile.in: Ditto. * libm/machine/Makefile.in: Ditto. * libm/machine/aclocal.m4: Ditto. * libm/machine/configure: Ditto. * libm/machine/i386/Makefile.in: Ditto. * libm/machine/i386/aclocal.m4: Ditto. * libm/machine/i386/configure: Ditto. * libm/machine/spu/Makefile.in: Ditto. * libm/machine/spu/configure: Ditto. * libm/math/Makefile.in: Ditto. * libm/mathfp/Makefile.in: Ditto. 2008-09-26 Craig Howland * libc/stdlib/getenv_r.c (_getenv_r): Modify to not match if name contains an equal sign. 2008-09-25 Raphael Derossa Pereira * libc/include/pthread.h[_UNIX98_THREAD_MUTEX_ATTRIBUTES]: Add new pthread_mutexattr_gettype and pthread_mutexattr_settype prototypes. * libc/include/sys/types.h[_UNIX98_THREAD_MUTEX_ATTRIBUTES]: Add new mutex type values. (pthread_mutexattr_t)[_UNIX98_THREAD_MUTEX_ATTRIBUTES]: Add type field. 2008-09-24 Jeff Johnston * libc/stdlib/setenv_r.c (_unsetenv_r): Modify to return -1 only if name is NULL, empty, or contains equal sign. 2008-09-24 Pawel Veselov Fix setenv/getenv/unsetenv to be OpenGroup compliant: * libc/include/stdlib.h (unsetenv, _unsetenv_r): Redefine with integer return types. * libc/stdlib/getenv_r.c (_findenv_r): Do no special processing with names that contain equal chars. * libc/stdlib/setenv.c: Redefine _unsetenv_r as returning int. * libc/stdlib/setenv_r.c (_setenv_r): Return -1 and set errno to EINVAL if name contains an equal sign. Do not remove any equal signs from the value. (_unsetenv_r): Modified to return int. Return -1 and set EINVAL if name contains equal sign. Return -1 if no variable(s) were found and return 0 otherwise. 2008-09-19 Eric Blake Supply missing POSIX errno values. * libc/include/sys/errno.h (ENOTRECOVERABLE, EOWNERDEAD): Define. * libc/string/strerror.c (strerror): Decode them, and ECANCELED. 2008-09-10 Ken Werner * libc/machine/spu/strcpy.h: Add missing header. * libc/machine/spu/spu_timer_slih.c: Remove unused Variable. * libm/machine/spu/headers/lgammaf4.h: Add type cast. 2008-09-08 Jeff Johnston * libc/sys/linux/dl/atomicity.h (exchange_and_add): Fix asm statement to use "m" instead of "0". (atomic_add): Ditto. * libc/sys/linux/linuxthreads/spinlock.c (__pthread_release): Ditto. * libc/sys/linux/net/getaddrinfo.c: Add limit.h include. * libc/sys/linux/stdlib/glob.c: Ditto. 2008-09-04 Ken Werner * libm/machine/spu/headers/acosd2.h: Duplicated preamble text removed. * libm/machine/spu/headers/acosf4.h: Likewise. * libm/machine/spu/headers/acoshd2.h: Likewise. * libm/machine/spu/headers/acoshf4.h: Likewise. * libm/machine/spu/headers/asind2.h: Likewise. * libm/machine/spu/headers/asinf4.h: Likewise. * libm/machine/spu/headers/asinhd2.h: Likewise. * libm/machine/spu/headers/asinhf4.h: Likewise. * libm/machine/spu/headers/atan2d2.h: Likewise. * libm/machine/spu/headers/atan2f4.h: Likewise. * libm/machine/spu/headers/atand2.h: Likewise. * libm/machine/spu/headers/atanf4.h: Likewise. * libm/machine/spu/headers/atanhd2.h: Likewise. * libm/machine/spu/headers/atanhf4.h: Likewise. * libm/machine/spu/headers/cos_sin.h: Likewise. * libm/machine/spu/headers/cosd2.h: Likewise. * libm/machine/spu/headers/cosf4.h: Likewise. * libm/machine/spu/headers/coshd2.h: Likewise. * libm/machine/spu/headers/coshf4.h: Likewise. * libm/machine/spu/headers/divd2.h: Likewise. * libm/machine/spu/headers/divf4.h: Likewise. * libm/machine/spu/headers/erf_utils.h: Likewise. * libm/machine/spu/headers/erfcd2.h: Likewise. * libm/machine/spu/headers/erfcf4.h: Likewise. * libm/machine/spu/headers/erfd2.h: Likewise. * libm/machine/spu/headers/erff4.h: Likewise. * libm/machine/spu/headers/exp2d2.h: Likewise. * libm/machine/spu/headers/exp2f4.h: Likewise. * libm/machine/spu/headers/expd2.h: Likewise. * libm/machine/spu/headers/expf4.h: Likewise. * libm/machine/spu/headers/expm1d2.h: Likewise. * libm/machine/spu/headers/expm1f4.h: Likewise. * libm/machine/spu/headers/floord2.h: Likewise. * libm/machine/spu/headers/floorf4.h: Likewise. * libm/machine/spu/headers/hypotd2.h: Likewise. * libm/machine/spu/headers/hypotf4.h: Likewise. * libm/machine/spu/headers/isnand2.h: Likewise. * libm/machine/spu/headers/isnanf4.h: Likewise. * libm/machine/spu/headers/ldexpd2.h: Likewise. * libm/machine/spu/headers/ldexpf4.h: Likewise. * libm/machine/spu/headers/lgammad2.h: Likewise. * libm/machine/spu/headers/lgammaf4.h: Likewise. * libm/machine/spu/headers/log10d2.h: Likewise. * libm/machine/spu/headers/log1pd2.h: Likewise. * libm/machine/spu/headers/log1pf4.h: Likewise. * libm/machine/spu/headers/log2d2.h: Likewise. * libm/machine/spu/headers/log2f4.h: Likewise. * libm/machine/spu/headers/logbf4.h: Likewise. * libm/machine/spu/headers/logd2.h: Likewise. * libm/machine/spu/headers/logf4.h: Likewise. * libm/machine/spu/headers/nearbyintf4.h: Likewise. * libm/machine/spu/headers/nextafterd2.h: Likewise. * libm/machine/spu/headers/nextafterf4.h: Likewise. * libm/machine/spu/headers/powd2.h: Likewise. * libm/machine/spu/headers/powf4.h: Likewise. * libm/machine/spu/headers/recipd2.h: Likewise. * libm/machine/spu/headers/recipf4.h: Likewise. * libm/machine/spu/headers/rintf4.h: Likewise. * libm/machine/spu/headers/scalbnf4.h: Likewise. * libm/machine/spu/headers/signbitd2.h: Likewise. * libm/machine/spu/headers/sincosd2.h: Likewise. * libm/machine/spu/headers/sincosf4.h: Likewise. * libm/machine/spu/headers/sind2.h: Likewise. * libm/machine/spu/headers/sinf4.h: Likewise. * libm/machine/spu/headers/sinhd2.h: Likewise. * libm/machine/spu/headers/sinhf4.h: Likewise. * libm/machine/spu/headers/sqrtd2.h: Likewise. * libm/machine/spu/headers/sqrtf4.h: Likewise. * libm/machine/spu/headers/tand2.h: Likewise. * libm/machine/spu/headers/tanf4.h: Likewise. * libm/machine/spu/headers/tanhd2.h: Likewise. * libm/machine/spu/headers/tanhf4.h: Likewise. * libm/machine/spu/headers/tgammad2.h: Likewise. * libm/machine/spu/headers/tgammaf4.h: Likewise. * libm/machine/spu/headers/truncd2.h: Likewise. * libm/machine/spu/headers/truncf4.h: Likewise. * libm/machine/spu/headers/simdmath.h: Likewise. 2008-09-04 Ken Werner * libm/machine/spu/headers/acoshf4.h: Rebase against current simdmath. * libm/machine/spu/headers/asinhd2.h: Likewise. * libm/machine/spu/headers/atanhd2.h: Likewise. * libm/machine/spu/headers/atanhf4.h: Likewise. * libm/machine/spu/headers/erff4.h: Likewise. * libm/machine/spu/headers/expd2.h: Likewise. * libm/machine/spu/headers/ldexpd2.h: Likewise. * libm/machine/spu/headers/lgammaf4.h: Likewise. * libm/machine/spu/headers/logbf4.h: Likewise. * libm/machine/spu/headers/nextafterd2.h: Likewise. * libm/machine/spu/headers/nextafterf4.h: Likewise. * libm/machine/spu/headers/recipd2.h: Likewise. * libm/machine/spu/headers/simdmath.h: Likewise. * libm/machine/spu/headers/acoshd2.: Likewise. 2008-09-04 Ken Werner * libm/machine/spu/headers/cbrt.h: cbrt_factors[] declared. * libm/machine/spu/headers/cbrtf.h: Likewise. 2008-09-01 Ken Werner * libc/machine/spu/include/spu_timer.h: spu_timebase function added. * libc/machine/spu/spu_timebase.c: New file. * libc/machine/spu/Makefile.am: Add new file. * libc/machine/spu/Makefile.in: Regenerated. 2008-08-28 Craig Howland * libc/time/mktime.c (mktime): Fix tm_isdst value usage (allowing any positive value from user (per std) rather than depending upon 1). 2008-08-28 Corinna Vinschen * libc/stdlib/wcsrtombs.c (_wcsrtombs_r): Optimize condition for accepting a converted character. 2008-08-27 Sandra Loosemore * libc/libc.texinfo: Remove "LOCAL KLUGE" that prevents it from building pdfs. * libm/libm.texinfo: Likewise. 2008-08-27 Corinna Vinschen * libc/stdlib/wcsrtombs.c (_wcsrtombs_r): Fix condition for accepting a converted character and continuing the loop. 2008-07-24 Jeff Johnston * libc/include/ctype.h (_ctype_): Restore for C++ backward compatability only. 2008-07-21 Jeff Johnston * libc/ctype/ctype_.c: Add new pointer __ctype_ptr__ which is one less than the old __ctype_ptr. * libc/ctype/isalnum.c: Use __ctype_ptr__. * libc/ctype/isalpha.c: Ditto. * libc/ctype/iscntrl.c: Ditto. * libc/ctype/isdigit.c: Ditto. * libc/ctype/islower.c: Ditto. * libc/ctype/isprint.c: Ditto. * libc/ctype/ispunct.c: Ditto. * libc/ctype/isspace.c: Ditto. * libc/ctype/isupper.c: Ditto. * libc/ctype/isxdigit.c: Ditto. * libc/include/ctype.h: Change ctype macros to use new __ctype_ptr__ and add declaration of __ctype_ptr__. Remove older ctype table pointers from here even though they can still work. 2008-07-18 Ken Werner * libc/machine/spu/strcpy.h: Fix error in previous patch. 2008-07-17 Jeff Johnston * libc/include/assert.h (__ASSERT_FUNC): Define to __FUNCTION__ when __STDC_VERSION__ < 199901L and __GNUC__ >= 2. 2008-07-17 Ken Werner * libc/machine/spu/strcpy.h: Pad null bytes if necessary. 2008-07-08 Kenji Tanaka * libc/machine/mn10300/memset.S: Fix bug where return value is incorrectly set if number of bytes set is a multiple of 4. 2008-07-07 Hans-Peter Nilsson * libc/machine/mips/strncpy.c: Include stdint.h to get uintptr_t. (strncpy): Cast src to uintptr_t before checking alignment with "&". 2008-07-02 Jeff Johnston * libc/argz/argz_count.c: Include stddef.h to get size_t. * libc/argz/argz_extract.c: Ditto. * libc/argz/argz_stringify.c: Ditto. * libc/search/hash.h: Ditto. * libc/sys/linux/include/sched.h: Ditto. * libc/sys/linux/sys/types.h: Ditto. 2008-07-02 Jeff Johnston * libc/machine/mips/strncpy.c (strncpy): Fix logic so unaligned source data is taken care of before loop unrolling. 2008-06-25 Hans-Peter Nilsson Fix strict-aliasing issues with _strtod_r and Storeinc. * libc/stdlib/strtod.c (_strtod_r): Change local variables aadj, rv, rv0 from double to type U. Use accessor macros dval, dword0 and dword1 for all accesses except for the ULtod call, where rv.i replaces the pointer cast. * libc/stdlib/mprec.h (U): Rename member L to i for easier re-use of access macros. Tweak comment. Remove #ifdef'd YES_ALIAS code. (dword0, dword1, dval): Define in terms of uncast union member access. Ditto for _DOUBLE_IS_32BITS variants. (Storeinc): Replace aliasing-flawed microoptimized definition with alternative suggested in comment. Remove now stale comment. 2008-06-21 Corinna Vinschen * libc/include/machine/setjmp.h (_longjmp): Define as function on Cygwin. (_setjmp): Ditto. 2008-06-18 Eric Blake Per Posix, strsignal returns non-const char*. * libc/include/string.h (strsignal): Fix return type. 2008-06-17 Ken Werner * libc/machine/spu/sys/linux_syscalls.h: New file to add Linux syscall support. 2008-06-16 Ken Werner * libc/machine/spu/sys/dirent.h: Add extern "C" specifier if C++. * libc/machine/spu/sys/sched.h: Likewise. * libc/machine/spu/sys/syscall.h: Likewise. 2008-06-16 Ken Werner * libc/machine/spu/mk_syscalls: Provide .type and .size directives in generated assembler files. * libc/machine/spu/fprintf.S: Regenerate. * libc/machine/spu/fscanf.S: Regenerate. * libc/machine/spu/printf.S: Regenerate. * libc/machine/spu/scanf.S: Regenerate. * libc/machine/spu/snprintf.S: Regenerate. * libc/machine/spu/sprintf.S: Regenerate. * libc/machine/spu/sscanf.S: Regenerate. * libc/machine/spu/stack_reg_va.S (__stack_reg_va): Provide .type and .size directives. * libc/machine/spu/setjmp.S (setjmp): Likewise. (longjmp): Likewise. 2008-06-11 Jeff Johnston * libc/include/machine/_default_types.h: Fix GNUC check to handle 4.0 and greater. 2008-06-09 Ken Werner * libc/machine/spu/Makefile.am: Add new files. * libc/machine/spu/Makefile.in: Likewise. * libc/machine/spu/include/spu_timer.h: New file to add timer support using interrupts. * libc/machine/spu/spu_clock_stop.c: Likewise. * libc/machine/spu/spu_clock_svcs.c: Likewise. * libc/machine/spu/spu_timer_flih.S: Likewise. * libc/machine/spu/spu_timer_free.c: Likewise. * libc/machine/spu/spu_timer_internal.h: Likewise. * libc/machine/spu/spu_timer_slih.c: Likewise. * libc/machine/spu/spu_timer_slih_reg.c: Likewise. * libc/machine/spu/spu_timer_stop.c: Likewise. * libc/machine/spu/spu_timer_svcs.c: Likewise. 2008-06-09 Ken Werner * libc/machine/spu/strcat.c: Return value fixed. * libc/machine/spu/strncat.c: Likewise. 2008-05-28 Eric Blake Fix bug in previous patch. * libc/machine/i386/memset.S (memset): Mask second arg correctly. 2008-05-27 Jeff Johnston * libc/string/memset.c: Fix documented prototype to remove erroneous const attribute on first parameter. 2008-05-26 Eric Blake Optimize the generic and x86 memchr. * libc/string/memchr.c (memchr) [!__OPTIMIZE_SIZE__]: Pre-align pointer so unaligned searches aren't penalized. * libc/machine/i386/memchr.S (memchr) [!__OPTIMIZE_SIZE__]: Word operations are faster than repnz byte searches. 2008-05-26 Eric Blake Optimize the generic and x86 memset. * libc/string/memset.c (memset) [!__OPTIMIZE_SIZE__]: Pre-align pointer so unaligned stores aren't penalized. * libc/machine/i386/memset.S (memset) [!__OPTIMIZE_SIZE__]: Pre-align pointer so unaligned stores aren't penalized. Prefer 8-byte over 4-byte alignment. Reduce register pressure. 2008-05-26 Eric Blake Optimize the generic and x86 strlen. * libc/string/strlen.c (strlen) [!__OPTIMIZE_SIZE__]: Pre-align data so unaligned searches aren't penalized. * libc/machine/i386/strlen.S (strlen) [!__OPTIMIZE_SIZE__]: Word operations are faster than repnz byte searches. 2008-05-23 Corinna Vinschen * libc/include/sys/_default_fcntl.h: Include on Cygwin. 2008-05-22 Jeff Johnston * libc/include/sys/reent.h: Add _h_errno field. * libc/sys/linux/libc-symbols.h: Add default stubs for new libc macros now used in net directory. * libc/sys/linux/bits/libc-lock.h: Always define _IO_MTSAFE_IO. * libc/sys/linux/include/hesiod.h: Add needed macros for new code in net directory. * libc/sys/linux/include/netdb.h: Ditto. * libc/sys/linux/include/resolv.h: Ditto. * libc/sys/linux/include/stdint.h: Ditto. * libc/sys/linux/include/arpa/nameser.h: Ditto. * libc/sys/linux/include/net/ethernet.h: Ditto. * libc/sys/linux/include/net/if_ppp.h: Ditto. * libc/sys/linux/include/netinet/if_ether.h: Ditto. * libc/sys/linux/machine/i386/get_clockfreq.c: Remove static memmem. * libc/sys/linux/machine/i386/include/endian.h: Protect macros with flags to avoid duplicate definition. * libc/sys/linux/machine/i386/include/param.h: Ditto. * libc/sys/linux/net/Makefile.am: Modified to account for removed and added files. * libc/sys/linux/net/Makefile.in: Regenerated. * libc/sys/linux/net/base64.c: Replaced with glibc version of code. * libc/sys/linux/net/getaddrinfo.c: Ditto. * libc/sys/linux/net/getnameinfo.c: Ditto. * libc/sys/linux/net/getproto.c: Ditto. * libc/sys/linux/net/getservent.c: Ditto. * libc/sys/linux/net/inet_netof.c: Ditto. * libc/sys/linux/net/inet_lnaof.c: Ditto. * libc/sys/linux/net/ns_name.c: Ditto. * libc/sys/linux/net/ns_netint.c: Ditto. * libc/sys/linux/net/inet_ntoa.c: Ditto. * libc/sys/linux/net/ns_parse.c: Ditto. * libc/sys/linux/net/ns_print.c: Ditto. * libc/sys/linux/net/ns_ttl.c: Ditto. * libc/sys/linux/net/nsap_addr.c: Ditto. * libc/sys/linux/net/rcmd.c: Ditto. * libc/sys/linux/net/res_comp.c: Ditto. * libc/sys/linux/net/res_data.c: Ditto. * libc/sys/linux/net/res_debug.c: Ditto. * libc/sys/linux/net/res_init.c: Ditto. * libc/sys/linux/net/res_mkquery.c: Ditto. * libc/sys/linux/net/res_query.c: Ditto. * libc/sys/linux/net/res_send.c: Ditto. * libc/sys/linux/net/send.c: Ditto. * libc/sys/linux/stdlib/collate.c: Ditto. * libc/sys/linux/sys/ioctl.h: Ditto. * libc/sys/linux/sys/socket.h: Ditto. * libc/sys/linux/sys/unistd.h: Ditto. * libc/sys/linux/iconv/iconvconfig.c: Removed either because no longer used or because licensing includes advertising clause that cannot be ignored. * libc/sys/linux/iconv/strtab.c: Ditto. * libc/sys/linux/include/libc_private.h: Ditto. * libc/sys/linux/include/nsswitch.h: Ditto. * libc/sys/linux/include/net/if_atm.h: Ditto. * libc/sys/linux/include/net/if_media.h: Ditto. * libc/sys/linux/include/net/if_pppvar.h: Ditto. * libc/sys/linux/include/netinet/if_atm.h: Ditto. * libc/sys/linux/include/netinet/ip_flow.h: Ditto. * libc/sys/linux/intl/locale.alias: Ditto. * libc/sys/linux/net/addr2ascii.3: Ditto. * libc/sys/linux/net/bindresvport.c: Ditto. * libc/sys/linux/net/byteorder.3: Ditto. * libc/sys/linux/net/res_config.h: Ditto. * libc/sys/linux/net/ether_addr.c: Ditto. * libc/sys/linux/net/ethers.3: Ditto. * libc/sys/linux/net/getaddrinfo.3: Ditto. * libc/sys/linux/net/gethostbydns.c: Ditto. * libc/sys/linux/net/gethostbyht.c: Ditto. * libc/sys/linux/net/gethostbyname.3: Ditto. * libc/sys/linux/net/gethostbynis.c: Ditto. * libc/sys/linux/net/gethostnamadr.c: Ditto. * libc/sys/linux/net/getifaddrs.3: Ditto. * libc/sys/linux/net/getifaddrs.c: Ditto. * libc/sys/linux/net/getipnodebyname.3: Ditto. * libc/sys/linux/net/getnameinfo.3: Ditto. * libc/sys/linux/net/getnetbydns.c: Ditto. * libc/sys/linux/net/getnetbyht.c: Ditto. * libc/sys/linux/net/getnetbynis.c: Ditto. * libc/sys/linux/net/getnetent.3: Ditto. * libc/sys/linux/net/getnetnamadr.c: Ditto. * libc/sys/linux/net/getprotoent.3: Ditto. * libc/sys/linux/net/getprotoent.c: Ditto. * libc/sys/linux/net/getprotoname.c: Ditto. * libc/sys/linux/net/getservbyname.c: Ditto. * libc/sys/linux/net/getservbyport.c: Ditto. * libc/sys/linux/net/getservent.3: Ditto. * libc/sys/linux/net/herror.c: Ditto. * libc/sys/linux/net/hesiod.3: Ditto. * libc/sys/linux/net/hesiod.c: Ditto. * libc/sys/linux/net/if_indextoname.3: Ditto. * libc/sys/linux/net/inet.3: Ditto. * libc/sys/linux/net/inet6_option_space.3: Ditto. * libc/sys/linux/net/inet6_rthdr_space.3: Ditto. * libc/sys/linux/net/inet_makeaddr.c: Ditto. * libc/sys/linux/net/inet_net.3: Ditto. * libc/sys/linux/net/inet_network.c: Ditto. * libc/sys/linux/net/innetgr-stub.c: Ditto. * libc/sys/linux/net/ip6opt.c: Ditto. * libc/sys/linux/net/iso_addr.3: Ditto. * libc/sys/linux/net/iso_addr.c: Ditto. * libc/sys/linux/net/linkaddr.3: Ditto. * libc/sys/linux/net/linkaddr.c: Ditto. * libc/sys/linux/net/map_v4v6.c: Ditto. * libc/sys/linux/net/name6.c: Ditto. * libc/sys/linux/net/namespace.h: Ditto. * libc/sys/linux/net/ns.3: Ditto. * libc/sys/linux/net/ns_addr.c: Ditto. * libc/sys/linux/net/ns_ntoa.c: Ditto. * libc/sys/linux/net/nsdispatch.3: Ditto. * libc/sys/linux/net/nsdispatch.c: Ditto. * libc/sys/linux/net/nslexer.c: Ditto. * libc/sys/linux/net/nslexer.l: Ditto. * libc/sys/linux/net/nsparser.c: Ditto. * libc/sys/linux/net/nsparser.h: Ditto. * libc/sys/linux/net/nsparser.y: Ditto. * libc/sys/linux/net/rcmd.3: Ditto. * libc/sys/linux/net/rcmdsh.3: Ditto. * libc/sys/linux/net/res_mkupdate.c: Ditto. * libc/sys/linux/net/res_update.c: Ditto. * libc/sys/linux/net/resolver.3: Ditto. * libc/sys/linux/net/rthdr.c: Ditto. * libc/sys/linux/net/vars.c: Ditto. * libc/sys/linux/shlib-compat.h: New file. * libc/sys/linux/machine/i386/atomic.h: Ditto. * libc/sys/linux/net/XXX-lookup.c: Ditto. * libc/sys/linux/net/alias-lookup.c: Ditto. * libc/sys/linux/net/res_libc.c: Ditto. * libc/sys/linux/net/aliases.h: Ditto. * libc/sys/linux/net/check_pf.c: Ditto. * libc/sys/linux/net/databases.def: Ditto. * libc/sys/linux/net/digits_dots.c: Ditto. * libc/sys/linux/net/ether_aton.c: Ditto. * libc/sys/linux/net/ether_aton_r.c: Ditto. * libc/sys/linux/net/ether_hton.c: Ditto. * libc/sys/linux/net/ether_line.c: Ditto. * libc/sys/linux/net/ether_ntoa.c: Ditto. * libc/sys/linux/net/ether_ntoa_r.c: Ditto. * libc/sys/linux/net/ether_ntoh.c: Ditto. * libc/sys/linux/net/etherent.h: Ditto. * libc/sys/linux/net/ethers-lookup.c: Ditto. * libc/sys/linux/net/function.def: Ditto. * libc/sys/linux/net/getXXbyYY.c: Ditto. * libc/sys/linux/net/getXXbyYY_r.c: Ditto. * libc/sys/linux/net/getXXent.c: Ditto. * libc/sys/linux/net/getXXent_r.c: Ditto. * libc/sys/linux/net/getaliasent.c: Ditto. * libc/sys/linux/net/getaliasent_r.c: Ditto. * libc/sys/linux/net/getaliasname.c: Ditto. * libc/sys/linux/net/getaliasname_r.c: Ditto. * libc/sys/linux/net/gethstbyad.c: Ditto. * libc/sys/linux/net/gethstbyad_r.c: Ditto. * libc/sys/linux/net/gethstbynm.c: Ditto. * libc/sys/linux/net/gethstbynm2.c: Ditto. * libc/sys/linux/net/gethstbynm2_r.c: Ditto. * libc/sys/linux/net/gethstbynm_r.c: Ditto. * libc/sys/linux/net/gethstent.c: Ditto. * libc/sys/linux/net/gethstent_r.c: Ditto. * libc/sys/linux/net/getnetbyad.c: Ditto. * libc/sys/linux/net/getnetbyad_r.c: Ditto. * libc/sys/linux/net/getnetbynm.c: Ditto. * libc/sys/linux/net/getnetbynm_r.c: Ditto. * libc/sys/linux/net/getnetent.c: Ditto. * libc/sys/linux/net/getnetent_r.c: Ditto. * libc/sys/linux/net/getnetgrent.c: Ditto. * libc/sys/linux/net/getnetgrent_r.c: Ditto. * libc/sys/linux/net/getnssent.c: Ditto. * libc/sys/linux/net/getnssent_r.c: Ditto. * libc/sys/linux/net/getproto_r.c: Ditto. * libc/sys/linux/net/getprtent.c: Ditto. * libc/sys/linux/net/getprtent_r.c: Ditto. * libc/sys/linux/net/getprtname.c: Ditto. * libc/sys/linux/net/getprtname_r.c: Ditto. * libc/sys/linux/net/getrpcbyname.c: Ditto. * libc/sys/linux/net/getrpcbyname_r.c: Ditto. * libc/sys/linux/net/getrpcbynumber.c: Ditto. * libc/sys/linux/net/getrpcbynumber_r.c: Ditto. * libc/sys/linux/net/getrpcent.c: Ditto. * libc/sys/linux/net/getrpcent_r.c: Ditto. * libc/sys/linux/net/getservent_r.c: Ditto. * libc/sys/linux/net/getsrvbynm.c: Ditto. * libc/sys/linux/net/getsrvbynm_r.c: Ditto. * libc/sys/linux/net/getsrvbypt.c: Ditto. * libc/sys/linux/net/getsrvbypt_r.c: Ditto. * libc/sys/linux/net/grp-lookup.c: Ditto. * libc/sys/linux/net/herrno.c: Ditto. * libc/sys/linux/net/hosts-lookup.c: Ditto. * libc/sys/linux/net/ifaddrs.h: Ditto. * libc/sys/linux/net/ifreq.c: Ditto. * libc/sys/linux/net/ifreq.h: Ditto. * libc/sys/linux/net/in6_addr.c: Ditto. * libc/sys/linux/net/inet6_option.c: Ditto. * libc/sys/linux/net/inet_mkadr.c: Ditto. * libc/sys/linux/net/inet_net.c: Ditto. * libc/sys/linux/net/key-lookup.c: Ditto. * libc/sys/linux/net/local.h: Ditto. * libc/sys/linux/net/netgroup.h: Ditto. * libc/sys/linux/net/netgrp-lookup.c: Ditto. * libc/sys/linux/net/network-lookup.c: Ditto. * libc/sys/linux/net/not-cancel.h: Ditto. * libc/sys/linux/net/ns_samedomain.c: Ditto. * libc/sys/linux/net/nscd-types.h: Ditto. * libc/sys/linux/net/nss.h: Ditto. * libc/sys/linux/net/nsswitch.c: Ditto. * libc/sys/linux/net/nsswitch.h: Ditto. * libc/sys/linux/net/opensock.c: Ditto. * libc/sys/linux/net/proto-lookup.c: Ditto. * libc/sys/linux/net/pwd-lookup.c: Ditto. * libc/sys/linux/net/res_debug.h: Ditto. * libc/sys/linux/net/res_hconf.c: Ditto. * libc/sys/linux/net/res_hconf.h: Ditto. * libc/sys/linux/net/rexec.c: Ditto. * libc/sys/linux/net/rpc-lookup.c: Ditto. * libc/sys/linux/net/ruserpass.c: Ditto. * libc/sys/linux/net/service-lookup.c: Ditto. * libc/sys/linux/net/spwd-lookup.c: Ditto. * libc/sys/linux/net/nscd/nscd-client.h: Ditto. * libc/sys/linux/net/nscd/nscd_proto.h: Ditto. 2008-05-21 Eric Blake Optimize the generic strchr. * libc/string/strchr.c (strchr) [!__OPTIMIZE_SIZE__]: Pre-align data so unaligned searches aren't penalized. Special-case searching for 0. Optimize strchr for x86. * libc/machine/i386/strchr.S (strchr) [!__OPTIMIZE_SIZE__]: Pre-align data so unaligned searches aren't penalized. Special-case searching for 0. 2008-05-20 Nick Clifton * libc/sys/sysnecv850/crt0.S (___dso_handle): Define (weak). 2008-05-20 DJ Delorie * libc/sys/sysnecv850/isatty.c (_isatty): Renamed from isatty. 2008-05-14 Jeff Johnston * libc/include/sys/reent.h: Change _REENT_INIT... macros to access macro parameter with parentheses around it. 2008-04-26 Mark Mitchell * libc/include/stdint.h (SIZE_MIN): Remove. (SIZE_MAX): Define. * testsuite/newlib.stdlib/stdlib.exp: New. * testsuite/newlib.stdlib/size_max.c: Likewise. 2008-04-29 Eric Blake Fix 2008-04-14 regression in asprintf(ptr,""). * libc/stdio/asnprintf.c (asnprintf, _asnprintf_r): Avoid stdio baggage. * libc/stdio/asniprintf.c (asniprintf, _asniprintf_r): Likewise. * libc/stdio/asiprintf.c (asiprintf, _asiprintf_r): Likewise. * libc/stdio/vasniprintf.c (_vasniprintf_r): Likewise. * libc/stdio/vsnprintf.c (_vsnprintf_r): Likewise. * libc/stdio/vfprintf.c (_VFPRINTF_R) [STRING_ONLY]: Always malloc an initial buffer for asprintf. 2008-04-24 Corinna Vinschen * libc/include/sys/stat.h: Guard at-functions with !__INSIDE_CYGWIN__. (fstatat): Fix type of third parameter. 2008-04-25 Nick Clifton * libc/machine/arm/setjmp.S: Fix thumb2 support. 2008-04-24 Nick Clifton * libc/include/machine/ieeefp.h: Fix typo: _DOUBLE_IS_32_BITS should be _DOUBLE_IS_32BITS. 2008-04-24 Corinna Vinschen * libc/include/sys/stat.h (UTIME_NOW): Define for Cygwin. (UTIME_OMIT): Ditto. (utimensat): Declare for Cygwin. (futimens): Ditto. 2008-04-23 Ken Werner * libc/include/_ansi.h: _LONG_LONG renamed to _LONG_LONG_TYPE. * libc/include/math.h: Likewise. 2008-04-23 Corinna Vinschen * libc/include/stdio.h (renameat): Declare for Cygwin. (symlinkat): Ditto. * libc/include/sys/unistd.h (readlink): Align declaration to POSIX. (faccessat): Declare for Cygwin. (fchownat): Ditto. (linkat): Ditto. (readlinkat): Ditto. * libc/include/sys/_default_fcntl.h (AT_FDCWD): Define for Cygwin. (AT_EACCESS): Ditto. (AT_SYMLINK_NOFOLLOW): Ditto. (AT_SYMLINK_FOLLOW): Ditto. (AT_REMOVEDIR): Ditto. (futimesat): Declare for Cygwin. (openat): Ditto. (unlinkat): Ditto. * libc/include/sys/stat.h (fchmodat): Ditto. (fstatat): Ditto. (mkdirat): Ditto. (mkfifoat): Ditto. (mknodat): Ditto. 2008-04-22 Nick Clifton * libc/machine/arm/setjmp.S: Add support for thumb2 multiple register load/store instructions. 2008-04-16 Patrick Mansfield * libc/machine/spu/sys/errno.h: Use _impure_data, not _reent_data. 2008-04-16 Patrick Mansfield * libc/machine/spu/impure.c: Add missing underscore to impure_data. 2008-04-14 Patrick Mansfield * libc/machine/spu/impure.c: New file, supply a non-static _impure_data. * libc/machine/spu/Makefile.am: Add new file impure.c. * libc/machine/spu/Makefile.in: Regenerate. * libc/machine/spu/sys/errno.h: Define errno to be _reent_data._errno. 2008-04-14 Jeff Johnston * libc/stdio/Makefile.am: Build vfprintf.c and vfscanf.c with -DSTRING_ONLY defined with and without -DINTEGER_ONLY defined to build special versions for sprintf/sscanf family functions. * libc/stdio/Makefile.in: Regenerated. * libc/stdio/vfprintf.c[STRING_ONLY][INTEGER_ONLY](_VFPRINTF_R): Redefine to be _svfiprintf_r which is optimized to work with siprintf family of functions (i.e. no I/O) and does not support floating-point. [STRING_ONLY][!INTEGER_ONLY](_VFPRINTF_R): Redefine to be _svfprintf_r which is optimized to work with sprintf family of functions and not use I/O. [STRING_ONLY](__sprint_r): New string only version of static function. designed to work with sprintf family of functions. * libc/stdio/vfscanf.c[STRING_ONLY][INTEGER_ONLY](_SVFSCANF_R): Redefine to be _ssvfiscanf_r which is optimized to work with siscanf family of functions (i.e. no I/O) and no float-point support. [STRING_ONLY][!INTEGER_ONLY](_SVFSCANF_R): Redefine to be __ssvfscanf_r which is optimized to work with sscanf family of functions and does not require I/O functions. * libc/stdio/asprintf.c: Call _svfprintf_r instead of _vfprintf_r. * libc/stdio/snprintf.c: Ditto. * libc/stdio/sprintf.c: Ditto. * libc/stdio/vasnprintf.c: Ditto. * libc/stdio/vasprintf.c: Ditto. * libc/stdio/siprintf.c: Call _svfiprintf_r instead of _vfiprintf_r. * libc/stdio/sniprintf.c: Ditto. * libc/stdio/vasiprintf.c: Ditto. * libc/stdio/vsiprintf.c: Ditto. * libc/stdio/vsniprintf.c: Ditto. * libc/stdio/vsprintf.c: Ditto. * libc/stdio/local.h: Add prototypes for _svfprintf_r, _svfiprintf_r, _ssvfscanf_r, and _ssvfiscanf_r. * libc/stdio/sscanf.c: Call _ssvfscanf_r instead of _svfscanf_r. * libc/stdio/vsscanf.c: Ditto. * libc/stdio/siscanf.c: Call _ssvfiscanf_r instead of _svfiscanf_r. * libc/stdio/vsiscanf.c: Ditto. 2008-04-04 DJ Delorie * libm/machine/spu/configure: Regenerate with autoconf 2.61. * libc/sys/configure: Regenerate with autoconf 2.61. * libc/machine/configure: Regenerate with autoconf 2.61. 2008-04-01 Patrick Mansfield * libc/machine/spu/memcmp.c: New file for SPU optimized memcmp. * libc/machine/spu/strncmp.h: New file supply _strncmp_internal. * libc/machine/spu/Makefile.am: Add memcmp.c. * libc/machine/spu/Makefile.in: Rebuild. * libc/machine/spu/strncmp.c: Use _strncmp_internal. 2008-04-01 Patrick Mansfield * configure.host: Build SPU with -DREENTRANT_SYSCALLS_PROVIDED and -DMISSING_SYSCALL_NAMES. 2008-04-01 Patrick Mansfield * libc/machine/spu/Makefile.am: Add assert.c. * libc/machine/spu/Makefile.in: Regenerate. * libc/machine/spu/assert.c: New file. 2008-03-27 Patrick Mansfield * libc/include/reent.h: Define _func_r functions in this file to func if REENTRANT_SYSCALLS_PROVIDED and MISSING_SYSCALL_NAMES are defined. 2008-03-27 Corinna Vinschen * libc/include/sys/unistd.h: Declare lockf(2) and define lockf constants when building for Cygwin. 2008-03-11 Jeff Johnston * libc/stdio/rgetc.c (__srget_r): Invoke CHECK_INIT to ensure stdin gets resolved properly before refilling. 2008-03-07 Jeff Johnston * libc/include/getopt.h: Hide newlib extensions under the __need_getopt_newlib flag. * libc/stdlib/getopt.c: #define __need_getopt_newlib before including getopt.h. Put entire code under !HAVE_GETOPT to support platforms with their own getopt implementation. * configure.host: Specify HAVE_GETOPT for x86-linux. 2008-03-07 Jeff Johnston * libc/include/sys/reent.h(_REENT_SMALL_CHECK_INIT): Specify this macro completely instead of referring to CHECK_STD_INIT which is only found in libc/stdio/local.h. * libc/stdio/dprintf.c: Add include of local.h. * libc/stdio/vdprintf.c: Ditto. * libc/stdio/vdiprintf.c: Ditto. 2008-03-04 Eric Blake Fix strtod("nan()", ptr). * libc/stdlib/gdtoa-hexnan.c (hexnan): When the optional n-char-sequence is omitted, still parse the (). 2008-03-03 Eric Blake Fix ftell bug after ungetc. * libc/stdio/ftell.c (_ftell_r): Don't flush ungetc buffer on ftell. * libc/stdio64/ftello64.c (_ftello64_r): Likewise. * libc/stdio/fflush.c (_fflush_r): Clear unget buffer when repositioning underlying fd offset. 2008-03-02 Jeff Johnston * libc/include/getopt.h (no_argument): Added for glibc compatibility. (required_argument, optional_argument): Ditto. 2008-02-29 Gregory Pietsch * libc/stdlib/getopt.c (getopt_internal): Rewrite to accept data area so as to support reentrant calls. Change all callers to fill in data area with global values and restore any changes to the global values after call. (__getopt_r, __getopt_long_r, __getopt_long_only_r): New routines to support reentrancy that add a data area argument. * libc/include/getopt.h: Add new _r routines and provide macros so they can be called with using double-underscores. 2008-02-21 Eric Blake Fix strtod("-0x", NULL). * libc/stdlib/strtod.c (_strtod_r): Fall back to 0 if hex parse fails. 2008-02-12 Jeff Johnston * libc/machine/powerpc/vfprintf.c (_VFPRINTF_R): Prepare for user specifying --disable-newlib-io-long-long on configure. Call _fflush_r instead of fflush. For _mbtowc_r, pass the reentrant pointer passed in rather than _REENT. 2008-02-12 Peter Rosin * libc/stdlib/getopt.c (getopt_internal): Handle optional arguments better for long options and short options not appearing as the first option in a sequence. 2008-02-11 Patrick Mansfield * libc/machine/spu/straddr.h: New file, supplies _straddr. * libc/machine/spu/strcat.c: Use _straddr and _strcpy. * libc/machine/spu/strcpy.c: Use _strcpy. * libc/machine/spu/strcpy.h: Supply _strcpy for optimized SPU str[n]cpy and str[n]cat. * libc/machine/spu/strncat.c: Use _straddr and _strcpy. * libc/machine/spu/strncpy.c: Use _strcpy. 2008-02-11 Patrick Mansfield * libc/machine/spu/strlen.c: Remove the len variable and unneeded calculation of its value. 2008-01-25 Hans-Peter Nilsson * libc/sys/mmixware/isatty.c (_isatty): Renamed from isatty. Make ISO C. 2008-01-21 DJ Delorie * libc/sys/sh/syscalls.c (_isatty): New. 2008-01-21 Neal H. Walfield * Makefile.am (crt1.o): Use correct source. * Makefile.in: Regenerated. 2008-01-15 Eric Blake * libc/string/Makefile.am (ELIX_2_SOURCES): Fix definition. * libc/string/Makefile: Regenerate. 2008-01-15 Corinna Vinschen * libc/include/machine/setjmp.h (__SIGMASK_FUNC): Define as pthread_sigmask or sigprocmask depending on _POSIX_THREADS. (sigsetjmp): Use __SIGMASK_FUNC. (siglongjmp): Ditto. (_setjmp): Define as macro. (_longjmp): Ditto. 2008-01-11 Eric Blake Make strstr and strcasestr O(n), not O(n^2); add memmem. * libc/string/str-two-way.h: New file. * libc/string/memmem.c (memmem): New file. * libc/include/string.h (memmem): Declare for all platforms. * libc/string/strstr.c (strstr): Provide O(n) implementation when not optimizing for space. * libc/string/strcasestr.c (strcasestr): Likewise. * libc/string/Makefile.am (ELIX_SOURCES): Rename to... (ELIX_2_SOURCES): ...this. (ELIX_4_SOURCES): New category, for memmem. (lib_a_SOURCES, libstring_la_SOURCES): Build new file. (CHEWOUT_FILES): Build documentation for memmem. * libc/string/strings.tex: Include new docs. 2008-01-08 Jeff Johnston * libc/machine/m68k/memcpy.S: Remove % from register references as this is already handled by m68kasm.h. * libc/machine/m68k/memset.S: Ditto. 2008-01-07 Jeff Johnston * libc/machine/m68k/m68kasm.h: New file. * libc/machine/m68k/setjmp.S: Remove common definitions and place in m68kasm.h. Include "m68kasm.h". * libc/machine/m68k/memcpy.S: Include "m68kasm.h" and use SYM() macro when referencing function name. * libc/machine/m68k/memset.S: Ditto. 2008-01-03 Jeff Johnston Make isatty syscall handling consistent with other newlib syscalls. * libc/include/_syslist.h: Add _isatty. * libc/include/reent.h: Add _isatty_r. * libc/include/sys/unistd.h: Add _isatty. * libc/posix/Makefile.am: Add new _isatty.c file. * libc/posix/Makefile.in: Regenerated. * libc/posix/_isatty.c: New file. * libc/posix/isatty.c: Changed to call _isatty(). * libc/reent/Makefile.am: Add new isattyr.c file. * libc/reent/Makefile.in: Regenerated. * libc/reent/isattyr.c: New file. * libc/stdio/freopen.c: Changed to call _isatty_r(). * libc/stdio/makebuf.c: Ditto. * libc/sys/a29khif/_isatty.S: Change isatty to _isatty. * libc/sys/arc/isatty.c: Ditto. * libc/sys/arm/syscalls.c: Ditto. * libc/sys/d10v/syscalls.c: Ditto. * libc/sys/h8300hms/syscalls.c: Ditto. * libc/sys/h8500hms/syscalls.c: Ditto. * libc/sys/linux/Makefile.am: Add new isatty.c file. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/isatty.c: New file. * libc/syscalls/Makefile.am: Add new sysisatty.c file. * libc/syscalls/Makefile.in: Regenerated. * libc/syscalls/sysisatty.c: New file. 2008-01-02 Jeff Johnston * libc/syscalls/sysclose.c: Always call reentrant version of the underlying syscall since one is guaranteed to exist in libc/reent. * libc/syscalls/sysexecve.c: Ditto. * libc/syscalls/sysfcntl.c: Ditto. * libc/syscalls/sysfork.c: Ditto. * libc/syscalls/sysfstat.c: Ditto. * libc/syscalls/sysgetpid.c: Ditto. * libc/syscalls/sysgettod.c: Ditto. * libc/syscalls/syskill.c: Ditto. * libc/syscalls/syslink.c: Ditto. * libc/syscalls/syslseek.c: Ditto. * libc/syscalls/sysopen.c: Ditto. * libc/syscalls/sysread.c: Ditto. * libc/syscalls/syssbrk.c: Ditto. * libc/syscalls/sysstat.c: Ditto. * libc/syscalls/systimes.c: Ditto. * libc/syscalls/sysunlink.c: Ditto. * libc/syscalls/syswait.c: Ditto. * libc/syscalls/syswrite.c: Ditto. 2007-12-19 Jeff Johnston * NEWS: Update with 1.16.0 info. * README: Ditto. * acinclude.m4: Change version number to 1.16.0. * aclocal.m4: Regenerated. * configure: Ditto. * doc/aclocal.m4: Ditto. * doc/configure: Ditto. * libc/*/aclocal.m4: Ditto. * libc/*/configure: Ditto. * libc/libc.texinfo: Ditto. * libm/*/aclocal.m4: Ditto. * libm/*/configure: Ditto. * libm/libm.texinfo: Ditto. * libc/sys/linux/shared.ld: Add VERS_1.16. 2007-12-19 Jeff Johnston * libc/string/strcasestr.c: Remove id macro. * libc/sys/linux/linuxthreads/attr.c: Fix up sched_priority field reference to be __sched_priority. * libc/sys/linux/linuxthreads/joinrace.c: Ditto. * libc/sys/linux/linuxthreads/manager.c: Ditto. * libc/sys/linux/stdlib/collate.c: Remove id macro. * libc/sys/linux/stdlib/collcmp.c: Ditto. * libc/sys/linux/stdlib/engine.c: Ditto. * libc/sys/linux/stdlib/fnmatch.c: Ditto. * libc/sys/linux/stdlib/glob.c: Ditto. * libc/sys/linux/stdlib/reallocf.c: Ditto. * libc/sys/linux/stdlib/regcomp.c: Ditto. * libc/sys/linux/stdlib/regerror.c: Ditto. * libc/sys/linux/stdlib/regexec.c: Ditto. * libc/sys/linux/stdlib/regfree.c: Ditto. * libc/sys/linux/sys/cdefs.h: Replace with latest version. * libc/sys/linux/include/argp.h: Ditto. * libc/sys/linux/sys/libc-lock.h: New file. * libc/sys/linux/sys/stdint.h: Ditto. * libc/sys/linux/include/sched.h: New file. 2007-12-19 Dave Korn Jeff Johnston * libc/include/_ansi.h: Add _LONG_LONG definition. * libc/include/math.h (llrint, llrintf, rintl, lrintl, llrintl): Add prototypes. * libc/machine/i386/machine/fastmath.h: Add support for new i386 fast math versions of rint, lrint, and llrint family functions. * libm/machine/i386/Makefile.am: Add new files. * libm/machine/i386/Makefile.in: Regenerated. * libm/machine/i386/f_llrint.c, libm/machine/i386/f_lrint.c, libm/machine/i386/f_rint.c, libm/machine/i386/f_llrintf.c, libm/machine/i386/f_lrintf.c, libm/machine/i386/f_rintf.c, libm/machine/i386/f_llrintl.c, libm/machine/i386/f_lrintl.c, libm/machine/i386/f_rintl.c: New files with fast math implementations. 2007-12-19 Jeff Johnston * libc/include/sys/features.h: Add checks for C90 compilers using -ansi. 2007-12-19 Corinna Vinschen * libc/include/wchar.h: Add prototypes for wcpcpy and wcpncpy. * libc/string/Makefile.am (ELIX_SOURCES): Add wcpcpy.c and wcpncpy.c. (CHEWOUT_FILES): Add wcpcpy.def and wcpncpy.def. * libc/string/Makefile.in: Regenerate. * libc/string/wcpcpy.c: New file. * libc/string/wcpncpy.c: New file. * libc/string/wcstrings.tex: Add wcpcpy and wcpncpy. 2007-12-19 Corinna Vinschen * libc/stdio/vfprintf.c (_VFPRINTF_R): Use correct pointer in call to _wcsrtombs_r. 2007-11-19 Nick Clifton * libc/machine/mn10300/Makefile.am (CCASFLAGS): Add -Wa,--gdwarf-2. * libc/machine/mn10300/Makefile.in: Regenerate. * libc/machine/mn10300/memchar.S: Remove redundant labels. Add .debug_frame section. * libc/machine/mn10300/memcmp.S: Likewise. * libc/machine/mn10300/memcpy.S: Likewise. * libc/machine/mn10300/memset.S: Likewise. * libc/machine/mn10300/strchr.S: Likewise. * libc/machine/mn10300/strcmp.S: Likewise. * libc/machine/mn10300/strcpy.S: Likewise. * libc/machine/mn10300/strlen.S: Likewise. 2007-11-15 Jeff Johnston * libc/include/sys/_default_fcntl.h: New header file that is the default version of sys/fcntl.h. * libc/include/sys/fcntl.h: Changed to simply include sys/_default_fcntl.h. * libc/sys/arm/sys/fcntl.h: New file that includes sys/_default_fcntl.h and defines O_BINARY. 2007-11-08 Corinna Vinschen * libc/include/sys/unistd.h: Remove Cygwin definition of MAXPATHLEN. 2007-11-07 Dave Brolley * libc/machine/configure: Regenerated to pick up mep-elf changes. * Contribute mep-elf from Red Hat 2006-10-27 DJ Delorie * libc/include/machine/setjmp.h: Add MeP support. 2003-04-17 DJ Delorie * configure.host (mep-*-*): Support "long long" type. 2001-06-06 DJ Delorie * libc/include/machine/ieeefp.h (mep): Support little endian too. 2001-05-14 DJ Delorie * configure.host: Add mep's machine_dir. * libc/include/setjmp.h: Add mep support. * libc/machine/mep: New. * libc/machine/mep/setjmp.S: New, support mep's setjmp/longjmp. 2001-05-04 DJ Delorie * configure.host: Add mep. * libc/include/machine/ieeefp.h: Ditto. 2007-10-31 DJ Delorie * libc/signal/signal.c (_raise_r): Don't attempt to initialize the signal table, just use a default, in case initialization cause recursion. 2007-10-23 Jeff Johnston * libc/stdlib/wcstombs_r.c: Add SUSV2 support for calculating size if output buffer is NULL. 2007-10-17 Jeff Johnston * libm/mathfp/s_logarithm.c: Fix error introduced by previous fix when handling negative input values. Make function consistent with math directory and glibc version such that inf and nan values return inf and nan respectively with no errno setting. * libm/mathfp/sf_logarithm.c: Ditto. * libm/math/w_log.c: Set errno to ERANGE when input is 0.0. * libm/math/wf_log.c: Ditto. * libm/math/w_log10.c: Ditto. * libm/math/wf_log10.c: Ditto. 2007-10-17 Jeff Johnston * libm/mathfp/s_logarithm.c: Fix case where input is 0 to return -inf. * libm/mathfp/sf_logarithm.c: Ditto. 2007-10-17 Jeff Johnston * libc/machine/i386/machine/fastmath.h: New file. 2007-10-13 Eric Blake * libc/stdio/vfprintf.c (_VFPRINTF_R) [__OPTIMIZE_SIZE__]: Correctly nest else within conditionals. Reported by Artur Lipowski. 2007-10-09 Nick Clifton * libc/sys/linux/dl/do-lookup.h (FCT): Support symbols with the STT_COMMON type. 2007-10-09 Ben Elliston * libm/machine/spu/headers/acosd2.h: Include spu_intrinsics.h before simdmath.h to get a definition for `vector'. * libm/machine/spu/headers/asind2.h: Likewise. 2007-09-28 Patrick Mansfield * libm/machine/spu/headers/dom_chkd_less_than.h: New file. * libm/machine/spu/headers/dom_chkd_negone_one.h: Ditto. * libm/machine/spu/headers/dom_chkf_less_than.h: Ditto. * libm/machine/spu/headers/dom_chkf_negone_one.h: Ditto. * libm/machine/spu/headers/acos.h: Add domain check. * libm/machine/spu/headers/acosf.h: Ditto. * libm/machine/spu/headers/acosh.h: Ditto. * libm/machine/spu/headers/acoshf.h: Ditto. * libm/machine/spu/headers/asin.h: Ditto. * libm/machine/spu/headers/asinf.h: Ditto. * libm/machine/spu/headers/atanh.h: Ditto. * libm/machine/spu/headers/atanhf.h: Ditto. * libm/machine/spu/headers/fmod.h: Ditto. * libm/machine/spu/headers/fmodf.h: Ditto. * libm/machine/spu/headers/log.h: Ditto. * libm/machine/spu/headers/log10.h: Ditto. * libm/machine/spu/headers/log1p.h: Ditto. * libm/machine/spu/headers/log1pf.h: Ditto. * libm/machine/spu/headers/log2.h: Ditto. * libm/machine/spu/headers/log2f.h: Ditto. * libm/machine/spu/headers/sqrt.h: Ditto. * libm/machine/spu/headers/sqrtf.h: Ditto. * libm/machine/spu/headers/tgamma.h: Ditto. * libm/machine/spu/headers/tgammaf.h: Ditto. 2007-09-28 Patrick Mansfield * libm/machine/spu/Makefile.am: Add new C files. * libm/machine/spu/Makefile.in: Regenerate. * libm/machine/spu/headers/acos.h: New file. * libm/machine/spu/headers/acosd2.h: Ditto. * libm/machine/spu/headers/acosf.h: Ditto. * libm/machine/spu/headers/acosf4.h: Ditto. * libm/machine/spu/headers/acosh.h: Ditto. * libm/machine/spu/headers/acoshd2.h: Ditto. * libm/machine/spu/headers/acoshf.h: Ditto. * libm/machine/spu/headers/acoshf4.h: Ditto. * libm/machine/spu/headers/asin.h: Ditto. * libm/machine/spu/headers/asind2.h: Ditto. * libm/machine/spu/headers/asinf.h: Ditto. * libm/machine/spu/headers/asinf4.h: Ditto. * libm/machine/spu/headers/asinh.h: Ditto. * libm/machine/spu/headers/asinhd2.h: Ditto. * libm/machine/spu/headers/asinhf.h: Ditto. * libm/machine/spu/headers/asinhf4.h: Ditto. * libm/machine/spu/headers/atan.h: Ditto. * libm/machine/spu/headers/atan2.h: Ditto. * libm/machine/spu/headers/atan2d2.h: Ditto. * libm/machine/spu/headers/atan2f.h: Ditto. * libm/machine/spu/headers/atan2f4.h: Ditto. * libm/machine/spu/headers/atand2.h: Ditto. * libm/machine/spu/headers/atanf4.h: Ditto. * libm/machine/spu/headers/atanh.h: Ditto. * libm/machine/spu/headers/atanhd2.h: Ditto. * libm/machine/spu/headers/atanhf.h: Ditto. * libm/machine/spu/headers/atanhf4.h: Ditto. * libm/machine/spu/headers/cos.h: Ditto. * libm/machine/spu/headers/cos_sin.h: Ditto. * libm/machine/spu/headers/cosd2.h: Ditto. * libm/machine/spu/headers/cosf.h: Ditto. * libm/machine/spu/headers/cosf4.h: Ditto. * libm/machine/spu/headers/cosh.h: Ditto. * libm/machine/spu/headers/coshd2.h: Ditto. * libm/machine/spu/headers/coshf.h: Ditto. * libm/machine/spu/headers/coshf4.h: Ditto. * libm/machine/spu/headers/divd2.h: Ditto. * libm/machine/spu/headers/divf4.h: Ditto. * libm/machine/spu/headers/erf.h: Ditto. * libm/machine/spu/headers/erf_utils.h: Ditto. * libm/machine/spu/headers/erfc.h: Ditto. * libm/machine/spu/headers/erfcd2.h: Ditto. * libm/machine/spu/headers/erfcf.h: Ditto. * libm/machine/spu/headers/erfcf4.h: Ditto. * libm/machine/spu/headers/erfd2.h: Ditto. * libm/machine/spu/headers/erff.h: Ditto. * libm/machine/spu/headers/erff4.h: Ditto. * libm/machine/spu/headers/exp.h: Ditto. * libm/machine/spu/headers/exp2.h: Ditto. * libm/machine/spu/headers/exp2d2.h: Ditto. * libm/machine/spu/headers/exp2f4.h: Ditto. * libm/machine/spu/headers/expd2.h: Ditto. * libm/machine/spu/headers/expf4.h: Ditto. * libm/machine/spu/headers/expm1.h: Ditto. * libm/machine/spu/headers/expm1d2.h: Ditto. * libm/machine/spu/headers/expm1f.h: Ditto. * libm/machine/spu/headers/expm1f4.h: Ditto. * libm/machine/spu/headers/floord2.h: Ditto. * libm/machine/spu/headers/floorf4.h: Ditto. * libm/machine/spu/headers/hypot.h: Ditto. * libm/machine/spu/headers/hypotd2.h: Ditto. * libm/machine/spu/headers/hypotf.h: Ditto. * libm/machine/spu/headers/hypotf4.h: Ditto. * libm/machine/spu/headers/isnan.h: Ditto. * libm/machine/spu/headers/isnand2.h: Ditto. * libm/machine/spu/headers/isnanf.h: Ditto. * libm/machine/spu/headers/isnanf4.h: Ditto. * libm/machine/spu/headers/ldexpd2.h: Ditto. * libm/machine/spu/headers/ldexpf4.h: Ditto. * libm/machine/spu/headers/lgamma.h: Ditto. * libm/machine/spu/headers/lgammad2.h: Ditto. * libm/machine/spu/headers/lgammaf.h: Ditto. * libm/machine/spu/headers/lgammaf4.h: Ditto. * libm/machine/spu/headers/log.h: Ditto. * libm/machine/spu/headers/log10.h: Ditto. * libm/machine/spu/headers/log10d2.h: Ditto. * libm/machine/spu/headers/log1p.h: Ditto. * libm/machine/spu/headers/log1pd2.h: Ditto. * libm/machine/spu/headers/log1pf.h: Ditto. * libm/machine/spu/headers/log1pf4.h: Ditto. * libm/machine/spu/headers/log2.h: Ditto. * libm/machine/spu/headers/log2d2.h: Ditto. * libm/machine/spu/headers/log2f4.h: Ditto. * libm/machine/spu/headers/logbf.h: Ditto. * libm/machine/spu/headers/logbf4.h: Ditto. * libm/machine/spu/headers/logd2.h: Ditto. * libm/machine/spu/headers/logf4.h: Ditto. * libm/machine/spu/headers/nearbyintf.h: Ditto. * libm/machine/spu/headers/nearbyintf4.h: Ditto. * libm/machine/spu/headers/nextafter.h: Ditto. * libm/machine/spu/headers/nextafterd2.h: Ditto. * libm/machine/spu/headers/nextafterf.h: Ditto. * libm/machine/spu/headers/nextafterf4.h: Ditto. * libm/machine/spu/headers/pow.h: Ditto. * libm/machine/spu/headers/powd2.h: Ditto. * libm/machine/spu/headers/powf.h: Ditto. * libm/machine/spu/headers/powf4.h: Ditto. * libm/machine/spu/headers/recipd2.h: Ditto. * libm/machine/spu/headers/recipf4.h: Ditto. * libm/machine/spu/headers/rintf.h: Ditto. * libm/machine/spu/headers/rintf4.h: Ditto. * libm/machine/spu/headers/scalbnf4.h: Ditto. * libm/machine/spu/headers/signbit.h: Ditto. * libm/machine/spu/headers/signbitd2.h: Ditto. * libm/machine/spu/headers/simdmath.h: Ditto. * libm/machine/spu/headers/sin.h: Ditto. * libm/machine/spu/headers/sincos.h: Ditto. * libm/machine/spu/headers/sincosd2.h: Ditto. * libm/machine/spu/headers/sincosf.h: Ditto. * libm/machine/spu/headers/sincosf4.h: Ditto. * libm/machine/spu/headers/sind2.h: Ditto. * libm/machine/spu/headers/sinf.h: Ditto. * libm/machine/spu/headers/sinf4.h: Ditto. * libm/machine/spu/headers/sinh.h: Ditto. * libm/machine/spu/headers/sinhd2.h: Ditto. * libm/machine/spu/headers/sinhf.h: Ditto. * libm/machine/spu/headers/sinhf4.h: Ditto. * libm/machine/spu/headers/sqrtd2.h: Ditto. * libm/machine/spu/headers/sqrtf.h: Ditto. * libm/machine/spu/headers/sqrtf4.h: Ditto. * libm/machine/spu/headers/tan.h: Ditto. * libm/machine/spu/headers/tand2.h: Ditto. * libm/machine/spu/headers/tanf.h: Ditto. * libm/machine/spu/headers/tanf4.h: Ditto. * libm/machine/spu/headers/tanh.h: Ditto. * libm/machine/spu/headers/tanhd2.h: Ditto. * libm/machine/spu/headers/tanhf.h: Ditto. * libm/machine/spu/headers/tanhf4.h: Ditto. * libm/machine/spu/headers/tgamma.h: Ditto. * libm/machine/spu/headers/tgammad2.h: Ditto. * libm/machine/spu/headers/tgammaf.h: Ditto. * libm/machine/spu/headers/tgammaf4.h: Ditto. * libm/machine/spu/headers/truncd2.h: Ditto. * libm/machine/spu/headers/truncf4.h: Ditto. * libm/machine/spu/log2.c: Ditto. * libm/machine/spu/s_asinh.c: Ditto. * libm/machine/spu/s_atan.c: Ditto. * libm/machine/spu/s_cos.c: Ditto. * libm/machine/spu/s_erf.c: Ditto. * libm/machine/spu/s_expm1.c: Ditto. * libm/machine/spu/s_isnan.c: Ditto. * libm/machine/spu/s_log1p.c: Ditto. * libm/machine/spu/s_nextafter.c: Ditto. * libm/machine/spu/s_sin.c: Ditto. * libm/machine/spu/s_tan.c: Ditto. * libm/machine/spu/s_tanh.c: Ditto. * libm/machine/spu/sf_asinh.c: Ditto. * libm/machine/spu/sf_cos.c: Ditto. * libm/machine/spu/sf_erf.c: Ditto. * libm/machine/spu/sf_expm1.c: Ditto. * libm/machine/spu/sf_log1p.c: Ditto. * libm/machine/spu/sf_logb.c: Ditto. * libm/machine/spu/sf_nearbyint.c: Ditto. * libm/machine/spu/sf_nextafter.c: Ditto. * libm/machine/spu/sf_rint.c: Ditto. * libm/machine/spu/sf_sin.c: Ditto. * libm/machine/spu/sf_tan.c: Ditto. * libm/machine/spu/sf_tanh.c: Ditto. * libm/machine/spu/w_acos.c: Ditto. * libm/machine/spu/w_acosh.c: Ditto. * libm/machine/spu/w_asin.c: Ditto. * libm/machine/spu/w_atan2.c: Ditto. * libm/machine/spu/w_atanh.c: Ditto. * libm/machine/spu/w_cosh.c: Ditto. * libm/machine/spu/w_exp.c: Ditto. * libm/machine/spu/w_exp2.c: Ditto. * libm/machine/spu/w_hypot.c: Ditto. * libm/machine/spu/w_lgamma.c: Ditto. * libm/machine/spu/w_log.c: Ditto. * libm/machine/spu/w_log10.c: Ditto. * libm/machine/spu/w_pow.c: Ditto. * libm/machine/spu/w_sincos.c: Ditto. * libm/machine/spu/w_sinh.c: Ditto. * libm/machine/spu/w_tgamma.c: Ditto. * libm/machine/spu/wf_acos.c: Ditto. * libm/machine/spu/wf_acosh.c: Ditto. * libm/machine/spu/wf_asin.c: Ditto. * libm/machine/spu/wf_atan2.c: Ditto. * libm/machine/spu/wf_atanh.c: Ditto. * libm/machine/spu/wf_cosh.c: Ditto. * libm/machine/spu/wf_hypot.c: Ditto. * libm/machine/spu/wf_lgamma.c: Ditto. * libm/machine/spu/wf_pow.c: Ditto. * libm/machine/spu/wf_sincos.c: Ditto. * libm/machine/spu/wf_sinh.c: Ditto. * libm/machine/spu/wf_sqrt.c: Ditto. * libm/machine/spu/wf_tgamma.c: Ditto. 2007-09-28 Patrick Mansfield * configure.host: Define _POSIX_MODE to match the existing vector math code, as we don't support the matherr callout. * libm/machine/spu/Makefile.am: New file. * libm/machine/spu/Makefile.in: Auto-generated. * libm/machine/spu/headers/atanf.h: New file. * libm/machine/spu/headers/cbrt.h: Ditto. * libm/machine/spu/headers/cbrtf.h: Ditto. * libm/machine/spu/headers/ceil.h: Ditto. * libm/machine/spu/headers/ceilf.h: Ditto. * libm/machine/spu/headers/copysign.h: Ditto. * libm/machine/spu/headers/copysignf.h: Ditto. * libm/machine/spu/headers/exp2f.h: Ditto. * libm/machine/spu/headers/expf.h: Ditto. * libm/machine/spu/headers/fabs.h: Ditto. * libm/machine/spu/headers/fabsf.h: Ditto. * libm/machine/spu/headers/fdim.h: Ditto. * libm/machine/spu/headers/fdimf.h: Ditto. * libm/machine/spu/headers/floor.h: Ditto. * libm/machine/spu/headers/floorf.h: Ditto. * libm/machine/spu/headers/fma.h: Ditto. * libm/machine/spu/headers/fmaf.h: Ditto. * libm/machine/spu/headers/fmax.h: Ditto. * libm/machine/spu/headers/fmaxf.h: Ditto. * libm/machine/spu/headers/fmin.h: Ditto. * libm/machine/spu/headers/fminf.h: Ditto. * libm/machine/spu/headers/fmod.h: Ditto. * libm/machine/spu/headers/fmodf.h: Ditto. * libm/machine/spu/headers/frexp.h: Ditto. * libm/machine/spu/headers/frexpf.h: Ditto. * libm/machine/spu/headers/ilogb.h: Ditto. * libm/machine/spu/headers/ilogbf.h: Ditto. * libm/machine/spu/headers/ldexp.h: Ditto. * libm/machine/spu/headers/ldexpf.h: Ditto. * libm/machine/spu/headers/llrint.h: Ditto. * libm/machine/spu/headers/llrintf.h: Ditto. * libm/machine/spu/headers/llround.h: Ditto. * libm/machine/spu/headers/llroundf.h: Ditto. * libm/machine/spu/headers/log10f.h: Ditto. * libm/machine/spu/headers/log2f.h: Ditto. * libm/machine/spu/headers/logf.h: Ditto. * libm/machine/spu/headers/lrint.h: Ditto. * libm/machine/spu/headers/lrintf.h: Ditto. * libm/machine/spu/headers/lround.h: Ditto. * libm/machine/spu/headers/lroundf.h: Ditto. * libm/machine/spu/headers/nearbyint.h: Ditto. * libm/machine/spu/headers/remainder.h: Ditto. * libm/machine/spu/headers/remainderf.h: Ditto. * libm/machine/spu/headers/remquo.h: Ditto. * libm/machine/spu/headers/remquof.h: Ditto. * libm/machine/spu/headers/rint.h: Ditto. * libm/machine/spu/headers/round.h: Ditto. * libm/machine/spu/headers/roundf.h: Ditto. * libm/machine/spu/headers/scalbn.h: Ditto. * libm/machine/spu/headers/scalbnf.h: Ditto. * libm/machine/spu/headers/sqrt.h: Ditto. * libm/machine/spu/headers/trunc.h: Ditto. * libm/machine/spu/headers/truncf.h: Ditto. * libm/machine/spu/headers/vec_literal.h: Ditto. * libm/machine/spu/llrint.c: Ditto. * libm/machine/spu/llrintf.c: Ditto. * libm/machine/spu/llround.c: Ditto. * libm/machine/spu/llroundf.c: Ditto. * libm/machine/spu/log2f.c: Ditto. * libm/machine/spu/s_cbrt.c: Ditto. * libm/machine/spu/s_ceil.c: Ditto. * libm/machine/spu/s_copysign.c: Ditto. * libm/machine/spu/s_fabs.c: Ditto. * libm/machine/spu/s_fdim.c: Ditto. * libm/machine/spu/s_floor.c: Ditto. * libm/machine/spu/s_fma.c: Ditto. * libm/machine/spu/s_fmax.c: Ditto. * libm/machine/spu/s_fmin.c: Ditto. * libm/machine/spu/s_frexp.c: Ditto. * libm/machine/spu/s_ilogb.c: Ditto. * libm/machine/spu/s_ldexp.c: Ditto. * libm/machine/spu/s_lrint.c: Ditto. * libm/machine/spu/s_lround.c: Ditto. * libm/machine/spu/s_nearbyint.c: Ditto. * libm/machine/spu/s_remquo.c: Ditto. * libm/machine/spu/s_rint.c: Ditto. * libm/machine/spu/s_round.c: Ditto. * libm/machine/spu/s_scalbn.c: Ditto. * libm/machine/spu/s_trunc.c: Ditto. * libm/machine/spu/sf_atan.c: Ditto. * libm/machine/spu/sf_cbrt.c: Ditto. * libm/machine/spu/sf_ceil.c: Ditto. * libm/machine/spu/sf_copysign.c: Ditto. * libm/machine/spu/sf_fabs.c: Ditto. * libm/machine/spu/sf_fdim.c: Ditto. * libm/machine/spu/sf_floor.c: Ditto. * libm/machine/spu/sf_fma.c: Ditto. * libm/machine/spu/sf_fmax.c: Ditto. * libm/machine/spu/sf_fmin.c: Ditto. * libm/machine/spu/sf_frexp.c: Ditto. * libm/machine/spu/sf_ilogb.c: Ditto. * libm/machine/spu/sf_ldexp.c: Ditto. * libm/machine/spu/sf_lrint.c: Ditto. * libm/machine/spu/sf_lround.c: Ditto. * libm/machine/spu/sf_remquo.c: Ditto. * libm/machine/spu/sf_round.c: Ditto. * libm/machine/spu/sf_scalbn.c: Ditto. * libm/machine/spu/sf_trunc.c: Ditto. * libm/machine/spu/w_fmod.c: Ditto. * libm/machine/spu/w_remainder.c: Ditto. * libm/machine/spu/w_sqrt.c: Ditto. * libm/machine/spu/wf_exp.c: Ditto. * libm/machine/spu/wf_exp2.c: Ditto. * libm/machine/spu/wf_fmod.c: Ditto. * libm/machine/spu/wf_log.c: Ditto. * libm/machine/spu/wf_log10.c: Ditto. * libm/machine/spu/wf_remainder.c: Ditto. 2007-09-21 Patrick Mansfield * libc/machine/spu/sys/uio.h: New file for readv and writev use. 2007-09-21 Patrick Mansfield * libc/include/sched.h: New file, just include sys/sched.h. * libc/machine/spu/sys/sched.h: New file, has just sched_yield prototype. * libc/machine/spu/sys/utime.h: New file, has utime prototype and struct utimbuf definition. 2007-09-21 Patrick Mansfield * libc/machine/spu/sys/dirent.h: New file, add prototypes and SPU specific struct and typedef. 2007-09-18 Patrick Mansfield * libc/include/sys/types.h: Use __dev_t, __uid_t, and __gid_t to typedef dev_t, gid_t, and uid_t. * libc/include/sys/_types.h: Move previous dev_t, uid_t and gid_t types.h code to here, but typedef __dev_t, __uid_t, and __gid_t instead. Change to lower case for all __foo_t_defined names. * libc/machine/spu/machine/_types.h: Add SPU specific __dev_t, __uid_t, and __gid_t making them all four bytes. Change to lower case for all __foo_t_defined names. 2007-09-18 Jeff Johnston * libc/reent/renamer.c: New file. * libc/reent/Makefile.am: Add new file. * libc/reent/Makefile.in: Regenerated. * libc/stdio/rename.c: Break out _rename_r code into reent/renamer.c and add check for rename syscall. 2007-09-17 Eric Blake Obey POSIX on printf("%.s", (char*)NULL). * libc/stdio/vfprintf.c (_VFPRINTF_R): Take precision into account for %s on NULL. Skip NULL check when optimizing for size. 2007-09-07 Jeff Johnston * libc/include/sys/_types.h: Protect all types with flag checks to allow definition in machine/_types.h. 2007-09-07 Jeff Johnston * libc/sys/linux/sys/_types.h: Add _fpos_t and _fpos64_t definitions in light of the previous change. 2007-09-07 Patrick Mansfield * libc/include/machine/_default_types.h: New file, contains what was previously in libc/include/machine/_types.h. * libc/include/machine/_types.h: Now only includes machine/_default_types.h. * libc/include/sys/reent.h: Remove _fpos_t and _fpos64_t. * libc/include/sys/_types.h: Move _fpos_t and _fpos64_t to here, with conditional declarations. * libc/machine/spu/machine/_types.h: New file, add SPU specific typedefs for _fpos_t and _fpos64_t. 2007-09-07 Jeff Johnston * libc/include/math.h (_M_LOG2E): Replace with.. (_M_LOG2_E): New macro. (log2, log2f, M_LOG2_E): Use _M_LOG2_E. 2007-09-06 Brian Dessent * libc/reent/getreent.c: Allow for case where __getreent is defined as a macro. 2007-09-06 Jeff Johnston * libc/include/math.h (_M_LOG2E): New log2 of e macro. (log2): Use _M_LOG2E instead of M_LOG2E. (log2f): Ditto. (M_LOG2E): Define to be _M_LOG2E. 2007-09-04 Kazunori Asayama * libm/math/wf_tgamma.c: Add missing include. 2007-08-31 Antony King * libc/stdlib/mprec.h [_DOUBLE_IS_32BITS}: Define IEEE_Arith bits and redefine associated dword0 macro (rvalue issue). * libc/stdio/vfieeefp.h: Ditto. * libc/stdlib/strtod.c: Add checks for _DOUBLE_IS_32BITS to prevent setting dword1 which is an rvalue only. 2007-08-28 Hans Kester * configure.host: Added support for x86_64. * libc/include/machine/ieeefp.h: Define __IEEE_LITTLE_ENDIAN for x86_64. * libc/include/machine/setjmp.h: Define _JBTYPE and _JBLEN for x86_64. * libc/machine/x86_64/aclocal.m4: Generated. * libc/machine/x86_64/configure.in: New. * libc/machine/x86_64/configure: Generated. * libc/machine/x86_64/Makefile.am: New. * libc/machine/x86_64/Makefile.in: Generated. * libc/machine/x86_64/setjmp.S: New. * libc/machine/x86_64/memcpy.S: New. * libc/machine/x86_64/memset.S: New. * libc/machine/configure.in: Added support for x86_64. * libc/machine/configure: Regenerated. 2007-08-24 Jeff Johnston * libm/common/sf_lround.c (lroundf): Cast sizeof calculation to int before comparing it to a signed int value. 2007-08-24 Hans-Peter Nilsson * libc/machine/cris/sys/errno.h (ECANCELED, ENOKEY, EKEYEXPIRED) (EKEYREVOKED, EKEYREJECTED, EOWNERDEAD, ENOTRECOVERABLE, ENOTSUP): Define. 2007-08-23 Hidetaka Takano Reduce the memory consumption of variable argument functions for SPU (cell): * libc/machine/spu/Makefile.am: Replace printf/scanf family C sources to assembler sources. * libc/machine/spu/Makefile.in: Regenerated. * libc/machine/spu/stdio.c: Add __check_init function wrapping CHECK_INIT macro to use from assembler routines. * libc/machine/spu/c99ppe.h: Add definitions for assembler code. * libc/machine/spu/fiprintf.S: New file. * libc/machine/spu/fiscanf.S: Ditto. * libc/machine/spu/fprintf.S: Ditto. * libc/machine/spu/fscanf.S: Ditto. * libc/machine/spu/iprintf.S: Ditto. * libc/machine/spu/iscanf.S: Ditto. * libc/machine/spu/printf.S: Ditto. * libc/machine/spu/scanf.S: Ditto. * libc/machine/spu/siprintf.S: Ditto. * libc/machine/spu/siscanf.S: Ditto. * libc/machine/spu/sniprintf.S: Ditto. * libc/machine/spu/snprintf.S: Ditto. * libc/machine/spu/sprintf.S: Ditto. * libc/machine/spu/sscanf.S: Ditto. * libc/machine/spu/stack_reg_va.S: Ditto. * libc/machine/spu/syscall.def: Ditto. (for maintenance) * libc/machine/spu/mk_syscalls: Ditto. (for maintenance) * libc/machine/spu/fiprintf.c: Removed. (Replaced by .S) * libc/machine/spu/fiscanf.c: Ditto. * libc/machine/spu/fprintf.c: Ditto. * libc/machine/spu/fscanf.c: Ditto. * libc/machine/spu/iprintf.c: Ditto. * libc/machine/spu/iscanf.c: Ditto. * libc/machine/spu/printf.c: Ditto. * libc/machine/spu/scanf.c: Ditto. * libc/machine/spu/siprintf.c: Ditto. * libc/machine/spu/siscanf.c: Ditto. * libc/machine/spu/sniprintf.c: Ditto. * libc/machine/spu/snprintf.c: Ditto. * libc/machine/spu/sprintf.c: Ditto. * libc/machine/spu/sscanf.c: Ditto. 2007-08-03 Ralf Corsepius * libc/include/tar.h: New. 2007-08-03 Jeff Johnston * libc/sys/linux/intl/Makefile.am: Change stpcpy reference to lcl_stpcpy to avoid conflict with new stpcpy.c in libc/string. * libc/sys/linux/intl/Makefile.in: Regenerated. * libc/sys/linux/intl/stpcpy.c: Renamed to... * libc/sys/linux/intl/lcl_stpcpy.c: ..this. 2007-08-02 Eric Blake Implement fmemopen and open_memstream. * libc/stdio/fmemopen.c (_fmemopen_r, fmemopen): New file. * libc/stdio/open_memstream.c (_open_memstream_r, open_memstream): New file. * libc/stdio/fopencookie.c (fcwriter): Minor optimization. * libc/include/stdio.h (dprintf, vdprintf): Group all POSIX 200x functions together. (fmemopen, open_memstream): Declare new functions. * libc/stdio/stdio.tex: Document them. * libc/stdio/Makefile.am (ELIX_4_SOURCES, CHEWOUT_FILES): Add fmemopen and open_memstream. * libc/stdio/Makefile.in: Regenerate. 2007-07-31 Eric Blake More POSIX stream corner cases. * libc/stdio/findfp.c (__sinit): Open stderr read/write. * libc/stdio/fdopen.c (_fdopen_r): Set O_APPEND on fd when requested. * libc/stdio64/fdopen64.c (_fdopen64_r): Likewise. 2007-07-18 Eric Blake Fix 'make info'. * libc/stdio/stdio.tex: Add missing include. * libc/stdio/vfprintf.c: Use expected node name. * libc/stdio/vfscanf.c: Likewise. * libc/stdio/sscanf.c: Likewise. * libc/stdio/sprintf.c: Likewise. * libc/stdio/siscanf.c: Likewise. * libc/stdio/siprintf.c: Likewise. * libc/stdio/fopencookie.c: Quote raw {}. Reported by DJ Delorie. 2007-07-13 Eric Blake Fix fflush issues. * libc/stdio/fflush.c (_fflush_r): New function. (fflush): Fix reentrancy and large offset behavior. * libc/include/stdio.h (_fflush_r): Add prototype. * libc/stdio/fclose.c (_fclose_r): All fflush callers changed. * libc/stdio/freopen.c (_freopen_r): Likewise. * libc/stdio/fseek.c (_fseek_r): Likewise. * libc/stdio/ftell.c (_ftell_r): Likewise. * libc/stdio/fvwrite.c (__sfvwrite_r): Likewise. * libc/stdio/refill.c (__srefill_r): Likewise. * libc/stdio/setvbuf.c (setvbuf): Likewise. * libc/stdio/ungetc.c (_ungetc_r): Likewise. * libc/stdio/vfprintf.c (__sbprintf): Likewise. * libc/stdio/wbuf.c (__swbuf_r): Likewise. * libc/stdio64/freopen64.c (_freopen64_r): Likewise. * libc/stdio64/fseeko64.c (_fseeko64_r): Likewise. Defer to 32-bit version if not large file. * libc/stdio64/ftello64.c (_ftello64_r): Likewise. * libc/stdio64/tmpfile64.c (_tmpfile64_r): Avoid compile warning. Documentation updates. * libc/stdio/ungetc.c: Document ungetc. * libc/stdio/Makefile.am (CHEWOUT_FILES): Sort, match current list of files with documentation. * libc/stdio/Makefile.in: Regenerate. * libc/stdio/stdio.tex: Sort and update stdio documentation index. 2007-07-11 Jeff Johnston * libc/include/math.h: Fix so C99 functions/macros are accessible when -std=c99 is used when compiling and not when using C89. 2007-07-06 Corinna Vinschen * libc/include/wchar.h: Declare wcstol, wcstoll, wcstoul, wcstoull, _wcstol_r, _wcstoll_r, _wcstoul_r and _wcstoull_r. * libc/stdlib/Makefile.am (GENERAL_SOURCES): Add wcstol.c and wcstoul.c. (EXTENDED_SOURCES): Add wcstoll.c, wcstoll_r.c, wcstoull.c and wcstoull_r.c. (CHEWOUT_FILES): Add .def files accordingly. * libc/stdlib/Makefile.in: Regenerate. * libc/stdlib/stdlib.tex: Add documentation links for above functions. * libc/stdlib/strtoll.c: Fix portability note. * libc/stdlib/strtoull.c: Ditto. * libc/stdlib/wcstol.c: New file. * libc/stdlib/wcstoll.c: New file. * libc/stdlib/wcstoll_r.c: New file. * libc/stdlib/wcstoul.c: New file. * libc/stdlib/wcstoull.c: New file. * libc/stdlib/wcstoull_r.c: New file. 2007-07-06 Jeff Johnston * libc/include/sys/time.h (gettimeofday): Change to proper prototype where second parameter is void *. * libc/reent/gettimeofdayr.c (_gettimeofday_r): Change prototype accordingly. * libc/include/reent.h: Fix prototype for _gettimeofday_r. * libc/sys/arm/syscalls.c: Fix gettimeofday function signature. * libc/sys/rdos/gettod.c: Ditto. * libc/sys/sh/syscalls.c: Ditto. * libc/time/time.c (time): Change call to _gettimeofday_r to pass NULL as 2nd argument. 2007-07-06 Jeff Johnston * libc/sys/linux/intl/dcigettext.c: Define HAVE_STPCPY. * libc/sys/linux/intl/l10nflist.c: Ditto. 2007-07-04 Corinna Vinschen * libc/include/wchar.h: Add prototype for wcsxfrm. * libc/string/Makefile.am (GENERAL_SOURCES): Add wcsxfrm.c. (CHEWOUT_FILES): Add wcsxfrm.def. * libc/string/Makefile.in: Regenerate. * libc/string/wcsxfrm.c: New file. * libc/string/wcstrings.tex: Add wcsxfrm. 2007-06-28 Corinna Vinschen * libc/include/string.h: Add prototypes for stpcpy and stpncpy. * libc/string/Makefile.am (ELIX_SOURCES): Add stpcpy.c and stpncpy.c. (CHEWOUT_FILES): Add stpcpy.def and stpncpy.def. * libc/string/Makefile.in: Regenerate. * libc/string/stpcpy.c: New file. * libc/string/stpncpy.c: New file. * libc/string/strings.tex: Add stpcpy and stpncpy. 2007-06-27 Eric Blake Support __func__ in assert, as required by C99. * libc/stdlib/assert.c (__assert_func): New function. (__assert): Use __assert_func. * libc/include/assert.h (assert) [!NDEBUG]: Use __assert_func when possible. 2007-06-20 Patrick Mansfield * libc/machine/spu/perror.c: Pass errno as the second argument to the assist call. 2007-06-20 Patrick Mansfield * libc/include/sys/unistd.h[__SPU__]: Add lockf prototype and related defines; expose ftruncate, truncate and sync prototypes. 2007-06-20 Patrick Mansfield * libc/include/sys/unistd.h[__SPU__]: Make fchdir prototype visible. * libc/include/sys/stat.h[__SPU__]: Make mknod and lstat prototypes visible. 2007-06-15 Patrick Mansfield * libc/machine/spu/Makefile.am: Remove mktemp.c, it was left in from a dropped patch. * libc/machine/spu/Makefile.in: Regenerate. 2007-06-13 Patrick Mansfield * libc/machine/spu/creat.c: New file copied from libc/posix/creat.c, it just calls open with appropriate arguments. * libc/machine/spu/Makefile.am: Add creat.c. * libc/machine/spu/Makefile.in: Regenerate. 2007-06-13 Jeff Johnston * libc/machine/spu/Makefile.am: Re-add back setjmp.S which I accidentally dropped. * libc/machine/spu/Makefile.in: Regenerated. 2007-06-13 Patrick Mansfield * libc/include/sys/features.h: Define _POSIX_TIMERS for spu. * libc/include/sys/unistd.h: Change usleep prototype to Posix form and move outside of OS flag checks. * libc/machine/spu/Makefile.am: Add sleep and usleep. * libc/machine/spu/Makefile.in: Regenerate. * libc/machine/spu/sleep.c: Copy libc/posix/sleep.c. * libc/machine/spu/usleep.c: Copy libc/posix/usleep.c. 2007-06-11 Corinna Vinschen * libc/include/sys/unistd.h: Declare confstr for Cygwin. Define confstr constants for Cygwin. Add comment. 2007-06-10 Hans-Peter Nilsson * libc/sys/mmixware/access.c (access): Do not try to use a magic file-handle and a direct syscall, just use _open. * libc/sys/mmixware/sys/syscall.h (TMPFNO): Remove this magic file-handle. * libc/sys/mmixware/_exit.c (_exit): Update comment about passing on the exit value. 2007-06-08 Jeff Johnston * libc/string/strcasestr.c: New file. * libc/include/string.h: Add strcasestr. * libc/string/strings.tex: Add strcasestr. * libc/string/Makefile.am: Ditto. * libc/string/Makefile.in: Regenerated. 2007-06-06 Christian Groessler * libc/stdlib/ldtoa (_ldcheck): Make sure the setting of rnd is done after the last local variable declaration. 2007-06-06 Jeff Johnston * libc/stdlib/mprec.h[Just_16]: Make sure that Pack_16 is defined. 2007-06-05 Christian Groessler * libc/argz/argz_insert.c (argz_insert): Move delta variable declaration to top of function in keeping with C89 standard. 2007-06-04 Eric Blake Implement funopen, fopencookie. * libc/include/sys/reent.h (struct __sFILE, struct __sFILE64): Switch to reentrant callbacks. * libc/include/stdio.h (funopen): Fix declaration. (fopencookie): Declare. * libc/stdio/local.h (__sread, __swrite, __sseek, __sclose) (__sseek64, __swrite64): Fix prototypes. [__SCLE]: Pull in setmode declaration. * libc/stdio/stdio.c (__sread, __swrite, __sseek, __sclose): Fix reentrancy. * libc/stdio64/stdio64.c (__sseek64_r, __swrite64_r): Delete. (__sseek64, __swrite64): Fix reentrancy. * libc/stdio/fseek.c (_fseek_r): Account for overflow, and fix reentrancy. * libc/stdio/ftell.c (_ftell_r): Likewise. * libc/stdio/flags.c (__sflags): Don't lose __SAPP on "a+". * libc/stdio/fclose.c (_fclose_r): Fix reentrancy. * libc/stdio/freopen.c (_freopen_r): Likewise. * libc/stdio/fvwrite.c (__sfvwrite_r): Likewise. * libc/stdio/refill.c (__srefill_r): Likewise. * libc/stdio/siscanf.c (eofread): Likewise. * libc/stdio/sscanf.c (eofread): Likewise. * libc/stdio/vsiscanf.c (eofread1): Likewise. * libc/stdio/vsscanf.c (eofread1): Likewise. * libc/stdio64/freopen64.c (_freopen64_r): Likewise. * libc/stdio64/fseeko64.c (_fseeko64_r): Likewise. * libc/stdio64/ftello64.c (_ftello64_r): Likewise. * libc/stdio/fflush.c (fflush): Improve reentrancy, although more could be fixed. * libc/stdio/fopencookie.c (_fopencookie_r, fopencookie): New file. * libc/stdio/funopen.c (_funopen_r, funopen): New file. * libc/stdio/Makefile.am (ELIX_4_SOURCES, CHEWOUT_FILES): Build new files. * libc/stdio/Makefile.in: Regenerate. 2007-05-29 Eric Blake Avoid more compiler warnings. * libc/stdlib/btowc.c: Add missing header. * libc/stdlib/getopt.c (getopt_internal): Initialize variable. * libc/stdlib/system.c (do_system) [__CYGWIN__]: Add declaration. * libc/stdlib/wctob.c: Add missing header. * libc/string/strcpy.c (strcpy): Avoid warnings. * libc/string/strrchr.c (strrchr): Likewise. 2007-05-29 Corinna Vinschen * libc/argz/argz_add_sep.c (argz_add_sep): Handle empty string argument. * libc/argz/argz_append.c (argz_append): Handle empty buf argument. * libc/argz/argz_create_sep.c (argz_create_sep): Return (NULL, 0) on empty input strings. * libc/argz/argz_extract.c (argz_extract): Check argz_len before looping through argz. * libc/argz/argz_stringify.c (argz_stringify): Ditto. 2007-05-27 Brian Dessent * libc/stdio/vfprintf.c (_VFPRINTF_R): Populate 'ox' when handling %p. 2007-05-25 Eric Blake * libc/stdio/rewind.c (rewind): Fix regression of 2003-08-22. 2007-05-24 Steve Ellcey Charles Wilson * libtool.m4: removed * configure.in: invoke _LD_DECL_SED before conditionally initializing libtool. Move AC_PROG_AWK outside conditional. * libc/sys/linux/configure.in: Ditto. * libc/sys/linux/linuxthreads/configure.in: Ditto. * libc/sys/linux/linuxthreads/machine/i386/configure.in: Ditto. * libc/sys/linux/machine/i386/configure.in: Ditto. * iconvdata/configure.in: invoke _LD_DECL_SED before conditionally initializing libtool. * libc/configure.in: Ditto. * libc/machine/configure.in: Ditto. * libc/machine/i386/configure.in: Ditto. * libc/sys/configure.in: Ditto. * libc/sys/linux/linuxthreads/machine/configure.in: Ditto. * libc/sys/linux/machine/configure.in: Ditto. * libm/configure.in: Ditto. * libm/machine/configure.in: Ditto. * Makefile.am: Ensure toplevel is included in ACLOCAL_AMFLAGS. * doc/Makefile.am: Ditto. * iconvdata/Makefile.am: Ditto. * libc/Makefile.am: Ditto. * libc/machine/Makefile.am: Ditto. * libc/machine/a29k/Makefile.am: Ditto. * libc/machine/arm/Makefile.am: Ditto. * libc/machine/bfin/Makefile.am: Ditto. * libc/machine/cris/Makefile.am: Ditto. * libc/machine/crx/Makefile.am: Ditto. * libc/machine/d10v/Makefile.am: Ditto. * libc/machine/d30v/Makefile.am: Ditto. * libc/machine/fr30/Makefile.am: Ditto. * libc/machine/frv/Makefile.am: Ditto. * libc/machine/h8300/Makefile.am: Ditto. * libc/machine/h8500/Makefile.am: Ditto. * libc/machine/hppa/Makefile.am: Ditto. * libc/machine/i386/Makefile.am: Ditto. * libc/machine/i960/Makefile.am: Ditto. * libc/machine/iq2000/Makefile.am: Ditto. * libc/machine/m32c/Makefile.am: Ditto. * libc/machine/m32r/Makefile.am: Ditto. * libc/machine/m68hc11/Makefile.am: Ditto. * libc/machine/m68k/Makefile.am: Ditto. * libc/machine/m88k/Makefile.am: Ditto. * libc/machine/mips/Makefile.am: Ditto. * libc/machine/mn10200/Makefile.am: Ditto. * libc/machine/mn10300/Makefile.am: Ditto. * libc/machine/mt/Makefile.am: Ditto. * libc/machine/necv70/Makefile.am: Ditto. * libc/machine/powerpc/Makefile.am: Ditto. * libc/machine/sh/Makefile.am: Ditto. * libc/machine/sparc/Makefile.am: Ditto. * libc/machine/spu/Makefile.am: Ditto. * libc/machine/tic4x/Makefile.am: Ditto. * libc/machine/tic80/Makefile.am: Ditto. * libc/machine/v850/Makefile.am: Ditto. * libc/machine/w65/Makefile.am: Ditto. * libc/machine/xscale/Makefile.am: Ditto. * libc/machine/xstormy16/Makefile.am: Ditto. * libc/machine/z8k/Makefile.am: Ditto. * libc/sys/Makefile.am: Ditto. * libc/sys/a29khif/Makefile.am: Ditto. * libc/sys/arc/Makefile.am: Ditto. * libc/sys/arm/Makefile.am: Ditto. * libc/sys/d10v/Makefile.am: Ditto. * libc/sys/decstation/Makefile.am: Ditto. * libc/sys/h8300hms/Makefile.am: Ditto. * libc/sys/h8500hms/Makefile.am: Ditto. * libc/sys/linux/Makefile.am: Ditto. * libc/sys/linux/linuxthreads/Makefile.am: Ditto. * libc/sys/linux/linuxthreads/machine/Makefile.am: Ditto. * libc/sys/linux/linuxthreads/machine/i386/Makefile.am: Ditto. * libc/sys/linux/machine/Makefile.am: Ditto. * libc/sys/linux/machine/i386/Makefile.am: Ditto. * libc/sys/m88kbug/Makefile.am: Ditto. * libc/sys/mmixware/Makefile.am: Ditto. * libc/sys/netware/Makefile.am: Ditto. * libc/sys/rdos/Makefile.am: Ditto. * libc/sys/rtems/Makefile.am: Ditto. * libc/sys/sh/Makefile.am: Ditto. * libc/sys/sparc64/Makefile.am: Ditto. * libc/sys/sun4/Makefile.am: Ditto. * libc/sys/sysmec/Makefile.am: Ditto. * libc/sys/sysnec810/Makefile.am: Ditto. * libc/sys/sysnecv850/Makefile.am: Ditto. * libc/sys/sysvi386/Makefile.am: Ditto. * libc/sys/sysvnecv70/Makefile.am: Ditto. * libc/sys/tic80/Makefile.am: Ditto. * libc/sys/w65/Makefile.am: Ditto. * libc/sys/z8ksim/Makefile.am: Ditto. * libm/Makefile.am: Ditto. * libm/machine/Makefile.am: Ditto. * libm/machine/i386/Makefile.am: Ditto. * libm/machine/spu/Makefile.am: Ditto. * aclocal.m4: Regenerate. * iconvdata/aclocal.m4: Regenerate. * libc/aclocal.m4: Regenerate. * libc/machine/aclocal.m4: Regenerate. * libc/machine/i386/aclocal.m4: Regenerate. * libc/sys/aclocal.m4: Regenerate. * libc/sys/linux/aclocal.m4: Regenerate. * libc/sys/linux/linuxthreads/aclocal.m4: Regenerate. * libc/sys/linux/linuxthreads/machine/aclocal.m4: Regenerate. * libc/sys/linux/linuxthreads/machine/i386/aclocal.m4: Regenerate. * libc/sys/linux/machine/aclocal.m4: Regenerate. * libc/sys/linux/machine/i386/aclocal.m4: Regenerate. * libm/aclocal.m4: Regenerate. * libm/machine/aclocal.m4: Regenerate. * libm/machine/i386/aclocal.m4: Regenerate. * Makefile.in: Regenerate. * doc/Makefile.in: Regenerate. * iconvdata/Makefile.in: Regenerate. * libc/Makefile.in: Regenerate. * libc/argz/Makefile.in: Regenerate. * libc/ctype/Makefile.in: Regenerate. * libc/errno/Makefile.in: Regenerate. * libc/iconv/Makefile.in: Regenerate. * libc/iconv/ccs/Makefile.in: Regenerate. * libc/iconv/ccs/binary/Makefile.in: Regenerate. * libc/iconv/ces/Makefile.in: Regenerate. * libc/iconv/lib/Makefile.in: Regenerate. * libc/locale/Makefile.in: Regenerate. * libc/machine/Makefile.in: Regenerate. * libc/machine/a29k/Makefile.in: Regenerate. * libc/machine/arm/Makefile.in: Regenerate. * libc/machine/bfin/Makefile.in: Regenerate. * libc/machine/cris/Makefile.in: Regenerate. * libc/machine/crx/Makefile.in: Regenerate. * libc/machine/d10v/Makefile.in: Regenerate. * libc/machine/d30v/Makefile.in: Regenerate. * libc/machine/fr30/Makefile.in: Regenerate. * libc/machine/frv/Makefile.in: Regenerate. * libc/machine/h8300/Makefile.in: Regenerate. * libc/machine/h8500/Makefile.in: Regenerate. * libc/machine/hppa/Makefile.in: Regenerate. * libc/machine/i386/Makefile.in: Regenerate. * libc/machine/i960/Makefile.in: Regenerate. * libc/machine/iq2000/Makefile.in: Regenerate. * libc/machine/m32c/Makefile.in: Regenerate. * libc/machine/m32r/Makefile.in: Regenerate. * libc/machine/m68hc11/Makefile.in: Regenerate. * libc/machine/m68k/Makefile.in: Regenerate. * libc/machine/m88k/Makefile.in: Regenerate. * libc/machine/mips/Makefile.in: Regenerate. * libc/machine/mn10200/Makefile.in: Regenerate. * libc/machine/mn10300/Makefile.in: Regenerate. * libc/machine/mt/Makefile.in: Regenerate. * libc/machine/necv70/Makefile.in: Regenerate. * libc/machine/powerpc/Makefile.in: Regenerate. * libc/machine/sh/Makefile.in: Regenerate. * libc/machine/sparc/Makefile.in: Regenerate. * libc/machine/spu/Makefile.in: Regenerate. * libc/machine/tic4x/Makefile.in: Regenerate. * libc/machine/tic80/Makefile.in: Regenerate. * libc/machine/v850/Makefile.in: Regenerate. * libc/machine/w65/Makefile.in: Regenerate. * libc/machine/xscale/Makefile.in: Regenerate. * libc/machine/xstormy16/Makefile.in: Regenerate. * libc/machine/z8k/Makefile.in: Regenerate. * libc/misc/Makefile.in: Regenerate. * libc/posix/Makefile.in: Regenerate. * libc/reent/Makefile.in: Regenerate. * libc/search/Makefile.in: Regenerate. * libc/signal/Makefile.in: Regenerate. * libc/stdio/Makefile.in: Regenerate. * libc/stdio64/Makefile.in: Regenerate. * libc/stdlib/Makefile.in: Regenerate. * libc/string/Makefile.in: Regenerate. * libc/sys/Makefile.in: Regenerate. * libc/sys/a29khif/Makefile.in: Regenerate. * libc/sys/arc/Makefile.in: Regenerate. * libc/sys/arm/Makefile.in: Regenerate. * libc/sys/d10v/Makefile.in: Regenerate. * libc/sys/decstation/Makefile.in: Regenerate. * libc/sys/h8300hms/Makefile.in: Regenerate. * libc/sys/h8500hms/Makefile.in: Regenerate. * libc/sys/linux/Makefile.in: Regenerate. * libc/sys/linux/argp/Makefile.in: Regenerate. * libc/sys/linux/cmath/Makefile.in: Regenerate. * libc/sys/linux/dl/Makefile.in: Regenerate. * libc/sys/linux/iconv/Makefile.in: Regenerate. * libc/sys/linux/intl/Makefile.in: Regenerate. * libc/sys/linux/linuxthreads/Makefile.in: Regenerate. * libc/sys/linux/linuxthreads/machine/Makefile.in: Regenerate. * libc/sys/linux/linuxthreads/machine/i386/Makefile.in: Regenerate. * libc/sys/linux/machine/Makefile.in: Regenerate. * libc/sys/linux/machine/i386/Makefile.in: Regenerate. * libc/sys/linux/net/Makefile.in: Regenerate. * libc/sys/linux/stdlib/Makefile.in: Regenerate. * libc/sys/m88kbug/Makefile.in: Regenerate. * libc/sys/mmixware/Makefile.in: Regenerate. * libc/sys/netware/Makefile.in: Regenerate. * libc/sys/rdos/Makefile.in: Regenerate. * libc/sys/rtems/Makefile.in: Regenerate. * libc/sys/sh/Makefile.in: Regenerate. * libc/sys/sparc64/Makefile.in: Regenerate. * libc/sys/sun4/Makefile.in: Regenerate. * libc/sys/sysmec/Makefile.in: Regenerate. * libc/sys/sysnec810/Makefile.in: Regenerate. * libc/sys/sysnecv850/Makefile.in: Regenerate. * libc/sys/sysvi386/Makefile.in: Regenerate. * libc/sys/sysvnecv70/Makefile.in: Regenerate. * libc/sys/tic80/Makefile.in: Regenerate. * libc/sys/w65/Makefile.in: Regenerate. * libc/sys/z8ksim/Makefile.in: Regenerate. * libc/syscalls/Makefile.in: Regenerate. * libc/time/Makefile.in: Regenerate. * libc/unix/Makefile.in: Regenerate. * libm/Makefile.in: Regenerate. * libm/common/Makefile.in: Regenerate. * libm/machine/Makefile.in: Regenerate. * libm/machine/i386/Makefile.in: Regenerate. * libm/machine/spu/Makefile.in: Regenerate. * libm/math/Makefile.in: Regenerate. * libm/mathfp/Makefile.in: Regenerate. * configure: Regenerate. * iconvdata/configure: Regenerate. * libc/configure: Regenerate. * libc/machine/configure: Regenerate. * libc/machine/i386/configure: Regenerate. * libc/sys/configure: Regenerate. * libc/sys/linux/configure: Regenerate. * libc/sys/linux/linuxthreads/configure: Regenerate. * libc/sys/linux/linuxthreads/machine/configure: Regenerate. * libc/sys/linux/linuxthreads/machine/i386/configure: Regenerate. * libc/sys/linux/machine/configure: Regenerate. * libc/sys/linux/machine/i386/configure: Regenerate. * libm/configure: Regenerate. * libm/machine/configure: Regenerate. * libm/machine/i386/configure: Regenerate. 2007-05-23 Eric Blake * libc/stdio/vfprintf.c (_VFPRINTF_R): Don't truncate %p when sizeof(void*) is 8 but sizeof(long) is 4. * libc/stdio/vfscanf.c (__SVFSCANF_R): Likewise. Fix %i scanning of "-0x". Support "-nan" and "inf" for %e. Audit usage of ungetc to fix reentrancy and bug on encoding error in multibyte locales. Always return EOF on read error. 2007-05-23 Patrick Mansfield * libc/machine/spu/sys/syscall.h: Update the __send_to_ppe prototype. * libc/machine/spu/fclose.c: Use the __send_to_ppe return value instead of the slot 0 value, remove any now unused variables, and for some cases, now store the result in an int vs int*. * libc/machine/spu/feof.c: Ditto. * libc/machine/spu/ferror.c: Ditto. * libc/machine/spu/fflush.c: Ditto. * libc/machine/spu/fgetc.c: Ditto. * libc/machine/spu/fgetpos.c: Ditto. * libc/machine/spu/fgets.c: Ditto. * libc/machine/spu/fileno.c: Ditto. * libc/machine/spu/fopen.c: Ditto. * libc/machine/spu/fprintf.c: Ditto. * libc/machine/spu/fputc.c: Ditto. * libc/machine/spu/fputs.c: Ditto. * libc/machine/spu/fread.c: Ditto. * libc/machine/spu/freopen.c: Ditto. * libc/machine/spu/fscanf.c: Ditto. * libc/machine/spu/fseek.c: Ditto. * libc/machine/spu/fsetpos.c: Ditto. * libc/machine/spu/ftell.c: Ditto. * libc/machine/spu/fwrite.c: Ditto. * libc/machine/spu/getc.c: Ditto. * libc/machine/spu/getchar.c: Ditto. * libc/machine/spu/gets.c: Ditto. * libc/machine/spu/printf.c: Ditto. * libc/machine/spu/putc.c: Ditto. * libc/machine/spu/putchar.c: Ditto. * libc/machine/spu/puts.c: Ditto. * libc/machine/spu/remove.c: Ditto. * libc/machine/spu/rename.c: Ditto. * libc/machine/spu/scanf.c: Ditto. * libc/machine/spu/setvbuf.c: Ditto. * libc/machine/spu/snprintf.c: Ditto. * libc/machine/spu/sprintf.c: Ditto. * libc/machine/spu/sscanf.c: Ditto. * libc/machine/spu/tmpfile.c: Ditto. * libc/machine/spu/tmpnam.c: Ditto. * libc/machine/spu/ungetc.c: Ditto. * libc/machine/spu/vfprintf.c: Ditto. * libc/machine/spu/vfscanf.c: Ditto. * libc/machine/spu/vprintf.c: Ditto. * libc/machine/spu/vscanf.c: Ditto. * libc/machine/spu/vsnprintf.c: Ditto. * libc/machine/spu/vsprintf.c: Ditto. * libc/machine/spu/vsscanf.c: Ditto. 2007-05-23 Eric Blake * libc/stdio/vfscanf.c (__SVFSCANF_R): Support scanf(%1$s). Avoid warning when !FLOATING_POINT. * libc/stdio/vfprintf.c (_VFPRINTF_R): Simplify _NO_POS_ARGS slightly. 2007-05-23 Corinna Vinschen * libc/argz/argz_create_sep.c (argz_create_sep): Initialize *argz_len to zero. * libc/include/argz.h: Guard against multiple inclusion. Guard for use with C++. 2007-05-18 Eric Blake * libc/stdio/vfprintf.c [_WANT_IO_LONG_LONG]: Allow non-gcc compilers. * libc/stdio/vfscanf.c: Likewise. 2007-05-17 Cary R. yahoo.com> * libm/math/w_atan2.c: Fix atan2 to be consistent with glibc (atan2(+0,-0), atan2(-0,-0) and atan(-0,+0)) * libm/math/wf_atan2.c: Ditto. 2007-05-17 Yaakov Selkowitz users.sourceforge.net> * libm/common/Makefile.am: Add support for exp10, exp10f, pow10, and pow10f functions. * libm/common/Makefile.in: Regenerated. * libm/common/s_pow10.c: New file. * libm/common/sf_pow10.c: Ditto. * libm/common/s_exp10.c: Ditto. * libm/common/sf_exp10.c: Ditto. * libc/include/math.h [!pow10]: New pow10 prototype. [!pow10f]: New pow10f prototype. [!exp10]: New exp10 prototype. [!exp10f]: New exp10f prototype. 2007-05-17 Charles Wilson * stdio/tmpfile.c: Include . * stdio64/tmpfile64.c: Ditto. 2007-05-16 Eric Blake Close security hole in tmpfile. * libc/stdio/tmpfile.c (_tmpfile_r): Avoid window between filename generation and opening the fd. * libc/stdio64/tmpfile64.c (_tmpfile64_r): Likewise. * libc/include/math.h (INFINITY, NAN, FP_ILOGB0, FP_ILOGBNAN) (MATH_ERRNO, MATH_ERREXCEPT, math_errhandling): Add macros required by POSIX. * libc/stdlib/ldtoa.c (USE_INFINITY): Rename from INFINITY, to avoid clash with . * libc/stdlib/wctomb_r.c (_wctomb_r): Avoid gcc warnings on cygwin. * libc/search/hash.c (__hash_open): Likewise. 2007-05-14 Eric Blake Reduce stack size of *printf. * libc/stdio/vfprintf.c (_VFPRINTF_R): Fix use of decimal point in %f. Avoid malloc when possible for %S. (BUF): Improve stack locality by using smaller size. (MAXEXPLEN, _PRINTF_FLOAT_TYPE): Define. (exponent): Use smaller stack size. 2007-05-11 Eric Blake Minimize printf/scanf size on platforms that don't need C99. * acconfig.h (_WANT_IO_C99_FORMATS): New macro. * newlib.hin (_WANT_IO_C99_FORMATS): Likewise. * configure.in (newlib-io-c99-formats): New configure option. (_WANT_IO_C99_FORMATS): Define appropriately. * configure.host (*-linux*, cygwin): Default c99-formats to yes. * libc/stdio/vfprintf.c (_VFPRINTF_R) [!_WANT_IO_C99_FORMATS]: Cripple ' flag; hh, z, j, t sizes; a, A, F, C, S specifiers. * libc/stdio/vfscanf.c (_VFSCANF_R) [!_WANT_IO_C99_FORMATS]: Likewise. * configure: Regenerate. * libc/stdio/vfprintf.c (_VFPRINTF_R, cvt, exponent, chclass) (get_arg): Support '%a' and '%A'. 2007-05-09 Eric Blake Allow zero size with non-null buf in *asnprintf. * libc/stdio/asnprintf.c (_asnprintf_r, asnprintf): Avoid free'ing user's buf. * libc/stdio/asniprintf.c (_asniprintf_r, asniprintf): Likewise. * libc/stdio/vasniprintf.c (_vasniprintf_r): Likewise. * libc/stdio/vasnprintf.c (_vasnprintf_r): Likewise. 2007-05-07 Charles Wilson * libc/stdio/vfprintf.c: Fix typo in comments that breaks docs. 2007-05-03 Eric Blake Add support for asnprintf, and improve *printf documentation. * libc/stdio/Makefile.am (ELIX_SOURCES): Rename... (ELIX_2_SOURCES): ...to this. (ELIX_4_SOURCES): Add new variable. Build asnprintf. (GENERAL_SOURCES): Move dprintf to ELIX_4_SOURCES. (CHEWOUT_FILES): Include diprintf in documentation. * libc/stdio/Makefile.in: Regenerate. * libc/stdio/diprintf.c: Improve documentation. * libc/stdio/dprintf.c: Likewise. * libc/stdio/siprintf.c: Likewise. * libc/stdio/sprintf.c: Likewise. * libc/stdio/vfprintf.c: Likewise. * libc/stdio/viprintf.c: Likewise. * libc/stdio/vsniprintf.c: Consolidate documentation. * libc/stdio/asiprintf.c: Refer to documentation. * libc/stdio/asprintf.c: Likewise. * libc/stdio/fiprintf.c: Likewise. * libc/stdio/fprintf.c: Likewise. * libc/stdio/iprintf.c: Likewise. * libc/stdio/printf.c: Likewise. * libc/stdio/sniprintf.c: Likewise. * libc/stdio/vdiprintf.c: Likewise. * libc/stdio/vdprintf.c: Likewise. * libc/stdio/vsiprintf.c: Likewise. * libc/stdio/fvwrite.c (__sfvwrite_r): Handle asnprintf. * libc/stdio/asniprintf.c (asniprintf, _asniprintf_r): New file. * libc/stdio/asnprintf.c (asnprintf, _asnprintf_r): New file. * libc/stdio/vasniprintf.c (vasniprintf, _vasniprintf_r): New file. * libc/stdio/vasnprintf.c (vasnprintf, _vasnprintf_r): New file. * libc/stdio/vdprintf.c (_vdprintf_r): Rewrite to avoid malloc in typical case. * libc/stdio/vdiprintf.c (_vdiprintf_r): Likewise. * libc/include/stdio.h: Add prototypes for new functions; sort existing functions. 2007-05-03 Kazu Hirata * libc/machine/m68k/Makefile.am (lib_a_SOURCES): Add memcpy.S and memset.S. * libc/machine/m68k/Makefile.in: Regenerate. * libc/machine/m68k/memcpy.S: Use sub.l followed by dbra. * libc/machine/m68k/memset.S: Likewise. 2007-05-01 Eric Blake * libc/stdio64/local64.h: Delete, move contents to... * libc/stdio/local.h: ...here. * libc/stdio64/fdopen64.c: Update includes. * libc/stdio64/fopen64.c: Likewise. * libc/stdio64/freopen64.c: Likewise. * libc/stdio64/fseeko64.c: Likewise. * libc/stdio64/ftello64.c: Likewise. * libc/stdio/findfp.c (std) [__LARGE64_FILES]: Open stdin, stdout, and stderr with 64-bit offset. * libc/stdio/fseek.c (_fseek_r): Avoid compile warning. * libc/stdio/makebuf.c (__smakebuf_r): Likewise. * libc/stdio/mktemp.c (_gettemp): Likewise. 2007-05-01 Cary R. yahoo.com> * libm/math/e_pow.c: Fix to be consistent with glibc with regards to treatment of NaN and +-inf arguments. * libm/math/ef_pow.c: Ditto. * libm/math/w_pow.c: Ditto. * libm/math/wf_pow.c: Ditto. * libm/math/w_acos.c: Fix domain errors to return NaN. * libm/math/w_asin.c: Ditto. * libm/math/wf_acos.c: Ditto. * libm/math/wf_asin.c: Ditto. * libm/math/w_log.c: Fix to return NaN for negative number inputs. * libm/math/wf_log.c: Ditto. * libm/math/wf_log10.c: Ditto. * libm/math/w_log10.c: Ditto. 2007-04-27 Jeff Johnston * libc/machine/m68k/Makefile.am: Temporarily remove memcpy.S and memset.S until logic can be confirmed for !(__mcoldfile__) case. * libc/machine/m68k/Makefile.in: Regenerated. 2007-04-27 Kazu Hirata * libc/machine/m68k/Makefile.am (lib_a_SOURCES): Add memcpy.S and memset.S. * libc/machine/m68k/Makefile.in: Regenerate. * libc/machine/m68k/memcpy.S, libc/machine/m68k/memset.S: New. 2007-04-26 Patrick Mansfield * libc/include/ieeefp.h: use prefixed __ieeefp_ macros that can be overridden via machine/ieeefp.h. * libc/include/machine/ieeefp.h: Add SPU specific C99 and ieeefp macros for isnan and related macros. * libc/include/math.h: Allow C99 isfinite, isinf, and isnan to be overridden via machine/ieeefp.h. * libm/machine/spu/Makefile.am: Add new files. * libm/machine/spu/Makefile.in: Autogenerate with new files. * libm/machine/spu/sf_fpclassify.c: Add SPU specific __fpclassifyf. * libm/machine/spu/sf_finite.c: Add SPU specific finitef. * libm/machine/spu/sf_isinf.c: Add SPU specific isinff. * libm/machine/spu/sf_isinff.c: Add SPU specific __isinff. * libm/machine/spu/sf_isnan.c: Add SPU specific isnanf. * libm/machine/spu/sf_isnanf.c: Add SPU specific __isnanf. * libm/machine/spu/sf_nan.c: Add SPU specific nanf. 2007-04-25 Jeff Johnston * libm/common/s_fpclassify.c (__fpclassifyf): Move this to... * libm/common/sf_fpclassify.c: ...here. New file. * libm/common/Makefile.am: Add sf_fpclassify.c. * libm/common/Makefile.in: Regenerated. 2007-04-25 Patrick Mansfield * libc/machine/spu/sys/errno.h: New file, so spu errno values match ppu linux values. This file is a copy of the cris/sys/errno.h plus a few changes (see spu errno.h comments). 2007-04-25 Eric Blake * libc/stdio/vfprintf.c (get_arg): Support %1$lc. Simplify types that promote to int. 2007-04-25 Patrick Mansfield * libm/machine/spu/headers/feholdexcept.h: Use *envp not env so we clear the proper bits in the fpscr, and don't set some random ones. 2007-04-24 Eric Blake * libc/stdio/vfprintf.c (_VFPRINTF_R): Don't zero pad on infinity or NaN with %05f. * libc/stdio/vfprintf.c (_VFPRINTF_R): Avoid multibyte when not _MB_CAPABLE. * libc/include/limits.h (NL_ARGMAX): Define a default value. * libc/stdio/vfprintf.c (MAX_POS_ARGS): Define in terms of NL_ARGMAX, if present. 2007-04-23 Brian Dessent * libc/stdio/vfprintf.c (_vfprintf_r): When the alternate-form flag has been specified with types 'f', 'F', 'g', or 'G', ensure the trailing decimal is printed. 2007-04-23 Ralf Wildenhues gmx.de> * confsubdir.m4 (AC_CONFIG_SUBDIRS, _AC_OUTPUT_SUBDIRS): New file. Override Autoconf-2.59's version of these macros with fixed handling of multiple adjacent whitespace in arguments. * aclocal.m4: Regenerated forcefully. * configure: Ditto. * Makefile.in: Ditto. * libc/*Makefile.in: Ditto. * libc/*aclocal.m4: Ditto. * libc/*configure: Ditto. * libm/*Makefile.in: Ditto. * libm/*aclocal.m4: Ditto. * libm/*configure: Ditto. 2007-04-23 Jeff Johnston * libc/sys/arc/dummy.S: Dummy file to force .S.o suffix rule. * libc/sys/arc/Makefile.am: Add dummy.S to EXTRA_lib_a_SOURCES and set lib_a_CCASFLAGS so crto.o will use .S.o default suffix rule. * libc/sys/arc/Makefile.in: Regenerated. 2007-04-17 Brian Dessent * libc/stdio/sscanf.c: Update documentation comments. * libc/stdio/vfscanf.c (__SVFSCANF_R): Handle j, t, and z modifiers. 2007-04-12 Eric Blake * libc/stdio/vfprintf.c (_VFPRINTF_F, cvt): Don't confuse %F with %e. (chclass): Recognize 'F', 'X', 'n', and not 'W'. (get_arg): Handle %1$F, %1$n. 2007-04-10 Eric Blake * libc/include/stdio.h (_ELIDABLE_INLINE): Work even when using CFLAGS=-O0. 2007-04-09 Eric Blake * libc/include/stdio.h: Add gcc format attributes to printf and scanf families. 2007-04-09 Joel Schopp * libc/machine/spu/strxfrm.c: Fix strxfrm so we still copy data even if the passed in length n is shorter than the source string. This matches both the non-spu specific and the glibc strxfrm behaviour. 2007-04-04 Mark Mitchell * libc/stdlib/__call_atexit.c (__call_exitprocs): Handle atexit functions registering additional atexit functions. * testsuite/lib/flags.exp (newlib_include_flags): Drop -I${newlib_dir}. 2007-04-04 Patrick Mansfield * libc/machine/spu/sys/syscall.h: New file for __send_to_ppe prototype. * libc/machine/spu/c99ppe.h: Remove static version of send_to_ppe. * libc/machine/spu/clearerr.c: Call __send_to_ppe vs send_to_ppe. * libc/machine/spu/fclose.c: Ditto. * libc/machine/spu/feof.c: Ditto. * libc/machine/spu/ferror.c: Ditto. * libc/machine/spu/fflush.c: Ditto. * libc/machine/spu/fgetc.c: Ditto. * libc/machine/spu/fgetpos.c: Ditto. * libc/machine/spu/fgets.c: Ditto. * libc/machine/spu/fileno.c: Ditto. * libc/machine/spu/fopen.c: Ditto. * libc/machine/spu/fprintf.c: Ditto. * libc/machine/spu/fputc.c: Ditto. * libc/machine/spu/fputs.c: Ditto. * libc/machine/spu/fread.c: Ditto. * libc/machine/spu/freopen.c: Ditto. * libc/machine/spu/fscanf.c: Ditto. * libc/machine/spu/fseek.c: Ditto. * libc/machine/spu/fsetpos.c: Ditto. * libc/machine/spu/ftell.c: Ditto. * libc/machine/spu/fwrite.c: Ditto. * libc/machine/spu/getc.c: Ditto. * libc/machine/spu/getchar.c: Ditto. * libc/machine/spu/gets.c: Ditto. * libc/machine/spu/perror.c: Ditto. * libc/machine/spu/printf.c: Ditto. * libc/machine/spu/putc.c: Ditto. * libc/machine/spu/putchar.c: Ditto. * libc/machine/spu/puts.c: Ditto. * libc/machine/spu/remove.c: Ditto. * libc/machine/spu/rename.c: Ditto. * libc/machine/spu/rewind.c: Ditto. * libc/machine/spu/scanf.c: Ditto. * libc/machine/spu/setbuf.c: Ditto. * libc/machine/spu/setvbuf.c: Ditto. * libc/machine/spu/snprintf.c: Ditto. * libc/machine/spu/sprintf.c: Ditto. * libc/machine/spu/sscanf.c: Ditto. * libc/machine/spu/tmpfile.c: Ditto. * libc/machine/spu/tmpnam.c: Ditto. * libc/machine/spu/ungetc.c: Ditto. * libc/machine/spu/vfprintf.c: Ditto. * libc/machine/spu/vfscanf.c: Ditto. * libc/machine/spu/vprintf.c: Ditto. * libc/machine/spu/vscanf.c: Ditto. * libc/machine/spu/vsnprintf.c: Ditto. * libc/machine/spu/vsprintf.c: Ditto. * libc/machine/spu/vsscanf.c: Ditto. 2007-04-04 Jeff Johnston * libc/argz/argz_insert.c: Add stddef.h to get ptrdiff_t type. 2007-04-04 Eric Blake * libc/stdio/asiprintf.c (_asiprintf_r): Fix reentrancy. (asiprintf): Avoid overhead. * libc/stdio/asprintf.c (_asprintf_r): Fix reentrancy. (asprintf): Avoid overhead. * libc/stdio/diprintf.c (_diprintf_r, diprintf): New file. * libc/stdio/dprintf.c (_dprintf_r, dprintf): Use _DEFUN. * libc/stdio/fiprintf.c (_fiprintf_r): Add reentrant version. (fiprintf): Avoid overhead. * libc/stdio/fprintf.c (_fprintf_r): Add reentrant version. (fprintf): Avoid overhead. * libc/stdio/iprintf.c (_iprintf_r): Use _DEFUN. (iprintf): Avoid overhead. * libc/stdio/printf.c (_printf_r): Use _DEFUN. (printf): Avoid overhead. * libc/stdio/vasiprintf.c (vasiprintf): Reduce binary size. * libc/stdio/vasprintf.c (vasprintf): Reduce binary size. * libc/stdio/vdiprintf.c (_vdiprintf_r, vdiprintf): New file. * libc/stdio/vdprintf.c (vdprintf): Avoid overhead. * libc/stdio/vsiprintf.c (vsiprintf): Reduce binary size. * libc/stdio/vsniprintf.c (vsniprintf): Reduce binary size. * libc/stdio/vsnprintf.c (vsnprintf): Reduce binary size. * libc/stdio/vsprintf.c (vsprintf): Reduce binary size. * libc/stdio/Makefile.am (GENERAL_SOURCES): Add diprintf.c, vdiprintf.c. * libc/include/stdio.h (diprintf, _diprintf_r, vdiprintf) (_vdiprintf_r, _fiprintf_r, _vfiprintf_r): Add prototypes. 2007-03-30 Dave Korn * libc/include/stdio.h (_ELIDABLE_INLINE): New macro to conceal conflicting inline semantics between C99 and GNU89. (__sgetc_r): Replace static inline with _ELIDABLE_INLINE to be compatible with -fkeep-inline-functions usage. (__sputc_r): Likewise for consistency even though disabled. 2007-03-29 Nick Clifton Reflect changes made to generic vfprintf.c: * libc/machine/powerpc/vfprintf.c (__sprint): Rename to __sprint_r and add a "struct reent *" argument. (__sbprintf): Rename to __sbprintf_r, add a "struct reent *" argument and call _VFPRINTF_R instead of VFPRINTF. (_VFPRINTF_R): Add data pointer to call to cantwrite(). Fix uses of __sprint() and __sbprintf. 2007-03-20 Nick Clifton Reflect changes made to generic vfprintf.c: * libc/machine/powerpc/vfprintf.c (__sprint): Rename to __sprint_r and add a "struct reent *" argument. (__sbprintf): Rename to __sbprintf_r, add a "struct reent *" argument and call _VFPRINTF_R instead of VFPRINTF. (_VFPRINTF_R): Add data pointer to call to cantwrite(). Fix uses of __sprint() and __sbprintf. 2007-03-16 Charles Wilson * libc/argz/argz_insert.c: "before" pointer is invalid after *argz realloc. Compute offset between "before" and *argz, and use it after reallocation instead. 2007-03-16 Eric Blake * libc/stdio64/fseek064.c (_fseeko64_r): Fix reentrancy. * libc/stdio64/freopen64.c (_freopen64_r): Ditto. 2007-03-15 Jeff Johnston * configure.in: Add new --enable-newlib-reent-small option. * configure: Regenerated. * acconfig.h: Add _WANT_REENT_SMALL. * newlib.hin: Regenerated minus PACKAGE macros to add _WANT_REENT_SMALL macro. * libc/include/sys/config.h[_WANT_REENT_SMALL]: Set _REENT_SMALL if not already set. * libc/stdio/fflush.c[_REENT_SMALL]: Return immediately if there is no buffer. * libc/stdio/local.h[_REENT_SMALL]: Fix CHECK_INIT macro to use reentrant pointer passed in when resetting the file pointer to one of the std streams. 2007-03-15 Eric Blake * libc/stdio/local.h (cantwrite, FREEUB, FREELB): Make reentrant. (__smakebuf): Rename... (__smakebuf_r): to this. * libc/stdio/fvwrite.h (__swsetup_r): Rename, from __swsetup. * libc/stdio/makebuf.c (__smakebuf): Detect failed asprint allocation, then rename... (__smakebuf_r): ...to this and fix reentrancy. * libc/stdio/wsetup.c (__swsetup): Detect failed asprintf allocation, then rename... (__swsetup_r): ...to this and fix reentrancy. * libc/stdio/fseek.c (_fseek_r): Fix reentrancy. * libc/stdio/refill.c (__srefill_r): Likewise. * libc/stdio/fclose.c (_fclose_r): Likewise. * libc/stdio/fread.c (_fread_r): Likewise. * libc/stdio/freopen.c (_freopen_r): Likewise. * libc/stdio/wbuf.c (__swbuf_r): Likewise. * libc/stdio64/fseeko64.c (_fseeko64_r): Likewise. * libc/stdio/fvwrite.c (__sfvwrite_r): Set errno properly on failed asprintf allocation, and fix reentrancy. * libc/stdio/snprintf.c (snprintf, _snprintf_r): Report overflow, as required by POSIX. * libc/stdio/sniprintf.c (sniprintf, _sniprintf_r): Likewise. * libc/stdio/vsnprintf.c (vsnprintf, _vsnprintf_r): Likewise. * libc/stdio/vsniprintf.c (vsniprintf, _vsniprintf_r): Likewise. 2007-03-12 Eric Blake * libc/stdio/fvwrite.c (__sfvwrite_r): Fix reentrancy. * libc/stdio/vasprintf.c (vasprintf, _vasprintf_r): Pass failed allocation to caller. * libc/stdio/asprintf.c (_asprintf_r, asprintf): Likewise. * libc/stdio/asiprintf.c (_asiprintf_r, asiprintf): Likewise. * libc/stdio/vasiprintf.c (vasiprintf, _vasiprintf_r): Likewise. 2007-02-23 Jeff Johnston * libm/math/w_pow.c: Fix typo in documentation comment. 2007-02-21 Patrick Mansfield * libc/reent/timer.c: Removed (split into two new files). * libc/reent/timesr.c: New file for _times_r. * libc/reent/gettimeofdayr.c: New file out _gettimeofday_r. * reent/Makefile.in: Remove timer.c, add timesr.c and gettimeofdayr.c. * libc/reent/Makefile.am: Regenerate. 2007-02-20 Patrick Mansfield * configure.host: Build SPU with default_newlib_atexit_dynamic_alloc="no". 2007-02-20 Kazunori Asayama * libc/machine/spu/Makefile.am: Add new objects. * libc/machine/spu/Makefile.in: Regenerated. * libc/machine/spu/fiprintf.c: New file. Add implementation of integer-only version. * libc/machine/spu/fiscanf.c: Ditto. * libc/machine/spu/iprintf.c: Ditto. * libc/machine/spu/iscanf.c: Ditto. * libc/machine/spu/siprintf.c: Ditto. * libc/machine/spu/siscanf.c: Ditto. * libc/machine/spu/sniprintf.c: Ditto. * libc/machine/spu/vfiprintf.c: Ditto. * libc/machine/spu/vfiscanf.c: Ditto. * libc/machine/spu/viprintf.c: Ditto. * libc/machine/spu/viscanf.c: Ditto. * libc/machine/spu/vsiprintf.c: Ditto. * libc/machine/spu/vsiscanf.c: Ditto. * libc/machine/spu/vsniprintf.c: Ditto. * libc/machine/spu/fprintf.c: Add support for integer-only version. * libc/machine/spu/fscanf.c: Ditto. * libc/machine/spu/printf.c: Ditto. * libc/machine/spu/scanf.c: Ditto. * libc/machine/spu/snprintf.c: Ditto. * libc/machine/spu/sprintf.c: Ditto. * libc/machine/spu/sscanf.c: Ditto. * libc/machine/spu/vfprintf.c: Ditto. * libc/machine/spu/vfscanf.c: Ditto. * libc/machine/spu/vprintf.c: Ditto. * libc/machine/spu/vscanf.c: Ditto. * libc/machine/spu/vsnprintf.c: Ditto. * libc/machine/spu/vsprintf.c: Ditto. * libc/machine/spu/vsscanf.c: Ditto. 2007-02-20 Kazunori Asayama * libc/include/stdio.h: Add declaration for vsiprintf. 2007-02-14 Patrick Mansfield Add a floating point environment for SPU (cell): * configure.host: add libm_machine_dir=spu. * libm/machine/configure: Add spu. * libm/machine/configure.in: regenerated with spu added. * libc/machine/spu/include/fenv.h: New file. * libc/machine/spu/sys/fenv.h: Ditto. * libm/machine/spu/Makefile.am: Ditto. * libm/machine/spu/Makefile.in: Ditto. * libm/machine/spu/aclocal.m4: Ditto. * libm/machine/spu/configure: Ditto. * libm/machine/spu/configure.in: Ditto. * libm/machine/spu/fe_dfl_env.c: Ditto. * libm/machine/spu/feclearexcept.c: Ditto. * libm/machine/spu/fegetenv.c: Ditto. * libm/machine/spu/fegetexceptflag.c: Ditto. * libm/machine/spu/fegetround.c: Ditto. * libm/machine/spu/feholdexcept.c: Ditto. * libm/machine/spu/feraiseexcept.c: Ditto. * libm/machine/spu/fesetenv.c: Ditto. * libm/machine/spu/fesetexceptflag.c: Ditto. * libm/machine/spu/fesetround.c: Ditto. * libm/machine/spu/fetestexcept.c: Ditto. * libm/machine/spu/feupdateenv.c: Ditto. * libm/machine/spu/headers/feclearexcept.h: Ditto. * libm/machine/spu/headers/fefpscr.h: Ditto. * libm/machine/spu/headers/fegetenv.h: Ditto. * libm/machine/spu/headers/fegetexceptflag.h: Ditto. * libm/machine/spu/headers/fegetround.h: Ditto. * libm/machine/spu/headers/feholdexcept.h: Ditto. * libm/machine/spu/headers/feraiseexcept.h: Ditto. * libm/machine/spu/headers/fesetenv.h: Ditto. * libm/machine/spu/headers/fesetexceptflag.h: Ditto. * libm/machine/spu/headers/fesetround.h: Ditto. * libm/machine/spu/headers/fetestexcept.h: Ditto. * libm/machine/spu/headers/feupdateenv.h: Ditto. 2007-02-14 Corinna Vinschen * libc/include/sys/features.h: Add _POSIX_MESSAGE_PASSING for Cygwin. 2007-02-08 Corinna Vinschen * libc/include/sys/features.h: Add _POSIX_SHARED_MEMORY_OBJECTS for Cygwin. Fix value of _POSIX_SEMAPHORES. Fix formatting. 2007-02-07 Corinna Vinschen * libc/include/sys/features.h: Add definition of all supported _POSIX_xxx values for Cygwin. * libc/include/sys/types.h (pthread_rwlock_t): Omit definition on Cygwin. (pthread_rwlockattr_t): Ditto. * libc/include/sys/unistd.h: Define all _SC_xxx values as required by SUSv3. Unify formatting. 2007-02-02 Ralf Corsépius * libc/include/sys/errno.h: Add ECANCELED. 2007-02-01 Joel Schopp Kazunori Asayama * libc/machine/spu/Makefile.am: Add objects. * libc/machine/spu/Makefile.in: Regenerated. * libc/machine/spu/vsscanf.c: New file. Add a stdio function implementation. * libc/machine/spu/snprintf.c: Ditto. * libc/machine/spu/sprintf.c: Ditto. * libc/machine/spu/sscanf.c: Ditto. * libc/machine/spu/remove.c: Ditto. * libc/machine/spu/rename.c: Ditto. * libc/machine/spu/tmpnam.c: Ditto. * libc/machine/spu/vsnprintf.c: Add initialization routine of stdio stuffs. * libc/machine/spu/vsprintf.c: Ditto. 2007-02-01 Joel Schopp Kazunori Asayama * configure.host: Enable SPU specific stdio directory. * libc/machine/spu/Makefile.am: Add objects. * libc/machine/spu/Makefile.in: Regenerated. * libc/machine/spu/c99ppe.h: Add macros and function declarations to initialize SPU specific stdio stuffs. * libc/machine/spu/stdio.c: Add functions to manage Cell SPU specific FILE structures. * libc/machine/spu/perror.c: Add initialization routine of stdio stuffs. * libc/machine/spu/printf.c: Ditto. * libc/machine/spu/putchar.c: Ditto. * libc/machine/spu/puts.c: Ditto. * libc/machine/spu/vprintf.c: Ditto. * libc/machine/spu/clearerr.c: New file. Add a stdio function implementation. * libc/machine/spu/feof.c: Ditto. * libc/machine/spu/ferror.c: Ditto. * libc/machine/spu/fileno.c: Ditto. * libc/machine/spu/fopen.c: Ditto. * libc/machine/spu/fclose.c: Ditto. * libc/machine/spu/freopen.c: Ditto. * libc/machine/spu/fflush.c: Ditto. * libc/machine/spu/fseek.c: Ditto. * libc/machine/spu/ftell.c: Ditto. * libc/machine/spu/rewind.c: Ditto. * libc/machine/spu/fgetpos.c: Ditto. * libc/machine/spu/fsetpos.c: Ditto. * libc/machine/spu/fread.c: Ditto. * libc/machine/spu/fwrite.c: Ditto. * libc/machine/spu/getc.c: Ditto. * libc/machine/spu/getchar.c: Ditto. * libc/machine/spu/gets.c: Ditto. * libc/machine/spu/fgetc.c: Ditto. * libc/machine/spu/fgets.c: Ditto. * libc/machine/spu/ungetc.c: Ditto. * libc/machine/spu/putc.c: Ditto. * libc/machine/spu/fputc.c: Ditto. * libc/machine/spu/fputs.c: Ditto. * libc/machine/spu/vfprintf.c: Ditto. * libc/machine/spu/vfscanf.c: Ditto. * libc/machine/spu/fprintf.c: Ditto. * libc/machine/spu/fscanf.c: Ditto. * libc/machine/spu/scanf.c: Ditto. * libc/machine/spu/vscanf.c: Ditto. * libc/machine/spu/setbuf.c: Ditto. * libc/machine/spu/setvbuf.c: Ditto. * libc/machine/spu/tmpfile.c: Ditto. 2007-02-01 Jeff Johnston * libc/include/sys/config.h[__SPU__]: Define __CUSTOM_FILE_IO__. * libc/include/stdio.h[!__CUSTOM_FILE_IO__]: Add flag check around stdio macros that manipulate fields in the normal file structure. * libc/include/sys/reent.h[__CUSTOM_FILE_IO__]: Include to define custom FILE structure. * libc/include/sys/custom_file.h: New default header file that generates error if not overridden when __CUSTOM_FILE_IO__ set. * libc/machine/spu/sys/custom_file.h: New file. 2007-01-31 Kazunori Asayama * configure.host: Define stdio directory as a variable. * libc/Makefile.am: Define stdio related names as macros. * libc/configure.in: Add detection routine of stdio directory. * libc/Makefile.in: Regenerated. * libc/configure: Ditto. * libc/argz/Makefile.in: Ditto. * libc/ctype/Makefile.in: Ditto. * libc/errno/Makefile.in: Ditto. * libc/iconv/Makefile.in: Ditto. * libc/iconv/ccs/Makefile.in: Ditto. * libc/iconv/ccs/binary/Makefile.in: Ditto. * libc/iconv/ces/Makefile.in: Ditto. * libc/iconv/lib/Makefile.in: Ditto. * libc/locale/Makefile.in: Ditto. * libc/misc/Makefile.in: Ditto. * libc/posix/Makefile.in: Ditto. * libc/reent/Makefile.in: Ditto. * libc/search/Makefile.in: Ditto. * libc/signal/Makefile.in: Ditto. * libc/stdio/Makefile.in: Ditto. * libc/stdio64/Makefile.in: Ditto. * libc/stdlib/Makefile.in: Ditto. * libc/string/Makefile.in: Ditto. * libc/syscalls/Makefile.in: Ditto. * libc/time/Makefile.in: Ditto. * libc/unix/Makefile.in: Ditto. 2007-01-30 Ben Elliston * libc/machine/spu/vsnprintf.c (c99_vsnprintf_t): Const-qualify fmt member. * libc/machine/spu/printf.c (c99_printf_t): Likewise. (printf): Pass fmt to va_start to suppress a warning. * libc/search/hash.c (init_hash): Make `info' parameter const. 2007-01-19 Kazunori Asayama * libc/machine/spu/c99ppe.h: Replace vector with __vector. * libc/machine/spu/vec_literal.h: Ditto. * libc/machine/spu/strncmp.c: Ditto. 2007-01-15 Joseph Myers Kazu Hirata * libc/machine/powerpc/setjmp.S (setjmp, longjmp): Add support for E500V1 and E500V2. 2007-01-11 Jeff Johnston * libm/configure.in: Always configure machine directory. * libm/Makefile.am: Make machine subdirectory part of SUBDIRS unconditionally. * libm/configure: Regenerated. * libm/Makefile.in: Ditto. * libm/*/Makefile.in: Ditto. 2007-01-05 Brian Ford * configure.host (*-*-cygwin*): Define HAVE_BLKSIZE. 2007-01-02 Ben Elliston * doc/makedoc.c: Include . (malloc, realloc): Remove extern declarations. 2006-12-18 Jeff Johnston * NEWS: Update with 1.15.0 info. * README: Ditto. * acinclude.m4: Change version number to 1.15.0. * aclocal.m4: Regenerated. * configure: Ditto. * doc/aclocal.m4: Ditto. * doc/configure: Ditto. * libc/*/aclocal.m4: Ditto. * libc/*/configure: Ditto. * libc/libc.texinfo: Ditto. * libm/*/aclocal.m4: Ditto. * libm/*/configure: Ditto. * libm/libm.texinfo: Ditto. * libc/sys/linux/shared.ld: Add VERS_1.15. 2006-12-18 Kazu Hirata Merge from newlib-csl-20060320-branch: 2006-12-01 Nathan Sidwell Kazu Hirata * configure.host: Recognize fido. 2006-12-18 Joel Schopp * libc/machine/spu/c99ppe.h: New file * libc/machine/spu/perror.c: New file to override libc/stdio version. * libc/machine/spu/printf.c: New file * libc/machine/spu/putchar.c: New file * libc/machine/spu/puts.c: New file * libc/machine/spu/vprintf.c: New file * libc/machine/spu/vsnprintf.c: New file * libc/machine/spu/vsprintf.c: New file * libc/machine/spu/Makefile.am: Add new targets. * libc/machine/spu/Makefile.in: Regenerated. 2006-12-18 Jeff Johnston * aclocal.m4 */aclocal.m4: Regenerated using aclocal 1.9.6. * Makefile.in */Makefile.in: Regenerated using automake 1.9.6. 2006-12-18 Jeff Johnston * libc/stdlib/mallocr.c (malloc_extend_top): Add patch from 2.6.5 version of Doug Lea's malloc which is the basis of this code. 2006-12-18 Kazunori Asayama * libc/include/machine/setjmp.h[__SPU__]: Replace vector with __vector. 2006-12-14 Jeff Johnston Eric Blake * libc/stdio/fflush.c (fflush): On seekable streams, always flush read but unused data. * libc/stdio/fclose.c (_fclose_r): Always flush streams, since even read streams may have side effects that must happen. 2006-12-13 Joel Schopp * libc/machine/spu/setjmp.S: Fix to handle registers past 115 correctly. 2006-12-13 Joel Schopp * libc/include/alloca.h: Add undef alloca to work with xlc. 2006-12-12 Joel Schopp * libc/include/machine/setjmp.h[__SPU__]: Redefine _JBTYPE for cell spu. 2006-12-04 Kazunori Asayama * libc/machine/spu/strncpy.c: Add padding. 2006-12-04 Kazunori Asayama * testsuite/newlib.string/tstring.c: 2006-12-01 Kazunori Asayama * libc/machine/spu/strchr.c: Fix mask for misaligned string. * libc/machine/spu/strrchr.c: Ditto. 2006-11-30 Lev Bishop * libc/include/math.h: Allow C99 functions/macros to be defined for C++ even when __STRICT_ANSI__. 2006-11-29 Jeff Johnston * libc/stdio/makebuf.c (__smakebuf): If dealing with an asprintf-family buffer, make the default initial size 64. 2006-11-29 Eric Blake * libc/stdio/fvwrite.c (__sfvwrite_r): Avoid off-by-one error in asprintf, as well as quadratic realloc behavior. 2006-11-29 Kazunori Asayama * libc/machine/spu/memcpy.c: Use spu_splats, explicit cast. * libc/machine/spu/memmove.c: Use spu_splats, explicit cast. * libc/machine/spu/memset.c: Use spu_splats, remove apple-cast. * libc/machine/spu/strchr.c: Use spu_splats, remove apple-cast. * libc/machine/spu/strncat.c: Explicit cast. * libc/machine/spu/strncmp.c: Use spu_splats. * libc/machine/spu/strncpy.c: Explicit cast. * libc/machine/spu/strrchr.c: Use spu_splats. * libc/machine/spu/strspn.c: Use spu_splats. 2006-11-15 Till Straumann * libc/time/tzset_r.c (_tzset_r): Initialize local variable. 2006-11-14 Eric Blake * libc/stdio/vfprintf.c (_vfprintf_r): Support ' flag. (chclass): ' is a flag. j, t, and z are modifiers. 2006-11-08 Jie Zhang * configure.host: Add support for bfin. * libc/include/machine/ieeefp.h: Define __IEEE_LITTLE_ENDIAN for bfin. * libc/include/machine/setjmp.h: Define _JBLEN for bfin. * libc/machine/bfin/aclocal.m4: Generate. * libc/machine/bfin/configure.in: New. * libc/machine/bfin/configure: Generate. * libc/machine/bfin/Makefile.am: New. * libc/machine/bfin/Makefile.in: Generate. * libc/machine/bfin/setjmp.S: New. * libc/machine/bfin/longjmp.S: New. * libc/machine/configure.in: Add bfin support. * libc/machine/configure: Generate. 2006-11-07 Corinna Vinschen * libc/include/sys/unistd.h (_SC_STREAM_MAX): Define on Cygwin. (_PC_FILESIZEBITS): Add definition. (_PC_2_SYMLINKS): Ditto. (_PC_SYMLINK_MAX): Ditto. 2006-10-27 Joel Schopp * libc/machine/spu/memcpy.c: Override generic function with vectorized version optimized for the cell spu. * libc/machine/spu/memmove.c: Ditto. * libc/machine/spu/memset.c: Ditto. * libc/machine/spu/strcat.c: Ditto. * libc/machine/spu/strchr.c: Ditto. * libc/machine/spu/strcmp.c: Ditto. * libc/machine/spu/strcpy.c: Ditto. * libc/machine/spu/strcspn.c: Ditto. * libc/machine/spu/strlen.c: Ditto. * libc/machine/spu/strncat.c: Ditto. * libc/machine/spu/strncmp.c: Ditto. * libc/machine/spu/strncpy.c: Ditto. * libc/machine/spu/strpbrk.c: Ditto. * libc/machine/spu/strrchr.c: Ditto. * libc/machine/spu/strspn.c: Ditto. * libc/machine/spu/strxfrm.c: Ditto. * libc/machine/spu/vec_literal.h: Add abstraction of vector literals, removing altivec style initializers. * libc/machine/spu/Makefile.am: Add new files to list so they build * libc/machine/spu/Makefile.in: Regenerate from new Makefile.am 2006-10-27 Jeff Johnston * README: Add a brief section on how to regenerate configuration files in newlib. 2006-10-25 Vladimir Prus * libc/include/math.h: (exception): Add a comment telling fixincludes that we handle C vs. C++ issue. 2006-10-11 Yang Tse * libc/include/machine/setjmp.h: Use __extension__ keyword for gcc's braced-groups. 2006-10-11 Corinna Vinschen * libc/reent/reeent.c (_reclaim_reent): Free _REENT_MP_RESULT. 2006-09-26 Jeff Johnston * libc/include/stdio.h[_REENT_SMALL]: Do not allow macros for clearerr, feof, or fileno. * libc/include/sys/reent.h[_REENT_SMALL](struct _reent): Change the dummy std stream scheme to use pointers to const external fake files, one for each standard stream. * libc/stdio/local.h (CHECK_INIT): Change to take a file pointer argument. For _REENT_SMALL, reset the file pointer if it matches one of the fake std stream pointers. * libc/stdio/clearerr.c: Fix CHECK_INIT macro to add file pointer argument. * libc/stdio/fclose.c: Ditto. * libc/stdio/feof.c: Ditto. * libc/stdio/ferror.c: Ditto. * libc/stdio/fflush.c: Ditto. * libc/stdio/fgetc.c: Ditto. * libc/stdio/fgets.c: Ditto. * libc/stdio/fileno.c: Ditto. * libc/stdio/findfp.c: Ditto. * libc/stdio/fputc.c: Ditto. * libc/stdio/fputs.c: Ditto. * libc/stdio/fread.c: Ditto. * libc/stdio/freopen.c: Ditto. * libc/stdio/fseek.c: Ditto. * libc/stdio/ftell.c: Ditto. * libc/stdio/fwrite.c: Ditto. * libc/stdio/getc.c: Ditto. * libc/stdio/getdelim.c: Ditto. * libc/stdio/putc.c: Ditto. * libc/stdio/refill.c: Ditto. * libc/stdio/setvbuf.c: Ditto. * libc/stdio/ungetc.c: Ditto. * libc/stdio/vfprintf.c: Ditto. * libc/stdio/vfscanf.c: Ditto. * libc/stdio/wbuf.c: Ditto.: Ditto. * libc/stdio/wsetup.c: Ditto. * libc/stdio64/freopen64.c: Ditto. * libc/stdio64/fseeko64.c: Ditto. * libc/stdio64/ftello64.c: Ditto. * libc/machine/powerpc/vfprintf.c: Ditto. * libc/machine/powerpc/vfscanf.c: Ditto. 2006-09-22 Paul Brook * libc/include/sys/reent.h: Define and use __reent_assert. 2006-09-13 Joel Sherrill * libc/include/pthread.h: Add pthread barriers, rwlocks, and spinlocks. Change const to _CONST and prefix parameter names with an underscore. * libc/include/sys/types.h: Add id and attribute types for barriers, wrlocks, and spinlocks. * libc/include/sys/features.h: Enable barriers, wrlocks, and spinlocks for RTEMS. 2006-09-13 Patrick Mansfield * libc/include/math.h: Remove _CONST from _LIB_VERSION, as it is supposed to be writable. * libm/common/s_lib_ver.c: Ditto. 2006-09-12 Paul Brook * libc/stdlib/rand.c (srand): Add _REENT_CHECK_RAND48. 2006-09-07 Masaki Muranaka * libc/machine/xstormy16/Makefile.am: Add $(lpfx) prefix to LIBADD objects. lib_a_DEPENDENCIES uses the value of lib_a_LIBADD. * libc/machine/xstormy16/Makefile.in: Regenerated. 2006-09-06 Eric Blake * libc/stdio/vfprintf.c (_vfprintf_r, get_arg): Add 'hh', 'j', 't', and 'z' modifiers. 2006-09-01 Kazu Hirata Merge from newlib-csl-20060320-branch: 2006-05-22 Sandra Loosemore * configure.host: Tell it we have _rename and _system when building m68k-unknown-elf. 2006-08-29 Paul Brook * libc/include/sys/config.h: Define _REENT_SMALL for Thumb-2. 2006-08-27 Joel Sherrill * libc/sys/rtems/machine/sys/param.h: Conditionalize definition of BLKDEV_IOSIZE and MAXPHYS so it will fit into small memory targets. This is needed to build all AVR and H8300 RTEMS multilib variants. 2006-08-23 Kazunori Asayama * libc/machine/configure.in: Add configuration for SPU. * libc/machine/configure: Regenerated. * libc/machine/spu/memcpy.c: Include string.h. 2006-08-22 Eric Blake * libc/posix/popen.c (popen): Don't close output end of pipe in child if stdout was closed on entry. [HAVE_FCNTL]: In parent, mark file as close-on-exec, per POSIX. 2006-08-19 Ramana Radhakrishnan * sys/types.h: Correct syntax error caused by missing '\' on #ifdef line. 2006-08-17 Brian Ford * libc/time/gmtime.c: Correct man page; clock is not a local time and no conversion occurs. 2006-08-16 Joel Schopp * configure.host (newlib_cflags) [spu]: Add special compiler options to reduce size. 2006-08-16 Joel Schopp * configure.host: Add spu support. * libc/include/stdint.h: Ditto. * libc/include/machine/ieeefp.h: Ditto. * libc/include/machine/setjmp.h: Ditto. * libc/include/sys/config.h: Ditto. * libc/include/sys/types.h: Ditto. * libc/machine/spu/Makefile.am: New file. * libc/machine/spu/Makefile.in: Ditto. * libc/machine/spu/aclocal.m4: Ditto. * libc/machine/spu/configure: Ditto. * libc/machine/spu/configure.in: Ditto. * libc/machine/spu/memcpy.c: Ditto. * libc/machine/spu/setjmp.S: Ditto. 2006-08-03 J"orn Rennecke * dtoa.c (dtoa_r): Handle the denormalized _DOUBLE_IS_32BITS case properly. 2006-08-01 Jeff Johnston * libc/Makefile.am: Add libc_TEXINFOS dependency on generated .texi files. * libm/Makefile.am: Add libm_TEXINFOS dependency on generated .texi files. * libc/Makefile.in: Regenerated. * libm/Makefile.in: Ditto. 2006-08-01 Thiemo Seufer Nigel Stephens * libc/include/sys/config.h (__ATTRIBUTE_IMPURE_PTR__): For MIPS define this to force _impure_ptr to live in the .sdata section. 2006-07-31 Jeff Johnston * acinclude.m4: Check for readelf tool. * configure.in: Use ${READELF} instead of hard-coding. * Regenerate all aclocal.m4, Makefile.in, and configure files. 2006-07-31 Jeff Johnston * libc/sys/linux/mmap.c: Remove include of sys/mman.h to avoid conflict with newer glibc's revision of mremap. 2006-07-05 Jeff Johnston * libc/stdlib/mprec.h [_DOUBLE_IS_32BITS]: Turn off C99 hex floating-point format support. Also redefine dword0 and dword1 macros. * libc/stdlib/strtod.c: Add checks for _DOUBLE_IS_32BITS to prevent setting dword1 which is an rvalue only. 2006-06-22 Jeff Johnston * libc/stdlib/Makefile.am: Add new gdtoa routines. * libc/stdlib/Makefile.in: Regenerated. * libc/stdlib/gd_qnan.h: New file. * libc/stdlib/gdtoa-gethex.c: Ditto. * libc/stdlib/gdtoa-hexnan.c: Ditto. * libc/stdlib/gdtoa.h: Ditto. * libc/stdlib/mprec.c: Add new helper routines needed by the new gdtoa code. * libc/stdlib/mprec.h: Integrate some defines and prototypes used by gdtoa routines here. * libc/stdlib/strtod.c: Rebased on David M. Gay's gdtoa-strtod.c which adds C99 support such as nan, inf, and hexadecimal input format. 2006-06-15 Corinna Vinschen * libc/include/stdio.h (__sgetc_r): Fix typo. * libc/stdio/fread.c (_fread_r): Convert crlf calls to crlf_r. * libc/stdio/rget.c (__srbuf): Reinstantiate. * libc/stdio/wbuf.c (__swbuf): Ditto. 2006-06-14 Jeff Johnston * libc/include/stdio.h: Add new reentrant I/O prototypes for read/write functions. Change getc/putc macros to have reentrant underlying macros/functions. This includes __sgetc_raw_r, __sgetc_r, and __sputc_r. * libc/stdio/fgetc.c: Fix and/or add reentrant version to call new reentrant I/O functions/macros for reading/writing. * libc/stdio/fgets.c: Ditto. * libc/stdio/fputc.c: Ditto. * libc/stdio/fputs.c: Ditto. * libc/stdio/fread.c: Ditto. * libc/stdio/fseek.c: Ditto. * libc/stdio64/fseeko64.c: Ditto. * libc/stdio/fwrite.c: Ditto. * libc/stdio/getc.c: Ditto. * libc/stdio/getc_u.c: Ditto. * libc/stdio/getchar.c: Ditto. * libc/stdio/getchar_u.c: Ditto. * libc/stdio/putc.c: Ditto. * libc/stdio/putc_u.c: Ditto. * libc/stdio/putchar.c: Ditto. * libc/stdio/puts.c: Ditto. * libc/stdio/vfprintf.c: Ditto. * libc/stdio/vfscanf.c: Ditto. * libc/stdio/fvwrite.c: Change __sfvwrite into reentrant __sfvwrite_r. Change all previous callers of __sfvwrite. Set errno to EBADF and set error flag on if attempt is made to write to file that does not allow writing. * libc/stdio/fvwrite.h: Fix new reentrant prototypes. * libc/stdio/local.h: Ditto. * libc/stdio/refill.c: Turn __srefill into reentrant __srefill_r. Set errno to EBADF and the error flag on if attempt is made to read unreadable file. Change all previous callers of __srefill. * libc/stdio/rget.c * libc/stdio/wbuf.c: Turn __swbuf into reentrant __swbuf_r. Change all previous callers of __swbuf. * libc/sys/linux/machine/i386/huge_val.h: Ifdef out file contents since huge value macros are already defined correctly for i386 by . 2006-06-13 Sandra Loosemore * /libc/sys/arm/syscalls.c (_unlink, isatty, _system, _rename): Make them do something useful in the ARM_RDI_MONITOR case. 2006-06-07 Fred Fish * libc/search/hash_bigkey.c (MIN,MAX): Remove defines that are already supplied by . 2006-06-07 Fred Fish * configure.host: Remove references to HAVE_GETTIMEOFDAY. 2006-06-05 Shaun Jackman * libc/posix/Makefile.am (GENERAL_SOURCES): Add sleep.c and usleep.c. * libc/posix/Makefile.in: Regenerate. * libc/posix/sleep.c: New file. * libc/posix/usleep.c: Ditto. 2006-06-05 Shaun Jackman * configure.host (newlib_cflags) [arm, thumb, xscale]: Remove -DABORT_PROVIDED flag. * newlib/libc/sys/arm/syscalls.c (kill, exit): Sync with libgloss. * newlib/libc/sys/arm/libcfunc.c (abort): Ditto. 2006-06-05 Jeff Johnston * Makefile.am (AM_MAKEFLAGS): Pass CCASFLAGS. * Makefile.in: Regenerated. * libc/machine/sh/Makefile.am (AM_CCASFLAGS): Remove extraneous CFLAGS reference now that CCASFLAGS are being extended properly via multilib. * libc/machine/sh/Makefile.in: Regenerated. 2006-06-02 Shaun Jackman * libc/unix/sigset.c: Undefine sigfillset, sigdelset, and sigismember. 2006-05-23 Jeff Johnston * libc/misc/dprintf.c: Removed. * libc/misc/__dprintf.c: Renamed from dprintf.c. * libc/misc/Makefile.am: Changed appropriately for rename. * libc/misc/Makefile.in: Regenerated. 2006-05-23 Jeff Johnston * libc/include/stdio.h: Protect dprintf prototype with #ifndef dprintf so as to not interfere with historical code defining their own dprintf macro. 2006-05-18 Jeff Johnston * libc/include/stdio.h: Add prototypes for fiscanf, iscanf, and siscanf. 2006-05-11 J"orn Rennecke * acinclude.m4 (_NEWLIB_VERSION): Rename to: (DEF_NEWLIB_VERSION). * configure.in (_NEWLIB_VERSION): Use NEWLIB_VERSION. * configure: Regenerate. 2006-05-09 Jeff Johnston * libc/ctype/Makefile.am: Add $(ELIX_SOURCES) to lib_a_SOURCES. * libc/ctype/Makefile.in: Regenerated. 2006-05-09 Kazu Hirata * libc/machine/arm/Makefile.am: Fix a typo. * libc/machine/arm/Makefile.in: Regenerated. 2006-05-08 J"orn Rennecke * libc/machine/sh/Makefile.am (AM_CCASFLAGS): Add $(CFLAGS). * libc/machine/sh/Makefile.in: Regenerate. 2006-05-03 J"orn Rennecke * libc/sys/sh/Makefile.am (AM_CCASFLAGS): Add $(CFLAGS). * libc/sys/sh/Makefile.in (AM_CCASFLAGS): Likewise. 2006-05-02 Jeff Johnston * libc/sys/sysnec810/Makefile.am: Specify .S files instead of .s. * libc/sys/sysnec810/Makefile.in: Regenerated. * libc/sys/sysnec810/crt0.S: Renamed from .s file. * libc/sys/sysnec810/io.S: Ditto. * libc/sys/sysnec810/crt0.s: Renamed to .S file. * libc/sys/sysnec810/io.s: Ditto. 2006-05-01 Jeff Johnston * libc/argz/Makefile.am: Prefix any objects specified with $(lpfx). If source file can be specified instead of object, do so. * libc/ctype/Makefile.am: Ditto. * libc/iconv/ccs/Makefile.am: Ditto. * libc/iconv/ces/Makefile.am: Ditto. * libc/iconv/lib/Makefile.am: Ditto. * libc/locale/Makefile.am: Ditto. * libc/posix/Makefile.am: Ditto. * libc/reent/Makefile.am: Ditto. * libc/search/Makefile.am: Ditto. * libc/stdio/Makefile.am: Ditto. * libc/stdio64/Makefile.am: Ditto. * libc/stdlib/Makefile.am: Ditto. * libc/string/Makefile.am: Ditto. * libc/syscalls/Makefile.am: Ditto. * libc/unix/Makefile.am: Ditto. * libc/machine/a29k/Makefile.am: Specify lib_a_CCASFLAGS so .S files will get prefix added automatically. Any specified rules must use $(lpfx) for object file names. * libc/machine/arm/Makefile.am: Ditto. * libc/machine/cris/Makefile.am: Ditto. * libc/machine/crx/Makefile.am: Ditto. * libc/machine/d10v/Makefile.am: Ditto. * libc/machine/d30v/Makefile.am: Ditto. * libc/machine/fr30/Makefile.am: Ditto. * libc/machine/frv/Makefile.am: Ditto. * libc/machine/h8300/Makefile.am: Ditto. * libc/machine/h8500/Makefile.am: Ditto. * libc/machine/hppa/Makefile.am: Ditto. * libc/machine/i386/Makefile.am: Ditto. * libc/machine/i960/Makefile.am: Ditto. * libc/machine/iq2000/Makefile.am: Ditto. * libc/machine/m32c/Makefile.am: Ditto. * libc/machine/m32r/Makefile.am: Ditto. * libc/machine/m68hc11/Makefile.am: Ditto. * libc/machine/m68k/Makefile.am: Ditto. * libc/machine/m88k/Makefile.am: Ditto. * libc/machine/mips/Makefile.am: Ditto. * libc/machine/mn10200/Makefile.am: Ditto. * libc/machine/mn10300/Makefile.am: Ditto. * libc/machine/mt/Makefile.am: Ditto. * libc/machine/necv70/Makefile.am: Ditto. * libc/machine/powerpc/Makefile.am: Ditto. * libc/machine/sh/Makefile.am: Ditto. * libc/machine/sh/Makefile.in: Ditto. * libc/machine/sparc/Makefile.am: Ditto. * libc/machine/tic4x/Makefile.am: Ditto. * libc/machine/tic80/Makefile.am: Ditto. * libc/machine/v850/Makefile.am: Ditto. * libc/machine/w65/Makefile.am: Ditto. * libc/machine/xscale/Makefile.am: Ditto. * libc/machine/xstormy16/Makefile.am: Ditto. * libc/machine/z8k/Makefile.am: Ditto. * libc/sys/a29khif/Makefile.am: Ditto. * libc/sys/arm/Makefile.am: Ditto. * libc/sys/d10v/Makefile.am: Ditto. * libc/sys/h8300hms/Makefile.am: Ditto. * libc/sys/h8500hms/Makefile.am: Ditto. * libc/sys/linux/Makefile.am: Ditto. * libc/sys/linux/linuxthreads/Makefile.am: Ditto. * libc/sys/linux/net/Makefile.am: Ditto. * libc/sys/linux/stdlib/Makefile.am: Ditto. * libc/sys/m88kbug/Makefile.am: Ditto. * libc/sys/mmixware/Makefile.am: Ditto. * libc/sys/rdos/Makefile.am: Ditto. * libc/sys/rtems/Makefile.am: Ditto. * libc/sys/sh/Makefile.am: Ditto. * libc/sys/sun4/Makefile.am: Ditto. * libc/sys/sysmec/Makefile.am: Ditto. * libc/sys/sysnec810/Makefile.am: Ditto. * libc/sys/sysnecv850/Makefile.am: Ditto. * libc/sys/sysvi386/Makefile.am: Ditto. * libc/sys/sysvnecv70/Makefile.am: Ditto. * libc/sys/tic80/Makefile.am: Ditto. * libc/sys/w65/Makefile.am: Ditto. * libc/sys/z8ksim/Makefile.am: Ditto. * libc/machine/necv70/fastmath.S: Renamed from .s file. * libc/machine/necv70/setjmp.S: Ditto. * libc/machine/necv70/fastmath.s: Removed. * libc/machine/necv70/setjmp.s: Ditto. * libc/machine/w65/*.S: New files renamed from .s files. * libc/machine/w65/*.s: Renamed and removed. * libc/sys/a29khif/*.S: New files renamed from .s files. * libc/sys/a29khif/*.s: Renamed and removed. * libc/sys/sysvi386/*.S: New files renamed from .s files. * libc/sys/sysvi386/*.s: Renamed and removed. * libc/sys/sysvnecv70/*.S: New files renamed from .s files. * libc/sys/sysvnecv70/*.s: Renamed and removed. * libc/*Makefile.in: Regenerated as appropriate. 2006-04-24 DJ Delorie * libc/machine/sh/configure.in: Avoid link tests. * libc/machine/sh/configure: Regenerate. 2006-04-18 Jeff Johnston * libc/include/sys/signal.h (sigdelset, sigfillset, sigismember): New macros. (sigaddset, sigemptyset): Add return code. 2006-04-13 Ralf Corsepius * acinclude.m4: New _NEWLIB_VERSION. * acinclude.m4(NEWLIB_CONFIGURE): AC_REQUIRE(_NEWLIB_VERSION). Use AC_CANONICAL_HOST instead of AC_CANONICAL_SYSTEM. Use new form of AC_INIT_AUTOMAKE. * configure.in: AC_PREREQ(2.59). Use autoconf-2.5.x version of AC_INIT. Use AC_CONFIG_FILES and autoconf-2.5x AC_OUTPUT instead of autoconf-2.13's AC_OUTPUT. * libm/configure.in: Ditto. * libm/machine/configure.in: Ditto. * libm/machine/i386/configure.in: Ditto. * libc/configure.in: Ditto. * libc/machine/a29k/configure.in: Ditto. * libc/machine/arm/configure.in: Ditto. * libc/machine/configure.in: Ditto. * libc/machine/mn10300/configure.in: Ditto. * libc/machine/powerpc/configure.in: Ditto. * libc/machine/z8k/configure.in: Ditto. * libc/machine/h8300/configure.in: Ditto. * libc/machine/mips/configure.in: Ditto. * libc/machine/crx/configure.in: Ditto. * libc/machine/m68hc11/configure.in: Ditto. * libc/machine/h8500/configure.in: Ditto. * libc/machine/xscale/configure.in: Ditto. * libc/machine/d10v/configure.in: Ditto. * libc/machine/fr30/configure.in: Ditto. * libc/machine/sh/configure.in: Ditto. * libc/machine/tic80/configure.in: Ditto. * libc/machine/m32r/configure.in: Ditto. * libc/machine/xstormy16/configure.in: Ditto. * libc/machine/i386/configure.in: Ditto. * libc/machine/d30v/configure.in: Ditto. * libc/machine/mn10200/configure.in: Ditto. * libc/machine/frv/configure.in: Ditto. * libc/machine/mt/configure.in: Ditto. * libc/machine/i960/configure.in: Ditto. * libc/machine/v850/configure.in: Ditto. * libc/machine/necv70/configure.in: Ditto. * libc/machine/tic4x/configure.in: Ditto. * libc/machine/cris/configure.in: Ditto. * libc/machine/m68k/configure.in: Ditto. * libc/machine/m32c/configure.in: Ditto. * libc/machine/hppa/configure.in: Ditto. * libc/machine/w65/configure.in: Ditto. * libc/machine/iq2000/configure.in: Ditto. * libc/machine/sparc/configure.in: Ditto. * libc/machine/m88k/configure.in: Ditto. * libc/sys/linux/configure.in: Ditto. * libc/sys/linux/machine/configure.in: Ditto. * libc/sys/linux/machine/i386/configure.in: Ditto. * libc/sys/linux/linuxthreads/configure.in: Ditto. * libc/sys/linux/linuxthreads/machine/configure.in: Ditto. * libc/sys/linux/linuxthreads/machine/i386/configure.in: Ditto. * libc/sys/arm/configure.in: Ditto. * libc/sys/configure.in: Ditto. * libc/sys/decstation/configure.in: Ditto. * libc/sys/a29khif/configure.in: Ditto. * libc/sys/sysnecv850/configure.in: Ditto. * libc/sys/d10v/configure.in: Ditto. * libc/sys/netware/configure.in: Ditto. * libc/sys/mmixware/configure.in: Ditto. * libc/sys/h8500hms/configure.in: Ditto. * libc/sys/sh/configure.in: Ditto. * libc/sys/tic80/configure.in: Ditto. * libc/sys/rdos/configure.in: Ditto. * libc/sys/sysmec/configure.in: Ditto. * libc/sys/sysvi386/configure.in: Ditto. * libc/sys/h8300hms/configure.in: Ditto. * libc/sys/sparc64/configure.in: Ditto. * libc/sys/arc/configure.in: Ditto. * libc/sys/sysnec810/configure.in: Ditto. * libc/sys/m88kbug/configure.in: Ditto. * libc/sys/sysvnecv70/configure.in: Ditto. * libc/sys/z8ksim/configure.in: Ditto. * libc/sys/rtems/configure.in: Ditto. * libc/sys/w65/configure.in: Ditto. * libc/sys/sun4/configure.in: Ditto. * doc/configure.in: Ditto. * iconvdata/configure.in: Ditto. * configure.in: Use AC_CONFIG_HEADER instead of AM_CONFIG_HEADER. 2006-04-11 Jeff Johnston * acinclude.m4: Properly add square brackets for AC_DEFUN macros. Rewrite LIB_AC_PROG_CC to remove macros no longer available. Add LIB_AM_PROG_AS to remove prereq of AC_PROG_CC. Add LIB_AC_PROG_CC_GNU macro. Substitute lpfx (library object prefix). * configure.host: Set lpfx depending on whether libtool is used or not. * configure.in: Individually specify libc and libm to AC_CONFIG_SUBDIRS. Add square bracket quoting as necessary. * Makefile.am: Use $(lpfx) to get object names for math-library functions that should also be in libc. * libc/machine/configure.in: Use case statement to determine AC_CONFIG_SUBDIRS statement. * libc/sys/linux/linuxthreads/machine/configure.in: Ditto. * libc/sys/linux/machine/configure.in: Ditto. * libc/sys/configure.in: Ditto. * libm/machine/configure.in: Ditto. * libc/sys/linux/configure.in: Fix up AC_CONFIG_SUBDIRS. * libm/configure.in: Add AM_CONDITIONAL statement for HAVE_LIBM_MACHINE_DIR. * libc/machine/a29k/Makefile.am: Modified to work with latest automake. Change includes setting AM_CCASFLAGS so building .S files will properly pick up flags used to build C files. * libc/machine/arm/Makefile.am: Ditto. * libc/machine/crx/Makefile.am: Ditto. * libc/machine/d10v/Makefile.am: Ditto. * libc/machine/d30v/Makefile.am: Ditto. * libc/machine/fr30/Makefile.am: Ditto. * libc/machine/frv/Makefile.am: Ditto. * libc/machine/h8300/Makefile.am: Ditto. * libc/machine/h8500/Makefile.am: Ditto. * libc/machine/hppa/Makefile.am: Ditto. * libc/machine/i386/Makefile.am: Ditto. * libc/machine/iq2000/Makefile.am: Ditto. * libc/machine/m32c/Makefile.am: Ditto. * libc/machine/m32r/Makefile.am: Ditto. * libc/machine/m68hc11/Makefile.am: Ditto. * libc/machine/m68k/Makefile.am: Ditto. * libc/machine/m88k/Makefile.am: Ditto. * libc/machine/mips/Makefile.am: Ditto. * libc/machine/mn10200/Makefile.am: Ditto. * libc/machine/mn10300/Makefile.am: Ditto. * libc/machine/mt/Makefile.am: Ditto. * libc/machine/necv70/Makefile.am: Ditto. * libc/machine/powerpc/Makefile.am: Ditto. * libc/machine/sh/Makefile.am: Ditto. * libc/machine/sparc/Makefile.am: Ditto. * libc/machine/tic4x/Makefile.am: Ditto. * libc/machine/tic80/Makefile.am: Ditto. * libc/machine/v850/Makefile.am: Ditto. * libc/machine/w65/Makefile.am: Ditto. * libc/machine/xscale/Makefile.am: Ditto. * libc/machine/xstormy16/Makefile.am: Ditto. * libc/machine/z8k/Makefile.am: Ditto. * libc/sys/a29khif/Makefile.am: Ditto. * libc/sys/arc/Makefile.am: Ditto. * libc/sys/arm/Makefile.am: Ditto. * libc/sys/d10v/Makefile.am: Ditto. * libc/sys/decstation/Makefile.am: Ditto. * libc/sys/h8300hms/Makefile.am: Ditto. * libc/sys/h8500hms/Makefile.am: Ditto. * libc/sys/linux/linuxthreads/machine/i386/Makefile.am: Ditto. * libc/sys/linux/machine/i386/Makefile.am: Ditto. * libc/sys/m88kbug/Makefile.am: Ditto. * libc/sys/mmixware/Makefile.am: Ditto. * libc/sys/netware/Makefile.am: Ditto. * libc/sys/rdos/Makefile.am: Ditto. * libc/sys/rtems/Makefile.am: Ditto. * libc/sys/sh/Makefile.am: Ditto. * libc/sys/sparc64/Makefile.am: Ditto. * libc/sys/sysmec/Makefile.am: Ditto. * libc/sys/sysnec810/Makefile.am: Ditto. * libc/sys/sysnecv850/Makefile.am: Ditto. * libc/sys/sysvi386/Makefile.am: Ditto. * libc/sys/sysvnecv70/Makefile.am: Ditto. * libc/sys/tic80/Makefile.am: Ditto. * libc/sys/w65/Makefile.am: Ditto. * libc/sys/z8ksim/Makefile.am: Ditto. * libm/machine/i386/Makefile.am: Ditto. * libc/sys/arm/Makefile.am: Ditto plus add EXTRA sources including trap.S so that automake will generate a .S.o suffix rule. * libc/argz/Makefile.am: Modified to work with latest automake. Change includes adding lib_a_CFLAGS so automake doesn't complain about libtool and non-libtool libraries sharing objects. * libc/ctype/Makefile.am: Ditto. * libc/errno/Makefile.am: Ditto. * libc/iconv/ccs/Makefile.am: Ditto. * libc/iconv/ces/Makefile.am: Ditto. * libc/iconv/lib/Makefile.am: Ditto. * libc/locale/Makefile.am: Ditto. * libc/misc/Makefile.am: Ditto. * libc/posix/Makefile.am: Ditto. * libc/reent/Makefile.am: Ditto. * libc/search/Makefile.am: Ditto. * libc/signal/Makefile.am: Ditto. * libc/stdio/Makefile.am: Ditto. * libc/stdio64/Makefile.am: Ditto. * libc/stdlib/Makefile.am: Ditto. * libc/string/Makefile.am: Ditto. * libc/sys/linux/Makefile.am: Ditto. * libc/sys/linux/argp/Makefile.am: Ditto. * libc/sys/linux/cmath/Makefile.am: Ditto. * libc/sys/linux/dl/Makefile.am: Ditto. * libc/sys/linux/iconv/Makefile.am: Ditto. * libc/sys/linux/intl/Makefile.am: Ditto. * libc/sys/linux/linuxthreads/Makefile.am: Ditto. * libc/sys/linux/net/Makefile.am: Ditto. * libc/sys/linux/stdlib/Makefile.am: Ditto. * libc/syscalls/Makefile.am: Ditto. * libc/time/Makefile.am: Ditto. * libc/unix/Makefile.am: Ditto. * libm/Makefile.am: Ditto. * libm/common/Makefile.am: Ditto. * libm/math/Makefile.am: Ditto. * libm/mathfp/Makefile.am: Ditto. * Regenerate all aclocal.m4, Makefile.in, and configure files. 2006-04-07 Jeff Johnston * libc/time/time.c (time): Do not check for HAVE_GETTIMEOFDAY anymore. Assume there is a gettimeofday syscall. 2006-03-29 Shaun Jackman * libc/sys/linux/include/netinet/ip.h: Include netinet/in_systm.h for the declaration of n_long. 2006-03-29 Shaun Jackman * libc/sys/linux/include/net/if.h: Include sys/socket.h for struct sockaddr. (IFF_SMART): Replace this define with IFF_NOTRAILERS. (IFF_CANTCHANGE): Replace IFF_SMART reference with IFF_NOTRAILERS. (IFF_NOTRAILERS): New define. (struct ifreq): Add ifru_netmask. (ifr_netmask): New define. 2006-03-29 Shaun Jackman * libc/sys/linux/sys/ioccom.h (ioctl): Change declaration to match sys/ioctl.h. 2006-03-29 Shaun Jackman * libtool.m4: Set lt_cv_deplibs_check_method=pass_all for linux-newlib libc implementations. 2006-03-29 Eric Blake * libc/stdio/freopen.c (_freopen_r) [__SCLE]: Fix typo. * libc/stdio64/freopen64.c (_freopen64_r) [__SCLE]: Likewise. 2006-03-29 Jeff Johnston * libc/sys/linux/io.c (__mknod): Fix declaration of syscall to pass a dev_t as third argument rather than a pointer to dev_t. 2006-03-29 Jeff Johnston * libc/sys/linux/net/name6.c: Fix struct references. 2006-03-22 Mark Mitchell * configure.host: Allow hosts to set the default newlib_atexit_dynamic_alloc value. * configure.in: Likewise. * configure: Regenerated. 2006-03-20 Mark Mitchell * acconfig.h (_ATEXIT_DYNAMIC_ALLOC): Undef. * configure.in (--disable-newlib-atexit-dynamic-alloc): New option. * configure: Regenerated. * newlib.hin: Regenerated. * libc/stdlib/__atexit.c (__register_exitproc): Don't call malloc if _ATEXIT_DYNAMIC_ALLOC is undefined. * libc/stdlib/__call_atexit.c (__call_exitprocs): Don't call free if _ATEXIT_DYNAMIC_ALLOC is undefined. 2006-03-17 Jeff Johnston * libc/sys/linux/linuxthreads/config.h: Remove definition of UINT32_C. 2006-03-15 Jeff Johnston * libc/stdio/wsetup.c (__swsetup): Don't make a buffer for a string I/O file that isn't using the asprintf family. 2006-03-07 Eric Blake * libc/stdio/freopen.c (_freopen_r) [HAVE_FCNTL]: For NULL filename, allow read-only or write-only FILE atop O_RDWR file descriptor. * libc/stdio64/freopen64.c (_freopen64_r) [HAVE_FCNTL]: Likewise. 2006-03-07 Jeff Johnston * libm/common/sf_isinf.c[_DOUBLE_IS_32BITS]: Undef isinf. * libm/common/sf_isnan.c[_DOUBLE_IS_32BITS]: Undef isnan. 2006-03-02 Jeff Johnston * libm/math/math.tex: Fix reference to sisnan.def which is now in common subdirectory. * libm/mathfp/mathfp.tex: Ditto. 2006-02-27 Jeff Johnston * Makefile.am (MATHOBJS_IN_LIBC): Add s_isinfd, sf_isinff, s_isnand, and sf_isnanf object files. * Makefile.in: Regenerated. * libc/include/ieeefp.h: Undef isnan and isinf to avoid conflict if has previously been included. * libc/include/math.h * libc/include/math.h: Make isnan and isinf macros to conform to C99. (__isinfd, __isinff, __isnand, __isnanf): New functions. * libm/common/Makefile.am: Add new s_isinfd, s_isnand, sf_isinff, and sf_isnanf files. Also support s_isnan, sf_isnan, s_isinf, and sf_isinf files which have been moved from math/mathfp directories. * libm/common/Makefile.in: Regenerated. * libm/common/s_isinfd.c: New file. * libm/common/s_isnand.c: Ditto. * libm/common/sf_isinff.c: Ditto. * libm/common/sf_isnanf.c: Ditto. * libm/common/s_isinf.c: Moved from libm/math directory. * libm/common/s_isnan.c: Ditto. * libm/common/sf_isinf.c: Ditto. * libm/common/sf_isnan.c: Ditto. * libm/math/Makefile.am: Remove isinf and isnan family functions which have been moved into common directory. * libm/mathfp/Makefile.am: Ditto. * libm/math/Makefile.in: Regenerated. * libm/mathfp/Makefile.in: Ditto. * libm/math/s_isinf.c: Removed. * libm/math/s_isnan.c: Ditto. * libm/math/sf_isinf.c: Ditto. * libm/math/sf_isnan.c: Ditto. * libm/mathfp/s_isinf.c: Ditto. * libm/mathfp/s_isnan.c: Ditto. * libm/mathfp/sf_isinf.c: Ditto. * libm/mathfp/sf_isnan.c: Ditto. 2006-02-20 Jeff Johnston * libc/stdio/fflush.c (fflush): For an fflush on a read-only stream, turn off fseek/rewind optimization as per POSIX/SUSv3. * libc/stdio/fseek.c (_fseek_r): After a successful unoptimized seek, turn off the __SNPT no-optimization flag. 2006-02-16 Jeff Johnston * libc/sys/linux/aio.c: Define _GNU_SOURCE so struct aioinit will be defined. * libc/sys/linux/sys/types.h: Move ahead of to preset special flags. 2006-02-15 Corinna Vinschen * libc/include/sys/time.h (struct timeval): Change member types according to SUSv3. * libc/include/sys/types.h (useconds_t): Change to unsigned according to SUSv3. (suseconds_t): Define type. 2006-02-13 Jeff Johnston David Carne * libc/string/strndup_r.c (_strndup_r): Use strnlen logic instead of strlen to determine number of bytes to copy. * libc/string/strnlen.c (strnlen): Fix so check for max limit occurs before looking at storage location. 2006-02-07 Paul Brook * libc/machine/arm/setjmp.S: Add Thumb-2 support. * libc/sys/arm/crt0.S: Add Thumb-2 startup code. * libc/sys/arm/libcfunc.c (do_AngelSWI): Use AngelSWIInsn. * libc/sys/arm/swi.h (AngelSWIInsn, AngelSWIAsm): Define. * libc/sys/arm/trap.S: Disable for Thumb-2. 2006-01-31 Leif Ekblad * configure.host: RDOS support added * libc/include/sys/config.h: Ditto. * libc/sys/rdos/Makefile.am, libc/sys/rdos/Makefile.in: New files. * libc/sys/rdos/aclocal.m4, libc/sys/rdos/chown.c: Ditto. * libc/sys/rdos/close.c, libc/sys/rdos/config.h: Ditto. * libc/sys/rdos/configure, libc/sys/rdos/configure.in: Ditto. * libc/sys/rdos/crt0.S, libc/sys/rdos/execve.c: Ditto. * libc/sys/rdos/fork.c, libc/sys/rdos/fstat.c: Ditto. * libc/sys/rdos/getenv.c, libc/sys/rdos/getpid.c: Ditto. * libc/sys/rdos/gettod.c, libc/sys/rdos/isatty.c: Ditto. * libc/sys/rdos/kill.c, libc/sys/rdos/link.c: Ditto. * libc/sys/rdos/lseek.c, libc/sys/rdos/open.c: Ditto. * libc/sys/rdos/rdos.S, libc/sys/rdos/rdos.h: Ditto. * libc/sys/rdos/rdoshelp.c, libc/sys/rdos/read.c: Ditto. * libc/sys/rdos/readlink.c, libc/sys/rdos/sbrk.c: Ditto. * libc/sys/rdos/stat.c, libc/sys/rdos/symlink.c: Ditto. * libc/sys/rdos/times.c, libc/sys/rdos/unlink.c: Ditto. * libc/sys/rdos/user.def, libc/sys/rdos/wait.c: Ditto. * libc/sys/rdos/write.c: Ditto. 2006-01-24 Jeff Johnston * acinclude.m4: Add nodefine to AM_INIT_AUTOMAKE macro invocation so as not to define PACKAGE and VERSION in newlib.h. * aclocal.m4: Regenerated. * configure: Ditto. * newlib.hin: Ditto. 2006-01-20 Jeff Johnston * acconfig.h: New file to generate newlib.hin from. * newlib.hin: Regenerated. * stamp-h.in: Regenerated. * Makefile.am: Add ACLOCAL_AMFLAGS so aclocal can be called automatically. * Makefile.in: Regenerated. * acinclude.m4: Add proper comment for hack in previous change. * aclocal.m4 */aclocal.m4: Regenerated. * configure */configure: Regenerated. 2006-01-11 Jeff Johnston * acinclude.m4: Add hack to prevent INSTALL in subdirs from being set to "../". * Makefile.am: Pass INSTALL in AM_MAKEFLAGS. * aclocal.m4: Regenerated. * configure: Ditto. * Makefile.in: Ditto. * doc/aclocal.m4: Ditto. * doc/configure: Ditto. * iconvdata/aclocal.m4: Ditto. * iconvdata/configure: Ditto. * libc/*/aclocal.m4: Ditto. * libc/*/configure: Ditto. * libc/libc.texinfo: Ditto. * libm/*/aclocal.m4: Ditto. * libm/*/configure: Ditto. 2006-01-10 Eric Blake * libc/stdio/freopen.c (_freopen_r): Fix use of oflags. * libc/stdio64/freopen64.c (_freopen64_r): Likewise. 2006-01-10 Jeff Johnston * libm/mathfp/s_frexp.c: Check for special values on the original input, not the manipulated output value. * libm/mathfp/sf_frexp.c: Ditto. * libm/mathfp/s_atangent.c: Don't use local value branch when checking for quadrant. * libm/mathfp/sf_atangent.c: Ditto. 2006-01-09 Jeff Johnston * libc/stdio/freopen.c: Switch to use isatty instead of _isatty. * libc/stdio64/freopen64.c: Ditto. 2006-01-09 Eric Blake * libc/stdio/freopen.c (_freopen_r): Accept NULL filename. * libc/stdio64/freopen64.c (_freopen64_r): Likewise. 2006-01-06 Jeff Johnston * libc/sys/linux/include/getopt.h: Add macros needed by new version of getopt.c in libc/stdlib. 2006-01-04 Gregory Pietsch * libc/stdlib/getopt.c: Replaced with version that adds getopt_long and getopt_long_only support. * libc/include/getopt.h: New file. 2005-12-16 Jeff Johnston * NEWS: Update with 1.14.0 info. * README: Ditto. * acinclude.m4: Change version number to 1.14.0. * aclocal.m4: Regenerated. * configure: Ditto. * doc/aclocal.m4: Ditto. * doc/configure: Ditto. * libc/*/aclocal.m4: Ditto. * libc/*/configure: Ditto. * libc/libc.texinfo: Ditto. * libm/*/aclocal.m4: Ditto. * libm/*/configure: Ditto. * libm/libm.texinfo: Ditto. * libc/sys/linux/shared.ld: Add VERS_1.14. 2005-12-16 Jeff Johnston * libc/sys/linux/sys/stat.h: Change *stat64 prototypes to take a pointer to struct stat64 rather than struct stat. 2005-12-16 Ralf Corsepius * libc/include/stdint.h: Prefer long over int for int32_t. Use __have_long32 to set up int32_t. * libc/include/inttypes.h: Use "#if xxx" instead of "#ifdef xxx" (Sync with stdint.h). 2005-12-14 Corinna Vinschen * libc/include/sys/fcntl.h: Define O_SYNC unconditionally. Fix typo in O_NDELAY comment. 2005-12-13 Nathan Sidwell * libc/include/machine/ieeefp.h (__mt__): Renamed from __ms1__. * libc/include/machine/setjmp.h (__mt__): Likewise. * libc/machine/mt/setjmp.S: Rename ms1 reference to mt. * libc/machine/configure.in: Ditto. 2005-12-12 Nathan Sidwell * configure.host: Replace ms1 arch with mt arch. * libc/machine/mt: Renamed from ms1 dir. 2005-12-08 Shaun Jackman * libc/include/sys/types.h: Remove the ifdef armour around standard POSIX types. 2005-12-06 Ralf Corsepius * libc/sys/rtems/crt0.c: Add rtems_gxx_key_create, rtems_gxx_key_delete, rtems_gxx_getspecific, rtems_gxx_setspecific, rtems_gxx_mutex_trylock, rtems_gxx_recursive_mutex_init, rtems_gxx_recursive_mutex_lock, rtems_gxx_recursive_mutex_trylock, rtems_gxx_recursive_mutex_unlock. 2005-12-05 Christopher Faylor * libc/include/stdlib.h: Move cygwin declarations to cygwin-specific file. Declare unsetenv and _unsetenv_r when not cygwin. 2005-11-18 Jeff Johnston * libc/time/strptime.c (strptime): Don't abort for %c and %Z. Treat %c as "%a %b %e %H:%M:%S %Y" and ignore %Z. 2005-11-18 Christopher Faylor * include/sys/time.h: Move more cygwin stuff to cygwin-specific header. 2005-11-18 Christopher Faylor * include/time.h: Remove more cygwin-specific stuff. 2005-11-18 Christopher Faylor * include/time.h: Move cygwin declarations to cygwin-specific header. * include/sys/time.h: Rename cygwin include to "sys_time.h". 2005-11-17 Jeff Johnston * libc/sys/linux/dl/dl-local.h: New file based on old dlfcn.h in libc/sys/linux/include. * libc/sys/linux/dl/dlfcn.h: Moved to libc/sys/linux/include. * libc/sys/linux/dl/ldsodefs.h: Include dl-local.h instead of dlfcn.h. * libc/sys/linux/include/dlfcn.h: Replaced with dlfcn.h formerly in libc/sys/linux/dl. 2005-11-11 Christopher Faylor * libc/include/sys/time.h: For cygwin, use general header rather than specific "sys/select.h". 2005-11-08 Tom Walsh * libc/time/tzvars.c: New file. * libc/time/tzset_r.c: Moved globals into tzvars.c so other time functions needn't link in __tzset_r and its dependencies. * libc/time/Makefile.am: Add the new file. * libc/time/Makefile.in: Regenerated. 2005-11-08 Christopher Faylor * libc/include/string.h: Add cygwin-specific function declaration. 2005-11-07 Corinna Vinschen * libc/include/ieeefp.h: Add C++ guards. 2005-11-03 Jeff Johnston * libc/unix/getcwd.c: Don't use non-reentrant syscall names. * libc/unix/getlogin.c: Ditto. * libc/unix/getpass.c: Ditto. * libc/unix/getut.c: Ditto. * libc/unix/ttyname.c: Ditto. 2005-11-03 Shaun Jackman * libc/include/sys/unistd.h (readlink, symlink): Provide these prototypes by default. * libc/sys/linux/include/unistd.h (readlink): Remove this prototype. * libc/sys/linux/sys/unistd.h (readlink, symlink): New prototypes. 2005-11-01 Ralf Corsepius * libc/include/stdint.h: Cleanup #if vs. #ifdef. 2005-10-31 Darin Johnson * libm/mathfp/s_mathcnst.c: Fix endian-ness check to be correct for constants. 2005-10-28 Bob Wilson * libc/stdio/siprintf.c: Wrap long lines in ANSI_SYNOPSIS. * libc/stdio/siscanf.c: Likewise. * libc/stdio/sprintf.c: Likewise. * libc/stdio/sscanf.c: Likewise. * libc/stdio/vfprintf.c: Likewise. * libc/stdio/vfscanf.c: Likewise. * libc/stdio/viprintf.c: Likewise. * libc/stdio/viscanf.c: Likewise. 2005-10-28 Bob Wilson * libc/sys.tex (Stubs): Format examples consistently. Change sbrk example to use "_end" symbol instead of "end". Change write example to use "outbyte" instead of "writechar". 2005-10-28 Bob Wilson * libc/ctype/ctype.tex: Use hyphens as appropriate, but not otherwise. * libc/ctype/islower.c: Likewise. * libc/ctype/isupper.c: Likewise. * libc/ctype/iswalnum.c: Likewise. * libc/ctype/iswalpha.c: Likewise. * libc/ctype/iswblank.c: Likewise. * libc/ctype/iswcntrl.c: Likewise. * libc/ctype/iswdigit.c: Likewise. * libc/ctype/iswgraph.c: Likewise. * libc/ctype/iswlower.c: Likewise. * libc/ctype/iswprint.c: Likewise. * libc/ctype/iswpunct.c: Likewise. * libc/ctype/iswspace.c: Likewise. * libc/ctype/iswupper.c: Likewise. * libc/ctype/iswxdigit.c: Likewise. * libc/ctype/tolower.c: Likewise. * libc/ctype/toupper.c: Likewise. * libc/ctype/towctrans.c: Likewise. * libc/ctype/towlower.c: Likewise. * libc/ctype/towupper.c: Likewise. * libc/string/strcasecmp.c: Likewise. * libc/string/strcoll.c: Likewise. * libc/string/strings.tex: Likewise. * libc/string/strlwr.c: Likewise. * libc/string/strncasecmp.c: Likewise. * libc/string/strupr.c: Likewise. * libc/string/wcscoll.c: Likewise. * libc/string/wcslcat.c: Likewise. * libc/string/wcslcpy.c: Likewise. * libc/string/wcsnlen.c: Likewise. * libc/string/wcsstr.c: Likewise. * libc/string/wcstrings.tex: Likewise. * libc/string/wmemchr.c: Likewise. * libc/string/wmemcmp.c: Likewise. * libc/string/wmemcpy.c: Likewise. * libc/string/wmemmove.c: Likewise. * libc/string/wmemset.c: Likewise. 2005-10-28 Bob Wilson * libc/misc/unctrl.c: Replace FUNCTION description. * libc/signal/signal.c: Remove documentation for raise and _raise_r. * libc/stdio/getdelim.c: Fix spelling errors. * libc/stdio/getw.c: Put RETURNS on a separate line. Fix punctuation. * libc/stdio/putw.c: Likewise. * libc/stdlib/a64l.c: Fix formatting, spelling and punctuation in documentation. * libc/stdlib/assert.c: Do not capitalize FUNCTION description. * libc/stdlib/efgcvt.c: Add spaces to FUNCTION description. * libc/stdlib/envlock.c: Use em-dash in FUNCTION description. * libc/stdlib/mlock.c: Likewise. * libc/stdlib/mstats.c: Likewise. * libc/time/tzlock.c: Likewise. * libc/stdlib/rand.c: Use "multi-threaded" and "thread-safe" in NOTES. * libc/stdlib/rand48.c: Remove extra space in FUNCTION description and hyphenate "pseudo-random". * libc/string/bcmp.c: Remove extra blank lines in documentation. * libc/string/strncat.c: Likewise. * libc/string/memchr.c: Remove extra ">" character in documentation. * libc/string/strcspn.c: Use "characters" instead of "chars". * libc/string/strpbrk.c: Likewise. * libc/string/strerror_r.c: Capitalize "GNU". * libc/string/strnlen.c: Likewise. * libc/string/strtok.c: Fix formatting, spelling and punctuation in documentation. Use "multi-threaded" and "thread-safe" in NOTES. * libc/string/wcscat.c: Split PORTABILITY into two paragraphs. * libc/string/wcschr.c: Likewise. * libc/string/wcscmp.c: Likewise. * libc/string/wcscpy.c: Likewise. * libc/string/wcscspn.c: Likewise. * libc/string/wcslen.c: Likewise. * libc/string/wcsncat.c: Likewise. * libc/string/wcsncmp.c: Likewise. * libc/string/wcsncpy.c: Likewise. * libc/string/wcsnlen.c: Likewise. * libc/string/wcspbrk.c: Likewise. * libc/string/wcsrchr.c: Likewise. * libc/string/wcsspn.c: Likewise. * libc/string/wmemchr.c: Likewise. * libc/string/wmemcmp.c: Likewise. * libc/string/wmemcpy.c: Likewise. * libc/string/wmemset.c: Likewise. * libc/string/wmemmove.c: Likewise. Also fix FUNCTION description. * libc/string/wcswidth.c: Formatting and punctuation in documentation. * libc/string/wcwidth.c: Likewise. * libm/common/s_modf.c: Remove extra period from documentation. * libm/math/s_isnan.c: Fix formatting, grammar and punctuation in documentation. * libm/mathfp/s_isnan.c: Likewise. * libm/math/s_ldexp.c: Fix punctuation. * libm/mathfp/s_ldexp.c: Likewise. * libm/math/w_log.c: Likewise. * libm/mathfp/s_logarithm.c: Likewise. * libm/math/w_j0.c: Add spaces to FUNCTION description. * libm/mathfp/w_jn.c: Likewise. 2005-10-26 Shaun Jackman * libc/posix/scandir.c (scandir): Update the function prototype to match the header. * libc/sys/linux/linuxthreads/bits/libc-lock.h: Remove an extraneous #endif. * libc/sys/linux/sys/lock.h: Do not include machine/weakalias.h, since it's not used by this file. 2005-10-26 Jeff Johnston * libc/Makefile.am: Reorder SUBLIBS so machine and sys directories can override properly. 2005-10-20 Jeff Johnston * libc/include/math.h (HUGE_VAL, HUGE_VALF, HUGE_VALL): When gcc is 3.3 or greater, use special gcc builtins. 2005-10-20 Corinna Vinschen * libc/include/sys/time.h: Declare futimes and lutimes for Cygwin. 2005-10-18 Corinna Vinschen * libc/include/sys/features.h: Define _POSIX_MEMLOCK_RANGE for Cygwin. 2005-10-14 Jeff Johnston * libc/include/math.h (HUGE_VALF, HUGE_VALL): New. * libm/common/Makefile.am: Add s_infconst.c support. * libm/common/Makefile.in: Regenerated. * libm/common/s_infconst.c: New file with float and long double infinity support added. * libm/math/Makefile.am: Remove s_infconst.c support. * libm/math/Makefile.in: Regenerated. * libm/math/s_infconst.c: Moved to common directory. * libm/mathfp/Makefile.am: Remove s_infconst.c support. * libm/mathfp/Makefile.in: Regenerated. * libm/mathfp/s_infconst.c: Moved to common directory. 2005-10-14 Jeff Johnston * libc/sys/linux/net/gethostbydns.c (dprintf): Rename to dbgprintf to prevent conflict with new dprintf function. 2005-10-14 Jeff Johnston * libc/stdio/vfprintf.c (_VFPRINTF_R): Fix up "inf" and "nan" processing for systems that have long double support. 2005-10-14 Jeff Johnston * libc/sys/linux/sys/types.h (int8_t): Add type. 2005-10-14 Bob Wilson * libm/common/Makefile.am (doc): Do not append to $(TARGETDOC). * libm/common/Makefile.in: Regenerate. * libm/common/common.tex: Delete file. * libm/math/math.tex: Include .def files from common/. * libm/mathfp/mathfp.tex: Likewise. 2005-10-14 Bob Wilson * libc/libc.texinfo (Top): Surround this node with @ifnottex instead of @ifinfo. Update menu to add Introduction and match SUBDIRS order. (Introduction): New section. 2005-10-14 Bob Wilson * libc/reent/reent.tex (Reentrancy): Replace "Cygnus C Library" with "Red Hat newlib C Library". * libc/sys.tex (Stubs): Likewise. * libm/math/math.tex (Math): Likewise. * libm/mathfp/mathfp.tex (Math): Likewise. 2005-10-11 Shaun Jackman * libc/include/stdio.h (dprintf): New declaration. (vdprintf): Ditto. * libc/stdio/Makefile.am (GENERAL_SOURCES): Add dprintf.c and vdprintf.c. * libc/stdio/Makefile.in: Regenerate. * libc/stdio/dprintf.c: New file. * libc/stdio/vdprintf.c: New file. * libc/stdio/stdio.tex (dprintf): New entry. 2005-10-11 David Weatherford * libc/stdio/vfprintf.c (_VFPRINTF_R): Recognize 'F' format. Print "inf" and "nan" in lowercase for e/f/g formats and in uppercase for E/F/G formats. 2005-10-07 Bob Wilson * libc/stdlib/mallocr.c (mALLOc, rEALLOCc, mEMALIGn): Set errno to ENOMEM on failure. 2005-10-06 Ralf Corsepius * libc/include/stdint.h: Add [u]int_fast_t types. 2005-10-04 Ralf Corsepius * libc/include/stdint.h: Move magic to set __have_long* to the beginning. Use #if __have* instead of #if defined(__have*). Minor typo fixes. 2005-10-04 James E Wilson * libc/include/sys/dirent.h (_DIRENT_H_): Delete #include_next. Add #error. 2005-10-03 Jeff Johnston * libc/sys/linux/include/stdint.h: Include and incorporate Ralf's change below. 2005-10-03 Ralf Corsepius * libc/include/stdint.h: Use __INTMAX_TYPE__ to derive intmax_t. Use __UINTMAX_TYPE__ to derive uintmax_t. Fix minor typo. 2005-09-27 Ralf Corsepius * libc/include/stdint.h: Correct __STDINT_EXP macro incorrectly handling GCC >= 4. 2005-09-20 Jeff Johnston * libc/sys/linux/include/stdint.h: Update to match functionality of generic newlib stdint.h. 2005-09-20 Jeff Johnston * libc/include/stdint.h (__EXP): Rename to __STDINT_EXP and do not #undef the macro after it is used. Fix typos. Also change 64-bit constants to use the __have_long64 and __have_longlong64 flags to determine if long or long long constants should be used. * libc/include/inttypes.h: Include stddef.h to get wchar_t type defined. 2005-09-20 Shaun Jackman * libc/include/stdint.h: Fix typo in names of LEAST macros. 2005-09-20 Jeff Johnston * libc/sys/rtems/include/inttypes.h: Moved to... * libc/include/inttypes.h: ...here. 2005-09-19 Jeff Johnston * libc/sys/rtems/include/stdint.h: Moved to... * libc/include/stdint.h: ...here. 2005-09-08 Jeff Johnston * Makefile.am: Add include files under bits sub-directory. * Makefile.in: Regenerated. * libc/sys/linux/argp/argp-fs-xinl.c: Set __OPTIMIZE__ to actual value of 1 to be compatible with newer glibc headers. * libc/sys/linux/sys/cdefs.h: Fix to be compatible with newer glibc headers. * libc/sys/linux/sys/dirent.h: Ditto. * libc/sys/linux/argp/argp-xinl.c: Ditto. * libc/sys/linux/dl/dl-runtime.c: Make sure fixup and profile_fixup routines are marked used so they won't be optimized away. * libc/sys/linux/dl/dl-cache.c: Don't use weak_extern macro to mark functions as weak. * libc/sys/linux/dl/dl-open.c: Ditto. * libc/sys/linux/iconv/gconv_open.c: Fix to obey new gcc4 rules about lvalues. * libc/sys/linux/iconv/gconv_simple.c: Ditto. * libc/sys/linux/linuxthreads/bits/libc-lock.h: Don't use weak_extern macro to mark functions as weak. Instead always use #pragma weak. * iconvdata/jis0208.h: Fix to work with gcc4. * libc/sys/linux/dl/dl-load.c: Ditto. * libc/sys/linux/dl/dl-reloc.c: Ditto. * libc/sys/linux/dl/do-rel.h: Ditto. * libc/sys/linux/dl/dynamic-link.h: Ditto. * libc/sys/linux/include/ltdl.h: Ditto. * libc/sys/linux/machine/i386/dl-machine.h: Ditto. * libc/sys/linux/machine/i386/weakalias.h: Ditto. * libc/sys/linux/net/ns_ntoa.c: Ditto. * libc/sys/linux/bits/initspin.h: New file. * libc/sys/linux/bits/libc-lock.h: Ditto. * libc/sys/linux/bits/pthreadtypes.h: Ditto. * libc/sys/linux/bits/typesizes.h: Ditto. 2005-09-08 Eric Blake * libc/argz/argz_insert.c (argz_insert): Don't die with EINVAL when before is NULL. 2005-09-08 Brian Dessent * sf_lrint.c (lrintf): Mask 'i0' correctly when extracting mantissa. * s_lrint.c: Ditto. 2005-09-02 Jeff Johnston * libc/include/stdio.h: Add prototype for viprintf. 2005-09-01 Jeff Johnston * libm/mathfp/s_pow.c: (pow): Change code so 0 raised to any positive power results in 0. * libm/mathfp/sf_pow.c (powf): Ditto. 2005-08-31 Paul Brook * configure.host: Set have_crt0 to no for Arm targts when not providing syscalls. Set sys_dir=arm unconditionally. Default have_crt0 based on sys_dir. * configure.in: Use have_crt0. * libc/configure.in: Ditto. * libc/sys/configure.in: Ditto. * configure: Regenerate. * libc/configure: Regenerate. * libc/sys/configure: Regenerate. * libc/sys/arm/Makefile.am (lib_a_SOURCES): Add aeabi_atexit.c. Only build other files when providing syscalls. * libc/sys/arm/Makefile.in: Regenerate. * libc/sys/arm/aeabi_atexit.c: New file. 2005-08-26 Christopher Faylor * libc/include/string.h: Revert previous change. 2005-08-25 Christopher Faylor * libc/include/string.h: For Cygwin, Define strerror_r as per ISO C. 2005-08-22 Shaun Jackman * libc/include/_syslist.h: If HAVE_OPENDIR is not defined, define _opendir as opendir, _readdir as readdir, and _closedir as closedir so that the implementations in libc/posix will be used. 2005-08-10 DJ Delorie * MAINTAINERS (CPU Ports): Add CPU port maintainer section. 2005-08-10 Stephen Huw Clarke * libm/common/sf_fmax.c: Fix to properly handle NaNs. * libm/common/s_max.c: Ditto. * libm/common/sf_fmin.c: Ditto. * libm/common/s_min.c: Ditto. 2005-08-10 DJ Delorie * configure.host: Add m32c support. * libc/include/machine/ieeefp.h: Likewise. * libc/include/machine/setjmp.h: Likewise. * libc/include/sys/config.h: Likewise. * libc/machine/m32c: New directory, Renesas R8C/M16C/M32C support. * libc/machine/m32c/aclocal.m4: New file. * libc/machine/m32c/configure: Ditto. * libc/machine/m32c/configure.in: Ditto. * libc/machine/m32c/Makefile.am: Ditto. * libc/machine/m32c/Makefile.in: Ditto. * libc/machine/m32c/setjmp.S: Ditto. 2005-08-02 Bob Wilson * libm/math/ef_hypot.c (__ieee754_hypotf): Add missing exponent bias to the value for 2^126. 2005-07-26 Hans-Peter Nilsson * libc/machine/cris/libcdtor.c (defaultors): Mark artificially as used. 2005-07-20 Bob Wilson Darin Petkov * libm/math/ef_atan2.c (pi, pi_lo): Use round-to-nearest value of pi. 2005-07-19 Paul Brook * libc/sys/arm/crt0.S: Ensure doubleword stack alignment. 2005-07-18 Joseph S. Myers * testsuite/lib/checkoutput.exp (newlib_check_output): Use test names after PASS and FAIL which do not depend on source directory name or on whether test passed or failed. * testsuite/lib/passfail.exp (newlib_pass_fail): Likewise. 2005-07-08 Ola Hugosson * libc/string/wcsspn.c (wcsspn): Add missing increment of q. 2005-07-07 Shaun Jackman * libc/unix/ttyname.c (ttyname): Avoid calling _closedir twice for the same directory. _closedir calls free, and freeing the same pointer twice may cause a crash. 2005-07-06 Aldy Hernandez * configure.host: Added entry for ms1*. * libc/include/machine/ieeefp.h: Handle ms1. * libc/include/machine/setjmp.h (_JBLEN): Define for ms1. * libc/machine/ms1/aclocal.m4: New. * libc/machine/ms1/configure: New. * libc/machine/ms1/configure.in: New. * libc/machine/ms1/Makefile.am: New. * libc/machine/ms1/Makefile.in: New. * libc/machine/ms1/setjmp.S: New. 2005-07-04 Mark Mitchell * Makefile.am (site.exp): Set tmpdir. * Makefile.in: Regenerated. * testsuite/lib/checkoutput.exp (newlib_check_output): Put executables in $tmpdir. * testsuite/lib/flags.exp (libgloss_link_flags): Use the original libgloss version if not running in the build directory. * testsuite/lib/newlib.exp (newlib_init): Put testglue.o in $tmpdir. * testsuite/lib/passfail.exp (newlib_pass_fail): Put executables in $tmpdir. 2005-06-28 Dave Korn * libm/common/s_lrint.c (lrint): Fix signed-vs-unsigned comparison and miscalculation caused by fp representation of zero. * libm/common/sf_lrint.c (lrintf): Likewise. 2005-06-16 Christopher Faylor * libc/stdio/vfprintf.c (cvt): Don't rely on pointer aliasing to determine characteristics of long double. Use a union instead. * ldtoa.c (_ldtoa_r): Ditto. (_ldcheck): Ditto. (_strtold): Ditto. (union uconv): New union. 2005-06-03 Jeff Johnston * libc/stdlib/mallocr.c (MALLOC_COPY): Switch to use memmove instead of memcpy. 2005-05-12 Jeff Johnston * configure.host (mn10300-*): Add long long I/O support by default. 2005-05-12 Jeff Johnston * libc/sys/linux/getpwuid.c: Removed. * libc/sys/linux/getpwnam.c: Removed. * libc/sys/linux/getpwent.c: New file containing logic from files removed above. This allows overriding of file in libc/unix. * libc/sys/linux/Makefile.am: Support changes above. * libc/sys/linux/Makefile.in: Regenerated. 2005-04-28 Jeff Johnston * libc/stdio/vfscanf.c (__svfscanf_r): Fix code thinko when checking for multiple flags. 2005-04-18 Hans-Peter Nilsson * configure.host : Set default_newlib_io_long_long="yes". 2005-04-08 Jeff Johnston * libc/include/libgen.h: New file. 2005-04-08 Shaun Jackman * libc/unix/Makefile.am: Add support for basename and dirname. * libc/unix/Makefile.in: Regenerated. * libc/unix/basename.c: New file. * libc/unix/dirname.c: New file. 2005-04-07 Shaun Jackman * libc/sys/linux/inode.c (lchown): New function. 2005-04-07 Shaun Jackman * libc/unix/Makefile.am (LIB_OBJS): Include all the ELIX objects if no ELIX level is defined. * libc/unix/Makefile.in: Regenerated. 2005-04-05 Dave Korn * libc/stdio/vfscanf.c (__svfscanf_r): If an error occurs processing something that looks like a "NaN", put back the characters processed. 2005-04-01 Corinna Vinschen * libc/stdlib/strtod.c (_strtod_r): Never change s00. 2005-03-23 Christopher Faylor * configure.host: For cygwin, redefine CC with cygwin include directory first to mimic the behavior of the top-level configury. Move include directory out of newlib_cflags. 2005-03-22 Jeff Johnston * configure.host: For arc, set -DREENTRANT_SYSCALLS_PROVIDED flag on. * libc/sys/arc/syscalls.c: Change functions to use __errno_r rather than errno. 2005-03-22 Christopher Faylor * libc/include/machine/_types.h: Make trivial change to comment to avoid a spurious warning from gcc. 2005-03-21 Nicholas Wourms * libc/stdio/vfprintf.c: Move newlib.h before _WANT_IO_POS_ARGS test, since _WANT_IO_POS_ARGS is now defined in there. Remove duplicate reent.h include. 2005-03-18 Hans-Peter Nilsson Corinna Vinschen * libc/include/ctype.h: Remove invalid +1 offset from ctype macro references to __ctype_ptr. (_ctype_): Move declaration outside #ifndef __cplusplus. 2005-03-18 Corinna Vinschen * libc/include/machine/setjmp.h (sigsetjmp): Use GCC extension to evaluate first parameter only once. (siglongjmp): Ditto. 2005-03-17 Jeff Johnston * configure.in: Add new check to see if compiler supports aliasing of arrays and define _HAVE_ARRAY_ALIASING if true. * configure: Regenerated. * Makefile.in: Ditto. * newlib.hin: Add _HAVE_ARRAY_ALIASING. * libc/ctype/ctype_.c: Check for _HAVE_ARRAY_ALIASING before aliasing the _ctype_ array to _ctype_b. * libc/include/ctype.h: Change macros to use __ctype_ptr. Mark _ctype_ as deprecated. 2005-03-17 Hans-Peter Nilsson * configure.host (newlib_cflags) : Add -DCOMPACT_CTYPE. 2005-03-06 Ralf Corsepius * libc/sys/rtems/include/inttypes.h: New file. * libc/sys/rtems/include/stdint.h: Ditto. 2005-03-06 Ralf Corsepius * libc/string/memcmp.c: Fix to avoid pointer signedness warning. 2005-03-06 Ralf Corsepius * libc/include/machine/_types.h: New file. * libc/include/sys/types.h: Do not check for __rtems__ when including . Remove some redundant declarations now that is included. * libc/sys/rtems/machine/_types.h: Removed. Replaced with shared header file. 2005-02-25 Ralf Corsepius * libm/common/fdlibm.h (FLT_UWORD_MAX, FLT_UWORD_HALF_MAX): Add L qualifier for these long constants. 2005-02-25 Eric Blake * libc/include/time.h (__tzrule_struct): Make offset long, since a 16-bit int overflows on a 12-hour offset. * libc/sys/linux/include/time.h: Ditto. * libc/time/mktime.c (mktime): Use new type of __tzrule.offset. * libc/time/mktm_r.c: Ditto. * libc/time/gettzinfo.c: Ditto. * libc/time/strftime.c (strftime): Fix '%x' to deal with negative years. Fix '%z' to use long, not int. 2005-02-24 Ralf Corsepius * libm/common/s_fpclassify.c: Use __uint32_t instead of int to manipulate float values in integer form. * libm/common/sf_round.c: Ditto. 2005-02-24 Ralf Corsepius * libc/include/sys/types.h [__rtems__]: Include new header file machine/_types.h. * libc/include/machine/types.h: Ditto. * libc/sys/rtems/machine/_types.h: New file. 2005-02-23 Corinna Vinschen * libc/include/time.h (_timezone): Change to long also for Cygwin. (timezone): Drop cast from definition. 2005-02-23 Jeff Johnston * libc/include/time.h [!CYGWIN](_timezone): Change to long. (__tzrule_type, __tzinfo_type): New types. (__gettzinfo): New function. * libc/sys/linux/include/time.h: Ditto. * libc/time/Makefile.am: Add gettzinfo.c. * libc/time/Makefile.in: Regenerated. * libc/time/local.h: Moved __tzrule_type to time.h. * libc/time/mktime.c: Call __gettzinfo to reference __tznorth, __tzyear, and __tzrule array. * libc/time/mktm_r.c: Ditto. * libc/time/strftime.c: Ditto. * libc/time/tzset_r.c: Ditto. Also remove definition of __tzrule which is now in gettzinfo.c. Change _timezone references to not cast to time_t. * libc/time/gettzinfo.c: New file. 2005-02-23 Corinna Vinschen * libc/include/sys/unistd.h: Define getpeereid for Cygwin. 2005-02-22 Corinna Vinschen * libc/include/sys/unistd.h: Define fdatasync also for Cygwin. 2005-02-16 Eric Blake * libc/time/time.tex: Improve the documentation. * libc/time/strftime.c: Improve the documentation. (iso_year_adjust): New helper function. (strftime): Simplify '%E' and '%O'. Change '%c' to use recursion. Fix '%C', '%y', and '%Y' to deal with years with more than 4 characters. Combine '%d' and '%e'. Implement '%D', '%F', '%g', '%G', '%n', '%R', '%t', '%T', '%u', '%V', '%X', and '%z'. Avoid core dumps on valid inputs (maxsize == 0, or tim_p->tm_isdst > 1). 2005-02-08 Corinna Vinschen * libc/include/pwd.h (struct passwd): Change pw_uid and pw_gid members to uid_t and gid_t according to SUSv3. * libc/include/sys/time.h (utimes): Change second parameter to const according to SUSv3. 2005-02-07 Antony King * libc/stdio/clearerr.c (clearerr): Ensure CHECK_INIT() is called before _flockfile to prevent lock object use before initialisation. _REENT_SMALL_CHECK_INIT() and CHECK_INIT() take a struct _reent * instead of a FILE *. * libc/stdio/fclose.c (_fclose_r): Ditto. * libc/stdio/feof.c (feof): Ditto. * libc/stdio/ferror.c (ferror): Ditto. * libc/stdio/fflush.c (fflush): Ditto. * libc/stdio/fgetc.c (fgetc): Ditto. * libc/stdio/fgets.c (fgets): Ditto. * libc/stdio/fileno.c (fileno): Ditto. * libc/stdio/fputc.c (fputc): Ditto. * libc/stdio/fputs.c (fputs): Ditto. * libc/stdio/fread.c (fread): Ditto. * libc/stdio/freopen.c (_freopen_r): Ditto. * libc/stdio/fseek.c (_fseek_r): Ditto. * libc/stdio/ftell.c (_ftell_r): Ditto. * libc/stdio/fwrite.c (fwrite): Ditto. * libc/stdio/getc.c (getc): Ditto. * libc/stdio/getdelim.c (__getdelim): Ditto. * libc/stdio/putc.c (putc): Ditto. * libc/stdio/setvbuf.c (setvbuf): Ditto. * libc/stdio/ungetc.c (_ungetc_r): Ditto. * libc/stdio/vfprintf.c (_VFPRINTF_R): Ditto. * libc/stdio64/freopen64.c (_freopen64_r): Ditto. * libc/stdio64/fseeko64.c (_fseeko64_r): Ditto. * libc/stdio64/ftello64.c (_ftello64_r): Ditto. * libc/stdio/local.h (CHECK_INIT): Argument is now a struct _reent * instead of a FILE * and so replace incorrect use of _REENT with argument. * libc/sys/arm/syscalls.c (CHECK_INIT): Ditto. * libc/stdio/getchar.c (getchar): _REENT_SMALL_CHECK_INIT() and CHECK_INIT() take a struct _reent * instead of a FILE *. * libc/stdio/iprintf.c (iprintf, _iprintf_r): Ditto. * libc/stdio/iscanf.c (iscanf, _iscanf_r): Ditto. * libc/stdio/perror.c (perror): Ditto. * libc/stdio/printf.c (printf, _printf_r): Ditto. * libc/stdio/putchar.c (putchar): Ditto. * libc/stdio/puts.c (puts): Ditto. * libc/stdio/refill.c (__srefill): Ditto. * libc/stdio/scanf.c (scanf, _scanf_r): Ditto. * libc/stdio/vfscanf.c (VFSCANF, _VFSCANF_R): Ditto. * libc/stdio/viprintf.c (viprintf, _viprintf_r): Ditto. * libc/stdio/viscanf.c (viscanf, _viscanf_r): Ditto. * libc/stdio/vprintf.c (vprintf, _vprintf_r): Ditto. * libc/stdio/vscanf.c (vscanf, _vscanf_r): Ditto. * libc/stdio/wbuf.c (__swbuf): Ditto. * libc/stdio/wsetup.c (__swsetup): Ditto. * libc/stdlib/mallocr.c (malloc_stats): Ditto. * libc/stdlib/mstats.c (_mstats_r): Ditto. * libc/include/sys/reent.h (_REENT_SMALL_CHECK_INIT): Ditto. * libc/machine/powerpc/vfscanf.c (vfscanf): Ditto. * libc/stdio/fgetpos.c (_fgetpos_r): Removed unnecessary calls to _flockfile and _funlockfile; rely on locking in _ftell_r. * libc/stdio64/fgetpos64.c (_fgetpos64_r): Ditto (_ftello64_r). * libc/machine/powerpc/vfprintf.c (__sbprintf): Removed unnecessary initialision of _data field in FILE structure. * libc/machine/powerpc/vfprintf.c (VFPRINTF): Added CHECK_INIT() call. 2005-02-07 Jeff Johnston * libc/stdio/findfp.c (__sinit): Protect with new lock. (__sinit_lock): New lock. (__sinit_lock_acquire, __sinit_lock_release): New functions. * libc/stdio/local.h: Add reference to new __sinit locking functions. 2005-02-07 Jeff Johnston * libc/include/math.h (isfinite, isnormal, isunordered): Change input variable names to avoid mixups with nesting macros. 2005-01-27 Hans-Peter Nilsson * configure.host: Add support for cris-*-* and crisv32-*-*. * libc/include/machine/ieeefp.h: Ditto. * libc/include/machine/setjmp.h: Ditto. * libc/machine/cris/configure.in, libc/machine/cris/Makefile.am, libc/machine/cris/libcdtor.c, libc/machine/cris/setjmp.c, libc/machine/cris/memmove.c, libc/machine/cris/memcpy.c, libc/machine/cris/memset.c, libc/machine/cris/include/pthread.h, libc/machine/cris/sys/signal.h, libc/machine/cris/sys/fcntl.h, libc/machine/cris/sys/errno.h, libc/machine/cris/aclocal.m4, libc/machine/cris/configure, libc/machine/cris/Makefile.in: New files. 2005-01-27 Hans-Peter Nilsson * testsuite/newlib.string/memmove1.c: New test. 2005-01-27 Hans-Peter Nilsson * testsuite/include/check.h: Include stdlib.h. 2005-01-27 Hans-Peter Nilsson * Makefile.am (stmp-targ-include): Support include header files from machine directories. (install-data-local): Ditto. * Makefile.in: Regenerate. 2005-01-24 Jeff Johnston * libc/include/string.h: Remove Linux-specific declaration of strsignal and add #include . * libc/include/sys/string.h: New file. * libc/include/sys/linux/sys/string.h: New file with strsignal declaration deleted above. 2005-01-20 Jeff Johnston * libc/time/strftime.c (strftime): Change %r and %x to be compliant to POSIX standard for "C" locale. Allow %E and %O modifiers to be ignored as long as they precede valid specifiers according to POSIX. 2005-01-19 Shaun Jackman * libc/stdlib/setenv_r.c (_setenv_r): Call tzset() if the TZ environment variable is set. 2005-01-19 Shaun Jackman * tzset_r.c (_tzname): Add a comma. 2005-01-18 Aldy Hernandez * libc/machine/powerpc/vfprintf.c: Use _REENT when calling _VFPRINTF_R. 2005-01-07 Paul Brook * configure.in: Add test for .init_array. * configure: Regenerate. * newlib.hin: Add HAVE_INITFINI_ARRAY. * libc/misc/Makefile.am: Add init.c * libc/misc/Makefile.in: Regenerate. * libc/misc/init.c: New file. * libc/sys/arm/crt0.S: Call __libc_{init,fini}_array instead of _init/_fini if they exist. 2005-01-06 Jeff Johnston * libc/stdlib/strtod.c (_strtod_r): Add NaN support. * (strtof): Ditto. * libc/stdio/vfscanf.c (__svfscanf_r): Ditto. * Makefile.am (MATHOBJS_IN_LIBC): Add s_nan and sf_nan functions for use by strtod and strtof. * Makefile.in: Regenerated. 2005-01-06 Hans-Peter Nilsson * libc/stdio/ftell.c (ftell_r): Add parenthesis for __SWR bit-test in combination with NULL test. 2005-01-06 Hans-Peter Nilsson * README: Fix typo of LGPL. Change "license" to "copyright". 2004-12-17 Jeff Johnston * NEWS: Update with 1.13.0 info. * README: Ditto. * acinclude.m4: Change version number to 1.13.0. * aclocal.m4: Regenerated. * configure: Ditto. * doc/aclocal.m4: Ditto. * doc/configure: Ditto. * libc/*/aclocal.m4: Ditto. * libc/*/configure: Ditto. * libc/libc.texinfo: Ditto. * libm/*/aclocal.m4: Ditto. * libm/*/configure: Ditto. * libm/libm.texinfo: Ditto. * libc/sys/linux/shared.ld: Add VERS_1.13. 2004-12-17 Christian Groessler * libc/machine/z8k/memcmp.S: New file. * libc/machine/z8k/memcpy.S: Ditto. * libc/machine/z8k/memmove.S: Ditto. * libc/machine/z8k/memset.S: Ditto. * libc/machine/z8k/Makefile.am: Add new files. * libc/machine/z8k/Makefile.in: Regenerated. * libc/machine/z8k/setjmp.S: Fix indirect register usage in Z8002 part. Implement Z8002 stdcall version. 2004-12-13 Jeff Johnston * libc/stdio/fread.c (fread): For unbuffered I/O, attempt a low-level read if we don't get the full amount of bytes so EOF or error flags will be set. 2004-12-09 Alex Mogilnikov * libc/time/tzset_r (_tzset_r): Properly skip over '/' when it is detected. 2004-12-08 Alex Mogilnikov * libc/time/tzset_r (_tzset_r): Fix loop. 2004-12-08 Alex Mogilnikov * libc/time/mktm_r (_mktm_r): Fix overflow calculation for m_day. (__tzcalc_limits): Fix reference to month array to be zero-based. 2004-12-07 Jeff Johnston * libc/sys/linux/sys/unistd.h: Add prototypes for ftruncate, truncate, and usleep. 2004-12-03 Jeff Johnston * Makefile.am (libc_la_LDFLAGS): Add -lgcc to handle any libgcc dependencies. (libm_la_LDFLAGS): Ditto. * Makefile.in: Regenerated. 2004-12-03 Shaun Jackman * libc/sys/linux/linuxthreads/Makefile.am (install-data-local): Fix our link to use readlink so as to preserve any relative link created by install-toollibLIBRARIES. * libc/sys/linux/linuxthreads/Makefile.in: Regenerated. 2004-12-02 Shaun Jackman * libc/sys/linux/stdlib/glob.c: Include which defines time_t before including sys/stat.h, which uses it. * libc/sys/linux/sys/stat.h: Include and just prior to definition of __KERNEL__ so as to allow building on Debian Linux where otherwise, mktime would be redefined. 2004-11-26 Paul Brook * libc/sys/arm/crt0.S (_start): Add .cantunwind annotation. 2004-11-24 Jeff Johnston * libc/include/stdlib.h (putenv, _putenv_r): Change to remove const for value string parameter to match Single Unix and glibc. * libc/stdlib/putenv.c: Ditto. * libc/stdlib/putenv_r.c: Ditto. 2004-11-24 Jeff Johnston * libc/stdio/Makefile.am: Fix missing vfscanf. * libc/stdio/Makefile.in: Regenerated. 2004-11-23 Jeff Johnston * libc/include/stdio.h: Add new iprintf and iscanf variants. Also do some reordering. * libc/machine/powerpc/vfscanf.c: Remove __sccl function. * libc/stdio/Makefile.am: Add support for new iprintf and iscanf family functions. * libc/stdio/Makefile.in: Regenerated. * libc/stdio/fiprintf.c: Remove doc to siprintf.c. * libc/stdio/iprintf.c: Ditto. * libc/stdio/local.h (__svfiscanf_r): New prototype. * libc/stdio/siprintf.c: Add docs for various iprintf family functions. * libc/stdio/sniprintf.c: Move docs to siprintf.c. * libc/stdio/stdio.tex: Add new functions. * libc/stdio/vfscanf.c: Split out __sccl function to separate file and add special name defines so this file can be used to build vfiscanf.o. * libc/stdio/asiprintf.c: New file. * libc/stdio/fiscanf.c: Ditto. * libc/stdio/iscanf.c: Ditto. * libc/stdio/sccl.c: Ditto. * libc/stdio/siscanf.c: Ditto. * libc/stdio/vasiprintf.c: Ditto. * libc/stdio/viprintf.c: Ditto. * libc/stdio/viscanf.c: Ditto. * libc/stdio/vsiprintf.c: Ditto. * libc/stdio/vsiscanf.c: Ditto. * libc/stdio/vsniprintf.c: Ditto. 2004-11-19 Shaun Jackman * libc/include/stdio.h: Add sniprintf. * libc/stdio/Makefile.am: Add sniprintf.c. * libc/stdio/Makefile.in: Regenerated. * libc/stdio/sniprintf.c: New file. * libc/stdio/stdio.tex: Add sniprintf. 2004-11-17 Christopher Faylor * libc/stdio/refill.c (__srefill): Try again after EOF on Cygwin. Clear EOF flag if successful. 2004-10-28 Christopher Faylor * libc/include/sys/signal.h: Move include to bottom of file so that all relevant definitions have been performed for use in the include. 2004-10-26 Jason Tishler * libc/stdio/fread.c (fread): Fix return value for unbuffered fread. 2004-10-25 Ralf Corsepius * libc/include/machine/setjmp.h: Add AVR support. * libc/sys/rtems/crt0.S [__AVR__]: Add __stack. 2004-10-08 Jeff Johnston * libc/include/sys/signal.h: If didn't include this header file, include to account for applications that take advantage that the two header files are the same in glibc. 2004-10-05 Tomer Levi * configure.host: Add support for crx. * libc/include/machine/ieeefp.h: Ditto. * libc/include/machine/setjmp.h: Ditto. * libc/machine/crx/Makefile.am: New file. * libc/machine/crx/configure.in: Ditto. * libc/machine/crx/setjmp.S: Ditto. * libc/machine/crx/getenv.c: Ditto. * libc/machine/crx/aclocal.m4: Generate. * libc/machine/crx/configure: Ditto. * libc/machine/crx/Makefile.in: Ditto. * libc/machine/crx/sys/asm.h: New file. * libc/machine/crx/sys/libh.h: Ditto. * libc/machine/crx/sys/syscall.h: Ditto. 2004-10-05 Jeff Johnston * Makefile.am (stmp-targ-include): Support sys header files from machine directories. * Makefile.in: Regenerated. 2004-10-04 Jeff Johnston * libc/stdio/vfscanf.c (__svfscanf_r): For int conversions, count skipped zero characters as part of the nread count for %n. * libc/machine/powerpc/vfscanf.c: Ditto. 2004-09-24 Jeff Johnston * libc/stdio/local.h: Include . 2004-09-24 Corinna Vinschen * libc/stdio/fread.c (fread): Include . 2004-09-22 Jeff Johnston * libc/stdio/fread.c (fread): For non-space-optimized case, add special code for unbuffered files to use user buffer and only require one low-level system read. 2004-09-21 Ian Lance Taylor * libc/machine/xscale/setjmp.S: New file, copied from libc/machine/arm/setjmp.S. * libc/machine/xscale/Makefile.am (lib_a_SOURCES): Add setjmp.S. * libc/machine/xscale/Makefile.in: Regenerate. 2004-09-16 Antony King * libc/include/sys/lock.h: Replaced empty {} with (0) to conform with locking API. * libc/include/sys/stdio.h: (_flockfile)[!_SINGLE_THREAD]: Add check for__SSTR in _flags and if set, skip lock request. (_funlockfile)[!SINGLE_THREAD]: Ditto. * libc/stdio/local.h (CHECK_INIT): Added check that _REENT is not NULL. * libc/stdio/siprintf.c (siprintf, _siprintf_r): Added missing initialisation of _file to -1 in local FILE. * libc/stdio/snprintf.c (snprintf, _snprintf_r): Ditto. * libc/stdio/sscanf.c (sscanf, _sscanf_r): Ditto. * libc/stdio/vsnprintf.c (vsnprintf, _vsnprintf_r): Ditto. * libc/stdio/vsscanf.c (_vsscanf_r): Ditto. * libc/stdio/sscanf.c (sscanf, _sscanf_r): Added __SSTR flag to _flags in local FILE to prevent locking. * libc/stdio/vsscanf.c (_vsscanf_r): Ditto. 2004-09-16 Antony King * libc/stdio/fwalk.c (_fwalk): Remove check for _GLOBAL_REENT and only walk the reentrancy parameter. (_fwalk_reent): Ditto. * libc/stdlib/exit.c: Remove out of date _REENT_ONLY check. 2004-09-16 Antony King * libc/stdio64/freopen64.c: Remove casting of fp lock to _LOCK_RECURSIVE_T. 2004-09-16 Antony King * libc/time/tzlock.c: Add default stubs that use generic locking code. 2004-09-16 Antony King * libc/ctype/ctype.tex: Added missing documentation. * libc/stdio/stdio.tex Ditto. * libc/stdlib/stdlib.tex Ditto. * libc/string/strings.tex Ditto. * libc/time/time.tex: Ditto. * libc/stdio/setbuffer.c: Removed setlinebuf documentation. 2004-09-15 Corinna Vinschen * libc/reent/impure.c (reent_data): Define as alias to impure_data when building for Cygwin. * libc/include/sys/reent.h (_GLOBAL_REENT): Revert definition to _global_impure_ptr. 2004-09-15 Jeff Johnston * configure.host: Reverting 2004-09-14 change as fix has occurred on Cygwin side. * configure.in: Ditto. * libc/configure.in: Ditto. * libc/sys/configure.in: Ditto. * configure: Ditto. * libc/configure: Ditto. * libc/sys/configure: Ditto. * libc/include/sys/reent.h: Ditto. * libc/stdlib/__atexit.c: Ditto. * libc/stdlib/__call_atexit.c: Ditto. * libc/stdlib/cxa_atexit.c: Ditto. * libc/stdlib/cxa_finalize.c: Ditto. * libc/sys/cygwin/Makefile.am: Removed again. * libc/sys/cygwin/Makefile.in: Ditto. * libc/sys/cygwin/aclocal.m4: Ditto. * libc/sys/cygwin/configure: Ditto. * libc/sys/cygwin/configure.in: Ditto. * libc/sys/cygwin/dummy.c: Ditto. * libc/sys/cygwin/sys/reent.h: Ditto. 2004-09-14 Jeff Johnston * configure.host: Add Cygwin sys directory. * configure.in: Do not set CRT0 for cygwin. * libc/configure.in: Ditto. * libc/sys/configure.in: Ditto. * configure: Regenerated. * libc/configure: Ditto. * libc/sys/configure: Ditto. * libc/include/sys/reent.h: Add __REENT_HAS_CXA_SUPPORT flag. * libc/stdlib/__atexit.c: Keep cxa support protected by new __REENT_HAS_CXA_SUPPORT flag. * libc/stdlib/__call_atexit.c: Ditto. * libc/stdlib/cxa_atexit.c: Ditto. * libc/stdlib/cxa_finalize.c: Ditto. * libc/sys/cygwin/Makefile.am: New file. * libc/sys/cygwin/Makefile.in: Ditto. * libc/sys/cygwin/aclocal.m4: Ditto. * libc/sys/cygwin/configure: Ditto. * libc/sys/cygwin/configure.in: Ditto. * libc/sys/cygwin/dummy.c: Ditto. * libc/sys/cygwin/sys/reent.h: Ditto. This file is stabilized version of reent.h. 2004-09-13 Artem B. Bityuckiy * libc/iconv/iconv.tex: Updated with new content. * libc/iconv/lib/iconvnls.c: Reference ICONV_DEFAULT_NLSPATH instead of NLS_DEFAULT_NLSPATH. * libc/iconv/lib/iconvnls.h: Fix typo. * libc/include/sys/iconvnls.h: New file. 2004-09-09 Paul Brook * libc/include/sys/reent.h (struct _on_exit_args): Add _dso_handle and _is_cxa. (struct _atexit): Add _next when _REENT_SMALL. (struct _reent): Add _atexit0 when _REENT_SMALL. (_REENT_INIT_PTR): Adjust. * libc/stdlib/Makefile.am (GENERAL_SOURCES): Add __atexit.c and __call_exit.c. (EXTENDED_SOURCES): Add cxa_atexit.c and cxa_finalize.c. * libc/stdlib/Makefile.in: Regenerate. * libc/stdlib/__atexit.c: New file. * libc/stdlib/__call_atexit.c: New file. * libc/stdlib/atexit.h: Remove old definitions. Add new. * libc/stdlib/atexit.c (atexit): Use __register_exitproc. * libc/stdlib/cxa_atexit.c: New file. * libc/stdlib/cxa_finalize.c: New file. * libc/stdlib/exit.c (exit): Use __call_exitprocs. * libc/stdlib/on_exit.c (on_exit): Use __register_exitproc. 2004-09-09 Jeff Johnston * libc/reent/reent.c [_REENT_SMALL]: Fix reference to _on_exit_args_ptr. 2004-08-23 Jeff Johnston * libc/include/sys/unistd.h (getpass): Change prototype to use const instead of __const. 2004-08-16 Nathan Sidwell * libc/stdio/vfscanf.c (_NO_LONGLONG): Move out of FLOATING_POINT #if. 2004-08-12 Jeff Johnston * libc/sys/linux/sys/types.h (u64): New typedef to allow building on linux systems with glibc 2.3.3 installed. * libc/sys/linux/dl/dl-runtime.c: Fix prototypes for fixup and profile_fixup so newlib can build on fc3 system. 2004-07-30 Alexandre Oliva Introduce SH2a support. 2004-03-16 Corinna Vinschen * libc/include/machine/ieeefp.h: Define _DOUBLE_IS_32BITS for __SH2A_SINGLE_ONLY__, too. * libc/machine/sh/asm.h: Define DELAYED_BRANCHES for __SH2A__, too. 2004-02-24 Corinna Vinschen * libc/sys/sh/crt0.S (start_l): Support sh2a-nofpu. Fix comments. 2004-02-10 DJ Delorie * libc/sys/sh/crt0.S (start_l): Support sh2a. 2004-07-29 Jeff Johnston * libc/time/strptime.c: Correct full-name of "March" typo. 2004-07-16 Anil Paranjpe * configure.host (h8300*-*-*): Default long long printing support. 2004-07-16 Jeff Johnston * libc/stdio/fvwrite.c (_sfvwrite): For asprintf family calls, if realloc fails, free up buffer as it is no longer used. 2004-07-07 Artem B. Bityuckiy * libc/iconv/iconv.tex: Updated to represent recent changes. * libc/iconv/lib/iconv.c: Documentation updated. 2004-07-07 Nick Clifton * configure.host (newlib_cflags): Define PREFER_SIZE_OVER_SPEED for xStormy16. 2004-07-06 Chris Demetriou * configure.host (mips*-*-elf*): Default long long printing support. 2004-07-05 Jeff Johnston * libc/Makefile.am (libc.dvi): Add target and specify same dependencies as libc.info. * libc/Makefile.in: Regenerated. * libm/Makefile.am (libm.dvi): Add target and specify same dependencies as libm.info. * libm/Makefile.in: Regenerated. 2004-06-29 Artem B. Bityuckiy * acinclude.m4: Move --enable-newlib-iconv option back here. * configure.in: Remove --enable-newlib-iconv option. Don't tie iconv support to --enable-newlib-mb. * aclocal.m4: Regenerated. * configure: Ditto. * doc/aclocal.m4, doc/configure: Ditto. * iconvdata/aclocal.m4, iconvdata/configure: Ditto. * libm/*/aclocal.m4: Ditto. * libm/*/configure: Ditto. * libc/*/aclocal.m4: Ditto. * libc/*/configure: Ditto. 2004-06-25 Artem B. Bityuckiy * acinclude.m4: Move iconv options into configure.in. * aclocal.m4: Regenerated. * configure: Ditto. * configure.in: Add iconv options. * newlib.hin: Add new iconv encodings and remove deleted ones. * doc/aclocal.m4: Regenerated. * doc/configure: Ditto. * iconvdata/aclocal.m4: Ditto. * iconvdata/configure: Ditto. * libc/iconv: Design change. New size-optimized ccs format. * libc/iconv/AUTHORS: Removed. * libc/iconv/COPYING: Ditto. * libc/iconv/README.ORIGINAL: Ditto. * libc/iconv/README.TODO: Ditto. * libc/iconv/charset.aliases: Ditto. * libc/iconv/encoding.aliases: New file. * libc/iconv/Makefile.am: Updated. * libc/iconv/Makefile.in: Regenerated. * libc/iconv/iconv.tex: Updated. * libc/iconv/ccs/Makefile.am: Ditto. * libc/iconv/ccs/Makefile.in: Regenerated. * libc/iconv/ccs/big5.c: Updated. * libc/iconv/ccs/cns11643_plane1.c: Ditto. * libc/iconv/ccs/cns11643_plane14.c: Ditto. * libc/iconv/ccs/cns11643_plane2.c: Ditto. * libc/iconv/ccs/cp775.c: Ditto. * libc/iconv/ccs/cp850.c: Ditto. * libc/iconv/ccs/cp852.c: Ditto. * libc/iconv/ccs/cp855.c: Ditto. * libc/iconv/ccs/cp866.c: Ditto. * libc/iconv/ccs/iso_8859_1.c: Ditto. * libc/iconv/ccs/README.CCS.SOURCES: Removed. * libc/iconv/ccs/gb_2312_80.c: Ditto. * libc/iconv/ccs/iconv_mktbl: Ditto. * libc/iconv/ccs/jis_x0201.c: Ditto. * libc/iconv/ccs/jis_x0208_1983.c: Ditto. * libc/iconv/ccs/shift_jis.c: Ditto. * libc/iconv/ccs/us_ascii.c: Ditto. * libc/iconv/ccs/ccs.h: New file. * libc/iconv/ccs/ccsbi.c: Ditto. * libc/iconv/ccs/ccsbi.h: Ditto. * libc/iconv/ccs/ccsnames.h: Ditto. * libc/iconv/ccs/iso_8859_10.c: Ditto. * libc/iconv/ccs/iso_8859_11.c: Ditto. * libc/iconv/ccs/iso_8859_13.c: Ditto. * libc/iconv/ccs/iso_8859_14.c: Ditto. * libc/iconv/ccs/iso_8859_3.c: Ditto. * libc/iconv/ccs/iso_8859_6.c: Ditto. * libc/iconv/ccs/iso_8859_7.c: Ditto. * libc/iconv/ccs/iso_8859_8.c: Ditto. * libc/iconv/ccs/iso_8859_9.c: Ditto. * libc/iconv/ccs/iso_ir_111.c: Ditto. * libc/iconv/ccs/jis_x0201_1976.c: Ditto. * libc/iconv/ccs/jis_x0208_1990.c: Ditto. * libc/iconv/ccs/koi8_ru.c: Ditto. * libc/iconv/ccs/koi8_uni.c: Ditto. * libc/iconv/ccs/mktbl.pl: Ditto. * libc/iconv/ccs/win_1250.c: Ditto. * libc/iconv/ccs/win_1251.c: Ditto. * libc/iconv/ccs/win_1252.c: Ditto. * libc/iconv/ccs/win_1253.c: Ditto. * libc/iconv/ccs/win_1254.c: Ditto. * libc/iconv/ccs/win_1255.c: Ditto. * libc/iconv/ccs/win_1256.c: Ditto. * libc/iconv/ccs/win_1257.c: Ditto. * libc/iconv/ccs/win_1258.c: Ditto. * libc/iconv/ccs/iso_8859_15.c: Updated. * libc/iconv/ccs/iso_8859_2.c: Ditto. * libc/iconv/ccs/iso_8859_4.c: Ditto. * libc/iconv/ccs/iso_8859_5.c: Ditto. * libc/iconv/ccs/jis_x0212_1990.c: Ditto. * libc/iconv/ccs/koi8_r.c: Ditto. * libc/iconv/ccs/koi8_u.c: Ditto. * libc/iconv/ccs/ksx1001.c: Ditto. * libc/iconv/ccs/binary/gb_2312_80.cct: Removed. * libc/iconv/ccs/binary/jis_x0201.cct: Ditto. * libc/iconv/ccs/binary/shift_jis.cct: Ditto. * libc/iconv/ccs/binary/us_ascii.cct: Ditto. * libc/iconv/ccs/binary/jis_x0208_1983.cct: Ditto. * libc/iconv/ccs/binary/Makefile.am: Updated. * libc/iconv/ccs/binary/Makefile.in: Regenerated. * libc/iconv/ccs/binary/big5.cct: Updated. * libc/iconv/ccs/binary/cns11643_plane1.cct: Ditto. * libc/iconv/ccs/binary/cns11643_plane14.cct: Ditto. * libc/iconv/ccs/binary/cns11643_plane2.cct: Ditto. * libc/iconv/ccs/binary/cp775.cct: Updated.: Ditto. * libc/iconv/ccs/binary/cp850.cct: Ditto.: Ditto. * libc/iconv/ccs/binary/cp852.cct: Ditto.: Ditto. * libc/iconv/ccs/binary/cp855.cct: Ditto.: Ditto. * libc/iconv/ccs/binary/cp866.cct: Ditto.: Ditto. * libc/iconv/ccs/binary/iso_8859_1.cct: Ditto. * libc/iconv/ccs/binary/iso_8859_15.cct: Ditto. * libc/iconv/ccs/binary/iso_8859_4.cct: Ditto. * libc/iconv/ccs/binary/iso_8859_5.cct: Ditto. * libc/iconv/ccs/binary/iso_8859_2.cct: Ditto. * libc/iconv/ccs/binary/jis_x0212_1990.cct: Ditto. * libc/iconv/ccs/binary/koi8_r.cct: Ditto. * libc/iconv/ccs/binary/koi8_u.cct: Ditto. * libc/iconv/ccs/binary/ksx1001.cct: Ditto. * libc/iconv/ccs/binary/iso_8859_10.cct: New file. * libc/iconv/ccs/binary/iso_8859_11.cct: Ditto. * libc/iconv/ccs/binary/iso_8859_13.cct: Ditto. * libc/iconv/ccs/binary/iso_8859_14.cct: Ditto. * libc/iconv/ccs/binary/iso_8859_3.cct: Ditto. * libc/iconv/ccs/binary/iso_8859_6.cct: Ditto. * libc/iconv/ccs/binary/iso_8859_7.cct: Ditto. * libc/iconv/ccs/binary/iso_8859_8.cct: Ditto. * libc/iconv/ccs/binary/iso_8859_9.cct: Ditto. * libc/iconv/ccs/binary/iso_ir_111.cct: Ditto. * libc/iconv/ccs/binary/jis_x0201_1976.cct: Ditto. * libc/iconv/ccs/binary/jis_x0208_1990.cct: Ditto. * libc/iconv/ccs/binary/koi8_ru.cct: Ditto. * libc/iconv/ccs/binary/koi8_uni.cct: Ditto. * libc/iconv/ccs/binary/win_1250.cct: Ditto. * libc/iconv/ccs/binary/win_1251.cct: Ditto. * libc/iconv/ccs/binary/win_1252.cct: Ditto. * libc/iconv/ccs/binary/win_1253.cct: Ditto. * libc/iconv/ccs/binary/win_1254.cct: Ditto. * libc/iconv/ccs/binary/win_1255.cct: Ditto. * libc/iconv/ccs/binary/win_1256.cct: Ditto. * libc/iconv/ccs/binary/win_1257.cct: Ditto. * libc/iconv/ccs/binary/win_1258.cct: Ditto. * libc/iconv/ces/Makefile.am: Updated. * libc/iconv/ces/Makefile.in: Regenerated. * libc/iconv/ces/ucs-2-internal.c: Updated. * libc/iconv/ces/ucs-4-internal.c: Ditto. * libc/iconv/ces/utf-16.c: Ditto. * libc/iconv/ces/utf-8.c: Ditto. * libc/iconv/ces/cesbi.c: New file. * libc/iconv/ces/cesbi.h: Ditto. * libc/iconv/ces/cesdeps.h: Ditto. * libc/iconv/ces/euc.c: Ditto. * libc/iconv/ces/mkdeps.pl: Ditto. * libc/iconv/ces/table-pcs.c: Ditto. * libc/iconv/ces/table.c: Ditto. * libc/iconv/ces/ucs-2.c: Ditto. * libc/iconv/ces/ucs-4.c: Ditto. * libc/iconv/ces/us-ascii.c: Ditto. * libc/iconv/ces/euc-jp.c: Removed. * libc/iconv/ces/euc-kr.c: Ditto. * libc/iconv/ces/euc-tw.c: Ditto. * libc/iconv/ces/gb2312.c: Ditto. * libc/iconv/ces/iso-10646-ucs-2.: Ditto.c * libc/iconv/ces/iso-10646-ucs-4.c: Ditto. * libc/iconv/lib/Makefile.am: Updated. * libc/iconv/lib/Makefile.in: Regenerated. * libc/iconv/lib/endian.h: Updated. * libc/iconv/lib/iconv.c: Ditto. * libc/iconv/lib/local.h: Ditto. * libc/iconv/lib/aliases.c: Removed. * libc/iconv/lib/bialiasesi.c: Ditto. * libc/iconv/lib/biccs.c: Ditto. * libc/iconv/lib/bices.c: Ditto. * libc/iconv/lib/ccs.c: Ditto. * libc/iconv/lib/ces.c: Ditto. * libc/iconv/lib/ces_euc.c: Ditto. * libc/iconv/lib/ces_iso2022.c: Ditto. * libc/iconv/lib/ces_table.c: Ditto. * libc/iconv/lib/converter.c: Ditto. * libc/iconv/lib/deps.h: Ditto. * libc/iconv/lib/loaddata.c: Ditto. * libc/iconv/lib/aliasesbi.c: New file. * libc/iconv/lib/aliasesi.c: Ditto. * libc/iconv/lib/conv.h: Ditto. * libc/iconv/lib/encnames.h: Ditto. * libc/iconv/lib/encoding.deps: Ditto. * libc/iconv/lib/iconvnls.c: Ditto. * libc/iconv/lib/iconvnls.h: Ditto. * libc/iconv/lib/nullconv.c: Ditto. * libc/iconv/lib/ucsconv.c: Ditto. * libc/iconv/lib/ucsconv.h: Ditto. * libc/include/iconv.h: Update copyright. * libc/*/aclocal.m4: Regenerated. * libc/*/configure: Ditto. * libm/*/aclocal.m4: Ditto. * libm/*/configure: Ditto. 2004-06-22 Alexandre Oliva * libc/include/machine/setjmp.h [__H8300__] (_JBTYPE): Define, instead of typedefing jmp_buf. 2003-07-02 Richard Sandiford * libc/machine/h8300/Makefile.am (lib_a_SOURCES): Add h8sx_strcpy.S. * libc/machine/h8300/defines.h (LEN): New macro. * libc/machine/h8300/memcpy.S: Add h8sx version. * libc/machine/h8300/memset.S: Likewise. * libc/machine/h8300/strcmp.S: Likewise. * libc/machine/h8300/setjmp.S: Use h8sx move instructions. * libc/machine/h8300/h8sx_strcpy.S: New file. 2003-06-30 Richard Sandiford * libc/include/machine/ieeefp.h: Extend __H8300S__ handling to __H8300SX__. * libc/include/machine/setjmp.h: Likewise. * libc/include/sys/config.h: Likewise. * libc/machine/h8300/defines.h: Likewise. * libc/machine/h8300/setjmp.S: Likewise. * libc/machine/h8300/strcmp.S: Likewise. * libc/sys/h8300hms/close.S: Likewise. * libc/sys/h8300hms/fstat.S: Likewise. * libc/sys/h8300hms/lseek.S: Likewise. * libc/sys/h8300hms/read.S: Likewise. * libc/sys/h8300hms/write.S: Likewise. * libc/sys/h8300hms/crt0.S: Likewise. * libc/machine/h8300/setarch.h: Use .h8300sx or .h8300sxn if __H8300SX__ is defined. * libc/sys/h8300hms/setarch.h: Likewise. 2004-06-17 Jeff Johnston * libc/include/sys/reent.h (_GLOBAL_REENT): Back out change which set _GLOBAL_REENT to _global_impure_ptr until we understand why Cygwin breaks because of it. 2004-06-14 Jeff Johnston * libc/sys/linux/machine/i386/syscall.h: For now, set up __syscall_return macro for systems with vsyscall. 2004-06-11 Antony King * libc/include/sys/_types.h: Include and change _flock_t to be of type _LOCK_RECURSIVE_T. * libc/include/sys/reent.h: (_REENT_INIT): Reformat. (_REENT_INIT_PTR): Ditto. Use memset where appropriate. (_global_impure_ptr): New declaration. (_GLOBAL_REENT): Change to be _global_impure_ptr. * libc/include/sys/stdio.h: Include and . (_flockfile)[!_SINGLE_THREAD]: Add code for lock call. (_funlockfile)[!SINGLE_THREAD]: Ditto. * libc/reent/impure.c: Set _global_impure_ptr to _impure_ptr. * libc/stdio/fclose.c: Remove casting of fp lock to _LOCK_RECURSIVE_T. * libc/stdio/findfp.c: Ditto. * libc/stdio/fopen.c: Ditto. * libc/stdio/freopen.c: Ditto. * libc/stdio/vfprintf.c: Ditto. * libc/stdio64/fopen64.c: Ditto. * libc/stdlib/envlock.c: Add default stubs that use generic locking code. * libc/stdlib/mlock.c: Ditto. Jeff Johnston * libc/sys/linux/sys/_types.h (__flock_mutex_t): New subtype. (_flock_t): Change to be a struct containing a single member named mutex which is of type __flock_mutex_t. 2004-06-09 Jeff Johnston * libc/sys/linux/Makefile.am: Change siglist.inc to be generated from /usr/include/asm/signal.h instead of kernel sources. Also default max to 32 if not found in header file. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/machine/i386/socketcall.h: Fix for Fedora Core 2 systems where __syscall_return is not defined. * libc/sys/linux/machine/i386/syscall.h: Change for Fedora Core 2 systems to use syscall() function instead of assembler interrupt. 2004-06-09 Toralf Lund * libc/sys/arm/setjmp.S, libc/sys/arm/access.c: Move files from libc/sys/arm to libc/machine/arm. * libc/machine/arm/Makefile.am, libc/machine/arm/Makefile.in: Add library build support for files moved from libc/sys/arm. * libc/sys/arm/Makefile.am, libc/sys/arm/Makefile.in: Remove references to access and setjmp. * configure.host: Add checks for newlib_may_supply_syscalls to determine whether or not to use sys/arm directory and use special compiler flags: ARM_RDI_MONITOR and ARM_RDP_MONITOR. 2004-06-02 Jeff Johnston * libc/stdio/vfscanf.c (__svfscanf_r): For CT_INT conversions, reset digit flags appropriately after we have discovered "0x". * libc/machine/powerpc/vfscanf.c (__svfscanf_r): Ditto. 2004-05-27 Jeff Johnston * libc/stdio/vfprintf.c (_VFPRINTF): Move file locking from here ... (_VFPRINTF_R): ... to here so all I/O printf routines are covered. 2004-05-26 Jeff Johnston * libc/search/hash_buf.c: Protect MAX and MIN macros from redefinition. * libc/search/hash.c: Ditto. 2004-05-25 Artem B. Bityuckiy * newlib.hin: (_WANT_IO_POS_ARGS): New define. (_WANT_IO_LONG_LONG): Ditto. (_WANT_IO_LONG_DOUBLE): Ditto. * configure.in: Add new configuration options --enable-newlib-io-long-long and --enable-newlib-io-long-double which tie to new defines in newlib.hin. * configure: Regenerated. * configure.host: Add checks for new configuration options. Also fix up check for --enable-newlib-io-pos-args so configuration option will override any default for a given platform. Remove defining compiler flags for the _WANT_IO* options. * libc/stdio/vfprintf.c: Change to use new newlib.hin defines instead of looking for old compiler flags. * libc/stdio/vfscanf.c: Ditto. * libc/stdio/vfieeefp.h: Ditto. * libc/machine/powerpc/vfprintf.c: Ditto. * libc/machine/powerpc/vfscanf.c: Ditto. 2004-05-25 Jeff Johnston * testsuite/include/check.h: Add include of . 2004-05-17 Corinna Vinschen * libc/include/grp.h: Declare getgrnam_r and getgrgid_r also on Cygwin. 2004-05-11 Artem B. Bityuckiy * libc/stdio/vfprintf.c (VFPRINTF_R): Use _free_r instead of free. 2004-05-07 Artem B. Bityuckiy * libc/stdio/iprintf.c (_iprintf_r): Fix old-style argument list for reentrant pointer. Call _vfiprintf_r. * libc/stdio/siprintf.c (_siprintf_r): New function. * libc/stdio/vfprintf.c (__sbprintf): Add reetrant struct pointer argument. Change all callers. Call _VFPRINTF_R. * libc/include/stdio.h (_siprintf_r, _vfiprintf_r): New prototypes. 2004-05-07 Jeff Johnston * libc/include/sys/param.h: Remove endian info and include instead. * libc/include/machine/endian.h: New file. * libc/include/machine/param.h: Ditto. * libc/machine/arm/machine/endian.h: Ditto. * libc/machine/arm/machine/param.h: Ditto. * libc/sys/arm/sys/param.h: Removed. * libc/sys/sysvi386/sys/param.h: Ditto. * libc/sys/rtems/sys/param.h: Modified to include . 2004-05-03 Artem B. Bityuckiy * libc/stdio/vfprintf.c (_VFPRINTF_R): Set error flag when multibyte functions return failure for %C, %S, %lc, and %ls format specifiers. 2004-05-03 Artem B. Bityuckiy * testsuite/include/check.h (CHECK): Add flush of stdout. 2004-05-03 Artem B. Bityuckiy * libc/include/stdio.h (_ungetc_r): New prototype. * libc/stdio/ungetc.c (_ungetc_r): New reentrant function. (__submore): Add reentrant struct pointer argument. (ungetc): Change to call _ungetc_r. 2004-04-28 Artem B. Bityuckiy * libc/stdio/local.h (_fwalk_reent): Specify prototype of function pointer argument. * libc/stdio/fwalk.c (_fwalk, _fwalk_reent): Change prototypes to specify function pointer arguments. (__fwalk, __fwalk_reent): Ditto. 2004-04-26 Aldy Hernandez * libc/machine/powerpc/vfscanf.c (__svfscanf_r): Fix typo in CT_INT case. 2004-04-23 Artem B. Bityuckiy * configure.in: Define _MB_CAPABLE if mb supported. * configure: Regenerated. * configure.host: Remove manual setting of MB_CAPABLE compiler flag. * newlib.hin: Add _MB_CAPABLE flag. * libc/ctype/iswalpha.c, libc/ctype/iswblank.c: Include and check for _MB_CAPABLE flag instead of MB_CAPABLE. * libc/ctype/iswcntrl.c, libc/ctype/iswprint.c: Ditto. * libc/ctype/iswpunct.c, libc/ctype/iswspace.c: Ditto. * libc/ctype/jp2uc.c: Ditto. * libc/ctype/towlower.c, libc/ctype/towupper.c: Ditto. * libc/locale/locale.c: Ditto * libc/machine/powerpc/vfscanf.c: Ditto * libc/stdio/vfprintf.c, libc/stdio/vfscanf.c: Ditto * libc/stdlib/mblen.c: Ditto * libc/stdlib/mblen_r.c, libc/stdlib/mbrlen.c: Ditto * libc/stdlib/mbrtowc.c, libc/stdlib/mbsrtowcs.c: Ditto * libc/stdlib/mbstowcs.c, libc/stdlib/mbtowc.c: Ditto * libc/stdlib/mbtowc_r.c, libc/stdlib/wcrtomb.c: Ditto * libc/stdlib/wcsrtombs.c, libc/stdlib/wcstombs.c: Ditto * libc/stdlib/wctomb.c, libc/sys/linux/intl/dcigettext.c: Ditto * libc/sys/linux/intl/explodename.c: Ditto * libc/sys/linux/intl/finddomain.c: Ditto * libc/sys/linux/intl/l10nflist.c: Ditto * libc/sys/linux/intl/loadmsgcat.c: Ditto * libc/sys/linux/intl/localealias.c: Ditto 2004-04-23 Jeff Johnston * libc/machine/powerpc/vfscanf.c (NNZDIGITS): New define. (__svfscanf_r): In integer conversions, leave out leading zeroes which are not part of a base prefix. Keep track of width truncation to fit into buf, not counting left-out zeroes against width till the truncation has been compensated for. This is based on Joern's patch of 04/21 for libc/stdio/vfscanf.c. 2004-04-23 Jeff Johnston * libc/include/stdio.h: (_ftell_r, _fseek_r): New prototypes. 2004-04-23 Artem B. Bityuckiy * libc/stdio/asprintf.c libc/stdio/clearerr.c, libc/stdio/fclose.c libc/stdio/fcloseall.c libc/stdio/fdopen.c, libc/stdio/feof.c libc/stdio/ferror.c libc/stdio/fflush.c, libc/stdio/fgetc.c libc/stdio/fgetpos.c libc/stdio/fgets.c, libc/stdio/fileno.c libc/stdio/findfp.c libc/stdio/fiprintf.c, libc/stdio/flags.c libc/stdio/fopen.c libc/stdio/fprintf.c, libc/stdio/fputc.c libc/stdio/fputs.c libc/stdio/fread.c, libc/stdio/freopen.c libc/stdio/fscanf.c libc/stdio/fseek.c, libc/stdio/fseeko.c libc/stdio/fsetpos.c libc/stdio/ftell.c, libc/stdio/ftello.c libc/stdio/fvwrite.c libc/stdio/fwalk.c, libc/stdio/fwrite.c libc/stdio/getc.c libc/stdio/getc_u.c, libc/stdio/getchar.c libc/stdio/getchar_u.c, libc/stdio/getdelim.c libc/stdio/getline.c libc/stdio/gets.c, libc/stdio/getw.c libc/stdio/iprintf.c libc/stdio/local.h, libc/stdio/makebuf.c libc/stdio/mktemp.c libc/stdio/perror.c, libc/stdio/printf.c libc/stdio/putc.c libc/stdio/putc_u.c, libc/stdio/putchar.c libc/stdio/putchar_u.c libc/stdio/puts.c, libc/stdio/putw.c libc/stdio/refill.c libc/stdio/remove.c, libc/stdio/rename.c libc/stdio/rewind.c libc/stdio/rget.c, libc/stdio/scanf.c libc/stdio/setbuf.c libc/stdio/setbuffer.c, libc/stdio/setlinebuf.c libc/stdio/setvbuf.c, libc/stdio/siprintf.c libc/stdio/snprintf.c, libc/stdio/sprintf.c libc/stdio/sscanf.c libc/stdio/stdio.c, libc/stdio/tmpfile.c libc/stdio/tmpnam.c libc/stdio/ungetc.c, libc/stdio/vasprintf.c libc/stdio/vfieeefp.h, libc/stdio/vfprintf.c libc/stdio/vfscanf.c, libc/stdio/vprintf.c libc/stdio/vscanf.c, libc/stdio/vsnprintf.c libc/stdio/vsprintf.c, libc/stdio/vsscanf.c libc/stdio/wbuf.c, libc/stdio/wsetup.c: Perform minor formatting changes. Move copyright notices to top of file, ensure that <_ansi.h> is included, be consistent with open parentheses, use _DEFUN macro, include "local.h" where needed, and remove various compiler warnings. 2004-04-21 J"orn Rennecke * libc/stdio/vfscanf.c (NNZDIGITS): New define. (__svfscanf_r): In integer conversions, leave out leading zeroes which are not part of a base prefix. Keep track of width truncation to fit into buf, not counting left-out zeroes against width till the truncation has been compensated for. 2004-04-20 Corinna Vinschen * libc/include/sys/unistd.h (ttyname_r): Add missing comma. 2004-04-20 Corinna Vinschen * libc/include/sys/unistd.h (ttyname_r): Add declaration for Cygwin. 2004-04-10 Corinna Vinschen * libc/include/sys/unistd.h (sync): Define void on Cygwin according to SUSv3. 2004-04-08 Artem B. Bityuckiy * libc/stdio/fclose.c (_fclose_r): New function. * libc/stdio/freopen.c (_freopen_r): Call _fclose_r. * libc/stdio/fcloseall.c (_fcloseall_r): Call _fwalk_reent. * libc/stdio64/freopen64.c (_freopen64_r): Use _fclose_r. * libc/include/stdio.h (_fclose_r): New prototype. * libc/stdio/fopen.c: Fix typo in comment. 2004-04-08 Jeff Johnston * libc/stdio/fwalk.c (_fwalk_reent): New version of _fwalk to handle _r reentrant functions. 2004-04-08 Eric Christopher * libc/include/machine/setjmp.h: Fix endif locations. 2004-04-01 Artem B. Bityuckiy * libc/time/strptime.c: Add standard includes to avoid warning messages at compilation time. 2004-04-01 Jeff Johnston * libc/stdio/vfscanf.c (__svfscanf_r): Add locking/unlocking of file. 2004-03-30 Jeff Johnston * libc/machine/h8300/Makefile.am: Reformat slightly. * libc/machine/h8300/Makefile.in: Regenerate. 2004-03-30 Thomas Pfaff * libc/stdio/findfp.c (__fp_lock_all): Add call to __sfp_lock_acquire. (__fp_unlock_all): Add call to __sfp_lock_release. 2004-03-25 Thomas Pfaff * libc/stdio/fclose.c (fclose): Protect file pointer list when releasing a file. * libc/stdio/fcloseall.c (_fcloseall_r): Close all files via fwalk. * libc/stdio/fdopen.c (_fdopen_r): Add calls to _flockfile/_funlockfile. * libc/stdio/findfp.c: Move __sfp_lock. Change __sfp_lock type to recursive. Change __lock_acquire/__lock_release calls for __sfp_lock to __sfp_lock_acquire/__sfp_lock_release throughout. (std): Make sure that file lock is only initialized once. (__sfp): Move _file initialization. Initialize file lock. (__sfp_lock_acquire): New function. (__sfp_lock_release): Ditto. (__fp_lock_all): Remove __sfp_lock_acquire call. (__fp_unlock_all): Remove __sfp_lock_release call. * libc/stdio/fopen.c (_fopen_r): Protect file pointer list. Add calls to _flockfile/_funlockfile. Remove __lock_init_recursive call. * libc/stdio/freopen.c (_freopen_r): Protect file pointer list. * libc/stdio/fwalk.c (__fwalk): New static function. (_fwalk): Protect file pointer list. Use __fwalk to walk through file pointers. * libc/stdio/local.h: Add defines for __sfp_lock_acquire/__sfp_lock_release when single threaded. Add function prototypes otherwise. * libc/stdio64/fdopen64.c (_fdopen64_r): Add calls to _flockfile/_funlockfile. * libc/stdio/fopen64.c (_fopen64_r): Protect file pointer list. Add calls to _flockfile/_funlockfile. Remove __lock_init_recursive call. * libc/stdio/freopen64.c (_freopen64_r): Protect file pointer list. 2004-03-25 Jeff Johnston * libc/sys/linux/sys/lock.h: Turn on __USE_GNU flag if not already defined. Change __LOCK_RECURSIVE_INIT to be __LOCK_INIT_RECURSIVE. * libc/sys/linux/dl/dl-support.c: Change __LOCK_RECURSIVE_INIT to be __LOCK_INIT_RECURSIVE. 2004-03-11 Kazu Hirata * libc/sys/h8300hms/Makefile.am (lib_a_SOURCES): Replace _exit.c with _exit.S. * libc/sys/h8300hms/Makefile.in: Regenerate. * libc/sys/h8300hms/_exit.c: Remove. * libc/sys/h8300hms/_exit.S: New. 2004-03-09 Thomas Pfaff * libc/stdio/findfp.c (__sfp): Rename lock to __sfp_lock. Change __sfp_lock to static global. (__fp_lock): New static function. (__fp_unlock): Ditto. (__fp_lock_all): New function. (__fp_unlock_all): Ditto. 2004-02-10 Christopher Faylor * libm/mathfp/er_gamma.c (gamma): Add new non-reentrant function. * libm/mathfp/er_lgamma.c (lgamma): Ditto. * libm/mathfp/erf_gamma.c (gammaf): Ditto. * libm/mathfp/erf_lgamma.c (lgammaf): Ditto. 2004-02-09 Christopher Faylor * libc/include/time.h (TIMER_RELTIME): New define. 2004-02-09 Jeff Johnston * libc/stdlib/Makefile.am: Add mallstatsr to LIBADD_OBJS. * libc/stdlib/Makefile.in: Regenerated. 2004-02-08 Christopher Faylor * libc/include/sys/features.h: Add _POSIX_TIMERS define for __CYGWIN__. * libc/include/sys/reent.h (__getreent): Protect against possibly being defined. * libc/include/sys/unistd.h (fdatasync): Don't define for __CYGWIN__. 2004-02-05 Paul Brook * libc/include/machine/ieeefp.h[__arm__][__VFP_FP__]: Set IEEE_{BIG,LITTLE} based on __ARMEL__ flag. 2004-02-02 Jeff Johnston * NEWS: Update with 1.12.0 info. * README: Ditto. * acinclude.m4: Change version number to 1.12.0. * aclocal.m4: Regenerated. * configure: Ditto. * doc/aclocal.m4: Ditto. * doc/configure: Ditto. * libc/*/aclocal.m4: Ditto. * libc/*/configure: Ditto. * libc/libc.texinfo: Ditto. * libm/*/aclocal.m4: Ditto. * libm/*/configure: Ditto. * libm/libm.texinfo: Ditto. * libc/sys/linux/shared.ld: Add VERS_1.12. 2004-02-02 Joel Sherrill * configure.host: Add support for tic4x. * libc/include/machine/ieeefp.h: Ditto. * libc/include/machine/setjmp.h: Ditto. * libc/machine/tic4x/Makefile.am: New file. * libc/machine/tic4x/configure.in: Ditto. * libc/machine/tic4x/setjmp.S: Ditto. * libc/machine/tic4x/aclocal.m4: Generated. * libc/machine/tic4x/configure: Ditto. * libc/machine/tic4x/Makefile.in: Ditto. 2004-01-30 Jeff Johnston * libc/stdio/fwalk.c (_fwalk.c): Don't traverse the file chain on the passed in reentrancy struct if it is _GLOBAL_REENT. 2004-01-30 Artem B. Bityuckiy Jeff Johnston * libc/iconv/iconv.tex: Updated with more information. 2004-01-30 Thomas Pfaff Jeff Johnston * libc/stdio/fwalk.c (_fwalk): Traverse the given reentrancy struct for std streams and traverse the global reeentrancy struct for all other streams. 2004-01-27 Jeff Johnston * libc/stdlib/atexit.c: Protect global atexit list with a lock when newlib is multithreaded. 2004-01-27 Artem B. Bityuckiy * configure.in: Add support to generate iconv converter flags for newlib.h * newlib.hin: Add iconv converter flags. * configure: Regenerated. * libc/Makefile.in: Ditto. * libc/configure.in: Moved iconv converter parsing logic to top level newlib configure.in. * libc/configure: Regenerated. * libc/iconv/Makefile.in: Ditto. * libc/iconv/README.TODO * libc/iconv/charset.aliases: Remove wrong BE aliases for UCS2/UCS4/UTF8. * libc/iconv/ccs/Makefile.am: Remove C flag setting now that newlib.h can be used. * libc/iconv/ces/Makefile.am: Ditto. * libc/iconv/lib/Makefile.am: Ditto. * libc/iconv/ccs/Makefile.in: Regenerated. * libc/iconv/ces/Makefile.in: Ditto. * libc/iconv/lib/Makefile.in: Ditto. * libc/iconv/ccs/README.CCS.SOURCES: Updated. * libc/iconv/ccs/iconv_mktbl: Don't write junk strings to binaries. * libc/iconv/ccs/big5.c: Switch to use new underscored flags defined in newlib.h. * libc/iconv/ccs/cns11643_plane1.c: Ditto. * libc/iconv/ccs/cns11643_plane14.c: Ditto. * libc/iconv/ccs/cns11643_plane2.c: Ditto. * libc/iconv/ccs/cp775.c: Ditto. * libc/iconv/ccs/cp850.c: Ditto. * libc/iconv/ccs/cp852.c: Ditto. * libc/iconv/ccs/cp855.c: Ditto. * libc/iconv/ccs/cp866.c: Ditto. * libc/iconv/ccs/gb_2312_80.c: Ditto. * libc/iconv/ccs/iso_8859_1.c: Ditto. * libc/iconv/ccs/iso_8859_15.c: Ditto. * libc/iconv/ccs/iso_8859_2.c: Ditto. * libc/iconv/ccs/iso_8859_4.c: Ditto. * libc/iconv/ccs/iso_8859_5.c: Ditto. * libc/iconv/ccs/jis_x0201.c: Ditto. * libc/iconv/ccs/jis_x0208_1983.c: Ditto. * libc/iconv/ccs/jis_x0212_1990.c: Ditto. * libc/iconv/ccs/koi8_r.c: Ditto. * libc/iconv/ccs/koi8_u.c: Ditto. * libc/iconv/ccs/ksx1001.c: Ditto. * libc/iconv/ccs/shift_jis.c: Ditto. * libc/iconv/ccs/us_ascii.c: Ditto. * libc/iconv/ccs/binary/big5.cct: Newly generated. * libc/iconv/ccs/binary/cns11643_plane1.cct: Ditto. * libc/iconv/ccs/binary/cns11643_plane14.cct: Ditto. * libc/iconv/ccs/binary/cns11643_plane2.cct: Ditto. * libc/iconv/ccs/binary/cp775.cct: Ditto. * libc/iconv/ccs/binary/cp850.cct: Ditto. * libc/iconv/ccs/binary/cp852.cct: Ditto. * libc/iconv/ccs/binary/cp855.cct: Ditto. * libc/iconv/ccs/binary/cp866.cct: Ditto. * libc/iconv/ccs/binary/gb_2312_80.cct: Ditto. * libc/iconv/ccs/binary/iso_8859_1.cct: Ditto. * libc/iconv/ccs/binary/iso_8859_15.cct: Ditto. * libc/iconv/ccs/binary/iso_8859_2.cct: Ditto. * libc/iconv/ccs/binary/iso_8859_4.cct: Ditto. * libc/iconv/ccs/binary/iso_8859_5.cct: Ditto. * libc/iconv/ccs/binary/jis_x0201.cct: Ditto. * libc/iconv/ccs/binary/jis_x0208_1983.cct: Ditto. * libc/iconv/ccs/binary/jis_x0212_1990.cct: Ditto. * libc/iconv/ccs/binary/koi8_r.cct: Ditto. * libc/iconv/ccs/binary/koi8_u.cct: Ditto. * libc/iconv/ccs/binary/ksx1001.cct: Ditto. * libc/iconv/ccs/binary/shift_jis.cct: Ditto. * libc/iconv/ccs/binary/us_ascii.cct: Ditto. * libc/iconv/lib/bialiasesi.c: Sync with charset.aliases. * libc/iconv/ces/euc-jp.c: Use newlib.h macros. * libc/iconv/ces/euc-kr.c: Ditto. * libc/iconv/ces/euc-tw.c: Ditto. * libc/iconv/ces/gb2312.c: Ditto. * libc/iconv/ces/iso-10646-ucs-2.c: Ditto. * libc/iconv/ces/iso-10646-ucs-4.c: Ditto. * libc/iconv/ces/ucs-2-internal.c: Ditto. * libc/iconv/ces/ucs-4-internal.c: Ditto. * libc/iconv/ces/utf-16.c: Ditto. * libc/iconv/ces/utf-8.c: Ditto. * libc/iconv/lib/aliases.c: Ditto. * libc/iconv/lib/biccs.c: Ditto. * libc/iconv/lib/bices.c: Ditto. * libc/iconv/lib/ccs.c: Ditto. * libc/iconv/lib/ces.c: Ditto. * libc/iconv/lib/ces_euc.c: Ditto. * libc/iconv/lib/ces_iso2022.c: Ditto. * libc/iconv/lib/ces_table.c: Ditto. * libc/iconv/lib/converter.c: Ditto. * libc/iconv/lib/deps.h: Ditto. * libc/iconv/lib/endian.h: Ditto. * libc/iconv/lib/iconv.c: Ditto. * libc/iconv/lib/loaddata.c: Ditto. * libc/iconv/lib/local.h: Include newlib.h. * libc/argz/Makefile.in: Regenerated. * libc/ctype/Makefile.in: Ditto. * libc/errno/Makefile.in: Ditto. * libc/iconv/ccs/binary/Makefile.in: Ditto. * libc/locale/Makefile.in: Ditto. * libc/misc/Makefile.in: Ditto. * libc/posix/Makefile.in: Ditto. * libc/reent/Makefile.in: Ditto. * libc/search/Makefile.in: Ditto. * libc/signal/Makefile.in: Ditto. * libc/stdio/Makefile.in: Ditto. * libc/stdio64/Makefile.in: Ditto. * libc/stdlib/Makefile.in: Ditto. * libc/string/Makefile.in: Ditto. * libc/syscalls/Makefile.in: Ditto. * libc/time/Makefile.in: Ditto. * libc/unix/Makefile.in: Ditto. * testsuite/newlib.iconv/iconv.exp: New file. * testsuite/newlib.iconv/iconvjp.c: Ditto. * testsuite/newlib.iconv/iconvnm.c: Ditto. * testsuite/newlib.iconv/iconvru.c: Ditto. 2004-01-23 Artem B. Bityuckiy * acinclude.m4 (--enable-newlib-iconv): New configuration option. (--enable-newlib-builtin-converters): Ditto. * configure.in: Add code to set _ICONV_ENABLED flag. Set _MB_LEN_MAX to 1 if not mb enabled. * configure: Regenerated. * aclocal.m4: Ditto. * Makefile.in: Ditto. * newlib.hin: Add _ICONV_ENABLED flag. * libc/Makefile.am: Add support for iconv. * libc/configure.in: Ditto. * libc/Makefile.in: Regenerated. * libc/aclocal.m4: Ditto. * libc/configure: Ditto. * libc/libc.texinfo: Add iconv documentation. * libc/iconv/AUTHORS, libc/iconv/COPYING, libc/iconv/Makefile.am, libc/iconv/Makefile.in, libc/iconv/README.ORIGINAL, libc/iconv/README.TODO, libc/iconv/charset.aliases, libc/iconv/iconv.tex, libc/iconv/ccs/Makefile.am, libc/iconv/ccs/Makefile.in, libc/iconv/ccs/README.CCS.SOURCES, libc/iconv/ccs/big5.c, libc/iconv/ccs/cns11643_plane1.c, libc/iconv/ccs/cns11643_plane14.c, libc/iconv/ccs/cns11643_plane2.c, libc/iconv/ccs/cp775.c, libc/iconv/ccs/cp850.c, libc/iconv/ccs/cp852.c, libc/iconv/ccs/cp855.c, libc/iconv/ccs/cp866.c, libc/iconv/ccs/gb_2312_80.c, libc/iconv/ccs/iconv_mktbl, libc/iconv/ccs/iso_8859_1.c, libc/iconv/ccs/iso_8859_15.c, libc/iconv/ccs/iso_8859_2.c, libc/iconv/ccs/iso_8859_4.c, libc/iconv/ccs/iso_8859_5.c, libc/iconv/ccs/jis_x0201.c, libc/iconv/ccs/jis_x0208_1983.c, libc/iconv/ccs/jis_x0212_1990.c, libc/iconv/ccs/koi8_r.c, libc/iconv/ccs/koi8_u.c, libc/iconv/ccs/ksx1001.c, libc/iconv/ccs/shift_jis.c, libc/iconv/ccs/us_ascii.c, libc/iconv/ccs/binary/Makefile.am, libc/iconv/ccs/binary/Makefile.in, libc/iconv/ccs/binary/big5.cct, libc/iconv/ccs/binary/cns11643_plane1.cct, libc/iconv/ccs/binary/cns11643_plane14.cct, libc/iconv/ccs/binary/cns11643_plane2.cct, libc/iconv/ccs/binary/cp775.cct, libc/iconv/ccs/binary/cp850.cct, libc/iconv/ccs/binary/cp852.cct, libc/iconv/ccs/binary/cp855.cct, libc/iconv/ccs/binary/cp866.cct, libc/iconv/ccs/binary/gb_2312_80.cct, libc/iconv/ccs/binary/iso_8859_1.cct, libc/iconv/ccs/binary/iso_8859_15.cct, libc/iconv/ccs/binary/iso_8859_2.cct, libc/iconv/ccs/binary/iso_8859_4.cct, libc/iconv/ccs/binary/iso_8859_5.cct, libc/iconv/ccs/binary/jis_x0201.cct, libc/iconv/ccs/binary/jis_x0208_1983.cct, libc/iconv/ccs/binary/jis_x0212_1990.cct, libc/iconv/ccs/binary/koi8_r.cct, libc/iconv/ccs/binary/koi8_u.cct, libc/iconv/ccs/binary/ksx1001.cct, libc/iconv/ccs/binary/shift_jis.cct, libc/iconv/ccs/binary/us_ascii.cct, libc/iconv/ces/Makefile.am, libc/iconv/ces/Makefile.in, libc/iconv/ces/euc-jp.c, libc/iconv/ces/euc-kr.c, libc/iconv/ces/euc-tw.c, libc/iconv/ces/gb2312.c, libc/iconv/ces/iso-10646-ucs-2.c, libc/iconv/ces/iso-10646-ucs-4.c, libc/iconv/ces/ucs-2-internal.c, libc/iconv/ces/ucs-4-internal.c, libc/iconv/ces/utf-16.c, libc/iconv/ces/utf-8.c, libc/iconv/lib/Makefile.am, libc/iconv/lib/Makefile.in, libc/iconv/lib/aliases.c, libc/iconv/lib/bialiasesi.c, libc/iconv/lib/biccs.c, libc/iconv/lib/bices.c, libc/iconv/lib/ccs.c, libc/iconv/lib/ces.c, libc/iconv/lib/ces_euc.c, libc/iconv/lib/ces_iso2022.c, libc/iconv/lib/ces_table.c, libc/iconv/lib/converter.c, libc/iconv/lib/deps.h, libc/iconv/lib/endian.h, libc/iconv/lib/iconv.c, libc/iconv/lib/loaddata.c, libc/iconv/lib/local.h, libc/include/iconv.h: New files. * libc/sys/linux/include/iconv.h: Ditto. * libc/include/sys/_types.h (_iconv_t): Added. * doc/aclocal.m4: Regenerated. * doc/configure: Ditto. * doc/Makefile.in: Ditto. * iconvdata/Makefile.in: Ditto. * iconvdata/aclocal.m4: Ditto. * iconvdata/configure: Ditto. * libc/*aclocal.m4: Ditto. * libc/*Makefile.in: Ditto. * libc/*configure: Ditto. * libm/*aclocal.m4: Ditto. * libm/*Makefile.in: Ditto. * libm/*configure: Ditto. 2004-01-22 Thomas Pfaff * libc/stdio/findfp.c (__sfp): Protect global FILE pointer list by a lock when newlib is multithreaded. 2004-01-21 Jeff Johnston * libc/stdlib/mbrtowc.c (_mbrtowc_r): Fix case where s is null pointer to match C99 spec. * libc/stdlib/mbsrtowcs.c (_mbsrtowc_r): Fix to ignore len when dst is NULL. Also fix to not alter src pointer when dst is NULL and call _mbrtowc_r instead of _mbtowc_r. * libc/stdlib/wcsrtombs.c (_wcsrtombs_r): Call _wcrtomb_r instead of _wctomb_r. 2004-01-19 Thomas Pfaff * libc/stdio/fclose.c (fclose): Release FILE as the last step. * libc/stdio/freopen.c (freopen): Ditto. 2004-01-16 Christopher Faylor * libc/stdio/vfprintf.c: Add sys/lock.h include. 2004-01-16 Thomas Pfaff * libc/stdio/findfp.c (__sfp): Remove unnecessary memset. * libc/stdio/vfprintf.c (__sbprintf): Ditto. Add calls to __lock_init_recursive and __lock_close_recursive instead. 2004-01-15 Thomas Pfaff * libc/stdio/fclose.c: Include sys/lock.h. (fclose): Destroy lock when file is closed. * libc/stdio/findfp.c (__sfp): Initialize file pointers _lock member. * libc/stdio/freopen.c: Include sys/lock.h. (_freopen_r): Destroy lock when file is closed. * libc/stdio/vfprintf.c (__sbprintf): Initialize file pointers _lock member. 2004-01-08 Joel Sherrill * libc/ctype/iswctype.c, include/sys/reent.h, libc/stdlib/a64l.c: Remove warnings. 2004-01-08 Joel Sherrill * libc/sys/rtems/sys/queue.h: New file. * libc/include/sys/signal.h: Reflect renumbering of signals to fit into 32-bit mask. * libc/include/sys/unistd.h: Add fdatasync() prototype. * libc/sys/rtems/crt0.c: Add more symbols which may be implicitly required. In particular, add the reentrant variants of libc calls. * libc/sys/rtems/sys/dirent.h: Add scandir() prototype. 2004-01-06 Mark Mitchell * libc/sys/arm/syscalls.c (unistd.h): Include it. (remap_handle): Use STDIN_FILENO instead of __sfileno(stdin). Similarly for stdout and stderr. 2004-01-06 Jeff Johnston * libc/libc.texinfo: Correct escape character for @ sign so file will be processed by make info. Update copyright years. * libm/libm.texinfo: Ditto. 2003-12-05 Jeff Johnston * libc/include/sys/stat.h: No longer include stat-dj.h. * libc/include/sys/stat-dj.h: Removed. 2003-12-05 Jeff Johnston * libc/include/wchar.h: Include . 2003-12-05 Christopher Faylor * libc/stdlib/mbrlen.c: Change include order to prevent compiler errors when defining _mbrtowc. * libc/stdlib/mbsinit.c: Ditto. * libc/stdlib/mbsrtowcs.c: Ditto. * libc/stdlib/wcrtomb.c: Ditto. * libc/stdlib/wcsrtombs.c: Ditto. * libc/stdlib/wctob.c: Ditto. 2003-12-05 Christopher Faylor * libc/stdlib/mbrlen.c: Change include order to prevent compiler errors when defining _mbrtowc. * libc/stdlib/mbsinit.c: Ditto. * libc/stdlib/mbsrtowcs.c: Ditto. 2003-12-05 Christopher Faylor * libc/stdlib/mbrtowc.c: Change include order to prevent compiler errors when defining _mbrtowc. 2003-12-04 Artem B. Bityuckiy * libc/stdio/vfprintf.c (_VFPRINTF_R): Use _r versions of mb routines for %lc and %ls support. * libc/stdio/vfscanf.c (_svfscanf_r): Add %lc, %C, %ls, and %S support. Remove CYGNUS_NEC markers and code within. 2003-12-04 Jeff Johnston * libc/include/wchar.h: Add prototypes for _mbrtowc_r, _wcrtomb_r, and _wcsrtombs_r. 2003-12-01 Corinna Vinschen * libc/include/sys/fcntl.h: Don't define struct flock when on Cygwin. This is done in winsup/cygwin/include/cygwin/types.h now. 2003-11-28 Christopher Faylor * libc/include/sys/signal.h: Use system specific signal file when building on cygwin. 2003-11-27 Jeff Johnston * libc/include/stdlib.h (_atoi_r): New prototype. * libc/stdlib/atoi.c (_atoi_r): New reentrant function. 2003-11-27 Jeff Johnston * libc/include/stdlib.h (_atoll_r, _atol_r): New prototypes. * libc/stdlib/atol.c (_atol_r): New reentrant function. * libc/stdlib/atoll.c (_atoll_r): Ditto. 2003-11-27 Artem B. Bityuckiy Jeff Johnston * libc/include/stdlib.h (lldiv_t): New type. (atoll, llabs, lldiv): New prototypes. * libc/stdlib/Makefile.am: Add support for atoll, llabs, and lldiv. * libc/stdlib/stdlib.tex: Ditto. * libc/stdlib/Makefile.in: Regenerated. * libc/stdlib/atoll.c: New file. * libc/stdlib/llabs.c: Ditto. * libc/stdlib/lldiv.c: Ditto. 2003-11-26 Corinna Vinschen * libc/include/fcntl.h: Declare syscalls only when building newlib. * libc/include/unistd.h: Ditto. * libc/include/stat.h: Ditto. Also declare struct stat64. 2003-11-24 Artem B. Bityuckiy * libc/stdio/vfprintf.c (_VFPRINTF_R): Fix check for 'C' format specifier to use ch instead of *fmt. 2003-11-21 Artem B. Bityuckiy * libc/stdio/vfprintf.c (_VFPRINTF_R, get_arg): Move mb-specific code within checks for MB_CAPABLE. For non-mb-capable platforms, use simple byte logic. 2003-11-21 Jeff Johnston * libc/stdio/vfscanf.c (__svfscanf_r)[!_NO_LONGDBL]: Don't use _strtold routine for processing floats and doubles since it is not as fast as _strtod_r. 2003-11-20 Dhananjay Deshpande * libc/machine/h8300/defines.h : Correct pointer register defines for normal mode. * libc/machine/h8300/memcpy.S : Use add/sub instead of adds/subs for normal mode. * libc/machine/h8300/reg_memcpy.S : Likewise. * libc/machine/h8300/reg_memset.S : Likewise. * libc/machine/h8300/strcmp.S : Likewise. 2003-11-19 Nicholas Wourms * configure.host: Enable positional arguments for printf family for Cygwin. * libc/stdio/vfprintf.c (_VFPRINTF_R): Remove extraneous pointer reference for quad_ptr_t. 2003-11-19 Jeff Johnston * libc/stdio/scanf.c: Don't include local.h more than once. 2003-11-18 Corinna Vinschen * libc/include/sys/fcntl.h: Declare _open64. * libc/include/sys/stat.h: Declare _fstat64. * libc/include/sys/unistd.h: Declare _lseek64. 2003-11-17 Corinna Vinschen * libc/include/stdlib.h (getprogname): Declare for Cygwin. (setprogname): Ditto. 2003-11-10 Jeff Johnston * libc/machine/powerpc/ufix64toa.c (_ufix64to_r): Fix shifts to use (Ebits + 1) which accounts for the sign-bit. 2003-11-07 Jeff Johnston * configure.host: Remove -DLOOSE_KERNEL_NAMES flag for linux x86 build. * iconvdata/Makefile.am: Make dependent on newlib's configure.host and set up default flags to pass to aclocal. * iconvdata/Makefile.in: Regenerated. * libc/sys/linux/Makefile.am: Add _ELIX_LEVEL_4 getlogin, getpwnam, and getpwuid routines. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/getlogin.c: New stub file to allow x86-linux applications to link with newlib's shared libc library. * libc/sys/linux/getpwnam.c: Ditto. * libc/sys/linux/getpwuid.c: Ditto. * libc/sys/linux/sys/types.h: Include and supply types that were formerly supplied by /usr/include/linux/types.h with kernel types. * testsuite/newlib.wctype/twctype.c: Fix testcase to properly test _ELIX_LEVEL macro. 2003-11-07 Jeff Johnston * libc/stdio/vfprintf.c (_VFPRINTF_R): Fix typos that should be referring to _NO_LONGLONG macro. 2003-11-06 Jeff Johnston * libc/sys/linux/linuxthreads/td_init.c: Replace function name in LOG() macro so this will compile on gcc 3.4 and up. * libc/sys/linux/linuxthreads/td_log.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_clear_event.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_delete.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_enable_stats.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_event_addr.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_event_getmsg.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_get_nthreads.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_get_ph.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_get_stats.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_map_id2thr.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_map_lwp2thr.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_new.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_reset_stats.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_set_event.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_setconcurrency.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_thr_iter.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_tsd_iter.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_clear_event.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_dbresume.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_dbsuspend.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_event_enable.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_event_getmsg.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_get_info.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_getfpregs.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_getgregs.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_getxregs.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_getxregsize.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_set_event.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_setfpregs.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_setgregs.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_setprio.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_setsigpending.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_setxregs.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_sigsetmask.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_tsd.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_validate.c: Ditto. 2003-11-05 Jeff Johnston Artem B. Bityuckiy * libc/stdio/vfprintf.c (_VFPRINTF_R): Add support for %ls, %S, %lc, and %C format specifiers. (get_arg): Ditto. * libc/stdio/sprintf.c: Add documentation regarding new format specifiers added in vfprintf.c. 2003-11-05 Jeff Johnston * libc/stdlib/wcsrtombs.c (_wcsrtombs_r): Numerous fixes to make code work as specified in standard. 2003-10-23 Jeff Johnston * configure.in: Use absolute newlib basedir when forming CC_FOR_NEWLIB include options. * configure: Regenerated. 2003-10-23 Artem B. Bityuckiy * libc/string/wcsnlen.c: New file. * libc/include/wchar.h: Add wcsnlen prototype. * libc/string/Makefile.am: Add wcsnlen support. * libc/string/Makefile.in: Regenerated. * libc/string/wcstrings.tex: Add wcsnlen documentation. 2003-10-22 Richard Sandiford * libc/stdlib/exit.c (exit): Handle null _GLOBAL_REENT->_atexits. 2003-10-20 Bob Wilson * libc/locale/locale.c: Use double quotes in code. * libc/locale/locale.tex: Likewise. * libc/libc.texinfo: Hyphenate "floating-point". * libc/machine/necv70/necv70.tex: Likewise. * libc/stdio/sprintf.c: Likewise. * libc/stdio/sscanf.c: Likewise. * libc/stdlib/atof.c: Likewise. * libc/stdlib/ldtoa.c: Fix comment typo. * libc/stdlib/div.c: Use @ifnottex instead of @ifinfo. * libc/stdlib/ldiv.c: Likewise. * libm/common/s_expm1.c: Likewise. * libm/common/s_ilogb.c: Hyphenate "floating-point". Use "nonzero". * libm/common/s_infinity: Hyphenate "double- and single-precision". * libm/common/s_nan.c: Likewise. Also correct the FUNCTION summary. * libm/common/s_nextafter.c: Fix typo. Hyphenate "double-precision" and "floating-point". * libm/common/s_scalbn.c: Correct the FUNCTION summary. * libm/math/e_pow.c: Fix comment typo. * libm/math/math.tex: Hyphenate "single-precision" and "floating-point". * libm/math/s_asinh.c: Use @ifnottex instead of @ifinfo. * libm/math/s_atan.c: Likewise. * libm/math/s_frexp.c: Likewise. Also use "nonzero". * libm/math/s_isnan.c: Hyphenate "single-precision" and "floating-point". Use "nonzero". * libm/math/s_ldexp.c: Use @ifnottex instead of @ifinfo. * libm/math/w_acos.c: Likewise. * libm/math/w_acosh.c: Likewise. * libm/math/w_asin.c: Likewise. * libm/math/w_atan2.c: Likewise. * libm/math/w_atanh.c: Likewise. * libm/math/w_cosh.c: Likewise. * libm/math/w_exp.c: Likewise. * libm/math/w_exp2.c: Likewise. Add missing @end and missing @tex version of 2^x in the description. * libm/math/w_fmod.c: Use @ifnottex instead of @ifinfo. * libm/math/w_gamma.c: Likewise. * libm/math/w_hypot.c: Likewise. * libm/math/w_j0.c: Likewise. * libm/math/w_sinh.c: Likewise. * libm/math/w_pow.c: Replace "exp1.0nt" with "exponent". * libm/mathfp/mathfp.tex: Hyphenate "single-precision" and "floating-point". * libm/mathfp/e_acosh.c: Use @ifnottex instead of @ifinfo. * libm/mathfp/e_atanh.c: Likewise. * libm/mathfp/e_hypot.c: Likewise. * libm/mathfp/er_lgamma.c: Likewise. * libm/mathfp/s_acos.c: Likewise. * libm/mathfp/s_asine.c: Likewise. * libm/mathfp/s_asinh.c: Likewise. * libm/mathfp/s_atan.c: Likewise. * libm/mathfp/s_atan2.c: Likewise. * libm/mathfp/s_atangent.c: Likewise. * libm/mathfp/s_cosh.c: Likewise. * libm/mathfp/s_exp.c: Likewise. * libm/mathfp/s_fmod.c: Likewise. * libm/mathfp/s_frexp.c: Likewise. Also use "nonzero". * libm/mathfp/s_isnan.c: Hyphenate "single-precision" and "floating-point". Use "nonzero". * libm/math/s_pow.c: Replace "exp1.0nt" with "exponent". * libm/mathfp/s_ldexp.c: Use @ifnottex instead of @ifinfo. * libm/mathfp/s_sineh.c: Likewise. * libm/mathfp/w_jn.c: Likewise. 2003-10-15 Alexandre Oliva * Makefile.am: Add $(MAKE) comments to multido and multiclean lines, to enable parallel make. * Makefile.in: Rebuilt. 2003-10-14 Christopher Faylor * libc/time/clock.c: Clarify documentation of return value when no measurement is available. 2003-09-29 Ian Lance Taylor * libm/configure.in: Check libm_machine_dir, not machine_dir. * libm/configure: Regenerate. * libm/Makefile.in: Ditto. 2003-09-29 J"orn Rennecke * libc/machine/sh/strncpy.S: New file. * libc/machine/sh/Makefile.am: Add entry & rule for new file. * libc/machine/sh/Makefile.in: Regenerate. 2003-09-11 James E Wilson * MAINTAINERS: Update my e-mail address. 2003-09-10 Corinna Vinschen * libc/include/sys/unistd.h: Declare function daemon for Cygwin. 2003-09-09 Jeff Johnston * libc/machine/powerpc/fix64.h: Fix typo for _simdldcheck prototype. * libc/machine/powerpc/simdldtoa.c: Remove prototype for _simdldcheck(). Also add unsigned cast for index variable in for loop using sizeof operators. * libc/machine/powerpc/strtoufix32.c: Remove unused variable. * libc/machine/powerpc/strtosfix64.c: Fix call to _simdldcheck. * libc/machine/powerpc/strtoufix64.c (_strtoufix64_r): Ditto plus fix shift calculation for determining if there is a carry from word2. 2003-09-09 Corinna Vinschen * libc/include/grp.h: Don't define setgrfile, group_from_gid and setgroupent for Cygwin. 2003-09-05 Jeff Johnston * libc/stdlib/exit.c (exit): Setting of struct _atexit ptr p is different for _REENT_SMALL than when using regular reent struct. 2003-09-05 Ben Elliston * libc/ctype/wctype.c (_DEFUN): Remove empty default case, as modern versions of GCC issue a warning. * libc/machine/xscale/memcmp.c (memcmp): Strip trailing whitespace after continuation characters that induces a warning from modern versions of GCC. 2003-09-04 Ben Elliston * libc/stdlib/mstats.c[_ELIX_LEVEL]: Fix guards. #ifndef FOO || FOO >= 2 is invalid; use #if !defined (FOO) || FOO >= 2 instead. 2003-09-02 Thomas Pfaff * libc/stdlib/atexit.c: Rename _REENT to _GLOBAL_REENT throughout. * libc/stdlib/exit.c : Ditto. * libc/stdlib/on_exit.c: Ditto. 2003-08-27 Corinna Vinschen * libc/include/reent.h: Define stat64 as __stat64 when compiling newlib for Cygwin. 2003-08-26 Jeff Johnston * libc/include/sys/stat.h[__CYGWIN__]: Only define stat64 as __stat64 when compiling newlib. 2003-08-26 Jeff Johnston * libc/include/stdio.h: Allow the io64 function prototypes for Cygwin when compiling newlib. * libc/include/sys/stat.h[__CYGWIN__]: Define stat64 as __stat64 to expose the Cygwin struct __stat64 type. * libc/stdio64/fseeko64.c: Use _fstat64_r and pass a struct stat64 pointer. * libc/stdio64/tmpfile64.c(_tmpfile64_r): Call _fopen64_r. 2003-08-23 Christopher Faylor * libc/stdio64/fseeko64.c (fseeko64_r): Rename second fseeko64_r definition to fseeko64. 2003-08-22 Jeff Johnston * libc/include/sys/reent.h: Add _GLOBAL_REENT macro. * libc/stdio: Globally remove/replace all references to fp->_data. Replace with _REENT or _GLOBAL_REENT where appropriate. * libc/stdio/asprintf.c: Ditto. * libc/stdio/fclose.c: Ditto. * libc/stdio/fvwrite.c: Ditto. * libc/stdio/makebuf.c: Ditto. * libc/stdio/refill.c: Ditto. * libc/stdio/local.h: Ditto. * libc/stdio/setvbuf.c: Ditto. * libc/stdio/sscanf.c: Ditto. * libc/stdio/stdio.c: Ditto. * libc/stdio/ungetc.c: Ditto. * libc/stdio/vfscanf.c: Ditto. * libc/stdio/vsscanf.c: Ditto. * libc/stdio/fopen.c: Ditto. Also use _fseek_r in _fopen_r. * libc/stdio/vasprintf.c: Ditto. Also call _vfprintf_r directly. * libc/stdio/vsnprintf.c: Ditto. * libc/stdio/vsprintf.c: Ditto. * libc/stdio/fcloseall.c(fcloseall): Use _GLOBAL_REENT macro instead of _REENT to walk file list. * libc/stdio/fflush.c: Ditto. * libc/stdio/fgetpos.c: Add reentrant version and have regular version call reentrant version with _REENT argument. * libc/stdio/fsetpos.c: Ditto. * libc/stdio/fseek.c: Ditto. * libc/stdio/fseeko.c: Ditto. * libc/stdio/ftell.c: Ditto. * libc/stdio/ftello.c: Ditto. * libc/stdio/freopen.c: Ditto. * libc/stdio/findfp.c: Use _GLOBAL_REENT pointer when adding new files to chain. Also use _GLOBAL_REENT pointer for cleaning up. * libc/stdio/fiprintf.c: Reformatted to minimize duplicate code. * libc/stdio/siprintf.c: Ditto. * libc/stdio/iprintf.c: Ditto. * libc/stdio/fprintf.c: Ditto. * libc/stdio/printf.c: Ditto. * libc/stdio/snprintf.c: Call _vfprintf_r directly. * libc/stdio/sprintf.c: Ditto. * libc/stdio/vprintf.c: Ditto. Also add _REENT_ONLY check. * libc/stdio/rewind.c: Call _fseek_r directly. * libc/stdio/tmpfile.c: Call _fopen_r and _remove_r directly. * libc/stdio/vfprintf.c (_VFPRINTF_R): Change _r routines to use data pointer. (get_arg): Add extra struct _reent pointer argument. * libc/stdio64/fgetpos64.c: Add _r versions, remove any reference to fp->_data. * libc/stdio64/fopen64.c: Ditto. * libc/stdio64/freopen64.c: Ditto. * libc/stdio64/fsetpos64.c: Ditto. * libc/stdio64/ftello64.c: Ditto. * libc/stdio64/local64.h: Ditto. * libc/stdio64/stdio64.c: Ditto. * libc/stdio64/fseeko64.c: Ditto plus use _fstat_r instead of _fstat64_r for the meantime. 2003-08-19 Jeff Johnston * libc/stdlib/mallocr.c (mALLOc, rEALLOc, mEMEALIGn): Enhance overflow detection. 2003-08-13 Aldy Hernandez * libc/machine/powerpc/machine/stdlib.h: Wrap SPE functions in extern "C". 2003-08-13 Jeff Johnston * libc/include/math.h: Add prototypes for __signbitf and __signbitd. 2003-07-31 Jeff Johnston * libc/ctype/iswalpha.c: Fix calls to __jp2uc to pass the correct type of conversion when dealing with EUCJP or SJIS. * libc/ctype/iswblank.c: Ditto. * libc/ctype/iswcntrl.c: Ditto. * libc/ctype/iswprint.c: Ditto. * libc/ctype/iswpunct.c: Ditto. * libc/ctype/iswspace.c: Ditto. * libc/ctype/towlower.c: Ditto. * libc/ctype/towupper.c: Ditto. 2003-07-31 Nick Clifton * libc/sys/sysnecv850/crt0.S (_start): Allocate 4 slots on stack before calling main, in case it saves its argument registers. Remove reference to deleted v850ea port. * configure.host: Remove reference to deleted v850ea port. Do not use -mv850 when building for v850e target. This prevents the ctbp system register from being initialised. 2003-07-29 Honda Hiroki * libc/stdio/vfprintf.c: Set output size to 1 when we have %f format with precision 0 and # flag not specified. 2003-07-29 Alexandre Oliva * libc/machine/mn10300/setjmp.S: Never emit both .am33 and .am33_2. 2003-07-25 Christopher Faylor * libc/stdio64/fdopen64.c: Include sys/lock.h. 2003-07-25 Christopher Faylor * configure.host: Find cygwin include directory, when appropriate. 2003-07-24 Christopher Faylor * libc/stdio64/fdopen64.c: New file. * libc/stdio64/Makefile.am (LIB_OBJS): Add fdopen64.o * libc/stdio64/Makefile.in: Regenerate. * libc/include/stdio.h (fdopen64): Define. * libc/include/stdio.h (_fdopen64_r): Ditto. 2003-07-10 Alexandre Oliva 2000-04-27 Alexandre Oliva * libc/include/machine/setjmp.h (_JBLEN, AM33/2.0): Set to 26. * libc/machine/mn10300/setjmp.S (setjmp, longjmp): Save and restore callee-saved FP registers. 2003-07-10 J"orn Rennecke * libc/include/sys/unistd.h (ftruncate, truncate): Also declare for __sh__. * libc/sys/sh/Makefile.am (lib_a_SOURCES): Add ftruncate.c and truncate.c. * libc/sys/sh/Makefile.in: Regenerate. * libc/sys/sh/sys/syscall.h: (SYS_truncate, SYS_ftruncate): Define. * libc/sys/sh/ftruncate.c: New file. * libc/sys/sh/truncate.c: Likewise. 2003-07-09 Alexandre Oliva * libc/include/math.h (nan, nanf): Update prototype to C99. * libm/common/s_nan.c (nan): Likewise. * libm/common/s_nanf.c (nanf, nan): Likewise. * libc/sys/linux/cmath/math_private.h (nan, nanf): Likewise. 2003-07-07 Jeff Johnston * libc/include/stdbool.h: Removed as this is defined by gcc. 2003-07-03 Shaun Jackman * libc/include/stdbool.h: New header file defined by C99. 2003-07-02 Jeff Johnston * libc/include/sys/types.h (int8_t): Make signed. 2003-07-02 Jeff Johnston * libc/sys/linux/include/mqueue.h: Add include of . 2003-06-27 Jose Goncalves * libc/sys/linux/mq_open.c (mq_open): Only set created flag on if we actually created the shared memory file exclusively. 2003-06-27 Joe Vornehm * libm/common/s_fpclassify.c (__fpclassifyf): Fix comparisons to account for unsigned internal value w. 2003-06-26 Jeff Johnston * libc/sys/linux/mq_open.c (mq_open): Must allocate rdbuf and wrbuf for a non-creating open. 2003-06-24 Kazu Hirata * libc/machine/h8300/setarch.h: New. * libc/machine/h8300/memcpy.S: Use it. * libc/machine/h8300/memset.S: Likewise. * libc/machine/h8300/reg_memcpy.S: Likewise. * libc/machine/h8300/reg_memset.S: Likewise. * libc/machine/h8300/setjmp.S: Likewise. * libc/machine/h8300/strcmp.S: Likewise. 2003-06-24 Richard Sandiford * libc/sys/h8300hms/crt0.S (_start): Fix register sizes in call to atexit(). 2003-06-20 Jeff Johnston * configure.host (iq2000): Add tabs. 2003-06-20 Jeff Johnston * libc/include/sys/reent.h (_REENT_INIT_PTR): Fix macros to handle latest on_exit change. * libc/sys/linux/Makefile.am: Remove special compilation for malloc.c and mcheck.c. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/mntent.c: Add definition of _LIBC flag after including . * libc/sys/linux/mcheck.c: Ditto. * libc/sys/linux/malloc.c: Ditto plus define _GNU_SOURCE for . * libc/sys/linux/intl/Makefile.am: Remove -D_LIBC and add -DNOT_IN_libc to C flags. * libc/sys/linux/intl/Makefile.in: Regenerated. * libc/sys/linux/intl/config.h: Add definition of _LIBC. * libc/sys/linux/linuxthreads/semaphore.h: Include . * libc/sys/linux/sys/dirent.h: Define _LIBC and NOT_IN_libc after including . * libc/sys/linux/sys/lock.h: Ditto. 2003-06-11 Nick Clifton * libc/reent/reent.c (reclaim_reent): Fix typo in code to free _on_exit_args_ptr. 2003-06-10 Stan Cox Anthony Green * configure.host: Add iq2000 support. * newlib/libc/include/machine/ieeefp.h: Ditto. * newlib/libc/include/machine/setjmp.h: Ditto. * libc/machine/iq2000, libc/machine/iq2000/setjmp.S, libc/machine/iq2000/aclocal.m4, libc/machine/iq2000/configure, libc/machine/iq2000/configure.in, libc/machine/iq2000/Makefile.am, libc/machine/iq2000/Makefile.in: New files. 2003-06-10 Richard Sandiford * libc/sys/h8300hms/setarch.h: New file. * libc/sys/h8300hms/close.S, libc/sys/h8300hms/fstat.S, libc/sys/h8300hms/lseek.S, libc/sys/h8300hms/open.S, libc/sys/h8300hms/read.S, libc/sys/h8300hms/stat.S, libc/sys/h8300hms/write.S, libc/sys/h8300hms/crt0.S: Use it. 2003-06-06 Jeff Johnston * libc/argz/argz_add.c: Change to use _DEFUN macro for function definition. * libc/argz/argz_add_sep.c: Ditto. * libc/argz/argz_append.c libc/argz/argz_count.c: Ditto. * libc/argz/argz_create.c libc/argz/argz_create_sep.c: Ditto. * libc/argz/argz_delete.c libc/argz/argz_extract.c: Ditto. * libc/argz/argz_insert.c libc/argz/argz_next.c: Ditto. * libc/argz/argz_replace.c libc/argz/argz_stringify.c: Ditto. * libc/argz/envz_add.c libc/argz/envz_entry.c: Ditto. * libc/argz/envz_get.c libc/argz/envz_merge.c: Ditto. * libc/argz/envz_remove.c libc/argz/envz_strip.c: Ditto. * libc/locale/nl_langinfo.c libc/misc/ffs.c: Ditto. * libc/posix/closedir.c libc/posix/creat.c: Ditto. * libc/posix/execl.c libc/posix/execle.c: Ditto. * libc/posix/execlp.c libc/posix/execve.c: Ditto. * libc/posix/isatty.c libc/posix/opendir.c: Ditto. * libc/posix/popen.c libc/posix/readdir.c: Ditto. * libc/posix/readdir_r.c libc/posix/rewinddir.c: Ditto. * libc/posix/scandir.c libc/posix/seekdir.c: Ditto. * libc/posix/telldir.c libc/search/hcreate.c: Ditto. * libc/search/tdelete.c libc/search/tdestroy.c: Ditto. * libc/search/tfind.c libc/search/tsearch.c: Ditto. * libc/search/twalk.c libc/signal/signal.c: Ditto. 2003-06-05 Nick Clifton * libc/include/sys/reent.h (struct _on_exit_args): New structure containing fields used by the on_exit() function. (struct _atexit): Include struct _on_exit_args. For _REENT_SMALL do his via a pointer that is initialised when needed. * libc/reent/reent.c (_reclaim_reent): Free the _on_exit_args structure, if one has been allocated. * libc/stdlib/atexit.c (atexit): Update indirection to _fntypes field. * libc/stdlib/on_exit.c (on_exit): Indirect via the _on_exit_args structure. For _REENT_SMALL, allocate a structure if one does not exist. * libc/stdlib/exit.c (exit): Indirect via the _on_exit_args structure. 2003-06-04 Jeff Johnston * libc/sys/linux/net/Makefile.am: Remove extraneous markers. * libc/sys/linux/net/Makefile.in: Regenerated. 2003-06-03 Jeff Johnston * libc/reent/execr.c: Use _DEFUN macro for function declaration. * libc/reent/fcntlr.c: Ditto. * libc/reent/fstat64r.c: Ditto. * libc/reent/linkr.c: Ditto. * libc/reent/lseek64r.c: Ditto. * libc/reent/lseekr.c: Ditto. * libc/reent/openr.c: Ditto. * libc/reent/readr.c: Ditto. * libc/reent/reent.c: Ditto. * libc/reent/sbrkr.c: Ditto. * libc/reent/signalr.c: Ditto. * libc/reent/signgam.c: Ditto. * libc/reent/statr.c: Ditto. * libc/reent/timer.c: Ditto. * libc/reent/unlinkr.c: Ditto. * libc/reent/writer.c: Ditto. * libc/syscalls/sysclose.c: Ditto. * libc/syscalls/sysexecve.c: Ditto. * libc/syscalls/sysfcntl.c: Ditto. * libc/syscalls/sysfork.c: Ditto. * libc/syscalls/sysfstat.c: Ditto. * libc/syscalls/sysgetpid.c: Ditto. * libc/syscalls/sysgettod.c: Ditto. * libc/syscalls/syskill.c: Ditto. * libc/syscalls/syslink.c: Ditto. * libc/syscalls/syslseek.c: Ditto. * libc/syscalls/sysopen.c: Ditto. * libc/syscalls/sysread.c: Ditto. * libc/syscalls/syssbrk.c: Ditto. * libc/syscalls/sysstat.c: Ditto. * libc/syscalls/systimes.c: Ditto. * libc/syscalls/sysunlink.c: Ditto. * libc/syscalls/syswait.c: Ditto. * libc/syscalls/syswrite.c: Ditto. 2003-06-03 Till Straumann * libc/time/tzset_r.c: Change local variables that are set via sscanf using the %h format specifier to be unsigned short instead of int. 2003-05-30 Kelley Cook * configure.host: Allow i[34567]86 variant. * configure.in: Likewise. * README: Likewise to the docs. * configure: Regenerated. * Makefile.in: Ditto. 2003-05-28 Jeff Johnston Tom Fitzsimmons * configure.in: Add iconvdata support for x86 linux. * configure: Regenerated. * libc/sys/linux/Makefile.am: Add EL/IX level 3 network, dynamic library, iconv, and linuxthreads support. * libc/sys/linux/configure.in: Ditto. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/configure: Ditto. * iconvdata/EUC-JP.irreversible: New file. * iconvdata/Makefile.am: Ditto. * iconvdata/Makefile.in: Ditto. * iconvdata/SJIS.irreversible: Ditto. * iconvdata/aclocal.m4: Ditto. * iconvdata/configure: Ditto. * iconvdata/configure.in: Ditto. * iconvdata/dummy.c: Ditto. * iconvdata/euc-jp.c: Ditto. * iconvdata/gconv-modules: Ditto. * iconvdata/jis0201.c: Ditto. * iconvdata/jis0201.h: Ditto. * iconvdata/jis0208.c: Ditto. * iconvdata/jis0208.h: Ditto. * iconvdata/jis0212.c: Ditto. * iconvdata/jis0212.h: Ditto. * iconvdata/sjis.c: Ditto. * libc/include/errno.h: Protect definition of error_t. * libc/sys/linux/gethostid.c: New file. * libc/sys/linux/sethostid.c: Ditto. * libc/sys/linux/dl/Makefile.am: Ditto. * libc/sys/linux/dl/Makefile.in: Ditto. * libc/sys/linux/dl/abi-tag.h: Ditto. * libc/sys/linux/dl/atomicity.h: Ditto. * libc/sys/linux/dl/dl-addr.c: Ditto. * libc/sys/linux/dl/dl-cache.c: Ditto. * libc/sys/linux/dl/dl-cache.h: Ditto. * libc/sys/linux/dl/dl-close.c: Ditto. * libc/sys/linux/dl/dl-debug.c: Ditto. * libc/sys/linux/dl/dl-deps.c: Ditto. * libc/sys/linux/dl/dl-dst.h: Ditto. * libc/sys/linux/dl/dl-error.c: Ditto. * libc/sys/linux/dl/dl-fini.c: Ditto. * libc/sys/linux/dl/dl-init.c: Ditto. * libc/sys/linux/dl/dl-iteratephdr.c: Ditto. * libc/sys/linux/dl/dl-libc.c: Ditto. * libc/sys/linux/dl/dl-librecon.h: Ditto. * libc/sys/linux/dl/dl-load.c: Ditto. * libc/sys/linux/dl/dl-lookup.c: Ditto. * libc/sys/linux/dl/dl-lookupcfg.h: Ditto. * libc/sys/linux/dl/dl-minimal.c: Ditto. * libc/sys/linux/dl/dl-misc.c: Ditto. * libc/sys/linux/dl/dl-object.c: Ditto. * libc/sys/linux/dl/dl-open.c: Ditto. * libc/sys/linux/dl/dl-osinfo.h: Ditto. * libc/sys/linux/dl/dl-profile.c: Ditto. * libc/sys/linux/dl/dl-profstub.c: Ditto. * libc/sys/linux/dl/dl-reloc.c: Ditto. * libc/sys/linux/dl/dl-runtime.c: Ditto. * libc/sys/linux/dl/dl-support.c: Ditto. * libc/sys/linux/dl/dl-sym.c: Ditto. * libc/sys/linux/dl/dl-version.c: Ditto. * libc/sys/linux/dl/dlfcn.h: Ditto. * libc/sys/linux/dl/do-lookup.h: Ditto. * libc/sys/linux/dl/do-rel.h: Ditto. * libc/sys/linux/dl/dynamic-link.h: Ditto. * libc/sys/linux/dl/kernel-features.h: Ditto. * libc/sys/linux/dl/ldsodefs.h: Ditto. * libc/sys/linux/dl/libintl.h: Ditto. * libc/sys/linux/dl/trusted-dirs.h: Ditto. * libc/sys/linux/dl/unsecvars.h: Ditto. * libc/sys/linux/iconv/Makefile.am: Ditto. * libc/sys/linux/iconv/Makefile.in: Ditto. * libc/sys/linux/iconv/categories.def: Ditto. * libc/sys/linux/iconv/dummy-repertoire.c: Ditto. * libc/sys/linux/iconv/gconv.c: Ditto. * libc/sys/linux/iconv/gconv_builtin.c: Ditto. * libc/sys/linux/iconv/gconv_builtin.h: Ditto. * libc/sys/linux/iconv/gconv_cache.c: Ditto. * libc/sys/linux/iconv/gconv_charset.h: Ditto. * libc/sys/linux/iconv/gconv_close.c: Ditto. * libc/sys/linux/iconv/gconv_conf.c: Ditto. * libc/sys/linux/iconv/gconv_db.c: Ditto. * libc/sys/linux/iconv/gconv_dl.c: Ditto. * libc/sys/linux/iconv/gconv_int.h: Ditto. * libc/sys/linux/iconv/gconv_open.c: Ditto. * libc/sys/linux/iconv/gconv_simple.c: Ditto. * libc/sys/linux/iconv/gconv_trans.c: Ditto. * libc/sys/linux/iconv/hash-string.h: Ditto. * libc/sys/linux/iconv/iconv.c: Ditto. * libc/sys/linux/iconv/iconv.h: Ditto. * libc/sys/linux/iconv/iconv_charmap.c: Ditto. * libc/sys/linux/iconv/iconv_close.c: Ditto. * libc/sys/linux/iconv/iconv_open.c: Ditto. * libc/sys/linux/iconv/iconvconfig.c: Ditto. * libc/sys/linux/iconv/iconvconfig.h: Ditto. * libc/sys/linux/iconv/loadinfo.h: Ditto. * libc/sys/linux/iconv/localeinfo.h: Ditto. * libc/sys/linux/iconv/loop.c: Ditto. * libc/sys/linux/iconv/skeleton.c: Ditto. * libc/sys/linux/iconv/strtab.c: Ditto. * libc/sys/linux/include/dl-hash.h: Ditto. * libc/sys/linux/include/dlfcn.h: Ditto. * libc/sys/linux/include/fnmatch.h: Ditto. * libc/sys/linux/include/gconv.h: Ditto. * libc/sys/linux/include/glob.h: Ditto. * libc/sys/linux/include/hesiod.h: Ditto. * libc/sys/linux/include/ifaddrs.h: Ditto. * libc/sys/linux/include/libc_private.h: Ditto. * libc/sys/linux/include/link.h: Ditto. * libc/sys/linux/include/namespace.h: Ditto. * libc/sys/linux/include/netconfig.h: Ditto. * libc/sys/linux/include/netdb.h: Ditto. * libc/sys/linux/include/nsswitch.h: Ditto. * libc/sys/linux/include/regex.h: Ditto. * libc/sys/linux/include/resolv.h: Ditto. * libc/sys/linux/include/rune.h: Ditto. * libc/sys/linux/include/runetype.h: Ditto. * libc/sys/linux/include/semaphore.h: Ditto. * libc/sys/linux/include/setlocale.h: Ditto. * libc/sys/linux/include/un-namespace.h: Ditto. * libc/sys/linux/include/wordexp.h: Ditto. * libc/sys/linux/include/arpa/ftp.h: Ditto. * libc/sys/linux/include/arpa/inet.h: Ditto. * libc/sys/linux/include/arpa/nameser.h: Ditto. * libc/sys/linux/include/arpa/nameser_compat.h: Ditto. * libc/sys/linux/include/arpa/telnet.h: Ditto. * libc/sys/linux/include/arpa/tftp.h: Ditto. * libc/sys/linux/include/net/bpf.h: Ditto. * libc/sys/linux/include/net/bpf_compat.h: Ditto. * libc/sys/linux/include/net/bpfdesc.h: Ditto. * libc/sys/linux/include/net/bridge.h: Ditto. * libc/sys/linux/include/net/ethernet.h: Ditto. * libc/sys/linux/include/net/fddi.h: Ditto. * libc/sys/linux/include/net/if.h: Ditto. * libc/sys/linux/include/net/if_arc.h: Ditto. * libc/sys/linux/include/net/if_arp.h: Ditto. * libc/sys/linux/include/net/if_atm.h: Ditto. * libc/sys/linux/include/net/if_dl.h: Ditto. * libc/sys/linux/include/net/if_gif.h: Ditto. * libc/sys/linux/include/net/if_ieee80211.h: Ditto. * libc/sys/linux/include/net/if_llc.h: Ditto. * libc/sys/linux/include/net/if_media.h: Ditto. * libc/sys/linux/include/net/if_mib.h: Ditto. * libc/sys/linux/include/net/if_ppp.h: Ditto. * libc/sys/linux/include/net/if_pppvar.h: Ditto. * libc/sys/linux/include/net/if_slvar.h: Ditto. * libc/sys/linux/include/net/if_sppp.h: Ditto. * libc/sys/linux/include/net/if_stf.h: Ditto. * libc/sys/linux/include/net/if_tap.h: Ditto. * libc/sys/linux/include/net/if_tapvar.h: Ditto. * libc/sys/linux/include/net/if_tun.h: Ditto. * libc/sys/linux/include/net/if_tunvar.h: Ditto. * libc/sys/linux/include/net/if_types.h: Ditto. * libc/sys/linux/include/net/if_var.h: Ditto. * libc/sys/linux/include/net/if_vlan_var.h: Ditto. * libc/sys/linux/include/net/intrq.h: Ditto. * libc/sys/linux/include/net/iso88025.h: Ditto. * libc/sys/linux/include/net/net_osdep.h: Ditto. * libc/sys/linux/include/net/netisr.h: Ditto. * libc/sys/linux/include/net/pfil.h: Ditto. * libc/sys/linux/include/net/pfkeyv2.h: Ditto. * libc/sys/linux/include/net/ppp_comp.h: Ditto. * libc/sys/linux/include/net/ppp_defs.h: Ditto. * libc/sys/linux/include/net/radix.h: Ditto. * libc/sys/linux/include/net/raw_cb.h: Ditto. * libc/sys/linux/include/net/route.h: Ditto. * libc/sys/linux/include/net/slcompress.h: Ditto. * libc/sys/linux/include/net/slip.h: Ditto. * libc/sys/linux/include/net/zlib.h: Ditto. * libc/sys/linux/include/netinet/icmp6.h: Ditto. * libc/sys/linux/include/netinet/icmp_var.h: Ditto. * libc/sys/linux/include/netinet/if_atm.h: Ditto. * libc/sys/linux/include/netinet/if_ether.h: Ditto. * libc/sys/linux/include/netinet/igmp.h: Ditto. * libc/sys/linux/include/netinet/igmp_var.h: Ditto. * libc/sys/linux/include/netinet/in.h: Ditto. * libc/sys/linux/include/netinet/in_gif.h: Ditto. * libc/sys/linux/include/netinet/in_pcb.h: Ditto. * libc/sys/linux/include/netinet/in_systm.h: Ditto. * libc/sys/linux/include/netinet/in_var.h: Ditto. * libc/sys/linux/include/netinet/ip.h: Ditto. * libc/sys/linux/include/netinet/ip6.h: Ditto. * libc/sys/linux/include/netinet/ip_dummynet.h: Ditto. * libc/sys/linux/include/netinet/ip_ecn.h: Ditto. * libc/sys/linux/include/netinet/ip_encap.h: Ditto. * libc/sys/linux/include/netinet/ip_flow.h: Ditto. * libc/sys/linux/include/netinet/ip_fw.h: Ditto. * libc/sys/linux/include/netinet/ip_icmp.h: Ditto. * libc/sys/linux/include/netinet/ip_mroute.h: Ditto. * libc/sys/linux/include/netinet/ip_var.h: Ditto. * libc/sys/linux/include/netinet/ipprotosw.h: Ditto. * libc/sys/linux/include/netinet/tcp.h: Ditto. * libc/sys/linux/include/netinet/tcp_debug.h: Ditto. * libc/sys/linux/include/netinet/tcp_fsm.h: Ditto. * libc/sys/linux/include/netinet/tcp_seq.h: Ditto. * libc/sys/linux/include/netinet/tcp_timer.h: Ditto. * libc/sys/linux/include/netinet/tcp_var.h: Ditto. * libc/sys/linux/include/netinet/tcpip.h: Ditto. * libc/sys/linux/include/netinet/udp.h: Ditto. * libc/sys/linux/include/netinet/udp_var.h: Ditto. * libc/sys/linux/include/netinet6/ah.h: Ditto. * libc/sys/linux/include/netinet6/ah6.h: Ditto. * libc/sys/linux/include/netinet6/esp.h: Ditto. * libc/sys/linux/include/netinet6/esp6.h: Ditto. * libc/sys/linux/include/netinet6/esp_rijndael.h: Ditto. * libc/sys/linux/include/netinet6/icmp6.h: Ditto. * libc/sys/linux/include/netinet6/in6.h: Ditto. * libc/sys/linux/include/netinet6/in6_gif.h: Ditto. * libc/sys/linux/include/netinet6/in6_ifattach.h: Ditto. * libc/sys/linux/include/netinet6/in6_pcb.h: Ditto. * libc/sys/linux/include/netinet6/in6_prefix.h: Ditto. * libc/sys/linux/include/netinet6/in6_var.h: Ditto. * libc/sys/linux/include/netinet6/ip6.h: Ditto. * libc/sys/linux/include/netinet6/ip6_ecn.h: Ditto. * libc/sys/linux/include/netinet6/ip6_fw.h: Ditto. * libc/sys/linux/include/netinet6/ip6_mroute.h: Ditto. * libc/sys/linux/include/netinet6/ip6_var.h: Ditto. * libc/sys/linux/include/netinet6/ip6protosw.h: Ditto. * libc/sys/linux/include/netinet6/ipcomp.h: Ditto. * libc/sys/linux/include/netinet6/ipcomp6.h: Ditto. * libc/sys/linux/include/netinet6/ipsec.h: Ditto. * libc/sys/linux/include/netinet6/ipsec6.h: Ditto. * libc/sys/linux/include/netinet6/mld6_var.h: Ditto. * libc/sys/linux/include/netinet6/nd6.h: Ditto. * libc/sys/linux/include/netinet6/pim6.h: Ditto. * libc/sys/linux/include/netinet6/pim6_var.h: Ditto. * libc/sys/linux/include/netinet6/raw_ip6.h: Ditto. * libc/sys/linux/include/netinet6/scope6_var.h: Ditto. * libc/sys/linux/include/netinet6/tcp6_var.h: Ditto. * libc/sys/linux/include/netinet6/udp6_var.h: Ditto. * libc/sys/linux/include/netns/idp.h: Ditto. * libc/sys/linux/include/netns/idp_var.h: Ditto. * libc/sys/linux/include/netns/ns.h: Ditto. * libc/sys/linux/include/netns/ns_error.h: Ditto. * libc/sys/linux/include/netns/ns_if.h: Ditto. * libc/sys/linux/include/netns/ns_pcb.h: Ditto. * libc/sys/linux/include/netns/sp.h: Ditto. * libc/sys/linux/include/netns/spidp.h: Ditto. * libc/sys/linux/include/netns/spp_debug.h: Ditto. * libc/sys/linux/include/netns/spp_timer.h: Ditto. * libc/sys/linux/include/netns/spp_var.h: Ditto. * libc/sys/linux/include/rpc/Makefile: Ditto. * libc/sys/linux/include/rpc/auth.h: Ditto. * libc/sys/linux/include/rpc/auth_des.h: Ditto. * libc/sys/linux/include/rpc/auth_kerb.h: Ditto. * libc/sys/linux/include/rpc/auth_unix.h: Ditto. * libc/sys/linux/include/rpc/clnt.h: Ditto. * libc/sys/linux/include/rpc/clnt_soc.h: Ditto. * libc/sys/linux/include/rpc/clnt_stat.h: Ditto. * libc/sys/linux/include/rpc/des.h: Ditto. * libc/sys/linux/include/rpc/des_crypt.h: Ditto. * libc/sys/linux/include/rpc/nettype.h: Ditto. * libc/sys/linux/include/rpc/pmap_clnt.h: Ditto. * libc/sys/linux/include/rpc/pmap_prot.h: Ditto. * libc/sys/linux/include/rpc/pmap_rmt.h: Ditto. * libc/sys/linux/include/rpc/raw.h: Ditto. * libc/sys/linux/include/rpc/rpc.h: Ditto. * libc/sys/linux/include/rpc/rpc_com.h: Ditto. * libc/sys/linux/include/rpc/rpc_msg.h: Ditto. * libc/sys/linux/include/rpc/rpcb_clnt.h: Ditto. * libc/sys/linux/include/rpc/rpcb_prot.h: Ditto. * libc/sys/linux/include/rpc/rpcb_prot.x: Ditto. * libc/sys/linux/include/rpc/rpcent.h: Ditto. * libc/sys/linux/include/rpc/svc.h: Ditto. * libc/sys/linux/include/rpc/svc_auth.h: Ditto. * libc/sys/linux/include/rpc/svc_dg.h: Ditto. * libc/sys/linux/include/rpc/svc_soc.h: Ditto. * libc/sys/linux/include/rpc/types.h: Ditto. * libc/sys/linux/include/rpc/xdr.h: Ditto. * libc/sys/linux/intl/Makefile.am: Ditto. * libc/sys/linux/intl/Makefile.in: Ditto. * libc/sys/linux/intl/bindtextdom.c: Ditto. * libc/sys/linux/intl/catgets.c: Ditto. * libc/sys/linux/intl/catgetsinfo.h: Ditto. * libc/sys/linux/intl/config.h: Ditto. * libc/sys/linux/intl/dcgettext.c: Ditto. * libc/sys/linux/intl/dcigettext.c: Ditto. * libc/sys/linux/intl/dcngettext.c: Ditto. * libc/sys/linux/intl/dgettext.c: Ditto. * libc/sys/linux/intl/dngettext.c: Ditto. * libc/sys/linux/intl/explodename.c: Ditto. * libc/sys/linux/intl/finddomain.c: Ditto. * libc/sys/linux/intl/gettext.c: Ditto. * libc/sys/linux/intl/gettext.h: Ditto. * libc/sys/linux/intl/gettextP.h: Ditto. * libc/sys/linux/intl/hash-string.h: Ditto. * libc/sys/linux/intl/l10nflist.c: Ditto. * libc/sys/linux/intl/loadinfo.h: Ditto. * libc/sys/linux/intl/loadmsgcat.c: Ditto. * libc/sys/linux/intl/locale.alias: Ditto. * libc/sys/linux/intl/localealias.c: Ditto. * libc/sys/linux/intl/ngettext.c: Ditto. * libc/sys/linux/intl/open_catalog.c: Ditto. * libc/sys/linux/intl/plural.c: Ditto. * libc/sys/linux/intl/plural.y: Ditto. * libc/sys/linux/intl/stpcpy.c: Ditto. * libc/sys/linux/intl/textdomain.c: Ditto. * libc/sys/linux/linuxthreads/LICENSE: Ditto. * libc/sys/linux/linuxthreads/Makefile.am: Ditto. * libc/sys/linux/linuxthreads/Makefile.in: Ditto. * libc/sys/linux/linuxthreads/aclocal.m4: Ditto. * libc/sys/linux/linuxthreads/attr.c: Ditto. * libc/sys/linux/linuxthreads/barrier.c: Ditto. * libc/sys/linux/linuxthreads/bp-sym.h: Ditto. * libc/sys/linux/linuxthreads/cancel.c: Ditto. * libc/sys/linux/linuxthreads/condvar.c: Ditto. * libc/sys/linux/linuxthreads/config.h: Ditto. * libc/sys/linux/linuxthreads/configure: Ditto. * libc/sys/linux/linuxthreads/configure.in: Ditto. * libc/sys/linux/linuxthreads/defs.awk: Ditto. * libc/sys/linux/linuxthreads/ecmutex.c: Ditto. * libc/sys/linux/linuxthreads/events.c: Ditto. * libc/sys/linux/linuxthreads/getcpuclockid.c: Ditto. * libc/sys/linux/linuxthreads/getreent.c: Ditto. * libc/sys/linux/linuxthreads/internals.h: Ditto. * libc/sys/linux/linuxthreads/join.c: Ditto. * libc/sys/linux/linuxthreads/joinrace.c: Ditto. * libc/sys/linux/linuxthreads/kernel-features.h: Ditto. * libc/sys/linux/linuxthreads/libc-internal.h: Ditto. * libc/sys/linux/linuxthreads/libc-symbols.h: Ditto. * libc/sys/linux/linuxthreads/linuxthreads.texi: Ditto. * libc/sys/linux/linuxthreads/lockfile.c: Ditto. * libc/sys/linux/linuxthreads/manager.c: Ditto. * libc/sys/linux/linuxthreads/mq_notify.c: Ditto. * libc/sys/linux/linuxthreads/mutex.c: Ditto. * libc/sys/linux/linuxthreads/no-tsd.c: Ditto. * libc/sys/linux/linuxthreads/oldsemaphore.c: Ditto. * libc/sys/linux/linuxthreads/posix-timer.h: Ditto. * libc/sys/linux/linuxthreads/prio.c: Ditto. * libc/sys/linux/linuxthreads/proc_service.h: Ditto. * libc/sys/linux/linuxthreads/pt-machine.c: Ditto. * libc/sys/linux/linuxthreads/ptclock_gettime.c: Ditto. * libc/sys/linux/linuxthreads/ptclock_settime.c: Ditto. * libc/sys/linux/linuxthreads/ptfork.c: Ditto. * libc/sys/linux/linuxthreads/pthread.c: Ditto. * libc/sys/linux/linuxthreads/ptlongjmp.c: Ditto. * libc/sys/linux/linuxthreads/queue.h: Ditto. * libc/sys/linux/linuxthreads/reent.c: Ditto. * libc/sys/linux/linuxthreads/reqsyscalls.c: Ditto. * libc/sys/linux/linuxthreads/restart.h: Ditto. * libc/sys/linux/linuxthreads/rwlock.c: Ditto. * libc/sys/linux/linuxthreads/semaphore.c: Ditto. * libc/sys/linux/linuxthreads/semaphore.h: Ditto. * libc/sys/linux/linuxthreads/shlib-compat.h: Ditto. * libc/sys/linux/linuxthreads/signals.c: Ditto. * libc/sys/linux/linuxthreads/specific.c: Ditto. * libc/sys/linux/linuxthreads/spinlock.c: Ditto. * libc/sys/linux/linuxthreads/spinlock.h: Ditto. * libc/sys/linux/linuxthreads/sysctl.c: Ditto. * libc/sys/linux/linuxthreads/td_init.c: Ditto. * libc/sys/linux/linuxthreads/td_log.c: Ditto. * libc/sys/linux/linuxthreads/td_symbol_list.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_clear_event.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_delete.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_enable_stats.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_event_addr.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_event_getmsg.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_get_nthreads.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_get_ph.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_get_stats.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_map_id2thr.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_map_lwp2thr.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_new.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_reset_stats.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_set_event.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_setconcurrency.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_thr_iter.c: Ditto. * libc/sys/linux/linuxthreads/td_ta_tsd_iter.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_clear_event.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_dbresume.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_dbsuspend.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_event_enable.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_event_getmsg.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_get_info.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_getfpregs.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_getgregs.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_getxregs.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_getxregsize.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_set_event.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_setfpregs.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_setgregs.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_setprio.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_setsigpending.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_setxregs.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_sigsetmask.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_tsd.c: Ditto. * libc/sys/linux/linuxthreads/td_thr_validate.c: Ditto. * libc/sys/linux/linuxthreads/testrtsig.h: Ditto. * libc/sys/linux/linuxthreads/thread_db.h: Ditto. * libc/sys/linux/linuxthreads/thread_dbP.h: Ditto. * libc/sys/linux/linuxthreads/timer_create.c: Ditto. * libc/sys/linux/linuxthreads/timer_delete.c: Ditto. * libc/sys/linux/linuxthreads/timer_getoverr.c: Ditto. * libc/sys/linux/linuxthreads/timer_gettime.c: Ditto. * libc/sys/linux/linuxthreads/timer_routines.c: Ditto. * libc/sys/linux/linuxthreads/timer_settime.c: Ditto. * libc/sys/linux/linuxthreads/tst-cancel.c: Ditto. * libc/sys/linux/linuxthreads/tst-context.c: Ditto. * libc/sys/linux/linuxthreads/tststack.c: Ditto. * libc/sys/linux/linuxthreads/unload.c: Ditto. * libc/sys/linux/linuxthreads/weaks.c: Ditto. * libc/sys/linux/linuxthreads/wrapsyscall.c: Ditto. * libc/sys/linux/linuxthreads/bits/initspin.h: Ditto. * libc/sys/linux/linuxthreads/bits/libc-lock.h: Ditto. * libc/sys/linux/linuxthreads/bits/libc-tsd.h: Ditto. * libc/sys/linux/linuxthreads/bits/local_lim.h: Ditto. * libc/sys/linux/linuxthreads/bits/posix_opt.h: Ditto. * libc/sys/linux/linuxthreads/bits/pthreadtypes.h: Ditto. * libc/sys/linux/linuxthreads/bits/sigthread.h: Ditto. * libc/sys/linux/linuxthreads/machine/Makefile.am: Ditto. * libc/sys/linux/linuxthreads/machine/Makefile.in: Ditto. * libc/sys/linux/linuxthreads/machine/aclocal.m4: Ditto. * libc/sys/linux/linuxthreads/machine/configure: Ditto. * libc/sys/linux/linuxthreads/machine/configure.in: Ditto. * libc/sys/linux/linuxthreads/machine/generic/generic-sysd: Ditto.ep.h * libc/sys/linux/linuxthreads/machine/i386/Makefile.am: Ditto. * libc/sys/linux/linuxthreads/machine/i386/Makefile.in: Ditto. * libc/sys/linux/linuxthreads/machine/i386/aclocal.m4: Ditto. * libc/sys/linux/linuxthreads/machine/i386/bp-asm.h: Ditto. * libc/sys/linux/linuxthreads/machine/i386/clone.S: Ditto. * libc/sys/linux/linuxthreads/machine/i386/configure: Ditto. * libc/sys/linux/linuxthreads/machine/i386/configure.in: Ditto. * libc/sys/linux/linuxthreads/machine/i386/i386-sysdep.S: Ditto. * libc/sys/linux/linuxthreads/machine/i386/i386-sysdep.h: Ditto. * libc/sys/linux/linuxthreads/machine/i386/pspinlock.c: Ditto. * libc/sys/linux/linuxthreads/machine/i386/pt-machine.h: Ditto. * libc/sys/linux/linuxthreads/machine/i386/sigcontextinfo.h: Ditto. * libc/sys/linux/linuxthreads/machine/i386/stackinfo.h: Ditto. * libc/sys/linux/linuxthreads/machine/i386/sysdep.S: Ditto. * libc/sys/linux/linuxthreads/machine/i386/sysdep.h: Ditto. * libc/sys/linux/linuxthreads/machine/i386/useldt.h: Ditto. * libc/sys/linux/machine/i386/dl-machine.h: Ditto. * libc/sys/linux/net/Makefile.am: Ditto. * libc/sys/linux/net/Makefile.in: Ditto. * libc/sys/linux/net/addr2ascii.3: Ditto. * libc/sys/linux/net/addr2ascii.c: Ditto. * libc/sys/linux/net/ascii2addr.c: Ditto. * libc/sys/linux/net/base64.c: Ditto. * libc/sys/linux/net/bindresvport.c: Ditto. * libc/sys/linux/net/byteorder.3: Ditto. * libc/sys/linux/net/ether_addr.c: Ditto. * libc/sys/linux/net/ethers.3: Ditto. * libc/sys/linux/net/getaddrinfo.3: Ditto. * libc/sys/linux/net/getaddrinfo.c: Ditto. * libc/sys/linux/net/gethostbydns.c: Ditto. * libc/sys/linux/net/gethostbyht.c: Ditto. * libc/sys/linux/net/gethostbyname.3: Ditto. * libc/sys/linux/net/gethostbynis.c: Ditto. * libc/sys/linux/net/gethostnamadr.c: Ditto. * libc/sys/linux/net/getifaddrs.3: Ditto. * libc/sys/linux/net/getifaddrs.c: Ditto. * libc/sys/linux/net/getipnodebyname.3: Ditto. * libc/sys/linux/net/getnameinfo.3: Ditto. * libc/sys/linux/net/getnameinfo.c: Ditto. * libc/sys/linux/net/getnetbydns.c: Ditto. * libc/sys/linux/net/getnetbyht.c: Ditto. * libc/sys/linux/net/getnetbynis.c: Ditto. * libc/sys/linux/net/getnetent.3: Ditto. * libc/sys/linux/net/getnetnamadr.c: Ditto. * libc/sys/linux/net/getproto.c: Ditto. * libc/sys/linux/net/getprotoent.3: Ditto. * libc/sys/linux/net/getprotoent.c: Ditto. * libc/sys/linux/net/getprotoname.c: Ditto. * libc/sys/linux/net/getservbyname.c: Ditto. * libc/sys/linux/net/getservbyport.c: Ditto. * libc/sys/linux/net/getservent.3: Ditto. * libc/sys/linux/net/getservent.c: Ditto. * libc/sys/linux/net/herror.c: Ditto. * libc/sys/linux/net/hesiod.3: Ditto. * libc/sys/linux/net/hesiod.c: Ditto. * libc/sys/linux/net/if_indextoname.3: Ditto. * libc/sys/linux/net/ifname.c: Ditto. * libc/sys/linux/net/inet.3: Ditto. * libc/sys/linux/net/inet6_option_s: Ditto.pace.3 * libc/sys/linux/net/inet6_rthdr_space.3: Ditto. * libc/sys/linux/net/inet_addr.c: Ditto. * libc/sys/linux/net/inet_lnaof.c: Ditto. * libc/sys/linux/net/inet_makeaddr.c: Ditto. * libc/sys/linux/net/inet_net.3: Ditto. * libc/sys/linux/net/inet_net_ntop.c: Ditto. * libc/sys/linux/net/inet_net_pton.c: Ditto. * libc/sys/linux/net/inet_neta.c: Ditto. * libc/sys/linux/net/inet_netof.c: Ditto. * libc/sys/linux/net/inet_network.c: Ditto. * libc/sys/linux/net/inet_ntoa.c: Ditto. * libc/sys/linux/net/inet_ntop.c: Ditto. * libc/sys/linux/net/inet_pton.c: Ditto. * libc/sys/linux/net/innetgr-stub.c: Ditto. * libc/sys/linux/net/ip6opt.c: Ditto. * libc/sys/linux/net/iso_addr.3: Ditto. * libc/sys/linux/net/iso_addr.c: Ditto. * libc/sys/linux/net/issetugid-stub.c: Ditto. * libc/sys/linux/net/linkaddr.3: Ditto. * libc/sys/linux/net/linkaddr.c: Ditto. * libc/sys/linux/net/map_v4v6.c: Ditto. * libc/sys/linux/net/name6.c: Ditto. * libc/sys/linux/net/namespace.h: Ditto. * libc/sys/linux/net/ns.3: Ditto. * libc/sys/linux/net/ns_addr.c: Ditto. * libc/sys/linux/net/ns_name.c: Ditto. * libc/sys/linux/net/ns_netint.c: Ditto. * libc/sys/linux/net/ns_ntoa.c: Ditto. * libc/sys/linux/net/ns_parse.c: Ditto. * libc/sys/linux/net/ns_print.c: Ditto. * libc/sys/linux/net/ns_ttl.c: Ditto. * libc/sys/linux/net/nsap_addr.c: Ditto. * libc/sys/linux/net/nsdispatch.3: Ditto. * libc/sys/linux/net/nsdispatch.c: Ditto. * libc/sys/linux/net/nslexer.c: Ditto. * libc/sys/linux/net/nslexer.l: Ditto. * libc/sys/linux/net/nsparser.c: Ditto. * libc/sys/linux/net/nsparser.h: Ditto. * libc/sys/linux/net/nsparser.y: Ditto. * libc/sys/linux/net/rcmd.3: Ditto. * libc/sys/linux/net/rcmd.c: Ditto. * libc/sys/linux/net/rcmdsh.3: Ditto. * libc/sys/linux/net/rcmdsh.c: Ditto. * libc/sys/linux/net/recv.c: Ditto. * libc/sys/linux/net/res_comp.c: Ditto. * libc/sys/linux/net/res_config.h: Ditto. * libc/sys/linux/net/res_data.c: Ditto. * libc/sys/linux/net/res_debug.c: Ditto. * libc/sys/linux/net/res_init.c: Ditto. * libc/sys/linux/net/res_mkquery.c: Ditto. * libc/sys/linux/net/res_mkupdate.c: Ditto. * libc/sys/linux/net/res_query.c: Ditto. * libc/sys/linux/net/res_send.c: Ditto. * libc/sys/linux/net/res_update.c: Ditto. * libc/sys/linux/net/resolver.3: Ditto. * libc/sys/linux/net/rthdr.c: Ditto. * libc/sys/linux/net/send.c: Ditto. * libc/sys/linux/net/un-namespace.h: Ditto. * libc/sys/linux/net/vars.c: Ditto. * libc/sys/linux/stdlib/COPYRIGHT: Ditto. * libc/sys/linux/stdlib/Makefile.am: Ditto. * libc/sys/linux/stdlib/Makefile.in: Ditto. * libc/sys/linux/stdlib/cclass.h: Ditto. * libc/sys/linux/stdlib/cname.h: Ditto. * libc/sys/linux/stdlib/collate.c: Ditto. * libc/sys/linux/stdlib/collate.h: Ditto. * libc/sys/linux/stdlib/collcmp.c: Ditto. * libc/sys/linux/stdlib/engine.c: Ditto. * libc/sys/linux/stdlib/fnmatch.3: Ditto. * libc/sys/linux/stdlib/fnmatch.c: Ditto. * libc/sys/linux/stdlib/glob.3: Ditto. * libc/sys/linux/stdlib/glob.c: Ditto. * libc/sys/linux/stdlib/reallocf.c: Ditto. * libc/sys/linux/stdlib/regcomp.c: Ditto. * libc/sys/linux/stdlib/regerror.c: Ditto. * libc/sys/linux/stdlib/regex.3: Ditto. * libc/sys/linux/stdlib/regex2.h: Ditto. * libc/sys/linux/stdlib/regexec.c: Ditto. * libc/sys/linux/stdlib/regfree.c: Ditto. * libc/sys/linux/stdlib/utils.h: Ditto. * libc/sys/linux/stdlib/wordexp.c: Ditto. * libc/sys/linux/stdlib/wordfree.c: Ditto. * libc/sys/linux/sys/dlfcn.h: Ditto. * libc/sys/linux/sys/elfclass.h: Ditto. * libc/sys/linux/sys/event.h: Ditto. * libc/sys/linux/sys/ioccom.h: Ditto. * libc/sys/linux/sys/libc-tsd.h: Ditto. * libc/sys/linux/sys/link.h: Ditto. * libc/sys/linux/sys/lock.h: Ditto. * libc/sys/linux/sys/param.h: Ditto. * libc/sys/linux/sys/socket.h: Ditto. * libc/sys/linux/sys/sockio.h: Ditto. 2003-05-28 Dhananjay Deshpande * newlib/libc/machine/h8300/memcpy.S: Use .h8300hn and .h8300sn for normal mode * newlib/libc/machine/h8300/memset.S: Likewise * newlib/lib/machine/h8300/reg_memcpy.S: Likewise * newlib/lib/machine/h8300/reg_memset.S: Likewise * newlib/lib/machine/h8300/setjmp.S: Likewise * newlib/lib/machine/h8300/strcmp.S: Likewise * newlib/lib/sys/h8300hms/crt0.S: Likewise 2003-05-13 Corinna Vinschen * libc/ctype/ctype_.c: Remove checks for deprecated __CYGWIN32__. * libc/include/stdio.h: Ditto. * libc/include/sys/config.h: Ditto. * libc/stdio/mktemp.c: Ditto. 2003-05-13 Corinna Vinschen * libc/locale/ldpart.c (__part_load_locale): Substitute __CYGWIN_USE_BIG_TYPES__ by __USE_INTERNAL_STAT64. * libc/search/hash.c (__hash_open): Ditto. (init_hash): Ditto. * libc/stdio/fseek.c (fseek): Ditto. * libc/stdio/makebuf.c (__smakebuf): Ditto. * libc/stdio/mktemp.c (_gettemp): Ditto. 2003-05-12 Corinna Vinschen * libc/include/stdio.h: Change one __CYGWIN__ to __CYGWIN32__. 2003-05-12 Corinna Vinschen * configure.host: Accomodate removing the libc/sys/cygwin dir. * libc/locale/ldpart.c (__part_load_locale): Use 64 bit stat call if __CYGWIN_USE_BIG_TYPES__ is set. * libc/search/hash.c (__hash_open): Ditto. (init_hash): Ditto. * libc/stdio/fseek.c (fseek): Ditto. * libc/stdio/makebuf.c (__smakebuf): Ditto. * libc/stdio/mktemp.c (_gettemp): Ditto. * libc/sys/cygwin/Makefile.am: Remove. * libc/sys/cygwin/Makefile.in: Remove. * libc/sys/cygwin/aclocal.m4: Remove. * libc/sys/cygwin/configure: Remove. * libc/sys/cygwin/configure.in: Remove. * libc/sys/cygwin/crt0.c: Move to winsup/cygwin directory. * libc/sys/cygwin/sys/dirent.h: Move to winsup/cygwin/include/sys directory. * libc/sys/cygwin/sys/param.h: Ditto. * libc/sys/cygwin/sys/utime.h: Ditto. * libc/sys/cygwin/sys/utmp.h: Ditto. 2003-05-11 Corinna Vinschen * libc/include/sys/types.h: Don't define key_t for Cygwin. 2003-05-10 Christopher Faylor * libc/sys/cygwin/sys/dirent.h (struct dirent): Accommodate (slightly) 64 bit inodes. 2003-05-09 Corinna Vinschen * libc/include/sys/config.h: Remove all Cygwin specific configuration. Include cygwin/config.h instead. 2003-04-16 Jeff Johnston * newlib/libc/machine/powerpc (ato*fix*.c,strto*fix*.c): Shield all code with #ifdef __SPE__ test. * newlib/libc/machine/powerpc (simdldtoa.c, ufix64toa.c): Ditto. 2003-04-15 Chris January * newlib/libc/include/sys/unistd.h: add declaration for gethostid on Cygwin. 2003-04-09 J"orn Rennecke * libc/machine/sh/memset.S: Avoid clobbering volatile objects following a tiny to-be-set array in the same quadword. 2001-04-09 Corinna Vinschen * libc/include/wchar.h: Add definitions for wcswidth and wcwidth. * libc/string/Makefile.am: Add wcswidth.c and wcwidth.c * libc/string/Makefile.in: Regenerated. * libc/string/wcswidth.c: New file. * libc/string/wcwidth.c: New file. * libc/string/wcstrings.tex: Add wcswidth and wcwidth. Thu Apr 3 14:01:16 2003 J"orn Rennecke * libc/machine/sh/memset.S: Fix problem with alloco region exceeding destination region for length >= 88 bytes, start & 0x16 == 0, end & 0x1f == 18. 2001-04-03 Corinna Vinschen * libc/string/wcscoll.c: Fix comment. 2001-04-02 Corinna Vinschen * libc/include/wchar.h: Add definition for wcscoll. * libc/string/Makefile.am: Add wcscoll.c. * libc/string/Makefile.in: Regenerated. * libc/string/wcscoll.c: New file. * libc/string/wcstrings.tex: Add wcscoll. 2003-04-01 Corinna Vinschen * libc/stdio/sscanf.c: Update flags description. * libc/stdio/vfscanf.c: Add CHAR flag value to denote 8 bit target type. (__svfscanf_r): Add 'hh' and 'll' handling. 2003-04-01 Corinna Vinschen * libc/sys/cygwin/sys/dirent.h (struct DIR): Change type of __d_position member to _off_t. 2003-03-20 Jeff Johnston * libc/stdio/vfscanf.c (__svfscanf_r): For floating point conversion, count all characters used to create number against maximum width. * libc/machine/powerpc/vfscanf.c (__svfscanf_r): Ditto. 2003-03-18 D.Venkatasubramanian * libc/include/sys/h8300hms/crt0.S[__SIMULATOR__]: Add commandline support. * configure.host (h8300*-*-*): Added comment regarding -D__SIMULATOR__ flag to support simulator only extensions. 2003-03-17 Bob Cassels * libc/string/wcschr.c: (wcschr): Look for character first, then for end of string, so you can do wcschr(x, '\0'). 2003-03-10 Corinna Vinschen * libc/include/stdio.h: Declare fgetpos, fsetpos, fseeko and ftello with internal (_fpos_t and _off_t) datatypes when compiling newlib. * libc/include/sys/unistd.h: Declare _lseek using _off_t. * libc/reent/lseekr.c (_lseek_r): Use _off_t instead of off_t. * libc/stdio/fseeko.c (fseeko): Ditto. * libc/stdio/ftello.c (ftello): Ditto. * libc/stdio/stdio.c (__swrite): Ditto. (__sseek): Ditto. * libc/stdio/fgetpos.c (fgetpos): Use _fpos_t instead of fpos_t. * libc/stdio/fseek.c (fseek): Ditto. * libc/stdio/fsetpos.c (fsetpos): Ditto. * libc/stdio/ftell.c (ftell): Ditto. * libc/stdio/local.h: Declare __sseek using _off_t. 2003-03-09 Corinna Vinschen * libc/reent/lseekr.c (lseek_r): Use _off_t instead of off_t. 2003-03-09 Corinna Vinschen * libc/include/sys/config.h: Define __CYGWIN_USE_BIG_TYPES__ for Cygwin. 2003-03-09 Corinna Vinschen * libc/include/pwd.h: Add guards to avoid type clashes when compiling Cygwin. * libc/include/sys/stat.h: Ditto. * libc/include/sys/unistd.h: Ditto. * libc/sys/cygwin/sys/dirent.h: Ditto. 2003-03-07 Christopher Faylor * libc/include/sys/unistd.h: Guard getopt.h call to force only declaration of getopt and avoid getopt_long declaration. * libc/sys/cygwin/include/unistd.h: Remove. 2003-03-07 Corinna Vinschen * configure.host: Define stdio64_dir for Cygwin. * libc/include/stdio.h: Change definition of fpos_t to fulfill Cygwin 64bit file access requirements. Drop definition of f*64() functions when compiled for Cygwin. * libc/include/sys/config.h: Define __LARGE64_FILES for Cygwin. * libc/reent/lseek64r.c: Use _off64_t instead of off64_t. * libc/stdio64/local64.h: Use _fpos64_t instead of fpos64_t. 2003-03-07 Jeff Johnston * libc/include/sys/reent.h: Remove extraneous _sig_func declaration. 2003-02-25 D.Venkatasubramanian * libc/sys/h8300hms/Makefile.am: Add support for new files. * libc/sys/h8300hms/Makefile.in: Regenerated. * libc/sys/h8300hms/close.S: New file. * libc/sys/h8300hms/fstat.S: Ditto. * libc/sys/h8300hms/lseek.S: Ditto. * libc/sys/h8300hms/open.S: Ditto. * libc/sys/h8300hms/stat.S: Ditto. * libc/sys/h8300hms/read.S: New file to replace read.c. * libc/sys/h8300hms/read.c: Removed. * libc/sys/h8300hms/syscalls.c: Removed functions _open, _lseek, _close, _stat, _fstat. * libc/sys/h8300hms/write.S: New file to replace write.c. * libc/sys/h8300hms/write.c: Removed. 2003-02-20 Nick Clifton * Add support for Cirrus Maverick ARM co-processor: 2000-09-13 Aldy Hernandez * libc/include/machine/ieeefp.h: Set IEEE_BIG_ENDIAN or IEEE_LITTLE_ENDIAN depending on endian mode (cirrus). 2000-08-11 Aldy Hernandez * configure.host: set sys_dir, syscall_dir, and newlib_cflags for ep9312 host. * configure.host: Restore alpha sorting of entries in case statements. 2003-02-19 Jeff Johnston * libc/stdlib/mallocr.c (unlink): Revert 02/18 fix. 2003-02-18 Christian Groessler * libc/machine/z8k/setjmp.S (_setjmp / _longjmp): Fix to support z8001 segmented mode. 2003-02-18 Earnie Boyd * libc/stdlib/mallocr.c (unlink): Don't assign a value to a pointer with a NULL value. 2003-02-10 Christopher Faylor * libc/include/sys/types.h: Don't define __MS_types__ for Cygwin. Don't define some types under cygwin. 2003-02-07 Jeff Johnston * acinclude.m4 (--disable-newlib-supplied-syscalls): New configuration option to allow disabling of syscalls being supplied in newlib. * aclocal.m4: Regenerated. * configure: Ditto. * configure.host: Add support of new configuration option and add -D__NO_SYSCALLS__ if newlib supplied syscalls are disabled. * doc/aclocal.m4: Regenerated. * doc/configure: Ditto. * libc/*aclocal.m4: Ditto. * libc/*configure: Ditto. * libm/*aclocal.m4: Ditto. * libm/*configure: Ditto. * libc/sys/arm/Makefile.am: Don't build syscalls.o if new option is disabled. * libc/sys/arm/Makefile.in: Regenerated. 2003-02-05 Jonathan Larmour * libc/stdio/vsprintf.c (vsprintf, _vsprintf_r): Set _file fd to -1 to be sure it cannot later match a valid file fd causing isatty() to return 1. * libc/stdio/asprintf.c (asprintf, _asprintf_r): Ditto. * libc/stdio/sprintf.c (sprintf, _sprintf_r): Ditto. * libc/stdio/vasprintf.c (vasprintf, _vasprintf_r): Ditto. 2003-02-03 Jeff Johnston * libc/stdlib/ldtoa.c (_ldtoa_r): Fix code to allocate the format buffer based on the precision, after we have processed the input value in a local buffer and know its relative magnitude. 2003-01-31 Michael Snyder * libc/sys/h8300hms/_exit.c (_exit, __exit): Slip a magic cookie into registers r1 and r2, so that the simulator can distinguish this trap from a breakpoint trap. Copied from libgloss. 2003-01-31 Michael Snyder * libc/sys/h8300hms/crt0.S (_start): Change local label from .loop to .Loop, so that ld and gdb will ignore it. 2003-01-29 Jason Tishler * libc/include/time.h: Declare nanosleep() under Cygwin. 2003-01-24 Nick Clifton * Add sh2e support: 2002-04-02 Alexandre Oliva * libc/machine/sh/asm.h: Added __SH2E__ next to __SH3E__. * libc/machine/sh/setjmp.S: Likewise. * libc/include/machine/ieeefp.h: Likewise. 2003-01-24 Corinna Vinschen * libc/include/sys/unistd.h: Add setregid and setreuid declarations for Cygwin. 2003-01-21 Anita Kulkarni * libc/time/difftime.c : Typecast the result to double. 2003-01-20 Christopher Faylor * libc/include/sys/unistd.h: Add rresvport declaration for cygwin. 2003-01-18 Nick Clifton * libc/include/machine/ieeefp.h : Define __IEEE_BIG_ENDIAN, __SMALL_BITFIELDS and _DOUBLE_IS_32BITS for IP2K. 2003-01-16 Joel Sherrill * libc/sys/rtems/include/limits.h, libc/sys/rtems/sys/param.h, libc/sys/rtems/sys/syslimits.h: Update to be in sync with what constants are defined in each file in the shared versions in libc/include. * libc/sys/rtems/crt0.c: Define extra symbols on SH and HP-PA to autoconf can link programs. * libc/include/machine/types.h: Explicitly specify signed on intXX_t types to ensure they are signed. 2003-01-14 Christopher Faylor * libc/time/strftime.c (strftime): Add '%h' and '%l, %k' GNU extensions. 2003-01-08 Richard Sandiford * configure.host (mips64vr-elf, mips64vrel-elf): New config. 2003-01-07 Charles Wilson * libc/stdio/sprintf.c: fix typo * libc/stdio/vfprintf.c: fix typo 2003-01-07 Jeff Johnston * configure.host: Support long double I/O for x86-linux. * libc/stdlib/ldtoa.c (_ldtoa_r): Fix code to allocate a buffer large enough to hold formatted result. * libc/machine/powerpc/simdldtoa.c (_simdldtoa_r): Ditto. 2003-01-06 Charles Wilson * Makefile.am: Add vasprintf. * Makefile.in: Regenerated. 2003-01-06 Charles Wilson * asprintf.c (_asprintf_r): insure both declarations are the same. 2002-12-28 Christopher Faylor * libc/include/sys/unistd.h: Under cygwin, just include getopt.h rather than defining getopt directly. 2002-12-20 Jeff Johnston * NEWS: Update with 1.11.0 info. * README: Ditto. * acinclude.m4: Change version number to 1.11.0. * aclocal.m4: Regenerated. * configure: Ditto. * doc/aclocal.m4: Ditto. * doc/configure: Ditto. * libc/*/aclocal.m4: Ditto. * libc/*/configure: Ditto. * libc/libc.texinfo: Ditto. * libm/*/aclocal.m4: Ditto. * libm/*/configure: Ditto. * libm/libm.texinfo: Ditto. * libc/sys/linux/shared.ld: Add VERS_1.11. 2002-12-20 Jeff Johnston * libc/machine/i386/f_atan2.S: Change copyright from Cygnus Solutions to Red Hat Inc. * libc/machine/i386/f_atan2f.S: Ditto. * libc/machine/i386/f_exp.c: Ditto. * libc/machine/i386/f_expf.c: Ditto. * libc/machine/i386/f_frexp.S: Ditto. * libc/machine/i386/f_frexpf.S: Ditto. * libc/machine/i386/f_ldexp.S: Ditto. * libc/machine/i386/f_ldexpf.S: Ditto. * libc/machine/i386/f_log.S: Ditto. * libc/machine/i386/f_log10.S: Ditto. * libc/machine/i386/f_log10f.S: Ditto. * libc/machine/i386/f_logf.S: Ditto. * libc/machine/i386/f_pow.c: Ditto. * libc/machine/i386/f_powf.c: Ditto. * libc/machine/i386/f_tan.S: Ditto. * libc/machine/i386/f_tanf.S: Ditto. * libc/machine/i386/memchr.S: Ditto. * libc/machine/i386/memcmp.S: Ditto. * libc/machine/i386/memcpy.S: Ditto. * libc/machine/i386/memmove.S: Ditto. * libc/machine/i386/memset.S: Ditto. * libc/machine/i386/strchr.S: Ditto. * libc/machine/i386/strlen.S: Ditto. * libm/machine/i386/f_atan2.S: Ditto. * libm/machine/i386/f_atan2f.S: Ditto. * libm/machine/i386/f_exp.c: Ditto. * libm/machine/i386/f_expf.c: Ditto. * libm/machine/i386/f_frexp.S: Ditto. * libm/machine/i386/f_frexpf.S: Ditto. * libm/machine/i386/f_ldexp.S: Ditto. * libm/machine/i386/f_ldexpf.S: Ditto. * libm/machine/i386/f_log.S: Ditto. * libm/machine/i386/f_log10.S: Ditto. * libm/machine/i386/f_log10f.S: Ditto. * libm/machine/i386/f_logf.S: Ditto. * libm/machine/i386/f_pow.c: Ditto. * libm/machine/i386/f_powf.c: Ditto. * libm/machine/i386/f_tan.S: Ditto. * libm/machine/i386/f_tanf.S: Ditto. 2002-12-20 Jeff Johnston * libc/stdlib/environ.c: Update license to Red Hat. * libc/machine/hppa/setjmp.S: Ditto. * libm/test/Makefile.in: Ditto. 2002-12-19 Jeff Johnston * configure.host: Remove references to go32. * libc/sys/go32/*: Removed. 2002-12-16 Kazu Hirata * libc/include/sys/config.h: Change setting of INT_MAX and UINT_MAX, to use __INT_MAX__ for __H8300__, __H8300H__, __H8300S__. Also consolidate flag settings for these platforms. 2002-12-10 Joel Sherrill * libc/include/machine/setjmp.h: Make sure _JBLEN is defined for i386-rtems targets. 2002-12-06 Jeff Johnston * libc/include/stdlib.h (strtof): New prototype (from C99). (strtodf): Changed from prototype to macro which redefines to strtof. * libc/stdlib/atof.c: Change documentation to refer to strtof instead of strtodf. * libc/stdlib/atoff.c (atoff): Change to call strtof instead of strtodf. * libc/stdlib/strtod.c (strtodf): Renamed to strtof. (strtof): New function. * libm/test/convert.c (test_strtodf): Renamed to test_strtof which calls strtof. 2002-11-27 Christopher Faylor * libc/string/memset.c (memset): Fix comment. 2002-11-26 Christopher Faylor * libc/string/memset.c (memset): Move initialization of 'd' earlier in function. 2002-11-25 Christopher Faylor * libc/string/memset.c (memset): Minor optimization: Use new 'd' variable, introduced below, everywhere. 2002-11-25 Kazu Hirata * libc/string/memset.c (memset): Make it safe even if sizeof (int) = 2. 2002-11-22 Joe Buehler * configure.in: Change check for libc/include in ${CC} to use an intermediate value so as to work with different shells. * configure: Regenerated. * Makefile.in: Ditto. 2002-11-22 Vijay L. Khuspe * libc/sys/h8300hms/read.c: Add support for normal mode architecture. 2002-11-20 Ryo Tsuruta * libc/machine/h8300/setjmp.S (setjmp, longjmp): Combine common code for __H8300H__ and __H8300S__. Also return 32-bit return code when -mint32 is used. 2002-11-18 Nick Clifton * libc/sys/arm/crt0.S: Add NULL to end of argv array. 2002-11-14 Jeff Johnston * testsuite/lib/passfail.exp (newlib_pass_fail): Changed to only issue one pass/fail message for a compile/link/execute. * testsuite/newlib.elix/elix.exp: New file. * testsuite/newlib.elix/tmmap.c: Ditto. 2002-11-06 Christopher Faylor * libc/stdlib/malign.c: Don't compile if MALLOC_PROVIDED. * libc/stdlib/mlock.c: Ditto. * libc/stdlib/msize.c: Ditto. * libc/stdlib/msize.c: Ditto. * libc/stdlib/mtrim.c: Ditto. * libc/stdlib/valloc.c: Ditto. 2002-11-12 Jeff Johnston * libc/stdlib/ldtoa.c (e64toe): When checking the exponent for inf/nan, make sure that the check ignores the sign bit. 2002-11-07 Joel Sherrill * libc/sys/rtems/machine: New directory. * libc/sys/rtems/machine/limits.h, libc/sys/rtems/machine/param.h, libc/sys/rtems/sys/param.h, libc/sys/rtems/sys/syslimits.h, libc/sys/rtems/sys/utime.h: New files added to make *-rtems newlib targets more BSD like when installed without requiring files to be overwritten at install point when RTEMS itself is installed. * Makefile.am: Pick up system dependent machine .h files such as might be found on a BSD-ish system. * Makefile.in: Regenerate. * libc/include/machine/types.h: When on an RTEMS target, define a few BSD flavor types. 2002-11-06 Sergey Okhapkin * include/utmp.h: Define WTMP_FILE. Define and use UT_IDLEN. 2002-11-06 Kazuhiro Fujieda * libc/include/wchar.h: Use _{BEGIN,END}_STD_C instead of extern "C". * libc/include/wctype.h: Ditto. 2002-11-04 Jeff Johnston * libc/include/wchar.h: Add extern "C" specifier if C++. * libc/include/wctype.h: Ditto. 2002-10-18 Jeff Johnston * testsuite/newlib.wctype/tiswctype.c: New test case. * testsuite/newlib.wctype/twctrans.c: Ditto. 2002-10-18 Jeff Johnston * libc/sys/linux/machine/i386/include/endian.h: New file. * libc/sys/linux/machine/i386/include/param.h: Ditto. 2002-10-18 Jeff Johnston * libm/machine/i386/aclocal.m4: Regenerated. * libm/machine/i386/configure: Ditto. 2002-10-18 Jeff Johnston * testsuite/include/check.h: New header file to use with test cases. * testsuite/lib/newlib.exp: Add testsuite/include directory to list of header files to use. * testsuite/newlib.wctype/twctype.c: New test case for iswctype fns. * testsuite/newlib.wctype/wctype.exp: New file. 2002-10-11 Graham Stott Richard Sandiford * libc/include/sys/config.h (SIZE_T_SMALLER_THAN_LONG): Undefine. * libc/stdlib/mallocr.c (long_sub_size_t): Define in a way that doesn't require the SIZE_T_SMALLER_THAN_LONG macro. 2002-10-07 Joel Sherrill * libc/sys/rtems/crt0.c: Add even more symbols so gcc() can link dummy programs. 2002-10-07 Joel Sherrill * libc/include/pthread.h: Define PTHREAD_CANCELED. 2002-10-07 Joel Sherrill * libc/machine/hppa/DEFS.h, libc/machine/hppa/pcc_prefix.s, libc/machine/hppa/setjmp.S, libc/machine/hppa/DEFS.h: Make this compile with current GNU tools. 2002-10-07 Jeff Johnston * Makefile.am: Add EXTRA_DIRS to allow future dependencies on the build library. * configure.in: Ditto. * Makefile.in: Regenerated. * configure: Ditto. * libc/sys/linux/Makefile.am: Add EXTRA_SUBDIRS and EXTRA_SUBLIBS for specifying configured libraries/directories. * libc/sys/linux/configure.in: Ditto. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/configure: Ditto. 2002-10-03 Jeff Johnston * libc/include/reent.h: Update documentation at start of file. 2002-09-27 Jim Wilson * libc/sys/sysnecv850/crt0.S (start): Delete v850 code for initializing the ctbp register. 2002-09-27 Jeff Johnston * libc/ctype/jp2uc.c: Change to use multiple arrays in jp2uc.h. Also convert to EUCJP before using arrays. For values not in the conversion arrays, return WEOF. * libc/ctype/jp2uc.h: Change from one array to a number of arrays to account for the fact that the originating table is not contiguous for the input values since some are invalid. 2002-09-24 Jeff Johnston * libc/time/ctime.c: Fix prototype documentation. 2002-09-24 Corinna Vinschen * libc/include/sys/errno.h: Add EOVERFLOW. 2002-09-20 Jeff Johnston * libc/include/wctype.h: New file. 2002-09-20 Jeff Johnston * libc/ctype/Makefile.am: Add new files. * libc/ctype/Makefile.in: Regenerated. * libc/ctype/ctype.tex: Add new iswxxxx, towxxxx, wctype, and wctrans functions to documentation index. * libc/ctype/iswalnum.c: New file. * libc/ctype/iswalpha.c: Ditto. * libc/ctype/iswblank.c: Ditto. * libc/ctype/iswcntrl.c: Ditto. * libc/ctype/iswctype.c: Ditto. * libc/ctype/iswdigit.c: Ditto. * libc/ctype/iswgraph.c: Ditto. * libc/ctype/iswlower.c: Ditto. * libc/ctype/iswprint.c: Ditto. * libc/ctype/iswpunct.c: Ditto. * libc/ctype/iswspace.c: Ditto. * libc/ctype/iswupper.c: Ditto. * libc/ctype/iswxdigit.c: Ditto. * libc/ctype/jp2uc.c: Ditto. * libc/ctype/jp2uc.h: Ditto. * libc/ctype/local.h: Ditto. * libc/ctype/towctrans.c: Ditto. * libc/ctype/towlower.c: Ditto. * libc/ctype/towupper.c: Ditto. * libc/ctype/utf8alpha.h: Ditto. * libc/ctype/utf8print.h: Ditto. * libc/ctype/utf8punct.h: Ditto. * libc/ctype/wctrans.c: Ditto. * libc/ctype/wctype.c: Ditto. * libc/locale/locale.c (__lc_ctype): New external array to replace static lc_ctype array. * libc/stdlib/mbtowc_r.c: Use __lc_ctype to check current lc_ctype rather than reentrancy structure's _current_locale field. * libc/stdlib/wctomb_r.c: Ditto. 2002-09-20 Jeff Johnston * configure.host: Minor comment and formatting changes. * libc/Makefile.am: Add libc_la_DEPENDENCIES. * libc/Makefile.in: Regenerated. * libc/include/sys/config.h: Minor format change. 2002-09-19 Jeff Johnston * libc/syscalls/sysfcntl.c (fcntl): Fix typo in preprocessor statement comment. 2002-09-19 Jeff Johnston * libc/posix/opendir.c (opendir): Change code to check for HAVE_FCNTL before calling fcntl. * libc/search/hash.c (hash_open): Ditto. * libc/search/hash_page.c (open_tmp): Ditto. * libc/reent/Makefile.am: Add fcntlr.c. * libc/reent/Makefile.in: Regenerated. * libc/reent/fcntlr.c: New file. * libc/stdio/fdopen.c (_fdopen_r): Change to call _fcntl_r instead of _fcntl when HAVE_FCNTL flag is set. * libc/syscalls/sysfcntl.c (fcntl): Check for HAVE_FCNTL flag to see if _fcntl or _fcntl_r should be called. If flag is not set, default to ENOSYS stub. 2002-09-16 Jeff Johnston * libc/include/wchar.h (mbstate_t): Change protective flag to be _MBSTATE_T. * libc/include/sys/_types.h (_mbstate_t): Remove protective flag. [__CYGWIN__]: Remove special code that defines mbstate_t and WEOF for Cygwin. * libc/sys/linux/sys/_types.h (_mbstate_t): Remove protective flag. 2002-09-11 Jeff Johnston * acinclude.m4 (enable-newlib-mb): Change check to default newlib_mb variable to empty string rather than "no". * configure.host: Remove hard-coding of -DMB_CAPABLE for x86-linux and Cygwin. Add code to check for newlib_mb being unset in which case set to "yes" for x86-linux and Cygwin. Change check for newlib_mb being "yes" to allow for an empty string. * configure.in (_MB_LEN_MAX): New AC_DEFINE. * newlib.hin (_MB_LEN_MAX): New define to configure. * aclocal.m4: Regenerated. * configure: Ditto. * libc/include/limits.h: New file. * libc/sys/linux/include/limits.h: Ditto. * doc/aclocal.m4 doc/configure libc/aclocal.m4 libc/configure libc/machine/aclocal.m4 libc/machine/configure libc/machine/a29k/aclocal.m4 libc/machine/a29k/configure libc/machine/arm/aclocal.m4 libc/machine/arm/configure libc/machine/d10v/aclocal.m4 libc/machine/d10v/configure libc/machine/d30v/aclocal.m4 libc/machine/d30v/configure libc/machine/fr30/aclocal.m4 libc/machine/fr30/configure libc/machine/frv/aclocal.m4 libc/machine/frv/configure libc/machine/h8300/aclocal.m4 libc/machine/h8300/configure libc/machine/h8500/aclocal.m4 libc/machine/h8500/configure libc/machine/hppa/aclocal.m4 libc/machine/hppa/configure libc/machine/i386/aclocal.m4 libc/machine/i386/configure libc/machine/i960/aclocal.m4 libc/machine/i960/configure libc/machine/m32r/aclocal.m4 libc/machine/m32r/configure libc/machine/m68hc11/aclocal.m4 libc/machine/m68hc11/configure libc/machine/m68k/aclocal.m4 libc/machine/m68k/configure libc/machine/m88k/aclocal.m4 libc/machine/m88k/configure libc/machine/mips/aclocal.m4 libc/machine/mips/configure libc/machine/mn10200/aclocal.m4 libc/machine/mn10200/configure libc/machine/mn10300/aclocal.m4 libc/machine/mn10300/configure libc/machine/necv70/aclocal.m4 libc/machine/necv70/configure libc/machine/powerpc/aclocal.m4 libc/machine/powerpc/configure libc/machine/sh/aclocal.m4 libc/machine/sh/configure libc/machine/sparc/aclocal.m4 libc/machine/sparc/configure libc/machine/tic80/aclocal.m4 libc/machine/tic80/configure libc/machine/v850/aclocal.m4 libc/machine/v850/configure libc/machine/w65/aclocal.m4 libc/machine/w65/configure libc/machine/xscale/aclocal.m4 libc/machine/xscale/configure libc/machine/xstormy16/aclocal.m4 libc/machine/xstormy16/configure libc/machine/z8k/aclocal.m4 libc/machine/z8k/configure libc/sys/aclocal.m4 libc/sys/configure libc/sys/a29khif/aclocal.m4 libc/sys/a29khif/configure libc/sys/arc/aclocal.m4 libc/sys/arc/configure libc/sys/arm/aclocal.m4 libc/sys/arm/configure libc/sys/cygwin/aclocal.m4 libc/sys/cygwin/configure libc/sys/d10v/aclocal.m4 libc/sys/d10v/configure libc/sys/decstation/aclocal.m4 libc/sys/decstation/configure libc/sys/go32/aclocal.m4 libc/sys/go32/configure libc/sys/h8300hms/aclocal.m4 libc/sys/h8300hms/configure libc/sys/h8500hms/aclocal.m4 libc/sys/h8500hms/configure libc/sys/idt/aclocal.m4 libc/sys/idt/configure libc/sys/linux/aclocal.m4 libc/sys/linux/configure libc/sys/linux/machine/aclocal.m4 libc/sys/linux/machine/configure libc/sys/linux/machine/i386/aclocal.m4 libc/sys/linux/machine/i386/configure libc/sys/m88kbug/aclocal.m4 libc/sys/m88kbug/configure libc/sys/mmixware/aclocal.m4 libc/sys/mmixware/configure libc/sys/netware/aclocal.m4 libc/sys/netware/configure libc/sys/rtems/aclocal.m4 libc/sys/rtems/configure libc/sys/sh/aclocal.m4 libc/sys/sh/configure libc/sys/sparc64/aclocal.m4 libc/sys/sparc64/configure libc/sys/sun4/aclocal.m4 libc/sys/sun4/configure libc/sys/sysmec/aclocal.m4 libc/sys/sysmec/configure libc/sys/sysnec810/aclocal.m4 libc/sys/sysnec810/configure libc/sys/sysnecv850/aclocal.m4 libc/sys/sysnecv850/configure libc/sys/sysvi386/aclocal.m4 libc/sys/sysvi386/configure libc/sys/sysvnecv70/aclocal.m4 libc/sys/sysvnecv70/configure libc/sys/tic80/aclocal.m4 libc/sys/tic80/configure libc/sys/w65/aclocal.m4 libc/sys/w65/configure libc/sys/z8ksim/aclocal.m4 libc/sys/z8ksim/configure libm/aclocal.m4 libm/configure: Regenerated. 2002-09-09 Jeff Johnston * libc/sys/linux/machine/i386/crt0.c (_start): Remove code that clears the .bss section. 2002-09-09 Jeff Johnston * libc/include/sys/_types.h (_mbstate_t): Changed to use unsigned char internally. * libc/sys/linux/sys/_types.h: Ditto. * libc/include/sys/reent.h * libc/stdlib/mblen.c (mblen): Use function-specific state value from default reentrancy structure. * libc/stdlib/mblen_r.c (_mblen_r): If return code from _mbtowc_r is less than 0, reset state __count value and return -1. * libc/stdlib/mbrlen.c (mbrlen): If the input state pointer is NULL, use the function-specific pointer provided in the default reentrancy structure. * libc/stdlib/mbrtowc.c: Add reentrant form of function. If input state pointer is NULL, use function-specific area provided in reentrancy structure. * libc/stdlib/mbsrtowcs.c: Ditto. * libc/stdlib/wcrtomb.c: Ditto. * libc/stdlib/wcsrtombs.c: Ditto. * libc/stdlib/mbstowcs.c: Reformat. * libc/stdlib/wcstombs.c: Ditto. * libc/stdlib/mbstowcs_r.c (_mbstowcs_r): If an error occurs, reset the state's __count value and return -1. * libc/stdlib/mbtowc.c: Ditto. * libc/stdlib/mbtowc_r.c (_mbtowc_r): Add restartable functionality. If number of bytes is used up before completing a valid multibyte character, return -2 and save the state. * libc/stdlib/wctomb_r.c (_wctomb_r): Define __state as __count and change some __count references to __state for clarity. 2002-09-06 Jeff Johnston * libc/include/sys/config.h (MB_LEN_MAX): Removed as this is defined by . 2002-09-05 Kazuhiro Fujieda * libc/include/wchar.h (WCHAR_MAX): Only define if not already defined. 2002-09-04 Kazuhiro Fujieda * libc/include/sys/config.h: Define accordingly __WCHAR_MAX__. * libc/include/wchar.h: Define WCHAR_MIN as 0 and WCHAR_MAX as __WCHAR_MAX__ or 0x7fffffffu. * libc/string/wcscmp.c: Delete wrong and unnecessary type cast. * libc/string/wcsncmp.c: Ditto. 2002-09-03 Jeff Johnston * libc/string/wcschr.c: Add include of . * libc/string/wcspbrk.c: Ditto. * libc/string/wcsrchr.c: Ditto. * libc/string/wcsstr.c: Ditto. 2002-09-03 Jeff Johnston * libc/include/sys/_types.h (_flock_t): Added. * libc/include/sys/lock.h (__lock_try_acquire): New interface. (__lock_try_acquire_recursive): Ditto. * libc/include/sys/reent.h (__sFILE, __sFILE64): Add new _lock field. * libc/stdio/findfp.c (std)[!__SINGLE_THREAD__]: Initialize _lock field. * libc/stdio/fopen.c (_fopen_r)[!__SINGLE_THREAD__]: Ditto. * libc/stdio64/fopen64.c (_fopen64_r)[!__SINGLE_THREAD__]: Ditto. * libc/sys/linux/include/time.h (struct timespec): Moved from and added check for __need_timespec flag so type can be defined by itself. * libc/sys/linux/sys/_types.h (_flock_t): New type. * libc/sys/linux/sys/types.h (struct timespec): Moved to . 2002-08-29 Thomas Fitzsimmons * libc/sys/linux/argp: New directory. * libc/sys/linux/getopt.c: New file. * libc/sys/linux/getopt1.c: New file. * libc/sys/linux/getoptlong.c: Remove file. * libc/sys/linux/include/argp.h: New file. * libc/sys/linux/Makefile.am: Define argp_dir and ARGP_LIB, based on ELIX level. (SUBDIRS): Add argp_dir. (SUBLIBS): Add ARGP_LIB. (ELIX_2_OBJS): Add getopt.$(oext), getopt1.$(oext), remove getopt_long.$(oext). * libc/sys/linux/configure.in (AC_OUTPUT): Add argp/Makefile. 2002-08-29 Jeff Johnston * libc/libc.texinfo: Add node reference to wide-character strings. * libc/string/wcstrings.tex: New file. * libc/string/strtok_r.c: Remove outdated advertising clause. * libc/string/Makefile.am (doc): Add wide-character string chapter to documentation. * libc/string/Makefile.in: Regenerated. 2002-08-29 Kazuhiro Fujieda * libc/include/wchar.h: Define NULL. Define WEOF more general way. Declare functions in newlib manner. * libc/stdlib/Makefile.am: Delete wmem*.c * libc/stdlib/Makefile.in: Regenerated. * libc/stdlib/wmemchr.c: Delete. * libc/stdlib/wmemcmp.c: Ditto. * libc/stdlib/wmemcpy.c: Ditto. * libc/stdlib/wmemmove.c: Ditto. * libc/stdlib/wmemset.c: Ditto. * libc/string/Makefile.am: Add wmem*.c and wcs*.c. * libc/string/Makefile.in: Regenerated. * libc/string/wcscat.c: New file derived from the NetBSD C Library. * libc/string/wcschr.c: Ditto. * libc/string/wcscmp.c: Ditto. * libc/string/wcscpy.c: Ditto. * libc/string/wcscspn.c: Ditto. * libc/string/wcslcat.c: Ditto. * libc/string/wcslcpy.c: Ditto. * libc/string/wcslen.c: Ditto. * libc/string/wcsncat.c: Ditto. * libc/string/wcsncmp.c: Ditto. * libc/string/wcsncpy.c: Ditto. * libc/string/wcspbrk.c: Ditto. * libc/string/wcsrchr.c: Ditto. * libc/string/wcsspn.c: Ditto. * libc/string/wcsstr.c: Ditto. * libc/string/wmemchr.c: Ditto. * libc/string/wmemcmp.c: Ditto. * libc/string/wmemcpy.c: Ditto. * libc/string/wmemmove.c: Ditto. * libc/string/wmemset.c: Ditto. 2002-08-29 Jeff Johnston * libc/locale/locale.c (_setlocale_r)[MB_CAPABLE]: Fix so default locale "" is accepted for LC_CTYPE or LC_MESSAGES and is treated as if "C" was specified. 2002-08-28 Jeff Johnston * Makefile.am (install-data-local): Move install of build newlib.h after installing headers in libc/include so as to overwrite default newlib.h. * Makefile.in: Regenerated. 2002-08-28 Jeff Johnston * libc/include/newlib.h: New file for tools that use newlib headers but don't build newlib first (e.g. gcc). 2002-08-28 Jeff Johnston * libc/stdlib/wmemchr.c: Explicitly include <_ansi.h>. * libc/stdlib/wmemcmp.c: Ditto. * libc/stdlib/wmemcpy.c: Ditto. * libc/stdlib/wmemmove.c: Ditto. * libc/stdlib/wmemset.c: Ditto. 2002-08-27 Egor Duda * libc/stdlib/wmemchr.c: New file. * libc/stdlib/wmemcmp.c: Ditto. * libc/stdlib/wmemcpy.c: Ditto. * libc/stdlib/wmemmove.c: Ditto. * libc/stdlib/wmemset.c: Ditto. * libc/stdlib/Makefile.am (GENERAL_SOURCES): Add new files. * configure.host: Default -DMB_CAPABLE for cygwin. * libc/include/wchar.h: Declare wmemchr(), wmemcmp(), wmemcpy(), wmemmove() and wmemset(). Add include of <_ansi.h>. * libc/stdlib/Makefile.in: Regenerate. 2002-08-27 Jeff Johnston * configure.host: Remove _ELIX_LEVEL flag setting. * Makefile.am(stmp-targ-include): Copy newlib.h to targ-include. (install-data-local): Install newlib.h. * Makefile.in: Regenerated. * aclocal.m4: Ditto. * configure: Ditto. * configure.in: Add AM_CONFIG_HEADER to generate newlib.h based on newlib.hin. Add AC_DEFINE_UNQUOTED entries for _ELIX_LEVEL and _NEWLIB_VERSION to fill in newlib.h header file entries. In AC_OUTPUT statement, unset ac_file so multilib support does not use last ac_file temporary used in newlib.h configuration. * libc/include/_ansi.h: Include . * newlib.hin: New template file for newlib.h. * stamp-h.in: New file. 2002-08-26 Wu Yongwei * time.h (timezonevar): Change "#if" to "#ifdef". 2002-08-26 Jeff Johnston * Makefile.am(LIBC_OBJECTLISTS): Add STDIO64_OBJECTLIST. * Makefile.in: Regenerated. * acinclude.m4: Add support for --enable-newlib-elix-level option. * aclocal.m4: Regenerated. * configure: Ditto. * configure.host: Add code to define _ELIX_LEVEL if --enable-newlib-elix-level option is used. * configure.in: * libc/aclocal.m4: Regenerated. * libc/configure: Ditto. * libc/argz/Makefile.am: Add EL/IX level checking. * libc/argz/Makefile.in: Regenerated. * libc/argz/dummy.c: New file. * libc/ctype/Makefile.am: Add EL/IX level checking. * libc/ctype/Makefile.in: Regenerated. * libc/locale/Makefile.am: Add EL/IX level checking. * libc/locale/Makefile.in: Regenerated. * libc/posix/Makefile.am: Add EL/IX level checking. * libc/posix/Makefile.in: Regenerated. * libc/posix/telldir.c: Add EL/IX level checking. * libc/reent/Makefile.am: Ditto. * libc/reent/fstat64r.c: Ditto. * libc/reent/lseek64r.c: Ditto. * libc/reent/open64r.c: Ditto. * libc/reent/Makefile.in: Regenerated. * libc/search/Makefile.am: Add EL/IX level checking. * libc/search/Makefile.in: Regenerated. * libc/stdio/Makefile.am: Add EL/IX level checking. * libc/stdio/Makefile.in: Regenerated. * libc/stdio64/Makefile.am: Add EL/IX level checking. * libc/stdio64/Makefile.in: Regenerated. * libc/stdio64/dummy.c: New file. * libc/stdio64/fgetpos64.c: Fix so _LARGE64_FILES macro is checked after first include. * libc/stdio64/fopen64.c: Ditto. * libc/stdio64/freopen64.c: Ditto. * libc/stdio64/fseeko64.c: Ditto. * libc/stdio64/fsetpos64.c: Ditto. * libc/stdio64/ftello64.c: Ditto. * libc/stdio64/tmpfile64.c: Ditto. * libc/stdlib/Makefile.am: Add EL/IX level checking. * libc/stdlib/Makefile.in: Regenerated. * libc/stdlib/mstats.c: Add EL/IX level checking. * libc/string/Makefile.am: Ditto. * libc/string/Makefile.in: Regenerated. * libc/sys/linux/Makefile.am: Add EL/IX level checking. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/aclocal.m4: Ditto. * libc/sys/linux/configure: Ditto. * libc/sys/linux/aio.c: Add EL/IX level checking. * libc/sys/linux/ftok.c: Ditto. * libc/sys/linux/getdate.c: Ditto. * libc/sys/linux/ids.c: Ditto. * libc/sys/linux/inode.c: Ditto. * libc/sys/linux/io.c: Ditto. * libc/sys/linux/process.c: Ditto. * libc/sys/linux/resource.c: Ditto. * libc/sys/linux/sched.c: Ditto. * libc/sys/linux/sig.c: Ditto. * libc/sys/linux/termios.c: Ditto. * libc/sys/linux/wait.c: Ditto plus add __waitpid and __libc___waitpid weak aliases. * libc/sys/linux/machine/i386/syscall.h: Add new _base macros that generate the code for a syscall, but do not create a weak alias. * libc/syscalls/Makefile.am: Add EL/IX level checking. * libc/syscalls/Makefile.in: Regenerated. * libc/time/tzset_r.c: Change to replace strdup with equivalent functionality. * libc/unix/Makefile.am: Add EL/IX level checking. * libc/unix/Makefile.in: Regenerated. 2002-08-26 Christopher Faylor * libc/include/malloc.h: On cygwin, define malloc _r functions as wrapper macros to standard malloc functions. * libc/include/stdlib.h: Ditto. * configure.host: Always define MALLOC_PROVIDED on cygwin. 2002-08-22 Thomas Fitzsimmons * libc/include/langinfo.h: New file. * libc/include/wchar.h: Likewise. * libc/include/sys/syslimits.h: Likewise. * libc/locale/fix_grouping.c: Likewise. * libc/locale/ldpart.c: Likewise. * libc/locale/ldpart.h: Likewise. * libc/locale/lmessages.c: Likewise. * libc/locale/lmessages.h: Likewise. * libc/locale/lmonetary.c: Likewise. * libc/locale/lmonetary.h: Likewise. * libc/locale/lnumeric.c: Likewise. * libc/locale/lnumeric.h: Likewise. * libc/locale/nl_langinfo.3: Likewise. * libc/locale/nl_langinfo.c: Likewise. * libc/locale/timelocal.c: Likewise. * libc/locale/timelocal.h: Likewise. * libc/stdlib/btowc.c: Likewise. * libc/stdlib/mbrlen.c: Likewise. * libc/stdlib/mbrtowc.c: Likewise. * libc/stdlib/mbsinit.c: Likewise. * libc/stdlib/mbsrtowcs.c: Likewise. * libc/stdlib/wcrtomb.c: Likewise. * libc/stdlib/wcsrtombs.c: Likewise. * libc/stdlib/wctob.c: Likewise. * libc/sys/linux/prof-freq.c: Likewise. * libc/sys/linux/profile.c: Likewise. * libc/sys/linux/machine/i386/dl-procinfo.c: Likewise. * libc/sys/linux/machine/i386/dl-procinfo.h: Likewise. * libc/include/stdlib.h: Change re-entrant functions to take mbstate_t pointers. * libc/include/sys/_types.h: Define _mbstate_t. * libc/include/sys/config.h (MB_LEN_MAX): New macro. * libc/include/sys/errno.h (EILSEQ): New error code. * libc/include/sys/reent.h: Include wchar.h. Change reentrant structure to use mbstate_t. * libc/locale/Makefile.am (LIB_SOURCES): Add new files. * libc/machine/powerpc/vfprintf.c: Use mbstate_t. * libc/machine/powerpc/vfscanf.c: Likewise. * libc/stdio/getdelim.c: Reallocate buffer only when necessary. * libc/stdio/vfprintf.c: Likewise. * libc/stdio/vfscanf.c: Likewise. * libc/stdlib/Makefile.am (LIB_SOURCES): Add new files. * libc/stdlib/mblen.c: Use mbstate_t. * libc/stdlib/mblen_r.c: Likewise. * libc/stdlib/mbstowcs.c: Likewise. * libc/stdlib/mbstowcs_r.c: Likewise. * libc/stdlib/mbtowc.c: Likewise. * libc/stdlib/mbtowc_r.c: Likewise. * libc/stdlib/wcstombs.c: Likewise. * libc/stdlib/wcstombs_r.c: Likewise. * libc/stdlib/wctomb_r.c: Likewise. * libc/sys/linux/Makefile.am (LIB_SOURCES): Add prof-freq.c and profile.c. * libc/sys/linux/machine/i386/Makefile.am (LIB_SOURCES): Add dl-procinfo.c. * libc/sys/linux/sys/errno.h (EILSEQ): New error code. * libc/sys/linux/sys/types.h (off_t): Define type. * testsuite/newlib.locale/UTF-8.c: Change locale name from UTF-8 to C-UTF-8. * testsuite/newlib.locale/UTF-8.exp: Likewise. 2002-08-20 Casper S. Hornstrup * libc/stdlib/mallocr.c: #include windows.h on Win32. (AlignPage): Continue macro on next line. 2002-08-19 Jeff Johnston * libc/sys/linux/include/pthread.h: New file. 2002-08-19 Jeff Johnston * libc/include/sys/types.h: Support __need_inttypes macro that only sets the __intxx and __uintxx types. * libc/machine/powerpc/Makefile.am: Add stdlib to include directories to get mprec.h. * libc/machine/powerpc/Makefile.in: Regenerated. * libc/machine/powerpc/vfprintf.c: Fix state variable type. * libc/machine/powerpc/vfscanf.c: Fix state variable type. Remove redundant fixed-point conversion prototypes. * libc/machine/powerpc/machine/stdlib.h[__SPE__]: Include after setting __need_inttypes. 2002-08-18 Christopher Faylor * libc/include/sys/unistd.h: Add getsid declaration for cygwin. 2002-08-17 Jeff Johnston * libc/include/sys/config.h[__PPC__][__SPE__]: Set _LONG_DOUBLE to double. 2002-08-17 Jeff Johnston * configure.host: Add powerpc*-*-eabispe* configuration. * libc/machine/powerpc/atosfix16.c: New fixed-point conversion file. * libc/machine/powerpc/atosfix32.c: Ditto. * libc/machine/powerpc/atosfix64.c: Ditto. * libc/machine/powerpc/atoufix16.c: Ditto. * libc/machine/powerpc/atoufix32.c: Ditto. * libc/machine/powerpc/atoufix64.c: Ditto. * libc/machine/powerpc/fix64.h: Ditto. * libc/machine/powerpc/simdldtoa.c: Ditto. * libc/machine/powerpc/strtosfix16.c: Ditto. * libc/machine/powerpc/strtosfix32.c: Ditto. * libc/machine/powerpc/strtosfix64.c: Ditto. * libc/machine/powerpc/strtoufix16.c: Ditto. * libc/machine/powerpc/strtoufix32.c: Ditto. * libc/machine/powerpc/strtoufix64.c: Ditto. * libc/machine/powerpc/ufix64toa.c: Ditto. * libc/machine/powerpc/configure.in: Add check for powerpc*-eabispe and add fixed-point conversion functions. * libc/machine/powerpc/configure: Regenerated. * libc/machine/powerpc/vfprintf.c[__SPE__]: Add support for %r and %R format specifiers which handle fixed-point data. * libc/machine/powerpc/vfscanf.c[__SPE__]: Ditto. * libc/machine/powerpc/machine/stdlib.h[__SPE__]: Add fixed-point function prototypes. 2002-08-17 Jeff Johnston * Makefile.am: Move cmath stuff into libc/sys/linux. * Makefile.in: Regenerated. * configure.host: Default -DMB_CAPABLE for x86-linux. * libc/include/reent.h: Define _sbrk to take signed int argument. * libc/include/sys/unistd.h: Ditto for _sbrk_r and sbrk. * libc/locale/locale.c[MB_CAPABLE]: Add LC_MESSAGES support and make locale name checking more efficient. Also allow "C-ISO-8859-1" locale for LC_CTYPE and LC_MESSAGES. * libc/reent/sbrkr.c: Change prototype to take ptrdiff_t. * libc/sys/linux/brk.c: Change sbrk prototype. * libc/sys/linux/include/time.h: Remove Cygwin stuff and include . (CLOCK_THREAD_CPUTIME): Renamed to CLOCK_THREAD_CPUTIME_ID. (CLOCK_PROCESS_CPUTIME): Renamed to CLOCK_PROCESS_CPUTIME_ID. * libc/sys/linux/sys/cdefs.h: Replace with glibc sys/cdefs.h with a few local additions. * libc/sys/linux/sys/features.h: New file. * libc/sys/linux/sys/unistd.h: Change _sbrk_r and sbrk prototypes to take signed argument. * libc/syscalls/syssbrk.c: Change sbrk, _sbrk_r, and _sbrk prototypes to take signed size argument. 2002-08-16 Thomas Fitzsimmons * libc/sys/linux/cmath: New directory. * libc/sys/linux/include/cmathcalls.h: New file. * libc/sys/linux/include/complex.h: New file. * libc/sys/linux/machine/i386/huge_val.h: New file * libm/math/w_sincos.c: New file * libm/math/wf_sincos.c: New file * libm/mathfp/s_sincos.c: New file * libm/mathfp/sf_sincos.c: New file * Makefile.am (LIBC_OBJECTLISTS): Add cmath/objectlist.awk.in. * libc/include/math.h: Add sincos and sincosf declarations. * libc/sys/linux/Makefile.am (SUBDIRS): Add cmath. (SUBLIBS): Likewise. * libc/sys/linux/configure.in (AC_OUTPUT): Add cmath. * libm/math/Makefile.am (src): Add w_sincos.c. (fsrc): Add wf_sincos.c. * libm/mathfp/Makefile.am (src): Add s_sincos.c (fsrc): Add sf_sincos.c. 2002-08-12 Jeff Johnston * libc/sys/linux/machine/i386/crt0.c (__bss_start,_end): Declare as extern chars and use the address operator to properly use values set in linker script. 2002-08-09 Jason Tishler * libc/stdlib/mallocr.c: Include . (request2size): Change macro to do unsigned long comparisons and avoid signed overflow. (mALLOc): Add overflow check for the number of bytes to allocate. (rEALLOc): Ditto. 2002-08-09 Jeff Johnston * configure.host: Add check for --enable-newlib-io-pos-args and define WANT_IO_POS_ARGS flag if enabled. Define the flag by default for x86-linux configurations. * configure.in: Add support for --enable-newlib-io-pos-args. * libc/configure.in: Ditto. * configure: Regenerated. * libc/configure: Ditto. * libc/stdio/Makefile.am: Specify -fshort-enums for compiling vfprintf.c and vfiprintf.c. * libc/stdio/Makefile.in: Regenerated. * libc/stdio/vfprintf.c: Add positional argument support that is enabled by compiling with -DWANT_IO_POS_ARGS. 2002-08-07 Richard Sandiford * libc/include/machine/setjmp.h: For mips, define _JBLEN based based on __mips_soft_float rather than __mips64. * libc/machine/mips/setjmp.S: Provide hard and soft float versions of both 32-bit and 64-bit code. 2002-08-04 Christopher Faylor * libc/stdio/popen.c (popen): Allow "rb", "rt", "wb", and "wt" arguments for popen to match similar functionality in fopen. 2002-07-29 Pierre Humblet * libc/include/sys/unistd.h: Add setgroups prototype for Cygwin. 2002-07-29 Jeff Johnston * libc/sys/linux/Makefile.am: Add aio64.c. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/aio.c (aio_init): ENOSYS stub added. * libc/sys/linux/aio64.c: New file. 2002-07-26 Jeff Johnston * libc/include/sys/param.h (MAX, MIN): Added macros. * libc/sys/linux/Makefile.am: Add new files. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/sys/stat.h: Add *stat64 prototypes. * libc/sys/linux/inode.c (fchdir): Added syscall. * libc/sys/linux/ftw.c: New file. * libc/sys/linux/ftw64.c: Ditto. * libc/sys/linux/getwd.c: Ditto. * libc/sys/linux/scandir64.c: Ditto. * libc/sys/linux/strverscmp.c: Ditto. * libc/sys/linux/versionsort.c: Ditto. * libc/sys/linux/versionsort64.c: Ditto. 2002-07-26 Jeff Johnston * libc/string/strings.tex: Fix typo for memccpy. 2002-07-25 Jeff Johnston * libc/sys/linux/io64.c (truncate64, ftruncate64): Added. * libc/sys/linux/sys/types.h (off64_t): Definition added. 2002-07-25 Jeff Johnston * libc/sys/linux/Makefile.am: Add fclean.c. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/fclean.c: New file. 2002-07-25 Jeff Johnston * libc/sys/linux/Makefile.am: Add confstr.c. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/confstr.c: New file. * libc/sys/linux/confstr.h: Ditto. * libc/sys/linux/sys/unistd.h: Include and . 2002-07-25 Jeff Johnston * libc/sys/linux/config.h (__set_errno): Macro definition removed. * libc/sys/linux/fpathconf.c (__set_errno): Ditto. * libc/sys/linux/libc-internal.h (__set_errno): Ditto. * libc/sys/linux/pathconf.c (__set_errno): Ditto. * libc/sys/linux/ttyname_r.c (__set_errno): Ditto. * libc/sys/linux/sys/errno.h (__set_errno): Macro definition added. 2002-07-24 Jeff Johnston * libc/sys/linux/Makefile.am: Add new files. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/fstab.c: New file. * libc/sys/linux/fstatvfs.c: Ditto. * libc/sys/linux/fstatvfs64.c: Ditto. * libc/sys/linux/internal_statvfs.c: Ditto. * libc/sys/linux/mntent.c: Ditto. * libc/sys/linux/mntent_r.c: Ditto. * libc/sys/linux/statvfs.c: Ditto. * libc/sys/linux/statvfs64.c: Ditto. * libc/sys/linux/include/paths.h: Ditto. * libc/sys/linux/inode.c (statfs, fstatfs): New syscalls with double-underscore weak-aliases. * libc/sys/linux/sys/stat.h: Add *stat64 prototypes. 2002-07-24 Jeff Johnston * libc/include/signal.h (SIG_IGN, SIG_DFL, SIG_ERR): Change to use _sig_func_ptr type casted constants. (_sig_func_ptr): Typedef moved to sys/signal.h. * libc/include/sys/signal.h (_sig_func_ptr): Typedef added. For __rtems, use POSIX definition, otherwise default to ANSI. * libc/sys/linux/sys/signal.h (_sig_func_ptr): Typedef added. 2002-07-24 Stephane Carrez * configure.host: Recognize m6811-elf and m6812-elf targets. * libc/include/machine/setjmp.h (_JBLEN): Define for 68hc11/68hc12. * libc/include/machine/ieeefp.h (__IEEE_BIG_ENDIAN): Define for 68HC11. (_DOUBLE_IS_32BITS): Define when compiling with -fshort-double. * libc/include/sys/config.h (INT_MAX, UINT_MAX): Define according to __INT_MAX__. (_POINTER_INT): Define to short. * libc/machine/m68hc11/Makefile.am: New file. * libc/machine/m68hc11/Makefile.in: New file. * libc/machine/m68hc11/configure.in: New file. * libc/machine/m68hc11/configure: New file. * libc/machine/m68hc11/aclocal.m4: New file. * libc/machine/m68hc11/setjmp.S: New file. 2002-07-23 Jeff Johnston * libc/include/string.h: Add mempcpy, strndup, and _strndup_r prototypes. * libc/stdlib/Makefile.am: Remove strdup.c and strdup_r.c. * libc/stdlib/Makefile.in: Regenerated. * libc/stdlib/strdup.c: Removed. * libc/stdlib/strdup_r.c: Removed. * libc/string/Makefile.am: Add strdup.c, strdup_r.c, memccpy.c, mempcpy.c, strndup.c, and strndup_r.c. * libc/string/Makefile.in: Regenerated. * libc/string/memccpy.c: New file. * libc/string/mempcpy.c: Ditto. * libc/string/strndup.c: Ditto. * libc/string/strndup_r.c: Ditto. * libc/string/strdup.c: New file moved from stdlib. * libc/string/strdup_r.c: Ditto. * libc/string/strings.tex: Add memccpy and mempcpy documentation. 2002-07-23 Jeff Johnston * libc/include/stdio.h: Move fcloseall prototype within #ifndef _REENT_ONLY section. * libc/sys/linux/Makefile.am: Add new files. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/sys/stdio.h: Add ctermid prototype. * libc/sys/linux/sys/unistd.h: Add ttyname_r prototype. * libc/sys/linux/sys/types.h: Add ino64_t type. * libc/sys/linux/ctermid.c: New file. * libc/sys/linux/ttyname_r.c: Ditto. * libc/sys/linux/readdir64.c: Ditto. 2002-07-22 Jeff Johnston * libc/include/stdio.h (fcloseall, _fcloseall_r): Added prototypes. * libc/stdio/Makefile.am: Added fcloseall.c support. * libc/stdio/Makefile.in: Regenerated. * libc/stdio/fcloseall.c: New file. * libc/stdio64/Makefile.am: Remove missing .def references. * libc/stdio64/Makefile.in: Regenerated. 2002-07-22 Jeff Johnston * libc/machine/powerpc/time.c: Removed..renamed to times.c. * libc/machine/powerpc/times.c: New file. * libc/machine/powerpc/Makefile.am: Change time.c to times.c. * libc/machine/powerpc/Makefile.in: Regenerated. 2002-07-22 Aldy Hernandez * libc/machine/powerpc/time.c: New file. * libc/machine/powerpc/Makefile.am (lib_a_SOURCES): Add time.c. * libc/machine/powerpc/Makefile.in: Regenerated. 2002-07-22 Thomas Fitzsimmons * libc/libc.texinfo: Change copyright notices to Red Hat from Cygnus. * libm/libm.texinfo: Likewise. * README: Change docs URL to http://sources.redhat.com/newlib/docs.html. 2002-07-19 Jeff Johnston * libc/sys/linux/Makefile.am: Add pathconf.c and fpathconf.c. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/inode.c: Add chmod, fchmod, and chown syscalls. * libc/sys/linux/io.c: Add ftruncate syscall. * libc/sys/linux/fpathconf.c: New file. * libc/sys/linux/pathconf.c: Ditto. * libc/sys/linux/linux_fsinfo.h: Ditto. * libc/sys/linux/sys/unistd.h: Ditto. 2002-07-19 Jeff Johnston * libc/stdio64/Makefile.am: Remove missing files. * libc/stdio64/Makefile.in: Regenerated. 2002-07-19 Jeff Johnston * libc/include/sys/config.h[__i386__][__linux__]: Define _LARGE64FILE_SOURCE to 1. * libc/sys/linux/Makefile.am: Add getrlimit64.c and setrlimit64.c. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/resource.c: Add __getrlimit and __setrlimit aliases. * libc/sys/linux/sys/linux_time.h: Protect struct timeval definition. * libc/sys/linux/sys/resource.h: Include instead of . * libc/sys/linux/getrlimit64.c: New file. * libc/sys/linux/setrlimit64.c: Ditto. 2002-07-19 Thomas Fitzsimmons * libc/argz/argz_replace.c: Include buf_findstr.h. * libc/argz/buf_findstr.c: Likewise. * libc/argz/envz_entry.c: Include buf_findstr.h. Cast return value to (char *). * libc/argz/envz_get.c: Likewise. * libc/include/sys/unistd.h: Add getopt and getsubopt declarations. * libc/stdlib/Makefile.am (LIB_SOURCES): Add getsubopt.c. * libc/stdlib/getsubopt.3: New file. * libc/stdlib/getsubopt.c: New file. * libc/sys/linux/machine/i386/socketcall.h (__sockcall_base): Change esp to ebp. 2002-07-17 Jeff Johnston * configure.host(stdio64_dir): New setting that is used to enable building of new stdio64 directory. * libc/Makefile.am[HAVE_STDIO64_DIR]: Add support for large files. (stmp-stdio64,stdio64.texi): New targets to optionally add in stdio64 info to info files. * libc/Makefile.in: Regenerated. * libc/configure: Ditto. * libc/configure.in: Add configuration variables that are set when stdio64 is selected as subdir in configure.host. * libc/libc.texinfo: Add optional menu item for Stdio64, based on whether STDIO64 flag is set or not. * libc/sys.tex: Add optional stdio64 syscalls based on whether STDIO64 flag is set or not. * libc/include/reent.h[__LARGE64_FILES]: Add new stdio64 _r sycall routines. * libc/include/stdio.h[__LARGE64_FILES]: Add new stdio64 prototypes. (FILE): Typedef'd to __FILE instead of struct __sFILE directly. (__SL64): New file flag indicating file is opened via fopen64. * libc/include/sys/_types.h(_off64_t): Added. * libc/include/sys/config.h: For x86-linux, define __LARGE64_FILES. * libc/include/sys/reent.h(struct __sFILE64): New file structure for 64-bit offset large file support. (__FILE): New intermediate type either set to struct __sFILE64 or struct __sFILE, depending on whether __LARGE64_FILES is set or not. * libc/reent/Makefile.am[HAVE_STDIO64_DIR]: Add new files. * libc/reent/Makefile.in: Regenerated. * libc/reent/fstat64r.c: New file. * libc/reent/lseek64r.c: Ditto. * libc/reent/open64r.c: Ditto. * libc/reent/reent.tex: Optionally add stdio64 reentrant syscalls based on whether STDIO64 flag is set. * libc/stdio/stdio.tex: Add blank line. * libc/stdio64/Makefile.am: New file. * libc/stdio64/Makefile.in: Ditto. * libc/stdio64/fgetpos64.c: Ditto. * libc/stdio64/fopen64.: Ditto. * libc/stdio64/freopen64.c: Ditto. * libc/stdio64/fseeko64.c: Ditto. * libc/stdio64/fsetpos64.c: Ditto. * libc/stdio64/ftello64.c: Ditto. * libc/stdio64/local64.h: Ditto. * libc/stdio64/stdio64.c: Ditto. * libc/stdio64/stdio64.tex: Ditto. * libc/stdio64/tmpfile64.c: Ditto. * libc/sys/linux/io64.c: Add weak aliases for lseek64, fstat64, and open64. 2002-07-16 Jeff Johnston * libc/Makefile.am (stmp-extra): New target to set makeinfo flag if LIBC_EXTRA_LIB is present. * libc/Makefile.in: Regenerated. * libc/libc.texinfo: Add blank line. * libc/argz/Makefile.am: Add doc support. * libc/search/Makefile.am: Ditto. * libc/argz/Makefile.in: Regenerated. * libc/search/Makefile.in: Ditto. * libc/misc/misc.tex: Add ffs function. * libc/stdio/ftell.c: Fix missing doc delimeter in description. 2002-07-15 Jeff Johnston * libc/include/sys/config.h[__H8300__]: Replace __SMALL_BITFIELDS definition that was removed in error. 2002-07-15 Jeff Johnston * libc/include/machine/ieeefp.h: Change to only define floating point defines (e.g one of __IEEE_BIG_ENDIAN or __IEEE_LITTLE_ENDIAN must be defined for each platform). * libc/include/sys/config.h: Include and remove redundant floating point definitions. 2002-07-15 Jeff Johnston * libc/sys/linux/callocr.c: Fix so code references calloc. 2002-07-15 Jeff Johnston * libc/sys/linux/Makefile.am: Add new files. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/bp-sym.h: Moved to include directory. * libc/sys/linux/mmap.c: Add weak aliases: __mmap, __munmap, __mremap. * libc/sys/linux/inode.c: Set _LIBC to 1. * libc/sys/linux/mq_close.c: Ditto. * libc/sys/linux/mq_getattr.c: Ditto. * libc/sys/linux/mq_open.c: Ditto. * libc/sys/linux/mq_receive.c: Ditto. * libc/sys/linux/mq_send.c: Ditto. * libc/sys/linux/mq_setattr.c: Ditto. * libc/sys/linux/mq_unlink.c: Ditto. * libc/sys/linux/calloc.c: New file. * libc/sys/linux/callocr.c: Ditto. * libc/sys/linux/cfreer.c: Ditto. * libc/sys/linux/config.h: Ditto. * libc/sys/linux/free.c: Ditto. * libc/sys/linux/freer.c: Ditto. * libc/sys/linux/msize.c: Ditto. * libc/sys/linux/msizer.c: Ditto. * libc/sys/linux/mstats.c: Ditto. * libc/sys/linux/mtrim.c: Ditto. * libc/sys/linux/mtrimr.c: Ditto. * libc/sys/linux/pvallocr.c: Ditto. * libc/sys/linux/realloc.c: Ditto. * libc/sys/linux/reallocr.c: Ditto. * libc/sys/linux/thread-m.h: Ditto. * libc/sys/linux/vallocr.c: Ditto. * libc/sys/linux/bp-checks.h: Ditto. * libc/sys/linux/libc-symbols.h: Ditto. * libc/sys/linux/libc-tsd.h: Ditto. * libc/sys/linux/libintl.h: Ditto. * libc/sys/linux/malign.c: Ditto. * libc/sys/linux/malignr.c: Ditto. * libc/sys/linux/mallinfor.c: Ditto. * libc/sys/linux/malloc.c: Ditto. * libc/sys/linux/mallocr.c: Ditto. * libc/sys/linux/malloptr.c: Ditto. * libc/sys/linux/mallstatsr.c: Ditto. * libc/sys/linux/mcheck.c: Ditto. * libc/sys/linux/mhooks.h: Ditto. * libc/sys/linux/include/bp-sym.h: Ditto. * libc/sys/linux/include/malloc.h: Ditto. * libc/sys/linux/include/mcheck.h: Ditto. * libc/sys/linux/linuxthreads/machine/i386/Makefile.am: Remove getpagesize.c. * libc/sys/linux/linuxthreads/machine/i386/Makefile.in: Regenerated. * libc/sys/linux/linuxthreads/machine/i386/getpagesize.c: Moved. * libc/sys/linux/machine/i386/getpagesize.c: New file. * libc/sys/linux/machine/i386/Makefile.am: Add getpagesize.c. * libc/sys/linux/machine/i386/Makefile.in: Regenerated. * libc/sys/linux/machine/i386/sysdep.h: New file. * libc/sys/linux/machine/i386/weakalias.h: Add weak_function support. * libc/sys/linux/sys/dirent.h: Set _LIBC to 1. * libc/sys/linux/sys/lock.h: Include . 2002-07-12 Jeff Johnston * libc/sys/linux/include/mqueue.h: Change to use instead of . * libc/sys/linux/sys/signal.h: Change to include various linux header files, rather than so as to work with multiple releases of glibc header files. 2002-07-11 Chris Demetriou * testsuite/newlib.search/hsearchtest.c: New file to test newlib/libc/search. * testsuite/newlib.search/hsearchtest.exp: Likewise. 2002-07-10 Florian Schrack * libc/sys/mmixware/read.c: Use SYS_Fgets syscall if dealing with a terminal. * libc/sys/mmixware/sys/syscall.h (SYS_Fgets): Definition added. 2002-07-08 Jeff Johnston * libc/include/math.h (MAXFLOAT): Added. Mon Jul 8 13:55:23 2002 J"orn Rennecke * libc/machine/sh/Makefile.am (lib_a_SOURCES): Make strcmp.S unconditional. * libc/machine/sh/Makefile.in: Regenerate. * libc/machine/sh/asm.h (DELAYED_BRANCHES, SL): Also for __SH5__ . * strcmp.S (strcmp): Add SHmedia variant. Use different registers for SHcompact. 2002-07-04 Jeff Johnston * libc/sys/linux/inode.c: Fix utime prototype and add _LIBC define before including . 2002-07-04 Jeff Johnston * libc/include/utime.h: Add include of <_ansi.h>. * libc/sys/linux/Makefile.am: Add utimes.c. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/inode.c(__umask): New static routine. (umask): Written to use __umask and attempt to thread lock. (getumask): New function written to use __umask and thread lock. * libc/sys/linux/utimes.c: New file. * libc/sys/linux/sys/time.h: Fix utimes prototype. * libc/sys/linux/sys/utime.h: New file. 2002-07-04 Thomas Fitzsimmons * libtool.m4: New file. * libc/sys/linux/process.c: Implement vfork in terms of fork, rather than as a syscall. 2002-07-04 Jeff Johnston * libc/include/stdio.h: Add new prototypes. * libc/stdio/Makefile.am: Add fseeko.c and ftello.c. * libc/stdio/Makefile.in: Regenerated. * libc/stdio/fseek.c: Add fseeko documentation. * libc/stdio/ftell.c: Add ftello documentation. * libc/stdio/fseeko.c: New file. * libc/stdio/ftello.c: New file. 2002-07-04 Jeff Johnston * libc/stdio/Makefile.am: Add asprintf.c and vasprintf.c. * libc/stdio/Makefile.in: Regenerated. * libc/stdio/asprintf.c: New file. * libc/stdio/vasprintf.c: Ditto. * libc/stdio/fvwrite.c: Add code to dynamically reallocate the buffer for asprintf support. * libc/stdio/sprintf.c: Add asprintf documentation. * libc/stdio/vfprintf.c: Add vasprintf documentation. * libc/include/stdio.h: Add new prototypes. 2002-07-02 Thomas Fitzsimmons * libc/search/hcreate.c: Remove advertising clause from license. * libc/search/hcreate_r.c: Likewise. 2002-07-02 Chris Demetriou * libc/include/sys/config.h (__IEEE_LITTLE_ENDIAN) (__IEEE_BIG_ENDIAN): Define appropriately for MIPS. Check that one of them is defined and error out if not. Add any platforms defined in that are missing. * libc/search/hash.h (DB_BYTE_ORDER, DB_BIG_ENDIAN) (DB_LITTLE_ENDIAN): New defines. * libc/search/hash.c: Replace all incorrect checks for _IEEE_LITTLE_ENDIAN with tests of BYTE_ORDER, and all uses of BYTE_ORDER, LITTLE_ENDIAN, and BIG_ENDIAN with DB_* versions. * libc/search/hash_page.c: Likewise. 2002-06-28 Thomas Fitzsimmons * libm/mathfp/sf_pow.c (powf): Change k from int to float. 2002-06-27 Benjamin Kosnik * libc/include/stdio.h: Untangle, add _BEGIN_STD_C and _END_STD_C. * libc/include/time.h: Same. * libc/include/string.h: Same. * libc/include/stdlib.h: Same. * libc/include/signal.h: Same. * libc/include/setjmp.h: Same. * libc/include/math.h: Same. * libc/include/locale.h: Same. * libc/include/ctype.h: Same. * libc/include/machine/setjmp.h: Same. * libc/include/_ansi.h (_BEGIN_STD_C): Add. (_END_STD_C): Add. 2002-06-27 Jeff Johnston * libc/include/sys/_types.h: Define _ssize_t as int if int is 32-bits, otherwise define it as long. * libc/include/sys/types.h: Include <_ansi.h> and and define ssize_t as _ssize_t. * libc/reent/readr.c: Change return type to _ssize_t. * libc/reent/writer.c: Ditto. * libc/sys/linux/Makefile.am: Add aio.c. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/aio.c: New file. * libc/sys/linux/sys/cdefs.h: Add __restrict_arr definition. * libm/common/fdlibm.h: Undef __P before defining it. 2002-06-27 Thomas Fitzsimmons * libm/mathfp/s_pow.c (pow): Fix checks on variable k. Add exponent_is_even_int variable. Handle case where x is negative, and y is an odd integer. * libm/mathfp/sf_pow.c (powf): Likewise. * libm/mathfp/er_lgamma.c: Remove __kernel references. * libm/mathfp/erf_lgamma.c: Likewise. * libm/mathfp/s_tgamma.c: Likewise. * libm/mathfp/sf_tgamma.c: Likewise. 2002-06-27 Jeff Johnston * libc/sys/linux/Makefile.am: Add new clock routines. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/clock_getres.c: New file. * libc/sys/linux/clock_gettime.c: Ditto. * libc/sys/linux/clock_settime.c: Ditto. * libc/sys/linux/hp-timing.h: Ditto. * libc/sys/linux/libc-internal.h: Ditto. * libc/sys/linux/sysconf.c: Fix typo. * libc/sys/linux/include/time.h: Add include of . * libc/sys/linux/machine/hp-timing.h: New file. * libc/sys/linux/machine/i386/Makefile.am: Add new files. * libc/sys/linux/machine/i386/Makefile.in: Regenerated. * libc/sys/linux/machine/i386/get_clockfreq.c: New file. * libc/sys/linux/machine/i386/hp-timing.c: Ditto. * libc/sys/linux/machine/i386/hp-timing.h: Ditto. * libc/sys/linux/sys/linux_time.h: New file. * libc/sys/linux/sys/time.h: Remove include of and replace with . Wed Jun 26 16:33:25 2002 J"orn Rennecke * libc/sys/sh/crt0.S: Remove vestigial .section directive. 2002-06-25 Jeff Johnston * libc/sys/linux/Makefile.am: Consolidate additional items under ADD_OBJS. * libc/sys/linux/Makefile.in: Regenerated. 2002-06-25 Jeff Johnston * libc/sys/linux/sethostname.c: New file. * libc/sys/linux/Makefile.am: Add sethostname.c support. * libc/sys/linux/Makefile.in: Regenerated. 2002-06-24 Thomas Fitzsimmons * libc/search/db_local.h: New file. * libc/include/db.h: Remove. * libc/search/Makefile.am (LIB_SOURCES): Add db_local.h. * libc/search/hash.c (MIN,MAX): Add macros. Change to "db_local.h". * libc/search/hash_bigkey.c: Likewise. * libc/search/hash_buf.c: Likewise. * libc/search/hash_func.c: Likewise. * libc/search/hash_log2.c: Likewise. * libc/search/hash_page.c: Likewise. 2002-06-24 J"orn Rennecke * libc/machine/sh/strlen.S: New file. * libc/machine/sh/Makefile.am (lib_a_SOURCES): Add rule for it. * libc/machine/sh/Makefile.am: Regenerate. 2002-06-24 Jeff Johnston * libc/sys/linux/gethostname.c: Change name to __gethostname and add gethostname alias. 2002-06-24 Jeff Johnston * libc/include/math.h: Remove . (__dmath): Use __ULong instead of __uint32_t. * libc/include/sys/reent.h: If long or int is not 32-bits, include to get definitions for __int32_t and __uint32_t. * libc/stdlib/mprec.h: Include to get integer defs. * libm/common/fdlibm.h: Ditto. 2002-06-24 Thomas Fitzsimmons * libc/include/ndbm.h: Remove. * libc/search/ndbm.c: Remove. 2002-06-24 WATANABE Hirofumi * libc/stdio/fseek.c (fseek): Fix braces. 2002-06-21 Corinna Vinschen * libc/time/strftime.c (strftime): Add %e format specifier. 2002-06-21 Thomas Fitzsimmons * libc/search/hash.h (LITTLE_ENDIAN, BIG_ENDIAN): Define if not previously defined. 2002-06-21 Richard Earnshaw (rearnsha@arm.com) * libc/sys/arm/sys/param.h (BIG_ENDIAN, LITTLE_ENDIAN): Define. (BYTE_ORDER): Define as appropriate for the target. 2002-06-21 Jeff Johnston * libc/include/sys/config.h[__linux__]: Set _READ_WRITE_RETURN_TYPE to _ssize_t. * libc/sys/linux/io.c (read, write): Change to return ssize_t. 2002-06-21 Jeff Johnston * libc/include/stdio.h (__getline, __getdelim): New prototypes. * libc/include/time.h [HAVE_GETDATE](getdate, getdate_r): Ditto. [HAVE_GETDATE](getdate_err): New error code. * libc/stdio/Makefile.am: Add support for getline.c and getdelim.c. * libc/stdio/Makefile.in: Regenerated. * libc/stdio/getdelim.c: New file. * libc/stdio/getline.c: Ditto. * libc/sys/linux/Makefile.am: Add support for getdate.c, getdate_err.c and ntp_gettime.c. Also add AM_CFLAGS to point to libc/stdio. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/getdate.c: New file. * libc/sys/linux/getdate_err.c: Ditto. * libc/sys/linux/ntp_gettime.c: Ditto. * libc/sys/linux/time.c (adjtimex, ntp_adjtime): New functions. * libc/sys/linux/sys/stdio.h (getline, getdelim): New macros. 2002-06-21 Jeff Johnston * libc/include/math.h: Add to get _uint32_t definition. * libc/include/machine/types.h: Skip __off_t, __pid_t, and __loff_t definitions if special _HAVE_SYSTYPES macro defined. * libc/include/sys/config.h: Removed _uint*, _int* definitions. * libc/include/sys/param.h: Remove i386 case which is handled by default case. (BIG_ENDIAN, LITTLE_ENDIAN): Protect definitions in case they are already defined. (BYTE_ORDER): Add default case using _IEEE_BIG_ENDIAN and _IEEE_LITTLE_ENDIAN flags. * libc/include/sys/reent.h: Change __uint32_t references to use _ULong instead. (_REENT_GETDATE_REENT_P): New macro. * libc/include/sys/types.h (__int16_t, __uint16_t): Added. (__int32_t, __uint32_t, __int64_t, __uint64_t): Ditto. * libc/search/hash.h: Add default setting of BYTE_ORDER, LITTLE_ENDIAN, and BIG_ENDIAN, if not already defined. * libc/sys/linux/sys/types.h: Include . Define ssize_t based on _ssize_t. Remove __socklen_t, __uintptr_t, pid_t, off_t, loff_t, caddr_t, and daddr_t type definitions which are done by subsequent glibc headers. Add macro definitions to prevent subsequent header files from defining pid_t, off_t, ssize_t, and key_t. Move uintptr_t and intptr_t to after glibc definitions of types they are based on. 2002-06-21 Jeff Johnston * libc/include/errno.h: Protect from multiple inclusion. 2002-06-21 Nick Clifton * libc/sys/arm/swi.h (ADP_Stopped_RunTimeError): Set correct value. 2002-06-20 Thomas Fitzsimmons * Makefile.am (LIB_OBJECTLISTS): Add libc/search/objectlist.awk.in. * libc/Makefile.am (SUBDIRS): Add search. (SUBLIBS): Add search/libsearch.la. * libc/configure.in (AC_OUTPUT): Add search/Makefile. * libc/search: New directory. * libc/search/Makefile.am: New file. * libc/search/extern.h: New file. * libc/search/hash.c: New file. * libc/search/hash.h: New file. * libc/search/hash_bigkey.c: New file. * libc/search/hash_buf.c: New file. * libc/search/hash_func.c: New file. * libc/search/hash_log2.c: New file. * libc/search/hash_page.c: New file. * libc/search/hcreate.3: New file. * libc/search/hcreate.c: New file. * libc/search/hcreate_r.c: New file. * libc/search/ndbm.c: New file. * libc/search/page.h: New file. * libc/search/tdelete.c: New file. * libc/search/tdestroy.c: New file. * libc/search/tfind.c: New file. * libc/search/tsearch.3: New file. * libc/search/tsearch.c: New file. * libc/search/twalk.c: New file. * libc/include/db.h: New file. * libc/include/ndbm.h: New file. * libc/include/search.h: New file. * libc/include/sys/queue.h: New file. * libc/include/sys/cdefs.h: New file. * libc/include/sys/param.h [__IEEE_LITTLE_ENDIAN,__IEEE_BIG_ENDIAN]: Set BYTE_ORDER to LITTLE_ENDIAN or BIG_ENDIAN. * libc/include/sys/errno.h (EFTYPE): New macro. * libc/search/bsearch.c: Move from libc/stdlib. * libc/search/qsort.c: Likewise. * libc/stdlib/Makefile.am (LIB_SOURCES): Remove bsearch.c and qsort.c. (CHEWOUT_FILES): Remove bsearch.def and qsort.def. * libc/stdlib/stdlib.tex: Remove references to bsearch and qsort. 2002-06-19 Jeff Johnston * libc/sys/linux/Makefile.am: Add support for message queue routines, ipc routines, and ftok. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/ftok.c: New file. * libc/sys/linux/ipc.c: Ditto. * libc/sys/linux/mq_close.c: Ditto. * libc/sys/linux/mq_getattr.c: Ditto. * libc/sys/linux/mq_notify.c: Ditto. * libc/sys/linux/mq_open.c: Ditto. * libc/sys/linux/mq_receive.c: Ditto. * libc/sys/linux/mq_send.c: Ditto. * libc/sys/linux/mq_setattr.c: Ditto. * libc/sys/linux/mq_unlink.c: Ditto. * libc/sys/linux/mqlocal.h: Ditto. * libc/sys/linux/include/mqueue.h: Ditto. * libc/sys/linux/sys/types.h: Define __gid_t_defined and __uid_t_defined. 2002-06-19 J"orn Rennecke * libm/common/sf_lround.c (round): Change name to: (lround). * libm/common/sf_remquo.c (remquo): Pass all arguemnts to remquof. 2002-06-18 Thomas Fitzsimmons * testsuite/lib/passfail.exp (newlib_pass_fail_all): New procedure. (newlib_pass_fail): Change to compile and run only one file. * testsuite/newlib.locale/locale.exp: Use new newlib_pass_fail_all procedure. * testsuite/newlib.string/string.exp: Likewise. 2002-06-18 Dave Brolley From Catherine Moore, Michael Meissner, Richard Sandiford: * libc/include/machine/setjmp.h (_JBLEN): Define for __frv__. (_JBTYPE): Ditto. * libc/include/sys/config.h (__IEEE_BIG_ENDIAN): Ditto. (__ATTRIBUTE_IMPURE_PTR__): Ditto. * libc/include/machine/ieeefp.h (__IEEE_BIG_ENDIAN): Ditto. * configure.host: Support frv-*-*. * libc/machine/frv/Makefile.am: New file. * libc/machine/frv/configure.in: New file. * libc/machine/frv/setjmp.S: New file. 2002-06-18 Thomas Fitzsimmons * libc/include/ctype.h: Remove isblank macro. * libc/ctype/Makefile.am (LIB_SOURCES): Add isblank.c. * libc/ctype/isblank.c: New file. * libc/include/ctype.h [!__STRICT_ANSI__]: Add isblank declaration. Add isblank macro. 2002-06-18 Jeff Johnston * testsuite/newlib.stdlib/atexit.c: New file. * testsuite/newlib.stdlib/atexit.exp: Ditto. * testsuite/newlib.string/tstring.c: Change default start size to something more reasonable for embedded platforms. 2002-06-14 Thomas Fitzsimmons * libc/sys/linux/sys/errno.h (EFTYPE): Add macro. * libc/argz: New directory. * libc/argz/*: New files. * libc/argz/argz_add.c: New file. * libc/argz/argz_add_sep.c: New file. * libc/argz/argz_append.c: New file. * libc/argz/argz_count.c: New file. * libc/argz/argz_create.c: New file. * libc/argz/argz_create_sep.c: New file. * libc/argz/argz_delete.c: New file. * libc/argz/argz_extract.c: New file. * libc/argz/argz_insert.c: New file. * libc/argz/argz_next.c: New file. * libc/argz/argz_replace.c: New file. * libc/argz/argz_stringify.c: New file. * libc/argz/buf_findstr.c: New file. * libc/argz/envz_add.c: New file. * libc/argz/envz_entry.c: New file. * libc/argz/envz_get.c: New file. * libc/argz/envz_merge.c: New file. * libc/argz/envz_remove.c: New file. * libc/argz/envz_strip.c: New file. * libc/include/argz.h: New file. * libc/include/envz.h: New file. * Makefile.am (LIBC_OBJECTLISTS): Add libc/argz/objectlist.awk.in. * libc/Makefile.am (SUBDIRS): Add argz. (SUBLIBS): Add argz/libargz.la. * libc/configure.in (AC_OUTPUT): Add argz/Makefile. * libc/include/errno.h: Add error_t typedef. 2002-06-13 Jeff Johnston * libc/include/stdlib.h: Add _Exit prototype. * libc/stdlib/Makefile.am: Add _Exit.c support. * libc/stdlib/Makefile.in: Ditto. * libc/stdlib/_Exit.c: New file. 2002-06-13 Stephen L. Moshier * libm/math/e_pow.c (__ieee754_pow): Fix case whereby x is close to -1.0 and y is very large to use ax (absolute value) instead of x. * libm/math/ef_pow.c (__ieee754_powf): Ditto. Thu Jun 13 19:23:40 2002 J"orn Rennecke * libc/machine/sh/strcpy.S (strcpy, __SHMEDIA__ code): Fix clobbering bytes before destination if src and dst have same non-zero misalignment. * libc/machine/sh/memset.S (memset, __SHMEDIA__ code): Fixed bug in writing end of set region. 2002-06-10 Christopher Faylor * libc/include/process.h: Remove cygwin-only sexec* declarations. Fix spawnve declaration. 2002-06-06 Thomas Fitzsimmons * libm/common/s_fdim.c: New file. * libm/common/s_fma.c: Likewise. * libm/common/s_fmax.c: Likewise. * libm/common/s_fmin.c: Likewise. * libm/common/s_fpclassify.c: Likewise. * libm/common/s_lrint.c: Likewise. * libm/common/s_lround.c: Likewise. * libm/common/s_nearbyint.c: Likewise. * libm/common/s_remquo.c: Likewise. * libm/common/s_round.c: Likewise. * libm/common/s_scalbln.c: Likewise. * libm/common/s_signbit.c: Likewise. * libm/common/s_trunc.c: Likewise. * libm/common/sf_fdim.c: Likewise. * libm/common/sf_fma.c: Likewise. * libm/common/sf_fmax.c: Likewise. * libm/common/sf_fmin.c: Likewise. * libm/common/sf_lrint.c: Likewise. * libm/common/sf_lround.c: Likewise. * libm/common/sf_nearbyint.c: Likewise. * libm/common/sf_remquo.c: Likewise. * libm/common/sf_round.c: Likewise. * libm/common/sf_scalbln.c: Likewise. * libm/common/sf_trunc.c: Likewise. * libm/math/w_exp2.c: Likewise. * libm/math/w_tgamma.c: Likewise. * libm/math/wf_exp2.c: Likewise. * libm/math/wf_tgamma.c: Likewise. * libm/mathfp/s_exp2.c: Likewise. * libm/mathfp/s_tgamma.c: Likewise. * libm/mathfp/sf_exp2.c: Likewise. * libm/mathfp/sf_tgamma.c: Likewise. * libm/math/er_gamma.c: Fix return value. * libm/math/erf_gamma.c: Likewise. * libm/mathfp/er_gamma.c: Likewise. * libm/mathfp/erf_gamma.c: Likewise. * libc/include/math.h (!__STRICT_ANSI__): Include ISOC99-specific declarations and macros. Regenerated all Makefile.in, aclocal.m4 and configure files to use new libtool macros in top-level libtool.m4 2002-06-05 Jeff Johnston * libc/include/string.h[__linux__]: Add strsignal prototype. * libc/include/sys/lock.h: New file with default locking support. * libc/include/sys/reent.h: Add signal buffer support for strsignal and psignal. * libc/posix/Makefile.am: Add support for readdir_r.c. * libc/posix/Makefile.in: Regenerated. * libc/posix/closedir.c: Add locking support and hash table cleanup. * libc/posix/opendir.c: Add lock support. * libc/posix/readdir.c: Ditto. * libc/posix/rewinddir.c: Ditto. * libc/posix/scandir.c: Ditto. * libc/posix/seekdir.c: Ditto. * libc/posix/telldir.c: Ditto plus add _cleanupdir routine to clean up leftover hash table entries. * libc/posix/readdir_r.c: New file. * libc/sys/linux/Makefile.am: Add psignal.c and strsignal.c support. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/sys/dirent.h: Add dd_lock to DIR structure. * libc/sys/linux/sys/signal.h: Add psignal prototype. * libc/sys/linux/psignal.c: New file. * libc/sys/linux/strsignal.c: Ditto. 2002-06-03 Corinna Vinschen * libc/include/sys/types.h: Don't define dev_t when compiling for Cygwin. 2002-05-31 Jeff Johnston * libc/sys/linux/Makefile.am: Add sig.c and sigaction.c. Also make siglist.inc dependent on sig.c instead of signal.c. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/sig.c: Rename from signal.c and change code to use NSIG instead of _NSIG. * libc/sys/linux/sigaction.c: New file. * libc/sys/linux/signal.c: Changed to be linux signal() function so as to override regular newlib default signal.c. * libc/sys/linux/machine/i386/Makefile.am: Remove sigset.c. * libc/sys/linux/machine/i386/Makefile.in: Regenerated. * libc/sys/linux/machine/i386/sigset.c: Moved to linux main directory. * libc/sys/linux/sigset.c: Moved from machine/i386 directory. * libc/sys/linux/sys/signal.h: Redefine NSIG to _NSIG and override default linux sigset_t typedef by defining it equal to __sigset_t. * libc/unix/sigset.c: Add check so code isn't compiled on systems with a sigset_t that isn't implemented with a single int. 2002-05-30 Jeff Johnston * libc/sys/linux/Makefile.am: Add support for new files. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/ids.c: Add __getuid weak alias for getuid. * libc/sys/linux/signal.c: Change to use real-time syscalls for sigsuspend, sigprocmask, and sigpending. Also remove sigaction as it is in a separate file now. * libc/sys/linux/machine/i386/Makefile.am * libc/sys/linux/machine/i386/Makefile.in * libc/sys/linux/sys/signal.h: Add include of . * libc/sys/linux/sigaction.c: New file. * libc/sys/linux/sigqueue.c: Ditto. * libc/sys/linux/sigwait.c: Ditto. * libc/sys/linux/machine/i386/sigaction.c: Ditto. * libc/sys/linux/kernel_sigaction.h: Ditto. 2002-05-28 Jeff Johnston * libc/sys/linux/Makefile.am: Add support for cfspeed.c and tcsendbrk.c. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/termios.c: Add tcflow(), tcflush(), tcgetpgrp(), and tcsetpgrp() functions. * libc/sys/linux/sys/termios.h: Add include of machine/termios.h to get __MAX_BAUD rate. * libc/sys/linux/machine/i386/include/termios.h: New file. * libc/include/machine/termios.h: Ditto. * libc/sys/linux/cfspeed.c: Ditto. * libc/sys/linux/tcsendbrk.c: Ditto. 2002-05-24 Jeff Johnston * libc/include/string.h: Add strnlen and strerror_r prototypes. * libc/string/Makefile.am: Add strnlen.c and strerror_r.c support. * libc/string/Makefile.in: Regenerated. * libc/string/strerror_r.c: New file. * libc/string/strnlen.c: New file. * libc/sys/linux/Makefile.am: Add rename.c. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/rename.c: New file to override default rename. 2002-05-24 Thomas Fitzsimmons * libc/sys/linux/sys/cdefs.h: Add __weak_reference macros. * libc/sys/linux/sys/time.h: Add conversion macros. * libc/sys/linux/sys/types.h: Add FD_ macros. Include . * libc/sys/linux/ids.c: Add setresuid and syslog syscalls. * libc/sys/linux/gethostname.c: New file. * libc/sys/linux/seteuid.c: New file. * libc/sys/linux/sysctl.c: New file. 2002-05-23 Jeff Johnston * libc/string/Makefile.am: Add support for strsep.c. * libc/string/Makefile.in: Regenerated. * libc/string/strsep.c: New file. * libc/string/strtok.c: Change to call __strtok_r service routine. * libc/string/strtok_r.c: Add __strtok_r routine which takes additional flag parameter regarding whether to skip leading delimeters. Change strtok_r to call __strtok_r. 2002-05-23 Gareth Pearce * libc/stdio/Makefile.am: Modify to add setbuffer.c and setlinebuf.c. * libc/stdio/Makefile.in: Regenerated. * libc/stdio/setbuffer.c: New file. * libc/stdio/setlinebuf.c: New file. 2002-05-23 Jeff Johnston * libc/sys/linux/Makefile.am: Add resource.c. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/resource.c: New file. * libc/sys/linux/time.c: Add settimeofday, getitimer, and setitimer. * libc/sys/linux/machine/i386/Makefile.am: Remove syscalls.c. * libc/sys/linux/machine/i386/Makefile.in: Regenerated. * libc/sys/linux/machine/i386/syscalls.c: Removed as functions are now found in libc/sys/linux/resource.c. 2002-05-23 Jeff Johnston * libc/include/string.h (bcmp, bcopy, bzero): Change prototypes to use void * pointers and comply with Single Unix spec. * libc/string/bcmp.c: Change to use void * instead of char *. * libc/string/bcopy.c: Ditto. * libc/string/bzero.c: Ditto. 2002-05-22 Jeff Johnston * libc/sys/linux/shm_open.c: New file. * libc/sys/linux/shm_unlink.c: Ditto. * libc/sys/linux/Makefile.am: Add support for shm_open.c and shm_unlink.c. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/sys/types.h: Add some additional checks to see if clock_t or time_t is already defined. 2002-05-22 Jeff Johnston * Makefile.am: Don't pass $toollibdir down directly in AM_MAKEFLAGS as it causes all multilibs to use the same toollibdir. Pass it under the name: top_toollibdir. * Makefile.in: Regenerated. 2002-05-22 Corinna Vinschen * libc/include/sys/types.h: Revert previous patch. 2002-05-22 Corinna Vinschen * libc/include/sys/types.h: Include cygwin/types.h always under Cygwin, not only if _POSIX_THREADS is defined. 2002-05-21 Dhananjay Deshpande * configure.host: Specify sys_dir=h8300hms for h8300-*-coff* target. 2002-05-17 Jeff Johnston * Makefile.am: Copy and install headers from sys/machine/include directory. Also pass $toollibdir to lower-level directories. * Makefile.in: Regenerated. * libc/include/stdio.h[!_REENT_ONLY]: Change stdin, stdout, and stderr to use _REENT macro instead of _impure_ptr directly. * libc/include/sys/config.h[__i386__][__linux__]: Define __DYNAMIC_REENT__. * libc/include/sys/reent.h[!_REENT_ONLY]: Change _REENT macro to be call to __getreent() function if !__SINGLE_THREAD__ and __DYNAMIC_REENT__ is set. * libc/reent/Makefile.am: Add support for getreent.c. * libc/reent/Makefile.in: Regenerated. * libc/string/strerror.c: Add check if EOPNOTSUPP and ENOTSUP are same. * libc/sys/linux/Makefile.am: Add support for new files. * libc/sys/linux/configure.in: Add $EXTRA_DIRS variable. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/configure: Ditto. * libc/sys/linux/io.c: Add poll syscall. Also weak-alias __close, __read, __write, __poll, __open, __lseek, __fcntl from their __libc_ counterparts. * libc/sys/linux/io64.c: Add __libc_ prefix to lseek64 and open64 and weak-alias to regular names. * libc/sys/linux/pread64.c: Rename to __libc_pread64 and weak-alias to pread64 and __pread64. * libc/sys/linux/process.c: Weak_alias __libc_getpid to __getpid. * libc/sys/linux/pwrite64.c: Rename to __libc_pwrite64 and weak-alias to pwrite64. * libc/sys/linux/sched.c: Weak-alias __libc_sched_getparam, __libc_sched_getscheduler, __libc_sched_get_priority_max, __libc_sched_get_priority_min, and __libc_sched_setschedule to name with __ instead of __libc_. * libc/sys/linux/siglongjmp.c: Include . Rename siglongjmp to __libc_siglongjmp and weak-alias to siglongjmp. Call __libc_longjmp instead of longjmp, from __libc_siglongjmp. * libc/sys/linux/signal.c: Rename raise to __libc_raise and weak-alias to raise. * libc/sys/linux/socket.c: Weak-alias __libc_connect to __connect and __libc_send to __send. * libc/sys/linux/time.c: Weak-alias __libc_gettimeofday to __gettimeofday. * libc/sys/linux/wait.c: Rename wait to __libc_wait and weak-alias it to wait. Rename wait3 to __libc_wait3 and weak-alias it to wait3. * libc/sys/linux/include/setjmp.h: Use __jmp_buf in sigjmp_buf type and typedef __jmp_buf to jmp_buf. * libc/sys/linux/machine/i386/Makefile.am: Add syscalls.c and setjmp.S. * libc/sys/linux/machine/i386/Makefile.in: Regenerated. * libc/sys/linux/machine/i386/crt0.c: Add support to clear .bss section. * libc/sys/linux/machine/i386/socketcall.h: Change to use __libc_ prefix for function macros and then use weak_alias() to regular names. * libc/sys/linux/machine/i386/syscall.h: Ditto. * libc/sys/linux/sys/errno.h: Define EOPNOTSUP to be ENOTSUP. * libc/sys/linux/sys/stdio.h: Define _flockfile and _funlockfile to be flockfile() and funlockfile() respectively. * libc/sys/linux/sys/types.h * libc/reent/getreent.c: New file. * libc/sys/linux/flockfile.c: Ditto. * libc/sys/linux/funlockfile.c: Ditto. * libc/sys/linux/getreent.c: Ditto. * libc/sys/linux/pread.c: Ditto. * libc/sys/linux/pwrite.c: Ditto. * libc/sys/linux/raise.c: Ditto. * libc/sys/linux/system.c: Ditto. * libc/sys/linux/tcdrain.c: Ditto. * libc/sys/linux/machine/i386/i386mach.h: Ditto. * libc/sys/linux/machine/i386/setjmp.S: Ditto. * libc/sys/linux/machine/i386/syscalls.c: Ditto. * libc/sys/linux/machine/i386/weakalias.h: Ditto. * libc/sys/linux/machine/i386/include/setjmp.h: Ditto. 2002-05-14 Dhananjay Deshpande * newlib/libc/sys/h8300hms/Makeile.am (lib_a_SOURCES): Add read.c. * newlib/libc/sys/h8300hms/read.c: New file. Magic trap 0xC8 for sim. * newlib/libc/sys/h8300hms/syscalls.c: Move _read() to read.c. * newlib/libs/sys/h8300hms/sys/syscall.h: New file. Thu May 16 17:24:57 2002 J"orn Rennecke * libc/machine/sh/strcpy.S (strcpy): Replace LITTLE_ENDIAN with __LITTLE_ENDIAN__. make sure r0 has right value at first loop exit point. 2002-05-15 Thomas Fitzsimmons * testsuite/lib/newlib.exp: Add newlib_include_flags to compile options when testing natively on i[3456]86-*-linux. * testsuite/lib/checkoutput.exp (newlib_check_output): Output only one pass or fail per test file. Trim \r's from output values received from test programs. Remove support for named tests. * testsuite/newlib.locale/UTF-8.exp: Update to support new newlib_check_output behaviour. * testsuite/newlib.locale/UTF-8.c: Likewise. 2002-05-15 Jeff Johnston * libc/include/stdlib.h: Add on_exit prototype. * libc/include/sys/reent.h (struct _atexit): Add argument array and bits to track type of exit routine to support both on_exit and atexit. (_REENT_INIT_PTR): Add missing fields that won't be zeroed out by default and change the setting of the atexit structure. (_REENT_INIT)[!_REENT_SMALL]: Remove extraneous end brace. * libc/stdlib/on_exit.c: New file. * libc/stdlib/Makefile.am: Add support for on_exit. * libc/stdlib/Makefile.in: Regenerated. * libc/stdlib/atexit.c: Change to initialize types field. * libc/stdlib/exit.c: Change to look at types field for each exit routine and either call an atexit-style or an on_exit-style routine accordingly. 2002-05-13 Jeff Johnston * libc/machine/powerpc/vfprintf.c(__VFPRINTF_R)[__ALTIVEC__]: Don't allow v specifier with n or L specifiers. For vector c format, move tmp declaration to the top. 2002-05-13 Jeff Johnston * libc/machine/powerpc/vfprintf.c(__VFPRINTF_R)[__ALTIVEC__]: Restore the original format specifier when looping for vectors to compensate for any changes made in vector %g format processing. Also add syntax checking for various invalid scenarios involving vector format extensions. * libc/machine/powerpc/vfscanf.c(__VFSCANF_R)[__ALTIVEC__]: Fix return code setting for vector formats. Also treat vector separator mismatch as a match error instead of an input error. Perform some syntax checking for vector formats. 2002-05-10 Mark Bradshaw * libc/include/string.h (!__STRICT_ANSI__): Add strlcat and strlcpy. * libc/string/Makefile.am: Add strlcat.c and strlcpy.c. * libc/string/strlcat.c: New file. * libc/string/strlcpy.c: New file. 2002-05-10 Jeff Johnston * libc/string/strchr.c: Fix comment typo. 2002-05-08 Thomas Fitzsimmons * acinclude.m4: Add support for --enable-newlib-multithread. * configure.host (newlib_cflags): Add -D__SINGLE_THREAD__ if --enable-newlib-multithread=no. * libc/stdio/getc_u.c: New file. * libc/stdio/getchar_u.c: New file. * libc/stdio/putc_u.c: New file. * libc/stdio/putchar_u.c: New file. * libc/include/stdio.h: Add declarations for getc_unlocked, getchar_unlocked, putc_unlocked and putchar_unlocked. * libc/stdio/Makefile.am (LIB_SOURCES): Add new files. (CHEWOUT_FILES): Add new files' .def's. * libc/stdio/putchar.c (_putchar_r): Replace __sputc with putc. Wed May 8 17:47:35 2002 J"orn Rennecke * libc/machine/sh/memset.S (memset, __SHMEDIA__ code): Also handle as single quad word when destination ends at last byte of first quad word. Fix byte selection in single quad code. 2002-05-07 Thomas Fitzsimmons * libc/include/sys/stdio.h: New file. * libc/sys/linux/sys/stdio.h: New file. * libc/include/stdio.h: Add declarations for flockfile, ftrylockfile, and funlockfile. Include . * libc/stdio/clearerr.c: Add file locking. * libc/stdio/fclose.c: Likewise. * libc/stdio/feof.c: Likewise. * libc/stdio/ferror.c: Likewise. * libc/stdio/fflush.c: Likewise. * libc/stdio/fgetc.c: Likewise. * libc/stdio/fgetpos.c: Likewise. * libc/stdio/fgets.c: Likewise. * libc/stdio/fileno.c: Likewise. * libc/stdio/fputc.c: Likewise. * libc/stdio/fputs.c: Likewise. * libc/stdio/fread.c: Likewise. * libc/stdio/freopen.c: Likewise. * libc/stdio/fseek.c: Likewise. * libc/stdio/ftell.c: Likewise. * libc/stdio/fwrite.c: Likewise. * libc/stdio/getc.c: Likewise. * libc/stdio/putc.c: Likewise. * libc/stdio/setvbuf.c: Likewise. * libc/stdio/ungetc.c: Likewise. * libc/stdio/vfprintf.c: Likewise. 2002-05-06 Jeff Johnston * libc/machine/powerpc/vfprintf.c[__ALTIVEC__]: Add vector support for 'p' format. Fix code to print bytes for vector integer formats that do not specify 'h' or 'l'. * libc/machine/powerpc/vfscanf.c[__ALTIVEC__]: Add vector support for 'p' specifier. Fix code to scan 16 bytes for vector integer formats that do not specify 'h' or 'l'. * libc/include/stdlib.h (a64l, l64a, _l64a_r): Added prototypes. 2002-05-06 Nick Clifton * libc/sys/arm/syscalls.c (_rename): Add parameter names. (_sbrk): Add cast of return value. 2002-05-06 Jeff Johnston * libc/include/sys/reent.h (_l64a_buf): New reentrant area. (_REENT_L64A_BUF): New macro for accessing area. * libc/stdlib/Makefile.am: Add a64l.c and l64a.c. * libc/stdlib/Makefile.in: Regenerated. * libc/stdlib/a64l.c: New file. * libc/stdlib/l64a.c: New file. 2002-05-06 Jeff Johnston * libc/unix/pread.c: Fix typo for _pread_r. * libc/unix/pwrite.c: Fix type for _pwrite_r. * libc/sys/linux/pread64.c: Fix typo for read syscall. * libc/sys/linux/pwrite64.c: Fix typo for write syscall. 2002-05-03 Christopher Faylor * libc/include/sys/unistd.h: Define getdomainname under cygwin. 2002-05-03 Thomas Fitzsimmons * configure.in (CC_FOR_NEWLIB): Change -isystem's to -I's. 2002-05-01 Christopher Faylor * utmp.h: Define more UNIX constants. 2002-05-01 Thomas Fitzsimmons * Makefile.am: Add support for checking multilibs. * libc/Makefile.am (SUBLIBS): Add LIBC_EXTRA_LIB. (SUBDEFS): Add LIBC_EXTRA_DEF. * libc/configure.in (LIBC_EXTRA_LIB): New variable. (LIBC_EXTRA_DEF): Likewise. (extra_dir): Likewise. * libc/machine/xscale/machine: New directory. * libc/machine/xscale/machine/profile.h: New file. * Makefile.am (site.exp): Remove newlib_cflags. Add multibuildtop. * testsuite/newlib.locale/UTF-8.c: Change fprintf's to printf's. * testsuite/lib/flags.exp: New file. * testsuite/lib/newlib.exp: Load flags.exp. (newlib_target_compile): Remove libgloss directory references. (newlib_init): Remove newlib_cflags references. 2002-04-30 Thomas Fitzsimmons * testsuite/lib/newlib.exp (newlib_target_compile): Change method of finding libgloss_target_dir. * Makefile.am (site.exp): Change host_alias, host_triplet, target_alias, target_triplet to refer to gcc's host and target variables (newlib's build and host variables). * testsuite/lib/newlib.exp (newlib_init): Change build references to host references, host references to target references to reflect Makefile.am changes. (newlib_target_compile): Likewise. (newlib_finish): Likewise. 2002-04-29 Jeff Johnston * libc/sys/linux/io64.c (fstat64, lstat64): New syscalls added. 2002-04-29 Jonathan Larmour * libc/sys/arm/syscalls.c (_rename): New function. Just a stub. (_system): New function. Ditto. * libc/stdlib/system.c (_system_r): Call _system if HAVE_SYSTEM. * configure.host: define HAVE_SYSTEM and HAVE_RENAME for xscale targets. 2002-04-29 Jeff Johnston * libc/include/sys/unistd.h (pread, pwrite): Added prototypes. * libc/unix/Makefile.am: Add pread.c and pwrite.c. * libc/sys/linux/Makefile.am: Add pread64.c and pwrite64.c. * libc/sys/linux/Makefile.in: Regenerated. * libc/unix/Makefile.in: Ditto. * libc/sys/linux/pread64.c: New file. * libc/sys/linux/pwrite64.c: Ditto. * libc/unix/pread.c: Ditto. * libc/unix/pwrite.c: Ditto. 2002-04-26 Jeff Johnston * libc/sys/linux/Makefile.am: Add io64.c. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/io.c(mkfifo, fsync, fdatasync): Added syscalls. * libc/sys/linux/signal.c (sigwaitinfo, sigtimedwait): Ditto. * libc/sys/linux/io64.c: New file. 2002-04-26 Jeff Johnston * configure.in (CC_FOR_NEWLIB): New variable that bases on $(CC) and adds targ-include and libc/include as -isystem directives if they are not already part of $(CC). * Makefile.am (AM_MAKEFLAGS): Change setting of CC to equal $(CC_FOR_NEWLIB). * configure: Regenerated. * Makefile.in: Ditto. 2002-04-25 Jeff Johnston * libc/sys/linux/Makefile.am: Add support for sched.c. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/sched.c: New file. * libc/sys/linux/sys/types.h: Add struct timespec. 2002-04-25 Thomas Fitzsimmons * configure.in (CC_FOR_BUILD): Set to gcc whether cross-compiling or not. (CC): Add -isystem's for targ-include and libc/include when they do not already appear in CC. 2002-04-24 Thomas Fitzsimmons * Makefile.am (check-DEJAGNU): New target. (site.exp): Likewise. * acinclude.m4 (NEWLIB_CONFIGURE): Replace AC_CANONICAL_HOST with AC_CANONICAL_SYSTEM. Remove AC_CANONICAL_BUILD. * libc/locale/locale.c (_setlocale_r): Add UTF-8 support. * libc/stdlib/mbtowc_r.c (_mbtowc_r): Likewise. * libc/stdlib/wctomb_r.c (_wctomb_r): Likewise. * testsuite: New directory. * testsuite/config: Likewise. * testsuite/lib: Likewise. * testsuite/newlib.locale: Likewise. * testsuite/newlib.string: Likewise. * testsuite/config/default.exp: New file. * testsuite/lib/checkoutput.exp: New file. * testsuite/lib/newlib.exp: New file. * testsuite/lib/passfail.exp: New file. * testsuite/newlib.locale/UTF-8.c: New file. * testsuite/newlib.locale/UTF-8.exp: New file. * testsuite/newlib.locale/locale.exp: New file. * testsuite/newlib.string/string.exp: New file. * testsuite/newlib.string/tstring.c: New file. 2002-04-23 Jeff Johnston * libc/include/machine/types.h (__pid_t, __off_t, __loff_t): Added. * libc/sys/linux/Makefile.am: Add support for mmap.c. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/mmap.c: New file. * libc/sys/linux/machine/i386/syscall.h: Add _syscall6 macro. * libc/sys/linux/sys/types.h (pid_t, off_t, loff_t): Added. 2002-04-22 Thomas Fitzsimmons * acinclude.m4 (newlib_cflags): Remove include directories that are already specified in the top-level configure.in's FLAGS_FOR_TARGET. 2002-04-19 Bill Siegmund * libc/machine/xscale/memchr.c: Don't use multi-line strings. * libc/machine/xscale/memcmp.c: Ditto. * libc/machine/xscale/memcpy.c: Ditto. * libc/machine/xscale/memmove.c: Ditto. * libc/machine/xscale/memset.c: Ditto. * libc/machine/xscale/strchr.c: Ditto. * libc/machine/xscale/strcmp.c: Ditto. * libc/machine/xscale/strcpy.c: Ditto. * libc/machine/xscale/strlen.c: Ditto. 2002-04-19 Alexandre Oliva * libc/include/sys/config.h: Remove include of . (__INT_MAX__, __LONG_MAX__): Define like GCC's limits.h would define INT_MAX and LONG_MAX. Use them in tests. 2002-04-19 Jeff Johnston * configure.host: Add support for powerpc-eabialtivec*. * libc/include/malloc.h: Add include of . * libc/include/stdlib.h: Add include of . * libc/include/machine/malloc.h: New file. * libc/include/machine/stdlib.h: Ditto. * libc/include/machine/setjmp.h: Add support for powerpc altivec. * libc/machine/powerpc/Makefile.am: Add conditional objects and sources based on configuration. * libc/machine/powerpc/Makefile.in: Regenerated. * libc/machine/powerpc/configure: Ditto. * libc/machine/powerpc/configure.in: Add check for powerpc-eabialtivec* in which case add in additional source files. * libc/machine/powerpc/setjmp.S: Add altivec support. * libc/machine/powerpc/vec_calloc.c: New file. * libc/machine/powerpc/vec_free.c: Ditto. * libc/machine/powerpc/vec_malloc.c: Ditto. * libc/machine/powerpc/vec_mallocr.c: Ditto. * libc/machine/powerpc/vec_realloc.c: Ditto. * libc/machine/powerpc/machine/malloc.h: Ditto. * libc/machine/powerpc/machine/stdlib.h: Ditto. * libc/machine/powerpc/vfprintf.c: New file that is vfprintf.c with added altivec format specifiers. * libc/machine/powerpc/vfscanf.c: New file that is vfscanf.c with added altivec format specifiers. 2002-04-19 Joel Sherrill * libs/sys/rtems/crt0.c: Satisfy gcc's references to libc functions while autoconf is trying to link main(){}. 2002-04-17 Jeff Johnston * libc/sys/linux/signal.c: Remove include of . * libc/sys/linux/sys/signal.h: Add include of . 2002-04-17 Jeff Johnston * libc/time/time.tex: Add tzset info. 2002-04-17 Jeff Johnston * libc/include/time.h (tzset, _tzset_r): Added prototypes. (strptime): Moved prototype to be within !__STRICT_ANSI__. (_tzname, _daylight, _timezone): No long __CYGWIN__ only. (tzname): Defined for all platforms. (daylight, timezone): Defined only for CYGWIN. * libc/sys/linux/machine/i386/crt0.c: Add call to tzset() after environment set up. * libc/stdlib/setenv_r.c (_setenv_r): Call tzset() if the TZ environment variable is set. * libc/time/Makefile.am: Add support for tzset.c, tzlock.c, and tzset_r.c. * libc/time/Makefile.in: Regenerated. * libc/time/gmtime.c (gmtime): Changed to call gmtime_r. * libc/time/gmtime_r.c (gmtime_r): Changed to call _mktm_r. * libc/time/lcltime_r.c (lcltime_r): Ditto. * libc/time/local.h: New local header file. * libc/time/mktime.c (mktime): Add timezone support. * libc/time/mktm_r.c: New file which is the common engine for gmtime_r and lcltime_r. This code has timezone support. * libc/time/strftime.c (strftime): Add %Z timezone support. * libc/time/tzlock.c: New file containing timezone lock stubs. * libc/time/tzset.c: New file containing tzset() routine. * libc/time/tzset_r.c: New file containing _tzset_r and internal routine for calculating timezone changes for specified year. 2002-04-17 Thomas Fitzsimmons * configure.in (CRT0_DIR): Set to libc/. (CRT1_DIR): Set to ${crt1_dir}/ if crt1_dir is non-empty. * Makefile.am: Change all occurrences of $(CRT0_DIR)/$(CRT0) to $(CRT0_DIR)$(CRT0) to prevent make warnings. Likewise for $(CRT1_DIR)/$(CRT1). * libc/machine/xstormy16/Makefile.in: Regenerated. * libc/machine/xstormy16/aclocal.m4: Regenerated. * libc/machine/xstormy16/configure: Regenerated. 2002-04-13 Alexandre Oliva * libc/stdlib/mallocr.c (malloc_extend_top): If correction sbrk fails, don't bail out, and try to correct next time. * libc/include/sys/config.h: Include limits.h. 2002-04-12 Eric Norum * libc/sys/rtems/crt0.c (rtems_gxx_mutex_init): Dummy routine to allow autoconf to determine that building executables for rtems works. (rtems_gxx_mutex_lock, rtems_gxx_mutex_unlock): Ditto. (rtems_gxx_mutex_once): Ditto. 2002-04-09 Tom Rix * libc/include/sys/reent.h (_REENT_INIT_PTR): Fix typo. 2002-04-09 Mark Bradshaw * libc/include/time.h: Fix strptime declaration. * libc/time/Makefile.am: Add strptime.c. * libc/time/Makefile.in: Regenerated. * libc/time/strptime.c: New file. 2002-04-08 Jeff Johnston * libc/sys/linux/include/setjmp.h: Add sigjmp_buf type, siglongjmp prototype, and sigsetjmp macro definition. * libc/sys/linux/siglongjmp.c: New file. * libc/sys/linux/Makefile.am: Add support for siglongjmp. * libc/sys/linux/Makefile.in: Regenerated. 2002-04-04 Jeff Johnston * Makefile.am: Add support for installing crt1.o if one exists. * configure.host: Specify crt1.o for linux. * configure.in: Expose CRT1 and CRT1_DIR for Makefile.am to use. * Makefile.in: Regenerated. * configure: Ditto. * libc/include/sys/unistd.h (_SC_STREAM_MAX, _SC_PRIORITY_SCHEDULING): Added for non-Cygwin, non-RTEMS configurations. * libc/sys/linux/Makefile.am: Add support for crt1 and sysconf. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/crt1.c: New empty file to override one defaulted by gcc. This fixes problem with reconfiguring linux newlib build. * libc/sys/linux/sysconf.c: New file. 2002-04-03 Jeff Johnston * configure.host: Add support for machine subdirectory of sys subdirectory. * configure.in: Add check for sys machine subdirectory. * Makefile.am: Ditto. * configure: Regenerated. * Makefile.in: Ditto. * libc/sys/linux/crt0.c: Moved to machine/i386 directory. * libc/sys/linux/sys/syscall.h: Ditto. * libc/sys/linux/sleep.c: New file. * libc/sys/linux/socket.c: Ditto. * libc/sys/linux/sockops.h: Ditto. * libc/sys/linux/stack.c: Ditto. * libc/sys/linux/usleep.c: Ditto. * libc/sys/linux/machine/Makefile.am: Ditto. * libc/sys/linux/machine/Makefile.in: Ditto. * libc/sys/linux/machine/aclocal.m4: Ditto. * libc/sys/linux/machine/configure: Ditto. * libc/sys/linux/machine/configure.in: Ditto. * libc/sys/linux/machine/i386/Makefile.am: Ditto. * libc/sys/linux/machine/i386/Makefile.in: Ditto. * libc/sys/linux/machine/i386/aclocal.m4: Ditto. * libc/sys/linux/machine/i386/configure: Ditto. * libc/sys/linux/machine/i386/configure.in: Ditto. * libc/sys/linux/machine/i386/crt0.c: Ditto. * libc/sys/linux/machine/i386/sigset.c: Ditto. * libc/sys/linux/machine/i386/sigstack.h: Ditto. * libc/sys/linux/machine/i386/socketcall.h: Ditto. * libc/sys/linux/machine/i386/syscall.h: Ditto. * libc/sys/linux/sys/select.h: Ditto. * libc/sys/linux/configure.in: Add support for machine directory. * libc/sys/linux/Makefile.am: Ditto plus add new files above. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/configure: Ditto. * libc/sys/linux/brk.c: Use machine/syscall.h instead of sys/syscall.h. * libc/sys/linux/inode.c: Ditto. * libc/sys/linux/linux.c: Ditto. * libc/sys/linux/process.c: Ditto. * libc/sys/linux/systat.c: Ditto. * libc/sys/linux/time.c: Ditto. * libc/sys/linux/wait.c: Ditto. * libc/sys/linux/ids.c: Change header plus add setfsgid/setfsuid. * libc/sys/linux/io.c: Change header plus add readv/writev. * libc/sys/linux/signal.c: Change header plus change sigsuspend to use __sigsuspend syscall. * libc/sys/linux/select.c: Change header plus change select to use _newselect syscall. * libc/sys/linux/sys/cdefs.h: Add a number of standard definitions used by glibc header files. * libc/sys/linux/sys/types.h: Add __socklen_t and __useconds_t types. 2002-04-01 Jeff Johnston * libc/include/sys/reent.h (_REENT_INIT_PTR): New macro for initializing a struct _reent that has been dynamically allocated. (_REENT_CHECK_MISC): New macro that checks _misc struct for _REENT_SMALL and does nothing otherwise. (_REENT_STRTOK_LAST): New macro for reentrant strtok. (_REENT_MBLEN_STATE): New macro for reentrant mblen. (_REENT_MBTOWC_STATE): New macro for reentrant mbtowc. (_REENT_WCTOMB_STATE): New macro for reentrant wctomb. [_REENT_SMALL](struct _misc_reent): New structure containing miscellaneous reentrant areas needed by newlib. [_REENT_SMALL](struct _reent): Add _misc pointer. [_REENT_SMALL](_REENT_INIT_MISC): New macro. * libc/string/strtok (strtok): Change to use _REENT_CHECK_MISC and _REENT_STRTOK_LAST macros. * libc/stdlib/mblen (mblen): Change to use _REENT_CHECK_MISC and _REENT_MBLEN_STATE macros. * libc/stdlib/mbtowc (mbtowc): Change to use _REENT_CHECK_MISC and _REENT_MBTOWC_STATE macros. * libc/stdlib/wctomb (wctomb): Change to use _REENT_CHECK_MISC and _REENT_WCTOMB_STATE macros. 2002-04-01 Till Straumann * libc/stdlib/getenv_r.c (_findenv_r): Add missing ENV_UNLOCK. Wed Mar 27 07:34:44 2002 Jason Tishler * libc/include/sys/features.h (_POSIX_SEMAPHORES): New Cygwin define. Tue Mar 26 17:17:10 2002 J"orn Rennecke * libc/machine/sh/memcpy.S (Large): Fix alignment rounding. Store high part of leading bytes too. 2002-03-22 Richard Sandiford * libm/math/ef_hypot.c: Increase scale factor to 68. 2002-03-13 Alexandre Oliva * libc/machine/mips/strlen.c (strlen) [__mips16]: Fix off-by-two error. 2002-03-12 Jeff Johnston * libc/sys/go32/access.c: Change license to relaxed license used in identical file throughout newlib/libgloss. 2002-03-12 Richard Earnshaw * libc/sys/arm/access.c: New file. * libc/sys/arm/Makefile.am (lib_a_SOURCES): Add access.c. * libc/sys/arm/Makefile.in: Regenerate. * libc/sys/arm/syscalls.c (_stat): New function. 2002-03-11 Michael Meissner * libc/machine/mips/Makefile.am (lib_a_SOURCES): Add Mips specific variants strlen.c, strcmp.c, strncpy.c, memset.c and memcpy.c. * libc/machine/mips/Makefile.in: Regenerate. * libc/machine/mips/memcpy.c: New file, optimized for MIPS. * libc/machine/mips/memset.c: Dito. * libc/machine/mips/strcmp.c: Dito. * libc/machine/mips/strlen.c: Dito. * libc/machine/mips/strncmp.c: Dito. 2002-03-06 Jeff Johnston * libc/machine/i386/Makefile.am: Add $(oext) for setjmp object so it works for shared library or statici library. 2002-04-17 Jeff Johnston * libc/include/time.h (tzset, _tzset_r): Added prototypes. (strptime): Moved prototype to be within !__STRICT_ANSI__. (_tzname, _daylight, _timezone): No long __CYGWIN__ only. (tzname): Defined for all platforms. (daylight, timezone): Defined only for CYGWIN. * libc/sys/linux/machine/i386/crt0.c: Add call to tzset() after environment set up. * libc/stdlib/setenv_r.c (_setenv_r): Call tzset() if the TZ environment variable is set. * libc/time/Makefile.am: Add support for tzset.c, tzlock.c, and tzset_r.c. * libc/time/Makefile.in: Regenerated. * libc/time/gmtime.c (gmtime): Changed to call gmtime_r. * libc/time/gmtime_r.c (gmtime_r): Changed to call _mktm_r. * libc/time/lcltime_r.c (lcltime_r): Ditto. * libc/time/local.h: New local header file. * libc/time/mktime.c (mktime): Add timezone support. * libc/time/mktm_r.c: New file which is the common engine for gmtime_r and lcltime_r. This code has timezone support. * libc/time/strftime.c (strftime): Add %Z timezone support. * libc/time/tzlock.c: New file containing timezone lock stubs. * libc/time/tzset.c: New file containing tzset() routine. * libc/time/tzset_r.c: New file containing _tzset_r and internal routine for calculating timezone changes for specified year. 2002-04-17 Thomas Fitzsimmons * configure.in (CRT0_DIR): Set to libc/. (CRT1_DIR): Set to ${crt1_dir}/ if crt1_dir is non-empty. * Makefile.am: Change all occurrences of $(CRT0_DIR)/$(CRT0) to $(CRT0_DIR)$(CRT0) to prevent make warnings. Likewise for $(CRT1_DIR)/$(CRT1). * libc/machine/xstormy16/Makefile.in: Regenerated. * libc/machine/xstormy16/aclocal.m4: Regenerated. * libc/machine/xstormy16/configure: Regenerated. 2002-04-13 Alexandre Oliva * libc/stdlib/mallocr.c (malloc_extend_top): If correction sbrk fails, don't bail out, and try to correct next time. * libc/include/sys/config.h: Include limits.h. 2002-04-12 Eric Norum * libc/sys/rtems/crt0.c (rtems_gxx_mutex_init): Dummy routine to allow autoconf to determine that building executables for rtems works. (rtems_gxx_mutex_lock, rtems_gxx_mutex_unlock): Ditto. (rtems_gxx_mutex_once): Ditto. 2002-04-09 Tom Rix * libc/include/sys/reent.h (_REENT_INIT_PTR): Fix typo. 2002-04-09 Mark Bradshaw * libc/include/time.h: Fix strptime declaration. * libc/time/Makefile.am: Add strptime.c. * libc/time/Makefile.in: Regenerated. * libc/time/strptime.c: New file. 2002-04-08 Jeff Johnston * libc/sys/linux/include/setjmp.h: Add sigjmp_buf type, siglongjmp prototype, and sigsetjmp macro definition. * libc/sys/linux/siglongjmp.c: New file. * libc/sys/linux/Makefile.am: Add support for siglongjmp. * libc/sys/linux/Makefile.in: Regenerated. 2002-04-04 Jeff Johnston * Makefile.am: Add support for installing crt1.o if one exists. * configure.host: Specify crt1.o for linux. * configure.in: Expose CRT1 and CRT1_DIR for Makefile.am to use. * Makefile.in: Regenerated. * configure: Ditto. * libc/include/sys/unistd.h (_SC_STREAM_MAX, _SC_PRIORITY_SCHEDULING): Added for non-Cygwin, non-RTEMS configurations. * libc/sys/linux/Makefile.am: Add support for crt1 and sysconf. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/crt1.c: New empty file to override one defaulted by gcc. This fixes problem with reconfiguring linux newlib build. * libc/sys/linux/sysconf.c: New file. 2002-04-03 Jeff Johnston * configure.host: Add support for machine subdirectory of sys subdirectory. * configure.in: Add check for sys machine subdirectory. * Makefile.am: Ditto. * configure: Regenerated. * Makefile.in: Ditto. * libc/sys/linux/crt0.c: Moved to machine/i386 directory. * libc/sys/linux/sys/syscall.h: Ditto. * libc/sys/linux/sleep.c: New file. * libc/sys/linux/socket.c: Ditto. * libc/sys/linux/sockops.h: Ditto. * libc/sys/linux/stack.c: Ditto. * libc/sys/linux/usleep.c: Ditto. * libc/sys/linux/machine/Makefile.am: Ditto. * libc/sys/linux/machine/Makefile.in: Ditto. * libc/sys/linux/machine/aclocal.m4: Ditto. * libc/sys/linux/machine/configure: Ditto. * libc/sys/linux/machine/configure.in: Ditto. * libc/sys/linux/machine/i386/Makefile.am: Ditto. * libc/sys/linux/machine/i386/Makefile.in: Ditto. * libc/sys/linux/machine/i386/aclocal.m4: Ditto. * libc/sys/linux/machine/i386/configure: Ditto. * libc/sys/linux/machine/i386/configure.in: Ditto. * libc/sys/linux/machine/i386/crt0.c: Ditto. * libc/sys/linux/machine/i386/sigset.c: Ditto. * libc/sys/linux/machine/i386/sigstack.h: Ditto. * libc/sys/linux/machine/i386/socketcall.h: Ditto. * libc/sys/linux/machine/i386/syscall.h: Ditto. * libc/sys/linux/sys/select.h: Ditto. * libc/sys/linux/configure.in: Add support for machine directory. * libc/sys/linux/Makefile.am: Ditto plus add new files above. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/configure: Ditto. * libc/sys/linux/brk.c: Use machine/syscall.h instead of sys/syscall.h. * libc/sys/linux/inode.c: Ditto. * libc/sys/linux/linux.c: Ditto. * libc/sys/linux/process.c: Ditto. * libc/sys/linux/systat.c: Ditto. * libc/sys/linux/time.c: Ditto. * libc/sys/linux/wait.c: Ditto. * libc/sys/linux/ids.c: Change header plus add setfsgid/setfsuid. * libc/sys/linux/io.c: Change header plus add readv/writev. * libc/sys/linux/signal.c: Change header plus change sigsuspend to use __sigsuspend syscall. * libc/sys/linux/select.c: Change header plus change select to use _newselect syscall. * libc/sys/linux/sys/cdefs.h: Add a number of standard definitions used by glibc header files. * libc/sys/linux/sys/types.h: Add __socklen_t and __useconds_t types. 2002-04-01 Jeff Johnston * libc/include/sys/reent.h (_REENT_INIT_PTR): New macro for initializing a struct _reent that has been dynamically allocated. (_REENT_CHECK_MISC): New macro that checks _misc struct for _REENT_SMALL and does nothing otherwise. (_REENT_STRTOK_LAST): New macro for reentrant strtok. (_REENT_MBLEN_STATE): New macro for reentrant mblen. (_REENT_MBTOWC_STATE): New macro for reentrant mbtowc. (_REENT_WCTOMB_STATE): New macro for reentrant wctomb. [_REENT_SMALL](struct _misc_reent): New structure containing miscellaneous reentrant areas needed by newlib. [_REENT_SMALL](struct _reent): Add _misc pointer. [_REENT_SMALL](_REENT_INIT_MISC): New macro. * libc/string/strtok (strtok): Change to use _REENT_CHECK_MISC and _REENT_STRTOK_LAST macros. * libc/stdlib/mblen (mblen): Change to use _REENT_CHECK_MISC and _REENT_MBLEN_STATE macros. * libc/stdlib/mbtowc (mbtowc): Change to use _REENT_CHECK_MISC and _REENT_MBTOWC_STATE macros. * libc/stdlib/wctomb (wctomb): Change to use _REENT_CHECK_MISC and _REENT_WCTOMB_STATE macros. 2002-04-01 Till Straumann * libc/stdlib/getenv_r.c (_findenv_r): Add missing ENV_UNLOCK. Wed Mar 27 07:34:44 2002 Jason Tishler * libc/include/sys/features.h (_POSIX_SEMAPHORES): New Cygwin define. Tue Mar 26 17:17:10 2002 J"orn Rennecke * libc/machine/sh/memcpy.S (Large): Fix alignment rounding. Store high part of leading bytes too. 2002-03-22 Richard Sandiford * libm/math/ef_hypot.c: Increase scale factor to 68. 2002-03-13 Alexandre Oliva * libc/machine/mips/strlen.c (strlen) [__mips16]: Fix off-by-two error. 2002-03-12 Jeff Johnston * libc/sys/go32/access.c: Change license to relaxed license used in identical file throughout newlib/libgloss. 2002-03-12 Richard Earnshaw * libc/sys/arm/access.c: New file. * libc/sys/arm/Makefile.am (lib_a_SOURCES): Add access.c. * libc/sys/arm/Makefile.in: Regenerate. * libc/sys/arm/syscalls.c (_stat): New function. 2002-03-11 Michael Meissner * libc/machine/mips/Makefile.am (lib_a_SOURCES): Add Mips specific variants strlen.c, strcmp.c, strncpy.c, memset.c and memcpy.c. * libc/machine/mips/Makefile.in: Regenerate. * libc/machine/mips/memcpy.c: New file, optimized for MIPS. * libc/machine/mips/memset.c: Dito. * libc/machine/mips/strcmp.c: Dito. * libc/machine/mips/strlen.c: Dito. * libc/machine/mips/strncmp.c: Dito. 2002-03-06 Jeff Johnston * libc/machine/i386/Makefile.am: Add $(oext) for setjmp object so it works for shared library or statici library. * libc/machine/i386/Makefile.in: Regenerated. Wed Mar 6 10:24:26 2002 J"orn Rennecke * libc/machine/sh/Makefile.am (lib_a_SOURCES, SH64 case): Add memcpy.S, memset.S and strcpy.S. * libc/machine/sh/Makefile.in: Regenerate. * libc/machine/sh/asm.h (_ENTRY): Set SH5 alignment to 8 bytes. (SHHI, SHLO): Define. * libc/machine/sh/memset.S: Add code for SH5. * libc/machine/sh/memset.S: Likewise. * libc/machine/sh/strcpy.S: Likewise. 2002-02-27 Jeff Johnston * configure.host: Add check for --disable-newlib-io-float configuration option and add -DNO_FLOATING_POINT to newlib cflags if appropriate. * acinclude.m4: Added --disable-newlib-io-float option. * aclocal.m4: Regenerated. * configure: Ditto. * doc/aclocal.m4 doc/configure libc/aclocal.m4 libc/configure * libc/*/aclocal.m4 libc/*/configure * libm/*/aclocal.m4 libm/*/configure: Ditto. * libc/stdio/vfprintf.c [!INTEGER_ONLY]: Only set FLOATING_POINT if NO_FLOATING_POINT flag is not defined. 2002-02-25 Jeff Johnston * libc/include/sys/config.h: Add __extension__ in front of long long references. 2002-02-23 Corinna Vinschen * libc/include/sys/stat.h (_fstat): Don't declare when compiling Cygwin. (_stat): Ditto. 2002-02-23 Corinna Vinschen * libc/sys/cygwin/sys/dirent.h (struct __DIR): Use __off32_t instead of off_t. 2002-02-20 Nick Clifton * libc/machine/xscale/strchr.c (strchr): Add 'r1' to the list of clobbered registers. 2002-02-19 Thomas Fitzsimmons * configure.host (newlib_cflags): When host is in m68* add -DCOMPACT_CTYPE. 2002-02-15 Jeff Johnston * libc/include/sys/config.h: Add definitions for __int16_t, __uint16_t, __int64_t, and __uint64_t. 2002-02-12 Hans-Peter Nilsson * libc/sys/mmixware/link.c: New. * libc/sys/mmixware/sys/syscall.h (TRAP1i, I3f): Make asm volatile. * libc/sys/mmixware/times.c (_times): Renamed from times. * libc/sys/mmixware/open.c (_open): Attempt to handle O_APPEND properly by reading previous contents, not through BinaryReadWrite. * libc/sys/mmixware/Makefile.am (lib_a_SOURCES): Add link.c * libc/sys/mmixware/Makefile.in: Regenerate. 2002-02-10 Corinna Vinschen * libc/include/grp.h: Don't declare group functions when compiling Cygwin. 2002-02-09 Corinna Vinschen * libc/include/grp.h: Include Cygwin specific header. * libc/include/sys/stat.h: Ditto. Don't define `struct stat' when compiling for Cygwin. * libc/include/sys/types.h: Don't define off_t, uid_t and gid_t when compiling for Cygwin. 2002-02-08 matthew green * libc/include/sys/reent.h (_REENT_CHECK_EMERGENCY): Allocate _REENT_EMERGENCY_SIZE, not sizeof(char *). 2002-02-08 Alexandre Oliva Contribute sh64-elf. 2001-03-13 Alexandre Oliva * configure.host (newlib_cflags) [sh*-*-*]: Enable long long support in printf. 2001-01-29 Alexandre Oliva * libc/machine/sh/setjmp.S [SH5]: Switch to SHmedia mode before any labels. 2001-01-24 Alexandre Oliva * libc/sys/sh/trap.S (___trap34) [SH5]: Don't trash r2. 2000-12-16 Alexandre Oliva * libc/machine/sh/configure.in: Rework conditionals. * libc/machine/sh/Makefile.am: Likewise. * libc/machine/sh/configure, libc/machine/sh/Makefile.in: Rebuilt. 2000-12-01 Alexandre Oliva * configure.host: Match `sh*'. * libc/include/machine/setjmp.h: Define for SH5. * libc/machine/sh/configure.in: Detect SH5. * libc/machine/sh/configure: Rebuilt. * libc/machine/sh/Makefile.am: Use only setjmp.S for SH5. * libc/machine/sh/Makefile.in: Rebuilt. * libc/machine/sh/asm.h: Adjust for SH5. * libc/machine/sh/setjmp.S: Implement in SHmedia. * libc/sys/sh/crt0.S: Likewise. * libc/sys/sh/trap.S: Likewise. 2002-02-07 Jeff Johnston * libc/machine/i386/Makefile.am: (mach_add_src): Remove. (mach_add_obj): Conditionally set to setjmp.o or nothing. (LIB_SOURCES): Remove $(mach_add_src). (lib_a_LIBADD, lib_a_DEPENDENCIES): Add and set to $(mach_add_src). (lib_la_LIBADD, lib_la_DEPENDENCIES): Ditto. * libc/machine/i386/Makefile.in: Regenerate. 2002-02-05 Manik Raina * libc/misc/dprintf.c (parse_number): #if 0 unused function. * libc/stdlib/ldtoa.c (_ldcheck): Remove unused local variables s, p, k, and outstr. * libc/stdlib/dtoa.c (_dtoa_r): Initialize mlo. 2002-02-04 Jeff Johnston * libc/include/sys/reent.h [(!_REENT_SMALL]: Add _REENT_CHECK_EMERGENCY macro. 2002-02-03 matthew green * libc/reent/signgam.c (__signgam): Fix error in previous. 2002-02-02 matthew green * libc/include/sys/config.h (_REENT_SMALL): Define for Xstormy16. * libc/reent/reent.c (_reclaim_reent): Clean for _REENT_SMALL case. * libc/reent/reent.tex: Add blurb about _REENT_SMALL. * libc/include/sys/reent.h (struct _reent): Completely new version for _REENT_SMALL. (_REENT_INIT): New defines, different defintion depending on _REENT_SMALL. (_REENT_CHECK, _REENT_CHECK_TM): Likewise. (_REENT_CHECK_ASCTIME_BUF, _REENT_INIT_RAND48): Likewise. (_REENT_CHECK_RAND48, _REENT_INIT_MP, _REENT_CHECK_MP): Likewise. (_REENT_CHECK_EMERGENCY, _REENT_SIGNGAM, _REENT_RAND_NEXT): Likewise. (_REENT_RAND48_SEED, _REENT_RAND48_MULT, _REENT_RAND48_ADD): Likewise. (_REENT_MP_RESULT, _REENT_MP_RESULT_K, _REENT_MP_P5S): Likewise. (_REENT_MP_FREELIST, _REENT_ASCTIME_BUF, _REENT_TM): Likewise. (_REENT_EMERGENCY): Likewise. * libc/include/sys/reent.h (struct __sFILE_fake): New struct, same as the start of the real __sFILE, used for stdin, stdout and stderr until they are setup properly. (struct __sFILE): Move location of _data in _REENT_SMALL case. * libc/stdio/findfp.c (__sinit): Rearrange for _REENT_SMALL case by allocated stdin, stdout and stderr. * libc/stdio/getchar.c (_getchar_r): Call _REENT_SMALL_CHECK_INIT(). * libc/stdio/iprintf.c (iprintf, _iprintf_r): Likewise. * libc/stdio/perror.c (_perror_r): Likewise. * libc/stdio/printf.c (printf, _printf_r): Likewise. * libc/stdio/putchar.c (_putchar_r): Likewise. * libc/stdio/puts.c (_puts_r): Likewise. * libc/stdio/scanf.c (scanf, _scanf_r): Likewise. * libc/stdio/vprintf.c (vprintf): Likewise. * libc/stdio/vscanf.c (vscanf, _vscanf_r): Likewise. * libc/stdio/tmpnam.c (_tmpnam_r): Use _REENT_EMERGENCY(). * libc/reent/reent.c (_wrapup_reent): Adjust for _REENT_SMALL atexit. * libc/include/sys/reent.h (_atexit): Limit atexit() entries to 32 for _REENT_SMALL. * libc/stdlib/atexit.c (atexit): Rearrange for _REENT_SMALL case. * libc/stdlib/exit.c (exit): Rearrange for _REENT_SMALL case. * libc/include/sys/reent.h (struct _rand48): Keep _rand_next if _REENT_SMALL. * libc/stdlib/drand48.c (_drand48_r): Call _REENT_CHECK_RAND48(). * libc/stdlib/lcong48.c (_lcong48_r): Likewise. * libc/stdlib/lrand48.c (_lrand48_r): Likewise. * libc/stdlib/mrand48.c (_mrand48_r): Likewise. * libc/stdlib/rand48.c (__dorand48): Likewise. * libc/stdlib/seed48.c (_seed48_r): Likewise. * libc/stdlib/srand48.c (_srand48_r): Likewise. * libc/stdlib/rand48.h (__rand48_seed, __rand48_mult, __rand48_add): Define as _REENT_RAND48_SEED(), _REENT_RAND48_MULT() and _REENT_RAND48_ADD(). * libc/stdlib/dtoa.c (_dtoa_r): Call _REENT_CHECK_MP(). Use _REENT_MP_RESULT() and _REENT_MP_RESULT_K(). * libc/stdlib/ldtoa.c (_ldtoa_r): Likewise. * libc/stdlib/rand.c (srand): Use _REENT_RAND_NEXT(). * libc/stdlib/rand.c (rand): Likewise. * libc/stdlib/mallocr.c (malloc_stats): Call _REENT_SMALL_CHECK_INIT(). * libc/stdlib/mstats.c (_mstats_r): Call _REENT_SMALL_CHECK_INIT(). * libc/stdlib/mprec.c (Balloc): Call _REENT_CHECK_MP. Use _REENT_MP_FREELIST() and _REENT_MP_P5S. * libc/include/sys/reent.h (struct _mprec): New structure. * libc/include/sys/reent.h (struct _reent): Rename _strtok_last to _unused_strtok_last. * libc/string/strtok.c (strtok): Use a local static variable. * libc/include/sys/reent.h (_REENT_ASCTIME_SIZE): New define. (_REENT_EMERGENCY_SIZE): Likewise. * libc/time/asctime.c (asctime): Call _REENT_CHECK_ASCTIME_BUF(). Use _REENT_ASCTIME_BUF(). * libc/time/lcltime.c (localtime): Call _REENT_CHECK_TM(). Use _REENT_TM(). * libc/include/math.h (__singam_r): Use _REENT_SIGNGAM(). * libc/reent/signgam.c (__signgam): Use _REENT_SIGNGAM(). * libm/math/w_gamma.c (gamma): Use _REENT_SIGNGAM(). * libm/math/w_lgamma.c (lgamma): Use _REENT_SIGNGAM(). * libm/math/wf_gamma.c (gammaf): Use _REENT_SIGNGAM(). * libm/math/wf_lgamma.c (lgammaf): Use _REENT_SIGNGAM(). 2002-02-01 Geoffrey Keating * configure.host (xstormy16): Don't use the generic malloc. * libc/machine/xstormy16/Makefile.am: Build tiny-malloc. * libc/machine/xstormy16/Makefile.in: Regenerate. * libc/machine/xstormy16/mallocr.c: New file. * libc/machine/xstormy16/tiny-malloc.c: New file. 2002-01-28 Thomas Fitzsimmons * libc/include/sys/signal.h [__CYGWIN__]: Issue error message when _CYGWIN_TYPES_H is not defined. 2002-01-24 Thomas Fitzsimmons * libc/include/sys/signal.h: Revert 2002-01-23 change. 2002-01-23 Thomas Fitzsimmons * libc/include/sys/signal.h: Remove pthread_kill declaration when __CYGWIN__ is defined. 2002-01-18 Mark Bradshaw * libc/include/time.h: Add prototype for strptime for Cygwin. 2002-01-17 Nick Clifton * libc/machine/xscale/memset.c (memset): Fix bug when len == 1 and dst was not word aligned. * libc/sys/arm/syscalls.c (_sbrk): Return -1 rather than aborting if too much memory is requested. 2002-01-11 Jeff Johnston * libc/stdio/vfscanf.c (__svfscanf_r): Change loop that reads blanks from the input file to break if EOF reached rather than end processing. 2002-01-07 Jeff Johnston * MAINTAINERS: Change e-mail addresses to refer to redhat domain. 2002-01-07 Alan Matsuoka * libc/include/machine/ieeefp.h: Configure d10v doubles to be 32 bits if __DOUBLE__ == 32 otherwise doubles are 64 bits. libc/include/sys/config.h: Ditto. 2001-12-28 Corinna Vinschen * libc/sys/cygwin/sys/utmp.h: Add definition of UTMP_FILE. 2001-12-22 Geoffrey Keating Catherine Moore Richard Henderson Corinna Vinschen * configure.host: Add support for xstormy16. * libc/include/machine/ieeefp.h: Add support for xstormy16. * libc/include/machine/setjmp.h: Add support for xstormy16. * libc/include/sys/config.h: Add support for xstormy16. * libc/machine/xstormy16/Makefile.am: New file. * libc/machine/xstormy16/Makefile.in: New file. * libc/machine/xstormy16/aclocal.m4: New file. * libc/machine/xstormy16/configure: New file. * libc/machine/xstormy16/configure.in: New file. * libc/machine/xstormy16/setjmp.S: New file. 2001-12-19 Thomas Fitzsimmons * libm/machine/configure.in (HAVE_LIBM_MACHINE_DIR): New conditional. * libm/machine/Makefile.am [HAVE_LIBM_MACHINE_DIR] (LIBM_MACHLIB): New variable. 2001-12-19 Corinna Vinschen * libm/machine/Makefile.am: Change rules to create correct lib.a. * libm/machine/Makefile.in: Regenerated through automake. 2001-12-18 Thomas Fitzsimmons * Makefile.am (DOCDIR): Force to empty string when doc directory is not present. 2001-12-18 Thomas Fitzsimmons * libc/machine/i386/f_*: Move to libm/machine/i386. 2001-12-18 Joel Sherrill * libm/machine/Makefile.am: Add dummy doc stub so "make info" works. 2001-12-17 Joel Sherrill * libc/include/sys/types.h (ino_t): RTEMS uses long also. 2001-12-17 Thomas Fitzsimmons * libc/stdlib/Makefile.am (LIB_COMPILE): Change to equal $(COMPILE) rather than $(CC). * libc/stdio/Makefile.am (LIB_COMPILE): Likewise. (vfprintf.$(oext)): Remove $(INCLUDES), made redundant by $(LIB_COMPILE) change. (vfiprintf.$(oext)): Likewise. 2001-12-17 Corinna Vinschen * libc/sys/cygwin/include/unistd.h: Add __UNISTD_GETOPT_ to allow conditionalized including of getopt stuff. 2001-12-14 Thomas Fitzsimmons * libc/stdio/Makefile.am (vfprintf.$(oext)): Add $(INCLUDES) to compile line. (vfiprintf.$(oext)): Likewise. 2001-12-13 Thomas Fitzsimmons * Makefile.shared: New file. * libc/sys/linux/shared.ld: New file. * libm/machine/*: New files. * libm/machine/i386/*: New files. * Makefile.am: Add libtool support. Change math and mathfp references to variables. * configure.host: Add variables for libtool support. Add libm_machine_dir variable. * configure.in: Add objectlist variables, for libtool support. Add CC_FOR_BUILD tests. * libc/Makefile.am: Add libtool support. Change crt0.o reference to be a variable reference. * libc/configure.in: Add libtool support. Change sublib names to be lib${subdir}.la when using libtool. * libc/ctype/Makefile.am: Add libtool support. * libc/errno/Makefile.am: Likewise. * libc/locale/Makefile.am: Likewise. * libc/machine/Makefile.am: Likewise. * libc/machine/configure.in: Likewise. * libc/machine/i386/Makefile.am: Likewise. * libc/machine/i386/configure.in: Likewise. * libc/misc/Makefile.am: Likewise. * libc/posix/Makefile.am: Likewise. * libc/reent/Makefile.am: Likewise. * libc/signal/Makefile.am: Likewise. * libc/stdio/Makefile.am: Likewise. * libc/stdlib/Makefile.am: Likewise. * libc/string/Makefile.am: Likewise. * libc/sys/Makefile.am: Likewise. * libc/sys/configure.in: Likewise. * libc/sys/linux/Makefile.am: Add libtool support. Change awk reference to a variable reference. Change signal.h reference to a variable reference. * libc/sys/linux/configure.in: Add libtool support. * libc/syscalls/Makefile.am: Likewise. * libc/time/Makefile.am: Likewise. * libc/unix/Makefile.am: Likewise. * libm/Makefile.am: Add libtool support. Change math and mathfp references to variables. * libm/configure.in: Add libtool support. Add LIBM_MACHINE_LIB variable. * libm/common/Makefile.am: Add libtool support. * libm/math/Makefile.am: Likewise. * libm/mathfp/Makefile.am: Likewise. Regenerate all Makefile.in, aclocal.m4, and configure. 2001-12-13 Anita Kulkarni * libc/sys/sh/crt0.S: Remove stack symbol definition 0xdeaddead. 2001-12-06 John Peacock * libc/include/sys/unistd.h: Correct ualarm declaration. 2001-12-05 Nick Clifton * libc/sys/arm/crt0.S: For __USES_INITFINI__ preserve the argument vector before calling the initialisation functions. 2001-11-29 Christopher Faylor * libc/include/dirent.h: Protect against multiple inclusion. 2001-11-27 Christopher Faylor * libc/include/sys/types.h: Define useconds_t. * libc/include/sys/ulimit.h: Declare ualarm. 2001-11-21 Christopher Faylor * libc/sys/cygwin/sys/dirent.h (DIR): Add another internal element. 2001-11-19 Hans-Peter Nilsson * libc/sys/mmixware/*: Tweak license header in all source files. 2001-11-12 Corinna Vinschen * libc/include/alloca.h: Move libc/sys/linux/include/alloca.h to here. Rearrange for general inclusion by stdlib.h. * libc/include/stdlib.h: Include if __STRICT_ANSI__ isn't defined. * libc/sys/linux/include/alloca.h: Move to libc/include. 2001-11-12 Anthony Green * libc/sys/arm/crt0.S (__stack_base__): New symbol. 2001-11-13 Hans-Peter Nilsson * libc/sys/mmixware/*: Correct spacing in all source files. * libc/sys/mmixware/syscall.h: Move misplaced file... * libc/sys/mmixware/sys/syscall.h: ...here. 2001-11-12 Hans-Peter Nilsson * libc/include/machine/ieeefp.h: Add support for mmix target. * libc/include/machine/setjmp.h: Ditto. * configure.host: Ditto. * libc/sys/mmixware/Makefile.am, libc/sys/mmixware/_exit.c, libc/sys/mmixware/access.c, libc/sys/mmixware/aclocal.m4, libc/sys/mmixware/chmod.c, libc/sys/mmixware/chown.c, libc/sys/mmixware/close.c, libc/sys/mmixware/configure.in, libc/sys/mmixware/creat.c, libc/sys/mmixware/crt0.c, libc/sys/mmixware/execv.c, libc/sys/mmixware/execve.c, libc/sys/mmixware/fork.c, libc/sys/mmixware/fstat.c, libc/sys/mmixware/getpid.c, libc/sys/mmixware/gettime.c, libc/sys/mmixware/isatty.c, libc/sys/mmixware/kill.c, libc/sys/mmixware/lseek.c, libc/sys/mmixware/open.c, libc/sys/mmixware/pipe.c, libc/sys/mmixware/read.c, libc/sys/mmixware/sbrk.c, libc/sys/mmixware/setjmp.S, libc/sys/mmixware/stat.c, libc/sys/mmixware/sys/syscall.h, libc/sys/mmixware/time.c, libc/sys/mmixware/times.c, libc/sys/mmixware/unlink.c, libc/sys/mmixware/utime.c, libc/sys/mmixware/wait.c, libc/sys/mmixware/write.c: New files. * libc/sys/mmixware/configure, libc/sys/mmixware/Makefile.in, libc/sys/mmixware/aclocal.m4: Generate. 2001-11-05 Corinna Vinschen * libc/include/sys/unistd.h: Add prototypes for endusershell(), getusershell(), iruserok(), revoke(), ruserok() and setusershell() when __CYGWIN__ is defined. * libc/sys/cygwin/sys/utmp.h: Add prototypes for login_tty() and logwtmp(). 2001-11-01 Arati Dikey * libm/mathfp/sf_isinf.c (isinff): Change to use _DEFUN macro. [_DOUBLE_IS_32BITS](isinf): New function that calls isinff. * libm/mathfp/sf_isnan.c (isnanf): Change to use _DEFUN macro. [_DOUBLE_IS_32BITS](isnan): New function that calls isnanf. 2001-10-24 Christopher Faylor * libc/stdio/fseek.c: Reset pointer to buffer base when forced to seek outside of current buffer contents. This prevents the code from erroneously thinking there is anything in the current buffer. 2001-10-22 Geoffrey Keating * libc/include/math.h: The C++ standard adds the single-precision versions of the elementary functions. 2001-10-22 Christopher Faylor * libc/posix/execvp.c: Remove obsolete CYGWIN32 considerations throughout. * signal.h: Change comment to reflect __CYGWIN__ rather than __CYGWIN32__. * popen.c (popen): Use __CYGWIN_ rather than __CYGWIN32__. * system.c (_system_r): Ditto. 2001-10-17 Corinna Vinschen * libc/include/sys/unistd.h: Add prototype for fchdir() when __CYGWIN__ or __rtems__ is defined. 2001-10-01 Charles Wilson * libc/include/stdlib.h: add declarations for _strtoull_r, _strtoll_r, strtoull, and strtoll. * libc/stdio/local.h: remove declarations of __strtoull_r and __strtoll_r. * libc/stdio/vfscanf.c(__svfscanf_r): call _strtoull_r instead of __strtoull_r. Ditto _strtoll_r vs. __strtoll_r. * libc/stdlib/Makefile.am: add new files to .c list and .def list * libc/stdlib/Makefile.in: regenerate * libc/stdlib/strtoll_r.c: rename __strtoll_r as _strtoll_r * libc/stdlib/strtoull_r.c: rename __strtoull_r as _strtoull_r * libc/stdlib/strtoull.c: new file * libc/stdlib/strtoll.c: new file Mon Sep 17 17:29:47 2001 Christopher Faylor * libc/include/process.h: Add getpid() declaration. 2001-09-14 Nick Clifton * libc/sys/arm/crt0.S: Add calls to _init and _fini (via atexit) for new style arm/elf ctor/dtor handling. Minor formatting tidy up. 2001-09-13 Jeff Johnston * libc/stdlib/Makefile.am: Add support to build strtoll_r.c and strtoull_r.c. * libc/stdlib/Makefile.in: Regenerated. * libc/stdlib/strtoll_r.c: New file. * libc/stdlib/strtoull_r.c: New file. * libc/stdio/local.h: Add prototypes for long long string conversion routines. * libc/stdio/vfscanf.c (__svfscanf_r): Add optional long long support tied to %L integer conversion specifier. Thu Sep 13 08:49:49 2001 Jason Tishler * strftime.c (strftime): Fix "%W" implementation to properly handle Mondays too. 2001-09-07 Jeff Law * libc/sys/h8300hms/crt0.S: For H8/300H and H8/S, load address of __fini with "mov.l" instead of "mov.w". 2001-09-05 Corinna Vinschen * libc/sys/cygwin/include/unistd.h: New file, wrapping sys/unistd.h and getopt.h. 2001-09-04 Jason Merrill * libc/sys/h8300hms/crt0.S: Support ELF initialization. 2001-09-03 Corinna Vinschen * libc/sys/cygwin/sys/dirent.h (struct dirent): Add version number field. (__DIRENT_VERSION): New define. 2001-09-03 Corinna Vinschen * libc/sys/cygwin/sys/dirent.h (struct dirent): Add `d_fd' member. Shrink __d_reserved accordingly to keep structure size. (dirfd): Declare external. 2001-08-29 Joel Sherrill * libc/include/sys/unistd.h: Prototype chroot() for RTEMS. 2001-08-29 Ralf Corsepius * libc/machine/i386/f_atan2.S, libc/machine/i386/f_atan2f.S, libc/machine/i386/f_exp.c, libc/machine/i386/f_expf.c, libc/machine/i386/f_frexp.S, libc/machine/i386/f_frexpf.S, libc/machine/i386/f_ldexp.S, libc/machine/i386/f_ldexpf.S, libc/machine/i386/f_log.S, libc/machine/i386/f_log10.S, libc/machine/i386/f_log10f.S, libc/machine/i386/f_logf.S, libc/machine/i386/f_pow.c, libc/machine/i386/f_powf.c, libc/machine/i386/f_tan.S, libc/machine/i386/f_tanf.S: Add conditional compilation to avoid HW FPU instructions when compiled for soft-float. 2001-08-29 Jeff Johnston * Makefile.am: Add check for ln failing when creating libg.a so that cp gets used as a backup. * Makefile.in: Regenerated. 2001-08-29 Jeff Johnston * libc/include/sys/reent.h: Add include of . No longer include time.h. Add struct __tm to use for _localtime_buf in the reentrant structure. Add a _NULL definition to use in initializing the reentrant struct. * libc/include/sys/config.h: For CYGWIN32 and RTEMS, change the _READ_WRITE_RETURN_TYPE to _ssize_t which is found in . * libc/include/sys/unistd.h: Include . * libc/time/lcltime.c (localtime): Cast the reentrant struct _localtime_buf to be struct tm *. Wed Aug 29 14:17:38 2001 J"orn Rennecke * configure.host (h8300-*-elf*, h8500-*-elf*): New cases. * libc/sys/h8300hms/crt1.c (__main): Don't reference __ctors / __ctors_end. * libc/sys/h8300hms/syscalls.c: Include errno.h. (_unlink): New stub function. Sat Aug 25 22:22:25 2001 Christopher Faylor * libc/include/sys/errno.h: Add a cautionary comment. 2001-08-21 Jeff Johnston * libc/stdlib/mallocr.c [!defined(MALLOC_ALIGNMENT)]: Add conditional for SIZE_SZ so that alignment ends up a minimum of 8. Mon Aug 13 22:26:01 2001 Christopher Faylor * libc/include/machine/setjmp.h: Protect sigsetjmp/siglongjmp macro arguments. * libc/include/sys/errno.h: Declare sys_errlist and sys_nerr, under Cygwin. 2001-08-13 Jeff Johnston * libc/include/malloc.h (M_MXFAST, M_NLBLKS, M_GRAIN, M_KEEP): New macro constants for mallopt options. (M_TRIM_THRESHOLD, M_TOP_PAD, M_MMAP_THRESHOLD, M_MMAP_MAX): Ditto. 2001-08-02 Jeff Johnston * libc/include/stdio.h (BUFSIZ): Define to __BUFSIZ__ if provided, otherwise default. 2001-07-12 Aldy Hernandez * libc/machine/mips/setjmp.S: Allow mips16 and mips64 to coexist. 2001-06-27 Nick Clifton * libc/include/machine/ieeefp.h (__IEEE_BYTES_LITTLE_ENDIAN): Define for little endian ARMs. * libc/stdlib/mprec.h (Storeinc): Use little endian version if __IEEE_BYTES_LITTLE_ENDIAN is defined. 2001-06-11 Danny Smith * /libc/include/ctype.h (is* and to* macros): Do not define if C++. 2001-06-11 Egor Duda * libc/ctype/ctype_.c: When compiled with gcc on platforms with signed char, make _ctype_[-128] ... _ctype[-1] refer to initialized memory region. Platform can define COMPACT_CTYPE to avoid allocation of the additional 128 bytes of data. Add pointer to _ctype_ array. Always initialize all _ctype_ array elements. 2001-06-08 Jonathan Larmour * libc/stdlib/mbtowc_r.c (_mbtowc_r): Avoid dereferencing NULL pointer. 2001-05-28 Nick Clifton * libc/stdio/vfprintf.c (_VFPRINTF_R): Handle printf ("%#.0o",0) 2001-05-25 Nick Clifton * libc/machine/xscale/memcmp.c: Fix bug when both pointers have matching, non-word alignment, and the length is <= 4 but more than enough to move them over a word boundary. Add comments explaining what each instruction does. Mon May 7 20:39:25 2001 Christopher Faylor * libc/include/sys/stat.h: Revert March 3, Cygwin change. * libc/include/sys/unistd.h: Ditto. 2001-05-04 Earnie Boyd * libc/string/strrchr.c: Use strchr for the speed improvements. 2001-05-01 Jeff Johnston * libc/stdio/findfp (__sinit)[HAVE_FCNTL]: For platforms that have real file systems, let __smakebuf() determine if line buffering should be used for stdout. 2001-04-27 Jeff Johnston * libc/stdio/vfscanf.c (__svfscanf_r): Initialize new_exp local var. 2001-04-27 Jeff Johnston * libc/include/stdlib.h: Add prototype for _strtod_r. 2001-04-24 Charles Wilson * libc/include/sys/unistd.h [X_OK]: Use better protection against Cygwin X_OK definitions in sys/file.h. Fri Apr 20 23:17:51 2001 Christopher Faylor * libc/include/sys/time.h: Define timercmp and other macros for __CYGWIN__, too. 2001-04-20 Jeff Johnston * acinclude.m4: Added --enable-malloc-debugging configure flag. * configure.host: For Cygwin specify -DMALLOC_PROVIDED if --enable-malloc-debugging selected. * aclocal.m4 configure: Regenerated. libm/aclocal.m4 libm/configure: Ditto. * libc/aclocal.m4 libc/configure: Ditto. * libc/machine/aclocal.m4 libc/machine/configure: Ditto. * libc/machine/*/aclocal.m4 libc/machine/*/configure: Ditto. * libc/sys/aclocal.m4 libc/sys/configure: Ditto. * libc/sys/*/aclocal.m4 libc/sys/*/configure: Ditto. * doc/aclocal.m4 doc/configure: Ditto. 2001-04-20 Jeff Johnston * libc/include/stdio.h[!_REENT_ONLY]: Moved various functions together into one list. [!__STRICT_ANSI__]: Moved non-ANSI I/O functions in this list. (vfscanf, vscanf, vsscanf, _vfscanf_r, _vscanf_r, _vsscanf_r): New function prototypes. (_fscanf_r, _sscanf_r): Ditto. * libc/include/stdlib.h: Added _strtod_r prototype. * libc/stdio/Makefile.am: Add new v*scanf functions. * libc/stdio/Makefile.in: Regenerate. * libc/stdio/fscanf.c: Reorganized so HAVE_STDC only affects prototype and code is shared. Added reentrant _fscanf_r which calls __svfscanf_r. * libc/stdio/scanf.c: Changed to call __svfscanf_r. * libc/stdio/sscanf.c: Changed documentation to add reentrant routines. (sscanf): Changed to call __svfscanf_r with _REENT argument. (_sscanf_r): New routine. * libc/stdio/local.h: Removed __svfscanf prototype and replaced it with __svfscanf_r prototype. * libc/stdio/vfscanf.c (vfscanf, _vfscanf_r: New routines. (__svfscanf_r): Reentrant version of __svfscanf which takes reetrancy structure as argument as calls reentrant versions of helper functions (e.g. _strtol_r, _strtoul_r). Also replaced calls to atol and atof to _strtol_r and _strtod_r respectively. * libc/stdio/vfscanf.c: Also changed __svfscanf to call __svfscanf_r. * libc/stdlib/strtod.c (strtod): Changed to call _strtod_r with _REENT argument. * libc/stdio/vscanf.c: New file. * libc/stdio/vsscanf.c: Ditto. 2001-04-19 Robert Collins * include/time.h[__CYGWIN__]: Define tzname to _tzname if not defined. Define daylight to _daylight if it is not defined Prepare a variable export of timezone based on timezonevariable. (Cannot be used with the timezone() function.) 2001-04-17 Stephen L. Moshier * newlib/libm/math/ef_asin.c (pio2_hi, pio2_lo, pio4_hi): Correct the numerical values. 2001-04-13 Robert Collins * libc/include/sys/unistd.h: Add pthread_atfork (Cygwin only). Thu Apr 12 23:11:00 2001 Corinna Vinschen * libc/include/sys/errno.h: Add ECASECLASH to indicate case clash on case insensitve file systems. 2001-04-12 Robert Collins * libc/include/sys/features.h: Add appropriate defines for Cygwin pthread support. * libc/include/sys/signal.h: Remove unneeded __CYGWIN__ protection. * libc/include/sys/types.h: Protect __CYGWIN__ from the rtems pthreads types. Include for the cygwin specific typedefs. 2001-04-04 Richard Sandiford * libc/include/machine/ieeefp.h: Comment about new configuration macros _FLT_LARGEST_EXPONENT_IS_NORMAL and _FLT_NO_DENORMALS. * libm/common/fdlib.h: Define new macros for testing floats. * libm/common/sf_*: Use them. * libm/math/ef_*: Likewise. * libm/math/sf_*: Likewise. 2001-03-29 Jeff Johnston * libc/sys/arm/setjmp.S: Added .code 16 specifier for thumb-mode prolog to by-pass possible assembler error. 2001-03-21 Egor Duda Allow building internal stubs for non-reentrant syscalls if target provides its own malloc * libc/reent/reent.c (errno): Move definition here. * libc/reent/sbrkr.c: From here. 2001-03-20 Danny Smith * libc/include/sys/types.h (BSD int typedefs): Guard with _BSDTYPES_DEFINED rather than _WINSOCK_H. (fd_set): Add !defined __USE_W32_SOCKETS to guard; define _SYS_TYPES_FD_SET. * libc/include/sys/unistd.h (gethostname): Don't declare if defined (_WINSOCK_H) || defined (__USE_W32_SOCKETS). Sat Mar 17 18:30:00 2001 Corinna Vinschen * libc/include/sys/unistd.h: Add _PC_POSIX_PERMISSONS and _PC_POSIX_SECURITY constants for Cygwin. Wed Mar 14 9:34:00 2001 Corinna Vinschen * libc/sys/cygwin/crt0.c: Add copyright hint. * libc/sys/cygwin/sys/dirent.h: Ditto. * libc/sys/cygwin/sys/param.h: Ditto. * libc/sys/cygwin/sys/utime.h: Ditto. * libc/sys/cygwin/sys/utmp.h: Ditto. 2001-03-13 Alexandre Oliva * libc/stdio/vfprintf.c (QUADINT) [_NO_LONGLONG]: Make it equivalent to LONGINT. 2001-03-08 Richard Sandiford * (libc/include/machine/setjmp.h): Use 23 long long ints for a jmpbuf on MIPS64 targets. * (libc/machine/mips/setjmp.S): Add MIPS64 version. Wed Mar 7 16:02:07 2001 Christopher Faylor * libc/include/sys/config.h: Use ssize_t for Cygwin read/write declarations. Mon Mar 5 21:48:54 2001 J"orn Rennecke * libc/include/sys/config.h (_READ_WRITE_RETURN_TYPE): Define. For RTEMS, define to be ssize_t. Default to int if not defined. * libc/stdio/sscanf.c (eofread): Return _READ_WRITE_RETURN_TYPE. * libc/stdio/stdio.c (__sread, __swrite): Likewise. * libc/stdio/local.h (__sread, __swrite): Likewise. * libc/include/sys/reent.h (_read, _write): Likewise. * libc/include/sys/unistd.h (read, write, _read, _write): Likewise. * libc/syscalls/sysread.c (read): Likewise. * libc/syscalls/syswrite.c (write): Likewise. 2001-03-05 Jeff Johnston * libc/time/mktime.c: Add L suffix to _SEC_IN_xxxx constants. Sat Mar 3 00:34:14 2001 Christopher Faylor * libc/include/sys/stat.h: Use special defines for executable stat bits when compiling for Cygwin. * libc/include/sys/unistd.h: Use special define for X_OK when compiling for Cygwin. 2001-03-02 Jeff Johnston * libc/string/strtok.c: Add #undef of __STRICT_ANSI__ so prototype of strtok_r is always defined. 2001-03-02 Jeff Johnston * libc/include/machine/ansi.h: New dummy header file. 2001-02-22 Jeff Johnston * libc/include/machine/setjmp-dj.h: With DJ Delorie's permission, changed the copyright information to allow free modification of the file with no reference to "copying.dj". * libc/include/sys/stat-dj.h: Ditto. * libc/machine/i386/setjmp.S: Ditto. * libc/sys/h8300hms/sys/file.h: Ditto. * libc/sys/sysmec/access.c: Ditto. * libc/sys/sysnecv850/access.c: Ditto. * libc/stdio/mktemp.c: Fixed typo for the word copyright. * libc/stdlib/getenv_r.c: Ditto. * libc/stdlib/putenv_r.c: Ditto. * libc/stdlib/setenv_r.c: Ditto. * libc/stdlib/getenv.c: Removed DJ reference since any possible modifications will now be in the _r version of this file. * libc/stdlib/putenv.c: Ditto. * libc/stdlib/setenv.c: Ditto. * libc/sys/go32/copying.dj: Removed DJ's address which is no longer valid. Added a reference to DJ's web page that contains his address. * libc/sys/go32/*.s: Removed references to DJ's old address. * libc/sys/go32/*.c: Ditto. * libc/sys/go32/*.h: Ditto. * libc/sys/go32/*.S: Ditto. * libc/sys/go32/sys/*.h: Ditto. 2001-02-21 Jeff Johnston * libc/stdio/fdopen.c (fdopen): Protect calls to _fcntl() with HAVE_FCNTL flag check. * configure.host: Define HAVE_FCNTL for Cygwin, go32, RTEMS, sparc64, powerpcle, x86 netware, x86 sco, x86 Linux and Vxworks. Thu Feb 15 01:39:51 2001 Christopher Faylor * libc/include/sys/signal.h: Always include sys/types.h under Cygwin. 2001-02-14 Kazuhiro Fujieda * libc/include/stdlib.h: Add declarations of rand48 functions and their reentrant versions. * libc/include/sys/reent.h: Move macros from rand48.h. Add struct _rand48 for shared parameters of rand48 functions. (struct _reent): Add a variable _r48 of struct _rand48. (_REENT_INIT): Add _r48 initialization. * libc/stdlib/Makefile.am (lib_a_SOURCES): Add rand48 functions. (CHEWOUT_FILES): Add rand48.def. * libc/stdlib/Makefile.am: Add dependencies for rand48 functions. * libc/stdlib/Makefile.in: Regenerated. * libc/stdlib/drand48.c (drand48, _drand48_r): Derived from the NetBSD C library. * libc/stdlib/erand48.c (erand48, _erand48_r): Ditto. * libc/stdlib/jrand48.c (jrand48, _jrand48_r): Ditto. * libc/stdlib/lcong48.c (lcong48, _lcong48_r): Ditto. * libc/stdlib/lrand48.c (lrand48, _lrand48_r): Ditto. * libc/stdlib/mrand48.c (mrand48, _mrand48_r): Ditto. * libc/stdlib/nrand48.c (nrand48, _nrand48_r): Ditto. * libc/stdlib/seed48.c (seed48, _seed48_r): Ditto. * libc/stdlib/srand48.c (srand48, _srand48_r): Ditto. * libc/stdlib/rand48.c (__dorand48): Ditto. * libc/stdlib/rand48.h: Ditto, and modify declarations of global parameters into macros referring them in the reentrant structure. 2001-02-12 Jeff Johnston * libc/include/sys/stat.h: Add mknod for Cygwin now that Cygwin definition has correct prototype. 2001-02-08 Jeff Johnston * libc/include/sys/stat.h: Must revert change for mknod for CYGWIN until winsup/cygwin/syscalls.cc changes mknod prototype. 2001-02-08 Jeff Johnston * libc/include/stdio.h: Revert putw prototype. 2001-02-08 Edward M. Lee * libc/include/grp.h: add prototype for initgroups. * libc/include/stdio.h: fix prototype for putw. * libc/include/sys/signal.h: add prototype for killpg. * libc/include/sys/stat.h: enable mknod/lstat for CYGWIN. * libc/include/sys/unistd.h: add prototypes for getpgid, setpgrp, vhangup and remove duplicate sysconf prototype. 2001-02-07 Jeff Johnston * libc/sys/rtems/sys/types.h: Removed. 2001-02-05 Charles Wilson * libc/include/locale.h: add LC_MESSAGES definition 2001-02-01 Alexandre Oliva * libc/sys/sh/sys/syscall.h (SYS_get_argc, SYS_get_argN_len, SYS_get_argN): * libc/sys/sh/syscalls.c (__setup_argv_for_main, __setup_argv_and_call_main): New. 2001-01-31 Jeff Johnston * libc/include/stdio.h (FILENAME_MAX): Changed to use __FILENAME_MAX__ if defined. (FOPEN_MAX): Changed to use __FOPEN_MAX__ if defined. (L_tmpnam): Changed to use __L_tmpnam__ if defined. * libc/include/sys/config.h: Changed to set __FILENAME_MAX__ appropriately for Cygwin and RTEMS so not to exceed PATH_MAX. Mon Jan 29 23:03:06 2001 Christopher Faylor * libc/stdlib/mallocr.c: Undefine windows preprocessor variables when compiling under Cygwin. 2001-01-29 Jeff Johnston * libc/include/math.h (signgam): Change to errno-like solution using a function to return the address of the real signgam. * libc/reent/signgam.c: New file containing __signgam(). * libc/reent/Makefile.am: Added signgam.c to list of files. * libc/reent/Makefile.in: Regenerated. 2001-01-25 Alexandre Oliva * libc/sys/sh/syscalls.c (_times): New. * configure.host (sh*-*-*): Add -DHAVE_GETTIMEOFDAY to newlib_cflags. * libc/sys/sh/syscalls.c (_gettimeofday): New. 2001-01-23 Jeff Johnston * libc/include/math.h (signgam): Regress previous fix as it does not handle programs with extern int signgam in them. 2001-01-23 Jeff Johnston * libc/include/math.h (signgam): Changed to a macro refering to its location in the reentrant structure. 2001-01-23 Jeff Johnston * libc/stdio/vfprintf.c (_VFPRINTF_R): Modification to fix that suppressed . for %.0f, 0.1. Check now looks if there are padding zeroes (expt) in addition to any digits (ndig) to print. 2001-01-18 Jeff Johnston * libc/sys/arc/Makefile.am: New file. * libc/sys/arc/Makefile.in: Ditto. * libc/sys/arc/aclocal.m4: Ditto. * libc/sys/arc/configure: Ditto. * libc/sys/arc/configure.in: Ditto. * libc/sys/arc/crt0.S: Ditto. * libc/sys/arc/isatty.c: Ditto. * libc/sys/arc/mem-layout.c: Ditto. * libc/sys/arc/sbrk.c: Ditto. * libc/sys/arc/syscalls.c: Ditto. * libc/sys/arc/sys/syscall.h: Ditto. Wed Jan 17 23:20:56 2001 Christopher Faylor * libc/include/sys/unistd.h: Use correct declaration for setdtablesize. Fri Jan 12 00:34:31 2001 Christopher Faylor * libc/include/sys/signal.h: Add some SA_* defines for Cygwin. Thu Jan 11 20:42:06 2001 Earnie Boyd * libc/include/sys/features.h: __CYGWIN__ preferred over __CYGWIN32__ 2001-01-09 Nick Clifton * configure.host (v859): Remove unsupported compiler options. Fri Jan 5 19:57:00 EST 2001 Aaron J. Grier * src/newlib/configure.host (*-*-rtems*): add printf long long support for RTEMS. 2000-12-19 Graham Stott * libc/machine/xscale/memcmp.c (memcmp): Add clobber for "lr". Wed Dec 14 Jeff Johnston * configure.host: Turn on long double I/O for Cygwin. Wed Dec 14 Jeff Johnston * MAINTAINERS: Removed Ranjith. * NEWS: Updated for 1.9.0. * README: Updated. * acinclude.m4: Updated to release 1.9.0. * aclocal.m4 configure doc/aclocal.m4 doc/configure libc/aclocal.m4 libc/configure libc/machine/aclocal.m4 libc/machine/configure libc/machine/a29k/aclocal.m4 libc/machine/a29k/configure libc/machine/arm/aclocal.m4 libc/machine/arm/configure libc/machine/d10v/aclocal.m4 libc/machine/d10v/configure libc/machine/d30v/aclocal.m4 libc/machine/d30v/configure libc/machine/fr30/aclocal.m4 libc/machine/fr30/configure libc/machine/h8300/aclocal.m4 libc/machine/h8300/configure libc/machine/h8500/aclocal.m4 libc/machine/h8500/configure libc/machine/hppa/aclocal.m4 libc/machine/hppa/configure libc/machine/i386/aclocal.m4 libc/machine/i386/configure libc/machine/i960/aclocal.m4 libc/machine/i960/configure libc/machine/m32r/aclocal.m4 libc/machine/m32r/configure libc/machine/m68k/aclocal.m4 libc/machine/m68k/configure libc/machine/m88k/aclocal.m4 libc/machine/m88k/configure libc/machine/mips/aclocal.m4 libc/machine/mips/configure libc/machine/mn10200/aclocal.m4 libc/machine/mn10200/configure libc/machine/mn10300/aclocal.m4 libc/machine/mn10300/configure libc/machine/necv70/aclocal.m4 libc/machine/necv70/configure libc/machine/powerpc/aclocal.m4 libc/machine/powerpc/configure libc/machine/sh/aclocal.m4 libc/machine/sh/configure libc/machine/sparc/aclocal.m4 libc/machine/sparc/configure libc/machine/tic80/aclocal.m4 libc/machine/tic80/configure libc/machine/v850/aclocal.m4 libc/machine/v850/configure libc/machine/w65/aclocal.m4 libc/machine/w65/configure libc/machine/xscale/aclocal.m4 libc/machine/xscale/configure libc/machine/z8k/aclocal.m4 libc/machine/z8k/configure libc/sys/aclocal.m4 libc/sys/configure libc/sys/a29khif/aclocal.m4 libc/sys/a29khif/configure libc/sys/arm/aclocal.m4 libc/sys/arm/configure libc/sys/cygwin/aclocal.m4 libc/sys/cygwin/configure libc/sys/d10v/aclocal.m4 libc/sys/d10v/configure libc/sys/decstation/aclocal.m4 libc/sys/decstation/configure libc/sys/go32/aclocal.m4 libc/sys/go32/configure libc/sys/h8300hms/aclocal.m4 libc/sys/h8300hms/configure libc/sys/h8500hms/aclocal.m4 libc/sys/h8500hms/configure libc/sys/linux/aclocal.m4 libc/sys/linux/configure libc/sys/m88kbug/aclocal.m4 libc/sys/m88kbug/configure libc/sys/netware/aclocal.m4 libc/sys/netware/configure libc/sys/rtems/aclocal.m4 libc/sys/rtems/configure libc/sys/sh/aclocal.m4 libc/sys/sh/configure libc/sys/sparc64/aclocal.m4 libc/sys/sparc64/configure libc/sys/sun4/aclocal.m4 libc/sys/sun4/configure libc/sys/sysmec/aclocal.m4 libc/sys/sysmec/configure libc/sys/sysnec810/aclocal.m4 libc/sys/sysnec810/configure libc/sys/sysnecv850/aclocal.m4 libc/sys/sysnecv850/configure libc/sys/sysvi386/aclocal.m4 libc/sys/sysvi386/configure libc/sys/sysvnecv70/aclocal.m4 libc/sys/sysvnecv70/configure libc/sys/tic80/aclocal.m4 libc/sys/tic80/configure libc/sys/w65/aclocal.m4 libc/sys/w65/configure libc/sys/z8ksim/aclocal.m4 libc/sys/z8ksim/configure libm/aclocal.m4 libm/configure: Regenerated. Wed Dec 13 11:52:00 2000 Corinna Vinschen * libc/include/sys/unistd.h: Add declarations for `chroot' and `getwd' when __CYGWIN__ is defined. 2000-12-13 Jeff Johnston * libc/stdlib/ldtoa.c (_ldcheck): New routine that categorizes a long double as NaN, Infinity, or other. * libc/stdio/vfprintf.c [WANT_IO_LONG_DBL](_VFPRINTF_R): Removed isinfl and isnanl static routines which were i386-specific. Changed calls to the two removed routines to a single _ldcheck call. * libc/stdio/vfieeefp.h (ldieee): Fixed missing semi-colons. 2000-12-13 Jeff Johnston * Makefile.am: Fixed install-data-local target to use $(mkinstalldirs) for the installed header files to ensure the directories exist before copying. * Makefile.in: Regenerated. 2000-12-12 Jeff Johnston * libc/include/sys/unistd.h: Restored Cygwin _SC constants and moved new constants appropriately so Cygwin will build. 2000-12-11 Joel Sherrill * Merge RTEMS specific .h files into main libc/include. * libc/sys/rtems/include/signal.h: Removed. * libc/sys/rtems/include/time.h: Removed. * libc/sys/rtems/sys/features.h: Removed. * libc/sys/rtems/sys/sched.h: Removed. * libc/sys/rtems/sys/siginfo.h: Removed. * libc/sys/rtems/sys/signal.h: Removed. * libc/sys/rtems/sys/time.h: Removed. * libc/sys/rtems/sys/times.h: Removed. definitions for time_t and clock_t since these are no longer in time.h. * libc/include/pthread.h: New file. * libc/include/sys/sched.h: New file. * libc/include/sys/features.h: New file. * libc/include/time.h: Removed duplicate definition of clock_t and time_t, get them from instead. Add prototypes for POSIX clock and timer functionality. * libc/sys/linux/sys/types.h: Changed to include * libc/include/machine/types.h: Add _CLOCKID_T_ and _TIMER_T_. * libc/include/sys/signal.h: Add more complete set of POSIX signal functionality including real-time and threaded signals. * libc/include/sys/types.h: Add clock_t, time_t, struct timespec, and struct itimerspec. Centralizing these makes things cleaner. RTEMS uses 64-bit dev_t. Added numerous primitive definitions for pthreads including macros, pthread_attr_t, pthread_mutexattr_t, pthread_condattr_t, pthread_key_t, pthread_once_t, and pthread_t. * libc/include/sys/unistd.h: Added getlogin_r() prototype. If RTEMS follow POSIX on read(), write() and sbrk() prototype. Feature flags removed and moved to new file . Full set of POSIX sysconf() constants 2000-12-08 Werner Almesberger * configure.host: Added x86 linux target. * libc/unix/getpass.c (_PATH_PASSWD, _PASSWORD_LEN): Default definitions provided if not already defined. * libc/sys/linux/crt0.c: New file. * libc/sys/linux/Makefile.am: Ditto. * libc/sys/linux/Makefile.in: Ditto. * libc/sys/linux/aclocal.m4: Ditto. * libc/sys/linux/brk.c: Ditto. * libc/sys/linux/configure: Ditto. * libc/sys/linux/configure.in: Ditto. * libc/sys/linux/getoptlong.c: Ditto. * libc/sys/linux/ids.c: Ditto. * libc/sys/linux/inode.c: Ditto. * libc/sys/linux/io.c: Ditto. * libc/sys/linux/linux.c: Ditto. * libc/sys/linux/process.c: Ditto. * libc/sys/linux/realpath.c: Ditto. * libc/sys/linux/select.c: Ditto. * libc/sys/linux/signal.c: Ditto. * libc/sys/linux/systat.c: Ditto. * libc/sys/linux/termios.c: Ditto. * libc/sys/linux/time.c: Ditto. * libc/sys/linux/wait.c: Ditto. * libc/sys/linux/include/alloca.h: Ditto. * libc/sys/linux/include/getopt.h: Ditto. * libc/sys/linux/include/stdint.h: Ditto. * libc/sys/linux/include/unistd.h: Ditto. * libc/sys/linux/sys/cdefs.h: Ditto. * libc/sys/linux/sys/dirent.h: Ditto. * libc/sys/linux/sys/errno.h: Ditto. * libc/sys/linux/sys/fcntl.h: Ditto. * libc/sys/linux/sys/file.h: Ditto. * libc/sys/linux/sys/ioctl.h: Ditto. * libc/sys/linux/sys/resource.h: Ditto. * libc/sys/linux/sys/signal.h: Ditto. * libc/sys/linux/sys/stat.h: Ditto. * libc/sys/linux/sys/syscall.h: Ditto. * libc/sys/linux/sys/termios.h: Ditto. * libc/sys/linux/sys/time.h: Ditto. * libc/sys/linux/sys/types.h: Ditto. * libc/sys/linux/sys/utmp.h: Ditto. * libc/sys/linux/sys/utsname.h: Ditto. * libc/sys/linux/sys/wait.h: Ditto. 2000-12-08 Ralf Corsepius * Makefile.am: $(INSTALL), $(INSTALL_DATA), and $(INSTALL_PROGRAM) can be a relative path to $(top_srcdir)/install.sh so ensure the autoconf detected settings are properly passed recursively. Similarly, add AM_MAKEFLAGS to FLAGS_TO_PASS so they also get passed properly to subdirectories. * Makefile.in: Regenerated. 2000-12-07 Jay Kulpinski * libc/stdio/vfprintf.c: Minor modification to avoid requiring a floating point register unless really printing a floating point number. 2000-12-07 Jeff Johnston * libc/stdlib/ldtoa.c: Removed include of alloca.h. Also removed \r's. (asctoeg): Replaced alloca call with stack array and malloc when storage exceeds reasonable limit. (e53toe): Fixed einfin calls missing ldp parameter. (eiisinf): Hide behind check for LDBL_MANT_DIG == 64. 2000-12-06 Jeff Johnston * libc/stdio/vfscanf.c: Fix typo for _NO_LONGDBL macro. 2000-12-06 Jeff Johnston * libc/stdlib/Makefile.am: Added ldtoa.c to list of sources. * libc/stdlib/Makefile.in: Regenerated. * libc/stdio/floatio.h: Added suitable MAXEXP for long double. * libc/stdio/vfieeefp.h: Added long double bit structures. * libc/stdio/vfprintf.c[WANT_IO_LONG_DBL]: Added long double support. [WANT_IO_LONG_DBL](isinfl, isnanl): New static long double routines. (exponent): Changed expbuf to reasonable maximum instead of MAXEXP. * libc/stdio/vfscanf.c[WANT_IO_LONG_DBL]: Added long double support. * libc/stdlib/ldtoa.c: New file containing _ldtoa_r and _strtold routines used for conversions between character and long double. Wed Dec 6 12:01:00 2000 Corinna Vinschen * libc/include/stdlib.h: Add declarations for `mkstemp' and `mktemp'. 2000-12-04 Joel Sherrill * libc/include/machine/time.h: RTEMS systems can configure clock tick rate so use sysconf() to ask. 2000-12-04 Joel Sherrill * libc/include/sys/times.h: Add reference to POSIX standard. 2000-12-04 Joel Sherrill * libc/include/sys/time.h: Added BSD timer manipulation macros used by RTEMS code. 2000-12-04 Joel Sherrill * libc/sys/rtems/crt0.c: Add stubs for functions implicitly referenced by code generated by gcc 2.8.1. (a29k): Add stubs for V_SPILL, V_FILL, V_BSD_OS, V_EPI_OS to satisfy gcc. 2000-12-04 Joel Sherrill * libc/stdlib/system.c: Avoid compiling do_system() for RTEMS. 2000-12-04 Joel Sherrill * libc/include/ieeefp.h: Added entries for OpenCores CPUs. 2000-12-04 Joel Sherrill * configure.host (or16, or32): New entries for OpenCores OpenRisc CPUs. (*-*-rtems*): Add -DNO_EXEC. 2000-12-04 Keith Outwater * libc/include/sys/errno.h: Added comments on many error numbers. * libc/string/strerror.c: Added some more strings. 2000-11-30 Jeff Johnston * libc/sys/sh/syscalls.c (_link): New stub. 2000-11-29 Nick Clifton * configure.host: Add xscale target. * libc/machine/xscale: New directory. * libc/machine/xscale/Makefile.am: New file. * libc/machine/xscale/Makefile.in: New file. * libc/machine/xscale/aclocal.m4: New file. * libc/machine/xscale/configure: New file. * libc/machine/xscale/configure.in: New file. * libc/machine/xscale/memchr.S: New file. * libc/machine/xscale/memcmp.S: New file. * libc/machine/xscale/memcpy.S: New file. * libc/machine/xscale/memmove.S: New file. * libc/machine/xscale/memset.S: New file. * libc/machine/xscale/strchr.S: New file. * libc/machine/xscale/strcmp.S: New file. * libc/machine/xscale/strcpy.S: New file. * libc/machine/xscale/strlen.S: New file. Sat Nov 25 11:24:00 2000 Corinna Vinschen * libc/include/sys/types.h: Change i to `__i' in FD_ZERO macro to avoid compiler warnings. 2000-11-22 Michael Meissner * libc/posix/execl.c (execl): Don't reference environ directly, reference it only via a static pointer to avoid problems with some shared library systems and with different uses of small data where the user specifies his own version of environ. * libc/posix/execv.c (execv): Ditto. * libc/stdlib/getenv_r.c (_findenv_r): Ditto. * libc/stdlib/setenv_r.c (_setenv_r,_unsetenv_r): Ditto. * libc/stdlib/system.c (system, !cygwin32 case): Ditto. * libc/stdlib/getenv.c (environ): Delete unused reference to environ. * libc/stdlib/getenv_r.c: Make initial comment friendlier to emacs colorization. * libc/stdlib/system.c: Ditto. Tue Nov 21 20:32:21 2000 Christopher Faylor * libc/sys/cygwin/sys/dirent.h: Change definition to avoid necessity of including windows headers. 2000-11-20 Jeff Johnston * libc/include/sys/unistd.h: Removed definition of MAXNAMLEN. * libc/include/dirent.h: Added definition of MAXNAMLEN if not defined by sys/dirent.h. * libc/posix/execvp.c: Added include of dirent.h to get MAXNAMLEN value which used to be in unistd.h. Mon Nov 6 12:56:00 2000 Corinna Vinschen * libc/include/sys/types.h: Change type of i to `size_t' in FD_ZERO macro to avoid compiler warnings. Sun Oct 29 20:06:41 2000 Christopher Faylor * libc/include/stdlib.h: Avoid declaring cfree under Cygwin. * libc/include/malloc.h: Ditto. Also remove obsolete declaration. Tue Oct 24 20:16:00 2000 Corinna Vinschen * libc/include/sys/unistd.h: Add defines for sysconf values _SC_NPROCESSORS_CONF, _SC_NPROCESSORS_ONLN, _SC_PHYS_PAGES and _SC_AVPHYS_PAGES. Mon Oct 9 20:26:33 2000 Christopher Faylor * libc/include/sys/unistd.h: Add getdtablesize and setdtablesize declarations for __CYGWIN__. 2000-09-19 Geoffrey Keating * libc/signal/signal.c (__sigtramp_r): ISO C requires case labels to be integral constant expressions, so use an if/else tree instead. (_raise_r): Likewise. 2000-09-13 Jeff Johnston * libc/machine/v850/setjmp.S: Fixed tab problems caused by clipping patch from e-mail reader. 2000-09-13 Will Cohen * libc/machine/v850/setjmp.S (_setjmp): Save r1 rather than r0. Added return value 0. (_longjmp): Allow longjmp to return value of second argument passed to it. 2000-09-06 Jeff Johnston * libc/include/sys/types.h (FD_ZERO): Remove call to bzero and inline code to prevent having to include another header file. Wed Sep 6 15:06:40 2000 Christopher Faylor * Makefile.am: Fix space vs. tab problem in install-data-local. * Makefile.in: Regenerate. Wed Sep 6 13:49:51 2000 Christopher Faylor * libc/include/_ansi.h (_EXFUN): Define specially for __CYGWIN__. (_EXPARM): New macro for defining a function parameter. * libc/include/stdlib.h: Use _EXPARM. * libc/stdlib/mallocr.c: Don't build cfree for Cygwin. 2000-09-05 Manfred Hollstein * Makefile.am (install-data-local): Use optional $(DESTDIR) where required, as documented in the gnu coding standards. * Makefile.in: Regenerate. 2000-09-05 Jeff Johnston * libc/include/fcntl.h (_FNDELAY): Changed to be _FNONBLOCK to make O_NDELAY and O_NONBLOCK have the same value. 2000-08-30 Kazu Hirata * libc/sys/h8300hms/crt0.S: Optimize for both speed and code size. 2000-08-30 Werner Almesberger * libc/posix/execve.c: included unistd.h for "_execve" prototype. * libc/misc/unctrl.c libc/sys/sysvi386/crt0.c (sccsid): changed "#ifndef lint" to "#if defined(LIBC_SCCS) && !defined(lint)" like everywhere else. 2000-08-30 Geoffrey Keating * libc/string/swab.c: Specify that it's defined in . * libc/include/string.h: Don't include , as it causes really bad namespace pollution. Don't declare swab(), it is properly declared in unistd.h. 2000-08-29 Werner Almesberger * libc/unix/getpwent.c (getpwnam, getpwuid, getpwent): removed (broken) support for non-existent /etc/passwd field "comment". 2000-08-27 Werner Almesberger * libc/posix/scandir.c (DIRSIZ, scandir): use struct dirent.d_namlen only if _DIRENT_HAVE_D_NAMLEN is defined. (alphasort): aligned prototype with libc/sys/cygwin/sys/dirent.h and simplified function body. * libc/posix/telldir.c (telldir): changed "telldir" prototype to long telldir (DIR *) as mentioned in annex B of POSIX.1 2000-08-27 Werner Almesberger * libc/machine/i386/i386mach.h: added SOTYPE_FUNCTION to set type of global entry points if _I386MACH_NEED_SOTYPE_FUNCTION is defined; Added __CLI and __STI macros (controlled via _I386MACH_ALLOW_HW_INTERRUPTS macro). * libc/machine/i386/f_atan2.S libc/machine/i386/f_atan2f.S libc/machine/i386/f_frexp.S libc/machine/i386/f_frexpf.S libc/machine/i386/f_ldexp.S libc/machine/i386/f_ldexpf.S libc/machine/i386/f_log.S libc/machine/i386/f_log10.S libc/machine/i386/f_log10f.S libc/machine/i386/f_logf.S libc/machine/i386/f_tan.S libc/machine/i386/f_tanf.S libc/machine/i386/memchr.S libc/machine/i386/memcmp.S libc/machine/i386/memcpy.S libc/machine/i386/memmove.S libc/machine/i386/memset.S libc/machine/i386/setjmp.S libc/machine/i386/strchr.S libc/machine/i386/strlen.S: (that's libc/machine/i386/*.S) added SOTYPE_FUNCTION(symbol) for all global entry points. * libc/machine/i386/setjmp.S: removed code replicated in libc/machine/i386/i386mach.h and included i386mach.h instead; Use __CLI and __STI instead of cli and sti. 2000-08-25 DJ Delorie * libc/include/sys/unistd.h (environ): this one isn't from the DLL, no __IMPORT Fri Aug 25 13:37:11 2000 Christopher Faylor * libc/stdlib/system.c (do_system): Eliminate explicit declaration of environ when compiling under cygwin since it is already declared in unistd.h. 2000-08-23 Werner Almesberger * libc/stdlib/mprec.c (ulp, b2d, d2b): changed a few expressions like x << y-z to the equivalent x << (y-z). (d2b): changed if statements with assignment to perform the assignment prior to the if check. * libc/reent/reent.c: included stdlib.h for "_free_r" prototype. * libc/unix/getpass.c (getpass): moved "echo" assignment out of if. * libc/unix/ttyname.c: included string.h for "strcpy" prototype. * libc/unix/getcwd.c (ISDOT): added parentheses to clarify && and || precedence. * libc/include/sys/unistd.h: added "vfork" prototype (for popen.c). Added "_execve" prototype (for execl.c, execle.c, execv.c, and execve.c). * libc/posix/popen.c (popen): added parentheses to clarify && and || precedence. * libm/math/e_cosh.c (__ieee754_cosh): changed parentheses to clarify && and || precendence (and to remove pascalism). * libm/math/e_sinh.c (__ieee754_sinh): Ditto. * libm/math/s_infconst.c: added another pair of braces to all initializers for __infinity (need three: for __infinity[1] array, for union __dmath, and for i[2]). 2000-08-23 Werner Almesberger * libc/stdlib/abort.c: changed description: uses "raise" instead of "getpid" and "kill"; added: uses "write" and "_exit". Also included unistd.h for "_exit" prototype. * libc/stdlib/system.c: included unistd.h for "execve" prototype, reent.h for "_fork_r" and "_wait_r" prototypes. (do_system): changed extern char *environ[] to POSIX-friendly extern char **environ. * libc/stdlib/wctomb_r.c: included string.h for "strlen" and "strcmp" prototypes. * libc/stdlib/remove.c: included reent.h for "_unlink_r" prototype. * libc/reent/execr.c: included sys/wait.h for "wait" prototype. * libc/reent/fstatr.c: included sys/stat.h for "fstat" prototype. * libc/reent/openr.c: included fcntl.h for "open" prototype. * libc/reent/signalr.c: included signal.h for "kill" prototype, unistd.h for "getpid" prototype. * libc/reent/statr.c: included sys/stat.h for "stat" prototype. * libc/reent/timer.c: included sys/time.h for "gettimeofday" prototype. * libc/unix/getut.c (utmpname): removed local, incorrect "strdup" prototype. Also included stdlib.h for "abort", string.h for "strdup" and "strncmp" prototypes. * libc/unix/getlogin.c: included string.h for "strncmp", "memset", and "strncpy", unistd.h for "read" and "close" prototypes. * libc/posix/execvp.c: included string.h for "strchr", "strlen", and "strcat" prototypes. 2000-08-23 Werner Almesberger * libc/stdio/stdio.c (__swrite): declare "oldmode" only if it's used later (ifdef __SCLE) * libc/stdio/vfscanf.c (__svfscanf): declare "state" only if it's used later (ifdef MB_CAPABLE) * libc/string/memset.c (memset): removed unused variables "count" and "unaligned_addr" * libc/locale/locale.c (_setlocale_r): declare "lc_ctype" and "last_lc_ctype" only of they're used later (ifdef MB_CAPABLE) * libc/unix/getpwent.c (getpwnam): removed unused variables "uid" and "gid" 2000-08-23 Werner Almesberger * libc/stdlib/envlock.c: changed documented "__env_lock" and "__env_unlock" prototype from "void *" or "char *" to "struct _reent *" to match real function. Also added include of envlock.h. * libc/stdlib/mlock.c: changed documented "__malloc_lock" and "__malloc_unlock" prototype from "void *" or "char *" to "struct _reent *" to match real function. * libc/stdlib/envlock.h: added "__env_lock" and "__env_unlock" prototypes (for getenv_r.c and setenv_r.c). 2000-08-22 Werner Almesberger * libc/unix/getut.c (utmpname): added _CONST to reflect common use and prototype in cygwin's utmp.h 2000-08-16 Eric Fifer * libc/stdio/vfprintf.c (_vfprintf_r): suppress . with "%.0f", 0.1 2000-08-09 Nick Clifton * libc/sys/arm/setjmp.S: Recode to clean up function prologues and epilogue and to allow the functions to be used in a Thumb based toolchain. 2000-08-08 Jeff Johnston * libc/stdio/snprintf.c (snprintf, _snprintf_r): Fixed code so size of 0 results in nothing being written to string. Also fixed code so that when size is non-zero, there is only a maximum of size - 1 characters written to the array and a nul terminator is appended at the end. * libc/stdio/vsnprintf.c (vsnprintf, _vsnprintf_r): Ditto. 2000-08-01 DJ Delorie * libc/include/sys/config.h: define __IMPORT appropriately * libc/include/ctype.h (_ctype_): use __IMPORT * libc/include/math.h (__infinity, signam, _LIB_VERSION): ditto * libc/include/math.h (__mb_cur_max): ditto * libc/include/time.h (_timezone, _daylight, _tzname): ditto * libc/include/unctrl.h (__unctrl, __unctrllen): ditto * libc/include/errno.h (_sys_errlist, _sys_nerr): ditto * libc/include/unistd.h (environ): ditto 2000-07-28 Michael Meissner * libc/include/math.h (__infinity): Declare as an array without bounds to get around small data support. Rewrite Cygwin support to be more general. * libm/math/s_infconst.c (__infinity): Ditto. * libm/mathfp/s_infconst.c (__infinity): Ditto. Thu Jul 27 10:46:01 2000 Christopher Faylor * libc/include/math.h: Use appropriate dll import linkage for __infinity under Cygwin. 2000-07-13 DJ Delorie * libc/stdio/vfprintf.c: pad 0.0 correctly with %e Wed Jun 28 14:08:00 2000 Keith Walker * libc/sys/arm/crt0.S (.LC30): Added missing length parameter to argument list for AngelSWI_Reason_GetCmdLine. Tue Jun 27 15:49:00 2000 Marek Michalkiewicz * configure.host: Add support for AVR target. * libc/include/machine/ieeefp.h: Likewise. * libc/include/sys/config.h: Likewise. Thu Jun 22 18:35:00 2000 Ranjith Kumaran * README: Newlib 1.8.2 must be built in a separate directory than the sources. Tue Jun 20 14:30:00 2000 Jeff Johnston * libc/include/sys/reent.h (_rand_next): Added __extension__ qualifier as long long type is not strict ANSI. * libc/stdlib/rand.c (rand): Added __extension__ qualifier to long long constant. Fri Jun 16 23:02:00 2000 Corinna Vinschen * libc/include/sys/unistd.h: Add prototypes for `seteuid' and `setegid' provided by Cygwin. Thu Jun 15 0:21:00 2000 Corinna Vinschen * libc/stdio/fdopen.c: Take explicit given bin/textmode into account for Cygwin. Fri Jun 9 14:28:00 2000 Jeff Johnston * libc/include/sys/reent.h (_rand_next): Changed to unsigned long long and moved to end of _reent struct in _new union. (_REENT_INIT): Changed to move _rand_next initialization. * libc/stdlib/rand.c (rand): Changed to use unsigned long long linear congruential algorithm that is used by DJGPP. Thu Jun 8 21:18:00 2000 Ranjith Kumaran * libc/include/stdlib.h: Set RAND_MAX to __RAND_MAX. * libc/include/sys/config.h: Define __RAND_MAX. Thu Jun 8 17:54:00 2000 Jeff Johnston * libc/stdlib/rand_r.c: New algorithm that meets minimal standard. Fri Jun 2 23:02:11 2000 Christopher Faylor * libc/include/string.h: Work around problem with strsignal and gdb. Tue May 30 13:13:01 2000 Christopher Faylor * libc/include/ctype.h: __CYGWIN32__ -> __CYGWIN__ * libc/include/malloc.h: Ditto. * libc/include/process.h: Ditto. * libc/include/stdio.h: Ditto. * libc/include/stdlib.h: Ditto. * libc/include/time.h: Ditto. * libc/include/machine/setjmp.h: Ditto. * libc/include/sys/errno.h: Ditto. * libc/include/sys/signal.h: Ditto. * libc/include/sys/stat.h: Ditto. * libc/include/sys/time.h: Ditto. * libc/include/sys/unistd.h: Ditto. * libc/include/string.h: Ditto. strsignal should return a const char *. 2000-05-26 Marek Michalkiewicz * libm/common/s_expm1.c (expm1): Add curly braces, avoid warnings. * libm/common/s_log1p.c (log1p): Likewise. * libm/common/s_scalbn.c (scalbn): Likewise. * libm/math/e_log.c: Likewise. * libm/math/e_asin.c: Likewise. * libm/math/ef_asin.c: Likewise. * libm/math/e_j0.c (pzero, qzero): Remove redundant test. * libm/math/e_j1.c (pone, qone): Likewise. * libm/math/ef_j0.c (pzerof, qzerof): Likewise. * libm/math/ef_j1.c (ponef, qonef): Likewise. * libm/mathfp/e_j0.c (pzero, qzero): Likewise. * libm/mathfp/e_j1.c (pone, qone): Likewise. * libm/mathfp/ef_j0.c (pzerof, qzerof): Likewise. * libm/mathfp/ef_j1.c (ponef, qonef): Likewise. 2000-05-19 DJ Delorie * libc/stdio/stdio.c (__stextmode): new, see if file is text mode (__sread): always read in binary mode (__swrite): always write in binary mode * libc/include/stdio.h: no getc/putc macros for cygwin; causes compatibility issues with different dll versions * libc/stdio/fopen.c: use __stextmode * libc/stdio/fdopen.c: ditto * libc/stdio/freopen.c: ditto * libc/stdio/findfp.c: set up __SCLE for std{in,out,err} * libc/stdio/local.h: declare __stextmode 2000-05-18 DJ Delorie * libc/stdio/fgets.c (fgets): perform CRLF conversions if __SCLE Mon May 15 18:54:00 2000 Jeff Johnston * libc/include/ctype.h: Changed tolower and toupper macros to use __extension__ to prevent pedantic warnings. Mon May 15 14:26:00 2000 Joel Sherrill * libc/sys/rtems/sys/time.h: Add macros for manipulating timeval structures. Wed May 10 19:24:53 2000 Jim Wilson * libc/include/machine/ieeefp.h: Add ia64 support. * configure.host: Likewise. Wed May 10 13:52:24 2000 Egor Duda * libc/time/asctime_r.c (asctime_r): Change output format. Day of month is now padded with space, not zero. This now conforms to ANSI standard. Wed May 03 17:57:00 2000 Corinna Vinschen * libc/include/sys/errno.h: Add define for ENOSHARE ("No such host or network path") used by cygwin. Add some comments. Tue May 02 23:45:48 2000 DJ Delorie * libc/include/stdio.h (FILE): define __SCLE for "convert line endings" for Cygwin. (__sgetc): convert line endings if needed (__sputc): ditto * libc/stdio/fdopen.c (_fdopen_r): Remember if we opened in text mode * libc/stdio/fopen.c (_fopen_r): ditto * libc/stdio/freopen.c (freopen): ditto * libc/stdio/fread.c (fread): perform CRLF conversions if __SCLE * libc/stdio/fvwrite.c (__sfvwrite): ditto Thu Apr 27 07:45:48 2000 Alexandre Oliva * libc/machine/mn10300/setjmp.S (setjmp, longjmp): Use post-increment when it is worth it, spacewise. Mon Apr 17 12:46:00 2000 Marek Michalkiewicz * libc/signal/signal.c (_signal_r) : Removed unused local variable temp. * libc/stdio/findfp.c (std): Added declaration of flags and file. * libc/stdio/mktemp.c (_gettemp, _mkstemp_r, mkstemp): Added int return type. * libc/stdio/putchar.c (putchar): Added return statement. * libc/stdio/refill.c (lflush): Added correct parentheses. * libc/stdio/vfprintf.c (_VFPRINTF_R): Ditto. * libc/stdio/vfscanf.c (__svfscanf): Changed sprintf call which prints long value to use l qualifier. * libc/stdlib/dtoa.c (_dtoa_r): Added parentheses to remove warning messages and initialized local values: ilim, ilim1, and spec_case. * libc/stdlib/ecvtbuf.c (print_e): Removed unused variable dp. * libc/stdlib/mbctype.h (_issjis1, _issjis2): Added parentheses. * libc/stdlib/mprec.c: Ditto. * libc/stdlib/setenv_r.c: Ditto. * libc/stdlib/strtod.c: Ditto. * libc/stdlib/strtol.c: Ditto. * libc/stdlib/strtoul.c: Ditto. * libm/common/sf_expm1.c: Added curly braces to if else clauses. * libm/common/sf_log1p.c: Ditto. * libm/common/sf_scalbn.c: Ditto. * libm/math/ef_log.c: Ditto. Sun Apr 16 12:45:00 2000 Corinna Vinschen * libc/posix/execvp.c (execvp): Check path for trailing slash. Fri Mar 31 20:39:00 2000 Corinna Vinschen * libc/include/sys/unistd.h: Add prototypes for fchmod, fchown, lchown. Fri Mar 24 15:34:00 2000 Jeff Johnston * acinclude.m4: Changed release to 1.8.2. * aclocal.m4 configure doc/aclocal.m4 doc/configure libc/aclocal.m4 libc/configure libc/machine/aclocal.m4 libc/machine/configure libc/machine/a29k/aclocal.m4 libc/machine/a29k/configure libc/machine/arm/aclocal.m4 libc/machine/arm/configure libc/machine/d10v/aclocal.m4 libc/machine/d10v/configure libc/machine/d30v/aclocal.m4 libc/machine/d30v/configure libc/machine/fr30/aclocal.m4 libc/machine/fr30/configure libc/machine/h8300/aclocal.m4 libc/machine/h8300/configure libc/machine/h8500/aclocal.m4 libc/machine/h8500/configure libc/machine/hppa/aclocal.m4 libc/machine/hppa/configure libc/machine/i386/aclocal.m4 libc/machine/i386/configure libc/machine/i960/aclocal.m4 libc/machine/i960/configure libc/machine/m32r/aclocal.m4 libc/machine/m32r/configure libc/machine/m68k/aclocal.m4 libc/machine/m68k/configure libc/machine/m88k/aclocal.m4 libc/machine/m88k/configure libc/machine/mips/aclocal.m4 libc/machine/mips/configure libc/machine/mn10200/aclocal.m4 libc/machine/mn10200/configure libc/machine/mn10300/aclocal.m4 libc/machine/mn10300/configure libc/machine/necv70/aclocal.m4 libc/machine/necv70/configure libc/machine/powerpc/aclocal.m4 libc/machine/powerpc/configure libc/machine/sh/aclocal.m4 libc/machine/sh/configure libc/machine/sparc/aclocal.m4 libc/machine/sparc/configure libc/machine/tic80/aclocal.m4 libc/machine/tic80/configure libc/machine/v850/aclocal.m4 libc/machine/v850/configure libc/machine/w65/aclocal.m4 libc/machine/w65/configure libc/machine/z8k/aclocal.m4 libc/machine/z8k/configure libc/sys/aclocal.m4 libc/sys/aclocal.m4 libc/sys/configure libc/sys/a29khif/aclocal.m4 libc/sys/a29khif/configure libc/sys/arm/aclocal.m4 libc/sys/arm/configure libc/sys/cygwin/aclocal.m4 libc/sys/cygwin/configure libc/sys/d10v/aclocal.m4 libc/sys/d10v/configure libc/sys/decstation/aclocal.m4 libc/sys/decstation/configure libc/sys/go32/aclocal.m4 libc/sys/go32/configure libc/sys/h8300hms/aclocal.m4 libc/sys/h8300hms/configure libc/sys/h8500hms/aclocal.m4 libc/sys/h8500hms/configure libc/sys/m88kbug/aclocal.m4 libc/sys/m88kbug/configure libc/sys/netware/aclocal.m4 libc/sys/netware/configure libc/sys/rtems/aclocal.m4 libc/sys/rtems/configure libc/sys/sh/aclocal.m4 libc/sys/sh/configure libc/sys/sparc64/aclocal.m4 libc/sys/sparc64/configure libc/sys/sun4/aclocal.m4 libc/sys/sun4/configure libc/sys/sysmec/aclocal.m4 libc/sys/sysmec/configure libc/sys/sysnec810/aclocal.m4 libc/sys/sysnec810/configure libc/sys/sysnecv850/aclocal.m4 libc/sys/sysnecv850/configure libc/sys/sysvi386/aclocal.m4 libc/sys/sysvi386/configure libc/sys/sysvnecv70/aclocal.m4 libc/sys/sysvnecv70/configure libc/sys/tic80/aclocal.m4 libc/sys/tic80/configure libc/sys/w65/aclocal.m4 libc/sys/w65/configure libc/sys/z8ksim/aclocal.m4 libc/sys/z8ksim/configure libm/aclocal.m4 libm/configure: Regenerated. 2000-03-24 Nick Clifton * libc/sys/arm/syscalls.c: Fix compile time warnings. (do_AngelSWI): Add "cc" to list o registers clobbered. Thu Mar 22 14:57:00 2000 Fernando Nasser * libc/sys/arm/syscalls.c (do_AngelSWI): Prevent registers with valid information to be clobbered by an Angel C library support syscall. Tue Mar 21 19:08:00 2000 Jeff Johnston * libc/stdlib/envlock.c: Fixed comment typo. Fri Mar 17 15:37:00 2000 Jeff Johnston * libc/stdio/vfscanf.c (__svfscanf): Fixed floating point code to update nread as each character is processed instead of using buffer contents which throw away leading zeroes. Mon Mar 13 15:22:00 2000 Sergei Organov * libm/mathfp/sf_sqrt.c: Change _DOUBLE_IS_32BITS sqrt call to sqrtf. Fri Mar 10 16:09:20 2000 Jeff Johnston * libc/include/string.h: Include . Fri Mar 10 14:53:50 2000 Alexandre Oliva * libc/stdio/putw.c (putw): Return 0 on success, to be compliant with XSH5, not SVID. Thu Mar 9 17:20:41 2000 Jeff Johnston * libc/include/string.h: Changed last argument back to ssize_t to make it compatible with XPG4 definition which is defined in . There is a conflict in the SVID 3 and XPG4 definitions and newlib will settle with XPG4. * libc/string/swab.c: Ditto. Wed Mar 8 17:11:41 2000 Jeff Johnston * libc/include/string.h: Changed last argument to size_t. * libc/string/swab.c: Changed last argument to size_t. Wed Mar 8 00:46:41 2000 Alexandre Oliva * libc/reent/Makefile.am (lib_a_SOURCES): Added unlinkr.c. (CHEWOUT_FILES): Added unlinkr.def. * libc/reent/Makefile.in: Rebuilt. * libc/sys.tex: Include unlinkr.def. * libc/reent/linkr.c (_unlink_r): Moved to... * libc/reent/unlinkr.c: ... new file. Wed Mar 8 00:43:07 2000 Alexandre Oliva * libc/string/Makefile.am (lib_a_SOURCES): Added swab.c. (CHEWOUT_FILES): Added swab.def. * libc/string/Makefile.in: Rebuilt. * libc/string/string.tex: Include swab.def. * libc/include/string.h (swab): Declare. * libc/string/swab.c: New file. Wed Mar 8 00:38:35 2000 Alexandre Oliva * libc/stdio/Makefile.am (lib_a_SOURCES): Added getw.c and putw.c. (CHEWOUT_FILES): Added getw.def and putw.def. * libc/stdio/Makefile.in: Rebuilt. * libc/stdio/stdio.tex: Include getw.def and putw.def. * libc/stdio/getw.c: New file. * libc/stdio/putw.c: New file. Fri Feb 25 14:50:50 2000 Jeff Johnston * libc/stdio/flags.c (__sflags): Added check that mode[1] is non-null before looking at mode[2]. Thu Feb 24 11:43:00 2000 Ran Cabell * libm/mathfp/sf_atan2.c: Fix atan2 typo for _DOUBLE_IS_32_BITS. * libm/mathfp/sf_atan.c: Ditto. Thu Feb 24 11:39:00 2000 Joel Sherrill * libc/include/sys/stat.h: Add RTEMS prototype for lstat. Tue Feb 22 14:37:00 2000 Ran Cabell * libm/mathfp/sf_exp.c: Corrected _DOUBLE_IS_32_BITS to be _DOUBLE_IS_32BITS. Mon Feb 21 11:43:50 2000 Jeff Johnston * libc/stdio/vfprintf.c (VFPRINTF): Added CHECK_INIT call prior to calling _VFPRINTF_R so reentrant data area is set. (_VFPRINTF_R): Removed now extraneous CHECK_INIT call. Thu Feb 17 01:42:50 2000 J"orn Rennecke * libc/stdio/vfscanf.c (limits.h): #include. (MAX_LONG_LEN): #define. (__svfscanf): Handle floating point numbers with arbitrary amounts of leading zeroes. 2000-02-15 Nick Clifton * libc/sys/arm/syscalls.c (_fstat): Initialise all fields to zero. Set the blocksize to 1024/ Thu Jan 20 18:57:00 2000 Fernando Nasser * setvbuf.c (setvbuf): Set size to BUFSIZ when passed a zero size with line buffering. Mon Jan 10 18:43:00 2000 Jeff Johnston * acinclude.m4: Changed include directory for winsup headers. * aclocal.m4 configure libc/aclocal.m4 libc/configure libc/ctype/Makefile.in libc/errno/Makefile.in libc/locale/Makefile.in libc/machine/aclocal.m4 libc/machine/configure libc/machine/a29k/aclocal.m4 libc/machine/a29k/configure libc/machine/arm/aclocal.m4 libc/machine/arm/configure libc/machine/d10v/aclocal.m4 libc/machine/d10v/configure libc/machine/d30v/aclocal.m4 libc/machine/d30v/configure libc/machine/fr30/aclocal.m4 libc/machine/fr30/configure libc/machine/h8300/aclocal.m4 libc/machine/h8300/configure libc/machine/h8500/aclocal.m4 libc/machine/h8500/configure libc/machine/hppa/aclocal.m4 libc/machine/hppa/configure libc/machine/i386/aclocal.m4 libc/machine/i386/configure libc/machine/i960/aclocal.m4 libc/machine/i960/configure libc/machine/m32r/aclocal.m4 libc/machine/m32r/configure libc/machine/m68k/aclocal.m4 libc/machine/m68k/configure libc/machine/m88k/aclocal.m4 libc/machine/m88k/configure libc/machine/mips/aclocal.m4 libc/machine/mips/configure libc/machine/mn10200/aclocal.m4 libc/machine/mn10200/configure libc/machine/mn10300/aclocal.m4 libc/machine/mn10300/configure libc/machine/necv70/aclocal.m4 libc/machine/necv70/configure libc/machine/powerpc/aclocal.m4 libc/machine/powerpc/configure libc/machine/sh/aclocal.m4 libc/machine/sh/configure libc/machine/sparc/aclocal.m4 libc/machine/sparc/configure libc/machine/tic80/aclocal.m4 libc/machine/tic80/configure libc/machine/v850/aclocal.m4 libc/machine/v850/configure libc/machine/w65/aclocal.m4 libc/machine/w65/configure libc/machine/z8k/aclocal.m4 libc/machine/z8k/configure libc/misc/Makefile.in libc/posix/Makefile.in libc/reent/Makefile.in libc/signal/Makefile.in libc/string/Makefile.in libc/sys/aclocal.m4 libc/sys/configure libc/sys/a29khif/aclocal.m4 libc/sys/a29khif/configure libc/sys/arm/Makefile.in libc/sys/arm/aclocal.m4 libc/sys/arm/configure libc/sys/cygwin/aclocal.m4 libc/sys/cygwin/configure libc/sys/d10v/Makefile.in libc/sys/d10v/aclocal.m4 libc/sys/d10v/configure libc/sys/decstation/aclocal.m4 libc/sys/decstation/configure libc/sys/go32/aclocal.m4 libc/sys/go32/configure libc/sys/h8300hms/aclocal.m4 libc/sys/h8300hms/configure libc/sys/h8500hms/aclocal.m4 libc/sys/h8500hms/configure libc/sys/m88kbug/aclocal.m4 libc/sys/m88kbug/configure libc/sys/netware/aclocal.m4 libc/sys/netware/configure libc/sys/rtems/aclocal.m4 libc/sys/rtems/configure libc/sys/sh/Makefile.in libc/sys/sh/aclocal.m4 libc/sys/sh/configure libc/sys/sparc64/aclocal.m4 libc/sys/sparc64/configure libc/sys/sun4/aclocal.m4 libc/sys/sun4/configure libc/sys/sysmec/aclocal.m4 libc/sys/sysmec/configure libc/sys/sysnec810/aclocal.m4 libc/sys/sysnec810/configure libc/sys/sysnecv850/aclocal.m4 libc/sys/sysnecv850/configure libc/sys/sysvi386/aclocal.m4 libc/sys/sysvi386/configure libc/sys/sysvnecv70/aclocal.m4 libc/sys/sysvnecv70/configure libc/sys/tic80/aclocal.m4 libc/sys/tic80/configure libc/sys/w65/aclocal.m4 libc/sys/w65/configure libc/sys/z8ksim/aclocal.m4 libc/sys/z8ksim/configure libc/syscalls/Makefile.in libc/time/Makefile.in libc/unix/Makefile.in libm/aclocal.m4 libm/configure: Regenerated. Mon Jan 10 18:43:46 2000 Jeff Johnston * libc/stdlib/putenv_r.c (_putenv_r): New file. * libc/stdlib/strdup_r.c (_strdup_r): New file. * libc/include/string.h: Added _strdup_r. * libc/stdlib/putenv.c: Added call to reentrant version. * libc/stdlib/strdup.c: Ditto. * libc/stdlib/Makefile.am: Added _putenv_r and _unsetenv_r. * libc/include/stdlib.h: Ditto. * libc/stdlib/Makefile.in: Regenerated. * libc/string/Makefile.in: Regenerated. * libc/stdlib/setenv.c: Added reentrant version of unsetenv. * libc/stdlib/setenv_r.c: Added unsetenv_r and changed memory management calls to reentrant versions. * libc/stdlib/wcstombs.c: Added #ifndef _REENT_ONLY wrapper. * libc/stdlib/wctomb.c: Ditto. * libc/stdlib/mblen.c: Ditto. * libc/stdlib/mbstowcs.c: Ditto. * libc/stdlib/mbtowc.c: Ditto. * libc/stdlib/getenv.c: Ditto. * libc/reent/reent.tex: Added references to _putenv_r, _setenv_r, and _strdup_r. Thu Jan 6 15:33:46 2000 Christopher Faylor patch from Corinna Vinschen * libc/sys/cygwin/sys/param.h: Define NGROUP_MAX as 16. Mon Jan 03 14:36:00 2000 Sergei Organov * libm/mathfp/s_atangent.c: Fix exponent calculation. * libm/mathfp/s_ldexp.c: Ditto. * libm/mathfp/sf_atangent.c: Ditto. * libm/mathfp/sf_ldexp.c: Ditto. Tue Dec 14 5:42:00 1999 Ranjith Kumaran * libc/machine/i960/setjmp.S: fix typo leaving .link_pix uncommented * libc/include/locale.h: define NULL to be 0. Tue Dec 7 15:41:45 1999 Jim Wilson * libc/sys/sh/syscalls.c (stack_ptr): Move definition before first function. Wed Dec 1 17:39:29 1999 Jeffrey A Law (law@cygnus.com) * libc/machine/mn10300/setjmp.S: Handle am33. 1999-11-26 Nick Clifton * libc/sys/arm/syscalls.c: Add function prototypes. (stack_ptr): Move declaration before function definitions. Sat Nov 20 17:13:00 1999 Ranjith Kumaran * NEWS: Updated version information. * README: Ditto. Tue Nov 09 12:19:21 1999 Jeff Johnston * libc/machine/i386/strchr.S: Fixed alignment test. Thu Oct 28 05:30:46 1999 Andrew Cagney * libc/sys/d10v/crt0.S (_start): Construct a real stack frame. Thu Oct 28 15:29:11 1999 Andrew Cagney * libc/sys/d10v/crt0.S (_start): Initialize both SPI and SPU ensuring that there is space between the two. Thu Oct 14 13:39:21 1999 Christopher Faylor * libc/stdio/flags.c: Conditionalize check for 't' for cygwin case only. 1999-10-08 Vadim Egorov * libc/include/stdlib.h: add ptsname, grantpt, unlockpt to cygwin section Sat Oct 2 02:02:00 MEST 1999 Ralf Corsepius * libc/machine/sh/asm.h: Added __SH4_SINGLE__ to DELAYED_BRANCHES * libc/machine/sh/memcpy.S: Fix line wrapping in SL macro Fri Oct 1 13:17:59 CDT 1999 * libc/include/grp.h: Added getgrnam_r and getgrgid_r prototypes per POSIX 1003.1b. * libc/include/pwd.h: Added getpwnam_r and getpwuid_r prototypes per POSIX 1003.1b. 1999-09-13 DJ Delorie * libc/stdio/mktemp.c (_gettemp): on cygwin, check for EACCESS also. Thu Sep 9 15:31:00 1999 Jeff Johnston * setvbuf.c (setvbuf): When mallocing a buffer of size BUFSIZ, also note BUFSIZ as its size. Tue Sep 7 17:15:00 1999 Joel Sherrill * configure.host: Corrected feature defines for RTEMS. * libc/include/sys/stat.h: Added protototype for RTEMS mknod. * libc/include/sys/stat.h: mkfifo() should take const path arg. * libc/include/sys/unistd.h: pathconf() should take const path arg. Enabled usleep(), ftruncate(), and truncate() prototypes for RTEMS. Added defines for _POSIX_JOB_CONTROL, _POSIX_SAVED_IDS, and _POSIX_VERSION for RTEMS. Added defines for _PC_ASYNC_IO, _PC_PRIO_IO, and _PC_SYNC_IO. * libc/machine/m68k/Makefile.am: Added strcpy.c and strlen.c. * libc/machine/m68k/Makefile.in: Regenerated. * libc/machine/m68k/strcpy.c: New file. * libc/machine/m68k/strlen.c: New file. * libc/stdio/tmpnam.c: Always make the returned name usable. * libc/sys/rtems/crt0.c: New version that passes all autoconf tests. * libc/sys/rtems/sys/dirent.h: New file. * libc/sys/rtems/sys/types.h: Added dev_t. Tue Sep 7 17:15:00 1999 Jay Kulpinski * libc/stdlib/mprec.c: Fixed unitialized variable problem. Fri Sep 3 12:35:20 1999 Jeff Johnston * libc/stdio/ftell.c (ftell): Backing off Joern's fix and my patch. Thu Sep 2 22:05:20 1999 Christopher Faylor patch from Jeff Johnston * libc/stdio/ftell.c (ftell): Avoid using buffer position when the buffer is not in a useful state. 1999-09-01 Nick Clifton * libc/sys/arm/syscalls.c (_link): Add stub. Fri Aug 27 23:09:09 1999 J"orn Rennecke * ftell.c (ftell): Use actual position within buffer for text mode. * findfp.c (std): Initialize ptr->_bf._size. Wed Aug 18 18:48:02 1999 Christopher Faylor * libc/include/sys/unistd.h: Add nice() declaration. 1999-08-09 Nick Clifton * libc/sys/arm/crt0.S (change_mode): Rename to __change_mode and declare as a thumb function so that the disassembler will see the mode change. Thu Aug 5 17:37:00 1999 Ranjith Kumaran * libc/reent/reent.tex: Updated list of reentrant functions. 1999-07-09 Michael Meissner * libc/include/stdlib.h (_findenv{,_r}): Add prototypes. Tue Jul 6 10:46:24 1999 Jeff Johnston * libc/stdio/sprintf.c: Moved snprintf and _snprintf_r to separate file. * libc/stdio/snprintf.c: New file. * libc/stdio/vsprintf.c: Moved vsnprintf and _vsnprintf_r to separate file. * libc/stdio/vsnprintf.c: New file. * libc/stdio/Makefile.am: Added snprintf.c and vsnprintf.c. * libc/stdio/Makefile.in: Regenerated. Mon Jul 5 14:43:24 1999 Christopher Faylor Patch submitted by Egor Duda : * libc/include/stdio.h: Add declarations for *nprintf. * libc/stdio/sprintf.c (snprintf): New function. (_snprintf_r): New function. * libc/stdio/vsprintf.c (vsnprintf): New function. (_vnsprintf_r): New function. Wed Jun 30 16:36:27 1999 Jeff Johnston * libc/Makefile.am (stmp-targetdep): Remove extraneous blank. * libm/Makefile.am (stmp-targetdep): Ditto. * libc/Makefile.in: Regenerated. * libm/Makefile.in: Ditto. Fri Jun 25 10:49:27 1999 Jeff Johnston * libc/Makefile.am (stmp-targetdep): Ignore "." in SUBDIRS. * libm/Makefile.am (stmp-targetdep): Ditto. * libc/Makefile.in: Regenerated. * libm/Makefile.in: Ditto. Thu June 03 16:25:00 1999 Jeff Johnston * Makefile.am: Removed dependencies on all-recursive and added "." to the SUBDIRS list to prevent infinite recursion from occurring. Also removed any references to EXTRA_DATA. * libc/Makefile.am: Ditto. * libc/machine/Makefile.am: Ditto. * libc/machine/i386/Makefile.am: Ditto. * libm/Makefile.am: Ditto. * libc/sys/Makefile.am: Ditto. * Makefile.in: Regenerated. * aclocal.m4: Ditto. * configure: Ditto. * doc/Makefile.in: Ditto. * doc/aclocal.m4: Ditto. * doc/configure: Ditto. * libc/Makefile.in: Ditto. * libc/aclocal.m4: Ditto. * libc/configure: Ditto. * libc/machine/Makefile.in: Ditto. * libc/machine/aclocal.m4: Ditto. * libc/machine/configure: Ditto. * libc/machine/mn10300/Makefile.in: Ditto. * libc/machine/mn10300/aclocal.m4: Ditto. * libc/machine/mn10300/configure: Ditto. * libc/sys/Makefile.in: Ditto. * libc/sys/aclocal.m4: Ditto. * libc/sys/configure: Ditto. * libm/Makefile.in: Ditto. * libm/aclocal.m4: Ditto. * libm/configure: Ditto. Thu June 03 16:20:00 1999 Ranjith Kumaran * libc/include/stdlib/stdlib.tex: Add link to env_lock. Fri May 28 17:09:00 1999 Ranjith Kumaran * libc/include/stdlib.h: Add reentrant routines. * libc/stdlib/Makefile.am: Add reentrant routines. * libc/stdlib/Makefile.in: Ditto. * libc/stdlib/envlock.c: New file. * libc/stdlib/envlock.h: New file. * libc/stdlib/getenv.c: Modify to call reentrant routine. * libc/stdlib/getenv_r.c: New file. * libc/stdlib/mblen.c: Modify to call reentrant routine. * libc/stdlib/mblen_r.c: New file. * libc/stdlib/setenv.c: Modify to call reentrant routine. * libc/stdlib/setenv_r.c: New file. * libc/stdlib/stdlib.tex: Add reentrant routines. Mon May 17 22:01:38 1999 Christopher Faylor * libc/include/sys/types.h: Define __MS_types__ whenever cygwin or win32. Sun May 16 16:02:41 1999 Christopher Faylor * libc/include/machine/ieeefp.h: Always default to little endian if Windows, regardless of architecture. * libc/include/machine/sethmp.h: Define JBLEN if CYGWIN regardless of architecture. Mon May 3 11:49:18 1999 Geoffrey Noer * libc/include/machine/setjmp.h: Accept CYGWIN define, even if _WIN32 isn't defined. Mon May 3 11:41:51 1999 Jeff Johnston * libm/common/s_rint.c (rint): Add volatile qualifier for intermediate value w. * libm/common/sf_rint.c (rintf): Ditto. Thu Apr 29 20:34:27 1999 Jeff Johnston * libc/sys/arm/syscalls.c (remap_handle): Added check to ensure that std streams are initialized before being referenced. 1999-04-27 Jason Molenda (jsm@bugshack.cygnus.com) * README: Update reference to newlib@cygnus.com new newlib@sourceware.cygnus.com address. Mon Apr 26 18:17:33 1999 Geoffrey Noer * libc/include/sys/types.h: Define MS_types if CYGWIN is defined. * libc/include/sys/fcntl.h: Define _O_BINARY et al if CYGWIN is defined, even if _WIN32 isn't defined. Sat Apr 24 19:59:55 1999 Christopher Faylor * libc/include/sys/fcntl.h: Correct _O_CREATE to _O_CREAT. Wed Apr 21 18:01:00 1999 Ranjith Kumaran * libc/include/sys/reent.h: Change Long and ULong to __Long and __ULong. * libc/stdlib/dtoa.c: Ditto. * libc/stdlib/mprec.c: Ditto. * libc/stdlib/mprec.h: Ditto. * libc/stdlib/strtod.c: Ditto. 1999-04-21 Nick Clifton * configure.host (mcore): Remove mcore machine directory. 1999-04-18 Nick Clifton * libc/include/machine/ieeefp.h: Add support for mcore target. * libc/include/machine/setjmp.h: Add support for mcore target. * configure.host: Add support for mcore target. 1999-04-13 Mark Salter * libc/sys/arm/libcfunc.c: Moved isatty to syscall.c * libc/sys/arm/syscalls.c: Added isatty. Wed Apr 07 16:06:04 1999 Jeff Johnston * libc/stdlib/ecvtbuf.c (fcvtbuf): Fixed code to properly insert zeroes after significant digits. Wed Mar 17 22:06:04 1999 Jeff Johnston * libc/stdio/vfprintf.c (cvt): Changed floating point cvt routine to use union used by dtoa to properly determine if the sign bit is on or not. * libc/stdio/vfieeefp.h: New file Wed Mar 17 17:35:04 1999 Jeff Johnston * aclocal.m4: Regenerated. * configure: Regenerated. Wed Mar 17 16:35:04 1999 Jeff Johnston * libc/machine/i386/Makefile.am (lib_a_SOURCES): Added missing f_tanf reference. * libc/machine/i386/Makefile.in: Regenerated. Tue Mar 16 14:56:36 1999 Jeff Johnston * acinclude.m4: Changed to work with new automake. * configure: Regenerated. * libc/machine/i386/aclocal.m4: Regenerated. * libc/machine/i386/configure: Regenerated. Tue Mar 16 13:55:36 1999 Corinna Vinschen * libc/sys/cygwin/sys/dirent.h: Add additional prototypes for telldir() and seekdir(). Rename unused structure element for use with these two routines. Fri Mar 12 19:11:58 1999 Jeff Johnston * libc/time/mktime.c (validate_structure): Multiple fixes to code to handle cases where input fields are outside valid ranges. * libc/stdlib/div.c (div): Modified invalid rounding check. * libc/stdlib/ldiv.c (ldiv): Ditto. Thu Mar 11 21:32:13 1999 Jeff Johnston * libc/machine/i386/memcpy.S: Performance rewrite. * libc/machine/i386/memmove.S: Ditto. * libc/machine/i386/i386mach.h: Added more register definitions. * libc/include/math.h: Include if -ffast-math option used. * libc/include/machine/fastmath.h: Add definitions for x86 fast-math routines. Wed Mar 10 17:56:00 1999 Ranjith Kumaran * libc/stdlib/strtod.c: Change from unsigned long to ULong. Tue Mar 9 14:31:58 1999 Geoffrey Noer Adjust newlib headers for new Cygwin Win32 API header files: * libc/include/sys/time.h: Check _WINSOCK_H rather than _GNU_H_WINDOWS32_SOCKETS. * libc/include/sys/types.h: Ditto. Tue Mar 09 15:55:00 1999 Ranjith Kumaran *include/sys/reent.h: Add checks for size of Bigint element Long. *libc/dtoa.c: Change routines to use generic Long type. *libc/mprec.c: Change routines to use generic Long type. *libc/mprec.h: Change routines to use generic Long type. Tue Mar 02 18:07:49 1999 Ranjith Kumaran * libc/Makefile.am: Add .def files. * libc/Makefile.in: Regenerate. * libc/e_acosh.c: Documentation update. * libc/e_atanh.c: Documentation update. * libc/e_hypot.c: Documentation update. * libc/e_remainder.c: Documentation update. * libc/er_lgamma.c: Documentation update. * libc/mathfp.tex: Documentation update. * libc/s_acos.c: Documentation update. * libc/s_atan.c: Documentation update. * libc/s_atan2.c: Documentation update. * libc/s_cosh.c: Documentation update. * libc/s_fmod.c: Documentation update. * libc/s_isnan.c: Documentation update. * libc/s_log10.c: Documentation update. * libc/s_pow.c: Documentation update. * libc/w_jn.c: Documentation update. Sun Feb 28 23:18:49 1999 Geoffrey Noer * aclocal.m4: Regenerate. * configure: Regenerate. Tue Feb 23 13:57:26 1999 Jeff Johnston * libc/machine/mn10300/setjmp.S (_longjmp): Fixed longjmp to return 1 if user specified return code is 0. * libc/machine/mn10200/setjmp.S (_longjmp): Ditto. Thu Feb 18 11:13:28 1999 Jeff Johnston * libc/machine/mn10200/setjmp.S (_setjmp/_longjmp): Fixed setjmp to save the return address. Fixed longjmp to return to the original calling address of setjmp and to return the user specified return code rather than default to 1. * libc/machine/mn10300/setjmp.S (_setjmp/_longjmp): Ditto. Mon Feb 15 17:48:17 1999 Jeff Johnston * libc/stdlib/mprec.h (mult): Define mult to be _multiply instead of _mult. 1999-02-10 Nick Clifton * libc/sys/arm/syscalls.c (initialise_monitor_handles): Make block volatile so that its assignments will not be discarded. Wed Feb 10 17:19:40 1999 Jeff Johnston * libc/include/_ansi.h: Corrected _STRICT_ANSI reference to be __STRICT_ANSI__ which is generated by compiler. * libc/include/ctype.h: Ditto. * libc/include/math.h: Ditto. * libc/include/stdio.h: Ditto. * libc/include/stdlib.h: Ditto. * libc/include/string.h: Ditto. * libc/include/sys/signal.h: Ditto. 1999-02-08 Nick Clifton * configure.host: Add support for StrongARM target. Fri Feb 5 11:13:14 1999 Jeff Johnston * libc/string/strncpy.c (strncpy): Removed redundant code that was copying bytes if data unaligned. 1999-02-02 Brendan Kehoe * libc/stdlib/Makefile.{am,in} (CHEWOUT_FILES): Add mblen.def, mbstowcs.def, and wcstombs.def. Sat Jan 30 02:36:33 1999 Christopher Faylor * libc/include/sys/errno.h: Add Cygwin errno. * libc/stdio/flags.c: Don't default to O_TEXT if no other flag is specified. 1999-01-29 Nick Clifton * libc/sys/arm/syscalls.c: Move C library functions into seperate file. * libc/sys/arm/libcfunc.c: New file containing C library functions from syscalls.c * libc/sys/arm/Makefile.am (lib_a_SOURCES): Add libcfuncs.c * libc/sys/arm/Makefile.in (lib_a_SOURCES): Regenerate. 1999-01-27 Michael Meissner * libc/include/machine/setjmp.h (D30V _JBLEN/_JBTYPE): Use double type, and cut size in half so that the jmp_buf array is guaranteed to be aligned on a 64-bit boundary. Mon Jan 25 12:05:38 1999 Jeff Johnston * libc/string/strings.tex: Added information about strcasecmp and strncasecmp. * libc/stdlib/stdlib.tex: Added missing information about mblen, mbstowcs, and wcstombs. * libc/string/strchr.c: Changed how mask is built to use shift operators so register will be used instead of storage. 1999-01-22 DJ Delorie * libc/include/stdlib.h: don't use dllimport if we're building newlib, since it's inside cygwin.dll Fri Jan 22 14:57:18 1999 Christopher Faylor * libc/ctype/ctype_.c: Need to use __declspec(dllexport) for _ctype_ under cygwin. Fri Jan 22 09:50:19 1999 Christopher Faylor * include/stdlib.h: Fix typo from previous checkin. Thu Jan 21 22:42:21 1999 Christopher Faylor * include/ctype.h: Use __declspec(dllimport) method for exporting variable from cygwin DLL. * include/time.h: Ditto. * sys/errno.h: Ditto. * include/stdlib.h: Export __mb_cur_max from cygwin DLL. * libc/locale/locale.c: Use __declspec(dllexport) method for exporting variable from cygwin DLL. Sat Jan 16 13:29:54 1999 Christopher Faylor * libc/stdio/setvbuf.c: Always clean up when _IONBF or possible access of bogus pointer will result in SIGSEGV. 1999-01-07 Nick Clifton * libc/sys/arm/setjmp.S: Use C macros to cope with the possibility of an underscore prefix to function names. Fri Jan 8 19:00:07 1999 Jeff Johnston * libc/machine/i386/i386mach.h (__REG_PREFIX__): Create new define __REG_PREFIX__ instead of using __REGISTER_PREFIX__. 1998-12-31 Michael Meissner * libc/machine/i386/i386mach.h (__REGISTER_PREFIX__): Only define to `%' if not already defined. 1998-12-30 Michael Meissner * libc/stdio/tmpnam.c (_tempnam_r): Make directory and prefix arguments const char *, not char *. * libc/include/stdio.h (_tempnam_r): Ditto. * libc/include/sys/reent.h (struct _reent): The _sig_func type points to a function taking an integer, not void. Tue Dec 29 14:35:53 1998 Christopher Faylor * configure.host: Add a define for Cygwin builds. * libc/include/ctype.h: Don't use dll imported variables in newlib. Mon Dec 28 09:19:56 1998 Christopher Faylor * libc/include/ctype.h: Define _ctype_ as dll imported variable for use with Cygwin. * libc/include/sys/errno.h: Define _sys_errlist and _sys_nerr as dll imported variables for use with Cygwin. * libc/ctype/ctype_.c: Undefine _ctype_ in case it has been defined as a dll imported variable for Cygwin. Sat Dec 26 00:13:53 1998 Christopher Faylor * libc/include/sys/unistd.h: Add proto for getpass. Fri Dec 18 19:28:19 1998 Geoffrey Noer * libc/sys/cygwin/sys/dirent.h: add protos for scandir and alphasort. Fri Dec 18 16:33:25 1998 Geoffrey Noer * libc/posix/execvp.c (execvp): call cygwin_posix_path_list_p, not posix_path_list_p. 1998-12-15 Nick Clifton * libc/string/memchr.c: Treat 'c' argument as an unsigned byte not a signed int. 1998-12-13 Nick Clifton * libc/include/machine/setjmp.h (_JBLEN): Set to 10. 1998-12-12 Nick Clifton * libc/machine/fr30/setjmp.S: New file, supplied by Mark Slater * libc/machine/fr30/Makefile.am: Add build of setjmp.S * libc/machine/fr30/Makefile.in: Regenerated. 1998-12-11 Nick Clifton * configure.host: Remove use of libc/sys for FR30 port. * libc/sys/fr30: Remove directory (replaced by libgloss). 1998-12-10 Ken Raeburn * libc/string/strcat.c (ALIGNED): Sense of result was reversed. * libc/string/strncat.c (ALIGNED): Ditto. Wed Dec 9 14:37:57 1998 Geoffrey Noer * libc/include/sys/time.h: include sys/types.h Tue Dec 8 15:53:18 1998 Jeff Johnston * libc/machine/i386/memcmp.S (memcmp): Fix for unequal comparison found when checking word at a time. 1998-12-04 Nick Clifton * libc/sys/fr30/crt0.s (_start): Initialise frame pointer. 1998-12-03 Nick Clifton * libc/sys/fr30/syscalls.c (_times): New function stub. Thu Dec 3 15:59:19 1998 Jeff Johnston * configure.host (mach_add_setjmp): Replaced mach_add_objs with mach_add_setjmp flag which indicates if setjmp should be added to the machine directory objects. * acinclude.m4: Removed reference to mach_add_objs. * aclocal.m4: Regenerated. * Makefile.in: Regenerated. * configure: Regenerated. * libc/aclocal.m4: Regenerated. * libc/Makefile.in: Regenerated. * libc/configure: Regenerated. * libc/machine/aclocal.m4: Regenerated. * libc/machine/Makefile.in: Regenerated. * libc/machine/configure: Regenerated. * libc/machine/i386/aclocal.m4: Regenerated. * libc/machine/i386/Makefile.am: Altered to selectively add setjmp.S to the src files list. * libc/machine/i386/Makefile.in: Regenerated. * libc/machine/i386/configure.in: Altered to test mach_add_setjmp. * libc/machine/i386/configure: Regenerated. 1998-12-02 Nick Clifton * libc/sys/fr30/crt0.s (_start): Fix function names. * libc/machine/fr30: New directory * libc/machine/fr30/Makefile.am: New file. * libc/machine/fr30/Makefile.in: New generated file. * libc/machine/fr30/configure.in: New file. * libc/machine/fr30/configure: New generated file. * libc/machine/fr30/aclocal.m4: New generated file. * libc/sys/fr30/Makefile.am: New file. * libc/sys/fr30/Makefile.in: New generated file. * libc/sys/fr30/configure.in: New file. * libc/sys/fr30/configure: New generated file. * libc/sys/fr30/syscalls.c: New file. Tue Dec 1 16:28:56 1998 Geoffrey Noer * libc/sys/cygwin/sys/utmp.h: new file, moved from winsup/include. 1998-12-01 Ken Raeburn * libc/time/strftime.c (strftime): Also handle %y for years before 1900. Tue Dec 1 13:26:07 1998 Christopher Faylor * libc/string/strcasecmp.c (strcasecmp): Adhere to standard UNIX convention. Perform tolower on characters before comparing them rather than use toupper. * libc/string/strncasecmp.c (strncasecmp): Ditto. Mon Nov 30 16:24:19 1998 Jeff Johnston * configure.host: Added using i386 machine directory for all x86 cross-compiler and configuring which added object files to use via new "mach_add_objs" variable. * configure: Regenerated. * libc/configure: Regenerated. * libc/Makefile.in: Regenerated. * libc/aclocal.m4: Regenerated. * libc/ctype/Makefile.in: Regenerated. * libc/errno/Makefile.in: Regenerated. * libc/locale/Makefile.in: Regenerated. * libc/machine/Makefile.in: Regenerated. * libc/machine/aclocal.m4: Regenerated. * libc/machine/configure: Regenerated. * libc/posix/Makefile.in: Regenerated. * libc/reent/Makefile.in: Regenerated. * libc/signal/Makefile.in: Regenerated. * libc/stdio/Makefile.in: Regenerated. * libc/stdlib/Makefile.in: Regenerated. * libc/string/Makefile.in: Regenerated. * libc/string/memmove.c: Optimized code to use memcpy logic when performing a non-destructive copy. * libc/string/strncmp.c: Altered code to allow building optimized for size or speed. * libc/syscalls/Makefile.in: Regenerated. * libc/time/Makefile.in: Regenerated. * libc/unix/Makefile.in: Regenerated. * libc/machine/i386/Makefile.am: Added new files and reference to "mach_add_objs" to indicate optional object files. * libc/machine/i386/Makefile.in: Regenerated. * libc/machine/i386/aclocal.m4: Regenerated. * libc/machine/i386/configure: Regenerated. * libc/machine/i386/memchr.S: New file that implements function in Intel assembler. * libc/machine/i386/memcmp.S: ditto. * libc/machine/i386/memcpy.S: ditto. * libc/machine/i386/memmove.S: ditto. * libc/machine/i386/memset.S: ditto. * libc/machine/i386/strchr.S: ditto. * libc/machine/i386/strlen.S: ditto. * libc/machine/i386/f_atan2.S: New file that implements fast version of math function to be used by compiler when --ffast_math compile option is used. * libc/machine/i386/f_atan2f.S: ditto. * libc/machine/i386/f_exp.c: ditto. * libc/machine/i386/f_expf.c: ditto. * libc/machine/i386/f_frexp.S: ditto. * libc/machine/i386/f_frexpf.S: ditto. * libc/machine/i386/f_ldexp.S: ditto. * libc/machine/i386/f_ldexpf.S: ditto. * libc/machine/i386/f_log.S: ditto. * libc/machine/i386/f_logf.S: ditto. * libc/machine/i386/f_log10.S: ditto. * libc/machine/i386/f_log10f.S: ditto. * libc/machine/i386/f_math.h: New file. * libc/machine/i386/f_pow.c: ditto. * libc/machine/i386/f_powf.S: ditto. * libc/machine/i386/f_tan.S: ditto. * libc/machine/i386/f_tan.S: ditto. * libc/machine/i386/i386mach.h: New file. Mon Nov 30 13:02:17 1998 Christopher Faylor patch from Mumit Khan * libc/include/stdio.h (tempnam): Add prototype. * libc/stdio/tmpnam.c (_tempnam_r): Handle NULL prefix. (tempnam): Adhere to prototype. Thu Nov 26 00:21:32 1998 Christopher Faylor * Makefile.am: Add default for AR_FLAGS. * Makefile.in: Regenerate. Tue Nov 24 18:48:56 1998 Geoffrey Noer * libc/include/time.h: move __cplusplus wrapper after includes * libc/include/sys/time.h: ditto. If Cygwin, include sys/select.h. * libc/include/sys/types.h: lose "32" in comment about Cygwin. 1998-11-23 Ken Raeburn * libc/time/strftime.c (strftime): Handle %y after year 2000. Wed Nov 18 12:22:41 1998 Nick Clifton * libc/sys/fr30/crt0.s (_start): Switch over to using int #9 as abnormnal end-of-crt0 marker. Tue Nov 17 16:27:58 1998 Nick Clifton * libc/sys/fr30/crt0.s: New file/directory. * libc/include/machine/setjmp.h: Add FR30 target. * libc/include/machine/ieeefp.h: Add FR30 target. * configure.host: Add FR30 target. Mon Nov 16 23:15:00 1998 Ranjith Kumaran * libm/math: Files that are duplicated in common directory removed. * libm/math/fdlibm.h: Removed. * libm/math/s_cbrt.c: Removed. * libm/math/s_copysign.c: Removed. * libm/math/s_expm1.c: Removed. * libm/math/s_finite.c: Removed. * libm/math/s_ilogb.c: Removed. * libm/math/s_infinity.c: Removed. * libm/math/s_lib_ver.c: Removed. * libm/math/s_log1p.c: Removed. * libm/math/s_logb.c: Removed. * libm/math/s_matherr.c: Removed. * libm/math/s_modf.c: Removed. * libm/math/s_nan.c: Removed. * libm/math/s_nextafter.c: Removed. * libm/math/s_rint.c: Removed. * libm/math/s_scalbn.c: Removed. * libm/math/sf_cbrt.c: Removed. * libm/math/sf_copysign.c: Removed. * libm/math/sf_expm1.c: Removed. * libm/math/sf_finite.c: Removed. * libm/math/sf_ilogb.c: Removed. * libm/math/sf_infinity.c: Removed. * libm/math/sf_log1p.c: Removed. * libm/math/sf_logb.c: Removed. * libm/math/sf_modf.c: Removed. * libm/math/sf_nan.c: Removed. * libm/math/sf_nextafter.c: Removed. * libm/math/sf_rint.c: Removed. * libm/math/sf_scalbn.c: Removed. * libm/math/Makefile.am: Removed references to deleted files (above). * libm/math/Makefile.in: Regenerated. * libm/Makefile.am: Added common directory to math. * libm/Makefile.in: Regenerated. Mon Nov 2 23:12:00 1998 Ranjith Kumaran * libm/mathfp: Add non-ANSI functions. * libm/mathfp/e_acosh.c acosh(): New file. * libm/mathfp/e_atanh.c atanh(): New file. * libm/mathfp/e_hypot.c hypot(): New file. * libm/mathfp/e_j0.c j0(): New file. * libm/mathfp/e_j1.c j1(): New file. * libm/mathfp/e_remainder.c remainder(): New file. * libm/mathfp/e_scalb.c scalb(): New file. * libm/mathfp/ef_acosh.c acoshf(): New file. * libm/mathfp/ef_atanh.c atanhf(): New file. * libm/mathfp/ef_hypot.c hypotf(): New file. * libm/mathfp/ef_j0.c j0f(): New file. * libm/mathfp/ef_j1.c j1f(): New file. * libm/mathfp/ef_remainder.c remainderf(): New file. * libm/mathfp/ef_scalb.c scalbf(): New file. * libm/mathfp/er_gamma.c gamma_r: New file. * libm/mathfp/er_lgamma.c lgamma_r(): New file. * libm/mathfp/erf_gamma.c gamma_rf(): New file. * libm/mathfp/erf_lgamma.c lgamma_rf(): New file. * libm/mathfp/w_cabs.c cabs(): New file. * libm/mathfp/w_drem.c drem(): New file. * libm/mathfp/w_jn.c jn(): New file. * libm/mathfp/wf_cabs.c cabsf(): New file. * libm/mathfp/wf_drem.c dremf(): New file. * libm/mathfp/wf_jn.c jnf(): New file. Mon Nov 2 16:43:18 1998 Geoffrey Noer * libc/sys/cygwin32: remove directory and contents * libc/sys/cygwin: and add back, losing the "32". * configure.host: check for cygwin* instead of cygwin32. * acinclude.m4: ditto. * aclocal.m4: regenerate with aclocal * configure: regenerate with autoconf Tue Oct 20 17:28:28 1998 Geoffrey Noer * libc/stdio/tmpnam.c (_tempnam_r): not enough memory allocated for length Tue Oct 20 18:49:05 1998 Jeff Johnston * libc/include/sys/reent.h (struct _reent): Added variables _rand_next, _strtok_last, _asctime_buf, _localtime_buf and _gamma_signgam to struct reent to make rand/srand, strtok, asctime, localtime, w_gamma, w_lgamma, wf_gamma, and wf_lgamma reentrant. Included time.h to bring in struct tm definition. * libc/stdlib/rand.c (rand, srand): Don't emit functions 'rand' and 'srand' if '_REENT_ONLY' is set. Used variable '_rand_next' from struct reent. * libc/stdlib/strtok.c (strtok): Used variable '_strtok_last' from struct reent instead of static variable. * libc/stdlib/asctime.c (asctime): Used variable '_asctime_buf' from struct reent instead of static variable. * libc/stdlib/lcltime.c (localtime): Used variable '_localtime_buf' from struct reent instead of static variable. * libm/math/Makefile.am: Removed s_signgam.o. * libm/math/Makefile.in: Regenerated. * libm/math/w_gamma.c (gamma): Used variable '_gamma_signgam' from struct reent instead of global variable 'signgam'. * libm/math/w_lgamma.c (lgamma): Likewise. * libm/math/wf_gamma.c (gammaf): Likewise. * libm/math/wf_lgamma.c (lgammaf): Likewise. * libm/math/s_signgam.c: Removed. * libc/include/unctrl.h: Defined arrays __unctrl and __unctrllen to be const. * libc/misc/unctrl.c: Defined arrays __unctrl and __unctrllen to be const. * libc/reent/Makefile.am: Added dependence for impure.o on impure.c and libc/include/reent.h. * libc/reent/Makefile.in: Regenerated. * libc/stdio/vfprintf.c (_vfprintf_r): Defined arrays 'blanks' and 'zeroes' to be const. * libc/stdlib/mbtowc_r.c (_mbtowc_r): Defined arrays 'JIS_state_table' and 'JIS_action_table' to be const. * libm/math/s_lib_ver.c: define variable _LIB_VERSION to be const. Mon Oct 12 00:26:33 1998 Christopher Faylor * acinclude.m4: $with_target_subdir should default to '.' or confusion results when configuring in same directory as sources. * Regenerate all aclocal.m4 and configure files. Fri Oct 9 16:27:36 1998 Jeff Johnston * libc/stdlib/mallocr.c: Added 16 byte alignment support which can be set by defining MALLOC_ALIGNMENT=16. Also added support for platforms where sizeof(size_t) < sizeof(long) via SIZE_T_SMALLER_THAN_LONG macro. Wed Oct 7 14:02:40 1998 Jeff Johnston * libc/include/time.h (CLOCKS_PER_SEC): Change CLOCKS_PER_SEC to refer to _CLOCKS_PER_SEC_ and added including which sets _CLOCKS_PER_SEC_ for selected machines. * libc/include/machine/time.h: New file. Tue Oct 6 16:08:05 1998 Jeff Johnston * libc/syscalls/sysexecve.c: New file. * libc/syscalls/sysgettod.c: New file. * libc/syscalls/systimes.c: New file. * libc/syscalls/Makefile.am: Added new objects. * libc/syscalls/Makefile.in: Regenerated. * libc/include/_syslist.h (_execve): Moved define in file. * libc/include/reent.h: Added _execve_r declaration. * libc/Makefile.in: Regenerated. * libc/ctype/Makefile.in: Regenerated. * libc/errno/Makefile.in: Regenerated. * libc/locale/Makefile.in: Regenerated. * libc/machine/Makefile.in: Regenerated. * libc/misc/Makefile.in: Regenerated. * libc/posix/Makefile.in: Regenerated. * libc/reent/Makefile.in: Regenerated. * libc/reent/execr.c (_execve_r): Added _execve_r function. * libc/signal/Makefile.in: Regenerated. * libc/stdio/Makefile.in: Regenerated. * libc/time/Makefile.in: Regenerated. * libc/unix/Makefile.in: Regenerated. * libm/mathfp/Makefile.in: Regenerated. Tue Oct 6 14:14:05 1998 Jeff Johnston * libc/string/Makefile.in: Regenerated. * libc/string/memchr.c (memchr): Moved code to reduce object size. * libc/string/memcpy.c (memcpy): Ditto. * libc/string/memcmp.c (memcmp): Ditto. * libc/string/memset.c (memset): Ditto. * libc/string/strchr.c (strchr): Ditto. * libc/string/strcmp.c (strcmp): Ditto. * libc/string/strcpy.c (strcpy): Ditto. * libc/string/strlen.c (strlen): Ditto. Tue Oct 6 13:58:05 1998 Jeff Johnston * libm/acinclude.m4: Removed since newlib/acinclude.m4 can be used to generate aclocal.m4. * libm/Makefile.in: Regenerated. * libm/aclocal.m4: Regenerated. * libm/configure: Regenerated. * libm/math/Makefile.in: Regenerated. * libm/mathfp/Makefile.in: Regenerated. 1998-09-25 Mark Salter * libc/include/machine/setjmp.h: Fixed test for mn10300 and mn10200 by adding leading and trailing underscores to symbol names. Tue Sep 22 15:33:41 1998 Christopher Faylor * Makefile.in: Add default for AR_FLAGS. Tue Sep 22 15:02:49 1998 Christopher Faylor patch from ian@airs.com (Ian Taylor): * acinclude.m4: Run AC_CANONICAL_BUILD explicitly before NEWLIB_CONFIGURE so AC_CANONICAL_HOST will be run before it is needed for detecting the build machine. Required for cygwin native builds. * Regenerate all aclocal.m4 and configure files. Mon Sep 21 14:44:16 1998 Nick Clifton * libc/sys/arm/crt0.S: Prepend a period to all local labels that used to start with LC. Thu Sep 17 18:18:11 1998 J"orn Rennecke * libc/machine/sh/setjmp.S (setjmp): Handle __SH4* like __SH3E__ . (longjmp): Likewise. Thu Sep 17 16:25:33 1998 J"orn Rennecke * libc/machine/sh/memset.S (memset): Move copy from r4 to r4 before the test for small number of bytes. Thu Sep 10 11:40:00 1998 Ranjith Kumaran * Makefile.am: Add --enable-newlib-hw-fp check. This builds the new math library that uses floating point algorithms instead of the old libm. * Makefile.in: Regenerate with automake version 1.3b. * configure: Rebuild. * libm/Makefile.in: Regenerate with automake version 1.3b. * libm/aclocal.m4: Regenerate. * libm/configure: Rebuild. * libm/configure.in: Add newlib_hw_fp definition and mathfp directory. * libm/acinclude.m4: Define macros for configure.in. * libm/config.h.in: Generate. * libm/mathfp/Makefile.am: New file. * libm/mathfp/Makefile.in: Generate. * libm/mathfp/s_acos.c (acos): New file. * libm/mathfp/s_asin.c (asin): New file. * libm/mathfp/s_asine.c (asine): New file. * libm/mathfp/s_atan.c (atan): New file. * libm/mathfp/s_atan2.c (atan2): New file. * libm/mathfp/s_atangent.c (atangent): New file. * libm/mathfp/s_ceil.c (ceil): New file. * libm/mathfp/s_copysign.c (copysign): New file. * libm/mathfp/s_cos.c (cos): New file. * libm/mathfp/s_cosh.c (cosh): New file. * libm/mathfp/s_exp.c (exp): New file. * libm/mathfp/s_fabs.c (fabs): New file. * libm/mathfp/s_finite.c (finite): New file. * libm/mathfp/s_floor.c (floor): New file. * libm/mathfp/s_fmod.c (fmod): New file. * libm/mathfp/s_frexp.c (frexp): New file. * libm/mathfp/s_infconst.c: New file. * libm/mathfp/s_isinf (isinf).c: New file. * libm/mathfp/s_isnan.c (isnan): New file. * libm/mathfp/s_ispos.c (ispos): New file. * libm/mathfp/s_ldexp.c (ldexp): New file. * libm/mathfp/s_log.c (log): New file. * libm/mathfp/s_log10.c (log10): New file. * libm/mathfp/s_logarithm.c (logarithm): New file. * libm/mathfp/s_mathcnst.c: New file. * libm/mathfp/s_modf (modf).c: New file. * libm/mathfp/s_numtest.c (numtest): New file. * libm/mathfp/s_pow.c (pow): New file. * libm/mathfp/s_scalbn.c (scalbn): New file. * libm/mathfp/s_sin (sin).c: New file. * libm/mathfp/s_sine.c (sine): New file. * libm/mathfp/s_sineh.c (sineh): New file. * libm/mathfp/s_sinf.c (sinf): New file. * libm/mathfp/s_sinh.c (sinh): New file. * libm/mathfp/s_sqrt.c (sqrt): New file. * libm/mathfp/s_tan.c (tan): New file. * libm/mathfp/s_tanh.c (tanh): New file. * libm/mathfp/sf_acos.c (acosf): New file. * libm/mathfp/sf_asin.c (asinf): New file. * libm/mathfp/sf_asine.c (asinef): New file. * libm/mathfp/sf_atan.c (atanf): New file. * libm/mathfp/sf_atan2.c (atan2f): New file. * libm/mathfp/sf_atangent.c (atangent): New file. * libm/mathfp/sf_ceil.c (ceilf): New file. * libm/mathfp/sf_copysign.c (copysignf): New file. * libm/mathfp/sf_cos.c (cosf): New file. * libm/mathfp/sf_cosh.c (coshf): New file. * libm/mathfp/sf_exp.c (expf): New file. * libm/mathfp/sf_fabs.c (fabsf): New file. * libm/mathfp/sf_finite.c (finitef): New file. * libm/mathfp/sf_floor.c (floorf): New file. * libm/mathfp/sf_fmod.c (fmodf): New file. * libm/mathfp/sf_frexp.c (frexpf): New file. * libm/mathfp/sf_isinf.c (isinff): New file. * libm/mathfp/sf_isnan.c (isnanf): New file. * libm/mathfp/sf_ispos.c (isposf): New file. * libm/mathfp/sf_ldexp.c (ldexpf): New file. * libm/mathfp/sf_log.c (logf): New file. * libm/mathfp/sf_log10.c (log10f): New file. * libm/mathfp/sf_logarithm.c (logarithmf): New file. * libm/mathfp/sf_modf.c (modff): New file. * libm/mathfp/sf_numtest.c (numtestf): New file. * libm/mathfp/sf_pow.c (powf): New file. * libm/mathfp/sf_scalbn.c (scalbnf): New file. * libm/mathfp/sf_sin.c (sinf): New file. * libm/mathfp/sf_sine.c (sinef): New file. * libm/mathfp/sf_sineh.c (sinehf): New file. * libm/mathfp/sf_sinh.c (sinhf): New file. * libm/mathfp/sf_sqrt.c (sqrtf): New file. * libm/mathfp/sf_tan.c (tanf): New file. * libm/mathfp/sf_tanh.c (tanhf): New file. * libm/mathfp/zmath.h: New file. Wed Sep 2 02:49:03 1998 J"orn Rennecke * libc/machine/sh/strcmp.S (L_char_loop): Re-load r0 at loop exit if it has been overwritten by pre-fetching in delay slot. 1998-09-01 Michael Meissner * Makefile.am (tooldir): Add in host_alias, so that multilib libraries are installed in the directory the compiler looks in. * Makefile.in: Regenerate. * libc/stdlib/Makefile.in: Regenerate with automake version 1.3b. Mon Aug 31 11:39:31 1998 Jeff Johnston * libc/machine/mn10300/memcpy.S (_memcpy): Move alignment test ahead of test for number of bytes being moved. Thu Aug 27 14:07:53 1998 Christopher Faylor * libc/include/sys/unistd.h: Nothing special needed for _exit under cygwin. Wed Aug 26 15:05:21 1998 Nick Clifton * libc/sys/arm/syscalls.c (_sbrk): Rename '_end' to 'end' to conform to user label naming conventions. Mon Aug 24 14:46:19 1998 Geoffrey Noer * libc/sys/cygwin32/sys/utime.h: variable names in protos should start with two leading underscores * libc/include/string.h: ditto * libc/include/sys/signal.h: ditto * libc/include/sys/stat.h: ditto * libc/include/sys/time.h: ditto * libc/include/sys/unistd.h: ditto * libc/include/ctype.h: ditto * libc/include/stdlib.h: ditto * libc/include/sys/reent.h: struct _atexit function ptr takes a void, same with _sig_func. Fri Aug 21 14:44:14 1998 Jeff Johnston * libc/stdlib/mbtowc_r.c (_mbtowc_r): Added preprocessor checks for MB_CAPABLE to reduce code size when newlib is not configured with --enable-newlib-mb. * libc/stdlib/Makefile.am: Specified -fshort-enums when building mbtowc_r.o to minimize size. * libc/stdlib/Makefile.in: Rebuild. Wed Aug 19 16:20:13 1998 Jim Wilson * libc/sys/sparc64/Makefile.am (.S_r.o, .c_r.o): Change -DREENTRANT to -DREENT. * libc/sys/sparc64/Makefile.in: Rebuild. Tue Aug 18 22:38:29 1998 Ian Lance Taylor * Makefile.am (MAKEOVERRIDES): Define. * Makefile.in: Rebuild. Tue Aug 18 12:38:47 1998 Jim Wilson * libc/sys/sparc64/sys/stat.h (stat): Add const. Mon Aug 17 22:27:06 1998 Ian Lance Taylor * acinclude.m4 (NEWLIB_CONFIGURE): Use top_builddir in newlib_cflags when looking for targ-include. * */aclocal.m4, */configure: Rebuild. Fri Jul 31 10:57:42 1998 Catherine Moore * libc/sys/arm/syscalls.c (_sbrk): Change "__end__" to "_end". Wed Jul 29 00:02:01 1998 Mark Alexander * libc/include/sys/config.h: Define __IEEE_LITTLE_ENDIAN on SPARCs with little-endian data. * libc/include/machine/ieeefp.h: Ditto. Wed Jul 22 18:00:10 1998 Ian Lance Taylor * acinclude.m4: Handle a relative srcdir correctly when setting newlib_cflags. * */aclocal.m4, */configure: Rebuild. Wed Jul 22 17:11:33 1998 Jeff Johnston * libm/math/wrf_lgamma.c (lgammaf_r): Initialize exc.err to 0 and also set exc.arg1, exc.arg2 appropriately in case matherr is supplied. * libm/math/wrf_gamma.c (gammaf_r): ditto * libm/math/wr_lgamma.c (lgamma_r): ditto * libm/math/wr_gamma.c (gamma_r): ditto * libm/math/wf_sqrt.c (sqrtf): ditto * libm/math/wf_sinh.c (sinhf): ditto * libm/math/wf_scalb.c (scalbf): ditto * libm/math/wf_remainder.c (remainderf): ditto * libm/math/wf_pow.c (powf): ditto * libm/math/wf_log10.c (log10f): ditto * libm/math/wf_log.c (logf): ditto * libm/math/wf_lgamma.c (lgammaf): ditto * libm/math/wf_jn.c (jnf, ynf): ditto * libm/math/wf_j1.c (j1f, y1f): ditto * libm/math/wf_j0.c (j0f, y0f): ditto * libm/math/wf_hypot.c (hypotf): ditto * libm/math/wf_gamma.c (gammaf): ditto * libm/math/wf_fmod.c (fmodf): ditto * libm/math/wf_exp.c (expf): ditto * libm/math/wf_cosh.c (coshf): ditto * libm/math/wf_atanh.c (atanhf): ditto * libm/math/wf_atan2f.c (atan2f): ditto * libm/math/wf_asin.c (asinf): ditto * libm/math/wf_acosh.c (acoshf): ditto * libm/math/wf_acos.c (acosf): ditto * libm/math/w_sqrt.c (sqrt): ditto * libm/math/w_sinh.c (sinh): ditto * libm/math/w_scalb.c (scalb): ditto * libm/math/w_remainder.c (remainder): ditto * libm/math/w_pow.c (pow): ditto * libm/math/w_log10.c (log10): ditto * libm/math/w_log.c (log): ditto * libm/math/w_lgamma.c (lgamma): ditto * libm/math/w_jn.c (jn, yn): ditto * libm/math/w_j1.c (j1, y1): ditto * libm/math/w_j0.c (j0, y0): ditto * libm/math/w_hypot.c (hypot): ditto * libm/math/w_gamma.c (gamma): ditto * libm/math/w_fmod.c (fmod): ditto * libm/math/w_exp.c (exp): ditto * libm/math/w_cosh.c (cosh): ditto * libm/math/w_atanh.c (atanh): ditto * libm/math/w_atan2f.c (atan2): ditto * libm/math/w_asin.c (asin): ditto * libm/math/w_acosh.c (acosh): ditto * libm/math/w_acos.c (acos): ditto Tue Jul 21 12:34:54 1998 Ian Lance Taylor * libm/math/Makefile.am (src): Add w_cabs.c and w_drem.c. (fsrc): Add wf_cabs.c and wf_drem.c. * libm/math/Makefile.in: Rebuild. * Makefile.am (AM_MAKEFLAGS): Add CFLAGS_FOR_BUILD. Remove some unused directory variables. Remove duplicate CFLAGS. * Makefile.in: Rebuild. * doc/Makefile.am ($(MKDOC)): Don't use $(CFLAGS) when building with $(CC_FOR_BUILD). (makedoc.o): Likewise. * doc/Makefile.in: Rebuild. * libc/sys/cygwin32/Makefile.am (EXTRA_LIBRARIES): Define, to force a definition of COMPILE. (libfoo_a_SOURCES): Define. * libc/sys/cygwin32/Makefile.in: Rebuild. * libc/sys/tic80/Makefile.am (EXTRA_LIBRARIES): Define, to force a definition of COMPILE. (libfoo_a_SOURCES): Define. * libc/sys/tic80/Makefile.in: Rebuild. Mon Jul 20 20:49:24 1998 Christopher Faylor * libc/include/sys/fcntl.h: Add O_NOINHERIT, Win32-specific flag. Fri Jul 17 16:13:16 1998 Ian Lance Taylor * Build using autoconf and automake. Added many Makefile.am and configure.in files, plus generated files. Old configure.in files and all old Makefile.in files completely replaced. Removed host/any. Added acinclude.m4 and configure.host. Sat Jul 11 18:14:49 1998 Felix Lee * libc/stdio/vfprintf.c: enable long long support, sometimes. * configure.in (*-*-cygwin32): add -DWANT_PRINTF_LONG_LONG. Tue Jul 7 01:51:55 1998 J"orn Rennecke * libc/machine/sh/strcmp.S, libc/machine/sh/strcpy.S: New files. * libc/machine/sh/Makefile.in: Add rules for new files. Tue Jul 7 01:40:55 1998 J"orn Rennecke * libc/machine/sh/asm.h (SL, DELAYED_BRANCHES): Define. * libc/machine/sh/memset.S (memset): Remove uses of dt; shorten code. * libc/machine/sh/memcpy.S (SL, DELAYED_BRANCHES): Don't define. Thu Jul 2 10:33:16 1998 Nick Clifton * libc/sys/arm/syscalls.c (_exit): Add comment, noting that exit code is ignored. Wed Jun 24 13:56:54 1998 Jeff Johnston * libc/stdio/tmpnam.c (_tmpnam_r): Changed routine to use internal static buffer when s is NULL, as prescribed by ANSI. 1998-06-22 Vladimir N. Makarov * libc/sys/h8300hms/Makefile.in (OFILES): malloc.o has been removed. * libc/sys/h8300hms/malloc.c: has been removed. Now malloc.c from libc/stdlib will be used for h8300hms. Thu Jun 18 16:56:05 1998 Jeff Johnston * libc/machine/mn10300/strlen.S (_strlen): New optimized assembler version that can be built either for speed or size. * libc/machine/mn10300/memset.S (_memset): ditto * libc/machine/mn10300/memchr.S (_memchr): ditto * libc/machine/mn10300/memcpy.S (_memcpy): ditto * libc/machine/mn10300/memcmp.S (_memcmp): ditto * libc/machine/mn10300/strchr.S (_strchr): ditto * libc/machine/mn10300/strcmp.S (_strcmp): ditto * libc/machine/mn10300/strcpy.S (_strcpy): ditto * libc/machine/mn10300/Makefile.in: Added entries for memchr.o, memcmp.o, memcpy.o, memset.o, strchr.o, strcmp.o, strcpy.o, and strlen.o. Wed Jun 17 12:50:26 1998 Mark Alexander * configure.in: Don't use libc/sys/sysmec for MN10200; it's been replaced with libgloss/mn10200. Fri Jun 12 14:34:39 1998 Michael Meissner * libc/string/strchr.c (strchr): Make s a constant pointer to avoid warning. Tue Jun 9 16:29:30 1998 Jason Molenda (crash@bugshack.cygnus.com) * configure.in (target == arm* or thumb*): Define ARM_RDI_MONITOR instead of ARM_RDP_MONITOR (sys/libc/arm/crt0.S to assume Angel board SWIs instead of Demon board SWIs). Thu Jun 4 12:16:46 1998 Michael Meissner * libc/string/strncat.c (strncat): Make -Os act the same as PREFER_SIZE_OVER_SPEED being defined. Wed Jun 3 17:52:33 1998 Michael Meissner * libc/string/memchr.c (memchr): Make -Os act the same as PREFER_SIZE_OVER_SPEED being defined. * libc/string/memcmp.c (memcmp): Ditto. * libc/string/memcpy.c (memcpy): Ditto. * libc/string/memset.c (memset): Ditto. * libc/string/strcat.c (strcat): Ditto. * libc/string/strchr.c (strchr): Ditto. * libc/string/strcmp.c (strcmp): Ditto. * libc/string/strcpy.c (strcpy): Ditto. * libc/string/strlen.c (strlen): Ditto. * libc/string/strncat.c (strncat): Ditto. * libc/string/strncmp.c (strncmp): Ditto. * libc/string/strncpy.c (strncpy): Ditto. Mon Jun 1 15:25:07 1998 Geoffrey Noer * libc/include/sys/itimer.h: remove * libc/include/sys/time.h: itimer stuff should be here Mon Jun 1 16:31:29 1998 Jeff Johnston * libc/stdio/vfprintf.c (cvt): Changed code to look at sign bit instead of comparing to 0 so -0.0 can be printed correctly. Sat May 30 09:33:51 1998 J"orn Rennecke * libc/stdlib/mprec.c (b2d): Inilialize d in non-VAX case too. Fri May 29 22:25:10 1998 Geoffrey Noer * libc/include/sys/unistd.h: fix sync() proto * libc/include/sys/fcntl.h: remove _close which is already defined in unistd.h. * libc/include/sys/time.h: add getitimer proto Fri May 29 16:10:28 1998 Geoffrey Noer * libc/string/strchr.c: convert arg to unsigned char * libc/include/stdlib.h: add protos for random, srandom * libc/include/sys/stat.h: add lstat proto * libc/include/sys/time.h: add setitimer proto * libc/include/sys/unistd.h: add readlink, symlink protos * libc/include/process.h: instead of including windows.h and using HANDLEs in sexec protos, just use void *s. Need to include sys/types.h. Fri May 29 03:04:29 1998 Geoffrey Noer * libc/include/sys/fcntl.h: add _close proto for Cygwin32 Thu May 28 16:34:21 1998 Geoffrey Noer * libc/include/process.h: add secure exec protos Wed May 27 13:54:51 1998 Jeffrey A Law (law@cygnus.com) * libc/stdlib/dtoa.c (_dtoa_r): Use "double_union" for variables which are accessed as both doubles and integers. * libc/stdlib/mprec.c (ulp, b2d, ratio): Likewise. * libc/stdlib/strtod.c (_strtod_r): Likewise. * libc/stdlib/mprec.h: Add "union double_union" and change word0/word1 macros to use it. Tue May 26 18:04:21 1998 Geoffrey Noer * libc/include/sys/signal.h: add __cplusplus wrapper Tue May 26 15:10:22 1998 Geoffrey Noer * libc/include/sys/utime.h: new generic file that gets replaced by libc/sys/SYSDIR/sys/utime.h on systems that support the utime function. * sys/cygwin32/sys/utime.h: use _EXFUN in utime proto * libc/include/time.h: remove duplicate utime proto * libc/include/utime.h: add comment Sun May 24 23:56:20 1998 Christopher Faylor * libc/include/sys/time.h: Add missing include to allow use of _EXFUN. Remove times function that is already defined in times.h. Sun May 24 01:32:14 1998 Christopher Faylor * libc/include/time.h: Fix typo in tzset. Fri May 22 17:00:48 1998 Geoffrey Noer * libc/include/sys/time.h: add missing Cygwin32 function protos * libc/include/sys/unistd.h: ditto * libc/include/time.h: ditto Wed May 20 20:35:11 1998 Geoffrey Noer * libc/sys/cygwin32/sys/param.h: add protected NULL def, remove FIXME. * libc/include/sys/types.h: add a new __MS_types__ section to define vm_offset_t, vm_size_t, int32_t et al, register_t, __BIT_TYPES_DEFINED__. Wed May 20 18:49:21 1998 Geoffrey Noer * libc/sys/cygwin32/sys/param.h: move here from winsup/include/sys since it overrides the one in libc/include/sys. Also, start including types.h. Wed May 20 14:45:40 1998 Geoffrey Noer * libm/math/Makefile.in: add s_signgam.o to obj list Tue May 19 11:57:11 1998 Jeff Johnston * libc/include/sys/reent.h (_REENT_INIT): Initialize current locale to "C". Mon May 18 22:36:12 1998 Christopher Faylor * libc/include/sys/signal.h: cygwin32 exports sig{empty,add}set, so don't use defines. Mon May 18 19:01:02 1998 Michael Meissner * libc/sys/d10v/crt0.S: Use correct stab for 16-bit ints. Sun May 17 18:40:32 1998 Frank Ch. Eigler * libc/stdlib/mbtowc_r.c (_mbtowc_r): Accept a NULL _current_locale as default locale. Sat May 16 21:59:59 1998 Bob Manson * libc/stdlib/mallocr.c (mALLOc): Add explicit tests for insufficient space in a chunk. Tue May 12 14:41:01 1998 Jeff Johnston * configure.in (links): Added check for --enable-newlib-mb configure option which defines the MB_CAPABLE macro. * libc/locale/locale.c (_setlocale_r): Added support for setting LC_CTYPE to "C-JIS", "C-SJIS" or "C-EUCJP", when MB_CAPABLE is defined. * libc/stdlib/mbtowc_r.c (_mbtowc_r): New function _mbtowc_r that implements mbtowc() with multibyte support for JIS, SJIS, and EUC-JP. * libc/stdlib/wctomb_r.c (_wctomb_r): New function _wctomb_r that implements wctomb() with multibyte support for JIS, SJIS, and EUC-JP. * libc/stdlib/mbstowcs_r.c (_mbstowcs_r): New function _mbstowcs_r that implements mbstowcs() with multibyte support for JIS, SJIS, and EUC-JP. * libc/stdlib/wcstombs_r.c (_wcstombs_r): New function _wcstomb_r that implements wcstombs() with multibyte support for JIS, SJIS, and EUC-JP. * libc/stdlib/Makefile.in: Added new multibyte routines: _mbtowc_r(), _wctomb_r(), _mbstowcs_r(), and _wcstombs_r(). * libc/include/stdlib.h: Added declarations of _mbtowc_r(), _wctomb_r(), _mbstowcs_r(), and _wcstombs_r(). * libc/stdlib/mbctype.h: New internal header file that contains macros to test for JIS, SJIS, and EUC-JP characters. * libc/stdlib/mblen.c (mblen): Added code to call _mbtowc_r() if MB_CAPABLE defined. * libc/stdlib/mbtowc.c (mbtowc): Added code to call _mbtowc_r() if MB_CAPABLE defined. * libc/stdlib/wctomb.c (wctomb): Added code to call _wctomb_r() if MB_CAPABLE defined. * libc/stdlib/mbstowcs.c (mbstowcs): Added code to call _mbstowcs_r() if MB_CAPABLE defined. * libc/stdlib/wcstombs.c (wcstombs): Added code to call _wcstombs_r() if MB_CAPABLE defined. * libc/stdio/vfscanf.c (__svfscanf): Added multibyte tolerance to the format string processing when MB_CAPABLE. * libc/stdio/vfprintf.c (_VFPRINTF_R): Changed mbtowc() call to call _mbtowc_r(). Tue May 5 16:07:23 1998 Nick Clifton The following modifications are courtesy of Anthony Thompson, athompson@cambridge.arm.com: * libc/sys/arm/syscalls.c: Initialise and track stdin/out/err for boith RDI and RDP monitors. * libc/sys/arm/crt0.S: Call initialise_monitor_handles() for both RDI and RDP monitors. Wed Apr 29 15:22:15 1998 Jeff Johnston * configure.in (links): Added -DHAVE_GETTIMEOFDAY for arm and thumb. * libc/sys/arm/syscalls.c (_gettimeofday _times): Added functions. (_swiopen): Fixed open flags to treat write with append as just append. (_swilseek): Fixed lseek support to properly handle offsets from SEEK_END. * libc/sys/arm/sys/param.h: New file to override param.h for ARM. Fri Apr 24 18:00:09 1998 J"orn Rennecke * libc/machine/sh/memcpy.S (L_odddst, big endian version): When needing to transfer an initial 2-byte-word, store as two single bytes. Wed Apr 22 17:56:03 1998 J"orn Rennecke * libc/sys/sh/crt0.S (start): Handle __SH4_SINGLE_ONLY__ like __SH3E__ . * libc/machine/sh/memcpy.S (DELAYED_BRANCHES, SL): Likewise. * libc/include/machine/ieeefp.h (_DOUBLE_IS_32BITS): Likewise. Wed Apr 22 12:28:03 1998 Michael Meissner * configure.in (target_cflags): If --enable-target-optspace, use -Os to compile newlib rather than -O2. Default to using -Os for d10v, d30v and m32r if --{enable,disable}-target-optspace is not used. Tue Apr 21 23:13:34 1998 Geoffrey Noer * libc/include/machine/setjmp.h: change sigsetjmp and siglongjmp definitions to use an array instead of a struct for __CYGWIN32__ Tue Apr 14 11:47:47 1998 Doug Evans * libc/reent/impure.c (__ATTRIBUTE_IMPURE_DATA__): Fix spelling. Mon Apr 6 15:05:08 1998 Jonathan Larmour * libc/string/strxfrm.c: fix to get correct return value Wed Apr 1 16:09:05 1998 Nick Clifton * libc/sys/arm/crt0.S: Set top of RAM to be 0x800000 for PE builds. Make mode change labels global so that they will be seen by the debugger. Wed Mar 18 09:45:10 1998 Nick Clifton * configure.in (links): Do not use ARM debiugging protocols for PE builds. * libc/sys/arm/syscalls.c (_sbrk): Add "_sbrk: " to error message. Fri Mar 13 11:24:34 1998 Jeff Johnston * libc/stdio/findfp.c (__sinit): Made stdout default to line buffered mode as defined by ANSI. Tue Mar 10 11:41:26 1997 Bob Manson * libc/include/sys/itimer.h: New file. * libc/signal/signal.c (__sigtramp_r,__sigtramp): New functions. Mon Mar 9 14:19:26 1998 J"orn Rennecke * libc/machine/sh/memcpy.S: (_memcpy): Fix for execute/memcpy-1.c failure. Fri Feb 27 13:56:10 1998 Michael Meissner * libc/machine/d30v/setjmp.S (longjmp): Fix order of parallel insns. Wed Feb 25 09:29:54 1998 Nick Clifton * libc/sys/arm/syscalls.c (_open): Add varags to conform to prototype. Tue Feb 24 18:00:13 1998 Michael Meissner * libc/machine/d30v/{setjmp.S,Makefile.in}: New files for D30V support. * libc/include/machine/setjmp.h: Add D30V support. * configure.in (d30v-*): Add d30v machine directory. Mon Feb 23 09:32:58 1998 Mark Alexander * configure.in: Don't use libc/sys/sysmec for MN10300; it's been replaced with libgloss/mn10300. Sat Feb 21 17:44:43 1998 Geoffrey Noer * libc/stdlib/mallocr.c: remove __malloc_copy routine now that it is no longer needed. Thu Feb 19 16:15:10 1998 Geoffrey Noer * libc/include/sys/signal.h: add sigpause proto for Cygwin32 Wed Feb 18 23:51:08 1998 Geoffrey Noer * libc/stdio/fdopen.c (fdopen): Make all writes go to the end of the file when O_APPEND is set, wherever the EOF happens to be at that time. Wed Feb 18 23:25:02 1998 Geoffrey Noer patch from cgf@bbc.com (Christopher Faylor): * libc/stdio/freopen.c (freopen): Conform to standard UNIX convention of closing fp prior to attempting to open the file argument. This allows correct operation when reopening stdin/stdout/stderr. Replaces last freopen.c patch. Wed Feb 18 16:27:40 1998 Geoffrey Noer patch from cgf@bbc.com (Christopher Faylor): * libc/stdio/freopen.c: freopen was not preserving the fd of the stream being operated on. This confuses programs that expect that the handles for stdout and stderr will be 1 and 2. Mon Feb 16 23:34:07 1998 Andrew Cagney * libc/sys/d10v/crt0.S (_start): Set PSW{SW} - select SPU. Thu Feb 12 15:09:20 1998 Ranjith Kumaran * libc/sys/go32/longjmp.S: Fix longjmp to not return 0. Wed Feb 11 17:50:45 1998 Jeff Johnston * libc/machine/powerpc/setjmp.S (setjmp, longjmp): Alignment code altered to not use a branch. Also added hint that last bclr in longjmp will likely result in branch. Mon Feb 9 03:44:02 1998 Geoffrey Noer * libc/sys/cygwin32/crt0.c: add missing args to main() extern Fri Feb 6 16:32:32 1998 Nick Clifton * libc/sys/sysnecv850/crt0.S (_start): Initialise _ctbp even for v850 builds. * configure.in: Add -msmall-sld to target_cflags for v850 builds. Wed Feb 4 16:56:20 1998 Jeff Johnston * libc/machine/powerpc/setjmp.S (longjmp): Fixed code that loads FR14 to specify offset of 8 rather than 4 so it loads from offset 96 (where setjmp stored it). Tue Feb 3 18:08:34 1998 Jeff Johnston * libc/machine/sh/memcpy.S: (_memcpy): Update to latest version supplied by customer. * libc/machine/sh/memset.S (_memset): Ditto. Mon Feb 2 16:20:39 1998 Nick Clifton * libc/sys/sysnecv850/Makefile.in (OFILES): Add link.o (for PR14730). Mon Feb 2 15:13:26 1998 Geoffrey Noer * libc/include/string.h: remove redefinition of ffs Wed Jan 28 13:30:14 1998 Geoffrey Noer * libc/include/sys/signal.h: include _ansi.h so _EXFUN is defined Wed Jan 28 10:38:34 1998 Jeff Johnston * libc/machine/tic80/setjmp.S: Adding _setjmp to allow TI Libraries to link to libc.a Sat Jan 24 10:15:56 1998 Michael Meissner * libc/include/sys/fcntl.h (_open,_fcntl): Add prototypes. * libc/include/sys/stat.h (_{,f}stat): Ditto. * libc/include/sys/wait.h (_wait): Ditto. * libc/include/sys/unistd.h (_close,_fork,_getpid): Ditto. (_link,_lseek,_read,_sbrk,_unlink,_write): Ditto. Fri Jan 23 11:32:10 1998 Michael Meissner * libc/machine/d10v/setjmp.S: Change to new ABI. Add simple minded stabs so function name shows up when running the simulator with -t. * libc/sys/d10v/{crt0,trap}.S: Ditto. Thu Jan 22 15:57:14 1998 Fred Fish * libc/sys/d10v/trap.S: Change syscalls to use trap 15. * libc/sys/d10v/crt0.S: Use R6 where we used to use R2. Use R5 where we used to use R3. Wed Jan 21 14:22:23 1998 Bill Moyer * libc/stdlib/getopt.c (getopt): replaced __progname with nargv[0] to improve portability to imbedded systems. Thu Jan 15 12:32:38 1998 Nick Clifton * libc/sys/arm/syscalls.c (initialise_angel_handles): Applied patch supplied by Tont.Thompson@arm.com to fix the creation of the stdout file. Wed Jan 14 13:00:19 1998 Ian Lance Taylor * libc/stdio/tmpnam.c (worker): Generate a different file name each time. * libc/posix/popen.c (popen): If __CYGWIN32__, and execing /bin/sh fails, try an execlp for sh. * host/any (INCLUDES): If target_os is cygwin32, then add a -I option for the winsup include directory. Wed Jan 7 17:02:58 1998 Nick Clifton * libc/sys/arm/syscalls.c: Applied patches for Angel based remote debugging interface from Tony.Thompson@arm.com. * libc/sys/arm/crt0.S (_mainCRTStartup): ditto. * libc/sys/arm/swi.h: ditto. Tue Jan 6 14:15:10 1998 Geoffrey Noer * libc/sys/cygwin32/sys/dirent.h: add __d_dirhash field to DIR struct used for readdir hashes. Thu Jan 1 11:22:22 1998 Jeffrey A Law (law@cygnus.com) * libc/string/strchr.c: Use "unsigned chars" as necessary. Wed Dec 31 04:25:30 1997 Jeffrey A Law (law@cygnus.com) * libc/stdlib/mallocr.c (idx2binblock): Don't lose on 16bit integer targets. Sat Dec 13 15:11:06 1997 Ian Lance Taylor * libc/stdlib/mallocr.c (__malloc_copy): New function, compiled if INTERNAL_NEWLIB and __CYGWIN32__ and DEFINE_MALLOC. * libc/include/malloc.h: Add extern "C" if __cplusplus. (__malloc_copy): Declare. Wed Dec 10 12:15:54 1997 Ian Lance Taylor * libc/stdlib/mallocr.c: If INTERNAL_NEWLIB, include . (POINTER_UINT): Define. (DEFAULT_TRIM_THRESHOLD): Mark constants as long. (MALLOC_ALIGNMENT): Don't define if already defined. (malloc_extend_top): Cast pointers to POINTER_UINT, not unsigned long. Tue Dec 9 19:23:42 1997 Michael Meissner * libc/string/memset.c (memset): Fiddle with code so that the long value being stored is not a stack value. Unroll storing longs 4 times. Tue Dec 9 14:13:18 1997 Jeff Johnston * Reduce code size for libm modules. * libm/math/w_sqrt.c (sqrt): Remove call to kernel_standard and simply move code into sqrt. * libm/math/wrf_lgamma.c (lgammaf_r): Likewise. * libm/math/wr_lgamma.c (lgamma_r): Likewise. * libm/math/wrf_gamma.c (gammaf_r): Likewise. * libm/math/wr_gamma.c (gamma_r): Likewise. * libm/math/wf_sinh.c (sinfh): Likewise. * libm/math/w_sinh.c (sinh): Likewise. * libm/math/wf_scalb.c (scalbf): Likewise. * libm/math/w_scalb.c (scalb): Likewise. * libm/math/wf_remainder.c (remainderf): Likewise. * libm/math/w_remainder.c (remainder): Likewise. * libm/math/wf_pow.c (powf): Likewise. * libm/math/w_pow.c (pow): Likewise. * libm/math/wf_log10.c (log10f): Likewise. * libm/math/w_log10.c (log10): Likewise. * libm/math/wf_log.c (logf): Likewise. * libm/math/w_log.c (log): Likewise. * libm/math/w_lgamma.c (lgamma): Likewise. * libm/math/wf_lgamma.c (lgammaf): Likewise. * libm/math/wf_jn.c (jnf): Likewise. * libm/math/w_jn.c (jn): Likewise. * libm/math/wf_j1.c (j1f): Likewise. * libm/math/w_j1.c (j1): Likewise. * libm/math/wf_j0.c (j0f): Likewise. * libm/math/w_j0.c (j0): Likewise. * libm/math/wf_hypot.c (hypotf): Likewise. * libm/math/w_hypot.c (hypot): Likewise. * libm/math/wf_gamma.c (gammaf): Likewise. * libm/math/w_gamma.c (gamma): Likewise. * libm/math/wf_fmod.c (fmodf): Likewise. * libm/math/w_fmod.c (fmod): Likewise. * libm/math/wf_exp.c (expf): Likewise. * libm/math/w_exp.c (exp): Likewise. * libm/math/wf_cosh.c (coshf): Likewise. * libm/math/w_cosh.c (cosh): Likewise. * libm/math/wf_atanh.c (atanhf): Likewise. * libm/math/w_atanh.c (atanh): Likewise. * libm/math/wf_atan2.c (atan2f): Likewise. * libm/math/w_atan2.c (atan2): Likewise. * libm/math/wf_asin.c (asinf): Likewise. * libm/math/w_asin.c (asin): Likewise. * libm/math/wf_acosh.c (acoshf): Likewise. * libm/math/w_acosh.c (acosh): Likewise. * libm/math/wf_acos.c (asocf): Likewise. * libm/math/w_acos.c (acos): Likewise. * libm/math/wf_sqrt.c (sqrtf): Likewise. * libm/math/k_standard.c (_k_standard): Don't require SVID behavior for embedded systems. Mon Dec 8 12:12:58 1997 Ian Lance Taylor * libc/stdlib/mallocr.c (malloc_extend_top): Add patch from Doug Lea in case of a foreign sbrk. Fri Dec 5 23:27:28 1997 Ian Lance Taylor Incorporate Doug Lea's malloc: * libc/stdlib/mallocr.c: Completely replaced. * libc/stdlib/malloc.c: Document malloc_usable_size and memalign. (realloc): Remove. * libc/stdlib/calloc.c (calloc): Just call _calloc_r. * libc/stdlib/mstats.c: Document mallinfo, malloc_stats, and mallopt. (mallinfo, malloc_stats, mallopt): New functions. (_mstats_r): Just call _malloc_stats_r. * libc/stdlib/malign.c: New file. * libc/stdlib/mlock.c: New file. * libc/stdlib/msize.c: New file. * libc/stdlib/mtrim.c: New file. * libc/stdlib/realloc.c: New file. * libc/stdlib/valloc.c: New file. * libc/stdlib/malloc.h: Remove. * libc/stdlib/callocr.c: Remove. * libc/stdlib/Makefile.in (OFILES): Add cfreer.o, freer.o, malign.o, malignr.o, mallinfor.o, malloptr.o, mallstatsr.o, mlock.o, msize.o, msizer.o, mtrim.o, pvallocr.o, realloc.o, reallocr.o, valloc.o, vallocr.o. (CHEWOUT_FILES): Add mlock.def, mstats.def. (MALLOC_CFLAGS): New variable. (mallocr.o): New target, build from mallocr.c. (freer.o, reallocr.o, callocr.o, cfreer.o, malignr.o): Likewise. (vallocr.o, pvallocr.o, mallinfor.o, mallstatsr.o): Likewise. (msizer.o, malloptr.o): Likewise. (malign.o, mlock.o, msize.o, mtrim.o, realloc.o): New targets. (valloc.o): New target. * libc/stdlib/stdlib.tex: Include mlock.def and mstats.def. * libc/include/malloc.h: Declare struct mallinfo, and new routines. * libc/include/stdlib.h (cfree): Correct declaration. Tue Dec 2 10:12:16 1997 Nick Clifton * libc/include/machine/setjmp.h: Add support for Thumb target. * libc/include/machine/ieeefp.h: Add support for Thumb target. * configure.in (links): Add support for Thumb target. Wed Nov 26 09:56:17 1997 Nick Clifton * libc/sys/arm/setjmp.S: Updated with version from branch. Thu Nov 20 01:21:43 1997 Geoffrey Noer * libc/include/stdio.h: add POSIX-required define L_ctermid for ctermid Wed Nov 19 16:11:40 1997 Michael Meissner * configure.in (d30v-*-*): Define ABORT_MESSAGE, SMALL_MEMORY, in addition to MISSING_SYSCALL_NAMES. Mon Nov 17 20:05:05 1997 J"orn Rennecke * libc/include/sys/config.h: (UINT_MAX, for D10V): Make unsigned. Mon Nov 10 22:26:55 1997 Geoffrey Noer * libc/include/string.h: change strsignal proto to return a char *. This eliminates compile problems in gdb resulting from gdb's definition of strsignal in defs.h. Mon Nov 10 17:11:08 1997 Geoffrey Noer * libc/sys/cygwin32/sys/utime.h: new (moved here from winsup/include) so as not to conflict with the one in libc/include. * libc/include/string.h: add protos for strsignal, strtosigno Mon Nov 10 13:49:54 1997 Michael Meissner * libc/include/sys/config.h: Define __IEEE_BIG_ENDIAN if d30v. * configure.in (d30v-*-*): Add configuration. Thu Oct 30 14:01:23 1997 Nick Clifton * configure.in (links): Add -DARM_RD[P|I]_MONITOR to target_cflags to select which kind of debug monitor is in use for an ARM target. * libc/sys/arm/crt0.S: New version: Supports Thumb startups and Angel and Demon debug monitors. Part of this code was supplied by Tony Thompson at ARM: athompso@arm.com. Fri Oct 24 18:57:05 1997 Jeffrey A Law (law@cygnus.com) * strncat.c (strncat): Don't call strncpy; strncay has the wrong semantics when the count is greater than the length of the second source string. Thu Oct 23 01:37:41 1997 Geoffrey Noer * libc/include/sys/signal.h: reorder CYGWIN32 signal numbers * libc/include/sys/unistd.h: add protos for usleep, truncate, truncate and ftruncate take off_t, not size_t Tue Oct 21 18:42:00 1997 Jim Wilson * libc/string/strcat.c (strcat): Add missing comment end. * libc/string/strncat.c (strncat): Likewise. Tue Oct 21 17:23:34 1997 Nick Clifton * configure.in (links): Define PREFER_SIZE_OVER_SPEED for v850 targets. * libc/string/{memchr.c, memcmp.c, memcpy.c}: Add space optimised version which is selected if PREFER_SIZE_OVER_SPEED is defined. * libc/string/{memset.c, strcat.c, strchr.c}: Likewise. * libc/string/{strcmp.c, strcpy.c, strlen.c}: Likewise. * libc/string/{strncat.c, strncmp.c, strncpy.c}: Likewise. Mon Oct 13 15:12:35 1997 Ian Lance Taylor * libc/include/sys/param.h (BIG_ENDIAN): Define if __i386__. (LITTLE_ENDIAN, BYTE_ORDER): Likewise. Thu Oct 9 13:54:44 1997 Doug Evans * libc/machine/i386/setjmp.S: New file. * libc/machine/i386/Makefile.in: Delete COPYOFILES. (OFILES): Add setjmp.o. (setjmp.o): Add rule for. * configure.in: Don't set machine_dir for *-*-{go32,sco*,cygwin32}. Tue Oct 7 14:01:29 1997 Bill Moyer (billm@cygnus.com) Jeffrey A Law (law@cygnus.com) * libc/string/{memchr.c, memcmp.c, memcpy.c}: Reimplement to run faster. * libc/string/{memset.c, strcat.c, strchr.c}: Likewise. * libc/string/{strcmp.c, strcpy.c, strlen.c}: Likewise. * libc/string/{strncat.c, strncmp.c, strncpy.c}: Likewise. Mon Oct 6 14:07:59 1997 Nick Clifton * libc/sys/sysnecv850/Makefile.in (crt0.o trap.o): Explicit rules. * libc/include/sys/config.h: Use __v850 to select v850 endianness. * libc/include/machine/setjmp.h: Use __v850 to select v850 jump buffer size. * libc/include/machine/ieeefp.h: Use __v850 to select v850 endianness. Thu Sep 25 14:11:37 1997 Geoffrey Noer * libc/stdlib/setenv.c: change unsetenv definition to match style of setenv (with _DEFUN). The string should be a const. * libc/include/stdlib.h: unsetenv proto should return void. Tue Sep 23 18:17:20 1997 Geoffrey Noer * libc/include/stdlib.h: define unsetenv proto for __CYGWIN32__ Thu Sep 18 12:50:15 1997 Angela Marie Thomas (angela@cygnus.com) * libc/stdio/glue.h: remove. * libc/stdio/findfp.c, libc/stdio/fwalk.c: remove #include "glue.h" * libc/stdio/Makefile.in: remove glue.h dependencies Wed Sep 17 17:42:27 1997 Nick Clifton * libc/sys/sysnecv850/crt0.S: Created V850e version. Tue Sep 9 10:40:57 1997 Doug Evans * configure.in (target_cpu): Add `arc'. Tue Sep 9 10:40:42 1997 Joel Sherrill * newlib/configure.in (*-*-rtems*): Add -DSIGNAL_PROVIDED and -DREENTRANT_SYSCALLS_PROVIDED to the target_cflags. * newlib/libc/include/sys/errno.h: Add ENOTSUP. * newlib/libc/reent/reent.c: Add _wrapup_reent. * newlib/libc/sys/rtems/sys/types.h: Avoid redefinitions for go32. Sun Sep 7 16:41:41 1997 Gavin Koch * libc/machine/mips/setjmp.S: Handle mips16 builds. Thu Aug 21 20:05:38 1997 Ian Lance Taylor * libc/include/stdio.h (siprintf): Declare. Mon Aug 18 11:19:13 1997 Nick Clifton * libc/sys/sysnecv850/Makefile.in (.c.o): Add rule that includes TARGET_CFLAGS and NEWLIB_FLAGS. Mon Aug 18 11:15:43 1997 Nick Clifton * configure.in (links): Add support for v850ea target. Mon Aug 18 11:15:43 1997 Nick Clifton * configure.in (links): Add support for v850e target. Wed Aug 13 19:16:54 1997 Nick Clifton * libc/sys/sysnecv850/crt0.S: Remove initial setting of r0 to 0. Mon Aug 11 15:49:54 1997 Doug Evans * configure.in (arc-*-*): Add support for. * libc/include/machine/ieeefp.h (__arc__): Add support for the ARC. Fri Jul 25 17:37:41 1997 J"orn Rennecke * libc/sys/sh/crt0.S (start): Add fpscr initialization for SH4. Thu Jul 24 18:32:17 1997 Geoffrey Noer * libc/stdlib/bsearch.c (bsearch): remove last unneeded comparison which accesses invalid memory when the key is larger than the last member of the array. * libc/include/machine/setjmp.h: add sigsetjmp, siglongjmp for CYGWIN32 * libc/include/sys/unistd.h: add _POSIX defines for CYGWIN32 Tue Jul 22 16:03:06 1997 Ian Lance Taylor * libc/include/stdlib.h (realpath): Declare if __CYGWIN32__ and not _STRICT_ANSI. Thu Jul 10 15:11:52 1997 Doug Evans * libm/math/k_standard.c (__kernel_standard): Call fflush(stdout) ifndef _USE_WRITE, instead of ifdef _USE_WRITE. Thu Jul 10 16:00:09 1997 Mike Meissner * libc/machine/tic80/setjmp.S (setjmp,longjmp): Use ld.d and st.d to load/store memory. Mon Jul 7 17:38:17 1997 Ian Lance Taylor * libc/include/sys/fcntl.h: Define _O_* symbols with leading underscores if _WIN32. Wed Jul 2 10:07:20 1997 Doug Evans * libm/math/k_standard.c (__kernel_standard): Delete reentrancy support ifdef _USE_WRITE missed in last change. From Anders Blomdell . Wed Jun 25 10:18:49 1997 Doug Evans * libc/stdio/tmpnam.c (worker): Handle _open_r being stubbed out. (_tmpnam_r, _tempnam_r): Update. Wed Jun 25 00:16:55 1997 Mark Alexander * libc/machine/sparc/setjmp.S: New file. * libc/machine/sparc/Makefile.in: Add setjmp. * libc/include/machine/setjmp.h: Increase jmpbuf size for sparc. Tue Jun 24 23:27:38 1997 Mark Alexander * libc/include/machine/setjmp.h: Use __TIC80__ instead of __tic80__. Tue Jun 24 14:53:40 1997 Doug Evans From Joel Sherrill . * libc/stdlib/getenv.c (_findenv): Avoid dereferencing null `environ'. Add rtems support. From Joel Sherrill . * configure.in: Recognize *-*-rtems*. * libc/sys/rtems/{Makefile.in,crt0.c,dummysys.c}: New files. * libc/sys/rtems/sys/{features.h,sched.h,siginfo.h,signal.h, time.h,times.h,types.h}: New files. * libc/sys/rtems/include/{limits.h,signal.h,time.h}. New files. Fri Jun 20 11:13:16 1997 Geoffrey Noer patch from sos@prospect.com.ru (Sergey Okhapkin): * include/sys/wait.h: correct operator precidence bug in WIFSIGNALED Wed Jun 18 22:08:27 1997 Geoffrey Noer * libc/include/stdlib.h: remove unsetenv proto since it conflicts with newlib's unsetenv function * libc/sys/cygwin32/sys: new directory for includes * libc/sys/cygwin32/sys/dirent.h: move cygwin32's dirent.h here from winsup/include/sys Mon Jun 16 21:02:22 1997 Geoffrey Noer * libc/include/sys/unistd.h: _exit should only be labelled noreturn when not __CYGWIN32__ * libc/include/stdlib.h: for __CYGWIN32__, add proto for unsetenv * libc/include/sys/signal.h: add SIGIO to _WIN32 list and increment NSIG Thu Jun 12 18:52:41 1997 Ian Lance Taylor * libc/include/sys/time.h: Only define timeval and timezone if _GNU_H_WINDOWS32_SOCKETS is not defined. * libc/include/sys/stat.h: If _WIN32, define _S_IFMT, etc. Wed Jun 11 09:46:26 1997 Jeffrey A Law (law@cygnus.com) * libc/machine/mn10200/setjmp.S: Implement setjmp/longjmp * libc/machine/mn10300/setjmp.S: Likewise. * libc/sys/sysmec/crt0.S: Use "call" instead of "calls" for the mn10300 (more relaxing opportunities). Tue Jun 10 17:24:45 1997 Mike Meissner * configure.in (powerpc*-*-{eabi,elf,linux,rtems,sysv,solaris}): Build libraries with -mstrict-align. Fri Jun 6 14:07:59 1997 Ian Lance Taylor * libc/string/strlwr.c: New file. * libc/string/strupr.c: New file. * libc/include/string.h: Declare strlwr and strupr. * libc/string/Makefile.in (OFILES): Add strlwr.o and strupr.o. (CHEWOUT_FILES): Add strlwr.def and strupr.def. (strlwr.o, strupr.o): New targets. * libc/string/strings.tex: Include strlwr and strupr docs. * libc/include/sys/types.h: Don't define u_char, et. al., if _GNU_H_WINDOWS32_SOCKETS is defined. Likewise for fd_set, et. al. Make FD_SETSIZE default 64 rather than 60. Define _types_fd_set rather than fd_set, and define fd_set as a macro. * libc/include/malloc.h: New file. * libc/include/string.h: Define strcmpi, stricmp, strncmpi, and strnicmp if they are not already defined. * libc/include/time.h: If __CYGWIN32__, declare tzset and define _timezone, _daylight, and _tzname. Wed Jun 4 12:51:16 1997 Doug Evans * configure.in: Sort all configuration tables. From Joel Sherrill * Makefile.in (stmp-targ-include): Copy $(sys_dir)/include/*.h. Tue Jun 3 14:47:46 1997 Ian Lance Taylor * libc/include/sys/signal.h: Don't include . Just use int when declaring kill. * libc/include/sys/timeb.h: New file. Mon Jun 2 12:06:58 1997 Geoffrey Noer * libc/include/sys/time.h: add itimer support for Cygwin32 Mon May 19 11:56:46 1997 Mike Meissner * libc/stdlib/abort.c (abort): If ABORT_MESSAGE is defined, write out a message that abort was called to stderr. Fri May 16 15:02:59 1997 Bob Manson * libc/sys/sysmec/fstat.c (_fstat): Set st_blksize to 4096 so that libio doesn't freak. * libc/sys/sysmec/sbrk.c (_sbrk): The argument is a size_t, not int. * libc/stdlib/mallocr.c (_morecore_r): Use size_t for memory sizes, not int. Wed May 14 21:16:58 1997 Bob Manson * libm/math/ef_hypot.c: Use long constants where appropriate. * libm/math/ef_sqrt.c: Ditto. * libc/sys/sysmec/times.c(_times): Change to times. * libc/sys/sysmec/read.c(_read): The third argument is size_t. * libc/sys/sysmec/write.c (_write): Ditto. * libc/sys/sysmec/lseek.c: Include unistd.h for off_t. (_lseek): It's off_t for the second argument. Wed May 14 15:23:36 1997 Mike Meissner * libc/include/sys/config.h (__IEEE_LITTLE_ENDIAN): Define here, as well as machine/ieeefp.h. Thu May 8 15:47:25 1997 Geoffrey Noer * libc/include/sys/signal.h: add signal protos for winsup functions (when __CYGWIN32__), include types.h * libc/include/sys/types.h: Change __go32_types__ internal define to __MS_types__ since it's used for more than just GO32 configs. Define this if GO32, __MSDOS__, or _WIN32 are defined. * libc/include/sys/unistd.h: add ftruncate proto for winsup functions (when __CYGWIN32__) Fri Apr 25 10:10:16 1997 Doug Evans * libc/sys/h8300hms/sbrk.c (stack_ptr): Add definition. Thu Apr 24 15:46:51 1997 Mike Stump * libc/include/machine/setjmp.h: Add tic80 support. * libc/machine/tic80/setjmp.S: Likewise. Tue Apr 22 16:54:40 1997 Geoffrey Noer * libc/sys/cygwin32/crt0.c: Add reference to main() so we can link programs from libraries only (such as in the X11 distribution) Mon Apr 21 15:02:12 1997 Fred Fish * libc/sys/arm/syscalls.c (signal): Remove stub, signal() supplied elsewhere in newlib. Mon Apr 14 16:25:55 1997 Ian Lance Taylor * Makefile.in (INSTALL): Change install.sh to install-sh. Fri Apr 11 17:04:02 1997 Jason Molenda (crash@godzilla.cygnus.co.jp) * README: update WWW address for on-line documentation. Wed Apr 9 00:38:13 1997 Geoffrey Noer * libc/include/sys/signal.h: for _WIN32, define SIGCONT and increment NSIG Mon Apr 7 23:54:00 1997 Jeffrey A Law (law@cygnus.com) * libc/sys/sysmec/crt0.S: Update for new calling conventions on the mn10300. * libc/sys/sysmec/trap.S: Don't compare a register to itself. Tue Mar 25 08:47:43 1997 Jeffrey A Law (law@cygnus.com) * libc/sys/arm/syscalls.c: Fix/add stack/heap collision detection. * libc/sys/d10v/syscalls.c: Likewise. * libc/sys/h8300hms/sbrk.c: Likewise. * libc/sys/h8500hms/syscalls.c: Likewise. * libc/sys/m88kbug/syscalls.c: Likewise. * libc/sys/sh/syscalls.c: Likewise. * libc/sys/sysmec/sbrk.c: Likewise. * libc/sys/sysnecv850/sbrk.c: Likewise. * libc/sys/w65/syscalls.c: Likewise. * libc/sys.tex: Update sbrk sample code to include stack/heap collision. Tue Mar 18 14:14:34 1997 Jeffrey A Law (law@cygnus.com) * libc/sys/sysmec/trap.S: Use "syscall" to trigger an emulated syscall instead of "trap". Fri Mar 14 11:26:13 1997 Michael Meissner * libc/sys/d10v/trap.S (__trap0): Use trap 15 for system calls, not trap 0. Sun Mar 9 23:27:04 1997 Doug Evans * configure.in (m32r-*-*): Add -msdata=sdata to target_cflags. Sat Mar 8 09:05:01 1997 Fred Fish * libc/machine/arm/Makefile.in: Fix comment, is for "arm" not "sh". * libc/machine/m32r/Makefile.in: Fix comment, is for "m32r" not "d10v". * libc/sys/tic80/crt0.c: New file for TIc80. * libc/sys/tic80/Makefile.in: New file for TIc80. * libc/machine/tic80/Makefile.in: New file for TIc80. Wed Mar 5 11:32:12 1997 J.T. Conklin * libc/machine/sh/memcpy.S: New file. * libc/machine/sh/memset.S: New file. * libc/machine/sh/Makefile.in (OFILES): Add memcpy.o and memset.o Thu Feb 27 16:27:55 1997 Fred Fish * libc/include/machine/ieeefp.h (_IEEE_LITTLE_ENDIAN): Define for TIc80. Wed Feb 26 13:43:39 1997 Jeffrey A Law (law@cygnus.com) * libc/sys/sysmec/crt0.S: Handle new calling conventions for the mn10200. Wed Feb 26 07:11:03 1997 Michael Meissner * libc/machine/powerpc/setjmp.S (longjmp): Correct return status (patch from andrew@pogo.WV.TEK.COM). Fri Feb 14 11:49:28 1997 Doug Evans * libc/machine/m32r/setjmp.S (setjmp): Save r12. (longjmp): Restore r12. Fix code that handles returning 1 if passed 0. Mon Feb 10 10:02:34 1997 Fred Fish * configure.in: Add cases for "tic80" to set machine_dir, sys_dir, and syscall_dir. Sun Feb 2 17:57:15 1997 Geoffrey Noer * libc/sys/cygwin32/crt0.c: initialize floating pt registers Wed Jan 29 15:57:38 1997 Geoffrey Noer * libc/include/math.h: avoid conflicts with ANSI C++ Mon Jan 27 12:50:01 1997 Doug Evans * libc/machine/m32r/setjmp.S: Use proper comment delimiter. Use proper constant prefix. Fri Jan 24 10:59:04 1997 Jeffrey A Law (law@cygnus.com) * libc/sys/sysmec/*.c: Don't cast args to syscall to integers, that loses on the mn10200 where ints and pointers are different sizes. Tue Jan 14 13:29:55 PST 1997 Jeremy Allison * configure.in: Added -DSIGNAL_PROVIDED to cygwin32 target as signal is provided in winsup. Tue Jan 14 11:10:13 1997 Jeremy Allison * libc/include/sys/process.h: Corrected const definitions in spawn functions. Added cwait. Thu Jan 2 12:22:41 1997 Jeffrey A Law (law@cygnus.com) * libc/include/machine/ieeefp.h: mn10200 uses 16bit ints and 32bit doubles. * libc/include/sys/config.h: Similarly. Tue Dec 31 18:36:14 1996 Michael Meissner * configure.in (sparc-sun-sunos*): Add -DSIGNAL_PROVIDED to the target_cflags. (i[3456]86-*-sco*): Ditto. * libc/signal/Makefile.in (OFILES): Add signal.o. (CFILES): Add signal.c. * libc/signal/raise.c (_raise_r): Only compile code if SIGNAL_PROVIDED is defined. * libc/signal/signal.c: Redo whole file so that it works with current newlib. Use _kill_r if no signal handler provided. * libc/sys/{go32,sparc64,sysmec}/Makefile.in: Delete raise and signal stubs. * libc/sys/sysvnecv70/Makefile.in: Ditto. * libc/sys/sysnecv850/Makefile.in: Ditto. * libc/sys/{go32,sparc64}/signal.c: Delete, stub no longer used. * libc/sys/sysmec/{raise,signal}.c: Ditto. * libc/sys/sysvnecv70/signal.s: Ditto. * libc/sys/sysnecv850/raise.c: Ditto. * libc/sys/sysnecv850/kill.c (_kill): Encode signal # so that simulator and debugger can tell the difference between a signal being raised and an exit system call. * NEWS: Document software signals being provided. Mon Dec 23 11:54:19 1996 Michael Meissner * libc/reent/impure.c (_REENT_ATTR): Delete in favor of __ATTRIBUTE_IMPURE_PTR__. Move PowerPC definition to include/sys/config.h. (impure_data): Use __ATTRIBUTE_IMPURE_DATA__ for attributes. Change from 'inpure_data'. (_impure_ptr): Use __ATTRIBUTE_IMPURE_PTR__ for attributes. Use &impure_data, not &inpure_data. * libc/include/sys/config.h (__ATTRIBUTE_IMPURE_PTR__): If PowerPC and and System V ABI, define so that _impure_ptr lives in the .sdata section. Sun Dec 22 23:33:05 1996 Michael Meissner * libc/include/sys/reent.h (__ATTRIBUTE_IMPURE_PTR__): Define as nothing if not defined. (_impure_ptr): Use __ATTRIBUTRE_IMPURE_PTR__, so a machine can set its attributes. * libc/include/sys/config.h (__ATTRIBUTE_IMPURE_PTR__): Wed Dec 18 10:12:04 1996 Jeffrey A Law (law@cygnus.com) * libc/sys/sysmec/crt0.S: Fix mn10200 stuff. * libc/sys/sysmec/trap.s: Handle mn10200 too. * libc/machine/mn10200/setjmp.S: Fix mn10200 stuff. Mon Dec 16 10:05:36 1996 Jeffrey A Law (law@cygnus.com) * libc/sys/sysmec/crt0.S: Handle mn10200 too. Fri Dec 13 11:05:20 1996 Jeremy Allison * libc/include/sys/errno.h: Added net errno's. Wed Dec 11 16:24:25 1996 Michael Meissner * libc/misc/ffs.c: New file to support ffs function for GCC test gcc.c-torture/execute/960909-1.c. * libc/misc/Makefile.in ({O,CHEWOUT_}FILES): Add ffs. Sat Dec 7 10:12:37 1996 Jeffrey A Law (law@cygnus.com) * libc/sys/sysmec/crt0.S: Handle underscore prefix. * libc/sys/sysmec/trap.S: Likewise. Fri Dec 6 15:08:49 1996 Jim Wilson * configure.in (mips*vr4300*-*-*): Delete use of sys/vr4300. * libc/sys/vr4300/{Makefile.in,crt0.S,syscalls.c}: Delete. Wed Dec 4 16:25:27 1996 Jeffrey A Law (law@cygnus.com) * libc/sys/sysmec/signal.c: Dummy file. * libc/sys/sysmec/Makefile.in: Build it. Wed Nov 27 13:10:18 1996 Ian Lance Taylor * libc/machine/mips/machine/regdef.h: Define pc as $pc for mips16. Mon Nov 25 09:58:28 1996 Jeffrey A Law (law@cygnus.com) * libc/sys/sysmec/{crt0.S,trap0.S}: Actually try to implement c-startup and simulator traps. * libc/sys/sysmec/crt0.S: Remove bogus '_' symbol prefixing * libc/sys/sysmec/trap0.S: Likewise. Sat Nov 23 09:01:03 1996 Michael Meissner * libc/stdlib/mallocr.c (ROUND_TO): If SMALL_MEMORY, set to 0x7 to round to double word alignment. (_morecore_r): Combine rounding up pointers to both ROUND_TO and 8 byte alignment. * libc/include/sys/config.h (__IEEE_BIG_ENDIAN): Define if d10v. * libc/sys/d10v/syscalls.c (_sbrk): Add better checks for running out of memory. Mon Nov 18 13:08:26 1996 Jeffrey A Law (law@cygnus.com) * configure.in: Handle mn10200 and mn10300. * libc/include/machine/{ieeefp.h,setjmp.h}: Likewise. * libc/include/sys/config.h: Likewise. * libc/sys/sysmec: New directory for mec stuff. * libc/machine/mn10300: New directory for mn10300 stuff. * libc/machine/mn10200: Similarly for mn10200 stuff. Fri Nov 15 16:41:41 1996 Doug Evans * libc/sys/arm/crt0.S: Use .text, not .section .text. * libc/sys/arm/syscalls.c: Rewrite to set errno properly. * libc/include/sys/types.h (_ST_INT32): New macro, local to file. (nlink_t): Change type from unsigned int to unsigned short. (mode_t): Ensure size is 32 bits even if int is 16. * libc/include/sys/stat.h (st_nlink): Change type to nlink_t. (st_spare[123]): Change type from int to long. Fri Nov 15 11:41:50 1996 Michael Meissner * libc/sys/d10v/syscalls.c (_sbrk): Align initial heap_end to 8 byte boundary. * configure.in (d10v*): Define SMALL_MEMORY. Mon Nov 11 10:30:44 1996 Michael Meissner * configure.in (powerpc*-{eabi,elf,linux,rtem,sysv,solaris}*): Add -mrelocatable-lib and -mno-eabi flags. Mon Nov 11 09:01:39 1996 Jeffrey A Law (law@cygnus.com) * libc/machine/h8300/memcpy.S: Fix comments to reflect reality. Fix handling of mis-aligned source operand when both the destination & length are properly aligned. Wed Oct 30 09:41:11 1996 Jeffrey A Law (law@cygnus.com) * libc/sys/sysnecv850/Makefile.in (OFILES): Add times.o, time.o and gettime.o * libc/sys/sysnecv850/{time.c, times.c, gettime.c}: New files. * libc/sys/sysnecv850/sys/syscall.h: Add SYS_times and SYS_gettimeofday. Tue Oct 29 13:40:09 1996 Jeffrey A Law (law@cygnus.com) * libc/sys/sysnecv850/Makefile.in (OFILES): Add access.o * libc/sys/sysnecv850/access.c: New file. Mon Oct 21 19:47:02 1996 Ian Lance Taylor * libc/sys/vr4300/Makefile.in (clean): Remove $(OFILES). * libc/stdlib/mprec.h (word0, word1): Use __uint32_t, not unsigned long. Mon Oct 21 14:43:07 1996 Jeffrey A Law (law@cygnus.com) * libc/sys/sysnecv850/crt0.S: Initialize ep and gp registers. Thu Oct 17 11:47:16 1996 Doug Evans * libc/include/machine/{ieeefp.h,setjmp.h}: Add m32r support. * libc/include/sys/config.h: Add m32r support. Wed Oct 16 23:08:05 1996 Jeffrey A Law (law@cygnus.com) * libc/sys/sysnecv850/v850.ld: Remove. It doesn't belong here. Wed Oct 16 21:18:07 1996 Mark Alexander * libc/include/machine/setjmp.h: Add D10v support. Tue Oct 15 22:28:26 1996 Jeffrey A Law (law@cygnus.com) * configure.in: Configure the "libc/syscalls" directory for the v850. * libc/sys/sysnecv850/{close.c, execve.c, fork.c}: Add missing '_'. * libc/sys/sysnecv850/{fstat.c, getpid.c, kill.c}: Likewise. * libc/sys/sysnecv850/{lseek.c, open.c, read.c}: Likewise. * libc/sys/sysnecv850/{sbrk.c, stat.c, unlink.c}: Likewise. * libc/sys/sysnecv850/{wait.c, write.c}: Likewise. Tue Oct 15 16:24:39 1996 Stu Grossman (grossman@critters.cygnus.com) * libc/sys/sysnecv850/crt0.S (start): Allocate spill space on stack for args for main and other routines. Zero out args for main. * libc/sys/sysnecv850/v850.ld: New. Linker script to layout memory correctly. Tue Oct 15 11:51:42 1996 Michael Meissner * libc/stdio/findfp.c (std): Remove extraneous ';' after function. * libc/sys/d10v/sys/syscall.h (SYS_kill): Add. * libc/sys/d10v/{syscalls.c,trap.S} (_kill,_getpid): Make these real system calls now. * libc/stdio/setvbuf (setvbuf): Cast pointers to _POINTER_INT before casting them to int. * libc/stdio/tmpnam.c (_tempnam_r): Ditto. * libc/stdlib/mallocr.c (_morecore_r): Use _POINTER_INT when aligning pointer. * libc/string/memset.c (memset): Ditto. * libc/stdio/vfscanf.c (__svfscanf): When converting to pointer, first convert ints to _POINTER_INT to eliminate GCC warning. * libc/stdio/vfprintf.c (_vfprintf_r): Use _POINTER_INT when processing %p. * libm/math/ef_scalb.c (__ieee754_scalbf): Cut down range to 32000 from 65000 if ints are only 16 bits. * libm/math/sf_scalbn.c (scalbnf): Cut down overflow test to 30000 from 50000 if ints are only 16 bits. * libc/include/sys/config.h (_POINTER_INT): New macro, to give an int type that is the same size as a pointer. * libc/misc/dprintf.c (__dprintf): Use _POINTER_INT when processing %p. (get_number): Explicitly cast number to long before shifting by 16 or 24, in case ints are short. * libc/include/sys/config.h (_POINTER_INT): Define as short. Wed Oct 9 16:54:32 1996 Jeremy Allison * libc/string.h: Added ffs, removed swab. * libc/sys/errno.h: Added EOPNOTSUPP. * libc/sys/unistd.h: Added swab. Thu Oct 3 17:08:50 1996 Jeremy Allison * libc/include/sys/stat.h: Added fchmod. * libc/include/sys/unistd.h: Added fsync. Tue Oct 1 17:34:08 1996 Jeremy Allison * libc/include/sys/errno.h: Added defines for EPFNOSUPPORT (96) and ECONNRESET (104) for cygwin32. Tue Oct 1 16:24:05 1996 Gavin Koch * libc/sys/sysnecv850/_exit.c: added _do_dtors to do the static destructors. Mon Sep 30 15:59:05 1996 Stu Grossman (grossman@critters.cygnus.com) * libc/sys/sysnecv850/trap.S: Change I/O to use trap 31. Mon Sep 30 12:02:50 1996 Doug Evans * libc/machine/m32r/{Makefile.in,setjmp.S}: New files. * configure.in: Recognize m32r-*-*. Mon Sep 30 00:34:41 1996 James G. Smith * libc/sys/arm/trap.S (__rt_stkovf_split_big, __rt_stkovf_split_small): Added default software stack overflow handlers, which just call SWI_Exit. * libc/sys/arm/crt0.S (_mainCRTStartup): Simple software stack limit initialisation. Fri Sep 27 13:08:03 1996 Mark Alexander * libc/sys/d10v/{trap.S,sys/syscall.h}: Add time() function. Fri Sep 27 12:32:00 1996 Jeremy Allison * libc/include/sys/types.h: Added ssize_t definition. Wed Sep 25 14:52:18 1996 Michael Meissner * libc/machine/d10v/setjmp.S: Use ';' for comments. * libc/sys/d10v/{crt0.S,trap.S}: Ditto. * libc/machine/d10v/setjmp.S (longjmp): Use exef0t || instead of branch around a single ldi instruction. * libc/sys/d10v/crt0.S (_start): Use auto-increment to zero bss. Call exit, instead of just issuing a stop instruction. Sun Sep 22 17:26:55 1996 Michael Meissner * libc/sys/d10v/{trap.S,syscalls.c}: Add -mint32 support. Fri Sep 20 13:23:12 1996 Michael Meissner * libc/stdlib/mprec.h: Explicitly declare all large constants as longs, and then cast them to __uint32_t. * libc/include/sys/config.h: Protect against multiple inclusions. Tue Sep 17 13:10:33 1996 Mark Alexander * configure.in (d10v*): Set syscall_dir. Sun Sep 15 10:41:59 1996 Mark Alexander * libc/sys/d10v/crt0.S: Set stack pointer. Thu Sep 12 13:02:38 1996 Mark Alexander * libc/sys/d10v/{trap.S, syscalls.c}: Rewrite most system calls in assembly for efficiency. Change calling convention to allow long ints to be returned. Wed Sep 11 10:28:18 1996 Michael Meissner * libc/machine/v850/Makefile.in (setjmp.o): Fix dependency. Thu Sep 5 19:23:06 1996 Doug Evans * libc/posix/execvp.c (execvp): Don't search PATH if file has '/'. Handle empty entries in $PATH. Tue Sep 03 18:15:02 1996 Mark Alexander * libc/machine/d10v/setjmp.S: Make it really work. Tue Sep 3 12:16:26 1996 Ian Lance Taylor * libc/sys/sh/crt0.S: If __ELF__, use ELF section attributes for the .stack section. Tue Sep 3 10:08:45 1996 Jeffrey A Law (law@cygnus.com) * sys/sysnecv850/sys/file.h: Remove. * sys/sysnecv850/sys/syscall.h: New file. * sys/sysnecv850/{misc.c,syscalls.c,malloc.c}: Deleted. * sys/sysnecv850/{chmod.c, chown.c, close.c, creat.c} New files. * sys/sysnecv850/{execv.c, execve.c, fork.c, fstat.c} New files. * sys/sysnecv850/{getpid.c, isatty.c, kill.c, lseek.c} New files. * sys/sysnecv850/{open.c, pipe.c, raise.c, read.c} New files. * sys/sysnecv850/{stat.c, unlink.c, utime.c, wait.c} New files. * sys/sysnec850/trap.S: New file. * sys/sysnecv850/{_exit.c, write.c}: Use new TRAP0 mechanism for syscalls. * sys/sysnecv850/crt0.S: Use cmp/bl, not tst/bz. * sys/sysnec850/sbrk.c: New version. Sun Sep 1 20:08:27 1996 Jeffrey A Law (law@cygnus.com) * sys/sysnecv850/crt0.S: Fix order of comparison args. Loop as long as r6 is less than r7. Sun Sep 1 13:54:19 1996 Ian Lance Taylor * Makefile.in (mostlyclean): Separate from clean target. Don't remove *.a or targ-include. * libc/machine/sparc/Makefile.in (mostlyclean): New target. Sun Sep 1 11:35:26 1996 Michael Meissner * libc/include/machine/ieeefp.h (_DOUBLE_IS_32BITS): Define for d10v. (__SMALL_BITFIELDS): Ditto. * libc/include/sys/config.h (_DOUBLE_IS_32BITS): Define for d10v. Sat Aug 31 16:42:36 1996 Jeffrey A Law (law@cygnus.com) * libc/sys/sysnecv850/misc.c (raise, getpid, kill): Remove '_' prefix. * libc/sys/sysnecv850/sbrk.c (sbrk): Remove '_' prefix. * libc/sys/sysnecv850/syscalls.c (read, lseek, close): Likewise. * libc/sys/sysnecv850/syscalls.c (fstat, open, close): Likewise. * libc/sys/sysnecv850/write.c (write): Likewise. * libc/sys/sysnecv850/crt0.S: Don't try to zero out an empty .bss. Fri Aug 30 11:18:45 1996 Michael Meissner * libc/include/sys/config.h: Define INT_MAX, UINT_MAX appropriately for D10V, depending on -mint16/-mint32. Thu Aug 29 16:09:37 1996 Mark Alexander * configure.in: Add cases for D10V. Thu Aug 29 17:03:23 1996 Michael Meissner * configure.in (i[345]86-*-*): Recognize i686 for pentium pro. Wed Aug 28 21:05:52 1996 Jeffrey A Law (law@cygnus.com) * libc/include/machine/ieeefp.h: Fix typo. Wed Aug 28 19:47:55 1996 Mark Alexander * libc/sys/d10v: New directory for D10V stuff. * libc/include/machine/ieeefp.h: Add D10V defines. Mon Aug 26 13:34:58 1996 Doug Evans * libc/include/sys/errno.h: Add winsup/include/sys/errno.h values: ELOOP, ENOBUFS, EAFNOSUPPORT, EPROTOTYPE, ENOTSOCK, ENOPROTOOPT, ESHUTDOWN, ECONNREFUSED, EADDRINUSE, ECONNABORTED, EWOULDBLOCK. * libc/string/strerror.c (strerror): Add them. Thu Aug 22 16:38:19 1996 Jeffrey A Law (law@cygnus.com) * libc/sys/sysnecv850: New directory for v850 stuff. * libc/machine/v850: New directory for v850 stuff. * libc/machine/v850/setjmp.S: setjmp/longjmp support. * configure.in: Add support for the v850. * libc/include/machine/ieeefp.h: Add v850 defines. * libc/include/machine/setjmp.h: Likewise. * libc/include/sys/config.h: Add v850 defines. Sat Aug 17 04:06:36 1996 Geoffrey Noer * libc/include/machine/ieeefp.h * libc/include/machine/setjmp.h * libc/include/sys/fcntl.h * libc/include/sys/signal.h * libc/include/sys/types.h * libc/stdlib/system.c: Fix preprocessor defines to match new scheme (_WIN32 for WIN32 API availability, __CYGWIN32__ for cygwin32 environment specific). Thu Aug 15 17:09:21 1996 Geoffrey Noer * libc/include/stdlib.h: add multibyte character functions. Add __eprintf for assert. Thu Aug 15 11:15:40 1996 Michael Meissner * libc/stdlib/malloc.h (MALLOC_ALIGNMENT): Use either pointer arithmetic or __alignof__ to properly get the alignment, instead of hardwiring it to 4. Wed Aug 14 23:43:28 1996 Geoffrey Noer * libc/stdio/fseek.c: add fflush call to adjust seek offset on append stream (fix from NetBSD sources), adjust curoff offset for ungetc's benefit. * libc/stdio/ftell.c: adjust curoff offset for ungetc's benefit. * libc/stdio/rewind.c: replace code with up to date NetBSD code to undo hacks made to work around above problem of not having fflush call mentioned above Fri Aug 2 18:28:07 1996 J.T. Conklin * libc/reent/{closer.c, execr.c, fstatr.c, linkr.c, lseekr.c, openr.c, readr.c, sbrkr.c, signalr.c, statr.c, timer.c, writer.c}: Partially revert last changes. The thread specific errno is set iff if the underlying syscall fails and the global errno is not zero. Fri Jul 19 11:41:52 1996 J.T. Conklin * libc/reent/filer.c: Removed files, all functions have split out into their own files. * libc/reent/{closer.c, lseekr.c, openr.c, readr.c, writer.c}: New files containing functions formally in filer.c * libc/reent/Makefile.in: Updated for above change. * libc/reent/execr.c (_fork_r, _wait_r): Set errno if underlying syscall fails, not if errno is changed. * libc/reent/filer.c (_open_r, _close_r, _lseek_r, _read_r, _write_r): Likewise. * libc/reent/fstatr.c (_fstat_r): Likewise. * libc/reent/linkr.c (_link_r, _unlink_r): Likewise. * libc/reent/sbrkr.c (_sbrk_r): Likewise. * libc/reent/signalr.c (_kill_r): Likewise. * libc/reent/statr.c (_stat_r): Likewise. * libc/reent/timer.c (_gettimeofday_r): Likewise. * libc/reent/{execr.c, filer.c, fstatr.c, linkr.c, sbrkr.c, signalr.c, statr.c, timer.c} (errno): declare extern rather than as a common. * libc/stdio/vfprintf.c (__sbprintf): Use the VFPRINTF macro instead of calling vfprintf so that i*printf will not require floating point support code. Mon Jul 15 16:50:59 1996 Doug Evans * libc/posix/execvp.c (execvp): Use posix_path_list_p to determine path delimiter. * libc/include/sys/unistd.h (_SC_PATH_RULES): Delete. (_PATH_RULES_{UNKNOWN,WIN32,POSIX}): Delete. Thu Jul 11 14:34:14 1996 Geoffrey Noer * libc/include/signal.h: _sig_func_ptr function takes an int * libc/include/sys/signal.h: sa_handler function takes an int Tue Jul 9 21:22:32 1996 Jeffrey A Law (law@cygnus.com) * libc/include/machine/ieeefp.h: Simplify H8/S support. * libc/include/sys/config.h: Add missing H8/S conditional. Sun Jun 30 12:05:46 1996 Doug Evans * libc/include/sys/unistd.h (MAXPATHLEN): Add cygwin32 value. Wed Jun 26 09:57:54 1996 Jeffrey A Law (law@cygnus.com) * libc/include/machine/setjmp.h: Handle H8/S. * libc/include/machine/ieeefp.h: Likewise. * libc/include/sys/config.h: Likewise. * libc/machine/h8300/{defines.h, memcpy.S, memset.S}: Likewise. * libc/machine/h8300/{reg_memcpy.S, reg_memset.S}: Likewise. * libc/machine/h8300/{strcmp.S, setjmp.S}: Likewise. * libc/sys/h8300hms/crt0.S: Likewise. Tue Jun 25 23:15:45 1996 Jason Molenda (crash@godzilla.cygnus.co.jp) * Makefile.in (datadir): Set to $(prefix)/share. (oldincludedir, docdir): Removed. * doc/Makefile.in (datadir): Set to $(prefix)/share. (oldincludedir, docdir): Removed. * libc/Makefile.in (datadir): Set to $(prefix)/share. (oldincludedir, docdir): Removed. * libm/Makefile.in (datadir): Set to $(prefix)/share. (oldincludedir, docdir): Removed. Fri Jun 21 19:24:41 1996 Ian Lance Taylor * libc/include/sys/reent.h (_REENT_INIT): Update for change to _reent struct. Wed Jun 19 14:00:09 1996 Doug Evans * libc/posix/execvp.c: Delete _WIN32 support. For __CYGWIN32__ fetch current path rules with sysconf and handler posix/win32 appropriately. * libc/include/sys/unistd.h (_PATH_RULES{,_POSIX,_WIN32}): Define. * libc/include/process.h: Prepend '_' to P_{WAIT,NOWAIT,OVERLAY}. (WAIT_CHILD): Always define. Sat Jun 15 17:50:42 1996 Ian Lance Taylor * libc/stdlib/eprintf.c: New file. * libc/stdlib/Makefile.in (OFILES): Add eprintf.o. (eprintf.o): New target. Thu Jun 13 16:44:32 1996 Doug Evans * libc/sys/cygwin32/crt0.c (__cygwin_crt0_bp): New global. (mainCRTStartup): Do int3 if __cygwin_crt0_bp non-zero. Thu Jun 13 17:45:17 1996 Mike Meissner * libc/include/machine/ieeefp.h: Add support for AIX and Windows NT in PowerPC endianess cases. Tue Jun 11 12:26:28 1996 Michael Meissner * libc/include/machine/ieeefp.h: Clean up PowerPC endianess. Thu Jun 6 11:34:20 1996 Michael Meissner * libc/string/strtok.c: Fix doc typo. Mon Jun 3 11:30:00 1996 J.T. Conklin * libc/include/sys/reent.h (struct _reent): Removed _asctime, _next, _scanpoint, _signgam fields. * libc/include/stdlib.h (rand_r): Added new declaration. (_rand_r, _srand_r): Removed declarations. * libc/stdlib/rand.c (_rand_r, _srand_r): Removed, these functions have been made obsolete by rand_r. * libc/stdlib/rand_r.c: New file, rand_r function as specified by POSIX.1c. * libc/string/strtok.c: Update documentation to describe strtok_r(). Sat Jun 1 23:50:39 1996 Michael Meissner * libc/include/sys/stat.h (stat structure): Use the expanded stat structure on Solaris, and PowerPC systems even though __svr4__ is defined. Tue May 28 13:02:42 1996 Doug Evans * libc/sys/go32/sys/errno.h (ENOSYS,ESPIPE): Keep values <= 255. Fri May 17 10:34:44 1996 Ian Lance Taylor * host/any: Use ../.. rather than .. to get to the main build directory. This matches the current layout of the build directory. Wed May 15 15:52:27 1996 Jeffrey A Law (law@cygnus.com) * libc/machine/h8300/__main.S: Delete. No longer needed. * libc/machine/h8300/Makefile.in: Corresponding changes. * libc/sys/h8300hms/crt1.c: New file. * libc/sys/h8300hms/Makefile.in: Corresponding changes. * libc/sys/h8300hms/crt0.s: Call __main. * libc/sys/h8300hms/crt0.S: Use temporary label names for branch targets. Mon May 13 14:26:30 1996 Doug Evans * libc/stdio/fopen.c (_fopen_r): Fix arguments to fseek. Fri May 3 16:38:23 1996 Michael Meissner * libc/reent/impure.c (_impure_ptr): Force the impure pointer into .sdata on the PowerPC so that we can link newlib with code compiled with -msdata. Mon Apr 29 21:38:02 1996 Doug Evans * libc/sys/arm/syscalls.c (_sbrk): Rename end to __end__. Thu Apr 25 06:38:59 1996 Michael Meissner * libc/sys/cygwin32/crt0.c (mainCRTStartup): On PowerPC, set the exception handler to __cygwin_exception_handler. Tue Apr 23 15:14:20 1996 Ian Lance Taylor * libc/include/machine/setjmp.h: Check _AM29K, not ___AM29K__. Sun Apr 21 12:11:51 1996 Doug Evans * libm/math/Makefile.in ({w,wf}_cabs.o,{w,wf}_drem.o): Add rule for SunOS VPATH. * libc/stdlib/Makefile.in (atoff.o,atol.o,mblen.o,mbstowcs.o, wcstombs.o): Likewise. Thu Apr 18 12:37:01 1996 Doug Evans * libc/stdlib/environ.c (initial_env): New static local. (environ): Point to `initial_env'. * libc/include/machine/setjmp.h: Clean up. (__H8300H__,__PPC__): Define _JBTYPE. (__arm__): Provide entry for. (sigjmp_buf): Delete. (jmp_buf): Use _JBTYPE if defined, otherwise int. Thu Apr 18 12:10:52 1996 Jeffrey A Law (law@cygnus.com) * libc/machine/h8300/strcmp.S: Sign extend the result to 32bits so we don't lose with -mint32. Sun Apr 14 19:59:52 1996 Doug Evans * libc/sys/go32/sys/errno.h: New file. * libc/sys/go32/Makefile.in (stat.o): Depend on stat.c. * libc/sys/go32/gerrno.s (syscall_error): Call __errno to get errno's address (make compatible with rest of newlib). * libc/sys/go32/stat.c (fixinode): Set errno upon failure. * libc/string/strerror.c (strerror): Surround each case with #ifdef. Thu Mar 28 13:44:42 1996 Doug Evans * libc/machine/sparc/{scan.c,shuffle.c}: New files. * libc/machine/sparc/Makefile.in: Build them. * libc/machine/sparc/machine/sparclet.h: New file. Mon Mar 25 15:29:14 1996 J.T. Conklin * libc/machine/sh/asm.h: New file. * libc/machine/sh/setjmp.S: Only save clobbered registers. Added support for SH3e's FP registers. Use asm.h. Mon Mar 25 11:59:23 1996 Jeffrey A Law (law@cygnus.com) * libc/stdio/vfprintf.c (cvt): Accept a reent structure as first argument. Call _dtoa_r and pass the reent structure instead of calling __dtoa. Fri Mar 22 13:59:37 1996 Jeffrey A Law (law@cygnus.com) * libc/include/sys/config.h: Define DOUBLE_IS_32BITS for the h8300, h8500, and others. Add comments for some rather dubious code. Thu Mar 14 18:04:43 1996 Ian Lance Taylor * Makefile.in (check): Check that testsuite exists before cd. Tue Mar 12 11:46:47 1996 Michael Meissner * libc/include/string.h (strsep): Correct prototype. Mon Mar 11 09:55:19 1996 Doug Evans * libc/sys/h8300/_exit.c (_exit,__exit): Set r0 to 0 before `sleep'. * libc/sys/h8300/misc.c (_kill): Set r0 to indicate abort and `sleep'. * libc/sys/h8300/crt0.S (_start): Call exit instead of `sleep'. Wed Mar 6 11:51:55 1996 Doug Evans * libc/posix/{creat.c,isatty.c}: New files. * libc/posix/Makefile.in (OFILES): Add creat.o, isatty.o. * libc/sys/sparc64/crt0.S (environ): Delete. (.LHaveBias): Renamed from HaveBias. Thu Feb 15 10:48:37 1996 Doug Evans * libc/stdlib/mallocr.c (etext): Move decl inside ifdef WARN_VLIMIT. (_morecore_r): Delete SBRK_IS_ALLOC support. Tue Feb 13 09:44:09 1996 Michael Meissner * libc/sys/cygwin32/Makefile.in (lib.a): Make lib.a with a dummy module rather than touch, so we don't get warning messages when all of the libraries are combined into libc.a. Tue Feb 13 06:32:07 1996 Doug Evans * libc/sys/sparclite/{Makefile.in,crt0.s}: Deleted. crt0.s replaced by version in libgloss. Mon Feb 5 15:17:51 1996 J.T. Conklin * libc/reent/Makefile.in (OFILES): Add impure.o. * libc/reent/impure.o: New file, define initial reentrancy struct. * libc/reent/reent.c: Remove above definition. * libm/math/sf_asinh.c: Fix typo. * Makefile.in (MATHOBJS_IN_LIBC): Removed sr_ldexp.o and srf_ldexp.o. * libm/libm.texinfo: Change documentation to reflect changes in reentrancy model. * libm/math/w_gamma.c: Likewise. Wed Jan 31 18:49:45 1996 Steve Chamberlain * configure.in (*-*-cygwin32): New. (*-*-win32): Deleted. * libc/sys/win32 renamed libc/sys/cygwin32. Tue Jan 30 22:09:03 1996 Michael Meissner * libc/include/sys/file.h: New include file. Fri Jan 26 15:52:54 1996 Steve Chamberlain * libc/include/machine/setjmp.h: Increase size of PPC jmp_buf. Tue Jan 23 17:49:16 1996 Steve Chamberlain * libc/include/sys/wait.h (WIFSIGNALED): Fix. Tue Jan 16 09:28:10 1996 Michael Meissner * doc/makedoc.c (realloc): Declare at file scope. (catchar): Not here. Wed Dec 27 15:45:23 1995 Doug Evans * Makefile.in (VERSION): Update to 1.7.0. * {libc,libm}/Makefile.in (VERSION): Likewise. * configure.in: Minor clean up of multilib stuff. From David Johnson * {libc,libm}/Makefile.in (lib[cm].a): Delete library first. * libc/stdlib/environ.c: New file. * libc/stdlib/Makefile.in (OFILES): Build it. * libc/sys/h8500hms/crt0.c (environ): Deleted. * libc/sys/m88kbug/crt0.c (environ): Deleted. * libc/sys/z8ksim/crt0.c (environ): Deleted. * libc/sys/netware/environ.c: Deleted. Tue Dec 19 15:24:46 1995 Kim Knuttila * configure.in (links): set sys_dir, posix_dir, syscall_dir Wed Dec 13 04:16:25 1995 Michael Meissner * doc/makedoc.c (init_string_with_size,nextword): Move malloc declaration out to external scope and declare it PTR, not char *. Mon Dec 11 17:35:12 1995 steve chamberlain * libc/include/sys/unistd.h (getpagesize): New declaration. (_SC_PAGESIZE): New definition. * libc/include/time.h (CLK_TCK): Defined as CLOCKS_PER_SEC. * libc/configure.in (i[345]86-*-win32): Remove -DNO_FORK. Fri Dec 1 16:48:46 1995 James G. Smith * libc/sys/vr4300/syscalls.c (sbrk): Fixed memory addressing. System call returns size, not (last address + 1). Thu Nov 30 15:05:26 1995 J.T. Conklin * libm/math/*.c: Removed _foo_r() reentrancy API. * libc/include/math.h: Removed _foo_r prototypes and macros. * libm/math/*.c: On systems with IEEE single precision "doubles" move foo() -> foof() wrapper code from the files that implement the standard IEEE double precision functions to the files that implement IEEE single precision functions. (ie. On those systems sin is moved from s_sin.c to sf_sin.c). There should eventually be use of a C extension (like gcc's alias attribute) so that the wrappers are not needed at all. * libc/sys/sysnec810/sbrk.c: Cast &end to char * to get around strict NEC V810 compiler. * libc/misc/dprintf.c (getnumber): Cast char * to unsigned char * for same reason. Wed Nov 29 14:25:05 1995 J.T. Conklin * libc/stdlib/strtol.c (_strtol_r): Replaced with implementation from NetBSD C library. * libc/stdlib/strtoul.c (_strtoul_r): Likewise. * libc/stdlib/assert.c (__assert): Renamed from __assertfail and adapted from implementation I wrote for NetBSD C library. The difference is __assert doesn't take a format argument, so that there won't be multiple copies of the same string constant in the executable if assertions are enabled in more than one source module. * libc/include/assert.h (assert): Changed to call __assert. Tue Nov 28 16:54:26 1995 J.T. Conklin * libc/stdlib/strtod.c (_strtod_r): Changed to not assign to word1 on systems with 32 bit doubles. * libc/stdlib/qsort.c (qsort): Cast some void *'s to char *'s so that we can do arithmetic on them. * libc/misc/dprintf.c: Changed to support stdarg.h for ANSI compilers. Tue Nov 28 16:03:32 1995 Doug Evans * libc/sys/arm/crt0.S: Zero bss. Fri Nov 24 16:09:23 1995 Doug Evans * libc/include/unctrl.h: New file. * libc/misc/{Makefile.in,dprintf.c,unctrl.c,misc.tex}: New files. * configure.in (subdirs): Add libc/misc. * libc/Makefile.in (SUBDIRS): Add misc. (SUBLIBS): Add misc/lib.a. * libc/include/sys/reent.h (struct _reent): Make __sf last member. Wed Nov 22 19:49:47 1995 Doug Evans * libc/stdio/vfprintf.c (__sbprintf): Init fake._data. (_vfprintf_r): Call CHECK_INIT. Tue Nov 14 02:52:12 1995 Doug Evans * Makefile.in (MULTITOP): Delete. (MULTISRCTOP, MULTIBUILDTOP): Add. * configure.in: Delete call to cfg-ml-com.in. Call config-ml.in instead of cfg-ml-pos.in. Wed Nov 8 01:24:08 1995 James G. Smith * libc/sys/vr4300/syscalls.c: Added clean version of sbrk(). * libc/sys/vr4300/crt0.S: Cleaned up. Added check for FPU presence. Thu Nov 2 22:25:06 1995 Michael Meissner * libc/string/strtok.c: Include string.h to pick up strtok_r prototype. Wed Nov 1 18:54:11 1995 Jason Molenda (crash@phydeaux.cygnus.com) * libc/string/strtok.c: include <_ansi.h>. * libc/time/asctime_r.c: `reresult' -> `result'. Wed Nov 1 14:35:52 1995 J.T. Conklin * libc/time/{ctime.c, gmtime.c, lcltime.c}: Wrap functions in #ifndef _REENT_ONLY ... #endif conditional. * libc/include/string.h (_strtok_r): Remove declaration. * libc/include/time.h (_asctime_r): Remove declaration. * libc/string/strtok.c (_strtok_r): Removed. * libc/time/asctime.c (_asctime_r): Removed. * libc/string/Makefile.in (OFILES): Add new object. * libc/string/strtok_r.c: New file. strtok_r function as specified by POSIX.1c, adapted from strtok implementation from NetBSD C library. * libc/string/strtok.c (strtok): Reimplemented in terms of strtok_r. * libc/time/Makefile.in (OFILES): Add new objects. * libc/time/{asctime_r.c, ctime_r.c, gmtime_r.c, lcltime_r.c}: New files, reentrant time functions specified by POSIX.1c. * libc/time/{asctime.c, ctime.c, gmtime.c, lcltime.c}: Non- reentrant time functions re-written in terms of reentrant functions. * libc/time/lcltime.c: Renamed from localtime.c * libc/include/time.h: Add prototypes for asctime_r, ctime_r, gmtime_r, and localtime_r. Sat Oct 28 14:34:31 1995 steve chamberlain * libc/sys/win32/crt0.c (mainCRTStartup): Call cygwin_crt0. * libc/include/sys/unistd.h (getlogin): Revert change of Oct 19. * libc/include/sys/signal.h (sigprocmask): Change prototype so it compiles with c++. Wed Oct 25 15:43:18 1995 Michael Meissner * libc/include/machine/setjmp.h (PowerPC _JBLEN): Consider it a PowerPC if __PPC__ is defined. Bump jump_buf length to 62 ints, to give some room in case we need to align the jmp_buf. * libc/machine/powerpc/setjmp.S (setjmp, longjmp): Rewrite to use the new ppc-asm.h include file the compiler provides to specify function prologue/epilogue. Eliminate saves of the xer and ctr registers, which are volatile. Before starting to save registers, align to 8 byte boundary. Mon Oct 23 11:20:51 1995 James G. Smith * libc/sys/vr4300/syscalls.c: Added empty kill() function, referenced by standard libraries. Thu Oct 19 21:39:47 1995 Fred Fish * libc/unix/Makefile.in, libc/string/Makefile.in, libc/stdio/Makefile.in, libc/reent/Makefile.in, libc/posix/Makefile.in: Remove tabs from otherwise empty line. Confuses some older non-GNU versions of "make". Thu Oct 19 16:32:17 1995 steve chamberlain * libc/sys/unistd.h (getlogin): Returns const char *. Wed Oct 18 12:57:50 1995 steve chamberlain * libc/include/fcntl.h (O_BINARY, O_TEXT): New. * libc/include/errno.h: Moved into and include... * libc/include/sys/errno.h: New file. * libc/include/sys/wait.h: New file. * libc/stdio/rename.c (_rename_r): Use _rename system call if available. * libc/sys/win32/*: Moved out. * libc/sys/win32/crt0.c: Rewritten to cope with shared library. * configure.in (i[345]86-*-win32): HAVE_RENAME Wed Oct 18 09:58:27 1995 Brendan Kehoe * libc/unix/sigset.c (sigemptyset, sigaddset): Prefix #undef to avoid macro expansion for these two names. Tue Oct 17 08:45:33 1995 Doug Evans * libc/machine/h8500/psi.S: r6 renamed to fp. Sun Oct 15 12:58:10 1995 Michael Meissner * configure.in (powerpc*): No longer need to define NO_LONGLONG_POINTERS to supress warnings. Sat Oct 14 12:55:08 1995 Jim Wilson * libc/reent/reent.c (_reclaim_reent): Call cleanup indirectly through PTR instead of directly. * libc/sys/sh/crt0.S: Clean up formatting. Delete unused non-standard constructor support. Thu Oct 12 11:39:42 1995 J.T. Conklin * libc/stdlib/dtoa.c (_dtoa_r): Set result pointer to the address of the Bigint instead of the address of its _x field, as the size the result buffer was calculated accordingly. Fix from Jim Wilson . * libc/stdlib/{div.c, ldiv.c}: Replaced with implementation from NetBSD C library. No longer special cases division by zero (which needs to be done by the application anyway), but it doesn't need to call abs() (or labs()) four times either. * libc/stdlib/qsort.c: Replaced with implementation from NetBSD C library. Tue Oct 10 14:01:10 1995 J.T. Conklin * libc/stdio/vfprintf.c: Replaced with implementation from NetBSD C library (which is derived from the 4.4BSD C library). * libc/stdio/cvt.c: Removed. * libc/stdio/Makefile: Updated. Tue Oct 10 12:15:23 1995 steve chamberlain * libc/sys/win32/syscalls.c (rename): New. * libc/sys/win32/include/winkernel.h (MoveFileExA): New. Fri Oct 6 12:18:43 1995 Jim Wilson * libc/machine/sh/Makefile.in (setjmp.o): Depend on setjmp.S. * libc/machine/sh/setjmp.S: Rename from setjmp.s. * libc/sys/sh/Makefile.in (OFILES, all): Delete setjmp.o. (setjmp.o): Delete rule to build setjmp.o. * libc/sys/sh/setjmp.S: Delete file. Fri Oct 6 11:19:05 1995 J.T. Conklin * libc/stdlib/mprec.c (d2b): Added support for _DOUBLE_IS_32BITS. * libc/stdlib/mprec.h: Fixed constants used for IEEE single float format. Added #defines to map d2b, i2b, low0bits, lshift, mult, pow5mult and s2b to identifiers with leading underscores. * libc/stdlib/Makefile.in: Add mprec.h as a dependency to dtoa.o, ecvtbuf.o, mprec.o and strtod.o. Sort dependencies. Thu Oct 5 17:27:30 1995 steve chamberlain * libc/sys/posix/popen.c (sys/types.h): Include. Thu Oct 5 16:33:01 1995 Doug Evans * libc/sys/win32/syscalls.h (fhandler): New struct. (__lookup_fhandler, __lookup_fhandler_hook): Declare. (__fhandler_normal): Declare. (hinfo): New member op_handlers. * libc/sys/win32/syscalls.c (__read): Don't validate fd. (__write): Likewise. (_read, _write, _open, _close, _lseek): Validate fd here. Move file type specific stuff to foo_normal. (read_normal, write_normal, open_normal, close_normal, lseek_normal): New functions. (__lookup_fhandler): New function. (__lookup_fhandler_hook, __fhandler_normal): New variables. From anders.blomdell@control.lth.se (Anders Blomdell) * libc/sys/win32/crt0.c (vfork_init): Unset __FD_TABLE__. Don't touch standard handles. * libc/sys/win32/spawn.c (_spawn): Use STARTF_USESTDHANDLES. (_execve): Only create __FD_TABLE__ if necessary. * libc/sys/win32/include/winkernel.h (STARTF_*): Define. Thu Oct 5 14:25:14 1995 steve chamberlain * libc/sys/win32/sys/termios.h (FLUSHO): New. * libc/sys/win32/include/win*.h: Moved a load of prototypes around. * libc/sys/win32/pipe.c (_fctnl): Ignore F_SETFL without errors. * libc/sys/win32/exception.c (ehandler3): set strace when a signal without a handler is received. * libc/sys/win32/Makefile.in: Remove --nodelete. * libc/sys/win32/resouce.c (gettimeofday): New. * libc/sys/win32/syscalls.c (path_to_real_path): New. * libc/sys/win32/syscalls.h (include/wincon.h): Don't include. Wed Oct 4 13:10:35 1995 Doug Evans * libc/sys/win32/dirsearch.c (opendir): stat real path name. Don't append "/*" to search pattern if trailing '/' already there, append "*". * libc/sys/win32/spawn.c (_spawn): CreateProcess doesn't seem to like /'s, convert them to \'s. Handle /// path names. Add space for quoted \'s in arg string. Print translated prog name and original prog name. (_execve): Handle parent doing exec a teensy bit better. * libc/sys/win32/syscalls.h (__path_to_real_path): Update prototype. * libc/sys/win32/syscalls.c (__path_to_real_path): Don't assume path needs conversion, handle both cases. Delete `const' from result. (hash_path_name): New function. (_open): Call it. (_stat): Likewise. Fill in more fields for directories. * libc/sys/win32/wait.c (_wait): Explicitly pass -1 to waitpid. (wait_for_any): Fix trace message. (waitpid): Explicitly test for intpid == 0. From anders.blomdell@control.lth.se (Anders Blomdell) * libc/sys/win32/spawn.c (__vfork_get_empty_entry): zero fill result so `next' is valid. Sat Sep 30 15:00:15 1995 Jason Molenda (crash@phyeaux.cygnus.com) * libc/sys/win32/spawn.c (_spawn): Make quoting rules more complicated. Sat Sep 30 10:25:57 1995 Jason Molenda (crash@phydeaux.cygnus.com) * libc/include/_ansi.h: set _HAVE_STDC if __STDC__ is defined at all, not just == 1. * libm/math/wf_acos.c (acosf): check for _HAVE_STDC, not __STDC__. Sat Sep 30 04:30:09 1995 Jason Molenda (crash@phydeaux.cygnus.com) * libc/sys/win32/include/winbase.h: include and * libc/sys/win32/include/wintypes.h: include * libc/sys/win32/include/winnt.h: avoid multiple inclusion of this file. Fri Sep 29 01:49:17 1995 steve chamberlain * libc/sys/syscalls.c (getcwd): Fix off by one error. * libc/sys/signal.c (sleep): Fill it in. * libc/sys/termios.c (tcflush): Use PurgeComm (tcsetattr): Set some more of the bits. * libc/sys/include/winkernel.h: Add PurgeComm and Sleep. Fri Sep 29 04:33:53 1995 Doug Evans * libc/sys/arm/crt0.S (fp): Initialize to 0. Conditionally include .idata$3 stuff ifdef __pe__. Fri Sep 29 01:49:17 1995 steve chamberlain * libc/sys/win32/crt0.c (hmap_init): Call __init_hinfo. * libc/sys/win32/pipe.c (pipe): Ditto. * libc/sys/win32/syscalls.c (__read): Use new vtime and vmin fields. * libc/sys/win32/syscalls.h (hinfo): vtime, vmin are new. * libc/sys/win32/termios.c (tcsetattr): Init new fields. (tcgetattr): Contents are new. * libc/sys/win32/include/winkernel.h (DCB): New. (GetCommState, SetCommState): New. Thu Sep 28 16:29:09 1995 Doug Evans * libc/sys/arm/crt0.S (_start): Define. Thu Sep 28 12:26:45 1995 steve chamberlain * libc/sys/arm/crt0.S: Move stack to top of RAM on PIE board. * libc/sys/arm/syscalls.c (_read, _write): Use the SWI properly. * libc/sys/win32/sysconf.c: New * libc/sys/win32/sys/winadvapi.h: New * libc/sys/win32/syscalls.h (hinfo): Added timeout_len, w_binary, r_binary. * libc/sys/win32/crt0.c (hmap_init): Initialize new fields. * libc/sys/win32/pipe.c (pipe): Ditto. * libc/sys/win32/signal.c (_raise): New. (_kill): Moved from spawn.c * libc/sys/win32/spawn.c (kill): Moved to signal.c * libc/sys/win32/syscalls.c (__read): Use new fields. (_open): Ditto. * libc/sys/win32/termios.c (tcflush, tcsetattr, tcgetattr): Fill in. * libc/sys/win32/exceptions.c (__stack_trace): Keep going for longer. * libc/include/sys/unistd.h (rmdir): Takes const path. * libc/include/sys/stat.h (mkdir): Takes const path. * libc/include/sys/signal.h (SIGTTOU, SIGTTIN): New for win32. Thu Sep 28 10:11:27 1995 Doug Evans * libc/sys/win32/spawn.c (_spawn): Fix quoting. Add support for specifying paths as ///foo/bar. * libc/sys/win32/syscalls.h (__path_needs_conversion_p): Declare. (__path_to_real_path): Declare. (PATH_TO_REAL_PATH): New macro. * libc/sys/win32/syscalls.c (__win32_pid_to_posix_pid): Minor cleanup. (__path_needs_conversion_p, __path_to_real_path): New functions. (_open): Fix test for error return from CreateFileA. Handle new path syntax. (_link, mkdir, rmdir, getcwd, chdir, stat): Handle new path syntax. * libc/sys/win32/dirsearch.c (opendir): Likewise. Wed Sep 27 16:36:46 1995 steve chamberlain * libc/sys/win32/include/*.h: Reorganized * libc/sys/win32/include/WINREADME: New. * libc/sys/win32/Makefile.in (DLLS): Build version.a. * libc/sys/win32/*.c: Fix for new include scheme. * libc/sys/win32/crt0.c (__this_uinfo_buf, __this_uinfo): New. * libc/sys/win32/getlogin.c (getlogin): Use uinfo. * libc/sys/win32/passwd.c (*): Fix. * libc/sys/win32/syscalls.c (get[e|][g|u]id): Use passwd info. (_stat): Get directory owner and permissions right. * libc/sys/win32/syscalls.h (uinfo): New. * libc/sys/win32/version.def: Remove leading underscores. Tue Sep 26 18:18:47 1995 Jason Molenda (crash@phydeaux.cygnus.com) * libc/sys/win32/key.c: include "include/wincon.h". Tue Sep 26 07:21:48 1995 steve chamberlain * libc/sys/win32/{key, stubs}.c: New. * libc/sys/win32/Makefile: Adjust to cope. * libc/sys/win32/crt0.c (vfork_init_first): Cope with -ve pids. (environ_init): Change env names to upper case. * libc/sys/win32/dirsearch.c (readdir): Don't fill in inode number. * libc/sys/win32/passwd.c (*): Fill in the functions. * libc/sys/win32/pipe.c (_fcntl): F_GETFL returns O_RDWR. * libc/sys/win32/spawn.c (_spawn): Cope with -ve pids. * libc/sys/win32/syscalls.c (__win32_pid_to_posix_pid): New function. (_open): Initialze hmap->execable_p too. * libc/sys/win32/syscalls.c (getuid, getgid, geteuid, getegid): Return from macros. (_fstat): Fill in permissions. * libc/sys/win32/syscalls.h (hinfo): Add execable_p. Fri Sep 22 13:47:27 1995 Doug Evans * configure.in (cfg-ml-com.in invocation): Use ${with_multilib_top} if defined. (cfg-ml-pos.in invocation): Likewise. Fri Sep 22 11:43:44 1995 J.T. Conklin * Makefile.in (MATHOBJS_IN_LIBC): Added s_isinf.o, sf_isinf.o, s_isnan.o and sf_isnan.o. Wed Sep 20 14:50:19 1995 Ian Lance Taylor * All Makefile.in files: added maintainer-clean target as a synonym for realclean. Wed Sep 20 11:02:50 1995 Jeff Law (law@snake.cs.utah.edu) * libc/include/machine/setjmp.h: Add hppa support. * libc/machine/hppa/setjmp.S: New file with setjmp/longjmp support. * libc/machine/hppa/Makefile.in: Related changes. Tue Sep 19 12:09:01 1995 J.T. Conklin * configure.in (machine_dir): Don't set for v810-*-*. Fri Sep 15 20:22:08 1995 Jason Molenda (crash@phydeaux.cygnus.com) * libc/sys/win32/crt0.c (passover): Change to handle MKS quoting conventions correctly. Thu Sep 14 13:37:22 1995 J.T. Conklin * libc/stdio/puts.c: Update documentation of return value to match ANSI standard. Thu Sep 14 01:52:37 1995 Doug Evans Fix file descriptor inheritance. * libc/sys/win32/syscalls.h (CHILD_P): Define again. (NOT_OPEN_FD): Fix. * libc/sys/win32/spawn.c (vfork0): Only create inheritable handle if close-on-exec flag not set. Initialize child's entire fd table. * libc/sys/win32/syscalls.c (_open): Only create inheritable handle if CHILD_P. * libc/sys/win32/pipe.c (pipe): Only create new handle as inheritable if CHILD_P. Initialize entire hmap entry. (dup): Only create new handle as inheritable if CHILD_P. (dup2): Likewise. Properly initialize hmap entry. * libc/sys/win32/spawn.c (_execve): Don't pass _P_SEARCH_PATH to _spawn. (_exit): Use CHILD_P. * libc/sys/win32/syscalls.c (_fstat): Fix call to memset. (_stat): Likewise. Mon Sep 11 23:09:39 1995 Jason Molenda (crash@phydeaux.cygnus.com) * libc/sys/win32/crt0.c (passover): fix up the state table. * libc/posix/popen.c: Added. * libc/posix/Makefile.in: compile popen.c. Mon Sep 11 11:43:38 1995 J.T. Conklin * libc/include/machine/ieeefp.h: On the h8/300, h8/300h and h8/500 define _DOUBLE_IS_32BITS. Sat Sep 9 17:55:54 1995 Doug Evans Get vfork/exec/spawn/cwait/wait working again. * libc/sys/win32/syscalls.h (VFORK_NEWBORN_PSEUDO_PID): Define. (procinfo): New member vfork_level. * libc/sys/win32/crt0.c (__vfork_next_pid): Delete. (vfork_init_first): Use GetCurrentProcessId to get pid. Initialize vfork_level. (vfork_init): Delete __PID__. (environ_init): New function. Undo patch of Aug 19, Posix says environment variables are case sensitive. (mainCRTStartup): Call it. * libc/sys/win32/spawn.c (__vfork_next_pid): Delete. (my_longjump: Make static. (_spawn): New argument `h'. Delete setting of __PID__. Delete local `idx'. Look for chars that need quotes, rather than ones that don't. Set handle of created process in `h'. Result is process id if created task. (allocate_spawn_entry): New function. (spawnvp, spawnv): Call it. Store handle and pid in procinfo entry. (_execve): Set __FD_TABLE__ before spawning child. Scan our fd table when passing fds, not our parent's. Store handle and pid in procinfo entry. (vfork0): Ensure strace message always printed. Set child pid to VFORK_NEWBORN_PSEUDO_PID. (vfork): Don't clobber result of vfork0. * libc/sys/win32/wait.c (cwait): Fix non-error result (is pid). (wait_for_any): Ignore processes in state FORK_STATE_VFORK_0. * libc/sys/win32/syscalls.h (procinfo): New members `handle_valid_p' and `exit_code'. * libc/sys/win32/spawn.c (allocate_spawn_entry): Initialize them. (vfork0): Likewise. Distinguish children, grandchildren, etc. by adding vfork level to pseudo-pid. (vfork1): If not root, set state back to FORK_STATE_VFORK_0. (spawnvp, spawnv, _execve): Set handle_valid_p if success. (_exit): If child, set exit code. (__vfork_record_death): Only close process handle if valid. * libc/sys/win32/wait.c (wait_for_single): Watch for children that didn't exec. (wait_for_any): Likewise. Start scan after root entry. Fri Sep 8 18:48:02 1995 Jason Molenda (crash@phydeaux.cygnus.com) * libc/include/sys/types.h (off_t): off_t back to 32 bits. * libc/include/sys/_types.h (_off_t): _off_t back to 32 bits. * libc/sys/win32/syscalls.c (_fstat): st_size is lower 32-bits of actual file length. * libc/sys/win32/sys/wait.h: include . * libc/include/paths.h: _PATH_BSHELL added. * libc/include/sys/unistd.h: define STDIN_FILENO, STDOUT_FILENO, and STDERR_FILENO. Thu Sep 7 21:02:22 1995 Jason Molenda (crash@phydeaux.cygnus.com) * libc/include/ar.h: Added. * libc/include/sys/types.h: ino_t goes back to 32-bits. * libc/sys/win32/syscalls.h (hinfo): added .namehash field. * libc/sys/win32/syscalls.c (_open): compute .namehash based on filename. (_fstat): use .namehash for inode number of the fd. Thu Sep 7 12:57:19 1995 steve chamberlain * libc/sys/win32/{console,ioctl,pipe,spawn,syscalls,wait}.? (*): Change hinfo to __this_procinfo. * libc/sys/win32/crt0.c: Remove procinfo_list. Wed Sep 6 18:38:26 1995 Jason Molenda (crash@phydeaux.cygnus.com) * libc/include/sys/types.h (ino_t): Define ino_t correctly for win32 environment. Wed Sep 6 18:09:29 1995 Jason Molenda (crash@phydeaux.cygnus.com) * libc/sys/win32/include/grp.h: Removed. * libc/sys/include/grp.h: Added. * libc/sys/win32/grp.c: Include . Wed Sep 6 16:52:48 1995 steve chamberlain * libc/include/sys/signal.h (__need_MAX_SIGNALS): Removed. (sigset_t, sigaction, SIG_SETMASK, SIG_BLOCK, SIG_UNBLOCK): Defined for all but strict ANSI. * libc/include/sys/reent.h (__need_MAX_SIGNALS): Removed. * libc/include/machine/setjmp.h: Get win32 _JBLEN right. * libc/signal/signal.c (_signal_r): Changed from using _MAX_SIGNALS to NSIG. * libc/sys/win32/crt0.c (__current_pid, __parent_hmap, __child_hmap, __hmap): Deleted. (__strace, __vfork_next_pid): New. (__exe_suffix): Default to 1. (passover, table): Understand quoted arguments. (vfork_init_first): New. (vfork_init): Initialize new process structure. (mainCRTStartup): Pass environ to main. * exceptions.c (__sig_mask): New (ehandler3): Ignore signals in mask. (really_exit): Remove CHILD_P test. * pipe.c (pipe, dup, dup2): Use new process and file structure. * resource.c (getrusage): Ditto. * signal.c (sigprocmask): New. * spawn.c (*): Rewritten. * syscalls.c (*): Use new process and file structure. (find_unused_handle): New. * syscalls.h (MAX_HANDLES): Deleted. (hinfo): Removed child_created_p. (MAX_CHILDREN): Deleted. (vfork_jmp_info, procinfo): New. * wait.c (*): Mostly new. * sys/strace.h (_STRACE_PARANOID): New. * sys/param.h: New file. Wed Sep 6 17:03:53 1995 Jason Molenda (crash@phydeaux.cygnus.com) * libc/include/sys/stat.h: add S_BLKSIZE. * libc/include/sys/_types.h: _off_t is a 64-bit type under win32. * libc/include/sys/types.h: define off_t and ino_t to be 64 bit types under win32. (mode_t): add a #else to avoid multiple definitons. * libc/sys/win32/Makefile.in: add grp.c. * libc/sys/win32/grp.c: include grp.h correctly. * libc/sys/win32/syscalls.c (_fstat): set almost all of the fields of the st structure with real information. * libc/sys/win32 (dirent): d_ino is of type ino_t. Wed Sep 6 10:41:34 1995 Doug Evans * libc/include/sys/types.h (mode_t): Correct for svr4 sparc's and (maybe) sparc64. (nlink_t): Provide typedef. Tue Sep 5 18:46:05 1995 Jason Molenda (crash@phydeaux.cygnus.com) * libc/sys/win32/grp.c: New file. * libc/sys/win32/include/grp.h: New file. Tue Sep 5 13:47:27 1995 J.T. Conklin * libc/include/machine/ieeefp.h: Added whitespace to make this file easier to maintain. On the sh, define either __IEEE_BIG_ENDIAN or __IEEE_LITTLE_ENDIAN depending on the value of __LITTLE_ENDIAN__. On the sh3e, define _DOUBLE_IS_32BITS. Fri Sep 1 15:35:18 1995 James G. Smith * libc/sys/vr4300/syscalls.c: Added missing support routines. _raise() and getpid(). Fri Sep 1 14:12:48 1995 James G. Smith * configure.in (mips*vr4300*-*-elf): Fixed silly mistake Fri Sep 1 08:42:11 1995 James G. Smith * configure.in (mips*vr4300*-idt-*) Add support for RISQ monitor and VR4300 processor. * libc/sys/vr4300: Add directory. * libc/sys/vr4300/{Makefile.in, crt0.S, syscalls.c}: Add SIM monitor run-time support. Thu Aug 31 09:16:52 1995 J.T. Conklin * libc/stdlib/Makefile.in (CHEWOUT_FILES): Removed atol.def. * libc/stdlib/stdlib.tex: Don't include atol.def. Wed Aug 30 20:38:28 1995 Jason Molenda (crash@phydeaux.cygnus.com) * libc/sys/win32/uname.c (uname): hardcode processor as `i386'. Wed Aug 30 10:48:08 1995 steve chamberlain * libc/ctype/Makefile.in: Fill in _to* dependencies. Tue Aug 29 17:14:29 1995 steve chamberlain * libc/sys/win32/{dirsearch.c,sys/dirent.h}: Fix namespace problems. * libc/sys/win32/sys/dirent.h (struct dirent): Added d_ino. * libc/sys/win32/strace.c (__sys_printf): Increase size of buffer. * libc/sys/win32/smallprint.c (__small_vsprintf): Remove debug. * libc/sys/win32/dirsearch.c (readdir): Set d_ino. Tue Aug 29 19:00:09 1995 Jason Molenda (crash@phydeaux.cygnus.com) * libc/stdlib/atol.c (atol): DEFUN -> _DEFUN. Tue Aug 29 16:08:09 1995 J.T. Conklin * libc/stdlib/Makefile.in (OFILES): Added atoff.o and atol.o. * libc/stdlib/atoff.c: New file. * libc/stdlib/atof.c (atoff): Moved to atoff.c. * libc/stdlib/atoi.c (atol): Removed. * libc/stdlib/atol.c: Removed duplicate documentation. * libc/include/ctype.h (_tolower, _toupper): Moved inside #ifndef _STRICT_ANSI conditional. * libc/ctype/Makefile.in (OFILES): Added _tolower.o and _toupper.o * libc/ctype/_tolower.c: New file. * libc/ctype/_toupper.c: New file. * libc/ctype/tolower.c (_tolower): Moved to _tolower.c. * libc/ctype/toupper.c (_toupper): Moved to _toupper.c. * libc/ctype/toascii.c (_toascii): Removed. Tue Aug 29 12:17:32 1995 Doug Evans * libc/sys/sparc64/sys/types.h: Deleted. Mon Aug 28 22:06:08 1995 Jason Molenda (crash@phydeaux.cygnus.com) * libc/sys/win32/uname.c (uname): change `Windows/NT' to `Windows_NT' and recognize Windows_95 systems. Mon Aug 28 19:50:54 1995 Jason Molenda (crash@phydeaux.cygnus.com) * libc/sys/win32/crt0.c (vfork_init, hmap_init): standard I/O fds and passed fds should be opened in text mode. Mon Aug 28 18:51:22 1995 Jason Molenda (crash@phydeaux.cygnus.com) * libc/sys/win32/crt0.c (vfork_init): mark passed fds as used in __hmap, set to binary mode by default. Tue Aug 22 14:12:37 1995 J.T. Conklin * libc/sys/sh/syscalls.c: Updated all functions to call __trap34. * libc/sys/sh/trap.S (__trap34): Renamed from __trap3. Use trap vector 34. Sat Aug 19 18:25:37 1995 steve chamberlain * Makefile.in (install): Install all libraries found in the top level. If there's a sys//include directory, install those headers into include. * libc/sys/win32/kernel.def351: Delete * libc/sys/win32/{comctl32.def, comdlg32.def, ctl3d32.def, glaux.def, glu32.def, largeint.def, libc.def, libcmt.def, lz32.def, mgmtapi.def, mpr.def, msacm32.def, msvcrt.def, nddeapi.def, netapi32.def, odbc32.def, odbccp32.def, oldnames.def, ole32.def, oleaut32.def, opengl32.def, rasapi32.def, rpcndr.def, rpcns4.def, rpcrt4.def, scrnsave.def, shell32.def, snmp.def, uuid.def, vdmdbg.def, version.def, vfw32.def, win32spl.def, winmm.def, winspool.def, winstrm.def, wsock32.def}: New. * libc/sys/win32/Makefile.in: Update for new files and new dlltool options. * libc/sys/win32/crt0.c: Force all env names to upper case. * libc/sys/win32/sys/win*.h -> libc/sys/win32/include * libc/sys/win32/*.c: Headers have moved. * libs/sys/win32/*.[ch]: Test for open_p rather than BAD_HANDLE, __vfork_child_idx is now __vfork_child_ptr. * posix/execvp (execvp): Don't crash if no PATH envname. Fri Aug 18 12:22:59 1995 J.T. Conklin * libc/include/sys/reent.h (_Bigint): Removed _reclaim field. * libc/reent/reent.c (_reclaim_reent): Free Bigint's by going through the _freelist instead of through the _reclaim list. * libc/stdlib/mprec.c (_Balloc): Don't put new node on _reclaim list. * libc/stdlib/mprec.c (_Bcopy): Make like version in upstream dtoa.c sources. Thu Aug 17 11:03:27 1995 J.T. Conklin * libc/machine/h8500/setjmp.S: New file. * libc/include/machine/setjmp.h: Updated for H8/500. Wed Aug 16 16:19:11 1995 steve chamberlain * libc/sys/win32/syscalls.c (_open): More stracing. (_stat): Open the file in O_BINARY. Wed Aug 16 15:49:01 1995 J.T. Conklin * libc/machine/h8300/setjmp.S: New file. * libc/include/machine/setjmp.h: Updated for H8/300 and H8/300H. Tue Aug 15 10:31:09 1995 Doug Evans * libc/sys/win32/crt0.c (__exe_suffix): New global. (mainCRTStartup): Set __exe_suffix from LIBC_EXE_SUFFIX. * libc/sys/win32/spawn.c (_spawn): Add .exe suffix based on __exe_suffix. Free fd_tab after setting env variable. (spawnv,_execve): Update. * libc/sys/win32/syscalls.h (__exe_suffix): Declare. * libc/sys/win32/smallprint.c (puts,putn): New (static) functions. (__small_vfprintf): New function. * libc/sys/win32/strace.c (__sys_printf): Call __small_vfprintf. * libc/sys/win32/wait.c (cwait): Validate argument. * libc/sys/win32/syscalls.c (queue_file_deletion): Add trace message. (process_deletion_queue): Likewise. * libc/sys/win32/Makefile.in (lib.a): Don't call $(RANLIB). Mon Aug 14 10:14:10 1995 steve chamberlain * libc/sys/win32: Copyrights and gratuitous indenting. Mon Aug 14 01:32:58 1995 Doug Evans * libc/sys/win32/syscalls.c (queue_file_deletion): Finish. (process_deletion_queue): Likewise. (__close_all_files): New function. (_close): Only queue file deletion if really a file. * libc/sys/win32/spawn.c (_spawn): Only ensure .exe suffix if _P_APPEND_EXE. (_exit): Call __close_all_files. * libc/stdlib/system.c: #include . (_system_r): Fix results in -DNO_EXEC case. * libc/sys/win32/sys/dirent.h (DIR): New member __d_dirname. Reorganize structure. * libc/sys/win32/dirsearch.c (opendir): Use stat to determine if argument is valid. Save directory name in DIR. malloc space for dirent struct separately. * libc/sys/win32/syscalls.c (stat): Fix test for directory. * libc/include/errno.h (ENAMETOOLONG): Define. * libc/string/strerror.c (strerror): Reword ENFILE. Add ENOSYS, ENMFILE, ENOTEMPTY, ENAMETOOLONG. Sun Aug 13 22:42:25 1995 Doug Evans * libc/sys/win32/crt0.c (__progname): New global. (mainCRTStartup): Support strace=bitmask,filename. * libc/sys/win32/dirsearch.c (all fns): Add trace messages. * libc/sys/win32/syscalls.c (_write): Print parent trace message if error. (getcwd): Handle len too small. Convert '\\' to '/'. * libc/sys/win32/sys/fcntl.h (O_RDWR): = O_RDONLY|O_WRONLY. Add prototypes for open, creat, fcntl. (O_APPEND): Change value to conform to Microsoft's value. * libc/sys/win32/sys/strace.h (_STRACE): Protect in do/while. * libc/stdlib/getopt.c: New file. * libc/stdlib/Makefile.in: Build it. Sat Aug 12 12:17:14 1995 Doug Evans * libc/posix/execvp.c (execvp): Watch for DOS drives ifdef _WIN32. Fix scanning of $PATH. * libc/posix/exec*.c: Call _execve, not execve. * libc/posix/execve.c: New file. * libc/posix/Makefile.in (OFILES): Add execve.o. * libc/sys/win32/sys/strace.h (_STRACE_ALL, _STRACE_UHOH, _STRACE_STARTUP, _STRACE_SYSCALL): More bit masks of things to trace. (_STRACE): If level==0, always print. Handle new bit mask scheme. * libc/sys/win32/crt0.c: Update _STRACE calls. * libc/sys/win32/{pipe.c,resource.c,spawn.c,syscalls.c,wait.c}: Ditto. * libc/sys/win32/smallprint.c (rn): Fix digit list. * libc/sys/win32/syscalls.c (__really_exit): Move from here, * libc/sys/win32/exceptions.c (really_exit): to here. Avoid recursion. * libc/sys/win32/spawn.c (spawnvp): Pass `prog' as image name. Print __seterrno trace message first. (_execve): Renamed from execve. (vfork): Update __strace usage. (__vfork_child_pid): Deleted. (__vfork_children, __vfork_child_idx): New globals. (_spawnvp): New function. (spawnvp, spawnv, _execve): Call _spawnvp. (init_child): Record child in __vfork_children. (__vfork_get_entry, __vfork_record_death): New functions. * libc/sys/win32/crt0.c (mainCRTStartup): Initialize __vfork_children. * libc/sys/win32/kernel32.def (WaitForMultipleObjects): Define. * libc/sys/win32/syscalls.h (CHILD_P): New macro. All files updated. (MAX_CHILDREN, CHILD_INTERIM_PID): Define. (children): New typedef. (__vfork_children,__vfork_child_idx): Declare. (__vfork_get_entry,__vfork_record_death): Declare. * libc/sys/win32/wait.c (wait_for_single,wait_for_any): New functions. (waitpid): Handle pid == -1. * libc/sys/win32/sys/wintypes.h (WaitForMultipleObjects): Declare. * configure.in (i386-win32): Add -DNO_FORK. * libc/syscalls/sysfork.c (fork): Don't define for NO_FORK. * libc/reent/execr.c (_fork_r): Likewise. * libc/stdlib/system.c (do_system): New function. If WIN32, try to get shell path from $SH_PATH, use vfork. (_system_r): Return 1 for (s == NULL) if WIN32 or unix, otherwise return 0. Sat Aug 12 11:08:00 1995 steve chamberlain * libc/stdlib/{mallocr.c, mstats.c}: Move mstats from mallocr to mstats.c. * libc/sys/win32/fcntl.h: Don't include self. * libc/sys/win32/sys/strace.h (_STRACE_WM, _strace_wm): New. * libc/sys/win32/sys/winbase.h: (GetUserName) New. * libc/sys/win32/sys/wincon.h (HANDLER_ROUTINE): Define correctly. * libc/sys/win32/sys/wintypes.h (GetFileType, GetCurrentProcess, CloseHandle, SetFilePointer, CreateFileA, GetFileInformationByHandle, GetStdHandle): Correct prototypes. * libc/sys/win32/strace.c: New file. * libc/sys/win32/smallprint.c: New file. * libc/sys/win32/crt0.c (func): Delete. (mainCRTStartup): Fix alloca usage. Set handles explictly. * libc/sys/win32/dirsearch.c: Clean up handle usage, fix calls to __seterrno. * libc/sys/win32/exceptions.c: Lint. * libc/sys/win32/{ioctl.c, pipe.c, resource.c, spawn.c, cwait.c, syscalls.c}: Clean up handle usage. * libc/sys/win32/syscalls.c (__sys_printf): Moved into strace.c (open.c): Default file type is text. * libc/sys/win32/uname.c (uname): Use __small_sprintf. * libc/sys/win32/advapi32.def: New Fri Aug 11 17:11:52 1995 Doug Evans * configure.in (posix_dir, libc_posix_lib): New variables. Define LIBC_POSIX_LIB in makefile to be $libc_posix_lib. (i[345]86-*-win32): Define posix_dir. Delete -DNO_EXEC. Define -DHAVE_OPENDIR. (if unix_dir): Fix typo. * libc/posix/{Makefile.in,closedir,opendir,readdir,rewinddir, scandir,seekdir,telldir}: New files. * libc/posix/{execl.c,execle.c,execlp.c,execv.c,execvp.c}: Move here from libc/unix. * libc/Makefile.in (LIBC_POSIX_LIB): Define. (SUBDIRS): Add posix. (SUBLIBS): Add $(LIBC_POSIX_LIB). * libc/include/sys/signal.h (SIGCHLD): Add for _WIN32. (NSIG): Increase to 21. * libc/include/sys/unistd.h (pid_t): Move from here, * libc/include/sys/types.h (pid_t): to here. * libc/sys/win32/syscalls.h: #include "sys/strace.h". (__ptrace): Delete. (hinfo): New members close_exec_p, child_created_p. (struct exception_list): Define. (__hmap): Redefine as pointer to table. (__parent_hmap, __child_hmap): New globals. (__set_errno, __really_exit): Declare. (__vfork_child_pid): Declare. * libc/sys/win32/crt0.c (__strace, __trace_file): New global. (__orig_stdin, __orig_stdout, __orig_stderr): New globals. (__parent_hmap, __child_hmap): New globals. (__hmap): Redefine as pointer to active map. (__get_console): New function. (mainCRTStartup): Change leading '=' in environ vars to '!'. (env __FD_TABLE__): Watch for this and initialize our fd/handle mapping table from it if defined. (argv, envp): Dump if __strace >= 4. (main): Call here. * libc/sys/win32/exceptions.c (myp): Redefine. (__syscalls_b): Delete. (__stack_trace): New function. (ehandler3): Update to use _STRACE. Print stack trace. Call __really_exit instead of exit. (init_exceptions): Delete args argc,argv. New arg mine. * libc/sys/win32/kernel32.def (CreatePipe, DuplicateHandle, FindClose, FindFirstFileA, FindNextFileA, GetComputerNameA, GetEnvironmentVariableA, ReadFile, SetEnvironmentVariableA): Define. * libc/sys/win32/signal.c (signal): Validate arg. (alarm, sleep): Define as stubs for now. * libc/sys/win32/syscalls.c (all fns): Update to use _STRACE. (__syscalls_b, errno): Delete. (__vfork_child_pid, __vfork_jmp_buf): New globals. (__seterrno): Handle more errors. (__sys_printf): Renamed from _ptrace. (__really_exit): New function. (queue_file_deletion, process_deletion_queue): New functions. (__resume_parent): New function. (_unlink): Handle trying to delete open file. (__totime_t): Renamed from totime_t. (setsid, __read, __write): New functions. (cwait, spawnvp, R, D, getrusage, _execve, _fork, _wait): Delete. * libc/sys/win32/{dirsearch.c,getlogin.c,misc.c,resource.c,passwd.c, times.c,spawn.c,pipe.c,wait.c,termios.c,ioctl.c,uname.c}: New files. * libc/sys/win32/console.c: Update to new definition of __hmap. * libc/sys/win32/Makefile.in: Build new files. * libc/sys/win32/sys/{dirent.h,winerror.h,wait.h,termios.h}: New files. * libc/sys/win32/sys/{ioctl.h,utsname.h}: New files. * libc/sys/win32/sys/strace.h: Renamed from ptrace.h. * libc/sys/win32/sys/wintypes.h (GetCurrentDirectoryA): Fix prototype. Thu Aug 10 16:32:52 1995 Doug Evans * libc/sys/h8500hms/misc.c (kill): Handle SIGABRT. Thu Aug 10 12:07:38 1995 J.T. Conklin * libc/stdlib/{dtoa.c, strtod.c}: Merged assorted changes that have been made to the upstream dtoa.c sources (from netlib.att.com) since they were integrated into newlib in early 1992. Fixes problems with storage leaks and handling of numbers with very negative exponents. Wed Aug 9 14:18:39 1995 J.T. Conklin * Makefile.in (all): set rootpre and srcrootpre before calling sub-makes. Tue Aug 8 17:20:45 1995 steve chamberlain * libc/sys/win32/crt0.c: Change __hmap usage. * libc/sys/win32/exceptions.c: Use _ptrace call. * libc/sys/win32/syscalls.c: Use _ptrace call. (read, write): Cope with DOS style CRLF when in TEXT mode. * libc/sys/win32/syscalls.h: Declare hinfo struct. * libc/sys/win32/user32.def: Get DefWindowProc arg list right. * libc/sys/win32/sys/fcntl.h, ptrace.h: New. * libc/sys/win32/sys/windows.h: Fill in rest of messages. * libc/sys/win32/sys/wintypes.h: Fix attribute syntax. Mon Aug 7 13:04:54 1995 J.T. Conklin * libc/include/math.h (cabs, cabsf, drem, dremf): New declarations. * libm/math/{w_cabs.c, wf_cabs.c, w_drem.c, wf_drem.c}: New files, wrappers for hypot() and remainder() for BSD libm compatibility. These are public domain implementations written by me for the NetBSD libm some time ago. Note cabs() is required by ucbtest. * libm/math/Makefile.in (obj): Added w_cabs.o and w_drem.o. (fobj): Added wf_cabs.o and wf_drem.o. Thu Aug 3 08:13:05 1995 J.T. Conklin * libc/sys/h8500hms/misc.c: New file. * libc/sys/h8500hms/Makefile.in (OFILES): Add misc.o. Wed Aug 2 16:46:27 1995 J.T. Conklin * libc/time/localtime.c (localtime): Fix problem with leap year handling. Stole algorithm from Arthur David Olson's tz code. Mon Jul 31 10:21:54 1995 steve chamberlain * configure.in: (z8k-*sim): Renamed z8k-*-coff. * libc/sys/z8ksim/glue.c (_getpid, _kill): New (_exit): Use argument. Fri Jul 28 15:17:04 1995 Doug Evans * libc/sys/win32/sys/winbase.h (_WINBASE_H): Define. Wed Jul 26 16:24:19 1995 steve chamberlain * libc/sys/sh/trap.S (perrno): Align correctly. (pr 7532) Mon Jul 24 13:42:52 1995 J.T. Conklin * configure.in (sparc*): Add -DMALLOC_ALIGNMENT=8 to target_cflags. Mon Jul 24 11:42:07 1995 steve chamberlain * libc/sys/win32/crt0.c (mainCRTStartup): Look for ptrace with case insensitivity * libc/sys/win32/{user32.def, gdi32.def, exceptions.c, screen.c, sys/winbase.h, sys/windows.h, sys/wintypes.h, sys/winuser.h}: New files. Fri Jul 21 11:22:26 1995 Doug Evans * Makefile.in: Multilib support moved to ../cfg-ml-{com,pos}.in. (MULTITOP, MULTIDIRS, MULTISUBDIR, MULTIDO, MULTICLEAN): New variables. (all, install, *clean): Use new multilib support. * configure.in: Multilib support moved to ../cfg-ml-{com,pos}.in. Fri Jul 21 07:11:42 1995 steve chamberlain * libc/include/sys/signal.h (__WIN32__): New. * configure.in (i386-*-win32): Remobe SBRK_IS_ALLOC. * libc/stdlib/mprec.c (Balloc): Fix trampling problem. (ulp, b2d): Handle 32 bit doubles. * libc/stdlib/mprec.h: Handle 32 bit doubles. * libc/stdlib/strtod.c (_strtod_r): Ditto. Fri Jul 14 08:24:58 1995 steve chamberlain from medp@primag.co.uk: * libc/stdio/setvbuf.c (setvbuf): Fix line buffering on dynamically allocated buffers. Thu Jul 20 10:11:03 1995 Fred Fish * libc/include/sys/unistd.h (_exit): Add _ATTRIBUTE ((noreturn)). * libc/stdlib/exit.c (unistd.h): Include to pick up _exit() declaration. Thu Jul 20 10:16:25 1995 Michael Meissner * configure.in (powerpc): Fix previous fix. Wed Jul 19 14:08:55 1995 Michael Meissner * configure.in (powerpc-*eabiaix*): Update PowerPC multilib directories for this target. Wed Jul 19 00:34:30 1995 Jeffrey A. Law * configure.in (hppa): Add machine_dir definition. * libc/machine/hppa: New directory with PA specific implementations of the basic memory/string functions. Tue Jul 18 21:16:00 1995 Michael Meissner * configure.in: Update current PowerPC multilib directories. Split big and little endian configurations. Tue Jul 18 11:55:33 1995 Ian Lance Taylor * configure.in: Add --enable-single-float option to configure to control use of MIPS single-float directories. Default to yes. * Makefile.in (all): Don't recurse into multilib directory if it does not exist. Mon Jul 17 15:51:30 1995 J.T. Conklin * libc/sys/sh/syscalls.c: Fix typo. Mon Jul 3 14:38:52 1995 Steve Chamberlain * Makefile.in, libc/Makefile.in, libc/sys/Makefile.in: Pass down DLLTOOL. * libc/include/process.h: Define WAIT_CHILD. * libc/include/types.h: Get sizes right for win32. * configure.in (i386-*-pe): Becomes i386-win32. * libc/sys/win32/{crt0.c, kernel32.def, longjmp.c, setjmp.c, syscalls.c wintypes.h,sys/file.h,sys/resource.h}: Second pass. * libc/stdlib/mallocr.c: Don't round up memory block if SBRK_IS_ALLOC is defined. Wed Jun 28 18:34:54 1995 Steve Chamberlain * configure.in (i[345]86-*-pe): New target (NT). * host/any: DLLTOOL new. * libc/sys/win32/{crt0.c, kernel32.def, longjmp.c, setjmp.c, syscalls.c wintypes.h,sys/file.h,sys/resource.h}: Preliminary support for WIN32 (just enough to cross host the comp-tools). Thu Jun 22 11:45:18 1995 Doug Evans * libc/machine/h8300/{cmpsi.S,ucmpsi.S,divhi3.S,mulhi3.S,mulsi3.S}: Deleted. These files live in gcc/config/h8300/lib1funcs.asm now. Mon Jun 19 11:40:40 1995 Doug Evans * libc/include/machine/ieeefp.h (arm): Change to always be __IEEE_BIG_ENDIAN (even on little endian ARM's). Thu Jun 8 14:22:28 1995 Steve Chamberlain * libc/sys/crt0.S: Initialze sp, and call exit after main. * libc/sys/syscalls.c (abort): New. * configure.in (arm): Define ABORT_PROVIDED. Wed Jun 7 14:04:35 1995 J.T. Conklin * configure.in (powerpc): Define multidirs. Mon Jun 5 16:10:13 1995 Doug Evans * libc/sys/arm/crt0.S: Add __USER_LABEL_PREFIX__ support. Thu Jun 1 10:51:47 1995 Sean Eric Fagan * configure.in (sparclite): Delete target_cflags. Define multidirs. Wed May 24 14:23:25 1995 Steve Chamberlain * configure.in, libc/include/machine/ieeefp.h: Modified for arm: libc/machine/arm/*, libc/sys/arm/*: New Tue May 23 13:53:07 1995 J.T. Conklin * libc/include/machine/ieeefp.h: Use __PPC__ instead of __powerpc__ when determining endianness. Wed May 10 07:55:56 1995 J.T. Conklin * configure.in (m68*): Add multidir for the m68332. * host/any (CC): Fix typo in last change. Fri Apr 14 22:20:31 1995 Ken Raeburn * libc/include/sys/config.h: Test __m68k__ instead of __m68000__ when determining endianness. * libc/include/machine/ieeefp.h: Ditto. * libc/machine/m68k/setjmp.S: Use '&' instead of '#' for immediate operands. Fri Apr 14 14:14:29 1995 Doug Evans * libc/include/errno.h (ENOTEMPTY): Define. Thu Apr 6 12:21:20 1995 J.T. Conklin * configure.in (sparc-sun-sunos*): Add -DMALLOC_ALIGNMENT=8 to target_cflags. * libc/sys/sun4/Makefile.in (COPYOFILES): Added rem.o, multiply.o, and umultiply.o. * libc/stdio/tmpnam.c (worker): Unconditionally increment count instead of only when open succeeds. ANSI requires that multiple calls to tmpnam() result in different files. * libc/sys/sun4/Makefile.in (COPYRENAMEOFILES): New macro, list of objects pulled in from /lib/libc.a that must be renamed before being pulled into newlib. /lib/libc.a's div.o conflicted with newlib's file with the same name. * libc/stdlib/ldiv.c (ldiv): Call labs() instead of abs(). * host/any (CC, AS, AR, RANLIB): Changed so that executables in the build tree will only be used if the executables are present (instead of just the Makefiles). * libc/include/stdlib.h (mblen, mbtowc, wctomb, mbstowcs, wcstombs): Define. * libc/stdlib/{mblen.c, mbstowcs.c, wcstombs.c}: New files, null versions of these functions that I orignally wrote for the NetBSD C library. * libc/stdlib/{mbtowc.c, wctomb.c}: Replaced functions with versions I wrote for NetBSD. Wed Mar 29 12:42:42 1995 Kung Hsu * libc/sys/sparclite/Makefile.in: add crt0.s and make info. * libc/sys/sparclite/crt0.s: ditto. Tue Mar 28 20:28:03 1995 Rob Savoye * configure.in: Add soft-float for proelf. Mon Mar 27 12:07:56 1995 Steve Chamberlain * libc/stdlib/mprec.h (Bcopy): Copy the right number of bytes. Mon Mar 27 11:24:22 1995 Doug Evans * Makefile.in (all): Depend on `force'. * configure.in (syscall_dir): Renamed from fake_sys_dir. (libc_syscall_lib): Renamed from libc_fake_sys_lib. (LIBC_SYSCALL_LIB): Renamed from LIBC_FAKE_SYS_LIB. * libc/Makefile.in: Likewise. * libc/include/reent.h: Update syscall references. (_fcntl_r): Add prototype. * libc/syscalls/*.c #include . (*) Call reentrant version if REENTRANT_SYSCALLS_PROVIDED. Mon Mar 20 16:57:39 1995 Doug Evans * libc/include/sys/stat-dj.h (S_ISBLK): Define. (S_ISCHR, S_ISDIR, S_ISFIFO, S_ISREG): Define. * libc/include/sys/stat.h (stat-dj.h): Include ifdef MSDOS. (time.h, sys/types.h): Always include (even if MSDOS). (stat): Fix prototype. Fri Mar 10 11:30:38 1995 Ian Lance Taylor * configure.in (i[345]86-*-go32): Compile with -DNO_EXEC. Mon Feb 27 18:00:39 1995 Jim Wilson * libc/machine/h8500/psi.S (EXTPSIHI_RN_SN): Ifdef out. Mon Feb 13 16:10:03 1995 Ian Lance Taylor * libc/include/regdef.h: New file. * libc/machine/mips/machine/regdef.h: New file. Mon Feb 6 15:24:29 1995 Doug Evans * libc/sys/sparc64/sys/fcntl.h (open): Add ellipsis. Fri Jan 27 13:52:10 1995 Steve Chamberlain * libc/sys/sh/crt0.S: Pass main's return to exit. * libc/sys/sh/trap.S: Put errno in the right place. Tue Jan 24 18:57:56 1995 Ian Lance Taylor * libm/math/e_rem_pio2.c (__ieee754_rem_pio2): Integrate change from fdlibm 5.2: handle |x| < 3pi/4 more efficiently. * libm/math/ef_rem_pio2.c: Likewise. * libm/math/e_log10.c: Remove unused static one. * libm/math/ef_log10.c: Likewise. * libm/math/s_frexp.c: Likewise. * libm/math/sf_frexp.c: Likewise. Sun Jan 22 21:26:14 1995 Steve Chamberlain * libc/sys/go32/Makefile.in, clock.S, dir.c, setjmp.S, stat.c, longjmp.S: Upgraded. * libc/sys/go32/sys/setjmp.h: Upgraded. * libc/sys/go32/sys/go32.h, dpmi.h: New files. Fri Jan 20 18:33:18 1995 Ian Lance Taylor * configure.in: Add many entries to multidirs for mips targets. Wed Jan 18 10:19:25 1995 J.T. Conklin * libm/math/e_jn.c (__ieee754_yn): Integrate change from fdlibm 5.2 which fixes bug where jn(-1,x) is three times larger than the actual answer. * libm/math/ef_jn.c (__ieee754_ynf): Likewise. Sun Jan 15 21:48:58 1995 Steve Chamberlain * libc/sys/w65/sys/syscalls.h: New file * libc/include/machine/ieeefp.h: W65 support. * libc/include/sys/config.h: Ditto. * libc/machine/w65/Makefile.in, cmpsi, divsi3, lshrhi.s, mulsi3.c, sdivhi3.s, smulhi3.s, udivhi3.s, umodhi3.s: New files. * libc/sys/w65/Makefile.in, crt0.c, syscalls.c, trap.c: New files. Wed Jan 11 15:59:01 1995 Ian Lance Taylor * libc/sys/Makefile.in (lib.a, crt0.o): Depend upon subs. Tue Jan 3 15:57:03 1995 Rob Savoye * Makefile.in, configure.in: Remove any references to the old "stub" dir. Thu Dec 22 10:42:08 1994 Ian Lance Taylor * libc/syscalls/sysopen.c: Write _HAVE_STDC version of open, which uses ... in prototype. Wed Nov 30 08:39:42 1994 Ian Lance Taylor * libc/sys/a29khif/sys/libconfig.h: Remove. * libc/sys/go32/sys/libconfig.h: Remove. * libc/sys/sun4/sys/libconfig.h: Remove. * libc/sys/sysvi386/sys/libconfig.h: Remove. * libc/sys/sysvnecv70/sys/libconfig.h: Remove. * libc/sys/sparc64/sys/libconfig.h: Remove. * libc/include/_ansi.h (_FLOAT_ARG, _FLOAT_RET): Don't define. * libc/include/sys/config.h (_FLOAT_ARG, _FLOAT_RET): Likewise. * libc/include/math.h: Change all uses of _FLOAT_RET and _FLOAT_ARG to float. * libm/test/math.c: Likewise. * testsuite/libm.sac/math.c: Likewise. * testsuite/libm.sac/working/math.c: Likewise. Wed Nov 23 22:39:28 1994 Steve Chamberlain (sac@jonny.cygnus.com) * libc/sys/sh/trap.s,crt0.s,setjmp.s: Renamed with .S so that gcc calls gas with endian option. * configure.in (sh): Build little endian version too. Wed Nov 16 18:21:45 1994 Ian Lance Taylor * configure.in: Configure big and little endian versions for MIPS targets. Sat Nov 12 21:12:51 1994 Doug Evans * libc/include/limits.h: Deleted. * libc/include/machine/limits.h: Deleted. Thu Nov 10 15:32:44 1994 Rob Savoye * ChangeLog: Remove stub directory. This has all been rewritten and moved to devo/libgloss. Thu Sep 29 18:31:04 1994 Ian Lance Taylor * Makefile.in (dvi): Add to info target, use $@ in sub make. (docs): Merge into info target. * libm/Makefile.in (dvi): Add $(srcdir). * libm/math/Makefile.in (chobjs): Remove underscores from file names. Texinfo doesn't like them. (wacos.def, ...): Add explicit targets for all .def files. * libm/math/math.tex: Remove underscores from @include file names. * doc/Makefile.in (dvi): Add dummy target. * testsuite/Makefile.in (dvi): Add dummy target. Mon Sep 26 21:17:46 1994 Doug Evans (dje@canuck.cygnus.com) * Makefile.in (VERSION): Define. For net newlib releases. Thu Sep 22 19:01:26 1994 Doug Evans (dje@canuck.cygnus.com) * README: New file. Mon Sep 19 16:35:23 1994 Jim Wilson (wilson@sphagnum.cygnus.com) * libc/stdlib/ecvtbuf.c (_gcvt): Undo last change. Mon Sep 19 11:44:23 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) * libc/stdlib/setenv.c (_findenv): Declare. * libc/include/sys/fcntl.h: Fix declarations of open, creat, and fcntl to not use _EXFUN, and change string parameters to open and creat to be ``const char *''. * libc/sys/sparc64/sys/fcntl.h: Likewise. * libc/sys/sparc64/creat.c (creat): Make PATH const. * libc/syscalls/sysopen.c: Include . (open) Make _FILE const. * libc/sys/z8ksim/glue.c (_open): Make BUF const. (_creat): Make PATH const. * libc/sys/h8300hms/syscalls.c (_open): Make PATH const. * libc/sys/h8500hms/syscalls.c (_open): Likewise. * libc/sys/m88kbug/syscalls.c (open): Likewise. * libc/sys/sh/syscalls.c (_open): Likewise. * stub/shared/glue.c (open): Make BUF const. * stub/ex93x/syscalls.c (open): Make FILENAME const. Thu Sep 8 16:39:12 1994 Steve Chamberlain (sac@jonny.cygnus.com) * libc/include/errno.h: Add ENMFILE * libc/include/sys/config.h: Support Z8000. * libc/include/sys/signal.h: New signals for go32. * libc/machine/h8500/psi.S (__addpsir0r0): New function * libc/machine/h8500/cmpsi.S (__ucmppsi2): New function * libc/machine/sh/sdivsi3.s (__sdivsi3): Rewritten. * libc/stdlib/mallocr.c (_morecore_r): Minimum chunk size is variable, depending upon CHUNK_POWER. * libc/sys/go32/*.c: Upgrade to new go32 stuff. Sun Sep 4 17:42:43 1994 Jim Wilson (wilson@sphagnum.cygnus.com) * libc/stdlib/ecvtbuf.c (_gcvt): Output '-' for negative numbers. Fri Sep 2 10:56:01 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) * libc/include/_ansi.h (_PARAMS): Don't define if already defined. Wed Aug 24 11:11:03 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) * configure.in: Change i[34]86 to i[345]86. * libc/include/math.h: Don't define HUGE_VAL if it is already defined. Wed Aug 17 15:18:02 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) * testsuite/libm.sac/test_erfc.c: Correct some result values. * testsuite/libm.sac/test_gammaf.c: Likewise. * testsuite/libm.sac/test_sin.c: Likewise. * testsuite/libm.sac/test_tanh.c: Likewise. Tue Aug 16 16:12:53 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) * libc/include/machine/ieeefp.h: Don't try set endianness if it is already set. Define typedefs __int32_t and __uint32_t. * libc/include/math.h: Include . (union __dmath): Use __uint32_t. * libm/math/fdlibm.h, libm/math/*.c: Use __int32_t and __uint32_t instead of int and unsigned int. Thu Aug 11 15:16:09 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) Replace the math library with the SunPRO fdlibm package. * libm/math: Completely changed all files. * libm/ieeefp: Remove contents and directory. * libm/Makefile.in (LIBM_FP_LIB): Remove. (SUBDIRS): Just set to math/lib.a. * libm/libm.texinfo: Updated for new library. * libc/include/math.h: Extensive changes for new math library. * libc/include/ieeefp.h (isnanf, isinff, finitef): Change argument from _FLOAT_ARG to float. (maxpowtwo, maxpowtwof): Don't declare. * configure.in (fp_dir): Removed; was always ieeefp anyhow. (libm_fp_lib): Removed. * Makefile.in (MATHOBJS_IN_LIBC): Updated with new file names. * testsuite/libm.paranoia/Makefile.in (check): Correct --srcdir argument to ${RUNTEST}. * testsuite/libm.sac/Makefile.in (LOCAL_CFLAGS): Define. (.c.o): New rule. (RUNTESTFLAGS): Set CC and CFLAGS. (TESTS): Remove test_log2 and test_log2f. (${TESTS}): Pass ${LOCAL_CFLAGS}, not ${CFLAGS}. * testsuite/libm.sac/math.c (run_vector_1): Use float, not _FLOAT_ARG, for single precision argument type. * testsuite/libm.sac/sac.exp: Treat an error in bit 63 as an expected failure. Close the input pipe. * testsuite/libm.sac/test.c (test_sok, test_iok, test_scok): Correct misspelling of inaccurate. (test_mok): Use ``inaccurate'', not ``wrong''. * testsuite/libm.sac/{test_acos.c, test_acosh.c, test_asin.c, test_asinh.c, test_atan.c, test_atanh.c, test_ceil.c, test_ceilf.c, test_cos.c, test_cosh.c, test_erf.c, test_erf.c, test_fabs.c, test_floor.c, test_floorf.c, test_fmod.c, test_fmodf.c, test_gamma.c, test_log1p.c, test_log1pf.c, test_yn.c): Correct many result values. Many are still wrong. * libc/stdlib/ecvtbuf.c (print_e): If _dtoa_r sets decpt to 9999, just copy the string. (_gcvt): Always return the buffer. Tue Aug 9 13:43:23 1994 J.T. Conklin (jtc@phishhead.cygnus.com) * bcopy.c: fixed documentation, bcopy was not specified by ANSI. Wed Aug 3 05:39:41 1994 D. V. Henkel-Wallace (gumby@cygnus.com) * libc/include/sys/reent.h: (struct _Bigint): add _reclaim structure. (struct _reent): add _p5s, _cvtlen, _cvtbuf. (_reclaim_reent): declare new entry point. * libc/reent/reent.c (cleanup_glue, _reclaim_reent): new functions. * libc/stdlib/mprec.c (Balloc): Keep track of every struct bigint ever allocated, so that we can later reclaim them all. (pow5mult): make reentrant. * libc/stdlib/ecvtbuf.c (fcvtbuf, ecvtbuf): extend these functions so that when given NULL as a buffer, return a pointer to static space in the rent structure. This is not documented behaviour; it's only to support ecvt and fcvt, which aren't ANSI anyway. * libc/stdlib/efgcvt.c (fcvt, ecvt) Use new functionality (and therefore become reentrant). * libc/stdlib/dtoastub.c: remove spurious inclusion of mprec.h. Mon Aug 1 16:52:24 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) * libc/include/machine/ieeefp.h: Check _AM29K, not ___AM29K__. Thu Jul 28 15:40:21 1994 J.T. Conklin (jtc@phishhead.cygnus.com) * Makefile.in: Make link to libg.a after libc.a; this is needed for the testsuites to build executables when everything comes from the tree. Mon Jun 27 17:14:29 1994 Bill Cox (bill@rtl.cygnus.com) * libc/Makefile.in: Add a VERSION variable so we can keep track. * libm/Makefile.in: Add a VERSION variable so we can keep track. Wed Jun 22 10:26:00 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) * libc/include/stdio.h: Use __VALIST, not va_list. Tue May 17 15:43:28 1994 Bill Cox (bill@rtl.cygnus.com) * testsuite/config/unix-libm.exp, testsuite/lib/libm.exp, testsuite/libm.sac/execute.exp: Replace error proc calls with perror calls. Wed May 11 09:25:28 1994 Doug Evans (dje@canuck.cygnus.com) * libc/include/*.h: #include "_ansi.h" instead of <_ansi.h>. * libc/include/time.h: #define NULL as 0L. Mon May 9 18:41:20 1994 Doug Evans (dje@canuck.cygnus.com) * host/any (INCLUDES): Delete -I of gcc/include, gcc -B takes care of it. Mon May 9 18:39:39 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) * libc/include/sys/signal.h: Check for __GO32__, not __i386__ and not __unix__. Sat May 7 17:07:36 1994 Steve Chamberlain (sac@cygnus.com) * configure.in (TARGET_CFLAGS): Set -O2 as default. (z8k-*-*): Use syscalls fake sys dir. * libc/sys/z8k/glue.c: Rename syscalls. * libc/sys/go32/Makefile.in: Use new routines. * libc/machine/Makefile.in: Fix typo in ln stuff. Thu May 5 13:47:48 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) * Makefile.in (libm.a, crt0.o): Use cp if ln fails. * libc/Makefile.in (crt0.o): Likewise. * libc/machine/Makefile.in (lib.a): Likewise. * libc/sys/Makefile.in (lib.a, crt0.o): Likewise. All Makefile.in files: Added mostlyclean, realclean and distclean targets. * Makefile.in: Don't bother to unexport XTRAFLAGS or XTRAFLAGS_FOR_TARGET, since they are no longer passed down from the top level Makefile. Tue Apr 26 15:10:34 1994 Doug Evans (dje@canuck.cygnus.com) * libc/sys/sparc64/sys/stat.h: New file. * libc/sys/sparc64/sys/time.h: New file. * libc/sys/sparc64/sys/types.h: New file. Fri Apr 22 12:58:24 1994 Stan Shebs (shebs@andros.cygnus.com) * stub/ex93x/crt0.s (start): Add code to clear bss. Wed Apr 13 10:34:58 1994 Doug Evans (dje@canuck.cygnus.com) * libc/include/sys/types.h (time_t): Properly protect inside #ifndef __time_t_defined. * libc/stdio/fileno.c: New file. * libc/stdio/Makefile.in (OFILES, CHEWOUT_FILES): Add fileno. (fileno.o): Add dependency. * libc/include/stdio.h (__sgetc): Rename never to _never. (fileno macro): Disable, needs to do CHECK_INIT first. Mon Apr 11 17:37:09 1994 Bill Cox (bill@rtl.cygnus.com) * testsuite/Makefile.in (EXPECT, RUNTEST): Set these for the check goal. * testsuite/Makefile.in (check): Set TCL_LIBRARY for runtest. * testsuite/libm.paranoia/Makefile.in (check): Set TCL_LIBRARY for runtest. * testsuite/libm.sac/Makefile.in (check): Set TCL_LIBRARY for runtest. Sat Apr 9 16:18:09 1994 Doug Evans (dje@cygnus.com) * libc/sys/sparc64/sys/fcntl.h: New file, define solaris versions of the various constants. Thu Apr 7 21:19:07 1994 Mark Eichin (eichin@cygnus.com) * libc/include/math.h: #ifndef __math_68881 around things which conflict with the (gcc-provided) inline functions in gcc/ginclude/math-68881.h. Thu Apr 7 02:50:43 1994 Doug Evans (dje@cygnus.com) * libc/include/_syslist.h (_gettimeofday): Define. (_times): Ditto. * libc/include/reent.h: #include to get _CLOCK_T_. (struct tms, timeval, timezone): Declare. (_gettimeofday_r, _times_r): Declare. * libc/include/time.h (_CLOCK_T_): Don't #undef. Remove #ifdef _CLOCK_T_ surrounding definition of clock_t. (time_t): Add multiple definition protection, __time_t_defined. * libc/include/sys/time.h: Don't #include . Always define struct timezone (remove #ifndef _TIME_H_). * libc/include/sys/times.h (_CLOCK_T_): Don't #undef. Remove #ifdef _CLOCK_T_ surrounding definition of clock_t. * libc/reent/Makefile.in (OFILES): Add timer.o. (CHEWOUT_FILES): Add timer.def. Add timer.o/timer.c dependence. * libc/reent/timer.c: New file. * libc/time/clock.c: #include . (clock): Call _times_r instead of times. * libc/time/time.c (HAVE_GETTIMEOFDAY): Renamed from HAVE_GET_TIME_OF_DAY. Add comment regarding supporting OS routine(s) required (for docs). #include . (time): Call _gettimeofday_r instead of gettimeofday. * libc/time/asctime.c: Fix comment regarding supporting OS routines. * libc/time/ctime.c: Ditto. * libc/time/strftime.c: Ditto. * libc/sys/sparc64/Makefile.in (TEMPLATE_SFILES): Remove gettimeofday. (TEMPLATE_SFILES_R): Define here. Also define times. Add times_r.o/times.S dependence. (time2.c, junk.c): Deleted. * libc/sys/sparc64/time2.c: Deleted. * configure.in (sparc64-*-*): Define HAVE_GETTIMEOFDAY. * libc/stdio/mktemp.c (_getpid_r): Renamed from _getpid. * libc/stdio/tmpnam.c (_getpid_r): Ditto. * libc/sys/sparc64/junk.c: Deleted. Mon Mar 21 16:51:03 1994 Doug Evans (dje@canuck.cygnus.com) * libc/sys/sparc64/Makefile.in: Add times syscall. * libc/sys/sparc64/crt0.S: Handle stack bias at run time so we can be used with and without it. Add comment clarifying Medium/Anywhere model requirements. * libc/sys/sparc64/sigsetjmp.S (setjmp, longjmp): Add svr4 support. * libc/sys/sparc64/sys/syscall.h (SYS_times): Define for sunos4 even if obsolete. Sun Mar 20 15:51:47 1994 Doug Evans (dje@cygnus.com) * configure.in (target_cflags): Move init. (sparc64-*-*): Define HAVE_BLKSIZE. Wed Mar 9 10:44:52 1994 Doug Evans (dje@canuck.cygnus.com) * libc/include/sys/_types.h: New file. * libc/include/reent.h: #include it. Add comment describing REENTRANT_SYSCALLS_PROVIDED and MISSING_SYSCALL_NAMES. Sort syscalls. * libc/include/_syslist.h: Remove _raise. * libc/reent/signalr.c: New file. * libc/reent/Makefile.in: Compile it. * libc/signal/signal.c: Only use ifdef SIMULATED_SIGNALS. Add doc for raise and _raise_r. * libc/signal/raise.c: Only use ifndef SIMULATED_SIGNALS. (raise): Call _raise_r. (_raise_r): Call _getpid_r and _kill_r. * libc/stdlib/abort.c: Remove inclusion of stdio.h and _syslist.h. (abort): Loop forever calling raise and _exit. Mon Mar 7 14:40:08 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) * configure.in: Remove extraneous echo. Thu Mar 3 12:14:22 1994 Doug Evans (dje@canuck.cygnus.com) * libc/sys/sparc64/sys/dirent.h (MAXNAMLEN): #undef to avoid collision with unistd.h, and fix for svr4. Wed Mar 2 13:55:25 1994 Doug Evans (dje@canuck.cygnus.com) * libc/stdio/local.h (_llicvt): Declare. (CVT_BUF_SIZE): Define (and buffer size from 512 to 128). * libc/stdio/cvt.c: Include "local.h" to get CVT_BUF_SIZE. (_llicvt): Define. (_sicvt): Fix function header (`value' is short). * libc/stdio/vfprintf.c (_vfprintf_r): Use CVT_BUF_SIZE. Add printing of long long's support. Add printing of 8 byte pointer support. Fri Feb 11 21:52:11 1994 Steve Chamberlain (sac@sphagnum.cygnus.com) * libc/sys/sh/syscalls.c (pipe, execv, wait, fork, utime, chown, stat, chmod): New hooks. (sbrk): Abort if stack and heap collide. * libc/machine/sh/udivsi3, libc/machine/sh/sdivsi3 Modified to shortcut when given small args. * libc/machine/sh/setjmp.s: Rewritten. * libc/machine/sh/strcmp.s (strcmp): New function takes advantage of cmp/str instruction. Wed Feb 9 15:12:35 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) * configure.in: Accept powerpc* as a CPU type, using fp_dir ieeefp and machine_dir powerpc. * libc/include/machine/setjmp.h, libc/include/machine/ieeefp.h: Add cases for __powerpc__. * libc/machine/powerpc/Makefile.in, libc/machine/powerpc/setjmp.S: New files. * libc/include/stdio.h (_iprintf_r): Declare correctly. Thu Jan 27 10:36:27 1994 Steve Chamberlain (sac@cygnus.com) * libc/stdlib/callocr.c: New file with _calloc_r in it. * libc/stdlib/calloc.c (calloc_r): Now in callocr.c Thu Jan 20 15:14:37 1994 Doug Evans (dje@canuck.cygnus.com) * libc/stdlib/ecvtbuf.c (print_f): Remove local "done". (print_e): More comments to describe args, etc. "type" arg may now be 'g' or 'G' for %g/G format --> remove trailing blanks. (_gcvt): Remove locals decpt, sign, end, p, done. More comments for print_e invocation. Pass "type" to print_e as is (g/G). Wed Jan 19 16:34:18 1994 Rob Savoye (rob@darkstar.cygnus.com) * stub/shared/m68k-crt0.S: Changed so it compiles (and runs) on a stock m68000. Mon Jan 17 15:41:53 1994 Doug Evans (dje@canuck.cygnus.com) * libc/stdlib/mallocr.c (_morecore_r): Fix aligning of pointer so it works with any sized pointer, including ones bigger than ints and longs. Thu Jan 6 14:53:21 1994 Doug Evans (dje@canuck.cygnus.com) * libc/sys/sparc64/{time2.c,utime.S,utime2.c}: New files. Sat Dec 11 16:17:20 1993 Steve Chamberlain (sac@thepub.cygnus.com) * libc/include/stdlib.h (_calloc_r): Add prototype. * libc/machine/h8500/negsi2.c: New file. * libc/machine/h8500/divsi3.c: Prevent overflow when dividing v large unsigned numbers. * libc/machine/h8500/cmpsi.c: Add cmppsi. * libc/stdlib/mallocr.c (morecore_r): Fix aligning pointers so it works when sizeof(size_t) != sizeof(char *). * libc/stdlib/mprec.c (Balloc): Call calloc rather than malloc to get play area * libc/stdlib/mprec.h: Define Just_16 if generating for z8000. Mon Dec 6 15:59:53 1993 Doug Evans (dje@rtl.cygnus.com) * libc/include/assert.h (assert): Handle -traditional. Tue Nov 16 15:49:24 1993 Mark Eichin (eichin@cygnus.com) * Makefile.in: added ; after every "fi" and "done" that wasn't at the end of a line (ie. anything before a backslash continuation) so that bash handles them. Tue Nov 16 12:31:57 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com) * libc/sys/go32/lstat.s: new file, copied from stat.s and renamed stat to lstat Mon Nov 15 15:50:43 1993 Steve Chamberlain (sac@jonny.cygnus.com) * libc/sys/sh/crt0.s, libc/sys/sh/trap.s, libc/machine/sh/sdivsi3.s, libc/machine/sh/setjmp.s, libc/machine/sh/udivsi3.s: Use new calling convention. Mon Nov 15 15:25:38 1993 Mark Eichin (eichin@cygnus.com) * libc/include/sys/unistd.h, libc/include/sys/stat.h: ANSI-fy chmod, access, chdir, chown by making _path const. Also fix _amode param of access. Fri Nov 12 20:25:28 1993 Mark Eichin (eichin@cygnus.com) * libc/sys/a29khif/_tmpnam.s (_tmpnam): renamed function to _khif_tmpnam, because it doesn't comply with ANSI but may be useful anyway. Real tmpnam was already in libc/stdio, and was colliding with this one (pr 2176.) * libc/sys/a29khif/stubs.s (tmpnam): removed tmpnam. This file is the wrong idea anyhow. Mon Nov 8 07:50:16 1993 Doug Evans (dje@canuck.cygnus.com) * configure.in: Remove h8300h, we have multilib now. Fri Nov 5 12:37:27 1993 Mark Eichin (eichin@cygnus.com) * libc/string/strcasecmp.c, libc/string/strncasecmp.c: new functions, to get preference over the ones in libiberty (since we provide correct declarations in . * libc/string/Makefile.in: add support for strncasecmp, strcasecmp. Fri Nov 5 09:05:45 1993 D. V. Henkel-Wallace (gumby@blues.cygnus.com) * Change netware config not to look for cpu explicitly. Thu Nov 4 14:21:25 1993 Doug Evans (dje@canuck.cygnus.com) * libc/sys/sparc64/{creat.c,junk.c}: New files. * libc/sys/sparc64/Makefile.in: Add dependencies. Wed Nov 3 10:42:49 1993 Doug Evans (dje@canuck.cygnus.com) * configure.in: Clean up v9 a bit, new "os" aoutv8. Tue Nov 2 10:00:44 1993 D. V. Henkel-Wallace (gumby@cygnus.com) * libc/include/sys/reent.h: make structure smaller by allocating some stuff when needed. * libc/signal/signal.c: allocate as needed * libc/stdio/findfp.c,stdio/local.h: ditto * libc/stdlib/mprec.c: ditto * libc/time/localtime.c: don't return a dangling stack ptr. Wed Sep 29 20:42:34 1993 Rob Savoye (rob@darkstar.cygnus.com) * stub/mvme135/crt0.S, stub/mvme135/glue.c: Moved to stub/generic. Wed Sep 29 16:27:49 1993 K. Richard Pixley (rich@sendai.cygnus.com) * libc/include/stdio.h (__sputc): comment out static inline which confuses coff toolchains. Thu Sep 2 16:31:36 1993 Mark Eichin (eichin@cygnus.com) * libc/sys/a29khif/{_close.s, _fstat.s, _lseek.s, _sbrk.s, _write.s, getpid.c, kill.c, read.s}: * libc/sys/a29khif/stubs.s: eliminated stubs that already go through the syscalls directory. Fri Oct 29 13:59:58 1993 Jeffrey Wheat (cassidy@cygnus.com) * configure.in: fixed double quote gotcha. Wed Oct 27 15:27:09 1993 Rob Savoye (rob@darkstar.cygnus.com) * stub/ex931: stub library for sparclite board. * stub/idp: Renamed from mc68ec. Added contructor table stuff to linker script. * stub/mvme135: Renamed from m68kmvme. Added contructor table stuff to linker script. Tue Oct 26 17:01:23 1993 K. Richard Pixley (rich@sendai.cygnus.com) * configure.in: Configure testsuites only if they exist. Tue Oct 26 12:37:11 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) * configure.in: Don't set machine_dir for i386 until there is something in libc/machine/i386 to compile. For i[34]86-*-netware* use sys/netware, don't use signal, define NO_EXEC, ABORT_PROVIDED, CLOCK_PROVIDED and MALLOC_PROVIDED. * libc/sys/netware: New directory. Contains simplistic and probably incorrect stubs for NetWare. Should be enough to load the library. * libc/sys/netware/crt0.c, libc/sys/netware/environ.c, libc/sys/netware/getpid.c, libc/sys/netware/link.c: New NetWare stub files. * libc/reent/execr.c: Don't use if NO_EXEC is defined. * libc/reent/sbrkr.c: Don't use if MALLOC_PROVIDED is defined. * libc/stdlib/abort.c: Don't use if ABORT_PROVIDED is defined. * libc/time/clock.c: Don't use if CLOCK_PROVIDED is defined. Mon Oct 25 16:48:08 1993 Roland H. Pesch (pesch@cygnus.com) * testsuite/Makefile.in: add "docs" dummy target for consistency with rest of newlib; turn "info" and "install-info" into dummy targets, since they wouldn't have worked. (Depended on nonexistent "doc" subdir.) Fri Oct 22 20:37:32 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com) * configure.in: handle mips* instead of mips Thu Oct 21 08:57:24 1993 Ian Lance Taylor (ian@cygnus.com) * libc/include/sys/dirent.h: New file. If it is not overridden by a version of libc/sys/*/sys/dirent.h, it includes the next file in case there is one lurking somewhere. Fri Oct 15 14:17:40 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) * libc/stdlib/strtoul.c (_strtoul_r): Several changes for ANSI compliance, namely: Accept a minus sign. Consider a single 0 with a radix of 0 as being a conversion. Determine overflow correctly. If an overflow occurs, set *ptr to the end of the number, not the middle. * lib/stdlib/strtol.c (_strtol_r): Determine overflow correctly. Thu Oct 14 21:49:52 1993 Doug Evans (dje@canuck.cygnus.com) * libc/machine/h8300/divsi3.S (divmodsi4): Fix h8300h case. Fri Oct 1 17:17:34 1993 Doug Evans (dje@canuck.cygnus.com) * Makefile.in (INSTALL): Use $srcrootpre. (crt0.o): Replace $< with $(CRT0_DIR)/$(CRT0), Sun make can't handle it. * libc/Makefile.in (crt0.o): Spell out $<, Sun make can't handle it. * libc/sys/Makefile.in (crt0.o, lib.a): Ditto. * stub/Makefile.in (crt0.o, TARGETLIB): Ditto. * libc/sys/sparc64/Makefile.in (isatty.o): Sun VPATH lossage. * libm/math/Makefile.in (matherr.o): Ditto. Thu Sep 30 11:09:17 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) * configure.in: Build multidirs for z8k. * libc/include/stdlib.h (_strtoul_r): add prototype. * libc/include/machine/limits.h: Get INT_MIN right for all the z8k family. * libc/include/machine/setjmp.h: Add for z8k. * libc/machine/z8k/{mulsi.o, udivsi3.o, umodsi3.o, modsi3.o} obsolete. * libc/sys/z8ksim/glue.c: tidy up. Mon Sep 20 14:04:46 1993 Doug Evans (dje@canuck.cygnus.com) * libc/unix/{execl.c execle.c execlp.c execv.c execvp.c}: New files. Requires execve system call. * libc/unix/Makefile.in: Use them. * libc/sys/sparc64/{execl.c execle.c execlp.c execv.c execvp.c}: Deleted, moved to libc/unix. * libc/sys/sparc64/Makefile.in: Remove them. Mon Sep 20 10:38:32 1993 Doug Evans (dje@canuck.cygnus.com) * libc/sys/sparc64/{template.S template_r.S}: New files. * libc/sys/sparc64/Makefile.in: Build source for trivial syscalls from templates. * libc/sys/sparc64/{chdir.S chmod.S close.S dup.S fcntl.S fork.S fstat.S lseek.S link.S mkdir.S open.S pipe.S read.S rmdir.S umask.S unlink.S wait4.S write.S}: Removed, now built from templates. Sun Sep 19 14:52:57 1993 Doug Evans (dje@canuck.cygnus.com) * libc/time/time.c: #include <_ansi.h>. Sun Sep 19 13:43:25 1993 Doug Evans (dje@canuck.cygnus.com) * configure.in (sparc64-*-*): Remove -D__SIZE_TYPE__. Mon Sep 13 13:52:16 1993 K. Richard Pixley (rich@sendai.cygnus.com) * configure.in: match m8* rather than m88k so that m88110 is recognized as well. Tue Sep 7 12:19:32 1993 Doug Evans (dje@canuck.cygnus.com) * libc/sys/h8300hms/{Makefile.in, _exit.c, misc.c}: Renamed exit.c to _exit.c to avoid collision with stdlib/exit.c. misc.c: New file. * configure.in: Add multilib support to h8300. Mon Sep 6 14:07:06 1993 Doug Evans (dje@canuck.cygnus.com) * libc/stdlib/abort.c (abort): Remove _VOLATILE from return type. * libc/include/_ansi.h (_ATTRIBUTE): New macro for __attribute__. * libc/include/stdlib.h (exit, abort): Add noreturn attribute. Mon Sep 6 14:24:18 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) * configure.in: Corrected multidirs for sparc target. Mon Aug 30 15:56:44 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) Support for building newlib multiple times with different compilation flags. * configure.in: Only configure doc at top level. Set multidirs when appropriate for target, unless not at top level. If multidirs is set, independently configure each subdirectory. Adjust TOP, MULTIDIRS and MULTISUBDIR appropriately in Makefile. * Makefile.in (MULTIDIRS, MULTISUBDIR): New variables, automagically set by configure.in. (all): If MULTIDIRS is set, build multiple copies of libraries. (install): If MULTIDIRS is set, install multiple copies of libraries. Install in $(tooldir)/lib/$(MULTISUBDIR). If MULTISUBDIR is set, don't bother to install header files. * host/any (INCLUDES, CHEW): Use $(SRCTOP) rather than $(TOP) from ${srcrootpre}. * stub/configure.in: Set MULTISUBDIR appropriately. * stub/Makefile.in (install): Install in $(tooldir)/lib/$(MULTISUBDIR). * All Makefile.in files: Define SRCTOP as well as TOP. Mon Aug 30 10:34:24 1993 Doug Evans (dje@canuck.cygnus.com) * libc/machine/h8300/{mulhi3.S, divhi3.S}: Comment out if h8300h. * libc/machine/h8300/{mulsi3.S, divsi3.S}: Add h8300h support. Thu Aug 26 19:38:12 1993 Doug Evans (dje@canuck.cygnus.com) * libc/sys/h8300hms/exit.c (_exit): New function. Wed Aug 25 16:31:48 1993 K. Richard Pixley (rich@sendai.cygnus.com) * configure.in: recognize m88110. Fri Aug 20 16:46:23 1993 K. Richard Pixley (rich@sendai.cygnus.com) * libc/sys/m88kbug/crt0.c: pretty up, remove extraneous comments, prototype main and call with args. Fri Jul 30 16:52:47 1993 K. Richard Pixley (rich@cygnus.com) First real try at system traps for m88k-bug. * libc/sys/m88kbug/syscalls.c: many changes. Convert from stubs to real trap calls. * libc/sys/m88kbug/sys/systraps.h: new file. Tue Jul 27 16:31:16 1993 K. Richard Pixley (rich@sendai.cygnus.com) Patches to fix info building when target does not use sys directory. * libc/Makefile.in (targetdep.tex): add sys.tex separately. * libc/sys.tex, libc/sys/sys.tex: moved from libc/sys/sys.tex to libc/sys.tex. * libc/sys/Makefile.in (doc): do nothing. Mon Jul 26 17:08:11 1993 K. Richard Pixley (rich@sendai.cygnus.com) * libc/Makefile.in (CRT0): new macro. (all): depend on $(CRT0) rather than crt0.o. * configure.in: fix libc_sys_dir -> libc_sys_lib thinko. do not default crt0, instead, set crt0 and crt0_dir based on sys_dir and stub_dir. * Makefile.in (CRT0_DIR): new macro. (all): depend on $(CRT0) rather than crt0.o which may not exist. (crt0.o): depend on $(CRT0_DIR)/$(CRT0) rather than simply $(CRT0). ($(CRT0)): recur by cd'ing into $(CRT0_DIR). Sun Jul 25 17:51:51 MDT 1993 Jeffrey Wheat (cassidy@cygnus.com) * testsuite/lib/libm.exp: added code to support compiling and linking of tests for libm.sac (paranoia to be added next) and processing the pass or failure of the tests. * testsuite/config/unix-libm.exp: platform specific proc's for dealing with compiler, linker and the way we execute and process the test results. * testsuite/libm.sac/execute.exp: generic framework for the sac tests. the config and lib expect code for specific platforms tie it all together. * testsuite/libm.sac/test_is.c: changed the output of the test to be consistant with the other tests. parsing of pass nad fail messages is now fixed. Fri Jul 23 19:20:07 1993 Per Bothner (bothner@kalessin) * libc/include/{assert.h, ctype.h, dirent.h, errno.h, fastmath.h, locale.h, math.h, pwd.h, reent.h, setjmp.h, signal.h, stdio.h, stdlib.h, string.h, termios.h, time.h, utime.h, utmp.h}: For C++: #ifdef __cplusplus, surround by extern ""C { ... }. * libc/include/assert.h: Do *not* protect assert.h against multiple inclusion! Also, #undef it before #define, to allow redefinition. * libc/include/stdio.h (getlogin, cuserid): Removed. These should be only in unistd.h. * libc/include/sys/{fcntl.h, reent.h, stat.h, time.h, times.h, unistd.h}: For C++: #ifdef __cplusplus, surround by extern ""C { ... }. Fri Jul 23 10:15:33 1993 Doug Evans (dje@canuck.cygnus.com) * libc/machine/sparc/Makefile.in: Must create a library, even if empty. Wed Jul 21 16:00:37 1993 K. Richard Pixley (rich@sendai.cygnus.com) * configure.in: set machine_dir for m88k. edit crt0 definition into makefiles. * Makefile.in, libc/Makefile.in (crt0): pull up from lower directories. * libc/Makefile.in (all): also build crt0.o. * libc/machine/i386/Makefile.in, libc/machine/sparc/Makefile.in, libc/machine/z8k/Makefile.in, libm/Makefile.in (clean): no need to remove CRT0. * libc/machine/m88k/Makefile.in (TOP, TARGETLIB): removed. (all): reworked to build in place. (clean): remove lib.a (Makefile): remove redundant ./, call $(SHELL) rather than sh. * libc/sys/m88kbug/crt0.c (start): renamed to _start. (_start): key off edata rather than _start_bss. Wed Jul 21 14:29:47 1993 david d `zoo' zuhn (zoo@cygnus.com) * libc/include/sys/unistd.h, libc/include/reent.h, libc/reent/sbrkr.c: change sbrk to return void* instead of char*. Tue Jul 20 13:19:18 1993 K. Richard Pixley (rich@sendai.cygnus.com) * libm/Makefile.in, libc/Makefile.in ($(SUBDIRS)): dollar escape a dollar sign. * Makefile.in (libc.a): break into two rules, one for libc.a and one for libc/libc.a. Force subdirs current before rebuilding library. (libm.a): break into two rules, one for libm.a and one for libm/libm.a. Force subdirs current before rebuilding library. * libc/Makefile.in (SUBLIBS): fix typo. * libc/sys/Makefile.in (all): force descent into subdirs, then rebuild library iff out of of date. Fri Jul 16 17:47:57 1993 K. Richard Pixley (rich@sendai.cygnus.com) Rework so that library is built and then finished rather than being built on each invocation of make. * host/any (machine_dir, sys_dir, signal_dir): these are not shared and have been moved to their associated Makefile.in's. (AR_FLAGS): switch to qc which is faster. * configure.in: no longer assign machine_dir for m88k. set stub_dir, stub_lib, & crt0 for m68k*-unknown-{aout,coff}. If stub_dir set, then add to configdirs. add comment about silly configuration. (configdirs): drop stub. It will be added only when needed. (libm_fp_lib, libc_unix_lib, libc_signal_lib, libc_machine_lib, libc_sys_dir, fake_sys_dir, libc_fake_sys_lib, stub_dir, stub_lib, crt0): new variables for tailoring lower level makefiles. Assign accordingly and edit into makefiles. * libm/Makefile.in: updated copyright. (TARGETLIB): removed. (FLAGS_TO_PASS): removed TARGETLIB, machine_dir, sys_dir. (SUBDIRS): removed TARGETDEP_DIRS. (LIBM_FP_LIB, SUBLIBS): new macros. (all): reworked. (force): new target to force rebuilds. (Makefile): call $(SHELL) rather than sh. drop redundant ./ * libc/sys/a29khif/Makefile.in, libc/sys/decstation/Makefile.in, libc/sys/go32/Makefile.in, libc/sys/h8300hms/Makefile.in, libc/sys/h8500hms/Makefile.in, libc/sys/m88kbug/Makefile.in, libc/sys/sh/Makefile.in, libc/sys/sparc64/Makefile.in, libc/sys/sun4/Makefile.in, libc/sys/sysvi386/Makefile.in, libc/sys/sysvnecv70/Makefile.in, libc/sys/z8ksim/Makefile.in, stub/m68kmvme/Makefile.in: updated copyright. (TARGETLIB, TARGETCRT0, CRT0): macros removed. (all): reworked. made this the default rule. (clean): also remove lib.a. (Makefile): call $(SHELL) rather than sh. drop redundant ./ * stub/Makefile.in: updated copyright. (TARGETLIB, TARGETCRT0, CRT0, TOP): removed. (stub_lib): new macro. (FLAGS_TO_PASS): removed TARGETLIB, stub_dir, TARGETCRT0. Added RANLIB. (all): reworked. (clean, install): assume stub_dir exists. (Makefile): depend on configure.in. call $(SHELL) rather than sh. drop redundant ./ * stub/configure.in (stublib): new macro, assign it, edit it into makefiles. * Makefile, libc/Makefile.in, doc/Makefile.in, libc/sys/Makefile.in: updated copyright. (all): reworked. (Makefile): call $(SHELL) rather than sh. drop redundant ./ * libc/Makefile.in (TARGETCRT0): removed. (FLAGS_TO_PASS): dropped TARGETLIB, machine_dir, sys_dir, TARGETCRT0. (SUBDIRS): drop TARGETDEP_DIRS. (LIBC_SIGNAL_LIB, LIBC_SYS_LIB, LIBC_MACHINE_LIB, LIBC_UNIX_LIB, LIBC_FAKE_SYS_LIB, SUBLIBS): new macros for configuration. (force): new target to force rebuilds. * libc/sys/Makefile.in (TARGETCRT0, sys_dir): removed. (FLAGS_TO_PASS): TARGETLIB, machine_dir, sys_dir, TARGETCRT0 removed. (clean): assume sys_dir always exists. * libm/test/Makefile.in (Makefile): call $(SHELL) rather than sh. drop redundant ./ * libc/ctype/Makefile.in, libc/errno/Makefile.in, libc/locale/Makefile.in, libc/machine/Makefile.in, libc/machine/a29k/Makefile.in, libc/machine/h8300/Makefile.in, libc/machine/h8500/Makefile.in, libc/machine/i386/Makefile.in, libc/machine/i960/Makefile.in, libc/machine/m68k/Makefile.in, libc/machine/mips/Makefile.in, libc/machine/necv70/Makefile.in, libc/machine/sh/Makefile.in, libc/machine/sparc/Makefile.in, libc/machine/z8k/Makefile.in, libc/reent/Makefile.in, libc/signal/Makefile.in, libc/stdio/Makefile.in, libc/stdlib/Makefile.in, libc/string/Makefile.in, libc/sys/Makefile.in, libc/syscalls/Makefile.in, libc/time/Makefile.in, libc/unix/Makefile.in, libm/ieeefp/Makefile.in, libm/math/Makefile.in: updated copyright. (TARGETLIB): removed. (all): reworked. (clean): also remove lib.a. (Makefile): call $(SHELL) rather than sh. drop redundant ./ * Makefile.in: (machine_dir, sys_dir, stub_dir, stub_lib, CRT0): new macros. (SUBDIRS): moved to follow frag inclusion, change stub to stub_dir. (FLAGS_TO_PASS): removed machine_dir, sys_dir, signal_dir which are now set in the libc Makefile. * libc/machine/Makefile.in (TARGETCRT0, machine_dir): removed. (FLAGS_TO_PASS): removed TARGETLIB, machine_dir, sys_dir, TARGETCRT0. (force): new target to force rebuilds. * stub/configure.in: determine and set stub_lib for for Makefile. Thu Jul 15 12:01:27 1993 Doug Evans (dje@canuck.cygnus.com) * libc/sys/h8300hms/Makefile.in: Make `all' the default target. crt0.s renamed to crt0.S. * libc/sys/h8300hms/crt0.S: Add h8/300h support. * libc/machine/h8300/Makefile.in: Make `all' the default target. * libc/machine/h8300/{cmpsi.S,ucmpsi.S}: #ifdef out entire file if h8300h. * libc/machine/h8300/defines.h: Add macros to handle pointers for h8300 (16 bits) and h8300h (32 bits). * libc/machine/h8300/{divsi3.S,mulsi3.S,memcpy.S,memset.S, reg_memcpy.S,reg_memset.S,strcmp.S}: Add h8300h support. Thu Jul 15 10:13:29 1993 Ian Lance Taylor (ian@cygnus.com) * libc/machine/m88k/setjmp.S, Makefile.in: New files; a simple implementation of setjmp and longjmp for the m88k. * libc/include/machine/setjmp.h: Added __m88000__ case. Wed Jul 14 10:10:30 1993 Doug Evans (dje@canuck.cygnus.com) * configure.in: Recognize h8300h as variant of h8300. Tue Jul 13 12:24:11 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) * libc/include/sys/unistd.h (read, write): get prototypes right. (sbrk): New prototype. * libc/reent/sbrkr.c (sbrkr): Use correct sbrk prototype. * libc/stdio/local.h: Include unistd.h. * libc/machine/h8300/syscalls.c: Names have changed. Mon Jul 12 18:08:42 1993 K. Richard Pixley (rich@cygnus.com) * configure.in: add sys_dir assignment for m88k-bug. Thu Jul 8 09:16:21 1993 Doug Evans (dje@canuck.cygnus.com) * libc/sys/sparc64/sys/syscallasm.h: New macros to handle either a.out or elf. * libc/sys/sparc64: all *.S files: Use new macros. * libc/sys/sparc64/isatty.c: New file. * libc/sys/sparc64/Makefile.in: Stop using /lib/libc.a for functions beyond what newlib provides. Thu Jul 8 09:11:28 1993 Doug Evans (dje@canuck.cygnus.com) * libc/include/sys/stat.h: Move st_atime so not doubly defined for svr4. Thu Jul 8 09:09:16 1993 Doug Evans (dje@canuck.cygnus.com) * libc/include/machine/ieeefp.h: Add support for h8/300h. Fri Jul 2 10:11:20 1993 K. Richard Pixley (rich@cygnus.com) * configure.in: add m88k. * libc/include/machine/ieeefp.h: add case for m88k. Also add sanity check so no one else need ever chase what I did to find this. * libm/math/Makefile.in (FAKEC): added atanf.c log1pf.c scalbnf.c. Fri Jul 2 09:15:21 1993 Ian Lance Taylor (ian@cygnus.com) * doc/makedoc.c: Include . Wed Jun 30 09:35:06 1993 Doug Evans (dje@canuck.cygnus.com) * libc/Makefile.in (FLAGS_TO_PASS): Add TARGET_ASFLAGS. * libc/sys/Makefile.in (FLAGS_TO_PASS): Add TARGET_ASFLAGS. * libc/machine/Makefile.in (FLAGS_TO_PASS): Add TARGET_ASFLAGS. * libm/test/Makefile.in (all): Link with ../../lib[cm].a. Sun Jun 27 17:05:20 1993 Doug Evans (dje@sphagnum.cygnus.com) * libc/include/errno.h (ENOSYS): Added. * libc/unix/getpwd.c (getcwd): Fix typo (_up -> up). Mon Jun 21 09:03:32 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) * libc/stdio/fflush.c (fflush): Check for reent struct initialization. * libc/stdio/fdopen.c (fdopen): Avoid namespace conflict. Fri Jun 18 16:06:05 1993 Mark Eichin (eichin@rtl.cygnus.com) * libc/stdlib/dtoastub.c: new file -- move user callable "dtoa" out of dtoa.c so it doesn't pollute the namespace. * libc/include/_syslist.h: new file -- mappings from _function to function, for systems where we can't win (by default, all of them, until we start updating system calls.) * libc/syscalls: new directory -- stubs for exporting _function names as unmodified function names. * libc/configure.in: add MISSING_SYSCALL_NAMES to enable _syslist.h on all platforms by default, but put hooks in for fake_sys_dir so we can include it when we've renamed the system calls. * libc/reent/execr.c libc/reent/filer.c libc/reent/fstatr.c libc/reent/linkr.c libc/reent/sbrkr.c libc/reent/statr.c libc/signal/raise.c libc/signal/signal.c libc/stdio/fdopen.c libc/stdio/mktemp.c libc/stdio/tmpnam.c libc/stdlib/abort.c libc/stdlib/system.c libc/unix/getcwd.c libc/unix/getlogin.c libc/unix/getpass.c libc/unix/getut.c libc/unix/ttyname.c: change non ANSI functions to call _function. Wed Jun 9 09:48:26 1993 Ian Lance Taylor (ian@cygnus.com) * libc/stdlib/strtoul.c (_strtoul_r): Handle leading 0 correctly when base 16 is specified. Don't accept non-digits if radix > 10. Thu Jun 3 10:01:15 1993 Doug Evans (dje@canuck.cygnus.com) * libc/include/math.h: Rename xxx_r fns to _xxx_r. Wed Jun 2 16:54:16 1993 Jim Wilson (wilson@sphagnum.cygnus.com) * libc/include/sys/stat.h: Surround text after #endif with comments. Wed Jun 2 12:47:32 1993 Ian Lance Taylor (ian@cygnus.com) * libc/stdlib/mallocr.c: If MALLOC_PROVIDED is defined, just make _malloc_r, _realloc_r, and free_r call the corresponding non-reentrant functions. * libm/math/modf.c (modf): We now take the address of ipart, so don't make it a register variable. Tue Jun 1 18:25:54 1993 Doug Evans (dje@canuck.cygnus.com) * libm/math/*: Rename all xxx_r fns to _xxx_r. Wed May 26 22:06:35 1993 Roland H. Pesch (pesch@cygnus.com) * libc/libc.texinfo and embedded docn throughout: formatting improvements, minor rephrasing for clarity, and improved reentrancy docn. Sun May 23 17:29:49 1993 Steve Chamberlain (sac@thepub.cygnus.com) * libm/ieeefp/infinity.c (maxpowtwof): Fix initialzation bug. * libc/stdio/cvt.c (_licvt): Print the right value on machines where sizeof(int) != sizeof(long). Fri May 21 22:09:32 1993 Roland H. Pesch (pesch@fowanton.cygnus.com) * libc/reent/execr.c, libc/reent/filer.c, libc/reent/linkr.c, libc/reent/sbrkr.c, libc/reent/statr.c, libc/stdio/tmpnam.c, libc/stdlib/atol.c, libc/stdlib/rand.c, libc/string/strpbrk.c, libc/string/strspn.c, libm/ieeefp/isnan.c, libm/math/bessel.c, libm/math/matherr.c: changes for better docn formatting (info). * libc/libc.texinfo, libc/ctype/ctype.tex, libc/locale/locale/tex, libc/reent/reent.tex, libc/signal/signal.tex, libc/stdio/stdio.tex, libc/stdlib/stdlib.tex, libc/string/strings.tex, libc/sys/sys.tex, libc/time/time.tex, libm/libm.texinfo, libm/ieeefp/ieeefp.tex, libm/math/math.tex: use makeinfo node defaulting to get better Info file node structure. (Requires recent sac change to doc/makedoc.c and doc/doc.str.) Also include a few formerly missing sections (subroutines). * doc/doc.str: delete fossil expansion for "func" * default.menu, no-signal.menu: delete. * Makefile.in, libc/Makefile.in, configure.in, host/any: simplify method used to adjust doc for missing "signals" chapter when signal_dir is empty. Thu May 20 21:38:37 MDT 1993 Jeffrey Wheat (cassidy@cygnus.com) * configure.in: added testsuite/libm.sac Wed May 19 14:52:34 1993 Doug Evans (dje@thepub.cygnus.com) * libc/sys/sparc64/crt0.S: Set %g4 to 0 (to test Medium/Anywhere code model). Tue May 18 13:17:21 1993 Ian Lance Taylor (ian@cygnus.com) * libm/Makefile.in: Use $(MAKE) rather than make, and define MAKEOVERRIDES to be empty. Mon May 17 08:42:44 1993 Ian Lance Taylor (ian@cygnus.com) * configure.in: Don't build mips-*-* with -msoft-float, since that makes it incompatible with hard floating point. Mon May 17 00:03:35 MDT 1993 Jeffrey Wheat (cassidy@cygnus.com) * Makefile.in: added recursive 'make check' Thu May 13 16:24:18 MDT 1993 Jeffrey Wheat (cassidy@cygnus.com) * configure.in: added ./testsuite ./testsuite/libm.paranoia * ./testsuite/Makefile.in: created * ./testsuite/libm.paranoia: paranoia tests added Thu May 13 10:30:24 1993 Ian Lance Taylor (ian@cygnus.com) * configure.in: For mips-*-* set machine_dir to mips. * libc/machine/mips: New directory. * libc/machine/mips/Makefile.in: New file. * libc/machine/mips/setjmp.S: New file; simplistic MIPS version of setjmp and longjmp. * libc/include/machine/setjmp.h: Added __mips__ case. * libc/machine/lmips: Removed unused and useless directory. Mon May 3 10:22:31 1993 Ian Lance Taylor (ian@cygnus.com) * configure.in: Accept i486-*-sco* as well as i386-*-sco*. Thu Apr 15 15:16:44 1993 Doug Evans (dje@canuck.cygnus.com) * libc/sys/sparc64/crt0.S: Add comment (%g1 contains atexit arg at start up). Fri Apr 9 13:32:26 1993 Ian Lance Taylor (ian@cygnus.com) * libc/include/machine/setjmp-dj.h: Use _SETJMP_DJ_H rather than SETJMP_H. Thu Apr 8 10:07:18 1993 Doug Evans (dje@canuck.cygnus.com) * libm/test/convert.c: structure member errno -> errno_val. Must include to use errno, it's a macro now. * libm/test/math.c: Ditto. * libm/test/math2.c: Include errno.h. * libm/test/string.c: Ditto. * libm/test/test.h: structure member errno -> errno_val. Remove extern int errno decl. Thu Apr 8 07:56:33 1993 Ian Lance Taylor (ian@cygnus.com) * libc/stdio/Makefile.in: Added dependencies on local header files. * libc/stdio/std.h, libc/stdio/vfprintf.h: Removed unused header files. Wed Apr 7 16:19:32 1993 Ian Lance Taylor (ian@cygnus.com) * libc/include/machine/ieeefp.h: Added __MIPSEB__ case. Wed Apr 7 10:55:21 1993 Doug Evans (dje@canuck.cygnus.com) * libc/stdio/siprintf.c libc/stdio/sscanf.c libc/stdio/vsprintf.c: Initialize _data. * libc/stdio/vfprintf.c: No need to declare _icvt, _licvt, _sicvt. * libc/stdio/local.h: Add prototype for _licvt. * libc/stdio/ungetc.c (__submore): Use _malloc_r,_realloc_r instead of malloc,reealloc. * libc/stdlib/local.h: New file. * libc/stdlib/efgcvt.c: #include local.h. (gcvt): Fix call to _gcvt. * libc/stdlib/ecvtbuf.c: #include local.h. * libc/stdlib/Makefile.in: new files mallocr.c mstats.c. * libc/stdlib/mallocr.c mstats.c malloc.h: New files. * libc/stdlib/malloc.c: main routines moved to mallocr.c. * libc/stdlib/atexit.c: moved global data to struct _reent. * libc/stdlib/exit.c: use struct _atexit in struct _reent. * libc/reent/reent.c (inpure_data): _REENT_INIT macro modified. Wed Apr 7 09:41:50 1993 Doug Evans (dje@canuck.cygnus.com) * libc/include/sys/reent.h: Stuff required by ANSI headers moved here from ../reent.h. Tue Apr 6 12:56:01 1993 Ian Lance Taylor (ian@cygnus.com) * Makefile.in (MATHOBJS_IN_LIBC): List of object files which should be provided in both libc.a and libm.a. (libc.a): Depend on targ-include and libm.a. Copy $(MATHOBJS_IN_LIBC) from libm.a to libc.a. (libm.a): Depend on targ-include. * configure.in (subdirs): Removed libc/math. Mon Apr 5 10:18:16 1993 Steve Chamberlain (sac@thepub.cygnus.com) * libm/ieeefp/infinity.c (maxpowtwo): Fix initialization bug. Sat Apr 3 11:06:07 1993 Doug Evans (dje@canuck.cygnus.com) * libc/include/{errno.h, math.h, stdio.h, stdlib.h}: Use sys/reent.h instead of reent.h. * libc/include/reent.h: Split into two parts: stuff needed by ANSI headers moved to sys/reent.h. * libc/include/signal.h: _MAX_SIGNALS moved to sys/signal.h. * libc/include/sys/signal.h: Define _MAX_SIGNALS if __need__MAX_SIGNALS defined. * libc/include/stdio.h: struct __sFILE moved to sys/reent.h. std{in,out,err} refer to new _std{in,out,err} members. Fri Apr 2 11:27:12 1993 Doug Evans (dje@canuck.cygnus.com) * libc/include/sys/signal.h: #define _SYS_SIGNAL_H for general case. Fri Apr 2 09:41:10 1993 Doug Evans (dje@canuck.cygnus.com) * libc/sys/sparc64/execve.S (execve): Insert nop in delay slot, rather than whatever macro seterrno() has. Thu Apr 1 16:47:08 1993 Doug Evans (dje@canuck.cygnus.com) * libc/locale/locale.c: Reentrant routines _r_xxx renamed to _xxx_r. struct reent_struct renamed to struct _reent for ANSI. * libc/include/machine/fastmath.h: Use _HAVE_STDC instead of __STDC__. * libc/reent/{execr.c, filer.c, fstatr.c, linkr.c, reent.c, reent.tex, sbrkr.c, statr.c}: _r_xxx reentrant routines renamed to _xxx_r. struct reent_struct renamed to struct _reent for ANSI. * libc/signal/signal.c: Reentrant routines _r_xxx renamed to _xxx_r. struct reent_struct renamed to struct _reent for ANSI. * libc/stdio/{fclose.c, fdopen.c, findfp.c, fiprintf.c, flags.c, fopen.c, fprintf.c, freopen.c, fscanf.c, fseek.c, ftell.c, fwalk.c, getchar.c, gets.c, iprintf.c, local.h, makebuf.c, mktemp.c, perror.c, printf.c, putchar.c, puts.c, refill.c, remove.c, rename.c, scanf.c, setvbuf.c, siprintf.c, sprintf.c, sscanf.c, stdio.c, tmpfile.c, tmpnam.c, vfprintf.c, vfprintf.h, vfscanf.c, vprintf.c, vsprintf.c}: Reentrant routines _r_xxx renamed to _xxx_r. struct reent_struct renamed to struct _reent for ANSI. structure members given leading "_" for ANSI. Use _HAVE_STDC instead of __STDC__ and _HAVE_STDARG. * libc/stdlib/{__adjust.c, calloc.c, dtoa.c, ecvtbuf.c, malloc.c, mprec.c, mprec.h, rand.c, std.h, strtod.c, strtol.c, strtoul.c, system.c}: Reentrant routines _r_xxx renamed to _xxx_r. struct reent_struct renamed to struct _reent for ANSI. Structure members given leading "_" for ANSI. _CONST --> const in prototypes. Use _HAVE_STDC instead of __STDC__. * libc/string/strtok.c: Reentrant routines _r_xxx renamed to _xxx_r. struct reent_struct renamed to struct _reent for ANSI. Structure members given leading "_" for ANSI. * libc/time/asctime.c: Reentrant routines _r_xxx renamed to _xxx_r. struct reent_struct renamed to struct _reent for ANSI. * libm/math/{acos.h, acosh.h, asin.c, asinh.h, atanh.h, bessel.h, cbrt.h, cosh.h, erf.c, erf.h, error.c, exp.c, fmod.c, frexp.h, gamma.h, hypot.h, ldexp.c, log.h, log10.c, log1p.c log2.c, mathimpl.h, pow.c, remainder.c, sincos.c, sinh.h, sqrt.h, tan.c, tanh.h}: struct reent_struct renamed to struct _reent for ANSI. * libc/include/{_ansi.h, ctype.h, math.h, reent.h, locale.h, signal.h, stdio.h, stdlib.h, string.h, time.h}: Use _HAVE_STDC instead of __STDC__ and _HAVE_STDARG. #ifndef _STRICT_ANSI non-ANSI routines. Reentrant routines renamed from _r_xxx to _xxx_r. No need to use _STRICT_ANSI on _xxx_r reentrant routines. Use _STRICT_ANSI instead of __STRICT_ANSI, _ANSI_SOURCE, etc. Clean up namespace (structure members have leading "_"). struct reent_struct renamed to struct _reent for ANSI compliance. _CONST --> const in function prototypes. * libc/include/string.h: Add NULL and size_t. * libc/sys/sparc64/Makefile.in: New syscall routines for link, unlink, wait, wait4. Reentrant syscall routines close, fork, fstat, link, lseek, open, read, sbrk, stat, unlink, wait, wait4, write. * libc/sys/sparc64/cerror.S (cerror_r): New routine. * libc/sys/sparc64/{close.S, fork.S, fstat.S, link.S, lseek.S, open.S, read.S, sbrk.S, stat.S, unlink.S, wait.S, wait4.S, write.S}: Define reentrant versions. * libc/sys/sparc64/sys/syscallasm.h (defsyscall_r): New macro for reentrant syscalls. * libc/sys/sparc64/crt0.S (start): Fix initialization of environ. * libc/include/stdlib.h (RAND_MAX): Fix value. Thu Apr 1 12:28:30 1993 Ian Lance Taylor (ian@cygnus.com) * libc/sys/a29khif/_main.c: Removed unnecessary file. * libc/sys/a29khif/Makefile.in (OFILES): Removed _main.c, moved VPATH support targets after all: target. * stub/mvme135/mvme.S: Renamed exceptionhandler to exceptionHandler, which is what mvme135-stub.c expects. Wed Mar 31 17:42:03 1993 Doug Evans (dje@cygnus.com) * libc/stdio/tmpnam.c (worker): Fix test for _r_open() failure. * libc/unix/getpass.c (getpass): Use stdin,stderr instead of def_stdin/def_stderr (latter removed from stdio.h to make it ANSI compliant). Tue Mar 30 09:58:21 1993 Doug Evans (dje@canuck.cygnus.com) * libc/reent/execr.c (_r_wait): Re-order args to make reent_struct first. libc/reent/filer.c (_r_open, _r_close, _r_lseek, _r_read, _r_write): Ditto. libc/reent/fstatr.c (_r_fstat): Ditto. libc/reent/linkr.c (_r_link, _r_unlink): Ditto. libc/reent/sbrkr.c (_r_sbrk): Ditto. libc/reent/statr.c (_r_stat): Ditto. * libc/stdio/fopen.c (_r_fopen): Re-order args to _r_open. * libc/stdio/freopen.c (freopen): Ditto for _r_open, _r_free. * libc/stdio/fseek.c (fseek): Ditto for _r_fseek. * libc/stdio/makebuf.c (__smakebuf): Ditto for _r_fstat. * libc/stdio/mktemp.c (_gettemp): Ditto for _r_stat, _r_open. * libc/stdio/remove.c (_r_remove): Ditto for _r_unlink. * libc/stdio/rename.c (_r_rename): Ditto for _r_link, _r_unlink. * libc/stdio/stdio.c (__sread): Ditto for _r_read. (__swrite): Ditto for _r_lseek, _r_write. (__sseek): Ditto for _r_lseek. (__close): Ditto for _r_close. * libc/stdio/tmpnam.c (worker): Ditto for _r_open, _r_close. * libc/stdlib/malloc.c (_r_morecore): Re-order args to _r_sbrk. * libc/stdlib/system.c (_r_system): Ditto for _r_wait. * libc/include/reent.h: Re-order arguments to _r_xxx syscall fns to make reent_struct the first argument (and thus consistent with the rest of newlib). * stub/mvme135/mvme135-stub.c (initializeRemcomErrorFrame): Remove reference to __STDC__. Mon Mar 29 12:34:32 1993 Doug Evans (dje@canuck.cygnus.com) * libc/stdlib/exit.c (exit): Use _REENT->__cleanup instead of global __cleanup. Wed Mar 24 11:54:35 1993 Doug Evans (dje@canuck.cygnus.com) * libc/stdio/freopen.c (freopen): Ensure stdio is initialized first. libc/stdio/fclose.c (fclose): Ditto. Tue Mar 23 01:26:52 1993 Doug Evans (dje@rtl.cygnus.com) * Run through indent and rename reentrant routines for ANSI. libc/stdio/{clearerr.c cvt.c fclose.c fdopen.c feof.c ferror.c fflush.c fgetc.c fgetpos.c fgets.c findfp.c fiprintf.c flags.c fopen.c fprintf.c fputc.c fputs.c fread.c freopen.c fscanf.c fseek.c fsetpos.c ftell.c fvwrite.c fwalk.c fwrite.c getc.c getchar.c gets.c iprintf.c makebuf.c mktemp.c perror.c printf.c putc.c putchar.c puts.c refill.c remove.c rename.c rewind.c rget.c scanf.c setbuf.c setvbuf.c siprintf.c sprintf.c sscanf.c stdio.c tmpfile.c tmpnam.c ungetc.c vfprintf.c vfscanf.c vprintf.c vsprintf.c wbuf.c wsetup.c local.h} * libc/locale/locale.c: Reformat and rename for ANSI, GNU style. * Run through indent and rename xxx_r fns to _r_xxx for ANSI. libc/stdlib/{__adjust.c __exp10.c __ten_mu.c abort.c abs.c assert.c atexit.c atof.c atoi.c atol.c bsearch.c calloc.c div.c dtoa.c ecvtbuf.c efgcvt.c exit.c getenv.c labs.c ldiv.c malloc.c mbtowc.c mprec.c putenv.c qsort.c rand.c setenv.c strdup.c strtod.c strtol.c strtoul.c system.c wctomb.c mprec.h} * Run through indent. libc/string/{bcmp.c bcopy.c bzero.c index.c memchr.c memcmp.c memcpy.c memmove.c memset.c rindex.c strcat.c strchr.c strcmp.c strcoll.c strcpy.c strcspn.c strerror.c strlen.c strncat.c strncmp.c strncpy.c strpbrk.c strrchr.c strspn.c strstr.c strtok.c strxfrm.c} * libc/time/{asctime.c clock.c ctime.c difftime.c gmtime.c localtime.c mktime.c strftime.c time.c}: Run through indent and rename xxx_r (reentrant) fns to _r_xxx for ANSI. * Reformatting + renaming (for ANSI, GNU style, consistency). libc/include/{_ansi.h, assert.h, ctype.h, errno.h, fastmath.h, ieeefp.h, locale.h, math.h, paths.h, pwd.h, reent.h, setjmp.h, signal.h, stdio.h, stdlib.h, string.h, time.h, unistd.h} Fri Mar 19 11:28:01 1993 Doug Evans (dje@cygnus.com) * libc/include/stdio.h (stdin_r): Fix. Fri Mar 19 09:43:48 1993 Ian Lance Taylor (ian@cygnus.com) * Makefile.in: Unexport some variables to keep GNU make from putting them in the environment and using up needed ARG_MAX space (a hack is used to let this work with older makes as well). Tue Mar 16 15:11:08 1993 Ian Lance Taylor (ian@cygnus.com) * Makefile.in: Use $(MAKE) rather than make. (MAKEOVERRIDES): Define to be empty. (FLAGS_TO_PASS): Don't pass down LD (it's not used). (libc.a, libm.a): Depend on targ-include. * host/any (LD): Don't define. (INCLUDES): Use targ-include. * stub/Makefile.in (MAKEOVERRIDES): Define to be empty. (FLAGS_TO_PASS): Don't pass down LD (it's not used). * libc/Makefile.in: Use $(MAKE) rather than make. (MAKEOVERRIDES): Define to be empty. (FLAGS_TO_PASS): Don't pass LD (it's not used). (all): Rewrote to be slightly smaller. * libc/machine/Makefile.in, libc/sys/Makefile.in (MAKEOVERRIDES): Define to be empty. (FLAGS_TO_PASS): Don't pass LD (it's not used). * libm/Makefile.in (FLAGS_TO_PASS): Don't pass LD (it's not used). Mon Mar 15 08:45:41 1993 Ian Lance Taylor (ian@cygnus.com) * libc/sys/go32/gerrno.s: Renamed from errno.s to avoid conflict with errno/errno.c. Fri Mar 12 09:46:54 1993 Ian Lance Taylor (ian@cygnus.com) * Changes for reentrancy. libc/stdio/fdopen.c, libc/stdio/freopen.c, libc/stdio/perror.c: Use ptr->_errno, not errno. libc/stdio/mktemp.c (mkstemp_r, mktemp_r): New functions. libc/stdio/remove.c (remove_r): New function. libc/stdio/rename.c (rename_r): New function. libc/stdio/fopen.c, libc/stdio/freopen.c, libc/stdio/fseek.c, libc/stdio/makebuf.c, libc/stdio/mktemp.c, libc/stdio/remove.c, libc/stdio/rename.c, libc/stdio/stdio.c, libc/stdio/tmpnam.c: Use reentrant versions of system calls. libc/stdio/gets.c: Call getchar_f, not nonexistent getchar_r. libc/stdio/scanf.c: Use stdin_r, not nonexistent stdin_n. libc/stdio/tmpfile.c: Use tmpnam_f, not nonexistent tmpnam_r. libc/stdio/findfp.c: Include . libc/stdio/fread.c, libc/stdio/rget.c, libc/stdio/scanf.c: Include "local.h". libc/stdio/wbuf.c: Include "fvwrite.h" * libc/stdlib/{dtoa.c, ecvtbuf.c, mprec.c, strtod.c}: Include . libc/stdlib/malloc.c: Call sbrk_r rather than sbrk. (NULL): Don't define if already defined. libc/stdlib/system.c: Call reentrant versions of system calls. (system_r): New function. * Changes for reentrancy. libc/include/_ansi.h (_PARAMS): New macro. libc/include/errno.h: Define errno as a macro that calls __errno. (__errno_r): New macro for reentrant code. libc/include/math.h: Include reent.h. Declare many reentrant functions. (signgam): Now a macro, not a variable. (struct exception): Added err field. libc/include/reent.h: Don't declare __sglue. Added function declarations. (struct reent_struct): Moved errno to beginning. Added _signgam. libc/include/stdio.h, libc/include/stdlib.h: Added function declarations. * More reentrancy hacking. libc/errno/errno.c (__errno): New function. libc/reent/execr.c, libc/reent/filer.c, libc/reent/fstatr.c, libc/reent/linkr.c, libc/reent/sbrkr.c, libc/reent/statr.c: New files. * Added many new reentrant functions to libm/math/*. libm/math/error.c (__matherror): Added reent_struct pointer argument. Changed all callers. libm/math/gamma.c (signgam): Removed. Set ptr->_signgam, instead. libm/math/exp.h, libm/math/pow.h, libm/math/sincos.h, libm/math/tan.h: Removed obsolete unused header files. * libc/sys/a29khif/stubs.s: Use register lr0, not v0. * libc/sys/sun/Makefile.in (COPYOFILES): Don't pull in errno.o. Mon Mar 8 16:43:43 1993 Steve Chamberlain (sac@thepub.cygnus.com) * libc/sys/a29khif/stubs.s: clobber safe register, and fill all delay slots. Tue Mar 2 14:47:00 1993 Jeffrey Osier (jeffrey@fowanton.cygnus.com) * libc/libc.texinfo: comment out reentrancy chapter (duh) Tue Mar 2 14:34:16 1993 Jeffrey Osier (jeffrey@fowanton.cygnus.com) * libc/reent/reent.tex: New file. (text from newlib/libc/libc.texinfo) * libc/stdio/tmpnam.c: fixed doc typo * libc/stdlib/rand.c: fixed doc typo Tue Mar 2 14:34:16 1993 Jeffrey Osier (jeffrey@fowanton.cygnus.com) * libc/reent/reent.tex: New file. (text from newlib/libc/libc.texinfo) Fri Feb 26 12:20:54 1993 Steve Chamberlain (sac@thepub.cygnus.com) support for reentrancy * libc/reent/reent.c, libc/reent/Makefile.in, libc/reent/reent.c: new files * libc/errno/errno.c, libc/include/ieeefp.h, libc/include/locale.h, libc/include/reent.h, libc/include/signal.h, libc/include/stdio.h, libc/include/stdlib.h, libc/include/string.h, libc/include/time.h, libc/signal/signal.c libc/stdio/cvt.c, libc/stdio/fclose.c, libc/stdio/fdopen.c, libc/stdio/fflush.c, libc/stdio/fgets.c, libc/stdio/findfp.c, libc/stdio/flags.c, libc/stdio/fopen.c, libc/stdio/fputc.c, libc/stdio/freopen.c, libc/stdio/fseek.c, libc/stdio/ftell.c, libc/stdio/fwalk.c, libc/stdio/getchar.c, libc/stdio/gets.c, libc/stdio/glue.h, libc/stdio/iprintf.c, libc/stdio/local.h, libc/stdio/makebuf.c, libc/stdio/perror.c, libc/stdio/printf.c, libc/stdio/putchar.c, libc/stdio/puts.c, libc/stdio/refill.c, libc/stdio/scanf.c, libc/stdio/setvbuf.c, libc/stdio/sprintf.c, libc/stdio/tmpfile.c, libc/stdio/tmpnam.c, libc/stdio/ungetc.c, libc/stdio/vfprintf.c, libc/stdio/vfprintf.h, libc/stdio/vfscanf.c, libc/stdio/vprintf.c, libc/stdio/wsetup.c, libc/stdlib/__adjust.c, libc/stdlib/__exp10.c, libc/stdlib/assert.c, libc/stdlib/atexit.c, libc/stdlib/atol.c, libc/stdlib/dtoa.c, libc/stdlib/ecvtbuf.c, libc/stdlib/malloc.c, libc/stdlib/mprec.c, libc/stdlib/mprec.h, libc/stdlib/rand.c, libc/stdlib/setenv.c, libc/stdlib/std.h, libc/stdlib/strtod.c, libc/stdlib/strtol.c, libc/stdlib/strtoul.c, libc/string/strtok.c, libc/time/asctime.c, libc/time/localtime.c, libc/time/mktime.c, libc/time/strftime.c: modify to provide reentracy. new routines: strtok_r, asctime_r, fdopen_r, _cleanup_r, fopen_r, iprintf_r, perror_r, printf_r, putchar_r, puts_r, scanf_r, sprintf_r, tmpfile_r, vfiprintf_r, vfprintf_r, strtod_r, dtoa_r, rand_r, srand_r, strtoul_r,strtol_r, free_r, malloc_r, morecore_r, mstats_r, realloc_r, localeconv_r, setlocale_r Wed Feb 17 20:17:15 1993 Mark Eichin (eichin@cygnus.com) * libc/include/machine/ieeefp.h, libc/include/machine/setjmp.h, libc/include/sys/config.h, libc/include/sys/signal.h, libc/include/sys/stat.h, libc/include/sys/types.h: For compiler provided macros (such as m68000), use the ansi version (__m68000__) so that the library can be used with code compiled -ansi. In particular, m68000, mc68000, _AM29K, i386, MIPSEL, unix, and sparc. Wed Feb 17 13:01:34 1993 Jim Wilson (wilson@sphagnum.cygnus.com) * configure.in (sparc*): Don't set -fsoft-float for sparc configurations. Do set -fsoft-float for sparclite configurations. Fri Feb 12 16:25:52 1993 Roland H. Pesch (pesch@fowanton.cygnus.com) * default.menu, no-signal.menu: alternate forms of libc main menu (in newlib rather than newlib/libc due to configuration restrictions) * configure.in: select one of the two menus above, link to libc.menu * libc/libc.texinfo: include menu from separate file Fri Feb 12 12:50:06 1993 Ian Lance Taylor (ian@cygnus.com) * Makefile.in (FLAGS_TO_PASS): Put INSTALL back in. (info): Split long shell command in half. * libc/Makefile.in (info, targetdep.tex): Don't pass everything to sub-makes, just CHEW and TARGETDOC. (targetdep.tex): Removed now special handling of sys and machine subdirectories, made obsolete some time ago. * libc/machine/Makefile.in (doc): Don't pass everything to sub-make, just CHEW and TARGETDOC. (Makefile): New target. * libc/sys/Makefile.in (Makefile): New target. Thu Feb 11 15:25:15 1993 Ian Lance Taylor (ian@cygnus.com) * Makefile.in (here and most subdirectories): Only pass down CHEW and TARGETDOC when making info, not for other targets. * Makefile.in (here and most subdirectories), host/any: Use $(AR) $(AR_FLAGS) rather than $(ARUPDATE). Wed Feb 10 11:57:52 1993 Ian Lance Taylor (ian@cygnus.com) * Try to reduce command line length: * Makefile.in (FLAGS_TO_PASS): don't pass down exec_prefix, CC_FOR_BUILD, CFLAGS_FOR_BUILD, INSTALL or CHEW. (info, docs): pass CC_FOR_BUILD and CFLAGS_FOR_BUILD to doc. (info): Pass CHEW to other subdirs. Tue Feb 9 14:01:42 1993 Mark Eichin (eichin@cygnus.com) * configure.in: add signal_dir, like unix_dir, but by default it is set to "signal" so that a29khif can turn it off (since a29khif has raise() as part of machine-specific signal.s.) Fri Jan 15 12:09:50 1993 Steve Chamberlain (sac@thepub.cygnus.com) * libc/sys/config.h, libc/machine/ieeefp.h: add Z8000 support * libc/stdio/Makefile.in: pass CFLAGS so vfiprintf.c gets built correctly. * libc/stdio/fdopen.c, libc/stdio/fgets.c, libc/stdio/fscanf.c, libc/stdio/vfprintf: type lint. * libc/sys/z8ksim/crt0.c (start): Z8001/Z8002 independent initialzation code. * libc/sys/z8ksim/glue.c: Z8001/Z8002 clean system calls. Tue Dec 29 10:15:33 1992 Ian Lance Taylor (ian@cygnus.com) * stub/mvme135/mvme135-asm.S: new file. stub/mvme135mvme135-stub.c: moved all assembler routines into mvme135-asm.S. stub/mvme135/Makefile.in: build mvme135-stub.o. Mon Dec 28 12:40:43 1992 Ian Lance Taylor (ian@cygnus.com) * Makefile.in: don't pass down $(CPP); use $(CC) -E in sub-Makefiles instead, to try to avoid line length limitations. Mon Dec 21 18:36:13 1992 Per Bothner (bothner@rtl.cygnus.com) * libc/include/unistd.h (read, write): Use void* instead of char*. Thu Dec 17 13:49:46 1992 Mark Eichin (eichin@cygnus.com) * stub/go32/resetpc: sample script to send a reset packet to the stub * stub/go32/I386STUB.C: new file, gdb/i386stub.c modified for the DOS environment, which compiles with Turbo C. * stub/go32/DSER32.LNK: new file, linker commands for serial remote stub. * stub/go32/CONTROL.C: turn off debug_mode, add CYGNUS tag line to start up message to identify version; call set_debug_traps. * stub/go32/DEBUG.C: turn off debug_mode (so stub doesn't need any keyboard interaction); call handle_exception() in go_til_stop, rather than return, so that the remote stub gets control. * stub/go32/MAKEFILE: fixed to actually use DOS commands (del and rename, rather than mv), set flags that work with current Turbo C, including using the /3 flag; also, add commands to build dser32. * stub/go32/DEBUG32.LNK, stub/go32/GO32.LNK: fix paths to match default Turbo C installation (\tc rather than \usr) * stub/go32/MONO.C (printf): current Turbo C uses "..." instead of "&..." Mon Dec 14 09:37:33 1992 Steve Chamberlain (sac@thepub.cygnus.com) * libc/include/math.h: added _DOUBLE_IS_32BITS checks Thu Nov 12 22:31:04 1992 Steve Chamberlain (sac@thepub.cygnus.com) * libc/stdio/cvt.c (licvt): new function to convert ints when sizeof(int) != sizeof(long). * libc/include/stdio.h: added prototype for iprintf. * libc/include/machine/limits.h machine/ieeefp.h: z8k stuff Tue Nov 10 12:18:12 1992 Ian Lance Taylor (ian@cygnus.com) * libc/machine/m68k/setjmp.S: use __USER_LABEL_PREFIX__ and __REGISTER_PREFIX__. Mon Nov 2 13:50:14 1992 Ian Lance Taylor (ian@cygnus.com) * libc/sys/m68kbare: moved into stub directory. Mon Nov 2 13:40:42 1992 Ian Lance Taylor (ian@cygnus.com) * configure.in, Makefile.in: created new directory stub, to hold sample code for specific targets. Wed Oct 28 02:19:55 1992 Mark Eichin (eichin@cygnus.com) * restored libc/sys/go32/sys/fcntl.h, to override incorrect values in the unified libc/include/sys/fcntl.h. Wed Oct 21 13:55:58 1992 Doug Evans (dje@rtl.cygnus.com) * libc/stdlib/ecvtbuf.c: (print_f,_gcvt): printf("%f", 0.01) printed .01, not 0.01. Mon Oct 19 11:05:55 1992 Ian Lance Taylor (ian@cygnus.com) * configure.in: compile with -m68000 for m68* targets. Sun Oct 18 05:29:05 1992 Mark Eichin (eichin@cygnus.com) * libm/math/remainder.c (remainder): document the svr4 and sunos references used to construct the function. Sat Oct 17 21:46:16 1992 Mark Eichin (eichin@cygnus.com) * libm/math/remainder.c (rint, remainder): fix old typos. * libm/math/Makefile.in: actually build remainder.c (functions rint and remainder, from SysVr4 Programmer's Guide floor(3m) man page.) Thu Oct 15 07:48:05 1992 Ian Lance Taylor (ian@cygnus.com) * libc/string/bcopy.c: BSD version works on overlapping strings, so ours should too. * libc/stdlib/system.c: always invoke /bin/sh, not getenv ("SHELL"). Wed Oct 14 11:07:11 1992 Ian Lance Taylor (ian@cygnus.com) * Makefile.in (docs): new target. Wed Oct 14 07:44:25 1992 Ian Lance Taylor (ian@cygnus.com) * libc/include/sys/times.h: define clock_t as required by POSIX. libc/include/time.h: protect clock_t from multiple definitions. Wed Oct 7 11:02:21 1992 Mark Eichin (eichin at tweedledumber.cygnus.com) * libm/math/sqrt.h (sqrt): actually, the final version of fp-bit does not need more than the original three iterations to get within 1 ulp. (Paranoia tests for rounding to better than that, but further iterations *don't* help, only more subtle changes can.) Tue Oct 6 09:22:12 1992 Ian Lance Taylor (ian@cygnus.com) * libc/sys/vxworks68, libc/sys/vxworks960: removed, since they were doing nothing useful. Tue Oct 6 08:48:13 1992 Ian Lance Taylor (ian@cygnus.com) * configure.in: define MALLOC_PROVIDED for vxworks targets; removed sys_dir settings of vxworks68 and vxworks960. host/any: don't pass -nostdinc to gcc, since newlib no longer provides all required header files. * libc/stdlib/malloc.c: only compile this file if MALLOC_PROVIDED is not defined; this provides a hook for VxWorks. Mon Oct 5 03:44:57 1992 Mark Eichin (eichin at tweedledumber.cygnus.com) * libc/stdio/setvbuf.c (setvbuf): while ANSI does say to malloc a buffer if buf is NULL, don't do it here -- it is already being done by makebuf elsewhere in stdio. Fri Oct 2 13:12:07 1992 Ian Lance Taylor (ian@cygnus.com) * libc/sys/a29khif/Makefile.in: assemble Steve's list of stubs so that C programs can call functions without using initial underscores. Thu Oct 1 09:37:47 1992 Ian Lance Taylor (ian@cygnus.com) * libc/stdlib/abort.c (abort): call exit, in case kill returns. Wed Sep 30 08:22:18 1992 Ian Lance Taylor (ian@cygnus.com) * configure.in: set TARGET_CFLAGS for certain CPU types to -msoft-float. Tue Sep 29 21:09:32 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com) * libc/sys/m68kbare/glue.c: use <_ansi.h> instead of Mon Sep 28 14:58:44 1992 Ian Lance Taylor (ian@cygnus.com) * configure.in: added sys_dir m68kbare for m68k*-unknown-aout and m68k*-unknown-coff. Fri Sep 25 08:33:21 1992 Ian Lance Taylor (ian@cygnus.com) * libc/include/stdio.h: define __need___va_list before including , to avoid defining va_arg, et. al. Tue Sep 22 13:47:00 1992 Ian Lance Taylor (ian@cygnus.com) * libc/sys/Makefile.in: handle the case of an empty $(sys_dir) (don't cd to the user's home directory). * libc/Makefile.in: replaced all instances of $(MAKE) with make. In general this is the wrong thing to do, but I can't get around GNU make's insistence on passing command line arguments any other way. Tue Sep 22 10:12:44 1992 Ian Lance Taylor (ian@cygnus.com) * configure.in: always configure the libc/sys directory, since it now provides a required documentation file. * Makefile.in: replaced all instances of $(MAKE) with make. In general this is the wrong thing to do, but I can't get around GNU make's insistence on passing command line arguments any other way. Mon Sep 21 22:42:26 1992 Ian Lance Taylor (ian@tweedledumbest.cygnus.com) * libc/stdlib/ecvtbuf.c (_gcvt): string for 0 was not null terminated. * libc/stdio/local.h: include to define va_list. libc/stdio/vsprintf.c: include rather than . * libc/include/float.h, libc/include/stdarg.h, libc/include/stddef.h, libc/include/varargs.h: removed; use gcc versions instead. libc/include/stdio.h: get size_t from , and va_list from , not from . Protect definition of NULL. libc/include/time.h: get size_t from stddef.h. Protect definition of NULL. libc/include/machine/limits.h: override gcc by defining _LIMITS_H___. Don't define CLK_TCK. Copied in gcc to get correct INT_MIN and LONG_LONG values. libc/include/machine/types.h: don't define ptrdiff_t, wchar_t, size_t or va_list at all; they're now gotten from stddef.h instead. libc/include/machine/varargs.h: removed; use gcc version instead. libc/include/sys/types.h: explicitly include . * libm/math/sqrt.h: using the fp-bit routines appears to require more iterations. * Makefile.in, host/any: let system include files override machine include files. Sat Sep 19 21:10:06 1992 Mark Eichin (eichin at tweedledumber.cygnus.com) * libc/include/machine/types.h: allow __*_TYPE__ from cpp to override _*_T_ definitions defaulted here. Tue Sep 15 11:14:46 1992 Ian Lance Taylor (ian@cygnus.com) * Makefile.in (install): install the include files in $(tooldir)/include, not $(exec_prefix)/include. Fri Sep 11 15:48:43 1992 Ian Lance Taylor (ian@cygnus.com) * Makefile.in (install): fixed typo, and changed install to not force rebuild of libc.a and libm.a. Thu Sep 10 10:46:09 1992 Ian Lance Taylor (ian@cygnus.com) * libc/sys/a29khif/*: Changed all .include's to include sys/sysmac.h, not plain sysmac.h. The header files live in sys so that they will be installed for the user. * Makefile.in (all): create targ-include, a directory holding the machine and system specific header files during the build. (install): fixed installation of machine and system specific header files. * Makefile.in: fixed comment. host/any: change .s.o rule to use $(AS) rather than $(CC), so that we can pass $(INCLUDES) to it. Thu Sep 10 10:13:13 1992 Ian Lance Taylor (ian@cygnus.com) * libc/include/sys/param.h: new generic file, which may be overridden for specific systems. * libc/include/sys/signal.h: define all ANSI signal names, and NSIG (which is not ANSI) for a29k. Tue Sep 8 09:04:30 1992 Ian Lance Taylor (ian@cygnus.com) * Makefile.in: don't pass down arguments the lower level makes will not need. * libc/Makefile.in: recurse directly, rather than using subdir_do, in hopes of avoiding argument length limits. * libm/Makefile.in: recurse directly, rather using subdir_do, in hopes of avoiding argument length limits. Tue Sep 8 08:27:22 1992 Ian Lance Taylor (ian@cygnus.com) * libc/include/sys/fcntl.h: include to ensure that mode_t is defined. Mon Sep 7 14:02:07 1992 Ian Lance Taylor (ian@cygnus.com) * Fixed make info and make install-info for newlib, changing most Makefile.in and several *.tex files. Moved doc directory from libc to top level. * libc/time/mktime.c (_DAYS_IN_MONTH): actually, not const. Should be rewritten. * libc/string/strings.tex: renamed node index to node index function, so that it does not conflict with the top level index node. * libc/include/sys/config.h: define __IEEE_BIG_ENDIAN for h8300. Fri Sep 4 02:34:06 1992 Ian Lance Taylor (ian@cygnus.com) * Overhauled general configuration for newlib. Eliminated all target dependent Makefile fragments. Create libraries in newlib rather than newlib/libc and newlib/libm. Use CC, et. al., rather than CROSS_CC, et. al. Broke make docs; will fix later. * libc/time/localtime.c (_DAYS_IN_MONTH): actually, not const. Should be rewritten. Tue Sep 1 15:21:14 1992 Ian Lance Taylor (ian@cygnus.com) * libc/configure.in: cleaned up somewhat; switch on ${target} rather than ${target_alias}. * libm/configure.in: cleaned up somewhat; switch on ${target} rather than ${target_alias}. * libc/ctype/ctype_.c: marked _ctype_ array _CONST. * libc/include/ctype.h: marked _ctype_ as _CONST. * libc/locale/locale.c (lconv, localeconv): marked static lconv as _CONST. * libc/stdio/cvt.c, libc/stdio/findfp.c (__sfmoreglue), libc/stdio/vfscanf.c (__svfscanf): made static variables const. libc/stdio/gets.c (gets): removed non-ANSI warning message. libc/stdio/tmpnam.c (tmpnam): removed unneeded filename variable. * libc/stdlib/mprec.h, libc/stdlib/mprec.c (pow5mult, tens, bigtens, tinytens): marked arrays _CONST. libc/stdlib/qsort.c (swap): if __GNUC__, use _builtin_alloca rather than a static variable. * libc/time/asctime.c (asctime), libc/time/localtime.c (_DAYS_IN_MONTH), libc/time/mktime.c (_DAYS_IN_MONTH, _DAYS_BEFORE_MONTH), libc/time/strftime.c (dname_len, dname, mname_len, mname): Marked static arrays _CONST. * libm/math/gamma.h: made local variables non-static. * libm/math/acos.h, libm/math/bessel.c, libm/math/erf.c, libm/math/exp.c, libm/math/gamma.h: marked static arrays as _CONST. * libm/math/constants.c: removed file, because the constants it defined were never referenced. libm/math/Makefile.in: removed references to constants.c. libm/math/mathimpl.h: removed declarations of constants. Wed Aug 26 21:09:06 1992 Ian Lance Taylor (ian@cygnus.com) * libc/include/machine/varargs.h: only call __builtin_saveregs if it is sensibly defined in libgcc2. Checks preprocessor defines, which is not a good solution. * libm/sqrt.c: sqrt(Infinity) should not be a domain error. * libm/frexp.c: handle denormalized numbers as arguments. * libm/math/Makefile.in: added some dependencies for .c files which include local .h files. Mon Aug 24 12:57:58 1992 Ian Lance Taylor (ian@cygnus.com) * libc/configure.in: set target_alias for OSE*. Replace target_makefile_frag if it is blank. * libc/Makefile.in: make sure everything is passed to subsidiary makes; create all directories when installing. * libm/ieeefp/Makefile.in, libm/math/Makefile.in: use CROSS_ARUPDATE instead of AR. * libm/configure.in: set target_alias for OSE*. Replace target_makefile_frag if it is blank. * libm/Makefile.in: make sure everything is passed to subsidiary makes; create all directories when installing. Thu Aug 20 15:11:51 1992 Mark Eichin (eichin@cygnus.com) * add following change from libc copy. Wed Aug 19 18:54:49 1992 Roland H. Pesch (pesch@fowanton.cygnus.com) * libc/libc.texinfo: make copyright disclaimers appear on back of title page; make format of same slightly less ugly; avoid using underbars in section headings (avoids nasty texinfo bug in table of contents). * libc/ctype/tolower.c, libc/ctype/toupper.c: (doc changes in comments only) avoid using underbars in section headings * libc/ieeefp/ieeefp.tex: include doc from fpsticky, infinity, isnan ieeefp/fpmask.c, ieeefp/fpround.c, ieeefp/fpsticky.c (doc changes in comments only): shorten headings ieeefp/infinity.c, ieeefp/isnan.c: (doc, comments only) more informative headings * libc/math/bessel.c: (doc, comments only) shorten heading * libc/stdlib/efgcvt.c, libc/stdlib/mbtowc.c, libc/stdlib/wctomb.c (doc, comments only) shorten headings * libc/time/localtime.c (doc, comments only): shorten headings * libm/ieeefp/ieeefp.tex: include doc from fpsticky, infinity, isnan libm/ieeefp/fpmask.c, libm/ieeefp/fpround.c, libm/ieeefp/fpsticky.c (doc changes in comments only): shorten headings libm/ieeefp/infinity.c, libm/ieeefp/isnan.c: (doc, comments only) more informative headings * libm/math/bessel.c: (doc, comments only) shorten heading Wed Aug 19 07:06:37 1992 Mark Eichin (eichin at tweedledumber.cygnus.com) * .../Makefile.in: use CROSS_ARUPDATE consistently. * config/*.mt: define CROSS_AR as well as CROSS_ARUPDATE * config/*.mt: define CROSS_CPP based on CROSS_CC, not /lib/cpp. * .../Makefile.in: get rid of .c.o rule - if TOP is correctly defined, the one from the .mt file will be correct. * libc/include/machine, libc/include/sys: created, and populated with common files from machine/*/machine. ifdefs were used for most, typically by handling exceptions first and then filling in defaults. Files with D.J. Delorie copyright #included rather than copied. Most files in include/sys really were the same in the original. * libc/include/...: cleaned up use of _EXFUN. * libc/stdlib/mprec.c: mprec.h doesn't get installed, so include it with double quotes, not angles. Mon Aug 10 11:43:20 1992 Ian Lance Taylor (ian@dumbest.cygnus.com) * libc/Makefile.in: always create installation directories. Sun Aug 9 22:45:48 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com) * libc/configure.in: handle host properly (using canonical triples), better error message for the case of target not found Thu May 28 01:56:37 1992 Michael Tiemann (tiemann@rtl.cygnus.com) * libc/Makefile.in (insincdir): Ensure this directory exists before attempting installation. Fri May 1 18:16:42 1992 Steve Chamberlain (sac@thepub.cygnus.com) * libc/stdlib/assert.c: now calls abort like it should * libc/sys/a29khif: many many patches for 29khif work * libc/machine/i386: gnulib2 expanded there. Tue Apr 28 19:08:37 1992 Steve Chamberlain (sac@thepub.cygnus.com) Added accurate fp conversion routines to stdlib, moved dcvt from stdio to stdlib and called it ecvtbuf: * libc/stdlib/mprec.c, mprec.h: new files for multiprec arithmetic * libc/stdlib/Makefile.in, efgcvt.c, strtod.c: modified to use new routines * libc/libc.texinfo: Modifed to include the copyright info from the mprec files * libc/stdlib/efgcvt.c: now xref to ecvtbuf in stdlib. * libc/test/ : many vector which tested for the implementation defined returns of strange conversion requests have been updated to relflect the new implementation Mon Apr 27 13:41:33 1992 Roland H. Pesch (pesch@fowanton.cygnus.com) * libc/libc.texinfo: new chapter on variable arg lists (stdarg.h/varargs.h) * libc/libc.texinfo: new title * libc/time/gmtime.c, libc/time/localtime./c, libc/time/mktime.c: (doc only) shorter headings for better formatting. Fri Apr 24 11:26:48 1992 Roland H. Pesch (pesch@fowanton.cygnus.com) * libc/libc.texinfo: three more info menu entries * libc/locale/locale.tex: new chapter * libc/locale/locale.c: new doc for setlocale, localeconv * libc/locale/Makefile.in: use new locale doc * libc/signal/signal.tex: new chapter * libc/signal/raise.c, libc/signal/signal.c: new doc * libc/signal/Makefile.in: use new doc * libc/time/time.tex: new chapter * libc/time/asctime.c libc/time/clock.c libc/time/ctime.c libc/time/difftime.c libc/time/gmtime.c libc/time/localtime.c libc/time/mktime.c libc/time/strftime.c libc/time/time.c: new doc * libc/time/Makefile.in: use new doc Tue Apr 21 14:48:50 1992 Steve Chamberlain (sac@thepub.cygnus.com) * libm/math/log1p.c: split to use the new function way of float function definition. math/log1p.h deleted * libm/math/scalb.c: obsolete and deleted * libm/math/scalbn.c: created from part log1p.c * libm/math/Makefile.in: know about log1p and scalbn Tue Apr 21 12:32:21 1992 Roland H. Pesch (pesch@fowanton.cygnus.com) * libc/ctype/isupper.c: revise doc; libc/ctype/ctype.tex: use doc from isupper.c * libc/string/bzero.c: new doc Mon Apr 20 14:19:42 1992 Roland H. Pesch (pesch@fowanton.cygnus.com) * libc/stdlib/system.c, libc/stdlib/exit.c, libc/stdlib/abort.c: new doc * libc/stdlib/Makefile.in: extract new doc * libc/stdlib/stdlib.tex: use new doc * libc/string/strerror.c: expanded doc. * libc/stdio/Makefile.in: extract doc from more files * libc/stdio/fopen.c, libc/stdio/perror.c, libc/stdio/remove.c, libc/stdio/rename.c, libc/stdio/rewind.c, libc/stdio/setbuf.c, libc/stdio/setvbuf.c, libc/stdio/sprintf.c, libc/stdio/tmpfile.c, libc/stdio/tmpnam.c, libc/stdio/vfprintf.c, libc/stdio/vprintf.c, libc/stdio/vsprintf.c: new doc * libc/stdio/stdio.tex: use new doc Mon Apr 20 09:38:17 1992 Steve Chamberlain (sac@thepub.cygnus.com) * libc/config/ebmon29k: added CROSS_CPP rule and other fixes * libc/include/ieeefp.h: fixed ansi conflict with isnanf, isinff, finitef functions. * libc/sys/a29khif/sys/*.h: ansidecl.h was renamed to _ansi.h some time ago. * libc/stdio/stdio.h: added P_tmpdir for /tmp (SVID thing) * libc/stdio/setbuf.c: added ansi style definition. * libc/stdio/setvbuf.c: added ansi definition, now mallocs own buffer if none provided. * libc/stdio/tmpfile.c: lint * libc/stdio/tmpnam.c (worker): created. (tmpnam): mallocs buffer rather than using static, also make sure file isn't already present. Uses P_tmpdir. (tempnam): rewritten to use new subroutine, and uses P_tmpdir. * libc/stdio/siprintf.c: created Mon Apr 13 09:12:58 1992 Steve Chamberlain (sac@thepub.cygnus.com) Release 1.03 for NEC, major mods. Main differences from release 1.02:: More tests in test/: * jn_vec.c, jnf_vec.c, yn_vec.c, ynf_vec.c, log2_vec.c, log2f_vec.c, atan2_vec.c, atan2f_vec.c: new test vectors. * test_ieee.c: tests for ieee flags & masks - get/set rounding, get/set mask, get/set sticky and get/set roundtoi. Tests that setting the bits changes the way arithmetic is done. * string.c: added test to make sure memcmp does it with unsigned chars. * test.c: cleaned up and removed lint. * sprint_vec, sprint_ivec.c, convert.c, conv_vec.c, iconf_vec.c, dvec.c: tests for string to value conversions, sprintf, scanf, atof, atoff, strtod, strtodf, atoi, atol, strtol, ecvtbuf, ecvt, ecvtf, fcvtbuf, fcvt, fcvtf, gcvt, gcvtf. Some attention paid to rounding in sprintf too. * test_is.c: tests for isalnum, isalpha, isascii, iscntrl, isdigit, isgraph, islower, isprint, ispunct, isspace, isupper, isxdigit, toascii, tolower, toupper, _tolower, _toupper in macro and function form. * math2.c: test for frexp, frexpf, ldexp, ldexpf, modf modff, pow, powf In the library: * libc/stdlib/div.c, libc/stdlib/ldiv.c, libc/stdlib/strtod.c, libc/stdlib/strtol.c, libc/stdlib/stroul.c, libc/stdlib/abs.c, libc/stdlib/bsearch.c, libc/stdlib/calloc.c, libc/stdlib/getenv.c, libc/stdlib/labs.c, libc/stdlib/malloc.c: new documentation * libc/stdlib/efgcvt.c: rewritten to use new _dcvt routines rather than sprintf. * libc/stdio/dcvt.c: rewritten to make more useful elsewhere. * Method of producting float versions of double functions has changed, functions will be modified gradually. So far: libm/math/exp.c, libm/math/pow.c, libm/math/modf.c, libm/math/sincos.c, libm/math/fmod.c, libm/math/tan.c have been altered * libc/string/memcmp.c: now uses unsigned chars * libc/string/bcmp.c, libc/string/strcpy.c, libc/stsring/strxfrm.c: fixed doc * libc/sys/sysvnecv70.tex: fix example of sbrk code Local Variables: version-control: never End: picolibc-1.7.4/newlib/HOWTO000066400000000000000000000132241414576234500154270ustar00rootroot00000000000000This HOWTO file contains notes for maintainers and contributors to Newlib. For information on using Newlib (building, installing), see README. (In particular, the "Regenerating Configuration Files" section in README is of interest to both users and contributors.) (This file could probably use some other "sections" in addition to the initially-provided sections. Please help by adding as appropriate.) DOCUMENTATION ============= All the documentation for Newlib comes as part of the machine-readable distribution. Functions are documented in the source files, although not every file contains documentation, as many functions share manual page information. For example, lround(), lroundf(), llround(), and llroundf() share a single man page, which is in the source for lround(). The documentation is written partially in a custom format and partially in Texinfo format. The custom part comprises makedoc.c and doc.str, both of which are in the doc directory. doc.str is a macro file that can be used to define things to be done by makedoc, using building blocks that are built into makedoc.c. The basic function of makedoc is two-fold. First, it recognizes comments in the proper format to pull out of source files. Second, it adds some Texinfo commands as well as translating certain sequences into the appropriate Texinfo commands. Refer to makedoc.c and doc.str for what these are. (makedoc.c is not particularly-well commented.) Another way to see how they work is to simply examine the source files with documentation comments. (A couple of examples that use some of the fancier options: libm/common/s_isnan.c ("o+" variable-"bullet" list), libc/stdio/sprintf.c ("O+" bullet list; "." for example code).) In addition to the makedoc.c stuff, Texinfo commands can be directly used. Texinfo is a documentation system that uses a single source file to produce both on-line information and a printed manual. You can use one of the Info formatting commands to create the on-line version of the documentation and TeX (or `texi2roff') to typeset the printed version. While Newlib contains a copy of the texinfo package (texinfo.tex), the manual for it is not included. The latest one may be found at http://www.gnu.org/software/texinfo/manual/texinfo/texinfo.html (which could be for a newer version of texinfo.tex than is included in Newlib). In addition to Texinfo commands, straight TeX commands can also be used, but these, however, should be carefully limited and be given alternates for when a non-printed manual is produced--such as when info pages are produced. For an example of this kind of usage, see libm/common/s_logb.c. If writing a new function that requires documentation, the required sections are FUNCTION, INDEX, SYNOPSIS, DESCRIPTION, RETURNS, and PORTABILITY. BUGS, NOTES, SEEALSO and WARNINGS should be added as appropriate. Source files which contain documentation are processed into ".def" files with the extracted information. These .def files are noted in the makefiles as CHEWOUT_FILES. These .def files need to be included into an appropriate .tex file for inclusion in the manuals (one each for libc and libm). Pay special attention under libc, as the manual is arranged by header file name, but not all header files are represented by directories (e.g. wcsftime.c is found under libc/time, but goes under wchar.h in the manual.) In summary, to add new documentation: 1. Add properly-formatted comments to source file (e.g. src.c); 2. add "chewout" file to CHEWOUT_FILES list in Makefile.am (e.g. src.def), re-generate Makefile.in; 3. @include that .def file in the appropriate .tex file, add texinfo menu entries that reference the @node(s) in that .def file; 4. make ChangeLog entry and generate patch. EL/IX (ELIX_LEVEL_n, ELIX_n_SOURCES) ==================================== Some of the Makefiles contain definitions of ELIX_LEVEL_1 ... ELIX_LEVEL_4, and corresponding definitions for ELIX_1_SOURCES ... ELIX_4_SOURCES. These are referring to the EL/IX standards created by Red Hat for the purpose of Linux-based open standards for embedded development. In brief, the intent is to define multiple levels for API functions that allows the user to size the library appropriately for their application--at least in terms of the predefined lists. For full details, refer to the EL/IX home page at http://sourceware.org/elix/. The likely best way to tell how to classify any new functions in terms of needing an ELIX level qualification is to ask Jeff Johnston. To see how it works and try classification on your own, refer to the API specification on the web site, http://sourceware.org/elix/api/current/api.pdf. (Unfortunately, it is not complete with respect to either the C99 or POSIX standards, so particular C and POSIX functions may or may not be found.) The following definitions of the levels are from the (draft) standard. Level 1 RTOS compatible layer. Functions available in both Linux and a typical deeply embedded operating system (eCos, RTEMS, VxWorks, pSOS, VRTX32, etc.). Some functions may have reduced or modified semantics. Level 2 Linux single process only. Includes level 1 plus any functions from Linux that are not easily implemented on an RTOS. Also full implementations of reduced functions in Level 1. Level 3 Linux multiprocess for embedded applications. This is basically POSIX.1 with some of the functions that are obviously not for embedded applications (such as job control) removed. Level 4 Full POSIX or Linux compliance. Essentially these are functions that are present in a standard Linux kernel but are irrelevant to an embedded system. These functions do not form part of the EL/IX API. picolibc-1.7.4/newlib/MAINTAINERS000066400000000000000000000042001414576234500162730ustar00rootroot00000000000000 Newlib Maintainers Blanket Write Privileges The official maintainers of newlib: Corinna Vinschen corinna@vinschen.de Jeff Johnston jjohnstn@redhat.com Various Domain Maintainers This is a list of maintainers who look after specific domains of newlib. Individuals who maintain parts of newlib need approval to check in changes outside of the immediate domain that they maintain. If there is no maintainer for a given domain then the responsibility falls to the head maintainers. If there are several maintainers for a given domain then responsibility falls to the first maintainer. The first maintainer is free to devolve that responsibility among the other maintainers. Makefile.in, configure*: jjohnstn@redhat.com Cygwin: corinna@vinschen.de Web pages: jjohnstn@redhat.com CPU Port Maintainers (CPU alphabetical order) CPU port maintainers may make changes in cpu-specific directories, as well as cpu-specific portions of the build system, without approval. arm Nick Clifton nickc@redhat.com Richard Earnshaw richard.earnshaw@arm.com bfin Mike Frysinger vapier@gentoo.org mn10300 Nick Clifton nickc@redhat.com moxie Anthony Green green@moxielogic.com risc-v Kito Cheng kito.cheng@gmail.com aarch64 Richard Earnshaw richard.earnshaw@arm.com Marcus Shawcroft marcus.shawcroft@arm.com msp430 Nick Clifton nickc@redhat.com OS Port Maintainers (OS alphabetical order) OS port maintainers may make changes in OS-specific directories, as well as OS-specific portions of the build system, without approval. RTEMS Joel Sherrill joel.sherrill@oarcorp.com Sebastian Huber sebastian.huber@embedded-brains.de simulator Mike Frysinger vapier@gentoo.org Write After Approval These are users with general write privileges after getting approval: Anthony Green green@moxielogic.com DJ Delorie dj@redhat.com Jim Wilson jimw@sifive.com Nick Clifton nickc@redhat.com Eric Blake eblake@redhat.com Will Newton will.newton@linaro.org Sebastian Huber sebastian.huber@embedded-brains.de Joel Sherrill joel.sherrill@oarcorp.com Mike Frysinger vapier@gentoo.org picolibc-1.7.4/newlib/NEWS000066400000000000000000000260201414576234500153010ustar00rootroot00000000000000*** Major changes in newlib version 4.1.0: - fixes for regressions to pow/powf and tgamma functions - RISC-V semihosting support - RISC-V and arm patches *** Major changes in newlib version 4.0.0: - additional out-of-bounds checking for malloc/nano-malloc family - various fixes to makedocbook for python 3.8 - multiple standard/accuracy fixes to libm math routines - C-SKY port - support for Armv8-R aarch64 added - move of __tzrules_struct from time.h to internal header - math additions/improvements for RISC-V and arm - all arm code converted to use unified syntax for Thumb1 - fenv support added for multiple platforms - hard float support for PowerPC taken from FreeBSD - advertising clause removed from BSD licenses - various other fixes *** Major changes in newlib version 3.2.0: - memmem performance improvement - nanf() and HUGE_VALF now used in libm float routines to reduce size - new reduced "tiny" code size printf and puts support - errno setting enhanced in libm routines - new --enable-newlib-reent-check-verify configure option to verify reent memory - support added - and synced with FreeBSD - timeval macros moved to - newlib wide char conversion functions updated to Unicode 11.0 - new msp430-elfbare target support - AMD GCN port - PRU port - nbdm port - various standard improvements *** Major changes in newlib version 3.1.0: - global stdio streams support added for reent small - _CLOCKID_T made system configurable - generated Unicode 10.0 width data, case conversion data, character category data - Unicode table generation scripts fixed/enhanced - performance enhancements for qsort, strstr - nvptx port added - sinf/cosf/sincosf/exp/exp2/log/log2/pow rewritten for performance and accuracy - various gcc warnings fixed - various standard improvements *** Major changes in newlib version 3.0.0: - K&R support removed in code and docs - 64-bit time_t support - riscv platform support added - new expf, exp2f, logf, and powf implementations - unification of lock object names - locking routine retargetting at link time - new long double complex math routines - various ARM optimizations - various POSIX/BSD additions - further feature test macros overhaul *** Major changes in newlib version 2.5.0: - memory.h added - some header file reorganization - doc fixes - ctype rewrite - added per-locale string functions - additional feature test macro overhaul *** Major changes in newlib version 2.4.0: - feature test macro overhaul - new string functions (e.g. timingsafe_bcmp) - new stdlib functions (e.g. arc4random) - simplified versioning macros for newlib - Changelog files deprecated *** Major changes in newlib version 2.3.0: - dynamic atexit logic fixed - various arm performance enhancements - new version of strtold - doc improvements - arc platform support redone - strftime improvements/enhancements - imported logic from FreeBSD - locking fixes - complex math enhancements - visium platform support added - or1k platform support added *** Major changes in newlib version 2.2.0: - multiple functional/performance enhancements for arm/aarch64 - new nano formatted I/O support - replacement of or16/or32 with or1k platform - qsort_r support - additional long double math routines - ito/utoa/ltoa - restructuring of gmtime/localtime so tz functions only linked by localtime - unlocked I/O functions - various warning clean-ups *** Major changes in newlib version 2.1.0: - multibyte decimal point support added to scanf family - multiple changes for FreeBSD compatibility - multiple RTEMS changes for Linux compatibility - addition of restrict keyword - nano-malloc support added - global atexit support added - new nds32 platform support - new msp430 platform support - new nios2 platform support - lite exit support - updated arm support (aarch64) - newlib ported to x86_64-pc-cygwin *** Major changes in newlib version 2.0.0: - addition of aarch64 platform support - addition of epiphany platform support - addition of 'm' printf conversion specifier - memrchr function added - removal of many compiler warnings - removal of enable-newlib-fp-hw option and deprecation of mathfp directory - type of offset in file structure changed from int to off_t - new optimized arm math routines - various bug fixes *** Major changes in newlib version 1.20.0: * I/O lock clean-up * fixes to strftime/strptime * fixes to arm support * new NO_INCLUDE_LIST configuration support * rl78 platform support contributed * sparc-leon platform support contributed * cvs-to-git mirroring of newlib * various bug fixes *** Major changes in newlib version 1.19.0: * complex math functions * locale support extended to maintain wide char values of native strings * eXtensible Data Record (XDR) support for Cygwin * wide char functions updated to Unicode 5.2 * additional locale charsets * POSIX standard adherence improvements * tic6x platform support contributed * cr16 platform support contributed * various bug fixes *** Major changes in newlib version 1.18.0: * wide-char enhancements * long double math routines added for platforms where LDBL == DBL * long long math routines added * math cleanup * UTF-16 modifications for Cygwin * major locale charset overhaul including added charsets * added moxie platform * added rx platform * added xc16x platform * various cleanups * various bug fixes *** Major changes in newlib version 1.17.0: * new C99 wide-char function additions * lm32 platform support contributed * movement of regex functions from sys/linux directory into shared libc/posix directory * string function optimizations * redesign of formatted I/O to reduce dependencies when using sprintf/sscanf family of functions * numerous warning cleanups * documentation fixes to support pdf, info, ps formats and eclipse libhover hover docs * various bug fixes *** Major changes in newlib version 1.16.0: * mep-elf support contributed * x86_64 support added * reentrant I/O clean-up * various new C functions added from C99, POSIX, SUSV, etc.. * switch to use top-level libtool * spu floating-point environment and stdio enhancement * fastmath support * various bug fixes *** Major changes in newlib version 1.15.0: * new platforms added (bfin, spu, fido) * merge of csl branch changes (e.g. m68k) * additional C99 support (printf modifiers, strtod, isnan/isinf) * new configuration option to turn off dynamic allocation for atexit * reentrancy added for read / write functions * Cygwin fixes (e.g. POSIX read file flush behavior) * switch to autoconf 2.5.9 * use of aclocal/automake 1.9.6 * various bug fixes and doc cleanups *** Major changes in newlib version 1.14.0: * new platforms added (cris, mt, m32c) * more locking protection macros added * various C99/POSIX/SUSV3 compliance issue improvements * reentrancy cleanup * header file improvements (e.g. adding RTEMS stdint.h/inttypes.h) * various math fixes * changes made to allow use of gcc4 to build newlib * general bug fixes and cleanups *** Major changes in newlib version 1.13.0: * optimized iconv support * new configuration option to disable syscalls in newlib (e.g. sys/arm) * new configuration options controlling long long, long double support * ability of configuration options to override platform defaults * improved locking protection for file I/O functions * new reentrant functions * various fixes to allow building under FC3 and Debian Linux * cxa exit support * new platforms (e.g. crx) * new iprintf and iscanf family functions *** Major changes in newlib version 1.12.0: * general iconv support added * major cleanup with linux header files regarding warnings * thread-safety and reentrancy fixes * additional wide character C99 functions * addition of %lc, %ls, %S, and %C printf format specifiers * doc cleanup *** Major changes in newlib version 1.11.0: * enhanced EL/IX support for i[3456]86-pc-linux * new --enable-newlib-elix-level configuration option * positional arg I/O support for printf family (--enable-newlib-io-pos-args) * support for the Fujitsu FRV architecture added by Red Hat * support for Motorola Altivec and SPE added by Red Hat * new small reentrancy structure support * dynamic reentrancy structure support *** Major changes in newlib version 1.10.0: * libtool support for i[3456]86-pc-linux native builds * addition of libm/machine/i386 directory, for i386 fast math routines *** Major changes in newlib version 1.9.0: * i[3456]86-pc-linux support * Long Double I/O support via the WANT_IO_LONG_DBL flag * addition of reentrant environment functions * addition of xscale and AVR platforms * severe reduction in the number of warnings issued * consolidation of many RTEMS features into shared headers *** Major changes in newlib version 1.8.2: * RTEMS features and fixes from Joel Sherrill. * More work on reentrant routines. * Floating point math library check, --enable-newlib-hw-fp. *** Major changes in newlib version 1.8.1: * Added check for --enable-newlib-mb configure option which defines the MB_CAPABLE macro. Multibyte support for JIS, SJIS, and EUC-JP implemented. * Reduced code size for libm modules. * Replaced the BSD malloc with Doug Lea's malloc. *** Major changes in newlib version 1.8.0: * Added simulated signal handling functions _raise_r, _signal_r, raise, and signal except for sparc-sun-sunos*, i[3456]86-*-sco*, and a29k-*-* systems, which already provide access to signal. The signal functionality provided does not interact with hardware generated signals. * Added reentrant function rand_r from POSIX.1c. * Removed _asctime, _next, _scanpoint, and _signgam fields from struct _reent. These are no longer necessary since there are now functions that explictly support multiple threads (asctime_r, ctime_r, gamma_r, gmtime_r, lgamma_r, localtime_r, rand_r, & strtok_r). *** Major changes in newlib version 1.7.0: * Cross compiler target libraries are now built in a subdir of the top level build directory. Old way: build /newlib /m68020 /m68881 New way: build /m68k-coff /m68020 /m68881 where m68020 and m68881 are multilib subdirectories * m68k targets support --disable options to avoid building unwanted versions of the libraries. --disable-softfloat - don't build libc, libg++, etc. for -msoft-float --disable-m68881 - don't build libc, libg++, etc. for -m68881 --disable-m68000 - don't build libc, libg++, etc. for -m68000 --disable-m68020 - don't build libc, libg++, etc. for -m68020 These options have *no* effect on the default libraries, so if the default is -m68020, --disable-m68020 is nilpotent. * Reentrancy support in libm removed. * strtok, strtol, strtoul, assert, div, ldiv, qsort, vfprintf replaced with NetBSD versions. * Support for systems with 32 bit "doubles" added. * unctrl added. * dtoa.c updated from upstream dtoa.c soruces (netlib.att.com) * Various bug fixes. *** Major changes in newlib version 1.6.1: * Added reentrant functions (asctime_r, ctime_r, gmtime_r, localtime_r, and strtok_r) from POSIX.1c. * Removed _asctime_r and _strtok_r functions. picolibc-1.7.4/newlib/README000066400000000000000000000561441414576234500154740ustar00rootroot00000000000000 README for newlib-4.1.0 release (mostly cribbed from the README in the gdb-4.13 release) This is `newlib', a simple ANSI C library, math library, and collection of board support packages. Prior to the 3.0.0 release, newlib supported both ANSI and K&R-style compilers. As of 3.0.0, K&R is no longer supported. The newlib and libgloss subdirectories are a collection of software from several sources, each with their own copyright and license. See the file COPYING.NEWLIB for details. The rest of the release tree is under either the GNU GPL or LGPL licenses. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Unpacking and Installation -- quick overview ========================== When you unpack the newlib-4.1.0.tar.gz file, you'll find a directory called `newlib-4.1.0', which contains: COPYING config/ install-sh* mpw-configure COPYING.LIB config-ml.in libgloss/ mpw-install COPYING.NEWLIB config.guess* mkinstalldirs* newlib/ CYGNUS config.sub* move-if-change* symlink-tree* ChangeLog configure* mpw-README texinfo/ Makefile.in configure.in mpw-build.in README etc/ mpw-config.in To build NEWLIB, you must follow the instructions in the section entitled "Compiling NEWLIB". This will configure and build all the libraries and crt0 (if one exists). If `configure' can't determine your host system type, specify one as its argument, e.g., sun4 or sun4sol2. NEWLIB is most often used in cross environments. NOTE THAT YOU MUST HAVE ALREADY BUILT AND INSTALLED GCC and BINUTILS. More Documentation ================== Newlib documentation is available on the net via: http://sourceware.org/newlib/docs.html All the documentation for NEWLIB comes as part of the machine-readable distribution. The documentation is written in Texinfo format, which is a documentation system that uses a single source file to produce both on-line information and a printed manual. You can use one of the Info formatting commands to create the on-line version of the documentation and TeX (or `texi2roff') to typeset the printed version. If you want to format these Info files yourself, you need one of the Info formatting programs, such as `texinfo-format-buffer' or `makeinfo'. If you want to typeset and print copies of this manual, you need TeX, a program to print its DVI output files, and `texinfo.tex', the Texinfo definitions file. TeX is a typesetting program; it does not print files directly, but produces output files called DVI files. To print a typeset document, you need a program to print DVI files. If your system has TeX installed, chances are it has such a program. The precise command to use depends on your system; `lpr -d' is common; another (for PostScript devices) is `dvips'. The DVI print command may require a file name without any extension or a `.dvi' extension. TeX also requires a macro definitions file called `texinfo.tex'. This file tells TeX how to typeset a document written in Texinfo format. On its own, TeX cannot read, much less typeset a Texinfo file. `texinfo.tex' is distributed with NEWLIB and is located in the `newlib-VERSION-NUMBER/texinfo' directory. Compiling NEWLIB ================ To compile NEWLIB, you must build it in a directory separate from the source directory. If you want to run NEWLIB versions for several host or target machines, you need a different `newlib' compiled for each combination of host and target. `configure' is designed to make this easy by allowing you to generate each configuration in a separate subdirectory. If your `make' program handles the `VPATH' feature correctly (like GNU `make') running `make' in each of these directories builds the `newlib' libraries specified there. To build `newlib' in a specific directory, run `configure' with the `--srcdir' option to specify where to find the source. (You also need to specify a path to find `configure' itself from your working directory. If the path to `configure' would be the same as the argument to `--srcdir', you can leave out the `--srcdir' option; it will be assumed.) For example, with version 4.1.0, you can build NEWLIB in a separate directory for a Sun 4 cross m68k-aout environment like this: cd newlib-4.1.0 mkdir ../newlib-m68k-aout cd ../newlib-m68k-aout ../newlib-4.1.0/configure --host=sun4 --target=m68k-aout make When `configure' builds a configuration using a remote source directory, it creates a tree for the binaries with the same structure (and using the same names) as the tree under the source directory. In the example, you'd find the Sun 4 library `libiberty.a' in the directory `newlib-m68k-aout/libiberty', and NEWLIB itself in `newlib-m68k-aout/newlib'. When you run `make' to build a program or library, you must run it in a configured directory--whatever directory you were in when you called `configure' (or one of its subdirectories). The `Makefile' that `configure' generates in each source directory also runs recursively. If you type `make' in a source directory such as `newlib-4.1.0' (or in a separate configured directory configured with `--srcdir=PATH/newlib-4.1.0'), you will build all the required libraries. When you have multiple hosts or targets configured in separate directories, you can run `make' on them in parallel (for example, if they are NFS-mounted on each of the hosts); they will not interfere with each other. Specifying names for hosts and targets ====================================== The specifications used for hosts and targets in the `configure' script are based on a three-part naming scheme, but some short predefined aliases are also supported. The full naming scheme encodes three pieces of information in the following pattern: ARCHITECTURE-VENDOR-OS For example, you can use the alias `sun4' as a HOST argument or in a `--target=TARGET' option. The equivalent full name is `sparc-sun-sunos4'. The `configure' script accompanying NEWLIB does not provide any query facility to list all supported host and target names or aliases. `configure' calls the Bourne shell script `config.sub' to map abbreviations to full names; you can read the script, if you wish, or you can use it to test your guesses on abbreviations--for example: % sh config.sub sun4 sparc-sun-sunos4.1.1 % sh config.sub sun3 m68k-sun-sunos4.1.1 % sh config.sub decstation mips-dec-ultrix4.2 % sh config.sub hp300bsd m68k-hp-bsd % sh config.sub i386v i386-pc-sysv % sh config.sub i786v Invalid configuration `i786v': machine `i786v' not recognized The Build, Host and Target Concepts in newlib ============================================= The build, host and target concepts are defined for gcc as follows: build: the platform on which gcc is built. host: the platform on which gcc is run. target: the platform for which gcc generates code. Since newlib is a library, the target concept does not apply to it, and the build, host, and target options given to the top-level configure script must be changed for newlib's use. The build system shifts the options according to these correspondences: gcc's build platform has no equivalent in newlib. gcc's host platform is newlib's build platform. gcc's target platform is newlib's host platform. and as mentioned before, newlib has no concept of target. In summary: the --target=TARGET switch to the top-level configure script configures newlib's host platform. `configure' options =================== Here is a summary of the `configure' options and arguments that are most often useful for building NEWLIB. `configure' also has several other options not listed here. configure [--help] [--prefix=DIR] [--srcdir=PATH] [--target=TARGET] HOST You may introduce options with a single `-' rather than `--' if you prefer; but you may abbreviate option names if you use `--'. `--help' Display a quick summary of how to invoke `configure'. `--prefix=DIR' Configure the source to install programs and files in directory `DIR'. `--exec-prefix=DIR' Configure the source to install host-dependent files in directory `DIR'. `--srcdir=PATH' *Warning: using this option requires GNU `make', or another `make' that compatibly implements the `VPATH' feature. Use this option to make configurations in directories separate from the NEWLIB source directories. Among other things, you can use this to build (or maintain) several configurations simultaneously, in separate directories. `configure' writes configuration specific files in the current directory, but arranges for them to use the source in the directory PATH. `configure' will create directories under the working directory in parallel to the source directories below PATH. `--norecursion' Configure only the directory level where `configure' is executed; do not propagate configuration to subdirectories. `--target=TARGET' Configure NEWLIB for running on the specified TARGET. There is no convenient way to generate a list of all available targets. `HOST ...' Configure NEWLIB to be built using a cross compiler running on the specified HOST. There is no convenient way to generate a list of all available hosts. To fit diverse usage models, NEWLIB supports a group of configuration options so that library features can be turned on/off according to target system's requirements. One feature can be enabled by specifying `--enable-FEATURE=yes' or `--enable-FEATURE'. Or it can be disable by `--enable-FEATURE=no' or `--disable-FEATURE'. `--enable-newlib-io-pos-args' Enable printf-family positional arg support. Disabled by default, but some hosts enable it in configure.host. `--enable-newlib-io-c99-formats' Enable C99 support in IO functions like printf/scanf. Disabled by default, but some hosts enable it in configure.host. `--enable-newlib-register-fini' Enable finalization function registration using atexit. Disabled by default. `--enable-newlib-io-long-long' Enable long long type support in IO functions like printf/scanf. Disabled by default, but many hosts enable it in configure.host. `--enable-newlib-io-long-double' Enable long double type support in IO functions printf/scanf. Disabled by default, but some hosts enable it in configure.host. `--enable-newlib-mb' Enable multibyte support. Disabled by default. `--enable-newlib-iconv-encodings' Enable specific comma-separated list of bidirectional iconv encodings to be built-in. Disabled by default. `--enable-newlib-iconv-from-encodings' Enable specific comma-separated list of \"from\" iconv encodings to be built-in. Disabled by default. `--enable-newlib-iconv-to-encodings' Enable specific comma-separated list of \"to\" iconv encodings to be built-in. Disabled by default. `--enable-newlib-iconv-external-ccs' Enable capabilities to load external CCS files for iconv. Disabled by default. `--disable-newlib-atexit-dynamic-alloc' Disable dynamic allocation of atexit entries. Most hosts and targets have it enabled in configure.host. `--enable-newlib-global-atexit' Enable atexit data structure as global variable. By doing so it is move out of _reent structure, and can be garbage collected if atexit is not referenced. Disabled by default. `--enable-newlib-global-stdio-streams' Enable to move the stdio stream FILE objects out of struct _reent and make them global. The stdio stream pointers of struct _reent are initialized to point to the global stdio FILE stream objects. Disabled by default. `--enable-newlib-reent-small' Enable small reentrant struct support. Disabled by default. `--disable-newlib-fvwrite-in-streamio' NEWLIB implements the vector buffer mechanism to support stream IO buffering required by C standard. This feature is possibly unnecessary for embedded systems which won't change file buffering with functions like `setbuf' or `setvbuf'. The buffering mechanism still acts as default for STDIN/STDOUT/STDERR even if this option is specified. Enabled by default. `--disable-newlib-fseek-optimization' Disable fseek optimization. It can decrease code size of application calling `fseek`. Enabled by default. `--disable-newlib-wide-orient' C99 states that each stream has an orientation, wide or byte. This feature is possibly unnecessary for embedded systems which only do byte input/output operations on stream. It can decrease code size by disable the feature. Enabled by default. `--enable-newlib-nano-malloc' NEWLIB has two implementations of malloc family's functions, one in `mallocr.c' and the other one in `nano-mallocr.c'. This options enables the nano-malloc implementation, which is for small systems with very limited memory. Note that this implementation does not support `--enable-malloc-debugging' any more. Disabled by default. `--disable-newlib-unbuf-stream-opt' NEWLIB does optimization when `fprintf to write only unbuffered unix file'. It creates a temorary buffer to do the optimization that increases stack consumption by about `BUFSIZ' bytes. This option disables the optimization and saves size of text and stack. Enabled by default. `--enable-newlib-long-time_t' Define time_t to long. On platforms with a 32-bit long type, this gives raise to the year 2038 problem. The default type for time_t is a signed 64-bit integer on most systems. Disabled by default. `--enable-multilib' Build many library versions. Enabled by default. `--enable-target-optspace' Optimize for space. Disabled by default. `--enable-malloc-debugging' Indicate malloc debugging requested. Disabled by default. `--enable-newlib-multithread' Enable support for multiple threads. Enabled by default. `--enable-newlib-iconv' Enable iconv library support. Disabled by default. `--enable-newlib-elix-level' Supply desired elix library level (1-4). Please refer to HOWTO for more information about this option. Set to level 0 by default. `--disable-newlib-io-float' Disable printf/scanf family float support. Enabled by default. `--disable-newlib-supplied-syscalls' Disable newlib from supplying syscalls. Enabled by default. `--enable-lite-exit' Enable lite exit, a size-reduced implementation of exit that doesn't invoke clean-up functions such as _fini or global destructors. Disabled by default. `--enable-newlib-nano-formatted-io' This builds NEWLIB with a special implementation of formatted I/O functions, designed to lower the size of application on small systems with size constraint issues. This option does not affect wide-char formatted I/O functions. Some notes about the feature: 1) The non-wide-char formatted I/O functions only support the C89 standard. The only exception is the configuration option provides limited support for long double. Internally, the nano formatted I/O functions use double so accuracy is only guaranteed to double precision. 2) Floating-point support is split out of the formatted I/O code into weak functions which are not linked by default. Programs that need floating-point I/O support must explicitly request linking of one or both of the floating-point functions: _printf_float or _scanf_float. This can be done at link time using the -u option which can be passed to either gcc or ld. The -u option forces the link to resolve those function references. Floating-point format specifiers are recognized by default, but if the floating-point functions are not explicitly linked in, this may result in undefined behavior for programs that need floating-point I/O support. 3) Integer-only versions of the formatted I/O functions (the iprintf/ iscanf family) simply alias their regular counter-parts. The affected functions are: diprintf vdiprintf siprintf fiprintf iprintf sniprintf asiprintf asniprintf siscanf fiscanf iscanf viprintf vfiprintf vsiprintf vsniprintf vasiprintf vasniprintf viscanf vfiscanf vsiscanf _diprintf_r _vdiprintf_r _siprintf_r _fiprintf_r _iprintf_r _sniprintf_r _asiprintf_r _asniprintf_r _siscanf_r _fiscanf_r _iscanf_r _viprintf_r _vfiprintf_r _vsiprintf_r _asniprintf_r _vasiprintf_r _vasniprintf_r _viscanf_r _vfiscanf_r _vsiscanf_r 4) As mentioned, the option does not affect wide-char formatted I/O. The following configuration options are ignored for non-wide-char formatted I/O functions, and can be thought of as disabled. enable-newlib-io-pos-args enable-newlib-io-c99-formats enable-newlib-io-long-long enable-newlib-io-long-double enable-newlib-mb Additionally, "enable/disable-newlib-io-float" is supported in this specific implementation, one can use "disable-newlib-io-float" to further reduce code size. In this case, the floating-point specifiers will not be recognized or handled, and the -u option will not work either. 5) As a rule, no features from outside of C89 standard will be considered in this implementation. Disabled by default. Running the Testsuite ===================== To run newlib's testsuite, you'll need a site.exp in your home directory which points dejagnu to the proper baseboards directory and the proper exp file for your target. Before running make check-target-newlib, set the DEJAGNU environment variable to point to ~/site.exp. Here is a sample site.exp: # Make sure we look in the right place for the board description files. if ![info exists boards_dir] { set boards_dir {} } lappend boards_dir "your dejagnu/baseboards here" verbose "Global Config File: target_triplet is $target_triplet" 2 global target_list case "$target_triplet" in { { "mips-*elf*" } { set target_list "mips-sim" } default { set target_list { "unix" } } } mips-sim refers to an exp file in the baseboards directory. You'll need to add the other targets you're testing to the case statement. Now type make check-target-newlib in the top-level build directory to run the testsuite. Shared newlib ============= newlib uses libtool when it is being compiled natively (with --target=i[34567]86-pc-linux-gnu) on an i[34567]86-pc-linux-gnu host. This allows newlib to be compiled as a shared library. To configure newlib, do the following from your build directory: $(source_dir)/src/configure --with-newlib --prefix=$(install_dir) configure will recognize that host == target == i[34567]86-pc-linux-gnu, so it will tell newlib to compile itself using libtool. By default, libtool will build shared and static versions of newlib. To compile a program against shared newlib, do the following (where target_install_dir = $(install_dir)/i[34567]86-pc-linux-gnu): gcc -nostdlib $(target_install_dir)/lib/crt0.o progname.c -I $(target_install_dir)/include -L $(target_install_dir)/lib -lc -lm -lgcc To run the program, make sure that $(target_install_dir)/lib is listed in the LD_LIBRARY_PATH environment variable. To create a static binary linked against newlib, do the following: gcc -nostdlib -static $(target_install_dir)/lib/crt0.o progname.c -I $(target_install_dir)/include -L $(target_install_dir)/lib -lc -lm libtool can be instructed to produce only static libraries. To build newlib as a static library only, do the following from your build directory: $(source_dir)/src/configure --with-newlib --prefix=$(install_dir) --disable-shared Regenerating Configuration Files ================================ At times you will need to make changes to configure.in and Makefile.am files. This will mean that configure and Makefile.in files will need to be regenerated. At the top level of newlib is the file: acinclude.m4. This file contains the definition of the NEWLIB_CONFIGURE macro which is used by all configure.in files in newlib. You will notice that each directory in newlib containing a configure.in file also contains an aclocal.m4 file. This file is generated by issuing: aclocal -I${relative_path_to_toplevel_newlib_dir} -I${relative_path_to_toplevel_src_dir} The first relative directory is to access acinclude.m4. The second relative directory is to access libtool information in the top-level src directory. For example, to regenerate aclocal.m4 in newlib/libc/machine/arm: aclocal -I ../../.. -I ../../../.. Note that if the top level acinclude.m4 is altered, every aclocal.m4 file in newlib should be regenerated. If the aclocal.m4 file is regenerated due to a change in acinclude.m4 or if a configure.in file is modified, the corresponding configure file in the directory must be regenerated using autoconf. No parameters are necessary. In the previous example, we would issue: autoconf from the newlib/libc/machine/arm directory. If you have regenerated a configure file or if you have modified a Makefile.am file, you will need to regenerate the appropriate Makefile.in file(s). For newlib, automake is a bit trickier. First of all, all Makefile.in files in newlib (and libgloss) are generated using the --cygnus option of automake. Makefile.in files are generated from the nearest directory up the chain which contains a configure.in file. In most cases, this is the same directory containing configure.in, but there are exceptions. For example, the newlib/libc directory has a number of subdirectories that do not contain their own configure.in files (e.g. stdio). For these directories, you must issue the automake command from newlib/libc which is the nearest parent directory that contains a configure.in. When you issue the automake command, you specify the subdirectory for the Makefile.in you are regenerating. For example: automake --cygnus stdio/Makefile stdlib/Makefile Note how multiple Makefile.in files can be created in the same step. You would not specify machine/Makefile or sys/Makefile in the previous example because both of these subdirectories contain their own configure.in files. One would change to each of these subdirectories and in turn issue: automake --cygnus Makefile Let's say you create a new machine directory XXXX off of newlib/libc/machine. After creating a new configure.in and Makefile.am file, you would issue: aclocal -I ../../.. autoconf automake --cygnus Makefile from newlib/libc/machine/XXXX It is strongly advised that you use an adequate version of autotools. For this latest release, the following were used: autoconf 2.69, aclocal 1.13.4, and automake 1.13.4. Reporting Bugs ============== The correct address for reporting bugs found in NEWLIB is "newlib@sourceware.org". Please email all bug reports to that address. Please include the NEWLIB version number (e.g., newlib-4.1.0), and how you configured it (e.g., "sun4 host and m68k-aout target"). Since NEWLIB supports many different configurations, it is important that you be precise about this. Archives of the newlib mailing list are on-line, see http://sourceware.org/ml/newlib/ picolibc-1.7.4/newlib/_newlib_version.hin000066400000000000000000000003631414576234500204700ustar00rootroot00000000000000/* Version macros for internal and downstream use. */ #ifndef _NEWLIB_VERSION_H__ #define _NEWLIB_VERSION_H__ 1 #undef _NEWLIB_VERSION #undef __NEWLIB__ #undef __NEWLIB_MINOR__ #undef __NEWLIB_PATCHLEVEL__ #endif /* !_NEWLIB_VERSION_H__ */ picolibc-1.7.4/newlib/doc/000077500000000000000000000000001414576234500153475ustar00rootroot00000000000000picolibc-1.7.4/newlib/doc/.gitignore000066400000000000000000000000471414576234500173400ustar00rootroot00000000000000# PLY artefacts parser.out parsetab.py picolibc-1.7.4/newlib/doc/chapter-texi2docbook.py000077500000000000000000000030441414576234500217450ustar00rootroot00000000000000#!/usr/bin/env python3 # Copyright (c) 2016 Jon Turney # # python script to convert the handwritten chapter .texi files, which include # the generated files for each function, to DocBook XML # # all we care about is the content of the refentries, so all this needs to do is # convert the @include of the makedoc generated .def files to xi:include of the # makedocbook generated .xml files. # from __future__ import print_function import sys import re def main(): first_node = True print ('') print ('') for l in sys.stdin.readlines(): l = l.rstrip() # transform @file{foo} to foo l = re.sub("@file{(.*?)}", "\\1", l) if l.startswith("@node"): l = l.replace("@node", "", 1) l = l.strip() l = l.lower() if first_node: print ('' % l.replace(' ', '_')) first_node = False elif l.startswith("@chapter "): l = l.replace("@chapter ", "", 1) print ('%s' % l) elif l.startswith("@include "): l = l.replace("@include ", "", 1) l = l.replace(".def", ".xml", 1) print ('' % l.strip()) print ('') if __name__ == "__main__" : main() picolibc-1.7.4/newlib/doc/doc.str000066400000000000000000000042251414576234500166510ustar00rootroot00000000000000: nokill_bogus_lines ; : ENDDD skip_past_newline ; : TABLE skip_past_newline "@table @code\n" catstr ; : ENDTABLE skip_past_newline "@end table\n" catstr ; : QUICKREF skip_past_newline ; : MATHREF skip_past_newline ; : EXAMPLE skip_past_newline get_stuff_in_command nokill_bogus_lines translatecomments courierize catstr ; : INODE "@node " catstr skip_past_newline copy_past_newline catstr ; : CODE_FRAGMENT EXAMPLE ; : SYNOPSIS skip_past_newline "@strong{Synopsis}\n" catstr "@example\n" catstr get_stuff_in_command do_fancy_stuff nokill_bogus_lines indent catstr "@end example\n" catstr ; : ANSI_SYNOPSIS skip_past_newline "@strong{Synopsis}\n" catstr "@example\n" catstr get_stuff_in_command do_fancy_stuff nokill_bogus_lines indent catstr "@end example\n" catstr "ANSI_SYNOPSIS is deprecated, use SYNOPSIS instead" warn ; : TRAD_SYNOPSIS skip_past_newline "TRAD_SYNOPSIS is obsolete and ignored" warn ; : INDEX "@findex " skip_past_newline copy_past_newline catstr catstr ; : FUNCTION "@node " - a skip_past_newline copy_past_newline dup - a x x get_stuff_in_angle -a x y swap do_fancy_stuff "@section " - a x x b swap remchar "\n" - a x b x c catstr catstr catstr catstr catstr ; : bodytext get_stuff_in_command bulletize courierize do_fancy_stuff catstr "@sp 1\n" catstr ; : asection skip_past_newline catstr copy_past_newline do_fancy_stuff catstr bodytext ; : SECTION "@section " asection ; : SUBSECTION "@section " asection ; : SUBSUBSECTION "@subsection " asection ; : subhead skip_past_newline bodytext ; : DESCRIPTION "@strong{Description}@*\n" catstr subhead ; : RETURNS "@strong{Returns}@*\n" catstr subhead ; : ERRORS "@strong{Errors}@*\n" catstr subhead ; : PORTABILITY "@strong{Portability}@*\n" catstr subhead ; : BUGS "@strong{Bugs}@*\n" catstr subhead ; : WARNINGS "@strong{Warnings}@*\n" catstr subhead ; : SEEALSO "@strong{See Also}@*\n" catstr subhead ; : NOTES "@strong{Notes}@*\n" catstr subhead ; : INTERNAL_FUNCTION ; : INTERNAL_DEFINITION ; : INTERNAL ; : TYPEDEF FUNCTION ; : NEWPAGE "@page\n" catstr subhead ; picolibc-1.7.4/newlib/doc/makedocbook.py000077500000000000000000000606001414576234500202040ustar00rootroot00000000000000#!/usr/bin/env python3 # Copyright (c) 2016 Jon Turney # # python script to process makedoc instructions in a source file and produce # DocBook XML output # # # This performs 3 stages of processing on it's input, in a similar fashion # to makedoc: # # 1. Discard everything outside of /* */ comments # 2. Identify lines which contains commands (a single uppercase word) # 3. Apply each command to the text of the following lines (up to the next # command or the end of the comment block), to produce some output # # The resulting output contains one or more DocBook XML refentry elements. # # To make the output a valid XML document which can be xincluded, those refentry # elements are contained by a refcontainer element. refcontainer is not part of # the DocBook DTD and should be removed by a suitable XSLT. # from __future__ import print_function import sys import re from optparse import OptionParser import lxml.etree import ply.lex as lex import ply.yacc as yacc rootelement = None # root element of the XML tree refentry = None # the current refentry verbose = 0 def dump(s, stage, threshold = 1): if verbose > threshold: print('*' * 40, file=sys.stderr) print(stage, file=sys.stderr) print('*' * 40, file=sys.stderr) print('%s' % s, file=sys.stderr) print('*' * 40, file=sys.stderr) # # Stage 1 # def skip_whitespace_and_stars(i, src): while i < len(src) and (src[i].isspace() or (src[i] == '*' and src[i+1] != '/')): i += 1 return i # Discard everything not inside '/* */' style-comments which start at column 0 # Discard any leading blank space or '*' # Discard a single leading '.' # Discard blank lines after a blank line def comment_contents_generator(src): i = 0 while i < len(src) - 2: if src[i] == '\n' and src[i+1] == '/' and src[i+2] == '*': i = i + 3 i = skip_whitespace_and_stars(i, src) if src[i] == '.': i += 1 while i < len(src): if src[i] == '\n': yield '\n' i += 1 # allow a single blank line if i < len(src) and src[i] == '\n': yield '\n' i += 1 i = skip_whitespace_and_stars(i, src) elif src[i] == '*' and src[i+1] == '/': i = i + 2 # If we have just output \n\n, this adds another blank line. # This is the only way a double blank line can occur. yield '\nEND\n' break else: yield src[i] i += 1 else: i += 1 def remove_noncomments(src): src = '\n' + src dst = ''.join(comment_contents_generator(src)) dump(dst, 'extracted from comments') return dst # # Stage 2 # # A command is a single word of at least 3 characters, all uppercase, and alone on a line def iscommand(l): if re.match('^[A-Z_]{3,}\s*$', l): return True return False def command_block_generator(content): command = 'START' text = '' for l in content.splitlines(): if iscommand(l): yield (command, text) command = l.rstrip() text = '' else: text = text + l + '\n' yield (command, text) # Look for commands, which give instructions how to process the following input def process(content): content = content.lstrip() dump(content, 'about to process for commands') # process into a list of tuples of commands and the associated following text # it is important to maintain the order of the sections the commands generate processed = list(command_block_generator(content)) return processed # # Stage 3 # # invoke each command on it's text def perform(processed): for i in processed: c = i[0].rstrip() t = i[1].strip() + '\n' if verbose: print("performing command '%s'" % c, file=sys.stderr) if c in command_dispatch_dict: command_dispatch_dict[c](c, t) else: print("command '%s' is not recognized" % c, file=sys.stderr) # the text following an unrecognized command is discarded # FUNCTION (aka TYPEDEF) # def function(c, l): global refentry global rootelement l = l.strip() if verbose: print('FUNCTION %s' % l, file=sys.stderr) separator = '---' if ';' in l: # fpclassify has an unusual format we also need to handle spliton = ';' l = l.splitlines()[0] elif len(l.splitlines()) > 1: # a few pages like mktemp have two '---' lines spliton = ';' o = '' for i in l.splitlines(): if separator in i: o += i + ';' else: o += i l = o[:-1] else: spliton = '\n' namelist = [] descrlist = [] for a in l.split(spliton): (n, d) = a.split(separator, 1) namelist = namelist + n.split(',') descrlist = descrlist + [d] # only copysign and log1p use <[ ]> markup in descr, # only gets() uses << >> markup # but we should handle it correctly descr = line_markup_convert(', '.join(descrlist)) # fpclassify includes an 'and' we need to discard namelist = map(lambda v: re.sub('^and ', '', v.strip(), 1), namelist) # strip off << >> surrounding name namelist = map(lambda v: v.strip().lstrip('<').rstrip('>'), namelist) # instantiate list to make it subscriptable namelist = list(namelist) if verbose: print(namelist, file=sys.stderr) # additional alternate names may also appear in INDEX commands # create the root element if needed if rootelement is None: rootelement = lxml.etree.Element('refentrycontainer') # FUNCTION implies starting a new refentry if refentry is not None: print("multiple FUNCTIONs without NEWPAGE", file=sys.stderr) exit(1) # create the refentry refentry = lxml.etree.SubElement(rootelement, 'refentry') refentry.append(lxml.etree.Comment(' Generated by makedocbook.py ')) refentry.set('id', namelist[0].lstrip('_')) refmeta = lxml.etree.SubElement(refentry, 'refmeta') # refentrytitle will be same as refdescriptor, the primary name refentrytitle = lxml.etree.SubElement(refmeta, 'refentrytitle') refentrytitle.text = namelist[0] manvolnum = lxml.etree.SubElement(refmeta, 'manvolnum') manvolnum.text = '3' refnamediv = lxml.etree.SubElement(refentry, 'refnamediv') # refdescriptor is the primary name, assume we should use the one which # appears first in the list refdescriptor = lxml.etree.SubElement(refnamediv, 'refdescriptor') refdescriptor.text = namelist[0] # refname elements exist for all alternate names for n in namelist: refname = lxml.etree.SubElement(refnamediv, 'refname') refname.text = n refpurpose = lxml.etree.SubElement(refnamediv, 'refpurpose') refnamediv.replace(refpurpose, lxml.etree.fromstring('' + descr + '')) # Only FUNCTION currently exists, which implies that the SYNOPSIS should be # a funcsynopsis. If TYPEDEF was to be added, SYNOPSIS should be processed # in a different way, probably producing a refsynopsis. # INDEX # may occur more than once for each FUNCTION giving alternate names this # function should be indexed under # def index(c, l): l = l.strip() if verbose: print('INDEX %s' % l, file=sys.stderr) # discard anything after the first word l = l.split()[0] # add indexterm # (we could just index under all the refnames, but we control the indexing # separately as that is what makedoc does) indexterm = lxml.etree.SubElement(refentry, 'indexterm') primary = lxml.etree.SubElement(indexterm, 'primary') primary.text = l # to validate, it seems we need to maintain refentry elements in a certain order refentry[:] = sorted(refentry, key = lambda x: x.tag if isinstance(x.tag, str) else '') # adds another alternate refname refnamediv = refentry.find('refnamediv') # as long as it doesn't already exist if not refnamediv.xpath(('refname[.="%s"]') % l): refname = lxml.etree.SubElement(refnamediv, 'refname') refname.text = l if verbose > 1: print('added refname %s' % l, file=sys.stderr) else: if verbose > 1: print('duplicate refname %s discarded' % l, file=sys.stderr) # to validate, it seems we need to maintain refnamediv elements in a certain order refnamediv[:] = sorted(refnamediv, key = lambda x: x.tag) # SYNOPSIS aka ANSI_SYNOPSIS # ANSI-style synopsis # # Note that makedoc would also process <> markup here, but there are no # such uses. # def synopsis(c, t): refsynopsisdiv = lxml.etree.SubElement(refentry, 'refsynopsisdiv') funcsynopsis = lxml.etree.SubElement(refsynopsisdiv, 'funcsynopsis') s = '' for l in t.splitlines(): if re.match('\s*(#|\[|struct)', l): # preprocessor # directives, structs, comments in square brackets funcsynopsisinfo = lxml.etree.SubElement(funcsynopsis, 'funcsynopsisinfo') funcsynopsisinfo.text = l.strip() + '\n' elif re.match('[Ll]ink with', l): pass else: s = s + l # a prototype without a terminating ';' is an error if s.endswith(')'): print("'%s' missing terminating semicolon" % l, file=sys.stderr) s = s + ';' exit(1) if ';' in s: synopsis_for_prototype(funcsynopsis, s) s = '' if s.strip(): print("surplus synopsis '%s'" % s, file=sys.stderr) exit(1) def synopsis_for_prototype(funcsynopsis, s): s = s.strip() # funcsynopsis has a very detailed content model, so we need to massage the # bare prototype into it. Fortunately, since the parameter names are marked # up, we have enough information to do this. for fp in s.split(';'): fp = fp.strip() if fp: if verbose: print("'%s'" % fp, file=sys.stderr) match = re.match(r'(.*?)([\w\d]*) ?\((.*)\)', fp) if verbose: print(match.groups(), file=sys.stderr) funcprototype = lxml.etree.SubElement(funcsynopsis, 'funcprototype') funcdef = lxml.etree.SubElement(funcprototype, 'funcdef') funcdef.text = match.group(1) function = lxml.etree.SubElement(funcdef, 'function') function.text = match.group(2) if match.group(3).strip() == 'void': void = lxml.etree.SubElement(funcprototype, 'void') else: # Split parameters on ',' except if it is inside () for p in re.split(',(?![^()]*\))', match.group(3)): p = p.strip() if verbose: print(p, file=sys.stderr) if p == '...': varargs = lxml.etree.SubElement(funcprototype, 'varargs') else: paramdef = lxml.etree.SubElement(funcprototype, 'paramdef') parameter = lxml.etree.SubElement(paramdef, 'parameter') # <[ ]> enclose the parameter name match2 = re.match('(.*)<\[(.*)\]>(.*)', p) if verbose: print(match2.groups(), file=sys.stderr) paramdef.text = match2.group(1) parameter.text = match2.group(2) parameter.tail = match2.group(3) # DESCRIPTION # (RETURNS, ERRORS, PORTABILITY, BUGS, WARNINGS, SEEALSO, NOTES are handled the same) # # Create a refsect with a title corresponding to the command # # Nearly all the the existing DESCRIPTION contents could be transformed into # DocBook with a few regex substitutions. Unfortunately, pages like sprintf and # sscanf, have very complex layout using nested tables and itemized lists, which # it is best to parse in order to transform correctly. # def refsect(t, s): refsect = lxml.etree.SubElement(refentry, 'refsect1') title = lxml.etree.SubElement(refsect, 'title') title.text = t.title() if verbose: print('%s has %d paragraphs' % (t, len(s.split('\n\n'))) , file=sys.stderr) if verbose > 1: dump(s, 'before lexing') # dump out lexer token sequence lex.input(s) for tok in lexer: print(tok, file=sys.stderr) # parse the section text for makedoc markup and the few pieces of texinfo # markup we understand, and output an XML marked-up string xml = parser.parse(s, tracking=True, debug=(verbose > 2)) dump(xml, 'after parsing') xml = '' + xml + '' refsect.extend(lxml.etree.fromstring(xml)) def seealso(c, t): refsect('SEE ALSO', t) # NEWPAGE # # start a new refentry def newpage(c, t): global refentry refentry = None # command dispatch table def discarded(c, t): return command_dispatch_dict = { 'FUNCTION' : function, 'TYPEDEF' : function, # TYPEDEF is not currently used, but described in doc.str 'INDEX' : index, 'TRAD_SYNOPSIS' : discarded, # K&R-style synopsis, obsolete and discarded 'ANSI_SYNOPSIS' : synopsis, 'SYNOPSIS' : synopsis, 'DESCRIPTION' : refsect, 'RETURNS' : refsect, 'ERRORS' : refsect, 'PORTABILITY' : refsect, 'BUGS' : refsect, 'WARNINGS' : refsect, 'SEEALSO' : seealso, 'NOTES' : refsect, # NOTES is not described in doc.str, so is currently discarded by makedoc, but that doesn't seem right 'QUICKREF' : discarded, # The intent of QUICKREF and MATHREF is not obvious, but they don't generate any output currently 'MATHREF' : discarded, 'START' : discarded, # a START command is inserted to contain the text before the first command 'END' : discarded, # an END command is inserted merely to terminate the text for the last command in a comment block 'NEWPAGE' : newpage, } # # Utility functions # # apply transformations which are easy to do in-place def line_markup_convert(p): s = p; # process the texinfo escape for an @ s = s.replace('@@', '@') # escape characters not allowed in XML s = s.replace('&','&') s = s.replace('<','<') s = s.replace('>','>') # convert <> to somecode and <[var]> to # var # also handle nested << <[ ]> >> correctly s = s.replace('<<','') s = s.replace('<[','') s = s.replace(']>','') s = s.replace('>>','') # also convert some simple texinfo markup # convert @emph{foo} to foo s = re.sub('@emph{(.*?)}', '\\1', s) # convert @strong{foo} to foo s = re.sub('@strong{(.*?)}', '\\1', s) # convert @minus{} to U+2212 MINUS SIGN s = s.replace('@minus{}', '−') # convert @dots{} to U+2026 HORIZONTAL ELLIPSIS s = s.replace('@dots{}', '…') # convert xref and pxref s = re.sub('@xref{(.*?)}', "See ", s) # very hacky way of dealing with @* to force a newline s = s.replace('@*', '') if (verbose > 3) and (s != p): print('%s-> line_markup_convert ->\n%s' % (p, s), file=sys.stderr) return s # # lexer # texinfo_commands = { 'ifnottex' : 'IFNOTTEX', 'end ifnottex' : 'ENDIFNOTTEX', 'tex' : 'IFTEX', 'end tex' : 'ENDIFTEX', 'comment' : 'COMMENT', 'c ' : 'COMMENT', 'multitable' : 'MULTICOLUMNTABLE', 'end multitable' : 'ENDMULTICOLUMNTABLE', 'headitem' : 'MCT_HEADITEM', 'tab' : 'MCT_COLUMN_SEPARATOR', 'item' : 'MCT_ITEM', } # token names tokens = [ 'BLANKLINE', 'BULLETEND', 'BULLETSTART', 'COURIER', 'EOF', 'ITEM', 'TABLEEND', 'TABLESTART', 'TEXINFO', 'TEXT', ] + list(set(texinfo_commands.values())) # regular expression rules for tokens, in priority order # (all these expressions should match a whole line) def t_TEXINFO(t): # this matches any @command. but not @command{} which just happens to be at # the start of a line r'@\w+[^{]*?\n' # if the line starts with a known texinfo command, change t.type to the # token for that command for k in texinfo_commands.keys(): if t.value[1:].startswith(k): t.type = texinfo_commands[k] break return t def t_COURIER(t): r'[.|].*\n' t.value = line_markup_convert(t.value[1:]) return t def t_BULLETSTART(t): r'O\+\n' return t def t_BULLETEND(t): r'O-\n' return t def t_TABLESTART(t): r'o\+\n' return t def t_TABLEEND(t): r'o-\n' return t def t_ITEM(t): r'o\s.*\n' t.value = re.sub('o\s', '', lexer.lexmatch.group(0), 1) t.value = line_markup_convert(t.value) return t def t_TEXT(t): r'.+\n' t.value = line_markup_convert(t.value) t.lexer.lineno += 1 return t def t_BLANKLINE(t): r'\n' t.lexer.lineno += 1 return t def t_eof(t): if hasattr(t.lexer,'at_eof'): # remove eof flag ready for lexing next input delattr(t.lexer,'at_eof') t.lexer.lineno = 0 return None t.type = 'EOF' t.lexer.at_eof = True; return t # Error handling rule def t_error(t): print("tokenization error, remaining text '%s'" % t.value, file=sys.stderr) exit(1) lexer = lex.lex() # # parser # def parser_verbose(p): if verbose > 2: print(p[0], file=sys.stderr) def p_input(p): '''input : paragraph | input paragraph''' if len(p) == 3: p[0] = p[1] + '\n' + p[2] else: p[0] = p[1] parser_verbose(p) # Strictly, text at top level should be paragraphs (i.e terminated by a # BLANKLINE), while text contained in rows or bullets may not be, but this # grammar doesn't enforce that for simplicity's sake. def p_paragraph(p): '''paragraph : paragraph_content maybe_eof_or_blankline''' p[0] = '\n' + p[1] + '' parser_verbose(p) def p_paragraph_content(p): '''paragraph_content : paragraph_line | paragraph_line paragraph_content''' if len(p) == 3: p[0] = p[1] + p[2] else: p[0] = p[1] parser_verbose(p) def p_paragraph_line(p): '''paragraph_line : TEXT | texinfocmd | courierblock | table | bulletlist''' p[0] = p[1] def p_empty(p): 'empty :' p[0] = '' def p_maybe_eof_or_blankline(p): '''maybe_eof_or_blankline : empty | EOF | BLANKLINE | BLANKLINE EOF''' p[0] = '' def p_maybe_lines(p): '''maybe_lines : empty | paragraph maybe_lines''' if len(p) == 3: p[0] = p[1] + p[2] else: p[0] = p[1] parser_verbose(p) def p_maybe_blankline(p): '''maybe_blankline : empty | BLANKLINE''' p[0] = '' def p_courierblock(p): '''courierblock : courier''' p[0] = '' + p[1] + '' parser_verbose(p) def p_courier(p): '''courier : COURIER | COURIER courier''' if len(p) == 3: p[0] = p[1] + p[2] else: p[0] = p[1] parser_verbose(p) def p_bullet(p): '''bullet : ITEM maybe_lines | ITEM BLANKLINE maybe_lines''' if len(p) == 3: # Glue any text in ITEM into the first para of maybe_lines # (This is an unfortunate consequence of the line-based tokenization we do) if p[2].startswith(''): p[0] = '' + p[1] + p[2][len(''):] + '' else: p[0] = '' + p[1] + '' + p[2] + '' else: p[0] = '' + p[1] + '' + p[3] + '' parser_verbose(p) def p_bullets(p): '''bullets : bullet | bullet bullets''' if len(p) == 3: p[0] = p[1] + '\n' + p[2] else: p[0] = p[1] parser_verbose(p) def p_bulletlist(p): '''bulletlist : BULLETSTART bullets BULLETEND maybe_blankline''' p[0] = '' + p[2] + '' parser_verbose(p) def p_row(p): '''row : ITEM maybe_lines | ITEM BLANKLINE maybe_lines''' if len(p) == 3: p[0] = '' + p[1] + '' + p[2] + '' else: p[0] = '' + p[1] + '' + p[3] + '' parser_verbose(p) def p_rows(p): '''rows : row | row rows''' if len(p) == 3: p[0] = p[1] + '\n' + p[2] else: p[0] = p[1] parser_verbose(p) def p_table(p): '''table : TABLESTART rows TABLEEND maybe_blankline''' p[0] = '' + p[2] + '' parser_verbose(p) def p_texinfocmd(p): '''texinfocmd : unknown_texinfocmd | comment | multitable | nottex | tex''' p[0] = p[1] def p_unknown_texinfocmd(p): '''unknown_texinfocmd : TEXINFO''' print("unknown texinfo command '%s'" % p[1].strip(), file=sys.stderr) p[0] = p[1] parser_verbose(p) def p_nottex(p): '''nottex : IFNOTTEX paragraph_content ENDIFNOTTEX''' p[0] = p[2] def p_tex(p): '''tex : IFTEX paragraph_content ENDIFTEX''' # text for TeX formatter inside @iftex is discarded p[0] = '' def p_comment(p): '''comment : COMMENT''' # comment text is discarded p[0] = '' def p_mct_columns(p): '''mct_columns : maybe_lines | maybe_lines MCT_COLUMN_SEPARATOR mct_columns''' if len(p) == 4: p[0] = '' + p[1] + '' + p[3] else: p[0] = '' + p[1] + '' parser_verbose(p) def p_mct_row(p): '''mct_row : MCT_ITEM mct_columns''' p[0] = '' + p[2] + '' parser_verbose(p) def p_mct_rows(p): '''mct_rows : mct_row | mct_row mct_rows''' if len(p) == 3: p[0] = p[1] + '\n' + p[2] else: p[0] = p[1] parser_verbose(p) def p_mct_header(p): '''mct_header : MCT_HEADITEM mct_columns''' p[0] = '' + p[2] + '' parser_verbose(p) def p_multitable(p): '''multitable : MULTICOLUMNTABLE mct_header mct_rows ENDMULTICOLUMNTABLE''' # this doesn't handle the prototype row form of @multitable, only the @columnfractions form colfrac = p[1].replace('@multitable @columnfractions', '').split() colspec = '\n'.join(['' % (c) for c in colfrac]) header = '' + p[2] + '\n' body = '' + p[3] + '\n' p[0] = '' + colspec + header + body + '' parser_verbose(p) def p_error(t): print('parse error at line %d, token %s, next token %s' % (t.lineno, t, parser.token()), file=sys.stderr) exit(1) parser = yacc.yacc(start='input') # # # def main(file): content = file.read() content = remove_noncomments(content) processed = process(content) perform(processed) # output the XML tree s = lxml.etree.tostring(rootelement, pretty_print=True, encoding='unicode') if not s: print('No output produced (perhaps the input has no makedoc markup?)', file=sys.stderr) exit(1) print(s) # warn about texinfo commands which didn't get processed match = re.search('@[a-z*]+', s) if match: print('texinfo command %s remains in output' % match.group(), file=sys.stderr) # # # if __name__ == '__main__' : options = OptionParser() options.add_option('-v', '--verbose', action='count', dest = 'verbose', default = 0) options.add_option('-c', '--cache', action='store_true', dest = 'cache', help="just ensure PLY cache is up to date") (opts, args) = options.parse_args() if opts.cache: sys.exit() verbose = opts.verbose if len(args) > 0: main(open(args[0], 'rb')) else: main(sys.stdin) picolibc-1.7.4/newlib/empty.c000066400000000000000000000031171414576234500161060ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2021 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ picolibc-1.7.4/newlib/iconvdata/000077500000000000000000000000001414576234500165525ustar00rootroot00000000000000picolibc-1.7.4/newlib/iconvdata/EUC-JP.irreversible000066400000000000000000000000301414576234500221050ustar00rootroot000000000000000x5C 0x00A5 0x7E 0x203E picolibc-1.7.4/newlib/iconvdata/SJIS.irreversible000066400000000000000000000001021414576234500217320ustar00rootroot000000000000000x5C 0x005C 0x7E 0x007E 0x8191 0xFFE0 0x8192 0xFFE1 0x81CA 0xFFE2 picolibc-1.7.4/newlib/libc/000077500000000000000000000000001414576234500155135ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/argz/000077500000000000000000000000001414576234500164565ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/argz/argz_add.c000066400000000000000000000012221414576234500203720ustar00rootroot00000000000000/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #include #include #include #include #include error_t argz_add (char **argz, size_t *argz_len, const char *str) { int len_to_add = 0; size_t last = *argz_len; if (str == NULL) return 0; len_to_add = strlen(str) + 1; *argz_len += len_to_add; if(!(*argz = (char *)realloc(*argz, *argz_len))) return ENOMEM; memcpy(*argz + last, str, len_to_add); return 0; } picolibc-1.7.4/newlib/libc/argz/argz_add_sep.c000066400000000000000000000013521414576234500212450ustar00rootroot00000000000000/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #include #include #include #include #include error_t argz_add_sep (char **argz, size_t *argz_len, const char *str, int sep) { char *str_argz = 0; size_t str_argz_len = 0; size_t last = *argz_len; argz_create_sep (str, sep, &str_argz, &str_argz_len); if (str_argz_len) { *argz_len += str_argz_len; if(!(*argz = (char *)realloc(*argz, *argz_len))) return ENOMEM; memcpy(*argz + last, str_argz, str_argz_len); } return 0; } picolibc-1.7.4/newlib/libc/argz/argz_append.c000066400000000000000000000011661414576234500211200ustar00rootroot00000000000000/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #include #include #include #include #include error_t argz_append (char **argz, size_t *argz_len, const char *buf, size_t buf_len) { if (buf_len) { size_t last = *argz_len; *argz_len += buf_len; if(!(*argz = (char *)realloc(*argz, *argz_len))) return ENOMEM; memcpy(*argz + last, buf, buf_len); } return 0; } picolibc-1.7.4/newlib/libc/argz/argz_count.c000066400000000000000000000007511414576234500210000ustar00rootroot00000000000000/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #include <_ansi.h> #include #include #include size_t argz_count (const char *argz, size_t argz_len) { size_t i; size_t count = 0; for (i = 0; i < argz_len; i++) { if (argz[i] == '\0') count++; } return count; } picolibc-1.7.4/newlib/libc/argz/argz_create.c000066400000000000000000000016071414576234500211140ustar00rootroot00000000000000/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #include #include #include #include #include error_t argz_create (char *const argv[], char **argz, size_t *argz_len) { int argc = 0; int i = 0; int len = 0; char *iter; *argz_len = 0; if (*argv == NULL) { *argz = NULL; return 0; } while (argv[argc]) { *argz_len += (strlen(argv[argc]) + 1); argc++; } /* There are argc strings to copy into argz. */ if(!(*argz = (char *)malloc(*argz_len))) return ENOMEM; iter = *argz; for(i = 0; i < argc; i++) { len = strlen(argv[i]) + 1; memcpy(iter, argv[i], len); iter += len; } return 0; } picolibc-1.7.4/newlib/libc/argz/argz_create_sep.c000066400000000000000000000023771414576234500217700ustar00rootroot00000000000000/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #define _DEFAULT_SOURCE #include #include #include #include #include error_t argz_create_sep (const char *string, int sep, char **argz, size_t *argz_len) { int len = 0; int i = 0; int num_strings = 0; char delim[2]; char *running = 0; char *old_running = 0; char *token = 0; char *iter = 0; *argz_len = 0; if (!string || string[0] == '\0') { *argz= NULL; return 0; } delim[0] = sep; delim[1] = '\0'; running = strdup(string); old_running = running; while ((token = strsep(&running, delim))) { len = strlen(token); *argz_len += (len + 1); num_strings++; } if(!(*argz = (char *)malloc(*argz_len))) return ENOMEM; free(old_running); running = strdup(string); old_running = running; iter = *argz; for (i = 0; i < num_strings; i++) { token = strsep(&running, delim); len = strlen(token) + 1; memcpy(iter, token, len); iter += len; } free(old_running); return 0; } picolibc-1.7.4/newlib/libc/argz/argz_delete.c000066400000000000000000000014131414576234500211060ustar00rootroot00000000000000/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #include #include #include #include #include error_t argz_delete (char **argz, size_t *argz_len, char *entry) { int len = 0; char *moveto = entry; if (entry) { len = strlen(entry) + 1; entry += len; memmove(moveto, entry, *argz + *argz_len - entry); *argz_len -= len; if(!(*argz = (char *)realloc(*argz, *argz_len))) return ENOMEM; if (*argz_len <= 0) { free(*argz); *argz = NULL; } } return 0; } picolibc-1.7.4/newlib/libc/argz/argz_extract.c000066400000000000000000000011611414576234500213160ustar00rootroot00000000000000/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #include #include #include void argz_extract (char *argz, size_t argz_len, char **argv) { size_t i = 0; int j = 0; const size_t count = argz_count(argz, argz_len); if (argz_len > 1) for (i = argz_len - 2; i > 0; i--) { if (argz[i] == '\0') { j++; argv[count - j] = &argz[i + 1]; } } argv[0] = &argz[0]; argv[count] = NULL; } picolibc-1.7.4/newlib/libc/argz/argz_insert.c000066400000000000000000000020041414576234500211450ustar00rootroot00000000000000/* Copyright (C) 2002, 2005 by Red Hat, Incorporated. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #include #include #include #include #include #define __need_ptrdiff_t #include error_t argz_insert (char **argz, size_t *argz_len, char *before, const char *entry) { int len = 0; ptrdiff_t delta; if (before == NULL) return argz_add(argz, argz_len, entry); if (before < *argz || before >= *argz + *argz_len) return EINVAL; while (before != *argz && before[-1]) before--; /* delta will always be non-negative, and < *argz_len */ delta = before - *argz; len = strlen(entry) + 1; if(!(*argz = (char *)realloc(*argz, *argz_len + len))) return ENOMEM; memmove(*argz + delta + len, *argz + delta, *argz_len - delta); memcpy(*argz + delta, entry, len); *argz_len += len; return 0; } picolibc-1.7.4/newlib/libc/argz/argz_next.c000066400000000000000000000012501414576234500206210ustar00rootroot00000000000000/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #include #include #include #include #include char * argz_next (char *argz, size_t argz_len, const char *entry) { if (entry) { while(*entry != '\0') entry++; entry++; if (entry >= argz + argz_len) return NULL; else return (char *) entry; } else { if (argz_len > 0) return (char *) argz; else return NULL; } } picolibc-1.7.4/newlib/libc/argz/argz_replace.c000066400000000000000000000044511414576234500212640ustar00rootroot00000000000000/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #include #include #include #include #include #include "buf_findstr.h" error_t argz_replace (char **argz, size_t *argz_len, const char *str, const char *with, unsigned *replace_count) { const int str_len = strlen(str); const int with_len = strlen(with); const int len_diff = with_len - str_len; char *buf_iter = *argz; size_t buf_len = *argz_len; char *last_iter = NULL; char *new_argz = NULL; size_t new_argz_len = 0; char *new_argz_iter = NULL; char *argz_realloc = NULL; *replace_count = 0; new_argz_len = *argz_len; while(buf_len) { if(_buf_findstr(str, &buf_iter, &buf_len)) { *replace_count += 1; new_argz_len += len_diff; } } if (*replace_count) { if (!(new_argz = (char *)malloc(new_argz_len))) return ENOMEM; buf_iter = *argz; buf_len = *argz_len; last_iter = buf_iter; new_argz_iter = new_argz; while(buf_len) { if (_buf_findstr(str, &buf_iter, &buf_len)) { /* copy everything up to, but not including str, from old argz to new argz. */ memcpy(new_argz_iter, last_iter, buf_iter - last_iter - str_len); new_argz_iter += (buf_iter - last_iter - str_len); /* copy replacement string. */ memcpy(new_argz_iter, with, with_len); new_argz_iter += with_len; last_iter = buf_iter; } } /* copy everything after last occurrence of str. */ memcpy(new_argz_iter, last_iter, *argz + *argz_len - last_iter); /* reallocate argz, and copy over the new value. */ if(!(argz_realloc = (char *)realloc(*argz, new_argz_len))) { free(new_argz); return ENOMEM; } *argz = argz_realloc; memcpy(*argz, new_argz, new_argz_len); *argz_len = new_argz_len; if (*argz_len == 0) { free(*argz); *argz = NULL; } free(new_argz); } return 0; } picolibc-1.7.4/newlib/libc/argz/argz_stringify.c000066400000000000000000000010551414576234500216640ustar00rootroot00000000000000/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #include <_ansi.h> #include #include #include void argz_stringify (char *argz, size_t argz_len, int sep) { size_t i; /* len includes trailing \0, which we don't want to replace. */ if (argz_len > 1) for (i = 0; i < argz_len - 1; i++) { if (argz[i] == '\0') argz[i] = sep; } } picolibc-1.7.4/newlib/libc/argz/buf_findstr.c000066400000000000000000000017411414576234500211320ustar00rootroot00000000000000/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #include #include #include #include #include "buf_findstr.h" /* Find string str in buffer buf of length buf_len. Point buf to character after string, or set it to NULL if end of buffer is reached. Return 1 if found, 0 if not. */ int _buf_findstr(const char *str, char **buf, size_t *buf_len) { size_t i = 0; size_t j = 0; for (i = 0; i < *buf_len; i++) { if (str[0] == (*buf)[i]) { j = i; while (str[j - i] && (str[j - i] == (*buf)[j])) j++; if(str[j - i] == '\0') { *buf += j; *buf_len -= j; return 1; } } } if (i == *buf_len) { *buf += *buf_len; *buf_len = 0; } return 0; } picolibc-1.7.4/newlib/libc/argz/buf_findstr.h000066400000000000000000000007251414576234500211400ustar00rootroot00000000000000/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #include /* Find string str in buffer buf of length buf_len. Point buf to character after string, or set it to NULL if end of buffer is reached. Return 1 if found, 0 if not. */ int _buf_findstr(const char *str, char **buf, size_t *buf_len); picolibc-1.7.4/newlib/libc/argz/envz_add.c000066400000000000000000000017551414576234500204240ustar00rootroot00000000000000/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #include #include #include #include #include #include error_t envz_add (char **envz, size_t *envz_len, const char *name, const char *value) { char *concat = NULL; int name_len = 0; int val_len = 0; int retval = 0; envz_remove(envz, envz_len, name); if (value) { name_len = strlen(name); val_len = strlen(value); if(!(concat = (char *) malloc(name_len + val_len + 2))) return ENOMEM; memcpy(concat, name, name_len); concat[name_len] = '='; memcpy(concat + name_len + 1, value, val_len + 1); retval = argz_add(envz, envz_len, concat); free(concat); } else { retval = argz_add(envz, envz_len, name); } return retval; } picolibc-1.7.4/newlib/libc/argz/envz_entry.c000066400000000000000000000020101414576234500210160ustar00rootroot00000000000000/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #include #include #include #include #include #include "buf_findstr.h" char * envz_entry (const char *envz, size_t envz_len, const char *name) { char *buf_ptr = (char *)envz; size_t buf_len = envz_len; while(buf_len) { if (_buf_findstr(name, &buf_ptr, &buf_len)) { if (buf_ptr) { if (*buf_ptr == '=' || *buf_ptr == '\0') { buf_ptr--; /* Move buf_ptr back to start of entry. */ while(*buf_ptr != '\0' && buf_ptr != envz) buf_ptr--; if(*buf_ptr == '\0') buf_ptr++; return (char *)buf_ptr; } } } } return 0; } picolibc-1.7.4/newlib/libc/argz/envz_get.c000066400000000000000000000015771414576234500204550ustar00rootroot00000000000000/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #include #include #include #include #include #include "buf_findstr.h" char * envz_get (const char *envz, size_t envz_len, const char *name) { char *buf_ptr = (char *)envz; size_t buf_len = envz_len; while(buf_len) { if (_buf_findstr(name, &buf_ptr, &buf_len)) { if (*buf_ptr == '=') { buf_ptr++; return (char *)buf_ptr; } else { if (*buf_ptr == '\0') /* NULL entry. */ return NULL; } } } /* No matching entries found. */ return NULL; } picolibc-1.7.4/newlib/libc/argz/envz_merge.c000066400000000000000000000026441414576234500207710ustar00rootroot00000000000000/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #define _DEFAULT_SOURCE #include #include #include #include #include #include error_t envz_merge (char **envz, size_t *envz_len, const char *envz2, size_t envz2_len, int override) { char *entry = NULL; char *name_str = NULL; char *val_str = NULL; char *name_iter = NULL; int retval = 0; while((entry = argz_next((char *)envz2, envz2_len, entry)) && !retval) { if (!override) { name_str = strdup (entry); name_iter = strchr(name_str, '='); if(name_iter) *name_iter = '\0'; if(!envz_entry(*envz, *envz_len, name_str)) { retval = argz_add(envz, envz_len, entry); } free(name_str); } else { name_str = strdup (entry); name_iter = strchr(name_str, '='); if(name_iter) { *name_iter = '\0'; val_str = name_iter + 1; } else { val_str = NULL; } retval = envz_add(envz, envz_len, name_str, val_str); free(name_str); } } return retval; } picolibc-1.7.4/newlib/libc/argz/envz_remove.c000066400000000000000000000014431414576234500211630ustar00rootroot00000000000000/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #include #include #include #include #include #include void envz_remove (char **envz, size_t *envz_len, const char *name) { char *entry = NULL; int len = 0; entry = envz_entry (*envz, *envz_len, name); if (entry) { len = strlen(entry) + 1; /* Not the last entry. */ if (*envz + *envz_len != entry + len - 1) { memmove(entry, entry + len, *envz + *envz_len - entry - len); } *envz = (char *)realloc(*envz, *envz_len - len); *envz_len -= len; } } picolibc-1.7.4/newlib/libc/argz/envz_strip.c000066400000000000000000000017561414576234500210360ustar00rootroot00000000000000/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #include #include #include #include #include #include void envz_strip (char **envz, size_t *envz_len) { char *entry = 0; int len = 0; int null_found = 0; while((entry = argz_next(*envz, *envz_len, entry))) { if(!strchr(entry, '=')) { null_found = 1; len = strlen(entry) + 1; /* Make sure this is not the last entry in envz. If it is, it will be chopped off by the realloc anyway.*/ if(*envz + *envz_len != entry + len - 1) { memmove(entry, entry + len, *envz + *envz_len - entry - len); } *envz_len -= len; } } if(null_found) { *envz = (char *)realloc(*envz, *envz_len); } } picolibc-1.7.4/newlib/libc/argz/meson.build000066400000000000000000000045221414576234500206230ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # srcs_argz = [ 'argz_add.c', 'argz_add_sep.c', 'argz_append.c', 'argz_count.c', 'argz_create.c', 'argz_create_sep.c', 'argz_delete.c', 'argz_extract.c', 'argz_insert.c', 'argz_next.c', 'argz_replace.c', 'argz_stringify.c', 'buf_findstr.c', 'envz_add.c', 'envz_entry.c', 'envz_get.c', 'envz_merge.c', 'envz_remove.c', 'envz_strip.c', ] hdrs_argz = [ 'buf_findstr.h', ] srcs_argz_use = [] foreach file : srcs_argz s_file = fs.replace_suffix(file, '.S') if file in srcs_machine message('libc/argz/' + file + ': machine overrides generic') elif s_file in srcs_machine message('libc/argz/' + s_file + ': machine overrides generic') else srcs_argz_use += file endif endforeach src_argz = files(srcs_argz_use) picolibc-1.7.4/newlib/libc/ctype/000077500000000000000000000000001414576234500166375ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/ctype/caseconv.t000066400000000000000000000206671414576234500206400ustar00rootroot00000000000000/* This file was generated automatically */ {0x0041, 25, TOLO, 32}, {0x0061, 25, TOUP, -32}, {0x00B5, 0, TOUP, 743}, {0x00C0, 22, TOLO, 32}, {0x00D8, 6, TOLO, 32}, {0x00E0, 22, TOUP, -32}, {0x00F8, 6, TOUP, -32}, {0x00FF, 0, TOUP, 121}, {0x0100, 47, TO1, EVENCAP}, {0x0130, 0, TOLO, -199}, {0x0131, 0, TOUP, -232}, {0x0132, 5, TO1, EVENCAP}, {0x0139, 15, TO1, ODDCAP}, {0x014A, 45, TO1, EVENCAP}, {0x0178, 0, TOLO, -121}, {0x0179, 5, TO1, ODDCAP}, {0x017F, 0, TOUP, -300}, {0x0180, 0, TOUP, 195}, {0x0181, 0, TOLO, 210}, {0x0182, 3, TO1, EVENCAP}, {0x0186, 0, TOLO, 206}, {0x0187, 1, TO1, ODDCAP}, {0x0189, 1, TOLO, 205}, {0x018B, 1, TO1, ODDCAP}, {0x018E, 0, TOLO, 79}, {0x018F, 0, TOLO, 202}, {0x0190, 0, TOLO, 203}, {0x0191, 1, TO1, ODDCAP}, {0x0193, 0, TOLO, 205}, {0x0194, 0, TOLO, 207}, {0x0195, 0, TOUP, 97}, {0x0196, 0, TOLO, 211}, {0x0197, 0, TOLO, 209}, {0x0198, 1, TO1, EVENCAP}, {0x019A, 0, TOUP, 163}, {0x019C, 0, TOLO, 211}, {0x019D, 0, TOLO, 213}, {0x019E, 0, TOUP, 130}, {0x019F, 0, TOLO, 214}, {0x01A0, 5, TO1, EVENCAP}, {0x01A6, 0, TOLO, 218}, {0x01A7, 1, TO1, ODDCAP}, {0x01A9, 0, TOLO, 218}, {0x01AC, 1, TO1, EVENCAP}, {0x01AE, 0, TOLO, 218}, {0x01AF, 1, TO1, ODDCAP}, {0x01B1, 1, TOLO, 217}, {0x01B3, 3, TO1, ODDCAP}, {0x01B7, 0, TOLO, 219}, {0x01B8, 1, TO1, EVENCAP}, {0x01BC, 1, TO1, EVENCAP}, {0x01BF, 0, TOUP, 56}, {0x01C4, 0, TOLO, 2}, {0x01C5, 0, TOBOTH, 0}, {0x01C6, 0, TOUP, -2}, {0x01C7, 0, TOLO, 2}, {0x01C8, 0, TOBOTH, 0}, {0x01C9, 0, TOUP, -2}, {0x01CA, 0, TOLO, 2}, {0x01CB, 0, TOBOTH, 0}, {0x01CC, 0, TOUP, -2}, {0x01CD, 15, TO1, ODDCAP}, {0x01DD, 0, TOUP, -79}, {0x01DE, 17, TO1, EVENCAP}, {0x01F1, 0, TOLO, 2}, {0x01F2, 0, TOBOTH, 0}, {0x01F3, 0, TOUP, -2}, {0x01F4, 1, TO1, EVENCAP}, {0x01F6, 0, TOLO, -97}, {0x01F7, 0, TOLO, -56}, {0x01F8, 39, TO1, EVENCAP}, {0x0220, 0, TOLO, -130}, {0x0222, 17, TO1, EVENCAP}, {0x023A, 0, TOLO, 10795}, {0x023B, 1, TO1, ODDCAP}, {0x023D, 0, TOLO, -163}, {0x023E, 0, TOLO, 10792}, {0x023F, 1, TOUP, 10815}, {0x0241, 1, TO1, ODDCAP}, {0x0243, 0, TOLO, -195}, {0x0244, 0, TOLO, 69}, {0x0245, 0, TOLO, 71}, {0x0246, 9, TO1, EVENCAP}, {0x0250, 0, TOUP, 10783}, {0x0251, 0, TOUP, 10780}, {0x0252, 0, TOUP, 10782}, {0x0253, 0, TOUP, -210}, {0x0254, 0, TOUP, -206}, {0x0256, 1, TOUP, -205}, {0x0259, 0, TOUP, -202}, {0x025B, 0, TOUP, -203}, {0x025C, 0, TOUP, 42319}, {0x0260, 0, TOUP, -205}, {0x0261, 0, TOUP, 42315}, {0x0263, 0, TOUP, -207}, {0x0265, 0, TOUP, 42280}, {0x0266, 0, TOUP, 42308}, {0x0268, 0, TOUP, -209}, {0x0269, 0, TOUP, -211}, {0x026A, 0, TOUP, 42308}, {0x026B, 0, TOUP, 10743}, {0x026C, 0, TOUP, 42305}, {0x026F, 0, TOUP, -211}, {0x0271, 0, TOUP, 10749}, {0x0272, 0, TOUP, -213}, {0x0275, 0, TOUP, -214}, {0x027D, 0, TOUP, 10727}, {0x0280, 0, TOUP, -218}, {0x0282, 0, TOUP, 42307}, {0x0283, 0, TOUP, -218}, {0x0287, 0, TOUP, 42282}, {0x0288, 0, TOUP, -218}, {0x0289, 0, TOUP, -69}, {0x028A, 1, TOUP, -217}, {0x028C, 0, TOUP, -71}, {0x0292, 0, TOUP, -219}, {0x029D, 0, TOUP, 42261}, {0x029E, 0, TOUP, 42258}, {0x0345, 0, TOUP, 84}, {0x0370, 3, TO1, EVENCAP}, {0x0376, 1, TO1, EVENCAP}, {0x037B, 2, TOUP, 130}, {0x037F, 0, TOLO, 116}, {0x0386, 0, TOLO, 38}, {0x0388, 2, TOLO, 37}, {0x038C, 0, TOLO, 64}, {0x038E, 1, TOLO, 63}, {0x0391, 16, TOLO, 32}, {0x03A3, 8, TOLO, 32}, {0x03AC, 0, TOUP, -38}, {0x03AD, 2, TOUP, -37}, {0x03B1, 16, TOUP, -32}, {0x03C2, 0, TOUP, -31}, {0x03C3, 8, TOUP, -32}, {0x03CC, 0, TOUP, -64}, {0x03CD, 1, TOUP, -63}, {0x03CF, 0, TOLO, 8}, {0x03D0, 0, TOUP, -62}, {0x03D1, 0, TOUP, -57}, {0x03D5, 0, TOUP, -47}, {0x03D6, 0, TOUP, -54}, {0x03D7, 0, TOUP, -8}, {0x03D8, 23, TO1, EVENCAP}, {0x03F0, 0, TOUP, -86}, {0x03F1, 0, TOUP, -80}, {0x03F2, 0, TOUP, 7}, {0x03F3, 0, TOUP, -116}, {0x03F4, 0, TOLO, -60}, {0x03F5, 0, TOUP, -96}, {0x03F7, 1, TO1, ODDCAP}, {0x03F9, 0, TOLO, -7}, {0x03FA, 1, TO1, EVENCAP}, {0x03FD, 2, TOLO, -130}, {0x0400, 15, TOLO, 80}, {0x0410, 31, TOLO, 32}, {0x0430, 31, TOUP, -32}, {0x0450, 15, TOUP, -80}, {0x0460, 33, TO1, EVENCAP}, {0x048A, 53, TO1, EVENCAP}, {0x04C0, 0, TOLO, 15}, {0x04C1, 13, TO1, ODDCAP}, {0x04CF, 0, TOUP, -15}, {0x04D0, 95, TO1, EVENCAP}, {0x0531, 37, TOLO, 48}, {0x0561, 37, TOUP, -48}, {0x10A0, 37, TOLO, 7264}, {0x10C7, 0, TOLO, 7264}, {0x10CD, 0, TOLO, 7264}, {0x10D0, 42, TOUP, 3008}, {0x10FD, 2, TOUP, 3008}, {0x13A0, 79, TOLO, 38864}, {0x13F0, 5, TOLO, 8}, {0x13F8, 5, TOUP, -8}, {0x1C80, 0, TOUP, -6254}, {0x1C81, 0, TOUP, -6253}, {0x1C82, 0, TOUP, -6244}, {0x1C83, 1, TOUP, -6242}, {0x1C85, 0, TOUP, -6243}, {0x1C86, 0, TOUP, -6236}, {0x1C87, 0, TOUP, -6181}, {0x1C88, 0, TOUP, 35266}, {0x1C90, 42, TOLO, -3008}, {0x1CBD, 2, TOLO, -3008}, {0x1D79, 0, TOUP, 35332}, {0x1D7D, 0, TOUP, 3814}, {0x1D8E, 0, TOUP, 35384}, {0x1E00, 149, TO1, EVENCAP}, {0x1E9B, 0, TOUP, -59}, {0x1E9E, 0, TOLO, -7615}, {0x1EA0, 95, TO1, EVENCAP}, {0x1F00, 7, TOUP, 8}, {0x1F08, 7, TOLO, -8}, {0x1F10, 5, TOUP, 8}, {0x1F18, 5, TOLO, -8}, {0x1F20, 7, TOUP, 8}, {0x1F28, 7, TOLO, -8}, {0x1F30, 7, TOUP, 8}, {0x1F38, 7, TOLO, -8}, {0x1F40, 5, TOUP, 8}, {0x1F48, 5, TOLO, -8}, {0x1F51, 0, TOUP, 8}, {0x1F53, 0, TOUP, 8}, {0x1F55, 0, TOUP, 8}, {0x1F57, 0, TOUP, 8}, {0x1F59, 0, TOLO, -8}, {0x1F5B, 0, TOLO, -8}, {0x1F5D, 0, TOLO, -8}, {0x1F5F, 0, TOLO, -8}, {0x1F60, 7, TOUP, 8}, {0x1F68, 7, TOLO, -8}, {0x1F70, 1, TOUP, 74}, {0x1F72, 3, TOUP, 86}, {0x1F76, 1, TOUP, 100}, {0x1F78, 1, TOUP, 128}, {0x1F7A, 1, TOUP, 112}, {0x1F7C, 1, TOUP, 126}, {0x1F80, 7, TOUP, 8}, {0x1F88, 7, TOLO, -8}, {0x1F90, 7, TOUP, 8}, {0x1F98, 7, TOLO, -8}, {0x1FA0, 7, TOUP, 8}, {0x1FA8, 7, TOLO, -8}, {0x1FB0, 1, TOUP, 8}, {0x1FB3, 0, TOUP, 9}, {0x1FB8, 1, TOLO, -8}, {0x1FBA, 1, TOLO, -74}, {0x1FBC, 0, TOLO, -9}, {0x1FBE, 0, TOUP, -7205}, {0x1FC3, 0, TOUP, 9}, {0x1FC8, 3, TOLO, -86}, {0x1FCC, 0, TOLO, -9}, {0x1FD0, 1, TOUP, 8}, {0x1FD8, 1, TOLO, -8}, {0x1FDA, 1, TOLO, -100}, {0x1FE0, 1, TOUP, 8}, {0x1FE5, 0, TOUP, 7}, {0x1FE8, 1, TOLO, -8}, {0x1FEA, 1, TOLO, -112}, {0x1FEC, 0, TOLO, -7}, {0x1FF3, 0, TOUP, 9}, {0x1FF8, 1, TOLO, -128}, {0x1FFA, 1, TOLO, -126}, {0x1FFC, 0, TOLO, -9}, {0x2126, 0, TOLO, -7517}, {0x212A, 0, TOLO, -8383}, {0x212B, 0, TOLO, -8262}, {0x2132, 0, TOLO, 28}, {0x214E, 0, TOUP, -28}, {0x2160, 15, TOLO, 16}, {0x2170, 15, TOUP, -16}, {0x2183, 1, TO1, ODDCAP}, {0x24B6, 25, TOLO, 26}, {0x24D0, 25, TOUP, -26}, {0x2C00, 46, TOLO, 48}, {0x2C30, 46, TOUP, -48}, {0x2C60, 1, TO1, EVENCAP}, {0x2C62, 0, TOLO, -10743}, {0x2C63, 0, TOLO, -3814}, {0x2C64, 0, TOLO, -10727}, {0x2C65, 0, TOUP, -10795}, {0x2C66, 0, TOUP, -10792}, {0x2C67, 5, TO1, ODDCAP}, {0x2C6D, 0, TOLO, -10780}, {0x2C6E, 0, TOLO, -10749}, {0x2C6F, 0, TOLO, -10783}, {0x2C70, 0, TOLO, -10782}, {0x2C72, 1, TO1, EVENCAP}, {0x2C75, 1, TO1, ODDCAP}, {0x2C7E, 1, TOLO, -10815}, {0x2C80, 99, TO1, EVENCAP}, {0x2CEB, 3, TO1, ODDCAP}, {0x2CF2, 1, TO1, EVENCAP}, {0x2D00, 37, TOUP, -7264}, {0x2D27, 0, TOUP, -7264}, {0x2D2D, 0, TOUP, -7264}, {0xA640, 45, TO1, EVENCAP}, {0xA680, 27, TO1, EVENCAP}, {0xA722, 13, TO1, EVENCAP}, {0xA732, 61, TO1, EVENCAP}, {0xA779, 3, TO1, ODDCAP}, {0xA77D, 0, TOLO, -35332}, {0xA77E, 9, TO1, EVENCAP}, {0xA78B, 1, TO1, ODDCAP}, {0xA78D, 0, TOLO, -42280}, {0xA790, 3, TO1, EVENCAP}, {0xA794, 0, TOUP, 48}, {0xA796, 19, TO1, EVENCAP}, {0xA7AA, 0, TOLO, -42308}, {0xA7AB, 0, TOLO, -42319}, {0xA7AC, 0, TOLO, -42315}, {0xA7AD, 0, TOLO, -42305}, {0xA7AE, 0, TOLO, -42308}, {0xA7B0, 0, TOLO, -42258}, {0xA7B1, 0, TOLO, -42282}, {0xA7B2, 0, TOLO, -42261}, {0xA7B3, 0, TOLO, 928}, {0xA7B4, 11, TO1, EVENCAP}, {0xA7C2, 1, TO1, EVENCAP}, {0xA7C4, 0, TOLO, -48}, {0xA7C5, 0, TOLO, -42307}, {0xA7C6, 0, TOLO, -35384}, {0xA7C7, 3, TO1, ODDCAP}, {0xA7F5, 1, TO1, ODDCAP}, {0xAB53, 0, TOUP, -928}, {0xAB70, 79, TOUP, -38864}, {0xFF21, 25, TOLO, 32}, {0xFF41, 25, TOUP, -32}, {0x10400, 39, TOLO, 40}, {0x10428, 39, TOUP, -40}, {0x104B0, 35, TOLO, 40}, {0x104D8, 35, TOUP, -40}, {0x10C80, 50, TOLO, 64}, {0x10CC0, 50, TOUP, -64}, {0x118A0, 31, TOLO, 32}, {0x118C0, 31, TOUP, -32}, {0x16E40, 31, TOLO, 32}, {0x16E60, 31, TOUP, -32}, {0x1E900, 33, TOLO, 34}, {0x1E922, 33, TOUP, -34}, picolibc-1.7.4/newlib/libc/ctype/categories.c000066400000000000000000000017171414576234500211360ustar00rootroot00000000000000/* Copyright (c) 2017 Thomas Wolff towo@towo.net */ #include #include #include "categories.h" struct _category { enum category cat: 8; uint_least32_t first: 24; uint_least16_t delta; } #ifdef HAVE_BITFIELDS_IN_PACKED_STRUCTS __attribute__((packed)) #endif ; static const struct _category categories[] = { #include "categories.t" }; static enum category bisearch_cat(wint_t ucs, const struct _category *table, int max) { int min = 0; int mid; if (ucs < table[0].first || ucs > (wint_t) (table[max].first + table[max].delta)) return CAT_error; while (max >= min) { mid = (min + max) / 2; if (ucs > (wint_t) (table[mid].first + table[mid].delta)) min = mid + 1; else if (ucs < table[mid].first) max = mid - 1; else return table[mid].cat; } return CAT_error; } enum category category(wint_t ucs) { return bisearch_cat(ucs, categories, sizeof(categories) / sizeof(*categories) - 1); } picolibc-1.7.4/newlib/libc/ctype/categories.cat000066400000000000000000000005161414576234500214570ustar00rootroot00000000000000/* This file was generated automatically */ CAT_Cc, CAT_Cf, CAT_Cs, CAT_LC, CAT_Ll, CAT_Lm, CAT_Lo, CAT_Lt, CAT_Lu, CAT_Mc, CAT_Me, CAT_Mn, CAT_Nd, CAT_Nl, CAT_No, CAT_Pc, CAT_Pd, CAT_Pe, CAT_Pf, CAT_Pi, CAT_Po, CAT_Ps, CAT_Sc, CAT_Sk, CAT_Sm, CAT_So, CAT_Zl, CAT_Zp, CAT_Zs, picolibc-1.7.4/newlib/libc/ctype/categories.h000066400000000000000000000002671414576234500211420ustar00rootroot00000000000000/* Copyright (c) 2017 Thomas Wolff towo@towo.net */ /* category data */ enum category { #include "categories.cat" CAT_error = -1, }; extern enum category category(wint_t ucs); picolibc-1.7.4/newlib/libc/ctype/categories.t000066400000000000000000001561171414576234500211640ustar00rootroot00000000000000/* This file was generated automatically */ {CAT_Cc, 0x0000, 31}, {CAT_Zs, 0x0020, 0}, {CAT_Po, 0x0021, 2}, {CAT_Sc, 0x0024, 0}, {CAT_Po, 0x0025, 2}, {CAT_Ps, 0x0028, 0}, {CAT_Pe, 0x0029, 0}, {CAT_Po, 0x002A, 0}, {CAT_Sm, 0x002B, 0}, {CAT_Po, 0x002C, 0}, {CAT_Pd, 0x002D, 0}, {CAT_Po, 0x002E, 1}, {CAT_Nd, 0x0030, 9}, {CAT_Po, 0x003A, 1}, {CAT_Sm, 0x003C, 2}, {CAT_Po, 0x003F, 1}, {CAT_LC, 0x0041, 25}, {CAT_Ps, 0x005B, 0}, {CAT_Po, 0x005C, 0}, {CAT_Pe, 0x005D, 0}, {CAT_Sk, 0x005E, 0}, {CAT_Pc, 0x005F, 0}, {CAT_Sk, 0x0060, 0}, {CAT_LC, 0x0061, 25}, {CAT_Ps, 0x007B, 0}, {CAT_Sm, 0x007C, 0}, {CAT_Pe, 0x007D, 0}, {CAT_Sm, 0x007E, 0}, {CAT_Cc, 0x007F, 32}, {CAT_Zs, 0x00A0, 0}, {CAT_Po, 0x00A1, 0}, {CAT_Sc, 0x00A2, 3}, {CAT_So, 0x00A6, 0}, {CAT_Po, 0x00A7, 0}, {CAT_Sk, 0x00A8, 0}, {CAT_So, 0x00A9, 0}, {CAT_Lo, 0x00AA, 0}, {CAT_Pi, 0x00AB, 0}, {CAT_Sm, 0x00AC, 0}, {CAT_Cf, 0x00AD, 0}, {CAT_So, 0x00AE, 0}, {CAT_Sk, 0x00AF, 0}, {CAT_So, 0x00B0, 0}, {CAT_Sm, 0x00B1, 0}, {CAT_No, 0x00B2, 1}, {CAT_Sk, 0x00B4, 0}, {CAT_LC, 0x00B5, 0}, {CAT_Po, 0x00B6, 1}, {CAT_Sk, 0x00B8, 0}, {CAT_No, 0x00B9, 0}, {CAT_Lo, 0x00BA, 0}, {CAT_Pf, 0x00BB, 0}, {CAT_No, 0x00BC, 2}, {CAT_Po, 0x00BF, 0}, {CAT_LC, 0x00C0, 22}, {CAT_Sm, 0x00D7, 0}, {CAT_LC, 0x00D8, 6}, {CAT_Ll, 0x00DF, 0}, {CAT_LC, 0x00E0, 22}, {CAT_Sm, 0x00F7, 0}, {CAT_LC, 0x00F8, 63}, {CAT_Ll, 0x0138, 0}, {CAT_LC, 0x0139, 15}, {CAT_Ll, 0x0149, 0}, {CAT_LC, 0x014A, 66}, {CAT_Ll, 0x018D, 0}, {CAT_LC, 0x018E, 12}, {CAT_Ll, 0x019B, 0}, {CAT_LC, 0x019C, 13}, {CAT_Ll, 0x01AA, 1}, {CAT_LC, 0x01AC, 13}, {CAT_Ll, 0x01BA, 0}, {CAT_Lo, 0x01BB, 0}, {CAT_LC, 0x01BC, 1}, {CAT_Ll, 0x01BE, 0}, {CAT_LC, 0x01BF, 0}, {CAT_Lo, 0x01C0, 3}, {CAT_LC, 0x01C4, 0}, {CAT_Lt, 0x01C5, 0}, {CAT_LC, 0x01C6, 1}, {CAT_Lt, 0x01C8, 0}, {CAT_LC, 0x01C9, 1}, {CAT_Lt, 0x01CB, 0}, {CAT_LC, 0x01CC, 35}, {CAT_Ll, 0x01F0, 0}, {CAT_LC, 0x01F1, 0}, {CAT_Lt, 0x01F2, 0}, {CAT_LC, 0x01F3, 45}, {CAT_Ll, 0x0221, 0}, {CAT_LC, 0x0222, 17}, {CAT_Ll, 0x0234, 5}, {CAT_LC, 0x023A, 26}, {CAT_Ll, 0x0255, 0}, {CAT_LC, 0x0256, 1}, {CAT_Ll, 0x0258, 0}, {CAT_LC, 0x0259, 0}, {CAT_Ll, 0x025A, 0}, {CAT_LC, 0x025B, 1}, {CAT_Ll, 0x025D, 2}, {CAT_LC, 0x0260, 1}, {CAT_Ll, 0x0262, 0}, {CAT_LC, 0x0263, 0}, {CAT_Ll, 0x0264, 0}, {CAT_LC, 0x0265, 1}, {CAT_Ll, 0x0267, 0}, {CAT_LC, 0x0268, 4}, {CAT_Ll, 0x026D, 1}, {CAT_LC, 0x026F, 0}, {CAT_Ll, 0x0270, 0}, {CAT_LC, 0x0271, 1}, {CAT_Ll, 0x0273, 1}, {CAT_LC, 0x0275, 0}, {CAT_Ll, 0x0276, 6}, {CAT_LC, 0x027D, 0}, {CAT_Ll, 0x027E, 1}, {CAT_LC, 0x0280, 0}, {CAT_Ll, 0x0281, 0}, {CAT_LC, 0x0282, 1}, {CAT_Ll, 0x0284, 2}, {CAT_LC, 0x0287, 5}, {CAT_Ll, 0x028D, 4}, {CAT_LC, 0x0292, 0}, {CAT_Ll, 0x0293, 0}, {CAT_Lo, 0x0294, 0}, {CAT_Ll, 0x0295, 7}, {CAT_LC, 0x029D, 1}, {CAT_Ll, 0x029F, 16}, {CAT_Lm, 0x02B0, 17}, {CAT_Sk, 0x02C2, 3}, {CAT_Lm, 0x02C6, 11}, {CAT_Sk, 0x02D2, 13}, {CAT_Lm, 0x02E0, 4}, {CAT_Sk, 0x02E5, 6}, {CAT_Lm, 0x02EC, 0}, {CAT_Sk, 0x02ED, 0}, {CAT_Lm, 0x02EE, 0}, {CAT_Sk, 0x02EF, 16}, {CAT_Mn, 0x0300, 111}, {CAT_LC, 0x0370, 3}, {CAT_Lm, 0x0374, 0}, {CAT_Sk, 0x0375, 0}, {CAT_LC, 0x0376, 1}, {CAT_Lm, 0x037A, 0}, {CAT_LC, 0x037B, 2}, {CAT_Po, 0x037E, 0}, {CAT_LC, 0x037F, 0}, {CAT_Sk, 0x0384, 1}, {CAT_LC, 0x0386, 0}, {CAT_Po, 0x0387, 0}, {CAT_LC, 0x0388, 2}, {CAT_LC, 0x038C, 0}, {CAT_LC, 0x038E, 1}, {CAT_Ll, 0x0390, 0}, {CAT_LC, 0x0391, 16}, {CAT_LC, 0x03A3, 12}, {CAT_Ll, 0x03B0, 0}, {CAT_LC, 0x03B1, 32}, {CAT_Lu, 0x03D2, 2}, {CAT_LC, 0x03D5, 32}, {CAT_Sm, 0x03F6, 0}, {CAT_LC, 0x03F7, 4}, {CAT_Ll, 0x03FC, 0}, {CAT_LC, 0x03FD, 132}, {CAT_So, 0x0482, 0}, {CAT_Mn, 0x0483, 4}, {CAT_Me, 0x0488, 1}, {CAT_LC, 0x048A, 165}, {CAT_LC, 0x0531, 37}, {CAT_Lm, 0x0559, 0}, {CAT_Po, 0x055A, 5}, {CAT_Ll, 0x0560, 0}, {CAT_LC, 0x0561, 37}, {CAT_Ll, 0x0587, 1}, {CAT_Po, 0x0589, 0}, {CAT_Pd, 0x058A, 0}, {CAT_So, 0x058D, 1}, {CAT_Sc, 0x058F, 0}, {CAT_Mn, 0x0591, 44}, {CAT_Pd, 0x05BE, 0}, {CAT_Mn, 0x05BF, 0}, {CAT_Po, 0x05C0, 0}, {CAT_Mn, 0x05C1, 1}, {CAT_Po, 0x05C3, 0}, {CAT_Mn, 0x05C4, 1}, {CAT_Po, 0x05C6, 0}, {CAT_Mn, 0x05C7, 0}, {CAT_Lo, 0x05D0, 26}, {CAT_Lo, 0x05EF, 3}, {CAT_Po, 0x05F3, 1}, {CAT_Cf, 0x0600, 5}, {CAT_Sm, 0x0606, 2}, {CAT_Po, 0x0609, 1}, {CAT_Sc, 0x060B, 0}, {CAT_Po, 0x060C, 1}, {CAT_So, 0x060E, 1}, {CAT_Mn, 0x0610, 10}, {CAT_Po, 0x061B, 0}, {CAT_Cf, 0x061C, 0}, {CAT_Po, 0x061E, 1}, {CAT_Lo, 0x0620, 31}, {CAT_Lm, 0x0640, 0}, {CAT_Lo, 0x0641, 9}, {CAT_Mn, 0x064B, 20}, {CAT_Nd, 0x0660, 9}, {CAT_Po, 0x066A, 3}, {CAT_Lo, 0x066E, 1}, {CAT_Mn, 0x0670, 0}, {CAT_Lo, 0x0671, 98}, {CAT_Po, 0x06D4, 0}, {CAT_Lo, 0x06D5, 0}, {CAT_Mn, 0x06D6, 6}, {CAT_Cf, 0x06DD, 0}, {CAT_So, 0x06DE, 0}, {CAT_Mn, 0x06DF, 5}, {CAT_Lm, 0x06E5, 1}, {CAT_Mn, 0x06E7, 1}, {CAT_So, 0x06E9, 0}, {CAT_Mn, 0x06EA, 3}, {CAT_Lo, 0x06EE, 1}, {CAT_Nd, 0x06F0, 9}, {CAT_Lo, 0x06FA, 2}, {CAT_So, 0x06FD, 1}, {CAT_Lo, 0x06FF, 0}, {CAT_Po, 0x0700, 13}, {CAT_Cf, 0x070F, 0}, {CAT_Lo, 0x0710, 0}, {CAT_Mn, 0x0711, 0}, {CAT_Lo, 0x0712, 29}, {CAT_Mn, 0x0730, 26}, {CAT_Lo, 0x074D, 88}, {CAT_Mn, 0x07A6, 10}, {CAT_Lo, 0x07B1, 0}, {CAT_Nd, 0x07C0, 9}, {CAT_Lo, 0x07CA, 32}, {CAT_Mn, 0x07EB, 8}, {CAT_Lm, 0x07F4, 1}, {CAT_So, 0x07F6, 0}, {CAT_Po, 0x07F7, 2}, {CAT_Lm, 0x07FA, 0}, {CAT_Mn, 0x07FD, 0}, {CAT_Sc, 0x07FE, 1}, {CAT_Lo, 0x0800, 21}, {CAT_Mn, 0x0816, 3}, {CAT_Lm, 0x081A, 0}, {CAT_Mn, 0x081B, 8}, {CAT_Lm, 0x0824, 0}, {CAT_Mn, 0x0825, 2}, {CAT_Lm, 0x0828, 0}, {CAT_Mn, 0x0829, 4}, {CAT_Po, 0x0830, 14}, {CAT_Lo, 0x0840, 24}, {CAT_Mn, 0x0859, 2}, {CAT_Po, 0x085E, 0}, {CAT_Lo, 0x0860, 10}, {CAT_Lo, 0x08A0, 20}, {CAT_Lo, 0x08B6, 17}, {CAT_Mn, 0x08D3, 14}, {CAT_Cf, 0x08E2, 0}, {CAT_Mn, 0x08E3, 31}, {CAT_Mc, 0x0903, 0}, {CAT_Lo, 0x0904, 53}, {CAT_Mn, 0x093A, 0}, {CAT_Mc, 0x093B, 0}, {CAT_Mn, 0x093C, 0}, {CAT_Lo, 0x093D, 0}, {CAT_Mc, 0x093E, 2}, {CAT_Mn, 0x0941, 7}, {CAT_Mc, 0x0949, 3}, {CAT_Mn, 0x094D, 0}, {CAT_Mc, 0x094E, 1}, {CAT_Lo, 0x0950, 0}, {CAT_Mn, 0x0951, 6}, {CAT_Lo, 0x0958, 9}, {CAT_Mn, 0x0962, 1}, {CAT_Po, 0x0964, 1}, {CAT_Nd, 0x0966, 9}, {CAT_Po, 0x0970, 0}, {CAT_Lm, 0x0971, 0}, {CAT_Lo, 0x0972, 14}, {CAT_Mn, 0x0981, 0}, {CAT_Mc, 0x0982, 1}, {CAT_Lo, 0x0985, 7}, {CAT_Lo, 0x098F, 1}, {CAT_Lo, 0x0993, 21}, {CAT_Lo, 0x09AA, 6}, {CAT_Lo, 0x09B2, 0}, {CAT_Lo, 0x09B6, 3}, {CAT_Mn, 0x09BC, 0}, {CAT_Lo, 0x09BD, 0}, {CAT_Mc, 0x09BE, 2}, {CAT_Mn, 0x09C1, 3}, {CAT_Mc, 0x09C7, 1}, {CAT_Mc, 0x09CB, 1}, {CAT_Mn, 0x09CD, 0}, {CAT_Lo, 0x09CE, 0}, {CAT_Mc, 0x09D7, 0}, {CAT_Lo, 0x09DC, 1}, {CAT_Lo, 0x09DF, 2}, {CAT_Mn, 0x09E2, 1}, {CAT_Nd, 0x09E6, 9}, {CAT_Lo, 0x09F0, 1}, {CAT_Sc, 0x09F2, 1}, {CAT_No, 0x09F4, 5}, {CAT_So, 0x09FA, 0}, {CAT_Sc, 0x09FB, 0}, {CAT_Lo, 0x09FC, 0}, {CAT_Po, 0x09FD, 0}, {CAT_Mn, 0x09FE, 0}, {CAT_Mn, 0x0A01, 1}, {CAT_Mc, 0x0A03, 0}, {CAT_Lo, 0x0A05, 5}, {CAT_Lo, 0x0A0F, 1}, {CAT_Lo, 0x0A13, 21}, {CAT_Lo, 0x0A2A, 6}, {CAT_Lo, 0x0A32, 1}, {CAT_Lo, 0x0A35, 1}, {CAT_Lo, 0x0A38, 1}, {CAT_Mn, 0x0A3C, 0}, {CAT_Mc, 0x0A3E, 2}, {CAT_Mn, 0x0A41, 1}, {CAT_Mn, 0x0A47, 1}, {CAT_Mn, 0x0A4B, 2}, {CAT_Mn, 0x0A51, 0}, {CAT_Lo, 0x0A59, 3}, {CAT_Lo, 0x0A5E, 0}, {CAT_Nd, 0x0A66, 9}, {CAT_Mn, 0x0A70, 1}, {CAT_Lo, 0x0A72, 2}, {CAT_Mn, 0x0A75, 0}, {CAT_Po, 0x0A76, 0}, {CAT_Mn, 0x0A81, 1}, {CAT_Mc, 0x0A83, 0}, {CAT_Lo, 0x0A85, 8}, {CAT_Lo, 0x0A8F, 2}, {CAT_Lo, 0x0A93, 21}, {CAT_Lo, 0x0AAA, 6}, {CAT_Lo, 0x0AB2, 1}, {CAT_Lo, 0x0AB5, 4}, {CAT_Mn, 0x0ABC, 0}, {CAT_Lo, 0x0ABD, 0}, {CAT_Mc, 0x0ABE, 2}, {CAT_Mn, 0x0AC1, 4}, {CAT_Mn, 0x0AC7, 1}, {CAT_Mc, 0x0AC9, 0}, {CAT_Mc, 0x0ACB, 1}, {CAT_Mn, 0x0ACD, 0}, {CAT_Lo, 0x0AD0, 0}, {CAT_Lo, 0x0AE0, 1}, {CAT_Mn, 0x0AE2, 1}, {CAT_Nd, 0x0AE6, 9}, {CAT_Po, 0x0AF0, 0}, {CAT_Sc, 0x0AF1, 0}, {CAT_Lo, 0x0AF9, 0}, {CAT_Mn, 0x0AFA, 5}, {CAT_Mn, 0x0B01, 0}, {CAT_Mc, 0x0B02, 1}, {CAT_Lo, 0x0B05, 7}, {CAT_Lo, 0x0B0F, 1}, {CAT_Lo, 0x0B13, 21}, {CAT_Lo, 0x0B2A, 6}, {CAT_Lo, 0x0B32, 1}, {CAT_Lo, 0x0B35, 4}, {CAT_Mn, 0x0B3C, 0}, {CAT_Lo, 0x0B3D, 0}, {CAT_Mc, 0x0B3E, 0}, {CAT_Mn, 0x0B3F, 0}, {CAT_Mc, 0x0B40, 0}, {CAT_Mn, 0x0B41, 3}, {CAT_Mc, 0x0B47, 1}, {CAT_Mc, 0x0B4B, 1}, {CAT_Mn, 0x0B4D, 0}, {CAT_Mn, 0x0B55, 1}, {CAT_Mc, 0x0B57, 0}, {CAT_Lo, 0x0B5C, 1}, {CAT_Lo, 0x0B5F, 2}, {CAT_Mn, 0x0B62, 1}, {CAT_Nd, 0x0B66, 9}, {CAT_So, 0x0B70, 0}, {CAT_Lo, 0x0B71, 0}, {CAT_No, 0x0B72, 5}, {CAT_Mn, 0x0B82, 0}, {CAT_Lo, 0x0B83, 0}, {CAT_Lo, 0x0B85, 5}, {CAT_Lo, 0x0B8E, 2}, {CAT_Lo, 0x0B92, 3}, {CAT_Lo, 0x0B99, 1}, {CAT_Lo, 0x0B9C, 0}, {CAT_Lo, 0x0B9E, 1}, {CAT_Lo, 0x0BA3, 1}, {CAT_Lo, 0x0BA8, 2}, {CAT_Lo, 0x0BAE, 11}, {CAT_Mc, 0x0BBE, 1}, {CAT_Mn, 0x0BC0, 0}, {CAT_Mc, 0x0BC1, 1}, {CAT_Mc, 0x0BC6, 2}, {CAT_Mc, 0x0BCA, 2}, {CAT_Mn, 0x0BCD, 0}, {CAT_Lo, 0x0BD0, 0}, {CAT_Mc, 0x0BD7, 0}, {CAT_Nd, 0x0BE6, 9}, {CAT_No, 0x0BF0, 2}, {CAT_So, 0x0BF3, 5}, {CAT_Sc, 0x0BF9, 0}, {CAT_So, 0x0BFA, 0}, {CAT_Mn, 0x0C00, 0}, {CAT_Mc, 0x0C01, 2}, {CAT_Mn, 0x0C04, 0}, {CAT_Lo, 0x0C05, 7}, {CAT_Lo, 0x0C0E, 2}, {CAT_Lo, 0x0C12, 22}, {CAT_Lo, 0x0C2A, 15}, {CAT_Lo, 0x0C3D, 0}, {CAT_Mn, 0x0C3E, 2}, {CAT_Mc, 0x0C41, 3}, {CAT_Mn, 0x0C46, 2}, {CAT_Mn, 0x0C4A, 3}, {CAT_Mn, 0x0C55, 1}, {CAT_Lo, 0x0C58, 2}, {CAT_Lo, 0x0C60, 1}, {CAT_Mn, 0x0C62, 1}, {CAT_Nd, 0x0C66, 9}, {CAT_Po, 0x0C77, 0}, {CAT_No, 0x0C78, 6}, {CAT_So, 0x0C7F, 0}, {CAT_Lo, 0x0C80, 0}, {CAT_Mn, 0x0C81, 0}, {CAT_Mc, 0x0C82, 1}, {CAT_Po, 0x0C84, 0}, {CAT_Lo, 0x0C85, 7}, {CAT_Lo, 0x0C8E, 2}, {CAT_Lo, 0x0C92, 22}, {CAT_Lo, 0x0CAA, 9}, {CAT_Lo, 0x0CB5, 4}, {CAT_Mn, 0x0CBC, 0}, {CAT_Lo, 0x0CBD, 0}, {CAT_Mc, 0x0CBE, 0}, {CAT_Mn, 0x0CBF, 0}, {CAT_Mc, 0x0CC0, 4}, {CAT_Mn, 0x0CC6, 0}, {CAT_Mc, 0x0CC7, 1}, {CAT_Mc, 0x0CCA, 1}, {CAT_Mn, 0x0CCC, 1}, {CAT_Mc, 0x0CD5, 1}, {CAT_Lo, 0x0CDE, 0}, {CAT_Lo, 0x0CE0, 1}, {CAT_Mn, 0x0CE2, 1}, {CAT_Nd, 0x0CE6, 9}, {CAT_Lo, 0x0CF1, 1}, {CAT_Mn, 0x0D00, 1}, {CAT_Mc, 0x0D02, 1}, {CAT_Lo, 0x0D04, 8}, {CAT_Lo, 0x0D0E, 2}, {CAT_Lo, 0x0D12, 40}, {CAT_Mn, 0x0D3B, 1}, {CAT_Lo, 0x0D3D, 0}, {CAT_Mc, 0x0D3E, 2}, {CAT_Mn, 0x0D41, 3}, {CAT_Mc, 0x0D46, 2}, {CAT_Mc, 0x0D4A, 2}, {CAT_Mn, 0x0D4D, 0}, {CAT_Lo, 0x0D4E, 0}, {CAT_So, 0x0D4F, 0}, {CAT_Lo, 0x0D54, 2}, {CAT_Mc, 0x0D57, 0}, {CAT_No, 0x0D58, 6}, {CAT_Lo, 0x0D5F, 2}, {CAT_Mn, 0x0D62, 1}, {CAT_Nd, 0x0D66, 9}, {CAT_No, 0x0D70, 8}, {CAT_So, 0x0D79, 0}, {CAT_Lo, 0x0D7A, 5}, {CAT_Mn, 0x0D81, 0}, {CAT_Mc, 0x0D82, 1}, {CAT_Lo, 0x0D85, 17}, {CAT_Lo, 0x0D9A, 23}, {CAT_Lo, 0x0DB3, 8}, {CAT_Lo, 0x0DBD, 0}, {CAT_Lo, 0x0DC0, 6}, {CAT_Mn, 0x0DCA, 0}, {CAT_Mc, 0x0DCF, 2}, {CAT_Mn, 0x0DD2, 2}, {CAT_Mn, 0x0DD6, 0}, {CAT_Mc, 0x0DD8, 7}, {CAT_Nd, 0x0DE6, 9}, {CAT_Mc, 0x0DF2, 1}, {CAT_Po, 0x0DF4, 0}, {CAT_Lo, 0x0E01, 47}, {CAT_Mn, 0x0E31, 0}, {CAT_Lo, 0x0E32, 1}, {CAT_Mn, 0x0E34, 6}, {CAT_Sc, 0x0E3F, 0}, {CAT_Lo, 0x0E40, 5}, {CAT_Lm, 0x0E46, 0}, {CAT_Mn, 0x0E47, 7}, {CAT_Po, 0x0E4F, 0}, {CAT_Nd, 0x0E50, 9}, {CAT_Po, 0x0E5A, 1}, {CAT_Lo, 0x0E81, 1}, {CAT_Lo, 0x0E84, 0}, {CAT_Lo, 0x0E86, 4}, {CAT_Lo, 0x0E8C, 23}, {CAT_Lo, 0x0EA5, 0}, {CAT_Lo, 0x0EA7, 9}, {CAT_Mn, 0x0EB1, 0}, {CAT_Lo, 0x0EB2, 1}, {CAT_Mn, 0x0EB4, 8}, {CAT_Lo, 0x0EBD, 0}, {CAT_Lo, 0x0EC0, 4}, {CAT_Lm, 0x0EC6, 0}, {CAT_Mn, 0x0EC8, 5}, {CAT_Nd, 0x0ED0, 9}, {CAT_Lo, 0x0EDC, 3}, {CAT_Lo, 0x0F00, 0}, {CAT_So, 0x0F01, 2}, {CAT_Po, 0x0F04, 14}, {CAT_So, 0x0F13, 0}, {CAT_Po, 0x0F14, 0}, {CAT_So, 0x0F15, 2}, {CAT_Mn, 0x0F18, 1}, {CAT_So, 0x0F1A, 5}, {CAT_Nd, 0x0F20, 9}, {CAT_No, 0x0F2A, 9}, {CAT_So, 0x0F34, 0}, {CAT_Mn, 0x0F35, 0}, {CAT_So, 0x0F36, 0}, {CAT_Mn, 0x0F37, 0}, {CAT_So, 0x0F38, 0}, {CAT_Mn, 0x0F39, 0}, {CAT_Ps, 0x0F3A, 0}, {CAT_Pe, 0x0F3B, 0}, {CAT_Ps, 0x0F3C, 0}, {CAT_Pe, 0x0F3D, 0}, {CAT_Mc, 0x0F3E, 1}, {CAT_Lo, 0x0F40, 7}, {CAT_Lo, 0x0F49, 35}, {CAT_Mn, 0x0F71, 13}, {CAT_Mc, 0x0F7F, 0}, {CAT_Mn, 0x0F80, 4}, {CAT_Po, 0x0F85, 0}, {CAT_Mn, 0x0F86, 1}, {CAT_Lo, 0x0F88, 4}, {CAT_Mn, 0x0F8D, 10}, {CAT_Mn, 0x0F99, 35}, {CAT_So, 0x0FBE, 7}, {CAT_Mn, 0x0FC6, 0}, {CAT_So, 0x0FC7, 5}, {CAT_So, 0x0FCE, 1}, {CAT_Po, 0x0FD0, 4}, {CAT_So, 0x0FD5, 3}, {CAT_Po, 0x0FD9, 1}, {CAT_Lo, 0x1000, 42}, {CAT_Mc, 0x102B, 1}, {CAT_Mn, 0x102D, 3}, {CAT_Mc, 0x1031, 0}, {CAT_Mn, 0x1032, 5}, {CAT_Mc, 0x1038, 0}, {CAT_Mn, 0x1039, 1}, {CAT_Mc, 0x103B, 1}, {CAT_Mn, 0x103D, 1}, {CAT_Lo, 0x103F, 0}, {CAT_Nd, 0x1040, 9}, {CAT_Po, 0x104A, 5}, {CAT_Lo, 0x1050, 5}, {CAT_Mc, 0x1056, 1}, {CAT_Mn, 0x1058, 1}, {CAT_Lo, 0x105A, 3}, {CAT_Mn, 0x105E, 2}, {CAT_Lo, 0x1061, 0}, {CAT_Mc, 0x1062, 2}, {CAT_Lo, 0x1065, 1}, {CAT_Mc, 0x1067, 6}, {CAT_Lo, 0x106E, 2}, {CAT_Mn, 0x1071, 3}, {CAT_Lo, 0x1075, 12}, {CAT_Mn, 0x1082, 0}, {CAT_Mc, 0x1083, 1}, {CAT_Mn, 0x1085, 1}, {CAT_Mc, 0x1087, 5}, {CAT_Mn, 0x108D, 0}, {CAT_Lo, 0x108E, 0}, {CAT_Mc, 0x108F, 0}, {CAT_Nd, 0x1090, 9}, {CAT_Mc, 0x109A, 2}, {CAT_Mn, 0x109D, 0}, {CAT_So, 0x109E, 1}, {CAT_LC, 0x10A0, 37}, {CAT_LC, 0x10C7, 0}, {CAT_LC, 0x10CD, 0}, {CAT_LC, 0x10D0, 42}, {CAT_Po, 0x10FB, 0}, {CAT_Lm, 0x10FC, 0}, {CAT_LC, 0x10FD, 2}, {CAT_Lo, 0x1100, 328}, {CAT_Lo, 0x124A, 3}, {CAT_Lo, 0x1250, 6}, {CAT_Lo, 0x1258, 0}, {CAT_Lo, 0x125A, 3}, {CAT_Lo, 0x1260, 40}, {CAT_Lo, 0x128A, 3}, {CAT_Lo, 0x1290, 32}, {CAT_Lo, 0x12B2, 3}, {CAT_Lo, 0x12B8, 6}, {CAT_Lo, 0x12C0, 0}, {CAT_Lo, 0x12C2, 3}, {CAT_Lo, 0x12C8, 14}, {CAT_Lo, 0x12D8, 56}, {CAT_Lo, 0x1312, 3}, {CAT_Lo, 0x1318, 66}, {CAT_Mn, 0x135D, 2}, {CAT_Po, 0x1360, 8}, {CAT_No, 0x1369, 19}, {CAT_Lo, 0x1380, 15}, {CAT_So, 0x1390, 9}, {CAT_LC, 0x13A0, 85}, {CAT_LC, 0x13F8, 5}, {CAT_Pd, 0x1400, 0}, {CAT_Lo, 0x1401, 619}, {CAT_So, 0x166D, 0}, {CAT_Po, 0x166E, 0}, {CAT_Lo, 0x166F, 16}, {CAT_Zs, 0x1680, 0}, {CAT_Lo, 0x1681, 25}, {CAT_Ps, 0x169B, 0}, {CAT_Pe, 0x169C, 0}, {CAT_Lo, 0x16A0, 74}, {CAT_Po, 0x16EB, 2}, {CAT_Nl, 0x16EE, 2}, {CAT_Lo, 0x16F1, 7}, {CAT_Lo, 0x1700, 12}, {CAT_Lo, 0x170E, 3}, {CAT_Mn, 0x1712, 2}, {CAT_Lo, 0x1720, 17}, {CAT_Mn, 0x1732, 2}, {CAT_Po, 0x1735, 1}, {CAT_Lo, 0x1740, 17}, {CAT_Mn, 0x1752, 1}, {CAT_Lo, 0x1760, 12}, {CAT_Lo, 0x176E, 2}, {CAT_Mn, 0x1772, 1}, {CAT_Lo, 0x1780, 51}, {CAT_Mn, 0x17B4, 1}, {CAT_Mc, 0x17B6, 0}, {CAT_Mn, 0x17B7, 6}, {CAT_Mc, 0x17BE, 7}, {CAT_Mn, 0x17C6, 0}, {CAT_Mc, 0x17C7, 1}, {CAT_Mn, 0x17C9, 10}, {CAT_Po, 0x17D4, 2}, {CAT_Lm, 0x17D7, 0}, {CAT_Po, 0x17D8, 2}, {CAT_Sc, 0x17DB, 0}, {CAT_Lo, 0x17DC, 0}, {CAT_Mn, 0x17DD, 0}, {CAT_Nd, 0x17E0, 9}, {CAT_No, 0x17F0, 9}, {CAT_Po, 0x1800, 5}, {CAT_Pd, 0x1806, 0}, {CAT_Po, 0x1807, 3}, {CAT_Mn, 0x180B, 2}, {CAT_Cf, 0x180E, 0}, {CAT_Nd, 0x1810, 9}, {CAT_Lo, 0x1820, 34}, {CAT_Lm, 0x1843, 0}, {CAT_Lo, 0x1844, 52}, {CAT_Lo, 0x1880, 4}, {CAT_Mn, 0x1885, 1}, {CAT_Lo, 0x1887, 33}, {CAT_Mn, 0x18A9, 0}, {CAT_Lo, 0x18AA, 0}, {CAT_Lo, 0x18B0, 69}, {CAT_Lo, 0x1900, 30}, {CAT_Mn, 0x1920, 2}, {CAT_Mc, 0x1923, 3}, {CAT_Mn, 0x1927, 1}, {CAT_Mc, 0x1929, 2}, {CAT_Mc, 0x1930, 1}, {CAT_Mn, 0x1932, 0}, {CAT_Mc, 0x1933, 5}, {CAT_Mn, 0x1939, 2}, {CAT_So, 0x1940, 0}, {CAT_Po, 0x1944, 1}, {CAT_Nd, 0x1946, 9}, {CAT_Lo, 0x1950, 29}, {CAT_Lo, 0x1970, 4}, {CAT_Lo, 0x1980, 43}, {CAT_Lo, 0x19B0, 25}, {CAT_Nd, 0x19D0, 9}, {CAT_No, 0x19DA, 0}, {CAT_So, 0x19DE, 33}, {CAT_Lo, 0x1A00, 22}, {CAT_Mn, 0x1A17, 1}, {CAT_Mc, 0x1A19, 1}, {CAT_Mn, 0x1A1B, 0}, {CAT_Po, 0x1A1E, 1}, {CAT_Lo, 0x1A20, 52}, {CAT_Mc, 0x1A55, 0}, {CAT_Mn, 0x1A56, 0}, {CAT_Mc, 0x1A57, 0}, {CAT_Mn, 0x1A58, 6}, {CAT_Mn, 0x1A60, 0}, {CAT_Mc, 0x1A61, 0}, {CAT_Mn, 0x1A62, 0}, {CAT_Mc, 0x1A63, 1}, {CAT_Mn, 0x1A65, 7}, {CAT_Mc, 0x1A6D, 5}, {CAT_Mn, 0x1A73, 9}, {CAT_Mn, 0x1A7F, 0}, {CAT_Nd, 0x1A80, 9}, {CAT_Nd, 0x1A90, 9}, {CAT_Po, 0x1AA0, 6}, {CAT_Lm, 0x1AA7, 0}, {CAT_Po, 0x1AA8, 5}, {CAT_Mn, 0x1AB0, 13}, {CAT_Me, 0x1ABE, 0}, {CAT_Mn, 0x1ABF, 1}, {CAT_Mn, 0x1B00, 3}, {CAT_Mc, 0x1B04, 0}, {CAT_Lo, 0x1B05, 46}, {CAT_Mn, 0x1B34, 0}, {CAT_Mc, 0x1B35, 0}, {CAT_Mn, 0x1B36, 4}, {CAT_Mc, 0x1B3B, 0}, {CAT_Mn, 0x1B3C, 0}, {CAT_Mc, 0x1B3D, 4}, {CAT_Mn, 0x1B42, 0}, {CAT_Mc, 0x1B43, 1}, {CAT_Lo, 0x1B45, 6}, {CAT_Nd, 0x1B50, 9}, {CAT_Po, 0x1B5A, 6}, {CAT_So, 0x1B61, 9}, {CAT_Mn, 0x1B6B, 8}, {CAT_So, 0x1B74, 8}, {CAT_Mn, 0x1B80, 1}, {CAT_Mc, 0x1B82, 0}, {CAT_Lo, 0x1B83, 29}, {CAT_Mc, 0x1BA1, 0}, {CAT_Mn, 0x1BA2, 3}, {CAT_Mc, 0x1BA6, 1}, {CAT_Mn, 0x1BA8, 1}, {CAT_Mc, 0x1BAA, 0}, {CAT_Mn, 0x1BAB, 2}, {CAT_Lo, 0x1BAE, 1}, {CAT_Nd, 0x1BB0, 9}, {CAT_Lo, 0x1BBA, 43}, {CAT_Mn, 0x1BE6, 0}, {CAT_Mc, 0x1BE7, 0}, {CAT_Mn, 0x1BE8, 1}, {CAT_Mc, 0x1BEA, 2}, {CAT_Mn, 0x1BED, 0}, {CAT_Mc, 0x1BEE, 0}, {CAT_Mn, 0x1BEF, 2}, {CAT_Mc, 0x1BF2, 1}, {CAT_Po, 0x1BFC, 3}, {CAT_Lo, 0x1C00, 35}, {CAT_Mc, 0x1C24, 7}, {CAT_Mn, 0x1C2C, 7}, {CAT_Mc, 0x1C34, 1}, {CAT_Mn, 0x1C36, 1}, {CAT_Po, 0x1C3B, 4}, {CAT_Nd, 0x1C40, 9}, {CAT_Lo, 0x1C4D, 2}, {CAT_Nd, 0x1C50, 9}, {CAT_Lo, 0x1C5A, 29}, {CAT_Lm, 0x1C78, 5}, {CAT_Po, 0x1C7E, 1}, {CAT_LC, 0x1C80, 8}, {CAT_LC, 0x1C90, 42}, {CAT_LC, 0x1CBD, 2}, {CAT_Po, 0x1CC0, 7}, {CAT_Mn, 0x1CD0, 2}, {CAT_Po, 0x1CD3, 0}, {CAT_Mn, 0x1CD4, 12}, {CAT_Mc, 0x1CE1, 0}, {CAT_Mn, 0x1CE2, 6}, {CAT_Lo, 0x1CE9, 3}, {CAT_Mn, 0x1CED, 0}, {CAT_Lo, 0x1CEE, 5}, {CAT_Mn, 0x1CF4, 0}, {CAT_Lo, 0x1CF5, 1}, {CAT_Mc, 0x1CF7, 0}, {CAT_Mn, 0x1CF8, 1}, {CAT_Lo, 0x1CFA, 0}, {CAT_Ll, 0x1D00, 43}, {CAT_Lm, 0x1D2C, 62}, {CAT_Ll, 0x1D6B, 12}, {CAT_Lm, 0x1D78, 0}, {CAT_LC, 0x1D79, 0}, {CAT_Ll, 0x1D7A, 2}, {CAT_LC, 0x1D7D, 0}, {CAT_Ll, 0x1D7E, 15}, {CAT_LC, 0x1D8E, 0}, {CAT_Ll, 0x1D8F, 11}, {CAT_Lm, 0x1D9B, 36}, {CAT_Mn, 0x1DC0, 57}, {CAT_Mn, 0x1DFB, 4}, {CAT_LC, 0x1E00, 149}, {CAT_Ll, 0x1E96, 4}, {CAT_LC, 0x1E9B, 0}, {CAT_Ll, 0x1E9C, 1}, {CAT_LC, 0x1E9E, 0}, {CAT_Ll, 0x1E9F, 0}, {CAT_LC, 0x1EA0, 117}, {CAT_LC, 0x1F18, 5}, {CAT_LC, 0x1F20, 37}, {CAT_LC, 0x1F48, 5}, {CAT_Ll, 0x1F50, 0}, {CAT_LC, 0x1F51, 0}, {CAT_Ll, 0x1F52, 0}, {CAT_LC, 0x1F53, 0}, {CAT_Ll, 0x1F54, 0}, {CAT_LC, 0x1F55, 0}, {CAT_Ll, 0x1F56, 0}, {CAT_LC, 0x1F57, 0}, {CAT_LC, 0x1F59, 0}, {CAT_LC, 0x1F5B, 0}, {CAT_LC, 0x1F5D, 0}, {CAT_LC, 0x1F5F, 30}, {CAT_LC, 0x1F80, 7}, {CAT_Lt, 0x1F88, 7}, {CAT_LC, 0x1F90, 7}, {CAT_Lt, 0x1F98, 7}, {CAT_LC, 0x1FA0, 7}, {CAT_Lt, 0x1FA8, 7}, {CAT_LC, 0x1FB0, 1}, {CAT_Ll, 0x1FB2, 0}, {CAT_LC, 0x1FB3, 0}, {CAT_Ll, 0x1FB4, 0}, {CAT_Ll, 0x1FB6, 1}, {CAT_LC, 0x1FB8, 3}, {CAT_Lt, 0x1FBC, 0}, {CAT_Sk, 0x1FBD, 0}, {CAT_LC, 0x1FBE, 0}, {CAT_Sk, 0x1FBF, 2}, {CAT_Ll, 0x1FC2, 0}, {CAT_LC, 0x1FC3, 0}, {CAT_Ll, 0x1FC4, 0}, {CAT_Ll, 0x1FC6, 1}, {CAT_LC, 0x1FC8, 3}, {CAT_Lt, 0x1FCC, 0}, {CAT_Sk, 0x1FCD, 2}, {CAT_LC, 0x1FD0, 1}, {CAT_Ll, 0x1FD2, 1}, {CAT_Ll, 0x1FD6, 1}, {CAT_LC, 0x1FD8, 3}, {CAT_Sk, 0x1FDD, 2}, {CAT_LC, 0x1FE0, 1}, {CAT_Ll, 0x1FE2, 2}, {CAT_LC, 0x1FE5, 0}, {CAT_Ll, 0x1FE6, 1}, {CAT_LC, 0x1FE8, 4}, {CAT_Sk, 0x1FED, 2}, {CAT_Ll, 0x1FF2, 0}, {CAT_LC, 0x1FF3, 0}, {CAT_Ll, 0x1FF4, 0}, {CAT_Ll, 0x1FF6, 1}, {CAT_LC, 0x1FF8, 3}, {CAT_Lt, 0x1FFC, 0}, {CAT_Sk, 0x1FFD, 1}, {CAT_Zs, 0x2000, 10}, {CAT_Cf, 0x200B, 4}, {CAT_Pd, 0x2010, 5}, {CAT_Po, 0x2016, 1}, {CAT_Pi, 0x2018, 0}, {CAT_Pf, 0x2019, 0}, {CAT_Ps, 0x201A, 0}, {CAT_Pi, 0x201B, 1}, {CAT_Pf, 0x201D, 0}, {CAT_Ps, 0x201E, 0}, {CAT_Pi, 0x201F, 0}, {CAT_Po, 0x2020, 7}, {CAT_Zl, 0x2028, 0}, {CAT_Zp, 0x2029, 0}, {CAT_Cf, 0x202A, 4}, {CAT_Zs, 0x202F, 0}, {CAT_Po, 0x2030, 8}, {CAT_Pi, 0x2039, 0}, {CAT_Pf, 0x203A, 0}, {CAT_Po, 0x203B, 3}, {CAT_Pc, 0x203F, 1}, {CAT_Po, 0x2041, 2}, {CAT_Sm, 0x2044, 0}, {CAT_Ps, 0x2045, 0}, {CAT_Pe, 0x2046, 0}, {CAT_Po, 0x2047, 10}, {CAT_Sm, 0x2052, 0}, {CAT_Po, 0x2053, 0}, {CAT_Pc, 0x2054, 0}, {CAT_Po, 0x2055, 9}, {CAT_Zs, 0x205F, 0}, {CAT_Cf, 0x2060, 4}, {CAT_Cf, 0x2066, 9}, {CAT_No, 0x2070, 0}, {CAT_Lm, 0x2071, 0}, {CAT_No, 0x2074, 5}, {CAT_Sm, 0x207A, 2}, {CAT_Ps, 0x207D, 0}, {CAT_Pe, 0x207E, 0}, {CAT_Lm, 0x207F, 0}, {CAT_No, 0x2080, 9}, {CAT_Sm, 0x208A, 2}, {CAT_Ps, 0x208D, 0}, {CAT_Pe, 0x208E, 0}, {CAT_Lm, 0x2090, 12}, {CAT_Sc, 0x20A0, 31}, {CAT_Mn, 0x20D0, 12}, {CAT_Me, 0x20DD, 3}, {CAT_Mn, 0x20E1, 0}, {CAT_Me, 0x20E2, 2}, {CAT_Mn, 0x20E5, 11}, {CAT_So, 0x2100, 1}, {CAT_Lu, 0x2102, 0}, {CAT_So, 0x2103, 3}, {CAT_Lu, 0x2107, 0}, {CAT_So, 0x2108, 1}, {CAT_Ll, 0x210A, 0}, {CAT_Lu, 0x210B, 2}, {CAT_Ll, 0x210E, 1}, {CAT_Lu, 0x2110, 2}, {CAT_Ll, 0x2113, 0}, {CAT_So, 0x2114, 0}, {CAT_Lu, 0x2115, 0}, {CAT_So, 0x2116, 1}, {CAT_Sm, 0x2118, 0}, {CAT_Lu, 0x2119, 4}, {CAT_So, 0x211E, 5}, {CAT_Lu, 0x2124, 0}, {CAT_So, 0x2125, 0}, {CAT_LC, 0x2126, 0}, {CAT_So, 0x2127, 0}, {CAT_Lu, 0x2128, 0}, {CAT_So, 0x2129, 0}, {CAT_LC, 0x212A, 1}, {CAT_Lu, 0x212C, 1}, {CAT_So, 0x212E, 0}, {CAT_Ll, 0x212F, 0}, {CAT_Lu, 0x2130, 1}, {CAT_LC, 0x2132, 0}, {CAT_Lu, 0x2133, 0}, {CAT_Ll, 0x2134, 0}, {CAT_Lo, 0x2135, 3}, {CAT_Ll, 0x2139, 0}, {CAT_So, 0x213A, 1}, {CAT_Ll, 0x213C, 1}, {CAT_Lu, 0x213E, 1}, {CAT_Sm, 0x2140, 4}, {CAT_Lu, 0x2145, 0}, {CAT_Ll, 0x2146, 3}, {CAT_So, 0x214A, 0}, {CAT_Sm, 0x214B, 0}, {CAT_So, 0x214C, 1}, {CAT_LC, 0x214E, 0}, {CAT_So, 0x214F, 0}, {CAT_No, 0x2150, 15}, {CAT_Nl, 0x2160, 34}, {CAT_LC, 0x2183, 1}, {CAT_Nl, 0x2185, 3}, {CAT_No, 0x2189, 0}, {CAT_So, 0x218A, 1}, {CAT_Sm, 0x2190, 4}, {CAT_So, 0x2195, 4}, {CAT_Sm, 0x219A, 1}, {CAT_So, 0x219C, 3}, {CAT_Sm, 0x21A0, 0}, {CAT_So, 0x21A1, 1}, {CAT_Sm, 0x21A3, 0}, {CAT_So, 0x21A4, 1}, {CAT_Sm, 0x21A6, 0}, {CAT_So, 0x21A7, 6}, {CAT_Sm, 0x21AE, 0}, {CAT_So, 0x21AF, 30}, {CAT_Sm, 0x21CE, 1}, {CAT_So, 0x21D0, 1}, {CAT_Sm, 0x21D2, 0}, {CAT_So, 0x21D3, 0}, {CAT_Sm, 0x21D4, 0}, {CAT_So, 0x21D5, 30}, {CAT_Sm, 0x21F4, 267}, {CAT_So, 0x2300, 7}, {CAT_Ps, 0x2308, 0}, {CAT_Pe, 0x2309, 0}, {CAT_Ps, 0x230A, 0}, {CAT_Pe, 0x230B, 0}, {CAT_So, 0x230C, 19}, {CAT_Sm, 0x2320, 1}, {CAT_So, 0x2322, 6}, {CAT_Ps, 0x2329, 0}, {CAT_Pe, 0x232A, 0}, {CAT_So, 0x232B, 80}, {CAT_Sm, 0x237C, 0}, {CAT_So, 0x237D, 29}, {CAT_Sm, 0x239B, 24}, {CAT_So, 0x23B4, 39}, {CAT_Sm, 0x23DC, 5}, {CAT_So, 0x23E2, 68}, {CAT_So, 0x2440, 10}, {CAT_No, 0x2460, 59}, {CAT_So, 0x249C, 77}, {CAT_No, 0x24EA, 21}, {CAT_So, 0x2500, 182}, {CAT_Sm, 0x25B7, 0}, {CAT_So, 0x25B8, 8}, {CAT_Sm, 0x25C1, 0}, {CAT_So, 0x25C2, 53}, {CAT_Sm, 0x25F8, 7}, {CAT_So, 0x2600, 110}, {CAT_Sm, 0x266F, 0}, {CAT_So, 0x2670, 247}, {CAT_Ps, 0x2768, 0}, {CAT_Pe, 0x2769, 0}, {CAT_Ps, 0x276A, 0}, {CAT_Pe, 0x276B, 0}, {CAT_Ps, 0x276C, 0}, {CAT_Pe, 0x276D, 0}, {CAT_Ps, 0x276E, 0}, {CAT_Pe, 0x276F, 0}, {CAT_Ps, 0x2770, 0}, {CAT_Pe, 0x2771, 0}, {CAT_Ps, 0x2772, 0}, {CAT_Pe, 0x2773, 0}, {CAT_Ps, 0x2774, 0}, {CAT_Pe, 0x2775, 0}, {CAT_No, 0x2776, 29}, {CAT_So, 0x2794, 43}, {CAT_Sm, 0x27C0, 4}, {CAT_Ps, 0x27C5, 0}, {CAT_Pe, 0x27C6, 0}, {CAT_Sm, 0x27C7, 30}, {CAT_Ps, 0x27E6, 0}, {CAT_Pe, 0x27E7, 0}, {CAT_Ps, 0x27E8, 0}, {CAT_Pe, 0x27E9, 0}, {CAT_Ps, 0x27EA, 0}, {CAT_Pe, 0x27EB, 0}, {CAT_Ps, 0x27EC, 0}, {CAT_Pe, 0x27ED, 0}, {CAT_Ps, 0x27EE, 0}, {CAT_Pe, 0x27EF, 0}, {CAT_Sm, 0x27F0, 15}, {CAT_So, 0x2800, 255}, {CAT_Sm, 0x2900, 130}, {CAT_Ps, 0x2983, 0}, {CAT_Pe, 0x2984, 0}, {CAT_Ps, 0x2985, 0}, {CAT_Pe, 0x2986, 0}, {CAT_Ps, 0x2987, 0}, {CAT_Pe, 0x2988, 0}, {CAT_Ps, 0x2989, 0}, {CAT_Pe, 0x298A, 0}, {CAT_Ps, 0x298B, 0}, {CAT_Pe, 0x298C, 0}, {CAT_Ps, 0x298D, 0}, {CAT_Pe, 0x298E, 0}, {CAT_Ps, 0x298F, 0}, {CAT_Pe, 0x2990, 0}, {CAT_Ps, 0x2991, 0}, {CAT_Pe, 0x2992, 0}, {CAT_Ps, 0x2993, 0}, {CAT_Pe, 0x2994, 0}, {CAT_Ps, 0x2995, 0}, {CAT_Pe, 0x2996, 0}, {CAT_Ps, 0x2997, 0}, {CAT_Pe, 0x2998, 0}, {CAT_Sm, 0x2999, 62}, {CAT_Ps, 0x29D8, 0}, {CAT_Pe, 0x29D9, 0}, {CAT_Ps, 0x29DA, 0}, {CAT_Pe, 0x29DB, 0}, {CAT_Sm, 0x29DC, 31}, {CAT_Ps, 0x29FC, 0}, {CAT_Pe, 0x29FD, 0}, {CAT_Sm, 0x29FE, 257}, {CAT_So, 0x2B00, 47}, {CAT_Sm, 0x2B30, 20}, {CAT_So, 0x2B45, 1}, {CAT_Sm, 0x2B47, 5}, {CAT_So, 0x2B4D, 38}, {CAT_So, 0x2B76, 31}, {CAT_So, 0x2B97, 104}, {CAT_LC, 0x2C00, 46}, {CAT_LC, 0x2C30, 46}, {CAT_LC, 0x2C60, 16}, {CAT_Ll, 0x2C71, 0}, {CAT_LC, 0x2C72, 1}, {CAT_Ll, 0x2C74, 0}, {CAT_LC, 0x2C75, 1}, {CAT_Ll, 0x2C77, 4}, {CAT_Lm, 0x2C7C, 1}, {CAT_LC, 0x2C7E, 101}, {CAT_Ll, 0x2CE4, 0}, {CAT_So, 0x2CE5, 5}, {CAT_LC, 0x2CEB, 3}, {CAT_Mn, 0x2CEF, 2}, {CAT_LC, 0x2CF2, 1}, {CAT_Po, 0x2CF9, 3}, {CAT_No, 0x2CFD, 0}, {CAT_Po, 0x2CFE, 1}, {CAT_LC, 0x2D00, 37}, {CAT_LC, 0x2D27, 0}, {CAT_LC, 0x2D2D, 0}, {CAT_Lo, 0x2D30, 55}, {CAT_Lm, 0x2D6F, 0}, {CAT_Po, 0x2D70, 0}, {CAT_Mn, 0x2D7F, 0}, {CAT_Lo, 0x2D80, 22}, {CAT_Lo, 0x2DA0, 6}, {CAT_Lo, 0x2DA8, 6}, {CAT_Lo, 0x2DB0, 6}, {CAT_Lo, 0x2DB8, 6}, {CAT_Lo, 0x2DC0, 6}, {CAT_Lo, 0x2DC8, 6}, {CAT_Lo, 0x2DD0, 6}, {CAT_Lo, 0x2DD8, 6}, {CAT_Mn, 0x2DE0, 31}, {CAT_Po, 0x2E00, 1}, {CAT_Pi, 0x2E02, 0}, {CAT_Pf, 0x2E03, 0}, {CAT_Pi, 0x2E04, 0}, {CAT_Pf, 0x2E05, 0}, {CAT_Po, 0x2E06, 2}, {CAT_Pi, 0x2E09, 0}, {CAT_Pf, 0x2E0A, 0}, {CAT_Po, 0x2E0B, 0}, {CAT_Pi, 0x2E0C, 0}, {CAT_Pf, 0x2E0D, 0}, {CAT_Po, 0x2E0E, 8}, {CAT_Pd, 0x2E17, 0}, {CAT_Po, 0x2E18, 1}, {CAT_Pd, 0x2E1A, 0}, {CAT_Po, 0x2E1B, 0}, {CAT_Pi, 0x2E1C, 0}, {CAT_Pf, 0x2E1D, 0}, {CAT_Po, 0x2E1E, 1}, {CAT_Pi, 0x2E20, 0}, {CAT_Pf, 0x2E21, 0}, {CAT_Ps, 0x2E22, 0}, {CAT_Pe, 0x2E23, 0}, {CAT_Ps, 0x2E24, 0}, {CAT_Pe, 0x2E25, 0}, {CAT_Ps, 0x2E26, 0}, {CAT_Pe, 0x2E27, 0}, {CAT_Ps, 0x2E28, 0}, {CAT_Pe, 0x2E29, 0}, {CAT_Po, 0x2E2A, 4}, {CAT_Lm, 0x2E2F, 0}, {CAT_Po, 0x2E30, 9}, {CAT_Pd, 0x2E3A, 1}, {CAT_Po, 0x2E3C, 3}, {CAT_Pd, 0x2E40, 0}, {CAT_Po, 0x2E41, 0}, {CAT_Ps, 0x2E42, 0}, {CAT_Po, 0x2E43, 12}, {CAT_So, 0x2E50, 1}, {CAT_Po, 0x2E52, 0}, {CAT_So, 0x2E80, 25}, {CAT_So, 0x2E9B, 88}, {CAT_So, 0x2F00, 213}, {CAT_So, 0x2FF0, 11}, {CAT_Zs, 0x3000, 0}, {CAT_Po, 0x3001, 2}, {CAT_So, 0x3004, 0}, {CAT_Lm, 0x3005, 0}, {CAT_Lo, 0x3006, 0}, {CAT_Nl, 0x3007, 0}, {CAT_Ps, 0x3008, 0}, {CAT_Pe, 0x3009, 0}, {CAT_Ps, 0x300A, 0}, {CAT_Pe, 0x300B, 0}, {CAT_Ps, 0x300C, 0}, {CAT_Pe, 0x300D, 0}, {CAT_Ps, 0x300E, 0}, {CAT_Pe, 0x300F, 0}, {CAT_Ps, 0x3010, 0}, {CAT_Pe, 0x3011, 0}, {CAT_So, 0x3012, 1}, {CAT_Ps, 0x3014, 0}, {CAT_Pe, 0x3015, 0}, {CAT_Ps, 0x3016, 0}, {CAT_Pe, 0x3017, 0}, {CAT_Ps, 0x3018, 0}, {CAT_Pe, 0x3019, 0}, {CAT_Ps, 0x301A, 0}, {CAT_Pe, 0x301B, 0}, {CAT_Pd, 0x301C, 0}, {CAT_Ps, 0x301D, 0}, {CAT_Pe, 0x301E, 1}, {CAT_So, 0x3020, 0}, {CAT_Nl, 0x3021, 8}, {CAT_Mn, 0x302A, 3}, {CAT_Mc, 0x302E, 1}, {CAT_Pd, 0x3030, 0}, {CAT_Lm, 0x3031, 4}, {CAT_So, 0x3036, 1}, {CAT_Nl, 0x3038, 2}, {CAT_Lm, 0x303B, 0}, {CAT_Lo, 0x303C, 0}, {CAT_Po, 0x303D, 0}, {CAT_So, 0x303E, 1}, {CAT_Lo, 0x3041, 85}, {CAT_Mn, 0x3099, 1}, {CAT_Sk, 0x309B, 1}, {CAT_Lm, 0x309D, 1}, {CAT_Lo, 0x309F, 0}, {CAT_Pd, 0x30A0, 0}, {CAT_Lo, 0x30A1, 89}, {CAT_Po, 0x30FB, 0}, {CAT_Lm, 0x30FC, 2}, {CAT_Lo, 0x30FF, 0}, {CAT_Lo, 0x3105, 42}, {CAT_Lo, 0x3131, 93}, {CAT_So, 0x3190, 1}, {CAT_No, 0x3192, 3}, {CAT_So, 0x3196, 9}, {CAT_Lo, 0x31A0, 31}, {CAT_So, 0x31C0, 35}, {CAT_Lo, 0x31F0, 15}, {CAT_So, 0x3200, 30}, {CAT_No, 0x3220, 9}, {CAT_So, 0x322A, 29}, {CAT_No, 0x3248, 7}, {CAT_So, 0x3250, 0}, {CAT_No, 0x3251, 14}, {CAT_So, 0x3260, 31}, {CAT_No, 0x3280, 9}, {CAT_So, 0x328A, 38}, {CAT_No, 0x32B1, 14}, {CAT_So, 0x32C0, 319}, {CAT_Lo, 0x3400, 6591}, {CAT_So, 0x4DC0, 63}, {CAT_Lo, 0x4E00, 20988}, {CAT_Lo, 0xA000, 20}, {CAT_Lm, 0xA015, 0}, {CAT_Lo, 0xA016, 1142}, {CAT_So, 0xA490, 54}, {CAT_Lo, 0xA4D0, 39}, {CAT_Lm, 0xA4F8, 5}, {CAT_Po, 0xA4FE, 1}, {CAT_Lo, 0xA500, 267}, {CAT_Lm, 0xA60C, 0}, {CAT_Po, 0xA60D, 2}, {CAT_Lo, 0xA610, 15}, {CAT_Nd, 0xA620, 9}, {CAT_Lo, 0xA62A, 1}, {CAT_LC, 0xA640, 45}, {CAT_Lo, 0xA66E, 0}, {CAT_Mn, 0xA66F, 0}, {CAT_Me, 0xA670, 2}, {CAT_Po, 0xA673, 0}, {CAT_Mn, 0xA674, 9}, {CAT_Po, 0xA67E, 0}, {CAT_Lm, 0xA67F, 0}, {CAT_LC, 0xA680, 27}, {CAT_Lm, 0xA69C, 1}, {CAT_Mn, 0xA69E, 1}, {CAT_Lo, 0xA6A0, 69}, {CAT_Nl, 0xA6E6, 9}, {CAT_Mn, 0xA6F0, 1}, {CAT_Po, 0xA6F2, 5}, {CAT_Sk, 0xA700, 22}, {CAT_Lm, 0xA717, 8}, {CAT_Sk, 0xA720, 1}, {CAT_LC, 0xA722, 13}, {CAT_Ll, 0xA730, 1}, {CAT_LC, 0xA732, 61}, {CAT_Lm, 0xA770, 0}, {CAT_Ll, 0xA771, 7}, {CAT_LC, 0xA779, 14}, {CAT_Lm, 0xA788, 0}, {CAT_Sk, 0xA789, 1}, {CAT_LC, 0xA78B, 2}, {CAT_Ll, 0xA78E, 0}, {CAT_Lo, 0xA78F, 0}, {CAT_LC, 0xA790, 4}, {CAT_Ll, 0xA795, 0}, {CAT_LC, 0xA796, 24}, {CAT_Ll, 0xA7AF, 0}, {CAT_LC, 0xA7B0, 15}, {CAT_LC, 0xA7C2, 8}, {CAT_LC, 0xA7F5, 1}, {CAT_Lo, 0xA7F7, 0}, {CAT_Lm, 0xA7F8, 1}, {CAT_Ll, 0xA7FA, 0}, {CAT_Lo, 0xA7FB, 6}, {CAT_Mn, 0xA802, 0}, {CAT_Lo, 0xA803, 2}, {CAT_Mn, 0xA806, 0}, {CAT_Lo, 0xA807, 3}, {CAT_Mn, 0xA80B, 0}, {CAT_Lo, 0xA80C, 22}, {CAT_Mc, 0xA823, 1}, {CAT_Mn, 0xA825, 1}, {CAT_Mc, 0xA827, 0}, {CAT_So, 0xA828, 3}, {CAT_Mn, 0xA82C, 0}, {CAT_No, 0xA830, 5}, {CAT_So, 0xA836, 1}, {CAT_Sc, 0xA838, 0}, {CAT_So, 0xA839, 0}, {CAT_Lo, 0xA840, 51}, {CAT_Po, 0xA874, 3}, {CAT_Mc, 0xA880, 1}, {CAT_Lo, 0xA882, 49}, {CAT_Mc, 0xA8B4, 15}, {CAT_Mn, 0xA8C4, 1}, {CAT_Po, 0xA8CE, 1}, {CAT_Nd, 0xA8D0, 9}, {CAT_Mn, 0xA8E0, 17}, {CAT_Lo, 0xA8F2, 5}, {CAT_Po, 0xA8F8, 2}, {CAT_Lo, 0xA8FB, 0}, {CAT_Po, 0xA8FC, 0}, {CAT_Lo, 0xA8FD, 1}, {CAT_Mn, 0xA8FF, 0}, {CAT_Nd, 0xA900, 9}, {CAT_Lo, 0xA90A, 27}, {CAT_Mn, 0xA926, 7}, {CAT_Po, 0xA92E, 1}, {CAT_Lo, 0xA930, 22}, {CAT_Mn, 0xA947, 10}, {CAT_Mc, 0xA952, 1}, {CAT_Po, 0xA95F, 0}, {CAT_Lo, 0xA960, 28}, {CAT_Mn, 0xA980, 2}, {CAT_Mc, 0xA983, 0}, {CAT_Lo, 0xA984, 46}, {CAT_Mn, 0xA9B3, 0}, {CAT_Mc, 0xA9B4, 1}, {CAT_Mn, 0xA9B6, 3}, {CAT_Mc, 0xA9BA, 1}, {CAT_Mn, 0xA9BC, 1}, {CAT_Mc, 0xA9BE, 2}, {CAT_Po, 0xA9C1, 12}, {CAT_Lm, 0xA9CF, 0}, {CAT_Nd, 0xA9D0, 9}, {CAT_Po, 0xA9DE, 1}, {CAT_Lo, 0xA9E0, 4}, {CAT_Mn, 0xA9E5, 0}, {CAT_Lm, 0xA9E6, 0}, {CAT_Lo, 0xA9E7, 8}, {CAT_Nd, 0xA9F0, 9}, {CAT_Lo, 0xA9FA, 4}, {CAT_Lo, 0xAA00, 40}, {CAT_Mn, 0xAA29, 5}, {CAT_Mc, 0xAA2F, 1}, {CAT_Mn, 0xAA31, 1}, {CAT_Mc, 0xAA33, 1}, {CAT_Mn, 0xAA35, 1}, {CAT_Lo, 0xAA40, 2}, {CAT_Mn, 0xAA43, 0}, {CAT_Lo, 0xAA44, 7}, {CAT_Mn, 0xAA4C, 0}, {CAT_Mc, 0xAA4D, 0}, {CAT_Nd, 0xAA50, 9}, {CAT_Po, 0xAA5C, 3}, {CAT_Lo, 0xAA60, 15}, {CAT_Lm, 0xAA70, 0}, {CAT_Lo, 0xAA71, 5}, {CAT_So, 0xAA77, 2}, {CAT_Lo, 0xAA7A, 0}, {CAT_Mc, 0xAA7B, 0}, {CAT_Mn, 0xAA7C, 0}, {CAT_Mc, 0xAA7D, 0}, {CAT_Lo, 0xAA7E, 49}, {CAT_Mn, 0xAAB0, 0}, {CAT_Lo, 0xAAB1, 0}, {CAT_Mn, 0xAAB2, 2}, {CAT_Lo, 0xAAB5, 1}, {CAT_Mn, 0xAAB7, 1}, {CAT_Lo, 0xAAB9, 4}, {CAT_Mn, 0xAABE, 1}, {CAT_Lo, 0xAAC0, 0}, {CAT_Mn, 0xAAC1, 0}, {CAT_Lo, 0xAAC2, 0}, {CAT_Lo, 0xAADB, 1}, {CAT_Lm, 0xAADD, 0}, {CAT_Po, 0xAADE, 1}, {CAT_Lo, 0xAAE0, 10}, {CAT_Mc, 0xAAEB, 0}, {CAT_Mn, 0xAAEC, 1}, {CAT_Mc, 0xAAEE, 1}, {CAT_Po, 0xAAF0, 1}, {CAT_Lo, 0xAAF2, 0}, {CAT_Lm, 0xAAF3, 1}, {CAT_Mc, 0xAAF5, 0}, {CAT_Mn, 0xAAF6, 0}, {CAT_Lo, 0xAB01, 5}, {CAT_Lo, 0xAB09, 5}, {CAT_Lo, 0xAB11, 5}, {CAT_Lo, 0xAB20, 6}, {CAT_Lo, 0xAB28, 6}, {CAT_Ll, 0xAB30, 34}, {CAT_LC, 0xAB53, 0}, {CAT_Ll, 0xAB54, 6}, {CAT_Sk, 0xAB5B, 0}, {CAT_Lm, 0xAB5C, 3}, {CAT_Ll, 0xAB60, 8}, {CAT_Lm, 0xAB69, 0}, {CAT_Sk, 0xAB6A, 1}, {CAT_LC, 0xAB70, 79}, {CAT_Lo, 0xABC0, 34}, {CAT_Mc, 0xABE3, 1}, {CAT_Mn, 0xABE5, 0}, {CAT_Mc, 0xABE6, 1}, {CAT_Mn, 0xABE8, 0}, {CAT_Mc, 0xABE9, 1}, {CAT_Po, 0xABEB, 0}, {CAT_Mc, 0xABEC, 0}, {CAT_Mn, 0xABED, 0}, {CAT_Nd, 0xABF0, 9}, {CAT_Lo, 0xAC00, 11171}, {CAT_Lo, 0xD7B0, 22}, {CAT_Lo, 0xD7CB, 48}, {CAT_Cs, 0xD800, 2047}, {CAT_Lo, 0xF900, 365}, {CAT_Lo, 0xFA70, 105}, {CAT_Ll, 0xFB00, 6}, {CAT_Ll, 0xFB13, 4}, {CAT_Lo, 0xFB1D, 0}, {CAT_Mn, 0xFB1E, 0}, {CAT_Lo, 0xFB1F, 9}, {CAT_Sm, 0xFB29, 0}, {CAT_Lo, 0xFB2A, 12}, {CAT_Lo, 0xFB38, 4}, {CAT_Lo, 0xFB3E, 0}, {CAT_Lo, 0xFB40, 1}, {CAT_Lo, 0xFB43, 1}, {CAT_Lo, 0xFB46, 107}, {CAT_Sk, 0xFBB2, 15}, {CAT_Lo, 0xFBD3, 362}, {CAT_Pe, 0xFD3E, 0}, {CAT_Ps, 0xFD3F, 0}, {CAT_Lo, 0xFD50, 63}, {CAT_Lo, 0xFD92, 53}, {CAT_Lo, 0xFDF0, 11}, {CAT_Sc, 0xFDFC, 0}, {CAT_So, 0xFDFD, 0}, {CAT_Mn, 0xFE00, 15}, {CAT_Po, 0xFE10, 6}, {CAT_Ps, 0xFE17, 0}, {CAT_Pe, 0xFE18, 0}, {CAT_Po, 0xFE19, 0}, {CAT_Mn, 0xFE20, 15}, {CAT_Po, 0xFE30, 0}, {CAT_Pd, 0xFE31, 1}, {CAT_Pc, 0xFE33, 1}, {CAT_Ps, 0xFE35, 0}, {CAT_Pe, 0xFE36, 0}, {CAT_Ps, 0xFE37, 0}, {CAT_Pe, 0xFE38, 0}, {CAT_Ps, 0xFE39, 0}, {CAT_Pe, 0xFE3A, 0}, {CAT_Ps, 0xFE3B, 0}, {CAT_Pe, 0xFE3C, 0}, {CAT_Ps, 0xFE3D, 0}, {CAT_Pe, 0xFE3E, 0}, {CAT_Ps, 0xFE3F, 0}, {CAT_Pe, 0xFE40, 0}, {CAT_Ps, 0xFE41, 0}, {CAT_Pe, 0xFE42, 0}, {CAT_Ps, 0xFE43, 0}, {CAT_Pe, 0xFE44, 0}, {CAT_Po, 0xFE45, 1}, {CAT_Ps, 0xFE47, 0}, {CAT_Pe, 0xFE48, 0}, {CAT_Po, 0xFE49, 3}, {CAT_Pc, 0xFE4D, 2}, {CAT_Po, 0xFE50, 2}, {CAT_Po, 0xFE54, 3}, {CAT_Pd, 0xFE58, 0}, {CAT_Ps, 0xFE59, 0}, {CAT_Pe, 0xFE5A, 0}, {CAT_Ps, 0xFE5B, 0}, {CAT_Pe, 0xFE5C, 0}, {CAT_Ps, 0xFE5D, 0}, {CAT_Pe, 0xFE5E, 0}, {CAT_Po, 0xFE5F, 2}, {CAT_Sm, 0xFE62, 0}, {CAT_Pd, 0xFE63, 0}, {CAT_Sm, 0xFE64, 2}, {CAT_Po, 0xFE68, 0}, {CAT_Sc, 0xFE69, 0}, {CAT_Po, 0xFE6A, 1}, {CAT_Lo, 0xFE70, 4}, {CAT_Lo, 0xFE76, 134}, {CAT_Cf, 0xFEFF, 0}, {CAT_Po, 0xFF01, 2}, {CAT_Sc, 0xFF04, 0}, {CAT_Po, 0xFF05, 2}, {CAT_Ps, 0xFF08, 0}, {CAT_Pe, 0xFF09, 0}, {CAT_Po, 0xFF0A, 0}, {CAT_Sm, 0xFF0B, 0}, {CAT_Po, 0xFF0C, 0}, {CAT_Pd, 0xFF0D, 0}, {CAT_Po, 0xFF0E, 1}, {CAT_Nd, 0xFF10, 9}, {CAT_Po, 0xFF1A, 1}, {CAT_Sm, 0xFF1C, 2}, {CAT_Po, 0xFF1F, 1}, {CAT_LC, 0xFF21, 25}, {CAT_Ps, 0xFF3B, 0}, {CAT_Po, 0xFF3C, 0}, {CAT_Pe, 0xFF3D, 0}, {CAT_Sk, 0xFF3E, 0}, {CAT_Pc, 0xFF3F, 0}, {CAT_Sk, 0xFF40, 0}, {CAT_LC, 0xFF41, 25}, {CAT_Ps, 0xFF5B, 0}, {CAT_Sm, 0xFF5C, 0}, {CAT_Pe, 0xFF5D, 0}, {CAT_Sm, 0xFF5E, 0}, {CAT_Ps, 0xFF5F, 0}, {CAT_Pe, 0xFF60, 0}, {CAT_Po, 0xFF61, 0}, {CAT_Ps, 0xFF62, 0}, {CAT_Pe, 0xFF63, 0}, {CAT_Po, 0xFF64, 1}, {CAT_Lo, 0xFF66, 9}, {CAT_Lm, 0xFF70, 0}, {CAT_Lo, 0xFF71, 44}, {CAT_Lm, 0xFF9E, 1}, {CAT_Lo, 0xFFA0, 30}, {CAT_Lo, 0xFFC2, 5}, {CAT_Lo, 0xFFCA, 5}, {CAT_Lo, 0xFFD2, 5}, {CAT_Lo, 0xFFDA, 2}, {CAT_Sc, 0xFFE0, 1}, {CAT_Sm, 0xFFE2, 0}, {CAT_Sk, 0xFFE3, 0}, {CAT_So, 0xFFE4, 0}, {CAT_Sc, 0xFFE5, 1}, {CAT_So, 0xFFE8, 0}, {CAT_Sm, 0xFFE9, 3}, {CAT_So, 0xFFED, 1}, {CAT_Cf, 0xFFF9, 2}, {CAT_So, 0xFFFC, 1}, {CAT_Lo, 0x10000, 11}, {CAT_Lo, 0x1000D, 25}, {CAT_Lo, 0x10028, 18}, {CAT_Lo, 0x1003C, 1}, {CAT_Lo, 0x1003F, 14}, {CAT_Lo, 0x10050, 13}, {CAT_Lo, 0x10080, 122}, {CAT_Po, 0x10100, 2}, {CAT_No, 0x10107, 44}, {CAT_So, 0x10137, 8}, {CAT_Nl, 0x10140, 52}, {CAT_No, 0x10175, 3}, {CAT_So, 0x10179, 16}, {CAT_No, 0x1018A, 1}, {CAT_So, 0x1018C, 2}, {CAT_So, 0x10190, 12}, {CAT_So, 0x101A0, 0}, {CAT_So, 0x101D0, 44}, {CAT_Mn, 0x101FD, 0}, {CAT_Lo, 0x10280, 28}, {CAT_Lo, 0x102A0, 48}, {CAT_Mn, 0x102E0, 0}, {CAT_No, 0x102E1, 26}, {CAT_Lo, 0x10300, 31}, {CAT_No, 0x10320, 3}, {CAT_Lo, 0x1032D, 19}, {CAT_Nl, 0x10341, 0}, {CAT_Lo, 0x10342, 7}, {CAT_Nl, 0x1034A, 0}, {CAT_Lo, 0x10350, 37}, {CAT_Mn, 0x10376, 4}, {CAT_Lo, 0x10380, 29}, {CAT_Po, 0x1039F, 0}, {CAT_Lo, 0x103A0, 35}, {CAT_Lo, 0x103C8, 7}, {CAT_Po, 0x103D0, 0}, {CAT_Nl, 0x103D1, 4}, {CAT_LC, 0x10400, 79}, {CAT_Lo, 0x10450, 77}, {CAT_Nd, 0x104A0, 9}, {CAT_LC, 0x104B0, 35}, {CAT_LC, 0x104D8, 35}, {CAT_Lo, 0x10500, 39}, {CAT_Lo, 0x10530, 51}, {CAT_Po, 0x1056F, 0}, {CAT_Lo, 0x10600, 310}, {CAT_Lo, 0x10740, 21}, {CAT_Lo, 0x10760, 7}, {CAT_Lo, 0x10800, 5}, {CAT_Lo, 0x10808, 0}, {CAT_Lo, 0x1080A, 43}, {CAT_Lo, 0x10837, 1}, {CAT_Lo, 0x1083C, 0}, {CAT_Lo, 0x1083F, 22}, {CAT_Po, 0x10857, 0}, {CAT_No, 0x10858, 7}, {CAT_Lo, 0x10860, 22}, {CAT_So, 0x10877, 1}, {CAT_No, 0x10879, 6}, {CAT_Lo, 0x10880, 30}, {CAT_No, 0x108A7, 8}, {CAT_Lo, 0x108E0, 18}, {CAT_Lo, 0x108F4, 1}, {CAT_No, 0x108FB, 4}, {CAT_Lo, 0x10900, 21}, {CAT_No, 0x10916, 5}, {CAT_Po, 0x1091F, 0}, {CAT_Lo, 0x10920, 25}, {CAT_Po, 0x1093F, 0}, {CAT_Lo, 0x10980, 55}, {CAT_No, 0x109BC, 1}, {CAT_Lo, 0x109BE, 1}, {CAT_No, 0x109C0, 15}, {CAT_No, 0x109D2, 45}, {CAT_Lo, 0x10A00, 0}, {CAT_Mn, 0x10A01, 2}, {CAT_Mn, 0x10A05, 1}, {CAT_Mn, 0x10A0C, 3}, {CAT_Lo, 0x10A10, 3}, {CAT_Lo, 0x10A15, 2}, {CAT_Lo, 0x10A19, 28}, {CAT_Mn, 0x10A38, 2}, {CAT_Mn, 0x10A3F, 0}, {CAT_No, 0x10A40, 8}, {CAT_Po, 0x10A50, 8}, {CAT_Lo, 0x10A60, 28}, {CAT_No, 0x10A7D, 1}, {CAT_Po, 0x10A7F, 0}, {CAT_Lo, 0x10A80, 28}, {CAT_No, 0x10A9D, 2}, {CAT_Lo, 0x10AC0, 7}, {CAT_So, 0x10AC8, 0}, {CAT_Lo, 0x10AC9, 27}, {CAT_Mn, 0x10AE5, 1}, {CAT_No, 0x10AEB, 4}, {CAT_Po, 0x10AF0, 6}, {CAT_Lo, 0x10B00, 53}, {CAT_Po, 0x10B39, 6}, {CAT_Lo, 0x10B40, 21}, {CAT_No, 0x10B58, 7}, {CAT_Lo, 0x10B60, 18}, {CAT_No, 0x10B78, 7}, {CAT_Lo, 0x10B80, 17}, {CAT_Po, 0x10B99, 3}, {CAT_No, 0x10BA9, 6}, {CAT_Lo, 0x10C00, 72}, {CAT_LC, 0x10C80, 50}, {CAT_LC, 0x10CC0, 50}, {CAT_No, 0x10CFA, 5}, {CAT_Lo, 0x10D00, 35}, {CAT_Mn, 0x10D24, 3}, {CAT_Nd, 0x10D30, 9}, {CAT_No, 0x10E60, 30}, {CAT_Lo, 0x10E80, 41}, {CAT_Mn, 0x10EAB, 1}, {CAT_Pd, 0x10EAD, 0}, {CAT_Lo, 0x10EB0, 1}, {CAT_Lo, 0x10F00, 28}, {CAT_No, 0x10F1D, 9}, {CAT_Lo, 0x10F27, 0}, {CAT_Lo, 0x10F30, 21}, {CAT_Mn, 0x10F46, 10}, {CAT_No, 0x10F51, 3}, {CAT_Po, 0x10F55, 4}, {CAT_Lo, 0x10FB0, 20}, {CAT_No, 0x10FC5, 6}, {CAT_Lo, 0x10FE0, 22}, {CAT_Mc, 0x11000, 0}, {CAT_Mn, 0x11001, 0}, {CAT_Mc, 0x11002, 0}, {CAT_Lo, 0x11003, 52}, {CAT_Mn, 0x11038, 14}, {CAT_Po, 0x11047, 6}, {CAT_No, 0x11052, 19}, {CAT_Nd, 0x11066, 9}, {CAT_Mn, 0x1107F, 2}, {CAT_Mc, 0x11082, 0}, {CAT_Lo, 0x11083, 44}, {CAT_Mc, 0x110B0, 2}, {CAT_Mn, 0x110B3, 3}, {CAT_Mc, 0x110B7, 1}, {CAT_Mn, 0x110B9, 1}, {CAT_Po, 0x110BB, 1}, {CAT_Cf, 0x110BD, 0}, {CAT_Po, 0x110BE, 3}, {CAT_Cf, 0x110CD, 0}, {CAT_Lo, 0x110D0, 24}, {CAT_Nd, 0x110F0, 9}, {CAT_Mn, 0x11100, 2}, {CAT_Lo, 0x11103, 35}, {CAT_Mn, 0x11127, 4}, {CAT_Mc, 0x1112C, 0}, {CAT_Mn, 0x1112D, 7}, {CAT_Nd, 0x11136, 9}, {CAT_Po, 0x11140, 3}, {CAT_Lo, 0x11144, 0}, {CAT_Mc, 0x11145, 1}, {CAT_Lo, 0x11147, 0}, {CAT_Lo, 0x11150, 34}, {CAT_Mn, 0x11173, 0}, {CAT_Po, 0x11174, 1}, {CAT_Lo, 0x11176, 0}, {CAT_Mn, 0x11180, 1}, {CAT_Mc, 0x11182, 0}, {CAT_Lo, 0x11183, 47}, {CAT_Mc, 0x111B3, 2}, {CAT_Mn, 0x111B6, 8}, {CAT_Mc, 0x111BF, 1}, {CAT_Lo, 0x111C1, 3}, {CAT_Po, 0x111C5, 3}, {CAT_Mn, 0x111C9, 3}, {CAT_Po, 0x111CD, 0}, {CAT_Mc, 0x111CE, 0}, {CAT_Mn, 0x111CF, 0}, {CAT_Nd, 0x111D0, 9}, {CAT_Lo, 0x111DA, 0}, {CAT_Po, 0x111DB, 0}, {CAT_Lo, 0x111DC, 0}, {CAT_Po, 0x111DD, 2}, {CAT_No, 0x111E1, 19}, {CAT_Lo, 0x11200, 17}, {CAT_Lo, 0x11213, 24}, {CAT_Mc, 0x1122C, 2}, {CAT_Mn, 0x1122F, 2}, {CAT_Mc, 0x11232, 1}, {CAT_Mn, 0x11234, 0}, {CAT_Mc, 0x11235, 0}, {CAT_Mn, 0x11236, 1}, {CAT_Po, 0x11238, 5}, {CAT_Mn, 0x1123E, 0}, {CAT_Lo, 0x11280, 6}, {CAT_Lo, 0x11288, 0}, {CAT_Lo, 0x1128A, 3}, {CAT_Lo, 0x1128F, 14}, {CAT_Lo, 0x1129F, 9}, {CAT_Po, 0x112A9, 0}, {CAT_Lo, 0x112B0, 46}, {CAT_Mn, 0x112DF, 0}, {CAT_Mc, 0x112E0, 2}, {CAT_Mn, 0x112E3, 7}, {CAT_Nd, 0x112F0, 9}, {CAT_Mn, 0x11300, 1}, {CAT_Mc, 0x11302, 1}, {CAT_Lo, 0x11305, 7}, {CAT_Lo, 0x1130F, 1}, {CAT_Lo, 0x11313, 21}, {CAT_Lo, 0x1132A, 6}, {CAT_Lo, 0x11332, 1}, {CAT_Lo, 0x11335, 4}, {CAT_Mn, 0x1133B, 1}, {CAT_Lo, 0x1133D, 0}, {CAT_Mc, 0x1133E, 1}, {CAT_Mn, 0x11340, 0}, {CAT_Mc, 0x11341, 3}, {CAT_Mc, 0x11347, 1}, {CAT_Mc, 0x1134B, 2}, {CAT_Lo, 0x11350, 0}, {CAT_Mc, 0x11357, 0}, {CAT_Lo, 0x1135D, 4}, {CAT_Mc, 0x11362, 1}, {CAT_Mn, 0x11366, 6}, {CAT_Mn, 0x11370, 4}, {CAT_Lo, 0x11400, 52}, {CAT_Mc, 0x11435, 2}, {CAT_Mn, 0x11438, 7}, {CAT_Mc, 0x11440, 1}, {CAT_Mn, 0x11442, 2}, {CAT_Mc, 0x11445, 0}, {CAT_Mn, 0x11446, 0}, {CAT_Lo, 0x11447, 3}, {CAT_Po, 0x1144B, 4}, {CAT_Nd, 0x11450, 9}, {CAT_Po, 0x1145A, 1}, {CAT_Po, 0x1145D, 0}, {CAT_Mn, 0x1145E, 0}, {CAT_Lo, 0x1145F, 2}, {CAT_Lo, 0x11480, 47}, {CAT_Mc, 0x114B0, 2}, {CAT_Mn, 0x114B3, 5}, {CAT_Mc, 0x114B9, 0}, {CAT_Mn, 0x114BA, 0}, {CAT_Mc, 0x114BB, 3}, {CAT_Mn, 0x114BF, 1}, {CAT_Mc, 0x114C1, 0}, {CAT_Mn, 0x114C2, 1}, {CAT_Lo, 0x114C4, 1}, {CAT_Po, 0x114C6, 0}, {CAT_Lo, 0x114C7, 0}, {CAT_Nd, 0x114D0, 9}, {CAT_Lo, 0x11580, 46}, {CAT_Mc, 0x115AF, 2}, {CAT_Mn, 0x115B2, 3}, {CAT_Mc, 0x115B8, 3}, {CAT_Mn, 0x115BC, 1}, {CAT_Mc, 0x115BE, 0}, {CAT_Mn, 0x115BF, 1}, {CAT_Po, 0x115C1, 22}, {CAT_Lo, 0x115D8, 3}, {CAT_Mn, 0x115DC, 1}, {CAT_Lo, 0x11600, 47}, {CAT_Mc, 0x11630, 2}, {CAT_Mn, 0x11633, 7}, {CAT_Mc, 0x1163B, 1}, {CAT_Mn, 0x1163D, 0}, {CAT_Mc, 0x1163E, 0}, {CAT_Mn, 0x1163F, 1}, {CAT_Po, 0x11641, 2}, {CAT_Lo, 0x11644, 0}, {CAT_Nd, 0x11650, 9}, {CAT_Po, 0x11660, 12}, {CAT_Lo, 0x11680, 42}, {CAT_Mn, 0x116AB, 0}, {CAT_Mc, 0x116AC, 0}, {CAT_Mn, 0x116AD, 0}, {CAT_Mc, 0x116AE, 1}, {CAT_Mn, 0x116B0, 5}, {CAT_Mc, 0x116B6, 0}, {CAT_Mn, 0x116B7, 0}, {CAT_Lo, 0x116B8, 0}, {CAT_Nd, 0x116C0, 9}, {CAT_Lo, 0x11700, 26}, {CAT_Mn, 0x1171D, 2}, {CAT_Mc, 0x11720, 1}, {CAT_Mn, 0x11722, 3}, {CAT_Mc, 0x11726, 0}, {CAT_Mn, 0x11727, 4}, {CAT_Nd, 0x11730, 9}, {CAT_No, 0x1173A, 1}, {CAT_Po, 0x1173C, 2}, {CAT_So, 0x1173F, 0}, {CAT_Lo, 0x11800, 43}, {CAT_Mc, 0x1182C, 2}, {CAT_Mn, 0x1182F, 8}, {CAT_Mc, 0x11838, 0}, {CAT_Mn, 0x11839, 1}, {CAT_Po, 0x1183B, 0}, {CAT_LC, 0x118A0, 63}, {CAT_Nd, 0x118E0, 9}, {CAT_No, 0x118EA, 8}, {CAT_Lo, 0x118FF, 7}, {CAT_Lo, 0x11909, 0}, {CAT_Lo, 0x1190C, 7}, {CAT_Lo, 0x11915, 1}, {CAT_Lo, 0x11918, 23}, {CAT_Mc, 0x11930, 5}, {CAT_Mc, 0x11937, 1}, {CAT_Mn, 0x1193B, 1}, {CAT_Mc, 0x1193D, 0}, {CAT_Mn, 0x1193E, 0}, {CAT_Lo, 0x1193F, 0}, {CAT_Mc, 0x11940, 0}, {CAT_Lo, 0x11941, 0}, {CAT_Mc, 0x11942, 0}, {CAT_Mn, 0x11943, 0}, {CAT_Po, 0x11944, 2}, {CAT_Nd, 0x11950, 9}, {CAT_Lo, 0x119A0, 7}, {CAT_Lo, 0x119AA, 38}, {CAT_Mc, 0x119D1, 2}, {CAT_Mn, 0x119D4, 3}, {CAT_Mn, 0x119DA, 1}, {CAT_Mc, 0x119DC, 3}, {CAT_Mn, 0x119E0, 0}, {CAT_Lo, 0x119E1, 0}, {CAT_Po, 0x119E2, 0}, {CAT_Lo, 0x119E3, 0}, {CAT_Mc, 0x119E4, 0}, {CAT_Lo, 0x11A00, 0}, {CAT_Mn, 0x11A01, 9}, {CAT_Lo, 0x11A0B, 39}, {CAT_Mn, 0x11A33, 5}, {CAT_Mc, 0x11A39, 0}, {CAT_Lo, 0x11A3A, 0}, {CAT_Mn, 0x11A3B, 3}, {CAT_Po, 0x11A3F, 7}, {CAT_Mn, 0x11A47, 0}, {CAT_Lo, 0x11A50, 0}, {CAT_Mn, 0x11A51, 5}, {CAT_Mc, 0x11A57, 1}, {CAT_Mn, 0x11A59, 2}, {CAT_Lo, 0x11A5C, 45}, {CAT_Mn, 0x11A8A, 12}, {CAT_Mc, 0x11A97, 0}, {CAT_Mn, 0x11A98, 1}, {CAT_Po, 0x11A9A, 2}, {CAT_Lo, 0x11A9D, 0}, {CAT_Po, 0x11A9E, 4}, {CAT_Lo, 0x11AC0, 56}, {CAT_Lo, 0x11C00, 8}, {CAT_Lo, 0x11C0A, 36}, {CAT_Mc, 0x11C2F, 0}, {CAT_Mn, 0x11C30, 6}, {CAT_Mn, 0x11C38, 5}, {CAT_Mc, 0x11C3E, 0}, {CAT_Mn, 0x11C3F, 0}, {CAT_Lo, 0x11C40, 0}, {CAT_Po, 0x11C41, 4}, {CAT_Nd, 0x11C50, 9}, {CAT_No, 0x11C5A, 18}, {CAT_Po, 0x11C70, 1}, {CAT_Lo, 0x11C72, 29}, {CAT_Mn, 0x11C92, 21}, {CAT_Mc, 0x11CA9, 0}, {CAT_Mn, 0x11CAA, 6}, {CAT_Mc, 0x11CB1, 0}, {CAT_Mn, 0x11CB2, 1}, {CAT_Mc, 0x11CB4, 0}, {CAT_Mn, 0x11CB5, 1}, {CAT_Lo, 0x11D00, 6}, {CAT_Lo, 0x11D08, 1}, {CAT_Lo, 0x11D0B, 37}, {CAT_Mn, 0x11D31, 5}, {CAT_Mn, 0x11D3A, 0}, {CAT_Mn, 0x11D3C, 1}, {CAT_Mn, 0x11D3F, 6}, {CAT_Lo, 0x11D46, 0}, {CAT_Mn, 0x11D47, 0}, {CAT_Nd, 0x11D50, 9}, {CAT_Lo, 0x11D60, 5}, {CAT_Lo, 0x11D67, 1}, {CAT_Lo, 0x11D6A, 31}, {CAT_Mc, 0x11D8A, 4}, {CAT_Mn, 0x11D90, 1}, {CAT_Mc, 0x11D93, 1}, {CAT_Mn, 0x11D95, 0}, {CAT_Mc, 0x11D96, 0}, {CAT_Mn, 0x11D97, 0}, {CAT_Lo, 0x11D98, 0}, {CAT_Nd, 0x11DA0, 9}, {CAT_Lo, 0x11EE0, 18}, {CAT_Mn, 0x11EF3, 1}, {CAT_Mc, 0x11EF5, 1}, {CAT_Po, 0x11EF7, 1}, {CAT_Lo, 0x11FB0, 0}, {CAT_No, 0x11FC0, 20}, {CAT_So, 0x11FD5, 7}, {CAT_Sc, 0x11FDD, 3}, {CAT_So, 0x11FE1, 16}, {CAT_Po, 0x11FFF, 0}, {CAT_Lo, 0x12000, 921}, {CAT_Nl, 0x12400, 110}, {CAT_Po, 0x12470, 4}, {CAT_Lo, 0x12480, 195}, {CAT_Lo, 0x13000, 1070}, {CAT_Cf, 0x13430, 8}, {CAT_Lo, 0x14400, 582}, {CAT_Lo, 0x16800, 568}, {CAT_Lo, 0x16A40, 30}, {CAT_Nd, 0x16A60, 9}, {CAT_Po, 0x16A6E, 1}, {CAT_Lo, 0x16AD0, 29}, {CAT_Mn, 0x16AF0, 4}, {CAT_Po, 0x16AF5, 0}, {CAT_Lo, 0x16B00, 47}, {CAT_Mn, 0x16B30, 6}, {CAT_Po, 0x16B37, 4}, {CAT_So, 0x16B3C, 3}, {CAT_Lm, 0x16B40, 3}, {CAT_Po, 0x16B44, 0}, {CAT_So, 0x16B45, 0}, {CAT_Nd, 0x16B50, 9}, {CAT_No, 0x16B5B, 6}, {CAT_Lo, 0x16B63, 20}, {CAT_Lo, 0x16B7D, 18}, {CAT_LC, 0x16E40, 63}, {CAT_No, 0x16E80, 22}, {CAT_Po, 0x16E97, 3}, {CAT_Lo, 0x16F00, 74}, {CAT_Mn, 0x16F4F, 0}, {CAT_Lo, 0x16F50, 0}, {CAT_Mc, 0x16F51, 54}, {CAT_Mn, 0x16F8F, 3}, {CAT_Lm, 0x16F93, 12}, {CAT_Lm, 0x16FE0, 1}, {CAT_Po, 0x16FE2, 0}, {CAT_Lm, 0x16FE3, 0}, {CAT_Mn, 0x16FE4, 0}, {CAT_Mc, 0x16FF0, 1}, {CAT_Lo, 0x17000, 6135}, {CAT_Lo, 0x18800, 1237}, {CAT_Lo, 0x18D00, 8}, {CAT_Lo, 0x1B000, 286}, {CAT_Lo, 0x1B150, 2}, {CAT_Lo, 0x1B164, 3}, {CAT_Lo, 0x1B170, 395}, {CAT_Lo, 0x1BC00, 106}, {CAT_Lo, 0x1BC70, 12}, {CAT_Lo, 0x1BC80, 8}, {CAT_Lo, 0x1BC90, 9}, {CAT_So, 0x1BC9C, 0}, {CAT_Mn, 0x1BC9D, 1}, {CAT_Po, 0x1BC9F, 0}, {CAT_Cf, 0x1BCA0, 3}, {CAT_So, 0x1D000, 245}, {CAT_So, 0x1D100, 38}, {CAT_So, 0x1D129, 59}, {CAT_Mc, 0x1D165, 1}, {CAT_Mn, 0x1D167, 2}, {CAT_So, 0x1D16A, 2}, {CAT_Mc, 0x1D16D, 5}, {CAT_Cf, 0x1D173, 7}, {CAT_Mn, 0x1D17B, 7}, {CAT_So, 0x1D183, 1}, {CAT_Mn, 0x1D185, 6}, {CAT_So, 0x1D18C, 29}, {CAT_Mn, 0x1D1AA, 3}, {CAT_So, 0x1D1AE, 58}, {CAT_So, 0x1D200, 65}, {CAT_Mn, 0x1D242, 2}, {CAT_So, 0x1D245, 0}, {CAT_No, 0x1D2E0, 19}, {CAT_So, 0x1D300, 86}, {CAT_No, 0x1D360, 24}, {CAT_Lu, 0x1D400, 25}, {CAT_Ll, 0x1D41A, 25}, {CAT_Lu, 0x1D434, 25}, {CAT_Ll, 0x1D44E, 6}, {CAT_Ll, 0x1D456, 17}, {CAT_Lu, 0x1D468, 25}, {CAT_Ll, 0x1D482, 25}, {CAT_Lu, 0x1D49C, 0}, {CAT_Lu, 0x1D49E, 1}, {CAT_Lu, 0x1D4A2, 0}, {CAT_Lu, 0x1D4A5, 1}, {CAT_Lu, 0x1D4A9, 3}, {CAT_Lu, 0x1D4AE, 7}, {CAT_Ll, 0x1D4B6, 3}, {CAT_Ll, 0x1D4BB, 0}, {CAT_Ll, 0x1D4BD, 6}, {CAT_Ll, 0x1D4C5, 10}, {CAT_Lu, 0x1D4D0, 25}, {CAT_Ll, 0x1D4EA, 25}, {CAT_Lu, 0x1D504, 1}, {CAT_Lu, 0x1D507, 3}, {CAT_Lu, 0x1D50D, 7}, {CAT_Lu, 0x1D516, 6}, {CAT_Ll, 0x1D51E, 25}, {CAT_Lu, 0x1D538, 1}, {CAT_Lu, 0x1D53B, 3}, {CAT_Lu, 0x1D540, 4}, {CAT_Lu, 0x1D546, 0}, {CAT_Lu, 0x1D54A, 6}, {CAT_Ll, 0x1D552, 25}, {CAT_Lu, 0x1D56C, 25}, {CAT_Ll, 0x1D586, 25}, {CAT_Lu, 0x1D5A0, 25}, {CAT_Ll, 0x1D5BA, 25}, {CAT_Lu, 0x1D5D4, 25}, {CAT_Ll, 0x1D5EE, 25}, {CAT_Lu, 0x1D608, 25}, {CAT_Ll, 0x1D622, 25}, {CAT_Lu, 0x1D63C, 25}, {CAT_Ll, 0x1D656, 25}, {CAT_Lu, 0x1D670, 25}, {CAT_Ll, 0x1D68A, 27}, {CAT_Lu, 0x1D6A8, 24}, {CAT_Sm, 0x1D6C1, 0}, {CAT_Ll, 0x1D6C2, 24}, {CAT_Sm, 0x1D6DB, 0}, {CAT_Ll, 0x1D6DC, 5}, {CAT_Lu, 0x1D6E2, 24}, {CAT_Sm, 0x1D6FB, 0}, {CAT_Ll, 0x1D6FC, 24}, {CAT_Sm, 0x1D715, 0}, {CAT_Ll, 0x1D716, 5}, {CAT_Lu, 0x1D71C, 24}, {CAT_Sm, 0x1D735, 0}, {CAT_Ll, 0x1D736, 24}, {CAT_Sm, 0x1D74F, 0}, {CAT_Ll, 0x1D750, 5}, {CAT_Lu, 0x1D756, 24}, {CAT_Sm, 0x1D76F, 0}, {CAT_Ll, 0x1D770, 24}, {CAT_Sm, 0x1D789, 0}, {CAT_Ll, 0x1D78A, 5}, {CAT_Lu, 0x1D790, 24}, {CAT_Sm, 0x1D7A9, 0}, {CAT_Ll, 0x1D7AA, 24}, {CAT_Sm, 0x1D7C3, 0}, {CAT_Ll, 0x1D7C4, 5}, {CAT_Lu, 0x1D7CA, 0}, {CAT_Ll, 0x1D7CB, 0}, {CAT_Nd, 0x1D7CE, 49}, {CAT_So, 0x1D800, 511}, {CAT_Mn, 0x1DA00, 54}, {CAT_So, 0x1DA37, 3}, {CAT_Mn, 0x1DA3B, 49}, {CAT_So, 0x1DA6D, 7}, {CAT_Mn, 0x1DA75, 0}, {CAT_So, 0x1DA76, 13}, {CAT_Mn, 0x1DA84, 0}, {CAT_So, 0x1DA85, 1}, {CAT_Po, 0x1DA87, 4}, {CAT_Mn, 0x1DA9B, 4}, {CAT_Mn, 0x1DAA1, 14}, {CAT_Mn, 0x1E000, 6}, {CAT_Mn, 0x1E008, 16}, {CAT_Mn, 0x1E01B, 6}, {CAT_Mn, 0x1E023, 1}, {CAT_Mn, 0x1E026, 4}, {CAT_Lo, 0x1E100, 44}, {CAT_Mn, 0x1E130, 6}, {CAT_Lm, 0x1E137, 6}, {CAT_Nd, 0x1E140, 9}, {CAT_Lo, 0x1E14E, 0}, {CAT_So, 0x1E14F, 0}, {CAT_Lo, 0x1E2C0, 43}, {CAT_Mn, 0x1E2EC, 3}, {CAT_Nd, 0x1E2F0, 9}, {CAT_Sc, 0x1E2FF, 0}, {CAT_Lo, 0x1E800, 196}, {CAT_No, 0x1E8C7, 8}, {CAT_Mn, 0x1E8D0, 6}, {CAT_LC, 0x1E900, 67}, {CAT_Mn, 0x1E944, 6}, {CAT_Lm, 0x1E94B, 0}, {CAT_Nd, 0x1E950, 9}, {CAT_Po, 0x1E95E, 1}, {CAT_No, 0x1EC71, 58}, {CAT_So, 0x1ECAC, 0}, {CAT_No, 0x1ECAD, 2}, {CAT_Sc, 0x1ECB0, 0}, {CAT_No, 0x1ECB1, 3}, {CAT_No, 0x1ED01, 44}, {CAT_So, 0x1ED2E, 0}, {CAT_No, 0x1ED2F, 14}, {CAT_Lo, 0x1EE00, 3}, {CAT_Lo, 0x1EE05, 26}, {CAT_Lo, 0x1EE21, 1}, {CAT_Lo, 0x1EE24, 0}, {CAT_Lo, 0x1EE27, 0}, {CAT_Lo, 0x1EE29, 9}, {CAT_Lo, 0x1EE34, 3}, {CAT_Lo, 0x1EE39, 0}, {CAT_Lo, 0x1EE3B, 0}, {CAT_Lo, 0x1EE42, 0}, {CAT_Lo, 0x1EE47, 0}, {CAT_Lo, 0x1EE49, 0}, {CAT_Lo, 0x1EE4B, 0}, {CAT_Lo, 0x1EE4D, 2}, {CAT_Lo, 0x1EE51, 1}, {CAT_Lo, 0x1EE54, 0}, {CAT_Lo, 0x1EE57, 0}, {CAT_Lo, 0x1EE59, 0}, {CAT_Lo, 0x1EE5B, 0}, {CAT_Lo, 0x1EE5D, 0}, {CAT_Lo, 0x1EE5F, 0}, {CAT_Lo, 0x1EE61, 1}, {CAT_Lo, 0x1EE64, 0}, {CAT_Lo, 0x1EE67, 3}, {CAT_Lo, 0x1EE6C, 6}, {CAT_Lo, 0x1EE74, 3}, {CAT_Lo, 0x1EE79, 3}, {CAT_Lo, 0x1EE7E, 0}, {CAT_Lo, 0x1EE80, 9}, {CAT_Lo, 0x1EE8B, 16}, {CAT_Lo, 0x1EEA1, 2}, {CAT_Lo, 0x1EEA5, 4}, {CAT_Lo, 0x1EEAB, 16}, {CAT_Sm, 0x1EEF0, 1}, {CAT_So, 0x1F000, 43}, {CAT_So, 0x1F030, 99}, {CAT_So, 0x1F0A0, 14}, {CAT_So, 0x1F0B1, 14}, {CAT_So, 0x1F0C1, 14}, {CAT_So, 0x1F0D1, 36}, {CAT_No, 0x1F100, 12}, {CAT_So, 0x1F10D, 160}, {CAT_So, 0x1F1E6, 28}, {CAT_So, 0x1F210, 43}, {CAT_So, 0x1F240, 8}, {CAT_So, 0x1F250, 1}, {CAT_So, 0x1F260, 5}, {CAT_So, 0x1F300, 250}, {CAT_Sk, 0x1F3FB, 4}, {CAT_So, 0x1F400, 727}, {CAT_So, 0x1F6E0, 12}, {CAT_So, 0x1F6F0, 12}, {CAT_So, 0x1F700, 115}, {CAT_So, 0x1F780, 88}, {CAT_So, 0x1F7E0, 11}, {CAT_So, 0x1F800, 11}, {CAT_So, 0x1F810, 55}, {CAT_So, 0x1F850, 9}, {CAT_So, 0x1F860, 39}, {CAT_So, 0x1F890, 29}, {CAT_So, 0x1F8B0, 1}, {CAT_So, 0x1F900, 120}, {CAT_So, 0x1F97A, 81}, {CAT_So, 0x1F9CD, 134}, {CAT_So, 0x1FA60, 13}, {CAT_So, 0x1FA70, 4}, {CAT_So, 0x1FA78, 2}, {CAT_So, 0x1FA80, 6}, {CAT_So, 0x1FA90, 24}, {CAT_So, 0x1FAB0, 6}, {CAT_So, 0x1FAC0, 2}, {CAT_So, 0x1FAD0, 6}, {CAT_So, 0x1FB00, 146}, {CAT_So, 0x1FB94, 54}, {CAT_Nd, 0x1FBF0, 9}, {CAT_Lo, 0x20000, 42717}, {CAT_Lo, 0x2A700, 4148}, {CAT_Lo, 0x2B740, 221}, {CAT_Lo, 0x2B820, 5761}, {CAT_Lo, 0x2CEB0, 7472}, {CAT_Lo, 0x2F800, 541}, {CAT_Lo, 0x30000, 4938}, {CAT_Cf, 0xE0001, 0}, {CAT_Cf, 0xE0020, 95}, {CAT_Mn, 0xE0100, 239}, picolibc-1.7.4/newlib/libc/ctype/ctype.tex000066400000000000000000000123001414576234500205010ustar00rootroot00000000000000/* Copyright (c) 1989 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ @node Ctype @chapter Character Type Macros and Functions (@file{ctype.h}) This chapter groups macros (which are also available as subroutines) to classify characters into several categories (alphabetic, numeric, control characters, whitespace, and so on), or to perform simple character mappings. The header file @file{ctype.h} defines the macros. @menu * isalnum:: Alphanumeric character predicate (isalnum, isalnum_l) * isalpha:: Alphabetic character predicate (isalpha, isalpha_l) * isascii:: ASCII character predicate (isascii, isascii_l) * isblank:: Blank character predicate (isblank, isblank_l) * iscntrl:: Control character predicate (iscntrl, iscntrl_l) * isdigit:: Decimal digit predicate (isdigit, isdigit_l) * islower:: Lowercase character predicate (islower, islower_l) * isprint:: Printable character predicates (isprint, isprint_l. isgraph, isgraph_l) * ispunct:: Punctuation character predicate (ispunct, ispunct_l) * isspace:: Whitespace character predicate (isspace, isspace_l) * isupper:: Uppercase character predicate (isupper, isupper_l) * isxdigit:: Hexadecimal digit predicate (isxdigit, isxdigit_l) * toascii:: Force integers to ASCII range (toascii, toascii_l) * tolower:: Translate characters to lowercase (tolower, tolower_l) * toupper:: Translate characters to uppercase (toupper, toupper_l) * iswalnum:: Alphanumeric wide character predicate (iswalnum, iswalnum_l) * iswalpha:: Alphabetic wide character predicate (iswalpha, iswalpha_l) * iswblank:: Blank wide character predicate (iswblank, iswblank_l) * iswcntrl:: Control wide character predicate (iswcntrl, iswcntrl_l) * iswdigit:: Decimal digit wide character predicate (iswdigit, iswdigit_l) * iswgraph:: Graphic wide character predicate (iswgraph, iswgraph_l) * iswlower:: Lowercase wide character predicate (iswlower, iswlower_l) * iswprint:: Printable wide character predicate (iswprint, iswprint_l) * iswpunct:: Punctuation wide character predicate (iswpunct, iswpunct_l) * iswspace:: Whitespace wide character predicate (iswspace, iswspace_l) * iswupper:: Uppercase wide character predicate (iswupper, iswupper_l) * iswxdigit:: Hexadecimal digit wide character predicate (iswxdigit, iswxdigit_l) * iswctype:: Extensible wide-character test (iswctype, iswctype_l) * wctype:: Compute wide-character test type (wctype, wctype_l) * towlower:: Translate wide characters to lowercase (towlower, towlower_l) * towupper:: Translate wide characters to uppercase (towupper, towupper_l) * towctrans:: Extensible wide-character translation (towctrans, towctrans_l) * wctrans:: Compute wide-character translation type (wctrans, wctrans_l) @end menu @page @include ctype/isalnum.def @page @include ctype/isalpha.def @page @include ctype/isascii.def @page @include ctype/isblank.def @page @include ctype/iscntrl.def @page @include ctype/isdigit.def @page @include ctype/islower.def @page @include ctype/isprint.def @page @include ctype/ispunct.def @page @include ctype/isspace.def @page @include ctype/isupper.def @page @include ctype/isxdigit.def @page @include ctype/toascii.def @page @include ctype/tolower.def @page @include ctype/toupper.def @page @include ctype/iswalnum.def @page @include ctype/iswalpha.def @page @include ctype/iswcntrl.def @page @include ctype/iswblank.def @page @include ctype/iswdigit.def @page @include ctype/iswgraph.def @page @include ctype/iswlower.def @page @include ctype/iswprint.def @page @include ctype/iswpunct.def @page @include ctype/iswspace.def @page @include ctype/iswupper.def @page @include ctype/iswxdigit.def @page @include ctype/iswctype.def @page @include ctype/wctype.def @page @include ctype/towlower.def @page @include ctype/towupper.def @page @include ctype/towctrans.def @page @include ctype/wctrans.def picolibc-1.7.4/newlib/libc/ctype/ctype_.c000066400000000000000000000123261414576234500202720ustar00rootroot00000000000000/* * Copyright (c) 1989 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)ctype_.c 5.6 (Berkeley) 6/1/90"; #endif /* LIBC_SCCS and not lint */ #include "ctype_.h" #include "../locale/setlocale.h" #define _CTYPE_DATA_0_127 \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C|_S, _C|_S, _C|_S, _C|_S, _C|_S, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _S|_B, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _N, _N, _N, _N, _N, _N, _N, _N, \ _N, _N, _P, _P, _P, _P, _P, _P, \ _P, _U|_X, _U|_X, _U|_X, _U|_X, _U|_X, _U|_X, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _P, _P, _P, _P, _P, \ _P, _L|_X, _L|_X, _L|_X, _L|_X, _L|_X, _L|_X, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _P, _P, _P, _P, _C #define _CTYPE_DATA_128_255 \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0 #if defined(_MB_CAPABLE) #if defined(_MB_EXTENDED_CHARSETS_ISO) #include "ctype_iso.h" #endif #if defined(_MB_EXTENDED_CHARSETS_WINDOWS) #include "ctype_cp.h" #endif #endif #if defined(ALLOW_NEGATIVE_CTYPE_INDEX) /* No static const on Cygwin since it's referenced and potentially overwritten for compatibility with older applications. */ #ifndef __CYGWIN__ const #endif char _ctype_b[128 + 256] = { _CTYPE_DATA_128_255, _CTYPE_DATA_0_127, _CTYPE_DATA_128_255 }; # ifdef __CYGWIN__ /* For backward compatibility */ char __EXPORT *__ctype_ptr__ = DEFAULT_CTYPE_PTR; # ifdef __x86_64__ __asm__ (" \n\ .data \n\ .globl _ctype_ \n\ .set _ctype_,_ctype_b+127 \n\ .text \n\ "); # else __asm__ (" \n\ .data \n\ .globl __ctype_ \n\ .set __ctype_,__ctype_b+127 \n\ .text \n\ "); # endif # endif /* !__CYGWIN__ */ #else /* !ALLOW_NEGATIVE_CTYPE_INDEX */ const char _ctype_[1 + 256] = { 0, _CTYPE_DATA_0_127, _CTYPE_DATA_128_255 }; #endif /* !ALLOW_NEGATIVE_CTYPE_INDEX */ #if defined(_MB_CAPABLE) /* Cygwin has its own implementation which additionally maintains backward compatibility with applications built under older Cygwin releases. */ #ifndef __CYGWIN__ void __set_ctype (struct __locale_t *loc, const char *charset) { #if defined(_MB_EXTENDED_CHARSETS_ISO) || defined(_MB_EXTENDED_CHARSETS_WINDOWS) int idx; #endif const char *ctype_ptr = NULL; switch (*charset) { #if defined(_MB_EXTENDED_CHARSETS_ISO) case 'I': idx = __iso_8859_index (charset + 9); /* The ctype table has a leading ISO-8859-1 element so we have to add 1 to the index returned by __iso_8859_index. If __iso_8859_index returns < 0, it's ISO-8859-1. */ if (idx < 0) idx = 0; else ++idx; ctype_ptr = __ctype_iso[idx]; break; #endif #if defined(_MB_EXTENDED_CHARSETS_WINDOWS) case 'C': idx = __cp_index (charset + 2); if (idx < 0) break; ctype_ptr = __ctype_cp[idx]; break; #endif default: break; } if (!ctype_ptr) { # if defined(ALLOW_NEGATIVE_CTYPE_INDEX) ctype_ptr = _ctype_b; # else ctype_ptr = _ctype_; # endif } # if defined(ALLOW_NEGATIVE_CTYPE_INDEX) loc->ctype_ptr = ctype_ptr + 127; # else loc->ctype_ptr = ctype_ptr; # endif } #endif /* !__CYGWIN__ */ #endif /* _MB_CAPABLE */ picolibc-1.7.4/newlib/libc/ctype/ctype_.h000066400000000000000000000002031414576234500202660ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen */ #include # define DEFAULT_CTYPE_PTR ((char *) _ctype_) picolibc-1.7.4/newlib/libc/ctype/ctype_cp.h000066400000000000000000000533141414576234500206240ustar00rootroot00000000000000/* * Copyright (c) 2009 Corinna Vinschen */ /* ctype table definitions for Windows codepage charsets. Included by ctype_.c. */ #define _CTYPE_CP437_128_254 \ _U, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _U, _U, \ _U, _L, _U, _L, _L, _L, _L, _L, \ _L, _U, _U, _P, _P, _P, _P, _P, \ _L, _L, _L, _L, _L, _L, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _L, _L, _U, _L, _U, _L, _P, _L, \ _U, _U, _U, _L, _P, _L, _L, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P #define _CTYPE_CP437_255 _S|_B #define _CTYPE_CP720_128_254 \ 0, 0, _L, _L, 0, _L, 0, _L, \ _L, _L, _L, _L, _L, 0, 0, 0, \ 0, _P, _P, _L, _P, _P, _L, _L, \ _U|_L, _U|_L, _U|_L, _U|_L, _P, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _P, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P #define _CTYPE_CP720_255 _S|_B #define _CTYPE_CP737_128_254 \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _U, _U, _U, _U, _U, _U, \ _U, _P, _P, _P, _U, _U, _P, _P, \ _P, _P, _P, _P, _P, _P, _P #define _CTYPE_CP737_255 _S|_B #define _CTYPE_CP775_128_254 \ _U, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _U, _L, _L, _U, _U, _U, \ _U, _L, _U, _L, _L, _U, _P, _U, \ _L, _U, _U, _L, _P, _U, _P, _P, \ _U, _U, _L, _U, _L, _L, _P, _P, \ _P, _P, _P, _P, _P, _U, _P, _P, \ _P, _P, _P, _P, _P, _U, _U, _U, \ _U, _P, _P, _P, _P, _U, _U, _P, \ _P, _P, _P, _P, _P, _P, _U, _U, \ _P, _P, _P, _P, _P, _P, _P, _U, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _P, _P, _P, _P, _P, _P, _P, \ _U, _L, _U, _U, _L, _U, _P, _L, \ _U, _L, _U, _L, _L, _U, _U, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P #define _CTYPE_CP775_255 _S|_B #define _CTYPE_CP850_128_254 \ _U, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _U, _U, \ _U, _L, _U, _L, _L, _L, _L, _L, \ _L, _U, _U, _L, _P, _U, _P, _L, \ _L, _L, _L, _L, _L, _U, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _U, _U, _U, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _L, _U, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _L, _U, _U, _U, _U, _L, _U, _U, \ _U, _P, _P, _P, _P, _P, _U, _P, \ _U, _L, _U, _U, _L, _U, _P, _L, \ _U, _U, _U, _U, _L, _U, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P #define _CTYPE_CP850_255 _S|_B #define _CTYPE_CP852_128_254 \ _U, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _U, _L, _L, _U, _U, _U, \ _U, _U, _L, _L, _L, _U, _L, _U, \ _L, _U, _U, _U, _L, _U, _P, _L, \ _L, _L, _L, _L, _U, _L, _U, _L, \ _U, _L, _P, _L, _U, _L, _P, _P, \ _P, _P, _P, _P, _P, _U, _U, _U, \ _U, _P, _P, _P, _P, _U, _L, _P, \ _P, _P, _P, _P, _P, _P, _U, _L, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _L, _U, _U, _U, _L, _U, _U, _U, \ _L, _P, _P, _P, _P, _U, _U, _P, \ _U, _L, _U, _U, _L, _L, _U, _L, \ _U, _U, _L, _U, _L, _U, _L, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _L, _U, _L, _P #define _CTYPE_CP852_255 _S|_B #define _CTYPE_CP855_128_254 \ _L, _U, _L, _U, _L, _U, _L, _U, \ _L, _U, _L, _U, _L, _U, _L, _U, \ _L, _U, _L, _U, _L, _U, _L, _U, \ _L, _U, _L, _U, _L, _U, _L, _U, \ _L, _U, _L, _U, _L, _U, _L, _U, \ _L, _U, _L, _U, _L, _U, _P, _P, \ _P, _P, _P, _P, _P, _L, _U, _L, \ _U, _P, _P, _P, _P, _L, _U, _P, \ _P, _P, _P, _P, _P, _P, _L, _U, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _L, _U, _L, _U, _L, _U, _L, _U, \ _L, _P, _P, _P, _P, _U, _L, _P, \ _U, _L, _U, _L, _U, _L, _U, _L, \ _U, _L, _U, _L, _U, _L, _U, _P, \ _P, _L, _U, _L, _U, _L, _U, _L, \ _U, _L, _U, _L, _U, _P, _P #define _CTYPE_CP855_255 _S|_B #define _CTYPE_CP857_128_254 \ _U, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _U, _U, \ _U, _L, _U, _L, _L, _L, _L, _L, \ _U, _U, _U, _L, _P, _U, _U, _L, \ _L, _L, _L, _L, _L, _U, _U, _L, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _U, _U, _U, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _L, _U, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _U, _U, _U, 0, _U, _U, \ _U, _P, _P, _P, _P, _P, _U, _P, \ _U, _L, _U, _U, _L, _U, _P, 0, \ _P, _U, _U, _U, _L, _L, _P, _P, \ _P, _P, 0, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P #define _CTYPE_CP857_255 _S|_B #define _CTYPE_CP858_128_254 \ _U, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _U, _U, \ _U, _L, _U, _L, _L, _L, _L, _L, \ _L, _U, _U, _L, _P, _U, _P, _L, \ _L, _L, _L, _L, _L, _U, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _U, _U, _U, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _L, _U, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _L, _U, _U, _U, _U, _P, _U, _U, \ _U, _P, _P, _P, _P, _P, _U, _P, \ _U, _L, _U, _U, _L, _U, _P, _L, \ _U, _U, _U, _U, _L, _U, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P #define _CTYPE_CP858_255 _S|_B #define _CTYPE_CP862_128_254 \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _P, _P, _P, _P, _L, \ _L, _L, _L, _L, _L, _U, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _L, _L, _U, _L, _U, _L, _P, _L, \ _U, _U, _U, _L, _P, _L, _L, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P #define _CTYPE_CP862_255 _S|_B #define _CTYPE_CP866_128_254 \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _U, _L, _U, _L, _U, _L, _U, _L, \ _P, _P, _P, _P, _P, _P, _P #define _CTYPE_CP866_255 _S|_B #define _CTYPE_CP874_128_254 \ _P, 0, 0, 0, 0, _P, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, _P, _P, _P, _P, _P, _P, _P, \ 0, 0, 0, 0, 0, 0, 0, 0, \ _S|_B, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, 0, 0, 0, 0, _P, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _U|_L, _U|_L, 0, 0, 0 #define _CTYPE_CP874_255 0 #define _CTYPE_CP1125_128_254 \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _U, _L, _U, _L, _U, _L, _U, _L, \ _U, _L, _P, _P, _P, _P, _P #define _CTYPE_CP1125_255 _S|_B #define _CTYPE_CP1250_128_254 \ _P, 0, _P, 0, _P, _P, _P, _P, \ 0, _P, _U, _P, _U, _U, _U, _U, \ 0, _P, _P, _P, _P, _P, _P, _P, \ 0, _P, _L, _P, _L, _L, _L, _L, \ _S|_B, _P, _P, _U, _P, _U, _P, _P, \ _P, _P, _U, _P, _P, _P, _P, _U, \ _P, _P, _P, _L, _P, _P, _P, _P, \ _P, _L, _L, _P, _U, _P, _L, _L, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _P, \ _U, _U, _U, _U, _U, _U, _U, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _P, \ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_CP1250_255 _P #define _CTYPE_CP1251_128_254 \ _U, _U, _P, _L, _P, _P, _P, _P, \ _P, _P, _U, _P, _U, _U, _U, _U, \ _L, _P, _P, _P, _P, _P, _P, _P, \ 0, _P, _L, _P, _L, _L, _L, _L, \ _S|_B, _U, _L, _U, _P, _U, _P, _P, \ _U, _P, _U, _P, _P, _P, _P, _U, \ _P, _P, _U, _L, _L, _P, _P, _P, \ _L, _P, _L, _P, _L, _U, _L, _L, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_CP1251_255 _L #define _CTYPE_CP1252_128_254 \ _P, 0, _P, _L, _P, _P, _P, _P, \ _P, _P, _U, _P, _U, _U, 0, 0, \ 0, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _L, _P, _L, 0, _L, _U, \ _S|_B, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _P, \ _U, _U, _U, _U, _U, _U, _U, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _P, \ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_CP1252_255 _L #define _CTYPE_CP1253_128_254 \ _P, 0, _P, _L, _P, _P, _P, _P, \ 0, _P, 0, _P, 0, 0, 0, 0, \ 0, _P, _P, _P, _P, _P, _P, _P, \ 0, _P, 0, _P, 0, 0, 0, 0, \ _S|_B, _P, _U, _P, _P, _P, _P, _P, \ _P, _P, 0, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _U, _U, _U, _P, _U, _P, _U, _U, \ _L, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_CP1253_255 _L #define _CTYPE_CP1254_128_254 \ _P, 0, _P, _L, _P, _P, _P, _P, \ _P, _P, _U, _P, _U, 0, 0, 0, \ 0, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _L, _P, _L, 0, 0, _U, \ _S|_B, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _P, \ _U, _U, _U, _U, _U, _U, _U, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _P, \ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_CP1254_255 _L #define _CTYPE_CP1255_128_254 \ _P, 0, _P, _L, _P, _P, _P, _P, \ _P, _P, 0, _P, 0, 0, 0, 0, \ 0, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, 0, _P, 0, 0, 0, 0, \ _S|_B, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _U|_L, _U|_L, _U|_L, _P, \ _P, 0, 0, 0, 0, 0, 0, 0, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, 0, 0, _P, _P #define _CTYPE_CP1255_255 0 #define _CTYPE_CP1256_128_254 \ _P, _U|_L, _P, _L, _P, _P, _P, _P, \ _P, _P, _U|_L, _P, _U, _U|_L, _U|_L, _U|_L, \ _U|_L, _P, _P, _P, _P, _P, _P, _P, \ _U|_L, _P, _U|_L, _P, _L, _P, _P, _U|_L, \ _S|_B, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _U|_L, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _P, \ _U|_L, _U|_L, _U|_L, _U|_L, _P, _U|_L, _U|_L, _U|_L, \ _L, _U|_L, _L, _U|_L, _U|_L, _U|_L, _U|_L, _L, \ _L, _L, _L, _L, _U|_L, _U|_L, _L, _L, \ _P, _P, _P, _P, _L, _P, _P, _P, \ _P, _L, _P, _L, _L, _P, _P #define _CTYPE_CP1256_255 _U|_L #define _CTYPE_CP1257_128_254 \ _P, 0, _P, 0, _P, _P, _P, _P, \ 0, _P, 0, _P, 0, _P, _P, _P, \ 0, _P, _P, _P, _P, _P, _P, _P, \ 0, _P, 0, _P, 0, _P, _P, 0, \ _S|_B, 0, _P, _P, _P, 0, _P, _P, \ _U, _P, _U, _P, _P, _P, _P, _U, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _L, _P, _L, _P, _P, _P, _P, _L, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _P, \ _U, _U, _U, _U, _U, _U, _U, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _P, \ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_CP1257_255 _P #define _CTYPE_CP1258_128_254 \ _P, 0, _P, _L, _P, _P, _P, _P, \ _P, _P, 0, _P, _U, 0, 0, 0, \ 0, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, 0, _P, _L, 0, 0, _U, \ _S|_B, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _P, _U, _U, _U, \ _U, _U, _P, _U, _U, _U, _U, _P, \ _U, _U, _U, _U, _U, _U, _P, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _P, _L, _L, _L, \ _L, _L, _P, _L, _L, _L, _L, _P, \ _L, _L, _L, _L, _L, _L, _P #define _CTYPE_CP1258_255 _L #define _CTYPE_CP20866_128_254 \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _S|_B, _P, _P, _P, _P, _P, \ _P, _P, _P, _L, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _U, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U #define _CTYPE_CP20866_255 _U #define _CTYPE_CP21866_128_254 \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _S|_B, _P, _P, _P, _P, _P, \ _P, _P, _P, _L, _L, _P, _L, _L, \ _P, _P, _P, _P, _P, _L, _P, _P, \ _P, _P, _P, _U, _U, _P, _U, _U, \ _P, _P, _P, _P, _P, _U, _P, _P, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U #define _CTYPE_CP21866_255 _U #define _CTYPE_GEORGIAN_PS_128_254 \ _P, 0, _P, _L, _P, _P, _P, _P, \ _P, _P, _U, _P, _U, _U, 0, 0, \ 0, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _L, _P, _L, 0, _L, _U, \ _S|_B, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _P, \ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_GEORGIAN_PS_255 _L #define _CTYPE_PT154_128_254 \ _U, _U, _U, _L, _P, _P, _U, _U, \ _U, _L, _U, _U, _U, _U, _U, _U, \ _L, _P, _P, _P, _P, _P, _P, _P, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _S|_B, _U, _L, _U, _U, _U, _U, _P, \ _U, _P, _U, _P, _P, _L, _P, _U, \ _P, _L, _U, _L, _L, _L, _P, _P, \ _L, _P, _L, _P, _L, _U, _L, _L, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_PT154_255 _L #if defined(ALLOW_NEGATIVE_CTYPE_INDEX) #ifndef __CYGWIN__ static const #endif char __ctype_cp[26][128 + 256] = { { _CTYPE_CP437_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_CP437_128_254, _CTYPE_CP437_255 }, { _CTYPE_CP720_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_CP720_128_254, _CTYPE_CP720_255 }, { _CTYPE_CP737_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_CP737_128_254, _CTYPE_CP737_255 }, { _CTYPE_CP775_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_CP775_128_254, _CTYPE_CP775_255 }, { _CTYPE_CP850_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_CP850_128_254, _CTYPE_CP850_255 }, { _CTYPE_CP852_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_CP852_128_254, _CTYPE_CP852_255 }, { _CTYPE_CP855_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_CP855_128_254, _CTYPE_CP855_255 }, { _CTYPE_CP857_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_CP857_128_254, _CTYPE_CP857_255 }, { _CTYPE_CP858_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_CP858_128_254, _CTYPE_CP858_255 }, { _CTYPE_CP862_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_CP862_128_254, _CTYPE_CP862_255 }, { _CTYPE_CP866_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_CP866_128_254, _CTYPE_CP866_255 }, { _CTYPE_CP874_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_CP874_128_254, _CTYPE_CP874_255 }, { _CTYPE_CP1125_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_CP1125_128_254, _CTYPE_CP1125_255 }, { _CTYPE_CP1250_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_CP1250_128_254, _CTYPE_CP1250_255 }, { _CTYPE_CP1251_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_CP1251_128_254, _CTYPE_CP1251_255 }, { _CTYPE_CP1252_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_CP1252_128_254, _CTYPE_CP1252_255 }, { _CTYPE_CP1253_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_CP1253_128_254, _CTYPE_CP1253_255 }, { _CTYPE_CP1254_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_CP1254_128_254, _CTYPE_CP1254_255 }, { _CTYPE_CP1255_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_CP1255_128_254, _CTYPE_CP1255_255 }, { _CTYPE_CP1256_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_CP1256_128_254, _CTYPE_CP1256_255 }, { _CTYPE_CP1257_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_CP1257_128_254, _CTYPE_CP1257_255 }, { _CTYPE_CP1258_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_CP1258_128_254, _CTYPE_CP1258_255 }, { _CTYPE_CP20866_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_CP20866_128_254, _CTYPE_CP20866_255 }, { _CTYPE_CP21866_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_CP21866_128_254, _CTYPE_CP21866_255 }, { _CTYPE_GEORGIAN_PS_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_GEORGIAN_PS_128_254, _CTYPE_GEORGIAN_PS_255 }, { _CTYPE_PT154_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_PT154_128_254, _CTYPE_PT154_255 }, }; #else /* !defined(ALLOW_NEGATIVE_CTYPE_INDEX) */ static const char __ctype_cp[26][1 + 256] = { { 0, _CTYPE_DATA_0_127, _CTYPE_CP437_128_254, _CTYPE_CP437_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_CP720_128_254, _CTYPE_CP720_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_CP737_128_254, _CTYPE_CP737_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_CP775_128_254, _CTYPE_CP775_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_CP850_128_254, _CTYPE_CP850_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_CP852_128_254, _CTYPE_CP852_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_CP855_128_254, _CTYPE_CP855_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_CP857_128_254, _CTYPE_CP857_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_CP858_128_254, _CTYPE_CP858_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_CP862_128_254, _CTYPE_CP862_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_CP866_128_254, _CTYPE_CP866_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_CP874_128_254, _CTYPE_CP874_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_CP1125_128_254, _CTYPE_CP1125_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_CP1250_128_254, _CTYPE_CP1250_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_CP1251_128_254, _CTYPE_CP1251_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_CP1252_128_254, _CTYPE_CP1252_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_CP1253_128_254, _CTYPE_CP1253_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_CP1254_128_254, _CTYPE_CP1254_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_CP1255_128_254, _CTYPE_CP1255_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_CP1256_128_254, _CTYPE_CP1256_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_CP1257_128_254, _CTYPE_CP1257_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_CP1258_128_254, _CTYPE_CP1258_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_CP20866_128_254, _CTYPE_CP20866_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_CP21866_128_254, _CTYPE_CP21866_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_GEORGIAN_PS_128_254, _CTYPE_GEORGIAN_PS_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_PT154_128_254, _CTYPE_PT154_255 }, }; #endif /* ALLOW_NEGATIVE_CTYPE_INDEX */ picolibc-1.7.4/newlib/libc/ctype/ctype_iso.h000066400000000000000000000413361414576234500210150ustar00rootroot00000000000000/* * Copyright (c) 2009 Corinna Vinschen */ /* ctype table definitions for ISO-8859-x charsets. Included by ctype_.c. */ #define _CTYPE_ISO_8859_1_128_254 \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _S|_B, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _P, \ _U, _U, _U, _U, _U, _U, _U, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _P, \ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_ISO_8859_1_255 _L #define _CTYPE_ISO_8859_2_128_254 \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _S|_B, _U, _P, _U, _P, _U, _U, _P, \ _P, _U, _U, _U, _U, _P, _U, _U, \ _P, _L, _P, _L, _P, _L, _L, _P, \ _P, _L, _L, _L, _L, _P, _L, _L, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _P, \ _U, _U, _U, _U, _U, _U, _U, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _P, \ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_ISO_8859_2_255 _P #define _CTYPE_ISO_8859_3_128_254 \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _S|_B, _U, _P, _P, _P, 0, _U, _P, \ _P, _U, _U, _U, _U, _P, 0, _U, \ _P, _L, _P, _P, _P, _P, _L, _P, \ _P, _L, _L, _L, _L, _P, 0, _L, \ _U, _U, _U, 0, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ 0, _U, _U, _U, _U, _U, _U, _P, \ _U, _U, _U, _U, _U, _U, _U, _L, \ _L, _L, _L, 0, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ 0, _L, _L, _L, _L, _L, _L, _P, \ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_ISO_8859_3_255 _P #define _CTYPE_ISO_8859_4_128_254 \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _S|_B, _U, _L, _U, _P, _U, _U, _P, \ _P, _U, _U, _U, _U, _P, _U, _P, \ _P, _L, _P, _L, _P, _L, _L, _P, \ _P, _L, _L, _L, _L, _P, _L, _L, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _P, \ _U, _U, _U, _U, _U, _U, _U, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _P, \ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_ISO_8859_4_255 _L #define _CTYPE_ISO_8859_5_128_254 \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _S|_B, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _P, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _P, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _P, _L #define _CTYPE_ISO_8859_5_255 _L #define _CTYPE_ISO_8859_6_128_254 \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _S|_B, 0, 0, 0, _P, 0, 0, 0, \ 0, 0, 0, 0, _P, _P, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, _P, 0, 0, 0, _P, \ 0, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, 0, 0, 0, 0, 0, \ _P, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _P, _P, _P, _P, _P, \ _P, _P, _P, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0 #define _CTYPE_ISO_8859_6_255 0 #define _CTYPE_ISO_8859_7_128_254 \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _S|_B, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, 0, _P, \ _P, _P, _P, _P, _P, _P, _U, _P, \ _U, _U, _U, _P, _U, _P, _U, _U, \ _L, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_ISO_8859_7_255 0 #define _CTYPE_ISO_8859_8_128_254 \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _S|_B, 0, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, _P, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, 0, 0, _P, _P #define _CTYPE_ISO_8859_8_255 0 #define _CTYPE_ISO_8859_9_128_254 \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _S|_B, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _P, \ _U, _U, _U, _U, _U, _U, _U, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _P, \ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_ISO_8859_9_255 _L #define _CTYPE_ISO_8859_10_128_254 \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _S|_B, _U, _U, _U, _U, _U, _U, _P, \ _U, _U, _U, _U, _U, _P, _U, _U, \ _P, _L, _L, _L, _L, _L, _L, _P, \ _L, _L, _L, _L, _L, _P, _L, _L, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_ISO_8859_10_255 _L #define _CTYPE_ISO_8859_11_128_254 \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _S|_B, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _P, _U|_L, _U|_L, _P, _P, _P, _P, \ _P, _P, _P, 0, 0, 0, 0, _P, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _P, \ _P, _P, _P, _P, _P, _P, _P, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, 0, 0, 0 #define _CTYPE_ISO_8859_11_255 0 #define _CTYPE_ISO_8859_13_128_254 \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _S|_B, _P, _P, _P, _P, _P, _P, _P, \ _U, _P, _U, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _L, _P, _L, _P, _P, _P, _P, _P, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _P, \ _U, _U, _U, _U, _U, _U, _U, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _P, \ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_ISO_8859_13_255 _P #define _CTYPE_ISO_8859_14_128_254 \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _S|_B, _U, _L, _P, _U, _L, _U, _P, \ _U, _P, _U, _L, _U, _P, _P, _U, \ _U, _L, _U, _L, _U, _L, _P, _U, \ _L, _L, _L, _U, _L, _U, _L, _L, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_ISO_8859_14_255 _L #define _CTYPE_ISO_8859_15_128_254 \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _S|_B, _P, _P, _P, _P, _P, _U, _P, \ _L, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _U, _P, _P, _P, \ _L, _P, _P, _P, _U, _L, _U, _P, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _P, \ _U, _U, _U, _U, _U, _U, _U, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _P, \ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_ISO_8859_15_255 _L #define _CTYPE_ISO_8859_16_128_254 \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _S|_B, _U, _L, _U, _P, _P, _U, _P, \ _L, _P, _U, _P, _U, _P, _L, _U, \ _P, _P, _U, _U, _U, _P, _P, _P, \ _L, _L, _L, _P, _U, _L, _U, _L, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_ISO_8859_16_255 _L extern int __iso_8859_index (const char *charset_ext); #if defined(ALLOW_NEGATIVE_CTYPE_INDEX) #ifndef __CYGWIN__ static const #endif char __ctype_iso[15][128 + 256] = { { _CTYPE_ISO_8859_1_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_1_128_254, _CTYPE_ISO_8859_1_255 }, { _CTYPE_ISO_8859_2_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_2_128_254, _CTYPE_ISO_8859_2_255 }, { _CTYPE_ISO_8859_3_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_3_128_254, _CTYPE_ISO_8859_3_255 }, { _CTYPE_ISO_8859_4_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_4_128_254, _CTYPE_ISO_8859_4_255 }, { _CTYPE_ISO_8859_5_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_5_128_254, _CTYPE_ISO_8859_5_255 }, { _CTYPE_ISO_8859_6_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_6_128_254, _CTYPE_ISO_8859_6_255 }, { _CTYPE_ISO_8859_7_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_7_128_254, _CTYPE_ISO_8859_7_255 }, { _CTYPE_ISO_8859_8_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_8_128_254, _CTYPE_ISO_8859_8_255 }, { _CTYPE_ISO_8859_9_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_9_128_254, _CTYPE_ISO_8859_9_255 }, { _CTYPE_ISO_8859_10_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_10_128_254, _CTYPE_ISO_8859_10_255 }, { _CTYPE_ISO_8859_11_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_11_128_254, _CTYPE_ISO_8859_11_255 }, { _CTYPE_ISO_8859_13_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_13_128_254, _CTYPE_ISO_8859_13_255 }, { _CTYPE_ISO_8859_14_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_14_128_254, _CTYPE_ISO_8859_14_255 }, { _CTYPE_ISO_8859_15_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_15_128_254, _CTYPE_ISO_8859_15_255 }, { _CTYPE_ISO_8859_16_128_254, 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_16_128_254, _CTYPE_ISO_8859_16_255 }, }; #else /* !defined(ALLOW_NEGATIVE_CTYPE_INDEX) */ static const char __ctype_iso[15][1 + 256] = { { 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_1_128_254, _CTYPE_ISO_8859_1_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_2_128_254, _CTYPE_ISO_8859_2_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_3_128_254, _CTYPE_ISO_8859_3_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_4_128_254, _CTYPE_ISO_8859_4_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_5_128_254, _CTYPE_ISO_8859_5_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_6_128_254, _CTYPE_ISO_8859_6_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_7_128_254, _CTYPE_ISO_8859_7_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_8_128_254, _CTYPE_ISO_8859_8_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_9_128_254, _CTYPE_ISO_8859_9_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_10_128_254, _CTYPE_ISO_8859_10_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_11_128_254, _CTYPE_ISO_8859_11_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_13_128_254, _CTYPE_ISO_8859_13_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_14_128_254, _CTYPE_ISO_8859_14_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_15_128_254, _CTYPE_ISO_8859_15_255 }, { 0, _CTYPE_DATA_0_127, _CTYPE_ISO_8859_16_128_254, _CTYPE_ISO_8859_16_255 }, }; #endif /* ALLOW_NEGATIVE_CTYPE_INDEX */ picolibc-1.7.4/newlib/libc/ctype/isalnum.c000066400000000000000000000051771414576234500204650ustar00rootroot00000000000000/* Copyright (c) 1989 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---alphanumeric character predicate INDEX isalnum INDEX isalnum_l SYNOPSIS #include int isalnum(int <[c]>); #include int isalnum_l(int <[c]>, locale_t <[locale]>); DESCRIPTION <> is a macro which classifies singlebyte charset values by table lookup. It is a predicate returning non-zero for alphabetic or numeric ASCII characters, and <<0>> for other arguments. It is defined only if <[c]> is representable as an unsigned char or if <[c]> is EOF. <> is like <> but performs the check based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. You can use a compiled subroutine instead of the macro definition by undefining the macro using `<<#undef isalnum>>' or `<<#undef isalnum_l>>'. RETURNS <>,<> return non-zero if <[c]> is a letter or a digit. PORTABILITY <> is ANSI C. <> is POSIX-1.2008. No OS subroutines are required. */ #include <_ansi.h> #include #undef isalnum int isalnum (int c) { return(__CTYPE_PTR[c+1] & (_U|_L|_N)); } picolibc-1.7.4/newlib/libc/ctype/isalnum_l.c000066400000000000000000000005131414576234500207650ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #undef isalnum_l int isalnum_l (int c, struct __locale_t *locale) { return __locale_ctype_ptr_l (locale)[c+1] & (_U|_L|_N); } picolibc-1.7.4/newlib/libc/ctype/isalpha.c000066400000000000000000000051641414576234500204320ustar00rootroot00000000000000/* Copyright (c) 1989 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---alphabetic character predicate INDEX isalpha INDEX isalpha_l SYNOPSIS #include int isalpha(int <[c]>); #include int isalpha_l(int <[c]>, locale_t <[locale]>); DESCRIPTION <> is a macro which classifies singlebyte charset values by table lookup. It is a predicate returning non-zero when <[c]> represents an alphabetic ASCII character, and 0 otherwise. It is defined only if <[c]> is representable as an unsigned char or if <[c]> is EOF. <> is like <> but performs the check based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. You can use a compiled subroutine instead of the macro definition by undefining the macro using `<<#undef isalpha>>' or `<<#undef isalpha_l>>'. RETURNS <>, <> return non-zero if <[c]> is a letter. PORTABILITY <> is ANSI C. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #include <_ansi.h> #include #undef isalpha int isalpha (int c) { return(__CTYPE_PTR[c+1] & (_U|_L)); } picolibc-1.7.4/newlib/libc/ctype/isalpha_l.c000066400000000000000000000005101414576234500207330ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #undef isalpha_l int isalpha_l (int c, struct __locale_t *locale) { return __locale_ctype_ptr_l (locale)[c+1] & (_U|_L); } picolibc-1.7.4/newlib/libc/ctype/isascii.c000066400000000000000000000050251414576234500204310ustar00rootroot00000000000000/* Copyright (c) 1989 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---ASCII character predicate INDEX isascii INDEX isascii_l SYNOPSIS #include int isascii(int <[c]>); #include int isascii_l(int <[c]>, locale_t <[locale]>); DESCRIPTION <> is a macro which returns non-zero when <[c]> is an ASCII character, and 0 otherwise. It is defined for all integer values. <> is like <> but performs the check based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. You can use a compiled subroutine instead of the macro definition by undefining the macro using `<<#undef isascii>>' or `<<#undef isascii_l>>'. RETURNS <>, <> return non-zero if the low order byte of <[c]> is in the range 0 to 127 (<<0x00>>--<<0x7F>>). PORTABILITY <> is ANSI C. <> is a GNU extension. No supporting OS subroutines are required. */ #include <_ansi.h> #include #undef isascii int isascii (int c) { return c >= 0 && c< 128; } picolibc-1.7.4/newlib/libc/ctype/isascii_l.c000066400000000000000000000004761414576234500207510ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #undef isascii_l int isascii_l (int c, struct __locale_t *locale) { (void) locale; return c >= 0 && c < 128; } picolibc-1.7.4/newlib/libc/ctype/isblank.c000066400000000000000000000021011414576234500204200ustar00rootroot00000000000000/* Copyright (c) 2002 Thomas Fitzsimmons */ /* FUNCTION <>, <>---blank character predicate INDEX isblank INDEX isblank_l SYNOPSIS #include int isblank(int <[c]>); #include int isblank_l(int <[c]>, locale_t <[locale]>); DESCRIPTION <> is a function which classifies singlebyte charset values by table lookup. It is a predicate returning non-zero for blank characters, and 0 for other characters. It is defined only if <[c]> is representable as an unsigned char or if <[c]> is EOF. <> is like <> but performs the check based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS <>, <> return non-zero if <[c]> is a blank character. PORTABILITY <> is C99. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #define _DEFINING_ISBLANK #include <_ansi.h> #include int isblank (int c) { return c == ' ' || c == '\t'; } picolibc-1.7.4/newlib/libc/ctype/isblank_l.c000066400000000000000000000005241414576234500207420ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #undef isblank_l int isblank_l (int c, struct __locale_t *locale) { return (__locale_ctype_ptr_l (locale)[c+1] & _B) || (c == '\t'); } picolibc-1.7.4/newlib/libc/ctype/iscntrl.c000066400000000000000000000052051414576234500204630ustar00rootroot00000000000000/* Copyright (c) 1989 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---control character predicate INDEX iscntrl INDEX iscntrl_l SYNOPSIS #include int iscntrl(int <[c]>); #include int iscntrl_l(int <[c]>, locale_t <[locale]>); DESCRIPTION <> is a macro which classifies singlebyte charset values by table lookup. It is a predicate returning non-zero for control characters, and 0 for other characters. It is defined only if <[c]> is representable as an unsigned char or if <[c]> is EOF. <> is like <> but performs the check based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. You can use a compiled subroutine instead of the macro definition by undefining the macro using `<<#undef iscntrl>>' or `<<#undef iscntrl_l>>'. RETURNS <>, <> return non-zero if <[c]> is a delete character or ordinary control character. PORTABILITY <> is ANSI C. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #include <_ansi.h> #include #undef iscntrl int iscntrl (int c) { return(__CTYPE_PTR[c+1] & _C); } picolibc-1.7.4/newlib/libc/ctype/iscntrl_l.c000066400000000000000000000005031414576234500207720ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #undef iscntrl_l int iscntrl_l (int c, struct __locale_t *locale) { return __locale_ctype_ptr_l (locale)[c+1] & _C; } picolibc-1.7.4/newlib/libc/ctype/isdigit.c000066400000000000000000000051511414576234500204410ustar00rootroot00000000000000/* Copyright (c) 1989 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---decimal digit predicate INDEX isdigit INDEX isdigit_l SYNOPSIS #include int isdigit(int <[c]>); #include int isdigit_l(int <[c]>, locale_t <[locale]>); DESCRIPTION <> is a macro which classifies singlebyte charset values by table lookup. It is a predicate returning non-zero for decimal digits, and 0 for other characters. It is defined only if <[c]> is representable as an unsigned char or if <[c]> is EOF. <> is like <> but performs the check based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. You can use a compiled subroutine instead of the macro definition by undefining the macro using `<<#undef isdigit>>' or `<<#undef isdigit_l>>'. RETURNS <>, <> return non-zero if <[c]> is a decimal digit (<<0>>--<<9>>). PORTABILITY <> is ANSI C. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #include <_ansi.h> #include #undef isdigit int isdigit (int c) { return(__CTYPE_PTR[c+1] & _N); } picolibc-1.7.4/newlib/libc/ctype/isdigit_l.c000066400000000000000000000005031414576234500207500ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #undef isdigit_l int isdigit_l (int c, struct __locale_t *locale) { return __locale_ctype_ptr_l (locale)[c+1] & _N; } picolibc-1.7.4/newlib/libc/ctype/islower.c000066400000000000000000000052141414576234500204710ustar00rootroot00000000000000/* Copyright (c) 1989 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---lowercase character predicate INDEX islower INDEX islower_l SYNOPSIS #include int islower(int <[c]>); #include int islower_l(int <[c]>, locale_t <[locale]>); DESCRIPTION <> is a macro which classifies singlebyte charset values by table lookup. It is a predicate returning non-zero for minuscules (lowercase alphabetic characters), and 0 for other characters. It is defined only if <[c]> is representable as an unsigned char or if <[c]> is EOF. <> is like <> but performs the check based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. You can use a compiled subroutine instead of the macro definition by undefining the macro using `<<#undef islower>>' or `<<#undef islower_l>>'. RETURNS <>, <> return non-zero if <[c]> is a lowercase letter. PORTABILITY <> is ANSI C. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #include <_ansi.h> #include #undef islower int islower (int c) { return ((__CTYPE_PTR[c+1] & (_U|_L)) == _L); } picolibc-1.7.4/newlib/libc/ctype/islower_l.c000066400000000000000000000005201414576234500207770ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #undef islower_l int islower_l (int c, struct __locale_t *locale) { return (__locale_ctype_ptr_l (locale)[c+1] & (_U|_L)) == _L; } picolibc-1.7.4/newlib/libc/ctype/isprint.c000066400000000000000000000061301414576234500204730ustar00rootroot00000000000000/* Copyright (c) 1989 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>, <>, <>---printable character predicates INDEX isprint INDEX isgraph INDEX isprint_l INDEX isgraph_l SYNOPSIS #include int isprint(int <[c]>); int isgraph(int <[c]>); #include int isprint_l(int <[c]>, locale_t <[locale]>); int isgraph_l(int <[c]>, locale_t <[locale]>); DESCRIPTION <> is a macro which classifies singlebyte charset values by table lookup. It is a predicate returning non-zero for printable characters, and 0 for other character arguments. It is defined only if <[c]> is representable as an unsigned char or if <[c]> is EOF. <> behaves identically to <>, except that space characters are excluded. <>, <> are like <>, <> but perform the check based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. You can use a compiled subroutine instead of the macro definition by undefining either macro using `<<#undef isprint>>' or `<<#undef isgraph>>', or `<<#undef isprint_l>>' or `<<#undef isgraph_l>>'. RETURNS <>, <> return non-zero if <[c]> is a printing character. <>, <> return non-zero if <[c]> is a printing character except spaces. PORTABILITY <> and <> are ANSI C. No supporting OS subroutines are required. */ #include <_ansi.h> #include #undef isgraph int isgraph (int c) { return(__CTYPE_PTR[c+1] & (_P|_U|_L|_N)); } #undef isprint int isprint (int c) { return(__CTYPE_PTR[c+1] & (_P|_U|_L|_N|_B)); } picolibc-1.7.4/newlib/libc/ctype/isprint_l.c000066400000000000000000000007261414576234500210130ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #undef isgraph_l int isgraph_l (int c, struct __locale_t *locale) { return __locale_ctype_ptr_l (locale)[c+1] & (_P|_U|_L|_N); } #undef isprint_l int isprint_l (int c, struct __locale_t *locale) { return __locale_ctype_ptr_l (locale)[c+1] & (_P|_U|_L|_N|_B); } picolibc-1.7.4/newlib/libc/ctype/ispunct.c000066400000000000000000000052061414576234500204730ustar00rootroot00000000000000/* Copyright (c) 1989 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---punctuation character predicate INDEX ispunct INDEX ispunct_l SYNOPSIS #include int ispunct(int <[c]>); #include int ispunct_l(int <[c]>, locale_t <[locale]>); DESCRIPTION <> is a macro which classifies singlebyte charset values by table lookup. It is a predicate returning non-zero for printable punctuation characters, and 0 for other characters. It is defined only if <[c]> is representable as an unsigned char or if <[c]> is EOF. <> is like <> but performs the check based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. You can use a compiled subroutine instead of the macro definition by undefining the macro using `<<#undef ispunct>>' or `<<#undef ispunct_l>>'. RETURNS <>, <> return non-zero if <[c]> is a printable punctuation character. PORTABILITY <> is ANSI C. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #include <_ansi.h> #include #undef ispunct int ispunct (int c) { return(__CTYPE_PTR[c+1] & _P); } picolibc-1.7.4/newlib/libc/ctype/ispunct_l.c000066400000000000000000000005041414576234500210020ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #undef ispunct_l int ispunct_l (int c, struct __locale_t *locale) { return __locale_ctype_ptr_l (locale)[c+1] & _P; } picolibc-1.7.4/newlib/libc/ctype/isspace.c000066400000000000000000000053441414576234500204400ustar00rootroot00000000000000/* Copyright (c) 1989 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---whitespace character predicate INDEX isspace INDEX isspace_l SYNOPSIS #include int isspace(int <[c]>); #include int isspace_l(int <[c]>, locale_t <[locale]>); DESCRIPTION <> is a macro which classifies singlebyte charset values by table lookup. It is a predicate returning non-zero for whitespace characters, and 0 for other characters. It is defined only when <>(<[c]>) is true or <[c]> is EOF. <> is like <> but performs the check based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. You can use a compiled subroutine instead of the macro definition by undefining the macro using `<<#undef isspace>>' or `<<#undef isspace_l>>'. RETURNS <>, <> return non-zero if <[c]> is a space, tab, carriage return, new line, vertical tab, or formfeed (<<0x09>>--<<0x0D>>, <<0x20>>), or one of the other space characters in non-ASCII charsets. PORTABILITY <> is ANSI C. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #include <_ansi.h> #include #undef isspace int isspace (int c) { return(__CTYPE_PTR[c+1] & _S); } picolibc-1.7.4/newlib/libc/ctype/isspace_l.c000066400000000000000000000005041414576234500207440ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #undef isspace_l int isspace_l (int c, struct __locale_t *locale) { return __locale_ctype_ptr_l (locale)[c+1] & _S; } picolibc-1.7.4/newlib/libc/ctype/isupper.c000066400000000000000000000050541414576234500204760ustar00rootroot00000000000000/* Copyright (c) 1989 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---uppercase character predicate INDEX isupper INDEX isupper_l SYNOPSIS #include int isupper(int <[c]>); #include int isupper_l(int <[c]>, locale_t <[locale]>); DESCRIPTION <> is a macro which classifies singlebyte charset values by table lookup. It is a predicate returning non-zero for uppercase letters (<>--<>), and 0 for other characters. <> is like <> but performs the check based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. You can use a compiled subroutine instead of the macro definition by undefining the macro using `<<#undef isupper>>' or `<<#undef isupper_l>>'. RETURNS <>, <> return non-zero if <[c]> is an uppercase letter. PORTABILITY <> is ANSI C. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #include <_ansi.h> #include #undef isupper int isupper (int c) { return ((__CTYPE_PTR[c+1] & (_U|_L)) == _U); } picolibc-1.7.4/newlib/libc/ctype/isupper_l.c000066400000000000000000000005211414576234500210030ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #undef isupper_l int isupper_l (int c, struct __locale_t *locale) { return (__locale_ctype_ptr_l (locale)[c+1] & (_U|_L)) == _U; } picolibc-1.7.4/newlib/libc/ctype/iswalnum.c000066400000000000000000000045421414576234500206470ustar00rootroot00000000000000/* Copyright (c) 2002 Red Hat Incorporated. All rights reserved. Modified (m) 2017 Thomas Wolff to refer to generated Unicode data tables. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of Red Hat Incorporated may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---alphanumeric wide character test INDEX iswalnum INDEX iswalnum_l SYNOPSIS #include int iswalnum(wint_t <[c]>); #include int iswalnum_l(wint_t <[c]>, locale_t <[locale]>); DESCRIPTION <> is a function which classifies wide-character values that are alphanumeric. <> is like <> but performs the check based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS <>, <> return non-zero if <[c]> is a alphanumeric wide character. PORTABILITY <> is C99. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include int iswalnum (wint_t c) { return iswalnum_l (c, 0); } picolibc-1.7.4/newlib/libc/ctype/iswalnum_l.c000066400000000000000000000014361414576234500211610ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ /* Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #include <_ansi.h> #include #include #include "local.h" #include "categories.h" int iswalnum_l (wint_t c, struct __locale_t *locale) { (void) locale; #ifdef _MB_CAPABLE //return iswalpha (c) || iswdigit (c); c = _jp2uc_l (c, locale); enum category cat = category (c); return cat == CAT_LC || cat == CAT_Lu || cat == CAT_Ll || cat == CAT_Lt || cat == CAT_Lm || cat == CAT_Lo || cat == CAT_Nl // Letter_Number || cat == CAT_Nd // Decimal_Number ; #else return c < (wint_t)0x100 ? isalnum (c) : 0; #endif /* _MB_CAPABLE */ } picolibc-1.7.4/newlib/libc/ctype/iswalpha.c000066400000000000000000000046611414576234500206220ustar00rootroot00000000000000/* Copyright (c) 2002 Red Hat Incorporated. All rights reserved. Modified (m) 2017 Thomas Wolff to refer to generated Unicode data tables. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of Red Hat Incorporated may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---alphabetic wide character test INDEX iswalpha INDEX iswalpha_l SYNOPSIS #include int iswalpha(wint_t <[c]>); #include int iswalpha_l(wint_t <[c]>, locale_t <[locale]>); DESCRIPTION <> is a function which classifies wide-character values that are alphabetic. <> is like <> but performs the check based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS <>, <> return non-zero if <[c]> is an alphabetic wide character. PORTABILITY <> is C99. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include int iswalpha (wint_t c) { return iswalpha_l (c, 0); } picolibc-1.7.4/newlib/libc/ctype/iswalpha_l.c000066400000000000000000000013141414576234500211250ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ /* Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #include <_ansi.h> #include #include #include "local.h" #include "categories.h" int iswalpha_l (wint_t c, struct __locale_t *locale) { (void) locale; #ifdef _MB_CAPABLE c = _jp2uc_l (c, locale); enum category cat = category (c); return cat == CAT_LC || cat == CAT_Lu || cat == CAT_Ll || cat == CAT_Lt || cat == CAT_Lm || cat == CAT_Lo || cat == CAT_Nl // Letter_Number ; #else return c < (wint_t)0x100 ? isalpha (c) : 0; #endif /* _MB_CAPABLE */ } picolibc-1.7.4/newlib/libc/ctype/iswblank.c000066400000000000000000000046601414576234500206230ustar00rootroot00000000000000/* Copyright (c) 2002 Red Hat Incorporated. All rights reserved. Modified (m) 2017 Thomas Wolff to refer to generated Unicode data tables. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of Red Hat Incorporated may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---blank wide character test INDEX iswblank INDEX iswblank_l SYNOPSIS #include int iswblank(wint_t <[c]>); #include int iswblank_l(wint_t <[c]>, locale_t <[locale]>); DESCRIPTION <> is a function which classifies wide-character values that are categorized as blank. <> is like <> but performs the check based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS <>, <> return non-zero if <[c]> is a blank wide character. PORTABILITY <> is C99. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include int iswblank (wint_t c) { return iswblank_l (c, 0); } picolibc-1.7.4/newlib/libc/ctype/iswblank_l.c000066400000000000000000000011471414576234500211330ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ /* Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #include <_ansi.h> #include #include #include "local.h" #include "categories.h" int iswblank_l (wint_t c, struct __locale_t *locale) { (void) locale; #ifdef _MB_CAPABLE c = _jp2uc_l (c, locale); enum category cat = category (c); // exclude ""? return cat == CAT_Zs || c == '\t'; #else return c < 0x100 ? isblank (c) : 0; #endif /* _MB_CAPABLE */ } picolibc-1.7.4/newlib/libc/ctype/iswcntrl.c000066400000000000000000000047011414576234500206520ustar00rootroot00000000000000/* Copyright (c) 2002 Red Hat Incorporated. All rights reserved. Modified (m) 2017 Thomas Wolff to refer to generated Unicode data tables. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of Red Hat Incorporated may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---control wide character test INDEX iswcntrl INDEX iswcntrl_l SYNOPSIS #include int iswcntrl(wint_t <[c]>); #include int iswcntrl_l(wint_t <[c]>, locale_t <[locale]>); DESCRIPTION <> is a function which classifies wide-character values that are categorized as control characters. <> is like <> but performs the check based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS <>, <> return non-zero if <[c]> is a control wide character. PORTABILITY <> is C99. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include int iswcntrl (wint_t c) { return iswcntrl_l (c, 0); } picolibc-1.7.4/newlib/libc/ctype/iswcntrl_l.c000066400000000000000000000012051414576234500211610ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ /* Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #include <_ansi.h> #include #include #include "local.h" #include "categories.h" int iswcntrl_l (wint_t c, struct __locale_t *locale) { (void) locale; #ifdef _MB_CAPABLE c = _jp2uc_l (c, locale); enum category cat = category (c); return cat == CAT_Cc || cat == CAT_Zl || cat == CAT_Zp // Line/Paragraph Separator ; #else return c < 0x100 ? iscntrl (c) : 0; #endif /* _MB_CAPABLE */ } picolibc-1.7.4/newlib/libc/ctype/iswctype.c000066400000000000000000000061611414576234500206560ustar00rootroot00000000000000/* Copyright (c) 2002 Red Hat Incorporated. All rights reserved. Modified (m) 2017 Thomas Wolff to refer to generated Unicode data tables. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of Red Hat Incorporated may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---extensible wide-character test INDEX iswctype INDEX iswctype_l SYNOPSIS #include int iswctype(wint_t <[c]>, wctype_t <[desc]>); #include int iswctype_l(wint_t <[c]>, wctype_t <[desc]>, locale_t <[locale]>); DESCRIPTION <> is a function which classifies wide-character values using the wide-character test specified by <[desc]>. <> is like <> but performs the check based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS <>, <> return non-zero if and only if <[c]> matches the test specified by <[desc]>. If <[desc]> is unknown, zero is returned. PORTABILITY <> is C99. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #include <_ansi.h> #include #include "local.h" int iswctype (wint_t c, wctype_t desc) { switch (desc) { case WC_ALNUM: return iswalnum (c); case WC_ALPHA: return iswalpha (c); case WC_BLANK: return iswblank (c); case WC_CNTRL: return iswcntrl (c); case WC_DIGIT: return iswdigit (c); case WC_GRAPH: return iswgraph (c); case WC_LOWER: return iswlower (c); case WC_PRINT: return iswprint (c); case WC_PUNCT: return iswpunct (c); case WC_SPACE: return iswspace (c); case WC_UPPER: return iswupper (c); case WC_XDIGIT: return iswxdigit (c); default: return 0; /* eliminate warning */ } /* otherwise unknown */ return 0; } picolibc-1.7.4/newlib/libc/ctype/iswctype_l.c000066400000000000000000000021041414576234500211620ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen */ /* Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include "local.h" int iswctype_l (wint_t c, wctype_t desc, struct __locale_t *locale) { switch (desc) { case WC_ALNUM: return iswalnum_l (c, locale); case WC_ALPHA: return iswalpha_l (c, locale); case WC_BLANK: return iswblank_l (c, locale); case WC_CNTRL: return iswcntrl_l (c, locale); case WC_DIGIT: return iswdigit_l (c, locale); case WC_GRAPH: return iswgraph_l (c, locale); case WC_LOWER: return iswlower_l (c, locale); case WC_PRINT: return iswprint_l (c, locale); case WC_PUNCT: return iswpunct_l (c, locale); case WC_SPACE: return iswspace_l (c, locale); case WC_UPPER: return iswupper_l (c, locale); case WC_XDIGIT: return iswxdigit_l (c, locale); default: return 0; /* eliminate warning */ } /* otherwise unknown */ return 0; } picolibc-1.7.4/newlib/libc/ctype/iswdigit.c000066400000000000000000000046331414576234500206340ustar00rootroot00000000000000/* Copyright (c) 2002 Red Hat Incorporated. All rights reserved. Modified (m) 2017 Thomas Wolff to refer to generated Unicode data tables. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of Red Hat Incorporated may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---decimal digit wide character test INDEX iswdigit INDEX iswdigit_l SYNOPSIS #include int iswdigit(wint_t <[c]>); #include int iswdigit_l(wint_t <[c]>, locale_t <[locale]>); DESCRIPTION <> is a function which classifies wide-character values that are decimal digits. <> is like <> but performs the check based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS <>, <> return non-zero if <[c]> is a decimal digit wide character. PORTABILITY <> is C99. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #include <_ansi.h> #include int iswdigit (wint_t c) { return c >= (wint_t)'0' && c <= (wint_t)'9'; // category (c) == CAT_Nd not to be included as of C-99 } picolibc-1.7.4/newlib/libc/ctype/iswdigit_l.c000066400000000000000000000005041414576234500211400ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #define _DEFAULT_SOURCE #include <_ansi.h> #include int iswdigit_l (wint_t c, struct __locale_t *locale) { (void) locale; return c >= (wint_t)'0' && c <= (wint_t)'9'; } picolibc-1.7.4/newlib/libc/ctype/iswgraph.c000066400000000000000000000046471414576234500206420ustar00rootroot00000000000000/* Copyright (c) 2002 Red Hat Incorporated. All rights reserved. Modified (m) 2017 Thomas Wolff to refer to generated Unicode data tables. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of Red Hat Incorporated may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---graphic wide character test INDEX iswgraph INDEX iswgraph_l SYNOPSIS #include int iswgraph(wint_t <[c]>); #include int iswgraph_l(wint_t <[c]>, locale_t <[locale]>); DESCRIPTION <> is a function which classifies wide-character values that are graphic. <> is like <> but performs the check based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS <>, <> return non-zero if <[c]> is a graphic wide character. PORTABILITY <> is C99. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include int iswgraph (wint_t c) { return iswgraph_l (c, 0); } picolibc-1.7.4/newlib/libc/ctype/iswgraph_l.c000066400000000000000000000014571414576234500211510ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ /* Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include "local.h" #include "categories.h" int iswgraph_l (wint_t c, struct __locale_t *locale) { #ifdef _MB_CAPABLE //return iswprint (c, locale) && !iswspace (c, locale); c = _jp2uc_l (c, locale); enum category cat = category (c); return cat != CAT_error && cat != CAT_Cc && cat != CAT_Cf && cat != CAT_Cs // Surrogate && cat != CAT_Zs && cat != CAT_Zl && cat != CAT_Zp // Line/Paragraph Separator ; #else return iswprint_l (c, locale) && !iswspace_l (c, locale); #endif /* _MB_CAPABLE */ } picolibc-1.7.4/newlib/libc/ctype/iswlower.c000066400000000000000000000045501414576234500206620ustar00rootroot00000000000000/* Copyright (c) 2002 Red Hat Incorporated. All rights reserved. Modified (m) 2017 Thomas Wolff to refer to generated Unicode data tables. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of Red Hat Incorporated may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---lowercase wide character test INDEX iswlower INDEX iswlower_l SYNOPSIS #include int iswlower(wint_t <[c]>); #include int iswlower_l(wint_t <[c]>, locale_t <[locale]>); DESCRIPTION <> is a function which classifies wide-character values that are categorized as lowercase. <> is like <> but performs the check based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS <>, <> return non-zero if <[c]> is a lowercase wide character. PORTABILITY <> is C99. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include int iswlower (wint_t c) { return iswlower_l (c, 0); } picolibc-1.7.4/newlib/libc/ctype/iswlower_l.c000066400000000000000000000013641414576234500211750ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ /* Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #include <_ansi.h> #include #include #include "local.h" #include "categories.h" int iswlower_l (wint_t c, struct __locale_t *locale) { (void) locale; #ifdef _MB_CAPABLE c = _jp2uc_l (c, locale); // The wide-character class "lower" contains at least those characters wc // which are equal to towlower(wc) and different from towupper(wc). enum category cat = category (c); return cat == CAT_Ll || (cat == CAT_LC && towlower (c) == c); #else return c < 0x100 ? islower (c) : 0; #endif /* _MB_CAPABLE */ } picolibc-1.7.4/newlib/libc/ctype/iswprint.c000066400000000000000000000046551414576234500206740ustar00rootroot00000000000000/* Copyright (c) 2002 Red Hat Incorporated. All rights reserved. Modified (m) 2017 Thomas Wolff to refer to generated Unicode data tables. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of Red Hat Incorporated may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---printable wide character test INDEX iswprint INDEX iswprint_l SYNOPSIS #include int iswprint(wint_t <[c]>); #include int iswprint_l(wint_t <[c]>, locale_t <[locale]>); DESCRIPTION <> is a function which classifies wide-character values that are printable. <> is like <> but performs the check based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS <>, <> return non-zero if <[c]> is a printable wide character. PORTABILITY <> is C99. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include int iswprint (wint_t c) { return iswprint_l (c, 0); } picolibc-1.7.4/newlib/libc/ctype/iswprint_l.c000066400000000000000000000012211414576234500211710ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ /* Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #include <_ansi.h> #include #include #include "local.h" #include "categories.h" int iswprint_l (wint_t c, struct __locale_t *locale) { (void) locale; #ifdef _MB_CAPABLE c = _jp2uc_l (c, locale); enum category cat = category (c); return cat != -1 && cat != CAT_Cc && cat != CAT_Cf && cat != CAT_Cs // Surrogate ; #else return c < (wint_t)0x100 ? isprint (c) : 0; #endif /* _MB_CAPABLE */ } picolibc-1.7.4/newlib/libc/ctype/iswpunct.c000066400000000000000000000046631414576234500206700ustar00rootroot00000000000000/* Copyright (c) 2002 Red Hat Incorporated. All rights reserved. Modified (m) 2017 Thomas Wolff to refer to generated Unicode data tables. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of Red Hat Incorporated may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---punctuation wide character test INDEX iswpunct INDEX iswpunct_l SYNOPSIS #include int iswpunct(wint_t <[c]>); #include int iswpunct_l(wint_t <[c]>, locale_t <[locale]>); DESCRIPTION <> is a function which classifies wide-character values that are punctuation. <> is like <> but performs the check based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS <>, <> return non-zero if <[c]> is a punctuation wide character. PORTABILITY <> is C99. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include int iswpunct (wint_t c) { return iswpunct_l (c, 0); } picolibc-1.7.4/newlib/libc/ctype/iswpunct_l.c000066400000000000000000000017421414576234500211760ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ /* Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #include <_ansi.h> #include #include #include "local.h" #include "categories.h" int iswpunct_l (wint_t c, struct __locale_t *locale) { (void) locale; #ifdef _MB_CAPABLE //return !iswalnum (c) && iswgraph (c); c = _jp2uc_l (c, locale); enum category cat = category (c); return cat == CAT_Pc || cat == CAT_Pd || cat == CAT_Pe || cat == CAT_Pf || cat == CAT_Pi || cat == CAT_Po || cat == CAT_Ps || cat == CAT_Sm // Math Symbols // the following are included for backwards consistency: || cat == CAT_Sc // Currency Symbols || cat == CAT_Sk // Modifier_Symbol || cat == CAT_So // Other_Symbol || cat == CAT_No // Other_Number ; #else return c < (wint_t)0x100 ? ispunct (c) : 0; #endif /* _MB_CAPABLE */ } picolibc-1.7.4/newlib/libc/ctype/iswspace.c000066400000000000000000000046771414576234500206370ustar00rootroot00000000000000/* Copyright (c) 2002 Red Hat Incorporated. All rights reserved. Modified (m) 2017 Thomas Wolff to refer to generated Unicode data tables. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of Red Hat Incorporated may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---whitespace wide character test INDEX iswspace INDEX iswspace_l SYNOPSIS #include int iswspace(wint_t <[c]>); #include int iswspace_l(wint_t <[c]>, locale_t <[locale]>); DESCRIPTION <> is a function which classifies wide-character values that are categorized as whitespace. <> is like <> but performs the check based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS <>, <> return non-zero if <[c]> is a whitespace wide character. PORTABILITY <> is C99. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include int iswspace (wint_t c) { return iswspace_l (c, 0); } picolibc-1.7.4/newlib/libc/ctype/iswspace_l.c000066400000000000000000000012701414576234500211340ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ /* Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #include <_ansi.h> #include #include #include "local.h" #include "categories.h" int iswspace_l (wint_t c, struct __locale_t *locale) { (void) locale; #ifdef _MB_CAPABLE c = _jp2uc_l (c, locale); enum category cat = category (c); // exclude ""? return cat == CAT_Zs || cat == CAT_Zl || cat == CAT_Zp // Line/Paragraph Separator || (c >= 0x9 && c <= 0xD); #else return c < 0x100 ? isspace (c) : 0; #endif /* _MB_CAPABLE */ } picolibc-1.7.4/newlib/libc/ctype/iswupper.c000066400000000000000000000045511414576234500206660ustar00rootroot00000000000000/* Copyright (c) 2002 Red Hat Incorporated. All rights reserved. Modified (m) 2017 Thomas Wolff to refer to generated Unicode data tables. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of Red Hat Incorporated may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---uppercase wide character test INDEX iswupper INDEX iswupper_l SYNOPSIS #include int iswupper(wint_t <[c]>); #include int iswupper_l(wint_t <[c]>, locale_t <[locale]>); DESCRIPTION <> is a function which classifies wide-character values that are categorized as uppercase. <> is like <> but performs the check based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS <>, <> return non-zero if <[c]> is an uppercase wide character. PORTABILITY <> is C99. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include int iswupper (wint_t c) { return iswupper_l (c, 0); } picolibc-1.7.4/newlib/libc/ctype/iswupper_l.c000066400000000000000000000013641414576234500212000ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ /* Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #include <_ansi.h> #include #include #include "local.h" #include "categories.h" int iswupper_l (wint_t c, struct __locale_t *locale) { (void) locale; #ifdef _MB_CAPABLE c = _jp2uc_l (c, locale); // The wide-character class "upper" contains at least those characters wc // which are equal to towupper(wc) and different from towlower(wc). enum category cat = category (c); return cat == CAT_Lu || (cat == CAT_LC && towupper (c) == c); #else return c < 0x100 ? isupper (c) : 0; #endif /* _MB_CAPABLE */ } picolibc-1.7.4/newlib/libc/ctype/iswxdigit.c000066400000000000000000000047351414576234500210270ustar00rootroot00000000000000/* Copyright (c) 2002 Red Hat Incorporated. All rights reserved. Modified (m) 2017 Thomas Wolff to refer to generated Unicode data tables. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of Red Hat Incorporated may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---hexadecimal digit wide character test INDEX iswxdigit INDEX iswxdigit_l SYNOPSIS #include int iswxdigit(wint_t <[c]>); #include int iswxdigit_l(wint_t <[c]>, locale_t <[locale]>); DESCRIPTION <> is a function which classifies wide character values that are hexadecimal digits. <> is like <> but performs the check based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS <>, <> return non-zero if <[c]> is a hexadecimal digit wide character. PORTABILITY <> is C99. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #include <_ansi.h> #include int iswxdigit (wint_t c) { return (c >= (wint_t)'0' && c <= (wint_t)'9') || (c >= (wint_t)'a' && c <= (wint_t)'f') || (c >= (wint_t)'A' && c <= (wint_t)'F'); } picolibc-1.7.4/newlib/libc/ctype/iswxdigit_l.c000066400000000000000000000006441414576234500213350ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #define _DEFAULT_SOURCE #include <_ansi.h> #include int iswxdigit_l (wint_t c, struct __locale_t *locale) { (void) locale; return ((c >= (wint_t)'0' && c <= (wint_t)'9') || (c >= (wint_t)'a' && c <= (wint_t)'f') || (c >= (wint_t)'A' && c <= (wint_t)'F')); } picolibc-1.7.4/newlib/libc/ctype/isxdigit.c000066400000000000000000000052611414576234500206330ustar00rootroot00000000000000/* Copyright (c) 1989 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---hexadecimal digit predicate INDEX isxdigit INDEX isxdigit_l SYNOPSIS #include int isxdigit(int <[c]>); #include int isxdigit_l(int <[c]>, locale_t <[locale]>); DESCRIPTION <> is a macro which classifies singlebyte charset values by table lookup. It is a predicate returning non-zero for hexadecimal digits, and <<0>> for other characters. It is defined only if <[c]> is representable as an unsigned char or if <[c]> is EOF. <> is like <> but performs the check based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. You can use a compiled subroutine instead of the macro definition by undefining the macro using `<<#undef isxdigit>>' or `<<#undef isxdigit_l>>'. RETURNS <>, <> return non-zero if <[c]> is a hexadecimal digit (<<0>>--<<9>>, <>--<>, or <>--<>). PORTABILITY <> is ANSI C. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #include <_ansi.h> #include #undef isxdigit int isxdigit (int c) { return(__CTYPE_PTR[c+1] & ((_X)|(_N))); } picolibc-1.7.4/newlib/libc/ctype/isxdigit_l.c000066400000000000000000000005171414576234500211450ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #undef isxdigit_l int isxdigit_l (int c, struct __locale_t *locale) { return __locale_ctype_ptr_l (locale)[c+1] & ((_X)|(_N)); } picolibc-1.7.4/newlib/libc/ctype/jp2uc.c000066400000000000000000000125371414576234500200360ustar00rootroot00000000000000/* Routine to translate between Japanese characters and Unicode */ /* Copyright (c) 2002 Red Hat Incorporated. All rights reserved. Modified (m) 2017 Thomas Wolff: consider locale, add dummy uc2jp Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of Red Hat Incorporated may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #ifdef _MB_CAPABLE /* Under Cygwin, the incoming wide character is already given in UTF due to the requirements of the underlying OS. */ #ifndef __CYGWIN__ #include <_ansi.h> #include #include #include "local.h" /* Japanese encoding types supported */ #define JP_JIS 1 #define JP_SJIS 2 #define JP_EUCJP 3 /* Japanese to Unicode conversion routine */ #include "jp2uc.h" static wint_t __jp2uc (wint_t c, int type) { int index, adj; unsigned char byte1, byte2; wint_t ret; /* we actually use tables of EUCJP to Unicode. For JIS, we simply note that EUCJP is essentially JIS with the top bits on in each byte and translate to EUCJP. For SJIS, we do a translation to EUCJP before accessing the tables. */ switch (type) { case JP_JIS: byte1 = (c >> 8) + 0x80; byte2 = (c & 0xff) + 0x80; break; case JP_EUCJP: byte1 = (c >> 8); byte2 = (c & 0xff); break; case JP_SJIS: byte1 = c >> 8; byte2 = c & 0xff; if (byte2 <= 0x9e) { adj = 0xa1 - 0x22; byte2 = (byte2 - 31) + 0xa1; } else { adj = 0xa1 - 0x21; byte2 = (byte2 - 126) + 0xa1; } if (byte1 <= 0x9f) byte1 = ((byte1 - 112) << 1) + adj; else byte1 = ((byte1 - 176) << 1) + adj; break; default: return WEOF; } /* find conversion in jp2uc arrays */ /* handle larger ranges first */ if (byte1 >= 0xb0 && byte1 <= 0xcf && c <= 0xcfd3) { index = (byte1 - 0xb0) * 0xfe + (byte2 - 0xa1); return b02cf[index]; } else if (byte1 >= 0xd0 && byte1 <= 0xf4 && c <= 0xf4a6) { index = (byte1 - 0xd0) * 0xfe + (byte2 - 0xa1); return d02f4[index]; } /* handle smaller ranges here */ switch (byte1) { case 0xA1: return (wint_t)a1[byte2 - 0xa1]; case 0xA2: ret = a2[byte2 - 0xa1]; if (ret != 0) return (wint_t)ret; break; case 0xA3: if (a3[byte2 - 0xa1]) return (wint_t)(0xff00 + (byte2 - 0xa0)); break; case 0xA4: if (byte2 <= 0xf3) return (wint_t)(0x3000 + (byte2 - 0x60)); break; case 0xA5: if (byte2 <= 0xf6) return (wint_t)(0x3000 + byte2); break; case 0xA6: ret = 0; if (byte2 <= 0xd8) ret = (wint_t)a6[byte2 - 0xa1]; if (ret != 0) return ret; break; case 0xA7: ret = 0; if (byte2 <= 0xf1) ret = (wint_t)a7[byte2 - 0xa1]; if (ret != 0) return ret; break; case 0xA8: if (byte2 <= 0xc0) return (wint_t)a8[byte2 - 0xa1]; break; default: return WEOF; } return WEOF; } /* Unicode to Japanese conversion routine */ static wint_t __uc2jp (wint_t c, int type) { (void) c; (void) type; //#warning back-conversion Unicode to Japanese not implemented; needed for towupper/towlower return c; } /* Japanese to Unicode conversion interface */ wint_t _jp2uc_l (wint_t c, struct __locale_t * l) { const char * cs = l ? __locale_charset(l) : __current_locale_charset(); if (0 == strcmp (cs, "JIS")) c = __jp2uc (c, JP_JIS); else if (0 == strcmp (cs, "SJIS")) c = __jp2uc (c, JP_SJIS); else if (0 == strcmp (cs, "EUCJP")) c = __jp2uc (c, JP_EUCJP); return c; } wint_t _jp2uc (wint_t c) { (void) c; return _jp2uc_l (c, 0); } /* Unicode to Japanese conversion interface */ wint_t _uc2jp_l (wint_t c, struct __locale_t * l) { const char * cs = l ? __locale_charset(l) : __current_locale_charset(); if (0 == strcmp (cs, "JIS")) c = __uc2jp (c, JP_JIS); else if (0 == strcmp (cs, "SJIS")) c = __uc2jp (c, JP_SJIS); else if (0 == strcmp (cs, "EUCJP")) c = __uc2jp (c, JP_EUCJP); return c; } #endif /* !__CYGWIN__ */ #endif /* _MB_CAPABLE */ picolibc-1.7.4/newlib/libc/ctype/jp2uc.h000066400000000000000000002110011414576234500200260ustar00rootroot00000000000000/* Copyright (c) 2002 Red Hat Incorporated. All rights reserved. Modified (m) 2017 Thomas Wolff to refer to generated Unicode data tables. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of Red Hat Incorporated may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* based on eucjp-208A.txt */ /* a1 is contiguous from a1a1 to a1fe */ static unsigned short a1[] = { 0x3000, 0x3001, 0x3002, 0xFF0C, 0xFF0E, 0x30FB, 0xFF1A, 0xFF1B, 0xFF1F, 0xFF01, 0x309B, 0x309C, 0x00B4, 0xFF40, 0x00A8, 0xFF3E, 0x203E, 0xFF3F, 0x30FD, 0x30FE, 0x309D, 0x309E, 0x3003, 0x4EDD, 0x3005, 0x3006, 0x3007, 0x30FC, 0x2014, 0x2010, 0xFF0F, 0xFF3C, 0x301C, 0x2016, 0xFF5C, 0x2026, 0x2025, 0x2018, 0x2019, 0x201C, 0x201D, 0xFF08, 0xFF09, 0x3014, 0x3015, 0xFF3B, 0xFF3D, 0xFF5B, 0xFF5D, 0x3008, 0x3009, 0x300A, 0x300B, 0x300C, 0x300D, 0x300E, 0x300F, 0x3010, 0x3011, 0xFF0B, 0x2212, 0x00B1, 0x00D7, 0x00F7, 0xFF1D, 0x2260, 0xFF1C, 0xFF1E, 0x2266, 0x2267, 0x221E, 0x2234, 0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, 0x00A5, 0xFF04, 0x00A2, 0x00A3, 0xFF05, 0xFF03, 0xFF06, 0xFF0A, 0xFF20, 0x00A7, 0x2606, 0x2605, 0x25CB, 0x25CF, 0x25CE, 0x25C7 }; /* a2 has a number of holes between a2a1 and a2fe which we fill with 0x0000 */ static unsigned short a2[] = { 0x25C6, 0x25A1, 0x25A0, 0x25B3, 0x25B2, 0x25BD, 0x25BC, 0x203B, 0x3012, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2208, 0x220B, 0x2286, 0x2287, 0x2282, 0x2283, 0x222A, 0x2229, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2227, 0x2228, 0x00AC, 0x21D2, 0x21D4, 0x2200, 0x2203, 0x2229, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2220, 0x22A5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252, 0x226A, 0x226B, 0x221A, 0x223D, 0x221D, 0x2235, 0x222B, 0x222C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x212B, 0x2030, 0x266F, 0x266D, 0x266A, 0x2020, 0x2021, 0x00B6, 0x222C, 0x0000, 0x0000, 0x0000, 0x25EF }; /* a3a1 to a3fe is mostly contiguous. Conversion output values are of the form 0xFFxx where xx is (yy - 0xA0) where the input is 0xA3yy */ static unsigned char a3[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; /* a4 is contiguous from a4a1 to a4f3 */ /* transform = 0x30xx where xx = last byte - 0x60 */ /* a5 is contiguous from a5a1 to a5f6 */ /* transform = 0x30xx where xx = last byte */ /* a6 is mostly contiguous from a6a1 to a6d8 */ static unsigned short a6[] = { 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9 }; /* a7 is mostly contiguous from a7a1 to a7f1 */ static unsigned short a7[] = { 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F }; /* a8 is contiguous from a8a1 to a8c0 */ static unsigned short a8[] = { 0x2500, 0x2502, 0x250C, 0x2510, 0x2518, 0x2514, 0x251C, 0x252C, 0x2524, 0x2534, 0x253C, 0x2501, 0x2503, 0x250F, 0x2513, 0x251B, 0x2517, 0x2523, 0x2533, 0x252B, 0x253B, 0x254B, 0x2520, 0x252F, 0x2528, 0x2537, 0x253F, 0x251D, 0x2530, 0x2525, 0x2538, 0x2542 }; /* no conversion a9 to af */ /* b0a1 to cfd3 is contiguous except for illegal sequences with 0xfe */ static unsigned short b02cf[] = { 0x4E9C, 0x5516, 0x5A03, 0x963F, 0x54C0, 0x611B, 0x6328, 0x59F6, 0x9022, 0x8475, 0x831C, 0x7A50, 0x60AA, 0x63E1, 0x6E25, 0x65ED, 0x8466, 0x82A6, 0x9BF5, 0x6893, 0x5727, 0x65A1, 0x6271, 0x5B9B, 0x59D0, 0x867B, 0x98F4, 0x7D62, 0x7DBE, 0x9B8E, 0x6216, 0x7C9F, 0x88B7, 0x5B89, 0x5EB5, 0x6309, 0x6697, 0x6848, 0x95C7, 0x978D, 0x674F, 0x4EE5, 0x4F0A, 0x4F4D, 0x4F9D, 0x5049, 0x56F2, 0x5937, 0x59D4, 0x5A01, 0x5C09, 0x60DF, 0x610F, 0x6170, 0x6613, 0x6905, 0x70BA, 0x754F, 0x7570, 0x79FB, 0x7DAD, 0x7DEF, 0x80C3, 0x840E, 0x8863, 0x8B02, 0x9055, 0x907A, 0x533B, 0x4E95, 0x4EA5, 0x57DF, 0x80B2, 0x90C1, 0x78EF, 0x4E00, 0x58F1, 0x6EA2, 0x9038, 0x7A32, 0x8328, 0x828B, 0x9C2F, 0x5141, 0x5370, 0x54BD, 0x54E1, 0x56E0, 0x59FB, 0x5F15, 0x98F2, 0x6DEB, 0x80E4, 0x852D, 0x9662, 0x9670, 0x96A0, 0x97FB, 0x540B, 0x53F3, 0x5B87, 0x70CF, 0x7FBD, 0x8FC2, 0x96E8, 0x536F, 0x9D5C, 0x7ABA, 0x4E11, 0x7893, 0x81FC, 0x6E26, 0x5618, 0x5504, 0x6B1D, 0x851A, 0x9C3B, 0x59E5, 0x53A9, 0x6D66, 0x74DC, 0x958F, 0x5642, 0x4E91, 0x904B, 0x96F2, 0x834F, 0x990C, 0x53E1, 0x55B6, 0x5B30, 0x5F71, 0x6620, 0x66F3, 0x6804, 0x6C38, 0x6CF3, 0x6D29, 0x745B, 0x76C8, 0x7A4E, 0x9834, 0x82F1, 0x885B, 0x8A60, 0x92ED, 0x6DB2, 0x75AB, 0x76CA, 0x99C5, 0x60A6, 0x8B01, 0x8D8A, 0x95B2, 0x698E, 0x53AD, 0x5186, 0x5712, 0x5830, 0x5944, 0x5BB4, 0x5EF6, 0x6028, 0x63A9, 0x63F4, 0x6CBF, 0x6F14, 0x708E, 0x7114, 0x7159, 0x71D5, 0x733F, 0x7E01, 0x8276, 0x82D1, 0x8597, 0x9060, 0x925B, 0x9D1B, 0x5869, 0x65BC, 0x6C5A, 0x7525, 0x51F9, 0x592E, 0x5965, 0x5F80, 0x5FDC, 0x62BC, 0x65FA, 0x6A2A, 0x6B27, 0x6BB4, 0x738B, 0x7FC1, 0x8956, 0x9D2C, 0x9D0E, 0x9EC4, 0x5CA1, 0x6C96, 0x837B, 0x5104, 0x5C4B, 0x61B6, 0x81C6, 0x6876, 0x7261, 0x4E59, 0x4FFA, 0x5378, 0x6069, 0x6E29, 0x7A4F, 0x97F3, 0x4E0B, 0x5316, 0x4EEE, 0x4F55, 0x4F3D, 0x4FA1, 0x4F73, 0x52A0, 0x53EF, 0x5609, 0x590F, 0x5AC1, 0x5BB6, 0x5BE1, 0x79D1, 0x6687, 0x679C, 0x67B6, 0x6B4C, 0x6CB3, 0x706B, 0x73C2, 0x798D, 0x79BE, 0x7A3C, 0x7B87, 0x82B1, 0x82DB, 0x8304, 0x8377, 0x83EF, 0x83D3, 0x8766, 0x8AB2, 0x5629, 0x8CA8, 0x8FE6, 0x904E, 0x971E, 0x868A, 0x4FC4, 0x5CE8, 0x6211, 0x7259, 0x753B, 0x81E5, 0x82BD, 0x86FE, 0x8CC0, 0x96C5, 0x9913, 0x99D5, 0x4ECB, 0x4F1A, 0x89E3, 0x56DE, 0x584A, 0x58CA, 0x5EFB, 0x5FEB, 0x602A, 0x6094, 0x6062, 0x61D0, 0x6212, 0x62D0, 0x6539, 0x9B41, 0x6666, 0x68B0, 0x6D77, 0x7070, 0x754C, 0x7686, 0x7D75, 0x82A5, 0x87F9, 0x958B, 0x968E, 0x8C9D, 0x51F1, 0x52BE, 0x5916, 0x54B3, 0x5BB3, 0x5D16, 0x6168, 0x6982, 0x6DAF, 0x788D, 0x84CB, 0x8857, 0x8A72, 0x93A7, 0x9AB8, 0x6D6C, 0x99A8, 0x86D9, 0x57A3, 0x67FF, 0x86CE, 0x920E, 0x5283, 0x5687, 0x5404, 0x5ED3, 0x62E1, 0x64B9, 0x683C, 0x6838, 0x6BBB, 0x7372, 0x78BA, 0x7A6B, 0x899A, 0x89D2, 0x8D6B, 0x8F03, 0x90ED, 0x95A3, 0x9694, 0x9769, 0x5B66, 0x5CB3, 0x697D, 0x984D, 0x984E, 0x639B, 0x7B20, 0x6A2B, 0x6A7F, 0x68B6, 0x9C0D, 0x6F5F, 0x5272, 0x559D, 0x6070, 0x62EC, 0x6D3B, 0x6E07, 0x6ED1, 0x845B, 0x8910, 0x8F44, 0x4E14, 0x9C39, 0x53F6, 0x691B, 0x6A3A, 0x9784, 0x682A, 0x515C, 0x7AC3, 0x84B2, 0x91DC, 0x938C, 0x565B, 0x9D28, 0x6822, 0x8305, 0x8431, 0x7CA5, 0x5208, 0x82C5, 0x74E6, 0x4E7E, 0x4F83, 0x51A0, 0x5BD2, 0x520A, 0x52D8, 0x52E7, 0x5DFB, 0x559A, 0x582A, 0x59E6, 0x5B8C, 0x5B98, 0x5BDB, 0x5E72, 0x5E79, 0x60A3, 0x611F, 0x6163, 0x61BE, 0x63DB, 0x6562, 0x67D1, 0x6853, 0x68FA, 0x6B3E, 0x6B53, 0x6C57, 0x6F22, 0x6F97, 0x6F45, 0x74B0, 0x7518, 0x76E3, 0x770B, 0x7AFF, 0x7BA1, 0x7C21, 0x7DE9, 0x7F36, 0x7FF0, 0x809D, 0x8266, 0x839E, 0x89B3, 0x8ACC, 0x8CAB, 0x9084, 0x9451, 0x9593, 0x9591, 0x95A2, 0x9665, 0x97D3, 0x9928, 0x8218, 0x4E38, 0x542B, 0x5CB8, 0x5DCC, 0x73A9, 0x764C, 0x773C, 0x5CA9, 0x7FEB, 0x8D0B, 0x96C1, 0x9811, 0x9854, 0x9858, 0x4F01, 0x4F0E, 0x5371, 0x559C, 0x5668, 0x57FA, 0x5947, 0x5B09, 0x5BC4, 0x5C90, 0x5E0C, 0x5E7E, 0x5FCC, 0x63EE, 0x673A, 0x65D7, 0x65E2, 0x671F, 0x68CB, 0x68C4, 0x6A5F, 0x5E30, 0x6BC5, 0x6C17, 0x6C7D, 0x757F, 0x7948, 0x5B63, 0x7A00, 0x7D00, 0x5FBD, 0x898F, 0x8A18, 0x8CB4, 0x8D77, 0x8ECC, 0x8F1D, 0x98E2, 0x9A0E, 0x9B3C, 0x4E80, 0x507D, 0x5100, 0x5993, 0x5B9C, 0x622F, 0x6280, 0x64EC, 0x6B3A, 0x72A0, 0x7591, 0x7947, 0x7FA9, 0x87FB, 0x8ABC, 0x8B70, 0x63AC, 0x83CA, 0x97A0, 0x5409, 0x5403, 0x55AB, 0x6854, 0x6A58, 0x8A70, 0x7827, 0x6775, 0x9ECD, 0x5374, 0x5BA2, 0x811A, 0x8650, 0x9006, 0x4E18, 0x4E45, 0x4EC7, 0x4F11, 0x53CA, 0x5438, 0x5BAE, 0x5F13, 0x6025, 0x6551, 0x673D, 0x6C42, 0x6C72, 0x6CE3, 0x7078, 0x7403, 0x7A76, 0x7AAE, 0x7B08, 0x7D1A, 0x7CFE, 0x7D66, 0x65E7, 0x725B, 0x53BB, 0x5C45, 0x5DE8, 0x62D2, 0x62E0, 0x6319, 0x6E20, 0x865A, 0x8A31, 0x8DDD, 0x92F8, 0x6F01, 0x79A6, 0x9B5A, 0x4EA8, 0x4EAB, 0x4EAC, 0x4F9B, 0x4FA0, 0x50D1, 0x5147, 0x7AF6, 0x5171, 0x51F6, 0x5354, 0x5321, 0x537F, 0x53EB, 0x55AC, 0x5883, 0x5CE1, 0x5F37, 0x5F4A, 0x602F, 0x6050, 0x606D, 0x631F, 0x6559, 0x6A4B, 0x6CC1, 0x72C2, 0x72ED, 0x77EF, 0x80F8, 0x8105, 0x8208, 0x854E, 0x90F7, 0x93E1, 0x97FF, 0x9957, 0x9A5A, 0x4EF0, 0x51DD, 0x5C2D, 0x6681, 0x696D, 0x5C40, 0x66F2, 0x6975, 0x7389, 0x6850, 0x7C81, 0x50C5, 0x52E4, 0x5747, 0x5DFE, 0x9326, 0x65A4, 0x6B23, 0x6B3D, 0x7434, 0x7981, 0x79BD, 0x7B4B, 0x7DCA, 0x82B9, 0x83CC, 0x887F, 0x895F, 0x8B39, 0x8FD1, 0x91D1, 0x541F, 0x9280, 0x4E5D, 0x5036, 0x53E5, 0x533A, 0x72D7, 0x7396, 0x77E9, 0x82E6, 0x8EAF, 0x99C6, 0x99C8, 0x99D2, 0x5177, 0x611A, 0x865E, 0x55B0, 0x7A7A, 0x5076, 0x5BD3, 0x9047, 0x9685, 0x4E32, 0x6ADB, 0x91E7, 0x5C51, 0x5C48, 0x6398, 0x7A9F, 0x6C93, 0x9774, 0x8F61, 0x7AAA, 0x718A, 0x9688, 0x7C82, 0x6817, 0x7E70, 0x6851, 0x936C, 0x52F2, 0x541B, 0x85AB, 0x8A13, 0x7FA4, 0x8ECD, 0x90E1, 0x5366, 0x8888, 0x7941, 0x4FC2, 0x50BE, 0x5211, 0x5144, 0x5553, 0x572D, 0x73EA, 0x578B, 0x5951, 0x5F62, 0x5F84, 0x6075, 0x6176, 0x6167, 0x61A9, 0x63B2, 0x643A, 0x656C, 0x666F, 0x6842, 0x6E13, 0x7566, 0x7A3D, 0x7CFB, 0x7D4C, 0x7D99, 0x7E4B, 0x7F6B, 0x830E, 0x834A, 0x86CD, 0x8A08, 0x8A63, 0x8B66, 0x8EFD, 0x981A, 0x9D8F, 0x82B8, 0x8FCE, 0x9BE8, 0x5287, 0x621F, 0x6483, 0x6FC0, 0x9699, 0x6841, 0x5091, 0x6B20, 0x6C7A, 0x6F54, 0x7A74, 0x7D50, 0x8840, 0x8A23, 0x6708, 0x4EF6, 0x5039, 0x5026, 0x5065, 0x517C, 0x5238, 0x5263, 0x55A7, 0x570F, 0x5805, 0x5ACC, 0x5EFA, 0x61B2, 0x61F8, 0x62F3, 0x6372, 0x691C, 0x6A29, 0x727D, 0x72AC, 0x732E, 0x7814, 0x786F, 0x7D79, 0x770C, 0x80A9, 0x898B, 0x8B19, 0x8CE2, 0x8ED2, 0x9063, 0x9375, 0x967A, 0x9855, 0x9A13, 0x9E78, 0x5143, 0x539F, 0x53B3, 0x5E7B, 0x5F26, 0x6E1B, 0x6E90, 0x7384, 0x73FE, 0x7D43, 0x8237, 0x8A00, 0x8AFA, 0x9650, 0x4E4E, 0x500B, 0x53E4, 0x547C, 0x56FA, 0x59D1, 0x5B64, 0x5DF1, 0x5EAB, 0x5F27, 0x6238, 0x6545, 0x67AF, 0x6E56, 0x72D0, 0x7CCA, 0x88B4, 0x80A1, 0x80E1, 0x83F0, 0x864E, 0x8A87, 0x8DE8, 0x9237, 0x96C7, 0x9867, 0x9F13, 0x4E94, 0x4E92, 0x4F0D, 0x5348, 0x5449, 0x543E, 0x5A2F, 0x5F8C, 0x5FA1, 0x609F, 0x68A7, 0x6A8E, 0x745A, 0x7881, 0x8A9E, 0x8AA4, 0x8B77, 0x9190, 0x4E5E, 0x9BC9, 0x4EA4, 0x4F7C, 0x4FAF, 0x5019, 0x5016, 0x5149, 0x516C, 0x529F, 0x52B9, 0x52FE, 0x539A, 0x53E3, 0x5411, 0x540E, 0x5589, 0x5751, 0x57A2, 0x597D, 0x5B54, 0x5B5D, 0x5B8F, 0x5DE5, 0x5DE7, 0x5DF7, 0x5E78, 0x5E83, 0x5E9A, 0x5EB7, 0x5F18, 0x6052, 0x614C, 0x6297, 0x62D8, 0x63A7, 0x653B, 0x6602, 0x6643, 0x66F4, 0x676D, 0x6821, 0x6897, 0x69CB, 0x6C5F, 0x6D2A, 0x6D69, 0x6E2F, 0x6E9D, 0x7532, 0x7687, 0x786C, 0x7A3F, 0x7CE0, 0x7D05, 0x7D18, 0x7D5E, 0x7DB1, 0x8015, 0x8003, 0x80AF, 0x80B1, 0x8154, 0x818F, 0x822A, 0x8352, 0x884C, 0x8861, 0x8B1B, 0x8CA2, 0x8CFC, 0x90CA, 0x9175, 0x9271, 0x783F, 0x92FC, 0x95A4, 0x964D, 0x9805, 0x9999, 0x9AD8, 0x9D3B, 0x525B, 0x52AB, 0x53F7, 0x5408, 0x58D5, 0x62F7, 0x6FE0, 0x8C6A, 0x8F5F, 0x9EB9, 0x514B, 0x523B, 0x544A, 0x56FD, 0x7A40, 0x9177, 0x9D60, 0x9ED2, 0x7344, 0x6F09, 0x8170, 0x7511, 0x5FFD, 0x60DA, 0x9AA8, 0x72DB, 0x8FBC, 0x6B64, 0x9803, 0x4ECA, 0x56F0, 0x5764, 0x58BE, 0x5A5A, 0x6068, 0x61C7, 0x660F, 0x6606, 0x6839, 0x68B1, 0x6DF7, 0x75D5, 0x7D3A, 0x826E, 0x9B42, 0x4E9B, 0x4F50, 0x53C9, 0x5506, 0x5D6F, 0x5DE6, 0x5DEE, 0x67FB, 0x6C99, 0x7473, 0x7802, 0x8A50, 0x9396, 0x88DF, 0x5750, 0x5EA7, 0x632B, 0x50B5, 0x50AC, 0x518D, 0x6700, 0x54C9, 0x585E, 0x59BB, 0x5BB0, 0x5F69, 0x624D, 0x63A1, 0x683D, 0x6B73, 0x6E08, 0x707D, 0x91C7, 0x7280, 0x7815, 0x7826, 0x796D, 0x658E, 0x7D30, 0x83DC, 0x88C1, 0x8F09, 0x969B, 0x5264, 0x5728, 0x6750, 0x7F6A, 0x8CA1, 0x51B4, 0x5742, 0x962A, 0x583A, 0x698A, 0x80B4, 0x54B2, 0x5D0E, 0x57FC, 0x7895, 0x9DFA, 0x4F5C, 0x524A, 0x548B, 0x643E, 0x6628, 0x6714, 0x67F5, 0x7A84, 0x7B56, 0x7D22, 0x932F, 0x685C, 0x9BAD, 0x7B39, 0x5319, 0x518A, 0x5237, 0x5BDF, 0x62F6, 0x64AE, 0x64E6, 0x672D, 0x6BBA, 0x85A9, 0x96D1, 0x7690, 0x9BD6, 0x634C, 0x9306, 0x9BAB, 0x76BF, 0x6652, 0x4E09, 0x5098, 0x53C2, 0x5C71, 0x60E8, 0x6492, 0x6563, 0x685F, 0x71E6, 0x73CA, 0x7523, 0x7B97, 0x7E82, 0x8695, 0x8B83, 0x8CDB, 0x9178, 0x9910, 0x65AC, 0x66AB, 0x6B8B, 0x4ED5, 0x4ED4, 0x4F3A, 0x4F7F, 0x523A, 0x53F8, 0x53F2, 0x55E3, 0x56DB, 0x58EB, 0x59CB, 0x59C9, 0x59FF, 0x5B50, 0x5C4D, 0x5E02, 0x5E2B, 0x5FD7, 0x601D, 0x6307, 0x652F, 0x5B5C, 0x65AF, 0x65BD, 0x65E8, 0x679D, 0x6B62, 0x6B7B, 0x6C0F, 0x7345, 0x7949, 0x79C1, 0x7CF8, 0x7D19, 0x7D2B, 0x80A2, 0x8102, 0x81F3, 0x8996, 0x8A5E, 0x8A69, 0x8A66, 0x8A8C, 0x8AEE, 0x8CC7, 0x8CDC, 0x96CC, 0x98FC, 0x6B6F, 0x4E8B, 0x4F3C, 0x4F8D, 0x5150, 0x5B57, 0x5BFA, 0x6148, 0x6301, 0x6642, 0x6B21, 0x6ECB, 0x6CBB, 0x723E, 0x74BD, 0x75D4, 0x78C1, 0x793A, 0x800C, 0x8033, 0x81EA, 0x8494, 0x8F9E, 0x6C50, 0x9E7F, 0x5F0F, 0x8B58, 0x9D2B, 0x7AFA, 0x8EF8, 0x5B8D, 0x96EB, 0x4E03, 0x53F1, 0x57F7, 0x5931, 0x5AC9, 0x5BA4, 0x6089, 0x6E7F, 0x6F06, 0x75BE, 0x8CEA, 0x5B9F, 0x8500, 0x7BE0, 0x5072, 0x67F4, 0x829D, 0x5C61, 0x854A, 0x7E1E, 0x820E, 0x5199, 0x5C04, 0x6368, 0x8D66, 0x659C, 0x716E, 0x793E, 0x7D17, 0x8005, 0x8B1D, 0x8ECA, 0x906E, 0x86C7, 0x90AA, 0x501F, 0x52FA, 0x5C3A, 0x6753, 0x707C, 0x7235, 0x914C, 0x91C8, 0x932B, 0x82E5, 0x5BC2, 0x5F31, 0x60F9, 0x4E3B, 0x53D6, 0x5B88, 0x624B, 0x6731, 0x6B8A, 0x72E9, 0x73E0, 0x7A2E, 0x816B, 0x8DA3, 0x9152, 0x9996, 0x5112, 0x53D7, 0x546A, 0x5BFF, 0x6388, 0x6A39, 0x7DAC, 0x9700, 0x56DA, 0x53CE, 0x5468, 0x5B97, 0x5C31, 0x5DDE, 0x4FEE, 0x6101, 0x62FE, 0x6D32, 0x79C0, 0x79CB, 0x7D42, 0x7E4D, 0x7FD2, 0x81ED, 0x821F, 0x8490, 0x8846, 0x8972, 0x8B90, 0x8E74, 0x8F2F, 0x9031, 0x914B, 0x916C, 0x96C6, 0x919C, 0x4EC0, 0x4F4F, 0x5145, 0x5341, 0x5F93, 0x620E, 0x67D4, 0x6C41, 0x6E0B, 0x7363, 0x7E26, 0x91CD, 0x9283, 0x53D4, 0x5919, 0x5BBF, 0x6DD1, 0x795D, 0x7E2E, 0x7C9B, 0x587E, 0x719F, 0x51FA, 0x8853, 0x8FF0, 0x4FCA, 0x5CFB, 0x6625, 0x77AC, 0x7AE3, 0x821C, 0x99FF, 0x51C6, 0x5FAA, 0x65EC, 0x696F, 0x6B89, 0x6DF3, 0x6E96, 0x6F64, 0x76FE, 0x7D14, 0x5DE1, 0x9075, 0x9187, 0x9806, 0x51E6, 0x521D, 0x6240, 0x6691, 0x66D9, 0x6E1A, 0x5EB6, 0x7DD2, 0x7F72, 0x66F8, 0x85AF, 0x85F7, 0x8AF8, 0x52A9, 0x53D9, 0x5973, 0x5E8F, 0x5F90, 0x6055, 0x92E4, 0x9664, 0x50B7, 0x511F, 0x52DD, 0x5320, 0x5347, 0x53EC, 0x54E8, 0x5546, 0x5531, 0x5617, 0x5968, 0x59BE, 0x5A3C, 0x5BB5, 0x5C06, 0x5C0F, 0x5C11, 0x5C1A, 0x5E84, 0x5E8A, 0x5EE0, 0x5F70, 0x627F, 0x6284, 0x62DB, 0x638C, 0x6377, 0x6607, 0x660C, 0x662D, 0x6676, 0x677E, 0x68A2, 0x6A1F, 0x6A35, 0x6CBC, 0x6D88, 0x6E09, 0x6E58, 0x713C, 0x7126, 0x7167, 0x75C7, 0x7701, 0x785D, 0x7901, 0x7965, 0x79F0, 0x7AE0, 0x7B11, 0x7CA7, 0x7D39, 0x8096, 0x83D6, 0x848B, 0x8549, 0x885D, 0x88F3, 0x8A1F, 0x8A3C, 0x8A54, 0x8A73, 0x8C61, 0x8CDE, 0x91A4, 0x9266, 0x937E, 0x9418, 0x969C, 0x9798, 0x4E0A, 0x4E08, 0x4E1E, 0x4E57, 0x5197, 0x5270, 0x57CE, 0x5834, 0x58CC, 0x5B22, 0x5E38, 0x60C5, 0x64FE, 0x6761, 0x6756, 0x6D44, 0x72B6, 0x7573, 0x7A63, 0x84B8, 0x8B72, 0x91B8, 0x9320, 0x5631, 0x57F4, 0x98FE, 0x62ED, 0x690D, 0x6B96, 0x71ED, 0x7E54, 0x8077, 0x8272, 0x89E6, 0x98DF, 0x8755, 0x8FB1, 0x5C3B, 0x4F38, 0x4FE1, 0x4FB5, 0x5507, 0x5A20, 0x5BDD, 0x5BE9, 0x5FC3, 0x614E, 0x632F, 0x65B0, 0x664B, 0x68EE, 0x699B, 0x6D78, 0x6DF1, 0x7533, 0x75B9, 0x771F, 0x795E, 0x79E6, 0x7D33, 0x81E3, 0x82AF, 0x85AA, 0x89AA, 0x8A3A, 0x8EAB, 0x8F9B, 0x9032, 0x91DD, 0x9707, 0x4EBA, 0x4EC1, 0x5203, 0x5875, 0x58EC, 0x5C0B, 0x751A, 0x5C3D, 0x814E, 0x8A0A, 0x8FC5, 0x9663, 0x976D, 0x7B25, 0x8ACF, 0x9808, 0x9162, 0x56F3, 0x53A8, 0x9017, 0x5439, 0x5782, 0x5E25, 0x63A8, 0x6C34, 0x708A, 0x7761, 0x7C8B, 0x7FE0, 0x8870, 0x9042, 0x9154, 0x9310, 0x9318, 0x968F, 0x745E, 0x9AC4, 0x5D07, 0x5D69, 0x6570, 0x67A2, 0x8DA8, 0x96DB, 0x636E, 0x6749, 0x6919, 0x83C5, 0x9817, 0x96C0, 0x88FE, 0x6F84, 0x647A, 0x5BF8, 0x4E16, 0x702C, 0x755D, 0x662F, 0x51C4, 0x5236, 0x52E2, 0x59D3, 0x5F81, 0x6027, 0x6210, 0x653F, 0x6574, 0x661F, 0x6674, 0x68F2, 0x6816, 0x6B63, 0x6E05, 0x7272, 0x751F, 0x76DB, 0x7CBE, 0x8056, 0x58F0, 0x88FD, 0x897F, 0x8AA0, 0x8A93, 0x8ACB, 0x901D, 0x9192, 0x9752, 0x9759, 0x6589, 0x7A0E, 0x8106, 0x96BB, 0x5E2D, 0x60DC, 0x621A, 0x65A5, 0x6614, 0x6790, 0x77F3, 0x7A4D, 0x7C4D, 0x7E3E, 0x810A, 0x8CAC, 0x8D64, 0x8DE1, 0x8E5F, 0x78A9, 0x5207, 0x62D9, 0x63A5, 0x6442, 0x6298, 0x8A2D, 0x7A83, 0x7BC0, 0x8AAC, 0x96EA, 0x7D76, 0x820C, 0x8749, 0x4ED9, 0x5148, 0x5343, 0x5360, 0x5BA3, 0x5C02, 0x5C16, 0x5DDD, 0x6226, 0x6247, 0x64B0, 0x6813, 0x6834, 0x6CC9, 0x6D45, 0x6D17, 0x67D3, 0x6F5C, 0x714E, 0x717D, 0x65CB, 0x7A7F, 0x7BAD, 0x7DDA, 0x7E4A, 0x7FA8, 0x817A, 0x821B, 0x8239, 0x85A6, 0x8A6E, 0x8CCE, 0x8DF5, 0x9078, 0x9077, 0x92AD, 0x9291, 0x9583, 0x9BAE, 0x524D, 0x5584, 0x6F38, 0x7136, 0x5168, 0x7985, 0x7E55, 0x81B3, 0x7CCE, 0x564C, 0x5851, 0x5CA8, 0x63AA, 0x66FE, 0x66FD, 0x695A, 0x72D9, 0x758F, 0x758E, 0x790E, 0x7956, 0x79DF, 0x7C97, 0x7D20, 0x7D44, 0x8607, 0x8A34, 0x963B, 0x9061, 0x9F20, 0x50E7, 0x5275, 0x53CC, 0x53E2, 0x5009, 0x55AA, 0x58EE, 0x594F, 0x723D, 0x5B8B, 0x5C64, 0x531D, 0x60E3, 0x60F3, 0x635C, 0x6383, 0x633F, 0x63BB, 0x64CD, 0x65E9, 0x66F9, 0x5DE3, 0x69CD, 0x69FD, 0x6F15, 0x71E5, 0x4E89, 0x75E9, 0x76F8, 0x7A93, 0x7CDF, 0x7DCF, 0x7D9C, 0x8061, 0x8349, 0x8358, 0x846C, 0x84BC, 0x85FB, 0x88C5, 0x8D70, 0x9001, 0x906D, 0x9397, 0x971C, 0x9A12, 0x50CF, 0x5897, 0x618E, 0x81D3, 0x8535, 0x8D08, 0x9020, 0x4FC3, 0x5074, 0x5247, 0x5373, 0x606F, 0x6349, 0x675F, 0x6E2C, 0x8DB3, 0x901F, 0x4FD7, 0x5C5E, 0x8CCA, 0x65CF, 0x7D9A, 0x5352, 0x8896, 0x5176, 0x63C3, 0x5B58, 0x5B6B, 0x5C0A, 0x640D, 0x6751, 0x905C, 0x4ED6, 0x591A, 0x592A, 0x6C70, 0x8A51, 0x553E, 0x5815, 0x59A5, 0x60F0, 0x6253, 0x67C1, 0x8235, 0x6955, 0x9640, 0x99C4, 0x9A28, 0x4F53, 0x5806, 0x5BFE, 0x8010, 0x5CB1, 0x5E2F, 0x5F85, 0x6020, 0x614B, 0x6234, 0x66FF, 0x6CF0, 0x6EDE, 0x80CE, 0x817F, 0x82D4, 0x888B, 0x8CB8, 0x9000, 0x902E, 0x968A, 0x9EDB, 0x9BDB, 0x4EE3, 0x53F0, 0x5927, 0x7B2C, 0x918D, 0x984C, 0x9DF9, 0x6EDD, 0x7027, 0x5353, 0x5544, 0x5B85, 0x6258, 0x629E, 0x62D3, 0x6CA2, 0x6FEF, 0x7422, 0x8A17, 0x9438, 0x6FC1, 0x8AFE, 0x8338, 0x51E7, 0x86F8, 0x53EA, 0x53E9, 0x4F46, 0x9054, 0x8FB0, 0x596A, 0x8131, 0x5DFD, 0x7AEA, 0x8FBF, 0x68DA, 0x8C37, 0x72F8, 0x9C48, 0x6A3D, 0x8AB0, 0x4E39, 0x5358, 0x5606, 0x5766, 0x62C5, 0x63A2, 0x65E6, 0x6B4E, 0x6DE1, 0x6E5B, 0x70AD, 0x77ED, 0x7AEF, 0x7BAA, 0x7DBB, 0x803D, 0x80C6, 0x86CB, 0x8A95, 0x935B, 0x56E3, 0x58C7, 0x5F3E, 0x65AD, 0x6696, 0x6A80, 0x6BB5, 0x7537, 0x8AC7, 0x5024, 0x77E5, 0x5730, 0x5F1B, 0x6065, 0x667A, 0x6C60, 0x75F4, 0x7A1A, 0x7F6E, 0x81F4, 0x8718, 0x9045, 0x99B3, 0x7BC9, 0x755C, 0x7AF9, 0x7B51, 0x84C4, 0x9010, 0x79E9, 0x7A92, 0x8336, 0x5AE1, 0x7740, 0x4E2D, 0x4EF2, 0x5B99, 0x5FE0, 0x62BD, 0x663C, 0x67F1, 0x6CE8, 0x866B, 0x8877, 0x8A3B, 0x914E, 0x92F3, 0x99D0, 0x6A17, 0x7026, 0x732A, 0x82E7, 0x8457, 0x8CAF, 0x4E01, 0x5146, 0x51CB, 0x558B, 0x5BF5, 0x5E16, 0x5E33, 0x5E81, 0x5F14, 0x5F35, 0x5F6B, 0x5FB4, 0x61F2, 0x6311, 0x66A2, 0x671D, 0x6F6E, 0x7252, 0x753A, 0x773A, 0x8074, 0x8139, 0x8178, 0x8776, 0x8ABF, 0x8ADC, 0x8D85, 0x8DF3, 0x929A, 0x9577, 0x9802, 0x9CE5, 0x52C5, 0x6357, 0x76F4, 0x6715, 0x6C88, 0x73CD, 0x8CC3, 0x93AE, 0x9673, 0x6D25, 0x589C, 0x690E, 0x69CC, 0x8FFD, 0x939A, 0x75DB, 0x901A, 0x585A, 0x6802, 0x63B4, 0x69FB, 0x4F43, 0x6F2C, 0x67D8, 0x8FBB, 0x8526, 0x7DB4, 0x9354, 0x693F, 0x6F70, 0x576A, 0x58F7, 0x5B2C, 0x7D2C, 0x722A, 0x540A, 0x91E3, 0x9DB4, 0x4EAD, 0x4F4E, 0x505C, 0x5075, 0x5243, 0x8C9E, 0x5448, 0x5824, 0x5B9A, 0x5E1D, 0x5E95, 0x5EAD, 0x5EF7, 0x5F1F, 0x608C, 0x62B5, 0x633A, 0x63D0, 0x68AF, 0x6C40, 0x7887, 0x798E, 0x7A0B, 0x7DE0, 0x8247, 0x8A02, 0x8AE6, 0x8E44, 0x9013, 0x90B8, 0x912D, 0x91D8, 0x9F0E, 0x6CE5, 0x6458, 0x64E2, 0x6575, 0x6EF4, 0x7684, 0x7B1B, 0x9069, 0x93D1, 0x6EBA, 0x54F2, 0x5FB9, 0x64A4, 0x8F4D, 0x8FED, 0x9244, 0x5178, 0x586B, 0x5929, 0x5C55, 0x5E97, 0x6DFB, 0x7E8F, 0x751C, 0x8CBC, 0x8EE2, 0x985B, 0x70B9, 0x4F1D, 0x6BBF, 0x6FB1, 0x7530, 0x96FB, 0x514E, 0x5410, 0x5835, 0x5857, 0x59AC, 0x5C60, 0x5F92, 0x6597, 0x675C, 0x6E21, 0x767B, 0x83DF, 0x8CED, 0x9014, 0x90FD, 0x934D, 0x7825, 0x783A, 0x52AA, 0x5EA6, 0x571F, 0x5974, 0x6012, 0x5012, 0x515A, 0x51AC, 0x51CD, 0x5200, 0x5510, 0x5854, 0x5858, 0x5957, 0x5B95, 0x5CF6, 0x5D8B, 0x60BC, 0x6295, 0x642D, 0x6771, 0x6843, 0x68BC, 0x68DF, 0x76D7, 0x6DD8, 0x6E6F, 0x6D9B, 0x706F, 0x71C8, 0x5F53, 0x75D8, 0x7977, 0x7B49, 0x7B54, 0x7B52, 0x7CD6, 0x7D71, 0x5230, 0x8463, 0x8569, 0x85E4, 0x8A0E, 0x8B04, 0x8C46, 0x8E0F, 0x9003, 0x900F, 0x9419, 0x9676, 0x982D, 0x9A30, 0x95D8, 0x50CD, 0x52D5, 0x540C, 0x5802, 0x5C0E, 0x61A7, 0x649E, 0x6D1E, 0x77B3, 0x7AE5, 0x80F4, 0x8404, 0x9053, 0x9285, 0x5CE0, 0x9D07, 0x533F, 0x5F97, 0x5FB3, 0x6D9C, 0x7279, 0x7763, 0x79BF, 0x7BE4, 0x6BD2, 0x72EC, 0x8AAD, 0x6803, 0x6A61, 0x51F8, 0x7A81, 0x6934, 0x5C4A, 0x9CF6, 0x82EB, 0x5BC5, 0x9149, 0x701E, 0x5678, 0x5C6F, 0x60C7, 0x6566, 0x6C8C, 0x8C5A, 0x9041, 0x9813, 0x5451, 0x66C7, 0x920D, 0x5948, 0x90A3, 0x5185, 0x4E4D, 0x51EA, 0x8599, 0x8B0E, 0x7058, 0x637A, 0x934B, 0x6962, 0x99B4, 0x7E04, 0x7577, 0x5357, 0x6960, 0x8EDF, 0x96E3, 0x6C5D, 0x4E8C, 0x5C3C, 0x5F10, 0x8FE9, 0x5302, 0x8CD1, 0x8089, 0x8679, 0x5EFF, 0x65E5, 0x4E73, 0x5165, 0x5982, 0x5C3F, 0x97EE, 0x4EFB, 0x598A, 0x5FCD, 0x8A8D, 0x6FE1, 0x79B0, 0x7962, 0x5BE7, 0x8471, 0x732B, 0x71B1, 0x5E74, 0x5FF5, 0x637B, 0x649A, 0x71C3, 0x7C98, 0x4E43, 0x5EFC, 0x4E4B, 0x57DC, 0x56A2, 0x60A9, 0x6FC3, 0x7D0D, 0x80FD, 0x8133, 0x81BF, 0x8FB2, 0x8997, 0x86A4, 0x5DF4, 0x628A, 0x64AD, 0x8987, 0x6777, 0x6CE2, 0x6D3E, 0x7436, 0x7834, 0x5A46, 0x7F75, 0x82AD, 0x99AC, 0x4FF3, 0x5EC3, 0x62DD, 0x6392, 0x6557, 0x676F, 0x76C3, 0x724C, 0x80CC, 0x80BA, 0x8F29, 0x914D, 0x500D, 0x57F9, 0x5A92, 0x6885, 0x6973, 0x7164, 0x72FD, 0x8CB7, 0x58F2, 0x8CE0, 0x966A, 0x9019, 0x877F, 0x79E4, 0x77E7, 0x8429, 0x4F2F, 0x5265, 0x535A, 0x62CD, 0x67CF, 0x6CCA, 0x767D, 0x7B94, 0x7C95, 0x8236, 0x8584, 0x8FEB, 0x66DD, 0x6F20, 0x7206, 0x7E1B, 0x83AB, 0x99C1, 0x9EA6, 0x51FD, 0x7BB1, 0x7872, 0x7BB8, 0x8087, 0x7B48, 0x6AE8, 0x5E61, 0x808C, 0x7551, 0x7560, 0x516B, 0x9262, 0x6E8C, 0x767A, 0x9197, 0x9AEA, 0x4F10, 0x7F70, 0x629C, 0x7B4F, 0x95A5, 0x9CE9, 0x567A, 0x5859, 0x86E4, 0x96BC, 0x4F34, 0x5224, 0x534A, 0x53CD, 0x53DB, 0x5E06, 0x642C, 0x6591, 0x677F, 0x6C3E, 0x6C4E, 0x7248, 0x72AF, 0x73ED, 0x7554, 0x7E41, 0x822C, 0x85E9, 0x8CA9, 0x7BC4, 0x91C6, 0x7169, 0x9812, 0x98EF, 0x633D, 0x6669, 0x756A, 0x76E4, 0x78D0, 0x8543, 0x86EE, 0x532A, 0x5351, 0x5426, 0x5983, 0x5E87, 0x5F7C, 0x60B2, 0x6249, 0x6279, 0x62AB, 0x6590, 0x6BD4, 0x6CCC, 0x75B2, 0x76AE, 0x7891, 0x79D8, 0x7DCB, 0x7F77, 0x80A5, 0x88AB, 0x8AB9, 0x8CBB, 0x907F, 0x975E, 0x98DB, 0x6A0B, 0x7C38, 0x5099, 0x5C3E, 0x5FAE, 0x6787, 0x6BD8, 0x7435, 0x7709, 0x7F8E, 0x9F3B, 0x67CA, 0x7A17, 0x5339, 0x758B, 0x9AED, 0x5F66, 0x819D, 0x83F1, 0x8098, 0x5F3C, 0x5FC5, 0x7562, 0x7B46, 0x903C, 0x6867, 0x59EB, 0x5A9B, 0x7D10, 0x767E, 0x8B2C, 0x4FF5, 0x5F6A, 0x6A19, 0x6C37, 0x6F02, 0x74E2, 0x7968, 0x8868, 0x8A55, 0x8C79, 0x5EDF, 0x63CF, 0x75C5, 0x79D2, 0x82D7, 0x9328, 0x92F2, 0x849C, 0x86ED, 0x9C2D, 0x54C1, 0x5F6C, 0x658C, 0x6D5C, 0x7015, 0x8CA7, 0x8CD3, 0x983B, 0x654F, 0x74F6, 0x4E0D, 0x4ED8, 0x57E0, 0x592B, 0x5A66, 0x5BCC, 0x51A8, 0x5E03, 0x5E9C, 0x6016, 0x6276, 0x6577, 0x65A7, 0x666E, 0x6D6E, 0x7236, 0x7B26, 0x8150, 0x819A, 0x8299, 0x8B5C, 0x8CA0, 0x8CE6, 0x8D74, 0x961C, 0x9644, 0x4FAE, 0x64AB, 0x6B66, 0x821E, 0x8461, 0x856A, 0x90E8, 0x5C01, 0x6953, 0x98A8, 0x847A, 0x8557, 0x4F0F, 0x526F, 0x5FA9, 0x5E45, 0x670D, 0x798F, 0x8179, 0x8907, 0x8986, 0x6DF5, 0x5F17, 0x6255, 0x6CB8, 0x4ECF, 0x7269, 0x9B92, 0x5206, 0x543B, 0x5674, 0x58B3, 0x61A4, 0x626E, 0x711A, 0x596E, 0x7C89, 0x7CDE, 0x7D1B, 0x96F0, 0x6587, 0x805E, 0x4E19, 0x4F75, 0x5175, 0x5840, 0x5E63, 0x5E73, 0x5F0A, 0x67C4, 0x4E26, 0x853D, 0x9589, 0x965B, 0x7C73, 0x9801, 0x50FB, 0x58C1, 0x7656, 0x78A7, 0x5225, 0x77A5, 0x8511, 0x7B86, 0x504F, 0x5909, 0x7247, 0x7BC7, 0x7DE8, 0x8FBA, 0x8FD4, 0x904D, 0x4FBF, 0x52C9, 0x5A29, 0x5F01, 0x97AD, 0x4FDD, 0x8217, 0x92EA, 0x5703, 0x6355, 0x6B69, 0x752B, 0x88DC, 0x8F14, 0x7A42, 0x52DF, 0x5893, 0x6155, 0x620A, 0x66AE, 0x6BCD, 0x7C3F, 0x83E9, 0x5023, 0x4FF8, 0x5305, 0x5446, 0x5831, 0x5949, 0x5B9D, 0x5CF0, 0x5CEF, 0x5D29, 0x5E96, 0x62B1, 0x6367, 0x653E, 0x65B9, 0x670B, 0x6CD5, 0x6CE1, 0x70F9, 0x7832, 0x7E2B, 0x80DE, 0x82B3, 0x840C, 0x84EC, 0x8702, 0x8912, 0x8A2A, 0x8C4A, 0x90A6, 0x92D2, 0x98FD, 0x9CF3, 0x9D6C, 0x4E4F, 0x4EA1, 0x508D, 0x5256, 0x574A, 0x59A8, 0x5E3D, 0x5FD8, 0x5FD9, 0x623F, 0x66B4, 0x671B, 0x67D0, 0x68D2, 0x5192, 0x7D21, 0x80AA, 0x81A8, 0x8B00, 0x8C8C, 0x8CBF, 0x927E, 0x9632, 0x5420, 0x982C, 0x5317, 0x50D5, 0x535C, 0x58A8, 0x64B2, 0x6734, 0x7267, 0x7766, 0x7A46, 0x91E6, 0x52C3, 0x6CA1, 0x6B86, 0x5800, 0x5E4C, 0x5954, 0x672C, 0x7FFB, 0x51E1, 0x76C6, 0x6469, 0x78E8, 0x9B54, 0x9EBB, 0x57CB, 0x59B9, 0x6627, 0x679A, 0x6BCE, 0x54E9, 0x69D9, 0x5E55, 0x819C, 0x6795, 0x9BAA, 0x67FE, 0x9C52, 0x685D, 0x4EA6, 0x4FE3, 0x53C8, 0x62B9, 0x672B, 0x6CAB, 0x8FC4, 0x4FAD, 0x7E6D, 0x9EBF, 0x4E07, 0x6162, 0x6E80, 0x6F2B, 0x8513, 0x5473, 0x672A, 0x9B45, 0x5DF3, 0x7B95, 0x5CAC, 0x5BC6, 0x871C, 0x6E4A, 0x84D1, 0x7A14, 0x8108, 0x5999, 0x7C8D, 0x6C11, 0x7720, 0x52D9, 0x5922, 0x7121, 0x725F, 0x77DB, 0x9727, 0x9D61, 0x690B, 0x5A7F, 0x5A18, 0x51A5, 0x540D, 0x547D, 0x660E, 0x76DF, 0x8FF7, 0x9298, 0x9CF4, 0x59EA, 0x725D, 0x6EC5, 0x514D, 0x68C9, 0x7DBF, 0x7DEC, 0x9762, 0x9EBA, 0x6478, 0x6A21, 0x8302, 0x5984, 0x5B5F, 0x6BDB, 0x731B, 0x76F2, 0x7DB2, 0x8017, 0x8499, 0x5132, 0x6728, 0x9ED9, 0x76EE, 0x6762, 0x52FF, 0x9905, 0x5C24, 0x623B, 0x7C7E, 0x8CB0, 0x554F, 0x60B6, 0x7D0B, 0x9580, 0x5301, 0x4E5F, 0x51B6, 0x591C, 0x723A, 0x8036, 0x91CE, 0x5F25, 0x77E2, 0x5384, 0x5F79, 0x7D04, 0x85AC, 0x8A33, 0x8E8D, 0x9756, 0x67F3, 0x85AE, 0x9453, 0x6109, 0x6108, 0x6CB9, 0x7652, 0x8AED, 0x8F38, 0x552F, 0x4F51, 0x512A, 0x52C7, 0x53CB, 0x5BA5, 0x5E7D, 0x60A0, 0x6182, 0x63D6, 0x6709, 0x67DA, 0x6E67, 0x6D8C, 0x7336, 0x7337, 0x7531, 0x7950, 0x88D5, 0x8A98, 0x904A, 0x9091, 0x90F5, 0x96C4, 0x878D, 0x5915, 0x4E88, 0x4F59, 0x4E0E, 0x8A89, 0x8F3F, 0x9810, 0x50AD, 0x5E7C, 0x5996, 0x5BB9, 0x5EB8, 0x63DA, 0x63FA, 0x64C1, 0x66DC, 0x694A, 0x69D8, 0x6D0B, 0x6EB6, 0x7194, 0x7528, 0x7AAF, 0x7F8A, 0x8000, 0x8449, 0x84C9, 0x8981, 0x8B21, 0x8E0A, 0x9065, 0x967D, 0x990A, 0x617E, 0x6291, 0x6B32, 0x6C83, 0x6D74, 0x7FCC, 0x7FFC, 0x6DC0, 0x7F85, 0x87BA, 0x88F8, 0x6765, 0x83B1, 0x983C, 0x96F7, 0x6D1B, 0x7D61, 0x843D, 0x916A, 0x4E71, 0x5375, 0x5D50, 0x6B04, 0x6FEB, 0x85CD, 0x862D, 0x89A7, 0x5229, 0x540F, 0x5C65, 0x674E, 0x68A8, 0x7406, 0x7483, 0x75E2, 0x88CF, 0x88E1, 0x91CC, 0x96E2, 0x9678, 0x5F8B, 0x7387, 0x7ACB, 0x844E, 0x63A0, 0x7565, 0x5289, 0x6D41, 0x6E9C, 0x7409, 0x7559, 0x786B, 0x7C92, 0x9686, 0x7ADC, 0x9F8D, 0x4FB6, 0x616E, 0x65C5, 0x865C, 0x4E86, 0x4EAE, 0x50DA, 0x4E21, 0x51CC, 0x5BEE, 0x6599, 0x6881, 0x6DBC, 0x731F, 0x7642, 0x77AD, 0x7A1C, 0x7CE7, 0x826F, 0x8AD2, 0x907C, 0x91CF, 0x9675, 0x9818, 0x529B, 0x7DD1, 0x502B, 0x5398, 0x6797, 0x6DCB, 0x71D0, 0x7433, 0x81E8, 0x8F2A, 0x96A3, 0x9C57, 0x9E9F, 0x7460, 0x5841, 0x6D99, 0x7D2F, 0x985E, 0x4EE4, 0x4F36, 0x4F8B, 0x51B7, 0x52B1, 0x5DBA, 0x601C, 0x73B2, 0x793C, 0x82D3, 0x9234, 0x96B7, 0x96F6, 0x970A, 0x9E97, 0x9F62, 0x66A6, 0x6B74, 0x5217, 0x52A3, 0x70C8, 0x88C2, 0x5EC9, 0x604B, 0x6190, 0x6F23, 0x7149, 0x7C3E, 0x7DF4, 0x806F, 0x84EE, 0x9023, 0x932C, 0x5442, 0x9B6F, 0x6AD3, 0x7089, 0x8CC2, 0x8DEF, 0x9732, 0x52B4, 0x5A41, 0x5ECA, 0x5F04, 0x6717, 0x697C, 0x6994, 0x6D6A, 0x6F0F, 0x7262, 0x72FC, 0x7BED, 0x8001, 0x807E, 0x874B, 0x90CE, 0x516D, 0x9E93, 0x7984, 0x808B, 0x9332, 0x8AD6, 0x502D, 0x548C, 0x8A71, 0x6B6A, 0x8CC4, 0x8107, 0x60D1, 0x67A0, 0x9DF2, 0x4E99, 0x4E98, 0x9C10, 0x8A6B, 0x85C1, 0x8568, 0x6900, 0x6E7E, 0x7897, 0x8155 }; /* d0a1 to f4a6 is contiguous */ static unsigned short d02f4[] = { 0x5F0C, 0x4E10, 0x4E15, 0x4E2A, 0x4E31, 0x4E36, 0x4E3C, 0x4E3F, 0x4E42, 0x4E56, 0x4E58, 0x4E82, 0x4E85, 0x8C6B, 0x4E8A, 0x8212, 0x5F0D, 0x4E8E, 0x4E9E, 0x4E9F, 0x4EA0, 0x4EA2, 0x4EB0, 0x4EB3, 0x4EB6, 0x4ECE, 0x4ECD, 0x4EC4, 0x4EC6, 0x4EC2, 0x4ED7, 0x4EDE, 0x4EED, 0x4EDF, 0x4EF7, 0x4F09, 0x4F5A, 0x4F30, 0x4F5B, 0x4F5D, 0x4F57, 0x4F47, 0x4F76, 0x4F88, 0x4F8F, 0x4F98, 0x4F7B, 0x4F69, 0x4F70, 0x4F91, 0x4F6F, 0x4F86, 0x4F96, 0x5118, 0x4FD4, 0x4FDF, 0x4FCE, 0x4FD8, 0x4FDB, 0x4FD1, 0x4FDA, 0x4FD0, 0x4FE4, 0x4FE5, 0x501A, 0x5028, 0x5014, 0x502A, 0x5025, 0x5005, 0x4F1C, 0x4FF6, 0x5021, 0x5029, 0x502C, 0x4FFE, 0x4FEF, 0x5011, 0x5006, 0x5043, 0x5047, 0x6703, 0x5055, 0x5050, 0x5048, 0x505A, 0x5056, 0x506C, 0x5078, 0x5080, 0x509A, 0x5085, 0x50B4, 0x50B2, 0x50C9, 0x50CA, 0x50B3, 0x50C2, 0x50D6, 0x50DE, 0x50E5, 0x50ED, 0x50E3, 0x50EE, 0x50F9, 0x50F5, 0x5109, 0x5101, 0x5102, 0x5116, 0x5115, 0x5114, 0x511A, 0x5121, 0x513A, 0x5137, 0x513C, 0x513B, 0x513F, 0x5140, 0x5152, 0x514C, 0x5154, 0x5162, 0x7AF8, 0x5169, 0x516A, 0x516E, 0x5180, 0x5182, 0x56D8, 0x518C, 0x5189, 0x518F, 0x5191, 0x5193, 0x5195, 0x5196, 0x51A4, 0x51A6, 0x51A2, 0x51A9, 0x51AA, 0x51AB, 0x51B3, 0x51B1, 0x51B2, 0x51B0, 0x51B5, 0x51BD, 0x51C5, 0x51C9, 0x51DB, 0x51E0, 0x8655, 0x51E9, 0x51ED, 0x51F0, 0x51F5, 0x51FE, 0x5204, 0x520B, 0x5214, 0x520E, 0x5227, 0x522A, 0x522E, 0x5233, 0x5239, 0x524F, 0x5244, 0x524B, 0x524C, 0x525E, 0x5254, 0x526A, 0x5274, 0x5269, 0x5273, 0x527F, 0x527D, 0x528D, 0x5294, 0x5292, 0x5271, 0x5288, 0x5291, 0x8FA8, 0x8FA7, 0x52AC, 0x52AD, 0x52BC, 0x52B5, 0x52C1, 0x52CD, 0x52D7, 0x52DE, 0x52E3, 0x52E6, 0x98ED, 0x52E0, 0x52F3, 0x52F5, 0x52F8, 0x52F9, 0x5306, 0x5308, 0x7538, 0x530D, 0x5310, 0x530F, 0x5315, 0x531A, 0x5323, 0x532F, 0x5331, 0x5333, 0x5338, 0x5340, 0x5346, 0x5345, 0x4E17, 0x5349, 0x534D, 0x51D6, 0x535E, 0x5369, 0x536E, 0x5918, 0x537B, 0x5377, 0x5382, 0x5396, 0x53A0, 0x53A6, 0x53A5, 0x53AE, 0x53B0, 0x53B6, 0x53C3, 0x7C12, 0x96D9, 0x53DF, 0x66FC, 0x71EE, 0x53EE, 0x53E8, 0x53ED, 0x53FA, 0x5401, 0x543D, 0x5440, 0x542C, 0x542D, 0x543C, 0x542E, 0x5436, 0x5429, 0x541D, 0x544E, 0x548F, 0x5475, 0x548E, 0x545F, 0x5471, 0x5477, 0x5470, 0x5492, 0x547B, 0x5480, 0x5476, 0x5484, 0x5490, 0x5486, 0x54C7, 0x54A2, 0x54B8, 0x54A5, 0x54AC, 0x54C4, 0x54C8, 0x54A8, 0x54AB, 0x54C2, 0x54A4, 0x54BE, 0x54BC, 0x54D8, 0x54E5, 0x54E6, 0x550F, 0x5514, 0x54FD, 0x54EE, 0x54ED, 0x54FA, 0x54E2, 0x5539, 0x5540, 0x5563, 0x554C, 0x552E, 0x555C, 0x5545, 0x5556, 0x5557, 0x5538, 0x5533, 0x555D, 0x5599, 0x5580, 0x54AF, 0x558A, 0x559F, 0x557B, 0x557E, 0x5598, 0x559E, 0x55AE, 0x557C, 0x5583, 0x55A9, 0x5587, 0x55A8, 0x55DA, 0x55C5, 0x55DF, 0x55C4, 0x55DC, 0x55E4, 0x55D4, 0x5614, 0x55F7, 0x5616, 0x55FE, 0x55FD, 0x561B, 0x55F9, 0x564E, 0x5650, 0x71DF, 0x5634, 0x5636, 0x5632, 0x5638, 0x566B, 0x5664, 0x562F, 0x566C, 0x566A, 0x5686, 0x5680, 0x568A, 0x56A0, 0x5694, 0x568F, 0x56A5, 0x56AE, 0x56B6, 0x56B4, 0x56C2, 0x56BC, 0x56C1, 0x56C3, 0x56C0, 0x56C8, 0x56CE, 0x56D1, 0x56D3, 0x56D7, 0x56EE, 0x56F9, 0x5700, 0x56FF, 0x5704, 0x5709, 0x5708, 0x570B, 0x570D, 0x5713, 0x5718, 0x5716, 0x55C7, 0x571C, 0x5726, 0x5737, 0x5738, 0x574E, 0x573B, 0x5740, 0x574F, 0x5769, 0x57C0, 0x5788, 0x5761, 0x577F, 0x5789, 0x5793, 0x57A0, 0x57B3, 0x57A4, 0x57AA, 0x57B0, 0x57C3, 0x57C6, 0x57D4, 0x57D2, 0x57D3, 0x580A, 0x57D6, 0x57E3, 0x580B, 0x5819, 0x581D, 0x5872, 0x5821, 0x5862, 0x584B, 0x5870, 0x6BC0, 0x5852, 0x583D, 0x5879, 0x5885, 0x58B9, 0x589F, 0x58AB, 0x58BA, 0x58DE, 0x58BB, 0x58B8, 0x58AE, 0x58C5, 0x58D3, 0x58D1, 0x58D7, 0x58D9, 0x58D8, 0x58E5, 0x58DC, 0x58E4, 0x58DF, 0x58EF, 0x58FA, 0x58F9, 0x58FB, 0x58FC, 0x58FD, 0x5902, 0x590A, 0x5910, 0x591B, 0x68A6, 0x5925, 0x592C, 0x592D, 0x5932, 0x5938, 0x593E, 0x7AD2, 0x5955, 0x5950, 0x594E, 0x595A, 0x5958, 0x5962, 0x5960, 0x5967, 0x596C, 0x5969, 0x5978, 0x5981, 0x599D, 0x4F5E, 0x4FAB, 0x59A3, 0x59B2, 0x59C6, 0x59E8, 0x59DC, 0x598D, 0x59D9, 0x59DA, 0x5A25, 0x5A1F, 0x5A11, 0x5A1C, 0x5A09, 0x5A1A, 0x5A40, 0x5A6C, 0x5A49, 0x5A35, 0x5A36, 0x5A62, 0x5A6A, 0x5A9A, 0x5ABC, 0x5ABE, 0x5ACB, 0x5AC2, 0x5ABD, 0x5AE3, 0x5AD7, 0x5AE6, 0x5AE9, 0x5AD6, 0x5AFA, 0x5AFB, 0x5B0C, 0x5B0B, 0x5B16, 0x5B32, 0x5AD0, 0x5B2A, 0x5B36, 0x5B3E, 0x5B43, 0x5B45, 0x5B40, 0x5B51, 0x5B55, 0x5B5A, 0x5B5B, 0x5B65, 0x5B69, 0x5B70, 0x5B73, 0x5B75, 0x5B78, 0x6588, 0x5B7A, 0x5B80, 0x5B83, 0x5BA6, 0x5BB8, 0x5BC3, 0x5BC7, 0x5BC9, 0x5BD4, 0x5BD0, 0x5BE4, 0x5BE6, 0x5BE2, 0x5BDE, 0x5BE5, 0x5BEB, 0x5BF0, 0x5BF6, 0x5BF3, 0x5C05, 0x5C07, 0x5C08, 0x5C0D, 0x5C13, 0x5C20, 0x5C22, 0x5C28, 0x5C38, 0x5C39, 0x5C41, 0x5C46, 0x5C4E, 0x5C53, 0x5C50, 0x5C4F, 0x5B71, 0x5C6C, 0x5C6E, 0x4E62, 0x5C76, 0x5C79, 0x5C8C, 0x5C91, 0x5C94, 0x599B, 0x5CAB, 0x5CBB, 0x5CB6, 0x5CBC, 0x5CB7, 0x5CC5, 0x5CBE, 0x5CC7, 0x5CD9, 0x5CE9, 0x5CFD, 0x5CFA, 0x5CED, 0x5D8C, 0x5CEA, 0x5D0B, 0x5D15, 0x5D17, 0x5D5C, 0x5D1F, 0x5D1B, 0x5D11, 0x5D14, 0x5D22, 0x5D1A, 0x5D19, 0x5D18, 0x5D4C, 0x5D52, 0x5D4E, 0x5D4B, 0x5D6C, 0x5D73, 0x5D76, 0x5D87, 0x5D84, 0x5D82, 0x5DA2, 0x5D9D, 0x5DAC, 0x5DAE, 0x5DBD, 0x5D90, 0x5DB7, 0x5DBC, 0x5DC9, 0x5DCD, 0x5DD3, 0x5DD2, 0x5DD6, 0x5DDB, 0x5DEB, 0x5DF2, 0x5DF5, 0x5E0B, 0x5E1A, 0x5E19, 0x5E11, 0x5E1B, 0x5E36, 0x5E37, 0x5E44, 0x5E43, 0x5E40, 0x5E4E, 0x5E57, 0x5E54, 0x5E5F, 0x5E62, 0x5E64, 0x5E47, 0x5E75, 0x5E76, 0x5E7A, 0x9EBC, 0x5E7F, 0x5EA0, 0x5EC1, 0x5EC2, 0x5EC8, 0x5ED0, 0x5ECF, 0x5ED6, 0x5EE3, 0x5EDD, 0x5EDA, 0x5EDB, 0x5EE2, 0x5EE1, 0x5EE8, 0x5EE9, 0x5EEC, 0x5EF1, 0x5EF3, 0x5EF0, 0x5EF4, 0x5EF8, 0x5EFE, 0x5F03, 0x5F09, 0x5F5D, 0x5F5C, 0x5F0B, 0x5F11, 0x5F16, 0x5F29, 0x5F2D, 0x5F38, 0x5F41, 0x5F48, 0x5F4C, 0x5F4E, 0x5F2F, 0x5F51, 0x5F56, 0x5F57, 0x5F59, 0x5F61, 0x5F6D, 0x5F73, 0x5F77, 0x5F83, 0x5F82, 0x5F7F, 0x5F8A, 0x5F88, 0x5F91, 0x5F87, 0x5F9E, 0x5F99, 0x5F98, 0x5FA0, 0x5FA8, 0x5FAD, 0x5FBC, 0x5FD6, 0x5FFB, 0x5FE4, 0x5FF8, 0x5FF1, 0x5FDD, 0x60B3, 0x5FFF, 0x6021, 0x6060, 0x6019, 0x6010, 0x6029, 0x600E, 0x6031, 0x601B, 0x6015, 0x602B, 0x6026, 0x600F, 0x603A, 0x605A, 0x6041, 0x606A, 0x6077, 0x605F, 0x604A, 0x6046, 0x604D, 0x6063, 0x6043, 0x6064, 0x6042, 0x606C, 0x606B, 0x6059, 0x6081, 0x608D, 0x60E7, 0x6083, 0x609A, 0x6084, 0x609B, 0x6096, 0x6097, 0x6092, 0x60A7, 0x608B, 0x60E1, 0x60B8, 0x60E0, 0x60D3, 0x60B4, 0x5FF0, 0x60BD, 0x60C6, 0x60B5, 0x60D8, 0x614D, 0x6115, 0x6106, 0x60F6, 0x60F7, 0x6100, 0x60F4, 0x60FA, 0x6103, 0x6121, 0x60FB, 0x60F1, 0x610D, 0x610E, 0x6147, 0x613E, 0x6128, 0x6127, 0x614A, 0x613F, 0x613C, 0x612C, 0x6134, 0x613D, 0x6142, 0x6144, 0x6173, 0x6177, 0x6158, 0x6159, 0x615A, 0x616B, 0x6174, 0x616F, 0x6165, 0x6171, 0x615F, 0x615D, 0x6153, 0x6175, 0x6199, 0x6196, 0x6187, 0x61AC, 0x6194, 0x619A, 0x618A, 0x6191, 0x61AB, 0x61AE, 0x61CC, 0x61CA, 0x61C9, 0x61F7, 0x61C8, 0x61C3, 0x61C6, 0x61BA, 0x61CB, 0x7F79, 0x61CD, 0x61E6, 0x61E3, 0x61F6, 0x61FA, 0x61F4, 0x61FF, 0x61FD, 0x61FC, 0x61FE, 0x6200, 0x6208, 0x6209, 0x620D, 0x620C, 0x6214, 0x621B, 0x621E, 0x6221, 0x622A, 0x622E, 0x6230, 0x6232, 0x6233, 0x6241, 0x624E, 0x625E, 0x6263, 0x625B, 0x6260, 0x6268, 0x627C, 0x6282, 0x6289, 0x627E, 0x6292, 0x6293, 0x6296, 0x62D4, 0x6283, 0x6294, 0x62D7, 0x62D1, 0x62BB, 0x62CF, 0x62FF, 0x62C6, 0x64D4, 0x62C8, 0x62DC, 0x62CC, 0x62CA, 0x62C2, 0x62C7, 0x629B, 0x62C9, 0x630C, 0x62EE, 0x62F1, 0x6327, 0x6302, 0x6308, 0x62EF, 0x62F5, 0x6350, 0x633E, 0x634D, 0x641C, 0x634F, 0x6396, 0x638E, 0x6380, 0x63AB, 0x6376, 0x63A3, 0x638F, 0x6389, 0x639F, 0x63B5, 0x636B, 0x6369, 0x63BE, 0x63E9, 0x63C0, 0x63C6, 0x63E3, 0x63C9, 0x63D2, 0x63F6, 0x63C4, 0x6416, 0x6434, 0x6406, 0x6413, 0x6426, 0x6436, 0x651D, 0x6417, 0x6428, 0x640F, 0x6467, 0x646F, 0x6476, 0x644E, 0x652A, 0x6495, 0x6493, 0x64A5, 0x64A9, 0x6488, 0x64BC, 0x64DA, 0x64D2, 0x64C5, 0x64C7, 0x64BB, 0x64D8, 0x64C2, 0x64F1, 0x64E7, 0x8209, 0x64E0, 0x64E1, 0x62AC, 0x64E3, 0x64EF, 0x652C, 0x64F6, 0x64F4, 0x64F2, 0x64FA, 0x6500, 0x64FD, 0x6518, 0x651C, 0x6505, 0x6524, 0x6523, 0x652B, 0x6534, 0x6535, 0x6537, 0x6536, 0x6538, 0x754B, 0x6548, 0x6556, 0x6555, 0x654D, 0x6558, 0x655E, 0x655D, 0x6572, 0x6578, 0x6582, 0x6583, 0x8B8A, 0x659B, 0x659F, 0x65AB, 0x65B7, 0x65C3, 0x65C6, 0x65C1, 0x65C4, 0x65CC, 0x65D2, 0x65DB, 0x65D9, 0x65E0, 0x65E1, 0x65F1, 0x6772, 0x660A, 0x6603, 0x65FB, 0x6773, 0x6635, 0x6636, 0x6634, 0x661C, 0x664F, 0x6644, 0x6649, 0x6641, 0x665E, 0x665D, 0x6664, 0x6667, 0x6668, 0x665F, 0x6662, 0x6670, 0x6683, 0x6688, 0x668E, 0x6689, 0x6684, 0x6698, 0x669D, 0x66C1, 0x66B9, 0x66C9, 0x66BE, 0x66BC, 0x66C4, 0x66B8, 0x66D6, 0x66DA, 0x66E0, 0x663F, 0x66E6, 0x66E9, 0x66F0, 0x66F5, 0x66F7, 0x670F, 0x6716, 0x671E, 0x6726, 0x6727, 0x9738, 0x672E, 0x673F, 0x6736, 0x6741, 0x6738, 0x6737, 0x6746, 0x675E, 0x6760, 0x6759, 0x6763, 0x6764, 0x6789, 0x6770, 0x67A9, 0x677C, 0x676A, 0x678C, 0x678B, 0x67A6, 0x67A1, 0x6785, 0x67B7, 0x67EF, 0x67B4, 0x67EC, 0x67B3, 0x67E9, 0x67B8, 0x67E4, 0x67DE, 0x67DD, 0x67E2, 0x67EE, 0x67B9, 0x67CE, 0x67C6, 0x67E7, 0x6A9C, 0x681E, 0x6846, 0x6829, 0x6840, 0x684D, 0x6832, 0x684E, 0x68B3, 0x682B, 0x6859, 0x6863, 0x6877, 0x687F, 0x689F, 0x688F, 0x68AD, 0x6894, 0x689D, 0x689B, 0x6883, 0x6AAE, 0x68B9, 0x6874, 0x68B5, 0x68A0, 0x68BA, 0x690F, 0x688D, 0x687E, 0x6901, 0x68CA, 0x6908, 0x68D8, 0x6922, 0x6926, 0x68E1, 0x690C, 0x68CD, 0x68D4, 0x68E7, 0x68D5, 0x6936, 0x6912, 0x6904, 0x68D7, 0x68E3, 0x6925, 0x68F9, 0x68E0, 0x68EF, 0x6928, 0x692A, 0x691A, 0x6923, 0x6921, 0x68C6, 0x6979, 0x6977, 0x695C, 0x6978, 0x696B, 0x6954, 0x697E, 0x696E, 0x6939, 0x6974, 0x693D, 0x6959, 0x6930, 0x6961, 0x695E, 0x695D, 0x6981, 0x696A, 0x69B2, 0x69AE, 0x69D0, 0x69BF, 0x69C1, 0x69D3, 0x69BE, 0x69CE, 0x5BE8, 0x69CA, 0x69DD, 0x69BB, 0x69C3, 0x69A7, 0x6A2E, 0x6991, 0x69A0, 0x699C, 0x6995, 0x69B4, 0x69DE, 0x69E8, 0x6A02, 0x6A1B, 0x69FF, 0x6B0A, 0x69F9, 0x69F2, 0x69E7, 0x6A05, 0x69B1, 0x6A1E, 0x69ED, 0x6A14, 0x69EB, 0x6A0A, 0x6A12, 0x6AC1, 0x6A23, 0x6A13, 0x6A44, 0x6A0C, 0x6A72, 0x6A36, 0x6A78, 0x6A47, 0x6A62, 0x6A59, 0x6A66, 0x6A48, 0x6A38, 0x6A22, 0x6A90, 0x6A8D, 0x6AA0, 0x6A84, 0x6AA2, 0x6AA3, 0x6A97, 0x8617, 0x6ABB, 0x6AC3, 0x6AC2, 0x6AB8, 0x6AB3, 0x6AAC, 0x6ADE, 0x6AD1, 0x6ADF, 0x6AAA, 0x6ADA, 0x6AEA, 0x6AFB, 0x6B05, 0x8616, 0x6AFA, 0x6B12, 0x6B16, 0x9B31, 0x6B1F, 0x6B38, 0x6B37, 0x76DC, 0x6B39, 0x98EE, 0x6B47, 0x6B43, 0x6B49, 0x6B50, 0x6B59, 0x6B54, 0x6B5B, 0x6B5F, 0x6B61, 0x6B78, 0x6B79, 0x6B7F, 0x6B80, 0x6B84, 0x6B83, 0x6B8D, 0x6B98, 0x6B95, 0x6B9E, 0x6BA4, 0x6BAA, 0x6BAB, 0x6BAF, 0x6BB2, 0x6BB1, 0x6BB3, 0x6BB7, 0x6BBC, 0x6BC6, 0x6BCB, 0x6BD3, 0x6BDF, 0x6BEC, 0x6BEB, 0x6BF3, 0x6BEF, 0x9EBE, 0x6C08, 0x6C13, 0x6C14, 0x6C1B, 0x6C24, 0x6C23, 0x6C5E, 0x6C55, 0x6C62, 0x6C6A, 0x6C82, 0x6C8D, 0x6C9A, 0x6C81, 0x6C9B, 0x6C7E, 0x6C68, 0x6C73, 0x6C92, 0x6C90, 0x6CC4, 0x6CF1, 0x6CD3, 0x6CBD, 0x6CD7, 0x6CC5, 0x6CDD, 0x6CAE, 0x6CB1, 0x6CBE, 0x6CBA, 0x6CDB, 0x6CEF, 0x6CD9, 0x6CEA, 0x6D1F, 0x884D, 0x6D36, 0x6D2B, 0x6D3D, 0x6D38, 0x6D19, 0x6D35, 0x6D33, 0x6D12, 0x6D0C, 0x6D63, 0x6D93, 0x6D64, 0x6D5A, 0x6D79, 0x6D59, 0x6D8E, 0x6D95, 0x6FE4, 0x6D85, 0x6DF9, 0x6E15, 0x6E0A, 0x6DB5, 0x6DC7, 0x6DE6, 0x6DB8, 0x6DC6, 0x6DEC, 0x6DDE, 0x6DCC, 0x6DE8, 0x6DD2, 0x6DC5, 0x6DFA, 0x6DD9, 0x6DE4, 0x6DD5, 0x6DEA, 0x6DEE, 0x6E2D, 0x6E6E, 0x6E2E, 0x6E19, 0x6E72, 0x6E5F, 0x6E3E, 0x6E23, 0x6E6B, 0x6E2B, 0x6E76, 0x6E4D, 0x6E1F, 0x6E43, 0x6E3A, 0x6E4E, 0x6E24, 0x6EFF, 0x6E1D, 0x6E38, 0x6E82, 0x6EAA, 0x6E98, 0x6EC9, 0x6EB7, 0x6ED3, 0x6EBD, 0x6EAF, 0x6EC4, 0x6EB2, 0x6ED4, 0x6ED5, 0x6E8F, 0x6EA5, 0x6EC2, 0x6E9F, 0x6F41, 0x6F11, 0x704C, 0x6EEC, 0x6EF8, 0x6EFE, 0x6F3F, 0x6EF2, 0x6F31, 0x6EEF, 0x6F32, 0x6ECC, 0x6F3E, 0x6F13, 0x6EF7, 0x6F86, 0x6F7A, 0x6F78, 0x6F81, 0x6F80, 0x6F6F, 0x6F5B, 0x6FF3, 0x6F6D, 0x6F82, 0x6F7C, 0x6F58, 0x6F8E, 0x6F91, 0x6FC2, 0x6F66, 0x6FB3, 0x6FA3, 0x6FA1, 0x6FA4, 0x6FB9, 0x6FC6, 0x6FAA, 0x6FDF, 0x6FD5, 0x6FEC, 0x6FD4, 0x6FD8, 0x6FF1, 0x6FEE, 0x6FDB, 0x7009, 0x700B, 0x6FFA, 0x7011, 0x7001, 0x700F, 0x6FFE, 0x701B, 0x701A, 0x6F74, 0x701D, 0x7018, 0x701F, 0x7030, 0x703E, 0x7032, 0x7051, 0x7063, 0x7099, 0x7092, 0x70AF, 0x70F1, 0x70AC, 0x70B8, 0x70B3, 0x70AE, 0x70DF, 0x70CB, 0x70DD, 0x70D9, 0x7109, 0x70FD, 0x711C, 0x7119, 0x7165, 0x7155, 0x7188, 0x7166, 0x7162, 0x714C, 0x7156, 0x716C, 0x718F, 0x71FB, 0x7184, 0x7195, 0x71A8, 0x71AC, 0x71D7, 0x71B9, 0x71BE, 0x71D2, 0x71C9, 0x71D4, 0x71CE, 0x71E0, 0x71EC, 0x71E7, 0x71F5, 0x71FC, 0x71F9, 0x71FF, 0x720D, 0x7210, 0x721B, 0x7228, 0x722D, 0x722C, 0x7230, 0x7232, 0x723B, 0x723C, 0x723F, 0x7240, 0x7246, 0x724B, 0x7258, 0x7274, 0x727E, 0x7282, 0x7281, 0x7287, 0x7292, 0x7296, 0x72A2, 0x72A7, 0x72B9, 0x72B2, 0x72C3, 0x72C6, 0x72C4, 0x72CE, 0x72D2, 0x72E2, 0x72E0, 0x72E1, 0x72F9, 0x72F7, 0x500F, 0x7317, 0x730A, 0x731C, 0x7316, 0x731D, 0x7334, 0x732F, 0x7329, 0x7325, 0x733E, 0x734E, 0x734F, 0x9ED8, 0x7357, 0x736A, 0x7368, 0x7370, 0x7378, 0x7375, 0x737B, 0x737A, 0x73C8, 0x73B3, 0x73CE, 0x73BB, 0x73C0, 0x73E5, 0x73EE, 0x73DE, 0x74A2, 0x7405, 0x746F, 0x7425, 0x73F8, 0x7432, 0x743A, 0x7455, 0x743F, 0x745F, 0x7459, 0x7441, 0x745C, 0x7469, 0x7470, 0x7463, 0x746A, 0x7476, 0x747E, 0x748B, 0x749E, 0x74A7, 0x74CA, 0x74CF, 0x74D4, 0x73F1, 0x74E0, 0x74E3, 0x74E7, 0x74E9, 0x74EE, 0x74F2, 0x74F0, 0x74F1, 0x74F8, 0x74F7, 0x7504, 0x7503, 0x7505, 0x750C, 0x750E, 0x750D, 0x7515, 0x7513, 0x751E, 0x7526, 0x752C, 0x753C, 0x7544, 0x754D, 0x754A, 0x7549, 0x755B, 0x7546, 0x755A, 0x7569, 0x7564, 0x7567, 0x756B, 0x756D, 0x7578, 0x7576, 0x7586, 0x7587, 0x7574, 0x758A, 0x7589, 0x7582, 0x7594, 0x759A, 0x759D, 0x75A5, 0x75A3, 0x75C2, 0x75B3, 0x75C3, 0x75B5, 0x75BD, 0x75B8, 0x75BC, 0x75B1, 0x75CD, 0x75CA, 0x75D2, 0x75D9, 0x75E3, 0x75DE, 0x75FE, 0x75FF, 0x75FC, 0x7601, 0x75F0, 0x75FA, 0x75F2, 0x75F3, 0x760B, 0x760D, 0x7609, 0x761F, 0x7627, 0x7620, 0x7621, 0x7622, 0x7624, 0x7634, 0x7630, 0x763B, 0x7647, 0x7648, 0x7646, 0x765C, 0x7658, 0x7661, 0x7662, 0x7668, 0x7669, 0x766A, 0x7667, 0x766C, 0x7670, 0x7672, 0x7676, 0x7678, 0x767C, 0x7680, 0x7683, 0x7688, 0x768B, 0x768E, 0x7696, 0x7693, 0x7699, 0x769A, 0x76B0, 0x76B4, 0x76B8, 0x76B9, 0x76BA, 0x76C2, 0x76CD, 0x76D6, 0x76D2, 0x76DE, 0x76E1, 0x76E5, 0x76E7, 0x76EA, 0x862F, 0x76FB, 0x7708, 0x7707, 0x7704, 0x7729, 0x7724, 0x771E, 0x7725, 0x7726, 0x771B, 0x7737, 0x7738, 0x7747, 0x775A, 0x7768, 0x776B, 0x775B, 0x7765, 0x777F, 0x777E, 0x7779, 0x778E, 0x778B, 0x7791, 0x77A0, 0x779E, 0x77B0, 0x77B6, 0x77B9, 0x77BF, 0x77BC, 0x77BD, 0x77BB, 0x77C7, 0x77CD, 0x77D7, 0x77DA, 0x77DC, 0x77E3, 0x77EE, 0x77FC, 0x780C, 0x7812, 0x7926, 0x7820, 0x792A, 0x7845, 0x788E, 0x7874, 0x7886, 0x787C, 0x789A, 0x788C, 0x78A3, 0x78B5, 0x78AA, 0x78AF, 0x78D1, 0x78C6, 0x78CB, 0x78D4, 0x78BE, 0x78BC, 0x78C5, 0x78CA, 0x78EC, 0x78E7, 0x78DA, 0x78FD, 0x78F4, 0x7907, 0x7912, 0x7911, 0x7919, 0x792C, 0x792B, 0x7940, 0x7960, 0x7957, 0x795F, 0x795A, 0x7955, 0x7953, 0x797A, 0x797F, 0x798A, 0x799D, 0x79A7, 0x9F4B, 0x79AA, 0x79AE, 0x79B3, 0x79B9, 0x79BA, 0x79C9, 0x79D5, 0x79E7, 0x79EC, 0x79E1, 0x79E3, 0x7A08, 0x7A0D, 0x7A18, 0x7A19, 0x7A20, 0x7A1F, 0x7980, 0x7A31, 0x7A3B, 0x7A3E, 0x7A37, 0x7A43, 0x7A57, 0x7A49, 0x7A61, 0x7A62, 0x7A69, 0x9F9D, 0x7A70, 0x7A79, 0x7A7D, 0x7A88, 0x7A97, 0x7A95, 0x7A98, 0x7A96, 0x7AA9, 0x7AC8, 0x7AB0, 0x7AB6, 0x7AC5, 0x7AC4, 0x7ABF, 0x9083, 0x7AC7, 0x7ACA, 0x7ACD, 0x7ACF, 0x7AD5, 0x7AD3, 0x7AD9, 0x7ADA, 0x7ADD, 0x7AE1, 0x7AE2, 0x7AE6, 0x7AED, 0x7AF0, 0x7B02, 0x7B0F, 0x7B0A, 0x7B06, 0x7B33, 0x7B18, 0x7B19, 0x7B1E, 0x7B35, 0x7B28, 0x7B36, 0x7B50, 0x7B7A, 0x7B04, 0x7B4D, 0x7B0B, 0x7B4C, 0x7B45, 0x7B75, 0x7B65, 0x7B74, 0x7B67, 0x7B70, 0x7B71, 0x7B6C, 0x7B6E, 0x7B9D, 0x7B98, 0x7B9F, 0x7B8D, 0x7B9C, 0x7B9A, 0x7B8B, 0x7B92, 0x7B8F, 0x7B5D, 0x7B99, 0x7BCB, 0x7BC1, 0x7BCC, 0x7BCF, 0x7BB4, 0x7BC6, 0x7BDD, 0x7BE9, 0x7C11, 0x7C14, 0x7BE6, 0x7BE5, 0x7C60, 0x7C00, 0x7C07, 0x7C13, 0x7BF3, 0x7BF7, 0x7C17, 0x7C0D, 0x7BF6, 0x7C23, 0x7C27, 0x7C2A, 0x7C1F, 0x7C37, 0x7C2B, 0x7C3D, 0x7C4C, 0x7C43, 0x7C54, 0x7C4F, 0x7C40, 0x7C50, 0x7C58, 0x7C5F, 0x7C64, 0x7C56, 0x7C65, 0x7C6C, 0x7C75, 0x7C83, 0x7C90, 0x7CA4, 0x7CAD, 0x7CA2, 0x7CAB, 0x7CA1, 0x7CA8, 0x7CB3, 0x7CB2, 0x7CB1, 0x7CAE, 0x7CB9, 0x7CBD, 0x7CC0, 0x7CC5, 0x7CC2, 0x7CD8, 0x7CD2, 0x7CDC, 0x7CE2, 0x9B3B, 0x7CEF, 0x7CF2, 0x7CF4, 0x7CF6, 0x7CFA, 0x7D06, 0x7D02, 0x7D1C, 0x7D15, 0x7D0A, 0x7D45, 0x7D4B, 0x7D2E, 0x7D32, 0x7D3F, 0x7D35, 0x7D46, 0x7D73, 0x7D56, 0x7D4E, 0x7D72, 0x7D68, 0x7D6E, 0x7D4F, 0x7D63, 0x7D93, 0x7D89, 0x7D5B, 0x7D8F, 0x7D7D, 0x7D9B, 0x7DBA, 0x7DAE, 0x7DA3, 0x7DB5, 0x7DC7, 0x7DBD, 0x7DAB, 0x7E3D, 0x7DA2, 0x7DAF, 0x7DDC, 0x7DB8, 0x7D9F, 0x7DB0, 0x7DD8, 0x7DDD, 0x7DE4, 0x7DDE, 0x7DFB, 0x7DF2, 0x7DE1, 0x7E05, 0x7E0A, 0x7E23, 0x7E21, 0x7E12, 0x7E31, 0x7E1F, 0x7E09, 0x7E0B, 0x7E22, 0x7E46, 0x7E66, 0x7E3B, 0x7E35, 0x7E39, 0x7E43, 0x7E37, 0x7E32, 0x7E3A, 0x7E67, 0x7E5D, 0x7E56, 0x7E5E, 0x7E59, 0x7E5A, 0x7E79, 0x7E6A, 0x7E69, 0x7E7C, 0x7E7B, 0x7E83, 0x7DD5, 0x7E7D, 0x8FAE, 0x7E7F, 0x7E88, 0x7E89, 0x7E8C, 0x7E92, 0x7E90, 0x7E93, 0x7E94, 0x7E96, 0x7E8E, 0x7E9B, 0x7E9C, 0x7F38, 0x7F3A, 0x7F45, 0x7F4C, 0x7F4D, 0x7F4E, 0x7F50, 0x7F51, 0x7F55, 0x7F54, 0x7F58, 0x7F5F, 0x7F60, 0x7F68, 0x7F69, 0x7F67, 0x7F78, 0x7F82, 0x7F86, 0x7F83, 0x7F88, 0x7F87, 0x7F8C, 0x7F94, 0x7F9E, 0x7F9D, 0x7F9A, 0x7FA3, 0x7FAF, 0x7FB2, 0x7FB9, 0x7FAE, 0x7FB6, 0x7FB8, 0x8B71, 0x7FC5, 0x7FC6, 0x7FCA, 0x7FD5, 0x7FD4, 0x7FE1, 0x7FE6, 0x7FE9, 0x7FF3, 0x7FF9, 0x98DC, 0x8006, 0x8004, 0x800B, 0x8012, 0x8018, 0x8019, 0x801C, 0x8021, 0x8028, 0x803F, 0x803B, 0x804A, 0x8046, 0x8052, 0x8058, 0x805A, 0x805F, 0x8062, 0x8068, 0x8073, 0x8072, 0x8070, 0x8076, 0x8079, 0x807D, 0x807F, 0x8084, 0x8086, 0x8085, 0x809B, 0x8093, 0x809A, 0x80AD, 0x5190, 0x80AC, 0x80DB, 0x80E5, 0x80D9, 0x80DD, 0x80C4, 0x80DA, 0x80D6, 0x8109, 0x80EF, 0x80F1, 0x811B, 0x8129, 0x8123, 0x812F, 0x814B, 0x968B, 0x8146, 0x813E, 0x8153, 0x8151, 0x80FC, 0x8171, 0x816E, 0x8165, 0x8166, 0x8174, 0x8183, 0x8188, 0x818A, 0x8180, 0x8182, 0x81A0, 0x8195, 0x81A4, 0x81A3, 0x815F, 0x8193, 0x81A9, 0x81B0, 0x81B5, 0x81BE, 0x81B8, 0x81BD, 0x81C0, 0x81C2, 0x81BA, 0x81C9, 0x81CD, 0x81D1, 0x81D9, 0x81D8, 0x81C8, 0x81DA, 0x81DF, 0x81E0, 0x81E7, 0x81FA, 0x81FB, 0x81FE, 0x8201, 0x8202, 0x8205, 0x8207, 0x820A, 0x820D, 0x8210, 0x8216, 0x8229, 0x822B, 0x8238, 0x8233, 0x8240, 0x8259, 0x8258, 0x825D, 0x825A, 0x825F, 0x8264, 0x8262, 0x8268, 0x826A, 0x826B, 0x822E, 0x8271, 0x8277, 0x8278, 0x827E, 0x828D, 0x8292, 0x82AB, 0x829F, 0x82BB, 0x82AC, 0x82E1, 0x82E3, 0x82DF, 0x82D2, 0x82F4, 0x82F3, 0x82FA, 0x8393, 0x8303, 0x82FB, 0x82F9, 0x82DE, 0x8306, 0x82DC, 0x8309, 0x82D9, 0x8335, 0x8334, 0x8316, 0x8332, 0x8331, 0x8340, 0x8339, 0x8350, 0x8345, 0x832F, 0x832B, 0x8317, 0x8318, 0x8385, 0x839A, 0x83AA, 0x839F, 0x83A2, 0x8396, 0x8323, 0x838E, 0x8387, 0x838A, 0x837C, 0x83B5, 0x8373, 0x8375, 0x83A0, 0x8389, 0x83A8, 0x83F4, 0x8413, 0x83EB, 0x83CE, 0x83FD, 0x8403, 0x83D8, 0x840B, 0x83C1, 0x83F7, 0x8407, 0x83E0, 0x83F2, 0x840D, 0x8422, 0x8420, 0x83BD, 0x8438, 0x8506, 0x83FB, 0x846D, 0x842A, 0x843C, 0x855A, 0x8484, 0x8477, 0x846B, 0x84AD, 0x846E, 0x8482, 0x8469, 0x8446, 0x842C, 0x846F, 0x8479, 0x8435, 0x84CA, 0x8462, 0x84B9, 0x84BF, 0x849F, 0x84D9, 0x84CD, 0x84BB, 0x84DA, 0x84D0, 0x84C1, 0x84C6, 0x84D6, 0x84A1, 0x8521, 0x84FF, 0x84F4, 0x8517, 0x8518, 0x852C, 0x851F, 0x8515, 0x8514, 0x84FC, 0x8540, 0x8563, 0x8558, 0x8548, 0x8541, 0x8602, 0x854B, 0x8555, 0x8580, 0x85A4, 0x8588, 0x8591, 0x858A, 0x85A8, 0x856D, 0x8594, 0x859B, 0x85EA, 0x8587, 0x859C, 0x8577, 0x857E, 0x8590, 0x85C9, 0x85BA, 0x85CF, 0x85B9, 0x85D0, 0x85D5, 0x85DD, 0x85E5, 0x85DC, 0x85F9, 0x860A, 0x8613, 0x860B, 0x85FE, 0x85FA, 0x8606, 0x8622, 0x861A, 0x8630, 0x863F, 0x864D, 0x4E55, 0x8654, 0x865F, 0x8667, 0x8671, 0x8693, 0x86A3, 0x86A9, 0x86AA, 0x868B, 0x868C, 0x86B6, 0x86AF, 0x86C4, 0x86C6, 0x86B0, 0x86C9, 0x8823, 0x86AB, 0x86D4, 0x86DE, 0x86E9, 0x86EC, 0x86DF, 0x86DB, 0x86EF, 0x8712, 0x8706, 0x8708, 0x8700, 0x8703, 0x86FB, 0x8711, 0x8709, 0x870D, 0x86F9, 0x870A, 0x8734, 0x873F, 0x8737, 0x873B, 0x8725, 0x8729, 0x871A, 0x8760, 0x875F, 0x8778, 0x874C, 0x874E, 0x8774, 0x8757, 0x8768, 0x876E, 0x8759, 0x8753, 0x8763, 0x876A, 0x8805, 0x87A2, 0x879F, 0x8782, 0x87AF, 0x87CB, 0x87BD, 0x87C0, 0x87D0, 0x96D6, 0x87AB, 0x87C4, 0x87B3, 0x87C7, 0x87C6, 0x87BB, 0x87EF, 0x87F2, 0x87E0, 0x880F, 0x880D, 0x87FE, 0x87F6, 0x87F7, 0x880E, 0x87D2, 0x8811, 0x8816, 0x8815, 0x8822, 0x8821, 0x8831, 0x8836, 0x8839, 0x8827, 0x883B, 0x8844, 0x8842, 0x8852, 0x8859, 0x885E, 0x8862, 0x886B, 0x8881, 0x887E, 0x889E, 0x8875, 0x887D, 0x88B5, 0x8872, 0x8882, 0x8897, 0x8892, 0x88AE, 0x8899, 0x88A2, 0x888D, 0x88A4, 0x88B0, 0x88BF, 0x88B1, 0x88C3, 0x88C4, 0x88D4, 0x88D8, 0x88D9, 0x88DD, 0x88F9, 0x8902, 0x88FC, 0x88F4, 0x88E8, 0x88F2, 0x8904, 0x890C, 0x890A, 0x8913, 0x8943, 0x891E, 0x8925, 0x892A, 0x892B, 0x8941, 0x8944, 0x893B, 0x8936, 0x8938, 0x894C, 0x891D, 0x8960, 0x895E, 0x8966, 0x8964, 0x896D, 0x896A, 0x896F, 0x8974, 0x8977, 0x897E, 0x8983, 0x8988, 0x898A, 0x8993, 0x8998, 0x89A1, 0x89A9, 0x89A6, 0x89AC, 0x89AF, 0x89B2, 0x89BA, 0x89BD, 0x89BF, 0x89C0, 0x89DA, 0x89DC, 0x89DD, 0x89E7, 0x89F4, 0x89F8, 0x8A03, 0x8A16, 0x8A10, 0x8A0C, 0x8A1B, 0x8A1D, 0x8A25, 0x8A36, 0x8A41, 0x8A5B, 0x8A52, 0x8A46, 0x8A48, 0x8A7C, 0x8A6D, 0x8A6C, 0x8A62, 0x8A85, 0x8A82, 0x8A84, 0x8AA8, 0x8AA1, 0x8A91, 0x8AA5, 0x8AA6, 0x8A9A, 0x8AA3, 0x8AC4, 0x8ACD, 0x8AC2, 0x8ADA, 0x8AEB, 0x8AF3, 0x8AE7, 0x8AE4, 0x8AF1, 0x8B14, 0x8AE0, 0x8AE2, 0x8AF7, 0x8ADE, 0x8ADB, 0x8B0C, 0x8B07, 0x8B1A, 0x8AE1, 0x8B16, 0x8B10, 0x8B17, 0x8B20, 0x8B33, 0x97AB, 0x8B26, 0x8B2B, 0x8B3E, 0x8B28, 0x8B41, 0x8B4C, 0x8B4F, 0x8B4E, 0x8B49, 0x8B56, 0x8B5B, 0x8B5A, 0x8B6B, 0x8B5F, 0x8B6C, 0x8B6F, 0x8B74, 0x8B7D, 0x8B80, 0x8B8C, 0x8B8E, 0x8B92, 0x8B93, 0x8B96, 0x8B99, 0x8B9A, 0x8C3A, 0x8C41, 0x8C3F, 0x8C48, 0x8C4C, 0x8C4E, 0x8C50, 0x8C55, 0x8C62, 0x8C6C, 0x8C78, 0x8C7A, 0x8C82, 0x8C89, 0x8C85, 0x8C8A, 0x8C8D, 0x8C8E, 0x8C94, 0x8C7C, 0x8C98, 0x621D, 0x8CAD, 0x8CAA, 0x8CBD, 0x8CB2, 0x8CB3, 0x8CAE, 0x8CB6, 0x8CC8, 0x8CC1, 0x8CE4, 0x8CE3, 0x8CDA, 0x8CFD, 0x8CFA, 0x8CFB, 0x8D04, 0x8D05, 0x8D0A, 0x8D07, 0x8D0F, 0x8D0D, 0x8D10, 0x9F4E, 0x8D13, 0x8CCD, 0x8D14, 0x8D16, 0x8D67, 0x8D6D, 0x8D71, 0x8D73, 0x8D81, 0x8D99, 0x8DC2, 0x8DBE, 0x8DBA, 0x8DCF, 0x8DDA, 0x8DD6, 0x8DCC, 0x8DDB, 0x8DCB, 0x8DEA, 0x8DEB, 0x8DDF, 0x8DE3, 0x8DFC, 0x8E08, 0x8E09, 0x8DFF, 0x8E1D, 0x8E1E, 0x8E10, 0x8E1F, 0x8E42, 0x8E35, 0x8E30, 0x8E34, 0x8E4A, 0x8E47, 0x8E49, 0x8E4C, 0x8E50, 0x8E48, 0x8E59, 0x8E64, 0x8E60, 0x8E2A, 0x8E63, 0x8E55, 0x8E76, 0x8E72, 0x8E7C, 0x8E81, 0x8E87, 0x8E85, 0x8E84, 0x8E8B, 0x8E8A, 0x8E93, 0x8E91, 0x8E94, 0x8E99, 0x8EAA, 0x8EA1, 0x8EAC, 0x8EB0, 0x8EC6, 0x8EB1, 0x8EBE, 0x8EC5, 0x8EC8, 0x8ECB, 0x8EDB, 0x8EE3, 0x8EFC, 0x8EFB, 0x8EEB, 0x8EFE, 0x8F0A, 0x8F05, 0x8F15, 0x8F12, 0x8F19, 0x8F13, 0x8F1C, 0x8F1F, 0x8F1B, 0x8F0C, 0x8F26, 0x8F33, 0x8F3B, 0x8F39, 0x8F45, 0x8F42, 0x8F3E, 0x8F4C, 0x8F49, 0x8F46, 0x8F4E, 0x8F57, 0x8F5C, 0x8F62, 0x8F63, 0x8F64, 0x8F9C, 0x8F9F, 0x8FA3, 0x8FAD, 0x8FAF, 0x8FB7, 0x8FDA, 0x8FE5, 0x8FE2, 0x8FEA, 0x8FEF, 0x9087, 0x8FF4, 0x9005, 0x8FF9, 0x8FFA, 0x9011, 0x9015, 0x9021, 0x900D, 0x901E, 0x9016, 0x900B, 0x9027, 0x9036, 0x9035, 0x9039, 0x8FF8, 0x904F, 0x9050, 0x9051, 0x9052, 0x900E, 0x9049, 0x903E, 0x9056, 0x9058, 0x905E, 0x9068, 0x906F, 0x9076, 0x96A8, 0x9072, 0x9082, 0x907D, 0x9081, 0x9080, 0x908A, 0x9089, 0x908F, 0x90A8, 0x90AF, 0x90B1, 0x90B5, 0x90E2, 0x90E4, 0x6248, 0x90DB, 0x9102, 0x9112, 0x9119, 0x9132, 0x9130, 0x914A, 0x9156, 0x9158, 0x9163, 0x9165, 0x9169, 0x9173, 0x9172, 0x918B, 0x9189, 0x9182, 0x91A2, 0x91AB, 0x91AF, 0x91AA, 0x91B5, 0x91B4, 0x91BA, 0x91C0, 0x91C1, 0x91C9, 0x91CB, 0x91D0, 0x91D6, 0x91DF, 0x91E1, 0x91DB, 0x91FC, 0x91F5, 0x91F6, 0x921E, 0x91FF, 0x9214, 0x922C, 0x9215, 0x9211, 0x925E, 0x9257, 0x9245, 0x9249, 0x9264, 0x9248, 0x9295, 0x923F, 0x924B, 0x9250, 0x929C, 0x9296, 0x9293, 0x929B, 0x925A, 0x92CF, 0x92B9, 0x92B7, 0x92E9, 0x930F, 0x92FA, 0x9344, 0x932E, 0x9319, 0x9322, 0x931A, 0x9323, 0x933A, 0x9335, 0x933B, 0x935C, 0x9360, 0x937C, 0x936E, 0x9356, 0x93B0, 0x93AC, 0x93AD, 0x9394, 0x93B9, 0x93D6, 0x93D7, 0x93E8, 0x93E5, 0x93D8, 0x93C3, 0x93DD, 0x93D0, 0x93C8, 0x93E4, 0x941A, 0x9414, 0x9413, 0x9403, 0x9407, 0x9410, 0x9436, 0x942B, 0x9435, 0x9421, 0x943A, 0x9441, 0x9452, 0x9444, 0x945B, 0x9460, 0x9462, 0x945E, 0x946A, 0x9229, 0x9470, 0x9475, 0x9477, 0x947D, 0x945A, 0x947C, 0x947E, 0x9481, 0x947F, 0x9582, 0x9587, 0x958A, 0x9594, 0x9596, 0x9598, 0x9599, 0x95A0, 0x95A8, 0x95A7, 0x95AD, 0x95BC, 0x95BB, 0x95B9, 0x95BE, 0x95CA, 0x6FF6, 0x95C3, 0x95CD, 0x95CC, 0x95D5, 0x95D4, 0x95D6, 0x95DC, 0x95E1, 0x95E5, 0x95E2, 0x9621, 0x9628, 0x962E, 0x962F, 0x9642, 0x964C, 0x964F, 0x964B, 0x9677, 0x965C, 0x965E, 0x965D, 0x965F, 0x9666, 0x9672, 0x966C, 0x968D, 0x9698, 0x9695, 0x9697, 0x96AA, 0x96A7, 0x96B1, 0x96B2, 0x96B0, 0x96B4, 0x96B6, 0x96B8, 0x96B9, 0x96CE, 0x96CB, 0x96C9, 0x96CD, 0x894D, 0x96DC, 0x970D, 0x96D5, 0x96F9, 0x9704, 0x9706, 0x9708, 0x9713, 0x970E, 0x9711, 0x970F, 0x9716, 0x9719, 0x9724, 0x972A, 0x9730, 0x9739, 0x973D, 0x973E, 0x9744, 0x9746, 0x9748, 0x9742, 0x9749, 0x975C, 0x9760, 0x9764, 0x9766, 0x9768, 0x52D2, 0x976B, 0x9771, 0x9779, 0x9785, 0x977C, 0x9781, 0x977A, 0x9786, 0x978B, 0x978F, 0x9790, 0x979C, 0x97A8, 0x97A6, 0x97A3, 0x97B3, 0x97B4, 0x97C3, 0x97C6, 0x97C8, 0x97CB, 0x97DC, 0x97ED, 0x9F4F, 0x97F2, 0x7ADF, 0x97F6, 0x97F5, 0x980F, 0x980C, 0x9838, 0x9824, 0x9821, 0x9837, 0x983D, 0x9846, 0x984F, 0x984B, 0x986B, 0x986F, 0x9870, 0x9871, 0x9874, 0x9873, 0x98AA, 0x98AF, 0x98B1, 0x98B6, 0x98C4, 0x98C3, 0x98C6, 0x98E9, 0x98EB, 0x9903, 0x9909, 0x9912, 0x9914, 0x9918, 0x9921, 0x991D, 0x991E, 0x9924, 0x9920, 0x992C, 0x992E, 0x993D, 0x993E, 0x9942, 0x9949, 0x9945, 0x9950, 0x994B, 0x9951, 0x9952, 0x994C, 0x9955, 0x9997, 0x9998, 0x99A5, 0x99AD, 0x99AE, 0x99BC, 0x99DF, 0x99DB, 0x99DD, 0x99D8, 0x99D1, 0x99ED, 0x99EE, 0x99F1, 0x99F2, 0x99FB, 0x99F8, 0x9A01, 0x9A0F, 0x9A05, 0x99E2, 0x9A19, 0x9A2B, 0x9A37, 0x9A45, 0x9A42, 0x9A40, 0x9A43, 0x9A3E, 0x9A55, 0x9A4D, 0x9A5B, 0x9A57, 0x9A5F, 0x9A62, 0x9A65, 0x9A64, 0x9A69, 0x9A6B, 0x9A6A, 0x9AAD, 0x9AB0, 0x9ABC, 0x9AC0, 0x9ACF, 0x9AD1, 0x9AD3, 0x9AD4, 0x9ADE, 0x9ADF, 0x9AE2, 0x9AE3, 0x9AE6, 0x9AEF, 0x9AEB, 0x9AEE, 0x9AF4, 0x9AF1, 0x9AF7, 0x9AFB, 0x9B06, 0x9B18, 0x9B1A, 0x9B1F, 0x9B22, 0x9B23, 0x9B25, 0x9B27, 0x9B28, 0x9B29, 0x9B2A, 0x9B2E, 0x9B2F, 0x9B32, 0x9B44, 0x9B43, 0x9B4F, 0x9B4D, 0x9B4E, 0x9B51, 0x9B58, 0x9B74, 0x9B93, 0x9B83, 0x9B91, 0x9B96, 0x9B97, 0x9B9F, 0x9BA0, 0x9BA8, 0x9BB4, 0x9BC0, 0x9BCA, 0x9BB9, 0x9BC6, 0x9BCF, 0x9BD1, 0x9BD2, 0x9BE3, 0x9BE2, 0x9BE4, 0x9BD4, 0x9BE1, 0x9C3A, 0x9BF2, 0x9BF1, 0x9BF0, 0x9C15, 0x9C14, 0x9C09, 0x9C13, 0x9C0C, 0x9C06, 0x9C08, 0x9C12, 0x9C0A, 0x9C04, 0x9C2E, 0x9C1B, 0x9C25, 0x9C24, 0x9C21, 0x9C30, 0x9C47, 0x9C32, 0x9C46, 0x9C3E, 0x9C5A, 0x9C60, 0x9C67, 0x9C76, 0x9C78, 0x9CE7, 0x9CEC, 0x9CF0, 0x9D09, 0x9D08, 0x9CEB, 0x9D03, 0x9D06, 0x9D2A, 0x9D26, 0x9DAF, 0x9D23, 0x9D1F, 0x9D44, 0x9D15, 0x9D12, 0x9D41, 0x9D3F, 0x9D3E, 0x9D46, 0x9D48, 0x9D5D, 0x9D5E, 0x9D64, 0x9D51, 0x9D50, 0x9D59, 0x9D72, 0x9D89, 0x9D87, 0x9DAB, 0x9D6F, 0x9D7A, 0x9D9A, 0x9DA4, 0x9DA9, 0x9DB2, 0x9DC4, 0x9DC1, 0x9DBB, 0x9DB8, 0x9DBA, 0x9DC6, 0x9DCF, 0x9DC2, 0x9DD9, 0x9DD3, 0x9DF8, 0x9DE6, 0x9DED, 0x9DEF, 0x9DFD, 0x9E1A, 0x9E1B, 0x9E1E, 0x9E75, 0x9E79, 0x9E7D, 0x9E81, 0x9E88, 0x9E8B, 0x9E8C, 0x9E92, 0x9E95, 0x9E91, 0x9E9D, 0x9EA5, 0x9EA9, 0x9EB8, 0x9EAA, 0x9EAD, 0x9761, 0x9ECC, 0x9ECE, 0x9ECF, 0x9ED0, 0x9ED4, 0x9EDC, 0x9EDE, 0x9EDD, 0x9EE0, 0x9EE5, 0x9EE8, 0x9EEF, 0x9EF4, 0x9EF6, 0x9EF7, 0x9EF9, 0x9EFB, 0x9EFC, 0x9EFD, 0x9F07, 0x9F08, 0x76B7, 0x9F15, 0x9F21, 0x9F2C, 0x9F3E, 0x9F4A, 0x9F52, 0x9F54, 0x9F63, 0x9F5F, 0x9F60, 0x9F61, 0x9F66, 0x9F67, 0x9F6C, 0x9F6A, 0x9F77, 0x9F72, 0x9F76, 0x9F95, 0x9F9C, 0x9FA0, 0x582F, 0x69C7, 0x9059, 0x7464, 0x51DC, 0x7199 }; /* f5 to fe is non-existent */ picolibc-1.7.4/newlib/libc/ctype/local.h000066400000000000000000000054321414576234500201060ustar00rootroot00000000000000/* Copyright (c) 2002 Red Hat Incorporated. All rights reserved. Modified (m) 2017 Thomas Wolff to refer to generated Unicode data tables. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of Red Hat Incorporated may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Modified (m) 2017 Thomas Wolff: fixed locale/wchar handling */ /* wctrans constants */ #include <_ansi.h> #include "../locale/setlocale.h" /* valid values for wctrans_t */ #define WCT_TOLOWER 1 #define WCT_TOUPPER 2 /* valid values for wctype_t */ #define WC_ALNUM 1 #define WC_ALPHA 2 #define WC_BLANK 3 #define WC_CNTRL 4 #define WC_DIGIT 5 #define WC_GRAPH 6 #define WC_LOWER 7 #define WC_PRINT 8 #define WC_PUNCT 9 #define WC_SPACE 10 #define WC_UPPER 11 #define WC_XDIGIT 12 /* internal functions to translate between JP and Unicode */ /* note this is not applicable to Cygwin, where wchar_t is always Unicode, and should not be applicable to most other platforms either; * platforms for which wchar_t is not Unicode should be explicitly listed * the transformation should be applied to all non-Unicode locales (also Chinese, Korean, and even 8-bit locales such as *.CP1252) * for towupper and towlower, the result must be back-transformed into the respective locale encoding; currently NOT IMPLEMENTED */ #ifdef __CYGWIN__ /* Under Cygwin, wchar_t (or its extension wint_t) is Unicode */ #define _jp2uc(c) (c) #define _jp2uc_l(c, l) (c) #define _uc2jp_l(c, l) (c) #else wint_t _jp2uc (wint_t); wint_t _jp2uc_l (wint_t, struct __locale_t *); wint_t _uc2jp_l (wint_t, struct __locale_t *); #endif picolibc-1.7.4/newlib/libc/ctype/meson.build000066400000000000000000000064361414576234500210120ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # srcs_ctype = [ 'categories.c', 'ctype_.c', 'isalnum.c', 'isalnum_l.c', 'isalpha.c', 'isalpha_l.c', 'isascii.c', 'isascii_l.c', 'isblank.c', 'isblank_l.c', 'iscntrl.c', 'iscntrl_l.c', 'isdigit.c', 'isdigit_l.c', 'islower.c', 'islower_l.c', 'isprint.c', 'isprint_l.c', 'ispunct.c', 'ispunct_l.c', 'isspace.c', 'isspace_l.c', 'isupper.c', 'isupper_l.c', 'iswalnum.c', 'iswalnum_l.c', 'iswalpha.c', 'iswalpha_l.c', 'iswblank.c', 'iswblank_l.c', 'iswcntrl.c', 'iswcntrl_l.c', 'iswctype.c', 'iswctype_l.c', 'iswdigit.c', 'iswdigit_l.c', 'iswgraph.c', 'iswgraph_l.c', 'iswlower.c', 'iswlower_l.c', 'iswprint.c', 'iswprint_l.c', 'iswpunct.c', 'iswpunct_l.c', 'iswspace.c', 'iswspace_l.c', 'iswupper.c', 'iswupper_l.c', 'iswxdigit.c', 'iswxdigit_l.c', 'isxdigit.c', 'isxdigit_l.c', 'jp2uc.c', 'toascii.c', 'toascii_l.c', 'tolower.c', 'tolower_l.c', 'toupper.c', 'toupper_l.c', 'towctrans.c', 'towctrans_l.c', 'towlower.c', 'towlower_l.c', 'towupper.c', 'towupper_l.c', 'wctrans.c', 'wctrans_l.c', 'wctype.c', 'wctype_l.c', ] hdrs_ctype = [ 'categories.h', 'ctype_cp.h', 'ctype_.h', 'ctype_iso.h', 'jp2uc.h', 'local.h', ] srcs_ctype_use = [] foreach file : srcs_ctype s_file = fs.replace_suffix(file, '.S') if file in srcs_machine message('libc/ctype/' + file + ': machine overrides generic') elif s_file in srcs_machine message('libc/ctype/' + s_file + ': machine overrides generic') else srcs_ctype_use += file endif endforeach src_ctype = files(srcs_ctype_use) picolibc-1.7.4/newlib/libc/ctype/mkcaseconv000077500000000000000000000070041414576234500207170ustar00rootroot00000000000000#! /bin/sh -f # Copyright (c) 2018 Thomas Wolff # generate a table for Unicode case conversion; entries: # struct caseconv_entry defined in towctrans_l.c if [ -r UnicodeData.txt ] then UnicodeData=UnicodeData.txt elif [ -r /usr/share/unicode/ucd/UnicodeData.txt ] then UnicodeData=/usr/share/unicode/ucd/UnicodeData.txt else echo UnicodeData.txt not found >&2 exit 1 fi LC_ALL=C export LC_ALL compact=true #0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061; #0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041 #0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069; #01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L; 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5 #01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L; 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;01C5 #01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L; 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5 tr -d '\015' < $UnicodeData | sed \ -e 's,^\([^;]*\);[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;\([^;][^;]*\);\([^;]*\);\([^;]*\)$,src \1 upper "\2" lower "\3" title "\4",' \ -e t \ -e 's,^\([^;]*\);[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;\([^;]*\);\([^;][^;]*\);\([^;]*\)$,src \1 upper "\2" lower "\3" title "\4",' \ -e t \ -e 's,^\([^;]*\);[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;\([^;]*\);\([^;]*\);\([^;][^;]*\)$,src \1 upper "\2" lower "\3" title "\4",' \ -e t \ -e d | (#src 01C5 upper "01C4" lower "01C6" title "01C5" if $compact then ( cat <<\/EOS src () { if [ -n "$3" ] then tohi=$(( 0x0$3 - 0x0$1 )) else tohi=0 fi if [ -n "$5" ] then tolo=$(( 0x0$5 - 0x0$1 )) else tolo=0 fi case "$tolo.$tohi" in 0.0) true;; 0.*) case "$1.$tohi" in *[02468ACE].1) echo "'#error' U+$1 ODDSML";; *[02468ACE].-1) echo " 0x$1 TO1 ODDCAP";; *[13579BDF].1) echo "'#error' U+$1 EVENSML";; *[13579BDF].-1) echo " 0x$1 TO1 EVENCAP";; *) echo " 0x$1 TOUP $tohi";; esac;; *.0) case "$1.$tolo" in *[02468ACE].1) echo " 0x$1 TO1 EVENCAP";; *[02468ACE].-1) echo "'#error' U+$1 EVENSML";; *[13579BDF].1) echo " 0x$1 TO1 ODDCAP";; *[13579BDF].-1) echo "'#error' U+$1 ODDSML";; *) echo " 0x$1 TOLO $tolo";; esac;; *) case "$tolo.$tohi" in 1.-1) echo " 0x$1 TOBOTH 0";; *) echo "'#error' U+$1";; esac;; esac } /EOS cat ) | sh | uniq -f1 --group=append | sed -e "s,^$,range," -e t -e "s,^,item ," | ( cat <<\/EOS first= diff=-1 max=255 range () { # $diff == $(($last - $first)) if [ "$diff" -ge 0 ] then # we have items at all echo " {$first, $diff, $v2, $v3}," fi first= diff=-1 } item () { if [ "$1" == "#error" ] then echo "$*" return fi if [ $diff -eq $max ] then range elif [ -n "$first" ] then if [ $(( $1 )) -ne $(( ${last-0} + 1 )) ] then range fi fi if [ -z "$first" ] then first=$1 v2=$2 v3=$3 fi last=$1 diff=$(( $diff + 1 )) } /EOS cat ) | sh elif false then sed -e 's/src \([^ ]*\) upper "\([^ ]*\)" lower "\([^ ]*\)" title "\([^ ]*\)"/ {0x\1, 0x\2 - 0x\1, 0x\3 - 0x\1},/' \ -e 's/0x - 0x[^ ,}]*/0/g' -e 's/0x}/0}/' \ -e 's/\(0x[0-9A-F][0-9A-F]*\) - \(0x[0-9A-F][0-9A-F]*\)/$((`printf %d \1` - `printf %d \2`))/g' \ -e 's/^/echo "/' -e 's/$/"/' | sh else sed -e 's/src \([^ ]*\) upper "\([^ ]*\)" lower "\([^ ]*\)" title "\([^ ]*\)"/ {0x\1, 0x\2 - 0x\1, 0x\3 - 0x\1},/' \ -e 's/0x - 0x[^ ,}]*/0/g' -e 's/0x}/0}/' fi ) > caseconv.t picolibc-1.7.4/newlib/libc/ctype/mkcategories000077500000000000000000000037771414576234500212600ustar00rootroot00000000000000#! /bin/sh # Copyright (c) 2018 Thomas Wolff # generate table of Unicode character category ranges; # note: undefined characters between two characters of the same category # are associated to the same category, e.g. #0A0A;GURMUKHI LETTER UU;Lo #0A0B..0A0E -> Lo #0A0F;GURMUKHI LETTER EE;Lo if [ -r UnicodeData.txt ] then UnicodeData=UnicodeData.txt elif [ -r /usr/share/unicode/ucd/UnicodeData.txt ] then UnicodeData=/usr/share/unicode/ucd/UnicodeData.txt else echo UnicodeData.txt not found >&2 exit 1 fi # the code assumes foldall=false, foldcase=true foldall=false foldcase=true ( cat <<\/EOS first= item () { if [ -n "$first" ] then if [ "$2" != "isRangeLast" \ -a $(( 0x$1 )) -ne $(( 0x${last-0} + 1 )) ] then range fi fi if [ -z "$first" ] then first=$1 val=$3 fi last=$1 } range () { # echo " {0x$first, 0x$last, CAT_$val}," # echo " {0x$first, $((0x$last - 0x$first)), CAT_$val}," # echo " {0x$first | (CAT_$val << 24), $((0x$last - 0x$first))}," echo " {CAT_$val, 0x$first, $((0x$last - 0x$first))}," first= } /EOS cat "$UnicodeData" | if $foldall then sed -e "s,;L[lu];,;LC;," -e "s,;C[fs];,;Cfs;," \ -e "s,;L[mo];,;Lmo;," -e "s,;Nl;,;Lmo;," \ -e "s,;P.;,;P;," -e "s,;No;,;P;," \ -e "s,;S.;,;S;," -e "s,;Z[lp];,;Zlp;," \ -e "s,;C[no];,;X;," -e "s,;M[cen];,;M;," elif $foldcase then # fold Lu/Ll to LC only if lower/upper conversion is available sed -e '/^\([^;]*\);[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;\([^;]*\);\([^;][^;]*\);.*/ s/;Lu;/;LC;/' \ -e '/^\([^;]*\);[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;\([^;][^;]*\);\([^;]*\);.*/ s/;Ll;/;LC;/' \ -e '/;Co;/ d' else cat fi | sed -e "s,^\([^;]*\);<[^;]*\, Last>;\([^;]*\);.*,\1 isRangeLast \2," \ -e "s,^\([^;]*\);[^;]*;\([^;]*\);.*,\1 isNormalOrRangeFirst \2," | uniq -f2 --group=append | sed -e "s,^$,range," -e t -e "s,^,item ," ) | sh > categories.t sed -e "s/.*\(CAT_[A-Za-z]*\).*/ \1,/" categories.t | sort | uniq > categories.cat picolibc-1.7.4/newlib/libc/ctype/mkunidata000077500000000000000000000027631414576234500205520ustar00rootroot00000000000000#! /bin/sh # Copyright (c) 2018 Thomas Wolff echo Generating Unicode character properties data for newlib/libc/ctype cd `dirname $0` ############################################################################# # checks and (with option -u) download case "$1" in -h) echo "Usage: $0 [-h|-u|-i]" echo "Generate case conversion table caseconv.t and character category table categories.t" echo "from local Unicode file UnicodeData.txt." echo "" echo "Options:" echo " -u download file from unicode.org first" echo " -i copy file from /usr/share/unicode/ucd first" echo " -h show this" exit ;; -u) wget () { ref=`basename $1` ref=`ls "$ref" 2> /dev/null || echo 01-Jan-1970` curl -R -O --connect-timeout 55 -z "$ref" "$1" } echo downloading data from unicode.org for data in UnicodeData.txt do wget http://unicode.org/Public/UNIDATA/$data done ;; -i) echo copying data from /usr/share/unicode/ucd for data in UnicodeData.txt do cp /usr/share/unicode/ucd/$data . done ;; esac echo checking Unicode data file for data in UnicodeData.txt do if [ -r $data ] then true else echo $data not available, skipping table generation exit fi done ############################################################################# # table generation echo generating character category table for "isw*.c" sh ./mkcategories echo generating case conversion table for "tow*.c" sh ./mkcaseconv ############################################################################# # end picolibc-1.7.4/newlib/libc/ctype/toascii.c000066400000000000000000000047701414576234500204460ustar00rootroot00000000000000/* Copyright (c) 1989 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---force integers to ASCII range INDEX toascii INDEX toascii_l SYNOPSIS #include int toascii(int <[c]>); #include int toascii_l(int <[c]>, locale_t <[locale]>); DESCRIPTION <> is a macro which coerces integers to the ASCII range (0--127) by zeroing any higher-order bits. <> is like <> but performs the function based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. You can use a compiled subroutine instead of the macro definition by undefining this macro using `<<#undef toascii>>' or `<<#undef toascii_l>>'. RETURNS <>, <> return integers between 0 and 127. PORTABILITY <> is X/Open, BSD and POSIX-1.2001, but marked obsolete in POSIX-1.2008. <> is a GNU extension. No supporting OS subroutines are required. */ #include <_ansi.h> #include #undef toascii int toascii (int c) { return (c)&0177; } picolibc-1.7.4/newlib/libc/ctype/toascii_l.c000066400000000000000000000004651414576234500207560ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #undef toascii_l int toascii_l (int c, struct __locale_t *locale) { (void) locale; return c & 0177; } picolibc-1.7.4/newlib/libc/ctype/tolower.c000066400000000000000000000072111414576234500204770ustar00rootroot00000000000000/* Copyright (c) 1989 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---translate characters to lowercase INDEX tolower INDEX tolower_l INDEX _tolower SYNOPSIS #include int tolower(int <[c]>); int _tolower(int <[c]>); #include int tolower_l(int <[c]>, locale_t <[locale]>); DESCRIPTION <> is a macro which converts uppercase characters to lowercase, leaving all other characters unchanged. It is only defined when <[c]> is an integer in the range <> to <<255>>. <> is like <> but performs the function based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. You can use a compiled subroutine instead of the macro definition by undefining this macro using `<<#undef tolower>>' or `<<#undef tolower_l>>'. <<_tolower>> performs the same conversion as <>, but should only be used when <[c]> is known to be an uppercase character (<>--<>). RETURNS <>, <> return the lowercase equivalent of <[c]> when <[c]> is an uppercase character, and <[c]> otherwise. <<_tolower>> returns the lowercase equivalent of <[c]> when it is a character between <> and <>. If <[c]> is not one of these characters, the behaviour of <<_tolower>> is undefined. PORTABILITY <> is ANSI C. <<_tolower>> is not recommended for portable programs. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #include <_ansi.h> #include #if defined (_MB_EXTENDED_CHARSETS_ISO) || defined (_MB_EXTENDED_CHARSETS_WINDOWS) #include #include #include #include #include #endif #undef tolower int tolower (int c) { #if defined (_MB_EXTENDED_CHARSETS_ISO) || defined (_MB_EXTENDED_CHARSETS_WINDOWS) if ((unsigned char) c <= 0x7f) return isupper (c) ? c - 'A' + 'a' : c; else if (c != EOF && MB_CUR_MAX == 1 && isupper (c)) { char s[MB_LEN_MAX] = { c, '\0' }; wchar_t wc; if (mbtowc (&wc, s, 1) >= 0 && wctomb (s, (wchar_t) towlower ((wint_t) wc)) == 1) c = (unsigned char) s[0]; } return c; #else return isupper(c) ? (c) - 'A' + 'a' : c; #endif } picolibc-1.7.4/newlib/libc/ctype/tolower_l.c000066400000000000000000000021651414576234500210150ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #if defined (_MB_EXTENDED_CHARSETS_ISO) || defined (_MB_EXTENDED_CHARSETS_WINDOWS) #include #include #include #include #include #include "../locale/setlocale.h" #endif int tolower_l (int c, struct __locale_t *locale) { #if defined (_MB_EXTENDED_CHARSETS_ISO) || defined (_MB_EXTENDED_CHARSETS_WINDOWS) if ((unsigned char) c <= 0x7f) return isupper_l (c, locale) ? c - 'A' + 'a' : c; else if (c != EOF && __locale_mb_cur_max_l (locale) == 1 && isupper_l (c, locale)) { char s[MB_LEN_MAX] = { c, '\0' }; wchar_t wc; mbstate_t state; memset (&state, 0, sizeof state); if (locale->mbtowc (_REENT, &wc, s, 1, &state) >= 0 && locale->wctomb (_REENT, s, (wchar_t) towlower_l ((wint_t) wc, locale), &state) == 1) c = (unsigned char) s[0]; } return c; #else return isupper_l (c, locale) ? (c) - 'A' + 'a' : c; #endif } picolibc-1.7.4/newlib/libc/ctype/toupper.c000066400000000000000000000072041414576234500205040ustar00rootroot00000000000000/* Copyright (c) 1989 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---translate characters to uppercase INDEX toupper INDEX toupper_l INDEX _toupper SYNOPSIS #include int toupper(int <[c]>); int _toupper(int <[c]>); #include int toupper_l(int <[c]>, locale_t <[locale]>); DESCRIPTION <> is a macro which converts lowercase characters to uppercase, leaving all other characters unchanged. It is only defined when <[c]> is an integer in the range <> to <<255>>. <> is like <> but performs the function based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. You can use a compiled subroutine instead of the macro definition by undefining this macro using `<<#undef toupper>>' or `<<#undef toupper_l>>'. <<_toupper>> performs the same conversion as <>, but should only be used when <[c]> is known to be a lowercase character (<>--<>). RETURNS <>, <> return the uppercase equivalent of <[c]> when <[c]> is a lowercase character, and <[c]> otherwise. <<_toupper>> returns the uppercase equivalent of <[c]> when it is a character between <> and <>. If <[c]> is not one of these characters, the behaviour of <<_toupper>> is undefined. PORTABILITY <> is ANSI C. <<_toupper>> is not recommended for portable programs. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #include <_ansi.h> #include #if defined (_MB_EXTENDED_CHARSETS_ISO) || defined (_MB_EXTENDED_CHARSETS_WINDOWS) #include #include #include #include #include #endif #undef toupper int toupper (int c) { #if defined (_MB_EXTENDED_CHARSETS_ISO) || defined (_MB_EXTENDED_CHARSETS_WINDOWS) if ((unsigned char) c <= 0x7f) return islower (c) ? c - 'a' + 'A' : c; else if (c != EOF && MB_CUR_MAX == 1 && islower (c)) { char s[MB_LEN_MAX] = { c, '\0' }; wchar_t wc; if (mbtowc (&wc, s, 1) >= 0 && wctomb (s, (wchar_t) towupper ((wint_t) wc)) == 1) c = (unsigned char) s[0]; } return c; #else return islower (c) ? c - 'a' + 'A' : c; #endif } picolibc-1.7.4/newlib/libc/ctype/toupper_l.c000066400000000000000000000021761414576234500210220ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #if defined (_MB_EXTENDED_CHARSETS_ISO) \ || defined (_MB_EXTENDED_CHARSETS_WINDOWS) #include #include #include #include #include #include <../locale/setlocale.h> #endif int toupper_l (int c, struct __locale_t *locale) { #if defined (_MB_EXTENDED_CHARSETS_ISO) \ || defined (_MB_EXTENDED_CHARSETS_WINDOWS) if ((unsigned char) c <= 0x7f) return islower_l (c, locale) ? c - 'a' + 'A' : c; else if (c != EOF && __locale_mb_cur_max_l (locale) == 1 && islower_l (c, locale)) { char s[MB_LEN_MAX] = { c, '\0' }; wchar_t wc; mbstate_t state; memset (&state, 0, sizeof state); if (locale->mbtowc (_REENT, &wc, s, 1, &state) >= 0 && locale->wctomb (_REENT, s, (wchar_t) towupper_l ((wint_t) wc, locale), &state) == 1) c = (unsigned char) s[0]; } return c; #else return islower_l (c, locale) ? c - 'a' + 'A' : c; #endif } picolibc-1.7.4/newlib/libc/ctype/towctrans.c000066400000000000000000000061411414576234500210310ustar00rootroot00000000000000/* Copyright (c) 2002 Red Hat Incorporated. All rights reserved. Modified (m) 2017 Thomas Wolff to refer to generated Unicode data tables. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of Red Hat Incorporated may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---extensible wide-character translation INDEX towctrans INDEX towctrans_l SYNOPSIS #include wint_t towctrans(wint_t <[c]>, wctrans_t <[w]>); #include wint_t towctrans_l(wint_t <[c]>, wctrans_t <[w]>, locale_t <[locale]>); DESCRIPTION <> is a function which converts wide characters based on a specified translation type <[w]>. If the translation type is invalid or cannot be applied to the current character, no change to the character is made. <> is like <> but performs the function based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS <>, <> return the translated equivalent of <[c]> when it is a valid for the given translation, otherwise, it returns the input character. When the translation type is invalid, <> is set to <>. PORTABILITY <> is C99. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include //#include #include "local.h" #ifndef _REENT_ONLY wint_t towctrans (wint_t c, wctrans_t w) { if (w == WCT_TOLOWER || w == WCT_TOUPPER) return towctrans_l (c, w, 0); else { // skipping this because it was causing trouble (cygwin crash) // and there is no errno specified for towctrans //__errno_r(r) = EINVAL; return c; } } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/ctype/towctrans_l.c000066400000000000000000000100311414576234500213350ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ /* Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #include <_ansi.h> #include #include //#include #include "local.h" /* struct caseconv_entry describes the case conversion behaviour of a range of Unicode characters. It was designed to be compact for a minimal table size. The range is first...first + diff. Conversion behaviour for a character c in the respective range: mode == TOLO towlower (c) = c + delta mode == TOUP towupper (c) = c + delta mode == TOBOTH (titling case characters) towlower (c) = c + 1 towupper (c) = c - 1 mode == TO1 capital/small letters are alternating delta == EVENCAP even codes are capital delta == ODDCAP odd codes are capital (this correlates with an even/odd first range value as of Unicode 10.0 but we do not rely on this) As of Unicode 10.0, the following field lengths are sufficient first: 17 bits diff: 8 bits delta: 17 bits mode: 2 bits The reserve of 4 bits (to limit the struct to 6 bytes) is currently added to the 'first' field; should a future Unicode version make it necessary to expand the others, the 'first' field could be reduced as needed, or larger ranges could be split up (reduce limit max=255 e.g. to max=127 or max=63 in script mkcaseconv, check increasing table size). */ enum {TO1, TOLO, TOUP, TOBOTH}; enum {EVENCAP, ODDCAP}; static struct caseconv_entry { uint_least32_t first: 21; uint_least32_t diff: 8; uint_least32_t mode: 2; int_least32_t delta: 17; } #ifdef HAVE_BITFIELDS_IN_PACKED_STRUCTS __attribute__((packed)) #endif caseconv_table [] = { #include "caseconv.t" }; #define first(ce) ((wint_t) ce.first) #define last(ce) ((wint_t) (ce.first + ce.diff)) /* auxiliary function for binary search in interval properties table */ static const struct caseconv_entry * bisearch (wint_t ucs, const struct caseconv_entry *table, int max) { int min = 0; int mid; if (ucs < first(table[0]) || ucs > last(table[max])) return 0; while (max >= min) { mid = (min + max) / 2; if (ucs > last(table[mid])) min = mid + 1; else if (ucs < first(table[mid])) max = mid - 1; else return &table[mid]; } return 0; } static wint_t toulower (wint_t c) { const struct caseconv_entry * cce = bisearch(c, caseconv_table, sizeof(caseconv_table) / sizeof(*caseconv_table) - 1); if (cce) switch (cce->mode) { case TOLO: return c + cce->delta; case TOBOTH: return c + 1; case TO1: switch (cce->delta) { case EVENCAP: if (!(c & 1)) return c + 1; break; case ODDCAP: if (c & 1) return c + 1; break; default: break; } default: break; } return c; } static wint_t touupper (wint_t c) { const struct caseconv_entry * cce = bisearch(c, caseconv_table, sizeof(caseconv_table) / sizeof(*caseconv_table) - 1); if (cce) switch (cce->mode) { case TOUP: return c + cce->delta; case TOBOTH: return c - 1; case TO1: switch (cce->delta) { case EVENCAP: if (c & 1) return c - 1; break; case ODDCAP: if (!(c & 1)) return c - 1; break; default: break; } default: break; } return c; } wint_t towctrans_l (wint_t c, wctrans_t w, struct __locale_t *locale) { (void) locale; #ifdef _MB_CAPABLE wint_t u = _jp2uc_l (c, locale); #else wint_t u = c; #endif wint_t res; if (w == WCT_TOLOWER) res = toulower (u); else if (w == WCT_TOUPPER) res = touupper (u); else { // skipping the errno setting that was previously involved // by delegating to towctrans; it was causing trouble (cygwin crash) // and there is no errno specified for towctrans return c; } if (res != u) #ifdef _MB_CAPABLE return _uc2jp_l (res, locale); #else return res; #endif else return c; } picolibc-1.7.4/newlib/libc/ctype/towlower.c000066400000000000000000000052521414576234500206710ustar00rootroot00000000000000/* Copyright (c) 2002 Red Hat Incorporated. All rights reserved. Modified (m) 2017 Thomas Wolff to refer to generated Unicode data tables. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of Red Hat Incorporated may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---translate wide characters to lowercase INDEX towlower INDEX towlower_l SYNOPSIS #include wint_t towlower(wint_t <[c]>); #include wint_t towlower_l(wint_t <[c]>, locale_t <[locale]>); DESCRIPTION <> is a function which converts uppercase wide characters to lowercase, leaving all other characters unchanged. <> is like <> but performs the function based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS <>, <> return the lowercase equivalent of <[c]> when it is a uppercase wide character; otherwise, it returns the input character. PORTABILITY <> is C99. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #include <_ansi.h> #include #include #include "local.h" wint_t towlower (wint_t c) { #ifdef _MB_CAPABLE return towctrans (c, WCT_TOLOWER); #else return c < 0x00ff ? (wint_t)(tolower ((int)c)) : c; #endif /* _MB_CAPABLE */ } picolibc-1.7.4/newlib/libc/ctype/towlower_l.c000066400000000000000000000010061414576234500211750ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ /* Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" wint_t towlower_l (wint_t c, struct __locale_t *locale) { (void) locale; #ifdef _MB_CAPABLE return towctrans_l (c, WCT_TOLOWER, locale); #else return towlower (c); #endif /* _MB_CAPABLE */ } picolibc-1.7.4/newlib/libc/ctype/towupper.c000066400000000000000000000053221414576234500206720ustar00rootroot00000000000000/* Copyright (c) 2002 Red Hat Incorporated. All rights reserved. Modified (m) 2017 Thomas Wolff to refer to generated Unicode data tables. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of Red Hat Incorporated may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---translate wide characters to uppercase INDEX towupper INDEX towupper_l SYNOPSIS #include wint_t towupper(wint_t <[c]>); #include wint_t towupper_l(wint_t <[c]>, locale_t <[locale]>); DESCRIPTION <> is a function which converts lowercase wide characters to uppercase, leaving all other characters unchanged. <> is like <> but performs the function based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS <>, <> return the uppercase equivalent of <[c]> when it is a lowercase wide character, otherwise, it returns the input character. PORTABILITY <> is C99. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #include <_ansi.h> #include #include #include #include #include "local.h" wint_t towupper (wint_t c) { #ifdef _MB_CAPABLE return towctrans (c, WCT_TOUPPER); #else return c < 0x00ff ? (wint_t)(toupper ((int)c)) : c; #endif /* _MB_CAPABLE */ } picolibc-1.7.4/newlib/libc/ctype/towupper_l.c000066400000000000000000000007621414576234500212100ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ /* Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include "local.h" wint_t towupper_l (wint_t c, struct __locale_t *locale) { (void) locale; #ifdef _MB_CAPABLE return towctrans_l (c, WCT_TOUPPER, locale); #else return towupper (c); #endif /* _MB_CAPABLE */ } picolibc-1.7.4/newlib/libc/ctype/wctrans.c000066400000000000000000000054731414576234500204750ustar00rootroot00000000000000/* Copyright (c) 2002 Red Hat Incorporated. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of Red Hat Incorporated may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---get wide-character translation type INDEX wctrans INDEX wctrans_l SYNOPSIS #include wctrans_t wctrans(const char *<[c]>); #include wctrans_t wctrans_l(const char *<[c]>, locale_t <[locale]>); DESCRIPTION <> is a function which takes a string <[c]> and gives back the appropriate wctrans_t type value associated with the string, if one exists. The following values are guaranteed to be recognized: "tolower" and "toupper". <> is like <> but performs the function based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS <>, <> return 0 and sets <> to <> if the given name is invalid. Otherwise, it returns a valid non-zero wctrans_t value. PORTABILITY <> is C99. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #include <_ansi.h> #include #include #include #include "local.h" #ifndef _REENT_ONLY wctrans_t wctrans (const char *c) { if (!strcmp (c, "tolower")) return WCT_TOLOWER; else if (!strcmp (c, "toupper")) return WCT_TOUPPER; else { __errno_r(r) = EINVAL; return 0; } } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/ctype/wctrans_l.c000066400000000000000000000006771414576234500210110ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #define _DEFAULT_SOURCE #include <_ansi.h> #include wctrans_t wctrans_l (const char *c, struct __locale_t *locale) { (void) locale; /* We're using a locale-independent representation of upper/lower case based on Unicode data. Thus, the locale doesn't matter. */ return wctrans (c); } picolibc-1.7.4/newlib/libc/ctype/wctype.c000066400000000000000000000073631414576234500203270ustar00rootroot00000000000000/* Copyright (c) 2002 Red Hat Incorporated. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of Red Hat Incorporated may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---get wide-character classification type INDEX wctype INDEX wctype_l SYNOPSIS #include wctype_t wctype(const char *<[c]>); #include wctype_t wctype_l(const char *<[c]>, locale_t <[locale]>); DESCRIPTION <> is a function which takes a string <[c]> and gives back the appropriate wctype_t type value associated with the string, if one exists. The following values are guaranteed to be recognized: "alnum", "alpha", "blank", "cntrl", "digit", "graph", "lower", "print", "punct", "space", "upper", and "xdigit". <> is like <> but performs the function based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS <>, <> return 0 and sets <> to <> if the given name is invalid. Otherwise, it returns a valid non-zero wctype_t value. PORTABILITY <> is C99. <> is POSIX-1.2008. No supporting OS subroutines are required. */ #include <_ansi.h> #include #include #include #include "local.h" #ifndef _REENT_ONLY wctype_t wctype (const char *c) { switch (*c) { case 'a': if (!strcmp (c, "alnum")) return WC_ALNUM; else if (!strcmp (c, "alpha")) return WC_ALPHA; break; case 'b': if (!strcmp (c, "blank")) return WC_BLANK; break; case 'c': if (!strcmp (c, "cntrl")) return WC_CNTRL; break; case 'd': if (!strcmp (c, "digit")) return WC_DIGIT; break; case 'g': if (!strcmp (c, "graph")) return WC_GRAPH; break; case 'l': if (!strcmp (c, "lower")) return WC_LOWER; break; case 'p': if (!strcmp (c, "print")) return WC_PRINT; else if (!strcmp (c, "punct")) return WC_PUNCT; break; case 's': if (!strcmp (c, "space")) return WC_SPACE; break; case 'u': if (!strcmp (c, "upper")) return WC_UPPER; break; case 'x': if (!strcmp (c, "xdigit")) return WC_XDIGIT; break; } /* otherwise invalid */ __errno_r(r) = EINVAL; return 0; } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/ctype/wctype_l.c000066400000000000000000000004621414576234500206330ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #define _DEFAULT_SOURCE #include <_ansi.h> #include wctype_t wctype_l (const char *c, struct __locale_t *locale) { (void) locale; return wctype (c); } picolibc-1.7.4/newlib/libc/errno/000077500000000000000000000000001414576234500166405ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/errno/errno.c000066400000000000000000000032111414576234500201260ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2020 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #include NEWLIB_THREAD_LOCAL_ERRNO int errno; picolibc-1.7.4/newlib/libc/errno/meson.build000066400000000000000000000036721414576234500210120ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # srcs_errno = [ 'errno.c', ] srcs_errno_use = [] foreach file : srcs_errno s_file = fs.replace_suffix(file, '.S') if file in srcs_machine message('libc/errno/' + file + ': machine overrides generic') elif s_file in srcs_machine message('libc/errno/' + s_file + ': machine overrides generic') else srcs_errno_use += file endif endforeach src_errno = files(srcs_errno_use) picolibc-1.7.4/newlib/libc/iconv/000077500000000000000000000000001414576234500166315ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/iconv/ccs/000077500000000000000000000000001414576234500174015ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/iconv/ccs/big5.c000066400000000000000000024713461414576234500204140ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for big5 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_BIG5) \ || defined (ICONV_FROM_UCS_CCS_BIG5) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" /* * 16-bit big5 -> UCS speed-optimized table (45568 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_BIG5) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t to_ucs_speed_big5[] = { /* Heading Block */ INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,0x0100,0x0200,0x0300,0x0400,0x0500,0x0600,0x0700, 0x0800,0x0900,0x0A00,0x0B00,0x0C00,0x0D00,0x0E00,0x0F00, 0x1000,0x1100,0x1200,0x1300,0x1400,0x1500,0x1600,0x1700, 0x1800,0x1900,0x1A00,0x1B00,0x1C00,0x1D00,0x1E00,0x1F00, 0x2000,0x2100,0x2200,0x2300,0x2400,0x2500,0x2600,0x2700, INVBLK,0x2800,0x2900,0x2A00,0x2B00,0x2C00,0x2D00,0x2E00, 0x2F00,0x3000,0x3100,0x3200,0x3300,0x3400,0x3500,0x3600, 0x3700,0x3800,0x3900,0x3A00,0x3B00,0x3C00,0x3D00,0x3E00, 0x3F00,0x4000,0x4100,0x4200,0x4300,0x4400,0x4500,0x4600, 0x4700,0x4800,0x4900,0x4A00,0x4B00,0x4C00,0x4D00,0x4E00, 0x4F00,0x5000,0x5100,0x5200,0x5300,0x5400,0x5500,0x5600, 0x5700,0x5800,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, /* Block 162, Array index 0x0100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3000,0xFF0C,0x3001,0x3002,0xFF0E,0x2022,0xFF1B,0xFF1A, 0xFF1F,0xFF01,0xFE30,0x2026,0x2025,0xFE50,0xFF64,0xFE52, 0x00B7,0xFE54,0xFE55,0xFE56,0xFE57,0xFF5C,0x2013,0xFE31, 0x2014,0xFE33,0xFFFD,0xFE34,0xFE4F,0xFF08,0xFF09,0xFE35, 0xFE36,0xFF5B,0xFF5D,0xFE37,0xFE38,0x3014,0x3015,0xFE39, 0xFE3A,0x3010,0x3011,0xFE3B,0xFE3C,0x300A,0x300B,0xFE3D, 0xFE3E,0x3008,0x3009,0xFE3F,0xFE40,0x300C,0x300D,0xFE41, 0xFE42,0x300E,0x300F,0xFE43,0xFE44,0xFE59,0xFE5A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xFE5B,0xFE5C,0xFE5D,0xFE5E,0x2018,0x2019,0x201C, 0x201D,0x301D,0x301E,0x2035,0x2032,0xFF03,0xFF06,0xFF0A, 0x203B,0x00A7,0x3003,0x25CB,0x25CF,0x25B3,0x25B2,0x25CE, 0x2606,0x2605,0x25C7,0x25C6,0x25A1,0x25A0,0x25BD,0x25BC, 0x32A3,0x2105,0x203E,0xFFFD,0xFF3F,0xFFFD,0xFE49,0xFE4A, 0xFE4D,0xFE4E,0xFE4B,0xFE4C,0xFE5F,0xFE60,0xFE61,0xFF0B, 0xFF0D,0x00D7,0x00F7,0x00B1,0x221A,0xFF1C,0xFF1E,0xFF1D, 0x2266,0x2267,0x2260,0x221E,0x2252,0x2261,0xFE62,0xFE63, 0xFE64,0xFE65,0xFE66,0x223C,0x2229,0x222A,0x22A5,0x2220, 0x221F,0x22BF,0x33D2,0x33D1,0x222B,0x222E,0x2235,0x2234, 0x2640,0x2642,0x2641,0x2609,0x2191,0x2193,0x2190,0x2192, 0x2196,0x2197,0x2199,0x2198,0x2225,0x2223,0xFFFD,INVALC, /* Block 163, Array index 0x0200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xFFFD,0xFF0F,0xFF3C,0xFF04,0x00A5,0x3012,0x00A2,0x00A3, 0xFF05,0xFF20,0x2103,0x2109,0xFE69,0xFE6A,0xFE6B,0x33D5, 0x339C,0x339D,0x339E,0x33CE,0x33A1,0x338E,0x338F,0x33C4, 0x00B0,0x5159,0x515B,0x515E,0x515D,0x5161,0x5163,0x55E7, 0x74E9,0x7CCE,0x2581,0x2582,0x2583,0x2584,0x2585,0x2586, 0x2587,0x2588,0x258F,0x258E,0x258D,0x258C,0x258B,0x258A, 0x2589,0x253C,0x2534,0x252C,0x2524,0x251C,0x2594,0x2500, 0x2502,0x2595,0x250C,0x2510,0x2514,0x2518,0x256D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x256E,0x2570,0x256F,0x2550,0x255E,0x256A,0x2561, 0x25E2,0x25E3,0x25E5,0x25E4,0x2571,0x2572,0x2573,0xFF10, 0xFF11,0xFF12,0xFF13,0xFF14,0xFF15,0xFF16,0xFF17,0xFF18, 0xFF19,0x2160,0x2161,0x2162,0x2163,0x2164,0x2165,0x2166, 0x2167,0x2168,0x2169,0x3021,0x3022,0x3023,0x3024,0x3025, 0x3026,0x3027,0x3028,0x3029,0xFFFD,0x5344,0xFFFD,0xFF21, 0xFF22,0xFF23,0xFF24,0xFF25,0xFF26,0xFF27,0xFF28,0xFF29, 0xFF2A,0xFF2B,0xFF2C,0xFF2D,0xFF2E,0xFF2F,0xFF30,0xFF31, 0xFF32,0xFF33,0xFF34,0xFF35,0xFF36,0xFF37,0xFF38,0xFF39, 0xFF3A,0xFF41,0xFF42,0xFF43,0xFF44,0xFF45,0xFF46,0xFF47, 0xFF48,0xFF49,0xFF4A,0xFF4B,0xFF4C,0xFF4D,0xFF4E,0xFF4F, 0xFF50,0xFF51,0xFF52,0xFF53,0xFF54,0xFF55,0xFF56,INVALC, /* Block 164, Array index 0x0300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xFF57,0xFF58,0xFF59,0xFF5A,0x0391,0x0392,0x0393,0x0394, 0x0395,0x0396,0x0397,0x0398,0x0399,0x039A,0x039B,0x039C, 0x039D,0x039E,0x039F,0x03A0,0x03A1,0x03A3,0x03A4,0x03A5, 0x03A6,0x03A7,0x03A8,0x03A9,0x03B1,0x03B2,0x03B3,0x03B4, 0x03B5,0x03B6,0x03B7,0x03B8,0x03B9,0x03BA,0x03BB,0x03BC, 0x03BD,0x03BE,0x03BF,0x03C0,0x03C1,0x03C3,0x03C4,0x03C5, 0x03C6,0x03C7,0x03C8,0x03C9,0x3105,0x3106,0x3107,0x3108, 0x3109,0x310A,0x310B,0x310C,0x310D,0x310E,0x310F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3110,0x3111,0x3112,0x3113,0x3114,0x3115,0x3116, 0x3117,0x3118,0x3119,0x311A,0x311B,0x311C,0x311D,0x311E, 0x311F,0x3120,0x3121,0x3122,0x3123,0x3124,0x3125,0x3126, 0x3127,0x3128,0x3129,0x02D9,0x02C9,0x02CA,0x02C7,0x02CB, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 165, Array index 0x0400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4E00,0x4E59,0x4E01,0x4E03,0x4E43,0x4E5D,0x4E86,0x4E8C, 0x4EBA,0x513F,0x5165,0x516B,0x51E0,0x5200,0x5201,0x529B, 0x5315,0x5341,0x535C,0x53C8,0x4E09,0x4E0B,0x4E08,0x4E0A, 0x4E2B,0x4E38,0x51E1,0x4E45,0x4E48,0x4E5F,0x4E5E,0x4E8E, 0x4EA1,0x5140,0x5203,0x52FA,0x5343,0x53C9,0x53E3,0x571F, 0x58EB,0x5915,0x5927,0x5973,0x5B50,0x5B51,0x5B53,0x5BF8, 0x5C0F,0x5C22,0x5C38,0x5C71,0x5DDD,0x5DE5,0x5DF1,0x5DF2, 0x5DF3,0x5DFE,0x5E72,0x5EFE,0x5F0B,0x5F13,0x624D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4E11,0x4E10,0x4E0D,0x4E2D,0x4E30,0x4E39,0x4E4B, 0x5C39,0x4E88,0x4E91,0x4E95,0x4E92,0x4E94,0x4EA2,0x4EC1, 0x4EC0,0x4EC3,0x4EC6,0x4EC7,0x4ECD,0x4ECA,0x4ECB,0x4EC4, 0x5143,0x5141,0x5167,0x516D,0x516E,0x516C,0x5197,0x51F6, 0x5206,0x5207,0x5208,0x52FB,0x52FE,0x52FF,0x5316,0x5339, 0x5348,0x5347,0x5345,0x535E,0x5384,0x53CB,0x53CA,0x53CD, 0x58EC,0x5929,0x592B,0x592A,0x592D,0x5B54,0x5C11,0x5C24, 0x5C3A,0x5C6F,0x5DF4,0x5E7B,0x5EFF,0x5F14,0x5F15,0x5FC3, 0x6208,0x6236,0x624B,0x624E,0x652F,0x6587,0x6597,0x65A4, 0x65B9,0x65E5,0x66F0,0x6708,0x6728,0x6B20,0x6B62,0x6B79, 0x6BCB,0x6BD4,0x6BDB,0x6C0F,0x6C34,0x706B,0x722A,0x7236, 0x723B,0x7247,0x7259,0x725B,0x72AC,0x738B,0x4E19,INVALC, /* Block 166, Array index 0x0500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4E16,0x4E15,0x4E14,0x4E18,0x4E3B,0x4E4D,0x4E4F,0x4E4E, 0x4EE5,0x4ED8,0x4ED4,0x4ED5,0x4ED6,0x4ED7,0x4EE3,0x4EE4, 0x4ED9,0x4EDE,0x5145,0x5144,0x5189,0x518A,0x51AC,0x51F9, 0x51FA,0x51F8,0x520A,0x52A0,0x529F,0x5305,0x5306,0x5317, 0x531D,0x4EDF,0x534A,0x5349,0x5361,0x5360,0x536F,0x536E, 0x53BB,0x53EF,0x53E4,0x53F3,0x53EC,0x53EE,0x53E9,0x53E8, 0x53FC,0x53F8,0x53F5,0x53EB,0x53E6,0x53EA,0x53F2,0x53F1, 0x53F0,0x53E5,0x53ED,0x53FB,0x56DB,0x56DA,0x5916,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x592E,0x5931,0x5974,0x5976,0x5B55,0x5B83,0x5C3C, 0x5DE8,0x5DE7,0x5DE6,0x5E02,0x5E03,0x5E73,0x5E7C,0x5F01, 0x5F18,0x5F17,0x5FC5,0x620A,0x6253,0x6254,0x6252,0x6251, 0x65A5,0x65E6,0x672E,0x672C,0x672A,0x672B,0x672D,0x6B63, 0x6BCD,0x6C11,0x6C10,0x6C38,0x6C41,0x6C40,0x6C3E,0x72AF, 0x7384,0x7389,0x74DC,0x74E6,0x7518,0x751F,0x7528,0x7529, 0x7530,0x7531,0x7532,0x7533,0x758B,0x767D,0x76AE,0x76BF, 0x76EE,0x77DB,0x77E2,0x77F3,0x793A,0x79BE,0x7A74,0x7ACB, 0x4E1E,0x4E1F,0x4E52,0x4E53,0x4E69,0x4E99,0x4EA4,0x4EA6, 0x4EA5,0x4EFF,0x4F09,0x4F19,0x4F0A,0x4F15,0x4F0D,0x4F10, 0x4F11,0x4F0F,0x4EF2,0x4EF6,0x4EFB,0x4EF0,0x4EF3,0x4EFD, 0x4F01,0x4F0B,0x5149,0x5147,0x5146,0x5148,0x5168,INVALC, /* Block 167, Array index 0x0600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5171,0x518D,0x51B0,0x5217,0x5211,0x5212,0x520E,0x5216, 0x52A3,0x5308,0x5321,0x5320,0x5370,0x5371,0x5409,0x540F, 0x540C,0x540A,0x5410,0x5401,0x540B,0x5404,0x5411,0x540D, 0x5408,0x5403,0x540E,0x5406,0x5412,0x56E0,0x56DE,0x56DD, 0x5733,0x5730,0x5728,0x572D,0x572C,0x572F,0x5729,0x5919, 0x591A,0x5937,0x5938,0x5984,0x5978,0x5983,0x597D,0x5979, 0x5982,0x5981,0x5B57,0x5B58,0x5B87,0x5B88,0x5B85,0x5B89, 0x5BFA,0x5C16,0x5C79,0x5DDE,0x5E06,0x5E76,0x5E74,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5F0F,0x5F1B,0x5FD9,0x5FD6,0x620E,0x620C,0x620D, 0x6210,0x6263,0x625B,0x6258,0x6536,0x65E9,0x65E8,0x65EC, 0x65ED,0x66F2,0x66F3,0x6709,0x673D,0x6734,0x6731,0x6735, 0x6B21,0x6B64,0x6B7B,0x6C16,0x6C5D,0x6C57,0x6C59,0x6C5F, 0x6C60,0x6C50,0x6C55,0x6C61,0x6C5B,0x6C4D,0x6C4E,0x7070, 0x725F,0x725D,0x767E,0x7AF9,0x7C73,0x7CF8,0x7F36,0x7F8A, 0x7FBD,0x8001,0x8003,0x800C,0x8012,0x8033,0x807F,0x8089, 0x808B,0x808C,0x81E3,0x81EA,0x81F3,0x81FC,0x820C,0x821B, 0x821F,0x826E,0x8272,0x827E,0x866B,0x8840,0x884C,0x8863, 0x897F,0x9621,0x4E32,0x4EA8,0x4F4D,0x4F4F,0x4F47,0x4F57, 0x4F5E,0x4F34,0x4F5B,0x4F55,0x4F30,0x4F50,0x4F51,0x4F3D, 0x4F3A,0x4F38,0x4F43,0x4F54,0x4F3C,0x4F46,0x4F63,INVALC, /* Block 168, Array index 0x0700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4F5C,0x4F60,0x4F2F,0x4F4E,0x4F36,0x4F59,0x4F5D,0x4F48, 0x4F5A,0x514C,0x514B,0x514D,0x5175,0x51B6,0x51B7,0x5225, 0x5224,0x5229,0x522A,0x5228,0x52AB,0x52A9,0x52AA,0x52AC, 0x5323,0x5373,0x5375,0x541D,0x542D,0x541E,0x543E,0x5426, 0x544E,0x5427,0x5446,0x5443,0x5433,0x5448,0x5442,0x541B, 0x5429,0x544A,0x5439,0x543B,0x5438,0x542E,0x5435,0x5436, 0x5420,0x543C,0x5440,0x5431,0x542B,0x541F,0x542C,0x56EA, 0x56F0,0x56E4,0x56EB,0x574A,0x5751,0x5740,0x574D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5747,0x574E,0x573E,0x5750,0x574F,0x573B,0x58EF, 0x593E,0x599D,0x5992,0x59A8,0x599E,0x59A3,0x5999,0x5996, 0x598D,0x59A4,0x5993,0x598A,0x59A5,0x5B5D,0x5B5C,0x5B5A, 0x5B5B,0x5B8C,0x5B8B,0x5B8F,0x5C2C,0x5C40,0x5C41,0x5C3F, 0x5C3E,0x5C90,0x5C91,0x5C94,0x5C8C,0x5DEB,0x5E0C,0x5E8F, 0x5E87,0x5E8A,0x5EF7,0x5F04,0x5F1F,0x5F64,0x5F62,0x5F77, 0x5F79,0x5FD8,0x5FCC,0x5FD7,0x5FCD,0x5FF1,0x5FEB,0x5FF8, 0x5FEA,0x6212,0x6211,0x6284,0x6297,0x6296,0x6280,0x6276, 0x6289,0x626D,0x628A,0x627C,0x627E,0x6279,0x6273,0x6292, 0x626F,0x6298,0x626E,0x6295,0x6293,0x6291,0x6286,0x6539, 0x653B,0x6538,0x65F1,0x66F4,0x675F,0x674E,0x674F,0x6750, 0x6751,0x675C,0x6756,0x675E,0x6749,0x6746,0x6760,INVALC, /* Block 169, Array index 0x0800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6753,0x6757,0x6B65,0x6BCF,0x6C42,0x6C5E,0x6C99,0x6C81, 0x6C88,0x6C89,0x6C85,0x6C9B,0x6C6A,0x6C7A,0x6C90,0x6C70, 0x6C8C,0x6C68,0x6C96,0x6C92,0x6C7D,0x6C83,0x6C72,0x6C7E, 0x6C74,0x6C86,0x6C76,0x6C8D,0x6C94,0x6C98,0x6C82,0x7076, 0x707C,0x707D,0x7078,0x7262,0x7261,0x7260,0x72C4,0x72C2, 0x7396,0x752C,0x752B,0x7537,0x7538,0x7682,0x76EF,0x77E3, 0x79C1,0x79C0,0x79BF,0x7A76,0x7CFB,0x7F55,0x8096,0x8093, 0x809D,0x8098,0x809B,0x809A,0x80B2,0x826F,0x8292,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x828B,0x828D,0x898B,0x89D2,0x8A00,0x8C37,0x8C46, 0x8C55,0x8C9D,0x8D64,0x8D70,0x8DB3,0x8EAB,0x8ECA,0x8F9B, 0x8FB0,0x8FC2,0x8FC6,0x8FC5,0x8FC4,0x5DE1,0x9091,0x90A2, 0x90AA,0x90A6,0x90A3,0x9149,0x91C6,0x91CC,0x9632,0x962E, 0x9631,0x962A,0x962C,0x4E26,0x4E56,0x4E73,0x4E8B,0x4E9B, 0x4E9E,0x4EAB,0x4EAC,0x4F6F,0x4F9D,0x4F8D,0x4F73,0x4F7F, 0x4F6C,0x4F9B,0x4F8B,0x4F86,0x4F83,0x4F70,0x4F75,0x4F88, 0x4F69,0x4F7B,0x4F96,0x4F7E,0x4F8F,0x4F91,0x4F7A,0x5154, 0x5152,0x5155,0x5169,0x5177,0x5176,0x5178,0x51BD,0x51FD, 0x523B,0x5238,0x5237,0x523A,0x5230,0x522E,0x5236,0x5241, 0x52BE,0x52BB,0x5352,0x5354,0x5353,0x5351,0x5366,0x5377, 0x5378,0x5379,0x53D6,0x53D4,0x53D7,0x5473,0x5475,INVALC, /* Block 170, Array index 0x0900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5496,0x5478,0x5495,0x5480,0x547B,0x5477,0x5484,0x5492, 0x5486,0x547C,0x5490,0x5471,0x5476,0x548C,0x549A,0x5462, 0x5468,0x548B,0x547D,0x548E,0x56FA,0x5783,0x5777,0x576A, 0x5769,0x5761,0x5766,0x5764,0x577C,0x591C,0x5949,0x5947, 0x5948,0x5944,0x5954,0x59BE,0x59BB,0x59D4,0x59B9,0x59AE, 0x59D1,0x59C6,0x59D0,0x59CD,0x59CB,0x59D3,0x59CA,0x59AF, 0x59B3,0x59D2,0x59C5,0x5B5F,0x5B64,0x5B63,0x5B97,0x5B9A, 0x5B98,0x5B9C,0x5B99,0x5B9B,0x5C1A,0x5C48,0x5C45,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5C46,0x5CB7,0x5CA1,0x5CB8,0x5CA9,0x5CAB,0x5CB1, 0x5CB3,0x5E18,0x5E1A,0x5E16,0x5E15,0x5E1B,0x5E11,0x5E78, 0x5E9A,0x5E97,0x5E9C,0x5E95,0x5E96,0x5EF6,0x5F26,0x5F27, 0x5F29,0x5F80,0x5F81,0x5F7F,0x5F7C,0x5FDD,0x5FE0,0x5FFD, 0x5FF5,0x5FFF,0x600F,0x6014,0x602F,0x6035,0x6016,0x602A, 0x6015,0x6021,0x6027,0x6029,0x602B,0x601B,0x6216,0x6215, 0x623F,0x623E,0x6240,0x627F,0x62C9,0x62CC,0x62C4,0x62BF, 0x62C2,0x62B9,0x62D2,0x62DB,0x62AB,0x62D3,0x62D4,0x62CB, 0x62C8,0x62A8,0x62BD,0x62BC,0x62D0,0x62D9,0x62C7,0x62CD, 0x62B5,0x62DA,0x62B1,0x62D8,0x62D6,0x62D7,0x62C6,0x62AC, 0x62CE,0x653E,0x65A7,0x65BC,0x65FA,0x6614,0x6613,0x660C, 0x6606,0x6602,0x660E,0x6600,0x660F,0x6615,0x660A,INVALC, /* Block 171, Array index 0x0A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6607,0x670D,0x670B,0x676D,0x678B,0x6795,0x6771,0x679C, 0x6773,0x6777,0x6787,0x679D,0x6797,0x676F,0x6770,0x677F, 0x6789,0x677E,0x6790,0x6775,0x679A,0x6793,0x677C,0x676A, 0x6772,0x6B23,0x6B66,0x6B67,0x6B7F,0x6C13,0x6C1B,0x6CE3, 0x6CE8,0x6CF3,0x6CB1,0x6CCC,0x6CE5,0x6CB3,0x6CBD,0x6CBE, 0x6CBC,0x6CE2,0x6CAB,0x6CD5,0x6CD3,0x6CB8,0x6CC4,0x6CB9, 0x6CC1,0x6CAE,0x6CD7,0x6CC5,0x6CF1,0x6CBF,0x6CBB,0x6CE1, 0x6CDB,0x6CCA,0x6CAC,0x6CEF,0x6CDC,0x6CD6,0x6CE0,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7095,0x708E,0x7092,0x708A,0x7099,0x722C,0x722D, 0x7238,0x7248,0x7267,0x7269,0x72C0,0x72CE,0x72D9,0x72D7, 0x72D0,0x73A9,0x73A8,0x739F,0x73AB,0x73A5,0x753D,0x759D, 0x7599,0x759A,0x7684,0x76C2,0x76F2,0x76F4,0x77E5,0x77FD, 0x793E,0x7940,0x7941,0x79C9,0x79C8,0x7A7A,0x7A79,0x7AFA, 0x7CFE,0x7F54,0x7F8C,0x7F8B,0x8005,0x80BA,0x80A5,0x80A2, 0x80B1,0x80A1,0x80AB,0x80A9,0x80B4,0x80AA,0x80AF,0x81E5, 0x81FE,0x820D,0x82B3,0x829D,0x8299,0x82AD,0x82BD,0x829F, 0x82B9,0x82B1,0x82AC,0x82A5,0x82AF,0x82B8,0x82A3,0x82B0, 0x82BE,0x82B7,0x864E,0x8671,0x521D,0x8868,0x8ECB,0x8FCE, 0x8FD4,0x8FD1,0x90B5,0x90B8,0x90B1,0x90B6,0x91C7,0x91D1, 0x9577,0x9580,0x961C,0x9640,0x963F,0x963B,0x9644,INVALC, /* Block 172, Array index 0x0B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x9642,0x96B9,0x96E8,0x9752,0x975E,0x4E9F,0x4EAD,0x4EAE, 0x4FE1,0x4FB5,0x4FAF,0x4FBF,0x4FE0,0x4FD1,0x4FCF,0x4FDD, 0x4FC3,0x4FB6,0x4FD8,0x4FDF,0x4FCA,0x4FD7,0x4FAE,0x4FD0, 0x4FC4,0x4FC2,0x4FDA,0x4FCE,0x4FDE,0x4FB7,0x5157,0x5192, 0x5191,0x51A0,0x524E,0x5243,0x524A,0x524D,0x524C,0x524B, 0x5247,0x52C7,0x52C9,0x52C3,0x52C1,0x530D,0x5357,0x537B, 0x539A,0x53DB,0x54AC,0x54C0,0x54A8,0x54CE,0x54C9,0x54B8, 0x54A6,0x54B3,0x54C7,0x54C2,0x54BD,0x54AA,0x54C1,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x54C4,0x54C8,0x54AF,0x54AB,0x54B1,0x54BB,0x54A9, 0x54A7,0x54BF,0x56FF,0x5782,0x578B,0x57A0,0x57A3,0x57A2, 0x57CE,0x57AE,0x5793,0x5955,0x5951,0x594F,0x594E,0x5950, 0x59DC,0x59D8,0x59FF,0x59E3,0x59E8,0x5A03,0x59E5,0x59EA, 0x59DA,0x59E6,0x5A01,0x59FB,0x5B69,0x5BA3,0x5BA6,0x5BA4, 0x5BA2,0x5BA5,0x5C01,0x5C4E,0x5C4F,0x5C4D,0x5C4B,0x5CD9, 0x5CD2,0x5DF7,0x5E1D,0x5E25,0x5E1F,0x5E7D,0x5EA0,0x5EA6, 0x5EFA,0x5F08,0x5F2D,0x5F65,0x5F88,0x5F85,0x5F8A,0x5F8B, 0x5F87,0x5F8C,0x5F89,0x6012,0x601D,0x6020,0x6025,0x600E, 0x6028,0x604D,0x6070,0x6068,0x6062,0x6046,0x6043,0x606C, 0x606B,0x606A,0x6064,0x6241,0x62DC,0x6316,0x6309,0x62FC, 0x62ED,0x6301,0x62EE,0x62FD,0x6307,0x62F1,0x62F7,INVALC, /* Block 173, Array index 0x0C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x62EF,0x62EC,0x62FE,0x62F4,0x6311,0x6302,0x653F,0x6545, 0x65AB,0x65BD,0x65E2,0x6625,0x662D,0x6620,0x6627,0x662F, 0x661F,0x6628,0x6631,0x6624,0x66F7,0x67FF,0x67D3,0x67F1, 0x67D4,0x67D0,0x67EC,0x67B6,0x67AF,0x67F5,0x67E9,0x67EF, 0x67C4,0x67D1,0x67B4,0x67DA,0x67E5,0x67B8,0x67CF,0x67DE, 0x67F3,0x67B0,0x67D9,0x67E2,0x67DD,0x67D2,0x6B6A,0x6B83, 0x6B86,0x6BB5,0x6BD2,0x6BD7,0x6C1F,0x6CC9,0x6D0B,0x6D32, 0x6D2A,0x6D41,0x6D25,0x6D0C,0x6D31,0x6D1E,0x6D17,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6D3B,0x6D3D,0x6D3E,0x6D36,0x6D1B,0x6CF5,0x6D39, 0x6D27,0x6D38,0x6D29,0x6D2E,0x6D35,0x6D0E,0x6D2B,0x70AB, 0x70BA,0x70B3,0x70AC,0x70AF,0x70AD,0x70B8,0x70AE,0x70A4, 0x7230,0x7272,0x726F,0x7274,0x72E9,0x72E0,0x72E1,0x73B7, 0x73CA,0x73BB,0x73B2,0x73CD,0x73C0,0x73B3,0x751A,0x752D, 0x754F,0x754C,0x754E,0x754B,0x75AB,0x75A4,0x75A5,0x75A2, 0x75A3,0x7678,0x7686,0x7687,0x7688,0x76C8,0x76C6,0x76C3, 0x76C5,0x7701,0x76F9,0x76F8,0x7709,0x770B,0x76FE,0x76FC, 0x7707,0x77DC,0x7802,0x7814,0x780C,0x780D,0x7946,0x7949, 0x7948,0x7947,0x79B9,0x79BA,0x79D1,0x79D2,0x79CB,0x7A7F, 0x7A81,0x7AFF,0x7AFD,0x7C7D,0x7D02,0x7D05,0x7D00,0x7D09, 0x7D07,0x7D04,0x7D06,0x7F38,0x7F8E,0x7FBF,0x8004,INVALC, /* Block 174, Array index 0x0D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x8010,0x800D,0x8011,0x8036,0x80D6,0x80E5,0x80DA,0x80C3, 0x80C4,0x80CC,0x80E1,0x80DB,0x80CE,0x80DE,0x80E4,0x80DD, 0x81F4,0x8222,0x82E7,0x8303,0x8305,0x82E3,0x82DB,0x82E6, 0x8304,0x82E5,0x8302,0x8309,0x82D2,0x82D7,0x82F1,0x8301, 0x82DC,0x82D4,0x82D1,0x82DE,0x82D3,0x82DF,0x82EF,0x8306, 0x8650,0x8679,0x867B,0x867A,0x884D,0x886B,0x8981,0x89D4, 0x8A08,0x8A02,0x8A03,0x8C9E,0x8CA0,0x8D74,0x8D73,0x8DB4, 0x8ECD,0x8ECC,0x8FF0,0x8FE6,0x8FE2,0x8FEA,0x8FE5,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8FED,0x8FEB,0x8FE4,0x8FE8,0x90CA,0x90CE,0x90C1, 0x90C3,0x914B,0x914A,0x91CD,0x9582,0x9650,0x964B,0x964C, 0x964D,0x9762,0x9769,0x97CB,0x97ED,0x97F3,0x9801,0x98A8, 0x98DB,0x98DF,0x9996,0x9999,0x4E58,0x4EB3,0x500C,0x500D, 0x5023,0x4FEF,0x5026,0x5025,0x4FF8,0x5029,0x5016,0x5006, 0x503C,0x501F,0x501A,0x5012,0x5011,0x4FFA,0x5000,0x5014, 0x5028,0x4FF1,0x5021,0x500B,0x5019,0x5018,0x4FF3,0x4FEE, 0x502D,0x502A,0x4FFE,0x502B,0x5009,0x517C,0x51A4,0x51A5, 0x51A2,0x51CD,0x51CC,0x51C6,0x51CB,0x5256,0x525C,0x5254, 0x525B,0x525D,0x532A,0x537F,0x539F,0x539D,0x53DF,0x54E8, 0x5510,0x5501,0x5537,0x54FC,0x54E5,0x54F2,0x5506,0x54FA, 0x5514,0x54E9,0x54ED,0x54E1,0x5509,0x54EE,0x54EA,INVALC, /* Block 175, Array index 0x0E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x54E6,0x5527,0x5507,0x54FD,0x550F,0x5703,0x5704,0x57C2, 0x57D4,0x57CB,0x57C3,0x5809,0x590F,0x5957,0x5958,0x595A, 0x5A11,0x5A18,0x5A1C,0x5A1F,0x5A1B,0x5A13,0x59EC,0x5A20, 0x5A23,0x5A29,0x5A25,0x5A0C,0x5A09,0x5B6B,0x5C58,0x5BB0, 0x5BB3,0x5BB6,0x5BB4,0x5BAE,0x5BB5,0x5BB9,0x5BB8,0x5C04, 0x5C51,0x5C55,0x5C50,0x5CED,0x5CFD,0x5CFB,0x5CEA,0x5CE8, 0x5CF0,0x5CF6,0x5D01,0x5CF4,0x5DEE,0x5E2D,0x5E2B,0x5EAB, 0x5EAD,0x5EA7,0x5F31,0x5F92,0x5F91,0x5F90,0x6059,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6063,0x6065,0x6050,0x6055,0x606D,0x6069,0x606F, 0x6084,0x609F,0x609A,0x608D,0x6094,0x608C,0x6085,0x6096, 0x6247,0x62F3,0x6308,0x62FF,0x634E,0x633E,0x632F,0x6355, 0x6342,0x6346,0x634F,0x6349,0x633A,0x6350,0x633D,0x632A, 0x632B,0x6328,0x634D,0x634C,0x6548,0x6549,0x6599,0x65C1, 0x65C5,0x6642,0x6649,0x664F,0x6643,0x6652,0x664C,0x6645, 0x6641,0x66F8,0x6714,0x6715,0x6717,0x6821,0x6838,0x6848, 0x6846,0x6853,0x6839,0x6842,0x6854,0x6829,0x68B3,0x6817, 0x684C,0x6851,0x683D,0x67F4,0x6850,0x6840,0x683C,0x6843, 0x682A,0x6845,0x6813,0x6818,0x6841,0x6B8A,0x6B89,0x6BB7, 0x6C23,0x6C27,0x6C28,0x6C26,0x6C24,0x6CF0,0x6D6A,0x6D95, 0x6D88,0x6D87,0x6D66,0x6D78,0x6D77,0x6D59,0x6D93,INVALC, /* Block 176, Array index 0x0F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6D6C,0x6D89,0x6D6E,0x6D5A,0x6D74,0x6D69,0x6D8C,0x6D8A, 0x6D79,0x6D85,0x6D65,0x6D94,0x70CA,0x70D8,0x70E4,0x70D9, 0x70C8,0x70CF,0x7239,0x7279,0x72FC,0x72F9,0x72FD,0x72F8, 0x72F7,0x7386,0x73ED,0x7409,0x73EE,0x73E0,0x73EA,0x73DE, 0x7554,0x755D,0x755C,0x755A,0x7559,0x75BE,0x75C5,0x75C7, 0x75B2,0x75B3,0x75BD,0x75BC,0x75B9,0x75C2,0x75B8,0x768B, 0x76B0,0x76CA,0x76CD,0x76CE,0x7729,0x771F,0x7720,0x7728, 0x77E9,0x7830,0x7827,0x7838,0x781D,0x7834,0x7837,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7825,0x782D,0x7820,0x781F,0x7832,0x7955,0x7950, 0x7960,0x795F,0x7956,0x795E,0x795D,0x7957,0x795A,0x79E4, 0x79E3,0x79E7,0x79DF,0x79E6,0x79E9,0x79D8,0x7A84,0x7A88, 0x7AD9,0x7B06,0x7B11,0x7C89,0x7D21,0x7D17,0x7D0B,0x7D0A, 0x7D20,0x7D22,0x7D14,0x7D10,0x7D15,0x7D1A,0x7D1C,0x7D0D, 0x7D19,0x7D1B,0x7F3A,0x7F5F,0x7F94,0x7FC5,0x7FC1,0x8006, 0x8018,0x8015,0x8019,0x8017,0x803D,0x803F,0x80F1,0x8102, 0x80F0,0x8105,0x80ED,0x80F4,0x8106,0x80F8,0x80F3,0x8108, 0x80FD,0x810A,0x80FC,0x80EF,0x81ED,0x81EC,0x8200,0x8210, 0x822A,0x822B,0x8228,0x822C,0x82BB,0x832B,0x8352,0x8354, 0x834A,0x8338,0x8350,0x8349,0x8335,0x8334,0x834F,0x8332, 0x8339,0x8336,0x8317,0x8340,0x8331,0x8328,0x8343,INVALC, /* Block 177, Array index 0x1000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x8654,0x868A,0x86AA,0x8693,0x86A4,0x86A9,0x868C,0x86A3, 0x869C,0x8870,0x8877,0x8881,0x8882,0x887D,0x8879,0x8A18, 0x8A10,0x8A0E,0x8A0C,0x8A15,0x8A0A,0x8A17,0x8A13,0x8A16, 0x8A0F,0x8A11,0x8C48,0x8C7A,0x8C79,0x8CA1,0x8CA2,0x8D77, 0x8EAC,0x8ED2,0x8ED4,0x8ECF,0x8FB1,0x9001,0x9006,0x8FF7, 0x9000,0x8FFA,0x8FF4,0x9003,0x8FFD,0x9005,0x8FF8,0x9095, 0x90E1,0x90DD,0x90E2,0x9152,0x914D,0x914C,0x91D8,0x91DD, 0x91D7,0x91DC,0x91D9,0x9583,0x9662,0x9663,0x9661,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x965B,0x965D,0x9664,0x9658,0x965E,0x96BB,0x98E2, 0x99AC,0x9AA8,0x9AD8,0x9B25,0x9B32,0x9B3C,0x4E7E,0x507A, 0x507D,0x505C,0x5047,0x5043,0x504C,0x505A,0x5049,0x5065, 0x5076,0x504E,0x5055,0x5075,0x5074,0x5077,0x504F,0x500F, 0x506F,0x506D,0x515C,0x5195,0x51F0,0x526A,0x526F,0x52D2, 0x52D9,0x52D8,0x52D5,0x5310,0x530F,0x5319,0x533F,0x5340, 0x533E,0x53C3,0x66FC,0x5546,0x556A,0x5566,0x5544,0x555E, 0x5561,0x5543,0x554A,0x5531,0x5556,0x554F,0x5555,0x552F, 0x5564,0x5538,0x552E,0x555C,0x552C,0x5563,0x5533,0x5541, 0x5557,0x5708,0x570B,0x5709,0x57DF,0x5805,0x580A,0x5806, 0x57E0,0x57E4,0x57FA,0x5802,0x5835,0x57F7,0x57F9,0x5920, 0x5962,0x5A36,0x5A41,0x5A49,0x5A66,0x5A6A,0x5A40,INVALC, /* Block 178, Array index 0x1100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5A3C,0x5A62,0x5A5A,0x5A46,0x5A4A,0x5B70,0x5BC7,0x5BC5, 0x5BC4,0x5BC2,0x5BBF,0x5BC6,0x5C09,0x5C08,0x5C07,0x5C60, 0x5C5C,0x5C5D,0x5D07,0x5D06,0x5D0E,0x5D1B,0x5D16,0x5D22, 0x5D11,0x5D29,0x5D14,0x5D19,0x5D24,0x5D27,0x5D17,0x5DE2, 0x5E38,0x5E36,0x5E33,0x5E37,0x5EB7,0x5EB8,0x5EB6,0x5EB5, 0x5EBE,0x5F35,0x5F37,0x5F57,0x5F6C,0x5F69,0x5F6B,0x5F97, 0x5F99,0x5F9E,0x5F98,0x5FA1,0x5FA0,0x5F9C,0x607F,0x60A3, 0x6089,0x60A0,0x60A8,0x60CB,0x60B4,0x60E6,0x60BD,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x60C5,0x60BB,0x60B5,0x60DC,0x60BC,0x60D8,0x60D5, 0x60C6,0x60DF,0x60B8,0x60DA,0x60C7,0x621A,0x621B,0x6248, 0x63A0,0x63A7,0x6372,0x6396,0x63A2,0x63A5,0x6377,0x6367, 0x6398,0x63AA,0x6371,0x63A9,0x6389,0x6383,0x639B,0x636B, 0x63A8,0x6384,0x6388,0x6399,0x63A1,0x63AC,0x6392,0x638F, 0x6380,0x637B,0x6369,0x6368,0x637A,0x655D,0x6556,0x6551, 0x6559,0x6557,0x555F,0x654F,0x6558,0x6555,0x6554,0x659C, 0x659B,0x65AC,0x65CF,0x65CB,0x65CC,0x65CE,0x665D,0x665A, 0x6664,0x6668,0x6666,0x665E,0x66F9,0x52D7,0x671B,0x6881, 0x68AF,0x68A2,0x6893,0x68B5,0x687F,0x6876,0x68B1,0x68A7, 0x6897,0x68B0,0x6883,0x68C4,0x68AD,0x6886,0x6885,0x6894, 0x689D,0x68A8,0x689F,0x68A1,0x6882,0x6B32,0x6BBA,INVALC, /* Block 179, Array index 0x1200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6BEB,0x6BEC,0x6C2B,0x6D8E,0x6DBC,0x6DF3,0x6DD9,0x6DB2, 0x6DE1,0x6DCC,0x6DE4,0x6DFB,0x6DFA,0x6E05,0x6DC7,0x6DCB, 0x6DAF,0x6DD1,0x6DAE,0x6DDE,0x6DF9,0x6DB8,0x6DF7,0x6DF5, 0x6DC5,0x6DD2,0x6E1A,0x6DB5,0x6DDA,0x6DEB,0x6DD8,0x6DEA, 0x6DF1,0x6DEE,0x6DE8,0x6DC6,0x6DC4,0x6DAA,0x6DEC,0x6DBF, 0x6DE6,0x70F9,0x7109,0x710A,0x70FD,0x70EF,0x723D,0x727D, 0x7281,0x731C,0x731B,0x7316,0x7313,0x7319,0x7387,0x7405, 0x740A,0x7403,0x7406,0x73FE,0x740D,0x74E0,0x74F6,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x74F7,0x751C,0x7522,0x7565,0x7566,0x7562,0x7570, 0x758F,0x75D4,0x75D5,0x75B5,0x75CA,0x75CD,0x768E,0x76D4, 0x76D2,0x76DB,0x7737,0x773E,0x773C,0x7736,0x7738,0x773A, 0x786B,0x7843,0x784E,0x7965,0x7968,0x796D,0x79FB,0x7A92, 0x7A95,0x7B20,0x7B28,0x7B1B,0x7B2C,0x7B26,0x7B19,0x7B1E, 0x7B2E,0x7C92,0x7C97,0x7C95,0x7D46,0x7D43,0x7D71,0x7D2E, 0x7D39,0x7D3C,0x7D40,0x7D30,0x7D33,0x7D44,0x7D2F,0x7D42, 0x7D32,0x7D31,0x7F3D,0x7F9E,0x7F9A,0x7FCC,0x7FCE,0x7FD2, 0x801C,0x804A,0x8046,0x812F,0x8116,0x8123,0x812B,0x8129, 0x8130,0x8124,0x8202,0x8235,0x8237,0x8236,0x8239,0x838E, 0x839E,0x8398,0x8378,0x83A2,0x8396,0x83BD,0x83AB,0x8392, 0x838A,0x8393,0x8389,0x83A0,0x8377,0x837B,0x837C,INVALC, /* Block 180, Array index 0x1300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x8386,0x83A7,0x8655,0x5F6A,0x86C7,0x86C0,0x86B6,0x86C4, 0x86B5,0x86C6,0x86CB,0x86B1,0x86AF,0x86C9,0x8853,0x889E, 0x8888,0x88AB,0x8892,0x8896,0x888D,0x888B,0x8993,0x898F, 0x8A2A,0x8A1D,0x8A23,0x8A25,0x8A31,0x8A2D,0x8A1F,0x8A1B, 0x8A22,0x8C49,0x8C5A,0x8CA9,0x8CAC,0x8CAB,0x8CA8,0x8CAA, 0x8CA7,0x8D67,0x8D66,0x8DBE,0x8DBA,0x8EDB,0x8EDF,0x9019, 0x900D,0x901A,0x9017,0x9023,0x901F,0x901D,0x9010,0x9015, 0x901E,0x9020,0x900F,0x9022,0x9016,0x901B,0x9014,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x90E8,0x90ED,0x90FD,0x9157,0x91CE,0x91F5,0x91E6, 0x91E3,0x91E7,0x91ED,0x91E9,0x9589,0x966A,0x9675,0x9673, 0x9678,0x9670,0x9674,0x9676,0x9677,0x966C,0x96C0,0x96EA, 0x96E9,0x7AE0,0x7ADF,0x9802,0x9803,0x9B5A,0x9CE5,0x9E75, 0x9E7F,0x9EA5,0x9EBB,0x50A2,0x508D,0x5085,0x5099,0x5091, 0x5080,0x5096,0x5098,0x509A,0x6700,0x51F1,0x5272,0x5274, 0x5275,0x5269,0x52DE,0x52DD,0x52DB,0x535A,0x53A5,0x557B, 0x5580,0x55A7,0x557C,0x558A,0x559D,0x5598,0x5582,0x559C, 0x55AA,0x5594,0x5587,0x558B,0x5583,0x55B3,0x55AE,0x559F, 0x553E,0x55B2,0x559A,0x55BB,0x55AC,0x55B1,0x557E,0x5589, 0x55AB,0x5599,0x570D,0x582F,0x582A,0x5834,0x5824,0x5830, 0x5831,0x5821,0x581D,0x5820,0x58F9,0x58FA,0x5960,INVALC, /* Block 181, Array index 0x1400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5A77,0x5A9A,0x5A7F,0x5A92,0x5A9B,0x5AA7,0x5B73,0x5B71, 0x5BD2,0x5BCC,0x5BD3,0x5BD0,0x5C0A,0x5C0B,0x5C31,0x5D4C, 0x5D50,0x5D34,0x5D47,0x5DFD,0x5E45,0x5E3D,0x5E40,0x5E43, 0x5E7E,0x5ECA,0x5EC1,0x5EC2,0x5EC4,0x5F3C,0x5F6D,0x5FA9, 0x5FAA,0x5FA8,0x60D1,0x60E1,0x60B2,0x60B6,0x60E0,0x611C, 0x6123,0x60FA,0x6115,0x60F0,0x60FB,0x60F4,0x6168,0x60F1, 0x610E,0x60F6,0x6109,0x6100,0x6112,0x621F,0x6249,0x63A3, 0x638C,0x63CF,0x63C0,0x63E9,0x63C9,0x63C6,0x63CD,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x63D2,0x63E3,0x63D0,0x63E1,0x63D6,0x63ED,0x63EE, 0x6376,0x63F4,0x63EA,0x63DB,0x6452,0x63DA,0x63F9,0x655E, 0x6566,0x6562,0x6563,0x6591,0x6590,0x65AF,0x666E,0x6670, 0x6674,0x6676,0x666F,0x6691,0x667A,0x667E,0x6677,0x66FE, 0x66FF,0x671F,0x671D,0x68FA,0x68D5,0x68E0,0x68D8,0x68D7, 0x6905,0x68DF,0x68F5,0x68EE,0x68E7,0x68F9,0x68D2,0x68F2, 0x68E3,0x68CB,0x68CD,0x690D,0x6912,0x690E,0x68C9,0x68DA, 0x696E,0x68FB,0x6B3E,0x6B3A,0x6B3D,0x6B98,0x6B96,0x6BBC, 0x6BEF,0x6C2E,0x6C2F,0x6C2C,0x6E2F,0x6E38,0x6E54,0x6E21, 0x6E32,0x6E67,0x6E4A,0x6E20,0x6E25,0x6E23,0x6E1B,0x6E5B, 0x6E58,0x6E24,0x6E56,0x6E6E,0x6E2D,0x6E26,0x6E6F,0x6E34, 0x6E4D,0x6E3A,0x6E2C,0x6E43,0x6E1D,0x6E3E,0x6ECB,INVALC, /* Block 182, Array index 0x1500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6E89,0x6E19,0x6E4E,0x6E63,0x6E44,0x6E72,0x6E69,0x6E5F, 0x7119,0x711A,0x7126,0x7130,0x7121,0x7136,0x716E,0x711C, 0x724C,0x7284,0x7280,0x7336,0x7325,0x7334,0x7329,0x743A, 0x742A,0x7433,0x7422,0x7425,0x7435,0x7436,0x7434,0x742F, 0x741B,0x7426,0x7428,0x7525,0x7526,0x756B,0x756A,0x75E2, 0x75DB,0x75E3,0x75D9,0x75D8,0x75DE,0x75E0,0x767B,0x767C, 0x7696,0x7693,0x76B4,0x76DC,0x774F,0x77ED,0x785D,0x786C, 0x786F,0x7A0D,0x7A08,0x7A0B,0x7A05,0x7A00,0x7A98,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7A97,0x7A96,0x7AE5,0x7AE3,0x7B49,0x7B56,0x7B46, 0x7B50,0x7B52,0x7B54,0x7B4D,0x7B4B,0x7B4F,0x7B51,0x7C9F, 0x7CA5,0x7D5E,0x7D50,0x7D68,0x7D55,0x7D2B,0x7D6E,0x7D72, 0x7D61,0x7D66,0x7D62,0x7D70,0x7D73,0x5584,0x7FD4,0x7FD5, 0x800B,0x8052,0x8085,0x8155,0x8154,0x814B,0x8151,0x814E, 0x8139,0x8146,0x813E,0x814C,0x8153,0x8174,0x8212,0x821C, 0x83E9,0x8403,0x83F8,0x840D,0x83E0,0x83C5,0x840B,0x83C1, 0x83EF,0x83F1,0x83F4,0x8457,0x840A,0x83F0,0x840C,0x83CC, 0x83FD,0x83F2,0x83CA,0x8438,0x840E,0x8404,0x83DC,0x8407, 0x83D4,0x83DF,0x865B,0x86DF,0x86D9,0x86ED,0x86D4,0x86DB, 0x86E4,0x86D0,0x86DE,0x8857,0x88C1,0x88C2,0x88B1,0x8983, 0x8996,0x8A3B,0x8A60,0x8A55,0x8A5E,0x8A3C,0x8A41,INVALC, /* Block 183, Array index 0x1600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x8A54,0x8A5B,0x8A50,0x8A46,0x8A34,0x8A3A,0x8A36,0x8A56, 0x8C61,0x8C82,0x8CAF,0x8CBC,0x8CB3,0x8CBD,0x8CC1,0x8CBB, 0x8CC0,0x8CB4,0x8CB7,0x8CB6,0x8CBF,0x8CB8,0x8D8A,0x8D85, 0x8D81,0x8DCE,0x8DDD,0x8DCB,0x8DDA,0x8DD1,0x8DCC,0x8DDB, 0x8DC6,0x8EFB,0x8EF8,0x8EFC,0x8F9C,0x902E,0x9035,0x9031, 0x9038,0x9032,0x9036,0x9102,0x90F5,0x9109,0x90FE,0x9163, 0x9165,0x91CF,0x9214,0x9215,0x9223,0x9209,0x921E,0x920D, 0x9210,0x9207,0x9211,0x9594,0x958F,0x958B,0x9591,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9593,0x9592,0x958E,0x968A,0x968E,0x968B,0x967D, 0x9685,0x9686,0x968D,0x9672,0x9684,0x96C1,0x96C5,0x96C4, 0x96C6,0x96C7,0x96EF,0x96F2,0x97CC,0x9805,0x9806,0x9808, 0x98E7,0x98EA,0x98EF,0x98E9,0x98F2,0x98ED,0x99AE,0x99AD, 0x9EC3,0x9ECD,0x9ED1,0x4E82,0x50AD,0x50B5,0x50B2,0x50B3, 0x50C5,0x50BE,0x50AC,0x50B7,0x50BB,0x50AF,0x50C7,0x527F, 0x5277,0x527D,0x52DF,0x52E6,0x52E4,0x52E2,0x52E3,0x532F, 0x55DF,0x55E8,0x55D3,0x55E6,0x55CE,0x55DC,0x55C7,0x55D1, 0x55E3,0x55E4,0x55EF,0x55DA,0x55E1,0x55C5,0x55C6,0x55E5, 0x55C9,0x5712,0x5713,0x585E,0x5851,0x5858,0x5857,0x585A, 0x5854,0x586B,0x584C,0x586D,0x584A,0x5862,0x5852,0x584B, 0x5967,0x5AC1,0x5AC9,0x5ACC,0x5ABE,0x5ABD,0x5ABC,INVALC, /* Block 184, Array index 0x1700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5AB3,0x5AC2,0x5AB2,0x5D69,0x5D6F,0x5E4C,0x5E79,0x5EC9, 0x5EC8,0x5F12,0x5F59,0x5FAC,0x5FAE,0x611A,0x610F,0x6148, 0x611F,0x60F3,0x611B,0x60F9,0x6101,0x6108,0x614E,0x614C, 0x6144,0x614D,0x613E,0x6134,0x6127,0x610D,0x6106,0x6137, 0x6221,0x6222,0x6413,0x643E,0x641E,0x642A,0x642D,0x643D, 0x642C,0x640F,0x641C,0x6414,0x640D,0x6436,0x6416,0x6417, 0x6406,0x656C,0x659F,0x65B0,0x6697,0x6689,0x6687,0x6688, 0x6696,0x6684,0x6698,0x668D,0x6703,0x6994,0x696D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x695A,0x6977,0x6960,0x6954,0x6975,0x6930,0x6982, 0x694A,0x6968,0x696B,0x695E,0x6953,0x6979,0x6986,0x695D, 0x6963,0x695B,0x6B47,0x6B72,0x6BC0,0x6BBF,0x6BD3,0x6BFD, 0x6EA2,0x6EAF,0x6ED3,0x6EB6,0x6EC2,0x6E90,0x6E9D,0x6EC7, 0x6EC5,0x6EA5,0x6E98,0x6EBC,0x6EBA,0x6EAB,0x6ED1,0x6E96, 0x6E9C,0x6EC4,0x6ED4,0x6EAA,0x6EA7,0x6EB4,0x714E,0x7159, 0x7169,0x7164,0x7149,0x7167,0x715C,0x716C,0x7166,0x714C, 0x7165,0x715E,0x7146,0x7168,0x7156,0x723A,0x7252,0x7337, 0x7345,0x733F,0x733E,0x746F,0x745A,0x7455,0x745F,0x745E, 0x7441,0x743F,0x7459,0x745B,0x745C,0x7576,0x7578,0x7600, 0x75F0,0x7601,0x75F2,0x75F1,0x75FA,0x75FF,0x75F4,0x75F3, 0x76DE,0x76DF,0x775B,0x776B,0x7766,0x775E,0x7763,INVALC, /* Block 185, Array index 0x1800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7779,0x776A,0x776C,0x775C,0x7765,0x7768,0x7762,0x77EE, 0x788E,0x78B0,0x7897,0x7898,0x788C,0x7889,0x787C,0x7891, 0x7893,0x787F,0x797A,0x797F,0x7981,0x842C,0x79BD,0x7A1C, 0x7A1A,0x7A20,0x7A14,0x7A1F,0x7A1E,0x7A9F,0x7AA0,0x7B77, 0x7BC0,0x7B60,0x7B6E,0x7B67,0x7CB1,0x7CB3,0x7CB5,0x7D93, 0x7D79,0x7D91,0x7D81,0x7D8F,0x7D5B,0x7F6E,0x7F69,0x7F6A, 0x7F72,0x7FA9,0x7FA8,0x7FA4,0x8056,0x8058,0x8086,0x8084, 0x8171,0x8170,0x8178,0x8165,0x816E,0x8173,0x816B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8179,0x817A,0x8166,0x8205,0x8247,0x8482,0x8477, 0x843D,0x8431,0x8475,0x8466,0x846B,0x8449,0x846C,0x845B, 0x843C,0x8435,0x8461,0x8463,0x8469,0x846D,0x8446,0x865E, 0x865C,0x865F,0x86F9,0x8713,0x8708,0x8707,0x8700,0x86FE, 0x86FB,0x8702,0x8703,0x8706,0x870A,0x8859,0x88DF,0x88D4, 0x88D9,0x88DC,0x88D8,0x88DD,0x88E1,0x88CA,0x88D5,0x88D2, 0x899C,0x89E3,0x8A6B,0x8A72,0x8A73,0x8A66,0x8A69,0x8A70, 0x8A87,0x8A7C,0x8A63,0x8AA0,0x8A71,0x8A85,0x8A6D,0x8A62, 0x8A6E,0x8A6C,0x8A79,0x8A7B,0x8A3E,0x8A68,0x8C62,0x8C8A, 0x8C89,0x8CCA,0x8CC7,0x8CC8,0x8CC4,0x8CB2,0x8CC3,0x8CC2, 0x8CC5,0x8DE1,0x8DDF,0x8DE8,0x8DEF,0x8DF3,0x8DFA,0x8DEA, 0x8DE4,0x8DE6,0x8EB2,0x8F03,0x8F09,0x8EFE,0x8F0A,INVALC, /* Block 186, Array index 0x1900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x8F9F,0x8FB2,0x904B,0x904A,0x9053,0x9042,0x9054,0x903C, 0x9055,0x9050,0x9047,0x904F,0x904E,0x904D,0x9051,0x903E, 0x9041,0x9112,0x9117,0x916C,0x916A,0x9169,0x91C9,0x9237, 0x9257,0x9238,0x923D,0x9240,0x923E,0x925B,0x924B,0x9264, 0x9251,0x9234,0x9249,0x924D,0x9245,0x9239,0x923F,0x925A, 0x9598,0x9698,0x9694,0x9695,0x96CD,0x96CB,0x96C9,0x96CA, 0x96F7,0x96FB,0x96F9,0x96F6,0x9756,0x9774,0x9776,0x9810, 0x9811,0x9813,0x980A,0x9812,0x980C,0x98FC,0x98F4,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x98FD,0x98FE,0x99B3,0x99B1,0x99B4,0x9AE1,0x9CE9, 0x9E82,0x9F0E,0x9F13,0x9F20,0x50E7,0x50EE,0x50E5,0x50D6, 0x50ED,0x50DA,0x50D5,0x50CF,0x50D1,0x50F1,0x50CE,0x50E9, 0x5162,0x51F3,0x5283,0x5282,0x5331,0x53AD,0x55FE,0x5600, 0x561B,0x5617,0x55FD,0x5614,0x5606,0x5609,0x560D,0x560E, 0x55F7,0x5616,0x561F,0x5608,0x5610,0x55F6,0x5718,0x5716, 0x5875,0x587E,0x5883,0x5893,0x588A,0x5879,0x5885,0x587D, 0x58FD,0x5925,0x5922,0x5924,0x596A,0x5969,0x5AE1,0x5AE6, 0x5AE9,0x5AD7,0x5AD6,0x5AD8,0x5AE3,0x5B75,0x5BDE,0x5BE7, 0x5BE1,0x5BE5,0x5BE6,0x5BE8,0x5BE2,0x5BE4,0x5BDF,0x5C0D, 0x5C62,0x5D84,0x5D87,0x5E5B,0x5E63,0x5E55,0x5E57,0x5E54, 0x5ED3,0x5ED6,0x5F0A,0x5F46,0x5F70,0x5FB9,0x6147,INVALC, /* Block 187, Array index 0x1A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x613F,0x614B,0x6177,0x6162,0x6163,0x615F,0x615A,0x6158, 0x6175,0x622A,0x6487,0x6458,0x6454,0x64A4,0x6478,0x645F, 0x647A,0x6451,0x6467,0x6434,0x646D,0x647B,0x6572,0x65A1, 0x65D7,0x65D6,0x66A2,0x66A8,0x669D,0x699C,0x69A8,0x6995, 0x69C1,0x69AE,0x69D3,0x69CB,0x699B,0x69B7,0x69BB,0x69AB, 0x69B4,0x69D0,0x69CD,0x69AD,0x69CC,0x69A6,0x69C3,0x69A3, 0x6B49,0x6B4C,0x6C33,0x6F33,0x6F14,0x6EFE,0x6F13,0x6EF4, 0x6F29,0x6F3E,0x6F20,0x6F2C,0x6F0F,0x6F02,0x6F22,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6EFF,0x6EEF,0x6F06,0x6F31,0x6F38,0x6F32,0x6F23, 0x6F15,0x6F2B,0x6F2F,0x6F88,0x6F2A,0x6EEC,0x6F01,0x6EF2, 0x6ECC,0x6EF7,0x7194,0x7199,0x717D,0x718A,0x7184,0x7192, 0x723E,0x7292,0x7296,0x7344,0x7350,0x7464,0x7463,0x746A, 0x7470,0x746D,0x7504,0x7591,0x7627,0x760D,0x760B,0x7609, 0x7613,0x76E1,0x76E3,0x7784,0x777D,0x777F,0x7761,0x78C1, 0x789F,0x78A7,0x78B3,0x78A9,0x78A3,0x798E,0x798F,0x798D, 0x7A2E,0x7A31,0x7AAA,0x7AA9,0x7AED,0x7AEF,0x7BA1,0x7B95, 0x7B8B,0x7B75,0x7B97,0x7B9D,0x7B94,0x7B8F,0x7BB8,0x7B87, 0x7B84,0x7CB9,0x7CBD,0x7CBE,0x7DBB,0x7DB0,0x7D9C,0x7DBD, 0x7DBE,0x7DA0,0x7DCA,0x7DB4,0x7DB2,0x7DB1,0x7DBA,0x7DA2, 0x7DBF,0x7DB5,0x7DB8,0x7DAD,0x7DD2,0x7DC7,0x7DAC,INVALC, /* Block 188, Array index 0x1B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7F70,0x7FE0,0x7FE1,0x7FDF,0x805E,0x805A,0x8087,0x8150, 0x8180,0x818F,0x8188,0x818A,0x817F,0x8182,0x81E7,0x81FA, 0x8207,0x8214,0x821E,0x824B,0x84C9,0x84BF,0x84C6,0x84C4, 0x8499,0x849E,0x84B2,0x849C,0x84CB,0x84B8,0x84C0,0x84D3, 0x8490,0x84BC,0x84D1,0x84CA,0x873F,0x871C,0x873B,0x8722, 0x8725,0x8734,0x8718,0x8755,0x8737,0x8729,0x88F3,0x8902, 0x88F4,0x88F9,0x88F8,0x88FD,0x88E8,0x891A,0x88EF,0x8AA6, 0x8A8C,0x8A9E,0x8AA3,0x8A8D,0x8AA1,0x8A93,0x8AA4,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8AAA,0x8AA5,0x8AA8,0x8A98,0x8A91,0x8A9A,0x8AA7, 0x8C6A,0x8C8D,0x8C8C,0x8CD3,0x8CD1,0x8CD2,0x8D6B,0x8D99, 0x8D95,0x8DFC,0x8F14,0x8F12,0x8F15,0x8F13,0x8FA3,0x9060, 0x9058,0x905C,0x9063,0x9059,0x905E,0x9062,0x905D,0x905B, 0x9119,0x9118,0x911E,0x9175,0x9178,0x9177,0x9174,0x9278, 0x9280,0x9285,0x9298,0x9296,0x927B,0x9293,0x929C,0x92A8, 0x927C,0x9291,0x95A1,0x95A8,0x95A9,0x95A3,0x95A5,0x95A4, 0x9699,0x969C,0x969B,0x96CC,0x96D2,0x9700,0x977C,0x9785, 0x97F6,0x9817,0x9818,0x98AF,0x98B1,0x9903,0x9905,0x990C, 0x9909,0x99C1,0x9AAF,0x9AB0,0x9AE6,0x9B41,0x9B42,0x9CF4, 0x9CF6,0x9CF3,0x9EBC,0x9F3B,0x9F4A,0x5104,0x5100,0x50FB, 0x50F5,0x50F9,0x5102,0x5108,0x5109,0x5105,0x51DC,INVALC, /* Block 189, Array index 0x1C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5287,0x5288,0x5289,0x528D,0x528A,0x52F0,0x53B2,0x562E, 0x563B,0x5639,0x5632,0x563F,0x5634,0x5629,0x5653,0x564E, 0x5657,0x5674,0x5636,0x562F,0x5630,0x5880,0x589F,0x589E, 0x58B3,0x589C,0x58AE,0x58A9,0x58A6,0x596D,0x5B09,0x5AFB, 0x5B0B,0x5AF5,0x5B0C,0x5B08,0x5BEE,0x5BEC,0x5BE9,0x5BEB, 0x5C64,0x5C65,0x5D9D,0x5D94,0x5E62,0x5E5F,0x5E61,0x5EE2, 0x5EDA,0x5EDF,0x5EDD,0x5EE3,0x5EE0,0x5F48,0x5F71,0x5FB7, 0x5FB5,0x6176,0x6167,0x616E,0x615D,0x6155,0x6182,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x617C,0x6170,0x616B,0x617E,0x61A7,0x6190,0x61AB, 0x618E,0x61AC,0x619A,0x61A4,0x6194,0x61AE,0x622E,0x6469, 0x646F,0x6479,0x649E,0x64B2,0x6488,0x6490,0x64B0,0x64A5, 0x6493,0x6495,0x64A9,0x6492,0x64AE,0x64AD,0x64AB,0x649A, 0x64AC,0x6499,0x64A2,0x64B3,0x6575,0x6577,0x6578,0x66AE, 0x66AB,0x66B4,0x66B1,0x6A23,0x6A1F,0x69E8,0x6A01,0x6A1E, 0x6A19,0x69FD,0x6A21,0x6A13,0x6A0A,0x69F3,0x6A02,0x6A05, 0x69ED,0x6A11,0x6B50,0x6B4E,0x6BA4,0x6BC5,0x6BC6,0x6F3F, 0x6F7C,0x6F84,0x6F51,0x6F66,0x6F54,0x6F86,0x6F6D,0x6F5B, 0x6F78,0x6F6E,0x6F8E,0x6F7A,0x6F70,0x6F64,0x6F97,0x6F58, 0x6ED5,0x6F6F,0x6F60,0x6F5F,0x719F,0x71AC,0x71B1,0x71A8, 0x7256,0x729B,0x734E,0x7357,0x7469,0x748B,0x7483,INVALC, /* Block 190, Array index 0x1D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x747E,0x7480,0x757F,0x7620,0x7629,0x761F,0x7624,0x7626, 0x7621,0x7622,0x769A,0x76BA,0x76E4,0x778E,0x7787,0x778C, 0x7791,0x778B,0x78CB,0x78C5,0x78BA,0x78CA,0x78BE,0x78D5, 0x78BC,0x78D0,0x7A3F,0x7A3C,0x7A40,0x7A3D,0x7A37,0x7A3B, 0x7AAF,0x7AAE,0x7BAD,0x7BB1,0x7BC4,0x7BB4,0x7BC6,0x7BC7, 0x7BC1,0x7BA0,0x7BCC,0x7CCA,0x7DE0,0x7DF4,0x7DEF,0x7DFB, 0x7DD8,0x7DEC,0x7DDD,0x7DE8,0x7DE3,0x7DDA,0x7DDE,0x7DE9, 0x7D9E,0x7DD9,0x7DF2,0x7DF9,0x7F75,0x7F77,0x7FAF,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7FE9,0x8026,0x819B,0x819C,0x819D,0x81A0,0x819A, 0x8198,0x8517,0x853D,0x851A,0x84EE,0x852C,0x852D,0x8513, 0x8511,0x8523,0x8521,0x8514,0x84EC,0x8525,0x84FF,0x8506, 0x8782,0x8774,0x8776,0x8760,0x8766,0x8778,0x8768,0x8759, 0x8757,0x874C,0x8753,0x885B,0x885D,0x8910,0x8907,0x8912, 0x8913,0x8915,0x890A,0x8ABC,0x8AD2,0x8AC7,0x8AC4,0x8A95, 0x8ACB,0x8AF8,0x8AB2,0x8AC9,0x8AC2,0x8ABF,0x8AB0,0x8AD6, 0x8ACD,0x8AB6,0x8AB9,0x8ADB,0x8C4C,0x8C4E,0x8C6C,0x8CE0, 0x8CDE,0x8CE6,0x8CE4,0x8CEC,0x8CED,0x8CE2,0x8CE3,0x8CDC, 0x8CEA,0x8CE1,0x8D6D,0x8D9F,0x8DA3,0x8E2B,0x8E10,0x8E1D, 0x8E22,0x8E0F,0x8E29,0x8E1F,0x8E21,0x8E1E,0x8EBA,0x8F1D, 0x8F1B,0x8F1F,0x8F29,0x8F26,0x8F2A,0x8F1C,0x8F1E,INVALC, /* Block 191, Array index 0x1E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x8F25,0x9069,0x906E,0x9068,0x906D,0x9077,0x9130,0x912D, 0x9127,0x9131,0x9187,0x9189,0x918B,0x9183,0x92C5,0x92BB, 0x92B7,0x92EA,0x92AC,0x92E4,0x92C1,0x92B3,0x92BC,0x92D2, 0x92C7,0x92F0,0x92B2,0x95AD,0x95B1,0x9704,0x9706,0x9707, 0x9709,0x9760,0x978D,0x978B,0x978F,0x9821,0x982B,0x981C, 0x98B3,0x990A,0x9913,0x9912,0x9918,0x99DD,0x99D0,0x99DF, 0x99DB,0x99D1,0x99D5,0x99D2,0x99D9,0x9AB7,0x9AEE,0x9AEF, 0x9B27,0x9B45,0x9B44,0x9B77,0x9B6F,0x9D06,0x9D09,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9D03,0x9EA9,0x9EBE,0x9ECE,0x58A8,0x9F52,0x5112, 0x5118,0x5114,0x5110,0x5115,0x5180,0x51AA,0x51DD,0x5291, 0x5293,0x52F3,0x5659,0x566B,0x5679,0x5669,0x5664,0x5678, 0x566A,0x5668,0x5665,0x5671,0x566F,0x566C,0x5662,0x5676, 0x58C1,0x58BE,0x58C7,0x58C5,0x596E,0x5B1D,0x5B34,0x5B78, 0x5BF0,0x5C0E,0x5F4A,0x61B2,0x6191,0x61A9,0x618A,0x61CD, 0x61B6,0x61BE,0x61CA,0x61C8,0x6230,0x64C5,0x64C1,0x64CB, 0x64BB,0x64BC,0x64DA,0x64C4,0x64C7,0x64C2,0x64CD,0x64BF, 0x64D2,0x64D4,0x64BE,0x6574,0x66C6,0x66C9,0x66B9,0x66C4, 0x66C7,0x66B8,0x6A3D,0x6A38,0x6A3A,0x6A59,0x6A6B,0x6A58, 0x6A39,0x6A44,0x6A62,0x6A61,0x6A4B,0x6A47,0x6A35,0x6A5F, 0x6A48,0x6B59,0x6B77,0x6C05,0x6FC2,0x6FB1,0x6FA1,INVALC, /* Block 192, Array index 0x1F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6FC3,0x6FA4,0x6FC1,0x6FA7,0x6FB3,0x6FC0,0x6FB9,0x6FB6, 0x6FA6,0x6FA0,0x6FB4,0x71BE,0x71C9,0x71D0,0x71D2,0x71C8, 0x71D5,0x71B9,0x71CE,0x71D9,0x71DC,0x71C3,0x71C4,0x7368, 0x749C,0x74A3,0x7498,0x749F,0x749E,0x74E2,0x750C,0x750D, 0x7634,0x7638,0x763A,0x76E7,0x76E5,0x77A0,0x779E,0x779F, 0x77A5,0x78E8,0x78DA,0x78EC,0x78E7,0x79A6,0x7A4D,0x7A4E, 0x7A46,0x7A4C,0x7A4B,0x7ABA,0x7BD9,0x7C11,0x7BC9,0x7BE4, 0x7BDB,0x7BE1,0x7BE9,0x7BE6,0x7CD5,0x7CD6,0x7E0A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7E11,0x7E08,0x7E1B,0x7E23,0x7E1E,0x7E1D,0x7E09, 0x7E10,0x7F79,0x7FB2,0x7FF0,0x7FF1,0x7FEE,0x8028,0x81B3, 0x81A9,0x81A8,0x81FB,0x8208,0x8258,0x8259,0x854A,0x8559, 0x8548,0x8568,0x8569,0x8543,0x8549,0x856D,0x856A,0x855E, 0x8783,0x879F,0x879E,0x87A2,0x878D,0x8861,0x892A,0x8932, 0x8925,0x892B,0x8921,0x89AA,0x89A6,0x8AE6,0x8AFA,0x8AEB, 0x8AF1,0x8B00,0x8ADC,0x8AE7,0x8AEE,0x8AFE,0x8B01,0x8B02, 0x8AF7,0x8AED,0x8AF3,0x8AF6,0x8AFC,0x8C6B,0x8C6D,0x8C93, 0x8CF4,0x8E44,0x8E31,0x8E34,0x8E42,0x8E39,0x8E35,0x8F3B, 0x8F2F,0x8F38,0x8F33,0x8FA8,0x8FA6,0x9075,0x9074,0x9078, 0x9072,0x907C,0x907A,0x9134,0x9192,0x9320,0x9336,0x92F8, 0x9333,0x932F,0x9322,0x92FC,0x932B,0x9304,0x931A,INVALC, /* Block 193, Array index 0x2000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x9310,0x9326,0x9321,0x9315,0x932E,0x9319,0x95BB,0x96A7, 0x96A8,0x96AA,0x96D5,0x970E,0x9711,0x9716,0x970D,0x9713, 0x970F,0x975B,0x975C,0x9766,0x9798,0x9830,0x9838,0x983B, 0x9837,0x982D,0x9839,0x9824,0x9910,0x9928,0x991E,0x991B, 0x9921,0x991A,0x99ED,0x99E2,0x99F1,0x9AB8,0x9ABC,0x9AFB, 0x9AED,0x9B28,0x9B91,0x9D15,0x9D23,0x9D26,0x9D28,0x9D12, 0x9D1B,0x9ED8,0x9ED4,0x9F8D,0x9F9C,0x512A,0x511F,0x5121, 0x5132,0x52F5,0x568E,0x5680,0x5690,0x5685,0x5687,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x568F,0x58D5,0x58D3,0x58D1,0x58CE,0x5B30,0x5B2A, 0x5B24,0x5B7A,0x5C37,0x5C68,0x5DBC,0x5DBA,0x5DBD,0x5DB8, 0x5E6B,0x5F4C,0x5FBD,0x61C9,0x61C2,0x61C7,0x61E6,0x61CB, 0x6232,0x6234,0x64CE,0x64CA,0x64D8,0x64E0,0x64F0,0x64E6, 0x64EC,0x64F1,0x64E2,0x64ED,0x6582,0x6583,0x66D9,0x66D6, 0x6A80,0x6A94,0x6A84,0x6AA2,0x6A9C,0x6ADB,0x6AA3,0x6A7E, 0x6A97,0x6A90,0x6AA0,0x6B5C,0x6BAE,0x6BDA,0x6C08,0x6FD8, 0x6FF1,0x6FDF,0x6FE0,0x6FDB,0x6FE4,0x6FEB,0x6FEF,0x6F80, 0x6FEC,0x6FE1,0x6FE9,0x6FD5,0x6FEE,0x6FF0,0x71E7,0x71DF, 0x71EE,0x71E6,0x71E5,0x71ED,0x71EC,0x71F4,0x71E0,0x7235, 0x7246,0x7370,0x7372,0x74A9,0x74B0,0x74A6,0x74A8,0x7646, 0x7642,0x764C,0x76EA,0x77B3,0x77AA,0x77B0,0x77AC,INVALC, /* Block 194, Array index 0x2100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x77A7,0x77AD,0x77EF,0x78F7,0x78FA,0x78F4,0x78EF,0x7901, 0x79A7,0x79AA,0x7A57,0x7ABF,0x7C07,0x7C0D,0x7BFE,0x7BF7, 0x7C0C,0x7BE0,0x7CE0,0x7CDC,0x7CDE,0x7CE2,0x7CDF,0x7CD9, 0x7CDD,0x7E2E,0x7E3E,0x7E46,0x7E37,0x7E32,0x7E43,0x7E2B, 0x7E3D,0x7E31,0x7E45,0x7E41,0x7E34,0x7E39,0x7E48,0x7E35, 0x7E3F,0x7E2F,0x7F44,0x7FF3,0x7FFC,0x8071,0x8072,0x8070, 0x806F,0x8073,0x81C6,0x81C3,0x81BA,0x81C2,0x81C0,0x81BF, 0x81BD,0x81C9,0x81BE,0x81E8,0x8209,0x8271,0x85AA,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8584,0x857E,0x859C,0x8591,0x8594,0x85AF,0x859B, 0x8587,0x85A8,0x858A,0x8667,0x87C0,0x87D1,0x87B3,0x87D2, 0x87C6,0x87AB,0x87BB,0x87BA,0x87C8,0x87CB,0x893B,0x8936, 0x8944,0x8938,0x893D,0x89AC,0x8B0E,0x8B17,0x8B19,0x8B1B, 0x8B0A,0x8B20,0x8B1D,0x8B04,0x8B10,0x8C41,0x8C3F,0x8C73, 0x8CFA,0x8CFD,0x8CFC,0x8CF8,0x8CFB,0x8DA8,0x8E49,0x8E4B, 0x8E48,0x8E4A,0x8F44,0x8F3E,0x8F42,0x8F45,0x8F3F,0x907F, 0x907D,0x9084,0x9081,0x9082,0x9080,0x9139,0x91A3,0x919E, 0x919C,0x934D,0x9382,0x9328,0x9375,0x934A,0x9365,0x934B, 0x9318,0x937E,0x936C,0x935B,0x9370,0x935A,0x9354,0x95CA, 0x95CB,0x95CC,0x95C8,0x95C6,0x96B1,0x96B8,0x96D6,0x971C, 0x971E,0x97A0,0x97D3,0x9846,0x98B6,0x9935,0x9A01,INVALC, /* Block 195, Array index 0x2200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x99FF,0x9BAE,0x9BAB,0x9BAA,0x9BAD,0x9D3B,0x9D3F,0x9E8B, 0x9ECF,0x9EDE,0x9EDC,0x9EDD,0x9EDB,0x9F3E,0x9F4B,0x53E2, 0x5695,0x56AE,0x58D9,0x58D8,0x5B38,0x5F5D,0x61E3,0x6233, 0x64F4,0x64F2,0x64FE,0x6506,0x64FA,0x64FB,0x64F7,0x65B7, 0x66DC,0x6726,0x6AB3,0x6AAC,0x6AC3,0x6ABB,0x6AB8,0x6AC2, 0x6AAE,0x6AAF,0x6B5F,0x6B78,0x6BAF,0x7009,0x700B,0x6FFE, 0x7006,0x6FFA,0x7011,0x700F,0x71FB,0x71FC,0x71FE,0x71F8, 0x7377,0x7375,0x74A7,0x74BF,0x7515,0x7656,0x7658,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7652,0x77BD,0x77BF,0x77BB,0x77BC,0x790E,0x79AE, 0x7A61,0x7A62,0x7A60,0x7AC4,0x7AC5,0x7C2B,0x7C27,0x7C2A, 0x7C1E,0x7C23,0x7C21,0x7CE7,0x7E54,0x7E55,0x7E5E,0x7E5A, 0x7E61,0x7E52,0x7E59,0x7F48,0x7FF9,0x7FFB,0x8077,0x8076, 0x81CD,0x81CF,0x820A,0x85CF,0x85A9,0x85CD,0x85D0,0x85C9, 0x85B0,0x85BA,0x85B9,0x85A6,0x87EF,0x87EC,0x87F2,0x87E0, 0x8986,0x89B2,0x89F4,0x8B28,0x8B39,0x8B2C,0x8B2B,0x8C50, 0x8D05,0x8E59,0x8E63,0x8E66,0x8E64,0x8E5F,0x8E55,0x8EC0, 0x8F49,0x8F4D,0x9087,0x9083,0x9088,0x91AB,0x91AC,0x91D0, 0x9394,0x938A,0x9396,0x93A2,0x93B3,0x93AE,0x93AC,0x93B0, 0x9398,0x939A,0x9397,0x95D4,0x95D6,0x95D0,0x95D5,0x96E2, 0x96DC,0x96D9,0x96DB,0x96DE,0x9724,0x97A3,0x97A6,INVALC, /* Block 196, Array index 0x2300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x97AD,0x97F9,0x984D,0x984F,0x984C,0x984E,0x9853,0x98BA, 0x993E,0x993F,0x993D,0x992E,0x99A5,0x9A0E,0x9AC1,0x9B03, 0x9B06,0x9B4F,0x9B4E,0x9B4D,0x9BCA,0x9BC9,0x9BFD,0x9BC8, 0x9BC0,0x9D51,0x9D5D,0x9D60,0x9EE0,0x9F15,0x9F2C,0x5133, 0x56A5,0x58DE,0x58DF,0x58E2,0x5BF5,0x9F90,0x5EEC,0x61F2, 0x61F7,0x61F6,0x61F5,0x6500,0x650F,0x66E0,0x66DD,0x6AE5, 0x6ADD,0x6ADA,0x6AD3,0x701B,0x701F,0x7028,0x701A,0x701D, 0x7015,0x7018,0x7206,0x720D,0x7258,0x72A2,0x7378,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x737A,0x74BD,0x74CA,0x74E3,0x7587,0x7586,0x765F, 0x7661,0x77C7,0x7919,0x79B1,0x7A6B,0x7A69,0x7C3E,0x7C3F, 0x7C38,0x7C3D,0x7C37,0x7C40,0x7E6B,0x7E6D,0x7E79,0x7E69, 0x7E6A,0x7F85,0x7E73,0x7FB6,0x7FB9,0x7FB8,0x81D8,0x85E9, 0x85DD,0x85EA,0x85D5,0x85E4,0x85E5,0x85F7,0x87FB,0x8805, 0x880D,0x87F9,0x87FE,0x8960,0x895F,0x8956,0x895E,0x8B41, 0x8B5C,0x8B58,0x8B49,0x8B5A,0x8B4E,0x8B4F,0x8B46,0x8B59, 0x8D08,0x8D0A,0x8E7C,0x8E72,0x8E87,0x8E76,0x8E6C,0x8E7A, 0x8E74,0x8F54,0x8F4E,0x8FAD,0x908A,0x908B,0x91B1,0x91AE, 0x93E1,0x93D1,0x93DF,0x93C3,0x93C8,0x93DC,0x93DD,0x93D6, 0x93E2,0x93CD,0x93D8,0x93E4,0x93D7,0x93E8,0x95DC,0x96B4, 0x96E3,0x972A,0x9727,0x9761,0x97DC,0x97FB,0x985E,INVALC, /* Block 197, Array index 0x2400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x9858,0x985B,0x98BC,0x9945,0x9949,0x9A16,0x9A19,0x9B0D, 0x9BE8,0x9BE7,0x9BD6,0x9BDB,0x9D89,0x9D61,0x9D72,0x9D6A, 0x9D6C,0x9E92,0x9E97,0x9E93,0x9EB4,0x52F8,0x56A8,0x56B7, 0x56B6,0x56B4,0x56BC,0x58E4,0x5B40,0x5B43,0x5B7D,0x5BF6, 0x5DC9,0x61F8,0x61FA,0x6518,0x6514,0x6519,0x66E6,0x6727, 0x6AEC,0x703E,0x7030,0x7032,0x7210,0x737B,0x74CF,0x7662, 0x7665,0x7926,0x792A,0x792C,0x792B,0x7AC7,0x7AF6,0x7C4C, 0x7C43,0x7C4D,0x7CEF,0x7CF0,0x8FAE,0x7E7D,0x7E7C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7E82,0x7F4C,0x8000,0x81DA,0x8266,0x85FB,0x85F9, 0x8611,0x85FA,0x8606,0x860B,0x8607,0x860A,0x8814,0x8815, 0x8964,0x89BA,0x89F8,0x8B70,0x8B6C,0x8B66,0x8B6F,0x8B5F, 0x8B6B,0x8D0F,0x8D0D,0x8E89,0x8E81,0x8E85,0x8E82,0x91B4, 0x91CB,0x9418,0x9403,0x93FD,0x95E1,0x9730,0x98C4,0x9952, 0x9951,0x99A8,0x9A2B,0x9A30,0x9A37,0x9A35,0x9C13,0x9C0D, 0x9E79,0x9EB5,0x9EE8,0x9F2F,0x9F5F,0x9F63,0x9F61,0x5137, 0x5138,0x56C1,0x56C0,0x56C2,0x5914,0x5C6C,0x5DCD,0x61FC, 0x61FE,0x651D,0x651C,0x6595,0x66E9,0x6AFB,0x6B04,0x6AFA, 0x6BB2,0x704C,0x721B,0x72A7,0x74D6,0x74D4,0x7669,0x77D3, 0x7C50,0x7E8F,0x7E8C,0x7FBC,0x8617,0x862D,0x861A,0x8823, 0x8822,0x8821,0x881F,0x896A,0x896C,0x89BD,0x8B74,INVALC, /* Block 198, Array index 0x2500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x8B77,0x8B7D,0x8D13,0x8E8A,0x8E8D,0x8E8B,0x8F5F,0x8FAF, 0x91BA,0x942E,0x9433,0x9435,0x943A,0x9438,0x9432,0x942B, 0x95E2,0x9738,0x9739,0x9732,0x97FF,0x9867,0x9865,0x9957, 0x9A45,0x9A43,0x9A40,0x9A3E,0x9ACF,0x9B54,0x9B51,0x9C2D, 0x9C25,0x9DAF,0x9DB4,0x9DC2,0x9DB8,0x9E9D,0x9EEF,0x9F19, 0x9F5C,0x9F66,0x9F67,0x513C,0x513B,0x56C8,0x56CA,0x56C9, 0x5B7F,0x5DD4,0x5DD2,0x5F4E,0x61FF,0x6524,0x6B0A,0x6B61, 0x7051,0x7058,0x7380,0x74E4,0x758A,0x766E,0x766C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x79B3,0x7C60,0x7C5F,0x807E,0x807D,0x81DF,0x8972, 0x896F,0x89FC,0x8B80,0x8D16,0x8D17,0x8E91,0x8E93,0x8F61, 0x9148,0x9444,0x9451,0x9452,0x973D,0x973E,0x97C3,0x97C1, 0x986B,0x9955,0x9A55,0x9A4D,0x9AD2,0x9B1A,0x9C49,0x9C31, 0x9C3E,0x9C3B,0x9DD3,0x9DD7,0x9F34,0x9F6C,0x9F6A,0x9F94, 0x56CC,0x5DD6,0x6200,0x6523,0x652B,0x652A,0x66EC,0x6B10, 0x74DA,0x7ACA,0x7C64,0x7C63,0x7C65,0x7E93,0x7E96,0x7E94, 0x81E2,0x8638,0x863F,0x8831,0x8B8A,0x9090,0x908F,0x9463, 0x9460,0x9464,0x9768,0x986F,0x995C,0x9A5A,0x9A5B,0x9A57, 0x9AD3,0x9AD4,0x9AD1,0x9C54,0x9C57,0x9C56,0x9DE5,0x9E9F, 0x9EF4,0x56D1,0x58E9,0x652C,0x705E,0x7671,0x7672,0x77D7, 0x7F50,0x7F88,0x8836,0x8839,0x8862,0x8B93,0x8B92,INVALC, /* Block 199, Array index 0x2600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x8B96,0x8277,0x8D1B,0x91C0,0x946A,0x9742,0x9748,0x9744, 0x97C6,0x9870,0x9A5F,0x9B22,0x9B58,0x9C5F,0x9DF9,0x9DFA, 0x9E7C,0x9E7D,0x9F07,0x9F77,0x9F72,0x5EF3,0x6B16,0x7063, 0x7C6C,0x7C6E,0x883B,0x89C0,0x8EA1,0x91C1,0x9472,0x9470, 0x9871,0x995E,0x9AD6,0x9B23,0x9ECC,0x7064,0x77DA,0x8B9A, 0x9477,0x97C9,0x9A62,0x9A65,0x7E9C,0x8B9C,0x8EAA,0x91C5, 0x947D,0x947E,0x947C,0x9C77,0x9C78,0x9EF7,0x8C54,0x947F, 0x9E1A,0x7228,0x9A6A,0x9B31,0x9E1B,0x9E1E,0x7C72,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x30FE,0x309D,0x309E,0x3005,0x3041,0x3042,0x3043, 0x3044,0x3045,0x3046,0x3047,0x3048,0x3049,0x304A,0x304B, 0x304C,0x304D,0x304E,0x304F,0x3050,0x3051,0x3052,0x3053, 0x3054,0x3055,0x3056,0x3057,0x3058,0x3059,0x305A,0x305B, 0x305C,0x305D,0x305E,0x305F,0x3060,0x3061,0x3062,0x3063, 0x3064,0x3065,0x3066,0x3067,0x3068,0x3069,0x306A,0x306B, 0x306C,0x306D,0x306E,0x306F,0x3070,0x3071,0x3072,0x3073, 0x3074,0x3075,0x3076,0x3077,0x3078,0x3079,0x307A,0x307B, 0x307C,0x307D,0x307E,0x307F,0x3080,0x3081,0x3082,0x3083, 0x3084,0x3085,0x3086,0x3087,0x3088,0x3089,0x308A,0x308B, 0x308C,0x308D,0x308E,0x308F,0x3090,0x3091,0x3092,0x3093, 0x30A1,0x30A2,0x30A3,0x30A4,0x30A5,0x30A6,0x30A7,INVALC, /* Block 200, Array index 0x2700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x30A8,0x30A9,0x30AA,0x30AB,0x30AC,0x30AD,0x30AE,0x30AF, 0x30B0,0x30B1,0x30B2,0x30B3,0x30B4,0x30B5,0x30B6,0x30B7, 0x30B8,0x30B9,0x30BA,0x30BB,0x30BC,0x30BD,0x30BE,0x30BF, 0x30C0,0x30C1,0x30C2,0x30C3,0x30C4,0x30C5,0x30C6,0x30C7, 0x30C8,0x30C9,0x30CA,0x30CB,0x30CC,0x30CD,0x30CE,0x30CF, 0x30D0,0x30D1,0x30D2,0x30D3,0x30D4,0x30D5,0x30D6,0x30D7, 0x30D8,0x30D9,0x30DA,0x30DB,0x30DC,0x30DD,0x30DE,0x30DF, 0x30E0,0x30E1,0x30E2,0x30E3,0x30E4,0x30E5,0x30E6,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x30E7,0x30E8,0x30E9,0x30EA,0x30EB,0x30EC,0x30ED, 0x30EE,0x30EF,0x30F0,0x30F1,0x30F2,0x30F3,0x30F4,0x30F5, 0x30F6,0x0414,0x0415,0x0401,0x0416,0x0417,0x0418,0x0419, 0x041A,0x041B,0x041C,0x0423,0x0424,0x0425,0x0426,0x0427, 0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E,0x042F, 0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0451,0x0436, 0x0437,0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E, 0x043F,0x0440,0x0441,0x0442,0x0443,0x0444,0x0445,0x0446, 0x0447,0x0448,0x0449,0x044A,0x044B,0x044C,0x044D,0x044E, 0x044F,0x2460,0x2461,0x2462,0x2463,0x2464,0x2465,0x2466, 0x2467,0x2468,0x2469,0x2474,0x2475,0x2476,0x2477,0x2478, 0x2479,0x247A,0x247B,0x247C,0x247D,INVALC,INVALC,INVALC, /* Block 202, Array index 0x2800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4E42,0x4E5C,0x51F5,0x531A,0x5382,0x4E07,0x4E0C,0x4E47, 0x4E8D,0x56D7,0xFA0C,0x5C6E,0x5F73,0x4E0F,0x5187,0x4E0E, 0x4E2E,0x4E93,0x4EC2,0x4EC9,0x4EC8,0x5198,0x52FC,0x536C, 0x53B9,0x5720,0x5903,0x592C,0x5C10,0x5DFF,0x65E1,0x6BB3, 0x6BCC,0x6C14,0x723F,0x4E31,0x4E3C,0x4EE8,0x4EDC,0x4EE9, 0x4EE1,0x4EDD,0x4EDA,0x520C,0x531C,0x534C,0x5722,0x5723, 0x5917,0x592F,0x5B81,0x5B84,0x5C12,0x5C3B,0x5C74,0x5C73, 0x5E04,0x5E80,0x5E82,0x5FC9,0x6209,0x6250,0x6C15,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6C36,0x6C43,0x6C3F,0x6C3B,0x72AE,0x72B0,0x738A, 0x79B8,0x808A,0x961E,0x4F0E,0x4F18,0x4F2C,0x4EF5,0x4F14, 0x4EF1,0x4F00,0x4EF7,0x4F08,0x4F1D,0x4F02,0x4F05,0x4F22, 0x4F13,0x4F04,0x4EF4,0x4F12,0x51B1,0x5213,0x5209,0x5210, 0x52A6,0x5322,0x531F,0x534D,0x538A,0x5407,0x56E1,0x56DF, 0x572E,0x572A,0x5734,0x593C,0x5980,0x597C,0x5985,0x597B, 0x597E,0x5977,0x597F,0x5B56,0x5C15,0x5C25,0x5C7C,0x5C7A, 0x5C7B,0x5C7E,0x5DDF,0x5E75,0x5E84,0x5F02,0x5F1A,0x5F74, 0x5FD5,0x5FD4,0x5FCF,0x625C,0x625E,0x6264,0x6261,0x6266, 0x6262,0x6259,0x6260,0x625A,0x6265,0x65EF,0x65EE,0x673E, 0x6739,0x6738,0x673B,0x673A,0x673F,0x673C,0x6733,0x6C18, 0x6C46,0x6C52,0x6C5C,0x6C4F,0x6C4A,0x6C54,0x6C4B,INVALC, /* Block 203, Array index 0x2900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6C4C,0x7071,0x725E,0x72B4,0x72B5,0x738E,0x752A,0x767F, 0x7A75,0x7F51,0x8278,0x827C,0x8280,0x827D,0x827F,0x864D, 0x897E,0x9099,0x9097,0x9098,0x909B,0x9094,0x9622,0x9624, 0x9620,0x9623,0x4F56,0x4F3B,0x4F62,0x4F49,0x4F53,0x4F64, 0x4F3E,0x4F67,0x4F52,0x4F5F,0x4F41,0x4F58,0x4F2D,0x4F33, 0x4F3F,0x4F61,0x518F,0x51B9,0x521C,0x521E,0x5221,0x52AD, 0x52AE,0x5309,0x5363,0x5372,0x538E,0x538F,0x5430,0x5437, 0x542A,0x5454,0x5445,0x5419,0x541C,0x5425,0x5418,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x543D,0x544F,0x5441,0x5428,0x5424,0x5447,0x56EE, 0x56E7,0x56E5,0x5741,0x5745,0x574C,0x5749,0x574B,0x5752, 0x5906,0x5940,0x59A6,0x5998,0x59A0,0x5997,0x598E,0x59A2, 0x5990,0x598F,0x59A7,0x59A1,0x5B8E,0x5B92,0x5C28,0x5C2A, 0x5C8D,0x5C8F,0x5C88,0x5C8B,0x5C89,0x5C92,0x5C8A,0x5C86, 0x5C93,0x5C95,0x5DE0,0x5E0A,0x5E0E,0x5E8B,0x5E89,0x5E8C, 0x5E88,0x5E8D,0x5F05,0x5F1D,0x5F78,0x5F76,0x5FD2,0x5FD1, 0x5FD0,0x5FED,0x5FE8,0x5FEE,0x5FF3,0x5FE1,0x5FE4,0x5FE3, 0x5FFA,0x5FEF,0x5FF7,0x5FFB,0x6000,0x5FF4,0x623A,0x6283, 0x628C,0x628E,0x628F,0x6294,0x6287,0x6271,0x627B,0x627A, 0x6270,0x6281,0x6288,0x6277,0x627D,0x6272,0x6274,0x6537, 0x65F0,0x65F4,0x65F3,0x65F2,0x65F5,0x6745,0x6747,INVALC, /* Block 204, Array index 0x2A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6759,0x6755,0x674C,0x6748,0x675D,0x674D,0x675A,0x674B, 0x6BD0,0x6C19,0x6C1A,0x6C78,0x6C67,0x6C6B,0x6C84,0x6C8B, 0x6C8F,0x6C71,0x6C6F,0x6C69,0x6C9A,0x6C6D,0x6C87,0x6C95, 0x6C9C,0x6C66,0x6C73,0x6C65,0x6C7B,0x6C8E,0x7074,0x707A, 0x7263,0x72BF,0x72BD,0x72C3,0x72C6,0x72C1,0x72BA,0x72C5, 0x7395,0x7397,0x7393,0x7394,0x7392,0x753A,0x7539,0x7594, 0x7595,0x7681,0x793D,0x8034,0x8095,0x8099,0x8090,0x8092, 0x809C,0x8290,0x828F,0x8285,0x828E,0x8291,0x8293,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x828A,0x8283,0x8284,0x8C78,0x8FC9,0x8FBF,0x909F, 0x90A1,0x90A5,0x909E,0x90A7,0x90A0,0x9630,0x9628,0x962F, 0x962D,0x4E33,0x4F98,0x4F7C,0x4F85,0x4F7D,0x4F80,0x4F87, 0x4F76,0x4F74,0x4F89,0x4F84,0x4F77,0x4F4C,0x4F97,0x4F6A, 0x4F9A,0x4F79,0x4F81,0x4F78,0x4F90,0x4F9C,0x4F94,0x4F9E, 0x4F92,0x4F82,0x4F95,0x4F6B,0x4F6E,0x519E,0x51BC,0x51BE, 0x5235,0x5232,0x5233,0x5246,0x5231,0x52BC,0x530A,0x530B, 0x533C,0x5392,0x5394,0x5487,0x547F,0x5481,0x5491,0x5482, 0x5488,0x546B,0x547A,0x547E,0x5465,0x546C,0x5474,0x5466, 0x548D,0x546F,0x5461,0x5460,0x5498,0x5463,0x5467,0x5464, 0x56F7,0x56F9,0x576F,0x5772,0x576D,0x576B,0x5771,0x5770, 0x5776,0x5780,0x5775,0x577B,0x5773,0x5774,0x5762,INVALC, /* Block 205, Array index 0x2B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5768,0x577D,0x590C,0x5945,0x59B5,0x59BA,0x59CF,0x59CE, 0x59B2,0x59CC,0x59C1,0x59B6,0x59BC,0x59C3,0x59D6,0x59B1, 0x59BD,0x59C0,0x59C8,0x59B4,0x59C7,0x5B62,0x5B65,0x5B93, 0x5B95,0x5C44,0x5C47,0x5CAE,0x5CA4,0x5CA0,0x5CB5,0x5CAF, 0x5CA8,0x5CAC,0x5C9F,0x5CA3,0x5CAD,0x5CA2,0x5CAA,0x5CA7, 0x5C9D,0x5CA5,0x5CB6,0x5CB0,0x5CA6,0x5E17,0x5E14,0x5E19, 0x5F28,0x5F22,0x5F23,0x5F24,0x5F54,0x5F82,0x5F7E,0x5F7D, 0x5FDE,0x5FE5,0x602D,0x6026,0x6019,0x6032,0x600B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6034,0x600A,0x6017,0x6033,0x601A,0x601E,0x602C, 0x6022,0x600D,0x6010,0x602E,0x6013,0x6011,0x600C,0x6009, 0x601C,0x6214,0x623D,0x62AD,0x62B4,0x62D1,0x62BE,0x62AA, 0x62B6,0x62CA,0x62AE,0x62B3,0x62AF,0x62BB,0x62A9,0x62B0, 0x62B8,0x653D,0x65A8,0x65BB,0x6609,0x65FC,0x6604,0x6612, 0x6608,0x65FB,0x6603,0x660B,0x660D,0x6605,0x65FD,0x6611, 0x6610,0x66F6,0x670A,0x6785,0x676C,0x678E,0x6792,0x6776, 0x677B,0x6798,0x6786,0x6784,0x6774,0x678D,0x678C,0x677A, 0x679F,0x6791,0x6799,0x6783,0x677D,0x6781,0x6778,0x6779, 0x6794,0x6B25,0x6B80,0x6B7E,0x6BDE,0x6C1D,0x6C93,0x6CEC, 0x6CEB,0x6CEE,0x6CD9,0x6CB6,0x6CD4,0x6CAD,0x6CE7,0x6CB7, 0x6CD0,0x6CC2,0x6CBA,0x6CC3,0x6CC6,0x6CED,0x6CF2,INVALC, /* Block 206, Array index 0x2C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6CD2,0x6CDD,0x6CB4,0x6C8A,0x6C9D,0x6C80,0x6CDE,0x6CC0, 0x6D30,0x6CCD,0x6CC7,0x6CB0,0x6CF9,0x6CCF,0x6CE9,0x6CD1, 0x7094,0x7098,0x7085,0x7093,0x7086,0x7084,0x7091,0x7096, 0x7082,0x709A,0x7083,0x726A,0x72D6,0x72CB,0x72D8,0x72C9, 0x72DC,0x72D2,0x72D4,0x72DA,0x72CC,0x72D1,0x73A4,0x73A1, 0x73AD,0x73A6,0x73A2,0x73A0,0x73AC,0x739D,0x74DD,0x74E8, 0x753F,0x7540,0x753E,0x758C,0x7598,0x76AF,0x76F3,0x76F1, 0x76F0,0x76F5,0x77F8,0x77FC,0x77F9,0x77FB,0x77FA,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x77F7,0x7942,0x793F,0x79C5,0x7A78,0x7A7B,0x7AFB, 0x7C75,0x7CFD,0x8035,0x808F,0x80AE,0x80A3,0x80B8,0x80B5, 0x80AD,0x8220,0x82A0,0x82C0,0x82AB,0x829A,0x8298,0x829B, 0x82B5,0x82A7,0x82AE,0x82BC,0x829E,0x82BA,0x82B4,0x82A8, 0x82A1,0x82A9,0x82C2,0x82A4,0x82C3,0x82B6,0x82A2,0x8670, 0x866F,0x866D,0x866E,0x8C56,0x8FD2,0x8FCB,0x8FD3,0x8FCD, 0x8FD6,0x8FD5,0x8FD7,0x90B2,0x90B4,0x90AF,0x90B3,0x90B0, 0x9639,0x963D,0x963C,0x963A,0x9643,0x4FCD,0x4FC5,0x4FD3, 0x4FB2,0x4FC9,0x4FCB,0x4FC1,0x4FD4,0x4FDC,0x4FD9,0x4FBB, 0x4FB3,0x4FDB,0x4FC7,0x4FD6,0x4FBA,0x4FC0,0x4FB9,0x4FEC, 0x5244,0x5249,0x52C0,0x52C2,0x533D,0x537C,0x5397,0x5396, 0x5399,0x5398,0x54BA,0x54A1,0x54AD,0x54A5,0x54CF,INVALC, /* Block 207, Array index 0x2D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x54C3,0x830D,0x54B7,0x54AE,0x54D6,0x54B6,0x54C5,0x54C6, 0x54A0,0x5470,0x54BC,0x54A2,0x54BE,0x5472,0x54DE,0x54B0, 0x57B5,0x579E,0x579F,0x57A4,0x578C,0x5797,0x579D,0x579B, 0x5794,0x5798,0x578F,0x5799,0x57A5,0x579A,0x5795,0x58F4, 0x590D,0x5953,0x59E1,0x59DE,0x59EE,0x5A00,0x59F1,0x59DD, 0x59FA,0x59FD,0x59FC,0x59F6,0x59E4,0x59F2,0x59F7,0x59DB, 0x59E9,0x59F3,0x59F5,0x59E0,0x59FE,0x59F4,0x59ED,0x5BA8, 0x5C4C,0x5CD0,0x5CD8,0x5CCC,0x5CD7,0x5CCB,0x5CDB,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5CDE,0x5CDA,0x5CC9,0x5CC7,0x5CCA,0x5CD6,0x5CD3, 0x5CD4,0x5CCF,0x5CC8,0x5CC6,0x5CCE,0x5CDF,0x5CF8,0x5DF9, 0x5E21,0x5E22,0x5E23,0x5E20,0x5E24,0x5EB0,0x5EA4,0x5EA2, 0x5E9B,0x5EA3,0x5EA5,0x5F07,0x5F2E,0x5F56,0x5F86,0x6037, 0x6039,0x6054,0x6072,0x605E,0x6045,0x6053,0x6047,0x6049, 0x605B,0x604C,0x6040,0x6042,0x605F,0x6024,0x6044,0x6058, 0x6066,0x606E,0x6242,0x6243,0x62CF,0x630D,0x630B,0x62F5, 0x630E,0x6303,0x62EB,0x62F9,0x630F,0x630C,0x62F8,0x62F6, 0x6300,0x6313,0x6314,0x62FA,0x6315,0x62FB,0x62F0,0x6541, 0x6543,0x65AA,0x65BF,0x6636,0x6621,0x6632,0x6635,0x661C, 0x6626,0x6622,0x6633,0x662B,0x663A,0x661D,0x6634,0x6639, 0x662E,0x670F,0x6710,0x67C1,0x67F2,0x67C8,0x67BA,INVALC, /* Block 208, Array index 0x2E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x67DC,0x67BB,0x67F8,0x67D8,0x67C0,0x67B7,0x67C5,0x67EB, 0x67E4,0x67DF,0x67B5,0x67CD,0x67B3,0x67F7,0x67F6,0x67EE, 0x67E3,0x67C2,0x67B9,0x67CE,0x67E7,0x67F0,0x67B2,0x67FC, 0x67C6,0x67ED,0x67CC,0x67AE,0x67E6,0x67DB,0x67FA,0x67C9, 0x67CA,0x67C3,0x67EA,0x67CB,0x6B28,0x6B82,0x6B84,0x6BB6, 0x6BD6,0x6BD8,0x6BE0,0x6C20,0x6C21,0x6D28,0x6D34,0x6D2D, 0x6D1F,0x6D3C,0x6D3F,0x6D12,0x6D0A,0x6CDA,0x6D33,0x6D04, 0x6D19,0x6D3A,0x6D1A,0x6D11,0x6D00,0x6D1D,0x6D42,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6D01,0x6D18,0x6D37,0x6D03,0x6D0F,0x6D40,0x6D07, 0x6D20,0x6D2C,0x6D08,0x6D22,0x6D09,0x6D10,0x70B7,0x709F, 0x70BE,0x70B1,0x70B0,0x70A1,0x70B4,0x70B5,0x70A9,0x7241, 0x7249,0x724A,0x726C,0x7270,0x7273,0x726E,0x72CA,0x72E4, 0x72E8,0x72EB,0x72DF,0x72EA,0x72E6,0x72E3,0x7385,0x73CC, 0x73C2,0x73C8,0x73C5,0x73B9,0x73B6,0x73B5,0x73B4,0x73EB, 0x73BF,0x73C7,0x73BE,0x73C3,0x73C6,0x73B8,0x73CB,0x74EC, 0x74EE,0x752E,0x7547,0x7548,0x75A7,0x75AA,0x7679,0x76C4, 0x7708,0x7703,0x7704,0x7705,0x770A,0x76F7,0x76FB,0x76FA, 0x77E7,0x77E8,0x7806,0x7811,0x7812,0x7805,0x7810,0x780F, 0x780E,0x7809,0x7803,0x7813,0x794A,0x794C,0x794B,0x7945, 0x7944,0x79D5,0x79CD,0x79CF,0x79D6,0x79CE,0x7A80,INVALC, /* Block 209, Array index 0x2F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7A7E,0x7AD1,0x7B00,0x7B01,0x7C7A,0x7C78,0x7C79,0x7C7F, 0x7C80,0x7C81,0x7D03,0x7D08,0x7D01,0x7F58,0x7F91,0x7F8D, 0x7FBE,0x8007,0x800E,0x800F,0x8014,0x8037,0x80D8,0x80C7, 0x80E0,0x80D1,0x80C8,0x80C2,0x80D0,0x80C5,0x80E3,0x80D9, 0x80DC,0x80CA,0x80D5,0x80C9,0x80CF,0x80D7,0x80E6,0x80CD, 0x81FF,0x8221,0x8294,0x82D9,0x82FE,0x82F9,0x8307,0x82E8, 0x8300,0x82D5,0x833A,0x82EB,0x82D6,0x82F4,0x82EC,0x82E1, 0x82F2,0x82F5,0x830C,0x82FB,0x82F6,0x82F0,0x82EA,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x82E4,0x82E0,0x82FA,0x82F3,0x82ED,0x8677,0x8674, 0x867C,0x8673,0x8841,0x884E,0x8867,0x886A,0x8869,0x89D3, 0x8A04,0x8A07,0x8D72,0x8FE3,0x8FE1,0x8FEE,0x8FE0,0x90F1, 0x90BD,0x90BF,0x90D5,0x90C5,0x90BE,0x90C7,0x90CB,0x90C8, 0x91D4,0x91D3,0x9654,0x964F,0x9651,0x9653,0x964A,0x964E, 0x501E,0x5005,0x5007,0x5013,0x5022,0x5030,0x501B,0x4FF5, 0x4FF4,0x5033,0x5037,0x502C,0x4FF6,0x4FF7,0x5017,0x501C, 0x5020,0x5027,0x5035,0x502F,0x5031,0x500E,0x515A,0x5194, 0x5193,0x51CA,0x51C4,0x51C5,0x51C8,0x51CE,0x5261,0x525A, 0x5252,0x525E,0x525F,0x5255,0x5262,0x52CD,0x530E,0x539E, 0x5526,0x54E2,0x5517,0x5512,0x54E7,0x54F3,0x54E4,0x551A, 0x54FF,0x5504,0x5508,0x54EB,0x5511,0x5505,0x54F1,INVALC, /* Block 210, Array index 0x3000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x550A,0x54FB,0x54F7,0x54F8,0x54E0,0x550E,0x5503,0x550B, 0x5701,0x5702,0x57CC,0x5832,0x57D5,0x57D2,0x57BA,0x57C6, 0x57BD,0x57BC,0x57B8,0x57B6,0x57BF,0x57C7,0x57D0,0x57B9, 0x57C1,0x590E,0x594A,0x5A19,0x5A16,0x5A2D,0x5A2E,0x5A15, 0x5A0F,0x5A17,0x5A0A,0x5A1E,0x5A33,0x5B6C,0x5BA7,0x5BAD, 0x5BAC,0x5C03,0x5C56,0x5C54,0x5CEC,0x5CFF,0x5CEE,0x5CF1, 0x5CF7,0x5D00,0x5CF9,0x5E29,0x5E28,0x5EA8,0x5EAE,0x5EAA, 0x5EAC,0x5F33,0x5F30,0x5F67,0x605D,0x605A,0x6067,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6041,0x60A2,0x6088,0x6080,0x6092,0x6081,0x609D, 0x6083,0x6095,0x609B,0x6097,0x6087,0x609C,0x608E,0x6219, 0x6246,0x62F2,0x6310,0x6356,0x632C,0x6344,0x6345,0x6336, 0x6343,0x63E4,0x6339,0x634B,0x634A,0x633C,0x6329,0x6341, 0x6334,0x6358,0x6354,0x6359,0x632D,0x6347,0x6333,0x635A, 0x6351,0x6338,0x6357,0x6340,0x6348,0x654A,0x6546,0x65C6, 0x65C3,0x65C4,0x65C2,0x664A,0x665F,0x6647,0x6651,0x6712, 0x6713,0x681F,0x681A,0x6849,0x6832,0x6833,0x683B,0x684B, 0x684F,0x6816,0x6831,0x681C,0x6835,0x682B,0x682D,0x682F, 0x684E,0x6844,0x6834,0x681D,0x6812,0x6814,0x6826,0x6828, 0x682E,0x684D,0x683A,0x6825,0x6820,0x6B2C,0x6B2F,0x6B2D, 0x6B31,0x6B34,0x6B6D,0x8082,0x6B88,0x6BE6,0x6BE4,INVALC, /* Block 211, Array index 0x3100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6BE8,0x6BE3,0x6BE2,0x6BE7,0x6C25,0x6D7A,0x6D63,0x6D64, 0x6D76,0x6D0D,0x6D61,0x6D92,0x6D58,0x6D62,0x6D6D,0x6D6F, 0x6D91,0x6D8D,0x6DEF,0x6D7F,0x6D86,0x6D5E,0x6D67,0x6D60, 0x6D97,0x6D70,0x6D7C,0x6D5F,0x6D82,0x6D98,0x6D2F,0x6D68, 0x6D8B,0x6D7E,0x6D80,0x6D84,0x6D16,0x6D83,0x6D7B,0x6D7D, 0x6D75,0x6D90,0x70DC,0x70D3,0x70D1,0x70DD,0x70CB,0x7F39, 0x70E2,0x70D7,0x70D2,0x70DE,0x70E0,0x70D4,0x70CD,0x70C5, 0x70C6,0x70C7,0x70DA,0x70CE,0x70E1,0x7242,0x7278,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7277,0x7276,0x7300,0x72FA,0x72F4,0x72FE,0x72F6, 0x72F3,0x72FB,0x7301,0x73D3,0x73D9,0x73E5,0x73D6,0x73BC, 0x73E7,0x73E3,0x73E9,0x73DC,0x73D2,0x73DB,0x73D4,0x73DD, 0x73DA,0x73D7,0x73D8,0x73E8,0x74DE,0x74DF,0x74F4,0x74F5, 0x7521,0x755B,0x755F,0x75B0,0x75C1,0x75BB,0x75C4,0x75C0, 0x75BF,0x75B6,0x75BA,0x768A,0x76C9,0x771D,0x771B,0x7710, 0x7713,0x7712,0x7723,0x7711,0x7715,0x7719,0x771A,0x7722, 0x7727,0x7823,0x782C,0x7822,0x7835,0x782F,0x7828,0x782E, 0x782B,0x7821,0x7829,0x7833,0x782A,0x7831,0x7954,0x795B, 0x794F,0x795C,0x7953,0x7952,0x7951,0x79EB,0x79EC,0x79E0, 0x79EE,0x79ED,0x79EA,0x79DC,0x79DE,0x79DD,0x7A86,0x7A89, 0x7A85,0x7A8B,0x7A8C,0x7A8A,0x7A87,0x7AD8,0x7B10,INVALC, /* Block 212, Array index 0x3200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7B04,0x7B13,0x7B05,0x7B0F,0x7B08,0x7B0A,0x7B0E,0x7B09, 0x7B12,0x7C84,0x7C91,0x7C8A,0x7C8C,0x7C88,0x7C8D,0x7C85, 0x7D1E,0x7D1D,0x7D11,0x7D0E,0x7D18,0x7D16,0x7D13,0x7D1F, 0x7D12,0x7D0F,0x7D0C,0x7F5C,0x7F61,0x7F5E,0x7F60,0x7F5D, 0x7F5B,0x7F96,0x7F92,0x7FC3,0x7FC2,0x7FC0,0x8016,0x803E, 0x8039,0x80FA,0x80F2,0x80F9,0x80F5,0x8101,0x80FB,0x8100, 0x8201,0x822F,0x8225,0x8333,0x832D,0x8344,0x8319,0x8351, 0x8325,0x8356,0x833F,0x8341,0x8326,0x831C,0x8322,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8342,0x834E,0x831B,0x832A,0x8308,0x833C,0x834D, 0x8316,0x8324,0x8320,0x8337,0x832F,0x8329,0x8347,0x8345, 0x834C,0x8353,0x831E,0x832C,0x834B,0x8327,0x8348,0x8653, 0x8652,0x86A2,0x86A8,0x8696,0x868D,0x8691,0x869E,0x8687, 0x8697,0x8686,0x868B,0x869A,0x8685,0x86A5,0x8699,0x86A1, 0x86A7,0x8695,0x8698,0x868E,0x869D,0x8690,0x8694,0x8843, 0x8844,0x886D,0x8875,0x8876,0x8872,0x8880,0x8871,0x887F, 0x886F,0x8883,0x887E,0x8874,0x887C,0x8A12,0x8C47,0x8C57, 0x8C7B,0x8CA4,0x8CA3,0x8D76,0x8D78,0x8DB5,0x8DB7,0x8DB6, 0x8ED1,0x8ED3,0x8FFE,0x8FF5,0x9002,0x8FFF,0x8FFB,0x9004, 0x8FFC,0x8FF6,0x90D6,0x90E0,0x90D9,0x90DA,0x90E3,0x90DF, 0x90E5,0x90D8,0x90DB,0x90D7,0x90DC,0x90E4,0x9150,INVALC, /* Block 213, Array index 0x3300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x914E,0x914F,0x91D5,0x91E2,0x91DA,0x965C,0x965F,0x96BC, 0x98E3,0x9ADF,0x9B2F,0x4E7F,0x5070,0x506A,0x5061,0x505E, 0x5060,0x5053,0x504B,0x505D,0x5072,0x5048,0x504D,0x5041, 0x505B,0x504A,0x5062,0x5015,0x5045,0x505F,0x5069,0x506B, 0x5063,0x5064,0x5046,0x5040,0x506E,0x5073,0x5057,0x5051, 0x51D0,0x526B,0x526D,0x526C,0x526E,0x52D6,0x52D3,0x532D, 0x539C,0x5575,0x5576,0x553C,0x554D,0x5550,0x5534,0x552A, 0x5551,0x5562,0x5536,0x5535,0x5530,0x5552,0x5545,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x550C,0x5532,0x5565,0x554E,0x5539,0x5548,0x552D, 0x553B,0x5540,0x554B,0x570A,0x5707,0x57FB,0x5814,0x57E2, 0x57F6,0x57DC,0x57F4,0x5800,0x57ED,0x57FD,0x5808,0x57F8, 0x580B,0x57F3,0x57CF,0x5807,0x57EE,0x57E3,0x57F2,0x57E5, 0x57EC,0x57E1,0x580E,0x57FC,0x5810,0x57E7,0x5801,0x580C, 0x57F1,0x57E9,0x57F0,0x580D,0x5804,0x595C,0x5A60,0x5A58, 0x5A55,0x5A67,0x5A5E,0x5A38,0x5A35,0x5A6D,0x5A50,0x5A5F, 0x5A65,0x5A6C,0x5A53,0x5A64,0x5A57,0x5A43,0x5A5D,0x5A52, 0x5A44,0x5A5B,0x5A48,0x5A8E,0x5A3E,0x5A4D,0x5A39,0x5A4C, 0x5A70,0x5A69,0x5A47,0x5A51,0x5A56,0x5A42,0x5A5C,0x5B72, 0x5B6E,0x5BC1,0x5BC0,0x5C59,0x5D1E,0x5D0B,0x5D1D,0x5D1A, 0x5D20,0x5D0C,0x5D28,0x5D0D,0x5D26,0x5D25,0x5D0F,INVALC, /* Block 214, Array index 0x3400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5D30,0x5D12,0x5D23,0x5D1F,0x5D2E,0x5E3E,0x5E34,0x5EB1, 0x5EB4,0x5EB9,0x5EB2,0x5EB3,0x5F36,0x5F38,0x5F9B,0x5F96, 0x5F9F,0x608A,0x6090,0x6086,0x60BE,0x60B0,0x60BA,0x60D3, 0x60D4,0x60CF,0x60E4,0x60D9,0x60DD,0x60C8,0x60B1,0x60DB, 0x60B7,0x60CA,0x60BF,0x60C3,0x60CD,0x60C0,0x6332,0x6365, 0x638A,0x6382,0x637D,0x63BD,0x639E,0x63AD,0x639D,0x6397, 0x63AB,0x638E,0x636F,0x6387,0x6390,0x636E,0x63AF,0x6375, 0x639C,0x636D,0x63AE,0x637C,0x63A4,0x633B,0x639F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6378,0x6385,0x6381,0x6391,0x638D,0x6370,0x6553, 0x65CD,0x6665,0x6661,0x665B,0x6659,0x665C,0x6662,0x6718, 0x6879,0x6887,0x6890,0x689C,0x686D,0x686E,0x68AE,0x68AB, 0x6956,0x686F,0x68A3,0x68AC,0x68A9,0x6875,0x6874,0x68B2, 0x688F,0x6877,0x6892,0x687C,0x686B,0x6872,0x68AA,0x6880, 0x6871,0x687E,0x689B,0x6896,0x688B,0x68A0,0x6889,0x68A4, 0x6878,0x687B,0x6891,0x688C,0x688A,0x687D,0x6B36,0x6B33, 0x6B37,0x6B38,0x6B91,0x6B8F,0x6B8D,0x6B8E,0x6B8C,0x6C2A, 0x6DC0,0x6DAB,0x6DB4,0x6DB3,0x6E74,0x6DAC,0x6DE9,0x6DE2, 0x6DB7,0x6DF6,0x6DD4,0x6E00,0x6DC8,0x6DE0,0x6DDF,0x6DD6, 0x6DBE,0x6DE5,0x6DDC,0x6DDD,0x6DDB,0x6DF4,0x6DCA,0x6DBD, 0x6DED,0x6DF0,0x6DBA,0x6DD5,0x6DC2,0x6DCF,0x6DC9,INVALC, /* Block 215, Array index 0x3500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6DD0,0x6DF2,0x6DD3,0x6DFD,0x6DD7,0x6DCD,0x6DE3,0x6DBB, 0x70FA,0x710D,0x70F7,0x7117,0x70F4,0x710C,0x70F0,0x7104, 0x70F3,0x7110,0x70FC,0x70FF,0x7106,0x7113,0x7100,0x70F8, 0x70F6,0x710B,0x7102,0x710E,0x727E,0x727B,0x727C,0x727F, 0x731D,0x7317,0x7307,0x7311,0x7318,0x730A,0x7308,0x72FF, 0x730F,0x731E,0x7388,0x73F6,0x73F8,0x73F5,0x7404,0x7401, 0x73FD,0x7407,0x7400,0x73FA,0x73FC,0x73FF,0x740C,0x740B, 0x73F4,0x7408,0x7564,0x7563,0x75CE,0x75D2,0x75CF,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x75CB,0x75CC,0x75D1,0x75D0,0x768F,0x7689,0x76D3, 0x7739,0x772F,0x772D,0x7731,0x7732,0x7734,0x7733,0x773D, 0x7725,0x773B,0x7735,0x7848,0x7852,0x7849,0x784D,0x784A, 0x784C,0x7826,0x7845,0x7850,0x7964,0x7967,0x7969,0x796A, 0x7963,0x796B,0x7961,0x79BB,0x79FA,0x79F8,0x79F6,0x79F7, 0x7A8F,0x7A94,0x7A90,0x7B35,0x7B47,0x7B34,0x7B25,0x7B30, 0x7B22,0x7B24,0x7B33,0x7B18,0x7B2A,0x7B1D,0x7B31,0x7B2B, 0x7B2D,0x7B2F,0x7B32,0x7B38,0x7B1A,0x7B23,0x7C94,0x7C98, 0x7C96,0x7CA3,0x7D35,0x7D3D,0x7D38,0x7D36,0x7D3A,0x7D45, 0x7D2C,0x7D29,0x7D41,0x7D47,0x7D3E,0x7D3F,0x7D4A,0x7D3B, 0x7D28,0x7F63,0x7F95,0x7F9C,0x7F9D,0x7F9B,0x7FCA,0x7FCB, 0x7FCD,0x7FD0,0x7FD1,0x7FC7,0x7FCF,0x7FC9,0x801F,INVALC, /* Block 216, Array index 0x3600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x801E,0x801B,0x8047,0x8043,0x8048,0x8118,0x8125,0x8119, 0x811B,0x812D,0x811F,0x812C,0x811E,0x8121,0x8115,0x8127, 0x811D,0x8122,0x8211,0x8238,0x8233,0x823A,0x8234,0x8232, 0x8274,0x8390,0x83A3,0x83A8,0x838D,0x837A,0x8373,0x83A4, 0x8374,0x838F,0x8381,0x8395,0x8399,0x8375,0x8394,0x83A9, 0x837D,0x8383,0x838C,0x839D,0x839B,0x83AA,0x838B,0x837E, 0x83A5,0x83AF,0x8388,0x8397,0x83B0,0x837F,0x83A6,0x8387, 0x83AE,0x8376,0x839A,0x8659,0x8656,0x86BF,0x86B7,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x86C2,0x86C1,0x86C5,0x86BA,0x86B0,0x86C8,0x86B9, 0x86B3,0x86B8,0x86CC,0x86B4,0x86BB,0x86BC,0x86C3,0x86BD, 0x86BE,0x8852,0x8889,0x8895,0x88A8,0x88A2,0x88AA,0x889A, 0x8891,0x88A1,0x889F,0x8898,0x88A7,0x8899,0x889B,0x8897, 0x88A4,0x88AC,0x888C,0x8893,0x888E,0x8982,0x89D6,0x89D9, 0x89D5,0x8A30,0x8A27,0x8A2C,0x8A1E,0x8C39,0x8C3B,0x8C5C, 0x8C5D,0x8C7D,0x8CA5,0x8D7D,0x8D7B,0x8D79,0x8DBC,0x8DC2, 0x8DB9,0x8DBF,0x8DC1,0x8ED8,0x8EDE,0x8EDD,0x8EDC,0x8ED7, 0x8EE0,0x8EE1,0x9024,0x900B,0x9011,0x901C,0x900C,0x9021, 0x90EF,0x90EA,0x90F0,0x90F4,0x90F2,0x90F3,0x90D4,0x90EB, 0x90EC,0x90E9,0x9156,0x9158,0x915A,0x9153,0x9155,0x91EC, 0x91F4,0x91F1,0x91F3,0x91F8,0x91E4,0x91F9,0x91EA,INVALC, /* Block 217, Array index 0x3700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x91EB,0x91F7,0x91E8,0x91EE,0x957A,0x9586,0x9588,0x967C, 0x966D,0x966B,0x9671,0x966F,0x96BF,0x976A,0x9804,0x98E5, 0x9997,0x509B,0x5095,0x5094,0x509E,0x508B,0x50A3,0x5083, 0x508C,0x508E,0x509D,0x5068,0x509C,0x5092,0x5082,0x5087, 0x515F,0x51D4,0x5312,0x5311,0x53A4,0x53A7,0x5591,0x55A8, 0x55A5,0x55AD,0x5577,0x5645,0x55A2,0x5593,0x5588,0x558F, 0x55B5,0x5581,0x55A3,0x5592,0x55A4,0x557D,0x558C,0x55A6, 0x557F,0x5595,0x55A1,0x558E,0x570C,0x5829,0x5837,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5819,0x581E,0x5827,0x5823,0x5828,0x57F5,0x5848, 0x5825,0x581C,0x581B,0x5833,0x583F,0x5836,0x582E,0x5839, 0x5838,0x582D,0x582C,0x583B,0x5961,0x5AAF,0x5A94,0x5A9F, 0x5A7A,0x5AA2,0x5A9E,0x5A78,0x5AA6,0x5A7C,0x5AA5,0x5AAC, 0x5A95,0x5AAE,0x5A37,0x5A84,0x5A8A,0x5A97,0x5A83,0x5A8B, 0x5AA9,0x5A7B,0x5A7D,0x5A8C,0x5A9C,0x5A8F,0x5A93,0x5A9D, 0x5BEA,0x5BCD,0x5BCB,0x5BD4,0x5BD1,0x5BCA,0x5BCE,0x5C0C, 0x5C30,0x5D37,0x5D43,0x5D6B,0x5D41,0x5D4B,0x5D3F,0x5D35, 0x5D51,0x5D4E,0x5D55,0x5D33,0x5D3A,0x5D52,0x5D3D,0x5D31, 0x5D59,0x5D42,0x5D39,0x5D49,0x5D38,0x5D3C,0x5D32,0x5D36, 0x5D40,0x5D45,0x5E44,0x5E41,0x5F58,0x5FA6,0x5FA5,0x5FAB, 0x60C9,0x60B9,0x60CC,0x60E2,0x60CE,0x60C4,0x6114,INVALC, /* Block 218, Array index 0x3800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x60F2,0x610A,0x6116,0x6105,0x60F5,0x6113,0x60F8,0x60FC, 0x60FE,0x60C1,0x6103,0x6118,0x611D,0x6110,0x60FF,0x6104, 0x610B,0x624A,0x6394,0x63B1,0x63B0,0x63CE,0x63E5,0x63E8, 0x63EF,0x63C3,0x649D,0x63F3,0x63CA,0x63E0,0x63F6,0x63D5, 0x63F2,0x63F5,0x6461,0x63DF,0x63BE,0x63DD,0x63DC,0x63C4, 0x63D8,0x63D3,0x63C2,0x63C7,0x63CC,0x63CB,0x63C8,0x63F0, 0x63D7,0x63D9,0x6532,0x6567,0x656A,0x6564,0x655C,0x6568, 0x6565,0x658C,0x659D,0x659E,0x65AE,0x65D0,0x65D2,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x667C,0x666C,0x667B,0x6680,0x6671,0x6679,0x666A, 0x6672,0x6701,0x690C,0x68D3,0x6904,0x68DC,0x692A,0x68EC, 0x68EA,0x68F1,0x690F,0x68D6,0x68F7,0x68EB,0x68E4,0x68F6, 0x6913,0x6910,0x68F3,0x68E1,0x6907,0x68CC,0x6908,0x6970, 0x68B4,0x6911,0x68EF,0x68C6,0x6914,0x68F8,0x68D0,0x68FD, 0x68FC,0x68E8,0x690B,0x690A,0x6917,0x68CE,0x68C8,0x68DD, 0x68DE,0x68E6,0x68F4,0x68D1,0x6906,0x68D4,0x68E9,0x6915, 0x6925,0x68C7,0x6B39,0x6B3B,0x6B3F,0x6B3C,0x6B94,0x6B97, 0x6B99,0x6B95,0x6BBD,0x6BF0,0x6BF2,0x6BF3,0x6C30,0x6DFC, 0x6E46,0x6E47,0x6E1F,0x6E49,0x6E88,0x6E3C,0x6E3D,0x6E45, 0x6E62,0x6E2B,0x6E3F,0x6E41,0x6E5D,0x6E73,0x6E1C,0x6E33, 0x6E4B,0x6E40,0x6E51,0x6E3B,0x6E03,0x6E2E,0x6E5E,INVALC, /* Block 219, Array index 0x3900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6E68,0x6E5C,0x6E61,0x6E31,0x6E28,0x6E60,0x6E71,0x6E6B, 0x6E39,0x6E22,0x6E30,0x6E53,0x6E65,0x6E27,0x6E78,0x6E64, 0x6E77,0x6E55,0x6E79,0x6E52,0x6E66,0x6E35,0x6E36,0x6E5A, 0x7120,0x711E,0x712F,0x70FB,0x712E,0x7131,0x7123,0x7125, 0x7122,0x7132,0x711F,0x7128,0x713A,0x711B,0x724B,0x725A, 0x7288,0x7289,0x7286,0x7285,0x728B,0x7312,0x730B,0x7330, 0x7322,0x7331,0x7333,0x7327,0x7332,0x732D,0x7326,0x7323, 0x7335,0x730C,0x742E,0x742C,0x7430,0x742B,0x7416,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x741A,0x7421,0x742D,0x7431,0x7424,0x7423,0x741D, 0x7429,0x7420,0x7432,0x74FB,0x752F,0x756F,0x756C,0x75E7, 0x75DA,0x75E1,0x75E6,0x75DD,0x75DF,0x75E4,0x75D7,0x7695, 0x7692,0x76DA,0x7746,0x7747,0x7744,0x774D,0x7745,0x774A, 0x774E,0x774B,0x774C,0x77DE,0x77EC,0x7860,0x7864,0x7865, 0x785C,0x786D,0x7871,0x786A,0x786E,0x7870,0x7869,0x7868, 0x785E,0x7862,0x7974,0x7973,0x7972,0x7970,0x7A02,0x7A0A, 0x7A03,0x7A0C,0x7A04,0x7A99,0x7AE6,0x7AE4,0x7B4A,0x7B3B, 0x7B44,0x7B48,0x7B4C,0x7B4E,0x7B40,0x7B58,0x7B45,0x7CA2, 0x7C9E,0x7CA8,0x7CA1,0x7D58,0x7D6F,0x7D63,0x7D53,0x7D56, 0x7D67,0x7D6A,0x7D4F,0x7D6D,0x7D5C,0x7D6B,0x7D52,0x7D54, 0x7D69,0x7D51,0x7D5F,0x7D4E,0x7F3E,0x7F3F,0x7F65,INVALC, /* Block 220, Array index 0x3A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7F66,0x7FA2,0x7FA0,0x7FA1,0x7FD7,0x8051,0x804F,0x8050, 0x80FE,0x80D4,0x8143,0x814A,0x8152,0x814F,0x8147,0x813D, 0x814D,0x813A,0x81E6,0x81EE,0x81F7,0x81F8,0x81F9,0x8204, 0x823C,0x823D,0x823F,0x8275,0x833B,0x83CF,0x83F9,0x8423, 0x83C0,0x83E8,0x8412,0x83E7,0x83E4,0x83FC,0x83F6,0x8410, 0x83C6,0x83C8,0x83EB,0x83E3,0x83BF,0x8401,0x83DD,0x83E5, 0x83D8,0x83FF,0x83E1,0x83CB,0x83CE,0x83D6,0x83F5,0x83C9, 0x8409,0x840F,0x83DE,0x8411,0x8406,0x83C2,0x83F3,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x83D5,0x83FA,0x83C7,0x83D1,0x83EA,0x8413,0x83C3, 0x83EC,0x83EE,0x83C4,0x83FB,0x83D7,0x83E2,0x841B,0x83DB, 0x83FE,0x86D8,0x86E2,0x86E6,0x86D3,0x86E3,0x86DA,0x86EA, 0x86DD,0x86EB,0x86DC,0x86EC,0x86E9,0x86D7,0x86E8,0x86D1, 0x8848,0x8856,0x8855,0x88BA,0x88D7,0x88B9,0x88B8,0x88C0, 0x88BE,0x88B6,0x88BC,0x88B7,0x88BD,0x88B2,0x8901,0x88C9, 0x8995,0x8998,0x8997,0x89DD,0x89DA,0x89DB,0x8A4E,0x8A4D, 0x8A39,0x8A59,0x8A40,0x8A57,0x8A58,0x8A44,0x8A45,0x8A52, 0x8A48,0x8A51,0x8A4A,0x8A4C,0x8A4F,0x8C5F,0x8C81,0x8C80, 0x8CBA,0x8CBE,0x8CB0,0x8CB9,0x8CB5,0x8D84,0x8D80,0x8D89, 0x8DD8,0x8DD3,0x8DCD,0x8DC7,0x8DD6,0x8DDC,0x8DCF,0x8DD5, 0x8DD9,0x8DC8,0x8DD7,0x8DC5,0x8EEF,0x8EF7,0x8EFA,INVALC, /* Block 221, Array index 0x3B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x8EF9,0x8EE6,0x8EEE,0x8EE5,0x8EF5,0x8EE7,0x8EE8,0x8EF6, 0x8EEB,0x8EF1,0x8EEC,0x8EF4,0x8EE9,0x902D,0x9034,0x902F, 0x9106,0x912C,0x9104,0x90FF,0x90FC,0x9108,0x90F9,0x90FB, 0x9101,0x9100,0x9107,0x9105,0x9103,0x9161,0x9164,0x915F, 0x9162,0x9160,0x9201,0x920A,0x9225,0x9203,0x921A,0x9226, 0x920F,0x920C,0x9200,0x9212,0x91FF,0x91FD,0x9206,0x9204, 0x9227,0x9202,0x921C,0x9224,0x9219,0x9217,0x9205,0x9216, 0x957B,0x958D,0x958C,0x9590,0x9687,0x967E,0x9688,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9689,0x9683,0x9680,0x96C2,0x96C8,0x96C3,0x96F1, 0x96F0,0x976C,0x9770,0x976E,0x9807,0x98A9,0x98EB,0x9CE6, 0x9EF9,0x4E83,0x4E84,0x4EB6,0x50BD,0x50BF,0x50C6,0x50AE, 0x50C4,0x50CA,0x50B4,0x50C8,0x50C2,0x50B0,0x50C1,0x50BA, 0x50B1,0x50CB,0x50C9,0x50B6,0x50B8,0x51D7,0x527A,0x5278, 0x527B,0x527C,0x55C3,0x55DB,0x55CC,0x55D0,0x55CB,0x55CA, 0x55DD,0x55C0,0x55D4,0x55C4,0x55E9,0x55BF,0x55D2,0x558D, 0x55CF,0x55D5,0x55E2,0x55D6,0x55C8,0x55F2,0x55CD,0x55D9, 0x55C2,0x5714,0x5853,0x5868,0x5864,0x584F,0x584D,0x5849, 0x586F,0x5855,0x584E,0x585D,0x5859,0x5865,0x585B,0x583D, 0x5863,0x5871,0x58FC,0x5AC7,0x5AC4,0x5ACB,0x5ABA,0x5AB8, 0x5AB1,0x5AB5,0x5AB0,0x5ABF,0x5AC8,0x5ABB,0x5AC6,INVALC, /* Block 222, Array index 0x3C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5AB7,0x5AC0,0x5ACA,0x5AB4,0x5AB6,0x5ACD,0x5AB9,0x5A90, 0x5BD6,0x5BD8,0x5BD9,0x5C1F,0x5C33,0x5D71,0x5D63,0x5D4A, 0x5D65,0x5D72,0x5D6C,0x5D5E,0x5D68,0x5D67,0x5D62,0x5DF0, 0x5E4F,0x5E4E,0x5E4A,0x5E4D,0x5E4B,0x5EC5,0x5ECC,0x5EC6, 0x5ECB,0x5EC7,0x5F40,0x5FAF,0x5FAD,0x60F7,0x6149,0x614A, 0x612B,0x6145,0x6136,0x6132,0x612E,0x6146,0x612F,0x614F, 0x6129,0x6140,0x6220,0x9168,0x6223,0x6225,0x6224,0x63C5, 0x63F1,0x63EB,0x6410,0x6412,0x6409,0x6420,0x6424,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6433,0x6443,0x641F,0x6415,0x6418,0x6439,0x6437, 0x6422,0x6423,0x640C,0x6426,0x6430,0x6428,0x6441,0x6435, 0x642F,0x640A,0x641A,0x6440,0x6425,0x6427,0x640B,0x63E7, 0x641B,0x642E,0x6421,0x640E,0x656F,0x6592,0x65D3,0x6686, 0x668C,0x6695,0x6690,0x668B,0x668A,0x6699,0x6694,0x6678, 0x6720,0x6966,0x695F,0x6938,0x694E,0x6962,0x6971,0x693F, 0x6945,0x696A,0x6939,0x6942,0x6957,0x6959,0x697A,0x6948, 0x6949,0x6935,0x696C,0x6933,0x693D,0x6965,0x68F0,0x6978, 0x6934,0x6969,0x6940,0x696F,0x6944,0x6976,0x6958,0x6941, 0x6974,0x694C,0x693B,0x694B,0x6937,0x695C,0x694F,0x6951, 0x6932,0x6952,0x692F,0x697B,0x693C,0x6B46,0x6B45,0x6B43, 0x6B42,0x6B48,0x6B41,0x6B9B,0xFA0D,0x6BFB,0x6BFC,INVALC, /* Block 223, Array index 0x3D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6BF9,0x6BF7,0x6BF8,0x6E9B,0x6ED6,0x6EC8,0x6E8F,0x6EC0, 0x6E9F,0x6E93,0x6E94,0x6EA0,0x6EB1,0x6EB9,0x6EC6,0x6ED2, 0x6EBD,0x6EC1,0x6E9E,0x6EC9,0x6EB7,0x6EB0,0x6ECD,0x6EA6, 0x6ECF,0x6EB2,0x6EBE,0x6EC3,0x6EDC,0x6ED8,0x6E99,0x6E92, 0x6E8E,0x6E8D,0x6EA4,0x6EA1,0x6EBF,0x6EB3,0x6ED0,0x6ECA, 0x6E97,0x6EAE,0x6EA3,0x7147,0x7154,0x7152,0x7163,0x7160, 0x7141,0x715D,0x7162,0x7172,0x7178,0x716A,0x7161,0x7142, 0x7158,0x7143,0x714B,0x7170,0x715F,0x7150,0x7153,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7144,0x714D,0x715A,0x724F,0x728D,0x728C,0x7291, 0x7290,0x728E,0x733C,0x7342,0x733B,0x733A,0x7340,0x734A, 0x7349,0x7444,0x744A,0x744B,0x7452,0x7451,0x7457,0x7440, 0x744F,0x7450,0x744E,0x7442,0x7446,0x744D,0x7454,0x74E1, 0x74FF,0x74FE,0x74FD,0x751D,0x7579,0x7577,0x6983,0x75EF, 0x760F,0x7603,0x75F7,0x75FE,0x75FC,0x75F9,0x75F8,0x7610, 0x75FB,0x75F6,0x75ED,0x75F5,0x75FD,0x7699,0x76B5,0x76DD, 0x7755,0x775F,0x7760,0x7752,0x7756,0x775A,0x7769,0x7767, 0x7754,0x7759,0x776D,0x77E0,0x7887,0x789A,0x7894,0x788F, 0x7884,0x7895,0x7885,0x7886,0x78A1,0x7883,0x7879,0x7899, 0x7880,0x7896,0x787B,0x797C,0x7982,0x797D,0x7979,0x7A11, 0x7A18,0x7A19,0x7A12,0x7A17,0x7A15,0x7A22,0x7A13,INVALC, /* Block 224, Array index 0x3E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7A1B,0x7A10,0x7AA3,0x7AA2,0x7A9E,0x7AEB,0x7B66,0x7B64, 0x7B6D,0x7B74,0x7B69,0x7B72,0x7B65,0x7B73,0x7B71,0x7B70, 0x7B61,0x7B78,0x7B76,0x7B63,0x7CB2,0x7CB4,0x7CAF,0x7D88, 0x7D86,0x7D80,0x7D8D,0x7D7F,0x7D85,0x7D7A,0x7D8E,0x7D7B, 0x7D83,0x7D7C,0x7D8C,0x7D94,0x7D84,0x7D7D,0x7D92,0x7F6D, 0x7F6B,0x7F67,0x7F68,0x7F6C,0x7FA6,0x7FA5,0x7FA7,0x7FDB, 0x7FDC,0x8021,0x8164,0x8160,0x8177,0x815C,0x8169,0x815B, 0x8162,0x8172,0x6721,0x815E,0x8176,0x8167,0x816F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8144,0x8161,0x821D,0x8249,0x8244,0x8240,0x8242, 0x8245,0x84F1,0x843F,0x8456,0x8476,0x8479,0x848F,0x848D, 0x8465,0x8451,0x8440,0x8486,0x8467,0x8430,0x844D,0x847D, 0x845A,0x8459,0x8474,0x8473,0x845D,0x8507,0x845E,0x8437, 0x843A,0x8434,0x847A,0x8443,0x8478,0x8432,0x8445,0x8429, 0x83D9,0x844B,0x842F,0x8442,0x842D,0x845F,0x8470,0x8439, 0x844E,0x844C,0x8452,0x846F,0x84C5,0x848E,0x843B,0x8447, 0x8436,0x8433,0x8468,0x847E,0x8444,0x842B,0x8460,0x8454, 0x846E,0x8450,0x870B,0x8704,0x86F7,0x870C,0x86FA,0x86D6, 0x86F5,0x874D,0x86F8,0x870E,0x8709,0x8701,0x86F6,0x870D, 0x8705,0x88D6,0x88CB,0x88CD,0x88CE,0x88DE,0x88DB,0x88DA, 0x88CC,0x88D0,0x8985,0x899B,0x89DF,0x89E5,0x89E4,INVALC, /* Block 225, Array index 0x3F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x89E1,0x89E0,0x89E2,0x89DC,0x89E6,0x8A76,0x8A86,0x8A7F, 0x8A61,0x8A3F,0x8A77,0x8A82,0x8A84,0x8A75,0x8A83,0x8A81, 0x8A74,0x8A7A,0x8C3C,0x8C4B,0x8C4A,0x8C65,0x8C64,0x8C66, 0x8C86,0x8C84,0x8C85,0x8CCC,0x8D68,0x8D69,0x8D91,0x8D8C, 0x8D8E,0x8D8F,0x8D8D,0x8D93,0x8D94,0x8D90,0x8D92,0x8DF0, 0x8DE0,0x8DEC,0x8DF1,0x8DEE,0x8DD0,0x8DE9,0x8DE3,0x8DE2, 0x8DE7,0x8DF2,0x8DEB,0x8DF4,0x8F06,0x8EFF,0x8F01,0x8F00, 0x8F05,0x8F07,0x8F08,0x8F02,0x8F0B,0x9052,0x903F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9044,0x9049,0x903D,0x9110,0x910D,0x910F,0x9111, 0x9116,0x9114,0x910B,0x910E,0x916E,0x916F,0x9248,0x9252, 0x9230,0x923A,0x9266,0x9233,0x9265,0x925E,0x9283,0x922E, 0x924A,0x9246,0x926D,0x926C,0x924F,0x9260,0x9267,0x926F, 0x9236,0x9261,0x9270,0x9231,0x9254,0x9263,0x9250,0x9272, 0x924E,0x9253,0x924C,0x9256,0x9232,0x959F,0x959C,0x959E, 0x959B,0x9692,0x9693,0x9691,0x9697,0x96CE,0x96FA,0x96FD, 0x96F8,0x96F5,0x9773,0x9777,0x9778,0x9772,0x980F,0x980D, 0x980E,0x98AC,0x98F6,0x98F9,0x99AF,0x99B2,0x99B0,0x99B5, 0x9AAD,0x9AAB,0x9B5B,0x9CEA,0x9CED,0x9CE7,0x9E80,0x9EFD, 0x50E6,0x50D4,0x50D7,0x50E8,0x50F3,0x50DB,0x50EA,0x50DD, 0x50E4,0x50D3,0x50EC,0x50F0,0x50EF,0x50E3,0x50E0,INVALC, /* Block 226, Array index 0x4000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x51D8,0x5280,0x5281,0x52E9,0x52EB,0x5330,0x53AC,0x5627, 0x5615,0x560C,0x5612,0x55FC,0x560F,0x561C,0x5601,0x5613, 0x5602,0x55FA,0x561D,0x5604,0x55FF,0x55F9,0x5889,0x587C, 0x5890,0x5898,0x5886,0x5881,0x587F,0x5874,0x588B,0x587A, 0x5887,0x5891,0x588E,0x5876,0x5882,0x5888,0x587B,0x5894, 0x588F,0x58FE,0x596B,0x5ADC,0x5AEE,0x5AE5,0x5AD5,0x5AEA, 0x5ADA,0x5AED,0x5AEB,0x5AF3,0x5AE2,0x5AE0,0x5ADB,0x5AEC, 0x5ADE,0x5ADD,0x5AD9,0x5AE8,0x5ADF,0x5B77,0x5BE0,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5BE3,0x5C63,0x5D82,0x5D80,0x5D7D,0x5D86,0x5D7A, 0x5D81,0x5D77,0x5D8A,0x5D89,0x5D88,0x5D7E,0x5D7C,0x5D8D, 0x5D79,0x5D7F,0x5E58,0x5E59,0x5E53,0x5ED8,0x5ED1,0x5ED7, 0x5ECE,0x5EDC,0x5ED5,0x5ED9,0x5ED2,0x5ED4,0x5F44,0x5F43, 0x5F6F,0x5FB6,0x612C,0x6128,0x6141,0x615E,0x6171,0x6173, 0x6152,0x6153,0x6172,0x616C,0x6180,0x6174,0x6154,0x617A, 0x615B,0x6165,0x613B,0x616A,0x6161,0x6156,0x6229,0x6227, 0x622B,0x642B,0x644D,0x645B,0x645D,0x6474,0x6476,0x6472, 0x6473,0x647D,0x6475,0x6466,0x64A6,0x644E,0x6482,0x645E, 0x645C,0x644B,0x6453,0x6460,0x6450,0x647F,0x643F,0x646C, 0x646B,0x6459,0x6465,0x6477,0x6573,0x65A0,0x66A1,0x66A0, 0x669F,0x6705,0x6704,0x6722,0x69B1,0x69B6,0x69C9,INVALC, /* Block 227, Array index 0x4100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x69A0,0x69CE,0x6996,0x69B0,0x69AC,0x69BC,0x6991,0x6999, 0x698E,0x69A7,0x698D,0x69A9,0x69BE,0x69AF,0x69BF,0x69C4, 0x69BD,0x69A4,0x69D4,0x69B9,0x69CA,0x699A,0x69CF,0x69B3, 0x6993,0x69AA,0x69A1,0x699E,0x69D9,0x6997,0x6990,0x69C2, 0x69B5,0x69A5,0x69C6,0x6B4A,0x6B4D,0x6B4B,0x6B9E,0x6B9F, 0x6BA0,0x6BC3,0x6BC4,0x6BFE,0x6ECE,0x6EF5,0x6EF1,0x6F03, 0x6F25,0x6EF8,0x6F37,0x6EFB,0x6F2E,0x6F09,0x6F4E,0x6F19, 0x6F1A,0x6F27,0x6F18,0x6F3B,0x6F12,0x6EED,0x6F0A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6F36,0x6F73,0x6EF9,0x6EEE,0x6F2D,0x6F40,0x6F30, 0x6F3C,0x6F35,0x6EEB,0x6F07,0x6F0E,0x6F43,0x6F05,0x6EFD, 0x6EF6,0x6F39,0x6F1C,0x6EFC,0x6F3A,0x6F1F,0x6F0D,0x6F1E, 0x6F08,0x6F21,0x7187,0x7190,0x7189,0x7180,0x7185,0x7182, 0x718F,0x717B,0x7186,0x7181,0x7197,0x7244,0x7253,0x7297, 0x7295,0x7293,0x7343,0x734D,0x7351,0x734C,0x7462,0x7473, 0x7471,0x7475,0x7472,0x7467,0x746E,0x7500,0x7502,0x7503, 0x757D,0x7590,0x7616,0x7608,0x760C,0x7615,0x7611,0x760A, 0x7614,0x76B8,0x7781,0x777C,0x7785,0x7782,0x776E,0x7780, 0x776F,0x777E,0x7783,0x78B2,0x78AA,0x78B4,0x78AD,0x78A8, 0x787E,0x78AB,0x789E,0x78A5,0x78A0,0x78AC,0x78A2,0x78A4, 0x7998,0x798A,0x798B,0x7996,0x7995,0x7994,0x7993,INVALC, /* Block 228, Array index 0x4200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7997,0x7988,0x7992,0x7990,0x7A2B,0x7A4A,0x7A30,0x7A2F, 0x7A28,0x7A26,0x7AA8,0x7AAB,0x7AAC,0x7AEE,0x7B88,0x7B9C, 0x7B8A,0x7B91,0x7B90,0x7B96,0x7B8D,0x7B8C,0x7B9B,0x7B8E, 0x7B85,0x7B98,0x5284,0x7B99,0x7BA4,0x7B82,0x7CBB,0x7CBF, 0x7CBC,0x7CBA,0x7DA7,0x7DB7,0x7DC2,0x7DA3,0x7DAA,0x7DC1, 0x7DC0,0x7DC5,0x7D9D,0x7DCE,0x7DC4,0x7DC6,0x7DCB,0x7DCC, 0x7DAF,0x7DB9,0x7D96,0x7DBC,0x7D9F,0x7DA6,0x7DAE,0x7DA9, 0x7DA1,0x7DC9,0x7F73,0x7FE2,0x7FE3,0x7FE5,0x7FDE,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8024,0x805D,0x805C,0x8189,0x8186,0x8183,0x8187, 0x818D,0x818C,0x818B,0x8215,0x8497,0x84A4,0x84A1,0x849F, 0x84BA,0x84CE,0x84C2,0x84AC,0x84AE,0x84AB,0x84B9,0x84B4, 0x84C1,0x84CD,0x84AA,0x849A,0x84B1,0x84D0,0x849D,0x84A7, 0x84BB,0x84A2,0x8494,0x84C7,0x84CC,0x849B,0x84A9,0x84AF, 0x84A8,0x84D6,0x8498,0x84B6,0x84CF,0x84A0,0x84D7,0x84D4, 0x84D2,0x84DB,0x84B0,0x8491,0x8661,0x8733,0x8723,0x8728, 0x876B,0x8740,0x872E,0x871E,0x8721,0x8719,0x871B,0x8743, 0x872C,0x8741,0x873E,0x8746,0x8720,0x8732,0x872A,0x872D, 0x873C,0x8712,0x873A,0x8731,0x8735,0x8742,0x8726,0x8727, 0x8738,0x8724,0x871A,0x8730,0x8711,0x88F7,0x88E7,0x88F1, 0x88F2,0x88FA,0x88FE,0x88EE,0x88FC,0x88F6,0x88FB,INVALC, /* Block 229, Array index 0x4300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x88F0,0x88EC,0x88EB,0x899D,0x89A1,0x899F,0x899E,0x89E9, 0x89EB,0x89E8,0x8AAB,0x8A99,0x8A8B,0x8A92,0x8A8F,0x8A96, 0x8C3D,0x8C68,0x8C69,0x8CD5,0x8CCF,0x8CD7,0x8D96,0x8E09, 0x8E02,0x8DFF,0x8E0D,0x8DFD,0x8E0A,0x8E03,0x8E07,0x8E06, 0x8E05,0x8DFE,0x8E00,0x8E04,0x8F10,0x8F11,0x8F0E,0x8F0D, 0x9123,0x911C,0x9120,0x9122,0x911F,0x911D,0x911A,0x9124, 0x9121,0x911B,0x917A,0x9172,0x9179,0x9173,0x92A5,0x92A4, 0x9276,0x929B,0x927A,0x92A0,0x9294,0x92AA,0x928D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x92A6,0x929A,0x92AB,0x9279,0x9297,0x927F,0x92A3, 0x92EE,0x928E,0x9282,0x9295,0x92A2,0x927D,0x9288,0x92A1, 0x928A,0x9286,0x928C,0x9299,0x92A7,0x927E,0x9287,0x92A9, 0x929D,0x928B,0x922D,0x969E,0x96A1,0x96FF,0x9758,0x977D, 0x977A,0x977E,0x9783,0x9780,0x9782,0x977B,0x9784,0x9781, 0x977F,0x97CE,0x97CD,0x9816,0x98AD,0x98AE,0x9902,0x9900, 0x9907,0x999D,0x999C,0x99C3,0x99B9,0x99BB,0x99BA,0x99C2, 0x99BD,0x99C7,0x9AB1,0x9AE3,0x9AE7,0x9B3E,0x9B3F,0x9B60, 0x9B61,0x9B5F,0x9CF1,0x9CF2,0x9CF5,0x9EA7,0x50FF,0x5103, 0x5130,0x50F8,0x5106,0x5107,0x50F6,0x50FE,0x510B,0x510C, 0x50FD,0x510A,0x528B,0x528C,0x52F1,0x52EF,0x5648,0x5642, 0x564C,0x5635,0x5641,0x564A,0x5649,0x5646,0x5658,INVALC, /* Block 230, Array index 0x4400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x565A,0x5640,0x5633,0x563D,0x562C,0x563E,0x5638,0x562A, 0x563A,0x571A,0x58AB,0x589D,0x58B1,0x58A0,0x58A3,0x58AF, 0x58AC,0x58A5,0x58A1,0x58FF,0x5AFF,0x5AF4,0x5AFD,0x5AF7, 0x5AF6,0x5B03,0x5AF8,0x5B02,0x5AF9,0x5B01,0x5B07,0x5B05, 0x5B0F,0x5C67,0x5D99,0x5D97,0x5D9F,0x5D92,0x5DA2,0x5D93, 0x5D95,0x5DA0,0x5D9C,0x5DA1,0x5D9A,0x5D9E,0x5E69,0x5E5D, 0x5E60,0x5E5C,0x7DF3,0x5EDB,0x5EDE,0x5EE1,0x5F49,0x5FB2, 0x618B,0x6183,0x6179,0x61B1,0x61B0,0x61A2,0x6189,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x619B,0x6193,0x61AF,0x61AD,0x619F,0x6192,0x61AA, 0x61A1,0x618D,0x6166,0x61B3,0x622D,0x646E,0x6470,0x6496, 0x64A0,0x6485,0x6497,0x649C,0x648F,0x648B,0x648A,0x648C, 0x64A3,0x649F,0x6468,0x64B1,0x6498,0x6576,0x657A,0x6579, 0x657B,0x65B2,0x65B3,0x66B5,0x66B0,0x66A9,0x66B2,0x66B7, 0x66AA,0x66AF,0x6A00,0x6A06,0x6A17,0x69E5,0x69F8,0x6A15, 0x69F1,0x69E4,0x6A20,0x69FF,0x69EC,0x69E2,0x6A1B,0x6A1D, 0x69FE,0x6A27,0x69F2,0x69EE,0x6A14,0x69F7,0x69E7,0x6A40, 0x6A08,0x69E6,0x69FB,0x6A0D,0x69FC,0x69EB,0x6A09,0x6A04, 0x6A18,0x6A25,0x6A0F,0x69F6,0x6A26,0x6A07,0x69F4,0x6A16, 0x6B51,0x6BA5,0x6BA3,0x6BA2,0x6BA6,0x6C01,0x6C00,0x6BFF, 0x6C02,0x6F41,0x6F26,0x6F7E,0x6F87,0x6FC6,0x6F92,INVALC, /* Block 231, Array index 0x4500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6F8D,0x6F89,0x6F8C,0x6F62,0x6F4F,0x6F85,0x6F5A,0x6F96, 0x6F76,0x6F6C,0x6F82,0x6F55,0x6F72,0x6F52,0x6F50,0x6F57, 0x6F94,0x6F93,0x6F5D,0x6F00,0x6F61,0x6F6B,0x6F7D,0x6F67, 0x6F90,0x6F53,0x6F8B,0x6F69,0x6F7F,0x6F95,0x6F63,0x6F77, 0x6F6A,0x6F7B,0x71B2,0x71AF,0x719B,0x71B0,0x71A0,0x719A, 0x71A9,0x71B5,0x719D,0x71A5,0x719E,0x71A4,0x71A1,0x71AA, 0x719C,0x71A7,0x71B3,0x7298,0x729A,0x7358,0x7352,0x735E, 0x735F,0x7360,0x735D,0x735B,0x7361,0x735A,0x7359,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7362,0x7487,0x7489,0x748A,0x7486,0x7481,0x747D, 0x7485,0x7488,0x747C,0x7479,0x7508,0x7507,0x757E,0x7625, 0x761E,0x7619,0x761D,0x761C,0x7623,0x761A,0x7628,0x761B, 0x769C,0x769D,0x769E,0x769B,0x778D,0x778F,0x7789,0x7788, 0x78CD,0x78BB,0x78CF,0x78CC,0x78D1,0x78CE,0x78D4,0x78C8, 0x78C3,0x78C4,0x78C9,0x799A,0x79A1,0x79A0,0x799C,0x79A2, 0x799B,0x6B76,0x7A39,0x7AB2,0x7AB4,0x7AB3,0x7BB7,0x7BCB, 0x7BBE,0x7BAC,0x7BCE,0x7BAF,0x7BB9,0x7BCA,0x7BB5,0x7CC5, 0x7CC8,0x7CCC,0x7CCB,0x7DF7,0x7DDB,0x7DEA,0x7DE7,0x7DD7, 0x7DE1,0x7E03,0x7DFA,0x7DE6,0x7DF6,0x7DF1,0x7DF0,0x7DEE, 0x7DDF,0x7F76,0x7FAC,0x7FB0,0x7FAD,0x7FED,0x7FEB,0x7FEA, 0x7FEC,0x7FE6,0x7FE8,0x8064,0x8067,0x81A3,0x819F,INVALC, /* Block 232, Array index 0x4600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x819E,0x8195,0x81A2,0x8199,0x8197,0x8216,0x824F,0x8253, 0x8252,0x8250,0x824E,0x8251,0x8524,0x853B,0x850F,0x8500, 0x8529,0x850E,0x8509,0x850D,0x851F,0x850A,0x8527,0x851C, 0x84FB,0x852B,0x84FA,0x8508,0x850C,0x84F4,0x852A,0x84F2, 0x8515,0x84F7,0x84EB,0x84F3,0x84FC,0x8512,0x84EA,0x84E9, 0x8516,0x84FE,0x8528,0x851D,0x852E,0x8502,0x84FD,0x851E, 0x84F6,0x8531,0x8526,0x84E7,0x84E8,0x84F0,0x84EF,0x84F9, 0x8518,0x8520,0x8530,0x850B,0x8519,0x852F,0x8662,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8756,0x8763,0x8764,0x8777,0x87E1,0x8773,0x8758, 0x8754,0x875B,0x8752,0x8761,0x875A,0x8751,0x875E,0x876D, 0x876A,0x8750,0x874E,0x875F,0x875D,0x876F,0x876C,0x877A, 0x876E,0x875C,0x8765,0x874F,0x877B,0x8775,0x8762,0x8767, 0x8769,0x885A,0x8905,0x890C,0x8914,0x890B,0x8917,0x8918, 0x8919,0x8906,0x8916,0x8911,0x890E,0x8909,0x89A2,0x89A4, 0x89A3,0x89ED,0x89F0,0x89EC,0x8ACF,0x8AC6,0x8AB8,0x8AD3, 0x8AD1,0x8AD4,0x8AD5,0x8ABB,0x8AD7,0x8ABE,0x8AC0,0x8AC5, 0x8AD8,0x8AC3,0x8ABA,0x8ABD,0x8AD9,0x8C3E,0x8C4D,0x8C8F, 0x8CE5,0x8CDF,0x8CD9,0x8CE8,0x8CDA,0x8CDD,0x8CE7,0x8DA0, 0x8D9C,0x8DA1,0x8D9B,0x8E20,0x8E23,0x8E25,0x8E24,0x8E2E, 0x8E15,0x8E1B,0x8E16,0x8E11,0x8E19,0x8E26,0x8E27,INVALC, /* Block 233, Array index 0x4700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x8E14,0x8E12,0x8E18,0x8E13,0x8E1C,0x8E17,0x8E1A,0x8F2C, 0x8F24,0x8F18,0x8F1A,0x8F20,0x8F23,0x8F16,0x8F17,0x9073, 0x9070,0x906F,0x9067,0x906B,0x912F,0x912B,0x9129,0x912A, 0x9132,0x9126,0x912E,0x9185,0x9186,0x918A,0x9181,0x9182, 0x9184,0x9180,0x92D0,0x92C3,0x92C4,0x92C0,0x92D9,0x92B6, 0x92CF,0x92F1,0x92DF,0x92D8,0x92E9,0x92D7,0x92DD,0x92CC, 0x92EF,0x92C2,0x92E8,0x92CA,0x92C8,0x92CE,0x92E6,0x92CD, 0x92D5,0x92C9,0x92E0,0x92DE,0x92E7,0x92D1,0x92D3,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x92B5,0x92E1,0x92C6,0x92B4,0x957C,0x95AC,0x95AB, 0x95AE,0x95B0,0x96A4,0x96A2,0x96D3,0x9705,0x9708,0x9702, 0x975A,0x978A,0x978E,0x9788,0x97D0,0x97CF,0x981E,0x981D, 0x9826,0x9829,0x9828,0x9820,0x981B,0x9827,0x98B2,0x9908, 0x98FA,0x9911,0x9914,0x9916,0x9917,0x9915,0x99DC,0x99CD, 0x99CF,0x99D3,0x99D4,0x99CE,0x99C9,0x99D6,0x99D8,0x99CB, 0x99D7,0x99CC,0x9AB3,0x9AEC,0x9AEB,0x9AF3,0x9AF2,0x9AF1, 0x9B46,0x9B43,0x9B67,0x9B74,0x9B71,0x9B66,0x9B76,0x9B75, 0x9B70,0x9B68,0x9B64,0x9B6C,0x9CFC,0x9CFA,0x9CFD,0x9CFF, 0x9CF7,0x9D07,0x9D00,0x9CF9,0x9CFB,0x9D08,0x9D05,0x9D04, 0x9E83,0x9ED3,0x9F0F,0x9F10,0x511C,0x5113,0x5117,0x511A, 0x5111,0x51DE,0x5334,0x53E1,0x5670,0x5660,0x566E,INVALC, /* Block 234, Array index 0x4800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5673,0x5666,0x5663,0x566D,0x5672,0x565E,0x5677,0x571C, 0x571B,0x58C8,0x58BD,0x58C9,0x58BF,0x58BA,0x58C2,0x58BC, 0x58C6,0x5B17,0x5B19,0x5B1B,0x5B21,0x5B14,0x5B13,0x5B10, 0x5B16,0x5B28,0x5B1A,0x5B20,0x5B1E,0x5BEF,0x5DAC,0x5DB1, 0x5DA9,0x5DA7,0x5DB5,0x5DB0,0x5DAE,0x5DAA,0x5DA8,0x5DB2, 0x5DAD,0x5DAF,0x5DB4,0x5E67,0x5E68,0x5E66,0x5E6F,0x5EE9, 0x5EE7,0x5EE6,0x5EE8,0x5EE5,0x5F4B,0x5FBC,0x619D,0x61A8, 0x6196,0x61C5,0x61B4,0x61C6,0x61C1,0x61CC,0x61BA,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x61BF,0x61B8,0x618C,0x64D7,0x64D6,0x64D0,0x64CF, 0x64C9,0x64BD,0x6489,0x64C3,0x64DB,0x64F3,0x64D9,0x6533, 0x657F,0x657C,0x65A2,0x66C8,0x66BE,0x66C0,0x66CA,0x66CB, 0x66CF,0x66BD,0x66BB,0x66BA,0x66CC,0x6723,0x6A34,0x6A66, 0x6A49,0x6A67,0x6A32,0x6A68,0x6A3E,0x6A5D,0x6A6D,0x6A76, 0x6A5B,0x6A51,0x6A28,0x6A5A,0x6A3B,0x6A3F,0x6A41,0x6A6A, 0x6A64,0x6A50,0x6A4F,0x6A54,0x6A6F,0x6A69,0x6A60,0x6A3C, 0x6A5E,0x6A56,0x6A55,0x6A4D,0x6A4E,0x6A46,0x6B55,0x6B54, 0x6B56,0x6BA7,0x6BAA,0x6BAB,0x6BC8,0x6BC7,0x6C04,0x6C03, 0x6C06,0x6FAD,0x6FCB,0x6FA3,0x6FC7,0x6FBC,0x6FCE,0x6FC8, 0x6F5E,0x6FC4,0x6FBD,0x6F9E,0x6FCA,0x6FA8,0x7004,0x6FA5, 0x6FAE,0x6FBA,0x6FAC,0x6FAA,0x6FCF,0x6FBF,0x6FB8,INVALC, /* Block 235, Array index 0x4900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6FA2,0x6FC9,0x6FAB,0x6FCD,0x6FAF,0x6FB2,0x6FB0,0x71C5, 0x71C2,0x71BF,0x71B8,0x71D6,0x71C0,0x71C1,0x71CB,0x71D4, 0x71CA,0x71C7,0x71CF,0x71BD,0x71D8,0x71BC,0x71C6,0x71DA, 0x71DB,0x729D,0x729E,0x7369,0x7366,0x7367,0x736C,0x7365, 0x736B,0x736A,0x747F,0x749A,0x74A0,0x7494,0x7492,0x7495, 0x74A1,0x750B,0x7580,0x762F,0x762D,0x7631,0x763D,0x7633, 0x763C,0x7635,0x7632,0x7630,0x76BB,0x76E6,0x779A,0x779D, 0x77A1,0x779C,0x779B,0x77A2,0x77A3,0x7795,0x7799,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7797,0x78DD,0x78E9,0x78E5,0x78EA,0x78DE,0x78E3, 0x78DB,0x78E1,0x78E2,0x78ED,0x78DF,0x78E0,0x79A4,0x7A44, 0x7A48,0x7A47,0x7AB6,0x7AB8,0x7AB5,0x7AB1,0x7AB7,0x7BDE, 0x7BE3,0x7BE7,0x7BDD,0x7BD5,0x7BE5,0x7BDA,0x7BE8,0x7BF9, 0x7BD4,0x7BEA,0x7BE2,0x7BDC,0x7BEB,0x7BD8,0x7BDF,0x7CD2, 0x7CD4,0x7CD7,0x7CD0,0x7CD1,0x7E12,0x7E21,0x7E17,0x7E0C, 0x7E1F,0x7E20,0x7E13,0x7E0E,0x7E1C,0x7E15,0x7E1A,0x7E22, 0x7E0B,0x7E0F,0x7E16,0x7E0D,0x7E14,0x7E25,0x7E24,0x7F43, 0x7F7B,0x7F7C,0x7F7A,0x7FB1,0x7FEF,0x802A,0x8029,0x806C, 0x81B1,0x81A6,0x81AE,0x81B9,0x81B5,0x81AB,0x81B0,0x81AC, 0x81B4,0x81B2,0x81B7,0x81A7,0x81F2,0x8255,0x8256,0x8257, 0x8556,0x8545,0x856B,0x854D,0x8553,0x8561,0x8558,INVALC, /* Block 236, Array index 0x4A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x8540,0x8546,0x8564,0x8541,0x8562,0x8544,0x8551,0x8547, 0x8563,0x853E,0x855B,0x8571,0x854E,0x856E,0x8575,0x8555, 0x8567,0x8560,0x858C,0x8566,0x855D,0x8554,0x8565,0x856C, 0x8663,0x8665,0x8664,0x879B,0x878F,0x8797,0x8793,0x8792, 0x8788,0x8781,0x8796,0x8798,0x8779,0x8787,0x87A3,0x8785, 0x8790,0x8791,0x879D,0x8784,0x8794,0x879C,0x879A,0x8789, 0x891E,0x8926,0x8930,0x892D,0x892E,0x8927,0x8931,0x8922, 0x8929,0x8923,0x892F,0x892C,0x891F,0x89F1,0x8AE0,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8AE2,0x8AF2,0x8AF4,0x8AF5,0x8ADD,0x8B14,0x8AE4, 0x8ADF,0x8AF0,0x8AC8,0x8ADE,0x8AE1,0x8AE8,0x8AFF,0x8AEF, 0x8AFB,0x8C91,0x8C92,0x8C90,0x8CF5,0x8CEE,0x8CF1,0x8CF0, 0x8CF3,0x8D6C,0x8D6E,0x8DA5,0x8DA7,0x8E33,0x8E3E,0x8E38, 0x8E40,0x8E45,0x8E36,0x8E3C,0x8E3D,0x8E41,0x8E30,0x8E3F, 0x8EBD,0x8F36,0x8F2E,0x8F35,0x8F32,0x8F39,0x8F37,0x8F34, 0x9076,0x9079,0x907B,0x9086,0x90FA,0x9133,0x9135,0x9136, 0x9193,0x9190,0x9191,0x918D,0x918F,0x9327,0x931E,0x9308, 0x931F,0x9306,0x930F,0x937A,0x9338,0x933C,0x931B,0x9323, 0x9312,0x9301,0x9346,0x932D,0x930E,0x930D,0x92CB,0x931D, 0x92FA,0x9325,0x9313,0x92F9,0x92F7,0x9334,0x9302,0x9324, 0x92FF,0x9329,0x9339,0x9335,0x932A,0x9314,0x930C,INVALC, /* Block 237, Array index 0x4B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x930B,0x92FE,0x9309,0x9300,0x92FB,0x9316,0x95BC,0x95CD, 0x95BE,0x95B9,0x95BA,0x95B6,0x95BF,0x95B5,0x95BD,0x96A9, 0x96D4,0x970B,0x9712,0x9710,0x9799,0x9797,0x9794,0x97F0, 0x97F8,0x9835,0x982F,0x9832,0x9924,0x991F,0x9927,0x9929, 0x999E,0x99EE,0x99EC,0x99E5,0x99E4,0x99F0,0x99E3,0x99EA, 0x99E9,0x99E7,0x9AB9,0x9ABF,0x9AB4,0x9ABB,0x9AF6,0x9AFA, 0x9AF9,0x9AF7,0x9B33,0x9B80,0x9B85,0x9B87,0x9B7C,0x9B7E, 0x9B7B,0x9B82,0x9B93,0x9B92,0x9B90,0x9B7A,0x9B95,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9B7D,0x9B88,0x9D25,0x9D17,0x9D20,0x9D1E,0x9D14, 0x9D29,0x9D1D,0x9D18,0x9D22,0x9D10,0x9D19,0x9D1F,0x9E88, 0x9E86,0x9E87,0x9EAE,0x9EAD,0x9ED5,0x9ED6,0x9EFA,0x9F12, 0x9F3D,0x5126,0x5125,0x5122,0x5124,0x5120,0x5129,0x52F4, 0x5693,0x568C,0x568D,0x5686,0x5684,0x5683,0x567E,0x5682, 0x567F,0x5681,0x58D6,0x58D4,0x58CF,0x58D2,0x5B2D,0x5B25, 0x5B32,0x5B23,0x5B2C,0x5B27,0x5B26,0x5B2F,0x5B2E,0x5B7B, 0x5BF1,0x5BF2,0x5DB7,0x5E6C,0x5E6A,0x5FBE,0x5FBB,0x61C3, 0x61B5,0x61BC,0x61E7,0x61E0,0x61E5,0x61E4,0x61E8,0x61DE, 0x64EF,0x64E9,0x64E3,0x64EB,0x64E4,0x64E8,0x6581,0x6580, 0x65B6,0x65DA,0x66D2,0x6A8D,0x6A96,0x6A81,0x6AA5,0x6A89, 0x6A9F,0x6A9B,0x6AA1,0x6A9E,0x6A87,0x6A93,0x6A8E,INVALC, /* Block 238, Array index 0x4C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6A95,0x6A83,0x6AA8,0x6AA4,0x6A91,0x6A7F,0x6AA6,0x6A9A, 0x6A85,0x6A8C,0x6A92,0x6B5B,0x6BAD,0x6C09,0x6FCC,0x6FA9, 0x6FF4,0x6FD4,0x6FE3,0x6FDC,0x6FED,0x6FE7,0x6FE6,0x6FDE, 0x6FF2,0x6FDD,0x6FE2,0x6FE8,0x71E1,0x71F1,0x71E8,0x71F2, 0x71E4,0x71F0,0x71E2,0x7373,0x736E,0x736F,0x7497,0x74B2, 0x74AB,0x7490,0x74AA,0x74AD,0x74B1,0x74A5,0x74AF,0x7510, 0x7511,0x7512,0x750F,0x7584,0x7643,0x7648,0x7649,0x7647, 0x76A4,0x76E9,0x77B5,0x77AB,0x77B2,0x77B7,0x77B6,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x77B4,0x77B1,0x77A8,0x77F0,0x78F3,0x78FD,0x7902, 0x78FB,0x78FC,0x78F2,0x7905,0x78F9,0x78FE,0x7904,0x79AB, 0x79A8,0x7A5C,0x7A5B,0x7A56,0x7A58,0x7A54,0x7A5A,0x7ABE, 0x7AC0,0x7AC1,0x7C05,0x7C0F,0x7BF2,0x7C00,0x7BFF,0x7BFB, 0x7C0E,0x7BF4,0x7C0B,0x7BF3,0x7C02,0x7C09,0x7C03,0x7C01, 0x7BF8,0x7BFD,0x7C06,0x7BF0,0x7BF1,0x7C10,0x7C0A,0x7CE8, 0x7E2D,0x7E3C,0x7E42,0x7E33,0x9848,0x7E38,0x7E2A,0x7E49, 0x7E40,0x7E47,0x7E29,0x7E4C,0x7E30,0x7E3B,0x7E36,0x7E44, 0x7E3A,0x7F45,0x7F7F,0x7F7E,0x7F7D,0x7FF4,0x7FF2,0x802C, 0x81BB,0x81C4,0x81CC,0x81CA,0x81C5,0x81C7,0x81BC,0x81E9, 0x825B,0x825A,0x825C,0x8583,0x8580,0x858F,0x85A7,0x8595, 0x85A0,0x858B,0x85A3,0x857B,0x85A4,0x859A,0x859E,INVALC, /* Block 239, Array index 0x4D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x8577,0x857C,0x8589,0x85A1,0x857A,0x8578,0x8557,0x858E, 0x8596,0x8586,0x858D,0x8599,0x859D,0x8581,0x85A2,0x8582, 0x8588,0x8585,0x8579,0x8576,0x8598,0x8590,0x859F,0x8668, 0x87BE,0x87AA,0x87AD,0x87C5,0x87B0,0x87AC,0x87B9,0x87B5, 0x87BC,0x87AE,0x87C9,0x87C3,0x87C2,0x87CC,0x87B7,0x87AF, 0x87C4,0x87CA,0x87B4,0x87B6,0x87BF,0x87B8,0x87BD,0x87DE, 0x87B2,0x8935,0x8933,0x893C,0x893E,0x8941,0x8952,0x8937, 0x8942,0x89AD,0x89AF,0x89AE,0x89F2,0x89F3,0x8B1E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8B18,0x8B16,0x8B11,0x8B05,0x8B0B,0x8B22,0x8B0F, 0x8B12,0x8B15,0x8B07,0x8B0D,0x8B08,0x8B06,0x8B1C,0x8B13, 0x8B1A,0x8C4F,0x8C70,0x8C72,0x8C71,0x8C6F,0x8C95,0x8C94, 0x8CF9,0x8D6F,0x8E4E,0x8E4D,0x8E53,0x8E50,0x8E4C,0x8E47, 0x8F43,0x8F40,0x9085,0x907E,0x9138,0x919A,0x91A2,0x919B, 0x9199,0x919F,0x91A1,0x919D,0x91A0,0x93A1,0x9383,0x93AF, 0x9364,0x9356,0x9347,0x937C,0x9358,0x935C,0x9376,0x9349, 0x9350,0x9351,0x9360,0x936D,0x938F,0x934C,0x936A,0x9379, 0x9357,0x9355,0x9352,0x934F,0x9371,0x9377,0x937B,0x9361, 0x935E,0x9363,0x9367,0x9380,0x934E,0x9359,0x95C7,0x95C0, 0x95C9,0x95C3,0x95C5,0x95B7,0x96AE,0x96B0,0x96AC,0x9720, 0x971F,0x9718,0x971D,0x9719,0x979A,0x97A1,0x979C,INVALC, /* Block 240, Array index 0x4E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x979E,0x979D,0x97D5,0x97D4,0x97F1,0x9841,0x9844,0x984A, 0x9849,0x9845,0x9843,0x9925,0x992B,0x992C,0x992A,0x9933, 0x9932,0x992F,0x992D,0x9931,0x9930,0x9998,0x99A3,0x99A1, 0x9A02,0x99FA,0x99F4,0x99F7,0x99F9,0x99F8,0x99F6,0x99FB, 0x99FD,0x99FE,0x99FC,0x9A03,0x9ABE,0x9AFE,0x9AFD,0x9B01, 0x9AFC,0x9B48,0x9B9A,0x9BA8,0x9B9E,0x9B9B,0x9BA6,0x9BA1, 0x9BA5,0x9BA4,0x9B86,0x9BA2,0x9BA0,0x9BAF,0x9D33,0x9D41, 0x9D67,0x9D36,0x9D2E,0x9D2F,0x9D31,0x9D38,0x9D30,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9D45,0x9D42,0x9D43,0x9D3E,0x9D37,0x9D40,0x9D3D, 0x7FF5,0x9D2D,0x9E8A,0x9E89,0x9E8D,0x9EB0,0x9EC8,0x9EDA, 0x9EFB,0x9EFF,0x9F24,0x9F23,0x9F22,0x9F54,0x9FA0,0x5131, 0x512D,0x512E,0x5698,0x569C,0x5697,0x569A,0x569D,0x5699, 0x5970,0x5B3C,0x5C69,0x5C6A,0x5DC0,0x5E6D,0x5E6E,0x61D8, 0x61DF,0x61ED,0x61EE,0x61F1,0x61EA,0x61F0,0x61EB,0x61D6, 0x61E9,0x64FF,0x6504,0x64FD,0x64F8,0x6501,0x6503,0x64FC, 0x6594,0x65DB,0x66DA,0x66DB,0x66D8,0x6AC5,0x6AB9,0x6ABD, 0x6AE1,0x6AC6,0x6ABA,0x6AB6,0x6AB7,0x6AC7,0x6AB4,0x6AAD, 0x6B5E,0x6BC9,0x6C0B,0x7007,0x700C,0x700D,0x7001,0x7005, 0x7014,0x700E,0x6FFF,0x7000,0x6FFB,0x7026,0x6FFC,0x6FF7, 0x700A,0x7201,0x71FF,0x71F9,0x7203,0x71FD,0x7376,INVALC, /* Block 241, Array index 0x4F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x74B8,0x74C0,0x74B5,0x74C1,0x74BE,0x74B6,0x74BB,0x74C2, 0x7514,0x7513,0x765C,0x7664,0x7659,0x7650,0x7653,0x7657, 0x765A,0x76A6,0x76BD,0x76EC,0x77C2,0x77BA,0x78FF,0x790C, 0x7913,0x7914,0x7909,0x7910,0x7912,0x7911,0x79AD,0x79AC, 0x7A5F,0x7C1C,0x7C29,0x7C19,0x7C20,0x7C1F,0x7C2D,0x7C1D, 0x7C26,0x7C28,0x7C22,0x7C25,0x7C30,0x7E5C,0x7E50,0x7E56, 0x7E63,0x7E58,0x7E62,0x7E5F,0x7E51,0x7E60,0x7E57,0x7E53, 0x7FB5,0x7FB3,0x7FF7,0x7FF8,0x8075,0x81D1,0x81D2,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x81D0,0x825F,0x825E,0x85B4,0x85C6,0x85C0,0x85C3, 0x85C2,0x85B3,0x85B5,0x85BD,0x85C7,0x85C4,0x85BF,0x85CB, 0x85CE,0x85C8,0x85C5,0x85B1,0x85B6,0x85D2,0x8624,0x85B8, 0x85B7,0x85BE,0x8669,0x87E7,0x87E6,0x87E2,0x87DB,0x87EB, 0x87EA,0x87E5,0x87DF,0x87F3,0x87E4,0x87D4,0x87DC,0x87D3, 0x87ED,0x87D8,0x87E3,0x87A4,0x87D7,0x87D9,0x8801,0x87F4, 0x87E8,0x87DD,0x8953,0x894B,0x894F,0x894C,0x8946,0x8950, 0x8951,0x8949,0x8B2A,0x8B27,0x8B23,0x8B33,0x8B30,0x8B35, 0x8B47,0x8B2F,0x8B3C,0x8B3E,0x8B31,0x8B25,0x8B37,0x8B26, 0x8B36,0x8B2E,0x8B24,0x8B3B,0x8B3D,0x8B3A,0x8C42,0x8C75, 0x8C99,0x8C98,0x8C97,0x8CFE,0x8D04,0x8D02,0x8D00,0x8E5C, 0x8E62,0x8E60,0x8E57,0x8E56,0x8E5E,0x8E65,0x8E67,INVALC, /* Block 242, Array index 0x5000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x8E5B,0x8E5A,0x8E61,0x8E5D,0x8E69,0x8E54,0x8F46,0x8F47, 0x8F48,0x8F4B,0x9128,0x913A,0x913B,0x913E,0x91A8,0x91A5, 0x91A7,0x91AF,0x91AA,0x93B5,0x938C,0x9392,0x93B7,0x939B, 0x939D,0x9389,0x93A7,0x938E,0x93AA,0x939E,0x93A6,0x9395, 0x9388,0x9399,0x939F,0x938D,0x93B1,0x9391,0x93B2,0x93A4, 0x93A8,0x93B4,0x93A3,0x93A5,0x95D2,0x95D3,0x95D1,0x96B3, 0x96D7,0x96DA,0x5DC2,0x96DF,0x96D8,0x96DD,0x9723,0x9722, 0x9725,0x97AC,0x97AE,0x97A8,0x97AB,0x97A4,0x97AA,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x97A2,0x97A5,0x97D7,0x97D9,0x97D6,0x97D8,0x97FA, 0x9850,0x9851,0x9852,0x98B8,0x9941,0x993C,0x993A,0x9A0F, 0x9A0B,0x9A09,0x9A0D,0x9A04,0x9A11,0x9A0A,0x9A05,0x9A07, 0x9A06,0x9AC0,0x9ADC,0x9B08,0x9B04,0x9B05,0x9B29,0x9B35, 0x9B4A,0x9B4C,0x9B4B,0x9BC7,0x9BC6,0x9BC3,0x9BBF,0x9BC1, 0x9BB5,0x9BB8,0x9BD3,0x9BB6,0x9BC4,0x9BB9,0x9BBD,0x9D5C, 0x9D53,0x9D4F,0x9D4A,0x9D5B,0x9D4B,0x9D59,0x9D56,0x9D4C, 0x9D57,0x9D52,0x9D54,0x9D5F,0x9D58,0x9D5A,0x9E8E,0x9E8C, 0x9EDF,0x9F01,0x9F00,0x9F16,0x9F25,0x9F2B,0x9F2A,0x9F29, 0x9F28,0x9F4C,0x9F55,0x5134,0x5135,0x5296,0x52F7,0x53B4, 0x56AB,0x56AD,0x56A6,0x56A7,0x56AA,0x56AC,0x58DA,0x58DD, 0x58DB,0x5912,0x5B3D,0x5B3E,0x5B3F,0x5DC3,0x5E70,INVALC, /* Block 243, Array index 0x5100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5FBF,0x61FB,0x6507,0x6510,0x650D,0x6509,0x650C,0x650E, 0x6584,0x65DE,0x65DD,0x66DE,0x6AE7,0x6AE0,0x6ACC,0x6AD1, 0x6AD9,0x6ACB,0x6ADF,0x6ADC,0x6AD0,0x6AEB,0x6ACF,0x6ACD, 0x6ADE,0x6B60,0x6BB0,0x6C0C,0x7019,0x7027,0x7020,0x7016, 0x702B,0x7021,0x7022,0x7023,0x7029,0x7017,0x7024,0x701C, 0x702A,0x720C,0x720A,0x7207,0x7202,0x7205,0x72A5,0x72A6, 0x72A4,0x72A3,0x72A1,0x74CB,0x74C5,0x74B7,0x74C3,0x7516, 0x7660,0x77C9,0x77CA,0x77C4,0x77F1,0x791D,0x791B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7921,0x791C,0x7917,0x791E,0x79B0,0x7A67,0x7A68, 0x7C33,0x7C3C,0x7C39,0x7C2C,0x7C3B,0x7CEC,0x7CEA,0x7E76, 0x7E75,0x7E78,0x7E70,0x7E77,0x7E6F,0x7E7A,0x7E72,0x7E74, 0x7E68,0x7F4B,0x7F4A,0x7F83,0x7F86,0x7FB7,0x7FFD,0x7FFE, 0x8078,0x81D7,0x81D5,0x8264,0x8261,0x8263,0x85EB,0x85F1, 0x85ED,0x85D9,0x85E1,0x85E8,0x85DA,0x85D7,0x85EC,0x85F2, 0x85F8,0x85D8,0x85DF,0x85E3,0x85DC,0x85D1,0x85F0,0x85E6, 0x85EF,0x85DE,0x85E2,0x8800,0x87FA,0x8803,0x87F6,0x87F7, 0x8809,0x880C,0x880B,0x8806,0x87FC,0x8808,0x87FF,0x880A, 0x8802,0x8962,0x895A,0x895B,0x8957,0x8961,0x895C,0x8958, 0x895D,0x8959,0x8988,0x89B7,0x89B6,0x89F6,0x8B50,0x8B48, 0x8B4A,0x8B40,0x8B53,0x8B56,0x8B54,0x8B4B,0x8B55,INVALC, /* Block 244, Array index 0x5200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x8B51,0x8B42,0x8B52,0x8B57,0x8C43,0x8C77,0x8C76,0x8C9A, 0x8D06,0x8D07,0x8D09,0x8DAC,0x8DAA,0x8DAD,0x8DAB,0x8E6D, 0x8E78,0x8E73,0x8E6A,0x8E6F,0x8E7B,0x8EC2,0x8F52,0x8F51, 0x8F4F,0x8F50,0x8F53,0x8FB4,0x9140,0x913F,0x91B0,0x91AD, 0x93DE,0x93C7,0x93CF,0x93C2,0x93DA,0x93D0,0x93F9,0x93EC, 0x93CC,0x93D9,0x93A9,0x93E6,0x93CA,0x93D4,0x93EE,0x93E3, 0x93D5,0x93C4,0x93CE,0x93C0,0x93D2,0x93E7,0x957D,0x95DA, 0x95DB,0x96E1,0x9729,0x972B,0x972C,0x9728,0x9726,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x97B3,0x97B7,0x97B6,0x97DD,0x97DE,0x97DF,0x985C, 0x9859,0x985D,0x9857,0x98BF,0x98BD,0x98BB,0x98BE,0x9948, 0x9947,0x9943,0x99A6,0x99A7,0x9A1A,0x9A15,0x9A25,0x9A1D, 0x9A24,0x9A1B,0x9A22,0x9A20,0x9A27,0x9A23,0x9A1E,0x9A1C, 0x9A14,0x9AC2,0x9B0B,0x9B0A,0x9B0E,0x9B0C,0x9B37,0x9BEA, 0x9BEB,0x9BE0,0x9BDE,0x9BE4,0x9BE6,0x9BE2,0x9BF0,0x9BD4, 0x9BD7,0x9BEC,0x9BDC,0x9BD9,0x9BE5,0x9BD5,0x9BE1,0x9BDA, 0x9D77,0x9D81,0x9D8A,0x9D84,0x9D88,0x9D71,0x9D80,0x9D78, 0x9D86,0x9D8B,0x9D8C,0x9D7D,0x9D6B,0x9D74,0x9D75,0x9D70, 0x9D69,0x9D85,0x9D73,0x9D7B,0x9D82,0x9D6F,0x9D79,0x9D7F, 0x9D87,0x9D68,0x9E94,0x9E91,0x9EC0,0x9EFC,0x9F2D,0x9F40, 0x9F41,0x9F4D,0x9F56,0x9F57,0x9F58,0x5337,0x56B2,INVALC, /* Block 245, Array index 0x5300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x56B5,0x56B3,0x58E3,0x5B45,0x5DC6,0x5DC7,0x5EEE,0x5EEF, 0x5FC0,0x5FC1,0x61F9,0x6517,0x6516,0x6515,0x6513,0x65DF, 0x66E8,0x66E3,0x66E4,0x6AF3,0x6AF0,0x6AEA,0x6AE8,0x6AF9, 0x6AF1,0x6AEE,0x6AEF,0x703C,0x7035,0x702F,0x7037,0x7034, 0x7031,0x7042,0x7038,0x703F,0x703A,0x7039,0x7040,0x703B, 0x7033,0x7041,0x7213,0x7214,0x72A8,0x737D,0x737C,0x74BA, 0x76AB,0x76AA,0x76BE,0x76ED,0x77CC,0x77CE,0x77CF,0x77CD, 0x77F2,0x7925,0x7923,0x7927,0x7928,0x7924,0x7929,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x79B2,0x7A6E,0x7A6C,0x7A6D,0x7AF7,0x7C49,0x7C48, 0x7C4A,0x7C47,0x7C45,0x7CEE,0x7E7B,0x7E7E,0x7E81,0x7E80, 0x7FBA,0x7FFF,0x8079,0x81DB,0x81D9,0x820B,0x8268,0x8269, 0x8622,0x85FF,0x8601,0x85FE,0x861B,0x8600,0x85F6,0x8604, 0x8609,0x8605,0x860C,0x85FD,0x8819,0x8810,0x8811,0x8817, 0x8813,0x8816,0x8963,0x8966,0x89B9,0x89F7,0x8B60,0x8B6A, 0x8B5D,0x8B68,0x8B63,0x8B65,0x8B67,0x8B6D,0x8DAE,0x8E86, 0x8E88,0x8E84,0x8F59,0x8F56,0x8F57,0x8F55,0x8F58,0x8F5A, 0x908D,0x9143,0x9141,0x91B7,0x91B5,0x91B2,0x91B3,0x940B, 0x9413,0x93FB,0x9420,0x940F,0x9414,0x93FE,0x9415,0x9410, 0x9428,0x9419,0x940D,0x93F5,0x9400,0x93F7,0x9407,0x940E, 0x9416,0x9412,0x93FA,0x9409,0x93F8,0x940A,0x93FF,INVALC, /* Block 246, Array index 0x5400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x93FC,0x940C,0x93F6,0x9411,0x9406,0x95DE,0x95E0,0x95DF, 0x972E,0x972F,0x97B9,0x97BB,0x97FD,0x97FE,0x9860,0x9862, 0x9863,0x985F,0x98C1,0x98C2,0x9950,0x994E,0x9959,0x994C, 0x994B,0x9953,0x9A32,0x9A34,0x9A31,0x9A2C,0x9A2A,0x9A36, 0x9A29,0x9A2E,0x9A38,0x9A2D,0x9AC7,0x9ACA,0x9AC6,0x9B10, 0x9B12,0x9B11,0x9C0B,0x9C08,0x9BF7,0x9C05,0x9C12,0x9BF8, 0x9C40,0x9C07,0x9C0E,0x9C06,0x9C17,0x9C14,0x9C09,0x9D9F, 0x9D99,0x9DA4,0x9D9D,0x9D92,0x9D98,0x9D90,0x9D9B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9DA0,0x9D94,0x9D9C,0x9DAA,0x9D97,0x9DA1,0x9D9A, 0x9DA2,0x9DA8,0x9D9E,0x9DA3,0x9DBF,0x9DA9,0x9D96,0x9DA6, 0x9DA7,0x9E99,0x9E9B,0x9E9A,0x9EE5,0x9EE4,0x9EE7,0x9EE6, 0x9F30,0x9F2E,0x9F5B,0x9F60,0x9F5E,0x9F5D,0x9F59,0x9F91, 0x513A,0x5139,0x5298,0x5297,0x56C3,0x56BD,0x56BE,0x5B48, 0x5B47,0x5DCB,0x5DCF,0x5EF1,0x61FD,0x651B,0x6B02,0x6AFC, 0x6B03,0x6AF8,0x6B00,0x7043,0x7044,0x704A,0x7048,0x7049, 0x7045,0x7046,0x721D,0x721A,0x7219,0x737E,0x7517,0x766A, 0x77D0,0x792D,0x7931,0x792F,0x7C54,0x7C53,0x7CF2,0x7E8A, 0x7E87,0x7E88,0x7E8B,0x7E86,0x7E8D,0x7F4D,0x7FBB,0x8030, 0x81DD,0x8618,0x862A,0x8626,0x861F,0x8623,0x861C,0x8619, 0x8627,0x862E,0x8621,0x8620,0x8629,0x861E,0x8625,INVALC, /* Block 247, Array index 0x5500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x8829,0x881D,0x881B,0x8820,0x8824,0x881C,0x882B,0x884A, 0x896D,0x8969,0x896E,0x896B,0x89FA,0x8B79,0x8B78,0x8B45, 0x8B7A,0x8B7B,0x8D10,0x8D14,0x8DAF,0x8E8E,0x8E8C,0x8F5E, 0x8F5B,0x8F5D,0x9146,0x9144,0x9145,0x91B9,0x943F,0x943B, 0x9436,0x9429,0x943D,0x943C,0x9430,0x9439,0x942A,0x9437, 0x942C,0x9440,0x9431,0x95E5,0x95E4,0x95E3,0x9735,0x973A, 0x97BF,0x97E1,0x9864,0x98C9,0x98C6,0x98C0,0x9958,0x9956, 0x9A39,0x9A3D,0x9A46,0x9A44,0x9A42,0x9A41,0x9A3A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9A3F,0x9ACD,0x9B15,0x9B17,0x9B18,0x9B16,0x9B3A, 0x9B52,0x9C2B,0x9C1D,0x9C1C,0x9C2C,0x9C23,0x9C28,0x9C29, 0x9C24,0x9C21,0x9DB7,0x9DB6,0x9DBC,0x9DC1,0x9DC7,0x9DCA, 0x9DCF,0x9DBE,0x9DC5,0x9DC3,0x9DBB,0x9DB5,0x9DCE,0x9DB9, 0x9DBA,0x9DAC,0x9DC8,0x9DB1,0x9DAD,0x9DCC,0x9DB3,0x9DCD, 0x9DB2,0x9E7A,0x9E9C,0x9EEB,0x9EEE,0x9EED,0x9F1B,0x9F18, 0x9F1A,0x9F31,0x9F4E,0x9F65,0x9F64,0x9F92,0x4EB9,0x56C6, 0x56C5,0x56CB,0x5971,0x5B4B,0x5B4C,0x5DD5,0x5DD1,0x5EF2, 0x6521,0x6520,0x6526,0x6522,0x6B0B,0x6B08,0x6B09,0x6C0D, 0x7055,0x7056,0x7057,0x7052,0x721E,0x721F,0x72A9,0x737F, 0x74D8,0x74D5,0x74D9,0x74D7,0x766D,0x76AD,0x7935,0x79B4, 0x7A70,0x7A71,0x7C57,0x7C5C,0x7C59,0x7C5B,0x7C5A,INVALC, /* Block 248, Array index 0x5600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7CF4,0x7CF1,0x7E91,0x7F4F,0x7F87,0x81DE,0x826B,0x8634, 0x8635,0x8633,0x862C,0x8632,0x8636,0x882C,0x8828,0x8826, 0x882A,0x8825,0x8971,0x89BF,0x89BE,0x89FB,0x8B7E,0x8B84, 0x8B82,0x8B86,0x8B85,0x8B7F,0x8D15,0x8E95,0x8E94,0x8E9A, 0x8E92,0x8E90,0x8E96,0x8E97,0x8F60,0x8F62,0x9147,0x944C, 0x9450,0x944A,0x944B,0x944F,0x9447,0x9445,0x9448,0x9449, 0x9446,0x973F,0x97E3,0x986A,0x9869,0x98CB,0x9954,0x995B, 0x9A4E,0x9A53,0x9A54,0x9A4C,0x9A4F,0x9A48,0x9A4A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9A49,0x9A52,0x9A50,0x9AD0,0x9B19,0x9B2B,0x9B3B, 0x9B56,0x9B55,0x9C46,0x9C48,0x9C3F,0x9C44,0x9C39,0x9C33, 0x9C41,0x9C3C,0x9C37,0x9C34,0x9C32,0x9C3D,0x9C36,0x9DDB, 0x9DD2,0x9DDE,0x9DDA,0x9DCB,0x9DD0,0x9DDC,0x9DD1,0x9DDF, 0x9DE9,0x9DD9,0x9DD8,0x9DD6,0x9DF5,0x9DD5,0x9DDD,0x9EB6, 0x9EF0,0x9F35,0x9F33,0x9F32,0x9F42,0x9F6B,0x9F95,0x9FA2, 0x513D,0x5299,0x58E8,0x58E7,0x5972,0x5B4D,0x5DD8,0x882F, 0x5F4F,0x6201,0x6203,0x6204,0x6529,0x6525,0x6596,0x66EB, 0x6B11,0x6B12,0x6B0F,0x6BCA,0x705B,0x705A,0x7222,0x7382, 0x7381,0x7383,0x7670,0x77D4,0x7C67,0x7C66,0x7E95,0x826C, 0x863A,0x8640,0x8639,0x863C,0x8631,0x863B,0x863E,0x8830, 0x8832,0x882E,0x8833,0x8976,0x8974,0x8973,0x89FE,INVALC, /* Block 249, Array index 0x5700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x8B8C,0x8B8E,0x8B8B,0x8B88,0x8C45,0x8D19,0x8E98,0x8F64, 0x8F63,0x91BC,0x9462,0x9455,0x945D,0x9457,0x945E,0x97C4, 0x97C5,0x9800,0x9A56,0x9A59,0x9B1E,0x9B1F,0x9B20,0x9C52, 0x9C58,0x9C50,0x9C4A,0x9C4D,0x9C4B,0x9C55,0x9C59,0x9C4C, 0x9C4E,0x9DFB,0x9DF7,0x9DEF,0x9DE3,0x9DEB,0x9DF8,0x9DE4, 0x9DF6,0x9DE1,0x9DEE,0x9DE6,0x9DF2,0x9DF0,0x9DE2,0x9DEC, 0x9DF4,0x9DF3,0x9DE8,0x9DED,0x9EC2,0x9ED0,0x9EF2,0x9EF3, 0x9F06,0x9F1C,0x9F38,0x9F37,0x9F36,0x9F43,0x9F4F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9F71,0x9F70,0x9F6E,0x9F6F,0x56D3,0x56CD,0x5B4E, 0x5C6D,0x652D,0x66ED,0x66EE,0x6B13,0x705F,0x7061,0x705D, 0x7060,0x7223,0x74DB,0x74E5,0x77D5,0x7938,0x79B7,0x79B6, 0x7C6A,0x7E97,0x7F89,0x826D,0x8643,0x8838,0x8837,0x8835, 0x884B,0x8B94,0x8B95,0x8E9E,0x8E9F,0x8EA0,0x8E9D,0x91BE, 0x91BD,0x91C2,0x946B,0x9468,0x9469,0x96E5,0x9746,0x9743, 0x9747,0x97C7,0x97E5,0x9A5E,0x9AD5,0x9B59,0x9C63,0x9C67, 0x9C66,0x9C62,0x9C5E,0x9C60,0x9E02,0x9DFE,0x9E07,0x9E03, 0x9E06,0x9E05,0x9E00,0x9E01,0x9E09,0x9DFF,0x9DFD,0x9E04, 0x9EA0,0x9F1E,0x9F46,0x9F74,0x9F75,0x9F76,0x56D4,0x652E, 0x65B8,0x6B18,0x6B19,0x6B17,0x6B1A,0x7062,0x7226,0x72AA, 0x77D8,0x77D9,0x7939,0x7C69,0x7C6B,0x7CF6,0x7E9A,INVALC, /* Block 250, Array index 0x5800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7E98,0x7E9B,0x7E99,0x81E0,0x81E1,0x8646,0x8647,0x8648, 0x8979,0x897A,0x897C,0x897B,0x89FF,0x8B98,0x8B99,0x8EA5, 0x8EA4,0x8EA3,0x946E,0x946D,0x946F,0x9471,0x9473,0x9749, 0x9872,0x995F,0x9C68,0x9C6E,0x9C6D,0x9E0B,0x9E0D,0x9E10, 0x9E0F,0x9E12,0x9E11,0x9EA1,0x9EF5,0x9F09,0x9F47,0x9F78, 0x9F7B,0x9F7A,0x9F79,0x571E,0x7066,0x7C6F,0x883C,0x8DB2, 0x8EA6,0x91C3,0x9474,0x9478,0x9476,0x9475,0x9A60,0x9C74, 0x9C73,0x9C71,0x9C75,0x9E14,0x9E13,0x9EF6,0x9F0A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9FA4,0x7068,0x7065,0x7CF7,0x866A,0x883E,0x883D, 0x883F,0x8B9E,0x8C9C,0x8EA9,0x8EC9,0x974B,0x9873,0x9874, 0x98CC,0x9961,0x99AB,0x9A64,0x9A66,0x9A67,0x9B24,0x9E15, 0x9E17,0x9F48,0x6207,0x6B1E,0x7227,0x864C,0x8EA8,0x9482, 0x9480,0x9481,0x9A69,0x9A68,0x9B2E,0x9E19,0x7229,0x864B, 0x8B9F,0x9483,0x9C79,0x9EB7,0x7675,0x9A6B,0x9C7A,0x9E1D, 0x7069,0x706A,0x9EA4,0x9F7E,0x9F49,0x9F98,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, }; #endif /* ICONV_TO_UCS_CCS_BIG5 && !defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * 16-bit big5 -> UCS size-optimized table (28482 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_BIG5) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t to_ucs_size_big5[] = { 0x00B0, /* Ranges number */ 0x0000, /* Unranged codes number */ 0x37A1, /* First unranged code index */ /* Ranges list: first code, last Code, array index. */ /* Array index: 0x0003 */ 0xA140, 0xA17E, 0x0213, /* Array index: 0x0006 */ 0xA1A1, 0xA1FE, 0x0252, /* Array index: 0x0009 */ 0xA240, 0xA27E, 0x02B0, /* Array index: 0x000C */ 0xA2A1, 0xA2FE, 0x02EF, /* Array index: 0x000F */ 0xA340, 0xA37E, 0x034D, /* Array index: 0x0012 */ 0xA3A1, 0xA3BF, 0x038C, /* Array index: 0x0015 */ 0xA440, 0xA47E, 0x03AB, /* Array index: 0x0018 */ 0xA4A1, 0xA4FE, 0x03EA, /* Array index: 0x001B */ 0xA540, 0xA57E, 0x0448, /* Array index: 0x001E */ 0xA5A1, 0xA5FE, 0x0487, /* Array index: 0x0021 */ 0xA640, 0xA67E, 0x04E5, /* Array index: 0x0024 */ 0xA6A1, 0xA6FE, 0x0524, /* Array index: 0x0027 */ 0xA740, 0xA77E, 0x0582, /* Array index: 0x002A */ 0xA7A1, 0xA7FE, 0x05C1, /* Array index: 0x002D */ 0xA840, 0xA87E, 0x061F, /* Array index: 0x0030 */ 0xA8A1, 0xA8FE, 0x065E, /* Array index: 0x0033 */ 0xA940, 0xA97E, 0x06BC, /* Array index: 0x0036 */ 0xA9A1, 0xA9FE, 0x06FB, /* Array index: 0x0039 */ 0xAA40, 0xAA7E, 0x0759, /* Array index: 0x003C */ 0xAAA1, 0xAAFE, 0x0798, /* Array index: 0x003F */ 0xAB40, 0xAB7E, 0x07F6, /* Array index: 0x0042 */ 0xABA1, 0xABFE, 0x0835, /* Array index: 0x0045 */ 0xAC40, 0xAC7E, 0x0893, /* Array index: 0x0048 */ 0xACA1, 0xACFE, 0x08D2, /* Array index: 0x004B */ 0xAD40, 0xAD7E, 0x0930, /* Array index: 0x004E */ 0xADA1, 0xADFE, 0x096F, /* Array index: 0x0051 */ 0xAE40, 0xAE7E, 0x09CD, /* Array index: 0x0054 */ 0xAEA1, 0xAEFE, 0x0A0C, /* Array index: 0x0057 */ 0xAF40, 0xAF7E, 0x0A6A, /* Array index: 0x005A */ 0xAFA1, 0xAFFE, 0x0AA9, /* Array index: 0x005D */ 0xB040, 0xB07E, 0x0B07, /* Array index: 0x0060 */ 0xB0A1, 0xB0FE, 0x0B46, /* Array index: 0x0063 */ 0xB140, 0xB17E, 0x0BA4, /* Array index: 0x0066 */ 0xB1A1, 0xB1FE, 0x0BE3, /* Array index: 0x0069 */ 0xB240, 0xB27E, 0x0C41, /* Array index: 0x006C */ 0xB2A1, 0xB2FE, 0x0C80, /* Array index: 0x006F */ 0xB340, 0xB37E, 0x0CDE, /* Array index: 0x0072 */ 0xB3A1, 0xB3FE, 0x0D1D, /* Array index: 0x0075 */ 0xB440, 0xB47E, 0x0D7B, /* Array index: 0x0078 */ 0xB4A1, 0xB4FE, 0x0DBA, /* Array index: 0x007B */ 0xB540, 0xB57E, 0x0E18, /* Array index: 0x007E */ 0xB5A1, 0xB5FE, 0x0E57, /* Array index: 0x0081 */ 0xB640, 0xB67E, 0x0EB5, /* Array index: 0x0084 */ 0xB6A1, 0xB6FE, 0x0EF4, /* Array index: 0x0087 */ 0xB740, 0xB77E, 0x0F52, /* Array index: 0x008A */ 0xB7A1, 0xB7FE, 0x0F91, /* Array index: 0x008D */ 0xB840, 0xB87E, 0x0FEF, /* Array index: 0x0090 */ 0xB8A1, 0xB8FE, 0x102E, /* Array index: 0x0093 */ 0xB940, 0xB97E, 0x108C, /* Array index: 0x0096 */ 0xB9A1, 0xB9FE, 0x10CB, /* Array index: 0x0099 */ 0xBA40, 0xBA7E, 0x1129, /* Array index: 0x009C */ 0xBAA1, 0xBAFE, 0x1168, /* Array index: 0x009F */ 0xBB40, 0xBB7E, 0x11C6, /* Array index: 0x00A2 */ 0xBBA1, 0xBBFE, 0x1205, /* Array index: 0x00A5 */ 0xBC40, 0xBC7E, 0x1263, /* Array index: 0x00A8 */ 0xBCA1, 0xBCFE, 0x12A2, /* Array index: 0x00AB */ 0xBD40, 0xBD7E, 0x1300, /* Array index: 0x00AE */ 0xBDA1, 0xBDFE, 0x133F, /* Array index: 0x00B1 */ 0xBE40, 0xBE7E, 0x139D, /* Array index: 0x00B4 */ 0xBEA1, 0xBEFE, 0x13DC, /* Array index: 0x00B7 */ 0xBF40, 0xBF7E, 0x143A, /* Array index: 0x00BA */ 0xBFA1, 0xBFFE, 0x1479, /* Array index: 0x00BD */ 0xC040, 0xC07E, 0x14D7, /* Array index: 0x00C0 */ 0xC0A1, 0xC0FE, 0x1516, /* Array index: 0x00C3 */ 0xC140, 0xC17E, 0x1574, /* Array index: 0x00C6 */ 0xC1A1, 0xC1FE, 0x15B3, /* Array index: 0x00C9 */ 0xC240, 0xC27E, 0x1611, /* Array index: 0x00CC */ 0xC2A1, 0xC2FE, 0x1650, /* Array index: 0x00CF */ 0xC340, 0xC37E, 0x16AE, /* Array index: 0x00D2 */ 0xC3A1, 0xC3FE, 0x16ED, /* Array index: 0x00D5 */ 0xC440, 0xC47E, 0x174B, /* Array index: 0x00D8 */ 0xC4A1, 0xC4FE, 0x178A, /* Array index: 0x00DB */ 0xC540, 0xC57E, 0x17E8, /* Array index: 0x00DE */ 0xC5A1, 0xC5FE, 0x1827, /* Array index: 0x00E1 */ 0xC640, 0xC67E, 0x1885, /* Array index: 0x00E4 */ 0xC6A1, 0xC6FE, 0x18C4, /* Array index: 0x00E7 */ 0xC740, 0xC77E, 0x1922, /* Array index: 0x00EA */ 0xC7A1, 0xC7FC, 0x1961, /* Array index: 0x00ED */ 0xC940, 0xC97E, 0x19BD, /* Array index: 0x00F0 */ 0xC9A1, 0xC9FE, 0x19FC, /* Array index: 0x00F3 */ 0xCA40, 0xCA7E, 0x1A5A, /* Array index: 0x00F6 */ 0xCAA1, 0xCAFE, 0x1A99, /* Array index: 0x00F9 */ 0xCB40, 0xCB7E, 0x1AF7, /* Array index: 0x00FC */ 0xCBA1, 0xCBFE, 0x1B36, /* Array index: 0x00FF */ 0xCC40, 0xCC7E, 0x1B94, /* Array index: 0x0102 */ 0xCCA1, 0xCCFE, 0x1BD3, /* Array index: 0x0105 */ 0xCD40, 0xCD7E, 0x1C31, /* Array index: 0x0108 */ 0xCDA1, 0xCDFE, 0x1C70, /* Array index: 0x010B */ 0xCE40, 0xCE7E, 0x1CCE, /* Array index: 0x010E */ 0xCEA1, 0xCEFE, 0x1D0D, /* Array index: 0x0111 */ 0xCF40, 0xCF7E, 0x1D6B, /* Array index: 0x0114 */ 0xCFA1, 0xCFFE, 0x1DAA, /* Array index: 0x0117 */ 0xD040, 0xD07E, 0x1E08, /* Array index: 0x011A */ 0xD0A1, 0xD0FE, 0x1E47, /* Array index: 0x011D */ 0xD140, 0xD17E, 0x1EA5, /* Array index: 0x0120 */ 0xD1A1, 0xD1FE, 0x1EE4, /* Array index: 0x0123 */ 0xD240, 0xD27E, 0x1F42, /* Array index: 0x0126 */ 0xD2A1, 0xD2FE, 0x1F81, /* Array index: 0x0129 */ 0xD340, 0xD37E, 0x1FDF, /* Array index: 0x012C */ 0xD3A1, 0xD3FE, 0x201E, /* Array index: 0x012F */ 0xD440, 0xD47E, 0x207C, /* Array index: 0x0132 */ 0xD4A1, 0xD4FE, 0x20BB, /* Array index: 0x0135 */ 0xD540, 0xD57E, 0x2119, /* Array index: 0x0138 */ 0xD5A1, 0xD5FE, 0x2158, /* Array index: 0x013B */ 0xD640, 0xD67E, 0x21B6, /* Array index: 0x013E */ 0xD6A1, 0xD6FE, 0x21F5, /* Array index: 0x0141 */ 0xD740, 0xD77E, 0x2253, /* Array index: 0x0144 */ 0xD7A1, 0xD7FE, 0x2292, /* Array index: 0x0147 */ 0xD840, 0xD87E, 0x22F0, /* Array index: 0x014A */ 0xD8A1, 0xD8FE, 0x232F, /* Array index: 0x014D */ 0xD940, 0xD97E, 0x238D, /* Array index: 0x0150 */ 0xD9A1, 0xD9FE, 0x23CC, /* Array index: 0x0153 */ 0xDA40, 0xDA7E, 0x242A, /* Array index: 0x0156 */ 0xDAA1, 0xDAFE, 0x2469, /* Array index: 0x0159 */ 0xDB40, 0xDB7E, 0x24C7, /* Array index: 0x015C */ 0xDBA1, 0xDBFE, 0x2506, /* Array index: 0x015F */ 0xDC40, 0xDC7E, 0x2564, /* Array index: 0x0162 */ 0xDCA1, 0xDCFE, 0x25A3, /* Array index: 0x0165 */ 0xDD40, 0xDD7E, 0x2601, /* Array index: 0x0168 */ 0xDDA1, 0xDDFE, 0x2640, /* Array index: 0x016B */ 0xDE40, 0xDE7E, 0x269E, /* Array index: 0x016E */ 0xDEA1, 0xDEFE, 0x26DD, /* Array index: 0x0171 */ 0xDF40, 0xDF7E, 0x273B, /* Array index: 0x0174 */ 0xDFA1, 0xDFFE, 0x277A, /* Array index: 0x0177 */ 0xE040, 0xE07E, 0x27D8, /* Array index: 0x017A */ 0xE0A1, 0xE0FE, 0x2817, /* Array index: 0x017D */ 0xE140, 0xE17E, 0x2875, /* Array index: 0x0180 */ 0xE1A1, 0xE1FE, 0x28B4, /* Array index: 0x0183 */ 0xE240, 0xE27E, 0x2912, /* Array index: 0x0186 */ 0xE2A1, 0xE2FE, 0x2951, /* Array index: 0x0189 */ 0xE340, 0xE37E, 0x29AF, /* Array index: 0x018C */ 0xE3A1, 0xE3FE, 0x29EE, /* Array index: 0x018F */ 0xE440, 0xE47E, 0x2A4C, /* Array index: 0x0192 */ 0xE4A1, 0xE4FE, 0x2A8B, /* Array index: 0x0195 */ 0xE540, 0xE57E, 0x2AE9, /* Array index: 0x0198 */ 0xE5A1, 0xE5FE, 0x2B28, /* Array index: 0x019B */ 0xE640, 0xE67E, 0x2B86, /* Array index: 0x019E */ 0xE6A1, 0xE6FE, 0x2BC5, /* Array index: 0x01A1 */ 0xE740, 0xE77E, 0x2C23, /* Array index: 0x01A4 */ 0xE7A1, 0xE7FE, 0x2C62, /* Array index: 0x01A7 */ 0xE840, 0xE87E, 0x2CC0, /* Array index: 0x01AA */ 0xE8A1, 0xE8FE, 0x2CFF, /* Array index: 0x01AD */ 0xE940, 0xE97E, 0x2D5D, /* Array index: 0x01B0 */ 0xE9A1, 0xE9FE, 0x2D9C, /* Array index: 0x01B3 */ 0xEA40, 0xEA7E, 0x2DFA, /* Array index: 0x01B6 */ 0xEAA1, 0xEAFE, 0x2E39, /* Array index: 0x01B9 */ 0xEB40, 0xEB7E, 0x2E97, /* Array index: 0x01BC */ 0xEBA1, 0xEBFE, 0x2ED6, /* Array index: 0x01BF */ 0xEC40, 0xEC7E, 0x2F34, /* Array index: 0x01C2 */ 0xECA1, 0xECFE, 0x2F73, /* Array index: 0x01C5 */ 0xED40, 0xED7E, 0x2FD1, /* Array index: 0x01C8 */ 0xEDA1, 0xEDFE, 0x3010, /* Array index: 0x01CB */ 0xEE40, 0xEE7E, 0x306E, /* Array index: 0x01CE */ 0xEEA1, 0xEEFE, 0x30AD, /* Array index: 0x01D1 */ 0xEF40, 0xEF7E, 0x310B, /* Array index: 0x01D4 */ 0xEFA1, 0xEFFE, 0x314A, /* Array index: 0x01D7 */ 0xF040, 0xF07E, 0x31A8, /* Array index: 0x01DA */ 0xF0A1, 0xF0FE, 0x31E7, /* Array index: 0x01DD */ 0xF140, 0xF17E, 0x3245, /* Array index: 0x01E0 */ 0xF1A1, 0xF1FE, 0x3284, /* Array index: 0x01E3 */ 0xF240, 0xF27E, 0x32E2, /* Array index: 0x01E6 */ 0xF2A1, 0xF2FE, 0x3321, /* Array index: 0x01E9 */ 0xF340, 0xF37E, 0x337F, /* Array index: 0x01EC */ 0xF3A1, 0xF3FE, 0x33BE, /* Array index: 0x01EF */ 0xF440, 0xF47E, 0x341C, /* Array index: 0x01F2 */ 0xF4A1, 0xF4FE, 0x345B, /* Array index: 0x01F5 */ 0xF540, 0xF57E, 0x34B9, /* Array index: 0x01F8 */ 0xF5A1, 0xF5FE, 0x34F8, /* Array index: 0x01FB */ 0xF640, 0xF67E, 0x3556, /* Array index: 0x01FE */ 0xF6A1, 0xF6FE, 0x3595, /* Array index: 0x0201 */ 0xF740, 0xF77E, 0x35F3, /* Array index: 0x0204 */ 0xF7A1, 0xF7FE, 0x3632, /* Array index: 0x0207 */ 0xF840, 0xF87E, 0x3690, /* Array index: 0x020A */ 0xF8A1, 0xF8FE, 0x36CF, /* Array index: 0x020D */ 0xF940, 0xF97E, 0x372D, /* Array index: 0x0210 */ 0xF9A1, 0xF9D5, 0x376C, /* Ranges content */ /* Range 0xA140 - 0xA17E, array index: 0x0213 */ 0x3000,0xFF0C,0x3001,0x3002,0xFF0E,0x2022,0xFF1B,0xFF1A, 0xFF1F,0xFF01,0xFE30,0x2026,0x2025,0xFE50,0xFF64,0xFE52, 0x00B7,0xFE54,0xFE55,0xFE56,0xFE57,0xFF5C,0x2013,0xFE31, 0x2014,0xFE33,0xFFFD,0xFE34,0xFE4F,0xFF08,0xFF09,0xFE35, 0xFE36,0xFF5B,0xFF5D,0xFE37,0xFE38,0x3014,0x3015,0xFE39, 0xFE3A,0x3010,0x3011,0xFE3B,0xFE3C,0x300A,0x300B,0xFE3D, 0xFE3E,0x3008,0x3009,0xFE3F,0xFE40,0x300C,0x300D,0xFE41, 0xFE42,0x300E,0x300F,0xFE43,0xFE44,0xFE59,0xFE5A, /* Range 0xA1A1 - 0xA1FE, array index: 0x0252 */ 0xFE5B,0xFE5C,0xFE5D,0xFE5E,0x2018,0x2019,0x201C,0x201D, 0x301D,0x301E,0x2035,0x2032,0xFF03,0xFF06,0xFF0A,0x203B, 0x00A7,0x3003,0x25CB,0x25CF,0x25B3,0x25B2,0x25CE,0x2606, 0x2605,0x25C7,0x25C6,0x25A1,0x25A0,0x25BD,0x25BC,0x32A3, 0x2105,0x203E,0xFFFD,0xFF3F,0xFFFD,0xFE49,0xFE4A,0xFE4D, 0xFE4E,0xFE4B,0xFE4C,0xFE5F,0xFE60,0xFE61,0xFF0B,0xFF0D, 0x00D7,0x00F7,0x00B1,0x221A,0xFF1C,0xFF1E,0xFF1D,0x2266, 0x2267,0x2260,0x221E,0x2252,0x2261,0xFE62,0xFE63,0xFE64, 0xFE65,0xFE66,0x223C,0x2229,0x222A,0x22A5,0x2220,0x221F, 0x22BF,0x33D2,0x33D1,0x222B,0x222E,0x2235,0x2234,0x2640, 0x2642,0x2641,0x2609,0x2191,0x2193,0x2190,0x2192,0x2196, 0x2197,0x2199,0x2198,0x2225,0x2223,0xFFFD, /* Range 0xA240 - 0xA27E, array index: 0x02B0 */ 0xFFFD,0xFF0F,0xFF3C,0xFF04,0x00A5,0x3012,0x00A2,0x00A3, 0xFF05,0xFF20,0x2103,0x2109,0xFE69,0xFE6A,0xFE6B,0x33D5, 0x339C,0x339D,0x339E,0x33CE,0x33A1,0x338E,0x338F,0x33C4, 0x00B0,0x5159,0x515B,0x515E,0x515D,0x5161,0x5163,0x55E7, 0x74E9,0x7CCE,0x2581,0x2582,0x2583,0x2584,0x2585,0x2586, 0x2587,0x2588,0x258F,0x258E,0x258D,0x258C,0x258B,0x258A, 0x2589,0x253C,0x2534,0x252C,0x2524,0x251C,0x2594,0x2500, 0x2502,0x2595,0x250C,0x2510,0x2514,0x2518,0x256D, /* Range 0xA2A1 - 0xA2FE, array index: 0x02EF */ 0x256E,0x2570,0x256F,0x2550,0x255E,0x256A,0x2561,0x25E2, 0x25E3,0x25E5,0x25E4,0x2571,0x2572,0x2573,0xFF10,0xFF11, 0xFF12,0xFF13,0xFF14,0xFF15,0xFF16,0xFF17,0xFF18,0xFF19, 0x2160,0x2161,0x2162,0x2163,0x2164,0x2165,0x2166,0x2167, 0x2168,0x2169,0x3021,0x3022,0x3023,0x3024,0x3025,0x3026, 0x3027,0x3028,0x3029,0xFFFD,0x5344,0xFFFD,0xFF21,0xFF22, 0xFF23,0xFF24,0xFF25,0xFF26,0xFF27,0xFF28,0xFF29,0xFF2A, 0xFF2B,0xFF2C,0xFF2D,0xFF2E,0xFF2F,0xFF30,0xFF31,0xFF32, 0xFF33,0xFF34,0xFF35,0xFF36,0xFF37,0xFF38,0xFF39,0xFF3A, 0xFF41,0xFF42,0xFF43,0xFF44,0xFF45,0xFF46,0xFF47,0xFF48, 0xFF49,0xFF4A,0xFF4B,0xFF4C,0xFF4D,0xFF4E,0xFF4F,0xFF50, 0xFF51,0xFF52,0xFF53,0xFF54,0xFF55,0xFF56, /* Range 0xA340 - 0xA37E, array index: 0x034D */ 0xFF57,0xFF58,0xFF59,0xFF5A,0x0391,0x0392,0x0393,0x0394, 0x0395,0x0396,0x0397,0x0398,0x0399,0x039A,0x039B,0x039C, 0x039D,0x039E,0x039F,0x03A0,0x03A1,0x03A3,0x03A4,0x03A5, 0x03A6,0x03A7,0x03A8,0x03A9,0x03B1,0x03B2,0x03B3,0x03B4, 0x03B5,0x03B6,0x03B7,0x03B8,0x03B9,0x03BA,0x03BB,0x03BC, 0x03BD,0x03BE,0x03BF,0x03C0,0x03C1,0x03C3,0x03C4,0x03C5, 0x03C6,0x03C7,0x03C8,0x03C9,0x3105,0x3106,0x3107,0x3108, 0x3109,0x310A,0x310B,0x310C,0x310D,0x310E,0x310F, /* Range 0xA3A1 - 0xA3BF, array index: 0x038C */ 0x3110,0x3111,0x3112,0x3113,0x3114,0x3115,0x3116,0x3117, 0x3118,0x3119,0x311A,0x311B,0x311C,0x311D,0x311E,0x311F, 0x3120,0x3121,0x3122,0x3123,0x3124,0x3125,0x3126,0x3127, 0x3128,0x3129,0x02D9,0x02C9,0x02CA,0x02C7,0x02CB, /* Range 0xA440 - 0xA47E, array index: 0x03AB */ 0x4E00,0x4E59,0x4E01,0x4E03,0x4E43,0x4E5D,0x4E86,0x4E8C, 0x4EBA,0x513F,0x5165,0x516B,0x51E0,0x5200,0x5201,0x529B, 0x5315,0x5341,0x535C,0x53C8,0x4E09,0x4E0B,0x4E08,0x4E0A, 0x4E2B,0x4E38,0x51E1,0x4E45,0x4E48,0x4E5F,0x4E5E,0x4E8E, 0x4EA1,0x5140,0x5203,0x52FA,0x5343,0x53C9,0x53E3,0x571F, 0x58EB,0x5915,0x5927,0x5973,0x5B50,0x5B51,0x5B53,0x5BF8, 0x5C0F,0x5C22,0x5C38,0x5C71,0x5DDD,0x5DE5,0x5DF1,0x5DF2, 0x5DF3,0x5DFE,0x5E72,0x5EFE,0x5F0B,0x5F13,0x624D, /* Range 0xA4A1 - 0xA4FE, array index: 0x03EA */ 0x4E11,0x4E10,0x4E0D,0x4E2D,0x4E30,0x4E39,0x4E4B,0x5C39, 0x4E88,0x4E91,0x4E95,0x4E92,0x4E94,0x4EA2,0x4EC1,0x4EC0, 0x4EC3,0x4EC6,0x4EC7,0x4ECD,0x4ECA,0x4ECB,0x4EC4,0x5143, 0x5141,0x5167,0x516D,0x516E,0x516C,0x5197,0x51F6,0x5206, 0x5207,0x5208,0x52FB,0x52FE,0x52FF,0x5316,0x5339,0x5348, 0x5347,0x5345,0x535E,0x5384,0x53CB,0x53CA,0x53CD,0x58EC, 0x5929,0x592B,0x592A,0x592D,0x5B54,0x5C11,0x5C24,0x5C3A, 0x5C6F,0x5DF4,0x5E7B,0x5EFF,0x5F14,0x5F15,0x5FC3,0x6208, 0x6236,0x624B,0x624E,0x652F,0x6587,0x6597,0x65A4,0x65B9, 0x65E5,0x66F0,0x6708,0x6728,0x6B20,0x6B62,0x6B79,0x6BCB, 0x6BD4,0x6BDB,0x6C0F,0x6C34,0x706B,0x722A,0x7236,0x723B, 0x7247,0x7259,0x725B,0x72AC,0x738B,0x4E19, /* Range 0xA540 - 0xA57E, array index: 0x0448 */ 0x4E16,0x4E15,0x4E14,0x4E18,0x4E3B,0x4E4D,0x4E4F,0x4E4E, 0x4EE5,0x4ED8,0x4ED4,0x4ED5,0x4ED6,0x4ED7,0x4EE3,0x4EE4, 0x4ED9,0x4EDE,0x5145,0x5144,0x5189,0x518A,0x51AC,0x51F9, 0x51FA,0x51F8,0x520A,0x52A0,0x529F,0x5305,0x5306,0x5317, 0x531D,0x4EDF,0x534A,0x5349,0x5361,0x5360,0x536F,0x536E, 0x53BB,0x53EF,0x53E4,0x53F3,0x53EC,0x53EE,0x53E9,0x53E8, 0x53FC,0x53F8,0x53F5,0x53EB,0x53E6,0x53EA,0x53F2,0x53F1, 0x53F0,0x53E5,0x53ED,0x53FB,0x56DB,0x56DA,0x5916, /* Range 0xA5A1 - 0xA5FE, array index: 0x0487 */ 0x592E,0x5931,0x5974,0x5976,0x5B55,0x5B83,0x5C3C,0x5DE8, 0x5DE7,0x5DE6,0x5E02,0x5E03,0x5E73,0x5E7C,0x5F01,0x5F18, 0x5F17,0x5FC5,0x620A,0x6253,0x6254,0x6252,0x6251,0x65A5, 0x65E6,0x672E,0x672C,0x672A,0x672B,0x672D,0x6B63,0x6BCD, 0x6C11,0x6C10,0x6C38,0x6C41,0x6C40,0x6C3E,0x72AF,0x7384, 0x7389,0x74DC,0x74E6,0x7518,0x751F,0x7528,0x7529,0x7530, 0x7531,0x7532,0x7533,0x758B,0x767D,0x76AE,0x76BF,0x76EE, 0x77DB,0x77E2,0x77F3,0x793A,0x79BE,0x7A74,0x7ACB,0x4E1E, 0x4E1F,0x4E52,0x4E53,0x4E69,0x4E99,0x4EA4,0x4EA6,0x4EA5, 0x4EFF,0x4F09,0x4F19,0x4F0A,0x4F15,0x4F0D,0x4F10,0x4F11, 0x4F0F,0x4EF2,0x4EF6,0x4EFB,0x4EF0,0x4EF3,0x4EFD,0x4F01, 0x4F0B,0x5149,0x5147,0x5146,0x5148,0x5168, /* Range 0xA640 - 0xA67E, array index: 0x04E5 */ 0x5171,0x518D,0x51B0,0x5217,0x5211,0x5212,0x520E,0x5216, 0x52A3,0x5308,0x5321,0x5320,0x5370,0x5371,0x5409,0x540F, 0x540C,0x540A,0x5410,0x5401,0x540B,0x5404,0x5411,0x540D, 0x5408,0x5403,0x540E,0x5406,0x5412,0x56E0,0x56DE,0x56DD, 0x5733,0x5730,0x5728,0x572D,0x572C,0x572F,0x5729,0x5919, 0x591A,0x5937,0x5938,0x5984,0x5978,0x5983,0x597D,0x5979, 0x5982,0x5981,0x5B57,0x5B58,0x5B87,0x5B88,0x5B85,0x5B89, 0x5BFA,0x5C16,0x5C79,0x5DDE,0x5E06,0x5E76,0x5E74, /* Range 0xA6A1 - 0xA6FE, array index: 0x0524 */ 0x5F0F,0x5F1B,0x5FD9,0x5FD6,0x620E,0x620C,0x620D,0x6210, 0x6263,0x625B,0x6258,0x6536,0x65E9,0x65E8,0x65EC,0x65ED, 0x66F2,0x66F3,0x6709,0x673D,0x6734,0x6731,0x6735,0x6B21, 0x6B64,0x6B7B,0x6C16,0x6C5D,0x6C57,0x6C59,0x6C5F,0x6C60, 0x6C50,0x6C55,0x6C61,0x6C5B,0x6C4D,0x6C4E,0x7070,0x725F, 0x725D,0x767E,0x7AF9,0x7C73,0x7CF8,0x7F36,0x7F8A,0x7FBD, 0x8001,0x8003,0x800C,0x8012,0x8033,0x807F,0x8089,0x808B, 0x808C,0x81E3,0x81EA,0x81F3,0x81FC,0x820C,0x821B,0x821F, 0x826E,0x8272,0x827E,0x866B,0x8840,0x884C,0x8863,0x897F, 0x9621,0x4E32,0x4EA8,0x4F4D,0x4F4F,0x4F47,0x4F57,0x4F5E, 0x4F34,0x4F5B,0x4F55,0x4F30,0x4F50,0x4F51,0x4F3D,0x4F3A, 0x4F38,0x4F43,0x4F54,0x4F3C,0x4F46,0x4F63, /* Range 0xA740 - 0xA77E, array index: 0x0582 */ 0x4F5C,0x4F60,0x4F2F,0x4F4E,0x4F36,0x4F59,0x4F5D,0x4F48, 0x4F5A,0x514C,0x514B,0x514D,0x5175,0x51B6,0x51B7,0x5225, 0x5224,0x5229,0x522A,0x5228,0x52AB,0x52A9,0x52AA,0x52AC, 0x5323,0x5373,0x5375,0x541D,0x542D,0x541E,0x543E,0x5426, 0x544E,0x5427,0x5446,0x5443,0x5433,0x5448,0x5442,0x541B, 0x5429,0x544A,0x5439,0x543B,0x5438,0x542E,0x5435,0x5436, 0x5420,0x543C,0x5440,0x5431,0x542B,0x541F,0x542C,0x56EA, 0x56F0,0x56E4,0x56EB,0x574A,0x5751,0x5740,0x574D, /* Range 0xA7A1 - 0xA7FE, array index: 0x05C1 */ 0x5747,0x574E,0x573E,0x5750,0x574F,0x573B,0x58EF,0x593E, 0x599D,0x5992,0x59A8,0x599E,0x59A3,0x5999,0x5996,0x598D, 0x59A4,0x5993,0x598A,0x59A5,0x5B5D,0x5B5C,0x5B5A,0x5B5B, 0x5B8C,0x5B8B,0x5B8F,0x5C2C,0x5C40,0x5C41,0x5C3F,0x5C3E, 0x5C90,0x5C91,0x5C94,0x5C8C,0x5DEB,0x5E0C,0x5E8F,0x5E87, 0x5E8A,0x5EF7,0x5F04,0x5F1F,0x5F64,0x5F62,0x5F77,0x5F79, 0x5FD8,0x5FCC,0x5FD7,0x5FCD,0x5FF1,0x5FEB,0x5FF8,0x5FEA, 0x6212,0x6211,0x6284,0x6297,0x6296,0x6280,0x6276,0x6289, 0x626D,0x628A,0x627C,0x627E,0x6279,0x6273,0x6292,0x626F, 0x6298,0x626E,0x6295,0x6293,0x6291,0x6286,0x6539,0x653B, 0x6538,0x65F1,0x66F4,0x675F,0x674E,0x674F,0x6750,0x6751, 0x675C,0x6756,0x675E,0x6749,0x6746,0x6760, /* Range 0xA840 - 0xA87E, array index: 0x061F */ 0x6753,0x6757,0x6B65,0x6BCF,0x6C42,0x6C5E,0x6C99,0x6C81, 0x6C88,0x6C89,0x6C85,0x6C9B,0x6C6A,0x6C7A,0x6C90,0x6C70, 0x6C8C,0x6C68,0x6C96,0x6C92,0x6C7D,0x6C83,0x6C72,0x6C7E, 0x6C74,0x6C86,0x6C76,0x6C8D,0x6C94,0x6C98,0x6C82,0x7076, 0x707C,0x707D,0x7078,0x7262,0x7261,0x7260,0x72C4,0x72C2, 0x7396,0x752C,0x752B,0x7537,0x7538,0x7682,0x76EF,0x77E3, 0x79C1,0x79C0,0x79BF,0x7A76,0x7CFB,0x7F55,0x8096,0x8093, 0x809D,0x8098,0x809B,0x809A,0x80B2,0x826F,0x8292, /* Range 0xA8A1 - 0xA8FE, array index: 0x065E */ 0x828B,0x828D,0x898B,0x89D2,0x8A00,0x8C37,0x8C46,0x8C55, 0x8C9D,0x8D64,0x8D70,0x8DB3,0x8EAB,0x8ECA,0x8F9B,0x8FB0, 0x8FC2,0x8FC6,0x8FC5,0x8FC4,0x5DE1,0x9091,0x90A2,0x90AA, 0x90A6,0x90A3,0x9149,0x91C6,0x91CC,0x9632,0x962E,0x9631, 0x962A,0x962C,0x4E26,0x4E56,0x4E73,0x4E8B,0x4E9B,0x4E9E, 0x4EAB,0x4EAC,0x4F6F,0x4F9D,0x4F8D,0x4F73,0x4F7F,0x4F6C, 0x4F9B,0x4F8B,0x4F86,0x4F83,0x4F70,0x4F75,0x4F88,0x4F69, 0x4F7B,0x4F96,0x4F7E,0x4F8F,0x4F91,0x4F7A,0x5154,0x5152, 0x5155,0x5169,0x5177,0x5176,0x5178,0x51BD,0x51FD,0x523B, 0x5238,0x5237,0x523A,0x5230,0x522E,0x5236,0x5241,0x52BE, 0x52BB,0x5352,0x5354,0x5353,0x5351,0x5366,0x5377,0x5378, 0x5379,0x53D6,0x53D4,0x53D7,0x5473,0x5475, /* Range 0xA940 - 0xA97E, array index: 0x06BC */ 0x5496,0x5478,0x5495,0x5480,0x547B,0x5477,0x5484,0x5492, 0x5486,0x547C,0x5490,0x5471,0x5476,0x548C,0x549A,0x5462, 0x5468,0x548B,0x547D,0x548E,0x56FA,0x5783,0x5777,0x576A, 0x5769,0x5761,0x5766,0x5764,0x577C,0x591C,0x5949,0x5947, 0x5948,0x5944,0x5954,0x59BE,0x59BB,0x59D4,0x59B9,0x59AE, 0x59D1,0x59C6,0x59D0,0x59CD,0x59CB,0x59D3,0x59CA,0x59AF, 0x59B3,0x59D2,0x59C5,0x5B5F,0x5B64,0x5B63,0x5B97,0x5B9A, 0x5B98,0x5B9C,0x5B99,0x5B9B,0x5C1A,0x5C48,0x5C45, /* Range 0xA9A1 - 0xA9FE, array index: 0x06FB */ 0x5C46,0x5CB7,0x5CA1,0x5CB8,0x5CA9,0x5CAB,0x5CB1,0x5CB3, 0x5E18,0x5E1A,0x5E16,0x5E15,0x5E1B,0x5E11,0x5E78,0x5E9A, 0x5E97,0x5E9C,0x5E95,0x5E96,0x5EF6,0x5F26,0x5F27,0x5F29, 0x5F80,0x5F81,0x5F7F,0x5F7C,0x5FDD,0x5FE0,0x5FFD,0x5FF5, 0x5FFF,0x600F,0x6014,0x602F,0x6035,0x6016,0x602A,0x6015, 0x6021,0x6027,0x6029,0x602B,0x601B,0x6216,0x6215,0x623F, 0x623E,0x6240,0x627F,0x62C9,0x62CC,0x62C4,0x62BF,0x62C2, 0x62B9,0x62D2,0x62DB,0x62AB,0x62D3,0x62D4,0x62CB,0x62C8, 0x62A8,0x62BD,0x62BC,0x62D0,0x62D9,0x62C7,0x62CD,0x62B5, 0x62DA,0x62B1,0x62D8,0x62D6,0x62D7,0x62C6,0x62AC,0x62CE, 0x653E,0x65A7,0x65BC,0x65FA,0x6614,0x6613,0x660C,0x6606, 0x6602,0x660E,0x6600,0x660F,0x6615,0x660A, /* Range 0xAA40 - 0xAA7E, array index: 0x0759 */ 0x6607,0x670D,0x670B,0x676D,0x678B,0x6795,0x6771,0x679C, 0x6773,0x6777,0x6787,0x679D,0x6797,0x676F,0x6770,0x677F, 0x6789,0x677E,0x6790,0x6775,0x679A,0x6793,0x677C,0x676A, 0x6772,0x6B23,0x6B66,0x6B67,0x6B7F,0x6C13,0x6C1B,0x6CE3, 0x6CE8,0x6CF3,0x6CB1,0x6CCC,0x6CE5,0x6CB3,0x6CBD,0x6CBE, 0x6CBC,0x6CE2,0x6CAB,0x6CD5,0x6CD3,0x6CB8,0x6CC4,0x6CB9, 0x6CC1,0x6CAE,0x6CD7,0x6CC5,0x6CF1,0x6CBF,0x6CBB,0x6CE1, 0x6CDB,0x6CCA,0x6CAC,0x6CEF,0x6CDC,0x6CD6,0x6CE0, /* Range 0xAAA1 - 0xAAFE, array index: 0x0798 */ 0x7095,0x708E,0x7092,0x708A,0x7099,0x722C,0x722D,0x7238, 0x7248,0x7267,0x7269,0x72C0,0x72CE,0x72D9,0x72D7,0x72D0, 0x73A9,0x73A8,0x739F,0x73AB,0x73A5,0x753D,0x759D,0x7599, 0x759A,0x7684,0x76C2,0x76F2,0x76F4,0x77E5,0x77FD,0x793E, 0x7940,0x7941,0x79C9,0x79C8,0x7A7A,0x7A79,0x7AFA,0x7CFE, 0x7F54,0x7F8C,0x7F8B,0x8005,0x80BA,0x80A5,0x80A2,0x80B1, 0x80A1,0x80AB,0x80A9,0x80B4,0x80AA,0x80AF,0x81E5,0x81FE, 0x820D,0x82B3,0x829D,0x8299,0x82AD,0x82BD,0x829F,0x82B9, 0x82B1,0x82AC,0x82A5,0x82AF,0x82B8,0x82A3,0x82B0,0x82BE, 0x82B7,0x864E,0x8671,0x521D,0x8868,0x8ECB,0x8FCE,0x8FD4, 0x8FD1,0x90B5,0x90B8,0x90B1,0x90B6,0x91C7,0x91D1,0x9577, 0x9580,0x961C,0x9640,0x963F,0x963B,0x9644, /* Range 0xAB40 - 0xAB7E, array index: 0x07F6 */ 0x9642,0x96B9,0x96E8,0x9752,0x975E,0x4E9F,0x4EAD,0x4EAE, 0x4FE1,0x4FB5,0x4FAF,0x4FBF,0x4FE0,0x4FD1,0x4FCF,0x4FDD, 0x4FC3,0x4FB6,0x4FD8,0x4FDF,0x4FCA,0x4FD7,0x4FAE,0x4FD0, 0x4FC4,0x4FC2,0x4FDA,0x4FCE,0x4FDE,0x4FB7,0x5157,0x5192, 0x5191,0x51A0,0x524E,0x5243,0x524A,0x524D,0x524C,0x524B, 0x5247,0x52C7,0x52C9,0x52C3,0x52C1,0x530D,0x5357,0x537B, 0x539A,0x53DB,0x54AC,0x54C0,0x54A8,0x54CE,0x54C9,0x54B8, 0x54A6,0x54B3,0x54C7,0x54C2,0x54BD,0x54AA,0x54C1, /* Range 0xABA1 - 0xABFE, array index: 0x0835 */ 0x54C4,0x54C8,0x54AF,0x54AB,0x54B1,0x54BB,0x54A9,0x54A7, 0x54BF,0x56FF,0x5782,0x578B,0x57A0,0x57A3,0x57A2,0x57CE, 0x57AE,0x5793,0x5955,0x5951,0x594F,0x594E,0x5950,0x59DC, 0x59D8,0x59FF,0x59E3,0x59E8,0x5A03,0x59E5,0x59EA,0x59DA, 0x59E6,0x5A01,0x59FB,0x5B69,0x5BA3,0x5BA6,0x5BA4,0x5BA2, 0x5BA5,0x5C01,0x5C4E,0x5C4F,0x5C4D,0x5C4B,0x5CD9,0x5CD2, 0x5DF7,0x5E1D,0x5E25,0x5E1F,0x5E7D,0x5EA0,0x5EA6,0x5EFA, 0x5F08,0x5F2D,0x5F65,0x5F88,0x5F85,0x5F8A,0x5F8B,0x5F87, 0x5F8C,0x5F89,0x6012,0x601D,0x6020,0x6025,0x600E,0x6028, 0x604D,0x6070,0x6068,0x6062,0x6046,0x6043,0x606C,0x606B, 0x606A,0x6064,0x6241,0x62DC,0x6316,0x6309,0x62FC,0x62ED, 0x6301,0x62EE,0x62FD,0x6307,0x62F1,0x62F7, /* Range 0xAC40 - 0xAC7E, array index: 0x0893 */ 0x62EF,0x62EC,0x62FE,0x62F4,0x6311,0x6302,0x653F,0x6545, 0x65AB,0x65BD,0x65E2,0x6625,0x662D,0x6620,0x6627,0x662F, 0x661F,0x6628,0x6631,0x6624,0x66F7,0x67FF,0x67D3,0x67F1, 0x67D4,0x67D0,0x67EC,0x67B6,0x67AF,0x67F5,0x67E9,0x67EF, 0x67C4,0x67D1,0x67B4,0x67DA,0x67E5,0x67B8,0x67CF,0x67DE, 0x67F3,0x67B0,0x67D9,0x67E2,0x67DD,0x67D2,0x6B6A,0x6B83, 0x6B86,0x6BB5,0x6BD2,0x6BD7,0x6C1F,0x6CC9,0x6D0B,0x6D32, 0x6D2A,0x6D41,0x6D25,0x6D0C,0x6D31,0x6D1E,0x6D17, /* Range 0xACA1 - 0xACFE, array index: 0x08D2 */ 0x6D3B,0x6D3D,0x6D3E,0x6D36,0x6D1B,0x6CF5,0x6D39,0x6D27, 0x6D38,0x6D29,0x6D2E,0x6D35,0x6D0E,0x6D2B,0x70AB,0x70BA, 0x70B3,0x70AC,0x70AF,0x70AD,0x70B8,0x70AE,0x70A4,0x7230, 0x7272,0x726F,0x7274,0x72E9,0x72E0,0x72E1,0x73B7,0x73CA, 0x73BB,0x73B2,0x73CD,0x73C0,0x73B3,0x751A,0x752D,0x754F, 0x754C,0x754E,0x754B,0x75AB,0x75A4,0x75A5,0x75A2,0x75A3, 0x7678,0x7686,0x7687,0x7688,0x76C8,0x76C6,0x76C3,0x76C5, 0x7701,0x76F9,0x76F8,0x7709,0x770B,0x76FE,0x76FC,0x7707, 0x77DC,0x7802,0x7814,0x780C,0x780D,0x7946,0x7949,0x7948, 0x7947,0x79B9,0x79BA,0x79D1,0x79D2,0x79CB,0x7A7F,0x7A81, 0x7AFF,0x7AFD,0x7C7D,0x7D02,0x7D05,0x7D00,0x7D09,0x7D07, 0x7D04,0x7D06,0x7F38,0x7F8E,0x7FBF,0x8004, /* Range 0xAD40 - 0xAD7E, array index: 0x0930 */ 0x8010,0x800D,0x8011,0x8036,0x80D6,0x80E5,0x80DA,0x80C3, 0x80C4,0x80CC,0x80E1,0x80DB,0x80CE,0x80DE,0x80E4,0x80DD, 0x81F4,0x8222,0x82E7,0x8303,0x8305,0x82E3,0x82DB,0x82E6, 0x8304,0x82E5,0x8302,0x8309,0x82D2,0x82D7,0x82F1,0x8301, 0x82DC,0x82D4,0x82D1,0x82DE,0x82D3,0x82DF,0x82EF,0x8306, 0x8650,0x8679,0x867B,0x867A,0x884D,0x886B,0x8981,0x89D4, 0x8A08,0x8A02,0x8A03,0x8C9E,0x8CA0,0x8D74,0x8D73,0x8DB4, 0x8ECD,0x8ECC,0x8FF0,0x8FE6,0x8FE2,0x8FEA,0x8FE5, /* Range 0xADA1 - 0xADFE, array index: 0x096F */ 0x8FED,0x8FEB,0x8FE4,0x8FE8,0x90CA,0x90CE,0x90C1,0x90C3, 0x914B,0x914A,0x91CD,0x9582,0x9650,0x964B,0x964C,0x964D, 0x9762,0x9769,0x97CB,0x97ED,0x97F3,0x9801,0x98A8,0x98DB, 0x98DF,0x9996,0x9999,0x4E58,0x4EB3,0x500C,0x500D,0x5023, 0x4FEF,0x5026,0x5025,0x4FF8,0x5029,0x5016,0x5006,0x503C, 0x501F,0x501A,0x5012,0x5011,0x4FFA,0x5000,0x5014,0x5028, 0x4FF1,0x5021,0x500B,0x5019,0x5018,0x4FF3,0x4FEE,0x502D, 0x502A,0x4FFE,0x502B,0x5009,0x517C,0x51A4,0x51A5,0x51A2, 0x51CD,0x51CC,0x51C6,0x51CB,0x5256,0x525C,0x5254,0x525B, 0x525D,0x532A,0x537F,0x539F,0x539D,0x53DF,0x54E8,0x5510, 0x5501,0x5537,0x54FC,0x54E5,0x54F2,0x5506,0x54FA,0x5514, 0x54E9,0x54ED,0x54E1,0x5509,0x54EE,0x54EA, /* Range 0xAE40 - 0xAE7E, array index: 0x09CD */ 0x54E6,0x5527,0x5507,0x54FD,0x550F,0x5703,0x5704,0x57C2, 0x57D4,0x57CB,0x57C3,0x5809,0x590F,0x5957,0x5958,0x595A, 0x5A11,0x5A18,0x5A1C,0x5A1F,0x5A1B,0x5A13,0x59EC,0x5A20, 0x5A23,0x5A29,0x5A25,0x5A0C,0x5A09,0x5B6B,0x5C58,0x5BB0, 0x5BB3,0x5BB6,0x5BB4,0x5BAE,0x5BB5,0x5BB9,0x5BB8,0x5C04, 0x5C51,0x5C55,0x5C50,0x5CED,0x5CFD,0x5CFB,0x5CEA,0x5CE8, 0x5CF0,0x5CF6,0x5D01,0x5CF4,0x5DEE,0x5E2D,0x5E2B,0x5EAB, 0x5EAD,0x5EA7,0x5F31,0x5F92,0x5F91,0x5F90,0x6059, /* Range 0xAEA1 - 0xAEFE, array index: 0x0A0C */ 0x6063,0x6065,0x6050,0x6055,0x606D,0x6069,0x606F,0x6084, 0x609F,0x609A,0x608D,0x6094,0x608C,0x6085,0x6096,0x6247, 0x62F3,0x6308,0x62FF,0x634E,0x633E,0x632F,0x6355,0x6342, 0x6346,0x634F,0x6349,0x633A,0x6350,0x633D,0x632A,0x632B, 0x6328,0x634D,0x634C,0x6548,0x6549,0x6599,0x65C1,0x65C5, 0x6642,0x6649,0x664F,0x6643,0x6652,0x664C,0x6645,0x6641, 0x66F8,0x6714,0x6715,0x6717,0x6821,0x6838,0x6848,0x6846, 0x6853,0x6839,0x6842,0x6854,0x6829,0x68B3,0x6817,0x684C, 0x6851,0x683D,0x67F4,0x6850,0x6840,0x683C,0x6843,0x682A, 0x6845,0x6813,0x6818,0x6841,0x6B8A,0x6B89,0x6BB7,0x6C23, 0x6C27,0x6C28,0x6C26,0x6C24,0x6CF0,0x6D6A,0x6D95,0x6D88, 0x6D87,0x6D66,0x6D78,0x6D77,0x6D59,0x6D93, /* Range 0xAF40 - 0xAF7E, array index: 0x0A6A */ 0x6D6C,0x6D89,0x6D6E,0x6D5A,0x6D74,0x6D69,0x6D8C,0x6D8A, 0x6D79,0x6D85,0x6D65,0x6D94,0x70CA,0x70D8,0x70E4,0x70D9, 0x70C8,0x70CF,0x7239,0x7279,0x72FC,0x72F9,0x72FD,0x72F8, 0x72F7,0x7386,0x73ED,0x7409,0x73EE,0x73E0,0x73EA,0x73DE, 0x7554,0x755D,0x755C,0x755A,0x7559,0x75BE,0x75C5,0x75C7, 0x75B2,0x75B3,0x75BD,0x75BC,0x75B9,0x75C2,0x75B8,0x768B, 0x76B0,0x76CA,0x76CD,0x76CE,0x7729,0x771F,0x7720,0x7728, 0x77E9,0x7830,0x7827,0x7838,0x781D,0x7834,0x7837, /* Range 0xAFA1 - 0xAFFE, array index: 0x0AA9 */ 0x7825,0x782D,0x7820,0x781F,0x7832,0x7955,0x7950,0x7960, 0x795F,0x7956,0x795E,0x795D,0x7957,0x795A,0x79E4,0x79E3, 0x79E7,0x79DF,0x79E6,0x79E9,0x79D8,0x7A84,0x7A88,0x7AD9, 0x7B06,0x7B11,0x7C89,0x7D21,0x7D17,0x7D0B,0x7D0A,0x7D20, 0x7D22,0x7D14,0x7D10,0x7D15,0x7D1A,0x7D1C,0x7D0D,0x7D19, 0x7D1B,0x7F3A,0x7F5F,0x7F94,0x7FC5,0x7FC1,0x8006,0x8018, 0x8015,0x8019,0x8017,0x803D,0x803F,0x80F1,0x8102,0x80F0, 0x8105,0x80ED,0x80F4,0x8106,0x80F8,0x80F3,0x8108,0x80FD, 0x810A,0x80FC,0x80EF,0x81ED,0x81EC,0x8200,0x8210,0x822A, 0x822B,0x8228,0x822C,0x82BB,0x832B,0x8352,0x8354,0x834A, 0x8338,0x8350,0x8349,0x8335,0x8334,0x834F,0x8332,0x8339, 0x8336,0x8317,0x8340,0x8331,0x8328,0x8343, /* Range 0xB040 - 0xB07E, array index: 0x0B07 */ 0x8654,0x868A,0x86AA,0x8693,0x86A4,0x86A9,0x868C,0x86A3, 0x869C,0x8870,0x8877,0x8881,0x8882,0x887D,0x8879,0x8A18, 0x8A10,0x8A0E,0x8A0C,0x8A15,0x8A0A,0x8A17,0x8A13,0x8A16, 0x8A0F,0x8A11,0x8C48,0x8C7A,0x8C79,0x8CA1,0x8CA2,0x8D77, 0x8EAC,0x8ED2,0x8ED4,0x8ECF,0x8FB1,0x9001,0x9006,0x8FF7, 0x9000,0x8FFA,0x8FF4,0x9003,0x8FFD,0x9005,0x8FF8,0x9095, 0x90E1,0x90DD,0x90E2,0x9152,0x914D,0x914C,0x91D8,0x91DD, 0x91D7,0x91DC,0x91D9,0x9583,0x9662,0x9663,0x9661, /* Range 0xB0A1 - 0xB0FE, array index: 0x0B46 */ 0x965B,0x965D,0x9664,0x9658,0x965E,0x96BB,0x98E2,0x99AC, 0x9AA8,0x9AD8,0x9B25,0x9B32,0x9B3C,0x4E7E,0x507A,0x507D, 0x505C,0x5047,0x5043,0x504C,0x505A,0x5049,0x5065,0x5076, 0x504E,0x5055,0x5075,0x5074,0x5077,0x504F,0x500F,0x506F, 0x506D,0x515C,0x5195,0x51F0,0x526A,0x526F,0x52D2,0x52D9, 0x52D8,0x52D5,0x5310,0x530F,0x5319,0x533F,0x5340,0x533E, 0x53C3,0x66FC,0x5546,0x556A,0x5566,0x5544,0x555E,0x5561, 0x5543,0x554A,0x5531,0x5556,0x554F,0x5555,0x552F,0x5564, 0x5538,0x552E,0x555C,0x552C,0x5563,0x5533,0x5541,0x5557, 0x5708,0x570B,0x5709,0x57DF,0x5805,0x580A,0x5806,0x57E0, 0x57E4,0x57FA,0x5802,0x5835,0x57F7,0x57F9,0x5920,0x5962, 0x5A36,0x5A41,0x5A49,0x5A66,0x5A6A,0x5A40, /* Range 0xB140 - 0xB17E, array index: 0x0BA4 */ 0x5A3C,0x5A62,0x5A5A,0x5A46,0x5A4A,0x5B70,0x5BC7,0x5BC5, 0x5BC4,0x5BC2,0x5BBF,0x5BC6,0x5C09,0x5C08,0x5C07,0x5C60, 0x5C5C,0x5C5D,0x5D07,0x5D06,0x5D0E,0x5D1B,0x5D16,0x5D22, 0x5D11,0x5D29,0x5D14,0x5D19,0x5D24,0x5D27,0x5D17,0x5DE2, 0x5E38,0x5E36,0x5E33,0x5E37,0x5EB7,0x5EB8,0x5EB6,0x5EB5, 0x5EBE,0x5F35,0x5F37,0x5F57,0x5F6C,0x5F69,0x5F6B,0x5F97, 0x5F99,0x5F9E,0x5F98,0x5FA1,0x5FA0,0x5F9C,0x607F,0x60A3, 0x6089,0x60A0,0x60A8,0x60CB,0x60B4,0x60E6,0x60BD, /* Range 0xB1A1 - 0xB1FE, array index: 0x0BE3 */ 0x60C5,0x60BB,0x60B5,0x60DC,0x60BC,0x60D8,0x60D5,0x60C6, 0x60DF,0x60B8,0x60DA,0x60C7,0x621A,0x621B,0x6248,0x63A0, 0x63A7,0x6372,0x6396,0x63A2,0x63A5,0x6377,0x6367,0x6398, 0x63AA,0x6371,0x63A9,0x6389,0x6383,0x639B,0x636B,0x63A8, 0x6384,0x6388,0x6399,0x63A1,0x63AC,0x6392,0x638F,0x6380, 0x637B,0x6369,0x6368,0x637A,0x655D,0x6556,0x6551,0x6559, 0x6557,0x555F,0x654F,0x6558,0x6555,0x6554,0x659C,0x659B, 0x65AC,0x65CF,0x65CB,0x65CC,0x65CE,0x665D,0x665A,0x6664, 0x6668,0x6666,0x665E,0x66F9,0x52D7,0x671B,0x6881,0x68AF, 0x68A2,0x6893,0x68B5,0x687F,0x6876,0x68B1,0x68A7,0x6897, 0x68B0,0x6883,0x68C4,0x68AD,0x6886,0x6885,0x6894,0x689D, 0x68A8,0x689F,0x68A1,0x6882,0x6B32,0x6BBA, /* Range 0xB240 - 0xB27E, array index: 0x0C41 */ 0x6BEB,0x6BEC,0x6C2B,0x6D8E,0x6DBC,0x6DF3,0x6DD9,0x6DB2, 0x6DE1,0x6DCC,0x6DE4,0x6DFB,0x6DFA,0x6E05,0x6DC7,0x6DCB, 0x6DAF,0x6DD1,0x6DAE,0x6DDE,0x6DF9,0x6DB8,0x6DF7,0x6DF5, 0x6DC5,0x6DD2,0x6E1A,0x6DB5,0x6DDA,0x6DEB,0x6DD8,0x6DEA, 0x6DF1,0x6DEE,0x6DE8,0x6DC6,0x6DC4,0x6DAA,0x6DEC,0x6DBF, 0x6DE6,0x70F9,0x7109,0x710A,0x70FD,0x70EF,0x723D,0x727D, 0x7281,0x731C,0x731B,0x7316,0x7313,0x7319,0x7387,0x7405, 0x740A,0x7403,0x7406,0x73FE,0x740D,0x74E0,0x74F6, /* Range 0xB2A1 - 0xB2FE, array index: 0x0C80 */ 0x74F7,0x751C,0x7522,0x7565,0x7566,0x7562,0x7570,0x758F, 0x75D4,0x75D5,0x75B5,0x75CA,0x75CD,0x768E,0x76D4,0x76D2, 0x76DB,0x7737,0x773E,0x773C,0x7736,0x7738,0x773A,0x786B, 0x7843,0x784E,0x7965,0x7968,0x796D,0x79FB,0x7A92,0x7A95, 0x7B20,0x7B28,0x7B1B,0x7B2C,0x7B26,0x7B19,0x7B1E,0x7B2E, 0x7C92,0x7C97,0x7C95,0x7D46,0x7D43,0x7D71,0x7D2E,0x7D39, 0x7D3C,0x7D40,0x7D30,0x7D33,0x7D44,0x7D2F,0x7D42,0x7D32, 0x7D31,0x7F3D,0x7F9E,0x7F9A,0x7FCC,0x7FCE,0x7FD2,0x801C, 0x804A,0x8046,0x812F,0x8116,0x8123,0x812B,0x8129,0x8130, 0x8124,0x8202,0x8235,0x8237,0x8236,0x8239,0x838E,0x839E, 0x8398,0x8378,0x83A2,0x8396,0x83BD,0x83AB,0x8392,0x838A, 0x8393,0x8389,0x83A0,0x8377,0x837B,0x837C, /* Range 0xB340 - 0xB37E, array index: 0x0CDE */ 0x8386,0x83A7,0x8655,0x5F6A,0x86C7,0x86C0,0x86B6,0x86C4, 0x86B5,0x86C6,0x86CB,0x86B1,0x86AF,0x86C9,0x8853,0x889E, 0x8888,0x88AB,0x8892,0x8896,0x888D,0x888B,0x8993,0x898F, 0x8A2A,0x8A1D,0x8A23,0x8A25,0x8A31,0x8A2D,0x8A1F,0x8A1B, 0x8A22,0x8C49,0x8C5A,0x8CA9,0x8CAC,0x8CAB,0x8CA8,0x8CAA, 0x8CA7,0x8D67,0x8D66,0x8DBE,0x8DBA,0x8EDB,0x8EDF,0x9019, 0x900D,0x901A,0x9017,0x9023,0x901F,0x901D,0x9010,0x9015, 0x901E,0x9020,0x900F,0x9022,0x9016,0x901B,0x9014, /* Range 0xB3A1 - 0xB3FE, array index: 0x0D1D */ 0x90E8,0x90ED,0x90FD,0x9157,0x91CE,0x91F5,0x91E6,0x91E3, 0x91E7,0x91ED,0x91E9,0x9589,0x966A,0x9675,0x9673,0x9678, 0x9670,0x9674,0x9676,0x9677,0x966C,0x96C0,0x96EA,0x96E9, 0x7AE0,0x7ADF,0x9802,0x9803,0x9B5A,0x9CE5,0x9E75,0x9E7F, 0x9EA5,0x9EBB,0x50A2,0x508D,0x5085,0x5099,0x5091,0x5080, 0x5096,0x5098,0x509A,0x6700,0x51F1,0x5272,0x5274,0x5275, 0x5269,0x52DE,0x52DD,0x52DB,0x535A,0x53A5,0x557B,0x5580, 0x55A7,0x557C,0x558A,0x559D,0x5598,0x5582,0x559C,0x55AA, 0x5594,0x5587,0x558B,0x5583,0x55B3,0x55AE,0x559F,0x553E, 0x55B2,0x559A,0x55BB,0x55AC,0x55B1,0x557E,0x5589,0x55AB, 0x5599,0x570D,0x582F,0x582A,0x5834,0x5824,0x5830,0x5831, 0x5821,0x581D,0x5820,0x58F9,0x58FA,0x5960, /* Range 0xB440 - 0xB47E, array index: 0x0D7B */ 0x5A77,0x5A9A,0x5A7F,0x5A92,0x5A9B,0x5AA7,0x5B73,0x5B71, 0x5BD2,0x5BCC,0x5BD3,0x5BD0,0x5C0A,0x5C0B,0x5C31,0x5D4C, 0x5D50,0x5D34,0x5D47,0x5DFD,0x5E45,0x5E3D,0x5E40,0x5E43, 0x5E7E,0x5ECA,0x5EC1,0x5EC2,0x5EC4,0x5F3C,0x5F6D,0x5FA9, 0x5FAA,0x5FA8,0x60D1,0x60E1,0x60B2,0x60B6,0x60E0,0x611C, 0x6123,0x60FA,0x6115,0x60F0,0x60FB,0x60F4,0x6168,0x60F1, 0x610E,0x60F6,0x6109,0x6100,0x6112,0x621F,0x6249,0x63A3, 0x638C,0x63CF,0x63C0,0x63E9,0x63C9,0x63C6,0x63CD, /* Range 0xB4A1 - 0xB4FE, array index: 0x0DBA */ 0x63D2,0x63E3,0x63D0,0x63E1,0x63D6,0x63ED,0x63EE,0x6376, 0x63F4,0x63EA,0x63DB,0x6452,0x63DA,0x63F9,0x655E,0x6566, 0x6562,0x6563,0x6591,0x6590,0x65AF,0x666E,0x6670,0x6674, 0x6676,0x666F,0x6691,0x667A,0x667E,0x6677,0x66FE,0x66FF, 0x671F,0x671D,0x68FA,0x68D5,0x68E0,0x68D8,0x68D7,0x6905, 0x68DF,0x68F5,0x68EE,0x68E7,0x68F9,0x68D2,0x68F2,0x68E3, 0x68CB,0x68CD,0x690D,0x6912,0x690E,0x68C9,0x68DA,0x696E, 0x68FB,0x6B3E,0x6B3A,0x6B3D,0x6B98,0x6B96,0x6BBC,0x6BEF, 0x6C2E,0x6C2F,0x6C2C,0x6E2F,0x6E38,0x6E54,0x6E21,0x6E32, 0x6E67,0x6E4A,0x6E20,0x6E25,0x6E23,0x6E1B,0x6E5B,0x6E58, 0x6E24,0x6E56,0x6E6E,0x6E2D,0x6E26,0x6E6F,0x6E34,0x6E4D, 0x6E3A,0x6E2C,0x6E43,0x6E1D,0x6E3E,0x6ECB, /* Range 0xB540 - 0xB57E, array index: 0x0E18 */ 0x6E89,0x6E19,0x6E4E,0x6E63,0x6E44,0x6E72,0x6E69,0x6E5F, 0x7119,0x711A,0x7126,0x7130,0x7121,0x7136,0x716E,0x711C, 0x724C,0x7284,0x7280,0x7336,0x7325,0x7334,0x7329,0x743A, 0x742A,0x7433,0x7422,0x7425,0x7435,0x7436,0x7434,0x742F, 0x741B,0x7426,0x7428,0x7525,0x7526,0x756B,0x756A,0x75E2, 0x75DB,0x75E3,0x75D9,0x75D8,0x75DE,0x75E0,0x767B,0x767C, 0x7696,0x7693,0x76B4,0x76DC,0x774F,0x77ED,0x785D,0x786C, 0x786F,0x7A0D,0x7A08,0x7A0B,0x7A05,0x7A00,0x7A98, /* Range 0xB5A1 - 0xB5FE, array index: 0x0E57 */ 0x7A97,0x7A96,0x7AE5,0x7AE3,0x7B49,0x7B56,0x7B46,0x7B50, 0x7B52,0x7B54,0x7B4D,0x7B4B,0x7B4F,0x7B51,0x7C9F,0x7CA5, 0x7D5E,0x7D50,0x7D68,0x7D55,0x7D2B,0x7D6E,0x7D72,0x7D61, 0x7D66,0x7D62,0x7D70,0x7D73,0x5584,0x7FD4,0x7FD5,0x800B, 0x8052,0x8085,0x8155,0x8154,0x814B,0x8151,0x814E,0x8139, 0x8146,0x813E,0x814C,0x8153,0x8174,0x8212,0x821C,0x83E9, 0x8403,0x83F8,0x840D,0x83E0,0x83C5,0x840B,0x83C1,0x83EF, 0x83F1,0x83F4,0x8457,0x840A,0x83F0,0x840C,0x83CC,0x83FD, 0x83F2,0x83CA,0x8438,0x840E,0x8404,0x83DC,0x8407,0x83D4, 0x83DF,0x865B,0x86DF,0x86D9,0x86ED,0x86D4,0x86DB,0x86E4, 0x86D0,0x86DE,0x8857,0x88C1,0x88C2,0x88B1,0x8983,0x8996, 0x8A3B,0x8A60,0x8A55,0x8A5E,0x8A3C,0x8A41, /* Range 0xB640 - 0xB67E, array index: 0x0EB5 */ 0x8A54,0x8A5B,0x8A50,0x8A46,0x8A34,0x8A3A,0x8A36,0x8A56, 0x8C61,0x8C82,0x8CAF,0x8CBC,0x8CB3,0x8CBD,0x8CC1,0x8CBB, 0x8CC0,0x8CB4,0x8CB7,0x8CB6,0x8CBF,0x8CB8,0x8D8A,0x8D85, 0x8D81,0x8DCE,0x8DDD,0x8DCB,0x8DDA,0x8DD1,0x8DCC,0x8DDB, 0x8DC6,0x8EFB,0x8EF8,0x8EFC,0x8F9C,0x902E,0x9035,0x9031, 0x9038,0x9032,0x9036,0x9102,0x90F5,0x9109,0x90FE,0x9163, 0x9165,0x91CF,0x9214,0x9215,0x9223,0x9209,0x921E,0x920D, 0x9210,0x9207,0x9211,0x9594,0x958F,0x958B,0x9591, /* Range 0xB6A1 - 0xB6FE, array index: 0x0EF4 */ 0x9593,0x9592,0x958E,0x968A,0x968E,0x968B,0x967D,0x9685, 0x9686,0x968D,0x9672,0x9684,0x96C1,0x96C5,0x96C4,0x96C6, 0x96C7,0x96EF,0x96F2,0x97CC,0x9805,0x9806,0x9808,0x98E7, 0x98EA,0x98EF,0x98E9,0x98F2,0x98ED,0x99AE,0x99AD,0x9EC3, 0x9ECD,0x9ED1,0x4E82,0x50AD,0x50B5,0x50B2,0x50B3,0x50C5, 0x50BE,0x50AC,0x50B7,0x50BB,0x50AF,0x50C7,0x527F,0x5277, 0x527D,0x52DF,0x52E6,0x52E4,0x52E2,0x52E3,0x532F,0x55DF, 0x55E8,0x55D3,0x55E6,0x55CE,0x55DC,0x55C7,0x55D1,0x55E3, 0x55E4,0x55EF,0x55DA,0x55E1,0x55C5,0x55C6,0x55E5,0x55C9, 0x5712,0x5713,0x585E,0x5851,0x5858,0x5857,0x585A,0x5854, 0x586B,0x584C,0x586D,0x584A,0x5862,0x5852,0x584B,0x5967, 0x5AC1,0x5AC9,0x5ACC,0x5ABE,0x5ABD,0x5ABC, /* Range 0xB740 - 0xB77E, array index: 0x0F52 */ 0x5AB3,0x5AC2,0x5AB2,0x5D69,0x5D6F,0x5E4C,0x5E79,0x5EC9, 0x5EC8,0x5F12,0x5F59,0x5FAC,0x5FAE,0x611A,0x610F,0x6148, 0x611F,0x60F3,0x611B,0x60F9,0x6101,0x6108,0x614E,0x614C, 0x6144,0x614D,0x613E,0x6134,0x6127,0x610D,0x6106,0x6137, 0x6221,0x6222,0x6413,0x643E,0x641E,0x642A,0x642D,0x643D, 0x642C,0x640F,0x641C,0x6414,0x640D,0x6436,0x6416,0x6417, 0x6406,0x656C,0x659F,0x65B0,0x6697,0x6689,0x6687,0x6688, 0x6696,0x6684,0x6698,0x668D,0x6703,0x6994,0x696D, /* Range 0xB7A1 - 0xB7FE, array index: 0x0F91 */ 0x695A,0x6977,0x6960,0x6954,0x6975,0x6930,0x6982,0x694A, 0x6968,0x696B,0x695E,0x6953,0x6979,0x6986,0x695D,0x6963, 0x695B,0x6B47,0x6B72,0x6BC0,0x6BBF,0x6BD3,0x6BFD,0x6EA2, 0x6EAF,0x6ED3,0x6EB6,0x6EC2,0x6E90,0x6E9D,0x6EC7,0x6EC5, 0x6EA5,0x6E98,0x6EBC,0x6EBA,0x6EAB,0x6ED1,0x6E96,0x6E9C, 0x6EC4,0x6ED4,0x6EAA,0x6EA7,0x6EB4,0x714E,0x7159,0x7169, 0x7164,0x7149,0x7167,0x715C,0x716C,0x7166,0x714C,0x7165, 0x715E,0x7146,0x7168,0x7156,0x723A,0x7252,0x7337,0x7345, 0x733F,0x733E,0x746F,0x745A,0x7455,0x745F,0x745E,0x7441, 0x743F,0x7459,0x745B,0x745C,0x7576,0x7578,0x7600,0x75F0, 0x7601,0x75F2,0x75F1,0x75FA,0x75FF,0x75F4,0x75F3,0x76DE, 0x76DF,0x775B,0x776B,0x7766,0x775E,0x7763, /* Range 0xB840 - 0xB87E, array index: 0x0FEF */ 0x7779,0x776A,0x776C,0x775C,0x7765,0x7768,0x7762,0x77EE, 0x788E,0x78B0,0x7897,0x7898,0x788C,0x7889,0x787C,0x7891, 0x7893,0x787F,0x797A,0x797F,0x7981,0x842C,0x79BD,0x7A1C, 0x7A1A,0x7A20,0x7A14,0x7A1F,0x7A1E,0x7A9F,0x7AA0,0x7B77, 0x7BC0,0x7B60,0x7B6E,0x7B67,0x7CB1,0x7CB3,0x7CB5,0x7D93, 0x7D79,0x7D91,0x7D81,0x7D8F,0x7D5B,0x7F6E,0x7F69,0x7F6A, 0x7F72,0x7FA9,0x7FA8,0x7FA4,0x8056,0x8058,0x8086,0x8084, 0x8171,0x8170,0x8178,0x8165,0x816E,0x8173,0x816B, /* Range 0xB8A1 - 0xB8FE, array index: 0x102E */ 0x8179,0x817A,0x8166,0x8205,0x8247,0x8482,0x8477,0x843D, 0x8431,0x8475,0x8466,0x846B,0x8449,0x846C,0x845B,0x843C, 0x8435,0x8461,0x8463,0x8469,0x846D,0x8446,0x865E,0x865C, 0x865F,0x86F9,0x8713,0x8708,0x8707,0x8700,0x86FE,0x86FB, 0x8702,0x8703,0x8706,0x870A,0x8859,0x88DF,0x88D4,0x88D9, 0x88DC,0x88D8,0x88DD,0x88E1,0x88CA,0x88D5,0x88D2,0x899C, 0x89E3,0x8A6B,0x8A72,0x8A73,0x8A66,0x8A69,0x8A70,0x8A87, 0x8A7C,0x8A63,0x8AA0,0x8A71,0x8A85,0x8A6D,0x8A62,0x8A6E, 0x8A6C,0x8A79,0x8A7B,0x8A3E,0x8A68,0x8C62,0x8C8A,0x8C89, 0x8CCA,0x8CC7,0x8CC8,0x8CC4,0x8CB2,0x8CC3,0x8CC2,0x8CC5, 0x8DE1,0x8DDF,0x8DE8,0x8DEF,0x8DF3,0x8DFA,0x8DEA,0x8DE4, 0x8DE6,0x8EB2,0x8F03,0x8F09,0x8EFE,0x8F0A, /* Range 0xB940 - 0xB97E, array index: 0x108C */ 0x8F9F,0x8FB2,0x904B,0x904A,0x9053,0x9042,0x9054,0x903C, 0x9055,0x9050,0x9047,0x904F,0x904E,0x904D,0x9051,0x903E, 0x9041,0x9112,0x9117,0x916C,0x916A,0x9169,0x91C9,0x9237, 0x9257,0x9238,0x923D,0x9240,0x923E,0x925B,0x924B,0x9264, 0x9251,0x9234,0x9249,0x924D,0x9245,0x9239,0x923F,0x925A, 0x9598,0x9698,0x9694,0x9695,0x96CD,0x96CB,0x96C9,0x96CA, 0x96F7,0x96FB,0x96F9,0x96F6,0x9756,0x9774,0x9776,0x9810, 0x9811,0x9813,0x980A,0x9812,0x980C,0x98FC,0x98F4, /* Range 0xB9A1 - 0xB9FE, array index: 0x10CB */ 0x98FD,0x98FE,0x99B3,0x99B1,0x99B4,0x9AE1,0x9CE9,0x9E82, 0x9F0E,0x9F13,0x9F20,0x50E7,0x50EE,0x50E5,0x50D6,0x50ED, 0x50DA,0x50D5,0x50CF,0x50D1,0x50F1,0x50CE,0x50E9,0x5162, 0x51F3,0x5283,0x5282,0x5331,0x53AD,0x55FE,0x5600,0x561B, 0x5617,0x55FD,0x5614,0x5606,0x5609,0x560D,0x560E,0x55F7, 0x5616,0x561F,0x5608,0x5610,0x55F6,0x5718,0x5716,0x5875, 0x587E,0x5883,0x5893,0x588A,0x5879,0x5885,0x587D,0x58FD, 0x5925,0x5922,0x5924,0x596A,0x5969,0x5AE1,0x5AE6,0x5AE9, 0x5AD7,0x5AD6,0x5AD8,0x5AE3,0x5B75,0x5BDE,0x5BE7,0x5BE1, 0x5BE5,0x5BE6,0x5BE8,0x5BE2,0x5BE4,0x5BDF,0x5C0D,0x5C62, 0x5D84,0x5D87,0x5E5B,0x5E63,0x5E55,0x5E57,0x5E54,0x5ED3, 0x5ED6,0x5F0A,0x5F46,0x5F70,0x5FB9,0x6147, /* Range 0xBA40 - 0xBA7E, array index: 0x1129 */ 0x613F,0x614B,0x6177,0x6162,0x6163,0x615F,0x615A,0x6158, 0x6175,0x622A,0x6487,0x6458,0x6454,0x64A4,0x6478,0x645F, 0x647A,0x6451,0x6467,0x6434,0x646D,0x647B,0x6572,0x65A1, 0x65D7,0x65D6,0x66A2,0x66A8,0x669D,0x699C,0x69A8,0x6995, 0x69C1,0x69AE,0x69D3,0x69CB,0x699B,0x69B7,0x69BB,0x69AB, 0x69B4,0x69D0,0x69CD,0x69AD,0x69CC,0x69A6,0x69C3,0x69A3, 0x6B49,0x6B4C,0x6C33,0x6F33,0x6F14,0x6EFE,0x6F13,0x6EF4, 0x6F29,0x6F3E,0x6F20,0x6F2C,0x6F0F,0x6F02,0x6F22, /* Range 0xBAA1 - 0xBAFE, array index: 0x1168 */ 0x6EFF,0x6EEF,0x6F06,0x6F31,0x6F38,0x6F32,0x6F23,0x6F15, 0x6F2B,0x6F2F,0x6F88,0x6F2A,0x6EEC,0x6F01,0x6EF2,0x6ECC, 0x6EF7,0x7194,0x7199,0x717D,0x718A,0x7184,0x7192,0x723E, 0x7292,0x7296,0x7344,0x7350,0x7464,0x7463,0x746A,0x7470, 0x746D,0x7504,0x7591,0x7627,0x760D,0x760B,0x7609,0x7613, 0x76E1,0x76E3,0x7784,0x777D,0x777F,0x7761,0x78C1,0x789F, 0x78A7,0x78B3,0x78A9,0x78A3,0x798E,0x798F,0x798D,0x7A2E, 0x7A31,0x7AAA,0x7AA9,0x7AED,0x7AEF,0x7BA1,0x7B95,0x7B8B, 0x7B75,0x7B97,0x7B9D,0x7B94,0x7B8F,0x7BB8,0x7B87,0x7B84, 0x7CB9,0x7CBD,0x7CBE,0x7DBB,0x7DB0,0x7D9C,0x7DBD,0x7DBE, 0x7DA0,0x7DCA,0x7DB4,0x7DB2,0x7DB1,0x7DBA,0x7DA2,0x7DBF, 0x7DB5,0x7DB8,0x7DAD,0x7DD2,0x7DC7,0x7DAC, /* Range 0xBB40 - 0xBB7E, array index: 0x11C6 */ 0x7F70,0x7FE0,0x7FE1,0x7FDF,0x805E,0x805A,0x8087,0x8150, 0x8180,0x818F,0x8188,0x818A,0x817F,0x8182,0x81E7,0x81FA, 0x8207,0x8214,0x821E,0x824B,0x84C9,0x84BF,0x84C6,0x84C4, 0x8499,0x849E,0x84B2,0x849C,0x84CB,0x84B8,0x84C0,0x84D3, 0x8490,0x84BC,0x84D1,0x84CA,0x873F,0x871C,0x873B,0x8722, 0x8725,0x8734,0x8718,0x8755,0x8737,0x8729,0x88F3,0x8902, 0x88F4,0x88F9,0x88F8,0x88FD,0x88E8,0x891A,0x88EF,0x8AA6, 0x8A8C,0x8A9E,0x8AA3,0x8A8D,0x8AA1,0x8A93,0x8AA4, /* Range 0xBBA1 - 0xBBFE, array index: 0x1205 */ 0x8AAA,0x8AA5,0x8AA8,0x8A98,0x8A91,0x8A9A,0x8AA7,0x8C6A, 0x8C8D,0x8C8C,0x8CD3,0x8CD1,0x8CD2,0x8D6B,0x8D99,0x8D95, 0x8DFC,0x8F14,0x8F12,0x8F15,0x8F13,0x8FA3,0x9060,0x9058, 0x905C,0x9063,0x9059,0x905E,0x9062,0x905D,0x905B,0x9119, 0x9118,0x911E,0x9175,0x9178,0x9177,0x9174,0x9278,0x9280, 0x9285,0x9298,0x9296,0x927B,0x9293,0x929C,0x92A8,0x927C, 0x9291,0x95A1,0x95A8,0x95A9,0x95A3,0x95A5,0x95A4,0x9699, 0x969C,0x969B,0x96CC,0x96D2,0x9700,0x977C,0x9785,0x97F6, 0x9817,0x9818,0x98AF,0x98B1,0x9903,0x9905,0x990C,0x9909, 0x99C1,0x9AAF,0x9AB0,0x9AE6,0x9B41,0x9B42,0x9CF4,0x9CF6, 0x9CF3,0x9EBC,0x9F3B,0x9F4A,0x5104,0x5100,0x50FB,0x50F5, 0x50F9,0x5102,0x5108,0x5109,0x5105,0x51DC, /* Range 0xBC40 - 0xBC7E, array index: 0x1263 */ 0x5287,0x5288,0x5289,0x528D,0x528A,0x52F0,0x53B2,0x562E, 0x563B,0x5639,0x5632,0x563F,0x5634,0x5629,0x5653,0x564E, 0x5657,0x5674,0x5636,0x562F,0x5630,0x5880,0x589F,0x589E, 0x58B3,0x589C,0x58AE,0x58A9,0x58A6,0x596D,0x5B09,0x5AFB, 0x5B0B,0x5AF5,0x5B0C,0x5B08,0x5BEE,0x5BEC,0x5BE9,0x5BEB, 0x5C64,0x5C65,0x5D9D,0x5D94,0x5E62,0x5E5F,0x5E61,0x5EE2, 0x5EDA,0x5EDF,0x5EDD,0x5EE3,0x5EE0,0x5F48,0x5F71,0x5FB7, 0x5FB5,0x6176,0x6167,0x616E,0x615D,0x6155,0x6182, /* Range 0xBCA1 - 0xBCFE, array index: 0x12A2 */ 0x617C,0x6170,0x616B,0x617E,0x61A7,0x6190,0x61AB,0x618E, 0x61AC,0x619A,0x61A4,0x6194,0x61AE,0x622E,0x6469,0x646F, 0x6479,0x649E,0x64B2,0x6488,0x6490,0x64B0,0x64A5,0x6493, 0x6495,0x64A9,0x6492,0x64AE,0x64AD,0x64AB,0x649A,0x64AC, 0x6499,0x64A2,0x64B3,0x6575,0x6577,0x6578,0x66AE,0x66AB, 0x66B4,0x66B1,0x6A23,0x6A1F,0x69E8,0x6A01,0x6A1E,0x6A19, 0x69FD,0x6A21,0x6A13,0x6A0A,0x69F3,0x6A02,0x6A05,0x69ED, 0x6A11,0x6B50,0x6B4E,0x6BA4,0x6BC5,0x6BC6,0x6F3F,0x6F7C, 0x6F84,0x6F51,0x6F66,0x6F54,0x6F86,0x6F6D,0x6F5B,0x6F78, 0x6F6E,0x6F8E,0x6F7A,0x6F70,0x6F64,0x6F97,0x6F58,0x6ED5, 0x6F6F,0x6F60,0x6F5F,0x719F,0x71AC,0x71B1,0x71A8,0x7256, 0x729B,0x734E,0x7357,0x7469,0x748B,0x7483, /* Range 0xBD40 - 0xBD7E, array index: 0x1300 */ 0x747E,0x7480,0x757F,0x7620,0x7629,0x761F,0x7624,0x7626, 0x7621,0x7622,0x769A,0x76BA,0x76E4,0x778E,0x7787,0x778C, 0x7791,0x778B,0x78CB,0x78C5,0x78BA,0x78CA,0x78BE,0x78D5, 0x78BC,0x78D0,0x7A3F,0x7A3C,0x7A40,0x7A3D,0x7A37,0x7A3B, 0x7AAF,0x7AAE,0x7BAD,0x7BB1,0x7BC4,0x7BB4,0x7BC6,0x7BC7, 0x7BC1,0x7BA0,0x7BCC,0x7CCA,0x7DE0,0x7DF4,0x7DEF,0x7DFB, 0x7DD8,0x7DEC,0x7DDD,0x7DE8,0x7DE3,0x7DDA,0x7DDE,0x7DE9, 0x7D9E,0x7DD9,0x7DF2,0x7DF9,0x7F75,0x7F77,0x7FAF, /* Range 0xBDA1 - 0xBDFE, array index: 0x133F */ 0x7FE9,0x8026,0x819B,0x819C,0x819D,0x81A0,0x819A,0x8198, 0x8517,0x853D,0x851A,0x84EE,0x852C,0x852D,0x8513,0x8511, 0x8523,0x8521,0x8514,0x84EC,0x8525,0x84FF,0x8506,0x8782, 0x8774,0x8776,0x8760,0x8766,0x8778,0x8768,0x8759,0x8757, 0x874C,0x8753,0x885B,0x885D,0x8910,0x8907,0x8912,0x8913, 0x8915,0x890A,0x8ABC,0x8AD2,0x8AC7,0x8AC4,0x8A95,0x8ACB, 0x8AF8,0x8AB2,0x8AC9,0x8AC2,0x8ABF,0x8AB0,0x8AD6,0x8ACD, 0x8AB6,0x8AB9,0x8ADB,0x8C4C,0x8C4E,0x8C6C,0x8CE0,0x8CDE, 0x8CE6,0x8CE4,0x8CEC,0x8CED,0x8CE2,0x8CE3,0x8CDC,0x8CEA, 0x8CE1,0x8D6D,0x8D9F,0x8DA3,0x8E2B,0x8E10,0x8E1D,0x8E22, 0x8E0F,0x8E29,0x8E1F,0x8E21,0x8E1E,0x8EBA,0x8F1D,0x8F1B, 0x8F1F,0x8F29,0x8F26,0x8F2A,0x8F1C,0x8F1E, /* Range 0xBE40 - 0xBE7E, array index: 0x139D */ 0x8F25,0x9069,0x906E,0x9068,0x906D,0x9077,0x9130,0x912D, 0x9127,0x9131,0x9187,0x9189,0x918B,0x9183,0x92C5,0x92BB, 0x92B7,0x92EA,0x92AC,0x92E4,0x92C1,0x92B3,0x92BC,0x92D2, 0x92C7,0x92F0,0x92B2,0x95AD,0x95B1,0x9704,0x9706,0x9707, 0x9709,0x9760,0x978D,0x978B,0x978F,0x9821,0x982B,0x981C, 0x98B3,0x990A,0x9913,0x9912,0x9918,0x99DD,0x99D0,0x99DF, 0x99DB,0x99D1,0x99D5,0x99D2,0x99D9,0x9AB7,0x9AEE,0x9AEF, 0x9B27,0x9B45,0x9B44,0x9B77,0x9B6F,0x9D06,0x9D09, /* Range 0xBEA1 - 0xBEFE, array index: 0x13DC */ 0x9D03,0x9EA9,0x9EBE,0x9ECE,0x58A8,0x9F52,0x5112,0x5118, 0x5114,0x5110,0x5115,0x5180,0x51AA,0x51DD,0x5291,0x5293, 0x52F3,0x5659,0x566B,0x5679,0x5669,0x5664,0x5678,0x566A, 0x5668,0x5665,0x5671,0x566F,0x566C,0x5662,0x5676,0x58C1, 0x58BE,0x58C7,0x58C5,0x596E,0x5B1D,0x5B34,0x5B78,0x5BF0, 0x5C0E,0x5F4A,0x61B2,0x6191,0x61A9,0x618A,0x61CD,0x61B6, 0x61BE,0x61CA,0x61C8,0x6230,0x64C5,0x64C1,0x64CB,0x64BB, 0x64BC,0x64DA,0x64C4,0x64C7,0x64C2,0x64CD,0x64BF,0x64D2, 0x64D4,0x64BE,0x6574,0x66C6,0x66C9,0x66B9,0x66C4,0x66C7, 0x66B8,0x6A3D,0x6A38,0x6A3A,0x6A59,0x6A6B,0x6A58,0x6A39, 0x6A44,0x6A62,0x6A61,0x6A4B,0x6A47,0x6A35,0x6A5F,0x6A48, 0x6B59,0x6B77,0x6C05,0x6FC2,0x6FB1,0x6FA1, /* Range 0xBF40 - 0xBF7E, array index: 0x143A */ 0x6FC3,0x6FA4,0x6FC1,0x6FA7,0x6FB3,0x6FC0,0x6FB9,0x6FB6, 0x6FA6,0x6FA0,0x6FB4,0x71BE,0x71C9,0x71D0,0x71D2,0x71C8, 0x71D5,0x71B9,0x71CE,0x71D9,0x71DC,0x71C3,0x71C4,0x7368, 0x749C,0x74A3,0x7498,0x749F,0x749E,0x74E2,0x750C,0x750D, 0x7634,0x7638,0x763A,0x76E7,0x76E5,0x77A0,0x779E,0x779F, 0x77A5,0x78E8,0x78DA,0x78EC,0x78E7,0x79A6,0x7A4D,0x7A4E, 0x7A46,0x7A4C,0x7A4B,0x7ABA,0x7BD9,0x7C11,0x7BC9,0x7BE4, 0x7BDB,0x7BE1,0x7BE9,0x7BE6,0x7CD5,0x7CD6,0x7E0A, /* Range 0xBFA1 - 0xBFFE, array index: 0x1479 */ 0x7E11,0x7E08,0x7E1B,0x7E23,0x7E1E,0x7E1D,0x7E09,0x7E10, 0x7F79,0x7FB2,0x7FF0,0x7FF1,0x7FEE,0x8028,0x81B3,0x81A9, 0x81A8,0x81FB,0x8208,0x8258,0x8259,0x854A,0x8559,0x8548, 0x8568,0x8569,0x8543,0x8549,0x856D,0x856A,0x855E,0x8783, 0x879F,0x879E,0x87A2,0x878D,0x8861,0x892A,0x8932,0x8925, 0x892B,0x8921,0x89AA,0x89A6,0x8AE6,0x8AFA,0x8AEB,0x8AF1, 0x8B00,0x8ADC,0x8AE7,0x8AEE,0x8AFE,0x8B01,0x8B02,0x8AF7, 0x8AED,0x8AF3,0x8AF6,0x8AFC,0x8C6B,0x8C6D,0x8C93,0x8CF4, 0x8E44,0x8E31,0x8E34,0x8E42,0x8E39,0x8E35,0x8F3B,0x8F2F, 0x8F38,0x8F33,0x8FA8,0x8FA6,0x9075,0x9074,0x9078,0x9072, 0x907C,0x907A,0x9134,0x9192,0x9320,0x9336,0x92F8,0x9333, 0x932F,0x9322,0x92FC,0x932B,0x9304,0x931A, /* Range 0xC040 - 0xC07E, array index: 0x14D7 */ 0x9310,0x9326,0x9321,0x9315,0x932E,0x9319,0x95BB,0x96A7, 0x96A8,0x96AA,0x96D5,0x970E,0x9711,0x9716,0x970D,0x9713, 0x970F,0x975B,0x975C,0x9766,0x9798,0x9830,0x9838,0x983B, 0x9837,0x982D,0x9839,0x9824,0x9910,0x9928,0x991E,0x991B, 0x9921,0x991A,0x99ED,0x99E2,0x99F1,0x9AB8,0x9ABC,0x9AFB, 0x9AED,0x9B28,0x9B91,0x9D15,0x9D23,0x9D26,0x9D28,0x9D12, 0x9D1B,0x9ED8,0x9ED4,0x9F8D,0x9F9C,0x512A,0x511F,0x5121, 0x5132,0x52F5,0x568E,0x5680,0x5690,0x5685,0x5687, /* Range 0xC0A1 - 0xC0FE, array index: 0x1516 */ 0x568F,0x58D5,0x58D3,0x58D1,0x58CE,0x5B30,0x5B2A,0x5B24, 0x5B7A,0x5C37,0x5C68,0x5DBC,0x5DBA,0x5DBD,0x5DB8,0x5E6B, 0x5F4C,0x5FBD,0x61C9,0x61C2,0x61C7,0x61E6,0x61CB,0x6232, 0x6234,0x64CE,0x64CA,0x64D8,0x64E0,0x64F0,0x64E6,0x64EC, 0x64F1,0x64E2,0x64ED,0x6582,0x6583,0x66D9,0x66D6,0x6A80, 0x6A94,0x6A84,0x6AA2,0x6A9C,0x6ADB,0x6AA3,0x6A7E,0x6A97, 0x6A90,0x6AA0,0x6B5C,0x6BAE,0x6BDA,0x6C08,0x6FD8,0x6FF1, 0x6FDF,0x6FE0,0x6FDB,0x6FE4,0x6FEB,0x6FEF,0x6F80,0x6FEC, 0x6FE1,0x6FE9,0x6FD5,0x6FEE,0x6FF0,0x71E7,0x71DF,0x71EE, 0x71E6,0x71E5,0x71ED,0x71EC,0x71F4,0x71E0,0x7235,0x7246, 0x7370,0x7372,0x74A9,0x74B0,0x74A6,0x74A8,0x7646,0x7642, 0x764C,0x76EA,0x77B3,0x77AA,0x77B0,0x77AC, /* Range 0xC140 - 0xC17E, array index: 0x1574 */ 0x77A7,0x77AD,0x77EF,0x78F7,0x78FA,0x78F4,0x78EF,0x7901, 0x79A7,0x79AA,0x7A57,0x7ABF,0x7C07,0x7C0D,0x7BFE,0x7BF7, 0x7C0C,0x7BE0,0x7CE0,0x7CDC,0x7CDE,0x7CE2,0x7CDF,0x7CD9, 0x7CDD,0x7E2E,0x7E3E,0x7E46,0x7E37,0x7E32,0x7E43,0x7E2B, 0x7E3D,0x7E31,0x7E45,0x7E41,0x7E34,0x7E39,0x7E48,0x7E35, 0x7E3F,0x7E2F,0x7F44,0x7FF3,0x7FFC,0x8071,0x8072,0x8070, 0x806F,0x8073,0x81C6,0x81C3,0x81BA,0x81C2,0x81C0,0x81BF, 0x81BD,0x81C9,0x81BE,0x81E8,0x8209,0x8271,0x85AA, /* Range 0xC1A1 - 0xC1FE, array index: 0x15B3 */ 0x8584,0x857E,0x859C,0x8591,0x8594,0x85AF,0x859B,0x8587, 0x85A8,0x858A,0x8667,0x87C0,0x87D1,0x87B3,0x87D2,0x87C6, 0x87AB,0x87BB,0x87BA,0x87C8,0x87CB,0x893B,0x8936,0x8944, 0x8938,0x893D,0x89AC,0x8B0E,0x8B17,0x8B19,0x8B1B,0x8B0A, 0x8B20,0x8B1D,0x8B04,0x8B10,0x8C41,0x8C3F,0x8C73,0x8CFA, 0x8CFD,0x8CFC,0x8CF8,0x8CFB,0x8DA8,0x8E49,0x8E4B,0x8E48, 0x8E4A,0x8F44,0x8F3E,0x8F42,0x8F45,0x8F3F,0x907F,0x907D, 0x9084,0x9081,0x9082,0x9080,0x9139,0x91A3,0x919E,0x919C, 0x934D,0x9382,0x9328,0x9375,0x934A,0x9365,0x934B,0x9318, 0x937E,0x936C,0x935B,0x9370,0x935A,0x9354,0x95CA,0x95CB, 0x95CC,0x95C8,0x95C6,0x96B1,0x96B8,0x96D6,0x971C,0x971E, 0x97A0,0x97D3,0x9846,0x98B6,0x9935,0x9A01, /* Range 0xC240 - 0xC27E, array index: 0x1611 */ 0x99FF,0x9BAE,0x9BAB,0x9BAA,0x9BAD,0x9D3B,0x9D3F,0x9E8B, 0x9ECF,0x9EDE,0x9EDC,0x9EDD,0x9EDB,0x9F3E,0x9F4B,0x53E2, 0x5695,0x56AE,0x58D9,0x58D8,0x5B38,0x5F5D,0x61E3,0x6233, 0x64F4,0x64F2,0x64FE,0x6506,0x64FA,0x64FB,0x64F7,0x65B7, 0x66DC,0x6726,0x6AB3,0x6AAC,0x6AC3,0x6ABB,0x6AB8,0x6AC2, 0x6AAE,0x6AAF,0x6B5F,0x6B78,0x6BAF,0x7009,0x700B,0x6FFE, 0x7006,0x6FFA,0x7011,0x700F,0x71FB,0x71FC,0x71FE,0x71F8, 0x7377,0x7375,0x74A7,0x74BF,0x7515,0x7656,0x7658, /* Range 0xC2A1 - 0xC2FE, array index: 0x1650 */ 0x7652,0x77BD,0x77BF,0x77BB,0x77BC,0x790E,0x79AE,0x7A61, 0x7A62,0x7A60,0x7AC4,0x7AC5,0x7C2B,0x7C27,0x7C2A,0x7C1E, 0x7C23,0x7C21,0x7CE7,0x7E54,0x7E55,0x7E5E,0x7E5A,0x7E61, 0x7E52,0x7E59,0x7F48,0x7FF9,0x7FFB,0x8077,0x8076,0x81CD, 0x81CF,0x820A,0x85CF,0x85A9,0x85CD,0x85D0,0x85C9,0x85B0, 0x85BA,0x85B9,0x85A6,0x87EF,0x87EC,0x87F2,0x87E0,0x8986, 0x89B2,0x89F4,0x8B28,0x8B39,0x8B2C,0x8B2B,0x8C50,0x8D05, 0x8E59,0x8E63,0x8E66,0x8E64,0x8E5F,0x8E55,0x8EC0,0x8F49, 0x8F4D,0x9087,0x9083,0x9088,0x91AB,0x91AC,0x91D0,0x9394, 0x938A,0x9396,0x93A2,0x93B3,0x93AE,0x93AC,0x93B0,0x9398, 0x939A,0x9397,0x95D4,0x95D6,0x95D0,0x95D5,0x96E2,0x96DC, 0x96D9,0x96DB,0x96DE,0x9724,0x97A3,0x97A6, /* Range 0xC340 - 0xC37E, array index: 0x16AE */ 0x97AD,0x97F9,0x984D,0x984F,0x984C,0x984E,0x9853,0x98BA, 0x993E,0x993F,0x993D,0x992E,0x99A5,0x9A0E,0x9AC1,0x9B03, 0x9B06,0x9B4F,0x9B4E,0x9B4D,0x9BCA,0x9BC9,0x9BFD,0x9BC8, 0x9BC0,0x9D51,0x9D5D,0x9D60,0x9EE0,0x9F15,0x9F2C,0x5133, 0x56A5,0x58DE,0x58DF,0x58E2,0x5BF5,0x9F90,0x5EEC,0x61F2, 0x61F7,0x61F6,0x61F5,0x6500,0x650F,0x66E0,0x66DD,0x6AE5, 0x6ADD,0x6ADA,0x6AD3,0x701B,0x701F,0x7028,0x701A,0x701D, 0x7015,0x7018,0x7206,0x720D,0x7258,0x72A2,0x7378, /* Range 0xC3A1 - 0xC3FE, array index: 0x16ED */ 0x737A,0x74BD,0x74CA,0x74E3,0x7587,0x7586,0x765F,0x7661, 0x77C7,0x7919,0x79B1,0x7A6B,0x7A69,0x7C3E,0x7C3F,0x7C38, 0x7C3D,0x7C37,0x7C40,0x7E6B,0x7E6D,0x7E79,0x7E69,0x7E6A, 0x7F85,0x7E73,0x7FB6,0x7FB9,0x7FB8,0x81D8,0x85E9,0x85DD, 0x85EA,0x85D5,0x85E4,0x85E5,0x85F7,0x87FB,0x8805,0x880D, 0x87F9,0x87FE,0x8960,0x895F,0x8956,0x895E,0x8B41,0x8B5C, 0x8B58,0x8B49,0x8B5A,0x8B4E,0x8B4F,0x8B46,0x8B59,0x8D08, 0x8D0A,0x8E7C,0x8E72,0x8E87,0x8E76,0x8E6C,0x8E7A,0x8E74, 0x8F54,0x8F4E,0x8FAD,0x908A,0x908B,0x91B1,0x91AE,0x93E1, 0x93D1,0x93DF,0x93C3,0x93C8,0x93DC,0x93DD,0x93D6,0x93E2, 0x93CD,0x93D8,0x93E4,0x93D7,0x93E8,0x95DC,0x96B4,0x96E3, 0x972A,0x9727,0x9761,0x97DC,0x97FB,0x985E, /* Range 0xC440 - 0xC47E, array index: 0x174B */ 0x9858,0x985B,0x98BC,0x9945,0x9949,0x9A16,0x9A19,0x9B0D, 0x9BE8,0x9BE7,0x9BD6,0x9BDB,0x9D89,0x9D61,0x9D72,0x9D6A, 0x9D6C,0x9E92,0x9E97,0x9E93,0x9EB4,0x52F8,0x56A8,0x56B7, 0x56B6,0x56B4,0x56BC,0x58E4,0x5B40,0x5B43,0x5B7D,0x5BF6, 0x5DC9,0x61F8,0x61FA,0x6518,0x6514,0x6519,0x66E6,0x6727, 0x6AEC,0x703E,0x7030,0x7032,0x7210,0x737B,0x74CF,0x7662, 0x7665,0x7926,0x792A,0x792C,0x792B,0x7AC7,0x7AF6,0x7C4C, 0x7C43,0x7C4D,0x7CEF,0x7CF0,0x8FAE,0x7E7D,0x7E7C, /* Range 0xC4A1 - 0xC4FE, array index: 0x178A */ 0x7E82,0x7F4C,0x8000,0x81DA,0x8266,0x85FB,0x85F9,0x8611, 0x85FA,0x8606,0x860B,0x8607,0x860A,0x8814,0x8815,0x8964, 0x89BA,0x89F8,0x8B70,0x8B6C,0x8B66,0x8B6F,0x8B5F,0x8B6B, 0x8D0F,0x8D0D,0x8E89,0x8E81,0x8E85,0x8E82,0x91B4,0x91CB, 0x9418,0x9403,0x93FD,0x95E1,0x9730,0x98C4,0x9952,0x9951, 0x99A8,0x9A2B,0x9A30,0x9A37,0x9A35,0x9C13,0x9C0D,0x9E79, 0x9EB5,0x9EE8,0x9F2F,0x9F5F,0x9F63,0x9F61,0x5137,0x5138, 0x56C1,0x56C0,0x56C2,0x5914,0x5C6C,0x5DCD,0x61FC,0x61FE, 0x651D,0x651C,0x6595,0x66E9,0x6AFB,0x6B04,0x6AFA,0x6BB2, 0x704C,0x721B,0x72A7,0x74D6,0x74D4,0x7669,0x77D3,0x7C50, 0x7E8F,0x7E8C,0x7FBC,0x8617,0x862D,0x861A,0x8823,0x8822, 0x8821,0x881F,0x896A,0x896C,0x89BD,0x8B74, /* Range 0xC540 - 0xC57E, array index: 0x17E8 */ 0x8B77,0x8B7D,0x8D13,0x8E8A,0x8E8D,0x8E8B,0x8F5F,0x8FAF, 0x91BA,0x942E,0x9433,0x9435,0x943A,0x9438,0x9432,0x942B, 0x95E2,0x9738,0x9739,0x9732,0x97FF,0x9867,0x9865,0x9957, 0x9A45,0x9A43,0x9A40,0x9A3E,0x9ACF,0x9B54,0x9B51,0x9C2D, 0x9C25,0x9DAF,0x9DB4,0x9DC2,0x9DB8,0x9E9D,0x9EEF,0x9F19, 0x9F5C,0x9F66,0x9F67,0x513C,0x513B,0x56C8,0x56CA,0x56C9, 0x5B7F,0x5DD4,0x5DD2,0x5F4E,0x61FF,0x6524,0x6B0A,0x6B61, 0x7051,0x7058,0x7380,0x74E4,0x758A,0x766E,0x766C, /* Range 0xC5A1 - 0xC5FE, array index: 0x1827 */ 0x79B3,0x7C60,0x7C5F,0x807E,0x807D,0x81DF,0x8972,0x896F, 0x89FC,0x8B80,0x8D16,0x8D17,0x8E91,0x8E93,0x8F61,0x9148, 0x9444,0x9451,0x9452,0x973D,0x973E,0x97C3,0x97C1,0x986B, 0x9955,0x9A55,0x9A4D,0x9AD2,0x9B1A,0x9C49,0x9C31,0x9C3E, 0x9C3B,0x9DD3,0x9DD7,0x9F34,0x9F6C,0x9F6A,0x9F94,0x56CC, 0x5DD6,0x6200,0x6523,0x652B,0x652A,0x66EC,0x6B10,0x74DA, 0x7ACA,0x7C64,0x7C63,0x7C65,0x7E93,0x7E96,0x7E94,0x81E2, 0x8638,0x863F,0x8831,0x8B8A,0x9090,0x908F,0x9463,0x9460, 0x9464,0x9768,0x986F,0x995C,0x9A5A,0x9A5B,0x9A57,0x9AD3, 0x9AD4,0x9AD1,0x9C54,0x9C57,0x9C56,0x9DE5,0x9E9F,0x9EF4, 0x56D1,0x58E9,0x652C,0x705E,0x7671,0x7672,0x77D7,0x7F50, 0x7F88,0x8836,0x8839,0x8862,0x8B93,0x8B92, /* Range 0xC640 - 0xC67E, array index: 0x1885 */ 0x8B96,0x8277,0x8D1B,0x91C0,0x946A,0x9742,0x9748,0x9744, 0x97C6,0x9870,0x9A5F,0x9B22,0x9B58,0x9C5F,0x9DF9,0x9DFA, 0x9E7C,0x9E7D,0x9F07,0x9F77,0x9F72,0x5EF3,0x6B16,0x7063, 0x7C6C,0x7C6E,0x883B,0x89C0,0x8EA1,0x91C1,0x9472,0x9470, 0x9871,0x995E,0x9AD6,0x9B23,0x9ECC,0x7064,0x77DA,0x8B9A, 0x9477,0x97C9,0x9A62,0x9A65,0x7E9C,0x8B9C,0x8EAA,0x91C5, 0x947D,0x947E,0x947C,0x9C77,0x9C78,0x9EF7,0x8C54,0x947F, 0x9E1A,0x7228,0x9A6A,0x9B31,0x9E1B,0x9E1E,0x7C72, /* Range 0xC6A1 - 0xC6FE, array index: 0x18C4 */ 0x30FE,0x309D,0x309E,0x3005,0x3041,0x3042,0x3043,0x3044, 0x3045,0x3046,0x3047,0x3048,0x3049,0x304A,0x304B,0x304C, 0x304D,0x304E,0x304F,0x3050,0x3051,0x3052,0x3053,0x3054, 0x3055,0x3056,0x3057,0x3058,0x3059,0x305A,0x305B,0x305C, 0x305D,0x305E,0x305F,0x3060,0x3061,0x3062,0x3063,0x3064, 0x3065,0x3066,0x3067,0x3068,0x3069,0x306A,0x306B,0x306C, 0x306D,0x306E,0x306F,0x3070,0x3071,0x3072,0x3073,0x3074, 0x3075,0x3076,0x3077,0x3078,0x3079,0x307A,0x307B,0x307C, 0x307D,0x307E,0x307F,0x3080,0x3081,0x3082,0x3083,0x3084, 0x3085,0x3086,0x3087,0x3088,0x3089,0x308A,0x308B,0x308C, 0x308D,0x308E,0x308F,0x3090,0x3091,0x3092,0x3093,0x30A1, 0x30A2,0x30A3,0x30A4,0x30A5,0x30A6,0x30A7, /* Range 0xC740 - 0xC77E, array index: 0x1922 */ 0x30A8,0x30A9,0x30AA,0x30AB,0x30AC,0x30AD,0x30AE,0x30AF, 0x30B0,0x30B1,0x30B2,0x30B3,0x30B4,0x30B5,0x30B6,0x30B7, 0x30B8,0x30B9,0x30BA,0x30BB,0x30BC,0x30BD,0x30BE,0x30BF, 0x30C0,0x30C1,0x30C2,0x30C3,0x30C4,0x30C5,0x30C6,0x30C7, 0x30C8,0x30C9,0x30CA,0x30CB,0x30CC,0x30CD,0x30CE,0x30CF, 0x30D0,0x30D1,0x30D2,0x30D3,0x30D4,0x30D5,0x30D6,0x30D7, 0x30D8,0x30D9,0x30DA,0x30DB,0x30DC,0x30DD,0x30DE,0x30DF, 0x30E0,0x30E1,0x30E2,0x30E3,0x30E4,0x30E5,0x30E6, /* Range 0xC7A1 - 0xC7FC, array index: 0x1961 */ 0x30E7,0x30E8,0x30E9,0x30EA,0x30EB,0x30EC,0x30ED,0x30EE, 0x30EF,0x30F0,0x30F1,0x30F2,0x30F3,0x30F4,0x30F5,0x30F6, 0x0414,0x0415,0x0401,0x0416,0x0417,0x0418,0x0419,0x041A, 0x041B,0x041C,0x0423,0x0424,0x0425,0x0426,0x0427,0x0428, 0x0429,0x042A,0x042B,0x042C,0x042D,0x042E,0x042F,0x0430, 0x0431,0x0432,0x0433,0x0434,0x0435,0x0451,0x0436,0x0437, 0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,0x043F, 0x0440,0x0441,0x0442,0x0443,0x0444,0x0445,0x0446,0x0447, 0x0448,0x0449,0x044A,0x044B,0x044C,0x044D,0x044E,0x044F, 0x2460,0x2461,0x2462,0x2463,0x2464,0x2465,0x2466,0x2467, 0x2468,0x2469,0x2474,0x2475,0x2476,0x2477,0x2478,0x2479, 0x247A,0x247B,0x247C,0x247D, /* Range 0xC940 - 0xC97E, array index: 0x19BD */ 0x4E42,0x4E5C,0x51F5,0x531A,0x5382,0x4E07,0x4E0C,0x4E47, 0x4E8D,0x56D7,0xFA0C,0x5C6E,0x5F73,0x4E0F,0x5187,0x4E0E, 0x4E2E,0x4E93,0x4EC2,0x4EC9,0x4EC8,0x5198,0x52FC,0x536C, 0x53B9,0x5720,0x5903,0x592C,0x5C10,0x5DFF,0x65E1,0x6BB3, 0x6BCC,0x6C14,0x723F,0x4E31,0x4E3C,0x4EE8,0x4EDC,0x4EE9, 0x4EE1,0x4EDD,0x4EDA,0x520C,0x531C,0x534C,0x5722,0x5723, 0x5917,0x592F,0x5B81,0x5B84,0x5C12,0x5C3B,0x5C74,0x5C73, 0x5E04,0x5E80,0x5E82,0x5FC9,0x6209,0x6250,0x6C15, /* Range 0xC9A1 - 0xC9FE, array index: 0x19FC */ 0x6C36,0x6C43,0x6C3F,0x6C3B,0x72AE,0x72B0,0x738A,0x79B8, 0x808A,0x961E,0x4F0E,0x4F18,0x4F2C,0x4EF5,0x4F14,0x4EF1, 0x4F00,0x4EF7,0x4F08,0x4F1D,0x4F02,0x4F05,0x4F22,0x4F13, 0x4F04,0x4EF4,0x4F12,0x51B1,0x5213,0x5209,0x5210,0x52A6, 0x5322,0x531F,0x534D,0x538A,0x5407,0x56E1,0x56DF,0x572E, 0x572A,0x5734,0x593C,0x5980,0x597C,0x5985,0x597B,0x597E, 0x5977,0x597F,0x5B56,0x5C15,0x5C25,0x5C7C,0x5C7A,0x5C7B, 0x5C7E,0x5DDF,0x5E75,0x5E84,0x5F02,0x5F1A,0x5F74,0x5FD5, 0x5FD4,0x5FCF,0x625C,0x625E,0x6264,0x6261,0x6266,0x6262, 0x6259,0x6260,0x625A,0x6265,0x65EF,0x65EE,0x673E,0x6739, 0x6738,0x673B,0x673A,0x673F,0x673C,0x6733,0x6C18,0x6C46, 0x6C52,0x6C5C,0x6C4F,0x6C4A,0x6C54,0x6C4B, /* Range 0xCA40 - 0xCA7E, array index: 0x1A5A */ 0x6C4C,0x7071,0x725E,0x72B4,0x72B5,0x738E,0x752A,0x767F, 0x7A75,0x7F51,0x8278,0x827C,0x8280,0x827D,0x827F,0x864D, 0x897E,0x9099,0x9097,0x9098,0x909B,0x9094,0x9622,0x9624, 0x9620,0x9623,0x4F56,0x4F3B,0x4F62,0x4F49,0x4F53,0x4F64, 0x4F3E,0x4F67,0x4F52,0x4F5F,0x4F41,0x4F58,0x4F2D,0x4F33, 0x4F3F,0x4F61,0x518F,0x51B9,0x521C,0x521E,0x5221,0x52AD, 0x52AE,0x5309,0x5363,0x5372,0x538E,0x538F,0x5430,0x5437, 0x542A,0x5454,0x5445,0x5419,0x541C,0x5425,0x5418, /* Range 0xCAA1 - 0xCAFE, array index: 0x1A99 */ 0x543D,0x544F,0x5441,0x5428,0x5424,0x5447,0x56EE,0x56E7, 0x56E5,0x5741,0x5745,0x574C,0x5749,0x574B,0x5752,0x5906, 0x5940,0x59A6,0x5998,0x59A0,0x5997,0x598E,0x59A2,0x5990, 0x598F,0x59A7,0x59A1,0x5B8E,0x5B92,0x5C28,0x5C2A,0x5C8D, 0x5C8F,0x5C88,0x5C8B,0x5C89,0x5C92,0x5C8A,0x5C86,0x5C93, 0x5C95,0x5DE0,0x5E0A,0x5E0E,0x5E8B,0x5E89,0x5E8C,0x5E88, 0x5E8D,0x5F05,0x5F1D,0x5F78,0x5F76,0x5FD2,0x5FD1,0x5FD0, 0x5FED,0x5FE8,0x5FEE,0x5FF3,0x5FE1,0x5FE4,0x5FE3,0x5FFA, 0x5FEF,0x5FF7,0x5FFB,0x6000,0x5FF4,0x623A,0x6283,0x628C, 0x628E,0x628F,0x6294,0x6287,0x6271,0x627B,0x627A,0x6270, 0x6281,0x6288,0x6277,0x627D,0x6272,0x6274,0x6537,0x65F0, 0x65F4,0x65F3,0x65F2,0x65F5,0x6745,0x6747, /* Range 0xCB40 - 0xCB7E, array index: 0x1AF7 */ 0x6759,0x6755,0x674C,0x6748,0x675D,0x674D,0x675A,0x674B, 0x6BD0,0x6C19,0x6C1A,0x6C78,0x6C67,0x6C6B,0x6C84,0x6C8B, 0x6C8F,0x6C71,0x6C6F,0x6C69,0x6C9A,0x6C6D,0x6C87,0x6C95, 0x6C9C,0x6C66,0x6C73,0x6C65,0x6C7B,0x6C8E,0x7074,0x707A, 0x7263,0x72BF,0x72BD,0x72C3,0x72C6,0x72C1,0x72BA,0x72C5, 0x7395,0x7397,0x7393,0x7394,0x7392,0x753A,0x7539,0x7594, 0x7595,0x7681,0x793D,0x8034,0x8095,0x8099,0x8090,0x8092, 0x809C,0x8290,0x828F,0x8285,0x828E,0x8291,0x8293, /* Range 0xCBA1 - 0xCBFE, array index: 0x1B36 */ 0x828A,0x8283,0x8284,0x8C78,0x8FC9,0x8FBF,0x909F,0x90A1, 0x90A5,0x909E,0x90A7,0x90A0,0x9630,0x9628,0x962F,0x962D, 0x4E33,0x4F98,0x4F7C,0x4F85,0x4F7D,0x4F80,0x4F87,0x4F76, 0x4F74,0x4F89,0x4F84,0x4F77,0x4F4C,0x4F97,0x4F6A,0x4F9A, 0x4F79,0x4F81,0x4F78,0x4F90,0x4F9C,0x4F94,0x4F9E,0x4F92, 0x4F82,0x4F95,0x4F6B,0x4F6E,0x519E,0x51BC,0x51BE,0x5235, 0x5232,0x5233,0x5246,0x5231,0x52BC,0x530A,0x530B,0x533C, 0x5392,0x5394,0x5487,0x547F,0x5481,0x5491,0x5482,0x5488, 0x546B,0x547A,0x547E,0x5465,0x546C,0x5474,0x5466,0x548D, 0x546F,0x5461,0x5460,0x5498,0x5463,0x5467,0x5464,0x56F7, 0x56F9,0x576F,0x5772,0x576D,0x576B,0x5771,0x5770,0x5776, 0x5780,0x5775,0x577B,0x5773,0x5774,0x5762, /* Range 0xCC40 - 0xCC7E, array index: 0x1B94 */ 0x5768,0x577D,0x590C,0x5945,0x59B5,0x59BA,0x59CF,0x59CE, 0x59B2,0x59CC,0x59C1,0x59B6,0x59BC,0x59C3,0x59D6,0x59B1, 0x59BD,0x59C0,0x59C8,0x59B4,0x59C7,0x5B62,0x5B65,0x5B93, 0x5B95,0x5C44,0x5C47,0x5CAE,0x5CA4,0x5CA0,0x5CB5,0x5CAF, 0x5CA8,0x5CAC,0x5C9F,0x5CA3,0x5CAD,0x5CA2,0x5CAA,0x5CA7, 0x5C9D,0x5CA5,0x5CB6,0x5CB0,0x5CA6,0x5E17,0x5E14,0x5E19, 0x5F28,0x5F22,0x5F23,0x5F24,0x5F54,0x5F82,0x5F7E,0x5F7D, 0x5FDE,0x5FE5,0x602D,0x6026,0x6019,0x6032,0x600B, /* Range 0xCCA1 - 0xCCFE, array index: 0x1BD3 */ 0x6034,0x600A,0x6017,0x6033,0x601A,0x601E,0x602C,0x6022, 0x600D,0x6010,0x602E,0x6013,0x6011,0x600C,0x6009,0x601C, 0x6214,0x623D,0x62AD,0x62B4,0x62D1,0x62BE,0x62AA,0x62B6, 0x62CA,0x62AE,0x62B3,0x62AF,0x62BB,0x62A9,0x62B0,0x62B8, 0x653D,0x65A8,0x65BB,0x6609,0x65FC,0x6604,0x6612,0x6608, 0x65FB,0x6603,0x660B,0x660D,0x6605,0x65FD,0x6611,0x6610, 0x66F6,0x670A,0x6785,0x676C,0x678E,0x6792,0x6776,0x677B, 0x6798,0x6786,0x6784,0x6774,0x678D,0x678C,0x677A,0x679F, 0x6791,0x6799,0x6783,0x677D,0x6781,0x6778,0x6779,0x6794, 0x6B25,0x6B80,0x6B7E,0x6BDE,0x6C1D,0x6C93,0x6CEC,0x6CEB, 0x6CEE,0x6CD9,0x6CB6,0x6CD4,0x6CAD,0x6CE7,0x6CB7,0x6CD0, 0x6CC2,0x6CBA,0x6CC3,0x6CC6,0x6CED,0x6CF2, /* Range 0xCD40 - 0xCD7E, array index: 0x1C31 */ 0x6CD2,0x6CDD,0x6CB4,0x6C8A,0x6C9D,0x6C80,0x6CDE,0x6CC0, 0x6D30,0x6CCD,0x6CC7,0x6CB0,0x6CF9,0x6CCF,0x6CE9,0x6CD1, 0x7094,0x7098,0x7085,0x7093,0x7086,0x7084,0x7091,0x7096, 0x7082,0x709A,0x7083,0x726A,0x72D6,0x72CB,0x72D8,0x72C9, 0x72DC,0x72D2,0x72D4,0x72DA,0x72CC,0x72D1,0x73A4,0x73A1, 0x73AD,0x73A6,0x73A2,0x73A0,0x73AC,0x739D,0x74DD,0x74E8, 0x753F,0x7540,0x753E,0x758C,0x7598,0x76AF,0x76F3,0x76F1, 0x76F0,0x76F5,0x77F8,0x77FC,0x77F9,0x77FB,0x77FA, /* Range 0xCDA1 - 0xCDFE, array index: 0x1C70 */ 0x77F7,0x7942,0x793F,0x79C5,0x7A78,0x7A7B,0x7AFB,0x7C75, 0x7CFD,0x8035,0x808F,0x80AE,0x80A3,0x80B8,0x80B5,0x80AD, 0x8220,0x82A0,0x82C0,0x82AB,0x829A,0x8298,0x829B,0x82B5, 0x82A7,0x82AE,0x82BC,0x829E,0x82BA,0x82B4,0x82A8,0x82A1, 0x82A9,0x82C2,0x82A4,0x82C3,0x82B6,0x82A2,0x8670,0x866F, 0x866D,0x866E,0x8C56,0x8FD2,0x8FCB,0x8FD3,0x8FCD,0x8FD6, 0x8FD5,0x8FD7,0x90B2,0x90B4,0x90AF,0x90B3,0x90B0,0x9639, 0x963D,0x963C,0x963A,0x9643,0x4FCD,0x4FC5,0x4FD3,0x4FB2, 0x4FC9,0x4FCB,0x4FC1,0x4FD4,0x4FDC,0x4FD9,0x4FBB,0x4FB3, 0x4FDB,0x4FC7,0x4FD6,0x4FBA,0x4FC0,0x4FB9,0x4FEC,0x5244, 0x5249,0x52C0,0x52C2,0x533D,0x537C,0x5397,0x5396,0x5399, 0x5398,0x54BA,0x54A1,0x54AD,0x54A5,0x54CF, /* Range 0xCE40 - 0xCE7E, array index: 0x1CCE */ 0x54C3,0x830D,0x54B7,0x54AE,0x54D6,0x54B6,0x54C5,0x54C6, 0x54A0,0x5470,0x54BC,0x54A2,0x54BE,0x5472,0x54DE,0x54B0, 0x57B5,0x579E,0x579F,0x57A4,0x578C,0x5797,0x579D,0x579B, 0x5794,0x5798,0x578F,0x5799,0x57A5,0x579A,0x5795,0x58F4, 0x590D,0x5953,0x59E1,0x59DE,0x59EE,0x5A00,0x59F1,0x59DD, 0x59FA,0x59FD,0x59FC,0x59F6,0x59E4,0x59F2,0x59F7,0x59DB, 0x59E9,0x59F3,0x59F5,0x59E0,0x59FE,0x59F4,0x59ED,0x5BA8, 0x5C4C,0x5CD0,0x5CD8,0x5CCC,0x5CD7,0x5CCB,0x5CDB, /* Range 0xCEA1 - 0xCEFE, array index: 0x1D0D */ 0x5CDE,0x5CDA,0x5CC9,0x5CC7,0x5CCA,0x5CD6,0x5CD3,0x5CD4, 0x5CCF,0x5CC8,0x5CC6,0x5CCE,0x5CDF,0x5CF8,0x5DF9,0x5E21, 0x5E22,0x5E23,0x5E20,0x5E24,0x5EB0,0x5EA4,0x5EA2,0x5E9B, 0x5EA3,0x5EA5,0x5F07,0x5F2E,0x5F56,0x5F86,0x6037,0x6039, 0x6054,0x6072,0x605E,0x6045,0x6053,0x6047,0x6049,0x605B, 0x604C,0x6040,0x6042,0x605F,0x6024,0x6044,0x6058,0x6066, 0x606E,0x6242,0x6243,0x62CF,0x630D,0x630B,0x62F5,0x630E, 0x6303,0x62EB,0x62F9,0x630F,0x630C,0x62F8,0x62F6,0x6300, 0x6313,0x6314,0x62FA,0x6315,0x62FB,0x62F0,0x6541,0x6543, 0x65AA,0x65BF,0x6636,0x6621,0x6632,0x6635,0x661C,0x6626, 0x6622,0x6633,0x662B,0x663A,0x661D,0x6634,0x6639,0x662E, 0x670F,0x6710,0x67C1,0x67F2,0x67C8,0x67BA, /* Range 0xCF40 - 0xCF7E, array index: 0x1D6B */ 0x67DC,0x67BB,0x67F8,0x67D8,0x67C0,0x67B7,0x67C5,0x67EB, 0x67E4,0x67DF,0x67B5,0x67CD,0x67B3,0x67F7,0x67F6,0x67EE, 0x67E3,0x67C2,0x67B9,0x67CE,0x67E7,0x67F0,0x67B2,0x67FC, 0x67C6,0x67ED,0x67CC,0x67AE,0x67E6,0x67DB,0x67FA,0x67C9, 0x67CA,0x67C3,0x67EA,0x67CB,0x6B28,0x6B82,0x6B84,0x6BB6, 0x6BD6,0x6BD8,0x6BE0,0x6C20,0x6C21,0x6D28,0x6D34,0x6D2D, 0x6D1F,0x6D3C,0x6D3F,0x6D12,0x6D0A,0x6CDA,0x6D33,0x6D04, 0x6D19,0x6D3A,0x6D1A,0x6D11,0x6D00,0x6D1D,0x6D42, /* Range 0xCFA1 - 0xCFFE, array index: 0x1DAA */ 0x6D01,0x6D18,0x6D37,0x6D03,0x6D0F,0x6D40,0x6D07,0x6D20, 0x6D2C,0x6D08,0x6D22,0x6D09,0x6D10,0x70B7,0x709F,0x70BE, 0x70B1,0x70B0,0x70A1,0x70B4,0x70B5,0x70A9,0x7241,0x7249, 0x724A,0x726C,0x7270,0x7273,0x726E,0x72CA,0x72E4,0x72E8, 0x72EB,0x72DF,0x72EA,0x72E6,0x72E3,0x7385,0x73CC,0x73C2, 0x73C8,0x73C5,0x73B9,0x73B6,0x73B5,0x73B4,0x73EB,0x73BF, 0x73C7,0x73BE,0x73C3,0x73C6,0x73B8,0x73CB,0x74EC,0x74EE, 0x752E,0x7547,0x7548,0x75A7,0x75AA,0x7679,0x76C4,0x7708, 0x7703,0x7704,0x7705,0x770A,0x76F7,0x76FB,0x76FA,0x77E7, 0x77E8,0x7806,0x7811,0x7812,0x7805,0x7810,0x780F,0x780E, 0x7809,0x7803,0x7813,0x794A,0x794C,0x794B,0x7945,0x7944, 0x79D5,0x79CD,0x79CF,0x79D6,0x79CE,0x7A80, /* Range 0xD040 - 0xD07E, array index: 0x1E08 */ 0x7A7E,0x7AD1,0x7B00,0x7B01,0x7C7A,0x7C78,0x7C79,0x7C7F, 0x7C80,0x7C81,0x7D03,0x7D08,0x7D01,0x7F58,0x7F91,0x7F8D, 0x7FBE,0x8007,0x800E,0x800F,0x8014,0x8037,0x80D8,0x80C7, 0x80E0,0x80D1,0x80C8,0x80C2,0x80D0,0x80C5,0x80E3,0x80D9, 0x80DC,0x80CA,0x80D5,0x80C9,0x80CF,0x80D7,0x80E6,0x80CD, 0x81FF,0x8221,0x8294,0x82D9,0x82FE,0x82F9,0x8307,0x82E8, 0x8300,0x82D5,0x833A,0x82EB,0x82D6,0x82F4,0x82EC,0x82E1, 0x82F2,0x82F5,0x830C,0x82FB,0x82F6,0x82F0,0x82EA, /* Range 0xD0A1 - 0xD0FE, array index: 0x1E47 */ 0x82E4,0x82E0,0x82FA,0x82F3,0x82ED,0x8677,0x8674,0x867C, 0x8673,0x8841,0x884E,0x8867,0x886A,0x8869,0x89D3,0x8A04, 0x8A07,0x8D72,0x8FE3,0x8FE1,0x8FEE,0x8FE0,0x90F1,0x90BD, 0x90BF,0x90D5,0x90C5,0x90BE,0x90C7,0x90CB,0x90C8,0x91D4, 0x91D3,0x9654,0x964F,0x9651,0x9653,0x964A,0x964E,0x501E, 0x5005,0x5007,0x5013,0x5022,0x5030,0x501B,0x4FF5,0x4FF4, 0x5033,0x5037,0x502C,0x4FF6,0x4FF7,0x5017,0x501C,0x5020, 0x5027,0x5035,0x502F,0x5031,0x500E,0x515A,0x5194,0x5193, 0x51CA,0x51C4,0x51C5,0x51C8,0x51CE,0x5261,0x525A,0x5252, 0x525E,0x525F,0x5255,0x5262,0x52CD,0x530E,0x539E,0x5526, 0x54E2,0x5517,0x5512,0x54E7,0x54F3,0x54E4,0x551A,0x54FF, 0x5504,0x5508,0x54EB,0x5511,0x5505,0x54F1, /* Range 0xD140 - 0xD17E, array index: 0x1EA5 */ 0x550A,0x54FB,0x54F7,0x54F8,0x54E0,0x550E,0x5503,0x550B, 0x5701,0x5702,0x57CC,0x5832,0x57D5,0x57D2,0x57BA,0x57C6, 0x57BD,0x57BC,0x57B8,0x57B6,0x57BF,0x57C7,0x57D0,0x57B9, 0x57C1,0x590E,0x594A,0x5A19,0x5A16,0x5A2D,0x5A2E,0x5A15, 0x5A0F,0x5A17,0x5A0A,0x5A1E,0x5A33,0x5B6C,0x5BA7,0x5BAD, 0x5BAC,0x5C03,0x5C56,0x5C54,0x5CEC,0x5CFF,0x5CEE,0x5CF1, 0x5CF7,0x5D00,0x5CF9,0x5E29,0x5E28,0x5EA8,0x5EAE,0x5EAA, 0x5EAC,0x5F33,0x5F30,0x5F67,0x605D,0x605A,0x6067, /* Range 0xD1A1 - 0xD1FE, array index: 0x1EE4 */ 0x6041,0x60A2,0x6088,0x6080,0x6092,0x6081,0x609D,0x6083, 0x6095,0x609B,0x6097,0x6087,0x609C,0x608E,0x6219,0x6246, 0x62F2,0x6310,0x6356,0x632C,0x6344,0x6345,0x6336,0x6343, 0x63E4,0x6339,0x634B,0x634A,0x633C,0x6329,0x6341,0x6334, 0x6358,0x6354,0x6359,0x632D,0x6347,0x6333,0x635A,0x6351, 0x6338,0x6357,0x6340,0x6348,0x654A,0x6546,0x65C6,0x65C3, 0x65C4,0x65C2,0x664A,0x665F,0x6647,0x6651,0x6712,0x6713, 0x681F,0x681A,0x6849,0x6832,0x6833,0x683B,0x684B,0x684F, 0x6816,0x6831,0x681C,0x6835,0x682B,0x682D,0x682F,0x684E, 0x6844,0x6834,0x681D,0x6812,0x6814,0x6826,0x6828,0x682E, 0x684D,0x683A,0x6825,0x6820,0x6B2C,0x6B2F,0x6B2D,0x6B31, 0x6B34,0x6B6D,0x8082,0x6B88,0x6BE6,0x6BE4, /* Range 0xD240 - 0xD27E, array index: 0x1F42 */ 0x6BE8,0x6BE3,0x6BE2,0x6BE7,0x6C25,0x6D7A,0x6D63,0x6D64, 0x6D76,0x6D0D,0x6D61,0x6D92,0x6D58,0x6D62,0x6D6D,0x6D6F, 0x6D91,0x6D8D,0x6DEF,0x6D7F,0x6D86,0x6D5E,0x6D67,0x6D60, 0x6D97,0x6D70,0x6D7C,0x6D5F,0x6D82,0x6D98,0x6D2F,0x6D68, 0x6D8B,0x6D7E,0x6D80,0x6D84,0x6D16,0x6D83,0x6D7B,0x6D7D, 0x6D75,0x6D90,0x70DC,0x70D3,0x70D1,0x70DD,0x70CB,0x7F39, 0x70E2,0x70D7,0x70D2,0x70DE,0x70E0,0x70D4,0x70CD,0x70C5, 0x70C6,0x70C7,0x70DA,0x70CE,0x70E1,0x7242,0x7278, /* Range 0xD2A1 - 0xD2FE, array index: 0x1F81 */ 0x7277,0x7276,0x7300,0x72FA,0x72F4,0x72FE,0x72F6,0x72F3, 0x72FB,0x7301,0x73D3,0x73D9,0x73E5,0x73D6,0x73BC,0x73E7, 0x73E3,0x73E9,0x73DC,0x73D2,0x73DB,0x73D4,0x73DD,0x73DA, 0x73D7,0x73D8,0x73E8,0x74DE,0x74DF,0x74F4,0x74F5,0x7521, 0x755B,0x755F,0x75B0,0x75C1,0x75BB,0x75C4,0x75C0,0x75BF, 0x75B6,0x75BA,0x768A,0x76C9,0x771D,0x771B,0x7710,0x7713, 0x7712,0x7723,0x7711,0x7715,0x7719,0x771A,0x7722,0x7727, 0x7823,0x782C,0x7822,0x7835,0x782F,0x7828,0x782E,0x782B, 0x7821,0x7829,0x7833,0x782A,0x7831,0x7954,0x795B,0x794F, 0x795C,0x7953,0x7952,0x7951,0x79EB,0x79EC,0x79E0,0x79EE, 0x79ED,0x79EA,0x79DC,0x79DE,0x79DD,0x7A86,0x7A89,0x7A85, 0x7A8B,0x7A8C,0x7A8A,0x7A87,0x7AD8,0x7B10, /* Range 0xD340 - 0xD37E, array index: 0x1FDF */ 0x7B04,0x7B13,0x7B05,0x7B0F,0x7B08,0x7B0A,0x7B0E,0x7B09, 0x7B12,0x7C84,0x7C91,0x7C8A,0x7C8C,0x7C88,0x7C8D,0x7C85, 0x7D1E,0x7D1D,0x7D11,0x7D0E,0x7D18,0x7D16,0x7D13,0x7D1F, 0x7D12,0x7D0F,0x7D0C,0x7F5C,0x7F61,0x7F5E,0x7F60,0x7F5D, 0x7F5B,0x7F96,0x7F92,0x7FC3,0x7FC2,0x7FC0,0x8016,0x803E, 0x8039,0x80FA,0x80F2,0x80F9,0x80F5,0x8101,0x80FB,0x8100, 0x8201,0x822F,0x8225,0x8333,0x832D,0x8344,0x8319,0x8351, 0x8325,0x8356,0x833F,0x8341,0x8326,0x831C,0x8322, /* Range 0xD3A1 - 0xD3FE, array index: 0x201E */ 0x8342,0x834E,0x831B,0x832A,0x8308,0x833C,0x834D,0x8316, 0x8324,0x8320,0x8337,0x832F,0x8329,0x8347,0x8345,0x834C, 0x8353,0x831E,0x832C,0x834B,0x8327,0x8348,0x8653,0x8652, 0x86A2,0x86A8,0x8696,0x868D,0x8691,0x869E,0x8687,0x8697, 0x8686,0x868B,0x869A,0x8685,0x86A5,0x8699,0x86A1,0x86A7, 0x8695,0x8698,0x868E,0x869D,0x8690,0x8694,0x8843,0x8844, 0x886D,0x8875,0x8876,0x8872,0x8880,0x8871,0x887F,0x886F, 0x8883,0x887E,0x8874,0x887C,0x8A12,0x8C47,0x8C57,0x8C7B, 0x8CA4,0x8CA3,0x8D76,0x8D78,0x8DB5,0x8DB7,0x8DB6,0x8ED1, 0x8ED3,0x8FFE,0x8FF5,0x9002,0x8FFF,0x8FFB,0x9004,0x8FFC, 0x8FF6,0x90D6,0x90E0,0x90D9,0x90DA,0x90E3,0x90DF,0x90E5, 0x90D8,0x90DB,0x90D7,0x90DC,0x90E4,0x9150, /* Range 0xD440 - 0xD47E, array index: 0x207C */ 0x914E,0x914F,0x91D5,0x91E2,0x91DA,0x965C,0x965F,0x96BC, 0x98E3,0x9ADF,0x9B2F,0x4E7F,0x5070,0x506A,0x5061,0x505E, 0x5060,0x5053,0x504B,0x505D,0x5072,0x5048,0x504D,0x5041, 0x505B,0x504A,0x5062,0x5015,0x5045,0x505F,0x5069,0x506B, 0x5063,0x5064,0x5046,0x5040,0x506E,0x5073,0x5057,0x5051, 0x51D0,0x526B,0x526D,0x526C,0x526E,0x52D6,0x52D3,0x532D, 0x539C,0x5575,0x5576,0x553C,0x554D,0x5550,0x5534,0x552A, 0x5551,0x5562,0x5536,0x5535,0x5530,0x5552,0x5545, /* Range 0xD4A1 - 0xD4FE, array index: 0x20BB */ 0x550C,0x5532,0x5565,0x554E,0x5539,0x5548,0x552D,0x553B, 0x5540,0x554B,0x570A,0x5707,0x57FB,0x5814,0x57E2,0x57F6, 0x57DC,0x57F4,0x5800,0x57ED,0x57FD,0x5808,0x57F8,0x580B, 0x57F3,0x57CF,0x5807,0x57EE,0x57E3,0x57F2,0x57E5,0x57EC, 0x57E1,0x580E,0x57FC,0x5810,0x57E7,0x5801,0x580C,0x57F1, 0x57E9,0x57F0,0x580D,0x5804,0x595C,0x5A60,0x5A58,0x5A55, 0x5A67,0x5A5E,0x5A38,0x5A35,0x5A6D,0x5A50,0x5A5F,0x5A65, 0x5A6C,0x5A53,0x5A64,0x5A57,0x5A43,0x5A5D,0x5A52,0x5A44, 0x5A5B,0x5A48,0x5A8E,0x5A3E,0x5A4D,0x5A39,0x5A4C,0x5A70, 0x5A69,0x5A47,0x5A51,0x5A56,0x5A42,0x5A5C,0x5B72,0x5B6E, 0x5BC1,0x5BC0,0x5C59,0x5D1E,0x5D0B,0x5D1D,0x5D1A,0x5D20, 0x5D0C,0x5D28,0x5D0D,0x5D26,0x5D25,0x5D0F, /* Range 0xD540 - 0xD57E, array index: 0x2119 */ 0x5D30,0x5D12,0x5D23,0x5D1F,0x5D2E,0x5E3E,0x5E34,0x5EB1, 0x5EB4,0x5EB9,0x5EB2,0x5EB3,0x5F36,0x5F38,0x5F9B,0x5F96, 0x5F9F,0x608A,0x6090,0x6086,0x60BE,0x60B0,0x60BA,0x60D3, 0x60D4,0x60CF,0x60E4,0x60D9,0x60DD,0x60C8,0x60B1,0x60DB, 0x60B7,0x60CA,0x60BF,0x60C3,0x60CD,0x60C0,0x6332,0x6365, 0x638A,0x6382,0x637D,0x63BD,0x639E,0x63AD,0x639D,0x6397, 0x63AB,0x638E,0x636F,0x6387,0x6390,0x636E,0x63AF,0x6375, 0x639C,0x636D,0x63AE,0x637C,0x63A4,0x633B,0x639F, /* Range 0xD5A1 - 0xD5FE, array index: 0x2158 */ 0x6378,0x6385,0x6381,0x6391,0x638D,0x6370,0x6553,0x65CD, 0x6665,0x6661,0x665B,0x6659,0x665C,0x6662,0x6718,0x6879, 0x6887,0x6890,0x689C,0x686D,0x686E,0x68AE,0x68AB,0x6956, 0x686F,0x68A3,0x68AC,0x68A9,0x6875,0x6874,0x68B2,0x688F, 0x6877,0x6892,0x687C,0x686B,0x6872,0x68AA,0x6880,0x6871, 0x687E,0x689B,0x6896,0x688B,0x68A0,0x6889,0x68A4,0x6878, 0x687B,0x6891,0x688C,0x688A,0x687D,0x6B36,0x6B33,0x6B37, 0x6B38,0x6B91,0x6B8F,0x6B8D,0x6B8E,0x6B8C,0x6C2A,0x6DC0, 0x6DAB,0x6DB4,0x6DB3,0x6E74,0x6DAC,0x6DE9,0x6DE2,0x6DB7, 0x6DF6,0x6DD4,0x6E00,0x6DC8,0x6DE0,0x6DDF,0x6DD6,0x6DBE, 0x6DE5,0x6DDC,0x6DDD,0x6DDB,0x6DF4,0x6DCA,0x6DBD,0x6DED, 0x6DF0,0x6DBA,0x6DD5,0x6DC2,0x6DCF,0x6DC9, /* Range 0xD640 - 0xD67E, array index: 0x21B6 */ 0x6DD0,0x6DF2,0x6DD3,0x6DFD,0x6DD7,0x6DCD,0x6DE3,0x6DBB, 0x70FA,0x710D,0x70F7,0x7117,0x70F4,0x710C,0x70F0,0x7104, 0x70F3,0x7110,0x70FC,0x70FF,0x7106,0x7113,0x7100,0x70F8, 0x70F6,0x710B,0x7102,0x710E,0x727E,0x727B,0x727C,0x727F, 0x731D,0x7317,0x7307,0x7311,0x7318,0x730A,0x7308,0x72FF, 0x730F,0x731E,0x7388,0x73F6,0x73F8,0x73F5,0x7404,0x7401, 0x73FD,0x7407,0x7400,0x73FA,0x73FC,0x73FF,0x740C,0x740B, 0x73F4,0x7408,0x7564,0x7563,0x75CE,0x75D2,0x75CF, /* Range 0xD6A1 - 0xD6FE, array index: 0x21F5 */ 0x75CB,0x75CC,0x75D1,0x75D0,0x768F,0x7689,0x76D3,0x7739, 0x772F,0x772D,0x7731,0x7732,0x7734,0x7733,0x773D,0x7725, 0x773B,0x7735,0x7848,0x7852,0x7849,0x784D,0x784A,0x784C, 0x7826,0x7845,0x7850,0x7964,0x7967,0x7969,0x796A,0x7963, 0x796B,0x7961,0x79BB,0x79FA,0x79F8,0x79F6,0x79F7,0x7A8F, 0x7A94,0x7A90,0x7B35,0x7B47,0x7B34,0x7B25,0x7B30,0x7B22, 0x7B24,0x7B33,0x7B18,0x7B2A,0x7B1D,0x7B31,0x7B2B,0x7B2D, 0x7B2F,0x7B32,0x7B38,0x7B1A,0x7B23,0x7C94,0x7C98,0x7C96, 0x7CA3,0x7D35,0x7D3D,0x7D38,0x7D36,0x7D3A,0x7D45,0x7D2C, 0x7D29,0x7D41,0x7D47,0x7D3E,0x7D3F,0x7D4A,0x7D3B,0x7D28, 0x7F63,0x7F95,0x7F9C,0x7F9D,0x7F9B,0x7FCA,0x7FCB,0x7FCD, 0x7FD0,0x7FD1,0x7FC7,0x7FCF,0x7FC9,0x801F, /* Range 0xD740 - 0xD77E, array index: 0x2253 */ 0x801E,0x801B,0x8047,0x8043,0x8048,0x8118,0x8125,0x8119, 0x811B,0x812D,0x811F,0x812C,0x811E,0x8121,0x8115,0x8127, 0x811D,0x8122,0x8211,0x8238,0x8233,0x823A,0x8234,0x8232, 0x8274,0x8390,0x83A3,0x83A8,0x838D,0x837A,0x8373,0x83A4, 0x8374,0x838F,0x8381,0x8395,0x8399,0x8375,0x8394,0x83A9, 0x837D,0x8383,0x838C,0x839D,0x839B,0x83AA,0x838B,0x837E, 0x83A5,0x83AF,0x8388,0x8397,0x83B0,0x837F,0x83A6,0x8387, 0x83AE,0x8376,0x839A,0x8659,0x8656,0x86BF,0x86B7, /* Range 0xD7A1 - 0xD7FE, array index: 0x2292 */ 0x86C2,0x86C1,0x86C5,0x86BA,0x86B0,0x86C8,0x86B9,0x86B3, 0x86B8,0x86CC,0x86B4,0x86BB,0x86BC,0x86C3,0x86BD,0x86BE, 0x8852,0x8889,0x8895,0x88A8,0x88A2,0x88AA,0x889A,0x8891, 0x88A1,0x889F,0x8898,0x88A7,0x8899,0x889B,0x8897,0x88A4, 0x88AC,0x888C,0x8893,0x888E,0x8982,0x89D6,0x89D9,0x89D5, 0x8A30,0x8A27,0x8A2C,0x8A1E,0x8C39,0x8C3B,0x8C5C,0x8C5D, 0x8C7D,0x8CA5,0x8D7D,0x8D7B,0x8D79,0x8DBC,0x8DC2,0x8DB9, 0x8DBF,0x8DC1,0x8ED8,0x8EDE,0x8EDD,0x8EDC,0x8ED7,0x8EE0, 0x8EE1,0x9024,0x900B,0x9011,0x901C,0x900C,0x9021,0x90EF, 0x90EA,0x90F0,0x90F4,0x90F2,0x90F3,0x90D4,0x90EB,0x90EC, 0x90E9,0x9156,0x9158,0x915A,0x9153,0x9155,0x91EC,0x91F4, 0x91F1,0x91F3,0x91F8,0x91E4,0x91F9,0x91EA, /* Range 0xD840 - 0xD87E, array index: 0x22F0 */ 0x91EB,0x91F7,0x91E8,0x91EE,0x957A,0x9586,0x9588,0x967C, 0x966D,0x966B,0x9671,0x966F,0x96BF,0x976A,0x9804,0x98E5, 0x9997,0x509B,0x5095,0x5094,0x509E,0x508B,0x50A3,0x5083, 0x508C,0x508E,0x509D,0x5068,0x509C,0x5092,0x5082,0x5087, 0x515F,0x51D4,0x5312,0x5311,0x53A4,0x53A7,0x5591,0x55A8, 0x55A5,0x55AD,0x5577,0x5645,0x55A2,0x5593,0x5588,0x558F, 0x55B5,0x5581,0x55A3,0x5592,0x55A4,0x557D,0x558C,0x55A6, 0x557F,0x5595,0x55A1,0x558E,0x570C,0x5829,0x5837, /* Range 0xD8A1 - 0xD8FE, array index: 0x232F */ 0x5819,0x581E,0x5827,0x5823,0x5828,0x57F5,0x5848,0x5825, 0x581C,0x581B,0x5833,0x583F,0x5836,0x582E,0x5839,0x5838, 0x582D,0x582C,0x583B,0x5961,0x5AAF,0x5A94,0x5A9F,0x5A7A, 0x5AA2,0x5A9E,0x5A78,0x5AA6,0x5A7C,0x5AA5,0x5AAC,0x5A95, 0x5AAE,0x5A37,0x5A84,0x5A8A,0x5A97,0x5A83,0x5A8B,0x5AA9, 0x5A7B,0x5A7D,0x5A8C,0x5A9C,0x5A8F,0x5A93,0x5A9D,0x5BEA, 0x5BCD,0x5BCB,0x5BD4,0x5BD1,0x5BCA,0x5BCE,0x5C0C,0x5C30, 0x5D37,0x5D43,0x5D6B,0x5D41,0x5D4B,0x5D3F,0x5D35,0x5D51, 0x5D4E,0x5D55,0x5D33,0x5D3A,0x5D52,0x5D3D,0x5D31,0x5D59, 0x5D42,0x5D39,0x5D49,0x5D38,0x5D3C,0x5D32,0x5D36,0x5D40, 0x5D45,0x5E44,0x5E41,0x5F58,0x5FA6,0x5FA5,0x5FAB,0x60C9, 0x60B9,0x60CC,0x60E2,0x60CE,0x60C4,0x6114, /* Range 0xD940 - 0xD97E, array index: 0x238D */ 0x60F2,0x610A,0x6116,0x6105,0x60F5,0x6113,0x60F8,0x60FC, 0x60FE,0x60C1,0x6103,0x6118,0x611D,0x6110,0x60FF,0x6104, 0x610B,0x624A,0x6394,0x63B1,0x63B0,0x63CE,0x63E5,0x63E8, 0x63EF,0x63C3,0x649D,0x63F3,0x63CA,0x63E0,0x63F6,0x63D5, 0x63F2,0x63F5,0x6461,0x63DF,0x63BE,0x63DD,0x63DC,0x63C4, 0x63D8,0x63D3,0x63C2,0x63C7,0x63CC,0x63CB,0x63C8,0x63F0, 0x63D7,0x63D9,0x6532,0x6567,0x656A,0x6564,0x655C,0x6568, 0x6565,0x658C,0x659D,0x659E,0x65AE,0x65D0,0x65D2, /* Range 0xD9A1 - 0xD9FE, array index: 0x23CC */ 0x667C,0x666C,0x667B,0x6680,0x6671,0x6679,0x666A,0x6672, 0x6701,0x690C,0x68D3,0x6904,0x68DC,0x692A,0x68EC,0x68EA, 0x68F1,0x690F,0x68D6,0x68F7,0x68EB,0x68E4,0x68F6,0x6913, 0x6910,0x68F3,0x68E1,0x6907,0x68CC,0x6908,0x6970,0x68B4, 0x6911,0x68EF,0x68C6,0x6914,0x68F8,0x68D0,0x68FD,0x68FC, 0x68E8,0x690B,0x690A,0x6917,0x68CE,0x68C8,0x68DD,0x68DE, 0x68E6,0x68F4,0x68D1,0x6906,0x68D4,0x68E9,0x6915,0x6925, 0x68C7,0x6B39,0x6B3B,0x6B3F,0x6B3C,0x6B94,0x6B97,0x6B99, 0x6B95,0x6BBD,0x6BF0,0x6BF2,0x6BF3,0x6C30,0x6DFC,0x6E46, 0x6E47,0x6E1F,0x6E49,0x6E88,0x6E3C,0x6E3D,0x6E45,0x6E62, 0x6E2B,0x6E3F,0x6E41,0x6E5D,0x6E73,0x6E1C,0x6E33,0x6E4B, 0x6E40,0x6E51,0x6E3B,0x6E03,0x6E2E,0x6E5E, /* Range 0xDA40 - 0xDA7E, array index: 0x242A */ 0x6E68,0x6E5C,0x6E61,0x6E31,0x6E28,0x6E60,0x6E71,0x6E6B, 0x6E39,0x6E22,0x6E30,0x6E53,0x6E65,0x6E27,0x6E78,0x6E64, 0x6E77,0x6E55,0x6E79,0x6E52,0x6E66,0x6E35,0x6E36,0x6E5A, 0x7120,0x711E,0x712F,0x70FB,0x712E,0x7131,0x7123,0x7125, 0x7122,0x7132,0x711F,0x7128,0x713A,0x711B,0x724B,0x725A, 0x7288,0x7289,0x7286,0x7285,0x728B,0x7312,0x730B,0x7330, 0x7322,0x7331,0x7333,0x7327,0x7332,0x732D,0x7326,0x7323, 0x7335,0x730C,0x742E,0x742C,0x7430,0x742B,0x7416, /* Range 0xDAA1 - 0xDAFE, array index: 0x2469 */ 0x741A,0x7421,0x742D,0x7431,0x7424,0x7423,0x741D,0x7429, 0x7420,0x7432,0x74FB,0x752F,0x756F,0x756C,0x75E7,0x75DA, 0x75E1,0x75E6,0x75DD,0x75DF,0x75E4,0x75D7,0x7695,0x7692, 0x76DA,0x7746,0x7747,0x7744,0x774D,0x7745,0x774A,0x774E, 0x774B,0x774C,0x77DE,0x77EC,0x7860,0x7864,0x7865,0x785C, 0x786D,0x7871,0x786A,0x786E,0x7870,0x7869,0x7868,0x785E, 0x7862,0x7974,0x7973,0x7972,0x7970,0x7A02,0x7A0A,0x7A03, 0x7A0C,0x7A04,0x7A99,0x7AE6,0x7AE4,0x7B4A,0x7B3B,0x7B44, 0x7B48,0x7B4C,0x7B4E,0x7B40,0x7B58,0x7B45,0x7CA2,0x7C9E, 0x7CA8,0x7CA1,0x7D58,0x7D6F,0x7D63,0x7D53,0x7D56,0x7D67, 0x7D6A,0x7D4F,0x7D6D,0x7D5C,0x7D6B,0x7D52,0x7D54,0x7D69, 0x7D51,0x7D5F,0x7D4E,0x7F3E,0x7F3F,0x7F65, /* Range 0xDB40 - 0xDB7E, array index: 0x24C7 */ 0x7F66,0x7FA2,0x7FA0,0x7FA1,0x7FD7,0x8051,0x804F,0x8050, 0x80FE,0x80D4,0x8143,0x814A,0x8152,0x814F,0x8147,0x813D, 0x814D,0x813A,0x81E6,0x81EE,0x81F7,0x81F8,0x81F9,0x8204, 0x823C,0x823D,0x823F,0x8275,0x833B,0x83CF,0x83F9,0x8423, 0x83C0,0x83E8,0x8412,0x83E7,0x83E4,0x83FC,0x83F6,0x8410, 0x83C6,0x83C8,0x83EB,0x83E3,0x83BF,0x8401,0x83DD,0x83E5, 0x83D8,0x83FF,0x83E1,0x83CB,0x83CE,0x83D6,0x83F5,0x83C9, 0x8409,0x840F,0x83DE,0x8411,0x8406,0x83C2,0x83F3, /* Range 0xDBA1 - 0xDBFE, array index: 0x2506 */ 0x83D5,0x83FA,0x83C7,0x83D1,0x83EA,0x8413,0x83C3,0x83EC, 0x83EE,0x83C4,0x83FB,0x83D7,0x83E2,0x841B,0x83DB,0x83FE, 0x86D8,0x86E2,0x86E6,0x86D3,0x86E3,0x86DA,0x86EA,0x86DD, 0x86EB,0x86DC,0x86EC,0x86E9,0x86D7,0x86E8,0x86D1,0x8848, 0x8856,0x8855,0x88BA,0x88D7,0x88B9,0x88B8,0x88C0,0x88BE, 0x88B6,0x88BC,0x88B7,0x88BD,0x88B2,0x8901,0x88C9,0x8995, 0x8998,0x8997,0x89DD,0x89DA,0x89DB,0x8A4E,0x8A4D,0x8A39, 0x8A59,0x8A40,0x8A57,0x8A58,0x8A44,0x8A45,0x8A52,0x8A48, 0x8A51,0x8A4A,0x8A4C,0x8A4F,0x8C5F,0x8C81,0x8C80,0x8CBA, 0x8CBE,0x8CB0,0x8CB9,0x8CB5,0x8D84,0x8D80,0x8D89,0x8DD8, 0x8DD3,0x8DCD,0x8DC7,0x8DD6,0x8DDC,0x8DCF,0x8DD5,0x8DD9, 0x8DC8,0x8DD7,0x8DC5,0x8EEF,0x8EF7,0x8EFA, /* Range 0xDC40 - 0xDC7E, array index: 0x2564 */ 0x8EF9,0x8EE6,0x8EEE,0x8EE5,0x8EF5,0x8EE7,0x8EE8,0x8EF6, 0x8EEB,0x8EF1,0x8EEC,0x8EF4,0x8EE9,0x902D,0x9034,0x902F, 0x9106,0x912C,0x9104,0x90FF,0x90FC,0x9108,0x90F9,0x90FB, 0x9101,0x9100,0x9107,0x9105,0x9103,0x9161,0x9164,0x915F, 0x9162,0x9160,0x9201,0x920A,0x9225,0x9203,0x921A,0x9226, 0x920F,0x920C,0x9200,0x9212,0x91FF,0x91FD,0x9206,0x9204, 0x9227,0x9202,0x921C,0x9224,0x9219,0x9217,0x9205,0x9216, 0x957B,0x958D,0x958C,0x9590,0x9687,0x967E,0x9688, /* Range 0xDCA1 - 0xDCFE, array index: 0x25A3 */ 0x9689,0x9683,0x9680,0x96C2,0x96C8,0x96C3,0x96F1,0x96F0, 0x976C,0x9770,0x976E,0x9807,0x98A9,0x98EB,0x9CE6,0x9EF9, 0x4E83,0x4E84,0x4EB6,0x50BD,0x50BF,0x50C6,0x50AE,0x50C4, 0x50CA,0x50B4,0x50C8,0x50C2,0x50B0,0x50C1,0x50BA,0x50B1, 0x50CB,0x50C9,0x50B6,0x50B8,0x51D7,0x527A,0x5278,0x527B, 0x527C,0x55C3,0x55DB,0x55CC,0x55D0,0x55CB,0x55CA,0x55DD, 0x55C0,0x55D4,0x55C4,0x55E9,0x55BF,0x55D2,0x558D,0x55CF, 0x55D5,0x55E2,0x55D6,0x55C8,0x55F2,0x55CD,0x55D9,0x55C2, 0x5714,0x5853,0x5868,0x5864,0x584F,0x584D,0x5849,0x586F, 0x5855,0x584E,0x585D,0x5859,0x5865,0x585B,0x583D,0x5863, 0x5871,0x58FC,0x5AC7,0x5AC4,0x5ACB,0x5ABA,0x5AB8,0x5AB1, 0x5AB5,0x5AB0,0x5ABF,0x5AC8,0x5ABB,0x5AC6, /* Range 0xDD40 - 0xDD7E, array index: 0x2601 */ 0x5AB7,0x5AC0,0x5ACA,0x5AB4,0x5AB6,0x5ACD,0x5AB9,0x5A90, 0x5BD6,0x5BD8,0x5BD9,0x5C1F,0x5C33,0x5D71,0x5D63,0x5D4A, 0x5D65,0x5D72,0x5D6C,0x5D5E,0x5D68,0x5D67,0x5D62,0x5DF0, 0x5E4F,0x5E4E,0x5E4A,0x5E4D,0x5E4B,0x5EC5,0x5ECC,0x5EC6, 0x5ECB,0x5EC7,0x5F40,0x5FAF,0x5FAD,0x60F7,0x6149,0x614A, 0x612B,0x6145,0x6136,0x6132,0x612E,0x6146,0x612F,0x614F, 0x6129,0x6140,0x6220,0x9168,0x6223,0x6225,0x6224,0x63C5, 0x63F1,0x63EB,0x6410,0x6412,0x6409,0x6420,0x6424, /* Range 0xDDA1 - 0xDDFE, array index: 0x2640 */ 0x6433,0x6443,0x641F,0x6415,0x6418,0x6439,0x6437,0x6422, 0x6423,0x640C,0x6426,0x6430,0x6428,0x6441,0x6435,0x642F, 0x640A,0x641A,0x6440,0x6425,0x6427,0x640B,0x63E7,0x641B, 0x642E,0x6421,0x640E,0x656F,0x6592,0x65D3,0x6686,0x668C, 0x6695,0x6690,0x668B,0x668A,0x6699,0x6694,0x6678,0x6720, 0x6966,0x695F,0x6938,0x694E,0x6962,0x6971,0x693F,0x6945, 0x696A,0x6939,0x6942,0x6957,0x6959,0x697A,0x6948,0x6949, 0x6935,0x696C,0x6933,0x693D,0x6965,0x68F0,0x6978,0x6934, 0x6969,0x6940,0x696F,0x6944,0x6976,0x6958,0x6941,0x6974, 0x694C,0x693B,0x694B,0x6937,0x695C,0x694F,0x6951,0x6932, 0x6952,0x692F,0x697B,0x693C,0x6B46,0x6B45,0x6B43,0x6B42, 0x6B48,0x6B41,0x6B9B,0xFA0D,0x6BFB,0x6BFC, /* Range 0xDE40 - 0xDE7E, array index: 0x269E */ 0x6BF9,0x6BF7,0x6BF8,0x6E9B,0x6ED6,0x6EC8,0x6E8F,0x6EC0, 0x6E9F,0x6E93,0x6E94,0x6EA0,0x6EB1,0x6EB9,0x6EC6,0x6ED2, 0x6EBD,0x6EC1,0x6E9E,0x6EC9,0x6EB7,0x6EB0,0x6ECD,0x6EA6, 0x6ECF,0x6EB2,0x6EBE,0x6EC3,0x6EDC,0x6ED8,0x6E99,0x6E92, 0x6E8E,0x6E8D,0x6EA4,0x6EA1,0x6EBF,0x6EB3,0x6ED0,0x6ECA, 0x6E97,0x6EAE,0x6EA3,0x7147,0x7154,0x7152,0x7163,0x7160, 0x7141,0x715D,0x7162,0x7172,0x7178,0x716A,0x7161,0x7142, 0x7158,0x7143,0x714B,0x7170,0x715F,0x7150,0x7153, /* Range 0xDEA1 - 0xDEFE, array index: 0x26DD */ 0x7144,0x714D,0x715A,0x724F,0x728D,0x728C,0x7291,0x7290, 0x728E,0x733C,0x7342,0x733B,0x733A,0x7340,0x734A,0x7349, 0x7444,0x744A,0x744B,0x7452,0x7451,0x7457,0x7440,0x744F, 0x7450,0x744E,0x7442,0x7446,0x744D,0x7454,0x74E1,0x74FF, 0x74FE,0x74FD,0x751D,0x7579,0x7577,0x6983,0x75EF,0x760F, 0x7603,0x75F7,0x75FE,0x75FC,0x75F9,0x75F8,0x7610,0x75FB, 0x75F6,0x75ED,0x75F5,0x75FD,0x7699,0x76B5,0x76DD,0x7755, 0x775F,0x7760,0x7752,0x7756,0x775A,0x7769,0x7767,0x7754, 0x7759,0x776D,0x77E0,0x7887,0x789A,0x7894,0x788F,0x7884, 0x7895,0x7885,0x7886,0x78A1,0x7883,0x7879,0x7899,0x7880, 0x7896,0x787B,0x797C,0x7982,0x797D,0x7979,0x7A11,0x7A18, 0x7A19,0x7A12,0x7A17,0x7A15,0x7A22,0x7A13, /* Range 0xDF40 - 0xDF7E, array index: 0x273B */ 0x7A1B,0x7A10,0x7AA3,0x7AA2,0x7A9E,0x7AEB,0x7B66,0x7B64, 0x7B6D,0x7B74,0x7B69,0x7B72,0x7B65,0x7B73,0x7B71,0x7B70, 0x7B61,0x7B78,0x7B76,0x7B63,0x7CB2,0x7CB4,0x7CAF,0x7D88, 0x7D86,0x7D80,0x7D8D,0x7D7F,0x7D85,0x7D7A,0x7D8E,0x7D7B, 0x7D83,0x7D7C,0x7D8C,0x7D94,0x7D84,0x7D7D,0x7D92,0x7F6D, 0x7F6B,0x7F67,0x7F68,0x7F6C,0x7FA6,0x7FA5,0x7FA7,0x7FDB, 0x7FDC,0x8021,0x8164,0x8160,0x8177,0x815C,0x8169,0x815B, 0x8162,0x8172,0x6721,0x815E,0x8176,0x8167,0x816F, /* Range 0xDFA1 - 0xDFFE, array index: 0x277A */ 0x8144,0x8161,0x821D,0x8249,0x8244,0x8240,0x8242,0x8245, 0x84F1,0x843F,0x8456,0x8476,0x8479,0x848F,0x848D,0x8465, 0x8451,0x8440,0x8486,0x8467,0x8430,0x844D,0x847D,0x845A, 0x8459,0x8474,0x8473,0x845D,0x8507,0x845E,0x8437,0x843A, 0x8434,0x847A,0x8443,0x8478,0x8432,0x8445,0x8429,0x83D9, 0x844B,0x842F,0x8442,0x842D,0x845F,0x8470,0x8439,0x844E, 0x844C,0x8452,0x846F,0x84C5,0x848E,0x843B,0x8447,0x8436, 0x8433,0x8468,0x847E,0x8444,0x842B,0x8460,0x8454,0x846E, 0x8450,0x870B,0x8704,0x86F7,0x870C,0x86FA,0x86D6,0x86F5, 0x874D,0x86F8,0x870E,0x8709,0x8701,0x86F6,0x870D,0x8705, 0x88D6,0x88CB,0x88CD,0x88CE,0x88DE,0x88DB,0x88DA,0x88CC, 0x88D0,0x8985,0x899B,0x89DF,0x89E5,0x89E4, /* Range 0xE040 - 0xE07E, array index: 0x27D8 */ 0x89E1,0x89E0,0x89E2,0x89DC,0x89E6,0x8A76,0x8A86,0x8A7F, 0x8A61,0x8A3F,0x8A77,0x8A82,0x8A84,0x8A75,0x8A83,0x8A81, 0x8A74,0x8A7A,0x8C3C,0x8C4B,0x8C4A,0x8C65,0x8C64,0x8C66, 0x8C86,0x8C84,0x8C85,0x8CCC,0x8D68,0x8D69,0x8D91,0x8D8C, 0x8D8E,0x8D8F,0x8D8D,0x8D93,0x8D94,0x8D90,0x8D92,0x8DF0, 0x8DE0,0x8DEC,0x8DF1,0x8DEE,0x8DD0,0x8DE9,0x8DE3,0x8DE2, 0x8DE7,0x8DF2,0x8DEB,0x8DF4,0x8F06,0x8EFF,0x8F01,0x8F00, 0x8F05,0x8F07,0x8F08,0x8F02,0x8F0B,0x9052,0x903F, /* Range 0xE0A1 - 0xE0FE, array index: 0x2817 */ 0x9044,0x9049,0x903D,0x9110,0x910D,0x910F,0x9111,0x9116, 0x9114,0x910B,0x910E,0x916E,0x916F,0x9248,0x9252,0x9230, 0x923A,0x9266,0x9233,0x9265,0x925E,0x9283,0x922E,0x924A, 0x9246,0x926D,0x926C,0x924F,0x9260,0x9267,0x926F,0x9236, 0x9261,0x9270,0x9231,0x9254,0x9263,0x9250,0x9272,0x924E, 0x9253,0x924C,0x9256,0x9232,0x959F,0x959C,0x959E,0x959B, 0x9692,0x9693,0x9691,0x9697,0x96CE,0x96FA,0x96FD,0x96F8, 0x96F5,0x9773,0x9777,0x9778,0x9772,0x980F,0x980D,0x980E, 0x98AC,0x98F6,0x98F9,0x99AF,0x99B2,0x99B0,0x99B5,0x9AAD, 0x9AAB,0x9B5B,0x9CEA,0x9CED,0x9CE7,0x9E80,0x9EFD,0x50E6, 0x50D4,0x50D7,0x50E8,0x50F3,0x50DB,0x50EA,0x50DD,0x50E4, 0x50D3,0x50EC,0x50F0,0x50EF,0x50E3,0x50E0, /* Range 0xE140 - 0xE17E, array index: 0x2875 */ 0x51D8,0x5280,0x5281,0x52E9,0x52EB,0x5330,0x53AC,0x5627, 0x5615,0x560C,0x5612,0x55FC,0x560F,0x561C,0x5601,0x5613, 0x5602,0x55FA,0x561D,0x5604,0x55FF,0x55F9,0x5889,0x587C, 0x5890,0x5898,0x5886,0x5881,0x587F,0x5874,0x588B,0x587A, 0x5887,0x5891,0x588E,0x5876,0x5882,0x5888,0x587B,0x5894, 0x588F,0x58FE,0x596B,0x5ADC,0x5AEE,0x5AE5,0x5AD5,0x5AEA, 0x5ADA,0x5AED,0x5AEB,0x5AF3,0x5AE2,0x5AE0,0x5ADB,0x5AEC, 0x5ADE,0x5ADD,0x5AD9,0x5AE8,0x5ADF,0x5B77,0x5BE0, /* Range 0xE1A1 - 0xE1FE, array index: 0x28B4 */ 0x5BE3,0x5C63,0x5D82,0x5D80,0x5D7D,0x5D86,0x5D7A,0x5D81, 0x5D77,0x5D8A,0x5D89,0x5D88,0x5D7E,0x5D7C,0x5D8D,0x5D79, 0x5D7F,0x5E58,0x5E59,0x5E53,0x5ED8,0x5ED1,0x5ED7,0x5ECE, 0x5EDC,0x5ED5,0x5ED9,0x5ED2,0x5ED4,0x5F44,0x5F43,0x5F6F, 0x5FB6,0x612C,0x6128,0x6141,0x615E,0x6171,0x6173,0x6152, 0x6153,0x6172,0x616C,0x6180,0x6174,0x6154,0x617A,0x615B, 0x6165,0x613B,0x616A,0x6161,0x6156,0x6229,0x6227,0x622B, 0x642B,0x644D,0x645B,0x645D,0x6474,0x6476,0x6472,0x6473, 0x647D,0x6475,0x6466,0x64A6,0x644E,0x6482,0x645E,0x645C, 0x644B,0x6453,0x6460,0x6450,0x647F,0x643F,0x646C,0x646B, 0x6459,0x6465,0x6477,0x6573,0x65A0,0x66A1,0x66A0,0x669F, 0x6705,0x6704,0x6722,0x69B1,0x69B6,0x69C9, /* Range 0xE240 - 0xE27E, array index: 0x2912 */ 0x69A0,0x69CE,0x6996,0x69B0,0x69AC,0x69BC,0x6991,0x6999, 0x698E,0x69A7,0x698D,0x69A9,0x69BE,0x69AF,0x69BF,0x69C4, 0x69BD,0x69A4,0x69D4,0x69B9,0x69CA,0x699A,0x69CF,0x69B3, 0x6993,0x69AA,0x69A1,0x699E,0x69D9,0x6997,0x6990,0x69C2, 0x69B5,0x69A5,0x69C6,0x6B4A,0x6B4D,0x6B4B,0x6B9E,0x6B9F, 0x6BA0,0x6BC3,0x6BC4,0x6BFE,0x6ECE,0x6EF5,0x6EF1,0x6F03, 0x6F25,0x6EF8,0x6F37,0x6EFB,0x6F2E,0x6F09,0x6F4E,0x6F19, 0x6F1A,0x6F27,0x6F18,0x6F3B,0x6F12,0x6EED,0x6F0A, /* Range 0xE2A1 - 0xE2FE, array index: 0x2951 */ 0x6F36,0x6F73,0x6EF9,0x6EEE,0x6F2D,0x6F40,0x6F30,0x6F3C, 0x6F35,0x6EEB,0x6F07,0x6F0E,0x6F43,0x6F05,0x6EFD,0x6EF6, 0x6F39,0x6F1C,0x6EFC,0x6F3A,0x6F1F,0x6F0D,0x6F1E,0x6F08, 0x6F21,0x7187,0x7190,0x7189,0x7180,0x7185,0x7182,0x718F, 0x717B,0x7186,0x7181,0x7197,0x7244,0x7253,0x7297,0x7295, 0x7293,0x7343,0x734D,0x7351,0x734C,0x7462,0x7473,0x7471, 0x7475,0x7472,0x7467,0x746E,0x7500,0x7502,0x7503,0x757D, 0x7590,0x7616,0x7608,0x760C,0x7615,0x7611,0x760A,0x7614, 0x76B8,0x7781,0x777C,0x7785,0x7782,0x776E,0x7780,0x776F, 0x777E,0x7783,0x78B2,0x78AA,0x78B4,0x78AD,0x78A8,0x787E, 0x78AB,0x789E,0x78A5,0x78A0,0x78AC,0x78A2,0x78A4,0x7998, 0x798A,0x798B,0x7996,0x7995,0x7994,0x7993, /* Range 0xE340 - 0xE37E, array index: 0x29AF */ 0x7997,0x7988,0x7992,0x7990,0x7A2B,0x7A4A,0x7A30,0x7A2F, 0x7A28,0x7A26,0x7AA8,0x7AAB,0x7AAC,0x7AEE,0x7B88,0x7B9C, 0x7B8A,0x7B91,0x7B90,0x7B96,0x7B8D,0x7B8C,0x7B9B,0x7B8E, 0x7B85,0x7B98,0x5284,0x7B99,0x7BA4,0x7B82,0x7CBB,0x7CBF, 0x7CBC,0x7CBA,0x7DA7,0x7DB7,0x7DC2,0x7DA3,0x7DAA,0x7DC1, 0x7DC0,0x7DC5,0x7D9D,0x7DCE,0x7DC4,0x7DC6,0x7DCB,0x7DCC, 0x7DAF,0x7DB9,0x7D96,0x7DBC,0x7D9F,0x7DA6,0x7DAE,0x7DA9, 0x7DA1,0x7DC9,0x7F73,0x7FE2,0x7FE3,0x7FE5,0x7FDE, /* Range 0xE3A1 - 0xE3FE, array index: 0x29EE */ 0x8024,0x805D,0x805C,0x8189,0x8186,0x8183,0x8187,0x818D, 0x818C,0x818B,0x8215,0x8497,0x84A4,0x84A1,0x849F,0x84BA, 0x84CE,0x84C2,0x84AC,0x84AE,0x84AB,0x84B9,0x84B4,0x84C1, 0x84CD,0x84AA,0x849A,0x84B1,0x84D0,0x849D,0x84A7,0x84BB, 0x84A2,0x8494,0x84C7,0x84CC,0x849B,0x84A9,0x84AF,0x84A8, 0x84D6,0x8498,0x84B6,0x84CF,0x84A0,0x84D7,0x84D4,0x84D2, 0x84DB,0x84B0,0x8491,0x8661,0x8733,0x8723,0x8728,0x876B, 0x8740,0x872E,0x871E,0x8721,0x8719,0x871B,0x8743,0x872C, 0x8741,0x873E,0x8746,0x8720,0x8732,0x872A,0x872D,0x873C, 0x8712,0x873A,0x8731,0x8735,0x8742,0x8726,0x8727,0x8738, 0x8724,0x871A,0x8730,0x8711,0x88F7,0x88E7,0x88F1,0x88F2, 0x88FA,0x88FE,0x88EE,0x88FC,0x88F6,0x88FB, /* Range 0xE440 - 0xE47E, array index: 0x2A4C */ 0x88F0,0x88EC,0x88EB,0x899D,0x89A1,0x899F,0x899E,0x89E9, 0x89EB,0x89E8,0x8AAB,0x8A99,0x8A8B,0x8A92,0x8A8F,0x8A96, 0x8C3D,0x8C68,0x8C69,0x8CD5,0x8CCF,0x8CD7,0x8D96,0x8E09, 0x8E02,0x8DFF,0x8E0D,0x8DFD,0x8E0A,0x8E03,0x8E07,0x8E06, 0x8E05,0x8DFE,0x8E00,0x8E04,0x8F10,0x8F11,0x8F0E,0x8F0D, 0x9123,0x911C,0x9120,0x9122,0x911F,0x911D,0x911A,0x9124, 0x9121,0x911B,0x917A,0x9172,0x9179,0x9173,0x92A5,0x92A4, 0x9276,0x929B,0x927A,0x92A0,0x9294,0x92AA,0x928D, /* Range 0xE4A1 - 0xE4FE, array index: 0x2A8B */ 0x92A6,0x929A,0x92AB,0x9279,0x9297,0x927F,0x92A3,0x92EE, 0x928E,0x9282,0x9295,0x92A2,0x927D,0x9288,0x92A1,0x928A, 0x9286,0x928C,0x9299,0x92A7,0x927E,0x9287,0x92A9,0x929D, 0x928B,0x922D,0x969E,0x96A1,0x96FF,0x9758,0x977D,0x977A, 0x977E,0x9783,0x9780,0x9782,0x977B,0x9784,0x9781,0x977F, 0x97CE,0x97CD,0x9816,0x98AD,0x98AE,0x9902,0x9900,0x9907, 0x999D,0x999C,0x99C3,0x99B9,0x99BB,0x99BA,0x99C2,0x99BD, 0x99C7,0x9AB1,0x9AE3,0x9AE7,0x9B3E,0x9B3F,0x9B60,0x9B61, 0x9B5F,0x9CF1,0x9CF2,0x9CF5,0x9EA7,0x50FF,0x5103,0x5130, 0x50F8,0x5106,0x5107,0x50F6,0x50FE,0x510B,0x510C,0x50FD, 0x510A,0x528B,0x528C,0x52F1,0x52EF,0x5648,0x5642,0x564C, 0x5635,0x5641,0x564A,0x5649,0x5646,0x5658, /* Range 0xE540 - 0xE57E, array index: 0x2AE9 */ 0x565A,0x5640,0x5633,0x563D,0x562C,0x563E,0x5638,0x562A, 0x563A,0x571A,0x58AB,0x589D,0x58B1,0x58A0,0x58A3,0x58AF, 0x58AC,0x58A5,0x58A1,0x58FF,0x5AFF,0x5AF4,0x5AFD,0x5AF7, 0x5AF6,0x5B03,0x5AF8,0x5B02,0x5AF9,0x5B01,0x5B07,0x5B05, 0x5B0F,0x5C67,0x5D99,0x5D97,0x5D9F,0x5D92,0x5DA2,0x5D93, 0x5D95,0x5DA0,0x5D9C,0x5DA1,0x5D9A,0x5D9E,0x5E69,0x5E5D, 0x5E60,0x5E5C,0x7DF3,0x5EDB,0x5EDE,0x5EE1,0x5F49,0x5FB2, 0x618B,0x6183,0x6179,0x61B1,0x61B0,0x61A2,0x6189, /* Range 0xE5A1 - 0xE5FE, array index: 0x2B28 */ 0x619B,0x6193,0x61AF,0x61AD,0x619F,0x6192,0x61AA,0x61A1, 0x618D,0x6166,0x61B3,0x622D,0x646E,0x6470,0x6496,0x64A0, 0x6485,0x6497,0x649C,0x648F,0x648B,0x648A,0x648C,0x64A3, 0x649F,0x6468,0x64B1,0x6498,0x6576,0x657A,0x6579,0x657B, 0x65B2,0x65B3,0x66B5,0x66B0,0x66A9,0x66B2,0x66B7,0x66AA, 0x66AF,0x6A00,0x6A06,0x6A17,0x69E5,0x69F8,0x6A15,0x69F1, 0x69E4,0x6A20,0x69FF,0x69EC,0x69E2,0x6A1B,0x6A1D,0x69FE, 0x6A27,0x69F2,0x69EE,0x6A14,0x69F7,0x69E7,0x6A40,0x6A08, 0x69E6,0x69FB,0x6A0D,0x69FC,0x69EB,0x6A09,0x6A04,0x6A18, 0x6A25,0x6A0F,0x69F6,0x6A26,0x6A07,0x69F4,0x6A16,0x6B51, 0x6BA5,0x6BA3,0x6BA2,0x6BA6,0x6C01,0x6C00,0x6BFF,0x6C02, 0x6F41,0x6F26,0x6F7E,0x6F87,0x6FC6,0x6F92, /* Range 0xE640 - 0xE67E, array index: 0x2B86 */ 0x6F8D,0x6F89,0x6F8C,0x6F62,0x6F4F,0x6F85,0x6F5A,0x6F96, 0x6F76,0x6F6C,0x6F82,0x6F55,0x6F72,0x6F52,0x6F50,0x6F57, 0x6F94,0x6F93,0x6F5D,0x6F00,0x6F61,0x6F6B,0x6F7D,0x6F67, 0x6F90,0x6F53,0x6F8B,0x6F69,0x6F7F,0x6F95,0x6F63,0x6F77, 0x6F6A,0x6F7B,0x71B2,0x71AF,0x719B,0x71B0,0x71A0,0x719A, 0x71A9,0x71B5,0x719D,0x71A5,0x719E,0x71A4,0x71A1,0x71AA, 0x719C,0x71A7,0x71B3,0x7298,0x729A,0x7358,0x7352,0x735E, 0x735F,0x7360,0x735D,0x735B,0x7361,0x735A,0x7359, /* Range 0xE6A1 - 0xE6FE, array index: 0x2BC5 */ 0x7362,0x7487,0x7489,0x748A,0x7486,0x7481,0x747D,0x7485, 0x7488,0x747C,0x7479,0x7508,0x7507,0x757E,0x7625,0x761E, 0x7619,0x761D,0x761C,0x7623,0x761A,0x7628,0x761B,0x769C, 0x769D,0x769E,0x769B,0x778D,0x778F,0x7789,0x7788,0x78CD, 0x78BB,0x78CF,0x78CC,0x78D1,0x78CE,0x78D4,0x78C8,0x78C3, 0x78C4,0x78C9,0x799A,0x79A1,0x79A0,0x799C,0x79A2,0x799B, 0x6B76,0x7A39,0x7AB2,0x7AB4,0x7AB3,0x7BB7,0x7BCB,0x7BBE, 0x7BAC,0x7BCE,0x7BAF,0x7BB9,0x7BCA,0x7BB5,0x7CC5,0x7CC8, 0x7CCC,0x7CCB,0x7DF7,0x7DDB,0x7DEA,0x7DE7,0x7DD7,0x7DE1, 0x7E03,0x7DFA,0x7DE6,0x7DF6,0x7DF1,0x7DF0,0x7DEE,0x7DDF, 0x7F76,0x7FAC,0x7FB0,0x7FAD,0x7FED,0x7FEB,0x7FEA,0x7FEC, 0x7FE6,0x7FE8,0x8064,0x8067,0x81A3,0x819F, /* Range 0xE740 - 0xE77E, array index: 0x2C23 */ 0x819E,0x8195,0x81A2,0x8199,0x8197,0x8216,0x824F,0x8253, 0x8252,0x8250,0x824E,0x8251,0x8524,0x853B,0x850F,0x8500, 0x8529,0x850E,0x8509,0x850D,0x851F,0x850A,0x8527,0x851C, 0x84FB,0x852B,0x84FA,0x8508,0x850C,0x84F4,0x852A,0x84F2, 0x8515,0x84F7,0x84EB,0x84F3,0x84FC,0x8512,0x84EA,0x84E9, 0x8516,0x84FE,0x8528,0x851D,0x852E,0x8502,0x84FD,0x851E, 0x84F6,0x8531,0x8526,0x84E7,0x84E8,0x84F0,0x84EF,0x84F9, 0x8518,0x8520,0x8530,0x850B,0x8519,0x852F,0x8662, /* Range 0xE7A1 - 0xE7FE, array index: 0x2C62 */ 0x8756,0x8763,0x8764,0x8777,0x87E1,0x8773,0x8758,0x8754, 0x875B,0x8752,0x8761,0x875A,0x8751,0x875E,0x876D,0x876A, 0x8750,0x874E,0x875F,0x875D,0x876F,0x876C,0x877A,0x876E, 0x875C,0x8765,0x874F,0x877B,0x8775,0x8762,0x8767,0x8769, 0x885A,0x8905,0x890C,0x8914,0x890B,0x8917,0x8918,0x8919, 0x8906,0x8916,0x8911,0x890E,0x8909,0x89A2,0x89A4,0x89A3, 0x89ED,0x89F0,0x89EC,0x8ACF,0x8AC6,0x8AB8,0x8AD3,0x8AD1, 0x8AD4,0x8AD5,0x8ABB,0x8AD7,0x8ABE,0x8AC0,0x8AC5,0x8AD8, 0x8AC3,0x8ABA,0x8ABD,0x8AD9,0x8C3E,0x8C4D,0x8C8F,0x8CE5, 0x8CDF,0x8CD9,0x8CE8,0x8CDA,0x8CDD,0x8CE7,0x8DA0,0x8D9C, 0x8DA1,0x8D9B,0x8E20,0x8E23,0x8E25,0x8E24,0x8E2E,0x8E15, 0x8E1B,0x8E16,0x8E11,0x8E19,0x8E26,0x8E27, /* Range 0xE840 - 0xE87E, array index: 0x2CC0 */ 0x8E14,0x8E12,0x8E18,0x8E13,0x8E1C,0x8E17,0x8E1A,0x8F2C, 0x8F24,0x8F18,0x8F1A,0x8F20,0x8F23,0x8F16,0x8F17,0x9073, 0x9070,0x906F,0x9067,0x906B,0x912F,0x912B,0x9129,0x912A, 0x9132,0x9126,0x912E,0x9185,0x9186,0x918A,0x9181,0x9182, 0x9184,0x9180,0x92D0,0x92C3,0x92C4,0x92C0,0x92D9,0x92B6, 0x92CF,0x92F1,0x92DF,0x92D8,0x92E9,0x92D7,0x92DD,0x92CC, 0x92EF,0x92C2,0x92E8,0x92CA,0x92C8,0x92CE,0x92E6,0x92CD, 0x92D5,0x92C9,0x92E0,0x92DE,0x92E7,0x92D1,0x92D3, /* Range 0xE8A1 - 0xE8FE, array index: 0x2CFF */ 0x92B5,0x92E1,0x92C6,0x92B4,0x957C,0x95AC,0x95AB,0x95AE, 0x95B0,0x96A4,0x96A2,0x96D3,0x9705,0x9708,0x9702,0x975A, 0x978A,0x978E,0x9788,0x97D0,0x97CF,0x981E,0x981D,0x9826, 0x9829,0x9828,0x9820,0x981B,0x9827,0x98B2,0x9908,0x98FA, 0x9911,0x9914,0x9916,0x9917,0x9915,0x99DC,0x99CD,0x99CF, 0x99D3,0x99D4,0x99CE,0x99C9,0x99D6,0x99D8,0x99CB,0x99D7, 0x99CC,0x9AB3,0x9AEC,0x9AEB,0x9AF3,0x9AF2,0x9AF1,0x9B46, 0x9B43,0x9B67,0x9B74,0x9B71,0x9B66,0x9B76,0x9B75,0x9B70, 0x9B68,0x9B64,0x9B6C,0x9CFC,0x9CFA,0x9CFD,0x9CFF,0x9CF7, 0x9D07,0x9D00,0x9CF9,0x9CFB,0x9D08,0x9D05,0x9D04,0x9E83, 0x9ED3,0x9F0F,0x9F10,0x511C,0x5113,0x5117,0x511A,0x5111, 0x51DE,0x5334,0x53E1,0x5670,0x5660,0x566E, /* Range 0xE940 - 0xE97E, array index: 0x2D5D */ 0x5673,0x5666,0x5663,0x566D,0x5672,0x565E,0x5677,0x571C, 0x571B,0x58C8,0x58BD,0x58C9,0x58BF,0x58BA,0x58C2,0x58BC, 0x58C6,0x5B17,0x5B19,0x5B1B,0x5B21,0x5B14,0x5B13,0x5B10, 0x5B16,0x5B28,0x5B1A,0x5B20,0x5B1E,0x5BEF,0x5DAC,0x5DB1, 0x5DA9,0x5DA7,0x5DB5,0x5DB0,0x5DAE,0x5DAA,0x5DA8,0x5DB2, 0x5DAD,0x5DAF,0x5DB4,0x5E67,0x5E68,0x5E66,0x5E6F,0x5EE9, 0x5EE7,0x5EE6,0x5EE8,0x5EE5,0x5F4B,0x5FBC,0x619D,0x61A8, 0x6196,0x61C5,0x61B4,0x61C6,0x61C1,0x61CC,0x61BA, /* Range 0xE9A1 - 0xE9FE, array index: 0x2D9C */ 0x61BF,0x61B8,0x618C,0x64D7,0x64D6,0x64D0,0x64CF,0x64C9, 0x64BD,0x6489,0x64C3,0x64DB,0x64F3,0x64D9,0x6533,0x657F, 0x657C,0x65A2,0x66C8,0x66BE,0x66C0,0x66CA,0x66CB,0x66CF, 0x66BD,0x66BB,0x66BA,0x66CC,0x6723,0x6A34,0x6A66,0x6A49, 0x6A67,0x6A32,0x6A68,0x6A3E,0x6A5D,0x6A6D,0x6A76,0x6A5B, 0x6A51,0x6A28,0x6A5A,0x6A3B,0x6A3F,0x6A41,0x6A6A,0x6A64, 0x6A50,0x6A4F,0x6A54,0x6A6F,0x6A69,0x6A60,0x6A3C,0x6A5E, 0x6A56,0x6A55,0x6A4D,0x6A4E,0x6A46,0x6B55,0x6B54,0x6B56, 0x6BA7,0x6BAA,0x6BAB,0x6BC8,0x6BC7,0x6C04,0x6C03,0x6C06, 0x6FAD,0x6FCB,0x6FA3,0x6FC7,0x6FBC,0x6FCE,0x6FC8,0x6F5E, 0x6FC4,0x6FBD,0x6F9E,0x6FCA,0x6FA8,0x7004,0x6FA5,0x6FAE, 0x6FBA,0x6FAC,0x6FAA,0x6FCF,0x6FBF,0x6FB8, /* Range 0xEA40 - 0xEA7E, array index: 0x2DFA */ 0x6FA2,0x6FC9,0x6FAB,0x6FCD,0x6FAF,0x6FB2,0x6FB0,0x71C5, 0x71C2,0x71BF,0x71B8,0x71D6,0x71C0,0x71C1,0x71CB,0x71D4, 0x71CA,0x71C7,0x71CF,0x71BD,0x71D8,0x71BC,0x71C6,0x71DA, 0x71DB,0x729D,0x729E,0x7369,0x7366,0x7367,0x736C,0x7365, 0x736B,0x736A,0x747F,0x749A,0x74A0,0x7494,0x7492,0x7495, 0x74A1,0x750B,0x7580,0x762F,0x762D,0x7631,0x763D,0x7633, 0x763C,0x7635,0x7632,0x7630,0x76BB,0x76E6,0x779A,0x779D, 0x77A1,0x779C,0x779B,0x77A2,0x77A3,0x7795,0x7799, /* Range 0xEAA1 - 0xEAFE, array index: 0x2E39 */ 0x7797,0x78DD,0x78E9,0x78E5,0x78EA,0x78DE,0x78E3,0x78DB, 0x78E1,0x78E2,0x78ED,0x78DF,0x78E0,0x79A4,0x7A44,0x7A48, 0x7A47,0x7AB6,0x7AB8,0x7AB5,0x7AB1,0x7AB7,0x7BDE,0x7BE3, 0x7BE7,0x7BDD,0x7BD5,0x7BE5,0x7BDA,0x7BE8,0x7BF9,0x7BD4, 0x7BEA,0x7BE2,0x7BDC,0x7BEB,0x7BD8,0x7BDF,0x7CD2,0x7CD4, 0x7CD7,0x7CD0,0x7CD1,0x7E12,0x7E21,0x7E17,0x7E0C,0x7E1F, 0x7E20,0x7E13,0x7E0E,0x7E1C,0x7E15,0x7E1A,0x7E22,0x7E0B, 0x7E0F,0x7E16,0x7E0D,0x7E14,0x7E25,0x7E24,0x7F43,0x7F7B, 0x7F7C,0x7F7A,0x7FB1,0x7FEF,0x802A,0x8029,0x806C,0x81B1, 0x81A6,0x81AE,0x81B9,0x81B5,0x81AB,0x81B0,0x81AC,0x81B4, 0x81B2,0x81B7,0x81A7,0x81F2,0x8255,0x8256,0x8257,0x8556, 0x8545,0x856B,0x854D,0x8553,0x8561,0x8558, /* Range 0xEB40 - 0xEB7E, array index: 0x2E97 */ 0x8540,0x8546,0x8564,0x8541,0x8562,0x8544,0x8551,0x8547, 0x8563,0x853E,0x855B,0x8571,0x854E,0x856E,0x8575,0x8555, 0x8567,0x8560,0x858C,0x8566,0x855D,0x8554,0x8565,0x856C, 0x8663,0x8665,0x8664,0x879B,0x878F,0x8797,0x8793,0x8792, 0x8788,0x8781,0x8796,0x8798,0x8779,0x8787,0x87A3,0x8785, 0x8790,0x8791,0x879D,0x8784,0x8794,0x879C,0x879A,0x8789, 0x891E,0x8926,0x8930,0x892D,0x892E,0x8927,0x8931,0x8922, 0x8929,0x8923,0x892F,0x892C,0x891F,0x89F1,0x8AE0, /* Range 0xEBA1 - 0xEBFE, array index: 0x2ED6 */ 0x8AE2,0x8AF2,0x8AF4,0x8AF5,0x8ADD,0x8B14,0x8AE4,0x8ADF, 0x8AF0,0x8AC8,0x8ADE,0x8AE1,0x8AE8,0x8AFF,0x8AEF,0x8AFB, 0x8C91,0x8C92,0x8C90,0x8CF5,0x8CEE,0x8CF1,0x8CF0,0x8CF3, 0x8D6C,0x8D6E,0x8DA5,0x8DA7,0x8E33,0x8E3E,0x8E38,0x8E40, 0x8E45,0x8E36,0x8E3C,0x8E3D,0x8E41,0x8E30,0x8E3F,0x8EBD, 0x8F36,0x8F2E,0x8F35,0x8F32,0x8F39,0x8F37,0x8F34,0x9076, 0x9079,0x907B,0x9086,0x90FA,0x9133,0x9135,0x9136,0x9193, 0x9190,0x9191,0x918D,0x918F,0x9327,0x931E,0x9308,0x931F, 0x9306,0x930F,0x937A,0x9338,0x933C,0x931B,0x9323,0x9312, 0x9301,0x9346,0x932D,0x930E,0x930D,0x92CB,0x931D,0x92FA, 0x9325,0x9313,0x92F9,0x92F7,0x9334,0x9302,0x9324,0x92FF, 0x9329,0x9339,0x9335,0x932A,0x9314,0x930C, /* Range 0xEC40 - 0xEC7E, array index: 0x2F34 */ 0x930B,0x92FE,0x9309,0x9300,0x92FB,0x9316,0x95BC,0x95CD, 0x95BE,0x95B9,0x95BA,0x95B6,0x95BF,0x95B5,0x95BD,0x96A9, 0x96D4,0x970B,0x9712,0x9710,0x9799,0x9797,0x9794,0x97F0, 0x97F8,0x9835,0x982F,0x9832,0x9924,0x991F,0x9927,0x9929, 0x999E,0x99EE,0x99EC,0x99E5,0x99E4,0x99F0,0x99E3,0x99EA, 0x99E9,0x99E7,0x9AB9,0x9ABF,0x9AB4,0x9ABB,0x9AF6,0x9AFA, 0x9AF9,0x9AF7,0x9B33,0x9B80,0x9B85,0x9B87,0x9B7C,0x9B7E, 0x9B7B,0x9B82,0x9B93,0x9B92,0x9B90,0x9B7A,0x9B95, /* Range 0xECA1 - 0xECFE, array index: 0x2F73 */ 0x9B7D,0x9B88,0x9D25,0x9D17,0x9D20,0x9D1E,0x9D14,0x9D29, 0x9D1D,0x9D18,0x9D22,0x9D10,0x9D19,0x9D1F,0x9E88,0x9E86, 0x9E87,0x9EAE,0x9EAD,0x9ED5,0x9ED6,0x9EFA,0x9F12,0x9F3D, 0x5126,0x5125,0x5122,0x5124,0x5120,0x5129,0x52F4,0x5693, 0x568C,0x568D,0x5686,0x5684,0x5683,0x567E,0x5682,0x567F, 0x5681,0x58D6,0x58D4,0x58CF,0x58D2,0x5B2D,0x5B25,0x5B32, 0x5B23,0x5B2C,0x5B27,0x5B26,0x5B2F,0x5B2E,0x5B7B,0x5BF1, 0x5BF2,0x5DB7,0x5E6C,0x5E6A,0x5FBE,0x5FBB,0x61C3,0x61B5, 0x61BC,0x61E7,0x61E0,0x61E5,0x61E4,0x61E8,0x61DE,0x64EF, 0x64E9,0x64E3,0x64EB,0x64E4,0x64E8,0x6581,0x6580,0x65B6, 0x65DA,0x66D2,0x6A8D,0x6A96,0x6A81,0x6AA5,0x6A89,0x6A9F, 0x6A9B,0x6AA1,0x6A9E,0x6A87,0x6A93,0x6A8E, /* Range 0xED40 - 0xED7E, array index: 0x2FD1 */ 0x6A95,0x6A83,0x6AA8,0x6AA4,0x6A91,0x6A7F,0x6AA6,0x6A9A, 0x6A85,0x6A8C,0x6A92,0x6B5B,0x6BAD,0x6C09,0x6FCC,0x6FA9, 0x6FF4,0x6FD4,0x6FE3,0x6FDC,0x6FED,0x6FE7,0x6FE6,0x6FDE, 0x6FF2,0x6FDD,0x6FE2,0x6FE8,0x71E1,0x71F1,0x71E8,0x71F2, 0x71E4,0x71F0,0x71E2,0x7373,0x736E,0x736F,0x7497,0x74B2, 0x74AB,0x7490,0x74AA,0x74AD,0x74B1,0x74A5,0x74AF,0x7510, 0x7511,0x7512,0x750F,0x7584,0x7643,0x7648,0x7649,0x7647, 0x76A4,0x76E9,0x77B5,0x77AB,0x77B2,0x77B7,0x77B6, /* Range 0xEDA1 - 0xEDFE, array index: 0x3010 */ 0x77B4,0x77B1,0x77A8,0x77F0,0x78F3,0x78FD,0x7902,0x78FB, 0x78FC,0x78F2,0x7905,0x78F9,0x78FE,0x7904,0x79AB,0x79A8, 0x7A5C,0x7A5B,0x7A56,0x7A58,0x7A54,0x7A5A,0x7ABE,0x7AC0, 0x7AC1,0x7C05,0x7C0F,0x7BF2,0x7C00,0x7BFF,0x7BFB,0x7C0E, 0x7BF4,0x7C0B,0x7BF3,0x7C02,0x7C09,0x7C03,0x7C01,0x7BF8, 0x7BFD,0x7C06,0x7BF0,0x7BF1,0x7C10,0x7C0A,0x7CE8,0x7E2D, 0x7E3C,0x7E42,0x7E33,0x9848,0x7E38,0x7E2A,0x7E49,0x7E40, 0x7E47,0x7E29,0x7E4C,0x7E30,0x7E3B,0x7E36,0x7E44,0x7E3A, 0x7F45,0x7F7F,0x7F7E,0x7F7D,0x7FF4,0x7FF2,0x802C,0x81BB, 0x81C4,0x81CC,0x81CA,0x81C5,0x81C7,0x81BC,0x81E9,0x825B, 0x825A,0x825C,0x8583,0x8580,0x858F,0x85A7,0x8595,0x85A0, 0x858B,0x85A3,0x857B,0x85A4,0x859A,0x859E, /* Range 0xEE40 - 0xEE7E, array index: 0x306E */ 0x8577,0x857C,0x8589,0x85A1,0x857A,0x8578,0x8557,0x858E, 0x8596,0x8586,0x858D,0x8599,0x859D,0x8581,0x85A2,0x8582, 0x8588,0x8585,0x8579,0x8576,0x8598,0x8590,0x859F,0x8668, 0x87BE,0x87AA,0x87AD,0x87C5,0x87B0,0x87AC,0x87B9,0x87B5, 0x87BC,0x87AE,0x87C9,0x87C3,0x87C2,0x87CC,0x87B7,0x87AF, 0x87C4,0x87CA,0x87B4,0x87B6,0x87BF,0x87B8,0x87BD,0x87DE, 0x87B2,0x8935,0x8933,0x893C,0x893E,0x8941,0x8952,0x8937, 0x8942,0x89AD,0x89AF,0x89AE,0x89F2,0x89F3,0x8B1E, /* Range 0xEEA1 - 0xEEFE, array index: 0x30AD */ 0x8B18,0x8B16,0x8B11,0x8B05,0x8B0B,0x8B22,0x8B0F,0x8B12, 0x8B15,0x8B07,0x8B0D,0x8B08,0x8B06,0x8B1C,0x8B13,0x8B1A, 0x8C4F,0x8C70,0x8C72,0x8C71,0x8C6F,0x8C95,0x8C94,0x8CF9, 0x8D6F,0x8E4E,0x8E4D,0x8E53,0x8E50,0x8E4C,0x8E47,0x8F43, 0x8F40,0x9085,0x907E,0x9138,0x919A,0x91A2,0x919B,0x9199, 0x919F,0x91A1,0x919D,0x91A0,0x93A1,0x9383,0x93AF,0x9364, 0x9356,0x9347,0x937C,0x9358,0x935C,0x9376,0x9349,0x9350, 0x9351,0x9360,0x936D,0x938F,0x934C,0x936A,0x9379,0x9357, 0x9355,0x9352,0x934F,0x9371,0x9377,0x937B,0x9361,0x935E, 0x9363,0x9367,0x9380,0x934E,0x9359,0x95C7,0x95C0,0x95C9, 0x95C3,0x95C5,0x95B7,0x96AE,0x96B0,0x96AC,0x9720,0x971F, 0x9718,0x971D,0x9719,0x979A,0x97A1,0x979C, /* Range 0xEF40 - 0xEF7E, array index: 0x310B */ 0x979E,0x979D,0x97D5,0x97D4,0x97F1,0x9841,0x9844,0x984A, 0x9849,0x9845,0x9843,0x9925,0x992B,0x992C,0x992A,0x9933, 0x9932,0x992F,0x992D,0x9931,0x9930,0x9998,0x99A3,0x99A1, 0x9A02,0x99FA,0x99F4,0x99F7,0x99F9,0x99F8,0x99F6,0x99FB, 0x99FD,0x99FE,0x99FC,0x9A03,0x9ABE,0x9AFE,0x9AFD,0x9B01, 0x9AFC,0x9B48,0x9B9A,0x9BA8,0x9B9E,0x9B9B,0x9BA6,0x9BA1, 0x9BA5,0x9BA4,0x9B86,0x9BA2,0x9BA0,0x9BAF,0x9D33,0x9D41, 0x9D67,0x9D36,0x9D2E,0x9D2F,0x9D31,0x9D38,0x9D30, /* Range 0xEFA1 - 0xEFFE, array index: 0x314A */ 0x9D45,0x9D42,0x9D43,0x9D3E,0x9D37,0x9D40,0x9D3D,0x7FF5, 0x9D2D,0x9E8A,0x9E89,0x9E8D,0x9EB0,0x9EC8,0x9EDA,0x9EFB, 0x9EFF,0x9F24,0x9F23,0x9F22,0x9F54,0x9FA0,0x5131,0x512D, 0x512E,0x5698,0x569C,0x5697,0x569A,0x569D,0x5699,0x5970, 0x5B3C,0x5C69,0x5C6A,0x5DC0,0x5E6D,0x5E6E,0x61D8,0x61DF, 0x61ED,0x61EE,0x61F1,0x61EA,0x61F0,0x61EB,0x61D6,0x61E9, 0x64FF,0x6504,0x64FD,0x64F8,0x6501,0x6503,0x64FC,0x6594, 0x65DB,0x66DA,0x66DB,0x66D8,0x6AC5,0x6AB9,0x6ABD,0x6AE1, 0x6AC6,0x6ABA,0x6AB6,0x6AB7,0x6AC7,0x6AB4,0x6AAD,0x6B5E, 0x6BC9,0x6C0B,0x7007,0x700C,0x700D,0x7001,0x7005,0x7014, 0x700E,0x6FFF,0x7000,0x6FFB,0x7026,0x6FFC,0x6FF7,0x700A, 0x7201,0x71FF,0x71F9,0x7203,0x71FD,0x7376, /* Range 0xF040 - 0xF07E, array index: 0x31A8 */ 0x74B8,0x74C0,0x74B5,0x74C1,0x74BE,0x74B6,0x74BB,0x74C2, 0x7514,0x7513,0x765C,0x7664,0x7659,0x7650,0x7653,0x7657, 0x765A,0x76A6,0x76BD,0x76EC,0x77C2,0x77BA,0x78FF,0x790C, 0x7913,0x7914,0x7909,0x7910,0x7912,0x7911,0x79AD,0x79AC, 0x7A5F,0x7C1C,0x7C29,0x7C19,0x7C20,0x7C1F,0x7C2D,0x7C1D, 0x7C26,0x7C28,0x7C22,0x7C25,0x7C30,0x7E5C,0x7E50,0x7E56, 0x7E63,0x7E58,0x7E62,0x7E5F,0x7E51,0x7E60,0x7E57,0x7E53, 0x7FB5,0x7FB3,0x7FF7,0x7FF8,0x8075,0x81D1,0x81D2, /* Range 0xF0A1 - 0xF0FE, array index: 0x31E7 */ 0x81D0,0x825F,0x825E,0x85B4,0x85C6,0x85C0,0x85C3,0x85C2, 0x85B3,0x85B5,0x85BD,0x85C7,0x85C4,0x85BF,0x85CB,0x85CE, 0x85C8,0x85C5,0x85B1,0x85B6,0x85D2,0x8624,0x85B8,0x85B7, 0x85BE,0x8669,0x87E7,0x87E6,0x87E2,0x87DB,0x87EB,0x87EA, 0x87E5,0x87DF,0x87F3,0x87E4,0x87D4,0x87DC,0x87D3,0x87ED, 0x87D8,0x87E3,0x87A4,0x87D7,0x87D9,0x8801,0x87F4,0x87E8, 0x87DD,0x8953,0x894B,0x894F,0x894C,0x8946,0x8950,0x8951, 0x8949,0x8B2A,0x8B27,0x8B23,0x8B33,0x8B30,0x8B35,0x8B47, 0x8B2F,0x8B3C,0x8B3E,0x8B31,0x8B25,0x8B37,0x8B26,0x8B36, 0x8B2E,0x8B24,0x8B3B,0x8B3D,0x8B3A,0x8C42,0x8C75,0x8C99, 0x8C98,0x8C97,0x8CFE,0x8D04,0x8D02,0x8D00,0x8E5C,0x8E62, 0x8E60,0x8E57,0x8E56,0x8E5E,0x8E65,0x8E67, /* Range 0xF140 - 0xF17E, array index: 0x3245 */ 0x8E5B,0x8E5A,0x8E61,0x8E5D,0x8E69,0x8E54,0x8F46,0x8F47, 0x8F48,0x8F4B,0x9128,0x913A,0x913B,0x913E,0x91A8,0x91A5, 0x91A7,0x91AF,0x91AA,0x93B5,0x938C,0x9392,0x93B7,0x939B, 0x939D,0x9389,0x93A7,0x938E,0x93AA,0x939E,0x93A6,0x9395, 0x9388,0x9399,0x939F,0x938D,0x93B1,0x9391,0x93B2,0x93A4, 0x93A8,0x93B4,0x93A3,0x93A5,0x95D2,0x95D3,0x95D1,0x96B3, 0x96D7,0x96DA,0x5DC2,0x96DF,0x96D8,0x96DD,0x9723,0x9722, 0x9725,0x97AC,0x97AE,0x97A8,0x97AB,0x97A4,0x97AA, /* Range 0xF1A1 - 0xF1FE, array index: 0x3284 */ 0x97A2,0x97A5,0x97D7,0x97D9,0x97D6,0x97D8,0x97FA,0x9850, 0x9851,0x9852,0x98B8,0x9941,0x993C,0x993A,0x9A0F,0x9A0B, 0x9A09,0x9A0D,0x9A04,0x9A11,0x9A0A,0x9A05,0x9A07,0x9A06, 0x9AC0,0x9ADC,0x9B08,0x9B04,0x9B05,0x9B29,0x9B35,0x9B4A, 0x9B4C,0x9B4B,0x9BC7,0x9BC6,0x9BC3,0x9BBF,0x9BC1,0x9BB5, 0x9BB8,0x9BD3,0x9BB6,0x9BC4,0x9BB9,0x9BBD,0x9D5C,0x9D53, 0x9D4F,0x9D4A,0x9D5B,0x9D4B,0x9D59,0x9D56,0x9D4C,0x9D57, 0x9D52,0x9D54,0x9D5F,0x9D58,0x9D5A,0x9E8E,0x9E8C,0x9EDF, 0x9F01,0x9F00,0x9F16,0x9F25,0x9F2B,0x9F2A,0x9F29,0x9F28, 0x9F4C,0x9F55,0x5134,0x5135,0x5296,0x52F7,0x53B4,0x56AB, 0x56AD,0x56A6,0x56A7,0x56AA,0x56AC,0x58DA,0x58DD,0x58DB, 0x5912,0x5B3D,0x5B3E,0x5B3F,0x5DC3,0x5E70, /* Range 0xF240 - 0xF27E, array index: 0x32E2 */ 0x5FBF,0x61FB,0x6507,0x6510,0x650D,0x6509,0x650C,0x650E, 0x6584,0x65DE,0x65DD,0x66DE,0x6AE7,0x6AE0,0x6ACC,0x6AD1, 0x6AD9,0x6ACB,0x6ADF,0x6ADC,0x6AD0,0x6AEB,0x6ACF,0x6ACD, 0x6ADE,0x6B60,0x6BB0,0x6C0C,0x7019,0x7027,0x7020,0x7016, 0x702B,0x7021,0x7022,0x7023,0x7029,0x7017,0x7024,0x701C, 0x702A,0x720C,0x720A,0x7207,0x7202,0x7205,0x72A5,0x72A6, 0x72A4,0x72A3,0x72A1,0x74CB,0x74C5,0x74B7,0x74C3,0x7516, 0x7660,0x77C9,0x77CA,0x77C4,0x77F1,0x791D,0x791B, /* Range 0xF2A1 - 0xF2FE, array index: 0x3321 */ 0x7921,0x791C,0x7917,0x791E,0x79B0,0x7A67,0x7A68,0x7C33, 0x7C3C,0x7C39,0x7C2C,0x7C3B,0x7CEC,0x7CEA,0x7E76,0x7E75, 0x7E78,0x7E70,0x7E77,0x7E6F,0x7E7A,0x7E72,0x7E74,0x7E68, 0x7F4B,0x7F4A,0x7F83,0x7F86,0x7FB7,0x7FFD,0x7FFE,0x8078, 0x81D7,0x81D5,0x8264,0x8261,0x8263,0x85EB,0x85F1,0x85ED, 0x85D9,0x85E1,0x85E8,0x85DA,0x85D7,0x85EC,0x85F2,0x85F8, 0x85D8,0x85DF,0x85E3,0x85DC,0x85D1,0x85F0,0x85E6,0x85EF, 0x85DE,0x85E2,0x8800,0x87FA,0x8803,0x87F6,0x87F7,0x8809, 0x880C,0x880B,0x8806,0x87FC,0x8808,0x87FF,0x880A,0x8802, 0x8962,0x895A,0x895B,0x8957,0x8961,0x895C,0x8958,0x895D, 0x8959,0x8988,0x89B7,0x89B6,0x89F6,0x8B50,0x8B48,0x8B4A, 0x8B40,0x8B53,0x8B56,0x8B54,0x8B4B,0x8B55, /* Range 0xF340 - 0xF37E, array index: 0x337F */ 0x8B51,0x8B42,0x8B52,0x8B57,0x8C43,0x8C77,0x8C76,0x8C9A, 0x8D06,0x8D07,0x8D09,0x8DAC,0x8DAA,0x8DAD,0x8DAB,0x8E6D, 0x8E78,0x8E73,0x8E6A,0x8E6F,0x8E7B,0x8EC2,0x8F52,0x8F51, 0x8F4F,0x8F50,0x8F53,0x8FB4,0x9140,0x913F,0x91B0,0x91AD, 0x93DE,0x93C7,0x93CF,0x93C2,0x93DA,0x93D0,0x93F9,0x93EC, 0x93CC,0x93D9,0x93A9,0x93E6,0x93CA,0x93D4,0x93EE,0x93E3, 0x93D5,0x93C4,0x93CE,0x93C0,0x93D2,0x93E7,0x957D,0x95DA, 0x95DB,0x96E1,0x9729,0x972B,0x972C,0x9728,0x9726, /* Range 0xF3A1 - 0xF3FE, array index: 0x33BE */ 0x97B3,0x97B7,0x97B6,0x97DD,0x97DE,0x97DF,0x985C,0x9859, 0x985D,0x9857,0x98BF,0x98BD,0x98BB,0x98BE,0x9948,0x9947, 0x9943,0x99A6,0x99A7,0x9A1A,0x9A15,0x9A25,0x9A1D,0x9A24, 0x9A1B,0x9A22,0x9A20,0x9A27,0x9A23,0x9A1E,0x9A1C,0x9A14, 0x9AC2,0x9B0B,0x9B0A,0x9B0E,0x9B0C,0x9B37,0x9BEA,0x9BEB, 0x9BE0,0x9BDE,0x9BE4,0x9BE6,0x9BE2,0x9BF0,0x9BD4,0x9BD7, 0x9BEC,0x9BDC,0x9BD9,0x9BE5,0x9BD5,0x9BE1,0x9BDA,0x9D77, 0x9D81,0x9D8A,0x9D84,0x9D88,0x9D71,0x9D80,0x9D78,0x9D86, 0x9D8B,0x9D8C,0x9D7D,0x9D6B,0x9D74,0x9D75,0x9D70,0x9D69, 0x9D85,0x9D73,0x9D7B,0x9D82,0x9D6F,0x9D79,0x9D7F,0x9D87, 0x9D68,0x9E94,0x9E91,0x9EC0,0x9EFC,0x9F2D,0x9F40,0x9F41, 0x9F4D,0x9F56,0x9F57,0x9F58,0x5337,0x56B2, /* Range 0xF440 - 0xF47E, array index: 0x341C */ 0x56B5,0x56B3,0x58E3,0x5B45,0x5DC6,0x5DC7,0x5EEE,0x5EEF, 0x5FC0,0x5FC1,0x61F9,0x6517,0x6516,0x6515,0x6513,0x65DF, 0x66E8,0x66E3,0x66E4,0x6AF3,0x6AF0,0x6AEA,0x6AE8,0x6AF9, 0x6AF1,0x6AEE,0x6AEF,0x703C,0x7035,0x702F,0x7037,0x7034, 0x7031,0x7042,0x7038,0x703F,0x703A,0x7039,0x7040,0x703B, 0x7033,0x7041,0x7213,0x7214,0x72A8,0x737D,0x737C,0x74BA, 0x76AB,0x76AA,0x76BE,0x76ED,0x77CC,0x77CE,0x77CF,0x77CD, 0x77F2,0x7925,0x7923,0x7927,0x7928,0x7924,0x7929, /* Range 0xF4A1 - 0xF4FE, array index: 0x345B */ 0x79B2,0x7A6E,0x7A6C,0x7A6D,0x7AF7,0x7C49,0x7C48,0x7C4A, 0x7C47,0x7C45,0x7CEE,0x7E7B,0x7E7E,0x7E81,0x7E80,0x7FBA, 0x7FFF,0x8079,0x81DB,0x81D9,0x820B,0x8268,0x8269,0x8622, 0x85FF,0x8601,0x85FE,0x861B,0x8600,0x85F6,0x8604,0x8609, 0x8605,0x860C,0x85FD,0x8819,0x8810,0x8811,0x8817,0x8813, 0x8816,0x8963,0x8966,0x89B9,0x89F7,0x8B60,0x8B6A,0x8B5D, 0x8B68,0x8B63,0x8B65,0x8B67,0x8B6D,0x8DAE,0x8E86,0x8E88, 0x8E84,0x8F59,0x8F56,0x8F57,0x8F55,0x8F58,0x8F5A,0x908D, 0x9143,0x9141,0x91B7,0x91B5,0x91B2,0x91B3,0x940B,0x9413, 0x93FB,0x9420,0x940F,0x9414,0x93FE,0x9415,0x9410,0x9428, 0x9419,0x940D,0x93F5,0x9400,0x93F7,0x9407,0x940E,0x9416, 0x9412,0x93FA,0x9409,0x93F8,0x940A,0x93FF, /* Range 0xF540 - 0xF57E, array index: 0x34B9 */ 0x93FC,0x940C,0x93F6,0x9411,0x9406,0x95DE,0x95E0,0x95DF, 0x972E,0x972F,0x97B9,0x97BB,0x97FD,0x97FE,0x9860,0x9862, 0x9863,0x985F,0x98C1,0x98C2,0x9950,0x994E,0x9959,0x994C, 0x994B,0x9953,0x9A32,0x9A34,0x9A31,0x9A2C,0x9A2A,0x9A36, 0x9A29,0x9A2E,0x9A38,0x9A2D,0x9AC7,0x9ACA,0x9AC6,0x9B10, 0x9B12,0x9B11,0x9C0B,0x9C08,0x9BF7,0x9C05,0x9C12,0x9BF8, 0x9C40,0x9C07,0x9C0E,0x9C06,0x9C17,0x9C14,0x9C09,0x9D9F, 0x9D99,0x9DA4,0x9D9D,0x9D92,0x9D98,0x9D90,0x9D9B, /* Range 0xF5A1 - 0xF5FE, array index: 0x34F8 */ 0x9DA0,0x9D94,0x9D9C,0x9DAA,0x9D97,0x9DA1,0x9D9A,0x9DA2, 0x9DA8,0x9D9E,0x9DA3,0x9DBF,0x9DA9,0x9D96,0x9DA6,0x9DA7, 0x9E99,0x9E9B,0x9E9A,0x9EE5,0x9EE4,0x9EE7,0x9EE6,0x9F30, 0x9F2E,0x9F5B,0x9F60,0x9F5E,0x9F5D,0x9F59,0x9F91,0x513A, 0x5139,0x5298,0x5297,0x56C3,0x56BD,0x56BE,0x5B48,0x5B47, 0x5DCB,0x5DCF,0x5EF1,0x61FD,0x651B,0x6B02,0x6AFC,0x6B03, 0x6AF8,0x6B00,0x7043,0x7044,0x704A,0x7048,0x7049,0x7045, 0x7046,0x721D,0x721A,0x7219,0x737E,0x7517,0x766A,0x77D0, 0x792D,0x7931,0x792F,0x7C54,0x7C53,0x7CF2,0x7E8A,0x7E87, 0x7E88,0x7E8B,0x7E86,0x7E8D,0x7F4D,0x7FBB,0x8030,0x81DD, 0x8618,0x862A,0x8626,0x861F,0x8623,0x861C,0x8619,0x8627, 0x862E,0x8621,0x8620,0x8629,0x861E,0x8625, /* Range 0xF640 - 0xF67E, array index: 0x3556 */ 0x8829,0x881D,0x881B,0x8820,0x8824,0x881C,0x882B,0x884A, 0x896D,0x8969,0x896E,0x896B,0x89FA,0x8B79,0x8B78,0x8B45, 0x8B7A,0x8B7B,0x8D10,0x8D14,0x8DAF,0x8E8E,0x8E8C,0x8F5E, 0x8F5B,0x8F5D,0x9146,0x9144,0x9145,0x91B9,0x943F,0x943B, 0x9436,0x9429,0x943D,0x943C,0x9430,0x9439,0x942A,0x9437, 0x942C,0x9440,0x9431,0x95E5,0x95E4,0x95E3,0x9735,0x973A, 0x97BF,0x97E1,0x9864,0x98C9,0x98C6,0x98C0,0x9958,0x9956, 0x9A39,0x9A3D,0x9A46,0x9A44,0x9A42,0x9A41,0x9A3A, /* Range 0xF6A1 - 0xF6FE, array index: 0x3595 */ 0x9A3F,0x9ACD,0x9B15,0x9B17,0x9B18,0x9B16,0x9B3A,0x9B52, 0x9C2B,0x9C1D,0x9C1C,0x9C2C,0x9C23,0x9C28,0x9C29,0x9C24, 0x9C21,0x9DB7,0x9DB6,0x9DBC,0x9DC1,0x9DC7,0x9DCA,0x9DCF, 0x9DBE,0x9DC5,0x9DC3,0x9DBB,0x9DB5,0x9DCE,0x9DB9,0x9DBA, 0x9DAC,0x9DC8,0x9DB1,0x9DAD,0x9DCC,0x9DB3,0x9DCD,0x9DB2, 0x9E7A,0x9E9C,0x9EEB,0x9EEE,0x9EED,0x9F1B,0x9F18,0x9F1A, 0x9F31,0x9F4E,0x9F65,0x9F64,0x9F92,0x4EB9,0x56C6,0x56C5, 0x56CB,0x5971,0x5B4B,0x5B4C,0x5DD5,0x5DD1,0x5EF2,0x6521, 0x6520,0x6526,0x6522,0x6B0B,0x6B08,0x6B09,0x6C0D,0x7055, 0x7056,0x7057,0x7052,0x721E,0x721F,0x72A9,0x737F,0x74D8, 0x74D5,0x74D9,0x74D7,0x766D,0x76AD,0x7935,0x79B4,0x7A70, 0x7A71,0x7C57,0x7C5C,0x7C59,0x7C5B,0x7C5A, /* Range 0xF740 - 0xF77E, array index: 0x35F3 */ 0x7CF4,0x7CF1,0x7E91,0x7F4F,0x7F87,0x81DE,0x826B,0x8634, 0x8635,0x8633,0x862C,0x8632,0x8636,0x882C,0x8828,0x8826, 0x882A,0x8825,0x8971,0x89BF,0x89BE,0x89FB,0x8B7E,0x8B84, 0x8B82,0x8B86,0x8B85,0x8B7F,0x8D15,0x8E95,0x8E94,0x8E9A, 0x8E92,0x8E90,0x8E96,0x8E97,0x8F60,0x8F62,0x9147,0x944C, 0x9450,0x944A,0x944B,0x944F,0x9447,0x9445,0x9448,0x9449, 0x9446,0x973F,0x97E3,0x986A,0x9869,0x98CB,0x9954,0x995B, 0x9A4E,0x9A53,0x9A54,0x9A4C,0x9A4F,0x9A48,0x9A4A, /* Range 0xF7A1 - 0xF7FE, array index: 0x3632 */ 0x9A49,0x9A52,0x9A50,0x9AD0,0x9B19,0x9B2B,0x9B3B,0x9B56, 0x9B55,0x9C46,0x9C48,0x9C3F,0x9C44,0x9C39,0x9C33,0x9C41, 0x9C3C,0x9C37,0x9C34,0x9C32,0x9C3D,0x9C36,0x9DDB,0x9DD2, 0x9DDE,0x9DDA,0x9DCB,0x9DD0,0x9DDC,0x9DD1,0x9DDF,0x9DE9, 0x9DD9,0x9DD8,0x9DD6,0x9DF5,0x9DD5,0x9DDD,0x9EB6,0x9EF0, 0x9F35,0x9F33,0x9F32,0x9F42,0x9F6B,0x9F95,0x9FA2,0x513D, 0x5299,0x58E8,0x58E7,0x5972,0x5B4D,0x5DD8,0x882F,0x5F4F, 0x6201,0x6203,0x6204,0x6529,0x6525,0x6596,0x66EB,0x6B11, 0x6B12,0x6B0F,0x6BCA,0x705B,0x705A,0x7222,0x7382,0x7381, 0x7383,0x7670,0x77D4,0x7C67,0x7C66,0x7E95,0x826C,0x863A, 0x8640,0x8639,0x863C,0x8631,0x863B,0x863E,0x8830,0x8832, 0x882E,0x8833,0x8976,0x8974,0x8973,0x89FE, /* Range 0xF840 - 0xF87E, array index: 0x3690 */ 0x8B8C,0x8B8E,0x8B8B,0x8B88,0x8C45,0x8D19,0x8E98,0x8F64, 0x8F63,0x91BC,0x9462,0x9455,0x945D,0x9457,0x945E,0x97C4, 0x97C5,0x9800,0x9A56,0x9A59,0x9B1E,0x9B1F,0x9B20,0x9C52, 0x9C58,0x9C50,0x9C4A,0x9C4D,0x9C4B,0x9C55,0x9C59,0x9C4C, 0x9C4E,0x9DFB,0x9DF7,0x9DEF,0x9DE3,0x9DEB,0x9DF8,0x9DE4, 0x9DF6,0x9DE1,0x9DEE,0x9DE6,0x9DF2,0x9DF0,0x9DE2,0x9DEC, 0x9DF4,0x9DF3,0x9DE8,0x9DED,0x9EC2,0x9ED0,0x9EF2,0x9EF3, 0x9F06,0x9F1C,0x9F38,0x9F37,0x9F36,0x9F43,0x9F4F, /* Range 0xF8A1 - 0xF8FE, array index: 0x36CF */ 0x9F71,0x9F70,0x9F6E,0x9F6F,0x56D3,0x56CD,0x5B4E,0x5C6D, 0x652D,0x66ED,0x66EE,0x6B13,0x705F,0x7061,0x705D,0x7060, 0x7223,0x74DB,0x74E5,0x77D5,0x7938,0x79B7,0x79B6,0x7C6A, 0x7E97,0x7F89,0x826D,0x8643,0x8838,0x8837,0x8835,0x884B, 0x8B94,0x8B95,0x8E9E,0x8E9F,0x8EA0,0x8E9D,0x91BE,0x91BD, 0x91C2,0x946B,0x9468,0x9469,0x96E5,0x9746,0x9743,0x9747, 0x97C7,0x97E5,0x9A5E,0x9AD5,0x9B59,0x9C63,0x9C67,0x9C66, 0x9C62,0x9C5E,0x9C60,0x9E02,0x9DFE,0x9E07,0x9E03,0x9E06, 0x9E05,0x9E00,0x9E01,0x9E09,0x9DFF,0x9DFD,0x9E04,0x9EA0, 0x9F1E,0x9F46,0x9F74,0x9F75,0x9F76,0x56D4,0x652E,0x65B8, 0x6B18,0x6B19,0x6B17,0x6B1A,0x7062,0x7226,0x72AA,0x77D8, 0x77D9,0x7939,0x7C69,0x7C6B,0x7CF6,0x7E9A, /* Range 0xF940 - 0xF97E, array index: 0x372D */ 0x7E98,0x7E9B,0x7E99,0x81E0,0x81E1,0x8646,0x8647,0x8648, 0x8979,0x897A,0x897C,0x897B,0x89FF,0x8B98,0x8B99,0x8EA5, 0x8EA4,0x8EA3,0x946E,0x946D,0x946F,0x9471,0x9473,0x9749, 0x9872,0x995F,0x9C68,0x9C6E,0x9C6D,0x9E0B,0x9E0D,0x9E10, 0x9E0F,0x9E12,0x9E11,0x9EA1,0x9EF5,0x9F09,0x9F47,0x9F78, 0x9F7B,0x9F7A,0x9F79,0x571E,0x7066,0x7C6F,0x883C,0x8DB2, 0x8EA6,0x91C3,0x9474,0x9478,0x9476,0x9475,0x9A60,0x9C74, 0x9C73,0x9C71,0x9C75,0x9E14,0x9E13,0x9EF6,0x9F0A, /* Range 0xF9A1 - 0xF9D5, array index: 0x376C */ 0x9FA4,0x7068,0x7065,0x7CF7,0x866A,0x883E,0x883D,0x883F, 0x8B9E,0x8C9C,0x8EA9,0x8EC9,0x974B,0x9873,0x9874,0x98CC, 0x9961,0x99AB,0x9A64,0x9A66,0x9A67,0x9B24,0x9E15,0x9E17, 0x9F48,0x6207,0x6B1E,0x7227,0x864C,0x8EA8,0x9482,0x9480, 0x9481,0x9A69,0x9A68,0x9B2E,0x9E19,0x7229,0x864B,0x8B9F, 0x9483,0x9C79,0x9EB7,0x7675,0x9A6B,0x9C7A,0x9E1D,0x7069, 0x706A,0x9EA4,0x9F7E,0x9F49,0x9F98, /* Unranged codes (176 codes) */ }; #endif /* ICONV_TO_UCS_CCS_BIG5 && defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * 16-bit UCS -> big5 speed-optimized table (51200 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_BIG5) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t from_ucs_speed_big5[] = { /* Heading Block */ 0x0100,INVBLK,0x0200,0x0300,0x0400,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, 0x0500,0x0600,0x0700,INVBLK,0x0800,0x0900,0x0A00,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, 0x0B00,0x0C00,0x0D00,0x0E00,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,0x0F00,0x1000, 0x1100,0x1200,0x1300,0x1400,0x1500,0x1600,0x1700,0x1800, 0x1900,0x1A00,0x1B00,0x1C00,0x1D00,0x1E00,0x1F00,0x2000, 0x2100,0x2200,0x2300,0x2400,0x2500,0x2600,0x2700,0x2800, 0x2900,0x2A00,0x2B00,0x2C00,0x2D00,0x2E00,0x2F00,0x3000, 0x3100,0x3200,0x3300,0x3400,0x3500,0x3600,0x3700,0x3800, 0x3900,0x3A00,0x3B00,0x3C00,0x3D00,0x3E00,0x3F00,0x4000, 0x4100,0x4200,0x4300,0x4400,0x4500,0x4600,0x4700,0x4800, 0x4900,0x4A00,0x4B00,0x4C00,0x4D00,0x4E00,0x4F00,0x5000, 0x5100,0x5200,0x5300,0x5400,0x5500,0x5600,0x5700,0x5800, 0x5900,0x5A00,0x5B00,0x5C00,0x5D00,0x5E00,0x5F00,0x6000, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,0x6100,INVBLK,INVBLK,INVBLK,0x6200,0x6300, /* Block 1, Array index 0x0100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0xA246,0xA247,INVALC,0xA244,INVALC,0xA1B1, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xA258,0xA1D3,INVALC,INVALC,INVALC,INVALC,INVALC,0xA150, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xA1D1, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xA1D2, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 3, Array index 0x0200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xA3BE, INVALC,0xA3BC,0xA3BD,0xA3BF,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xA3BB,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 4, Array index 0x0300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xA344,0xA345,0xA346,0xA347,0xA348,0xA349,0xA34A, 0xA34B,0xA34C,0xA34D,0xA34E,0xA34F,0xA350,0xA351,0xA352, 0xA353,0xA354,INVALC,0xA355,0xA356,0xA357,0xA358,0xA359, 0xA35A,0xA35B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xA35C,0xA35D,0xA35E,0xA35F,0xA360,0xA361,0xA362, 0xA363,0xA364,0xA365,0xA366,0xA367,0xA368,0xA369,0xA36A, 0xA36B,0xA36C,INVALC,0xA36D,0xA36E,0xA36F,0xA370,0xA371, 0xA372,0xA373,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 5, Array index 0x0400 */ INVALC,0xC7B3,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0xC7B1,0xC7B2,0xC7B4,0xC7B5, 0xC7B6,0xC7B7,0xC7B8,0xC7B9,0xC7BA,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0xC7BB,0xC7BC,0xC7BD,0xC7BE,0xC7BF, 0xC7C0,0xC7C1,0xC7C2,0xC7C3,0xC7C4,0xC7C5,0xC7C6,0xC7C7, 0xC7C8,0xC7C9,0xC7CA,0xC7CB,0xC7CC,0xC7CD,0xC7CF,0xC7D0, 0xC7D1,0xC7D2,0xC7D3,0xC7D4,0xC7D5,0xC7D6,0xC7D7,0xC7D8, 0xC7D9,0xC7DA,0xC7DB,0xC7DC,0xC7DD,0xC7DE,0xC7DF,0xC7E0, 0xC7E1,0xC7E2,0xC7E3,0xC7E4,0xC7E5,0xC7E6,0xC7E7,0xC7E8, INVALC,0xC7CE,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 33, Array index 0x0500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0xA156,0xA158,INVALC,INVALC,INVALC, 0xA1A5,0xA1A6,INVALC,INVALC,0xA1A7,0xA1A8,INVALC,INVALC, INVALC,INVALC,0xA145,INVALC,INVALC,0xA14C,0xA14B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0xA1AC,INVALC,INVALC,0xA1AB,INVALC,INVALC, INVALC,INVALC,INVALC,0xA1B0,INVALC,INVALC,0xA1C2,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 34, Array index 0x0600 */ INVALC,INVALC,INVALC,0xA24A,INVALC,0xA1C1,INVALC,INVALC, INVALC,0xA24B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xA2B9,0xA2BA,0xA2BB,0xA2BC,0xA2BD,0xA2BE,0xA2BF,0xA2C0, 0xA2C1,0xA2C2,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xA1F6,0xA1F4,0xA1F7,0xA1F5,INVALC,INVALC,0xA1F8,0xA1F9, 0xA1FB,0xA1FA,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 35, Array index 0x0700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0xA1D4,INVALC,INVALC,INVALC,0xA1DB,0xA1E8, 0xA1E7,INVALC,INVALC,0xA1FD,INVALC,0xA1FC,INVALC,INVALC, INVALC,0xA1E4,0xA1E5,0xA1EC,INVALC,INVALC,0xA1ED,INVALC, INVALC,INVALC,INVALC,INVALC,0xA1EF,0xA1EE,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0xA1E3,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0xA1DC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xA1DA,0xA1DD,INVALC,INVALC,INVALC,INVALC,0xA1D8,0xA1D9, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xA1E6,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xA1E9, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 37, Array index 0x0800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xC7E9,0xC7EA,0xC7EB,0xC7EC,0xC7ED,0xC7EE,0xC7EF,0xC7F0, 0xC7F1,0xC7F2,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0xC7F3,0xC7F4,0xC7F5,0xC7F6, 0xC7F7,0xC7F8,0xC7F9,0xC7FA,0xC7FB,0xC7FC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 38, Array index 0x0900 */ 0xA277,INVALC,0xA278,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0xA27A,INVALC,INVALC,INVALC, 0xA27B,INVALC,INVALC,INVALC,0xA27C,INVALC,INVALC,INVALC, 0xA27D,INVALC,INVALC,INVALC,0xA275,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0xA274,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0xA273,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0xA272,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0xA271,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xA2A4,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xA2A5,INVALC, INVALC,0xA2A7,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0xA2A6,INVALC,INVALC,0xA27E,0xA2A1,0xA2A3, 0xA2A2,0xA2AC,0xA2AD,0xA2AE,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xA262,0xA263,0xA264,0xA265,0xA266,0xA267,0xA268, 0xA269,0xA270,0xA26F,0xA26E,0xA26D,0xA26C,0xA26B,0xA26A, INVALC,INVALC,INVALC,INVALC,0xA276,0xA279,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xA1BD,0xA1BC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0xA1B6,0xA1B5,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0xA1BF,0xA1BE,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xA1BB,0xA1BA, INVALC,INVALC,INVALC,0xA1B3,INVALC,INVALC,0xA1B7,0xA1B4, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0xA2A8,0xA2A9,0xA2AB,0xA2AA,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 39, Array index 0x0A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,0xA1B9,0xA1B8,INVALC, INVALC,0xA1F3,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xA1F0,0xA1F2,0xA1F1,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 49, Array index 0x0B00 */ 0xA140,0xA142,0xA143,0xA1B2,INVALC,0xC6A4,INVALC,INVALC, 0xA171,0xA172,0xA16D,0xA16E,0xA175,0xA176,0xA179,0xA17A, 0xA169,0xA16A,0xA245,INVALC,0xA165,0xA166,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xA1A9,0xA1AA,INVALC, INVALC,0xA2C3,0xA2C4,0xA2C5,0xA2C6,0xA2C7,0xA2C8,0xA2C9, 0xA2CA,0xA2CB,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xC6A5,0xC6A6,0xC6A7,0xC6A8,0xC6A9,0xC6AA,0xC6AB, 0xC6AC,0xC6AD,0xC6AE,0xC6AF,0xC6B0,0xC6B1,0xC6B2,0xC6B3, 0xC6B4,0xC6B5,0xC6B6,0xC6B7,0xC6B8,0xC6B9,0xC6BA,0xC6BB, 0xC6BC,0xC6BD,0xC6BE,0xC6BF,0xC6C0,0xC6C1,0xC6C2,0xC6C3, 0xC6C4,0xC6C5,0xC6C6,0xC6C7,0xC6C8,0xC6C9,0xC6CA,0xC6CB, 0xC6CC,0xC6CD,0xC6CE,0xC6CF,0xC6D0,0xC6D1,0xC6D2,0xC6D3, 0xC6D4,0xC6D5,0xC6D6,0xC6D7,0xC6D8,0xC6D9,0xC6DA,0xC6DB, 0xC6DC,0xC6DD,0xC6DE,0xC6DF,0xC6E0,0xC6E1,0xC6E2,0xC6E3, 0xC6E4,0xC6E5,0xC6E6,0xC6E7,0xC6E8,0xC6E9,0xC6EA,0xC6EB, 0xC6EC,0xC6ED,0xC6EE,0xC6EF,0xC6F0,0xC6F1,0xC6F2,0xC6F3, 0xC6F4,0xC6F5,0xC6F6,0xC6F7,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xC6A2,0xC6A3,INVALC, INVALC,0xC6F8,0xC6F9,0xC6FA,0xC6FB,0xC6FC,0xC6FD,0xC6FE, 0xC740,0xC741,0xC742,0xC743,0xC744,0xC745,0xC746,0xC747, 0xC748,0xC749,0xC74A,0xC74B,0xC74C,0xC74D,0xC74E,0xC74F, 0xC750,0xC751,0xC752,0xC753,0xC754,0xC755,0xC756,0xC757, 0xC758,0xC759,0xC75A,0xC75B,0xC75C,0xC75D,0xC75E,0xC75F, 0xC760,0xC761,0xC762,0xC763,0xC764,0xC765,0xC766,0xC767, 0xC768,0xC769,0xC76A,0xC76B,0xC76C,0xC76D,0xC76E,0xC76F, 0xC770,0xC771,0xC772,0xC773,0xC774,0xC775,0xC776,0xC777, 0xC778,0xC779,0xC77A,0xC77B,0xC77C,0xC77D,0xC77E,0xC7A1, 0xC7A2,0xC7A3,0xC7A4,0xC7A5,0xC7A6,0xC7A7,0xC7A8,0xC7A9, 0xC7AA,0xC7AB,0xC7AC,0xC7AD,0xC7AE,0xC7AF,0xC7B0,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xC6A1,INVALC, /* Block 50, Array index 0x0C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,0xA374,0xA375,0xA376, 0xA377,0xA378,0xA379,0xA37A,0xA37B,0xA37C,0xA37D,0xA37E, 0xA3A1,0xA3A2,0xA3A3,0xA3A4,0xA3A5,0xA3A6,0xA3A7,0xA3A8, 0xA3A9,0xA3AA,0xA3AB,0xA3AC,0xA3AD,0xA3AE,0xA3AF,0xA3B0, 0xA3B1,0xA3B2,0xA3B3,0xA3B4,0xA3B5,0xA3B6,0xA3B7,0xA3B8, 0xA3B9,0xA3BA,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 51, Array index 0x0D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0xA1C0,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 52, Array index 0x0E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xA255,0xA256, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0xA250,0xA251,0xA252,INVALC, INVALC,0xA254,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0xA257,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xA253,INVALC, INVALC,0xA1EB,0xA1EA,INVALC,INVALC,0xA24F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 79, Array index 0x0F00 */ 0xA440,0xA442,INVALC,0xA443,INVALC,INVALC,INVALC,0xC945, 0xA456,0xA454,0xA457,0xA455,0xC946,0xA4A3,0xC94F,0xC94D, 0xA4A2,0xA4A1,INVALC,INVALC,0xA542,0xA541,0xA540,INVALC, 0xA543,0xA4FE,INVALC,INVALC,INVALC,INVALC,0xA5E0,0xA5E1, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xA8C3,INVALC, INVALC,INVALC,INVALC,0xA458,INVALC,0xA4A4,0xC950,INVALC, 0xA4A5,0xC963,0xA6EA,0xCBB1,INVALC,INVALC,INVALC,INVALC, 0xA459,0xA4A6,INVALC,0xA544,0xC964,INVALC,INVALC,INVALC, INVALC,INVALC,0xC940,0xA444,INVALC,0xA45B,INVALC,0xC947, 0xA45C,INVALC,INVALC,0xA4A7,INVALC,0xA545,0xA547,0xA546, INVALC,INVALC,0xA5E2,0xA5E3,INVALC,INVALC,0xA8C4,INVALC, 0xADBC,0xA441,INVALC,INVALC,0xC941,0xA445,0xA45E,0xA45D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xA5E4,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0xA8C5,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xB0AE,0xD44B, INVALC,INVALC,0xB6C3,0xDCB1,0xDCB2,INVALC,0xA446,INVALC, 0xA4A9,INVALC,INVALC,0xA8C6,0xA447,0xC948,0xA45F,INVALC, INVALC,0xA4AA,0xA4AC,0xC951,0xA4AD,0xA4AB,INVALC,INVALC, INVALC,0xA5E5,INVALC,0xA8C7,INVALC,INVALC,0xA8C8,0xAB45, INVALC,0xA460,0xA4AE,INVALC,0xA5E6,0xA5E8,0xA5E7,INVALC, 0xA6EB,INVALC,INVALC,0xA8C9,0xA8CA,0xAB46,0xAB47,INVALC, INVALC,INVALC,INVALC,0xADBD,INVALC,INVALC,0xDCB3,INVALC, INVALC,0xF6D6,0xA448,INVALC,INVALC,INVALC,INVALC,INVALC, 0xA4B0,0xA4AF,0xC952,0xA4B1,0xA4B7,INVALC,0xA4B2,0xA4B3, 0xC954,0xC953,0xA4B5,0xA4B6,INVALC,0xA4B4,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0xA54A,0xA54B,0xA54C,0xA54D, 0xA549,0xA550,0xC96A,INVALC,0xC966,0xC969,0xA551,0xA561, INVALC,0xC968,INVALC,0xA54E,0xA54F,0xA548,INVALC,INVALC, 0xC965,0xC967,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xA5F5,0xC9B0,0xA5F2,0xA5F6,0xC9BA,0xC9AE,0xA5F3,0xC9B2, INVALC,INVALC,INVALC,0xA5F4,INVALC,0xA5F7,INVALC,0xA5E9, /* Block 80, Array index 0x1000 */ 0xC9B1,0xA5F8,0xC9B5,INVALC,0xC9B9,0xC9B6,INVALC,INVALC, 0xC9B3,0xA5EA,0xA5EC,0xA5F9,INVALC,0xA5EE,0xC9AB,0xA5F1, 0xA5EF,0xA5F0,0xC9BB,0xC9B8,0xC9AF,0xA5ED,INVALC,INVALC, 0xC9AC,0xA5EB,INVALC,INVALC,INVALC,0xC9B4,INVALC,INVALC, INVALC,INVALC,0xC9B7,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0xC9AD,0xCA66,INVALC,0xA742, 0xA6F4,INVALC,INVALC,0xCA67,0xA6F1,INVALC,0xA744,INVALC, 0xA6F9,INVALC,0xA6F8,0xCA5B,0xA6FC,0xA6F7,0xCA60,0xCA68, INVALC,0xCA64,INVALC,0xA6FA,INVALC,INVALC,0xA6FD,0xA6EE, 0xA747,0xCA5D,INVALC,INVALC,0xCBBD,0xA6EC,0xA743,0xA6ED, 0xA6F5,0xA6F6,0xCA62,0xCA5E,0xA6FB,0xA6F3,0xCA5A,0xA6EF, 0xCA65,0xA745,0xA748,0xA6F2,0xA740,0xA746,0xA6F0,0xCA63, 0xA741,0xCA69,0xCA5C,0xA6FE,0xCA5F,INVALC,INVALC,0xCA61, INVALC,0xA8D8,0xCBBF,0xCBCB,0xA8D0,INVALC,0xCBCC,0xA8CB, 0xA8D5,INVALC,INVALC,0xA8CE,0xCBB9,0xA8D6,0xCBB8,0xCBBC, 0xCBC3,0xCBC1,0xA8DE,0xA8D9,0xCBB3,0xCBB5,0xA8DB,0xA8CF, 0xCBB6,0xCBC2,0xCBC9,0xA8D4,0xCBBB,0xCBB4,0xA8D3,0xCBB7, 0xA8D7,0xCBBA,INVALC,0xA8D2,INVALC,0xA8CD,INVALC,0xA8DC, 0xCBC4,0xA8DD,0xCBC8,INVALC,0xCBC6,0xCBCA,0xA8DA,0xCBBE, 0xCBB2,INVALC,0xCBC0,0xA8D1,0xCBC5,0xA8CC,0xCBC7,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xAB56,0xAB4A, INVALC,INVALC,0xCDE0,0xCDE8,INVALC,0xAB49,0xAB51,0xAB5D, INVALC,0xCDEE,0xCDEC,0xCDE7,INVALC,INVALC,INVALC,0xAB4B, 0xCDED,0xCDE3,0xAB59,0xAB50,0xAB58,0xCDDE,INVALC,0xCDEA, INVALC,0xCDE1,0xAB54,0xCDE2,INVALC,0xCDDD,0xAB5B,0xAB4E, 0xAB57,0xAB4D,INVALC,0xCDDF,0xCDE4,INVALC,0xCDEB,0xAB55, 0xAB52,0xCDE6,0xAB5A,0xCDE9,0xCDE5,0xAB4F,0xAB5C,0xAB53, 0xAB4C,0xAB48,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0xCDEF,INVALC,0xADD7,0xADC1, INVALC,0xADD1,INVALC,0xADD6,0xD0D0,0xD0CF,0xD0D4,0xD0D5, 0xADC4,INVALC,0xADCD,INVALC,INVALC,INVALC,0xADDA,INVALC, /* Block 81, Array index 0x1100 */ 0xADCE,INVALC,INVALC,INVALC,INVALC,0xD0C9,0xADC7,0xD0CA, INVALC,0xADDC,INVALC,0xADD3,0xADBE,0xADBF,0xD0DD,0xB0BF, INVALC,0xADCC,0xADCB,0xD0CB,0xADCF,0xD45B,0xADC6,0xD0D6, 0xADD5,0xADD4,0xADCA,0xD0CE,0xD0D7,INVALC,0xD0C8,0xADC9, 0xD0D8,0xADD2,0xD0CC,0xADC0,INVALC,0xADC3,0xADC2,0xD0D9, 0xADD0,0xADC5,0xADD9,0xADDB,0xD0D3,0xADD8,INVALC,0xD0DB, 0xD0CD,0xD0DC,INVALC,0xD0D1,INVALC,0xD0DA,INVALC,0xD0D2, INVALC,INVALC,INVALC,INVALC,0xADC8,INVALC,INVALC,INVALC, 0xD463,0xD457,INVALC,0xB0B3,INVALC,0xD45C,0xD462,0xB0B2, 0xD455,0xB0B6,0xD459,0xD452,0xB0B4,0xD456,0xB0B9,0xB0BE, INVALC,0xD467,INVALC,0xD451,INVALC,0xB0BA,INVALC,0xD466, INVALC,INVALC,0xB0B5,0xD458,0xB0B1,0xD453,0xD44F,0xD45D, 0xD450,0xD44E,0xD45A,0xD460,0xD461,0xB0B7,INVALC,INVALC, 0xD85B,0xD45E,0xD44D,0xD45F,INVALC,0xB0C1,0xD464,0xB0C0, 0xD44C,INVALC,0xD454,0xD465,0xB0BC,0xB0BB,0xB0B8,0xB0BD, INVALC,INVALC,0xB0AF,INVALC,INVALC,0xB0B0,INVALC,INVALC, 0xB3C8,INVALC,0xD85E,0xD857,INVALC,0xB3C5,INVALC,0xD85F, INVALC,INVALC,INVALC,0xD855,0xD858,0xB3C4,0xD859,INVALC, INVALC,0xB3C7,0xD85D,INVALC,0xD853,0xD852,0xB3C9,INVALC, 0xB3CA,0xB3C6,0xB3CB,0xD851,0xD85C,0xD85A,0xD854,INVALC, INVALC,INVALC,0xB3C3,0xD856,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0xB6CA,0xB6C4,0xDCB7,0xB6CD, 0xDCBD,0xDCC0,0xB6C6,0xB6C7,0xDCBA,0xB6C5,0xDCC3,0xB6CB, 0xDCC4,INVALC,0xDCBF,0xB6CC,INVALC,0xDCB4,0xB6C9,0xDCB5, INVALC,0xDCBE,0xDCBC,INVALC,0xDCB8,0xB6C8,0xDCB6,0xB6CE, 0xDCBB,0xDCC2,0xDCB9,0xDCC1,INVALC,INVALC,0xB9B6,0xB9B3, INVALC,0xB9B4,INVALC,0xE0F9,0xE0F1,0xB9B2,0xB9AF,0xE0F2, INVALC,INVALC,0xB9B1,0xE0F5,INVALC,0xE0F7,INVALC,INVALC, 0xE0FE,INVALC,INVALC,0xE0FD,0xE0F8,0xB9AE,0xE0F0,0xB9AC, 0xE0F3,0xB9B7,0xE0F6,INVALC,0xE0FA,0xB9B0,0xB9AD,0xE0FC, 0xE0FB,0xB9B5,INVALC,0xE0F4,INVALC,0xBBF8,0xE4EC,INVALC, 0xE4E9,0xBBF9,INVALC,0xBBF7,INVALC,0xE4F0,0xE4ED,0xE4E6, /* Block 82, Array index 0x1200 */ 0xBBF6,INVALC,0xBBFA,0xE4E7,0xBBF5,0xBBFD,0xE4EA,0xE4EB, 0xBBFB,0xBBFC,0xE4F1,0xE4EE,0xE4EF,INVALC,INVALC,INVALC, 0xBEAA,0xE8F8,0xBEA7,0xE8F5,0xBEA9,0xBEAB,INVALC,0xE8F6, 0xBEA8,INVALC,0xE8F7,INVALC,0xE8F4,INVALC,INVALC,0xC076, 0xECBD,0xC077,0xECBB,INVALC,0xECBC,0xECBA,0xECB9,INVALC, INVALC,0xECBE,0xC075,INVALC,INVALC,0xEFB8,0xEFB9,INVALC, 0xE4E8,0xEFB7,0xC078,0xC35F,0xF1EB,0xF1EC,INVALC,0xC4D7, 0xC4D8,0xF5C1,0xF5C0,0xC56C,0xC56B,0xF7D0,INVALC,0xA449, 0xA461,0xA4B9,INVALC,0xA4B8,0xA553,0xA552,0xA5FC,0xA5FB, 0xA5FD,0xA5FA,INVALC,0xA74A,0xA749,0xA74B,INVALC,INVALC, INVALC,INVALC,0xA8E0,INVALC,0xA8DF,0xA8E1,INVALC,0xAB5E, INVALC,0xA259,0xD0DE,0xA25A,0xB0C2,0xA25C,0xA25B,0xD860, INVALC,0xA25D,0xB9B8,0xA25E,INVALC,0xA44A,INVALC,0xA4BA, 0xA5FE,0xA8E2,INVALC,0xA44B,0xA4BD,0xA4BB,0xA4BC,INVALC, INVALC,0xA640,INVALC,INVALC,INVALC,0xA74C,0xA8E4,0xA8E3, 0xA8E5,INVALC,INVALC,INVALC,0xADDD,INVALC,INVALC,INVALC, 0xBEAC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xC94E, INVALC,0xA554,0xA555,INVALC,INVALC,0xA641,INVALC,0xCA6A, INVALC,0xAB60,0xAB5F,0xD0E0,0xD0DF,0xB0C3,INVALC,0xA4BE, 0xC955,INVALC,INVALC,INVALC,INVALC,INVALC,0xCBCD,INVALC, 0xAB61,INVALC,0xADE0,INVALC,0xADDE,0xADDF,INVALC,INVALC, INVALC,INVALC,0xBEAD,INVALC,0xA556,INVALC,INVALC,INVALC, 0xA642,0xC9BC,INVALC,INVALC,INVALC,INVALC,0xA74D,0xA74E, INVALC,0xCA6B,INVALC,INVALC,0xCBCE,0xA8E6,0xCBCF,INVALC, INVALC,INVALC,INVALC,INVALC,0xD0E2,0xD0E3,0xADE3,INVALC, 0xD0E4,INVALC,0xD0E1,0xADE4,0xADE2,0xADE1,0xD0E5,INVALC, 0xD468,INVALC,INVALC,INVALC,0xD861,INVALC,INVALC,0xDCC5, 0xE140,INVALC,INVALC,INVALC,0xBBFE,0xBEAE,0xE8F9,INVALC, 0xA44C,0xA45A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xB0C4,0xB3CD,INVALC,0xB9B9,INVALC,0xC942,0xA4BF,INVALC, 0xA559,0xA557,0xA558,INVALC,INVALC,0xA8E7,INVALC,INVALC, /* Block 83, Array index 0x1300 */ 0xA44D,0xA44E,INVALC,0xA462,INVALC,INVALC,0xA4C0,0xA4C1, 0xA4C2,0xC9BE,0xA55A,INVALC,0xC96B,INVALC,0xA646,INVALC, 0xC9BF,0xA644,0xA645,0xC9BD,INVALC,INVALC,0xA647,0xA643, INVALC,INVALC,INVALC,INVALC,0xCA6C,0xAAEC,0xCA6D,INVALC, INVALC,0xCA6E,INVALC,INVALC,0xA750,0xA74F,INVALC,INVALC, 0xA753,0xA751,0xA752,INVALC,INVALC,INVALC,0xA8ED,INVALC, 0xA8EC,0xCBD4,0xCBD1,0xCBD2,INVALC,0xCBD0,0xA8EE,0xA8EA, 0xA8E9,INVALC,0xA8EB,0xA8E8,INVALC,INVALC,INVALC,INVALC, INVALC,0xA8EF,INVALC,0xAB63,0xCDF0,INVALC,0xCBD3,0xAB68, INVALC,0xCDF1,0xAB64,0xAB67,0xAB66,0xAB65,0xAB62,INVALC, INVALC,INVALC,0xD0E8,INVALC,0xADE7,0xD0EB,0xADE5,INVALC, INVALC,INVALC,0xD0E7,0xADE8,0xADE6,0xADE9,0xD0E9,0xD0EA, INVALC,0xD0E6,0xD0EC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xB3D1,0xB0C5,0xD469,0xD46B,0xD46A,0xD46C,0xB0C6, INVALC,INVALC,0xB3CE,INVALC,0xB3CF,0xB3D0,INVALC,0xB6D0, 0xDCC7,INVALC,0xDCC6,0xDCC8,0xDCC9,0xB6D1,INVALC,0xB6CF, 0xE141,0xE142,0xB9BB,0xB9BA,0xE35A,INVALC,INVALC,0xBC40, 0xBC41,0xBC42,0xBC44,0xE4F2,0xE4F3,0xBC43,INVALC,INVALC, INVALC,0xBEAF,INVALC,0xBEB0,INVALC,INVALC,0xF1ED,0xF5C3, 0xF5C2,0xF7D1,INVALC,0xA44F,INVALC,INVALC,INVALC,0xA55C, 0xA55B,INVALC,INVALC,0xA648,INVALC,INVALC,0xC9C0,INVALC, INVALC,0xA755,0xA756,0xA754,0xA757,0xCA6F,0xCA70,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0xA8F1,0xCBD5,INVALC,0xA8F0,INVALC, 0xCDF2,0xAB6C,0xCDF3,0xAB6B,INVALC,INVALC,INVALC,0xAB69, INVALC,0xAB6A,INVALC,INVALC,INVALC,0xD0ED,INVALC,INVALC, INVALC,INVALC,0xB0C7,0xD46E,INVALC,0xB0CA,0xD46D,0xB1E5, 0xB0C9,0xB0C8,INVALC,0xB3D4,INVALC,0xB3D3,0xB3D2,0xB6D2, INVALC,INVALC,0xB6D5,0xB6D6,0xB6D4,INVALC,0xB6D3,INVALC, INVALC,0xE143,INVALC,0xE144,INVALC,INVALC,INVALC,0xE4F5, 0xBC45,0xE4F4,INVALC,0xBEB1,0xECBF,0xC079,INVALC,0xF1EE, 0xC455,INVALC,0xA463,0xA4C3,0xC956,INVALC,0xA4C4,0xA4C5, /* Block 84, Array index 0x1400 */ INVALC,INVALC,INVALC,INVALC,INVALC,0xA55D,0xA55E,INVALC, 0xA649,0xCA71,0xCBD6,0xCBD7,INVALC,0xAB6D,0xD0EE,0xB0CC, 0xB0CB,0xD863,0xD862,INVALC,INVALC,0xA450,0xA4C6,0xA55F, INVALC,0xB0CD,0xC943,INVALC,0xC96C,0xA560,INVALC,0xC9C2, 0xA64B,0xA64A,0xC9C1,0xA758,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0xADEA,INVALC,INVALC,0xD46F,INVALC,0xB6D7, 0xE145,0xB9BC,INVALC,INVALC,0xE8FA,INVALC,INVALC,0xF3FD, INVALC,0xA4C7,INVALC,INVALC,0xCBD8,0xCDF4,0xB0D0,0xB0CE, 0xB0CF,0xA451,INVALC,0xA464,0xA2CD,0xA4CA,INVALC,0xA4C9, 0xA4C8,0xA563,0xA562,INVALC,0xC96D,0xC9C3,INVALC,INVALC, INVALC,0xA8F5,0xA8F2,0xA8F4,0xA8F3,INVALC,INVALC,0xAB6E, INVALC,INVALC,0xB3D5,INVALC,0xA452,INVALC,0xA4CB,INVALC, 0xA565,0xA564,INVALC,0xCA72,INVALC,INVALC,0xA8F6,INVALC, INVALC,INVALC,INVALC,INVALC,0xC957,INVALC,0xA567,0xA566, 0xA64C,0xA64D,0xCA73,0xA759,INVALC,0xA75A,INVALC,0xA8F7, 0xA8F8,0xA8F9,INVALC,0xAB6F,0xCDF5,INVALC,INVALC,0xADEB, INVALC,INVALC,0xC944,INVALC,0xA4CC,INVALC,INVALC,INVALC, INVALC,INVALC,0xC9C4,INVALC,INVALC,INVALC,0xCA74,0xCA75, INVALC,INVALC,0xCBD9,INVALC,0xCBDA,INVALC,0xCDF7,0xCDF6, 0xCDF9,0xCDF8,0xAB70,INVALC,0xD470,0xADED,0xD0EF,0xADEC, INVALC,INVALC,INVALC,INVALC,0xD864,0xB3D6,INVALC,0xD865, INVALC,INVALC,INVALC,INVALC,0xE146,0xB9BD,INVALC,INVALC, INVALC,INVALC,0xBC46,INVALC,0xF1EF,INVALC,INVALC,INVALC, INVALC,0xC958,INVALC,0xA568,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0xB0D1,INVALC,INVALC,INVALC,INVALC, 0xA453,0xA465,0xA4CE,0xA4CD,INVALC,0xA4CF,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0xA8FB,INVALC,0xA8FA,0xA8FC, INVALC,INVALC,INVALC,0xAB71,INVALC,INVALC,INVALC,0xADEE, INVALC,0xE8FB,0xC24F,0xA466,0xA56A,0xA579,0xA574,INVALC, 0xA56F,0xA56E,0xA575,0xA573,0xA56C,0xA57A,0xA56D,0xA569, 0xA578,0xA577,0xA576,0xA56B,INVALC,0xA572,INVALC,INVALC, 0xA571,INVALC,INVALC,0xA57B,0xA570,INVALC,INVALC,INVALC, /* Block 85, Array index 0x1500 */ INVALC,0xA653,INVALC,0xA659,0xA655,INVALC,0xA65B,0xC9C5, 0xA658,0xA64E,0xA651,0xA654,0xA650,0xA657,0xA65A,0xA64F, 0xA652,0xA656,0xA65C,INVALC,INVALC,INVALC,INVALC,INVALC, 0xCA7E,0xCA7B,INVALC,0xA767,0xCA7C,0xA75B,0xA75D,0xA775, 0xA770,INVALC,INVALC,INVALC,0xCAA5,0xCA7D,0xA75F,0xA761, 0xCAA4,0xA768,0xCA78,0xA774,0xA776,0xA75C,0xA76D,INVALC, 0xCA76,0xA773,INVALC,0xA764,INVALC,0xA76E,0xA76F,0xCA77, 0xA76C,0xA76A,INVALC,0xA76B,0xA771,0xCAA1,0xA75E,INVALC, 0xA772,0xCAA3,0xA766,0xA763,INVALC,0xCA7A,0xA762,0xCAA6, 0xA765,INVALC,0xA769,INVALC,INVALC,INVALC,0xA760,0xCAA2, INVALC,INVALC,INVALC,INVALC,0xCA79,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xCBEB,0xCBEA,0xA94F,0xCBED,0xCBEF,0xCBE4,0xCBE7,0xCBEE, 0xA950,INVALC,INVALC,0xCBE1,0xCBE5,INVALC,INVALC,0xCBE9, 0xCE49,0xA94B,0xCE4D,0xA8FD,0xCBE6,0xA8FE,0xA94C,0xA945, 0xA941,INVALC,0xCBE2,0xA944,0xA949,0xA952,0xCBE3,0xCBDC, 0xA943,0xCBDD,0xCBDF,INVALC,0xA946,INVALC,0xA948,0xCBDB, 0xCBE0,INVALC,INVALC,0xA951,0xA94D,0xCBE8,0xA953,INVALC, 0xA94A,0xCBDE,0xA947,INVALC,INVALC,0xA942,0xA940,INVALC, 0xCBEC,INVALC,0xA94E,INVALC,INVALC,INVALC,INVALC,INVALC, 0xCE48,0xCDFB,0xCE4B,INVALC,INVALC,0xCDFD,0xAB78,0xABA8, 0xAB74,0xABA7,0xAB7D,0xABA4,0xAB72,0xCDFC,0xCE43,0xABA3, 0xCE4F,0xABA5,INVALC,0xAB79,INVALC,INVALC,0xCE45,0xCE42, 0xAB77,INVALC,0xCDFA,0xABA6,0xCE4A,0xAB7C,0xCE4C,0xABA9, 0xAB73,0xAB7E,0xAB7B,0xCE40,0xABA1,0xCE46,0xCE47,0xAB7A, 0xABA2,0xAB76,INVALC,INVALC,INVALC,INVALC,0xAB75,0xCDFE, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xCE44,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xCE4E,INVALC, 0xD144,0xADFB,0xD0F1,INVALC,0xD0F6,0xADF4,0xAE40,0xD0F4, 0xADEF,0xADF9,0xADFE,0xD0FB,INVALC,0xADFA,0xADFD,INVALC, INVALC,0xD0FE,0xADF5,0xD0F5,INVALC,INVALC,INVALC,0xD142, 0xD143,INVALC,0xADF7,0xD141,0xADF3,0xAE43,INVALC,0xD0F8, /* Block 86, Array index 0x1600 */ INVALC,0xADF1,INVALC,0xD146,0xD0F9,0xD0FD,0xADF6,0xAE42, 0xD0FA,0xADFC,0xD140,0xD147,0xD4A1,INVALC,0xD145,0xAE44, 0xADF0,0xD0FC,0xD0F3,INVALC,0xADF8,INVALC,INVALC,0xD0F2, INVALC,INVALC,0xD0F7,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xD0F0,0xAE41, INVALC,INVALC,0xD477,INVALC,0xB0E4,0xD4A7,0xB0E2,0xB0DF, 0xD47C,0xB0DB,0xD4A2,0xB0E6,0xD476,0xD47B,0xD47A,0xADF2, 0xB0E1,0xD4A5,INVALC,0xD4A8,0xD473,INVALC,0xB3E8,INVALC, 0xD4A9,0xB0E7,INVALC,0xB0D9,0xB0D6,0xD47E,0xB0D3,INVALC, 0xD4A6,INVALC,0xB0DA,0xD4AA,INVALC,0xD474,0xD4A4,0xB0DD, 0xD475,0xD478,0xD47D,INVALC,INVALC,0xB0DE,0xB0DC,0xB0E8, INVALC,INVALC,INVALC,INVALC,0xB0E3,INVALC,0xB0D7,0xB1D2, INVALC,0xB0D8,0xD479,0xB0E5,0xB0E0,0xD4A3,0xB0D5,INVALC, INVALC,INVALC,0xB0D4,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xD471,0xD472,0xD86A, INVALC,INVALC,INVALC,0xB3D7,0xB3DA,0xD875,0xB3EE,0xD878, 0xB3D8,0xD871,0xB3DE,0xB3E4,0xB5BD,INVALC,INVALC,0xB3E2, 0xD86E,0xB3EF,0xB3DB,0xB3E3,0xD876,0xDCD7,0xD87B,0xD86F, INVALC,0xD866,0xD873,0xD86D,0xB3E1,0xD879,INVALC,INVALC, 0xB3DD,0xB3F1,0xB3EA,INVALC,0xB3DF,0xB3DC,INVALC,0xB3E7, INVALC,0xD87A,0xD86C,0xD872,0xD874,0xD868,0xD877,0xB3D9, 0xD867,INVALC,0xB3E0,0xB3F0,0xB3EC,0xD869,0xB3E6,INVALC, INVALC,0xB3ED,0xB3E9,0xB3E5,INVALC,0xD870,INVALC,INVALC, INVALC,INVALC,INVALC,0xB3EB,INVALC,INVALC,INVALC,0xDCD5, 0xDCD1,INVALC,0xDCE0,0xDCCA,0xDCD3,0xB6E5,0xB6E6,0xB6DE, 0xDCDC,0xB6E8,0xDCCF,0xDCCE,0xDCCC,0xDCDE,0xB6DC,0xDCD8, 0xDCCD,0xB6DF,0xDCD6,0xB6DA,0xDCD2,0xDCD9,0xDCDB,INVALC, INVALC,0xDCDF,0xB6E3,0xDCCB,0xB6DD,0xDCD0,INVALC,0xB6D8, INVALC,0xB6E4,0xDCDA,0xB6E0,0xB6E1,0xB6E7,0xB6DB,0xA25F, 0xB6D9,0xDCD4,INVALC,INVALC,INVALC,INVALC,INVALC,0xB6E2, INVALC,INVALC,0xDCDD,INVALC,INVALC,INVALC,0xB9CD,0xB9C8, INVALC,0xE155,0xE151,INVALC,0xE14B,0xB9C2,0xB9BE,0xE154, /* Block 87, Array index 0x1700 */ 0xB9BF,0xE14E,0xE150,INVALC,0xE153,INVALC,0xB9C4,INVALC, 0xB9CB,0xB9C5,INVALC,INVALC,0xE149,0xB9C6,0xB9C7,0xE14C, 0xB9CC,INVALC,0xE14A,0xE14F,0xB9C3,0xE148,0xB9C9,0xB9C1, INVALC,INVALC,INVALC,0xB9C0,0xE14D,0xE152,INVALC,0xB9CA, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xE147, INVALC,0xBC4D,0xE547,INVALC,0xE544,INVALC,0xBC47,0xBC53, 0xBC54,INVALC,0xBC4A,0xE542,0xBC4C,0xE4F9,0xBC52,INVALC, 0xE546,0xBC49,0xE548,0xBC48,INVALC,0xE543,0xE545,0xBC4B, 0xE541,0xE4FA,0xE4F7,INVALC,INVALC,0xD86B,0xE4FD,INVALC, 0xE4F6,0xE4FC,0xE4FB,INVALC,0xE4F8,INVALC,0xBC4F,INVALC, INVALC,INVALC,INVALC,0xBC4E,INVALC,INVALC,INVALC,0xBC50, 0xE4FE,0xBEB2,0xE540,INVALC,INVALC,INVALC,0xE945,INVALC, 0xE8FD,INVALC,0xBEBE,0xE942,0xBEB6,0xBEBA,0xE941,INVALC, 0xBEB9,0xBEB5,0xBEB8,0xBEB3,0xBEBD,0xE943,0xE8FE,0xBEBC, 0xE8FC,0xBEBB,0xE944,0xE940,0xBC51,INVALC,0xBEBF,0xE946, 0xBEB7,0xBEB4,INVALC,INVALC,INVALC,INVALC,0xECC6,0xECC8, 0xC07B,0xECC9,0xECC7,0xECC5,0xECC4,0xC07D,0xECC3,0xC07E, INVALC,INVALC,INVALC,INVALC,0xECC1,0xECC2,0xC07A,0xC0A1, 0xC07C,INVALC,INVALC,0xECC0,INVALC,0xC250,INVALC,0xEFBC, 0xEFBA,0xEFBF,0xEFBD,INVALC,0xEFBB,0xEFBE,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xC360,0xF1F2,0xF1F3, 0xC456,INVALC,0xF1F4,0xF1F0,0xF1F5,0xF1F1,0xC251,INVALC, INVALC,INVALC,0xF3FE,0xF441,0xC459,0xF440,0xC458,0xC457, INVALC,INVALC,INVALC,INVALC,0xC45A,0xF5C5,0xF5C6,INVALC, 0xC4DA,0xC4D9,0xC4DB,0xF5C4,INVALC,0xF6D8,0xF6D7,INVALC, 0xC56D,0xC56F,0xC56E,0xF6D9,0xC5C8,0xF8A6,INVALC,INVALC, INVALC,0xC5F1,INVALC,0xF8A5,0xF8EE,INVALC,INVALC,0xC949, INVALC,INVALC,0xA57D,0xA57C,INVALC,0xA65F,0xA65E,0xC9C7, 0xA65D,0xC9C6,INVALC,INVALC,0xA779,0xCAA9,INVALC,0xCAA8, INVALC,INVALC,0xA777,0xA77A,INVALC,INVALC,0xCAA7,INVALC, 0xA778,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xCBF0, INVALC,0xCBF1,0xA954,INVALC,INVALC,INVALC,INVALC,0xABAA, /* Block 88, Array index 0x1800 */ INVALC,0xD148,0xD149,0xAE45,0xAE46,INVALC,INVALC,0xD4AC, 0xB0E9,0xB0EB,0xD4AB,0xB0EA,0xD87C,0xB3F2,INVALC,INVALC, INVALC,INVALC,0xB6E9,0xB6EA,0xDCE1,INVALC,0xB9CF,INVALC, 0xB9CE,INVALC,0xE549,0xE948,0xE947,INVALC,0xF96B,0xA467, 0xC959,INVALC,0xC96E,0xC96F,INVALC,INVALC,INVALC,INVALC, 0xA662,0xA666,0xC9C9,INVALC,0xA664,0xA663,0xC9C8,0xA665, 0xA661,INVALC,INVALC,0xA660,0xC9CA,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0xA7A6,INVALC,INVALC,0xA7A3,INVALC, 0xA77D,0xCAAA,INVALC,INVALC,INVALC,0xCAAB,INVALC,0xA7A1, INVALC,0xCAAD,0xA77B,0xCAAE,0xCAAC,0xA77E,0xA7A2,0xA7A5, 0xA7A4,0xA77C,0xCAAF,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xA959,0xCBFE,INVALC,0xA95B,INVALC,0xA95A,INVALC, 0xCC40,0xA958,0xA957,0xCBF5,INVALC,0xCBF4,INVALC,0xCBF2, 0xCBF7,0xCBF6,0xCBF3,0xCBFC,0xCBFD,0xCBFA,0xCBF8,0xA956, INVALC,INVALC,INVALC,0xCBFB,0xA95C,0xCC41,INVALC,INVALC, 0xCBF9,INVALC,0xABAB,0xA955,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0xABAC,0xCE54,INVALC,INVALC,0xCE5A, INVALC,INVALC,INVALC,0xABB2,0xCE58,0xCE5E,INVALC,0xCE55, 0xCE59,0xCE5B,0xCE5D,0xCE57,INVALC,0xCE56,0xCE51,0xCE52, 0xABAD,INVALC,0xABAF,0xABAE,0xCE53,0xCE5C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xABB1,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xCE50,0xD153,INVALC, 0xD152,0xD157,0xD14E,INVALC,0xD151,0xD150,INVALC,0xD154, INVALC,0xD158,0xAE47,0xAE4A,INVALC,INVALC,0xD14F,0xD155, INVALC,INVALC,INVALC,0xAE49,0xD14A,INVALC,0xABB0,0xD4BA, 0xD156,INVALC,0xD14D,INVALC,0xAE48,0xD14C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0xD4B1,INVALC,INVALC,0xB0EC, 0xB0F0,0xD4C1,0xD4AF,0xD4BD,0xB0F1,0xD4BF,INVALC,0xD4C5, INVALC,0xD4C9,INVALC,INVALC,0xD4C0,0xD4B4,0xD4BC,INVALC, 0xD4CA,0xD4C8,0xD4BE,0xD4B9,0xD4B2,0xD8A6,0xD4B0,0xB0F5, 0xD4B7,0xB0F6,0xB0F2,0xD4AD,0xD4C3,0xD4B5,INVALC,INVALC, /* Block 89, Array index 0x1900 */ 0xD4B3,0xD4C6,0xB0F3,INVALC,0xD4CC,0xB0ED,0xB0EF,0xD4BB, 0xD4B6,0xAE4B,0xB0EE,0xD4B8,0xD4C7,0xD4CB,0xD4C2,INVALC, 0xD4C4,INVALC,INVALC,INVALC,0xD4AE,INVALC,INVALC,INVALC, INVALC,0xD8A1,INVALC,0xD8AA,0xD8A9,0xB3FA,0xD8A2,INVALC, 0xB3FB,0xB3F9,INVALC,0xD8A4,0xB3F6,0xD8A8,INVALC,0xD8A3, 0xD8A5,0xD87D,0xB3F4,INVALC,0xD8B2,0xD8B1,0xD8AE,0xB3F3, 0xB3F7,0xB3F8,0xD14B,0xD8AB,0xB3F5,0xB0F4,0xD8AD,0xD87E, 0xD8B0,0xD8AF,INVALC,0xD8B3,INVALC,0xDCEF,INVALC,0xD8AC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xD8A7,0xDCE7,0xB6F4,0xB6F7,0xB6F2,0xDCE6,0xDCEA,0xDCE5, INVALC,0xB6EC,0xB6F6,0xDCE2,0xB6F0,0xDCE9,INVALC,0xB6EE, 0xB6ED,0xDCEC,0xB6EF,0xDCEE,INVALC,0xDCEB,0xB6EB,INVALC, INVALC,INVALC,0xB6F5,0xDCF0,0xDCE4,0xDCED,INVALC,INVALC, 0xDCE3,INVALC,INVALC,0xB6F1,INVALC,0xB6F3,INVALC,0xDCE8, INVALC,0xDCF1,INVALC,INVALC,0xE15D,0xB9D0,0xE163,INVALC, INVALC,0xB9D5,0xE15F,0xE166,0xE157,0xB9D7,0xB9D1,0xE15C, 0xBC55,0xE15B,0xE164,0xB9D2,INVALC,0xB9D6,0xE15A,0xE160, 0xE165,0xE156,0xB9D4,0xE15E,INVALC,INVALC,0xE162,0xE168, 0xE158,0xE161,INVALC,0xB9D3,0xE167,INVALC,INVALC,INVALC, 0xE159,INVALC,INVALC,INVALC,0xBC59,0xE54B,0xBC57,0xBC56, 0xE54D,0xE552,INVALC,0xE54E,INVALC,0xE551,0xBC5C,INVALC, 0xBEA5,0xBC5B,INVALC,0xE54A,0xE550,INVALC,0xBC5A,0xE54F, INVALC,0xE54C,INVALC,0xBC58,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0xE94D,INVALC,0xE94F,0xE94A,0xBEC1,0xE94C, INVALC,0xBEC0,0xE94E,INVALC,INVALC,0xBEC3,0xE950,0xBEC2, 0xE949,0xE94B,INVALC,INVALC,INVALC,INVALC,0xC0A5,0xECCC, INVALC,0xC0A4,0xECCD,0xC0A3,0xECCB,0xC0A2,0xECCA,INVALC, 0xC253,0xC252,0xF1F6,0xF1F8,INVALC,0xF1F7,0xC361,0xC362, INVALC,INVALC,0xC363,0xF442,0xC45B,INVALC,INVALC,0xF7D3, 0xF7D2,0xC5F2,INVALC,0xA468,0xA4D0,INVALC,INVALC,0xA7A7, INVALC,INVALC,INVALC,INVALC,0xCE5F,INVALC,INVALC,INVALC, INVALC,0xB3FC,0xB3FD,INVALC,0xDCF2,0xB9D8,0xE169,0xE553, /* Block 90, Array index 0x1A00 */ INVALC,INVALC,INVALC,0xC95A,INVALC,INVALC,0xCAB0,INVALC, INVALC,INVALC,INVALC,INVALC,0xCC42,0xCE60,0xD159,0xAE4C, INVALC,INVALC,0xF1F9,INVALC,0xC4DC,0xA469,0xA57E,0xC970, INVALC,0xA667,0xA668,INVALC,0xA95D,INVALC,INVALC,INVALC, 0xB0F7,INVALC,0xB9DA,INVALC,0xB9DB,0xB9D9,INVALC,0xA46A, INVALC,0xA4D1,0xA4D3,0xA4D2,0xC95B,0xA4D4,0xA5A1,0xC971, INVALC,0xA5A2,INVALC,INVALC,INVALC,INVALC,INVALC,0xA669, 0xA66A,INVALC,INVALC,INVALC,0xC9CB,INVALC,0xA7A8,INVALC, 0xCAB1,INVALC,INVALC,INVALC,0xA961,0xCC43,INVALC,0xA95F, 0xA960,0xA95E,0xD15A,INVALC,INVALC,INVALC,0xABB6,0xABB5, 0xABB7,0xABB4,INVALC,0xCE61,0xA962,0xABB3,INVALC,0xAE4D, 0xAE4E,INVALC,0xAE4F,INVALC,0xD4CD,INVALC,INVALC,INVALC, 0xB3FE,0xD8B4,0xB0F8,INVALC,INVALC,INVALC,INVALC,0xB6F8, INVALC,0xB9DD,0xB9DC,0xE16A,INVALC,0xBC5D,0xBEC4,INVALC, 0xEFC0,0xF6DA,0xF7D4,0xA46B,0xA5A3,INVALC,0xA5A4,0xC9D1, 0xA66C,0xA66F,INVALC,0xC9CF,0xC9CD,0xA66E,0xC9D0,0xC9D2, 0xC9CC,0xA671,0xA670,0xA66D,0xA66B,0xC9CE,INVALC,INVALC, INVALC,INVALC,0xA7B3,INVALC,INVALC,0xA7B0,0xCAB6,0xCAB9, 0xCAB8,INVALC,0xA7AA,0xA7B2,INVALC,INVALC,0xA7AF,0xCAB5, 0xCAB3,0xA7AE,INVALC,INVALC,INVALC,0xA7A9,0xA7AC,INVALC, 0xCAB4,0xCABB,0xCAB7,0xA7AD,0xA7B1,0xA7B4,0xCAB2,0xCABA, 0xA7AB,INVALC,INVALC,INVALC,INVALC,INVALC,0xA967,0xA96F, INVALC,0xCC4F,0xCC48,0xA970,0xCC53,0xCC44,0xCC4B,INVALC, INVALC,0xA966,0xCC45,0xA964,0xCC4C,0xCC50,0xA963,INVALC, 0xCC51,0xCC4A,INVALC,0xCC4D,INVALC,0xA972,0xA969,0xCC54, 0xCC52,INVALC,0xA96E,0xA96C,0xCC49,0xA96B,0xCC47,0xCC46, 0xA96A,0xA968,0xA971,0xA96D,0xA965,INVALC,0xCC4E,INVALC, 0xABB9,INVALC,0xABC0,0xCE6F,0xABB8,0xCE67,0xCE63,INVALC, 0xCE73,0xCE62,INVALC,0xABBB,0xCE6C,0xABBE,0xABC1,INVALC, 0xABBC,0xCE70,0xABBF,INVALC,0xAE56,0xCE76,0xCE64,INVALC, INVALC,0xCE66,0xCE6D,0xCE71,0xCE75,0xCE72,0xCE6B,0xCE6E, INVALC,INVALC,0xCE68,0xABC3,0xCE6A,0xCE69,0xCE74,0xABBA, /* Block 91, Array index 0x1B00 */ 0xCE65,0xABC2,INVALC,0xABBD,INVALC,INVALC,INVALC,INVALC, INVALC,0xAE5C,0xD162,INVALC,0xAE5B,INVALC,INVALC,0xD160, INVALC,0xAE50,INVALC,0xAE55,INVALC,0xD15F,0xD15C,0xD161, 0xAE51,0xD15B,INVALC,0xAE54,0xAE52,INVALC,0xD163,0xAE53, 0xAE57,INVALC,INVALC,0xAE58,INVALC,0xAE5A,INVALC,INVALC, INVALC,0xAE59,INVALC,INVALC,INVALC,0xD15D,0xD15E,INVALC, INVALC,INVALC,INVALC,0xD164,INVALC,0xD4D4,0xB0F9,0xD8C2, 0xD4D3,0xD4E6,INVALC,INVALC,0xB140,INVALC,0xD4E4,INVALC, 0xB0FE,0xB0FA,0xD4ED,0xD4DD,0xD4E0,INVALC,0xB143,0xD4EA, 0xD4E2,0xB0FB,0xB144,INVALC,0xD4E7,0xD4E5,INVALC,INVALC, 0xD4D6,0xD4EB,0xD4DF,0xD4DA,INVALC,0xD4D0,0xD4EC,0xD4DC, 0xD4CF,INVALC,0xB142,0xD4E1,0xD4EE,0xD4DE,0xD4D2,0xD4D7, 0xD4CE,INVALC,0xB141,INVALC,0xD4DB,0xD4D8,0xB0FC,0xD4D1, INVALC,0xD4E9,0xB0FD,INVALC,0xD4D9,0xD4D5,INVALC,INVALC, 0xD4E8,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xB440, 0xD8BB,INVALC,0xD8B8,0xD8C9,0xD8BD,0xD8CA,INVALC,0xB442, INVALC,INVALC,INVALC,0xD8C6,0xD8C3,INVALC,INVALC,INVALC, INVALC,INVALC,0xD8C4,0xD8C7,0xD8CB,INVALC,0xD4E3,0xD8CD, 0xDD47,INVALC,0xB443,0xD8CE,0xD8B6,0xD8C0,INVALC,0xD8C5, INVALC,INVALC,0xB441,0xB444,0xD8CC,0xD8CF,0xD8BA,0xD8B7, INVALC,INVALC,0xD8B9,INVALC,INVALC,0xD8BE,0xD8BC,0xB445, INVALC,0xD8C8,INVALC,INVALC,0xD8BF,INVALC,0xD8C1,0xD8B5, 0xDCFA,0xDCF8,0xB742,0xB740,0xDD43,0xDCF9,0xDD44,0xDD40, 0xDCF7,0xDD46,0xDCF6,0xDCFD,0xB6FE,0xB6FD,0xB6FC,0xDCFB, 0xDD41,0xB6F9,0xB741,INVALC,0xDCF4,INVALC,0xDCFE,0xDCF3, 0xDCFC,0xB6FA,0xDD42,0xDCF5,0xB6FB,0xDD45,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xE16E,0xB9E2,0xB9E1, 0xB9E3,0xE17A,0xE170,0xE176,0xE16B,0xE179,0xE178,0xE17C, 0xE175,0xB9DE,0xE174,0xB9E4,INVALC,0xE16D,0xB9DF,INVALC, 0xE17B,0xB9E0,0xE16F,0xE172,0xE177,0xE171,0xE16C,INVALC, INVALC,INVALC,INVALC,0xE173,0xE555,0xBC61,0xE558,0xE557, 0xE55A,0xE55C,INVALC,0xBC5F,INVALC,0xE556,INVALC,0xE554, /* Block 92, Array index 0x1C00 */ INVALC,0xE55D,0xE55B,0xE559,INVALC,0xE55F,INVALC,0xE55E, 0xBC63,0xBC5E,INVALC,0xBC60,0xBC62,INVALC,INVALC,0xE560, 0xE957,INVALC,INVALC,0xE956,0xE955,INVALC,0xE958,0xE951, INVALC,0xE952,0xE95A,0xE953,INVALC,0xBEC5,0xE95C,INVALC, 0xE95B,0xE954,INVALC,0xECD1,0xC0A8,0xECCF,0xECD4,0xECD3, 0xE959,INVALC,0xC0A7,INVALC,0xECD2,0xECCE,0xECD6,0xECD5, 0xC0A6,INVALC,0xECD0,INVALC,0xBEC6,INVALC,INVALC,INVALC, 0xC254,INVALC,INVALC,INVALC,0xEFC1,0xF1FA,0xF1FB,0xF1FC, 0xC45C,INVALC,INVALC,0xC45D,INVALC,0xF443,INVALC,0xF5C8, 0xF5C7,INVALC,INVALC,0xF6DB,0xF6DC,0xF7D5,0xF8A7,INVALC, 0xA46C,0xA46D,INVALC,0xA46E,0xA4D5,0xA5A5,0xC9D3,0xA672, 0xA673,INVALC,0xA7B7,0xA7B8,0xA7B6,0xA7B5,INVALC,0xA973, INVALC,INVALC,0xCC55,0xA975,0xA974,0xCC56,INVALC,INVALC, INVALC,0xABC4,INVALC,0xAE5D,0xD165,INVALC,0xD4F0,INVALC, 0xB145,0xB447,0xD4EF,0xB446,INVALC,0xB9E5,INVALC,0xE17D, 0xBEC7,INVALC,0xC0A9,0xECD7,INVALC,0xC45E,INVALC,0xC570, INVALC,0xC972,INVALC,0xA5A6,0xC973,0xA676,INVALC,0xA674, 0xA675,0xA677,INVALC,0xA7BA,0xA7B9,INVALC,0xCABC,0xA7BB, INVALC,INVALC,0xCABD,0xCC57,INVALC,0xCC58,INVALC,0xA976, 0xA978,0xA97A,0xA977,0xA97B,0xA979,INVALC,INVALC,INVALC, INVALC,INVALC,0xABC8,0xABC5,0xABC7,0xABC9,0xABC6,0xD166, 0xCE77,INVALC,INVALC,INVALC,0xD168,0xD167,0xAE63,INVALC, 0xAE5F,INVALC,INVALC,0xAE60,0xAE62,0xAE64,0xAE61,INVALC, 0xAE66,0xAE65,INVALC,INVALC,INVALC,INVALC,INVALC,0xB14A, 0xD4F2,0xD4F1,0xB149,INVALC,0xB148,0xB147,0xB14B,0xB146, INVALC,INVALC,0xD8D5,0xD8D2,0xB449,0xD8D1,0xD8D6,INVALC, 0xB44B,0xD8D4,0xB448,0xB44A,0xD8D3,INVALC,0xDD48,INVALC, 0xDD49,0xDD4A,INVALC,INVALC,INVALC,INVALC,0xB9E6,0xB9EE, 0xE17E,0xB9E8,0xB9EC,0xE1A1,0xB9ED,0xB9E9,0xB9EA,0xB9E7, 0xB9EB,0xBC66,0xD8D0,0xBC67,0xBC65,INVALC,0xBC64,0xE95D, 0xBEC8,0xECD8,0xECD9,INVALC,INVALC,0xC364,0xC45F,INVALC, 0xA46F,INVALC,0xA678,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 93, Array index 0x1D00 */ INVALC,0xABCA,INVALC,0xD169,0xAE67,INVALC,INVALC,0xB14E, 0xB14D,0xB14C,0xB44C,0xB44D,0xD8D7,0xB9EF,0xBEC9,0xA470, 0xC95C,0xA4D6,0xC974,INVALC,INVALC,0xC9D4,0xA679,INVALC, INVALC,INVALC,0xA97C,INVALC,INVALC,INVALC,INVALC,0xDD4B, INVALC,INVALC,0xA471,INVALC,0xA4D7,0xC9D5,INVALC,INVALC, 0xCABE,INVALC,0xCABF,INVALC,0xA7BC,INVALC,INVALC,INVALC, 0xD8D8,0xB44E,INVALC,0xDD4C,INVALC,INVALC,INVALC,0xC0AA, 0xA472,0xA4A8,0xA4D8,0xC975,0xA5A7,INVALC,0xA7C0,0xA7BF, 0xA7BD,0xA7BE,INVALC,INVALC,0xCC59,0xA97E,0xA9A1,0xCC5A, 0xA97D,INVALC,INVALC,0xABCE,0xCE78,0xABCD,0xABCB,0xABCC, 0xAE6A,0xAE68,INVALC,INVALC,0xD16B,0xAE69,0xD16A,INVALC, 0xAE5E,0xD4F3,INVALC,INVALC,0xB150,0xB151,INVALC,INVALC, 0xB14F,INVALC,0xB9F0,0xE1A2,0xBC68,0xBC69,INVALC,0xE561, 0xC0AB,0xEFC2,0xEFC3,INVALC,0xC4DD,0xF8A8,0xC94B,0xA4D9, INVALC,0xA473,INVALC,0xC977,0xC976,INVALC,INVALC,INVALC, INVALC,0xA67A,0xC9D7,0xC9D8,0xC9D6,INVALC,0xC9D9,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xCAC7,INVALC, 0xCAC2,0xCAC4,0xCAC6,0xCAC3,0xA7C4,0xCAC0,INVALC,0xCAC1, 0xA7C1,0xA7C2,0xCAC5,0xCAC8,0xA7C3,0xCAC9,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xCC68,INVALC,0xCC62, 0xCC5D,0xA9A3,0xCC65,0xCC63,0xCC5C,0xCC69,0xCC6C,0xCC67, 0xCC60,0xA9A5,0xCC66,0xA9A6,0xCC61,0xCC64,0xCC5B,0xCC5F, 0xCC6B,0xA9A7,INVALC,0xA9A8,INVALC,0xCC5E,0xCC6A,0xA9A2, 0xA9A4,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xCEAB,0xCEA4, 0xCEAA,0xCEA3,0xCEA5,0xCE7D,0xCE7B,INVALC,0xCEAC,0xCEA9, 0xCE79,INVALC,0xABD0,0xCEA7,0xCEA8,INVALC,0xCEA6,0xCE7C, 0xCE7A,0xABCF,0xCEA2,0xCE7E,INVALC,INVALC,0xCEA1,0xCEAD, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xAE6F,INVALC,0xAE6E,INVALC,0xD16C,0xAE6B,0xD16E,INVALC, 0xAE70,0xD16F,INVALC,INVALC,0xAE73,INVALC,0xAE71,0xD170, 0xCEAE,0xD172,INVALC,0xAE6D,INVALC,0xAE6C,INVALC,0xD16D, /* Block 94, Array index 0x1E00 */ 0xD171,0xAE72,INVALC,INVALC,INVALC,INVALC,0xB153,0xB152, INVALC,INVALC,INVALC,0xD4F5,0xD4F9,0xD4FB,0xB154,0xD4FE, INVALC,0xB158,0xD541,INVALC,0xB15A,INVALC,0xB156,0xB15E, INVALC,0xB15B,0xD4F7,0xB155,INVALC,0xD4F6,0xD4F4,0xD543, 0xD4F8,INVALC,0xB157,0xD542,0xB15C,0xD4FD,0xD4FC,0xB15D, 0xD4FA,0xB159,INVALC,INVALC,INVALC,INVALC,0xD544,INVALC, 0xD540,0xD8E7,0xD8EE,0xD8E3,0xB451,0xD8DF,0xD8EF,0xD8D9, 0xD8EC,0xD8EA,0xD8E4,INVALC,0xD8ED,0xD8E6,INVALC,0xD8DE, 0xD8F0,0xD8DC,0xD8E9,0xD8DA,INVALC,0xD8F1,INVALC,0xB452, INVALC,0xD8EB,0xDD4F,0xD8DD,0xB44F,INVALC,0xD8E1,INVALC, 0xB450,0xD8E0,0xD8E5,INVALC,INVALC,0xD8E2,INVALC,INVALC, INVALC,0xD8E8,INVALC,INVALC,INVALC,INVALC,0xDD53,INVALC, INVALC,INVALC,0xDD56,0xDD4E,INVALC,0xDD50,INVALC,0xDD55, 0xDD54,0xB743,INVALC,0xD8DB,0xDD52,INVALC,INVALC,0xB744, INVALC,0xDD4D,0xDD51,INVALC,INVALC,INVALC,INVALC,0xE1A9, INVALC,0xE1B0,0xE1A7,INVALC,0xE1AE,0xE1A5,0xE1AD,0xE1B1, 0xE1A4,0xE1A8,0xE1A3,INVALC,0xB9F1,INVALC,0xE1A6,0xB9F2, 0xE1AC,0xE1AB,0xE1AA,INVALC,INVALC,0xE1AF,INVALC,INVALC, INVALC,INVALC,0xE565,0xE567,0xBC6B,0xE568,INVALC,0xE563, INVALC,0xE562,0xE56C,INVALC,0xE56A,0xBC6A,0xE56D,0xE564, 0xE569,0xE56B,0xE566,INVALC,INVALC,INVALC,INVALC,0xE961, 0xE966,0xE960,0xE965,INVALC,0xE95E,0xE968,0xE964,0xE969, 0xE963,0xE95F,0xE967,INVALC,0xE96A,0xE962,INVALC,0xECDA, 0xC0AF,INVALC,0xC0AD,INVALC,0xC0AC,0xC0AE,INVALC,INVALC, 0xEFC4,INVALC,0xF172,0xF1FD,INVALC,INVALC,0xF444,0xF445, INVALC,0xC460,INVALC,0xF5C9,INVALC,0xC4DE,INVALC,0xF5CA, INVALC,0xF6DE,0xC572,INVALC,0xC571,0xF6DD,0xC5C9,INVALC, 0xF7D6,INVALC,INVALC,INVALC,INVALC,0xA474,0xA67B,0xC9DA, 0xCACA,0xA8B5,0xB15F,INVALC,INVALC,0xA475,0xA5AA,0xA5A9, 0xA5A8,INVALC,INVALC,0xA7C5,INVALC,INVALC,0xAE74,INVALC, 0xDD57,0xA476,0xA477,0xA478,0xA4DA,INVALC,INVALC,0xABD1, INVALC,0xCEAF,INVALC,INVALC,INVALC,0xB453,0xA479,0xC95D, /* Block 95, Array index 0x1F00 */ INVALC,INVALC,0xA5AB,0xA5AC,0xC978,INVALC,0xA67C,INVALC, INVALC,INVALC,0xCACB,INVALC,0xA7C6,INVALC,0xCACC,INVALC, INVALC,0xA9AE,INVALC,INVALC,0xCC6E,0xA9AC,0xA9AB,0xCC6D, 0xA9A9,0xCC6F,0xA9AA,0xA9AD,INVALC,0xABD2,INVALC,0xABD4, 0xCEB3,0xCEB0,0xCEB1,0xCEB2,0xCEB4,0xABD3,INVALC,INVALC, 0xD174,0xD173,INVALC,0xAE76,INVALC,0xAE75,INVALC,INVALC, INVALC,INVALC,INVALC,0xB162,0xD546,INVALC,0xB161,0xB163, 0xB160,INVALC,INVALC,INVALC,INVALC,0xB455,0xD545,INVALC, 0xB456,0xD8F3,INVALC,0xB457,0xD8F2,0xB454,INVALC,INVALC, INVALC,INVALC,0xDD5A,0xDD5C,0xB745,0xDD5B,0xDD59,0xDD58, INVALC,INVALC,INVALC,0xE1B4,0xB9F7,0xB9F5,INVALC,0xB9F6, 0xE1B2,0xE1B3,INVALC,0xB9F3,0xE571,0xE56F,INVALC,0xBC6D, 0xE570,0xBC6E,0xBC6C,0xB9F4,INVALC,INVALC,0xE96D,0xE96B, 0xE96C,0xE56E,0xECDC,0xC0B0,0xECDB,0xEFC5,0xEFC6,0xE96E, 0xF1FE,INVALC,0xA47A,0xA5AD,0xA67E,0xC9DB,0xA67D,INVALC, 0xA9AF,0xB746,INVALC,0xA4DB,0xA5AE,0xABD5,0xB458,INVALC, 0xC979,INVALC,0xC97A,INVALC,0xC9DC,INVALC,INVALC,0xA7C8, 0xCAD0,0xCACE,0xA7C9,0xCACD,0xCACF,0xCAD1,INVALC,0xA7C7, INVALC,INVALC,INVALC,INVALC,INVALC,0xA9B3,0xA9B4,0xA9B1, INVALC,INVALC,0xA9B0,0xCEB8,0xA9B2,INVALC,INVALC,INVALC, 0xABD6,INVALC,0xCEB7,0xCEB9,0xCEB6,0xCEBA,0xABD7,0xAE79, 0xD175,INVALC,0xD177,0xAE77,0xD178,0xAE78,0xD176,INVALC, 0xCEB5,0xD547,0xD54A,0xD54B,0xD548,0xB167,0xB166,0xB164, 0xB165,0xD549,INVALC,INVALC,INVALC,INVALC,0xB168,INVALC, INVALC,0xB45A,0xB45B,INVALC,0xB45C,0xDD5D,0xDD5F,0xDD61, 0xB748,0xB747,0xB459,0xDD60,0xDD5E,INVALC,0xE1B8,INVALC, INVALC,0xE1B6,0xE1BC,0xB9F8,0xE1BD,0xE1BA,0xB9F9,0xE1B7, 0xE1B5,0xE1BB,0xBC70,0xE573,0xE1B9,0xBC72,0xE574,0xBC71, 0xBC74,0xE575,0xBC6F,0xBC73,INVALC,0xE973,0xE971,0xE970, 0xE972,0xE96F,INVALC,INVALC,0xC366,INVALC,0xF446,0xF447, INVALC,0xF5CB,0xF6DF,0xC655,INVALC,INVALC,0xA9B5,0xA7CA, INVALC,INVALC,0xABD8,INVALC,INVALC,INVALC,0xA47B,0xA4DC, /* Block 96, Array index 0x2000 */ INVALC,0xA5AF,0xC9DD,INVALC,0xA7CB,0xCAD2,INVALC,0xCEBB, 0xABD9,INVALC,0xB9FA,0xA47C,INVALC,INVALC,INVALC,0xA6A1, INVALC,INVALC,0xB749,0xA47D,0xA4DD,0xA4DE,INVALC,0xA5B1, 0xA5B0,INVALC,0xC9DE,0xA6A2,INVALC,0xCAD3,INVALC,0xA7CC, INVALC,INVALC,0xCC71,0xCC72,0xCC73,INVALC,0xA9B6,0xA9B7, 0xCC70,0xA9B8,INVALC,INVALC,INVALC,0xABDA,0xCEBC,INVALC, 0xD17A,0xAE7A,INVALC,0xD179,INVALC,0xB169,0xD54C,0xB16A, 0xD54D,INVALC,INVALC,INVALC,0xB45D,INVALC,INVALC,INVALC, 0xDD62,INVALC,INVALC,0xE1BF,0xE1BE,INVALC,0xB9FB,INVALC, 0xBC75,0xE576,0xBECA,0xE974,0xC0B1,INVALC,0xC573,0xF7D8, INVALC,INVALC,INVALC,INVALC,0xCC74,INVALC,0xCEBD,0xB16B, 0xD8F4,0xB74A,INVALC,INVALC,INVALC,0xC255,INVALC,INVALC, INVALC,INVALC,0xA7CE,INVALC,0xA7CD,0xABDB,INVALC,0xD17B, INVALC,0xB16D,0xB343,0xB16E,0xB16C,0xB45E,INVALC,0xE1C0, 0xB9FC,0xBC76,INVALC,0xC94C,0xC9DF,INVALC,0xCAD5,0xA7CF, 0xCAD4,0xA7D0,INVALC,INVALC,0xA9BC,0xCC77,0xCC76,0xA9BB, 0xA9B9,0xA9BA,0xCC75,INVALC,INVALC,0xABDD,0xCEBE,0xABE0, 0xABDC,0xABE2,0xABDE,0xABDF,0xABE1,INVALC,INVALC,INVALC, 0xAE7D,0xAE7C,0xAE7B,INVALC,INVALC,INVALC,0xD54F,0xB16F, 0xB172,0xB170,INVALC,0xD54E,0xB175,INVALC,0xB171,0xD550, 0xB174,0xB173,INVALC,INVALC,INVALC,0xD8F6,0xD8F5,INVALC, 0xB461,0xB45F,0xB460,0xD8F7,0xB74B,0xDD64,0xB74C,0xDD63, INVALC,INVALC,0xE577,INVALC,INVALC,0xBC78,0xE1C1,0xBC77, INVALC,0xB9FD,INVALC,0xECDE,0xE975,0xC0B2,0xECDD,0xF240, 0xF448,0xF449,INVALC,0xA4DF,INVALC,0xA5B2,INVALC,INVALC, INVALC,0xC97B,INVALC,INVALC,0xA7D2,0xA7D4,INVALC,0xC9E2, 0xCAD8,0xCAD7,0xCAD6,INVALC,0xC9E1,0xC9E0,0xA6A4,0xA7D3, 0xA7D1,0xA6A3,INVALC,INVALC,INVALC,0xA9BD,0xCC78,INVALC, 0xA9BE,0xCADD,INVALC,0xCADF,0xCADE,0xCC79,INVALC,INVALC, 0xCADA,INVALC,0xA7D8,0xA7D6,INVALC,0xCAD9,0xCADB,0xCAE1, INVALC,0xA7D5,INVALC,0xCADC,0xCAE5,0xA9C0,INVALC,0xCAE2, 0xA7D7,INVALC,0xCAE0,0xCAE3,INVALC,0xA9BF,INVALC,0xA9C1, /* Block 97, Array index 0x2100 */ 0xCAE4,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xCCAF,0xCCA2,0xCC7E,0xCCAE,0xCCA9,0xABE7,0xA9C2, 0xCCAA,0xCCAD,0xABE3,0xCCAC,0xA9C3,0xA9C8,0xA9C6,0xCCA3, INVALC,0xCC7C,0xCCA5,0xA9CD,0xCCB0,0xABE4,0xCCA6,INVALC, 0xABE5,0xA9C9,0xCCA8,INVALC,0xCECD,0xABE6,0xCC7B,0xA9CA, 0xABE8,0xA9CB,0xA9C7,0xA9CC,0xCCA7,0xCC7A,0xCCAB,0xA9C4, INVALC,INVALC,0xCC7D,0xCCA4,0xCCA1,0xA9C5,INVALC,0xCEBF, INVALC,0xCEC0,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xCECA,0xD1A1,0xCECB,0xABEE,0xCECE,0xCEC4,0xABED,0xCEC6, INVALC,0xCEC7,INVALC,INVALC,0xCEC9,0xABE9,INVALC,INVALC, 0xAEA3,INVALC,INVALC,0xCEC5,0xCEC1,0xAEA4,INVALC,INVALC, 0xCECF,0xAE7E,0xD17D,0xCEC8,INVALC,0xD17C,0xCEC3,0xCECC, INVALC,INVALC,0xABEC,0xAEA1,0xABF2,0xAEA2,0xCED0,0xD17E, 0xABEB,0xAEA6,0xABF1,0xABF0,0xABEF,0xAEA5,0xCED1,0xAEA7, 0xABEA,INVALC,0xCEC2,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xB176, 0xD1A4,0xD1A6,INVALC,0xD1A8,0xAEA8,0xAEAE,0xD553,0xD1AC, 0xD1A3,0xB178,0xD551,INVALC,0xAEAD,0xAEAB,0xD1AE,INVALC, 0xD552,INVALC,0xD1A5,INVALC,0xAEAC,0xD1A9,0xAEAF,0xD1AB, INVALC,INVALC,0xAEAA,0xD1AA,0xD1AD,0xD1A7,INVALC,0xAEA9, 0xB179,INVALC,0xD1A2,0xB177,INVALC,INVALC,INVALC,INVALC, 0xB17A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xD555,0xD55E,0xB464,INVALC,0xB17C,0xB1A3,0xB465,0xD560, 0xB1AA,0xD8F9,0xD556,0xB1A2,0xB1A5,0xB17E,0xD554,0xD562, 0xD565,0xD949,INVALC,0xD563,0xD8FD,0xB1A1,0xB1A8,0xB1AC, 0xD55D,0xD8F8,0xD561,0xB17B,0xD8FA,0xD564,0xD8FC,0xD559, INVALC,0xB462,INVALC,0xD557,0xD558,0xB1A7,INVALC,INVALC, 0xB1A6,0xD55B,0xB1AB,0xD55F,0xB1A4,0xD55C,INVALC,0xB1A9, 0xB466,0xB463,0xD8FB,INVALC,0xD55A,INVALC,0xB17D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xB46B,0xB46F,0xD940,0xB751,0xB46D,0xD944,0xB471,0xDD65, 0xD946,0xB753,0xB469,0xB46C,0xD947,INVALC,0xD948,0xD94E, /* Block 98, Array index 0x2200 */ 0xB473,0xB754,INVALC,0xD94A,0xD94F,0xD943,0xB75E,INVALC, 0xB755,0xB472,0xD941,0xD950,INVALC,0xB75D,0xB470,0xB74E, 0xD94D,INVALC,0xB474,0xD945,0xD8FE,0xB46A,0xD942,INVALC, 0xD94B,INVALC,0xB74D,0xB752,0xB467,0xD94C,INVALC,0xB750, INVALC,INVALC,INVALC,0xB468,INVALC,INVALC,INVALC,0xB75C, 0xE1C3,0xDD70,INVALC,0xDD68,0xE1C2,INVALC,0xDD6C,0xDD6E, INVALC,INVALC,0xDD6B,INVALC,0xB75B,INVALC,0xDD6A,0xB75F, INVALC,INVALC,INVALC,0xE1D2,INVALC,INVALC,0xB75A,0xBA40, 0xDD71,0xE1C4,INVALC,INVALC,0xB758,0xDD69,0xDD6D,0xB9FE, 0xB74F,0xDD66,0xDD67,0xBA41,0xB757,0xB759,0xB756,0xDD6F, INVALC,INVALC,0xE1C8,0xE1C9,0xE1CE,0xBC7D,0xE1D5,INVALC, 0xBA47,INVALC,0xBA46,0xE1D0,INVALC,0xBC7C,0xE1C5,0xBA45, INVALC,0xE1D4,0xBA43,0xBA44,INVALC,0xE1D1,0xE5AA,0xBC7A, 0xB46E,INVALC,0xE1D3,0xBCA3,0xE1CB,INVALC,0xBC7B,INVALC, 0xBCA2,0xE1C6,0xE1CA,0xE1C7,0xE1CD,0xBA48,0xBC79,0xBA42, INVALC,0xE57A,0xE1CF,INVALC,0xBCA1,INVALC,0xBCA4,INVALC, 0xE1CC,INVALC,0xBC7E,0xE579,INVALC,INVALC,INVALC,INVALC, INVALC,0xE57E,0xBECE,0xE578,0xE9A3,0xE5A9,0xBCA8,INVALC, 0xBCA6,0xBECC,0xE5A6,0xE5A2,0xBCAC,INVALC,0xE978,INVALC, INVALC,INVALC,0xBCAA,0xE5A1,INVALC,0xE976,INVALC,0xE5A5, INVALC,0xE5A8,0xE57D,INVALC,0xBCAB,INVALC,INVALC,0xBCA5, 0xE977,0xBECD,0xE5A7,0xBCA7,0xBCA9,0xE5A4,0xBCAD,0xE5A3, 0xE57C,0xE57B,0xBECB,0xE5AB,0xE97A,0xECE0,0xBED0,INVALC, 0xE9A2,INVALC,0xE97E,INVALC,0xECE1,INVALC,0xBED1,0xE9A1, INVALC,0xE97C,0xC0B4,0xECDF,INVALC,0xE979,0xE97B,0xC0B5, 0xBED3,0xC0B3,0xBED2,0xC0B7,0xE97D,0xBECF,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xEFCF,INVALC, 0xEFC7,INVALC,INVALC,INVALC,INVALC,INVALC,0xECE7,0xEFC8, 0xECE3,INVALC,INVALC,0xC256,0xECE5,0xECE4,0xC0B6,0xECE2, 0xECE6,0xEFD0,0xEFCC,0xEFCE,INVALC,0xEFC9,0xEFCA,INVALC, 0xEFCD,0xEFCB,0xC367,INVALC,INVALC,0xC36A,0xC369,0xC368, 0xC461,0xF44A,0xC462,0xF241,0xC4DF,0xF5CC,0xC4E0,0xC574, /* Block 99, Array index 0x2300 */ 0xC5CA,0xF7D9,INVALC,0xF7DA,0xF7DB,INVALC,INVALC,0xF9BA, 0xA4E0,0xC97C,0xA5B3,INVALC,0xA6A6,0xA6A7,0xA6A5,INVALC, 0xA6A8,0xA7DA,0xA7D9,INVALC,0xCCB1,0xA9CF,0xA9CE,INVALC, INVALC,0xD1AF,0xB1AD,0xB1AE,INVALC,INVALC,INVALC,0xB475, 0xDD72,0xB760,0xB761,0xDD74,0xDD76,0xDD75,INVALC,0xE1D7, INVALC,0xE1D6,0xBA49,0xE1D8,INVALC,0xE5AC,0xBCAE,INVALC, 0xBED4,INVALC,0xC0B8,0xC257,0xC0B9,INVALC,0xA4E1,INVALC, INVALC,INVALC,0xCAE6,INVALC,INVALC,0xCCB2,0xA9D1,0xA9D0, 0xA9D2,0xABF3,0xCED2,0xCED3,INVALC,INVALC,0xD1B0,0xAEB0, 0xB1AF,0xB476,0xD951,0xA4E2,INVALC,0xA47E,0xA4E3,INVALC, 0xC97D,0xA5B7,0xA5B6,0xA5B4,0xA5B5,INVALC,INVALC,INVALC, 0xA6AB,0xC9E9,0xC9EB,0xA6AA,0xC9E3,INVALC,0xC9E4,INVALC, 0xC9EA,0xC9E6,0xC9E8,0xA6A9,0xC9E5,0xC9EC,0xC9E7,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xA7E1,0xA7EA,0xA7E8, 0xCAF0,0xCAED,0xCAF5,0xA7E6,0xCAF6,INVALC,0xA7DF,0xCAF3, INVALC,0xA7E5,0xCAEF,0xCAEE,0xA7E3,0xCAF4,0xA7E4,0xA9D3, 0xA7DE,0xCAF1,INVALC,0xCAE7,0xA7DB,INVALC,0xA7EE,0xCAEC, 0xCAF2,0xA7E0,0xA7E2,INVALC,0xCAE8,INVALC,0xCAE9,0xCAEA, INVALC,0xA7ED,0xA7E7,0xA7EC,0xCAEB,0xA7EB,0xA7DD,0xA7DC, 0xA7E9,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xA9E1,0xCCBE,0xCCB7,0xA9DC,0xA9EF,0xCCB3,0xCCBA,0xCCBC, 0xCCBF,0xA9EA,INVALC,0xCCBB,0xCCB4,0xA9E8,0xCCB8,INVALC, 0xCCC0,0xA9D9,INVALC,0xCCBD,0xA9E3,0xA9E2,0xCCB6,0xA9D7, INVALC,INVALC,0xA9D8,INVALC,0xA9D6,INVALC,0xA9EE,0xA9E6, 0xA9E0,0xA9D4,0xCCB9,0xA9DF,0xA9D5,0xA9E7,0xA9F0,0xCED4, 0xA9E4,0xCCB5,0xA9DA,0xA9DD,0xA9DE,INVALC,0xA9EC,0xA9ED, 0xA9EB,0xA9E5,0xA9E9,0xA9DB,0xABF4,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0xCEDA,0xAC41,0xABF8,0xABFA,0xAC40, 0xCEE6,0xABFD,0xD1B1,0xAEB1,0xAC43,0xCED7,0xCEDF,0xABFE, 0xCEDE,0xCEDB,0xCEE3,0xCEE5,0xABF7,0xABFB,0xAC42,0xAEB3, /* Block 100, Array index 0x2400 */ 0xCEE0,0xABF9,0xAC45,0xCED9,INVALC,INVALC,INVALC,0xABFC, 0xAEB2,0xABF6,INVALC,0xCED6,0xCEDD,0xCED5,0xCED8,0xCEDC, 0xD1B2,0xAC44,INVALC,0xCEE1,0xCEE2,0xCEE4,0xABF5,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xAEC1,0xD1BE,0xAEBF,0xAEC0,0xD1B4,0xD1C4,INVALC,0xAEB6, INVALC,INVALC,0xD566,0xD1C6,0xD1C0,INVALC,0xD1B7,INVALC, 0xD1C9,0xD1BA,0xAEBC,0xD57D,0xD1BD,0xAEBE,0xAEB5,INVALC, 0xD1CB,0xD1BF,0xAEB8,0xD1B8,0xD1B5,0xD1B6,0xAEB9,0xD1C5, 0xD1CC,0xAEBB,0xD1BC,0xD1BB,0xAEC3,0xAEC2,0xAEB4,0xAEBA, 0xAEBD,0xD1C8,INVALC,INVALC,0xD1C2,0xAEB7,0xD1B3,0xD1CA, 0xD1C1,0xD1C3,0xD1C7,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xD567,INVALC,0xB1B7, 0xB1CB,0xB1CA,INVALC,0xB1BF,INVALC,0xD579,0xD575,0xD572, 0xD5A6,0xB1BA,0xB1B2,INVALC,INVALC,0xD577,0xB4A8,0xB1B6, 0xD5A1,INVALC,0xB1CC,0xB1C9,0xD57B,0xD56A,INVALC,INVALC, 0xB1C8,0xD5A3,0xD569,0xB1BD,0xB1C1,0xD5A2,INVALC,0xD573, 0xB1C2,0xB1BC,0xD568,INVALC,0xB478,0xD5A5,0xD571,0xB1C7, 0xD574,0xD5A4,0xB1C6,INVALC,0xD952,INVALC,0xB1B3,0xD56F, 0xB1B8,0xB1C3,INVALC,0xB1BE,0xD578,0xD56E,0xD56C,0xD57E, 0xB1B0,0xB1C4,0xB1B4,0xB477,0xD57C,0xB1B5,INVALC,0xB1B1, 0xB1C0,0xB1BB,0xB1B9,0xD570,0xB1C5,0xD56D,0xD57A,0xD576, 0xD954,0xD953,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xD56B,0xD964,INVALC, 0xB47A,INVALC,0xD96A,0xD959,0xD967,0xDD77,0xB47D,0xD96B, 0xD96E,0xB47C,0xD95C,0xD96D,0xD96C,0xB47E,0xD955,0xB479, 0xB4A3,INVALC,0xB4A1,0xD969,INVALC,0xD95F,0xB4A5,0xD970, 0xD968,0xD971,0xB4AD,0xB4AB,0xD966,0xD965,INVALC,0xD963, 0xD95D,0xB4A4,INVALC,0xB4A2,0xD1B9,0xD956,INVALC,0xDDB7, 0xD957,0xB47B,0xB4AA,0xDD79,INVALC,0xB4A6,0xB4A7,0xD958, 0xD96F,0xDD78,0xD960,0xD95B,0xB4A9,0xD961,0xD95E,INVALC, INVALC,0xB4AE,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 101, Array index 0x2500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xB770,INVALC, INVALC,0xDD7C,0xDDB1,0xDDB6,0xDDAA,0xB76C,0xDDBB,0xB769, 0xDD7A,INVALC,0xDD7B,0xB762,0xB76B,0xDDA4,0xB76E,0xB76F, 0xDDA5,INVALC,0xDDB2,0xDDB8,0xB76A,INVALC,0xB764,0xDDA3, 0xDD7D,0xDDBA,0xDDA8,0xDDA9,0xDD7E,0xDDB4,0xDDAB,0xDDB5, 0xDDAD,INVALC,0xB765,0xE1D9,0xB768,0xB766,0xDDB9,0xDDB0, 0xDDAC,INVALC,INVALC,0xDDA1,0xBA53,0xDDAF,0xB76D,0xDDA7, INVALC,0xDDA6,INVALC,INVALC,INVALC,0xB767,0xB763,0xE1EE, 0xDDB3,0xDDAE,INVALC,0xDDA2,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0xE1E9,INVALC,0xE1DA,0xE1E5,INVALC, 0xE1EC,0xBA51,0xB4AC,0xE1EA,0xBA4C,INVALC,INVALC,INVALC, 0xBA4B,0xE1F1,INVALC,0xE1DB,0xE1E8,0xE1DC,0xE1E7,0xBA4F, 0xE1EB,0xD962,INVALC,INVALC,INVALC,0xE1F2,0xE1E3,0xBA52, 0xE5BA,0xBCAF,INVALC,0xE1F0,0xE1EF,0xBA54,0xE5AD,0xBCB0, 0xE5AE,INVALC,0xE1DF,0xE1E0,0xE1DD,0xE1E2,0xE1DE,0xE1F3, 0xBA4E,0xBCB1,0xBA50,0xBA55,INVALC,0xE1E1,INVALC,0xE1ED, INVALC,INVALC,0xE1E6,INVALC,INVALC,0xE5B1,INVALC,0xBA4A, 0xBCB4,0xE9AA,0xE5B6,0xE5B5,0xE5B7,INVALC,INVALC,0xE5B4, 0xBCB5,INVALC,0xBCBB,0xBCB8,INVALC,0xBCB9,0xE5AF,0xE5B2, 0xE5BC,0xBCC1,0xBCBF,INVALC,0xE5B3,0xD95A,0xBCB2,0xE5B9, 0xE5B0,INVALC,0xBCC2,0xE5B8,0xBA4D,0xBCB7,0xE1E4,INVALC, INVALC,0xBCBA,INVALC,0xBCBE,0xBCC0,0xBCBD,0xBCBC,INVALC, 0xBCB6,0xE5BB,0xBCB3,0xBCC3,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0xBED8,0xBED9,0xE9A9,0xBEE2,0xBEDF, INVALC,0xBED6,0xBEDD,0xE9AB,0xBEDB,0xBED5,INVALC,0xBEDC, INVALC,0xE9A8,0xC0BB,0xBED7,INVALC,0xBEDE,0xC0BA,0xE9A7, 0xE9A6,INVALC,0xBEE0,INVALC,0xBEE1,INVALC,0xE9A5,0xE9A4, 0xC0BC,0xE9AE,0xBEDA,0xE9AC,INVALC,INVALC,INVALC,INVALC, 0xC0BD,INVALC,0xC0C2,0xECEA,0xECEC,INVALC,0xC0BF,INVALC, 0xECED,0xECE9,INVALC,0xECEB,0xC0C0,0xC0C3,INVALC,0xECE8, 0xC0BE,0xC0C1,0xC259,0xE9AD,0xC258,INVALC,INVALC,0xC25E, 0xEFD4,INVALC,0xC25C,0xC25D,0xEFD7,0xEFD3,0xC25A,0xEFD1, /* Block 102, Array index 0x2600 */ 0xC36B,0xEFD5,INVALC,0xEFD6,0xEFD2,INVALC,0xC25B,0xF242, INVALC,0xF245,INVALC,INVALC,0xF246,0xF244,0xF247,0xC36C, 0xF243,INVALC,INVALC,0xF44E,0xC464,0xF44D,0xF44C,0xF44B, 0xC463,0xC465,INVALC,0xF5CD,0xC4E2,0xC4E1,INVALC,INVALC, 0xF6E1,0xF6E0,0xF6E3,0xC5CB,0xC575,0xF7DD,0xF6E2,INVALC, INVALC,0xF7DC,0xC5CD,0xC5CC,0xC5F3,0xF8A9,0xF8EF,0xA4E4, INVALC,INVALC,0xD972,0xE9AF,INVALC,INVALC,0xA6AC,0xCAF7, 0xA7F1,0xA7EF,INVALC,0xA7F0,INVALC,0xCCC1,0xA9F1,0xAC46, INVALC,0xCEE7,INVALC,0xCEE8,INVALC,0xAC47,0xD1CE,INVALC, 0xAEC4,0xAEC5,0xD1CD,INVALC,INVALC,INVALC,INVALC,0xB1D3, INVALC,0xB1CF,INVALC,0xD5A7,0xB1D6,0xB1D5,0xB1CE,0xB1D1, 0xB1D4,0xB1D0,INVALC,INVALC,0xD976,0xB1CD,0xB4AF,INVALC, INVALC,INVALC,0xB4B1,0xB4B2,0xD975,0xD978,0xB4B0,0xD973, 0xD977,INVALC,0xD974,INVALC,0xB771,INVALC,INVALC,0xDDBC, INVALC,INVALC,0xBA56,0xE1F4,0xBEE3,0xBCC4,0xE5BD,0xBCC5, 0xBCC6,0xE5BF,0xE5BE,0xE5C0,0xE9B1,INVALC,INVALC,0xE9B0, 0xECEF,0xECEE,0xC0C4,0xC0C5,0xF248,INVALC,INVALC,0xA4E5, INVALC,INVALC,INVALC,INVALC,0xD979,INVALC,INVALC,INVALC, 0xB4B4,0xB4B3,0xDDBD,INVALC,0xEFD8,0xC4E3,0xF7DE,0xA4E6, INVALC,0xAEC6,INVALC,0xB1D8,0xB1D7,0xD97A,0xD97B,0xB772, 0xE1F5,0xBA57,0xE9B2,INVALC,0xA4E7,0xA5B8,INVALC,0xA9F2, 0xCCC2,INVALC,0xCEE9,0xAC48,0xB1D9,INVALC,0xD97C,0xB4B5, 0xB773,INVALC,0xE5C1,0xE5C2,INVALC,INVALC,0xECF0,0xC25F, 0xF8F0,0xA4E8,INVALC,0xCCC3,0xA9F3,0xAC49,INVALC,0xCEEA, INVALC,0xAEC7,0xD1D2,0xD1D0,0xD1D1,0xAEC8,0xD1CF,INVALC, INVALC,INVALC,INVALC,0xB1DB,0xB1DC,0xD5A8,0xB1DD,0xB1DA, 0xD97D,INVALC,0xD97E,0xDDBE,INVALC,INVALC,0xBA59,0xBA58, INVALC,INVALC,0xECF1,0xEFD9,INVALC,0xF24A,0xF249,0xF44F, INVALC,0xC95E,0xAC4A,INVALC,INVALC,0xA4E9,0xA5B9,INVALC, 0xA6AE,0xA6AD,INVALC,INVALC,0xA6AF,0xA6B0,0xC9EE,0xC9ED, 0xCAF8,0xA7F2,0xCAFB,0xCAFA,0xCAF9,0xCAFC,INVALC,INVALC, INVALC,INVALC,0xA9F4,0xCCC9,0xCCC5,0xCCCE,INVALC,INVALC, /* Block 103, Array index 0x2700 */ 0xA9FB,INVALC,0xA9F9,0xCCCA,0xCCC6,0xCCCD,0xA9F8,0xAA40, 0xCCC8,0xCCC4,0xA9FE,0xCCCB,0xA9F7,0xCCCC,0xA9FA,0xA9FC, 0xCCD0,0xCCCF,0xCCC7,0xA9F6,0xA9F5,0xA9FD,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0xCEEF,0xCEF5,INVALC,0xAC50, 0xAC4D,0xCEEC,0xCEF1,INVALC,0xAC53,0xAC4B,0xCEF0,0xAC4E, 0xAC51,INVALC,INVALC,0xCEF3,INVALC,0xAC4C,0xCEF8,0xAC4F, INVALC,0xAC52,0xCEED,0xCEF2,0xCEF6,0xCEEE,0xCEEB,INVALC, INVALC,0xCEF7,0xCEF4,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xAED0,0xAEC9,0xAECC,INVALC,0xAECF,INVALC,0xD1D5, INVALC,0xAECA,0xD1D3,INVALC,0xAECE,INVALC,INVALC,0xAECB, INVALC,0xD1D6,0xAECD,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xD5AC,0xB1DF,0xD5AB,0xD5AD,0xB1DE,0xB1E3,0xD1D4, INVALC,0xD5AA,0xD5AE,INVALC,0xB1E0,0xD5A9,0xB1E2,INVALC, 0xB1E1,INVALC,0xD9A7,INVALC,0xD9A2,INVALC,0xB4B6,0xB4BA, 0xB4B7,0xD9A5,0xD9A8,INVALC,0xB4B8,INVALC,0xB4B9,0xB4BE, 0xDDC7,0xD9A6,0xB4BC,0xD9A3,0xD9A1,INVALC,0xB4BD,INVALC, 0xD9A4,INVALC,INVALC,INVALC,0xB779,INVALC,0xDDBF,0xB776, 0xB777,0xB775,0xDDC4,0xDDC3,0xDDC0,0xB77B,INVALC,INVALC, 0xDDC2,0xB4BB,INVALC,INVALC,0xDDC6,0xDDC1,0xB778,0xB774, 0xB77A,0xDDC5,INVALC,INVALC,INVALC,0xBA5C,INVALC,0xE1F8, 0xE1F7,0xE1F6,0xBA5A,INVALC,INVALC,INVALC,INVALC,INVALC, 0xBA5B,0xE5C5,0xE5C8,0xBCC8,INVALC,INVALC,0xBCC7,0xE5C9, 0xE5C4,0xBCCA,0xE5C6,INVALC,0xBCC9,0xE5C3,INVALC,0xE5C7, 0xBEE9,0xBEE6,0xE9BB,0xE9BA,INVALC,0xE9B9,0xE9B4,INVALC, 0xE9B5,INVALC,INVALC,INVALC,0xBEE7,INVALC,0xBEE4,0xBEE8, 0xE9B3,0xBEE5,0xE9B6,0xE9B7,0xE9BC,INVALC,INVALC,0xE9B8, INVALC,INVALC,0xECF2,INVALC,INVALC,INVALC,0xC0C7,INVALC, 0xEFDC,0xC0C6,0xEFDA,0xEFDB,0xC260,0xC36E,0xF24B,INVALC, 0xC36D,INVALC,INVALC,0xF451,0xF452,INVALC,0xC466,INVALC, 0xF450,0xC4E4,INVALC,0xF7DF,0xC5CE,0xF8AA,0xF8AB,INVALC, 0xA4EA,INVALC,0xA6B1,0xA6B2,0xA7F3,INVALC,0xCCD1,0xAC54, 0xAED1,0xB1E4,INVALC,INVALC,0xB0D2,INVALC,0xB4BF,0xB4C0, /* Block 104, Array index 0x2800 */ 0xB3CC,0xD9A9,INVALC,0xB77C,0xE1FA,0xE1F9,INVALC,INVALC, 0xA4EB,0xA6B3,0xCCD2,0xAA42,INVALC,0xAA41,INVALC,0xCEF9, 0xCEFA,INVALC,0xD1D7,0xD1D8,0xAED2,0xAED3,INVALC,0xAED4, 0xD5AF,INVALC,INVALC,0xB1E6,INVALC,0xB4C2,INVALC,0xB4C1, 0xDDC8,0xDF7A,0xE1FB,0xE9BD,INVALC,INVALC,0xC261,0xC467, 0xA4EC,INVALC,0xA5BC,0xA5BD,0xA5BB,0xA5BE,0xA5BA,INVALC, INVALC,0xA6B6,INVALC,0xC9F6,0xA6B5,0xA6B7,INVALC,INVALC, 0xC9F1,0xC9F0,0xC9F3,0xC9F2,0xC9F5,0xA6B4,0xC9EF,0xC9F4, INVALC,INVALC,INVALC,INVALC,INVALC,0xCAFD,0xA7FD,0xCAFE, 0xCB43,0xA7FC,INVALC,0xCB47,0xCB42,0xCB45,0xA7F5,0xA7F6, 0xA7F7,0xA7F8,INVALC,0xA840,INVALC,0xCB41,0xA7FA,0xA841, INVALC,0xCB40,0xCB46,INVALC,0xA7F9,0xCB44,0xA7FB,0xA7F4, 0xA7FE,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0xAA57,INVALC,0xCCD4,0xAA43,INVALC,0xAA4D, 0xAA4E,0xAA46,0xAA58,0xAA48,0xCCDC,0xAA53,0xCCD7,0xAA49, 0xCCE6,0xCCE7,0xCCDF,0xCCD8,0xAA56,0xCCE4,0xAA51,0xAA4F, INVALC,0xCCE5,INVALC,0xCCE3,0xCCDB,0xCCD3,0xCCDA,0xAA4A, INVALC,0xAA50,INVALC,0xAA44,0xCCDE,0xCCDD,0xCCD5,INVALC, 0xAA52,0xCCE1,0xCCD6,0xAA55,0xCCE8,0xAA45,INVALC,0xAA4C, 0xCCD9,0xCCE2,0xAA54,INVALC,0xAA47,0xAA4B,INVALC,0xCCE0, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xCF5B,0xAC5C, 0xAC69,INVALC,0xCF56,0xCF4C,0xAC62,0xCF4A,0xAC5B,0xCF45, 0xAC65,0xCF52,0xCEFE,0xCF41,INVALC,INVALC,INVALC,INVALC, 0xCF44,0xCEFB,0xCF51,0xCF61,0xAC60,0xCF46,0xCF58,INVALC, 0xCEFD,0xCF5F,0xCF60,0xCF63,0xCF5A,0xCF4B,0xCF53,0xAC66, 0xAC59,0xAC61,0xAC6D,0xAC56,0xAC58,INVALC,INVALC,INVALC, 0xCF43,0xAC6A,0xAC63,0xCF5D,0xCF40,0xAC6C,0xAC67,0xCF49, INVALC,INVALC,0xAC6B,0xCF50,0xCF48,0xAC64,0xCF5C,0xCF54, INVALC,0xAC5E,0xCF62,0xCF47,0xAC5A,0xCF59,0xCF4F,0xAC5F, 0xCF55,0xAC57,0xCEFC,0xAC68,0xAEE3,0xAC5D,0xCF4E,0xCF4D, 0xCF42,INVALC,0xCF5E,INVALC,0xCF57,INVALC,INVALC,0xAC55, /* Block 105, Array index 0x2900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0xD1EC,0xAEEA,0xD1ED,INVALC,0xD1E1,0xAEDF, 0xAEEB,INVALC,0xD1DA,INVALC,0xD1E3,0xD1EB,INVALC,0xD1D9, 0xD1F4,0xAED5,INVALC,INVALC,INVALC,0xD1F3,0xD1EE,INVALC, 0xD1EF,0xAEDD,0xAEE8,0xD1E5,INVALC,0xD1E6,0xD1F0,0xD1E7, INVALC,0xD1E2,0xD1DC,0xD1DD,0xD1EA,0xD1E4,INVALC,INVALC, 0xAED6,0xAEDA,0xD1F2,0xD1DE,0xAEE6,0xAEE2,INVALC,INVALC, 0xAEE5,0xAEEC,0xAEDB,0xAEE7,0xD1E9,0xAEE9,0xAED8,INVALC, 0xAED7,0xD1DB,INVALC,0xD1DF,0xAEE0,0xD1F1,0xD1E8,0xD1E0, 0xAEE4,0xAEE1,INVALC,0xAED9,0xAEDC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0xD5C4,INVALC,0xD5B4,0xD5B5,0xD5B9, INVALC,0xD5C8,0xD5C5,INVALC,0xD5BE,0xD5BD,0xB1ED,0xD5C1, 0xD5D0,0xD5B0,INVALC,0xD5D1,0xD5C3,0xD5D5,0xD5C9,0xB1EC, 0xD5C7,0xB1E7,0xB1FC,0xB1F2,INVALC,0xB1F6,0xB1F5,0xD5B1, INVALC,0xD5CE,0xD5D4,0xD5CC,0xD5D3,INVALC,INVALC,0xD5C0, 0xD5B2,0xD5D2,0xD5C2,0xB1EA,0xB1F7,INVALC,0xD5CB,0xB1F0, INVALC,INVALC,INVALC,0xD5CA,0xD5B3,0xB1F8,INVALC,0xB1FA, 0xD5CD,0xB1FB,0xB1E9,0xD5BA,0xD5CF,INVALC,INVALC,0xB1EF, 0xB1F9,0xD5BC,0xD5C6,0xD5B7,0xD5BB,0xB1F4,0xD5B6,0xB1E8, 0xB1F1,0xB1EE,0xD5BF,0xAEDE,0xD9C0,0xB1EB,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0xB1F3,INVALC,0xD9C3,0xD9D9, 0xD9CE,0xB4D6,INVALC,0xB4D1,0xD9BD,0xB4D2,0xD9CD,INVALC, 0xD9C6,0xD9D3,0xB4CE,0xD9AB,0xD9D5,0xB4C4,0xD9B3,0xB4C7, 0xB4C6,INVALC,0xB4D7,INVALC,0xD9AD,0xD9CF,0xD9D0,0xB4C9, 0xB4C5,0xD9BB,INVALC,0xB4D0,0xD9B6,INVALC,0xD9D1,0xB4CC, 0xD9C9,0xD9D6,0xD9B0,0xD9B5,0xD9AF,INVALC,0xB4CB,0xD9C2, 0xDDDE,0xD9B1,0xB4CF,0xD9BA,0xD9D2,0xB4CA,0xD9B7,0xD9B4, 0xD9C5,0xB4CD,0xB4C3,0xB4D9,0xD9C8,0xD9C7,INVALC,INVALC, /* Block 106, Array index 0x2A00 */ INVALC,INVALC,INVALC,INVALC,0xD9AC,0xB4C8,0xD9D4,0xD9BC, 0xD9BE,INVALC,0xD9CB,0xD9CA,0xD9AA,0xB4D3,0xB4D5,0xD9B2, 0xD9B9,0xD9C1,0xB4D4,0xD9B8,0xD9C4,0xD9D7,INVALC,0xD9CC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xD9D8,INVALC,INVALC, INVALC,INVALC,0xD9AE,INVALC,INVALC,INVALC,INVALC,0xDDF2, 0xB7A6,INVALC,0xDDF0,0xDDDB,0xDDE0,0xDDD9,INVALC,0xDDEC, 0xDDCB,0xDDD2,INVALC,0xDDEA,0xDDF4,0xDDDC,INVALC,0xDDCF, 0xDDE2,0xDDE7,0xDDD3,INVALC,0xDDE4,0xDDD0,INVALC,INVALC, 0xDDD7,0xDDD8,0xB7A8,0xDDEB,0xDDE9,INVALC,0xDDCC,0xDDEE, INVALC,0xDDEF,0xDDF1,0xB7AC,0xB7A4,INVALC,0xD5B8,0xDDD4, 0xDDE6,0xDDD5,0xB7A1,0xB7B1,0xDDED,0xB7AF,0xB7AB,0xDDCA, 0xB7A3,INVALC,0xDDCD,0xB7B0,INVALC,0xDDDD,0xDDC9,INVALC, 0xB7A9,0xDDE1,0xDDD1,0xB7AA,0xDDDA,0xB77E,0xB4D8,0xDDE3, 0xD9BF,0xDDCE,INVALC,INVALC,0xDDE8,0xB7A5,0xDDE5,0xB7A2, 0xDDDF,0xB7AD,0xDDD6,0xDDF3,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0xB7A7,0xDEC6,INVALC,INVALC,0xB7AE,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xE24A,0xE248,INVALC, 0xE25E,0xE246,INVALC,0xE258,0xB77D,0xBA5F,0xE242,0xE25D, INVALC,0xE247,0xE255,0xBA64,0xBA5D,INVALC,0xE25B,INVALC, 0xE240,0xE25A,INVALC,0xBA6F,0xE251,0xE261,0xBA6D,0xE249, 0xBA5E,0xE24B,0xE259,0xBA67,0xE244,0xBA6B,0xBA61,0xE24D, 0xE243,0xE1FC,INVALC,0xE257,0xBA68,0xE260,0xE1FD,0xBA65, INVALC,0xE253,INVALC,0xBA66,0xE245,0xE250,0xE24C,0xE24E, INVALC,0xBA60,0xE25F,0xBA6E,0xE24F,INVALC,0xE262,INVALC, INVALC,0xE1FE,0xE254,0xBA63,0xBA6C,0xBA6A,0xE241,0xE256, 0xBA69,INVALC,INVALC,0xBA62,0xE252,INVALC,INVALC,INVALC, INVALC,0xE25C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0xE5D5,INVALC,0xE5D1,0xE5CD,0xE5E1,0xE5DE, 0xBCCD,INVALC,INVALC,0xE5E5,0xE5D4,0xBCD8,0xE5DB,INVALC, INVALC,0xE5D0,0xE5DA,0xBCD5,0xE5EE,INVALC,0xE5EB,0xE5DD, 0xE5CE,INVALC,INVALC,0xE5E2,0xE5E4,0xBCD1,0xE5D8,0xE5D3, /* Block 107, Array index 0x2B00 */ 0xE5CA,0xBCCE,0xBCD6,INVALC,0xE5E7,0xBCD7,0xE5CB,0xE5ED, 0xE5E0,0xE5E6,0xBCD4,INVALC,INVALC,0xE5E3,INVALC,0xE5EA, INVALC,0xBCD9,INVALC,0xBCD3,0xE5DC,0xE5CF,0xE5EF,0xE5CC, 0xE5E8,0xBCD0,INVALC,0xE5D6,INVALC,0xE5D7,0xBCCF,0xBCCC, 0xE5D2,0xBCD2,INVALC,0xBCCB,INVALC,0xE5E9,0xE5EC,0xE5D9, 0xE9CA,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0xE9C2,INVALC,0xE9BE,0xBEF6,INVALC,INVALC, 0xBEEB,0xBEF0,0xBEEC,0xE9CC,0xE9D7,0xBEEA,0xE9C4,0xE9CD, 0xE5DF,0xE9CE,INVALC,INVALC,0xBEF1,INVALC,0xE9DD,0xBEF5, 0xBEF8,0xE9C0,INVALC,0xBEF4,INVALC,0xE9DB,0xE9DC,0xE9D2, 0xE9D1,0xE9C9,INVALC,INVALC,0xE9D3,0xE9DA,0xE9D9,INVALC, 0xBEEF,0xBEED,0xE9CB,0xE9C8,INVALC,0xE9C5,0xE9D8,0xBEF7, 0xE9D6,0xBEF3,0xBEF2,INVALC,0xE9D0,INVALC,0xE9BF,0xE9C1, 0xE9C3,0xE9D5,0xE9CF,0xBEEE,INVALC,0xE9C6,INVALC,0xE9D4, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xE9C7,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xC0CF,0xED45, 0xC0C8,0xECF5,INVALC,0xED41,0xC0CA,0xED48,INVALC,0xECFC, INVALC,0xECF7,INVALC,INVALC,0xED49,0xECF3,0xECFE,INVALC, 0xC0D1,0xED44,0xED4A,0xECFD,0xC0C9,0xED40,0xECF4,0xC0D0, INVALC,INVALC,0xED47,0xECF9,0xC0CC,INVALC,0xECFB,0xECF8, 0xC0D2,0xECFA,0xC0CB,0xC0CE,0xED43,0xECF6,0xED46,INVALC, 0xED42,INVALC,INVALC,INVALC,0xC263,0xEFE7,0xC268,0xC269, INVALC,INVALC,INVALC,0xC262,0xEFE6,INVALC,0xEFE3,0xEFE4, 0xC266,0xEFDE,0xEFE2,0xC265,INVALC,0xEFDF,INVALC,INVALC, INVALC,INVALC,0xC267,0xC264,INVALC,0xEFDD,0xEFE1,0xEFE5, INVALC,INVALC,INVALC,0xF251,0xF24E,0xF257,INVALC,0xF256, 0xF254,0xF24F,INVALC,0xC372,INVALC,INVALC,INVALC,INVALC, INVALC,0xF250,0xC371,0xC0CD,0xF253,0xC370,0xF258,0xF252, 0xF24D,0xEFE0,INVALC,INVALC,INVALC,0xC36F,INVALC,0xF24C, 0xF456,INVALC,0xF455,0xF255,0xC468,INVALC,0xF459,0xF45A, 0xF454,0xF458,INVALC,0xF453,INVALC,INVALC,INVALC,INVALC, 0xF5D1,0xF457,0xC4E7,0xC4E5,0xF5CF,INVALC,INVALC,INVALC, /* Block 108, Array index 0x2C00 */ 0xF5D2,INVALC,0xF5CE,0xF5D0,0xC4E6,INVALC,INVALC,INVALC, 0xF6E5,0xF6E6,0xC576,0xF6E4,INVALC,INVALC,INVALC,0xF7E2, 0xC5CF,0xF7E0,0xF7E1,0xF8AC,INVALC,INVALC,0xC656,0xF8F3, 0xF8F1,0xF8F2,0xF8F4,INVALC,INVALC,INVALC,0xF9BB,INVALC, 0xA4ED,0xA6B8,INVALC,0xAA59,INVALC,0xCCE9,INVALC,INVALC, 0xCF64,INVALC,INVALC,INVALC,0xD1F5,0xD1F7,INVALC,0xD1F6, INVALC,0xD1F8,0xB1FD,0xD5D7,0xD1F9,INVALC,0xD5D6,0xD5D8, 0xD5D9,0xD9DA,0xB4DB,0xD9DB,0xD9DD,0xB4DC,0xB4DA,0xD9DC, INVALC,0xDDFA,0xDDF8,0xDDF7,INVALC,0xDDF6,0xDDF5,0xB7B2, 0xDDF9,0xBA70,0xE263,0xE265,0xBA71,0xE264,0xBCDB,INVALC, 0xBCDA,0xE5F0,INVALC,INVALC,0xE9DF,0xE9DE,0xE9E0,INVALC, INVALC,0xBEF9,INVALC,0xED4B,0xC0D3,INVALC,0xEFE8,0xC26A, 0xF259,0xC577,0xA4EE,0xA5BF,0xA6B9,0xA842,0xAA5A,0xAA5B, INVALC,INVALC,0xAC6E,INVALC,INVALC,0xD1FA,INVALC,INVALC, INVALC,INVALC,0xB7B3,INVALC,INVALC,INVALC,0xE6D1,0xBEFA, 0xC26B,0xA4EF,INVALC,0xA6BA,INVALC,INVALC,0xCCEB,0xAA5C, 0xCCEA,INVALC,0xCF65,0xAC6F,0xCF66,INVALC,0xAC70,INVALC, 0xD1FC,0xAEEE,0xAEED,INVALC,0xD5DE,0xD5DC,0xD5DD,0xD5DB, INVALC,0xD5DA,INVALC,INVALC,0xD9DE,0xD9E1,0xB4DE,0xD9DF, 0xB4DD,0xD9E0,INVALC,0xDDFB,INVALC,INVALC,0xE266,0xE267, 0xE268,INVALC,0xE5F3,0xE5F2,0xBCDC,0xE5F1,0xE5F4,0xE9E1, INVALC,INVALC,0xE9E2,0xE9E3,INVALC,0xED4C,0xC0D4,0xC26C, 0xF25A,INVALC,0xC4E8,0xC95F,INVALC,0xAC71,0xCF67,0xAEEF, INVALC,INVALC,0xB1FE,INVALC,0xB4DF,0xD9E2,INVALC,0xB7B5, 0xB7B4,INVALC,INVALC,0xE269,0xE26A,0xBCDD,0xBCDE,0xE9E5, 0xE9E4,0xEFE9,0xF7E3,0xA4F0,0xC960,0xA5C0,INVALC,0xA843, 0xCB48,INVALC,0xAC72,0xB7B6,0xA4F1,INVALC,0xCF68,0xAC73, 0xCF69,INVALC,0xC0D5,0xA4F2,INVALC,INVALC,0xCCEC,INVALC, 0xCF6A,INVALC,0xD242,0xD241,0xD1FE,INVALC,0xD1FD,0xD243, 0xD240,INVALC,INVALC,0xB240,0xB241,INVALC,INVALC,0xB4E0, 0xD9E3,INVALC,0xD9E4,0xD9E5,INVALC,INVALC,INVALC,0xDE41, 0xDE42,0xDE40,INVALC,0xDDFD,0xDDFE,0xB7B7,0xE26B,0xE5F7, /* Block 109, Array index 0x2D00 */ 0xE5F6,0xE5F5,0xE5F8,0xE9E7,0xE9E6,0xBEFB,0xE9E8,INVALC, 0xC0D6,0xED4D,INVALC,0xEFEA,0xF25B,0xF6E7,INVALC,0xA4F3, 0xA5C2,0xA5C1,INVALC,0xAA5D,0xC961,0xC97E,0xA6BB,INVALC, 0xC9F7,0xCB49,0xCB4A,0xAA5E,INVALC,0xCCED,INVALC,0xAC74, 0xCF6B,0xCF6C,INVALC,0xAEF0,0xAEF4,0xD244,0xAEF3,0xAEF1, 0xAEF2,INVALC,0xD5DF,0xB242,0xB4E3,INVALC,0xB4E1,0xB4E2, 0xD9E6,INVALC,INVALC,0xBA72,0xA4F4,INVALC,0xC9A1,INVALC, 0xA5C3,INVALC,INVALC,0xC9A4,INVALC,INVALC,0xA5C6,0xC9A3, 0xA5C5,0xA5C4,0xA844,0xC9A2,INVALC,INVALC,0xC9F8,INVALC, INVALC,INVALC,0xC9FC,0xC9FE,0xCA40,0xA6C5,0xA6C6,0xC9FB, 0xA6C1,INVALC,0xC9F9,INVALC,0xC9FD,0xA6C2,INVALC,0xA6BD, INVALC,0xA6BE,INVALC,0xA6C4,0xC9FA,0xA6BC,0xA845,0xA6BF, 0xA6C0,0xA6C3,INVALC,INVALC,INVALC,0xCB5B,0xCB59,0xCB4C, 0xA851,0xCB53,0xA84C,0xCB4D,INVALC,0xCB55,INVALC,0xCB52, 0xA84F,0xCB51,0xA856,0xCB5A,0xA858,INVALC,0xA85A,INVALC, 0xCB4B,INVALC,0xA84D,0xCB5C,INVALC,0xA854,0xA857,INVALC, 0xCD45,0xA847,0xA85E,0xA855,0xCB4E,0xA84A,0xA859,0xCB56, 0xA848,0xA849,0xCD43,0xCB4F,0xA850,0xA85B,0xCB5D,0xCB50, 0xA84E,INVALC,0xA853,0xCCEE,0xA85C,0xCB57,0xA852,INVALC, 0xA85D,0xA846,0xCB54,0xA84B,0xCB58,0xCD44,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0xAA6A,0xAA7A,0xCCF5,0xAA71,INVALC, 0xCD4B,0xAA62,INVALC,0xAA65,0xCD42,INVALC,0xCCF3,0xCCF7, 0xAA6D,0xAA6F,0xCCFA,0xAA76,0xAA68,0xAA66,0xAA67,0xAA75, 0xCD47,0xAA70,0xCCF9,0xCCFB,0xAA6E,0xAA73,0xCCFC,0xCD4A, INVALC,0xAC75,0xAA79,INVALC,0xAA63,0xCD49,INVALC,0xCD4D, 0xCCF8,0xCD4F,0xCD40,0xAA6C,0xCCF4,0xAA6B,0xAA7D,0xAA72, INVALC,0xCCF2,0xCF75,0xAA78,0xAA7C,0xCD41,0xCD46,INVALC, 0xAA7E,0xAA77,0xAA69,0xAA5F,INVALC,0xAA64,INVALC,0xCCF6, 0xAA60,0xCD4E,INVALC,0xCCF0,0xCCEF,0xCCFD,0xCCF1,0xAA7B, 0xAEF5,0xAA74,0xCCFE,0xAA61,INVALC,0xACA6,INVALC,INVALC, INVALC,0xCD4C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 110, Array index 0x2E00 */ 0xCF7C,0xCFA1,INVALC,0xCFA4,0xCF77,INVALC,INVALC,0xCFA7, 0xCFAA,0xCFAC,0xCF74,0xAC76,0xAC7B,0xD249,0xACAD,0xCFA5, 0xCFAD,0xCF7B,0xCF73,INVALC,INVALC,INVALC,0xD264,0xAC7E, 0xCFA2,0xCF78,0xCF7A,0xACA5,INVALC,0xCF7D,0xAC7D,0xCF70, 0xCFA8,INVALC,0xCFAB,INVALC,INVALC,0xAC7A,INVALC,0xACA8, 0xCF6D,0xACAA,0xAC78,0xACAE,0xCFA9,0xCF6F,0xACAB,0xD25E, 0xCD48,0xAC7C,0xAC77,0xCF76,0xCF6E,0xACAC,0xACA4,0xCFA3, 0xACA9,0xACA7,0xCF79,0xACA1,0xCF71,0xACA2,0xACA3,0xCF72, 0xCFA6,0xAC79,0xCF7E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xD24C,0xAEFD,0xAF43,INVALC,INVALC,INVALC,0xD255,0xD25B, 0xD257,0xD24A,0xD24D,0xD246,0xD247,0xAF4A,0xAEFA,0xD256, 0xD25F,0xAF45,0xAEF6,INVALC,0xAF40,0xD24E,0xAF42,0xD24F, 0xD259,INVALC,INVALC,INVALC,0xAF44,0xD268,0xD248,0xAEFC, 0xAEFB,0xAF48,0xD245,0xD266,0xD25A,0xD267,0xD261,0xD253, 0xD262,INVALC,0xD25C,0xD265,0xD263,0xAF49,0xD254,0xAEF9, 0xAEF8,0xAF41,0xAF47,0xD260,0xAF46,0xD251,0xB243,INVALC, 0xD269,0xD250,0xD24B,0xAEFE,0xAF4B,0xAEF7,INVALC,0xD258, 0xD25D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0xB265,0xD5E1,0xD5E5,INVALC,0xB252,0xB250, INVALC,INVALC,0xB247,0xD5E3,0xD5E2,0xB25B,INVALC,0xD5E8, 0xB255,INVALC,0xD5FA,0xD647,0xB244,0xD5F7,0xD5F0,0xB267, 0xD5E0,INVALC,0xD5FC,INVALC,0xB264,0xB258,0xB263,0xB24E, 0xD5EC,0xD5FE,0xD5F6,0xB24F,0xB249,0xD645,INVALC,0xD5FD, 0xD640,0xB251,0xB259,0xD642,0xD5EA,0xD5FB,0xD5EF,0xD644, 0xB25E,0xB246,0xB25C,0xD5F4,0xD5F2,0xD5F3,0xB253,0xD5EE, 0xD5ED,0xB248,0xD5E7,0xD646,0xB24A,0xD5F1,0xB268,INVALC, 0xB262,0xD5E6,0xB25F,0xB25D,0xB266,0xD5F8,0xB261,0xD252, 0xD5F9,0xB260,0xD641,0xB245,0xD5F5,0xB257,0xD5E9,0xB256, INVALC,0xB254,0xB24C,0xB24B,0xD9E7,0xD643,INVALC,INVALC, /* Block 111, Array index 0x2F00 */ 0xD5EB,INVALC,INVALC,0xD9FC,INVALC,0xB24D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xB541,0xB25A,0xB4EE,0xD9F6,0xB4FC,INVALC,0xD9EA, 0xB4EB,0xB4E7,0xDA49,0xB4ED,0xB4F1,0xB4EC,0xB4F5,0xDA4D, 0xDA44,INVALC,INVALC,0xD9F1,0xB4FA,0xB4F4,0xD9FD,0xB4E4, 0xDA4A,0xDA43,0xB4E8,0xD9F7,0xB4F7,0xDA55,0xDA56,INVALC, 0xB4E5,0xDA48,0xB4F9,0xD9FB,0xD9ED,0xD9EE,0xB4FD,0xD9F2, 0xD9F9,0xD9F3,INVALC,0xB4FB,0xB544,0xD9EF,0xD9E8,0xD9E9, INVALC,0xD9EB,0xB4EA,0xD9F8,INVALC,0xB4F8,0xB542,INVALC, INVALC,0xD9FA,0xDA53,0xDA4B,0xB4E6,0xDA51,0xB4F2,INVALC, 0xB4F0,INVALC,0xDA57,0xB4EF,0xDA41,0xD9F4,0xD9FE,0xB547, 0xDA45,0xDA42,0xD9F0,0xB543,0xDA4F,0xDA4C,0xDA54,0xB4E9, 0xDA40,0xB546,INVALC,0xDA47,INVALC,INVALC,0xB4F3,0xB4F6, INVALC,0xDA46,0xB545,0xD9F5,0xD5E4,INVALC,INVALC,0xDA50, 0xDA4E,0xDA52,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xD9EC,0xB540,INVALC,INVALC,INVALC,0xDE61,0xDE60,0xDE46, 0xB7BD,INVALC,0xDE5F,0xDE49,0xDE4A,INVALC,0xB7C7,0xDE68, 0xB7C2,0xDE5E,INVALC,0xDE43,0xB7C8,0xB7BE,0xDE52,0xDE48, 0xDE4B,0xDE63,0xB7B8,0xDE6A,0xDE62,0xB7C1,0xDE57,0xB7CC, INVALC,INVALC,0xB7CB,0xB7C5,INVALC,INVALC,0xDE69,0xB7B9, 0xDE55,0xDE4C,0xDE59,0xDE65,0xB7CD,INVALC,0xB7BB,0xDE54, INVALC,0xDE4D,0xB7C4,INVALC,0xB7C3,0xDE50,0xDE5A,0xDE64, 0xDE47,0xDE51,0xB7BC,0xDE5B,0xB7C9,0xB7C0,0xDE4E,0xB7BF, 0xDE45,0xDE53,0xDE67,0xB4FE,0xBAB0,0xDE56,0xE26C,0xDE58, 0xDE66,0xB7C6,0xDE4F,0xB7BA,0xB7CA,0xBCF0,0xDE44,INVALC, 0xDE5D,INVALC,INVALC,INVALC,0xDE5C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0xE2AA,0xBAAD,0xE27D,0xE2A4,0xBAA2, INVALC,0xE26E,0xBAAF,INVALC,0xBA77,0xE26D,0xE2B0,0xBAB1, 0xE271,0xE2A3,INVALC,0xE273,0xE2B3,0xE2AF,0xBA75,0xBAA1, /* Block 112, Array index 0x3000 */ 0xE653,0xBAAE,0xBA7D,0xE26F,INVALC,0xE2AE,0xBAA3,0xE2AB, 0xE2B8,0xE275,0xE27E,INVALC,INVALC,0xE2B6,0xE2AC,0xBA7C, INVALC,INVALC,0xE27C,0xBA76,0xBA74,0xBAA8,INVALC,INVALC, 0xE27A,0xE277,0xE278,INVALC,0xE2B2,INVALC,0xE2B7,0xE2B5, 0xBA7A,0xE2B9,0xBA7E,0xBAA7,INVALC,0xE270,0xE5FA,0xE279, INVALC,0xBA78,0xBAAC,0xBAA9,0xBA7B,0xE2A5,0xE274,0xBAAA, 0xE2A7,0xBAA4,0xBAA6,0xBA73,INVALC,0xE2A9,0xE2A1,0xE272, 0xBAA5,0xE2B1,0xE2B4,0xE27B,0xE2A8,INVALC,0xBA79,0xBCDF, 0xE2A6,0xE5F9,INVALC,0xE2AD,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xE276,0xE644, 0xE64E,0xBCE2,0xE64D,0xE659,0xBCE4,0xE64B,INVALC,0xE64F, 0xBCEF,INVALC,0xE646,0xBCE7,INVALC,0xE652,0xE9F0,0xBCF3, 0xBCF2,0xE654,0xE643,0xE65E,0xBCED,INVALC,0xBCE3,0xE657, INVALC,0xE65B,0xE660,0xE655,0xE649,0xBCE6,0xBCE9,0xBCF1, 0xBCEC,INVALC,0xE64C,0xE2A2,INVALC,INVALC,0xE648,0xE65F, 0xBCE8,INVALC,0xBCEB,0xE661,0xBCE0,0xE656,0xE5FB,0xE65C, 0xC0DF,INVALC,0xE64A,INVALC,0xBCE1,0xE645,0xBCE5,0xE5FC, 0xBAAB,0xE641,INVALC,0xE65A,0xE642,0xE640,0xBCEA,INVALC, 0xE658,INVALC,0xE5FE,0xE651,0xE650,0xE65D,0xE647,0xBCEE, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xE9F3,INVALC, 0xBF49,0xBEFE,0xEA40,0xE9EB,0xBF41,0xE9F7,0xBF48,0xBF43, 0xE9F5,0xED4F,0xE9FB,0xEA42,0xE9FA,0xE9E9,0xE9F8,0xEA44, 0xEA46,0xBEFD,0xEA45,0xBF44,0xBF4A,INVALC,0xBF47,INVALC, 0xE9FE,0xBF46,0xE9F9,INVALC,0xE9ED,0xE9F2,INVALC,0xE9FD, 0xBF45,0xBF42,0xBEFC,0xBF40,0xE9F1,INVALC,0xE5FD,0xE9EC, 0xE9EF,0xEA41,0xE9F4,0xE9EA,0xED4E,0xEA43,0xE9EE,0xE9FC, INVALC,INVALC,INVALC,INVALC,0xED51,0xC0E3,INVALC,INVALC, 0xC0D7,INVALC,INVALC,0xC0DB,0xED53,0xED59,0xED57,0xC0D9, 0xC0DA,0xC0E1,0xED5A,0xED52,0xC0DC,INVALC,0xED56,0xED55, 0xED5B,0xC0E2,INVALC,0xC0DD,0xC0E0,0xED54,0xC0E4,0xC0DE, 0xC0E5,0xC0D8,0xED58,INVALC,0xED50,INVALC,INVALC,0xEFF7, INVALC,INVALC,0xC271,0xEFF4,0xEFF6,INVALC,0xC26F,0xEFF2, /* Block 113, Array index 0x3100 */ 0xEFF3,0xEFEE,INVALC,INVALC,0xE9F6,0xEFEF,0xC270,0xEFEB, INVALC,0xC26D,0xEFF8,0xC26E,0xEFEC,0xEFED,0xEFF1,0xC273, INVALC,0xC272,INVALC,INVALC,0xEFF0,0xC378,0xF25F,0xF265, 0xC379,0xF25C,0xC376,0xC373,0xF267,0xC377,INVALC,0xC374, 0xF25E,0xF261,0xF262,0xF263,0xF266,INVALC,0xEFF5,0xF25D, 0xC375,0xF264,0xF268,0xF260,INVALC,INVALC,INVALC,0xF45D, 0xC46A,0xF460,0xC46B,0xF468,0xF45F,0xF45C,INVALC,0xF45E, 0xF462,0xF465,0xF464,0xF467,0xF45B,INVALC,0xC469,0xF463, 0xF466,0xF469,0xF461,0xF5D3,0xF5D4,0xF5D8,0xF5D9,INVALC, 0xF5D6,0xF5D7,0xF5D5,INVALC,0xC4E9,INVALC,INVALC,INVALC, INVALC,0xC578,0xF6EB,INVALC,INVALC,0xF6E8,0xF6E9,0xF6EA, 0xC579,INVALC,0xF7E5,0xF7E4,INVALC,0xF8AF,0xC5F4,0xF8AD, 0xF8B0,0xF8AE,0xF8F5,0xC657,0xC665,0xF9A3,0xF96C,INVALC, 0xF9A2,0xF9D0,0xF9D1,0xA4F5,INVALC,INVALC,INVALC,INVALC, 0xA6C7,0xCA41,INVALC,INVALC,0xCB5E,INVALC,0xA85F,INVALC, 0xA862,INVALC,0xCB5F,INVALC,0xA860,0xA861,INVALC,INVALC, INVALC,INVALC,0xCD58,0xCD5A,0xCD55,0xCD52,0xCD54,INVALC, INVALC,INVALC,0xAAA4,INVALC,INVALC,INVALC,0xAAA2,INVALC, INVALC,0xCD56,0xAAA3,0xCD53,0xCD50,0xAAA1,0xCD57,INVALC, 0xCD51,0xAAA5,0xCD59,INVALC,INVALC,INVALC,INVALC,0xCFAF, INVALC,0xCFB3,INVALC,INVALC,0xACB7,INVALC,INVALC,INVALC, INVALC,0xCFB6,INVALC,0xACAF,0xACB2,0xACB4,0xACB6,0xACB3, 0xCFB2,0xCFB1,INVALC,0xACB1,0xCFB4,0xCFB5,INVALC,0xCFAE, 0xACB5,INVALC,0xACB0,INVALC,INVALC,INVALC,0xCFB0,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xD277,0xD278,0xD279, 0xAF50,INVALC,0xAF4C,0xD26E,INVALC,0xD276,0xD27B,0xAF51, INVALC,0xD26C,0xD272,0xD26B,0xD275,INVALC,INVALC,0xD271, 0xAF4D,0xAF4F,0xD27A,INVALC,0xD26A,0xD26D,0xD273,INVALC, 0xD274,0xD27C,0xD270,INVALC,0xAF4E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xB26D, 0xD64E,INVALC,INVALC,0xD650,0xD64C,INVALC,0xD658,0xD64A, 0xD657,0xB269,0xD648,0xDA5B,0xD652,0xB26C,INVALC,0xD653, /* Block 114, Array index 0x3200 */ 0xD656,INVALC,0xD65A,INVALC,0xD64F,INVALC,0xD654,INVALC, INVALC,0xB26A,0xB26B,0xD659,0xD64D,0xD649,0xD65B,INVALC, 0xD651,INVALC,INVALC,0xD655,INVALC,INVALC,INVALC,0xD64B, INVALC,0xB548,0xB549,0xDA65,0xB54F,INVALC,0xDA59,0xDA62, 0xDA58,0xB54C,0xDA60,0xDA5E,INVALC,0xDA5F,0xB54A,INVALC, 0xDA63,INVALC,INVALC,INVALC,INVALC,INVALC,0xDA5C,0xDA5A, 0xB54B,0xDA5D,0xDA61,INVALC,INVALC,INVALC,0xB54D,INVALC, INVALC,INVALC,0xDA64,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xDE70,0xDE77,0xDE79,0xDEA1,INVALC,0xB7DA,0xDE6B, INVALC,0xB7D2,INVALC,0xDE7A,0xB7D7,0xDEA2,0xB7CE,INVALC, 0xDE7D,INVALC,0xDE6D,0xDE7E,0xDE6C,INVALC,0xB7DC,INVALC, 0xDE78,0xB7CF,0xDEA3,INVALC,0xB7D4,0xDE71,0xB7D9,0xDE7C, 0xDE6F,0xDE76,0xDE72,0xDE6E,0xB7D1,0xB7D8,0xB7D6,0xB7D3, 0xB7DB,0xB7D0,0xDE75,INVALC,0xB7D5,INVALC,0xB54E,INVALC, 0xDE7B,INVALC,0xDE73,INVALC,INVALC,INVALC,INVALC,INVALC, 0xDE74,INVALC,INVALC,0xE2C1,INVALC,0xBAB4,INVALC,INVALC, 0xE2BD,0xE2C3,0xE2BF,INVALC,0xBAB6,0xE2BE,0xE2C2,0xE2BA, INVALC,0xE2BC,0xBAB5,INVALC,INVALC,INVALC,INVALC,0xE2C0, 0xE2BB,INVALC,0xBAB7,INVALC,0xBAB2,INVALC,INVALC,0xE2C4, INVALC,0xBAB3,0xE667,0xE664,0xE670,0xE66A,0xE66C,0xBCF4, 0xE666,0xE66E,INVALC,INVALC,0xE66D,0xE66B,INVALC,0xE671, 0xBCF7,0xE668,0xE66F,INVALC,0xBCF5,INVALC,INVALC,0xE663, 0xE665,0xBCF6,0xE662,0xE672,INVALC,0xE669,INVALC,INVALC, 0xEA4A,0xBF51,INVALC,INVALC,0xEA55,0xEA53,0xBF4B,0xEA49, 0xEA4C,0xEA4D,0xEA48,0xBF55,0xBF56,0xEA47,0xEA56,0xEA51, 0xBF4F,0xBF4C,0xEA50,0xEA4E,INVALC,INVALC,0xBF52,0xEA52, 0xBF4D,INVALC,0xBF4E,INVALC,0xEA4F,0xBF50,0xEA4B,INVALC, 0xEA54,0xBF53,0xEA57,0xEA58,0xBF54,INVALC,INVALC,0xC0E7, 0xC0EE,0xED5C,0xED62,INVALC,0xED60,0xC0EA,0xC0E9,0xC0E6, 0xED5E,INVALC,INVALC,INVALC,0xC0EC,0xC0EB,0xC0E8,INVALC, 0xED61,0xED5D,0xED5F,INVALC,0xC0ED,INVALC,INVALC,INVALC, 0xC277,0xEFFB,INVALC,0xC274,0xC275,0xEFFD,0xC276,0xEFFA, /* Block 115, Array index 0x3300 */ INVALC,0xEFF9,0xF26C,0xEFFC,INVALC,0xF26D,0xC37A,0xF26B, INVALC,INVALC,0xF26A,INVALC,0xF269,0xC37B,INVALC,INVALC, 0xC46C,INVALC,INVALC,0xF46A,0xF46B,INVALC,INVALC,INVALC, INVALC,0xF5DC,0xF5DB,0xC4EA,INVALC,0xF5DA,0xF6EC,0xF6ED, INVALC,INVALC,0xF7E6,0xF8B1,INVALC,INVALC,0xF8F6,0xF9BC, 0xC679,0xF9C6,0xA4F6,INVALC,0xAAA6,0xAAA7,INVALC,INVALC, 0xACB8,INVALC,INVALC,INVALC,INVALC,0xC0EF,0xA4F7,INVALC, 0xAAA8,0xAF52,0xB7DD,0xA4F8,INVALC,0xB26E,0xBAB8,0xC962, INVALC,0xCFB7,0xD27D,INVALC,0xE2C5,INVALC,0xC0F0,0xA4F9, 0xAAA9,0xCFB8,0xCFB9,0xDA66,0xB550,INVALC,INVALC,0xDEA4, INVALC,INVALC,0xB7DE,0xE2C6,INVALC,INVALC,0xBCF8,INVALC, 0xC37C,0xA4FA,0xDA67,0xA4FB,INVALC,0xA6C9,0xCA42,0xA6C8, 0xA865,0xA864,0xA863,0xCB60,INVALC,INVALC,INVALC,0xAAAA, INVALC,0xAAAB,0xCD5B,INVALC,0xCFBA,INVALC,0xCFBD,0xACBA, 0xCFBB,INVALC,0xACB9,0xCFBC,0xACBB,INVALC,0xD2A2,0xD2A1, 0xD27E,0xAF53,INVALC,0xD65D,0xD65E,0xB26F,0xD65C,0xD65F, 0xB552,0xB270,INVALC,INVALC,0xB551,0xDA6B,0xDA6A,INVALC, 0xDA68,0xDA69,INVALC,0xDA6C,0xDEA6,0xDEA5,0xDEA9,INVALC, 0xDEA8,0xDEA7,0xBAB9,0xE2C9,INVALC,0xE2C8,0xBABA,0xE2C7, 0xE673,INVALC,0xE674,0xBCF9,INVALC,0xEA59,0xEA5A,INVALC, INVALC,0xF272,0xC37D,0xF271,0xF270,0xF26E,0xF26F,0xC4EB, 0xF46C,0xF6EE,0xF8F7,INVALC,0xA4FC,INVALC,0xC9A5,0xA5C7, 0xC9A6,INVALC,INVALC,INVALC,0xCA43,0xCA44,INVALC,INVALC, INVALC,INVALC,0xCB66,INVALC,INVALC,0xCB62,INVALC,0xCB61, 0xAAAC,0xCB65,0xA867,0xCB63,0xA866,0xCB67,0xCB64,INVALC, INVALC,0xCD5F,0xCFBE,0xCD5D,0xCD64,INVALC,0xAAAD,INVALC, 0xAAB0,0xCD65,0xCD61,INVALC,0xCD62,INVALC,0xCD5C,0xAAAF, 0xCD5E,0xAAAE,0xCD63,INVALC,0xCD60,INVALC,INVALC,0xCFC2, 0xACBD,0xACBE,INVALC,0xCFC5,0xCFBF,INVALC,0xCFC4,INVALC, 0xCFC0,0xACBC,0xCFC3,0xCFC1,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0xD2A8,0xD2A5,INVALC,0xD2A7,0xAF58, 0xAF57,0xAF55,0xD2A4,0xD2A9,0xAF54,0xAF56,0xD2A6,0xD667, /* Block 116, Array index 0x3400 */ 0xD2A3,0xD2AA,INVALC,INVALC,INVALC,INVALC,INVALC,0xD662, 0xD666,INVALC,0xD665,0xDA6E,0xDA79,INVALC,INVALC,0xD668, INVALC,0xD663,0xDA6D,0xB274,INVALC,INVALC,0xB273,0xD661, 0xD664,0xB275,INVALC,0xB272,0xB271,0xD660,0xD669,INVALC, INVALC,INVALC,0xDA70,0xDA77,INVALC,0xB554,0xDA76,0xDA73, INVALC,0xB556,INVALC,INVALC,INVALC,0xDA75,INVALC,INVALC, 0xDA6F,0xDA71,0xDA74,0xDA72,0xB555,0xDA78,0xB553,0xB7DF, INVALC,INVALC,0xDEAD,0xDEAC,0xDEAA,INVALC,0xB7E2,0xB7E1, 0xDEAE,INVALC,0xDEAB,0xE2CA,0xBABB,0xB7E0,INVALC,INVALC, INVALC,0xDEB0,0xDEAF,INVALC,0xE2CD,0xE2CB,0xBCFA,INVALC, 0xBABC,0xE2CC,0xE676,INVALC,INVALC,INVALC,INVALC,0xBCFB, 0xE675,0xE67E,0xE67D,0xE67B,INVALC,0xE67A,0xE677,0xE678, 0xE679,0xE67C,0xE6A1,INVALC,INVALC,0xEA5F,0xEA5C,0xEA5D, 0xBF57,0xEA5B,0xEA61,0xEA60,0xEA5E,INVALC,0xED64,0xED65, 0xC0F1,INVALC,0xC0F2,0xED63,INVALC,0xC279,0xEFFE,0xC278, 0xC37E,INVALC,0xC3A1,0xC46D,0xF46E,0xF46D,0xF5DD,0xF6EF, 0xC57A,0xF7E8,0xF7E7,0xF7E9,0xA5C8,0xCFC6,0xAF59,0xB276, 0xD66A,0xA5C9,0xC9A7,0xA4FD,INVALC,INVALC,0xCA45,INVALC, INVALC,INVALC,0xCB6C,0xCB6A,0xCB6B,0xCB68,0xA868,0xCB69, INVALC,INVALC,INVALC,INVALC,INVALC,0xCD6D,INVALC,0xAAB3, 0xCD6B,0xCD67,0xCD6A,INVALC,0xCD66,0xAAB5,0xCD69,INVALC, 0xAAB2,0xAAB1,INVALC,0xAAB4,0xCD6C,0xCD68,INVALC,INVALC, INVALC,INVALC,0xACC2,0xACC5,0xCFCE,0xCFCD,0xCFCC,0xACBF, 0xCFD5,0xCFCB,INVALC,0xACC1,0xD2AF,INVALC,0xCFD2,0xCFD0, 0xACC4,INVALC,0xCFC8,0xCFD3,INVALC,0xCFCA,0xCFD4,0xCFD1, 0xCFC9,INVALC,0xACC0,0xCFD6,0xCFC7,0xACC3,INVALC,INVALC, INVALC,INVALC,0xD2B4,0xD2AB,0xD2B6,INVALC,0xD2AE,0xD2B9, 0xD2BA,0xD2AC,0xD2B8,0xD2B5,0xD2B3,0xD2B7,0xAF5F,INVALC, 0xAF5D,INVALC,INVALC,0xD2B1,INVALC,0xD2AD,INVALC,0xD2B0, 0xD2BB,0xD2B2,0xAF5E,0xCFCF,INVALC,0xAF5A,0xAF5C,INVALC, INVALC,INVALC,INVALC,INVALC,0xD678,0xD66D,0xD66B,INVALC, 0xD66C,INVALC,0xD673,INVALC,0xD674,0xD670,0xB27B,0xD675, /* Block 117, Array index 0x3500 */ 0xD672,0xD66F,INVALC,0xB279,0xD66E,0xB277,0xB27A,0xD671, 0xD679,0xAF5B,0xB278,0xD677,0xD676,0xB27C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xDA7E,INVALC, INVALC,INVALC,0xDAA1,0xB560,INVALC,0xDAA7,INVALC,INVALC, 0xDAA9,0xDAA2,0xB55A,0xDAA6,0xDAA5,0xB55B,0xB561,INVALC, 0xB562,0xDAA8,0xB558,0xDA7D,0xDA7B,0xDAA3,0xDA7A,0xB55F, 0xDA7C,0xDAA4,0xDAAA,0xB559,0xB55E,0xB55C,0xB55D,INVALC, INVALC,INVALC,0xB557,INVALC,INVALC,INVALC,INVALC,0xB7E9, 0xDEB7,0xB7E8,0xDEBB,INVALC,0xDEB1,INVALC,0xDEBC,INVALC, INVALC,INVALC,0xDEB2,0xDEB3,INVALC,0xDEBD,0xDEBA,0xDEB8, 0xDEB9,0xDEB5,0xDEB4,INVALC,0xDEBE,0xB7E5,INVALC,0xDEB6, INVALC,0xB7EA,0xB7E4,0xB7EB,0xB7EC,INVALC,0xB7E7,0xB7E6, INVALC,INVALC,0xE2CE,0xBABE,0xBABD,INVALC,INVALC,0xE2D3, INVALC,0xBCFC,0xBABF,INVALC,INVALC,0xBAC1,0xE2D4,0xB7E3, 0xBAC0,0xE2D0,0xE2D2,0xE2CF,INVALC,0xE2D1,INVALC,INVALC, INVALC,0xE6AB,INVALC,INVALC,0xE6AA,0xE6A7,0xBD40,0xEA62, 0xBD41,0xE6A6,INVALC,0xBCFE,INVALC,0xE6A8,0xE6A5,0xE6A2, 0xE6A9,0xE6A3,0xE6A4,0xBCFD,INVALC,INVALC,INVALC,INVALC, 0xED69,INVALC,0xEA66,INVALC,0xEA65,0xEA67,INVALC,0xED66, 0xBF5A,INVALC,0xEA63,INVALC,0xBF58,INVALC,0xBF5C,0xBF5B, 0xEA64,0xEA68,INVALC,0xBF59,INVALC,0xED6D,0xC0F5,0xC27A, 0xC0F6,0xC0F3,0xED6A,0xED68,INVALC,0xED6B,INVALC,0xED6E, 0xC0F4,0xED6C,0xED67,INVALC,INVALC,0xF042,0xF045,0xF275, 0xF040,INVALC,0xF46F,0xF046,INVALC,0xC3A2,0xF044,0xC27B, 0xF041,0xF043,0xF047,0xF276,INVALC,0xF274,INVALC,INVALC, INVALC,INVALC,0xC3A3,0xF273,INVALC,INVALC,INVALC,0xC46E, INVALC,INVALC,INVALC,INVALC,0xC4ED,0xF6F1,0xC4EC,0xF6F3, 0xF6F0,0xF6F2,0xC5D0,0xF8B2,0xA5CA,0xCD6E,0xD2BC,0xD2BD, 0xB27D,0xDEBF,0xBF5D,0xC3A4,0xC57B,0xF8B3,0xA5CB,INVALC, 0xCD6F,0xA260,INVALC,INVALC,0xCFD7,INVALC,0xCFD8,INVALC, INVALC,INVALC,INVALC,INVALC,0xD2BE,0xD2BF,0xB27E,0xB2A1, INVALC,INVALC,INVALC,0xDAAB,INVALC,0xDEC2,0xDEC1,0xDEC0, /* Block 118, Array index 0x3600 */ 0xE2D5,INVALC,0xE2D6,0xE2D7,0xBAC2,INVALC,INVALC,0xE6AD, 0xE6AC,INVALC,INVALC,0xEA69,0xBF5E,0xBF5F,INVALC,0xED72, 0xED6F,0xED70,0xED71,0xF049,0xF048,0xC27C,0xF277,0xF5DE, 0xA5CC,INVALC,0xACC6,INVALC,0xB2A2,0xDEC3,INVALC,0xA5CD, INVALC,0xD2C0,0xB2A3,INVALC,INVALC,0xB563,0xB564,INVALC, 0xA5CE,0xA5CF,0xCA46,0xA86A,0xA869,0xACC7,0xCFD9,0xDAAC, 0xA5D0,0xA5D1,0xA5D2,0xA5D3,INVALC,INVALC,INVALC,0xA86B, 0xA86C,0xCB6E,0xCB6D,INVALC,INVALC,0xAAB6,0xCD72,0xCD70, 0xCD71,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xCFDA, 0xCFDB,INVALC,INVALC,0xACCB,0xACC9,INVALC,0xACCA,0xACC8, INVALC,INVALC,INVALC,INVALC,0xAF60,INVALC,INVALC,INVALC, INVALC,0xAF64,0xAF63,0xD2C1,0xAF62,0xAF61,INVALC,0xD2C2, INVALC,INVALC,0xB2A6,0xD67B,0xD67A,0xB2A4,0xB2A5,INVALC, INVALC,INVALC,0xB566,0xB565,0xDAAE,INVALC,INVALC,0xDAAD, 0xB2A7,INVALC,INVALC,INVALC,INVALC,INVALC,0xB7ED,0xDEC5, 0xB7EE,0xDEC4,INVALC,INVALC,INVALC,0xE2D8,0xE6AE,0xBD42, 0xEA6A,INVALC,INVALC,INVALC,0xED73,INVALC,0xC3A6,0xC3A5, INVALC,INVALC,0xC57C,0xA5D4,0xCD73,INVALC,INVALC,0xB2A8, 0xE2D9,0xBAC3,INVALC,INVALC,0xCB6F,0xCB70,INVALC,INVALC, 0xCD74,0xAAB8,0xAAB9,INVALC,INVALC,0xAAB7,INVALC,INVALC, INVALC,INVALC,0xACCF,0xACD0,0xACCD,0xACCE,INVALC,0xCFDC, INVALC,INVALC,0xCFDD,0xACCC,INVALC,INVALC,INVALC,INVALC, 0xD2C3,INVALC,0xAF68,0xAF69,INVALC,0xB2AB,0xD2C9,INVALC, 0xAF6E,0xAF6C,0xD2CA,0xD2C5,0xAF6B,0xAF6A,0xAF65,0xD2C8, 0xD2C7,0xD2C4,0xAF6D,INVALC,0xD2C6,0xAF66,INVALC,0xAF67, INVALC,INVALC,0xB2AC,0xD6A1,0xD6A2,0xB2AD,0xD67C,0xD67E, 0xD6A4,0xD6A3,0xD67D,INVALC,0xB2A9,0xB2AA,INVALC,0xDAB6, 0xB56B,0xB56A,0xDAB0,0xB568,INVALC,0xDAB3,0xB56C,0xDAB4, 0xB56D,0xDAB1,0xB567,0xB569,0xDAB5,INVALC,0xDAB2,0xDAAF, INVALC,INVALC,INVALC,INVALC,INVALC,0xDED2,INVALC,0xDEC7, 0xB7F0,0xB7F3,0xB7F2,0xB7F7,0xB7F6,0xDED3,0xDED1,0xDECA, 0xDECE,0xDECD,0xB7F4,0xDED0,0xDECC,0xDED4,0xDECB,0xB7F5, /* Block 119, Array index 0x3700 */ 0xB7EF,0xB7F1,INVALC,0xDEC9,INVALC,INVALC,INVALC,INVALC, 0xE2DB,0xBAC7,0xE2DF,0xBAC6,0xE2DC,0xBAC5,INVALC,0xDEC8, 0xDECF,0xE2DE,INVALC,0xBAC8,0xE2E0,0xE2DD,0xE2DA,INVALC, INVALC,0xE6B1,0xE6B5,0xE6B7,0xE6B3,0xE6B2,0xE6B0,0xBD45, 0xBD43,0xBD48,0xBD49,0xE6B4,0xBD46,0xE6AF,0xBD47,0xBAC4, 0xE6B6,0xBD44,INVALC,INVALC,INVALC,0xEA6C,INVALC,0xEA6B, 0xEA73,0xEA6D,0xEA72,0xEA6F,0xBF60,0xEA71,INVALC,INVALC, 0xBF61,INVALC,0xBF62,INVALC,0xEA70,0xEA6E,INVALC,INVALC, INVALC,INVALC,0xC0F8,0xED74,INVALC,INVALC,0xC0F7,0xED77, 0xED75,0xED76,INVALC,INVALC,0xC0F9,INVALC,INVALC,INVALC, 0xF04D,INVALC,0xC2A1,0xF04E,INVALC,INVALC,0xC27D,0xF04F, 0xC27E,0xF04C,0xF050,INVALC,0xF04A,INVALC,INVALC,0xC3A7, 0xF278,0xC3A8,0xC46F,INVALC,0xF04B,0xC470,INVALC,INVALC, INVALC,0xC4EE,0xF5DF,INVALC,0xC57E,0xF6F4,0xC57D,INVALC, 0xF7EA,0xC5F5,0xC5F6,INVALC,INVALC,0xF9CC,INVALC,INVALC, 0xACD1,0xCFDE,INVALC,0xB56E,0xB56F,0xA5D5,0xA6CA,0xCA47, INVALC,0xCB71,0xA86D,INVALC,0xAABA,INVALC,0xACD2,0xACD3, 0xACD4,0xD6A6,0xD2CB,0xAF6F,INVALC,INVALC,0xB2AE,0xD6A5, INVALC,INVALC,0xDAB8,0xB571,INVALC,0xDAB7,0xB570,INVALC, INVALC,0xDED5,0xBD4A,0xE6BB,0xE6B8,0xE6B9,0xE6BA,INVALC, INVALC,INVALC,INVALC,INVALC,0xED78,INVALC,0xF051,INVALC, INVALC,INVALC,0xF471,0xF470,INVALC,0xF6F5,0xA5D6,0xCD75, 0xAF70,INVALC,INVALC,INVALC,0xB572,0xDED6,INVALC,INVALC, 0xE2E1,INVALC,0xBD4B,0xEA74,INVALC,0xF052,0xF472,0xA5D7, INVALC,INVALC,0xAABB,0xACD7,0xCFDF,0xACD8,0xACD6,INVALC, 0xACD5,0xD2CC,0xAF71,INVALC,INVALC,0xAF72,0xAF73,INVALC, INVALC,INVALC,0xB2B0,0xD6A7,0xB2AF,INVALC,INVALC,INVALC, INVALC,INVALC,0xDAB9,0xB2B1,0xB573,0xDED7,0xB7F8,0xB7F9, INVALC,0xBAC9,INVALC,0xBACA,0xBD4C,0xBF64,0xEA75,0xBF63, INVALC,0xED79,0xC0FA,INVALC,0xF053,0xF473,0xA5D8,0xA86E, 0xCD78,0xCD77,0xAABC,0xCD76,0xAABD,0xCD79,INVALC,0xCFE5, 0xACDB,0xACDA,0xCFE7,0xCFE6,0xACDF,INVALC,0xACDE,INVALC, /* Block 120, Array index 0x3800 */ INVALC,0xACD9,INVALC,0xCFE1,0xCFE2,0xCFE3,INVALC,0xACE0, 0xCFE0,0xACDC,0xCFE4,0xACDD,INVALC,INVALC,INVALC,INVALC, 0xD2CF,0xD2D3,0xD2D1,0xD2D0,INVALC,0xD2D4,INVALC,INVALC, INVALC,0xD2D5,0xD2D6,0xD2CE,INVALC,0xD2CD,INVALC,0xAF75, 0xAF76,INVALC,0xD2D7,0xD2D2,INVALC,0xD6B0,INVALC,0xD2D8, 0xAF77,0xAF74,INVALC,INVALC,INVALC,0xD6AA,INVALC,0xD6A9, INVALC,0xD6AB,0xD6AC,0xD6AE,0xD6AD,0xD6B2,0xB2B5,0xB2B2, 0xB2B6,0xD6A8,0xB2B7,0xD6B1,0xB2B4,0xD6AF,0xB2B3,INVALC, INVALC,INVALC,INVALC,INVALC,0xDABC,0xDABE,0xDABA,0xDABB, INVALC,INVALC,0xDABF,0xDAC1,0xDAC2,0xDABD,0xDAC0,0xB574, INVALC,INVALC,0xDEDB,INVALC,0xDEE0,0xDED8,0xDEDC,INVALC, INVALC,0xDEE1,0xDEDD,0xB7FA,0xB843,INVALC,0xB7FD,0xDED9, 0xDEDA,0xBACE,0xB846,0xB7FE,INVALC,0xB844,0xB7FC,0xDEDF, 0xB845,0xDEDE,0xB841,0xB7FB,0xB842,0xDEE2,0xE2E6,0xE2E8, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xB840,INVALC,INVALC,0xE2E3,0xBACC,0xE2E9,0xBACD, 0xE2E7,0xE2E2,0xE2E5,0xE2EA,0xBACB,0xE2E4,INVALC,0xBD4E, 0xE6BF,0xE6BE,INVALC,0xBD51,0xBD4F,0xE6BC,0xBD4D,0xE6BD, INVALC,0xBD50,INVALC,INVALC,INVALC,0xEA7D,INVALC,0xEAA1, INVALC,0xEA7E,0xEA76,0xEA7A,0xEA79,0xEA77,0xBF66,0xBF67, 0xBF65,0xEA78,0xEA7B,0xEA7C,INVALC,0xBF68,INVALC,0xC140, 0xEDA3,INVALC,0xC0FC,0xED7B,0xC0FE,0xC141,INVALC,INVALC, 0xC0FD,0xEDA2,0xED7C,0xC0FB,0xEDA1,0xED7A,0xED7E,0xED7D, INVALC,INVALC,0xF055,0xC2A4,0xC2A5,0xC2A2,INVALC,0xC2A3, INVALC,INVALC,0xF054,INVALC,0xF27B,INVALC,INVALC,0xC3A9, INVALC,0xF279,0xF27A,INVALC,0xF474,0xF477,0xF475,0xF476, 0xF5E0,INVALC,INVALC,0xC4EF,0xF7EB,0xF8B4,INVALC,0xC5F7, 0xF8F8,0xF8F9,0xC666,0xA5D9,0xACE1,INVALC,0xDAC3,INVALC, 0xDEE3,INVALC,0xA5DA,0xA86F,INVALC,0xAABE,INVALC,0xCFE8, 0xCFE9,0xAF78,INVALC,INVALC,0xDAC4,0xB575,0xB847,0xC142, 0xEDA4,0xF27C,0xF478,0xA5DB,INVALC,INVALC,INVALC,0xCDA1, 0xCD7A,0xCD7C,0xCD7E,0xCD7D,0xCD7B,0xAABF,INVALC,INVALC, /* Block 121, Array index 0x3900 */ INVALC,INVALC,0xACE2,0xCFF2,INVALC,0xCFED,0xCFEA,INVALC, INVALC,0xCFF1,INVALC,INVALC,0xACE4,0xACE5,0xCFF0,0xCFEF, 0xCFEE,0xCFEB,0xCFEC,0xCFF3,0xACE3,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xAF7C,INVALC,0xAFA4, 0xAFA3,0xD2E1,0xD2DB,0xD2D9,INVALC,0xAFA1,0xD6B9,0xAF7A, 0xD2DE,0xD2E2,0xD2E4,0xD2E0,0xD2DA,0xAFA2,0xD2DF,0xD2DD, 0xAF79,0xD2E5,0xAFA5,0xD2E3,0xAF7D,0xD2DC,INVALC,0xAF7E, 0xAF7B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0xB2B9,INVALC,0xD6BA,INVALC,INVALC, 0xD6B3,0xD6B5,0xD6B7,INVALC,0xD6B8,0xD6B6,0xB2BA,INVALC, 0xD6BB,INVALC,0xD6B4,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0xDAC8,0xB576,0xDAD0,INVALC, 0xDAC5,INVALC,0xDAD1,INVALC,0xDAC6,0xDAC7,INVALC,INVALC, 0xDACF,0xDACE,0xDACB,0xB2B8,0xB577,0xDAC9,0xDACC,0xB578, 0xDACD,0xDACA,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xDEEE,INVALC,0xDEF2,0xB84E,INVALC,0xE2F0,0xB851, 0xDEF0,INVALC,INVALC,0xDEED,0xDEE8,0xDEEA,0xDEEB,0xDEE4, INVALC,0xB84D,INVALC,INVALC,0xB84C,INVALC,0xB848,0xDEE7, INVALC,0xB84F,INVALC,0xB850,0xDEE6,0xDEE9,0xDEF1,0xB84A, 0xB84B,0xDEEF,0xDEE5,INVALC,INVALC,INVALC,0xE2F2,0xBAD0, 0xE2F4,0xDEEC,0xE2F6,0xBAD4,0xE2F7,0xE2F3,INVALC,0xBAD1, 0xE2EF,0xBAD3,0xE2EC,0xE2F1,0xE2F5,0xE2EE,INVALC,INVALC, 0xB849,INVALC,0xE2EB,0xBAD2,0xE2ED,INVALC,INVALC,INVALC, INVALC,INVALC,0xBD54,0xE6C1,0xBD58,INVALC,0xBD56,INVALC, INVALC,0xBACF,INVALC,0xE6C8,0xE6C9,0xBD53,INVALC,INVALC, 0xE6C7,0xE6CA,0xBD55,0xBD52,0xE6C3,0xE6C0,0xE6C5,0xE6C2, 0xBD59,0xE6C4,INVALC,INVALC,0xE6C6,0xBD57,INVALC,INVALC, INVALC,INVALC,0xBF6A,0xEAA8,INVALC,0xEAA2,0xEAA6,0xEAAC, 0xEAAD,0xEAA9,0xEAAA,0xEAA7,INVALC,0xEAA4,INVALC,0xBF6C, 0xBF69,0xEAA3,0xEAA5,INVALC,0xBF6B,0xEAAB,INVALC,0xC146, INVALC,INVALC,0xEDAA,0xEDA5,0xC145,INVALC,INVALC,0xC143, INVALC,0xEDAC,0xC144,0xEDA8,0xEDA9,0xEDA6,0xEDAD,0xF056, /* Block 122, Array index 0x3A00 */ INVALC,0xC147,0xEDA7,INVALC,0xEDAE,0xEDAB,INVALC,INVALC, INVALC,0xF05A,INVALC,INVALC,0xF057,INVALC,0xC2A6,INVALC, 0xF05B,0xF05D,0xF05C,0xF058,0xF059,INVALC,INVALC,0xF2A3, INVALC,0xC3AA,INVALC,0xF27E,0xF2A2,0xF27D,0xF2A4,INVALC, INVALC,0xF2A1,INVALC,0xF47A,0xF47D,0xF479,0xC471,0xF47B, 0xF47C,0xF47E,0xC472,0xC474,0xC473,0xF5E1,INVALC,0xF5E3, INVALC,0xF5E2,INVALC,INVALC,INVALC,0xF6F6,INVALC,INVALC, 0xF8B5,0xF8FA,0xA5DC,INVALC,INVALC,0xCB72,0xAAC0,0xCDA3, 0xAAC1,0xAAC2,0xCDA2,INVALC,0xCFF8,0xCFF7,0xACE6,0xACE9, 0xACE8,0xACE7,0xCFF4,0xCFF6,0xCFF5,INVALC,INVALC,0xD2E8, 0xAFA7,0xD2EC,0xD2EB,0xD2EA,0xD2E6,0xAFA6,0xAFAA,0xAFAD, INVALC,INVALC,0xAFAE,0xD2E7,0xD2E9,0xAFAC,0xAFAB,0xAFA9, 0xAFA8,0xD6C2,INVALC,0xD6C0,0xD6BC,0xB2BB,INVALC,0xD6BD, 0xB2BC,0xD6BE,0xD6BF,0xD6C1,INVALC,0xB2BD,INVALC,INVALC, 0xDAD5,INVALC,0xDAD4,0xDAD3,0xDAD2,INVALC,INVALC,INVALC, INVALC,0xDEF6,0xB852,INVALC,0xDEF3,0xDEF5,INVALC,0xB853, INVALC,0xB854,0xDEF4,INVALC,INVALC,INVALC,INVALC,INVALC, 0xE341,INVALC,0xE2F9,0xE2FA,INVALC,0xBAD7,0xBAD5,0xBAD6, 0xE343,INVALC,0xE342,0xE2FE,0xE2FD,0xE2FC,0xE2FB,0xE340, 0xE2F8,INVALC,0xE6CB,0xE6D0,0xE6CE,INVALC,INVALC,INVALC, 0xE6CD,0xE6CC,0xE6CF,INVALC,0xEAAE,INVALC,0xBF6D,0xC148, 0xEDB0,INVALC,0xC149,0xEDAF,0xF05F,0xF05E,0xC2A7,INVALC, 0xF2A5,0xC3AB,0xF4A1,0xC5A1,0xF6F7,INVALC,0xF8B7,0xF8B6, 0xC9A8,0xACEA,0xACEB,0xD6C3,INVALC,0xB856,0xA5DD,0xA872, 0xA871,0xA870,INVALC,INVALC,INVALC,0xCDA4,INVALC,INVALC, 0xAAC4,0xAAC3,INVALC,0xACEE,INVALC,0xCFFA,0xCFFD,0xCFFB, INVALC,0xACEC,0xACED,INVALC,INVALC,0xCFF9,0xCFFC,INVALC, 0xAFB5,INVALC,INVALC,INVALC,0xD2F3,0xD2F5,0xD2F4,0xAFB2, 0xD2EF,INVALC,INVALC,0xAFB0,0xAFAF,INVALC,0xAFB3,0xAFB1, INVALC,0xAFB4,0xD2F2,0xD2ED,0xD2EE,0xD2F1,0xD2F0,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xD6C6,0xD6C7, 0xD6C5,INVALC,0xD6C4,0xB2BE,INVALC,INVALC,INVALC,INVALC, /* Block 123, Array index 0x3B00 */ 0xB57D,INVALC,0xDAD6,0xDAD8,0xDADA,0xB57C,INVALC,INVALC, 0xB57A,INVALC,0xDAD7,0xB57B,0xDAD9,0xB579,INVALC,INVALC, 0xDF41,0xDEF7,0xDEFA,0xDEFE,0xB85A,0xDEFC,INVALC,0xDEFB, 0xDEF8,0xDEF9,0xB858,0xDF40,0xB857,INVALC,0xB85C,0xB85B, 0xB859,INVALC,0xDEFD,INVALC,INVALC,INVALC,0xE349,INVALC, 0xE348,INVALC,INVALC,0xE344,INVALC,INVALC,0xBAD8,0xE347, 0xE346,0xBAD9,INVALC,INVALC,INVALC,INVALC,INVALC,0xBD5E, INVALC,0xE6D2,INVALC,0xBD5F,0xBD5B,0xBD5D,INVALC,0xBD5A, 0xBD5C,INVALC,INVALC,INVALC,0xEAAF,INVALC,0xBF70,0xEAB1, 0xEAB0,INVALC,0xE345,0xBF72,0xBF71,0xBF6E,0xBF6F,INVALC, INVALC,INVALC,INVALC,INVALC,0xEDB5,INVALC,0xEDB3,0xC14A, 0xEDB4,INVALC,0xEDB6,0xEDB2,0xEDB1,INVALC,INVALC,0xF060, 0xC2AA,0xC2A8,0xC2A9,INVALC,INVALC,INVALC,INVALC,0xF2A6, 0xF2A7,0xC3AD,INVALC,0xC3AC,0xF4A3,0xF4A4,0xF4A2,INVALC, 0xF6F8,0xF6F9,INVALC,INVALC,0xA5DE,0xCA48,0xA873,INVALC, 0xCDA5,0xAAC6,0xAAC5,0xCDA6,INVALC,INVALC,0xD040,0xACEF, 0xCFFE,0xACF0,INVALC,INVALC,0xAFB6,0xD2F8,0xD2F6,0xD2FC, 0xAFB7,0xD2F7,0xD2FB,0xD2F9,0xD2FA,INVALC,INVALC,0xD6C8, 0xD6CA,INVALC,0xB2BF,INVALC,0xD6C9,0xB2C0,0xB5A2,0xB5A1, 0xB57E,0xDADB,INVALC,INVALC,INVALC,INVALC,0xDF44,0xB85D, 0xB85E,INVALC,0xDF43,0xDF42,INVALC,INVALC,INVALC,INVALC, 0xE34A,0xBADB,0xBADA,0xE34B,0xE34C,INVALC,0xBD61,0xBD60, INVALC,0xEAB5,0xE6D3,0xE6D5,0xE6D4,0xEAB4,0xEAB2,0xEAB6, 0xEAB3,INVALC,0xBF73,INVALC,INVALC,INVALC,0xEDB7,0xC14B, 0xEDB8,0xEDB9,INVALC,INVALC,0xC2AB,0xC2AC,INVALC,0xC475, INVALC,INVALC,0xC5D1,0xA5DF,INVALC,INVALC,INVALC,INVALC, INVALC,0xD041,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xD2FD,0xAFB8,INVALC,INVALC,INVALC,INVALC,INVALC,0xB3BA, 0xB3B9,INVALC,INVALC,0xB5A4,0xDADD,0xB5A3,0xDADC,INVALC, INVALC,INVALC,INVALC,0xDF45,INVALC,0xBADC,0xE34D,0xBADD, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xC476,0xF4A5, INVALC,0xA6CB,0xAAC7,0xCDA7,INVALC,0xACF2,INVALC,0xACF1, /* Block 124, Array index 0x3C00 */ 0xD042,0xD043,INVALC,INVALC,0xD340,0xD342,0xAFB9,INVALC, 0xD344,0xD347,0xD345,INVALC,INVALC,INVALC,0xD346,0xD343, 0xD2FE,0xAFBA,0xD348,0xD341,INVALC,INVALC,INVALC,INVALC, 0xD6D3,0xB2C6,0xD6DC,0xB2C3,INVALC,0xD6D5,0xB2C7,INVALC, 0xB2C1,INVALC,0xD6D0,0xD6DD,0xD6D1,0xD6CE,0xB2C5,INVALC, 0xB2C2,INVALC,0xD6D4,0xD6D7,0xB2C4,0xD6D8,0xB2C8,0xD6D9, 0xD6CF,0xD6D6,0xD6DA,0xD6D2,0xD6CD,0xD6CB,INVALC,INVALC, 0xD6DB,INVALC,INVALC,0xDADF,INVALC,INVALC,INVALC,INVALC, 0xDAE4,INVALC,INVALC,INVALC,0xDAE0,0xDAE6,0xB5A7,0xD6CC, 0xDAE1,0xB5A5,0xDADE,0xB5AC,0xDAE2,0xB5AB,0xDAE3,0xB5AD, 0xB5A8,0xB5AE,0xB5A9,INVALC,0xB5AA,INVALC,0xB5A6,INVALC, 0xDAE5,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xB861,0xDF50,INVALC,0xDF53,0xDF47,0xDF4C,0xDF46,0xB863, INVALC,0xDF4A,INVALC,INVALC,INVALC,0xDF48,0xB862,INVALC, 0xDF4F,0xDF4E,0xDF4B,0xDF4D,0xDF49,0xBAE1,0xDF52,0xB85F, 0xDF51,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0xE35D,INVALC,0xBAE8,0xE358,INVALC,0xBAE7, 0xE34E,INVALC,0xE350,0xBAE0,0xE355,0xE354,0xE357,0xBAE5, 0xE352,0xE351,INVALC,INVALC,0xBAE4,0xBADF,0xE353,0xBAE2, 0xE359,0xE35B,INVALC,0xE356,0xE34F,0xBAE3,INVALC,INVALC, 0xBD69,0xBADE,INVALC,INVALC,0xE35C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0xE6D9,0xBD62,INVALC,0xE6DB, INVALC,0xBD63,INVALC,INVALC,0xBD65,0xE6DE,INVALC,0xE6D6, 0xBAE6,0xE6DC,INVALC,INVALC,INVALC,INVALC,0xE6D8,INVALC, 0xB860,0xBD68,INVALC,INVALC,0xBD64,INVALC,0xBD66,0xBD67, INVALC,0xBF76,0xE6DD,0xE6D7,0xBD6A,INVALC,0xE6DA,INVALC, INVALC,INVALC,INVALC,INVALC,0xEAC0,0xEABB,INVALC,INVALC, 0xEAC5,0xBF74,0xEABD,0xBF78,0xEAC3,0xEABA,0xEAB7,0xEAC6, 0xC151,0xBF79,0xEAC2,0xEAB8,0xBF77,0xEABC,0xBF7B,0xEAB9, 0xEABE,0xBF7A,0xEAC1,0xEAC4,INVALC,INVALC,INVALC,INVALC, 0xEDCB,0xEDCC,0xEDBC,0xEDC3,0xEDC1,INVALC,INVALC,0xC14F, 0xEDC8,0xEABF,INVALC,0xEDBF,INVALC,0xEDC9,0xC14E,0xEDBE, /* Block 125, Array index 0x3D00 */ 0xEDBD,0xEDC7,0xEDC4,0xEDC6,INVALC,0xEDBA,0xEDCA,0xC14C, INVALC,0xEDC5,0xEDCE,0xEDC2,0xC150,0xC14D,0xEDC0,0xEDBB, 0xEDCD,0xBF75,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xF063,INVALC,INVALC,0xF061,0xF067,0xC2B0,0xF065, 0xF064,0xC2B2,0xF06A,0xC2B1,INVALC,0xF06B,0xF068,0xC2AE, 0xF069,0xF062,0xC2AF,0xC2AD,0xF2AB,0xF066,INVALC,INVALC, 0xF06C,INVALC,INVALC,0xF2A8,INVALC,INVALC,INVALC,0xC3B2, 0xC3B0,0xF2AA,INVALC,0xF2AC,0xF2A9,0xC3B1,0xC3AE,0xC3AF, 0xC3B3,INVALC,INVALC,0xC478,INVALC,0xF4AA,INVALC,0xF4A9, 0xF4A7,0xF4A6,0xF4A8,INVALC,0xC477,0xC479,INVALC,INVALC, 0xC4F0,INVALC,INVALC,0xF5E5,0xF5E4,INVALC,INVALC,0xF6FA, INVALC,0xF6FC,0xF6FE,0xF6FD,0xF6FB,INVALC,INVALC,0xC5A3, 0xC5A2,INVALC,INVALC,0xC5D3,0xC5D2,0xC5D4,0xF7ED,0xF7EC, INVALC,0xF8FB,0xF8B8,0xF8FC,0xC658,INVALC,0xC659,0xF96D, INVALC,INVALC,0xC67E,0xA6CC,INVALC,0xCDA8,INVALC,INVALC, 0xD045,0xD046,0xD044,INVALC,INVALC,0xACF3,INVALC,0xD047, 0xD048,0xD049,INVALC,INVALC,0xD349,0xD34F,INVALC,INVALC, 0xD34D,0xAFBB,0xD34B,INVALC,0xD34C,0xD34E,INVALC,INVALC, INVALC,0xD34A,0xB2C9,INVALC,0xD6DE,0xB2CB,0xD6E0,0xB2CA, 0xD6DF,INVALC,INVALC,INVALC,INVALC,INVALC,0xDAE8,0xB5AF, INVALC,0xDAEA,0xDAE7,0xD6E1,INVALC,0xB5B0,INVALC,INVALC, 0xDAE9,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xDF56, INVALC,0xB864,0xDF54,0xB865,0xDF55,0xB866,INVALC,INVALC, INVALC,0xBAE9,0xE361,0xE35E,0xE360,0xBAEA,0xBAEB,0xE35F, INVALC,INVALC,INVALC,INVALC,INVALC,0xE6DF,INVALC,INVALC, 0xE6E0,INVALC,0xBD6B,0xE6E2,0xE6E1,INVALC,0xA261,INVALC, 0xEACA,0xEACB,0xEAC7,INVALC,0xEAC8,0xBF7C,0xBF7D,0xEAC9, INVALC,0xC157,INVALC,INVALC,0xC153,0xC158,0xC154,0xC156, 0xC152,INVALC,0xC155,INVALC,INVALC,INVALC,INVALC,0xC2B3, 0xEDCF,INVALC,0xF2AE,INVALC,0xF2AD,INVALC,0xF4AB,0xC47A, 0xC47B,0xF741,0xF5E6,INVALC,0xF740,INVALC,0xF8FD,0xF9A4, 0xA6CD,INVALC,INVALC,0xA874,INVALC,0xCDA9,0xAAC8,INVALC, /* Block 126, Array index 0x3E00 */ 0xACF6,0xD04C,0xACF4,0xD04A,0xACF9,0xACF5,0xACFA,0xACF8, 0xD04B,0xACF7,0xAFBF,0xAFBE,0xD35A,0xAFC7,0xD353,0xD359, 0xAFC3,0xD352,0xD358,0xD356,0xAFC2,0xAFC4,0xD355,0xAFBD, 0xD354,0xAFC8,0xAFC5,0xAFC9,0xAFC6,0xD351,0xD350,0xD357, 0xAFC0,0xAFBC,0xAFC1,INVALC,INVALC,INVALC,INVALC,INVALC, 0xD6F0,0xD6E9,INVALC,0xB5B5,0xD6E8,INVALC,0xB2CF,0xB2D6, 0xB2D3,0xB2D9,0xB2D8,0xB2D4,INVALC,0xD6E2,0xD6E5,INVALC, 0xD6E4,0xB2D0,0xD6E6,0xD6EF,0xB2D1,0xD6E3,0xD6EC,0xD6ED, 0xB2D2,0xD6EA,0xB2D7,0xB2CD,0xB2D5,0xD6E7,0xB2CC,0xD6EB, INVALC,INVALC,0xD6EE,INVALC,INVALC,INVALC,0xDAFB,0xDAF2, 0xB5B2,0xDAF9,0xDAF6,0xDAEE,0xDAF7,0xB5B4,0xDAEF,INVALC, 0xDAEB,INVALC,INVALC,0xB86C,0xDAF4,INVALC,0xB5B1,0xDAFA, INVALC,0xB5B8,0xB5BA,0xDAED,INVALC,INVALC,0xB5B9,0xDAF0, 0xB5B3,0xDAF8,0xDAF1,0xDAF5,INVALC,0xDAF3,0xB5B6,0xDAEC, 0xB5BB,0xB2CE,0xB5B7,0xB5BC,INVALC,INVALC,INVALC,INVALC, INVALC,0xB868,0xDF5D,0xDF5F,0xDF61,0xDF65,INVALC,0xDF5B, 0xDF59,0xB86A,INVALC,0xDF60,0xDF64,0xDF5C,0xDF58,INVALC, 0xDF57,INVALC,INVALC,INVALC,0xDF62,0xDF5A,0xDF5E,0xB86B, INVALC,0xB869,0xDF66,0xB867,0xDF63,INVALC,0xE372,INVALC, INVALC,INVALC,INVALC,INVALC,0xBAEE,0xE36A,0xBD78,0xE374, 0xBAF1,0xE378,0xBAF7,0xE365,INVALC,INVALC,0xE375,0xE362, INVALC,0xE377,0xE366,INVALC,0xBAFE,0xBAFB,0xE376,0xE370, 0xBAED,0xBAF5,0xBAF4,INVALC,0xBAF3,0xBAF9,INVALC,0xE363, 0xBAFA,0xE371,0xBAF6,0xBAEC,0xE373,0xBAEF,0xBAF0,0xBAF8, 0xE368,0xE367,0xE364,INVALC,0xE36C,0xE369,0xE36D,0xBAFD, INVALC,0xE379,0xBAF2,0xE36E,0xE36F,INVALC,0xE36B,INVALC, INVALC,INVALC,0xBAFC,INVALC,INVALC,INVALC,INVALC,0xE6E7, 0xBD70,0xBD79,0xBD75,0xE6E4,INVALC,0xBD72,0xBD76,0xE6F0, 0xBD6C,0xE6E8,INVALC,0xBD74,INVALC,INVALC,0xE6EB,0xE6E6, 0xBD73,0xBD77,0xE6E5,INVALC,0xBD71,INVALC,0xE6EF,0xBD6E, 0xE6EE,0xE6ED,0xBD7A,0xE572,0xBD6D,INVALC,0xE6EC,0xE6E3, INVALC,0xBD7B,0xE6EA,0xBD6F,INVALC,INVALC,INVALC,INVALC, /* Block 127, Array index 0x3F00 */ INVALC,INVALC,INVALC,0xE6E9,INVALC,INVALC,INVALC,INVALC, 0xBFA2,0xBFA7,0xBF7E,0xEAD8,0xEACF,0xEADB,0xEAD3,0xEAD9, 0xBFA8,0xBFA1,0xEACC,0xEAD2,0xEADC,0xEAD5,0xEADA,0xEACE, INVALC,INVALC,0xEAD6,0xBFA3,0xEAD4,0xBFA6,0xBFA5,0xEAD0, 0xEAD1,0xEACD,0xEAD7,0xBFA4,0xEADE,0xEADD,INVALC,INVALC, INVALC,0xEDDA,0xEDD6,0xC15F,INVALC,0xEDD0,0xC159,0xC169, 0xEDDC,0xC161,0xC15D,0xEDD3,0xC164,0xC167,0xEDDE,0xC15C, 0xEDD5,0xC165,0xEDE0,0xEDDD,0xEDD1,0xC160,0xC15A,0xC168, 0xEDD8,0xC163,0xEDD2,0xC15E,0xEDDF,0xC162,0xC15B,0xEDD9, 0xC166,0xEDD7,INVALC,INVALC,0xEDDB,INVALC,INVALC,INVALC, 0xF06E,0xF074,0xC2B9,0xF077,0xC2B4,0xC2B5,0xF06F,0xF076, 0xF071,0xC2BA,0xC2B7,INVALC,0xF06D,INVALC,0xC2B6,0xF073, 0xF075,0xC2B8,0xF072,0xF070,INVALC,INVALC,INVALC,INVALC, 0xF2B8,0xC3B7,0xC3B8,0xC3B4,INVALC,0xC3B5,INVALC,0xF2B4, 0xF2B2,INVALC,0xF2B6,0xC3BA,0xF2B7,0xF2B0,0xF2AF,0xF2B3, 0xF2B1,0xC3B6,0xF2B5,0xF4AC,0xC47E,0xC47D,0xF4AD,INVALC, 0xF4AF,0xF4AE,0xC4A1,INVALC,INVALC,INVALC,0xF5EB,0xF5E8, 0xF5E9,INVALC,0xF5E7,0xF5EA,0xC4F2,0xF5EC,INVALC,0xC4F1, INVALC,0xF742,INVALC,0xC5D5,0xC5D7,0xF7EE,0xC5D6,0xF8B9, 0xF940,0xF942,0xF8FE,0xF941,0xC66C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 128, Array index 0x4000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xA6CE,INVALC, 0xACFB,0xD26F,0xAFCA,INVALC,INVALC,0xB2DA,0xDAFC,0xDAFD, INVALC,INVALC,INVALC,0xEADF,0xC16A,0xEDE1,INVALC,INVALC, 0xC2BB,INVALC,0xF2BA,0xF2B9,0xC4A2,0xF5ED,INVALC,0xF743, 0xC5F8,0xCA49,INVALC,INVALC,0xAAC9,0xA875,INVALC,INVALC, 0xD04D,INVALC,INVALC,0xD360,0xD35B,0xD35F,0xD35D,0xAFCB, 0xD35E,0xD35C,INVALC,0xD6F1,INVALC,0xDAFE,0xDB40,0xDF69, 0xDF6A,0xB86E,0xB86F,0xDF68,0xDF6B,0xDF67,0xB86D,INVALC, 0xBB40,INVALC,0xB870,0xE37A,INVALC,0xBD7C,0xE6F1,0xBD7D, INVALC,0xBFA9,0xEAE2,0xEAE0,0xEAE1,0xEDE4,0xEDE3,0xEDE2, INVALC,INVALC,INVALC,0xF2BB,INVALC,0xC3B9,0xF2BC,0xF744, 0xC5F9,0xF8BA,0xA6CF,0xAACB,0xAACA,0xD04F,0xACFC,INVALC, INVALC,0xD04E,0xD362,INVALC,0xAFCC,0xD6F2,0xD361,INVALC, INVALC,INVALC,0xB2DC,0xD6F5,0xD6F3,0xD6F4,0xB2DB,INVALC, 0xDB42,0xDB43,0xDB41,INVALC,0xB873,0xDF6D,0xDF6C,0xDF6E, 0xB872,0xB871,INVALC,INVALC,0xE6F2,0xE6F4,INVALC,0xBD7E, 0xE6F3,0xEAE3,0xBFAA,0xF079,INVALC,0xF078,0xC3BB,0xF2BD, 0xC3BD,0xC3BC,0xF4B0,0xF5EE,0xC4F3,0xA6D0,0xD050,0xACFD, 0xD365,0xAFCE,0xD364,0xD363,INVALC,0xAFCD,INVALC,0xD6FB, INVALC,0xD6FD,0xD6F6,0xD6F7,0xB2DD,0xD6F8,0xB2DE,0xD6FC, 0xD6F9,0xD6FA,0xB2DF,INVALC,0xB5BE,0xB5BF,INVALC,0xDB44, INVALC,INVALC,INVALC,0xDF6F,0xDF70,INVALC,0xE37E,0xBB43, 0xBB41,0xBB42,0xE37B,0xE37C,INVALC,0xE37D,0xE6F9,INVALC, 0xE6FA,0xBDA1,0xE6F7,0xE6F6,0xE6F8,0xE6F5,0xBFAD,0xEAE4, 0xBFAB,0xBFAC,0xEDE6,0xC16B,0xEDE5,0xEFA8,INVALC,0xF07A, 0xF07B,0xC2BC,INVALC,0xC2BD,0xC16C,0xF2BE,0xF2BF,0xF4B1, /* Block 129, Array index 0x4100 */ 0xC4A3,0xA6D1,INVALC,0xA6D2,0xACFE,0xAACC,0xAFCF,0xD051, INVALC,INVALC,INVALC,0xB5C0,0xA6D3,0xAD41,0xD052,0xD053, 0xAD40,0xAD42,0xA6D4,INVALC,0xD054,0xAFD1,0xD366,0xAFD3, 0xAFD0,0xAFD2,INVALC,0xD741,0xB2E0,INVALC,0xD740,0xD6FE, INVALC,0xDF71,INVALC,INVALC,0xE3A1,INVALC,0xBDA2,INVALC, 0xBFAE,0xEAE6,0xEAE5,INVALC,0xEDE7,INVALC,INVALC,INVALC, 0xF5EF,INVALC,INVALC,0xA6D5,0xCB73,0xCDAA,0xAD43,0xD055, INVALC,0xD368,INVALC,INVALC,INVALC,0xAFD4,0xD367,0xAFD5, INVALC,INVALC,INVALC,0xD743,INVALC,INVALC,0xB2E2,0xD742, 0xD744,INVALC,0xB2E1,INVALC,INVALC,INVALC,INVALC,0xDB46, 0xDB47,0xDB45,0xB5C1,INVALC,INVALC,INVALC,0xB874,INVALC, 0xB875,INVALC,0xBB45,INVALC,0xE3A3,0xE3A2,0xBB44,INVALC, INVALC,INVALC,INVALC,INVALC,0xE6FB,INVALC,INVALC,0xE6FC, INVALC,INVALC,INVALC,INVALC,0xEAE7,INVALC,INVALC,0xC170, 0xC16F,0xC16D,0xC16E,0xC171,INVALC,0xF07C,0xC2BF,0xC2BE, 0xF2C0,0xF4B2,INVALC,INVALC,INVALC,0xC5A5,0xC5A4,0xA6D6, INVALC,INVALC,0xD1FB,INVALC,0xB877,0xB5C2,0xB876,0xBB46, INVALC,0xA6D7,0xC9A9,0xA6D8,0xA6D9,INVALC,INVALC,0xCDAB, 0xCB76,INVALC,0xCB77,0xA877,INVALC,0xCB74,0xA876,INVALC, 0xA879,0xCB75,0xA87B,0xA87A,0xCB78,0xA878,INVALC,INVALC, INVALC,0xAAD1,0xAACF,0xCDAD,INVALC,0xAACE,INVALC,INVALC, INVALC,0xAAD3,0xAAD5,0xAAD2,INVALC,0xCDB0,0xCDAC,0xAAD6, INVALC,0xAAD0,0xA87C,INVALC,0xAAD4,0xCDAF,INVALC,INVALC, 0xCDAE,INVALC,0xAACD,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0xD05B,0xAD47,0xAD48,0xD05D,INVALC,0xD057, 0xD05A,0xD063,0xD061,INVALC,0xAD49,0xD067,0xAD4C,0xD064, 0xD05C,0xD059,INVALC,INVALC,0xDB49,0xD062,0xAD44,0xD065, 0xD056,0xD05F,0xAD46,0xAD4B,0xD060,0xAD4F,0xAD4D,INVALC, 0xD058,0xAD4A,INVALC,0xD05E,0xAD4E,0xAD45,0xD066,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xAFDA,INVALC,0xAFE3, 0xAFD8,0xAFD6,0xD36A,0xAFDE,0xAFDB,0xD36C,INVALC,INVALC, 0xAFDD,0xD36B,0xD369,0xD36E,0xAFE2,0xAFE0,0xDB48,INVALC, /* Block 130, Array index 0x4200 */ 0xD36F,0xD36D,0xAFD7,INVALC,INVALC,0xAFD9,0xAFDC,INVALC, 0xAFDF,INVALC,0xAFE1,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xD74E,0xB2E4,INVALC, 0xD745,0xD747,INVALC,0xD748,INVALC,0xD750,0xD74C,0xD74A, INVALC,0xD74D,0xD751,0xB2E5,0xB2E9,0xD746,INVALC,0xD74F, INVALC,0xB2E7,INVALC,0xB2E6,0xD74B,0xD749,INVALC,0xB2E3, 0xB2E8,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xB5C8,0xDB51,INVALC,INVALC,0xDB4F,0xB5CA,INVALC, INVALC,INVALC,INVALC,0xDB4A,0xDFA1,INVALC,0xB5C9,0xDB4E, INVALC,INVALC,0xDB4B,0xB5C5,0xB5CB,0xDB50,0xB5C7,0xDB4D, 0xBB47,0xB5C6,0xDB4C,0xB5CC,0xB5C4,0xB5C3,INVALC,INVALC, INVALC,INVALC,INVALC,0xDF77,0xDF75,INVALC,0xDF7B,INVALC, 0xDF73,0xDFA2,0xDF78,INVALC,0xDF72,0xB87B,0xB8A3,0xDF7D, INVALC,0xDF76,INVALC,0xB87E,INVALC,INVALC,0xB87C,0xDF7E, 0xB879,0xB878,0xDF79,0xB87D,0xB5CD,INVALC,0xDF7C,0xDF74, 0xB87A,0xB8A1,0xB8A2,INVALC,INVALC,INVALC,INVALC,0xBB4C, 0xBB48,INVALC,0xBB4D,0xE3A6,INVALC,INVALC,0xE3A5,0xE3A7, 0xBB4A,0xE3A4,0xBB4B,0xE3AA,0xE3A9,0xE3A8,INVALC,0xBB49, INVALC,INVALC,INVALC,INVALC,INVALC,0xE741,INVALC,0xE744, 0xBDA8,0xE743,0xBDA7,0xBDA3,0xBDA4,0xBDA5,0xE740,0xE6FE, 0xBDA6,INVALC,0xE742,0xE6FD,INVALC,INVALC,0xEAE9,0xEAF3, 0xBFB1,0xBFB0,INVALC,0xEAED,0xEAEF,INVALC,0xEAEA,INVALC, 0xEAEE,0xEAE8,0xEAF1,0xBFAF,0xEAF0,0xEAEC,INVALC,0xEAF2, INVALC,0xEAEB,0xC174,0xEDE8,0xEDEE,0xC178,0xC17A,0xC177, 0xC176,INVALC,0xC175,0xC173,0xEDE9,0xEDEC,0xC172,0xEDED, INVALC,0xC179,0xEDEB,INVALC,0xEDEA,0xC2C0,INVALC,0xC2C1, 0xF0A1,0xF07D,0xF07E,INVALC,INVALC,0xF2C2,INVALC,0xF2C1, 0xC3BE,0xF4B4,0xC4A4,0xF4B3,INVALC,0xF5F0,0xF745,0xC5A6, 0xF943,0xF944,0xC5D8,0xA6DA,INVALC,0xAAD7,0xDB52,0xBB4E, 0xC17B,0xEDEF,0xA6DB,INVALC,0xAFE5,0xAFE4,0xDB53,INVALC, INVALC,INVALC,0xEAF4,0xA6DC,0xAD50,INVALC,INVALC,0xDB54, 0xDB55,0xDB56,0xBB4F,0xBFB2,0xA6DD,INVALC,0xAAD8,0xD068, /* Block 131, Array index 0x4300 */ 0xAFE6,0xD370,0xB2EA,INVALC,0xDB57,0xB8A4,INVALC,0xBB50, 0xBFB3,0xC17C,0xC2C2,0xF4B5,0xA6DE,0xAAD9,INVALC,INVALC, 0xAFE7,0xD752,0xB5CE,INVALC,0xBB51,0xE3AB,0xE745,INVALC, INVALC,INVALC,INVALC,0xA6DF,0xB5CF,0xDFA3,0xBB52,0xA6E0, 0xCDB1,0xD069,0xAD51,INVALC,INVALC,0xD372,INVALC,INVALC, 0xAFEA,INVALC,0xAFE8,0xAFE9,0xAFEB,INVALC,INVALC,0xD371, INVALC,INVALC,0xD757,0xD754,0xD756,0xB2EB,0xB2ED,0xB2EC, 0xD753,0xB2EE,0xD755,INVALC,0xDB58,0xDB59,INVALC,0xDB5A, 0xDFA6,INVALC,0xDFA7,INVALC,0xDFA5,0xDFA8,INVALC,0xB8A5, INVALC,0xDFA4,INVALC,0xBB53,INVALC,INVALC,0xE74A,0xE746, 0xE749,0xE74B,0xE748,0xE747,INVALC,0xEAF5,0xEAF6,0xEAF7, 0xBFB4,0xBFB5,0xEDF1,0xEDF0,0xEDF2,INVALC,0xF0A3,0xF0A2, INVALC,0xF2C4,INVALC,0xF2C5,0xF2C3,INVALC,0xC4A5,INVALC, 0xF4B6,0xF4B7,INVALC,0xF746,0xF7EF,0xF8BB,0xA6E1,0xA87D, INVALC,0xC17D,0xA6E2,INVALC,0xD758,0xDB5B,INVALC,0xC641, 0xCA4A,INVALC,INVALC,INVALC,0xCA4B,0xCA4D,0xA6E3,0xCA4E, 0xCA4C,INVALC,INVALC,0xCBA2,0xCBA3,0xCB7B,INVALC,INVALC, INVALC,INVALC,0xCBA1,0xA8A1,INVALC,0xA8A2,0xCB7C,0xCB7A, 0xCB79,0xCB7D,0xA87E,0xCB7E,0xD06A,INVALC,INVALC,INVALC, 0xCDB6,0xAADC,0xCDB5,0xCDB7,INVALC,0xAADB,0xCDBC,0xAADF, 0xCDB2,0xCDC0,0xCDC6,0xAAE6,0xCDC3,0xAAE3,INVALC,0xCDB9, 0xCDBF,0xCDC1,INVALC,0xCDB4,0xAAE2,0xAADD,0xCDBA,0xAAE4, 0xAAE7,0xAAE1,INVALC,0xAADA,0xCDBE,0xCDB8,0xCDC5,0xAAE9, 0xAAE5,0xAAE0,0xCDBD,0xAFEC,0xCDBB,0xAADE,0xAAE8,INVALC, 0xCDB3,INVALC,0xCDC2,0xCDC4,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xAD62,0xAD5C,0xAD64,0xAD61,0xD071,0xD074,0xAD5D, INVALC,0xD06B,INVALC,0xAD56,0xAD60,INVALC,0xAD63,0xAD65, 0xD0A2,0xD077,INVALC,0xAD55,0xD0A1,0xAD59,0xAD57,0xAD52, 0xD06F,INVALC,0xD07E,0xD073,0xD076,0xD0A5,INVALC,0xAD66, 0xD07D,0xAD5E,0xD078,0xD0A4,0xD075,0xD079,0xD07C,INVALC, INVALC,0xD06D,0xD0A3,0xD07B,INVALC,INVALC,0xD06C,INVALC, /* Block 132, Array index 0x4400 */ 0xD070,0xAD5F,0xAD5A,0xAD53,0xAD58,0xAD54,0xAD67,0xD06E, 0xD3A5,0xAD5B,INVALC,INVALC,0xD07A,0xCE41,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xD3A8,0xAFFA, INVALC,0xD376,INVALC,0xD3A3,0xD37D,INVALC,0xD3B2,INVALC, 0xD3AA,INVALC,0xD37E,INVALC,0xD3A9,0xD378,0xD37C,0xD3B5, 0xAFFD,0xD3AD,0xD3A4,0xAFED,0xD3B3,0xD374,INVALC,0xD3AC, INVALC,0xAFFC,0xAFF7,0xD373,0xAFF5,0xAFF4,0xAFF9,0xD3AB, 0xAFF1,0xAFF8,0xD072,0xDB5C,0xD3A6,INVALC,INVALC,0xD37A, 0xAFFB,0xD37B,0xD3A1,0xAFFE,0xD375,0xD3AF,INVALC,0xD3AE, 0xD3B6,0xAFF3,0xAFF0,0xD3B4,0xD3B0,0xD3A7,0xD3A2,0xAFF6, 0xAFF2,0xD377,0xAFEE,0xD3B1,0xAFEF,INVALC,0xD379,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0xD75E,0xD760,0xD765,0xD779,0xB2FC, 0xB2F2,INVALC,0xD75D,0xB2FD,0xB2FE,0xD768,0xD76F,0xD775, INVALC,0xD762,INVALC,0xD769,INVALC,INVALC,0xB340,0xD777, 0xD772,0xB2FA,0xB2F8,0xD76E,0xD76A,0xD75C,0xB2EF,0xD761, 0xD759,INVALC,0xB2F7,0xB2F9,0xD766,0xD763,0xB2F4,0xD773, 0xB2F1,0xD764,0xD77A,0xD76C,INVALC,0xD76B,0xB2F0,INVALC, 0xB2FB,INVALC,0xB2F3,0xD75A,0xD75F,0xD770,0xD776,0xB341, 0xD75B,0xD767,0xD76D,0xB2F6,INVALC,INVALC,0xD778,0xD771, 0xD774,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xB2F5,INVALC,0xDB6C, 0xDB60,0xB5D7,0xDB7D,0xDBA7,0xDBAA,0xB5D5,0xDB68,0xDBA3, 0xDB69,0xDB77,0xB5E2,0xDB73,0xB5DF,INVALC,0xDB74,0xDB5D, INVALC,0xDBA4,INVALC,INVALC,0xB5E8,0xDBA1,0xDB75,0xDBAC, 0xDB70,0xDFC8,INVALC,0xDBAF,0xB5E6,0xDB6E,0xDB7A,0xB5E9, 0xB5D4,0xDB72,0xDBAD,0xDB6B,0xDB64,0xDB6F,INVALC,0xDB63, 0xDB61,0xB5D0,0xDBA5,0xDB6A,0xDBA8,INVALC,0xDBA9,0xB5D8, 0xB5DD,0xB5D9,0xB5E1,0xDB7E,0xB5DA,0xDB76,0xDB66,INVALC, 0xB5D2,0xDB5E,0xDBA2,0xDBAB,0xDB65,0xB5E0,0xDBB0,0xDB71, /* Block 133, Array index 0x4500 */ INVALC,0xDB6D,INVALC,0xB5D1,0xB5E5,INVALC,0xDB7C,0xB5E7, INVALC,0xDB78,0xB5DC,0xB5D6,0xB5DE,0xB5D3,0xB5E4,0xDB79, 0xDB67,0xDB7B,0xDB62,0xDBA6,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0xDBAE,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0xDB5F,INVALC,INVALC,INVALC,INVALC, INVALC,0xDFC7,INVALC,0xDFDD,0xB855,0xDFCC,INVALC,0xDFCA, 0xDFB5,0xB8A9,0xDFC5,0xDFD9,0xDFC1,0xB8B1,0xDFD8,0xDFBF, 0xB5E3,0xDFCF,0xDFC0,0xDFD6,0xB8B0,0xB8A8,INVALC,0xDFAA, 0xDFB2,INVALC,0xDFCB,0xDFC3,0xDFDC,0xDFC6,0xB8B6,0xDFD7, INVALC,0xB8AD,INVALC,0xDFC9,0xDFD1,0xDFB6,0xDFD0,INVALC, 0xDFE1,0xDFB1,0xDFD2,INVALC,0xDFDF,INVALC,0xDFAB,0xB5DB, INVALC,0xDFB9,0xDFB8,0xB8AF,INVALC,0xDFBC,0xDFBE,0xDFCD, 0xDFDE,0xB8B2,INVALC,0xB8B3,INVALC,0xDFB0,0xB8AB,0xDFB4, 0xDFDA,0xB8B4,INVALC,0xB8AC,0xB8AE,0xB8B5,0xDFE0,0xDFD3, 0xDFCE,INVALC,INVALC,0xDFBB,0xDFBA,0xB8AA,0xDFAC,0xB8A7, 0xDFC4,0xDFAD,0xDFC2,INVALC,INVALC,0xDFB7,0xDFDB,INVALC, INVALC,INVALC,0xB8A6,INVALC,INVALC,INVALC,0xDFB3,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xDFAF,0xDFD5,0xDFAE, 0xBB60,0xE3D3,INVALC,INVALC,0xE3C2,INVALC,INVALC,0xE3AC, 0xE3CA,0xBB58,0xE3BB,0xE3C5,0xBB5B,0xE3BE,0xBB59,0xE3AF, 0xE3CD,0xE3AE,0xE3C1,INVALC,0xE3AD,INVALC,INVALC,0xE3BF, 0xE3C8,0xE3C6,0xE3BA,0xE3B5,0xE3B3,INVALC,0xE3B4,0xE3C7, 0xE3D2,0xE3BC,0xBB5A,INVALC,0xE3B7,INVALC,0xE3CB,INVALC, 0xBB5D,0xE3B6,0xE3B0,0xE3C0,0xBB61,INVALC,INVALC,0xBB55, 0xBB5E,0xE3B8,0xE3B2,INVALC,0xBB57,0xDFD4,0xBB56,0xE3C3, INVALC,0xBB54,0xBB63,0xBB5C,0xE3C4,0xE3B9,0xE3B1,0xE3CC, 0xE3BD,0xBB62,0xE3D0,0xBB5F,0xE3CF,INVALC,0xE3C9,0xE3CE, INVALC,INVALC,INVALC,0xE3D1,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xE773, 0xE774,0xE767,0xE766,0xE762,0xBDB4,INVALC,0xBDAC,0xE776, 0xE775,0xDFA9,0xE75F,0xE763,0xE75D,INVALC,0xE770,0xE761, INVALC,0xE777,0xE75A,0xE758,0xE764,0xE76E,0xE769,0xBDB6, /* Block 134, Array index 0x4600 */ 0xE74F,INVALC,0xE76D,INVALC,INVALC,INVALC,0xBDB7,0xDFBD, 0xE75B,0xE752,0xE755,0xE77B,0xE75C,0xE753,0xE751,0xE74E, INVALC,0xBDB0,0xE765,0xBDAF,0xBDB3,0xE760,0xE768,0xBDA9, 0xE778,0xE77C,0xBDAB,INVALC,0xE757,0xE76B,0xE76F,0xE754, 0xE779,0xBDB2,INVALC,0xBDB1,0xE74C,0xBDB5,0xE772,0xE756, 0xE76A,0xE750,0xE75E,0xE759,0xBDAD,0xBDAE,0xE76C,0xE77D, 0xE77A,0xE771,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0xE74D,INVALC,0xBDAA,0xEB49,INVALC, 0xEB40,0xEB43,INVALC,0xBFBB,0xEB45,0xEAF9,0xEB41,0xEB47, 0xBFB8,0xBFBC,0xBFB6,INVALC,INVALC,0xEAFB,0xEB4C,INVALC, INVALC,0xEB46,INVALC,0xEAFC,0xEB55,0xEB4F,0xEAF8,0xEE46, 0xEAFE,0xBFB7,INVALC,0xEB4A,INVALC,0xEB54,0xBFBF,INVALC, 0xEB51,0xEAFD,0xEB44,0xEB48,0xEB42,0xEB56,0xEB53,0xEB50, 0xBFB9,0xBFBA,0xBFBE,0xEAFA,0xEB57,0xBFBD,0xEB4D,INVALC, INVALC,0xEB4B,INVALC,INVALC,INVALC,0xEB4E,0xEE53,0xEE40, 0xEE45,0xEE52,0xEE44,0xEDFB,0xEE41,INVALC,0xC1A2,INVALC, 0xEDF4,0xEE4D,0xEE4F,0xEDF3,0xC1A1,0xEE51,0xEE49,0xC1A8, 0xEE50,0xEE42,0xC1AA,0xEDF9,0xEB52,0xEE4A,0xEE47,0xEDF5, 0xEE55,0xC1A4,INVALC,INVALC,0xC1A5,0xEDF7,0xEE48,INVALC, 0xEE54,0xEE4B,0xEDFD,0xC1A7,0xC1A3,0xEE4C,0xEDFE,0xEE56, 0xEDF8,0xEE43,0xEE4E,0xEDFA,0xEDFC,INVALC,0xC2CB,0xEDF6, 0xC1A9,0xC2C4,0xC17E,INVALC,INVALC,INVALC,INVALC,0xC1A6, 0xC2C8,0xF0B3,INVALC,0xF0A9,0xF0A4,0xF0AA,0xF0B4,0xF0B8, 0xF0B7,0xC2CA,0xC2C9,INVALC,INVALC,0xF0AB,0xF0B9,0xF0AE, 0xF0A6,INVALC,0xF0A8,0xF0A7,0xF0AD,0xF0B2,0xF0A5,0xF0AC, 0xF0B1,0xC2C7,INVALC,0xF0AF,INVALC,0xC2C5,0xF0B0,0xC2C3, 0xC2C6,0xF2D5,0xF0B5,INVALC,INVALC,0xC3C2,INVALC,0xF2CD, 0xF2D1,0xF2C9,0xF2CC,INVALC,0xF2D4,0xC3C0,0xF2D9,0xF2D2, INVALC,0xF2CA,0xF2DA,0xF2D3,0xC3C3,0xC3C4,0xF2D7,INVALC, 0xF2CB,0xC3BF,0xC3C1,0xF2C6,0xF2CE,0xF2C8,INVALC,0xF2D8, 0xF2D6,0xF2C7,0xF2CF,INVALC,INVALC,INVALC,0xF4BE,0xC3C5, 0xF2D0,0xC4A7,0xC4A9,0xC4A6,INVALC,0xF4C3,0xF4BB,0xF4B9, /* Block 135, Array index 0x4700 */ 0xF4BD,0xF4BA,INVALC,INVALC,0xF4BF,0xF4C1,0xC4AA,0xC4AC, INVALC,0xF4C0,0xC4AD,0xC4AB,0xF4C2,INVALC,INVALC,INVALC, INVALC,0xC4A8,INVALC,INVALC,INVALC,INVALC,INVALC,0xC4F4, 0xF5F1,0xF5F7,0xC4F6,0xF4BC,0xF5F6,INVALC,0xF5FD,0xF5F4, 0xF5FB,0xF5FA,0xF4B8,0xF5F5,0xF0B6,0xF5FE,0xF5F3,0xF5F8, INVALC,0xF5FC,0xF5F2,INVALC,0xF74A,0xC4F5,0xF5F9,INVALC, INVALC,0xF7F4,0xF74B,0xF749,0xF747,0xF748,0xF74C,INVALC, 0xC5D9,0xF7F2,0xF7F0,0xF7F5,0xF7F3,INVALC,0xF7F6,0xC5DA, 0xF7F1,INVALC,INVALC,0xF8BC,INVALC,INVALC,0xF945,0xF946, 0xF947,INVALC,INVALC,0xF9C7,0xF9BD,0xCA4F,0xAAEA,INVALC, 0xAD68,INVALC,0xD3B8,0xD3B7,0xB040,0xB342,0xD77C,INVALC, INVALC,0xD77B,INVALC,0xB5EA,0xB8B8,INVALC,0xB8B7,0xB8B9, INVALC,0xE3D4,0xE77E,0xEB58,0xEB5A,0xEB59,INVALC,0xC1AB, 0xEE57,0xF0BA,0xF9A5,0xA6E4,INVALC,0xCDC9,0xCDCA,0xCDC8, 0xCDC7,0xAAEB,INVALC,0xD0A9,0xD0A7,INVALC,INVALC,0xD0A6, INVALC,0xAD69,0xAD6B,0xAD6A,0xD0A8,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xD3C4,0xD3C1,0xD3BF, INVALC,INVALC,0xB041,0xD3C2,0xB046,0xD3BC,0xD3CB,INVALC, 0xD3CD,0xD3BD,INVALC,0xB043,0xD3CE,0xD3C9,0xD3BB,0xD3C0, 0xD3CA,0xD3C6,0xD3C3,INVALC,0xB048,0xD3CC,0xD3BE,INVALC, INVALC,0xD3C7,0xD3B9,0xB047,0xB044,0xD3C5,INVALC,0xD3C8, 0xD3BA,0xB045,0xB042,INVALC,INVALC,INVALC,INVALC,0xB34C, 0xD7A5,0xB34B,INVALC,0xD7A8,0xD7AB,0xB348,0xB346,0xD77E, 0xD7A9,0xD7A7,0xD7A4,0xD7AC,0xD7AD,0xD7AF,0xD7B0,0xD77D, 0xB345,0xD7A2,0xD7A1,0xD7AE,0xB347,0xD7A3,0xB349,0xB344, 0xD7A6,0xB34D,INVALC,0xB34A,0xD7AA,INVALC,INVALC,INVALC, 0xB5F1,0xDBBF,INVALC,0xDBB4,0xB5EE,INVALC,0xDFE7,0xDBBD, 0xDBB1,0xB5EC,0xDBB6,0xB5EF,0xDBBA,0xDBB8,0xB5F2,0xB5EB, INVALC,INVALC,0xDBB2,0xDBB5,0xB5F0,INVALC,0xDBB3,INVALC, 0xDBBE,0xDBBC,0xDBB7,0xDBB9,0xDBBB,0xB5ED,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xDFE8,0xDFEE,0xDFE4, 0xDFEA,0xB8BA,0xDFE6,0xB8C0,INVALC,INVALC,0xB8BF,INVALC, /* Block 136, Array index 0x4800 */ 0xB8BE,0xDFED,0xB8C1,0xB8C2,0xDFE3,0xDFF0,0xB8C3,0xB8BD, 0xB8BC,0xDFEC,0xB8C4,0xDFE2,0xDFE5,0xDFEF,0xDFEB,INVALC, INVALC,0xE3F4,0xE3E9,0xB8BB,INVALC,INVALC,INVALC,INVALC, 0xBB6A,0xE3DD,0xE3F2,0xE3DE,0xBB65,INVALC,0xE3DB,INVALC, 0xE3E4,0xE3DC,0xBB67,0xE3D6,0xE3F1,0xBB68,0xE3EE,0xE3EF, 0xE3D7,0xBB6D,0xE3E6,INVALC,0xE3E0,0xE3E7,0xE3DA,INVALC, 0xE3F3,0xE3EB,0xE3E5,0xE3D5,0xBB69,0xE3EC,INVALC,0xBB6C, 0xE3F0,INVALC,0xE3EA,0xBB66,0xE3E8,INVALC,0xE3E2,0xBB64, 0xE3D9,0xE3E1,0xE3ED,0xE3DF,INVALC,INVALC,0xE3E3,INVALC, INVALC,INVALC,INVALC,INVALC,0xBDC1,0xDFE9,0xE7B2,0xE7BB, 0xE7B1,0xE7AD,0xE7AA,0xBDC2,0xE7A8,0xBB6B,0xE7A1,0xBDC0, 0xE7A7,0xBDBF,0xE7AC,0xE7A9,0xE7B9,0xE7B4,0xE7AE,0xE7B3, 0xBDBB,0xE7AB,0xE7BE,0xE7A2,0xE7A3,0xE7BA,0xBDBC,0xE7BF, 0xBDBE,0xE7C0,0xE7B0,0xE3D8,0xE7B6,0xE7AF,0xE7B8,0xE7B5, INVALC,INVALC,INVALC,0xE7A6,0xBDB9,0xE7BD,0xBDBA,0xE7A4, 0xBDBD,0xEB64,0xE7B7,0xE7BC,INVALC,INVALC,INVALC,INVALC, INVALC,0xEB61,0xBDB8,0xBFC0,0xEB6B,0xEB67,INVALC,0xEB65, 0xEB60,0xEB6F,INVALC,INVALC,INVALC,0xBFC4,INVALC,0xEB5C, 0xEB68,0xEB69,0xEB5F,0xEB5E,0xEB6C,INVALC,0xEB62,0xEB5D, 0xEB63,INVALC,0xEB6E,0xEB5B,0xEB6D,0xEB6A,0xBFC2,0xBFC1, INVALC,INVALC,0xBFC3,0xEB66,0xF0CB,INVALC,INVALC,INVALC, INVALC,INVALC,0xEE59,0xC1B1,0xEE5D,0xEE5A,0xEE61,0xEE67, 0xEE5C,INVALC,0xEE70,0xC1AE,0xEE6A,0xEE5F,0xEE6B,0xEE66, 0xEE6D,0xEE5E,0xC1B3,0xC1B2,0xEE60,0xEE6E,0xEE58,0xEE6C, 0xC1AC,INVALC,0xEE64,0xEE63,0xEE68,0xEE5B,0xC1B0,INVALC, 0xC1B4,0xEE62,0xEE69,0xC1B5,0xEE65,INVALC,INVALC,INVALC, INVALC,0xC1AD,0xC1AF,0xF0C7,0xF0C5,INVALC,INVALC,0xF0CC, 0xF0C9,0xF0CD,INVALC,0xF0BE,0xF0C6,0xF0D1,0xEE6F,0xF0C2, 0xC2CF,0xE7A5,0xF0BD,0xF0CA,0xF0C4,0xF0C1,0xF0BC,0xF0BB, 0xF0D0,INVALC,0xF0C0,0xF0BF,0xC2CD,0xF0C8,INVALC,0xC2CC, INVALC,INVALC,0xC2CE,0xF0C3,0xF0CF,INVALC,0xF2DE,0xF2DF, INVALC,0xC3C9,0xF2DC,0xC3C6,0xF2E4,INVALC,0xC3CA,0xF2E6, /* Block 137, Array index 0x4900 */ 0xF2DB,0xF0CE,0xF2E8,0xF2DD,INVALC,0xC3C7,0xF2E3,INVALC, 0xF2E5,0xF2E0,0xF2E7,0xF2E2,0xF2E1,0xC3C8,INVALC,INVALC, 0xF4C5,0xF4C6,INVALC,0xF4C8,0xC4AE,0xC4AF,0xF4C9,0xF4C7, INVALC,0xF4C4,INVALC,0xF642,0xF645,0xF641,INVALC,0xC4FA, 0xF643,0xC4F9,0xC4F8,0xC4F7,0xF644,0xF751,0xF74F,INVALC, 0xF74E,0xF640,0xF750,0xF646,0xF74D,INVALC,0xF7F9,0xF7D7, 0xF7F7,0xC5DB,0xF7F8,0xF7FA,INVALC,0xF8BF,0xC5FA,0xF8BE, 0xF8BD,0xC5FB,INVALC,0xC65A,0xF96E,0xF9A7,0xF9A6,0xF9A8, 0xA6E5,0xD0AA,INVALC,0xD3CF,0xD3D0,INVALC,INVALC,INVALC, 0xDBC0,INVALC,0xF647,0xF8C0,0xA6E6,0xAD6C,0xD0AB,INVALC, INVALC,INVALC,0xD7B1,0xB34E,INVALC,0xDBC2,0xDBC1,0xB5F3, INVALC,0xB8C5,0xE7C1,0xBDC3,INVALC,0xBDC4,INVALC,INVALC, INVALC,0xBFC5,0xC5FC,0xA6E7,INVALC,INVALC,INVALC,0xD0AC, 0xAAED,0xD0AE,0xD0AD,0xAD6D,INVALC,0xD3D1,INVALC,0xD3D8, 0xB049,0xD3D6,0xD3D4,INVALC,0xD3DB,0xD3D2,0xD3D3,0xB04A, INVALC,0xB04E,INVALC,INVALC,0xD3DC,0xB04D,0xD3DA,0xD3D7, 0xD3D5,0xB04B,0xB04C,0xD3D9,INVALC,INVALC,INVALC,INVALC, 0xB350,0xD7B2,INVALC,0xB355,0xD7C2,0xB354,0xD7C4,INVALC, INVALC,0xD7B8,0xB352,0xD7C3,INVALC,0xD7B3,0xB353,0xD7BF, 0xD7BB,0xD7BD,0xD7B7,0xD7BE,INVALC,INVALC,0xB34F,0xD7BA, INVALC,0xD7B9,0xD7B5,INVALC,0xD7C0,INVALC,INVALC,0xD7BC, 0xD7B4,INVALC,0xD7B6,0xB351,0xD7C1,INVALC,INVALC,INVALC, INVALC,0xB5F6,0xDBCD,INVALC,INVALC,INVALC,0xDBC9,0xDBCB, 0xDBC6,0xDBC5,0xDBC3,INVALC,0xDBCA,0xDBCC,0xDBC8,INVALC, 0xDBC7,0xB5F4,0xB5F5,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xDBCF,0xB8CD,0xDFF2,0xDFF8,0xDFF3,0xDFF4,INVALC, 0xDFF9,INVALC,0xB8CF,INVALC,0xB8C7,0xB8CE,0xDFF1,0xDBC4, 0xB8CA,0xB8C8,0xDFF7,0xDFF6,0xB8C9,0xB8CB,0xDFF5,0xB8C6, INVALC,0xB8CC,INVALC,INVALC,INVALC,INVALC,INVALC,0xE3F6, 0xBB74,INVALC,INVALC,0xE442,0xE441,INVALC,0xE3FB,0xBB76, 0xE440,0xE3F7,0xE3F8,0xBB6E,0xBB70,INVALC,0xE3FD,0xE3F5, 0xBB72,0xBB71,0xE3F9,0xE3FE,0xE3FC,0xBB73,0xE3FA,INVALC, /* Block 138, Array index 0x4A00 */ INVALC,0xDBCE,0xBB6F,INVALC,INVALC,0xE7C2,0xE7C9,0xBDC6, INVALC,0xE7CD,0xBDCA,0xE7C5,0xE7C3,INVALC,0xE7CC,INVALC, 0xBDC5,0xE7CB,0xBDC7,0xBDC8,0xE7C4,0xBDC9,0xE7CA,0xE7C6, 0xE7C7,0xE7C8,0xBB75,INVALC,INVALC,INVALC,0xEB70,0xEB7C, INVALC,0xBFCA,0xEB77,0xEB79,INVALC,0xBFC8,0xEB71,0xEB75, INVALC,0xEB78,0xBFC6,0xBFC9,0xEB7B,0xEB73,0xEB74,0xEB7A, 0xEB72,0xEB76,0xBFC7,0xEE72,INVALC,0xEE71,0xC1B7,0xEE77, 0xC1B9,INVALC,INVALC,0xC1B6,0xEE73,0xC1BA,0xEE74,INVALC, INVALC,0xEE75,0xEE78,INVALC,0xC1B8,INVALC,0xF0D6,INVALC, INVALC,0xF0D9,INVALC,0xF0D3,0xF0D5,INVALC,INVALC,0xF0D4, 0xF0D7,0xF0D8,0xEE76,0xF0D2,INVALC,INVALC,0xC3CD,0xF2EC, 0xF2EF,0xF2F1,0xF2EA,0xF2EB,0xF2EE,0xF2F0,0xC3CE,0xC3CC, 0xC3CB,0xF2ED,0xF2E9,0xF4CA,0xC4B0,INVALC,0xF4CB,INVALC, INVALC,0xF649,0xC4FB,0xF64B,0xC4FC,0xF648,0xF64A,0xC5A8, INVALC,0xF752,0xC5A7,0xF7FD,0xF7FC,INVALC,0xF7FB,INVALC, INVALC,0xF948,0xF949,0xF94B,0xF94A,INVALC,0xCA50,0xA6E8, INVALC,0xAD6E,0xD7C5,0xB5F7,INVALC,0xDFFA,0xC2D0,INVALC, 0xF2F2,INVALC,INVALC,0xA8A3,INVALC,INVALC,INVALC,0xB357, INVALC,INVALC,INVALC,0xB356,INVALC,0xDBD0,0xB5F8,0xDBD2, 0xDBD1,INVALC,INVALC,0xDFFB,0xB8D0,0xE443,0xE446,0xE445, INVALC,0xE444,0xE7CE,0xE7D0,0xE7CF,INVALC,0xBFCC,INVALC, INVALC,INVALC,0xBFCB,INVALC,0xC1BB,0xEE79,0xEE7B,0xEE7A, INVALC,INVALC,0xC2D1,INVALC,INVALC,INVALC,0xF2F4,0xF2F3, INVALC,0xF4CC,0xC4B1,INVALC,INVALC,0xC4FD,0xF754,0xF753, 0xC65B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0xA8A4,0xD0AF,0xAD6F,0xD7C8,0xD7C6,INVALC, INVALC,0xD7C7,0xDBD4,0xDBD5,0xE043,0xDBD3,INVALC,0xDFFC, 0xE041,0xE040,0xE042,0xB8D1,0xDFFE,0xDFFD,0xE044,INVALC, 0xE449,0xE447,INVALC,0xE448,0xE7D3,0xE7D1,INVALC,INVALC, 0xE7D2,0xEB7D,0xEE7C,0xEE7D,0xC2D2,INVALC,0xF2F5,0xF4CD, 0xC4B2,INVALC,0xF64C,0xF755,0xC5A9,INVALC,0xF7FE,0xF94C, /* Block 139, Array index 0x4B00 */ 0xA8A5,INVALC,0xAD71,0xAD72,0xD0B0,INVALC,INVALC,0xD0B1, 0xAD70,INVALC,0xB054,INVALC,0xB052,INVALC,0xB051,0xB058, 0xB050,0xB059,0xD3DD,0xB056,INVALC,0xB053,0xB057,0xB055, 0xB04F,INVALC,INVALC,0xB35F,INVALC,0xB359,0xD7CC,0xB35E, INVALC,INVALC,0xB360,0xB35A,INVALC,0xB35B,INVALC,0xD7CA, INVALC,INVALC,0xB358,INVALC,0xD7CB,0xB35D,INVALC,INVALC, 0xD7C9,0xB35C,INVALC,INVALC,0xB644,INVALC,0xB646,INVALC, INVALC,0xDBD8,0xB645,0xB5F9,0xB5FD,INVALC,0xB8E4,0xE049, 0xDBDA,0xB5FE,INVALC,INVALC,0xDBDD,0xDBDE,0xB643,INVALC, 0xDBE0,INVALC,0xDBE2,INVALC,0xDBE3,0xDBD7,0xDBD6,0xDBE4, 0xB642,0xDBE1,0xDBDF,INVALC,0xB640,0xB5FB,0xB647,0xDBDB, 0xDBDC,0xDBD9,INVALC,0xB641,INVALC,INVALC,0xB5FC,INVALC, 0xB5FA,0xE048,0xB8DF,0xB8DA,INVALC,INVALC,0xB8D5,INVALC, 0xB8E5,0xB8D6,INVALC,0xB8D2,0xB8E1,0xB8DE,0xB8E0,INVALC, 0xB8D7,0xB8DC,0xB8D3,0xB8D4,0xE050,0xE04D,0xE045,0xE04A, INVALC,0xB8E2,0xE051,0xB8E3,0xB8D9,INVALC,INVALC,0xE047, INVALC,0xE04F,0xE04B,0xE04E,0xE04C,0xB8DD,0xE046,0xB8D8, INVALC,INVALC,INVALC,0xE44C,0xBB78,0xBB7B,INVALC,0xE44E, INVALC,0xBBA5,0xE44D,0xBB7D,INVALC,0xBDCF,0xE44F,INVALC, 0xBBA4,0xE44B,0xBBA6,INVALC,INVALC,INVALC,0xBB79,INVALC, 0xB8DB,0xBB7C,INVALC,0xBB7A,0xBB7E,0xBBA2,0xBB77,0xBBA7, 0xBBA3,INVALC,0xBBA1,0xE44A,INVALC,INVALC,INVALC,INVALC, 0xBDD6,INVALC,0xBDD2,INVALC,INVALC,INVALC,0xBDD9,INVALC, 0xE7D6,0xBDDA,0xE7E2,0xE7DB,0xBDCB,0xE7E3,0xE7DD,0xBDD5, 0xE7DE,INVALC,0xBDD4,0xE7E1,0xBDCE,0xE7DF,0xE7D5,0xBDCD, 0xEBAA,0xBDD3,INVALC,0xBDD0,INVALC,0xBDD8,INVALC,0xE7D4, INVALC,0xE7D8,0xBDCC,0xE7D7,0xE7D9,0xE7DA,0xBDD7,0xE7DC, 0xE7E0,0xE7E4,INVALC,0xBDDB,0xBFD2,0xEBA5,0xEBAB,0xEBA8, 0xEB7E,0xEBAC,0xEBA1,INVALC,0xEBA7,INVALC,0xBFCD,0xBFD3, 0xEBAD,INVALC,INVALC,0xBFCF,INVALC,0xBFD9,0xBFD4,0xEBAF, 0xEBA9,0xBFD0,0xEBA2,0xBFDA,0xEBA3,0xEBA4,0xBFDB,0xBFD8, 0xBDD1,INVALC,0xBFCE,0xEBB0,0xBFDC,INVALC,0xBFD5,0xEBAE, /* Block 140, Array index 0x4C00 */ 0xBFD1,0xBFD6,0xBFD7,INVALC,0xC1C3,0xEEA4,0xEEAD,0xEEAA, 0xEEAC,INVALC,0xC1C0,0xEEA5,INVALC,0xEEAB,0xC1BC,0xEEA7, 0xC1C4,0xEEA3,0xEEA8,0xEEAF,0xEBA6,0xEEA9,0xEEA2,0xC1BD, 0xEEA1,0xC1BE,0xEEB0,0xC1BF,0xEEAE,0xC1C2,0xEE7E,INVALC, 0xC1C1,INVALC,0xEEA6,0xF0DC,0xF0EA,0xF0E5,0xF0E7,0xF0DB, 0xC2D3,INVALC,0xF0DA,0xC2D6,0xC2D5,INVALC,0xF0E9,0xF0E1, 0xF0DE,0xF0E4,INVALC,0xF0DD,INVALC,0xF0DF,0xF0E8,0xF0E6, INVALC,0xC2D4,0xF0ED,0xF0EB,0xF0E2,0xF0EC,0xF0E3,INVALC, 0xF2F9,0xC3CF,0xF341,INVALC,INVALC,0xF64F,0xC3D6,0xF0E0, 0xF2F7,0xC3D2,0xF2F8,0xF2FD,INVALC,INVALC,0xC3D4,0xC3D5, 0xF2F6,0xF340,0xF342,0xF2FA,0xF2FC,0xF2FE,0xF2FB,0xF343, 0xC3D1,0xC3D7,0xC3D3,INVALC,0xC3D0,0xF4D0,INVALC,0xC4B7, 0xF4CE,INVALC,INVALC,0xF4D2,INVALC,0xF4D3,0xC4B5,0xF4D4, 0xF4D1,INVALC,0xF4CF,0xC4B8,0xC4B4,0xF4D5,INVALC,0xC4B6, 0xC4B3,INVALC,INVALC,INVALC,0xC4FE,INVALC,INVALC,0xC540, 0xF64E,0xF64D,0xF650,0xF651,INVALC,0xC541,0xF756,0xF75B, 0xC5AA,INVALC,0xF758,INVALC,0xF757,0xF75A,0xF759,INVALC, 0xF843,INVALC,0xC5DC,0xF842,0xF840,INVALC,0xF841,INVALC, INVALC,INVALC,0xC5FE,0xC5FD,0xF8C1,0xF8C2,0xC640,INVALC, 0xF94D,0xF94E,0xC667,INVALC,0xC66D,INVALC,0xF9A9,0xF9C8, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 141, Array index 0x4D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xA8A6, INVALC,0xD7CD,INVALC,0xD7CE,0xE052,0xE450,0xE7E5,0xC1C6, INVALC,0xC1C5,0xF0EE,0xF344,INVALC,0xF844,0xA8A7,0xD3DE, 0xB05A,0xB361,0xE054,0xE053,0xBDDC,0xE7E6,0xBDDD,0xEEB1, 0xC2D7,INVALC,INVALC,INVALC,0xC676,0xA8A8,0xCDCB,0xD3DF, INVALC,INVALC,0xB362,INVALC,0xD7CF,0xD7D0,INVALC,0xDBE5, INVALC,0xB648,0xB8E6,INVALC,0xE056,0xE055,0xE057,INVALC, 0xE451,0xE452,0xBBA8,0xBFDD,0xBDDE,0xBFDE,INVALC,0xEEB5, 0xEEB2,0xEEB4,0xEEB3,0xC1C7,INVALC,0xF0EF,0xF346,0xF345, 0xCBA4,0xB05C,0xB05B,0xD3E0,INVALC,0xD7D1,INVALC,INVALC, 0xDBE7,0xDBE6,0xB649,INVALC,0xE059,0xE05A,0xE058,INVALC, INVALC,0xB8E8,0xB8E7,INVALC,0xBBAA,0xBBA9,INVALC,0xE7E7, 0xEBB3,0xEBB1,0xEBB2,0xBFDF,0xEEB7,0xEEB6,INVALC,0xF0F2, 0xF0F1,0xF0F0,0xF347,INVALC,0xF9AA,0xA8A9,0xAD73,INVALC, 0xAD74,0xB05D,0xB05E,0xD3E2,0xD3E1,0xD7D2,INVALC,0xB368, 0xB366,0xB363,0xB367,0xB365,0xB364,INVALC,INVALC,0xB64A, 0xDBEA,INVALC,0xB8ED,0xB64C,0xB651,0xDBEC,0xB653,0xB652, 0xB655,0xDBEB,0xDBE8,0xB64F,0xB64B,0xB64D,0xDBE9,0xB654, 0xB650,0xB64E,0xB8EF,0xB8EE,0xB8EC,0xB8F0,INVALC,0xB8EA, 0xB8EB,INVALC,0xB8E9,INVALC,0xE05B,INVALC,INVALC,0xE454, INVALC,0xBBAC,0xBBAD,0xBBAB,INVALC,0xE453,INVALC,0xE455, INVALC,0xE7EA,0xE7EC,INVALC,0xBDE7,0xE7ED,0xBDE0,0xE7E9, 0xBDDF,0xBDE9,0xBDE5,0xBDE6,0xBDE2,0xE7E8,0xBDE1,0xE7EE, 0xE7EB,INVALC,0xBDE8,INVALC,0xBDE3,0xBDE4,0xEBB5,INVALC, 0xEBB7,0xEBB6,INVALC,0xEBB8,0xBFE0,0xEBB4,INVALC,INVALC, 0xC1CB,0xEEB8,0xC1C8,0xC1CC,0xC1CA,0xC1C9,0xF0F3,INVALC, /* Block 142, Array index 0x4E00 */ 0xF0F6,INVALC,0xF0F5,INVALC,0xF0F4,0xC2D8,0xF348,0xF349, 0xC3D8,0xF34A,0xC3D9,INVALC,INVALC,0xC4BA,INVALC,0xC4B9, 0xF652,INVALC,INVALC,0xC542,0xF653,0xF75C,0xC5AB,0xC5AC, INVALC,0xF845,INVALC,0xC642,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0xA8AA,INVALC,0xB36A,0xB369, 0xE05C,0xE05D,INVALC,0xBBAE,0xEBB9,0xBDEA,0xEBBA,0xEEB9, 0xA8AB,INVALC,0xD0B2,0xAD76,0xAD75,INVALC,0xD3E3,0xB05F, 0xD3E4,0xD7D5,INVALC,0xD7D4,INVALC,0xD7D3,INVALC,INVALC, 0xDBEE,0xB658,INVALC,INVALC,0xDBED,0xB657,INVALC,INVALC, INVALC,0xDBEF,0xB656,INVALC,0xE05F,0xE062,0xE060,0xE061, 0xE065,0xE05E,0xE066,0xE063,0xE064,0xBBB0,0xE456,INVALC, INVALC,0xBBAF,INVALC,0xE7F2,0xE7F0,INVALC,INVALC,0xBDEB, 0xE7EF,0xE7F1,INVALC,0xBDEC,INVALC,0xEBBB,INVALC,0xEBBC, 0xC1CD,INVALC,0xF34C,0xF34E,0xF34B,0xF34D,0xF4D6,0xF654, INVALC,INVALC,0xF96F,0xA8AC,0xAD77,0xD3E5,0xD3E7,0xD3E6, INVALC,0xD7D8,0xB36C,INVALC,0xD7D6,INVALC,0xB36B,0xD7D9, INVALC,0xD7DA,0xD7D7,INVALC,INVALC,0xDBFB,0xB660,0xDBF3, 0xDBF9,INVALC,INVALC,0xB65B,0xB65E,0xDBF2,0xB659,0xDBF6, 0xE06C,0xB65D,INVALC,0xDBF1,INVALC,0xDBF7,0xDBF4,0xDBFA, 0xDBF0,0xDBF8,0xB65C,0xB65F,0xDBF5,0xB65A,INVALC,0xB8F2, 0xE068,0xB8F1,0xE06F,0xE06E,0xB8F8,INVALC,0xB8F9,0xE070, 0xB8F3,0xE06D,0xB8F7,0xE072,0xE069,INVALC,0xE06B,0xB8F4, 0xE067,0xE06A,0xE071,0xB8F5,0xE073,INVALC,INVALC,INVALC, INVALC,INVALC,0xB8F6,INVALC,0xBBB1,0xE45B,0xE461,0xE459, /* Block 143, Array index 0x4F00 */ 0xE462,INVALC,0xE458,0xE45D,0xE463,0xE460,0xE45F,0xE45E, INVALC,0xE457,0xE45C,INVALC,INVALC,0xE45A,INVALC,0xBDF1, 0xBDEE,0xE7FB,0xE841,0xE843,0xE840,0xE7F8,0xE7FA,0xE845, 0xE842,0xE7FC,0xE846,0xE7F9,0xE844,0xBDEF,0xBDF5,0xBDF3, 0xE7F3,0xBDF4,0xBDF0,0xE7F4,0xE7F6,0xE7F5,0xE7FD,0xE7FE, INVALC,0xBDF2,INVALC,0xBDED,INVALC,INVALC,0xE7F7,INVALC, 0xEBC6,0xBFE2,INVALC,0xEBBD,0xBFE3,0xBFE6,0xEBC2,INVALC, 0xEBBF,0xBFE5,INVALC,INVALC,0xEBC3,0xEBC4,0xEBBE,0xEBC7, 0xEBC0,0xEBC5,0xBFE4,INVALC,0xBFE1,0xEBC1,INVALC,0xEEBF, 0xC1D0,0xC1CE,0xC1D1,0xC1CF,0xEEBE,0xEEBB,0xEEBA,INVALC, 0xEEBD,INVALC,INVALC,0xEEBC,0xF145,0xC2DE,0xF0FB,0xF0FA, INVALC,0xC2D9,0xF141,0xF140,0xF0F7,0xF143,0xF0FC,0xC2DD, 0xF0F9,0xF142,0xF0F8,0xC2DA,0xC2DC,0xF0FD,0xC2DB,0xF0FE, INVALC,0xF144,0xF352,INVALC,0xC3DE,0xF34F,INVALC,0xF353, INVALC,INVALC,0xC3DB,0xF351,0xC3E0,INVALC,0xC3DD,INVALC, 0xF350,INVALC,0xC3DF,0xF354,0xC3DA,INVALC,INVALC,INVALC, INVALC,0xC4BC,0xC4BE,INVALC,0xF4D9,0xC4BD,0xF4D7,0xC3DC, 0xF4D8,0xC4BB,0xC543,0xC545,0xF656,0xC544,0xF655,INVALC, 0xF761,0xC5AD,0xF760,0xC5AE,0xF75E,0xF75D,0xF762,0xF763, 0xF846,INVALC,0xF75F,INVALC,INVALC,0xF8C6,0xF8C3,0xF8C4, 0xF8C5,0xC65C,INVALC,0xF951,0xF950,0xF94F,0xF970,INVALC, 0xF9BE,0xF9AB,0xC66E,0xA8AD,0xB060,INVALC,INVALC,INVALC, INVALC,INVALC,0xB8FA,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0xBDF6,INVALC,INVALC,0xEBC8,INVALC,INVALC, 0xC2DF,INVALC,0xF355,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xF9AC,0xA8AE,0xAAEE,0xAD79,0xAD78,INVALC,0xB063, INVALC,0xD3E8,0xB061,0xD3E9,0xB062,INVALC,INVALC,0xD7DF, 0xD7DB,INVALC,INVALC,0xB36D,0xD7DE,0xD7DD,0xD7DC,0xB36E, 0xD7E0,0xD7E1,INVALC,INVALC,INVALC,0xDC43,0xDC41,0xDC45, 0xDC46,0xDC4C,INVALC,0xDC48,0xDC4A,INVALC,0xDC42,0xDBFC, INVALC,0xDC49,INVALC,INVALC,0xDC4B,0xDC44,0xDC47,0xDBFD, 0xB662,0xDC40,0xDBFE,0xB661,0xB663,INVALC,0xB8FD,0xE075, /* Block 144, Array index 0x5000 */ 0xE077,0xE076,0xE07B,0xB8FB,INVALC,0xE078,0xE074,0xE079, 0xE07A,0xB8FC,0xB8FE,0xE07C,INVALC,0xE467,0xE466,INVALC, 0xE464,0xE465,0xBBB3,0xBBB5,0xBBB2,0xBBB4,0xE84D,0xE84E, 0xE849,INVALC,0xE84A,0xBDF8,0xBDFD,0xBDF7,0xBDFE,0xBDF9, 0xE84B,INVALC,INVALC,0xE84C,0xE848,0xBE40,0xBDFB,INVALC, INVALC,0xBDFA,0xBDFC,INVALC,0xE847,INVALC,0xEBCA,0xBFE8, INVALC,INVALC,0xEBCC,0xBFEA,0xEBCF,0xEBCB,0xEBC9,0xEBCE, 0xBFE9,0xEBCD,INVALC,0xBFE7,INVALC,INVALC,0xC1D3,0xC1D6, 0xEEC1,INVALC,0xC1D4,0xEEC0,0xC1D2,0xC1D5,0xF146,0xF147, 0xF148,0xC2E0,INVALC,0xF149,INVALC,0xC2E1,0xC3E2,0xF358, 0xF359,0xF357,0xF356,0xF35A,0xC3E1,0xF4DD,0xF4DB,0xF4DC, 0xF4DE,0xF4DA,0xF4DF,0xF658,INVALC,0xF659,0xF657,0xC546, 0xF764,0xC5AF,0xF765,0xF848,0xF847,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0xA8AF,0xB664,INVALC,INVALC,0xB940, INVALC,INVALC,INVALC,0xBBB6,INVALC,INVALC,0xBFEC,INVALC, 0xBFEB,INVALC,INVALC,INVALC,INVALC,0xC3E3,0xC47C,0xC547, 0xA8B0,0xB064,0xB941,INVALC,0xF35B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xCBA6, INVALC,INVALC,0xA8B1,INVALC,0xA8B4,0xA8B3,0xA8B2,INVALC, INVALC,0xCBA5,INVALC,0xCDCD,INVALC,0xCDCF,0xAAEF,INVALC, INVALC,0xAAF1,0xCDCC,0xCDCE,0xAAF0,0xCDD1,0xCDD0,0xCDD2, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xD0B6,0xD0B4,0xAD7C,0xD0B3,0xADA3,0xAD7E,0xAD7B,INVALC, 0xADA4,INVALC,0xAD7D,0xADA2,INVALC,0xADA1,0xD0B5,INVALC, 0xAD7A,INVALC,INVALC,INVALC,0xB06A,0xD3EB,0xD3F1,0xB067, 0xB06E,INVALC,0xB069,0xD3EE,0xD3F0,0xB06C,0xD3EA,0xD3ED, /* Block 145, Array index 0x5100 */ 0xB068,0xB065,0xD3EC,0xB06B,0xD3EF,0xB06D,0xB066,INVALC, INVALC,INVALC,INVALC,0xD7E3,0xD7E6,0xB370,INVALC,0xB37A, 0xB376,0xD7E4,INVALC,INVALC,0xB37E,0xB377,0xB37C,0xB372, INVALC,0xB36F,0xB371,0xB37D,0xD7E5,0xB375,0xB378,0xB374, 0xB379,0xD7E7,0xB37B,0xB373,0xD7E2,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xDC4D,0xB665,0xDC4F, INVALC,0xB667,0xB669,INVALC,0xDC4E,0xB666,0xB66A,INVALC, 0xB668,INVALC,INVALC,INVALC,0xB947,0xE0A3,0xB94F,0xE07E, INVALC,0xB950,0xB945,INVALC,0xE0A1,INVALC,INVALC,0xB94A, INVALC,0xE0A2,0xB943,0xB942,INVALC,0xB94D,0xB94C,0xB94B, 0xB949,0xB94E,0xE07D,0xB944,0xB946,0xB948,INVALC,INVALC, 0xBBB8,0xBBBB,INVALC,0xBBBF,0xBBB9,0xBBBE,0xBBBC,INVALC, 0xBBB7,INVALC,0xBBBD,0xBBBA,INVALC,INVALC,INVALC,0xE852, 0xBE43,0xBE41,INVALC,0xE853,INVALC,0xBE44,0xBE42,0xE851, 0xE850,INVALC,0xBFF0,0xE84F,0xBFEE,0xBFED,0xEBD0,0xBE45, 0xBFEF,0xEBD1,0xBFF2,0xEBD2,0xBFF1,0xC1D8,0xEEC3,0xC1D7, 0xC1DC,0xC1DA,0xC1DB,0xC2E3,0xC1D9,0xEEC2,0xEBD3,0xC2E2, 0xC2E4,INVALC,0xC3E4,0xC3E5,INVALC,0xF4E0,INVALC,0xC5DE, 0xC5DD,0xA8B6,INVALC,INVALC,0xCA55,0xB06F,INVALC,0xCA52, 0xCA53,0xCA51,INVALC,0xCA54,INVALC,INVALC,0xCBAA,0xCBA7, 0xCBAC,0xCBA8,0xA8B7,0xA8BA,INVALC,0xCBA9,0xA8B9,0xCBAB, INVALC,INVALC,0xA8B8,INVALC,INVALC,INVALC,INVALC,0xCDD5, 0xCDD7,0xAAF4,0xCDD3,0xCDD6,0xCDD4,0xAAF2,0xAAF5,INVALC, 0xAAF3,INVALC,INVALC,INVALC,INVALC,0xD0B8,0xD0BC,0xD0B9, INVALC,0xADA7,INVALC,0xADA8,INVALC,0xD0BB,INVALC,0xD0BD, 0xD0BF,INVALC,0xADA5,0xD0BE,INVALC,INVALC,0xADA6,INVALC, INVALC,INVALC,INVALC,INVALC,0xD7EE,0xD0BA,0xD3F2,0xD3FB, 0xD3F9,0xD3F4,0xD3F5,0xD3FA,0xD3FC,0xB071,INVALC,0xD3F7, 0xD3F3,0xB070,0xB072,0xD3F6,0xD3FD,0xD3F8,INVALC,INVALC, 0xB3A1,0xD7F1,0xD7E9,0xD7EF,0xD7F0,0xB3A2,INVALC,0xD7E8, 0xD7EA,0xD0B7,0xD7EC,0xD7ED,0xD7EB,0xB66C,INVALC,INVALC, INVALC,0xDC56,0xEBD4,0xDC57,0xDC54,0xB3A3,0xB66E,0xDC53, /* Block 146, Array index 0x5200 */ 0xDC59,0xDC58,0xB66B,0xDC5C,0xDC52,0xDC5B,0xDC50,0xDC5A, 0xDC55,0xB66D,INVALC,0xE0AA,INVALC,0xE0A5,0xE0AB,0xE0A6, 0xE0A4,0xE0A7,0xB951,INVALC,0xE0A9,INVALC,0xE0A8,0xB952, 0xBBC1,0xBBC0,0xE46E,0xE471,0xE469,0xE46D,0xBBC2,0xE46C, 0xE46A,0xE470,0xE46B,0xE468,0xE46F,INVALC,0xE859,0xBE48, 0xF14A,0xE856,0xE857,0xE855,0xDC51,0xBE47,0xE85A,0xE854, 0xBE46,0xBE49,0xE858,0xEBD5,0xBFF3,0xEBD6,0xEBD7,INVALC, 0xEEC4,0xC1DD,0xF14B,0xF14C,INVALC,INVALC,0xF14D,0xF35D, 0xF35C,0xF4E2,INVALC,0xF4E1,0xF65B,0xF65C,0xF65A,0xF766, 0xC5B0,0xA8BB,0xADAA,0xADA9,0xB075,0xB074,0xD440,0xD441, 0xD3FE,INVALC,0xB073,0xD7F5,INVALC,0xD7F6,0xD7F2,0xB3A4, 0xD7F3,INVALC,0xD7F4,INVALC,INVALC,INVALC,INVALC,0xDC5F, 0xDC61,0xDC5D,0xDC60,0xB66F,0xDC5E,0xB670,INVALC,INVALC, 0xDD73,0xB955,0xB954,INVALC,0xB953,INVALC,0xE0AC,0xE0AD, INVALC,INVALC,0xE473,0xE475,0xBBC6,0xBBC3,INVALC,0xBBC5, 0xBBC4,0xE474,0xE472,INVALC,INVALC,INVALC,INVALC,INVALC, 0xE861,0xE85E,0xE85F,0xBE4D,0xE860,0xE85B,0xE85C,0xBE4A, INVALC,0xBE4B,0xE85D,0xBE4C,INVALC,0xEBDB,INVALC,0xEBDC, 0xEBD9,0xEBDA,0xBFF4,0xEBD8,INVALC,INVALC,INVALC,INVALC, INVALC,0xEEC8,0xEEC5,0xEEC7,0xC1E0,0xEECB,0xC1DF,0xEEC9, 0xEECC,0xEECA,0xEEC6,0xC1DE,INVALC,0xF14F,INVALC,0xF150, 0xF14E,INVALC,0xF152,0xC2E5,0xC2E6,0xF35F,0xC3E7,0xF151, 0xF35E,0xC3E6,0xF4E5,0xF4E6,0xC4BF,0xF4E4,INVALC,0xF4E3, INVALC,0xF65D,0xC548,INVALC,0xF849,0xF8C8,0xF8C7,INVALC, 0xC643,0xC65D,0xF8C9,0xF971,INVALC,0xC66F,0xA8BC,0xAAF6, INVALC,0xB956,INVALC,0xC4C0,0xA8BD,0xADAB,0xB3A5,0xB671, 0xC2E7,0xAAF7,INVALC,0xD0C1,0xD0C0,0xD442,INVALC,0xB078, 0xB076,0xB07A,0xD444,INVALC,0xB079,0xB077,INVALC,INVALC, INVALC,INVALC,0xD443,0xB3A8,0xD7FC,INVALC,0xB3A7,0xB3A9, 0xD842,0xB3AB,0xD7FE,0xD840,0xD7F7,0xB3AA,0xD843,INVALC, INVALC,0xD7F9,INVALC,0xD7FA,0xD7F8,0xB3A6,INVALC,0xD841, 0xD7FB,0xD7FD,INVALC,INVALC,INVALC,0xDC6D,INVALC,0xDC6C, /* Block 147, Array index 0x5300 */ 0xDC6A,0xDC62,0xDC71,0xDC65,0xDC6F,0xDC76,0xDC6E,0xB679, INVALC,0xB675,0xDC63,INVALC,0xDC69,0xB677,INVALC,0xDC68, 0xB678,0xB67A,0xDC6B,INVALC,0xB672,0xB673,0xDC77,0xDC75, INVALC,0xDC74,0xDC66,INVALC,0xDC72,INVALC,0xB676,INVALC, INVALC,INVALC,INVALC,0xB674,0xDC73,0xDC64,0xDC67,0xDC70, INVALC,INVALC,INVALC,INVALC,INVALC,0xE4BA,0xE0B7,INVALC, 0xE0B0,0xE0C3,0xE0CC,0xE0B3,0xB961,INVALC,0xE0C0,0xB957, 0xB959,0xB965,0xE0B1,INVALC,INVALC,0xB95A,0xB95C,0xB966, 0xB95B,INVALC,INVALC,INVALC,INVALC,0xB964,0xE0B9,INVALC, 0xE0AE,0xB962,0xE0B8,0xB95E,0xE0CA,0xB963,0xE0C8,0xE0BC, 0xE0C6,0xB960,0xE0AF,0xE0C9,0xE0C4,INVALC,0xE0CB,0xB958, INVALC,INVALC,0xB967,0xB95D,INVALC,INVALC,0xE0B5,INVALC, 0xE0BD,0xE0C1,INVALC,0xE0C5,0xB95F,0xE0B4,0xE0B2,0xE0BE, INVALC,INVALC,INVALC,INVALC,0xE0BB,0xE0BA,INVALC,0xE0BF, 0xE0C2,INVALC,0xE0C7,INVALC,INVALC,INVALC,0xE478,INVALC, 0xBBC7,0xE4A4,0xE47A,0xBBCC,0xBBD0,0xE4AD,0xE4B5,0xE4A6, 0xBBC8,INVALC,0xE4AA,0xE0B6,INVALC,0xBBC9,0xE4B1,0xE4B6, 0xE4AE,INVALC,0xE4B0,0xE4B9,0xE4B2,0xE47E,0xE4A9,INVALC, INVALC,0xBBD1,INVALC,0xBBCD,0xE47C,0xE4AB,0xBBCB,0xE4A5, 0xBBCA,0xE4B3,0xE4A2,0xE479,0xBBCE,0xE4B8,INVALC,INVALC, 0xE47B,0xE4AF,0xE4AC,0xE4A7,0xE477,0xE476,0xE4A1,0xE4B4, 0xBBCF,0xE4B7,0xE47D,0xE4A3,0xBE52,INVALC,INVALC,INVALC, INVALC,INVALC,0xBE5A,0xBE55,0xE8A4,0xE8A1,0xE867,0xBE50, INVALC,INVALC,INVALC,0xBE4F,0xBE56,INVALC,INVALC,INVALC, 0xE865,0xBE54,0xE871,0xE863,0xE864,0xBE4E,0xE8A3,0xBE58, 0xE874,0xE879,0xE873,0xEBEE,0xE86F,0xE877,0xE875,0xE868, 0xE862,0xE87D,0xBE57,0xE87E,INVALC,0xE878,INVALC,0xE86D, 0xE86B,0xE866,INVALC,INVALC,INVALC,0xE86E,0xE87B,0xE86A, 0xE87A,0xE8A2,INVALC,INVALC,0xBE53,INVALC,0xE876,0xE87C, 0xE872,0xE86C,0xBE51,INVALC,INVALC,INVALC,0xE4A8,0xE870, 0xBE59,0xE869,INVALC,INVALC,INVALC,INVALC,INVALC,0xEBF4, 0xBFF7,0xEBF3,0xEBF0,0xEC44,0xBFFB,INVALC,0xEC41,0xEBF8, /* Block 148, Array index 0x5400 */ 0xEC43,0xEBE9,0xEBF6,INVALC,0xBFFD,INVALC,0xEBE1,INVALC, 0xEBDF,0xEC42,INVALC,0xEC40,0xEBFE,0xEBED,0xEBEC,0xEBE2, 0xC040,INVALC,0xEBE8,0xEBF2,0xEBFD,0xC043,0xEC45,INVALC, 0xC1E8,0xC045,0xBFFE,0xEBE6,INVALC,0xEBEF,0xEBDE,0xEBE0, 0xBFF5,0xC042,0xBFFA,0xEBE7,0xEBF7,0xEBF1,0xC041,0xEBDD, 0xC1E3,0xEBF9,0xEBFC,0xBFFC,INVALC,0xEBEB,0xC044,0xBFF9, INVALC,INVALC,INVALC,0xBFF8,0xEBF5,0xEBFB,0xBFF6,INVALC, 0xEBE4,0xEBFA,INVALC,INVALC,0xEBE5,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xEBEA,0xEED2, INVALC,0xEED7,0xC1E5,0xC1E7,0xEEDD,0xC1E1,0xEEEC,0xEEE3, 0xEED8,0xEED9,0xEEE2,INVALC,0xC1EE,0xEEE1,0xEED1,0xEEE0, 0xEED4,0xEEED,0xC1ED,0xC1EB,0xEED5,INVALC,0xEEE8,INVALC, 0xEEDA,0xEEE7,INVALC,0xEEE9,0xEED0,0xC1E6,INVALC,0xEEEA, INVALC,INVALC,0xEEDE,INVALC,0xC1EA,0xEEDB,INVALC,INVALC, 0xC1EC,0xEEE4,INVALC,INVALC,INVALC,0xC1E4,0xEED6,0xEEE5, INVALC,0xEEDF,0xEBE3,0xEEE6,0xEED3,INVALC,0xC1E9,INVALC, 0xEEEB,INVALC,0xC1E2,0xEECE,INVALC,INVALC,INVALC,INVALC, 0xF160,0xF159,0xC2E9,INVALC,0xF154,0xF163,0xF15B,0xEEDC, INVALC,0xF165,0xF155,INVALC,0xC2E8,0xF15F,0xC2EA,0xC2F2, 0xC2F0,0xF161,0xC2F1,0xF157,INVALC,0xF158,0xF15D,0xF162, INVALC,0xEECD,0xC2EB,0xF16A,0xF167,0xF16B,0xF15E,0xF15A, 0xF168,0xF36A,0xF15C,INVALC,0xC2EE,INVALC,0xC2ED,0xEECF, 0xC2EF,0xF164,0xF166,0xC2EC,0xF169,0xF153,INVALC,0xF156, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xF373,INVALC,0xF363,0xC3EB,0xF371,INVALC,INVALC,0xF361, 0xC3EC,INVALC,0xF36C,INVALC,0xF368,0xC3F1,0xF372,0xF362, 0xF365,0xC3E9,0xF374,INVALC,0xF36D,0xF370,0xC3EF,0xC3F4, 0xC3F2,0xF369,0xF364,INVALC,0xC3ED,0xC3EE,0xF360,0xC3EA, INVALC,0xC3E8,0xC3F0,0xF36F,0xC3F3,INVALC,0xF36B,0xF375, 0xC3F5,INVALC,INVALC,INVALC,0xF367,INVALC,0xF36E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xF4F3,0xF542,0xF4F5, 0xF4FC,0xF366,0xF4FA,0xF4E9,0xF540,0xC4C3,0xF4ED,0xF4FE, /* Block 149, Array index 0x5500 */ 0xF4F4,INVALC,INVALC,0xC4C2,INVALC,INVALC,0xF544,0xF4F6, INVALC,0xF4FB,0xF4FD,0xF4E7,0xF541,0xF4F2,0xF4F7,0xF4EB, 0xF4EF,0xF543,0xF4F9,0xF4E8,0xF4EC,0xF4EE,0xF4F8,INVALC, 0xC4C1,0xF4F1,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xF4EA,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xF4F0,0xF661,0xF666,0xC54F,0xF668,INVALC,0xC549,INVALC, 0xF664,0xF66A,0xC54E,0xC54A,INVALC,0xC54B,0xF660,0xF667, 0xC54D,0xF665,0xC54C,0xF65F,0xF663,0xF662,INVALC,0xF65E, 0xF669,INVALC,INVALC,INVALC,0xC5B1,0xF76D,0xF770,0xF76C, 0xF76E,0xF76F,0xF769,0xF76A,0xF767,INVALC,INVALC,0xF76B, 0xF768,0xC5B2,0xC5B3,INVALC,INVALC,0xF84B,INVALC,0xF84D, INVALC,INVALC,INVALC,INVALC,INVALC,0xF84C,0xF84E,INVALC, 0xC5E0,INVALC,0xF84A,0xC5DF,0xC5E1,INVALC,INVALC,INVALC, 0xF8CB,0xF8CC,0xC644,0xF8CA,INVALC,0xF953,0xF952,0xF954, 0xC65F,0xF955,0xC65E,0xF956,0xF972,0xF975,0xF974,0xC668, 0xF973,INVALC,INVALC,INVALC,0xC672,0xC670,0xC671,0xC677, 0xF9C0,0xF9C1,0xF9BF,0xF9C9,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 150, Array index 0x5600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xAAF8, INVALC,INVALC,0xD844,0xDC78,0xE8A5,0xF376,INVALC,INVALC, 0xAAF9,INVALC,0xADAC,0xB07B,INVALC,INVALC,0xD845,INVALC, 0xD846,0xB3AC,INVALC,0xB67D,0xDC7A,0xDC79,0xB6A3,0xB67C, 0xDC7B,0xB67E,0xB6A2,0xB6A1,0xB67B,INVALC,INVALC,INVALC, 0xB968,INVALC,INVALC,0xE0D0,0xE0CE,INVALC,0xE0CF,0xE0CD, INVALC,0xBBD2,INVALC,0xBBD5,0xBBD7,0xBBD6,INVALC,INVALC, 0xBBD3,0xBBD4,INVALC,0xE8A7,0xE8A6,0xBE5B,0xE8A8,INVALC, 0xE8A9,0xBE5C,INVALC,INVALC,INVALC,0xEC4D,0xEC4B,0xEEF3, INVALC,0xEC49,0xEC4A,0xC046,0xEC46,0xEC4E,0xEC48,0xEC4C, 0xEEEF,INVALC,INVALC,0xEEF1,INVALC,0xEEF2,0xC1F3,0xEEEE, 0xC1F2,0xEEF0,0xC1EF,0xC1F0,0xC1F1,0xEC47,INVALC,INVALC, 0xC2F5,0xF16E,0xF16C,0xF16D,0xC2F3,0xC2F6,0xC2F4,INVALC, INVALC,INVALC,0xF377,0xF378,0xC3F6,INVALC,0xF545,0xF547, 0xF546,0xC4C4,0xC550,0xF66D,0xF66C,0xF66B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 151, Array index 0x5700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0xAAFA,INVALC,0xC9AA,INVALC, 0xCA58,0xA6E9,0xCA56,0xCA59,0xCA57,INVALC,INVALC,INVALC, 0xCBAE,INVALC,0xA8C1,INVALC,0xA8C2,0xCBB0,0xA8BF,0xCBAF, 0xCBAD,0xA8C0,0xA8BE,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xCDD8,0xCDDB,0xAAFD,0xCDDA,0xCDD9,INVALC,0xAAFC, 0xAAFB,INVALC,0xAB40,0xCDDC,0xAAFE,INVALC,INVALC,INVALC, INVALC,INVALC,0xD0C6,0xADAE,0xADAF,0xADB0,0xD0C7,0xD0C3, 0xADAD,0xD0C4,INVALC,0xD0C5,0xD0C2,INVALC,INVALC,INVALC, 0xB0A4,INVALC,INVALC,0xB0A1,0xD445,0xB0A2,0xB0A5,0xD446, INVALC,0xB07E,0xB07C,0xB07D,0xB0A3,INVALC,INVALC,INVALC, INVALC,INVALC,0xB3AD,0xD849,0xB3B5,0xD848,INVALC,0xD84B, 0xB3B1,0xD84A,0xB6AB,0xB3AF,0xB3B2,0xB3AE,0xB3B3,0xB3B4, 0xB3B0,INVALC,INVALC,INVALC,0xD847,0xB6A7,0xDC7D,INVALC, 0xDCA3,INVALC,INVALC,0xDCA2,0xB6AC,0xB6A8,0xB6A9,0xDC7C, 0xDC7E,0xDCA1,0xB6A4,0xB6A6,INVALC,0xB6AA,0xB6A5,INVALC, INVALC,0xE0D3,0xE0D1,0xE0D2,0xB96A,0xB96B,INVALC,0xE0D4, 0xB969,0xBBD8,INVALC,0xBBDA,0xBBD9,INVALC,0xE4BB,INVALC, INVALC,0xE4BC,0xE8AB,INVALC,0xE8AA,INVALC,INVALC,0xC047, 0xC048,0xEC4F,0xC049,INVALC,0xEEF6,INVALC,0xEEF4,INVALC, 0xEEF5,0xC1F4,INVALC,0xF16F,0xC3F7,INVALC,INVALC,INVALC, 0xC1F5,0xAB41,INVALC,0xB0A6,0xD447,INVALC,INVALC,0xD84C, 0xB3B6,0xB6AD,0xDCA4,0xDCA6,0xB6AF,0xB6AE,0xB6B0,0xB6B1, 0xDCA5,0xB96E,0xB96F,0xB96D,0xBBDB,0xB96C,0xE0D5,INVALC, INVALC,INVALC,0xBBDC,0xE8AC,0xEC50,0xC04A,0xC1F6,0xF170, 0xF174,0xC2F9,0xF171,0xC2FA,0xC2F8,0xF175,0xC2FB,0xF173, INVALC,0xF379,0xC2F7,0xC3F8,INVALC,0xF8CD,INVALC,INVALC, 0xAB42,0xB3B8,0xB3B7,INVALC,INVALC,INVALC,INVALC,0xB6B2, 0xDCA8,0xDCA7,0xB6B3,INVALC,INVALC,0xE0D9,0xB973,0xB970, 0xE0D8,0xB972,0xE0D6,0xB971,INVALC,0xE0D7,INVALC,0xE4BD, /* Block 152, Array index 0x5800 */ 0xBBDD,INVALC,0xE8AF,INVALC,0xBE5D,0xE8AD,0xBE5E,0xBE5F, 0xE8AE,0xBE60,INVALC,0xEC51,INVALC,0xC04E,0xC04B,0xC050, 0xEC53,0xC04C,0xEC52,0xC04F,INVALC,INVALC,0xC04D,INVALC, 0xEEF9,0xEEFB,INVALC,INVALC,0xC1F7,0xEEFA,0xC1F8,0xEEF8, 0xEEF7,INVALC,0xF177,0xF176,0xC2FC,0xF178,0xF37E,0xC3FA, 0xF37D,0xF37A,0xC3F9,0xF37B,0xF37C,INVALC,0xF548,0xF549, 0xC4C5,INVALC,0xC553,INVALC,INVALC,0xF66E,INVALC,INVALC, 0xC551,0xC552,0xF66F,INVALC,INVALC,0xC5B4,0xC5B5,0xF771, INVALC,INVALC,0xC645,0xF8CF,0xC647,INVALC,0xF8CE,0xF8D0, 0xC646,0xF957,INVALC,0xF9AD,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0xAB43,INVALC,INVALC,INVALC,0xB974,INVALC, 0xE4BE,INVALC,0xE8B0,0xC051,0xC052,INVALC,0xAB44,INVALC, 0xBE61,0xC3FB,0xADB1,INVALC,INVALC,INVALC,0xC053,INVALC, 0xC5E2,0xADB2,0xD84D,INVALC,0xDCA9,INVALC,0xDCAB,INVALC, 0xDCAA,INVALC,0xE0DD,0xE0DA,0xB975,INVALC,0xB976,0xE0DB, 0xE0DC,INVALC,0xE4C0,0xE4C5,0xBBDE,0xE4BF,0xE4C1,0xE4C8, 0xE4C3,0xE4C7,0xE4C4,0xE4C2,0xE4C6,0xBBDF,INVALC,INVALC, 0xE8B3,INVALC,0xE8B1,0xBE63,INVALC,0xBE62,0xE8B2,0xBE64, INVALC,INVALC,INVALC,INVALC,0xEC56,INVALC,INVALC,0xEC55, 0xC054,0xEC54,0xEEFC,INVALC,0xEEFE,0xEF41,0xEF40,INVALC, 0xC1F9,0xEEFD,0xF1A1,0xC2FD,0xF17D,0xF1A2,0xC2FE,INVALC, 0xF17B,INVALC,0xF17E,0xF17C,0xF179,0xC340,0xF17A,INVALC, INVALC,INVALC,INVALC,0xF3A1,INVALC,INVALC,0xF3A3,0xF3A2, INVALC,0xF54A,INVALC,0xF54B,INVALC,INVALC,INVALC,0xF670, INVALC,0xC5B7,INVALC,0xC5B6,0xF84F,0xF850,0xC648,0xF8D1, INVALC,0xC669,INVALC,0xADB3,0xB6B4,0xE4CA,0xE4C9,0xE8B5, 0xE8B4,INVALC,INVALC,0xC1FA,0xEF43,0xEF42,0xF1A5,0xF1A3, 0xF1A6,0xF1A4,INVALC,INVALC,0xC3FC,0xF3A4,0xF3A5,0xF3A6, INVALC,0xF671,INVALC,0xF772,INVALC,0xF8D2,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xADB4,INVALC,INVALC, 0xEC57,0xEF44,INVALC,0xADB5,INVALC,INVALC,0xBBE0,INVALC, 0xEC58,0xC341,0xF1A7,0xC3FD,INVALC,0xF54C,0xF54D,0xC554, /* Block 153, Array index 0x5900 */ 0xF851,0xADB6,0xB3BB,0xB3BC,0xD84E,0xB6B5,0xB6B6,0xDCAC, 0xB6B7,INVALC,0xB97A,INVALC,0xB97C,0xE0DF,0xE0E0,0xE0DE, 0xB977,0xB978,0xB97B,0xB979,INVALC,INVALC,0xE4CB,0xBBE1, 0xBBE2,INVALC,INVALC,0xE8BC,0xBE67,0xE8B7,0xE8B6,INVALC, 0xE8BB,0xBE65,INVALC,INVALC,0xC05B,INVALC,0xE8B8,0xE8BD, 0xE8BA,0xE8B9,INVALC,0xBE66,INVALC,0xC059,INVALC,0xEC5A, 0xC055,INVALC,0xEC5B,INVALC,INVALC,0xEC59,INVALC,0xC058, 0xC056,0xC05A,INVALC,0xC057,INVALC,INVALC,INVALC,INVALC, INVALC,0xEF45,INVALC,0xEF4A,0xEF46,0xEF49,0xC1FB,INVALC, 0xEDD4,0xEF48,0xEF47,INVALC,0xC344,0xC342,0xC345,0xC343, 0xF1A8,0xF1A9,0xF1AA,0xC346,INVALC,INVALC,INVALC,0xF3AA, 0xC440,0xF3A8,INVALC,0xC441,0xF3A7,0xF3A9,0xC3FE,0xF551, 0xF54E,INVALC,0xF54F,0xF550,0xF672,0xC556,INVALC,0xC555, INVALC,0xF774,0xF773,0xC5B8,INVALC,INVALC,INVALC,0xC5E3, 0xC649,0xC660,0xF958,0xF9AE,0xF9AF,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xADB7,0xDCAD,INVALC,INVALC,0xE0E1,0xE4CC,0xE4CD,0xBBE3, INVALC,0xBBE4,0xE8BE,0xBE68,INVALC,INVALC,0xC1FC,INVALC, 0xF1AB,INVALC,0xC347,0xF3AD,0xC442,0xF3AC,0xF3AE,0xF3AB, 0xF675,0xF552,0xF553,INVALC,0xC4C6,INVALC,0xF674,INVALC, INVALC,0xF673,INVALC,0xF775,0xF9B0,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0xADB8,INVALC,INVALC,INVALC,0xADB9, INVALC,INVALC,0xB0A7,0xD448,INVALC,0xD84F,INVALC,0xB6B8, INVALC,0xB6BB,0xB6B9,0xDCAE,INVALC,0xB6BD,INVALC,0xB6BA, INVALC,INVALC,0xB6BC,INVALC,0xB97E,INVALC,0xE0E2,INVALC, INVALC,0xE0E3,0xE8C0,INVALC,0xB97D,0xB9A1,0xB9A2,INVALC, /* Block 154, Array index 0x5A00 */ 0xE4CF,INVALC,0xE4CE,0xBBE5,INVALC,0xBBE6,INVALC,0xE4D0, 0xE8BF,0xBBE8,0xBE69,INVALC,0xBBE7,INVALC,INVALC,INVALC, 0xC05C,0xE8C1,0xBE6B,0xBE6A,0xE8C2,0xE8C5,0xE8C3,0xE8C4, 0xBE6C,INVALC,0xC061,0xC05F,INVALC,INVALC,0xC05E,0xEC5D, INVALC,0xC060,INVALC,INVALC,0xEC5C,0xEF4B,INVALC,0xEC5E, 0xC05D,0xEC5F,0xEF4E,0xEF4C,0xEF4D,0xEF52,0xC34B,0xEF51, 0xEF54,0xEF53,0xEF50,0xEF4F,INVALC,0xC1FD,INVALC,INVALC, INVALC,INVALC,0xF1AE,INVALC,0xF1AD,0xC34A,0xC348,0xC349, INVALC,0xF1AC,INVALC,0xF3B1,INVALC,0xC443,INVALC,0xF3B0, 0xF3AF,0xC444,INVALC,0xF558,0xF557,INVALC,0xF555,INVALC, 0xF554,0xC4C8,0xC4C7,0xF559,0xF776,0xC5B9,0xF677,0xC557, 0xF676,0xF556,INVALC,0xF777,0xC5E4,INVALC,0xC661,0xF959, INVALC,0xF9B1,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xADBA,0xD850, 0xEF55,0xADBB,INVALC,INVALC,0xE4D2,0xE4D1,0xEC60,INVALC, INVALC,0xEF57,INVALC,0xEF56,INVALC,0xC34C,0xF3B2,0xF3B3, 0xC4C9,INVALC,INVALC,0xF9B2,0xB0A8,0xB6BF,0xB6BE,0xE0E4, 0xE0E6,0xB9A4,0xE0E5,0xB9A3,0xB9A5,0xE0E7,INVALC,INVALC, INVALC,0xE4D4,0xE4D6,0xE4D5,INVALC,0xE4D8,INVALC,INVALC, INVALC,0xBBE9,0xE4D7,0xE4D3,INVALC,INVALC,INVALC,0xE4D9, INVALC,0xE8CC,INVALC,0xE8CF,0xE8D1,0xE8C7,0xE8CB,0xE8C8, 0xBE6E,0xBE71,0xBE73,0xE8C9,0xE8CA,0xBE72,0xE8CD,0xE8D0, 0xE8CE,0xBE74,INVALC,0xBE70,0xE8C6,0xBE6D,INVALC,0xBE6F, INVALC,INVALC,0xC063,0xEC66,0xEC64,0xEC63,INVALC,0xEC69, INVALC,0xEC68,0xEC67,INVALC,0xEC62,0xC062,0xEC61,INVALC, 0xEC65,0xC064,INVALC,INVALC,0xEF5A,INVALC,0xEF5E,0xEF5B, 0xEF5D,0xEF5C,0xEF59,0xEF5F,0xEF62,0xEF60,0xEF61,0xC240, /* Block 155, Array index 0x5B00 */ INVALC,0xC1FE,0xEF58,0xEF63,0xF1B3,0xF1B6,0xF1B8,0xF1B7, INVALC,0xF1B1,0xF1B5,0xF1B0,INVALC,0xF1B2,0xC34D,0xF1AF, INVALC,0xF1B4,INVALC,INVALC,0xF3C0,0xF3B5,0xC445,INVALC, INVALC,0xC446,0xF3B4,0xF3B9,0xF3BF,0xF3B7,0xF3BE,INVALC, 0xF3BB,INVALC,0xF3BA,0xF3BD,0xF3B8,0xF3B6,INVALC,0xF3BC, INVALC,0xF560,0xF55E,0xC4CA,0xF55D,0xF563,0xF561,INVALC, 0xC4CB,0xF55C,0xF55A,INVALC,0xF55B,0xC4CD,0xF55F,0xC4CC, 0xF562,0xF678,0xF67E,INVALC,INVALC,0xF679,0xC55B,0xF6A1, 0xC55A,0xF67D,0xF67C,0xC559,0xF67B,0xC558,0xF67A,INVALC, 0xF77D,0xF7A1,0xF77E,INVALC,0xF77B,0xC5BB,0xF778,0xF77C, 0xF7A3,INVALC,0xF7A2,0xF779,0xF77A,0xC5BA,0xF852,0xC5E7, INVALC,0xF853,0xC5E5,0xC5E6,INVALC,INVALC,0xF8D3,0xC64A, 0xF976,INVALC,0xC66A,INVALC,0xF9B3,0xC66B,0xF9B4,0xF9B5, 0xF9C3,0xF9C2,0xC67A,0xF9CD,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xB0A9,INVALC,INVALC,0xE0E9,INVALC,0xE0E8,INVALC,0xBBEA, 0xBBEB,0xE4DA,INVALC,0xE8D2,0xEC6C,INVALC,INVALC,0xBE75, 0xC065,0xEC6A,INVALC,0xEC6D,0xC066,INVALC,0xEF64,0xEC6B, 0xF1B9,0xC34E,0xF3C1,INVALC,INVALC,INVALC,0xF566,0xF564, INVALC,INVALC,0xF565,INVALC,INVALC,0xF6A2,INVALC,0xC55C, 0xF7A4,0xC5EA,0xC5BC,0xC5E8,0xC5E9,0xF8D4,0xC662,INVALC, 0xB0AA,INVALC,INVALC,INVALC,0xF1BA,INVALC,INVALC,0xD449, INVALC,0xB9A6,INVALC,0xE4DB,INVALC,INVALC,0xBBEC,0xE4DC, INVALC,INVALC,INVALC,0xE8D4,0xE8D3,0xC068,0xBE76,0xBE77, INVALC,0xE8D7,0xE8D6,0xE8D5,INVALC,INVALC,0xEC6E,0xEC71, INVALC,0xEC70,0xEC6F,0xC067,0xEF68,0xEF66,0xEF65,INVALC, /* Block 156, Array index 0x5C00 */ INVALC,0xEF67,INVALC,0xC34F,0xF1BC,0xF1BD,0xC350,INVALC, 0xF1BB,INVALC,0xF3C3,0xF3C2,0xF3C5,0xC447,0xF3C4,INVALC, 0xF567,0xF569,0xF568,INVALC,INVALC,0xF6A3,0xF6A6,0xF6A4, 0xF6A5,0xF7A5,0xC5BD,INVALC,INVALC,INVALC,0xF854,0xF855, 0xF856,INVALC,0xC64B,0xC663,0xF9B6,0xB0AB,INVALC,0xBE78, 0xC069,0xF1BE,INVALC,0xF7A6,INVALC,INVALC,0xF9C4,0xD44A, INVALC,0xC67B,0xB0AC,0xEC72,INVALC,0xF1BF,INVALC,0xF3C6, INVALC,INVALC,0xF6A7,0xF7A7,0xB0AD,INVALC,0xE4DD,0xE4DE, INVALC,0xBBED,0xBBEE,0xE8D9,0xBE7A,0xBE79,0xE8D8,INVALC, 0xEF69,INVALC,0xF1C0,0xF1C2,0xF1C1,0xC353,0xC352,0xC351, INVALC,0xC55E,0xF6A8,INVALC,0xC55D,0xF7A9,0xF7A8,INVALC, 0xC64C,0xF8D5,0xB3BD,0xE0EA,INVALC,INVALC,INVALC,0xE4E1, 0xE4DF,0xE4E0,INVALC,INVALC,0xE8E2,INVALC,0xE8DD,0xE8DA, 0xE8E1,INVALC,INVALC,INVALC,0xE8E3,INVALC,INVALC,0xBE7C, 0xE8E0,0xE8DC,INVALC,INVALC,0xE8DB,0xE8DF,0xE8DE,0xBE7B, INVALC,INVALC,0xEC7D,0xEC78,0xEC76,0xECA1,0xEC77,INVALC, 0xEC73,INVALC,0xEC79,INVALC,INVALC,0xEC74,0xEF72,0xEC75, 0xECA2,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xEC7C,0xC06A,0xEC7B,0xEC7A,INVALC,0xEC7E,INVALC,INVALC, INVALC,INVALC,0xEF6A,0xEF6D,INVALC,INVALC,0xEF6C,INVALC, 0xEF74,0xEF6F,0xEF73,INVALC,0xEF71,0xEF70,0xEF6E,INVALC, 0xEF6B,INVALC,0xC243,0xC242,INVALC,0xC244,0xC241,0xEF75, INVALC,INVALC,INVALC,INVALC,INVALC,0xF1C8,0xF1CB,INVALC, 0xF1C9,0xF1CD,INVALC,INVALC,INVALC,0xF1CE,INVALC,0xF1C6, 0xC358,0xF1C7,INVALC,0xF1C5,0xF1CC,INVALC,0xF1C4,0xF1C3, 0xC357,0xC355,0xC354,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0xF1CA,0xF3CF,0xF3D5,0xC44A,0xF3D0, INVALC,0xF3D3,0xF3D7,0xC44B,0xF3D2,INVALC,0xF3CA,INVALC, 0xF3C9,0xF3D6,0xF3CD,INVALC,0xF3CB,0xF3D4,0xF3CC,0xC449, 0xC448,INVALC,0xF3C7,0xF3C8,0xF3D1,INVALC,INVALC,INVALC, 0xF3CE,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0xF56C, 0xF56F,INVALC,INVALC,INVALC,INVALC,0xC356,INVALC,INVALC, /* Block 157, Array index 0x5D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,0xF56D,0xF573,0xF571, 0xF56B,0xF576,INVALC,0xF56A,INVALC,0xC4CF,0xF572,INVALC, INVALC,INVALC,0xF56E,0xC4CE,0xF575,INVALC,INVALC,0xF574, INVALC,INVALC,INVALC,INVALC,0xF6AB,0xF6AA,INVALC,INVALC, INVALC,0xF6B1,INVALC,0xF6AD,0xF6B0,0xC560,INVALC,INVALC, 0xF6AE,0xF6AF,INVALC,0xF6A9,0xF6AC,0xC55F,INVALC,INVALC, INVALC,0xC5BF,0xF7B4,0xF7AF,0xF7B3,INVALC,0xF7B6,0xF7B2, INVALC,0xF7AE,INVALC,0xC5C1,0xF7B1,0xF7B5,0xC5C0,0xF7AC, 0xF570,0xF7B0,INVALC,INVALC,0xF7AD,INVALC,0xF7AA,INVALC, 0xF7AB,0xC5BE,0xF85A,0xF85C,0xF85F,0xF85B,0xF860,INVALC, 0xF859,INVALC,0xF857,INVALC,0xC5EB,0xF85D,0xC5ED,0xC5EC, 0xF858,0xF85E,INVALC,INVALC,INVALC,INVALC,0xF8DA,0xC64D, 0xF8DB,INVALC,0xF8D9,0xF8D6,INVALC,INVALC,0xF8D8,0xF8D7, 0xF95A,INVALC,INVALC,INVALC,INVALC,0xF95C,0xF95B,INVALC, INVALC,0xF979,INVALC,0xF978,0xF977,0xF97A,INVALC,0xC673, 0xC674,0xF9CA,0xF9CE,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xB3BE,0xDCAF,0xE0ED, INVALC,0xB9A7,0xE0EB,INVALC,INVALC,0xE0EC,INVALC,INVALC, INVALC,0xE4E2,0xE4E3,0xBBF1,0xBBEF,0xE4E4,0xBBF0,0xE8E8, INVALC,0xE8EB,0xE8E5,0xE8EC,0xE8E4,0xE8E6,INVALC,0xE8E7, /* Block 158, Array index 0x5E00 */ 0xE8EA,INVALC,INVALC,0xBEA1,0xE8EF,0xE8EE,0xBE7D,0xE8E9, 0xE8ED,0xBE7E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xECAC,INVALC,0xC06F,INVALC,0xECA7,0xC06B,INVALC,0xECA4, 0xECAA,0xECAD,INVALC,0xC070,INVALC,0xECA9,0xECA6,0xECAE, 0xECA5,INVALC,0xECAB,0xC06C,INVALC,0xECA3,0xC06D,INVALC, 0xC06E,0xECA8,INVALC,INVALC,INVALC,0xEFA9,0xEF7A,0xEF7B, 0xEF7E,0xEF7C,INVALC,0xEF76,INVALC,INVALC,0xEF79,0xEFA5, 0xEF7D,INVALC,INVALC,0xC245,INVALC,0xEFA7,0xEFA4,0xC246, 0xEFA6,0xEF77,0xEFA2,0xEFA3,INVALC,0xEFA1,INVALC,INVALC, INVALC,INVALC,0xF1D2,0xF1D4,0xF1D7,INVALC,INVALC,0xF1D1, INVALC,0xC359,0xF1D9,0xF1D0,0xF1DA,INVALC,0xF1D6,0xF1D8, 0xF1DC,0xF1D5,0xF1DD,0xF1D3,0xF1CF,0xC35A,INVALC,0xF1DB, 0xC35B,0xC44D,INVALC,INVALC,INVALC,INVALC,INVALC,0xEF78, 0xF3F1,0xF3E8,0xC44F,0xF3E4,0xC450,INVALC,INVALC,0xF3ED, 0xF3E7,0xF3DD,0xC44E,0xF3EA,0xF3E5,0xF3E6,INVALC,0xF3D8, 0xF3DF,0xF3EE,INVALC,0xF3EB,INVALC,0xF3E3,INVALC,0xF3EF, 0xF3DE,0xF3D9,0xF3EC,INVALC,0xF3DB,0xF3E9,0xF3E0,0xF3F0, 0xF3DC,0xC44C,0xF3DA,0xF3E1,0xF3E2,INVALC,INVALC,INVALC, 0xF57D,INVALC,0xF57B,INVALC,0xF5A2,INVALC,0xF5AE,0xF5A5, 0xF57C,0xF578,0xF5A7,0xF57E,0xF5A3,0xF57A,0xF5AA,0xF577, 0xF5A1,0xF5A6,0xF5A8,0xF5AB,0xF579,INVALC,0xF5AF,0xF5B0, 0xF5A9,0xF5AD,0xF5A4,INVALC,0xF6C1,0xF6C4,INVALC,0xC561, INVALC,0xF6C3,0xF6C8,0xF6C6,0xC562,0xF6BD,0xF6B3,0xF6B2, 0xC564,0xF6BF,0xF6C0,0xF6BC,0xF6B4,INVALC,0xF6B9,0xF5AC, INVALC,0xF6B5,0xC563,0xF6BB,INVALC,0xF6BA,INVALC,0xF6B6, 0xF6C2,INVALC,0xF6B7,0xF7BB,0xF6C5,0xF6C7,0xF6BE,0xF6B8, 0xF7BC,0xF7BE,0xF7B8,0xC5C2,INVALC,0xF7C5,0xF7C3,0xC5C3, 0xF7C2,0xF7C1,0xF7BA,0xF7B7,0xF7BD,0xF7C6,0xF7B9,0xF7BF, INVALC,0xF869,0xF86E,0xF864,0xF867,0xC5EE,0xF86B,INVALC, 0xF872,0xF7C0,INVALC,0xF865,0xF86F,0xF873,0xF86A,0xF863, 0xF86D,INVALC,0xF86C,0xF871,0xF870,0xF7C4,0xF868,0xF862, 0xF866,0xC64E,0xC64F,0xF861,INVALC,0xF8E6,0xF8DD,0xF8E5, /* Block 159, Array index 0x5F00 */ 0xF8E2,0xF8E3,0xF8DC,0xF8DF,0xF8E7,0xF8E1,0xF8E0,0xF8DE, INVALC,0xF8E4,INVALC,0xF95D,INVALC,0xF95E,INVALC,0xF960, 0xF95F,0xF962,0xF961,0xF97C,0xF97B,0xF9B7,INVALC,0xF9B8, INVALC,0xF9C5,0xC678,0xC67C,INVALC,0xF9CF,0xC67D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xB3BF,INVALC,INVALC, INVALC,0xC4D0,0xF6C9,INVALC,0xC650,0xC651,INVALC,0xB3C0, 0xE0EE,INVALC,0xB9A8,0xE8F0,INVALC,INVALC,0xECB0,0xECB1, 0xECAF,0xEFAB,0xEFAA,0xC247,0xF1DF,0xEFAC,0xF1DE,INVALC, INVALC,0xF3F3,0xC451,0xC453,0xF3F2,INVALC,INVALC,0xC452, INVALC,0xF5B1,0xF5B3,0xF5B2,0xF6CA,0xC565,INVALC,0xC5EF, 0xF8E8,0xF963,INVALC,INVALC,0xF9D2,0xB3C1,INVALC,0xE4E5, INVALC,0xBEA2,INVALC,INVALC,INVALC,0xECB3,0xECB2,INVALC, 0xEFAD,INVALC,INVALC,INVALC,0xC454,0xC4D1,0xF7C7,0xF9CB, INVALC,INVALC,INVALC,0xB3C2,0xBBF2,INVALC,0xBEA3,INVALC, 0xF3F4,INVALC,0xF874,0xB6C0,INVALC,INVALC,INVALC,INVALC, 0xEFAE,INVALC,INVALC,INVALC,0xC664,0xB6C1,0xBEA4,0xC248, 0xF875,0xB6C2,INVALC,0xE8F1,0xC072,0xECB4,0xECB5,INVALC, 0xC071,INVALC,0xEFAF,0xC24C,0xC24A,0xC24B,0xC249,0xF1E0, 0xC35C,INVALC,INVALC,INVALC,0xF5B5,0xF5B4,0xF5B7,0xF5B6, 0xC4D2,INVALC,INVALC,0xF6CB,INVALC,0xF6CD,0xF6CC,0xC566, 0xF7C8,INVALC,0xF876,0xF877,0xC5F0,0xF964,0xF97D,0xC675, INVALC,0xDCB0,0xECB6,0xEFB0,0xF3F5,0xE0EF,INVALC,0xEFB1, /* Block 160, Array index 0x6000 */ 0xF1E2,0xF1E1,INVALC,INVALC,INVALC,INVALC,0xF878,0xC652, INVALC,0xF965,0xF97E,INVALC,INVALC,INVALC,0xB9A9,0xE8F2, 0xE8F3,INVALC,0xECB7,0xB9AA,INVALC,0xC35D,0xF1E3,INVALC, 0xF6CF,0xC567,0xF6D0,0xF6CE,0xF879,INVALC,0xF8E9,INVALC, 0xB9AB,INVALC,0xEFB4,0xEFB3,0xEFB2,0xF1E4,INVALC,INVALC, 0xF1E8,0xF1E7,0xF1E6,0xF1E5,0xC35E,0xF3F6,0xF5B9,0xC4D3, 0xF5B8,0xF6D1,0xF7CB,0xF7CA,0xC5C4,0xF7C9,0xF87C,0xF87B, 0xF87A,INVALC,INVALC,0xBBF3,INVALC,0xECB8,0xC24D,INVALC, 0xF3F7,0xF3F8,0xF7CC,0xF87D,INVALC,INVALC,0xF8EA,0xF966, 0xF9B9,0xF9D4,0xBBF4,0xC24E,0xF1E9,0xF3F9,0xF6D2,0xF87E, INVALC,INVALC,0xBEA6,INVALC,0xEFB5,0xF1EA,0xF3FA,0xF3FB, 0xF3FC,0xF5BE,INVALC,0xF5BA,0xC568,0xF5BD,0xF5BC,0xC4D4, 0xF5BB,0xC4D6,INVALC,0xC4D5,0xF6D4,0xF6D3,0xC569,0xC56A, INVALC,INVALC,0xC5C6,0xF7CD,0xC5C5,INVALC,0xF8A3,0xF8A4, 0xF8A2,0xF8A1,0xC654,INVALC,0xF8EB,0xF8EC,0xF8ED,0xC653, 0xF967,0xF96A,0xF969,0xF968,INVALC,INVALC,0xF9D3,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xC073,INVALC,INVALC, 0xC365,0xF5BF,0xF6D5,INVALC,0xC5C7,0xF7CE,INVALC,INVALC, 0xF9D5,INVALC,INVALC,INVALC,0xC074,INVALC,INVALC,INVALC, 0xEFB6,INVALC,0xF7CF,INVALC,0xF9A1,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 251, Array index 0x6100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0xC94A,0xDDFC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 255, Array index 0x6200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xA14A,0xA157,INVALC,0xA159,0xA15B,0xA15F,0xA160,0xA163, 0xA164,0xA167,0xA168,0xA16B,0xA16C,0xA16F,0xA170,0xA173, 0xA174,0xA177,0xA178,0xA17B,0xA17C,INVALC,INVALC,INVALC, INVALC,0xA1C6,0xA1C7,0xA1CA,0xA1CB,0xA1C8,0xA1C9,0xA15C, 0xA14D,INVALC,0xA14F,INVALC,0xA151,0xA152,0xA153,0xA154, INVALC,0xA17D,0xA17E,0xA1A1,0xA1A2,0xA1A3,0xA1A4,0xA1CC, 0xA1CD,0xA1CE,0xA1DE,0xA1DF,0xA1E0,0xA1E1,0xA1E2,INVALC, INVALC,0xA24C,0xA24D,0xA24E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 256, Array index 0x6300 */ INVALC,0xA149,INVALC,0xA1AD,0xA243,0xA248,0xA1AE,INVALC, 0xA15D,0xA15E,0xA1AF,0xA1CF,0xA141,0xA1D0,0xA144,0xA241, 0xA2AF,0xA2B0,0xA2B1,0xA2B2,0xA2B3,0xA2B4,0xA2B5,0xA2B6, 0xA2B7,0xA2B8,0xA147,0xA146,0xA1D5,0xA1D7,0xA1D6,0xA148, 0xA249,0xA2CF,0xA2D0,0xA2D1,0xA2D2,0xA2D3,0xA2D4,0xA2D5, 0xA2D6,0xA2D7,0xA2D8,0xA2D9,0xA2DA,0xA2DB,0xA2DC,0xA2DD, 0xA2DE,0xA2DF,0xA2E0,0xA2E1,0xA2E2,0xA2E3,0xA2E4,0xA2E5, 0xA2E6,0xA2E7,0xA2E8,INVALC,0xA242,INVALC,INVALC,0xA1C4, INVALC,0xA2E9,0xA2EA,0xA2EB,0xA2EC,0xA2ED,0xA2EE,0xA2EF, 0xA2F0,0xA2F1,0xA2F2,0xA2F3,0xA2F4,0xA2F5,0xA2F6,0xA2F7, 0xA2F8,0xA2F9,0xA2FA,0xA2FB,0xA2FC,0xA2FD,0xA2FE,0xA340, 0xA341,0xA342,0xA343,0xA161,0xA155,0xA162,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0xA14E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0xA15A,INVALC,INVALC, }; #endif /* ICONV_FROM_UCS_CCS_BIG5 && !defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * 16-bit UCS -> big5 size-optimized table (38748 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_BIG5) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t from_ucs_size_big5[] = { 0x0235, /* Ranges number */ 0x02F3, /* Unranged codes number */ 0x45C8, /* First unranged code index */ /* Ranges list: first code, last Code, array index. */ /* Array index: 0x0003 */ 0x02C7, 0x02CB, 0x06A2, /* Array index: 0x0006 */ 0x0391, 0x03A9, 0x06A7, /* Array index: 0x0009 */ 0x03B1, 0x03C9, 0x06C0, /* Array index: 0x000C */ 0x0414, 0x041C, 0x06D9, /* Array index: 0x000F */ 0x0423, 0x0451, 0x06E2, /* Array index: 0x0012 */ 0x2160, 0x2169, 0x0711, /* Array index: 0x0015 */ 0x2190, 0x2199, 0x071B, /* Array index: 0x0018 */ 0x221E, 0x2220, 0x0725, /* Array index: 0x001B */ 0x2229, 0x222B, 0x0728, /* Array index: 0x001E */ 0x2460, 0x2469, 0x072B, /* Array index: 0x0021 */ 0x2474, 0x247D, 0x0735, /* Array index: 0x0024 */ 0x256D, 0x2573, 0x073F, /* Array index: 0x0027 */ 0x2581, 0x258F, 0x0746, /* Array index: 0x002A */ 0x25E2, 0x25E5, 0x0755, /* Array index: 0x002D */ 0x2640, 0x2642, 0x0759, /* Array index: 0x0030 */ 0x3000, 0x3015, 0x075C, /* Array index: 0x0033 */ 0x301D, 0x3029, 0x0772, /* Array index: 0x0036 */ 0x3041, 0x3093, 0x077F, /* Array index: 0x0039 */ 0x309D, 0x30F6, 0x07D2, /* Array index: 0x003C */ 0x3105, 0x3129, 0x082C, /* Array index: 0x003F */ 0x339C, 0x339E, 0x0851, /* Array index: 0x0042 */ 0x4E07, 0x4E19, 0x0854, /* Array index: 0x0045 */ 0x4E2D, 0x4E33, 0x0867, /* Array index: 0x0048 */ 0x4E38, 0x4E3C, 0x086E, /* Array index: 0x004B */ 0x4E4B, 0x4E53, 0x0873, /* Array index: 0x004E */ 0x4E58, 0x4E5F, 0x087C, /* Array index: 0x0051 */ 0x4E7E, 0x4E95, 0x0884, /* Array index: 0x0054 */ 0x4E9E, 0x4EAE, 0x089C, /* Array index: 0x0057 */ 0x4EC0, 0x4ECD, 0x08AD, /* Array index: 0x005A */ 0x4ED4, 0x4EE9, 0x08BB, /* Array index: 0x005D */ 0x4EF0, 0x4EF7, 0x08D1, /* Array index: 0x0060 */ 0x4EFD, 0x4F19, 0x08D9, /* Array index: 0x0063 */ 0x4F2C, 0x4F64, 0x08F6, /* Array index: 0x0066 */ 0x4F67, 0x4F9E, 0x092F, /* Array index: 0x0069 */ 0x4FB2, 0x4FE1, 0x0967, /* Array index: 0x006C */ 0x4FF1, 0x4FFA, 0x0997, /* Array index: 0x006F */ 0x5005, 0x5037, 0x09A1, /* Array index: 0x0072 */ 0x5043, 0x5077, 0x09D4, /* Array index: 0x0075 */ 0x508B, 0x509E, 0x0A09, /* Array index: 0x0078 */ 0x50AC, 0x50DD, 0x0A1D, /* Array index: 0x007B */ 0x50E3, 0x514D, 0x0A4F, /* Array index: 0x007E */ 0x5157, 0x516E, 0x0ABA, /* Array index: 0x0081 */ 0x5175, 0x5178, 0x0AD2, /* Array index: 0x0084 */ 0x518F, 0x5198, 0x0AD6, /* Array index: 0x0087 */ 0x51BC, 0x51BE, 0x0AE0, /* Array index: 0x008A */ 0x51C4, 0x51D0, 0x0AE3, /* Array index: 0x008D */ 0x51DC, 0x51E1, 0x0AF0, /* Array index: 0x0090 */ 0x51F5, 0x51FA, 0x0AF6, /* Array index: 0x0093 */ 0x5206, 0x5217, 0x0AFC, /* Array index: 0x0096 */ 0x521C, 0x521E, 0x0B0E, /* Array index: 0x0099 */ 0x5224, 0x522A, 0x0B11, /* Array index: 0x009C */ 0x522E, 0x523B, 0x0B18, /* Array index: 0x009F */ 0x5243, 0x524E, 0x0B26, /* Array index: 0x00A2 */ 0x5252, 0x5262, 0x0B32, /* Array index: 0x00A5 */ 0x5269, 0x526F, 0x0B43, /* Array index: 0x00A8 */ 0x5274, 0x528D, 0x0B4A, /* Array index: 0x00AB */ 0x5296, 0x529B, 0x0B64, /* Array index: 0x00AE */ 0x52A9, 0x52AE, 0x0B6A, /* Array index: 0x00B1 */ 0x52BE, 0x52C3, 0x0B70, /* Array index: 0x00B4 */ 0x52D2, 0x52E6, 0x0B76, /* Array index: 0x00B7 */ 0x52EF, 0x52FF, 0x0B8B, /* Array index: 0x00BA */ 0x5305, 0x5323, 0x0B9C, /* Array index: 0x00BD */ 0x532D, 0x5331, 0x0BBB, /* Array index: 0x00C0 */ 0x533C, 0x5354, 0x0BC0, /* Array index: 0x00C3 */ 0x536C, 0x537C, 0x0BD9, /* Array index: 0x00C6 */ 0x5394, 0x539F, 0x0BEA, /* Array index: 0x00C9 */ 0x53C8, 0x53CD, 0x0BF6, /* Array index: 0x00CC */ 0x53DF, 0x53F5, 0x0BFC, /* Array index: 0x00CF */ 0x5403, 0x5412, 0x0C13, /* Array index: 0x00D2 */ 0x5418, 0x544A, 0x0C23, /* Array index: 0x00D5 */ 0x5460, 0x549A, 0x0C56, /* Array index: 0x00D8 */ 0x54A0, 0x54C9, 0x0C91, /* Array index: 0x00DB */ 0x54DE, 0x54F3, 0x0CBB, /* Array index: 0x00DE */ 0x54F7, 0x5514, 0x0CD1, /* Array index: 0x00E1 */ 0x552A, 0x5557, 0x0CEF, /* Array index: 0x00E4 */ 0x555E, 0x5566, 0x0D1D, /* Array index: 0x00E7 */ 0x5575, 0x55B5, 0x0D26, /* Array index: 0x00EA */ 0x55BF, 0x55E9, 0x0D67, /* Array index: 0x00ED */ 0x55F6, 0x561F, 0x0D92, /* Array index: 0x00F0 */ 0x562C, 0x564E, 0x0DBC, /* Array index: 0x00F3 */ 0x5657, 0x565A, 0x0DDF, /* Array index: 0x00F6 */ 0x5660, 0x5679, 0x0DE3, /* Array index: 0x00F9 */ 0x567E, 0x5687, 0x0DFD, /* Array index: 0x00FC */ 0x568C, 0x5690, 0x0E07, /* Array index: 0x00FF */ 0x5695, 0x569D, 0x0E0C, /* Array index: 0x0102 */ 0x56A5, 0x56B7, 0x0E15, /* Array index: 0x0105 */ 0x56BC, 0x56CD, 0x0E28, /* Array index: 0x0108 */ 0x56DA, 0x56EB, 0x0E3A, /* Array index: 0x010B */ 0x56FF, 0x570D, 0x0E4C, /* Array index: 0x010E */ 0x5712, 0x5723, 0x0E5B, /* Array index: 0x0111 */ 0x5728, 0x5734, 0x0E6D, /* Array index: 0x0114 */ 0x5747, 0x5752, 0x0E7A, /* Array index: 0x0117 */ 0x5766, 0x577D, 0x0E86, /* Array index: 0x011A */ 0x5793, 0x57A5, 0x0E9E, /* Array index: 0x011D */ 0x57B5, 0x57C7, 0x0EB1, /* Array index: 0x0120 */ 0x57CB, 0x57D5, 0x0EC4, /* Array index: 0x0123 */ 0x57DF, 0x5810, 0x0ECF, /* Array index: 0x0126 */ 0x5819, 0x583F, 0x0F01, /* Array index: 0x0129 */ 0x5848, 0x5865, 0x0F28, /* Array index: 0x012C */ 0x5874, 0x5894, 0x0F46, /* Array index: 0x012F */ 0x589C, 0x58B3, 0x0F67, /* Array index: 0x0132 */ 0x58BA, 0x58C9, 0x0F7F, /* Array index: 0x0135 */ 0x58CE, 0x58EC, 0x0F8F, /* Array index: 0x0138 */ 0x58F9, 0x58FF, 0x0FAE, /* Array index: 0x013B */ 0x590C, 0x590F, 0x0FB5, /* Array index: 0x013E */ 0x5912, 0x591C, 0x0FB9, /* Array index: 0x0141 */ 0x5927, 0x5931, 0x0FC4, /* Array index: 0x0144 */ 0x5944, 0x5962, 0x0FCF, /* Array index: 0x0147 */ 0x5967, 0x5985, 0x0FEE, /* Array index: 0x014A */ 0x598D, 0x5999, 0x100D, /* Array index: 0x014D */ 0x599D, 0x59A8, 0x101A, /* Array index: 0x0150 */ 0x59AE, 0x5A03, 0x1026, /* Array index: 0x0153 */ 0x5A13, 0x5A20, 0x107C, /* Array index: 0x0156 */ 0x5A33, 0x5A39, 0x108A, /* Array index: 0x0159 */ 0x5A3E, 0x5A6D, 0x1091, /* Array index: 0x015C */ 0x5A77, 0x5A7F, 0x10C1, /* Array index: 0x015F */ 0x5A8A, 0x5A9F, 0x10CA, /* Array index: 0x0162 */ 0x5AA5, 0x5AA9, 0x10E0, /* Array index: 0x0165 */ 0x5AAC, 0x5ACD, 0x10E5, /* Array index: 0x0168 */ 0x5AD5, 0x5AEE, 0x1107, /* Array index: 0x016B */ 0x5AF3, 0x5B34, 0x1121, /* Array index: 0x016E */ 0x5B3C, 0x5B40, 0x1163, /* Array index: 0x0171 */ 0x5B47, 0x5B65, 0x1168, /* Array index: 0x0174 */ 0x5B6E, 0x5B9C, 0x1187, /* Array index: 0x0177 */ 0x5BA2, 0x5BB9, 0x11B6, /* Array index: 0x017A */ 0x5BBF, 0x5BD9, 0x11CE, /* Array index: 0x017D */ 0x5BDE, 0x5BFA, 0x11E9, /* Array index: 0x0180 */ 0x5C03, 0x5C16, 0x1206, /* Array index: 0x0183 */ 0x5C37, 0x5C5D, 0x121A, /* Array index: 0x0186 */ 0x5C60, 0x5C74, 0x1241, /* Array index: 0x0189 */ 0x5C79, 0x5C7E, 0x1256, /* Array index: 0x018C */ 0x5C86, 0x5C95, 0x125C, /* Array index: 0x018F */ 0x5C9D, 0x5CB8, 0x126C, /* Array index: 0x0192 */ 0x5CC6, 0x5CDF, 0x1288, /* Array index: 0x0195 */ 0x5CEA, 0x5CF1, 0x12A2, /* Array index: 0x0198 */ 0x5CF4, 0x5D01, 0x12AA, /* Array index: 0x019B */ 0x5D0B, 0x5D29, 0x12B8, /* Array index: 0x019E */ 0x5D2E, 0x5D52, 0x12D7, /* Array index: 0x01A1 */ 0x5D65, 0x5D6C, 0x12FC, /* Array index: 0x01A4 */ 0x5D79, 0x5D8A, 0x1304, /* Array index: 0x01A7 */ 0x5D92, 0x5DA2, 0x1316, /* Array index: 0x01AA */ 0x5DA7, 0x5DBD, 0x1327, /* Array index: 0x01AD */ 0x5DD1, 0x5DD8, 0x133E, /* Array index: 0x01B0 */ 0x5DDD, 0x5DE8, 0x1346, /* Array index: 0x01B3 */ 0x5DEE, 0x5DF4, 0x1352, /* Array index: 0x01B6 */ 0x5DFD, 0x5E06, 0x1359, /* Array index: 0x01B9 */ 0x5E14, 0x5E2D, 0x1363, /* Array index: 0x01BC */ 0x5E33, 0x5E38, 0x137D, /* Array index: 0x01BF */ 0x5E3D, 0x5E45, 0x1383, /* Array index: 0x01C2 */ 0x5E4A, 0x5E8F, 0x138C, /* Array index: 0x01C5 */ 0x5E95, 0x5E9C, 0x13D2, /* Array index: 0x01C8 */ 0x5EA0, 0x5EB9, 0x13DA, /* Array index: 0x01CB */ 0x5EC1, 0x5EE9, 0x13F4, /* Array index: 0x01CE */ 0x5EEE, 0x5EF7, 0x141D, /* Array index: 0x01D1 */ 0x5EFE, 0x5F0B, 0x1427, /* Array index: 0x01D4 */ 0x5F12, 0x5F29, 0x1435, /* Array index: 0x01D7 */ 0x5F2D, 0x5F38, 0x144D, /* Array index: 0x01DA */ 0x5F46, 0x5F4F, 0x1459, /* Array index: 0x01DD */ 0x5F54, 0x5F59, 0x1463, /* Array index: 0x01E0 */ 0x5F67, 0x5FA1, 0x1469, /* Array index: 0x01E3 */ 0x5FA5, 0x5FAF, 0x14A4, /* Array index: 0x01E6 */ 0x5FB5, 0x5FC5, 0x14AF, /* Array index: 0x01E9 */ 0x5FCC, 0x5FD9, 0x14C0, /* Array index: 0x01EC */ 0x5FDD, 0x5FE5, 0x14CE, /* Array index: 0x01EF */ 0x5FEA, 0x6000, 0x14D7, /* Array index: 0x01F2 */ 0x6009, 0x6039, 0x14EE, /* Array index: 0x01F5 */ 0x6040, 0x604D, 0x151F, /* Array index: 0x01F8 */ 0x6053, 0x6072, 0x152D, /* Array index: 0x01FB */ 0x607F, 0x60A3, 0x154D, /* Array index: 0x01FE */ 0x60B0, 0x60E6, 0x1572, /* Array index: 0x0201 */ 0x60F0, 0x611F, 0x15A9, /* Array index: 0x0204 */ 0x6127, 0x612F, 0x15D9, /* Array index: 0x0207 */ 0x613E, 0x6183, 0x15E2, /* Array index: 0x020A */ 0x6189, 0x6196, 0x1628, /* Array index: 0x020D */ 0x61A7, 0x61CD, 0x1636, /* Array index: 0x0210 */ 0x61DE, 0x6236, 0x165D, /* Array index: 0x0213 */ 0x623D, 0x6266, 0x16B6, /* Array index: 0x0216 */ 0x626D, 0x6298, 0x16E0, /* Array index: 0x0219 */ 0x62A8, 0x62BF, 0x170C, /* Array index: 0x021C */ 0x62C4, 0x62DC, 0x1724, /* Array index: 0x021F */ 0x62EB, 0x6316, 0x173D, /* Array index: 0x0222 */ 0x6328, 0x635A, 0x1769, /* Array index: 0x0225 */ 0x6365, 0x63B1, 0x179C, /* Array index: 0x0228 */ 0x63C0, 0x63F6, 0x17E9, /* Array index: 0x022B */ 0x6409, 0x6443, 0x1820, /* Array index: 0x022E */ 0x644D, 0x6454, 0x185B, /* Array index: 0x0231 */ 0x6458, 0x647F, 0x1863, /* Array index: 0x0234 */ 0x6485, 0x64A6, 0x188B, /* Array index: 0x0237 */ 0x64A9, 0x64B3, 0x18AD, /* Array index: 0x023A */ 0x64BB, 0x64DB, 0x18B8, /* Array index: 0x023D */ 0x64E0, 0x654A, 0x18D9, /* Array index: 0x0240 */ 0x6551, 0x656C, 0x1944, /* Array index: 0x0243 */ 0x6572, 0x6584, 0x1960, /* Array index: 0x0246 */ 0x6590, 0x65C6, 0x1973, /* Array index: 0x0249 */ 0x65CB, 0x65F5, 0x19AA, /* Array index: 0x024C */ 0x65FA, 0x65FD, 0x19D5, /* Array index: 0x024F */ 0x6600, 0x6615, 0x19D9, /* Array index: 0x0252 */ 0x661C, 0x6628, 0x19EF, /* Array index: 0x0255 */ 0x662B, 0x663A, 0x19FC, /* Array index: 0x0258 */ 0x6641, 0x664C, 0x1A0C, /* Array index: 0x025B */ 0x6659, 0x6680, 0x1A18, /* Array index: 0x025E */ 0x6684, 0x6699, 0x1A40, /* Array index: 0x0261 */ 0x669D, 0x66A2, 0x1A56, /* Array index: 0x0264 */ 0x66A8, 0x66C0, 0x1A5C, /* Array index: 0x0267 */ 0x66C4, 0x66CC, 0x1A75, /* Array index: 0x026A */ 0x66D6, 0x66F9, 0x1A7E, /* Array index: 0x026D */ 0x66FC, 0x6718, 0x1AA2, /* Array index: 0x0270 */ 0x671D, 0x672E, 0x1ABF, /* Array index: 0x0273 */ 0x6731, 0x673F, 0x1AD1, /* Array index: 0x0276 */ 0x6745, 0x6760, 0x1AE0, /* Array index: 0x0279 */ 0x676C, 0x679F, 0x1AFC, /* Array index: 0x027C */ 0x67AE, 0x67BB, 0x1B30, /* Array index: 0x027F */ 0x67C0, 0x67FC, 0x1B3E, /* Array index: 0x0282 */ 0x6812, 0x6821, 0x1B7B, /* Array index: 0x0285 */ 0x6825, 0x6854, 0x1B8B, /* Array index: 0x0288 */ 0x686B, 0x68B5, 0x1BBB, /* Array index: 0x028B */ 0x68C4, 0x68FD, 0x1C06, /* Array index: 0x028E */ 0x6904, 0x6917, 0x1C40, /* Array index: 0x0291 */ 0x692F, 0x697B, 0x1C54, /* Array index: 0x0294 */ 0x698D, 0x69D4, 0x1CA1, /* Array index: 0x0297 */ 0x69E2, 0x6A0A, 0x1CE9, /* Array index: 0x029A */ 0x6A11, 0x6A28, 0x1D12, /* Array index: 0x029D */ 0x6A34, 0x6A41, 0x1D2A, /* Array index: 0x02A0 */ 0x6A44, 0x6A6F, 0x1D38, /* Array index: 0x02A3 */ 0x6A7E, 0x6AAF, 0x1D64, /* Array index: 0x02A6 */ 0x6AB3, 0x6ABD, 0x1D96, /* Array index: 0x02A9 */ 0x6AC2, 0x6AD3, 0x1DA1, /* Array index: 0x02AC */ 0x6AD9, 0x6AE1, 0x1DB3, /* Array index: 0x02AF */ 0x6AE7, 0x6AF3, 0x1DBC, /* Array index: 0x02B2 */ 0x6AF8, 0x6AFC, 0x1DC9, /* Array index: 0x02B5 */ 0x6B00, 0x6B1A, 0x1DCE, /* Array index: 0x02B8 */ 0x6B2F, 0x6B56, 0x1DE9, /* Array index: 0x02BB */ 0x6B5B, 0x6B67, 0x1E11, /* Array index: 0x02BE */ 0x6B76, 0x6BB7, 0x1E1E, /* Array index: 0x02C1 */ 0x6BBC, 0x6BDB, 0x1E60, /* Array index: 0x02C4 */ 0x6BE0, 0x6C38, 0x1E80, /* Array index: 0x02C7 */ 0x6C3E, 0x6C43, 0x1ED9, /* Array index: 0x02CA */ 0x6C4A, 0x6C9D, 0x1EDF, /* Array index: 0x02CD */ 0x6CAB, 0x6CF5, 0x1F33, /* Array index: 0x02D0 */ 0x6D00, 0x6D22, 0x1F7E, /* Array index: 0x02D3 */ 0x6D25, 0x6D42, 0x1FA1, /* Array index: 0x02D6 */ 0x6D58, 0x6D98, 0x1FBF, /* Array index: 0x02D9 */ 0x6DAA, 0x6DFD, 0x2000, /* Array index: 0x02DC */ 0x6E19, 0x6E79, 0x2054, /* Array index: 0x02DF */ 0x6E8D, 0x6ED8, 0x20B5, /* Array index: 0x02E2 */ 0x6EEB, 0x6F43, 0x2101, /* Array index: 0x02E5 */ 0x6F4E, 0x6F97, 0x215A, /* Array index: 0x02E8 */ 0x6F9E, 0x6FCF, 0x21A4, /* Array index: 0x02EB */ 0x6FDB, 0x6FF4, 0x21D6, /* Array index: 0x02EE */ 0x6FFA, 0x704C, 0x21F0, /* Array index: 0x02F1 */ 0x7051, 0x706B, 0x2243, /* Array index: 0x02F4 */ 0x7082, 0x7086, 0x225E, /* Array index: 0x02F7 */ 0x7091, 0x709A, 0x2263, /* Array index: 0x02FA */ 0x70A9, 0x70BA, 0x226D, /* Array index: 0x02FD */ 0x70C5, 0x70E4, 0x227F, /* Array index: 0x0300 */ 0x70F3, 0x7110, 0x229F, /* Array index: 0x0303 */ 0x7117, 0x7128, 0x22BD, /* Array index: 0x0306 */ 0x712E, 0x7132, 0x22CF, /* Array index: 0x0309 */ 0x7141, 0x7172, 0x22D4, /* Array index: 0x030C */ 0x7180, 0x718A, 0x2306, /* Array index: 0x030F */ 0x7197, 0x71F4, 0x2311, /* Array index: 0x0312 */ 0x71F8, 0x7207, 0x236F, /* Array index: 0x0315 */ 0x7219, 0x722D, 0x237F, /* Array index: 0x0318 */ 0x7235, 0x724C, 0x2394, /* Array index: 0x031B */ 0x7256, 0x7263, 0x23AC, /* Array index: 0x031E */ 0x726C, 0x72B0, 0x23BA, /* Array index: 0x0321 */ 0x72BD, 0x72EB, 0x23FF, /* Array index: 0x0324 */ 0x72F3, 0x7301, 0x242E, /* Array index: 0x0327 */ 0x7307, 0x730C, 0x243D, /* Array index: 0x032A */ 0x730F, 0x731E, 0x2443, /* Array index: 0x032D */ 0x7322, 0x7329, 0x2453, /* Array index: 0x0330 */ 0x7330, 0x7345, 0x245B, /* Array index: 0x0333 */ 0x7349, 0x7352, 0x2471, /* Array index: 0x0336 */ 0x7357, 0x738B, 0x247B, /* Array index: 0x0339 */ 0x7392, 0x7397, 0x24B0, /* Array index: 0x033C */ 0x739D, 0x73AD, 0x24B6, /* Array index: 0x033F */ 0x73B2, 0x73CD, 0x24C7, /* Array index: 0x0342 */ 0x73D2, 0x73E0, 0x24E3, /* Array index: 0x0345 */ 0x73E5, 0x73EE, 0x24F2, /* Array index: 0x0348 */ 0x73F4, 0x740D, 0x24FC, /* Array index: 0x034B */ 0x7420, 0x7436, 0x2516, /* Array index: 0x034E */ 0x743F, 0x7446, 0x252D, /* Array index: 0x0351 */ 0x744A, 0x7464, 0x2535, /* Array index: 0x0354 */ 0x7469, 0x7475, 0x2550, /* Array index: 0x0357 */ 0x747C, 0x748B, 0x255D, /* Array index: 0x035A */ 0x7494, 0x74C5, 0x256D, /* Array index: 0x035D */ 0x74D4, 0x74E9, 0x259F, /* Array index: 0x0360 */ 0x74F4, 0x74F7, 0x25B5, /* Array index: 0x0363 */ 0x74FB, 0x7540, 0x25B9, /* Array index: 0x0366 */ 0x754B, 0x754F, 0x25FF, /* Array index: 0x0369 */ 0x7559, 0x7570, 0x2604, /* Array index: 0x036C */ 0x7576, 0x7580, 0x261C, /* Array index: 0x036F */ 0x7586, 0x759A, 0x2627, /* Array index: 0x0372 */ 0x75A2, 0x75AB, 0x263C, /* Array index: 0x0375 */ 0x75B2, 0x75E7, 0x2646, /* Array index: 0x0378 */ 0x75ED, 0x7603, 0x267C, /* Array index: 0x037B */ 0x7608, 0x7629, 0x2693, /* Array index: 0x037E */ 0x762D, 0x7635, 0x26B5, /* Array index: 0x0381 */ 0x7642, 0x7649, 0x26BE, /* Array index: 0x0384 */ 0x7652, 0x7665, 0x26C6, /* Array index: 0x0387 */ 0x7669, 0x7672, 0x26DA, /* Array index: 0x038A */ 0x7678, 0x769E, 0x26E4, /* Array index: 0x038D */ 0x76AA, 0x76B0, 0x270B, /* Array index: 0x0390 */ 0x76BA, 0x76D4, 0x2712, /* Array index: 0x0393 */ 0x76DA, 0x76FE, 0x272D, /* Array index: 0x0396 */ 0x7701, 0x770B, 0x2752, /* Array index: 0x0399 */ 0x7710, 0x7729, 0x275D, /* Array index: 0x039C */ 0x772F, 0x773E, 0x2777, /* Array index: 0x039F */ 0x7744, 0x774F, 0x2787, /* Array index: 0x03A2 */ 0x7752, 0x776F, 0x2793, /* Array index: 0x03A5 */ 0x777C, 0x7791, 0x27B1, /* Array index: 0x03A8 */ 0x7797, 0x77BF, 0x27C7, /* Array index: 0x03AB */ 0x77C9, 0x77FD, 0x27F0, /* Array index: 0x03AE */ 0x7802, 0x7806, 0x2825, /* Array index: 0x03B1 */ 0x780C, 0x7814, 0x282A, /* Array index: 0x03B4 */ 0x781D, 0x7838, 0x2833, /* Array index: 0x03B7 */ 0x7848, 0x7852, 0x284F, /* Array index: 0x03BA */ 0x785C, 0x7871, 0x285A, /* Array index: 0x03BD */ 0x787B, 0x7889, 0x2870, /* Array index: 0x03C0 */ 0x7891, 0x78AD, 0x287F, /* Array index: 0x03C3 */ 0x78B0, 0x78B4, 0x289C, /* Array index: 0x03C6 */ 0x78BA, 0x78BE, 0x28A1, /* Array index: 0x03C9 */ 0x78C1, 0x78D5, 0x28A6, /* Array index: 0x03CC */ 0x78DA, 0x78F4, 0x28BB, /* Array index: 0x03CF */ 0x78F7, 0x7905, 0x28D6, /* Array index: 0x03D2 */ 0x790E, 0x7914, 0x28E5, /* Array index: 0x03D5 */ 0x7919, 0x791E, 0x28EC, /* Array index: 0x03D8 */ 0x7921, 0x7931, 0x28F2, /* Array index: 0x03DB */ 0x7938, 0x796D, 0x2903, /* Array index: 0x03DE */ 0x7970, 0x7974, 0x2939, /* Array index: 0x03E1 */ 0x7979, 0x7982, 0x293E, /* Array index: 0x03E4 */ 0x798A, 0x79C1, 0x2948, /* Array index: 0x03E7 */ 0x79CB, 0x79EE, 0x2980, /* Array index: 0x03EA */ 0x79F6, 0x79FB, 0x29A4, /* Array index: 0x03ED */ 0x7A00, 0x7A05, 0x29AA, /* Array index: 0x03F0 */ 0x7A08, 0x7A22, 0x29B0, /* Array index: 0x03F3 */ 0x7A2E, 0x7A31, 0x29CB, /* Array index: 0x03F6 */ 0x7A39, 0x7A40, 0x29CF, /* Array index: 0x03F9 */ 0x7A44, 0x7A4E, 0x29D7, /* Array index: 0x03FC */ 0x7A54, 0x7A62, 0x29E2, /* Array index: 0x03FF */ 0x7A67, 0x7A99, 0x29F1, /* Array index: 0x0402 */ 0x7A9E, 0x7AA3, 0x2A24, /* Array index: 0x0405 */ 0x7AA8, 0x7ACB, 0x2A2A, /* Array index: 0x0408 */ 0x7ADF, 0x7AE6, 0x2A4E, /* Array index: 0x040B */ 0x7AEB, 0x7AEF, 0x2A56, /* Array index: 0x040E */ 0x7AF6, 0x7B13, 0x2A5B, /* Array index: 0x0411 */ 0x7B18, 0x7B35, 0x2A79, /* Array index: 0x0414 */ 0x7B44, 0x7B58, 0x2A97, /* Array index: 0x0417 */ 0x7B60, 0x7B69, 0x2AAC, /* Array index: 0x041A */ 0x7B6D, 0x7B78, 0x2AB6, /* Array index: 0x041D */ 0x7B84, 0x7BA1, 0x2AC2, /* Array index: 0x0420 */ 0x7BB4, 0x7BB9, 0x2AE0, /* Array index: 0x0423 */ 0x7BC6, 0x7BCE, 0x2AE6, /* Array index: 0x0426 */ 0x7BD4, 0x7BEB, 0x2AEF, /* Array index: 0x0429 */ 0x7BF0, 0x7C11, 0x2B07, /* Array index: 0x042C */ 0x7C1C, 0x7C2D, 0x2B29, /* Array index: 0x042F */ 0x7C37, 0x7C40, 0x2B3B, /* Array index: 0x0432 */ 0x7C45, 0x7C4D, 0x2B45, /* Array index: 0x0435 */ 0x7C57, 0x7C7A, 0x2B4E, /* Array index: 0x0438 */ 0x7C7D, 0x7C8D, 0x2B72, /* Array index: 0x043B */ 0x7C91, 0x7C98, 0x2B83, /* Array index: 0x043E */ 0x7C9E, 0x7CA5, 0x2B8B, /* Array index: 0x0441 */ 0x7CAF, 0x7CBF, 0x2B93, /* Array index: 0x0444 */ 0x7CC8, 0x7CE2, 0x2BA4, /* Array index: 0x0447 */ 0x7CEC, 0x7CF8, 0x2BBF, /* Array index: 0x044A */ 0x7CFD, 0x7D22, 0x2BCC, /* Array index: 0x044D */ 0x7D28, 0x7D47, 0x2BF2, /* Array index: 0x0450 */ 0x7D4E, 0x7D73, 0x2C12, /* Array index: 0x0453 */ 0x7D79, 0x7D96, 0x2C38, /* Array index: 0x0456 */ 0x7D9C, 0x7DCE, 0x2C56, /* Array index: 0x0459 */ 0x7DD7, 0x7DFB, 0x2C89, /* Array index: 0x045C */ 0x7E08, 0x7E49, 0x2CAE, /* Array index: 0x045F */ 0x7E50, 0x7E63, 0x2CF0, /* Array index: 0x0462 */ 0x7E68, 0x7E9C, 0x2D04, /* Array index: 0x0465 */ 0x7F36, 0x7F45, 0x2D39, /* Array index: 0x0468 */ 0x7F48, 0x7F55, 0x2D49, /* Array index: 0x046B */ 0x7F5B, 0x7F7F, 0x2D57, /* Array index: 0x046E */ 0x7F83, 0x7FD7, 0x2D7C, /* Array index: 0x0471 */ 0x7FDB, 0x8021, 0x2DD1, /* Array index: 0x0474 */ 0x8026, 0x802C, 0x2E18, /* Array index: 0x0477 */ 0x8033, 0x803F, 0x2E1F, /* Array index: 0x047A */ 0x8046, 0x804A, 0x2E2C, /* Array index: 0x047D */ 0x804F, 0x8052, 0x2E31, /* Array index: 0x0480 */ 0x805A, 0x805E, 0x2E35, /* Array index: 0x0483 */ 0x806F, 0x807F, 0x2E3A, /* Array index: 0x0486 */ 0x8082, 0x80B5, 0x2E4B, /* Array index: 0x0489 */ 0x80C2, 0x80E6, 0x2E7F, /* Array index: 0x048C */ 0x80ED, 0x810A, 0x2EA4, /* Array index: 0x048F */ 0x8115, 0x8130, 0x2EC2, /* Array index: 0x0492 */ 0x8143, 0x8155, 0x2EDE, /* Array index: 0x0495 */ 0x815E, 0x817A, 0x2EF1, /* Array index: 0x0498 */ 0x817F, 0x818F, 0x2F0E, /* Array index: 0x049B */ 0x8195, 0x81D2, 0x2F1F, /* Array index: 0x049E */ 0x81D5, 0x8216, 0x2F5D, /* Array index: 0x04A1 */ 0x821B, 0x8222, 0x2F9F, /* Array index: 0x04A4 */ 0x8228, 0x822C, 0x2FA7, /* Array index: 0x04A7 */ 0x8232, 0x8285, 0x2FAC, /* Array index: 0x04AA */ 0x828A, 0x82C3, 0x3000, /* Array index: 0x04AD */ 0x82D1, 0x82FB, 0x303A, /* Array index: 0x04B0 */ 0x82FE, 0x830D, 0x3065, /* Array index: 0x04B3 */ 0x8322, 0x8356, 0x3075, /* Array index: 0x04B6 */ 0x8373, 0x83B0, 0x30AA, /* Array index: 0x04B9 */ 0x83BD, 0x8413, 0x30E8, /* Array index: 0x04BC */ 0x8429, 0x847E, 0x313F, /* Array index: 0x04BF */ 0x848D, 0x8491, 0x3195, /* Array index: 0x04C2 */ 0x8497, 0x84D7, 0x319A, /* Array index: 0x04C5 */ 0x84E7, 0x8531, 0x31DB, /* Array index: 0x04C8 */ 0x853D, 0x854E, 0x3226, /* Array index: 0x04CB */ 0x8551, 0x856E, 0x3238, /* Array index: 0x04CE */ 0x8575, 0x85AA, 0x3256, /* Array index: 0x04D1 */ 0x85AF, 0x85D2, 0x328C, /* Array index: 0x04D4 */ 0x85D5, 0x860C, 0x32B0, /* Array index: 0x04D7 */ 0x8617, 0x8640, 0x32E8, /* Array index: 0x04DA */ 0x8646, 0x8656, 0x3312, /* Array index: 0x04DD */ 0x865B, 0x8674, 0x3323, /* Array index: 0x04E0 */ 0x8677, 0x867C, 0x333D, /* Array index: 0x04E3 */ 0x8685, 0x86AA, 0x3343, /* Array index: 0x04E6 */ 0x86AF, 0x86CC, 0x3369, /* Array index: 0x04E9 */ 0x86D0, 0x86ED, 0x3387, /* Array index: 0x04EC */ 0x86F5, 0x86FB, 0x33A5, /* Array index: 0x04EF */ 0x86FE, 0x8713, 0x33AC, /* Array index: 0x04F2 */ 0x8718, 0x8743, 0x33C2, /* Array index: 0x04F5 */ 0x874C, 0x877B, 0x33EE, /* Array index: 0x04F8 */ 0x8781, 0x8789, 0x341E, /* Array index: 0x04FB */ 0x878D, 0x87A4, 0x3427, /* Array index: 0x04FE */ 0x87AA, 0x87CC, 0x343F, /* Array index: 0x0501 */ 0x87D1, 0x8844, 0x3462, /* Array index: 0x0504 */ 0x8848, 0x884E, 0x34D6, /* Array index: 0x0507 */ 0x8852, 0x8883, 0x34DD, /* Array index: 0x050A */ 0x8888, 0x88AC, 0x350F, /* Array index: 0x050D */ 0x88B6, 0x88C2, 0x3534, /* Array index: 0x0510 */ 0x88C9, 0x88E1, 0x3541, /* Array index: 0x0513 */ 0x88EB, 0x891A, 0x355A, /* Array index: 0x0516 */ 0x891E, 0x8946, 0x358A, /* Array index: 0x0519 */ 0x894B, 0x8988, 0x35B3, /* Array index: 0x051C */ 0x8993, 0x89A6, 0x35F1, /* Array index: 0x051F */ 0x89AA, 0x89AF, 0x3605, /* Array index: 0x0522 */ 0x89B6, 0x89C0, 0x360B, /* Array index: 0x0525 */ 0x89D2, 0x8A18, 0x3616, /* Array index: 0x0528 */ 0x8A1B, 0x8A27, 0x365D, /* Array index: 0x052B */ 0x8A39, 0x8A5B, 0x366A, /* Array index: 0x052E */ 0x8A5E, 0x8A63, 0x368D, /* Array index: 0x0531 */ 0x8A68, 0x8A7C, 0x3693, /* Array index: 0x0534 */ 0x8A7F, 0x8A9A, 0x36A8, /* Array index: 0x0537 */ 0x8AA0, 0x8AAB, 0x36C4, /* Array index: 0x053A */ 0x8AB6, 0x8AE8, 0x36D0, /* Array index: 0x053D */ 0x8AEB, 0x8B60, 0x3703, /* Array index: 0x0540 */ 0x8B63, 0x8B70, 0x3779, /* Array index: 0x0543 */ 0x8B77, 0x8B9F, 0x3787, /* Array index: 0x0546 */ 0x8C39, 0x8C57, 0x37B0, /* Array index: 0x0549 */ 0x8C61, 0x8CCC, 0x37CF, /* Array index: 0x054C */ 0x8CCF, 0x8D0A, 0x383B, /* Array index: 0x054F */ 0x8D0F, 0x8D1B, 0x3877, /* Array index: 0x0552 */ 0x8D64, 0x8D85, 0x3884, /* Array index: 0x0555 */ 0x8D89, 0x8D96, 0x38A6, /* Array index: 0x0558 */ 0x8D9B, 0x8DF4, 0x38B4, /* Array index: 0x055B */ 0x8DFA, 0x8E0A, 0x390E, /* Array index: 0x055E */ 0x8E0D, 0x8E2B, 0x391F, /* Array index: 0x0561 */ 0x8E30, 0x8E7C, 0x393E, /* Array index: 0x0564 */ 0x8E81, 0x8EAC, 0x398B, /* Array index: 0x0567 */ 0x8EC9, 0x8F64, 0x39B7, /* Array index: 0x056A */ 0x8FAD, 0x8FB4, 0x3A53, /* Array index: 0x056D */ 0x8FC2, 0x8FC6, 0x3A5B, /* Array index: 0x0570 */ 0x8FCD, 0x8FD7, 0x3A60, /* Array index: 0x0573 */ 0x8FE0, 0x9006, 0x3A6B, /* Array index: 0x0576 */ 0x900B, 0x9024, 0x3A92, /* Array index: 0x0579 */ 0x902D, 0x9044, 0x3AAC, /* Array index: 0x057C */ 0x9047, 0x90A7, 0x3AC4, /* Array index: 0x057F */ 0x90AF, 0x90B8, 0x3B25, /* Array index: 0x0582 */ 0x90BD, 0x90CB, 0x3B2F, /* Array index: 0x0585 */ 0x90D4, 0x915A, 0x3B3E, /* Array index: 0x0588 */ 0x915F, 0x917A, 0x3BC5, /* Array index: 0x058B */ 0x9180, 0x9193, 0x3BE1, /* Array index: 0x058E */ 0x9199, 0x91DD, 0x3BF5, /* Array index: 0x0591 */ 0x91E2, 0x91EE, 0x3C3A, /* Array index: 0x0594 */ 0x91F1, 0x91F9, 0x3C47, /* Array index: 0x0597 */ 0x91FD, 0x921E, 0x3C50, /* Array index: 0x059A */ 0x9223, 0x9227, 0x3C72, /* Array index: 0x059D */ 0x922D, 0x9240, 0x3C77, /* Array index: 0x05A0 */ 0x9245, 0x925B, 0x3C8B, /* Array index: 0x05A3 */ 0x9260, 0x9267, 0x3CA2, /* Array index: 0x05A6 */ 0x926C, 0x9272, 0x3CAA, /* Array index: 0x05A9 */ 0x9276, 0x928E, 0x3CB1, /* Array index: 0x05AC */ 0x9291, 0x92AC, 0x3CCA, /* Array index: 0x05AF */ 0x92B2, 0x92B7, 0x3CE6, /* Array index: 0x05B2 */ 0x92C0, 0x92E1, 0x3CEC, /* Array index: 0x05B5 */ 0x92E4, 0x92F1, 0x3D0E, /* Array index: 0x05B8 */ 0x92F7, 0x9339, 0x3D1C, /* Array index: 0x05BB */ 0x9346, 0x9367, 0x3D5F, /* Array index: 0x05BE */ 0x9375, 0x9383, 0x3D81, /* Array index: 0x05C1 */ 0x9388, 0x93B7, 0x3D90, /* Array index: 0x05C4 */ 0x93C0, 0x93E8, 0x3DC0, /* Array index: 0x05C7 */ 0x93F5, 0x9400, 0x3DE9, /* Array index: 0x05CA */ 0x9406, 0x9419, 0x3DF5, /* Array index: 0x05CD */ 0x9428, 0x9452, 0x3E09, /* Array index: 0x05D0 */ 0x9460, 0x9483, 0x3E34, /* Array index: 0x05D3 */ 0x957A, 0x957D, 0x3E58, /* Array index: 0x05D6 */ 0x9588, 0x9594, 0x3E5C, /* Array index: 0x05D9 */ 0x959B, 0x95C0, 0x3E69, /* Array index: 0x05DC */ 0x95C3, 0x95E5, 0x3E8F, /* Array index: 0x05DF */ 0x961E, 0x9624, 0x3EB2, /* Array index: 0x05E2 */ 0x962A, 0x9632, 0x3EB9, /* Array index: 0x05E5 */ 0x9639, 0x9644, 0x3EC2, /* Array index: 0x05E8 */ 0x964A, 0x9654, 0x3ECE, /* Array index: 0x05EB */ 0x965B, 0x9664, 0x3ED9, /* Array index: 0x05EE */ 0x966A, 0x96B4, 0x3EE3, /* Array index: 0x05F1 */ 0x96B8, 0x96EA, 0x3F2E, /* Array index: 0x05F4 */ 0x96EF, 0x9713, 0x3F61, /* Array index: 0x05F7 */ 0x9718, 0x9732, 0x3F86, /* Array index: 0x05FA */ 0x9738, 0x974B, 0x3FA1, /* Array index: 0x05FD */ 0x9758, 0x9762, 0x3FB5, /* Array index: 0x0600 */ 0x9766, 0x9785, 0x3FC0, /* Array index: 0x0603 */ 0x978A, 0x978F, 0x3FE0, /* Array index: 0x0606 */ 0x9797, 0x97AE, 0x3FE6, /* Array index: 0x0609 */ 0x97C1, 0x97E5, 0x3FFE, /* Array index: 0x060C */ 0x97F6, 0x9821, 0x4023, /* Array index: 0x060F */ 0x9824, 0x9832, 0x404F, /* Array index: 0x0612 */ 0x9835, 0x983B, 0x405E, /* Array index: 0x0615 */ 0x9841, 0x9874, 0x4065, /* Array index: 0x0618 */ 0x98A8, 0x98B3, 0x4099, /* Array index: 0x061B */ 0x98B8, 0x98C6, 0x40A5, /* Array index: 0x061E */ 0x98E7, 0x98EF, 0x40B4, /* Array index: 0x0621 */ 0x98F9, 0x9935, 0x40BD, /* Array index: 0x0624 */ 0x993A, 0x9961, 0x40FA, /* Array index: 0x0627 */ 0x9996, 0x999E, 0x4122, /* Array index: 0x062A */ 0x99A3, 0x99C3, 0x412B, /* Array index: 0x062D */ 0x99C9, 0x99F1, 0x414C, /* Array index: 0x0630 */ 0x99F4, 0x9A6B, 0x4175, /* Array index: 0x0633 */ 0x9AAD, 0x9AC2, 0x41ED, /* Array index: 0x0636 */ 0x9ACD, 0x9AD8, 0x4203, /* Array index: 0x0639 */ 0x9AEB, 0x9AFE, 0x420F, /* Array index: 0x063C */ 0x9B01, 0x9B61, 0x4223, /* Array index: 0x063F */ 0x9B64, 0x9B68, 0x4284, /* Array index: 0x0642 */ 0x9B6F, 0x9B88, 0x4289, /* Array index: 0x0645 */ 0x9B90, 0x9B95, 0x42A3, /* Array index: 0x0648 */ 0x9B9E, 0x9BAF, 0x42A9, /* Array index: 0x064B */ 0x9BB5, 0x9BB9, 0x42BB, /* Array index: 0x064E */ 0x9BBD, 0x9BCA, 0x42C0, /* Array index: 0x0651 */ 0x9BD3, 0x9BEC, 0x42CE, /* Array index: 0x0654 */ 0x9C05, 0x9C14, 0x42E8, /* Array index: 0x0657 */ 0x9C21, 0x9C41, 0x42F8, /* Array index: 0x065A */ 0x9C46, 0x9C59, 0x4319, /* Array index: 0x065D */ 0x9C5E, 0x9C68, 0x432D, /* Array index: 0x0660 */ 0x9C71, 0x9C7A, 0x4338, /* Array index: 0x0663 */ 0x9CE5, 0x9CEA, 0x4342, /* Array index: 0x0666 */ 0x9CF1, 0x9D09, 0x4348, /* Array index: 0x0669 */ 0x9D14, 0x9D38, 0x4361, /* Array index: 0x066C */ 0x9D3B, 0x9D45, 0x4386, /* Array index: 0x066F */ 0x9D4A, 0x9D4C, 0x4391, /* Array index: 0x0672 */ 0x9D4F, 0x9D61, 0x4394, /* Array index: 0x0675 */ 0x9D67, 0x9D8C, 0x43A7, /* Array index: 0x0678 */ 0x9D94, 0x9E1E, 0x43CD, /* Array index: 0x067B */ 0x9E79, 0x9E94, 0x4458, /* Array index: 0x067E */ 0x9E97, 0x9EA9, 0x4474, /* Array index: 0x0681 */ 0x9EB4, 0x9EB7, 0x4487, /* Array index: 0x0684 */ 0x9ECC, 0x9EE8, 0x448B, /* Array index: 0x0687 */ 0x9EEB, 0x9F01, 0x44A8, /* Array index: 0x068A */ 0x9F06, 0x9F38, 0x44BF, /* Array index: 0x068D */ 0x9F3D, 0x9F4F, 0x44F2, /* Array index: 0x0690 */ 0x9F52, 0x9F7B, 0x4505, /* Array index: 0x0693 */ 0x9F90, 0x9F95, 0x452F, /* Array index: 0x0696 */ 0xFE30, 0xFE44, 0x4535, /* Array index: 0x0699 */ 0xFE49, 0xFE6B, 0x454A, /* Array index: 0x069C */ 0xFF01, 0xFF3C, 0x456D, /* Array index: 0x069F */ 0xFF3F, 0xFF5D, 0x45A9, /* Ranges content */ /* Range 0x02C7 - 0x02CB, array index: 0x06A2 */ 0xA3BE,INVALC,0xA3BC,0xA3BD,0xA3BF, /* Range 0x0391 - 0x03A9, array index: 0x06A7 */ 0xA344,0xA345,0xA346,0xA347,0xA348,0xA349,0xA34A,0xA34B, 0xA34C,0xA34D,0xA34E,0xA34F,0xA350,0xA351,0xA352,0xA353, 0xA354,INVALC,0xA355,0xA356,0xA357,0xA358,0xA359,0xA35A, 0xA35B, /* Range 0x03B1 - 0x03C9, array index: 0x06C0 */ 0xA35C,0xA35D,0xA35E,0xA35F,0xA360,0xA361,0xA362,0xA363, 0xA364,0xA365,0xA366,0xA367,0xA368,0xA369,0xA36A,0xA36B, 0xA36C,INVALC,0xA36D,0xA36E,0xA36F,0xA370,0xA371,0xA372, 0xA373, /* Range 0x0414 - 0x041C, array index: 0x06D9 */ 0xC7B1,0xC7B2,0xC7B4,0xC7B5,0xC7B6,0xC7B7,0xC7B8,0xC7B9, 0xC7BA, /* Range 0x0423 - 0x0451, array index: 0x06E2 */ 0xC7BB,0xC7BC,0xC7BD,0xC7BE,0xC7BF,0xC7C0,0xC7C1,0xC7C2, 0xC7C3,0xC7C4,0xC7C5,0xC7C6,0xC7C7,0xC7C8,0xC7C9,0xC7CA, 0xC7CB,0xC7CC,0xC7CD,0xC7CF,0xC7D0,0xC7D1,0xC7D2,0xC7D3, 0xC7D4,0xC7D5,0xC7D6,0xC7D7,0xC7D8,0xC7D9,0xC7DA,0xC7DB, 0xC7DC,0xC7DD,0xC7DE,0xC7DF,0xC7E0,0xC7E1,0xC7E2,0xC7E3, 0xC7E4,0xC7E5,0xC7E6,0xC7E7,0xC7E8,INVALC,0xC7CE, /* Range 0x2160 - 0x2169, array index: 0x0711 */ 0xA2B9,0xA2BA,0xA2BB,0xA2BC,0xA2BD,0xA2BE,0xA2BF,0xA2C0, 0xA2C1,0xA2C2, /* Range 0x2190 - 0x2199, array index: 0x071B */ 0xA1F6,0xA1F4,0xA1F7,0xA1F5,INVALC,INVALC,0xA1F8,0xA1F9, 0xA1FB,0xA1FA, /* Range 0x221E - 0x2220, array index: 0x0725 */ 0xA1DB,0xA1E8,0xA1E7, /* Range 0x2229 - 0x222B, array index: 0x0728 */ 0xA1E4,0xA1E5,0xA1EC, /* Range 0x2460 - 0x2469, array index: 0x072B */ 0xC7E9,0xC7EA,0xC7EB,0xC7EC,0xC7ED,0xC7EE,0xC7EF,0xC7F0, 0xC7F1,0xC7F2, /* Range 0x2474 - 0x247D, array index: 0x0735 */ 0xC7F3,0xC7F4,0xC7F5,0xC7F6,0xC7F7,0xC7F8,0xC7F9,0xC7FA, 0xC7FB,0xC7FC, /* Range 0x256D - 0x2573, array index: 0x073F */ 0xA27E,0xA2A1,0xA2A3,0xA2A2,0xA2AC,0xA2AD,0xA2AE, /* Range 0x2581 - 0x258F, array index: 0x0746 */ 0xA262,0xA263,0xA264,0xA265,0xA266,0xA267,0xA268,0xA269, 0xA270,0xA26F,0xA26E,0xA26D,0xA26C,0xA26B,0xA26A, /* Range 0x25E2 - 0x25E5, array index: 0x0755 */ 0xA2A8,0xA2A9,0xA2AB,0xA2AA, /* Range 0x2640 - 0x2642, array index: 0x0759 */ 0xA1F0,0xA1F2,0xA1F1, /* Range 0x3000 - 0x3015, array index: 0x075C */ 0xA140,0xA142,0xA143,0xA1B2,INVALC,0xC6A4,INVALC,INVALC, 0xA171,0xA172,0xA16D,0xA16E,0xA175,0xA176,0xA179,0xA17A, 0xA169,0xA16A,0xA245,INVALC,0xA165,0xA166, /* Range 0x301D - 0x3029, array index: 0x0772 */ 0xA1A9,0xA1AA,INVALC,INVALC,0xA2C3,0xA2C4,0xA2C5,0xA2C6, 0xA2C7,0xA2C8,0xA2C9,0xA2CA,0xA2CB, /* Range 0x3041 - 0x3093, array index: 0x077F */ 0xC6A5,0xC6A6,0xC6A7,0xC6A8,0xC6A9,0xC6AA,0xC6AB,0xC6AC, 0xC6AD,0xC6AE,0xC6AF,0xC6B0,0xC6B1,0xC6B2,0xC6B3,0xC6B4, 0xC6B5,0xC6B6,0xC6B7,0xC6B8,0xC6B9,0xC6BA,0xC6BB,0xC6BC, 0xC6BD,0xC6BE,0xC6BF,0xC6C0,0xC6C1,0xC6C2,0xC6C3,0xC6C4, 0xC6C5,0xC6C6,0xC6C7,0xC6C8,0xC6C9,0xC6CA,0xC6CB,0xC6CC, 0xC6CD,0xC6CE,0xC6CF,0xC6D0,0xC6D1,0xC6D2,0xC6D3,0xC6D4, 0xC6D5,0xC6D6,0xC6D7,0xC6D8,0xC6D9,0xC6DA,0xC6DB,0xC6DC, 0xC6DD,0xC6DE,0xC6DF,0xC6E0,0xC6E1,0xC6E2,0xC6E3,0xC6E4, 0xC6E5,0xC6E6,0xC6E7,0xC6E8,0xC6E9,0xC6EA,0xC6EB,0xC6EC, 0xC6ED,0xC6EE,0xC6EF,0xC6F0,0xC6F1,0xC6F2,0xC6F3,0xC6F4, 0xC6F5,0xC6F6,0xC6F7, /* Range 0x309D - 0x30F6, array index: 0x07D2 */ 0xC6A2,0xC6A3,INVALC,INVALC,0xC6F8,0xC6F9,0xC6FA,0xC6FB, 0xC6FC,0xC6FD,0xC6FE,0xC740,0xC741,0xC742,0xC743,0xC744, 0xC745,0xC746,0xC747,0xC748,0xC749,0xC74A,0xC74B,0xC74C, 0xC74D,0xC74E,0xC74F,0xC750,0xC751,0xC752,0xC753,0xC754, 0xC755,0xC756,0xC757,0xC758,0xC759,0xC75A,0xC75B,0xC75C, 0xC75D,0xC75E,0xC75F,0xC760,0xC761,0xC762,0xC763,0xC764, 0xC765,0xC766,0xC767,0xC768,0xC769,0xC76A,0xC76B,0xC76C, 0xC76D,0xC76E,0xC76F,0xC770,0xC771,0xC772,0xC773,0xC774, 0xC775,0xC776,0xC777,0xC778,0xC779,0xC77A,0xC77B,0xC77C, 0xC77D,0xC77E,0xC7A1,0xC7A2,0xC7A3,0xC7A4,0xC7A5,0xC7A6, 0xC7A7,0xC7A8,0xC7A9,0xC7AA,0xC7AB,0xC7AC,0xC7AD,0xC7AE, 0xC7AF,0xC7B0, /* Range 0x3105 - 0x3129, array index: 0x082C */ 0xA374,0xA375,0xA376,0xA377,0xA378,0xA379,0xA37A,0xA37B, 0xA37C,0xA37D,0xA37E,0xA3A1,0xA3A2,0xA3A3,0xA3A4,0xA3A5, 0xA3A6,0xA3A7,0xA3A8,0xA3A9,0xA3AA,0xA3AB,0xA3AC,0xA3AD, 0xA3AE,0xA3AF,0xA3B0,0xA3B1,0xA3B2,0xA3B3,0xA3B4,0xA3B5, 0xA3B6,0xA3B7,0xA3B8,0xA3B9,0xA3BA, /* Range 0x339C - 0x339E, array index: 0x0851 */ 0xA250,0xA251,0xA252, /* Range 0x4E07 - 0x4E19, array index: 0x0854 */ 0xC945,0xA456,0xA454,0xA457,0xA455,0xC946,0xA4A3,0xC94F, 0xC94D,0xA4A2,0xA4A1,INVALC,INVALC,0xA542,0xA541,0xA540, INVALC,0xA543,0xA4FE, /* Range 0x4E2D - 0x4E33, array index: 0x0867 */ 0xA4A4,0xC950,INVALC,0xA4A5,0xC963,0xA6EA,0xCBB1, /* Range 0x4E38 - 0x4E3C, array index: 0x086E */ 0xA459,0xA4A6,INVALC,0xA544,0xC964, /* Range 0x4E4B - 0x4E53, array index: 0x0873 */ 0xA4A7,INVALC,0xA545,0xA547,0xA546,INVALC,INVALC,0xA5E2, 0xA5E3, /* Range 0x4E58 - 0x4E5F, array index: 0x087C */ 0xADBC,0xA441,INVALC,INVALC,0xC941,0xA445,0xA45E,0xA45D, /* Range 0x4E7E - 0x4E95, array index: 0x0884 */ 0xB0AE,0xD44B,INVALC,INVALC,0xB6C3,0xDCB1,0xDCB2,INVALC, 0xA446,INVALC,0xA4A9,INVALC,INVALC,0xA8C6,0xA447,0xC948, 0xA45F,INVALC,INVALC,0xA4AA,0xA4AC,0xC951,0xA4AD,0xA4AB, /* Range 0x4E9E - 0x4EAE, array index: 0x089C */ 0xA8C8,0xAB45,INVALC,0xA460,0xA4AE,INVALC,0xA5E6,0xA5E8, 0xA5E7,INVALC,0xA6EB,INVALC,INVALC,0xA8C9,0xA8CA,0xAB46, 0xAB47, /* Range 0x4EC0 - 0x4ECD, array index: 0x08AD */ 0xA4B0,0xA4AF,0xC952,0xA4B1,0xA4B7,INVALC,0xA4B2,0xA4B3, 0xC954,0xC953,0xA4B5,0xA4B6,INVALC,0xA4B4, /* Range 0x4ED4 - 0x4EE9, array index: 0x08BB */ 0xA54A,0xA54B,0xA54C,0xA54D,0xA549,0xA550,0xC96A,INVALC, 0xC966,0xC969,0xA551,0xA561,INVALC,0xC968,INVALC,0xA54E, 0xA54F,0xA548,INVALC,INVALC,0xC965,0xC967, /* Range 0x4EF0 - 0x4EF7, array index: 0x08D1 */ 0xA5F5,0xC9B0,0xA5F2,0xA5F6,0xC9BA,0xC9AE,0xA5F3,0xC9B2, /* Range 0x4EFD - 0x4F19, array index: 0x08D9 */ 0xA5F7,INVALC,0xA5E9,0xC9B1,0xA5F8,0xC9B5,INVALC,0xC9B9, 0xC9B6,INVALC,INVALC,0xC9B3,0xA5EA,0xA5EC,0xA5F9,INVALC, 0xA5EE,0xC9AB,0xA5F1,0xA5EF,0xA5F0,0xC9BB,0xC9B8,0xC9AF, 0xA5ED,INVALC,INVALC,0xC9AC,0xA5EB, /* Range 0x4F2C - 0x4F64, array index: 0x08F6 */ 0xC9AD,0xCA66,INVALC,0xA742,0xA6F4,INVALC,INVALC,0xCA67, 0xA6F1,INVALC,0xA744,INVALC,0xA6F9,INVALC,0xA6F8,0xCA5B, 0xA6FC,0xA6F7,0xCA60,0xCA68,INVALC,0xCA64,INVALC,0xA6FA, INVALC,INVALC,0xA6FD,0xA6EE,0xA747,0xCA5D,INVALC,INVALC, 0xCBBD,0xA6EC,0xA743,0xA6ED,0xA6F5,0xA6F6,0xCA62,0xCA5E, 0xA6FB,0xA6F3,0xCA5A,0xA6EF,0xCA65,0xA745,0xA748,0xA6F2, 0xA740,0xA746,0xA6F0,0xCA63,0xA741,0xCA69,0xCA5C,0xA6FE, 0xCA5F, /* Range 0x4F67 - 0x4F9E, array index: 0x092F */ 0xCA61,INVALC,0xA8D8,0xCBBF,0xCBCB,0xA8D0,INVALC,0xCBCC, 0xA8CB,0xA8D5,INVALC,INVALC,0xA8CE,0xCBB9,0xA8D6,0xCBB8, 0xCBBC,0xCBC3,0xCBC1,0xA8DE,0xA8D9,0xCBB3,0xCBB5,0xA8DB, 0xA8CF,0xCBB6,0xCBC2,0xCBC9,0xA8D4,0xCBBB,0xCBB4,0xA8D3, 0xCBB7,0xA8D7,0xCBBA,INVALC,0xA8D2,INVALC,0xA8CD,INVALC, 0xA8DC,0xCBC4,0xA8DD,0xCBC8,INVALC,0xCBC6,0xCBCA,0xA8DA, 0xCBBE,0xCBB2,INVALC,0xCBC0,0xA8D1,0xCBC5,0xA8CC,0xCBC7, /* Range 0x4FB2 - 0x4FE1, array index: 0x0967 */ 0xCDE0,0xCDE8,INVALC,0xAB49,0xAB51,0xAB5D,INVALC,0xCDEE, 0xCDEC,0xCDE7,INVALC,INVALC,INVALC,0xAB4B,0xCDED,0xCDE3, 0xAB59,0xAB50,0xAB58,0xCDDE,INVALC,0xCDEA,INVALC,0xCDE1, 0xAB54,0xCDE2,INVALC,0xCDDD,0xAB5B,0xAB4E,0xAB57,0xAB4D, INVALC,0xCDDF,0xCDE4,INVALC,0xCDEB,0xAB55,0xAB52,0xCDE6, 0xAB5A,0xCDE9,0xCDE5,0xAB4F,0xAB5C,0xAB53,0xAB4C,0xAB48, /* Range 0x4FF1 - 0x4FFA, array index: 0x0997 */ 0xADD1,INVALC,0xADD6,0xD0D0,0xD0CF,0xD0D4,0xD0D5,0xADC4, INVALC,0xADCD, /* Range 0x5005 - 0x5037, array index: 0x09A1 */ 0xD0C9,0xADC7,0xD0CA,INVALC,0xADDC,INVALC,0xADD3,0xADBE, 0xADBF,0xD0DD,0xB0BF,INVALC,0xADCC,0xADCB,0xD0CB,0xADCF, 0xD45B,0xADC6,0xD0D6,0xADD5,0xADD4,0xADCA,0xD0CE,0xD0D7, INVALC,0xD0C8,0xADC9,0xD0D8,0xADD2,0xD0CC,0xADC0,INVALC, 0xADC3,0xADC2,0xD0D9,0xADD0,0xADC5,0xADD9,0xADDB,0xD0D3, 0xADD8,INVALC,0xD0DB,0xD0CD,0xD0DC,INVALC,0xD0D1,INVALC, 0xD0DA,INVALC,0xD0D2, /* Range 0x5043 - 0x5077, array index: 0x09D4 */ 0xB0B3,INVALC,0xD45C,0xD462,0xB0B2,0xD455,0xB0B6,0xD459, 0xD452,0xB0B4,0xD456,0xB0B9,0xB0BE,INVALC,0xD467,INVALC, 0xD451,INVALC,0xB0BA,INVALC,0xD466,INVALC,INVALC,0xB0B5, 0xD458,0xB0B1,0xD453,0xD44F,0xD45D,0xD450,0xD44E,0xD45A, 0xD460,0xD461,0xB0B7,INVALC,INVALC,0xD85B,0xD45E,0xD44D, 0xD45F,INVALC,0xB0C1,0xD464,0xB0C0,0xD44C,INVALC,0xD454, 0xD465,0xB0BC,0xB0BB,0xB0B8,0xB0BD, /* Range 0x508B - 0x509E, array index: 0x0A09 */ 0xD855,0xD858,0xB3C4,0xD859,INVALC,INVALC,0xB3C7,0xD85D, INVALC,0xD853,0xD852,0xB3C9,INVALC,0xB3CA,0xB3C6,0xB3CB, 0xD851,0xD85C,0xD85A,0xD854, /* Range 0x50AC - 0x50DD, array index: 0x0A1D */ 0xB6CA,0xB6C4,0xDCB7,0xB6CD,0xDCBD,0xDCC0,0xB6C6,0xB6C7, 0xDCBA,0xB6C5,0xDCC3,0xB6CB,0xDCC4,INVALC,0xDCBF,0xB6CC, INVALC,0xDCB4,0xB6C9,0xDCB5,INVALC,0xDCBE,0xDCBC,INVALC, 0xDCB8,0xB6C8,0xDCB6,0xB6CE,0xDCBB,0xDCC2,0xDCB9,0xDCC1, INVALC,INVALC,0xB9B6,0xB9B3,INVALC,0xB9B4,INVALC,0xE0F9, 0xE0F1,0xB9B2,0xB9AF,0xE0F2,INVALC,INVALC,0xB9B1,0xE0F5, INVALC,0xE0F7, /* Range 0x50E3 - 0x514D, array index: 0x0A4F */ 0xE0FD,0xE0F8,0xB9AE,0xE0F0,0xB9AC,0xE0F3,0xB9B7,0xE0F6, INVALC,0xE0FA,0xB9B0,0xB9AD,0xE0FC,0xE0FB,0xB9B5,INVALC, 0xE0F4,INVALC,0xBBF8,0xE4EC,INVALC,0xE4E9,0xBBF9,INVALC, 0xBBF7,INVALC,0xE4F0,0xE4ED,0xE4E6,0xBBF6,INVALC,0xBBFA, 0xE4E7,0xBBF5,0xBBFD,0xE4EA,0xE4EB,0xBBFB,0xBBFC,0xE4F1, 0xE4EE,0xE4EF,INVALC,INVALC,INVALC,0xBEAA,0xE8F8,0xBEA7, 0xE8F5,0xBEA9,0xBEAB,INVALC,0xE8F6,0xBEA8,INVALC,0xE8F7, INVALC,0xE8F4,INVALC,INVALC,0xC076,0xECBD,0xC077,0xECBB, INVALC,0xECBC,0xECBA,0xECB9,INVALC,INVALC,0xECBE,0xC075, INVALC,INVALC,0xEFB8,0xEFB9,INVALC,0xE4E8,0xEFB7,0xC078, 0xC35F,0xF1EB,0xF1EC,INVALC,0xC4D7,0xC4D8,0xF5C1,0xF5C0, 0xC56C,0xC56B,0xF7D0,INVALC,0xA449,0xA461,0xA4B9,INVALC, 0xA4B8,0xA553,0xA552,0xA5FC,0xA5FB,0xA5FD,0xA5FA,INVALC, 0xA74A,0xA749,0xA74B, /* Range 0x5157 - 0x516E, array index: 0x0ABA */ 0xAB5E,INVALC,0xA259,0xD0DE,0xA25A,0xB0C2,0xA25C,0xA25B, 0xD860,INVALC,0xA25D,0xB9B8,0xA25E,INVALC,0xA44A,INVALC, 0xA4BA,0xA5FE,0xA8E2,INVALC,0xA44B,0xA4BD,0xA4BB,0xA4BC, /* Range 0x5175 - 0x5178, array index: 0x0AD2 */ 0xA74C,0xA8E4,0xA8E3,0xA8E5, /* Range 0x518F - 0x5198, array index: 0x0AD6 */ 0xCA6A,INVALC,0xAB60,0xAB5F,0xD0E0,0xD0DF,0xB0C3,INVALC, 0xA4BE,0xC955, /* Range 0x51BC - 0x51BE, array index: 0x0AE0 */ 0xCBCE,0xA8E6,0xCBCF, /* Range 0x51C4 - 0x51D0, array index: 0x0AE3 */ 0xD0E2,0xD0E3,0xADE3,INVALC,0xD0E4,INVALC,0xD0E1,0xADE4, 0xADE2,0xADE1,0xD0E5,INVALC,0xD468, /* Range 0x51DC - 0x51E1, array index: 0x0AF0 */ 0xBBFE,0xBEAE,0xE8F9,INVALC,0xA44C,0xA45A, /* Range 0x51F5 - 0x51FA, array index: 0x0AF6 */ 0xC942,0xA4BF,INVALC,0xA559,0xA557,0xA558, /* Range 0x5206 - 0x5217, array index: 0x0AFC */ 0xA4C0,0xA4C1,0xA4C2,0xC9BE,0xA55A,INVALC,0xC96B,INVALC, 0xA646,INVALC,0xC9BF,0xA644,0xA645,0xC9BD,INVALC,INVALC, 0xA647,0xA643, /* Range 0x521C - 0x521E, array index: 0x0B0E */ 0xCA6C,0xAAEC,0xCA6D, /* Range 0x5224 - 0x522A, array index: 0x0B11 */ 0xA750,0xA74F,INVALC,INVALC,0xA753,0xA751,0xA752, /* Range 0x522E - 0x523B, array index: 0x0B18 */ 0xA8ED,INVALC,0xA8EC,0xCBD4,0xCBD1,0xCBD2,INVALC,0xCBD0, 0xA8EE,0xA8EA,0xA8E9,INVALC,0xA8EB,0xA8E8, /* Range 0x5243 - 0x524E, array index: 0x0B26 */ 0xAB63,0xCDF0,INVALC,0xCBD3,0xAB68,INVALC,0xCDF1,0xAB64, 0xAB67,0xAB66,0xAB65,0xAB62, /* Range 0x5252 - 0x5262, array index: 0x0B32 */ 0xD0E8,INVALC,0xADE7,0xD0EB,0xADE5,INVALC,INVALC,INVALC, 0xD0E7,0xADE8,0xADE6,0xADE9,0xD0E9,0xD0EA,INVALC,0xD0E6, 0xD0EC, /* Range 0x5269 - 0x526F, array index: 0x0B43 */ 0xB3D1,0xB0C5,0xD469,0xD46B,0xD46A,0xD46C,0xB0C6, /* Range 0x5274 - 0x528D, array index: 0x0B4A */ 0xB3CF,0xB3D0,INVALC,0xB6D0,0xDCC7,INVALC,0xDCC6,0xDCC8, 0xDCC9,0xB6D1,INVALC,0xB6CF,0xE141,0xE142,0xB9BB,0xB9BA, 0xE35A,INVALC,INVALC,0xBC40,0xBC41,0xBC42,0xBC44,0xE4F2, 0xE4F3,0xBC43, /* Range 0x5296 - 0x529B, array index: 0x0B64 */ 0xF1ED,0xF5C3,0xF5C2,0xF7D1,INVALC,0xA44F, /* Range 0x52A9 - 0x52AE, array index: 0x0B6A */ 0xA755,0xA756,0xA754,0xA757,0xCA6F,0xCA70, /* Range 0x52BE - 0x52C3, array index: 0x0B70 */ 0xA8F0,INVALC,0xCDF2,0xAB6C,0xCDF3,0xAB6B, /* Range 0x52D2 - 0x52E6, array index: 0x0B76 */ 0xB0C7,0xD46E,INVALC,0xB0CA,0xD46D,0xB1E5,0xB0C9,0xB0C8, INVALC,0xB3D4,INVALC,0xB3D3,0xB3D2,0xB6D2,INVALC,INVALC, 0xB6D5,0xB6D6,0xB6D4,INVALC,0xB6D3, /* Range 0x52EF - 0x52FF, array index: 0x0B8B */ 0xE4F5,0xBC45,0xE4F4,INVALC,0xBEB1,0xECBF,0xC079,INVALC, 0xF1EE,0xC455,INVALC,0xA463,0xA4C3,0xC956,INVALC,0xA4C4, 0xA4C5, /* Range 0x5305 - 0x5323, array index: 0x0B9C */ 0xA55D,0xA55E,INVALC,0xA649,0xCA71,0xCBD6,0xCBD7,INVALC, 0xAB6D,0xD0EE,0xB0CC,0xB0CB,0xD863,0xD862,INVALC,INVALC, 0xA450,0xA4C6,0xA55F,INVALC,0xB0CD,0xC943,INVALC,0xC96C, 0xA560,INVALC,0xC9C2,0xA64B,0xA64A,0xC9C1,0xA758, /* Range 0x532D - 0x5331, array index: 0x0BBB */ 0xD46F,INVALC,0xB6D7,0xE145,0xB9BC, /* Range 0x533C - 0x5354, array index: 0x0BC0 */ 0xCBD8,0xCDF4,0xB0D0,0xB0CE,0xB0CF,0xA451,INVALC,0xA464, 0xA2CD,0xA4CA,INVALC,0xA4C9,0xA4C8,0xA563,0xA562,INVALC, 0xC96D,0xC9C3,INVALC,INVALC,INVALC,0xA8F5,0xA8F2,0xA8F4, 0xA8F3, /* Range 0x536C - 0x537C, array index: 0x0BD9 */ 0xC957,INVALC,0xA567,0xA566,0xA64C,0xA64D,0xCA73,0xA759, INVALC,0xA75A,INVALC,0xA8F7,0xA8F8,0xA8F9,INVALC,0xAB6F, 0xCDF5, /* Range 0x5394 - 0x539F, array index: 0x0BEA */ 0xCBDA,INVALC,0xCDF7,0xCDF6,0xCDF9,0xCDF8,0xAB70,INVALC, 0xD470,0xADED,0xD0EF,0xADEC, /* Range 0x53C8 - 0x53CD, array index: 0x0BF6 */ 0xA453,0xA465,0xA4CE,0xA4CD,INVALC,0xA4CF, /* Range 0x53DF - 0x53F5, array index: 0x0BFC */ 0xADEE,INVALC,0xE8FB,0xC24F,0xA466,0xA56A,0xA579,0xA574, INVALC,0xA56F,0xA56E,0xA575,0xA573,0xA56C,0xA57A,0xA56D, 0xA569,0xA578,0xA577,0xA576,0xA56B,INVALC,0xA572, /* Range 0x5403 - 0x5412, array index: 0x0C13 */ 0xA659,0xA655,INVALC,0xA65B,0xC9C5,0xA658,0xA64E,0xA651, 0xA654,0xA650,0xA657,0xA65A,0xA64F,0xA652,0xA656,0xA65C, /* Range 0x5418 - 0x544A, array index: 0x0C23 */ 0xCA7E,0xCA7B,INVALC,0xA767,0xCA7C,0xA75B,0xA75D,0xA775, 0xA770,INVALC,INVALC,INVALC,0xCAA5,0xCA7D,0xA75F,0xA761, 0xCAA4,0xA768,0xCA78,0xA774,0xA776,0xA75C,0xA76D,INVALC, 0xCA76,0xA773,INVALC,0xA764,INVALC,0xA76E,0xA76F,0xCA77, 0xA76C,0xA76A,INVALC,0xA76B,0xA771,0xCAA1,0xA75E,INVALC, 0xA772,0xCAA3,0xA766,0xA763,INVALC,0xCA7A,0xA762,0xCAA6, 0xA765,INVALC,0xA769, /* Range 0x5460 - 0x549A, array index: 0x0C56 */ 0xCBEB,0xCBEA,0xA94F,0xCBED,0xCBEF,0xCBE4,0xCBE7,0xCBEE, 0xA950,INVALC,INVALC,0xCBE1,0xCBE5,INVALC,INVALC,0xCBE9, 0xCE49,0xA94B,0xCE4D,0xA8FD,0xCBE6,0xA8FE,0xA94C,0xA945, 0xA941,INVALC,0xCBE2,0xA944,0xA949,0xA952,0xCBE3,0xCBDC, 0xA943,0xCBDD,0xCBDF,INVALC,0xA946,INVALC,0xA948,0xCBDB, 0xCBE0,INVALC,INVALC,0xA951,0xA94D,0xCBE8,0xA953,INVALC, 0xA94A,0xCBDE,0xA947,INVALC,INVALC,0xA942,0xA940,INVALC, 0xCBEC,INVALC,0xA94E, /* Range 0x54A0 - 0x54C9, array index: 0x0C91 */ 0xCE48,0xCDFB,0xCE4B,INVALC,INVALC,0xCDFD,0xAB78,0xABA8, 0xAB74,0xABA7,0xAB7D,0xABA4,0xAB72,0xCDFC,0xCE43,0xABA3, 0xCE4F,0xABA5,INVALC,0xAB79,INVALC,INVALC,0xCE45,0xCE42, 0xAB77,INVALC,0xCDFA,0xABA6,0xCE4A,0xAB7C,0xCE4C,0xABA9, 0xAB73,0xAB7E,0xAB7B,0xCE40,0xABA1,0xCE46,0xCE47,0xAB7A, 0xABA2,0xAB76, /* Range 0x54DE - 0x54F3, array index: 0x0CBB */ 0xCE4E,INVALC,0xD144,0xADFB,0xD0F1,INVALC,0xD0F6,0xADF4, 0xAE40,0xD0F4,0xADEF,0xADF9,0xADFE,0xD0FB,INVALC,0xADFA, 0xADFD,INVALC,INVALC,0xD0FE,0xADF5,0xD0F5, /* Range 0x54F7 - 0x5514, array index: 0x0CD1 */ 0xD142,0xD143,INVALC,0xADF7,0xD141,0xADF3,0xAE43,INVALC, 0xD0F8,INVALC,0xADF1,INVALC,0xD146,0xD0F9,0xD0FD,0xADF6, 0xAE42,0xD0FA,0xADFC,0xD140,0xD147,0xD4A1,INVALC,0xD145, 0xAE44,0xADF0,0xD0FC,0xD0F3,INVALC,0xADF8, /* Range 0x552A - 0x5557, array index: 0x0CEF */ 0xD477,INVALC,0xB0E4,0xD4A7,0xB0E2,0xB0DF,0xD47C,0xB0DB, 0xD4A2,0xB0E6,0xD476,0xD47B,0xD47A,0xADF2,0xB0E1,0xD4A5, INVALC,0xD4A8,0xD473,INVALC,0xB3E8,INVALC,0xD4A9,0xB0E7, INVALC,0xB0D9,0xB0D6,0xD47E,0xB0D3,INVALC,0xD4A6,INVALC, 0xB0DA,0xD4AA,INVALC,0xD474,0xD4A4,0xB0DD,0xD475,0xD478, 0xD47D,INVALC,INVALC,0xB0DE,0xB0DC,0xB0E8, /* Range 0x555E - 0x5566, array index: 0x0D1D */ 0xB0D7,0xB1D2,INVALC,0xB0D8,0xD479,0xB0E5,0xB0E0,0xD4A3, 0xB0D5, /* Range 0x5575 - 0x55B5, array index: 0x0D26 */ 0xD471,0xD472,0xD86A,INVALC,INVALC,INVALC,0xB3D7,0xB3DA, 0xD875,0xB3EE,0xD878,0xB3D8,0xD871,0xB3DE,0xB3E4,0xB5BD, INVALC,INVALC,0xB3E2,0xD86E,0xB3EF,0xB3DB,0xB3E3,0xD876, 0xDCD7,0xD87B,0xD86F,INVALC,0xD866,0xD873,0xD86D,0xB3E1, 0xD879,INVALC,INVALC,0xB3DD,0xB3F1,0xB3EA,INVALC,0xB3DF, 0xB3DC,INVALC,0xB3E7,INVALC,0xD87A,0xD86C,0xD872,0xD874, 0xD868,0xD877,0xB3D9,0xD867,INVALC,0xB3E0,0xB3F0,0xB3EC, 0xD869,0xB3E6,INVALC,INVALC,0xB3ED,0xB3E9,0xB3E5,INVALC, 0xD870, /* Range 0x55BF - 0x55E9, array index: 0x0D67 */ 0xDCD5,0xDCD1,INVALC,0xDCE0,0xDCCA,0xDCD3,0xB6E5,0xB6E6, 0xB6DE,0xDCDC,0xB6E8,0xDCCF,0xDCCE,0xDCCC,0xDCDE,0xB6DC, 0xDCD8,0xDCCD,0xB6DF,0xDCD6,0xB6DA,0xDCD2,0xDCD9,0xDCDB, INVALC,INVALC,0xDCDF,0xB6E3,0xDCCB,0xB6DD,0xDCD0,INVALC, 0xB6D8,INVALC,0xB6E4,0xDCDA,0xB6E0,0xB6E1,0xB6E7,0xB6DB, 0xA25F,0xB6D9,0xDCD4, /* Range 0x55F6 - 0x561F, array index: 0x0D92 */ 0xB9CD,0xB9C8,INVALC,0xE155,0xE151,INVALC,0xE14B,0xB9C2, 0xB9BE,0xE154,0xB9BF,0xE14E,0xE150,INVALC,0xE153,INVALC, 0xB9C4,INVALC,0xB9CB,0xB9C5,INVALC,INVALC,0xE149,0xB9C6, 0xB9C7,0xE14C,0xB9CC,INVALC,0xE14A,0xE14F,0xB9C3,0xE148, 0xB9C9,0xB9C1,INVALC,INVALC,INVALC,0xB9C0,0xE14D,0xE152, INVALC,0xB9CA, /* Range 0x562C - 0x564E, array index: 0x0DBC */ 0xE544,INVALC,0xBC47,0xBC53,0xBC54,INVALC,0xBC4A,0xE542, 0xBC4C,0xE4F9,0xBC52,INVALC,0xE546,0xBC49,0xE548,0xBC48, INVALC,0xE543,0xE545,0xBC4B,0xE541,0xE4FA,0xE4F7,INVALC, INVALC,0xD86B,0xE4FD,INVALC,0xE4F6,0xE4FC,0xE4FB,INVALC, 0xE4F8,INVALC,0xBC4F, /* Range 0x5657 - 0x565A, array index: 0x0DDF */ 0xBC50,0xE4FE,0xBEB2,0xE540, /* Range 0x5660 - 0x5679, array index: 0x0DE3 */ 0xE8FD,INVALC,0xBEBE,0xE942,0xBEB6,0xBEBA,0xE941,INVALC, 0xBEB9,0xBEB5,0xBEB8,0xBEB3,0xBEBD,0xE943,0xE8FE,0xBEBC, 0xE8FC,0xBEBB,0xE944,0xE940,0xBC51,INVALC,0xBEBF,0xE946, 0xBEB7,0xBEB4, /* Range 0x567E - 0x5687, array index: 0x0DFD */ 0xECC6,0xECC8,0xC07B,0xECC9,0xECC7,0xECC5,0xECC4,0xC07D, 0xECC3,0xC07E, /* Range 0x568C - 0x5690, array index: 0x0E07 */ 0xECC1,0xECC2,0xC07A,0xC0A1,0xC07C, /* Range 0x5695 - 0x569D, array index: 0x0E0C */ 0xC250,INVALC,0xEFBC,0xEFBA,0xEFBF,0xEFBD,INVALC,0xEFBB, 0xEFBE, /* Range 0x56A5 - 0x56B7, array index: 0x0E15 */ 0xC360,0xF1F2,0xF1F3,0xC456,INVALC,0xF1F4,0xF1F0,0xF1F5, 0xF1F1,0xC251,INVALC,INVALC,INVALC,0xF3FE,0xF441,0xC459, 0xF440,0xC458,0xC457, /* Range 0x56BC - 0x56CD, array index: 0x0E28 */ 0xC45A,0xF5C5,0xF5C6,INVALC,0xC4DA,0xC4D9,0xC4DB,0xF5C4, INVALC,0xF6D8,0xF6D7,INVALC,0xC56D,0xC56F,0xC56E,0xF6D9, 0xC5C8,0xF8A6, /* Range 0x56DA - 0x56EB, array index: 0x0E3A */ 0xA57D,0xA57C,INVALC,0xA65F,0xA65E,0xC9C7,0xA65D,0xC9C6, INVALC,INVALC,0xA779,0xCAA9,INVALC,0xCAA8,INVALC,INVALC, 0xA777,0xA77A, /* Range 0x56FF - 0x570D, array index: 0x0E4C */ 0xABAA,INVALC,0xD148,0xD149,0xAE45,0xAE46,INVALC,INVALC, 0xD4AC,0xB0E9,0xB0EB,0xD4AB,0xB0EA,0xD87C,0xB3F2, /* Range 0x5712 - 0x5723, array index: 0x0E5B */ 0xB6E9,0xB6EA,0xDCE1,INVALC,0xB9CF,INVALC,0xB9CE,INVALC, 0xE549,0xE948,0xE947,INVALC,0xF96B,0xA467,0xC959,INVALC, 0xC96E,0xC96F, /* Range 0x5728 - 0x5734, array index: 0x0E6D */ 0xA662,0xA666,0xC9C9,INVALC,0xA664,0xA663,0xC9C8,0xA665, 0xA661,INVALC,INVALC,0xA660,0xC9CA, /* Range 0x5747 - 0x5752, array index: 0x0E7A */ 0xA7A1,INVALC,0xCAAD,0xA77B,0xCAAE,0xCAAC,0xA77E,0xA7A2, 0xA7A5,0xA7A4,0xA77C,0xCAAF, /* Range 0x5766 - 0x577D, array index: 0x0E86 */ 0xA95A,INVALC,0xCC40,0xA958,0xA957,0xCBF5,INVALC,0xCBF4, INVALC,0xCBF2,0xCBF7,0xCBF6,0xCBF3,0xCBFC,0xCBFD,0xCBFA, 0xCBF8,0xA956,INVALC,INVALC,INVALC,0xCBFB,0xA95C,0xCC41, /* Range 0x5793 - 0x57A5, array index: 0x0E9E */ 0xABB2,0xCE58,0xCE5E,INVALC,0xCE55,0xCE59,0xCE5B,0xCE5D, 0xCE57,INVALC,0xCE56,0xCE51,0xCE52,0xABAD,INVALC,0xABAF, 0xABAE,0xCE53,0xCE5C, /* Range 0x57B5 - 0x57C7, array index: 0x0EB1 */ 0xCE50,0xD153,INVALC,0xD152,0xD157,0xD14E,INVALC,0xD151, 0xD150,INVALC,0xD154,INVALC,0xD158,0xAE47,0xAE4A,INVALC, INVALC,0xD14F,0xD155, /* Range 0x57CB - 0x57D5, array index: 0x0EC4 */ 0xAE49,0xD14A,INVALC,0xABB0,0xD4BA,0xD156,INVALC,0xD14D, INVALC,0xAE48,0xD14C, /* Range 0x57DF - 0x5810, array index: 0x0ECF */ 0xB0EC,0xB0F0,0xD4C1,0xD4AF,0xD4BD,0xB0F1,0xD4BF,INVALC, 0xD4C5,INVALC,0xD4C9,INVALC,INVALC,0xD4C0,0xD4B4,0xD4BC, INVALC,0xD4CA,0xD4C8,0xD4BE,0xD4B9,0xD4B2,0xD8A6,0xD4B0, 0xB0F5,0xD4B7,0xB0F6,0xB0F2,0xD4AD,0xD4C3,0xD4B5,INVALC, INVALC,0xD4B3,0xD4C6,0xB0F3,INVALC,0xD4CC,0xB0ED,0xB0EF, 0xD4BB,0xD4B6,0xAE4B,0xB0EE,0xD4B8,0xD4C7,0xD4CB,0xD4C2, INVALC,0xD4C4, /* Range 0x5819 - 0x583F, array index: 0x0F01 */ 0xD8A1,INVALC,0xD8AA,0xD8A9,0xB3FA,0xD8A2,INVALC,0xB3FB, 0xB3F9,INVALC,0xD8A4,0xB3F6,0xD8A8,INVALC,0xD8A3,0xD8A5, 0xD87D,0xB3F4,INVALC,0xD8B2,0xD8B1,0xD8AE,0xB3F3,0xB3F7, 0xB3F8,0xD14B,0xD8AB,0xB3F5,0xB0F4,0xD8AD,0xD87E,0xD8B0, 0xD8AF,INVALC,0xD8B3,INVALC,0xDCEF,INVALC,0xD8AC, /* Range 0x5848 - 0x5865, array index: 0x0F28 */ 0xD8A7,0xDCE7,0xB6F4,0xB6F7,0xB6F2,0xDCE6,0xDCEA,0xDCE5, INVALC,0xB6EC,0xB6F6,0xDCE2,0xB6F0,0xDCE9,INVALC,0xB6EE, 0xB6ED,0xDCEC,0xB6EF,0xDCEE,INVALC,0xDCEB,0xB6EB,INVALC, INVALC,INVALC,0xB6F5,0xDCF0,0xDCE4,0xDCED, /* Range 0x5874 - 0x5894, array index: 0x0F46 */ 0xE15D,0xB9D0,0xE163,INVALC,INVALC,0xB9D5,0xE15F,0xE166, 0xE157,0xB9D7,0xB9D1,0xE15C,0xBC55,0xE15B,0xE164,0xB9D2, INVALC,0xB9D6,0xE15A,0xE160,0xE165,0xE156,0xB9D4,0xE15E, INVALC,INVALC,0xE162,0xE168,0xE158,0xE161,INVALC,0xB9D3, 0xE167, /* Range 0x589C - 0x58B3, array index: 0x0F67 */ 0xBC59,0xE54B,0xBC57,0xBC56,0xE54D,0xE552,INVALC,0xE54E, INVALC,0xE551,0xBC5C,INVALC,0xBEA5,0xBC5B,INVALC,0xE54A, 0xE550,INVALC,0xBC5A,0xE54F,INVALC,0xE54C,INVALC,0xBC58, /* Range 0x58BA - 0x58C9, array index: 0x0F7F */ 0xE94D,INVALC,0xE94F,0xE94A,0xBEC1,0xE94C,INVALC,0xBEC0, 0xE94E,INVALC,INVALC,0xBEC3,0xE950,0xBEC2,0xE949,0xE94B, /* Range 0x58CE - 0x58EC, array index: 0x0F8F */ 0xC0A5,0xECCC,INVALC,0xC0A4,0xECCD,0xC0A3,0xECCB,0xC0A2, 0xECCA,INVALC,0xC253,0xC252,0xF1F6,0xF1F8,INVALC,0xF1F7, 0xC361,0xC362,INVALC,INVALC,0xC363,0xF442,0xC45B,INVALC, INVALC,0xF7D3,0xF7D2,0xC5F2,INVALC,0xA468,0xA4D0, /* Range 0x58F9 - 0x58FF, array index: 0x0FAE */ 0xB3FC,0xB3FD,INVALC,0xDCF2,0xB9D8,0xE169,0xE553, /* Range 0x590C - 0x590F, array index: 0x0FB5 */ 0xCC42,0xCE60,0xD159,0xAE4C, /* Range 0x5912 - 0x591C, array index: 0x0FB9 */ 0xF1F9,INVALC,0xC4DC,0xA469,0xA57E,0xC970,INVALC,0xA667, 0xA668,INVALC,0xA95D, /* Range 0x5927 - 0x5931, array index: 0x0FC4 */ 0xA46A,INVALC,0xA4D1,0xA4D3,0xA4D2,0xC95B,0xA4D4,0xA5A1, 0xC971,INVALC,0xA5A2, /* Range 0x5944 - 0x5962, array index: 0x0FCF */ 0xA961,0xCC43,INVALC,0xA95F,0xA960,0xA95E,0xD15A,INVALC, INVALC,INVALC,0xABB6,0xABB5,0xABB7,0xABB4,INVALC,0xCE61, 0xA962,0xABB3,INVALC,0xAE4D,0xAE4E,INVALC,0xAE4F,INVALC, 0xD4CD,INVALC,INVALC,INVALC,0xB3FE,0xD8B4,0xB0F8, /* Range 0x5967 - 0x5985, array index: 0x0FEE */ 0xB6F8,INVALC,0xB9DD,0xB9DC,0xE16A,INVALC,0xBC5D,0xBEC4, INVALC,0xEFC0,0xF6DA,0xF7D4,0xA46B,0xA5A3,INVALC,0xA5A4, 0xC9D1,0xA66C,0xA66F,INVALC,0xC9CF,0xC9CD,0xA66E,0xC9D0, 0xC9D2,0xC9CC,0xA671,0xA670,0xA66D,0xA66B,0xC9CE, /* Range 0x598D - 0x5999, array index: 0x100D */ 0xA7B0,0xCAB6,0xCAB9,0xCAB8,INVALC,0xA7AA,0xA7B2,INVALC, INVALC,0xA7AF,0xCAB5,0xCAB3,0xA7AE, /* Range 0x599D - 0x59A8, array index: 0x101A */ 0xA7A9,0xA7AC,INVALC,0xCAB4,0xCABB,0xCAB7,0xA7AD,0xA7B1, 0xA7B4,0xCAB2,0xCABA,0xA7AB, /* Range 0x59AE - 0x5A03, array index: 0x1026 */ 0xA967,0xA96F,INVALC,0xCC4F,0xCC48,0xA970,0xCC53,0xCC44, 0xCC4B,INVALC,INVALC,0xA966,0xCC45,0xA964,0xCC4C,0xCC50, 0xA963,INVALC,0xCC51,0xCC4A,INVALC,0xCC4D,INVALC,0xA972, 0xA969,0xCC54,0xCC52,INVALC,0xA96E,0xA96C,0xCC49,0xA96B, 0xCC47,0xCC46,0xA96A,0xA968,0xA971,0xA96D,0xA965,INVALC, 0xCC4E,INVALC,0xABB9,INVALC,0xABC0,0xCE6F,0xABB8,0xCE67, 0xCE63,INVALC,0xCE73,0xCE62,INVALC,0xABBB,0xCE6C,0xABBE, 0xABC1,INVALC,0xABBC,0xCE70,0xABBF,INVALC,0xAE56,0xCE76, 0xCE64,INVALC,INVALC,0xCE66,0xCE6D,0xCE71,0xCE75,0xCE72, 0xCE6B,0xCE6E,INVALC,INVALC,0xCE68,0xABC3,0xCE6A,0xCE69, 0xCE74,0xABBA,0xCE65,0xABC2,INVALC,0xABBD, /* Range 0x5A13 - 0x5A20, array index: 0x107C */ 0xAE55,INVALC,0xD15F,0xD15C,0xD161,0xAE51,0xD15B,INVALC, 0xAE54,0xAE52,INVALC,0xD163,0xAE53,0xAE57, /* Range 0x5A33 - 0x5A39, array index: 0x108A */ 0xD164,INVALC,0xD4D4,0xB0F9,0xD8C2,0xD4D3,0xD4E6, /* Range 0x5A3E - 0x5A6D, array index: 0x1091 */ 0xD4E4,INVALC,0xB0FE,0xB0FA,0xD4ED,0xD4DD,0xD4E0,INVALC, 0xB143,0xD4EA,0xD4E2,0xB0FB,0xB144,INVALC,0xD4E7,0xD4E5, INVALC,INVALC,0xD4D6,0xD4EB,0xD4DF,0xD4DA,INVALC,0xD4D0, 0xD4EC,0xD4DC,0xD4CF,INVALC,0xB142,0xD4E1,0xD4EE,0xD4DE, 0xD4D2,0xD4D7,0xD4CE,INVALC,0xB141,INVALC,0xD4DB,0xD4D8, 0xB0FC,0xD4D1,INVALC,0xD4E9,0xB0FD,INVALC,0xD4D9,0xD4D5, /* Range 0x5A77 - 0x5A7F, array index: 0x10C1 */ 0xB440,0xD8BB,INVALC,0xD8B8,0xD8C9,0xD8BD,0xD8CA,INVALC, 0xB442, /* Range 0x5A8A - 0x5A9F, array index: 0x10CA */ 0xD8C4,0xD8C7,0xD8CB,INVALC,0xD4E3,0xD8CD,0xDD47,INVALC, 0xB443,0xD8CE,0xD8B6,0xD8C0,INVALC,0xD8C5,INVALC,INVALC, 0xB441,0xB444,0xD8CC,0xD8CF,0xD8BA,0xD8B7, /* Range 0x5AA5 - 0x5AA9, array index: 0x10E0 */ 0xD8BE,0xD8BC,0xB445,INVALC,0xD8C8, /* Range 0x5AAC - 0x5ACD, array index: 0x10E5 */ 0xD8BF,INVALC,0xD8C1,0xD8B5,0xDCFA,0xDCF8,0xB742,0xB740, 0xDD43,0xDCF9,0xDD44,0xDD40,0xDCF7,0xDD46,0xDCF6,0xDCFD, 0xB6FE,0xB6FD,0xB6FC,0xDCFB,0xDD41,0xB6F9,0xB741,INVALC, 0xDCF4,INVALC,0xDCFE,0xDCF3,0xDCFC,0xB6FA,0xDD42,0xDCF5, 0xB6FB,0xDD45, /* Range 0x5AD5 - 0x5AEE, array index: 0x1107 */ 0xE16E,0xB9E2,0xB9E1,0xB9E3,0xE17A,0xE170,0xE176,0xE16B, 0xE179,0xE178,0xE17C,0xE175,0xB9DE,0xE174,0xB9E4,INVALC, 0xE16D,0xB9DF,INVALC,0xE17B,0xB9E0,0xE16F,0xE172,0xE177, 0xE171,0xE16C, /* Range 0x5AF3 - 0x5B34, array index: 0x1121 */ 0xE173,0xE555,0xBC61,0xE558,0xE557,0xE55A,0xE55C,INVALC, 0xBC5F,INVALC,0xE556,INVALC,0xE554,INVALC,0xE55D,0xE55B, 0xE559,INVALC,0xE55F,INVALC,0xE55E,0xBC63,0xBC5E,INVALC, 0xBC60,0xBC62,INVALC,INVALC,0xE560,0xE957,INVALC,INVALC, 0xE956,0xE955,INVALC,0xE958,0xE951,INVALC,0xE952,0xE95A, 0xE953,INVALC,0xBEC5,0xE95C,INVALC,0xE95B,0xE954,INVALC, 0xECD1,0xC0A8,0xECCF,0xECD4,0xECD3,0xE959,INVALC,0xC0A7, INVALC,0xECD2,0xECCE,0xECD6,0xECD5,0xC0A6,INVALC,0xECD0, INVALC,0xBEC6, /* Range 0x5B3C - 0x5B40, array index: 0x1163 */ 0xEFC1,0xF1FA,0xF1FB,0xF1FC,0xC45C, /* Range 0x5B47 - 0x5B65, array index: 0x1168 */ 0xF5C8,0xF5C7,INVALC,INVALC,0xF6DB,0xF6DC,0xF7D5,0xF8A7, INVALC,0xA46C,0xA46D,INVALC,0xA46E,0xA4D5,0xA5A5,0xC9D3, 0xA672,0xA673,INVALC,0xA7B7,0xA7B8,0xA7B6,0xA7B5,INVALC, 0xA973,INVALC,INVALC,0xCC55,0xA975,0xA974,0xCC56, /* Range 0x5B6E - 0x5B9C, array index: 0x1187 */ 0xD4F0,INVALC,0xB145,0xB447,0xD4EF,0xB446,INVALC,0xB9E5, INVALC,0xE17D,0xBEC7,INVALC,0xC0A9,0xECD7,INVALC,0xC45E, INVALC,0xC570,INVALC,0xC972,INVALC,0xA5A6,0xC973,0xA676, INVALC,0xA674,0xA675,0xA677,INVALC,0xA7BA,0xA7B9,INVALC, 0xCABC,0xA7BB,INVALC,INVALC,0xCABD,0xCC57,INVALC,0xCC58, INVALC,0xA976,0xA978,0xA97A,0xA977,0xA97B,0xA979, /* Range 0x5BA2 - 0x5BB9, array index: 0x11B6 */ 0xABC8,0xABC5,0xABC7,0xABC9,0xABC6,0xD166,0xCE77,INVALC, INVALC,INVALC,0xD168,0xD167,0xAE63,INVALC,0xAE5F,INVALC, INVALC,0xAE60,0xAE62,0xAE64,0xAE61,INVALC,0xAE66,0xAE65, /* Range 0x5BBF - 0x5BD9, array index: 0x11CE */ 0xB14A,0xD4F2,0xD4F1,0xB149,INVALC,0xB148,0xB147,0xB14B, 0xB146,INVALC,INVALC,0xD8D5,0xD8D2,0xB449,0xD8D1,0xD8D6, INVALC,0xB44B,0xD8D4,0xB448,0xB44A,0xD8D3,INVALC,0xDD48, INVALC,0xDD49,0xDD4A, /* Range 0x5BDE - 0x5BFA, array index: 0x11E9 */ 0xB9E6,0xB9EE,0xE17E,0xB9E8,0xB9EC,0xE1A1,0xB9ED,0xB9E9, 0xB9EA,0xB9E7,0xB9EB,0xBC66,0xD8D0,0xBC67,0xBC65,INVALC, 0xBC64,0xE95D,0xBEC8,0xECD8,0xECD9,INVALC,INVALC,0xC364, 0xC45F,INVALC,0xA46F,INVALC,0xA678, /* Range 0x5C03 - 0x5C16, array index: 0x1206 */ 0xD169,0xAE67,INVALC,INVALC,0xB14E,0xB14D,0xB14C,0xB44C, 0xB44D,0xD8D7,0xB9EF,0xBEC9,0xA470,0xC95C,0xA4D6,0xC974, INVALC,INVALC,0xC9D4,0xA679, /* Range 0x5C37 - 0x5C5D, array index: 0x121A */ 0xC0AA,0xA472,0xA4A8,0xA4D8,0xC975,0xA5A7,INVALC,0xA7C0, 0xA7BF,0xA7BD,0xA7BE,INVALC,INVALC,0xCC59,0xA97E,0xA9A1, 0xCC5A,0xA97D,INVALC,INVALC,0xABCE,0xCE78,0xABCD,0xABCB, 0xABCC,0xAE6A,0xAE68,INVALC,INVALC,0xD16B,0xAE69,0xD16A, INVALC,0xAE5E,0xD4F3,INVALC,INVALC,0xB150,0xB151, /* Range 0x5C60 - 0x5C74, array index: 0x1241 */ 0xB14F,INVALC,0xB9F0,0xE1A2,0xBC68,0xBC69,INVALC,0xE561, 0xC0AB,0xEFC2,0xEFC3,INVALC,0xC4DD,0xF8A8,0xC94B,0xA4D9, INVALC,0xA473,INVALC,0xC977,0xC976, /* Range 0x5C79 - 0x5C7E, array index: 0x1256 */ 0xA67A,0xC9D7,0xC9D8,0xC9D6,INVALC,0xC9D9, /* Range 0x5C86 - 0x5C95, array index: 0x125C */ 0xCAC7,INVALC,0xCAC2,0xCAC4,0xCAC6,0xCAC3,0xA7C4,0xCAC0, INVALC,0xCAC1,0xA7C1,0xA7C2,0xCAC5,0xCAC8,0xA7C3,0xCAC9, /* Range 0x5C9D - 0x5CB8, array index: 0x126C */ 0xCC68,INVALC,0xCC62,0xCC5D,0xA9A3,0xCC65,0xCC63,0xCC5C, 0xCC69,0xCC6C,0xCC67,0xCC60,0xA9A5,0xCC66,0xA9A6,0xCC61, 0xCC64,0xCC5B,0xCC5F,0xCC6B,0xA9A7,INVALC,0xA9A8,INVALC, 0xCC5E,0xCC6A,0xA9A2,0xA9A4, /* Range 0x5CC6 - 0x5CDF, array index: 0x1288 */ 0xCEAB,0xCEA4,0xCEAA,0xCEA3,0xCEA5,0xCE7D,0xCE7B,INVALC, 0xCEAC,0xCEA9,0xCE79,INVALC,0xABD0,0xCEA7,0xCEA8,INVALC, 0xCEA6,0xCE7C,0xCE7A,0xABCF,0xCEA2,0xCE7E,INVALC,INVALC, 0xCEA1,0xCEAD, /* Range 0x5CEA - 0x5CF1, array index: 0x12A2 */ 0xAE6E,INVALC,0xD16C,0xAE6B,0xD16E,INVALC,0xAE70,0xD16F, /* Range 0x5CF4 - 0x5D01, array index: 0x12AA */ 0xAE73,INVALC,0xAE71,0xD170,0xCEAE,0xD172,INVALC,0xAE6D, INVALC,0xAE6C,INVALC,0xD16D,0xD171,0xAE72, /* Range 0x5D0B - 0x5D29, array index: 0x12B8 */ 0xD4F5,0xD4F9,0xD4FB,0xB154,0xD4FE,INVALC,0xB158,0xD541, INVALC,0xB15A,INVALC,0xB156,0xB15E,INVALC,0xB15B,0xD4F7, 0xB155,INVALC,0xD4F6,0xD4F4,0xD543,0xD4F8,INVALC,0xB157, 0xD542,0xB15C,0xD4FD,0xD4FC,0xB15D,0xD4FA,0xB159, /* Range 0x5D2E - 0x5D52, array index: 0x12D7 */ 0xD544,INVALC,0xD540,0xD8E7,0xD8EE,0xD8E3,0xB451,0xD8DF, 0xD8EF,0xD8D9,0xD8EC,0xD8EA,0xD8E4,INVALC,0xD8ED,0xD8E6, INVALC,0xD8DE,0xD8F0,0xD8DC,0xD8E9,0xD8DA,INVALC,0xD8F1, INVALC,0xB452,INVALC,0xD8EB,0xDD4F,0xD8DD,0xB44F,INVALC, 0xD8E1,INVALC,0xB450,0xD8E0,0xD8E5, /* Range 0x5D65 - 0x5D6C, array index: 0x12FC */ 0xDD50,INVALC,0xDD55,0xDD54,0xB743,INVALC,0xD8DB,0xDD52, /* Range 0x5D79 - 0x5D8A, array index: 0x1304 */ 0xE1B0,0xE1A7,INVALC,0xE1AE,0xE1A5,0xE1AD,0xE1B1,0xE1A4, 0xE1A8,0xE1A3,INVALC,0xB9F1,INVALC,0xE1A6,0xB9F2,0xE1AC, 0xE1AB,0xE1AA, /* Range 0x5D92 - 0x5DA2, array index: 0x1316 */ 0xE565,0xE567,0xBC6B,0xE568,INVALC,0xE563,INVALC,0xE562, 0xE56C,INVALC,0xE56A,0xBC6A,0xE56D,0xE564,0xE569,0xE56B, 0xE566, /* Range 0x5DA7 - 0x5DBD, array index: 0x1327 */ 0xE961,0xE966,0xE960,0xE965,INVALC,0xE95E,0xE968,0xE964, 0xE969,0xE963,0xE95F,0xE967,INVALC,0xE96A,0xE962,INVALC, 0xECDA,0xC0AF,INVALC,0xC0AD,INVALC,0xC0AC,0xC0AE, /* Range 0x5DD1 - 0x5DD8, array index: 0x133E */ 0xF6DE,0xC572,INVALC,0xC571,0xF6DD,0xC5C9,INVALC,0xF7D6, /* Range 0x5DDD - 0x5DE8, array index: 0x1346 */ 0xA474,0xA67B,0xC9DA,0xCACA,0xA8B5,0xB15F,INVALC,INVALC, 0xA475,0xA5AA,0xA5A9,0xA5A8, /* Range 0x5DEE - 0x5DF4, array index: 0x1352 */ 0xAE74,INVALC,0xDD57,0xA476,0xA477,0xA478,0xA4DA, /* Range 0x5DFD - 0x5E06, array index: 0x1359 */ 0xB453,0xA479,0xC95D,INVALC,INVALC,0xA5AB,0xA5AC,0xC978, INVALC,0xA67C, /* Range 0x5E14 - 0x5E2D, array index: 0x1363 */ 0xCC6E,0xA9AC,0xA9AB,0xCC6D,0xA9A9,0xCC6F,0xA9AA,0xA9AD, INVALC,0xABD2,INVALC,0xABD4,0xCEB3,0xCEB0,0xCEB1,0xCEB2, 0xCEB4,0xABD3,INVALC,INVALC,0xD174,0xD173,INVALC,0xAE76, INVALC,0xAE75, /* Range 0x5E33 - 0x5E38, array index: 0x137D */ 0xB162,0xD546,INVALC,0xB161,0xB163,0xB160, /* Range 0x5E3D - 0x5E45, array index: 0x1383 */ 0xB455,0xD545,INVALC,0xB456,0xD8F3,INVALC,0xB457,0xD8F2, 0xB454, /* Range 0x5E4A - 0x5E8F, array index: 0x138C */ 0xDD5A,0xDD5C,0xB745,0xDD5B,0xDD59,0xDD58,INVALC,INVALC, INVALC,0xE1B4,0xB9F7,0xB9F5,INVALC,0xB9F6,0xE1B2,0xE1B3, INVALC,0xB9F3,0xE571,0xE56F,INVALC,0xBC6D,0xE570,0xBC6E, 0xBC6C,0xB9F4,INVALC,INVALC,0xE96D,0xE96B,0xE96C,0xE56E, 0xECDC,0xC0B0,0xECDB,0xEFC5,0xEFC6,0xE96E,0xF1FE,INVALC, 0xA47A,0xA5AD,0xA67E,0xC9DB,0xA67D,INVALC,0xA9AF,0xB746, INVALC,0xA4DB,0xA5AE,0xABD5,0xB458,INVALC,0xC979,INVALC, 0xC97A,INVALC,0xC9DC,INVALC,INVALC,0xA7C8,0xCAD0,0xCACE, 0xA7C9,0xCACD,0xCACF,0xCAD1,INVALC,0xA7C7, /* Range 0x5E95 - 0x5E9C, array index: 0x13D2 */ 0xA9B3,0xA9B4,0xA9B1,INVALC,INVALC,0xA9B0,0xCEB8,0xA9B2, /* Range 0x5EA0 - 0x5EB9, array index: 0x13DA */ 0xABD6,INVALC,0xCEB7,0xCEB9,0xCEB6,0xCEBA,0xABD7,0xAE79, 0xD175,INVALC,0xD177,0xAE77,0xD178,0xAE78,0xD176,INVALC, 0xCEB5,0xD547,0xD54A,0xD54B,0xD548,0xB167,0xB166,0xB164, 0xB165,0xD549, /* Range 0x5EC1 - 0x5EE9, array index: 0x13F4 */ 0xB45A,0xB45B,INVALC,0xB45C,0xDD5D,0xDD5F,0xDD61,0xB748, 0xB747,0xB459,0xDD60,0xDD5E,INVALC,0xE1B8,INVALC,INVALC, 0xE1B6,0xE1BC,0xB9F8,0xE1BD,0xE1BA,0xB9F9,0xE1B7,0xE1B5, 0xE1BB,0xBC70,0xE573,0xE1B9,0xBC72,0xE574,0xBC71,0xBC74, 0xE575,0xBC6F,0xBC73,INVALC,0xE973,0xE971,0xE970,0xE972, 0xE96F, /* Range 0x5EEE - 0x5EF7, array index: 0x141D */ 0xF446,0xF447,INVALC,0xF5CB,0xF6DF,0xC655,INVALC,INVALC, 0xA9B5,0xA7CA, /* Range 0x5EFE - 0x5F0B, array index: 0x1427 */ 0xA47B,0xA4DC,INVALC,0xA5AF,0xC9DD,INVALC,0xA7CB,0xCAD2, INVALC,0xCEBB,0xABD9,INVALC,0xB9FA,0xA47C, /* Range 0x5F12 - 0x5F29, array index: 0x1435 */ 0xB749,0xA47D,0xA4DD,0xA4DE,INVALC,0xA5B1,0xA5B0,INVALC, 0xC9DE,0xA6A2,INVALC,0xCAD3,INVALC,0xA7CC,INVALC,INVALC, 0xCC71,0xCC72,0xCC73,INVALC,0xA9B6,0xA9B7,0xCC70,0xA9B8, /* Range 0x5F2D - 0x5F38, array index: 0x144D */ 0xABDA,0xCEBC,INVALC,0xD17A,0xAE7A,INVALC,0xD179,INVALC, 0xB169,0xD54C,0xB16A,0xD54D, /* Range 0x5F46 - 0x5F4F, array index: 0x1459 */ 0xB9FB,INVALC,0xBC75,0xE576,0xBECA,0xE974,0xC0B1,INVALC, 0xC573,0xF7D8, /* Range 0x5F54 - 0x5F59, array index: 0x1463 */ 0xCC74,INVALC,0xCEBD,0xB16B,0xD8F4,0xB74A, /* Range 0x5F67 - 0x5FA1, array index: 0x1469 */ 0xD17B,INVALC,0xB16D,0xB343,0xB16E,0xB16C,0xB45E,INVALC, 0xE1C0,0xB9FC,0xBC76,INVALC,0xC94C,0xC9DF,INVALC,0xCAD5, 0xA7CF,0xCAD4,0xA7D0,INVALC,INVALC,0xA9BC,0xCC77,0xCC76, 0xA9BB,0xA9B9,0xA9BA,0xCC75,INVALC,INVALC,0xABDD,0xCEBE, 0xABE0,0xABDC,0xABE2,0xABDE,0xABDF,0xABE1,INVALC,INVALC, INVALC,0xAE7D,0xAE7C,0xAE7B,INVALC,INVALC,INVALC,0xD54F, 0xB16F,0xB172,0xB170,INVALC,0xD54E,0xB175,INVALC,0xB171, 0xD550,0xB174,0xB173, /* Range 0x5FA5 - 0x5FAF, array index: 0x14A4 */ 0xD8F6,0xD8F5,INVALC,0xB461,0xB45F,0xB460,0xD8F7,0xB74B, 0xDD64,0xB74C,0xDD63, /* Range 0x5FB5 - 0x5FC5, array index: 0x14AF */ 0xBC78,0xE1C1,0xBC77,INVALC,0xB9FD,INVALC,0xECDE,0xE975, 0xC0B2,0xECDD,0xF240,0xF448,0xF449,INVALC,0xA4DF,INVALC, 0xA5B2, /* Range 0x5FCC - 0x5FD9, array index: 0x14C0 */ 0xA7D2,0xA7D4,INVALC,0xC9E2,0xCAD8,0xCAD7,0xCAD6,INVALC, 0xC9E1,0xC9E0,0xA6A4,0xA7D3,0xA7D1,0xA6A3, /* Range 0x5FDD - 0x5FE5, array index: 0x14CE */ 0xA9BD,0xCC78,INVALC,0xA9BE,0xCADD,INVALC,0xCADF,0xCADE, 0xCC79, /* Range 0x5FEA - 0x6000, array index: 0x14D7 */ 0xA7D8,0xA7D6,INVALC,0xCAD9,0xCADB,0xCAE1,INVALC,0xA7D5, INVALC,0xCADC,0xCAE5,0xA9C0,INVALC,0xCAE2,0xA7D7,INVALC, 0xCAE0,0xCAE3,INVALC,0xA9BF,INVALC,0xA9C1,0xCAE4, /* Range 0x6009 - 0x6039, array index: 0x14EE */ 0xCCAF,0xCCA2,0xCC7E,0xCCAE,0xCCA9,0xABE7,0xA9C2,0xCCAA, 0xCCAD,0xABE3,0xCCAC,0xA9C3,0xA9C8,0xA9C6,0xCCA3,INVALC, 0xCC7C,0xCCA5,0xA9CD,0xCCB0,0xABE4,0xCCA6,INVALC,0xABE5, 0xA9C9,0xCCA8,INVALC,0xCECD,0xABE6,0xCC7B,0xA9CA,0xABE8, 0xA9CB,0xA9C7,0xA9CC,0xCCA7,0xCC7A,0xCCAB,0xA9C4,INVALC, INVALC,0xCC7D,0xCCA4,0xCCA1,0xA9C5,INVALC,0xCEBF,INVALC, 0xCEC0, /* Range 0x6040 - 0x604D, array index: 0x151F */ 0xCECA,0xD1A1,0xCECB,0xABEE,0xCECE,0xCEC4,0xABED,0xCEC6, INVALC,0xCEC7,INVALC,INVALC,0xCEC9,0xABE9, /* Range 0x6053 - 0x6072, array index: 0x152D */ 0xCEC5,0xCEC1,0xAEA4,INVALC,INVALC,0xCECF,0xAE7E,0xD17D, 0xCEC8,INVALC,0xD17C,0xCEC3,0xCECC,INVALC,INVALC,0xABEC, 0xAEA1,0xABF2,0xAEA2,0xCED0,0xD17E,0xABEB,0xAEA6,0xABF1, 0xABF0,0xABEF,0xAEA5,0xCED1,0xAEA7,0xABEA,INVALC,0xCEC2, /* Range 0x607F - 0x60A3, array index: 0x154D */ 0xB176,0xD1A4,0xD1A6,INVALC,0xD1A8,0xAEA8,0xAEAE,0xD553, 0xD1AC,0xD1A3,0xB178,0xD551,INVALC,0xAEAD,0xAEAB,0xD1AE, INVALC,0xD552,INVALC,0xD1A5,INVALC,0xAEAC,0xD1A9,0xAEAF, 0xD1AB,INVALC,INVALC,0xAEAA,0xD1AA,0xD1AD,0xD1A7,INVALC, 0xAEA9,0xB179,INVALC,0xD1A2,0xB177, /* Range 0x60B0 - 0x60E6, array index: 0x1572 */ 0xD555,0xD55E,0xB464,INVALC,0xB17C,0xB1A3,0xB465,0xD560, 0xB1AA,0xD8F9,0xD556,0xB1A2,0xB1A5,0xB17E,0xD554,0xD562, 0xD565,0xD949,INVALC,0xD563,0xD8FD,0xB1A1,0xB1A8,0xB1AC, 0xD55D,0xD8F8,0xD561,0xB17B,0xD8FA,0xD564,0xD8FC,0xD559, INVALC,0xB462,INVALC,0xD557,0xD558,0xB1A7,INVALC,INVALC, 0xB1A6,0xD55B,0xB1AB,0xD55F,0xB1A4,0xD55C,INVALC,0xB1A9, 0xB466,0xB463,0xD8FB,INVALC,0xD55A,INVALC,0xB17D, /* Range 0x60F0 - 0x611F, array index: 0x15A9 */ 0xB46B,0xB46F,0xD940,0xB751,0xB46D,0xD944,0xB471,0xDD65, 0xD946,0xB753,0xB469,0xB46C,0xD947,INVALC,0xD948,0xD94E, 0xB473,0xB754,INVALC,0xD94A,0xD94F,0xD943,0xB75E,INVALC, 0xB755,0xB472,0xD941,0xD950,INVALC,0xB75D,0xB470,0xB74E, 0xD94D,INVALC,0xB474,0xD945,0xD8FE,0xB46A,0xD942,INVALC, 0xD94B,INVALC,0xB74D,0xB752,0xB467,0xD94C,INVALC,0xB750, /* Range 0x6127 - 0x612F, array index: 0x15D9 */ 0xB75C,0xE1C3,0xDD70,INVALC,0xDD68,0xE1C2,INVALC,0xDD6C, 0xDD6E, /* Range 0x613E - 0x6183, array index: 0x15E2 */ 0xB75A,0xBA40,0xDD71,0xE1C4,INVALC,INVALC,0xB758,0xDD69, 0xDD6D,0xB9FE,0xB74F,0xDD66,0xDD67,0xBA41,0xB757,0xB759, 0xB756,0xDD6F,INVALC,INVALC,0xE1C8,0xE1C9,0xE1CE,0xBC7D, 0xE1D5,INVALC,0xBA47,INVALC,0xBA46,0xE1D0,INVALC,0xBC7C, 0xE1C5,0xBA45,INVALC,0xE1D4,0xBA43,0xBA44,INVALC,0xE1D1, 0xE5AA,0xBC7A,0xB46E,INVALC,0xE1D3,0xBCA3,0xE1CB,INVALC, 0xBC7B,INVALC,0xBCA2,0xE1C6,0xE1CA,0xE1C7,0xE1CD,0xBA48, 0xBC79,0xBA42,INVALC,0xE57A,0xE1CF,INVALC,0xBCA1,INVALC, 0xBCA4,INVALC,0xE1CC,INVALC,0xBC7E,0xE579, /* Range 0x6189 - 0x6196, array index: 0x1628 */ 0xE57E,0xBECE,0xE578,0xE9A3,0xE5A9,0xBCA8,INVALC,0xBCA6, 0xBECC,0xE5A6,0xE5A2,0xBCAC,INVALC,0xE978, /* Range 0x61A7 - 0x61CD, array index: 0x1636 */ 0xBCA5,0xE977,0xBECD,0xE5A7,0xBCA7,0xBCA9,0xE5A4,0xBCAD, 0xE5A3,0xE57C,0xE57B,0xBECB,0xE5AB,0xE97A,0xECE0,0xBED0, INVALC,0xE9A2,INVALC,0xE97E,INVALC,0xECE1,INVALC,0xBED1, 0xE9A1,INVALC,0xE97C,0xC0B4,0xECDF,INVALC,0xE979,0xE97B, 0xC0B5,0xBED3,0xC0B3,0xBED2,0xC0B7,0xE97D,0xBECF, /* Range 0x61DE - 0x6236, array index: 0x165D */ 0xECE7,0xEFC8,0xECE3,INVALC,INVALC,0xC256,0xECE5,0xECE4, 0xC0B6,0xECE2,0xECE6,0xEFD0,0xEFCC,0xEFCE,INVALC,0xEFC9, 0xEFCA,INVALC,0xEFCD,0xEFCB,0xC367,INVALC,INVALC,0xC36A, 0xC369,0xC368,0xC461,0xF44A,0xC462,0xF241,0xC4DF,0xF5CC, 0xC4E0,0xC574,0xC5CA,0xF7D9,INVALC,0xF7DA,0xF7DB,INVALC, INVALC,0xF9BA,0xA4E0,0xC97C,0xA5B3,INVALC,0xA6A6,0xA6A7, 0xA6A5,INVALC,0xA6A8,0xA7DA,0xA7D9,INVALC,0xCCB1,0xA9CF, 0xA9CE,INVALC,INVALC,0xD1AF,0xB1AD,0xB1AE,INVALC,INVALC, INVALC,0xB475,0xDD72,0xB760,0xB761,0xDD74,0xDD76,0xDD75, INVALC,0xE1D7,INVALC,0xE1D6,0xBA49,0xE1D8,INVALC,0xE5AC, 0xBCAE,INVALC,0xBED4,INVALC,0xC0B8,0xC257,0xC0B9,INVALC, 0xA4E1, /* Range 0x623D - 0x6266, array index: 0x16B6 */ 0xCCB2,0xA9D1,0xA9D0,0xA9D2,0xABF3,0xCED2,0xCED3,INVALC, INVALC,0xD1B0,0xAEB0,0xB1AF,0xB476,0xD951,0xA4E2,INVALC, 0xA47E,0xA4E3,INVALC,0xC97D,0xA5B7,0xA5B6,0xA5B4,0xA5B5, INVALC,INVALC,INVALC,0xA6AB,0xC9E9,0xC9EB,0xA6AA,0xC9E3, INVALC,0xC9E4,INVALC,0xC9EA,0xC9E6,0xC9E8,0xA6A9,0xC9E5, 0xC9EC,0xC9E7, /* Range 0x626D - 0x6298, array index: 0x16E0 */ 0xA7E1,0xA7EA,0xA7E8,0xCAF0,0xCAED,0xCAF5,0xA7E6,0xCAF6, INVALC,0xA7DF,0xCAF3,INVALC,0xA7E5,0xCAEF,0xCAEE,0xA7E3, 0xCAF4,0xA7E4,0xA9D3,0xA7DE,0xCAF1,INVALC,0xCAE7,0xA7DB, INVALC,0xA7EE,0xCAEC,0xCAF2,0xA7E0,0xA7E2,INVALC,0xCAE8, INVALC,0xCAE9,0xCAEA,INVALC,0xA7ED,0xA7E7,0xA7EC,0xCAEB, 0xA7EB,0xA7DD,0xA7DC,0xA7E9, /* Range 0x62A8 - 0x62BF, array index: 0x170C */ 0xA9E1,0xCCBE,0xCCB7,0xA9DC,0xA9EF,0xCCB3,0xCCBA,0xCCBC, 0xCCBF,0xA9EA,INVALC,0xCCBB,0xCCB4,0xA9E8,0xCCB8,INVALC, 0xCCC0,0xA9D9,INVALC,0xCCBD,0xA9E3,0xA9E2,0xCCB6,0xA9D7, /* Range 0x62C4 - 0x62DC, array index: 0x1724 */ 0xA9D6,INVALC,0xA9EE,0xA9E6,0xA9E0,0xA9D4,0xCCB9,0xA9DF, 0xA9D5,0xA9E7,0xA9F0,0xCED4,0xA9E4,0xCCB5,0xA9DA,0xA9DD, 0xA9DE,INVALC,0xA9EC,0xA9ED,0xA9EB,0xA9E5,0xA9E9,0xA9DB, 0xABF4, /* Range 0x62EB - 0x6316, array index: 0x173D */ 0xCEDA,0xAC41,0xABF8,0xABFA,0xAC40,0xCEE6,0xABFD,0xD1B1, 0xAEB1,0xAC43,0xCED7,0xCEDF,0xABFE,0xCEDE,0xCEDB,0xCEE3, 0xCEE5,0xABF7,0xABFB,0xAC42,0xAEB3,0xCEE0,0xABF9,0xAC45, 0xCED9,INVALC,INVALC,INVALC,0xABFC,0xAEB2,0xABF6,INVALC, 0xCED6,0xCEDD,0xCED5,0xCED8,0xCEDC,0xD1B2,0xAC44,INVALC, 0xCEE1,0xCEE2,0xCEE4,0xABF5, /* Range 0x6328 - 0x635A, array index: 0x1769 */ 0xAEC1,0xD1BE,0xAEBF,0xAEC0,0xD1B4,0xD1C4,INVALC,0xAEB6, INVALC,INVALC,0xD566,0xD1C6,0xD1C0,INVALC,0xD1B7,INVALC, 0xD1C9,0xD1BA,0xAEBC,0xD57D,0xD1BD,0xAEBE,0xAEB5,INVALC, 0xD1CB,0xD1BF,0xAEB8,0xD1B8,0xD1B5,0xD1B6,0xAEB9,0xD1C5, 0xD1CC,0xAEBB,0xD1BC,0xD1BB,0xAEC3,0xAEC2,0xAEB4,0xAEBA, 0xAEBD,0xD1C8,INVALC,INVALC,0xD1C2,0xAEB7,0xD1B3,0xD1CA, 0xD1C1,0xD1C3,0xD1C7, /* Range 0x6365 - 0x63B1, array index: 0x179C */ 0xD567,INVALC,0xB1B7,0xB1CB,0xB1CA,INVALC,0xB1BF,INVALC, 0xD579,0xD575,0xD572,0xD5A6,0xB1BA,0xB1B2,INVALC,INVALC, 0xD577,0xB4A8,0xB1B6,0xD5A1,INVALC,0xB1CC,0xB1C9,0xD57B, 0xD56A,INVALC,INVALC,0xB1C8,0xD5A3,0xD569,0xB1BD,0xB1C1, 0xD5A2,INVALC,0xD573,0xB1C2,0xB1BC,0xD568,INVALC,0xB478, 0xD5A5,0xD571,0xB1C7,0xD574,0xD5A4,0xB1C6,INVALC,0xD952, INVALC,0xB1B3,0xD56F,0xB1B8,0xB1C3,INVALC,0xB1BE,0xD578, 0xD56E,0xD56C,0xD57E,0xB1B0,0xB1C4,0xB1B4,0xB477,0xD57C, 0xB1B5,INVALC,0xB1B1,0xB1C0,0xB1BB,0xB1B9,0xD570,0xB1C5, 0xD56D,0xD57A,0xD576,0xD954,0xD953, /* Range 0x63C0 - 0x63F6, array index: 0x17E9 */ 0xB47A,INVALC,0xD96A,0xD959,0xD967,0xDD77,0xB47D,0xD96B, 0xD96E,0xB47C,0xD95C,0xD96D,0xD96C,0xB47E,0xD955,0xB479, 0xB4A3,INVALC,0xB4A1,0xD969,INVALC,0xD95F,0xB4A5,0xD970, 0xD968,0xD971,0xB4AD,0xB4AB,0xD966,0xD965,INVALC,0xD963, 0xD95D,0xB4A4,INVALC,0xB4A2,0xD1B9,0xD956,INVALC,0xDDB7, 0xD957,0xB47B,0xB4AA,0xDD79,INVALC,0xB4A6,0xB4A7,0xD958, 0xD96F,0xDD78,0xD960,0xD95B,0xB4A9,0xD961,0xD95E, /* Range 0x6409 - 0x6443, array index: 0x1820 */ 0xDD7C,0xDDB1,0xDDB6,0xDDAA,0xB76C,0xDDBB,0xB769,0xDD7A, INVALC,0xDD7B,0xB762,0xB76B,0xDDA4,0xB76E,0xB76F,0xDDA5, INVALC,0xDDB2,0xDDB8,0xB76A,INVALC,0xB764,0xDDA3,0xDD7D, 0xDDBA,0xDDA8,0xDDA9,0xDD7E,0xDDB4,0xDDAB,0xDDB5,0xDDAD, INVALC,0xB765,0xE1D9,0xB768,0xB766,0xDDB9,0xDDB0,0xDDAC, INVALC,INVALC,0xDDA1,0xBA53,0xDDAF,0xB76D,0xDDA7,INVALC, 0xDDA6,INVALC,INVALC,INVALC,0xB767,0xB763,0xE1EE,0xDDB3, 0xDDAE,INVALC,0xDDA2, /* Range 0x644D - 0x6454, array index: 0x185B */ 0xE1DA,0xE1E5,INVALC,0xE1EC,0xBA51,0xB4AC,0xE1EA,0xBA4C, /* Range 0x6458 - 0x647F, array index: 0x1863 */ 0xBA4B,0xE1F1,INVALC,0xE1DB,0xE1E8,0xE1DC,0xE1E7,0xBA4F, 0xE1EB,0xD962,INVALC,INVALC,INVALC,0xE1F2,0xE1E3,0xBA52, 0xE5BA,0xBCAF,INVALC,0xE1F0,0xE1EF,0xBA54,0xE5AD,0xBCB0, 0xE5AE,INVALC,0xE1DF,0xE1E0,0xE1DD,0xE1E2,0xE1DE,0xE1F3, 0xBA4E,0xBCB1,0xBA50,0xBA55,INVALC,0xE1E1,INVALC,0xE1ED, /* Range 0x6485 - 0x64A6, array index: 0x188B */ 0xE5B1,INVALC,0xBA4A,0xBCB4,0xE9AA,0xE5B6,0xE5B5,0xE5B7, INVALC,INVALC,0xE5B4,0xBCB5,INVALC,0xBCBB,0xBCB8,INVALC, 0xBCB9,0xE5AF,0xE5B2,0xE5BC,0xBCC1,0xBCBF,INVALC,0xE5B3, 0xD95A,0xBCB2,0xE5B9,0xE5B0,INVALC,0xBCC2,0xE5B8,0xBA4D, 0xBCB7,0xE1E4, /* Range 0x64A9 - 0x64B3, array index: 0x18AD */ 0xBCBA,INVALC,0xBCBE,0xBCC0,0xBCBD,0xBCBC,INVALC,0xBCB6, 0xE5BB,0xBCB3,0xBCC3, /* Range 0x64BB - 0x64DB, array index: 0x18B8 */ 0xBED8,0xBED9,0xE9A9,0xBEE2,0xBEDF,INVALC,0xBED6,0xBEDD, 0xE9AB,0xBEDB,0xBED5,INVALC,0xBEDC,INVALC,0xE9A8,0xC0BB, 0xBED7,INVALC,0xBEDE,0xC0BA,0xE9A7,0xE9A6,INVALC,0xBEE0, INVALC,0xBEE1,INVALC,0xE9A5,0xE9A4,0xC0BC,0xE9AE,0xBEDA, 0xE9AC, /* Range 0x64E0 - 0x654A, array index: 0x18D9 */ 0xC0BD,INVALC,0xC0C2,0xECEA,0xECEC,INVALC,0xC0BF,INVALC, 0xECED,0xECE9,INVALC,0xECEB,0xC0C0,0xC0C3,INVALC,0xECE8, 0xC0BE,0xC0C1,0xC259,0xE9AD,0xC258,INVALC,INVALC,0xC25E, 0xEFD4,INVALC,0xC25C,0xC25D,0xEFD7,0xEFD3,0xC25A,0xEFD1, 0xC36B,0xEFD5,INVALC,0xEFD6,0xEFD2,INVALC,0xC25B,0xF242, INVALC,0xF245,INVALC,INVALC,0xF246,0xF244,0xF247,0xC36C, 0xF243,INVALC,INVALC,0xF44E,0xC464,0xF44D,0xF44C,0xF44B, 0xC463,0xC465,INVALC,0xF5CD,0xC4E2,0xC4E1,INVALC,INVALC, 0xF6E1,0xF6E0,0xF6E3,0xC5CB,0xC575,0xF7DD,0xF6E2,INVALC, INVALC,0xF7DC,0xC5CD,0xC5CC,0xC5F3,0xF8A9,0xF8EF,0xA4E4, INVALC,INVALC,0xD972,0xE9AF,INVALC,INVALC,0xA6AC,0xCAF7, 0xA7F1,0xA7EF,INVALC,0xA7F0,INVALC,0xCCC1,0xA9F1,0xAC46, INVALC,0xCEE7,INVALC,0xCEE8,INVALC,0xAC47,0xD1CE,INVALC, 0xAEC4,0xAEC5,0xD1CD, /* Range 0x6551 - 0x656C, array index: 0x1944 */ 0xB1CF,INVALC,0xD5A7,0xB1D6,0xB1D5,0xB1CE,0xB1D1,0xB1D4, 0xB1D0,INVALC,INVALC,0xD976,0xB1CD,0xB4AF,INVALC,INVALC, INVALC,0xB4B1,0xB4B2,0xD975,0xD978,0xB4B0,0xD973,0xD977, INVALC,0xD974,INVALC,0xB771, /* Range 0x6572 - 0x6584, array index: 0x1960 */ 0xBA56,0xE1F4,0xBEE3,0xBCC4,0xE5BD,0xBCC5,0xBCC6,0xE5BF, 0xE5BE,0xE5C0,0xE9B1,INVALC,INVALC,0xE9B0,0xECEF,0xECEE, 0xC0C4,0xC0C5,0xF248, /* Range 0x6590 - 0x65C6, array index: 0x1973 */ 0xB4B4,0xB4B3,0xDDBD,INVALC,0xEFD8,0xC4E3,0xF7DE,0xA4E6, INVALC,0xAEC6,INVALC,0xB1D8,0xB1D7,0xD97A,0xD97B,0xB772, 0xE1F5,0xBA57,0xE9B2,INVALC,0xA4E7,0xA5B8,INVALC,0xA9F2, 0xCCC2,INVALC,0xCEE9,0xAC48,0xB1D9,INVALC,0xD97C,0xB4B5, 0xB773,INVALC,0xE5C1,0xE5C2,INVALC,INVALC,0xECF0,0xC25F, 0xF8F0,0xA4E8,INVALC,0xCCC3,0xA9F3,0xAC49,INVALC,0xCEEA, INVALC,0xAEC7,0xD1D2,0xD1D0,0xD1D1,0xAEC8,0xD1CF, /* Range 0x65CB - 0x65F5, array index: 0x19AA */ 0xB1DB,0xB1DC,0xD5A8,0xB1DD,0xB1DA,0xD97D,INVALC,0xD97E, 0xDDBE,INVALC,INVALC,0xBA59,0xBA58,INVALC,INVALC,0xECF1, 0xEFD9,INVALC,0xF24A,0xF249,0xF44F,INVALC,0xC95E,0xAC4A, INVALC,INVALC,0xA4E9,0xA5B9,INVALC,0xA6AE,0xA6AD,INVALC, INVALC,0xA6AF,0xA6B0,0xC9EE,0xC9ED,0xCAF8,0xA7F2,0xCAFB, 0xCAFA,0xCAF9,0xCAFC, /* Range 0x65FA - 0x65FD, array index: 0x19D5 */ 0xA9F4,0xCCC9,0xCCC5,0xCCCE, /* Range 0x6600 - 0x6615, array index: 0x19D9 */ 0xA9FB,INVALC,0xA9F9,0xCCCA,0xCCC6,0xCCCD,0xA9F8,0xAA40, 0xCCC8,0xCCC4,0xA9FE,0xCCCB,0xA9F7,0xCCCC,0xA9FA,0xA9FC, 0xCCD0,0xCCCF,0xCCC7,0xA9F6,0xA9F5,0xA9FD, /* Range 0x661C - 0x6628, array index: 0x19EF */ 0xCEEF,0xCEF5,INVALC,0xAC50,0xAC4D,0xCEEC,0xCEF1,INVALC, 0xAC53,0xAC4B,0xCEF0,0xAC4E,0xAC51, /* Range 0x662B - 0x663A, array index: 0x19FC */ 0xCEF3,INVALC,0xAC4C,0xCEF8,0xAC4F,INVALC,0xAC52,0xCEED, 0xCEF2,0xCEF6,0xCEEE,0xCEEB,INVALC,INVALC,0xCEF7,0xCEF4, /* Range 0x6641 - 0x664C, array index: 0x1A0C */ 0xAED0,0xAEC9,0xAECC,INVALC,0xAECF,INVALC,0xD1D5,INVALC, 0xAECA,0xD1D3,INVALC,0xAECE, /* Range 0x6659 - 0x6680, array index: 0x1A18 */ 0xD5AC,0xB1DF,0xD5AB,0xD5AD,0xB1DE,0xB1E3,0xD1D4,INVALC, 0xD5AA,0xD5AE,INVALC,0xB1E0,0xD5A9,0xB1E2,INVALC,0xB1E1, INVALC,0xD9A7,INVALC,0xD9A2,INVALC,0xB4B6,0xB4BA,0xB4B7, 0xD9A5,0xD9A8,INVALC,0xB4B8,INVALC,0xB4B9,0xB4BE,0xDDC7, 0xD9A6,0xB4BC,0xD9A3,0xD9A1,INVALC,0xB4BD,INVALC,0xD9A4, /* Range 0x6684 - 0x6699, array index: 0x1A40 */ 0xB779,INVALC,0xDDBF,0xB776,0xB777,0xB775,0xDDC4,0xDDC3, 0xDDC0,0xB77B,INVALC,INVALC,0xDDC2,0xB4BB,INVALC,INVALC, 0xDDC6,0xDDC1,0xB778,0xB774,0xB77A,0xDDC5, /* Range 0x669D - 0x66A2, array index: 0x1A56 */ 0xBA5C,INVALC,0xE1F8,0xE1F7,0xE1F6,0xBA5A, /* Range 0x66A8 - 0x66C0, array index: 0x1A5C */ 0xBA5B,0xE5C5,0xE5C8,0xBCC8,INVALC,INVALC,0xBCC7,0xE5C9, 0xE5C4,0xBCCA,0xE5C6,INVALC,0xBCC9,0xE5C3,INVALC,0xE5C7, 0xBEE9,0xBEE6,0xE9BB,0xE9BA,INVALC,0xE9B9,0xE9B4,INVALC, 0xE9B5, /* Range 0x66C4 - 0x66CC, array index: 0x1A75 */ 0xBEE7,INVALC,0xBEE4,0xBEE8,0xE9B3,0xBEE5,0xE9B6,0xE9B7, 0xE9BC, /* Range 0x66D6 - 0x66F9, array index: 0x1A7E */ 0xC0C7,INVALC,0xEFDC,0xC0C6,0xEFDA,0xEFDB,0xC260,0xC36E, 0xF24B,INVALC,0xC36D,INVALC,INVALC,0xF451,0xF452,INVALC, 0xC466,INVALC,0xF450,0xC4E4,INVALC,0xF7DF,0xC5CE,0xF8AA, 0xF8AB,INVALC,0xA4EA,INVALC,0xA6B1,0xA6B2,0xA7F3,INVALC, 0xCCD1,0xAC54,0xAED1,0xB1E4, /* Range 0x66FC - 0x6718, array index: 0x1AA2 */ 0xB0D2,INVALC,0xB4BF,0xB4C0,0xB3CC,0xD9A9,INVALC,0xB77C, 0xE1FA,0xE1F9,INVALC,INVALC,0xA4EB,0xA6B3,0xCCD2,0xAA42, INVALC,0xAA41,INVALC,0xCEF9,0xCEFA,INVALC,0xD1D7,0xD1D8, 0xAED2,0xAED3,INVALC,0xAED4,0xD5AF, /* Range 0x671D - 0x672E, array index: 0x1ABF */ 0xB4C2,INVALC,0xB4C1,0xDDC8,0xDF7A,0xE1FB,0xE9BD,INVALC, INVALC,0xC261,0xC467,0xA4EC,INVALC,0xA5BC,0xA5BD,0xA5BB, 0xA5BE,0xA5BA, /* Range 0x6731 - 0x673F, array index: 0x1AD1 */ 0xA6B6,INVALC,0xC9F6,0xA6B5,0xA6B7,INVALC,INVALC,0xC9F1, 0xC9F0,0xC9F3,0xC9F2,0xC9F5,0xA6B4,0xC9EF,0xC9F4, /* Range 0x6745 - 0x6760, array index: 0x1AE0 */ 0xCAFD,0xA7FD,0xCAFE,0xCB43,0xA7FC,INVALC,0xCB47,0xCB42, 0xCB45,0xA7F5,0xA7F6,0xA7F7,0xA7F8,INVALC,0xA840,INVALC, 0xCB41,0xA7FA,0xA841,INVALC,0xCB40,0xCB46,INVALC,0xA7F9, 0xCB44,0xA7FB,0xA7F4,0xA7FE, /* Range 0x676C - 0x679F, array index: 0x1AFC */ 0xCCD4,0xAA43,INVALC,0xAA4D,0xAA4E,0xAA46,0xAA58,0xAA48, 0xCCDC,0xAA53,0xCCD7,0xAA49,0xCCE6,0xCCE7,0xCCDF,0xCCD8, 0xAA56,0xCCE4,0xAA51,0xAA4F,INVALC,0xCCE5,INVALC,0xCCE3, 0xCCDB,0xCCD3,0xCCDA,0xAA4A,INVALC,0xAA50,INVALC,0xAA44, 0xCCDE,0xCCDD,0xCCD5,INVALC,0xAA52,0xCCE1,0xCCD6,0xAA55, 0xCCE8,0xAA45,INVALC,0xAA4C,0xCCD9,0xCCE2,0xAA54,INVALC, 0xAA47,0xAA4B,INVALC,0xCCE0, /* Range 0x67AE - 0x67BB, array index: 0x1B30 */ 0xCF5B,0xAC5C,0xAC69,INVALC,0xCF56,0xCF4C,0xAC62,0xCF4A, 0xAC5B,0xCF45,0xAC65,0xCF52,0xCEFE,0xCF41, /* Range 0x67C0 - 0x67FC, array index: 0x1B3E */ 0xCF44,0xCEFB,0xCF51,0xCF61,0xAC60,0xCF46,0xCF58,INVALC, 0xCEFD,0xCF5F,0xCF60,0xCF63,0xCF5A,0xCF4B,0xCF53,0xAC66, 0xAC59,0xAC61,0xAC6D,0xAC56,0xAC58,INVALC,INVALC,INVALC, 0xCF43,0xAC6A,0xAC63,0xCF5D,0xCF40,0xAC6C,0xAC67,0xCF49, INVALC,INVALC,0xAC6B,0xCF50,0xCF48,0xAC64,0xCF5C,0xCF54, INVALC,0xAC5E,0xCF62,0xCF47,0xAC5A,0xCF59,0xCF4F,0xAC5F, 0xCF55,0xAC57,0xCEFC,0xAC68,0xAEE3,0xAC5D,0xCF4E,0xCF4D, 0xCF42,INVALC,0xCF5E,INVALC,0xCF57, /* Range 0x6812 - 0x6821, array index: 0x1B7B */ 0xD1EC,0xAEEA,0xD1ED,INVALC,0xD1E1,0xAEDF,0xAEEB,INVALC, 0xD1DA,INVALC,0xD1E3,0xD1EB,INVALC,0xD1D9,0xD1F4,0xAED5, /* Range 0x6825 - 0x6854, array index: 0x1B8B */ 0xD1F3,0xD1EE,INVALC,0xD1EF,0xAEDD,0xAEE8,0xD1E5,INVALC, 0xD1E6,0xD1F0,0xD1E7,INVALC,0xD1E2,0xD1DC,0xD1DD,0xD1EA, 0xD1E4,INVALC,INVALC,0xAED6,0xAEDA,0xD1F2,0xD1DE,0xAEE6, 0xAEE2,INVALC,INVALC,0xAEE5,0xAEEC,0xAEDB,0xAEE7,0xD1E9, 0xAEE9,0xAED8,INVALC,0xAED7,0xD1DB,INVALC,0xD1DF,0xAEE0, 0xD1F1,0xD1E8,0xD1E0,0xAEE4,0xAEE1,INVALC,0xAED9,0xAEDC, /* Range 0x686B - 0x68B5, array index: 0x1BBB */ 0xD5C4,INVALC,0xD5B4,0xD5B5,0xD5B9,INVALC,0xD5C8,0xD5C5, INVALC,0xD5BE,0xD5BD,0xB1ED,0xD5C1,0xD5D0,0xD5B0,INVALC, 0xD5D1,0xD5C3,0xD5D5,0xD5C9,0xB1EC,0xD5C7,0xB1E7,0xB1FC, 0xB1F2,INVALC,0xB1F6,0xB1F5,0xD5B1,INVALC,0xD5CE,0xD5D4, 0xD5CC,0xD5D3,INVALC,INVALC,0xD5C0,0xD5B2,0xD5D2,0xD5C2, 0xB1EA,0xB1F7,INVALC,0xD5CB,0xB1F0,INVALC,INVALC,INVALC, 0xD5CA,0xD5B3,0xB1F8,INVALC,0xB1FA,0xD5CD,0xB1FB,0xB1E9, 0xD5BA,0xD5CF,INVALC,INVALC,0xB1EF,0xB1F9,0xD5BC,0xD5C6, 0xD5B7,0xD5BB,0xB1F4,0xD5B6,0xB1E8,0xB1F1,0xB1EE,0xD5BF, 0xAEDE,0xD9C0,0xB1EB, /* Range 0x68C4 - 0x68FD, array index: 0x1C06 */ 0xB1F3,INVALC,0xD9C3,0xD9D9,0xD9CE,0xB4D6,INVALC,0xB4D1, 0xD9BD,0xB4D2,0xD9CD,INVALC,0xD9C6,0xD9D3,0xB4CE,0xD9AB, 0xD9D5,0xB4C4,0xD9B3,0xB4C7,0xB4C6,INVALC,0xB4D7,INVALC, 0xD9AD,0xD9CF,0xD9D0,0xB4C9,0xB4C5,0xD9BB,INVALC,0xB4D0, 0xD9B6,INVALC,0xD9D1,0xB4CC,0xD9C9,0xD9D6,0xD9B0,0xD9B5, 0xD9AF,INVALC,0xB4CB,0xD9C2,0xDDDE,0xD9B1,0xB4CF,0xD9BA, 0xD9D2,0xB4CA,0xD9B7,0xD9B4,0xD9C5,0xB4CD,0xB4C3,0xB4D9, 0xD9C8,0xD9C7, /* Range 0x6904 - 0x6917, array index: 0x1C40 */ 0xD9AC,0xB4C8,0xD9D4,0xD9BC,0xD9BE,INVALC,0xD9CB,0xD9CA, 0xD9AA,0xB4D3,0xB4D5,0xD9B2,0xD9B9,0xD9C1,0xB4D4,0xD9B8, 0xD9C4,0xD9D7,INVALC,0xD9CC, /* Range 0x692F - 0x697B, array index: 0x1C54 */ 0xDDF2,0xB7A6,INVALC,0xDDF0,0xDDDB,0xDDE0,0xDDD9,INVALC, 0xDDEC,0xDDCB,0xDDD2,INVALC,0xDDEA,0xDDF4,0xDDDC,INVALC, 0xDDCF,0xDDE2,0xDDE7,0xDDD3,INVALC,0xDDE4,0xDDD0,INVALC, INVALC,0xDDD7,0xDDD8,0xB7A8,0xDDEB,0xDDE9,INVALC,0xDDCC, 0xDDEE,INVALC,0xDDEF,0xDDF1,0xB7AC,0xB7A4,INVALC,0xD5B8, 0xDDD4,0xDDE6,0xDDD5,0xB7A1,0xB7B1,0xDDED,0xB7AF,0xB7AB, 0xDDCA,0xB7A3,INVALC,0xDDCD,0xB7B0,INVALC,0xDDDD,0xDDC9, INVALC,0xB7A9,0xDDE1,0xDDD1,0xB7AA,0xDDDA,0xB77E,0xB4D8, 0xDDE3,0xD9BF,0xDDCE,INVALC,INVALC,0xDDE8,0xB7A5,0xDDE5, 0xB7A2,0xDDDF,0xB7AD,0xDDD6,0xDDF3, /* Range 0x698D - 0x69D4, array index: 0x1CA1 */ 0xE24A,0xE248,INVALC,0xE25E,0xE246,INVALC,0xE258,0xB77D, 0xBA5F,0xE242,0xE25D,INVALC,0xE247,0xE255,0xBA64,0xBA5D, INVALC,0xE25B,INVALC,0xE240,0xE25A,INVALC,0xBA6F,0xE251, 0xE261,0xBA6D,0xE249,0xBA5E,0xE24B,0xE259,0xBA67,0xE244, 0xBA6B,0xBA61,0xE24D,0xE243,0xE1FC,INVALC,0xE257,0xBA68, 0xE260,0xE1FD,0xBA65,INVALC,0xE253,INVALC,0xBA66,0xE245, 0xE250,0xE24C,0xE24E,INVALC,0xBA60,0xE25F,0xBA6E,0xE24F, INVALC,0xE262,INVALC,INVALC,0xE1FE,0xE254,0xBA63,0xBA6C, 0xBA6A,0xE241,0xE256,0xBA69,INVALC,INVALC,0xBA62,0xE252, /* Range 0x69E2 - 0x6A0A, array index: 0x1CE9 */ 0xE5D5,INVALC,0xE5D1,0xE5CD,0xE5E1,0xE5DE,0xBCCD,INVALC, INVALC,0xE5E5,0xE5D4,0xBCD8,0xE5DB,INVALC,INVALC,0xE5D0, 0xE5DA,0xBCD5,0xE5EE,INVALC,0xE5EB,0xE5DD,0xE5CE,INVALC, INVALC,0xE5E2,0xE5E4,0xBCD1,0xE5D8,0xE5D3,0xE5CA,0xBCCE, 0xBCD6,INVALC,0xE5E7,0xBCD7,0xE5CB,0xE5ED,0xE5E0,0xE5E6, 0xBCD4, /* Range 0x6A11 - 0x6A28, array index: 0x1D12 */ 0xBCD9,INVALC,0xBCD3,0xE5DC,0xE5CF,0xE5EF,0xE5CC,0xE5E8, 0xBCD0,INVALC,0xE5D6,INVALC,0xE5D7,0xBCCF,0xBCCC,0xE5D2, 0xBCD2,INVALC,0xBCCB,INVALC,0xE5E9,0xE5EC,0xE5D9,0xE9CA, /* Range 0x6A34 - 0x6A41, array index: 0x1D2A */ 0xE9BE,0xBEF6,INVALC,INVALC,0xBEEB,0xBEF0,0xBEEC,0xE9CC, 0xE9D7,0xBEEA,0xE9C4,0xE9CD,0xE5DF,0xE9CE, /* Range 0x6A44 - 0x6A6F, array index: 0x1D38 */ 0xBEF1,INVALC,0xE9DD,0xBEF5,0xBEF8,0xE9C0,INVALC,0xBEF4, INVALC,0xE9DB,0xE9DC,0xE9D2,0xE9D1,0xE9C9,INVALC,INVALC, 0xE9D3,0xE9DA,0xE9D9,INVALC,0xBEEF,0xBEED,0xE9CB,0xE9C8, INVALC,0xE9C5,0xE9D8,0xBEF7,0xE9D6,0xBEF3,0xBEF2,INVALC, 0xE9D0,INVALC,0xE9BF,0xE9C1,0xE9C3,0xE9D5,0xE9CF,0xBEEE, INVALC,0xE9C6,INVALC,0xE9D4, /* Range 0x6A7E - 0x6AAF, array index: 0x1D64 */ 0xC0CF,0xED45,0xC0C8,0xECF5,INVALC,0xED41,0xC0CA,0xED48, INVALC,0xECFC,INVALC,0xECF7,INVALC,INVALC,0xED49,0xECF3, 0xECFE,INVALC,0xC0D1,0xED44,0xED4A,0xECFD,0xC0C9,0xED40, 0xECF4,0xC0D0,INVALC,INVALC,0xED47,0xECF9,0xC0CC,INVALC, 0xECFB,0xECF8,0xC0D2,0xECFA,0xC0CB,0xC0CE,0xED43,0xECF6, 0xED46,INVALC,0xED42,INVALC,INVALC,INVALC,0xC263,0xEFE7, 0xC268,0xC269, /* Range 0x6AB3 - 0x6ABD, array index: 0x1D96 */ 0xC262,0xEFE6,INVALC,0xEFE3,0xEFE4,0xC266,0xEFDE,0xEFE2, 0xC265,INVALC,0xEFDF, /* Range 0x6AC2 - 0x6AD3, array index: 0x1DA1 */ 0xC267,0xC264,INVALC,0xEFDD,0xEFE1,0xEFE5,INVALC,INVALC, INVALC,0xF251,0xF24E,0xF257,INVALC,0xF256,0xF254,0xF24F, INVALC,0xC372, /* Range 0x6AD9 - 0x6AE1, array index: 0x1DB3 */ 0xF250,0xC371,0xC0CD,0xF253,0xC370,0xF258,0xF252,0xF24D, 0xEFE0, /* Range 0x6AE7 - 0x6AF3, array index: 0x1DBC */ 0xF24C,0xF456,INVALC,0xF455,0xF255,0xC468,INVALC,0xF459, 0xF45A,0xF454,0xF458,INVALC,0xF453, /* Range 0x6AF8 - 0x6AFC, array index: 0x1DC9 */ 0xF5D1,0xF457,0xC4E7,0xC4E5,0xF5CF, /* Range 0x6B00 - 0x6B1A, array index: 0x1DCE */ 0xF5D2,INVALC,0xF5CE,0xF5D0,0xC4E6,INVALC,INVALC,INVALC, 0xF6E5,0xF6E6,0xC576,0xF6E4,INVALC,INVALC,INVALC,0xF7E2, 0xC5CF,0xF7E0,0xF7E1,0xF8AC,INVALC,INVALC,0xC656,0xF8F3, 0xF8F1,0xF8F2,0xF8F4, /* Range 0x6B2F - 0x6B56, array index: 0x1DE9 */ 0xD1F6,INVALC,0xD1F8,0xB1FD,0xD5D7,0xD1F9,INVALC,0xD5D6, 0xD5D8,0xD5D9,0xD9DA,0xB4DB,0xD9DB,0xD9DD,0xB4DC,0xB4DA, 0xD9DC,INVALC,0xDDFA,0xDDF8,0xDDF7,INVALC,0xDDF6,0xDDF5, 0xB7B2,0xDDF9,0xBA70,0xE263,0xE265,0xBA71,0xE264,0xBCDB, INVALC,0xBCDA,0xE5F0,INVALC,INVALC,0xE9DF,0xE9DE,0xE9E0, /* Range 0x6B5B - 0x6B67, array index: 0x1E11 */ 0xED4B,0xC0D3,INVALC,0xEFE8,0xC26A,0xF259,0xC577,0xA4EE, 0xA5BF,0xA6B9,0xA842,0xAA5A,0xAA5B, /* Range 0x6B76 - 0x6BB7, array index: 0x1E1E */ 0xE6D1,0xBEFA,0xC26B,0xA4EF,INVALC,0xA6BA,INVALC,INVALC, 0xCCEB,0xAA5C,0xCCEA,INVALC,0xCF65,0xAC6F,0xCF66,INVALC, 0xAC70,INVALC,0xD1FC,0xAEEE,0xAEED,INVALC,0xD5DE,0xD5DC, 0xD5DD,0xD5DB,INVALC,0xD5DA,INVALC,INVALC,0xD9DE,0xD9E1, 0xB4DE,0xD9DF,0xB4DD,0xD9E0,INVALC,0xDDFB,INVALC,INVALC, 0xE266,0xE267,0xE268,INVALC,0xE5F3,0xE5F2,0xBCDC,0xE5F1, 0xE5F4,0xE9E1,INVALC,INVALC,0xE9E2,0xE9E3,INVALC,0xED4C, 0xC0D4,0xC26C,0xF25A,INVALC,0xC4E8,0xC95F,INVALC,0xAC71, 0xCF67,0xAEEF, /* Range 0x6BBC - 0x6BDB, array index: 0x1E60 */ 0xB4DF,0xD9E2,INVALC,0xB7B5,0xB7B4,INVALC,INVALC,0xE269, 0xE26A,0xBCDD,0xBCDE,0xE9E5,0xE9E4,0xEFE9,0xF7E3,0xA4F0, 0xC960,0xA5C0,INVALC,0xA843,0xCB48,INVALC,0xAC72,0xB7B6, 0xA4F1,INVALC,0xCF68,0xAC73,0xCF69,INVALC,0xC0D5,0xA4F2, /* Range 0x6BE0 - 0x6C38, array index: 0x1E80 */ 0xCF6A,INVALC,0xD242,0xD241,0xD1FE,INVALC,0xD1FD,0xD243, 0xD240,INVALC,INVALC,0xB240,0xB241,INVALC,INVALC,0xB4E0, 0xD9E3,INVALC,0xD9E4,0xD9E5,INVALC,INVALC,INVALC,0xDE41, 0xDE42,0xDE40,INVALC,0xDDFD,0xDDFE,0xB7B7,0xE26B,0xE5F7, 0xE5F6,0xE5F5,0xE5F8,0xE9E7,0xE9E6,0xBEFB,0xE9E8,INVALC, 0xC0D6,0xED4D,INVALC,0xEFEA,0xF25B,0xF6E7,INVALC,0xA4F3, 0xA5C2,0xA5C1,INVALC,0xAA5D,0xC961,0xC97E,0xA6BB,INVALC, 0xC9F7,0xCB49,0xCB4A,0xAA5E,INVALC,0xCCED,INVALC,0xAC74, 0xCF6B,0xCF6C,INVALC,0xAEF0,0xAEF4,0xD244,0xAEF3,0xAEF1, 0xAEF2,INVALC,0xD5DF,0xB242,0xB4E3,INVALC,0xB4E1,0xB4E2, 0xD9E6,INVALC,INVALC,0xBA72,0xA4F4,INVALC,0xC9A1,INVALC, 0xA5C3, /* Range 0x6C3E - 0x6C43, array index: 0x1ED9 */ 0xA5C6,0xC9A3,0xA5C5,0xA5C4,0xA844,0xC9A2, /* Range 0x6C4A - 0x6C9D, array index: 0x1EDF */ 0xC9FC,0xC9FE,0xCA40,0xA6C5,0xA6C6,0xC9FB,0xA6C1,INVALC, 0xC9F9,INVALC,0xC9FD,0xA6C2,INVALC,0xA6BD,INVALC,0xA6BE, INVALC,0xA6C4,0xC9FA,0xA6BC,0xA845,0xA6BF,0xA6C0,0xA6C3, INVALC,INVALC,INVALC,0xCB5B,0xCB59,0xCB4C,0xA851,0xCB53, 0xA84C,0xCB4D,INVALC,0xCB55,INVALC,0xCB52,0xA84F,0xCB51, 0xA856,0xCB5A,0xA858,INVALC,0xA85A,INVALC,0xCB4B,INVALC, 0xA84D,0xCB5C,INVALC,0xA854,0xA857,INVALC,0xCD45,0xA847, 0xA85E,0xA855,0xCB4E,0xA84A,0xA859,0xCB56,0xA848,0xA849, 0xCD43,0xCB4F,0xA850,0xA85B,0xCB5D,0xCB50,0xA84E,INVALC, 0xA853,0xCCEE,0xA85C,0xCB57,0xA852,INVALC,0xA85D,0xA846, 0xCB54,0xA84B,0xCB58,0xCD44, /* Range 0x6CAB - 0x6CF5, array index: 0x1F33 */ 0xAA6A,0xAA7A,0xCCF5,0xAA71,INVALC,0xCD4B,0xAA62,INVALC, 0xAA65,0xCD42,INVALC,0xCCF3,0xCCF7,0xAA6D,0xAA6F,0xCCFA, 0xAA76,0xAA68,0xAA66,0xAA67,0xAA75,0xCD47,0xAA70,0xCCF9, 0xCCFB,0xAA6E,0xAA73,0xCCFC,0xCD4A,INVALC,0xAC75,0xAA79, INVALC,0xAA63,0xCD49,INVALC,0xCD4D,0xCCF8,0xCD4F,0xCD40, 0xAA6C,0xCCF4,0xAA6B,0xAA7D,0xAA72,INVALC,0xCCF2,0xCF75, 0xAA78,0xAA7C,0xCD41,0xCD46,INVALC,0xAA7E,0xAA77,0xAA69, 0xAA5F,INVALC,0xAA64,INVALC,0xCCF6,0xAA60,0xCD4E,INVALC, 0xCCF0,0xCCEF,0xCCFD,0xCCF1,0xAA7B,0xAEF5,0xAA74,0xCCFE, 0xAA61,INVALC,0xACA6, /* Range 0x6D00 - 0x6D22, array index: 0x1F7E */ 0xCF7C,0xCFA1,INVALC,0xCFA4,0xCF77,INVALC,INVALC,0xCFA7, 0xCFAA,0xCFAC,0xCF74,0xAC76,0xAC7B,0xD249,0xACAD,0xCFA5, 0xCFAD,0xCF7B,0xCF73,INVALC,INVALC,INVALC,0xD264,0xAC7E, 0xCFA2,0xCF78,0xCF7A,0xACA5,INVALC,0xCF7D,0xAC7D,0xCF70, 0xCFA8,INVALC,0xCFAB, /* Range 0x6D25 - 0x6D42, array index: 0x1FA1 */ 0xAC7A,INVALC,0xACA8,0xCF6D,0xACAA,0xAC78,0xACAE,0xCFA9, 0xCF6F,0xACAB,0xD25E,0xCD48,0xAC7C,0xAC77,0xCF76,0xCF6E, 0xACAC,0xACA4,0xCFA3,0xACA9,0xACA7,0xCF79,0xACA1,0xCF71, 0xACA2,0xACA3,0xCF72,0xCFA6,0xAC79,0xCF7E, /* Range 0x6D58 - 0x6D98, array index: 0x1FBF */ 0xD24C,0xAEFD,0xAF43,INVALC,INVALC,INVALC,0xD255,0xD25B, 0xD257,0xD24A,0xD24D,0xD246,0xD247,0xAF4A,0xAEFA,0xD256, 0xD25F,0xAF45,0xAEF6,INVALC,0xAF40,0xD24E,0xAF42,0xD24F, 0xD259,INVALC,INVALC,INVALC,0xAF44,0xD268,0xD248,0xAEFC, 0xAEFB,0xAF48,0xD245,0xD266,0xD25A,0xD267,0xD261,0xD253, 0xD262,INVALC,0xD25C,0xD265,0xD263,0xAF49,0xD254,0xAEF9, 0xAEF8,0xAF41,0xAF47,0xD260,0xAF46,0xD251,0xB243,INVALC, 0xD269,0xD250,0xD24B,0xAEFE,0xAF4B,0xAEF7,INVALC,0xD258, 0xD25D, /* Range 0x6DAA - 0x6DFD, array index: 0x2000 */ 0xB265,0xD5E1,0xD5E5,INVALC,0xB252,0xB250,INVALC,INVALC, 0xB247,0xD5E3,0xD5E2,0xB25B,INVALC,0xD5E8,0xB255,INVALC, 0xD5FA,0xD647,0xB244,0xD5F7,0xD5F0,0xB267,0xD5E0,INVALC, 0xD5FC,INVALC,0xB264,0xB258,0xB263,0xB24E,0xD5EC,0xD5FE, 0xD5F6,0xB24F,0xB249,0xD645,INVALC,0xD5FD,0xD640,0xB251, 0xB259,0xD642,0xD5EA,0xD5FB,0xD5EF,0xD644,0xB25E,0xB246, 0xB25C,0xD5F4,0xD5F2,0xD5F3,0xB253,0xD5EE,0xD5ED,0xB248, 0xD5E7,0xD646,0xB24A,0xD5F1,0xB268,INVALC,0xB262,0xD5E6, 0xB25F,0xB25D,0xB266,0xD5F8,0xB261,0xD252,0xD5F9,0xB260, 0xD641,0xB245,0xD5F5,0xB257,0xD5E9,0xB256,INVALC,0xB254, 0xB24C,0xB24B,0xD9E7,0xD643, /* Range 0x6E19 - 0x6E79, array index: 0x2054 */ 0xB541,0xB25A,0xB4EE,0xD9F6,0xB4FC,INVALC,0xD9EA,0xB4EB, 0xB4E7,0xDA49,0xB4ED,0xB4F1,0xB4EC,0xB4F5,0xDA4D,0xDA44, INVALC,INVALC,0xD9F1,0xB4FA,0xB4F4,0xD9FD,0xB4E4,0xDA4A, 0xDA43,0xB4E8,0xD9F7,0xB4F7,0xDA55,0xDA56,INVALC,0xB4E5, 0xDA48,0xB4F9,0xD9FB,0xD9ED,0xD9EE,0xB4FD,0xD9F2,0xD9F9, 0xD9F3,INVALC,0xB4FB,0xB544,0xD9EF,0xD9E8,0xD9E9,INVALC, 0xD9EB,0xB4EA,0xD9F8,INVALC,0xB4F8,0xB542,INVALC,INVALC, 0xD9FA,0xDA53,0xDA4B,0xB4E6,0xDA51,0xB4F2,INVALC,0xB4F0, INVALC,0xDA57,0xB4EF,0xDA41,0xD9F4,0xD9FE,0xB547,0xDA45, 0xDA42,0xD9F0,0xB543,0xDA4F,0xDA4C,0xDA54,0xB4E9,0xDA40, 0xB546,INVALC,0xDA47,INVALC,INVALC,0xB4F3,0xB4F6,INVALC, 0xDA46,0xB545,0xD9F5,0xD5E4,INVALC,INVALC,0xDA50,0xDA4E, 0xDA52, /* Range 0x6E8D - 0x6ED8, array index: 0x20B5 */ 0xDE61,0xDE60,0xDE46,0xB7BD,INVALC,0xDE5F,0xDE49,0xDE4A, INVALC,0xB7C7,0xDE68,0xB7C2,0xDE5E,INVALC,0xDE43,0xB7C8, 0xB7BE,0xDE52,0xDE48,0xDE4B,0xDE63,0xB7B8,0xDE6A,0xDE62, 0xB7C1,0xDE57,0xB7CC,INVALC,INVALC,0xB7CB,0xB7C5,INVALC, INVALC,0xDE69,0xB7B9,0xDE55,0xDE4C,0xDE59,0xDE65,0xB7CD, INVALC,0xB7BB,0xDE54,INVALC,0xDE4D,0xB7C4,INVALC,0xB7C3, 0xDE50,0xDE5A,0xDE64,0xDE47,0xDE51,0xB7BC,0xDE5B,0xB7C9, 0xB7C0,0xDE4E,0xB7BF,0xDE45,0xDE53,0xDE67,0xB4FE,0xBAB0, 0xDE56,0xE26C,0xDE58,0xDE66,0xB7C6,0xDE4F,0xB7BA,0xB7CA, 0xBCF0,0xDE44,INVALC,0xDE5D, /* Range 0x6EEB - 0x6F43, array index: 0x2101 */ 0xE2AA,0xBAAD,0xE27D,0xE2A4,0xBAA2,INVALC,0xE26E,0xBAAF, INVALC,0xBA77,0xE26D,0xE2B0,0xBAB1,0xE271,0xE2A3,INVALC, 0xE273,0xE2B3,0xE2AF,0xBA75,0xBAA1,0xE653,0xBAAE,0xBA7D, 0xE26F,INVALC,0xE2AE,0xBAA3,0xE2AB,0xE2B8,0xE275,0xE27E, INVALC,INVALC,0xE2B6,0xE2AC,0xBA7C,INVALC,INVALC,0xE27C, 0xBA76,0xBA74,0xBAA8,INVALC,INVALC,0xE27A,0xE277,0xE278, INVALC,0xE2B2,INVALC,0xE2B7,0xE2B5,0xBA7A,0xE2B9,0xBA7E, 0xBAA7,INVALC,0xE270,0xE5FA,0xE279,INVALC,0xBA78,0xBAAC, 0xBAA9,0xBA7B,0xE2A5,0xE274,0xBAAA,0xE2A7,0xBAA4,0xBAA6, 0xBA73,INVALC,0xE2A9,0xE2A1,0xE272,0xBAA5,0xE2B1,0xE2B4, 0xE27B,0xE2A8,INVALC,0xBA79,0xBCDF,0xE2A6,0xE5F9,INVALC, 0xE2AD, /* Range 0x6F4E - 0x6F97, array index: 0x215A */ 0xE276,0xE644,0xE64E,0xBCE2,0xE64D,0xE659,0xBCE4,0xE64B, INVALC,0xE64F,0xBCEF,INVALC,0xE646,0xBCE7,INVALC,0xE652, 0xE9F0,0xBCF3,0xBCF2,0xE654,0xE643,0xE65E,0xBCED,INVALC, 0xBCE3,0xE657,INVALC,0xE65B,0xE660,0xE655,0xE649,0xBCE6, 0xBCE9,0xBCF1,0xBCEC,INVALC,0xE64C,0xE2A2,INVALC,INVALC, 0xE648,0xE65F,0xBCE8,INVALC,0xBCEB,0xE661,0xBCE0,0xE656, 0xE5FB,0xE65C,0xC0DF,INVALC,0xE64A,INVALC,0xBCE1,0xE645, 0xBCE5,0xE5FC,0xBAAB,0xE641,INVALC,0xE65A,0xE642,0xE640, 0xBCEA,INVALC,0xE658,INVALC,0xE5FE,0xE651,0xE650,0xE65D, 0xE647,0xBCEE, /* Range 0x6F9E - 0x6FCF, array index: 0x21A4 */ 0xE9F3,INVALC,0xBF49,0xBEFE,0xEA40,0xE9EB,0xBF41,0xE9F7, 0xBF48,0xBF43,0xE9F5,0xED4F,0xE9FB,0xEA42,0xE9FA,0xE9E9, 0xE9F8,0xEA44,0xEA46,0xBEFD,0xEA45,0xBF44,0xBF4A,INVALC, 0xBF47,INVALC,0xE9FE,0xBF46,0xE9F9,INVALC,0xE9ED,0xE9F2, INVALC,0xE9FD,0xBF45,0xBF42,0xBEFC,0xBF40,0xE9F1,INVALC, 0xE5FD,0xE9EC,0xE9EF,0xEA41,0xE9F4,0xE9EA,0xED4E,0xEA43, 0xE9EE,0xE9FC, /* Range 0x6FDB - 0x6FF4, array index: 0x21D6 */ 0xC0DB,0xED53,0xED59,0xED57,0xC0D9,0xC0DA,0xC0E1,0xED5A, 0xED52,0xC0DC,INVALC,0xED56,0xED55,0xED5B,0xC0E2,INVALC, 0xC0DD,0xC0E0,0xED54,0xC0E4,0xC0DE,0xC0E5,0xC0D8,0xED58, INVALC,0xED50, /* Range 0x6FFA - 0x704C, array index: 0x21F0 */ 0xC271,0xEFF4,0xEFF6,INVALC,0xC26F,0xEFF2,0xEFF3,0xEFEE, INVALC,INVALC,0xE9F6,0xEFEF,0xC270,0xEFEB,INVALC,0xC26D, 0xEFF8,0xC26E,0xEFEC,0xEFED,0xEFF1,0xC273,INVALC,0xC272, INVALC,INVALC,0xEFF0,0xC378,0xF25F,0xF265,0xC379,0xF25C, 0xC376,0xC373,0xF267,0xC377,INVALC,0xC374,0xF25E,0xF261, 0xF262,0xF263,0xF266,INVALC,0xEFF5,0xF25D,0xC375,0xF264, 0xF268,0xF260,INVALC,INVALC,INVALC,0xF45D,0xC46A,0xF460, 0xC46B,0xF468,0xF45F,0xF45C,INVALC,0xF45E,0xF462,0xF465, 0xF464,0xF467,0xF45B,INVALC,0xC469,0xF463,0xF466,0xF469, 0xF461,0xF5D3,0xF5D4,0xF5D8,0xF5D9,INVALC,0xF5D6,0xF5D7, 0xF5D5,INVALC,0xC4E9, /* Range 0x7051 - 0x706B, array index: 0x2243 */ 0xC578,0xF6EB,INVALC,INVALC,0xF6E8,0xF6E9,0xF6EA,0xC579, INVALC,0xF7E5,0xF7E4,INVALC,0xF8AF,0xC5F4,0xF8AD,0xF8B0, 0xF8AE,0xF8F5,0xC657,0xC665,0xF9A3,0xF96C,INVALC,0xF9A2, 0xF9D0,0xF9D1,0xA4F5, /* Range 0x7082 - 0x7086, array index: 0x225E */ 0xCD58,0xCD5A,0xCD55,0xCD52,0xCD54, /* Range 0x7091 - 0x709A, array index: 0x2263 */ 0xCD56,0xAAA3,0xCD53,0xCD50,0xAAA1,0xCD57,INVALC,0xCD51, 0xAAA5,0xCD59, /* Range 0x70A9 - 0x70BA, array index: 0x226D */ 0xCFB6,INVALC,0xACAF,0xACB2,0xACB4,0xACB6,0xACB3,0xCFB2, 0xCFB1,INVALC,0xACB1,0xCFB4,0xCFB5,INVALC,0xCFAE,0xACB5, INVALC,0xACB0, /* Range 0x70C5 - 0x70E4, array index: 0x227F */ 0xD277,0xD278,0xD279,0xAF50,INVALC,0xAF4C,0xD26E,INVALC, 0xD276,0xD27B,0xAF51,INVALC,0xD26C,0xD272,0xD26B,0xD275, INVALC,INVALC,0xD271,0xAF4D,0xAF4F,0xD27A,INVALC,0xD26A, 0xD26D,0xD273,INVALC,0xD274,0xD27C,0xD270,INVALC,0xAF4E, /* Range 0x70F3 - 0x7110, array index: 0x229F */ 0xD650,0xD64C,INVALC,0xD658,0xD64A,0xD657,0xB269,0xD648, 0xDA5B,0xD652,0xB26C,INVALC,0xD653,0xD656,INVALC,0xD65A, INVALC,0xD64F,INVALC,0xD654,INVALC,INVALC,0xB26A,0xB26B, 0xD659,0xD64D,0xD649,0xD65B,INVALC,0xD651, /* Range 0x7117 - 0x7128, array index: 0x22BD */ 0xD64B,INVALC,0xB548,0xB549,0xDA65,0xB54F,INVALC,0xDA59, 0xDA62,0xDA58,0xB54C,0xDA60,0xDA5E,INVALC,0xDA5F,0xB54A, INVALC,0xDA63, /* Range 0x712E - 0x7132, array index: 0x22CF */ 0xDA5C,0xDA5A,0xB54B,0xDA5D,0xDA61, /* Range 0x7141 - 0x7172, array index: 0x22D4 */ 0xDE70,0xDE77,0xDE79,0xDEA1,INVALC,0xB7DA,0xDE6B,INVALC, 0xB7D2,INVALC,0xDE7A,0xB7D7,0xDEA2,0xB7CE,INVALC,0xDE7D, INVALC,0xDE6D,0xDE7E,0xDE6C,INVALC,0xB7DC,INVALC,0xDE78, 0xB7CF,0xDEA3,INVALC,0xB7D4,0xDE71,0xB7D9,0xDE7C,0xDE6F, 0xDE76,0xDE72,0xDE6E,0xB7D1,0xB7D8,0xB7D6,0xB7D3,0xB7DB, 0xB7D0,0xDE75,INVALC,0xB7D5,INVALC,0xB54E,INVALC,0xDE7B, INVALC,0xDE73, /* Range 0x7180 - 0x718A, array index: 0x2306 */ 0xE2BD,0xE2C3,0xE2BF,INVALC,0xBAB6,0xE2BE,0xE2C2,0xE2BA, INVALC,0xE2BC,0xBAB5, /* Range 0x7197 - 0x71F4, array index: 0x2311 */ 0xE2C4,INVALC,0xBAB3,0xE667,0xE664,0xE670,0xE66A,0xE66C, 0xBCF4,0xE666,0xE66E,INVALC,INVALC,0xE66D,0xE66B,INVALC, 0xE671,0xBCF7,0xE668,0xE66F,INVALC,0xBCF5,INVALC,INVALC, 0xE663,0xE665,0xBCF6,0xE662,0xE672,INVALC,0xE669,INVALC, INVALC,0xEA4A,0xBF51,INVALC,INVALC,0xEA55,0xEA53,0xBF4B, 0xEA49,0xEA4C,0xEA4D,0xEA48,0xBF55,0xBF56,0xEA47,0xEA56, 0xEA51,0xBF4F,0xBF4C,0xEA50,0xEA4E,INVALC,INVALC,0xBF52, 0xEA52,0xBF4D,INVALC,0xBF4E,INVALC,0xEA4F,0xBF50,0xEA4B, INVALC,0xEA54,0xBF53,0xEA57,0xEA58,0xBF54,INVALC,INVALC, 0xC0E7,0xC0EE,0xED5C,0xED62,INVALC,0xED60,0xC0EA,0xC0E9, 0xC0E6,0xED5E,INVALC,INVALC,INVALC,0xC0EC,0xC0EB,0xC0E8, INVALC,0xED61,0xED5D,0xED5F,INVALC,0xC0ED, /* Range 0x71F8 - 0x7207, array index: 0x236F */ 0xC277,0xEFFB,INVALC,0xC274,0xC275,0xEFFD,0xC276,0xEFFA, INVALC,0xEFF9,0xF26C,0xEFFC,INVALC,0xF26D,0xC37A,0xF26B, /* Range 0x7219 - 0x722D, array index: 0x237F */ 0xF5DC,0xF5DB,0xC4EA,INVALC,0xF5DA,0xF6EC,0xF6ED,INVALC, INVALC,0xF7E6,0xF8B1,INVALC,INVALC,0xF8F6,0xF9BC,0xC679, 0xF9C6,0xA4F6,INVALC,0xAAA6,0xAAA7, /* Range 0x7235 - 0x724C, array index: 0x2394 */ 0xC0EF,0xA4F7,INVALC,0xAAA8,0xAF52,0xB7DD,0xA4F8,INVALC, 0xB26E,0xBAB8,0xC962,INVALC,0xCFB7,0xD27D,INVALC,0xE2C5, INVALC,0xC0F0,0xA4F9,0xAAA9,0xCFB8,0xCFB9,0xDA66,0xB550, /* Range 0x7256 - 0x7263, array index: 0x23AC */ 0xBCF8,INVALC,0xC37C,0xA4FA,0xDA67,0xA4FB,INVALC,0xA6C9, 0xCA42,0xA6C8,0xA865,0xA864,0xA863,0xCB60, /* Range 0x726C - 0x72B0, array index: 0x23BA */ 0xCFBA,INVALC,0xCFBD,0xACBA,0xCFBB,INVALC,0xACB9,0xCFBC, 0xACBB,INVALC,0xD2A2,0xD2A1,0xD27E,0xAF53,INVALC,0xD65D, 0xD65E,0xB26F,0xD65C,0xD65F,0xB552,0xB270,INVALC,INVALC, 0xB551,0xDA6B,0xDA6A,INVALC,0xDA68,0xDA69,INVALC,0xDA6C, 0xDEA6,0xDEA5,0xDEA9,INVALC,0xDEA8,0xDEA7,0xBAB9,0xE2C9, INVALC,0xE2C8,0xBABA,0xE2C7,0xE673,INVALC,0xE674,0xBCF9, INVALC,0xEA59,0xEA5A,INVALC,INVALC,0xF272,0xC37D,0xF271, 0xF270,0xF26E,0xF26F,0xC4EB,0xF46C,0xF6EE,0xF8F7,INVALC, 0xA4FC,INVALC,0xC9A5,0xA5C7,0xC9A6, /* Range 0x72BD - 0x72EB, array index: 0x23FF */ 0xCB62,INVALC,0xCB61,0xAAAC,0xCB65,0xA867,0xCB63,0xA866, 0xCB67,0xCB64,INVALC,INVALC,0xCD5F,0xCFBE,0xCD5D,0xCD64, INVALC,0xAAAD,INVALC,0xAAB0,0xCD65,0xCD61,INVALC,0xCD62, INVALC,0xCD5C,0xAAAF,0xCD5E,0xAAAE,0xCD63,INVALC,0xCD60, INVALC,INVALC,0xCFC2,0xACBD,0xACBE,INVALC,0xCFC5,0xCFBF, INVALC,0xCFC4,INVALC,0xCFC0,0xACBC,0xCFC3,0xCFC1, /* Range 0x72F3 - 0x7301, array index: 0x242E */ 0xD2A8,0xD2A5,INVALC,0xD2A7,0xAF58,0xAF57,0xAF55,0xD2A4, 0xD2A9,0xAF54,0xAF56,0xD2A6,0xD667,0xD2A3,0xD2AA, /* Range 0x7307 - 0x730C, array index: 0x243D */ 0xD662,0xD666,INVALC,0xD665,0xDA6E,0xDA79, /* Range 0x730F - 0x731E, array index: 0x2443 */ 0xD668,INVALC,0xD663,0xDA6D,0xB274,INVALC,INVALC,0xB273, 0xD661,0xD664,0xB275,INVALC,0xB272,0xB271,0xD660,0xD669, /* Range 0x7322 - 0x7329, array index: 0x2453 */ 0xDA70,0xDA77,INVALC,0xB554,0xDA76,0xDA73,INVALC,0xB556, /* Range 0x7330 - 0x7345, array index: 0x245B */ 0xDA6F,0xDA71,0xDA74,0xDA72,0xB555,0xDA78,0xB553,0xB7DF, INVALC,INVALC,0xDEAD,0xDEAC,0xDEAA,INVALC,0xB7E2,0xB7E1, 0xDEAE,INVALC,0xDEAB,0xE2CA,0xBABB,0xB7E0, /* Range 0x7349 - 0x7352, array index: 0x2471 */ 0xDEB0,0xDEAF,INVALC,0xE2CD,0xE2CB,0xBCFA,INVALC,0xBABC, 0xE2CC,0xE676, /* Range 0x7357 - 0x738B, array index: 0x247B */ 0xBCFB,0xE675,0xE67E,0xE67D,0xE67B,INVALC,0xE67A,0xE677, 0xE678,0xE679,0xE67C,0xE6A1,INVALC,INVALC,0xEA5F,0xEA5C, 0xEA5D,0xBF57,0xEA5B,0xEA61,0xEA60,0xEA5E,INVALC,0xED64, 0xED65,0xC0F1,INVALC,0xC0F2,0xED63,INVALC,0xC279,0xEFFE, 0xC278,0xC37E,INVALC,0xC3A1,0xC46D,0xF46E,0xF46D,0xF5DD, 0xF6EF,0xC57A,0xF7E8,0xF7E7,0xF7E9,0xA5C8,0xCFC6,0xAF59, 0xB276,0xD66A,0xA5C9,0xC9A7,0xA4FD, /* Range 0x7392 - 0x7397, array index: 0x24B0 */ 0xCB6C,0xCB6A,0xCB6B,0xCB68,0xA868,0xCB69, /* Range 0x739D - 0x73AD, array index: 0x24B6 */ 0xCD6D,INVALC,0xAAB3,0xCD6B,0xCD67,0xCD6A,INVALC,0xCD66, 0xAAB5,0xCD69,INVALC,0xAAB2,0xAAB1,INVALC,0xAAB4,0xCD6C, 0xCD68, /* Range 0x73B2 - 0x73CD, array index: 0x24C7 */ 0xACC2,0xACC5,0xCFCE,0xCFCD,0xCFCC,0xACBF,0xCFD5,0xCFCB, INVALC,0xACC1,0xD2AF,INVALC,0xCFD2,0xCFD0,0xACC4,INVALC, 0xCFC8,0xCFD3,INVALC,0xCFCA,0xCFD4,0xCFD1,0xCFC9,INVALC, 0xACC0,0xCFD6,0xCFC7,0xACC3, /* Range 0x73D2 - 0x73E0, array index: 0x24E3 */ 0xD2B4,0xD2AB,0xD2B6,INVALC,0xD2AE,0xD2B9,0xD2BA,0xD2AC, 0xD2B8,0xD2B5,0xD2B3,0xD2B7,0xAF5F,INVALC,0xAF5D, /* Range 0x73E5 - 0x73EE, array index: 0x24F2 */ 0xD2AD,INVALC,0xD2B0,0xD2BB,0xD2B2,0xAF5E,0xCFCF,INVALC, 0xAF5A,0xAF5C, /* Range 0x73F4 - 0x740D, array index: 0x24FC */ 0xD678,0xD66D,0xD66B,INVALC,0xD66C,INVALC,0xD673,INVALC, 0xD674,0xD670,0xB27B,0xD675,0xD672,0xD66F,INVALC,0xB279, 0xD66E,0xB277,0xB27A,0xD671,0xD679,0xAF5B,0xB278,0xD677, 0xD676,0xB27C, /* Range 0x7420 - 0x7436, array index: 0x2516 */ 0xDAA9,0xDAA2,0xB55A,0xDAA6,0xDAA5,0xB55B,0xB561,INVALC, 0xB562,0xDAA8,0xB558,0xDA7D,0xDA7B,0xDAA3,0xDA7A,0xB55F, 0xDA7C,0xDAA4,0xDAAA,0xB559,0xB55E,0xB55C,0xB55D, /* Range 0x743F - 0x7446, array index: 0x252D */ 0xB7E9,0xDEB7,0xB7E8,0xDEBB,INVALC,0xDEB1,INVALC,0xDEBC, /* Range 0x744A - 0x7464, array index: 0x2535 */ 0xDEB2,0xDEB3,INVALC,0xDEBD,0xDEBA,0xDEB8,0xDEB9,0xDEB5, 0xDEB4,INVALC,0xDEBE,0xB7E5,INVALC,0xDEB6,INVALC,0xB7EA, 0xB7E4,0xB7EB,0xB7EC,INVALC,0xB7E7,0xB7E6,INVALC,INVALC, 0xE2CE,0xBABE,0xBABD, /* Range 0x7469 - 0x7475, array index: 0x2550 */ 0xBCFC,0xBABF,INVALC,INVALC,0xBAC1,0xE2D4,0xB7E3,0xBAC0, 0xE2D0,0xE2D2,0xE2CF,INVALC,0xE2D1, /* Range 0x747C - 0x748B, array index: 0x255D */ 0xE6AA,0xE6A7,0xBD40,0xEA62,0xBD41,0xE6A6,INVALC,0xBCFE, INVALC,0xE6A8,0xE6A5,0xE6A2,0xE6A9,0xE6A3,0xE6A4,0xBCFD, /* Range 0x7494 - 0x74C5, array index: 0x256D */ 0xEA65,0xEA67,INVALC,0xED66,0xBF5A,INVALC,0xEA63,INVALC, 0xBF58,INVALC,0xBF5C,0xBF5B,0xEA64,0xEA68,INVALC,0xBF59, INVALC,0xED6D,0xC0F5,0xC27A,0xC0F6,0xC0F3,0xED6A,0xED68, INVALC,0xED6B,INVALC,0xED6E,0xC0F4,0xED6C,0xED67,INVALC, INVALC,0xF042,0xF045,0xF275,0xF040,INVALC,0xF46F,0xF046, INVALC,0xC3A2,0xF044,0xC27B,0xF041,0xF043,0xF047,0xF276, INVALC,0xF274, /* Range 0x74D4 - 0x74E9, array index: 0x259F */ 0xC4ED,0xF6F1,0xC4EC,0xF6F3,0xF6F0,0xF6F2,0xC5D0,0xF8B2, 0xA5CA,0xCD6E,0xD2BC,0xD2BD,0xB27D,0xDEBF,0xBF5D,0xC3A4, 0xC57B,0xF8B3,0xA5CB,INVALC,0xCD6F,0xA260, /* Range 0x74F4 - 0x74F7, array index: 0x25B5 */ 0xD2BE,0xD2BF,0xB27E,0xB2A1, /* Range 0x74FB - 0x7540, array index: 0x25B9 */ 0xDAAB,INVALC,0xDEC2,0xDEC1,0xDEC0,0xE2D5,INVALC,0xE2D6, 0xE2D7,0xBAC2,INVALC,INVALC,0xE6AD,0xE6AC,INVALC,INVALC, 0xEA69,0xBF5E,0xBF5F,INVALC,0xED72,0xED6F,0xED70,0xED71, 0xF049,0xF048,0xC27C,0xF277,0xF5DE,0xA5CC,INVALC,0xACC6, INVALC,0xB2A2,0xDEC3,INVALC,0xA5CD,INVALC,0xD2C0,0xB2A3, INVALC,INVALC,0xB563,0xB564,INVALC,0xA5CE,0xA5CF,0xCA46, 0xA86A,0xA869,0xACC7,0xCFD9,0xDAAC,0xA5D0,0xA5D1,0xA5D2, 0xA5D3,INVALC,INVALC,INVALC,0xA86B,0xA86C,0xCB6E,0xCB6D, INVALC,INVALC,0xAAB6,0xCD72,0xCD70,0xCD71, /* Range 0x754B - 0x754F, array index: 0x25FF */ 0xACCB,0xACC9,INVALC,0xACCA,0xACC8, /* Range 0x7559 - 0x7570, array index: 0x2604 */ 0xAF64,0xAF63,0xD2C1,0xAF62,0xAF61,INVALC,0xD2C2,INVALC, INVALC,0xB2A6,0xD67B,0xD67A,0xB2A4,0xB2A5,INVALC,INVALC, INVALC,0xB566,0xB565,0xDAAE,INVALC,INVALC,0xDAAD,0xB2A7, /* Range 0x7576 - 0x7580, array index: 0x261C */ 0xB7ED,0xDEC5,0xB7EE,0xDEC4,INVALC,INVALC,INVALC,0xE2D8, 0xE6AE,0xBD42,0xEA6A, /* Range 0x7586 - 0x759A, array index: 0x2627 */ 0xC3A6,0xC3A5,INVALC,INVALC,0xC57C,0xA5D4,0xCD73,INVALC, INVALC,0xB2A8,0xE2D9,0xBAC3,INVALC,INVALC,0xCB6F,0xCB70, INVALC,INVALC,0xCD74,0xAAB8,0xAAB9, /* Range 0x75A2 - 0x75AB, array index: 0x263C */ 0xACCF,0xACD0,0xACCD,0xACCE,INVALC,0xCFDC,INVALC,INVALC, 0xCFDD,0xACCC, /* Range 0x75B2 - 0x75E7, array index: 0x2646 */ 0xAF68,0xAF69,INVALC,0xB2AB,0xD2C9,INVALC,0xAF6E,0xAF6C, 0xD2CA,0xD2C5,0xAF6B,0xAF6A,0xAF65,0xD2C8,0xD2C7,0xD2C4, 0xAF6D,INVALC,0xD2C6,0xAF66,INVALC,0xAF67,INVALC,INVALC, 0xB2AC,0xD6A1,0xD6A2,0xB2AD,0xD67C,0xD67E,0xD6A4,0xD6A3, 0xD67D,INVALC,0xB2A9,0xB2AA,INVALC,0xDAB6,0xB56B,0xB56A, 0xDAB0,0xB568,INVALC,0xDAB3,0xB56C,0xDAB4,0xB56D,0xDAB1, 0xB567,0xB569,0xDAB5,INVALC,0xDAB2,0xDAAF, /* Range 0x75ED - 0x7603, array index: 0x267C */ 0xDED2,INVALC,0xDEC7,0xB7F0,0xB7F3,0xB7F2,0xB7F7,0xB7F6, 0xDED3,0xDED1,0xDECA,0xDECE,0xDECD,0xB7F4,0xDED0,0xDECC, 0xDED4,0xDECB,0xB7F5,0xB7EF,0xB7F1,INVALC,0xDEC9, /* Range 0x7608 - 0x7629, array index: 0x2693 */ 0xE2DB,0xBAC7,0xE2DF,0xBAC6,0xE2DC,0xBAC5,INVALC,0xDEC8, 0xDECF,0xE2DE,INVALC,0xBAC8,0xE2E0,0xE2DD,0xE2DA,INVALC, INVALC,0xE6B1,0xE6B5,0xE6B7,0xE6B3,0xE6B2,0xE6B0,0xBD45, 0xBD43,0xBD48,0xBD49,0xE6B4,0xBD46,0xE6AF,0xBD47,0xBAC4, 0xE6B6,0xBD44, /* Range 0x762D - 0x7635, array index: 0x26B5 */ 0xEA6C,INVALC,0xEA6B,0xEA73,0xEA6D,0xEA72,0xEA6F,0xBF60, 0xEA71, /* Range 0x7642 - 0x7649, array index: 0x26BE */ 0xC0F8,0xED74,INVALC,INVALC,0xC0F7,0xED77,0xED75,0xED76, /* Range 0x7652 - 0x7665, array index: 0x26C6 */ 0xC2A1,0xF04E,INVALC,INVALC,0xC27D,0xF04F,0xC27E,0xF04C, 0xF050,INVALC,0xF04A,INVALC,INVALC,0xC3A7,0xF278,0xC3A8, 0xC46F,INVALC,0xF04B,0xC470, /* Range 0x7669 - 0x7672, array index: 0x26DA */ 0xC4EE,0xF5DF,INVALC,0xC57E,0xF6F4,0xC57D,INVALC,0xF7EA, 0xC5F5,0xC5F6, /* Range 0x7678 - 0x769E, array index: 0x26E4 */ 0xACD1,0xCFDE,INVALC,0xB56E,0xB56F,0xA5D5,0xA6CA,0xCA47, INVALC,0xCB71,0xA86D,INVALC,0xAABA,INVALC,0xACD2,0xACD3, 0xACD4,0xD6A6,0xD2CB,0xAF6F,INVALC,INVALC,0xB2AE,0xD6A5, INVALC,INVALC,0xDAB8,0xB571,INVALC,0xDAB7,0xB570,INVALC, INVALC,0xDED5,0xBD4A,0xE6BB,0xE6B8,0xE6B9,0xE6BA, /* Range 0x76AA - 0x76B0, array index: 0x270B */ 0xF471,0xF470,INVALC,0xF6F5,0xA5D6,0xCD75,0xAF70, /* Range 0x76BA - 0x76D4, array index: 0x2712 */ 0xBD4B,0xEA74,INVALC,0xF052,0xF472,0xA5D7,INVALC,INVALC, 0xAABB,0xACD7,0xCFDF,0xACD8,0xACD6,INVALC,0xACD5,0xD2CC, 0xAF71,INVALC,INVALC,0xAF72,0xAF73,INVALC,INVALC,INVALC, 0xB2B0,0xD6A7,0xB2AF, /* Range 0x76DA - 0x76FE, array index: 0x272D */ 0xDAB9,0xB2B1,0xB573,0xDED7,0xB7F8,0xB7F9,INVALC,0xBAC9, INVALC,0xBACA,0xBD4C,0xBF64,0xEA75,0xBF63,INVALC,0xED79, 0xC0FA,INVALC,0xF053,0xF473,0xA5D8,0xA86E,0xCD78,0xCD77, 0xAABC,0xCD76,0xAABD,0xCD79,INVALC,0xCFE5,0xACDB,0xACDA, 0xCFE7,0xCFE6,0xACDF,INVALC,0xACDE, /* Range 0x7701 - 0x770B, array index: 0x2752 */ 0xACD9,INVALC,0xCFE1,0xCFE2,0xCFE3,INVALC,0xACE0,0xCFE0, 0xACDC,0xCFE4,0xACDD, /* Range 0x7710 - 0x7729, array index: 0x275D */ 0xD2CF,0xD2D3,0xD2D1,0xD2D0,INVALC,0xD2D4,INVALC,INVALC, INVALC,0xD2D5,0xD2D6,0xD2CE,INVALC,0xD2CD,INVALC,0xAF75, 0xAF76,INVALC,0xD2D7,0xD2D2,INVALC,0xD6B0,INVALC,0xD2D8, 0xAF77,0xAF74, /* Range 0x772F - 0x773E, array index: 0x2777 */ 0xD6A9,INVALC,0xD6AB,0xD6AC,0xD6AE,0xD6AD,0xD6B2,0xB2B5, 0xB2B2,0xB2B6,0xD6A8,0xB2B7,0xD6B1,0xB2B4,0xD6AF,0xB2B3, /* Range 0x7744 - 0x774F, array index: 0x2787 */ 0xDABC,0xDABE,0xDABA,0xDABB,INVALC,INVALC,0xDABF,0xDAC1, 0xDAC2,0xDABD,0xDAC0,0xB574, /* Range 0x7752 - 0x776F, array index: 0x2793 */ 0xDEDB,INVALC,0xDEE0,0xDED8,0xDEDC,INVALC,INVALC,0xDEE1, 0xDEDD,0xB7FA,0xB843,INVALC,0xB7FD,0xDED9,0xDEDA,0xBACE, 0xB846,0xB7FE,INVALC,0xB844,0xB7FC,0xDEDF,0xB845,0xDEDE, 0xB841,0xB7FB,0xB842,0xDEE2,0xE2E6,0xE2E8, /* Range 0x777C - 0x7791, array index: 0x27B1 */ 0xE2E3,0xBACC,0xE2E9,0xBACD,0xE2E7,0xE2E2,0xE2E5,0xE2EA, 0xBACB,0xE2E4,INVALC,0xBD4E,0xE6BF,0xE6BE,INVALC,0xBD51, 0xBD4F,0xE6BC,0xBD4D,0xE6BD,INVALC,0xBD50, /* Range 0x7797 - 0x77BF, array index: 0x27C7 */ 0xEAA1,INVALC,0xEA7E,0xEA76,0xEA7A,0xEA79,0xEA77,0xBF66, 0xBF67,0xBF65,0xEA78,0xEA7B,0xEA7C,INVALC,0xBF68,INVALC, 0xC140,0xEDA3,INVALC,0xC0FC,0xED7B,0xC0FE,0xC141,INVALC, INVALC,0xC0FD,0xEDA2,0xED7C,0xC0FB,0xEDA1,0xED7A,0xED7E, 0xED7D,INVALC,INVALC,0xF055,0xC2A4,0xC2A5,0xC2A2,INVALC, 0xC2A3, /* Range 0x77C9 - 0x77FD, array index: 0x27F0 */ 0xF279,0xF27A,INVALC,0xF474,0xF477,0xF475,0xF476,0xF5E0, INVALC,INVALC,0xC4EF,0xF7EB,0xF8B4,INVALC,0xC5F7,0xF8F8, 0xF8F9,0xC666,0xA5D9,0xACE1,INVALC,0xDAC3,INVALC,0xDEE3, INVALC,0xA5DA,0xA86F,INVALC,0xAABE,INVALC,0xCFE8,0xCFE9, 0xAF78,INVALC,INVALC,0xDAC4,0xB575,0xB847,0xC142,0xEDA4, 0xF27C,0xF478,0xA5DB,INVALC,INVALC,INVALC,0xCDA1,0xCD7A, 0xCD7C,0xCD7E,0xCD7D,0xCD7B,0xAABF, /* Range 0x7802 - 0x7806, array index: 0x2825 */ 0xACE2,0xCFF2,INVALC,0xCFED,0xCFEA, /* Range 0x780C - 0x7814, array index: 0x282A */ 0xACE4,0xACE5,0xCFF0,0xCFEF,0xCFEE,0xCFEB,0xCFEC,0xCFF3, 0xACE3, /* Range 0x781D - 0x7838, array index: 0x2833 */ 0xAF7C,INVALC,0xAFA4,0xAFA3,0xD2E1,0xD2DB,0xD2D9,INVALC, 0xAFA1,0xD6B9,0xAF7A,0xD2DE,0xD2E2,0xD2E4,0xD2E0,0xD2DA, 0xAFA2,0xD2DF,0xD2DD,0xAF79,0xD2E5,0xAFA5,0xD2E3,0xAF7D, 0xD2DC,INVALC,0xAF7E,0xAF7B, /* Range 0x7848 - 0x7852, array index: 0x284F */ 0xD6B3,0xD6B5,0xD6B7,INVALC,0xD6B8,0xD6B6,0xB2BA,INVALC, 0xD6BB,INVALC,0xD6B4, /* Range 0x785C - 0x7871, array index: 0x285A */ 0xDAC8,0xB576,0xDAD0,INVALC,0xDAC5,INVALC,0xDAD1,INVALC, 0xDAC6,0xDAC7,INVALC,INVALC,0xDACF,0xDACE,0xDACB,0xB2B8, 0xB577,0xDAC9,0xDACC,0xB578,0xDACD,0xDACA, /* Range 0x787B - 0x7889, array index: 0x2870 */ 0xDEF2,0xB84E,INVALC,0xE2F0,0xB851,0xDEF0,INVALC,INVALC, 0xDEED,0xDEE8,0xDEEA,0xDEEB,0xDEE4,INVALC,0xB84D, /* Range 0x7891 - 0x78AD, array index: 0x287F */ 0xB84F,INVALC,0xB850,0xDEE6,0xDEE9,0xDEF1,0xB84A,0xB84B, 0xDEEF,0xDEE5,INVALC,INVALC,INVALC,0xE2F2,0xBAD0,0xE2F4, 0xDEEC,0xE2F6,0xBAD4,0xE2F7,0xE2F3,INVALC,0xBAD1,0xE2EF, 0xBAD3,0xE2EC,0xE2F1,0xE2F5,0xE2EE, /* Range 0x78B0 - 0x78B4, array index: 0x289C */ 0xB849,INVALC,0xE2EB,0xBAD2,0xE2ED, /* Range 0x78BA - 0x78BE, array index: 0x28A1 */ 0xBD54,0xE6C1,0xBD58,INVALC,0xBD56, /* Range 0x78C1 - 0x78D5, array index: 0x28A6 */ 0xBACF,INVALC,0xE6C8,0xE6C9,0xBD53,INVALC,INVALC,0xE6C7, 0xE6CA,0xBD55,0xBD52,0xE6C3,0xE6C0,0xE6C5,0xE6C2,0xBD59, 0xE6C4,INVALC,INVALC,0xE6C6,0xBD57, /* Range 0x78DA - 0x78F4, array index: 0x28BB */ 0xBF6A,0xEAA8,INVALC,0xEAA2,0xEAA6,0xEAAC,0xEAAD,0xEAA9, 0xEAAA,0xEAA7,INVALC,0xEAA4,INVALC,0xBF6C,0xBF69,0xEAA3, 0xEAA5,INVALC,0xBF6B,0xEAAB,INVALC,0xC146,INVALC,INVALC, 0xEDAA,0xEDA5,0xC145, /* Range 0x78F7 - 0x7905, array index: 0x28D6 */ 0xC143,INVALC,0xEDAC,0xC144,0xEDA8,0xEDA9,0xEDA6,0xEDAD, 0xF056,INVALC,0xC147,0xEDA7,INVALC,0xEDAE,0xEDAB, /* Range 0x790E - 0x7914, array index: 0x28E5 */ 0xC2A6,INVALC,0xF05B,0xF05D,0xF05C,0xF058,0xF059, /* Range 0x7919 - 0x791E, array index: 0x28EC */ 0xC3AA,INVALC,0xF27E,0xF2A2,0xF27D,0xF2A4, /* Range 0x7921 - 0x7931, array index: 0x28F2 */ 0xF2A1,INVALC,0xF47A,0xF47D,0xF479,0xC471,0xF47B,0xF47C, 0xF47E,0xC472,0xC474,0xC473,0xF5E1,INVALC,0xF5E3,INVALC, 0xF5E2, /* Range 0x7938 - 0x796D, array index: 0x2903 */ 0xF8B5,0xF8FA,0xA5DC,INVALC,INVALC,0xCB72,0xAAC0,0xCDA3, 0xAAC1,0xAAC2,0xCDA2,INVALC,0xCFF8,0xCFF7,0xACE6,0xACE9, 0xACE8,0xACE7,0xCFF4,0xCFF6,0xCFF5,INVALC,INVALC,0xD2E8, 0xAFA7,0xD2EC,0xD2EB,0xD2EA,0xD2E6,0xAFA6,0xAFAA,0xAFAD, INVALC,INVALC,0xAFAE,0xD2E7,0xD2E9,0xAFAC,0xAFAB,0xAFA9, 0xAFA8,0xD6C2,INVALC,0xD6C0,0xD6BC,0xB2BB,INVALC,0xD6BD, 0xB2BC,0xD6BE,0xD6BF,0xD6C1,INVALC,0xB2BD, /* Range 0x7970 - 0x7974, array index: 0x2939 */ 0xDAD5,INVALC,0xDAD4,0xDAD3,0xDAD2, /* Range 0x7979 - 0x7982, array index: 0x293E */ 0xDEF6,0xB852,INVALC,0xDEF3,0xDEF5,INVALC,0xB853,INVALC, 0xB854,0xDEF4, /* Range 0x798A - 0x79C1, array index: 0x2948 */ 0xE2F9,0xE2FA,INVALC,0xBAD7,0xBAD5,0xBAD6,0xE343,INVALC, 0xE342,0xE2FE,0xE2FD,0xE2FC,0xE2FB,0xE340,0xE2F8,INVALC, 0xE6CB,0xE6D0,0xE6CE,INVALC,INVALC,INVALC,0xE6CD,0xE6CC, 0xE6CF,INVALC,0xEAAE,INVALC,0xBF6D,0xC148,0xEDB0,INVALC, 0xC149,0xEDAF,0xF05F,0xF05E,0xC2A7,INVALC,0xF2A5,0xC3AB, 0xF4A1,0xC5A1,0xF6F7,INVALC,0xF8B7,0xF8B6,0xC9A8,0xACEA, 0xACEB,0xD6C3,INVALC,0xB856,0xA5DD,0xA872,0xA871,0xA870, /* Range 0x79CB - 0x79EE, array index: 0x2980 */ 0xACEE,INVALC,0xCFFA,0xCFFD,0xCFFB,INVALC,0xACEC,0xACED, INVALC,INVALC,0xCFF9,0xCFFC,INVALC,0xAFB5,INVALC,INVALC, INVALC,0xD2F3,0xD2F5,0xD2F4,0xAFB2,0xD2EF,INVALC,INVALC, 0xAFB0,0xAFAF,INVALC,0xAFB3,0xAFB1,INVALC,0xAFB4,0xD2F2, 0xD2ED,0xD2EE,0xD2F1,0xD2F0, /* Range 0x79F6 - 0x79FB, array index: 0x29A4 */ 0xD6C6,0xD6C7,0xD6C5,INVALC,0xD6C4,0xB2BE, /* Range 0x7A00 - 0x7A05, array index: 0x29AA */ 0xB57D,INVALC,0xDAD6,0xDAD8,0xDADA,0xB57C, /* Range 0x7A08 - 0x7A22, array index: 0x29B0 */ 0xB57A,INVALC,0xDAD7,0xB57B,0xDAD9,0xB579,INVALC,INVALC, 0xDF41,0xDEF7,0xDEFA,0xDEFE,0xB85A,0xDEFC,INVALC,0xDEFB, 0xDEF8,0xDEF9,0xB858,0xDF40,0xB857,INVALC,0xB85C,0xB85B, 0xB859,INVALC,0xDEFD, /* Range 0x7A2E - 0x7A31, array index: 0x29CB */ 0xBAD8,0xE347,0xE346,0xBAD9, /* Range 0x7A39 - 0x7A40, array index: 0x29CF */ 0xE6D2,INVALC,0xBD5F,0xBD5B,0xBD5D,INVALC,0xBD5A,0xBD5C, /* Range 0x7A44 - 0x7A4E, array index: 0x29D7 */ 0xEAAF,INVALC,0xBF70,0xEAB1,0xEAB0,INVALC,0xE345,0xBF72, 0xBF71,0xBF6E,0xBF6F, /* Range 0x7A54 - 0x7A62, array index: 0x29E2 */ 0xEDB5,INVALC,0xEDB3,0xC14A,0xEDB4,INVALC,0xEDB6,0xEDB2, 0xEDB1,INVALC,INVALC,0xF060,0xC2AA,0xC2A8,0xC2A9, /* Range 0x7A67 - 0x7A99, array index: 0x29F1 */ 0xF2A6,0xF2A7,0xC3AD,INVALC,0xC3AC,0xF4A3,0xF4A4,0xF4A2, INVALC,0xF6F8,0xF6F9,INVALC,INVALC,0xA5DE,0xCA48,0xA873, INVALC,0xCDA5,0xAAC6,0xAAC5,0xCDA6,INVALC,INVALC,0xD040, 0xACEF,0xCFFE,0xACF0,INVALC,INVALC,0xAFB6,0xD2F8,0xD2F6, 0xD2FC,0xAFB7,0xD2F7,0xD2FB,0xD2F9,0xD2FA,INVALC,INVALC, 0xD6C8,0xD6CA,INVALC,0xB2BF,INVALC,0xD6C9,0xB2C0,0xB5A2, 0xB5A1,0xB57E,0xDADB, /* Range 0x7A9E - 0x7AA3, array index: 0x2A24 */ 0xDF44,0xB85D,0xB85E,INVALC,0xDF43,0xDF42, /* Range 0x7AA8 - 0x7ACB, array index: 0x2A2A */ 0xE34A,0xBADB,0xBADA,0xE34B,0xE34C,INVALC,0xBD61,0xBD60, INVALC,0xEAB5,0xE6D3,0xE6D5,0xE6D4,0xEAB4,0xEAB2,0xEAB6, 0xEAB3,INVALC,0xBF73,INVALC,INVALC,INVALC,0xEDB7,0xC14B, 0xEDB8,0xEDB9,INVALC,INVALC,0xC2AB,0xC2AC,INVALC,0xC475, INVALC,INVALC,0xC5D1,0xA5DF, /* Range 0x7ADF - 0x7AE6, array index: 0x2A4E */ 0xB3BA,0xB3B9,INVALC,INVALC,0xB5A4,0xDADD,0xB5A3,0xDADC, /* Range 0x7AEB - 0x7AEF, array index: 0x2A56 */ 0xDF45,INVALC,0xBADC,0xE34D,0xBADD, /* Range 0x7AF6 - 0x7B13, array index: 0x2A5B */ 0xC476,0xF4A5,INVALC,0xA6CB,0xAAC7,0xCDA7,INVALC,0xACF2, INVALC,0xACF1,0xD042,0xD043,INVALC,INVALC,0xD340,0xD342, 0xAFB9,INVALC,0xD344,0xD347,0xD345,INVALC,INVALC,INVALC, 0xD346,0xD343,0xD2FE,0xAFBA,0xD348,0xD341, /* Range 0x7B18 - 0x7B35, array index: 0x2A79 */ 0xD6D3,0xB2C6,0xD6DC,0xB2C3,INVALC,0xD6D5,0xB2C7,INVALC, 0xB2C1,INVALC,0xD6D0,0xD6DD,0xD6D1,0xD6CE,0xB2C5,INVALC, 0xB2C2,INVALC,0xD6D4,0xD6D7,0xB2C4,0xD6D8,0xB2C8,0xD6D9, 0xD6CF,0xD6D6,0xD6DA,0xD6D2,0xD6CD,0xD6CB, /* Range 0x7B44 - 0x7B58, array index: 0x2A97 */ 0xDAE0,0xDAE6,0xB5A7,0xD6CC,0xDAE1,0xB5A5,0xDADE,0xB5AC, 0xDAE2,0xB5AB,0xDAE3,0xB5AD,0xB5A8,0xB5AE,0xB5A9,INVALC, 0xB5AA,INVALC,0xB5A6,INVALC,0xDAE5, /* Range 0x7B60 - 0x7B69, array index: 0x2AAC */ 0xB861,0xDF50,INVALC,0xDF53,0xDF47,0xDF4C,0xDF46,0xB863, INVALC,0xDF4A, /* Range 0x7B6D - 0x7B78, array index: 0x2AB6 */ 0xDF48,0xB862,INVALC,0xDF4F,0xDF4E,0xDF4B,0xDF4D,0xDF49, 0xBAE1,0xDF52,0xB85F,0xDF51, /* Range 0x7B84 - 0x7BA1, array index: 0x2AC2 */ 0xBAE8,0xE358,INVALC,0xBAE7,0xE34E,INVALC,0xE350,0xBAE0, 0xE355,0xE354,0xE357,0xBAE5,0xE352,0xE351,INVALC,INVALC, 0xBAE4,0xBADF,0xE353,0xBAE2,0xE359,0xE35B,INVALC,0xE356, 0xE34F,0xBAE3,INVALC,INVALC,0xBD69,0xBADE, /* Range 0x7BB4 - 0x7BB9, array index: 0x2AE0 */ 0xBD65,0xE6DE,INVALC,0xE6D6,0xBAE6,0xE6DC, /* Range 0x7BC6 - 0x7BCE, array index: 0x2AE6 */ 0xBD66,0xBD67,INVALC,0xBF76,0xE6DD,0xE6D7,0xBD6A,INVALC, 0xE6DA, /* Range 0x7BD4 - 0x7BEB, array index: 0x2AEF */ 0xEAC0,0xEABB,INVALC,INVALC,0xEAC5,0xBF74,0xEABD,0xBF78, 0xEAC3,0xEABA,0xEAB7,0xEAC6,0xC151,0xBF79,0xEAC2,0xEAB8, 0xBF77,0xEABC,0xBF7B,0xEAB9,0xEABE,0xBF7A,0xEAC1,0xEAC4, /* Range 0x7BF0 - 0x7C11, array index: 0x2B07 */ 0xEDCB,0xEDCC,0xEDBC,0xEDC3,0xEDC1,INVALC,INVALC,0xC14F, 0xEDC8,0xEABF,INVALC,0xEDBF,INVALC,0xEDC9,0xC14E,0xEDBE, 0xEDBD,0xEDC7,0xEDC4,0xEDC6,INVALC,0xEDBA,0xEDCA,0xC14C, INVALC,0xEDC5,0xEDCE,0xEDC2,0xC150,0xC14D,0xEDC0,0xEDBB, 0xEDCD,0xBF75, /* Range 0x7C1C - 0x7C2D, array index: 0x2B29 */ 0xF061,0xF067,0xC2B0,0xF065,0xF064,0xC2B2,0xF06A,0xC2B1, INVALC,0xF06B,0xF068,0xC2AE,0xF069,0xF062,0xC2AF,0xC2AD, 0xF2AB,0xF066, /* Range 0x7C37 - 0x7C40, array index: 0x2B3B */ 0xC3B2,0xC3B0,0xF2AA,INVALC,0xF2AC,0xF2A9,0xC3B1,0xC3AE, 0xC3AF,0xC3B3, /* Range 0x7C45 - 0x7C4D, array index: 0x2B45 */ 0xF4AA,INVALC,0xF4A9,0xF4A7,0xF4A6,0xF4A8,INVALC,0xC477, 0xC479, /* Range 0x7C57 - 0x7C7A, array index: 0x2B4E */ 0xF6FA,INVALC,0xF6FC,0xF6FE,0xF6FD,0xF6FB,INVALC,INVALC, 0xC5A3,0xC5A2,INVALC,INVALC,0xC5D3,0xC5D2,0xC5D4,0xF7ED, 0xF7EC,INVALC,0xF8FB,0xF8B8,0xF8FC,0xC658,INVALC,0xC659, 0xF96D,INVALC,INVALC,0xC67E,0xA6CC,INVALC,0xCDA8,INVALC, INVALC,0xD045,0xD046,0xD044, /* Range 0x7C7D - 0x7C8D, array index: 0x2B72 */ 0xACF3,INVALC,0xD047,0xD048,0xD049,INVALC,INVALC,0xD349, 0xD34F,INVALC,INVALC,0xD34D,0xAFBB,0xD34B,INVALC,0xD34C, 0xD34E, /* Range 0x7C91 - 0x7C98, array index: 0x2B83 */ 0xD34A,0xB2C9,INVALC,0xD6DE,0xB2CB,0xD6E0,0xB2CA,0xD6DF, /* Range 0x7C9E - 0x7CA5, array index: 0x2B8B */ 0xDAE8,0xB5AF,INVALC,0xDAEA,0xDAE7,0xD6E1,INVALC,0xB5B0, /* Range 0x7CAF - 0x7CBF, array index: 0x2B93 */ 0xDF56,INVALC,0xB864,0xDF54,0xB865,0xDF55,0xB866,INVALC, INVALC,INVALC,0xBAE9,0xE361,0xE35E,0xE360,0xBAEA,0xBAEB, 0xE35F, /* Range 0x7CC8 - 0x7CE2, array index: 0x2BA4 */ 0xE6E0,INVALC,0xBD6B,0xE6E2,0xE6E1,INVALC,0xA261,INVALC, 0xEACA,0xEACB,0xEAC7,INVALC,0xEAC8,0xBF7C,0xBF7D,0xEAC9, INVALC,0xC157,INVALC,INVALC,0xC153,0xC158,0xC154,0xC156, 0xC152,INVALC,0xC155, /* Range 0x7CEC - 0x7CF8, array index: 0x2BBF */ 0xF2AD,INVALC,0xF4AB,0xC47A,0xC47B,0xF741,0xF5E6,INVALC, 0xF740,INVALC,0xF8FD,0xF9A4,0xA6CD, /* Range 0x7CFD - 0x7D22, array index: 0x2BCC */ 0xCDA9,0xAAC8,INVALC,0xACF6,0xD04C,0xACF4,0xD04A,0xACF9, 0xACF5,0xACFA,0xACF8,0xD04B,0xACF7,0xAFBF,0xAFBE,0xD35A, 0xAFC7,0xD353,0xD359,0xAFC3,0xD352,0xD358,0xD356,0xAFC2, 0xAFC4,0xD355,0xAFBD,0xD354,0xAFC8,0xAFC5,0xAFC9,0xAFC6, 0xD351,0xD350,0xD357,0xAFC0,0xAFBC,0xAFC1, /* Range 0x7D28 - 0x7D47, array index: 0x2BF2 */ 0xD6F0,0xD6E9,INVALC,0xB5B5,0xD6E8,INVALC,0xB2CF,0xB2D6, 0xB2D3,0xB2D9,0xB2D8,0xB2D4,INVALC,0xD6E2,0xD6E5,INVALC, 0xD6E4,0xB2D0,0xD6E6,0xD6EF,0xB2D1,0xD6E3,0xD6EC,0xD6ED, 0xB2D2,0xD6EA,0xB2D7,0xB2CD,0xB2D5,0xD6E7,0xB2CC,0xD6EB, /* Range 0x7D4E - 0x7D73, array index: 0x2C12 */ 0xDAFB,0xDAF2,0xB5B2,0xDAF9,0xDAF6,0xDAEE,0xDAF7,0xB5B4, 0xDAEF,INVALC,0xDAEB,INVALC,INVALC,0xB86C,0xDAF4,INVALC, 0xB5B1,0xDAFA,INVALC,0xB5B8,0xB5BA,0xDAED,INVALC,INVALC, 0xB5B9,0xDAF0,0xB5B3,0xDAF8,0xDAF1,0xDAF5,INVALC,0xDAF3, 0xB5B6,0xDAEC,0xB5BB,0xB2CE,0xB5B7,0xB5BC, /* Range 0x7D79 - 0x7D96, array index: 0x2C38 */ 0xB868,0xDF5D,0xDF5F,0xDF61,0xDF65,INVALC,0xDF5B,0xDF59, 0xB86A,INVALC,0xDF60,0xDF64,0xDF5C,0xDF58,INVALC,0xDF57, INVALC,INVALC,INVALC,0xDF62,0xDF5A,0xDF5E,0xB86B,INVALC, 0xB869,0xDF66,0xB867,0xDF63,INVALC,0xE372, /* Range 0x7D9C - 0x7DCE, array index: 0x2C56 */ 0xBAEE,0xE36A,0xBD78,0xE374,0xBAF1,0xE378,0xBAF7,0xE365, INVALC,INVALC,0xE375,0xE362,INVALC,0xE377,0xE366,INVALC, 0xBAFE,0xBAFB,0xE376,0xE370,0xBAED,0xBAF5,0xBAF4,INVALC, 0xBAF3,0xBAF9,INVALC,0xE363,0xBAFA,0xE371,0xBAF6,0xBAEC, 0xE373,0xBAEF,0xBAF0,0xBAF8,0xE368,0xE367,0xE364,INVALC, 0xE36C,0xE369,0xE36D,0xBAFD,INVALC,0xE379,0xBAF2,0xE36E, 0xE36F,INVALC,0xE36B, /* Range 0x7DD7 - 0x7DFB, array index: 0x2C89 */ 0xE6E7,0xBD70,0xBD79,0xBD75,0xE6E4,INVALC,0xBD72,0xBD76, 0xE6F0,0xBD6C,0xE6E8,INVALC,0xBD74,INVALC,INVALC,0xE6EB, 0xE6E6,0xBD73,0xBD77,0xE6E5,INVALC,0xBD71,INVALC,0xE6EF, 0xBD6E,0xE6EE,0xE6ED,0xBD7A,0xE572,0xBD6D,INVALC,0xE6EC, 0xE6E3,INVALC,0xBD7B,0xE6EA,0xBD6F, /* Range 0x7E08 - 0x7E49, array index: 0x2CAE */ 0xBFA2,0xBFA7,0xBF7E,0xEAD8,0xEACF,0xEADB,0xEAD3,0xEAD9, 0xBFA8,0xBFA1,0xEACC,0xEAD2,0xEADC,0xEAD5,0xEADA,0xEACE, INVALC,INVALC,0xEAD6,0xBFA3,0xEAD4,0xBFA6,0xBFA5,0xEAD0, 0xEAD1,0xEACD,0xEAD7,0xBFA4,0xEADE,0xEADD,INVALC,INVALC, INVALC,0xEDDA,0xEDD6,0xC15F,INVALC,0xEDD0,0xC159,0xC169, 0xEDDC,0xC161,0xC15D,0xEDD3,0xC164,0xC167,0xEDDE,0xC15C, 0xEDD5,0xC165,0xEDE0,0xEDDD,0xEDD1,0xC160,0xC15A,0xC168, 0xEDD8,0xC163,0xEDD2,0xC15E,0xEDDF,0xC162,0xC15B,0xEDD9, 0xC166,0xEDD7, /* Range 0x7E50 - 0x7E63, array index: 0x2CF0 */ 0xF06E,0xF074,0xC2B9,0xF077,0xC2B4,0xC2B5,0xF06F,0xF076, 0xF071,0xC2BA,0xC2B7,INVALC,0xF06D,INVALC,0xC2B6,0xF073, 0xF075,0xC2B8,0xF072,0xF070, /* Range 0x7E68 - 0x7E9C, array index: 0x2D04 */ 0xF2B8,0xC3B7,0xC3B8,0xC3B4,INVALC,0xC3B5,INVALC,0xF2B4, 0xF2B2,INVALC,0xF2B6,0xC3BA,0xF2B7,0xF2B0,0xF2AF,0xF2B3, 0xF2B1,0xC3B6,0xF2B5,0xF4AC,0xC47E,0xC47D,0xF4AD,INVALC, 0xF4AF,0xF4AE,0xC4A1,INVALC,INVALC,INVALC,0xF5EB,0xF5E8, 0xF5E9,INVALC,0xF5E7,0xF5EA,0xC4F2,0xF5EC,INVALC,0xC4F1, INVALC,0xF742,INVALC,0xC5D5,0xC5D7,0xF7EE,0xC5D6,0xF8B9, 0xF940,0xF942,0xF8FE,0xF941,0xC66C, /* Range 0x7F36 - 0x7F45, array index: 0x2D39 */ 0xA6CE,INVALC,0xACFB,0xD26F,0xAFCA,INVALC,INVALC,0xB2DA, 0xDAFC,0xDAFD,INVALC,INVALC,INVALC,0xEADF,0xC16A,0xEDE1, /* Range 0x7F48 - 0x7F55, array index: 0x2D49 */ 0xC2BB,INVALC,0xF2BA,0xF2B9,0xC4A2,0xF5ED,INVALC,0xF743, 0xC5F8,0xCA49,INVALC,INVALC,0xAAC9,0xA875, /* Range 0x7F5B - 0x7F7F, array index: 0x2D57 */ 0xD360,0xD35B,0xD35F,0xD35D,0xAFCB,0xD35E,0xD35C,INVALC, 0xD6F1,INVALC,0xDAFE,0xDB40,0xDF69,0xDF6A,0xB86E,0xB86F, 0xDF68,0xDF6B,0xDF67,0xB86D,INVALC,0xBB40,INVALC,0xB870, 0xE37A,INVALC,0xBD7C,0xE6F1,0xBD7D,INVALC,0xBFA9,0xEAE2, 0xEAE0,0xEAE1,0xEDE4,0xEDE3,0xEDE2, /* Range 0x7F83 - 0x7FD7, array index: 0x2D7C */ 0xF2BB,INVALC,0xC3B9,0xF2BC,0xF744,0xC5F9,0xF8BA,0xA6CF, 0xAACB,0xAACA,0xD04F,0xACFC,INVALC,INVALC,0xD04E,0xD362, INVALC,0xAFCC,0xD6F2,0xD361,INVALC,INVALC,INVALC,0xB2DC, 0xD6F5,0xD6F3,0xD6F4,0xB2DB,INVALC,0xDB42,0xDB43,0xDB41, INVALC,0xB873,0xDF6D,0xDF6C,0xDF6E,0xB872,0xB871,INVALC, INVALC,0xE6F2,0xE6F4,INVALC,0xBD7E,0xE6F3,0xEAE3,0xBFAA, 0xF079,INVALC,0xF078,0xC3BB,0xF2BD,0xC3BD,0xC3BC,0xF4B0, 0xF5EE,0xC4F3,0xA6D0,0xD050,0xACFD,0xD365,0xAFCE,0xD364, 0xD363,INVALC,0xAFCD,INVALC,0xD6FB,INVALC,0xD6FD,0xD6F6, 0xD6F7,0xB2DD,0xD6F8,0xB2DE,0xD6FC,0xD6F9,0xD6FA,0xB2DF, INVALC,0xB5BE,0xB5BF,INVALC,0xDB44, /* Range 0x7FDB - 0x8021, array index: 0x2DD1 */ 0xDF6F,0xDF70,INVALC,0xE37E,0xBB43,0xBB41,0xBB42,0xE37B, 0xE37C,INVALC,0xE37D,0xE6F9,INVALC,0xE6FA,0xBDA1,0xE6F7, 0xE6F6,0xE6F8,0xE6F5,0xBFAD,0xEAE4,0xBFAB,0xBFAC,0xEDE6, 0xC16B,0xEDE5,0xEFA8,INVALC,0xF07A,0xF07B,0xC2BC,INVALC, 0xC2BD,0xC16C,0xF2BE,0xF2BF,0xF4B1,0xC4A3,0xA6D1,INVALC, 0xA6D2,0xACFE,0xAACC,0xAFCF,0xD051,INVALC,INVALC,INVALC, 0xB5C0,0xA6D3,0xAD41,0xD052,0xD053,0xAD40,0xAD42,0xA6D4, INVALC,0xD054,0xAFD1,0xD366,0xAFD3,0xAFD0,0xAFD2,INVALC, 0xD741,0xB2E0,INVALC,0xD740,0xD6FE,INVALC,0xDF71, /* Range 0x8026 - 0x802C, array index: 0x2E18 */ 0xBDA2,INVALC,0xBFAE,0xEAE6,0xEAE5,INVALC,0xEDE7, /* Range 0x8033 - 0x803F, array index: 0x2E1F */ 0xA6D5,0xCB73,0xCDAA,0xAD43,0xD055,INVALC,0xD368,INVALC, INVALC,INVALC,0xAFD4,0xD367,0xAFD5, /* Range 0x8046 - 0x804A, array index: 0x2E2C */ 0xB2E2,0xD742,0xD744,INVALC,0xB2E1, /* Range 0x804F - 0x8052, array index: 0x2E31 */ 0xDB46,0xDB47,0xDB45,0xB5C1, /* Range 0x805A - 0x805E, array index: 0x2E35 */ 0xBB45,INVALC,0xE3A3,0xE3A2,0xBB44, /* Range 0x806F - 0x807F, array index: 0x2E3A */ 0xC170,0xC16F,0xC16D,0xC16E,0xC171,INVALC,0xF07C,0xC2BF, 0xC2BE,0xF2C0,0xF4B2,INVALC,INVALC,INVALC,0xC5A5,0xC5A4, 0xA6D6, /* Range 0x8082 - 0x80B5, array index: 0x2E4B */ 0xD1FB,INVALC,0xB877,0xB5C2,0xB876,0xBB46,INVALC,0xA6D7, 0xC9A9,0xA6D8,0xA6D9,INVALC,INVALC,0xCDAB,0xCB76,INVALC, 0xCB77,0xA877,INVALC,0xCB74,0xA876,INVALC,0xA879,0xCB75, 0xA87B,0xA87A,0xCB78,0xA878,INVALC,INVALC,INVALC,0xAAD1, 0xAACF,0xCDAD,INVALC,0xAACE,INVALC,INVALC,INVALC,0xAAD3, 0xAAD5,0xAAD2,INVALC,0xCDB0,0xCDAC,0xAAD6,INVALC,0xAAD0, 0xA87C,INVALC,0xAAD4,0xCDAF, /* Range 0x80C2 - 0x80E6, array index: 0x2E7F */ 0xD05B,0xAD47,0xAD48,0xD05D,INVALC,0xD057,0xD05A,0xD063, 0xD061,INVALC,0xAD49,0xD067,0xAD4C,0xD064,0xD05C,0xD059, INVALC,INVALC,0xDB49,0xD062,0xAD44,0xD065,0xD056,0xD05F, 0xAD46,0xAD4B,0xD060,0xAD4F,0xAD4D,INVALC,0xD058,0xAD4A, INVALC,0xD05E,0xAD4E,0xAD45,0xD066, /* Range 0x80ED - 0x810A, array index: 0x2EA4 */ 0xAFDA,INVALC,0xAFE3,0xAFD8,0xAFD6,0xD36A,0xAFDE,0xAFDB, 0xD36C,INVALC,INVALC,0xAFDD,0xD36B,0xD369,0xD36E,0xAFE2, 0xAFE0,0xDB48,INVALC,0xD36F,0xD36D,0xAFD7,INVALC,INVALC, 0xAFD9,0xAFDC,INVALC,0xAFDF,INVALC,0xAFE1, /* Range 0x8115 - 0x8130, array index: 0x2EC2 */ 0xD74E,0xB2E4,INVALC,0xD745,0xD747,INVALC,0xD748,INVALC, 0xD750,0xD74C,0xD74A,INVALC,0xD74D,0xD751,0xB2E5,0xB2E9, 0xD746,INVALC,0xD74F,INVALC,0xB2E7,INVALC,0xB2E6,0xD74B, 0xD749,INVALC,0xB2E3,0xB2E8, /* Range 0x8143 - 0x8155, array index: 0x2EDE */ 0xDB4A,0xDFA1,INVALC,0xB5C9,0xDB4E,INVALC,INVALC,0xDB4B, 0xB5C5,0xB5CB,0xDB50,0xB5C7,0xDB4D,0xBB47,0xB5C6,0xDB4C, 0xB5CC,0xB5C4,0xB5C3, /* Range 0x815E - 0x817A, array index: 0x2EF1 */ 0xDF7B,INVALC,0xDF73,0xDFA2,0xDF78,INVALC,0xDF72,0xB87B, 0xB8A3,0xDF7D,INVALC,0xDF76,INVALC,0xB87E,INVALC,INVALC, 0xB87C,0xDF7E,0xB879,0xB878,0xDF79,0xB87D,0xB5CD,INVALC, 0xDF7C,0xDF74,0xB87A,0xB8A1,0xB8A2, /* Range 0x817F - 0x818F, array index: 0x2F0E */ 0xBB4C,0xBB48,INVALC,0xBB4D,0xE3A6,INVALC,INVALC,0xE3A5, 0xE3A7,0xBB4A,0xE3A4,0xBB4B,0xE3AA,0xE3A9,0xE3A8,INVALC, 0xBB49, /* Range 0x8195 - 0x81D2, array index: 0x2F1F */ 0xE741,INVALC,0xE744,0xBDA8,0xE743,0xBDA7,0xBDA3,0xBDA4, 0xBDA5,0xE740,0xE6FE,0xBDA6,INVALC,0xE742,0xE6FD,INVALC, INVALC,0xEAE9,0xEAF3,0xBFB1,0xBFB0,INVALC,0xEAED,0xEAEF, INVALC,0xEAEA,INVALC,0xEAEE,0xEAE8,0xEAF1,0xBFAF,0xEAF0, 0xEAEC,INVALC,0xEAF2,INVALC,0xEAEB,0xC174,0xEDE8,0xEDEE, 0xC178,0xC17A,0xC177,0xC176,INVALC,0xC175,0xC173,0xEDE9, 0xEDEC,0xC172,0xEDED,INVALC,0xC179,0xEDEB,INVALC,0xEDEA, 0xC2C0,INVALC,0xC2C1,0xF0A1,0xF07D,0xF07E, /* Range 0x81D5 - 0x8216, array index: 0x2F5D */ 0xF2C2,INVALC,0xF2C1,0xC3BE,0xF4B4,0xC4A4,0xF4B3,INVALC, 0xF5F0,0xF745,0xC5A6,0xF943,0xF944,0xC5D8,0xA6DA,INVALC, 0xAAD7,0xDB52,0xBB4E,0xC17B,0xEDEF,0xA6DB,INVALC,0xAFE5, 0xAFE4,0xDB53,INVALC,INVALC,INVALC,0xEAF4,0xA6DC,0xAD50, INVALC,INVALC,0xDB54,0xDB55,0xDB56,0xBB4F,0xBFB2,0xA6DD, INVALC,0xAAD8,0xD068,0xAFE6,0xD370,0xB2EA,INVALC,0xDB57, 0xB8A4,INVALC,0xBB50,0xBFB3,0xC17C,0xC2C2,0xF4B5,0xA6DE, 0xAAD9,INVALC,INVALC,0xAFE7,0xD752,0xB5CE,INVALC,0xBB51, 0xE3AB,0xE745, /* Range 0x821B - 0x8222, array index: 0x2F9F */ 0xA6DF,0xB5CF,0xDFA3,0xBB52,0xA6E0,0xCDB1,0xD069,0xAD51, /* Range 0x8228 - 0x822C, array index: 0x2FA7 */ 0xAFEA,INVALC,0xAFE8,0xAFE9,0xAFEB, /* Range 0x8232 - 0x8285, array index: 0x2FAC */ 0xD757,0xD754,0xD756,0xB2EB,0xB2ED,0xB2EC,0xD753,0xB2EE, 0xD755,INVALC,0xDB58,0xDB59,INVALC,0xDB5A,0xDFA6,INVALC, 0xDFA7,INVALC,0xDFA5,0xDFA8,INVALC,0xB8A5,INVALC,0xDFA4, INVALC,0xBB53,INVALC,INVALC,0xE74A,0xE746,0xE749,0xE74B, 0xE748,0xE747,INVALC,0xEAF5,0xEAF6,0xEAF7,0xBFB4,0xBFB5, 0xEDF1,0xEDF0,0xEDF2,INVALC,0xF0A3,0xF0A2,INVALC,0xF2C4, INVALC,0xF2C5,0xF2C3,INVALC,0xC4A5,INVALC,0xF4B6,0xF4B7, INVALC,0xF746,0xF7EF,0xF8BB,0xA6E1,0xA87D,INVALC,0xC17D, 0xA6E2,INVALC,0xD758,0xDB5B,INVALC,0xC641,0xCA4A,INVALC, INVALC,INVALC,0xCA4B,0xCA4D,0xA6E3,0xCA4E,0xCA4C,INVALC, INVALC,0xCBA2,0xCBA3,0xCB7B, /* Range 0x828A - 0x82C3, array index: 0x3000 */ 0xCBA1,0xA8A1,INVALC,0xA8A2,0xCB7C,0xCB7A,0xCB79,0xCB7D, 0xA87E,0xCB7E,0xD06A,INVALC,INVALC,INVALC,0xCDB6,0xAADC, 0xCDB5,0xCDB7,INVALC,0xAADB,0xCDBC,0xAADF,0xCDB2,0xCDC0, 0xCDC6,0xAAE6,0xCDC3,0xAAE3,INVALC,0xCDB9,0xCDBF,0xCDC1, INVALC,0xCDB4,0xAAE2,0xAADD,0xCDBA,0xAAE4,0xAAE7,0xAAE1, INVALC,0xAADA,0xCDBE,0xCDB8,0xCDC5,0xAAE9,0xAAE5,0xAAE0, 0xCDBD,0xAFEC,0xCDBB,0xAADE,0xAAE8,INVALC,0xCDB3,INVALC, 0xCDC2,0xCDC4, /* Range 0x82D1 - 0x82FB, array index: 0x303A */ 0xAD62,0xAD5C,0xAD64,0xAD61,0xD071,0xD074,0xAD5D,INVALC, 0xD06B,INVALC,0xAD56,0xAD60,INVALC,0xAD63,0xAD65,0xD0A2, 0xD077,INVALC,0xAD55,0xD0A1,0xAD59,0xAD57,0xAD52,0xD06F, INVALC,0xD07E,0xD073,0xD076,0xD0A5,INVALC,0xAD66,0xD07D, 0xAD5E,0xD078,0xD0A4,0xD075,0xD079,0xD07C,INVALC,INVALC, 0xD06D,0xD0A3,0xD07B, /* Range 0x82FE - 0x830D, array index: 0x3065 */ 0xD06C,INVALC,0xD070,0xAD5F,0xAD5A,0xAD53,0xAD58,0xAD54, 0xAD67,0xD06E,0xD3A5,0xAD5B,INVALC,INVALC,0xD07A,0xCE41, /* Range 0x8322 - 0x8356, array index: 0x3075 */ 0xD37E,INVALC,0xD3A9,0xD378,0xD37C,0xD3B5,0xAFFD,0xD3AD, 0xD3A4,0xAFED,0xD3B3,0xD374,INVALC,0xD3AC,INVALC,0xAFFC, 0xAFF7,0xD373,0xAFF5,0xAFF4,0xAFF9,0xD3AB,0xAFF1,0xAFF8, 0xD072,0xDB5C,0xD3A6,INVALC,INVALC,0xD37A,0xAFFB,0xD37B, 0xD3A1,0xAFFE,0xD375,0xD3AF,INVALC,0xD3AE,0xD3B6,0xAFF3, 0xAFF0,0xD3B4,0xD3B0,0xD3A7,0xD3A2,0xAFF6,0xAFF2,0xD377, 0xAFEE,0xD3B1,0xAFEF,INVALC,0xD379, /* Range 0x8373 - 0x83B0, array index: 0x30AA */ 0xD75E,0xD760,0xD765,0xD779,0xB2FC,0xB2F2,INVALC,0xD75D, 0xB2FD,0xB2FE,0xD768,0xD76F,0xD775,INVALC,0xD762,INVALC, 0xD769,INVALC,INVALC,0xB340,0xD777,0xD772,0xB2FA,0xB2F8, 0xD76E,0xD76A,0xD75C,0xB2EF,0xD761,0xD759,INVALC,0xB2F7, 0xB2F9,0xD766,0xD763,0xB2F4,0xD773,0xB2F1,0xD764,0xD77A, 0xD76C,INVALC,0xD76B,0xB2F0,INVALC,0xB2FB,INVALC,0xB2F3, 0xD75A,0xD75F,0xD770,0xD776,0xB341,0xD75B,0xD767,0xD76D, 0xB2F6,INVALC,INVALC,0xD778,0xD771,0xD774, /* Range 0x83BD - 0x8413, array index: 0x30E8 */ 0xB2F5,INVALC,0xDB6C,0xDB60,0xB5D7,0xDB7D,0xDBA7,0xDBAA, 0xB5D5,0xDB68,0xDBA3,0xDB69,0xDB77,0xB5E2,0xDB73,0xB5DF, INVALC,0xDB74,0xDB5D,INVALC,0xDBA4,INVALC,INVALC,0xB5E8, 0xDBA1,0xDB75,0xDBAC,0xDB70,0xDFC8,INVALC,0xDBAF,0xB5E6, 0xDB6E,0xDB7A,0xB5E9,0xB5D4,0xDB72,0xDBAD,0xDB6B,0xDB64, 0xDB6F,INVALC,0xDB63,0xDB61,0xB5D0,0xDBA5,0xDB6A,0xDBA8, INVALC,0xDBA9,0xB5D8,0xB5DD,0xB5D9,0xB5E1,0xDB7E,0xB5DA, 0xDB76,0xDB66,INVALC,0xB5D2,0xDB5E,0xDBA2,0xDBAB,0xDB65, 0xB5E0,0xDBB0,0xDB71,INVALC,0xDB6D,INVALC,0xB5D1,0xB5E5, INVALC,0xDB7C,0xB5E7,INVALC,0xDB78,0xB5DC,0xB5D6,0xB5DE, 0xB5D3,0xB5E4,0xDB79,0xDB67,0xDB7B,0xDB62,0xDBA6, /* Range 0x8429 - 0x847E, array index: 0x313F */ 0xDFC7,INVALC,0xDFDD,0xB855,0xDFCC,INVALC,0xDFCA,0xDFB5, 0xB8A9,0xDFC5,0xDFD9,0xDFC1,0xB8B1,0xDFD8,0xDFBF,0xB5E3, 0xDFCF,0xDFC0,0xDFD6,0xB8B0,0xB8A8,INVALC,0xDFAA,0xDFB2, INVALC,0xDFCB,0xDFC3,0xDFDC,0xDFC6,0xB8B6,0xDFD7,INVALC, 0xB8AD,INVALC,0xDFC9,0xDFD1,0xDFB6,0xDFD0,INVALC,0xDFE1, 0xDFB1,0xDFD2,INVALC,0xDFDF,INVALC,0xDFAB,0xB5DB,INVALC, 0xDFB9,0xDFB8,0xB8AF,INVALC,0xDFBC,0xDFBE,0xDFCD,0xDFDE, 0xB8B2,INVALC,0xB8B3,INVALC,0xDFB0,0xB8AB,0xDFB4,0xDFDA, 0xB8B4,INVALC,0xB8AC,0xB8AE,0xB8B5,0xDFE0,0xDFD3,0xDFCE, INVALC,INVALC,0xDFBB,0xDFBA,0xB8AA,0xDFAC,0xB8A7,0xDFC4, 0xDFAD,0xDFC2,INVALC,INVALC,0xDFB7,0xDFDB, /* Range 0x848D - 0x8491, array index: 0x3195 */ 0xDFAF,0xDFD5,0xDFAE,0xBB60,0xE3D3, /* Range 0x8497 - 0x84D7, array index: 0x319A */ 0xE3AC,0xE3CA,0xBB58,0xE3BB,0xE3C5,0xBB5B,0xE3BE,0xBB59, 0xE3AF,0xE3CD,0xE3AE,0xE3C1,INVALC,0xE3AD,INVALC,INVALC, 0xE3BF,0xE3C8,0xE3C6,0xE3BA,0xE3B5,0xE3B3,INVALC,0xE3B4, 0xE3C7,0xE3D2,0xE3BC,0xBB5A,INVALC,0xE3B7,INVALC,0xE3CB, INVALC,0xBB5D,0xE3B6,0xE3B0,0xE3C0,0xBB61,INVALC,INVALC, 0xBB55,0xBB5E,0xE3B8,0xE3B2,INVALC,0xBB57,0xDFD4,0xBB56, 0xE3C3,INVALC,0xBB54,0xBB63,0xBB5C,0xE3C4,0xE3B9,0xE3B1, 0xE3CC,0xE3BD,0xBB62,0xE3D0,0xBB5F,0xE3CF,INVALC,0xE3C9, 0xE3CE, /* Range 0x84E7 - 0x8531, array index: 0x31DB */ 0xE773,0xE774,0xE767,0xE766,0xE762,0xBDB4,INVALC,0xBDAC, 0xE776,0xE775,0xDFA9,0xE75F,0xE763,0xE75D,INVALC,0xE770, 0xE761,INVALC,0xE777,0xE75A,0xE758,0xE764,0xE76E,0xE769, 0xBDB6,0xE74F,INVALC,0xE76D,INVALC,INVALC,INVALC,0xBDB7, 0xDFBD,0xE75B,0xE752,0xE755,0xE77B,0xE75C,0xE753,0xE751, 0xE74E,INVALC,0xBDB0,0xE765,0xBDAF,0xBDB3,0xE760,0xE768, 0xBDA9,0xE778,0xE77C,0xBDAB,INVALC,0xE757,0xE76B,0xE76F, 0xE754,0xE779,0xBDB2,INVALC,0xBDB1,0xE74C,0xBDB5,0xE772, 0xE756,0xE76A,0xE750,0xE75E,0xE759,0xBDAD,0xBDAE,0xE76C, 0xE77D,0xE77A,0xE771, /* Range 0x853D - 0x854E, array index: 0x3226 */ 0xBDAA,0xEB49,INVALC,0xEB40,0xEB43,INVALC,0xBFBB,0xEB45, 0xEAF9,0xEB41,0xEB47,0xBFB8,0xBFBC,0xBFB6,INVALC,INVALC, 0xEAFB,0xEB4C, /* Range 0x8551 - 0x856E, array index: 0x3238 */ 0xEB46,INVALC,0xEAFC,0xEB55,0xEB4F,0xEAF8,0xEE46,0xEAFE, 0xBFB7,INVALC,0xEB4A,INVALC,0xEB54,0xBFBF,INVALC,0xEB51, 0xEAFD,0xEB44,0xEB48,0xEB42,0xEB56,0xEB53,0xEB50,0xBFB9, 0xBFBA,0xBFBE,0xEAFA,0xEB57,0xBFBD,0xEB4D, /* Range 0x8575 - 0x85AA, array index: 0x3256 */ 0xEB4E,0xEE53,0xEE40,0xEE45,0xEE52,0xEE44,0xEDFB,0xEE41, INVALC,0xC1A2,INVALC,0xEDF4,0xEE4D,0xEE4F,0xEDF3,0xC1A1, 0xEE51,0xEE49,0xC1A8,0xEE50,0xEE42,0xC1AA,0xEDF9,0xEB52, 0xEE4A,0xEE47,0xEDF5,0xEE55,0xC1A4,INVALC,INVALC,0xC1A5, 0xEDF7,0xEE48,INVALC,0xEE54,0xEE4B,0xEDFD,0xC1A7,0xC1A3, 0xEE4C,0xEDFE,0xEE56,0xEDF8,0xEE43,0xEE4E,0xEDFA,0xEDFC, INVALC,0xC2CB,0xEDF6,0xC1A9,0xC2C4,0xC17E, /* Range 0x85AF - 0x85D2, array index: 0x328C */ 0xC1A6,0xC2C8,0xF0B3,INVALC,0xF0A9,0xF0A4,0xF0AA,0xF0B4, 0xF0B8,0xF0B7,0xC2CA,0xC2C9,INVALC,INVALC,0xF0AB,0xF0B9, 0xF0AE,0xF0A6,INVALC,0xF0A8,0xF0A7,0xF0AD,0xF0B2,0xF0A5, 0xF0AC,0xF0B1,0xC2C7,INVALC,0xF0AF,INVALC,0xC2C5,0xF0B0, 0xC2C3,0xC2C6,0xF2D5,0xF0B5, /* Range 0x85D5 - 0x860C, array index: 0x32B0 */ 0xC3C2,INVALC,0xF2CD,0xF2D1,0xF2C9,0xF2CC,INVALC,0xF2D4, 0xC3C0,0xF2D9,0xF2D2,INVALC,0xF2CA,0xF2DA,0xF2D3,0xC3C3, 0xC3C4,0xF2D7,INVALC,0xF2CB,0xC3BF,0xC3C1,0xF2C6,0xF2CE, 0xF2C8,INVALC,0xF2D8,0xF2D6,0xF2C7,0xF2CF,INVALC,INVALC, INVALC,0xF4BE,0xC3C5,0xF2D0,0xC4A7,0xC4A9,0xC4A6,INVALC, 0xF4C3,0xF4BB,0xF4B9,0xF4BD,0xF4BA,INVALC,INVALC,0xF4BF, 0xF4C1,0xC4AA,0xC4AC,INVALC,0xF4C0,0xC4AD,0xC4AB,0xF4C2, /* Range 0x8617 - 0x8640, array index: 0x32E8 */ 0xC4F4,0xF5F1,0xF5F7,0xC4F6,0xF4BC,0xF5F6,INVALC,0xF5FD, 0xF5F4,0xF5FB,0xF5FA,0xF4B8,0xF5F5,0xF0B6,0xF5FE,0xF5F3, 0xF5F8,INVALC,0xF5FC,0xF5F2,INVALC,0xF74A,0xC4F5,0xF5F9, INVALC,INVALC,0xF7F4,0xF74B,0xF749,0xF747,0xF748,0xF74C, INVALC,0xC5D9,0xF7F2,0xF7F0,0xF7F5,0xF7F3,INVALC,0xF7F6, 0xC5DA,0xF7F1, /* Range 0x8646 - 0x8656, array index: 0x3312 */ 0xF945,0xF946,0xF947,INVALC,INVALC,0xF9C7,0xF9BD,0xCA4F, 0xAAEA,INVALC,0xAD68,INVALC,0xD3B8,0xD3B7,0xB040,0xB342, 0xD77C, /* Range 0x865B - 0x8674, array index: 0x3323 */ 0xB5EA,0xB8B8,INVALC,0xB8B7,0xB8B9,INVALC,0xE3D4,0xE77E, 0xEB58,0xEB5A,0xEB59,INVALC,0xC1AB,0xEE57,0xF0BA,0xF9A5, 0xA6E4,INVALC,0xCDC9,0xCDCA,0xCDC8,0xCDC7,0xAAEB,INVALC, 0xD0A9,0xD0A7, /* Range 0x8677 - 0x867C, array index: 0x333D */ 0xD0A6,INVALC,0xAD69,0xAD6B,0xAD6A,0xD0A8, /* Range 0x8685 - 0x86AA, array index: 0x3343 */ 0xD3C4,0xD3C1,0xD3BF,INVALC,INVALC,0xB041,0xD3C2,0xB046, 0xD3BC,0xD3CB,INVALC,0xD3CD,0xD3BD,INVALC,0xB043,0xD3CE, 0xD3C9,0xD3BB,0xD3C0,0xD3CA,0xD3C6,0xD3C3,INVALC,0xB048, 0xD3CC,0xD3BE,INVALC,INVALC,0xD3C7,0xD3B9,0xB047,0xB044, 0xD3C5,INVALC,0xD3C8,0xD3BA,0xB045,0xB042, /* Range 0x86AF - 0x86CC, array index: 0x3369 */ 0xB34C,0xD7A5,0xB34B,INVALC,0xD7A8,0xD7AB,0xB348,0xB346, 0xD77E,0xD7A9,0xD7A7,0xD7A4,0xD7AC,0xD7AD,0xD7AF,0xD7B0, 0xD77D,0xB345,0xD7A2,0xD7A1,0xD7AE,0xB347,0xD7A3,0xB349, 0xB344,0xD7A6,0xB34D,INVALC,0xB34A,0xD7AA, /* Range 0x86D0 - 0x86ED, array index: 0x3387 */ 0xB5F1,0xDBBF,INVALC,0xDBB4,0xB5EE,INVALC,0xDFE7,0xDBBD, 0xDBB1,0xB5EC,0xDBB6,0xB5EF,0xDBBA,0xDBB8,0xB5F2,0xB5EB, INVALC,INVALC,0xDBB2,0xDBB5,0xB5F0,INVALC,0xDBB3,INVALC, 0xDBBE,0xDBBC,0xDBB7,0xDBB9,0xDBBB,0xB5ED, /* Range 0x86F5 - 0x86FB, array index: 0x33A5 */ 0xDFE8,0xDFEE,0xDFE4,0xDFEA,0xB8BA,0xDFE6,0xB8C0, /* Range 0x86FE - 0x8713, array index: 0x33AC */ 0xB8BF,INVALC,0xB8BE,0xDFED,0xB8C1,0xB8C2,0xDFE3,0xDFF0, 0xB8C3,0xB8BD,0xB8BC,0xDFEC,0xB8C4,0xDFE2,0xDFE5,0xDFEF, 0xDFEB,INVALC,INVALC,0xE3F4,0xE3E9,0xB8BB, /* Range 0x8718 - 0x8743, array index: 0x33C2 */ 0xBB6A,0xE3DD,0xE3F2,0xE3DE,0xBB65,INVALC,0xE3DB,INVALC, 0xE3E4,0xE3DC,0xBB67,0xE3D6,0xE3F1,0xBB68,0xE3EE,0xE3EF, 0xE3D7,0xBB6D,0xE3E6,INVALC,0xE3E0,0xE3E7,0xE3DA,INVALC, 0xE3F3,0xE3EB,0xE3E5,0xE3D5,0xBB69,0xE3EC,INVALC,0xBB6C, 0xE3F0,INVALC,0xE3EA,0xBB66,0xE3E8,INVALC,0xE3E2,0xBB64, 0xE3D9,0xE3E1,0xE3ED,0xE3DF, /* Range 0x874C - 0x877B, array index: 0x33EE */ 0xBDC1,0xDFE9,0xE7B2,0xE7BB,0xE7B1,0xE7AD,0xE7AA,0xBDC2, 0xE7A8,0xBB6B,0xE7A1,0xBDC0,0xE7A7,0xBDBF,0xE7AC,0xE7A9, 0xE7B9,0xE7B4,0xE7AE,0xE7B3,0xBDBB,0xE7AB,0xE7BE,0xE7A2, 0xE7A3,0xE7BA,0xBDBC,0xE7BF,0xBDBE,0xE7C0,0xE7B0,0xE3D8, 0xE7B6,0xE7AF,0xE7B8,0xE7B5,INVALC,INVALC,INVALC,0xE7A6, 0xBDB9,0xE7BD,0xBDBA,0xE7A4,0xBDBD,0xEB64,0xE7B7,0xE7BC, /* Range 0x8781 - 0x8789, array index: 0x341E */ 0xEB61,0xBDB8,0xBFC0,0xEB6B,0xEB67,INVALC,0xEB65,0xEB60, 0xEB6F, /* Range 0x878D - 0x87A4, array index: 0x3427 */ 0xBFC4,INVALC,0xEB5C,0xEB68,0xEB69,0xEB5F,0xEB5E,0xEB6C, INVALC,0xEB62,0xEB5D,0xEB63,INVALC,0xEB6E,0xEB5B,0xEB6D, 0xEB6A,0xBFC2,0xBFC1,INVALC,INVALC,0xBFC3,0xEB66,0xF0CB, /* Range 0x87AA - 0x87CC, array index: 0x343F */ 0xEE59,0xC1B1,0xEE5D,0xEE5A,0xEE61,0xEE67,0xEE5C,INVALC, 0xEE70,0xC1AE,0xEE6A,0xEE5F,0xEE6B,0xEE66,0xEE6D,0xEE5E, 0xC1B3,0xC1B2,0xEE60,0xEE6E,0xEE58,0xEE6C,0xC1AC,INVALC, 0xEE64,0xEE63,0xEE68,0xEE5B,0xC1B0,INVALC,0xC1B4,0xEE62, 0xEE69,0xC1B5,0xEE65, /* Range 0x87D1 - 0x8844, array index: 0x3462 */ 0xC1AD,0xC1AF,0xF0C7,0xF0C5,INVALC,INVALC,0xF0CC,0xF0C9, 0xF0CD,INVALC,0xF0BE,0xF0C6,0xF0D1,0xEE6F,0xF0C2,0xC2CF, 0xE7A5,0xF0BD,0xF0CA,0xF0C4,0xF0C1,0xF0BC,0xF0BB,0xF0D0, INVALC,0xF0C0,0xF0BF,0xC2CD,0xF0C8,INVALC,0xC2CC,INVALC, INVALC,0xC2CE,0xF0C3,0xF0CF,INVALC,0xF2DE,0xF2DF,INVALC, 0xC3C9,0xF2DC,0xC3C6,0xF2E4,INVALC,0xC3CA,0xF2E6,0xF2DB, 0xF0CE,0xF2E8,0xF2DD,INVALC,0xC3C7,0xF2E3,INVALC,0xF2E5, 0xF2E0,0xF2E7,0xF2E2,0xF2E1,0xC3C8,INVALC,INVALC,0xF4C5, 0xF4C6,INVALC,0xF4C8,0xC4AE,0xC4AF,0xF4C9,0xF4C7,INVALC, 0xF4C4,INVALC,0xF642,0xF645,0xF641,INVALC,0xC4FA,0xF643, 0xC4F9,0xC4F8,0xC4F7,0xF644,0xF751,0xF74F,INVALC,0xF74E, 0xF640,0xF750,0xF646,0xF74D,INVALC,0xF7F9,0xF7D7,0xF7F7, 0xC5DB,0xF7F8,0xF7FA,INVALC,0xF8BF,0xC5FA,0xF8BE,0xF8BD, 0xC5FB,INVALC,0xC65A,0xF96E,0xF9A7,0xF9A6,0xF9A8,0xA6E5, 0xD0AA,INVALC,0xD3CF,0xD3D0, /* Range 0x8848 - 0x884E, array index: 0x34D6 */ 0xDBC0,INVALC,0xF647,0xF8C0,0xA6E6,0xAD6C,0xD0AB, /* Range 0x8852 - 0x8883, array index: 0x34DD */ 0xD7B1,0xB34E,INVALC,0xDBC2,0xDBC1,0xB5F3,INVALC,0xB8C5, 0xE7C1,0xBDC3,INVALC,0xBDC4,INVALC,INVALC,INVALC,0xBFC5, 0xC5FC,0xA6E7,INVALC,INVALC,INVALC,0xD0AC,0xAAED,0xD0AE, 0xD0AD,0xAD6D,INVALC,0xD3D1,INVALC,0xD3D8,0xB049,0xD3D6, 0xD3D4,INVALC,0xD3DB,0xD3D2,0xD3D3,0xB04A,INVALC,0xB04E, INVALC,INVALC,0xD3DC,0xB04D,0xD3DA,0xD3D7,0xD3D5,0xB04B, 0xB04C,0xD3D9, /* Range 0x8888 - 0x88AC, array index: 0x350F */ 0xB350,0xD7B2,INVALC,0xB355,0xD7C2,0xB354,0xD7C4,INVALC, INVALC,0xD7B8,0xB352,0xD7C3,INVALC,0xD7B3,0xB353,0xD7BF, 0xD7BB,0xD7BD,0xD7B7,0xD7BE,INVALC,INVALC,0xB34F,0xD7BA, INVALC,0xD7B9,0xD7B5,INVALC,0xD7C0,INVALC,INVALC,0xD7BC, 0xD7B4,INVALC,0xD7B6,0xB351,0xD7C1, /* Range 0x88B6 - 0x88C2, array index: 0x3534 */ 0xDBC9,0xDBCB,0xDBC6,0xDBC5,0xDBC3,INVALC,0xDBCA,0xDBCC, 0xDBC8,INVALC,0xDBC7,0xB5F4,0xB5F5, /* Range 0x88C9 - 0x88E1, array index: 0x3541 */ 0xDBCF,0xB8CD,0xDFF2,0xDFF8,0xDFF3,0xDFF4,INVALC,0xDFF9, INVALC,0xB8CF,INVALC,0xB8C7,0xB8CE,0xDFF1,0xDBC4,0xB8CA, 0xB8C8,0xDFF7,0xDFF6,0xB8C9,0xB8CB,0xDFF5,0xB8C6,INVALC, 0xB8CC, /* Range 0x88EB - 0x891A, array index: 0x355A */ 0xE442,0xE441,INVALC,0xE3FB,0xBB76,0xE440,0xE3F7,0xE3F8, 0xBB6E,0xBB70,INVALC,0xE3FD,0xE3F5,0xBB72,0xBB71,0xE3F9, 0xE3FE,0xE3FC,0xBB73,0xE3FA,INVALC,INVALC,0xDBCE,0xBB6F, INVALC,INVALC,0xE7C2,0xE7C9,0xBDC6,INVALC,0xE7CD,0xBDCA, 0xE7C5,0xE7C3,INVALC,0xE7CC,INVALC,0xBDC5,0xE7CB,0xBDC7, 0xBDC8,0xE7C4,0xBDC9,0xE7CA,0xE7C6,0xE7C7,0xE7C8,0xBB75, /* Range 0x891E - 0x8946, array index: 0x358A */ 0xEB70,0xEB7C,INVALC,0xBFCA,0xEB77,0xEB79,INVALC,0xBFC8, 0xEB71,0xEB75,INVALC,0xEB78,0xBFC6,0xBFC9,0xEB7B,0xEB73, 0xEB74,0xEB7A,0xEB72,0xEB76,0xBFC7,0xEE72,INVALC,0xEE71, 0xC1B7,0xEE77,0xC1B9,INVALC,INVALC,0xC1B6,0xEE73,0xC1BA, 0xEE74,INVALC,INVALC,0xEE75,0xEE78,INVALC,0xC1B8,INVALC, 0xF0D6, /* Range 0x894B - 0x8988, array index: 0x35B3 */ 0xF0D3,0xF0D5,INVALC,INVALC,0xF0D4,0xF0D7,0xF0D8,0xEE76, 0xF0D2,INVALC,INVALC,0xC3CD,0xF2EC,0xF2EF,0xF2F1,0xF2EA, 0xF2EB,0xF2EE,0xF2F0,0xC3CE,0xC3CC,0xC3CB,0xF2ED,0xF2E9, 0xF4CA,0xC4B0,INVALC,0xF4CB,INVALC,INVALC,0xF649,0xC4FB, 0xF64B,0xC4FC,0xF648,0xF64A,0xC5A8,INVALC,0xF752,0xC5A7, 0xF7FD,0xF7FC,INVALC,0xF7FB,INVALC,INVALC,0xF948,0xF949, 0xF94B,0xF94A,INVALC,0xCA50,0xA6E8,INVALC,0xAD6E,0xD7C5, 0xB5F7,INVALC,0xDFFA,0xC2D0,INVALC,0xF2F2, /* Range 0x8993 - 0x89A6, array index: 0x35F1 */ 0xB356,INVALC,0xDBD0,0xB5F8,0xDBD2,0xDBD1,INVALC,INVALC, 0xDFFB,0xB8D0,0xE443,0xE446,0xE445,INVALC,0xE444,0xE7CE, 0xE7D0,0xE7CF,INVALC,0xBFCC, /* Range 0x89AA - 0x89AF, array index: 0x3605 */ 0xBFCB,INVALC,0xC1BB,0xEE79,0xEE7B,0xEE7A, /* Range 0x89B6 - 0x89C0, array index: 0x360B */ 0xF2F4,0xF2F3,INVALC,0xF4CC,0xC4B1,INVALC,INVALC,0xC4FD, 0xF754,0xF753,0xC65B, /* Range 0x89D2 - 0x8A18, array index: 0x3616 */ 0xA8A4,0xD0AF,0xAD6F,0xD7C8,0xD7C6,INVALC,INVALC,0xD7C7, 0xDBD4,0xDBD5,0xE043,0xDBD3,INVALC,0xDFFC,0xE041,0xE040, 0xE042,0xB8D1,0xDFFE,0xDFFD,0xE044,INVALC,0xE449,0xE447, INVALC,0xE448,0xE7D3,0xE7D1,INVALC,INVALC,0xE7D2,0xEB7D, 0xEE7C,0xEE7D,0xC2D2,INVALC,0xF2F5,0xF4CD,0xC4B2,INVALC, 0xF64C,0xF755,0xC5A9,INVALC,0xF7FE,0xF94C,0xA8A5,INVALC, 0xAD71,0xAD72,0xD0B0,INVALC,INVALC,0xD0B1,0xAD70,INVALC, 0xB054,INVALC,0xB052,INVALC,0xB051,0xB058,0xB050,0xB059, 0xD3DD,0xB056,INVALC,0xB053,0xB057,0xB055,0xB04F, /* Range 0x8A1B - 0x8A27, array index: 0x365D */ 0xB35F,INVALC,0xB359,0xD7CC,0xB35E,INVALC,INVALC,0xB360, 0xB35A,INVALC,0xB35B,INVALC,0xD7CA, /* Range 0x8A39 - 0x8A5B, array index: 0x366A */ 0xDBD8,0xB645,0xB5F9,0xB5FD,INVALC,0xB8E4,0xE049,0xDBDA, 0xB5FE,INVALC,INVALC,0xDBDD,0xDBDE,0xB643,INVALC,0xDBE0, INVALC,0xDBE2,INVALC,0xDBE3,0xDBD7,0xDBD6,0xDBE4,0xB642, 0xDBE1,0xDBDF,INVALC,0xB640,0xB5FB,0xB647,0xDBDB,0xDBDC, 0xDBD9,INVALC,0xB641, /* Range 0x8A5E - 0x8A63, array index: 0x368D */ 0xB5FC,INVALC,0xB5FA,0xE048,0xB8DF,0xB8DA, /* Range 0x8A68 - 0x8A7C, array index: 0x3693 */ 0xB8E5,0xB8D6,INVALC,0xB8D2,0xB8E1,0xB8DE,0xB8E0,INVALC, 0xB8D7,0xB8DC,0xB8D3,0xB8D4,0xE050,0xE04D,0xE045,0xE04A, INVALC,0xB8E2,0xE051,0xB8E3,0xB8D9, /* Range 0x8A7F - 0x8A9A, array index: 0x36A8 */ 0xE047,INVALC,0xE04F,0xE04B,0xE04E,0xE04C,0xB8DD,0xE046, 0xB8D8,INVALC,INVALC,INVALC,0xE44C,0xBB78,0xBB7B,INVALC, 0xE44E,INVALC,0xBBA5,0xE44D,0xBB7D,INVALC,0xBDCF,0xE44F, INVALC,0xBBA4,0xE44B,0xBBA6, /* Range 0x8AA0 - 0x8AAB, array index: 0x36C4 */ 0xB8DB,0xBB7C,INVALC,0xBB7A,0xBB7E,0xBBA2,0xBB77,0xBBA7, 0xBBA3,INVALC,0xBBA1,0xE44A, /* Range 0x8AB6 - 0x8AE8, array index: 0x36D0 */ 0xBDD9,INVALC,0xE7D6,0xBDDA,0xE7E2,0xE7DB,0xBDCB,0xE7E3, 0xE7DD,0xBDD5,0xE7DE,INVALC,0xBDD4,0xE7E1,0xBDCE,0xE7DF, 0xE7D5,0xBDCD,0xEBAA,0xBDD3,INVALC,0xBDD0,INVALC,0xBDD8, INVALC,0xE7D4,INVALC,0xE7D8,0xBDCC,0xE7D7,0xE7D9,0xE7DA, 0xBDD7,0xE7DC,0xE7E0,0xE7E4,INVALC,0xBDDB,0xBFD2,0xEBA5, 0xEBAB,0xEBA8,0xEB7E,0xEBAC,0xEBA1,INVALC,0xEBA7,INVALC, 0xBFCD,0xBFD3,0xEBAD, /* Range 0x8AEB - 0x8B60, array index: 0x3703 */ 0xBFCF,INVALC,0xBFD9,0xBFD4,0xEBAF,0xEBA9,0xBFD0,0xEBA2, 0xBFDA,0xEBA3,0xEBA4,0xBFDB,0xBFD8,0xBDD1,INVALC,0xBFCE, 0xEBB0,0xBFDC,INVALC,0xBFD5,0xEBAE,0xBFD1,0xBFD6,0xBFD7, INVALC,0xC1C3,0xEEA4,0xEEAD,0xEEAA,0xEEAC,INVALC,0xC1C0, 0xEEA5,INVALC,0xEEAB,0xC1BC,0xEEA7,0xC1C4,0xEEA3,0xEEA8, 0xEEAF,0xEBA6,0xEEA9,0xEEA2,0xC1BD,0xEEA1,0xC1BE,0xEEB0, 0xC1BF,0xEEAE,0xC1C2,0xEE7E,INVALC,0xC1C1,INVALC,0xEEA6, 0xF0DC,0xF0EA,0xF0E5,0xF0E7,0xF0DB,0xC2D3,INVALC,0xF0DA, 0xC2D6,0xC2D5,INVALC,0xF0E9,0xF0E1,0xF0DE,0xF0E4,INVALC, 0xF0DD,INVALC,0xF0DF,0xF0E8,0xF0E6,INVALC,0xC2D4,0xF0ED, 0xF0EB,0xF0E2,0xF0EC,0xF0E3,INVALC,0xF2F9,0xC3CF,0xF341, INVALC,INVALC,0xF64F,0xC3D6,0xF0E0,0xF2F7,0xC3D2,0xF2F8, 0xF2FD,INVALC,INVALC,0xC3D4,0xC3D5,0xF2F6,0xF340,0xF342, 0xF2FA,0xF2FC,0xF2FE,0xF2FB,0xF343,0xC3D1,0xC3D7,0xC3D3, INVALC,0xC3D0,0xF4D0,INVALC,0xC4B7,0xF4CE, /* Range 0x8B63 - 0x8B70, array index: 0x3779 */ 0xF4D2,INVALC,0xF4D3,0xC4B5,0xF4D4,0xF4D1,INVALC,0xF4CF, 0xC4B8,0xC4B4,0xF4D5,INVALC,0xC4B6,0xC4B3, /* Range 0x8B77 - 0x8B9F, array index: 0x3787 */ 0xC540,0xF64E,0xF64D,0xF650,0xF651,INVALC,0xC541,0xF756, 0xF75B,0xC5AA,INVALC,0xF758,INVALC,0xF757,0xF75A,0xF759, INVALC,0xF843,INVALC,0xC5DC,0xF842,0xF840,INVALC,0xF841, INVALC,INVALC,INVALC,0xC5FE,0xC5FD,0xF8C1,0xF8C2,0xC640, INVALC,0xF94D,0xF94E,0xC667,INVALC,0xC66D,INVALC,0xF9A9, 0xF9C8, /* Range 0x8C39 - 0x8C57, array index: 0x37B0 */ 0xD7CD,INVALC,0xD7CE,0xE052,0xE450,0xE7E5,0xC1C6,INVALC, 0xC1C5,0xF0EE,0xF344,INVALC,0xF844,0xA8A7,0xD3DE,0xB05A, 0xB361,0xE054,0xE053,0xBDDC,0xE7E6,0xBDDD,0xEEB1,0xC2D7, INVALC,INVALC,INVALC,0xC676,0xA8A8,0xCDCB,0xD3DF, /* Range 0x8C61 - 0x8CCC, array index: 0x37CF */ 0xB648,0xB8E6,INVALC,0xE056,0xE055,0xE057,INVALC,0xE451, 0xE452,0xBBA8,0xBFDD,0xBDDE,0xBFDE,INVALC,0xEEB5,0xEEB2, 0xEEB4,0xEEB3,0xC1C7,INVALC,0xF0EF,0xF346,0xF345,0xCBA4, 0xB05C,0xB05B,0xD3E0,INVALC,0xD7D1,INVALC,INVALC,0xDBE7, 0xDBE6,0xB649,INVALC,0xE059,0xE05A,0xE058,INVALC,INVALC, 0xB8E8,0xB8E7,INVALC,0xBBAA,0xBBA9,INVALC,0xE7E7,0xEBB3, 0xEBB1,0xEBB2,0xBFDF,0xEEB7,0xEEB6,INVALC,0xF0F2,0xF0F1, 0xF0F0,0xF347,INVALC,0xF9AA,0xA8A9,0xAD73,INVALC,0xAD74, 0xB05D,0xB05E,0xD3E2,0xD3E1,0xD7D2,INVALC,0xB368,0xB366, 0xB363,0xB367,0xB365,0xB364,INVALC,INVALC,0xB64A,0xDBEA, INVALC,0xB8ED,0xB64C,0xB651,0xDBEC,0xB653,0xB652,0xB655, 0xDBEB,0xDBE8,0xB64F,0xB64B,0xB64D,0xDBE9,0xB654,0xB650, 0xB64E,0xB8EF,0xB8EE,0xB8EC,0xB8F0,INVALC,0xB8EA,0xB8EB, INVALC,0xB8E9,INVALC,0xE05B, /* Range 0x8CCF - 0x8D0A, array index: 0x383B */ 0xE454,INVALC,0xBBAC,0xBBAD,0xBBAB,INVALC,0xE453,INVALC, 0xE455,INVALC,0xE7EA,0xE7EC,INVALC,0xBDE7,0xE7ED,0xBDE0, 0xE7E9,0xBDDF,0xBDE9,0xBDE5,0xBDE6,0xBDE2,0xE7E8,0xBDE1, 0xE7EE,0xE7EB,INVALC,0xBDE8,INVALC,0xBDE3,0xBDE4,0xEBB5, INVALC,0xEBB7,0xEBB6,INVALC,0xEBB8,0xBFE0,0xEBB4,INVALC, INVALC,0xC1CB,0xEEB8,0xC1C8,0xC1CC,0xC1CA,0xC1C9,0xF0F3, INVALC,0xF0F6,INVALC,0xF0F5,INVALC,0xF0F4,0xC2D8,0xF348, 0xF349,0xC3D8,0xF34A,0xC3D9, /* Range 0x8D0F - 0x8D1B, array index: 0x3877 */ 0xC4B9,0xF652,INVALC,INVALC,0xC542,0xF653,0xF75C,0xC5AB, 0xC5AC,INVALC,0xF845,INVALC,0xC642, /* Range 0x8D64 - 0x8D85, array index: 0x3884 */ 0xA8AA,INVALC,0xB36A,0xB369,0xE05C,0xE05D,INVALC,0xBBAE, 0xEBB9,0xBDEA,0xEBBA,0xEEB9,0xA8AB,INVALC,0xD0B2,0xAD76, 0xAD75,INVALC,0xD3E3,0xB05F,0xD3E4,0xD7D5,INVALC,0xD7D4, INVALC,0xD7D3,INVALC,INVALC,0xDBEE,0xB658,INVALC,INVALC, 0xDBED,0xB657, /* Range 0x8D89 - 0x8D96, array index: 0x38A6 */ 0xDBEF,0xB656,INVALC,0xE05F,0xE062,0xE060,0xE061,0xE065, 0xE05E,0xE066,0xE063,0xE064,0xBBB0,0xE456, /* Range 0x8D9B - 0x8DF4, array index: 0x38B4 */ 0xE7F2,0xE7F0,INVALC,INVALC,0xBDEB,0xE7EF,0xE7F1,INVALC, 0xBDEC,INVALC,0xEBBB,INVALC,0xEBBC,0xC1CD,INVALC,0xF34C, 0xF34E,0xF34B,0xF34D,0xF4D6,0xF654,INVALC,INVALC,0xF96F, 0xA8AC,0xAD77,0xD3E5,0xD3E7,0xD3E6,INVALC,0xD7D8,0xB36C, INVALC,0xD7D6,INVALC,0xB36B,0xD7D9,INVALC,0xD7DA,0xD7D7, INVALC,INVALC,0xDBFB,0xB660,0xDBF3,0xDBF9,INVALC,INVALC, 0xB65B,0xB65E,0xDBF2,0xB659,0xDBF6,0xE06C,0xB65D,INVALC, 0xDBF1,INVALC,0xDBF7,0xDBF4,0xDBFA,0xDBF0,0xDBF8,0xB65C, 0xB65F,0xDBF5,0xB65A,INVALC,0xB8F2,0xE068,0xB8F1,0xE06F, 0xE06E,0xB8F8,INVALC,0xB8F9,0xE070,0xB8F3,0xE06D,0xB8F7, 0xE072,0xE069,INVALC,0xE06B,0xB8F4,0xE067,0xE06A,0xE071, 0xB8F5,0xE073, /* Range 0x8DFA - 0x8E0A, array index: 0x390E */ 0xB8F6,INVALC,0xBBB1,0xE45B,0xE461,0xE459,0xE462,INVALC, 0xE458,0xE45D,0xE463,0xE460,0xE45F,0xE45E,INVALC,0xE457, 0xE45C, /* Range 0x8E0D - 0x8E2B, array index: 0x391F */ 0xE45A,INVALC,0xBDF1,0xBDEE,0xE7FB,0xE841,0xE843,0xE840, 0xE7F8,0xE7FA,0xE845,0xE842,0xE7FC,0xE846,0xE7F9,0xE844, 0xBDEF,0xBDF5,0xBDF3,0xE7F3,0xBDF4,0xBDF0,0xE7F4,0xE7F6, 0xE7F5,0xE7FD,0xE7FE,INVALC,0xBDF2,INVALC,0xBDED, /* Range 0x8E30 - 0x8E7C, array index: 0x393E */ 0xEBC6,0xBFE2,INVALC,0xEBBD,0xBFE3,0xBFE6,0xEBC2,INVALC, 0xEBBF,0xBFE5,INVALC,INVALC,0xEBC3,0xEBC4,0xEBBE,0xEBC7, 0xEBC0,0xEBC5,0xBFE4,INVALC,0xBFE1,0xEBC1,INVALC,0xEEBF, 0xC1D0,0xC1CE,0xC1D1,0xC1CF,0xEEBE,0xEEBB,0xEEBA,INVALC, 0xEEBD,INVALC,INVALC,0xEEBC,0xF145,0xC2DE,0xF0FB,0xF0FA, INVALC,0xC2D9,0xF141,0xF140,0xF0F7,0xF143,0xF0FC,0xC2DD, 0xF0F9,0xF142,0xF0F8,0xC2DA,0xC2DC,0xF0FD,0xC2DB,0xF0FE, INVALC,0xF144,0xF352,INVALC,0xC3DE,0xF34F,INVALC,0xF353, INVALC,INVALC,0xC3DB,0xF351,0xC3E0,INVALC,0xC3DD,INVALC, 0xF350,INVALC,0xC3DF,0xF354,0xC3DA, /* Range 0x8E81 - 0x8EAC, array index: 0x398B */ 0xC4BC,0xC4BE,INVALC,0xF4D9,0xC4BD,0xF4D7,0xC3DC,0xF4D8, 0xC4BB,0xC543,0xC545,0xF656,0xC544,0xF655,INVALC,0xF761, 0xC5AD,0xF760,0xC5AE,0xF75E,0xF75D,0xF762,0xF763,0xF846, INVALC,0xF75F,INVALC,INVALC,0xF8C6,0xF8C3,0xF8C4,0xF8C5, 0xC65C,INVALC,0xF951,0xF950,0xF94F,0xF970,INVALC,0xF9BE, 0xF9AB,0xC66E,0xA8AD,0xB060, /* Range 0x8EC9 - 0x8F64, array index: 0x39B7 */ 0xF9AC,0xA8AE,0xAAEE,0xAD79,0xAD78,INVALC,0xB063,INVALC, 0xD3E8,0xB061,0xD3E9,0xB062,INVALC,INVALC,0xD7DF,0xD7DB, INVALC,INVALC,0xB36D,0xD7DE,0xD7DD,0xD7DC,0xB36E,0xD7E0, 0xD7E1,INVALC,INVALC,INVALC,0xDC43,0xDC41,0xDC45,0xDC46, 0xDC4C,INVALC,0xDC48,0xDC4A,INVALC,0xDC42,0xDBFC,INVALC, 0xDC49,INVALC,INVALC,0xDC4B,0xDC44,0xDC47,0xDBFD,0xB662, 0xDC40,0xDBFE,0xB661,0xB663,INVALC,0xB8FD,0xE075,0xE077, 0xE076,0xE07B,0xB8FB,INVALC,0xE078,0xE074,0xE079,0xE07A, 0xB8FC,0xB8FE,0xE07C,INVALC,0xE467,0xE466,INVALC,0xE464, 0xE465,0xBBB3,0xBBB5,0xBBB2,0xBBB4,0xE84D,0xE84E,0xE849, INVALC,0xE84A,0xBDF8,0xBDFD,0xBDF7,0xBDFE,0xBDF9,0xE84B, INVALC,INVALC,0xE84C,0xE848,0xBE40,0xBDFB,INVALC,INVALC, 0xBDFA,0xBDFC,INVALC,0xE847,INVALC,0xEBCA,0xBFE8,INVALC, INVALC,0xEBCC,0xBFEA,0xEBCF,0xEBCB,0xEBC9,0xEBCE,0xBFE9, 0xEBCD,INVALC,0xBFE7,INVALC,INVALC,0xC1D3,0xC1D6,0xEEC1, INVALC,0xC1D4,0xEEC0,0xC1D2,0xC1D5,0xF146,0xF147,0xF148, 0xC2E0,INVALC,0xF149,INVALC,0xC2E1,0xC3E2,0xF358,0xF359, 0xF357,0xF356,0xF35A,0xC3E1,0xF4DD,0xF4DB,0xF4DC,0xF4DE, 0xF4DA,0xF4DF,0xF658,INVALC,0xF659,0xF657,0xC546,0xF764, 0xC5AF,0xF765,0xF848,0xF847, /* Range 0x8FAD - 0x8FB4, array index: 0x3A53 */ 0xC3E3,0xC47C,0xC547,0xA8B0,0xB064,0xB941,INVALC,0xF35B, /* Range 0x8FC2 - 0x8FC6, array index: 0x3A5B */ 0xA8B1,INVALC,0xA8B4,0xA8B3,0xA8B2, /* Range 0x8FCD - 0x8FD7, array index: 0x3A60 */ 0xCDCF,0xAAEF,INVALC,INVALC,0xAAF1,0xCDCC,0xCDCE,0xAAF0, 0xCDD1,0xCDD0,0xCDD2, /* Range 0x8FE0 - 0x9006, array index: 0x3A6B */ 0xD0B6,0xD0B4,0xAD7C,0xD0B3,0xADA3,0xAD7E,0xAD7B,INVALC, 0xADA4,INVALC,0xAD7D,0xADA2,INVALC,0xADA1,0xD0B5,INVALC, 0xAD7A,INVALC,INVALC,INVALC,0xB06A,0xD3EB,0xD3F1,0xB067, 0xB06E,INVALC,0xB069,0xD3EE,0xD3F0,0xB06C,0xD3EA,0xD3ED, 0xB068,0xB065,0xD3EC,0xB06B,0xD3EF,0xB06D,0xB066, /* Range 0x900B - 0x9024, array index: 0x3A92 */ 0xD7E3,0xD7E6,0xB370,INVALC,0xB37A,0xB376,0xD7E4,INVALC, INVALC,0xB37E,0xB377,0xB37C,0xB372,INVALC,0xB36F,0xB371, 0xB37D,0xD7E5,0xB375,0xB378,0xB374,0xB379,0xD7E7,0xB37B, 0xB373,0xD7E2, /* Range 0x902D - 0x9044, array index: 0x3AAC */ 0xDC4D,0xB665,0xDC4F,INVALC,0xB667,0xB669,INVALC,0xDC4E, 0xB666,0xB66A,INVALC,0xB668,INVALC,INVALC,INVALC,0xB947, 0xE0A3,0xB94F,0xE07E,INVALC,0xB950,0xB945,INVALC,0xE0A1, /* Range 0x9047 - 0x90A7, array index: 0x3AC4 */ 0xB94A,INVALC,0xE0A2,0xB943,0xB942,INVALC,0xB94D,0xB94C, 0xB94B,0xB949,0xB94E,0xE07D,0xB944,0xB946,0xB948,INVALC, INVALC,0xBBB8,0xBBBB,INVALC,0xBBBF,0xBBB9,0xBBBE,0xBBBC, INVALC,0xBBB7,INVALC,0xBBBD,0xBBBA,INVALC,INVALC,INVALC, 0xE852,0xBE43,0xBE41,INVALC,0xE853,INVALC,0xBE44,0xBE42, 0xE851,0xE850,INVALC,0xBFF0,0xE84F,0xBFEE,0xBFED,0xEBD0, 0xBE45,0xBFEF,0xEBD1,0xBFF2,0xEBD2,0xBFF1,0xC1D8,0xEEC3, 0xC1D7,0xC1DC,0xC1DA,0xC1DB,0xC2E3,0xC1D9,0xEEC2,0xEBD3, 0xC2E2,0xC2E4,INVALC,0xC3E4,0xC3E5,INVALC,0xF4E0,INVALC, 0xC5DE,0xC5DD,0xA8B6,INVALC,INVALC,0xCA55,0xB06F,INVALC, 0xCA52,0xCA53,0xCA51,INVALC,0xCA54,INVALC,INVALC,0xCBAA, 0xCBA7,0xCBAC,0xCBA8,0xA8B7,0xA8BA,INVALC,0xCBA9,0xA8B9, 0xCBAB, /* Range 0x90AF - 0x90B8, array index: 0x3B25 */ 0xCDD5,0xCDD7,0xAAF4,0xCDD3,0xCDD6,0xCDD4,0xAAF2,0xAAF5, INVALC,0xAAF3, /* Range 0x90BD - 0x90CB, array index: 0x3B2F */ 0xD0B8,0xD0BC,0xD0B9,INVALC,0xADA7,INVALC,0xADA8,INVALC, 0xD0BB,INVALC,0xD0BD,0xD0BF,INVALC,0xADA5,0xD0BE, /* Range 0x90D4 - 0x915A, array index: 0x3B3E */ 0xD7EE,0xD0BA,0xD3F2,0xD3FB,0xD3F9,0xD3F4,0xD3F5,0xD3FA, 0xD3FC,0xB071,INVALC,0xD3F7,0xD3F3,0xB070,0xB072,0xD3F6, 0xD3FD,0xD3F8,INVALC,INVALC,0xB3A1,0xD7F1,0xD7E9,0xD7EF, 0xD7F0,0xB3A2,INVALC,0xD7E8,0xD7EA,0xD0B7,0xD7EC,0xD7ED, 0xD7EB,0xB66C,INVALC,INVALC,INVALC,0xDC56,0xEBD4,0xDC57, 0xDC54,0xB3A3,0xB66E,0xDC53,0xDC59,0xDC58,0xB66B,0xDC5C, 0xDC52,0xDC5B,0xDC50,0xDC5A,0xDC55,0xB66D,INVALC,0xE0AA, INVALC,0xE0A5,0xE0AB,0xE0A6,0xE0A4,0xE0A7,0xB951,INVALC, 0xE0A9,INVALC,0xE0A8,0xB952,0xBBC1,0xBBC0,0xE46E,0xE471, 0xE469,0xE46D,0xBBC2,0xE46C,0xE46A,0xE470,0xE46B,0xE468, 0xE46F,INVALC,0xE859,0xBE48,0xF14A,0xE856,0xE857,0xE855, 0xDC51,0xBE47,0xE85A,0xE854,0xBE46,0xBE49,0xE858,0xEBD5, 0xBFF3,0xEBD6,0xEBD7,INVALC,0xEEC4,0xC1DD,0xF14B,0xF14C, INVALC,INVALC,0xF14D,0xF35D,0xF35C,0xF4E2,INVALC,0xF4E1, 0xF65B,0xF65C,0xF65A,0xF766,0xC5B0,0xA8BB,0xADAA,0xADA9, 0xB075,0xB074,0xD440,0xD441,0xD3FE,INVALC,0xB073,0xD7F5, INVALC,0xD7F6,0xD7F2,0xB3A4,0xD7F3,INVALC,0xD7F4, /* Range 0x915F - 0x917A, array index: 0x3BC5 */ 0xDC5F,0xDC61,0xDC5D,0xDC60,0xB66F,0xDC5E,0xB670,INVALC, INVALC,0xDD73,0xB955,0xB954,INVALC,0xB953,INVALC,0xE0AC, 0xE0AD,INVALC,INVALC,0xE473,0xE475,0xBBC6,0xBBC3,INVALC, 0xBBC5,0xBBC4,0xE474,0xE472, /* Range 0x9180 - 0x9193, array index: 0x3BE1 */ 0xE861,0xE85E,0xE85F,0xBE4D,0xE860,0xE85B,0xE85C,0xBE4A, INVALC,0xBE4B,0xE85D,0xBE4C,INVALC,0xEBDB,INVALC,0xEBDC, 0xEBD9,0xEBDA,0xBFF4,0xEBD8, /* Range 0x9199 - 0x91DD, array index: 0x3BF5 */ 0xEEC8,0xEEC5,0xEEC7,0xC1E0,0xEECB,0xC1DF,0xEEC9,0xEECC, 0xEECA,0xEEC6,0xC1DE,INVALC,0xF14F,INVALC,0xF150,0xF14E, INVALC,0xF152,0xC2E5,0xC2E6,0xF35F,0xC3E7,0xF151,0xF35E, 0xC3E6,0xF4E5,0xF4E6,0xC4BF,0xF4E4,INVALC,0xF4E3,INVALC, 0xF65D,0xC548,INVALC,0xF849,0xF8C8,0xF8C7,INVALC,0xC643, 0xC65D,0xF8C9,0xF971,INVALC,0xC66F,0xA8BC,0xAAF6,INVALC, 0xB956,INVALC,0xC4C0,0xA8BD,0xADAB,0xB3A5,0xB671,0xC2E7, 0xAAF7,INVALC,0xD0C1,0xD0C0,0xD442,INVALC,0xB078,0xB076, 0xB07A,0xD444,INVALC,0xB079,0xB077, /* Range 0x91E2 - 0x91EE, array index: 0x3C3A */ 0xD443,0xB3A8,0xD7FC,INVALC,0xB3A7,0xB3A9,0xD842,0xB3AB, 0xD7FE,0xD840,0xD7F7,0xB3AA,0xD843, /* Range 0x91F1 - 0x91F9, array index: 0x3C47 */ 0xD7F9,INVALC,0xD7FA,0xD7F8,0xB3A6,INVALC,0xD841,0xD7FB, 0xD7FD, /* Range 0x91FD - 0x921E, array index: 0x3C50 */ 0xDC6D,INVALC,0xDC6C,0xDC6A,0xDC62,0xDC71,0xDC65,0xDC6F, 0xDC76,0xDC6E,0xB679,INVALC,0xB675,0xDC63,INVALC,0xDC69, 0xB677,INVALC,0xDC68,0xB678,0xB67A,0xDC6B,INVALC,0xB672, 0xB673,0xDC77,0xDC75,INVALC,0xDC74,0xDC66,INVALC,0xDC72, INVALC,0xB676, /* Range 0x9223 - 0x9227, array index: 0x3C72 */ 0xB674,0xDC73,0xDC64,0xDC67,0xDC70, /* Range 0x922D - 0x9240, array index: 0x3C77 */ 0xE4BA,0xE0B7,INVALC,0xE0B0,0xE0C3,0xE0CC,0xE0B3,0xB961, INVALC,0xE0C0,0xB957,0xB959,0xB965,0xE0B1,INVALC,INVALC, 0xB95A,0xB95C,0xB966,0xB95B, /* Range 0x9245 - 0x925B, array index: 0x3C8B */ 0xB964,0xE0B9,INVALC,0xE0AE,0xB962,0xE0B8,0xB95E,0xE0CA, 0xB963,0xE0C8,0xE0BC,0xE0C6,0xB960,0xE0AF,0xE0C9,0xE0C4, INVALC,0xE0CB,0xB958,INVALC,INVALC,0xB967,0xB95D, /* Range 0x9260 - 0x9267, array index: 0x3CA2 */ 0xE0BD,0xE0C1,INVALC,0xE0C5,0xB95F,0xE0B4,0xE0B2,0xE0BE, /* Range 0x926C - 0x9272, array index: 0x3CAA */ 0xE0BB,0xE0BA,INVALC,0xE0BF,0xE0C2,INVALC,0xE0C7, /* Range 0x9276 - 0x928E, array index: 0x3CB1 */ 0xE478,INVALC,0xBBC7,0xE4A4,0xE47A,0xBBCC,0xBBD0,0xE4AD, 0xE4B5,0xE4A6,0xBBC8,INVALC,0xE4AA,0xE0B6,INVALC,0xBBC9, 0xE4B1,0xE4B6,0xE4AE,INVALC,0xE4B0,0xE4B9,0xE4B2,0xE47E, 0xE4A9, /* Range 0x9291 - 0x92AC, array index: 0x3CCA */ 0xBBD1,INVALC,0xBBCD,0xE47C,0xE4AB,0xBBCB,0xE4A5,0xBBCA, 0xE4B3,0xE4A2,0xE479,0xBBCE,0xE4B8,INVALC,INVALC,0xE47B, 0xE4AF,0xE4AC,0xE4A7,0xE477,0xE476,0xE4A1,0xE4B4,0xBBCF, 0xE4B7,0xE47D,0xE4A3,0xBE52, /* Range 0x92B2 - 0x92B7, array index: 0x3CE6 */ 0xBE5A,0xBE55,0xE8A4,0xE8A1,0xE867,0xBE50, /* Range 0x92C0 - 0x92E1, array index: 0x3CEC */ 0xE865,0xBE54,0xE871,0xE863,0xE864,0xBE4E,0xE8A3,0xBE58, 0xE874,0xE879,0xE873,0xEBEE,0xE86F,0xE877,0xE875,0xE868, 0xE862,0xE87D,0xBE57,0xE87E,INVALC,0xE878,INVALC,0xE86D, 0xE86B,0xE866,INVALC,INVALC,INVALC,0xE86E,0xE87B,0xE86A, 0xE87A,0xE8A2, /* Range 0x92E4 - 0x92F1, array index: 0x3D0E */ 0xBE53,INVALC,0xE876,0xE87C,0xE872,0xE86C,0xBE51,INVALC, INVALC,INVALC,0xE4A8,0xE870,0xBE59,0xE869, /* Range 0x92F7 - 0x9339, array index: 0x3D1C */ 0xEBF4,0xBFF7,0xEBF3,0xEBF0,0xEC44,0xBFFB,INVALC,0xEC41, 0xEBF8,0xEC43,0xEBE9,0xEBF6,INVALC,0xBFFD,INVALC,0xEBE1, INVALC,0xEBDF,0xEC42,INVALC,0xEC40,0xEBFE,0xEBED,0xEBEC, 0xEBE2,0xC040,INVALC,0xEBE8,0xEBF2,0xEBFD,0xC043,0xEC45, INVALC,0xC1E8,0xC045,0xBFFE,0xEBE6,INVALC,0xEBEF,0xEBDE, 0xEBE0,0xBFF5,0xC042,0xBFFA,0xEBE7,0xEBF7,0xEBF1,0xC041, 0xEBDD,0xC1E3,0xEBF9,0xEBFC,0xBFFC,INVALC,0xEBEB,0xC044, 0xBFF9,INVALC,INVALC,INVALC,0xBFF8,0xEBF5,0xEBFB,0xBFF6, INVALC,0xEBE4,0xEBFA, /* Range 0x9346 - 0x9367, array index: 0x3D5F */ 0xEBEA,0xEED2,INVALC,0xEED7,0xC1E5,0xC1E7,0xEEDD,0xC1E1, 0xEEEC,0xEEE3,0xEED8,0xEED9,0xEEE2,INVALC,0xC1EE,0xEEE1, 0xEED1,0xEEE0,0xEED4,0xEEED,0xC1ED,0xC1EB,0xEED5,INVALC, 0xEEE8,INVALC,0xEEDA,0xEEE7,INVALC,0xEEE9,0xEED0,0xC1E6, INVALC,0xEEEA, /* Range 0x9375 - 0x9383, array index: 0x3D81 */ 0xC1E4,0xEED6,0xEEE5,INVALC,0xEEDF,0xEBE3,0xEEE6,0xEED3, INVALC,0xC1E9,INVALC,0xEEEB,INVALC,0xC1E2,0xEECE, /* Range 0x9388 - 0x93B7, array index: 0x3D90 */ 0xF160,0xF159,0xC2E9,INVALC,0xF154,0xF163,0xF15B,0xEEDC, INVALC,0xF165,0xF155,INVALC,0xC2E8,0xF15F,0xC2EA,0xC2F2, 0xC2F0,0xF161,0xC2F1,0xF157,INVALC,0xF158,0xF15D,0xF162, INVALC,0xEECD,0xC2EB,0xF16A,0xF167,0xF16B,0xF15E,0xF15A, 0xF168,0xF36A,0xF15C,INVALC,0xC2EE,INVALC,0xC2ED,0xEECF, 0xC2EF,0xF164,0xF166,0xC2EC,0xF169,0xF153,INVALC,0xF156, /* Range 0x93C0 - 0x93E8, array index: 0x3DC0 */ 0xF373,INVALC,0xF363,0xC3EB,0xF371,INVALC,INVALC,0xF361, 0xC3EC,INVALC,0xF36C,INVALC,0xF368,0xC3F1,0xF372,0xF362, 0xF365,0xC3E9,0xF374,INVALC,0xF36D,0xF370,0xC3EF,0xC3F4, 0xC3F2,0xF369,0xF364,INVALC,0xC3ED,0xC3EE,0xF360,0xC3EA, INVALC,0xC3E8,0xC3F0,0xF36F,0xC3F3,INVALC,0xF36B,0xF375, 0xC3F5, /* Range 0x93F5 - 0x9400, array index: 0x3DE9 */ 0xF4F3,0xF542,0xF4F5,0xF4FC,0xF366,0xF4FA,0xF4E9,0xF540, 0xC4C3,0xF4ED,0xF4FE,0xF4F4, /* Range 0x9406 - 0x9419, array index: 0x3DF5 */ 0xF544,0xF4F6,INVALC,0xF4FB,0xF4FD,0xF4E7,0xF541,0xF4F2, 0xF4F7,0xF4EB,0xF4EF,0xF543,0xF4F9,0xF4E8,0xF4EC,0xF4EE, 0xF4F8,INVALC,0xC4C1,0xF4F1, /* Range 0x9428 - 0x9452, array index: 0x3E09 */ 0xF4F0,0xF661,0xF666,0xC54F,0xF668,INVALC,0xC549,INVALC, 0xF664,0xF66A,0xC54E,0xC54A,INVALC,0xC54B,0xF660,0xF667, 0xC54D,0xF665,0xC54C,0xF65F,0xF663,0xF662,INVALC,0xF65E, 0xF669,INVALC,INVALC,INVALC,0xC5B1,0xF76D,0xF770,0xF76C, 0xF76E,0xF76F,0xF769,0xF76A,0xF767,INVALC,INVALC,0xF76B, 0xF768,0xC5B2,0xC5B3, /* Range 0x9460 - 0x9483, array index: 0x3E34 */ 0xC5E0,INVALC,0xF84A,0xC5DF,0xC5E1,INVALC,INVALC,INVALC, 0xF8CB,0xF8CC,0xC644,0xF8CA,INVALC,0xF953,0xF952,0xF954, 0xC65F,0xF955,0xC65E,0xF956,0xF972,0xF975,0xF974,0xC668, 0xF973,INVALC,INVALC,INVALC,0xC672,0xC670,0xC671,0xC677, 0xF9C0,0xF9C1,0xF9BF,0xF9C9, /* Range 0x957A - 0x957D, array index: 0x3E58 */ 0xD844,0xDC78,0xE8A5,0xF376, /* Range 0x9588 - 0x9594, array index: 0x3E5C */ 0xD846,0xB3AC,INVALC,0xB67D,0xDC7A,0xDC79,0xB6A3,0xB67C, 0xDC7B,0xB67E,0xB6A2,0xB6A1,0xB67B, /* Range 0x959B - 0x95C0, array index: 0x3E69 */ 0xE0D0,0xE0CE,INVALC,0xE0CF,0xE0CD,INVALC,0xBBD2,INVALC, 0xBBD5,0xBBD7,0xBBD6,INVALC,INVALC,0xBBD3,0xBBD4,INVALC, 0xE8A7,0xE8A6,0xBE5B,0xE8A8,INVALC,0xE8A9,0xBE5C,INVALC, INVALC,INVALC,0xEC4D,0xEC4B,0xEEF3,INVALC,0xEC49,0xEC4A, 0xC046,0xEC46,0xEC4E,0xEC48,0xEC4C,0xEEEF, /* Range 0x95C3 - 0x95E5, array index: 0x3E8F */ 0xEEF1,INVALC,0xEEF2,0xC1F3,0xEEEE,0xC1F2,0xEEF0,0xC1EF, 0xC1F0,0xC1F1,0xEC47,INVALC,INVALC,0xC2F5,0xF16E,0xF16C, 0xF16D,0xC2F3,0xC2F6,0xC2F4,INVALC,INVALC,INVALC,0xF377, 0xF378,0xC3F6,INVALC,0xF545,0xF547,0xF546,0xC4C4,0xC550, 0xF66D,0xF66C,0xF66B, /* Range 0x961E - 0x9624, array index: 0x3EB2 */ 0xC9AA,INVALC,0xCA58,0xA6E9,0xCA56,0xCA59,0xCA57, /* Range 0x962A - 0x9632, array index: 0x3EB9 */ 0xA8C1,INVALC,0xA8C2,0xCBB0,0xA8BF,0xCBAF,0xCBAD,0xA8C0, 0xA8BE, /* Range 0x9639 - 0x9644, array index: 0x3EC2 */ 0xCDD8,0xCDDB,0xAAFD,0xCDDA,0xCDD9,INVALC,0xAAFC,0xAAFB, INVALC,0xAB40,0xCDDC,0xAAFE, /* Range 0x964A - 0x9654, array index: 0x3ECE */ 0xD0C6,0xADAE,0xADAF,0xADB0,0xD0C7,0xD0C3,0xADAD,0xD0C4, INVALC,0xD0C5,0xD0C2, /* Range 0x965B - 0x9664, array index: 0x3ED9 */ 0xB0A1,0xD445,0xB0A2,0xB0A5,0xD446,INVALC,0xB07E,0xB07C, 0xB07D,0xB0A3, /* Range 0x966A - 0x96B4, array index: 0x3EE3 */ 0xB3AD,0xD849,0xB3B5,0xD848,INVALC,0xD84B,0xB3B1,0xD84A, 0xB6AB,0xB3AF,0xB3B2,0xB3AE,0xB3B3,0xB3B4,0xB3B0,INVALC, INVALC,INVALC,0xD847,0xB6A7,0xDC7D,INVALC,0xDCA3,INVALC, INVALC,0xDCA2,0xB6AC,0xB6A8,0xB6A9,0xDC7C,0xDC7E,0xDCA1, 0xB6A4,0xB6A6,INVALC,0xB6AA,0xB6A5,INVALC,INVALC,0xE0D3, 0xE0D1,0xE0D2,0xB96A,0xB96B,INVALC,0xE0D4,0xB969,0xBBD8, INVALC,0xBBDA,0xBBD9,INVALC,0xE4BB,INVALC,INVALC,0xE4BC, 0xE8AB,INVALC,0xE8AA,INVALC,INVALC,0xC047,0xC048,0xEC4F, 0xC049,INVALC,0xEEF6,INVALC,0xEEF4,INVALC,0xEEF5,0xC1F4, INVALC,0xF16F,0xC3F7, /* Range 0x96B8 - 0x96EA, array index: 0x3F2E */ 0xC1F5,0xAB41,INVALC,0xB0A6,0xD447,INVALC,INVALC,0xD84C, 0xB3B6,0xB6AD,0xDCA4,0xDCA6,0xB6AF,0xB6AE,0xB6B0,0xB6B1, 0xDCA5,0xB96E,0xB96F,0xB96D,0xBBDB,0xB96C,0xE0D5,INVALC, INVALC,INVALC,0xBBDC,0xE8AC,0xEC50,0xC04A,0xC1F6,0xF170, 0xF174,0xC2F9,0xF171,0xC2FA,0xC2F8,0xF175,0xC2FB,0xF173, INVALC,0xF379,0xC2F7,0xC3F8,INVALC,0xF8CD,INVALC,INVALC, 0xAB42,0xB3B8,0xB3B7, /* Range 0x96EF - 0x9713, array index: 0x3F61 */ 0xB6B2,0xDCA8,0xDCA7,0xB6B3,INVALC,INVALC,0xE0D9,0xB973, 0xB970,0xE0D8,0xB972,0xE0D6,0xB971,INVALC,0xE0D7,INVALC, 0xE4BD,0xBBDD,INVALC,0xE8AF,INVALC,0xBE5D,0xE8AD,0xBE5E, 0xBE5F,0xE8AE,0xBE60,INVALC,0xEC51,INVALC,0xC04E,0xC04B, 0xC050,0xEC53,0xC04C,0xEC52,0xC04F, /* Range 0x9718 - 0x9732, array index: 0x3F86 */ 0xEEF9,0xEEFB,INVALC,INVALC,0xC1F7,0xEEFA,0xC1F8,0xEEF8, 0xEEF7,INVALC,0xF177,0xF176,0xC2FC,0xF178,0xF37E,0xC3FA, 0xF37D,0xF37A,0xC3F9,0xF37B,0xF37C,INVALC,0xF548,0xF549, 0xC4C5,INVALC,0xC553, /* Range 0x9738 - 0x974B, array index: 0x3FA1 */ 0xC551,0xC552,0xF66F,INVALC,INVALC,0xC5B4,0xC5B5,0xF771, INVALC,INVALC,0xC645,0xF8CF,0xC647,INVALC,0xF8CE,0xF8D0, 0xC646,0xF957,INVALC,0xF9AD, /* Range 0x9758 - 0x9762, array index: 0x3FB5 */ 0xE4BE,INVALC,0xE8B0,0xC051,0xC052,INVALC,0xAB44,INVALC, 0xBE61,0xC3FB,0xADB1, /* Range 0x9766 - 0x9785, array index: 0x3FC0 */ 0xC053,INVALC,0xC5E2,0xADB2,0xD84D,INVALC,0xDCA9,INVALC, 0xDCAB,INVALC,0xDCAA,INVALC,0xE0DD,0xE0DA,0xB975,INVALC, 0xB976,0xE0DB,0xE0DC,INVALC,0xE4C0,0xE4C5,0xBBDE,0xE4BF, 0xE4C1,0xE4C8,0xE4C3,0xE4C7,0xE4C4,0xE4C2,0xE4C6,0xBBDF, /* Range 0x978A - 0x978F, array index: 0x3FE0 */ 0xE8B1,0xBE63,INVALC,0xBE62,0xE8B2,0xBE64, /* Range 0x9797 - 0x97AE, array index: 0x3FE6 */ 0xEC55,0xC054,0xEC54,0xEEFC,INVALC,0xEEFE,0xEF41,0xEF40, INVALC,0xC1F9,0xEEFD,0xF1A1,0xC2FD,0xF17D,0xF1A2,0xC2FE, INVALC,0xF17B,INVALC,0xF17E,0xF17C,0xF179,0xC340,0xF17A, /* Range 0x97C1 - 0x97E5, array index: 0x3FFE */ 0xC5B7,INVALC,0xC5B6,0xF84F,0xF850,0xC648,0xF8D1,INVALC, 0xC669,INVALC,0xADB3,0xB6B4,0xE4CA,0xE4C9,0xE8B5,0xE8B4, INVALC,INVALC,0xC1FA,0xEF43,0xEF42,0xF1A5,0xF1A3,0xF1A6, 0xF1A4,INVALC,INVALC,0xC3FC,0xF3A4,0xF3A5,0xF3A6,INVALC, 0xF671,INVALC,0xF772,INVALC,0xF8D2, /* Range 0x97F6 - 0x9821, array index: 0x4023 */ 0xBBE0,INVALC,0xEC58,0xC341,0xF1A7,0xC3FD,INVALC,0xF54C, 0xF54D,0xC554,0xF851,0xADB6,0xB3BB,0xB3BC,0xD84E,0xB6B5, 0xB6B6,0xDCAC,0xB6B7,INVALC,0xB97A,INVALC,0xB97C,0xE0DF, 0xE0E0,0xE0DE,0xB977,0xB978,0xB97B,0xB979,INVALC,INVALC, 0xE4CB,0xBBE1,0xBBE2,INVALC,INVALC,0xE8BC,0xBE67,0xE8B7, 0xE8B6,INVALC,0xE8BB,0xBE65, /* Range 0x9824 - 0x9832, array index: 0x404F */ 0xC05B,INVALC,0xE8B8,0xE8BD,0xE8BA,0xE8B9,INVALC,0xBE66, INVALC,0xC059,INVALC,0xEC5A,0xC055,INVALC,0xEC5B, /* Range 0x9835 - 0x983B, array index: 0x405E */ 0xEC59,INVALC,0xC058,0xC056,0xC05A,INVALC,0xC057, /* Range 0x9841 - 0x9874, array index: 0x4065 */ 0xEF45,INVALC,0xEF4A,0xEF46,0xEF49,0xC1FB,INVALC,0xEDD4, 0xEF48,0xEF47,INVALC,0xC344,0xC342,0xC345,0xC343,0xF1A8, 0xF1A9,0xF1AA,0xC346,INVALC,INVALC,INVALC,0xF3AA,0xC440, 0xF3A8,INVALC,0xC441,0xF3A7,0xF3A9,0xC3FE,0xF551,0xF54E, INVALC,0xF54F,0xF550,0xF672,0xC556,INVALC,0xC555,INVALC, 0xF774,0xF773,0xC5B8,INVALC,INVALC,INVALC,0xC5E3,0xC649, 0xC660,0xF958,0xF9AE,0xF9AF, /* Range 0x98A8 - 0x98B3, array index: 0x4099 */ 0xADB7,0xDCAD,INVALC,INVALC,0xE0E1,0xE4CC,0xE4CD,0xBBE3, INVALC,0xBBE4,0xE8BE,0xBE68, /* Range 0x98B8 - 0x98C6, array index: 0x40A5 */ 0xF1AB,INVALC,0xC347,0xF3AD,0xC442,0xF3AC,0xF3AE,0xF3AB, 0xF675,0xF552,0xF553,INVALC,0xC4C6,INVALC,0xF674, /* Range 0x98E7 - 0x98EF, array index: 0x40B4 */ 0xB6B8,INVALC,0xB6BB,0xB6B9,0xDCAE,INVALC,0xB6BD,INVALC, 0xB6BA, /* Range 0x98F9 - 0x9935, array index: 0x40BD */ 0xE0E3,0xE8C0,INVALC,0xB97D,0xB9A1,0xB9A2,INVALC,0xE4CF, INVALC,0xE4CE,0xBBE5,INVALC,0xBBE6,INVALC,0xE4D0,0xE8BF, 0xBBE8,0xBE69,INVALC,0xBBE7,INVALC,INVALC,INVALC,0xC05C, 0xE8C1,0xBE6B,0xBE6A,0xE8C2,0xE8C5,0xE8C3,0xE8C4,0xBE6C, INVALC,0xC061,0xC05F,INVALC,INVALC,0xC05E,0xEC5D,INVALC, 0xC060,INVALC,INVALC,0xEC5C,0xEF4B,INVALC,0xEC5E,0xC05D, 0xEC5F,0xEF4E,0xEF4C,0xEF4D,0xEF52,0xC34B,0xEF51,0xEF54, 0xEF53,0xEF50,0xEF4F,INVALC,0xC1FD, /* Range 0x993A - 0x9961, array index: 0x40FA */ 0xF1AE,INVALC,0xF1AD,0xC34A,0xC348,0xC349,INVALC,0xF1AC, INVALC,0xF3B1,INVALC,0xC443,INVALC,0xF3B0,0xF3AF,0xC444, INVALC,0xF558,0xF557,INVALC,0xF555,INVALC,0xF554,0xC4C8, 0xC4C7,0xF559,0xF776,0xC5B9,0xF677,0xC557,0xF676,0xF556, INVALC,0xF777,0xC5E4,INVALC,0xC661,0xF959,INVALC,0xF9B1, /* Range 0x9996 - 0x999E, array index: 0x4122 */ 0xADBA,0xD850,0xEF55,0xADBB,INVALC,INVALC,0xE4D2,0xE4D1, 0xEC60, /* Range 0x99A3 - 0x99C3, array index: 0x412B */ 0xEF56,INVALC,0xC34C,0xF3B2,0xF3B3,0xC4C9,INVALC,INVALC, 0xF9B2,0xB0A8,0xB6BF,0xB6BE,0xE0E4,0xE0E6,0xB9A4,0xE0E5, 0xB9A3,0xB9A5,0xE0E7,INVALC,INVALC,INVALC,0xE4D4,0xE4D6, 0xE4D5,INVALC,0xE4D8,INVALC,INVALC,INVALC,0xBBE9,0xE4D7, 0xE4D3, /* Range 0x99C9 - 0x99F1, array index: 0x414C */ 0xE8CC,INVALC,0xE8CF,0xE8D1,0xE8C7,0xE8CB,0xE8C8,0xBE6E, 0xBE71,0xBE73,0xE8C9,0xE8CA,0xBE72,0xE8CD,0xE8D0,0xE8CE, 0xBE74,INVALC,0xBE70,0xE8C6,0xBE6D,INVALC,0xBE6F,INVALC, INVALC,0xC063,0xEC66,0xEC64,0xEC63,INVALC,0xEC69,INVALC, 0xEC68,0xEC67,INVALC,0xEC62,0xC062,0xEC61,INVALC,0xEC65, 0xC064, /* Range 0x99F4 - 0x9A6B, array index: 0x4175 */ 0xEF5A,INVALC,0xEF5E,0xEF5B,0xEF5D,0xEF5C,0xEF59,0xEF5F, 0xEF62,0xEF60,0xEF61,0xC240,INVALC,0xC1FE,0xEF58,0xEF63, 0xF1B3,0xF1B6,0xF1B8,0xF1B7,INVALC,0xF1B1,0xF1B5,0xF1B0, INVALC,0xF1B2,0xC34D,0xF1AF,INVALC,0xF1B4,INVALC,INVALC, 0xF3C0,0xF3B5,0xC445,INVALC,INVALC,0xC446,0xF3B4,0xF3B9, 0xF3BF,0xF3B7,0xF3BE,INVALC,0xF3BB,INVALC,0xF3BA,0xF3BD, 0xF3B8,0xF3B6,INVALC,0xF3BC,INVALC,0xF560,0xF55E,0xC4CA, 0xF55D,0xF563,0xF561,INVALC,0xC4CB,0xF55C,0xF55A,INVALC, 0xF55B,0xC4CD,0xF55F,0xC4CC,0xF562,0xF678,0xF67E,INVALC, INVALC,0xF679,0xC55B,0xF6A1,0xC55A,0xF67D,0xF67C,0xC559, 0xF67B,0xC558,0xF67A,INVALC,0xF77D,0xF7A1,0xF77E,INVALC, 0xF77B,0xC5BB,0xF778,0xF77C,0xF7A3,INVALC,0xF7A2,0xF779, 0xF77A,0xC5BA,0xF852,0xC5E7,INVALC,0xF853,0xC5E5,0xC5E6, INVALC,INVALC,0xF8D3,0xC64A,0xF976,INVALC,0xC66A,INVALC, 0xF9B3,0xC66B,0xF9B4,0xF9B5,0xF9C3,0xF9C2,0xC67A,0xF9CD, /* Range 0x9AAD - 0x9AC2, array index: 0x41ED */ 0xE0E8,INVALC,0xBBEA,0xBBEB,0xE4DA,INVALC,0xE8D2,0xEC6C, INVALC,INVALC,0xBE75,0xC065,0xEC6A,INVALC,0xEC6D,0xC066, INVALC,0xEF64,0xEC6B,0xF1B9,0xC34E,0xF3C1, /* Range 0x9ACD - 0x9AD8, array index: 0x4203 */ 0xF6A2,INVALC,0xC55C,0xF7A4,0xC5EA,0xC5BC,0xC5E8,0xC5E9, 0xF8D4,0xC662,INVALC,0xB0AA, /* Range 0x9AEB - 0x9AFE, array index: 0x420F */ 0xE8D4,0xE8D3,0xC068,0xBE76,0xBE77,INVALC,0xE8D7,0xE8D6, 0xE8D5,INVALC,INVALC,0xEC6E,0xEC71,INVALC,0xEC70,0xEC6F, 0xC067,0xEF68,0xEF66,0xEF65, /* Range 0x9B01 - 0x9B61, array index: 0x4223 */ 0xEF67,INVALC,0xC34F,0xF1BC,0xF1BD,0xC350,INVALC,0xF1BB, INVALC,0xF3C3,0xF3C2,0xF3C5,0xC447,0xF3C4,INVALC,0xF567, 0xF569,0xF568,INVALC,INVALC,0xF6A3,0xF6A6,0xF6A4,0xF6A5, 0xF7A5,0xC5BD,INVALC,INVALC,INVALC,0xF854,0xF855,0xF856, INVALC,0xC64B,0xC663,0xF9B6,0xB0AB,INVALC,0xBE78,0xC069, 0xF1BE,INVALC,0xF7A6,INVALC,INVALC,0xF9C4,0xD44A,INVALC, 0xC67B,0xB0AC,0xEC72,INVALC,0xF1BF,INVALC,0xF3C6,INVALC, INVALC,0xF6A7,0xF7A7,0xB0AD,INVALC,0xE4DD,0xE4DE,INVALC, 0xBBED,0xBBEE,0xE8D9,0xBE7A,0xBE79,0xE8D8,INVALC,0xEF69, INVALC,0xF1C0,0xF1C2,0xF1C1,0xC353,0xC352,0xC351,INVALC, 0xC55E,0xF6A8,INVALC,0xC55D,0xF7A9,0xF7A8,INVALC,0xC64C, 0xF8D5,0xB3BD,0xE0EA,INVALC,INVALC,INVALC,0xE4E1,0xE4DF, 0xE4E0, /* Range 0x9B64 - 0x9B68, array index: 0x4284 */ 0xE8E2,INVALC,0xE8DD,0xE8DA,0xE8E1, /* Range 0x9B6F - 0x9B88, array index: 0x4289 */ 0xBE7C,0xE8E0,0xE8DC,INVALC,INVALC,0xE8DB,0xE8DF,0xE8DE, 0xBE7B,INVALC,INVALC,0xEC7D,0xEC78,0xEC76,0xECA1,0xEC77, INVALC,0xEC73,INVALC,0xEC79,INVALC,INVALC,0xEC74,0xEF72, 0xEC75,0xECA2, /* Range 0x9B90 - 0x9B95, array index: 0x42A3 */ 0xEC7C,0xC06A,0xEC7B,0xEC7A,INVALC,0xEC7E, /* Range 0x9B9E - 0x9BAF, array index: 0x42A9 */ 0xEF6C,INVALC,0xEF74,0xEF6F,0xEF73,INVALC,0xEF71,0xEF70, 0xEF6E,INVALC,0xEF6B,INVALC,0xC243,0xC242,INVALC,0xC244, 0xC241,0xEF75, /* Range 0x9BB5 - 0x9BB9, array index: 0x42BB */ 0xF1C8,0xF1CB,INVALC,0xF1C9,0xF1CD, /* Range 0x9BBD - 0x9BCA, array index: 0x42C0 */ 0xF1CE,INVALC,0xF1C6,0xC358,0xF1C7,INVALC,0xF1C5,0xF1CC, INVALC,0xF1C4,0xF1C3,0xC357,0xC355,0xC354, /* Range 0x9BD3 - 0x9BEC, array index: 0x42CE */ 0xF1CA,0xF3CF,0xF3D5,0xC44A,0xF3D0,INVALC,0xF3D3,0xF3D7, 0xC44B,0xF3D2,INVALC,0xF3CA,INVALC,0xF3C9,0xF3D6,0xF3CD, INVALC,0xF3CB,0xF3D4,0xF3CC,0xC449,0xC448,INVALC,0xF3C7, 0xF3C8,0xF3D1, /* Range 0x9C05 - 0x9C14, array index: 0x42E8 */ 0xF56D,0xF573,0xF571,0xF56B,0xF576,INVALC,0xF56A,INVALC, 0xC4CF,0xF572,INVALC,INVALC,INVALC,0xF56E,0xC4CE,0xF575, /* Range 0x9C21 - 0x9C41, array index: 0x42F8 */ 0xF6B1,INVALC,0xF6AD,0xF6B0,0xC560,INVALC,INVALC,0xF6AE, 0xF6AF,INVALC,0xF6A9,0xF6AC,0xC55F,INVALC,INVALC,INVALC, 0xC5BF,0xF7B4,0xF7AF,0xF7B3,INVALC,0xF7B6,0xF7B2,INVALC, 0xF7AE,INVALC,0xC5C1,0xF7B1,0xF7B5,0xC5C0,0xF7AC,0xF570, 0xF7B0, /* Range 0x9C46 - 0x9C59, array index: 0x4319 */ 0xF7AA,INVALC,0xF7AB,0xC5BE,0xF85A,0xF85C,0xF85F,0xF85B, 0xF860,INVALC,0xF859,INVALC,0xF857,INVALC,0xC5EB,0xF85D, 0xC5ED,0xC5EC,0xF858,0xF85E, /* Range 0x9C5E - 0x9C68, array index: 0x432D */ 0xF8DA,0xC64D,0xF8DB,INVALC,0xF8D9,0xF8D6,INVALC,INVALC, 0xF8D8,0xF8D7,0xF95A, /* Range 0x9C71 - 0x9C7A, array index: 0x4338 */ 0xF979,INVALC,0xF978,0xF977,0xF97A,INVALC,0xC673,0xC674, 0xF9CA,0xF9CE, /* Range 0x9CE5 - 0x9CEA, array index: 0x4342 */ 0xB3BE,0xDCAF,0xE0ED,INVALC,0xB9A7,0xE0EB, /* Range 0x9CF1 - 0x9D09, array index: 0x4348 */ 0xE4E2,0xE4E3,0xBBF1,0xBBEF,0xE4E4,0xBBF0,0xE8E8,INVALC, 0xE8EB,0xE8E5,0xE8EC,0xE8E4,0xE8E6,INVALC,0xE8E7,0xE8EA, INVALC,INVALC,0xBEA1,0xE8EF,0xE8EE,0xBE7D,0xE8E9,0xE8ED, 0xBE7E, /* Range 0x9D14 - 0x9D38, array index: 0x4361 */ 0xECA7,0xC06B,INVALC,0xECA4,0xECAA,0xECAD,INVALC,0xC070, INVALC,0xECA9,0xECA6,0xECAE,0xECA5,INVALC,0xECAB,0xC06C, INVALC,0xECA3,0xC06D,INVALC,0xC06E,0xECA8,INVALC,INVALC, INVALC,0xEFA9,0xEF7A,0xEF7B,0xEF7E,0xEF7C,INVALC,0xEF76, INVALC,INVALC,0xEF79,0xEFA5,0xEF7D, /* Range 0x9D3B - 0x9D45, array index: 0x4386 */ 0xC245,INVALC,0xEFA7,0xEFA4,0xC246,0xEFA6,0xEF77,0xEFA2, 0xEFA3,INVALC,0xEFA1, /* Range 0x9D4A - 0x9D4C, array index: 0x4391 */ 0xF1D2,0xF1D4,0xF1D7, /* Range 0x9D4F - 0x9D61, array index: 0x4394 */ 0xF1D1,INVALC,0xC359,0xF1D9,0xF1D0,0xF1DA,INVALC,0xF1D6, 0xF1D8,0xF1DC,0xF1D5,0xF1DD,0xF1D3,0xF1CF,0xC35A,INVALC, 0xF1DB,0xC35B,0xC44D, /* Range 0x9D67 - 0x9D8C, array index: 0x43A7 */ 0xEF78,0xF3F1,0xF3E8,0xC44F,0xF3E4,0xC450,INVALC,INVALC, 0xF3ED,0xF3E7,0xF3DD,0xC44E,0xF3EA,0xF3E5,0xF3E6,INVALC, 0xF3D8,0xF3DF,0xF3EE,INVALC,0xF3EB,INVALC,0xF3E3,INVALC, 0xF3EF,0xF3DE,0xF3D9,0xF3EC,INVALC,0xF3DB,0xF3E9,0xF3E0, 0xF3F0,0xF3DC,0xC44C,0xF3DA,0xF3E1,0xF3E2, /* Range 0x9D94 - 0x9E1E, array index: 0x43CD */ 0xF5A2,INVALC,0xF5AE,0xF5A5,0xF57C,0xF578,0xF5A7,0xF57E, 0xF5A3,0xF57A,0xF5AA,0xF577,0xF5A1,0xF5A6,0xF5A8,0xF5AB, 0xF579,INVALC,0xF5AF,0xF5B0,0xF5A9,0xF5AD,0xF5A4,INVALC, 0xF6C1,0xF6C4,INVALC,0xC561,INVALC,0xF6C3,0xF6C8,0xF6C6, 0xC562,0xF6BD,0xF6B3,0xF6B2,0xC564,0xF6BF,0xF6C0,0xF6BC, 0xF6B4,INVALC,0xF6B9,0xF5AC,INVALC,0xF6B5,0xC563,0xF6BB, INVALC,0xF6BA,INVALC,0xF6B6,0xF6C2,INVALC,0xF6B7,0xF7BB, 0xF6C5,0xF6C7,0xF6BE,0xF6B8,0xF7BC,0xF7BE,0xF7B8,0xC5C2, INVALC,0xF7C5,0xF7C3,0xC5C3,0xF7C2,0xF7C1,0xF7BA,0xF7B7, 0xF7BD,0xF7C6,0xF7B9,0xF7BF,INVALC,0xF869,0xF86E,0xF864, 0xF867,0xC5EE,0xF86B,INVALC,0xF872,0xF7C0,INVALC,0xF865, 0xF86F,0xF873,0xF86A,0xF863,0xF86D,INVALC,0xF86C,0xF871, 0xF870,0xF7C4,0xF868,0xF862,0xF866,0xC64E,0xC64F,0xF861, INVALC,0xF8E6,0xF8DD,0xF8E5,0xF8E2,0xF8E3,0xF8DC,0xF8DF, 0xF8E7,0xF8E1,0xF8E0,0xF8DE,INVALC,0xF8E4,INVALC,0xF95D, INVALC,0xF95E,INVALC,0xF960,0xF95F,0xF962,0xF961,0xF97C, 0xF97B,0xF9B7,INVALC,0xF9B8,INVALC,0xF9C5,0xC678,0xC67C, INVALC,0xF9CF,0xC67D, /* Range 0x9E79 - 0x9E94, array index: 0x4458 */ 0xC4D0,0xF6C9,INVALC,0xC650,0xC651,INVALC,0xB3C0,0xE0EE, INVALC,0xB9A8,0xE8F0,INVALC,INVALC,0xECB0,0xECB1,0xECAF, 0xEFAB,0xEFAA,0xC247,0xF1DF,0xEFAC,0xF1DE,INVALC,INVALC, 0xF3F3,0xC451,0xC453,0xF3F2, /* Range 0x9E97 - 0x9EA9, array index: 0x4474 */ 0xC452,INVALC,0xF5B1,0xF5B3,0xF5B2,0xF6CA,0xC565,INVALC, 0xC5EF,0xF8E8,0xF963,INVALC,INVALC,0xF9D2,0xB3C1,INVALC, 0xE4E5,INVALC,0xBEA2, /* Range 0x9EB4 - 0x9EB7, array index: 0x4487 */ 0xC454,0xC4D1,0xF7C7,0xF9CB, /* Range 0x9ECC - 0x9EE8, array index: 0x448B */ 0xC664,0xB6C1,0xBEA4,0xC248,0xF875,0xB6C2,INVALC,0xE8F1, 0xC072,0xECB4,0xECB5,INVALC,0xC071,INVALC,0xEFAF,0xC24C, 0xC24A,0xC24B,0xC249,0xF1E0,0xC35C,INVALC,INVALC,INVALC, 0xF5B5,0xF5B4,0xF5B7,0xF5B6,0xC4D2, /* Range 0x9EEB - 0x9F01, array index: 0x44A8 */ 0xF6CB,INVALC,0xF6CD,0xF6CC,0xC566,0xF7C8,INVALC,0xF876, 0xF877,0xC5F0,0xF964,0xF97D,0xC675,INVALC,0xDCB0,0xECB6, 0xEFB0,0xF3F5,0xE0EF,INVALC,0xEFB1,0xF1E2,0xF1E1, /* Range 0x9F06 - 0x9F38, array index: 0x44BF */ 0xF878,0xC652,INVALC,0xF965,0xF97E,INVALC,INVALC,INVALC, 0xB9A9,0xE8F2,0xE8F3,INVALC,0xECB7,0xB9AA,INVALC,0xC35D, 0xF1E3,INVALC,0xF6CF,0xC567,0xF6D0,0xF6CE,0xF879,INVALC, 0xF8E9,INVALC,0xB9AB,INVALC,0xEFB4,0xEFB3,0xEFB2,0xF1E4, INVALC,INVALC,0xF1E8,0xF1E7,0xF1E6,0xF1E5,0xC35E,0xF3F6, 0xF5B9,0xC4D3,0xF5B8,0xF6D1,0xF7CB,0xF7CA,0xC5C4,0xF7C9, 0xF87C,0xF87B,0xF87A, /* Range 0x9F3D - 0x9F4F, array index: 0x44F2 */ 0xECB8,0xC24D,INVALC,0xF3F7,0xF3F8,0xF7CC,0xF87D,INVALC, INVALC,0xF8EA,0xF966,0xF9B9,0xF9D4,0xBBF4,0xC24E,0xF1E9, 0xF3F9,0xF6D2,0xF87E, /* Range 0x9F52 - 0x9F7B, array index: 0x4505 */ 0xBEA6,INVALC,0xEFB5,0xF1EA,0xF3FA,0xF3FB,0xF3FC,0xF5BE, INVALC,0xF5BA,0xC568,0xF5BD,0xF5BC,0xC4D4,0xF5BB,0xC4D6, INVALC,0xC4D5,0xF6D4,0xF6D3,0xC569,0xC56A,INVALC,INVALC, 0xC5C6,0xF7CD,0xC5C5,INVALC,0xF8A3,0xF8A4,0xF8A2,0xF8A1, 0xC654,INVALC,0xF8EB,0xF8EC,0xF8ED,0xC653,0xF967,0xF96A, 0xF969,0xF968, /* Range 0x9F90 - 0x9F95, array index: 0x452F */ 0xC365,0xF5BF,0xF6D5,INVALC,0xC5C7,0xF7CE, /* Range 0xFE30 - 0xFE44, array index: 0x4535 */ 0xA14A,0xA157,INVALC,0xA159,0xA15B,0xA15F,0xA160,0xA163, 0xA164,0xA167,0xA168,0xA16B,0xA16C,0xA16F,0xA170,0xA173, 0xA174,0xA177,0xA178,0xA17B,0xA17C, /* Range 0xFE49 - 0xFE6B, array index: 0x454A */ 0xA1C6,0xA1C7,0xA1CA,0xA1CB,0xA1C8,0xA1C9,0xA15C,0xA14D, INVALC,0xA14F,INVALC,0xA151,0xA152,0xA153,0xA154,INVALC, 0xA17D,0xA17E,0xA1A1,0xA1A2,0xA1A3,0xA1A4,0xA1CC,0xA1CD, 0xA1CE,0xA1DE,0xA1DF,0xA1E0,0xA1E1,0xA1E2,INVALC,INVALC, 0xA24C,0xA24D,0xA24E, /* Range 0xFF01 - 0xFF3C, array index: 0x456D */ 0xA149,INVALC,0xA1AD,0xA243,0xA248,0xA1AE,INVALC,0xA15D, 0xA15E,0xA1AF,0xA1CF,0xA141,0xA1D0,0xA144,0xA241,0xA2AF, 0xA2B0,0xA2B1,0xA2B2,0xA2B3,0xA2B4,0xA2B5,0xA2B6,0xA2B7, 0xA2B8,0xA147,0xA146,0xA1D5,0xA1D7,0xA1D6,0xA148,0xA249, 0xA2CF,0xA2D0,0xA2D1,0xA2D2,0xA2D3,0xA2D4,0xA2D5,0xA2D6, 0xA2D7,0xA2D8,0xA2D9,0xA2DA,0xA2DB,0xA2DC,0xA2DD,0xA2DE, 0xA2DF,0xA2E0,0xA2E1,0xA2E2,0xA2E3,0xA2E4,0xA2E5,0xA2E6, 0xA2E7,0xA2E8,INVALC,0xA242, /* Range 0xFF3F - 0xFF5D, array index: 0x45A9 */ 0xA1C4,INVALC,0xA2E9,0xA2EA,0xA2EB,0xA2EC,0xA2ED,0xA2EE, 0xA2EF,0xA2F0,0xA2F1,0xA2F2,0xA2F3,0xA2F4,0xA2F5,0xA2F6, 0xA2F7,0xA2F8,0xA2F9,0xA2FA,0xA2FB,0xA2FC,0xA2FD,0xA2FE, 0xA340,0xA341,0xA342,0xA343,0xA161,0xA155,0xA162, /* Unranged codes (565 codes) */ /* Array index: 0x45C8 */ 0x00A2,0xA246, /* Array index: 0x45C8 */ 0x00A3,0xA247, /* Array index: 0x45C8 */ 0x00A5,0xA244, /* Array index: 0x45C8 */ 0x00A7,0xA1B1, /* Array index: 0x45C8 */ 0x00B0,0xA258, /* Array index: 0x45C8 */ 0x00B1,0xA1D3, /* Array index: 0x45C8 */ 0x00B7,0xA150, /* Array index: 0x45C8 */ 0x00D7,0xA1D1, /* Array index: 0x45C8 */ 0x00F7,0xA1D2, /* Array index: 0x45C8 */ 0x02D9,0xA3BB, /* Array index: 0x45C8 */ 0x0401,0xC7B3, /* Array index: 0x45C8 */ 0x2013,0xA156, /* Array index: 0x45C8 */ 0x2014,0xA158, /* Array index: 0x45C8 */ 0x2018,0xA1A5, /* Array index: 0x45C8 */ 0x2019,0xA1A6, /* Array index: 0x45C8 */ 0x201C,0xA1A7, /* Array index: 0x45C8 */ 0x201D,0xA1A8, /* Array index: 0x45C8 */ 0x2022,0xA145, /* Array index: 0x45C8 */ 0x2025,0xA14C, /* Array index: 0x45C8 */ 0x2026,0xA14B, /* Array index: 0x45C8 */ 0x2032,0xA1AC, /* Array index: 0x45C8 */ 0x2035,0xA1AB, /* Array index: 0x45C8 */ 0x203B,0xA1B0, /* Array index: 0x45C8 */ 0x203E,0xA1C2, /* Array index: 0x45C8 */ 0x2103,0xA24A, /* Array index: 0x45C8 */ 0x2105,0xA1C1, /* Array index: 0x45C8 */ 0x2109,0xA24B, /* Array index: 0x45C8 */ 0x221A,0xA1D4, /* Array index: 0x45C8 */ 0x2223,0xA1FD, /* Array index: 0x45C8 */ 0x2225,0xA1FC, /* Array index: 0x45C8 */ 0x222E,0xA1ED, /* Array index: 0x45C8 */ 0x2234,0xA1EF, /* Array index: 0x45C8 */ 0x2235,0xA1EE, /* Array index: 0x45C8 */ 0x223C,0xA1E3, /* Array index: 0x45C8 */ 0x2252,0xA1DC, /* Array index: 0x45C8 */ 0x2260,0xA1DA, /* Array index: 0x45C8 */ 0x2261,0xA1DD, /* Array index: 0x45C8 */ 0x2266,0xA1D8, /* Array index: 0x45C8 */ 0x2267,0xA1D9, /* Array index: 0x45C8 */ 0x22A5,0xA1E6, /* Array index: 0x45C8 */ 0x22BF,0xA1E9, /* Array index: 0x45C8 */ 0x2500,0xA277, /* Array index: 0x45C8 */ 0x2502,0xA278, /* Array index: 0x45C8 */ 0x250C,0xA27A, /* Array index: 0x45C8 */ 0x2510,0xA27B, /* Array index: 0x45C8 */ 0x2514,0xA27C, /* Array index: 0x45C8 */ 0x2518,0xA27D, /* Array index: 0x45C8 */ 0x251C,0xA275, /* Array index: 0x45C8 */ 0x2524,0xA274, /* Array index: 0x45C8 */ 0x252C,0xA273, /* Array index: 0x45C8 */ 0x2534,0xA272, /* Array index: 0x45C8 */ 0x253C,0xA271, /* Array index: 0x45C8 */ 0x2550,0xA2A4, /* Array index: 0x45C8 */ 0x255E,0xA2A5, /* Array index: 0x45C8 */ 0x2561,0xA2A7, /* Array index: 0x45C8 */ 0x256A,0xA2A6, /* Array index: 0x45C8 */ 0x2594,0xA276, /* Array index: 0x45C8 */ 0x2595,0xA279, /* Array index: 0x45C8 */ 0x25A0,0xA1BD, /* Array index: 0x45C8 */ 0x25A1,0xA1BC, /* Array index: 0x45C8 */ 0x25B2,0xA1B6, /* Array index: 0x45C8 */ 0x25B3,0xA1B5, /* Array index: 0x45C8 */ 0x25BC,0xA1BF, /* Array index: 0x45C8 */ 0x25BD,0xA1BE, /* Array index: 0x45C8 */ 0x25C6,0xA1BB, /* Array index: 0x45C8 */ 0x25C7,0xA1BA, /* Array index: 0x45C8 */ 0x25CB,0xA1B3, /* Array index: 0x45C8 */ 0x25CE,0xA1B7, /* Array index: 0x45C8 */ 0x25CF,0xA1B4, /* Array index: 0x45C8 */ 0x2605,0xA1B9, /* Array index: 0x45C8 */ 0x2606,0xA1B8, /* Array index: 0x45C8 */ 0x2609,0xA1F3, /* Array index: 0x45C8 */ 0x30FE,0xC6A1, /* Array index: 0x45C8 */ 0x32A3,0xA1C0, /* Array index: 0x45C8 */ 0x338E,0xA255, /* Array index: 0x45C8 */ 0x338F,0xA256, /* Array index: 0x45C8 */ 0x33A1,0xA254, /* Array index: 0x45C8 */ 0x33C4,0xA257, /* Array index: 0x45C8 */ 0x33CE,0xA253, /* Array index: 0x45C8 */ 0x33D1,0xA1EB, /* Array index: 0x45C8 */ 0x33D2,0xA1EA, /* Array index: 0x45C8 */ 0x33D5,0xA24F, /* Array index: 0x45C8 */ 0x4E00,0xA440, /* Array index: 0x45C8 */ 0x4E01,0xA442, /* Array index: 0x45C8 */ 0x4E03,0xA443, /* Array index: 0x45C8 */ 0x4E1E,0xA5E0, /* Array index: 0x45C8 */ 0x4E1F,0xA5E1, /* Array index: 0x45C8 */ 0x4E26,0xA8C3, /* Array index: 0x45C8 */ 0x4E2B,0xA458, /* Array index: 0x45C8 */ 0x4E42,0xC940, /* Array index: 0x45C8 */ 0x4E43,0xA444, /* Array index: 0x45C8 */ 0x4E45,0xA45B, /* Array index: 0x45C8 */ 0x4E47,0xC947, /* Array index: 0x45C8 */ 0x4E48,0xA45C, /* Array index: 0x45C8 */ 0x4E56,0xA8C4, /* Array index: 0x45C8 */ 0x4E69,0xA5E4, /* Array index: 0x45C8 */ 0x4E73,0xA8C5, /* Array index: 0x45C8 */ 0x4E99,0xA5E5, /* Array index: 0x45C8 */ 0x4E9B,0xA8C7, /* Array index: 0x45C8 */ 0x4EB3,0xADBD, /* Array index: 0x45C8 */ 0x4EB6,0xDCB3, /* Array index: 0x45C8 */ 0x4EB9,0xF6D6, /* Array index: 0x45C8 */ 0x4EBA,0xA448, /* Array index: 0x45C8 */ 0x4EFB,0xA5F4, /* Array index: 0x45C8 */ 0x4F1D,0xC9B4, /* Array index: 0x45C8 */ 0x4F22,0xC9B7, /* Array index: 0x45C8 */ 0x4FAE,0xAB56, /* Array index: 0x45C8 */ 0x4FAF,0xAB4A, /* Array index: 0x45C8 */ 0x4FEC,0xCDEF, /* Array index: 0x45C8 */ 0x4FEE,0xADD7, /* Array index: 0x45C8 */ 0x4FEF,0xADC1, /* Array index: 0x45C8 */ 0x4FFE,0xADDA, /* Array index: 0x45C8 */ 0x5000,0xADCE, /* Array index: 0x45C8 */ 0x503C,0xADC8, /* Array index: 0x45C8 */ 0x5040,0xD463, /* Array index: 0x45C8 */ 0x5041,0xD457, /* Array index: 0x45C8 */ 0x507A,0xB0AF, /* Array index: 0x45C8 */ 0x507D,0xB0B0, /* Array index: 0x45C8 */ 0x5080,0xB3C8, /* Array index: 0x45C8 */ 0x5082,0xD85E, /* Array index: 0x45C8 */ 0x5083,0xD857, /* Array index: 0x45C8 */ 0x5085,0xB3C5, /* Array index: 0x45C8 */ 0x5087,0xD85F, /* Array index: 0x45C8 */ 0x50A2,0xB3C3, /* Array index: 0x45C8 */ 0x50A3,0xD856, /* Array index: 0x45C8 */ 0x50E0,0xE0FE, /* Array index: 0x45C8 */ 0x5152,0xA8E0, /* Array index: 0x45C8 */ 0x5154,0xA8DF, /* Array index: 0x45C8 */ 0x5155,0xA8E1, /* Array index: 0x45C8 */ 0x5171,0xA640, /* Array index: 0x45C8 */ 0x517C,0xADDD, /* Array index: 0x45C8 */ 0x5180,0xBEAC, /* Array index: 0x45C8 */ 0x5187,0xC94E, /* Array index: 0x45C8 */ 0x5189,0xA554, /* Array index: 0x45C8 */ 0x518A,0xA555, /* Array index: 0x45C8 */ 0x518D,0xA641, /* Array index: 0x45C8 */ 0x519E,0xCBCD, /* Array index: 0x45C8 */ 0x51A0,0xAB61, /* Array index: 0x45C8 */ 0x51A2,0xADE0, /* Array index: 0x45C8 */ 0x51A4,0xADDE, /* Array index: 0x45C8 */ 0x51A5,0xADDF, /* Array index: 0x45C8 */ 0x51AA,0xBEAD, /* Array index: 0x45C8 */ 0x51AC,0xA556, /* Array index: 0x45C8 */ 0x51B0,0xA642, /* Array index: 0x45C8 */ 0x51B1,0xC9BC, /* Array index: 0x45C8 */ 0x51B6,0xA74D, /* Array index: 0x45C8 */ 0x51B7,0xA74E, /* Array index: 0x45C8 */ 0x51B9,0xCA6B, /* Array index: 0x45C8 */ 0x51D4,0xD861, /* Array index: 0x45C8 */ 0x51D7,0xDCC5, /* Array index: 0x45C8 */ 0x51D8,0xE140, /* Array index: 0x45C8 */ 0x51F0,0xB0C4, /* Array index: 0x45C8 */ 0x51F1,0xB3CD, /* Array index: 0x45C8 */ 0x51F3,0xB9B9, /* Array index: 0x45C8 */ 0x51FD,0xA8E7, /* Array index: 0x45C8 */ 0x5200,0xA44D, /* Array index: 0x45C8 */ 0x5201,0xA44E, /* Array index: 0x45C8 */ 0x5203,0xA462, /* Array index: 0x45C8 */ 0x5221,0xCA6E, /* Array index: 0x45C8 */ 0x5241,0xA8EF, /* Array index: 0x45C8 */ 0x5272,0xB3CE, /* Array index: 0x45C8 */ 0x5291,0xBEAF, /* Array index: 0x45C8 */ 0x5293,0xBEB0, /* Array index: 0x45C8 */ 0x529F,0xA55C, /* Array index: 0x45C8 */ 0x52A0,0xA55B, /* Array index: 0x45C8 */ 0x52A3,0xA648, /* Array index: 0x45C8 */ 0x52A6,0xC9C0, /* Array index: 0x45C8 */ 0x52BB,0xA8F1, /* Array index: 0x45C8 */ 0x52BC,0xCBD5, /* Array index: 0x45C8 */ 0x52C7,0xAB69, /* Array index: 0x45C8 */ 0x52C9,0xAB6A, /* Array index: 0x45C8 */ 0x52CD,0xD0ED, /* Array index: 0x45C8 */ 0x52E9,0xE143, /* Array index: 0x45C8 */ 0x52EB,0xE144, /* Array index: 0x45C8 */ 0x532A,0xADEA, /* Array index: 0x45C8 */ 0x5334,0xE8FA, /* Array index: 0x45C8 */ 0x5337,0xF3FD, /* Array index: 0x45C8 */ 0x5339,0xA4C7, /* Array index: 0x45C8 */ 0x5357,0xAB6E, /* Array index: 0x45C8 */ 0x535A,0xB3D5, /* Array index: 0x45C8 */ 0x535C,0xA452, /* Array index: 0x45C8 */ 0x535E,0xA4CB, /* Array index: 0x45C8 */ 0x5360,0xA565, /* Array index: 0x45C8 */ 0x5361,0xA564, /* Array index: 0x45C8 */ 0x5363,0xCA72, /* Array index: 0x45C8 */ 0x5366,0xA8F6, /* Array index: 0x45C8 */ 0x537F,0xADEB, /* Array index: 0x45C8 */ 0x5382,0xC944, /* Array index: 0x45C8 */ 0x5384,0xA4CC, /* Array index: 0x45C8 */ 0x538A,0xC9C4, /* Array index: 0x45C8 */ 0x538E,0xCA74, /* Array index: 0x45C8 */ 0x538F,0xCA75, /* Array index: 0x45C8 */ 0x5392,0xCBD9, /* Array index: 0x45C8 */ 0x53A4,0xD864, /* Array index: 0x45C8 */ 0x53A5,0xB3D6, /* Array index: 0x45C8 */ 0x53A7,0xD865, /* Array index: 0x45C8 */ 0x53AC,0xE146, /* Array index: 0x45C8 */ 0x53AD,0xB9BD, /* Array index: 0x45C8 */ 0x53B2,0xBC46, /* Array index: 0x45C8 */ 0x53B4,0xF1EF, /* Array index: 0x45C8 */ 0x53B9,0xC958, /* Array index: 0x45C8 */ 0x53BB,0xA568, /* Array index: 0x45C8 */ 0x53C3,0xB0D1, /* Array index: 0x45C8 */ 0x53D4,0xA8FB, /* Array index: 0x45C8 */ 0x53D6,0xA8FA, /* Array index: 0x45C8 */ 0x53D7,0xA8FC, /* Array index: 0x45C8 */ 0x53DB,0xAB71, /* Array index: 0x45C8 */ 0x53F8,0xA571, /* Array index: 0x45C8 */ 0x53FB,0xA57B, /* Array index: 0x45C8 */ 0x53FC,0xA570, /* Array index: 0x45C8 */ 0x5401,0xA653, /* Array index: 0x45C8 */ 0x544E,0xA760, /* Array index: 0x45C8 */ 0x544F,0xCAA2, /* Array index: 0x45C8 */ 0x5454,0xCA79, /* Array index: 0x45C8 */ 0x54CE,0xAB75, /* Array index: 0x45C8 */ 0x54CF,0xCDFE, /* Array index: 0x45C8 */ 0x54D6,0xCE44, /* Array index: 0x45C8 */ 0x5517,0xD0F2, /* Array index: 0x45C8 */ 0x551A,0xD0F7, /* Array index: 0x45C8 */ 0x5526,0xD0F0, /* Array index: 0x45C8 */ 0x5527,0xAE41, /* Array index: 0x45C8 */ 0x555C,0xB0E3, /* Array index: 0x45C8 */ 0x556A,0xB0D4, /* Array index: 0x45C8 */ 0x55BB,0xB3EB, /* Array index: 0x45C8 */ 0x55EF,0xB6E2, /* Array index: 0x45C8 */ 0x55F2,0xDCDD, /* Array index: 0x45C8 */ 0x5627,0xE147, /* Array index: 0x45C8 */ 0x5629,0xBC4D, /* Array index: 0x45C8 */ 0x562A,0xE547, /* Array index: 0x45C8 */ 0x5653,0xBC4E, /* Array index: 0x45C8 */ 0x565E,0xE945, /* Array index: 0x45C8 */ 0x5693,0xECC0, /* Array index: 0x45C8 */ 0x56D1,0xC5F1, /* Array index: 0x45C8 */ 0x56D3,0xF8A5, /* Array index: 0x45C8 */ 0x56D4,0xF8EE, /* Array index: 0x45C8 */ 0x56D7,0xC949, /* Array index: 0x45C8 */ 0x56EE,0xCAA7, /* Array index: 0x45C8 */ 0x56F0,0xA778, /* Array index: 0x45C8 */ 0x56F7,0xCBF0, /* Array index: 0x45C8 */ 0x56F9,0xCBF1, /* Array index: 0x45C8 */ 0x56FA,0xA954, /* Array index: 0x45C8 */ 0x573B,0xA7A6, /* Array index: 0x45C8 */ 0x573E,0xA7A3, /* Array index: 0x45C8 */ 0x5740,0xA77D, /* Array index: 0x45C8 */ 0x5741,0xCAAA, /* Array index: 0x45C8 */ 0x5745,0xCAAB, /* Array index: 0x45C8 */ 0x5761,0xA959, /* Array index: 0x45C8 */ 0x5762,0xCBFE, /* Array index: 0x45C8 */ 0x5764,0xA95B, /* Array index: 0x45C8 */ 0x5780,0xCBF9, /* Array index: 0x45C8 */ 0x5782,0xABAB, /* Array index: 0x45C8 */ 0x5783,0xA955, /* Array index: 0x45C8 */ 0x578B,0xABAC, /* Array index: 0x45C8 */ 0x578C,0xCE54, /* Array index: 0x45C8 */ 0x578F,0xCE5A, /* Array index: 0x45C8 */ 0x57AE,0xABB1, /* Array index: 0x45C8 */ 0x57DC,0xD4B1, /* Array index: 0x45C8 */ 0x5814,0xD4AE, /* Array index: 0x45C8 */ 0x5868,0xDCE3, /* Array index: 0x45C8 */ 0x586B,0xB6F1, /* Array index: 0x45C8 */ 0x586D,0xB6F3, /* Array index: 0x45C8 */ 0x586F,0xDCE8, /* Array index: 0x45C8 */ 0x5871,0xDCF1, /* Array index: 0x45C8 */ 0x5898,0xE159, /* Array index: 0x45C8 */ 0x58EF,0xA7A7, /* Array index: 0x45C8 */ 0x58F4,0xCE5F, /* Array index: 0x45C8 */ 0x5903,0xC95A, /* Array index: 0x45C8 */ 0x5906,0xCAB0, /* Array index: 0x45C8 */ 0x5920,0xB0F7, /* Array index: 0x45C8 */ 0x5922,0xB9DA, /* Array index: 0x45C8 */ 0x5924,0xB9DB, /* Array index: 0x45C8 */ 0x5925,0xB9D9, /* Array index: 0x45C8 */ 0x5937,0xA669, /* Array index: 0x45C8 */ 0x5938,0xA66A, /* Array index: 0x45C8 */ 0x593C,0xC9CB, /* Array index: 0x45C8 */ 0x593E,0xA7A8, /* Array index: 0x45C8 */ 0x5940,0xCAB1, /* Array index: 0x45C8 */ 0x598A,0xA7B3, /* Array index: 0x45C8 */ 0x5A09,0xAE5C, /* Array index: 0x45C8 */ 0x5A0A,0xD162, /* Array index: 0x45C8 */ 0x5A0C,0xAE5B, /* Array index: 0x45C8 */ 0x5A0F,0xD160, /* Array index: 0x45C8 */ 0x5A11,0xAE50, /* Array index: 0x45C8 */ 0x5A23,0xAE58, /* Array index: 0x45C8 */ 0x5A25,0xAE5A, /* Array index: 0x45C8 */ 0x5A29,0xAE59, /* Array index: 0x45C8 */ 0x5A2D,0xD15D, /* Array index: 0x45C8 */ 0x5A2E,0xD15E, /* Array index: 0x45C8 */ 0x5A3C,0xB140, /* Array index: 0x45C8 */ 0x5A70,0xD4E8, /* Array index: 0x45C8 */ 0x5A83,0xD8C6, /* Array index: 0x45C8 */ 0x5A84,0xD8C3, /* Array index: 0x45C8 */ 0x5AA2,0xD8B9, /* Array index: 0x45C8 */ 0x5B38,0xC254, /* Array index: 0x45C8 */ 0x5B43,0xC45D, /* Array index: 0x45C8 */ 0x5B45,0xF443, /* Array index: 0x45C8 */ 0x5B69,0xABC4, /* Array index: 0x45C8 */ 0x5B6B,0xAE5D, /* Array index: 0x45C8 */ 0x5B6C,0xD165, /* Array index: 0x45C8 */ 0x5C01,0xABCA, /* Array index: 0x45C8 */ 0x5C1A,0xA97C, /* Array index: 0x45C8 */ 0x5C1F,0xDD4B, /* Array index: 0x45C8 */ 0x5C22,0xA471, /* Array index: 0x45C8 */ 0x5C24,0xA4D7, /* Array index: 0x45C8 */ 0x5C25,0xC9D5, /* Array index: 0x45C8 */ 0x5C28,0xCABE, /* Array index: 0x45C8 */ 0x5C2A,0xCABF, /* Array index: 0x45C8 */ 0x5C2C,0xA7BC, /* Array index: 0x45C8 */ 0x5C30,0xD8D8, /* Array index: 0x45C8 */ 0x5C31,0xB44E, /* Array index: 0x45C8 */ 0x5C33,0xDD4C, /* Array index: 0x45C8 */ 0x5CE8,0xAE6F, /* Array index: 0x45C8 */ 0x5D06,0xB153, /* Array index: 0x45C8 */ 0x5D07,0xB152, /* Array index: 0x45C8 */ 0x5D55,0xD8E2, /* Array index: 0x45C8 */ 0x5D59,0xD8E8, /* Array index: 0x45C8 */ 0x5D5E,0xDD53, /* Array index: 0x45C8 */ 0x5D62,0xDD56, /* Array index: 0x45C8 */ 0x5D63,0xDD4E, /* Array index: 0x45C8 */ 0x5D6F,0xB744, /* Array index: 0x45C8 */ 0x5D71,0xDD4D, /* Array index: 0x45C8 */ 0x5D72,0xDD51, /* Array index: 0x45C8 */ 0x5D77,0xE1A9, /* Array index: 0x45C8 */ 0x5D8D,0xE1AF, /* Array index: 0x45C8 */ 0x5DC0,0xEFC4, /* Array index: 0x45C8 */ 0x5DC2,0xF172, /* Array index: 0x45C8 */ 0x5DC3,0xF1FD, /* Array index: 0x45C8 */ 0x5DC6,0xF444, /* Array index: 0x45C8 */ 0x5DC7,0xF445, /* Array index: 0x45C8 */ 0x5DC9,0xC460, /* Array index: 0x45C8 */ 0x5DCB,0xF5C9, /* Array index: 0x45C8 */ 0x5DCD,0xC4DE, /* Array index: 0x45C8 */ 0x5DCF,0xF5CA, /* Array index: 0x45C8 */ 0x5DEB,0xA7C5, /* Array index: 0x45C8 */ 0x5DF7,0xABD1, /* Array index: 0x45C8 */ 0x5DF9,0xCEAF, /* Array index: 0x45C8 */ 0x5E0A,0xCACB, /* Array index: 0x45C8 */ 0x5E0C,0xA7C6, /* Array index: 0x45C8 */ 0x5E0E,0xCACC, /* Array index: 0x45C8 */ 0x5E11,0xA9AE, /* Array index: 0x45C8 */ 0x5EBE,0xB168, /* Array index: 0x45C8 */ 0x5EEC,0xC366, /* Array index: 0x45C8 */ 0x5EFA,0xABD8, /* Array index: 0x45C8 */ 0x5F0F,0xA6A1, /* Array index: 0x45C8 */ 0x5F3C,0xB45D, /* Array index: 0x45C8 */ 0x5F40,0xDD62, /* Array index: 0x45C8 */ 0x5F43,0xE1BF, /* Array index: 0x45C8 */ 0x5F44,0xE1BE, /* Array index: 0x45C8 */ 0x5F5D,0xC255, /* Array index: 0x45C8 */ 0x5F62,0xA7CE, /* Array index: 0x45C8 */ 0x5F64,0xA7CD, /* Array index: 0x45C8 */ 0x5F65,0xABDB, /* Array index: 0x45C8 */ 0x5FB2,0xE577, /* Array index: 0x45C8 */ 0x5FC9,0xC97B, /* Array index: 0x45C8 */ 0x5FE8,0xCADA, /* Array index: 0x45C8 */ 0x6050,0xAEA3, /* Array index: 0x45C8 */ 0x60A8,0xB17A, /* Array index: 0x45C8 */ 0x6123,0xB468, /* Array index: 0x45C8 */ 0x6132,0xDD6B, /* Array index: 0x45C8 */ 0x6134,0xB75B, /* Array index: 0x45C8 */ 0x6136,0xDD6A, /* Array index: 0x45C8 */ 0x6137,0xB75F, /* Array index: 0x45C8 */ 0x613B,0xE1D2, /* Array index: 0x45C8 */ 0x619A,0xBCAA, /* Array index: 0x45C8 */ 0x619B,0xE5A1, /* Array index: 0x45C8 */ 0x619D,0xE976, /* Array index: 0x45C8 */ 0x619F,0xE5A5, /* Array index: 0x45C8 */ 0x61A1,0xE5A8, /* Array index: 0x45C8 */ 0x61A2,0xE57D, /* Array index: 0x45C8 */ 0x61A4,0xBCAB, /* Array index: 0x45C8 */ 0x61D6,0xEFCF, /* Array index: 0x45C8 */ 0x61D8,0xEFC7, /* Array index: 0x45C8 */ 0x623A,0xCAE6, /* Array index: 0x45C8 */ 0x62C2,0xA9D8, /* Array index: 0x45C8 */ 0x63BD,0xD56B, /* Array index: 0x45C8 */ 0x63BE,0xD964, /* Array index: 0x45C8 */ 0x63F9,0xB4AE, /* Array index: 0x45C8 */ 0x6406,0xB770, /* Array index: 0x45C8 */ 0x644B,0xE1E9, /* Array index: 0x45C8 */ 0x6482,0xE1E6, /* Array index: 0x45C8 */ 0x654F,0xB1D3, /* Array index: 0x45C8 */ 0x656F,0xDDBC, /* Array index: 0x45C8 */ 0x6587,0xA4E5, /* Array index: 0x45C8 */ 0x658C,0xD979, /* Array index: 0x45C8 */ 0x664F,0xAECB, /* Array index: 0x45C8 */ 0x6651,0xD1D6, /* Array index: 0x45C8 */ 0x6652,0xAECD, /* Array index: 0x45C8 */ 0x66CF,0xE9B8, /* Array index: 0x45C8 */ 0x66D2,0xECF2, /* Array index: 0x45C8 */ 0x671B,0xB1E6, /* Array index: 0x45C8 */ 0x676A,0xAA57, /* Array index: 0x45C8 */ 0x67FF,0xAC55, /* Array index: 0x45C8 */ 0x6925,0xD9D8, /* Array index: 0x45C8 */ 0x692A,0xD9AE, /* Array index: 0x45C8 */ 0x6982,0xB7A7, /* Array index: 0x45C8 */ 0x6983,0xDEC6, /* Array index: 0x45C8 */ 0x6986,0xB7AE, /* Array index: 0x45C8 */ 0x69D9,0xE25C, /* Array index: 0x45C8 */ 0x6A0D,0xE5E3, /* Array index: 0x45C8 */ 0x6A0F,0xE5EA, /* Array index: 0x45C8 */ 0x6A32,0xE9C2, /* Array index: 0x45C8 */ 0x6A76,0xE9C7, /* Array index: 0x45C8 */ 0x6AE5,0xC36F, /* Array index: 0x45C8 */ 0x6B1E,0xF9BB, /* Array index: 0x45C8 */ 0x6B20,0xA4ED, /* Array index: 0x45C8 */ 0x6B21,0xA6B8, /* Array index: 0x45C8 */ 0x6B23,0xAA59, /* Array index: 0x45C8 */ 0x6B25,0xCCE9, /* Array index: 0x45C8 */ 0x6B28,0xCF64, /* Array index: 0x45C8 */ 0x6B2C,0xD1F5, /* Array index: 0x45C8 */ 0x6B2D,0xD1F7, /* Array index: 0x45C8 */ 0x6B59,0xBEF9, /* Array index: 0x45C8 */ 0x6B6A,0xAC6E, /* Array index: 0x45C8 */ 0x6B6D,0xD1FA, /* Array index: 0x45C8 */ 0x6B72,0xB7B3, /* Array index: 0x45C8 */ 0x6BBA,0xB1FE, /* Array index: 0x45C8 */ 0x6BDE,0xCCEC, /* Array index: 0x45C8 */ 0x6C3B,0xC9A4, /* Array index: 0x45C8 */ 0x6C46,0xC9F8, /* Array index: 0x45C8 */ 0x6CF9,0xCD4C, /* Array index: 0x45C8 */ 0x6E00,0xD5EB, /* Array index: 0x45C8 */ 0x6E03,0xD9FC, /* Array index: 0x45C8 */ 0x6E05,0xB24D, /* Array index: 0x45C8 */ 0x6E88,0xD9EC, /* Array index: 0x45C8 */ 0x6E89,0xB540, /* Array index: 0x45C8 */ 0x6EDC,0xDE5C, /* Array index: 0x45C8 */ 0x6FD4,0xED51, /* Array index: 0x45C8 */ 0x6FD5,0xC0E3, /* Array index: 0x45C8 */ 0x6FD8,0xC0D7, /* Array index: 0x45C8 */ 0x6FF7,0xEFF7, /* Array index: 0x45C8 */ 0x7070,0xA6C7, /* Array index: 0x45C8 */ 0x7071,0xCA41, /* Array index: 0x45C8 */ 0x7074,0xCB5E, /* Array index: 0x45C8 */ 0x7076,0xA85F, /* Array index: 0x45C8 */ 0x7078,0xA862, /* Array index: 0x45C8 */ 0x707A,0xCB5F, /* Array index: 0x45C8 */ 0x707C,0xA860, /* Array index: 0x45C8 */ 0x707D,0xA861, /* Array index: 0x45C8 */ 0x708A,0xAAA4, /* Array index: 0x45C8 */ 0x708E,0xAAA2, /* Array index: 0x45C8 */ 0x709F,0xCFAF, /* Array index: 0x45C8 */ 0x70A1,0xCFB3, /* Array index: 0x45C8 */ 0x70A4,0xACB7, /* Array index: 0x45C8 */ 0x70BE,0xCFB0, /* Array index: 0x45C8 */ 0x70EF,0xB26D, /* Array index: 0x45C8 */ 0x70F0,0xD64E, /* Array index: 0x45C8 */ 0x7113,0xD655, /* Array index: 0x45C8 */ 0x7136,0xB54D, /* Array index: 0x45C8 */ 0x713A,0xDA64, /* Array index: 0x45C8 */ 0x7178,0xDE74, /* Array index: 0x45C8 */ 0x717B,0xE2C1, /* Array index: 0x45C8 */ 0x717D,0xBAB4, /* Array index: 0x45C8 */ 0x718F,0xE2C0, /* Array index: 0x45C8 */ 0x7190,0xE2BB, /* Array index: 0x45C8 */ 0x7192,0xBAB7, /* Array index: 0x45C8 */ 0x7194,0xBAB2, /* Array index: 0x45C8 */ 0x720A,0xF26A, /* Array index: 0x45C8 */ 0x720C,0xF269, /* Array index: 0x45C8 */ 0x720D,0xC37B, /* Array index: 0x45C8 */ 0x7210,0xC46C, /* Array index: 0x45C8 */ 0x7213,0xF46A, /* Array index: 0x45C8 */ 0x7214,0xF46B, /* Array index: 0x45C8 */ 0x7230,0xACB8, /* Array index: 0x45C8 */ 0x724F,0xDEA4, /* Array index: 0x45C8 */ 0x7252,0xB7DE, /* Array index: 0x45C8 */ 0x7253,0xE2C6, /* Array index: 0x45C8 */ 0x7267,0xAAAA, /* Array index: 0x45C8 */ 0x7269,0xAAAB, /* Array index: 0x45C8 */ 0x726A,0xCD5B, /* Array index: 0x45C8 */ 0x72B4,0xCA43, /* Array index: 0x45C8 */ 0x72B5,0xCA44, /* Array index: 0x45C8 */ 0x72BA,0xCB66, /* Array index: 0x45C8 */ 0x732D,0xDA75, /* Array index: 0x45C8 */ 0x738E,0xCA45, /* Array index: 0x45C8 */ 0x73E3,0xD2B1, /* Array index: 0x45C8 */ 0x7416,0xDA7E, /* Array index: 0x45C8 */ 0x741A,0xDAA1, /* Array index: 0x45C8 */ 0x741B,0xB560, /* Array index: 0x45C8 */ 0x741D,0xDAA7, /* Array index: 0x45C8 */ 0x743A,0xB557, /* Array index: 0x45C8 */ 0x7467,0xE2D3, /* Array index: 0x45C8 */ 0x7479,0xE6AB, /* Array index: 0x45C8 */ 0x7490,0xED69, /* Array index: 0x45C8 */ 0x7492,0xEA66, /* Array index: 0x45C8 */ 0x74CA,0xC3A3, /* Array index: 0x45C8 */ 0x74CB,0xF273, /* Array index: 0x45C8 */ 0x74CF,0xC46E, /* Array index: 0x45C8 */ 0x74EC,0xCFD7, /* Array index: 0x45C8 */ 0x74EE,0xCFD8, /* Array index: 0x45C8 */ 0x7547,0xCFDA, /* Array index: 0x45C8 */ 0x7548,0xCFDB, /* Array index: 0x45C8 */ 0x7554,0xAF60, /* Array index: 0x45C8 */ 0x7584,0xED73, /* Array index: 0x45C8 */ 0x759D,0xAAB7, /* Array index: 0x45C8 */ 0x75B0,0xD2C3, /* Array index: 0x45C8 */ 0x7638,0xBF61, /* Array index: 0x45C8 */ 0x763A,0xBF62, /* Array index: 0x45C8 */ 0x763C,0xEA70, /* Array index: 0x45C8 */ 0x763D,0xEA6E, /* Array index: 0x45C8 */ 0x764C,0xC0F9, /* Array index: 0x45C8 */ 0x7650,0xF04D, /* Array index: 0x45C8 */ 0x7675,0xF9CC, /* Array index: 0x45C8 */ 0x76A4,0xED78, /* Array index: 0x45C8 */ 0x76A6,0xF051, /* Array index: 0x45C8 */ 0x76B4,0xB572, /* Array index: 0x45C8 */ 0x76B5,0xDED6, /* Array index: 0x45C8 */ 0x76B8,0xE2E1, /* Array index: 0x45C8 */ 0x772D,0xD6AA, /* Array index: 0x45C8 */ 0x7779,0xB840, /* Array index: 0x45C8 */ 0x7795,0xEA7D, /* Array index: 0x45C8 */ 0x77C2,0xF054, /* Array index: 0x45C8 */ 0x77C4,0xF27B, /* Array index: 0x45C8 */ 0x77C7,0xC3A9, /* Array index: 0x45C8 */ 0x7809,0xCFF1, /* Array index: 0x45C8 */ 0x7843,0xB2B9, /* Array index: 0x45C8 */ 0x7845,0xD6BA, /* Array index: 0x45C8 */ 0x7879,0xDEEE, /* Array index: 0x45C8 */ 0x788C,0xB84C, /* Array index: 0x45C8 */ 0x788E,0xB848, /* Array index: 0x45C8 */ 0x788F,0xDEE7, /* Array index: 0x45C8 */ 0x7909,0xF05A, /* Array index: 0x45C8 */ 0x790C,0xF057, /* Array index: 0x45C8 */ 0x7917,0xF2A3, /* Array index: 0x45C8 */ 0x7935,0xF6F6, /* Array index: 0x45C8 */ 0x7988,0xE341, /* Array index: 0x45C8 */ 0x79C5,0xCDA4, /* Array index: 0x45C8 */ 0x79C8,0xAAC4, /* Array index: 0x45C8 */ 0x79C9,0xAAC3, /* Array index: 0x45C8 */ 0x7A26,0xE349, /* Array index: 0x45C8 */ 0x7A28,0xE348, /* Array index: 0x45C8 */ 0x7A2B,0xE344, /* Array index: 0x45C8 */ 0x7A37,0xBD5E, /* Array index: 0x45C8 */ 0x7AD1,0xD041, /* Array index: 0x45C8 */ 0x7AD8,0xD2FD, /* Array index: 0x45C8 */ 0x7AD9,0xAFB8, /* Array index: 0x45C8 */ 0x7B38,0xD6DB, /* Array index: 0x45C8 */ 0x7B3B,0xDADF, /* Array index: 0x45C8 */ 0x7B40,0xDAE4, /* Array index: 0x45C8 */ 0x7B82,0xE35D, /* Array index: 0x45C8 */ 0x7BA4,0xE35C, /* Array index: 0x45C8 */ 0x7BAC,0xE6D9, /* Array index: 0x45C8 */ 0x7BAD,0xBD62, /* Array index: 0x45C8 */ 0x7BAF,0xE6DB, /* Array index: 0x45C8 */ 0x7BB1,0xBD63, /* Array index: 0x45C8 */ 0x7BBE,0xE6D8, /* Array index: 0x45C8 */ 0x7BC0,0xB860, /* Array index: 0x45C8 */ 0x7BC1,0xBD68, /* Array index: 0x45C8 */ 0x7BC4,0xBD64, /* Array index: 0x45C8 */ 0x7C19,0xF063, /* Array index: 0x45C8 */ 0x7C30,0xF06C, /* Array index: 0x45C8 */ 0x7C33,0xF2A8, /* Array index: 0x45C8 */ 0x7C43,0xC478, /* Array index: 0x45C8 */ 0x7C50,0xC4F0, /* Array index: 0x45C8 */ 0x7C53,0xF5E5, /* Array index: 0x45C8 */ 0x7C54,0xF5E4, /* Array index: 0x45C8 */ 0x7CA8,0xDAE9, /* Array index: 0x45C8 */ 0x7CC5,0xE6DF, /* Array index: 0x45C8 */ 0x7CE7,0xC2B3, /* Array index: 0x45C8 */ 0x7CE8,0xEDCF, /* Array index: 0x45C8 */ 0x7CEA,0xF2AE, /* Array index: 0x45C8 */ 0x7CFB,0xA874, /* Array index: 0x45C8 */ 0x7D4A,0xD6EE, /* Array index: 0x45C8 */ 0x7DD2,0xBAFC, /* Array index: 0x45C8 */ 0x7E03,0xE6E9, /* Array index: 0x45C8 */ 0x7E4C,0xEDDB, /* Array index: 0x45C8 */ 0x7F58,0xD04D, /* Array index: 0x45C8 */ 0x8024,0xE3A1, /* Array index: 0x45C8 */ 0x8030,0xF5EF, /* Array index: 0x45C8 */ 0x8043,0xD743, /* Array index: 0x45C8 */ 0x8056,0xB874, /* Array index: 0x45C8 */ 0x8058,0xB875, /* Array index: 0x45C8 */ 0x8064,0xE6FB, /* Array index: 0x45C8 */ 0x8067,0xE6FC, /* Array index: 0x45C8 */ 0x806C,0xEAE7, /* Array index: 0x45C8 */ 0x80B8,0xCDAE, /* Array index: 0x45C8 */ 0x80BA,0xAACD, /* Array index: 0x45C8 */ 0x8139,0xB5C8, /* Array index: 0x45C8 */ 0x813A,0xDB51, /* Array index: 0x45C8 */ 0x813D,0xDB4F, /* Array index: 0x45C8 */ 0x813E,0xB5CA, /* Array index: 0x45C8 */ 0x815B,0xDF77, /* Array index: 0x45C8 */ 0x815C,0xDF75, /* Array index: 0x45C8 */ 0x8225,0xD372, /* Array index: 0x45C8 */ 0x822F,0xD371, /* Array index: 0x45C8 */ 0x8316,0xD3A8, /* Array index: 0x45C8 */ 0x8317,0xAFFA, /* Array index: 0x45C8 */ 0x8319,0xD376, /* Array index: 0x45C8 */ 0x831B,0xD3A3, /* Array index: 0x45C8 */ 0x831C,0xD37D, /* Array index: 0x45C8 */ 0x831E,0xD3B2, /* Array index: 0x45C8 */ 0x8320,0xD3AA, /* Array index: 0x45C8 */ 0x841B,0xDBAE, /* Array index: 0x45C8 */ 0x8423,0xDB5F, /* Array index: 0x45C8 */ 0x8482,0xB8A6, /* Array index: 0x45C8 */ 0x8486,0xDFB3, /* Array index: 0x45C8 */ 0x8494,0xE3C2, /* Array index: 0x45C8 */ 0x84DB,0xE3D1, /* Array index: 0x45C8 */ 0x853B,0xE74D, /* Array index: 0x45C8 */ 0x8571,0xEB4B, /* Array index: 0x45C8 */ 0x8611,0xC4A8, /* Array index: 0x45C8 */ 0x8643,0xF8BC, /* Array index: 0x45C8 */ 0x8659,0xD77B, /* Array index: 0x45C8 */ 0x8746,0xE3E3, /* Array index: 0x45C8 */ 0x88B1,0xB5F6, /* Array index: 0x45C8 */ 0x88B2,0xDBCD, /* Array index: 0x45C8 */ 0x88E7,0xE3F6, /* Array index: 0x45C8 */ 0x88E8,0xBB74, /* Array index: 0x45C8 */ 0x8949,0xF0D9, /* Array index: 0x45C8 */ 0x898B,0xA8A3, /* Array index: 0x45C8 */ 0x898F,0xB357, /* Array index: 0x45C8 */ 0x89B2,0xC2D1, /* Array index: 0x45C8 */ 0x8A2A,0xB358, /* Array index: 0x45C8 */ 0x8A2C,0xD7CB, /* Array index: 0x45C8 */ 0x8A2D,0xB35D, /* Array index: 0x45C8 */ 0x8A30,0xD7C9, /* Array index: 0x45C8 */ 0x8A31,0xB35C, /* Array index: 0x45C8 */ 0x8A34,0xB644, /* Array index: 0x45C8 */ 0x8A36,0xB646, /* Array index: 0x45C8 */ 0x8A66,0xB8D5, /* Array index: 0x45C8 */ 0x8A9E,0xBB79, /* Array index: 0x45C8 */ 0x8AB0,0xBDD6, /* Array index: 0x45C8 */ 0x8AB2,0xBDD2, /* Array index: 0x45C8 */ 0x8B74,0xC4FE, /* Array index: 0x45C8 */ 0x8C37,0xA8A6, /* Array index: 0x45C8 */ 0x8C5A,0xB362, /* Array index: 0x45C8 */ 0x8C5C,0xD7CF, /* Array index: 0x45C8 */ 0x8C5D,0xD7D0, /* Array index: 0x45C8 */ 0x8C5F,0xDBE5, /* Array index: 0x45C8 */ 0x8D0D,0xC4BA, /* Array index: 0x45C8 */ 0x8D99,0xBBAF, /* Array index: 0x45C8 */ 0x8E2E,0xE7F7, /* Array index: 0x45C8 */ 0x8EB2,0xB8FA, /* Array index: 0x45C8 */ 0x8EBA,0xBDF6, /* Array index: 0x45C8 */ 0x8EBD,0xEBC8, /* Array index: 0x45C8 */ 0x8EC0,0xC2DF, /* Array index: 0x45C8 */ 0x8EC2,0xF355, /* Array index: 0x45C8 */ 0x8F9B,0xA8AF, /* Array index: 0x45C8 */ 0x8F9C,0xB664, /* Array index: 0x45C8 */ 0x8F9F,0xB940, /* Array index: 0x45C8 */ 0x8FA3,0xBBB6, /* Array index: 0x45C8 */ 0x8FA6,0xBFEC, /* Array index: 0x45C8 */ 0x8FA8,0xBFEB, /* Array index: 0x45C8 */ 0x8FBF,0xCBA6, /* Array index: 0x45C8 */ 0x8FC9,0xCBA5, /* Array index: 0x45C8 */ 0x8FCB,0xCDCD, /* Array index: 0x45C8 */ 0x90AA,0xA8B8, /* Array index: 0x45C8 */ 0x90CE,0xADA6, /* Array index: 0x45C8 */ 0x925E,0xE0B5, /* Array index: 0x45C8 */ 0x92BB,0xBE4F, /* Array index: 0x45C8 */ 0x92BC,0xBE56, /* Array index: 0x45C8 */ 0x933C,0xEBE5, /* Array index: 0x45C8 */ 0x936A,0xEEDE, /* Array index: 0x45C8 */ 0x936C,0xC1EA, /* Array index: 0x45C8 */ 0x936D,0xEEDB, /* Array index: 0x45C8 */ 0x9370,0xC1EC, /* Array index: 0x45C8 */ 0x9371,0xEEE4, /* Array index: 0x45C8 */ 0x93EC,0xF367, /* Array index: 0x45C8 */ 0x93EE,0xF36E, /* Array index: 0x45C8 */ 0x9403,0xC4C2, /* Array index: 0x45C8 */ 0x9420,0xF4EA, /* Array index: 0x45C8 */ 0x9455,0xF84B, /* Array index: 0x45C8 */ 0x9457,0xF84D, /* Array index: 0x45C8 */ 0x945D,0xF84C, /* Array index: 0x45C8 */ 0x945E,0xF84E, /* Array index: 0x45C8 */ 0x9577,0xAAF8, /* Array index: 0x45C8 */ 0x9580,0xAAF9, /* Array index: 0x45C8 */ 0x9582,0xADAC, /* Array index: 0x45C8 */ 0x9583,0xB07B, /* Array index: 0x45C8 */ 0x9586,0xD845, /* Array index: 0x45C8 */ 0x9598,0xB968, /* Array index: 0x45C8 */ 0x961C,0xAAFA, /* Array index: 0x45C8 */ 0x9628,0xCBAE, /* Array index: 0x45C8 */ 0x9658,0xB0A4, /* Array index: 0x45C8 */ 0x9716,0xC04D, /* Array index: 0x45C8 */ 0x9735,0xF66E, /* Array index: 0x45C8 */ 0x9752,0xAB43, /* Array index: 0x45C8 */ 0x9756,0xB974, /* Array index: 0x45C8 */ 0x9788,0xE8B3, /* Array index: 0x45C8 */ 0x9794,0xEC56, /* Array index: 0x45C8 */ 0x97B3,0xF3A1, /* Array index: 0x45C8 */ 0x97B6,0xF3A3, /* Array index: 0x45C8 */ 0x97B7,0xF3A2, /* Array index: 0x45C8 */ 0x97B9,0xF54A, /* Array index: 0x45C8 */ 0x97BB,0xF54B, /* Array index: 0x45C8 */ 0x97BF,0xF670, /* Array index: 0x45C8 */ 0x97ED,0xADB4, /* Array index: 0x45C8 */ 0x97F0,0xEC57, /* Array index: 0x45C8 */ 0x97F1,0xEF44, /* Array index: 0x45C8 */ 0x97F3,0xADB5, /* Array index: 0x45C8 */ 0x98B6,0xC1FC, /* Array index: 0x45C8 */ 0x98C9,0xF673, /* Array index: 0x45C8 */ 0x98CB,0xF775, /* Array index: 0x45C8 */ 0x98CC,0xF9B0, /* Array index: 0x45C8 */ 0x98DB,0xADB8, /* Array index: 0x45C8 */ 0x98DF,0xADB9, /* Array index: 0x45C8 */ 0x98E2,0xB0A7, /* Array index: 0x45C8 */ 0x98E3,0xD448, /* Array index: 0x45C8 */ 0x98E5,0xD84F, /* Array index: 0x45C8 */ 0x98F2,0xB6BC, /* Array index: 0x45C8 */ 0x98F4,0xB97E, /* Array index: 0x45C8 */ 0x98F6,0xE0E2, /* Array index: 0x45C8 */ 0x99A1,0xEF57, /* Array index: 0x45C8 */ 0x99C7,0xE4D9, /* Array index: 0x45C8 */ 0x9AA8,0xB0A9, /* Array index: 0x45C8 */ 0x9AAB,0xE0E9, /* Array index: 0x45C8 */ 0x9AC6,0xF566, /* Array index: 0x45C8 */ 0x9AC7,0xF564, /* Array index: 0x45C8 */ 0x9ACA,0xF565, /* Array index: 0x45C8 */ 0x9ADC,0xF1BA, /* Array index: 0x45C8 */ 0x9ADF,0xD449, /* Array index: 0x45C8 */ 0x9AE1,0xB9A6, /* Array index: 0x45C8 */ 0x9AE3,0xE4DB, /* Array index: 0x45C8 */ 0x9AE6,0xBBEC, /* Array index: 0x45C8 */ 0x9AE7,0xE4DC, /* Array index: 0x45C8 */ 0x9B6C,0xE8E3, /* Array index: 0x45C8 */ 0x9B9A,0xEF6A, /* Array index: 0x45C8 */ 0x9B9B,0xEF6D, /* Array index: 0x45C8 */ 0x9BF0,0xF3CE, /* Array index: 0x45C8 */ 0x9BF7,0xF56C, /* Array index: 0x45C8 */ 0x9BF8,0xF56F, /* Array index: 0x45C8 */ 0x9BFD,0xC356, /* Array index: 0x45C8 */ 0x9C17,0xF574, /* Array index: 0x45C8 */ 0x9C1C,0xF6AB, /* Array index: 0x45C8 */ 0x9C1D,0xF6AA, /* Array index: 0x45C8 */ 0x9C44,0xF7AD, /* Array index: 0x45C8 */ 0x9C6D,0xF95C, /* Array index: 0x45C8 */ 0x9C6E,0xF95B, /* Array index: 0x45C8 */ 0x9CED,0xE0EC, /* Array index: 0x45C8 */ 0x9D10,0xECAC, /* Array index: 0x45C8 */ 0x9D12,0xC06F, /* Array index: 0x45C8 */ 0x9D90,0xF57D, /* Array index: 0x45C8 */ 0x9D92,0xF57B, /* Array index: 0x45C8 */ 0x9E75,0xB3BF, /* Array index: 0x45C8 */ 0x9EAD,0xECB3, /* Array index: 0x45C8 */ 0x9EAE,0xECB2, /* Array index: 0x45C8 */ 0x9EB0,0xEFAD, /* Array index: 0x45C8 */ 0x9EBB,0xB3C2, /* Array index: 0x45C8 */ 0x9EBC,0xBBF2, /* Array index: 0x45C8 */ 0x9EBE,0xBEA3, /* Array index: 0x45C8 */ 0x9EC0,0xF3F4, /* Array index: 0x45C8 */ 0x9EC2,0xF874, /* Array index: 0x45C8 */ 0x9EC3,0xB6C0, /* Array index: 0x45C8 */ 0x9EC8,0xEFAE, /* Array index: 0x45C8 */ 0x9F3B,0xBBF3, /* Array index: 0x45C8 */ 0x9F7E,0xF9D3, /* Array index: 0x45C8 */ 0x9F8D,0xC073, /* Array index: 0x45C8 */ 0x9F98,0xF9D5, /* Array index: 0x45C8 */ 0x9F9C,0xC074, /* Array index: 0x45C8 */ 0x9FA0,0xEFB6, /* Array index: 0x45C8 */ 0x9FA2,0xF7CF, /* Array index: 0x45C8 */ 0x9FA4,0xF9A1, /* Array index: 0x45C8 */ 0xFA0C,0xC94A, /* Array index: 0x45C8 */ 0xFA0D,0xDDFC, /* Array index: 0x45C8 */ 0xFF64,0xA14E, /* Array index: 0x45C8 */ 0xFFFD,0xA15A, }; #endif /* ICONV_FROM_UCS_CCS_BIG5 && defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * big5 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_big5 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_BIG5, /* CCS name */ TABLE_16BIT, /* Table bits */ #if defined (ICONV_FROM_UCS_CCS_BIG5) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SIZE_OPTIMIZED, (__uint16_t *)&from_ucs_size_big5, /* UCS -> big5 table size-optimized table */ #elif defined (ICONV_FROM_UCS_CCS_BIG5) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SPEED_OPTIMIZED, (__uint16_t *)&from_ucs_speed_big5, /* UCS -> big5 table speed-optimized table */ #else TABLE_SPEED_OPTIMIZED, (__uint16_t *)NULL, #endif #if defined (ICONV_TO_UCS_CCS_BIG5) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SIZE_OPTIMIZED, (__uint16_t *)&to_ucs_size_big5 /* big5 -> UCS table speed-optimized table */ #elif defined (ICONV_TO_UCS_CCS_BIG5) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SPEED_OPTIMIZED, (__uint16_t *)&to_ucs_speed_big5 /* big5 -> UCS table speed-optimized table */ #else TABLE_SPEED_OPTIMIZED, (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_BIG5) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/binary/000077500000000000000000000000001414576234500206655ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/iconv/ccs/binary/big5.cct000066400000000000000000012006101414576234500222060ustar00rootroot00000000000000big5LLL\'\q#oBFoB  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcFGDXPDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrsdzDZDzǴǵǶǷǸǹǺǻǼǽǾǿVXELKJKۡڡءwxz{|}utsrq~bcdefghiponmlkjvy@BCƤqrmnuvyzijEefâĢŢƢǢȢɢʢƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽƾƿƢƣ@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ǡǢǣǤǥǦǧǨǩǪǫǬǭǮǯǰơtuvwxyz{|}~UVPQRTWSO@BCEVTWUFOMBA@CXPc˱YDd@D[G\EGFAAE^]KܱܲFƤGH_QȫE`ɨʫFG֤ܳHRTSJKLMIPjfiQahNOHegɰɺɮɲɱɵɹɶɳɫɻɸɯɬɴɷɭfBgD[`hdG]˽Cb^ZeEH@FcAi\_a˿˨̨˨˹˸˼ި˳˵ۨ˶ɨ˻˴˷˺Ĩʨ˾˲ŨVJIQ]KYPXTݫ[NWMURZO\SLH׭խɭӭݰ̭˭[֭խԭȭح̭í٭Эŭ٭ӭcW\bUYRVgQfXSO]PNZ`a[^M_dLTe^W_UXY]SRʳƳQ\ZTVʶܷܽƶܺöܴܾܼܸܻܹܿܵܶ񹲹vwux_lkIaSRJIKߨ^YޢZ¢\[`]^JK@LNTUAj`_߰UaޭVBɼMNkΨha@LZijBYWXMNbɾZkFɿDEɽGClmnPOSQRШcӫhdgfebѰikjlϳɶABZ@ABDCO\[HUVTWoplkijnmɰӳҶնֶCDEyUcVĤ]^Iqm̰cbPƥ_Cl`¦KJXoEаΰϤQdͤɤȥcbmnRedrWgfLMsYZoDtuppdeFFXhSeΤqOfjytonuslzmixwvkrq{pSYU[ŦXNQTPWZORV\~{g|[]upʥ}_aʤhxtv\mvsdnowljkqʡ^rʣfczbʦei`ʢyOPIKMLEADIRܩCFHQMSJީGB@NHKxt}rCOyEBwJ|Ls~{@FGzvuDND@BCACFB@GԡEDAwԧ|Ԣv{zԥԨsԩٰ~ԦԪtԤux}ްܰױyԣqrj׳uxq޳䵽n۳v{ofsmyݳ߳zlrthwgipӶܶ޶Ͷֶ߶˶ڶۢ_͹UQK¹TNPS˹IƹLJOHɹMRGMGDGSTJBLRFIHHCEKAkONP@EBACD@QF{}~z|P`VQAY@XWZmonI}|_^Ǧ]yʩʨwzʧxTHIEFԬԫ|IHGkgYnobfdcȦea`}ʪʫʭ{ʮʬ~|ʯY[Z@XWV\AUTZX^UY[]WVQRS\PSRWNQPTXGJOUIJԺVMHLԱԯԽԿԴԼԾԹԲئ԰ԷԭԵԳư̰ԻԶKԸԮءتةآؤبأإ}زرخKثح~ذدسجا]c_fW׹\U[dZ`eV^bhXagYYKWVMRNQ\[JPZOLXMOJLNPIKSRabcB[h_iSZʰB`YLܤi~pgh]۹jѤӤ[ԥqijʱaC_`^ZabMNOشݹj]ԤkѦloͦn̦qpmkʶʹʸʵʳʴʻʷʲʺgoOHpSDKfEdLPcQJMriTRnlIkGFjhqmeNogcsblpVvdfmqurknhjite\b[`PU_\aQ[TRcSWXZY]^d԰@CDBAذ@ػظؽBGCضADغطعؾؼEؿصB@CD@FAABEnzpvkyx|utm{orwqlsUaXWZ\_VT][Y_^c^`b`WVUXQRZS\[TYT\]ClmnեӦrssUutV]eEGF}^prsvtuwʼʽWXvxzw{yȫūǫɫfwhgc_`bdafeJIHGKFҴIKԴHJHIJ~᡹fмged]d_oxigNMLLM׹ɤp\tԦy|KqʾʿشNLruY~Z}xͫ˫̮jhkij^PQOᢼhiaKswvzçȧhb]ec\ilg`fad[_k^jΫΤΪΣΥ}{άΩyΧΨΦ|z΢~ΡέonlknposqpήrmlmqrSRTXAZV^[UCWB\]YD@QROݴOPSVNPUTCRDMQᦹegkhcbljjmdikfaf`e^hdic_gjbrDE`rqt{ʨ_utWvwxίSy]x|nmoγΰαβδtsvubFac`UEVWTZ\E[YXᴹqompnlmklnnz~ۦ}FۥմXyzΧθηιζκ׮yuwwxxvεGJKHgfdeIhZ[\]_aHGY`^ἹẹỼpsṼrtqtuossqprofFGU{λ|I}ݤަqrspμzzyiLjM]buvtstνkJUͫ{mCnl^vLէԧwvuξܫޫ߫}|{OorpNuqPtsa_`KdLcwxwu@HI{ҧতӧѦxyا̢̯~̮̩̪̭̬éȩ̣|̨̥̰̦ͫ{ʫ˩ķ̌z̫}̡̤οѡ˫īɫϮ~}|쮡~뮦ﮥѮvѤѦѨSѬѣxQѮRѥѩѫѪѭѧyѢwzU^d|e`V~TbeIc]a{dYbWX[_\fcZ}ko@QmDqeFSilGHNsTJOC^UrAP]pNMtEjBKMRgLPh\phlnk[j_Z@qXimOfgAWYVoμ}GF|źEԺCD媼znӼ{ͺHyBz~y~x婼墼xv}w姼夼|{z~|y{}VgjihaJbAt|ڧ̱ϩѯur`atvuֺI嬼W̲ѩЩҫѰvQ~}릪覩ӧݧܧ̷̾ܩ̴̸̶̳̺̼̻̹̿̽ߩթԩ̵کݩ۫ڬA@ѱC߫BEѲDѾѴfѷѺ}ѽѿѸѵѶ̮Ѽѻî®®ѳg˱yurզwա̱{jգiբs±hxեqtդRoxnl~ıw|pmzvTSkdzjYgw}kn|\ml~Uyi_phqfec]ѹVݷW{yXox`[a^p|ݱݶݪlݻiz{bkݤnoݥݲݸjdݣ}ݺݨݩ~ݴݫݵݭeٷhfݹݰݬݡSݯmݧݦgcݳݮݢQLKObR庼T孼NPUJ崼弼Z帺M廼ؾ驾־髾۾鮾YX^\]Zk[BEFDGlCNdMLKceurFGĮէֱձαѱԱvʹuxswtqݼV彼żHyݽޤرz{rW祸H|s_éIѮ۱ըݱ}~ݾYXJIO^J饹ͩ@ĩ˩̩ǩPMSKNQLORЮɮ֮լիխޱժծթ٧٢٥٨٦٣١٤yݿvwu{´xtz\Z[ȼļǾ鳾`nKmQRfPѬTѱ٩|릳ҪBAخҮկzagCGBE@AA@FDWԪCMNFXHܪSתIتVQOڪJPDR֪UELTGK[\iVLbJ[EeRADQa`FX_`cZKSfYamVXCjc]@lgIkPHd\T^bGZYO_UWh]NMB^WU߮ݮ֮ޮۮ߮ٮմյչվսհɱDZձղ±˱ճͱպռշջնտδٽӴ٫մٳǴ٭дɴٻٶѴٰٵٯٱٺҴٷٴŴʹô٬ټپ٪Ӵٲٹٸٮط񷬷ոշʷͷѷڷ~ٿ跥巢߷JH^FX}_B]GUd][@ZoQamI^KYgDkaMCWh`eSfEPLN`_nObTcljAVibR\޼Լڼʼμ׼ϼҼ龾׾ݾؾ־ϾEAHIDJ@GCFBchibfegdQNWVTOrPqSpXRMoLVUUhYZTXSWvVYdڴݴܴpceqdKjYwBZ[nѾk\eofpߴfghLlZ_qgijݼ`CHrhsiդjBAC@@AAB@kM[¥]a~IJ^tklD߲BrɡɤɣťĨDɢ@ŦE[YLQSLMUROQVZXZKM\TWEG^UNJYVHICOP[]PNS\WR]FTKXDjzqKbeBmovhfguGpnsJuycIMO@lk}rux|AF~wi_d`N{taL|ϡϤwϧϪϬtv{Iϥϭ{sd~Ϣxz}}pϨϫzmxϩo^H|wvnϣyqrϦy~LCU[WJMFGJV_E@NBOYDhHHEfZgaSb\ecITAG`FQCiPKKX]eRPG[UGDgdXcNOIE@QYBD^F\SHFJhb_]faR`AEWVTLKCMAZIMDJCUVHDBSKQWAGEBCOLT@FGFEPNR@a`F_IJh^CȷRHKcjbW˷iULYeTMPZdGQ[ɷNESgVlXfOʼD]\⪺}⤺nwmⰺqs⯺uS}o⮺u~⬺||vtzwx⵺z⹺~pyx{t⧺sr{yvDNMYKOFRTC^W[`UILH_aV\JEAZB@XQP]GI@AHCOBDFEDJGFEB@ANCQSYWZRVU[TXPqopmnsrx_ey\vsgwt^abcf]udh`]j`kh_\^bedg[icfiaxyWelѤA^_b_`aXZURTVSPWQYϯϳ϶ϲϱϴϵϮϰwxyPLnv{QlrkuqMOzjmst|pNmNPLXJWiH[RlSVZOTjkYMI[QUKHIeOYbXL`^_Jc\ZK]aMdpwyޡkzޢ}m~lxޣq|ovrnѷطַӷ۷uN{st⼺gdpjlfnmkqhocebriJQUSKILMHUVGVQOLPNRRMNOPKTSWXT\b`^a]_wtuvlmzkji{ljkyƤRݤnbϷ}ϸϹfPޤ|gBȨedc`[ϺϽϻϼҢҡ~S]^o\_RpQkjhilަޥީިާȺstYZr}qpnolɥɦCDfbaegcfgd_Ͼ]deab\^c`¬ϿҨҥҧXWUҤҩTVҦgңҪbfenyhcmtsadurq`ipwTvsVuoqtrUxSޭެުޮޫʺްޯ˼vu~}{zwxy|_\]W[a`^decyx~ámnmzƯYvjɧEljkhhimkgjfilh¬̬үЬǬҴҫҶҮҹҺҬҸҵҳҷ_]ұҭҰһҲ^Z\xmklstp{uroynwzqy[xwv|~ڡ`ڧکڢZڦڥ[abڨX}{ڣz_|ڤڪY^\]W޷޻ޱ޼޲޳޽޺޸޹޵޴޾޶κԷ槽@bA椼ifegfZcX\[dhYmzjhknlgBEu@oFâD{ACGvtãsnnҼҽ}޿]ä{o`Ҿҿ~ګ׺i^_ropqIH|wޥcdΥFjiڬХѥҥklnmrpqˬʬ`dcba{zfeڮڭŷ殽Bjsæå|sٺoptϬЬͬݬhinlůkjeįmƯfg֢֡|~֤֣}ڶkjڰhڳlڴmڱgiڵڲگǷͷ˷ۺߺܺ氽ECHI洽F毽G涽Dlksmro`qabpntwuvM¡N}O~LPJçxèoKp~}noզGqmҬӬ֦˯o֥ڸqڷpսJxQqpuprKtRr߬ج̯qrs֧ڹs׷ʽLducySsبnxwvy۬uvְدwtֱֲ֪֭֮֩֫֬֨֯ڼھںڻڿڽtݷCںθFD߸E޸AB@NQO漽MP}~vzywfgex{|h@{A|z~}U¤¥¢£T{éyztwuvf٬ڨoxĵuGB|x͡z|~}{|ֹzگݯy寥}~{ֳִֵֶַָֺֻȵv˲w̵xNQMLHOPJKITXVɽSʽUR½YƽWjlikFECDVGZW¦[]\XYê~}z}yq{|~rtsrͣ͢诧毦鯬ּֽ־ֿRSTA׺պCB@mHI_^§ëšɨVݨrqpͤĪIJ}ڵ|z׵{ٵyAZX@W\[YIHDGF^_[]Z\pErqnoJ`ª¨©íìHsͥƪͦ@ɲ~D]^CBJۺKLa`sK«¬uѥAݵEMv˪ͧBC@BDGEFCHAӲܲղβײز浧ᵥ޵⵫㵭aPSGLFcJHbONKMIR_Q]XNPUTWRQSY[VOi\ٽbceֺ`hdfgv׽jſt꽿xQy긿w꼿{꾿zONLPMͿucag°ed²j±kh®ib¯­flòðñîïóxwyţŢXYm~ͨEFDGHIIOMKLNJ޲赯VdTeUfa^`_kaȿ|}WSXTVRU³z{A@tͩLJKZSYRXV¯UTȯůɯQPWϲֲӲٲزײͲl쵻εh]_ae[Yj`d\XWbZ^kifgcrjxtxeubwfvpcqshgdlimynokpyurvltswqnzrm{o~ٿֿԿ׿_Yia]dg\e`Zhc^b[fnt¹w´µovqº·m¶su¸rp÷øôõúö~}ġB@BAloj»ĢCIɨuM`[_]^\@ijnohkgm@pz|}ùDϪ˪ONbaBCAsmlnrq~㿪yxûýüPedcDop~CAB{|}俫kz{¼½lģҬ̯QӭARS@BTfӯЯA@qsͪCUhgCBDFGEtuE㢻Dpomnq|¿¾ťŤw¸vFɩئͫvwwtvyu{zxxѪͭӪժͰͬШ|ͯͮ[GH]WZcaIgLd\YIbDeV_FK`OMXJ^NEfدjޯlkinHomٯNEGHPLJMQFOKIQOJߡNKŵPMGL̵ĵwu{sߢxr{}v~|~yxy}|tzLHM㧻J㤻KIADC@B󿱿txzwvusry}~þĤEŦCDئRN{SܭPTUVOhpWP|ުRQEߵߣRͱiQrqWTVSUXYZߦߧߥߨߤSJFIKHGĥF}}X[AJKMNLˢˣ{ˡ|zy}~~jͶ͵ͷͼͲƪê͹Ϳʹͺ;͸Ūͽͻުͳb\daqt]kV`ceТwUСYWRo~svХf}^xФuy|mУ{lp_ZSXTgnӥ[zAӨvӣ}ӲӪ~өx|ӵӭӤӳtӬsӫr\Ӧz{ӡuӯӮӶӴӰӧӢwӱy^`ey]houbi@wrnj\aYfcsdzlkZ_pvA[gmxqtl`}۪ۧhۣiwst]ۤۡu۬pۯnzrۭkdocaۥjۨ۩صݵٵ~vf^ۢ۫e۰qmѵ|xֵܵ޵ӵyg{bۦۮ_ݸUߵ߿ָߪ߲Ƹ߶߱߫߹߸߼߾޸߰ߴڸ߻ߺ߬߭߷߳߯߮`ʻXŻ[㾻Y㼻Z]aU^WԻVTc\㽻bл_stgfbvuߩ_c]pawZXdniOm߽[RU{\SQNe`hx|WkoTyLrVjP^Yl}zqMI@CEAGLFUOFJTQDHBVSPWMKNS@ERDAMOQIPBRJGUHTKLVCN~ÿħĩĦĪĬĭīĨJKIGHLEFGOhӸӷ@B|{길~XZYWǪЩЧЦikjШӿA°FӼӽCӻHӾӹGDӺEBLץKר׫HF~שקפ׬׭ׯװ}Eעס׮GףIDצMJתۿ۴۽۱۶ۺ۸۲۵۳۾ۼ۷۹ۻ긺ø鸻j޻eܻgh׻mջilfd窽稻k硽秽糽纽翽禽罽礽dakge`o\hi_^lb]cn[mj¿fY]Zag\pj_kfm^`nXldch[bieoĮįBEACDQON@PFMZnЪGlЫױNЬЮЭmذIӰJNܰMհKLPײU³T׸R׳S׿׻׽׷׾O׺׹׵׼״׶QǵϸǸĸʸɸtBAv@nprqsλoɽͽ˽ǽĽȻup|wyquxƿ{stzrvrqwstuxvİIKHJŨRŧHIKJPnŵWVеCFEDy{zıTS[ЯoCA@BDIGH}|}IJLUũLqrабpTRQXPYݰVSWUO_Y̳^`Z[X˳]ɳ\DFضEIڵ޶CB@GAH߸Ҹ޸׸ܸӸPMEJQGOKNLFLx{NM}OKyۻ|z~wJֽ۽ݽս몽ؽڽۿ~Ϳٿ멿뢿뤿ۿؽ밿뮿ѿֿ~AO@BCķĵĸĴĶij@NMPQAV[ŪXWZYCB@A@MNgmRPDDްZaTSvbHVUWQRݽ޿FEˤ\[IYZX벿Gst]^hfcgedJLQSRUOKMTPN[TSU߽븿HIJĺĹRBS\ūŬEBji\]빽вvu_XWV_b`ae^fcdVLNKMTowسlk`[^Yl]\_Zhonpmrikgjqs[aYbX]c`_^W\ZAC@EBFDƿ뽿뿿ſEA@CBDROSQPTļľĽĻCEVDUaŭ`Ů^]bcF_\QPOpn`UyxcabmܳnCAEFLHJBIKDGb@acuwv{xtyz|gfdeMNIJKLH@Gʿ̿οFGHIXYWVZXYWFdůeHGd@|GdA[˦˥ϪΪжд|г~{}еzjgnilhekmfpzv~w|roq}uxty{sMeOgiNfjhGࣹO~PEJࢹCBMLKIN}DFHRCASDBQPOоEѿҿݨUoRSQT˪˧ˬ˨˩˫תԪимйлнпокqprзlVWTnSYXk\R[PZUm৹QਹRnqimljpkhoYHJVWUQGZTFIXտKLM]\[\ZfŰut@As_a]`o^psUTSsuƻŻtra^_M`[\JK]LڿOPNR_Q^Ŀ]HIC]qoVqBxvzDywCB@CAmljbqeovnyuciwhxzkrswutfrvtsdgp೹aWYeZ\f[dஹbู^ʹcƹ`˹Xg]Ź_xz̻䦻~|䫻䥻y{wv䴻}䣾RZUgPOVeTqcdN裾Xtysowuhb}W~xmkfn{jzSv|rlQpYiDACB@@CEEBAD`YTc[eU_aWX]bjgk^Zhj\dfiSVscqalhrbetmpid`okugnBf@DACafOhIdjNJK`gMeL_cb^iűmplnoijgkhŲųKMLNJDSRT_U^VruthsrpqwDxv{EF}zy|{~{hջ׻ӻ覾[詾\MKIJFFNHLGnlmwxEGFPmlkɪXVYWˮ˰˯˭۪@ܪƭíEF~|}IHKJG}ܣܢ|~ܡҹjkԹiڻGHOIoAGLܤܦܥnom۹lPJptqusyBܨܧٹspعrֹq佻]譾^_设`QNKPSLROMwvx~}z{|HISnQRoŴŵqEGFWCtQRDaS⭲MܩܫܪڹuvŻƻ豾cb貾dVUTTA@}{~|y@zJKpŷŶOPHiCBqrWDXALMTQNܬz|޹wx{y˻輾g軾e[fYZU[YXVZWEJFIHGDBECF@AQNOPrVUtsŸI`Xܭͻ达hGBuRStsuHOܮ~}λ迻i\kjľla_^]`\K^]_NLMRKQTSPOJHICDXWUTYvŹwWvVwaYPU`WVL湤幣ȾnqsʾrξtpƾmocfdcihgbbaedZ^[]\Y_b`a@XcMEF`^]ca\Z[_bx~y[Z}|Y{Xz}~{Żx|yzźRSJvjkzluejmfdkNfde\żbIhvwnqpoghfegOPGgihŽTUVKcxiJ{rپzyiSRQ^]Lճ|޾{}xvwsytru|j{z~jmltosqpnkCBDAuXWUTJKIHloVmsqkvjrnut`_ſpžZ\_[`YW]X^MZ\[yxwzstܯ}~okplmnz{~|vy}EFwYZ[MxOPNL}{|x~zwyabdcindgkreosjcmlqphbfNOa]^`_ba|{x|}PQGQSRecҳT»tdHurqLJKI\fvwd}uܰxRe~췹]gy^|{zM}fԻN~hijTSgjihsetJJWY[_`cdghklopstwx{|ơǡʡˡȡɡ\MOQRST}~̡͡ΡޡߡLMNICH]^ϡAСDAGFաס֡HIϢТѢҢӢԢբ֢עآ٢ڢۢܢݢޢߢB@ABCaUbNZ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcFGDXӡPѡҡDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrsDzǴǵǶǷǸǹǺǼǽǾǿVXELK¡JK¢ԡۡܡڡݡء١wxz{|}utsrq~bcdefghiponmlkjvy@BCqrmnuvyzijEefâĢŢƢǢȢɢʢˢƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽƾƿƣ@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ǡǢǣǤǥǦǧǨǩǪǫǬǭǮǯǰtuvwxyz{|}~UVPQRTWSO@BCEVTWUFɣOMɢBA@CèXPcꦱYDd@D[G\EGFĨAAE^]ŨKöܲFƨGH_QɭǨȨE`ɨʨFGHRɱTSɵJKLMIPjfiQahNOHegɮ饱ɶɸɯfBgD[`hdG]Cb^ZeEH@FcAi\_aبШ˨ըΨ֨˼ި٨˵ۨϨԨ˴ӨרҨͨܨݨڨ˲Ѩ̨VJIQ]KYPXT[NWMURZO\SLH׭ѭ֭ĭͭڭέǭܭӭп̭˭ϭ[ƭխԭʭɭҭí­Эŭ٭ۭحȭcW\bԲUԶYRԴVԹgQfXԱSO]PNZ`aԷ[^M_dLTeԼȳ^Wų_UXijYdz]SRɳʳƳ˳Q\ZTóVʶĶͶƶǶŶ˶̶ɶܼȶζܹಹஹହ෹హ൹觾詾訾vwux_lkIaSRJIKߨ^YZ°\[`]^JK@LݭNTUAj`_ðUaޭ߭VBMNkha@LZİͳBɿYWXMNb¤ZkFDEGClmnPOSQRchdgfebѳŰikjlưγϳгжѶ϶ABỹZ@ABDCO\[HUVTWoplkijǰnʰmɰȰԳӳҳҶնֶԶӶCDEyUcäVĤŤ]^Iqm̰˰cbPƤ_ͰCl`KJXo׶EἹǤаΰϰQd͢ʤɤȤcbmnճRˤedrWgfLMsYZoD̤tuppdֳeFόFXhѰSeΤͤϤqOfjytonuslzmixwvkrq{pSYU[XNQTPWZORV\~{g|[]up}_ahxtv\mvsdnowljkq^rfczbei`yOPIKMLEADIRCFHQMSJGB@NHKxt}rCΣOΥyEBwͦJ|LΩs~{@ΡFGzvuDND@BCACFB@GѡEDAw䰧߰|۰v{zᰥsְٰ~ӰڰtԤݰux}ްܰװұذyణհ԰qrj׳ڳuxسq޳䳽n۳v{ofsmyݳ߳ܳzlrthwٳgip޶ܶ߶ڶݶض۶_ٶ͹ȹUQK¹TΌNPSĹ˹ŹIƹǹL̹JOùHɹMRʹGMGDGSTJBLRFIHHCEKAkONP䲾@EB鶾AC輾軾D@QF鷾{}~z|P`VQAY@XWZmonŦI}|_^]ywzxTHIEF밫|ϹιIHGkgYnobfdcea`}{ʬ~|Y[Z@XWV\AUTZX^UY[]WVQRέS\PSRWNQPTXGJOUIJVMHLԯԽԴԼԾԹԲԦذԵﰻԶKةإ}رخKѫ~ذد]йcչ_fW׹ѹ\U[dҹֹZ`eVԹ^bhXaӹgYYKWVMRNQ\[JPZOLXMOJLNþP¾IKSRabcB[hФ_عiSZB`YLi~pgh]ڹ۹ٹjѤӤҤ[ԤqijaC_`^ZabMNOݹܹj]ľklonqpmkʹʸʳʮʻʷʭʺʫgoOHpSDKfEdLPcQJMriTRnlIkGFjhqmeNoθgcsblξpοVvdfmqurknhëjitκe«\b[`PU_\aQ[TRcSWXZY]^d@CDBA@ؽBGCضADغطؼEصB@CD@FAABEnzpvkyx|u޹tm߹{orwqlsUaXWZ\_VT][Y_^c^`b`WVUXQRZSž\[TYƾT\]ClmnդrssUutVī]eEGF}Ǿ^prsvtuwʻWXvxzw{yȫūǫɫƫfwhgc_`bdafeJIHGKFIKHJHIJ~칡fged]Ⱦd_oxʫigNMLLMɾp\֤ty|KqפNLrؤuɧY~Z}Ϋxͫ˫̫jhkij^PQOhiaĨK٤swvzħ§çhb]̣ec\ilg`̥f̦ad[_ķ^j̢ΤΪΣΥ}{ΩyЫΨ|zϫ~έonlknposqpѮrmlmqrSRTXAZV^[UCWB\]YD@QROOPSVNPUTCRDMQegkhcbljjmdikfaf`e^hdic_gjbrDE`rqt{ʵ_uŧtWvwxڤѫSy]x|Ƨn̬m̩o̪ҫԫΰαβδӫtsvubFac`UEVWTZ\E[YXqompnlmklnnz~}FۤիXyzȧɧǧβ֫ιζκ׫yuwwxxvGJKHgfdeIhZ[\]_aHGY`^psrtqtuossqprofFGUʧث{ܤ˧٫|I}ݤޤɢ̧qrsp̸ګzzyiLjM]buvʾtstkJUΧͧ۫{mCnl^vLϧЧwv̻uݫܫޫ߫}|{OorpNuqPtsa_`KdLcwxwu@HIߤ{ҧԧɤӧѧxyا֧էק̢~̮̩©̭㫬éȩƩ|̥ͩ䫦ɩ{ʩ˩ǩ̩z̫ĩ}̡̤ũΡΤ~}|쫡򫢮~뫦﫥ΧvѦѨSլѣxQRѯѭѧywzU^d|e`ժVբ~TbeIcء]a{dYbWXէ[ի_դ\fcZ}ko@QmDqeFSilGHNsTJOC^UrAP]pNMtEjBKMRgLPh\phlnk[j_Z@qXimOfgAWYVo}GF|ECDzn᣼{HyBz~y~ξx娼̾嬼xv}w;姼孼|{˾zо~Ѿ|y{ӾҾ}ϾVgjihaJbAt|ɳڧ٧ϩΩѭur`atvuI宼ԾW¹ѩЩҩѰvQ~}ɷɪɩߧөާۧݧܧ᩾̷ܩ侀̴̺̼̿詸٩⩶שة֩ԩߩթ䩵کݩީ۩A@ѱCBEβDѿfѺѼ}սѾѿѸѵѶѹѻѻî®ѷg˱ʱyurզպwը̱ɱ{jȱiսs±hxqDZtդƱRoոñxnl~հıw|յpűmzvTSkdzjYgw}kn|\ml~Uyi_٥phq٭fec]٤VW{yXox`[٩a^p|ݱݶݪliz{bknoݸjd}ݺݨݩ~ݴݫݵݭehfݰݬSmgcݮQLKObR导T尼NPUJ嵼Zٲ¼M峼üؾپ߾־ݾ۾վܾ׾޾ھY­X^\]Zk[BEFDGlCNdMLKceuũrٯFGĮŮӱϱֱձαѱԱбvͱuxٰswtqVļżƼHyƮرױz{rW礸Hٱ|ٵs_IǮȮ۱ܱݱڱ}~پYXJIO^J餹@PMSKNQLORЮɮ̮Ϯʮήˮͮ߱խޱծ౩٨ݦټ١yvwu{ݻxtz\Z[ȼǼʼɼ澻辳徶`nKmQRfPŪTѮҰ̳|뤳BAҮӮԮ´zagɵɴCGBE@AA@FDWCMNFXHSIVQOJPDRUELTGK[\iVLbJ[EeRADQa`FX_`cZKSfYamVXCjc]@lgIkPHd\T^bGZYO_UWh]NMB^WU߮ծݮ֮ڮۮخ׮ٮܮյչսհղճ鱺շջޮִѴҴδĴǴƴ״ɴŴд̴ٰٵٯ˴ݱϴʴٴʹôٴȴټپ٪ӴմٹԴݦݨݬݡݯݣݰݪ~شݿݥݢݭJH^FX}_B]GUd][@ZoQamI^KYgDkaMCWh`eSfEPLN`_nObTcljAVibR\ͼؼռѼμּ׼ԼټӼмϼ̼Ҽ˼EAHIDJ@GCFBchibfegdQNWVTOrPqSpXRMoLVUUhYZTXSWvVYd۴ܴڴݲpceqdۼڼKjYwBZ[nk\eofp޴ݴfghܼLlZ_qgߴijݼ޼`CHrhsijBAC@@AAB@ݷkM[¥]a~ɻIJ^tklDBråƥťĥD@ŦƦ¦ĦɼEæ[YLQSLMUROQVZXZKM\TWEG^UNJYVHICOP[]PNS\WR]FTKXDjzqKbeBmovhfguGpnsJuycIMO@lk}rux|AF~wi_d`N{taL|ϡwϪϬtv{Iҭϭ{sd~xzϥ}}pϨzmϪxoϫ^H|wvnϬϩyϡqϢrϦy~LCU[WJMFGJV_E@NBOYDhHHEfZgaSb\ecITAG`FQCiPKKX]eRPG[UGDgdXcNOIE@QYBD^F\SHFJhb_]faR`AEWVTLKCMAZIMDJCUVHDBSKQWAGEBCOLT@FGFEPNR@a`F޽_IJǷh·^CȷRHKc޸jbW̷˷ŷi޹ULYeͷTMķ÷PZdGQ޼[ɷN޿ESgVlXfƷO޺ʷD]\⭺}⢺n⯺wmⱺqsuS殺}o⣺u~||vtzwxz~pyx{t⪺⤺sr⥺{y߼vDNMYKOFRTC^W[`UILH_aV\JE嫺AZB@XQP]GI@AHCOBDFEDJGFEB@ANCQSYWZRVU[TXPqopmnsrx_ey\vsgwt^abcf]udh`]j`kh_\^bedg[icfiaxyŭWeƣlǦA^_b_`aXZURTVͣSP͡WQͥYϱϵϵwxyPLnv{QlrkuqMOzjmst|pNmNPLXJWiH[RlSVZOTjkYMI[QUKHIeOYbXL`^_Jc\ZK]aMdpwyޡڷkҷz׷η}m~lܷxϷԷqٷ|ovrnѷطַӷ۷зuշN{st⵺gdpjlfnmkqhocebriJQUSKILMHUVGVQOLPNRRMNOPKTSWXT\b`^a]_wtuvlmzkji{ljkyRݷnb}ϹfP޷|gɦBȦedc`[Ϻϻҡ~S]^o\_RpQkjhilڦޥީާ޹⺺stYZr}qpnolǥCDfbaˬegcfgd_;]deab\ͯ^ͮc`ϽϿϼҥXWUҩTVg֣Ҫbfenyhcmtsadurq`ipwTvsVuoqtrUxS߷ެުᷮ⻺ޯvu~}{zwxy|_\]W[a`^decyx~mnmzȥYvjɥEljkhhimkgjf͵ilh¬ŬϿĬìҫҶҹҺҬҸҵҳҷ_]һҲ^Z\xmklstp{uroynwzqy[xwv|~`ڢZڥ[abX}{ڣz_|ڤڪY^\]W鷷跻޳޺޸޹޵޴⾺@bAifegfZcX\[dhYmzjhknlgBEu@oFD{ACGvtsnŲʥnͼҽ}]{ų˥o`ҿ~ºi^_ropqIH|w̥ƬͥңcdΥϥFjiǬϬХѥҥӥklnmrpqˬɬʬȬ`dcba{z֤feڧBjså|ԥsúopt͸ϬЬͬά̬hinlkjemfg֢֭|~֤֣}kjhlmgiگǺƺźȺECHIFGĺDlksmro`qabpntwuvMN}O~LPJxoKp~}ѬnoեʦGqmҬӬԬoqpJxQqp֥uprKtRrץ׬ج֬լqrs֯ڱsɺʺLducySsإnxwͼvͽy۬ڬ߬ެ٬ܬݬuvwtֲֳִֵַ֭֮֬ھںڻڽtCκFDEAB@̺ͺ˺NQOMP}~vzywfgex{|h@{A|z~}U¥¢T{yztwuvf٥ڥoxuGB|xۥz|~}{Ϳ|zҢyҥ}~{ֵֶַֺvڸwxNQMLHOPJKкԺѺӺIҺTXVϺSURYWjlikFECDVGZW[]\XY~}z}yq{|~rtsܥrªҧҦҬֻּּֿRSTA׺պֺCB@mHI_^áVݥrqpĪêҲ־}|z{yAZX@W\[YIHDغGFٺ^_[]Z\pErqnoJ`¨©ãޥHsƪŪ@ҷ~D]^CBJۺںKLa`sK¬uߥAҸڣEܺMݺvĥ˦ǪBC@BӹDGEFCҺHAƲòDzŲ²IJȲڧڥڬګڭaPSGLFcJHbONKMIR_Q]XNPUTWRQߺSY[VOi޺\bce`hdfgvjtxQyw{zONLPMucagedjkhib­«flðêîïóxwyŢXYm~̦EFDGHIIOMӻKLNJɲ˲ʲگVdTeUfa^`_ka|}WSXTVRUz{A@ͦtȪLJKZǯSYïRXV¯įUӽTȯůɯƯQPWϲֲӲٲزԲвѲҲײͲղ̲ڲڴlڳڶڻβh]_ae[Yj`d\XWbZ^kifgcrjxtxeubwfvpcqshgdlimynokpyurvltswqnzrm{o~꨿ꣿꦿꤿ_Yia]dg\e`Zhc^b[fntwµovq·msurpøô÷õ~}ĭBŹ@BAlΦoʯڲjCIɪuM`[_]˯^\@ijnohkgm@pz|}üDźϦ˪ʪONb̯aܲ۲BCAsmlnrq~꪿yxýüðЦPeίdcͯݲ޲߲Dop~CAB{|}桽歿꫿kz{lѦҦ̪ϯQӦARS@BԦTѯfӯЯүA@qզs˪CUhԯgկCBDFGEtuEDpomnq|¾Ť֦wµvFצئ٦vwwtvyu{zxxѪϪΪӪժҪ֪ͬЪ|Ԫͪ[GH]WZcaIgLd\YIbDeV_FK`OMXJ^NEfگد֯jޯۯlݯkinHomׯٯܯ߯NEGHPLJMQFOKIȵQOʵJۡɵNKŵ˵PǵMGƵL̵ĵõwu{sߢxr{}v~|~yxy}͵|tzLHMJKIAD稽C秽@榽B걿꯿txzwvusry¡}~ôijECDڦתRN{ۦSܦPTUVOݦتhpWۤP|µަ٪RεQEߦϵR঱iQrqWTVSUXYZۦߨSJFIKHG괿F}}X[AJKMNLˣ{ˡ|zy}~~jܪͷ۪ߪͿݪڪ͸ઽ쯻ުb\daqt]kV`cewUYWRo~svХf}^xФuy|mУ{lp_ZSXTgnХ[zAv}~x|ӵӤtsr\ۦz{ӡuӯӶӰӧӢwy^`ey]houbi@wrnj\aYfcsdzlkZ_pvA[gmxqtl`׵}۪ۧյhۣiwsߵt]赡u۬pnzԵrۭkdocaеjۨصݵٵ~ڵvfҵ^ۢ۫e൰qmѵ|xֵܵ޵ӵyg{bۦ_Uߵߩ߱߿߲߰߶߶߱۵߸߯߾߲߫ߴߺߪߧ߭߮`X[YZ]aU^WVTc\b_stgfb紽vu_c]pawZXdni綽Om[RU{\SQNe篽`h穽x|竽WkoTy粽L絽rVjP^Y筽l}zqMI@CEAG븿LFUOF귿JT뿿QDHBVSP빿W뽿MKNS@ERDAMOQIPBRJGUHTKLVCN~³°ĩĦĬīļJKIGHLEFGOhӷ@B|{굸~XZYWЧikjӿAFӽCӻHӾӹGDӺEBLK׫HF~שקפ׬׭ׯװ}Eס׮GIDMJ߽۱쵶ﵺ۸۵ۼ۷۹ۻߺ¸øĸ㻸jeghmilfd߲½k翽绽缽羽繽纽罽da븽kge`oĿ\hi_^lb]cn[mj¿ÿfY]Zag\pj_kfm^`nXldch[bieo¥įBEACDQON@PFMžZn妪GlNŸýĽſЭmIJNMKLPUTRS׻׽׷׾O׵״Q͸ϸǸθʸȸɸ˸Ƹ̸tBAv@nprqsoƽʽŽǽȽɽup|ʿwyȿquxƿɿ{stzrvǿrqwstuxvIKHJRHIKJPnWVиCFED̿˿y{zTS[oCA@BѸDIGH}|}LULqrpTRQXPYVSWUO_Y^`Z[X]\DFEICB@GAH߸ڸոָҸ޸׸ܸӸԸPMEJQٸGOKNLݸFظLx{NM}ϽOK䦻y۸|z~wJֽҽٽڽ˽սԽνͽӽнؽ̽׽۽ҿ~ͿӿϿٿԿпڿۿؿѽοܿտѿֿ׿~AO@BCĴij@NMPQAV[XWZYCB@A@MNgmRPDDZaTSܽݽvƨbHVUWQR䨻ݿ޽޿FE\[IYZX߿Gst]^hfcgedJLQSRUOKMTPN[TSU߽併࿴HIJRBS\ŬEBji\]꽺vu_XWV_b`ae^fcd఻VLNKMTowlk`[^Yl]\_Zhonpmrikgjqs[aYbX]c`_^W\ZAC@EBFDEA@CBDROSQPTľCEVDUa`^]bcF_\QPOpnƭ`UyxcabmnCAEFLHJBIKDGb@acuwv{xtyz|gfde䳻MNIJKLH@GFGHIXYWVZXYWFdeHGd@|GŰdA[д|У~{}zjgnilhekmfpzv~w|roq}uxty{sMeOgiNfjhGO~PEJCBMLKIN}DFHRCASDBQPOEŶUoRSQT˧ˬ˨˷˹мйп׺qprע׷lVWTܣnSYXk\R[PZUmQRnqim»ljpkhoYHJVWUQGZTFIXKLM]\[\ZfŻut@Asפ_a]`o^psUTSsuƻûŻĻtra^_M`[\JK]LOPNR_Q^]HIC]qoƼVĽqBxvzDywCԨBث@תCצAmljbqeovnyuciwhxzkrswutfrvtsdgpaWYeZ\f[db^c`Xg]_xǻz̻лȻɻ~ѻͻ|˻ʻyλ{wvϻ}RZUgPOVeTqcdNXtysowuhb}W~xmkfn{jzSv|rlQpYiDACB@@CEEBAD`YTc[eU_aWX]bjgk^Zhj\dfiSVscqalhrbetmpid`okugnBf@DACafOhIdjNJK`gMeL_cb^implnoijgkhųKMLNJDSRT_U^VruthsrpqwDxܥv{EFج}zyܣ|{~{hһջ׻ֻӻԻ[\MKIJFFNHLGnlmwxEGFPmlkXVYW¨˿˭@ЮЭEԢF~|}IصHKرJثGا}ܬ|~ܡܤjkiػڻٻGHOIoAGLضܦܯnomۻlܻPJptqusyBܧܳsprqݻ]^_`QNKPSLROMwvx~}z{|HISnQRoŵqEGFWCtQRDañSŲMuv޻߻cbdVUTTA@}{~|y@zJKpOPHiCBäqrWDXAçLMTQNصܷz|wx{yge[fYZU[YXVZWEJFIHGDBECèF@ĨAħQNOPrVUtsI`X仾hGíBĬuRStsuHO~}i\kjla_^]`\K^]_NLMRKQTSPOJHICDXWUTYvwWvVwaYPUﻭ`WVLòहࣹnqsrtpmocfdcihgbbaedZ^[]\Y_b`a@XcMïEFĴ`^]ca\Z[_bx~y[šZ}|Y{Xz}~{x|yzRSJvjkƴzluejmfdkNfde\ŤżbIhvwnqpoghfegOüPGgihTUVKcƶxiJ{ƬrzyiSRQ^Ũ]ũL|{}xvwsytru|j{z~jmltosqpnkCBDAuXWUTJKIHloVmsqkvjrnut`_ŴűŬpZ\_[`YW]X^MZ\[yxwzst}~okplmnz{~|vy}EF¦wYZ[MxOPNL}{|x~zwyabŽdſcŻindgkreosjcmlqphbfNOa]^`_ba|{x|}PQGQSRecT³tdHu¶rqLJKI\fvwd}uܶxRe~쪹]gy^ĸ|{zM}fN~hŽĻijTSgjihseÿtJJWY[_`cdghklopstwx{|ơǡʡˡȡɡ\MOQRST}~̡͡ΡޡߡLMNICH]^ϡAСDAGFաס֡HIϢТѢҢӢԢբ֢עآ٢ڢۢܢݢޢߢBġ@ABCaUbNZ5E#Q!`!i!!"" %")"+($`$i+$t$}5%m%s?%%F%%U&@&BY00\00)r0A00011),33QNNTN-N3gN8N<nNKNSsNXN_|N~NNNNNNNNNNOO,OdOgO /OO gOO PP7 PCPw PP PP PQM OQWQn QuQx QQ QQ QQ QQ QQ RR RR R$R* R.R; RCRN &RRRb 2RiRo CRtR JRR dRR jRR pRR vRR SS# S-S1 SZmZwZZZZZZZZZZ[4![<[@c[G[eh[n[[[[[[[\\\7\]\`\tA\y\~V\\\\\l\\\\\]] ])].]R]e]l]y]]]]]']]>]]F]]R]^Y^^-c^3^8}^=^E^J^^^^^^^^^^_ '__)5_-_8M_F_OY_T_Yc_g_i_________`` `9`@`M`S`r-``M``r`aa'a/a>aaa(aa6ab6]b=bfbmbbb bb$bc=c(cZicecccd dC dMdT[dXdcdddddddeJeQelDere`eeseeeeffff(f+f:fAfL fYfff@ffVff\ffuff~fggg.g1g?gEg`glggg0gg>hh!{h%hThkhhhii@i/i{Tiiij jj(j4jA*jDjo8j~jdjjjjjjjjjjkkk/kVk[kgkvkkk`kl8l>lClJlll3mm"~m%mBmXmmm nny Tnn noC!oNo!Zoo!oo!opL!pQpk"Cpp"^pp"cpp"mpp"pq"qq("q.q2"qAqr"qq#qq#qr#orr-#r5rL#rVrc#rlr#rr#rs$.ss $=ss$Cs"s)$Ss0sE$[sIsR$qsWs${ss$ss$ss$ss$ss$st $t t6%t?tF%-tJtd%5titu%Pt|t%]tt%mtt%tt%tu@%uKuO%uYup&uvu&uu&'uu&'wwDwO'wRwo'w|w'ww'ww'xx(%x x(*xx8(3xHxR(Ox\xq(Zx{x(pxx(xx(xx(xx(xx(xy(yy(yy(y!y1(y8ym)ypyt)9yyy)>yy)Hyy)yy)zz)zz")z.z1)z9z@)zDzN)zTzb)zgz)zz*$zz**zz*Nzz*Vz{*[{{5*y{D{X*{`{i*{m{x*{{*{{*{{*{{*{|+||-+)|7|@+;|E|M+E|W|z+N|}|+r||+||+||+||+||+|}"+}(}G+}N}s,}y},8}},V}},~~I,~P~c,~h~-6E-9HU-I[-W-|ۀ!-р&,.3?.FJ.,OR.1Z^.5o.:.K€. .0.CU.ށ^z.//Ղ/]"/(,/2/0т0: 0e"V0us00)~1?1111ۅ=N2&Qn28u2V2Ն 2@2FV3[t3#w|3=3C3iІ333C3‡L{344'4?шD4bHN4ֈR4݈554Ɉ5A5ZF5K55񉪉66 Ҋ6'6]9[6j^c6h|666Ċ6Њ`7cp7yw79W7a7όύ 8;8wd888 9 +90|9>9ɏd9:S:[͏:`:k $:-D:G:Đ;%;/ԑZ;>_z;ő;ᑙ;<: `>4z}>X>\>iÕ>$>*2>9D>–JT>Ζ[d>ٖj>㖸?.?a2?8K?Xb?f????!@#$2@O5;@^At@e@@@5@:a@A"A+əALkAuA͚BBaB#dhBoBBBBBӛBΜB!ABFYC^hC-qzC8CB CH8Ca;ECJLCOaCgCC͞yDXDtD̞DD8D=ODR{EE/0DE5IkEJ!J!! K""#"%"."4"5"<"R"`"a"f"g""%w%x% z%{%|%}%u%$t%,s%4r%W@}WAʪWEʫWaYWbWd[WWWUWWTWZWWԱXԮXhXkXmXoXqXYX裏X_YZYʰY Y"Y$Y%Y7iY8jYY@ʱYZ \Z bZ [Z`ZPZ#XZ%ZZ)YZ-]Z.^Z<@ZpZZZع[8T[C][EC[i[k][le\\|\K\"q\$\%\(ʾ\*ʿ\,\0\1N\3L\o]S]R]U]Y]^S]bV]cN]oD]qM]rQ]w]]]r]]D]E]`]]]]]]ί^ ^ ^^^h^f^__<]_@b_C_D_]U_b_d_e_w_{_`P`za#ha2ka4[a6ja7_a;aaavaaa}aaab:b©ckcdcdpdKdeOeoݼeeyfOfQfRffggjWgUi%i*ٮiiii\j jj2jvjokk k!k#Yk%k(dk,k-kYkjnkmkrkkl;ɤlFlLnnnMnn@n\oQooopppqApt^pv_pxbpz_p|`p}apppϯpϳppϰpmpNqUq6Mq:dqxtq{q}qqqqr jr ir {rlrjrkr0rOޤrRrSrgrirj[rCrDrfs-usEsұt~tڡt`tڧt:WtgtytitftãtstnttuGuHuT`usuuv8av:bvʁ[w\u%r/qӨvӣ}Ӳ Ӫۮ#_߳„х;MqKĨCY{F㈱͈tIىWъ*X,ˊ-]0Ɋ1\4D6FfՊy֊ҋt7Zb\ό]Ќ_ ĺ.ȎߎUd@쏨돿˦˥͐έ^൒OVZmZwZZZZZZZZZZZ4[!<[@[cG[e[hn[[[[[[[[\\7\]\`\t\Ay\~\V\\\\\l\\\\\] ])].]R]e]l]y]]]]]]']]>]]F]]R]^Y^-^c3^8^}=^E^J^^^^^^^^^^^ _'_)_5-_8_MF_O_YT_Y_cg__i_________` `9`@`M`S`r`-``M``r`a'a/a>aaaa(aa6a6b]=bfbmbbbb bb$bc=(cZciecccc dCd MdTd[XddcdddddddJeQeleDree`eeseeeefff(f+f:fAfLf Yffff@ffVff\ffuff~fgg.g1g?gEg`glgggg0gg>h!h{%hThkhhhhii@/i{iTiii jj(j4jAj*Djoj8~jjdjjjjjjjjjjkk/kVk[kgkvkkkk`k8l>lClJllll3m"m~%mBmXmmmm nynT nn nCo!NooZ!oo!oo!oLp!QpkpC"pp^"ppc"ppm"pp"pq"q(q".q2q"Aqrq"qq#qq#qro#r-r#5rLr#Vrcr#lrr#rr#rs.$s s=$ssC$"s)sS$0sEs[$IsRsq$Wss{$ss$ss$ss$ss$ss$s t$ t6t%?tFt-%Jtdt5%itutP%|tt]%ttm%tt%tt%t@u%KuOu%Yupu&vuu&uu'&uu<&uuF&uv|&v)v&-v5v&BvIv&Rvev&ivrv&xvv&vv 'vv'vv-'w wR'w)w]'/w>ww'DwOw'Rwow'|ww'ww'ww'xx%( xx*(x8x3(HxRxO(\xqxZ({xxp(xx(xx(xx(xx(xx(xy(yy(yy(!y1y(8ymy)pyty9)yyy>)yyH)yy)yy)zz)z"z).z1z)9z@z)DzNz)Tzbz)gzz)zz$*zz**zzN*zzV*z{[*{5{y*D{X{*`{i{*m{x{*{{*{{*{{*{{*{|+|-|)+7|@|;+E|M|E+W|z|N+}||r+||+||+||+||+||+|"}+(}G}+N}s},y}}8,}}V,}},~I~,P~c~,h~~-6E9-HUI-[W-|-!-&,.3?.FJ,.OR1.Z^5.o:.K.€. .0.CU.^z./ҁ/Ձ]/"/(,/2/Â0т:0 e0"Vu0s00)~?11ׄ111=N&2Qn82uV2҅2Յ 2@2FV3[t#3w|=3C3̆i3І톇333C3L{34'4̇?4чDb4HN4R45ˆ45ɈA5Z5F5K556 6҉6']69[j6^c6h|6666`7cpy7w79W7ǎ7ό ;8w8d888 9 +90|>99Ɏd9S:Ə[:͏׏`:k: $:-D:G:%;ː/;ԐZ>;_z;;ݑ;:`4>z}X>\>i>Õ問>$>*2>9D>JT>[d>j>.?a?2?8K?Xb?f????!#@$2O@5;^@Ate@@Ƙ@@5@:a@"AÙ+AəLAkuAšAؚ͚BBa#BdhBoBBBBʛBӛBB!ABFYC^h-Cqz8CBC HC8aC;ECJLCOaCgCCyXDtDD̞螋DD8D=ODR{E/E0D5EIkJE ¡!J! !K"ԡ#"%"."4"5"<"R"ܡ`"ڡa"ݡf"ءg"١"桿"%w%x %z%{%|%}%u$%t,%s4%r<%qP%^%a%j%%v%y%%%%%%%%%%%&& &0ƣ23U3V3T3W3S333ON@NBNCNN&Nè+NXBN@CNDEN[GNGHN\VNĨiNsNŨN奛NǨNNܹNNHNO"OɮOVOJOO׭OOڭPέW@W}AWEWaWYbWdW[W˂WWUWWTΏWZήWWXhXkXmXoXqXܘXYXX_YZY Y"Yڹ$Y۹%Yٹ7Yi8YjY@YʊY Z\ Zb Z[Z`ZP#ZX%ZZ)ZY-Z].Z^ʵ[w\u%r/qv} #_ۂߔۄ;MqKCY{F㱈tIW*X,-]01\4D6Ffոyֽҽt7Zb\]_ ę.粎ŽU󛏯d@쿨뿿ɏˏͪΐ^໒OV?@ABCDEFGHIJKLMNOPQRSTUVWX0 00 "0 & %PdRTUVW\ 1 34O 56[]78009:00;<0 0 =>00 ?@0 0 AB00CDYZ[\]^    00 5 2 ;0%%%%%&&%%%%%%2! >?IJMNKL_`a ""f"g"`""R"abcdef"<")"*"" ""33"+"."5"4&@&B&A& !!!!!!!!"%"#<0 !! ijk333333333QYQ[Q^Q]QaQcUt|%%%%%%%%%%%%%%%%<%4%,%$%%%%%% %%%%m%n%p%o%P%^%j%a%%%%%q%r%s!`!a!b!c!d!e!f!g!h!i0!0"0#0$0%0&0'0(0)SD!"#$%&'()*+,-./0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ11111 1 1 1 1 1111111111111111111 1!1"1#1$1%1&1'1(1)NNYNNNCN]NNNQ?QeQkQRRRSSAS\SN N NN N+N8QNENHN_N^NNQ@RRSCSSWXYY'Ys[P[Q[S[\\"\8\q]]]]]]^r^_ _bMNNN N-N0N9NK\9NNNNNNNNNNNNNNNQCQAQgQmQnQlQQRRRRRRSS9SHSGSES^SSSSXY)Y+Y*Y-[T\\$\:\o]^{^___bb6bKbNe/eeeeefgg(k kbkykkkll4pkr*r6r;rGrYr[rsNNNNNN;NMNONNNNNNNNNNNNQEQDQQQQQQR RRSSSSNSJSISaS`SoSnSSSSSSSSSSSSSSSSSSSSVVYY.Y1YtYv[U[\<]]]^^^s^|____b bSbTbRbQeeg.g,g*g+g-kcklll8lAl@l>rssttuuu(u)u0u1u2u3uv}vvvwwwy:yztzNNNRNSNiNNNNNO OO OO OOONNNNNNOO QIQGQFQHQhQqQQRRRRRRSS!S SpSqT TT T TTT TTT TTTTTVVVW3W0W(W-W,W/W)YYY7Y8YYxYY}YyYY[W[X[[[[[\\y]^^v^t____bb b bbcb[bXe6eeeeffg g=g4g1g5k!kdk{ll]lWlYl_l`lPlUlal[lMlNppr_r]v~z|s|6 3 nr~k@Lc!N2NOMOOOGOWO^O4O[OUO0OPOQO=O:O8OCOTOT&TNT'TFTCT3THTBTT)TJT9T;T8T.T5T6T TWPWOW;XY>YYYYYYYYYYYY[][\[Z[[[[[\,\@\A\?\>\\\\]^ ^^^^___d_b_w_y________bbbbbbbvbbmbb|b~bybsbbobbnbbbbe9e;e8efg_gNgOgPgQg\gVg^gIgFg`gSgWkeklBl^llllllljlzllpllhlll}llrl~ltllvllllpvp|p}pxrbrar`rrsu,u+u7u8vvwyyyzv|UoҊ7FUdpʏƏŏ]ᐑIƑ̖2.1*,N&NVNsNNNNNOoOOOsOOlOOOOOpOuOOiO{OO~OOOzQTQRQUQiQwQvQxQQR;R8R7R:R0R.R6RARRSRSTSSSQSfSwSxSySSSTsTuTTxTTT{TwTTTT|TTqTvTTTbThTT}TVWWwWjWiWaWfWdW|YYIYGYHYDYTYYYYYYYYYYYYYYYY[_[d[c[[[[[[\\H\E\F\\\\\\\^^^^^^^x^^^^^^_&_'_)____|_____```/`5``*``!`'`)`+`bbb?b>b@bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbe>eeefff fffffff fg g gmgggqggsgwggggogpggg~gguggg|gjgrk#kfkgkllllllllllllllllllllllllllllllllllpppppr,r-r8rHrgrirrrrrsssssu=uuuvvvvwwy>y@yAyyzzzyz|T NqRhˏΏԏѐǑѕw@?;DBR^NNNOOOOOOOOOOOOOOOOOOOOOOQWQQQRNRCRJRMRLRKRGRRRRS SWS{SSTTTTTTTTTTTTTTTTTTTTTTVWWWWWWWWYUYQYOYNYPYYYYYZYYYYZY[i[[[[[\\N\O\M\K\\]^^%^^}^^^__-_e_______``` `%``(`M`p`h`b`F`C`l`k`j`dbAbcc bbcbbcbbbbbbcce?eEeeef%f-f f'f/ff(f1f$fgggggggggggggggggggggggggkjkkkkkllm m2m*mAm%m m1mmm;m=m>m6mlm9m'm8m)m.m5mm+pppppppppr0rrrortrrrsssssssuu-uOuLuNuKuuuuuvxvvvvvvvwvvw w vvwwxxx x yFyIyHyGyyyyyzzzz|}}}}} }}}8 6րڀÀĀ̀ۀ΀ހ݁"ۂ ҂ׂ܂Ԃтނӂ߂Py{zMkԊts͎̏ʐΐÑKJ͕PKLMbi˗ۘߙNXNP P P#OP&P%OP)PPPc/cUcBcFcOcIc:cPc=c*c+c(cMcLeHeIeeefBfIfOfCfRfLfEfAfgggh!h8hHhFhSh9hBhTh)hhhLhQh=ghPh@hSfUFUjUfUDU^UaUCUJU1UVUOUUU/UdU8U.U\U,UcU3UAUWWW W WXX XWWWXX5WWY YbZ6ZAZIZfZjZ@ZwUUUUUU~UUUW X/X*X4X$X0X1X!XX XXY`ZwZZZZZ[s[q[[[[\ \ \1]L]P]4]G]^E^=^@^C^~^^^^_<_m___`````aa#`a```ah`a`a aabbIccccccccccccccccvcccdRcce^efebeceeefnfpftfvfoffzf~fwffgghhhhhihhhhhhhhhhi iihhinhk>k:k=kkkkl.l/l,n/n8nTn!n2ngnJn n%n#nn[nXn$nVnnn-n&non4nMn:n,nCnn>nnnnNncnDnrnin_qqq&q0q!q6qnqrLrrs6s%s4s)t:t*t3t"t%t5t6t4t/tt&t(u%u&ukujuuuuuuuv{v|vvvvwOwx]xlxoz zz zzzzzzz{I{V{F{P{R{T{M{K{O{Q||}^}P}h}U}+}n}r}a}f}b}p}sUՀ RUTKQN9F>LSt ń W ̃ʄ8܄ԃ߆[߆نԆۆІވWˆ;`U^a4a'a aa7b!b"dd>dd*d-d=d,dddd d6dddeleeffffffffgiimiZiwi`iTiui0iiJihiki^iSiyii]ici[kGkrkkkknnnnnnnnnnnnnnnnnnnnnnqNqYqiqdqIqgq\qlqfqLqeq^qFqhqVr:rRs7sEs?s>totZtUt_t^tAt?tYt[t\uvuxvuvuuuuuuvvw[wkwfw^wcwywjwlw\wewhwbwxxxxxxx|xxxyzyy,yzzz zzzzz{w{{`{n{g|||}}y}}}}[nijrVXqpxenskyzfGw=1ufkIl[<5acimF^\_ Y߈Ԉو܈؈݈ʈՈ҉krsfip|cqmbnly{>hbʌnjȌČ̌ōߍ掲 KJSBTAljiɒ7W8=@>[KdQ4IME9?Z͖˖ɖʖVtv  鞂 PPPPPPPPPPPPQbQRRS1SUVVVUVVV V VUVVVVUWWXuX~XXXXyXX}XY%Y"Y$YjYiZZZZZZZ[u[[[[[[[[[\ \b]]^[^c^U^W^T^^_ _F_p_aGa?aKawabaca_aZaXaub*ddXdTddxd_dzdQdgd4dmd{ereeefffiiiiiiiiiiiiiiiiiiikIkLl3o3onono)o>o o,ooo"nnoo1o8o2o#oo+o/oo*nonnnqqq}qqqr>rrsDsPtdtctjtptmuuv'v v v vvvww}wwaxxxxxxyyyz.z1zzzz{{{{u{{{{{{{|||}}}}}}}}}}}}}}}}}}}p߀^ZPKɄƄĄ˄ӄфʇ?;"%4U7)jӌьҍk`X\cY^b][uxwtx{|̖җ| AB󞼟;JQQPPPQQQ QQRRRRRRSV.V;V9V2V?V4V)VSVNVWVtV6V/V0XXXXXXXXYm[ Z[ Z[ [[[[[\d\e]]^b^_^a^^^^^^_H_q__avagana]aUaa|apaka~aaaaaaaaab.didodyddddddddddddddddddeuewexffffj#jijjjij!jj ijjijkPkNkkko?o|ooQofoToomo[oxonoozopodooXnooo`o_qqqqrVrsNsWtittt~tuv v)vv$v&v!v"vvvwwwwwxxxxxxxxz?z~F~7~2~C~+~=~1~E~A~4~9~H~5~?~/DqrposƁÁɁ q~gч҇Ƈȇˉ;6D8= A?sIKHJD>BE?}9M(uJeK~l[pZTʕ˕̕ȕƖ֗ӘF5;?Ϟޞܞݞ۟>KSVVXX[8_]ab3dddedddefg&jjjjjjjjk_kxkp p opoppqqqqswsuttuvVvXvRwwwwyyzazbz`zz|+|'|*||#|!|~T~U~^~Z~a~R~YHwv́ς υͅЅɅ(9,+PYcfd_UIMГԕ֕ЕՖܖٖۖޗ$MOLNS>?=.ONMʛɛțQ]`,Q3VXXX[^aaaaeeffjjjjppp(pppprr rXrsxsztttuuv_vawyyzkzi|>|?|8|=|7|@~k~m~y~i~j~s؅݅Յ `_V^A\XIZNOFY |rvlztTNѓߓÓȓܓݓ͓֓ؓדܖ*'aܗ^X[EI ֛۝arjlRVVVVVX[@[C[}[]aaeeefg'jp>p0p2rs{tvbvey&y*y,y+zz|L|C|M||~}~|~Lڂf  dplfo_k ˔0ęRQ+075 y/_caQ7Q8VVVY\l]aaeeefjkjkpLrrttviw|P~~-#"!jltw}_.35:82+892geWEC@>ϛTQ-%\fgQ×kUUMқI1>;ӝן4ljV]be#e+e*fktz|d|c|e~~~8?1c`dho\Z[WӚԚќTWV垟VXe,p^vqvrwP69bwjBHDƘp_"X_|}wr^kpc|l|n;rpq^֛#pdwڋwɚbe~Ŕ}~|wxTr(j1|r00000A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000#$%&'()*+,-./012345Q6789:;<=>?@ABCDEFGHIJKLMNO$`$a$b$c$d$e$f$g$h$i$t$u$v$w$x$y$z${$|$}NBN\QSSNN NGNV \n_sNQNN.NNNNQRSlSW YY,\]ekklr?N1Ng9g8g;g:g?gOgORO_OAOXO-O3O?OaQQRRR!RRS ScSrSST0T7T*TTTETTT%TT=TOTAT(T$TGVVVWAWEWLWIWKWRYY@YYYYYYYYYY[[\(\*\\\\\\\\\\]^ ^^^^^^___x_v______________`_b:bbbbbbbqb{bzbpbbbwb}brbte7eeeeegEgGgYgUgLgHg]gMgZgKklllxlglkllllqlolillmllllflslel{lptpzrcrrrrrrrsssssu:u9uuvy=4xɏ0(/-N3OO|OO}OOOvOtOOOwOLOOjOOyOOxOOOOOOOOkOnQQQR5R2R3RFR1RS S SuuvvvvvwwwwwwyBy?yzxz{z|u|5 ‚ÂpomnVҏˏӏ͏֏Տא9=<:COOOOOOOOOOOOOOOOOOORDRIRRS=S|SSSSTTTTTTà TTTTTTTTpTTTTrTTWWWWWWWWWWWWWWWXY YSYYYZYYYYYYYYYYYYYYYYY[\L\\\\\\\\\\\\\\\\\\\\]^!^"^#^ ^$^^^^^^__._V_`7`9`T`r`^`E`S`G`I`[`L`@`B`_`$`D`X`f`nbBbCbc c bccbbcc bbcccbcbbeAeCeef6f!f2f5ff&f"f3f+f:ff4f9f.ggggggggggggggggggggggggggggggggggggggggggk(kkkkkkl l!m(m4m-mm9/%3-DQ%V?A&"BN*ZMZ9ZLZpZiZGZQZVZBZ\[r[n[[\Y]] ]]] ] ](] ]&]%]]0]]#]].^>^4^^^^^_6_8___`````````````````````c2ceccc}ccccccccocccnccuccmcc|cc;ccxcccccpeSefefaf[fYf\fbghyhhhhmhnhhiVhohhhhuhthhhwhh|hkhrhhhqh~hhhhhhhxh{hhhh}k6k3k7k8kkkkkl*mmmmntmmmmmmnmmmmmmmmmmmmmmmmmmmmmmmmmmmpq pqpq pqpqppqqqppq qqr~r{r|rssssss srssssssttsttssst t studucuuuuuuuvvvw9w/w-w1w2w4w3w=w%w;w5xHxRxIxMxJxLx&xExPydygyiyjycykyayyyyyzzz{5{G{4{%{0{"{${3{{*{{1{+{-{/{2{8{{#||||}5}=}8}6}:}E},})}A}G}>}?}J};}(cɀGCH%-,!'"83:42tzstu}~vYV†ņȆ̆ÆR։ىՊ0',9;\]}}{y؎ގݎ܎׎$  !ԐVXZSUz|mkqoj噗PPPPPPPPPPPhPPPPQ_QSSSSUUUUUwVEUUUUUUUUUU}UUUUUUW X)X7XXX'X#X(WXHX%XXX3X?X6X.X9X8X-X,X;YaZZZZzZZZxZZ|ZZZZZ7ZZZZZZZ{Z}ZZZZZ[[[[[[[\ \0]7]C]k]A]K]?]5]Q]N]U]3]:]R]=]1]Y]B]9]I]8]<]2]6]@]E^D^A_X___``````a`a aa`a````aaaa`aa bJccccccccdcccccccdaccccccccccccccce2egejede\eheeeeeeeef|flf{ffqfyfjfrgi hihi*hhhihhhhhiihhihiiphihhihhhhhi i ihhhhhhhihhii%hk9k;k?k?ef׀QOPԁCJROG=M:<=?u;σ#ƃȃヿ݃؃˃΃փɄ ބƒՃǃуÃă׃ۃ؆ӆچ݆܆׆шHVU׈ɉ݉ډۊNM9Y@WXDERHQJLO_؍Ӎ͍Ǎ֍܍ύՍٍȍ׍Ŏ-4/,ad_b` %& '${~–ȖÖlpnNNNPPPPPPPPPPPPPPPPPQRzRxR{R|UUUUUUUUUUUUUUUUUUUUUUUWXSXhXdXOXMXIXoXUXNX]XYXeX[X=XcXqXZZZZZZZZZZZZZZZZZZZZ[[[\\3]q]c]J]e]r]l]^]h]g]b]^O^N^J^M^K^^^^^_@__`aIaJa+aEa6a2a.aFa/aOa)a@b hb#b%b$cccddd d d$d3dCdddd9d7d"d#d d&d0d(dAd5d/d dd@d%d'd cdd.d!deoeefffffffffxg ifi_i8iNibiqi?iEiji9iBiWiYiziHiIi5ili3i=iehixi4iii@ioiDiviXiAitiLi;iKi7i\iOiQi2iRi/i{iF 2*-<:15B&'8$0뉝芫=hiՌό׍   # "$!zrysvzy}~-X}z~{Ηٙ͘ǚ>?`a_PQQ0PQQPPQ Q PQ RRRRVHVBVLV5VAVJVIVFVXVZV@V3V=V,V>V8V*V:WXXXXXXXXXXZZZZZ[Z[Z[[[[\g]]]]]]]]]]]]^i^]^`^\}^^^_I_aaayaaaaaaaaaaaaaafab-dndpddddddddddddhddevezeye{eefffffffjjjiijiij iiijjij'iijiij@jiij iij jjj%jij&jijkQkkkkllkloAo&o~oooooooboOooZoovolooUoroRoPoWooo]ooaoko}ogooSooiooocowojo{qqqqqqqqqqqqqqqqqrrsXsRs^s_s`s]s[sasZsYsbtttttt}ttt|tyuuu~v%vvvvv#vv(vvvvvwwwwxxxxxxxxxxxyyyyyykvz9zzz{{{{{{{{{||||}}}}}}~}}}}}}}vdgOSRPNQ$;)  '+ *(.1& 0 /bVcdwsXT[RaZQ^mjPN_]olzn\eO{ubgiZ   ϊƊӊъԊՊ׊Ŋ؊Êٌ>Mߌٌڌ݌獠 #%$.&',$ #spogk/+)*2&.ВÒĒْϒߒؒגݒ̒’ʒȒΒ͒Ւɒޒђƒ|ӗZЗϘ&)( 'ܙ͙ϙәԙΙəؙ֙˙י̚FCgtqfvuphdlӟQQQQQQS4SVpV`VnVsVfVcVmVrV^VwWWXXXXXXXX[[[[![[[[[([[ [[]]]]]]]]]]]]]^g^h^f^o^^^^^_K_aaaaaaaaaaaaddddddddddde3ee|effffffffffg#j4jfjIjgj2jhj>j]jmjvj[jQj(jZj;j?jAjjjdjPjOjTjojij`j[qNnuUg`f]Telcedy&0-.'1")#/,݋ߊȊފln3>8@E6<=A0?6.52974vy{356'z8<#F- ˓%4$)95* ͕ԗ 5/2$')皹3|~{z}% )"՞֞=Q&Q%Q"Q$Q Q)RVVVVVVV~VVVXXXX[-[%[2[#[,['[&[/[.[{[[]^l^j__aaaaaaaaaddddddeeeefjjjjjjjjjjjjjjjjjjjjjjjk[kl ooooooooooooooqqqqqqqsssnsotttttttttuuuuuvCvHvIvGvvwwwwwwwwwxxyxxxyxxyyyz\z[zVzXzTzZzzz||{|{{|{| {|| ||{{|{{|| |~-~<~B~3H~8~*~I~@~G~)~L~0~;~6~D~:E~},ā́ʁŁǁ[Z\{w|zxWyvhŇɇLJ̇ćʇއ53<>AR7B " OprqooNMSPLGC@~8dVG|X\vIPQ`mLjyWUROqw{a^cgNYǕɕÕŕ ՗ԗADJIEC%+,*32/-10H3Ag6./180EBC>7@=-Ȟڞ$#"TQ1Q-Q.VVVVVVYp[<\i\j]^m^naaaaaaaaaadeddeedeefffjjjjjjjjjjjk^kl pp p ppppopop&oop rqqrqsvttttttttuuv\vdvYvPvSvWvZvvvwwxy yyy yyyyyz_||)|| ||-||&|(|"|%|0~\~P~V~c~X~b~_~Q~`~W~SuсЂ_^ƅŅDžą˅΅ȅŅ҆$iۇ߇ԇ܇Ӈ؇㇤ׇو݉SKOLFPQI*'#305G/<>1%7&6.$;=:Bu\b`WV^eg[Za]iTFGHK(:;>ҕӕіז]–ߖؖݗ#"%חٗ֗ؗPQRA<:  ܛ)5JLKǛƛÛӛě\SOJ[KYVLWRT_XZߟ%+*)(LUQ4Q5RRSVVVVVVXXXY[=[>[?]^p_aeee e e eeeefjjjjjjjjjjjjjk`kl pp'p pp+p!p"p#p)pp$pp*r r rrrrrrrrttttuv`wwwwyyy!yyyyzgzh|3|<|9|,|;||~v~u~x~p~w~o~z~r~t~hKJxׁՂdacمڅׅ؅߅܅хޅ  bZ[Wa\X]YPHJ@SVTKUQBRWCwv mxsjo{RQOPS@?ޓǓϓ“ړГ̓ٓʓԓՓēΓғ}ڕۖ)+,(&ݗޗߘ\Y]WHGC%$" '#›  7ޛԛכܛٛ՛ڝwqx}ktupis{oyh-@AMVWXS7VVVX[E]]^^__aeeeeefffjjjjjjjjp02.3vtsEdcbU]W^ėŘVY RXPJMKUYLNžО876COqpnoVV[N\me-ffkp_pap]p`r#ttwy8yy|j~mC875K”khiFCGǗ^՛Ycgfb^` FtuvVe.ekkkkpbr&rwwy9|i|k|~~~~FGHyz|{nmoqsIr_hnm  Gx{zyWpf|o<Ôtxvu`tsqu phpe|j>=?ɗKst̙adfg$Hbkr'Lih.r)Kyvukzpipj~I  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX0 00" 0& % PdRTUVW\ 1 34O 56[]78009:00;< 0 0=>0 0?@ 0 0AB00CDYZ[\]^    005 2  ; 0%%%%%&&%%%%%%2!> ?IJMNKL_`a "f"g"`""R"a"bcdef<")"*"" """33+"."5"4"@&B&A& &!!!!!!!!%"#"<0 ! !ijk333333333YQ[Q^Q]QaQcQUt|%%%%%%%%%%%%%%%<%4%,%$%%%%%% %%%%m%n%p%o%P%^%j%a%%%%%q%r%s%`!a!b!c!d!e!f!g!h!i!!0"0#0$0%0&0'0(0)0DS!"#$%&'()*+,-./0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ1111 1 1 1 1 1111111111111111111 1!1"1#1$1%1&1'1(1)1NYNNNCN]NNNN?QeQkQQRRRSAS\SS N NN N+N8NQENHN_N^NNN@QRRCSSSWXY'YsYP[Q[S[[\"\8\q\]]]]]]r^^ __MbNN N-N0N9NKN9\NNNNNNNNNNNNNNNCQAQgQmQnQlQQQRRRRRRS9SHSGSES^SSSSSX)Y+Y*Y-YT[\$\:\o\]{^^___b6bKbNb/eeeeeefg(g kbkykkkkl4lkp*r6r;rGrYr[rrsNNNNN;NMNONNNNNNNNNNNNNEQDQQQQQQQ RRRSSSSNJSISaS`SoSnSSSSSSSSSSSSSSSSSSSSSVVY.Y1YtYvYU[[<\]]]^^s^|^____ bSbTbRbQbee.g,g*g+g-gckkll8lAl@l>lrssttuu(u)u0u1u2u3uu}vvvvwww:yytzzNNRNSNiNNNNNN OO OO OOOONNNNNNO OIQGQFQHQhQqQQQRRRRRRS!S SpSqS TT T TTT TTT TTTTTTVVV3W0W(W-W,W/W)WYY7Y8YYxYY}YyYYYW[X[[[[[[\y\]^v^t^____b b bbcb[bXb6eeeeeff g=g4g1g5g!kdk{kl]lWlYl_l`lPlUlal[lMlNlpp_r]r~vzs||6 3 nr~k@Lc!2NNMOOOGOWO^O4O[OUO0OPOQO=O:O8OCOTOT&TNT'TFTCT3THTBTT)TJT9T;T8T.T5T6T TWPWOW;WX>YYYYYYYYYYYYY][\[Z[[[[[[,\@\A\?\>\\\\\] ^^^^^__d_b_w_y_________bbbbbbvbbmbb|b~bybsbbobbnbbbbb9e;e8eef_gNgOgPgQg\gVg^gIgFg`gSgWgekkBl^llllllljlzllpllhlll}llrl~ltllvlllllvp|p}pxpbrar`rrrs,u+u7u8uvvwyyyvz|Uo҉7FUdpʎƏŏď]IƑ̑2.1*,&NVNsNNNNNNoOOOsOOlOOOOOpOuOOiO{OO~OOOzOTQRQUQiQwQvQxQQQ;R8R7R:R0R.R6RARRRRSTSSSQSfSwSxSySSSSsTuTTxTTT{TwTTTT|TTqTvTTTbThTT}TTVWwWjWiWaWfWdW|WYIYGYHYDYTYYYYYYYYYYYYYYYYY_[d[c[[[[[[[\H\E\F\\\\\\\\^^^^^^x^^^^^^^&_'_)____|______``/`5``*``!`'`)`+``bb?b>b@bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb>eeeeff fffffff ff g gmgggqggsgwggggogpggg~gguggg|gjgrg#kfkgkkllllllllllllllllllllllllllllllllllppppp,r-r8rHrgrirrrrrrsssss=uuuuvvvvww>y@yAyyyzzyzz|T NqRhˎΏԏяǑёw@?;DBR^NNNOOOOOOOOOOOOOOOOOOOOOOWQQQQNRCRJRMRLRKRGRRRRR SWS{SSSTTTTTTTTTTTTTTTTTTTTTTVWWWWWWWWUYQYOYNYPYYYYYYZYYYYZYi[[[[[[\N\O\M\K\\\]^%^^}^^^^_-_e________`` `%``(`M`p`h`b`F`C`l`k`j`d`Abbc cbbcbbcbbbbbbcc?eEeeee%f-f f'f/ff(f1f$ffgggggggggggggggggggggggggjkkkkkkll m2m*mAm%m m1mmm;m=m>m6mml9m'm8m)m.m5mm+mppppppppp0rrrortrrrrsssssssu-uOuLuNuKuuuuuuxvvvvvvvvwvv w wvvwwxx x xFyIyHyGyyyyyyzzzz}|}}} }}}}8 6րڀÀĀ̀ۀ΀ހ݀"ۂ ҂ׂ܂Ԃтނӂ߂Py{zMkԉts͎̎ʐΐÐKJ͑PKLMbi˗ۘߘXNN P P#PO&P%PO)PPPc/cUcBcFcOcIc:cPc=c*c+c(cMcLcHeIeeeeBfIfOfCfRfLfEfAffggg!h8hHhFhSh9hBhTh)hhhLhQh=hgPh@hSSfFUjUfUDU^UaUCUJU1UVUOUUU/UdU8U.U\U,UcU3UAUWUW W WWX XXWWWX5XWW YbY6ZAZIZfZjZ@ZwUUUUUU~UUUU W/X*X4X$X0X1X!XX XXX`YwZZZZZZs[q[[[[[ \ \1\L]P]4]G]]E^=^@^C^~^^^^^<_m____`````a#a`a```ha`a` aaabIbcccccccccccccccvccccRdcc^efebeceeeenfpftfvfoffzf~fwfffgghhhhhihhhhhhhhhh iiihhnih>k:k=kkkkk.l/l,l/n8nTn!n2ngnJn n%n#nn[nXn$nVnnn-n&non4nMn:n,nCnn>nnnnNncnDnrnin_nqq&q0q!q6qnqqLrrr6s%s4s)s:t*t3t"t%t5t6t4t/tt&t(t%u&ukujuuuuuuuu{v|vvvvvOww]xlxox zz zzzzzzzzI{V{F{P{R{T{M{K{O{Q{||^}P}h}U}+}n}r}a}f}b}p}s}U RUTKQN9F>LSt Ń W ̃ʃ8܃ԃ߃[߆نԆۆІކWˆ;`U^a4a'a aa7a!b"bd>dd*d-d=d,dddd d6ddddleeeffffffffgimiZiwi`iTiui0iiJihiki^iSiyii]ici[iGkrkkkkknnnnnnnnnnnnnnnnnnnnnnNqYqiqdqIqgq\qlqfqLqeq^qFqhqVq:rRr7sEs?s>sotZtUt_t^tAt?tYt[t\tvuxuvuvuuuuuuvv[wkwfw^wcwywjwlw\wewhwbwwxxxxxx|xxxxzyyy,yzz zzzzzzw{{`{n{g{|||}y}}}}[}nijrVXqpxenskyzfGw=1ufkIl[<5acimF^\_ Y߈Ԉو܈؈݈ʈՈ҈krsfip|cqmbnly{>hbʌnjȌČ̌Ōߍ捲 KJSBTAljiɑ7W8=@>[KdQ4IME9?Z͖˖ɖʖVtv  霂 PPPPPPPPPPPPbQQRR1SSUVVVUVV V VVUVVVVUWWuX~XXXXyXX}XX%Y"Y$YjYiYZZZZZZZu[[[[[[[[[[ \b\]][^c^U^W^T^^^ _F_p__Ga?aKawabaca_aZaXaua*bdXdTddxd_dzdQdgd4dmd{dreeeefffiiiiiiiiiiiiiiiiiiiIkLk3l3oonon)o>o o,ooo"onno1o8o2o#oo+o/oo*ononnnqq}qqqq>rrrDsPsdtctjtptmtuu'v v v vvvvw}wwawxxxxxxyyy.z1zzzzz{{{u{{{{{{{{|||}}}}}}}}}}}}}}}}}}}p^ZPKɄƄĄ˄ӄфʄ?;"%4U7)jӌьҌk`X\cY^b][uxwtx{|̖Җ| AB󜼞;JQQPPPQQ QQQRRRRRRS.V;V9V2V?V4V)VSVNVWVtV6V/V0VXXXXXXXXmY [Z [Z [[[[[[d\e\]]b^_^a^^^^^^^H_q___vagana]aUaa|apaka~aaaaaaaaaa.bidodyddddddddddddddddddduewexeffff#jjijjji!jj jijjijPkNkkkk?o|ooQofoToomo[oxonoozopodooXonoo`o_oqqqqVrrNsWsittt~ttu v)vv$v&v!v"vvvvwwwwwxxxxxxxx?z~F~7~2~C~+~=~1~E~A~4~9~H~5~?~/~DqrposƁÁɁ q~gч҇Ƈȇˇ;6D8= A?sIKHJD>BE?}9M(uJeK~l[pZTʕ˕̕ȕƕ֖ӗF5;?Ϟޞܞݞ۞>KSVVXX8[]_a3bdddedddef&gjjjjjjjj_kxkk p popoppqqqqwsusttuVvXvRvwwwwyyazbz`zzz+|'|*||#|!||T~U~^~Z~a~R~Y~Hwv́ρ υͅЅɅ(9,+PYcfd_UIMБԕ֕ЕՕܖٖۖޖ$MOLNS>?=.ONMʛɛțQ]`,3QVXXX[^aaaaeeffjjjjpp(pppppr rXrrxszstttuu_vavwyykziz>|?|8|=|7|@|k~m~y~i~j~s~؁݅Յ `_V^A\XIZNOFY |rvlztTNѓߓÓȓܓݓ͓֓ؓדܕ*'aܗ^X[EI ֛ۛarjlRVVVVVX@[C[}[[]aaeeef'gj>p0p2pr{stbvev&y*y,y+yzzL|C|M|||}~|~~Lځf  dplfo_k ˑ0ĘRQ+075 y/_ca7Q8QVVVYl\]aaeeefjkjkLprrttivwP|~~-#"!jltw}_.35:82+892geWEC@>ϚTQ-%\fg×kUUMҚI1>;ӝם4ljV]b#e+e*efktzd|c|e|~~~8?1c`dho\Z[WӚԚњTWV坟VX,e^pqvrvwP69bwjBHDƗp_"X_|}wr^kcpl|n|;rpq^֚#̞dpwwɗbe~ő}~|wxT(rj1r|0000A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000#$%&'()*+,-./012345Q6789:;<=>?@ABCDEFGHIJKLMNO`$a$b$c$d$e$f$g$h$i$t$u$v$w$x$y$z${$|$}$BN\NQSSN NGNNV n\s_NQN.NNNNNQRlSS WY,Y\]ekkl?r1Ng9g8g;g:g?gOgORO_OAOXO-O3O?OaOQQRR!RRR ScSrSSS0T7T*TTTETTT%TT=TOTAT(T$TGTVVVAWEWLWIWKWRWY@YYYYYYYYYYY[[(\*\\\\\\\\\\\] ^^^^^^^__x_v_______________`_:bbbbbbbqb{bzbpbbbwb}brbtb7eeeeeeEgGgYgUgLgHg]gMgZgKgkllxlglkllllqlolillmllllflslel{lltpzpcrrrrrrrrsssss:u9uuuv=y4xɏ0(/-3NO|OO}OOOvOtOOOwOLOOjOOyOOxOOOOOOOOkOnOQQQ5R2R3RFR1RR S SuuuvvvvvwwwwwwBy?yyxz{zzu||5 ‚ÂpomnVҏˏӏ͏֏Տ׏9=<:COOOOOOOOOOOOOOOOOOODRIRRR=S|SSSSSTTTTTT TTTTTTTpTTTTrTTTWWWWWWWWWWWWWWWX YSYYYYZYYYYYYYYYYYYYYYYY[L\\\\\\\\\\\\\\\\\\\\\]!^"^#^ ^$^^^^^^^_._V__7`9`T`r`^`E`S`G`I`[`L`@`B`_`$`D`X`f`n`BbCbb c cbccbbc cbbcccbcbbAeCeee6f!f2f5ff&f"f3f+f:ff4f9f.fgggggggggggggggggggggggggggggggggggggggggg(kkkkkkk l!l(m4m-mm9/%3-DQ%V?A&"BN*ZMZ9ZLZpZiZGZQZVZBZ\Zr[n[[[Y\] ]]] ] ](] ]&]%]]0]]#]].]>^4^^^^^^6_8____`````````````````````2ceccc}ccccccccocccnccuccmcc|cc;ccxcccccpcSeeefaf[fYf\fbfgyhhhhmhnhhhViohhhhuhthhhwhh|hkhrhhhqh~hhhhhhhxh{hhhh}h6k3k7k8kkkkkk*lmmmmtnmmmmmmnmmmmmmmmmmmmmmmmmmmmmmmmmmmp qpqp qpqpqppqqqpp qqq~r{r|rrsssss ssrssssssttsttsss t tstducuuuuuuuuvvv9w/w-w1w2w4w3w=w%w;w5wHxRxIxMxJxLx&xExPxdygyiyjycykyayyyyyyzzz5{G{4{%{0{"{${3{{*{{1{+{-{/{2{8{{#{||||5}=}8}6}:}E},})}A}G}>}?}J};}(}cGCH%-,!'"83:42tzstu}~vYV†ņȆ̆ÆR։ىՉ0',9;\]}}{y؎ގݎ܎׎$  !ԐVXZSUz|mkqoj嘗PPPPPPPPPPhPPPPP_QQSSSSUUUUwUEVUUUUUUUUU}UUUUUUU W)X7XXX'X#X(XWHX%XXX3X?X6X.X9X8X-X,X;XaYZZZzZZZxZZ|ZZZZZ7ZZZZZZZ{Z}ZZZZZZ[[[[[[[ \0\7]C]k]A]K]?]5]Q]N]U]3]:]R]=]1]Y]B]9]I]8]<]2]6]@]E]D^A^X____``````a` aaa`a````aaaa`a aJbccccccccdcccccccadccccccccccccccc2egejede\eheeeeeeeee|flf{ffqfyfjfrfg ihih*ihhhihhhhhiihhihipihihhihhhhh i iihhhhhhhihhi%ih9k;k?k?efQOPԀCJROG=M:<=?u;σ#ƃȃヿ݃؃˃΃փɃ ރƒՃǃуÃă׃ۃ؆ӆچ݆܆׆цHVU׈Ɉ݉ډۉNM9Y@WXDERHQJLO_؍Ӎ͍Ǎ֍܍ύՍٍȍ׍ō-4/,ad_b` %& '${~–ȖÖlpnNNNPPPPPPPPPPPPPPPPPQzRxR{R|RUUUUUUUUUUUUUUUUUUUUUUUWSXhXdXOXMXIXoXUXNX]XYXeX[X=XcXqXXZZZZZZZZZZZZZZZZZZZZ[[[\3\q]c]J]e]r]l]^]h]g]b]]O^N^J^M^K^^^^^^@___`IaJa+aEa6a2a.aFa/aOa)a@a bh#b%b$bcccdd d d$d3dCdddd9d7d"d#d d&d0d(dAd5d/d dd@d%d'd dcd.d!ddoeeeffffffffxf gfi_i8iNibiqi?iEiji9iBiWiYiziHiIi5ili3i=ieihxi4iii@ioiDiviXiAitiLi;iKi7i\iOiQi2iRi/i{iF 2*-<:15B&'8$0눝艫=hiՌό׌   # "$!zrysvzy}~-X}z~{Η͗ٙǙ>?`a_PQ0QPQQPP Q QP QRRRRHVBVLV5VAVJVIVFVXVZV@V3V=V,V>V8V*V:VWXXXXXXXXXXZZZZZ[Z[Z[[[[g\]]]]]]]]]]]]i^]^`^\^}^^^I__aayaaaaaaaaaaaaaafaa-bndpddddddddddddhdddvezeye{eeefffffffjjjiijii jiiijji'jiijii@jjii jii jjj%jji&jjijQkkkkkllklAo&o~oooooooboOooZoovolooUoroRoPoWooo]ooaoko}ogooSooiooocowojo{oqqqqqqqqqqqqqqqqqrrXsRs^s_s`s]s[sasZsYsbsttttt}ttt|tytuu~u%vvvvv#vv(vvvvvvwwwwxxxxxxxxxxxyyyyyyvk9zzzz{{{{{{{{{||||}}}}}}~}}}}}}}vdgOSRPNQ$;)  '+ *(.1& 0 /bVcdwsXT[RaZQ^mjPN_]olzn\eO{ubgiZ   ϊƊӊъԊՊ׊Ŋ؊Êي>Mߌٌڌ݌猠 #%$.&',$ #spogk/+)*2&.ВÒĒْϒߒؒגݒ̒’ʒȒΒ͒ՒɒޒђӒƒ|ӖZЗϗ&)( 'ܙ͙ϙәԙΙəؙ֙˙י̙FCgtqfvuphdlӞQQQQQQ4SSpV`VnVsVfVcVmVrV^VwVWWXXXXXXXX[[[![[[[[([[ [[[]]]]]]]]]]]]]g^h^f^o^^^^^^K__aaaaaaaaaaaaddddddddddd3ee|eeffffffffff#g4jfjIjgj2jhj>j]jmjvj[jQj(jZj;j?jAjjjdjPjOjTjojij`j[qNnuUg`f]Telcedy&0-.'1")#/,݊ߊȊފln3>8@E6<=A0?6.52974vy{356'z8<#F- ˒%4$)95* ͕Ԗ 5/2$')癹3|~{z}% )"՞֞=&Q%Q"Q$Q Q)QRVVVVVV~VVVVXXXX-[%[2[#[,['[&[/[.[{[[[]l^j^__aaaaaaaaaddddddeeeefjjjjjjjjjjjjjjjjjjjjjjj[kk looooooooooooooqqqqqqqssnsostttttttttuuuuuCvHvIvGvvvwwwwwwwwwxxyxxxyxxyyy\z[zVzXzTzZzzzz||{|{{|{ |{| |||{{|{{| ||-~<~B~3~H8~*~I~@~G~)~L~0~;~6~D~:~E~},ā́ʁŁǁ[Z\{w|zxWyvhŇɇLJ̇ćʇއ53<>AR7B " OprqooNMSPLGC@~8dVG|X\vIPQ`mLjyWUROqw{a^cgNYǕɕÕŕ ՗ԗADJIEC%+,*32/-10H3Ag6./180EBC>7@=-Ȟڞ$#"T1Q-Q.QVVVVVVpY<[i\j\]m^n^aaaaaaaaaadeddeedeefffjjjjjjjjjjj^kk lp p pppppopo&poo prqqrqvsttttttttuu\vdvYvPvSvWvZvvvvwwx yyy yyyyyy_z|)|| ||-||&|(|"|%|0|\~P~V~c~X~b~_~Q~`~W~S~uсҁЁ_^ƅŅDžą˅΅ȅŅ҅$iۇ߇ԇ܇Ӈ؇㇤ׇه݇SKOLFPQI*'#305G/<>1%7&6.$;=:Bu\b`WV^eg[Za]iTFGHK(:;>ҕӕѕזږ]ߖؖݖ#"%חٗ֗ؗPQRA<:  ܚ)5JLKǛƛÛӛě\SOJ[KYVLWRT_XZߞ%+*)(LU4Q5QRRSVVVVVVXXXY=[>[?[]p^_aee e e eeeeefjjjjjjjjjjjjj`kk lp'p pp+p!p"p#p)pp$pp*p r rrrrrrrrrttttu`vwwwwyy!yyyyygzhz3|<|9|,|;|||v~u~x~p~w~o~z~r~t~h~KJxׁՁdacمڅׅ؅߅܅хޅ  bZ[Wa\X]YPHJ@SVTKUQBRWCwv mxsjo{ŽRQOPS@?ޓǓϓ“ړГ̓ٓʓԓՓēΓғ}ڕە)+,(&ݗޗߗ\Y]WHGC%$" '#š  7ޛԛכܛٛ՛ڛwqx}ktupis{oyh-@AMVWX7SVVVXE[]]^^__aeeeeefffjjjjjjjj02.3vtsEdcbU]W^ėŗVY RXPJMKUYLNžО876COqpnoVVN[m\-effk_pap]p`p#rttw8yyyj|~mC875K‘khiFCGǗ^՚Ycgfb^` FtuvV.eekkkkbp&rrww9yi|k||~~~~FGHyz|{nmoqsIr_hnm  Gx{zyWfpo|<Ñtxvu`tsqu hpep|j>=?ɎKst̘adfg$Hbk'rLih.)rKyuvkzipjp~I7@~R@~@~M@~@~H@~妡$@~@~^@~@~Y@~5@~ҭ@~ 0 o@~ ͮ @~ j @~  F@~ @~ A @~ ޳ @~ { @~W@~@~R@~︡.@~˺@~)h@~ƻ@~c@~?@~ܿ@~:y@~@~t@~¡P@~á@~Kġ@~š'@~ơ@~"ǡa@~ɡ@~Zʡ@~ˡ6@~̡@~1͡p@~Ρ @~kϡ@~СG@~ѡ@~Bҡ@~ӡ @~ |ԡ @~!ա!X@~!֡!@~"Sס"@~"ء#/@~#١#@~$*ڡ$i@~$ۡ%@~%dܡ%@~&ݡ&@@~&ޡ&@~';ߡ'z@~'(@~(u(@~))Q@~))@~*L*@~*+(@~++@~,#,b@~,,@~-]-@~-.9@~..@~/4/s@~/0@~0n0@~1 1J@~11@~2E2@~23!@~33@~44[@~44@~5V5@~562@~66@~7-7l0 00 "0 & %PdRTUVW\ 1 34O 56[]78009:00;<0 0 =>00 ?@0 0 AB00CDYZ[\]^    00 5 2 ;0%%%%%&&%%%%%%2! >?IJMNKL_`a ""f"g"`""R"abcdef"<")"*"" ""33"+"."5"4&@&B&A& !!!!!!!!"%"#<0 !! ijk333333333QYQ[Q^Q]QaQcUt|%%%%%%%%%%%%%%%%<%4%,%$%%%%%% %%%%m%n%p%o%P%^%j%a%%%%%q%r%s!`!a!b!c!d!e!f!g!h!i0!0"0#0$0%0&0'0(0)SD!"#$%&'()*+,-./0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ11111 1 1 1 1 1111111111111111111 1!1"1#1$1%1&1'1(1)NNYNNNCN]NNNQ?QeQkQRRRSSAS\SN N NN N+N8QNENHN_N^NNQ@RRSCSSWXYY'Ys[P[Q[S[\\"\8\q]]]]]]^r^_ _bMNNN N-N0N9NK\9NNNNNNNNNNNNNNNQCQAQgQmQnQlQQRRRRRRSS9SHSGSES^SSSSXY)Y+Y*Y-[T\\$\:\o]^{^___bb6bKbNe/eeeeefgg(k kbkykkkll4pkr*r6r;rGrYr[rsNNNNNN;NMNONNNNNNNNNNNNQEQDQQQQQQR RRSSSSNSJSISaS`SoSnSSSSSSSSSSSSSSSSSSSSVVYY.Y1YtYv[U[\<]]]^^^s^|____b bSbTbRbQeeg.g,g*g+g-kcklll8lAl@l>rssttuuu(u)u0u1u2u3uv}vvvwwwy:yztzNNNRNSNiNNNNNO OO OO OOONNNNNNOO QIQGQFQHQhQqQQRRRRRRSS!S SpSqT TT T TTT TTT TTTTTVVVW3W0W(W-W,W/W)YYY7Y8YYxYY}YyYY[W[X[[[[[\\y]^^v^t____bb b bbcb[bXe6eeeeffg g=g4g1g5k!kdk{ll]lWlYl_l`lPlUlal[lMlNppr_r]v~z|s|6 3 nr~k@Lc!N2NOMOOOGOWO^O4O[OUO0OPOQO=O:O8OCOTOT&TNT'TFTCT3THTBTT)TJT9T;T8T.T5T6T TWPWOW;XY>YYYYYYYYYYYY[][\[Z[[[[[\,\@\A\?\>\\\\]^ ^^^^___d_b_w_y________bbbbbbbvbbmbb|b~bybsbbobbnbbbbe9e;e8efg_gNgOgPgQg\gVg^gIgFg`gSgWkeklBl^llllllljlzllpllhlll}llrl~ltllvllllpvp|p}pxrbrar`rrsu,u+u7u8vvwyyyzv|UoҊ7FUdpʏƏŏ]ᐑIƑ̖2.1*,N&NVNsNNNNNOoOOOsOOlOOOOOpOuOOiO{OO~OOOzQTQRQUQiQwQvQxQQR;R8R7R:R0R.R6RARRSRSTSSSQSfSwSxSySSSTsTuTTxTTT{TwTTTT|TTqTvTTTbThTT}TVWWwWjWiWaWfWdW|YYIYGYHYDYTYYYYYYYYYYYYYYYY[_[d[c[[[[[[\\H\E\F\\\\\\\^^^^^^^x^^^^^^_&_'_)____|_____```/`5``*``!`'`)`+`bbb?b>b@bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbe>eeefff fffffff fg g gmgggqggsgwggggogpggg~gguggg|gjgrk#kfkgkllllllllllllllllllllllllllllllllllpppppr,r-r8rHrgrirrrrrsssssu=uuuvvvvwwy>y@yAyyzzzyz|T NqRhˏΏԏѐǑѕw@?;DBR^NNNOOOOOOOOOOOOOOOOOOOOOOQWQQQRNRCRJRMRLRKRGRRRRS SWS{SSTTTTTTTTTTTTTTTTTTTTTTVWWWWWWWWYUYQYOYNYPYYYYYZYYYYZY[i[[[[[\\N\O\M\K\\]^^%^^}^^^__-_e_______``` `%``(`M`p`h`b`F`C`l`k`j`dbAbcc bbcbbcbbbbbbcce?eEeeef%f-f f'f/ff(f1f$fgggggggggggggggggggggggggkjkkkkkllm m2m*mAm%m m1mmm;m=m>m6mlm9m'm8m)m.m5mm+pppppppppr0rrrortrrrsssssssuu-uOuLuNuKuuuuuvxvvvvvvvwvvw w vvwwxxx x yFyIyHyGyyyyyzzzz|}}}}} }}}8 6րڀÀĀ̀ۀ΀ހ݁"ۂ ҂ׂ܂Ԃтނӂ߂Py{zMkԊts͎̏ʐΐÑKJ͕PKLMbi˗ۘߙNXNP P P#OP&P%OP)PPPc/cUcBcFcOcIc:cPc=c*c+c(cMcLeHeIeeefBfIfOfCfRfLfEfAfgggh!h8hHhFhSh9hBhTh)hhhLhQh=ghPh@hSfUFUjUfUDU^UaUCUJU1UVUOUUU/UdU8U.U\U,UcU3UAUWWW W WXX XWWWXX5WWY YbZ6ZAZIZfZjZ@ZwUUUUUU~UUUW X/X*X4X$X0X1X!XX XXY`ZwZZZZZ[s[q[[[[\ \ \1]L]P]4]G]^E^=^@^C^~^^^^_<_m___`````aa#`a```ah`a`a aabbIccccccccccccccccvcccdRcce^efebeceeefnfpftfvfoffzf~fwffgghhhhhihhhhhhhhhhi iihhinhk>k:k=kkkkl.l/l,n/n8nTn!n2ngnJn n%n#nn[nXn$nVnnn-n&non4nMn:n,nCnn>nnnnNncnDnrnin_qqq&q0q!q6qnqrLrrs6s%s4s)t:t*t3t"t%t5t6t4t/tt&t(u%u&ukujuuuuuuuv{v|vvvvwOwx]xlxoz zz zzzzzzz{I{V{F{P{R{T{M{K{O{Q||}^}P}h}U}+}n}r}a}f}b}p}sUՀ RUTKQN9F>LSt ń W ̃ʄ8܄ԃ߆[߆نԆۆІވWˆ;`U^a4a'a aa7b!b"dd>dd*d-d=d,dddd d6dddeleeffffffffgiimiZiwi`iTiui0iiJihiki^iSiyii]ici[kGkrkkkknnnnnnnnnnnnnnnnnnnnnnqNqYqiqdqIqgq\qlqfqLqeq^qFqhqVr:rRs7sEs?s>totZtUt_t^tAt?tYt[t\uvuxvuvuuuuuuvvw[wkwfw^wcwywjwlw\wewhwbwxxxxxxx|xxxyzyy,yzzz zzzzz{w{{`{n{g|||}}y}}}}[nijrVXqpxenskyzfGw=1ufkIl[<5acimF^\_ Y߈Ԉو܈؈݈ʈՈ҉krsfip|cqmbnly{>hbʌnjȌČ̌ōߍ掲 KJSBTAljiɒ7W8=@>[KdQ4IME9?Z͖˖ɖʖVtv  鞂 PPPPPPPPPPPPQbQRRS1SUVVVUVVV V VUVVVVUWWXuX~XXXXyXX}XY%Y"Y$YjYiZZZZZZZ[u[[[[[[[[[\ \b]]^[^c^U^W^T^^_ _F_p_aGa?aKawabaca_aZaXaub*ddXdTddxd_dzdQdgd4dmd{ereeefffiiiiiiiiiiiiiiiiiiikIkLl3o3onono)o>o o,ooo"nnoo1o8o2o#oo+o/oo*nonnnqqq}qqqr>rrsDsPtdtctjtptmuuv'v v v vvvww}wwaxxxxxxyyyz.z1zzzz{{{{u{{{{{{{|||}}}}}}}}}}}}}}}}}}}p߀^ZPKɄƄĄ˄ӄфʇ?;"%4U7)jӌьҍk`X\cY^b][uxwtx{|̖җ| AB󞼟;JQQPPPQQQ QQRRRRRRSV.V;V9V2V?V4V)VSVNVWVtV6V/V0XXXXXXXXYm[ Z[ Z[ [[[[[\d\e]]^b^_^a^^^^^^_H_q__avagana]aUaa|apaka~aaaaaaaaab.didodyddddddddddddddddddeuewexffffj#jijjjij!jj ijjijkPkNkkko?o|ooQofoToomo[oxonoozopodooXnooo`o_qqqqrVrsNsWtittt~tuv v)vv$v&v!v"vvvwwwwwxxxxxxxxz?z~F~7~2~C~+~=~1~E~A~4~9~H~5~?~/DqrposƁÁɁ q~gч҇Ƈȇˉ;6D8= A?sIKHJD>BE?}9M(uJeK~l[pZTʕ˕̕ȕƖ֗ӘF5;?Ϟޞܞݞ۟>KSVVXX[8_]ab3dddedddefg&jjjjjjjjk_kxkp p opoppqqqqswsuttuvVvXvRwwwwyyzazbz`zz|+|'|*||#|!|~T~U~^~Z~a~R~YHwv́ς υͅЅɅ(9,+PYcfd_UIMГԕ֕ЕՖܖٖۖޗ$MOLNS>?=.ONMʛɛțQ]`,Q3VXXX[^aaaaeeffjjjjppp(pppprr rXrsxsztttuuv_vawyyzkzi|>|?|8|=|7|@~k~m~y~i~j~s؅݅Յ `_V^A\XIZNOFY |rvlztTNѓߓÓȓܓݓ͓֓ؓדܖ*'aܗ^X[EI ֛۝arjlRVVVVVX[@[C[}[]aaeeefg'jp>p0p2rs{tvbvey&y*y,y+zz|L|C|M||~}~|~Lڂf  dplfo_k ˔0ęRQ+075 y/_caQ7Q8VVVY\l]aaeeefjkjkpLrrttviw|P~~-#"!jltw}_.35:82+892geWEC@>ϛTQ-%\fgQ×kUUMқI1>;ӝן4ljV]be#e+e*fktz|d|c|e~~~8?1c`dho\Z[WӚԚќTWV垟VXe,p^vqvrwP69bwjBHDƘp_"X_|}wr^kpc|l|n;rpq^֛#pdwڋwɚbe~Ŕ}~|wxTr(j1|r00000A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000#$%&'()*+,-./012345Q6789:;<=>?@ABCDEFGHIJKLMNO$`$a$b$c$d$e$f$g$h$i$t$u$v$w$x$y$z${$|$}NBN\QSSNN NGNV \n_sNQNN.NNNNQRSlSW YY,\]ekklr?N1Ng9g8g;g:g?gOgORO_OAOXO-O3O?OaQQRRR!RRS ScSrSST0T7T*TTTETTT%TT=TOTAT(T$TGVVVWAWEWLWIWKWRYY@YYYYYYYYYY[[\(\*\\\\\\\\\\]^ ^^^^^^___x_v______________`_b:bbbbbbbqb{bzbpbbbwb}brbte7eeeeegEgGgYgUgLgHg]gMgZgKklllxlglkllllqlolillmllllflslel{lptpzrcrrrrrrrsssssu:u9uuvy=4xɏ0(/-N3OO|OO}OOOvOtOOOwOLOOjOOyOOxOOOOOOOOkOnQQQR5R2R3RFR1RS S SuuvvvvvwwwwwwyBy?yzxz{z|u|5 ‚ÂpomnVҏˏӏ͏֏Տא9=<:COOOOOOOOOOOOOOOOOOORDRIRRS=S|SSSSTTTTTTà TTTTTTTTpTTTTrTTWWWWWWWWWWWWWWWXY YSYYYZYYYYYYYYYYYYYYYYY[\L\\\\\\\\\\\\\\\\\\\\]^!^"^#^ ^$^^^^^^__._V_`7`9`T`r`^`E`S`G`I`[`L`@`B`_`$`D`X`f`nbBbCbc c bccbbcc bbcccbcbbeAeCeef6f!f2f5ff&f"f3f+f:ff4f9f.ggggggggggggggggggggggggggggggggggggggggggk(kkkkkkl l!m(m4m-mm9/%3-DQ%V?A&"BN*ZMZ9ZLZpZiZGZQZVZBZ\[r[n[[\Y]] ]]] ] ](] ]&]%]]0]]#]].^>^4^^^^^_6_8___`````````````````````c2ceccc}ccccccccocccnccuccmcc|cc;ccxcccccpeSefefaf[fYf\fbghyhhhhmhnhhiVhohhhhuhthhhwhh|hkhrhhhqh~hhhhhhhxh{hhhh}k6k3k7k8kkkkkl*mmmmntmmmmmmnmmmmmmmmmmmmmmmmmmmmmmmmmmmpq pqpq pqpqppqqqppq qqr~r{r|rssssss srssssssttsttssst t studucuuuuuuuvvvw9w/w-w1w2w4w3w=w%w;w5xHxRxIxMxJxLx&xExPydygyiyjycykyayyyyyzzz{5{G{4{%{0{"{${3{{*{{1{+{-{/{2{8{{#||||}5}=}8}6}:}E},})}A}G}>}?}J};}(cɀGCH%-,!'"83:42tzstu}~vYV†ņȆ̆ÆR։ىՊ0',9;\]}}{y؎ގݎ܎׎$  !ԐVXZSUz|mkqoj噗PPPPPPPPPPPhPPPPQ_QSSSSUUUUUwVEUUUUUUUUUU}UUUUUUW X)X7XXX'X#X(WXHX%XXX3X?X6X.X9X8X-X,X;YaZZZZzZZZxZZ|ZZZZZ7ZZZZZZZ{Z}ZZZZZ[[[[[[[\ \0]7]C]k]A]K]?]5]Q]N]U]3]:]R]=]1]Y]B]9]I]8]<]2]6]@]E^D^A_X___``````a`a aa`a````aaaa`aa bJccccccccdcccccccdaccccccccccccccce2egejede\eheeeeeeeef|flf{ffqfyfjfrgi hihi*hhhihhhhhiihhihiiphihhihhhhhi i ihhhhhhhihhii%hk9k;k?k?ef׀QOPԁCJROG=M:<=?u;σ#ƃȃヿ݃؃˃΃փɄ ބƒՃǃуÃă׃ۃ؆ӆچ݆܆׆шHVU׈ɉ݉ډۊNM9Y@WXDERHQJLO_؍Ӎ͍Ǎ֍܍ύՍٍȍ׍Ŏ-4/,ad_b` %& '${~–ȖÖlpnNNNPPPPPPPPPPPPPPPPPQRzRxR{R|UUUUUUUUUUUUUUUUUUUUUUUWXSXhXdXOXMXIXoXUXNX]XYXeX[X=XcXqXZZZZZZZZZZZZZZZZZZZZ[[[\\3]q]c]J]e]r]l]^]h]g]b]^O^N^J^M^K^^^^^_@__`aIaJa+aEa6a2a.aFa/aOa)a@b hb#b%b$cccddd d d$d3dCdddd9d7d"d#d d&d0d(dAd5d/d dd@d%d'd cdd.d!deoeefffffffffxg ifi_i8iNibiqi?iEiji9iBiWiYiziHiIi5ili3i=iehixi4iii@ioiDiviXiAitiLi;iKi7i\iOiQi2iRi/i{iF 2*-<:15B&'8$0뉝芫=hiՌό׍   # "$!zrysvzy}~-X}z~{Ηٙ͘ǚ>?`a_PQQ0PQQPPQ Q PQ RRRRVHVBVLV5VAVJVIVFVXVZV@V3V=V,V>V8V*V:WXXXXXXXXXXZZZZZ[Z[Z[[[[\g]]]]]]]]]]]]^i^]^`^\}^^^_I_aaayaaaaaaaaaaaaaafab-dndpddddddddddddhddevezeye{eefffffffjjjiijiij iiijjij'iijiij@jiij iij jjj%jij&jijkQkkkkllkloAo&o~oooooooboOooZoovolooUoroRoPoWooo]ooaoko}ogooSooiooocowojo{qqqqqqqqqqqqqqqqqrrsXsRs^s_s`s]s[sasZsYsbtttttt}ttt|tyuuu~v%vvvvv#vv(vvvvvwwwwxxxxxxxxxxxyyyyyykvz9zzz{{{{{{{{{||||}}}}}}~}}}}}}}vdgOSRPNQ$;)  '+ *(.1& 0 /bVcdwsXT[RaZQ^mjPN_]olzn\eO{ubgiZ   ϊƊӊъԊՊ׊Ŋ؊Êٌ>Mߌٌڌ݌獠 #%$.&',$ #spogk/+)*2&.ВÒĒْϒߒؒגݒ̒’ʒȒΒ͒ՒɒޒђӒƒ|ӗZЗϘ&)( 'ܙ͙ϙәԙΙəؙ֙˙י̚FCgtqfvuphdlӟQQQQQQS4SVpV`VnVsVfVcVmVrV^VwWWXXXXXXXX[[[[![[[[[([[ [[]]]]]]]]]]]]]^g^h^f^o^^^^^_K_aaaaaaaaaaaaddddddddddde3ee|effffffffffg#j4jfjIjgj2jhj>j]jmjvj[jQj(jZj;j?jAjjjdjPjOjTjojij`j[qNnuUg`f]Telcedy&0-.'1")#/,݋ߊȊފln3>8@E6<=A0?6.52974vy{356'z8<#F- ˓%4$)95* ͕ԗ 5/2$')皹3|~{z}% )"՞֞=Q&Q%Q"Q$Q Q)RVVVVVVV~VVVXXXX[-[%[2[#[,['[&[/[.[{[[]^l^j__aaaaaaaaaddddddeeeefjjjjjjjjjjjjjjjjjjjjjjjk[kl ooooooooooooooqqqqqqqsssnsotttttttttuuuuuvCvHvIvGvvwwwwwwwwwxxyxxxyxxyyyz\z[zVzXzTzZzzz||{|{{|{| {|| ||{{|{{|| |~-~<~B~3H~8~*~I~@~G~)~L~0~;~6~D~:E~},ā́ʁŁǁ[Z\{w|zxWyvhŇɇLJ̇ćʇއ53<>AR7B " OprqooNMSPLGC@~8dVG|X\vIPQ`mLjyWUROqw{a^cgNYǕɕÕŕ ՗ԗADJIEC%+,*32/-10H3Ag6./180EBC>7@=-Ȟڞ$#"TQ1Q-Q.VVVVVVYp[<\i\j]^m^naaaaaaaaaadeddeedeefffjjjjjjjjjjjk^kl pp p ppppopop&oop rqqrqsvttttttttuuv\vdvYvPvSvWvZvvvwwxy yyy yyyyyz_||)|| ||-||&|(|"|%|0~\~P~V~c~X~b~_~Q~`~W~SuсҁЂ_^ƅŅDžą˅΅ȅŅ҆$iۇ߇ԇ܇Ӈ؇㇤ׇو݉SKOLFPQI*'#305G/<>1%7&6.$;=:Bu\b`WV^eg[Za]iTFGHK(:;>ҕӕіז]–ߖؖݗ#"%חٗ֗ؗPQRA<:  ܛ)5JLKǛƛÛӛě\SOJ[KYVLWRT_XZߟ%+*)(LUQ4Q5RRSVVVVVVXXXY[=[>[?]^p_aeee e e eeeefjjjjjjjjjjjjjk`kl pp'p pp+p!p"p#p)pp$pp*r r rrrrrrrrttttuv`wwwwyyy!yyyyzgzh|3|<|9|,|;||~v~u~x~p~w~o~z~r~t~hKJxׁՂdacمڅׅ؅߅܅хޅ  bZ[Wa\X]YPHJ@SVTKUQBRWCwv mxsjo{RQOPS@?ޓǓϓ“ړГ̓ٓʓԓՓēΓғ}ڕۖ)+,(&ݗޗߘ\Y]WHGC%$" '#›  7ޛԛכܛٛ՛ڝwqx}ktupis{oyh-@AMVWXS7VVVX[E]]^^__aeeeeefffjjjjjjjjp02.3vtsEdcbU]W^ėŘVY RXPJMKUYLNžО876COqpnoVV[N\me-ffkp_pap]p`r#ttwy8yy|j~mC875K”khiFCGǗ^՛Ycgfb^` FtuvVe.ekkkkpbr&rwwy9|i|k|~~~~FGHyz|{nmoqsIr_hnm  Gx{zyWpf|o<Ôtxvu`tsqu phpe|j>=?ɗKst̙adfg$Hbkr'Lih.r)Kyvukzpipj~I7@~R@~@~M@~@~H@~$@~@~^@~@~Y@~5@~@~0 o @~ @~j @~ F @~ @~A @~  @~{ @~W@~@~R@~.@~@~)h@~@~c@~?@~@~:y@~@~t@~P@~î@~KĊ@~'@~ƅ@~"a@~ɽ@~Zʙ@~6@~̔@~1p@~ @~kϪ@~G@~ѥ@~Bҁ@~ @~| Ի @~!X!@~ֶ!!@~S"ג"@~"/#@~ٍ##@~*$i$@~$%@~d%ܣ%@~&@&@~ޞ&&@~;'z'@~'(@~u((@~)Q)@~))@~L**@~*(+@~++@~#,b,@~,,@~]--@~-9.@~..@~4/s/@~/0@~n00@~ 1J1@~11@~E22@~2!3@~33@~4[4@~44@~V55@~526@~66@~-7l70 00" 0& % PdRTUVW\ 1 34O 56[]78009:00;< 0 0=>0 0?@ 0 0AB00CDYZ[\]^    005 2  ; 0%%%%%&&%%%%%%2!> ?IJMNKL_`a "f"g"`""R"a"bcdef<")"*"" """33+"."5"4"@&B&A& &!!!!!!!!%"#"<0 ! !ijk333333333YQ[Q^Q]QaQcQUt|%%%%%%%%%%%%%%%<%4%,%$%%%%%% %%%%m%n%p%o%P%^%j%a%%%%%q%r%s%`!a!b!c!d!e!f!g!h!i!!0"0#0$0%0&0'0(0)0DS!"#$%&'()*+,-./0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ1111 1 1 1 1 1111111111111111111 1!1"1#1$1%1&1'1(1)1NYNNNCN]NNNN?QeQkQQRRRSAS\SS N NN N+N8NQENHN_N^NNN@QRRCSSSWXY'YsYP[Q[S[[\"\8\q\]]]]]]r^^ __MbNN N-N0N9NKN9\NNNNNNNNNNNNNNNCQAQgQmQnQlQQQRRRRRRS9SHSGSES^SSSSSX)Y+Y*Y-YT[\$\:\o\]{^^___b6bKbNb/eeeeeefg(g kbkykkkkl4lkp*r6r;rGrYr[rrsNNNNN;NMNONNNNNNNNNNNNNEQDQQQQQQQ RRRSSSSNJSISaS`SoSnSSSSSSSSSSSSSSSSSSSSSVVY.Y1YtYvYU[[<\]]]^^s^|^____ bSbTbRbQbee.g,g*g+g-gckkll8lAl@l>lrssttuu(u)u0u1u2u3uu}vvvvwww:yytzzNNRNSNiNNNNNN OO OO OOOONNNNNNO OIQGQFQHQhQqQQQRRRRRRS!S SpSqS TT T TTT TTT TTTTTTVVV3W0W(W-W,W/W)WYY7Y8YYxYY}YyYYYW[X[[[[[[\y\]^v^t^____b b bbcb[bXb6eeeeeff g=g4g1g5g!kdk{kl]lWlYl_l`lPlUlal[lMlNlpp_r]r~vzs||6 3 nr~k@Lc!2NNMOOOGOWO^O4O[OUO0OPOQO=O:O8OCOTOT&TNT'TFTCT3THTBTT)TJT9T;T8T.T5T6T TWPWOW;WX>YYYYYYYYYYYYY][\[Z[[[[[[,\@\A\?\>\\\\\] ^^^^^__d_b_w_y_________bbbbbbvbbmbb|b~bybsbbobbnbbbbb9e;e8eef_gNgOgPgQg\gVg^gIgFg`gSgWgekkBl^llllllljlzllpllhlll}llrl~ltllvlllllvp|p}pxpbrar`rrrs,u+u7u8uvvwyyyvz|Uo҉7FUdpʎƏŏď]IƑ̑2.1*,&NVNsNNNNNNoOOOsOOlOOOOOpOuOOiO{OO~OOOzOTQRQUQiQwQvQxQQQ;R8R7R:R0R.R6RARRRRSTSSSQSfSwSxSySSSSsTuTTxTTT{TwTTTT|TTqTvTTTbThTT}TTVWwWjWiWaWfWdW|WYIYGYHYDYTYYYYYYYYYYYYYYYYY_[d[c[[[[[[[\H\E\F\\\\\\\\^^^^^^x^^^^^^^&_'_)____|______``/`5``*``!`'`)`+``bb?b>b@bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb>eeeeff fffffff ff g gmgggqggsgwggggogpggg~gguggg|gjgrg#kfkgkkllllllllllllllllllllllllllllllllllppppp,r-r8rHrgrirrrrrrsssss=uuuuvvvvww>y@yAyyyzzyzz|T NqRhˎΏԏяǑёw@?;DBR^NNNOOOOOOOOOOOOOOOOOOOOOOWQQQQNRCRJRMRLRKRGRRRRR SWS{SSSTTTTTTTTTTTTTTTTTTTTTTVWWWWWWWWUYQYOYNYPYYYYYYZYYYYZYi[[[[[[\N\O\M\K\\\]^%^^}^^^^_-_e________`` `%``(`M`p`h`b`F`C`l`k`j`d`Abbc cbbcbbcbbbbbbcc?eEeeee%f-f f'f/ff(f1f$ffgggggggggggggggggggggggggjkkkkkkll m2m*mAm%m m1mmm;m=m>m6mml9m'm8m)m.m5mm+mppppppppp0rrrortrrrrsssssssu-uOuLuNuKuuuuuuxvvvvvvvvwvv w wvvwwxx x xFyIyHyGyyyyyyzzzz}|}}} }}}}8 6րڀÀĀ̀ۀ΀ހ݀"ۂ ҂ׂ܂Ԃтނӂ߂Py{zMkԉts͎̎ʐΐÐKJ͑PKLMbi˗ۘߘXNN P P#PO&P%PO)PPPc/cUcBcFcOcIc:cPc=c*c+c(cMcLcHeIeeeeBfIfOfCfRfLfEfAffggg!h8hHhFhSh9hBhTh)hhhLhQh=hgPh@hSSfFUjUfUDU^UaUCUJU1UVUOUUU/UdU8U.U\U,UcU3UAUWUW W WWX XXWWWX5XWW YbY6ZAZIZfZjZ@ZwUUUUUU~UUUU W/X*X4X$X0X1X!XX XXX`YwZZZZZZs[q[[[[[ \ \1\L]P]4]G]]E^=^@^C^~^^^^^<_m____`````a#a`a```ha`a` aaabIbcccccccccccccccvccccRdcc^efebeceeeenfpftfvfoffzf~fwfffgghhhhhihhhhhhhhhh iiihhnih>k:k=kkkkk.l/l,l/n8nTn!n2ngnJn n%n#nn[nXn$nVnnn-n&non4nMn:n,nCnn>nnnnNncnDnrnin_nqq&q0q!q6qnqqLrrr6s%s4s)s:t*t3t"t%t5t6t4t/tt&t(t%u&ukujuuuuuuuu{v|vvvvvOww]xlxox zz zzzzzzzzI{V{F{P{R{T{M{K{O{Q{||^}P}h}U}+}n}r}a}f}b}p}s}U RUTKQN9F>LSt Ń W ̃ʃ8܃ԃ߃[߆نԆۆІކWˆ;`U^a4a'a aa7a!b"bd>dd*d-d=d,dddd d6ddddleeeffffffffgimiZiwi`iTiui0iiJihiki^iSiyii]ici[iGkrkkkkknnnnnnnnnnnnnnnnnnnnnnNqYqiqdqIqgq\qlqfqLqeq^qFqhqVq:rRr7sEs?s>sotZtUt_t^tAt?tYt[t\tvuxuvuvuuuuuuvv[wkwfw^wcwywjwlw\wewhwbwwxxxxxx|xxxxzyyy,yzz zzzzzzw{{`{n{g{|||}y}}}}[}nijrVXqpxenskyzfGw=1ufkIl[<5acimF^\_ Y߈Ԉو܈؈݈ʈՈ҈krsfip|cqmbnly{>hbʌnjȌČ̌Ōߍ捲 KJSBTAljiɑ7W8=@>[KdQ4IME9?Z͖˖ɖʖVtv  霂 PPPPPPPPPPPPbQQRR1SSUVVVUVV V VVUVVVVUWWuX~XXXXyXX}XX%Y"Y$YjYiYZZZZZZZu[[[[[[[[[[ \b\]][^c^U^W^T^^^ _F_p__Ga?aKawabaca_aZaXaua*bdXdTddxd_dzdQdgd4dmd{dreeeefffiiiiiiiiiiiiiiiiiiiIkLk3l3oonon)o>o o,ooo"onno1o8o2o#oo+o/oo*ononnnqq}qqqq>rrrDsPsdtctjtptmtuu'v v v vvvvw}wwawxxxxxxyyy.z1zzzzz{{{u{{{{{{{{|||}}}}}}}}}}}}}}}}}}}p^ZPKɄƄĄ˄ӄфʄ?;"%4U7)jӌьҌk`X\cY^b][uxwtx{|̖Җ| AB󜼞;JQQPPPQQ QQQRRRRRRS.V;V9V2V?V4V)VSVNVWVtV6V/V0VXXXXXXXXmY [Z [Z [[[[[[d\e\]]b^_^a^^^^^^^H_q___vagana]aUaa|apaka~aaaaaaaaaa.bidodyddddddddddddddddddduewexeffff#jjijjji!jj jijjijPkNkkkk?o|ooQofoToomo[oxonoozopodooXonoo`o_oqqqqVrrNsWsittt~ttu v)vv$v&v!v"vvvvwwwwwxxxxxxxx?z~F~7~2~C~+~=~1~E~A~4~9~H~5~?~/~DqrposƁÁɁ q~gч҇Ƈȇˇ;6D8= A?sIKHJD>BE?}9M(uJeK~l[pZTʕ˕̕ȕƕ֖ӗF5;?Ϟޞܞݞ۞>KSVVXX8[]_a3bdddedddef&gjjjjjjjj_kxkk p popoppqqqqwsusttuVvXvRvwwwwyyazbz`zzz+|'|*||#|!||T~U~^~Z~a~R~Y~Hwv́ρ υͅЅɅ(9,+PYcfd_UIMБԕ֕ЕՕܖٖۖޖ$MOLNS>?=.ONMʛɛțQ]`,3QVXXX[^aaaaeeffjjjjpp(pppppr rXrrxszstttuu_vavwyykziz>|?|8|=|7|@|k~m~y~i~j~s~؁݅Յ `_V^A\XIZNOFY |rvlztTNѓߓÓȓܓݓ͓֓ؓדܕ*'aܗ^X[EI ֛ۛarjlRVVVVVX@[C[}[[]aaeeef'gj>p0p2pr{stbvev&y*y,y+yzzL|C|M|||}~|~~Lځf  dplfo_k ˑ0ĘRQ+075 y/_ca7Q8QVVVYl\]aaeeefjkjkLprrttivwP|~~-#"!jltw}_.35:82+892geWEC@>ϚTQ-%\fg×kUUMҚI1>;ӝם4ljV]b#e+e*efktzd|c|e|~~~8?1c`dho\Z[WӚԚњTWV坟VX,e^pqvrvwP69bwjBHDƗp_"X_|}wr^kcpl|n|;rpq^֚#̞dpwwɗbe~ő}~|wxT(rj1r|0000A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000#$%&'()*+,-./012345Q6789:;<=>?@ABCDEFGHIJKLMNO`$a$b$c$d$e$f$g$h$i$t$u$v$w$x$y$z${$|$}$BN\NQSSN NGNNV n\s_NQN.NNNNNQRlSS WY,Y\]ekkl?r1Ng9g8g;g:g?gOgORO_OAOXO-O3O?OaOQQRR!RRR ScSrSSS0T7T*TTTETTT%TT=TOTAT(T$TGTVVVAWEWLWIWKWRWY@YYYYYYYYYYY[[(\*\\\\\\\\\\\] ^^^^^^^__x_v_______________`_:bbbbbbbqb{bzbpbbbwb}brbtb7eeeeeeEgGgYgUgLgHg]gMgZgKgkllxlglkllllqlolillmllllflslel{lltpzpcrrrrrrrrsssss:u9uuuv=y4xɏ0(/-3NO|OO}OOOvOtOOOwOLOOjOOyOOxOOOOOOOOkOnOQQQ5R2R3RFR1RR S SuuuvvvvvwwwwwwBy?yyxz{zzu||5 ‚ÂpomnVҏˏӏ͏֏Տ׏9=<:COOOOOOOOOOOOOOOOOOODRIRRR=S|SSSSSTTTTTT TTTTTTTpTTTTrTTTWWWWWWWWWWWWWWWX YSYYYYZYYYYYYYYYYYYYYYYY[L\\\\\\\\\\\\\\\\\\\\\]!^"^#^ ^$^^^^^^^_._V__7`9`T`r`^`E`S`G`I`[`L`@`B`_`$`D`X`f`n`BbCbb c cbccbbc cbbcccbcbbAeCeee6f!f2f5ff&f"f3f+f:ff4f9f.fgggggggggggggggggggggggggggggggggggggggggg(kkkkkkk l!l(m4m-mm9/%3-DQ%V?A&"BN*ZMZ9ZLZpZiZGZQZVZBZ\Zr[n[[[Y\] ]]] ] ](] ]&]%]]0]]#]].]>^4^^^^^^6_8____`````````````````````2ceccc}ccccccccocccnccuccmcc|cc;ccxcccccpcSeeefaf[fYf\fbfgyhhhhmhnhhhViohhhhuhthhhwhh|hkhrhhhqh~hhhhhhhxh{hhhh}h6k3k7k8kkkkkk*lmmmmtnmmmmmmnmmmmmmmmmmmmmmmmmmmmmmmmmmmp qpqp qpqpqppqqqpp qqq~r{r|rrsssss ssrssssssttsttsss t tstducuuuuuuuuvvv9w/w-w1w2w4w3w=w%w;w5wHxRxIxMxJxLx&xExPxdygyiyjycykyayyyyyyzzz5{G{4{%{0{"{${3{{*{{1{+{-{/{2{8{{#{||||5}=}8}6}:}E},})}A}G}>}?}J};}(}cGCH%-,!'"83:42tzstu}~vYV†ņȆ̆ÆR։ىՉ0',9;\]}}{y؎ގݎ܎׎$  !ԐVXZSUz|mkqoj嘗PPPPPPPPPPhPPPPP_QQSSSSUUUUwUEVUUUUUUUUU}UUUUUUU W)X7XXX'X#X(XWHX%XXX3X?X6X.X9X8X-X,X;XaYZZZzZZZxZZ|ZZZZZ7ZZZZZZZ{Z}ZZZZZZ[[[[[[[ \0\7]C]k]A]K]?]5]Q]N]U]3]:]R]=]1]Y]B]9]I]8]<]2]6]@]E]D^A^X____``````a` aaa`a````aaaa`a aJbccccccccdcccccccadccccccccccccccc2egejede\eheeeeeeeee|flf{ffqfyfjfrfg ihih*ihhhihhhhhiihhihipihihhihhhhh i iihhhhhhhihhi%ih9k;k?k?efQOPԀCJROG=M:<=?u;σ#ƃȃヿ݃؃˃΃փɃ ރƒՃǃуÃă׃ۃ؆ӆچ݆܆׆цHVU׈Ɉ݉ډۉNM9Y@WXDERHQJLO_؍Ӎ͍Ǎ֍܍ύՍٍȍ׍ō-4/,ad_b` %& '${~–ȖÖlpnNNNPPPPPPPPPPPPPPPPPQzRxR{R|RUUUUUUUUUUUUUUUUUUUUUUUWSXhXdXOXMXIXoXUXNX]XYXeX[X=XcXqXXZZZZZZZZZZZZZZZZZZZZ[[[\3\q]c]J]e]r]l]^]h]g]b]]O^N^J^M^K^^^^^^@___`IaJa+aEa6a2a.aFa/aOa)a@a bh#b%b$bcccdd d d$d3dCdddd9d7d"d#d d&d0d(dAd5d/d dd@d%d'd dcd.d!ddoeeeffffffffxf gfi_i8iNibiqi?iEiji9iBiWiYiziHiIi5ili3i=ieihxi4iii@ioiDiviXiAitiLi;iKi7i\iOiQi2iRi/i{iF 2*-<:15B&'8$0눝艫=hiՌό׌   # "$!zrysvzy}~-X}z~{Η͗ٙǙ>?`a_PQ0QPQQPP Q QP QRRRRHVBVLV5VAVJVIVFVXVZV@V3V=V,V>V8V*V:VWXXXXXXXXXXZZZZZ[Z[Z[[[[g\]]]]]]]]]]]]i^]^`^\^}^^^I__aayaaaaaaaaaaaaaafaa-bndpddddddddddddhdddvezeye{eeefffffffjjjiijii jiiijji'jiijii@jjii jii jjj%jji&jjijQkkkkkllklAo&o~oooooooboOooZoovolooUoroRoPoWooo]ooaoko}ogooSooiooocowojo{oqqqqqqqqqqqqqqqqqrrXsRs^s_s`s]s[sasZsYsbsttttt}ttt|tytuu~u%vvvvv#vv(vvvvvvwwwwxxxxxxxxxxxyyyyyyvk9zzzz{{{{{{{{{||||}}}}}}~}}}}}}}vdgOSRPNQ$;)  '+ *(.1& 0 /bVcdwsXT[RaZQ^mjPN_]olzn\eO{ubgiZ   ϊƊӊъԊՊ׊Ŋ؊Êي>Mߌٌڌ݌猠 #%$.&',$ #spogk/+)*2&.ВÒĒْϒߒؒגݒ̒’ʒȒΒ͒ՒɒޒђӒƒ|ӖZЗϗ&)( 'ܙ͙ϙәԙΙəؙ֙˙י̙FCgtqfvuphdlӞQQQQQQ4SSpV`VnVsVfVcVmVrV^VwVWWXXXXXXXX[[[![[[[[([[ [[[]]]]]]]]]]]]]g^h^f^o^^^^^^K__aaaaaaaaaaaaddddddddddd3ee|eeffffffffff#g4jfjIjgj2jhj>j]jmjvj[jQj(jZj;j?jAjjjdjPjOjTjojij`j[qNnuUg`f]Telcedy&0-.'1")#/,݊ߊȊފln3>8@E6<=A0?6.52974vy{356'z8<#F- ˒%4$)95* ͕Ԗ 5/2$')癹3|~{z}% )"՞֞=&Q%Q"Q$Q Q)QRVVVVVV~VVVVXXXX-[%[2[#[,['[&[/[.[{[[[]l^j^__aaaaaaaaaddddddeeeefjjjjjjjjjjjjjjjjjjjjjjj[kk looooooooooooooqqqqqqqssnsostttttttttuuuuuCvHvIvGvvvwwwwwwwwwxxyxxxyxxyyy\z[zVzXzTzZzzzz||{|{{|{ |{| |||{{|{{| ||-~<~B~3~H8~*~I~@~G~)~L~0~;~6~D~:~E~},ā́ʁŁǁ[Z\{w|zxWyvhŇɇLJ̇ćʇއ53<>AR7B " OprqooNMSPLGC@~8dVG|X\vIPQ`mLjyWUROqw{a^cgNYǕɕÕŕ ՗ԗADJIEC%+,*32/-10H3Ag6./180EBC>7@=-Ȟڞ$#"T1Q-Q.QVVVVVVpY<[i\j\]m^n^aaaaaaaaaadeddeedeefffjjjjjjjjjjj^kk lp p pppppopo&poo prqqrqvsttttttttuu\vdvYvPvSvWvZvvvvwwx yyy yyyyyy_z|)|| ||-||&|(|"|%|0|\~P~V~c~X~b~_~Q~`~W~S~uсҁЁ_^ƅŅDžą˅΅ȅŅ҅$iۇ߇ԇ܇Ӈ؇㇤ׇه݇SKOLFPQI*'#305G/<>1%7&6.$;=:Bu\b`WV^eg[Za]iTFGHK(:;>ҕӕѕזږ]ߖؖݖ#"%חٗ֗ؗPQRA<:  ܚ)5JLKǛƛÛӛě\SOJ[KYVLWRT_XZߞ%+*)(LU4Q5QRRSVVVVVVXXXY=[>[?[]p^_aee e e eeeeefjjjjjjjjjjjjj`kk lp'p pp+p!p"p#p)pp$pp*p r rrrrrrrrrttttu`vwwwwyy!yyyyygzhz3|<|9|,|;|||v~u~x~p~w~o~z~r~t~h~KJxׁՁdacمڅׅ؅߅܅хޅ  bZ[Wa\X]YPHJ@SVTKUQBRWCwv mxsjo{ŽRQOPS@?ޓǓϓ“ړГ̓ٓʓԓՓēΓғ}ڕە)+,(&ݗޗߗ\Y]WHGC%$" '#š  7ޛԛכܛٛ՛ڛwqx}ktupis{oyh-@AMVWX7SVVVXE[]]^^__aeeeeefffjjjjjjjj02.3vtsEdcbU]W^ėŗVY RXPJMKUYLNžО876COqpnoVVN[m\-effk_pap]p`p#rttw8yyyj|~mC875K‘khiFCGǗ^՚Ycgfb^` FtuvV.eekkkkbp&rrww9yi|k||~~~~FGHyz|{nmoqsIr_hnm  Gx{zyWfpo|<Ñtxvu`tsqu hpep|j>=?ɎKst̘adfg$Hbk'rLih.)rKyuvkzipjp~Ipicolibc-1.7.4/newlib/libc/iconv/ccs/binary/cns11643_plane1.cct000066400000000000000000007155601414576234500240200ustar00rootroot00000000000000cns11643_plane1XXXXV"zV"4</jl/j  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a!p"x"4!1"2"3%o%m%n%p%l$u$v$w$x$y$z${$|$}$~%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F!9!7"]!d!e!f!g!-!,!j!k!o"#"j"""k$+$,$-$.$/$0$1$2$3$4&5&6&7&8&9&:&;&<&=&>"X"U"W"V"Y"Z"\"["a"5"<"I"H"E"F"M"N"P"O"D"=";">"9":"G"JB!B"B#B$B%B&B'B(B)B*B+B,B-B.B/B0B1B2B3B4B5B6B7B8B9B:B;BB?B@BA&!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4#9#:#<#=#>#?#7#6#5#4#3#D#E#G#F#@#A#C#B#L#M#N#$#%#&#'#(#)#*#+#2#1#0#/#.#-#,#8#;!|!{!u!t!~!}!z!y!r!v!s#H#I#K#J!x!w"T"Q"S"R!!!#!$!q!R!S!N!O!V!W!Z![!J!K"e!F!G!h!i$5$6$7$8$9$:$;$<$=!&%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k"!"u"v"p"q"r"t"w"s"L"K"oD!D#D$D7D5D8D6DbDaD`EbEaE`EcE_G"G#KdD9DcDdHkD:DeEdD%DG&KfXqc*D'DhKgD(D@DiDkDlDjG'KhKiOgDADmG(G*G)HlKjKkOhOiS~D)DoDnDpDvDqDrDtDuDsEjEkElEmEiEpEqF#EnEoEhG7G4G8G5G6G9G+G:G,G.G;G0G3G1G2G/G-I$HuHrI&HzHyH}HxH{H~HoI)HmI%HnHvHwH|HtHpI'I*HsI"I(HqI#I!KyKqKlKvKoKwL!KzK|KpKuKtKxKsKnK}K~K{KrKmOxOlOkOsP!OmO{OrOzOvO}OpOyOoOwOtO|OqO~OuOnOjT:T$T4T9T'T0T=T1T*T?T6T!T"Y$T/T.T2T)T8T7T-T,T5T#T&T%T3T(TT;T+XvXuXyXwX|Y#X}XxXtXzY&Y%Y!X~X{Y"XrXs^.^+^*^-^/^0^,^1^)c1c+c4c-c.c,c2c3c0c/c5g|gygzgxgugwgtgrg}gvgsg{l#l$l"l!l%k~l(l&l'p3p0p2p4p1sAsBs@sCx+zbzc{X{WD*DBDxDwEsErG>G=G?Gh$E(Y5Y3Y4D2DE$?E+E*E)F%F$L8L5L7L6P2^;D3E,F'F&L9F)F(GMGNI;IL=L?P5TQv;DGF,F;F6F1F0F7F5F.FIOIUIFIPIQINILIMISI@ITIHIEIDIGIKIBLQLRLML@LALNLGLCLFLKLTLELHLJLSLOLULLLILDLBLPPPDP:P9T^TWTbTRT\TaT]T`TXTZTVTeTTTYTdT_TfTST[TcYIYGYDY@YKTUYF^NYLY>Y;Y8Y?YBYCYAYMYHY^D^JaC^H^U^A^I^G^C^W^P^E^B^M^?^F^V^R^L^S^O^K^QcLcMcEcOcCcFcAcJcDc?cKcGcHcNcB#!c@cIh5h0h*h&h'h,h3h-h.h/h4h+h1h)h(h2l7l1l=l>l4l6lpApG`G_G^I[IYI\IZLVPLTgThYNYPYO^XcPcQh7h6DHGcGgGeGdGfGbGaIfIcI_IaI]I`IbIeIdI^L[L]L\LZLYLXL^PMLWPNPTPOPQPPPSTiTlTkPRTjYQYUYVYZY[YWYXYRYTTmYS^`^a^_^\^Z^Y^]^^^[YYc[c^cYcSc]cWcUcTcVcRc\cXcZh8h=h?h9l?h:h>hx.x/x0yf|^DIE1Ig^b^ch@TnzgDJF@GhGiL_Y\hBhChADKE2E4E3E5FAFBGjGkIhLcLaLbL`PXPWPYPVLdPUToTpTq^dY]c_hEhDlGpMDLFCFDGmGpGoGrGqGnGlIsIpIjIrIoInIiIlImIqItIkLiLqLrLhLfLeLtLkLpLnLmLlLjLsLoLgP[PbPZP]P`PcP^PaTxPeP\PdP_T~T}TrTwTsTvTtTuTyTzT|T{Y^YdYcY_YgY`YhYfYeYaYb^e^g^h^f^i^jchcfcecdccc`cgcacbhJhIhKhFhLhGhHlKlIlMlHlJlLpNsQsPsOpOv@ygyhDMDNDOE6FEGsGtIwIxIvIuLuLwLvPfU!Yi^l^khMpPsRyi{\FFGwGuGvGxIzIyI{LxLzL|LyL}L{PjPgPiPkPhU'U#U$U&U(U%U*U)YnYmYlYkYoYj^n^p^m^ohNhVhPhThUhQhRhOhSlPlQlOlNpQx1yjDPGyPlU+YrYqYp^q^rhWpRDQE7GzL~DRE8I|^ssSDSDgE9FGJ"J!I}I~M"M#M!PpPoPmPnU.U,U-U"YtYuYshXlRlSsTzhE:DTG{J&J#J$J%M%M'M(M)M*M$M&PrPqU3U2U/U4U7U5U1U0U6YwYvYxY|Y~YzZ$Z!YyY{Z"Z#Y}^v^w^t^ucicjhYhZlUlTsXsVsUsWykzi{^{]|5DUG|KVZ%DVFJFIFHJ'U8DWDXDYE;Ps^xDZFKFLG}J(M0M.M-M+M,M/PtPvPuU:U9Z(Z'Z)Z&^z^{^|^yckh_h]h^h[lWlXlVh\sYD[FMH!G~M1clEE?FQFPH#J.M8M9M:P|U>Z/Z0_$hcl_pSsZ{_Z1cpvAJ0J/P}Z3])Z4Z2_%hdl`J1J2M>M=M;MUOUMUNUQULUKZ?Z=Z@_+ZBZG_,ZNZFZIZDZEZLZPZA_)ZKZJZOZHZM_-_*ZC_2_6cw_4_8cy_0_3_:czd&c{_9d%_7ct_;_1cscx_.cv_/d$d#d'd"hgc~hfcuhhc}d!c|lghnhmlfhlhjhkld_5lkleljholchililllhpWlplnpUltlrlslmpVlolqlupTpYpZs]s^p\s\p[s`pXvBs_x4x7x6x5ylymzjzk{`|6EAFSH'H(H&H)JJKMcM^MqMlMjM[MeMdMYMZMXMpMhMbMVMaMWMiMrMfM\M_M`MnMoMmMgMkM]Q8QDQQCQAUSQFQBQ;Q?QEUUQ=QHQ@UTQ:QGQ9UcUaUbUXU^U`UWUZU[U]UeUdUVU\U_UYZ[ZoZnZcZ^ZV_MZZZpZmZlZaZeZfZ`_?ZkZjZWZ\ZgZbZTZhZX_>ZYZUZdZ_Z]Zi_A_D_C_E_@_H_F_J_R_P_I_G_B_O_K_L_N_Sd8d4d1d*d3d6d7d2d,d-d0d.hzd5d/d+hx_Qhshrhvhylwh{lxhulyhwh|hql|l}m%m"m#m+m)lzm,htm!m$m(m*m'm&l~l{m-papbpkphp_pfpdp^pesdp`pgscpipjsepcsfskshsislsgsjvEvDvJvHvIvFx8vGx9yoynypzmzl|7{a|9|8|_EEH-JSJQJRMsQIQJUfUgZwZsZzZyZrZuZxZtZq_T_V_W_Ud9h}plm.m/m0smsnEF_Y_XznEGUhZ|Z{d:h~EHFXMtQKZ}_Zd;vKEIMuQLUiUj[!["[#Z~i"i!QMEJFYH/H.H0H1JTMvM}M{MzN#N"MyM|M~MxMwN!QSQPQVQNQQQTQOQRQUUrUkUnUqUlUpUmUo[%[$[)[&[(['_[___\_]_^_c_a_bdAd>d?d=dC_`d@d[@[A[/[5[?[:[.[7[4V"[1[9_{_v_w_s_i_l_k_|_n_j_u_q_p_t_o_r_h_~_m_x_z_ydLdNdRdJdGdWdUdQdIdVdOdPdF_}dKdHdSdMdTdEi(i-i&i8i6i'i0i4i*i1i.i/i)i7i,i5i3i2i+m7mBm?m;m8m@mAm>mCm=m:m9m6msvx=xQqdYq%vWEPH;N?QrQsV2V1`%`$mFs}vXzsQtV3[D`&d[dZmGmHEQF`JdQud\ERQvs~ES[E[F`'d]q&t!ETFbFaN@HH?HEH=JfH@HAHDJrJmJpJwJyJ{JnJuJxJhK!JvJkJzJiJjJqJ|JoJtJ}JsJ~JgJlNMN]NTNENHNPNRNYNKNINJNXNSNQNVQxN\NFNONNN`NUN[N_NaNZNLNBNGNCN^V9NWNDR)QyQ~R0R#R(R"Q}R+R-Q{R1R.R!QzR/R'R,R*R$R%R&Q|VAVFVMV>VHV:VCVEVGV@V?VKVLV=V`,`@`D`B`J`1`?`H`-`9`7`6`M`I`0`L`:`=`K`Fdcdmdhdnddd^dgdrdqdkd_dsdadjdidbdodfde`EiWdld`dpmZiTiIiVi@iXi>iHiUiFiJiEi?i=iOiCiGiNiAiSiPiDiQiKiMit2t9t5t4t1t7t6t3t8vcv`vavbxGxHywzu}FEWNgNhR;t:EXNiVUe%EY[si_t;EZNj`Ve&mbxIE[E\HJHIK(K'K&NkNlR=RVV[t`X[u`Wi`iamcxJzvE]FgNmK*K)NnNqNpNoR@RAR?V[VZVXVWVY[y[x[z[w[v`Z`\`[`Ye'e*e)ibe(mdicmeqAtt?xMvgxNyyzxzw|e\?`|\=`}`~eUeXeTeSeOeVeWeQeRiwi{ixizePiym}n#n!ivm|m~m{n$n"qTqVqSqUtPtOtMtNtQvpxUy|y}z!y~F|O#O$O%RiRlRkRjW*W)W-W0W1W/W.W,W+\@\A\BeYeZe[i~i|i}qWtRtSvqxV{kRmRne]F}K5K4K3O'O&RqRoRpW8W5W3W2W6W4W7\Ca%a$a"a#a!eae_e^ecebe`j!j"n)n*n&n(n%n'qZq\q[qXqYtTvtvrvsxXxWF~K6O)O(RrRsW9W:\D\Ea(a'a&edeej$j#n,n+q]tUvuvvz"|=G!W;]~]}a*a)j%j&z#HLO*RuRtW|@}%}&}KHMRvW>\N\P\Oa5a6ekelemj2j3j4n6##qfqgtat]tbt^t`t\t_v}z'z(HNK7O+RyRwR|RxR}R{RzWBWAWJWFWEWGW@WKWHWLWIWCW?WDa;\T\[\X\^\]\Y\U\V\W\\\R\Z\Qa8a:esa7a>a@a?a9aj=jnBnK=K;O4O2O1O6O8O5O9O3K?O7O0S*S+S,S/S'S)S.S2S0S-S1S(W^WgW\WZWbW_WaWfWdW[W]W`WcWe\i\j\n\l\k\h\maNaPaOaKaQaMjOaLaRaJaIf$f*f'f%f"f!f&aSf#f(f)jTjPjUjRjSjQnQnPnLnMnNnOqyqxqwt~u$u&u#u"u!t}t|u%w,w-xiz/{p|DH[O:jVu'H\WiWhH]S3jWqzH^O;Wj\of+jXq{u(w.H_OOBOIOFOEO@OGOJODO=OLOHOCWpOAOKSES?SGSDS@S9SCSFSHS8SW~X#WqX"W{WyWxW}WuW|X!X$WwWtWzWvWrWs]#\w]$]%]&]!\}\t\|\~\y\v\u]"\x]'\{\za]a[ahaeanalaoaZaVa^aca_aga`aXafaWakamaba\adaYaje\f0f8aif7f/f=f4aaf6f9f:f2f;f3f5ff@u6HeONSLSNSMX&X+X(X-X,X)X*X']2]1].],]+]-]/]*]3]0awatarauaxaqavasfAfGfFfEfHfIfJfDfCfKfBjrjmjojpjujqjtjnjlnjnkjsninhndnengnbncnfnar*r.r,r+r-uu=u7u;u?u@u8u:w:w8w7w9xtxqxuxrxsz9z:{'{&{%{$|G|f|g}'HfHgSO]4ayfLnlnmr/|hHhOPSPX.X/X3X2X0X1]6];]:]8]9]5]7a|aza{fTfVfNfUfQfOfPfRfMfSj|j~jvjxjzjyj{jwnonsnnnpnqnrj}r4r2r0r3r1uBuDuAuEuCxxxyxwxvz;{({){r{qHiSQa}w;KD]=]X;X8X]C]Bb+b-b,b!b%fkb&b*b)b'b#b.b(b$b"fffaf\flf]fYfhfefgf^fcfZf[fifjf`fdf_k"k%k-k'nxk,k.k#fbk&k$k(k*k!k/k+k)o!n{o$o%ntn~n}nwnvn|nyo#nuo"o&rr:rDrErBnzr8rFr?r;r@rAuNuKuGuOuHuIuJuMuLw>wAw@w?xzy#x}y!y"x|y$x~x{zBz@zCz?zAz>{+{,{-{t|H|j|i|k}4}:KGuQuPKHX?]Go'o(wB}CKI]Hb/fmk0rGo)rHuRXAX@b0fofnk2k1rIKJSVSWXBXC]N]L]I]M]K]Jb1ftb3b8b:b9bb=k8k7o6o7uXKMSZ]R]QbGbBbEb@bDbCbFbAfyfxg!g"fzf~f{f|f}k9oo?o;o=o8rLrMrPrOrNrKu[uYu\uZwIwDwHwEwGwFy+y(y-y*y,y'zGzIzHy)zF{/{1{0{w{x})};KNXEg#oAwJKOOQS\S[XHXFXG]S]TbIbHbJg&g$g%g'k;k=k:krVrUy0z){3KQXIg)KRKUKTKSOROTOSS_SdSaS^SeS`ScSbS]XOXLXSXNXQXMXJXPXRXK]V]`]\]d]]]b]X]U]W]c][]^]Z]_]a]YbLbNbPbMbQbOg/g7g8g-g2g+g*g5g4g3g1g6g,g.g0k@kCkGkAkFkDk?kEkBoMoKoNoLrZrXrWoOrYr\r[ucubugueufwNudwMwOy1y2|J|IKWXTKXK[KZKYOWOUOXOVShSiSfSgXVXUXW]e]fbS]gbUbRbTg9g:kIkHkJoRoQoPoSr]uh{zK\SkSjXZXYXX]hbVbWg=gzKK^Sl]ibXwROZX]X[X_X^X\]l]k]m]o]n]jb`b\b^b_babYbZb]b[gIg?gAgMgBgDgNgCgLgJgFgKgHg@gOgEgGkOkUkYkQkRkZkVkTkSkWkXkPoco^oZoYo_o]oXoao`o\o[obrarergrirlusrnrhr_rkrdrjunrfrmrcrbr`upuruluyuxuvuquuuwuoutumwTwSwUw]w[w\wVwYwXwZwWy8y9y>y6y}DO[O\SmX`]pbdbhbcbebgbfbbgPk[k^k`k_k\k]odoerou~u}uzu{u|w`w^waw_yCzO{{~|!|p|r|qOeg\rzr{OfojyHSrr||NSsg]g^kgkholokomr}v&whwiwj|#|"|s}6Stbyv'yISuSvkiwkyJ{@Sw^!^"bzb{b|gbgdg_g`gcgakjkkopons&oos$r~s#s!s%s"v(wnwlwowmwpyLyMyK{B{A|$|O|t}-Sxklkmoqv)wqyNzQSySzXjb}c"b~c$c!c#gfgeggghknkokqorkps'otosous,s*s)s+s(wuv*wtwrwsyOyPzSzR|%{C|P}.S{S|wvzTXkc&c%gjgigkkrowozo|o{o}oyovoxs.s-s/v,v+wwyQyRzUzVzXzW{G{F{E{D|'|&|S|Q|R|u}7}8}GXlkskto~s0s1wx{H|V|(|T|U}/Xmglkus3p!p"s2wywzyS|)|v}0Xnp#s4}HXoXpkvkwp%p$w}w|w{{J{I|w^#p'p&s5v/v.v0v-x$x#x!w~yVyWyUyTx"zZzY{L{K|+|-|,|*|W|Y|X|x}@}A^$gmkzkxkyp*p(p)s:s6s;s7s8s9v1v2x%x&x'yYy[y\yZyX{M{N{P{O|.|/|Z|y|z}E}I}J^%z[|{||^&gnv3y]y_y^{Q|[^'p+y`z\^(k{p,c'}1c(p-v4c)s=sx2|3s?!+!6!8!@!A!D!E!H!I!L!M!P!Q!T!U!X!Y!\!]"'"("+",")"*!.!/!0!2!3!4!5!^!_!`!a!b!c"-"."/"?"@"A"C"B"b"l"m"n!*!l"c"h!m!>!?!n"0!""1!%"_$!$"$#$$$%$&$'$($)$*!(!'"6"8"7!)"i$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z"`"%$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t!B"^!C"f"g"d  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ap!x"4"1!2"3"o%m%n%p%l%u$v$w$x$y$z${$|$}$~$!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%9!7!]"d!e!f!g!-!,!j!k!o!#"j"""k"+$,$-$.$/$0$1$2$3$4$5&6&7&8&9&:&;&<&=&>&X"U"W"V"Y"Z"\"["a"5"<"I"H"E"F"M"N"P"O"D"=";">"9":"G"J"!B"B#B$B%B&B'B(B)B*B+B,B-B.B/B0B1B2B3B4B5B6B7B8B9B:B;BB?B@BAB!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&9#:#<#=#>#?#7#6#5#4#3#D#E#G#F#@#A#C#B#L#M#N#$#%#&#'#(#)#*#+#2#1#0#/#.#-#,#8#;#|!{!u!t!~!}!z!y!r!v!s!H#I#K#J#x!w!T"Q"S"R"!!#!$!q!R!S!N!O!V!W!Z![!J!K!e"F!G!h!i!5$6$7$8$9$:$;$<$=$&!G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%!"u"v"p"q"r"t"w"s"L"K"o"!D#D$D7D5D8D6DbDaD`DbEaE`EcE_E"G#GdK9DcDdDkH:DeDdE%DD&GfKqX*c'DhDgK(D@DiDkDlDjD'GhKiKgOADmD(G*G)GlHjKkKhOiO~S)DoDnDpDvDqDrDtDuDsDjEkElEmEiEpEqE#FnEoEhE7G4G8G5G6G9G+G:G,G.G;G0G3G1G2G/G-G$IuHrH&IzHyH}HxH{H~HoH)ImH%InHvHwH|HtHpH'I*IsH"I(IqH#I!IyKqKlKvKoKwK!LzK|KpKuKtKxKsKnK}K~K{KrKmKxOlOkOsO!PmO{OrOzOvO}OpOyOoOwOtO|OqO~OuOnOjO:T$T4T9T'T0T=T1T*T?T6T!T"T$Y/T.T2T)T8T7T-T,T5T#T&T%T3T(TT;T+TvXuXyXwX|X#Y}XxXtXzX&Y%Y!Y~X{X"YrXsX.^+^*^-^/^0^,^1^)^1c+c4c-c.c,c2c3c0c/c5c|gygzgxgugwgtgrg}gvgsg{g#l$l"l!l%l~k(l&l'l3p0p2p4p1pAsBs@sCs+xbzczX{W{*DBDxDwDsErE>G=G?Gc$h(E5Y3Y4Y2DED?$+E*E)E%F$F8L5L7L6L2P;^3D,E'F&F9L)F(FMGNG;IL=L?L5PQT;vGD,F;F6F1F0F7F5F.FIOIUIFIPIQINILIMISI@ITIHIEIDIGIKIBIQLRLML@LALNLGLCLFLKLTLELHLJLSLOLULLLILDLBLPLPDP:P9P^TWTbTRT\TaT]T`TXTZTVTeTTTYTdT_TfTST[TcTIYGYDY@YKYUTFYN^LY>Y;Y8Y?YBYCYAYMYHY^D^J^CaH^U^A^I^G^C^W^P^E^B^M^?^F^V^R^L^S^O^K^Q^LcMcEcOcCcFcAcJcDc?cKcGcHcNcBc!#@cIc5h0h*h&h'h,h3h-h.h/h4h+h1h)h(h2h7l1l=l>l4l6lpApF`G_G^G[IYI\IZIVLLPgThTNYPYOYX^PcQc7h6hHDcGgGeGdGfGbGaGfIcI_IaI]I`IbIeIdI^I[L]L\LZLYLXL^LMPWLNPTPOPQPPPSPiTlTkTRPjTQYUYVYZY[YWYXYRYTYmTSY`^a^_^\^Z^Y^]^^^[^YY[c^cYcSc]cWcUcTcVcRc\cXcZc8h=h?h9h?l:h>hv.x/x0xfy^|ID1EgIb^c^@hnTgzJD@FhGiG_L\YBhChAhKD2E4E3E5EAFBFjGkGhIcLaLbL`LXPWPYPVPdLUPoTpTqTd^]Y_cEhDhGlMpLDCFDFmGpGoGrGqGnGlGsIpIjIrIoInIiIlImIqItIkIiLqLrLhLfLeLtLkLpLnLmLlLjLsLoLgL[PbPZP]P`PcP^PaPxTeP\PdP_P~T}TrTwTsTvTtTuTyTzT|T{T^YdYcY_YgY`YhYfYeYaYbYe^g^h^f^i^j^hcfcecdccc`cgcacbcJhIhKhFhLhGhHhKlIlMlHlJlLlNpQsPsOsOp@vgyhyMDNDOD6EEFsGtGwIxIvIuIuLwLvLfP!UiYl^k^MhPpRsiy\{FFwGuGvGxGzIyI{IxLzL|LyL}L{LjPgPiPkPhP'U#U$U&U(U%U*U)UnYmYlYkYoYjYn^p^m^o^NhVhPhThUhQhRhOhShPlQlOlNlQp1xjyPDyGlP+UrYqYpYq^r^WhRpQD7EzG~LRD8E|Is^SsSDgD9EGF"J!J}I~I"M#M!MpPoPmPnP.U,U-U"UtYuYsYXhRlSlTshz:ETD{G&J#J$J%J%M'M(M)M*M$M&MrPqP3U2U/U4U7U5U1U0U6UwYvYxY|Y~YzY$Z!ZyY{Y"Z#Z}Yv^w^t^u^icjcYhZhUlTlXsVsUsWskyiz^{]{5|UD|GVK%ZVDJFIFHF'J8UWDXDYD;EsPx^ZDKFLF}G(J0M.M-M+M,M/MtPvPuP:U9U(Z'Z)Z&Zz^{^|^y^kc_h]h^h[hWlXlVl\hYs[DMF!H~G1MlcE?EQFPF#H.J8M9M:M|P>U/Z0Z$_ch_lSpZs_{1ZpcAv0J/J}P3Z)]4Z2Z%_dh`l1J2J>M=M;MZOUMUNUQULUKU?Z=Z@Z+_BZGZ,_NZFZIZDZEZLZPZAZ)_KZJZOZHZMZ-_*_CZ2_6_wc4_8_yc0_3_:_zc&d{c9_%d7_tc;_1_scxc._vc/_$d#d'd"dgh~cfhuchh}c!d|cglnhmhfllhjhkhdl5_kleljlohclihilllhlWpplnlUptlrlslmlVpolqlulTpYpZp]s^s\p\s[p`sXpBv_s4x7x6x5xlymyjzkz`{6|AESF'H(H&H)HJKJcM^MqMlMjM[MeMdMYMZMXMpMhMbMVMaMWMiMrMfM\M_M`MnMoMmMgMkM]M8QDQQCQAQSUFQBQ;Q?QEQUU=QHQ@QTU:QGQ9QcUaUbUXU^U`UWUZU[U]UeUdUVU\U_UYU[ZoZnZcZ^ZVZM_ZZpZmZlZaZeZfZ`Z?_kZjZWZ\ZgZbZTZhZXZ>_YZUZdZ_Z]ZiZA_D_C_E_@_H_F_J_R_P_I_G_B_O_K_L_N_S_8d4d1d*d3d6d7d2d,d-d0d.dzh5d/d+dxhQ_shrhvhyhwl{hxluhylwh|hqh|l}l%m"m#m+m)mzl,mth!m$m(m*m'm&m~l{l-mapbpkphp_pfpdp^pepds`pgpcsipjpescpfskshsislsgsjsEvDvJvHvIvFv8xGv9xoynypymzlz7|a{9|8|_|EE-HSJQJRJsMIQJQfUgUwZsZzZyZrZuZxZtZqZT_V_W_U_9d}hlp.m/m0mmsnsFEY_X_nzGEhU|Z{Z:d~hHEXFtMKQ}ZZ_;dKvIEuMLQiUjU!["[#[~Z"i!iMQJEYF/H.H0H1HTJvM}M{MzM#N"NyM|M~MxMwM!NSQPQVQNQQQTQOQRQUQrUkUnUqUlUpUmUoU%[$[)[&[(['[[___\_]_^_c_a_b_Ad>d?d=dCd`_@d[@[A[/[5[?[:[.[7[4["V1[9[{_v_w_s_i_l_k_|_n_j_u_q_p_t_o_r_h_~_m_x_z_y_LdNdRdJdGdWdUdQdIdVdOdPdFd}_KdHdSdMdTdEd(i-i&i8i6i'i0i4i*i1i.i/i)i7i,i5i3i2i+i7mBm?m;m8m@mAm>mCm=m:m9m6mxvs=xNqQYd%qWvPE;H?NrQsQ2V1V%`$`Fm}sXvsztQ3VD[&`[dZdGmHmQE`FdJuQ\dREvQ~sSEE[F['`]d&q!tTEbFaF@NH?HEH=HfJ@HAHDHrJmJpJwJyJ{JnJuJxJhJ!KvJkJzJiJjJqJ|JoJtJ}JsJ~JgJlJMN]NTNENHNPNRNYNKNINJNXNSNQNVNxQ\NFNONNN`NUN[N_NaNZNLNBNGNCN^N9VWNDN)RyQ~Q0R#R(R"R}Q+R-R{Q1R.R!RzQ/R'R,R*R$R%R&R|QAVFVMV>VHV:VCVEVGV@V?VKVLV=V`,`@`D`B`J`1`?`H`-`9`7`6`M`I`0`L`:`=`K`F`cdmdhdnddd^dgdrdqdkd_dsdadjdidbdodfdedE`Wild`dpdZmTiIiVi@iXi>iHiUiFiJiEi?i=iOiCiGiNiAiSiPiDiQiKiMiq2t9t5t4t1t7t6t3t8tcv`vavbvGxHxwyuzF}WEgNhN;R:tXEiNUV%eYEs[_i;tZEjNV`&ebmIx[E\EJHIH(K'K&KkNlN=RRVVt[X`u[W``iaicmJxvz]EgFmN*K)KnNqNpNoN@RAR?R[VZVXVWVYVy[x[z[w[v[Z`\`[`Y`'e*e)ebi(edmciemAqt?tMxgvNxyyxzwz<|jF$\GqOxg{kF"#%\&\iiHqIqhvlFIR'\mF(\i`j`nFoF-K,KJRpFqFrFsF.K/KwNNRLRMRKRcVgVfVeVdV+\)\*\l`k`,\5e6ekmQxPxh{tF-\jiyNzNxNRRSRPRQRORkVlV0\qVoVnVmVhVpViVjV1\2\.\/\q`p`n`r`s`m`o`8e;e:e?e>e\?\|`=\}`~`UeXeTeSeOeVeWeQeRewi{ixiziPeyi}m#n!nvi|m~m{m$n"nTqVqSqUqPtOtMtNtQtpvUx|y}y!z~y|F#O$O%OiRlRkRjR*W)W-W0W1W/W.W,W+W@\A\B\YeZe[e~i|i}iWqRtStqvVxk{mRnR]e}F5K4K3K'O&OqRoRpR8W5W3W2W6W4W7WC\%a$a"a#a!aae_e^ecebe`e!j"j)n*n&n(n%n'nZq\q[qXqYqTttvrvsvXxWx~F6K)O(OrRsR9W:WD\E\(a'a&adeee$j#j,n+n]qUtuvvv"z=|!G;W~]}]*a)a%j&j#zLH*OuRtR|@|%}&}K}MHvR>WN\P\O\5a6akeleme2j3j4j6n##fqgqat]tbt^t`t\t_t}v'z(zNH7K+OyRwR|RxR}R{RzRBWAWJWFWEWGW@WKWHWLWIWCW?WDW;aT\[\X\^\]\Y\U\V\W\\\R\Z\Q\8a:ase7a>a@a?a9aj=jnBnK=K;K4O2O1O6O8O5O9O3O?K7O0O*S+S,S/S'S)S.S2S0S-S1S(S^WgW\WZWbW_WaWfWdW[W]W`WcWeWi\j\n\l\k\h\m\NaPaOaKaQaMaOjLaRaJaIa$f*f'f%f"f!f&fSa#f(f)fTjPjUjRjSjQjQnPnLnMnNnOnyqxqwq~t$u&u#u"u!u}t|t%u,w-wix/zp{D|[H:OVj'u\HiWhW]H3SWjzq^H;OjWo\+fXj{q(u.w_HOBOIOFOEO@OGOJODO=OLOHOCOpWAOKOES?SGSDS@S9SCSFSHS8SS~W#XqW"X{WyWxW}WuW|W!X$XwWtWzWvWrWsW#]w\$]%]&]!]}\t\|\~\y\v\u\"]x\']{\z\]a[ahaeanalaoaZaVa^aca_aga`aXafaWakamaba\adaYaja\e0f8fia7f/f=f4faa6f9f:f2f;f3f5ff@f6ueHNOLSNSMS&X+X(X-X,X)X*X'X2]1].],]+]-]/]*]3]0]watarauaxaqavasaAfGfFfEfHfIfJfDfCfKfBfrjmjojpjujqjtjnjljjnknsjinhndnengnbncnfnan*r.r,r+r-ru=u7u;u?u@u8u:u:w8w7w9wtxqxuxrxsx9z:z'{&{%{${G|f|g|'}fHgHOS4]yaLflnmn/rh|hHPOPS.X/X3X2X0X1X6];]:]8]9]5]7]|aza{aTfVfNfUfQfOfPfRfMfSf|j~jvjxjzjyj{jwjonsnnnpnqnrn}j4r2r0r3r1rBuDuAuEuCuxxyxwxvx;z({){r{q{iHQS}a;wDK=]<]~aWf6r5rFuX;X8X]C]B]+b-b,b!b%bkf&b*b)b'b#b.b(b$b"bffaf\flf]fYfhfefgf^fcfZf[fifjf`fdf_f"k%k-k'kxn,k.k#kbf&k$k(k*k!k/k+k)k!o{n$o%otn~n}nwnvn|nyn#oun"o&or:rDrErBrzn8rFr?r;r@rArNuKuGuOuHuIuJuMuLu>wAw@w?wzx#y}x!y"y|x$y~x{xBz@zCz?zAz>z+{,{-{t{H|j|i|k|4}:}GKQuPuHK?XG]'o(oBwC}IKH]/bmf0kGr)oHrRuAX@X0bofnf2k1kIrJKVSWSBXCXN]L]I]M]K]J]1btf3b8b:b9bb=b8k7k6o7oXuMKZSR]Q]GbBbEb@bDbCbFbAbyfxf!g"gzf~f{f|f}f9ko?o;o=o8oLrMrPrOrNrKr[uYu\uZuIwDwHwEwGwFw+y(y-y*y,y'yGzIzHz)yFz/{1{0{w{x{)};}NKEX#gAoJwOKQO\S[SHXFXGXS]T]IbHbJb&g$g%g'g;k=k:kkVrUr0y)z3{QKIX)gRKUKTKSKROTOSO_SdSaS^SeS`ScSbS]SOXLXSXNXQXMXJXPXRXKXV]`]\]d]]]b]X]U]W]c][]^]Z]_]a]Y]LbNbPbMbQbOb/g7g8g-g2g+g*g5g4g3g1g6g,g.g0g@kCkGkAkFkDk?kEkBkMoKoNoLoZrXrWrOoYr\r[rcubugueufuNwduMwOw1y2yJ|I|WKTXXK[KZKYKWOUOXOVOhSiSfSgSVXUXWXe]f]Sbg]UbRbTb9g:gIkHkJkRoQoPoSo]rhuz{\KkSjSZXYXXXh]VbWb=ggKz^KlSi]XbRwZO]X[X_X^X\Xl]k]m]o]n]j]`b\b^b_babYbZb]b[bIg?gAgMgBgDgNgCgLgJgFgKgHg@gOgEgGgOkUkYkQkRkZkVkTkSkWkXkPkco^oZoYo_o]oXoao`o\o[oboarergrirlrsunrhr_rkrdrjrnufrmrcrbr`rpuruluyuxuvuquuuwuoutumuTwSwUw]w[w\wVwYwXwZwWw8y9y>y6y}D}[O\OmS`Xp]dbhbcbebgbfbbbPg[k^k`k_k\k]kdoeoor~u}uzu{u|u`w^waw_wCyOz<{]OjHbKcK`KaK_K`O_O^ObOaOoSpSqSnSgXdXeXhXcXaXbXfXq]y]u]pbs]v]r]w]x]t]lbqbmbnbibkbobjbRgSgQgakckbkprqrrr!vDy"vcOiXz]rbtbsbubvbVgWgUgdkTgeksr#vdwewcwfwbwEydO|]{]wbxb[gXgZgYgfkfogohoiowrtryrurxrvr$v%vgwGyFyPz?{={>{~{!|p|r|q|eO\gzr{rfOjoHyrS|rN|sS]g^ggkhklokomo}r&vhwiwjw#|"|s|6}tSyb'vIyuSvSikkwJy@{wS!^"^zb{b|bbgdg_g`gcgagjkkkpono&soo$s~r#s!s%s"s(vnwlwowmwpwLyMyKyB{A{$|O|t|-}xSlkmkqo)vqwNyQzySzSjX}b"c~b$c!c#cfgeggghgnkokqkropk'stosouo,s*s)s+s(suw*vtwrwswOyPySzRz%|C{P|.}{S|SvwTzkX&c%cjgigkgrkwozo|o{o}oyovoxo.s-s/s,v+vwwQyRyUzVzXzWzG{F{E{D{'|&|S|Q|R|u|7}8}G}lXsktk~o0s1sxwH{V|(|T|U|/}mXlguk3s!p"p2sywzwSy)|v|0}nX#p4sH}oXpXvkwk%p$p}w|w{wJ{I{w|#^'p&p5s/v.v0v-v$x#x!x~wVyWyUyTy"xZzYzL{K{+|-|,|*|W|Y|X|x|@}A}$^mgzkxkyk*p(p)p:s6s;s7s8s9s1v2v%x&x'xYy[y\yZyXyM{N{P{O{.|/|Z|y|z|E}I}J}%^[z{|||&^ng3v]y_y^yQ{[|'^+p`y\z(^{k,p'c1}(c-p4v)c=ss2x3|?s+!6!8!@!A!D!E!H!I!L!M!P!Q!T!U!X!Y!\!]!'"("+",")"*".!/!0!2!3!4!5!^!_!`!a!b!c!-"."/"?"@"A"C"B"b"l"m"n"*!l!c"h"m!>!?!n!0""!1"%!_"!$"$#$$$%$&$'$($)$*$(!'!6"8"7")!i"A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$`"%"[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t$B!^"C!f"g"d"} z!`!i!p!y!!"" ")"+$$!$`$i$t$}%m%s %%%%!&@&B%00(00,00):11)G33lNNoNKNSN]N_NNNNNNNNNNO OOFOHOMO`OOOOOOOOP PP%P-PtPwPPQ;QM QYQn QuQx6QQ:QQ=RR BR$R*GR6R;NRJRNTR[R]YRR\RR`RRdSSvS>SJ{SQSTSnS{SSSSTTTT T)T.T5TCTsT}TTTTTTUUUWUUUU UUUUUU$UU)V.V61VdVl:VVCVVFVVIVVNW,W0UWMWQZX/X5_XJXLfYYiY'Y.rYGYIzYNYZ}YYYYYYZZZZ[[ [P[_[[[[[[[[[[[[\\\7\A\K\Q]]]] ^6^8^_^c^r^~^^&^^)^^-^^0__5_i_q<__E__H__V__Y__```d`%`+i`b`pp````````a aaaaGaNauawaaabb bb0b6b>bAbGbTbmbob|bbbbbbb bc cc cLcP #cgck (cc -dd :dxd{ ?dd Cdd Ndd be*e, keTeY netex tee yee ~ff f$f( fAfE fnfp ff ff ff fg g&g. gNgW g\g` gmgw gg gg hlB 0l[la 5l}l rmwmy |mm mm mm mm mm mm nn& nn no oo o)o, o/o3 omop oo oo oo pp qdqi qq qq r5r> rFrH r]rb rr sws{ t3t6 tYt_ tt tt u%u3 uKuO *uYu] /uu 4uu 8uu ?uv Dvv) Gv{v~ Rvv Vvv [vv hw6w> uwawl ~ww ww ww ww y*y, yFyI yUyW y]y` yy yy yy zz z;z@ zKzN z`zb zz {M{V |=|@ |_|e || }} }}" }.}3 }@}F }n}s }} }} }} &~~ /~.~H 2~i~m M R Y \  c kow p} y | ڀ PU pz    ł(, ʂ59 ςnr Ԃ قт ۂ  19  im Ʉ HJ hj  " '[_ ,y{ 1 4# =ac B^` E  H:> UTV Zhs ] i tX\ jm ь ތ Ž" ȎHK Ύ Ҏ َʎ ܏  揭  #Jct,JHMMtxSőXבe7@lv "y|֓|ȕԕKM]dpxÖї ԗ^bۗ7;LOoq=?Й Ϛ AEMQ$ț)̞,۞20D8IkM<p?]%o%m%n%p$u$v$w$x$y$z${$|$}$~%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F$+$,$-$.$/$0$1$2$3$4&5&6&7&8&9&:&;&<&=&>"X"U"W"V"Y"Z"\"["<"I"H"E"F"MB!B"B#B$B%B&B'B(B)B*B+B,B-B.B/B0B1B2B3B4B5B6B7B8B9B:B;BB?B@BA&!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4#@#A#C#B#L#M#N#$#%#&#'#(#)#*#+#2#1#0#/#.#-#,#H#I#K#J"Q"S"R!!!#!$!q!R!S!N!O!V!W!Z![!J!K"e!F!G!h!i$5$6$7$8$9$:$;$<$=%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k"p"q"rD7D5D8D6DbDaD`EbEaE`EcE_DfEeEgEfG$G%D&D?D>DiDkDlDjKiOgDADmG(G*G)HlKjKkOhOiDoDnDpDvDqDrDtDuDsEjEkElEmEiEpEnEoEhG,G.G;G0G3G1G2H~HoI)HmI%HnHvHwH|HtHpI'I*HsI"I(HqI#OkOsP!O{OrOzO}OpOyOoOqO~OuOnOjT?T6T!T"Y$T/T.T2T)T8T7T-T&T%T3T(TT;Y!X~X{Y"^/^0^,^1{X{WD*DBDxDwEsErG>G=G?GIOIPIQINILIMISI@ITIHIEL@LALNLGLCLFLKLTPPDP:TWTbTRT\TaT]T`YCYAYM^>^D^JaC^H^U^A^I^C^W^P^E^B^M^F^V^R^L^S^O^KcLcMcEcOcKcGcHcNcB#!c@l1l=l>l4l6lpApG`G_G^GeGdGfGbI`IbIeIdI^^Y^]^^^[YYc[c^cYzgDJF@GhGiL_DKE2E4E3E5FALaLbL`PXPWPYPVLdPUToTpTqGrGqGnGlImIqItLlLjLsLoLgcecdccc`cghJhIhKlMlHlJlLDMDNDOE6FEGsGtIwIxIvIuLuGwGuGvGxIzIyLxLzL|LyL}L{PjPgPiPkPhU$U&U(U%U*U)YmYlYkYoYjhNhVhPhThUhQhRhOhSlPlQlOlNpQYrYqYp^q^rhWpRDQE7sSDSDgE9FGJ"J!I}I~PpPoPmPnU.U,KVZ%DVFJFIFHDWDXDYE;Z'Z)Z&lWlXlVh\D[FMH!G~M1clEE?FQFPZ3])Z4Z2_%hdl`M=M;MJKMXMpMhMbMVMaMWMiMrMfM\M_M`MnMoMmMgMkM]Q8QDQQCQAUSQFQ;Q?QEUUQ=QHQ@UTQ:UeUdUVU\U_Z[ZoZnZcZTZhZX_>ZYZUZdZ_Z]Zid*d3d6d7hulyhwh|m$m(m*m'm&l~l{m-papbpkphp_pfpdp^pesdp`pgscsislsgsjvEvD|9|8|_ZzZyZrZuZxZtplm.m/m0[!["[#Z~EJFYH/H.H0H1MxMwN!QVQNQQQTUrUkUnUq_[___\d>d?d=d@dq%vWEPH;Qud\ERETFbFaN@V4V8V7V5V6[G`*`(`)FfFeFdJeHEH=JfH@HAHDJuJxJhK!JvJkJzJiJjJqJ|NPNRNYNKNINJNXNSNQNVNONNN`NUNaNZNLNBNGN^V9NWNDR)R+R-Q{R1R/R'R,R*R$R%R&V@V?VKVLV=ViHiUiFi?i=iOiAiSiPiDiQiKiMi\$qGxO{gFk`i`jFnFoK-K,RJFpFqFrFsRNRLRMRKVgVfVeVdRRRSRPRQVqVoVnVmVhe8e;e:e?e>e=e7e9mnmlmqmrmompikmm`t`uFuHKN{RURVRWN|RZR[RYRXVtVuVv\6`ye@eAipiqmuqNqM\:\7\;\<\9\8iueMeFeKeDeLeHeCeIqPqQqOvnvovlvm}3FyRd`{eNtLy}z!y~RiRlRkRjW)W-W0W/W.W,W+i~i|i}RmRne]F}K5K4K3W3W2W6W4W7e^ecebe`n*n&n(n%n'q\q[qXqYvtvrvs\Ea(a'a&a1a3a.a4a/a0a,x\xYxZx^{m{l|?|>|@t]tbt^t`t\t_RwR|RxR}R{RzWBWAWJW@WKWHWLWIWCW?WD\T\[\X\^\]\Y\W\\\R\Z\Qaj=jf@SLSNSMfHfIfJfDfCfK{'{&{%{$r/|hHhxyxwxvX7X6X=X5X>X;X8Xo?o;u[uYu\uZy)zF{/{1{0};KNXEKOOQS\S[XHk;k=k:kzKK^Sl]ibXwROZX]X[X_X^X\g?gAgMgBgDgNgCusrnrhr_rkrdwSwUw]w[w\y}Dbhbcbebgbfbbk[k^k`k_k\k]u}uzu{u|w^waw_SoSpSqXeXhXcXaXbXf]ubp]s]v]r]w]x]tbqbmbnbibkbobjgQkakckb]zbrbtbsbubvgVgWgUkdgTOd]|]{rwrtryrurxOfojyHSr{@Sw^!^"bzb{b|gbgdg_g`gcgas#s!s%s"wnwlwowm|O|t}-geggghwtwrwsXkc&c%owozo|{H|V|(|T|U}/Xms3p!p"kvkwp%p$w}w|w{{Jv/v.v0v-x#x!w~}1c(p-v4c)v8v6v7v5x(!+!6!8!@!A!D!E!H!I!L!M!P!Q!T!U!X!Y!\!]"'"("+",")"*!.!/!0!2!3!4!5!^!_!`!a!b!c"-"."/"?"@"A"C"B"b"l"m"n!*!l"c"h!m!>!?!n"0!""1!%"_$!$"$#$$$%$&$'$($)$*!(!'"6"8"7!)"i$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z"`"%$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t!B"^!C!p"x"4!1"2"3%l !9 !7 "] !d !e !f !g %!- &!, 2!j 5!k ;!o >"#!"j!""! "k""a""5"."N"4"P"5"O"<"D"R"="`";"a">"f"9"g":""G""J%#9%#:% #<%#=%#>%#?%#7%$#6%,#5%4#4%<#3%P#D%^#E%a#G%j#F%#8%#;%!|%!{%!u%!t%!~%!}%!z%!y%!r%!v%!s&!x&!w& "T0!&2"!3"u3"v3"t3"w3"s3"L3"K3"oND!ND#ND$NG"NG#N&KdN+D9N-DcN0DdN2HkN8D:N9DeN;EdNCD%NEDS1h$S9E(SWP2SZ^;S\D3S^E,S`F'SaF&SfL9STNSE-SP4STPSTOS^SL=SL?SP5STQSF3SF=SF2TGTTGZTGVT&IAT'ICT1IUT3IFTFIDTHIGTJIKTNIBTbLQThLRTqLMTLETLHTLJTLSTLOTLUTLLTLITLDTLBTLPTPETPGTP=TP;TPHTP9TT^TTXTTZTTVTTeUTTUTYUTdU T_UTfUTSUT[U'TcU,YIU.YGU/YDU1Y@U3YKU7TUU8YFU>^NUAYLUCY>UDY;UFY8UJY?UOYBU\YHU^YIcW@I_WGIaWJI]WaL[WdL]WfL\WiLZWjLYWwLXW|L^WPMWLWWPNWPTWPOWPQWPPWPSWTiWTlWTkWPRWTjWYQWYUWYVWYZWY[WYWXYXXYRXYTX TmX YSX^`X ^aX!^_X$^\X*^ZXQcSXRc]XTcWXWcUXXcTXZcVX^cRXbc\XkcXXmcZXuh8Xyh=X}h?X~h9Xl?Xh:Xh>XhXx.Xx/Xx0XyfX|^XDIXE1XIgX^bX^cXh@YTnY Y\Y"hBY$hCY%hAY1FBY7GjY8GkY>IhYDLcY`^dYbY]Ygc_YihEYjhDYmlGYnpMYsDLYtFCYvFDYxGmYyGpY}GoYIsYIpYIjYIrYIoYInYIiYIlYIkYLiYLqYLrYLhYLfYLeYLtYLkYLpYLnYLmYP[YPbYPZYP]YP`YPcYP^YPaYTxYPeYP\ZPdZP_Z T~Z T}ZTrZTwZTsZTvZTtZTuZ TyZ#TzZ%T|Z)T{Z6Y^Z_5Z/_7Z0_<_$_Fhc_Hl__JpS_LsZ_N{__WZ1_Ycp_^vA_bJ0_dJ/_eP}_wJ1_yJ2_|M>_Z;_Z7_Z:_Z9_lb_la_he_s[_E@_FR_J4_J6_M?_M@_J:_J8_J7_MB_J9_MA_MC`Q+`MD`MO`Q(` Q)`!MK`/MF`5MG`CQ2`FQ1`MQ-`PUE`UUF`YUB`Z<`UJ`UP`Z>`UO`UM`UN`UQ`UL`UK`Z?`Z=`Z@`ZA`_)`ZK`ZJ`ZO`ZH`ZCa_:aczad&ac{a _9a_;a_1acva#_/a'd$a4d#a7d'a>d"a?hgaDc~aUlgaXhnaZhma]lfa_hlabhjachkagldah_5aklkanleaplja|lia~llalhapWalpalnapUaltalralsalmapValoalqaluapTapYapZas]avBas_ax4bEAbZQbZRb_UWcBUZcFU[cIU]cUUYcqZ^crZVcv_McwZZczZpc{ZmcZlcZacZecZfcZ`c_?cZkcZjcZWcZ\cZgcZbc_Ac_Dc_Cc_Ec_@c_Hc_Fc_Jc_Rc_Pc_Ic_Gc_Bc_Oc_Kc_Lc_Nc_Sdd8d d4dd1dd2dd,d*d-d,d0d-d.d4hzd6d5d=d/d>d+dQhxdR_QdThsdXhrd_hvdghydilwdmh{dolxdhqdl|dl}dm%dm"dm#dm+dm)dlzdm,dhtdm!dpidpjdsedpcdsfdskdshdvJdvHdvIdvFex8evGex9eyoeyneypezmezle#|7e${ae/EEe6H-e8JSe9JQe;JRe>Mse?QIeEQJeHUfeIUgeOZweQZse]Zqe^_Teb_Vec_Wef_Ueld9erh}esmesneEFe_Ye_XezneEGeUheZ|eZ{ed:eh~eEHeFXeMteQKeZ}e_Zed;evKeEIeMueQLeUieUjei"ei!eQMeJTeMvfM}fM{fMzfN#f N"f MyfM|fM~fQSf QPf-QOf/QRf1QUfIUlfLUpfOUmfRUofZ[%f][$f^[)fd[&ff[(fh['ft_]fv_^fw_cfz_af~_bfdAfdCf_`fi%fi#fi$fm2fm1fm4fm3fprfpofppfpmfpqfpnfspfsofvLfx;fx:fyqfzof|:gdDgELg H4g N%g N$gUtgUugUvg[,g_gg_fg1H7g4H6g5H8g=H5gFJ_gIJ^gjN:g|N9g~N4gN2gN-gN3gN'gN5gN8gN(gN/gN7gN*gN.gQ_gQlgQegQ^gQhgQcgQmgQfgQogQjgQngQggQagQ]gQbgQXhV.hV#hV/h!Uwh)V!h*V,h8Uxh9U|hLV$hv[3h[0h[=h[6h[>h[@h[Ah[/h[5h[?h[9h_{h_vh_wh_sh_ih_lh_kh_|h_nh_jh_uh_qh_ph_th_oi_mi _xi_zi_yi0dLiJdNiSdRiTdJicdVihdOikdPimdFin_}iudKiwdHiydSidMidTidEii(ii-ii&ii8ii6ii'ii0ii4ii*ii1ii.ii/ii)ii7ii2ii+im7imBim?im;jm8jm@jmAj m>jmCjm=jm:jm9jm6j!mjsvjx=jx`!kGdXkIi9kLi:kNmEkPmDkYq$k\s|kjQqkrdYkN?kQrkQskV2kV1k`%k`$kmFks}kvXkzskQtkV3k[Dk`&kd[kdZkmGkmHkEQkF`kJdkQvks~kESk[Ek[Fk`'kd]lq&lt!lHlYH?lhJrljJmlpJplrJwltJylvJ{lzJnlJolJtlJ}lJslJ~lJglJllNMlN]lNTlNElNHlQxlN\lNFlN[lN_lNCm Qym Q~mR0mR#mR(mR"m%Q}m.R.m1R!m2QzmAQ|mYVAmZVFmeVMmfV>miVHmjV:mlVCmnVEmtVGm[jm[Wm[Um[Lm[`m[Zm[Im[lm[Tm[Nm[Vm[^m[Xm[Mm[Om[mm[em[Jm[\n[Rn,`An-`;n/`+n2`/n4`>n8`,n:`@n>`DnC`BnD`JnJ`1nM`?nN`HnT`-nV`9nX`7n[`6n_`Mnc`Ing`0ni`Lnn`:no`=nr`Kn`Fndcndmndhndnnddnd^ndgndrndqndknd_ndsndandjndindbndondfnden`EniWniTniIniVni@niXoiJoiEo iCo"iGo#iNo8iLo>iBo?mIoQmLoTmNoXmYo[mQo_m]o`m\odmWofmMoxmRozmUo|mJot*omKomOoiRomTomXoq3oq)oq+oq2oq-oq(oq.oq4oq1oq0ot.ot"ot&ot'ot-ov]ov[pv\p vYp vZpv_pv^pxEpxFpxCpx@pxDpxAp(xBp0yup2yvp>ytpLztpQ{dpX{ep^|`pc}$pd}2pkEVppHHpvK"pxK%p|K#p}K$pNepNcpNdpNbpNfpR:pR4pR8pR3pVSpVOpVTpVPpVRpVQp[rp[np[qq [oq [pq`Nq`Oq`Uq!`Rq&`Pq0`Qq6`SqFe"qIdxqLd}qNdtqVe$qYduq\dzq^e!qld{qn`Tq}i[qi]qi\qi^qiYqiZqm^qmaqm_qm`qq;qq5qq?qq@qq9qq6qqqt2qt9qt8qvcqv`qvaqvbrxGr xHrywrzur(}Fr*EWr,Ngr-Nhr0R;rL`VrRe&rVmbrXxIrYE[r[E\rgNkriNlroR=rrRryVVr}[tr`Xr[ur`Wri`riarmcrxJrzvrE]rFgrNmrK*rK)rNnrNqrNprNorR@rRArR?s[ys[xs[zss[vs%`Zs)`\s4`[s6`Ys7e's>e*s?e)sDibsEe(sNmdsPicsWmeshqAsptxN\?x]`|xk\=xl`}xo`~x|eUxeXxeTxeSxeOxeVxeWxeQxeRxiwxi{xixxizxePxiyxm}xn#xn!xivxm|xm~xm{xn$xn"xqTxqVxqSxqUxtPxtOxtMxtNytQyvpyxUy&y|y:F|y>O#y@O$yAO%yPW*yZW1ye\@yh\Aym\ByzeYyeZye[yqWytRytSyvqyxVy{kyO'yO&yRqyRoyRpyW8yW5y\Cza%za$za"z a#z a!zeaze_z.j!z1j"z7n)zFqZzWtTzixXzkxWztF~zvK6zyO)zzO(zRrzRszW9zW:z\Dzedzeezj$zj#zn,zn+zq]ztUzvuzvvzz"z|=zG!zW;z]~z]}za*za)zj%zj&zz#zHLzO*zRuzRt{W<{W={\K{\H{\L{ \F{&\J{(\G{,\I{.\M{Fa-{Ia+{Ka2{`eh{gej{nei{uj*{wef{j1{j0{j){j.{j-{j({j+{j,{n4{j'{n-{n.{n0{j/{eg{n3{n/{n1{n2{q`{n5{q^{qb{t[{qc{qa{qe{qd{tY{tX|tV| tZ| tW|q_|vz|!v||#v{|'vx|*vy|+vw|7x]|8x[|Cz%|Lz$|Mz&|Pz{|l}%|n}&|r}K|sHM|}Rv|W>|\N|\P|\O|a5|a6|ek|el|em|j2|j3|j4|n6|##|qf|qg|ta|v}|z'|z(|HN|K7|O+}Ry}WF}WE}WG}+a;}9\U}<\V}Pa8}Ua:}[es}^a7}aa>}ba@}fa?}ha9}yeo}eq}er}ep}en}j7}nC}j:}j@}jC}jF}j;}jE}n?}n>}nB}n<}n9}nE}n8}nF}n:~qp~qi~qk~qn~qm~#ql~+ti~Rw%~Tv~~Uw!~Yw&~Zw#~^w"~aw$~sxd~yxa~|z+~}z*~z,~z}~z|~|A~|C~|B~}96HO8R~:WM=\_DttHw'Lz-P|dTO,UK8_WNieujevnetpjHrewunGwnHyqqxeWO\a\`ezeyexnIqrxfxhxgz~HQS"WQWP\b\c\daDaEnJquqsqttuw(w)tv\e&nK(qv3HV6S&=WX?WYF\gJ\fRaGVe{Xe|ZjM^jLK:K9KK=K;O4O2O1O9O3K?O7O0S*S+S,S/S'S-S1S(WaWfWdW[W]W`Wc We\i#\j$\n)\l+\k/\h0\m9aN>aPFaOKaKLaQNaMef$ff*kf'nf%jTjPjUjRjSjQnOqyqxqwt~t|u%w,w-xiz/{p|DH[O:jVu'H\WiWhH]S3WkaTjY"S4Gf,Kj[Xq|Yq}fz0w|l~HdKBKCKAO?O>OBOIOFS@SISA S>W~(X#+Wq@X!CX$IWwJWtOWzPWvRWrTWsw]#x\w{]$|]%]&]!\}\t\|\~\y\v\u]"\x]'\{\za]a[ahaeanalaoaZaVaXafaWakam,e\1f05f88aiu=u7u;u?u@u8u:w:w8w7w9xtxqxuxr xsz9z:1|G6|f9|g;}'@HfLHgMSOS]4WayYfL[nl]nmhOPkSPpX.wX/yX3}X2X0X1]6];]:]8]9]5]7a|aza{fTfVfNfUfQfOfPfRfMfSj|j~jvjxjzjyj{jwno nsnnnpnqnrj}!r4%r2*r0+r32r16uB8uD;uA=uEDuCVxxdz;j{(l{)o{rr{qHiSQa}w;KD]=]-]C1]B4b+6b-Ab&Fb*Pb)[b(^b$`b"bffcfaff\yfi{fj|f`fdf_k"k%k-k'nxk,k.k#o!n{o$o%ntn~n}nwnvn|nyo#nuo"o&rr:rD uKuGuOuHuIuJuM uL(w>+wA,w@9w?AxzFy#Ix}Ny!Oy"_zBfz@kzClz?ozApz>t{+w{,}{-{t|H|j|i|k}4}:7KG?uQAuPFKHHX?I]GLo'No(PwBT}CUKIZ]Hab/bfmsuRyXAzX@b0rIb1o2o3o.o/rJwCy% y& zEzD{.{u{v|mdKKf]Pg]Okk6mo5pKLsSYtSXwXDb?b>b=k8k7o6o7uXKMSZ]R]QbGbBbEb@bDbCbFbAfyfxg!g"fzf~f{f|f}k9o<o9)o=+o81rL4rM5rP9rOBrNDrKUwIYwD_wHcwEdwGfwFly+ry(ty-vy*zy,|y'zGzIzH{w{x})g#oAwJXFXG]S]TbIbHbJg&g$ g% g'%oJ&oF)oE*oG/rR3rT8rS;rQ>u^?uaBu_Du]Eu`IwKMwLNy/Ty._{2a{yKPbKg(k>rVrUOROTOSS]XOXLXSXNXQXMXJXPXRXK ]V]`]\.bL1bN2bP5bM6bQ8bOg7Ag8Bg-Gg2hoMioKmoNnoLrrZXTKXK[KZKYOWOUOXOVShSiSfSgXVXUXW]e]fbS]gbUbR bTg9kJ'oR-oQ0oP1oS4r]9uhRXXW]hcbVebWig=jgy6y:y;y7y5y=y@yBzNzMzL+{;.{52{:3{65{78{9:{8D{{Q{|R{}`|Lc|Kd|Mj|op},r}+w}5wO[O\SmX`]pbdgPodoerou~w`yCzO{<O]!Hj*Kb,Kc.K`1Ka2K_;O`?O_@O^BObDOaPSnXXg[Xdj]ql]y}blgRgSrprqrrv!yDv"OcXikersv#wdwewcwfwbyEbwbxg[gXgZgYkfofogoh oirvv$v%$wg'yG*yF0zP2{?8{=9{>={~>|!B|pD|rH|qROeVg\[rz\r{fr|h|NiSstg]vg^|kgkholokomr}v&whwiwj|#|"|s}6Stbyv'yISuSvkiwkyJkjkkop!on$s&+oo-s$0r~Fv(SwpXyL[yM^yKe{Bg{Ak|$Sxklkmoqv)wqyNzQSySzXjb}c"b~c$c!c#gfknko kq or kps'otosous,s*s)!s+(s(.wu5v*EyOIyPQzSRzRU|%W{C\|P^}.S{S|wvzTgjgigkkro{o}oyovoxs.s-s/v,v+wwyQyR+zU0zV5zX7zW>{G@{FC{EE{DM|'U|&W|SZ|Q[|R_|ub}7e}8j}GXlkskto~s0s1wxglkus2wywz yS|)"|v#}0%Xn'p#(s41}H2Xo|,I|*T|WV|YW|X_|xw}@x}A^$gmkzkxkyp*p( p)s:s6s;#s7&s8(s9;v1?v2Qx%]x&`x'ayYjy[ly\ryZyX{M{N{P{O|.|/|Z|y|z}E}I}Ju^%yz[||{}||^&gnv3y]y_y^{Q|[^'p+y`z\^(k{p,c's=sv9Jk}Kv:Rp/\{T_z_azacz`f{Ug{Vj|2l|1r}!w|~s>x2|3s?"f"g"d} z`!i!p!y!!!" ")"+"$!$`$i$t$}$m%s% %%%%!@&B&%00(00,0)0:1)1G33lNNoKNSN]N_NNNNNNNNNNN OOFOHOMO`OOOOOOOOO PP%P-PtPwPPP;QMQ YQnQ uQxQ6QQ:QQ=R RB$R*RG6R;RNJRNRT[R]RYRR\RR`RRdSSv>SJS{QSTSnS{SSSSSTTT T)T.T5TCTsT}TTTTTTTUUWUUUUU UUUUUU$UU).V6V1dVlV:VVCVVFVVIVVN,W0WUMWQWZ/X5X_JXLXfYYi'Y.YrGYIYzNYZY}YYYYYYZZZZ[ [P[_[[[[[[[[[[[[[\\7\A\K\Q\]]]] 6^8^_^c^r^~^^^&^^)^^-^^0__5i_q_<__E__H__V__Y__```d%`+`ib`p`p```````` aaaaGaNauawaaaab bb0b6b>bAbGbTbmbob|bbbbbbbb bc c c LcPc# gckc( cc- dd: xd{d? ddC ddN ddb *e,ek TeYen texet eey ee~ ff $f(f AfEf nfpf ff ff ff fg &g.g NgWg \g`g mgwg gg gg lBl0 [lal5 }ll< llM ll[ ll` llf 'm+mm 5m>mr wmym| mm mm mm mm mm mm n&n nn no oo )o,o /o3o mopo oo oo oo pp dqiq qq qq 5r>r FrHr ]rbr rr ws{s 3t6t Yt_t tt tt %u3u KuOu* Yu]u/ uu4 uu8 uu? uvD v)vG {v~vR vvV vv[ vvh 6w>wu awlw~ ww ww ww ww *y,y FyIy UyWy ]y`y yy yy yy z z ;z@z KzNz `zbz zz M{V{ =|@| _|e| || } } }"} .}3} @}F} n}s} }} }} }}& ~ ~/ .~H~2 i~m~M R Y \ c k owp }y | ڀހ PU pz Á    (, 59 nr тԂ ۂ߂  19  im Ʉ˄ HJ hj " ' [_, y{1  4 #= acB ^`E H :>U TVZ hs] i t X\ jm ʌ ьӌ ތ挹 " HK ʎώ   Ə #Jct,JHMMtxSőёXבݑe7@lv "y|֓ؓ|ȕ̕ԕ֕KM]dpx͖ ^b7;LOoq=?Йҙ Ϛؚ AEMQ$țʛ)̞ў,۞20D8IkM%?%@%A%B%C%D%E%F%+$,$-$.$/$0$1$2$3$4$5&6&7&8&9&:&;&<&=&>&X"U"W"V"Y"Z"\"["<"I"H"E"F"M"!B"B#B$B%B&B'B(B)B*B+B,B-B.B/B0B1B2B3B4B5B6B7B8B9B:B;BB?B@BAB!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&@#A#C#B#L#M#N#$#%#&#'#(#)#*#+#2#1#0#/#.#-#,#H#I#K#J#Q"S"R"!!#!$!q!R!S!N!O!V!W!Z![!J!K!e"F!G!h!i!5$6$7$8$9$:$;$<$=$G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%p"q"r"7D5D8D6DbDaD`DbEaE`EcE_EfDeEgEfE$G%G&D?D>DiDkDlDjDiKgOADmD(G*G)GlHjKkKhOiOoDnDpDvDqDrDtDuDsDjEkElEmEiEpEnEoEhE,G.G;G0G3G1G2G~HoH)ImH%InHvHwH|HtHpH'I*IsH"I(IqH#IkOsO!P{OrOzO}OpOyOoOqO~OuOnOjO?T6T!T"T$Y/T.T2T)T8T7T-T&T%T3T(TT;T!Y~X{X"Y/^0^,^1^X{W{*DBDxDwDsErE>G=G?GIOIPIQINILIMISI@ITIHIEI@LALNLGLCLFLKLTLPDP:PWTbTRT\TaT]T`TCYAYMY>^D^J^CaH^U^A^I^C^W^P^E^B^M^F^V^R^L^S^O^K^LcMcEcOcKcGcHcNcBc!#@c1l=l>l4l6lpApF`G_G^GeGdGfGbG`IbIeIdI^IY^]^^^[^YY[c^cYcgzJD@FhGiG_LKD2E4E3E5EAFaLbL`LXPWPYPVPdLUPoTpTqTrGqGnGlGmIqItIlLjLsLoLgLecdccc`cgcJhIhKhMlHlJlLlMDNDOD6EEFsGtGwIxIvIuIuLwGuGvGxGzIyIxLzL|LyL}L{LjPgPiPkPhP$U&U(U%U*U)UmYlYkYoYjYNhVhPhThUhQhRhOhShPlQlOlNlQprYqYpYq^r^WhRpQD7ESsSDgD9EGF"J!J}I~IpPoPmPnP.U,UVK%ZVDJFIFHFWDXDYD;E'Z)Z&ZWlXlVl\h[DMF!H~G1MlcE?EQFPF3Z)]4Z2Z%_dh`l=M;MJKJXMpMhMbMVMaMWMiMrMfM\M_M`MnMoMmMgMkM]M8QDQQCQAQSUFQ;Q?QEQUU=QHQ@QTU:QeUdUVU\U_U[ZoZnZcZTZhZXZ>_YZUZdZ_Z]ZiZ*d3d6d7duhylwh|h$m(m*m'm&m~l{l-mapbpkphp_pfpdp^pepds`pgpcsislsgsjsEvDv9|8|_|zZyZrZuZxZtZlp.m/m0m!["[#[~ZJEYF/H.H0H1HxMwM!NVQNQQQTQrUkUnUqU[___\_>d?d=d@dN%qWvPE;HuQ\dRETEbFaF@N4V8V7V5V6VG[*`(`)`fFeFdFeJEH=HfJ@HAHDHuJxJhJ!KvJkJzJiJjJqJ|JPNRNYNKNINJNXNSNQNVNONNN`NUNaNZNLNBNGN^N9VWNDN)R+R-R{Q1R/R'R,R*R$R%R&R@V?VKVLV=ViHiUiFi?i=iOiAiSiPiDiQiKiMit$\GqOxg{kFi`j`nFoF-K,KJRpFqFrFsFNRLRMRKRgVfVeVdVRRSRPRQRqVoVnVmVhV8e;e:e?e>e=e7e9enmlmqmrmompmkimmt`u`uFKH{NURVRWR|NZR[RYRXRtVuVvV6\y`@eAepiqiumNqMq:\7\;\<\9\8\uiMeFeKeDeLeHeCeIePqQqOqnvovlvmv3}yFdR{`NeLt}y!z~yiRlRkRjR)W-W0W/W.W,W+W~i|i}imRnR]e}F5K4K3K3W2W6W4W7W^ecebe`e*n&n(n%n'n\q[qXqYqtvrvsvE\(a'a&a1a3a.a4a/a0a,a\xYxZx^xm{l{?|>|@|]tbt^t`t\t_twR|RxR}R{RzRBWAWJW@WKWHWLWIWCW?WDWT\[\X\^\]\Y\W\\\R\Z\Q\j=jf@fLSNSMSHfIfJfDfCfKf'{&{%{${/rh|hHyxwxvx7X6X=X5X>X;X8Xo?o;o[uYu\uZu)yFz/{1{0{;}NKEXOKQO\S[SHX;k=k:kgKz^KlSi]XbRwZO]X[X_X^X\X?gAgMgBgDgNgCgsunrhr_rkrdrSwUw]w[w\w}D}hbcbebgbfbbb[k^k`k_k\k]k}uzu{u|u^waw_woSpSqSeXhXcXaXbXfXu]pbs]v]r]w]x]t]qbmbnbibkbobjbQgakckbkz]rbtbsbubvbVgWgUgdkTgdO|]{]wrtryrurxrfOjoHyrS@{wS!^"^zb{b|bbgdg_g`gcgag#s!s%s"snwlwowmwO|t|-}eggghgtwrwswkX&c%cwozo|oH{V|(|T|U|/}mX3s!p"pvkwk%p$p}w|w{wJ{/v.v0v-v#x!x~w1}(c-p4v)c8v6v7v5v(x+!6!8!@!A!D!E!H!I!L!M!P!Q!T!U!X!Y!\!]!'"("+",")"*".!/!0!2!3!4!5!^!_!`!a!b!c!-"."/"?"@"A"C"B"b"l"m"n"*!l!c"h"m!>!?!n!0""!1"%!_"!$"$#$$$%$&$'$($)$*$(!'!6"8"7")!i"A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$`"%"[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t$B!^"C!p!x"4"1!2"3"l% 9! 7! ]" d! e! f! g!% -!& ,!2 j!5 k!; o!> #"!j"!"" !k""a""5"."N"4"P"5"O"<"D"R"="`";"a">"f"9"g":""G""J"%9#%:# %<#%=#%>#%?#%7#$%6#,%5#4%4#<%3#P%D#^%E#a%G#j%F#%8#%;#%|!%{!%u!%t!%~!%}!%z!%y!%r!%v!%s!&x!&w! &T"0&!2!"3u"3v"3t"3w"3s"3L"3K"3o"N!DN#DN$DN"GN#G&NdK+N9D-NcD0NdD2NkH8N:D9NeD;NdECN%DENc1S$h9S(EWS2PZS;^\S3D^S,E`S'FaS&FfS9LSNTS-ES4PSPTSOTS<^S%hS0lS*FS6YS>LS=LS?LS5PSQTS3FS=FS2FTTGTZGTVG&TAI'TCI1TUI3TFIFTDIHTGIJTKINTBIbTQLhTRLqTMLTELTHLTJLTSLTOLTULTLLTILTDLTBLTPLTEPTGPT=PT;PTHPT9PT^TTXTTZTTVTTeTUTTUYTUdT U_TUfTUSTU[T'UcT,UIY.UGY/UDY1U@Y3UKY7UUT8UFY>UN^AULYCU>YDU;YFU8YJU?YOUBY\UHY^UWcI@W_IGWaIJW]IaW[LdW]LfW\LiWZLjWYLwWXL|W^LWMPWWLWNPWTPWOPWQPWPPWSPWiTWlTWkTWRPWjTWQYWUYWVYWZYW[YWWYXXYXRYXTY XmT XSYX`^ Xa^!X_^$X\^*XZ^QXScRX]cTXWcWXUcXXTcZXVc^XRcbX\ckXXcmXZcuX8hyX=h}X?h~X9hX?lX:hX>hXvX.xX/xX0xXfyX^|XIDX1EXgIXb^Xc^X@hYnT Y\Y"YBh$YCh%YAh1YBF7YjG8YkG>YhIDYcL`Yd^bY]YgY_ciYEhjYDhmYGlnYMpsYLDtYCFvYDFxYmGyYpG}YoGYsIYpIYjIYrIYoIYnIYiIYlIYkIYiLYqLYrLYhLYfLYeLYtLYkLYpLYnLYmLY[PYbPYZPY]PY`PYcPY^PYaPYxTYePY\PZdPZ_P Z~T Z}TZrTZwTZsTZvTZtTZuT ZyT#ZzT%Z|T)Z{T6Z^YU5_/Z7_0Z<_$_F_chH__lJ_SpL_ZsN__{W_1ZY_pc^_Avb_0Jd_/Je_}Pw_1Jy_2J|_>M_;Z_7Z_:Z_9Z_bl_al_eh_[s_@E_RF_4J_6J_?M_@M_:J_8J_7J_BM_9J_AM_CM`+Q`DM`OM`(Q `)Q!`KM/`FM5`GMC`2QF`1QM`-QP`EUU`FUY`BU`Z`OU`MU`NU`QU`LU`KU`?Z`=Z`@Z`AZ`)_`KZ`JZ`OZ`HZ`CZa:_azca&da{c a9_a;_a1_avc#a/_'a$d4a#d7a'd>a"d?aghDa~cUaglXanhZamh]afl_alhbajhcakhgadlha5_kaklnaelpajl|ail~allahlaWpaplanlaUpatlarlaslamlaVpaolaqlaulaTpaYpaZpa]saBva_sa4xbAEbQZbRZb<_!b(d"b)d*bph.bvlXb,H[b+Hcb*HsbHJvbAJybGJb=JbPJbBJbDJbcMb^MbqMblMbjMb[MbeMbdMbYMbZMbBQcGQc9Q(ccU*caU+cbU/cXU:c^U=c`U>cWUBcZUFc[UIc]UUcYUqc^ZrcVZvcM_wcZZzcpZ{cmZclZcaZceZcfZc`Zc?_ckZcjZcWZc\ZcgZcbZcA_cD_cC_cE_c@_cH_cF_cJ_cR_cP_cI_cG_cB_cO_cK_cL_cN_cS_d8d d4dd1dd2dd,d*d-d,d0d-d.d4dzh6d5d=d/d>d+dQdxhRdQ_TdshXdrh_dvhgdyhidwlmd{hodxldqhd|ld}ld%md"md#md+md)mdzld,mdthd!mdipdjpdesdcpdfsdksdhsdJvdHvdIvdFve8xeGve9xeoyenyepyemzelz#e7|$ea{/eEE6e-H8eSJ9eQJ;eRJ>esM?eIQEeJQHefUIegUOewZQesZ]eqZ^eT_beV_ceW_feU_le9dre}hemsenseFEeY_eX_enzeGEehUe|Ze{Ze:de~heHEeXFetMeKQe}ZeZ_e;deKveIEeuMeLQeiUejUe"ie!ieMQeTJevMf}Mf{MfzMf#N f"N fyMf|Mf~MfSQ fPQ-fOQ/fRQ1fUQIflULfpUOfmURfoUZf%[]f$[^f)[df&[ff([hf'[tf]_vf^_wfc_zfa_~fb_fAdfCdf`_f%if#if$if2mf1mf4mf3mfrpfopfppfmpfqpfnpfpsfosfLvf;xf:xfqyfozf:|gDdgLE g4H g%N g$NgtUguUgvUg,[gg_gf_1g7H4g6H5g8H=g5HFg_JIg^Jjg:N|g9N~g4Ng2Ng-Ng3Ng'Ng5Ng8Ng(Ng/Ng7Ng*Ng.Ng_QglQgeQg^QghQgcQgmQgfQgoQgjQgnQggQgaQg]QgbQgXQh.Vh#Vh/V!hwU)h!V*h,V8hxU9h|ULh$Vvh3[h0[h=[h6[h>[h@[hA[h/[h5[h?[h9[h{_hv_hw_hs_hi_hl_hk_h|_hn_hj_hu_hq_hp_ht_ho_im_ ix_iz_iy_0iLdJiNdSiRdTiJdciVdhiOdkiPdmiFdni}_uiKdwiHdyiSdiMdiTdiEdi(ii-ii&ii8ii6ii'ii0ii4ii*ii1ii.ii/ii)ii7ii2ii+ii7miBmi?mi;mj8mj@mjAm j>mjCmj=mj:mj9mj6m!jxjvsj=xjk!`GkXdIk9iLk:iNkEmPkDmYk$q\k|sjkqQrkYdk?NkrQksQk2Vk1Vk%`k$`kFmk}skXvkszktQk3VkD[k&`k[dkZdkGmkHmkQEk`FkdJkvQk~skSEkE[kF[k'`k]dl&ql!tlHYl?HhlrJjlmJplpJrlwJtlyJvl{JzlnJloJltJl}JlsJl~JlgJllJlMNl]NlTNlENlHNlxQl\NlFNl[Nl_NlCN myQ m~Qm0Rm#Rm(Rm"R%m}Q.m.R1m!R2mzQAm|QYmAVZmFVemMVfm>VimHVjm:VlmCVnmEVtmGVmj[mW[mU[mL[m`[mZ[mI[ml[mT[mN[mV[m^[mX[mM[mO[mm[me[mJ[m\[nR[,nA`-n;`/n+`2n/`4n>`8n,`:n@`>nD`CnB`DnJ`Jn1`Mn?`NnH`Tn-`Vn9`Xn7`[n6`_nM`cnI`gn0`inL`nn:`on=`rnK`nF`ncdnmdnhdnndnddn^dngdnrdnqdnkdn_dnsdnadnjdnidnbdnodnfdnednE`nWinTinIinVin@inXioJioEi oCi"oGi#oNi8oLi>oBi?oImQoLmToNmXoYm[oQm_o]m`o\mdoWmfoMmxoRmzoUm|oJmo*toKmoOmoRioTmoXmo3qo)qo+qo2qo-qo(qo.qo4qo1qo0qo.to"to&to'to-to]vo[vp\v pYv pZvp_vp^vpExpFxpCxp@xpDxpAx(pBx0puy2pvy>ptyLptzQpd{Xpe{^p`|cp$}dp2}kpVEppHHvp"Kxp%K|p#K}p$KpeNpcNpdNpbNpfNp:Rp4Rp8Rp3RpSVpOVpTVpPVpRVpQVpr[pn[pq[ qo[ qp[qN`qO`qU`!qR`&qP`0qQ`6qS`Fq"eIqxdLq}dNqtdVq$eYqud\qzd^q!elq{dnqT`}q[iq]iq\iq^iqYiqZiq^mqamq_mq`mq;qq5qq?qq@qq9qq6qqqq2tq9tq8tqcvq`vqavqbvrGx rHxrwyruz(rF}*rWE,rgN-rhN0r;RLrV`Rr&eVrbmXrIxYr[E[r\EgrkNirlNor=RrrRyrVV}rt[rX`ru[rW`r`iraircmrJxrvzr]ErgFrmNr*Kr)KrnNrqNrpNroNr@RrARr?Rsy[sx[sz[sw[sv[%sZ`)s\`4s[`6sY`7s'e>s*e?s)eDsbiEs(eNsdmPsciWsemhsAqps\Nx?\]x|`kx=\lx}`ox~`|xUexXexTexSexOexVexWexQexRexwix{ixxixzixPexyix}mx#nx!nxvix|mx~mx{mx$nx"nxTqxVqxSqxUqxPtxOtxMtxNtyQtypvyUx&y|y:y|F>y#O@y$OAy%OPy*WZy1Wey@\hyA\myB\zyYeyZey[eyWqyRtyStyqvyVxyk{y'Oy&OyqRyoRypRy8Wy5WyC\z%az$az"a z#a z!azaez_e.z!j1z"j7z)nFzZqWzTtizXxkzWxtz~Fvz6Kyz)Ozz(OzrRzsRz9Wz:WzD\zdezeez$jz#jz,nz+nz]qzUtzuvzvvz"zz=|z!Gz;Wz~]z}]z*az)az%jz&jz#zzLHz*OzuRztR{W|N\|P\|O\|5a|6a|ke|le|me|2j|3j|4j|6n|##|fq|gq|at|}v|'z|(z|NH|7K|+O}yR}FW}EW}GW+};a9}U\<}V\P}8aU}:a[}se^}7aa}>ab}@af}?ah}9ay}oe}qe}re}pe}ne}7j}Cn}:j}@j}Cj}Fj};j}Ej}?n}>n}Bn}K=K;K4O2O1O9O3O?K7O0OÀ*SĀ+S̀,S΀/Sր'S-S1S(SaWfWdW[W]W`WcW eWi\#j\$n\)l\+k\/h\0m\9Na>PaFOaKKaLQaNMae$ff*fk'fn%fTjPjUjRjSjQjOnyqxqwq~tƁ|tɁ%ú,wρ-w؁ixځ/z߁p{D|[H:OVj'u\HiWhW]H3SkWTaYj"4SG,fK[jX|qY}qf0zwl|~dHBKCKAK?O>OBOIOFOׂ@SISAS >S~W(#X+qW@!XC$XIwWJtWOzWPvWRrWTsWw#]xw\{$]|%]&]!]}\t\|\~\y\v\u\"]x\']{\z\]aŃ[aʃhãeaԃna܃la߃oaZaVaXafaWakama,\e10f58f8ia<7f=/fF=fI4fWaa[6fa9fc:ff2fu1fw.f-fhj`jcjajbjejij]jfjĄ_jƄ^jфjjӄgj]nUn_n`nYnXn\nRnTn![n#Zn%^n,Vn-Wn=SnC%rY!r^)rm'r~,u+u2u4u.u/u1u-u0u4w6w5wɅ3wͅ1wυ/wЅ2wՅmx݅kxnxoxjxlx5z7z 8z 6z3z!{#{-"{8E|?F|NMOPKST%XU(]g6ukeHqNO&X+X(X-X,X)X*X'X2]1].],]+]Ć-]Ɔ/]dž*]Ɇ3]ˆ0]ІwaԆtaنraۆuaކxa߆qavasaAfGfFfEfBfrjmj"oj%pj)uj4qj7tj;nj?ljLjnSknUsjWinYhn`dnfenhgntbnvcnxfnan*r.r,r+r-ru=u7uƇ;uȇ?uˇ@uч8u҇:u:w8w7w9wtxqxuxrx sx9z:z1G|6f|9g|;'}@fHLgHMOSS4]WyaYLf[ln]mnhPOkPSp.Xw/Xy3X}2X0X1X6];]:]8]9]5]7]|azaˆ{aʈTf҈VfԈNfՈUf؈QfوOf܈Pf݈Rf߈MfSf|j~jvjxjzjyj{jwjon snnnpnqnrn}j!4r%2r*0r+3r21r6Bu8Du;Au=EuDCuVxxd;zj({l){or{rq{iHQS}a;wDK=]<]~aWf6r5rFu]-C]1B]4+b6-bA&bF*bP)b[(b^$b`"bbffcaff\fyif{jf|`fdf_f"k%k-k'kxn,k.k#k!o{n$o%otn~nŠ}nĊwnNJvnɊ|nˊyn͊#oҊun֊"oۊ&o܊r:rDr KuGuOuHuIuJuMu Lu(>w+Aw,@w9?wAzxF#yI}xN!yO"y_Bzf@zkCzl?zoAzp>zt+{w,{}-{t{H|j|i|k|4}:}7GK?QuAPuFHKH?XIG]L'oN(oPBwTC}UIKZH]a/bbmfsRuyAXz@X0bIr1b܌2o3o.o/oJrCw%y &y EzDz.{u{v{m|dKKfP]gO]k6km5opLKsYStXSwDX?b>b=b8k7k6o7oXuMKZSR]Q]ƍGbˍBb̍Eb΍@bэDbڍCbۍFbݍAbߍyfxf!g"gzf~f{f|f}f9k^u?auB_uD]uE`uIKwMLwN/yT.y_2{ay{PKKb(g>kVrUrΏROяTOԏSO]SOXLXSXNXQXMXJXPXRXKX V]`]\].Lb1Nb2Pb5Mb6Qb8Ob7gA8gB-gG2ghMoiKomNonLorZrTXXK[KZKYKWOUOXOVOhSÐiSʐfSΐgSݐVXUXWXe]f]Sbg]UbRb Tb9gJk'Ro-Qo0Po1So4]r9huRXXWh]cVbeWbi=gjyѓ6yܓ:yݓ;yߓ7y5y=y@yByNzMzLz+;{.5{2:{36{57{89{:8{D{{Q|{R}{`L|cK|dM|jo|p,}r+}w5}w[O\OmS`Xp]dbPgdoeoorƕ~uЕ`wܕCyOz<{]O!jH*bK,cK.`K1aK2_K;`O?_O@^OBbODaOPnSXgX[dXjq]ly]}lbRgSgprqrrr!vDy"vcOiXҖekՖsr֖#vٖdwۖewܖcwޖfwbwEywbxb[gXgZgYgfkfogoho iovr$v%v$gw'Gy*Fy0Pz2?{8={9>{=~{>!|Bp|Dr|Hq|ReOV\g[zr\{rf|rhN|isSt]gv^g|gkhklokomo}r&vhwiwjw#|×"|Ɨs|ɗ6}˗tS̗ybӗ'vܗIyuSvSikkwJyjkkkpo!no$&s+oo-$s0~rF(vSpwXLy[My^KyeB{gA{k$|xSlkmkqo)vqwNyĘQzۘySߘzSjX}b"c~b$c!c#cfgnkok qk ro pk'stosouo,s*s)s!+s((s.uw5*vEOyIPyQSzRRzU%|WC{\P|^.}{S|SvwTzjgigkgrkՙ{oٙ}oۙyoݙvoߙxo.s-s/s,v+vwwQyRy+Uz0Vz5Xz7Wz>G{@F{CE{ED{M'|U&|WS|ZQ|[R|_u|b7}e8}jG}lXsktk~o0s1sxwlguk2sywzw Sy)|"v|#0}%nX'#p(4s1H}2oX,|I*|TW|VY|WX|_x|w@}xA}$^mgzkxkyk*p(p )p:s6s;s#7s&8s(9s;1v?2vQ%x]&x`'xaYyj[yl\yrZyXyM{N{P{O{ӝ.|ם/|Z|y|z|E}I}J}u%^y[z|{|}||&^ng3v]y_y^yQ{[|'^+p`y\z(^{k,pÞ'cԞ=s؞9vJ}kK:vR/p\T{__zaazc`zfU{gV{j2|l1|r!}w~|>s2x3|?sf"g"d"  !"#$%&'()*+,-./0123456789:;<=>?@A0 0000 & %PQRTUVW1 2  56[]78009:00;<0 0 =>00 ?@0 0 AB00CDYZ[\]^    00 2 5 ;0%%%%%&&%%%%%%2! >?IJMNKL_`a ""f"g"`""R"abcdfe"<")"*"" ""33"+"."5"4&@&B&A& !!!!!!!! \<"h0 !! ijk333333333QYQ[Q^Q]QaQcUt|%%%%%%%%%%%%%%%%<%4%,%$%%%%%% %%%%m%n%p%o%P%^%j%a%%%%%q%r%s!`!a!b!c!d!e!f!g!h!i0!0"0#0$0%0&0'0(0)SD!"#$%&'()*+,-./0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ11111 1 1 1 1 1111111111111111111 1!1"1#1$1%1&1'1(1)$`$a$b$c$d$e$f$g$h$i$t$u$v$w$x$y$z${$|$}!p!q!r!s!t!u!v!w!x!y$$$$$$$$$$ $ $ $ $ $$$$$$$$$$$$$$$$$$$!NNYNNNCN]NNNQ?QeQkQRRRSSAS\SN N NN N+N8QNENHN_N^NNQ@RRSCSSWXYY'Ys[P[Q[S[\\"\8\q]]]]]]^r^_ _bMNNN N-N0N9NK\9NNNNNNNNNNNNNNNQCQAQgQmQnQlQQRRRRRRSS9SHSGSES^SSSSXY)Y+Y*Y-[T\\$\:\o]^{^___bb6bKbNe/eeeeefgg(k kbkykkkll4pkr*r6r;rGrYr[rsNNNNNN;NMNONNNNNNNNNNNNQEQDQQQQQQR RRSSSSNSJSISaS`SoSnSSSSSSSSSSSSSSSSSSSSVVYY.Y1YtYv[U[\<]]]^^^s^|____b bSbTbRbQeeg.g,g*g+g-kcklll8lAl@l>rssttuuu(u)u0u1u2u3uv}vvvwwwy:yztzNNNRNSNiNNNNNO OO OO OOONNNNNNOO QIQGQFQHQhQqQQRRRRRRSS!S SpSqT TT T TTT TTT TTTTTVVVW3W0W(W-W,W/W)YYY7Y8YYxYY}YyYY[W[X[[[[[\\y]^^v^t____bb b bbcb[bXe6eeeeffg g=g4g1g5k!kdk{ll]lWlYl_l`lPlUlal[lMlNppr_r]v~z|s|6 3 nr~k@Lc!N2NOMOOOGOWO^O4O[OUO0OPOQO=O:O8OCOTOT&TNT'TFTCT3THTBTT)TJT9T;T8T.T5T6T TWPWOW;XY>YYYYYYYYYYYY[][\[Z[[[[[\,\@\A\?\>\\\\]^ ^^^^___d_b_w_y________bbbbbbbvbbmbb|b~bybsbbobbnbbbbe9e;e8efg_gNgOgPgQg\gVg^gIgFg`gSgWkeklBl^llllllljlzllpllhlll}llrl~ltllvllllpvp|p}pxrbrar`rrsu,u+u7u8vvwyyyzv|UoҊ7FUdpʏƏŏ]ᐑIƑ̖2.1*,N&NVNsNNNNNOoOOOsOOlOOOOOpOuOOiO{OO~OOOzQTQRQUQiQwQvQxQQR;R8R7R:R0R.R6RARRSRSTSSSQSfSwSxSySSSTsTuTTxTTT{TwTTTT|TTqTvTTTbThTT}TVWWwWjWiWaWfWdW|YYIYGYHYDYTYYYYYYYYYYYYYYYY[_[d[c[[[[[[\\H\E\F\\\\\\\^^^^^^^x^^^^^^_&_'_)____|_____```/`5``*``!`'`)`+`bbb?b>b@bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbe>eeefff fffffff fg g gmgggqggsgwggggogpggg~gguggg|gjgrk#kfkgkllllllllllllllllllllllllllllllllllpppppr,r-r8rHrgrirrrrrsssssu=uuuvvvvwwy>y@yAyyzzzyz|T NqRhˏΏԏѐǑѕw@?;DBR^NNNOOOOOOOOOOOOOOOOOOOOOOQWQQQRNRCRJRMRLRKRGRRRRS SWS{SSTTTTTTTTTTTTTTTTTTTTTTVWWWWWWWWYUYQYOYNYPYYYYYZYYYYZY[i[[[[[\\N\O\M\K\\]^^%^^}^^^__-_e_______``` `%``(`M`p`h`b`F`C`l`k`j`dbAbcc bbcbbcbbbbbbcce?eEeeef%f-f f'f/ff(f1f$fgggggggggggggggggggggggggkjkkkkkllm m2m*mAm%m m1mmm;m=m>m6mlm9m'm8m)m.m5mm+pppppppppr0rrrortrrrsssssssuu-uOuLuNuKuuuuuvxvvvvvvvwvvw w vvwwxxx x yFyIyHyGyyyyyzzzz|}}}}} }}}8 6րڀÀĀ̀ۀ΀ހ݁"ۂ ҂ׂ܂Ԃтނӂ߂Py{zMkԊts͎̏ʐΐÑKJ͕PKLMbi˗ۘߙNXNP P P#OP&P%OP)PPPc/cUcBcFcOcIc:cPc=c*c+c(cMcLeHeIeeefBfIfOfCfRfLfEfAfgggh!h8hHhFhSh9hBhTh)hhhLhQh=ghPh@hSfUFUjUfUDU^UaUCUJU1UVUOUUU/UdU8U.U\U,UcU3UAUWWW W WXX XWWWXX5WWY YbZ6ZAZIZfZjZ@ZwUUUUUU~UUUW X/X*X4X$X0X1X!XX XXY`ZwZZZZZ[s[q[[[[\ \ \1]L]P]4]G]^E^=^@^C^~^^^^_<_m___`````aa#`a```ah`a`a aabbIccccccccccccccccvcccdRcce^efebeceeefnfpftfvfoffzf~fwffgghhhhhihhhhhhhhhhi iihhinhk>k:k=kkkkl.l/l,n/n8nTn!n2ngnJn n%n#nn[nXn$nVnnn-n&non4nMn:n,nCnn>nnnnNncnDnrnin_qqq&q0q!q6qnqrLrrs6s%s4s)t:t*t3t"t%t5t6t4t/tt&t(u%u&ukujuuuuuuuv{v|vvvvwOwx]xlxoz zz zzzzzzz{I{V{F{P{R{T{M{K{O{Q||}^}P}h}U}+}n}r}a}f}b}p}sUՀ RUTKQN9F>LSt ń W ̃ʄ8܄ԃ߆[߆نԆۆІވWˆ;`U^a4a'a aa7b!b"dd>dd*d-d=d,dddd d6dddeleeffffffffgiimiZiwi`iTiui0iiJihiki^iSiyii]ici[kGkrkkkknnnnnnnnnnnnnnnnnnnnnnqNqYqiqdqIqgq\qlqfqLqeq^qFqhqVr:rRs7sEs?s>totZtUt_t^tAt?tYt[t\uvuxvuvuuuuuuvvw[wkwfw^wcwywjwlw\wewhwbwxxxxxxx|xxxyzyy,yzzz zzzzz{w{{`{n{g|||}}y}}}}[nijrVXqpxenskyzfGw=1ufkIl[<5acimF^\_ Y߈Ԉو܈؈݈ʈՈ҉krsfip|cqmbnly{>hbʌnjȌČ̌ōߍ掲 KJSBTAljiɒ7W8=@>[KdQ4IME9?Z͖˖ɖʖVtv  鞂 PPPPPPPPPPPPQbQRRS1SUVVVUVVV V VUVVVVUWWXuX~XXXXyXX}XY%Y"Y$YjYiZZZZZZZ[u[[[[[[[[[\ \b]]^[^c^U^W^T^^_ _F_p_aGa?aKawabaca_aZaXaub*ddXdTddxd_dzdQdgd4dmd{ereeefffiiiiiiiiiiiiiiiiiiikIkLl3o3onono)o>o o,ooo"nnoo1o8o2o#oo+o/oo*nonnnqqq}qqqr>rrsDsPtdtctjtptmuuv'v v v vvvww}wwaxxxxxxyyyz.z1zzzz{{{{u{{{{{{{|||}}}}}}}}}}}}}}}}}}}p߀^ZPKɄƄĄ˄ӄфʇ?;"%4U7)jӌьҍk`X\cY^b][uxwtx{|̖җ| AB󞼟;JQQPPPQQQ QQRRRRRRSV.V;V9V2V?V4V)VSVNVWVtV6V/V0XXXXXXXXYm[ Z[ Z[ [[[[[\d\e]]^b^_^a^^^^^^_H_q__avagana]aUaa|apaka~aaaaaaaaab.didodyddddddddddddddddddeuewexffffj#jijjjij!jj ijjijkPkNkkko?o|ooQofoToomo[oxonoozopodooXnooo`o_qqqqrVrsNsWtittt~tuv v)vv$v&v!v"vvvwwwwwxxxxxxxxz?z~F~7~2~C~+~=~1~E~A~4~9~H~5~?~/DqrposƁÁɁ q~gч҇Ƈȇˉ;6D8= A?sIKHJD>BE?}9M(uJeK~l[pZTʕ˕̕ȕ֗ӘF5;?Ϟޞܞݞ۟>KSVVXX[8_^ab3dddedddefg&jjjjjjjjk_kxkp p opoppqqqqswsuttuvVvXvRwwwwyyzazbz`zz|+|'|*||#|!|~T~U~^~Z~a~R~YHwv́ς υͅЅɅ(9,+PYcfd_UIMГԕ֕ЕՖܖٖۖޗ$MOLNS>?=.ONMɛțQ]`,Q3VVXXX[^aaaaeeffjjjjppp(pppprr rXrsxsztttuuv_vawyyzkzi|>|?|8|=|7|@~k~m~y~i~j~s؅݅Յ `_V^A\XIZNOFY |rvlztTNѓߓÓȓܓݓ͓֓ؓדܖ*'aܗ^X[EI ֛۝arjlRVVVVX[@[C[}[]aaeeefg'jp>p0p2rs{tvbvey&y*y,y+zz|L|C|M||~}~|~Lڂf  dplfo_k ˔0ęRQ+075 y/_caQ7Q8VVVY\l]aaeeefjkjkpLrrttviw|P~~-#"!jltw}_.35:82+892geWEC@>ϛTQ-%\fgQ×kUUMқI1>;ӝן4ljV]be#e+e*fktz|d|c|e~~~8?1c`dho\Z[WӚԚќTWV垟VXe,p^vqvrwP69bwjBHDƘp_"X_|}wr^kpc|l|n;rpq^֛#pdwڋwɚbe~Ŕ}~|wxTr(j1|r  !"#$%&'()*+,-./0123456789:;<=>?@A0 0000& % PQRTUVW1 2  56[]78009:00;< 0 0=>0 0?@ 0 0AB00CDYZ[\]^    002 5  ; 0%%%%%&&%%%%%%2!> ?IJMNKL_`a "f"g"`""R"a"bcdfe<")"*"" """33+"."5"4"@&B&A& &!!!!!!!! \<"h0 ! !ijk333333333YQ[Q^Q]QaQcQUt|%%%%%%%%%%%%%%%<%4%,%$%%%%%% %%%%m%n%p%o%P%^%j%a%%%%%q%r%s%`!a!b!c!d!e!f!g!h!i!!0"0#0$0%0&0'0(0)0DS!"#$%&'()*+,-./0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ1111 1 1 1 1 1111111111111111111 1!1"1#1$1%1&1'1(1)1`$a$b$c$d$e$f$g$h$i$t$u$v$w$x$y$z${$|$}$p!q!r!s!t!u!v!w!x!y!$$$$$$$$$ $ $ $ $ $$$$$$$$$$$$$$$$$$$!$NYNNNCN]NNNN?QeQkQQRRRSAS\SS N NN N+N8NQENHN_N^NNN@QRRCSSSWXY'YsYP[Q[S[[\"\8\q\]]]]]]r^^ __MbNN N-N0N9NKN9\NNNNNNNNNNNNNNNCQAQgQmQnQlQQQRRRRRRS9SHSGSES^SSSSSX)Y+Y*Y-YT[\$\:\o\]{^^___b6bKbNb/eeeeeefg(g kbkykkkkl4lkp*r6r;rGrYr[rrsNNNNN;NMNONNNNNNNNNNNNNEQDQQQQQQQ RRRSSSSNJSISaS`SoSnSSSSSSSSSSSSSSSSSSSSSVVY.Y1YtYvYU[[<\]]]^^s^|^____ bSbTbRbQbee.g,g*g+g-gckkll8lAl@l>lrssttuu(u)u0u1u2u3uu}vvvvwww:yytzzNNRNSNiNNNNNN OO OO OOOONNNNNNO OIQGQFQHQhQqQQQRRRRRRS!S SpSqS TT T TTT TTT TTTTTTVVV3W0W(W-W,W/W)WYY7Y8YYxYY}YyYYYW[X[[[[[[\y\]^v^t^____b b bbcb[bXb6eeeeeff g=g4g1g5g!kdk{kl]lWlYl_l`lPlUlal[lMlNlpp_r]r~vzs||6 3 nr~k@Lc!2NNMOOOGOWO^O4O[OUO0OPOQO=O:O8OCOTOT&TNT'TFTCT3THTBTT)TJT9T;T8T.T5T6T TWPWOW;WX>YYYYYYYYYYYYY][\[Z[[[[[[,\@\A\?\>\\\\\] ^^^^^__d_b_w_y_________bbbbbbvbbmbb|b~bybsbbobbnbbbbb9e;e8eef_gNgOgPgQg\gVg^gIgFg`gSgWgekkBl^llllllljlzllpllhlll}llrl~ltllvlllllvp|p}pxpbrar`rrrs,u+u7u8uvvwyyyvz|Uo҉7FUdpʎƏŏď]IƑ̑2.1*,&NVNsNNNNNNoOOOsOOlOOOOOpOuOOiO{OO~OOOzOTQRQUQiQwQvQxQQQ;R8R7R:R0R.R6RARRRRSTSSSQSfSwSxSySSSSsTuTTxTTT{TwTTTT|TTqTvTTTbThTT}TTVWwWjWiWaWfWdW|WYIYGYHYDYTYYYYYYYYYYYYYYYYY_[d[c[[[[[[[\H\E\F\\\\\\\\^^^^^^x^^^^^^^&_'_)____|______``/`5``*``!`'`)`+``bb?b>b@bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb>eeeeff fffffff ff g gmgggqggsgwggggogpggg~gguggg|gjgrg#kfkgkkllllllllllllllllllllllllllllllllllppppp,r-r8rHrgrirrrrrrsssss=uuuuvvvvww>y@yAyyyzzyzz|T NqRhˎΏԏяǑёw@?;DBR^NNNOOOOOOOOOOOOOOOOOOOOOOWQQQQNRCRJRMRLRKRGRRRRR SWS{SSSTTTTTTTTTTTTTTTTTTTTTTVWWWWWWWWUYQYOYNYPYYYYYYZYYYYZYi[[[[[[\N\O\M\K\\\]^%^^}^^^^_-_e________`` `%``(`M`p`h`b`F`C`l`k`j`d`Abbc cbbcbbcbbbbbbcc?eEeeee%f-f f'f/ff(f1f$ffgggggggggggggggggggggggggjkkkkkkll m2m*mAm%m m1mmm;m=m>m6mml9m'm8m)m.m5mm+mppppppppp0rrrortrrrrsssssssu-uOuLuNuKuuuuuuxvvvvvvvvwvv w wvvwwxx x xFyIyHyGyyyyyyzzzz}|}}} }}}}8 6րڀÀĀ̀ۀ΀ހ݀"ۂ ҂ׂ܂Ԃтނӂ߂Py{zMkԉts͎̎ʐΐÐKJ͑PKLMbi˗ۘߘXNN P P#PO&P%PO)PPPc/cUcBcFcOcIc:cPc=c*c+c(cMcLcHeIeeeeBfIfOfCfRfLfEfAffggg!h8hHhFhSh9hBhTh)hhhLhQh=hgPh@hSSfFUjUfUDU^UaUCUJU1UVUOUUU/UdU8U.U\U,UcU3UAUWUW W WWX XXWWWX5XWW YbY6ZAZIZfZjZ@ZwUUUUUU~UUUU W/X*X4X$X0X1X!XX XXX`YwZZZZZZs[q[[[[[ \ \1\L]P]4]G]]E^=^@^C^~^^^^^<_m____`````a#a`a```ha`a` aaabIbcccccccccccccccvccccRdcc^efebeceeeenfpftfvfoffzf~fwfffgghhhhhihhhhhhhhhh iiihhnih>k:k=kkkkk.l/l,l/n8nTn!n2ngnJn n%n#nn[nXn$nVnnn-n&non4nMn:n,nCnn>nnnnNncnDnrnin_nqq&q0q!q6qnqqLrrr6s%s4s)s:t*t3t"t%t5t6t4t/tt&t(t%u&ukujuuuuuuuu{v|vvvvvOww]xlxox zz zzzzzzzzI{V{F{P{R{T{M{K{O{Q{||^}P}h}U}+}n}r}a}f}b}p}s}U RUTKQN9F>LSt Ń W ̃ʃ8܃ԃ߃[߆نԆۆІކWˆ;`U^a4a'a aa7a!b"bd>dd*d-d=d,dddd d6ddddleeeffffffffgimiZiwi`iTiui0iiJihiki^iSiyii]ici[iGkrkkkkknnnnnnnnnnnnnnnnnnnnnnNqYqiqdqIqgq\qlqfqLqeq^qFqhqVq:rRr7sEs?s>sotZtUt_t^tAt?tYt[t\tvuxuvuvuuuuuuvv[wkwfw^wcwywjwlw\wewhwbwwxxxxxx|xxxxzyyy,yzz zzzzzzw{{`{n{g{|||}y}}}}[}nijrVXqpxenskyzfGw=1ufkIl[<5acimF^\_ Y߈Ԉو܈؈݈ʈՈ҈krsfip|cqmbnly{>hbʌnjȌČ̌Ōߍ捲 KJSBTAljiɑ7W8=@>[KdQ4IME9?Z͖˖ɖʖVtv  霂 PPPPPPPPPPPPbQQRR1SSUVVVUVV V VVUVVVVUWWuX~XXXXyXX}XX%Y"Y$YjYiYZZZZZZZu[[[[[[[[[[ \b\]][^c^U^W^T^^^ _F_p__Ga?aKawabaca_aZaXaua*bdXdTddxd_dzdQdgd4dmd{dreeeefffiiiiiiiiiiiiiiiiiiiIkLk3l3oonon)o>o o,ooo"onno1o8o2o#oo+o/oo*ononnnqq}qqqq>rrrDsPsdtctjtptmtuu'v v v vvvvw}wwawxxxxxxyyy.z1zzzzz{{{u{{{{{{{{|||}}}}}}}}}}}}}}}}}}}p^ZPKɄƄĄ˄ӄфʄ?;"%4U7)jӌьҌk`X\cY^b][uxwtx{|̖Җ| AB󜼞;JQQPPPQQ QQQRRRRRRS.V;V9V2V?V4V)VSVNVWVtV6V/V0VXXXXXXXXmY [Z [Z [[[[[[d\e\]]b^_^a^^^^^^^H_q___vagana]aUaa|apaka~aaaaaaaaaa.bidodyddddddddddddddddddduewexeffff#jjijjji!jj jijjijPkNkkkk?o|ooQofoToomo[oxonoozopodooXonoo`o_oqqqqVrrNsWsittt~ttu v)vv$v&v!v"vvvvwwwwwxxxxxxxx?z~F~7~2~C~+~=~1~E~A~4~9~H~5~?~/~DqrposƁÁɁ q~gч҇Ƈȇˇ;6D8= A?sIKHJD>BE?}9M(uJeK~l[pZTʕ˕̕ȕƕ֖ӗF5;?Ϟޞܞݞ۞>KSVVXX8[^_a3bdddedddef&gjjjjjjjj_kxkk p popoppqqqqwsusttuVvXvRvwwwwyyazbz`zzz+|'|*||#|!||T~U~^~Z~a~R~Y~Hwv́ρ υͅЅɅ(9,+PYcfd_UIMБԕ֕ЕՕܖٖۖޖ$MOLNS>?=.ONMʛɛțQ]`,3QVVXXX[^aaaaeeffjjjjpp(pppppr rXrrxszstttuu_vavwyykziz>|?|8|=|7|@|k~m~y~i~j~s~؁݅Յ `_V^A\XIZNOFY |rvlztTNѓߓÓȓܓݓ͓֓ؓדܕ*'aܗ^X[EI ֛ۛarjlRVVVVX@[C[}[[]aaeeef'gj>p0p2pr{stbvev&y*y,y+yzzL|C|M|||}~|~~Lځf  dplfo_k ˑ0ĘRQ+075 y/_ca7Q8QVVVYl\]aaeeefjkjkLprrttivwP|~~-#"!jltw}_.35:82+892geWEC@>ϚTQ-%\fg×kUUMҚI1>;ӝם4ljV]b#e+e*efktzd|c|e|~~~8?1c`dho\Z[WӚԚњTWV坟VX,e^pqvrvwP69bwjBHDƗp_"X_|}wr^kcpl|n|;rpq^֚#̞dpwwɗbe~ő}~|wxT(rj1r|B!!!9!>!~"!"~##!#N$!$~%!%p &!&>]B!BA{D!D~E!E~F!F~XG!G~H!H~I!I~rJ!J~K!K~.L!L~M!M~N!N~HO!O~P!P~Q!Q~bR!R~S!S~T!T~|U!U~V!V~ 8W!W~ X!X~ Y!Y~ RZ!Z~ [![~ \!\~ l]!]~ ^!^~ (_!_~ `!`~ a!a~ Bb!b~ c!c~ d!d~\e!e~f!f~g!g~vh!h~i!i~2j!j~k!k~l!l~Lm!m~n!n~o!o~fp!p~q!q~"r!r~s!s~t!t~00 ?@0 0 AB00CDYZ[\]^    00 2 5 ;0%%%%%&&%%%%%%2! >?IJMNKL_`a ""f"g"`""R"abcdfe"<")"*"" ""33"+"."5"4&@&B&A& !!!!!!!! \<"h0 !! ijk333333333QYQ[Q^Q]QaQcUt|%%%%%%%%%%%%%%%%<%4%,%$%%%%%% %%%%m%n%p%o%P%^%j%a%%%%%q%r%s!`!a!b!c!d!e!f!g!h!i0!0"0#0$0%0&0'0(0)SD!"#$%&'()*+,-./0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ11111 1 1 1 1 1111111111111111111 1!1"1#1$1%1&1'1(1)$`$a$b$c$d$e$f$g$h$i$t$u$v$w$x$y$z${$|$}!p!q!r!s!t!u!v!w!x!y$$$$$$$$$$ $ $ $ $ $$$$$$$$$$$$$$$$$$$!NNYNNNCN]NNNQ?QeQkQRRRSSAS\SN N NN N+N8QNENHN_N^NNQ@RRSCSSWXYY'Ys[P[Q[S[\\"\8\q]]]]]]^r^_ _bMNNN N-N0N9NK\9NNNNNNNNNNNNNNNQCQAQgQmQnQlQQRRRRRRSS9SHSGSES^SSSSXY)Y+Y*Y-[T\\$\:\o]^{^___bb6bKbNe/eeeeefgg(k kbkykkkll4pkr*r6r;rGrYr[rsNNNNNN;NMNONNNNNNNNNNNNQEQDQQQQQQR RRSSSSNSJSISaS`SoSnSSSSSSSSSSSSSSSSSSSSVVYY.Y1YtYv[U[\<]]]^^^s^|____b bSbTbRbQeeg.g,g*g+g-kcklll8lAl@l>rssttuuu(u)u0u1u2u3uv}vvvwwwy:yztzNNNRNSNiNNNNNO OO OO OOONNNNNNOO QIQGQFQHQhQqQQRRRRRRSS!S SpSqT TT T TTT TTT TTTTTVVVW3W0W(W-W,W/W)YYY7Y8YYxYY}YyYY[W[X[[[[[\\y]^^v^t____bb b bbcb[bXe6eeeeffg g=g4g1g5k!kdk{ll]lWlYl_l`lPlUlal[lMlNppr_r]v~z|s|6 3 nr~k@Lc!N2NOMOOOGOWO^O4O[OUO0OPOQO=O:O8OCOTOT&TNT'TFTCT3THTBTT)TJT9T;T8T.T5T6T TWPWOW;XY>YYYYYYYYYYYY[][\[Z[[[[[\,\@\A\?\>\\\\]^ ^^^^___d_b_w_y________bbbbbbbvbbmbb|b~bybsbbobbnbbbbe9e;e8efg_gNgOgPgQg\gVg^gIgFg`gSgWkeklBl^llllllljlzllpllhlll}llrl~ltllvllllpvp|p}pxrbrar`rrsu,u+u7u8vvwyyyzv|UoҊ7FUdpʏƏŏ]ᐑIƑ̖2.1*,N&NVNsNNNNNOoOOOsOOlOOOOOpOuOOiO{OO~OOOzQTQRQUQiQwQvQxQQR;R8R7R:R0R.R6RARRSRSTSSSQSfSwSxSySSSTsTuTTxTTT{TwTTTT|TTqTvTTTbThTT}TVWWwWjWiWaWfWdW|YYIYGYHYDYTYYYYYYYYYYYYYYYY[_[d[c[[[[[[\\H\E\F\\\\\\\^^^^^^^x^^^^^^_&_'_)____|_____```/`5``*``!`'`)`+`bbb?b>b@bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbe>eeefff fffffff fg g gmgggqggsgwggggogpggg~gguggg|gjgrk#kfkgkllllllllllllllllllllllllllllllllllpppppr,r-r8rHrgrirrrrrsssssu=uuuvvvvwwy>y@yAyyzzzyz|T NqRhˏΏԏѐǑѕw@?;DBR^NNNOOOOOOOOOOOOOOOOOOOOOOQWQQQRNRCRJRMRLRKRGRRRRS SWS{SSTTTTTTTTTTTTTTTTTTTTTTVWWWWWWWWYUYQYOYNYPYYYYYZYYYYZY[i[[[[[\\N\O\M\K\\]^^%^^}^^^__-_e_______``` `%``(`M`p`h`b`F`C`l`k`j`dbAbcc bbcbbcbbbbbbcce?eEeeef%f-f f'f/ff(f1f$fgggggggggggggggggggggggggkjkkkkkllm m2m*mAm%m m1mmm;m=m>m6mlm9m'm8m)m.m5mm+pppppppppr0rrrortrrrsssssssuu-uOuLuNuKuuuuuvxvvvvvvvwvvw w vvwwxxx x yFyIyHyGyyyyyzzzz|}}}}} }}}8 6րڀÀĀ̀ۀ΀ހ݁"ۂ ҂ׂ܂Ԃтނӂ߂Py{zMkԊts͎̏ʐΐÑKJ͕PKLMbi˗ۘߙNXNP P P#OP&P%OP)PPPc/cUcBcFcOcIc:cPc=c*c+c(cMcLeHeIeeefBfIfOfCfRfLfEfAfgggh!h8hHhFhSh9hBhTh)hhhLhQh=ghPh@hSfUFUjUfUDU^UaUCUJU1UVUOUUU/UdU8U.U\U,UcU3UAUWWW W WXX XWWWXX5WWY YbZ6ZAZIZfZjZ@ZwUUUUUU~UUUW X/X*X4X$X0X1X!XX XXY`ZwZZZZZ[s[q[[[[\ \ \1]L]P]4]G]^E^=^@^C^~^^^^_<_m___`````aa#`a```ah`a`a aabbIccccccccccccccccvcccdRcce^efebeceeefnfpftfvfoffzf~fwffgghhhhhihhhhhhhhhhi iihhinhk>k:k=kkkkl.l/l,n/n8nTn!n2ngnJn n%n#nn[nXn$nVnnn-n&non4nMn:n,nCnn>nnnnNncnDnrnin_qqq&q0q!q6qnqrLrrs6s%s4s)t:t*t3t"t%t5t6t4t/tt&t(u%u&ukujuuuuuuuv{v|vvvvwOwx]xlxoz zz zzzzzzz{I{V{F{P{R{T{M{K{O{Q||}^}P}h}U}+}n}r}a}f}b}p}sUՀ RUTKQN9F>LSt ń W ̃ʄ8܄ԃ߆[߆نԆۆІވWˆ;`U^a4a'a aa7b!b"dd>dd*d-d=d,dddd d6dddeleeffffffffgiimiZiwi`iTiui0iiJihiki^iSiyii]ici[kGkrkkkknnnnnnnnnnnnnnnnnnnnnnqNqYqiqdqIqgq\qlqfqLqeq^qFqhqVr:rRs7sEs?s>totZtUt_t^tAt?tYt[t\uvuxvuvuuuuuuvvw[wkwfw^wcwywjwlw\wewhwbwxxxxxxx|xxxyzyy,yzzz zzzzz{w{{`{n{g|||}}y}}}}[nijrVXqpxenskyzfGw=1ufkIl[<5acimF^\_ Y߈Ԉو܈؈݈ʈՈ҉krsfip|cqmbnly{>hbʌnjȌČ̌ōߍ掲 KJSBTAljiɒ7W8=@>[KdQ4IME9?Z͖˖ɖʖVtv  鞂 PPPPPPPPPPPPQbQRRS1SUVVVUVVV V VUVVVVUWWXuX~XXXXyXX}XY%Y"Y$YjYiZZZZZZZ[u[[[[[[[[[\ \b]]^[^c^U^W^T^^_ _F_p_aGa?aKawabaca_aZaXaub*ddXdTddxd_dzdQdgd4dmd{ereeefffiiiiiiiiiiiiiiiiiiikIkLl3o3onono)o>o o,ooo"nnoo1o8o2o#oo+o/oo*nonnnqqq}qqqr>rrsDsPtdtctjtptmuuv'v v v vvvww}wwaxxxxxxyyyz.z1zzzz{{{{u{{{{{{{|||}}}}}}}}}}}}}}}}}}}p߀^ZPKɄƄĄ˄ӄфʇ?;"%4U7)jӌьҍk`X\cY^b][uxwtx{|̖җ| AB󞼟;JQQPPPQQQ QQRRRRRRSV.V;V9V2V?V4V)VSVNVWVtV6V/V0XXXXXXXXYm[ Z[ Z[ [[[[[\d\e]]^b^_^a^^^^^^_H_q__avagana]aUaa|apaka~aaaaaaaaab.didodyddddddddddddddddddeuewexffffj#jijjjij!jj ijjijkPkNkkko?o|ooQofoToomo[oxonoozopodooXnooo`o_qqqqrVrsNsWtittt~tuv v)vv$v&v!v"vvvwwwwwxxxxxxxxz?z~F~7~2~C~+~=~1~E~A~4~9~H~5~?~/DqrposƁÁɁ q~gч҇Ƈȇˉ;6D8= A?sIKHJD>BE?}9M(uJeK~l[pZTʕ˕̕ȕƖ֗ӘF5;?Ϟޞܞݞ۟>KSVVXX[8_^ab3dddedddefg&jjjjjjjjk_kxkp p opoppqqqqswsuttuvVvXvRwwwwyyzazbz`zz|+|'|*||#|!|~T~U~^~Z~a~R~YHwv́ς υͅЅɅ(9,+PYcfd_UIMГԕ֕ЕՖܖٖۖޗ$MOLNS>?=.ONMʛɛțQ]`,Q3VVXXX[^aaaaeeffjjjjppp(pppprr rXrsxsztttuuv_vawyyzkzi|>|?|8|=|7|@~k~m~y~i~j~s؅݅Յ `_V^A\XIZNOFY |rvlztTNѓߓÓȓܓݓ͓֓ؓדܖ*'aܗ^X[EI ֛۝arjlRVVVVX[@[C[}[]aaeeefg'jp>p0p2rs{tvbvey&y*y,y+zz|L|C|M||~}~|~Lڂf  dplfo_k ˔0ęRQ+075 y/_caQ7Q8VVVY\l]aaeeefjkjkpLrrttviw|P~~-#"!jltw}_.35:82+892geWEC@>ϛTQ-%\fgQ×kUUMқI1>;ӝן4ljV]be#e+e*fktz|d|c|e~~~8?1c`dho\Z[WӚԚќTWV垟VXe,p^vqvrwP69bwjBHDƘp_"X_|}wr^kpc|l|n;rpq^֛#pdwڋwɚbe~Ŕ}~|wxTr(j1|rB!!9!>!~!!"~"#!#N#!$~$!%p% !&>&]!BAB{!D~D!E~E!F~FX!G~G!H~H!I~Ir!J~J!K~K.!L~L!M~M!N~NH!O~O!P~P!Q~Qb!R~R!S~S!T~T|!U~U!V~V8 !W~W !X~X !Y~YR !Z~Z ![~[ !\~\l !]~] !^~^( !_~_ !`~` !a~aB !b~b !c~c !d~d\!e~e!f~f!g~gv!h~h!i~i2!j~j!k~k!l~lL!m~m!n~n!o~of!p~p!q~q"!r~r!s~s!t~t<!u~u!v~v!w~wV!x~x!y~y!z~zp!{~{!|~|,!}K}0 0000& % PQRTUVW1 2  56[]78009:00;< 0 0=>0 0?@ 0 0AB00CDYZ[\]^    002 5  ; 0%%%%%&&%%%%%%2!> ?IJMNKL_`a "f"g"`""R"a"bcdfe<")"*"" """33+"."5"4"@&B&A& &!!!!!!!! \<"h0 ! !ijk333333333YQ[Q^Q]QaQcQUt|%%%%%%%%%%%%%%%<%4%,%$%%%%%% %%%%m%n%p%o%P%^%j%a%%%%%q%r%s%`!a!b!c!d!e!f!g!h!i!!0"0#0$0%0&0'0(0)0DS!"#$%&'()*+,-./0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ1111 1 1 1 1 1111111111111111111 1!1"1#1$1%1&1'1(1)1`$a$b$c$d$e$f$g$h$i$t$u$v$w$x$y$z${$|$}$p!q!r!s!t!u!v!w!x!y!$$$$$$$$$ $ $ $ $ $$$$$$$$$$$$$$$$$$$!$NYNNNCN]NNNN?QeQkQQRRRSAS\SS N NN N+N8NQENHN_N^NNN@QRRCSSSWXY'YsYP[Q[S[[\"\8\q\]]]]]]r^^ __MbNN N-N0N9NKN9\NNNNNNNNNNNNNNNCQAQgQmQnQlQQQRRRRRRS9SHSGSES^SSSSSX)Y+Y*Y-YT[\$\:\o\]{^^___b6bKbNb/eeeeeefg(g kbkykkkkl4lkp*r6r;rGrYr[rrsNNNNN;NMNONNNNNNNNNNNNNEQDQQQQQQQ RRRSSSSNJSISaS`SoSnSSSSSSSSSSSSSSSSSSSSSVVY.Y1YtYvYU[[<\]]]^^s^|^____ bSbTbRbQbee.g,g*g+g-gckkll8lAl@l>lrssttuu(u)u0u1u2u3uu}vvvvwww:yytzzNNRNSNiNNNNNN OO OO OOOONNNNNNO OIQGQFQHQhQqQQQRRRRRRS!S SpSqS TT T TTT TTT TTTTTTVVV3W0W(W-W,W/W)WYY7Y8YYxYY}YyYYYW[X[[[[[[\y\]^v^t^____b b bbcb[bXb6eeeeeff g=g4g1g5g!kdk{kl]lWlYl_l`lPlUlal[lMlNlpp_r]r~vzs||6 3 nr~k@Lc!2NNMOOOGOWO^O4O[OUO0OPOQO=O:O8OCOTOT&TNT'TFTCT3THTBTT)TJT9T;T8T.T5T6T TWPWOW;WX>YYYYYYYYYYYYY][\[Z[[[[[[,\@\A\?\>\\\\\] ^^^^^__d_b_w_y_________bbbbbbvbbmbb|b~bybsbbobbnbbbbb9e;e8eef_gNgOgPgQg\gVg^gIgFg`gSgWgekkBl^llllllljlzllpllhlll}llrl~ltllvlllllvp|p}pxpbrar`rrrs,u+u7u8uvvwyyyvz|Uo҉7FUdpʎƏŏď]IƑ̑2.1*,&NVNsNNNNNNoOOOsOOlOOOOOpOuOOiO{OO~OOOzOTQRQUQiQwQvQxQQQ;R8R7R:R0R.R6RARRRRSTSSSQSfSwSxSySSSSsTuTTxTTT{TwTTTT|TTqTvTTTbThTT}TTVWwWjWiWaWfWdW|WYIYGYHYDYTYYYYYYYYYYYYYYYYY_[d[c[[[[[[[\H\E\F\\\\\\\\^^^^^^x^^^^^^^&_'_)____|______``/`5``*``!`'`)`+``bb?b>b@bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb>eeeeff fffffff ff g gmgggqggsgwggggogpggg~gguggg|gjgrg#kfkgkkllllllllllllllllllllllllllllllllllppppp,r-r8rHrgrirrrrrrsssss=uuuuvvvvww>y@yAyyyzzyzz|T NqRhˎΏԏяǑёw@?;DBR^NNNOOOOOOOOOOOOOOOOOOOOOOWQQQQNRCRJRMRLRKRGRRRRR SWS{SSSTTTTTTTTTTTTTTTTTTTTTTVWWWWWWWWUYQYOYNYPYYYYYYZYYYYZYi[[[[[[\N\O\M\K\\\]^%^^}^^^^_-_e________`` `%``(`M`p`h`b`F`C`l`k`j`d`Abbc cbbcbbcbbbbbbcc?eEeeee%f-f f'f/ff(f1f$ffgggggggggggggggggggggggggjkkkkkkll m2m*mAm%m m1mmm;m=m>m6mml9m'm8m)m.m5mm+mppppppppp0rrrortrrrrsssssssu-uOuLuNuKuuuuuuxvvvvvvvvwvv w wvvwwxx x xFyIyHyGyyyyyyzzzz}|}}} }}}}8 6րڀÀĀ̀ۀ΀ހ݀"ۂ ҂ׂ܂Ԃтނӂ߂Py{zMkԉts͎̎ʐΐÐKJ͑PKLMbi˗ۘߘXNN P P#PO&P%PO)PPPc/cUcBcFcOcIc:cPc=c*c+c(cMcLcHeIeeeeBfIfOfCfRfLfEfAffggg!h8hHhFhSh9hBhTh)hhhLhQh=hgPh@hSSfFUjUfUDU^UaUCUJU1UVUOUUU/UdU8U.U\U,UcU3UAUWUW W WWX XXWWWX5XWW YbY6ZAZIZfZjZ@ZwUUUUUU~UUUU W/X*X4X$X0X1X!XX XXX`YwZZZZZZs[q[[[[[ \ \1\L]P]4]G]]E^=^@^C^~^^^^^<_m____`````a#a`a```ha`a` aaabIbcccccccccccccccvccccRdcc^efebeceeeenfpftfvfoffzf~fwfffgghhhhhihhhhhhhhhh iiihhnih>k:k=kkkkk.l/l,l/n8nTn!n2ngnJn n%n#nn[nXn$nVnnn-n&non4nMn:n,nCnn>nnnnNncnDnrnin_nqq&q0q!q6qnqqLrrr6s%s4s)s:t*t3t"t%t5t6t4t/tt&t(t%u&ukujuuuuuuuu{v|vvvvvOww]xlxox zz zzzzzzzzI{V{F{P{R{T{M{K{O{Q{||^}P}h}U}+}n}r}a}f}b}p}s}U RUTKQN9F>LSt Ń W ̃ʃ8܃ԃ߃[߆نԆۆІކWˆ;`U^a4a'a aa7a!b"bd>dd*d-d=d,dddd d6ddddleeeffffffffgimiZiwi`iTiui0iiJihiki^iSiyii]ici[iGkrkkkkknnnnnnnnnnnnnnnnnnnnnnNqYqiqdqIqgq\qlqfqLqeq^qFqhqVq:rRr7sEs?s>sotZtUt_t^tAt?tYt[t\tvuxuvuvuuuuuuvv[wkwfw^wcwywjwlw\wewhwbwwxxxxxx|xxxxzyyy,yzz zzzzzzw{{`{n{g{|||}y}}}}[}nijrVXqpxenskyzfGw=1ufkIl[<5acimF^\_ Y߈Ԉو܈؈݈ʈՈ҈krsfip|cqmbnly{>hbʌnjȌČ̌Ōߍ捲 KJSBTAljiɑ7W8=@>[KdQ4IME9?Z͖˖ɖʖVtv  霂 PPPPPPPPPPPPbQQRR1SSUVVVUVV V VVUVVVVUWWuX~XXXXyXX}XX%Y"Y$YjYiYZZZZZZZu[[[[[[[[[[ \b\]][^c^U^W^T^^^ _F_p__Ga?aKawabaca_aZaXaua*bdXdTddxd_dzdQdgd4dmd{dreeeefffiiiiiiiiiiiiiiiiiiiIkLk3l3oonon)o>o o,ooo"onno1o8o2o#oo+o/oo*ononnnqq}qqqq>rrrDsPsdtctjtptmtuu'v v v vvvvw}wwawxxxxxxyyy.z1zzzzz{{{u{{{{{{{{|||}}}}}}}}}}}}}}}}}}}p^ZPKɄƄĄ˄ӄфʄ?;"%4U7)jӌьҌk`X\cY^b][uxwtx{|̖Җ| AB󜼞;JQQPPPQQ QQQRRRRRRS.V;V9V2V?V4V)VSVNVWVtV6V/V0VXXXXXXXXmY [Z [Z [[[[[[d\e\]]b^_^a^^^^^^^H_q___vagana]aUaa|apaka~aaaaaaaaaa.bidodyddddddddddddddddddduewexeffff#jjijjji!jj jijjijPkNkkkk?o|ooQofoToomo[oxonoozopodooXonoo`o_oqqqqVrrNsWsittt~ttu v)vv$v&v!v"vvvvwwwwwxxxxxxxx?z~F~7~2~C~+~=~1~E~A~4~9~H~5~?~/~DqrposƁÁɁ q~gч҇Ƈȇˇ;6D8= A?sIKHJD>BE?}9M(uJeK~l[pZTʕ˕̕ȕƕ֖ӗF5;?Ϟޞܞݞ۞>KSVVXX8[^_a3bdddedddef&gjjjjjjjj_kxkk p popoppqqqqwsusttuVvXvRvwwwwyyazbz`zzz+|'|*||#|!||T~U~^~Z~a~R~Y~Hwv́ρ υͅЅɅ(9,+PYcfd_UIMБԕ֕ЕՕܖٖۖޖ$MOLNS>?=.ONMʛɛțQ]`,3QVVXXX[^aaaaeeffjjjjpp(pppppr rXrrxszstttuu_vavwyykziz>|?|8|=|7|@|k~m~y~i~j~s~؁݅Յ `_V^A\XIZNOFY |rvlztTNѓߓÓȓܓݓ͓֓ؓדܕ*'aܗ^X[EI ֛ۛarjlRVVVVX@[C[}[[]aaeeef'gj>p0p2pr{stbvev&y*y,y+yzzL|C|M|||}~|~~Lځf  dplfo_k ˑ0ĘRQ+075 y/_ca7Q8QVVVYl\]aaeeefjkjkLprrttivwP|~~-#"!jltw}_.35:82+892geWEC@>ϚTQ-%\fg×kUUMҚI1>;ӝם4ljV]b#e+e*efktzd|c|e|~~~8?1c`dho\Z[WӚԚњTWV坟VX,e^pqvrvwP69bwjBHDƗp_"X_|}wr^kcpl|n|;rpq^֚#̞dpwwɗbe~ő}~|wxT(rj1r|picolibc-1.7.4/newlib/libc/iconv/ccs/binary/cns11643_plane14.cct000066400000000000000000006510041414576234500240740ustar00rootroot00000000000000cns11643_plane14XXLX@@]22  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR!&!%"b"a"c$?!!!,!"'@!#!0!.#E+"!F!E"d$@+#9l9n!$!-"e!1!l"f$B'B!G+&+%+'+$@3!2!3!I!L!K!J!m!r!p"o"h"k"g"v"n"m"l"t"p"w"u"s"r$P$H$O$F$E$N$I$K$C$D$LdHdI'G'O'D'Q'H'C'L'I'K'J'M+-+.+6+,bc+++2+/+3+(+)+5+4dJ/H/M/D/X/L/V/F/K/I/G/O/S/E/N/Q/C/P/T/UdK4<4?4D4A4B/W4G4=4@4K4C4L4J4E4F9u9q9r9o9pdM@9@<@:@7@=@6@>EkcLEnElEmEvcMEpEuEqEtK)K+K-K,K'dNP1P5P0P4TAT@P3WR\2`o"x$T$S$Q'R9v^%!4+7"z.{@?dS!'!M!H!N!x!y'U!(!z$W+9/[/Y/Z4M"~"}"|$Y$Z+;+=+>/^/_4O4N9}9z9~K/K.K0TB!/!5!Q!{#"$['YEz'Z!6!R!}#%#$#&#'$_$a$\$^$]$`'['^'_']dO+?+@+C/h/e/b/`/f/a/c/d4P:#:!4Q@A@@K1K2P6P7`,!7!T!S#($c$b'a'`bZ'b+H+F+G/o/l/j/m/n4R@E@D@FF!E~K3M,!U!V"#"""$P8"&dP$e+IF#K4TD\4!)!W$f!Y#*#+#-'c+J!Z"'dQ*\!*"($g'e'f+K@G![")#/'gdR4T:(:'@J@I@HF%F&K5TE!+!\"*#1'i'j4U:)!^!`"+#3'k+P+O+N+M@K"1"-"."/#5#7#9#:#;#4$v$y$~$u%$$w${$p%!$s$|$x$t$m$}%"%#'n't'x'u'q'l'p'y's'o'w+\+]+W+Y+[+T+^+Q+UdT+c+a+S+X/w0!/t/x0"/y/{/z/s/v/~0%g!4_4h4f4g4[4X4b4a4W:64d4^4YdWdVg"dU:<:1:8:.:*:3:@:4:B:;:/g#@Q@N:+@Lg%g$dXF.F(F)F6F,F*F4F3F1dZdYFPF0KAK8K=KDK>K7K;KCKEK@F5K%,%&%+%*%)%H%'%(("'}'|(!'{+e0':D:C@RF7_A!a"4bI#A#B#?#@%1%>%0%@%6%/%<%-%2%A%B%3%8%7d_%5(%(#(&((()(*($d`+i+h+l+g+j+q+p+k+m+r+n+f0*000/080405030(070+06024n4q4r4t4i4k4o4u4vdadbdc:J:E:G:P:Lc6:N:I:Kc7dd@W@[@V@^@\@X@]cC@Z@Y@TFCF>FBF0;0E0H0R0<5"580M0K5(5$51535.5*5/5;5:595'5<505+5)54525755:u:|:c:a:X:[:w:r:Y:`:{:f:b:\:^:s:Z:W:z:V:y:x@g@f@d:k@jdhdiFLFJFOFSK\KXKTK^KVKZK[K]K_PPPSPQPOPTPNPVTPTNTRTOTQTSZ1WaW^\6\9\:^)_B`s(Hb\dj,/@q@rPWZ4\;!;"=#P%Z(L(J(N(K(M,20W0V0U5A5?:~@t@u@v@scEZ5^*">%^%\%](P0X0YbJ"?#R(Q,4;$@xe%%_,5TT#T(T(U0Z0[dk5C;&;%5DZ8dl#U#Z%a%f%b%c(](^(\(_(W(X,?,;dm,<,B,>,A,C,=0c0_0d0a0b0^bqbr5K5H5G5Q5R5O5U;+5F5N5J5T;6;(;';7;*;.;4;3;1;-A!@|@z@y@}dnF\FTFVFYFZdoKeKfKcKkKgKiKjKhdpPXP[PZdqTWTYTUdrWbZ9\=\<\>^-_C`0!<5WKl%g(`,E,D!c#\%h%k(b(a,F0f0i0h0j0g5[5Y5X5Z9y;:;;;=F]KmKpdsfw(c!=!>"G"Hfx%n%m(e(g(h,H0l0k5a5`;?;@;>dtFaF`P\du\?!?#a(i(k,L,K0n%o(m!d"I#b;B%q(n(p,M0o5b5c;G;E;DA"Wc!@!A"J#Q(qA#P^Wdad!B%r,PA$_E(v(ubd0p0r0qdvdw;KFcFdKrdx^/"MbQ"L%x#f#g#i%w%{%v%t(~%|&"&!%}&#%z%u(x)"bf,Z(w,[(z)!bg,`0y,V0s,W,]0~,T,_,a0z0x0{,\0v1"1%5h0t1'5q5r1#1(1!5o1&;T5j;V;U5n5y;X;Y5v;Z;M5t;^;O;Q;]A+;a;b;c;PdyA)A'A,FoFnA(FlA.FmA*dzKsK~KtFqK|FrFjL!FhFsFkL#FtL$KwKzKvPhL(PgL)L%KyKuPaPcPjPdPfPlPbPePkfyTaT_T\T^T]T[We_Fa>#k&%,c;dFvFuL,Pm_H!e!f"N&(&)1)"P#o#l#m#n&9&.&*&7&/&6&5&3&4&8&1d{&2)1)*)&)()%)4)2)3).)0)7)5)6)/)),m,o,p,l1213,k,n1,1/1518171<1.19101;16d|d}616'6)6&626"5|6+6#5}6$6-d~6.;q;p;s;g;f;h;r;mc9;oe!AIA2A:A8A>A=A6A3A4AHG%ABADAEfvFxG(F~G$FzG!G*G#G"F{G)L-G&L5L8L0L/L;L1L.L>L?L4L=L:L9e"L7PpL2PwPvPoPyPuTdTgWkWmWlTiWjWpWnZ;Z)B)@)A,~,z-#,|,y,}-!-$-%-",71F1L1D1I1H1M1E1C6B1K6D6E<&;}<%<#;|;~<$A[AVAYAQG4G5G9G3G7LDLFLAL@LCP}Q#PzP~Q"TqToTpTlTmTrZCZBe&\B\Ca?&Ae'Q$)E-'f26H6G6F<)Q&f3"R#w#x#u&H&I&E&D&G&B&JbW)G)R)Ib_)J)O)H)N)Le(e)-6-.-0---1-+-:-*)Q-4-2-9-7-8e+e*1]1W1S1[1^1d1P1_1V1c1T1O1Z1Y-/1b1X1a1`e-e,6U6`6N6[6W6Q6Z6M6\6P6K6T4x6L6R6^6_6V6S<=<2<*<1cRGCG;GQ/QDQ'Q.Q2QAQ:e1e2TuT{U!T|TvU'U#TzU$TxU)WtWwX!WvWxW~WyX#W}WzX"W{e3ZDZOZEZNZGZMZHZFe4\IWu\Ge5^5^4^3^7_O_Ne6e7`ta@aeaA#y)S)Tbi-<1f1e1g6bA}A|LfLeLgQFQEU+)U)V-=1h7)7'BGB=BEB?B;BFGVGWGeGcLxG[LjGdG_GZG\G^G]LtGbGaeDeEGfeCL}LsLkLuL~LlLyLzccL{LweGeFQVQTQXQMQPLqQUU0U/U5U6U1U7ZUQYU9eHX(X*X'X&X)X+ZRZTZSeJeI\Q\O^<^:^;`6_R`7eKay$($&$'$+&b&_&^&c&`)w)t)p)u)o)y)v)r)q-^-\-Z-Xbj-e-b-_-d-c-h-]eM2(by2*2+212/2)2-2,eOeN2070727/757.7,7-7173ePeQUCU@UAUBX-X.ZVZW\Ye_\V\X\UZX\S\Wea_S_T`9aCaB-i="-k)|B]B\B[M.M-&d*!*"*#-m26=$=#=%GuM/a{$,$-&k&i&f&g&j&h*&***'*(-u-t-p-s-q2829=&7;7:79='=.=)=+=*Ba=-=(B_BbebecM0GyGxGzGwUI"Z!k$/&n*3*-*,*+*2*/-x-{-w-z-~-y-|2>2@2G2<2F2A2=ed7==82?7@7*7*8*5*6.'.%.(.*.&2N2M2P2O2Q7F7I7G=C=B=DB{QpUR\b=E"[&s*:*;.+./2W2U2R7J=GB|B}H+H)QqQsQrQtUUUSUTX4X3X2^?^>`;ej"\ek&t&v7M=LB~C!QvUVUWZ^=MH0H.el&w&x.22Z2[7P7R7Q=OH1X5.5.3bl2d2_2^2h7Y2g2e7U2\2c7S2b7W=V=S=Q=RC'C(C%C&H9H3H6H5H4H8H;H=MDMFQ{QyUYUXU[U\X6X8X;X:X9Z`Z_^Bd22i=W.6&{&|.9.;.>.7.:.=emenf|2l2meo7b7c7]7_7a7`epeqer=\=Y=]=ZC1C-C.C7C)C5C+C0C4C*C6H>H?HEHDesH@MJMMMHMLMKMIR!etR$R"euU`UbUaXCX>X@X?X*=*?*B*DeL.B.@.A.C2t2s2y2v2{2w2x2|7i7g7k7j7l=e=f=i=hCACDe$HKHMHPHOHRMUMVMZMSMWR*UdR,R)ZfZeZg\d`v`w.D.G.I.H7r7q7pCFCGe|M[R/R.Uh^I^H&~'!*G.N.O.M.K.L3#3&3'3$7s=q=pCICJHTHUR0UiUjXI_U.Q.P3+3*3,7x7y7w7{7vc-7ze}={=x=u=y=r=ve~COCLCUCM=wCTCQHVHXH`HZH^HWH]H\M\MeM]M`cgcfMcf!R3R4UmUkUnUpUqUoXPXNXQXLf"f#ZoZnf$\f\ef%^L^K_X_W`?`>f&aDb:*I*H.R.T.S313.30323-7}7~8!8>8">!>#>"=~f'CXC\HbHaMoMqMmMpMsMrMnR7UuUtR9XUXTf(ai`@'"*K*J373;8)8&8'8.8$8+>4>)>&>.>/>(>,>*>$>5>3Cg>+CfCiC`CbC^CdChCjCcHtHmHnHpHiHhHqHsf)Hkf+N"M|MxN$N/N.MwN+MuN(N)N%N,N'M~M}f*R;R@R?UyUzXYX[XXf,XZZrZtZu\l^S^P^Q^R_Zb581f-HwU}X\_[*N3CnN1X]3B3C>7>8CrN2U~Xaf{863D8789I"V!Xb\o3I3H3Gf/8=8<8;>;I%f0N4N6N7N5N8RCV"\p\q\r$5$6'$'&'%'#*V*[*X*O*Y*R*T*Wf1.f.`.a.^.e.d3L3J3R3K3N3M3O.c>D8I8Gc.8A8B8E8H>>>C>E>A>=>@>BC{C~CuCvCwD#C|D"I'I*N;N=N9NG>H>I*]I+RJXhZy.h3W3X3UD&f4I-I.ZzZ{^UZ|$8'(')'+*`*k*f*l*^*h.v.j.k.x.r.t.i.n.o.z.y.wf5f73b8M3Y3_8[*_>W3Z3cf6-38N8Q8T8P8O8]8U8^8W8R8X8_>^>O>Y>M>_>K>R>\>Z>P>X>]>V>Nf9>[f8D-D1D:D5D,D>D'D3D?D@D2D8D0DICf;fZ~Z}["\{[%f?\v\x\|]"\~]#\w]!^[^Z^\^X^V^Wf@`C`/aFfAaGa|8c8`8a>a'-fB/#.|.~/$3i3l3o3n3k3j3p3m8f8d>b>c>hDDDEDIDFDHIOIJIEILIIINIKfCN]NYR[R]R_RbR^fEfDV:V9V;V6V4[(XvXxXsXtXufF[,['[)Xw[+]%]$^]__`EfG/&8j>j>i3qfHDMN_RcRd/'3t3w3r3s3u3vfI8r8n8t8l8k8s8m8o8q8p>p>r>m>oDNDON`IYIRIWITIQIVIXNaNbReV@V?V=VBXyXzX|X{fJ])](aIa}fK[/`FaJ/)8v8u8w>tNeRfNdVFX~X}Y![1]*^aDTI\Nf[2/*/,3{3z3|8~9#9)8y8{9%9"c08z>|>}?$>~>u?!?#>x?"D`DYDcDUDXD[D\DaDVD]I_IdIcI^IbIkIhI`IeIfNtNgNrNpNnNlNsNuNiNjNvRjRkNoRgRnRiRhfLVIVJVHY*Y&Y$Y(Y#[4[5[6]3]0],]2]+].\md-^b^c_a_b`H`G`I`{aKaka~9*VM_d]4fMb!9-9,?*?)DdImY+9.?,?+?-cJDeNzVOaM/.909291?/DiDgIpIrIqfNN~N}O"RuRsVQVRY.[8fOd(^e^ffP`JaN93$:99979598?9?4?7?0?3?8IuIsItO&O%O#RwY1fQ9>9:9=???:?;?>DkI{IzIyO,O+R~R{R|VTVUY2[:[9[;[<[=]7`KaPal9?9@?@DsI}I|O0O2O/O1fRY5Y6[?]8fS9A9G?E?G?D?F?IDvO6O3O5O4S$S"S!S%VYVZY7^gb"?KDwDxJ!J"O7S'S&fTY8O9'/$;'0'3'1*r*p*t*s*q/1/2/3/04%4'4&9K9J9N9L?O?P?M?L?Q?U?V?T?WD}DyD|DzD{D~J$J'J&O/7/S8S2S6S7S;SYDYFYEfafbf`[P[D[E[C[H[M[O[J[A[B[N[Gfefcfd]A^j]C]<]?]>]=]D]E]G]B]:fffgfh]F^m_i_n_j_l_k`Rd1`U`T`V`O`S`Wfjfia"aob#b6c#/@429\?lfkEOSOUOVSBSDS@VmflYKYJ[Sfm!C';':'?'<'='>*y*|*{46449^439a9e?q?r?s?u?pE@EBJEJFJDOZO[SHVpVoVq]I*}SIc%49JGJI^pa%b/?~?|?{EFEGO`SPSMSLSQVtVu]O]L]N^r^qfn_q_r`Ya&fobE*~EIJLYO@!+!JN^s@$@"EKObOcOdSSVzV{YP[_[][^[`]P]Q^u^t_sa(b;SUYQ^va)EOOe[aEP]SERJTJUJRJVOiOgcnOfS\SYSZR(SXS]S[S_Y[W&c{W(YYYVYX[ed*^x^w`]`^`\SaW*Y\]V^{^y^zb%^|b&9gfp9hE[@+E\ETEYEWJ]EXJ^J[fzOkSeSfSdSbScYbYaYfYeYcfq[i]X^~_xa*E_ShW0Yg_!``JcJbJfJaJ`JlJdJjOsOmOnOrOtSpSqSkSlSjW4W7W3YjYkYm[o[m[l[n[k]Z_$_"_y`b`aaras@/OwOvW:]a]`]^_%atc4Jn_{`c@2EaJoJsJqJpJrOySuStW;W]cEbJxW?]d_(a/EcO~O|O{O}SxSzT#S|T!T%S}SyfsWDWEW@WBYtYs[tYvYuWCYq[u[w[y[z]o]q]g]i]j]t]u]n]h]f]v]s]r]p_,d/_*`%_~`#`"`e`f`ha2a3a4aYa[aubAEdEf/BEhEgP'P*P$P+T-P%P"T*T,T6T3T7T)T5T2WMWHWJfuYyY{Y}Y~Z"Yz[}\'\"\%[~\&\$\#]y]z_5_1_2_6`la5a]b)b0b8_7EiP,T9Z$\)^!_:b1b?%GP/P.T:WPZ&Z%K"^"9jT^$_>b3WU`+bB^G_?aaaw  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR&!%!b"a"c"?$!!,!"!@'#!0!.!E#"+F!E!d"@$#+l9n9$!-!e"1!l!f"B$B'G!&+%+'+$+3@2!3!I!L!K!J!m!r!p!o"h"k"g"v"n"m"l"t"p"w"u"s"r"P$H$O$F$E$N$I$K$C$D$L$HdIdG'O'D'Q'H'C'L'I'K'J'M'-+.+6+,+cb++2+/+3+(+)+5+4+JdH/M/D/X/L/V/F/K/I/G/O/S/E/N/Q/C/P/T/U/Kd<4?4D4A4B4W/G4=4@4K4C4L4J4E4F4u9q9r9o9p9Md9@<@:@7@=@6@>@kELcnElEmEvEMcpEuEqEtE)K+K-K,K'KNd1P5P0P4PAT@T3PRW2\o`x"T$S$Q$R'v9%^4!7+z"{.?@Sd'!M!H!N!x!y!U'(!z!W$9+[/Y/Z/M4~"}"|"Y$Z$;+=+>+^/_/O4N4}9z9~9/K.K0KBT/!5!Q!{!"#[$Y'zEZ'6!R!}!%#$#&#'#_$a$\$^$]$`$['^'_']'Od?+@+C+h/e/b/`/f/a/c/d/P4#:!:Q4A@@@1K2K6P7P,`7!T!S!(#c$b$a'`'Zbb'H+F+G+o/l/j/m/n/R4E@D@F@!F~E3K,MU!V!#"""$"8P&"Pde$I+#F4KDT4\)!W!f$Y!*#+#-#c'J+Z!'"Qd\**!("g$e'f'K+G@[!)"/#g'RdT4(:':J@I@H@%F&F5KET+!\!*"1#i'j'U4):^!`!+"3#k'P+O+N+M+K@1"-"."/"5#7#9#:#;#4#v$y$~$u$$%w${$p$!%s$|$x$t$m$}$"%#%n't'x'u'q'l'p'y's'o'w'\+]+W+Y+[+T+^+Q+U+Tdc+a+S+X+w/!0t/x/"0y/{/z/s/v/~/%0!g_4h4f4g4[4X4b4a4W46:d4^4Y4WdVd"gUd<:1:8:.:*:3:@:4:B:;:/:#gQ@N@+:L@%g$gXd.F(F)F6F,F*F4F3F1FZdYdPF0FAK8K=KDK>K7K;KCKEK@K5F#,%&%+%*%)%H%'%(%"(}'|'!({'e+'0D:C:R@7FA_a!4"IbA#B#?#@#1%>%0%@%6%/%<%-%2%A%B%3%8%7%_d5%%(#(&((()(*($(`di+h+l+g+j+q+p+k+m+r+n+f+*000/080405030(070+06020n4q4r4t4i4k4o4u4v4adbdcdJ:E:G:P:L:6cN:I:K:7cddW@[@V@^@\@X@]@CcZ@Y@T@CF>FBF0;0E0H0R0<0"585M0K0(5$51535.5*5/5;5:595'5<505+5)545257555u:|:c:a:X:[:w:r:Y:`:{:f:b:\:^:s:Z:W:z:V:y:x:g@f@d@k:j@hdidLFJFOFSF\KXKTK^KVKZK[K]K_KPPSPQPOPTPNPVPPTNTRTOTQTST1ZaW^W6\9\:\)^B_s`H(\bjd/,q@r@WP4Z;\;!="P#Z%L(J(N(K(M(2,W0V0U0A5?5~:t@u@v@s@Ec5Z*^>"^%\%]%P(X0Y0Jb?"R#Q(4,$;x@%e_%5,TTT#T(U(Z0[0kdC5&;%;D58ZldU#Z#a%f%b%c%](^(\(_(W(X(?,;,md<,B,>,A,C,=,c0_0d0a0b0^0qbrbK5H5G5Q5R5O5U5+;F5N5J5T56;(;';7;*;.;4;3;1;-;!A|@z@y@}@nd\FTFVFYFZFodeKfKcKkKgKiKjKhKpdXP[PZPqdWTYTUTrdbW9Z=\<\>\-^C_0`!G"H"xfn%m%e(g(h(H,l0k0a5`5?;@;>;tdaF`F\Pud?\?!a#i(k(L,K,n0o%m(d!I"b#B;q%n(p(M,o0b5c5G;E;D;"AcW@!A!J"Q#q(#A^PdWdaB!r%P,$AE_v(u(dbp0r0q0vdwdK;cFdFrKxd/^M"QbL"x%f#g#i#w%{%v%t%~(|%"&!&}%#&z%u%x(")fbZ,w([,z(!)gb`,y0V,s0W,],~0T,_,a,z0x0{0\,v0"1%1h5t0'1q5r5#1(1!1o5&1T;j5V;U;n5y5X;Y;v5Z;M;t5^;O;Q;];+Aa;b;c;P;yd)A'A,AoFnF(AlF.AmF*AzdsK~KtKqF|KrFjF!LhFsFkF#LtF$LwKzKvKhP(LgP)L%LyKuKaPcPjPdPfPlPbPePkPyfaT_T\T^T]T[TeWF_>ak#%&c,d;vFuF,LmPH_e!f!N"(&)&)1P"o#l#m#n#9&.&*&7&/&6&5&3&4&8&1&{d2&1)*)&)()%)4)2)3).)0)7)5)6)/)))m,o,p,l,2131k,n,,1/1518171<1.19101;161|d}d16'6)6&626"6|5+6#6}5$6-6~d.6q;p;s;g;f;h;r;m;9co;!eIA2A:A8A>A=A6A3A4AHA%GBADAEAvfxF(G~F$GzF!G*G#G"G{F)G-L&G5L8L0L/L;L1L.L>L?L4L=L:L9L"e7LpP2LwPvPoPyPuPdTgTkWmWlWiTjWpWnW;Z)B)@)A)~,z,#-|,y,},!-$-%-"-7,F1L1D1I1H1M1E1C1B6K1D6E6&<};%<#<|;~;$<[AVAYAQA4G5G9G3G7GDLFLAL@LCL}P#QzP~P"QqToTpTlTmTrTCZBZ&eB\C\?aA&'e$QE)'-2fH6G6F6)<&Q3fR"w#x#u#H&I&E&D&G&B&J&WbG)R)I)_bJ)O)H)N)L)(e)e6-.-0---1-+-:-*-Q)4-2-9-7-8-+e*e]1W1S1[1^1d1P1_1V1c1T1O1Z1Y1/-b1X1a1`1-e,eU6`6N6[6W6Q6Z6M6\6P6K6T6x4L6R6^6_6V6EGRcCG;GQ/QDQ'Q.Q2QAQ:Q1e2euT{T!U|TvT'U#UzT$UxT)UtWwW!XvWxW~WyW#X}WzW"X{W3eDZOZEZNZGZMZHZFZ4eI\uWG\5e5^4^3^7^O_N_6e7et`@aeaAay#S)T)ib<-f1e1g1b6}A|AfLeLgLFQEQ+UU)V)=-h1Ie)7'7TBGB=BEB?B;BFBVGWGeGcGxL[GjLdG_GZG\G^G]GtLbGaGDeEefGCe}LsLkLuL~LlLyLzLcc{LwLGeFeVQTQXQMQPQqLUQ0U/U5U6U1U7UUZYQ9UHe(X*X'X&X)X+XRZTZSZJeIeQ\O\<^:^;^6`R_7`Keya($&$'$+$b&_&^&c&`&w)t)p)u)o)y)v)r)q)^-\-Z-X-jbe-b-_-d-c-h-]-Me(2yb*2+212/2)2-2,2OeNe020727/757.7,7-71737PeQet<}<|UCU@UAUBU-X.XVZWZY\_eV\X\U\XZS\W\aeS_T_9`CaBai-"=k-|)]B\B[B.M-Md&!*"*#*m-62$=#=%=uG/M{a,$-$k&i&f&g&j&h&&***'*(*u-t-p-s-q-8292&=;7:797'=.=)=+=*=aB-=(=_BbBbece0MyGxGzGwGIUZ"k!/$n&3*-*,*+*2*/*x-{-w-z-~-y-|->2@2G2<2F2A2=2de=78=?2@7<7ee6=:=/=;=2=9=mB5=dB3=<=fe7=hBuBoBtBnBfBqBsBgBkBpBjB%H~G|G}G"H!H{G'H#H1M;M9M6M5Mhe:MjQucgQlQkQgeOUKUMUie/X0XZZ\Z]Z[Z^\\\_\]\`\=^".!.$.H2==wB(H=MmQnQD7xBE7>=7*8*5*6*'.%.(.*.&.N2M2P2O2Q2F7I7G7C=B=D={BpQRUb\E=["s&:*;*+./.W2U2R2J7G=|B}B+H)HqQsQrQtQUUSUTU4X3X2X?^>^;`je\"ket&v&M7L=~B!CvQVUWU^ZM=0H.Hlew&x&2.Z2[2P7R7Q7O=1H5X5.3.lbd2_2^2h2Y7g2e2U7\2c2S7b2W7V=S=Q=R='C(C%C&C9H3H6H5H4H8H;H=HDMFM{QyQYUXU[U\U6X8X;X:X9X`Z_ZB^2di2W=6.{&|&9.;.>.7.:.=.mene|fl2m2oeb7c7]7_7a7`7peqere\=Y=]=Z=1C-C.C7C)C5C+C0C4C*C6C>H?HEHDHse@HJMMMHMLMKMIM!Rte$R"Rue`UbUaUCX>X@X?X*=*?*B*D*LeB.@.A.C.t2s2y2v2{2w2x2|2i7g7k7j7l7e=f=i=h=ACDC$eKHMHPHOHRHUMVMZMSMWM*RdU,R)RfZeZgZd\v`w`D.G.I.H.r7q7p7FCGC|e[M/R.RhUI^H^~&!'G*N.O.M.K.L.#3&3'3$3s7q=p=ICJCTHUH0RiUjUIXU_Q.P.+3*3,3x7y7w7{7v7-cz7}e{=x=u=y=r=v=~eOCLCUCMCw=TCQCVHXH`HZH^HWH]H\H\MeM]M`MgcfccM!f3R4RmUkUnUpUqUoUPXNXQXLX"f#foZnZ$ff\e\%fL^K^X_W_?`>`&fDa:bI*H*R.T.S.13.30323-3}7~7!8>8"8!>#>">~='fXC\CbHaHoMqMmMpMsMrMnM7RuUtU9RUXTX(fia@`"'K*J*73;3)8&8'8.8$8+84>)>&>.>/>(>,>*>$>5>3>gC+>fCiC`CbC^CdChCjCcCtHmHnHpHiHhHqHsH)fkH+f"N|MxM$N/N.NwM+NuM(N)N%N,N'N~M}M*f;R@R?RyUzUYX[XXX,fZXrZtZuZl\S^P^Q^R^Z_5b18-fwH}U\X[_N*<3xHyH0N"d].=3?3>3nC1N]XB3C37>8>rC2N~UaX{f68D37898"I!VbXo\I3H3G3/f=8<8;8<>)gsCVc#I&I;>%I0f4N6N7N5N8NCR"Vp\q\r\5$6$$'&'%'#'V*[*X*O*Y*R*T*W*1ff.`.a.^.e.d.L3J3R3K3N3M3O3c.D>I8G8.cA8B8E8H8>>C>E>A>=>@>B>{C~CuCvCwC#D|C"D'I*I;N=N9NH>I>]*+IJRhXyZh.W3X3U3&D4f-I.IzZ{ZU^|Z8$(')'+'`*k*f*l*^*h*v.j.k.x.r.t.i.n.o.z.y.w.5f7fb3M8Y3_3[8_*W>Z3c36f3-N8Q8T8P8O8]8U8^8W8R8X8_8^>O>Y>M>_>K>R>\>Z>P>X>]>V>N>9f[>8f-D1D:D5D,D>D'D3D?D@D2D8D0DICI;ff~Z}Z"[{\%[?fv\x\|\"]~\#]w\!][^Z^\^X^V^W^@fC`/`FaAfGa|ac8`8a8a>-'Bf#/|.~.$/i3l3o3n3k3j3p3m3f8d8b>c>h>DDEDIDFDHDOIJIEILIIINIKICf]NYN[R]R_RbR^REfDf:V9V;V6V4V([vXxXsXtXuXFf,['[)[wX+[%]$]]^__E`Gf&/j8j>i>q3HfMD_NcRdR'/t3w3r3s3u3v3Ifr8n8t8l8k8s8m8o8q8p8p>r>m>o>NDOD`NYIRIWITIQIVIXIaNbNeR@V?V=VBVyXzX|X{XJf)](]Ia}aKf/[F`Ja)/v8u8w8t>eNfRdNFV~X}X!Y1[*]a^TD\IfN2[*/,/{3z3|3~8#9)9y8{8%9"90cz8|>}>$?~>u>!?#?x>"?`DYDcDUDXD[D\DaDVD]D_IdIcI^IbIkIhI`IeIfItNgNrNpNnNlNsNuNiNjNvNjRkRoNgRnRiRhRLfIVJVHV*Y&Y$Y(Y#Y4[5[6[3]0],]2]+].]m\-db^c^a_b_H`G`I`{`Kaka~a*9MVd_4]Mf!b-9,9*?)?dDmI+Y.9,?+?-?JceDzNOVMa./092919/?iDgDpIrIqINf~N}N"OuRsRQVRV.Y8[Of(de^f^PfJ`Na39:$997959899?4?7?0?3?8?uIsItI&O%O#OwR1YQf>9:9=9??:?;?>?kD{IzIyI,O+O~R{R|RTVUV2Y:[9[;[<[=[7]K`Pala?9@9@?sD}I|I0O2O/O1ORf5Y6Y?[8]SfA9G9E?G?D?F?I?vD6O3O5O4O$S"S!S%SYVZV7Yg^"bK?wDxD!J"J7O'S&STf8Y9O/';$0'3'1'r*p*t*s*q*1/2/3/0/%4'4&4K9J9N9L9O?P?M?L?Q?U?V?T?W?}DyD|DzD{D~D$J'J&J/7/S8S2S6S7S;SYDYFYEYafbf`fP[D[E[C[H[M[O[J[A[B[N[G[efcfdfA]j^C]<]?]>]=]D]E]G]B]:]ffgfhfF]m^i_n_j_l_k_R`1dU`T`V`O`S`W`jfif"aoa#b6b#c@/24\9l?kfJSOUOVOBSDS@SmVlfKYJYS[mfC!;':'?'<'='>'y*|*{*6444^934a9e9q?r?s?u?p?@EBEEJFJDJZO[OHSpVoVqVI]}*IS%c94GJIJp^%a/b~?|?{?FEGE`OPSMSLSQStVuVO]L]N]r^q^nfq_r_Y`&aofEb~*IELJOY!@!+NJs^$@"@KEbOcOdOSSzV{VPY_[][^[`[P]Q]u^t^s_(a;bUSQYv^)aOEeOa[PES]RETJUJRJVJiOgOncfO\SYSZS(RXS]S[S_S[Y&W{c(WYYVYXYe[*dx^w^]`^`\`aS*W\YV]{^y^z^%b|^&bg9pfh9[E+@\ETEYEWE]JXE^J[JzfkOeSfSdSbScSbYaYfYeYcYqfi[X]~^x_*a_EhS0WgY!_``cJbJfJaJ`JlJdJjJsOmOnOrOtOpSqSkSlSjS4W7W3WjYkYmYo[m[l[n[k[Z]$_"_y_b`a`rasa/@wOvO:Wa]`]^]%_ta4cnJ{_c`2@aEoJsJqJpJrJyOuStS;WWc]bExJ?Wd](_/acE~O|O{O}OxSzS#T|S!T%T}SySsfDWEW@WBWtYsYt[vYuYCWqYu[w[y[z[o]q]g]i]j]t]u]n]h]f]v]s]r]p],_/d*_%`~_#`"`e`f`h`2a3a4aYa[auaAbdEfEB/hEgE'P*P$P+P-T%P"P*T,T6T3T7T)T5T2TMWHWJWufyY{Y}Y~Y"ZzY}['\"\%\~[&\$\#\y]z]5_1_2_6_l`5a]a)b0b8b7_iE,P9T$Z)\!^:_1b?bG%/P.P:TPW&Z%Z"K"^j9T$^>_3bUW+`BbG^?_aawa XN N$RNNWNN[OO`OPePxP|qPPvQ Q{QQ~QQQQQQQQQQRcRhRRRRRRS2S;SSSSSST!T#TITQTTTTUXUZUqUsVMVVVVVVVVVVWBWHWSWYWWWW WW X_XaXfXlXXXX!YY +YKYM7YY:Z*Z,=Z~Z@ZZLZZQ[7[;W[[\[[_[\c\\g]] j]]m]]t^,^2x^F^H^^_ __9_;_P_U____`N`R`s`u``aa"aaaaaaaab5b<bbbbbbc[c]d8d<dUdWe_eaemeqffffffggggh"h$hUhZhh hh hij)j-jjjjjj%jk*kk/k&k+2khkt8llEmmJm[m]MmqmsPmmSmn VnneoHoLjooop,p.tppwppq*q-q3q?qtqwqqqqrrrdrhs(s/sFsHsSsUssttt8t>tEtIttuUuXvvw?wCwtw{xx yy yy yyyyyyyyz)z-#zz(zz2zz6{A{C<||?||C}t}xK}}P}}U}}Z}~a_khz|ux@B}35EGQS(,ˑޑВ "Ӓ֒ڒےޓ02rt哻$X\eg 374O4N9}9zK/K.K0!/!5!Q!{/f/a/c/d4P`,!7!T!S$c$b'a/o/l/j/m/nF#K4TD\4!)!W$f:(:'@J@I@H'i'j4U:)+P+O+N+M$y$~$u$|$x$t$m$}%"+UdT+c+a/t/x0"4W:64ddVg"dUKCKEK@F5KBGB=eDeEGfeCU0U/U5U6ZSeJeI)t)p)u)o)y)v)r)q-\-Z-Xbj-e-b-_UCU@e_\V\X\UZX\S\Wea&d*!*"*#=.=)=+=*Ba=-BbebecGxGzGw-~-y-|=6=:=/=;=2=3=.7.:XCX>X@X?X*=*?*B.C2t2s2y2|7i7g7k7jHKHMHPHO&~'!*G.N.O.M.K.L3#3&3'3$HUR0UiUjXI={=x=u7~8!8>8"MoMqMmMpMsMr>$>5>3CgCfCiC`CbCdChCjCcHqHsf)Hkf+N(N)N%N,N'M~M}I&>;I%f0N4N6N7N5N8\p\q\r*V*[*X*O>C>E>AN;N=N9NX>]>V>NI5IDI3I8N@NLNFNTNMNNNR8j>j>iI^IbIkIhNgNrNpNnNl]4fMb!?9?4?7?0?39?9@?@DsI}I|O0O2O/O1?KDwDxJ!J"O7S'S&?O?P?M?L?Q4/4.41?^fY?cJ2J7g*J1OKONODOMf[f\J0SPEkPcLPEnPElPEmPEqPEtPK)PK+QK-QP1QP5QP0QP4Q'TAQ(T@Q+P3Q/WRQ6\2Q>`oQJ"xQN$TQP$SQQ$QQV'RQ`9vQd^%Qf!4Qj+7Qr"zQy.{Q~@?QdSQ!xQ!yQ'UQ!(Q!zQ$WQ+9Q/[Q/YQ/ZQ4MQ$ZQ/^Q/_Q9~QTBQ#"Q$[Q'YQEzQ'ZR!6R!RR !}R#%R#$R#&R#'R$_R $aR#$\R&$^R'$]R+$`R/'[R4'^R9'_R<']R>dORE+?RH+@RO+CRS/hRW/eRY/bR`/`Rp:#Rs:!Rv4QRy@AR~@@RK1RK2RP6RP7R#(R'`RbZR'bR+HR+FR+GR4RR@ER@DR@FRF!RE~RK3RM,R!US!VS"#S""S"$SP8S"&S$dPS%$eS'+ISF!YSK#*SO#+SP#-SU'cSX+JS]!ZS_"'SedQSg*\Si!*Sm"(St$gSv'eSz'fS}+KS@GS![S")S#/S'gSdRS4TSF%SF&SK5STES!+S!\S"*S#1S!^S!`S"+S#3S'kS@KS"1S"-S".S"/S#5T#7T#9T#:T#;T#4T$vT/%$T2$wT4${T:$pT?%!TD$sTZ%#T_'nTi'tTj'xTm'uTy'qT'lT'pT'yT'sT'oT'wT+\T+]T+WT+YT+[T+TT+^T+QT+ST+XT/wT0!T/yU/{U/zU /sU/vU/~U0%U(g!U)4_U+4hU:4fU?4gUI4[UL4XUS4bUT4aU]4^Uh4YUkdWUz:VGK7VKK;V_P?VaP@VgP;V{P=V}THVTIVTGVd]Vd[VW[VWZVWXVZ-Vd^Vg(V_@V`qV!wV#>V%,V%&V%+V%*V("V'}W+eW0'W:DW:CW@RWF7W_AW!!aW$"4W'bIW1#AW2#BW5#?W6#@W<%1W=%>W?%0W_%5Wc(%We(#Wg(&Wn((Wx()W(*W($Wd`W+qW+pW+kW+fW0*W00W0/W08W0+W06W02W4nW4qW4rW4tW4iW4kW4oW4uX4vXdaXdbXdcX:JX:EX:GX":PX&:LX+c6X::NX<:IX>:KXEc7XGddXP@WXV@[X\@VXrFCXsF>XwFBXxFZ!0;Z"0EZ$0HZ&0RZ/0MZ10KZ:5(Z;5$Z=51Z?53ZE5.ZK5*ZN5/ZO5;ZT5:ZY59Za5'Zc5\0X\0Y\bJ\"?\#R\(Q\,4\;$\ @x\!e%\+%_\/,5\6TT\=#T\I(T\J(U\R0Z\S0[\Wdk\[5C\^;&\_;%\a5D\kZ8\wdl\x#U\#Z\%a\%f\%b\%c\(]\(^\(X\,?\,;\dm\,<\,B\,>\,A\,C\,=\0c\0_\0d\0a\0b\0^\bq\br]5Q]5R]5O]5U];+]!5F]*5N],5J]/5T];;6]>;(]D;']F;7]H;*]M;.]O;4]S;3]W;1][;-]`A!]d@|]f@z]m@y]n@}]udn]xF\]{FT]FV]Kk]Kg]Ki]P[]PZ]dq]TW]TY]TU]dr]Wb]Z9]\=]\<]\>]^-]_C]`0]!<]5W]Kl]%g](`],E],D^!c^#\^ %h^ %k^(b^(a^,F^*0f^55Y^95X^:5Z^B9y^RF]^ZKm^^Kp^eds^qfw^w(c^z!=^!>^"G^"H^fx^%n^%m^(e^(g^(h^,H^0l^0k^5a^5`^;?^;@^;>^dt^Fa^F`^P\^du^\?^!?^#a_%o_(m_;B_%q_!(n_%(p_/,M_20o_45b_>;D_BA"_MWc_ZA#_[P^_]Wd_`ad_a!B_c%r_f,P_nA$_r_E_(v_(u_0q_dv_dw_;K_Fc_Fd_Kr_dx_^/_"M_bQ_"L_%x_#f_%{_%v_%t_(~_%|_&"_&!_%}_&#_%z_%u`(x`)"`bf`#,Z`0(w`1,[`6(z`=)!`Hbg`J,``K0y`V0~`\,T``,_`a,a`|,\`~0v`1"`1%`5h`0t`1'`5q`5r`1&`;T`5j`;V`;U`5n`5y`;X`;Y`5v`;Z`;M`5t`;^a;Oa ;Qa;]aA+a%dya*A)a0A'a1A,a3Foa8Fna:A(ab#kb&%b,cb;db(Fvb,Fub/L,b1PmbE1)bO"PbW#ob]#lb_#mbg#nbu&9bx&.b&*b&7b&/b&6b)&b)(b)%b)4b)2b)3b).b))b,mc,oc,pc,lc12c13c,kc!,nc.1,c01/c115c518c717c?1d)A=d1A6d2A3dFADdGAEdIfvdLFxdOG(dbG!ddG*djG#dqG"d|F{d~G)dL-dG&dL5dL8dL0dL/dL;dL1dL.dL>dL?dL4dL=dL:dL9de"dL7dPpdL2dPwdPvdPodPydPudTddTgdWkdWmdWldTidWjdWpeWneZ;e Zf)Bf-#f#,|f),yf,,}f0-!f7-$f8-%f;-"f<,7f@1FfD1LfF1DfH1IfK1HfM1MfN1EfP1CfW6Bf`1Kfc6Dfg6Efi<&fk;}fm<%fs<#f};|f;~f<$fA[fAVfAYfAQfG4fG5fLDfLFfLAfL@fLCfP}fQ#fPzfP~fZCfZBfe&f\Bf\Cfa?f&Age'gQ$g )Eg-'gf2g6Hg6Gg6Fg<)g$Q&g%f3g/"Rg2#wg6#xg7#ugD&HgJ&IgR&EgT&DgX&Gg[&Bga&JgebWgk)Gg)Rg)Igb_g)Jg)Og)Hge)g-6g-.g-0g--g-*g)Qg-4g-2h-9h-7h-8he+he*h1]h1Wh1Sh1[h'1_h,1Vh01ch61Th71Oh>1ZhG1YhR-/h^e,hl6Uhp6`hs6Nhz6[h6Wh6Qh6Zh6Kh6Th4xh6Vhh6Sh<=h<2h<*i <7i<AhiCAkiFA]iGAuiMAsiPAtiUAoiaAyidAxigAvisAmi|Aji}A{iAriG:iG=iGQiGNiGFiGGiG>icRiGCiG;iGjWQ/j\QDjcQ'jlQ.jnQ2jpQAjqQ:jwe1jze2j}TujT{jU!jT|jTvjU'jU#jTzjU$jTxjU)jWtjWxjX"jW{je3jZDjZOjZHjZFje4j\IjWuj\Gje5k_Ok_Nk e6ke7k`tk"#yk.1ek01gk56bk@A}kDA|kOLfkRLekSLgkWQFkXQEk]U+kz"Sk)Xk1jk6dkB"kcTkGTk)Yk6ekn7)n7'ns2@s2Gs2u;*7uA*8uB*5uD*6uF.'uI.%uJ.(uM.*uP.&u^2Qua7Fug7Iuh7Gum=Cun=Buq=DuzB{uQpuURu\bu=Eu"[u&su*:u*;u.+u./u2Wu2Uu2Ru7Ju=GuB|vB}vH+vH)v,Qqv6Qsv7Qrv;QtvDUUvEUSvNUTvOX4vQX3v[X2vg^?vh^>vo`;vsejvv"\vwekv&tv&vv7Mv=LvB~vC!vQvvUVvUWvZ^v=MvH0vH.velv&wv&xv.2v2Zv2[vH1vX5v.5v.3wblw2dw2_w2^w2hw7Yw!2gw$2ew&7Uw*2\w+2cw07SwH=QwI=RwSC'wXC(w]C%wdC&wqH9wMDwMFwQ{wQywUYwUXwU[wU\wX6wX8wX;wX:wX9wZ`wZ_w^Bwd2w2iw=Ww.6w&{w&|x.9x.=xemxenxf|x$2lx62mx=eoxB7bxF7cxG7]xK7_xO7axQ7`xSepxTeqxXerx_=\xc=Yxf=]xv=ZxxC1xzC-x}C.xC7xC)xC5xC+xC0xC4xC*xC6xH>xH?xHExHDxesxH@xMJxMMxMHxMLxMKxMIxR!xetxR$xR"xeuxU`xUbxUayXDyZayZby Zcy"evy.^Ey0^Cy2^Dy7`MZzAMSzBMWzER*zIUdzOR,zSR)zdZfzfZezjZgzo\dzr`vzs`wz|.Dz}.Gz.Iz.Hz7rz7qz7pzCFzCGze|zM[zR/zR.zUhz^Iz^Hz7sz=qz=pzCIzCJzHTz_Uz.Qz.P{ 3+{ 3*{3,{7x{7y{7w{7{{!7v{)c-{67z{7e}{S=y{U=r{W=v{Ye~{^CO{bCL{hCU{kCM{l=w{oCT{yCQ{HV{HX{H`{HZ{H^{HW{H]{H\{M\{Me{M]{M`{cg{cf{Mc{f!{R3{R4{Um{Uk{Un|Up|Uq|Uo|XP|XN|$XQ|.XL|/f"|2f#|4Zo|5Zn|Bf$|D\f|K\e|Nf%|Q^L|V^K|X_X|]_W|^`?|b`>|hf&|maD|qb:|t*I|v*H|w.R|{.T||.S|31|3.|30|32|3-|7}|>!|>#|>"|=~|f'|CX|C\|Hb|Ha|Mn|R7|Uu|Ut|R9|XU|XT|f(|ai|`@|'"|*K|*J}$37}%3;}-8)}48&}78'}H8.}I8$}L8+}M>4}W>)}Y>&}Z>.}]>/}`>(}d>,}l>*}~>+}C^}Ht}Hm}Hn}Hp}Hi}Hh}N"}M|}Mx}N$}N/}N.}Mw}N+}Mu~f*~R;~&R@~'R?~,Uy~MUz~OXY~[X[~]XX~df,~fXZ~lZr~nZt~qZu~\l~^S~^P~^Q~^R~_Z~b5;81@f-AHwFU}GX\N_[Y*Nb3<oHxqHyxN0d".]3=3?3>CnN1X]3B3C>7>8CrN2U~Xaf{86 3D8789#I"+V!.Xb/\o;3I<3H@3GAf/D8=E8D8I8G(c.*8A.8B18E48H;>>E>=H>@I>B]C{_C~cCujCvlCwmD#uC|}D"I'I*N:RIRGRDV#V$XeZwZx>G>H>I*]I+$.h'3W)3X-3UAD&Hf4JI-LI.bZzeZ{j^UvZ|{$8'(')'+*`*k*f*l*^*h.v.j.k.x.r.t.i.n.o.z .y.wf5f73b8M3Y!3_#8[>*_F>WW3ZX3cbf6c-3q8Nr8Qy8T8P8O8]8U8^8W8R8X8_>^>O>Y>M>_>K>R>\>Z>Pf9>[!f8*D-.D1>D:AD5HD,JD>OD'SD3UD?XD@\D2bD8dD0qDICf;fZ~Z}["\{[%f?\v\x\|]" \~]#\w]!^[^Z^\(^X+^V/^W7f@=`CA`/BaFEfAIaGJa|W8cX8`Z8a]>al'-rfBu/#v.|x.~}/$3i3l3o3n3k3j3p3m8f8d>b>c>hDDDEDIDFDHIO+IJ6IE9IL=IIEINGIKJfCqN]}NYR[R]R_RbR^fEfDV:V9V;V6V4[(XvXxXsXtXufF[,['[)Xw[+]%]$^]'__-`E4fGB/&O3qPfHXDM\N_^Rc_Rdf/'n3ts3wx3rz3s{3u3vfI8r8n8t8l8k8s8m8o8q8p>p>r>m>oDNDON`IYIRIWITIQIVIXNaNb$Re9V@?V?@V=CVBHXyJXzMX|NX{TfJe])g](xaI}a}fK[/`FaJ/)8v8u8w>tNeRfNdVFX~X}Y![1]*^aDTI\Nf[2/*/, 3{ 3z3|8~ 9#!9)&8y(8{)9%+9".c028z5>|8>}=?$B>~C>uI?!K?#Z>x]?"dD`eDYgDcjDUoDXxD[}D\~DaDVD]I_IdIcI`IeIfNtNsNuNiNjNvRjRkNoRgRnRiRhfL VI VJVH)Y*-Y&2Y$4Y(8Y#?[4C[5L[6M]3a]0b],d]2i]+n].q\msd-u^b|^c_a_b`H`G`I`{aKaka~:9*@VMD_dX9-[9,^?*`?)cDdgImtY+|9.~?,?+?-cJDeNzVOaM/.909291?/DiDgIpIrIqfNN~N}O"RuRsVQVRY. [8 fOd(^e^ffP`JaNe93q$:z99|97~9598?8IuIsItO&O%O#RwY1fQ9>9:9=???:?;?>DkI{Iz Iy(O,*O+2R~;R{CR|FVTOVUXY2h[:k[9p[;u[/7/S8 S2S6S7,S;?f]Bf^ES1HVeSVf]V]_VgbVdfV[hVhiV^kVknVaxV\}V`Vjf_YCY@YBYIY>YDYF[P[D[E[C[H[M[O[J]C]<]?]>]=']F-^mB_iC_nM_jN_lT_kV`R_`Oa`Sla"zao{b#b6yc#/@429\?lfkEOSOUOVSBSDS@VmflYKYJ[Sfm!C&';'':)'?+'<3'=4'>7*y>*|A*{V46Y44Z9^`43n9ay9e{?q?r?s?u?pE@EBJEJFJDOZO[SHVpVoVqc%49JGJI^pa%b/EFEG O` SPSMSLSQVtVu1]O;fn<_q@_rA`YEa&MfoPbEQ*~UEIYJL]YO_@!c+!dJNg^sm@$o@"yEKObOcOdSSVzV{YP]P]Q^u^t_sa(b;SUYQ^va)EOOe[aEP]S ERJTJUJRJVOi"Og#cn*Of.S\1SY3SZ4R(6SX:S]GW(KYYad*f^xh^wSaW*Y\]V^{^y^zb%^|b&9gfp9hE[@+E\ETEYEWJ]EXJ^J[fzOkSeSf Sd"Sb#Sc6Yb8Ya9Yf;Ye@YcBfqD[iM]XO^~Z_x]a*E_ShW0Yg_!``JjOsOmOnOrOtSpSqSkSlSjW4W7W3Yj YkYm[o[m[l![n&[k/]Z;_$<_"Q_yX`b\`aaarcas@/OwOvW:]a]`]^_%atc4Jn_{`c@2EaOySuStW;W<Yo [q_'fr!a,&Ju*]b,a.-d30b(4W>8]c=Eb@JxIW?P]dS_(Wa/]EccO~iO|kO{rO}SxSzT#SyfsWDWEW@WBYtYs[tYq[u[w[y[z]o]q ]f ]v]s]r]p_,'d/._*5`%8_~:`#E`"O`eQ`fS`h]a2aa3ea4laYoa[vau{bAEdP'P*P$P+ T- P% P"T*T,T6T3!T7$T)'T5*T25WM9WHDWJIfuMYyNY{PY}UY~^Z"cYzf[}m\'n\"v\%z[~~\&\$\#]y]z_5_1_2_6`la5a]b)b0b8{_7EiP,T9Z$\)^!_:b1b?%GWPZ&Z%K"^"Z(9kT=\*`)'ra_Ej\0a`&Z+'Z*9`mEa;P#pST>Z^$i_>|b3WU`+bB^G_?aaaw X N$NRNNWNN[OO`OPexP|PqPPv QQ{QQ~QQQQQQQQQQcRhRRRRRRR2S;SSSSSSS!T#TITQTTTTTXUZUqUsUMVVVVVVVVVVVBWHWSWYWWWWW WW _XaXfXlXXXXX!Y Y+KYMY7YY:*Z,Z=~ZZ@ZZLZZQ7[;[W[[\[[_[\c\\g] ]j]]m]]t,^2^xF^H^^^ __9_;_P_U_____N`R`s`u```a"aaaaaaaaa5btEtItttUuXuvv?wCwtw{wx xy yyy yyyyyyyy)z-z#zz(zz2zz6A{C{<||?||Ct}x}K}}P}}U}}Z}~a_khz|ux@B}35EGQS(,ޑ "ڒܒ02rt$X\eg 37+O4N4}9z9/K.K0K/!5!Q!{!f/a/c/d/P4,`7!T!S!c$b$a'o/l/j/m/n/#F4KDT4\)!W!f$(:':J@I@H@i'j'U4):P+O+N+M+y$~$u$|$x$t$m$}$"%U+Tdc+a+t/x/"0W46:d4Vd"gUdCKEK@K5FBGB=BDeEefGCe0U/U5U6USZJeIet)p)u)o)y)v)r)q)\-Z-X-jbe-b-_-oUCU@U_eV\X\U\XZS\W\aed&!*"*#*.=)=+=*=aB-=bBbecexGzGwG~-y-|-6=:=/=;=2=3=<=fe7=hBuBtBnBfBqB\Z]Z[Z^\\\_\]\`\=^N2M2P2O2P7R7Q7O=b2W7V=S=3H6H5H4H8H;H=H;.>.7.:.CX>X@X?X*=*?*B*C.t2s2y2|2i7g7k7j7KHMHPHOH~&!'G*N.O.M.K.L.#3&3'3$3UH0RiUjUIX{=x=u=~7!8>8"8oMqMmMpMsMrM$>5>3>gCfCiC`CbCdChCjCcCqHsH)fkH+f(N)N%N,N'N~M}M&I;>%I0f4N6N7N5N8Np\q\r\V*[*X*O*C>E>A>;N=N9N]>V>N>5IDI3I8I@NLNFNTNMNNNRNj8j>i>^IbIkIhIgNrNpNnNlN4]Mf!b9?4?7?0?3??9@9@?sD}I|I0O2O/O1OK?wDxD!J"J7O'S&SO?P?M?L?Q?/4.414^?Yfc?2J7J*g1JKONODOMO[f\f0J@PkEPLcPnEPlEPmEPqEPtEP)KP+KQ-KQ1PQ5PQ0PQ4P'QAT(Q@T+Q3P/QRW6Q2\>Qo`JQx"NQT$PQS$QQQ$VQR'`Qv9dQ%^fQ4!jQ7+rQz"yQ{.~Q?@QSdQx!Qy!QU'Q(!Qz!QW$Q9+Q[/QY/QZ/QM4QZ$Q^/Q_/Q~9QBTQ"#Q[$QY'QzEQZ'R6!RR! R}!R%#R$#R&#R'#R_$ Ra$#R\$&R^$'R]$+R`$/R['4R^'9R_'ROdER?+HR@+ORC+SRh/WRe/YRb/`R`/pR#:sR!:vRQ4yRA@~R@@R1KR2KR6PR7PR(#R`'RZbRb'RH+RF+RG+RR4RE@RD@RF@R!FR~ER3KR,MRU!SV!S#"S""S$"S8PS&"$SPd%Se$'SI+FSY!KS*#OS+#PS-#USc'XSJ+]SZ!_S'"eSQdgS\*iS*!mS("tSg$vSe'zSf'}SK+SG@S[!S)"S/#Sg'SRdST4S%FS&FS5KSETS+!S\!S*"S1#S^!S`!S+"S3#Sk'SK@S1"S-"S."S/"S5#T7#T9#T:#T;#T4#Tv$/T$%2Tw$4T{$:Tp$?T!%DTs$ZT#%_Tn'iTt'jTx'mTu'yTq'Tl'Tp'Ty'Ts'To'Tw'T\+T]+TW+TY+T[+TT+T^+TQ+TS+TX+Tw/T!0Ty/U{/Uz/ Us/Uv/U~/U%0(U!g)U_4+Uh4:Uf4?Ug4IU[4LUX4SUb4TUa4]U^4hUY4kUWdzU<:U1:U8:U.:U*:U3:U@:U4:UB:U;:U/:U#gUQ@UN@U+:UL@U%gU$gUXdU.FU(FV)FV6FV,F V*FV4FV3FV1F VZd"VYd&VPF(V0F+VAK-V8K1V=K7VDKDV>KGV7KKV;K_V?PaV@PgV;P{V=P}VHTVITVGTV]dV[dV[WVZWVXWV-ZV^dV(gV@_Vq`Vw!V>#V,%V&%V+%V*%V"(V}'We+W'0WD:WC:WR@W7FWA_!Wa!$W4"'WIb1WA#2WB#5W?#6W@#%?W0%_W5%cW%(eW#(gW&(nW((xW)(W*(W$(W`dWq+Wp+Wk+Wf+W*0W00W/0W80W+0W60W20Wn4Wq4Wr4Wt4Wi4Wk4Wo4Wu4Xv4XadXbdXcdXJ:XE:XG:"XP:&XL:+X6c:XN:XK:EX7cGXddPXW@VX[@\XV@rXCFsX>FwXBFxX0!Z;0"ZE0$ZH0&ZR0/ZM01ZK0:Z(5;Z$5=Z15?Z35EZ.5KZ*5NZ/5OZ;5TZ:5YZ95aZ'5cZ<5hZ05kZ+5nZ)5oZ45qZ25sZ75uZ55yZu:Z{:Zf:Zb:Z\:Z^:ZV:Zy:Zx:Zg@Zf@ZLFZJFZOFZSFZ\KZXKZTK[^K[VK[ZK [[K []K[_K[PP[SP[QP[OP[TP[NP"[VP)[PT+[NT1[RT3[OT5[QTB[6\D[9\F[:\I[)^J[B_O[s``[H(f[\bg[jdj[/,t[q@v[r@y[WP|[4Z~[;\[;![="[P#[Z%[L([J([2,[W0[V0[U0[A5[?5[~:[t@[5Z[*^[>"\X0\Y0\Jb\?"\R#\Q(\4,\$; \x@!\%e+\_%/\5,6\TT=\T#I\T(J\U(R\Z0S\[0W\kd[\C5^\&;_\%;a\D5k\8Zw\ldx\U#\Z#\a%\f%\b%\c%\](\^(\X(\?,\;,\md\<,\B,\>,\A,\C,\=,\c0\_0\d0\a0\b0\^0\qb\rb]Q5]R5]O5]U5]+;!]F5*]N5,]J5/]T5;]6;>](;D]';F]7;H]*;M].;O]4;S]3;W]1;[]-;`]!Ad]|@f]z@m]y@n]}@u]ndx]\F{]TF]VF]kK]gK]iK][P]ZP]qd]WT]YT]UT]rd]bW]9Z]=\]<\]>\]-^]C_]0`]!^G"^H"^xf^n%^m%^e(^g(^h(^H,^l0^k0^a5^`5^?;^@;^>;^td^aF^`F^\P^ud^?\^?!^a#_o%_m(_B;_q%!_n(%_p(/_M,2_o04_b5>_D;B_"AM_cWZ_#A[_^P]_dW`_daa_B!c_r%f_P,n_$Ar_E__v(_u(_q0_vd_wd_K;_cF_dF_rK_xd_/^_M"_Qb_L"_x%_f#_{%_v%_t%_~(_|%_"&_!&_}%_#&_z%_u%`x(`")`fb#`Z,0`w(1`[,6`z(=`!)H`gbJ``,K`y0V`~0\`T,``_,a`a,|`\,~`v0`"1`%1`h5`t0`'1`q5`r5`&1`T;`j5`V;`U;`n5`y5`X;`Y;`v5`Z;`M;`t5`^;aO; aQ;a];a+A%ayd*a)A0a'A1a,A3aoF8anF:a(Aabk#b%&bc,bd;(bvF,buF/b,L1bmPEb)1ObP"Wbo#]bl#_bm#gbn#ub9&xb.&b*&b7&b/&b6&b&)b()b%)b4)b2)b3)b.)b))bm,co,cp,cl,c21c31ck,!cn,.c,10c/11c515c817c71?c<1Rc.1Sc91`c|ddc}dfc16jc'6lc)6sc&6tc26yc"6~c|5c+6c#6c}5c$6c-6c~dc.6cq;cp;cs;cg;cf;ch;cr;cm;c9cco;d!edIAd2Ad:Ad8Ad>A)d=A1d6A2d3AFdDAGdEAIdvfLdxFOd(Gbd!Gdd*Gjd#Gqd"G|d{F~d)Gd-Ld&Gd5Ld8Ld0Ld/Ld;Ld1Ld.Ld>Ld?Ld4Ld=Ld:Ld9Ld"ed7LdpPd2LdwPdvPdoPdyPduPddTdgTdkWdmWdlWdiTdjWdpWenWe;Z e)fB)f#-#f|,)fy,,f},0f!-7f$-8f%-;f"-hZ1GhY1Rh/-^h,elhU6ph`6shN6zh[6hW6hQ6hZ6hK6hT6hx4hV6hEihACikAFi]AGiuAMisAPitAUioAaiyAdixAgivAsimA|ijA}i{AirAi:Gi=GiQGiNGiFGiGGi>GiRciCGi;GiQWj/Q\jDQcj'Qlj.Qnj2QpjAQqj:Qwj1ezj2e}juTj{Tj!Uj|TjvTj'Uj#UjzTj$UjxTj)UjtWjxWj"Xj{Wj3ejDZjOZjHZjFZj4ejI\juWjG\j5ekO_kN_ k6ek7ekt`"ky#.ke10kg15kb6@k}ADk|AOkfLRkeLSkgLWkFQXkEQ]k+UzkS"kX)kj1kd6k"BkTckTGkY)ke6kKen)7n'7nT<nR<)nk<*nm2s@2sG2s<2sF2sA2s=2sdes=7s8=s?2s@7t<7teet9=tmBt5='tdBCtoBLtsBStgBVtkBXtpB]tjB`t%Hat~Get|Gft}Ght"Hkt!Hlt{Gtt'Hvt#Hzt1M{t;Mt9Mt6Mt5Mthet:MtjQtuctgQtlQtkQtgetOUtKUtMUtiet/Xt0XtZZt".t!.t$.tH2t==uwBu(H u=M umQunQuD7uxB#uE7$u>=;u7*Au8*Bu5*Du6*Fu'.Iu%.Ju(.Mu*.Pu&.^uQ2auF7guI7huG7muC=nuB=quD=zu{BupQuRUub\uE=u["us&u:*u;*u+.u/.uW2uU2uR2uJ7uG=u|Bv}Bv+Hv)H,vqQ6vsQ7vrQ;vtQDvUUEvSUNvTUOv4XQv3X[v2Xgv?^hv>^ov;`svjevv\"wvkevt&vv&vM7vL=v~Bv!CvvQvVUvWUv^ZvM=v0Hv.Hvlevw&vx&v2.vZ2v[2v1Hv5Xv5.v3.wlbwd2w_2w^2wh2wY7!wg2$we2&wU7*w\2+wc20wS7HwQ=IwR=Sw'CXw(C]w%Cdw&Cqw9HwDMwFMw{QwyQwYUwXUw[Uw\Uw6Xw8Xw;Xw:Xw9Xw`Zw_ZwB^w2dwi2wW=w6.w{&w|&x9.x=.xmexnex|f$xl26xm2=xoeBxb7Fxc7Gx]7Kx_7Oxa7Qx`7SxpeTxqeXxre_x\=cxY=fx]=vxZ=xx1Czx-C}x.Cx7Cx)Cx5Cx+Cx0Cx4Cx*Cx6Cx>Hx?HxEHxDHxsex@HxJMxMMxHMxLMxKMxIMx!Rxtex$Rx"Rxuex`UxbUxaUyDXyaZybZ ycZ"yve.yE^0yC^2yD^7y<`zZMAzSMBzWMEz*RIzdUOz,RSz)RdzfZfzeZjzgZozd\rzv`szw`|zD.}zG.zI.zH.zr7zq7zp7zFCzGCz|ez[Mz/Rz.RzhUzI^zH^zs7zq=zp=zICzJCzTHzU_zQ.zP. {+3 {*3{,3{x7{y7{w7{{7!{v7){-c6{z77{}eS{y=U{r=W{v=Y{~e^{OCb{LCh{UCk{MCl{w=o{TCy{QC{VH{XH{`H{ZH{^H{WH{]H{\H{\M{eM{]M{`M{gc{fc{cM{!f{3R{4R{mU{kU{nU|pU|qU|oU|PX|NX$|QX.|LX/|"f2|#f4|oZ5|nZB|$fD|f\K|e\N|%fQ|L^V|K^X|X_]|W_^|?`b|>`h|&fm|Daq|:bt|I*v|H*w|R.{|T.||S.|13|.3|03|23|-3|}7|!>|#>|">|~=|'f|XC|\C|bH|aH|nM|7R|uU|tU|9R|UX|TX|(f|ia|@`|"'|K*|J*$}73%};3-})84}&87}'8H}.8I}$8L}+8M}4>W})>Y}&>Z}.>]}/>`}(>d},>l}*>~}+>}^C}tH}mH}nH}pH}iH}hH}"N}|M}xM}$N}/N}.N}wM}+N}uM~*f~;R&~@R'~?R,~yUM~zUO~YX[~[X]~XXd~,ff~ZXl~rZn~tZq~uZ~l\~S^~P^~Q^~R^~Z_~5b;18@-fAwHF}UG\XN[_YN*b<3oxHqyHx0N"d].=3?3>3nC1N]XB3C37>8>rC2N~UaX{f68 D37898#"I+!V.bX/o\;I3S)gWsCYVc[#InCRt"V5$6$$'&'%'#'Y*R*T*W*1fƀf.ˀ`.Ҁa.Ӏ^.߀e.d.L3J3R3K3N3M3O3 c.D>I8G8(.c*A8.B81E84H8;>>E=>H@>IB>]{C_~CcuCjvClwCm#Du|C}"D'I*I:NIRGRDR#Vȁ$V΁eXԁwZցxZG>H>I>]*+I$h.'W3)X3-U3A&DH4fJ-IL.IbzZe{ZjU^v|Z{8$(')'+'`*k*f*l*Ă^*ɂh*Ђv.؂j.݂k.x.r.t.i.n.o.z. y.w.5f7fb3M8Y3!_3#[8>_*FW>WZ3Xc3b6fc3-qN8rQ8yT8P8O8]8U8^8W8R8X8_8̓^>҃O>ӃY>ڃM>_>K>R>\>Z>P>9f[>!8f*-D.1D>:DA5DH,DJ>DO'DS3DU?DX@D\2Db8Dd0DqIڄCIބ;ffօ~Zۅ}Z"[{\%[?fv\x\|\"] ~\#]w\!][^Z^\^(X^+V^/W^7@f=C`A/`BFaEAfIGaJ|aWc8X`8Za8]a>l-'rBfu#/v|.x~.}$/i3l3o3n3k3j3p3m3f8d8Նb>c>h>DDEDIDFDHDOI+JI6EI9LI=IIENIGKIJCfq]N}YN[R]R_RbR^REfDf:V9VLJ;V͇6V·4VՇ([ևvXڇxXsXtXuXFf,['[)[wX+[%]$]]^'__-E`4GfB&/Oq3PHfXMD\_N^cR_dRf'/nt3sw3xr3zs3{u3v3Ifr8n8t8l8k8s8m8o8q8p8p>r>m>o>ψNDOD`NYIRIWITIQIVIXIaNbN$eR9@V??V@=VCBVHyXJzXM|XN{XTJfe)]g(]xIa}}aKf/[F`Ja)/v8u8w8t>eNfRdNFV~X}X!Y1[*]a^TD\IfN2[*/,/ {3 z3|3~8 #9!)9&y8({8)%9+"9.0c2z85|>8}>=$?B~>Cu>I!?K#?Zx>]"?d`DeYDgcDjUDoXDx[D}\D~aDVD]D_IdIcI`IeIfItNsNʊuN̊iNΊjNЊvNjRkRoNgRnRiRhRLf IV JVHV)*Y-&Y2$Y4(Y8#Y?4[C5[L6[M3]a0]b,]d2]i+]n.]qm\s-dub^|c^a_b_H`G`I`{`Kaka~a:*9@MVDd_X-9[,9^*?`)?cdDgmIt+Y|.9~,?+?-?JceDzNOVMa./092919/?ɌiD͌gDЌpIԌrI֌qI،Nfی~N}N"OuRsRQVRV.Y 8[ Of(de^f^PfJ`Nae39q:$z99|79~59898?uIsItI&O%O#OwR1YQf>9:9=9ɍ??ʍ:?ҍ;?ԍ>?kD{IzI yI(,O*+O2~R;{RC|RFTVOUVX2Yh:[k9[p;[u<[w=[7]K`PalaRf5Y6YÎ?[Ǝ8]ՎSf֎A9َG9E?G?D?F?I?vD6O"3O'5O+4O-$S0"S1!S<%S=YVAZVJ7Y\g^e"bTf8Y9O/';$0'3'Ǐ1'ʏr*̏p*Ϗt*؏s*ُq*1/2/3/0/%4'4 &4K9J9N9%L90U?7V?:T?;W?@}DCyDE|DFzDH{DL~DZ$J_'Ja&Jj/Ɛ7/ɐS8S 2S6S7S,;S?]fB^fE1SHeVSfV]]V_gVbdVf[VhhVi^VkkVnaVx\V}`VjV_fCY@YBYIY>YDYFYP[œD[ƓE[˓C[ӓH[ۓM[O[J[C]<]?]>]=]'F]-m^Bi_Cn_Mj_Nl_Tk_VR`_O`aS`l"azoa{#b6by#c@/24\9l?kfJSOUOVOBSDS•@SĕmVΕlfוKYؕJYݕS[mfC!&;'':')?'+<'3='4>'7y*>|*A{*V64Y44Z^9`34na9ye9{q?r?s?u?p?@EBEEJFJDJZO[OHSpVoVqV%c94ЖGJіIJp^%a/bFEGE `O PSMSLSQStVuV1O];nfW8c]=bE@xJI?WPd]S(_W/a]cEc~Oi|Ok{Or}OxSzS#TySsfDWEW@WBWtY›sYśt[қqYߛu[w[y[z[o]q] f] v]s]r]p],_'/d.*_5%`8~_:#`E"`Oe`Qf`Sh`]2aa3ae4alYao[avua{AbdE'P*P$P+P -T %P "P*T,T6T3T!7T$)T'5T*2T5MW9HWDJWIufMyYN{YP}YU~Y^"ZczYf}[m'\n"\v%\z~[~&\$\#\y]z]5_1_2_ĝ6_l`5a]a)b0b8b{7_iE,P9T$Z)\!^:_1b?bG%PW&Z%Z"K"^ʞ(ZҞk9מ=T*\)`r'_ajE0\`a&+Z'*Z9m`E;aPp#S>TZ$^i>_|3bUW+`BbG^?_aawa  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGN(N6N?NNNQQS8SiSN*NNIQNFNNNQfQRRYY []^z^^_P_Q_aNcNbNQNNNNQQQRRRRSS:SFS]SSSSW!^_ b7b8e4e5esNNNNVQQQQR SSSSS_SmSSSSSSSW$YYY2Y0Y4Yu[[\^^_ _R__b9bOeg/kzl9l7lDlEsuvvN!N N"NhNNNNNOONNOO(OOONOQJQrQQQQRRRRRSKSOSPSSSTSTTTTVW5W6W1W2XYNTY6YzY[_S\\=\x\^^____bb]b_bgbWPeeg7g2g6k"klXlQlwlُ̏ʏ؏ϐ7A>QcNWNyNNNNOOOOOOOOOOOOQjQQQQRERHRORRRS'SXS}SSSSTTTTTTTTTTTTTWWWWWWWWWWWWWXY YYRYYYYYZ ZYZYYYY[j[\\/f<\\\\\\\\]]^^^^_/_f`\`N`Q`#`1`|`R```J`abccbc!cce1eDe@eBef)ff#f,ff0f;ff7f8ggggghRgggcgghhhgk*kkkm#lmmmmm!mllmmEm&mDm$pppppppppppr.rhhh"h'hYhXhUh0h#k.k+k0klkkkkmkmsmWm]mVmm[mmmmmmqmrm\mppppppppprzrssssssssstuVuUuXuWu^uuuvvw*www?w+ww$w!wwx$x6yXyYybyyyyyyyyzzzz{ { {|||||}$}%bƀ @<;-')W!XOxzn{s  ޑQۑߑޑ֑`YVPBPYPDPfPRPTPqPPP{P|PXPyPlPxQQQRhRvRSSUXULUhUIU]U)UTUSUZU:U?U+WWWWWWWWXXhYY[Y]Y^Z+Z;ZaZ:ZnZKZkZEZNZhZ=ZqZ?ZoZuZsZ,ZYZTZOZc[[\[\a]!] ] ],]]*]]]]/]]^9^5^:^2^^_4_9`````````c~ccycccscjclccccfcteZeNeMeeeeeeefWfcfgggghhhhshhhhhhlhhhhzhhhhpk5kkkmmmmnmmnnn mmn mnnn nnmnqqqppqpqpssstssuu#uauhuguvvvvw0w&w@wxGxKxQxOxBxFynylyyyyyzzzz{!{{{{6{||||}I}4}7}-}L}H;IED|*.14qry#XZWE&2(+ )!:[X|e~|z%YTZnyĞNNPPPPPQ`^BQQQRsRpSSSUUUUUUUUYUUUzUUWWXXXX&X:X"XYcYdZZZZZZZZZZZZZZZZZyZZZZZZ~[\\_\^]D]>]H]][]M]W]S]O];]F^F^G^H^^^__>_;_:_`aa"a ``````a`aa a!bccccccccce_e`eaef}fkffsffmfighihhiii hiiihhi.hhihkoknkkl-mnunnnHnOnBnjnpmnmn{n~nYnWnnPn)nvn*nLq*q5q,q7qq8q4q+q3q'q$q-r2rrrss$s8s*s,s+s/s(ttt8ttti|iCisiUiiMiPiGigi6idiai}kDk@kqkskkkl1l2nnnnnnnnlnnnnnnnnnqoqHqJqkqOqWqtqEqQqmrQrPrNsAs.sFt'tHtSt=t]tVttGtCtXtItLtEt>uuuzuvvvw]wdwSwXxxxxzx}xxxxxxxy~yyzzzzzz{b{k{^{y{o{h||}}}}}}}x}}}݀Wcjl]u_}mAOH*{rd.\SAb>qJUXXψjoex}d~gcCFHE@L kg]U5Y/<\jb_kn;DAUy =]PPPPPPPPPQRRS2SSUVV VUV(VVVVQVWXXXxXXsXXXXwXrXXYYlZZZV&Z]{]]]]x^R^^__a{aoaaz{{{{{|||||||}}}}~~}}}~}}}}}}xejfhk345}q\̊銴ʊ덤*("+'qjܒԒڒ땯 *"ʙޙșkirc  QQQ+QQRRSVgV{V_VaXXXXXY[[[[[[["[y]]]^_[aaaaaaaaaaab1ddddddfffffgg$jcjBjRjCj3jljWjLjnj7jqjJj6jSjEjpj\kXkWoooooooqqqqqqqttttu uuv,v7v6v;vwwxxxyy4zSzEzOzzz{{||~~'~&noLB\p_ZK?^_$;C210-<7E 12,0 613<.:="# $ *'!ƞŞןSQ(Q'QS5SVV}VXX[+[3[)[5[1[7\6]]]aaaaaadddeffffffj}jjjjjjjjjjk]l oooooooqqqqqqsqtttuvEvNvDvvwwwwxxxzIzzz{{{|||||~,~MF+t@?9C @FO=Afx]it}nrsbHS_hk@G4I͛9D5Q/VVVVVV[;[:]_M_]addddedjjjjjjjjjjjjjppopppqrttv[vQvOvwwwwwy yy yy yyyz|.|||$||~]~O~f~[G.̅ֈډHJNM82-4)tXJ=<ؕ]TUK?86@;9 ›̛McNPU^ʟ'&VXX[9[|[\k]e ee effjjjjjjjjpp,p%orrrttttvwwyyy zfzdzj|5|4~l~n~qԁւbevۅՈ?CL khpuw˓œۓVD&! śfznv~mQ6S6[B[D[F[~]]]^effjjp=p6rrrrrr tttttuzo|K|D~q/z{| geibnadMQ'341M/Țě*8P  ZQdVX[I[]_ejjjkpKpMpGtvhvgwy0y2y.zz|V|Q~~~~j+/(u|\-76ghfȘʘǘO<;S.Ğ{iVW[J]_rbb5e'eekkpTrr z|]|X~N'DBMTNC<@ZQ8E:5RA]e(pSpYr!voy7y|b|^|=-_Va[Z\eAnlm\XOQS9Q>V[OkzrzslEȗ]!,W]aeEbfkkr%r$|mBIxlo_`k|zacלvpgrJ}Se{͘0|~|q{PW'\_geR[fegllO_``Hk)pwZ\\py{)(.X+XEcnXg[enPPikYo{{#qtBas'Xw֛-OfOhOP?PQR>S$SeSQTUsUqUkUV"V VVVVWYWXXXXGXYYMZZ[g\W\w\]u]]]]^e^^___a%aPbc`cdcddez%\!fggghhh^hZi,i)j-jwjzjjjk kkkkllcmnnnnn|oLoHoIooop.p-p\ypppqqq?q9q;q=qwquqvqqqqqqqrYrsGsHstt;tttvsvwvxxx=xSxTxXxxxy"yMyyyyz{7{Y{|/|2|B|N|h||}~}~d@Acgg%Hb!ބsԅ7ErJ4PTR؍ Տ\+!s?B"#$gfΕ;MBIdI^q^aәxU(UrUUUVVVĀS  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG(N6N?NNNNQQ8SiSS*NNINQFNNNNfQQRRY Y[]z^^^P_Q_a_cNbNNQNNNNQQQRRRRS:SFS]SSSSS!W^ _7b8b4e5eesNNNNVQQQQ RSSSS_SmSSSSSSSS$WYY2Y0Y4YuY[[\^^ _R___9bObe/gzk9l7lDlElsuvv!N N"NhNNNNNNOONNO(OOOONOJQrQQQQQRRRRRKSOSPSSSSTSTTTTV5W6W1W2WXYTN6YzYY[S_\=\x\\^^____b]b_bgbWbPee7g2g6g"kkXlQlwlɂُ̏ʏ؏Ϗ7A>QcWNyNNNNNOOOOOOOOOOOOjQQQQQERHRORRRR'SXS}SSSSSTTTTTTTTTTTTTWWWWWWWWWWWWWX YYRYYYYYY ZZYZYYYYj[[\/\hhh"h'hYhXhUh0h#h.k+k0klkkkkkkmsmWm]mVmm[mmmmmmqmrm\mmpppppppppzrrssssssssstVuUuXuWu^uuuuvv*www?w+ww$w!www$x6xXyYybyyyyyyyyyzzzz { {{|||||$}%}b @<;-')W!XOxzn{s  ސQۑߑޑ֑`YVBPYPDPfPRPTPqPPP{P|PXPyPlPxPQQQhRvRRSSXULUhUIU]U)UTUSUZU:U?U+UWWWWWWWWXXhY[Y]Y^Y+Z;ZaZ:ZnZKZkZEZNZhZ=ZqZ?ZoZuZsZ,ZYZTZOZcZ[[[\a\!] ] ],]]*]]]]/]]]9^5^:^2^^^4_9_`````````~ccycccscjclccccfctcZeNeMeeeeeeeeWfcfgfggghhhshhhhhhlhhhhzhhhhph5kkkkmmmmnmmnn nmm nmnn nnnmnqqqppqpqpssstssu#uauhuguuvvvv0w&w@wwGxKxQxOxBxFxnylyyyyyyzzzz!{{{{6{{||||I}4}7}-}L}H};IED|*.14qry#XZWE&2(+ )!:[X|e~|z֎َ%YTZnyĞҞNNPPPPP`QB^QQQsRpRSSSUUUUUUUYUUUzUUUWWXXX&X:X"XXcYdYZZZZZZZZZZZZZZZZyZZZZZZ~Z[\_\^\D]>]H]][]M]W]S]O];]F]F^G^H^^^^_>_;_:__`a"a a``````a`a a!abccccccccc_e`eaee}fkffsffmfifghihhii ihiiihh.ihhihoknkkk-lmunnnHnOnBnjnpnmmn{n~nYnWnnPn)nvn*nLn*q5q,q7qq8q4q+q3q'q$q-q2rrrrs$s8s*s,s+s/s(stt8ttti|iCisiUiiMiPiGigi6idiai}iDk@kqkskkkk1l2lnnnnnnnlnnnnnnnnnnoqHqJqkqOqWqtqEqQqmqQrPrNrAs.sFs'tHtSt=t]tVttGtCtXtItLtEt>tuuzuuvvv]wdwSwXwxxxzx}xxxxxxxx~yyyzzzzzzb{k{^{y{o{h{||}}}}}}x}}}}Wcjl]u_}mAOH*{rd.\SAȄb>qJUXXψjoex}d~gc͌ɌCFHE@L kg]U5Y/<\jb_kn;DAUy =]PPPPPPPPPQRR2SSSUV VVU(VVVVQVVWXXxXXsXXXXwXrXXXYlYZZZ&VZ{]]]]x]R^^^__{aoaazz{{{{{|||||||}}}}~~}}}~}}}}}}xejfhk345}q\̊Ί銴ʊЊی댤*("+'qjܒԒ֒ڒے뒯 *"ʙڙޙșkirc  QQ+QQQRRSgV{V_VaVXXXXXY[[[[[["[y[]]]^[_aaaaaaaaaaa1bddddddfffffg$gcjBjRjCj3jljWjLjnj7jqjJj6jSjEjpj\jXkWkoooooooqqqqqqqtttt uuu,v7v6v;vvwwxxxyy4SzEzOzzzz{{||~'~&~noLB\p_ZK?^_$;C210-<7E 12,0• җ613<.:="# $ *'!ƞŞמS(Q'QQ5SSV}VVXX+[3[)[5[1[7[6\]]]aaaaaadddeffffff}jjjjjjjjjjj]k loooooooqqqqqqqstttuEvNvDvvvwwwwxxxIzzzz{{{|||||,~M~F+tȁ·͇LJ@?9C @FO=Afx]it}nrsbHS_hkĕ@G4I͛9D5/QVVVVVV;[:[]M_]_addddedjjjjjjjjjjjjjppopppqrtt[vQvOvvwwwww yy yy yyyyz.|||$|||]~O~f~[~G.΁̅ևڇHJNM82-4)tXJ=<ؕו]ڗTUK?86@;9 қ›̛˛McNPU^ʞ'&VXX9[|[[k\] ee eeffjjjjjjjjp,p%porrrttttvwwyy yfzdzjz5|4|l~n~q~ԁցbevۅօՇ?CL khpuwÎ˓œƓӓۓݕVD&! śߛfznv~m6Q6SB[D[F[~[]]]^effjj=p6prrrrr rtttttuozK|D|~q/z{| geibnadMQƎ'341ØM/ɚȚĚ*8P  ZdQVXI[[]_ejjjkKpMpGpthvgvw0y2y.yzzV|Q|~~~~j+/(u|\-76ghfȘʘǘܘO<;ΚS.ĝ{iVWJ[]r_b5b'eeekkTpr rz]|X|~N'DBMTNC<@ZQݚ8E:5RA](eSpYp!rov7yyb|^||=-_Va[Z\eAnlm\XޚOQS9>QVO[krzszlEȗ]!,W]aeEbfkk%r$rm|BIxlo`_k|đzacךvgprJ}Se{͘ݘ0|~q|ʗ{P'W\_egRf[egllO_`H`)kpwZ\\py){(.ٚ+XEXcngX[nePPikYo{{#qtBas'Xw-fOhOO?PPQ>R$SeSSQTsUqUkUU"V VVVVVYWWXXXGXXYMYZZg[W\w\\u]]]]]e^^^___%aPab`cdccdde%z!\fggghh^hZh,i)i-jwjzjjjj kkkkklclmnnnn|nLoHoIoooo.p-p\pypppqq?q9q;q=qwquqvqqqqqqqqrYrGsHsst;ttttsvwvvxx=xSxTxXxxxx"yMyyyyyz7{Y{{/|2|B|N|h|||}~}d~@Acg%gHb!ބsԅ7ErJ4PTR، Վ\+!s?B"#$gfΕ;MBIIdq^^ax(UrUUUUVVVS!!!m!w!}"""?"G"~#"#GG#P#Um#i#~s$#$/$8$T$W$g$s$~%!%8%>%N%Z%h%k%}&!&*&.&9%&A&k1&s&~\'!'Rh'Y'}(!(/(=(A(H(z)%)Z)c)y<*!*?S*G*Or*T*`{*p*~+!+@+F+^+c+r,!,/,;,M,V,c,k,~-!-=$-E-~A.!.+{.2.T.].o.t.~/#/o/s/{0'0+0/0@"0J0O40U0{:1!1)a1,1=j1@1}|2!21282A2F2H2M2R2Z2|3#323;3O3U3Z&3i3|,4%46@4<4}R5'5<5C5[5`5c5n5v6"6}7!7= ,7D7J I7P7Y P7]7~ Z898B |8E8X 8[8{ 9)9A 9J9Y 9g9~ :':< :@:c :u:~ 6;$;. @;3;G K;M;h `;m;v |;|;~ <#<* !>c *>h>j m>|>~ p?!?$ s?)?Y w?b?i ?p?u @6@a @q@} A!A> AMAQ ArA~ B&B3 B9BI -BNB~ >C%C9 oCFCU C`Cj CrCw D"DO DTDk DvD~ E#E< EWE\ E_Ev F%Fd ,FhF{ lG!G* G3GN GSGr GuG~ H!H+ H0H@ HDHH HRHb HmHyI"I.I2IYI\IhDIpI}QJ&J9_JDJIsJRJVyJ]Jf~JlJuK)K_KcKmKpK~L!LJLMLl LqL~-M$M1;M5M=IMFM]RMmM~jN$N=|NKNON]NvO"O&O+OVO`O~P*P8PHPpPuP~=Q"Q2GQ8QFXQTQvgR$R4RRRkS!SDSXSlStS}T)T-T2TaTiT|-U-U9AU>UCNURUuTV!V$xV(V-|V9VBVFVJVQVuW:WEWUWeWjW~X!XEXTX] XkX~Y1YQ+YXY\LYaY~QZ"Z<oZBZHZMZgZtZ~[%[,[1[P[][a[i[~\"\C\S\f\l\~0]!]IC]L]Sl]^]zt^!^*^1^j^p^~_!_,_1_7_<_[_i_s`9`@"`C`K*`R`h3`s`wJa%a5Oa>aP`a]aesaia~|b!b)b/b;b\brd/d3dHd~e!e~f!f|Yg!g*N(N6N?NNNQQS8SiSN*NNIQNFNNNQfQRRYY []^z^^_P_Q_aNcNbNQNNNNQQQRRRRSS:SFS]SSSSW!^_ b7b8e4e5esNNVQQQQR SSSSS_SmSSSSSSSW$YYY2Y0Y4Yu[[\^^_ _R__b9bOeg/kzl9l7lDlEsuvvN!N N"NhNNNNNOONNOO(OOONOQJQrQQQQRRRRRSKSOSPSSSTSTTTTVW5W6W1W2XYNTY6[_S\\=\x_bb]b_bgbWPeeg7g2g6k"klXlQlwlZlSpoprpnpsrrs{qN$NqNOEOJO9O7O2OBODOKO@O5O1QQQPQNQQQQR#R'R&RR+R RRS%S;StTDTLT#TT2TKT!T4TITPT"T?TQTZT/VVVVVVVWHWDW?Wُ̏ʏ؏ϐ7A>QcNWNyNNNNOOOOOOOOOOOOQjQQQQRERHRRRS'SXS}SSSSTTTTTTTTTTTTWWWWWWWWWWWWWYYYYYZ ZYZYYYY[j\\\\\\\\]]^^^^_/`N`Q`#`1`|`R```J`abccbc!cce1eDe@eBef)ff#f,ff0f;ff7f8ggggghRgggcgghhhgk*kkm#lmmmmm!mllmmEm&mDm$pppppppppppr.rhhh"h'hYhXhUh0h#k.k+k0klkkkkmkmsmWm]mVmm[mmmmmmqmrm\mppppppppprssssssssstuVuUuXuWu^uvvw*www?w+ww$w!wwx$x6yXyYybyyyyyyyyzzzz{ { {|||||}%bƀ @<;-')WOxzn{s  ޑQۑߑޑ֑`YVPBPYPDPfPRPTPqPPP{P|PXPyPlPxQQQRhRvRSSUXULUhUIU]U)UTUSUZU:U?U+WWWWWWWWXXhYY[Y]Y^ZaZ:ZnZKZkZEZNZhZ=ZqZ?ZoZuZsZ,ZYZTZOZc\[\a]!] ] ],]]*]]]]/]]^9^5^:^2^^_4_9``````cycccscjclccccfcteZeNeMeeeeeeefWfcfgggghhhhshhhhhhlhhhhzhhhhpk5kkkmmmmnmmnnn mmn mnnn nnmnqqqppqpqpssstsuu#uauhuguvvvw0w&w@wxGxKxQxOxBxFynylyyyyyzzzz{!{{{{6{||IED|*.14qry#XZWE&2(!:[X|e~|z֐%YTĞNNPPPPPQ`^BQQQSSSUUUUUUUUYUUUzUUWWXXXX&X:X"XYcYdZZZZZZZZZZZZZyZZZZZZ~[\\_\^]D]>]H]][]M]S]O];]F^F^G^H^^^__>_;_:`aa"a ``````a`aa a!bccccccccce_e`eaf}fkffsffmfighihhiii hiiihhi.hhihkoknkkl-mnunnnHnOnBnjnpmnmn{n~nYnWnnPn)nvn*nLq*q5q,q7qq8q4q+q3q'q$q-r2rrrss$s8s*s,s+s/s(ttt8tttuuuzuvvw]wdwSwXxxxxzx}xxxxxxxy~yzzzz{b{k{^{y{o{h}}}}}}x}}}݀Wcjl}mAOH*{rd.\SAb>qJUXXψjoex}d~gcCFHE@L kg]U5Y/<\jb_kn;DA=]PPPPPPPPPSSUVV VUV(VVVVQVWXXXxXXsXXXXwXrXXYYlZZZV&Z]{]]]]x^R^^__a{aoaaz{{|||||||}}}}~~}}~}}}}}}xejfhk34q\̊銴ʊЌ덤*("+'qjܒԒڒ땯 *"ʙޙșkircQQQ+QQRRSXXXXXY[[[[[[["[y]]]^_[aaaaaaaaaaab1ddddddfffffgg$jcjBjRjCj3jljWjLjnj7jqjJj6jSjEjpj\kXkWoooooqqqqqqqttttu uuv,v7v6v;vxyy4zSzEzOzzz{{B\p_ZK?^_$10-<7E 12,0613<.:="# $ *'!ƞŞןSQ(Q'QS5SVV}VXX[+[3[)[5[1[7\6]]]aaaaaadeffffffj}jjjjjl oooooooqqqqquvEvNvDvvwwwwxxxzIzzz{{{|||||ڀ+tȅ@?9C FO=Afx]it}nrsbHS_hk4I͛VVVVVV[;[:]_M_]addddedjjjjjjjjjjjjjppopppqrttv[vQvOvwwwwwy yy yy yyy||~]~O~f~[G̅ֈډHJNMXJ=<ؕ]ژUK?86@;9 ›̛McNPU^ʟ'&VXX[9[|[\k]e ee ffjjjjjjjjpp,p%orrrttttvwwyyy zfzdzj~n~qԁւbevۅօՈ?CL khpuw˓œۓD&! śfznv~mQ6S6[B[D[F[~]]]^effrrrrrr tttttuzo|K|D~q/z{| geibnadMQ'341Țě*8P  ZQdVX[I[ejjjkpKpMpGtvhvgwy0y2y.zz|V|Q~~~~j+/(u|\76ghfȘʘǘO<;S.Ğ{iVW[J]_rbb5e'eekkpTrr z|]|X~NBMTNC<@r!voy7y|b|^|=-Va[Z\eAnlm\XOQS[OkzrzsEȗ]!,W]aebfkkr%r$|mBIx_`k|zacלvpgrJ}Se{͘0|~|q[fegllO_``Hk)pwZ\\'Xw֛-OfOhOP?PQR>S$SeSQTUsUqUkUV"V VVVVWYWXXXXGXYYMZZ[g\W\w\]u]]]]^e^^___a%aPbc`cdcddez%\!fggghhh^hZi,i)j-jwjzjjjk kkkkllcmnnnnn|oLoHoIooop.p-p\ypppqqq?q9q;q=qwquqvqqqqqqqrYrsGsHstt;tttvsvwvxxx=xSxTxXxxxy"yMyyyyz{7{Y{|/|2|B|N|h||}~}~d@Acgg%Hb!ބsԅ7ErJ4PTR؍ Տ\+!s?B"#$gfΕ;MBIdI^q^aәxU(UrUUUVVVĀS!pN!rN#KYz#MY#Z\#\^#a^#b_#f_#g_$!l<$3y<$5$6$mTM$pT:%m>o>p>r>t>uC>xZ?]?^ ?` ?l?{?|?~@!_@"o@$m@+@/@2@3N@dZ@fZ@gZ@jZABdAji|AkiCAmisAoiUB!ksB"kB6nBLqHC!vC=yCAzCDzCX|C\|C^}CnC{]C|uC~_DsE@EBEFEGEIUEKyEOEPER ETEzQE~RF!RF#S2F~dUG0eqGQiH.vHKz)HMz*HOz-HPz,Hh}Hi}Hk}IkImgJ!J"J$ZJ=J>JLYJNdJ[JjJx@K"K'QM"qMDwM`{Mc{Me{N"}N@NBNDNFNR5NTNY}NzN}N~OZO[P" P$P% P'P;VgP=V{P?V_P@VaQMoQPoQywQ{wR!xR"xR7|R9|R;~R?~'R@~&RCnRDRGRIRJROoRPLRnRsRuRwR{;R|CR~2SHSISLSMSP SQSSSUSpSqT!T#T%TddTgdU!jU#jU$jU'jU)jU+k]U`qV`{`~a"la;EaYla[ob?bA{bBbEPbIW'bJ\bQ_bWgebZRbypc#yc%c-{)c.(c0.c4c6X+c7XEc9cc=ncCXgcE[cFencJcLPcMPcRicTkcVYccocf{cg{clcn#ctqcutc{Bd"d(d*ad-s!!m!w!}!""?"G"~""#G#GP#U#mi#~#s#$/$8$T$W$g$s$~$!%8%>%N%Z%h%k%}%!&*&.&9&%A&k&1s&~&\!'R'hY'}'!(/(=(A(H(z(%)Z)c)y)<!*?*SG*O*rT*`*{p*~*!+@+F+^+c+r+!,/,;,M,V,c,k,~,!-=-$E-~-A!.+.{2.T.].o.t.~.#/o/s/{/'0+0/0@0"J0O04U0{0:!1)1a,1=1j@1}1|!21282A2F2H2M2R2Z2|2#323;3O3U3Z3&i3|3,%464@<4}4R'5<5C5[5`5c5n5v5"6}6!7=7, D7J7I P7Y7P ]7~7Z 98B8| E8X8 [8{8 )9A9 J9Y9 g9~9 ':<: @:c: u:~:6 $;.;@ 3;G;K M;h;` m;v;| |;~; #<*< /<]< `c>* h>j>m |>~>p !?$?s )?Y?w b?i? p?u? 6@a@ q@}@ !A>A MAQA rA~A &B3B 9BIB- NB~B> %C9Co FCUC `CjC rCwC "DOD TDkD vD~D #EUCUNRUuUT!V$Vx(V-V|9VBVFVJVQVuV:WEWUWeWjW~W!XEXTX]X kX~X1YQY+XY\YLaY~YQ"ZaPa`]aeasia~a|!b)b/b;b\brb/d3dHd~d!e~e!f|fY!g*g(N6N?NNNNQQ8SiSS*NNINQFNNNNfQQRRY Y[]z^^^P_Q_a_cNbNNQNNNNQQQRRRRS:SFS]SSSSS!W^ _7b8b4e5eesNNVQQQQ RSSSS_SmSSSSSSSS$WYY2Y0Y4YuY[[\^^ _R___9bObe/gzk9l7lDlElsuvv!N N"NhNNNNNNOONNO(OOOONOJQrQQQQQRRRRRKSOSPSSSSTSTTTTV5W6W1W2WXYTN6Y[S_\=\x\_b]b_bgbWbPee7g2g6g"kkXlQlwlZlSloprpnpsprrs{q$NqNNEOJO9O7O2OBODOKO@O5O1OQQPQNQQQQQ#R'R&RR+R RRR%S;StSDTLT#TT2TKT!T4TITPT"T?TQTZT/TVVVVVVVHWDW?Wُ̏ʏ؏Ϗ7A>QcWNyNNNNNOOOOOOOOOOOOjQQQQQERHRRRR'SXS}SSSSSTTTTTTTTTTTTWWWWWWWWWWWWWYYYYY ZZYZYYYYj[\\\\\\\\]]^^^^/_N`Q`#`1`|`R```J`a`bccb!ccc1eDe@eBee)ff#f,ff0f;ff7f8fgggggRhgggcgghhhg*kkk#mlmmmm!mmllmEm&mDm$mppppppppppp.rhhh"h'hYhXhUh0h#h.k+k0klkkkkkkmsmWm]mVmm[mmmmmmqmrm\mmppppppppprssssssssstVuUuXuWu^uuvv*www?w+ww$w!www$x6xXyYybyyyyyyyyyzzzz { {{|||||%}b @<;-')WOxzn{s  ސQۑߑޑ֑`YVBPYPDPfPRPTPqPPP{P|PXPyPlPxPQQQhRvRRSSXULUhUIU]U)UTUSUZU:U?U+UWWWWWWWWXXhY[Y]Y^YaZ:ZnZKZkZEZNZhZ=ZqZ?ZoZuZsZ,ZYZTZOZcZ[\a\!] ] ],]]*]]]]/]]]9^5^:^2^^^4_9_``````ycccscjclccccfctcZeNeMeeeeeeeeWfcfgfggghhhshhhhhhlhhhhzhhhhph5kkkkmmmmnmmnn nmm nmnn nnnmnqqqppqpqpssstsu#uauhuguuvvv0w&w@wwGxKxQxOxBxFxnylyyyyyyzzzz!{{{{6{{||IED|*.14qry#XZWE&2(!:[X|e~|z֎%YTĞҞNNPPPPP`QB^QQQSSSUUUUUUUYUUUzUUUWWXXX&X:X"XXcYdYZZZZZZZZZZZZyZZZZZZ~Z[\_\^\D]>]H]][]M]S]O];]F]F^G^H^^^^_>_;_:_`a"a a``````a`a a!abccccccccc_e`eae}fkffsffmfifghihhii ihiiihh.ihhihoknkkk-lmunnnHnOnBnjnpnmmn{n~nYnWnnPn)nvn*nLn*q5q,q7qq8q4q+q3q'q$q-q2rrrrs$s8s*s,s+s/s(stt8ttttuuzuuvv]wdwSwXwxxxzx}xxxxxxxx~yyzzzzb{k{^{y{o{h{}}}}}x}}}}Wcjl}mAOH*{rd.\SAȄb>qJUXXψjoex}d~gc͌ɌCFHE@L kg]U5Y/<\jb_kn;DA񘚙=]PPPPPPPPPSSUV VVU(VVVVQVVWXXxXXsXXXXwXrXXXYlYZZZ&VZ{]]]]x]R^^^__{aoaazz{{|||||||}}}}~~}}~}}}}}}xejfhk34q\̊Ί銴ʊЊ댤*("+'qjܒԒ֒ڒے뒯 *"ʙڙޙșkircQQ+QQQRRSXXXXXY[[[[[["[y[]]]^[_aaaaaaaaaaa1bddddddfffffg$gcjBjRjCj3jljWjLjnj7jqjJj6jSjEjpj\jXkWkoooooqqqqqqqtttt uuu,v7v6v;vvxyy4SzEzOzzzz{{B\p_ZK?^_$10-<7E 12,0•613<.:="# $ *'!ƞŞמS(Q'QQ5SSV}VVXX+[3[)[5[1[7[6\]]]aaaaaadeffffff}jjjjjj loooooooqqqqquEvNvDvvvwwwwxxxIzzzz{{{|||||+tȁLJ@?9C FO=Afx]it}nrsbHS_hkĕ4I͛VVVVVV;[:[]M_]_addddedjjjjjjjjjjjjjppopppqrtt[vQvOvvwwwww yy yy yyyy||]~O~f~[~G̅ևڇHJNMXJ=<ؕו]ڗUK?86@;9 қ›̛˛McNPU^ʞ'&VXX9[|[[k\] ee effjjjjjjjjp,p%porrrttttvwwyy yfzdzjzn~q~ԁցbevۅօՇ?CL khpuwÎ˓œƓӓۓD&! śߛfznv~m6Q6SB[D[F[~[]]]^effrrrrr rtttttuozK|D|~q/z{| geibnadMQƎ'341ɚȚĚ*8P  ZdQVXI[[ejjjkKpMpGpthvgvw0y2y.yzzV|Q|~~~~j+/(u|\76ghfȘʘǘܘO<;ΚS.ĝ{iVWJ[]r_b5b'eeekkTpr rz]|X|~NBMTNC<@!rov7yyb|^||=-Va[Z\eAnlm\XޚOQSO[krzszEȗ]!,W]aebfkk%r$rm|BIx`_k|đzacךvgprJ}Se{͘ݘ0|~q|ʗf[egllO_`H`)kpwZ\\'Xw-fOhOO?PPQ>R$SeSSQTsUqUkUU"V VVVVVYWWXXXGXXYMYZZg[W\w\\u]]]]]e^^^___%aPab`cdccdde%z!\fggghh^hZh,i)i-jwjzjjjj kkkkklclmnnnn|nLoHoIoooo.p-p\pypppqq?q9q;q=qwquqvqqqqqqqqrYrGsHsst;ttttsvwvvxx=xSxTxXxxxx"yMyyyyyz7{Y{{/|2|B|N|h|||}~}d~@Acg%gHb!ބsԅ7ErJ4PTR، Վ\+!s?B"#$gfΕ;MBIIdq^^ax(UrUUUUVVVSp!Nr!NK#zYM#YZ#\\#^a#^b#_f#_g#_!$o>p>r>t>u>Cx>Z]?^? `? l?{?|?~?!@_"@o$@m+@/@2@3@Nd@Zf@Zg@Zj@ZBAijA|ikACimAsioAUi!Bsk"Bk6BnLBHq!Cv=CyACzDCzXC|\C|^C}nC{C]|Cu~C_sD@EBEFEGEIEUKEyOEPERE TEzEQ~ER!FR#F2S~FUd0GqeQGi.HvKH)zMH*zOH-zPH,zhH}iH}kH}kImIg!J"J$JZ=J>JLJYNJd[JjJęxJ@"K'KQ"MqDMw`M{cM{eM{"N}@NBNDNFNRN5TNYN}zN}N~NیZO[O"P $P%P 'P;PgV=P{V?P_V@PaVMQoPQoyQw{Qw!Rx"Rx7R|9R|;R~?R'~@R&~CRnDRGRIRJRORoPRLnRsRuRwR{R;|RC~R2HSISLSMSPS QSSSUSҗpSqS!T#T%TdTdgTd!Uj#Uj$Uj'Uj)Uj+U]kQq`V{`~`"al;aEYal[ao?bAb{BbEbPIb'WJb\Qb_WbegZbRybp#cy%c-c){.c(0c.4cٚ6c+X7cEX9cc=cnCcgXEc[FcneJcLcPMcPRciTckVcYccofc{gc{lcnc#tcquct{cB"d(d*da-dspicolibc-1.7.4/newlib/libc/iconv/ccs/binary/cns11643_plane2.cct000066400000000000000000007662641414576234500240300ustar00rootroot00000000000000cns11643_plane2XXXLXlxlx%HHqH==  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR!&!'!/!-!0!C%1!D!!!(!"3NAVAW!)!1AXmD!2!4!3!J!F!I!H!E!G!o!y!m!q!p!t!x!u!r!j!z!w!n!k!s!v!l#(#)"{#"#*#&"}%=#$"~"z#'#%#+"|#!##%?%K%L%9%8%<%C%A%3%5%6%B%I%;%4%7%:%D%H%F%J%>%2%@%E%G)")*)0).)))/)%(~),)#)$(})!)&)-)()+)')1-q-p-u-v-j-k-~-l3^-w-o-x-i-y-m-z-t-|-n-}-r-{-s3f3Z3_3e3X3\3U3Y3j3T3i3[3V3R3`3S3Q3]3c3d:?3a3P3b3g3O3W3h:B:;:C:9:<:=:A:7:6:5:@:>:8::A\AbAeA_AhAiAdAYAZAcAaA]A[A`AgA^AfI!HwHxH{H}I&I%H~HvHyH|I"I$I#HzOTOQOXOUONOOOROSOYOVOWVCV@VAVBV?\I\G\H\F\E\JaDaEOPaCe7e8kOkNn}.!:D!.#,.#."!5%M!{#-%N%O.%.&.'.$.(3k:EAjI'VD!#!L!K!}!|#.#/#0%T%Q%R%P)2%S)3.+...*.,.-.)./3l3n3m3oAlAkAmAnI(I)LaOZO[e9kQkPn~!~#1#2%U)4)5.03q3pI*I+O]O\\Ke:!6#3%V%W.1:G:F!$!M"""!3rI,VEhj%X)6!N"##4!7#5)7!%"$#6#7%Y%Z)9)8);):3s.2:H:II-e;!8VF"%#@#=#>#E#?#D#:#8#9#A#C#<#F#B#;%k%j%m%o%d%g%n%a%e%i)J)N%f%b%c%\%]%_%[%`%h%^%l)I)=)L)?)>)D)P)F)C)<)K)M)A)G)H)@)E)O.F.4.9.7.>.A.8.D.E.C.;.H.<.@.=.B.I4$.G.?.6.5.:.33z4*4!4%3y3~3}4(4+3v4,4#4)4-3w4'3x3{4"3|4&3t3u:N:Y:\:U:R:ZA|:_:S:J:W:Q:]:^:P:V:X:L:[:K:M:TAzAvB'AoAxB#AtAsAqB%A}ArA{AwA~B"B&ApAuB!AyB$Ie?e@e494;4J4N4E4G41:c:l:k:d:f:j:e:g:a:t:s:p.M:m:o:b:r:q:uB6:n:iB.B-B1B,B)B0B3B5B2B7B+B4B*B/B8IDIJIFIMI>ICIBIKIAIGILI=IEIIIOI?IHINI@OrOtOyOuOxOqOwOvOsVWVYVTVVVXVZVSVU\X\Y\W\VeBeDeChno"o!)`B9IPOz!:#P&#)a.[eE!Q!;!R"+#Q&$.\)b4P:vIQaLmHo#"1"/"-"0"2",".#V#Y#X#U#S#T#[#W#R#Z&0&)&4&%&,&&&-&1&2&+&.&5&3&*&(&'&/)p)h)d)t)c)m)q)w)e)g)n)r)v)s)l)o)i)k)j)u)f.d.b.a.^.c.].e._.`.f4W;&4V4i4g4p4`4c4m4e4j4h4Y4n4b4]4S4o4_4R4d4q4a4U4Z4Q4^4[4T4l4\4X4k:}:z;-;!;.;*;';(;+;/4f;1BM;2:x;$;);0;3:|:y:{;":~;,;#;%:wBAB?BIB@BJBFB>BLB=BDBBBGB;BEB:BCBHB&F&D&=&J&M&H&A&G&B&E&<&@&L&?&K*,*%*+*$*&)~)|*-**)z*(*)*')}){*#*!*"*..n.p.q.r*/.t.o.s4x4|4~5#5%4z4y4w5'4{5&5"5!4}5(5$;K;R;G;C;S;=;P;N;H;Q;J;B;T;@;M;>;U;OBU;A;E;D;I;F;LBYB\BTBVB[BZ;?BXBSBWInIuIlIsIjIrIvIiImIhIkIqIpIoItP.P0P1P,P+P5P3P6P-P2P4P/VkVpVjVoVhVrVnVsVmViVqVtVl\faPd>eIhphqkWkXmLmKo%":#jB]*0!=!Y#k#l&O&N&P*4*1*2*3*5.v.u5*5);W;VB`BbBaB_B^IyIwIxP:P8P9VwVuVvP7\h\gaQaRVxeJ";!Z!["<#p#n#m#o#q*9*8*:*7*;.w.y.z.x*65+5.5/5,5-BcBeBgBfBdI}I{J#J$J!I|IzJ"PV}V{VzV|VyhrhskYmM"=#r*<">#s&R&S&T&Q*=.|.{5051BhJ&J%P?V~o'&U*>;X.}J'!,"?#u#t&X&W&V*?535254;Z;Y;[BjBiP@J(W"W!\ieKhthu!\"B#x#w#v"A"@&Y#}$!#~&Z#z#y#{$##|$'$$$"$%$&&n&a&_&m&h&i&l&k&b&]&d&o&e&g*N&\&f&[&j&^&c&`*@*A*K/#*L*O*E*G*H*J*F*B*P/!*I.~*D*M*Q/"*R*C/&/(/*57/./%55/056/'/+/-/,///)/$595B5D;]5:585F5I;l5G;a5A;\5E;^5H;`5=5;5<5?5C5@;_5>;c;gBk;i;j;k;q;m;r;f;d;s;p;h;b;e;n;oJ*BvBnJ)BrBtBqBpJ9BwJ+BoBsBlBmBuJ/J0J5JJ=J?PS$(&q*S*T/2;t!^"I"K"C"D"J"F"H"E"L"G$2$/$7$8$5$1$0$6$3$)$.$4$*$+$,$-&}&v&r&y&{&~&z&s&w'!&|&u&x*U&t*[*g/3*X*`*_*\*d*f*a*Z*W*^*V*Y*]/4*b*c*e/@/6/F5J/H/B/9/K/<5a/?/M/A/:/7/8/G/N/>/=/J/D/5/L/C/E/I5K5]5Y5V5h5[5c5_5N5e5M5d5W5L5g5U5X5f;u5S5\5R5P5b5`5T5Q5^5Z;w;v5O<)C)C%C@C.C/C&C:C1C;C3J@C?C6C2C'C5C-C,JUC9C4C(JPJAJLJSJQJXJBJOJCJNJR<'JYJJPaJWJVPTPUJFJGJDJIJEJZJHJTJMPXW5P]P\P^P[PVPYPcPZ;}P`PWP_JKPbW4W6W3W2W1W0W/W9W7\u\w\x\t\v\sW8a`aca_a]aaaba^eMePeQeOeReNhzhyhxhwk[mOmNmQo,mPo+p7p}<7W:"M'"*h*i/P/O5i<;<:<=<8<<<9CBJ[PdPfPePgWCCado-"O"N$9$<$;$:$='*'&'/'+'''.')'%','-'1'0'(*p*v*m*r*q*t*y*n*s*w*o*l*x*u/W/U/X5n5m5o/V5l5p5kWAWBWGWC\}ahafageVh}h~h|o.p8p9'2$?$C$G$B$E$A$@$F$D'5'='8'G'H'@'9'E'F'D'<'4';'?'>'6'B'7'I':'C'A+=+8+.+,+'+4+!+#+&*|+3+C+(+:*~+A+B+E+<+-+5+%+?+"+++2+*+>+6+D+)+;+1+7*}+0+/+$+@+9/n/o/c/\/e/m/[/v/u/p/q/g/h/r/i/d/^/_/l/f/t/`/k/]/a/s/j/b6(5v5w5{6,6)6"6!6%645r656'696-6+5s626860676$5t666&6/6.5u615|635~6*5y5}5x6#=#=&=$=%D#K.K/K0QQAWrWqWs]9avefmU!A!_"X$I$J'N+M+N0'6C=+!`!c!b!a"Y"]"_"`"\"Z"^"[$[$Y$L$S$M$U$R$Q$Z$K$\'e$N$V'c$O$]$P'O$W$T$X'd'V'k'b'T'X'['g'Z'\']'j'i'm'Y'o'`'U'S+W'a'f'W'n'Q'P'^'R'_'l+^+a+d+Y+g+j+l+V0,+e+m+]+U0G+b+Z+\+_+R+h+k+O+i+Q0A'h+X+P+c+[+S+T+f+`0/080>0:0-000)0*090B01020<0K0+0(0I0=0J0D060E0?0H0F070C040L030.0;0@6E6I6G6F6L6^6j6[6T6D6`6P6b6Z6h6a6c6e6N6_6S6g6X6V6W6R6Q6K6i6U6J6\056]6d6Y6M=,6f6O=A=;=/=M=Q=H=6=B=N=G=<=Y=Z=L=@=2=3=7=>=8=4=-=.=0===?=W=O=U=[=E=9=C=I=F=5=S=P=X=D=K=J=:6H=T=R=V=1DGDFD,DED/D0DNDDD)D8D.D1DIDPDHD=DOD;D2D?DKD:D3D6D@DJD-D7DAD4D+D9DMDDLD5D*DCDBKPKEKJK6K5KVK9KIK;KYKUQ[K7KTKQK^K=KFK\KRKDKBK?K@KXK]K[K_K8QCKAKKKQLQVQUQaQSQWQNQZW{Q\QKQfQ_QcQhQ]QQQTKHQPQgQiQ^QDQdQRQMQEQIQbQJQHQ`QGQYQXQeQOW~X,WvX$X"];X(X.X'WtX%X0X2X1X+X&WxW}X*W|QFWwWzX-X!Wu]:X/WyX)]=]?]E]C]F]>]B]A]G]@]D]pr?"a$^$_'x'z'u'r't'v's'p'w'q'y+o+s+v+r+q+t+u+n+p0Z0[0\0Q0Y0^0O0U0N0X0T0]0M0P0V0W0_0S6q6s6o6{6m6z6k=_6u6v6y6}6r6w6|6p6l6~6t6x6n=i=]=f=\=d=b=c=g=`=^=a=e=hDVD]D_DeDQD`DfDcDSDdDRD^DgDWDbDUD\DXDTD[DaDYDZKgKcKiKeKdKhK`KbKfKaKjQoQlQxQrQtQnQvQuQsQyQpQwQkQmQjQzQqX6XAX?X5X8X9X4X3XBX=XX;X7X@XCXD]H]N]L]J]M]I]Kb)b+b(b'evb*eweuetesi9i:kjkikhmZm[o5p?q&r,r@!B+w0`Kk+x+y=jDhKl=k"b$`'{+z+}+{+|0c0b0a7"7#7!7$=o=n=l=m=pDjDiDmDlDkKoKnKmQ{Q|XEXFe|e{ezexeyi;m\q'!d!e"c"d$f$b$a$e$c$g$d(!+~'}(&('(#($'|'~(%(",$,',!,&,",%,#0i0f0h0e0j0g7,0d0k7'7+7*=r=}7-7(=q7&7)7%7.=t={=z=w=y=s=u=x=v=|DqDpDnDrDoKpDtDsKsKqKrQ~Q}R(R'R%R$R!R"R#R&R)XKXHXIXGXMXLXJ]P]Q]Ob,i=i7<7;>$>%>+>->&>*>)>,>#>!>'=~>">(>.D{E!DuE"DvDwE#D~D|D}DyDxE$DzKtKyKzKvKxKuKwR3R2R/XNR.R0R-R*R1R+R,]UXRXQXS]RXOXPXT]Y]V]T]W]Z]X]Sb/b2f!b-i>b3b1b.b0b4f"e~e}m_mam^m`p@(00}0~E%pA(1,9,:1!1">/E(E'E&K{K|K}R5R4XU]^][]\]]b6b5f#klE)1#"f,;>0$n$m(4(2(3,<,=1$1%7@7?>2>1E+E*K~R6XV]_(5L!$o$p(6,>,?1&1,1-1(1+1*1'1)7D7E7A7C7G7F7B>:>4>7>8>5>9>6>3E8E-E9E7E0E4E3E6E2E:E1E/L#L'L$E.E5L&L(L%L"R9R=R?R;R:R8RXXXWX_XYX^X[X]X\XZ]`]c]a]bb:b;b<>;E;RCR@RARB]db>i@i?mc(7E=E=Xa]eb@iB(:(9(8(;,G,I,H,C,D,E,B,F1216141317181911101:157S1;7M7L7N7O7Q7P7U7K7T7R>@>B>>>?>C>E>F>A>DEAEFE>EBEGECE?E@EEEDEHL.L0L+L1L/L*L-L2L,RGRFRDREXiXkXjXbXfXeXcXdXgXh]m]g]l]h]k]f]j]ibBbAf'f%f&iCiFiDiEkno:pBq(q)>GEI,J,K>H]nf(iG(A(<(>(@(?(=,T,O,L,S,R,Q,P,M,N,U1D1>1<7\1A1E1G1C1=1B1@1H1F1?7]7V7X7Z7[7Y7^7W>L>T>I>U>J>K>S>R>O>M>P>Q>NETEXL8EVESENEPEQEJEMELEOEWEUEKL:LL?L;L7L4L9L=L6L3L5RIRPRQRORRRKRHRMRJRLRNXrXlXpXvXwXsXtXqXnXmXoXu]u]o]w]r]s]p]x]t]q]y]vbFbCbGbIbHbDbEf-f*f,f)f.f+iIiLiHiJiKiMkokqkpmdpCq*$r(C(B,Z,Y,V,X,W1K1O1N1M1I1J1L7e7c7_7`7a7b7d>Y>X>W>VE\EYE[EZLHLALBLJLILFLELDLCLGL@RSRXRVRURTRWXx]{]zbKbJf/iNmepEpD!g7f(D,\,_,],[,^1V1X1W1R1U1P1Q1T1S7i7j7h7g>Z>\>^>[>]EfE]E`EdEbEaE^E_EeEcLPLOLKLNLMRZXyX{XzLL^"]~^!^#]}]|bLf0f1iPiQiOmfmg"h(E(F,a,`1[1Y1_1Z1^1\1]7k7m7l>_EiEhEgLQLRLSY!R[R]R\X~X|Y"X}^$^%^&,b1`>a>`EjLTiR(G,c,d1b1d1f1i1g1h1e1a1j1c7v8!7x7s8"7t7q7w7z7{7|7r7y7}7u7p7n7~7o>h>d>j>c>e>b>f>g>iEuExElEqEkEoEmEtEsEpErEnEwEvLdL_LULWL\L[L^LYLXLZL`LbL]LVLcRaRcRfR^RdR`ReR_RbY,Y'Y1Y)Y/Y&Y#Y2Y.Y$Y(Y%Y*Y-Y0^8^9^)^0^.^5Y+^,^6^+^*^4^1^3^'^7^2^;^/^-^(^:bObMbSbQbPbVbWbTbUbNf5bRbXf2f4f6f3iWiViTiSiUkskrmhmjmlmkmiol>n>k8&>mE{EyEzLhLeLgLfRgRhRjRiY6Y7Y3Y4Y5^v>}>z>r>{>s>o>x>~>q>t>|>u>y>w>pF$F&F(F,F"E~F'F+F#E}E|F)F!F%F-F*LyLqL{M!LlL|LiL~LmL}LwLjLxLzLoLnLkLsLpLtM"LuLvLrRoRlRxRpRsRnRmRwRvRuP;RtRkRrRqYDY;YGY?YEY8Y>YHYAYFY:YBY@Y^E^?^L^F^D^HbZb`bcb[bbb]bYb_bab^b\fBf>f8??)F6F7M'M$M%M&S#S$S!R~S"R}YP^S^Ra4bfbgfHfIi^,r,s,t,u2*8E8D8CF8M(YRYQ^Tk}$s(J,v2,2+8G8F8H?+?,?*M*M)S%S&YSbhfJi_/}!h(K$v$w$t$u$x(M(P(L(O(N,|,~,x,{-&-$-*-',},z?.-%-(,w-"-#,y-!-)2.202/2-22?-23218R8I8K8L8T8P8N8Q8U8J8S8O8M?6?4?/FF?3?0?5?2?1F>F??FKFLFJFMFIS3S/S2S4S1S0YaYbYc^^^]^_bmblfOfPfNibicmso>pI8\?@"j"k"m"n"l%"%#${%!$|$z$y$}$~--(V(U(W(\(R(`(f(c(Y(_(a(T(Z(^(X(e(]([(S(b(d-4-7-.-C-:-B-2-A-6-9-F-@-;-E-8-<-?-0-D->-/-3-12G-=)B2J2:2E2A2T2L2B2K2<2@2W2O2F2U282N272M-5?A2H2>2?2C292Q2P2X2V2R2I2D2;2S2=8b8d8i8}8a8l8s8y8f8m8{8v8r8n8`8e8]8j8g8w8h?j8p8o8^8c8t8z8_8k8q8|8u8x?Q?E?b?k?n?M?f?N?\?X?Y?B?g?d?Z?p?UFm?s?S?_?W?q?P?I?T?H?F?h?O?l?m?c?[?K?C?e?o?J?t?V?R?a?]?^?L?`?G?i?r?DFlG$FqFoFZFjF~FfF}FdFtFeF{FOFWFpFhG#FkF|FnFvF[FuG(FVFwG&FPF^F]FaFcFrG%FUFYG!G'FxFsF`F_FQFiFRFgF\G"FXFTFzFSMZMIM3MQMBMLMEM6MTM5MHM4MFMOMMMAMMRM=M7MGM?M9FyMJMKM@M8MSMDMWMVMPMUMXS\S]SPSOSKS_S^FNSHSLSFSYSJS`SCSASMSWSRS8SVFbSDS;S>SdSES_8_-_9_4_;_,_._<_&_:_2_1_6_)_0_7_3c3c1c7c5c8c*c2c<_=c.Slc)c6c0c-c(c'c;c,c+c4c/c:fifjfgfofqffc9fsfhfnfpfkfrfmfliqiritiuisipl1l4l0l2l3m~m|m{l/m}l5mzoHo&oFoGoIpMpLpKq]quqtqv-K2q2r@&l6pN-L94@(@'T*-M-O-N2s2z2x2v2}2t2u2~2|2y2w2{959E9G9;9F969B9>9@9:9A9=9<989C9?97999D@3@/@1@,@+@)@0@2@.@-@5G9G?G:G;G@G8@*G>G=GZJZEZGZ?ZCZFZIZAZBZHZ@ZD_@_?_E_A_B_C_FcAcDc>c@c?cBcC_Dc=fwfzf|fufvfyf{fxftiviwl8l:l7l9n!oLoKoJq7q8q:q9"p9HGAf}@6@8@7GBN+N.N-N,T7T9T8_G_I_Hg!f~ixn#n"-P9K9I9J@:@;GI@9GCGGGFGHGEGDGJN1N/N0TGO@@@C@D@F@H@I@=@<@J@G@E@A@B@?GNGVGSGKGPGWGMGUGQGTGRGLN4N6N5N7N3N2T?TKTDTLTFTGTJTHT>ZVT=TAT@TBTCTETITMZQZWZTZLZXZMZSZYZ[ZUZNZOZPZ\ZZ_P_Y_V_X_Q_W_S_O_T_[ZR_U_N_M_\_Z_L_RcGcUcPcRcFcEcTcLcIcOcHcJcScQcXcVcMcWcNg&g-l>cKg$g%g*g#g,g.g'g)g+g(g/i|izi~j!j"i}i{j#l=lT[TYTXTZZgZhg8g:g7g9j$lCq^3)3+3*9[9Y9\9]9Z@a@Y@_@X@\Gr@W@]@Z@`@V@^@[GnGuGtGvGsGxGoGqGmGpGwGyNCNINANJN@NENKNHNGNFN?NDNBTdTiTkThTaTcTmTjTeTnTbTlT\T]T_T^TfTgT`ZrZiZnZkZoZpZjZsZlZqZm_k_j_g_f_i_hcocfceckcjcbcmcgcdclccchcicng>g;g?g=gq_r.qyZtgAqz3,3-9b9^9a9`9_9c9d@h@f@j@k@q@m@o@g@b@n@p@i@l@c@e@dG{G}G|H#G~GzH!H"H$NONNNLNMTuTvTqTrTsTtTpToZvZxZ{ZwZuZzZy_m_lcpcqcrcsgDgEgCgBgFj+j)j*j,j(j-lGlHlFn3n4oVoUgG%&%%(m(o(l(n(q(p(r-W-U-T-V3/3532343.3130339f9i9g9h9j9e@r@t@sH)H&H'H(H%TzT{TyTxTwZ|Z}Z~_o_n[!j."u"r"s"q"t%*%'%,%(%)%+(u(w(s(v(t-Y-]-Z-\-^-`-_9q-[363?3=38393>3@3;373:3A3<9t9l9r9s9k9m-X9o9p9n@{["@|@y@x@~@}A#@wA"@uA!@zH0H+H1H,H*H-H/H.NVNYNQNUNTNRNXNSNPNWU#ctT~U!T}@vU$T|U"[#[$[%_pcucvcwgIgHj0j/lJlKlIn53C3D3B9x9y9u9v9wA&A(A$A'A%ByH2H3N[N]N\NZU+U(U)U*U%U&U'[)[*['[([&_t_q_s_w_u_x_v_rcyczcxc|gKc{gJj3j4j2j1lLoWpVpUpWq`-b-a3E3G3F:!:&:#:$9z:'9|9}9{:%9~:"A4A3A1A)A8A,A6A=A5A*A0A/A2A>AHPHNHBHLH5HOHJHQH;HCHGHKH:H8HDHAH@HEHHHMN`NjNbNsN{NlNpHUCU=[[P[M[E[O[7[C[/[-[N[L[K[;[:[0[6[?[J[Q[4[=[,[.[5[DUK[+[F[I[9[B[H[2[G[3[8_~`%`+`9`1`&`'`0`/_}`.`"`:`#`6`(`5`7_|`8`,`)`2`$`3`-[1`4`!d/_zd,d%c~d0d'`*d2d!d+d-d#d$d)d._yd7d4gad*d&d5gVd(_{d1d3d6c}d"g_gOg]gMgXgTg^gNgQg`gYg\gUgPgLg[gWgbgSgZjAjPjCjJgRjHj7jNj;jMjBjRjDjIjLj5jOj@jEj9j=jQjGj6j:jlPlTlVlRlXlOlUlSlNjKlQlMlWnn8n9n6n:n7oYo[oZo\oXpYpZpXqBqAqCqDqEqaqdqcqbr0r1r/r7:(A?UNgc:):*AAA@ABHVHTHUHSUPUOUQUR[Y[W`@[U[V[R[Z[T[X`<`>`?`;`=[Sd:d8d9gdgejSjUjTl[lZlY!i"x"v"y"w%.%0%/%-(x({(z(y(|-g-h-d-e-f-c3H3I:-:,:/:.:+ADAHAGACAEAFHYHWHXHZO#O$UTUS[[`C`A`Bd;3J:0AIAKAJH[UU[\dO=O@O?O;OAUuUxUzUpUtUqUrUsUvUyUwUo[r[p[o[u[t[s[n[m[q`f`j`g`i`h`e`k`n`l`m`d`od]d`dbdad[d_dZd\dYd^h-h"h!h&h,h$h+h(h'h*h%h#h)jnjljkjqjojjjhjijmjplflllglmlkljlilhnLnNnMnJnGnKnPnOnHnIo`oapaqer#r$r%r3r2r;HoHnOBU{[x[v[y`p[wdch.jtjrjslnnQpbdd3LOCODU}U|V"V!U~[z[}[|[{`t`r`q`sdfdgdeh0h/h2h1jujwjvlolrlplqnRobocodr&dhnSqf3M[~dih3lsnTOEOFV$V#`udjdldkltnVnUpcHpOIOGOHV-V(V%V,V.V+V'V&V*V)\+\&\$\-\%\!\'\"`~\#\.\*\)\(\,`v`y`xa"`{a!`}`|`z`wa#drdudsdwdxdpdqdodvdndmdthh;jzj}j{k#k!jyk&jxk"j|k%k$lwlvl}lyl|lzl{lulxnan\n`ncn_n[n^nbnYj~n]nZnWnXohojomoionogoeokofolphpipgpdpfpeqIqKqJqiqhqgqjr8rk7k;k2m/m2m1m6m4m+m!l~m-m.m*m"m'k:m#m)m(m$m0m%nhm3m5m,m&ninknenrnpnonnngndnjnsnfnlowo|orouoyp"nmoso}p#oxoqo{ozp!o~nqovopotooptpkpspppqpjpmpupopnplprqLqMqOqNqQqPqlqkr'r(r4r=m7HtV;\<\=\;a7a6e+a8e*h`h_k?kAk@m8pvqRrAOM\?\>a9ntr9hap$a:p%V<\@\Aa;e,kCkBkEkDm9m;m:nup&p'qSqmAU\Ba\Ce/m=m>me0e4e3e2e1hckGkFm?nxnwnvp,p+p*\Dhdhenyp-pxqUr)rCe5hfm@p.aAe6hghhhikLkHkKkJkImBmAnzp1p2p0p/pypzp{qVqYqXqWrBkMmCn{rDaBn|qo  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR&!'!/!-!0!C!1%D!!!(!"!N3VAWA)!1!XADm2!4!3!J!F!I!H!E!G!o!y!m!q!p!t!x!u!r!j!z!w!n!k!s!v!l!(#)#{""#*#&#}"=%$#~"z"'#%#+#|"!###?%K%L%9%8%<%C%A%3%5%6%B%I%;%4%7%:%D%H%F%J%>%2%@%E%G%")*)0).)))/)%)~(,)#)$)}(!)&)-)()+)')1)q-p-u-v-j-k-~-l-^3w-o-x-i-y-m-z-t-|-n-}-r-{-s-f3Z3_3e3X3\3U3Y3j3T3i3[3V3R3`3S3Q3]3c3d3?:a3P3b3g3O3W3h3B:;:C:9:<:=:A:7:6:5:@:>:8:::\AbAeA_AhAiAdAYAZAcAaA]A[A`AgA^AfA!IwHxH{H}H&I%I~HvHyH|H"I$I#IzHTOQOXOUONOOOROSOYOVOWOCV@VAVBV?VI\G\H\F\E\J\DaEaPOCa7e8eOkNk}n!.D:.!,##.".5!M%{!-#N%O%%.&.'.$.(.k3E:jA'IDV#!L!K!}!|!.#/#0#T%Q%R%P%2)S%3)+...*.,.-.)./.l3n3m3o3lAkAmAnA(I)IaLZO[O9eQkPk~n~!1#2#U%4)5)0.q3p3*I+I]O\OK\:e6!3#V%W%1.G:F:$!M!""!"r3,IEVjhX%6)N!#"4#7!5#7)%!$"6#7#Y%Z%9)8);):)s32.H:I:-I;e8!FV%"@#=#>#E#?#D#:#8#9#A#C#<#F#B#;#k%j%m%o%d%g%n%a%e%i%J)N)f%b%c%\%]%_%[%`%h%^%l%I)=)L)?)>)D)P)F)C)<)K)M)A)G)H)@)E)O)F.4.9.7.>.A.8.D.E.C.;.H.<.@.=.B.I.$4G.?.6.5.:.3.z3*4!4%4y3~3}3(4+4v3,4#4)4-4w3'4x3{3"4|3&4t3u3N:Y:\:U:R:Z:|A_:S:J:W:Q:]:^:P:V:X:L:[:K:M:T:zAvA'BoAxA#BtAsAqA%B}ArA{AwA~A"B&BpAuA!ByA$Be?e@e494;4J4N4E4G414c:l:k:d:f:j:e:g:a:t:s:p:M.m:o:b:r:q:u:6Bn:i:.B-B1B,B)B0B3B5B2B7B+B4B*B/B8BDIJIFIMI>ICIBIKIAIGILI=IEIIIOI?IHINI@IrOtOyOuOxOqOwOvOsOWVYVTVVVXVZVSVUVX\Y\W\V\BeDeCenh"o!o`)9BPIzO:!P##&a)[.EeQ!;!R!+"Q#$&\.b)P4v:QILaHm#o1"/"-"0"2","."V#Y#X#U#S#T#[#W#R#Z#0&)&4&%&,&&&-&1&2&+&.&5&3&*&(&'&/&p)h)d)t)c)m)q)w)e)g)n)r)v)s)l)o)i)k)j)u)f)d.b.a.^.c.].e._.`.f.W4&;V4i4g4p4`4c4m4e4j4h4Y4n4b4]4S4o4_4R4d4q4a4U4Z4Q4^4[4T4l4\4X4k4}:z:-;!;.;*;';(;+;/;f41;MB2;x:$;);0;3;|:y:{:";~:,;#;%;w:AB?BIB@BJBFB>BLB=BDBBBGB;BEB:BCBHB&F&D&=&J&M&H&A&G&B&E&<&@&L&?&K&,*%*+*$*&*~)|)-***z)(*)*'*}){)#*!*"*.*n.p.q.r./*t.o.s.x4|4~4#5%5z4y4w4'5{4&5"5!5}4(5$5K;R;G;C;S;=;P;N;H;Q;J;B;T;@;M;>;U;O;UBA;E;D;I;F;L;YB\BTBVB[BZB?;XBSBWBnIuIlIsIjIrIvIiImIhIkIqIpIoItI.P0P1P,P+P5P3P6P-P2P4P/PkVpVjVoVhVrVnVsVmViVqVtVlVf\Pa>dIephqhWkXkLmKm%o:"j#]B0*=!Y!k#l#O&N&P&4*1*2*3*5*v.u.*5)5W;V;`BbBaB_B^ByIwIxI:P8P9PwVuVvV7Ph\g\QaRaxVJe;"Z![!<"p#n#m#o#q#9*8*:*7*;*w.y.z.x.6*+5.5/5,5-5cBeBgBfBdB}I{I#J$J!J|IzI"JP}V{VzV|VyVrhshYkMm="r#<*>"s#R&S&T&Q&=*|.{.0515hB&J%J?P~V'oU&>*X;}.'J,!?"u#t#X&W&V&?*352545Z;Y;[;jBiB@P(J"W!Wi\Kethuh\!B"x#w#v#A"@"Y&}#!$~#Z&z#y#{##$|#'$$$"$%$&$n&a&_&m&h&i&l&k&b&]&d&o&e&g&N*\&f&[&j&^&c&`&@*A*K*#/L*O*E*G*H*J*F*B*P*!/I*~.D*M*Q*"/R*C*&/(/*/75./%/550/65'/+/-/,///)/$/95B5D5];:585F5I5l;G5a;A5\;E5^;H5`;=5;5<5?5C5@5_;>5c;g;kBi;j;k;q;m;r;f;d;s;p;h;b;e;n;o;*JvBnB)JrBtBqBpB9JwB+JoBsBlBmBuB/J0J5JJ=J?JSP($q&S*T*2/t;^!I"K"C"D"J"F"H"E"L"G"2$/$7$8$5$1$0$6$3$)$.$4$*$+$,$-$}&v&r&y&{&~&z&s&w&!'|&u&x&U*t&[*g*3/X*`*_*\*d*f*a*Z*W*^*V*Y*]*4/b*c*e*@/6/F/J5H/B/9/K//=/J/D/5/L/C/E/I/K5]5Y5V5h5[5c5_5N5e5M5d5W5L5g5U5X5f5u;S5\5R5P5b5`5T5Q5^5Z5w;v;O5)C)C%C@C.C/C&C:C1C;C3C@J?C6C2C'C5C-C,CUJ9C4C(CPJAJLJSJQJXJBJOJCJNJRJ'!O"N"9$<$;$:$=$*'&'/'+'''.')'%','-'1'0'('p*v*m*r*q*t*y*n*s*w*o*l*x*u*W/U/X/n5m5o5V/l5p5k5JWAWBWGWCW}\hafagaVe}h~h|h.o8p9p2'L$?$C$G$B$E$A$@$F$D$5'='8'G'H'@'9'E'F'D'<'4';'?'>'6'B'7'I':'C'A'=+8+.+,+'+4+!+#+&+|*3+C+(+:+~*A+B+E+<+-+5+%+?+"+++2+*+>+6+D+)+;+1+7+}*0+/+$+@+9+n/o/c/\/e/m/[/v/u/p/q/g/h/r/i/d/^/_/l/f/t/`/k/]/a/s/j/b/(6v5w5{5,6)6"6!6%646r556'696-6+6s526860676$6t566&6/6.6u516|536~5*6y5}5x5#6c6#=&=$=%=#D.K/K0KQAQrWqWsW9]vafeUmA!_!X"I$J$N'M+N+'0C6+=`!c!b!a!Y"]"_"`"\"Z"^"["[$Y$L$S$M$U$R$Q$Z$K$\$e'N$V$c'O$]$P$O'W$T$X$d'V'k'b'T'X'['g'Z'\']'j'i'm'Y'o'`'U'S'W+a'f'W'n'Q'P'^'R'_'l'^+a+d+Y+g+j+l+V+,0e+m+]+U+G0b+Z+\+_+R+h+k+O+i+Q+A0h'X+P+c+[+S+T+f+`+/080>0:0-000)0*090B01020<0K0+0(0I0=0J0D060E0?0H0F070C040L030.0;0@0E6I6G6F6L6^6j6[6T6D6`6P6b6Z6h6a6c6e6N6_6S6g6X6V6W6R6Q6K6i6U6J6\650]6d6Y6M6,=f6O6A=;=/=M=Q=H=6=B=N=G=<=Y=Z=L=@=2=3=7=>=8=4=-=.=0===?=W=O=U=[=E=9=C=I=F=5=S=P=X=D=K=J=:=H6T=R=V=1=GDFD,DED/D0DNDDD)D8D.D1DIDPDHD=DOD;D2D?DKD:D3D6D@DJD-D7DAD4D+D9DMDDLD5D*DCDBDPKEKJK6K5KVK9KIK;KYKUK[Q7KTKQK^K=KFK\KRKDKBK?K@KXK]K[K_K8KCQAKKKKLQVQUQaQSQWQNQZQ{W\QKQfQ_QcQhQ]QQQTQHKPQgQiQ^QDQdQRQMQEQIQbQJQHQ`QGQYQXQeQOQ~W,XvW$X"X;](X.X'XtW%X0X2X1X+X&XxW}W*X|WFQwWzW-X!XuW:]/XyW)X=]?]E]C]F]>]B]A]G]@]D]<]%b"b$b~a!bza#X{awa&bxaya}a|ajepegereielemeneqe#bheoe4ike+i.i7i-i*i,i0i3i2i6i)i1i5i8i/iakbkfkgkdkekckYmVmWmXm4o3o=p;p>pr?ra"^$_$x'z'u'r't'v's'p'w'q'y'o+s+v+r+q+t+u+n+p+Z0[0\0Q0Y0^0O0U0N0X0T0]0M0P0V0W0_0S0q6s6o6{6m6z6k6_=u6v6y6}6r6w6|6p6l6~6t6x6n6i=]=f=\=d=b=c=g=`=^=a=e=h=VD]D_DeDQD`DfDcDSDdDRD^DgDWDbDUD\DXDTD[DaDYDZDgKcKiKeKdKhK`KbKfKaKjKoQlQxQrQtQnQvQuQsQyQpQwQkQmQjQzQqQ6XAX?X5X8X9X4X3XBX=XX;X7X@XCXDXH]N]L]J]M]I]K])b+b(b'bve*bweuetese9i:ijkikhkZm[m5o?p&q,r@rB!w+`0kKx+y+j=hDlKk=b"`${'z+}+{+|+c0b0a0"7#7!7$7o=n=l=m=p=jDiDmDlDkDoKnKmK{Q|QEXFX|e{ezexeye;i\m'qd!e!c"d"f$b$a$e$c$g$d$!(~+}'&('(#($(|'~'%("($,',!,&,",%,#,i0f0h0e0j0g0,7d0k0'7+7*7r=}=-7(7q=&7)7%7.7t={=z=w=y=s=u=x=v=|=qDpDnDrDoDpKtDsDsKqKrK~Q}Q(R'R%R$R!R"R#R&R)RKXHXIXGXMXLXJXP]Q]O],b=i7<7;7$>%>+>->&>*>)>,>#>!>'>~=">(>.>{D!EuD"EvDwD#E~D|D}DyDxD$EzDtKyKzKvKxKuKwK3R2R/RNX.R0R-R*R1R+R,RU]RXQXSXR]OXPXTXY]V]T]W]Z]X]S]/b2b!f-b>i3b1b.b0b4b"f~e}e_mam^m`m@p0(}0~0%EAp1(9,:,!1"1/>(E'E&E{K|K}K5R4RUX^][]\]]]6b5b#flk)E#1f";,0>n$m$4(2(3(<,=,$1%1@7?72>1>+E*E~K6RVX_]5(!Lo$p$6(>,?,&1,1-1(1+1*1'1)1D7E7A7C7G7F7B7:>4>7>8>5>9>6>3>8E-E9E7E0E4E3E6E2E:E1E/E#L'L$L.E5E&L(L%L"L9R=R?R;R:R8RRXXWX_XYX^X[X]X\XZX`]c]a]b]:b;b;>;ECR@RARBRd]>b@i?icm7(=EaXe]@bBi:(9(8(;(G,I,H,C,D,E,B,F,216141317181911101:151S7;1M7L7N7O7Q7P7U7K7T7R7@>B>>>?>C>E>F>A>D>AEFE>EBEGECE?E@EEEDEHE.L0L+L1L/L*L-L2L,LGRFRDRERiXkXjXbXfXeXcXdXgXhXm]g]l]h]k]f]j]i]BbAb'f%f&fCiFiDiEink:oBp(q)qG>IEJ,K,H>n](fGiA(<(>(@(?(=(T,O,L,S,R,Q,P,M,N,U,D1>1<1\7A1E1G1C1=1B1@1H1F1?1]7V7X7Z7[7Y7^7W7L>T>I>U>J>K>S>R>O>M>P>Q>N>TEXE8LVESENEPEQEJEMELEOEWEUEKE:LL?L;L7L4L9L=L6L3L5LIRPRQRORRRKRHRMRJRLRNRrXlXpXvXwXsXtXqXnXmXoXuXu]o]w]r]s]p]x]t]q]y]v]FbCbGbIbHbDbEb-f*f,f)f.f+fIiLiHiJiKiMiokqkpkdmCp*qr$C(B(Z,Y,V,X,W,K1O1N1M1I1J1L1e7c7_7`7a7b7d7Y>X>W>V>\EYE[EZEHLALBLJLILFLELDLCLGL@LSRXRVRURTRWRxX{]z]KbJb/fNiemEpDpg!f7D(\,_,],[,^,V1X1W1R1U1P1Q1T1S1i7j7h7g7Z>\>^>[>]>fE]E`EdEbEaE^E_EeEcEPLOLKLNLMLZRyX{XzXLL"^~]!^#^}]|]Lb0f1fPiQiOifmgmh"E(F(a,`,[1Y1_1Z1^1\1]1k7m7l7_>iEhEgEQLRLSL!Y[R]R\R~X|X"Y}X$^%^&^b,`1a>`>jETLRiG(c,d,b1d1f1i1g1h1e1a1j1c1v7!8x7s7"8t7q7w7z7{7|7r7y7}7u7p7n7~7o7h>d>j>c>e>b>f>g>i>uExElEqEkEoEmEtEsEpErEnEwEvEdL_LULWL\L[L^LYLXLZL`LbL]LVLcLaRcRfR^RdR`ReR_RbR,Y'Y1Y)Y/Y&Y#Y2Y.Y$Y(Y%Y*Y-Y0Y8^9^)^0^.^5^+Y,^6^+^*^4^1^3^'^7^2^;^/^-^(^:^ObMbSbQbPbVbWbTbUbNb5fRbXb2f4f6f3fWiViTiSiUiskrkhmjmlmkmimn>k>&8m>{EyEzEhLeLgLfLgRhRjRiR6Y7Y3Y4Y5Y<^8f7fXinmtkmm-qrqI(m,k,l,|1u1{1t1z1x1w1v1s1r1y158.8-8'8*8)8+848(81828/8,80838!?v>}>z>r>{>s>o>x>~>q>t>|>u>y>w>p>$F&F(F,F"F~E'F+F#F}E|E)F!F%F-F*FyLqL{L!MlL|LiL~LmL}LwLjLxLzLoLnLkLsLpLtL"MuLvLrLoRlRxRpRsRnRmRwRvRuR;PtRkRrRqRDY;YGY?YEY8Y>YHYAYFY:YBY@Y^E^?^L^F^D^H^Zb`bcb[bbb]bYb_bab^b\bBf>f8?8)?6F7F'M$M%M&M#S$S!S~R"S}RPYS^R^4afbgbHfIf^ir,s,t,u,*2E8D8C88F(MRYQYT^}ks$J(v,,2+2G8F8H8+?,?*?*M)M%S&SSYhbJf_i}/h!K(v$w$t$u$x$M(P(L(O(N(|,~,x,{,&-$-*-'-},z,.?%-(-w,"-#-y,!-)-.202/2-222-?3212R8I8K8L8T8P8N8Q8U8J8S8O8M86?4?/?FF3?0?5?2?1?>F???KFLFJFMFIF3S/S2S4S1S0SaYbYcY^^]^_^mblbOfPfNfbicism>oIp\8@?j"k"m"n"l""%#%{$!%|$z$y$}$~$--V(U(W(\(R(`(f(c(Y(_(a(T(Z(^(X(e(]([(S(b(d(4-7-.-C-:-B-2-A-6-9-F-@-;-E-8-<-?-0-D->-/-3-1-G2=-B)J2:2E2A2T2L2B2K2<2@2W2O2F2U282N272M25-A?H2>2?2C292Q2P2X2V2R2I2D2;2S2=2b8d8i8}8a8l8s8y8f8m8{8v8r8n8`8e8]8j8g8w8h8j?p8o8^8c8t8z8_8k8q8|8u8x8Q?E?b?k?n?M?f?N?\?X?Y?B?g?d?Z?p?U?mFs?S?_?W?q?P?I?T?H?F?h?O?l?m?c?[?K?C?e?o?J?t?V?R?a?]?^?L?`?G?i?r?D?lF$GqFoFZFjF~FfF}FdFtFeF{FOFWFpFhF#GkF|FnFvF[FuF(GVFwF&GPF^F]FaFcFrF%GUFYF!G'GxFsF`F_FQFiFRFgF\F"GXFTFzFSFZMIM3MQMBMLMEM6MTM5MHM4MFMOMMMAMMRM=M7MGM?M9MyFJMKM@M8MSMDMWMVMPMUMXM\S]SPSOSKS_S^SNFHSLSFSYSJS`SCSASMSWSRS8SVSbFDS;S>SdSES_8_-_9_4_;_,_._<_&_:_2_1_6_)_0_7_3_3c1c7c5c8c*c2c9@9:9A9=9<989C9?97999D93@/@1@,@+@)@0@2@.@-@5@9G?G:G;G@G8G*@>G=GZJZEZGZ?ZCZFZIZAZBZHZ@ZDZ@_?_E_A_B_C_F_AcDc>c@c?cBcCcD_=cwfzf|fufvfyf{fxftfviwi8l:l7l9l!nLoKoJo7q8q:q9qp"H9AG}f6@8@7@BG+N.N-N,N7T9T8TG_I_H_!g~fxi#n"nP-K9I9J9:@;@IG9@CGGGFGHGEGDGJG1N/N0N@OG@@C@D@F@H@I@=@<@J@G@E@A@B@?@NGVGSGKGPGWGMGUGQGTGRGLG4N6N5N7N3N2N?TKTDTLTFTGTJTHT>TVZ=TAT@TBTCTETITMTQZWZTZLZXZMZSZYZ[ZUZNZOZPZ\ZZZP_Y_V_X_Q_W_S_O_T_[_RZU_N_M_\_Z_L_R_GcUcPcRcFcEcTcLcIcOcHcJcScQcXcVcMcWcNc&g-g>lKc$g%g*g#g,g.g'g)g+g(g/g|izi~i!j"j}i{i#j=lN[TYTXTZTgZhZ8g:g7g9g$jCl^q)3+3*3[9Y9\9]9Z9a@Y@_@X@\@rGW@]@Z@`@V@^@[@nGuGtGvGsGxGoGqGmGpGwGyGCNINANJN@NENKNHNGNFN?NDNBNdTiTkThTaTcTmTjTeTnTbTlT\T]T_T^TfTgT`TrZiZnZkZoZpZjZsZlZqZmZk_j_g_f_i_h_ocfceckcjcbcmcgcdclccchcicnc>g;g?g=gq_q.ryqtZAgzq,3-3b9^9a9`9_9c9d9h@f@j@k@q@m@o@g@b@n@p@i@l@c@e@d@{G}G|G#H~GzG!H"H$HONNNLNMNuTvTqTrTsTtTpToTvZxZ{ZwZuZzZyZm_l_pcqcrcscDgEgCgBgFg+j)j*j,j(j-jGlHlFl3n4nVoUoGg&%%%m(o(l(n(q(p(r(W-U-T-V-/3532343.3130333f9i9g9h9j9e9r@t@s@)H&H'H(H%HzT{TyTxTwT|Z}Z~Zo_n_![.ju"r"s"q"t"*%'%,%(%)%+%u(w(s(v(t(Y-]-Z-\-^-`-_-q9[-63?3=38393>3@3;373:3A3<3t9l9r9s9k9m9X-o9p9n9{@"[|@y@x@~@}@#Aw@"Au@!Az@0H+H1H,H*H-H/H.HVNYNQNUNTNRNXNSNPNWN#Utc~T!U}Tv@$U|T"U#[$[%[p_ucvcwcIgHg0j/jJlKlIl5nC3D3B3x9y9u9v9w9&A(A$A'A%AyB2H3H[N]N\NZN+U(U)U*U%U&U'U)[*['[([&[t_q_s_w_u_x_v_r_yczcxc|cKg{cJg3j4j2j1jLlWoVpUpWp`qb-a-E3G3F3!:&:#:$:z9':|9}9{9%:~9":4A3A1A)A8A,A6A=A5A*A0A/A2A>AHPHNHBHLH5HOHJHQH;HCHGHKH:H8HDHAH@HEHHHMH`NjNbNsN{NlNpNUCU=U<[9UAU?U2U,UGUHUBU7U5U0U8UEU4UDUJU@UFU[P[M[E[O[7[C[/[-[N[L[K[;[:[0[6[?[J[Q[4[=[,[.[5[D[KU+[F[I[9[B[H[2[G[3[8[~_%`+`9`1`&`'`0`/`}_.`"`:`#`6`(`5`7`|_8`,`)`2`$`3`-`1[4`!`/dz_,d%d~c0d'd*`2d!d+d-d#d$d)d.dy_7d4dag*d&d5dVg(d{_1d3d6d}c"d_gOg]gMgXgTg^gNgQg`gYg\gUgPgLg[gWgbgSgZgAjPjCjJjRgHj7jNj;jMjBjRjDjIjLj5jOj@jEj9j=jQjGj6j:jjPlTlVlRlXlOlUlSlNlKjQlMlWln8n9n6n:n7nYo[oZo\oXoYpZpXpBqAqCqDqEqaqdqcqbq0r1r/r7r(:?ANUcg):*:AA@ABAVHTHUHSHPUOUQURUY[W[@`U[V[R[Z[T[X[<`>`?`;`=`S[:d8d9ddgegSjUjTj[lZlYli!x"v"y"w".%0%/%-%x({(z(y(|(g-h-d-e-f-c-H3I3-:,:/:.:+:DAHAGACAEAFAYHWHXHZH#O$OTUSU[[C`A`B`;dJ30:IAKAJA[HUU\[O=O@O?O;OAOuUxUzUpUtUqUrUsUvUyUwUoUr[p[o[u[t[s[n[m[q[f`j`g`i`h`e`k`n`l`m`d`o`]d`dbdad[d_dZd\dYd^d-h"h!h&h,h$h+h(h'h*h%h#h)hnjljkjqjojjjhjijmjpjflllglmlkljlilhlLnNnMnJnGnKnPnOnHnIn`oaoapeq#r$r%r3r2r;roHnHBO{Ux[v[y[p`w[cd.htjrjsjnlQnbpddL3CODO}U|U"V!V~Uz[}[|[{[t`r`q`s`fdgded0h/h2h1hujwjvjolrlplqlRnbocodo&rhdSnfqM3~[id3hslTnEOFO$V#Vu`jdldkdtlVnUncppHIOGOHO-V(V%V,V.V+V'V&V*V)V+\&\$\-\%\!\'\"\~`#\.\*\)\(\,\v`y`x`"a{`!a}`|`z`w`#ardudsdwdxdpdqdodvdndmdtdh;hzj}j{j#k!kyj&kxj"k|j%k$kwlvl}lyl|lzl{lulxlan\n`ncn_n[n^nbnYn~j]nZnWnXnhojomoionogoeokofolohpipgpdpfpepIqKqJqiqhqgqjq8rk7k;k2k/m2m1m6m4m+m!m~l-m.m*m"m'm:k#m)m(m$m0m%mhn3m5m,m&minknenrnpnonnngndnjnsnfnlnwo|orouoyo"pmnso}o#pxoqo{ozo!p~oqnvopotoootpkpspppqpjpmpupopnplprpLqMqOqNqQqPqlqkq'r(r4r=r7mtH;V<\=\;\7a6a+e8a*e`h_h?kAk@k8mvpRqArMO?\>\9atn9rah$p:a%pVC\/e=m>ma0e4e3e2e1echGkFk?mxnwnvn,p+p*pD\dhehyn-pxpUq)rCr5efh@m.pAa6eghhhihLkHkKkJkIkBmAmzn1p2p0p/pypzp{pVqYqXqWqBrMkCm{nDrBa|noq~ HOO}OtOOOOOOOP/P7P[PkPPPPPPQQ Q"Q&Q-Q5R1R5R^RbRkRnRxR|RRS S SST`TgT~T TTUUUUU2U6"UMUR'UuUw-UU0UU:UUBUUHV=VLWV~VgVVpVVwWW#WmWvWWWWWXXXX%X.X2X?XMXOXcXeXzX|XXY Y YpYr Y{Y YY YY YY YY YY !YZ ,ZZ 3Z5Z9 8ZBZH =ZLZ` DZxZ} YZZ _ZZ mZZ qZZ ZZ ZZ ZZ Z[ [[ [#[/ [<[? [G[N [[ \z\~ \\ \\ \\ \\ ] ] ]] ].]K ]y] >]] H]] M]] T^ ^$ e^J^O j^f^p p^^ {^^ ^^ ^^ ^^ ^^ ^^ _"_$ __ __ __ __ ` ` `,`4 `@`I `Z`_ `` `` `` aa a(a/ aRaV aqat aa aa aa aa #b#b- 1b^bf ooGoo'Qo5o<aoNoWio]ocsogolzo{oooooooooooooopp pp p+p1pJpUpjpppppppppqq q-qq%3q.q2;qAqD@qPqTDq]qcIqqPqqZqqkqqrqqqrrr)rIrKrvrrrrrrrrsss s0s5s:s<sIsMsXsos|s ssssss#ss)ss4ss@stGt t$Ut)t2ZtJtTdtqtuotttttztttttuuuu>u@uuuuuuvvv-v5vGvIvvwwwww/w5wDwNwRwZ wmwow~www!ww.ww5ww=ww@xxFx!x#Lx&x5OxHxM_xdxqexxsxxxxxxxxxxxxxyyyyy!y)yJyLyOyTygykypytyyyyyyyyyyyyyyzzzzzXz\ zlzqzzzz#{{+{"{%;{-{5?{D{NH{a{fS{p{xY{{b{{j{{o{{{|||-|E|J|W|\|f|k|x|z||||||||}}}}}:}A}N}X}g}o}z}}} }}~ ~~~%&~8~<-~V~X2~_~c5~r~{:~~D~~L[mSzflyOQŀ̀"^dǁЁց݁فނ24CMow{ҡڇӇ "$D'qvH|NSZɈemr{,7Kcy~ՉJRWYtw􊺊ъ'.B4GKIPWNxV^9>kdiqoxwӍ ˎ#'׎%2%@%E%G)0).))-q-p-u-v-|-n-}-r-{-s3[3V3R3`3S3Q3]3c3d:?3a3P3b:5:@:>:8A[A`AgA^AfOXOUONOROSOYOVOW\G\H\F\EaDaEOPaCe7e8%T%Q%R%P.,.-.)./3l3n3m3oAlAkAmAne9kQkPn~#3%V%W%Z)9)8);):%k%j%m%o%d%g%n%c%\%]%_)I)=)L.H.<.@.=.B.I4$.G.?.64%3y3~3}3w4'3x3{4"3t3u:N:ZA|:_:S:J:W:Q:]:^:P:V:X:L:[:KAzAvB'AoAxB#AtAsAqB%A}ArA{AwA~B"OjOlOhObO_:OOeO^OdOcO`\R\T\U\S\Q\P\OaHaFaKaIaGaJe>e?e@e494;4J4N4E4G:j:e:g:a:t:s:p.M:m:o:b:r:q:uB6:nB-B1B,B7B+B4IFIMI>IAIGILI=IEIIIOI?IH&#)a.[aLmHo#"/"-"0"2",#V#Y#X#T#[#W&0&)&4&%&,)h)d)t)c)w)e)g)n)r)v)s)l)o)i)k)j)u)f.a.^.c.]4W;&4V4i4p4`4c4m4e4j4h4Y4n4b4]4S4o4_4R4d4q4a4U4Z4Q:}:z;-;!;.;(;+;/4f;1BM;2:x;$;);0;3:|:y;#;%:wBAB?BIB@BJBFB>BLB=BDB;BEB:BCBHB&F&D&=&J&M&H&A&G&B&E&<&@&L*,*%*+*$*&)~)|*-**)z*(*)*')}){*#*!*"*..r*/.t4x4|4~5#4y4w5'4{5(5$;K;R;G;C;S;=;P;N;H;Q;J;B;T;@;M;>;U;OBU;AIuIlIsIjIrIvIiImIhIkIqIpIoP3P6P-P2P4P/VkVpVjVoVhVrVnVsVmViVqVtVl\f*4*1*2*3*5B`BbBaB_B^VwVuVvP7\h\gaQaRVxeJ#p#n#m#o#q*8*:*7*;.x*65+5.5/5,BcBeBgI{J#J$J!I|IzJ"PJ=J?PS"D"J"F"H"E"L"G$2$/$7$8&}&v&r&y&{&~&z&s&w'!*X*`*_*\*d*f*W*^*V*Y*]/4*b*c*e5J/H/B/9/K/<5a/?/M/A/:/7/8/G/N/>/=/D/5/L/C/E/I5]5Y5V5h5g5U5X5f5\5R5P5b5T5Q5^5Z;w;v"O"N$9$<$;$:$='*'&'/'+'''.')'%','-'1'0'(*n*s*w*o*l*x*uCMWAWBWG*z*{/Y/ZCNFAJbWH"R"Q"T"S"V"P"U$?$C$G$B$E'8'G'H'@'9'E'F'D'<'4';'?'>'6'B'7'I+'+4+!+#+&*|+3+C+(+:*~+A+B+E+<+-+5+2+*+>+6+D+)+;+1+7*}+0+/+$+@+9/e/m/[/v/g/h/r/i/d/^/_/l/f/a/s/j/b6(5v5w5{6,6)6"6!6%645r656'696-6+5s626860676$5t666&5~6*5y5}5x=#=&=$=%D#K.K/K0QQAWrWqWs]9avefmU!A!_"X$I$J"]"_"`$[$Y$L$S$M$U$R$Q$Z'i'm'Y'o'`'U'n'Q'P'^'R+^+a+d+Y+g+j+l+V0,+e+m+]+U0G+b+Z+\+i+Q0A'h+X+P080>0:0-000)0*090B0(0I0=0J0D060E0?0H0F070L030.6^6j6[6T6D6`6P6b6Z6a6c6e6N6_6S6g6X6V6W6R6Q6K6i6U=L=@=2=3=7=>=8=4=-=.=0===?=W=O=U=[=E=9=C=I=F=5=S=P=X=D=:6H=T=R=VDGDFD,DED/D0D8D.D1DIDPDHD=DOD;D2D?DKD6D@DJD-D7DAD4D+D9DMDDLD5K5KVK9KIK;KYKUKTKQK^K=KFK\KRKBK?K@KXK]K[K_K8QCKAKOKGK:KWKZKCKNK>QLQVQUQaQSQWQZW{Q\QKQfQ_QcQhQ]QQQiQ^QDQdQIQbQJQHQ`QGQYQXQeQOX"];X(X.X'WtX%X0X2X1W|QFWwWzX-X!Wu]:X/WyX)]?]E]C]F]>]B]A]Gb"b$a~b!azX#a{awb&axaya}eielemeneqb#eheoi4eki.i7i-i*i,i0i3i2i6i)i1i5i8i/kakbkfkgkdkekcmVmWmXo4o3p=p;p>pr?'x'z'u'r't0Z0[0\0Y0^0O0U0N0X0]0M0P0V0W0_0S6s6o6{6m6z6k=_6u6v6y6}6r6w6|6p6l6~6t=]=f=\=d=b=c=`=^=a=eDVD]D_DeDcDSDdDRDWDbDUD\DXDTKcKiKeKdKhK`KbQoQlQxQrQtQnQvQuQsQyQpQwQkQmQjQzQqXAX?X5X8X9X4X3XBX=X->&>*>)>,>#>!>'=~>">(>.DvDwE#D~D|D}DyDxE$KvKxKuKwR0R-R*R1R+R,]X]Sb/b2f!b-i>b3b1b.b0b4f"e~m_mam^m`p@(00}0~E%>/E(E'E&K{K|K}]^][]\]]b6b5f#kl(4(2(31+1*1'7D7E7A7C7G7F7BE9E7E0E4E3E6E2E:E1E.E5L&L(L%L"R9R=R?R;R:R8XXXWX_XYX^X[X]]c]a]bE;RCR@RARB,C,D,E1216141317181911107L7N7O7Q7P7U>@>B>>>?>C>E>F>A>DEAEFE>EBEGECEHL.L0L1L/L*L-L2L,RGRFXkXjXbXfXeXcXdXgXh]l]h]k]f]j]if%f&iCiFiDiEkn]nf(iG(A(<(>(@(?(=,R,Q,P,M,N,U1D1>1<7\1A1E1G1C1=1B1@1H1F1?7V7X7Z7[7Y>J>K>S>R>O>M>P>Q>NESENEPEQEJELEOEWEUEKL:LL?L;L7L4L9L=L6RORRRKRHRMRJRLXrXlXpXvXwXsXtXqXn]w]r]s]p]x]tbGbIbHbDbEf*f,f)f.f+iIiLiHiJiKiM,V,X,W1K1O1N1M1I7`7a7b7d>Y>X>W>VLJLILFLELDLCLGL@RSRXRVRURTRWXx]zbKbJmepEpD!g,\,_,]1V1X1W1R1U1P1Q1T1S7i7j7h7g>Z>\>^EfE]E`EdEbEaE^E_Ee^!^#]}]|iPiQiOmfmg1[1Y1_1Z1^1\1]7k7mY!R[R]R\X~X|Y"X}1b1d1f1i1g1h1e1a1j1c7s8"7t7q7{7|7r7y7}7u7p7n>d>j>c>e>b>f>gEuExElEqEkEtEsEpErEnEwEvLWL\L[L^LYLXL`LbL]LVY)Y/Y&Y#Y2Y.Y$Y(Y%Y*Y-Y0^8^9^)^0^.^6^+^*^4^1^3^'^7^2^;^/^-^(^:bMbSbQbPbVbWbTbUbNf5bRiWiViTiSiUmhmjmlmkmion>k8&LhLeLgY6Y7Y3Y41u1{1t1z1x1s1r1y8+848(81828/?!>v>}>z>r>{>s>o>t>|>u>y>w>pF$F&F(F,F"E~F'F+F#E}E|F)F!F%L|LiL~LmLoLnLkLsLpLtYDY;YGY?YEY8Y>YHYAYFY:Yb[bbb]b_bab^b\f@fAf:f9f=f;f?iYkykvkwkukxkzo=pGq/q1q.q02$1}2#2!2"1~86?$?%F0F1F/F2F.YNYLYM^Q^P^O8:8889?'?(?&F4F3F58@8B8;8<8=8A8>8?M$M%M&S#S$S!R~S"R}YP^Ra4bfbgfHfIi^?+?,?*,~,x,{-&-$-*-',},z?.-%-(,w-"2/2-228L8T8P8N8Q8UFBF:FGF?F9M+M1M0M/YVYZYTY]Y\YXY^YW^U^[bkbibjk~mrq2q3?9?:?;8[8X8Z?=?>??FKFLFJFMS3S/S2S4S1S0YaYbYc^^^]^_bmblfOfPfNibicmso>pI"k"m"n"l%"%#${$|$z$y$}$~--(\(R(`(f(c(Y(_(a(T(^(X(e-2-A-6-9-F-@-;-E-8-<-?-0-D->2B2K2<2@2W2O2F2U282N-5?A2H2?2C292Q2P2X2V2R2I2D8b8d8i8}8l8s8y8f8m8{8v8r8n8`8e8]8w8h?j8p8o8^8c8t8z8_8k8q8|8u8x?Q?E?b?k?n?M?f?N?\?X?Y?B?g?d?Z?p?UFm?s?S?_?W?q?P?I?T?H?F?h?O?l?m?[?K?C?e?o?J?t?V?R?^?L?`?G?iFoFZFjF~FfF}FdFtFeF{FOFWFpFhG#FkF|FnFvF[FuG(FVFwG&FPF^F]FaFcFrG%G'FxFsF`F_FQFiFRFgF\G"FTFzFSMZM3MQMBMLMEM6MTM5MHM4MFMOMMMAMSdSES_8_-_9_4_;_,_._<_&_:_2_1_6_)c3c1c7c5c8c*c2c<_=c.Slc)c6c0c-c(c'c;c,c+c4c/c:fifjfqffc9fsfhfnfpfkfrfmflipl1l4l0l3m~m|m{l/m}l5mzoHo&oFoGoIpMpLpKq]quqtqv-K2q2r2x2v2}2t2u2~2|2y2w969B9>9@9:9A@/@1@,@+@)@0@2@.@-@5G9G?G:G;G@N$N(M~N!N&M|N"N'N%N#T-T3T/T0T1ZIZAZBZHZ@ZD_@_?_Ec>c@c?cBcC_Dc=fwfzf|fufvfyf{fxftivq7q8q:q9"pGBN+N.N-N,T7T9T8_G_I_H9K9I9J@:@;GI@9GCGGGFGHGEGDGJN1N/N0Tg8g:g7g9j$lC3)3+3*9[@W@]@Z@`@V@^GqGmGpGwGyNCNINANJN@NENKNHNGNFN?NDTdTiTkThTaTcTmTjTeTnTbTlT]T_T^TfTgZoZpZjZsZlZq_j_g_f_i_hcocfceckcjcbcmcgcdclccn/n-n,n1n2oTn.pTpQpRpSq@q?q>q_r.qy9a9`9_9c9d@h@f@j@k@q@m@o@g@b@n@p@i@l@c@e@dG{G}G|H#G~GzH!H"NONNNLNMTuTvTqTrZxZ{ZwZuZzZycpcqcrgDgEgCgBgFj+j)j*j,j(j-lGlHlFn3n4oVoU(l(n(q(p(r32343.31"r"s"q"t%*%'%,%((u(w(s(v(t-Y-]-Z9q-[363?3=38393>3@3;373:3A3<9t9l9r9s9k9m-X9o9p9n@{["@|@y@x@~@}A#@wA"@uA!@zH0H+H1H,H*H-NVNYNQNUNTNRNXNSNPNWU#ctT~U!T}@vU$T|U"[#[$[%_pcucvcwgIgHj0j/lJlKlIn53C3D3BA&A(A$A'A%U+U(U)U*U%U&[)[*['[([&_t_q_s_w_u_x_v_rc{gJj3j4j2j1lLoWpVpU-b-a3E:&:#:$9z:'9}9{:%9~:"A4A3A1A)A8A,A6A=A5A>AUCU=[[P[M[E[O[7[C[-[N[L[K[;[:[0[6[?[J[Q[4[=[,[.[5[DUK[+[F[I`+`9`1`&`'`0`/_}`.`"`:`(`5`7_|`$`3`-[1`4`!d,d%c~d0d'`*d2d!d#d$d)d._yd7d4gad*d&d5gVd(d1d3d6c}d"gTg^gNgQg`gYg\jAjPjCjJgRjHj7jNj;jMjBjRjDjIjLj5jOj@jEj9j=jQjGj6j:jlPlTlVlSlNjKlQlMlWnn8n9n6n:n7pXqBqAqCqDqEqaqdqcqbr0r1r/r7:(A?UNgcHVHTHUHS[Y[W`@[U[V[R[Z[T[X`O=O@UuUxUzUpUtUqUrUsUvUyUw[r[p[o[u[t[s[n[m[q`f`j`g`i`h`e`k`n`l`m`d`od]d`dbdad[d_dZd\dYd^h-h"h!h&h,h$h+h(h'h*h%h#h)jnjljkjqjojjjhjijmjplflllhnLnNnMnJnGnKnPnOnHnIo`r#r$r%r3r2r;`p[wdch.V"V!U~[z[}[|[{`t`r`qdeh0h/h2h1jujwjvlolrlplqnRobocod`udjdldkOIOGOHV-V(V%V,V+V'V&V*V)\+\&\$\-\%\!\'\"`~\#\.`xa"`{a!`}`|`z`wdrdudsdwdodvdndmdthj{k#k!jyk&jxlzl{lulxnan\n`ncn_n[n^nbnYj~n]nXohojomoionogoepgpdpfpeqIqiqhqgqjV3V6V0V7V/V1V2V5V:V9V4V8\0\6\9\5\2\:\1\7a5a(a)a,a*a$a'a1a+a3a0a2a%a.a/a-d|d~e#e%dze&e"e$e(e!e)d}dya&h^hUhQhZhThJhWhRhShEhLh[hXhPh\hKhFhYhHhVhMh]hIhGhNhOk0kk7k;k2m/m2m1m6m4m+m!l~m-m.m*m"m'k:m#m)m(m$m0m%nhm3m5m,m&ninknenrnpnonnngndnjnsnfnlowo|orouoyp"nmoso}p#oxoqo{ozp!o~nqovopotooptpkpspppqpjpmpupopnplprqLqMqOqNqQqPqlqkr'r(r4\<\=\;a7a6e+a8e*k?kAk@m8kCkBkEkDp&p'qSqmAU\Bame0e4e3e2e1hckGkFm?nxnwnvp,p+p*hdhenyp-pxqUr)rCe5hfm@p.aAe6hghhhikLkHkKkJkIp1p2p0p/pypzp{qVqYqXqWN!&N !'N!/N!-N.!0N1!CN3%1N#"O?#*OA#&OI"}OL%=OR#$OS"~OV"zOX#'O_#%Oa#+Ob"|Od#!Og##Oj%?Ok%KOn%LO%DO%HO)"O)*O)/O)%O(~O),O)#O)$O(}O)!O)&O)-O)(O)+O)'O)1P-jP-kP-~P-lP3^P-wP-oP-xP-iP -yP"-mP'-zP,-tP@3fPA3ZPE3_PF3ePH3XPJ3\PK3UPM3YPQ3jPS3TPW3iPn3gPp3OPr3WPs3hP:BP:;P:CP:9P:T$#ET%#?T(#DT*#:T0#8T7#9T=#ATA#CTE#T)DT)PT)FT)CT)T.AT.8T.DT.ET.CT.;U.5U.:U&.3U*3zU-4*U04!U94(U;4+U<3vU@4,UE4#UH4)UK4-Ub3|Ue4&U}:YU:\U:UU:RU:MU:TUB&UApUAuUB!UAyUB$UI4gZd4^Ze4[Zg4TZi4lZl4\Zm4XZp4kZ;*Z;'Z:{Z;"Z:~Z;,ZBBZBGZIUZITZO}[P)[Va[Vf[ Ve[!V^[2\\[Eho[V"3[b&6[e&7[l.g[n4s[r4r[wId[{\c[!S[!T[#\[#][&8[&9[.h[)x[.j[.i[4u[4t[;8[;7[BN[BO[BP[Ie[If[;4[Vg[\d[\e\.k\ ;;\!<\!U\"4\BQ\%"5\(#^\*#_\0;<\3BR\;!V\D&:\G&;\L)y\T.m\V.l\Y4v\cIg\gP*\iaN\jaO\mp6\n!+\s!X\t!W\&I\&?\&K\.n\.p\.q\.o].s]5%]4z]#5&]%5"]&5!](4}]N;E]Q;D]R;I]U;F]Y;L]^BY]bB\]cBT]eBV]gB[]hBZ]k;?]lBX]qBS]rBW]wIn]It]P.]P0]P1]P,]P+]P5]aP]d>]eI]hp]hq]kW]kX]mL]mK]o%]":]#j]B]]*0]!=^!Y^ #k^#l^&O^&N^&P^(.v^).u^45*^>5)^A;W^D;V^SIy^XIw^YIx^\P:^]P8^`P9^u";^!Z^![^"<^*9^.w^.y^.z^5-^Bf^Bd^I}^P>_"=_#r_*<_">_#s_(&Q_.*=_0.|_3.{_650_851_@Bh_CJ&_DJ%_IP?_KV~_Oo'_T&U_V*>_X;X_g.}_oJ'_s!,_t"?_v#u_x#t_}&X_~&W_&V_*?_53_52_54_;Z_;Y_;[_Bj_Bi_P@_J(_!\_&Y_#z_#|_$'_$$_$"_$%`$&`&b`&]`&d`&o`&e`"&g`$*N`&&\`7*@`9*A`L*J`S*F`T*B`X*P`f*Q`g/"`n*R`r*C`/&`/(`/*`/0`56`/'`/+`/-`/$`59`5B`5D`;]`5:`5;`5<`5?`5C`5@`;_`5>`;c`;g`Bk`;i`;j`;k`;qa ;da ;sa;pa;ha;ba;ea;na;oa2Bqa6Bpa;J9a@BwaAJ+aEBoaFBsaIBlaJBmaOBua[J7a^J,aaJ;aeJ8afPQajJ:alJ2ayPCazJ6aJ3aPBaPMaPIaW%aPHaW#aPLaPOaPFaW$aPNaW-aW+a\laW,aW)a\jaW&aW(aW*aa[aaSahvaeLakZbo(bo)bo*br*b !]b&pb/1b Bxb:$(b=&qbB*SbC*TbF/2bJ;tbP!^bY"IbZ"Kb\"Cbw$5bz$1b{$0b}$6b$3b$)b$.b$4b$*b$+b$,b$-b&|b&ub&xb*Ub&tb*[b*gb/3c*ac*Zc)/@c,/6c-/FcQ/Jce5Kcu5[cx5cc|5_c}5Nc5ec5Mc5dc5Wc5Lc;uc5Sc5`c5Oc<)c<.cC!dC*dC+dC8dC>d+J@d3C'd5C5d7C-d9C,dKJPdMJAdNJLdPJSdSJQdeJYdfJJdhPadkJWdlJVdnPTd}JHdJTdJMdPXdP[dP_dJKdPbdW4dW6dW3dW2dW1dW0dW/dW9dW7d\ud\wd\xd\td\vd\sdW8da`dacda_da]eaaeabea^eeMe ePek[e)o+e-p7e.p}e2<7e3W:e7"Me='"eA*heC*ieF/PeJ/OeS5ie\<;eoCBesJ[evPdeeSe<>eCCeadeo-egU$AgY$@gZ$Fg]$Dgl'5gt'=g':g'Cg'Ag+=g+8g+.g+,g+%g+?g+"g++h/nh/oh/ch/\h%/uh&/ph(/qh:/th;/`hD/khI/]h6/h6.h5uh61h5|h63h6#hqX;qX7qX@qXCqXDq]Hq]Nq]Lq]Jqb)qb+r etr esri9ri:r?!BrA+wrB0`rDKkrODhrSKlrZ=kr^"brc$`rj'{rl+zrn+}rp+{rs+|r!dr!er"cr"dr$fr$br$ar$er$cr('r(#r($r'|r'~r(%r("r,$r,'r,!r,&r,"r,%r,#r0ir0fr0hs7-s7(s=qs7&s7)s7%s7.s"=ts#={s&=zs'=ws-=ys@DrsBDosCKpsQKrsRQ~ss]Osvb,s7/s!fs"es(/s(.s(*s0ps,4s,2s0rt73t76t7>t 7$t>%t>+t@D{tBE!tDDutFE"tWDztbKttgKytnKztyR3t|R2t}R/tXNtR.t]UtXRtXQtXSt]RtXOtXPtXTt]Yt]Vt]Tt]Wt]Zte}tpAt(1t,9t,:t1!t1"uR5uR4u XUuE)u!1#u*"fu.,;u/>0u9$nu:$muG,2uo>1uwE+uyE*u}K~u~R6uXVu]_u(5uL!u$ou$pu(6u,>u,?u1&u1,u1-u1(u1)u>:u>4u>7u>8u>5u>9u>6u>3uE8uE-vE/vL#v L'v L$v#Rv;v]dvb>vi@vi?vmcv(7vE=vE=vXav]evb@viBv(:v(9v(8v(;v,Gv,Iv,Hw,Bw ,Fw"1:w#15w%7Sw'1;w-7Mw97Kw;7Tw=7Rw_E?w`E@wgEEwiEDw|L+wRDwREwXiw]mw]gwbBwbAwf'wo:wpBwq(wq)w>GwEIw,Jw,Kw>Hx,Tx,Ox,Lx ,SxE7]xP7^xR7Wx\>Lx^>Tx`>Ixb>UxyETx{EXx~L8xEVxEMxL3xL5xRIxRPxRQxRNxXmxXoxXux]ux]oy]qy]yy]vy bFy bCyf-y-koy/kqy1kpy5mdy8pCy9q*y=$ry?(CyB(ByD,ZyE,Yy[1Jy\1Lya7eyc7cyd7_yyE\y|EYy}E[yEZyLHyLAyLBy]{yf/yiNy7fy(Dy,[y,^z >[z >]z"Ecz&LPz(LOz+LKz/LNz0LMz9RZzDXyzGX{zHXzzJLLzT^"zV]~z_bLzgf0zhf1zu"hzx(Ez{(Fz~,az,`z7lz>_zEizEhzEgzLQzLRzLSz^$z^%z^&z,bz1`z>az>`zEjzLTziRz(G{,c{,d{7v{8!{7x{*7w{+7z{87~{;7o{@>h{X>i{iEo{mEm{Ld{L_{LU{LZ{Lc{Ra{Rc{Rf{R^{Rd{R`{Re{R_{Rb{Y,{Y'{Y1{^5{Y+{^,|bO|0bX|3f2|9f4|;f6|l|>m|E{|Ey|Ez|Lf|Rg|Rh|Rj|Ri|Y5|^<|f8|f7|iX|mn|kt|mm|q-|qr|(I},m},k},l} 1|}1w}1v}(85})8.},8-}58'}68*}88)}E8,}G80}J83}\>x}_>~}c>q}F-}F*}Ly}Lq}L{}M!}Ll}L}}Lw}Lj}Lx}Lz}M"}Lu}Lv}Lr}Ro}Rl}Rx}Rp}Rs}Rn}Rm}Rw}Rv}Ru}P;}Rt}Rk}Rr~Rq~YB~Y@~)^G~*^C~-^=~0^I~3^@~6^K~@^E~B^?~D^L~G^F~I^D~L^H~PbZ~Qb`~Sbc~\bY~hfB~of>~pf<~~iZ~i\~i[~mo90R>?"??#CYKE^NJfDKfCMk{OmpQ"iX,nsM#vRyfEfFmqpH,p,o2&872%RzR|R{YObebdfGi]k|,q2)2(2'?)F6F7M'^S,r,s,t,u2*8E8D8C!F8$M()YR*YQ,^T0k}4$s5(J7,v92,>2+C8GG8FH8H\M*]M)dS%gS&lYSubhxfJyi_/}!h(K$v$w$t$u$x(M(P(L(O(N,|-#,y-!-)2.20?-23218R8I8K%8J'8S,8O-8M:?6=?4C?/DFFG?3J?0M?5O?2R?1[F>\FQ2;S2SV2=z8a8j8g?c?a ?]?r#?D)Fl+G$-FqeFUgFYhG!FXMIM>MRM?M9FyMJMXSN;S6>YtMYgNYw[Yu]Z!kYflZ$nYxqYv^cbybzf`c!fbfVijf[ il inCpJR2ZS2YV9!Y8~w-G|-I2d2g2j2\9(9)9-@%?x?v?yG4G*G7Mb8Mw:MqG=GZJ"ZE#ZG&Z?'ZC)ZF<_A>_BA_CB_FFcAIcDfiwil8kl:ml7nl9qn!soLtoKvoJ9HGAf}@6@8@7g!f~ixn#n"-P-Q-R3!9O'9M,9N09L9@>?GO@@@D@CE@DH@FaGNzGWN4N6N5N7N3N2T?TJTHT>ZVT=ZYZ[ZUZNZOZPZ\ZZ _Q _W*cEEl>]i|`izci~ej!gj"hi}ji{mj#pOpPqmg;og?sg=xg<{g@j'j%j&lElDn0ZtgAqz3,3-9b9^ H$ Ts#Tt$Tp,To.Zv@_mC_lKcsgG%&%%(m(o-W-U-T-V3/353033 9f 9i9g9h!9j$9e-@r/@t4@s=H)?H&DH'IH(RH%gTzkT{oTypTxsTwvZ|yZ}{Z~~_o_n[!j."u%)%+-\-^-`-_H/H.S9xU9yV9uX9vZ9whBynH2oH3rN[sN]yN\zNZU'cyczcxc|gKpWq`3G3F:!9| A* A0A/A26HF:H7FH?HH4JH>^H;`HCaHGvN`NdNqNnU:U3[/-[94[B5[H8[29[G<[3F[8G_~I`%\`#^`6g`8j`,m`)q`2d/_zd+d-_{g_gOg]gMgXgUgPgLg[gWgbgSgZj? j80lR1lX6lO7lUUoYWo[]oZ^o\boXhpYipZ:):*AAA@ABUPUOUQUR`>`?`;`=[S!i(%.-%0/%/0%-C(|J-gN-hO-dQ-eS-fT-c\3H_3Ik:-m:,o:/q:.|:+~ADAHAGHZO#O$UTUS[[`C`A`Bd;3J:0AIAKAJH[UU[\dOE?OFCV$FV#RltUnVVnUYpc[HplV.\*\)\(\,`v`ya#dxdpdqh;jzj}k"j|k%k$lwlv!l}#ly$l|DnZFnWUokXofYol^ph`pimqKnqJyr8zra9ntr9hap$a:p%V<\@\Aa;e,m9m;m:nup( qT qnV=V>\Ce/=\DdmBemAknz~rBkMmCn{rDaBn|qo~H OO}tOOOOOOOO/P7P[PkPPPPPPPQ Q"Q&Q-Q5Q1R5R^RbRkRnRxR|RRR S SSS`TgT~TT TTUUUU2U6U"MURU'uUwU-UU0UU:UUBUUH=VLVW~VVgVVpVVwW#WmWvWWWWWWXXX%X.X2X?XMXOXcXeXzX|XXX YY pYrY {YY YY YY YY YY YY! YZ, ZZ3 5Z9Z8 BZHZ= LZ`ZD xZ}ZY ZZ_ ZZm ZZq ZZ ZZ ZZ ZZ Z[ [[ #[/[ <[?[ G[N[ [[ z\~\ \\ \\ \\ \\ ]] ] ] .]K] y]]> ]]H ]]M ]]T ^$^e J^O^j f^p^p ^^{ ^^ ^^ ^^ ^^ ^^ ^^ "_$_ __ __ __ __ `` ,`4` @`I` Z`_` `` `` `` aa (a/a RaVa qata aa aa aa aa# #b-b1 ^bfb< pbtbE bbJ bbZ cca 2cooGo'oQ5ou@uuuuuuuvv-v5vGvIvvvwwww/w5wDwNwRwZw mwow~wwww!ww.ww5ww=ww@xxF!x#xL&x5xOHxMx_dxqxexxsxxxxxxxxxxxxxyyyy!y)yJyLyOyTygykypytyyyyyyyyyyyyyyyzzzzXz\z lzqzzzzz#{{+"{%{;-{5{?D{N{Ha{f{Sp{x{Y{{b{{j{{o{{{||-|E|J|W|\|f|k|x|z|||||||||}}}}:}A}N}X}g}o}z}}}} }} ~~~%~&8~<~-V~X~2_~c~5r~{~:~~D~~L[mSzflyOQŀʀ̀ـ"^dЁҁ݁24CMow{ŇӇ "$D'qvH|NSZɈЈemr{,7Kcy~ՉJRWYtwъ'.B4GKIPWNxV^9>kdiqoxwӍٍ #'%2%@%E%G%0).)))q-p-u-v-|-n-}-r-{-s-[3V3R3`3S3Q3]3c3d3?:a3P3b35:@:>:8:[A`AgA^AfAXOUONOROSOYOVOWOG\H\F\E\DaEaPOCa7e8eT%Q%R%P%,.-.)./.l3n3m3o3lAkAmAnA9eQkPk~n3#V%W%Z%9)8);):)k%j%m%o%d%g%n%c%\%]%_%I)=)L)H.<.@.=.B.I.$4G.?.6.%4y3~3}3w3'4x3{3"4t3u3N:Z:|A_:S:J:W:Q:]:^:P:V:X:L:[:K:zAvA'BoAxA#BtAsAqA%B}ArA{AwA~A"BjOlOhObO_OO:eO^OdOcO`OR\T\U\S\Q\P\O\HaFaKaIaGaJa>e?e@e494;4J4N4E4G4j:e:g:a:t:s:p:M.m:o:b:r:q:u:6Bn:-B1B,B7B+B4BFIMI>IAIGILI=IEIIIOI?IHI#&a)[.LaHm#o/"-"0"2","V#Y#X#T#[#W#0&)&4&%&,&h)d)t)c)w)e)g)n)r)v)s)l)o)i)k)j)u)f)a.^.c.].W4&;V4i4p4`4c4m4e4j4h4Y4n4b4]4S4o4_4R4d4q4a4U4Z4Q4}:z:-;!;.;(;+;/;f41;MB2;x:$;);0;3;|:y:#;%;w:AB?BIB@BJBFB>BLB=BDB;BEB:BCBHB&F&D&=&J&M&H&A&G&B&E&<&@&L&,*%*+*$*&*~)|)-***z)(*)*'*}){)#*!*"*.*r./*t.x4|4~4#5y4w4'5{4(5$5K;R;G;C;S;=;P;N;H;Q;J;B;T;@;M;>;U;O;UBA;uIlIsIjIrIvIiImIhIkIqIpIoI3P6P-P2P4P/PkVpVjVoVhVrVnVsVmViVqVtVlVf\4*1*2*3*5*`BbBaB_B^BwVuVvV7Ph\g\QaRaxVJep#n#m#o#q#8*:*7*;*x.6*+5.5/5,5cBeBgB{I#J$J!J|IzI"JJ=J?JSPD"J"F"H"E"L"G"2$/$7$8$}&v&r&y&{&~&z&s&w&!'X*`*_*\*d*f*W*^*V*Y*]*4/b*c*e*J5H/B/9/K//=/D/5/L/C/E/I/]5Y5V5h5g5U5X5f5\5R5P5b5T5Q5^5Z5w;v;/<|;,<}B0<3!O"N"9$<$;$:$=$*'&'/'+'''.')'%','-'1'0'('n*s*w*o*l*x*u*MCIWAWBWGWz*{*Y/Z/NCAFbJHWR"Q"T"S"V"P"U"?$C$G$B$E$8'G'H'@'9'E'F'D'<'4';'?'>'6'B'7'I''+4+!+#+&+|*3+C+(+:+~*A+B+E+<+-+5+2+*+>+6+D+)+;+1+7+}*0+/+$+@+9+e/m/[/v/g/h/r/i/d/^/_/l/f/a/s/j/b/(6v5w5{5,6)6"6!6%646r556'696-6+6s526860676$6t566&6~5*6y5}5x5f<|6#=&=$=%=#D.K/K0KQAQrWqWsW9]vafeUmA!_!X"I$J$]"_"`"[$Y$L$S$M$U$R$Q$Z$i'm'Y'o'`'U'n'Q'P'^'R'^+a+d+Y+g+j+l+V+,0e+m+]+U+G0b+Z+\+i+Q+A0h'X+P+80>0:0-000)0*090B0(0I0=0J0D060E0?0H0F070L030.0^6j6[6T6D6`6P6b6Z6a6c6e6N6_6S6g6X6V6W6R6Q6K6i6U6L=@=2=3=7=>=8=4=-=.=0===?=W=O=U=[=E=9=C=I=F=5=S=P=X=D=:=H6T=R=V=GDFD,DED/D0D8D.D1DIDPDHD=DOD;D2D?DKD6D@DJD-D7DAD4D+D9DMDDLD5D5KVK9KIK;KYKUKTKQK^K=KFK\KRKBK?K@KXK]K[K_K8KCQAKOKGK:KWKZKCKNK>KLQVQUQaQSQWQZQ{W\QKQfQ_QcQhQ]QQQiQ^QDQdQIQbQJQHQ`QGQYQXQeQOQ"X;](X.X'XtW%X0X2X1X|WFQwWzW-X!XuW:]/XyW)X?]E]C]F]>]B]A]G]"b$b~a!bza#X{awa&bxaya}aielemeneqe#bheoe4ike.i7i-i*i,i0i3i2i6i)i1i5i8i/iakbkfkgkdkekckVmWmXm4o3o=p;p>pr?rx'z'u'r't'Z0[0\0Y0^0O0U0N0X0]0M0P0V0W0_0S0s6o6{6m6z6k6_=u6v6y6}6r6w6|6p6l6~6t6]=f=\=d=b=c=`=^=a=e=VD]D_DeDcDSDdDRDWDbDUD\DXDTDcKiKeKdKhK`KbKoQlQxQrQtQnQvQuQsQyQpQwQkQmQjQzQqQAX?X5X8X9X4X3XBX=X&>*>)>,>#>!>'>~=">(>.>vDwD#E~D|D}DyDxD$EvKxKuKwK0R-R*R1R+R,RX]S]/b2b!f-b>i3b1b.b0b4b"f~e_mam^m`m@p0(}0~0%E/>(E'E&E{K|K}K^][]\]]]6b5b#flk4(2(3(+1*1'1D7E7A7C7G7F7B79E7E0E4E3E6E2E:E1E.E5E&L(L%L"L9R=R?R;R:R8RXXWX_XYX^X[X]Xc]a]b];ECR@RARBRC,D,E,216141317181911101L7N7O7Q7P7U7@>B>>>?>C>E>F>A>D>AEFE>EBEGECEHE.L0L1L/L*L-L2L,LGRFRkXjXbXfXeXcXdXgXhXl]h]k]f]j]i]%f&fCiFiDiEinkn](fGiA(<(>(@(?(=(R,Q,P,M,N,U,D1>1<1\7A1E1G1C1=1B1@1H1F1?1V7X7Z7[7Y7J>K>S>R>O>M>P>Q>N>SENEPEQEJELEOEWEUEKE:LL?L;L7L4L9L=L6LORRRKRHRMRJRLRrXlXpXvXwXsXtXqXnXw]r]s]p]x]t]GbIbHbDbEb*f,f)f.f+fIiLiHiJiKiMiV,X,W,K1O1N1M1I1`7a7b7d7Y>X>W>V>JLILFLELDLCLGL@LSRXRVRURTRWRxXz]KbJbemEpDpg!\,_,],V1X1W1R1U1P1Q1T1S1i7j7h7g7Z>\>^>fE]E`EdEbEaE^E_EeE!^#^}]|]PiQiOifmgm[1Y1_1Z1^1\1]1k7m7!Y[R]R\R~X|X"Y}Xb1d1f1i1g1h1e1a1j1c1s7"8t7q7{7|7r7y7}7u7p7n7d>j>c>e>b>f>g>uExElEqEkEtEsEpErEnEwEvEWL\L[L^LYLXL`LbL]LVL)Y/Y&Y#Y2Y.Y$Y(Y%Y*Y-Y0Y8^9^)^0^.^6^+^*^4^1^3^'^7^2^;^/^-^(^:^MbSbQbPbVbWbTbUbNb5fRbWiViTiSiUihmjmlmkmimk>&8hLeLgL6Y7Y3Y4Yu1{1t1z1x1s1r1y1+848(81828/8!?v>}>z>r>{>s>o>t>|>u>y>w>p>$F&F(F,F"F~E'F+F#F}E|E)F!F%F|LiL~LmLoLnLkLsLpLtLDY;YGY?YEY8Y>YHYAYFY:Y^[bbb]b_bab^b\b@fAf:f9f=f;f?fYiykvkwkukxkzk=oGp/q1q.q0q$2}1#2!2"2~168$?%?0F1F/F2F.FNYLYMYQ^P^O^:88898'?(?&?4F3F5F@8B8;8<8=8A8>8?8$M%M&M#S$S!S~R"S}RPYR^4afbgbHfIf^i+?,?*?~,x,{,&-$-*-'-},z,.?%-(-w,"-/2-222L8T8P8N8Q8U8BF:FGF?F9F+M1M0M/MVYZYTY]Y\YXY^YWYU^[^kbibjb~krm2q3q9?:?;?[8X8Z8=?>???KFLFJFMF3S/S2S4S1S0SaYbYcY^^]^_^mblbOfPfNfbicism>oIpk"m"n"l""%#%{$|$z$y$}$~$--\(R(`(f(c(Y(_(a(T(^(X(e(2-A-6-9-F-@-;-E-8-<-?-0-D->-B2K2<2@2W2O2F2U282N25-A?H2?2C292Q2P2X2V2R2I2D2b8d8i8}8l8s8y8f8m8{8v8r8n8`8e8]8w8h8j?p8o8^8c8t8z8_8k8q8|8u8x8Q?E?b?k?n?M?f?N?\?X?Y?B?g?d?Z?p?U?mFs?S?_?W?q?P?I?T?H?F?h?O?l?m?[?K?C?e?o?J?t?V?R?^?L?`?G?i?oFZFjF~FfF}FdFtFeF{FOFWFpFhF#GkF|FnFvF[FuF(GVFwF&GPF^F]FaFcFrF%G'GxFsF`F_FQFiFRFgF\F"GTFzFSFZM3MQMBMLMEM6MTM5MHM4MFMOMMMAMSdSES_8_-_9_4_;_,_._<_&_:_2_1_6_)_3c1c7c5c8c*c2c9@9:9A9/@1@,@+@)@0@2@.@-@5@9G?G:G;G@G$N(N~M!N&N|M"N'N%N#N-T3T/T0T1TIZAZBZHZ@ZDZ@_?_E_>c@c?cBcCcD_=cwfzf|fufvfyf{fxftfvi7q8q:q9qp"BG+N.N-N,N7T9T8TG_I_H_K9I9J9:@;@IG9@CGGGFGHGEGDGJG1N/N0NN8g:g7g9g$jCl)3+3*3[9W@]@Z@`@V@^@qGmGpGwGyGCNINANJN@NENKNHNGNFN?NDNdTiTkThTaTcTmTjTeTnTbTlT]T_T^TfTgToZpZjZsZlZqZj_g_f_i_h_ocfceckcjcbcmcgcdclccc/n-n,n1n2nTo.nTpQpRpSp@q?q>q_q.ryqa9`9_9c9d9h@f@j@k@q@m@o@g@b@n@p@i@l@c@e@d@{G}G|G#H~GzG!H"HONNNLNMNuTvTqTrTxZ{ZwZuZzZyZpcqcrcDgEgCgBgFg+j)j*j,j(j-jGlHlFl3n4nVoUol(n(q(p(r(2343.313r"s"q"t"*%'%,%(%u(w(s(v(t(Y-]-Z-q9[-63?3=38393>3@3;373:3A3<3t9l9r9s9k9m9X-o9p9n9{@"[|@y@x@~@}@#Aw@"Au@!Az@0H+H1H,H*H-HVNYNQNUNTNRNXNSNPNWN#Utc~T!U}Tv@$U|T"U#[$[%[p_ucvcwcIgHg0j/jJlKlIl5nC3D3B3&A(A$A'A%A+U(U)U*U%U&U)[*['[([&[t_q_s_w_u_x_v_r_{cJg3j4j2j1jLlWoVpUpb-a-E3&:#:$:z9':}9{9%:~9":4A3A1A)A8A,A6A=A5A>AUCU=U<[9UAU?U2U,UGUHUBU7U5U0U8UEU4UDUJU@UFU[P[M[E[O[7[C[-[N[L[K[;[:[0[6[?[J[Q[4[=[,[.[5[D[KU+[F[I[+`9`1`&`'`0`/`}_.`"`:`(`5`7`|_$`3`-`1[4`!`,d%d~c0d'd*`2d!d#d$d)d.dy_7d4dag*d&d5dVg(d1d3d6d}c"dTg^gNgQg`gYg\gAjPjCjJjRgHj7jNj;jMjBjRjDjIjLj5jOj@jEj9j=jQjGj6j:jjPlTlVlSlNlKjQlMlWln8n9n6n:n7nXpBqAqCqDqEqaqdqcqbq0r1r/r7r(:?ANUcgVHTHUHSHY[W[@`U[V[R[Z[T[X[<`:d8d9ddgegSjUjTj[lZlYlx"v"y"w"x({(z(y(CAEAFAYHWHXHE`D`CdBdDdkgjggghgigVjWjaHbH(O-O'O)O0O+O/O,O*O.O`[I`K`M`L`J`KdIdLdGdJdHdEdFd2O1O^U]UO`N`OdMdPdNdogpgqg_lAn`peHfHdHaUfUcUbUQ`V`R`U`A^T`S`RdSdTdrgtg_j\j]j^j`lGq|q}qgH4O5Oxgwgygvgcl`jajkUnUlUmUj[k[Z`X`Y`^`]```_`\`[`:O9Ol[O=O@OuUxUzUpUtUqUrUsUvUyUwUr[p[o[u[t[s[n[m[q[f`j`g`i`h`e`k`n`l`m`d`o`]d`dbdad[d_dZd\dYd^d-h"h!h&h,h$h+h(h'h*h%h#h)hnjljkjqjojjjhjijmjpjflllhlLnNnMnJnGnKnPnOnHnIn`o#r$r%r3r2r;rp`w[cd.h"V!V~Uz[}[|[{[t`r`q`ed0h/h2h1hujwjvjolrlplqlRnbocodou`jdldkdIOGOHO-V(V%V,V+V'V&V*V)V+\&\$\-\%\!\'\"\~`#\.\x`"a{`!a}`|`z`w`rdudsdwdodvdndmdtdh{j#k!kyj&kxjzl{lulxlan\n`ncn_n[n^nbnYn~j]nXnhojomoionogoeogpdpfpepIqiqhqgqjq3V6V0V7V/V1V2V5V:V9V4V8V0\6\9\5\2\:\1\7\5a(a)a,a*a$a'a1a+a3a0a2a%a.a/a-a|d~d#e%ezd&e"e$e(e!e)e}dyd&a^hUhQhZhThJhWhRhShEhLh[hXhPh\hKhFhYhHhVhMh]hIhGhNhOh0kk7k;k2k/m2m1m6m4m+m!m~l-m.m*m"m'm:k#m)m(m$m0m%mhn3m5m,m&minknenrnpnonnngndnjnsnfnlnwo|orouoyo"pmnso}o#pxoqo{ozo!p~oqnvopotoootpkpspppqpjpmpupopnplprpLqMqOqNqQqPqlqkq'r(r4r<\=\;\7a6a+e8a*e?kAk@k8mCkBkEkDk&p'pSqmqUAB\ma0e4e3e2e1echGkFk?mxnwnvn,p+p*pdhehyn-pxpUq)rCr5efh@m.pAa6eghhhihLkHkKkJkIk1p2p0p/pypzp{pVqYqXqWqN&! N'!N/!N-!.N0!1NC!3N1%O"#?O*#AO&#IO}"LO=%RO$#SO~"VOz"XO'#_O%#aO+#bO|"dO!#gO##jO?%kOK%nOL%OD%OH%O")O*)O/)O%)O~(O,)O#)O$)O}(O!)O&)O-)O()O+)O')O1)Pj-Pk-P~-Pl-P^3Pw-Po-Px-Pi- Py-"Pm-'Pz-,Pt-@Pf3APZ3EP_3FPe3HPX3JP\3KPU3MPY3QPj3SPT3WPi3nPg3pPO3rPW3sPh3PB:P;:PC:P9:P<:P=:PA:P7:P6:P::P\APbAPeAP_APhAPiAPdAPYAPZAPcAPaAP]AP!IPwHPxHP{HP}HP&IP%IP~HPvHPyHP|HP"IP$IP#IPzHPTOPQOQOOQCVQ@VQAVQBVQ?V QI\)QJ\9QOk:QNk=Q}nZQ!._QD:Q.!Q,#Q#.Q".Q5!QM%Q{!Q-#QN%QO%Q%.Q&.Q'.Q$.Q(.Qk3QE:QjAQ'IQDVQ#! RL! RK!R}!R|!R.#R/#!R0#DR2)FRS%IR3)RR+.UR..ZR*.R(IR)IRaLRZOR[OR~!R1#R2#RU%R4)R5)R0.Rq3Rp3R*IR+IR]OR\ORK\R:eR6!S1.SG:SF:S$!SM!S"""S!"-Sr30S,I4SEV7Sjh#$TE#%T?#(TD#*T:#0T8#7T9#=TA#ATC#ET<#GTF#OTB#TT;#kTa%lTe%oTi%pTJ)rTN)tTf%zTb%T[%T`%Th%T^%Tl%T?)T>)TD)TP)TF)TC)T<)TK)TM)TA)TG)TH)T@)TE)TO)TF.T4.T9.T7.T>.TA.T8.TD.TE.TC.T;.U5.U:.&U3.*Uz3-U*40U!49U(4;U+4Zg4dZ^4eZ[4gZT4iZl4lZ\4mZX4pZk4Z*;Z';Z{:Z";Z~:Z,;ZBBZGBZUIZTIZ}O[)P[aV[fV [eV![^V2[\\E[ohV[3"b[6&e[7&l[g.n[s4r[r4w[dI{[c\[S![T![\#[]#[8&[9&[h.[x)[j.[i.[u4[t4[8;[7;[NB[OB[PB[eI[fI[4;[gV[d\[e\\k. \;;\d]Ie]ph]qh]Wk]Xk]Lm]Km]%o]:"]j#]]B]0*]=!^Y! ^k#^l#^O&^N&^P&(^v.)^u.4^*5>^)5A^W;D^V;S^yIX^wIY^xI\^:P]^8P`^9Pu^;"^Z!^[!^<"^9*^w.^y.^z.^-5^fB^dB^}I^>P_="_r#_<*_>"_s#(_Q&._=*0_|.3_{.6_058_15@_hBC_&JD_%JI_?PK_~VO_'oT_U&V_>*X_X;g_}.o_'Js_,!t_?"v_u#x_t#}_X&~_W&_V&_?*_35_25_45_Z;_Y;_[;_jB_iB_@P_(J_\!_Y&_z#_|#_'$_$$_"$_%$`&$`b&`]&`d&`o&`e&"`g&$`N*&`\&7`@*9`A*L`J*S`F*T`B*X`P*f`Q*g`"/n`R*r`C*`&/`(/`*/`0/`65`'/`+/`-/`$/`95`B5`D5`];`:5`;5`<5`?5`C5`@5`_;`>5`c;`g;`kB`i;`j;`k;`q; ad; as;ap;ah;ab;ae;an;ao;2aqB6apB;a9J@awBAa+JEaoBFasBIalBJamBOauB[a7J^a,Jaa;Jea8JfaQPja:Jla2JyaCPza6Ja3JaBPaMPaIPa%WaHPa#WaLPaOPaFPa$WaNPa-Wa+Wal\a,Wa)Waj\a&Wa(Wa*Wa[aaSaavhaLeaZkb(ob)ob*ob*r b]!bp&b1/ bxB:b($=bq&BbS*CbT*Fb2/Jbt;Pb^!YbI"ZbK"\bC"wb5$zb1${b0$}b6$b3$b)$b.$b4$b*$b+$b,$b-$b|&bu&bx&bU*bt&b[*bg*b3/ca*cZ*)c@/,c6/-cF/QcJ/ecK5uc[5xcc5|c_5}cN5ce5cM5cd5cW5cL5cu;cS5c`5cO5c)C+d@J3d'C5d5C7d-C9d,CKdPJMdAJNdLJPdSJSdQJedYJfdJJhdaPkdWJldVJndTP}dHJdTJdMJdXPd[Pd_PdKJdbPd4Wd6Wd3Wd2Wd1Wd0Wd/Wd9Wd7Wdu\dw\dx\dt\dv\ds\d8Wd`adcad_ad]aeaaebae^aeMe ePee[k)e+o-e7p.e}p2e7<3e:W7eM"=e"'Aeh*Cei*FeP/JeO/Sei5\e;$UgA$Yg@$ZgF$]gD$lg5'tg='g:'gC'gA'g=+g8+g.+g,+g%+g?+g"+g++hn/ho/hc/h\/%hu/&hp/(hq/:ht/;h`/Dhk/Ih]/h/6h.6hu5h16h|5h36h#6hcXq;Xq7Xq@XqCXqDXqH]qN]qL]qJ]q)bq+b rte rser9ir:i?rB!Arw+Br`0DrkKOrhDSrlKZrk=^rb"cr`$jr{'lrz+nr}+pr{+sr|+rd!re!rc"rd"rf$rb$ra$re$rc$r'(r#(r$(r|'r~'r%(r"(r$,r',r!,r&,r",r%,r#,ri0rf0rh0s-7s(7sq=s&7s)7s%7s.7"st=#s{=&sz='sw=-sy=@srDBsoDCspKQsrKRs~QssO]vs,bs/7sf!se"s/(s.(s*(sp0s4,s2,sr0t37t67t>7 t<7 t;7t$>t%>t+>@t{DBt!EDtuDFt"EWtzDbttKgtyKntzKyt3R|t2R}t/RtNXt.RtU]tRXtQXtSXtR]tOXtPXtTXtY]tV]tT]tW]tZ]t}etApt1(t9,t:,t!1t"1u5Ru4R uUXu)E!u#1*uf".u;,/u0>9un$:um$Gu<,Hu=,[u$1_u%1cu@7du?7lu2>ou1>wu+Eyu*E}u~K~u6RuVXu_]u5(u!Luo$up$u6(u>,u?,u&1u,1u-1u(1u)1u:>u4>u7>u8>u5>u9>u6>u3>u8Eu-Ev/Ev#L v'L v$L#vRv;>vd]v>bv@iv?ivcmv7(vv=EvaXve]v@bvBiv:(v9(v8(v;(vG,vI,vH,wB, wF,"w:1#w51%wS7'w;1-wM79wK7;wT7=wR7_w?E`w@EgwEEiwDE|w+LwDRwERwiXwm]wg]wBbwAbw'fw:owBpw(qw)qwG>wIEwJ,wK,wH>xT,xO,xL, xS,Ex]7Px^7RxW7\xL>^xT>`xI>bxU>yxTE{xXE~x8LxVExMEx3Lx5LxIRxPRxQRxNRxmXxoXxuXxu]xo]yq]yy]yv] yFb yCby-f-yok/yqk1ypk5ydm8yCp9y*q=yr$?yC(ByB(DyZ,EyY,[yJ1\yL1aye7cyc7dy_7yy\E|yYE}y[EyZEyHLyALyBLy{]y/fyNiyf7yD(y[,y^, z[> z]>"zcE&zPL(zOL+zKL/zNL0zML9zZRDzyXGz{XHzzXJzLLTz"^Vz~]_zLbgz0fhz1fuzh"xzE({zF(~za,z`,zl7z_>ziEzhEzgEzQLzRLzSLz$^z%^z&^zb,z`1za>z`>zjEzTLzRizG({c,{d,{v7{!8{x7*{w7+{z78{~7;{o7@{h>X{i>i{oEm{mE{dL{_L{UL{ZL{cL{aR{cR{fR{^R{dR{`R{eR{_R{bR{,Y{'Y{1Y{5^{+Y{,^|Ob0|Xb3|2f9|4f;|6f<|3fS|skT|rko|\qu|H(|o1|m1|n1|p1|l1|#8|%8|$8|l>|m>|{E|yE|zE|fL|gR|hR|jR|iR|5Y|<^|8f|7f|Xi|nm|tk|mm|-q|rq|I(}m,}k,}l, }|1}w1}v1(}58)}.8,}-85}'86}*88})8E},8G}08J}38\}x>_}~>c}q>}-F}*F}yL}qL}{L}!M}lL}}L}wL}jL}xL}zL}"M}uL}vL}rL}oR}lR}xR}pR}sR}nR}mR}wR}vR}uR};P}tR}kR}rR~qR~BY~@Y)~G^*~C^-~=^0~I^3~@^6~K^@~E^B~?^D~L^G~F^I~D^L~H^P~ZbQ~`bS~cb\~Ybh~Bfo~>fp~"??#?CKYEN^JDfKCfM{kOpmQi"Xn,s#MvyREfFfqmHpp,o,&278%2zR|R{ROYebdbGf]i|kq,)2(2'2)?6F7F'MS^r,s,t,u,*2E8D8C8!8F$(M)RY*QY,T^0}k4s$5J(7v,9,2>+2CG8GF8HH8\*M])Md%Sg&SlSYuhbxJfy_i}/h!K(v$w$t$u$x$M(P(L(O(N(€|,܀#-y,!-)-.202-?3212R8I8K8%J8'S8,O8-M8:6?=4?C/?DFFG3?J0?M5?O2?R1?[>F\2Q;2SS2V=2za8j8g8c?a? ]?r?#D?)lF+$G-qFeUFgYFh!GXFIM>MRM?M„9MńyFDŽJMۄXMNS;6S>tYMgYNwY[uY]!ZkfYl$ZnxYqvYc^˅yb΅zbх`f҅!cbfVfji[f li niCJpRZ2SY2V!9Y~8wG-|I-d2g2j2\2(9Ȇ)9̆-9ц%@ӆx?v?y?4G*G7GbM8wM:qMGۈ=GވZJZ"EZ#GZ&?Z'CZ)FZB_AC_BF_FAcIDcfwii8lk:lm7ln9lq!nsLotKovJoH9AG}f6@8@7@!g~fxi#n"nӉP-Q-R-!3O9'M9,N90L99>@?OG@@@DC@ED@HF@aNGzWG4N6N5N7N3N2N?TÊJTŊHTƊ>TȊVZϊ=TYZ[ZUZNZOZPZ\ZZZ Q_ W_*EcE>l]|i`zic~ie!jg"jh}ij{im#jOpPpgm;go?gs=gxH^;H`CHaGHv`NdNqNnN:U3U/[-9[4B[5H[82[9G[<3[F8[G~_I%`\#`^6`g8`j,`m)`q2`/dz_+d-d{__g“Ogē]gǓMgʓXgٓUgړPgޓLg[gWgbgSgZg?j 8j0Rl1Xl6Ol7UlUYoW[o]Zo^\obXohYpiZp):*:AA@ABAPUOUQURUÕ>`ŕ?`Ǖ;`ɕ=`͕S[i!(.%-0%//%0-%C|(Jg-Nh-Od-Qe-Sf-Tc-\H3_I3k-:m,:o/:q.:|+:~DAHAGAZH#O$OTUSU[[C`A`B`;dJ30:–IAÖKAȖJAΖ[HӖUUԖ\[זEO?FOC$VF#VRtlUVnVUnYcp[pHl.V*\)\(\,\v`y`#axdpdqd;hzj}j"k|j%k$kwlvl!}l#yl$|lDZnFWnUkoXfoYlo^hp`ipmKqnJqy8rz\9atn9rahž$pȞ:aО%pӞVC\/e=D\dBmeAmkzn~BrMkCm{nDrBa|noq  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRNBN\QSSNN NGNV\n_sNQNN.NNNNQRSlSW YY,\]ekklr?N1Ng9g8g;g:g?gOgORO_OAOXO-O3O?OaQQRRR!RRS ScSrSST0T7T*TTTETTT%TT=TOTAT(T$TGVVVWAWEWLWIWKWRYY@YYYYYYYYYY[[\(\*\\\\\\\\\\]^ ^^^^^^___x_v______________`_b:bbbbbbbqb{bzbpbbbwb}brbteeeeegEgGgYgUgLgHg]gMgZgKklllxlglkllllqlolillmllllflslel{lptpzrcrrrrrrrsssssu:u9uuvy=4xɏ0(/-N3OO|OO}OOOvOtOOOwOLOOjOOyOOxOOOOOOOOkOnQQQR5R2R3RFR1RS S SuuvvvvvwwwwwwyBy?yzxz{z|u|5 ‚ÂpomnVҏˏӏ͏֏Տא9=<:COOOOOOOOOOOOOOOOOOORDRIRRS=S|SSSSTTTTTTà TTTTTTTTpTTTTrTTWWWWWWWWWWWWWWWXY YSYYYZYYYYYYYYYYYYYYYYY[\L\\\\\\\\\\\\\\\\\\\\]^!^"^#^ ^$^^^^^^__._V_`7`9`T`r`^`E`S`G`I`[`L`@`B`_`$`D`X`f`nbBbCbc c bccbbcc bbcccbcbbeAeCeef6f!f2f5ff&f"f3f+f:ff4f9f.ggggggggggggggggggggggggggggggggggggggggggk(kkkkkkl l!m(m4m-mm9/%3-DQ%V?A&"BN*ZMZ9ZLZpZiZGZQZVZBZ\[r[n[[\Y]] ]]] ] ](] ]&]%]]0]]#]].^>^4^^^^^_6_8___`````````````````````c2ceccc}ccccccccocccnccuccmcc|cc;ccxcccccpeSefefaf[fYf\fbghyhhhhmhnhhiVhohhhhuhthhhwhh|hkhrhhhqh~hhhhhhhxh{hhhh}k6k3k7k8kkkkkl*mmmmntmmmmmmnmmmmmmmmmmmmmmmmmmmmmmmmmmmpq pqpq pqpqppqqqppq qqr~r{r|rssssss srssssssttsttssst t studucuuuuuuuvvvw9w/w-w1w2w4w3w=w%w;w5xHxRxIxMxJxLx&xExPydygyiyjycykyayyyyyzzz{5{;{4{%{0{"{${3{{*{{1{+{-{/{2{8{{#||||}5}=}8}6}:}E},})}A}G}>}?}J};}(cɀGCH%-,!'"83:42tzstu}~vYV†ņȆ̆ÆR։ىՊ0',9;\]}}{y؎ގݎ܎׎$  !ԐVXZSUz|mkqoj噗PPPPPPPPPPPhPPPPQ_QSSSSUUUUUwVEUUUUUUUUUU}UUUUUUW X)X7XXX'X#X(WXHX%XXX3X?X6X.X9X8X-X,X;YaZZZZzZZZxZZ|ZZZZZ7ZZZZZZZ{Z}ZZZZZ[[[[[[[\ \0]7]C]k]A]K]?]5]Q]N]U]3]:]R]=]1]Y]B]9]I]8]<]2]6]@]E^D^A_X___``````a`a aa`a````aaaa`aa bJccccccccdcccccccdaccccccccccccccce2egejede\eheeeeeeeef|flf{ffqfyfjfrgi hihi*hhhihhhhhiihhihiiphihhihhhhhi i ihhhhhhhihhii%hk9k;k?k?ef׀QOPԁCJROG=M:<=?u;σ#ƃȃヿ݃؃˃΃փɄ ބƒՃǃуÃă׃ۃ؆ӆچ݆׆шHVU׈ɉ݉ډۊNM9Y@WXDERHQJLO_؍Ӎ͍Ǎ֍܍ύՍٍȍ׍Ŏ-4/,ad_b` %& '${~–ȖÖlpnNNNPPPPPPPPPPPPPPPPPQRzRxR{R|UUUUUUUUUUUUUUUUUUUUUUUWXSXhXdXOXMXIXoXUXNX]XYXeX[X=XcXqXZZZZZZZZZZZZZZZZZZZZ[[[\\3]q]c]J]e]r]l]^]h]g]b]^O^N^J^M^K^^^^^_@__`aIaJa+aEa6a2a.aFa/aOa)a@b hb#b%b$cccddd d d$d3dCdddd9d7d"d#d d&d0d(dAd5d/d dd@d%d'd cdd.d!deoeefffffffffxg ifi_i8iNibiqi?iEiji9iBiWiYiziHiIi5ili3i=iehixi4iii@ioiDiviXiAitiLi;iKi7i\iOiQi2iRi/i{iF 2*-<:15B&'8$0뉝芫=hiՌό׍   # "$!zrysvzy}~-X}z~{Ηٙ͘ǚ>?`a_PQQ0PQQPPQ Q PQ RRRRVHVBVLV5VAVJVIVFVXVZV@V3V=V,V>V8V*V:WXXXXXXXXXXZZZZZ[Z[Z[[[[\g]]]]]]]]]]]]^i^]^`^\}^^^_I_aaayaaaaaaaaaaaaaafab-dndpddddddddddddhddevezeye{eefffffffjjjiijiij iiijjij'iijiij@jiij iij jjj%jij&jijkQkkkkllkloAo&o~oooooooboOooZoovolooUoroRoPoWooo]ooaoko}ogooSooiooocowojo{qqqqqqqqqqqqqqqqqrrsXsRs^s_s`s]s[sasZsYsbtttttt}ttt|tyuuu~v%vvvvv#vv(vvvvvwwwwxxxxxxxxxxxyyyyyykvz9zzz{{{{{{{{{||||}}}}}}~}}}}}}}vdgOSRPNQ$;)  '+ *(.1& 0 /bVcdwsXT[RaZQ^mjPN_]olzn\eO{ubgiZ   ϊƊӊъԊՊ׊Ŋ؊Êٌ>Mߌٌڌ݌獠 #%$.&',$ #spogk/+)*2&.ВÒĒْϒߒؒגݒ̒’ʒȒΒ͒ՒɒޒђӒ%ƒ|ӗZЗϘ&)( 'ܙ͙ϙәԙΙəؙ֙˙י̚FCgtqfvuphdlӟQQQQQQS4SVpV`VnVsVfVcVmVrV^VwWWXXXXXXXX[[[[![[[[[([[ [[]]]]]]]]]]]]]^g^h^f^o^^^^^_K__aaaaaaaaaaaaddddddddddde3ee|effffffffffg#j4jfjIjgj2jhj>j]jmjvj[jQj(jZj;j?jAjjjdjPjOjTjojij`j[qNnuUg`f]Telcedy&0-.'1")#/,݋ߊȊފln3>8@E6<=A0?6.52974vy{356'z8<#F- ˓4$)95* ͕ԗ 5/2$')皹3|~{z}% )"՞֞=Q&Q%Q"Q$Q Q)RVVVVVVV~VVVXXXX[-[%[2[#[,['[&[/[.[{[[]^l^j_aaaaaaaaaddddddeeeefjjjjjjjjjjjjjjjjjjjjjjjk[kl ooooooooooooooqqqqqqqsssnsotttttttttuuuuuvCvHvIvGvvwwwwwwwwwxxyxxxxyxxyyyz\z[zVzXzTzZzzz||{|{{|{| {|| ||{{|{{|| |~-~<~B~3H~8~*~I~@~G~)~L~0~;~6~D~:E~},ā́ʁŁǁ[Z\{w|zxWyvhŇɇLJ̇ćʇއ53<>AR7B " OprqooNMSPLGC@~8dVG|X\vIPQ`mLjyWUROqw{a^cgNYǕɕÕŕ ՗ԗADJIEC%+,*32/-10H3Ag6./180EBC>7@=-Ȟڞ$#"TQ1Q-Q.VVVVVVYp[<\i\j]^m^naaaaaaaaaadeddeedeefffjjjjjjjjjjjk^kl pp p ppppopop&oop rqqrqsvttttttttuuv\vdvYvPvSvWvZvvvwwy yyy yyyyyz_||)|| ||-||&|(|"|%|0~\~P~V~c~X~b~_~Q~`~W~SuсҁЂ_^ƅŅDžą˅΅ȅŅ҆$iۇ߇ԇ܇Ӈ؇ׇو݉SKOLFPQI*'#305G/<>1%7&6.$;=:Bu\b`WV^eg[Za]iTFGHK(:;>ҕӕіז]–ߖؖݗ#"%חٗ֗ؗPQRA<:  ܛ)5JLKǛƛÛӛě\SOJ[KYVLWRT_XZߟ%+*)(LUQ4Q5RRSVVVVVVXXXY[=[>[?]^p_aeee e e eeeefjjjjjjjjjjjjjk`kl pp'p pp+p!p"p#p)pp$pr r rrrrrrrrttttuv`wwwwyyy!yyyyzgzh|3|<|9|,|;||~v~u~x~p~w~o~z~r~t~hKJxׁՂ dacمڅׅ؅߅܅хޅ  bZ[Wa\X]YPHJ@SVTKUQBRWCwv mxsjo{RQOPS@?ޓǓϓ“ړГ̓ٓʓԓՓēΓғ}ڕۖ)+,(&ݗޗߘ\Y]WHGC%$" '#›  7ޛԛכܛٛ՛ڝwqx}ktupis{oyh-@AMVWXS7VVVX[E]]^^__aeeeeefffjjjjjjjjp02.3vtsEdcbU]W^ėŘVY RXPJMKUYLNžО876COqpnoVV[N\me-ffkp_pap]p`r#ttwy8yy|j~mC875K”khiFCGǗ^՛Ycgfb^` FtuvVe.ekkkkpbr&rwwy9|i|k|~~~~FGHyz|{nmoqsIr_hnm  Gx{zyWpf|o<Ôtxvu`.tsqu phpe|j>=?ɗKstadfg$Hbkr'LihKyvukzpipjr)~I  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRBN\NQSSN NGNNVn\s_NQN.NNNNNQRlSS WY,Y\]ekkl?r1Ng9g8g;g:g?gOgORO_OAOXO-O3O?OaOQQRR!RRR ScSrSSS0T7T*TTTETTT%TT=TOTAT(T$TGTVVVAWEWLWIWKWRWY@YYYYYYYYYYY[[(\*\\\\\\\\\\\] ^^^^^^^__x_v_______________`_:bbbbbbbqb{bzbpbbbwb}brbtbeeeeeEgGgYgUgLgHg]gMgZgKgkllxlglkllllqlolillmllllflslel{lltpzpcrrrrrrrrsssss:u9uuuv=y4xɏ0(/-3NO|OO}OOOvOtOOOwOLOOjOOyOOxOOOOOOOOkOnOQQQ5R2R3RFR1RR S SuuuvvvvvwwwwwwBy?yyxz{zzu||5 ‚ÂpomnVҏˏӏ͏֏Տ׏9=<:COOOOOOOOOOOOOOOOOOODRIRRR=S|SSSSSTTTTTT TTTTTTTpTTTTrTTTWWWWWWWWWWWWWWWX YSYYYYZYYYYYYYYYYYYYYYYY[L\\\\\\\\\\\\\\\\\\\\\]!^"^#^ ^$^^^^^^^_._V__7`9`T`r`^`E`S`G`I`[`L`@`B`_`$`D`X`f`n`BbCbb c cbccbbc cbbcccbcbbAeCeee6f!f2f5ff&f"f3f+f:ff4f9f.fgggggggggggggggggggggggggggggggggggggggggg(kkkkkkk l!l(m4m-mm9/%3-DQ%V?A&"BN*ZMZ9ZLZpZiZGZQZVZBZ\Zr[n[[[Y\] ]]] ] ](] ]&]%]]0]]#]].]>^4^^^^^^6_8____`````````````````````2ceccc}ccccccccocccnccuccmcc|cc;ccxcccccpcSeeefaf[fYf\fbfgyhhhhmhnhhhViohhhhuhthhhwhh|hkhrhhhqh~hhhhhhhxh{hhhh}h6k3k7k8kkkkkk*lmmmmtnmmmmmmnmmmmmmmmmmmmmmmmmmmmmmmmmmmp qpqp qpqpqppqqqpp qqq~r{r|rrsssss ssrssssssttsttsss t tstducuuuuuuuuvvv9w/w-w1w2w4w3w=w%w;w5wHxRxIxMxJxLx&xExPxdygyiyjycykyayyyyyyzzz5{;{4{%{0{"{${3{{*{{1{+{-{/{2{8{{#{||||5}=}8}6}:}E},})}A}G}>}?}J};}(}cGCH%-,!'"83:42tzstu}~vYV†ņȆ̆ÆR։ىՉ0',9;\]}}{y؎ގݎ܎׎$  !ԐVXZSUz|mkqoj嘗PPPPPPPPPPhPPPPP_QQSSSSUUUUwUEVUUUUUUUUU}UUUUUUU W)X7XXX'X#X(XWHX%XXX3X?X6X.X9X8X-X,X;XaYZZZzZZZxZZ|ZZZZZ7ZZZZZZZ{Z}ZZZZZZ[[[[[[[ \0\7]C]k]A]K]?]5]Q]N]U]3]:]R]=]1]Y]B]9]I]8]<]2]6]@]E]D^A^X____``````a` aaa`a````aaaa`a aJbccccccccdcccccccadccccccccccccccc2egejede\eheeeeeeeee|flf{ffqfyfjfrfg ihih*ihhhihhhhhiihhihipihihhihhhhh i iihhhhhhhihhi%ih9k;k?k?efQOPԀCJROG=M:<=?u;σ#ƃȃヿ݃؃˃΃փɃ ރƒՃǃуÃă׃ۃ؆ӆچ݆܆׆цHVU׈Ɉ݉ډۉNM9Y@WXDERHQJLO_؍Ӎ͍Ǎ֍܍ύՍٍȍ׍ō-4/,ad_b` %& '${~–ȖÖlpnNNNPPPPPPPPPPPPPPPPPQzRxR{R|RUUUUUUUUUUUUUUUUUUUUUUUWSXhXdXOXMXIXoXUXNX]XYXeX[X=XcXqXXZZZZZZZZZZZZZZZZZZZZ[[[\3\q]c]J]e]r]l]^]h]g]b]]O^N^J^M^K^^^^^^@___`IaJa+aEa6a2a.aFa/aOa)a@a bh#b%b$bcccdd d d$d3dCdddd9d7d"d#d d&d0d(dAd5d/d dd@d%d'd dcd.d!ddoeeeffffffffxf gfi_i8iNibiqi?iEiji9iBiWiYiziHiIi5ili3i=ieihxi4iii@ioiDiviXiAitiLi;iKi7i\iOiQi2iRi/i{iF 2*-<:15B&'8$0눝艫=hiՌό׌   # "$!zrysvzy}~-X}z~{Η͗ٙǙ>?`a_PQ0QPQQPP Q QP QRRRRHVBVLV5VAVJVIVFVXVZV@V3V=V,V>V8V*V:VWXXXXXXXXXXZZZZZ[Z[Z[[[[g\]]]]]]]]]]]]i^]^`^\^}^^^I__aayaaaaaaaaaaaaaafaa-bndpddddddddddddhdddvezeye{eeefffffffjjjiijii jiiijji'jiijii@jjii jii jjj%jji&jjijQkkkkkllklAo&o~oooooooboOooZoovolooUoroRoPoWooo]ooaoko}ogooSooiooocowojo{oqqqqqqqqqqqqqqqqqrrXsRs^s_s`s]s[sasZsYsbsttttt}ttt|tytuu~u%vvvvv#vv(vvvvvvwwwwxxxxxxxxxxxyyyyyyvk9zzzz{{{{{{{{{||||}}}}}}~}}}}}}}vdgOSRPNQ$;)  '+ *(.1& 0 /bVcdwsXT[RaZQ^mjPN_]olzn\eO{ubgiZ   ϊƊӊъԊՊ׊Ŋ؊Êي>Mߌٌڌ݌猠 #%$.&',$ #spogk/+)*2&.ВÒĒْϒߒؒגݒ̒’ʒȒΒ͒ՒɒޒђӒ%ƒ|ӖZЗϗ&)( 'ܙ͙ϙәԙΙəؙ֙˙י̙FCgtqfvuphdlӞQQQQQQ4SSpV`VnVsVfVcVmVrV^VwVWWXXXXXXXX[[[![[[[[([[ [[[]]]]]]]]]]]]]g^h^f^o^^^^^^K___aaaaaaaaaaaaddddddddddd3ee|eeffffffffff#g4jfjIjgj2jhj>j]jmjvj[jQj(jZj;j?jAjjjdjPjOjTjojij`j[qNnuUg`f]Telcedy&0-.'1")#/,݊ߊȊފln3>8@E6<=A0?6.52974vy{356'z8<#F- ˒4$)95* ͕Ԗ 5/2$')癹3|~{z}% )"՞֞=&Q%Q"Q$Q Q)QRVVVVVV~VVVVXXXX-[%[2[#[,['[&[/[.[{[[[]l^j^_aaaaaaaaaddddddeeeefjjjjjjjjjjjjjjjjjjjjjjj[kk looooooooooooooqqqqqqqssnsostttttttttuuuuuCvHvIvGvvvwwwwwwwwwxxyxxxxyxxyyy\z[zVzXzTzZzzzz||{|{{|{ |{| |||{{|{{| ||-~<~B~3~H8~*~I~@~G~)~L~0~;~6~D~:~E~},ā́ʁŁǁ[Z\{w|zxWyvhŇɇLJ̇ćʇއ53<>AR7B " OprqooNMSPLGC@~8dVG|X\vIPQ`mLjyWUROqw{a^cgNYǕɕÕŕ ՗ԗADJIEC%+,*32/-10H3Ag6./180EBC>7@=-Ȟڞ$#"T1Q-Q.QVVVVVVpY<[i\j\]m^n^aaaaaaaaaadeddeedeefffjjjjjjjjjjj^kk lp p pppppopo&poo prqqrqvsttttttttuu\vdvYvPvSvWvZvvvvww yyy yyyyyy_z|)|| ||-||&|(|"|%|0|\~P~V~c~X~b~_~Q~`~W~S~uсҁЁ_^ƅŅDžą˅΅ȅŅ҅$iۇ߇ԇ܇Ӈ؇ׇه݇SKOLFPQI*'#305G/<>1%7&6.$;=:Bu\b`WV^eg[Za]iTFGHK(:;>ҕӕѕזږ]ߖؖݖ#"%חٗ֗ؗPQRA<:  ܚ)5JLKǛƛÛӛě\SOJ[KYVLWRT_XZߞ%+*)(LU4Q5QRRSVVVVVVXXXY=[>[?[]p^_aee e e eeeeefjjjjjjjjjjjjj`kk lp'p pp+p!p"p#p)pp$pp r rrrrrrrrrttttu`vwwwwyy!yyyyygzhz3|<|9|,|;|||v~u~x~p~w~o~z~r~t~h~KJxׁՁ dacمڅׅ؅߅܅хޅ  bZ[Wa\X]YPHJ@SVTKUQBRWCwv mxsjo{ŽRQOPS@?ޓǓϓ“ړГ̓ٓʓԓՓēΓғ}ڕە)+,(&ݗޗߗ\Y]WHGC%$" '#š  7ޛԛכܛٛ՛ڛwqx}ktupis{oyh-@AMVWX7SVVVXE[]]^^__aeeeeefffjjjjjjjj02.3vtsEdcbU]W^ėŗVY RXPJMKUYLNžО876COqpnoVVN[m\-effk_pap]p`p#rttw8yyyj|~mC875K‘khiFCGǗ^՚Ycgfb^` FtuvV.eekkkkbp&rrww9yi|k||~~~~FGHyz|{nmoqsIr_hnm  Gx{zyWfpo|<Ñtxvu`.tsqu hpep|j>=?ɎKst̘adfg$Hbk'rLihKyuvkzipjp)r~IR!!!~"!"~W#!#~$!$~%!%~q&!&~'!'~-(!(~)!)~*!*~G+!+~,!,~-!-~a.!.~/!/~0!0~{1!1~2!2~73!3~4!4~5!5~Q6!6~7!7~ 8!8~ k9!9~ :!:~ ';!;~ !>~ ?!?~ @!@~ [A!A~ B!B~ C!C~ uD!D~ E!E~1F!F~G!G~H!H~KI!I~J!J~K!K~eL!L~M!M~!N!N~O!O~P!P~;Q!Q~R!R~S!S~UT!T~U!U~V!V~oW!W~X!X~+Y!Y~Z!Z~[![~E\!\~]!]~^!^~__!_~`!`~a!a~yb!b~c!c~5d!d~e!e~f!f~Og!g~h!h~ i!i~ij!j~k!k~%l!l~m!m~n!n~?o!o~p!p~q!q~Yr!rDNBN\QSSNN NGNV\n_sNQNN.NNNNQRSlSW YY,\]ekklr?N1Ng9g8g;g:g?gOgORO_OAOXO-O3O?OaQQRRR!RRS ScSrSST0T7T*TTTETTT%TT=TOTAT(T$TGVVVWAWEWLWIWKWRYY@YYYYYYYYYY[[\(\*\\\\\\\\\\]^ ^^^^^^___x_v______________`_b:bbbbbbbqb{bzbpbbbwb}brbteeeeegEgGgYgUgLgHg]gMgZgKklllxlglkllllqlolillmllllflslel{lptpzrcrrrrrrrsssssu:u9uuvy=4xɏ0(/-N3OO|OO}OOOvOtOOOwOLOOjOOyOOxOOOOOOOOkOnQQQR5R2R3RFR1RS S SuuvvvvvwwwwwwyBy?yzxz{z|u|5 ‚ÂpomnVҏˏӏ͏֏Տא9=<:COOOOOOOOOOOOOOOOOOORDRIRRS=S|SSSSTTTTTTà TTTTTTTTpTTTTrTTWWWWWWWWWWWWWWWXY YSYYYZYYYYYYYYYYYYYYYYY[\L\\\\\\\\\\\\\\\\\\\\]^!^"^#^ ^$^^^^^^__._V_`7`9`T`r`^`E`S`G`I`[`L`@`B`_`$`D`X`f`nbBbCbc c bccbbcc bbcccbcbbeAeCeef6f!f2f5ff&f"f3f+f:ff4f9f.ggggggggggggggggggggggggggggggggggggggggggk(kkkkkkl l!m(m4m-mm9/%3-DQ%V?A&"BN*ZMZ9ZLZpZiZGZQZVZBZ\[r[n[[\Y]] ]]] ] ](] ]&]%]]0]]#]].^>^4^^^^^_6_8___`````````````````````c2ceccc}ccccccccocccnccuccmcc|cc;ccxcccccpeSefefaf[fYf\fbghyhhhhmhnhhiVhohhhhuhthhhwhh|hkhrhhhqh~hhhhhhhxh{hhhh}k6k3k7k8kkkkkl*mmmmntmmmmmmnmmmmmmmmmmmmmmmmmmmmmmmmmmmpq pqpq pqpqppqqqppq qqr~r{r|rssssss srssssssttsttssst t studucuuuuuuuvvvw9w/w-w1w2w4w3w=w%w;w5xHxRxIxMxJxLx&xExPydygyiyjycykyayyyyyzzz{5{;{4{%{0{"{${3{{*{{1{+{-{/{2{8{{#||||}5}=}8}6}:}E},})}A}G}>}?}J};}(cɀGCH%-,!'"83:42tzstu}~vYV†ņȆ̆ÆR։ىՊ0',9;\]}}{y؎ގݎ܎׎$  !ԐVXZSUz|mkqoj噗PPPPPPPPPPPhPPPPQ_QSSSSUUUUUwVEUUUUUUUUUU}UUUUUUW X)X7XXX'X#X(WXHX%XXX3X?X6X.X9X8X-X,X;YaZZZZzZZZxZZ|ZZZZZ7ZZZZZZZ{Z}ZZZZZ[[[[[[[\ \0]7]C]k]A]K]?]5]Q]N]U]3]:]R]=]1]Y]B]9]I]8]<]2]6]@]E^D^A_X___``````a`a aa`a````aaaa`aa bJccccccccdcccccccdaccccccccccccccce2egejede\eheeeeeeeef|flf{ffqfyfjfrgi hihi*hhhihhhhhiihhihiiphihhihhhhhi i ihhhhhhhihhii%hk9k;k?k?ef׀QOPԁCJROG=M:<=?u;σ#ƃȃヿ݃؃˃΃փɄ ބƒՃǃуÃă׃ۃ؆ӆچ݆܆׆шHVU׈ɉ݉ډۊNM9Y@WXDERHQJLO_؍Ӎ͍Ǎ֍܍ύՍٍȍ׍Ŏ-4/,ad_b` %& '${~–ȖÖlpnNNNPPPPPPPPPPPPPPPPPQRzRxR{R|UUUUUUUUUUUUUUUUUUUUUUUWXSXhXdXOXMXIXoXUXNX]XYXeX[X=XcXqXZZZZZZZZZZZZZZZZZZZZ[[[\\3]q]c]J]e]r]l]^]h]g]b]^O^N^J^M^K^^^^^_@__`aIaJa+aEa6a2a.aFa/aOa)a@b hb#b%b$cccddd d d$d3dCdddd9d7d"d#d d&d0d(dAd5d/d dd@d%d'd cdd.d!deoeefffffffffxg ifi_i8iNibiqi?iEiji9iBiWiYiziHiIi5ili3i=iehixi4iii@ioiDiviXiAitiLi;iKi7i\iOiQi2iRi/i{iF 2*-<:15B&'8$0뉝芫=hiՌό׍   # "$!zrysvzy}~-X}z~{Ηٙ͘ǚ>?`a_PQQ0PQQPPQ Q PQ RRRRVHVBVLV5VAVJVIVFVXVZV@V3V=V,V>V8V*V:WXXXXXXXXXXZZZZZ[Z[Z[[[[\g]]]]]]]]]]]]^i^]^`^\}^^^_I_aaayaaaaaaaaaaaaaafab-dndpddddddddddddhddevezeye{eefffffffjjjiijiij iiijjij'iijiij@jiij iij jjj%jij&jijkQkkkkllkloAo&o~oooooooboOooZoovolooUoroRoPoWooo]ooaoko}ogooSooiooocowojo{qqqqqqqqqqqqqqqqqrrsXsRs^s_s`s]s[sasZsYsbtttttt}ttt|tyuuu~v%vvvvv#vv(vvvvvwwwwxxxxxxxxxxxyyyyyykvz9zzz{{{{{{{{{||||}}}}}}~}}}}}}}vdgOSRPNQ$;)  '+ *(.1& 0 /bVcdwsXT[RaZQ^mjPN_]olzn\eO{ubgiZ   ϊƊӊъԊՊ׊Ŋ؊Êٌ>Mߌٌڌ݌獠 #%$.&',$ #spogk/+)*2&.ВÒĒْϒߒؒגݒ̒’ʒȒΒ͒ՒɒޒђӒ%ƒ|ӗZЗϘ&)( 'ܙ͙ϙәԙΙəؙ֙˙י̚FCgtqfvuphdlӟQQQQQQS4SVpV`VnVsVfVcVmVrV^VwWWXXXXXXXX[[[[![[[[[([[ [[]]]]]]]]]]]]]^g^h^f^o^^^^^_K__aaaaaaaaaaaaddddddddddde3ee|effffffffffg#j4jfjIjgj2jhj>j]jmjvj[jQj(jZj;j?jAjjjdjPjOjTjojij`j[qNnuUg`f]Telcedy&0-.'1")#/,݋ߊȊފln3>8@E6<=A0?6.52974vy{356'z8<#F- ˓4$)95* ͕ԗ 5/2$')皹3|~{z}% )"՞֞=Q&Q%Q"Q$Q Q)RVVVVVVV~VVVXXXX[-[%[2[#[,['[&[/[.[{[[]^l^j_aaaaaaaaaddddddeeeefjjjjjjjjjjjjjjjjjjjjjjjk[kl ooooooooooooooqqqqqqqsssnsotttttttttuuuuuvCvHvIvGvvwwwwwwwwwxxyxxxxyxxyyyz\z[zVzXzTzZzzz||{|{{|{| {|| ||{{|{{|| |~-~<~B~3H~8~*~I~@~G~)~L~0~;~6~D~:E~},ā́ʁŁǁ[Z\{w|zxWyvhŇɇLJ̇ćʇއ53<>AR7B " OprqooNMSPLGC@~8dVG|X\vIPQ`mLjyWUROqw{a^cgNYǕɕÕŕ ՗ԗADJIEC%+,*32/-10H3Ag6./180EBC>7@=-Ȟڞ$#"TQ1Q-Q.VVVVVVYp[<\i\j]^m^naaaaaaaaaadeddeedeefffjjjjjjjjjjjk^kl pp p ppppopop&oop rqqrqsvttttttttuuv\vdvYvPvSvWvZvvvwwy yyy yyyyyz_||)|| ||-||&|(|"|%|0~\~P~V~c~X~b~_~Q~`~W~SuсҁЂ_^ƅŅDžą˅΅ȅŅ҆$iۇ߇ԇ܇Ӈ؇ׇو݉SKOLFPQI*'#305G/<>1%7&6.$;=:Bu\b`WV^eg[Za]iTFGHK(:;>ҕӕіז]–ߖؖݗ#"%חٗ֗ؗPQRA<:  ܛ)5JLKǛƛÛӛě\SOJ[KYVLWRT_XZߟ%+*)(LUQ4Q5RRSVVVVVVXXXY[=[>[?]^p_aeee e e eeeefjjjjjjjjjjjjjk`kl pp'p pp+p!p"p#p)pp$pr r rrrrrrrrttttuv`wwwwyyy!yyyyzgzh|3|<|9|,|;||~v~u~x~p~w~o~z~r~t~hKJxׁՂ dacمڅׅ؅߅܅хޅ  bZ[Wa\X]YPHJ@SVTKUQBRWCwv mxsjo{RQOPS@?ޓǓϓ“ړГ̓ٓʓԓՓēΓғ}ڕۖ)+,(&ݗޗߘ\Y]WHGC%$" '#›  7ޛԛכܛٛ՛ڝwqx}ktupis{oyh-@AMVWXS7VVVX[E]]^^__aeeeeefffjjjjjjjjp02.3vtsEdcbU]W^ėŘVY RXPJMKUYLNžО876COqpnoVV[N\me-ffkp_pap]p`r#ttwy8yy|j~mC875K”khiFCGǗ^՛Ycgfb^` FtuvVe.ekkkkpbr&rwwy9|i|k|~~~~FGHyz|{nmoqsIr_hnm  Gx{zyWpf|o<Ôtxvu`.tsqu phpe|j>=?ɗKst̙adfg$Hbkr'LihKyvukzpipjr)~IR!!~!!"~"W!#~#!$~$!%~%q!&~&!'~'-!(~(!)~)!*~*G!+~+!,~,!-~-a!.~.!/~/!0~0{!1~1!2~27!3~3!4~4!5~5Q!6~6!7~7 !8~8k !9~9 !:~:' !;~; !<~< !=~=A !>~> !?~? !@~@[ !A~A !B~B !C~Cu !D~D !E~E1!F~F!G~G!H~HK!I~I!J~J!K~Ke!L~L!M~M!!N~N!O~O!P~P;!Q~Q!R~R!S~SU!T~T!U~U!V~Vo!W~W!X~X+!Y~Y!Z~Z![~[E!\~\!]~]!^~^_!_~_!`~`!a~ay!b~b!c~c5!d~d!e~e!f~fO!g~g!h~h !i~ii!j~j!k~k%!l~l!m~m!n~n?!o~o!p~p!q~qY!rDrBN\NQSSN NGNNVn\s_NQN.NNNNNQRlSS WY,Y\]ekkl?r1Ng9g8g;g:g?gOgORO_OAOXO-O3O?OaOQQRR!RRR ScSrSSS0T7T*TTTETTT%TT=TOTAT(T$TGTVVVAWEWLWIWKWRWY@YYYYYYYYYYY[[(\*\\\\\\\\\\\] ^^^^^^^__x_v_______________`_:bbbbbbbqb{bzbpbbbwb}brbtbeeeeeEgGgYgUgLgHg]gMgZgKgkllxlglkllllqlolillmllllflslel{lltpzpcrrrrrrrrsssss:u9uuuv=y4xɏ0(/-3NO|OO}OOOvOtOOOwOLOOjOOyOOxOOOOOOOOkOnOQQQ5R2R3RFR1RR S SuuuvvvvvwwwwwwBy?yyxz{zzu||5 ‚ÂpomnVҏˏӏ͏֏Տ׏9=<:COOOOOOOOOOOOOOOOOOODRIRRR=S|SSSSSTTTTTT TTTTTTTpTTTTrTTTWWWWWWWWWWWWWWWX YSYYYYZYYYYYYYYYYYYYYYYY[L\\\\\\\\\\\\\\\\\\\\\]!^"^#^ ^$^^^^^^^_._V__7`9`T`r`^`E`S`G`I`[`L`@`B`_`$`D`X`f`n`BbCbb c cbccbbc cbbcccbcbbAeCeee6f!f2f5ff&f"f3f+f:ff4f9f.fgggggggggggggggggggggggggggggggggggggggggg(kkkkkkk l!l(m4m-mm9/%3-DQ%V?A&"BN*ZMZ9ZLZpZiZGZQZVZBZ\Zr[n[[[Y\] ]]] ] ](] ]&]%]]0]]#]].]>^4^^^^^^6_8____`````````````````````2ceccc}ccccccccocccnccuccmcc|cc;ccxcccccpcSeeefaf[fYf\fbfgyhhhhmhnhhhViohhhhuhthhhwhh|hkhrhhhqh~hhhhhhhxh{hhhh}h6k3k7k8kkkkkk*lmmmmtnmmmmmmnmmmmmmmmmmmmmmmmmmmmmmmmmmmp qpqp qpqpqppqqqpp qqq~r{r|rrsssss ssrssssssttsttsss t tstducuuuuuuuuvvv9w/w-w1w2w4w3w=w%w;w5wHxRxIxMxJxLx&xExPxdygyiyjycykyayyyyyyzzz5{;{4{%{0{"{${3{{*{{1{+{-{/{2{8{{#{||||5}=}8}6}:}E},})}A}G}>}?}J};}(}cGCH%-,!'"83:42tzstu}~vYV†ņȆ̆ÆR։ىՉ0',9;\]}}{y؎ގݎ܎׎$  !ԐVXZSUz|mkqoj嘗PPPPPPPPPPhPPPPP_QQSSSSUUUUwUEVUUUUUUUUU}UUUUUUU W)X7XXX'X#X(XWHX%XXX3X?X6X.X9X8X-X,X;XaYZZZzZZZxZZ|ZZZZZ7ZZZZZZZ{Z}ZZZZZZ[[[[[[[ \0\7]C]k]A]K]?]5]Q]N]U]3]:]R]=]1]Y]B]9]I]8]<]2]6]@]E]D^A^X____``````a` aaa`a````aaaa`a aJbccccccccdcccccccadccccccccccccccc2egejede\eheeeeeeeee|flf{ffqfyfjfrfg ihih*ihhhihhhhhiihhihipihihhihhhhh i iihhhhhhhihhi%ih9k;k?k?efQOPԀCJROG=M:<=?u;σ#ƃȃヿ݃؃˃΃փɃ ރƒՃǃуÃă׃ۃ؆ӆچ݆܆׆цHVU׈Ɉ݉ډۉNM9Y@WXDERHQJLO_؍Ӎ͍Ǎ֍܍ύՍٍȍ׍ō-4/,ad_b` %& '${~–ȖÖlpnNNNPPPPPPPPPPPPPPPPPQzRxR{R|RUUUUUUUUUUUUUUUUUUUUUUUWSXhXdXOXMXIXoXUXNX]XYXeX[X=XcXqXXZZZZZZZZZZZZZZZZZZZZ[[[\3\q]c]J]e]r]l]^]h]g]b]]O^N^J^M^K^^^^^^@___`IaJa+aEa6a2a.aFa/aOa)a@a bh#b%b$bcccdd d d$d3dCdddd9d7d"d#d d&d0d(dAd5d/d dd@d%d'd dcd.d!ddoeeeffffffffxf gfi_i8iNibiqi?iEiji9iBiWiYiziHiIi5ili3i=ieihxi4iii@ioiDiviXiAitiLi;iKi7i\iOiQi2iRi/i{iF 2*-<:15B&'8$0눝艫=hiՌό׌   # "$!zrysvzy}~-X}z~{Η͗ٙǙ>?`a_PQ0QPQQPP Q QP QRRRRHVBVLV5VAVJVIVFVXVZV@V3V=V,V>V8V*V:VWXXXXXXXXXXZZZZZ[Z[Z[[[[g\]]]]]]]]]]]]i^]^`^\^}^^^I__aayaaaaaaaaaaaaaafaa-bndpddddddddddddhdddvezeye{eeefffffffjjjiijii jiiijji'jiijii@jjii jii jjj%jji&jjijQkkkkkllklAo&o~oooooooboOooZoovolooUoroRoPoWooo]ooaoko}ogooSooiooocowojo{oqqqqqqqqqqqqqqqqqrrXsRs^s_s`s]s[sasZsYsbsttttt}ttt|tytuu~u%vvvvv#vv(vvvvvvwwwwxxxxxxxxxxxyyyyyyvk9zzzz{{{{{{{{{||||}}}}}}~}}}}}}}vdgOSRPNQ$;)  '+ *(.1& 0 /bVcdwsXT[RaZQ^mjPN_]olzn\eO{ubgiZ   ϊƊӊъԊՊ׊Ŋ؊Êي>Mߌٌڌ݌猠 #%$.&',$ #spogk/+)*2&.ВÒĒْϒߒؒגݒ̒’ʒȒΒ͒ՒɒޒђӒ%ƒ|ӖZЗϗ&)( 'ܙ͙ϙәԙΙəؙ֙˙י̙FCgtqfvuphdlӞQQQQQQ4SSpV`VnVsVfVcVmVrV^VwVWWXXXXXXXX[[[![[[[[([[ [[[]]]]]]]]]]]]]g^h^f^o^^^^^^K___aaaaaaaaaaaaddddddddddd3ee|eeffffffffff#g4jfjIjgj2jhj>j]jmjvj[jQj(jZj;j?jAjjjdjPjOjTjojij`j[qNnuUg`f]Telcedy&0-.'1")#/,݊ߊȊފln3>8@E6<=A0?6.52974vy{356'z8<#F- ˒4$)95* ͕Ԗ 5/2$')癹3|~{z}% )"՞֞=&Q%Q"Q$Q Q)QRVVVVVV~VVVVXXXX-[%[2[#[,['[&[/[.[{[[[]l^j^_aaaaaaaaaddddddeeeefjjjjjjjjjjjjjjjjjjjjjjj[kk looooooooooooooqqqqqqqssnsostttttttttuuuuuCvHvIvGvvvwwwwwwwwwxxyxxxxyxxyyy\z[zVzXzTzZzzzz||{|{{|{ |{| |||{{|{{| ||-~<~B~3~H8~*~I~@~G~)~L~0~;~6~D~:~E~},ā́ʁŁǁ[Z\{w|zxWyvhŇɇLJ̇ćʇއ53<>AR7B " OprqooNMSPLGC@~8dVG|X\vIPQ`mLjyWUROqw{a^cgNYǕɕÕŕ ՗ԗADJIEC%+,*32/-10H3Ag6./180EBC>7@=-Ȟڞ$#"T1Q-Q.QVVVVVVpY<[i\j\]m^n^aaaaaaaaaadeddeedeefffjjjjjjjjjjj^kk lp p pppppopo&poo prqqrqvsttttttttuu\vdvYvPvSvWvZvvvvww yyy yyyyyy_z|)|| ||-||&|(|"|%|0|\~P~V~c~X~b~_~Q~`~W~S~uсҁЁ_^ƅŅDžą˅΅ȅŅ҅$iۇ߇ԇ܇Ӈ؇ׇه݇SKOLFPQI*'#305G/<>1%7&6.$;=:Bu\b`WV^eg[Za]iTFGHK(:;>ҕӕѕזږ]ߖؖݖ#"%חٗ֗ؗPQRA<:  ܚ)5JLKǛƛÛӛě\SOJ[KYVLWRT_XZߞ%+*)(LU4Q5QRRSVVVVVVXXXY=[>[?[]p^_aee e e eeeeefjjjjjjjjjjjjj`kk lp'p pp+p!p"p#p)pp$pp r rrrrrrrrrttttu`vwwwwyy!yyyyygzhz3|<|9|,|;|||v~u~x~p~w~o~z~r~t~h~KJxׁՁ dacمڅׅ؅߅܅хޅ  bZ[Wa\X]YPHJ@SVTKUQBRWCwv mxsjo{ŽRQOPS@?ޓǓϓ“ړГ̓ٓʓԓՓēΓғ}ڕە)+,(&ݗޗߗ\Y]WHGC%$" '#š  7ޛԛכܛٛ՛ڛwqx}ktupis{oyh-@AMVWX7SVVVXE[]]^^__aeeeeefffjjjjjjjj02.3vtsEdcbU]W^ėŗVY RXPJMKUYLNžО876COqpnoVVN[m\-effk_pap]p`p#rttw8yyyj|~mC875K‘khiFCGǗ^՚Ycgfb^` FtuvV.eekkkkbp&rrww9yi|k||~~~~FGHyz|{nmoqsIr_hnm  Gx{zyWfpo|<Ñtxvu`.tsqu hpep|j>=?ɎKst̘adfg$Hbk'rLihKyuvkzipjp)r~Ipicolibc-1.7.4/newlib/libc/iconv/ccs/binary/cp775.cct000066400000000000000000000111241414576234500222240ustar00rootroot00000000000000cp775XXXPRTT  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~噞Ѐӷͺް  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~噞Ѐӷͺް  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~#BVW+yM"Z[*{|z A%%%%%$ %c%Q%W%].`%%%4%,%%%<rj%Z%T%i%f%`%P%l} /ask~%% %%%%%LCD67;<FE   "%  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~#BVW+yM"Z[*{|z A%%%%$% c%Q%W%]%.`%%4%,%%%<%rjZ%T%i%f%`%P%l%} /ask~% %%%%%%LCD67;<FE   "%picolibc-1.7.4/newlib/libc/iconv/ccs/binary/cp850.cct000066400000000000000000000101241414576234500222150ustar00rootroot00000000000000cp850XXXPR TT  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Ͼ󨷵ǎԐѥ噞ᅠƄФͺ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Ͼ󨷵ǎԐѥ噞ᅠƄФͺ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~%%%%%$%c%Q%W%]%%%4%,%%%<%Z%T%i%f%`%P%l1%% %%% %  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~%%%%$%c%Q%W%]%%%4%,%%%<%Z%T%i%f%`%P%l%1% %%%% %picolibc-1.7.4/newlib/libc/iconv/ccs/binary/cp852.cct000066400000000000000000000101241414576234500222170ustar00rootroot00000000000000cp852XXXPR TT  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Ǥޅͺ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Ǥޅͺ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~oBPQy9:=>Z[deA }~z _%%%%%$^%c%Q%W%]{|%%%4%,%%%<%Z%T%i%f%`%P%lG%% %%bn%CDH`aTUpcqXY%  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~oBPQy9:=>Z[deA }~z _%%%%$%^c%Q%W%]%{|%%4%,%%%<%Z%T%i%f%`%P%l%G% %%%bn%CDH`aTUpcqXY%picolibc-1.7.4/newlib/libc/iconv/ccs/binary/cp855.cct000066400000000000000000000101241414576234500222220ustar00rootroot00000000000000cp855XXXPR TT  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~쭧諶ࠢ묦窵ͺ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~쭧諶ࠢ묦窵ͺ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~RSQTUVWXY Z [ \ ^_N.J*01F&45D$3%%%%%$E%8%c%Q%W%]9%%%4%,%%%<:%Z%T%i%f%`%P%l;<=>?%% %%O%/@ A!B"C#62L,!K+7H(M-I)G'%  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~RSQTUVWXY Z [ \ ^_N.J*01F&45D$3%%%%$%E%8c%Q%W%]%9%%4%,%%%<%:Z%T%i%f%`%P%l%;<=>?% %%%O%/@ A!B"C#62L,!K+7H(M-I)G'%picolibc-1.7.4/newlib/libc/iconv/ccs/binary/cp866.cct000066400000000000000000000111241414576234500222250ustar00rootroot00000000000000cp866XXXPRTT  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ͺɸȾ̵ް  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ͺɸȾ̵ް  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?%%%%%$%a%b%V%U%c%Q%W%]%\%[%%%4%,%%%<%^%_%Z%T%i%f%`%P%l%g%h%d%e%Y%X%R%S%k%j%% %%%%%@ABCDEFGHIJKLMNOQTW^""!%  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?%%%%$%a%b%V%U%c%Q%W%]%\%[%%%4%,%%%<%^%_%Z%T%i%f%`%P%l%g%h%d%e%Y%X%R%S%k%j%% %%%%%%@ABCDEFGHIJKLMNOQTW^""!%picolibc-1.7.4/newlib/libc/iconv/ccs/binary/iso_8859_1.cct000066400000000000000000000051301414576234500230660ustar00rootroot00000000000000 iso_8859_1XXTVXX  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~picolibc-1.7.4/newlib/libc/iconv/ccs/binary/iso_8859_10.cct000066400000000000000000000071301414576234500231500ustar00rootroot00000000000000 iso_8859_10XTV X X8  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~8  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"*(6;`f}jJ#+)7<ag~ kK. ELhr/ FMis8  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"*(6;`f}jJ#+)7<ag~ kK. ELhr/ FMis8picolibc-1.7.4/newlib/libc/iconv/ccs/binary/iso_8859_11.cct000066400000000000000000000061301414576234500231500ustar00rootroot00000000000000 iso_8859_11XTVX X  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[picolibc-1.7.4/newlib/libc/iconv/ccs/binary/iso_8859_13.cct000066400000000000000000000071301414576234500231530ustar00rootroot00000000000000 iso_8859_13XTV X X   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ůר   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ůר  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  V W. y"6*;`CELrAZj{}/ z#7+<aDFMsB[k|~   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  V W. y"6*;`CELrAZj{}/ z#7+<aDFMsB[k|~ picolibc-1.7.4/newlib/libc/iconv/ccs/binary/iso_8859_14.cct000066400000000000000000000071301414576234500231540ustar00rootroot00000000000000 iso_8859_14XTV X X  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~    x !@AVW`atjvukw  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~    x !@AVW`atjvukwpicolibc-1.7.4/newlib/libc/iconv/ccs/binary/iso_8859_15.cct000066400000000000000000000071301414576234500231550ustar00rootroot00000000000000 iso_8859_15XTV X X  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ `a}~RSx  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ `a}~RSxpicolibc-1.7.4/newlib/libc/iconv/ccs/binary/iso_8859_2.cct000066400000000000000000000071301414576234500230710ustar00rootroot00000000000000 iso_8859_2XXTV X X  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~㡱  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~㡱  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~A=Z`^dy}{B>[a_ez~|T9 CGPXnpbU: DHQYoqc  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~A=Z`^dy}{B>[a_ez~|T9 CGPXnpbU: DHQYoqcpicolibc-1.7.4/newlib/libc/iconv/ccs/binary/iso_8859_3.cct000066400000000000000000000071301414576234500230720ustar00rootroot00000000000000 iso_8859_3XXTV X X  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~&$0^4{'%1_5|  l\  !m]  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~&$0^4{'%1_5|  l\  !m]picolibc-1.7.4/newlib/libc/iconv/ccs/binary/iso_8859_4.cct000066400000000000000000000071301414576234500230730ustar00rootroot00000000000000 iso_8859_4XXTV X X  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~8V(;`"f}W)<a#gJ~K. *EL6rhj/ +FM7sik  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~8V(;`"f}W)<a#gJ~K. *EL6rhj/ +FM7sikpicolibc-1.7.4/newlib/libc/iconv/ccs/binary/iso_8859_5.cct000066400000000000000000000071301414576234500230740ustar00rootroot00000000000000 iso_8859_5XXTV X X_  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~_  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO!QRSTUVWXYZ[\^_  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO!QRSTUVWXYZ[\^_picolibc-1.7.4/newlib/libc/iconv/ccs/binary/iso_8859_6.cct000066400000000000000000000061301414576234500230740ustar00rootroot00000000000000 iso_8859_6XXTVX X  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:@ABCDEFGHIJKLMNOPQR  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:@ABCDEFGHIJKLMNOPQRpicolibc-1.7.4/newlib/libc/iconv/ccs/binary/iso_8859_7.cct000066400000000000000000000071301414576234500230760ustar00rootroot00000000000000 iso_8859_7XXTV X X  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   picolibc-1.7.4/newlib/libc/iconv/ccs/binary/iso_8859_8.cct000066400000000000000000000071301414576234500230770ustar00rootroot00000000000000 iso_8859_8XXTV X X  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   picolibc-1.7.4/newlib/libc/iconv/ccs/binary/iso_8859_9.cct000066400000000000000000000061301414576234500230770ustar00rootroot00000000000000 iso_8859_9XXTVX X  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0^1_  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0^1_picolibc-1.7.4/newlib/libc/iconv/ccs/binary/iso_ir_111.cct000066400000000000000000000071301414576234500232270ustar00rootroot00000000000000 iso_ir_111XXTV X X*  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~*  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~RSQTUVWXYZ[\^_!    N01F45D3E89:;<=>?O@ABC62LK7HMIGJ.&$%/ !"#,+(-)'*  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~RSQTUVWXYZ[\^_!    N01F45D3E89:;<=>?O@ABC62LK7HMIGJ.&$%/ !"#,+(-)'*picolibc-1.7.4/newlib/libc/iconv/ccs/binary/jis_x0201_1976.cct000066400000000000000000000051341414576234500234700ustar00rootroot00000000000000jis_x0201_1976XXXZ\\abcdefghijklmnopqrstuvwxyz{|}~abcdefghijklmnopqrstuvwxyz{|}~picolibc-1.7.4/newlib/libc/iconv/ccs/binary/jis_x0208_1990.cct000066400000000000000000007632401414576234500235040ustar00rootroot00000000000000jis_x0208_1990XXXXxXc`۸c`?w77  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]!@!q!r!x!/"L!k!^!-"y!_!`&!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X'''!'"'#'$'%'&'(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@'A'Q'R'S'T'U'V'X'Y'Z'['\']'^'_'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o'p'q'W!>!=!B!F!G!H!I"w"x!E!D"s!l!m"(!n"r"+","*"-"M"N"O"_"P"`":";!]"e"g!g"\"J"K"A"@"i"j!h"h"f"b!b"a!e!f"c"d">"?"<"="]"^(!(,("(-(#(.($(/(&(1(%(0('(<(7(2()(>(9(4(((8(=(3(*(:(?(5(+(;(@(6"#"""%"$"'"&"!!~!{!}!|"~!z!y!j!i"v"u"t!!!"!#!7!9!:!;!R!S!T!U!V!W!X!Y!Z![")".!L!M!A$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!+!,!5!6%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v!&!f;0>e2gN>JBP$CfP%6zP&4]C0hP+256e8pLiV&MpF}4%55P,P-N;M=AhP/;vFsP21>8_8^0fOKOJ:30!P3P4P5K4P68r0gKr5|5}5~DbNPP?IU@g!8P@PBBeNa0JPA2>6DCg7oPCG$4kPD0K8`4lIzH25Y2qPgEAGlPFHPEPG:nPHU$PPPSPQ2BJ;PKPO8s;H4&PTPLNc;xPMPRPUPN6!0M6"2AU%KyIn8t?/N7JX78B%2d=SPYP^P\PWB/PZP]P[J]PX?.KsP_P`=$PmGPI6PhJp26PlPfPoAR8DG\`GPnE]Pc8v8uPaF~A4Q@QAH,8xO;QB6&JijQ{3dQuQsAOQwQv3D7`Q|N-QxQ}QzQyNO8y2CNt=uEX9eR"R#NeO+R%8zR$3/R&KVD!R)JgR-@*R*6PR+4+7.R.R/R0R1<[8{L^LhFwJqR2R3R5R7R6R82=KL:|R9AY>"6)R:H[R;RI$6h0eF?R?==@iRAR@>#8aRCH>RDH\B4Bn6(FnC1GnKNRF@j75RGRH1,0u4mB(5QMqRK27RJ6*RLLqRMNR8|86RNRPRO?_191^RQRR87RS5n;2RTKt:55ZM'APH?<}=G$R\RZ2DBf<8;K1&3p9f;JR]R^5I3F9g5HD_1%F1L>9!MyEG8~7/Rg6cKJH]Rf4^RaRbRdRe5[?aJ-RcR_8cR`O$JrDh8b9pRhF]Rl<~:i31RyS%0vS$0%IJS"R|RwR}:HS&0wS/S'S(>%KiS-S,E/S.S+14:6?0S)EbS*0"S4M#>'S:S9S0BCS1BoS6>&S3Ld7(13SW2^Sb>|S^S\S]S_1=A9SYSZ3zSa4oSdS`ScJ.FUH8SfSe3ESgSjSiShG9SkSlSnSmSpSsSqSoSrStSuSvSwSxQE<|;M2s0xCDSy:$0O?^Sz8G9qS|S{J`S}T!S~T"T#7w1`T$T&T%T(EZT)05:_7=COT*T+T-T.:d6QK7T,T/:A9#T3:%C3T0DZT4?bT2T57?T6T79$3@T9T:T;T8T1TkT?T@T>TBG80hIVTC>}<9G]4p:kKYF27xBOTATDBDTETFTHDi4.t!1aJs>lEH:fTNJ=N]2tTJA:TMEcEIEdH9DM:ITI1vE6TKTG?PTO=N6-TPJhA}DFTRKOTSTXJ/TWTQTTTV:&JITYCE2u>mT[TZ9hT\T^T]T`TUTbTaT_;N?QATTc@<0mGdD[TeTdTfTgThTiJQTj2FTkM<30RI=HB?TlLkL4TnBgE7B@IWToTp1{<:Tq0PTrTs1b4qF`JtTwAUTv7@K[TuEeTyTxT{Tz1|T|>)T~C%T}J3=wE[U!9%U"G!H^LQG%U+58MEL/V,U#U&BEK8EJU'Ke:J>*U(;P;O098H@+0QU,U-U*184/U)LEI10(0y;Q0R0#U2U0L+U4O,GLU6:'U9IXU:U5L;G^U;I2U7yULUEUBCdUAUCUDUFUG4rUIUHUJ>nUMD\1EUKUNUOURUPUQ;RUS9&UT;zB8UUUV;Z9'LR5(8IUW3XUXB9UYV#UZU[U\U^U_U`Bp1',2HUbMF=I-UrUs0SB:?RUtF3>.>/Uu@m>0UvUwL`Ux6F="UyUz<\?,Ft?THxG"6IU{5oU|6~FO20;SU}V"V!6}U~E8B0EKVGVFVEVAV@VDJxVKVHVJMrVIV??sVL:7VMVNVQVPVOEhV:VWVSVRVTVUVXNfVYVVVZ4`V[V]V\V^V_@n=#=dAc9):89*5pV`:98JVaL&GCVb9+4,C'6R;TI[HAVc4uVfD!VeVdVgDk?c;U@JBS5"D"VhVi>oK9VlVkVjI}VsKZVmVoKkVnVpH(VqJ>Vr43J?G/VtVu9,44Vv88MDM)4vVxD#9->1H_>2=xDlJyE99.I\VyEY:B8KDm0C=n9/MGVzV{GQV|NwO-V~V}3GW!W$W%W#I@>3W'W&W"W(W)W*W-W+W,W.1dDnW/7z2vG6W0F{J[W1O.W2J@W5P!P1<0FuW65]D$0zW7J&90CPDoLo898LW8W9W?W@EvWAWBWCW4W3WD7AI':LI7D&IKWE>41FWFWGLrH`WJ1}@,WIWH7BBTWNWLWKN'8e=yWMEL=>F@WQWPWOWR8fWSI|=[WTHyFAD'E0WU5+?4I,4wG&WV;VK:K;1~W[CiWX2wX-WZG0WYWW9zW]WcWiWaE\WfI]W`WeNg;WBUW^5^Wh@-1eWb2xWg61WdWjWlWvWtWqWpNxWr6291=zWyWkWoW_2zWsWuCQ:(28WmWxWw63B)3f7CWnWzW}X!<=X'DpW{X%2yX#X$W~X"8gM*451YX&G:0-HaW\X,X0LeX)EiX.>pX/FWOGX+X19{@K0TX*X(AZW|;4BFX=A[X8X5X6X?0UX36r0&46X;XCXBXGXHXFXIXAXEXJXKX@;|XDBV92X2?5XXJiXNXOXPXWXVK}47XT7E34XQN8XS0VXUXLXRXY7DXMM]M+X\X`A~NyXaX^X[XZX_J0F47FXbX]Xc7{21Xk48XiXj:)XhXfXeXlXdXn2{XpXoD(XsXqXg7|XrXvXuXwXtXxXyXzJjX|X{=?@.2f2|X}0?@LX~lCY!7aY"@oY#Y$5:Y%Y&Y'BW8MLaK<=jY(@pn=Hb55;Y0Y7>6Y1GDM^Y3Y4Y8EjY593@^YFH4BrHdZ-JzDqKuY;2!CjYDC4Y>YEY@YGYCYBGoY<2}Y:5qBsY6Y994@[>7YAGR5r3H3g?!YIYNYJ7}YO;"9i=&Y=;}YL;XYM0DYHD)5s64YK0':C?6DrHTYQA^B*;+YRYTYPJaD=A\J{9FhG1YWA]8YVY[GSYU7!3]Y]N+:NC5YZ@\95?d1fAqZ5Z9Z7Z8YpZ;Z:YxZZ@Z?ZA2~96J|@/8NZCZFIR5_ZEZDGTZG65ZIZH4:;6FX7I?tZJ@0E(I_ZKZLZMJ8U]@FIL:XHeHCEMNAZO:Z_>;L@:*0W@NZf@11G=UKf:r><@'ZeZcZdCk[&Zj;~98ZhZi?8Zg;/ZlZkZpZqZm3"ZnZoHUIa7JZr@2>=CR6GZsZw2KZtZvZu=kCH0EZxZyD*Nq;CJkK=["Z{Z~Z}Zz[!F^Z|[#=l[$MKGx[%['[([)6J1H99[*[+=qAbRXA>A=BX:GPr7nM-J~I~[,:sD?[-O/K>D+[.4|[/[0LZL$KvK\;%[2s[;EN[9B+[:>rL][<[=Mh[B9:GU[?ElZ^Zb5OGG[A>>HD[GHz[>[D[C@OKmNSKg2L;^OH[F?u[E[@8O[L[J2M[H[N[TBHJA[VI"[UGpK?4;@w=@DSM.[Q[P[R[O[W[M[K[S[IClLx?Tm8hM|[hDt3#:-[`[p3a[n[rEn4~\2LI[w4}[~K@\!\#\'[yC*Eo\+[|\(\"?9\,@3\*4=OP[v\&0X[xL:[}?"DG[s\%?z\/3q8!\1[z\0\)[{\-\.\?FN\$\;\=DXMLIv\8BJ\>A?\5\B\AFo\@Fj\D\76H\:=]G`\<6K\4\6\3O03Z\9\C35:g1]\TO1\W?:\V\U\R\F\c\E\X\P\K\H\I\Qt"\N9=DHAd\L\G\JMMKj\O\Y\a\Z\g\e\`\_DPAe\]\[\b\hHu\n\i\l\fCtI8\\\d>@LO\x\k8"2#3_\S>A\p\w]=]<]>2NC7]?4?]A]@]B]C]D;_@5:!IpJbOD;u:PNr]E]F;`]G]H]J]IKX=^CS]i]q]jBA5b]r7h5%]p]n]kM`D@FY]l]t]s7#2-:;]m]oKWBtKw]|]}2OJ(L}^!<#>B]x]~1h67]u]z@tGqHg]wK!]y^$^"]{K"GH5cE%Cm^%^#BY]v1KMN^0^/@v^,MlF6^&DE1L9?^)='^.^-^(^+3h^*GIN.>t@u^6^4IM^1^31:9@O23=IbMa3$?;^5^:>CM0^7^2^8N^EsFB361U^>^ANCMd^H^B^?NT^E=J^G^LEq^J^DC8^K^@^F^M0|^C^N?<=_J%:.^;^IE:@63i:Q>D^==B7L^<^R=m8:^a^[5tEO^V^_0/1229^XB,^O^Q9A^b^]^U^\L+^Z^^8P>EC9^TM/^W^PEr^S^YOQ<>K~^cH.^o8;=`^eN/9B^r0n^p^d^j^lMO^gE.^i^q^kLG^f<"^~3j^h^m^nBlBZ^v^|^zE)_#^w^x^`5yI:_<_?_B_;9jG(^9Mt_=_ABu_@_+oi_E_I_G_C_D_H_FIN_N_K_J_MFT_OCuBm@%_P_R_Q^u_SFg_T2PEt3%5d<^:RO'?f1j_V_U_YC:_\_W_[_ZE@0YNu_^1(_`___]_XK#_b_a1k_dJ2_cL5>GA3>FN{_j@y_f_k1l_iGa_e_h>HHQ_l`9`:8$HH`<>u`;68`=`?`>`@8Q`A6iA@9}`C`D`BHI`c`~`i8=5e`fM}N0Bv`h`jNV6WH|GJ`k`m`p`l`o8j1M`q?p`nN\`tt$`r`u`g`s:<`v`wM~`x`y`e`z4D<%`{`|`}1;a!I;a"4$a#a$a%a'a(a&ISa*a)a,a+a-a.a0a/9ya2a14E?SEHVaAaB0[>vaGaDFmaC5&aJaEaFaIaHI%ABAA5?aKaLaMaOaN1VaWHhaQaSaU?>aVaT<@aPaRIB>IaYaXaZ<&:/Ewa[DKa]N!a\AiabadaeCTaca`a^a_aaahafagaiakalamanajapaoaqNEataras4bL~JJavauawaxa|ayaza{a}a~b!b"b#H/EPb$GrI4b%b&E*3'9Db'b(b);)b+b*b,b-Hib.b/sib0b1b2;.b3GVK_1N1Wb4b6b5Ep@9]9b7LAb84FHWb9b:b;L\LUD>Ajb==b>Jb@b?b>H}4G8)bFbC??L2bBbDbEbAbGbHD/4cCebIbJbM?gFDbNKSbKbLbQbPbObSbRbTbVbUJM=VNFbWF7bXbYb]b[b\bZb^b_b`baL7bbLpbcCNGj6kC;bd6:@Pbe:=bfbg8&:UbiEV:V5NK$GKEW9\bk>KN29E8'H#bmbo8kbnDvbq37blHj10:lORbpbrJK@Ybtbubs3Nb{bz<'b|bwb}bxHXbvbyc"c!Kab~0kc$c#>Lc%ACc'c&c(bhbjc*c)<(NiMI<:WExc2c3cI6XO=A5c42RDwJ!c55zc6c8c9G)c:c;c<6Y2SFE=(;dc==)2JICc>HkAEcAcBGi?Ac?Cac@>N0\5)cCDxcD@GL-I#cEcFCUNGcHcGwcS3OcU7j5fcV6ucW@|FM@`:ucXCbAkcZc\cYc[7"c]7&5gMRc_c`1.cc3vcbcacec^cfN)cgchTtcjcickclN5cmpo>Ocnco=WF8cpC(cqCPcxcyE+cz3^?ZIdc|Bhcwc{c}:{d&I.H&Ey6Zd%d#H5c~C^E{Ez:vd8d(d*d-d.d+d,d)d'd!JO2Ud5d2d7d6GsL';;d0d9d4d3d/d14IC=@}H"d>H$@ad;HOd?JSC[d:dQdjdhdfdndmdldkdodp@:dqdsdr8RA8duE|dtdvJ5Al9GdwNHdydzd{d|;ed}7O5j5*e!Ls9Hd~e$LfGR:0e)=*8>AHe%e+e&7Pe.e27ke-e69JMm0e?0=LJe>6[HlAmNP=oeneH@~eDeIeKDyeNeJJT4KLK0^eMN}eL1oFleOeVePeWeSG{f;fH)fk>SI*flfj4N8T;hHn8*KCfofm9N9O0i:hGY0_ftC@GXB[fvfrfufpfsK&8U0}fqfxfyF96;g&G=;i6<@HOFL.fw@T5Sfzf|f{f}C&G>D1g#g"f~?UIeg%g$9POSg5g)g*22gEg@gAgBB!gDgCgFgGgH?C2igINW<+=-;jCWgJgK11gLgMgNgOgP6=Z*gQ@egRh0G|Mih9hOhG?{5F6]hB2[>ThE:ZEQhJJnhA2Z8VI)hKh?hHhRhChDF:hIhFK(hL0`h@hNhMGkhTh_3~hbhPhUMnh^MUN*Cx3kIrhdF!01h]hYArhSh[h`G,0*hXhaIxh\hW>U=/<,LXIGhghphZ3w>xhehjAshfhmC_hnMVhc38hihlL,hohhhkK)O!hshzhrVi$Iyh}hVh|OOF"Isi+i1i2i%Gvi/i'i)i3i(i,1rFei-i0i&A&i*;'?E70LtLy=ri7i5ONi4Mui6i8i9ii@i?]1]"iEiDMvbj@j?jBjAiZjFjCjDjEjG7ljIjH=09T^'jJ=Q39jK1R>WjL9UjM0aI=jN?jjUjRCojSjP6^jOjV76B^j\jXB5jWjZjQj[j]HojYj^j`8SjT0Aj_:[NvjajbAuN"jcM5jdjeJdjf:@N#jkjl>XjjMgjgji@=?~jhjmJ#jojn3lK+jpj|jrjsjtjujyjzjxjvjqjwj{p72(j~6_j}k"k!k$k#k%=1k&k'k(@>MWk)J$GFk*k+8+5,k,;kGAk-3Pk.k0Mwk/?Fk1k2k34Qk4k5k6k73Qk8k9k:2r?(k;k7W?VkAF$k@71k?Bw5-kBkC>Y7mkDK,@_5vLuAJkE?GCp>ZkFkIkJ:>BBkH>[I>kG;l1SkN7X;n;mOMkMkLA'5MOC3:>\kKkPkQkO8XM@;oG'kT@@CBM6kW8l@?kSkX8mkUkVkR@bFIC/2]Hp5CD4k[kYCL@A4RkZ?[NJO@k\kgD5kfkckkkdk`D|k_k]M!;pkak^ke=t8ABzKE1Z0bF%kikhFfkmkbklkn8,kj9Vyl$8nl%l&;>ZNl'l(=2l)l*l+l,l-C+l.l0l/F&l1K-l2l3l4l5FZ>]l69kP.l7l8I?l9lAl:ll?l@lB3-DgIi:b9WIO2_HNlE4S@UlDlICyLclGlH5.lJGcB_HqE=lFKG2llLO(DBOE;qlKB1l\A(FxIPlO;?;r>^Ge8-lNlMIjm?m@m=mAmDmG<4mFmE7ZmH3SmJ:\mImRmLmNJemKmMmQmO51mPmSGZNX=4mTM"mVmUmYMAmX3mmWm\m[mZE2m]m^m_9l7%m`mamb?Imc<-mdmeR!Q~mfepmgC$?+G@mhJUDT9~C)1*Kx?W7^6aJVmimkmj2`FvmlGwE3mm=RmoLBm~mqmrDIB`AwF(mp5Umymvn%F)C`msD~ESmtmx?`GgDL@BmwB.B$mu0)O"mzBa=5?Jm|m{0om}I/n'F[?kCY6xn&M71?JW2an!n"n#n$F;C#0cn(n)t#B=n*1sAL8/MZn+E,Ax74n;n_nRnPnQnTnS>znUnVnWHP:S`9[KH6d=FF{o"o$6SIEa3yo0:?AyDJ3;o.o/DCo-o1o7o:o9E-o2o3o6o86@o;o5o4o?o@oAo>o=>bF*oc1#NYp+n.p*p.p,p-p/p0Nlp1p2@IH;?}4gM:2m=88[p5p4;sp6p3;(p:j-RV?wp8N%Fq1+@c<6J71@NmMkp;EE<{pNnp9p@pBpAp?pCpDAz2bpEL8pFpGO*[1pHpIpJpNpKpLpMpO@DLw@EpPHspQsSLLpRpSpT3WpV?YpW7$pXp\pZp[3spYp]p^0Hp_p`>dpa5GpdpcpbkqJ\pepfpgphpipj4ZpkplG#pn2;pqpp1$6AJGD::"9`=g?\psprMB4hHRF\?|NN7[pvpuKKF,1PpwptIQMjpxpyp{Bj3[3\pz4i824jE?N`8\p|p}p~q!q#q"Iwq$q%q&q'q)q(q*HtfL?)52q+q,R,];HS0{0;;tK0>~q-L_q.M\1B;Aq/2nq0q1q3q4q6q2q54[q7q8q9q:q;q=qq@qAqC6BGOqGqHCZFkqIG}BL1X6n6oCsqN6p2oqMqKqLqJqXqOqPqQqRqTqS=YqUqW53qVA{83qYBMqZF-q[q`q^q]q_q\qbqaqd6Cqcqeqfqhqgqiqkqj9|qlqm3r:J+r8r;rr?Kn;-:zA/r@rCrArD8qrBrErFrGrK;*BdrLrIrHrJ7_rPrOrN03rZrVrWrSrYrU3bOLrXrTrRrQr\r_r^r]IIr[0sr`rb3orM17rdrcraC-KpNZrerfrgrhriD;rjH7rorkrlK1LDFPrprqF>rnrm2*ryrx1urvrurs3{rr<22)9cr|r{rzrwr}r~s%s$s&1-s!s"9tL9s#K2s+s's,s)s(7\s-s.s/s*rts0Das4s5s3s2s8s1s6s7s:s9sOIs;Bk:ms?s@sAsBsC84sDsE?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]@!q!r!x!/!L"k!^!-!y"_!`!!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&''!'"'#'$'%'&'(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@'A'Q'R'S'T'U'V'X'Y'Z'['\']'^'_'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o'p'q'W'>!=!B!F!G!H!I!w"x"E!D!s"l!m!("n!r"+","*"-"M"N"O"_"P"`":";"]!e"g"g!\"J"K"A"@"i"j"h!h"f"b"b!a"e!f!c"d">"?"<"="]"^"!(,("(-(#(.($(/(&(1(%(0('(<(7(2()(>(9(4(((8(=(3(*(:(?(5(+(;(@(6(#"""%"$"'"&"!"~!{!}!|!~"z!y!j!i!v"u"t"!!"!#!7!9!:!;!R!S!T!U!V!W!X!Y!Z![!)"."L!M!A!!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$+!,!5!6!!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%&!0;e><2TI?M"P/1n3#P$@BRV5:Jg>>NBJ$PfC%Pz6&P]40Cg<'P(P)P5GW57GcFC83KIi*Ph>+P52e6p8iL&VpM}F%455,P-P;N=MhA/Pv;sF2P>1_8^8f0KOJO3:!03P4P5P4K6Pr8g0rK|5}5~5bDPB?PUIg@8!@PBPeBaNJ0AP>2D6gCo7CP$Gk4DPK0`8l4zI2HY5q2gPAElGFPMEPGPn:HP$UPPSPQPB2;JKPOPs8H;&4TPLPcNx;MPRPUPNP!6M0"6A2%UyKnIt8/?7NXJ87%Bd2S=YP^P\PWP/BZP]P[P]JXP.?sK_P`P$=mPPG6IhPpJ62lPfPoPRAD8\GG`nP]EcPv8u8aPZQ~F4A@QAQ,Hx8;OBQ&6L<'4OQMQ=LNQZIPQQQRQ_EVQTQUQSQc:WQjLdNXQ(@YQZ=ZQ|C?N`EER[Q%tE6\Q^Kh=|B^QdF_Q`Q.3aQ'6LFz1P=!HbQaEO?cQ,JZ@"4)4dQfQ:7eQsNi==HLJgQxMhQiQ~EjQ)@~:t7kQI;o9fDmQ'Bo:nQoQ0AlQqQ6Kd9pQu7^:mGtQrQ{Ij>{Qd3uQsQOAwQvQD3`7|Q-NxQ}QzQyQONy8C2tNu=XEe9"R#ReN+O%Rz8$R/3&RVK)RgJ-R*@*RP6+R+4.7.R/R0R1R[<{8^LhLwFqJ2R3R5R7R6R8R=2LK|:9RYA">)6:R[H;RR$Ih6e0?F?R==i@AR@R#>a8CR>HDR\H4BnB(6nF1CnGNKFRj@57GRHR,1u0m4(BQ5qMKR72JR*6LRqLMRRN|868NRPROR_?91^1QRRR78SRn52;TRtK5:Z5'MPA?H}\RZRD2fB8L!9yMGE~8/7gRc6JK]HfR^4aRbRdReR[5a?-JcR_Rc8`R$OrJhDb8p9hR]FlR~Si:13yR%Sv0$S%0JI"S|RwR}RH:&Sw0/S'S(S%>iK-S,S/E.S+S416:0?)SbE*S"04S#M'>:S9S0SCB1SoB6S&>3SdL<77S8S5S;S2SASFSBS=SGS1AIS"9?S}CCS31WS^2bS|>^S\S]S_S=19AYSZSz3aSo4dS`ScS.JUF8HfSeSE3gSjSiShS9GkSlSnSmSpSsSqSoSrStSuSvSwSxSEQ|?T@T>TBT8Gh0VICT}>9<]Gp4k:YK2Fx7OBATDTDBETFTHTiD.4!ta1sJl>HEf:NT=J]Nt2JT:AMTcEIEdE9HMDI:ITv16EKTGTP?OTN=-6PThJ}AFDRTOKSTXT/JWTQTTTVT&:IJYTECu2m>[TZTh9\T^T]T`TUTbTaT_TN;Q?TAcT<@m0dG[DeTdTfTgThTiTQJjTF2kT~T%C}T3Jw=[E!U%9"U!G^HQL%G+U85EM/L,V#U&UEB8KJE'UeKJ:*>(UP;O;90H8+@Q0,U-U*U81/4)UEL1I(0y0Q;R0#02U0U4U,OLG6U':9UXI:U5U;L^G;U2IUy7LUEUBUdCAUCUDUFUGUr4IUHUJUn>MU\DE1KUNUOURUPUQUR;SU&9TUz;8BUUVUZ;'9RL(5I8WUX3XU9BYU#VZU[U\U^U_U`UpB'1iH2bUFMI=drUsUS0:BR?tU3F.>/>uUm@0>vUwU`LxUF6"=yUzU\<,?tFT?xH"GI6{Uo5|U~6OF02S;}U"V!V}6~U8E0BKEHVGVFVEVAV@VDVxJKVHVJVrMIV?Vs?LV7:MVNVQVPVOVhE:VWVSVRVTVUVXVfNYVVVZV`4[V]V\V^V_Vn@#=d=cA)98:*9p5`V9:J8aV&LCGbV+9,4'CR6T;[IAHcVu4fV!DeVdVgVkDc?U;J@SB"5"DhViVo>9KlVkVjV}IsVZKmVoVkKnVpV(HqV>JrV34?J/GtVuV,944vV88DM)Mv4xV#D-91>_H2>x=lDyJ9E.9\IyVYEB:K8mDC0n=/9GMzV{VQG|VwN-O~V}VG3!W$W%W#W@I3>'W&W"W(W)W*W-W+W,W.Wd1nD/Wz7v26G0W{F[J1W.O2W@J5W!P1P0W@WvEAWBWCW4W3WDWA7'IL:7I&DKIEW4>F1FWGWrL`HJW}1,@IWHWB7TBNWLWKW'Ne8y=MWLE>=@FQWPWOWRWf8SW|I[=TWyHAF'D0EUW+54?,Iw4&GVWV;:K;K~1[WiCXWw2-XZW0GYWWWz9]WcWiWaW\EfW]I`WeWgNW;UB^W^5hW-@e1bWx2gW16dWjWlWvWtWqWpWxNrW2619z=yWkWoW_Wz2sWuWQC(:82mWxWwW36)Bf3C7nWzW}W!X=<'XpD{W%Xy2#X$X~W"Xg8*M54Y1&X:G-0aH\W,X0XeL)XiE.Xp>/XWFGO+X1X{9K@T0*X(XZA|W4;FB=X[A8X5X6Xf<9XX?XU03Xr6&064;XCXBXGXHXFXIXAXEXJXKX@X|;DXVB292X5?XXiJNXOXPXWXVX}K74TXE743QX8NSXV0UXLXRXYXD7MX]M+M\X`X~AyNaX^X[XZX_X0J4FF7bX]XcX{712kX84iXjX):hXfXeXlXdXnX{2pXoX(DsXqXgX|7rXvXuXwXtXxXyXzXjJ|X{X?=.@f2|2}X?0L@~XCl!Ya7"Yo@#Y$Y:5%Y&Y'YWBM8aL;50Y7Y6>1YDG^M3Y4Y8YjE5Y39^@FY4HrBdH-ZzJqDuK;Y!2jCDY4C>YEY@YGYCYBYoGAYRGr5H3g3!?IYNYJY}7OY";i9&==Y};LYX;MYD0HY)Ds546KY'0C:6?rDTHQY^A*B+;RYTYPYaJ=D\A{JN<`Y_Yx?~7YY9>hF1GWY]Ax<\Y8>VY[YSGUY!7]3]Y+NN:5CZY\@59d?f15Z9Z7Z8ZpY;Z:ZxYZ@Z?ZAZ~269|J/@N8CZFZRI_5EZDZTGGZ56IZHZ:46;XFI7t?JZ0@(E_IKZLZMZ8J]UF@LIX:eHCHMEANOZP_Z;>@L*:W0N@fZ1@G1U=fKr:<>'@eZcZdZkC&[jZ~;89hZiZ8?gZ/;lZkZpZqZmZ"3nZoZUHaIJ7rZ2@=>RCG6sZwZK2tZvZuZk=HCE0xZyZ*DqNC;kJ=K"[{Z~Z}ZzZ![^F|Z#[l=$[KMxG%['[([)[J6H199*[+[q=bAXR>A=AXBG:rPn7-M~J~I,[s:?D-[/O>K+D.[|4/[0[ZL$LvK\K%;2[k;[NE9[+B:[r>]L<[=[hMB[:9UG?[lE^ZbZO5GGA[>>DHG[zH>[D[C[O@mKSNgKL2^;HOF[u?E[@[O8L[J[M2H[N[T[HBAJV["IU[pG?K;4w@@=SD.MQ[P[R[O[W[M[K[S[I[lCxLFmTh8|Mh[tD#3-:`[p[a3n[r[nE~42\ILw[}4~[@K!\#\'\y[*CoE+\|[(\"\9?,\3@*\=4POv[&\X0x[:L}["?GDs[%\z?/\q3!81\z[0\)\{[-\.\?\NF$\;\=\XDLMvI8\JB>\?A5\B\A\oF@\jFD\7\H6:\]=`G<\K64\6\3\0OZ39\C\53g:]1T\1OW\:?V\U\R\F\c\E\X\P\K\H\I\Q\"tN\=9HDdAL\G\J\MMjKO\Y\a\Z\g\e\`\_\PDeA]\[\b\h\uHn\i\l\f\tC8I\\d\@>OLx\k\"8#2_3S\A>p\w\y4=]<]>]N27C?]?4A]@]B]C]D]_;5@!:pIbJDOu;P:rNE]F]`;G]H]J]I]XK^=l9SCi]q]j]ABb5r]h7%5p]n]k]`M@DYFl]t]s]#7-2;:m]o]WKtBwK|]}]O2(J}L!^#x]~]h176u]z]t@qGgHw]!Ky]$^"^{]"KHGc5%EmC%^#^YBv]K1NM0^/^v@,^lM6F&^EDL1?9)^'=.^-^(^+^h3*^IG.Nt>u@6^4^MI1^3^:1@92O=3bIaM$3;?5^:^C>0M7^2^8^^NsEBF63U1>^A^CNdMH^B^?^TNE^J=G^L^qEJ^D^8CK^@^F^M^|0C^N^=^B=L7<^R^m=:8a^[^t5OEV^_^/02192X^,BO^Q^A9b^]^U^\^+LZ^^^P8E>9CT^/MW^P^rES^Y^QO><~Kc^.Ho^;8`=e^/NB9r^n0p^d^j^l^OMg^.Ei^q^k^GLf^"<~^j3h^m^n^lBZBv^|^z^)E#_w^x^`^y5:I?_<_?_B_;_j9(G9^tM=_A_uB@_+_ioE_I_G_C_D_H_F_NIN_K_J_M_TFO_uCmB%@P_R_Q_u^S_gFT_P2tE%3d5^3AF>{Nj_y@f_k_l1i_aGe_h_H>QHl_Q59`:`$8HH<`u>;`86=`?`>`@`Q8A`i6@A}9C`D`B`m7IHc`~`i`=8e5f`}M0NvBh`j`VNW6|HJGk`m`p`l`o`j8M1q`p?n`\Nt`$tr`u`g`s`<:v`w`~Mx`y`e`z`D4%<{`|`}`;1!a;I"a$4#a$a%a'a(a&aSI*a)a,a+a-a.a0a/ay92a1aE4S?aVHAaBa[0v>GaDamFCa&5JaEaFaIaHa%IBAAA?5KaLaMaOaNaV1WahHQaSaUa>?VaTa@YaXaZa&DjA=bb=J>@b?b>b}HG4)8FbCb??2LBbDbEbAbGbHb/Dc4eCIbJbMbg?DFNbSKKbLbQbPbObSbRbTbVbUbMJV=FNWb7FXbYb]b[b\bZb^b_b`bab7LbbpLcbNCjGk6;Cdb:6P@eb=:fbgb&8U:ibVEV:N5$KKGWE\9kbK>2NE9'8#Hmbobk8nbvDqb73lbjH01l:ROpbrbKJY@tbubsbN3{bzb'<|bwb}bxbXHvbyb"c!caK~bk0$c#cL>%cCA'c&c(chbjb*c)c(ckHEAAcBciGA??caC@cN>\0)5CcxDDcG@-L#IEcFcUCGNHcGcoScO3Ucj7f5Vcu6Wc|@MF`@u:XcbCkAZc\cYc[c"7]c&7g5RM_c`c.1ccv3bcacec^cfc)NgchctTjcickclc5NmcopO>ncocW=8Fpc(Cqcxcyc+Ezc^3Z?dI|chBwc{c}c{:&d.I&HyEZ6%d#d5H~c^C{EzEv:8d(d*d-d.d+d,d)d'd!dOJU25d2d7d6dsG'L;;0d9d4d3d/d1dI4=C}@"H>d$Ha@;dOH?dSJ[C:djdhdfdndmdldkdodpd:@qdsdrdR88Aud|Etdvd5JlAG9wdHNydzd{d|de;}dO7j5*5!esLH9~d$efL0:)e*=>8HA%e+e&eP7.e2ek7-e6eJ9mM<03ek50e1e}E/e,e(3d@(88e5e7e4eQ73B9enAFeBeC?e=0JL>e[6lHmAPNo=neHe~@DeIeKeyDNeJeTJK4KL^0Me}NLeo1lFOeVePeWeSe{GJf;fO)HkfS>*IlfjfN4T8h;nH*8CKofmfN9O9i0h:YG_0tf@CXG[Bvfrfufpfsf&KU8}0qfxfyf9F;6&g=Gi;<6H@FO.LwfT@S5zf|f{f}f&C>G1D#g"g~fU?eI%g$gP9SO5g)g*gp<(gx9'g+g2D"J#A\B/g0g,g-g.gQ96g2gfIlK(I1g4g3gDK7g8g7A9g;g?gg22Eg@gAgBg!BDgCgFgGgHgC?i2IgWN+<-=j;WCJgKg11LgMgNgOgPg=6*ZQge@RgKh0h|GiM9hOhGh{?F5]6Bh[2T>EhZ:QEJhnJAhZ2V8)IKh?hHhRhChDh:FIhFh(KLh`0@hNhMhkGTh_h~3bhPhUhnM^hUM*NxCk3rIdh!F10]hYhrASh[h`h,G*0XhahxI\hWhU>/=,ehjhsAfhmh_CnhVMch83ihlh,Lohhhkh)K!OshzhrhCI<#i>6$iyI}hVh|hOO"FsI+i1i2i%ivG/i'i)i3i(i,ir1eF-i0i&i&A*i';E?07tLyLr=7i5iNO4iuM6i8i9ii@i?i1]"]EiDivMj@j?jBjAjZiFjCjDjEjGjl7IjHj0=T9'^JjQ=93KjR1W>LjU9Mja0=INjj?UjRjoCSjPj^6OjVj67^B\jXj5BWjZjQj[j]joHYj^j`jS8TjA0_j[:vNajbjuA"Ncj5MdjejdJfj@:#NkjljX>jjgMgjij=@~?hjmj#Jojnjl3+Kpj|jrjsjtjujyjzjxjvjqjwj{j7p(2~j_6}j"k!k$k#k%k1=&k'k(k>@WM)k$JFG*k+k+8,5,kk;AG-kP3.k0kwM/kF?1k2k3kQ44k5k6k7kQ38k9k:kr2(?;kkW7V?Ak$F@k17?kwB-5BkCkY>m7Dk,K_@v5uLJAEkG?pCZ>FkIkJk>:BBHk[>>IGkl;S1NkX7n;m;MOMkLk'AM5CO:3\>KkPkQkOkX8@Mo;'GTk@@BC6MWkl8?@SkXkm8UkVkRkb@IF/C]2pHC54D[kYkLCA@R4Zk[?JN@O\kgk5Dfkckkkdk`k|D_k]k!Mp;ak^kekt=A8zBEKZ1b0%FikhkfFmkbklknk,8jkV9U$ln8%l&l>;NZ'l(l2=)l*l+l,l-l+C.l0l/l&F1l-K2l3l4l5lZF]>6lk9.P7l8l?I9lAl:ll?l@lBl-3gDiIb:W9OI_2NHElS4U@DlIlyCcLGlHl.5JlcG_BqH=EFlGKl2Ll(OBDEOq;Kl1B\l(AxFPIOl?;r;^>eG-8NlMljIAm?m@m=mAmVEDmGm4n47;nRnPnQnTnSnz>UnVnWnPHS:a[9HKd6F="o$oS6EIb<#O~nx:?O&o%o'o}niFUEWD,oCC(o)o-7+o08*oa>y30o?:yAJD;3.o/oCD-o1o7o:o9o-E2o3o6o8o@6;o5o4o?o@oAo>o=ob>*F#1YN+p.n*p.p,p-p/p0plN1p2pI@;H}?g4:Mm28=[85p4ps;6p3p(;:p-jVRw?8p%NqF+1c@6<7J@1mNkM;pEE{<pnN9p@pBpAp?pCpDpzAb2Ep8LFpGp*O1[HpIpJpNpKpLpMpOpD@wLE@PpsHQpSsLLRpSpTpW3VpY?Wp$7Xp\pZp[ps3Yp]p^pH0_p`pd>apG5dpcpbpqk\JepfpgphpipjpZ4kplp#Gnp;2qppp$1A6GJ:D":`9g=\?sprpBMh4RH\F|?NN[7vpupKK,FP1wptpQIjMxpyp{pjB[3\3zpi428j4?E`N\8|p}p~p!q#q"qwI$q%q&q'q)q(q*qtHLf)?25+q,q,R;]SH{0;0t;0K~>-q_L.q\MB1A;/qn20q1q3q4q6q2q5q[47q8q9q:q;q=qq@qAqCqB6s3OGGqHqZCkFIq}GLBX1n6o6sCNqp6o2MqKqLqJqXqOqPqQqRqTqSqY=UqWq35Vq{A38YqMBZq-F[q`q^q]q_q\qbqaqdqC6cqeqfqhqgqiqkqjq|9lqmq<3nqoqq?pqqqrqsqb9tquqvqwqxq1Hzq&I{qyq}q|q~q!r"r#r$r%r&r'r(r)r*r+r,r-r.r5]/rxd45!32:1r0r%L3r4r2r5rbK6r{5%O7r9r>0:r+J8r;rr?rnK-;z:/A@rCrArDrq8BrErFrGrKr*;dBLrIrHrJr_7PrOrNr30ZrVrWrSrYrUrb3LOXrTrRrQr\r_r^r]rII[rs0`rbro3Mr71drcrar-CpKZNerfrgrhrir;Djr7Horkrlr1KDLPFprqr>Fnrmr*2yrxru1vrursr{3rr2<)2c9|r{rzrwr}r~r%s$s&s-1!s"st99L#s2K+s's,s)s(s\7-s.s/s*str0saD4s5s3s2s8s1s6s7s:s9ssIO;skBm:?s@sAsBsCs48DsEs/ k_kj kk kk kk l>lB l]lb l}l ll ll ll ll m)m+ m2m8mwmy mm mmmmnn nn&"n)n/0n~n7nn~T~^~f~j~y~~~LUgkuyǀԀۀ^bo倄ـ  PUxz %؁+.7).R39XXZ_nxbmтvۂz19 aciqɄąHK΅hj҅Յ߆䆩  !#]c}^`"'.:<1PU4is:EˊNڊSa!hX\tktyjlx|ڌ̍Ѝpt GLȎ BFLN_d$*-9 #=59VGY[monuqINƑۑ+/֓QS|ƕԕϖKPԖ[fږrz斊 ^m*:=BL7=QKOXot]chk!pPRux|ęЙik%*.2AEMQ œ-2Ȝ9;ΜFHѝ ԝ(,؝\aݝ㞑枸̞؞_g ]&!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X'!'"'#'$'%'&'(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@'A'Q'R'S'T'U'V'X'Y'Z'['\']'^'_'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o'p'q'W!=!B!F!G!H!I"w"x"+","*"-"J"K"A"@"i"j(!(,("(-(1(%(0('(<(2()(>!!!"!#!7!9!:!;!R!S!T!U!V!W!X!Y!Z![")".!L!M$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!+!,!5!6%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v!&!f;0>e2hP+256e8pLiP-N;M=AhP/;vFsP21>8_8^0fOKOJ:30!P3P4P5K4P68r0gKr5|5}5~DbNPP?IU@g!8P@PBBeNa0JPD0K8`4lIzH25Y0LDc=;:4M$BN2?PIM>PEPG:nPHU$U%KyIn8t78B%2dB/PZP]P[J]PX?.KsP_P`PiJoCMPe7qPbPjPdNQPkOAPqPu0NijQ{3dQuQsAO7`Q|N-=uEX9eR"R#F0R(4*L3>!R)JgR-@*R*6PR+4+R0R1<[8{L^LhFwJqR2R3R82=KL:|R9R>I$6h0eF?R?==@iRAR@>#8aRCH>H\B4Bn6(FnC1GnKNRF@jRH1,0u4mB(5QMqRK27RPRO?_19Kt:55ZM'APH?<}RW1CAQ8}8E6gR[C!B~6+>$R\RZ2DBf<8;K1&3p9f;JR]9g5HD_1%F1L>9!MyEG8~Rf4^RaRbRd5[?aJ-RcR_8cR`O$JrDh8b9pL#RjRsRnRq8FL?:pOBRkRiRuRpS%0vS$0%IJS"R|RwR}:HS'S(>%KiBoS6>&SI9"S?C}SCS<4-4n3eSDS@7vSJSHAS5J6,SE6tSRST>(134oSdS`ScSsSqSoSrSxQE<|;MT)05:_T,T/:A9#T79$3@T9T?T@T>TBt!1aJs>lEHEIEdH9DMTWTQTTTV9hT\T^T];N?QATTc@<0mGdD[TeTdTfTgThM<30RI=HB?TlLkBgE7B@IWToTp1{<:Tq4qF`JtTwAUTv7@K[TuEeTyTx1|T|>)T~C%T}J3U"G!H^LQ098H@+0QU,2HUbMF-UrUs0SB:?RUtF3>.>/UuUyUz<\?,Ft?THxG"6IU{FO20;SU}V"V!6}U~E8A;4dV-L(V/V14_V.V0V32eV6V;VCV=33V>VGVFVEVAAc9):89*5p8JVaL&GCVb9+VeVdVgDkVhVi>oVkVjI}VsVpH(VqJ>Vr43J?G/VtVu9,44Vv88MDM)4vVxD#9->1DlJyE90C=n9/MGVzV{GQV|NwO-W#I@>3W'W&W"W-W+W,W.1dDnW/7z2vG6W0F{J[W1O.W2J@W5P!P1<0FuW65]D$0zW7J&90Lo898LW8:LI7D&IKWE>41FWFWJ1}@,WIWH7BBTWNWLWKN'8e=yWMEL=>F@WQWPWSI|=[WTHyWV;VK:K;1~W[WcWiWaE\WfI]W`WeNg;WBUW^5^Wh@-1eWb2xWgWlWvWtWoW_2zWsWuCQ:(28WmWxWw63B)3f<=X'DpW{1YX&G:0-HaW\X,X0LeX)>pX/FW0TX*X(AZBFX=A[X8X5X6X?0UXFXIXAXEX@;|XDBV92X2?5XNXOXPN8XS0VXUXLXRXY7DXMXj:)XhXfXeXlXdXnXsXqXg7|XrXvXuXwXtXxXyXzJjX|X{=?@.2f2|X}0?@LX~lCY!7aY"Y$5:Y%Y&Y'BWK<=jY(@pn=Hb55;Y0Y7>6M^Y3Y4Y8EjY593@^YFH4BrKuY;2!CjC4Y>YEY@YGYCYBGoY<2}Y:5qBsY6Y994@[>7YAGR5r3H3g?!YIYNYJ7}YO;"9i=&Y=;}YL;XYM0DHTYQA^;+YRYTYPJ{Z@Z?ZA2~96J|@/ZEZDGTZG65@0E(I_ZKJ8U]@FZQ;BCG;[?7ZUZSZVN9ZTZ[Z\4{F|C65l;]Aa=\00ZeZcZd[&Zj;~98ZhZlZkZpZm3"ZnZoHUIa7JZrZsZw2KZtZvCH0EZx=l[$MKGx[)6J1H99[*[+=qAbRXA>A=BX:G:sD?[-O/K>D+[.4|[/[0LZL$KvK\;%[2KQ[4[7[64yM{0I:`B<<]EN[9B+[:>rL][<[=Mh9:GU[?ElZ^Zb5OGG2L;^OH[F?u[L[J2M[H[N[T[UGpK?4;@w=@ClLxA?\5\B\AFo\@Fj\D\76H\:=]G`\<6K\4\6\3O03Z\9\C35\N9=DHAd\L\G\hHu\n\i\l\f\d>@LO\x\k8"2#3_>A\p\w]C]D;_@5:!IpJbOD=^CS]i5%]p]n]kM`:;]m]oJ(L}^!<#>B]x]~1h67]u]zK"GH5cE%^#BY]v1K1L9?^)='^.^-^(^+3$?;^5^H^B^?^F^M0|^C^N:.^;^IE:@63i:Q>D^==B^R=m8:^a^[5tEO^V^_0/1229^XB,^O^Q9AOQ<>K~^c3j^h^m^n^x^`5yI:^t_"1iAf_,D,_)DY_(_'_-@!_$7cBy_2G;_;9jG(Mt_=_ABu_@_+_K_J_MFT_O_YC:_\_W_ZE@0Y_iGa_e_h>HHQAg;8_|_{?$RYLl`+`,AV<$`-`.`/JRHG`0GW8#`3:T`5`468`=`?`>`C`D`B`FC,`EO5GbLT`J`LND`OCvG-8%`N`jNV6WH|GJ`o8j1M`q?p`nN\`tt$a%a'a(a&ISa*a)a,a+a-a.a0a/EDM39C?=CKR4D.2ha6a:a9ZB3&a80ZH*N1a=a;C\@&I-a?N,7Ma@a>HVaAaB>vaGaDFmaCaEaFaIaHI%ABAA5?aWHhaQaSaU?>aVaT<@abadaeCTaiakalamanatarasa|ayaza{a}b#H/EPb$GrI4b%b&E*3'9Db'sib0b1b2@9]9b7LAb84FHWb9b:b?b>H}4G8)bC??L2bBbDbEbYb]b[b\bZbaL7bbC;bd6:EV:V5Nbq37blbjc*c)5@5';cc1c0ADc-=K?@c.c,G*c3cI6XO=A52RDwJ!c;c<6Y2SFE=(;dcBGi?Ac?CaI#cEcFCUNGcHcGcK2T7NcL9F9rJfcN@Q1O2:0,cQcR>wCbAkcZc\cYc[5gMRc_3vcbcacec^cfN)cgchTtcjcickclN5cmpo>Ocnco=WF8cp6%Q?C]<3d&I.H&Ey6Zd%d#H5c~C^E{Ez:vGsL';;d0d9d4d3d/d14IFFdEdDdBRUdIdCdUN|JmdZdV@RdYd[6N7)dcdidgde4!>QdjdfdndmdldkdvJ5Al9Gdwe!Ls9Hd~=ce#AHe%e+e&7Pe.e27kMm0e?0=LJ@~eDeIeKDyeNeVePeWH)8*KCfofm9N9O0i:hfrfufpfsK&6<@HOFL.fw@TIeg%g$9POSD2J"A#B\g/g0g,ggDgCgFgJgK11gLgMgNgOgP6=Z*gQ@egRxhehjAsMVhc38hihlL,JNL"hyhxhthu16h~>VjBjAiZ>WjL9UjM0ajSjP6^jOjVj_:[NvjajbAujl>XjjMgjgji@=?~j~6_j}J$GFk*k+8+;kGAk-3Pk0Mwk/?Fk1k?Bw5-?GCp>Z:>BBkH>[I>;mOMkMkLA'5MOC3:>\@?kSkX8mkUkVkR@A4RkZ?[k\kgD5kfkckkkdk`D|k_BzKE1Z0bF%klkn8,kj9Vyl$9kP.l7l8I?l9lAl;l=KFl>l?3-DgIi:b9WIO2_HNlE4S@UlDlICyLclGlH5.lJGcB_HqE=lFKG2llLO(DBOE;qlKB1l\A(lO;?;r>^Ge8-lNlMIjlQlR9XlPlSlTlVB#lU4flXlWlYl[l]l^AvlalbIklsltMYlvlwlym!m%m"l~m#m9?Hm;6mmmAbF*o<4UoHLzoUoSoVoXoWoZJDo[3+o`4X3U9^H6oboaonomooF.o{oy9_oz8BJEo}p!o~p"1!?X=|4Yp#p$DDNMF+o|N&81Bbg!p&3,?o3Vp(p)p'7d:]>cp.p,p-p/p0Nlp1p2@IH;?}4gM:2m=88[p5p4;sp6p3pNnp9p@pBpAp?HspQsSLLpRpSpT3WpV?Y3spYp]pn2;pqpp6AJGD::"9`=g?\prMB4hHRF\pwptIQMjpxp{Bj3[3\pzp}p~q!q#q"q,R,];HS;tK0>~;Aq/2nq0q3q4q6q2q>q@qArnrm3{rr<22)1-s!s"9tL9s;Bk:msLsJO %!E &!D 0"s 2!l 3!m ;"(!!n!+"r!"M!"N""O""_""P""`"":" ";"!]""e""g"!g" "\"4!h"5"h"="f"R"b"`!b"a"a"f!e"g!f"j"c"k"d"">""?""<""=""]#"^% (#%(.%($%(/%(&% (7%((9%+(4%,((%/(8%0(=%3(3%4(*%7(:%8(?%;(5%<(+%?(;%B(@%K(6%"#%""%"%%"$%"'%"&%"!%!~%!{%!}%!|%"~&!z&!y&@!j&B!i&j"v&m"u&o"t0!AN0lNCzN<7N>gN!N>N&JBN*P$N-CfN1P%N26zN6P&N?P(NBP)NCG5NE5WNbV&NqMpNsF}N~4%N55NP,NP8NP9N?MNPAN2>N6DNCgN7oNPCNG$O4kO2qOPgOEAO/GlO0PFO4HQeF~Qq6&Q|7sQQCQQDQFbQ1_Q4'QQXQREQQ_QQ`Q3.RQfR7:RQeRNsR=iR$H=R%JLR'QgR)MxR*QhR.QiR0E~R3QjRCDfRDQmRGB'RTQqRVK6R[9dR^QpRiQtRjQrR}QwRQvR3DRQxRQ}RQzRQyRNOR8yR2CRNtRNeRO+RR%R8zRR$R3/RR&RKVRD"S!6)S#R:S*H[S/R;S1RT:iT31TRyTS&T0wTS/TS-TS,TE/TS.TS+U14U:6U?0US)UEbUS*U0"U.S4U/M#U1>'U3S:U8S9U9S0U>BCU@S1ULS3UOLdUS7|V2S^V4S\V6S]V8S_VB1=VLA9VNSYVPSZV[3zVdSaVtJ.VxFUVzH8VSfVSeV3EVSgVSjVSiVShVG9VSkVSlVSnVSmVSpVStVSuVSvVSwV2sV0xVCDVSyV:$V0OV?^VSzV8GV9qVS|WS{WJ`WS}WT!W S~W T"W T#W7wW1`WT$WT&WT%WT(WEZW-7=W0COW7T*W8T+W;T-W@T.WB:dWG6QWJK7WaT3Wd:%WfC3WiT0WjDZWT4W?bWT2WT5W7?WT6WT:WT;WT8WT1WTkWG8W0hWIVWTCW>}W<9WG]W4pW:kXKYXF2X7xXBOX TAX TDXBDXTEXTFX!THX$DiX*4.X::fX=TNX@J=XAN]XJ2tXKTJXQA:XRTMXTEcX^:IXbTIXi1vXkE6XpTKXrTGXu?PXyTOX~=NX6-XTPXJhXA}XDFXTRXKOXTSXTXXJ/X:&XJIXTYXCEX2uX>mXT[XTZXT`XTUXTbXTaXT_YTiY JQY TjY2FYTkY"L4Y%TnY70PY8TrY>TsYD1bY`T{YbTzYs=wYtE[YxU!Y}9%YG%YU+Y58YMEYL/YV,YU#YU&YBEYK8YEJYU'YKeY:JY>*YU(Y;PY;OYU,YU-YU*Y18Y4/YU)YLEYI1Y0(Y0yY;QZ0RZ0#Z U2ZU0ZL+Z@U4ZAO,ZFGLZIU6ZZ:'ZbU9ZfIXZjU:ZlU5ZL;ZG^ZU;ZI2Z<;ZU>Z7yZULZUEZUBZCdZUAZUCZUDZUFZUG[ 4r[ UI[ UH[UJ[">n[*UM[,D\[01E[2UK[6UN[>UO[@UR[CUP[EUQ[P;R[QUS[iUX[kB9[pUY[qV#[sUZ[uU[[xU\[zU^[U_[U`[5\[:K[=I[IY[N@[Un[Up[C~[Uo[@#[;{\@m\>0\ Uv\"Uw\$L`\(Ux\-6F\1="\E5o\FU|\H6~\^B0\`EK\a2^=x^9.^I\^Vy^EY^:B^8K^Dm^V~^V}^3G^W!^W$^W%^W(^W)^W*_CP_Do_-W9_/W?_1CF_AW;_HW<_J60_LW=_NW>_QW@_SEv_VWA_WWB_YWC_\W4_]W3_aWD_b7A_fI'_wWG_yLr_|H`_WO_WR_8f_FA_D'_E0_WU_5+_?4_I,_4w_G&_Ci_WX_2w_X-_WZ_G0_WY_WW_9z_W]`/61`1Wd`:Wj`FWq`JWp`KNx`MWr`P62`R91`U=z`YWy`ZWk`u7C`wWn`Wz`W}`X!`X%`2y`X#`X$`W~`X"`8g`M*`45`Ei`X.`OG`X+`X1`9{`@K`W|`;4aX7a=%aX:aX4aL|a L{aX3a6ra0&a46a!X;a'XCa(XBa,XGa4XHaBXJaDXKaSXXaUJia]XWa_XVabK}ac47aeXTag7Eah34akXQa~M]aM+aX\aX`aA~aNyaXaaX^aX[aXZaX_aJ0aF4a7FaXbaX]aXca7{a21aXka48aXia2{aXpaXoaD(b&@ob*Y#b88Mb;LabSBGbUJ'bXBqb[Y,b^Y*b`Y-bcY+bhY.bnJ1bq07bvI^byHcbY1bGDbHdbZ-bJzbDqbYDc YHcD)c5sc64c'YKc(0'c+:Cc/?6c:DrcIB*cUJacWD=c\A\cn?xcr7~cvYYcw>9czFhc{G1cYWcA]c8cYVcY[cGScYUc7!c3]c7GcDOcY^cA_cYacYccB7cYicYdcYfcIAcDscYgcM,cMHc49c0.cYecYbc4xc1gcYhcMIdYld B;dYsdYmdYjdYqdYSd&Ynd(Yrd,HBd-Ekd4Ykd6Yod:7Hd>:qdB@]dNYwdXE&dgYtdiK`doYudvYvdxLNdz@"d7bdY}d;5dYzdYydG2dF5dE1dY{dY|dIodGEd;#d@qdKPd3IdZ%dY~dMJdZ'dZ#dZ$dA`dZ"dY?dZ&dZ!d5qeZ5eZ9eZ7eZ8eYpe#Z;e$Z:e/;YeE8NeHZCeMZFeOIReQ5_e]ZIe^ZHeb4:ec;6efFXel7Iep?terZJeZLeZMeILe:XeHeeHCeEMeNAeZOe:f Z_f >;fL@f:*f0Wf@NfZff@1f 1Gf%=Uf'Kff(:rf->=fzCRf6GfZuf=kfZyfD*fNqf;CfJkfK=f["fZ{fZ~fZ}fZzf[!fF^fZ|f[#f[%f['f[(gPrg7ng M-g J~g I~g[,g1sgY[;gj[Bg|[Ag~>>gHDg[GgHzg[>g[Dg[Cg@OgKmgNSgKgg[Eg[@g8OgBHgJAg[VgI"gDSgM.g[Qg[Pg[Rg[Og[Wg[Mg[Kg[Sg[Ig::h@rh@4h7*h[Yh!9;h"3|h2[^h4@sh83Kh9:,hF[ZhH0FhY[bh\:yh]Kqh_;7hc[chgI0ht[ohv23hw[dh~[uh[ehNBh[lhG_h[th[gh04h[ih9?h4~h\2hK@h\"h?9h\,h@3h\*h4=iOPi[vi\&i0Xi[xi\%i0\?i4FNi6\$i9\;i=\=i?DXiJMLi:gi1]i\TiO1i\Wi?:i\Vi\Ui\Ri\Fi\ci\Ei\Xi\Pi\Ki\Hi\Ii\Qit"i\JiMMiKji\Oi\Yi\ai\Zi\gi\ei\`i\_iDPiAei\]j\[j\bjCtjI8j\\j.\Sj=C.jD\mjG\rjH\vjK66jX5LjY\tj_5!jaFKjb\sjf\ujr\ojx\qj3`jCIj\|j\zj8ij\yj]!j[Xj\{j\}j\~j],j](j[mj]'j]&j]#j]*jO&j]-j6{j])j]+jH'j].j]2j]/kMsk]0k \^k]3k]4k'2$k2M_kC]=kG]kL2NkNC7kP]?kS4?kT]AkY]@k[]Bko;uks:PktNrkx]Eky]Fk{;`k]Gk]Hk]Jk]IkKXk]Mk?#k]Lk]Nk]Ok]Pk]Qk5#k]Xk]YkJlkKhkH{kLSk][k]]k]\k]_k]^l]al;alL1l]bl]cl5$l]dl#]fl$]el4?el7I9l81JlNHFlP<.lU]hlW4@lZ1xlh]qlj]jlpBAlr5bls]rlz7hlD@lFYl]ll]tl]sl7#l2-lKWlBtlKwl]|l]}l2Ol@tlGqlHgl]wlK!l]yl^$l^"l]{lCml^%m MNm ^0m^/m@vm^,mMlmF6m^&m%DEm;3hm=^*m>GImAN.mD>tmE@umY^6mZ^4m\IMmc^1md^3mf1:mi9@mjO2ml3=mnIbmtMam^:m>CmM0m^7m^2m^8mN^mEsmFBm36m1Um^>m^AmNCmMdmNTm^Em=Jm^Gm^LmEqm^Jm^DmC8m^Km^@m?^UnC^\nJL+nM^ZnN^^nV8PnX>En[C9n_^TngM/nk^Wnn^PnoErnr^Snv^YnH.n^on8;n=`n^enN/n9Bn^rn0nn^pn^dn^jn^lnMOn^gnE.n^in^qn^knLGn^fn<"n^~nBlnBZn^vn^|n^znE)n_#n^wo_!o?^yoA^soE4CoT7ioX_/o[_*o\@xo_3cod=aof_3ot_Lox_&oz_%o|_.o_0o_1o4Bo_6o_5o_7o_:oECo_4o_8o_9o_>o__QpL^upQ_SpXFgpc_Tpk2PpoEtpp3%px5dp|<^p}:RpO'p?fp1jp_Vp_Up_[pNup_^p1(p_`p__p_]p_XpK#p_bq _aq1kq_dqJ2q_cq!L5q&>Gq6A3q<>FqIN{qL_jqN@yqU_fqV_kqY1lql_lqnr`9r`:r8$rHHr`ur`;r`@r8Qr`Ar6irA@r9}r`Qs?1nsD9vsE;bsN`RsO`SsW`Usc=Csh`Wsj`Vsp`Xsr3Msu`Zsx`Ysz`\s{`[s8sHIs`cs`~s`is8=t5et`ftM}t N0t"Bvt%`ht:`kt?`mtA`ptU`lti`rtj`uto`gtp`sts:IuaYuaXuaZu<&u:/uEwua[uDKua]uN!ua\uAiuacua`ua^ua_vaav ahv afv agv'ajv0apv4aov;aqvBNEvL4bvRL~vVJJvXavv\auvaawvbaxvpa~vrb!vvb"vb(vb)v;)vb+vb*vb,vb-vHivb.vb/v;.vb3vGVvK_v1Nv1Wvb4vb6vb5vEpvb;vL\vLUvD>vAjvb=v=bw>Jwb@wbFw)bAw7bGw8bHw:D/w<4cw@CewGbIwZbJw[bMwa?gwcFDwebNwfKSwhbKwkbLwybQw~bPwbOwbSwbRwbTwbVwbUwJMw=VwNFwbWwF7wbXwb^wb_wb`wLpwbcwCNwGjw6kw@Pwbex:=x bfxbgx8&x:Ux bix2K$x4GKx:EWx?9\xEbkx]>KxkN2xl9Exo8'xrH#xtbmx|box8kxbnxDvxHjx10x:lxORxbpxbrxJKx@Yxbtxbuxbsx3Nxb{xbzx<'xb|xbwxb}xbxxHXxbvxbyxc"xc!xKaxb~x0kxc$xc#y>Lyc%yACyc'yc&yc(y&bhy:<(yMyhIyHkyAEycAyc@y>Ny0\z5)zcCz Dxz cDz@GzL-z.P{cx{cy{E+{cz{ 3^{%?Z{&Id{(c|{,Bh{3cw{5c{{6c}{9:{{]d8{ed({gd*{ld-{nd.{pd+{qd,{td){ud'{zd!{JO{2U{d5{d2{d7{d6{C={@}{H"{d>{H${@a{d;{HO{d?{JS{C[{d:{d<{d={d@{R}::0}?e)}Ve-}[e6}^9J}f5k}he0}ne1}y8(}}e8}e5}e7}e4}eF}eB}e<}eE}e>}6[}Hl}Am}NP}=o}en}eH}eJ}JT}4K}LK}0^}eM}N}}eL~1o~Fl~eO~eS~G{~&=D~+K%~.=L~1eT~2e`~5e\~AHK~Ce^~FeY~JA!~K7R~M=+~mKz~p7+~er~es~e{~e|64L8e}:e~Ef!Xf)_f*`f+nCVpH3r=pf6f9f8f7f:72A"5Af>f;f<f?f@f=1)2'fBfCfDMb=,fFfE?ifGfHfI4e4MfJfKK]Mc fO <)BQfPfS!fT(fU3<*6Lm;fW=C??fVFfYJfXRfZV@;Xf[Zf\hf_fk>SI*flfj4N8T;hHnGY0_ftC@GXB[fv8U0}fqfxfyF96;g&G=;i5Sfz#f|)f{/f}1C&3G>9D1>g#Fg"Kf~N?U_g5eg)fg*kh0G|Mih9hOhG?{5F6]hB2[>ThE:ZEQhJJnhAhHhRhChDF:hIh@ hN"hM)Gk*hT,h_13~5hb8hPU=/<,LXIGhghphZ3whfhmC_hnhohhhkK)O!hshzhrUi$WIyXh}ZhVch|mi+wi1~i2i%Gvi/i'i)i3i(i,1rFei-i0i&i7i5ONi4Mui6i8i9i i@i?]1]"iE"iD-Mv/b<0iF?iGMiHN8WP5TTiJUQ]Z5u\N:^6s_iKgiLkCnqiMyFz{0:iN;=iOGBiUiXiTiViWMWk)5,k,k.k2k34Qk4k5k6k73Qk8k9k:2r?(k;k7W ?V kAF$k@71kBkC>Y#7m%kD*K,-@_15v3Lu4AJ6kEAkFFkIHkJ[kG^;l`1SbkNc7Xf;n|kKkPkQkO8XM@;oG'kT@@CBM6kW8l@bFIC/2]Hp5CD4k[kYCLNJO@k]M!;pkak^ke=t8Aki khFfkmkb&kr(ku+ks,I53kp96`>ktAkvIkzLkwNkyOkxVk{_l!f7Yw8n}l%l&;>ZNl'l(=2l)l*l+l,l-7C+:l.?l0Al/FF&Hl1JK-Ll2Nl3Pl4Ul5ZFZa>]bl6l:lmDmG<43SmJ :\ mI mR&mS)GZ*NX/=43mT8M"9mV;mU>mY?MAIm[Wm^\m_meR!Q~mhC)1*Kx?W7^6aJVmimkmoDIB`AwF(mp5U'mz.Ba1=52?Jn'AF[B?kECY\B=^n*`1saALc8/eMZhn+iE,rn/mnn5n4n6M8FaK.n774n;n_nRnPnQnTnS>znUnVnWn[E#n`nan_nc F_3Cngndnfnb)oO,ne4Nk78Z?noDE4EnjHnmInkKnpPnqWniZnv[1t^nhbH-dnlf>`q9[~KH6d=FF{"o"#o$&6S(IE2O?5o&:o%;o'Dn}KFiMEUTDWVo,[CC\o(`o)l7-no+u80|o*~>a3yo0:?AyDJ3;o1o7o:o9E-o86@o;o5o4o?o@oAo>o=!oE+oC5oD6oB8Bx:oFAoGDoIZoT[oJ^oM`oKboLjoNpoPuoQwoRwD9LgoYA.1<4W4Vo\o]o^o_oc1\ofoeodogoj0GoholokopoqosorIl!ot(ou*:e.ov/ow2KI;AK?0$@BKBoxDImjGflp%p1"}M[6yN47(1#NYp+n.p*;(p:j-RV?wp8N%Fq1+@c<6J71@NmMkp;EE<{pCpDAz2b$pE'L8*pF0pG2O*8[19pH=pI>pJBpNDpKFpLHpMIpOR@DVLwY@E\pPqpWt7$ypXzp\|pZp[p^0Hp_p`>dpa5GpdpcpbkqJ\pepfpgphpipj4ZpkplG#1$ ps?|NN7[!pv$pu,KK-F,41PFpyT4iU82X4j[E?^N`g8\kp|Iwq$q%q&q'q)q(q*HtfL?)52q+0{0;q-L_ q. M\ 1Bq1$q5(4[,q7.q8=q9>q:Bq;Eq=IqCZFkqIG}2oqMqKqLqJqXqOqPqQqRqTqS=YqUqW53qVA{83qY(BM+qZ0F-7q[>q`@q^Bq]Cq_Eq\MqbUqaWqdZ6C[qc_qebqfdqheqg9|qlqm3r=r>r?r@rCrArD8qrBrErFrGrK;*Bd7_03rZr\!r_$r^%r]>rdRKpWNZZre`rfgrgvrhxriD;rjH7rorkrlK1LDFPrp2*ryrx1urv#ru&rs;9c>r|?r{ArzDrwFr}Hr~Ps%Qs$Ys&ds#lK2os+rs'zs,s)s(7\s-s.s/s*rts0Das4s5s3s2s8s1s6s7s:s9sOIs?s@sAsBusCx84ysD}sEsmJsnKc7NlZOpmRsoTspjsxlswrszvs{wsyN6s|s}cTs~!1!orQ ! 2!!?'","C%%I%%M#%%%T00WA00m0000NN 8Nk _kjk kk kk kk >lBl ]lbl }ll ll ll ll ll )m+m 2m8mwmym mm mmmmn nn&n")n/n0~nn7nn<noAooFmopoKooOooVooZoo]ppfpplpppbqiqsqq{qq~:r@rFrLr}rrrrrrrrss)s/s2t6tYtdtttuu uu0u3u7u~T~^~f~j~y~~~~LUgkuy^boـހ  PUxz %؁ځ+.7).R39XXZ_nxbmтԂvۂz19 aciqɄфHKhj  !#]c}ň^`"'.:<1PU4is:EˊϊNڊSa!hX\tktyjlx|Όڌ挿pt GLȎ͎ BFLN_d$*-9 #=59VGY[monuqINƑёۑ瑓+/֓ؓQS|ԕؕKP[frzΖ ^m*:=BL7=QKOXot]chk!pPRux|ęșЙҙik%*.2AEMQ䛳 -29;FH (,\a̞Ԟ؞_g ]!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&!'"'#'$'%'&'(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@'A'Q'R'S'T'U'V'X'Y'Z'['\']'^'_'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o'p'q'W'=!B!F!G!H!I!w"x"+","*"-"J"K"A"@"i"j"!(,("(-(1(%(0('(<(2()(>(!!"!#!7!9!:!;!R!S!T!U!V!W!X!Y!Z![!)"."L!M!!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$+!,!5!6!!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%&!0;e><2TI?M"P/1n3#P$@BRV5:J]40Cg<'P7GcFC83KIi*Ph>+P52e6p8iL-P;N=MhA/Pv;sF2P>1_8^8f0KOJO3:!03P4P5P4K6Pr8g0rK|5}5~5bDPB?PUIg@8!@PBPeBaNJ0DPK0`8l4zI2HY5L0cD;=4:$MNB?2IP>MEPGPn:HP$U%UyKnIt887%Bd2/BZP]P[P]JXP.?sK_P`PiPoJMCePq7bPjPdPQNkPAOqPuPN0E<&BeDv6yP1;wH{P~P#Q}PD:}=75.Q/Q/2t<2Q1Q0QVP3Q5Q8Q7Q9Q:Qt058;7<={C$6h@w8n9L{Qd3uQsQOA`7|Q-Nu=XEe9"R#R0F(R*43L!>)RgJ-R*@*RP6+R+40R1R[<{8^LhLwFqJ2R3R8R=2LK|:9R>R$Ih6e0?F?R==i@AR@R#>a8CR>H\H4BnB(6nF1CnGNKFRj@HR,1u0m4(BQ5qMKR72PROR_?91tK5:Z5'MPA?H}\RZRD2fB8L!9yMGE~8fR^4aRbRdR[5a?-JcR_Rc8`R$OrJhDb8p9#LjRsRnRqRF8?Lp:BOkRiRuRpR%Sv0$S%0JI"S|RwR}RH:'S(S%>iKoB6S&>IS"9?S}CCS31o4dS`ScSsSqSoSrSxSEQ|TBT!ta1sJl>HEIEdE9HMDWTQTTTVTh9\T^T]TN;Q?TAcT<@m0dG[DeTdTfTgThT~T%C}T3J"U!G^HQL90H8+@Q0H2bUFMdrUsUS0:BR?tU3F.>/>uUyUzU\<,?tFT?xH"GI6{UOF02S;}U"V!V}6~U8E;Ad4-V(L/V1V_4.V0V3Ve26V;VCV=V33>VGVFVEVAVcA)98:*9p5J8aV&LCGbV+9eVdVgVkDhViVo>kVjV}IsVpV(HqV>JrV34?J/GtVuV,944vV88DM)Mv4xV#D-91>lDyJ9EC0n=/9GMzV{VQG|VwN-O#W@I3>'W&W"W-W+W,W.Wd1nD/Wz7v26G0W{F[J1W.O2W@J5W!P1P0F1FWJW}1,@IWHWB7TBNWLWKW'Ne8y=MWLE>=@FQWPWSW|I[=TWyHVWV;:K;K~1[WcWiWaW\EfW]I`WeWgNW;UB^W^5hW-@e1bWx2gWlWvWtWoW_Wz2sWuWQC(:82mWxWwW36)Bf3=<'XpD{WY1&X:G-0aH\W,X0XeL)Xp>/XWFT0*X(XZAFB=X[A8X5X6Xf<9XX?XU0FXIXAXEX@X|;DXVB292X5?NXOXPX8NSXV0UXLXRXYXD7MXjX):hXfXeXlXdXnXsXqXgX|7rXvXuXwXtXxXyXzXjJ|X{X?=.@f2|2}X?0L@~XCl!Ya7"Y$Y:5%Y&Y'YWB;50Y7Y6>^M3Y4Y8YjE5Y39^@FY4HrBuK;Y!2jC4C>YEY@YGYCYBYoGAYRGr5H3g3!?IYNYJY}7OY";i9&==Y};LYX;MYD0THQY^A+;RYTYPY{JN<`Y_Y]Y+NN:5CZY\@59d?f1Z@Z?ZAZ~269|J/@EZDZTGGZ560@(E_IKZ8J]UF@QZB;GC[;7?UZSZVZ9NTZ[Z\Z{4|F6Cl5];aA\=00eZcZdZ&[jZ~;89hZlZkZpZmZ"3nZoZUHaIJ7rZsZwZK2tZvZHCE0xZl=$[KMxG)[J6H199*[+[q=bAXR>A=AXBG:s:?D-[/O>K+D.[|4/[0[ZL$LvK\K%;2[QK4[7[6[y4{MI0`:]L<[=[hM:9UG?[lE^ZbZO5GGL2^;HOF[u?L[J[M2H[N[T[U[pG?K;4w@@=lCxLF\?A5\B\A\oF@\jFD\7\H6:\]=`G<\K64\6\3\0OZ39\C\53N\=9HDdAL\G\h\uHn\i\l\f\d\@>OLx\k\"8#2_3A>p\w\y4C]D]_;5@!:pIbJDO^=l9SCi]%5p]n]k]`M;:m]o](J}L!^#x]~]h176u]z]"KHGc5%E#^YBv]K1L1?9)^'=.^-^(^+^$3;?5^H^B^?^F^M^|0C^N^.:;^I^:E6@i3Q:D>=^B=R^m=:8a^[^t5OEV^_^/02192X^,BO^Q^A9QO><~Kc^j3h^m^n^x^`^y5:It^"_i1fA,_,D)_YD(_'_-_!@$_c7yB2_;G;_j9(GtM=_A_uB@_+_K_J_M_TFO_Y_:C\_W_Z_@EY0i_aGe_h_H>QHgA8;|_{_$?YRlL+`,`VA$<-`.`/`RJGH0`WG#83`T:5`4`86=`?`>`C`D`B`F`,CE`5ObGTLJ`L`DNO`vC-G%8N`j`VNW6|HJGo`j8M1q`p?n`\Nt`$t%a'a(a&aSI*a)a,a+a-a.a0a/aDE3MC9=?KC4R.Dh26a:a9aBZ&38aZ0*H1N=a;a\C&@-I?a,NM7@a>aVHAaBav>GaDamFCaEaFaIaHa%IBAAA?5WahHQaSaUa>?VaTa@b}HG4)8Cb??2LBbDbEbYb]b[b\bZbab7Lbb;Cdb:6VEV:N5qb73lbjb*c)c@5'5c;1c0cDA-cK=@?.c,c*G3cIcX6=O5AR2wD!J;cbCkAZc\cYc[cg5RM_cv3bcacec^cfc)NgchctTjcickclc5NmcopO>ncocW=8Fpc%6?Q]C3<&d.I&HyEZ6%d#d5H~c^C{EzEv:sG'L;;0d9d4d3d/d1dI4FFEdDdBdURIdCdUd|NmJZdVdR@Yd[dN6)7cdidgded!4Q>jdfdndmdldkdvd5JlAG9wd!esLH9~dc=#eS8HA%e+e&eP7.e2ek7mM<03e}E/e,e(3d@Q73B9enA@ez<]0;eCeGeK9VLVD=e:e>C?e=0JL~@DeIeKeyDNeVePeWeJO)H*8CKofmfN9O9i0h:rfufpfsf&K<6H@FO.LwfT@eI%g$gP9SO2D"J#A\B/g0g,ggDgCgFgJgKg11LgMgNgOgPg=6*ZQge@RgKehjhsAVMch83ihlh,LNJ"Lyhxhthuh61~hV>I<#iOO"FsI&A*i';E?07tLyLr=s==iBitAc2RiSiPiQi[i_iHIZHbidieijimi8jjBjAjZiW>LjU9Mja0SjPj^6OjVj_j[:vNajbjuAljX>jjgMgjij=@~?~j_6}j$JFG*k+k+8k;AG-kP30kwM/kF?1k?kwB-5G?pCZ>>:BBHk[>>Im;MOMkLk'AM5CO:3\>?@SkXkm8UkVkRkA@R4Zk[?\kgk5Dfkckkkdk`k|D_kzBEKZ1b0%Flknk,8jkV9U$lk9.P7l8l?I9lAl;l=lFK>l?l-3gDiIb:W9OI_2NHElS4U@DlIlyCcLGlHl.5JlcG_BqH=EFlGKl2Ll(OBDEOq;Kl1B\l(AOl?;r;^>eG-8NlMljIQlRlX9PlSlTlVl#BUlf4XlWlYl[l]l^lvAalblkIsltlYMvlwlyl!m%m"m~l#m9mH?;mm6mAmV*F.p,p-p/p0plN1p2pI@;H}?g4:Mm28=[85p4ps;6p3ppnN9p@pBpAp?psHQpSsLLRpSpTpW3VpY?s3Yp]pnp;2qpppA6GJ:D":`9g=\?rpBMh4RH\FwptpQIjMxp{pjB[3\3zp}p~p!q#q"q,q,R;]SHt;0K~>A;/qn20q3q4q6q2q>q@qAqsFnrmr{3rr2<)2-1!s"st99L;skBm:LsJs!% E!& D!0 s"2 l!3 m!; ("!n!+!r"!M"!N""O""_""P""`"":" ";""]!"e""g""g! "\"4"h!5"h"="f"R"b"`"b!a"a"f"e!g"f!j"c"k"d"">""?""<""=""]"#^" %#(%.(%$(%/(%&( %7((%9(+%4(,%((/%8(0%=(3%3(4%*(7%:(8%?(;%5(<%+(?%;(B%@(K%6(%#"%""%%"%$"%'"%&"%!"%~!%{!%}!%|!%~"&z!&y!@&j!B&i!j&v"m&u"o&t"0A!Nl0NzCN7<Ng>!N>N&NBJ*N$P-NfC1N%P2Nz66N&P?N(PBN)PCN5GENW5bN&VqNpMsN}F~N%4N55N,PN8PN9PNM?NAPN>2ND6NgCNo7NCPN$GOk4Oq2OgPOAE/OlG0OFP4OQeQ~FqQ&6|Qs7QCQQDQQbFQ_1Q'4QXQQERQ_QQ`QQ.3RfQR:7ReQRsNRi=$R=H%RLJ'RgQ)RxM*RhQ.RiQ0R~E3RjQCRfDDRmQGR'BTRqQVR6K[Rd9^RpQiRtQjRrQ}RwQRvQRD3RxQR}QRzQRyQRONRy8RC2RtNReNR+OR%RRz8R$RR/3R&RRVKR!S)6#S:R*S[H/S;R1SSTi:T13TyRT&STw0T/ST-ST,ST/ET.ST+SU41U6:U0?U)SUbEU*SU"0.U4S/U#M1U'>3U:S8U9S9U0S>UCB@U1SLU3SOUdLSU<7VU7SWU8S\U5S]U;ScU2S{UAS|UFS~UBSU=SUGSU1AUD1UNSULSU'TUQSUKSUOSUMSUL;UPSUSSUXSUVSUUSV2C VE2VWS)V^2/VbS1V|>2V^S4V\S6V]S8V_SBV=1LV9ANVYSPVZS[Vz3dVaStV.JxVUFzV8HVfSVeSVE3VgSVjSViSVhSV9GVkSVlSVnSVmSVpSVtSVuSVvSVwSVs2Vx0VDCVySV$:VO0V^?VzSVG8Vq9V|SW{SW`JW}SW!T W~S W"T W#TWw7W`1W$TW&TW%TW(TWZE-W=70WOC7W*T8W+T;W-T@W.TBWd:GWQ6JW7KaW3TdW%:fW3CiW0TjWZDW4TWb?W2TW5TW?7W6TW:TW;TW8TW1TWW8GWh0WVIWCTW}>W9X[TXZTX`TXUTXbTXaTX_TYiT YQJ YjTYF2YkT"Y4L%YnT7YP08YrT>YsTDYb1`Y{TbYzTsYw=tY[ExY!U}Y%9Y%GY+UY85YEMY/LY,VY#UY&UYEBY8KYJEY'UYeKYJ:Y*>Y(UYP;YO;Y,UY-UY*UY81Y/4Y)UYELY1IY(0Yy0YQ;ZR0Z#0 Z2UZ0UZ@Z4UAZ,OFZLGIZ6UZZ':bZ9UfZXIjZ:UlZ5UZ;LZ^GZ;UZ2IZ;UZy7ZLUZEUZBUZdCZAUZCUZDUZFUZGU [r4 [IU [HU[JU"[n>*[MU,[\D0[E12[KU6[NU>[OU@[RUC[PUE[QUP[R;Q[SUi[XUk[9Bp[YUq[#Vs[ZUu[[Ux[\Uz[^U[_U[`U[\5[K:[I=[YI[@N[nU[pU[~C[oU[#@[{;\m@\0> \vU"\wU$\`L(\xU-\F61\"=E\o5F\|UH\~6^\0B`\KEa\H^x=^.9^\I^yV^YE^B:^K8^mD^~V^}V^G3^!W^$W^%W^(W^)W^*W_PC_oD-_9W/_?W1_e<5_%D7_/68_:W<_+I>_FCA_;WH_WQ_@WS_vEV_AWW_BWY_CW\_4W]_3Wa_DWb_A7f_'Iw_GWy_rL|_`H_OW_RW_f8_AF_'D_0E_UW_+5_4?_,I_w4_&G_iC_XW_w2_-X_ZW_0G_YW_WW_z9_]W/`161`dW:`jWF`qWJ`pWK`xNM`rWP`26R`19U`z=Y`yWZ`kWu`C7w`nW`zW`}W`!X`%X`y2`#X`$X`~W`"X`g8`*M`54`iE`.X`GO`+X`1X`{9`K@`|W`4;a7Xa%=a:Xa4Xa|L a{La3Xar6a&0a64!a;X'aCX(aBX,aGX4aHXBaJXDaKXSaXXUaiJ]aWX_aVXba}Kca74eaTXgaE7ha43kaQX~a]Ma+Ma\Xa`Xa~AayNaaXa^Xa[XaZXa_Xa0Ja4FaF7abXa]XacXa{7a12akXa84aiXa{2apXaoXa(D&bo@*b#Y8bM8;baLSbGBUb'JXbqB[b,Y^b*Y`b-Ycb+Yhb.Ynb1Jqb70vb^IybcHb1YbDGbdHb-ZbzJbqDbDY cHYc)Dcs5c46'cKY(c'0+cC:/c6?:crDIc*BUcaJWc=D\c\Ancx?rc~7vcYYwc9>zchF{c1GcWYc]AcxcVYc[YcSGcUYc!7c]3cG7cODc^Yc_AcaYccYc7BciYcdYcfYcAIcsDcgYc,McHMc94c.0ceYcbYcx4cg1chYcIMdlY d;BdsYdmYdjYdqYdSY&dnY(drY,dBH-dkE4dkY6doY:dH7>dq:Bd]@NdwYXd&EgdtYid`KoduYvdvYxdNLzd"@db7d}Yd5;dzYdyYd2Gd5Fd1Ed{Yd|YdoIdEGd#;dq@dPKdI3d%Zd~YdJMd'Zd#Zd$Zd`Ad"Zd?Yd&Zd!Zd<5d/Zd(Zd3Zd2Zd1Zd4Zd6Zdq>e5Ze9Ze7Ze8ZepY#e;Z$e:Z/eY;EeN8HeCZMeFZOeRIQe_5]eIZ^eHZbe:4ce6;feXFleI7pet?reJZeLZeMZeLIeX:eeHeCHeMEeANeOZeP f_Z f;>f@Lf*:fW0fN@ffZf1@ fG1%fU='ffK(fr:-f<>/f'@zfRCfG6fuZfk=fyZf*DfqNfC;fkJf=Kf"[f{Zf~Zf}ZfzZf![f^Ff|Zf#[f%[f'[f([grPgn7 g-M g~J g~Ig,[1gk<=g`5?g3[Ag5[Fg8[Igy?Vgs>Yg;[jgB[|gA[~g>>gDHgG[gzHg>[gD[gC[gO@gmKgSNggKgE[g@[gO8gHBgAJgV[g"IgSDg.MgQ[gP[gR[gO[gW[gM[gK[gS[gI[g::hr@h4@h*7hY[!h;9"h|32h^[4hs@8hK39h,:FhZ[HhF0Yhb[\hy:]hqK_h7;chc[gh0Itho[vh32whd[~hu[he[hBNhl[h_Ght[hg[h40hi[h<9hk[hj[hf[hq[h?>h~4h2\h@Kh"\h9?h,\h3@h*\h=4iPOiv[i&\iX0ix[i%\0i?\4iNF6i$\9i;\=i=\?iXDJiLMig:i]1iT\i1OiW\i:?iV\iU\iR\iF\ic\iE\iX\iP\iK\iH\iI\iQ\i"tiJ\iMMijKiO\iY\ia\iZ\ig\ie\i`\i_\iPDieAi]\j[\jb\jtCj8Ij\\.jS\=j.CDjm\Gjr\Hjv\Kj66XjL5Yjt\_j!5ajKFbjs\fju\rjo\xjq\j`3jICj|\jz\ji8jy\j!]jX[j{\j}\j~\j,]j(]jm[j']j&]j#]j*]j&Oj-]j{6j)]j+]j'Hj.]j2]j/]ksMk0] k^\k3]k4]'k$22k_MCk=]Gk<]Ik>]LkN2Nk7CPk?]Sk?4TkA]Yk@][kB]oku;skP:tkrNxkE]ykF]{k`;kG]kH]kJ]kI]kXKkM]k#?kL]kN]kO]kP]kQ]k#5kX]kY]klJkhKk{HkSLk[]k]]k\]k_]k^]la]la;l1Llb]lc]l$5ld]#lf]$le]4le?7l9I8lJ1NlFHPl.mIGAm.NDmt>Emu@Ym6^Zm4^\mMIcm1^dm3^fm:1im@9jm2Olm=3nmbItmaMm:^mC>m0Mm7^m2^m8^m^NmsEmBFm63mU1m>^mA^mCNmdMmTNmE^mJ=mG^mL^mqEmJ^mD^m8CmK^m@^mnU^Cn\^Jn+LMnZ^Nn^^VnP8XnE>[n9C_nT^gn/MknW^nnP^onrErnS^vnY^n.Hno^n;8n`=ne^n/NnB9nr^nn0np^nd^nj^nl^nOMng^n.Eni^nq^nk^nGLnf^n"o!_?oy^Aos^EoC4Toi7Xo/_[o*_\ox@_oc3doa=fo3_toL_xo&_zo%_|o._o0_o1_oB4o6_o5_o7_o:_oCEo4_o8_o9_o>_o<_o?_oB_o9^oiooE_oI_pG_ pC_ pD_pH_pF_pNIpN_&puC'pmB,p%@0pP_2pR_>pQ_Lpu^QpS_XpgFcpT_kpP2optEpp%3xpd5|p^<}pR:p'Opf?pj1pV_pU_p[_puNp^_p(1p`_p__p]_pX_p#Kpb_ qa_qk1qd_q2Jqc_!q5L&qG>6q3AIq{NLqj_Nqy@Uqf_Vqk_Yql1lql_nqQ<}qz@qo_qg_q'7qm_qPMqp_q&tqO=qq_qr_q.Gqt_qu_q3GquEqw_qy_qUNqv_qx_qm1qs_q[Sqz_q}_q!`qn_q~_q"`rzG r#`r$`r%`(r&`*r^D,r(`-r'`0r)`2r*`5r_<6rcIRr-DXr1`Yrg2[rm5]rFL_r6Lar42br4OgrRKir*Jrr7@tr2`yrCFr6`r7`r8`r>5r9`r:`r$8rHHr<`ru>r;`r@`rQ8rA`ri6r@Ar}9rmsQ`?sn1Dsv9Esb;NsR`OsS`WsU`csC=hsW`jsV`psX`rsM3usZ`xsY`zs\`{s[`s<8s(NsL6s&2sj6sa4shNs^`s``sa`sQ2s]`s9;sADs_`sd`sn7sIHsc`s~`si`s=8te5tf`t}M t0N"tvB%th`:tk`?tm`Atp`Utl`itr`jtu`otg`pts`st<:vtv`~tw`t~Mtx`ty`te`tz`tD4t%uYauXauZau&DvjAv=bvb=wJ>w@bwFb)wAb7wGb8wHb:w/Dkx2NlxE9ox'8rx#Htxmb|xobxk8xnbxvDxjHx01xl:xROxpbxrbxKJxY@xtbxubxsbxN3x{bxzbx'y%cyCAy'cy&cy(c&yhb:y(<yR<@y+cAy77Py4MZy/ceyM>hycykHyEAyAcy@cyN>y\0z)5zCc zxD zDczG@z-L.zo<1zJc2zp07zMcFzTKIzPcWzOcizSckzO3pzUctzj7vzf5yzVczzu6}zWcz|@zMFz`@zu:zXcz"7z]cz&7z`cz.1zccz(Czqcz{xc{yc{+E{zc {^3%{Z?&{dI({|c,{hB3{wc5{{c6{}c9{{:]{8de{(dg{*dl{-dn{.dp{+dq{,dt{)du{'dz{!d{OJ{U2{5d{2d{7d{6d{=C{}@{"H{>d{$H{a@{;d{OH{?d{SJ{[C{:d{:}0:?})eV}-e[}6e^}J9f}k5h}0en}1ey}(8}}8e}5e}7e}4e}Fe}Be}e}[6}lH}mA}PN}o=}ne}He}Je}TJ}K4}KL}^0}Me}}N}Le~o1~lF~Oe~Se~{G&~D=+~%K.~L=1~Te2~`e5~\eA~KHC~^eF~YeJ~!AK~R7M~+=m~zKp~+7~re~se~{e~|e6L48}e:~eE!fX)f_*f`+fnVCp3Hrp=6f9f8f7f:f27"AA5>f;f*IlfjfN4T8h;nHYGÀ_0Ātfƀ@C̀XG΀[BրvfU8}0qfxfyf9F;6&g=Gi;S5zf#|f){f/}f1&C3>G91D>#gF"gK~fNU?_5ge)gf*gkph0h|GiM9hOhGhŃ{?ʃF5̃]6΃BhӃ[2փT>؃Eh܃Z:߃QEJhnJAhHhRhChDh:FIh@h Nh"Mh)kG*Th,_h1~35bh8Ph/=,6U$iWyIX}hZVhc|hm+iw1i~2i%ivG/i'i)i3i(i,ir1eF-i0i&i7i5iNOɅ4iͅuMυ6iЅ8iՅ9i܅i @i?i1]"]Ei"Di-vM/@WM)k,5,k.k2k3kQ44k5k6k7k҉Q3ډ8k܉9k݉:kr2(?;kkW7 V? Ak$F@k17BkCkY>#m7%Dk*,K-_@1v53uL4JA6EkAFkFIkHJk[Gk^l;`S1bNkcX7fn;|KkPkQkOkX8@Mo;'GTk@@BC6MWkl8b@IF/C]2pHC54DŠ[kĊYkNJLCҊJN֊@O]k!Mp;ak^kekt=A8ik hkfFmkbk&rk(uk+sk,5I3pk9`6>tkAvkIzkLwkNykOxkV{k_!lfY7wn8}%l&l>;NZ'l(l2=)l*l+l,l-l7+C:.l?0lA/lF&FH1lJ-KL2lN3lP4lU5lZZFa]>b6l:lEDmGm4<S3Jm \: Im Rm&Sm)ZG*XN/4=3Tm8"M9Vm;Um>Ym?AMI[mW^m\_mem!R~Qhm)C*1ďxKŏW?Ώ^7яa6ԏVJڏimkmomID`BwA(FpmU5'zm.aB15=2J?'nA[FBk?EYC\=B^*n`s1aLAc/8eZMh+ni,Er/nnm5n4n6n8MaF.K7nY<8n9n:n!Ej0ʐY9ΐ:Oې>n47;nRnPnQnTnSnz>UnVnWn֑[nؑ#E`nan_ncn _FC3gndnfnbn)Oo,en4kN7Z8?onD4EEjnHmnIknKpnPqnWinZvn[t1^hnb-Hdlnf`>q[9~HKd6F=""o#$o&S6(EI2?O5&o:%o;'oD}nKiFMUETWDV,o[CC\(o`)ol-7n+ou08|*o~a>y30o?:yAJD;31oÓ7oȓ:oГ9oѓ-Eݓ8o@6;o5o4o?o@oAo>o=o!Eo+Co5Do6Bo8xB:FoAGoDIoZTo[Jo^Mo`KobLojNopPouQowRow9DgLYo.A<1W4V4\o]o^o_oco\1foeodogoÕjoǕG0ʕho̕lo͕koܕpoqosorolI!to(uo*e:.vo/wo2IK;KA?$0@KBBxoDmIjfGl%pp"1}[My64N(7#1YN+p.n*pі(;Ֆ:p֖-jٖVRۖw?ܖ8p%NqF+1c@6<7J@1mNkM;pEE{<CpDpzAb2$Ep'8L*Fp0Gp2*O81[9Hp=Ip>JpBNpDKpFLpHMpIOpRD@VwLYE@\PpqWpt$7yXpz\p|Zp[p^pH0_p`pd>apG5dpcpbpqk\Jepfp×gpƗhpȗip˗jpӗZ4ܗkplp#G$1 sp|?NN[7!vp$up,KK-,F4P1FypTi4U28Xj4[?E^`Ng\8k|pwI$q%q&q'qØ)qĘ(qƘ*qۘtHܘLfߘ)?25+q{0;0-q_L .q \M B11q$5q([4,7q.8q=9q>:qB;qE=qI3ZCkFIq}Gՙo2ؙMqۙKqݙLqߙJqXqOqPqQqRqTqSqY=UqWq35Vq{A38Yq(MB+Zq0-F7[q>`q@^qB]qC_qE\qMbqUaqWdqZC6[cq_eqbfqdhqegq|9lqmq<3nqoqĚq?ϚpqњqqӚrqԚsqؚb9ޚtqߚuqvqwqxq|q~q!r"r#r$r%r"&r#'r;xd<45TbKX6rZ{5o%Ot7r9r>0=r>r?r@rCrArƛDrɛq8ʛBrϛErћFrқGrԛKr֛*;ۛdB_730Zr\r!_r$^r%]r>drRpKWZNZer`frggrvhrxir;Djr7Horkrlr1KDLPFpr*2yrxru1vr#ur&sr;c9>|r?{rAzrDwrF}rH~rP%sQ$sY&sd#sl2Ko+sr'sz,s)s(s\7-s.s/s*str0saD4s5s3s2s8sĝ1sƝ6sϝ7sӝ:sٝ9ssIO?s@sAsBsuCsx48yDs}Es/msJnsK7cNZlOmpRosTpsjxslwsrzsv{swys6N|s}sTc~s1!o!  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLM000 000@>?00000N0000  \0 \ & %     00;=[]00 0 0 0 0 0000 ""`"f"g""4&B&@ 2 3! &&%%%%%%%%%%% ;0!!!!0"" """""*")"'"(!!""" "#"""a"R"j"k""=""5"+",!+ 0&o&m&j !%!"#$%&'()*+,-./0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 !"#$%&'()*+,-./012345Q6789:;<=>?@ABCDEFGHIJKLMNO%%% %%%%%,%$%4%<%%%%%%%#%3%+%;%K% %/%(%7%?%%0%%%8%BNUZ?Tac(Y"uzP`cn%efhW'ebq[YІ{}b}b|[^c fhHǗgONO OMOPIVY7YZ\ `aapfipuOupy}}ÄcUzS;NNW߀xNXn8z2(/QASpTTVY_m-bpT S[p–So\zNxn&VUk;YSmftܕVBNKO SU[0_qf fhl8lm)t[vzN4[`muvʙ`iSQWX0YD[^`(cclopqqYqs?~vх`[XielZu%QY.Ye__bej*k'ksV,\l{Q\KahvraNYOSx`in)zON SNOUO=OOsRSV YZ[[yfggkLlpksyyz<{ۃwӇfV)NO\brYu;傽řNOVXJX^_`*``babbe9AffhmwppuLv}uQRYT[]ahimxˈWrmlWgΒRVT^bdhkSlWo"ooEtuvw z{|!}6f̌Qeә(N8T+\]svLw<\ TXOOSqUVhWYG[ [\^ ^~_cg:eeghhj_^0kll}uyH[cz}_w̏Z/__`hjtZxwN^NO|OPPQIQlRRRSSTTUWQWY}[T[][]]]^x^^^_`RaLbbce;ffCfgmh!hil_m*min/nu2vxlz?|}}}^}T*RLaʑuqx?M؝;R[RSTXboj_QKR;TJVz@w`sDo pu_`ښrۏkdNVWdXZZ`haffh9hmu}:nBNOPSU]o]]gltsxPWP^c+PPQgTX^Y[_ibMch=ksnp}rxx&yme}0܈ RdW(gPjQWB*X:iT]WxO\RJTd>f(ggz{V}"/h\{9SQR7[bddg-kvcLvfRN PS\q`dech_qsu#{~ۑxefkNNO:OR:SSUVXYYY[P\M^^+_`ce/[\eeegkbk{lsEyIy|}}+󉖊^ifnjܖ̘koNOtuxy: 3ꄔlP_X+z[NSWY1Z[`nou[{Prg\aJ~Q\chfeqny>}ʐnǐPR\:gSp|r5Lȓ+[_1`N;S[bKg1krsz.kRQSTj[cj9}VSTh[\1]Oabm2yy}B~MҁFrt/1KlƑNOOQESA_bglAn sc~&͒SY[my]~.|X~qQSO\f%wzQ_eiokmnodv}]uQRb@ffn^}rfRSYs^_`UdPQRS SGSTUFU1VYhYZ<[\\\\^^^_pbbbccwff f-fvg~hjj5lmn nXq d_xRbcdBb-z{}v INQHSCS`[\\]b&bGdhh4lmEmgo\qNq}ez{}~Jz9n΍xwRMUo8q6Qhy~U|VLXQ\cffiZruuyyVy|} }D4;a PRuSSP UXYOr=[\dS``c\cc?cdef]iioqNuvz|}}aIXlōpmPXaӅ5 OPtRGSs`ocIg_n,O\^e}SRQvc[X[k\ d gQ\NYY*lpQU>XY`bSg5iU@Ě(OSX[\^/_` aKb4flnހ΁Ԉ.ۛNSY'{,Lnp'SSUD[bXbblot"8o8QSSOFTYj1]zꏿhڌ7rHj=N9SXVWfbcekNmn[pwz{}=Ɔˊ[VX_>efjku7P$wW0_`efzl`uznE{u\z{QĐyz6Zw@N-N[_bft6x4ZFuO^bceWgovrL̀)MP WZhisqdrXjyw)O/ReSZbglv}{|6fo r~Q{xr{{Hj^auQu`QkbnvzOpb{OVzXY䖼O4R$SJSS^d,egl>lNrHrsuT~A,錩{đqic=fiujvxЅCS*SQT&Y^_|`bIbybekluvxy}w^j |8P\>_gkt5w ;gzS9u_f_<_ub{Feg llpx2~+ނ *JҘlNONPRVWJY^=__b?fgghQ}!~2T ,SPS\Xdg4rgwfzFRlkX^LYTg,QvdixTWYf'gkTi^UggRh]NOSbg+lO~mNabno+Tsg*E]{\[ƇnJzY|lw RY"q!r_wۗ'ai ZZQT T}fvߏYr]nQMh}}bdxj!Y[_ksv}Q2g(vgbR\$b;|~UO`} SN_QYr:6_%wS_y}3Vg󅮔Sa alvR8U/OQQ*RS[^}`acg gngms6s7u1yPՊJćYNOYN?P^|Y[^ccdfiJim nqu(zIɉ! e} a~bk2lmtmge}o#,TBojp2RZA^_gi|imjorbr{~KQmy2P-Tqkjā`gNNkhin~xU_ NNN*N1N6NzYUYPYNYZYXYbY`YgYlYiYxYYO^OYYYYYYYYZ%ZZZZ ZZ@ZlZIZ5Z6ZbZjZZZZZZZZZZZZZ[ [ [[2Z[*[6[>[C[E[@[Q[U[Z[[[e[i[p[s[u[xe[z[[[[[[[[[[[[[[[[[[\\\\ \\ \"\(\8\9\A\F\N\S\P\O[q\l\nNb\v\y\\\Y\\\\\\\\\\\\\]\] ]]]\]]]]]"]]]]L]R]N]K]l]s]v]]]]]]]]]]]]]]]]]]]]^ ^^^^^6^7^D^C^@^N^W^T^_^b^d^G^u^v^z^^^^^^^^^^^^^^^^^^^^^^^__ _]_\_ ___)_-_8_A_H_L_N_/_Q_V_W_Y_a_m_s_w____________________`_`!`````)``1```+`&``:`Z`A`j`w`_`J`F`M`c`C`d`B`l`k`Y`````````````````_````aMaa``a``aa!``a aaGa>a(a'aJa?acMdcOcccccvcccccckcicccccccccdd4ddd&d6edd(ddgdodvdNe*ddddddddddddddd ddbdde,ddddedeeee$e#e+e4e5e7e6e8uKeHeVeUeMeXe^e]erexeeeeeeeeeeeeeeeeegrf fegsf5f6f4ffOfDfIfAf^f]fdfgfhf_fbfpffffffffffffffffff?fffffgggg&g'8g.g?g6gAg8g7gFg^g`gYgcgdggpgg|gjgggggggggggggggggggggjhhFh)h@hMh2hNhh+hYhchwhhhhhhhhjhhthhhihh~ihihi"i&hi hhhhi6iihhi%hhhi(i*ii#i!hiyiwi\ixikiTi~ini9iti=iYi0iai^i]iijiiiiiiii[iiiiij.iiiiiiijjik iiijijijij jjj#jjDj jrj6jxjGjbjYjfjHj8j"jjjjjjjjjjjjjjjjjjjjkjkk1kk8k7vk9kGkCkIkPkYkTk[k_kakxkykkkkkkkkkkkkkkkkkkkkkkkkklllll$l#l^lUlbljllllll~lhlslllllllllllllllllmMm6m+m=m8mm5m3mm mcmmdmZmymYmmommnn mmmmmmmmmmmmmmmmmn-nnn.nnrn_n>n#nkn+nvnMnnCn:nNn$nnn8nnnnnnnnnnnnnnnnoAopLnnno?no1no2no>onoozoxooooo[oomoo|oXoooofooooooooooooooop p opppoppotpppp0p>p2pQpcppppppppppppq pqqqeqUqqfqbqLqVqlqqqqqqqqqqqqqqqqqqqqr rrr(r-r,r0r2r;rsNsOsWsjshspsxsus{szsssssssstttot%st2t:tUt?t_tYtAt\titptctjtvt~ttttttsttttttttttuuuu uu uuuu&u,uz7zCzWzIzazbzizpzyz}zzzzzzzzzzzzzzzzzzzzzzzzzz{{{ {{3{{{{5{({6{P{z{{M{ {L{E{u{e{t{g{p{q{l{n{{{{{{{{{{]{{{{{{{{{||{{|`|||{{|| {|#|'|*||7|+|=|L|C|T|O|@|P|X|_|d|V|e|l|u|||||||||||||||||||||;|||||}}}}} }E}K}.}2}?}5}F}s}V}N}r}h}n}O}c}}}[}}}}}}}}}}}~=}}}}}}}}}}}}}~~ ~#~!~~1~~ ~ ~"~F~f~;~5~9~C~7~2~:~g~]~V~^~Y~Z~y~j~i~|~{~}~}~~~~~~~~~~~~8:ELMNPQUTX_`higxq܀ !(?;JFRXZ_bhsrpvy}Qۀـ݀Āڀց )#/KF>SQqneft_Ɂ́сف؁ȁځ߁ )+83@YX]Z_dbhjk.qwx~߂҂ރ܃ 5421@9PE/+#|su΃؄  " 8m*(ALONIV[Zk_lot}:A?HLNPUblxz|bȌڌ  N͍gmqsύڍ֍̍ۍˍߍ B504JGILPHYd`*cUvr|ƎŎȎˎێ  &3;9EB>LIFNW\bcdڏ!  '659OPQRI>VX^hovr}bHۑ20JVXceisrɑˑБ֑ߑۑ,^WEIdH?KPZϒD."#:5;\`|nV֓דؓÓݓГȓ6+5!:ARD[`b^j)puw}Z|~oÕ͕̕Օԕ֕ܕ!(./BLOKw\^]_frlΖ˖ɖ͉Mܗ Ֆ$*09=>DFHBI\`dfhRҗkqy|z×Ɨȗ˗ܗOzߗ 8$!7=FOKkopqtsĘØƘ !$ ,.=>BIEPKQRLUߙۙݙؙљ+7EB@C>UM[W_bedikjϚњӚԚޚߚ"#%'()*./2DCOMNQXtʛƛϛћқԛ:   .%$!0G2F>Z`gvx *&#DA?>FH]^dQPYrozĝƝϝٝӝuy}a̞ΞϞОԞܞޞݞv!,>JRTc_`afgljwrvX/iǐYtdQq  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLM000 000@>?00000N0000  \0 \& %      00;=[]0 0 0 0 0 00000 "`"f"g""4"B&@&2 3 ! &&%%%%%%%%%%%; 0!!!!0" """""*")"'"("!!"" ""#""a"R"j"k""=""5"+","+!0 o&m&j& ! %!"#$%&'()*+,-./0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZA0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 !"#$%&'()*+,-./012345Q6789:;<=>?@ABCDEFGHIJKLMNO%% %%%%%,%$%4%<%%%%%%%#%3%+%;%K% %/%(%7%?%%0%%%8%B%NUZ?Ta(cY"uPz`c%nefh'Weqb[Y{b}}b|[^ cfHhǕOgN OMOOIPV7YYZ \`apafipOupuy}}ÀcUz;SNNWxNXn82z(/AQpSTTVY_m-bp TS[poS\zNx&nVUk;YSfmtBVNKO SU0[q_ ffh8ll)m[tvNz4[`풲muvř`iSQW0XDY[^(`cclopqYqq?s~vт`[iXeZl%uQ.YeY__be*j'kksV,Ğ\l{QK\aƁvharYNOxSi`)nOz NSNUO=OOsORS VYZ[[yfggLklkpsyykSkWl"ooEotuv wz{!|}6f̊Qeӗ(8N+T\]sLvT/Z__`hjZtxw^NɛN|OOPPIQlQRRRSSTTUQWW}YT[][[]]]x^^^^_R`Labbc;efCffmg!hhi_l*mim/nn2uvlx?z|}}^}}T*RLaʐuq?xMؚ;[RRSTXboj_KQ;RJTV@zw`ҞDs opu_`rdkNVdWXZZh`aff9hhmu:}nBNPOSUo]]]glstxP߈PW^+cPPQgT^XY[i_Mbc=hskn}pǑrx&xmye0}܃ dR(WPgjQBW*:XiT]Wx\OJRT>d(fggzV{"}/\h9{SQ7R[bdd-gkіv֛LcvRf NPSq\`dce_hqs#u{~یxefkNN:OO:RSSUVXYYYP[M\^+^_`c/e\[eeegbk{klEsIyy|}+}󁖉^ifnj܌̖okNrtux:y 3ꁔPl_X+z[NSW1YZ[`nouꌟ[{rPga\J~Q\hcfenq>y}ʎndžPR:\Sg|p5rLȑ+[1_`;NS[Kb1gkrs.zkRQSjT[c9j}VShT[1\]Oab2myyB}M~Frt/1KlƖNOOEQAS_bgAl ncs&~͑SY[m]y.~|~XqQSO\%fwzQ_eoikmndov}]uQR@bffn^}rfRSsY^_U`dPQR SGSSTFU1UVhYY~ d_xRbcBdb-z{v} INHQCS`S[\\]&bGbdh4hlEmmg\oNq}qez{}J~z9nΌxwMRU8o6qhQyU~|LVQX\cffZiruuyVyy| }D}4;a PuRSS PUXOY=r[d\S``\cc?ccdef]iioqNuvz|}}aIXlňpmPXaӁ5 OtPGRsSo`Ic_g,nO^\ʌe}RSvQcX[k[ \ dQg\NY*YplQ>UXY`Sbg5Ui@ę(SOX[\/^_ `Ka4bfln΀Ԃ.۞ۛNS'Y,{Ln'pSSDU[Xbbblo"t8o8QSSFOTjY1]zh7rH=j9NXSVfWbceNkm[npwz{}=ƀˆ[VX>_efjk7uNJ$Pw0W_e`zf`luznE{\uzQ{Ąyz6Z@w-NN[_bm6t4xFZuO^bcWeogvLr̀)M PWZhsidqrXjyw)/OeRZSbgl}v{|6f or~Q{rx{H{ja^Qu`ukQbnzvOpbO{zVYX䆼4O$RJSSS^,deg>lNlHrrsTuA~,酩{Ƒiq=cifjuvxC*SQS&TY^|_`Ibybbekluvxy}w^ۘ j8|P>\_gk5t w;gz9Suf_񃘀<__buF{ee gllp2x+~ހ *JҒlONNPVRJWY=^__?bfgghQ!}~2 T,SP\SXd4ggrfwFzRlkXL^TY,gQvidxTWY'fgkTiU^ggR]hNOSb+glďOm~Nban+osT*gE]{\[JnфzY|l wR"Y!q_rw'a iZZQ T}TfvY]rnMQh}}bxd!jY_[ksv}2Q(gٞvbgR$\;b~|OU` }S_NQY:r6Α%_wSy_}3VgS aalRv8/UQO*QRS[}^`ac gggnm6s7s1uPyՈJĖYNYON?P|^Y[^ccdfJii mnq(uzIɄ! e} ~ab2kltmmeg<ma}=jqNuSP]koͅ-)RTe\Nghttuψ̑x_szNceuRAmn tYukx|zOnae\NNP!NQ[ehmsBvwz|oҊ|ϑuR}+PSgmq3t*W`tAXm/}^N6OOQR]`s|}o#,BTojpŒ2RAZ^_g|iijmobrr{~KΐmQy2֊-PTqjkČ`gNNkhi~nxU _NN*N1N6NYzUYPYNYZYXYbY`YgYlYiYxYYY^OOYYYYYYYY%ZZZZ ZZ@ZlZIZ5Z6ZbZjZZZZZZZZZZZZZZ [ [[2[Z*[6[>[C[E[@[Q[U[Z[[[e[i[p[s[u[x[ez[[[[[[[[[[[[[[[[[[[\\\ \\ \"\(\8\9\A\F\N\S\P\O\q[l\n\bNv\y\\\\Y\\\\\\\\\\\\\]\ ]]]\]]]]]"]]]]L]R]N]K]l]s]v]]]]]]]]]]]]]]]]]]]]] ^^^^^6^7^D^C^@^N^W^T^_^b^d^G^u^v^z^^^^^^^^^^^^^^^^^^^^^^^^_ _]_\_ ___)_-_8_A_H_L_N_/_Q_V_W_Y_a_m_s_w_____________________`_!`````)``1```+`&``:`Z`A`j`w`_`J`F`M`c`C`d`B`l`k`Y``````````````````_````Maaa``a``a!a`` aaGa>a(a'aJa?acMcdOcccccvcccccckciccccccccccd4ddd&d6ded(ddgdodvdNd*eddddddddddddddd ddbdd,eddddedeee$e#e+e4e5e7e6e8eKuHeVeUeMeXe^e]erexeeeeeeeeeeeeeeeeeerg ffesg5f6f4ffOfDfIfAf^f]fdfgfhf_fbfpffffffffffffffffff?ffffffggg&g'g8.g?g6gAg8g7gFg^g`gYgcgdggpgg|gjggggggggggggggggggggggjhFh)h@hMh2hNhh+hYhchwhhhhhhhhhjhthhhhih~hihih"i&ih ihhhh6iiihh%ihhh(i*ii#i!ihyiwi\ixikiTi~ini9iti=iYi0iai^i]iijiiiiiiiii[iiiii.jiiiiiiijji kiiijijiji jjj#jjDj jrj6jxjGjbjYjfjHj8j"jjjjjjjjjjjjjjjjjjjjjkjkk1k8k7kv9kGkCkIkPkYkTk[k_kakxkykkkkkkkkkkkkkkkkkkkkkkkkkkllll$l#l^lUlbljllllll~lhlsllllllllllllllllllmM6m+m=m8mm5m3mm mcmmdmZmymYmmmommn nmmmmmmmmmmmmmmmmm-nnn.nnrn_n>n#nkn+nvnMnnCn:nNn$nnn8nnnnnnnnnnnnnnnnnAooLpnnn?on1on2on>oonozoxooooo[oomoo|oXoooofoooooooooooooooo p popppopptoppp0p>p2pQpcppppppppppppp qpqqeqUqqfqbqLqVqlqqqqqqqqqqqqqqqqqqqqq rrr(r-r,r0r2r;rsNsOs؞Wsjshspsxsus{szsssssssssttot%ts2t:tUt?t_tYtAt\titptctjtvt~tttttttsttttttttttuuu uu uuuu&u,uz7zCzWzIzazbzizpzyz}zzzzzzzzzzzzzzzzzzzzzzzzzzz{{ {{3{{{{5{({6{P{z{{M{ {L{E{u{e{t{g{p{q{l{n{{{{{{{{{{]{{{{{{{{{{||{{`||||{{| |{#|'|*||7|+|=|L|C|T|O|@|P|X|_|d|V|e|l|u||||||||||||||||||||||;|||||}}}} }E}K}.}2}?}5}F}s}V}N}r}h}n}O}c}}}[}}}}}}}}}}}}=~}}}}}}}}}}}}}~ ~#~!~~1~~ ~ ~"~F~f~;~5~9~C~7~2~:~g~]~V~^~Y~Z~y~j~i~|~{~~}}~~~~~~~~~~~~~8:ELMNPQUTX_`higxqܘ !(?;JFRXZ_bhsrpvy}Qۀـ݀Āڀր )#/KF>SQqneft_Ɂ́сف؁ȁځ߁ )+83@YX]Z_dbhjk.qwx~߂҂ނ܂ ق5421@9PE/+#|su΃؃  " 8m*(ALONIV[Zk_lot}:A?HLNPUblxz|bȌڌ  N͌gmqsύڍ֍̍ۍˍߍ B504JGILPHYd`*cUvr|ƎŎȎˎێ  &3;9EB>LIFNW\bcdڏ!  '659OPQRI>VX^hovr}Hbې20JVXceisrɑˑБ֑ߑۑ,^WEIdH?KPZϒD."#:5;\`|nV֓דؓÓݓГȓ6+5!:ARD[`b^j)puw}Z|~ʕoÕ͕̕Օԕ֕ܕ!(./BLOKw\^]_frlΖ˖ɖ͖Mܖ Ֆ$*09=>DFHBI\`dfhRkqy|z×Ɨȗ˗ܗOz 8$!7=FOKkopqtsĘØƘ !$ ,.=>BIEPKQRLUߙۙݙؙљ+7EB@C>UM[W_bedikjϚњӚԚޚߚ"#%'()*./2DCOMNQXtʛƛϛћқԛ:   .%$!0G2F>Z`gvx *&#DA?>FH]^dQPYrozĝƝϝٝӝuy}a̞ΞϞОԞܞޞݞv!,>JRTc_`afgljwrv/XiYdtQqU!!!~"!".`":"An"J"Pv"\"j}"r"y#0#9#A#Z#a#z$!$s%!%v%&!&8{&A&X'!'A'Q'q(!(@0!0~ 1!1~k2!2~3!3~'4!4~5!5~6!6~A7!7~8!8~9!9~[:!:~;!;~!>~1?!?~@!@~A!A~ KB!B~ C!C~ D!D~ eE!E~ F!F~ !G!G~ H!H~ I!I~ ;J!J~ K!K~ L!L~ UM!M~ N!N~O!OSoP!P~Q!Q~R!R~^S!S~T!T~U!U~xV!V~W!W~4X!X~Y!Y~Z!Z~N[![~\!\~ ]!]~h^!^~_!_~$`!`~a!a~b!b~>c!c~d!d~e!e~Xf!f~g!g~h!h~ri!i~j!j~.k!k~l!l~m!m~Hn!n~o!o~p!p~bq!q~r!r~s!s~|t!t&000 000@>?00000N0000  \0 \ & %     00;=[]00 0 0 0 0 0000 ""`"f"g""4&B&@ 2 3! &&%%%%%%%%%%% ;0!!!!0"" """""*")"'"(!!""" "#"""a"R"j"k""=""5"+",!+ 0&o&m&j !!"#$%&'()*+,-./0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 !"#$%&'()*+,-./012345Q6789:;<=>?@ABCDEFGHIJKLMNO%%% %%%%%,%$%4%<%%%%%%%#%3%+%;%K% %/%(%7%?%%0%%%8%BNUZ?Tac(Y"uzP`cn%efhW'ebq[YІ{}b}b|[^c fhHǗgONO OMOPIVY7YZ\ `aapfipuOupy}}ÄcUzS;NNW߀xNXn8z2(/QASpTTVY_m-bpT S[p–So\zNxn&VUk;YSmftܕVBNKO SU[0_qf fhl8lm)t[vzN4[`muvʙ`iSQWX0YD[^`(cclopqqYqs?~vх`[XielZu%QY.Ye__bej*k'ksV,\l{Q\KahvraNYOSx`in)zON SNOUO=OOsRSV YZ[[yfggkLlpksyyz<{ۃwӇfV)NO\brYu;傽řNOVXJX^_`*``babbe9AffhmwppuLv}uQRYT[]ahimxˈWrmlWgΒRVT^bdhkSlWo"ooEtuvw z{|!}6f̌Qeә(N8T+\]svLw<\ TXOOSqUVhWYG[ [\^ ^~_cg:eeghhj_^0kll}uyH[cz}_w̏Z/__`hjtZxwN^NO|OPPQIQlRRRSSTTUWQWY}[T[][]]]^x^^^_`RaLbbce;ffCfgmh!hil_m*min/nu2vxlz?|}}}^}T*RLaʑuqx?M؝;R[RSTXboj_QKR;TJVz@w`sDo pu_`ښrۏkdNVWdXZZ`haffh9hmu}:nBNOPSU]o]]gltsxPWP^c+PPQgTX^Y[_ibMch=ksnp}rxx&yme}0܈ RdW(gPjQWB*X:iT]WxO\RJTd>f(ggz{V}"/h\{9SQR7[bddg-kvcLvfRN PS\q`dech_qsu#{~ۑxefkNNO:OR:SSUVXYYY[P\M^^+_`ce/[\eeegkbk{lsEyIy|}}+󉖊^ifnjܖ̘koNOtuxy: 3ꄔlP_X+z[NSWY1Z[`nou[{Prg\aJ~Q\chfeqny>}ʐnǐPR\:gSp|r5Lȓ+[_1`N;S[bKg1krsz.kRQSTj[cj9}VSTh[\1]Oabm2yy}B~MҁFrt/1KlƑNOOQESA_bglAn sc~&͒SY[my]~.|X~qQSO\f%wzQ_eiokmnodv}]uQRb@ffn^}rfRSYs^_`UdPQRS SGSTUFU1VYhYZ<[\\\\^^^_pbbbccwff f-fvg~hjj5lmn nXq d_xRbcdBb-z{}v INQHSCS`[\\]b&bGdhh4lmEmgo\qNq}ez{}~Jz9n΍xwRMUo8q6Qhy~U|VLXQ\cffiZruuyyVy|} }D4;a PRuSSP UXYOr=[\dS``c\cc?cdef]iioqNuvz|}}aIXlōpmPXaӅ5 OPtRGSs`ocIg_n,O\^e}SRQvc[X[k\ d gQ\NYY*lpQU>XY`bSg5iU@Ě(OSX[\^/_` aKb4flnހ΁Ԉ.ۛNSY'{,Lnp'SSUD[bXbblot"8o8QSSOFTYj1]zꏿhڌ7rHj=N9SXVWfbcekNmn[pwz{}=Ɔˊ[VX_>efjku7P$wW0_`efzl`uznE{u\z{QĐyz6Zw@N-N[_bft6x4ZFuO^bceWgovrL̀)MP WZhisqdrXjyw)O/ReSZbglv}{|6fo r~Q{xr{{Hj^auQu`QkbnvzOpb{OVzXY䖼O4R$SJSS^d,egl>lNrHrsuT~A,錩{đqic=fiujvxЅCS*SQT&Y^_|`bIbybekluvxy}w^j |8P\>_gkt5w ;gzS9u_f_<_ub{Feg llpx2~+ނ *JҘlNONPRVWJY^=__b?fgghQ}!~2T ,SPS\Xdg4rgwfzFRlkX^LYTg,QvdixTWYf'gkTi^UggRh]NOSbg+lO~mNabno+Tsg*E]{\[ƇnJzY|lw RY"q!r_wۗ'ai ZZQT T}fvߏYr]nQMh}}bdxj!Y[_ksv}Q2g(vgbR\$b;|~UO`} SN_QYr:6_%wS_y}3Vg󅮔Sa alvR8U/OQQ*RS[^}`acg gngms6s7u1yPՊJćYNOYN?P^|Y[^ccdfiJim nqu(zIɉ! e} a~bk2lmtmge}o#,TBojp2RZA^_gi|imjorbr{~KQmy2P-Tqkjā`gNNkhin~xU_ NNN*N1N6NzYUYPYNYZYXYbY`YgYlYiYxYYO^OYYYYYYYYZ%ZZZZ ZZ@ZlZIZ5Z6ZbZjZZZZZZZZZZZZZ[ [ [[2Z[*[6[>[C[E[@[Q[U[Z[[[e[i[p[s[u[xe[z[[[[[[[[[[[[[[[[[[\\\\ \\ \"\(\8\9\A\F\N\S\P\O[q\l\nNb\v\y\\\Y\\\\\\\\\\\\\]\] ]]]\]]]]]"]]]]L]R]N]K]l]s]v]]]]]]]]]]]]]]]]]]]]^ ^^^^^6^7^D^C^@^N^W^T^_^b^d^G^u^v^z^^^^^^^^^^^^^^^^^^^^^^^__ _]_\_ ___)_-_8_A_H_L_N_/_Q_V_W_Y_a_m_s_w____________________`_`!`````)``1```+`&``:`Z`A`j`w`_`J`F`M`c`C`d`B`l`k`Y`````````````````_````aMaa``a``aa!``a aaGa>a(a'aJa?acMdcOcccccvcccccckcicccccccccdd4ddd&d6edd(ddgdodvdNe*ddddddddddddddd ddbdde,ddddedeeee$e#e+e4e5e7e6e8uKeHeVeUeMeXe^e]erexeeeeeeeeeeeeeeeeegrf fegsf5f6f4ffOfDfIfAf^f]fdfgfhf_fbfpffffffffffffffffff?fffffgggg&g'8g.g?g6gAg8g7gFg^g`gYgcgdggpgg|gjgggggggggggggggggggggjhhFh)h@hMh2hNhh+hYhchwhhhhhhhhjhhthhhihh~ihihi"i&hi hhhhi6iihhi%hhhi(i*ii#i!hiyiwi\ixikiTi~ini9iti=iYi0iai^i]iijiiiiiiii[iiiiij.iiiiiiijjik iiijijijij jjj#jjDj jrj6jxjGjbjYjfjHj8j"jjjjjjjjjjjjjjjjjjjjkjkk1kk8k7vk9kGkCkIkPkYkTk[k_kakxkykkkkkkkkkkkkkkkkkkkkkkkkklllll$l#l^lUlbljllllll~lhlslllllllllllllllllmMm6m+m=m8mm5m3mm mcmmdmZmymYmmommnn mmmmmmmmmmmmmmmmmn-nnn.nnrn_n>n#nkn+nvnMnnCn:nNn$nnn8nnnnnnnnnnnnnnnnoAopLnnno?no1no2no>onoozoxooooo[oomoo|oXoooofooooooooooooooop p opppoppotpppp0p>p2pQpcppppppppppppq pqqqeqUqqfqbqLqVqlqqqqqqqqqqqqqqqqqqqqr rrr(r-r,r0r2r;rsNsOsWsjshspsxsus{szsssssssstttot%st2t:tUt?t_tYtAt\titptctjtvt~ttttttsttttttttttuuuu uu uuuu&u,uz7zCzWzIzazbzizpzyz}zzzzzzzzzzzzzzzzzzzzzzzzzz{{{ {{3{{{{5{({6{P{z{{M{ {L{E{u{e{t{g{p{q{l{n{{{{{{{{{{]{{{{{{{{{||{{|`|||{{|| {|#|'|*||7|+|=|L|C|T|O|@|P|X|_|d|V|e|l|u|||||||||||||||||||||;|||||}}}}} }E}K}.}2}?}5}F}s}V}N}r}h}n}O}c}}}[}}}}}}}}}}}~=}}}}}}}}}}}}}~~ ~#~!~~1~~ ~ ~"~F~f~;~5~9~C~7~2~:~g~]~V~^~Y~Z~y~j~i~|~{~}~}~~~~~~~~~~~~8:ELMNPQUTX_`higxq܀ !(?;JFRXZ_bhsrpvy}Qۀـ݀Āڀց )#/KF>SQqneft_Ɂ́сف؁ȁځ߁ )+83@YX]Z_dbhjk.qwx~߂҂ރ܃ ك5421@9PE/+#|su΃؄  " 8m*(ALONIV[Zk_lot}:A?HLNPUblxz|bȌڌ  N͍gmqsύڍ֍̍ۍˍߍ B504JGILPHYd`*cUvr|ƎŎȎˎێ  &3;9EB>LIFNW\bcdڏ!  '659OPQRI>VX^hovr}bHۑ20JVXceisrɑˑБ֑ߑۑ,^WEIdH?KPZϒD."#:5;\`|nV֓דؓÓݓГȓ6+5!:ARD[`b^j)puw}Z|~oÕ͕̕Օԕ֕ܕ!(./BLOKw\^]_frlΖ˖ɖ͉Mܗ Ֆ$*09=>DFHBI\`dfhRҗkqy|z×Ɨȗ˗ܗOzߗ 8$!7=FOKkopqtsĘØƘ !$ ,.=>BIEPKQRLUߙۙݙؙљ+7EB@C>UM[W_bedikjϚњӚԚޚߚ"#%'()*./2DCOMNQXtʛƛϛћқԛ:   .%$!0G2F>Z`gvx *&#DA?>FH]^dQPYrozĝƝϝٝӝuy}a̞ΞϞОԞܞޞݞv!,>JRTc_`afgljwrvX/iǐYtdQq"~%U!!~!!"."`:"A"nJ"P"v\"j"}r"y"0#9#A#Z#a#z#!$s$!%v%%!&8&{A&X&!'A'Q'q'!(@(!0~0 !1~1k!2~2!3~3'!4~4!5~5!6~6A!7~7!8~8!9~9[!:~:!;~;!<~~>1!?~?!@~@!A~AK !B~B !C~C !D~De !E~E !F~F! !G~G !H~H !I~I; !J~J !K~K !L~LU !M~M !N~N!OSOo!P~P!Q~Q!R~R^!S~S!T~T!U~Ux!V~V!W~W4!X~X!Y~Y!Z~ZN![~[!\~\ !]~]h!^~^!_~_$!`~`!a~a!b~b>!c~c!d~d!e~eX!f~f!g~g!h~hr!i~i!j~j.!k~k!l~l!m~mH!n~n!o~o!p~pb!q~q!r~r!s~s|!t&t000 000@>?00000N0000  \0 \& %      00;=[]0 0 0 0 0 00000 "`"f"g""4"B&@&2 3 ! &&%%%%%%%%%%%; 0!!!!0" """""*")"'"("!!"" ""#""a"R"j"k""=""5"+","+!0 o&m&j& ! !"#$%&'()*+,-./0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZA0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 !"#$%&'()*+,-./012345Q6789:;<=>?@ABCDEFGHIJKLMNO%% %%%%%,%$%4%<%%%%%%%#%3%+%;%K% %/%(%7%?%%0%%%8%B%NUZ?Ta(cY"uPz`c%nefh'Weqb[Y{b}}b|[^ cfHhǕOgN OMOOIPV7YYZ \`apafipOupuy}}ÀcUz;SNNWxNXn82z(/AQpSTTVY_m-bp TS[poS\zNx&nVUk;YSfmtBVNKO SU0[q_ ffh8ll)m[tvNz4[`풲muvř`iSQW0XDY[^(`cclopqYqq?s~vт`[iXeZl%uQ.YeY__be*j'kksV,Ğ\l{QK\aƁvharYNOxSi`)nOz NSNUO=OOsORS VYZ[[yfggLklkpsyykSkWl"ooEotuv wz{!|}6f̊Qeӗ(8N+T\]sLvT/Z__`hjZtxw^NɛN|OOPPIQlQRRRSSTTUQWW}YT[][[]]]x^^^^_R`Labbc;efCffmg!hhi_l*mim/nn2uvlx?z|}}^}}T*RLaʐuq?xMؚ;[RRSTXboj_KQ;RJTV@zw`ҞDs opu_`rdkNVdWXZZh`aff9hhmu:}nBNPOSUo]]]glstxP߈PW^+cPPQgT^XY[i_Mbc=hskn}pǑrx&xmye0}܃ dR(WPgjQBW*:XiT]Wx\OJRT>d(fggzV{"}/\h9{SQ7R[bdd-gkіv֛LcvRf NPSq\`dce_hqs#u{~یxefkNN:OO:RSSUVXYYYP[M\^+^_`c/e\[eeegbk{klEsIyy|}+}󁖉^ifnj܌̖okNrtux:y 3ꁔPl_X+z[NSW1YZ[`nouꌟ[{rPga\J~Q\hcfenq>y}ʎndžPR:\Sg|p5rLȑ+[1_`;NS[Kb1gkrs.zkRQSjT[c9j}VShT[1\]Oab2myyB}M~Frt/1KlƖNOOEQAS_bgAl ncs&~͑SY[m]y.~|~XqQSO\%fwzQ_eoikmndov}]uQR@bffn^}rfRSsY^_U`dPQR SGSSTFU1UVhYY~ d_xRbcBdb-z{v} INHQCS`S[\\]&bGbdh4hlEmmg\oNq}qez{}J~z9nΌxwMRU8o6qhQyU~|LVQX\cffZiruuyVyy| }D}4;a PuRSS PUXOY=r[d\S``\cc?ccdef]iioqNuvz|}}aIXlňpmPXaӁ5 OtPGRsSo`Ic_g,nO^\ʌe}RSvQcX[k[ \ dQg\NY*YplQ>UXY`Sbg5Ui@ę(SOX[\/^_ `Ka4bfln΀Ԃ.۞ۛNS'Y,{Ln'pSSDU[Xbbblo"t8o8QSSFOTjY1]zh7rH=j9NXSVfWbceNkm[npwz{}=ƀˆ[VX>_efjk7uNJ$Pw0W_e`zf`luznE{\uzQ{Ąyz6Z@w-NN[_bm6t4xFZuO^bcWeogvLr̀)M PWZhsidqrXjyw)/OeRZSbgl}v{|6f or~Q{rx{H{ja^Qu`ukQbnzvOpbO{zVYX䆼4O$RJSSS^,deg>lNlHrrsTuA~,酩{Ƒiq=cifjuvxC*SQS&TY^|_`Ibybbekluvxy}w^ۘ j8|P>\_gk5t w;gz9Suf_񃘀<__buF{ee gllp2x+~ހ *JҒlONNPVRJWY=^__?bfgghQ!}~2 T,SP\SXd4ggrfwFzRlkXL^TY,gQvidxTWY'fgkTiU^ggR]hNOSb+glďOm~Nban+osT*gE]{\[JnфzY|l wR"Y!q_rw'a iZZQ T}TfvY]rnMQh}}bxd!jY_[ksv}2Q(gٞvbgR$\;b~|OU` }S_NQY:r6Α%_wSy_}3VgS aalRv8/UQO*QRS[}^`ac gggnm6s7s1uPyՈJĖYNYON?P|^Y[^ccdfJii mnq(uzIɄ! e} ~ab2kltmmeg<ma}=jqNuSP]koͅ-)RTe\Nghttuψ̑x_szNceuRAmn tYukx|zOnae\NNP!NQ[ehmsBvwz|oҊ|ϑuR}+PSgmq3t*W`tAXm/}^N6OOQR]`s|}o#,BTojpŒ2RAZ^_g|iijmobrr{~KΐmQy2֊-PTqjkČ`gNNkhi~nxU _NN*N1N6NYzUYPYNYZYXYbY`YgYlYiYxYYY^OOYYYYYYYY%ZZZZ ZZ@ZlZIZ5Z6ZbZjZZZZZZZZZZZZZZ [ [[2[Z*[6[>[C[E[@[Q[U[Z[[[e[i[p[s[u[x[ez[[[[[[[[[[[[[[[[[[[\\\ \\ \"\(\8\9\A\F\N\S\P\O\q[l\n\bNv\y\\\\Y\\\\\\\\\\\\\]\ ]]]\]]]]]"]]]]L]R]N]K]l]s]v]]]]]]]]]]]]]]]]]]]]] ^^^^^6^7^D^C^@^N^W^T^_^b^d^G^u^v^z^^^^^^^^^^^^^^^^^^^^^^^^_ _]_\_ ___)_-_8_A_H_L_N_/_Q_V_W_Y_a_m_s_w_____________________`_!`````)``1```+`&``:`Z`A`j`w`_`J`F`M`c`C`d`B`l`k`Y``````````````````_````Maaa``a``a!a`` aaGa>a(a'aJa?acMcdOcccccvcccccckciccccccccccd4ddd&d6ded(ddgdodvdNd*eddddddddddddddd ddbdd,eddddedeee$e#e+e4e5e7e6e8eKuHeVeUeMeXe^e]erexeeeeeeeeeeeeeeeeeerg ffesg5f6f4ffOfDfIfAf^f]fdfgfhf_fbfpffffffffffffffffff?ffffffggg&g'g8.g?g6gAg8g7gFg^g`gYgcgdggpgg|gjggggggggggggggggggggggjhFh)h@hMh2hNhh+hYhchwhhhhhhhhhjhthhhhih~hihih"i&ih ihhhh6iiihh%ihhh(i*ii#i!ihyiwi\ixikiTi~ini9iti=iYi0iai^i]iijiiiiiiiii[iiiii.jiiiiiiijji kiiijijiji jjj#jjDj jrj6jxjGjbjYjfjHj8j"jjjjjjjjjjjjjjjjjjjjjkjkk1k8k7kv9kGkCkIkPkYkTk[k_kakxkykkkkkkkkkkkkkkkkkkkkkkkkkkllll$l#l^lUlbljllllll~lhlsllllllllllllllllllmM6m+m=m8mm5m3mm mcmmdmZmymYmmmommn nmmmmmmmmmmmmmmmmm-nnn.nnrn_n>n#nkn+nvnMnnCn:nNn$nnn8nnnnnnnnnnnnnnnnnAooLpnnn?on1on2on>oonozoxooooo[oomoo|oXoooofoooooooooooooooo p popppopptoppp0p>p2pQpcppppppppppppp qpqqeqUqqfqbqLqVqlqqqqqqqqqqqqqqqqqqqqq rrr(r-r,r0r2r;rsNsOs؞Wsjshspsxsus{szsssssssssttot%ts2t:tUt?t_tYtAt\titptctjtvt~tttttttsttttttttttuuu uu uuuu&u,uz7zCzWzIzazbzizpzyz}zzzzzzzzzzzzzzzzzzzzzzzzzzz{{ {{3{{{{5{({6{P{z{{M{ {L{E{u{e{t{g{p{q{l{n{{{{{{{{{{]{{{{{{{{{{||{{`||||{{| |{#|'|*||7|+|=|L|C|T|O|@|P|X|_|d|V|e|l|u||||||||||||||||||||||;|||||}}}} }E}K}.}2}?}5}F}s}V}N}r}h}n}O}c}}}[}}}}}}}}}}}}=~}}}}}}}}}}}}}~ ~#~!~~1~~ ~ ~"~F~f~;~5~9~C~7~2~:~g~]~V~^~Y~Z~y~j~i~|~{~~}}~~~~~~~~~~~~~8:ELMNPQUTX_`higxqܘ !(?;JFRXZ_bhsrpvy}Qۀـ݀Āڀր )#/KF>SQqneft_Ɂ́сف؁ȁځ߁ )+83@YX]Z_dbhjk.qwx~߂҂ނ܂ ق5421@9PE/+#|su΃؃  " 8m*(ALONIV[Zk_lot}:A?HLNPUblxz|bȌڌ  N͌gmqsύڍ֍̍ۍˍߍ B504JGILPHYd`*cUvr|ƎŎȎˎێ  &3;9EB>LIFNW\bcdڏ!  '659OPQRI>VX^hovr}Hbې20JVXceisrɑˑБ֑ߑۑ,^WEIdH?KPZϒD."#:5;\`|nV֓דؓÓݓГȓ6+5!:ARD[`b^j)puw}Z|~ʕoÕ͕̕Օԕ֕ܕ!(./BLOKw\^]_frlΖ˖ɖ͖Mܖ Ֆ$*09=>DFHBI\`dfhRkqy|z×Ɨȗ˗ܗOz 8$!7=FOKkopqtsĘØƘ !$ ,.=>BIEPKQRLUߙۙݙؙљ+7EB@C>UM[W_bedikjϚњӚԚޚߚ"#%'()*./2DCOMNQXtʛƛϛћқԛ:   .%$!0G2F>Z`gvx *&#DA?>FH]^dQPYrozĝƝϝٝӝuy}a̞ΞϞОԞܞޞݞv!,>JRTc_`afgljwrv/XiYdtQq~"%picolibc-1.7.4/newlib/libc/iconv/ccs/binary/jis_x0212_1990.cct000066400000000000000000007100001414576234500234610ustar00rootroot00000000000000jis_x0212_1990XXXXdXZZ-1:^1:  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX"7"B"p"C"m"l"n"4"1"k"D*"*!*$***#*))!*.*2*1*4*3*@*?*B*A*P*R*Q*T*X*S),*c*b*e*d*r)0)N+"+!+$+*+#+))A+.+2+1+4+3+@+?+B+A)C+P+R+Q+T+X+S)L+c+b+e+d+r)P+s*'+'*%+%*(+(*+++*,+,*/+/*-+-*0+0)")B*7+7*6+6*8+8*5+5*:+:*;+;*=+=*<*>+>)$)D*G+G*E+E*F+F*D)E)&)F*H+H*I+I)G*J+J*L+L*K+K)))I)()H*M+M*O+O*N+N)J)+)K*W+W*V+V)-)M*Y+Y*[+[*Z+Z*\+\*]+]*_+_*^+^*a+a*`+`)/)O*l+l*i+i*f+f*k+k*h+h*j+j*q+q*t+t*s*u+u*w+w*v+v*&+&*C+C*U+U*g+g*p+p*m+m*o+o*n+n+9"0"/"2"6"5"3"8"9&a&b&c&d&g&i&l&v&e&j&q&r&s&t&{&x&u&z&w&y&|'B'C'D'E'F'G'H'I'J'K'L'M'N'r's't'u'v'w'x'y'z'{'|'}'~"q"o0!0"0#0$0%0&0'0(0)0*0+0,0-0.0/000102030405060708090:0;0<0=0>0?0@0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0_0q0r0s0t0u0v0w0x0y0z0{0|0}0~1!1"1#1$1%1&1'1(1)1*1+1,1-1.1/101112131415161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1[1\1]1^1v1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1w1x1y1z1{1|1}1~2!2"2#2$2%2&2'2(2)2*2+2,2-2.2/202122232425262728292:2;2<2=2>2?2@2A2B2C2D2E2Q2F2G2H2I2J2K2L2M2N2O2P2R2S2T2U2V2W2X2Y2Z2[2\2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{2|2}2~3!3"3#3$3%3&3'3(3)3*3+3,3-3.3/303132333435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3{3|3}3~4!4"4#4$4%4&4'4(4)4*4+4,4-4.4/404142434445464847494:4;4<4=4>4?4@4A4B4C4D4E4F4G4H4I4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4\4]4^4_4`4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4{4|4}4~5!5"5#5$5%5&5'5(5)5*5+5,5-5.5/505152535455565758595:5;5<5=5>5?5@5A5B5C5D5E5F5G5H5I5J5K5L5M5N5O5P5Q5R5S5T5U5V5W5X5Y5Z5[5\5]5^5_5`5a5b5c5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5s5t5u5v5w5x5y5z5{5|5}5~6!6"6#6$6%6&6'6(6)6*6+6,6-6.6/606162636465666768696:6;6<6=6>6?6@6A6B6C6D6E6F6G6H6I6J6K6L6M6N6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6\6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6p6q6n6o6r6s6t6u6v6w6x6y6z6{6}6~6|7!7"7#7$7%7&7'7(7)7*7+7,7-7.7/707172737475767778797:7;7<7=7>7?7@7A7B7C7D7E7F7G7H7I7J7K7L7M7N7O7P7Q7R7S7T7U7V7W7`7X7Y7Z7[7\7]7^7_7a7b7c7d7e7f7g7h7i7j7k7l7m7~7n7o7p7q7r7s7t7u7v7w7x7y7z7{7|7}8!8"8#8$8%8&8'8(8)8*8+8,8-8.8/808182838485868788898:8;8<8=8>8?8@8A8B8C8D8E8F8G8H8I8J8K8L8M8N8P8Q8O8R8S8T8U8V8W8X8Y8Z8[8\8]8^8_8`8a8b8c8d8e8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}8~9!9"9#9$9%9&9'9(9)9*9+9,9-9.9/909192939495969798999:9;9<9=9>9?9@9A9B9C9D9E9F9G9H9I9J9K9L9M9N9O9P9Q9R9S9T9U9V9W9X9Y9Z9[9\9]9^9_9`9a9b9c9d9e9f9g9h9i9j9k9l9m9n9o9p9q9r9s9t9u9v9w9x9y9z9{9|9}9~:!:":#:$:%:&:':(:):*:+:,:-:.:/:0:1:3:4:5:6:7:8:2:9:::;:<:=:>:?:@:A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z:[:\:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:{:|:}:~;!;";#;$;%;&;';(;);*;+;,;-;.;/;0;1;2;3;4;5;6;7;8;9;:;;;=;<;>;?;@;A;B;C;D;E;G;H;I;J;F;K;L;M;N;O;P;Q;R;S;W;U;T;V;X;Y;Z;[;\;];^;_;`;a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;rft;s;t;u;v;w;x;z;y;{;|;};~=?=@=A=B=C=D=E=F=G=H=I=J=K=L=M=N=O=P=Q=R=S=T=U=V=W=X=Y=Z=[=\=]=^=_=`=a=b=c=d=e=f=g=h=i=j=k=l=m=n=o=p=q=r=s=t=u=v=w=x=y=z={=|=}=~>!>">#>$>%>&>'>(>)>*>+>,>->.>/>0>1>2>3>4>5>6>7>8>9>:>;><>=>>>?>@>A>B>C>D>E>F>G>H>I>J>K>L>M>N>O>P>Q>R>S>T>U>V>W>X>Y>Z>[>\>]>^>_>`>a>b>c>d>e>f>g>h>i>j>k>l>m>n>o>p>q>r>s>t>u>v>w>x>y>z>{>~>|>}?!?"?#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:?;????@?A?B?C?D?E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U?V?W?X?Y?Z?[?\?]?^?_?`?a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?{?|?}?~@!@"@#@$@%@&@'@(@)@*@+@,@-@.@/@0@1@2@3@4@5@6@7@8@9@:@;@<@=@>@?@@@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@[@\@]@^@_@`@a@b@c@d@e@f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@{@|@}@~A!A"A#A$A%A&A'A(A)A*A+A,A-A.A/A0A1A2A3A4A5A6A7A8A9A:A;AA?A@AAABACADAEAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXAYAZA[A\A]A^A_A`AaAbAcAdAeAfAgAhAiAjAkAlAmAnAoApAqArAsAtAuAvAwAxAyAzA{A|A}A~B!B"B#B$B%B&B'B(B)B*B+B,B-B.B0B/B1B2B3B4B5B7B6B8B9B:B;BB@BABBBDBEBGBHBIBJBLBCBFBKBMBNBOBPBQBRBSBTBUBVBWBXBYBZB[B\B]B^B_B`BaBbBcBdBeBfBgBhBiBjBkBlBmB?BnBoBpBqBrBsBtBuBvBwBxByBzB{B|B}B~C!C"C#C$C%C&C'C(C)C*C+C,C-C.C/C0C1C2C3C4C5C6C7C9C:C;CC?C@CACBCCCDCECFCGCHC8CJCKCLCMCOCNCPCQCRCSCTCUCVCWCXCYCZC[CIC\C]C^C_C`CaCbCcCdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzC{C|C}C~D!D"D#D$D%D&D'D(D)D*D+D,D-D.D/D0D1D2D3D4D5D6D7D8D9D:D;DD?D@DADBDCDDDEDFDGDHDIDJDKDLDMDNDODPDQDRDSDTDUDVDWDXDYDZD[D\D]D^D_D`DaDbDcDdDeDfDgDhDiDjDkDlDmDnDoDpDqDrDsDtDuDvDwDxDyDzD{D|D}D~E!E"E#E$E%E&E'E(E)E*E+E,E-E.E/E0E1E2E3E4E5E6E7E8E9E:E;EE?E@EAEBECEDEEEFEGEHEIEJEKEMELENEOEPEQERESETEUEVEWEXEYEZE[E\E]E^E_E`EaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpEqErEsEtEuEvEwExEyEzE{E|E}E~F!F"F#F$F%F&F'F(F)F*F+F,F-F.F/F0F1F2F3F4F5F6F7F8F9F:F;FF?F@FAFBFCFDFEFFFGFHFIFJFKFLFMFNFOFPFQFRFSFTFUFVFWFXFYFZF[F\F]F^F_F`G6FaFbFcFdFeFfFgFhFiFjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzF{F|F}F~G!G"G#G$G%G&G'G(G)G*G+G,G-G.G/G0G1G2G3G4G5G7G8G9G:G;GG?G@GAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG[G\G]G^G_G`GaGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzG{G|G}G~H!H"H#H$H%H&H'H(H)H*H+H,H-H.H/H0H1H2H3H4H5H6H7H8H9H:H;HH?H@HAHBHCHDHEHFHGHHHIHJHKHLHSHMHNHOHPHQHRHTHUHVHWHXHYHZH[H\H]H^H_H`HaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHzH{H|H}H~I!I"I#I$I%I&I'I(I)I*I+I,I-I.I/I0I1I2I3I4I5I6I7I8I9I:I;II?I@IBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZI[I\I]I^I_I`IaIbIcIdIeIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIyIzI{I|I}I~J!J"J#J$J%J&J'J(J)J*J+J,J-J.J/J0J1J2J3J4J5J6J7J8J9J:J;JJ?J@JAJBJCJDJEJFJGJHJIJJJKJLJMJNJOJPJQJRJSJTJUJVJWJXJYJZJ[J\J]J^J_J`JaJbJcJdJeJfJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJ{J|J}J~K!K"K#K$K%K&K'K(K)K*K+K,K-K.K/K0K1K2K3K4K5K6K7K8K9K:K;KK?K@KAKBKCKDKEKFKGKHKIKJKKKLKMKNKOKPKQKRKSKTKUKVKWKXKYKZK[K\K]K^K_K`KaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxKyKzK{K|K}K~L!L"L#L$L%L&L'L(L)L*L+L,L-L.L/L0L1L2L3L4L5L6L7L8L9L:L;LL?L@LALBLCLDLELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL[L\L]L^L_L`LaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzL{L|L}L~M!M"M#M$M%M&M'M(M)M*M+M,M-M.M/M0M1M2M3M4M5M6M7M8M9M:M;MM?M@MAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMWMXMYMZM[M\M]M^M_M`MaMbMcMdMeMfMgMhMiMjMkMlMmMnMoMpMqMrMsMtMuMvMwMxMyMzM{M|M}M~N!N"N$N%N&N'N(N)N#N*N+N,N-N.N/N0N1N2N3N4N5N6N7N8N9N:N;NN?N@NANBNCNDNENFNGNHNINJNKNLNMNNNONPNQNRNSNTNUNVNWNXNYNZN[N\N]N^N_N`NaNbNcNdNeNfNgNhNiNjNkNlNmNnNoNpNqNrNsNtNuNvNwNxNyNzN{N|N}N~O!O"O#O$O%O&O'O(O)O*O+O,O-O.O/O0O1O2O3O4O5O6O7O8O9O:O;OO?O@OAOBOCODOEOFOGOHOIOJOKOLOMONOOOPOQOROSOTOUOVOWOXOYOZO[O\O]O^O_O`OaObOcOdOeOfOgOhOiOjOkOlOmOnOoOpOqOrOtOuOvOsOwOxOyOzO{O|O}O~P!P"P#P$P%P&P'P(P)P*P+P,P.P/P0P1P-P2P3P4P5P7P8P9P:P;P6PP?P@PAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP[P\P]P^P_P`PaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzP{P|P}P~Q!Q"Q#Q$Q%Q&Q'Q(Q)Q*Q+Q,Q-Q.Q/Q0Q1Q2Q3Q4Q5Q6Q7Q8Q9Q:Q;QQ?Q@QAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQQQRQSQTQUQVQWQXQYQZQ[Q\Q]Q^Q_Q`QaQbQcQdQeQfQgQhQiQjQkQlQmQnQoQpQqQrQsQtQuQvQwQxQyQzQ{Q|Q}Q~R!R"R#R$R%R&R'R(R)R*R+R,R-R.R/R0R1R2R3R4R5R6R7R8R9R:R;RR?R@RARBRCRDRERFRGRHRIRJRKRLRMRNRORPRQRRRSRTRURVRWRXRYRZR[R\R]R^R_R`RaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRvRwRxRuRyRzR{R|R}R~S!S"S#S$S%S&S'S(S)S*S+S,S-S.S/S0S1S2S3S4S5S6S7S8S9S:S;SS?S@SASBSCSDSESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS[S\S]S^S_S`SaSbScSdSeSfSgShSiSjSkSlSmSnSoSpSqSrSsStSuSvSwSxSySzS{S|S}S~T!T"T#T$T%T&T'T(T)T*T+T,T-T.T/T0T1T2T4T5T6T7T8T9T:T;TT3T?T@TATBTCTDTETFTGTHTITJTKTLTMTNTOTPTQTRTSTTTUTVTWTXTYTZT[T\T]T^T_T`TaTbTcTdTeTfTgThTiTjTlTkTmTnToTpTqTrTsTtTuTvTwTxTyTzT{T|T}T~U!U"U#U$U%U&U'U(U)U*U+U,U-U.U/U0U1U2U3U4U5U6U7U8U9U:U;UU?U@UAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU[U\U]U^U_U`UaUbUcUdUeUfUgUhUiUjUkUlUmUnUoUpUqUrUsUtUuUvUwUxUyUzU{U|U}U~V!V"V#V$V%V&V'V(V)V*V+V,V-V.V/V0V1V2V3V4V5V6V7V8V9V:V;VV?V@VAVBVCVDVEVGVHVIVJVKVFVLVMVNVOVPVQVRVSVTVVVWVXVUVYVZV[V\V]V^V_V`VaVbVcVdVeVfVgVhViVjVkVlVmVnVoVpVqVrVsVtVuVvVwVxVyVzV{V|V}V~W!W"W#W$W%W&W'W(W)W*W+W,W-W.W/W0W1W2W3W4W5W6W7W8W9W:W;WW?W@WAWBWCWDWEWFWGWHWIWJWKWLWMWNWOWPWQWRWSWTWUWVWWWXWYWZW[W\W]W^W_W`WaWbWdWeWfWgWhWiWjWkWlWmWnWoWpWqWrWsWtWuWvWwWxWyX>WcWzW{W|W}W~X!X"X#X$X%X&X'X(X)X*X+X,X-X.X/X0X1X2X3XLX4X5X6X7X8X9X:X;XY?Y@YAYBYCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZY[Y\Y]Y^Y_Y`YaYbYcYdYeYfYtYgYhYiYjYkYlYmYnYoYpYqYrYsYuYvYwYxYyYzY{Y|Y}Y~Z!Z"Z#Z$Z%Z&Z'Z(Z)Z*Z+Z,Z-Z.Z/Z0Z1Z2Z3Z4Z5Z68fZ7Z8Z9Z:Z;ZZ?Z@ZAZBZCZDZEZFZGZHZIZJZKZmZLZMZNZOZPZQZRZSZTZUZVZWZXZYZZZ[Z\Z]Z^Z_Z`ZaZbZcZdZeZfZgZhZiZjZkZlZnZoZpZqZrZsZtZuZvZwZxZyZzZ{Z|Z}Z~[!["[#[$[%[&['[([)[*[+[,[-[.[/[0[1[2[3[4[5[6[7[8[9[:[;[<[=[>[?[@[A[B[C[D[E[F[G[H[I[J[K[L[M[N[O[P[Q[R[S[T[U[V[W[X[Y[Z[[[\[][^[_[`[a[b[c[d[e[f[g[h[i[j[k[l[m[n[p[q[r[s[o[t[u[v[w[x[y[z[{[|[}[~\!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\0\1\2\3\4\5\6\7\8\9\:\;\<\=\>\?\@\A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z\[\\\]\^\_\`\a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z\{\|\}\~]!]"]#]$]%]&]'](])]*]+],]-].]/]0]1]2]3]4]5]6]7]8]9]:];]<]=]>]?]@]A]B]C]D]E]F]G]H]I]J]K]L]M]N]O]P]Q]R]S]T]U]V]W]X]Y]Z][]\]]]^]_]`]a]b]c]d]e]f]g]h]i]j]k]l]m]n]o]p]q]r]s]t]u]v]w]x]y]z]{]|]}]~^!^"^#^$^%^&^'^(^)^*^+^,^-^.^/^0^1^2^3^4^5^6^7^8^9^?^:^;^<^=^>^@^A^B^C^D^E^F^G^H^I^N^J^K^L^M^O^P^Q^R^S^T^U^V^W^X^Y^Z^[^\^]^^^_^`^a^b^c^d^e^f^g^h^i^j^k^l^m^n^o^r^p^q^s^t^u^v^w^x^y^z^{^|^}^~_!_"_#_$_%_&_'_(_)_*_+_,_-_._/_0_2_1_3_4_5_6_7_8_9_:_;_<_=_>_?_@_A_B_C_D_E_F_G_H_I_J_K_L_M_N_O_P_Q_R_S_T_U_V_W_X_Y_Z_[_\_]_o_^___`_a_b_c_d_e_f_g_h_i_j_k_l_m_n_p_q_r_s_t_u_v_w_x_y_z_{_|_}_~`!`"`#`$`%`&`'`(`)`*`+`,`-`.`/`0`1`2`3`4`5`6`7`8`9`:`;`<`=`>`?`@`A`B`C`D`E`F`G`H`I`J`K`L`M`N`O`P`Q`R`S`T`U`V`W`X`Y`Z`[`\`]`d`^`_```a`b`c`e`f`g`h`i`j`k`l`m`n`o`p`q`r`s`t`u`v`w`x`y`z`{`|`}`~a!a"a#a$a%a&a'a(a)a*a+a,a-a.a/a0a1a2a3a4a5a6a7a8a9a:a;aa?a@aAaBaCaDaEaFaGaHaIaJaKaLaMaNaOaPaQaRaTaUaVaSaWaXaYaZa[a\a]a^a_a`aaabacadaeafagahaiajakalamanaoapaqarasatauavawaxayaza{a}a~b!b"b#b$a|b-b%b&b'b(b)b*b+b,b/b0b1b2b.b3b4b5b6b7b8b9b:b;bb?b@bAbBbCbEbFbDbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb[b\b]b^b_b`babbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzb{b|b}b~c!c"c#c$c%c&c'c(c)c*c+c,c-c.c/c0c1c2c3c4c5c6c7c8c9c:c;cc?c@cAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc[c\c]c^c_c`cacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczc{c|c}c~d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dd?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~e!e"e#e$e%e&e'e(e)e*e+e,e-e.e/e0e1e2e3e4e5e;e6e7e8e9e:ee?e@eAeBeCeDeEeFeGeHeIeJeKeLeMeOePeNeQeReSeTeUeVeWeXeYeZe[e\e]e^e_e`eaebecedeeefehegeiejekelemeneoepeqereseteuevewexeyeze|e{e}e~f!f"f#f$f%f&f'f(f)f*f+f,f-f.f/f0f1f2f3f4f5f6f7f8f9f:f;ff?f@fAfBfCfDfEfFfGfHfIfJfKfLfMfNfOfPfQfRfSfTfUfVfWfXfYfZf[f\f]f^f_f`fafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsfufvfwfxfyfzf{f|f}f~g!g"g#g$g%g&g'g(g)g*g+g,g-g.g/g0g1g2g3g4g5g6g7g8g9g:g;gg?g@gAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg[g\g]g^g_g`gagbgcgdgegfgjggghgigkglgmgngogpgqgrgsgtgvgwgxgygugzg{g|g}h(g~h!h"h#h$h%h&h'h)h*h+h,h-h.h/h0h1h2h3h4h5h6h7h8h9h:h;hh?h@hAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh[h\h]h^h_h`hahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh{h|h}h~i!i"i#i$i%i&i'i(i)i*i+i,i-i.i/i0i1i2i3i4i5i6i7i8i9i:i;ii?i@iAiBiCiDiEiFiGiHiIiJiLiMiKiNiOiPiQiRiSiTiUiViWiXiYiZi[i\i]i^i_i`iaibicidieifigihiiijikiliminioipiqirisitiuiviwixiyizi{i|i}i~j!j"j#j$j%j&j'j(j)j*j+j,j-j.j/j0j1j2j3j4j5j6j7j8j9j:j;jj?j@jAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj[j\j]j^j_j`jajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzj{j|j}j~k!k"k#k$k%k&k'k(k)k*k+k,k-k.k/k0k1k2k3k4k5k6k7k8k9k:k;kk?k@kAkBkCkDkEkFkGkHkIkPkJkKkLkMkRkNkOkQkSkTkUkVkWkXkYkZk[k\k^k]k_k`kakbkckdkekfkgkhkikjkkkmknkoklkpkqkrksktkvkukwkxkykzk{k|k}k~l!l"l#l$l%l&l'l(l)l*l+l,l-l.l/l0l1l2l3l4l5l6l7l8l9l:l;ll?l@lAlBlClDlElFlGlHlIlJlKlLlNlOlMlPlQlRlSlTlUlVlWlXlYlZl[l\l]l^l_l`lalblcldlelflglhliljlklllmlnlolplqlrlsltlulvlwlxlylzl{l|l}l~m!m"m#m$m%m&m'm(m)m*m+m,m-m.m/m0m1m2m3m4m5m6m7m8m9m:m;mm?m@mAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm[m\m]m^m_m`mambmc  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX7"B"p"C"m"l"n"4"1"k"D""*!*$***#*)*!).*2*1*4*3*@*?*B*A*P*R*Q*T*X*S*,)c*b*e*d*r*0)N)"+!+$+*+#+)+A).+2+1+4+3+@+?+B+A+C)P+R+Q+T+X+S+L)c+b+e+d+r+P)s+'*'+%*%+(*(++*++,*,+/*/+-*-+0*0+")B)7*7+6*6+8*8+5*5+:*:+;*;+=*=+<*>*>+$)D)G*G+E*E+F*F+D*E)&)F)H*H+I*I+G)J*J+L*L+K*K+))I)()H)M*M+O*O+N*N+J)+)K)W*W+V*V+-)M)Y*Y+[*[+Z*Z+\*\+]*]+_*_+^*^+a*a+`*`+/)O)l*l+i*i+f*f+k*k+h*h+j*j+q*q+t*t+s*u*u+w*w+v*v+&*&+C*C+U*U+g*g+p*p+m*m+o*o+n*n+9+0"/"2"6"5"3"8"9"a&b&c&d&g&i&l&v&e&j&q&r&s&t&{&x&u&z&w&y&|&B'C'D'E'F'G'H'I'J'K'L'M'N'r's't'u'v'w'x'y'z'{'|'}'~'q"o"!0"0#0$0%0&0'0(0)0*0+0,0-0.0/000102030405060708090:0;0<0=0>0?0@0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0_0q0r0s0t0u0v0w0x0y0z0{0|0}0~0!1"1#1$1%1&1'1(1)1*1+1,1-1.1/101112131415161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1[1\1]1^1v1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1w1x1y1z1{1|1}1~1!2"2#2$2%2&2'2(2)2*2+2,2-2.2/202122232425262728292:2;2<2=2>2?2@2A2B2C2D2E2Q2F2G2H2I2J2K2L2M2N2O2P2R2S2T2U2V2W2X2Y2Z2[2\2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{2|2}2~2!3"3#3$3%3&3'3(3)3*3+3,3-3.3/303132333435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3{3|3}3~3!4"4#4$4%4&4'4(4)4*4+4,4-4.4/404142434445464847494:4;4<4=4>4?4@4A4B4C4D4E4F4G4H4I4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4\4]4^4_4`4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4{4|4}4~4!5"5#5$5%5&5'5(5)5*5+5,5-5.5/505152535455565758595:5;5<5=5>5?5@5A5B5C5D5E5F5G5H5I5J5K5L5M5N5O5P5Q5R5S5T5U5V5W5X5Y5Z5[5\5]5^5_5`5a5b5c5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5s5t5u5v5w5x5y5z5{5|5}5~5!6"6#6$6%6&6'6(6)6*6+6,6-6.6/606162636465666768696:6;6<6=6>6?6@6A6B6C6D6E6F6G6H6I6J6K6L6M6N6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6\6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6p6q6n6o6r6s6t6u6v6w6x6y6z6{6}6~6|6!7"7#7$7%7&7'7(7)7*7+7,7-7.7/707172737475767778797:7;7<7=7>7?7@7A7B7C7D7E7F7G7H7I7J7K7L7M7N7O7P7Q7R7S7T7U7V7W7`7X7Y7Z7[7\7]7^7_7a7b7c7d7e7f7g7h7i7j7k7l7m7~7n7o7p7q7r7s7t7u7v7w7x7y7z7{7|7}7!8"8#8$8%8&8'8(8)8*8+8,8-8.8/808182838485868788898:8;8<8=8>8?8@8A8B8C8D8E8F8G8H8I8J8K8L8M8N8P8Q8O8R8S8T8U8V8W8X8Y8Z8[8\8]8^8_8`8a8b8c8d8e8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}8~8!9"9#9$9%9&9'9(9)9*9+9,9-9.9/909192939495969798999:9;9<9=9>9?9@9A9B9C9D9E9F9G9H9I9J9K9L9M9N9O9P9Q9R9S9T9U9V9W9X9Y9Z9[9\9]9^9_9`9a9b9c9d9e9f9g9h9i9j9k9l9m9n9o9p9q9r9s9t9u9v9w9x9y9z9{9|9}9~9!:":#:$:%:&:':(:):*:+:,:-:.:/:0:1:3:4:5:6:7:8:2:9:::;:<:=:>:?:@:A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z:[:\:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:{:|:}:~:!;";#;$;%;&;';(;);*;+;,;-;.;/;0;1;2;3;4;5;6;7;8;9;:;;;=;<;>;?;@;A;B;C;D;E;G;H;I;J;F;K;L;M;N;O;P;Q;R;S;W;U;T;V;X;Y;Z;[;\;];^;_;`;a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;tfs;t;u;v;w;x;z;y;{;|;};~;!<"<#<$<%<&<'<(<)<*<+<,<.<-=?=@=A=B=C=D=E=F=G=H=I=J=K=L=M=N=O=P=Q=R=S=T=U=V=W=X=Y=Z=[=\=]=^=_=`=a=b=c=d=e=f=g=h=i=j=k=l=m=n=o=p=q=r=s=t=u=v=w=x=y=z={=|=}=~=!>">#>$>%>&>'>(>)>*>+>,>->.>/>0>1>2>3>4>5>6>7>8>9>:>;><>=>>>?>@>A>B>C>D>E>F>G>H>I>J>K>L>M>N>O>P>Q>R>S>T>U>V>W>X>Y>Z>[>\>]>^>_>`>a>b>c>d>e>f>g>h>i>j>k>l>m>n>o>p>q>r>s>t>u>v>w>x>y>z>{>~>|>}>!?"?#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:?;????@?A?B?C?D?E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U?V?W?X?Y?Z?[?\?]?^?_?`?a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?{?|?}?~?!@"@#@$@%@&@'@(@)@*@+@,@-@.@/@0@1@2@3@4@5@6@7@8@9@:@;@<@=@>@?@@@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@[@\@]@^@_@`@a@b@c@d@e@f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@{@|@}@~@!A"A#A$A%A&A'A(A)A*A+A,A-A.A/A0A1A2A3A4A5A6A7A8A9A:A;AA?A@AAABACADAEAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXAYAZA[A\A]A^A_A`AaAbAcAdAeAfAgAhAiAjAkAlAmAnAoApAqArAsAtAuAvAwAxAyAzA{A|A}A~A!B"B#B$B%B&B'B(B)B*B+B,B-B.B0B/B1B2B3B4B5B7B6B8B9B:B;BB@BABBBDBEBGBHBIBJBLBCBFBKBMBNBOBPBQBRBSBTBUBVBWBXBYBZB[B\B]B^B_B`BaBbBcBdBeBfBgBhBiBjBkBlBmB?BnBoBpBqBrBsBtBuBvBwBxByBzB{B|B}B~B!C"C#C$C%C&C'C(C)C*C+C,C-C.C/C0C1C2C3C4C5C6C7C9C:C;CC?C@CACBCCCDCECFCGCHC8CJCKCLCMCOCNCPCQCRCSCTCUCVCWCXCYCZC[CIC\C]C^C_C`CaCbCcCdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzC{C|C}C~C!D"D#D$D%D&D'D(D)D*D+D,D-D.D/D0D1D2D3D4D5D6D7D8D9D:D;DD?D@DADBDCDDDEDFDGDHDIDJDKDLDMDNDODPDQDRDSDTDUDVDWDXDYDZD[D\D]D^D_D`DaDbDcDdDeDfDgDhDiDjDkDlDmDnDoDpDqDrDsDtDuDvDwDxDyDzD{D|D}D~D!E"E#E$E%E&E'E(E)E*E+E,E-E.E/E0E1E2E3E4E5E6E7E8E9E:E;EE?E@EAEBECEDEEEFEGEHEIEJEKEMELENEOEPEQERESETEUEVEWEXEYEZE[E\E]E^E_E`EaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpEqErEsEtEuEvEwExEyEzE{E|E}E~E!F"F#F$F%F&F'F(F)F*F+F,F-F.F/F0F1F2F3F4F5F6F7F8F9F:F;FF?F@FAFBFCFDFEFFFGFHFIFJFKFLFMFNFOFPFQFRFSFTFUFVFWFXFYFZF[F\F]F^F_F`F6GaFbFcFdFeFfFgFhFiFjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzF{F|F}F~F!G"G#G$G%G&G'G(G)G*G+G,G-G.G/G0G1G2G3G4G5G7G8G9G:G;GG?G@GAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG[G\G]G^G_G`GaGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzG{G|G}G~G!H"H#H$H%H&H'H(H)H*H+H,H-H.H/H0H1H2H3H4H5H6H7H8H9H:H;HH?H@HAHBHCHDHEHFHGHHHIHJHKHLHSHMHNHOHPHQHRHTHUHVHWHXHYHZH[H\H]H^H_H`HaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHzH{H|H}H~H!I"I#I$I%I&I'I(I)I*I+I,I-I.I/I0I1I2I3I4I5I6I7I8I9I:I;II?I@IBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZI[I\I]I^I_I`IaIbIcIdIeIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIyIzI{I|I}I~I!J"J#J$J%J&J'J(J)J*J+J,J-J.J/J0J1J2J3J4J5J6J7J8J9J:J;JJ?J@JAJBJCJDJEJFJGJHJIJJJKJLJMJNJOJPJQJRJSJTJUJVJWJXJYJZJ[J\J]J^J_J`JaJbJcJdJeJfJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJ{J|J}J~J!K"K#K$K%K&K'K(K)K*K+K,K-K.K/K0K1K2K3K4K5K6K7K8K9K:K;KK?K@KAKBKCKDKEKFKGKHKIKJKKKLKMKNKOKPKQKRKSKTKUKVKWKXKYKZK[K\K]K^K_K`KaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxKyKzK{K|K}K~K!L"L#L$L%L&L'L(L)L*L+L,L-L.L/L0L1L2L3L4L5L6L7L8L9L:L;LL?L@LALBLCLDLELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL[L\L]L^L_L`LaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzL{L|L}L~L!M"M#M$M%M&M'M(M)M*M+M,M-M.M/M0M1M2M3M4M5M6M7M8M9M:M;MM?M@MAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMWMXMYMZM[M\M]M^M_M`MaMbMcMdMeMfMgMhMiMjMkMlMmMnMoMpMqMrMsMtMuMvMwMxMyMzM{M|M}M~M!N"N$N%N&N'N(N)N#N*N+N,N-N.N/N0N1N2N3N4N5N6N7N8N9N:N;NN?N@NANBNCNDNENFNGNHNINJNKNLNMNNNONPNQNRNSNTNUNVNWNXNYNZN[N\N]N^N_N`NaNbNcNdNeNfNgNhNiNjNkNlNmNnNoNpNqNrNsNtNuNvNwNxNyNzN{N|N}N~N!O"O#O$O%O&O'O(O)O*O+O,O-O.O/O0O1O2O3O4O5O6O7O8O9O:O;OO?O@OAOBOCODOEOFOGOHOIOJOKOLOMONOOOPOQOROSOTOUOVOWOXOYOZO[O\O]O^O_O`OaObOcOdOeOfOgOhOiOjOkOlOmOnOoOpOqOrOtOuOvOsOwOxOyOzO{O|O}O~O!P"P#P$P%P&P'P(P)P*P+P,P.P/P0P1P-P2P3P4P5P7P8P9P:P;P6PP?P@PAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP[P\P]P^P_P`PaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzP{P|P}P~P!Q"Q#Q$Q%Q&Q'Q(Q)Q*Q+Q,Q-Q.Q/Q0Q1Q2Q3Q4Q5Q6Q7Q8Q9Q:Q;QQ?Q@QAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQQQRQSQTQUQVQWQXQYQZQ[Q\Q]Q^Q_Q`QaQbQcQdQeQfQgQhQiQjQkQlQmQnQoQpQqQrQsQtQuQvQwQxQyQzQ{Q|Q}Q~Q!R"R#R$R%R&R'R(R)R*R+R,R-R.R/R0R1R2R3R4R5R6R7R8R9R:R;RR?R@RARBRCRDRERFRGRHRIRJRKRLRMRNRORPRQRRRSRTRURVRWRXRYRZR[R\R]R^R_R`RaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRvRwRxRuRyRzR{R|R}R~R!S"S#S$S%S&S'S(S)S*S+S,S-S.S/S0S1S2S3S4S5S6S7S8S9S:S;SS?S@SASBSCSDSESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS[S\S]S^S_S`SaSbScSdSeSfSgShSiSjSkSlSmSnSoSpSqSrSsStSuSvSwSxSySzS{S|S}S~S!T"T#T$T%T&T'T(T)T*T+T,T-T.T/T0T1T2T4T5T6T7T8T9T:T;TT3T?T@TATBTCTDTETFTGTHTITJTKTLTMTNTOTPTQTRTSTTTUTVTWTXTYTZT[T\T]T^T_T`TaTbTcTdTeTfTgThTiTjTlTkTmTnToTpTqTrTsTtTuTvTwTxTyTzT{T|T}T~T!U"U#U$U%U&U'U(U)U*U+U,U-U.U/U0U1U2U3U4U5U6U7U8U9U:U;UU?U@UAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU[U\U]U^U_U`UaUbUcUdUeUfUgUhUiUjUkUlUmUnUoUpUqUrUsUtUuUvUwUxUyUzU{U|U}U~U!V"V#V$V%V&V'V(V)V*V+V,V-V.V/V0V1V2V3V4V5V6V7V8V9V:V;VV?V@VAVBVCVDVEVGVHVIVJVKVFVLVMVNVOVPVQVRVSVTVVVWVXVUVYVZV[V\V]V^V_V`VaVbVcVdVeVfVgVhViVjVkVlVmVnVoVpVqVrVsVtVuVvVwVxVyVzV{V|V}V~V!W"W#W$W%W&W'W(W)W*W+W,W-W.W/W0W1W2W3W4W5W6W7W8W9W:W;WW?W@WAWBWCWDWEWFWGWHWIWJWKWLWMWNWOWPWQWRWSWTWUWVWWWXWYWZW[W\W]W^W_W`WaWbWdWeWfWgWhWiWjWkWlWmWnWoWpWqWrWsWtWuWvWwWxWyW>XcWzW{W|W}W~W!X"X#X$X%X&X'X(X)X*X+X,X-X.X/X0X1X2X3XLX4X5X6X7X8X9X:X;XY?Y@YAYBYCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZY[Y\Y]Y^Y_Y`YaYbYcYdYeYfYtYgYhYiYjYkYlYmYnYoYpYqYrYsYuYvYwYxYyYzY{Y|Y}Y~Y!Z"Z#Z$Z%Z&Z'Z(Z)Z*Z+Z,Z-Z.Z/Z0Z1Z2Z3Z4Z5Z6Zf87Z8Z9Z:Z;ZZ?Z@ZAZBZCZDZEZFZGZHZIZJZKZmZLZMZNZOZPZQZRZSZTZUZVZWZXZYZZZ[Z\Z]Z^Z_Z`ZaZbZcZdZeZfZgZhZiZjZkZlZnZoZpZqZrZsZtZuZvZwZxZyZzZ{Z|Z}Z~Z!["[#[$[%[&['[([)[*[+[,[-[.[/[0[1[2[3[4[5[6[7[8[9[:[;[<[=[>[?[@[A[B[C[D[E[F[G[H[I[J[K[L[M[N[O[P[Q[R[S[T[U[V[W[X[Y[Z[[[\[][^[_[`[a[b[c[d[e[f[g[h[i[j[k[l[m[n[p[q[r[s[o[t[u[v[w[x[y[z[{[|[}[~[!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\0\1\2\3\4\5\6\7\8\9\:\;\<\=\>\?\@\A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z\[\\\]\^\_\`\a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z\{\|\}\~\!]"]#]$]%]&]'](])]*]+],]-].]/]0]1]2]3]4]5]6]7]8]9]:];]<]=]>]?]@]A]B]C]D]E]F]G]H]I]J]K]L]M]N]O]P]Q]R]S]T]U]V]W]X]Y]Z][]\]]]^]_]`]a]b]c]d]e]f]g]h]i]j]k]l]m]n]o]p]q]r]s]t]u]v]w]x]y]z]{]|]}]~]!^"^#^$^%^&^'^(^)^*^+^,^-^.^/^0^1^2^3^4^5^6^7^8^9^?^:^;^<^=^>^@^A^B^C^D^E^F^G^H^I^N^J^K^L^M^O^P^Q^R^S^T^U^V^W^X^Y^Z^[^\^]^^^_^`^a^b^c^d^e^f^g^h^i^j^k^l^m^n^o^r^p^q^s^t^u^v^w^x^y^z^{^|^}^~^!_"_#_$_%_&_'_(_)_*_+_,_-_._/_0_2_1_3_4_5_6_7_8_9_:_;_<_=_>_?_@_A_B_C_D_E_F_G_H_I_J_K_L_M_N_O_P_Q_R_S_T_U_V_W_X_Y_Z_[_\_]_o_^___`_a_b_c_d_e_f_g_h_i_j_k_l_m_n_p_q_r_s_t_u_v_w_x_y_z_{_|_}_~_!`"`#`$`%`&`'`(`)`*`+`,`-`.`/`0`1`2`3`4`5`6`7`8`9`:`;`<`=`>`?`@`A`B`C`D`E`F`G`H`I`J`K`L`M`N`O`P`Q`R`S`T`U`V`W`X`Y`Z`[`\`]`d`^`_```a`b`c`e`f`g`h`i`j`k`l`m`n`o`p`q`r`s`t`u`v`w`x`y`z`{`|`}`~`!a"a#a$a%a&a'a(a)a*a+a,a-a.a/a0a1a2a3a4a5a6a7a8a9a:a;aa?a@aAaBaCaDaEaFaGaHaIaJaKaLaMaNaOaPaQaRaTaUaVaSaWaXaYaZa[a\a]a^a_a`aaabacadaeafagahaiajakalamanaoapaqarasatauavawaxayaza{a}a~a!b"b#b$b|a-b%b&b'b(b)b*b+b,b/b0b1b2b.b3b4b5b6b7b8b9b:b;bb?b@bAbBbCbEbFbDbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb[b\b]b^b_b`babbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzb{b|b}b~b!c"c#c$c%c&c'c(c)c*c+c,c-c.c/c0c1c2c3c4c5c6c7c8c9c:c;cc?c@cAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc[c\c]c^c_c`cacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczc{c|c}c~c!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dd?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~d!e"e#e$e%e&e'e(e)e*e+e,e-e.e/e0e1e2e3e4e5e;e6e7e8e9e:ee?e@eAeBeCeDeEeFeGeHeIeJeKeLeMeOePeNeQeReSeTeUeVeWeXeYeZe[e\e]e^e_e`eaebecedeeefehegeiejekelemeneoepeqereseteuevewexeyeze|e{e}e~e!f"f#f$f%f&f'f(f)f*f+f,f-f.f/f0f1f2f3f4f5f6f7f8f9f:f;ff?f@fAfBfCfDfEfFfGfHfIfJfKfLfMfNfOfPfQfRfSfTfUfVfWfXfYfZf[f\f]f^f_f`fafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsfufvfwfxfyfzf{f|f}f~f!g"g#g$g%g&g'g(g)g*g+g,g-g.g/g0g1g2g3g4g5g6g7g8g9g:g;gg?g@gAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg[g\g]g^g_g`gagbgcgdgegfgjggghgigkglgmgngogpgqgrgsgtgvgwgxgygugzg{g|g}g(h~g!h"h#h$h%h&h'h)h*h+h,h-h.h/h0h1h2h3h4h5h6h7h8h9h:h;hh?h@hAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh[h\h]h^h_h`hahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh{h|h}h~h!i"i#i$i%i&i'i(i)i*i+i,i-i.i/i0i1i2i3i4i5i6i7i8i9i:i;ii?i@iAiBiCiDiEiFiGiHiIiJiLiMiKiNiOiPiQiRiSiTiUiViWiXiYiZi[i\i]i^i_i`iaibicidieifigihiiijikiliminioipiqirisitiuiviwixiyizi{i|i}i~i!j"j#j$j%j&j'j(j)j*j+j,j-j.j/j0j1j2j3j4j5j6j7j8j9j:j;jj?j@jAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj[j\j]j^j_j`jajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzj{j|j}j~j!k"k#k$k%k&k'k(k)k*k+k,k-k.k/k0k1k2k3k4k5k6k7k8k9k:k;kk?k@kAkBkCkDkEkFkGkHkIkPkJkKkLkMkRkNkOkQkSkTkUkVkWkXkYkZk[k\k^k]k_k`kakbkckdkekfkgkhkikjkkkmknkoklkpkqkrksktkvkukwkxkykzk{k|k}k~k!l"l#l$l%l&l'l(l)l*l+l,l-l.l/l0l1l2l3l4l5l6l7l8l9l:l;ll?l@lAlBlClDlElFlGlHlIlJlKlLlNlOlMlPlQlRlSlTlUlVlWlXlYlZl[l\l]l^l_l`lalblcldlelflglhliljlklllmlnlolplqlrlsltlulvlwlxlylzl{l|l}l~l!m"m#m$m%m&m'm(m)m*m+m,m-m.m/m0m1m2m3m4m5m6m7m8m9m:m;mm?m@mAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm[m\m]m^m_m`mambmcmG~R_N.N0 NNNOOOOHOLOwO#OO2OO7OO@OPKPPQP@PFYPQPS`P_PgcPPlPPuQQ}QQQ1Q9QQQQRRR_RaRwRyRRRRRRRRS S SSS%S-SSSTTTTTUUUU;U=UUUU V V V9VFV^Vc VV&VV-VV5VV=W W%BW=W?HWkW~KWW_WWhWWkXX nXLXPqXXvXXyXXYYY[YcYYYYYYZ ZZDZHZZZZ[|[[[[[\g\i\z\}\\]#]']_]d]]^h^p^^^^___!_$________ `G`I``aa!a5a9+a{a0aa:aa?aaBbBbFIbPbVNbbUcAcFYcRcT_ccbccedOdTjdZdcpddzdd}ddee eeefff3fWf\fjflfufffffffggggh,h3hnhrhyh|hhhhhhiciiipirjNjV jj jj jj jj jj kk kk kk #l&l( ,ll /ll 4ll 9m&m( Cmm FnOnT Kn\n^ Qnn Tnn YoOoS \oo aoo hoo ooo spp vpHpK ypp }pp qq q-q1 qEqK qq qq rr rArE rNrP s]s` sksq ss st t&t1 tCtG tfth tt tt tt tt tt u=u@ uyu~ uu uu vv vv %vv *v8v< 0v@vK 5vmvq Avv Fw-w/ Vw4w6 YwMwO \w\wd _wpwt hww mww px!x# sx`xd vxx {xx xx xx xx yy yDyF yy z4z: zDzH z\z` zz {'{1 {={A {{ {{ {| | | |Q|^ || || || }} }} }<}A }Y}] }} "}} 1}} 6;? 9[] >af A} G K P  S ]Ԁ a fgi i l oCF y} }   " ,0 BD QW σ V\ Ą Ʌ"+ ͅ26 ׅOS ܅\d y ꅴ  F M PÐ WՐ ] h) s6= W[ y{ #( ǒ.0 ͒5G ВMQ ei np u 𒈒 Ւ *437CGIHPRKmvN}X^ēak ru.4xkrЕٕ"&7=TX{ݖ!#W[vxėǗ͗ח.5QZbf 1<FH*X`-69< $?JNDI՚NQ3:gUWohnruyy~"*57AEN_hkŝɝ/4̝ikҝ՝ԝܝޝz|잀9GS^$mu09B"D*"*!*$***#*))!*.*2*1*4*3*@*?*B*A*P*R*Q*T*X*S),*c*b*e*d*r)0)N+"+!+$+*+#+))A+.+2+1+4+3+@+?+B+A)C+P+R+Q+T+X+S)L+c+b+e+d+r)P+s*'+'*%+%*(+(*+++*,+,*/+/*-+-*0+0)")B*7+7*6+6*8+8*5+5*:+:*;+;*=+=*<*>+>)$)D*G+G*E+E*F+F*D)E)&)F*H+H*I+I)G*J+J*L+L*K+K)))I)()H*M+M*O+O*N+N)J)+)K*W+W*V+V)-)M*Y+Y*[+[*Z+Z*\+\*]+]*_+_*^+^*a+a*`+`)/)O*l+l*i+i*f+f*k+k*h+h*j+j*q+q*t+t*s*u+u*w+w*v+v*&+&*C+C*U+U*g+g*p+p*m+m*o+o*n+n"/"2"6"5"3"8"9&a&b&c&d&g&i&l&v&e&j&q&r&s&t&{&u&z&w&y&|'B'C'D'E'F'G'H'I'J'K'L'M'N'r's't'u'v'w'x'y'z'{'|'}'~0+0,0-0G0H0I0O0P0Q0R0S0T0Y0Z0[0\0h0i0j0k0v0w0x0y0z0{0|0}0~1!1&1'1(1)1112131415161718191:1;1<1=1>1?1F1G1H1I1J1R1S1T1U1V1W1_1`1a1b1c1g1h1i1l1m1n1o1p1q1|1}1~2!2"2#2$2%2&2'2(2)2*2+2J2K2L2M2N2O2P2R2T2U2V2W2X2_2`2a2b2c2d3"3#3$3%3&3,3-3.33343536373E3F3G3J3K3L3R3S3T3U3V3W3X3Y3Z3[3\3_3`3a3b3c3d3r3s3t3u3}3~4!4%4&4'4(4)4*4+4,4-4.4/4344454Q4R4S4T4U5-5.5/505152545556575B5C5D5E5F5H5I5J5K5L5S5T5U5j5k5l5m5n5o5}5~6!6-6.6/606162696:6;6<6=6>6?6@6A6B6H6I6J6K6L6Z6[6\6]6^6_6`6a6b6c6d6e6k6l6m6p6q6n6o6w6x6y6z6{7-7.7/7071797:7;7E7F7G7H7I7J7K7L7M7N7O7P7Q7R7S7Y7Z7[7\7]7^7_7a7b7c7w7x7y8$8%8&8.8/80818:8;8<8=8>8?8@8A8B8C8D8H8I8J8c8d8e8w8x8y8z8{8|919293949@9A9B9F9G9H9I9J9N9O9P9[9\9]9^9p9q9r9s9t9w9x9y9z:C:D:E:F:G:L:M:N:O:P:_:`:a:b:c:|:}:~;%;&;';(;/;0;1;2;G;H;I;J;X;Y;Z;[;\;h;i;j;k<;<<<=<>=?=@=A=E=F=G=H=I=J=K=L=M=_=`=a>%>&>'>(>)>*><>=>>>?>@>A>B>C>K>L>M>N>X>Y>Z>[>\>]>^>e>f>g>h>p>q>r>v>w>x>y>z>{?3?4?5?6?8?9?:?;?E?E@EAEDEEEFEHEIEJEPEQEREXEYEZEbEcEdF&F'F(F)F*F+F,F-F.F/FMFNFOFiFjFkFlFmFnFoFpFxFyFzF{F|F}F~G3G4G5GJGKGLGMGvGwGxGyGzG|G}G~H1H2H3H4H8H9H:HTHUHVHWHdHeHfHgHhHiHjHkHlHmHqHrHsHtHuHvHwI+I,I-I9I:I;IK?K@KAKEKFKGKHKIKXKYKZK[K\K]K^KzK{K|K}K~L!L"L#L+L,L-L.L/L0L1L2L3L4L5L8L9L:L;LCLDLELMLNLOLPLQLRLSLTLULVLWLXLYLZL[L\L]L^L_L`LaLbLcLdLeLzL{L|M-M.M/M0M=M>M?M@MAMBMOMPMQMYMZM[McMdMeMfMgMhMiMjMlMmMnMoMpMqMrMsMtM}M~N!N"N$N%N&N'N(N)N#N*N0N1N2N3N:N;NN?N@NANBNCNDNENFNgNhNiNjNkNlNtNuNvNzN{N|N}N~O!O%O&O'O(O/O0O1OBOCODOUOVOWOfOgOhOiOtOuOvOsOyOzO{O|O}O~P$P%P&P)P*P+P,P/P0P1P@PAPBPCPNPOPPPcPdPePfPgPhPiPjQ:Q;QQ?Q@QAQBQGQHQIQJQjQkQlQmQwQxQyQzQ{Q|Q}Q~R!R#R$R%R&RDRERFRGRMRNRORPRQRURVRWRXRYRZR[R\R]R^R_R`RbRcRdReRvRwRxRuRyRzR{R|R}R~S4S5S6S7S8S;SW?W@WAWBWCWDW[W\W]W^W_W`WaWbWdWeWfWgWhWiWjWkWlWmWsWtWuWyX>WcWzW{W|X+X,X-X.X/X4X5X6X9X:X;XWXXXYXZX[XnXoXpXqY$Y%Y&Y'Y5Y6Y7Y8Y9Y:Y;Y)Y=Y>Y?YBYCYDYEYFYIYJYKYLYMYNYOYPYSYTYUYVYWYXYgYhYiYjYkYlYmYnZ%Z&Z'Z(Z)Z4Z5Z68fZ7Z9Z:Z;ZZ@ZAZBZCZDZHZIZJZSZTZUZWZXZYZZZ[Z\Z]Z^Z_Z`ZaZbZuZvZwZxZy["[#[$[%[&['[([)[*[+[8[9[:[;[<[=[>[?[@[C[D[E[F[K[L[M[S[T[U[][^[_[k[l[m[n[p[q[r[s[o[t[u[v[w[x\&\'\(\)\9\:\;\<\=\>\E\F\G\H\I\J\K\L\P\Q\R\W\X\Y\Z\[\\\]\^\_\a\b\c\d\e\f\s\t\u\v\w\x\~]!]"]#]/]0]1]2]4]5]6]7]8]G]H]I]J]_]`]a]g]h]i]j]k]l]m]n]o^&^'^(^)^*^+^,^-^.^3^4^5^D^E^F^G^H^I^J^K^L^l^m^n^o^r^p^q_R_S_T___`_a_b_c_n_p_q_r_u_v_w_|_}_~`!`"`#`&`'`(`)`-`.`/`0`2`3`4`5`6`7`9`:`;`<`=`>`?`@`G`H`I`J`T`U`V`W`d`^`_```k`l`m`u`v`w`x`y`z`{a#a$a%a&a'a(a.a/a0a1a2aQaRaTaUaVaSamanaoapaqarasatavawaxayaza~b!b"b#b$b%b&b'b(b)b*b+b3b4b5b6b7b8b9bb?b@bAbBbCbEbFbDbGbHbMbNbObPbQbRbXbYbZb[babbbcbjbkblbmbsbtbubvbwbxbyb{b|b}b~c!c"c#c,c-c.c/c0c1c2c3c8c9c:c;cc?c@cHcIcJcKcLcMcNcOcQcRcScTcUcVcWcXcYcZc[c\c^c_c`cachcicjckclcmcncocpcqcrcsctcucvcwcxcyczc{c|d$d%d&d'd,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dd@dAdBdCdDdEdFdGdHdIdJdKdLdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdxdydzd{d|d}d~e"e#e$e%e&e7e8e9e=e>e?e@eAeBeCeDeEeOePeNeQeReSeYeZe[e\e]e^e`eaebecedeeeuevewexeyezf$f%f&f'f(f)f*f8f9f:f;ff?f@fAfFfGfHfIfMfNfOfPfQfRfUfVfWfXf\f]f^f_f`fafbfcfjfkflfwfxfyg'g(g)g3g4g5g6ggDgEgFgGgHgPgQgRgSgTgUgVgWgXgYgZg[g\g]g^g_g`gagbgdgegfgjggghgigkh"h#h$h%h&h'h-h.h/h0h1h2h3h4h5h6h7h?h@hAhBhIhJhKhLhThUhVhWhXhYh_h`hahbhchdhehfhghjhkhlhphqhrhshthuhvh{h|h}i.i/i0i7i8i9i@iAiBiCiNiOiPiQiZi[i\i]iiijikiyizi{i|i}i~j!j"j#j$j%j&j'j(j)j*j3j4j5j6j7j8j=j>j?jFjGjHjIjJjKjMjNjOjPjSjTjUjVjWjXjYjZj[j\jejfjgjjjkjljmjnj}j~k!k"k*k+k,k-k.k/k0k1k2k3k4k5k6k8k9k:kk?kBkCkDkEkFkGkHkIkPkJkKkLkRkNkOkQkbkckdkekfkgkhkikxkykzl)l*l+l,l-l.ll?lAlBlClPlQlRlSlTlUlYlZl[l\l]l^l_l`laljlklllmlnlolplxlylzl{l|l}m&m'm(m)m*m+m,m-m.m/m:m;mm?m@mAmBmCmDmEmFmGmHmImJmKmLmOmPmQmRmSmTmUmXmYmZm[m\m]m^m`mambmc~"7"B"p"C"m"l"n"4"1"k+9"0&x!"q!""oN0!N0"N0#N 0$N0%N0&N#0'N$0(N(0)N+0*N50.N@0/NA00ND01NG02NQ03NZ04N\05Nc06Nh07Ni08Nt09Nu0:Ny0;N0N0?N0@N0AN0BN0CN0DN0EN0FN0JN0KN0LN0MN0NO0UO 0VO 0WO0XO.0]O10^O30`O50aO70bO90cO;0dO>0eO@0fOB0gOR0lOT0mOV0nOX0oO_0pO`0_Oc0qOj0rOl0sOn0tOq0uO1"O1#O1$O1%O1*O1+O1,O1-O1.O1/O10O1@O1AO1BO1CO1DO1EP1KP1LP 1MP 1NP1OP1PP1QP"1XP'1YP.1ZP01[P21\P31]P51^P;1vPJ1dPL1ePN1fPW1jPY1kPj1rPm1sPp1tPq1uP1wP1xP1yP1zP1{P2,P2-P2.P2/P20P21P22P23P24P25P26P27P28P29P2:P2;P2P2?P2@P2AP2BP2CP2DP2EP2QP2FP2GP2HQ2IQ2SQ#2YQ'2ZQ(2[Q,2\Q-2]Q/2^QB2eQJ2fQO2gQS2hQU2iQW2jQX2kQ_2lQd2mQf2nQ~2oQ2pQ2qQ2rQ2sQ2tQ2uQ2vQ2wQ2xQ2yQ2zQ2{Q2|Q2}Q2~Q3!Q3'Q3(Q3)Q3*Q3+Q3/R30R31R32R"38R(39R13:R23;R53RI3?RU3@RW3ARX3BRZ3CR\3DRf3HRn3IR3MR3NR3OR3PR3QR3]R3^R3eR3fR3gR3hR3iR3jR3kR3lR3mR3nR3oR3pR3qR3vR3wR3xR3yR3zS3{S3|S4"S4#S4$S040S241S542SB46SK48SL47SY49S[4:Sa4;Sc4Sm4?Sr4@Sy4AS~4BS4CS4DS4ES4FS4GS4HS4IS4JS4KS4LS4MS4NS4OS4PS4VS4WS4XS4YS4ZS4[S4\S4]S4^S4_S4`S4aS4bS4cT4dT4eT4fT!4gT'4hT(4iT*4jT/4kT14lT44mT54nTC4oTD4pTG4qTM4rTO4sT^4tTb4uTd4vTf4wTg4xTi4yTk4zTm4{Tn4|Tt4}T4~T5!T5"T5#T5$T5%T5&T5'T5(T5)T5*T5+T5,T53T58T59T5:T5;T5T5?T5@T5AU5GU5MU*5NU+5OU25PU55QU65RUA5VUG5WUI5XUJ5YUM5ZUP5[UQ5\UX5]UZ5^U[5_U^5`U`5aUa5bUd5cUf5dU5eU5fU5gU5hU5iU5pU5qU5rU5sU5tU5uU5vU5wU5xU5yU5zU5{U5|U6"U6#U6$U6%U6&U6'U6(U6)V6*V6+V 6,V63V,64V065V366V567V768VI6CVK6DVM6EVO6FVT6GVf6MVi6NVm6OVo6PVq6QVr6RVu6SV6TV6UV6VV6WV6XV6YV6fV6gV6hV6iV6jV6rV6sV6tV6uV6vV6}V6~V6|V7!V7"W7#W7$W7%W 7&W 7'W7(W7)W7*W7+W7,W)72W*73W,74W.75W/76W377W478WE7WM7?WR7@Wb7AWe7BWg7CWh7DW7TW7UW7VW7WW7`W7XW7dW7eW7fW7gW7hW7iW7jW7kW7lW7mW7~W7nW7oW7pW7qW7rW7sW7tW7uW7vX7zX7{X7|X 7}X 8!X 8"X8#X&8'X'8(X-8)X28*X98+X?8,XI8-XU82X_83Xa84Xd85Xg86Xh87Xx88X|89X8EX8FX8GX8KX8LX8MX8NX8PX8QX8OX8RX8SX8TX8UX8VX8WX8XX8YX8ZX8[X8\X8]X8^Y8_Y8`Y 8aY 8bY8gY!8hY#8iY$8jY(8kY/8lY08mY38nY58oY68pY?8qYC8rYF8sYR8tYS8uYY8vYk8}Ym8~Yo9!Yr9"Yu9#Yv9$Yy9%Y{9&Y|9'Y9(Y9)Y9*Y9+Y9,Y9-Y9.Y9/Y90Y95Y96Y97Y98Y99Y9:Y9;Y9Y9?Y9CY9DY9EY9KZ9LZ9MZ9QZ9RZ9SZ#9TZ$9UZ'9VZ(9WZ*9XZ-9YZ09ZZL9_ZP9`ZU9aZ^9bZc9cZe9dZg9eZm9fZw9gZz9hZ{9iZ~9jZ9kZ9lZ9mZ9nZ9oZ9uZ9vZ9{Z9|Z9}Z9~Z:!Z:"Z:#Z:$Z:%Z:&Z:'Z:(Z:)Z:*Z:+Z:,Z:-[:.[:/[:0[:1[:3[:4[:5[!:6[%:7[-:8[4:2[8:9[A::[K:;[L:<[R:=[V:>[^:?[h:@[n:A[o:B[:H[:I[:J[:K[:Q[:R[:S[:T[:U[:V[:W[:X[:Y[:Z[:[[:\[:][:^[:d[:e[:f[:g[:h\ :i\:j\:k\:l\#:m\&:n\):o\+:p\,:q\.:r\0:s\2:t\5:u\6:v\Y:w\Z:x\\:y\b:z\c:{\m;!\p;"\t;#\u;$\;)\;*\;+\;,\;-\;.\;3\;4\;5\;6\;7\;8\;9\;:\;;\;=\;<\;>\;?\;@\;A];B];C] ;D];E]+;F]1;K]4;L]9;M]=;N]?;O]B;P]C;Q]F;R]H;S]J;W]Q;U]U;T]Y;V]j;]]m;^]p;_]y;`]z;a]~;b];c];d];e];f];g];l];m];n];o];p];q];r]ft];s];t];u];v];w];x];z];y];{];|];}];~]<1^I<4^K<2^P<3^Q<5^V<6^X<7^[<8^\<9^^<:^!`>"`>#`>$`>+`>,`>-`>.`>/`>0`>1`>2`>3`>4`>5`>6`>7a>8a>9a >:a >;a>Da>Ea">Fa*>Ga+>Ha0>Ia1>JaA>OaE>PaF>QaI>Ra^>Sa`>Tal>Uar>Vax>Wa>_a>`a>aa>ba>ca>da>ia>ja>ka>la>ma>na>oa>sa>ta>ua>~a>|a>}a?!a?"a?#b?$b?%b?&b?'b?(b?)b?*b ?+b"?,b#?-b'?.b)?/b+?0b9?1b=?2bL?7bZ?=b\?>bd??bm?@bo?Abs?Bbz?Cb}?Db?Ib?Jb?Kb?Lb?Mb?Nb?Ob?Pb?Qb?Rb?Sb?Tb?Ub?Vb?Wb?Xb?Yb?Zc?[c?\c ?]c ?^c ?_c?`c?ac?bc?cc)?dc*?ec-?fc5?gc6?hc9?icc@?c@@c@Ac@Bc@Cc@Dc@Ec@Fd @Gd @Hd@Id@Jd@Kd@Ld@Md @Nd"@Od$@Pd%@Qd)@Rd*@Sd/@Td0@Ud5@Vd=@Wd?@XdK@Ydm@gds@hdt@id{@jd}@kd@ld@md@qd@rd@sd@td@ud@vd@wd@xd@yd@zd@{dA!dA)dA*dA+dA,dA-dA.dA/dA0dA1dA2dA3dA4eA5eA6eA:eA;eAeA?eA@eAAe"ABe&ACe)ADe.AEe1AFe:AGefsBDfBPfBQfBXfBYfBZfB[fB\fB]fBbfBcfBdfBefBffBgfBhfBifBjfBkfBlfBmfB?gBngBogBpgBqgBrgBsg Btg"Bug3Bvg>BwgEBxgGBygHBzgLB{gTB|gUB}g]B~gfC!glC"gnC#gtC$gvC%g{C&gC'gC(gC)gC*gC+gC,gC-gC.gC/gC0gC4gC9gC:gC;gCgC?gC@gCAgCBgCCgCDgCEgCFgCGgCHgC8hCJhCKhCLhCMh'COh(CNh;CVh?CWhDCXhECYhJCZhLC[hRCIhUC\hWC]hXC^h[C_hkC`huCfhCkhClhCmhCnhCohCphCqhCrhCshCthCuhCvhCwhCxhCyhCzhC{hC|hC}hD$hD%hD&hD'hD(hD0hD1iD5i D6i D7iD8iD9iD:iD;iDi5D?i8D@i;DAiBDBiEDCiIDDiNDEiWDFi[DGilDNizDRi{DSiDTiDUiDViDWiDXiDYiDZiD[iD\iD]iD^iD_iD`iDaiDbiDciDdiDeiDfiDgiDhiDiiDjiDkiDliDmiDniDoiDpiDqjDrjDsjDtjDujDvjDwjDxjDyj Dzj$D{j(D|j0D}j2D~j4E!j7E"j;E#j>E$j?E%jEE&jFE'jIE(jJE)j[E0jdE1jgE2jjE3jqE4jsE5j~E6jE7jE8jE9jE:jE;jEkF?kF@kFAkFBlFClFDlFEl FFl FGlFHlFIlFJlFKlFLl,FPl.FQl3FRl5FSl6FTl:FUl;FVl?FWlJFXlKFYlMFZlOF[lRF\lTF]lYF^l[F_l\F`lgG6lkFalmFbloFcltFdlvFelxFflyFgl{FhlFqlFrlFslFtlFulFvlFwlG!lG"lG#lG$lG%lG&lG'lG(lG)lG*mG+mG,m G-mG.mG/mG0mG1mG2m.G7m/G8m1G9m9G:mm_G?maG@meGAmgGBmoGCmpGDm|GEmGFmGGmGHmGImGNmGOmGPmGQmGRmGSmGTmGUmGVmGWmGXmGYmGZmG[mG\mG]mG^mG_mG`mGamGbmGcmGdmGemGfnGgnGhnGin"Gjn'Gkn2Gln6Gmn9Gnn;GonnH?nH@oHAoHBo HCo HDo HEoHFoHGoHHoHIo&HJo)HKo*HLo-HSo/HMo0HNo3HOo6HPo;HQop]I?p^I@pdIBpeICplIDpnIEpuIFpvIGp~IHpIIpIJpIKpIQpIRpISpITpIUpIVpIWpIXpI_pI`pIaq Igq IhqIiqIjq Ikq+Ilq8IqqAIrqPIxqRIyqWIzqZI{q\I|q^I}q`I~qhJ!qyJ"qJ#qJ$qJ%qJ&qJ'qJ(qJ)qJ*qJ+qJ0qJ4qJ5qJ6qJ7qJ8qJ9qJ:qJ;qJrJBrJCrJDrJErJFr$JGr+JHr/JIr4JJr8JKr9JLrSJTrUJUrVJVrZJWr\JXr^JYr`JZrcJ[rhJ\rkJ]rnJ^roJ_rqJ`rwJarxJbr{Jcr|JdrJerJfrJgrJhrJirJjrJkrJlrJmrJnrJorJprJqrJrrJsrJtrJurJvrJwrJxrJyrJzrJ{rJ|rJ}rJ~rK!sK"sK#sK$sK%s K&s K'sK(sK)sK*sK+sK,s"K-s$K.s'K/s(K0s,K1s1K2s2K3s5K4s:K5s;K6s=K7sCK8sMK9sPK:sRK;sVKtRL?tWL@t]LAtbLBtkLFtmLGtnLHtqLItrLJtLKtLLtLftLgtLhtLitLjtLktLltLmtLntLotLptLqtLrtLstLttLutLvtLwtLxtLytL}uL~uM!uM"uM#u M$u!M%u$M&u'M'u)M(u*M)u/M*u6M+u9M,uCM1uGM2uHM3uNM4uPM5uRM6uWM7u^M8u_M9uaM:uoM;uqMNowBNpwENqwFNrwJNswRNwwVNxwWNywgO"wjO#wlO$wzO)w}O*wO+wO,wO-wO.wO2wO3wO4wO5wO6wO7wO8wO9wO:wO;wOwO?wO@wOAwOEwOFwOGwOHwOIwOJwOKwOLwOMxONxOOx OPx OQxORxOSxOTx-OXx.OYx0OZx5O[x7O\xCO]xDO^xGO_xHO`xLOaxNObxROcx\Odx^OexhOjxjOkxnOlxzOmx~OnxOoxOpxOqxOrxOwxOxxP!xP"xP#xP'xP(xP.xP-xP2xP3xP4xP5xP7xP8xP9xP:xP;yP6yPyP?y%PDy'PEy)PFy-PGy1PHy4PIy5PJy;PKy=PLy?PMyJPQyKPRyOPSyQPTyTPUyXPVy[PWy\PXygPYyiPZykP[yrP\yyP]y{P^y|P_y~P`yPayPbyPkyPlyPmyPnyPoyPpyPqyPryPsyPtyPuyPvyPwyPxyPyyPzyP{yP|yP}yP~yQ!yQ"yQ#yQ$yQ%yQ&yQ'yQ(yQ)zQ*zQ+zQ,z Q-z Q.z Q/zQ0zQ1zQ2zQ3z!Q4z'Q5z+Q6z-Q7z/Q8z0Q9zLQCzUQDzVQEzYQFzeQKzgQLzjQMzmQNzuQOzxQPz~QQzQRzQSzQTzQUzQVzQWzQXzQYzQZzQ[zQ\zQ]zQ^zQ_zQ`zQazQbzQczQdzQezQfzQgzQhzQizQnzQozQpzQqzQr{Qs{Qt{Qu{#Qv{4R"{GR'{NR({UR){`R*{dR+{fR,{iR-{jR.{mR/{oR0{rR1{sR2{wR3{R4{R5{R6{R7{R8{R9{R:{R;{R<{R={R>{R?{R@{RA{RB{RC{RH{RI{RJ{RK{RL{RR{RS{RT| Ra|Rf|Rg| Rh|%Ri|&Rj|(Rk|,Rl|1Rm|3Rn|4Ro|6Rp|9Rq|:Rr|FRs|JRt|aS!|cS"|gS#|iS$|mS%|nS&|pS'|rS(|yS)||S*|}S+|S,|S-|S.|S/|S0|S1|S2|S3|S9|S:|S>|S?|SF|SG|SH|SI|SJ}SK}SS}ST}SU}#SV}&SW}*SX}-SY}1SZ}GS`}HSa}MSb}QSc}SSd}WSe}eSj}gSk}jSl}pSm}xSn}zSo}{Sp}S{}S|}S}}S~}T!}T"}T#}T$}T%}T&}T'}T(}T1}T2}T4}T5}T6}T7}T8}T9}T:}T;}T<}T=}T>~T3~T?~T@~TA~TB~TC~TD~TE~ TF~'TG~(TH~,TI~-TJ~/TK~3TL~6TM~?TN~DTO~ETP~GTQ~NTR~PTS~RTT~XTU~_TV~aTW~bTX~eTY~kTZ~nT[~oT\~sT]~xT^~~T_~T`~Ta~Tb~Tc~Td~Te~Tf~Tg~Th~Ti~TjCTpDTqGTrOTsRTtSTumT~qU!U&U+U,U-U.U/U0U1U2U3U4U5U6U7U8U9U:U;U<U=U>U?U@UAUBUCUDUHUI UJ$UV&UW,UX.UY0UZ4U[5U\7U]9U^:U_Ua@UbDUc`UddUefUfmUgqUhuUiUjUkUlUmUnUoUpUqUrUsUtUuUvUwU|U}U~V!V"V#V$V%V&V'V( V)V-V. V/$V0'V1,V20V35V4:V5mVBoVCwVDVEVJVKVFVLVMVNVOVPVQVRVSVTVVVWVXVUVYVZV[V\V]V^V_V`VaVbVcVkVlVmVnVoVpVqVrVsVt!Vu"Vv(Vw2Vx4Vy:VzKW!NW"OW#QW$VW%\W&`W'cW(gW)mW*tW+{W,W3W4W5W6W7W8W9W:W;W\j@\kB\lE\mF\nI\oO\pR\qW\rk\yn\zp\{s\|u\}]$]%]&]'](])]*]+],]-].]3]9]:];]<]=]>]?]@]A]B]C]D]E]F]K ]L"]M$]N&]O+]P,]Q/]R5]S7]T=]U>]V@]WC]XE]YG]ZI][M]\N]]S]^\]b]]ca]de]eg]f]p]q]r]s]t]u]v]w]x]y]z]{]|]}]~^!^"^#^$^%^/^0^1^2^6^7^8^9 ^? ^:^;^<^=^>-^@0^A7^B<^CM^NY^M^^Oc^Pm^Qv^Rx^Sy^T|^U~^V^W^X^Y^Z^[^\^]^^^_^`^a8^b9^c=^d>^eE^fG^gI^hK^iO^jQ^kc^sd^tf^uh^vi^wm^xs^yu^zv^{{^|~^}^~_!_"_#_$_%_&_'_(_)_*_+_,_-_._/_0_2_1_3_4_5_6_7_8_9_:_;_<_=_>_?_@_A _B_C_D_Ee_Fi_Gl_Hn_I_J_K_L_M_N_O_P_Q_U_V_W_X_Y_Z_[_\_]_o_^_d_e_f_g_h_i_j_k_l_m_s_t _x_y_z_{1`$3`%=`*@`+A`,T`1i`8`A`B`C`D`E`F`K`L`M`N`O`P`Q`R`S`X`Y`Z`[`\`]`a`b`c`e`f`g`h`i`j`n `o!`p#`q%`r'`s(`t:`|@`}A`~Ca!Ga"Xa)]a*^a+ea,a-a3a4a5a6a7a8a9a:a;aa?a@aAaBaCaDaEaFaGaHaIaJaKaLaM aNaOaP3aW4aX7aY?aZCa[Da\La][a^]a_ba`faagablacpadtaeyafagahaiajakalaua{a}a|b-b,b/b0b1b2b. b:b;.bI/bJ1bK4bLCbSGbTHbUObVSbWab\db]gb^mb_tb`bdbebfbgbhbibnbobpbqbrbzc$c%c&c'c(c)c*c+c4c5c6c7cAcBcCcDcEcFcG3cPJc]XcbYcc\cd]ce`cfacgc}c~d!d"d#d(d)d*d+d?dMdNdOdPdQdRdSdTdU dVdWdXdYUdnWdoXdpZdq^drddsedtgduidvjdwze!e'e(e)e*e+e,e-e.e/e0e1e2e3e4e5e;e6e:eh)Dh*Gh+Jh,jh8lh9h:h;hhChDhEhFhGhHhMhNhOhPhQhRhShZ"h[&h\'h]+h^@hhAhiMhmNhnThohwhxhyhzh~i!i"i#i$i%i&i'i(i)i*i+i,i-i1i2i3i4i5i6 i: i;i<i=i>i?'iD-iE.iF3iG5iH6iI8iJAiLDiMGiKQiRTiSViT]iUiViWiXiYi^i_i`iaibicidieifigihiliminioipiqirisitiuiviwixj+j,j-j. j/&j0+j1-j2=j9Hj:Kj;Lj<[j@^jAajBcjCejDfjEsjLjQjRj]j^j_j`jajbjcjdjhjijojpjqjrjsjtjujvjwjxjyjzj{j|k#k$k%k& k'k(k)1k7=k;Ik@JkAckMnkSpkTrkUukVwkW{kXkYkZk[k\k^ k]k_k`ka:kjSSSTTTTTUUU;U=UUUUU  VV 9VFV^VcV VV&VV-VV5VV= W%WB=W?WHkW~WKWW_WWhWWkX XnLXPXqXXvXXyXXYY[YcYYYYYYY ZZDZHZZZZZ|[[[[[[g\i\z\}\\\#]']_]d]]]h^p^^^^^__!_$_________ G`I```aa!5a9a+{aa0aa:aa?aaBBbFbIPbVbNbbUAcFcYRcTc_ccbcceOdTdjZdcdpddzdd}dde eeeeff3fWf\fjflfuffffffffgggg,h3hnhrhyh|hhhhhhhciiipiriNjVj jj jj jj jj jj kk kk kk# &l(l, ll/ ll4 ll9 &m(mC mmF OnTnK \n^nQ nnT nnY OoSo\ ooa ooh ooo oos ppv HpKpy pp} pp qq -q1q EqKq qq qq r r ArEr NrPr ]s`s ksqs ss st &t1t CtGt ftht tt tt tt tt tt =u@u yu~u uu uu v v vv% vv* 8v afA }G K P S  ] Ԁ؀a f gii l o CFy }}   " ,0 BD QW σу V\ "+ 26 OS \d y  F M P ÐȐW Րߐ] h )s 6= W[ y{ ő #( .0 5G MQ ei np u ВՒ *437CGIHPRKmvN}X^ē͓ak ru.4xkrЕӕٕ"&7=TX{ݖߖ!#W[vxїח.5QZbf 1<FH*X`-69< $?JNDI՚ךNQ3:gUWohnruyy~"*57AEN_hk/4ikԝםޝz|9GS^$mu09BD""*!*$***#*)*!).*2*1*4*3*@*?*B*A*P*R*Q*T*X*S*,)c*b*e*d*r*0)N)"+!+$+*+#+)+A).+2+1+4+3+@+?+B+A+C)P+R+Q+T+X+S+L)c+b+e+d+r+P)s+'*'+%*%+(*(++*++,*,+/*/+-*-+0*0+")B)7*7+6*6+8*8+5*5+:*:+;*;+=*=+<*>*>+$)D)G*G+E*E+F*F+D*E)&)F)H*H+I*I+G)J*J+L*L+K*K+))I)()H)M*M+O*O+N*N+J)+)K)W*W+V*V+-)M)Y*Y+[*[+Z*Z+\*\+]*]+_*_+^*^+a*a+`*`+/)O)l*l+i*i+f*f+k*k+h*h+j*j+q*q+t*t+s*u*u+w*w+v*v+&*&+C*C+U*U+g*g+p*p+m*m+o*o+n*n+/"2"6"5"3"8"9"a&b&c&d&g&i&l&v&e&j&q&r&s&t&{&u&z&w&y&|&B'C'D'E'F'G'H'I'J'K'L'M'N'r's't'u'v'w'x'y'z'{'|'}'~'+0,0-0G0H0I0O0P0Q0R0S0T0Y0Z0[0\0h0i0j0k0v0w0x0y0z0{0|0}0~0!1&1'1(1)1112131415161718191:1;1<1=1>1?1F1G1H1I1J1R1S1T1U1V1W1_1`1a1b1c1g1h1i1l1m1n1o1p1q1|1}1~1!2"2#2$2%2&2'2(2)2*2+2J2K2L2M2N2O2P2R2T2U2V2W2X2_2`2a2b2c2d2"3#3$3%3&3,3-3.33343536373E3F3G3J3K3L3R3S3T3U3V3W3X3Y3Z3[3\3_3`3a3b3c3d3r3s3t3u3}3~3!4%4&4'4(4)4*4+4,4-4.4/4344454Q4R4S4T4U4-5.5/505152545556575B5C5D5E5F5H5I5J5K5L5S5T5U5j5k5l5m5n5o5}5~5!6-6.6/606162696:6;6<6=6>6?6@6A6B6H6I6J6K6L6Z6[6\6]6^6_6`6a6b6c6d6e6k6l6m6p6q6n6o6w6x6y6z6{6-7.7/7071797:7;7E7F7G7H7I7J7K7L7M7N7O7P7Q7R7S7Y7Z7[7\7]7^7_7a7b7c7w7x7y7$8%8&8.8/80818:8;8<8=8>8?8@8A8B8C8D8H8I8J8c8d8e8w8x8y8z8{8|819293949@9A9B9F9G9H9I9J9N9O9P9[9\9]9^9p9q9r9s9t9w9x9y9z9C:D:E:F:G:L:M:N:O:P:_:`:a:b:c:|:}:~:%;&;';(;/;0;1;2;G;H;I;J;X;Y;Z;[;\;h;i;j;k;;<<<=<>=?=@=A=E=F=G=H=I=J=K=L=M=_=`=a=%>&>'>(>)>*><>=>>>?>@>A>B>C>K>L>M>N>X>Y>Z>[>\>]>^>e>f>g>h>p>q>r>v>w>x>y>z>{>3?4?5?6?8?9?:?;?E?E@EAEDEEEFEHEIEJEPEQEREXEYEZEbEcEdE&F'F(F)F*F+F,F-F.F/FMFNFOFiFjFkFlFmFnFoFpFxFyFzF{F|F}F~F3G4G5GJGKGLGMGvGwGxGyGzG|G}G~G1H2H3H4H8H9H:HTHUHVHWHdHeHfHgHhHiHjHkHlHmHqHrHsHtHuHvHwH+I,I-I9I:I;IK?K@KAKEKFKGKHKIKXKYKZK[K\K]K^KzK{K|K}K~K!L"L#L+L,L-L.L/L0L1L2L3L4L5L8L9L:L;LCLDLELMLNLOLPLQLRLSLTLULVLWLXLYLZL[L\L]L^L_L`LaLbLcLdLeLzL{L|L-M.M/M0M=M>M?M@MAMBMOMPMQMYMZM[McMdMeMfMgMhMiMjMlMmMnMoMpMqMrMsMtM}M~M!N"N$N%N&N'N(N)N#N*N0N1N2N3N:N;NN?N@NANBNCNDNENFNgNhNiNjNkNlNtNuNvNzN{N|N}N~N!O%O&O'O(O/O0O1OBOCODOUOVOWOfOgOhOiOtOuOvOsOyOzO{O|O}O~O$P%P&P)P*P+P,P/P0P1P@PAPBPCPNPOPPPcPdPePfPgPhPiPjP:Q;QQ?Q@QAQBQGQHQIQJQjQkQlQmQwQxQyQzQ{Q|Q}Q~Q!R#R$R%R&RDRERFRGRMRNRORPRQRURVRWRXRYRZR[R\R]R^R_R`RbRcRdReRvRwRxRuRyRzR{R|R}R~R4S5S6S7S8S;SW?W@WAWBWCWDW[W\W]W^W_W`WaWbWdWeWfWgWhWiWjWkWlWmWsWtWuWyW>XcWzW{W|W+X,X-X.X/X4X5X6X9X:X;XWXXXYXZX[XnXoXpXqX$Y%Y&Y'Y5Y6Y7Y8Y9Y:Y;Y)Y=Y>Y?YBYCYDYEYFYIYJYKYLYMYNYOYPYSYTYUYVYWYXYgYhYiYjYkYlYmYnY%Z&Z'Z(Z)Z4Z5Z6Zf87Z9Z:Z;ZZ@ZAZBZCZDZHZIZJZSZTZUZWZXZYZZZ[Z\Z]Z^Z_Z`ZaZbZuZvZwZxZyZ"[#[$[%[&['[([)[*[+[8[9[:[;[<[=[>[?[@[C[D[E[F[K[L[M[S[T[U[][^[_[k[l[m[n[p[q[r[s[o[t[u[v[w[x[&\'\(\)\9\:\;\<\=\>\E\F\G\H\I\J\K\L\P\Q\R\W\X\Y\Z\[\\\]\^\_\a\b\c\d\e\f\s\t\u\v\w\x\~\!]"]#]/]0]1]2]4]5]6]7]8]G]H]I]J]_]`]a]g]h]i]j]k]l]m]n]o]&^'^(^)^*^+^,^-^.^3^4^5^D^E^F^G^H^I^J^K^L^l^m^n^o^r^p^q^R_S_T___`_a_b_c_n_p_q_r_u_v_w_|_}_~_!`"`#`&`'`(`)`-`.`/`0`2`3`4`5`6`7`9`:`;`<`=`>`?`@`G`H`I`J`T`U`V`W`d`^`_```k`l`m`u`v`w`x`y`z`{`#a$a%a&a'a(a.a/a0a1a2aQaRaTaUaVaSamanaoapaqarasatavawaxayaza~a!b"b#b$b%b&b'b(b)b*b+b3b4b5b6b7b8b9bb?b@bAbBbCbEbFbDbGbHbMbNbObPbQbRbXbYbZb[babbbcbjbkblbmbsbtbubvbwbxbyb{b|b}b~b!c"c#c,c-c.c/c0c1c2c3c8c9c:c;cc?c@cHcIcJcKcLcMcNcOcQcRcScTcUcVcWcXcYcZc[c\c^c_c`cachcicjckclcmcncocpcqcrcsctcucvcwcxcyczc{c|c$d%d&d'd,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dd@dAdBdCdDdEdFdGdHdIdJdKdLdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdxdydzd{d|d}d~d"e#e$e%e&e7e8e9e=e>e?e@eAeBeCeDeEeOePeNeQeReSeYeZe[e\e]e^e`eaebecedeeeuevewexeyeze$f%f&f'f(f)f*f8f9f:f;ff?f@fAfFfGfHfIfMfNfOfPfQfRfUfVfWfXf\f]f^f_f`fafbfcfjfkflfwfxfyf'g(g)g3g4g5g6ggDgEgFgGgHgPgQgRgSgTgUgVgWgXgYgZg[g\g]g^g_g`gagbgdgegfgjggghgigkg"h#h$h%h&h'h-h.h/h0h1h2h3h4h5h6h7h?h@hAhBhIhJhKhLhThUhVhWhXhYh_h`hahbhchdhehfhghjhkhlhphqhrhshthuhvh{h|h}h.i/i0i7i8i9i@iAiBiCiNiOiPiQiZi[i\i]iiijikiyizi{i|i}i~i!j"j#j$j%j&j'j(j)j*j3j4j5j6j7j8j=j>j?jFjGjHjIjJjKjMjNjOjPjSjTjUjVjWjXjYjZj[j\jejfjgjjjkjljmjnj}j~j!k"k*k+k,k-k.k/k0k1k2k3k4k5k6k8k9k:kk?kBkCkDkEkFkGkHkIkPkJkKkLkRkNkOkQkbkckdkekfkgkhkikxkykzk)l*l+l,l-l.ll?lAlBlClPlQlRlSlTlUlYlZl[l\l]l^l_l`laljlklllmlnlolplxlylzl{l|l}l&m'm(m)m*m+m,m-m.m/m:m;mm?m@mAmBmCmDmEmFmGmHmImJmKmLmOmPmQmRmSmTmUmXmYmZm[m\m]m^m`mambmcm~7"B"p"C"m"l"n"4"1"k"9+0"x&!q""!o"N!0N"0N#0 N$0N%0N&0#N'0$N(0(N)0+N*05N.0@N/0AN00DN10GN20QN30ZN40\N50cN60hN70iN80tN90uN:0yN;0N<0N=0N>0N?0N@0NA0NB0NC0ND0NE0NF0NJ0NK0NL0NM0NN0OU0 OV0 OW0OX0.O]01O^03O`05Oa07Ob09Oc0;Od0>Oe0@Of0BOg0ROl0TOm0VOn0XOo0_Op0`O_0cOq0jOr0lOs0nOt0qOu0O"1O#1O$1O%1O*1O+1O,1O-1O.1O/1O01O@1OA1OB1OC1OD1OE1PK1PL1 PM1 PN1PO1PP1PQ1"PX1'PY1.PZ10P[12P\13P]15P^1;Pv1JPd1LPe1NPf1WPj1YPk1jPr1mPs1pPt1qPu1Pw1Px1Py1Pz1P{1P,2P-2P.2P/2P02P12P22P32P42P52P62P72P82P92P:2P;2P<2P=2P>2P?2P@2PA2PB2PC2PD2PE2PQ2PF2PG2PH2QI2QS2#QY2'QZ2(Q[2,Q\2-Q]2/Q^2BQe2JQf2OQg2SQh2UQi2WQj2XQk2_Ql2dQm2fQn2~Qo2Qp2Qq2Qr2Qs2Qt2Qu2Qv2Qw2Qx2Qy2Qz2Q{2Q|2Q}2Q~2Q!3Q'3Q(3Q)3Q*3Q+3Q/3R03R13R23"R83(R931R:32R;35R<33IR?3UR@3WRA3XRB3ZRC3\RD3fRH3nRI3RM3RN3RO3RP3RQ3R]3R^3Re3Rf3Rg3Rh3Ri3Rj3Rk3Rl3Rm3Rn3Ro3Rp3Rq3Rv3Rw3Rx3Ry3Rz3S{3S|3S"4S#4S$40S042S145S24BS64KS84LS74YS94[S:4aS;4cS<4eS=4lS>4mS?4rS@4ySA4~SB4SC4SD4SE4SF4SG4SH4SI4SJ4SK4SL4SM4SN4SO4SP4SV4SW4SX4SY4SZ4S[4S\4S]4S^4S_4S`4Sa4Sb4Sc4Td4Te4Tf4!Tg4'Th4(Ti4*Tj4/Tk41Tl44Tm45Tn4CTo4DTp4GTq4MTr4OTs4^Tt4bTu4dTv4fTw4gTx4iTy4kTz4mT{4nT|4tT}4T~4T!5T"5T#5T$5T%5T&5T'5T(5T)5T*5T+5T,5T35T85T95T:5T;5T<5T=5T>5T?5T@5TA5UG5UM5*UN5+UO52UP55UQ56UR5AUV5GUW5IUX5JUY5MUZ5PU[5QU\5XU]5ZU^5[U_5^U`5`Ua5aUb5dUc5fUd5Ue5Uf5Ug5Uh5Ui5Up5Uq5Ur5Us5Ut5Uu5Uv5Uw5Ux5Uy5Uz5U{5U|5U"6U#6U$6U%6U&6U'6U(6U)6V*6V+6 V,6V36,V460V563V665V767V86IVC6KVD6MVE6OVF6TVG6fVM6iVN6mVO6oVP6qVQ6rVR6uVS6VT6VU6VV6VW6VX6VY6Vf6Vg6Vh6Vi6Vj6Vr6Vs6Vt6Vu6Vv6V}6V~6V|6V!7V"7W#7W$7W%7 W&7 W'7W(7W)7W*7W+7W,7)W27*W37,W47.W57/W673W774W87EW<7FW=7LW>7MW?7RW@7bWA7eWB7gWC7hWD7WT7WU7WV7WW7W`7WX7Wd7We7Wf7Wg7Wh7Wi7Wj7Wk7Wl7Wm7W~7Wn7Wo7Wp7Wq7Wr7Ws7Wt7Wu7Wv7Xz7X{7X|7 X}7 X!8 X"8X#8&X'8'X(8-X)82X*89X+8?X,8IX-8UX28_X38aX48dX58gX68hX78xX88|X98XE8XF8XG8XK8XL8XM8XN8XP8XQ8XO8XR8XS8XT8XU8XV8XW8XX8XY8XZ8X[8X\8X]8X^8Y_8Y`8 Ya8 Yb8Yg8!Yh8#Yi8$Yj8(Yk8/Yl80Ym83Yn85Yo86Yp8?Yq8CYr8FYs8RYt8SYu8YYv8kY}8mY~8oY!9rY"9uY#9vY$9yY%9{Y&9|Y'9Y(9Y)9Y*9Y+9Y,9Y-9Y.9Y/9Y09Y59Y69Y79Y89Y99Y:9Y;9Y<9Y=9Y>9Y?9YC9YD9YE9YK9ZL9ZM9ZQ9ZR9ZS9#ZT9$ZU9'ZV9(ZW9*ZX9-ZY90ZZ9LZ_9PZ`9UZa9^Zb9cZc9eZd9gZe9mZf9wZg9zZh9{Zi9~Zj9Zk9Zl9Zm9Zn9Zo9Zu9Zv9Z{9Z|9Z}9Z~9Z!:Z":Z#:Z$:Z%:Z&:Z':Z(:Z):Z*:Z+:Z,:Z-:[.:[/:[0:[1:[3:[4:[5:![6:%[7:-[8:4[2:8[9:A[::K[;:L[<:R[=:V[>:^[?:h[@:n[A:o[B:[H:[I:[J:[K:[Q:[R:[S:[T:[U:[V:[W:[X:[Y:[Z:[[:[\:[]:[^:[d:[e:[f:[g:[h: \i:\j:\k:\l:#\m:&\n:)\o:+\p:,\q:.\r:0\s:2\t:5\u:6\v:Y\w:Z\x:\\y:b\z:c\{:m\!;p\";t\#;u\$;\);\*;\+;\,;\-;\.;\3;\4;\5;\6;\7;\8;\9;\:;\;;\=;\<;\>;\?;\@;\A;]B;]C; ]D;]E;+]F;1]K;4]L;9]M;=]N;?]O;B]P;C]Q;F]R;H]S;J]W;Q]U;U]T;Y]V;j]];m]^;p]_;y]`;z]a;~]b;]c;]d;]e;]f;]g;]l;]m;]n;]o;]p;]q;]r;]tf]s;]t;]u;]v;]w;]x;]z;]y;]{;]|;]};]~;]!<]"<]#<^$<^%< ^&<^'<^(<^)<^*<^+< ^,<(^.<.^-<2^/<5^0<>^1`">`#>`$>`+>`,>`->`.>`/>`0>`1>`2>`3>`4>`5>`6>`7>a8>a9> a:> a;>aD>aE>"aF>*aG>+aH>0aI>1aJ>AaO>EaP>FaQ>IaR>^aS>`aT>laU>raV>xaW>a_>a`>aa>ab>ac>ad>ai>aj>ak>al>am>an>ao>as>at>au>a~>a|>a}>a!?a"?a#?b$?b%?b&?b'?b(?b)?b*? b+?"b,?#b-?'b.?)b/?+b0?9b1?=b2?Lb7?Zb=?\b>?db??mb@?obA?sbB?zbC?}bD?bI?bJ?bK?bL?bM?bN?bO?bP?bQ?bR?bS?bT?bU?bV?bW?bX?bY?bZ?c[?c\? c]? c^? c_?c`?ca?cb?cc?)cd?*ce?-cf?5cg?6ch?9ci?@c?@c@@cA@cB@cC@cD@cE@cF@ dG@ dH@dI@dJ@dK@dL@dM@ dN@"dO@$dP@%dQ@)dR@*dS@/dT@0dU@5dV@=dW@?dX@KdY@mdg@sdh@tdi@{dj@}dk@dl@dm@dq@dr@ds@dt@du@dv@dw@dx@dy@dz@d{@d!Ad)Ad*Ad+Ad,Ad-Ad.Ad/Ad0Ad1Ad2Ad3Ad4Ae5Ae6Ae:Ae;AeAe?Ae@AeAA"eBA&eCA)eDA.eEA1eFA:eGABsfDBfPBfQBfXBfYBfZBf[Bf\Bf]BfbBfcBfdBfeBffBfgBfhBfiBfjBfkBflBfmBf?BgnBgoBgpBgqBgrBgsB gtB"guB3gvB>gwBEgxBGgyBHgzBLg{BTg|BUg}B]g~Bfg!Clg"Cng#Ctg$Cvg%C{g&Cg'Cg(Cg)Cg*Cg+Cg,Cg-Cg.Cg/Cg0Cg4Cg9Cg:Cg;CgCg?Cg@CgACgBCgCCgDCgECgFCgGCgHCg8ChJChKChLChMC'hOC(hNC;hVC?hWCDhXCEhYCJhZCLh[CRhICUh\CWh]CXh^C[h_Ckh`CuhfChkChlChmChnChoChpChqChrChsChtChuChvChwChxChyChzCh{Ch|Ch}Ch$Dh%Dh&Dh'Dh(Dh0Dh1Di5D i6D i7Di8Di9Di:Di;DiD5i?D8i@D;iADBiBDEiCDIiDDNiEDWiFD[iGDliNDziRD{iSDiTDiUDiVDiWDiXDiYDiZDi[Di\Di]Di^Di_Di`DiaDibDicDidDieDifDigDihDiiDijDikDilDimDinDioDipDiqDjrDjsDjtDjuDjvDjwDjxDjyD jzD$j{D(j|D0j}D2j~D4j!E7j"E;j#E>j$E?j%EEj&EFj'EIj(EJj)E[j0Edj1Egj2Ejj3Eqj4Esj5E~j6Ej7Ej8Ej9Ej:Ej;EjFk?Fk@FkAFkBFlCFlDFlEF lFF lGFlHFlIFlJFlKFlLF,lPF.lQF3lRF5lSF6lTF:lUF;lVF?lWFJlXFKlYFMlZFOl[FRl\FTl]FYl^F[l_F\l`Fgl6GklaFmlbFolcFtldFvleFxlfFylgF{lhFlqFlrFlsFltFluFlvFlwFl!Gl"Gl#Gl$Gl%Gl&Gl'Gl(Gl)Gl*Gm+Gm,G m-Gm.Gm/Gm0Gm1Gm2G.m7G/m8G1m9G9m:GG_m?Gam@GemAGgmBGomCGpmDG|mEGmFGmGGmHGmIGmNGmOGmPGmQGmRGmSGmTGmUGmVGmWGmXGmYGmZGm[Gm\Gm]Gm^Gm_Gm`GmaGmbGmcGmdGmeGmfGngGnhGniG"njG'nkG2nlG6nmG9nnG;noGHn?Hn@HoAHoBH oCH oDH oEHoFHoGHoHHoIH&oJH)oKH*oLH-oSH/oMH0oNH3oOH6oPH;oQHI]p?I^p@IdpBIepCIlpDInpEIupFIvpGI~pHIpIIpJIpKIpQIpRIpSIpTIpUIpVIpWIpXIp_Ip`IpaI qgI qhIqiIqjI qkI+qlI8qqIAqrIPqxIRqyIWqzIZq{I\q|I^q}I`q~Ihq!Jyq"Jq#Jq$Jq%Jq&Jq'Jq(Jq)Jq*Jq+Jq0Jq4Jq5Jq6Jq7Jq8Jq9Jq:Jq;JqJrBJrCJrDJrEJrFJ$rGJ+rHJ/rIJ4rJJ8rKJ9rLJSrTJUrUJVrVJZrWJ\rXJ^rYJ`rZJcr[Jhr\Jkr]Jnr^Jor_Jqr`JwraJxrbJ{rcJ|rdJreJrfJrgJrhJriJrjJrkJrlJrmJrnJroJrpJrqJrrJrsJrtJruJrvJrwJrxJryJrzJr{Jr|Jr}Jr~Jr!Ks"Ks#Ks$Ks%K s&K s'Ks(Ks)Ks*Ks+Ks,K"s-K$s.K's/K(s0K,s1K1s2K2s3K5s4K:s5K;s6K=s7KCs8KMs9KPs:KRs;KVsLRt?LWt@L]tALbtBLktFLmtGLntHLqtILrtJLtKLtLLtfLtgLthLtiLtjLtkLtlLtmLtnLtoLtpLtqLtrLtsLttLtuLtvLtwLtxLtyLt}Lu~Lu!Mu"Mu#M u$M!u%M$u&M'u'M)u(M*u)M/u*M6u+M9u,MCu1MGu2MHu3MNu4MPu5MRu6MWu7M^u8M_u9Mau:Mou;MquwoNBwpNEwqNFwrNJwsNRwwNVwxNWwyNgw"Ojw#Olw$Ozw)O}w*Ow+Ow,Ow-Ow.Ow2Ow3Ow4Ow5Ow6Ow7Ow8Ow9Ow:Ow;OwOw?Ow@OwAOwEOwFOwGOwHOwIOwJOwKOwLOwMOxNOxOO xPO xQOxROxSOxTO-xXO.xYO0xZO5x[O7x\OCx]ODx^OGx_OHx`OLxaONxbORxcO\xdO^xeOhxjOjxkOnxlOzxmO~xnOxoOxpOxqOxrOxwOxxOx!Px"Px#Px'Px(Px.Px-Px2Px3Px4Px5Px7Px8Px9Px:Px;Py6Py

>, and <> instead of lower case. o n Takes a pointer to <>, and stores a count of the number of bytes written so far. No output is created. o p Takes a pointer to <>, and prints it in an implementation-defined format. This implementation is similar to <<%#tx>>), except that <<0x>> appears even for the NULL pointer. o m Prints the output of <>; no argument is required. A GNU extension. o- O- <<_printf_r>>, <<_fprintf_r>>, <<_asprintf_r>>, <<_sprintf_r>>, <<_snprintf_r>>, <<_asnprintf_r>> are simply reentrant versions of the functions above. RETURNS On success, <> and <> return the number of bytes in the output string, except the concluding <> is not counted. <> returns the number of bytes that would be in the output string, except the concluding <> is not counted. <> and <> return the number of characters transmitted. <> returns the original <[str]> if there was enough room, otherwise it returns an allocated string. If an error occurs, the result of <>, <>, <>, and <> is a negative value, and the result of <> is NULL. No error returns occur for <>. For <> and <>, <> may be set according to <>. For <> and <>, <> may be set to ENOMEM if allocation fails, and for <>, <> may be set to EOVERFLOW if <[size]> or the output length exceeds INT_MAX. BUGS The ``''' (quote) flag does not work when locale's thousands_sep is not empty. PORTABILITY ANSI C requires <>, <>, <>, and <>. <> and <> are newlib extensions. The ANSI C standard specifies that implementations must support at least formatted output of up to 509 characters. This implementation has no inherent limit. Depending on how newlib was configured, not all format specifiers are supported. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "local.h" int _sprintf_r (struct _reent *ptr, char *__restrict str, const char *__restrict fmt, ...) { int ret; va_list ap; FILE f; f._flags = __SWR | __SSTR; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = INT_MAX; f._file = -1; /* No file. */ va_start (ap, fmt); ret = _svfprintf_r (ptr, &f, fmt, ap); va_end (ap); *f._p = '\0'; /* terminate the string */ return (ret); } #ifdef _NANO_FORMATTED_IO int _siprintf_r (struct _reent *, char *, const char *, ...) _ATTRIBUTE ((__alias__("_sprintf_r"))); #endif #ifndef _REENT_ONLY #undef sprintf int sprintf (char *__restrict str, const char *__restrict fmt, ...) { int ret; va_list ap; FILE f; f._flags = __SWR | __SSTR; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = INT_MAX; f._file = -1; /* No file. */ va_start (ap, fmt); ret = _svfprintf_r (_REENT, &f, fmt, ap); va_end (ap); *f._p = '\0'; /* terminate the string */ return (ret); } #ifdef _NANO_FORMATTED_IO int siprintf (char *, const char *, ...) _ATTRIBUTE ((__alias__("sprintf"))); #endif #endif picolibc-1.7.4/newlib/libc/stdio/sscanf.c000066400000000000000000000325341414576234500202650ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>, <>, <>---scan and format input INDEX scanf INDEX _scanf_r INDEX fscanf INDEX _fscanf_r INDEX sscanf INDEX _sscanf_r SYNOPSIS #include int scanf(const char *restrict <[format]>, ...); int fscanf(FILE *restrict <[fd]>, const char *restrict <[format]>, ...); int sscanf(const char *restrict <[str]>, const char *restrict <[format]>, ...); int _scanf_r(struct _reent *<[ptr]>, const char *restrict <[format]>, ...); int _fscanf_r(struct _reent *<[ptr]>, FILE *restrict <[fd]>, const char *restrict <[format]>, ...); int _sscanf_r(struct _reent *<[ptr]>, const char *restrict <[str]>, const char *restrict <[format]>, ...); DESCRIPTION <> scans a series of input fields from standard input, one character at a time. Each field is interpreted according to a format specifier passed to <> in the format string at <<*<[format]>>>. <> stores the interpreted input from each field at the address passed to it as the corresponding argument following <[format]>. You must supply the same number of format specifiers and address arguments as there are input fields. There must be sufficient address arguments for the given format specifiers; if not the results are unpredictable and likely disasterous. Excess address arguments are merely ignored. <> often produces unexpected results if the input diverges from an expected pattern. Since the combination of <> or <> followed by <> is safe and easy, that is the preferred way to be certain that a program is synchronized with input at the end of a line. <> and <> are identical to <>, other than the source of input: <> reads from a file, and <> from a string. The routines <<_scanf_r>>, <<_fscanf_r>>, and <<_sscanf_r>> are reentrant versions of <>, <>, and <> that take an additional first argument pointing to a reentrancy structure. The string at <<*<[format]>>> is a character sequence composed of zero or more directives. Directives are composed of one or more whitespace characters, non-whitespace characters, and format specifications. Whitespace characters are blank (<< >>), tab (<<\t>>), or newline (<<\n>>). When <> encounters a whitespace character in the format string it will read (but not store) all consecutive whitespace characters up to the next non-whitespace character in the input. Non-whitespace characters are all other ASCII characters except the percent sign (<<%>>). When <> encounters a non-whitespace character in the format string it will read, but not store a matching non-whitespace character. Format specifications tell <> to read and convert characters from the input field into specific types of values, and store then in the locations specified by the address arguments. Trailing whitespace is left unread unless explicitly matched in the format string. The format specifiers must begin with a percent sign (<<%>>) and have the following form: . %[*][<[width]>][<[size]>]<[type]> Each format specification begins with the percent character (<<%>>). The other fields are: O+ o * an optional marker; if present, it suppresses interpretation and assignment of this input field. o <[width]> an optional maximum field width: a decimal integer, which controls the maximum number of characters that will be read before converting the current input field. If the input field has fewer than <[width]> characters, <> reads all the characters in the field, and then proceeds with the next field and its format specification. If a whitespace or a non-convertable character occurs before <[width]> character are read, the characters up to that character are read, converted, and stored. Then <> proceeds to the next format specification. o <[size]> <>, <>, <>, <>, <>, and <> are optional size characters which override the default way that <> interprets the data type of the corresponding argument. @multitable @columnfractions 0.18 0.30 0.52 @headitem Modifier @tab Type(s) @tab @item hh @tab d, i, o, u, x, n @tab convert input to char, store in char object @item h @tab d, i, o, u, x, n @tab convert input to short, store in short object @item h @tab D, I, O, U, X, e, f, c, s, p @tab no effect @item j @tab d, i, o, u, x, n @tab convert input to intmax_t, store in intmax_t object @item j @tab all others @tab no effect @item l @tab d, i, o, u, x, n @tab convert input to long, store in long object @item l @tab e, f, g @tab convert input to double, store in a double object @item l @tab D, I, O, U, X, c, s, p @tab no effect @item ll @tab d, i, o, u, x, n @tab convert to long long, store in long long object @item L @tab d, i, o, u, x, n @tab convert to long long, store in long long object @item L @tab e, f, g, E, G @tab convert to long double, store in long double object @item L @tab all others @tab no effect @item t @tab d, i, o, u, x, n @tab convert input to ptrdiff_t, store in ptrdiff_t object @item t @tab all others @tab no effect @item z @tab d, i, o, u, x, n @tab convert input to size_t, store in size_t object @item z @tab all others @tab no effect @end multitable o <[type]> A character to specify what kind of conversion <> performs. Here is a table of the conversion characters: o+ o % No conversion is done; the percent character (<<%>>) is stored. o c Scans one character. Corresponding <[arg]>: <<(char *arg)>>. o s Reads a character string into the array supplied. Corresponding <[arg]>: <<(char arg[])>>. o [<[pattern]>] Reads a non-empty character string into memory starting at <[arg]>. This area must be large enough to accept the sequence and a terminating null character which will be added automatically. (<[pattern]> is discussed in the paragraph following this table). Corresponding <[arg]>: <<(char *arg)>>. o d Reads a decimal integer into the corresponding <[arg]>: <<(int *arg)>>. o D Reads a decimal integer into the corresponding <[arg]>: <<(long *arg)>>. o o Reads an octal integer into the corresponding <[arg]>: <<(int *arg)>>. o O Reads an octal integer into the corresponding <[arg]>: <<(long *arg)>>. o u Reads an unsigned decimal integer into the corresponding <[arg]>: <<(unsigned int *arg)>>. o U Reads an unsigned decimal integer into the corresponding <[arg]>: <<(unsigned long *arg)>>. o x,X Read a hexadecimal integer into the corresponding <[arg]>: <<(int *arg)>>. o e, f, g Read a floating-point number into the corresponding <[arg]>: <<(float *arg)>>. o E, F, G Read a floating-point number into the corresponding <[arg]>: <<(double *arg)>>. o i Reads a decimal, octal or hexadecimal integer into the corresponding <[arg]>: <<(int *arg)>>. o I Reads a decimal, octal or hexadecimal integer into the corresponding <[arg]>: <<(long *arg)>>. o n Stores the number of characters read in the corresponding <[arg]>: <<(int *arg)>>. o p Stores a scanned pointer. ANSI C leaves the details to each implementation; this implementation treats <<%p>> exactly the same as <<%U>>. Corresponding <[arg]>: <<(void **arg)>>. o- A <[pattern]> of characters surrounded by square brackets can be used instead of the <> type character. <[pattern]> is a set of characters which define a search set of possible characters making up the <> input field. If the first character in the brackets is a caret (<<^>>), the search set is inverted to include all ASCII characters except those between the brackets. There is also a range facility which you can use as a shortcut. <<%[0-9] >> matches all decimal digits. The hyphen must not be the first or last character in the set. The character prior to the hyphen must be lexically less than the character after it. Here are some <[pattern]> examples: o+ o %[abcd] matches strings containing only <>, <>, <>, and <>. o %[^abcd] matches strings containing any characters except <>, <>, <>, or <> o %[A-DW-Z] matches strings containing <>, <>, <>, <>, <>, <>, <>, <> o %[z-a] matches the characters <>, <<->>, and <> o- Floating point numbers (for field types <>, <>, <>, <>, <>, <>) must correspond to the following general form: . [+/-] ddddd[.]ddd [E|e[+|-]ddd] where objects inclosed in square brackets are optional, and <> represents decimal, octal, or hexadecimal digits. O- RETURNS <> returns the number of input fields successfully scanned, converted and stored; the return value does not include scanned fields which were not stored. If <> attempts to read at end-of-file, the return value is <>. If no fields were stored, the return value is <<0>>. <> might stop scanning a particular field before reaching the normal field end character, or may terminate entirely. <> stops scanning and storing the current field and moves to the next input field (if any) in any of the following situations: O+ o The assignment suppressing character (<<*>>) appears after the <<%>> in the format specification; the current input field is scanned but not stored. o <[width]> characters have been read (<[width]> is a width specification, a positive decimal integer). o The next character read cannot be converted under the the current format (for example, if a <> is read when the format is decimal). o The next character in the input field does not appear in the search set (or does appear in the inverted search set). O- When <> stops scanning the current input field for one of these reasons, the next character is considered unread and used as the first character of the following input field, or the first character in a subsequent read operation on the input. <> will terminate under the following circumstances: O+ o The next character in the input field conflicts with a corresponding non-whitespace character in the format string. o The next character in the input field is <>. o The format string has been exhausted. O- When the format string contains a character sequence that is not part of a format specification, the same character sequence must appear in the input; <> will scan but not store the matched characters. If a conflict occurs, the first conflicting character remains in the input as if it had never been read. PORTABILITY <> is ANSI C. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "local.h" #ifndef _REENT_ONLY int sscanf (const char *__restrict str, const char * fmt, ...) { int ret; va_list ap; FILE f; f._flags = __SRD | __SSTR; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._r = strlen (str); f._read = __seofread; f._ub._base = NULL; f._lb._base = NULL; f._file = -1; /* No file. */ va_start (ap, fmt); ret = __ssvfscanf_r (_REENT, &f, fmt, ap); va_end (ap); return ret; } #ifdef _NANO_FORMATTED_IO int siscanf (const char *, const char *, ...) _ATTRIBUTE ((__alias__("sscanf"))); #endif #endif /* !_REENT_ONLY */ int _sscanf_r (struct _reent *ptr, const char *__restrict str, const char *__restrict fmt, ...) { int ret; va_list ap; FILE f; f._flags = __SRD | __SSTR; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._r = strlen (str); f._read = __seofread; f._ub._base = NULL; f._lb._base = NULL; f._file = -1; /* No file. */ va_start (ap, fmt); ret = __ssvfscanf_r (ptr, &f, fmt, ap); va_end (ap); return ret; } #ifdef _NANO_FORMATTED_IO int _siscanf_r (struct _reent *, const char *, const char *, ...) _ATTRIBUTE ((__alias__("_sscanf_r"))); #endif picolibc-1.7.4/newlib/libc/stdio/stdio.c000066400000000000000000000062261414576234500201310ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* No user fns here. Pesch 15apr92. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include "local.h" /* * Small standard I/O/seek/close functions. * These maintain the `known seek offset' for seek optimisation. */ _READ_WRITE_RETURN_TYPE __sread (struct _reent *ptr, void *cookie, char *buf, _READ_WRITE_BUFSIZE_TYPE n) { register FILE *fp = (FILE *) cookie; register ssize_t ret; (void) ptr; #ifdef __SCLE int oldmode = 0; if (fp->_flags & __SCLE) oldmode = setmode (fp->_file, O_BINARY); #endif ret = read (fp->_file, buf, n); #ifdef __SCLE if (oldmode) setmode (fp->_file, oldmode); #endif /* If the read succeeded, update the current offset. */ if (ret >= 0) fp->_offset += ret; else fp->_flags &= ~__SOFF; /* paranoia */ return ret; } /* Dummy function used in sscanf/swscanf. */ _READ_WRITE_RETURN_TYPE __seofread (struct _reent *_ptr, void *cookie, char *buf, _READ_WRITE_BUFSIZE_TYPE len) { (void) _ptr; (void) cookie; (void) buf; (void) len; return 0; } _READ_WRITE_RETURN_TYPE __swrite (struct _reent *ptr, void *cookie, char const *buf, _READ_WRITE_BUFSIZE_TYPE n) { register FILE *fp = (FILE *) cookie; ssize_t w; #ifdef __SCLE int oldmode=0; #endif (void) ptr; if (fp->_flags & __SAPP) lseek (fp->_file, (_off_t) 0, SEEK_END); fp->_flags &= ~__SOFF; /* in case O_APPEND mode is set */ #ifdef __SCLE if (fp->_flags & __SCLE) oldmode = setmode (fp->_file, O_BINARY); #endif w = write (fp->_file, buf, n); #ifdef __SCLE if (oldmode) setmode (fp->_file, oldmode); #endif return w; } _fpos_t __sseek (struct _reent *ptr, void *cookie, _fpos_t offset, int whence) { register FILE *fp = (FILE *) cookie; register _off_t ret; (void) ptr; ret = lseek (fp->_file, (_off_t) offset, whence); if (ret == -1L) fp->_flags &= ~__SOFF; else { fp->_flags |= __SOFF; fp->_offset = ret; } return ret; } int __sclose (struct _reent *ptr, void *cookie) { FILE *fp = (FILE *) cookie; (void) ptr; return close (fp->_file); } #ifdef __SCLE int __stextmode (int fd) { #ifdef __CYGWIN__ extern int _cygwin_istext_for_stdio (int); return _cygwin_istext_for_stdio (fd); #else return 0; #endif } #endif picolibc-1.7.4/newlib/libc/stdio/stdio.h000066400000000000000000000712661414576234500201440ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * @(#)stdio.h 5.3 (Berkeley) 3/15/86 */ /* * NB: to fit things in six character monocase externals, the * stdio code uses the prefix `__s' for stdio objects, typically * followed by a three-character attempt at a mnemonic. */ #ifndef _STDIO_H_ #define _STDIO_H_ #include "_ansi.h" #define _FSTDIO /* ``function stdio'' */ #define __need_size_t #define __need_NULL #include #include #include /* * defines __FILE, _fpos_t. * They must be defined there because struct _reent needs them (and we don't * want reent.h to include this file. */ #include #include _BEGIN_STD_C #if !defined(__FILE_defined) typedef __FILE FILE; # define __FILE_defined #endif #ifdef __CYGWIN__ typedef _fpos64_t fpos_t; #else typedef _fpos_t fpos_t; #ifdef __LARGE64_FILES typedef _fpos64_t fpos64_t; #endif #endif /* !__CYGWIN__ */ #include #define __SLBF 0x0001 /* line buffered */ #define __SNBF 0x0002 /* unbuffered */ #define __SRD 0x0004 /* OK to read */ #define __SWR 0x0008 /* OK to write */ /* RD and WR are never simultaneously asserted */ #define __SRW 0x0010 /* open for reading & writing */ #define __SEOF 0x0020 /* found EOF */ #define __SERR 0x0040 /* found error */ #define __SMBF 0x0080 /* _buf is from malloc */ #define __SAPP 0x0100 /* fdopen()ed in append mode - so must write to end */ #define __SSTR 0x0200 /* this is an sprintf/snprintf string */ #define __SOPT 0x0400 /* do fseek() optimisation */ #define __SNPT 0x0800 /* do not do fseek() optimisation */ #define __SOFF 0x1000 /* set iff _offset is in fact correct */ #define __SORD 0x2000 /* true => stream orientation (byte/wide) decided */ #if defined(__CYGWIN__) # define __SCLE 0x4000 /* convert line endings CR/LF <-> NL */ #endif #define __SL64 0x8000 /* is 64-bit offset large file */ /* _flags2 flags */ #define __SNLK 0x0001 /* stdio functions do not lock streams themselves */ #define __SWID 0x2000 /* true => stream orientation wide, false => byte, only valid if __SORD in _flags is true */ /* * The following three definitions are for ANSI C, which took them * from System V, which stupidly took internal interface macros and * made them official arguments to setvbuf(), without renaming them. * Hence, these ugly _IOxxx names are *supposed* to appear in user code. * * Although these happen to match their counterparts above, the * implementation does not rely on that (so these could be renumbered). */ #define _IOFBF 0 /* setvbuf should set fully buffered */ #define _IOLBF 1 /* setvbuf should set line buffered */ #define _IONBF 2 /* setvbuf should set unbuffered */ #define EOF (-1) #ifdef __BUFSIZ__ #define BUFSIZ __BUFSIZ__ #else #define BUFSIZ 1024 #endif #ifdef __FOPEN_MAX__ #define FOPEN_MAX __FOPEN_MAX__ #else #define FOPEN_MAX 20 #endif #ifdef __FILENAME_MAX__ #define FILENAME_MAX __FILENAME_MAX__ #else #define FILENAME_MAX 1024 #endif #ifdef __L_tmpnam__ #define L_tmpnam __L_tmpnam__ #else #define L_tmpnam FILENAME_MAX #endif #if __BSD_VISIBLE || __XSI_VISIBLE #define P_tmpdir "/tmp" #endif #ifndef SEEK_SET #define SEEK_SET 0 /* set file offset to offset */ #endif #ifndef SEEK_CUR #define SEEK_CUR 1 /* set file offset to current plus offset */ #endif #ifndef SEEK_END #define SEEK_END 2 /* set file offset to EOF plus offset */ #endif #define TMP_MAX 26 #define stdin (_REENT->_stdin) #define stdout (_REENT->_stdout) #define stderr (_REENT->_stderr) #define _stdin_r(x) ((x)->_stdin) #define _stdout_r(x) ((x)->_stdout) #define _stderr_r(x) ((x)->_stderr) /* * Functions defined in ANSI C standard. */ #ifndef __VALIST #ifdef __GNUC__ #define __VALIST __gnuc_va_list #else #define __VALIST char* #endif #endif #if __POSIX_VISIBLE char * ctermid (char *); #endif #if __GNU_VISIBLE || (__XSI_VISIBLE && __XSI_VISIBLE < 600) char * cuserid (char *); #endif FILE * tmpfile (void); char * tmpnam (char *); #if __BSD_VISIBLE || __XSI_VISIBLE || __POSIX_VISIBLE >= 200112 char * tempnam (const char *, const char *) __malloc_like __result_use_check; #endif int fclose (FILE *); int fflush (FILE *); FILE * freopen (const char *__restrict, const char *__restrict, FILE *__restrict); void setbuf (FILE *__restrict, char *__restrict); int setvbuf (FILE *__restrict, char *__restrict, int, size_t); int fprintf (FILE *__restrict, const char *__restrict, ...) _ATTRIBUTE ((__format__ (__printf__, 2, 3))); int fscanf (FILE *__restrict, const char *__restrict, ...) _ATTRIBUTE ((__format__ (__scanf__, 2, 3))); int printf (const char *__restrict, ...) _ATTRIBUTE ((__format__ (__printf__, 1, 2))); int scanf (const char *__restrict, ...) _ATTRIBUTE ((__format__ (__scanf__, 1, 2))); int sscanf (const char *__restrict, const char *__restrict, ...) _ATTRIBUTE ((__format__ (__scanf__, 2, 3))); int vfprintf (FILE *__restrict, const char *__restrict, va_list) _ATTRIBUTE ((__format__ (__printf__, 2, 0))); int vprintf (const char *, va_list) _ATTRIBUTE ((__format__ (__printf__, 1, 0))); int vsprintf (char *__restrict, const char *__restrict, va_list) _ATTRIBUTE ((__format__ (__printf__, 2, 0))); int fgetc (FILE *); char * fgets (char *__restrict, int, FILE *__restrict); int fputc (int, FILE *); int fputs (const char *__restrict, FILE *__restrict); int getc (FILE *); int getchar (void); char * gets (char *); int putc (int, FILE *); int putchar (int); int puts (const char *); int ungetc (int, FILE *); size_t fread (void *__restrict, size_t _size, size_t _n, FILE *__restrict); size_t fwrite (const void *__restrict , size_t _size, size_t _n, FILE *); #ifdef _COMPILING_NEWLIB int fgetpos (FILE *, _fpos_t *); #else int fgetpos (FILE *__restrict, fpos_t *__restrict); #endif int fseek (FILE *, long, int); #ifdef _COMPILING_NEWLIB int fsetpos (FILE *, const _fpos_t *); #else int fsetpos (FILE *, const fpos_t *); #endif long ftell ( FILE *); void rewind (FILE *); void clearerr (FILE *); int feof (FILE *); int ferror (FILE *); void perror (const char *); #ifndef _REENT_ONLY FILE * fopen (const char *__restrict _name, const char *__restrict _type); int sprintf (char *__restrict, const char *__restrict, ...) _ATTRIBUTE ((__format__ (__printf__, 2, 3))); int remove (const char *); int rename (const char *, const char *); #ifdef _COMPILING_NEWLIB int _rename (const char *, const char *); #endif #endif #if __LARGEFILE_VISIBLE || __POSIX_VISIBLE >= 200112 #ifdef _COMPILING_NEWLIB int fseeko (FILE *, _off_t, int); _off_t ftello (FILE *); #else int fseeko (FILE *, off_t, int); off_t ftello (FILE *); #endif #endif #if __GNU_VISIBLE int fcloseall (void); #endif #ifndef _REENT_ONLY #if __ISO_C_VISIBLE >= 1999 int snprintf (char *__restrict, size_t, const char *__restrict, ...) _ATTRIBUTE ((__format__ (__printf__, 3, 4))); int vsnprintf (char *__restrict, size_t, const char *__restrict, va_list) _ATTRIBUTE ((__format__ (__printf__, 3, 0))); int vfscanf (FILE *__restrict, const char *__restrict, va_list) _ATTRIBUTE ((__format__ (__scanf__, 2, 0))); int vscanf (const char *, va_list) _ATTRIBUTE ((__format__ (__scanf__, 1, 0))); int vsscanf (const char *__restrict, const char *__restrict, va_list) _ATTRIBUTE ((__format__ (__scanf__, 2, 0))); #endif #if __GNU_VISIBLE int asprintf (char **__restrict, const char *__restrict, ...) _ATTRIBUTE ((__format__ (__printf__, 2, 3))); int vasprintf (char **, const char *, va_list) _ATTRIBUTE ((__format__ (__printf__, 2, 0))); #endif #if __MISC_VISIBLE /* Newlib-specific */ int asiprintf (char **, const char *, ...) _ATTRIBUTE ((__format__ (__printf__, 2, 3))); char * asniprintf (char *, size_t *, const char *, ...) _ATTRIBUTE ((__format__ (__printf__, 3, 4))); char * asnprintf (char *__restrict, size_t *__restrict, const char *__restrict, ...) _ATTRIBUTE ((__format__ (__printf__, 3, 4))); #ifndef diprintf int diprintf (int, const char *, ...) _ATTRIBUTE ((__format__ (__printf__, 2, 3))); #endif int fiprintf (FILE *, const char *, ...) _ATTRIBUTE ((__format__ (__printf__, 2, 3))); #define __i_fprintf fiprintf int fiscanf (FILE *, const char *, ...) _ATTRIBUTE ((__format__ (__scanf__, 2, 3))); int iprintf (const char *, ...) _ATTRIBUTE ((__format__ (__printf__, 1, 2))); int iscanf (const char *, ...) _ATTRIBUTE ((__format__ (__scanf__, 1, 2))); int siprintf (char *, const char *, ...) _ATTRIBUTE ((__format__ (__printf__, 2, 3))); #define __i_sprintf siprintf int siscanf (const char *, const char *, ...) _ATTRIBUTE ((__format__ (__scanf__, 2, 3))); int sniprintf (char *, size_t, const char *, ...) _ATTRIBUTE ((__format__ (__printf__, 3, 4))); #define __i_snprintf sniprintf int vasiprintf (char **, const char *, va_list) _ATTRIBUTE ((__format__ (__printf__, 2, 0))); char * vasniprintf (char *, size_t *, const char *, va_list) _ATTRIBUTE ((__format__ (__printf__, 3, 0))); char * vasnprintf (char *, size_t *, const char *, va_list) _ATTRIBUTE ((__format__ (__printf__, 3, 0))); int vdiprintf (int, const char *, va_list) _ATTRIBUTE ((__format__ (__printf__, 2, 0))); int vfiprintf (FILE *, const char *, va_list) _ATTRIBUTE ((__format__ (__printf__, 2, 0))); int vfiscanf (FILE *, const char *, va_list) _ATTRIBUTE ((__format__ (__scanf__, 2, 0))); int viprintf (const char *, va_list) _ATTRIBUTE ((__format__ (__printf__, 1, 0))); int viscanf (const char *, va_list) _ATTRIBUTE ((__format__ (__scanf__, 1, 0))); int vsiprintf (char *, const char *, va_list) _ATTRIBUTE ((__format__ (__printf__, 2, 0))); int vsiscanf (const char *, const char *, va_list) _ATTRIBUTE ((__format__ (__scanf__, 2, 0))); int vsniprintf (char *, size_t, const char *, va_list) _ATTRIBUTE ((__format__ (__printf__, 3, 0))); #endif /* __MISC_VISIBLE */ #endif /* !_REENT_ONLY */ /* * Routines in POSIX 1003.1:2001. */ #if __POSIX_VISIBLE #ifndef _REENT_ONLY FILE * fdopen (int, const char *); #endif int fileno (FILE *); #endif #if __MISC_VISIBLE || __POSIX_VISIBLE >= 199209 int pclose (FILE *); FILE * popen (const char *, const char *); #endif #if __BSD_VISIBLE void setbuffer (FILE *, char *, int); int setlinebuf (FILE *); #endif #if __MISC_VISIBLE || (__XSI_VISIBLE && __POSIX_VISIBLE < 200112) int getw (FILE *); int putw (int, FILE *); #endif #if __MISC_VISIBLE || __POSIX_VISIBLE int getc_unlocked (FILE *); int getchar_unlocked (void); void flockfile (FILE *); int ftrylockfile (FILE *); void funlockfile (FILE *); int putc_unlocked (int, FILE *); int putchar_unlocked (int); #endif /* * Routines in POSIX 1003.1:200x. */ #if __POSIX_VISIBLE >= 200809 # ifndef _REENT_ONLY # ifndef dprintf int dprintf (int, const char *__restrict, ...) _ATTRIBUTE ((__format__ (__printf__, 2, 3))); # endif FILE * fmemopen (void *__restrict, size_t, const char *__restrict); /* getdelim - see __getdelim for now */ /* getline - see __getline for now */ FILE * open_memstream (char **, size_t *); int vdprintf (int, const char *__restrict, va_list) _ATTRIBUTE ((__format__ (__printf__, 2, 0))); # endif #endif #if __ATFILE_VISIBLE int renameat (int, const char *, int, const char *); # ifdef __CYGWIN__ int renameat2 (int, const char *, int, const char *, unsigned int); # endif #endif /* * Recursive versions of the above. */ int _asiprintf_r (struct _reent *, char **, const char *, ...) _ATTRIBUTE ((__format__ (__printf__, 3, 4))); char * _asniprintf_r (struct _reent *, char *, size_t *, const char *, ...) _ATTRIBUTE ((__format__ (__printf__, 4, 5))); char * _asnprintf_r (struct _reent *, char *__restrict, size_t *__restrict, const char *__restrict, ...) _ATTRIBUTE ((__format__ (__printf__, 4, 5))); int _asprintf_r (struct _reent *, char **__restrict, const char *__restrict, ...) _ATTRIBUTE ((__format__ (__printf__, 3, 4))); int _diprintf_r (struct _reent *, int, const char *, ...) _ATTRIBUTE ((__format__ (__printf__, 3, 4))); int _dprintf_r (struct _reent *, int, const char *__restrict, ...) _ATTRIBUTE ((__format__ (__printf__, 3, 4))); int _fclose_r (struct _reent *, FILE *); int _fcloseall_r (struct _reent *); FILE * _fdopen_r (struct _reent *, int, const char *); int _fflush_r (struct _reent *, FILE *); int _fgetc_r (struct _reent *, FILE *); int _fgetc_unlocked_r (struct _reent *, FILE *); char * _fgets_r (struct _reent *, char *__restrict, int, FILE *__restrict); char * _fgets_unlocked_r (struct _reent *, char *__restrict, int, FILE *__restrict); #ifdef _COMPILING_NEWLIB int _fgetpos_r (struct _reent *, FILE *__restrict, _fpos_t *__restrict); int _fsetpos_r (struct _reent *, FILE *, const _fpos_t *); #else int _fgetpos_r (struct _reent *, FILE *, fpos_t *); int _fsetpos_r (struct _reent *, FILE *, const fpos_t *); #endif int _fiprintf_r (struct _reent *, FILE *, const char *, ...) _ATTRIBUTE ((__format__ (__printf__, 3, 4))); int _fiscanf_r (struct _reent *, FILE *, const char *, ...) _ATTRIBUTE ((__format__ (__scanf__, 3, 4))); FILE * _fmemopen_r (struct _reent *, void *__restrict, size_t, const char *__restrict); FILE * _fopen_r (struct _reent *, const char *__restrict, const char *__restrict); FILE * _freopen_r (struct _reent *, const char *__restrict, const char *__restrict, FILE *__restrict); int _fprintf_r (struct _reent *, FILE *__restrict, const char *__restrict, ...) _ATTRIBUTE ((__format__ (__printf__, 3, 4))); int _fpurge_r (struct _reent *, FILE *); int _fputc_r (struct _reent *, int, FILE *); int _fputc_unlocked_r (struct _reent *, int, FILE *); int _fputs_r (struct _reent *, const char *__restrict, FILE *__restrict); int _fputs_unlocked_r (struct _reent *, const char *__restrict, FILE *__restrict); size_t _fread_r (struct _reent *, void *__restrict, size_t _size, size_t _n, FILE *__restrict); size_t _fread_unlocked_r (struct _reent *, void *__restrict, size_t _size, size_t _n, FILE *__restrict); int _fscanf_r (struct _reent *, FILE *__restrict, const char *__restrict, ...) _ATTRIBUTE ((__format__ (__scanf__, 3, 4))); int _fseek_r (struct _reent *, FILE *, long, int); int _fseeko_r (struct _reent *, FILE *, _off_t, int); long _ftell_r (struct _reent *, FILE *); _off_t _ftello_r (struct _reent *, FILE *); void _rewind_r (struct _reent *, FILE *); size_t _fwrite_r (struct _reent *, const void *__restrict, size_t _size, size_t _n, FILE *__restrict); size_t _fwrite_unlocked_r (struct _reent *, const void *__restrict, size_t _size, size_t _n, FILE *__restrict); int _getc_r (struct _reent *, FILE *); int _getc_unlocked_r (struct _reent *, FILE *); int _getchar_r (struct _reent *); int _getchar_unlocked_r (struct _reent *); char * _gets_r (struct _reent *, char *); int _iprintf_r (struct _reent *, const char *, ...) _ATTRIBUTE ((__format__ (__printf__, 2, 3))); int _iscanf_r (struct _reent *, const char *, ...) _ATTRIBUTE ((__format__ (__scanf__, 2, 3))); FILE * _open_memstream_r (struct _reent *, char **, size_t *); void _perror_r (struct _reent *, const char *); int _printf_r (struct _reent *, const char *__restrict, ...) _ATTRIBUTE ((__format__ (__printf__, 2, 3))); int _putc_r (struct _reent *, int, FILE *); int _putc_unlocked_r (struct _reent *, int, FILE *); int _putchar_unlocked_r (struct _reent *, int); int _putchar_r (struct _reent *, int); int _puts_r (struct _reent *, const char *); int _remove_r (struct _reent *, const char *); int _rename_r (struct _reent *, const char *_old, const char *_new); int _scanf_r (struct _reent *, const char *__restrict, ...) _ATTRIBUTE ((__format__ (__scanf__, 2, 3))); int _siprintf_r (struct _reent *, char *, const char *, ...) _ATTRIBUTE ((__format__ (__printf__, 3, 4))); int _siscanf_r (struct _reent *, const char *, const char *, ...) _ATTRIBUTE ((__format__ (__scanf__, 3, 4))); int _sniprintf_r (struct _reent *, char *, size_t, const char *, ...) _ATTRIBUTE ((__format__ (__printf__, 4, 5))); int _snprintf_r (struct _reent *, char *__restrict, size_t, const char *__restrict, ...) _ATTRIBUTE ((__format__ (__printf__, 4, 5))); int _sprintf_r (struct _reent *, char *__restrict, const char *__restrict, ...) _ATTRIBUTE ((__format__ (__printf__, 3, 4))); int _sscanf_r (struct _reent *, const char *__restrict, const char *__restrict, ...) _ATTRIBUTE ((__format__ (__scanf__, 3, 4))); char * _tempnam_r (struct _reent *, const char *, const char *); FILE * _tmpfile_r (struct _reent *); char * _tmpnam_r (struct _reent *, char *); int _ungetc_r (struct _reent *, int, FILE *); int _vasiprintf_r (struct _reent *, char **, const char *, va_list) _ATTRIBUTE ((__format__ (__printf__, 3, 0))); char * _vasniprintf_r (struct _reent*, char *, size_t *, const char *, va_list) _ATTRIBUTE ((__format__ (__printf__, 4, 0))); char * _vasnprintf_r (struct _reent*, char *, size_t *, const char *, va_list) _ATTRIBUTE ((__format__ (__printf__, 4, 0))); int _vasprintf_r (struct _reent *, char **, const char *, va_list) _ATTRIBUTE ((__format__ (__printf__, 3, 0))); int _vdiprintf_r (struct _reent *, int, const char *, va_list) _ATTRIBUTE ((__format__ (__printf__, 3, 0))); int _vdprintf_r (struct _reent *, int, const char *__restrict, va_list) _ATTRIBUTE ((__format__ (__printf__, 3, 0))); int _vfiprintf_r (struct _reent *, FILE *, const char *, va_list) _ATTRIBUTE ((__format__ (__printf__, 3, 0))); int _vfiscanf_r (struct _reent *, FILE *, const char *, va_list) _ATTRIBUTE ((__format__ (__scanf__, 3, 0))); int _vfprintf_r (struct _reent *, FILE *__restrict, const char *__restrict, va_list) _ATTRIBUTE ((__format__ (__printf__, 3, 0))); int _vfscanf_r (struct _reent *, FILE *__restrict, const char *__restrict, va_list) _ATTRIBUTE ((__format__ (__scanf__, 3, 0))); int _viprintf_r (struct _reent *, const char *, va_list) _ATTRIBUTE ((__format__ (__printf__, 2, 0))); int _viscanf_r (struct _reent *, const char *, va_list) _ATTRIBUTE ((__format__ (__scanf__, 2, 0))); int _vprintf_r (struct _reent *, const char *__restrict, va_list) _ATTRIBUTE ((__format__ (__printf__, 2, 0))); int _vscanf_r (struct _reent *, const char *__restrict, va_list) _ATTRIBUTE ((__format__ (__scanf__, 2, 0))); int _vsiprintf_r (struct _reent *, char *, const char *, va_list) _ATTRIBUTE ((__format__ (__printf__, 3, 0))); int _vsiscanf_r (struct _reent *, const char *, const char *, va_list) _ATTRIBUTE ((__format__ (__scanf__, 3, 0))); int _vsniprintf_r (struct _reent *, char *, size_t, const char *, va_list) _ATTRIBUTE ((__format__ (__printf__, 4, 0))); int _vsnprintf_r (struct _reent *, char *__restrict, size_t, const char *__restrict, va_list) _ATTRIBUTE ((__format__ (__printf__, 4, 0))); int _vsprintf_r (struct _reent *, char *__restrict, const char *__restrict, va_list) _ATTRIBUTE ((__format__ (__printf__, 3, 0))); int _vsscanf_r (struct _reent *, const char *__restrict, const char *__restrict, va_list) _ATTRIBUTE ((__format__ (__scanf__, 3, 0))); /* Other extensions. */ int fpurge (FILE *); ssize_t __getdelim (char **, size_t *, int, FILE *); ssize_t __getline (char **, size_t *, FILE *); #if __MISC_VISIBLE void clearerr_unlocked (FILE *); int feof_unlocked (FILE *); int ferror_unlocked (FILE *); int fileno_unlocked (FILE *); int fflush_unlocked (FILE *); int fgetc_unlocked (FILE *); int fputc_unlocked (int, FILE *); size_t fread_unlocked (void *__restrict, size_t _size, size_t _n, FILE *__restrict); size_t fwrite_unlocked (const void *__restrict , size_t _size, size_t _n, FILE *); #endif #if __GNU_VISIBLE char * fgets_unlocked (char *__restrict, int, FILE *__restrict); int fputs_unlocked (const char *__restrict, FILE *__restrict); #endif #ifdef __LARGE64_FILES #if !defined(__CYGWIN__) || defined(_COMPILING_NEWLIB) FILE * fdopen64 (int, const char *); FILE * fopen64 (const char *, const char *); FILE * freopen64 (const char *, const char *, FILE *); _off64_t ftello64 (FILE *); _off64_t fseeko64 (FILE *, _off64_t, int); int fgetpos64 (FILE *, _fpos64_t *); int fsetpos64 (FILE *, const _fpos64_t *); FILE * tmpfile64 (void); FILE * _fdopen64_r (struct _reent *, int, const char *); FILE * _fopen64_r (struct _reent *,const char *, const char *); FILE * _freopen64_r (struct _reent *, const char *, const char *, FILE *); _off64_t _ftello64_r (struct _reent *, FILE *); _off64_t _fseeko64_r (struct _reent *, FILE *, _off64_t, int); int _fgetpos64_r (struct _reent *, FILE *, _fpos64_t *); int _fsetpos64_r (struct _reent *, FILE *, const _fpos64_t *); FILE * _tmpfile64_r (struct _reent *); #endif /* !__CYGWIN__ */ #endif /* __LARGE64_FILES */ /* * Routines internal to the implementation. */ int __srget_r (struct _reent *, FILE *); int __swbuf_r (struct _reent *, int, FILE *); /* * Stdio function-access interface. */ #if __BSD_VISIBLE # ifdef __LARGE64_FILES FILE *funopen (const void *__cookie, int (*__readfn)(void *__c, char *__buf, _READ_WRITE_BUFSIZE_TYPE __n), int (*__writefn)(void *__c, const char *__buf, _READ_WRITE_BUFSIZE_TYPE __n), _fpos64_t (*__seekfn)(void *__c, _fpos64_t __off, int __whence), int (*__closefn)(void *__c)); FILE *_funopen_r (struct _reent *, const void *__cookie, int (*__readfn)(void *__c, char *__buf, _READ_WRITE_BUFSIZE_TYPE __n), int (*__writefn)(void *__c, const char *__buf, _READ_WRITE_BUFSIZE_TYPE __n), _fpos64_t (*__seekfn)(void *__c, _fpos64_t __off, int __whence), int (*__closefn)(void *__c)); # else FILE *funopen (const void *__cookie, int (*__readfn)(void *__cookie, char *__buf, _READ_WRITE_BUFSIZE_TYPE __n), int (*__writefn)(void *__cookie, const char *__buf, _READ_WRITE_BUFSIZE_TYPE __n), fpos_t (*__seekfn)(void *__cookie, fpos_t __off, int __whence), int (*__closefn)(void *__cookie)); FILE *_funopen_r (struct _reent *, const void *__cookie, int (*__readfn)(void *__cookie, char *__buf, _READ_WRITE_BUFSIZE_TYPE __n), int (*__writefn)(void *__cookie, const char *__buf, _READ_WRITE_BUFSIZE_TYPE __n), fpos_t (*__seekfn)(void *__cookie, fpos_t __off, int __whence), int (*__closefn)(void *__cookie)); # endif /* !__LARGE64_FILES */ # define fropen(__cookie, __fn) funopen(__cookie, __fn, (int (*)())0, \ (fpos_t (*)())0, (int (*)())0) # define fwopen(__cookie, __fn) funopen(__cookie, (int (*)())0, __fn, \ (fpos_t (*)())0, (int (*)())0) #endif /* __BSD_VISIBLE */ #if __GNU_VISIBLE typedef ssize_t cookie_read_function_t(void *__cookie, char *__buf, size_t __n); typedef ssize_t cookie_write_function_t(void *__cookie, const char *__buf, size_t __n); # ifdef __LARGE64_FILES typedef int cookie_seek_function_t(void *__cookie, _off64_t *__off, int __whence); # else typedef int cookie_seek_function_t(void *__cookie, off_t *__off, int __whence); # endif /* !__LARGE64_FILES */ typedef int cookie_close_function_t(void *__cookie); typedef struct { /* These four struct member names are dictated by Linux; hopefully, they don't conflict with any macros. */ cookie_read_function_t *read; cookie_write_function_t *write; cookie_seek_function_t *seek; cookie_close_function_t *close; } cookie_io_functions_t; FILE *fopencookie (void *__cookie, const char *__mode, cookie_io_functions_t __functions); FILE *_fopencookie_r (struct _reent *, void *__cookie, const char *__mode, cookie_io_functions_t __functions); #endif /* __GNU_VISIBLE */ #ifndef __CUSTOM_FILE_IO__ /* * The __sfoo macros are here so that we can * define function versions in the C library. */ #define __sgetc_raw_r(__ptr, __f) (--(__f)->_r < 0 ? __srget_r(__ptr, __f) : (int)(*(__f)->_p++)) #ifdef __SCLE /* For a platform with CR/LF, additional logic is required by __sgetc_r which would otherwise simply be a macro; therefore we use an inlined function. The function is only meant to be inlined in place as used and the function body should never be emitted. There are two possible means to this end when compiling with GCC, one when compiling with a standard C99 compiler, and for other compilers we're just stuck. At the moment, this issue only affects the Cygwin target, so we'll most likely be using GCC. */ _ELIDABLE_INLINE int __sgetc_r(struct _reent *__ptr, FILE *__p); _ELIDABLE_INLINE int __sgetc_r(struct _reent *__ptr, FILE *__p) { int __c = __sgetc_raw_r(__ptr, __p); if ((__p->_flags & __SCLE) && (__c == '\r')) { int __c2 = __sgetc_raw_r(__ptr, __p); if (__c2 == '\n') __c = __c2; else ungetc(__c2, __p); } return __c; } #else #define __sgetc_r(__ptr, __p) __sgetc_raw_r(__ptr, __p) #endif #ifdef __GNUC__ _ELIDABLE_INLINE int __sputc_r(struct _reent *_ptr, int _c, FILE *_p) { #ifdef __SCLE if ((_p->_flags & __SCLE) && _c == '\n') __sputc_r (_ptr, '\r', _p); #endif if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n')) return (*_p->_p++ = _c); else return (__swbuf_r(_ptr, _c, _p)); } #else /* * This has been tuned to generate reasonable code on the vax using pcc */ #define __sputc_raw_r(__ptr, __c, __p) \ (--(__p)->_w < 0 ? \ (__p)->_w >= (__p)->_lbfsize ? \ (*(__p)->_p = (__c)), *(__p)->_p != '\n' ? \ (int)*(__p)->_p++ : \ __swbuf_r(__ptr, '\n', __p) : \ __swbuf_r(__ptr, (int)(__c), __p) : \ (*(__p)->_p = (__c), (int)*(__p)->_p++)) #ifdef __SCLE #define __sputc_r(__ptr, __c, __p) \ ((((__p)->_flags & __SCLE) && ((__c) == '\n')) \ ? __sputc_raw_r(__ptr, '\r', (__p)) : 0 , \ __sputc_raw_r((__ptr), (__c), (__p))) #else #define __sputc_r(__ptr, __c, __p) __sputc_raw_r(__ptr, __c, __p) #endif #endif #define __sfeof(p) ((int)(((p)->_flags & __SEOF) != 0)) #define __sferror(p) ((int)(((p)->_flags & __SERR) != 0)) #define __sclearerr(p) ((void)((p)->_flags &= ~(__SERR|__SEOF))) #define __sfileno(p) ((p)->_file) #ifndef __cplusplus #ifndef _REENT_SMALL #define feof(p) __sfeof(p) #define ferror(p) __sferror(p) #define clearerr(p) __sclearerr(p) #if __MISC_VISIBLE #define feof_unlocked(p) __sfeof(p) #define ferror_unlocked(p) __sferror(p) #define clearerr_unlocked(p) __sclearerr(p) #endif /* __MISC_VISIBLE */ #endif /* _REENT_SMALL */ #if 0 /* __POSIX_VISIBLE - FIXME: must initialize stdio first, use fn */ #define fileno(p) __sfileno(p) #endif static __inline int _getchar_unlocked(void) { struct _reent *_ptr; _ptr = _REENT; return (__sgetc_r(_ptr, _stdin_r(_ptr))); } static __inline int _putchar_unlocked(int _c) { struct _reent *_ptr; _ptr = _REENT; return (__sputc_r(_ptr, _c, _stdout_r(_ptr))); } #ifdef __SINGLE_THREAD__ #define getc(_p) __sgetc_r(_REENT, _p) #define putc(_c, _p) __sputc_r(_REENT, _c, _p) #define getchar() _getchar_unlocked() #define putchar(_c) _putchar_unlocked(_c) #endif /* __SINGLE_THREAD__ */ #if __MISC_VISIBLE || __POSIX_VISIBLE #define getchar_unlocked() _getchar_unlocked() #define putchar_unlocked(_c) _putchar_unlocked(_c) #endif #endif /* __cplusplus */ #if __MISC_VISIBLE /* fast always-buffered version, true iff error */ #define fast_putc(x,p) (--(p)->_w < 0 ? \ __swbuf_r(_REENT, (int)(x), p) == EOF : (*(p)->_p = (x), (p)->_p++, 0)) #endif #if __GNU_VISIBLE || (__XSI_VISIBLE && __XSI_VISIBLE < 600) #define L_cuserid 9 /* posix says it goes in stdio.h :( */ #endif #if __POSIX_VISIBLE #define L_ctermid 16 #endif #else /* __CUSTOM_FILE_IO__ */ #define getchar() getc(stdin) #define putchar(x) putc(x, stdout) #if __MISC_VISIBLE || __POSIX_VISIBLE #define getchar_unlocked() getc_unlocked(stdin) #define putchar_unlocked(x) putc_unlocked(x, stdout) #endif #endif /* !__CUSTOM_FILE_IO__ */ _END_STD_C #if __SSP_FORTIFY_LEVEL > 0 #include #endif #endif /* _STDIO_H_ */ picolibc-1.7.4/newlib/libc/stdio/stdio.tex000066400000000000000000000176441414576234500205150ustar00rootroot00000000000000# #Copyright (c) 1990 The Regents of the University of California. #All rights reserved. # #Redistribution and use in source and binary forms are permitted #provided that the above copyright notice and this paragraph are #duplicated in all such forms and that any documentation, #and/or other materials related to such #distribution and use acknowledge that the software was developed #by the University of California, Berkeley. The name of the #University may not be used to endorse or promote products derived #from this software without specific prior written permission. #THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR #IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED #WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. # @node Stdio @chapter Input and Output (@file{stdio.h}) This chapter comprises functions to manage files or other input/output streams. Among these functions are subroutines to generate or scan strings according to specifications from a format string. The underlying facilities for input and output depend on the host system, but these functions provide a uniform interface. The corresponding declarations are in @file{stdio.h}. The reentrant versions of these functions use macros @example _stdin_r(@var{reent}) _stdout_r(@var{reent}) _stderr_r(@var{reent}) @end example @noindent instead of the globals @code{stdin}, @code{stdout}, and @code{stderr}. The argument @var{reent} is a pointer to a reentrancy structure. @menu * clearerr:: Clear file or stream error indicator * diprintf:: Print to a file descriptor (integer only) * dprintf:: Print to a file descriptor * fclose:: Close a file * fcloseall:: Close all files * fdopen:: Turn an open file into a stream * feof:: Test for end of file * ferror:: Test whether read/write error has occurred * fflush:: Flush buffered file output * fgetc:: Get a character from a file or stream * fgetpos:: Record position in a stream or file * fgets:: Get character string from a file or stream * fgetwc:: Get a wide character from a file or stream * fgetws:: Get a wide character string from a file or stream * fileno:: Get file descriptor associated with stream * fmemopen:: Open a stream around a fixed-length buffer * fopen:: Open a file * fopencookie:: Open a stream with custom callbacks * fpurge:: Discard all pending I/O on a stream * fputc:: Write a character on a stream or file * fputs:: Write a character string in a file or stream * fputwc:: Write a wide character to a file or stream * fputws:: Write a wide character string to a file or stream * fread:: Read array elements from a file * freopen:: Open a file using an existing file descriptor * fseek:: Set file position * __fsetlocking:: Set or query locking mode on FILE stream * fsetpos:: Restore position of a stream or file * ftell:: Return position in a stream or file * funopen:: Open a stream with custom callbacks * fwide:: Set and determine the orientation of a FILE stream * fwrite:: Write array elements from memory to a file or stream * getc:: Get a character from a file or stream (macro) * getc_unlocked:: Get a character from a file or stream (macro) * getchar:: Get a character from standard input (macro) * getchar_unlocked:: Get a character from standard input (macro) * getdelim:: Get character string from a file or stream * getline:: Get character string from a file or stream * gets:: Get character string from standard input (obsolete) * getw:: Get a word (int) from a file or stream * getwchar:: Get a wide character from standard input * mktemp:: Generate unused file name * open_memstream:: Open a write stream around an arbitrary-length buffer * perror:: Print an error message on standard error * putc:: Write a character on a stream or file (macro) * putc_unlocked:: Write a character on a stream or file (macro) * putchar:: Write a character on standard output (macro) * putchar_unlocked:: Write a character on standard output (macro) * puts:: Write a character string on standard output * putw:: Write a word (int) to a file or stream * putwchar:: Write a wide character to standard output * remove:: Delete a file's name * rename:: Rename a file * rewind:: Reinitialize a file or stream * setbuf:: Specify full buffering for a file or stream * setbuffer:: Specify full buffering for a file or stream with size * setlinebuf:: Specify line buffering for a file or stream * setvbuf:: Specify buffering for a file or stream * siprintf:: Write formatted output (integer only) * siscanf:: Scan and format input (integer only) * sprintf:: Write formatted output * sscanf:: Scan and format input * stdio_ext:: Access internals of FILE structure * swprintf:: Write formatted wide character output * swscanf:: Scan and format wide character input * tmpfile:: Create a temporary file * tmpnam:: Generate name for a temporary file * ungetc:: Push data back into a stream * ungetwc:: Push wide character data back into a stream * vfprintf:: Format variable argument list * vfscanf:: Scan variable argument list * vfwprintf:: Format variable wide character argument list * vfwscanf:: Scan and format argument list from wide character input * viprintf:: Format variable argument list (integer only) * viscanf:: Scan variable format list (integer only) @end menu @page @include stdio/clearerr.def @page @include stdio/diprintf.def @page @include stdio/dprintf.def @page @include stdio/fclose.def @page @include stdio/fcloseall.def @page @include stdio/fdopen.def @page @include stdio/feof.def @page @include stdio/ferror.def @page @include stdio/fflush.def @page @include stdio/fgetc.def @page @include stdio/fgetpos.def @page @include stdio/fgets.def @page @include stdio/fgetwc.def @page @include stdio/fgetws.def @page @include stdio/fileno.def @page @include stdio/fmemopen.def @page @include stdio/fopen.def @page @include stdio/fopencookie.def @page @include stdio/fpurge.def @page @include stdio/fputc.def @page @include stdio/fputs.def @page @include stdio/fputwc.def @page @include stdio/fputws.def @page @include stdio/fread.def @page @include stdio/freopen.def @page @include stdio/fseek.def @page @include stdio/fsetlocking.def @page @include stdio/fsetpos.def @page @include stdio/ftell.def @page @include stdio/funopen.def @page @include stdio/fwide.def @page @include stdio/fwrite.def @page @include stdio/getc.def @page @include stdio/getc_u.def @page @include stdio/getchar.def @page @include stdio/getchar_u.def @page @include stdio/getdelim.def @page @include stdio/getline.def @page @include stdio/gets.def @page @include stdio/getw.def @page @include stdio/getwchar.def @page @include stdio/mktemp.def @page @include stdio/open_memstream.def @page @include stdio/perror.def @page @include stdio/putc.def @page @include stdio/putc_u.def @page @include stdio/putchar.def @page @include stdio/putchar_u.def @page @include stdio/puts.def @page @include stdio/putw.def @page @include stdio/putwchar.def @page @include stdio/remove.def @page @include stdio/rename.def @page @include stdio/rewind.def @page @include stdio/setbuf.def @page @include stdio/setbuffer.def @page @include stdio/setlinebuf.def @page @include stdio/setvbuf.def @page @include stdio/siprintf.def @page @include stdio/siscanf.def @page @include stdio/sprintf.def @page @include stdio/sscanf.def @page @include stdio/stdio_ext.def @page @include stdio/swprintf.def @page @include stdio/swscanf.def @page @include stdio/tmpfile.def @page @include stdio/tmpnam.def @page @include stdio/ungetc.def @page @include stdio/ungetwc.def @page @include stdio/vfprintf.def @page @include stdio/vfscanf.def @page @include stdio/vfwprintf.def @page @include stdio/vfwscanf.def @page @include stdio/viprintf.def @page @include stdio/viscanf.def picolibc-1.7.4/newlib/libc/stdio/stdio_ext.c000066400000000000000000000042131414576234500210030ustar00rootroot00000000000000/* Copyright (c) 2014 Yaakov Selkowitz */ /* FUNCTION <>,<<__fbufsize>>,<<__fpending>>,<<__flbf>>,<<__freadable>>,<<__fwritable>>,<<__freading>>,<<__fwriting>>---access internals of FILE structure INDEX __fbufsize INDEX __fpending INDEX __flbf INDEX __freadable INDEX __fwritable INDEX __freading INDEX __fwriting SYNOPSIS #include #include size_t __fbufsize(FILE *<[fp]>); size_t __fpending(FILE *<[fp]>); int __flbf(FILE *<[fp]>); int __freadable(FILE *<[fp]>); int __fwritable(FILE *<[fp]>); int __freading(FILE *<[fp]>); int __fwriting(FILE *<[fp]>); DESCRIPTION These functions provides access to the internals of the FILE structure <[fp]>. RETURNS <<__fbufsize>> returns the number of bytes in the buffer of stream <[fp]>. <<__fpending>> returns the number of bytes in the output buffer of stream <[fp]>. <<__flbf>> returns nonzero if stream <[fp]> is line-buffered, and <<0>> if not. <<__freadable>> returns nonzero if stream <[fp]> may be read, and <<0>> if not. <<__fwritable>> returns nonzero if stream <[fp]> may be written, and <<0>> if not. <<__freading>> returns nonzero if stream <[fp]> if the last operation on it was a read, or if it read-only, and <<0>> if not. <<__fwriting>> returns nonzero if stream <[fp]> if the last operation on it was a write, or if it write-only, and <<0>> if not. PORTABILITY These functions originate from Solaris and are also provided by GNU libc. No supporting OS subroutines are required. */ #ifndef __rtems__ #define _DEFAULT_SOURCE #include <_ansi.h> #include /* Subroutine versions of the inline or macro functions. */ size_t __fbufsize (FILE * fp) { return (size_t) fp->_bf._size; } size_t __fpending (FILE * fp) { return fp->_p - fp->_bf._base; } int __flbf (FILE * fp) { return (fp->_flags & __SLBF) != 0; } int __freadable (FILE * fp) { return (fp->_flags & (__SRD | __SRW)) != 0; } int __fwritable (FILE * fp) { return (fp->_flags & (__SWR | __SRW)) != 0; } int __freading (FILE * fp) { return (fp->_flags & __SRD) != 0; } int __fwriting (FILE * fp) { return (fp->_flags & __SWR) != 0; } #endif /* __rtems__ */ picolibc-1.7.4/newlib/libc/stdio/stdio_ext.h000066400000000000000000000035071414576234500210150ustar00rootroot00000000000000/* Copyright (c) 2011 Yaakov Selkowitz */ /* * stdio_ext.h * * Definitions for I/O internal operations, originally from Solaris. */ #ifndef _STDIO_EXT_H_ #define _STDIO_EXT_H_ #ifdef __rtems__ #error " not supported" #endif #include #define FSETLOCKING_QUERY 0 #define FSETLOCKING_INTERNAL 1 #define FSETLOCKING_BYCALLER 2 _BEGIN_STD_C void __fpurge (FILE *); int __fsetlocking (FILE *, int); /* TODO: void _flushlbf (void); */ #ifdef __GNUC__ _ELIDABLE_INLINE size_t __fbufsize (FILE *__fp) { return (size_t) __fp->_bf._size; } _ELIDABLE_INLINE int __freading (FILE *__fp) { return (__fp->_flags & __SRD) != 0; } _ELIDABLE_INLINE int __fwriting (FILE *__fp) { return (__fp->_flags & __SWR) != 0; } _ELIDABLE_INLINE int __freadable (FILE *__fp) { return (__fp->_flags & (__SRD | __SRW)) != 0; } _ELIDABLE_INLINE int __fwritable (FILE *__fp) { return (__fp->_flags & (__SWR | __SRW)) != 0; } _ELIDABLE_INLINE int __flbf (FILE *__fp) { return (__fp->_flags & __SLBF) != 0; } _ELIDABLE_INLINE size_t __fpending (FILE *__fp) { return __fp->_p - __fp->_bf._base; } #else size_t __fbufsize (FILE *); int __freading (FILE *); int __fwriting (FILE *); int __freadable (FILE *); int __fwritable (FILE *); int __flbf (FILE *); size_t __fpending (FILE *); #ifndef __cplusplus #define __fbufsize(__fp) ((size_t) (__fp)->_bf._size) #define __freading(__fp) (((__fp)->_flags & __SRD) != 0) #define __fwriting(__fp) (((__fp)->_flags & __SWR) != 0) #define __freadable(__fp) (((__fp)->_flags & (__SRD | __SRW)) != 0) #define __fwritable(__fp) (((__fp)->_flags & (__SWR | __SRW)) != 0) #define __flbf(__fp) (((__fp)->_flags & __SLBF) != 0) #define __fpending(__fp) ((size_t) ((__fp)->_p - (__fp)->_bf._base)) #endif /* __cplusplus */ #endif /* __GNUC__ */ _END_STD_C #endif /* _STDIO_EXT_H_ */ picolibc-1.7.4/newlib/libc/stdio/svfiprintf.c000066400000000000000000000027711414576234500212020ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define INTEGER_ONLY #define STRING_ONLY #include "vfprintf.c" picolibc-1.7.4/newlib/libc/stdio/svfiscanf.c000066400000000000000000000027701414576234500207710ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define INTEGER_ONLY #define STRING_ONLY #include "vfscanf.c" picolibc-1.7.4/newlib/libc/stdio/svfiwprintf.c000066400000000000000000000027731414576234500213730ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define INTEGER_ONLY #define STRING_ONLY #include "vfwprintf.c" picolibc-1.7.4/newlib/libc/stdio/svfiwscanf.c000066400000000000000000000027711414576234500211610ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define INTEGER_ONLY #define STRING_ONLY #include "vfwscanf.c" picolibc-1.7.4/newlib/libc/stdio/svfprintf.c000066400000000000000000000027441414576234500210310ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define STRING_ONLY #include "vfprintf.c" picolibc-1.7.4/newlib/libc/stdio/svfscanf.c000066400000000000000000000027431414576234500206200ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define STRING_ONLY #include "vfscanf.c" picolibc-1.7.4/newlib/libc/stdio/svfwprintf.c000066400000000000000000000027451414576234500212210ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define STRING_ONLY #include "vfwprintf.c" picolibc-1.7.4/newlib/libc/stdio/svfwscanf.c000066400000000000000000000027441414576234500210100ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define STRING_ONLY #include "vfwscanf.c" picolibc-1.7.4/newlib/libc/stdio/swprintf.c000066400000000000000000000506171414576234500206660ustar00rootroot00000000000000/* * Copyright (c) 1990, 2007 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>, <>, <>---wide character format output INDEX fwprintf INDEX _fwprintf_r INDEX wprintf INDEX _wprintf_r INDEX swprintf INDEX _swprintf_r SYNOPSIS #include int wprintf(const wchar_t *<[format]>, ...); int fwprintf(FILE *__restrict <[fd]>, const wchar_t *__restrict <[format]>, ...); int swprintf(wchar_t *__restrict <[str]>, size_t <[size]>, const wchar_t *__restrict <[format]>, ...); int _wprintf_r(struct _reent *<[ptr]>, const wchar_t *<[format]>, ...); int _fwprintf_r(struct _reent *<[ptr]>, FILE *<[fd]>, const wchar_t *<[format]>, ...); int _swprintf_r(struct _reent *<[ptr]>, wchar_t *<[str]>, size_t <[size]>, const wchar_t *<[format]>, ...); DESCRIPTION <> accepts a series of arguments, applies to each a format specifier from <<*<[format]>>>, and writes the formatted data to <>, without a terminating NUL wide character. The behavior of <> is undefined if there are not enough arguments for the format or if any argument is not the right type for the corresponding conversion specifier. <> returns when it reaches the end of the format string. If there are more arguments than the format requires, excess arguments are ignored. <> is like <>, except that output is directed to the stream <[fd]> rather than <>. <> is like <>, except that output is directed to the buffer <[str]> with a terminating wide <>, and the resulting string length is limited to at most <[size]> wide characters, including the terminating <>. It is considered an error if the output (including the terminating wide-<>) does not fit into <[size]> wide characters. (This error behavior is not the same as for <>, which <> is otherwise completely analogous to. While <> allows the needed size to be known simply by giving <[size]>=0, <> does not, giving an error instead.) For <> the behavior is undefined if the output <<*<[str]>>> overlaps with one of the arguments. Behavior is also undefined if the argument for <<%n>> within <<*<[format]>>> overlaps another argument. <[format]> is a pointer to a wide character string containing two types of objects: ordinary characters (other than <<%>>), which are copied unchanged to the output, and conversion specifications, each of which is introduced by <<%>>. (To include <<%>> in the output, use <<%%>> in the format string.) A conversion specification has the following form: . %[<[pos]>][<[flags]>][<[width]>][.<[prec]>][<[size]>]<[type]> The fields of the conversion specification have the following meanings: O+ o <[pos]> Conversions normally consume arguments in the order that they are presented. However, it is possible to consume arguments out of order, and reuse an argument for more than one conversion specification (although the behavior is undefined if the same argument is requested with different types), by specifying <[pos]>, which is a decimal integer followed by '$'. The integer must be between 1 and from limits.h, and if argument <<%n$>> is requested, all earlier arguments must be requested somewhere within <[format]>. If positional parameters are used, then all conversion specifications except for <<%%>> must specify a position. This positional parameters method is a POSIX extension to the C standard definition for the functions. o <[flags]> <[flags]> is an optional sequence of characters which control output justification, numeric signs, decimal points, trailing zeros, and octal and hex prefixes. The flag characters are minus (<<->>), plus (<<+>>), space ( ), zero (<<0>>), sharp (<<#>>), and quote (<<'>>). They can appear in any combination, although not all flags can be used for all conversion specification types. o+ o ' A POSIX extension to the C standard. However, this implementation presently treats it as a no-op, which is the default behavior for the C locale, anyway. (If it did what it is supposed to, when <[type]> were <>, <>, <>, <>, <>, <>, or <>, the integer portion of the conversion would be formatted with thousands' grouping wide characters.) o - The result of the conversion is left justified, and the right is padded with blanks. If you do not use this flag, the result is right justified, and padded on the left. o + The result of a signed conversion (as determined by <[type]> of <>, <>, <>, <>, <>, <>, <>, <>, <>, or <>) will always begin with a plus or minus sign. (If you do not use this flag, positive values do not begin with a plus sign.) o " " (space) If the first character of a signed conversion specification is not a sign, or if a signed conversion results in no characters, the result will begin with a space. If the space ( ) flag and the plus (<<+>>) flag both appear, the space flag is ignored. o 0 If the <[type]> character is <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, or <>: leading zeros are used to pad the field width (following any indication of sign or base); no spaces are used for padding. If the zero (<<0>>) and minus (<<->>) flags both appear, the zero (<<0>>) flag will be ignored. For <>, <>, <>, <>, <>, and <> conversions, if a precision <[prec]> is specified, the zero (<<0>>) flag is ignored. Note that <<0>> is interpreted as a flag, not as the beginning of a field width. o # The result is to be converted to an alternative form, according to the <[type]> character. o- The alternative form output with the # flag depends on the <[type]> character: o+ o o Increases precision to force the first digit of the result to be a zero. o x A non-zero result will have a <<0x>> prefix. o X A non-zero result will have a <<0X>> prefix. o a, A, e, E, f, or F The result will always contain a decimal point even if no digits follow the point. (Normally, a decimal point appears only if a digit follows it.) Trailing zeros are removed. o g or G The result will always contain a decimal point even if no digits follow the point. Trailing zeros are not removed. o all others Undefined. o- o <[width]> <[width]> is an optional minimum field width. You can either specify it directly as a decimal integer, or indirectly by using instead an asterisk (<<*>>), in which case an <> argument is used as the field width. If positional arguments are used, then the width must also be specified positionally as <<*m$>>, with m as a decimal integer. Negative field widths are treated as specifying the minus (<<->>) flag for left justfication, along with a positive field width. The resulting format may be wider than the specified width. o <[prec]> <[prec]> is an optional field; if present, it is introduced with `<<.>>' (a period). You can specify the precision either directly as a decimal integer or indirectly by using an asterisk (<<*>>), in which case an <> argument is used as the precision. If positional arguments are used, then the precision must also be specified positionally as <<*m$>>, with m as a decimal integer. Supplying a negative precision is equivalent to omitting the precision. If only a period is specified the precision is zero. The effect depends on the conversion <[type]>. o+ o d, i, o, u, x, or X Minimum number of digits to appear. If no precision is given, defaults to 1. o a or A Number of digits to appear after the decimal point. If no precision is given, the precision defaults to the minimum needed for an exact representation. o e, E, f or F Number of digits to appear after the decimal point. If no precision is given, the precision defaults to 6. o g or G Maximum number of significant digits. A precision of 0 is treated the same as a precision of 1. If no precision is given, the precision defaults to 6. o s or S Maximum number of characters to print from the string. If no precision is given, the entire string is printed. o all others undefined. o- o <[size]> <[size]> is an optional modifier that changes the data type that the corresponding argument has. Behavior is unspecified if a size is given that does not match the <[type]>. o+ o hh With <>, <>, <>, <>, <>, or <>, specifies that the argument should be converted to a <> or <> before printing. With <>, specifies that the argument is a pointer to a <>. o h With <>, <>, <>, <>, <>, or <>, specifies that the argument should be converted to a <> or <> before printing. With <>, specifies that the argument is a pointer to a <>. o l With <>, <>, <>, <>, <>, or <>, specifies that the argument is a <> or <>. With <>, specifies that the argument has type <>. With <>, specifies that the argument is a pointer to <>. With <>, specifies that the argument is a pointer to a <>. With <>, <>, <>, <>, <>, <>, <>, or <>, has no effect (because of vararg promotion rules, there is no need to distinguish between <> and <>). o ll With <>, <>, <>, <>, <>, or <>, specifies that the argument is a <> or <>. With <>, specifies that the argument is a pointer to a <>. o j With <>, <>, <>, <>, <>, or <>, specifies that the argument is an <> or <>. With <>, specifies that the argument is a pointer to an <>. o z With <>, <>, <>, <>, <>, or <>, specifies that the argument is a <>. With <>, specifies that the argument is a pointer to a <>. o t With <>, <>, <>, <>, <>, or <>, specifies that the argument is a <>. With <>, specifies that the argument is a pointer to a <>. o L With <>, <>, <>, <>, <>, <>, <>, or <>, specifies that the argument is a <>. o- o <[type]> <[type]> specifies what kind of conversion <> performs. Here is a table of these: o+ o % Prints the percent character (<<%>>). o c If no <> qualifier is present, the int argument shall be converted to a wide character as if by calling the btowc() function and the resulting wide character shall be written. Otherwise, the wint_t argument shall be converted to wchar_t, and written. o C Short for <<%lc>>. A POSIX extension to the C standard. o s If no <> qualifier is present, the application shall ensure that the argument is a pointer to a character array containing a character sequence beginning in the initial shift state. Characters from the array shall be converted as if by repeated calls to the mbrtowc() function, with the conversion state described by an mbstate_t object initialized to zero before the first character is converted, and written up to (but not including) the terminating null wide character. If the precision is specified, no more than that many wide characters shall be written. If the precision is not specified, or is greater than the size of the array, the application shall ensure that the array contains a null wide character. If an <> qualifier is present, the application shall ensure that the argument is a pointer to an array of type wchar_t. Wide characters from the array shall be written up to (but not including) a terminating null wide character. If no precision is specified, or is greater than the size of the array, the application shall ensure that the array contains a null wide character. If a precision is specified, no more than that many wide characters shall be written. o S Short for <<%ls>>. A POSIX extension to the C standard. o d or i Prints a signed decimal integer; takes an <>. Leading zeros are inserted as necessary to reach the precision. A value of 0 with a precision of 0 produces an empty string. o o Prints an unsigned octal integer; takes an <>. Leading zeros are inserted as necessary to reach the precision. A value of 0 with a precision of 0 produces an empty string. o u Prints an unsigned decimal integer; takes an <>. Leading zeros are inserted as necessary to reach the precision. A value of 0 with a precision of 0 produces an empty string. o x Prints an unsigned hexadecimal integer (using <> as digits beyond <<9>>); takes an <>. Leading zeros are inserted as necessary to reach the precision. A value of 0 with a precision of 0 produces an empty string. o X Like <>, but uses <> as digits beyond <<9>>. o f Prints a signed value of the form <<[-]9999.9999>>, with the precision determining how many digits follow the decimal point; takes a <> (remember that <> promotes to <> as a vararg). The low order digit is rounded to even. If the precision results in at most DECIMAL_DIG digits, the result is rounded correctly; if more than DECIMAL_DIG digits are printed, the result is only guaranteed to round back to the original value. If the value is infinite, the result is <>, and no zero padding is performed. If the value is not a number, the result is <>, and no zero padding is performed. o F Like <>, but uses <> and <> for non-finite numbers. o e Prints a signed value of the form <<[-]9.9999e[+|-]999>>; takes a <>. The digit before the decimal point is non-zero if the value is non-zero. The precision determines how many digits appear between <<.>> and <>, and the exponent always contains at least two digits. The value zero has an exponent of zero. If the value is not finite, it is printed like <>. o E Like <>, but using <> to introduce the exponent, and like <> for non-finite values. o g Prints a signed value in either <> or <> form, based on the given value and precision---an exponent less than -4 or greater than the precision selects the <> form. Trailing zeros and the decimal point are printed only if necessary; takes a <>. o G Like <>, except use <> or <> form. o a Prints a signed value of the form <<[-]0x1.ffffp[+|-]9>>; takes a <>. The letters <> are used for digits beyond <<9>>. The precision determines how many digits appear after the decimal point. The exponent contains at least one digit, and is a decimal value representing the power of 2; a value of 0 has an exponent of 0. Non-finite values are printed like <>. o A Like <>, except uses <>, <

>, and <> instead of lower case. o n Takes a pointer to <>, and stores a count of the number of bytes written so far. No output is created. o p Takes a pointer to <>, and prints it in an implementation-defined format. This implementation is similar to <<%#tx>>), except that <<0x>> appears even for the NULL pointer. o m Prints the output of <>; no argument is required. A GNU extension. o- O- <<_wprintf_r>>, <<_fwprintf_r>>, <<_swprintf_r>>, are simply reentrant versions of the functions above. RETURNS On success, <> return the number of wide characters in the output string, except the concluding <> is not counted. <> and <> return the number of characters transmitted. If an error occurs, the result of <>, <>, and <> is a negative value. For <> and <>, <> may be set according to <>. For <>, <> may be set to EOVERFLOW if <[size]> is greater than INT_MAX / sizeof (wchar_t), or when the output does not fit into <[size]> wide characters (including the terminating wide <>). BUGS The ``''' (quote) flag does not work when locale's thousands_sep is not empty. PORTABILITY POSIX-1.2008 with extensions; C99 (compliant except for POSIX extensions). Depending on how newlib was configured, not all format specifiers are supported. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include #include "local.h" /* NOTE: _swprintf_r() should be identical to swprintf() except for the * former having ptr as a parameter and the latter needing to declare it as * a variable set to _REENT. */ int _swprintf_r (struct _reent *ptr, wchar_t *str, size_t size, const wchar_t *fmt, ...) { int ret; va_list ap; FILE f; if (size > INT_MAX / sizeof (wchar_t)) { __errno_r(ptr) = EOVERFLOW; /* POSIX extension */ return EOF; } f._flags = __SWR | __SSTR; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = (size > 0 ? (size - 1) * sizeof (wchar_t) : 0); f._file = -1; /* No file. */ va_start (ap, fmt); ret = _svfwprintf_r (ptr, &f, fmt, ap); va_end (ap); /* _svfwprintf_r() does not put in a terminating NUL, so add one if * appropriate, which is whenever size is > 0. _svfwprintf_r() stops * after n-1, so always just put at the end. */ if (size > 0) { *(wchar_t *)f._p = L'\0'; /* terminate the string */ } if(ret >= size) { /* _svfwprintf_r() returns how many wide characters it would have printed * if there were enough space. Return an error if too big to fit in str, * unlike snprintf, which returns the size needed. */ __errno_r(ptr) = EOVERFLOW; /* POSIX extension */ ret = -1; } return (ret); } #ifndef _REENT_ONLY int swprintf (wchar_t *__restrict str, size_t size, const wchar_t *__restrict fmt, ...) { int ret; va_list ap; FILE f; struct _reent *ptr = _REENT; if (size > INT_MAX / sizeof (wchar_t)) { __errno_r(ptr) = EOVERFLOW; /* POSIX extension */ return EOF; } f._flags = __SWR | __SSTR; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = (size > 0 ? (size - 1) * sizeof (wchar_t) : 0); f._file = -1; /* No file. */ va_start (ap, fmt); ret = _svfwprintf_r (ptr, &f, fmt, ap); va_end (ap); /* _svfwprintf_r() does not put in a terminating NUL, so add one if * appropriate, which is whenever size is > 0. _svfwprintf_r() stops * after n-1, so always just put at the end. */ if (size > 0) { *(wchar_t *)f._p = L'\0'; /* terminate the string */ } if(ret >= size) { /* _svfwprintf_r() returns how many wide characters it would have printed * if there were enough space. Return an error if too big to fit in str, * unlike snprintf, which returns the size needed. */ __errno_r(ptr) = EOVERFLOW; /* POSIX extension */ ret = -1; } return (ret); } #endif picolibc-1.7.4/newlib/libc/stdio/swscanf.c000066400000000000000000000321501414576234500204460ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>, <>, <>---scan and format wide character input INDEX wscanf INDEX _wscanf_r INDEX fwscanf INDEX _fwscanf_r INDEX swscanf INDEX _swscanf_r SYNOPSIS #include int wscanf(const wchar_t *__restrict <[format]>, ...); int fwscanf(FILE *__restrict <[fd]>, const wchar_t *__restrict <[format]>, ...); int swscanf(const wchar_t *__restrict <[str]>, const wchar_t *__restrict <[format]>, ...); int _wscanf_r(struct _reent *<[ptr]>, const wchar_t *<[format]>, ...); int _fwscanf_r(struct _reent *<[ptr]>, FILE *<[fd]>, const wchar_t *<[format]>, ...); int _swscanf_r(struct _reent *<[ptr]>, const wchar_t *<[str]>, const wchar_t *<[format]>, ...); DESCRIPTION <> scans a series of input fields from standard input, one wide character at a time. Each field is interpreted according to a format specifier passed to <> in the format string at <<*<[format]>>>. <> stores the interpreted input from each field at the address passed to it as the corresponding argument following <[format]>. You must supply the same number of format specifiers and address arguments as there are input fields. There must be sufficient address arguments for the given format specifiers; if not the results are unpredictable and likely disasterous. Excess address arguments are merely ignored. <> often produces unexpected results if the input diverges from an expected pattern. Since the combination of <> or <> followed by <> is safe and easy, that is the preferred way to be certain that a program is synchronized with input at the end of a line. <> and <> are identical to <>, other than the source of input: <> reads from a file, and <> from a string. The routines <<_wscanf_r>>, <<_fwscanf_r>>, and <<_swscanf_r>> are reentrant versions of <>, <>, and <> that take an additional first argument pointing to a reentrancy structure. The string at <<*<[format]>>> is a wide character sequence composed of zero or more directives. Directives are composed of one or more whitespace characters, non-whitespace characters, and format specifications. Whitespace characters are blank (<< >>), tab (<<\t>>), or newline (<<\n>>). When <> encounters a whitespace character in the format string it will read (but not store) all consecutive whitespace characters up to the next non-whitespace character in the input. Non-whitespace characters are all other ASCII characters except the percent sign (<<%>>). When <> encounters a non-whitespace character in the format string it will read, but not store a matching non-whitespace character. Format specifications tell <> to read and convert characters from the input field into specific types of values, and store then in the locations specified by the address arguments. Trailing whitespace is left unread unless explicitly matched in the format string. The format specifiers must begin with a percent sign (<<%>>) and have the following form: . %[*][<[width]>][<[size]>]<[type]> Each format specification begins with the percent character (<<%>>). The other fields are: O+ o * an optional marker; if present, it suppresses interpretation and assignment of this input field. o <[width]> an optional maximum field width: a decimal integer, which controls the maximum number of characters that will be read before converting the current input field. If the input field has fewer than <[width]> characters, <> reads all the characters in the field, and then proceeds with the next field and its format specification. If a whitespace or a non-convertable wide character occurs before <[width]> character are read, the characters up to that character are read, converted, and stored. Then <> proceeds to the next format specification. o <[size]> <>, <>, <>, <>, <>, and <> are optional size characters which override the default way that <> interprets the data type of the corresponding argument. @multitable @columnfractions 0.18 0.30 0.52 @headitem Modifier @tab Type(s) @tab @item hh @tab d, i, o, u, x, n @tab convert input to char, store in char object @item h @tab d, i, o, u, x, n @tab convert input to short, store in short object @item h @tab e, f, c, s, p @tab no effect @item j @tab d, i, o, u, x, n @tab convert input to intmax_t, store in intmax_t object @item j @tab all others @tab no effect @item l @tab d, i, o, u, x, n @tab convert input to long, store in long object @item l @tab e, f, g @tab convert input to double, store in a double object @item l @tab c, s, [ @tab the input is stored in a wchar_t object @item l @tab p @tab no effect @item ll @tab d, i, o, u, x, n @tab convert to long long, store in long long object @item L @tab d, i, o, u, x, n @tab convert to long long, store in long long object @item L @tab e, f, g, E, G @tab convert to long double, store in long double object @item L @tab all others @tab no effect @item t @tab d, i, o, u, x, n @tab convert input to ptrdiff_t, store in ptrdiff_t object @item t @tab all others @tab no effect @item z @tab d, i, o, u, x, n @tab convert input to size_t, store in size_t object @item z @tab all others @tab no effect @end multitable o <[type]> A character to specify what kind of conversion <> performs. Here is a table of the conversion characters: o+ o % No conversion is done; the percent character (<<%>>) is stored. o c Scans one wide character. Corresponding <[arg]>: <<(char *arg)>>. Otherwise, if an <> specifier is present, the corresponding <[arg]> is a <<(wchar_t *arg)>>. o s Reads a character string into the array supplied. Corresponding <[arg]>: <<(char arg[])>>. If an <> specifier is present, the corresponding <[arg]> is a <<(wchar_t *arg)>>. o [<[pattern]>] Reads a non-empty character string into memory starting at <[arg]>. This area must be large enough to accept the sequence and a terminating null character which will be added automatically. (<[pattern]> is discussed in the paragraph following this table). Corresponding <[arg]>: <<(char *arg)>>. If an <> specifier is present, the corresponding <[arg]> is a <<(wchar_t *arg)>>. o d Reads a decimal integer into the corresponding <[arg]>: <<(int *arg)>>. o o Reads an octal integer into the corresponding <[arg]>: <<(int *arg)>>. o u Reads an unsigned decimal integer into the corresponding <[arg]>: <<(unsigned int *arg)>>. o x,X Read a hexadecimal integer into the corresponding <[arg]>: <<(int *arg)>>. o e, f, g Read a floating-point number into the corresponding <[arg]>: <<(float *arg)>>. o E, F, G Read a floating-point number into the corresponding <[arg]>: <<(double *arg)>>. o i Reads a decimal, octal or hexadecimal integer into the corresponding <[arg]>: <<(int *arg)>>. o n Stores the number of characters read in the corresponding <[arg]>: <<(int *arg)>>. o p Stores a scanned pointer. ANSI C leaves the details to each implementation; this implementation treats <<%p>> exactly the same as <<%U>>. Corresponding <[arg]>: <<(void **arg)>>. o- A <[pattern]> of characters surrounded by square brackets can be used instead of the <> type character. <[pattern]> is a set of characters which define a search set of possible characters making up the <> input field. If the first character in the brackets is a caret (<<^>>), the search set is inverted to include all ASCII characters except those between the brackets. There is no range facility as is defined in the corresponding non-wide character scanf functions. Ranges are not part of the POSIX standard. Here are some <[pattern]> examples: o+ o %[abcd] matches wide character strings containing only <>, <>, <>, and <>. o %[^abcd] matches wide character strings containing any characters except <>, <>, <>, or <>. o %[A-DW-Z] Note: No wide character ranges, so this expression matches wide character strings containing <>, <<->>, <>, <>, <>. o- Floating point numbers (for field types <>, <>, <>, <>, <>, <>) must correspond to the following general form: . [+/-] ddddd[.]ddd [E|e[+|-]ddd] where objects inclosed in square brackets are optional, and <> represents decimal, octal, or hexadecimal digits. O- RETURNS <> returns the number of input fields successfully scanned, converted and stored; the return value does not include scanned fields which were not stored. If <> attempts to read at end-of-file, the return value is <>. If no fields were stored, the return value is <<0>>. <> might stop scanning a particular field before reaching the normal field end character, or may terminate entirely. <> stops scanning and storing the current field and moves to the next input field (if any) in any of the following situations: O+ o The assignment suppressing character (<<*>>) appears after the <<%>> in the format specification; the current input field is scanned but not stored. o <[width]> characters have been read (<[width]> is a width specification, a positive decimal integer). o The next wide character read cannot be converted under the the current format (for example, if a <> is read when the format is decimal). o The next wide character in the input field does not appear in the search set (or does appear in the inverted search set). O- When <> stops scanning the current input field for one of these reasons, the next character is considered unread and used as the first character of the following input field, or the first character in a subsequent read operation on the input. <> will terminate under the following circumstances: O+ o The next wide character in the input field conflicts with a corresponding non-whitespace character in the format string. o The next wide character in the input field is <>. o The format string has been exhausted. O- When the format string contains a wide character sequence that is not part of a format specification, the same wide character sequence must appear in the input; <> will scan but not store the matched characters. If a conflict occurs, the first conflicting wide character remains in the input as if it had never been read. PORTABILITY <> is C99, POSIX-1.2008. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "local.h" #ifndef _REENT_ONLY int swscanf (const wchar_t *__restrict str, const wchar_t *__restrict fmt, ...) { int ret; va_list ap; FILE f; f._flags = __SRD | __SSTR; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._r = wcslen (str) * sizeof (wchar_t); f._read = __seofread; f._ub._base = NULL; f._lb._base = NULL; f._file = -1; /* No file. */ va_start (ap, fmt); ret = __ssvfwscanf_r (_REENT, &f, fmt, ap); va_end (ap); return ret; } #endif /* !_REENT_ONLY */ int _swscanf_r (struct _reent *ptr, const wchar_t *str, const wchar_t *fmt, ...) { int ret; va_list ap; FILE f; f._flags = __SRD | __SSTR; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._r = wcslen (str) * sizeof (wchar_t); f._read = __seofread; f._ub._base = NULL; f._lb._base = NULL; f._file = -1; /* No file. */ va_start (ap, fmt); ret = __ssvfwscanf_r (ptr, &f, fmt, ap); va_end (ap); return ret; } picolibc-1.7.4/newlib/libc/stdio/sys/000077500000000000000000000000001414576234500174535ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/stdio/sys/meson.build000066400000000000000000000036221414576234500216200ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # inc_stdio_sys_headers_all = [ 'stdio.h', ] inc_stdio_sys_headers = [] foreach file : inc_stdio_sys_headers_all if not (file in inc_sys_headers_machine) inc_stdio_sys_headers += file else message('libc/stdio/sys/' + file + ': machine overrides generic stdio/sys') endif endforeach install_headers( inc_stdio_sys_headers, subdir:'sys' ) picolibc-1.7.4/newlib/libc/stdio/sys/stdio.h000066400000000000000000000030041414576234500207430ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef _NEWLIB_STDIO_H #define _NEWLIB_STDIO_H #include /* Internal locking macros, used to protect stdio functions. In the general case, expand to nothing. Use __SSTR flag in FILE _flags to detect if FILE is private to sprintf/sscanf class of functions; if set then do nothing as lock is not initialised. */ #if !defined(_flockfile) #ifndef __SINGLE_THREAD__ # define _flockfile(fp) (((fp)->_flags & __SSTR) ? 0 : __lock_acquire_recursive((fp)->_lock)) #else # define _flockfile(fp) ((void) 0) #endif #endif #if !defined(_funlockfile) #ifndef __SINGLE_THREAD__ # define _funlockfile(fp) (((fp)->_flags & __SSTR) ? 0 : __lock_release_recursive((fp)->_lock)) #else # define _funlockfile(fp) ((void) 0) #endif #endif #endif /* _NEWLIB_STDIO_H */ picolibc-1.7.4/newlib/libc/stdio/tmpfile.c000066400000000000000000000050761414576234500204510ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---create a temporary file INDEX tmpfile INDEX _tmpfile_r SYNOPSIS #include FILE *tmpfile(void); FILE *_tmpfile_r(struct _reent *<[reent]>); DESCRIPTION Create a temporary file (a file which will be deleted automatically), using a name generated by <>. The temporary file is opened with the mode <<"wb+">>, permitting you to read and write anywhere in it as a binary file (without any data transformations the host system may perform for text files). The alternate function <<_tmpfile_r>> is a reentrant version. The argument <[reent]> is a pointer to a reentrancy structure. RETURNS <> normally returns a pointer to the temporary file. If no temporary file could be created, the result is NULL, and <> records the reason for failure. PORTABILITY Both ANSI C and the System V Interface Definition (Issue 2) require <>. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>, <>, <>. <> also requires the global pointer <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include #ifndef O_BINARY # define O_BINARY 0 #endif FILE * _tmpfile_r (struct _reent *ptr) { FILE *fp; int e; char *f; char buf[L_tmpnam]; int fd; do { if ((f = _tmpnam_r (ptr, buf)) == NULL) return NULL; fd = open (f, O_RDWR | O_CREAT | O_EXCL | O_BINARY, S_IRUSR | S_IWUSR); } while (fd < 0 && __errno_r(ptr) == EEXIST); if (fd < 0) return NULL; fp = _fdopen_r (ptr, fd, "wb+"); e = __errno_r(ptr); if (!fp) close (fd); (void) remove (f); __errno_r(ptr) = e; return fp; } #ifndef _REENT_ONLY FILE * tmpfile (void) { return _tmpfile_r (_REENT); } #endif picolibc-1.7.4/newlib/libc/stdio/tmpnam.c000066400000000000000000000123501414576234500202760ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* * tmpname.c * Original Author: G. Haley */ /* FUNCTION <>, <>---name for a temporary file INDEX tmpnam INDEX tempnam INDEX _tmpnam_r INDEX _tempnam_r SYNOPSIS #include char *tmpnam(char *<[s]>); char *tempnam(char *<[dir]>, char *<[pfx]>); char *_tmpnam_r(struct _reent *<[reent]>, char *<[s]>); char *_tempnam_r(struct _reent *<[reent]>, char *<[dir]>, char *<[pfx]>); DESCRIPTION Use either of these functions to generate a name for a temporary file. The generated name is guaranteed to avoid collision with other files (for up to <> calls of either function). <> generates file names with the value of <> (defined in `<>') as the leading directory component of the path. You can use the <> argument <[s]> to specify a suitable area of memory for the generated filename; otherwise, you can call <> to use an internal static buffer. <> allows you more control over the generated filename: you can use the argument <[dir]> to specify the path to a directory for temporary files, and you can use the argument <[pfx]> to specify a prefix for the base filename. If <[dir]> is <>, <> will attempt to use the value of environment variable <> instead; if there is no such value, <> uses the value of <> (defined in `<>'). If you don't need any particular prefix to the basename of temporary files, you can pass <> as the <[pfx]> argument to <>. <<_tmpnam_r>> and <<_tempnam_r>> are reentrant versions of <> and <> respectively. The extra argument <[reent]> is a pointer to a reentrancy structure. WARNINGS The generated filenames are suitable for temporary files, but do not in themselves make files temporary. Files with these names must still be explicitly removed when you no longer want them. If you supply your own data area <[s]> for <>, you must ensure that it has room for at least <> elements of type <>. RETURNS Both <> and <> return a pointer to the newly generated filename. PORTABILITY ANSI C requires <>, but does not specify the use of <>. The System V Interface Definition (Issue 2) requires both <> and <>. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>, <>, <>. The global pointer <> is also required. */ #define _DEFAULT_SOURCE #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include #include /* Try to open the file specified, if it can't be opened then try another one. Return nonzero if successful, otherwise zero. */ static int worker (struct _reent *ptr, char *result, const char *part1, const char *part2, int part3, int *part4) { /* Generate the filename and make sure that there isn't one called it already. */ while (1) { int t; _sprintf_r (ptr, result, "%s/%s%x.%x", part1, part2, part3, *part4); (*part4)++; t = open (result, O_RDONLY, 0); if (t == -1) { if (__errno_r(ptr) == ENOSYS) { result[0] = '\0'; return 0; } break; } close (t); } return 1; } #define _TMPNAM_SIZE 25 static NEWLIB_THREAD_LOCAL char _tmpnam_buf[_TMPNAM_SIZE]; char * _tmpnam_r (struct _reent *p, char *s) { char *result; int pid; if (s == NULL) { /* ANSI states we must use an internal static buffer if s is NULL */ result = _tmpnam_buf; } else { result = s; } pid = getpid (); if (worker (p, result, P_tmpdir, "t", pid, &p->_inc)) { p->_inc++; return result; } return NULL; } char * _tempnam_r (struct _reent *p, const char *dir, const char *pfx) { char *filename; int length; const char *prefix = (pfx) ? pfx : ""; if (dir == NULL && (dir = getenv ("TMPDIR")) == NULL) dir = P_tmpdir; /* two 8 digit numbers + . / */ length = strlen (dir) + strlen (prefix) + (4 * sizeof (int)) + 2 + 1; filename = malloc (length); if (filename) { if (! worker (p, filename, dir, prefix, getpid () ^ (int) (_POINTER_INT) p, &p->_inc)) return NULL; } return filename; } #ifndef _REENT_ONLY char * tempnam (const char *dir, const char *pfx) { return _tempnam_r (_REENT, dir, pfx); } char * tmpnam (char *s) { return _tmpnam_r (_REENT, s); } #endif picolibc-1.7.4/newlib/libc/stdio/ungetc.c000066400000000000000000000130731414576234500202720ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---push data back into a stream INDEX ungetc INDEX _ungetc_r SYNOPSIS #include int ungetc(int <[c]>, FILE *<[stream]>); int _ungetc_r(struct _reent *<[reent]>, int <[c]>, FILE *<[stream]>); DESCRIPTION <> is used to return bytes back to <[stream]> to be read again. If <[c]> is EOF, the stream is unchanged. Otherwise, the unsigned char <[c]> is put back on the stream, and subsequent reads will see the bytes pushed back in reverse order. Pushed byes are lost if the stream is repositioned, such as by <>, <>, or <>. The underlying file is not changed, but it is possible to push back something different than what was originally read. Ungetting a character will clear the end-of-stream marker, and decrement the file position indicator. Pushing back beyond the beginning of a file gives unspecified behavior. The alternate function <<_ungetc_r>> is a reentrant version. The extra argument <[reent]> is a pointer to a reentrancy structure. RETURNS The character pushed back, or <> on error. PORTABILITY ANSI C requires <>, but only requires a pushback buffer of one byte; although this implementation can handle multiple bytes, not all can. Pushing back a signed char is a common application bug. Supporting OS subroutines required: <>. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "local.h" /* * Expand the ungetc buffer `in place'. That is, adjust fp->_p when * the buffer moves, so that it points the same distance from the end, * and move the bytes in the buffer around as necessary so that they * are all at the end (stack-style). */ /*static*/ int __submore (struct _reent *rptr, register FILE *fp) { register int i; register unsigned char *p; (void) rptr; if (fp->_ub._base == fp->_ubuf) { /* * Get a new buffer (rather than expanding the old one). */ if ((p = (unsigned char *) malloc ((size_t) BUFSIZ)) == NULL) return EOF; fp->_ub._base = p; fp->_ub._size = BUFSIZ; p += BUFSIZ - sizeof (fp->_ubuf); for (i = sizeof (fp->_ubuf); --i >= 0;) p[i] = fp->_ubuf[i]; fp->_p = p; return 0; } i = fp->_ub._size; p = (unsigned char *) realloc ((void *) (fp->_ub._base), i << 1); if (p == NULL) return EOF; (void) memcpy ((void *) (p + i), (void *) p, (size_t) i); fp->_p = p + i; fp->_ub._base = p; fp->_ub._size = i << 1; return 0; } int _ungetc_r (struct _reent *rptr, int c, register FILE *fp) { if (c == EOF) return (EOF); /* Ensure stdio has been initialized. ??? Might be able to remove this as some other stdio routine should have already been called to get the char we are un-getting. */ CHECK_INIT (rptr, fp); _newlib_flockfile_start (fp); ORIENT (fp, -1); /* After ungetc, we won't be at eof anymore */ fp->_flags &= ~__SEOF; if ((fp->_flags & __SRD) == 0) { /* * Not already reading: no good unless reading-and-writing. * Otherwise, flush any current write stuff. */ if ((fp->_flags & __SRW) == 0) { _newlib_flockfile_exit (fp); return EOF; } if (fp->_flags & __SWR) { if (_fflush_r (rptr, fp)) { _newlib_flockfile_exit (fp); return EOF; } fp->_flags &= ~__SWR; fp->_w = 0; fp->_lbfsize = 0; } fp->_flags |= __SRD; } c = (unsigned char) c; /* * If we are in the middle of ungetc'ing, just continue. * This may require expanding the current ungetc buffer. */ if (HASUB (fp)) { if (fp->_r >= fp->_ub._size && __submore (rptr, fp)) { _newlib_flockfile_exit (fp); return EOF; } *--fp->_p = c; fp->_r++; _newlib_flockfile_exit (fp); return c; } /* * If we can handle this by simply backing up, do so, * but never replace the original character. * (This makes sscanf() work when scanning `const' data.) */ if (fp->_bf._base != NULL && fp->_p > fp->_bf._base && fp->_p[-1] == c) { fp->_p--; fp->_r++; _newlib_flockfile_exit (fp); return c; } /* * Create an ungetc buffer. * Initially, we will use the `reserve' buffer. */ fp->_ur = fp->_r; fp->_up = fp->_p; fp->_ub._base = fp->_ubuf; fp->_ub._size = sizeof (fp->_ubuf); fp->_ubuf[sizeof (fp->_ubuf) - 1] = c; fp->_p = &fp->_ubuf[sizeof (fp->_ubuf) - 1]; fp->_r = 1; _newlib_flockfile_end (fp); return c; } #ifndef _REENT_ONLY int ungetc (int c, register FILE *fp) { return _ungetc_r (_REENT, c, fp); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/ungetwc.c000066400000000000000000000065141414576234500204630ustar00rootroot00000000000000/*- * Copyright (c) 2002-2004 Tim J. Robbins. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* FUNCTION <>---push wide character data back into a stream INDEX ungetwc INDEX _ungetwc_r SYNOPSIS #include #include wint_t ungetwc(wint_t <[wc]>, FILE *<[stream]>); wint_t _ungetwc_r(struct _reent *<[reent]>, wint_t <[wc]>, FILE *<[stream]>); DESCRIPTION <> is used to return wide characters back to <[stream]> to be read again. If <[wc]> is WEOF, the stream is unchanged. Otherwise, the wide character <[wc]> is put back on the stream, and subsequent reads will see the wide chars pushed back in reverse order. Pushed wide chars are lost if the stream is repositioned, such as by <>, <>, or <>. The underlying file is not changed, but it is possible to push back something different than what was originally read. Ungetting a character will clear the end-of-stream marker, and decrement the file position indicator. Pushing back beyond the beginning of a file gives unspecified behavior. The alternate function <<_ungetwc_r>> is a reentrant version. The extra argument <[reent]> is a pointer to a reentrancy structure. RETURNS The wide character pushed back, or <> on error. PORTABILITY C99 */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include #include "local.h" wint_t _ungetwc_r (struct _reent *ptr, wint_t wc, register FILE *fp) { char buf[MB_LEN_MAX]; size_t len; _newlib_flockfile_start (fp); ORIENT (fp, 1); if (wc == WEOF) wc = WEOF; else if ((len = wcrtomb(buf, wc, &fp->_mbstate)) == (size_t)-1) { fp->_flags |= __SERR; wc = WEOF; } else while (len-- != 0) if (_ungetc_r(ptr, (unsigned char)buf[len], fp) == EOF) { wc = WEOF; break; } _newlib_flockfile_end (fp); return wc; } /* * MT-safe version. */ wint_t ungetwc (wint_t wc, FILE *fp) { struct _reent *reent = _REENT; CHECK_INIT (reent, fp); return _ungetwc_r (reent, wc, fp); } picolibc-1.7.4/newlib/libc/stdio/vasiprintf.c000066400000000000000000000032271414576234500211720ustar00rootroot00000000000000/* * Copyright (c) 1990, 2007 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* This code was based on vsiprintf.c */ /* doc in vfprintf.c */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "local.h" #ifndef _REENT_ONLY int vasiprintf (char **strp, const char *fmt, va_list ap) { return _vasiprintf_r (_REENT, strp, fmt, ap); } #endif /* !_REENT_ONLY */ int _vasiprintf_r (struct _reent *ptr, char **strp, const char *fmt, va_list ap) { int ret; FILE f; f._flags = __SWR | __SSTR | __SMBF ; f._bf._base = f._p = NULL; f._bf._size = f._w = 0; f._file = -1; /* No file. */ ret = _svfiprintf_r (ptr, &f, fmt, ap); if (ret >= 0) { *f._p = 0; *strp = (char *) f._bf._base; } return ret; } picolibc-1.7.4/newlib/libc/stdio/vasniprintf.c000066400000000000000000000027751414576234500213570ustar00rootroot00000000000000/* Copyright (C) 2007, 2008 Eric Blake * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ /* This code was derived from asprintf.c */ /* doc in viprintf.c */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include "local.h" char * _vasniprintf_r (struct _reent *ptr, char *buf, size_t *lenp, const char *fmt, va_list ap) { int ret; FILE f; size_t len = *lenp; if (buf && len) { /* mark an existing buffer, but allow allocation of larger string */ f._flags = __SWR | __SSTR | __SOPT; } else { /* mark a zero-length reallocatable buffer */ f._flags = __SWR | __SSTR | __SMBF; len = 0; buf = NULL; } f._bf._base = f._p = (unsigned char *) buf; /* For now, inherit the 32-bit signed limit of FILE._bf._size. FIXME - it would be nice to rewrite sys/reent.h to support size_t for _size. */ if (len > INT_MAX) { __errno_r(ptr) = EOVERFLOW; return NULL; } f._bf._size = f._w = len; f._file = -1; /* No file. */ ret = _svfiprintf_r (ptr, &f, fmt, ap); if (ret < 0) return NULL; *lenp = ret; *f._p = '\0'; return (char *) f._bf._base; } #ifndef _REENT_ONLY char * vasniprintf (char *buf, size_t *lenp, const char *fmt, va_list ap) { return _vasniprintf_r (_REENT, buf, lenp, fmt, ap); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/vasnprintf.c000066400000000000000000000034511414576234500211760ustar00rootroot00000000000000/* Copyright (C) 2007 Eric Blake * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ /* This code was derived from asprintf.c */ /* doc in vfprintf.c */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include "local.h" char * _vasnprintf_r (struct _reent *ptr, char *buf, size_t *lenp, const char *fmt, va_list ap) { int ret; FILE f; size_t len = *lenp; if (buf && len) { /* mark an existing buffer, but allow allocation of larger string */ f._flags = __SWR | __SSTR | __SOPT; } else { /* mark a zero-length reallocatable buffer */ f._flags = __SWR | __SSTR | __SMBF; len = 0; buf = NULL; } f._bf._base = f._p = (unsigned char *) buf; /* For now, inherit the 32-bit signed limit of FILE._bf._size. FIXME - it would be nice to rewrite sys/reent.h to support size_t for _size. */ if (len > INT_MAX) { __errno_r(ptr) = EOVERFLOW; return NULL; } f._bf._size = f._w = len; f._file = -1; /* No file. */ ret = _svfprintf_r (ptr, &f, fmt, ap); if (ret < 0) return NULL; *lenp = ret; *f._p = '\0'; return (char *) f._bf._base; } #ifdef _NANO_FORMATTED_IO char * _vasniprintf_r (struct _reent*, char *, size_t *, const char *, __VALIST) _ATTRIBUTE ((__alias__("_vasnprintf_r"))); #endif #ifndef _REENT_ONLY char * vasnprintf (char *buf, size_t *lenp, const char *fmt, va_list ap) { return _vasnprintf_r (_REENT, buf, lenp, fmt, ap); } #ifdef _NANO_FORMATTED_IO char * vasniprintf (char *, size_t *, const char *, __VALIST) _ATTRIBUTE ((__alias__("vasnprintf"))); #endif #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/vasprintf.c000066400000000000000000000036531414576234500210240ustar00rootroot00000000000000/* * Copyright (c) 1990, 2007 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* This code was based on vsprintf.c */ /* doc in vfprintf.c */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "local.h" #ifndef _REENT_ONLY int vasprintf (char **strp, const char *fmt, va_list ap) { return _vasprintf_r (_REENT, strp, fmt, ap); } #ifdef _NANO_FORMATTED_IO int vasiprintf (char **, const char *, __VALIST) _ATTRIBUTE ((__alias__("vasprintf"))); #endif #endif /* !_REENT_ONLY */ int _vasprintf_r (struct _reent *ptr, char **strp, const char *fmt, va_list ap) { int ret; FILE f; f._flags = __SWR | __SSTR | __SMBF ; f._bf._base = f._p = NULL; f._bf._size = f._w = 0; f._file = -1; /* No file. */ ret = _svfprintf_r (ptr, &f, fmt, ap); if (ret >= 0) { *f._p = 0; *strp = (char *) f._bf._base; } return ret; } #ifdef _NANO_FORMATTED_IO int _vasiprintf_r (struct _reent *, char **, const char *, __VALIST) _ATTRIBUTE ((__alias__("_vasprintf_r"))); #endif picolibc-1.7.4/newlib/libc/stdio/vdiprintf.c000066400000000000000000000015051414576234500210070ustar00rootroot00000000000000/* Copyright 2005, 2007 Shaun Jackman * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ /* doc in diprintf.c */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include "local.h" int _vdiprintf_r (struct _reent *ptr, int fd, const char *format, va_list ap) { char *p; char buf[512]; size_t n = sizeof buf; _REENT_SMALL_CHECK_INIT (ptr); p = _vasniprintf_r (ptr, buf, &n, format, ap); if (!p) return -1; n = write (fd, p, n); if (p != buf) free (p); return n; } #ifndef _REENT_ONLY int vdiprintf (int fd, const char *format, va_list ap) { return _vdiprintf_r (_REENT, fd, format, ap); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/vdprintf.c000066400000000000000000000021421414576234500206340ustar00rootroot00000000000000/* Copyright 2005, 2007 Shaun Jackman * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ /* doc in dprintf.c */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include "local.h" int _vdprintf_r (struct _reent *ptr, int fd, const char *__restrict format, va_list ap) { char *p; char buf[512]; size_t n = sizeof buf; _REENT_SMALL_CHECK_INIT (ptr); p = _vasnprintf_r (ptr, buf, &n, format, ap); if (!p) return -1; n = write (fd, p, n); if (p != buf) free (p); return n; } #ifdef _NANO_FORMATTED_IO int _vdiprintf_r (struct _reent *, int, const char *, __VALIST) _ATTRIBUTE ((__alias__("_vdprintf_r"))); #endif #ifndef _REENT_ONLY int vdprintf (int fd, const char *__restrict format, va_list ap) { return _vdprintf_r (_REENT, fd, format, ap); } #ifdef _NANO_FORMATTED_IO int vdiprintf (int, const char *, __VALIST) _ATTRIBUTE ((__alias__("vdprintf"))); #endif #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/vfieeefp.h000066400000000000000000000161261414576234500206050ustar00rootroot00000000000000/**************************************************************** * * The author of this software is David M. Gay. * * Copyright (c) 1991 by AT&T. * * Permission to use, copy, modify, and distribute this software for any * purpose without fee is hereby granted, provided that this entire notice * is included in all copies of any software which is or includes a copy * or modification of this software and in all copies of the supporting * documentation for such software. * * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED * WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR AT&T MAKES ANY * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. * ***************************************************************/ /* Please send bug reports to David M. Gay AT&T Bell Laboratories, Room 2C-463 600 Mountain Avenue Murray Hill, NJ 07974-2070 U.S.A. dmg@research.att.com or research!dmg */ /* This header file is a modification of mprec.h that only contains floating point union code. */ #include #include #include #include #include #include #include #ifdef __IEEE_LITTLE_ENDIAN #define IEEE_8087 #endif #ifdef __IEEE_BIG_ENDIAN #define IEEE_MC68k #endif #ifdef __Z8000__ #define Just_16 #endif #ifdef Unsigned_Shifts #define Sign_Extend(a,b) if (b < 0) a |= (__uint32_t)0xffff0000; #else #define Sign_Extend(a,b) /*no-op*/ #endif #if defined(IEEE_8087) + defined(IEEE_MC68k) + defined(VAX) + defined(IBM) != 1 Exactly one of IEEE_8087, IEEE_MC68k, VAX, or IBM should be defined. #endif #ifdef _WANT_IO_LONG_DOUBLE /* If we are going to examine or modify specific bits in a long double using the lword0 or lwordx macros, then we must wrap the long double inside a union. This is necessary to avoid undefined behavior according to the ANSI C spec. */ #ifdef IEEE_8087 #if LDBL_MANT_DIG == 24 struct ldieee { unsigned manh:23; unsigned exp:8; unsigned sign:1; } __packed; #elif LDBL_MANT_DIG == 53 struct ldieee { unsigned manl:20; unsigned manh:32; unsigned exp:11; unsigned sign:1; } __packed; #elif LDBL_MANT_DIG == 64 struct ldieee { unsigned manl:32; unsigned manh:32; unsigned exp:15; unsigned sign:1; } __packed; #elif LDBL_MANT_DIG > 64 struct ldieee { unsigned manl3:16; unsigned manl2:32; unsigned manl:32; unsigned manh:32; unsigned exp:15; unsigned sign:1; } __packed; #endif /* LDBL_MANT_DIG */ #else /* !IEEE_8087 */ #if LDBL_MANT_DIG == 24 struct ldieee { unsigned sign:1; unsigned exp:8; unsigned manh:23; } __packed; #elif LDBL_MANT_DIG == 53 struct ldieee { unsigned sign:1; unsigned exp:11; unsigned manh:32; unsigned manl:20; } __packed; #elif LDBL_MANT_DIG == 64 struct ldieee { unsigned sign:1; unsigned exp:15; unsigned manh:32; unsigned manl:32; } __packed; #elif LDBL_MANT_DIG > 64 struct ldieee { unsigned sign:1; unsigned exp:15; unsigned manh:32; unsigned manl:32; unsigned manl2:32; unsigned manl3:16; } __packed; #endif /* LDBL_MANT_DIG */ #endif /* !IEEE_8087 */ #endif /* _WANT_IO_LONG_DOUBLE */ /* If we are going to examine or modify specific bits in a double using the word0 and/or word1 macros, then we must wrap the double inside a union. This is necessary to avoid undefined behavior according to the ANSI C spec. */ union double_union { double d; __uint32_t i[2]; }; #ifdef IEEE_8087 #define word0(x) (x.i[1]) #define word1(x) (x.i[0]) #else #define word0(x) (x.i[0]) #define word1(x) (x.i[1]) #endif /* #define P DBL_MANT_DIG */ /* Ten_pmax = floor(P*log(2)/log(5)) */ /* Bletch = (highest power of 2 < DBL_MAX_10_EXP) / 16 */ /* Quick_max = floor((P-1)*log(FLT_RADIX)/log(10) - 1) */ /* Int_max = floor(P*log(FLT_RADIX)/log(10) - 1) */ #if defined(IEEE_8087) + defined(IEEE_MC68k) #if defined (_DOUBLE_IS_32BITS) #define Exp_shift 23 #define Exp_shift1 23 #define Exp_msk1 ((__uint32_t)0x00800000L) #define Exp_msk11 ((__uint32_t)0x00800000L) #define Exp_mask ((__uint32_t)0x7f800000L) #define P 24 #define Bias 127 #define IEEE_Arith #define Emin (-126) #define Exp_1 ((__uint32_t)0x3f800000L) #define Exp_11 ((__uint32_t)0x3f800000L) #define Ebits 8 #define Frac_mask ((__uint32_t)0x007fffffL) #define Frac_mask1 ((__uint32_t)0x007fffffL) #define Ten_pmax 10 #define Sign_bit ((__uint32_t)0x80000000L) #define Ten_pmax 10 #define Bletch 2 #define Bndry_mask ((__uint32_t)0x007fffffL) #define Bndry_mask1 ((__uint32_t)0x007fffffL) #define LSB 1 #define Sign_bit ((__uint32_t)0x80000000L) #define Log2P 1 #define Tiny0 0 #define Tiny1 1 #define Quick_max 5 #define Int_max 6 #define Infinite(x) (word0(x) == ((__uint32_t)0x7f800000L)) #undef word0 #undef word1 #define word0(x) (x.i[0]) #define word1(x) 0 #else #define Exp_shift 20 #define Exp_shift1 20 #define Exp_msk1 ((__uint32_t)0x100000L) #define Exp_msk11 ((__uint32_t)0x100000L) #define Exp_mask ((__uint32_t)0x7ff00000L) #define P 53 #define Bias 1023 #define IEEE_Arith #define Emin (-1022) #define Exp_1 ((__uint32_t)0x3ff00000L) #define Exp_11 ((__uint32_t)0x3ff00000L) #define Ebits 11 #define Frac_mask ((__uint32_t)0xfffffL) #define Frac_mask1 ((__uint32_t)0xfffffL) #define Ten_pmax 22 #define Bletch 0x10 #define Bndry_mask ((__uint32_t)0xfffffL) #define Bndry_mask1 ((__uint32_t)0xfffffL) #define LSB 1 #define Sign_bit ((__uint32_t)0x80000000L) #define Log2P 1 #define Tiny0 0 #define Tiny1 1 #define Quick_max 14 #define Int_max 14 #define Infinite(x) (word0(x) == ((__uint32_t)0x7ff00000L)) /* sufficient test for here */ #endif #else #undef Sudden_Underflow #define Sudden_Underflow #ifdef IBM #define Exp_shift 24 #define Exp_shift1 24 #define Exp_msk1 ((__uint32_t)0x1000000L) #define Exp_msk11 ((__uint32_t)0x1000000L) #define Exp_mask ((__uint32_t)0x7f000000L) #define P 14 #define Bias 65 #define Exp_1 ((__uint32_t)0x41000000L) #define Exp_11 ((__uint32_t)0x41000000L) #define Ebits 8 /* exponent has 7 bits, but 8 is the right value in b2d */ #define Frac_mask ((__uint32_t)0xffffffL) #define Frac_mask1 ((__uint32_t)0xffffffL) #define Bletch 4 #define Ten_pmax 22 #define Bndry_mask ((__uint32_t)0xefffffL) #define Bndry_mask1 ((__uint32_t)0xffffffL) #define LSB 1 #define Sign_bit ((__uint32_t)0x80000000L) #define Log2P 4 #define Tiny0 ((__uint32_t)0x100000L) #define Tiny1 0 #define Quick_max 14 #define Int_max 15 #else /* VAX */ #define Exp_shift 23 #define Exp_shift1 7 #define Exp_msk1 0x80 #define Exp_msk11 ((__uint32_t)0x800000L) #define Exp_mask ((__uint32_t)0x7f80L) #define P 56 #define Bias 129 #define Exp_1 ((__uint32_t)0x40800000L) #define Exp_11 ((__uint32_t)0x4080L) #define Ebits 8 #define Frac_mask ((__uint32_t)0x7fffffL) #define Frac_mask1 ((__uint32_t)0xffff007fL) #define Ten_pmax 24 #define Bletch 2 #define Bndry_mask ((__uint32_t)0xffff007fL) #define Bndry_mask1 ((__uint32_t)0xffff007fL) #define LSB ((__uint32_t)0x10000L) #define Sign_bit ((__uint32_t)0x8000L) #define Log2P 1 #define Tiny0 0x80 #define Tiny1 0 #define Quick_max 15 #define Int_max 15 #endif #endif picolibc-1.7.4/newlib/libc/stdio/vfiprintf.c000066400000000000000000000027451414576234500210200ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define INTEGER_ONLY #include "vfprintf.c" picolibc-1.7.4/newlib/libc/stdio/vfiscanf.c000066400000000000000000000027441414576234500206070ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define INTEGER_ONLY #include "vfscanf.c" picolibc-1.7.4/newlib/libc/stdio/vfiwprintf.c000066400000000000000000000027461414576234500212100ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define INTEGER_ONLY #include "vfwprintf.c" picolibc-1.7.4/newlib/libc/stdio/vfiwscanf.c000066400000000000000000000027451414576234500207770ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define INTEGER_ONLY #include "vfwscanf.c" picolibc-1.7.4/newlib/libc/stdio/vfprintf.c000066400000000000000000001726321414576234500206520ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * This code is derived from software contributed to Berkeley by * Chris Torek. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* FUNCTION <>, <>, <>, <>, <>, <>---format argument list INDEX vfprintf INDEX _vfprintf_r INDEX vprintf INDEX _vprintf_r INDEX vsprintf INDEX _vsprintf_r INDEX vsnprintf INDEX _vsnprintf_r INDEX vasprintf INDEX _vasprintf_r INDEX vasnprintf INDEX _vasnprintf_r SYNOPSIS #include #include int vprintf(const char *<[fmt]>, va_list <[list]>); int vfprintf(FILE *<[fp]>, const char *<[fmt]>, va_list <[list]>); int vsprintf(char *<[str]>, const char *<[fmt]>, va_list <[list]>); int vsnprintf(char *<[str]>, size_t <[size]>, const char *<[fmt]>, va_list <[list]>); int vasprintf(char **<[strp]>, const char *<[fmt]>, va_list <[list]>); char *vasnprintf(char *<[str]>, size_t *<[size]>, const char *<[fmt]>, va_list <[list]>); int _vprintf_r(struct _reent *<[reent]>, const char *<[fmt]>, va_list <[list]>); int _vfprintf_r(struct _reent *<[reent]>, FILE *<[fp]>, const char *<[fmt]>, va_list <[list]>); int _vsprintf_r(struct _reent *<[reent]>, char *<[str]>, const char *<[fmt]>, va_list <[list]>); int _vasprintf_r(struct _reent *<[reent]>, char **<[str]>, const char *<[fmt]>, va_list <[list]>); int _vsnprintf_r(struct _reent *<[reent]>, char *<[str]>, size_t <[size]>, const char *<[fmt]>, va_list <[list]>); char *_vasnprintf_r(struct _reent *<[reent]>, char *<[str]>, size_t *<[size]>, const char *<[fmt]>, va_list <[list]>); DESCRIPTION <>, <>, <>, <>, <>, and <> are (respectively) variants of <>, <>, <>, <>, <>, and <>. They differ only in allowing their caller to pass the variable argument list as a <> object (initialized by <>) rather than directly accepting a variable number of arguments. The caller is responsible for calling <>. <<_vprintf_r>>, <<_vfprintf_r>>, <<_vasprintf_r>>, <<_vsprintf_r>>, <<_vsnprintf_r>>, and <<_vasnprintf_r>> are reentrant versions of the above. RETURNS The return values are consistent with the corresponding functions. PORTABILITY ANSI C requires <>, <>, <>, and <>. The remaining functions are newlib extensions. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #if defined(LIBC_SCCS) && !defined(lint) /*static char *sccsid = "from: @(#)vfprintf.c 5.50 (Berkeley) 12/16/92";*/ static char *rcsid = "$Id$"; #endif /* LIBC_SCCS and not lint */ /* * Actual printf innards. * * This code is large and complicated... */ #define _DEFAULT_SOURCE #include #ifdef INTEGER_ONLY # define VFPRINTF vfiprintf # ifdef STRING_ONLY # define _VFPRINTF_R _svfiprintf_r # else # define _VFPRINTF_R _vfiprintf_r # endif #else # define VFPRINTF vfprintf # ifdef STRING_ONLY # define _VFPRINTF_R _svfprintf_r # else # define _VFPRINTF_R _vfprintf_r # endif # ifndef NO_FLOATING_POINT # define FLOATING_POINT # endif #endif #define _NO_POS_ARGS #ifdef _WANT_IO_POS_ARGS # undef _NO_POS_ARGS #endif #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include #include #include #include #include "local.h" #include "../stdlib/local.h" #include "fvwrite.h" #include "vfieeefp.h" /* Currently a test is made to see if long double processing is warranted. This could be changed in the future should the __ldtoa code be preferred over __dtoa. */ #define _NO_LONGDBL #if defined _WANT_IO_LONG_DOUBLE && (LDBL_MANT_DIG > DBL_MANT_DIG) #undef _NO_LONGDBL #endif #define _NO_LONGLONG #if defined _WANT_IO_LONG_LONG \ && (defined __GNUC__ || __STDC_VERSION__ >= 199901L) # undef _NO_LONGLONG #endif #ifdef STRING_ONLY # ifdef _FVWRITE_IN_STREAMIO # define __SPRINT __ssprint_r # else # define __SPRINT __ssputs_r # endif #else # ifdef _FVWRITE_IN_STREAMIO # define __SPRINT __sprint_r # else # define __SPRINT __sfputs_r # endif #endif /* The __sprint_r/__ssprint_r functions are shared between all versions of vfprintf and vfwprintf. They must only be defined once, which we do in the INTEGER_ONLY versions here. */ #ifdef STRING_ONLY #ifdef INTEGER_ONLY #ifndef _FVWRITE_IN_STREAMIO int __ssputs_r (struct _reent *ptr, FILE *fp, const char *buf, size_t len) { register int w; (void) ptr; w = fp->_w; if (len >= (size_t) w && fp->_flags & (__SMBF | __SOPT)) { /* must be asprintf family */ unsigned char *str; int curpos = (fp->_p - fp->_bf._base); /* Choose a geometric growth factor to avoid * quadratic realloc behavior, but use a rate less * than (1+sqrt(5))/2 to accomodate malloc * overhead. asprintf EXPECTS us to overallocate, so * that it can add a trailing \0 without * reallocating. The new allocation should thus be * max(prev_size*1.5, curpos+len+1). */ int newsize = fp->_bf._size * 3 / 2; if ((size_t) newsize < curpos + len + 1) newsize = curpos + len + 1; if (fp->_flags & __SOPT) { /* asnprintf leaves original buffer alone. */ str = (unsigned char *)malloc (newsize); if (!str) { __errno_r(ptr) = ENOMEM; goto err; } memcpy (str, fp->_bf._base, curpos); fp->_flags = (fp->_flags & ~__SOPT) | __SMBF; } else { str = (unsigned char *)realloc (fp->_bf._base, newsize); if (!str) { /* Free unneeded buffer. */ free (fp->_bf._base); /* Ensure correct errno, even if free * changed it. */ __errno_r(ptr) = ENOMEM; goto err; } } fp->_bf._base = str; fp->_p = str + curpos; fp->_bf._size = newsize; w = len; fp->_w = newsize - curpos; } if (len < (size_t) w) w = len; (void)memmove ((void *) fp->_p, (void *) buf, (size_t) (w)); fp->_w -= w; fp->_p += w; return 0; err: fp->_flags |= __SERR; return EOF; } #endif int __ssprint_r (struct _reent *ptr, FILE *fp, register struct __suio *uio) { register size_t len; register int w; register struct __siov *iov; register const char *p = NULL; (void) ptr; iov = uio->uio_iov; len = 0; if (uio->uio_resid == 0) { uio->uio_iovcnt = 0; return (0); } do { while (len == 0) { p = iov->iov_base; len = iov->iov_len; iov++; } w = fp->_w; if (len >= (size_t) w && fp->_flags & (__SMBF | __SOPT)) { /* must be asprintf family */ unsigned char *str; int curpos = (fp->_p - fp->_bf._base); /* Choose a geometric growth factor to avoid * quadratic realloc behavior, but use a rate less * than (1+sqrt(5))/2 to accomodate malloc * overhead. asprintf EXPECTS us to overallocate, so * that it can add a trailing \0 without * reallocating. The new allocation should thus be * max(prev_size*1.5, curpos+len+1). */ int newsize = fp->_bf._size * 3 / 2; if ((size_t) newsize < curpos + len + 1) newsize = curpos + len + 1; if (fp->_flags & __SOPT) { /* asnprintf leaves original buffer alone. */ str = (unsigned char *)malloc (newsize); if (!str) { __errno_r(ptr) = ENOMEM; goto err; } memcpy (str, fp->_bf._base, curpos); fp->_flags = (fp->_flags & ~__SOPT) | __SMBF; } else { str = (unsigned char *)realloc (fp->_bf._base, newsize); if (!str) { /* Free unneeded buffer. */ free (fp->_bf._base); /* Ensure correct errno, even if free * changed it. */ __errno_r(ptr) = ENOMEM; goto err; } } fp->_bf._base = str; fp->_p = str + curpos; fp->_bf._size = newsize; w = len; fp->_w = newsize - curpos; } if (len < (size_t) w) w = len; (void)memmove ((void *) fp->_p, (void *) p, (size_t) (w)); fp->_w -= w; fp->_p += w; w = len; /* pretend we copied all */ p += w; len -= w; } while ((uio->uio_resid -= w) != 0); uio->uio_resid = 0; uio->uio_iovcnt = 0; return 0; err: fp->_flags |= __SERR; uio->uio_resid = 0; uio->uio_iovcnt = 0; return EOF; } #else /* !INTEGER_ONLY */ #ifndef _FVWRITE_IN_STREAMIO int __ssputs_r (struct _reent *, FILE *, const char *, size_t); #endif int __ssprint_r (struct _reent *, FILE *, register struct __suio *); #endif /* !INTEGER_ONLY */ #else /* !STRING_ONLY */ #ifdef INTEGER_ONLY #ifndef _FVWRITE_IN_STREAMIO int __sfputs_r (struct _reent *ptr, FILE *fp, const char *buf, size_t len) { register int i; #ifdef _WIDE_ORIENT if (fp->_flags2 & __SWID) { wchar_t *p; p = (wchar_t *) buf; for (i = 0; i < (len / sizeof (wchar_t)); i++) { if (_fputwc_r (ptr, p[i], fp) == WEOF) return -1; } } else { #else { #endif for (i = 0; (size_t) i < len; i++) { if (_fputc_r (ptr, buf[i], fp) == EOF) return -1; } } return (0); } #endif /* * Flush out all the vectors defined by the given uio, * then reset it so that it can be reused. */ int __sprint_r (struct _reent *ptr, FILE *fp, register struct __suio *uio) { register int err = 0; if (uio->uio_resid == 0) { uio->uio_iovcnt = 0; return (0); } #ifdef _WIDE_ORIENT if (fp->_flags2 & __SWID) { struct __siov *iov; wchar_t *p; int i, len; iov = uio->uio_iov; for (; uio->uio_resid != 0; uio->uio_resid -= len * sizeof (wchar_t), iov++) { p = (wchar_t *) iov->iov_base; len = iov->iov_len / sizeof (wchar_t); for (i = 0; i < len; i++) { if (_fputwc_r (ptr, p[i], fp) == WEOF) { err = -1; goto out; } } } out: ; } else #endif err = __sfvwrite_r(ptr, fp, uio); uio->uio_resid = 0; uio->uio_iovcnt = 0; return (err); } #else /* !INTEGER_ONLY */ #ifndef _FVWRITE_IN_STREAMIO int __sfputs_r (struct _reent *, FILE *, const char *buf, size_t); #endif int __sprint_r (struct _reent *, FILE *, register struct __suio *); #endif /* !INTEGER_ONLY */ #ifdef _UNBUF_STREAM_OPT /* * Helper function for `fprintf to unbuffered unix file': creates a * temporary buffer. We only work on write-only files; this avoids * worries about ungetc buffers and so forth. * * Make sure to avoid inlining. */ _NOINLINE_STATIC int __sbprintf (struct _reent *rptr, register FILE *fp, const char *fmt, va_list ap) { int ret; FILE fake; unsigned char buf[BUFSIZ]; /* copy the important variables */ fake._flags = fp->_flags & ~__SNBF; fake._flags2 = fp->_flags2; fake._file = fp->_file; fake._cookie = fp->_cookie; fake._write = fp->_write; /* set up the buffer */ fake._bf._base = fake._p = buf; fake._bf._size = fake._w = sizeof (buf); fake._lbfsize = 0; /* not actually used, but Just In Case */ #ifndef __SINGLE_THREAD__ __lock_init_recursive (fake._lock); #endif /* do the work, then copy any error status */ ret = _VFPRINTF_R (rptr, &fake, fmt, ap); if (ret >= 0 && _fflush_r (rptr, &fake)) ret = EOF; if (fake._flags & __SERR) fp->_flags |= __SERR; #ifndef __SINGLE_THREAD__ __lock_close_recursive (fake._lock); #endif return (ret); } #endif /* _UNBUF_STREAM_OPT */ #endif /* !STRING_ONLY */ #if defined (FLOATING_POINT) || defined (_WANT_IO_C99_FORMATS) # include #endif #ifdef FLOATING_POINT # include /* For %La, an exponent of 15 bits occupies the exponent character, a sign, and up to 5 digits. */ # define MAXEXPLEN 7 # define DEFPREC 6 # ifdef _NO_LONGDBL # define _PRINTF_FLOAT_TYPE double # define _DTOA __dtoa # define FREXP frexp # else /* !_NO_LONGDBL */ extern int _ldcheck (_LONG_DOUBLE *); # define _PRINTF_FLOAT_TYPE _LONG_DOUBLE # define _DTOA __ldtoa /* FIXME - frexpl is not yet supported; and cvt infloops if (double)f converts a finite value into infinity. */ /* # define FREXP frexpl */ # define FREXP(f,e) ((_LONG_DOUBLE) frexp ((double)f, e)) # endif /* !_NO_LONGDBL */ static char *cvt(struct _reent *, _PRINTF_FLOAT_TYPE, int, int, char *, int *, int, int *, char *); static int exponent(char *, int, int); #endif /* FLOATING_POINT */ /* BUF must be big enough for the maximum %#llo (assuming long long is at most 64 bits, this would be 23 characters), the maximum multibyte character %C, and the maximum default precision of %La (assuming long double is at most 128 bits with 113 bits of mantissa, this would be 29 characters). %e, %f, and %g use reentrant storage shared with mprec. All other formats that use buf get by with fewer characters. Making BUF slightly bigger reduces the need for malloc in %.*a and %S, when large precision or long strings are processed. The bigger size of 100 bytes is used on systems which allow number strings using the locale's grouping character. Since that's a multibyte value, we should use a conservative value. */ #ifdef _WANT_IO_C99_FORMATS #define BUF 100 #else #define BUF 40 #endif #if defined _MB_CAPABLE && MB_LEN_MAX > BUF # undef BUF # define BUF MB_LEN_MAX #endif #ifndef _NO_LONGLONG # define quad_t long long # define u_quad_t unsigned long long #else # define quad_t long # define u_quad_t unsigned long #endif typedef quad_t * quad_ptr_t; typedef void *void_ptr_t; typedef char * char_ptr_t; typedef long * long_ptr_t; typedef int * int_ptr_t; typedef short * short_ptr_t; #ifndef _NO_POS_ARGS # ifdef NL_ARGMAX # define MAX_POS_ARGS NL_ARGMAX # else # define MAX_POS_ARGS 32 # endif union arg_val { int val_int; u_int val_u_int; long val_long; u_long val_u_long; float val_float; double val_double; _LONG_DOUBLE val__LONG_DOUBLE; int_ptr_t val_int_ptr_t; short_ptr_t val_short_ptr_t; long_ptr_t val_long_ptr_t; char_ptr_t val_char_ptr_t; quad_ptr_t val_quad_ptr_t; void_ptr_t val_void_ptr_t; quad_t val_quad_t; u_quad_t val_u_quad_t; wint_t val_wint_t; }; static union arg_val * get_arg (struct _reent *data, int n, char *fmt, va_list *ap, int *numargs, union arg_val *args, int *arg_type, char **last_fmt); #endif /* !_NO_POS_ARGS */ /* * Macros for converting digits to letters and vice versa */ #define to_digit(c) ((c) - '0') #define is_digit(c) ((unsigned)to_digit (c) <= 9) #define to_char(n) ((n) + '0') /* * Flags used during conversion. */ #define ALT 0x001 /* alternate form */ #define HEXPREFIX 0x002 /* add 0x or 0X prefix */ #define LADJUST 0x004 /* left adjustment */ #define LONGDBL 0x008 /* long double */ #define LONGINT 0x010 /* long integer */ #ifndef _NO_LONGLONG # define QUADINT 0x020 /* quad integer */ #else /* ifdef _NO_LONGLONG, make QUADINT equivalent to LONGINT, so that %lld behaves the same as %ld, not as %d, as expected if: sizeof (long long) = sizeof long > sizeof int */ # define QUADINT LONGINT #endif #define SHORTINT 0x040 /* short integer */ #define ZEROPAD 0x080 /* zero (as opposed to blank) pad */ #define FPT 0x100 /* Floating point number */ #ifdef _WANT_IO_C99_FORMATS # define CHARINT 0x200 /* char as integer */ #else /* define as 0, to make SARG and UARG occupy fewer instructions */ # define CHARINT 0 #endif #ifdef _WANT_IO_C99_FORMATS # define GROUPING 0x400 /* use grouping ("'" flag) */ #endif int _VFPRINTF_R (struct _reent *, FILE *, const char *, va_list); #ifndef STRING_ONLY int VFPRINTF (FILE * fp, const char *fmt0, va_list ap) { int result; result = _VFPRINTF_R (_REENT, fp, fmt0, ap); return result; } #endif /* STRING_ONLY */ int _VFPRINTF_R (struct _reent *data, FILE * fp, const char *fmt0, va_list ap) { register char *fmt; /* format string */ register int ch; /* character from fmt */ register int n, m; /* handy integers (short term usage) */ register char *cp; /* handy char pointer (short term usage) */ register int flags; /* flags as above */ #ifndef _NO_POS_ARGS char *fmt_anchor; /* current format spec being processed */ int N; /* arg number */ int arg_index; /* index into args processed directly */ int numargs; /* number of varargs read */ char *saved_fmt; /* saved fmt pointer */ union arg_val args[MAX_POS_ARGS]; int arg_type[MAX_POS_ARGS]; int is_pos_arg; /* is current format positional? */ int old_is_pos_arg; /* is current format positional? */ #endif int ret; /* return value accumulator */ int width; /* width from format (%8d), or 0 */ int prec; /* precision from format (%.3d), or -1 */ char sign; /* sign prefix (' ', '+', '-', or \0) */ #ifdef _WANT_IO_C99_FORMATS /* locale specific numeric grouping */ char *thousands_sep = NULL; size_t thsnd_len = 0; const char *grouping = NULL; #endif #ifdef FLOATING_POINT char *decimal_point = localeconv ()->decimal_point; size_t decp_len = strlen (decimal_point); char softsign; /* temporary negative sign for floats */ union { int i; _PRINTF_FLOAT_TYPE fp; } _double_ = {0}; # define _fpvalue (_double_.fp) int expt; /* integer value of exponent */ int expsize = 0; /* character count for expstr */ char expstr[MAXEXPLEN]; /* buffer for exponent string */ int lead; /* sig figs before decimal or group sep */ #endif /* FLOATING_POINT */ #if defined (FLOATING_POINT) || defined (_WANT_IO_C99_FORMATS) int ndig = 0; /* actual number of digits returned by cvt */ #endif #if defined (FLOATING_POINT) && defined (_WANT_IO_C99_FORMATS) int nseps; /* number of group separators with ' */ int nrepeats; /* number of repeats of the last group */ #endif u_quad_t _uquad; /* integer arguments %[diouxX] */ enum { OCT, DEC, HEX } base;/* base for [diouxX] conversion */ int dprec; /* a copy of prec if [diouxX], 0 otherwise */ int realsz; /* field size expanded by dprec */ int size; /* size of converted field or string */ char *xdigs = NULL; /* digits for [xX] conversion */ #ifdef _FVWRITE_IN_STREAMIO #define NIOV 8 struct __suio uio; /* output information: summary */ struct __siov iov[NIOV];/* ... and individual io vectors */ register struct __siov *iovp;/* for PRINT macro */ #endif char buf[BUF]; /* space for %c, %S, %[diouxX], %[aA] */ char ox[2] = {0}; /* space for 0x hex-prefix */ #ifdef _MB_CAPABLE wchar_t wc; mbstate_t state; /* mbtowc calls from library must not change state */ #endif char *malloc_buf = NULL;/* handy pointer for malloced buffers */ /* * Choose PADSIZE to trade efficiency vs. size. If larger printf * fields occur frequently, increase PADSIZE and make the initialisers * below longer. */ #define PADSIZE 16 /* pad chunk size */ static const char blanks[PADSIZE] = {' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '}; static const char zeroes[PADSIZE] = {'0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'}; #ifdef _MB_CAPABLE memset (&state, '\0', sizeof (state)); #endif /* * BEWARE, these `goto error' on error, and PAD uses `n'. */ #ifdef _FVWRITE_IN_STREAMIO #define PRINT(ptr, len) { \ iovp->iov_base = (ptr); \ iovp->iov_len = (len); \ uio.uio_resid += (len); \ iovp++; \ if (++uio.uio_iovcnt >= NIOV) { \ if (__SPRINT(data, fp, &uio)) \ goto error; \ iovp = iov; \ } \ } #define PAD(howmany, with) { \ if ((n = (howmany)) > 0) { \ while (n > PADSIZE) { \ PRINT (with, PADSIZE); \ n -= PADSIZE; \ } \ PRINT (with, n); \ } \ } #define PRINTANDPAD(p, ep, len, with) { \ int n = (ep) - (p); \ if (n > (len)) \ n = (len); \ if (n > 0) \ PRINT((p), n); \ PAD((len) - (n > 0 ? n : 0), (with)); \ } #define FLUSH() { \ if (uio.uio_resid && __SPRINT(data, fp, &uio)) \ goto error; \ uio.uio_iovcnt = 0; \ iovp = iov; \ } #else #define PRINT(ptr, len) { \ if (__SPRINT (data, fp, (ptr), (len)) == EOF) \ goto error; \ } #define PAD(howmany, with) { \ if ((n = (howmany)) > 0) { \ while (n > PADSIZE) { \ PRINT (with, PADSIZE); \ n -= PADSIZE; \ } \ PRINT (with, n); \ } \ } #define PRINTANDPAD(p, ep, len, with) { \ int n = (ep) - (p); \ if (n > (len)) \ n = (len); \ if (n > 0) \ PRINT((p), n); \ PAD((len) - (n > 0 ? n : 0), (with)); \ } #define FLUSH() #endif /* Macros to support positional arguments */ #ifndef _NO_POS_ARGS # define GET_ARG(n, ap, type) \ (is_pos_arg \ ? (n < numargs \ ? args[n].val_##type \ : get_arg (data, n, fmt_anchor, &ap, &numargs, args, \ arg_type, &saved_fmt)->val_##type) \ : (arg_index++ < numargs \ ? args[n].val_##type \ : (numargs < MAX_POS_ARGS \ ? args[numargs++].val_##type = va_arg (ap, type) \ : va_arg (ap, type)))) #else # define GET_ARG(n, ap, type) (va_arg (ap, type)) #endif /* * To extend shorts properly, we need both signed and unsigned * argument extraction methods. */ #ifndef _NO_LONGLONG #define SARG() \ (flags&QUADINT ? GET_ARG (N, ap, quad_t) : \ flags&LONGINT ? GET_ARG (N, ap, long) : \ flags&SHORTINT ? (long)(short)GET_ARG (N, ap, int) : \ flags&CHARINT ? (long)(signed char)GET_ARG (N, ap, int) : \ (long)GET_ARG (N, ap, int)) #define UARG() \ (flags&QUADINT ? GET_ARG (N, ap, u_quad_t) : \ flags&LONGINT ? GET_ARG (N, ap, u_long) : \ flags&SHORTINT ? (u_long)(u_short)GET_ARG (N, ap, int) : \ flags&CHARINT ? (u_long)(unsigned char)GET_ARG (N, ap, int) : \ (u_long)GET_ARG (N, ap, u_int)) #else #define SARG() \ (flags&LONGINT ? GET_ARG (N, ap, long) : \ flags&SHORTINT ? (long)(short)GET_ARG (N, ap, int) : \ flags&CHARINT ? (long)(signed char)GET_ARG (N, ap, int) : \ (long)GET_ARG (N, ap, int)) #define UARG() \ (flags&LONGINT ? GET_ARG (N, ap, u_long) : \ flags&SHORTINT ? (u_long)(u_short)GET_ARG (N, ap, int) : \ flags&CHARINT ? (u_long)(unsigned char)GET_ARG (N, ap, int) : \ (u_long)GET_ARG (N, ap, u_int)) #endif #ifndef STRING_ONLY /* Initialize std streams if not dealing with sprintf family. */ CHECK_INIT (data, fp); _newlib_flockfile_start (fp); ORIENT(fp, -1); /* sorry, fprintf(read_only_file, "") returns EOF, not 0 */ if (cantwrite (data, fp)) { _newlib_flockfile_exit (fp); return (EOF); } #ifdef _UNBUF_STREAM_OPT /* optimise fprintf(stderr) (and other unbuffered Unix files) */ if ((fp->_flags & (__SNBF|__SWR|__SRW)) == (__SNBF|__SWR) && fp->_file >= 0) { _newlib_flockfile_exit (fp); return (__sbprintf (data, fp, fmt0, ap)); } #endif #else /* STRING_ONLY */ /* Create initial buffer if we are called by asprintf family. */ if (fp->_flags & __SMBF && !fp->_bf._base) { fp->_bf._base = fp->_p = malloc (64); if (!fp->_p) { __errno_r(data) = ENOMEM; return EOF; } fp->_bf._size = 64; } #endif /* STRING_ONLY */ fmt = (char *)fmt0; #ifdef _FVWRITE_IN_STREAMIO uio.uio_iov = iovp = iov; uio.uio_resid = 0; uio.uio_iovcnt = 0; #endif ret = 0; #ifndef _NO_POS_ARGS arg_index = 0; saved_fmt = NULL; arg_type[0] = -1; numargs = 0; is_pos_arg = 0; #endif /* * Scan the format for conversions (`%' character). */ for (;;) { cp = fmt; #ifdef _MB_CAPABLE while ((n = __MBTOWC (&wc, fmt, MB_CUR_MAX, &state)) != 0) { if (n < 0) { /* Wave invalid chars through. */ memset (&state, 0, sizeof state); n = 1; } else if (wc == '%') break; fmt += n; } #else while (*fmt != '\0' && *fmt != '%') fmt += 1; #endif if ((m = fmt - cp) != 0) { PRINT (cp, m); ret += m; } #ifdef _MB_CAPABLE if (n <= 0) goto done; #else if (*fmt == '\0') goto done; #endif #ifndef _NO_POS_ARGS fmt_anchor = fmt; #endif fmt++; /* skip over '%' */ flags = 0; dprec = 0; width = 0; prec = -1; sign = '\0'; #ifdef FLOATING_POINT lead = 0; #ifdef _WANT_IO_C99_FORMATS nseps = nrepeats = 0; #endif #endif #ifndef _NO_POS_ARGS N = arg_index; is_pos_arg = 0; #endif rflag: ch = *fmt++; reswitch: switch (ch) { #ifdef _WANT_IO_C99_FORMATS case '\'': thousands_sep = localeconv ()->thousands_sep; thsnd_len = strlen (thousands_sep); grouping = localeconv ()->grouping; if (thsnd_len > 0 && grouping && *grouping) flags |= GROUPING; goto rflag; #endif case ' ': /* * ``If the space and + flags both appear, the space * flag will be ignored.'' * -- ANSI X3J11 */ if (!sign) sign = ' '; goto rflag; case '#': flags |= ALT; goto rflag; case '*': #ifndef _NO_POS_ARGS /* we must check for positional arg used for dynamic width */ n = N; old_is_pos_arg = is_pos_arg; is_pos_arg = 0; if (is_digit (*fmt)) { char *old_fmt = fmt; n = 0; ch = *fmt++; do { n = 10 * n + to_digit (ch); ch = *fmt++; } while (is_digit (ch)); if (ch == '$') { if (n <= MAX_POS_ARGS) { n -= 1; is_pos_arg = 1; } else goto error; } else { fmt = old_fmt; goto rflag; } } #endif /* !_NO_POS_ARGS */ /* * ``A negative field width argument is taken as a * - flag followed by a positive field width.'' * -- ANSI X3J11 * They don't exclude field widths read from args. */ width = GET_ARG (n, ap, int); #ifndef _NO_POS_ARGS is_pos_arg = old_is_pos_arg; #endif if (width >= 0) goto rflag; width = -width; FALLTHROUGH; case '-': flags |= LADJUST; goto rflag; case '+': sign = '+'; goto rflag; case '.': if ((ch = *fmt++) == '*') { #ifndef _NO_POS_ARGS /* we must check for positional arg used for dynamic width */ n = N; old_is_pos_arg = is_pos_arg; is_pos_arg = 0; if (is_digit (*fmt)) { char *old_fmt = fmt; n = 0; ch = *fmt++; do { n = 10 * n + to_digit (ch); ch = *fmt++; } while (is_digit (ch)); if (ch == '$') { if (n <= MAX_POS_ARGS) { n -= 1; is_pos_arg = 1; } else goto error; } else { fmt = old_fmt; goto rflag; } } #endif /* !_NO_POS_ARGS */ prec = GET_ARG (n, ap, int); #ifndef _NO_POS_ARGS is_pos_arg = old_is_pos_arg; #endif if (prec < 0) prec = -1; goto rflag; } n = 0; while (is_digit (ch)) { n = 10 * n + to_digit (ch); ch = *fmt++; } prec = n < 0 ? -1 : n; goto reswitch; case '0': /* * ``Note that 0 is taken as a flag, not as the * beginning of a field width.'' * -- ANSI X3J11 */ flags |= ZEROPAD; goto rflag; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': n = 0; do { n = 10 * n + to_digit (ch); ch = *fmt++; } while (is_digit (ch)); #ifndef _NO_POS_ARGS if (ch == '$') { if (n <= MAX_POS_ARGS) { N = n - 1; is_pos_arg = 1; goto rflag; } else goto error; } #endif /* !_NO_POS_ARGS */ width = n; goto reswitch; #ifdef FLOATING_POINT case 'L': flags |= LONGDBL; goto rflag; #endif case 'h': #ifdef _WANT_IO_C99_FORMATS if (*fmt == 'h') { fmt++; flags |= CHARINT; } else #endif flags |= SHORTINT; goto rflag; case 'l': #if defined _WANT_IO_C99_FORMATS || !defined _NO_LONGLONG if (*fmt == 'l') { fmt++; flags |= QUADINT; } else #endif flags |= LONGINT; goto rflag; case 'q': /* extension */ flags |= QUADINT; goto rflag; #ifdef _WANT_IO_C99_FORMATS case 'j': if (sizeof (intmax_t) == sizeof (long)) flags |= LONGINT; else flags |= QUADINT; goto rflag; case 'z': if (sizeof (size_t) < sizeof (int)) /* POSIX states size_t is 16 or more bits, as is short. */ flags |= SHORTINT; else if (sizeof (size_t) == sizeof (int)) /* no flag needed */; else if (sizeof (size_t) <= sizeof (long)) flags |= LONGINT; else /* POSIX states that at least one programming environment must support size_t no wider than long, but that means other environments can have size_t as wide as long long. */ flags |= QUADINT; goto rflag; case 't': if (sizeof (ptrdiff_t) < sizeof (int)) /* POSIX states ptrdiff_t is 16 or more bits, as is short. */ flags |= SHORTINT; else if (sizeof (ptrdiff_t) == sizeof (int)) /* no flag needed */; else if (sizeof (ptrdiff_t) <= sizeof (long)) flags |= LONGINT; else /* POSIX states that at least one programming environment must support ptrdiff_t no wider than long, but that means other environments can have ptrdiff_t as wide as long long. */ flags |= QUADINT; goto rflag; case 'C': #endif /* _WANT_IO_C99_FORMATS */ case 'c': cp = buf; #ifdef _MB_CAPABLE if (ch == 'C' || (flags & LONGINT)) { mbstate_t ps; memset ((void *)&ps, '\0', sizeof (mbstate_t)); if ((size = (int)wcrtomb (cp, (wchar_t)GET_ARG (N, ap, wint_t), &ps)) == -1) { fp->_flags |= __SERR; goto error; } } else #endif /* _MB_CAPABLE */ { *cp = GET_ARG (N, ap, int); size = 1; } sign = '\0'; break; case 'D': /* extension */ flags |= LONGINT; FALLTHROUGH; case 'd': case 'i': _uquad = SARG (); #ifndef _NO_LONGLONG if ((quad_t)_uquad < 0) #else if ((long) _uquad < 0) #endif { _uquad = -_uquad; sign = '-'; } base = DEC; goto number; #ifdef FLOATING_POINT # ifdef _WANT_IO_C99_FORMATS case 'a': case 'A': case 'F': # endif case 'e': case 'E': case 'f': case 'g': case 'G': # ifdef _NO_LONGDBL if (flags & LONGDBL) { _fpvalue = (double) GET_ARG (N, ap, _LONG_DOUBLE); } else { _fpvalue = GET_ARG (N, ap, double); } /* do this before tricky precision changes If the output is infinite or NaN, leading zeros are not permitted. Otherwise, scanf could not read what printf wrote. */ if (isinf (_fpvalue)) { if (_fpvalue < 0) sign = '-'; if (ch <= 'G') /* 'A', 'E', 'F', or 'G' */ cp = "INF"; else cp = "inf"; size = 3; flags &= ~ZEROPAD; break; } if (isnan (_fpvalue)) { if (signbit (_fpvalue)) sign = '-'; if (ch <= 'G') /* 'A', 'E', 'F', or 'G' */ cp = "NAN"; else cp = "nan"; size = 3; flags &= ~ZEROPAD; break; } # else /* !_NO_LONGDBL */ if (flags & LONGDBL) { _fpvalue = GET_ARG (N, ap, _LONG_DOUBLE); } else { _fpvalue = (_LONG_DOUBLE)GET_ARG (N, ap, double); } /* do this before tricky precision changes */ expt = _ldcheck (&_fpvalue); if (expt == 2) { if (_fpvalue < 0) sign = '-'; if (ch <= 'G') /* 'A', 'E', 'F', or 'G' */ cp = "INF"; else cp = "inf"; size = 3; flags &= ~ZEROPAD; break; } if (expt == 1) { if (signbit (_fpvalue)) sign = '-'; if (ch <= 'G') /* 'A', 'E', 'F', or 'G' */ cp = "NAN"; else cp = "nan"; size = 3; flags &= ~ZEROPAD; break; } # endif /* !_NO_LONGDBL */ # ifdef _WANT_IO_C99_FORMATS if (ch == 'a' || ch == 'A') { ox[0] = '0'; ox[1] = ch == 'a' ? 'x' : 'X'; flags |= HEXPREFIX; if (prec >= BUF) { if ((malloc_buf = (char *)malloc (prec + 1)) == NULL) { fp->_flags |= __SERR; goto error; } cp = malloc_buf; } else cp = buf; } else # endif /* _WANT_IO_C99_FORMATS */ if (prec == -1) { prec = DEFPREC; } else if ((ch == 'g' || ch == 'G') && prec == 0) { prec = 1; } flags |= FPT; cp = cvt (data, _fpvalue, prec, flags, &softsign, &expt, ch, &ndig, cp); if (!cp) goto error; if (ch == 'g' || ch == 'G') { if (expt <= -4 || expt > prec) ch -= 2; /* 'e' or 'E' */ else ch = 'g'; } # ifdef _WANT_IO_C99_FORMATS else if (ch == 'F') ch = 'f'; # endif if (ch <= 'e') { /* 'a', 'A', 'e', or 'E' fmt */ --expt; expsize = exponent (expstr, expt, ch); size = expsize + ndig; if (ndig > 1 || flags & ALT) size += decp_len; # ifdef _WANT_IO_C99_FORMATS flags &= ~GROUPING; # endif } else { if (ch == 'f') { /* f fmt */ if (expt > 0) { size = expt; if (prec || flags & ALT) size += prec + decp_len; } else /* "0.X" */ size = (prec || flags & ALT) ? prec + 1 + decp_len : 1; } else if (expt >= ndig) { /* fixed g fmt */ size = expt; if (flags & ALT) size += decp_len; } else { size = ndig + decp_len; if (expt <= 0) size += 1 - expt; } # ifdef _WANT_IO_C99_FORMATS if ((flags & GROUPING) && expt > 0) { /* space for thousands' grouping */ nseps = nrepeats = 0; lead = expt; while (*grouping != CHAR_MAX) { if (lead <= *grouping) break; lead -= *grouping; if (grouping[1]) { nseps++; grouping++; } else nrepeats++; } size += (nseps + nrepeats) * thsnd_len; } else # endif lead = expt; } if (softsign) sign = '-'; break; #endif /* FLOATING_POINT */ #ifdef _GLIBC_EXTENSION case 'm': /* extension */ { int dummy; cp = _strerror_r (data, __errno_r(data), 1, &dummy); } flags &= ~LONGINT; goto string; #endif case 'n': #ifndef _NO_LONGLONG if (flags & QUADINT) *GET_ARG (N, ap, quad_ptr_t) = ret; else #endif if (flags & LONGINT) *GET_ARG (N, ap, long_ptr_t) = ret; else if (flags & SHORTINT) *GET_ARG (N, ap, short_ptr_t) = ret; #ifdef _WANT_IO_C99_FORMATS else if (flags & CHARINT) *GET_ARG (N, ap, char_ptr_t) = ret; #endif else *GET_ARG (N, ap, int_ptr_t) = ret; continue; /* no output */ case 'O': /* extension */ flags |= LONGINT; FALLTHROUGH; case 'o': _uquad = UARG (); base = OCT; #ifdef _WANT_IO_C99_FORMATS flags &= ~GROUPING; #endif goto nosign; case 'p': /* * ``The argument shall be a pointer to void. The * value of the pointer is converted to a sequence * of printable characters, in an implementation- * defined manner.'' * -- ANSI X3J11 */ /* NOSTRICT */ _uquad = (uintptr_t) GET_ARG (N, ap, void_ptr_t); base = HEX; xdigs = "0123456789abcdef"; flags |= HEXPREFIX; ox[0] = '0'; ox[1] = ch = 'x'; goto nosign; case 's': #ifdef _WANT_IO_C99_FORMATS case 'S': #endif cp = GET_ARG (N, ap, char_ptr_t); #ifdef _GLIBC_EXTENSION string: #endif sign = '\0'; /* Behavior is undefined if the user passed a NULL string when precision is not 0. However, we might as well mirror glibc behavior. */ if (cp == NULL) { cp = "(null)"; size = ((unsigned) prec > 6U) ? 6 : prec; } else #ifdef _MB_CAPABLE if (ch == 'S' || (flags & LONGINT)) { mbstate_t ps; const wchar_t *wcp; wcp = (const wchar_t *)cp; size = m = 0; memset ((void *)&ps, '\0', sizeof (mbstate_t)); /* Count number of bytes needed for multibyte string that will be produced from widechar string. */ if (prec >= 0) { while (1) { if (wcp[m] == L'\0') break; if ((n = (int)wcrtomb ( buf, wcp[m], &ps)) == -1) { fp->_flags |= __SERR; goto error; } if (n + size > prec) break; m += 1; size += n; if (size == prec) break; } } else { if ((size = (int)wcsrtombs ( NULL, &wcp, 0, &ps)) == -1) { fp->_flags |= __SERR; goto error; } wcp = (const wchar_t *)cp; } if (size == 0) break; if (size >= BUF) { if ((malloc_buf = (char *)malloc (size + 1)) == NULL) { fp->_flags |= __SERR; goto error; } cp = malloc_buf; } else cp = buf; /* Convert widechar string to multibyte string. */ memset ((void *)&ps, '\0', sizeof (mbstate_t)); if (wcsrtombs (cp, &wcp, size, &ps) != size) { fp->_flags |= __SERR; goto error; } cp[size] = '\0'; } else #endif /* _MB_CAPABLE */ if (prec >= 0) { /* * can't use strlen; can only look for the * NUL in the first `prec' characters, and * strlen () will go further. */ char *p = memchr (cp, 0, prec); if (p != NULL) size = p - cp; else size = prec; } else size = strlen (cp); break; case 'U': /* extension */ flags |= LONGINT; FALLTHROUGH; case 'u': _uquad = UARG (); base = DEC; goto nosign; case 'X': xdigs = "0123456789ABCDEF"; goto hex; case 'x': xdigs = "0123456789abcdef"; hex: _uquad = UARG (); base = HEX; /* leading 0x/X only if non-zero */ if (flags & ALT && _uquad != 0) { ox[0] = '0'; ox[1] = ch; flags |= HEXPREFIX; } #ifdef _WANT_IO_C99_FORMATS flags &= ~GROUPING; #endif /* unsigned conversions */ nosign: sign = '\0'; /* * ``... diouXx conversions ... if a precision is * specified, the 0 flag will be ignored.'' * -- ANSI X3J11 */ number: if ((dprec = prec) >= 0) flags &= ~ZEROPAD; /* * ``The result of converting a zero value with an * explicit precision of zero is no characters.'' * -- ANSI X3J11 */ cp = buf + BUF; if (_uquad != 0 || prec != 0) { /* * Unsigned mod is hard, and unsigned mod * by a constant is easier than that by * a variable; hence this switch. */ switch (base) { case OCT: do { *--cp = to_char (_uquad & 7); _uquad >>= 3; } while (_uquad); /* handle octal leading 0 */ if (flags & ALT && *cp != '0') *--cp = '0'; break; case DEC: /* many numbers are 1 digit */ if (_uquad < 10) { *--cp = to_char(_uquad); break; } #ifdef _WANT_IO_C99_FORMATS ndig = 0; #endif do { *--cp = to_char (_uquad % 10); #ifdef _WANT_IO_C99_FORMATS ndig++; /* If (*grouping == CHAR_MAX) then no more grouping */ if ((flags & GROUPING) && ndig == *grouping && *grouping != CHAR_MAX && _uquad > 9) { cp -= thsnd_len; strncpy (cp, thousands_sep, thsnd_len); ndig = 0; /* If (grouping[1] == '\0') then we have to use *grouping character (last grouping rule) for all next cases. */ if (grouping[1] != '\0') grouping++; } #endif _uquad /= 10; } while (_uquad != 0); break; case HEX: do { *--cp = xdigs[_uquad & 15]; _uquad >>= 4; } while (_uquad); break; default: cp = "bug in vfprintf: bad base"; size = strlen (cp); goto skipsize; } } /* * ...result is to be converted to an 'alternate form'. * For o conversion, it increases the precision to force * the first digit of the result to be a zero." * -- ANSI X3J11 * * To demonstrate this case, compile and run: * printf ("%#.0o",0); */ else if (base == OCT && (flags & ALT)) *--cp = '0'; size = buf + BUF - cp; skipsize: break; default: /* "%?" prints ?, unless ? is NUL */ if (ch == '\0') goto done; /* pretend it was %c with argument ch */ cp = buf; *cp = ch; size = 1; sign = '\0'; break; } /* * All reasonable formats wind up here. At this point, `cp' * points to a string which (if not flags&LADJUST) should be * padded out to `width' places. If flags&ZEROPAD, it should * first be prefixed by any sign or other prefix; otherwise, * it should be blank padded before the prefix is emitted. * After any left-hand padding and prefixing, emit zeroes * required by a decimal [diouxX] precision, then print the * string proper, then emit zeroes required by any leftover * floating precision; finally, if LADJUST, pad with blanks. * If flags&FPT, ch must be in [aAeEfg]. * * Compute actual size, so we know how much to pad. * size excludes decimal prec; realsz includes it. */ realsz = dprec > size ? dprec : size; if (sign) realsz++; if (flags & HEXPREFIX) realsz+= 2; /* right-adjusting blank padding */ if ((flags & (LADJUST|ZEROPAD)) == 0) PAD (width - realsz, blanks); /* prefix */ if (sign) PRINT (&sign, 1); if (flags & HEXPREFIX) PRINT (ox, 2); /* right-adjusting zero padding */ if ((flags & (LADJUST|ZEROPAD)) == ZEROPAD) PAD (width - realsz, zeroes); /* leading zeroes from decimal precision */ PAD (dprec - size, zeroes); /* the string or number proper */ #ifdef FLOATING_POINT if ((flags & FPT) == 0) { PRINT (cp, size); } else { /* glue together f_p fragments */ if (ch >= 'f') { /* 'f' or 'g' */ if (_fpvalue == 0) { /* kludge for __dtoa irregularity */ PRINT ("0", 1); if (expt < ndig || flags & ALT) { PRINT (decimal_point, decp_len); PAD (ndig - 1, zeroes); } } else if (expt <= 0) { PRINT ("0", 1); if (expt || ndig || flags & ALT) { PRINT (decimal_point, decp_len); PAD (-expt, zeroes); PRINT (cp, ndig); } } else { char *convbuf = cp; PRINTANDPAD(cp, convbuf + ndig, lead, zeroes); cp += lead; #ifdef _WANT_IO_C99_FORMATS if (flags & GROUPING) { while (nseps > 0 || nrepeats > 0) { if (nrepeats > 0) nrepeats--; else { grouping--; nseps--; } PRINT(thousands_sep, thsnd_len); PRINTANDPAD (cp, convbuf + ndig, *grouping, zeroes); cp += *grouping; } if (cp > convbuf + ndig) cp = convbuf + ndig; } #endif if (expt < ndig || flags & ALT) PRINT (decimal_point, decp_len); PRINTANDPAD (cp, convbuf + ndig, ndig - expt, zeroes); } } else { /* 'a', 'A', 'e', or 'E' */ if (ndig > 1 || flags & ALT) { PRINT (cp, 1); cp++; PRINT (decimal_point, decp_len); if (_fpvalue) { PRINT (cp, ndig - 1); } else /* 0.[0..] */ /* __dtoa irregularity */ PAD (ndig - 1, zeroes); } else /* XeYYY */ PRINT (cp, 1); PRINT (expstr, expsize); } } #else /* !FLOATING_POINT */ PRINT (cp, size); #endif /* left-adjusting padding (always blank) */ if (flags & LADJUST) PAD (width - realsz, blanks); /* finally, adjust ret */ ret += width > realsz ? width : realsz; FLUSH (); /* copy out the I/O vectors */ if (malloc_buf != NULL) { free (malloc_buf); malloc_buf = NULL; } } done: FLUSH (); error: if (malloc_buf != NULL) free (malloc_buf); #ifndef STRING_ONLY _newlib_flockfile_end (fp); #endif return (__sferror (fp) ? EOF : ret); /* NOTREACHED */ } #ifdef FLOATING_POINT /* Using reentrant DATA, convert finite VALUE into a string of digits with no decimal point, using NDIGITS precision and FLAGS as guides to whether trailing zeros must be included. Set *SIGN to nonzero if VALUE was negative. Set *DECPT to the exponent plus one. Set *LENGTH to the length of the returned string. CH must be one of [aAeEfFgG]; if it is [aA], then the return string lives in BUF, otherwise the return value shares the mprec reentrant storage. */ static char * cvt(struct _reent *data, _PRINTF_FLOAT_TYPE value, int ndigits, int flags, char *sign, int *decpt, int ch, int *length, char *buf) { int mode, dsgn; char *digits, *bp, *rve; # ifdef _NO_LONGDBL union double_union tmp; tmp.d = value; if (word0 (tmp) & Sign_bit) { /* this will check for < 0 and -0.0 */ value = -value; *sign = '-'; } else *sign = '\000'; # else /* !_NO_LONGDBL */ union { struct ldieee ieee; _LONG_DOUBLE val; } ld; ld.val = value; if (ld.ieee.sign) { /* this will check for < 0 and -0.0 */ value = -value; *sign = '-'; } else *sign = '\000'; # endif /* !_NO_LONGDBL */ (void) data; # ifdef _WANT_IO_C99_FORMATS if (ch == 'a' || ch == 'A') { /* This code assumes FLT_RADIX is a power of 2. The initial division ensures the digit before the decimal will be less than FLT_RADIX (unless it is rounded later). There is no loss of precision in these calculations. */ value = FREXP (value, decpt) / 8; if (!value) *decpt = 1; digits = ch == 'a' ? "0123456789abcdef" : "0123456789ABCDEF"; bp = buf; do { value *= 16; mode = (int) value; value -= mode; *bp++ = digits[mode]; } while (ndigits-- && value); if (value > (_PRINTF_FLOAT_TYPE) 0.5 || (value == (_PRINTF_FLOAT_TYPE) 0.5 && mode & 1)) { /* round to even */ rve = bp; while (*--rve == digits[0xf]) { *rve = '0'; } *rve = *rve == '9' ? digits[0xa] : *rve + 1; } else { while (ndigits-- >= 0) { *bp++ = '0'; } } *length = bp - buf; return buf; } # endif /* _WANT_IO_C99_FORMATS */ if (ch == 'f' || ch == 'F') { mode = 3; /* ndigits after the decimal point */ } else { /* To obtain ndigits after the decimal point for the 'e' * and 'E' formats, round to ndigits + 1 significant * figures. */ if (ch == 'e' || ch == 'E') { ndigits++; } mode = 2; /* ndigits significant digits */ } digits = _DTOA (value, mode, ndigits, decpt, &dsgn, &rve); if (!digits) return NULL; if ((ch != 'g' && ch != 'G') || flags & ALT) { /* Print trailing zeros */ bp = digits + ndigits; if (ch == 'f' || ch == 'F') { if (*digits == '0' && value) *decpt = -ndigits + 1; bp += *decpt; } if (value == 0) /* kludge for __dtoa irregularity */ rve = bp; while (rve < bp) *rve++ = '0'; } *length = rve - digits; return (digits); } static int exponent(char *p0, int exp, int fmtch) { register char *p, *t; char expbuf[MAXEXPLEN]; # ifdef _WANT_IO_C99_FORMATS int isa = fmtch == 'a' || fmtch == 'A'; # else # define isa 0 # endif p = p0; *p++ = isa ? 'p' - 'a' + fmtch : fmtch; if (exp < 0) { exp = -exp; *p++ = '-'; } else *p++ = '+'; t = expbuf + MAXEXPLEN; if (exp > 9) { do { *--t = to_char (exp % 10); } while ((exp /= 10) > 9); *--t = to_char (exp); for (; t < expbuf + MAXEXPLEN; *p++ = *t++); } else { if (!isa) *p++ = '0'; *p++ = to_char (exp); } return (p - p0); } #endif /* FLOATING_POINT */ #ifndef _NO_POS_ARGS /* Positional argument support. Written by Jeff Johnston Copyright (c) 2002 Red Hat Incorporated. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of Red Hat Incorporated may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* The below constant state tables are shared between all versions of vfprintf and vfwprintf. They must only be defined once, which we do in the STRING_ONLY/INTEGER_ONLY versions here. */ #if defined (STRING_ONLY) && defined(INTEGER_ONLY) const __CH_CLASS __chclass[256] = { /* 00-07 */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, /* 08-0f */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, /* 10-17 */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, /* 18-1f */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, /* 20-27 */ FLAG, OTHER, OTHER, FLAG, DOLLAR, OTHER, OTHER, FLAG, /* 28-2f */ OTHER, OTHER, STAR, FLAG, OTHER, FLAG, DOT, OTHER, /* 30-37 */ ZERO, DIGIT, DIGIT, DIGIT, DIGIT, DIGIT, DIGIT, DIGIT, /* 38-3f */ DIGIT, DIGIT, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, /* 40-47 */ OTHER, SPEC, OTHER, SPEC, SPEC, SPEC, SPEC, SPEC, /* 48-4f */ OTHER, OTHER, OTHER, OTHER, MODFR, OTHER, OTHER, SPEC, /* 50-57 */ OTHER, OTHER, OTHER, SPEC, OTHER, SPEC, OTHER, OTHER, /* 58-5f */ SPEC, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, /* 60-67 */ OTHER, SPEC, OTHER, SPEC, SPEC, SPEC, SPEC, SPEC, /* 68-6f */ MODFR, SPEC, MODFR, OTHER, MODFR, OTHER, SPEC, SPEC, /* 70-77 */ SPEC, MODFR, OTHER, SPEC, MODFR, SPEC, OTHER, OTHER, /* 78-7f */ SPEC, OTHER, MODFR, OTHER, OTHER, OTHER, OTHER, OTHER, /* 80-87 */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, /* 88-8f */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, /* 90-97 */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, /* 98-9f */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, /* a0-a7 */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, /* a8-af */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, /* b0-b7 */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, /* b8-bf */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, /* c0-c7 */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, /* c8-cf */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, /* d0-d7 */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, /* d8-df */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, /* e0-e7 */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, /* e8-ef */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, /* f0-f7 */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, /* f8-ff */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, }; const __STATE __state_table[MAX_STATE][MAX_CH_CLASS] = { /* '0' '1-9' '$' MODFR SPEC '.' '*' FLAG OTHER */ /* START */ { SFLAG, WDIG, DONE, SMOD, DONE, SDOT, VARW, SFLAG, DONE }, /* SFLAG */ { SFLAG, WDIG, DONE, SMOD, DONE, SDOT, VARW, SFLAG, DONE }, /* WDIG */ { DONE, DONE, WIDTH, SMOD, DONE, SDOT, DONE, DONE, DONE }, /* WIDTH */ { DONE, DONE, DONE, SMOD, DONE, SDOT, DONE, DONE, DONE }, /* SMOD */ { DONE, DONE, DONE, DONE, DONE, DONE, DONE, DONE, DONE }, /* SDOT */ { SDOT, PREC, DONE, SMOD, DONE, DONE, VARP, DONE, DONE }, /* VARW */ { DONE, VWDIG, DONE, SMOD, DONE, SDOT, DONE, DONE, DONE }, /* VARP */ { DONE, VPDIG, DONE, SMOD, DONE, DONE, DONE, DONE, DONE }, /* PREC */ { DONE, DONE, DONE, SMOD, DONE, DONE, DONE, DONE, DONE }, /* VWDIG */ { DONE, DONE, WIDTH, DONE, DONE, DONE, DONE, DONE, DONE }, /* VPDIG */ { DONE, DONE, PREC, DONE, DONE, DONE, DONE, DONE, DONE }, }; const __ACTION __action_table[MAX_STATE][MAX_CH_CLASS] = { /* '0' '1-9' '$' MODFR SPEC '.' '*' FLAG OTHER */ /* START */ { NOOP, NUMBER, NOOP, GETMOD, GETARG, NOOP, NOOP, NOOP, NOOP }, /* SFLAG */ { NOOP, NUMBER, NOOP, GETMOD, GETARG, NOOP, NOOP, NOOP, NOOP }, /* WDIG */ { NOOP, NOOP, GETPOS, GETMOD, GETARG, NOOP, NOOP, NOOP, NOOP }, /* WIDTH */ { NOOP, NOOP, NOOP, GETMOD, GETARG, NOOP, NOOP, NOOP, NOOP }, /* SMOD */ { NOOP, NOOP, NOOP, NOOP, GETARG, NOOP, NOOP, NOOP, NOOP }, /* SDOT */ { NOOP, SKIPNUM, NOOP, GETMOD, GETARG, NOOP, NOOP, NOOP, NOOP }, /* VARW */ { NOOP, NUMBER, NOOP, GETPW, GETPWB, GETPW, NOOP, NOOP, NOOP }, /* VARP */ { NOOP, NUMBER, NOOP, GETPW, GETPWB, NOOP, NOOP, NOOP, NOOP }, /* PREC */ { NOOP, NOOP, NOOP, GETMOD, GETARG, NOOP, NOOP, NOOP, NOOP }, /* VWDIG */ { NOOP, NOOP, PWPOS, NOOP, NOOP, NOOP, NOOP, NOOP, NOOP }, /* VPDIG */ { NOOP, NOOP, PWPOS, NOOP, NOOP, NOOP, NOOP, NOOP, NOOP }, }; #endif /* STRING_ONLY && INTEGER_ONLY */ /* function to get positional parameter N where n = N - 1 */ static union arg_val * get_arg (struct _reent *data, int n, char *fmt, va_list *ap, int *numargs_p, union arg_val *args, int *arg_type, char **last_fmt) { int ch; int number, flags; int spec_type; int numargs = *numargs_p; __CH_CLASS chtype; __STATE state, next_state; __ACTION action; int pos, last_arg; int max_pos_arg = n; /* Only need types that can be reached via vararg promotions. */ enum types { INT, LONG_INT, QUAD_INT, CHAR_PTR, DOUBLE, LONG_DOUBLE, WIDE_CHAR }; # ifdef _MB_CAPABLE wchar_t wc; mbstate_t wc_state; int nbytes; # endif /* if this isn't the first call, pick up where we left off last time */ if (*last_fmt != NULL) fmt = *last_fmt; # ifdef _MB_CAPABLE memset (&wc_state, '\0', sizeof (wc_state)); # endif /* we need to process either to end of fmt string or until we have actually read the desired parameter from the vararg list. */ while (*fmt && n >= numargs) { # ifdef _MB_CAPABLE while ((nbytes = __MBTOWC (data, &wc, fmt, MB_CUR_MAX, &wc_state)) > 0) { fmt += nbytes; if (wc == '%') break; } if (nbytes <= 0) break; # else while (*fmt != '\0' && *fmt != '%') fmt += 1; if (*fmt == '\0') break; fmt++; # endif /* ! _MB_CAPABLE */ state = START; flags = 0; pos = -1; number = 0; spec_type = INT; /* Use state/action table to process format specifiers. We ignore invalid formats and we are only interested in information that tells us how to read the vararg list. */ while (state != DONE) { ch = *fmt++; chtype = __chclass[ch]; next_state = __state_table[state][chtype]; action = __action_table[state][chtype]; state = next_state; switch (action) { case GETMOD: /* we have format modifier */ switch (ch) { case 'h': /* No flag needed, since short and char promote to int. */ break; case 'L': flags |= LONGDBL; break; case 'q': flags |= QUADINT; break; # ifdef _WANT_IO_C99_FORMATS case 'j': if (sizeof (intmax_t) == sizeof (long)) flags |= LONGINT; else flags |= QUADINT; break; case 'z': if (sizeof (size_t) <= sizeof (int)) /* no flag needed */; else if (sizeof (size_t) <= sizeof (long)) flags |= LONGINT; else /* POSIX states that at least one programming environment must support size_t no wider than long, but that means other environments can have size_t as wide as long long. */ flags |= QUADINT; break; case 't': if (sizeof (ptrdiff_t) <= sizeof (int)) /* no flag needed */; else if (sizeof (ptrdiff_t) <= sizeof (long)) flags |= LONGINT; else /* POSIX states that at least one programming environment must support ptrdiff_t no wider than long, but that means other environments can have ptrdiff_t as wide as long long. */ flags |= QUADINT; break; # endif /* _WANT_IO_C99_FORMATS */ case 'l': default: # if defined _WANT_IO_C99_FORMATS || !defined _NO_LONGLONG if (*fmt == 'l') { flags |= QUADINT; ++fmt; } else # endif flags |= LONGINT; break; } break; case GETARG: /* we have format specifier */ { numargs &= (MAX_POS_ARGS - 1); /* process the specifier and translate it to a type to fetch from varargs */ switch (ch) { case 'd': case 'i': case 'o': case 'x': case 'X': case 'u': if (flags & LONGINT) spec_type = LONG_INT; # ifndef _NO_LONGLONG else if (flags & QUADINT) spec_type = QUAD_INT; # endif else spec_type = INT; break; case 'D': case 'U': case 'O': spec_type = LONG_INT; break; # ifdef _WANT_IO_C99_FORMATS case 'a': case 'A': case 'F': # endif case 'f': case 'g': case 'G': case 'E': case 'e': # ifndef _NO_LONGDBL if (flags & LONGDBL) spec_type = LONG_DOUBLE; else # endif spec_type = DOUBLE; break; case 's': # ifdef _WANT_IO_C99_FORMATS case 'S': # endif case 'p': case 'n': spec_type = CHAR_PTR; break; case 'c': # ifdef _WANT_IO_C99_FORMATS if (flags & LONGINT) spec_type = WIDE_CHAR; else # endif spec_type = INT; break; # ifdef _WANT_IO_C99_FORMATS case 'C': spec_type = WIDE_CHAR; break; # endif } /* if we have a positional parameter, just store the type, otherwise fetch the parameter from the vararg list */ if (pos != -1) arg_type[pos] = spec_type; else { switch (spec_type) { case LONG_INT: args[numargs++].val_long = va_arg (*ap, long); break; case QUAD_INT: args[numargs++].val_quad_t = va_arg (*ap, quad_t); break; case WIDE_CHAR: args[numargs++].val_wint_t = va_arg (*ap, wint_t); break; case INT: args[numargs++].val_int = va_arg (*ap, int); break; case CHAR_PTR: args[numargs++].val_char_ptr_t = va_arg (*ap, char *); break; case DOUBLE: args[numargs++].val_double = va_arg (*ap, double); break; case LONG_DOUBLE: args[numargs++].val__LONG_DOUBLE = va_arg (*ap, _LONG_DOUBLE); break; } } } break; case GETPOS: /* we have positional specifier */ if (arg_type[0] == -1) memset (arg_type, 0, sizeof (int) * MAX_POS_ARGS); pos = number - 1; max_pos_arg = (max_pos_arg > pos ? max_pos_arg : pos); break; case PWPOS: /* we have positional specifier for width or precision */ if (arg_type[0] == -1) memset (arg_type, 0, sizeof (int) * MAX_POS_ARGS); number -= 1; arg_type[number] = INT; max_pos_arg = (max_pos_arg > number ? max_pos_arg : number); break; case GETPWB: /* we require format pushback */ --fmt; FALLTHROUGH; case GETPW: /* we have a variable precision or width to acquire */ args[numargs++].val_int = va_arg (*ap, int); break; case NUMBER: /* we have a number to process */ number = (ch - '0'); while ((ch = *fmt) != '\0' && is_digit (ch)) { number = number * 10 + (ch - '0'); ++fmt; } break; case SKIPNUM: /* we have a number to skip */ while ((ch = *fmt) != '\0' && is_digit (ch)) ++fmt; break; case NOOP: default: break; /* do nothing */ } } } /* process all arguments up to at least the one we are looking for and if we have seen the end of the string, then process up to the max argument needed */ if (*fmt == '\0') last_arg = max_pos_arg; else last_arg = n; while (numargs <= last_arg) { switch (arg_type[numargs]) { case LONG_INT: args[numargs++].val_long = va_arg (*ap, long); break; case QUAD_INT: args[numargs++].val_quad_t = va_arg (*ap, quad_t); break; case CHAR_PTR: args[numargs++].val_char_ptr_t = va_arg (*ap, char *); break; case DOUBLE: args[numargs++].val_double = va_arg (*ap, double); break; case LONG_DOUBLE: args[numargs++].val__LONG_DOUBLE = va_arg (*ap, _LONG_DOUBLE); break; case WIDE_CHAR: args[numargs++].val_wint_t = va_arg (*ap, wint_t); break; case INT: default: args[numargs++].val_int = va_arg (*ap, int); break; } } /* alter the global numargs value and keep a reference to the last bit of the fmt string we processed here because the caller will continue processing where we started */ *numargs_p = numargs; *last_fmt = fmt; return &args[n]; } #endif /* !_NO_POS_ARGS */ picolibc-1.7.4/newlib/libc/stdio/vfscanf.c000066400000000000000000001367651414576234500204510ustar00rootroot00000000000000/*- * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>, <>, <>---format argument list INDEX vfscanf INDEX _vfscanf_r INDEX vscanf INDEX _vscanf_r INDEX vsscanf INDEX _vsscanf_r SYNOPSIS #include #include int vscanf(const char *<[fmt]>, va_list <[list]>); int vfscanf(FILE *<[fp]>, const char *<[fmt]>, va_list <[list]>); int vsscanf(const char *<[str]>, const char *<[fmt]>, va_list <[list]>); int _vscanf_r(struct _reent *<[reent]>, const char *<[fmt]>, va_list <[list]>); int _vfscanf_r(struct _reent *<[reent]>, FILE *<[fp]>, const char *<[fmt]>, va_list <[list]>); int _vsscanf_r(struct _reent *<[reent]>, const char *<[str]>, const char *<[fmt]>, va_list <[list]>); DESCRIPTION <>, <>, and <> are (respectively) variants of <>, <>, and <>. They differ only in allowing their caller to pass the variable argument list as a <> object (initialized by <>) rather than directly accepting a variable number of arguments. RETURNS The return values are consistent with the corresponding functions: <> returns the number of input fields successfully scanned, converted, and stored; the return value does not include scanned fields which were not stored. If <> attempts to read at end-of-file, the return value is <>. If no fields were stored, the return value is <<0>>. The routines <<_vscanf_r>>, <<_vfscanf_f>>, and <<_vsscanf_r>> are reentrant versions which take an additional first parameter which points to the reentrancy structure. PORTABILITY These are GNU extensions. Supporting OS subroutines required: */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include #include #include #include #include #include #include #include "local.h" #include "../stdlib/local.h" #ifdef INTEGER_ONLY #define VFSCANF vfiscanf #define _VFSCANF_R _vfiscanf_r #define __SVFSCANF __svfiscanf #ifdef STRING_ONLY # define __SVFSCANF_R __ssvfiscanf_r #else # define __SVFSCANF_R __svfiscanf_r #endif #else #define VFSCANF vfscanf #define _VFSCANF_R _vfscanf_r #define __SVFSCANF __svfscanf #ifdef STRING_ONLY # define __SVFSCANF_R __ssvfscanf_r #else # define __SVFSCANF_R __svfscanf_r #endif #ifndef NO_FLOATING_POINT #define FLOATING_POINT #endif #endif #ifdef STRING_ONLY #undef _newlib_flockfile_start #undef _newlib_flockfile_exit #undef _newlib_flockfile_end #define _newlib_flockfile_start(x) {} #define _newlib_flockfile_exit(x) {} #define _newlib_flockfile_end(x) {} #define _ungetc_r _sungetc_r #define __srefill_r __ssrefill_r #define _fread_r _sfread_r #endif #ifdef FLOATING_POINT #include #include #include /* Currently a test is made to see if long double processing is warranted. This could be changed in the future should the __ldtoa code be preferred over __dtoa. */ #define _NO_LONGDBL #if defined _WANT_IO_LONG_DOUBLE && (LDBL_MANT_DIG > DBL_MANT_DIG) #undef _NO_LONGDBL #endif #include "floatio.h" #define BUF (MAXEXP+MAXFRACT+MB_LEN_MAX+2) /* decimal point + sign + NUL */ /* An upper bound for how long a long prints in decimal. 4 / 13 approximates log (2). Add one char for roundoff compensation and one for the sign. */ #define MAX_LONG_LEN ((CHAR_BIT * sizeof (long) - 1) * 4 / 13 + 2) #else #define BUF 40 #endif #define _NO_LONGLONG #if defined _WANT_IO_LONG_LONG \ && (defined __GNUC__ || __STDC_VERSION__ >= 199901L) # undef _NO_LONGLONG #endif #define _NO_POS_ARGS #ifdef _WANT_IO_POS_ARGS # undef _NO_POS_ARGS # ifdef NL_ARGMAX # define MAX_POS_ARGS NL_ARGMAX # else # define MAX_POS_ARGS 32 # endif static void * get_arg (int, va_list *, int *, void **); #endif /* _WANT_IO_POS_ARGS */ /* * Flags used during conversion. */ #define LONG 0x01 /* l: long or double */ #define LONGDBL 0x02 /* L/ll: long double or long long */ #define SHORT 0x04 /* h: short */ #define CHAR 0x08 /* hh: 8 bit integer */ #define SUPPRESS 0x10 /* suppress assignment */ #define POINTER 0x20 /* weird %p pointer (`fake hex') */ #define NOSKIP 0x40 /* do not skip blanks */ #define MALLOC 0x80 /* handle 'm' modifier */ /* * The following are used in numeric conversions only: * SIGNOK, NDIGITS, DPTOK, EXPOK and HEXFLT are for floating point; * SIGNOK, NDIGITS, PFXOK, and NZDIGITS are for integral. */ #define SIGNOK 0x80 /* +/- is (still) legal */ #define NDIGITS 0x100 /* no digits detected */ #define DPTOK 0x200 /* (float) decimal point is still legal */ #define EXPOK 0x400 /* (float) exponent (e+3, etc) still legal */ #define HEXFLT 0x800 /* (float) hex prefix found, expect hex float */ #define PFXOK 0x200 /* 0x prefix is (still) legal */ #define NZDIGITS 0x400 /* no zero digits detected */ #define NNZDIGITS 0x800 /* no non-zero digits detected */ /* * Conversion types. */ #define CT_CHAR 0 /* %c conversion */ #define CT_CCL 1 /* %[...] conversion */ #define CT_STRING 2 /* %s conversion */ #define CT_INT 3 /* integer, i.e., strtol or strtoul */ #define CT_FLOAT 4 /* floating, i.e., strtod */ #define u_char unsigned char #define u_long unsigned long #ifndef _NO_LONGLONG typedef unsigned long long u_long_long; #endif /* * vfscanf */ #define BufferEmpty (fp->_r <= 0 && __srefill_r(rptr, fp)) #ifndef STRING_ONLY #ifndef _REENT_ONLY int VFSCANF (register FILE *fp, const char *fmt, va_list ap) { struct _reent *reent = _REENT; CHECK_INIT(reent, fp); return __SVFSCANF_R (reent, fp, fmt, ap); } int __SVFSCANF (register FILE *fp, char const *fmt0, va_list ap) { return __SVFSCANF_R (_REENT, fp, fmt0, ap); } #endif /* !_REENT_ONLY */ int _VFSCANF_R (struct _reent *data, register FILE *fp, const char *fmt, va_list ap) { CHECK_INIT(data, fp); return __SVFSCANF_R (data, fp, fmt, ap); } #endif /* !STRING_ONLY */ #if defined (STRING_ONLY) && defined (INTEGER_ONLY) /* When dealing with the sscanf family, we don't want to use the * regular ungetc which will drag in file I/O items we don't need. * So, we create our own trimmed-down version. */ int _sungetc_r (struct _reent *data, int c, register FILE *fp) { if (c == EOF) return (EOF); /* After ungetc, we won't be at eof anymore */ fp->_flags &= ~__SEOF; c = (unsigned char) c; /* * If we are in the middle of ungetc'ing, just continue. * This may require expanding the current ungetc buffer. */ if (HASUB (fp)) { if (fp->_r >= fp->_ub._size && __submore (data, fp)) { return EOF; } *--fp->_p = c; fp->_r++; return c; } /* * If we can handle this by simply backing up, do so, * but never replace the original character. * (This makes sscanf() work when scanning `const' data.) */ if (fp->_bf._base != NULL && fp->_p > fp->_bf._base && fp->_p[-1] == c) { fp->_p--; fp->_r++; return c; } /* * Create an ungetc buffer. * Initially, we will use the `reserve' buffer. */ fp->_ur = fp->_r; fp->_up = fp->_p; fp->_ub._base = fp->_ubuf; fp->_ub._size = sizeof (fp->_ubuf); fp->_ubuf[sizeof (fp->_ubuf) - 1] = c; fp->_p = &fp->_ubuf[sizeof (fp->_ubuf) - 1]; fp->_r = 1; return c; } /* String only version of __srefill_r for sscanf family. */ int __ssrefill_r (struct _reent * ptr, register FILE * fp) { /* * Our only hope of further input is the ungetc buffer. * If there is anything in that buffer to read, return. */ (void) ptr; if (HASUB (fp)) { FREEUB (ptr, fp); if ((fp->_r = fp->_ur) != 0) { fp->_p = fp->_up; return 0; } } /* Otherwise we are out of character input. */ fp->_p = fp->_bf._base; fp->_r = 0; fp->_flags |= __SEOF; return EOF; } size_t _sfread_r (struct _reent * ptr, void *buf, size_t size, size_t count, FILE * fp) { register size_t resid; register char *p; register int r; size_t total; if ((resid = count * size) == 0) return 0; total = resid; p = buf; while (resid > (size_t) (r = fp->_r)) { (void) memcpy ((void *) p, (void *) fp->_p, (size_t) r); fp->_p += r; fp->_r = 0; p += r; resid -= r; if (__ssrefill_r (ptr, fp)) { /* no more input: return partial result */ return (total - resid) / size; } } (void) memcpy ((void *) p, (void *) fp->_p, resid); fp->_r -= resid; fp->_p += resid; return count; } #else /* !STRING_ONLY || !INTEGER_ONLY */ int _sungetc_r (struct _reent *, int, register FILE *); int __ssrefill_r (struct _reent *, register FILE *); size_t _sfread_r (struct _reent *, void *buf, size_t, size_t, FILE *); #endif /* !STRING_ONLY || !INTEGER_ONLY */ static inline int __wctob (struct _reent *rptr, wint_t wc) { mbstate_t mbs; unsigned char pmb[MB_LEN_MAX]; (void) rptr; if (wc == WEOF) return EOF; memset (&mbs, '\0', sizeof (mbs)); return __WCTOMB ((char *) pmb, wc, &mbs) == 1 ? (int) pmb[0] : 0; } int __SVFSCANF_R (struct _reent *rptr, register FILE *fp, char const *fmt0, va_list ap) { register u_char *fmt = (u_char *) fmt0; register int c; /* character from format, or conversion */ register size_t width; /* field width, or 0 */ register char *p; /* points into all kinds of strings */ register int n; /* handy integer */ register int flags; /* flags as defined above */ register char *p0; /* saves original value of p when necessary */ int nassigned; /* number of fields assigned */ int nread; /* number of characters consumed from fp */ #ifndef _NO_POS_ARGS int N; /* arg number */ int arg_index = 0; /* index into args processed directly */ int numargs = 0; /* number of varargs read */ void *args[MAX_POS_ARGS]; /* positional args read */ int is_pos_arg; /* is current format positional? */ #endif int base = 0; /* base argument to strtol/strtoul */ int nbytes = 1; /* number of bytes read from fmt string */ wchar_t wc; /* wchar to use to read format string */ wchar_t *wcp; /* handy wide character pointer */ size_t mbslen = 0; /* length of converted multibyte sequence */ #ifdef _MB_CAPABLE mbstate_t state; /* value to keep track of multibyte state */ #endif #ifdef _WANT_IO_C99_FORMATS #define _WANT_IO_POSIX_EXTENSIONS #endif #ifdef _WANT_IO_POSIX_EXTENSIONS /* POSIX requires that fscanf frees all allocated strings from 'm' conversions in case it returns EOF. m_ptr is used to keep track. It will be allocated on the stack the first time an 'm' conversion takes place, and it will be free'd on return from the function. This implementation tries to save space by only allocating 8 pointer slots at a time. Most scenarios should never have to call realloc again. This implementation allows only up to 65528 'm' conversions per fscanf invocation for now. That should be enough for almost all scenarios, right? */ struct m_ptrs { void ***m_arr; /* Array of pointer args to 'm' conversion */ uint16_t m_siz; /* Number of slots in m_arr */ uint16_t m_cnt; /* Number of valid entries in m_arr */ } *m_ptr = NULL, m_store; #define init_m_ptr() \ do \ { \ if (!m_ptr) \ { \ m_ptr = &m_store; \ m_ptr->m_arr = NULL; \ m_ptr->m_siz = 0; \ m_ptr->m_cnt = 0; \ } \ } \ while (0) #define push_m_ptr(arg) \ do \ { \ if (m_ptr->m_cnt >= m_ptr->m_siz) \ { \ void ***n = NULL; \ \ if (m_ptr->m_siz + 8 > 0 && m_ptr->m_siz + 8 < UINT16_MAX) \ n = (void ***) realloc (m_ptr->m_arr, \ (m_ptr->m_siz + 8) * \ sizeof (void **)); \ if (!n) \ { \ nassigned = EOF; \ goto match_failure; \ } \ m_ptr->m_arr = n; \ m_ptr->m_siz += 8; \ } \ m_ptr->m_arr[m_ptr->m_cnt++] = (void **) (arg); \ } \ while (0) #define alloc_m_ptr(_type, _p, _p0, _p_p, _w) \ ({ \ _p_p = GET_ARG (N, ap, _type **); \ if (!_p_p) \ goto match_failure; \ _p0 = (_type *) malloc ((_w) * sizeof (_type)); \ if (!_p0) \ { \ nassigned = EOF; \ goto match_failure; \ } \ *_p_p = _p0; \ push_m_ptr (_p_p); \ _p = _p0; \ _w; \ }) /* For systems with wchar_t == 2 (UTF-16) check if there's room for at least 2 wchar_t's (surrogate pairs). */ #define realloc_m_ptr(_type, _p, _p0, _p_p, _w) \ ({ \ size_t _nw = (_w); \ ptrdiff_t _dif = _p - _p0; \ if (_p_p && \ ((sizeof (_type) == 2 && (size_t) _dif >= _nw - 1) \ || (size_t) _dif >= _nw)) \ { \ _p0 = (_type *) realloc (_p0, (_nw << 1) * sizeof (_type)); \ if (!_p0) \ { \ nassigned = EOF; \ goto match_failure; \ } \ _p = _p0 + _dif; \ *_p_p = _p0; \ _nw <<= 1; \ } \ _nw; \ }) #define shrink_m_ptr(_type, _p_p, _w, _cw) \ ({ \ size_t _nw = (_w); \ if (_p_p && _nw < _cw) \ { \ _type *_np_p = (_type *) \ realloc (*_p_p, _nw * sizeof (_type)); \ if (_np_p) \ *_p_p = _np_p; \ } \ }) #define free_m_ptr() \ do \ { \ if (m_ptr) \ { \ if (nassigned == EOF) \ { \ int i; \ for (i = 0; i < m_ptr->m_cnt; ++i) \ { \ free (*m_ptr->m_arr[i]); \ *m_ptr->m_arr[i] = NULL; \ } \ } \ if (m_ptr->m_arr) \ free (m_ptr->m_arr); \ } \ } \ while (0) #endif #define CCFN_PARAMS (const char *, char **, int) u_long (*ccfn)CCFN_PARAMS=0; /* conversion function (strtol/strtoul) */ char ccltab[256]; /* character class table for %[...] */ char buf[BUF]; /* buffer for numeric conversions */ unsigned char *lptr; /* literal pointer */ char *cp; short *sp; int *ip; #ifdef FLOATING_POINT float *flp; _LONG_DOUBLE *ldp; double *dp; #endif long *lp; #ifndef _NO_LONGLONG long long *llp; #endif /* `basefix' is used to avoid `if' tests in the integer scanner */ static const short basefix[17] = {10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; /* Macro to support positional arguments */ #ifndef _NO_POS_ARGS # define GET_ARG(n, ap, type) \ ((type) (is_pos_arg \ ? (n < numargs \ ? args[n] \ : get_arg (n, &ap, &numargs, args)) \ : (arg_index++ < numargs \ ? args[n] \ : (numargs < MAX_POS_ARGS \ ? args[numargs++] = va_arg (ap, void *) \ : va_arg (ap, void *))))) #else # define GET_ARG(n, ap, type) (va_arg (ap, type)) #endif _newlib_flockfile_start (fp); ORIENT (fp, -1); nassigned = 0; nread = 0; #ifdef _MB_CAPABLE memset (&state, 0, sizeof (state)); #endif for (;;) { #ifndef _MB_CAPABLE wc = *fmt; #else nbytes = __MBTOWC (&wc, (char *) fmt, MB_CUR_MAX, &state); if (nbytes < 0) { wc = 0xFFFD; /* Unicode replacement character */ nbytes = 1; memset (&state, 0, sizeof (state)); } #endif fmt += nbytes; if (wc == 0) goto all_done; if (nbytes == 1 && isspace (wc)) { for (;;) { if (BufferEmpty || !isspace (*fp->_p)) break; nread++, fp->_r--, fp->_p++; } continue; } if (wc != '%') goto literal; width = 0; flags = 0; #ifndef _NO_POS_ARGS N = arg_index; is_pos_arg = 0; #endif /* * switch on the format. continue if done; break once format * type is derived. */ again: c = *fmt++; switch (c) { case '%': literal: lptr = fmt - nbytes; for (n = 0; n < nbytes; ++n) { if (BufferEmpty) goto input_failure; if (*fp->_p != *lptr) goto match_failure; fp->_r--, fp->_p++; nread++; ++lptr; } continue; case '*': if ((flags & (CHAR | SHORT | LONG | LONGDBL | SUPPRESS | MALLOC)) || width) goto match_failure; flags |= SUPPRESS; goto again; case 'l': if (flags & (CHAR | SHORT | LONG | LONGDBL)) goto match_failure; #if defined _WANT_IO_C99_FORMATS || !defined _NO_LONGLONG if (*fmt == 'l') /* Check for 'll' = long long (SUSv3) */ { ++fmt; flags |= LONGDBL; } else #endif flags |= LONG; goto again; case 'L': if (flags & (CHAR | SHORT | LONG | LONGDBL)) goto match_failure; flags |= LONGDBL; goto again; case 'h': if (flags & (CHAR | SHORT | LONG | LONGDBL)) goto match_failure; #ifdef _WANT_IO_C99_FORMATS if (*fmt == 'h') /* Check for 'hh' = char int (SUSv3) */ { ++fmt; flags |= CHAR; } else #endif flags |= SHORT; goto again; #ifdef _WANT_IO_C99_FORMATS case 'j': /* intmax_t */ if (flags & (CHAR | SHORT | LONG | LONGDBL)) goto match_failure; if (sizeof (intmax_t) == sizeof (long)) flags |= LONG; else flags |= LONGDBL; goto again; case 't': /* ptrdiff_t */ if (flags & (CHAR | SHORT | LONG | LONGDBL)) goto match_failure; if (sizeof (ptrdiff_t) < sizeof (int)) /* POSIX states ptrdiff_t is 16 or more bits, as is short. */ flags |= SHORT; else if (sizeof (ptrdiff_t) == sizeof (int)) /* no flag needed */; else if (sizeof (ptrdiff_t) <= sizeof (long)) flags |= LONG; else /* POSIX states that at least one programming environment must support ptrdiff_t no wider than long, but that means other environments can have ptrdiff_t as wide as long long. */ flags |= LONGDBL; goto again; case 'z': /* size_t */ if (flags & (CHAR | SHORT | LONG | LONGDBL)) goto match_failure; if (sizeof (size_t) < sizeof (int)) /* POSIX states size_t is 16 or more bits, as is short. */ flags |= SHORT; else if (sizeof (size_t) == sizeof (int)) /* no flag needed */; else if (sizeof (size_t) <= sizeof (long)) flags |= LONG; else /* POSIX states that at least one programming environment must support size_t no wider than long, but that means other environments can have size_t as wide as long long. */ flags |= LONGDBL; goto again; #endif /* _WANT_IO_C99_FORMATS */ #ifdef _WANT_IO_POSIX_EXTENSIONS case 'm': if (flags & (CHAR | SHORT | LONG | LONGDBL | MALLOC)) goto match_failure; init_m_ptr (); flags |= MALLOC; goto again; #endif case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (flags & (CHAR | SHORT | LONG | LONGDBL | MALLOC)) goto match_failure; width = width * 10 + c - '0'; goto again; #ifndef _NO_POS_ARGS case '$': if (flags & (CHAR | SHORT | LONG | LONGDBL | SUPPRESS | MALLOC)) goto match_failure; if (width <= MAX_POS_ARGS) { N = width - 1; is_pos_arg = 1; width = 0; goto again; } __errno_r(rptr) = EINVAL; goto input_failure; #endif /* !_NO_POS_ARGS */ /* * Conversions. Those marked `compat' are for * 4.[123]BSD compatibility. * * (According to ANSI, E and X formats are supposed to * the same as e and x. Sorry about that.) */ case 'D': /* compat */ flags |= LONG; FALLTHROUGH; case 'd': c = CT_INT; ccfn = (u_long (*)CCFN_PARAMS)strtol; base = 10; break; case 'i': c = CT_INT; ccfn = (u_long (*)CCFN_PARAMS)strtol; base = 0; break; case 'O': /* compat */ flags |= LONG; FALLTHROUGH; case 'o': c = CT_INT; ccfn = strtoul; base = 8; break; case 'u': c = CT_INT; ccfn = strtoul; base = 10; break; case 'X': case 'x': flags |= PFXOK; /* enable 0x prefixing */ c = CT_INT; ccfn = strtoul; base = 16; break; #ifdef FLOATING_POINT # ifdef _WANT_IO_C99_FORMATS case 'a': case 'A': case 'F': # endif case 'E': case 'G': case 'e': case 'f': case 'g': c = CT_FLOAT; break; #endif #ifdef _WANT_IO_C99_FORMATS case 'S': flags |= LONG; FALLTHROUGH; #endif case 's': c = CT_STRING; break; case '[': fmt = (u_char *) __sccl (ccltab, (unsigned char *) fmt); flags |= NOSKIP; c = CT_CCL; break; #ifdef _WANT_IO_C99_FORMATS case 'C': flags |= LONG; FALLTHROUGH; #endif case 'c': flags |= NOSKIP; c = CT_CHAR; break; case 'p': /* pointer format is like hex */ flags |= POINTER | PFXOK; c = CT_INT; ccfn = strtoul; base = 16; break; case 'n': if (flags & SUPPRESS) /* ??? */ continue; #ifdef _WANT_IO_C99_FORMATS if (flags & CHAR) { cp = GET_ARG (N, ap, char *); *cp = nread; } else #endif if (flags & SHORT) { sp = GET_ARG (N, ap, short *); *sp = nread; } else if (flags & LONG) { lp = GET_ARG (N, ap, long *); *lp = nread; } #ifndef _NO_LONGLONG else if (flags & LONGDBL) { llp = GET_ARG (N, ap, long long*); *llp = nread; } #endif else { ip = GET_ARG (N, ap, int *); *ip = nread; } continue; default: goto match_failure; } /* * We have a conversion that requires input. */ if (BufferEmpty) goto input_failure; /* * Consume leading white space, except for formats that * suppress this. */ if ((flags & NOSKIP) == 0) { while (isspace (*fp->_p)) { nread++; if (--fp->_r > 0) fp->_p++; else if (__srefill_r (rptr, fp)) goto input_failure; } /* * Note that there is at least one character in the * buffer, so conversions that do not set NOSKIP ca * no longer result in an input failure. */ } /* * Do the conversion. */ switch (c) { case CT_CHAR: /* scan arbitrary characters (sets NOSKIP) */ if (width == 0) width = 1; #if !defined(_ELIX_LEVEL) || _ELIX_LEVEL >= 2 if (flags & LONG) { #ifdef _WANT_IO_POSIX_EXTENSIONS wchar_t **wcp_p = NULL; wchar_t *wcp0 = NULL; size_t wcp_siz = 0; #endif mbstate_t state; if (flags & SUPPRESS) wcp = NULL; #ifdef _WANT_IO_POSIX_EXTENSIONS else if (flags & MALLOC) wcp_siz = alloc_m_ptr (wchar_t, wcp, wcp0, wcp_p, 32); #endif else wcp = GET_ARG (N, ap, wchar_t *); size_t s = 0; while (width != 0) { if (s == MB_CUR_MAX) goto input_failure; buf[s++] = *fp->_p; fp->_r -= 1; fp->_p += 1; /* Got a high surrogate, allow low surrogate to slip through */ if (mbslen != 3 || state.__count != 4) memset (&state, 0, sizeof (mbstate_t)); if ((mbslen = mbrtowc (wcp, buf, s, &state)) == (size_t)-1) goto input_failure; /* Invalid sequence */ if (mbslen == 0 && !(flags & SUPPRESS)) *wcp = L'\0'; if (mbslen != (size_t)-2) /* Incomplete sequence */ { nread += s; /* Handle high surrogate */ if (mbslen != 3 || state.__count != 4) width -= 1; if (!(flags & SUPPRESS)) { #ifdef _WANT_IO_POSIX_EXTENSIONS wcp_siz = realloc_m_ptr (wchar_t, wcp, wcp0, wcp_p, wcp_siz); #endif wcp++; } s = 0; } if (BufferEmpty) { if (s != 0) goto input_failure; break; } } #ifdef _WANT_IO_POSIX_EXTENSIONS shrink_m_ptr (wchar_t, wcp_p, wcp - wcp0, wcp_siz); #endif if (!(flags & SUPPRESS)) nassigned++; } else #endif /* ELIX_LEVEL */ if (flags & SUPPRESS) { size_t sum = 0; for (;;) { if ((n = fp->_r) < (int)width) { sum += n; width -= n; fp->_p += n; if (__srefill_r (rptr, fp)) { if (sum == 0) goto input_failure; break; } } else { sum += width; fp->_r -= width; fp->_p += width; break; } } nread += sum; } else { size_t r; #ifdef _WANT_IO_POSIX_EXTENSIONS char **p_p = NULL; if (flags & MALLOC) alloc_m_ptr (char, p, p0, p_p, width); else #endif p = GET_ARG (N, ap, char *); r = _fread_r (rptr, p, 1, width, fp); if (r == 0) goto input_failure; #ifdef _WANT_IO_POSIX_EXTENSIONS shrink_m_ptr (char, p_p, r, width); #endif nread += r; nassigned++; } break; case CT_CCL: /* scan a (nonempty) character class (sets NOSKIP) */ if (width == 0) width = SIZE_MAX; /* take only those things in the class */ #if !defined(_ELIX_LEVEL) || _ELIX_LEVEL >= 2 if (flags & LONG) { #ifdef _WANT_IO_POSIX_EXTENSIONS wchar_t **wcp_p = NULL; wchar_t *wcp0 = NULL; size_t wcp_siz = 0; #endif mbstate_t state; if (flags & SUPPRESS) wcp = &wc; #ifdef _WANT_IO_POSIX_EXTENSIONS else if (flags & MALLOC) wcp_siz = alloc_m_ptr (wchar_t, wcp, wcp0, wcp_p, 32); #endif else wcp = GET_ARG (N, ap, wchar_t *); size_t s = 0; while (width != 0) { if (s == MB_CUR_MAX) goto input_failure; buf[s++] = *fp->_p; fp->_r -= 1; fp->_p += 1; /* Got a high surrogate, allow low surrogate to slip through */ if (mbslen != 3 || state.__count != 4) memset (&state, 0, sizeof (mbstate_t)); if ((mbslen = mbrtowc (wcp, buf, s, &state)) == (size_t)-1) goto input_failure; if (mbslen == 0) *wcp = L'\0'; if (mbslen != (size_t)-2) /* Incomplete sequence */ { if (!ccltab[__wctob (rptr, *wcp)]) { while (s != 0) _ungetc_r (rptr, (unsigned char) buf[--s], fp); break; } nread += s; /* Handle high surrogate */ if (mbslen != 3 || state.__count != 4) width -= 1; if ((flags & SUPPRESS) == 0) { wcp += 1; #ifdef _WANT_IO_POSIX_EXTENSIONS wcp_siz = realloc_m_ptr (wchar_t, wcp, wcp0, wcp_p, wcp_siz); #endif } s = 0; } if (BufferEmpty) { if (s != 0) goto input_failure; break; } } if (!(flags & SUPPRESS)) { *wcp = L'\0'; #ifdef _WANT_IO_POSIX_EXTENSIONS shrink_m_ptr (wchar_t, wcp_p, wcp - wcp0 + 1, wcp_siz); #endif nassigned++; } } else #endif /* ELIX_LEVEL */ if (flags & SUPPRESS) { n = 0; while (ccltab[*fp->_p]) { n++, fp->_r--, fp->_p++; if (--width == 0) break; if (BufferEmpty) { if (n == 0) goto input_failure; break; } } if (n == 0) goto match_failure; nread += n; } else { #ifdef _WANT_IO_POSIX_EXTENSIONS char **p_p = NULL; size_t p_siz = 0; if (flags & MALLOC) p_siz = alloc_m_ptr (char, p, p0, p_p, 32); else #endif p0 = p = GET_ARG (N, ap, char *); while (ccltab[*fp->_p]) { fp->_r--; *p++ = *fp->_p++; #ifdef _WANT_IO_POSIX_EXTENSIONS p_siz = realloc_m_ptr (char, p, p0, p_p, p_siz); #endif if (--width == 0) break; if (BufferEmpty) { if (p == p0) goto input_failure; break; } } n = p - p0; if (n == 0) goto match_failure; *p = 0; #ifdef _WANT_IO_POSIX_EXTENSIONS shrink_m_ptr (char, p_p, n + 1, p_siz); #endif nassigned++; nread += n; } break; case CT_STRING: /* like CCL, but zero-length string OK, & no NOSKIP */ if (width == 0) width = SIZE_MAX; #if !defined(_ELIX_LEVEL) || _ELIX_LEVEL >= 2 if (flags & LONG) { #ifdef _WANT_IO_POSIX_EXTENSIONS wchar_t **wcp_p = NULL; wchar_t *wcp0 = NULL; size_t wcp_siz = 0; #endif /* Process %S and %ls placeholders */ mbstate_t state; if (flags & SUPPRESS) wcp = &wc; #ifdef _WANT_IO_POSIX_EXTENSIONS else if (flags & MALLOC) wcp_siz = alloc_m_ptr (wchar_t, wcp, wcp0, wcp_p, 32); #endif else wcp = GET_ARG (N, ap, wchar_t *); size_t s = 0; while (!isspace (*fp->_p) && width != 0) { if (s == MB_CUR_MAX) goto input_failure; buf[s++] = *fp->_p; fp->_r -= 1; fp->_p += 1; /* Got a high surrogate, allow low surrogate to slip through */ if (mbslen != 3 || state.__count != 4) memset (&state, 0, sizeof (mbstate_t)); if ((mbslen = mbrtowc (wcp, buf, s, &state)) == (size_t)-1) goto input_failure; if (mbslen == 0) *wcp = L'\0'; if (mbslen != (size_t)-2) /* Incomplete sequence */ { if (iswspace(*wcp)) { while (s != 0) _ungetc_r (rptr, (unsigned char) buf[--s], fp); break; } nread += s; /* Handle high surrogate */ if (mbslen != 3 || state.__count != 4) width -= 1; if ((flags & SUPPRESS) == 0) { wcp += 1; #ifdef _WANT_IO_POSIX_EXTENSIONS wcp_siz = realloc_m_ptr (wchar_t, wcp, wcp0, wcp_p, wcp_siz); #endif } s = 0; } if (BufferEmpty) { if (s != 0) goto input_failure; break; } } if (!(flags & SUPPRESS)) { *wcp = L'\0'; #ifdef _WANT_IO_POSIX_EXTENSIONS shrink_m_ptr (wchar_t, wcp_p, wcp - wcp0 + 1, wcp_siz); #endif nassigned++; } } else #endif if (flags & SUPPRESS) { n = 0; while (!isspace (*fp->_p)) { n++, fp->_r--, fp->_p++; if (--width == 0) break; if (BufferEmpty) break; } nread += n; } else { #ifdef _WANT_IO_POSIX_EXTENSIONS char **p_p = NULL; size_t p_siz = 0; if (flags & MALLOC) p_siz = alloc_m_ptr (char, p, p0, p_p, 32); else #endif p0 = GET_ARG (N, ap, char *); p = p0; while (!isspace (*fp->_p)) { fp->_r--; *p++ = *fp->_p++; #ifdef _WANT_IO_POSIX_EXTENSIONS p_siz = realloc_m_ptr (char, p, p0, p_p, p_siz); #endif if (--width == 0) break; if (BufferEmpty) break; } *p = 0; #ifdef _WANT_IO_POSIX_EXTENSIONS shrink_m_ptr (char, p_p, p - p0 + 1, p_siz); #endif nread += p - p0; nassigned++; } continue; case CT_INT: { /* scan an integer as if by strtol/strtoul */ unsigned width_left = 0; int skips = 0; #ifdef hardway if (width == 0 || width > sizeof (buf) - 1) #else /* size_t is unsigned, hence this optimisation */ if (width - 1 > sizeof (buf) - 2) #endif { width_left = width - (sizeof (buf) - 1); width = sizeof (buf) - 1; } flags |= SIGNOK | NDIGITS | NZDIGITS | NNZDIGITS; for (p = buf; width; width--) { c = *fp->_p; /* * Switch on the character; `goto ok' if we * accept it as a part of number. */ switch (c) { /* * The digit 0 is always legal, but is special. * For %i conversions, if no digits (zero or nonzero) * have been scanned (only signs), we will have base==0. * In that case, we should set it to 8 and enable 0x * prefixing. Also, if we have not scanned zero digits * before this, do not turn off prefixing (someone else * will turn it off if we have scanned any nonzero digits). */ case '0': if (! (flags & NNZDIGITS)) goto ok; if (base == 0) { base = 8; flags |= PFXOK; } if (flags & NZDIGITS) { flags &= ~(SIGNOK | NZDIGITS | NDIGITS); goto ok; } flags &= ~(SIGNOK | PFXOK | NDIGITS); if (width_left) { width_left--; width++; } ++skips; goto skip; /* 1 through 7 always legal */ case '1': case '2': case '3': case '4': case '5': case '6': case '7': base = basefix[base]; flags &= ~(SIGNOK | PFXOK | NDIGITS | NNZDIGITS); goto ok; /* digits 8 and 9 ok iff decimal or hex */ case '8': case '9': base = basefix[base]; if (base <= 8) break; /* not legal here */ flags &= ~(SIGNOK | PFXOK | NDIGITS | NNZDIGITS); goto ok; /* letters ok iff hex */ case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': /* no need to fix base here */ if (base <= 10) break; /* not legal here */ flags &= ~(SIGNOK | PFXOK | NDIGITS | NNZDIGITS); goto ok; /* sign ok only as first character */ case '+': case '-': if (flags & SIGNOK) { flags &= ~SIGNOK; goto ok; } break; /* x ok iff flag still set & single 0 seen */ case 'x': case 'X': if ((flags & (PFXOK | NZDIGITS)) == PFXOK) { base = 16;/* if %i */ flags &= ~PFXOK; /* We must reset the NZDIGITS and NDIGITS flags that would have been unset by seeing the zero that preceded the X or x. */ flags |= NZDIGITS | NDIGITS; goto ok; } break; } /* * If we got here, c is not a legal character * for a number. Stop accumulating digits. */ break; ok: /* * c is legal: store it and look at the next. */ *p++ = c; skip: if (--fp->_r > 0) fp->_p++; else if (__srefill_r (rptr, fp)) break; /* EOF */ } /* * If we had only a sign, it is no good; push back the sign. * If the number ends in `x', it was [sign] '0' 'x', so push back * the x and treat it as [sign] '0'. * Use of ungetc here and below assumes ASCII encoding; we are only * pushing back 7-bit characters, so casting to unsigned char is * not necessary. */ if (flags & NDIGITS) { if (p > buf) _ungetc_r (rptr, *--p, fp); /* [-+xX] */ if (p == buf) goto match_failure; } if ((flags & SUPPRESS) == 0) { u_long res; *p = 0; res = (*ccfn) (buf, (char **) NULL, base); if (flags & POINTER) { void **vp = GET_ARG (N, ap, void **); #ifndef _NO_LONGLONG if (sizeof (uintptr_t) > sizeof (u_long)) { u_long_long resll; resll = strtoull (buf, (char **) NULL, base); *vp = (void *) (uintptr_t) resll; } else #endif /* !_NO_LONGLONG */ *vp = (void *) (uintptr_t) res; } #ifdef _WANT_IO_C99_FORMATS else if (flags & CHAR) { cp = GET_ARG (N, ap, char *); *cp = res; } #endif else if (flags & SHORT) { sp = GET_ARG (N, ap, short *); *sp = res; } else if (flags & LONG) { lp = GET_ARG (N, ap, long *); *lp = res; } #ifndef _NO_LONGLONG else if (flags & LONGDBL) { u_long_long resll; if (ccfn == strtoul) resll = strtoull (buf, (char **) NULL, base); else resll = strtoll (buf, (char **) NULL, base); llp = GET_ARG (N, ap, long long*); *llp = resll; } #endif else { ip = GET_ARG (N, ap, int *); *ip = res; } nassigned++; } nread += p - buf + skips; break; } #ifdef FLOATING_POINT case CT_FLOAT: { /* scan a floating point number as if by strtod */ /* This code used to assume that the number of digits is reasonable. However, ANSI / ISO C makes no such stipulation; we have to get exact results even when there is an unreasonable amount of leading zeroes. */ long leading_zeroes = 0; long zeroes, exp_adjust; char *exp_start = NULL; unsigned width_left = 0; char nancount = 0; char infcount = 0; const char *decpt = localeconv ()->decimal_point; #ifdef _MB_CAPABLE int decptpos = 0; #endif #ifdef hardway if (width == 0 || width > sizeof (buf) - 1) #else /* size_t is unsigned, hence this optimisation */ if (width - 1 > sizeof (buf) - 2) #endif { width_left = width - (sizeof (buf) - 1); width = sizeof (buf) - 1; } flags |= SIGNOK | NDIGITS | DPTOK | EXPOK; zeroes = 0; exp_adjust = 0; for (p = buf; width; ) { c = *fp->_p; /* * This code mimicks the integer conversion * code, but is much simpler. */ switch (c) { case '0': if (flags & NDIGITS) { flags &= ~SIGNOK; zeroes++; if (width_left) { width_left--; width++; } goto fskip; } /* Fall through. */ case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (nancount + infcount == 0) { flags &= ~(SIGNOK | NDIGITS); goto fok; } break; /* Chars a, e and f have various special meanings apart from their hex value. They are handled separately, see below. */ case 'b': case 'B': case 'c': case 'C': case 'd': case 'D': if ((flags & HEXFLT) && nancount + infcount == 0) { flags &= ~(SIGNOK | NDIGITS); goto fok; } break; case 'x': case 'X': /* Did we have exactly one leading zero yet? */ if ((flags & (SIGNOK | NDIGITS | HEXFLT)) == NDIGITS && zeroes == 1) { flags |= HEXFLT; flags &= ~NDIGITS; /* We skipped the first zero, so we have to add it now to the buffer. */ *p++ = '0'; width--; zeroes = 0; goto fok; } break; case '+': case '-': if (flags & SIGNOK) { flags &= ~SIGNOK; goto fok; } break; case 'n': case 'N': if (nancount == 0 && zeroes == 0 && (flags & (NDIGITS | DPTOK | EXPOK)) == (NDIGITS | DPTOK | EXPOK)) { flags &= ~(SIGNOK | DPTOK | EXPOK | NDIGITS); nancount = 1; goto fok; } if (nancount == 2) { nancount = 3; goto fok; } if (infcount == 1 || infcount == 4) { infcount++; goto fok; } break; case 'a': case 'A': if ((flags & HEXFLT) && nancount + infcount == 0) { flags &= ~(SIGNOK | NDIGITS); goto fok; } if (nancount == 1) { nancount = 2; goto fok; } break; case 'i': case 'I': if (infcount == 0 && zeroes == 0 && (flags & (NDIGITS | DPTOK | EXPOK)) == (NDIGITS | DPTOK | EXPOK)) { flags &= ~(SIGNOK | DPTOK | EXPOK | NDIGITS); infcount = 1; goto fok; } if (infcount == 3 || infcount == 5) { infcount++; goto fok; } break; case 'f': case 'F': if ((flags & HEXFLT) && nancount + infcount == 0) { flags &= ~(SIGNOK | NDIGITS); goto fok; } if (infcount == 2) { infcount = 3; goto fok; } break; case 't': case 'T': if (infcount == 6) { infcount = 7; goto fok; } break; case 'y': case 'Y': if (infcount == 7) { infcount = 8; goto fok; } break; case 'p': case 'P': /* p is the exponent marker in hex case. */ if (!(flags & HEXFLT)) break; goto fexp; case 'e': case 'E': /* e is just a digit in hex case, not the exponent marker. */ if (flags & HEXFLT) { if (nancount + infcount == 0) { flags &= ~(SIGNOK | NDIGITS); goto fok; } break; } fexp: /* no exponent without some digits */ if ((flags & (NDIGITS | EXPOK)) == EXPOK || ((flags & EXPOK) && zeroes)) { if (! (flags & DPTOK)) { exp_adjust = zeroes - leading_zeroes; exp_start = p; } flags = (flags & ~(EXPOK | DPTOK | HEXFLT)) | SIGNOK | NDIGITS; zeroes = 0; goto fok; } break; default: #ifndef _MB_CAPABLE if ((unsigned char) c == (unsigned char) decpt[0] && (flags & DPTOK)) { flags &= ~(SIGNOK | DPTOK); leading_zeroes = zeroes; goto fok; } break; #else if (flags & DPTOK) { while ((unsigned char) c == (unsigned char) decpt[decptpos]) { if (decpt[++decptpos] == '\0') { /* We read the complete decpt seq. */ flags &= ~(SIGNOK | DPTOK); leading_zeroes = zeroes; p = stpncpy (p, decpt, decptpos); decptpos = 0; goto fskip; } ++nread; if (--fp->_r > 0) fp->_p++; else if (__srefill_r (rptr, fp)) break; /* EOF */ c = *fp->_p; } if (decptpos > 0) { /* We read part of a multibyte decimal point, but the rest is invalid or we're at EOF, so back off. */ while (decptpos-- > 0) { _ungetc_r (rptr, (unsigned char) decpt[decptpos], fp); --nread; } } } break; #endif } break; fok: *p++ = c; fskip: width--; ++nread; if (--fp->_r > 0) fp->_p++; else if (__srefill_r (rptr, fp)) break; /* EOF */ } if (zeroes) flags &= ~NDIGITS; /* We may have a 'N' or possibly even [sign] 'N' 'a' as the start of 'NaN', only to run out of chars before it was complete (or having encountered a non-matching char). So check here if we have an outstanding nancount, and if so put back the chars we did swallow and treat as a failed match. FIXME - we still don't handle NAN([0xdigits]). */ if (nancount - 1U < 2U) /* nancount && nancount < 3 */ { /* Newlib's ungetc works even if we called __srefill in the middle of a partial parse, but POSIX does not guarantee that in all implementations of ungetc. */ while (p > buf) { _ungetc_r (rptr, *--p, fp); /* [-+nNaA] */ --nread; } goto match_failure; } /* Likewise for 'inf' and 'infinity'. But be careful that 'infinite' consumes only 3 characters, leaving the stream at the second 'i'. */ if (infcount - 1U < 7U) /* infcount && infcount < 8 */ { if (infcount >= 3) /* valid 'inf', but short of 'infinity' */ while (infcount-- > 3) { _ungetc_r (rptr, *--p, fp); /* [iInNtT] */ --nread; } else { while (p > buf) { _ungetc_r (rptr, *--p, fp); /* [-+iInN] */ --nread; } goto match_failure; } } /* * If no digits, might be missing exponent digits * (just give back the exponent) or might be missing * regular digits, but had sign and/or decimal point. */ if (flags & NDIGITS) { if (flags & EXPOK) { /* no digits at all */ while (p > buf) { _ungetc_r (rptr, *--p, fp); /* [-+.] */ --nread; } goto match_failure; } /* just a bad exponent (e and maybe sign) */ c = *--p; --nread; if (c != 'e' && c != 'E') { _ungetc_r (rptr, c, fp); /* [-+] */ c = *--p; --nread; } _ungetc_r (rptr, c, fp); /* [eE] */ } if ((flags & SUPPRESS) == 0) { double res = 0; #ifdef _NO_LONGDBL #define QUAD_RES res; #else /* !_NO_LONG_DBL */ long double qres = 0; #define QUAD_RES qres; #endif /* !_NO_LONG_DBL */ long new_exp = 0; *p = 0; if ((flags & (DPTOK | EXPOK)) == EXPOK) { exp_adjust = zeroes - leading_zeroes; new_exp = -exp_adjust; exp_start = p; } else if (exp_adjust) new_exp = strtol ((exp_start + 1), NULL, 10) - exp_adjust; if (exp_adjust) { /* If there might not be enough space for the new exponent, truncate some trailing digits to make room. */ if (exp_start >= buf + sizeof (buf) - MAX_LONG_LEN) exp_start = buf + sizeof (buf) - MAX_LONG_LEN - 1; sprintf (exp_start, "e%ld", new_exp); } /* FIXME: Is that still true? Current strtold routine is markedly slower than strtod. Only use it if we have a long double result. */ #ifndef _NO_LONGDBL /* !_NO_LONGDBL */ if (flags & LONGDBL) qres = strtold (buf, NULL); else #endif res = strtod (buf, NULL); if (flags & LONG) { dp = GET_ARG (N, ap, double *); *dp = res; } else if (flags & LONGDBL) { ldp = GET_ARG (N, ap, _LONG_DOUBLE *); *ldp = (_LONG_DOUBLE) QUAD_RES; } else { flp = GET_ARG (N, ap, float *); if (isnan (res)) *flp = nanf (""); else *flp = res; } nassigned++; } break; } #endif /* FLOATING_POINT */ } } input_failure: /* On read failure, return EOF failure regardless of matches; errno should have been set prior to here. On EOF failure (including invalid format string), return EOF if no matches yet, else number of matches made prior to failure. */ nassigned = nassigned && !(fp->_flags & __SERR) ? nassigned : EOF; match_failure: all_done: /* Return number of matches, which can be 0 on match failure. */ _newlib_flockfile_end (fp); #ifdef _WANT_IO_POSIX_EXTENSIONS free_m_ptr (); #endif return nassigned; } #ifndef _NO_POS_ARGS /* Process all intermediate arguments. Fortunately, with scanf, all intermediate arguments are sizeof(void*), so we don't need to scan ahead in the format string. */ static void * get_arg (int n, va_list *ap, int *numargs_p, void **args) { int numargs = *numargs_p; while (n >= numargs) args[numargs++] = va_arg (*ap, void *); *numargs_p = numargs; return args[n]; } #endif /* !_NO_POS_ARGS */ picolibc-1.7.4/newlib/libc/stdio/vfwprintf.c000066400000000000000000001466631414576234500210460ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * This code is derived from software contributed to Berkeley by * Chris Torek. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* FUNCTION <>, <>, <>---wide character format argument list INDEX vfwprintf INDEX _vfwprintf_r INDEX vwprintf INDEX _vwprintf_r INDEX vswprintf INDEX _vswprintf_r SYNOPSIS #include #include #include int vwprintf(const wchar_t *__restrict <[fmt]>, va_list <[list]>); int vfwprintf(FILE *__restrict <[fp]>, const wchar_t *__restrict <[fmt]>, va_list <[list]>); int vswprintf(wchar_t * __restrict <[str]>, size_t <[size]>, const wchar_t *__ restrict <[fmt]>, va_list <[list]>); int _vwprintf_r(struct _reent *<[reent]>, const wchar_t *<[fmt]>, va_list <[list]>); int _vfwprintf_r(struct _reent *<[reent]>, FILE *<[fp]>, const wchar_t *<[fmt]>, va_list <[list]>); int _vswprintf_r(struct _reent *<[reent]>, wchar_t *<[str]>, size_t <[size]>, const wchar_t *<[fmt]>, va_list <[list]>); DESCRIPTION <>, <> and <> are (respectively) variants of <>, <> and <>. They differ only in allowing their caller to pass the variable argument list as a <> object (initialized by <>) rather than directly accepting a variable number of arguments. The caller is responsible for calling <>. <<_vwprintf_r>>, <<_vfwprintf_r>> and <<_vswprintf_r>> are reentrant versions of the above. RETURNS The return values are consistent with the corresponding functions. PORTABILITY POSIX-1.2008 with extensions; C99 (compliant except for POSIX extensions). Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. SEEALSO <>, <> and <>. */ /* * Actual wprintf innards. * * This code is large and complicated... */ #define _DEFAULT_SOURCE #include #ifdef INTEGER_ONLY # define VFWPRINTF vfiwprintf # ifdef STRING_ONLY # define _VFWPRINTF_R _svfiwprintf_r # else # define _VFWPRINTF_R _vfiwprintf_r # endif #else # define VFWPRINTF vfwprintf # ifdef STRING_ONLY # define _VFWPRINTF_R _svfwprintf_r # else # define _VFWPRINTF_R _vfwprintf_r # endif # ifndef NO_FLOATING_POINT # define FLOATING_POINT # endif #endif #define _NO_POS_ARGS #ifdef _WANT_IO_POS_ARGS # undef _NO_POS_ARGS #endif #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include #include #include #include #include "local.h" #include "fvwrite.h" #include "vfieeefp.h" #ifdef __HAVE_LOCALE_INFO_EXTENDED__ #include "../locale/setlocale.h" #endif /* Currently a test is made to see if long double processing is warranted. This could be changed in the future should the __ldtoa code be preferred over __dtoa. */ #define _NO_LONGDBL #if defined _WANT_IO_LONG_DOUBLE && (LDBL_MANT_DIG > DBL_MANT_DIG) #undef _NO_LONGDBL #endif #define _NO_LONGLONG #if defined _WANT_IO_LONG_LONG \ && (defined __GNUC__ || __STDC_VERSION__ >= 199901L) # undef _NO_LONGLONG #endif int _VFWPRINTF_R (struct _reent *, FILE *, const wchar_t *, va_list); /* Defined in vfprintf.c. */ #ifdef _FVWRITE_IN_STREAMIO # ifdef STRING_ONLY # define __SPRINT __ssprint_r # else # define __SPRINT __sprint_r # endif int __SPRINT (struct _reent *, FILE *, register struct __suio *); #else # ifdef STRING_ONLY # define __SPRINT __ssputs_r # else # define __SPRINT __sfputs_r # endif int __SPRINT (struct _reent *, FILE *, const char *, size_t); #endif #ifndef STRING_ONLY #ifdef _UNBUF_STREAM_OPT /* * Helper function for `fprintf to unbuffered unix file': creates a * temporary buffer. We only work on write-only files; this avoids * worries about ungetc buffers and so forth. */ static int __sbwprintf (struct _reent *rptr, register FILE *fp, const wchar_t *fmt, va_list ap) { int ret; FILE fake; unsigned char buf[BUFSIZ]; /* copy the important variables */ fake._flags = fp->_flags & ~__SNBF; fake._flags2 = fp->_flags2; fake._file = fp->_file; fake._cookie = fp->_cookie; fake._write = fp->_write; /* set up the buffer */ fake._bf._base = fake._p = buf; fake._bf._size = fake._w = sizeof (buf); fake._lbfsize = 0; /* not actually used, but Just In Case */ #ifndef __SINGLE_THREAD__ __lock_init_recursive (fake._lock); #endif /* do the work, then copy any error status */ ret = _VFWPRINTF_R (rptr, &fake, fmt, ap); if (ret >= 0 && _fflush_r (rptr, &fake)) ret = EOF; if (fake._flags & __SERR) fp->_flags |= __SERR; #ifndef __SINGLE_THREAD__ __lock_close_recursive (fake._lock); #endif return (ret); } #endif /* _UNBUF_STREAM_OPT */ #endif /* !STRING_ONLY */ #if defined (FLOATING_POINT) || defined (_WANT_IO_C99_FORMATS) # include #endif #ifdef FLOATING_POINT # include /* For %La, an exponent of 15 bits occupies the exponent character, a sign, and up to 5 digits. */ # define MAXEXPLEN 7 # define DEFPREC 6 # ifdef _NO_LONGDBL # define _PRINTF_FLOAT_TYPE double # define _DTOA __dtoa # define FREXP frexp # else /* !_NO_LONGDBL */ extern int _ldcheck (_LONG_DOUBLE *); # define _PRINTF_FLOAT_TYPE _LONG_DOUBLE # define _DTOA __ldtoa /* FIXME - frexpl is not yet supported; and cvt infloops if (double)f converts a finite value into infinity. */ /* # define FREXP frexpl */ # define FREXP(f,e) ((_LONG_DOUBLE) frexp ((double)f, e)) # endif /* !_NO_LONGDBL */ static wchar_t *wcvt(struct _reent *, _PRINTF_FLOAT_TYPE, int, int, wchar_t *, int *, int, int *, wchar_t *, int); static int wexponent(wchar_t *, int, int); #endif /* FLOATING_POINT */ /* BUF must be big enough for the maximum %#llo (assuming long long is at most 64 bits, this would be 23 characters), the maximum multibyte character %C, and the maximum default precision of %La (assuming long double is at most 128 bits with 113 bits of mantissa, this would be 29 characters). %e, %f, and %g use reentrant storage shared with mprec. All other formats that use buf get by with fewer characters. Making BUF slightly bigger reduces the need for malloc in %.*a and %ls/%S, when large precision or long strings are processed. The bigger size of 100 bytes is used on systems which allow number strings using the locale's grouping character. Since that's a multibyte value, we should use a conservative value. */ #ifdef _WANT_IO_C99_FORMATS #define BUF 100 #else #define BUF 40 #endif #if defined _MB_CAPABLE && MB_LEN_MAX > BUF # undef BUF # define BUF MB_LEN_MAX #endif #ifndef _NO_LONGLONG # define quad_t long long # define u_quad_t unsigned long long #else # define quad_t long # define u_quad_t unsigned long #endif typedef quad_t * quad_ptr_t; typedef void *void_ptr_t; typedef char * char_ptr_t; typedef wchar_t* wchar_ptr_t; typedef long * long_ptr_t; typedef int * int_ptr_t; typedef short * short_ptr_t; #ifndef _NO_POS_ARGS # ifdef NL_ARGMAX # define MAX_POS_ARGS NL_ARGMAX # else # define MAX_POS_ARGS 32 # endif union arg_val { int val_int; u_int val_u_int; long val_long; u_long val_u_long; float val_float; double val_double; _LONG_DOUBLE val__LONG_DOUBLE; int_ptr_t val_int_ptr_t; short_ptr_t val_short_ptr_t; long_ptr_t val_long_ptr_t; char_ptr_t val_char_ptr_t; wchar_ptr_t val_wchar_ptr_t; quad_ptr_t val_quad_ptr_t; void_ptr_t val_void_ptr_t; quad_t val_quad_t; u_quad_t val_u_quad_t; wint_t val_wint_t; }; static union arg_val * get_arg (struct _reent *data, int n, wchar_t *fmt, va_list *ap, int *numargs, union arg_val *args, int *arg_type, wchar_t **last_fmt); #endif /* !_NO_POS_ARGS */ /* * Macros for converting digits to letters and vice versa */ #define to_digit(c) ((c) - L'0') #define is_digit(c) ((unsigned)to_digit (c) <= 9) #define to_char(n) ((n) + L'0') /* * Flags used during conversion. */ #define ALT 0x001 /* alternate form */ #define HEXPREFIX 0x002 /* add 0x or 0X prefix */ #define LADJUST 0x004 /* left adjustment */ #define LONGDBL 0x008 /* long double */ #define LONGINT 0x010 /* long integer */ #ifndef _NO_LONGLONG # define QUADINT 0x020 /* quad integer */ #else /* ifdef _NO_LONGLONG, make QUADINT equivalent to LONGINT, so that %lld behaves the same as %ld, not as %d, as expected if: sizeof (long long) = sizeof long > sizeof int */ # define QUADINT LONGINT #endif #define SHORTINT 0x040 /* short integer */ #define ZEROPAD 0x080 /* zero (as opposed to blank) pad */ #define FPT 0x100 /* Floating point number */ #ifdef _WANT_IO_C99_FORMATS # define CHARINT 0x200 /* char as integer */ #else /* define as 0, to make SARG and UARG occupy fewer instructions */ # define CHARINT 0 #endif #ifdef _WANT_IO_C99_FORMATS # define GROUPING 0x400 /* use grouping ("'" flag) */ #endif #ifndef STRING_ONLY int VFWPRINTF (FILE *__restrict fp, const wchar_t *__restrict fmt0, va_list ap) { int result; result = _VFWPRINTF_R (_REENT, fp, fmt0, ap); return result; } #endif /* STRING_ONLY */ int _VFWPRINTF_R (struct _reent *data, FILE * fp, const wchar_t *fmt0, va_list ap) { register wchar_t *fmt; /* format string */ register wchar_t ch; /* character from fmt */ register int n, m; /* handy integers (short term usage) */ register wchar_t *cp; /* handy char pointer (short term usage) */ register int flags; /* flags as above */ #ifndef _NO_POS_ARGS wchar_t *fmt_anchor; /* current format spec being processed */ int N; /* arg number */ int arg_index; /* index into args processed directly */ int numargs; /* number of varargs read */ wchar_t *saved_fmt; /* saved fmt pointer */ union arg_val args[MAX_POS_ARGS]; int arg_type[MAX_POS_ARGS]; int is_pos_arg; /* is current format positional? */ int old_is_pos_arg; /* is current format positional? */ #endif int ret; /* return value accumulator */ int width; /* width from format (%8d), or 0 */ int prec; /* precision from format (%.3d), or -1 */ wchar_t sign; /* sign prefix (' ', '+', '-', or \0) */ #ifdef _WANT_IO_C99_FORMATS /* locale specific numeric grouping */ wchar_t thousands_sep = L'\0'; const char *grouping = NULL; #endif #if defined (_MB_CAPABLE) && !defined (__HAVE_LOCALE_INFO_EXTENDED__) \ && (defined (FLOATING_POINT) || defined (_WANT_IO_C99_FORMATS)) mbstate_t state; /* mbtowc calls from library must not change state */ #endif #ifdef FLOATING_POINT wchar_t decimal_point; wchar_t softsign; /* temporary negative sign for floats */ union { int i; _PRINTF_FLOAT_TYPE fp; } _double_ = {0}; # define _fpvalue (_double_.fp) int expt; /* integer value of exponent */ int expsize = 0; /* character count for expstr */ wchar_t expstr[MAXEXPLEN]; /* buffer for exponent string */ int lead; /* sig figs before decimal or group sep */ #endif /* FLOATING_POINT */ #if defined (FLOATING_POINT) || defined (_WANT_IO_C99_FORMATS) int ndig = 0; /* actual number of digits returned by cvt */ #endif #if defined (FLOATING_POINT) && defined (_WANT_IO_C99_FORMATS) int nseps; /* number of group separators with ' */ int nrepeats; /* number of repeats of the last group */ #endif u_quad_t _uquad; /* integer arguments %[diouxX] */ enum { OCT, DEC, HEX } base;/* base for [diouxX] conversion */ int dprec; /* a copy of prec if [diouxX], 0 otherwise */ int realsz; /* field size expanded by dprec */ int size = 0; /* size of converted field or string */ wchar_t *xdigs = NULL; /* digits for [xX] conversion */ #ifdef _FVWRITE_IN_STREAMIO #define NIOV 8 struct __suio uio; /* output information: summary */ struct __siov iov[NIOV];/* ... and individual io vectors */ register struct __siov *iovp;/* for PRINT macro */ #endif wchar_t buf[BUF]; /* space for %c, %ls/%S, %[diouxX], %[aA] */ wchar_t ox[2]; /* space for 0x hex-prefix */ wchar_t *malloc_buf = NULL;/* handy pointer for malloced buffers */ /* * Choose PADSIZE to trade efficiency vs. size. If larger printf * fields occur frequently, increase PADSIZE and make the initialisers * below longer. */ #define PADSIZE 16 /* pad chunk size */ static const wchar_t blanks[PADSIZE] = {L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' ', L' ',L' ',L' ',L' ',L' ',L' ',L' ',L' '}; static const wchar_t zeroes[PADSIZE] = {L'0',L'0',L'0',L'0',L'0',L'0',L'0',L'0', L'0',L'0',L'0',L'0',L'0',L'0',L'0',L'0'}; #ifdef FLOATING_POINT #ifdef _MB_CAPABLE #ifdef __HAVE_LOCALE_INFO_EXTENDED__ decimal_point = *__get_current_numeric_locale ()->wdecimal_point; #else { size_t nconv; memset (&state, '\0', sizeof (state)); nconv = mbrtowc (&decimal_point, localeconv ()->decimal_point, MB_CUR_MAX, &state); if (nconv == (size_t) -1 || nconv == (size_t) -2) decimal_point = L'.'; } #endif #else decimal_point = (wchar_t) *localeconv ()->decimal_point; #endif #endif /* * BEWARE, these `goto error' on error, and PAD uses `n'. */ #ifdef _FVWRITE_IN_STREAMIO #define PRINT(ptr, len) { \ iovp->iov_base = (char *) (ptr); \ iovp->iov_len = (len) * sizeof (wchar_t); \ uio.uio_resid += (len) * sizeof (wchar_t); \ iovp++; \ if (++uio.uio_iovcnt >= NIOV) { \ if (__SPRINT(data, fp, &uio)) \ goto error; \ iovp = iov; \ } \ } #define PAD(howmany, with) { \ if ((n = (howmany)) > 0) { \ while (n > PADSIZE) { \ PRINT (with, PADSIZE); \ n -= PADSIZE; \ } \ PRINT (with, n); \ } \ } #define PRINTANDPAD(p, ep, len, with) { \ int n = (ep) - (p); \ if (n > (len)) \ n = (len); \ if (n > 0) \ PRINT((p), n); \ PAD((len) - (n > 0 ? n : 0), (with)); \ } #define FLUSH() { \ if (uio.uio_resid && __SPRINT(data, fp, &uio)) \ goto error; \ uio.uio_iovcnt = 0; \ iovp = iov; \ } #else #define PRINT(ptr, len) { \ if (__SPRINT (data, fp, (const char *)(ptr), (len) * sizeof (wchar_t)) == EOF) \ goto error; \ } #define PAD(howmany, with) { \ if ((n = (howmany)) > 0) { \ while (n > PADSIZE) { \ PRINT (with, PADSIZE); \ n -= PADSIZE; \ } \ PRINT (with, n); \ } \ } #define PRINTANDPAD(p, ep, len, with) { \ int n = (ep) - (p); \ if (n > (len)) \ n = (len); \ if (n > 0) \ PRINT((p), n); \ PAD((len) - (n > 0 ? n : 0), (with)); \ } #define FLUSH() #endif /* Macros to support positional arguments */ #ifndef _NO_POS_ARGS # define GET_ARG(n, ap, type) \ (is_pos_arg \ ? (n < numargs \ ? args[n].val_##type \ : get_arg (data, n, fmt_anchor, &ap, &numargs, args, \ arg_type, &saved_fmt)->val_##type) \ : (arg_index++ < numargs \ ? args[n].val_##type \ : (numargs < MAX_POS_ARGS \ ? args[numargs++].val_##type = va_arg (ap, type) \ : va_arg (ap, type)))) #else # define GET_ARG(n, ap, type) (va_arg (ap, type)) #endif /* * To extend shorts properly, we need both signed and unsigned * argument extraction methods. */ #ifndef _NO_LONGLONG #define SARG() \ (flags&QUADINT ? GET_ARG (N, ap, quad_t) : \ flags&LONGINT ? GET_ARG (N, ap, long) : \ flags&SHORTINT ? (long)(short)GET_ARG (N, ap, int) : \ flags&CHARINT ? (long)(signed char)GET_ARG (N, ap, int) : \ (long)GET_ARG (N, ap, int)) #define UARG() \ (flags&QUADINT ? GET_ARG (N, ap, u_quad_t) : \ flags&LONGINT ? GET_ARG (N, ap, u_long) : \ flags&SHORTINT ? (u_long)(u_short)GET_ARG (N, ap, int) : \ flags&CHARINT ? (u_long)(unsigned char)GET_ARG (N, ap, int) : \ (u_long)GET_ARG (N, ap, u_int)) #else #define SARG() \ (flags&LONGINT ? GET_ARG (N, ap, long) : \ flags&SHORTINT ? (long)(short)GET_ARG (N, ap, int) : \ flags&CHARINT ? (long)(signed char)GET_ARG (N, ap, int) : \ (long)GET_ARG (N, ap, int)) #define UARG() \ (flags&LONGINT ? GET_ARG (N, ap, u_long) : \ flags&SHORTINT ? (u_long)(u_short)GET_ARG (N, ap, int) : \ flags&CHARINT ? (u_long)(unsigned char)GET_ARG (N, ap, int) : \ (u_long)GET_ARG (N, ap, u_int)) #endif #ifndef STRING_ONLY /* Initialize std streams if not dealing with sprintf family. */ CHECK_INIT (data, fp); _newlib_flockfile_start (fp); ORIENT(fp, 1); /* sorry, fwprintf(read_only_file, "") returns EOF, not 0 */ if (cantwrite (data, fp)) { _newlib_flockfile_exit (fp); return (EOF); } #ifdef _UNBUF_STREAM_OPT /* optimise fwprintf(stderr) (and other unbuffered Unix files) */ if ((fp->_flags & (__SNBF|__SWR|__SRW)) == (__SNBF|__SWR) && fp->_file >= 0) { _newlib_flockfile_exit (fp); return (__sbwprintf (data, fp, fmt0, ap)); } #endif #else /* STRING_ONLY */ /* Create initial buffer if we are called by asprintf family. */ if (fp->_flags & __SMBF && !fp->_bf._base) { fp->_bf._base = fp->_p = malloc (64); if (!fp->_p) { __errno_r(data) = ENOMEM; return EOF; } fp->_bf._size = 64; } #endif /* STRING_ONLY */ fmt = (wchar_t *)fmt0; #ifdef _FVWRITE_IN_STREAMIO uio.uio_iov = iovp = iov; uio.uio_resid = 0; uio.uio_iovcnt = 0; #endif ret = 0; #ifndef _NO_POS_ARGS arg_index = 0; saved_fmt = NULL; arg_type[0] = -1; numargs = 0; is_pos_arg = 0; #endif /* * Scan the format for conversions (`%' character). */ for (;;) { cp = fmt; while (*fmt != L'\0' && *fmt != L'%') ++fmt; if ((m = fmt - cp) != 0) { PRINT (cp, m); ret += m; } if (*fmt == L'\0') goto done; #ifndef _NO_POS_ARGS fmt_anchor = fmt; #endif fmt++; /* skip over '%' */ flags = 0; dprec = 0; width = 0; prec = -1; sign = L'\0'; #ifdef FLOATING_POINT lead = 0; #ifdef _WANT_IO_C99_FORMATS nseps = nrepeats = 0; #endif #endif #ifndef _NO_POS_ARGS N = arg_index; is_pos_arg = 0; #endif rflag: ch = *fmt++; reswitch: switch (ch) { #ifdef _WANT_IO_C99_FORMATS case L'\'': #ifdef _MB_CAPABLE #ifdef __HAVE_LOCALE_INFO_EXTENDED__ thousands_sep = *__get_current_numeric_locale ()->wthousands_sep; #else { size_t nconv; memset (&state, '\0', sizeof (state)); nconv = mbrtowc (&thousands_sep, localeconv ()->thousands_sep, MB_CUR_MAX, &state); if (nconv == (size_t) -1 || nconv == (size_t) -2) thousands_sep = L'\0'; } #endif #else thousands_sep = (wchar_t) *localeconv ()->thousands_sep; #endif grouping = localeconv ()->grouping; if (thousands_sep && grouping && *grouping) flags |= GROUPING; goto rflag; #endif case L' ': /* * ``If the space and + flags both appear, the space * flag will be ignored.'' * -- ANSI X3J11 */ if (!sign) sign = L' '; goto rflag; case L'#': flags |= ALT; goto rflag; case L'*': #ifndef _NO_POS_ARGS /* we must check for positional arg used for dynamic width */ n = N; old_is_pos_arg = is_pos_arg; is_pos_arg = 0; if (is_digit (*fmt)) { wchar_t *old_fmt = fmt; n = 0; ch = *fmt++; do { n = 10 * n + to_digit (ch); ch = *fmt++; } while (is_digit (ch)); if (ch == L'$') { if (n <= MAX_POS_ARGS) { n -= 1; is_pos_arg = 1; } else goto error; } else { fmt = old_fmt; goto rflag; } } #endif /* !_NO_POS_ARGS */ /* * ``A negative field width argument is taken as a * - flag followed by a positive field width.'' * -- ANSI X3J11 * They don't exclude field widths read from args. */ width = GET_ARG (n, ap, int); #ifndef _NO_POS_ARGS is_pos_arg = old_is_pos_arg; #endif if (width >= 0) goto rflag; width = -width; FALLTHROUGH; case L'-': flags |= LADJUST; goto rflag; case L'+': sign = L'+'; goto rflag; case L'.': if ((ch = *fmt++) == L'*') { #ifndef _NO_POS_ARGS /* we must check for positional arg used for dynamic width */ n = N; old_is_pos_arg = is_pos_arg; is_pos_arg = 0; if (is_digit (*fmt)) { wchar_t *old_fmt = fmt; n = 0; ch = *fmt++; do { n = 10 * n + to_digit (ch); ch = *fmt++; } while (is_digit (ch)); if (ch == L'$') { if (n <= MAX_POS_ARGS) { n -= 1; is_pos_arg = 1; } else goto error; } else { fmt = old_fmt; goto rflag; } } #endif /* !_NO_POS_ARGS */ prec = GET_ARG (n, ap, int); #ifndef _NO_POS_ARGS is_pos_arg = old_is_pos_arg; #endif if (prec < 0) prec = -1; goto rflag; } n = 0; while (is_digit (ch)) { n = 10 * n + to_digit (ch); ch = *fmt++; } prec = n < 0 ? -1 : n; goto reswitch; case L'0': /* * ``Note that 0 is taken as a flag, not as the * beginning of a field width.'' * -- ANSI X3J11 */ flags |= ZEROPAD; goto rflag; case L'1': case L'2': case L'3': case L'4': case L'5': case L'6': case L'7': case L'8': case L'9': n = 0; do { n = 10 * n + to_digit (ch); ch = *fmt++; } while (is_digit (ch)); #ifndef _NO_POS_ARGS if (ch == L'$') { if (n <= MAX_POS_ARGS) { N = n - 1; is_pos_arg = 1; goto rflag; } else goto error; } #endif /* !_NO_POS_ARGS */ width = n; goto reswitch; #ifdef FLOATING_POINT case L'L': flags |= LONGDBL; goto rflag; #endif case L'h': #ifdef _WANT_IO_C99_FORMATS if (*fmt == L'h') { fmt++; flags |= CHARINT; } else #endif flags |= SHORTINT; goto rflag; case L'l': #if defined _WANT_IO_C99_FORMATS || !defined _NO_LONGLONG if (*fmt == L'l') { fmt++; flags |= QUADINT; } else #endif flags |= LONGINT; goto rflag; case L'q': /* GNU extension */ flags |= QUADINT; goto rflag; #ifdef _WANT_IO_C99_FORMATS case L'j': if (sizeof (intmax_t) == sizeof (long)) flags |= LONGINT; else flags |= QUADINT; goto rflag; case L'z': if (sizeof (size_t) < sizeof (int)) /* POSIX states size_t is 16 or more bits, as is short. */ flags |= SHORTINT; else if (sizeof (size_t) == sizeof (int)) /* no flag needed */; else if (sizeof (size_t) <= sizeof (long)) flags |= LONGINT; else /* POSIX states that at least one programming environment must support size_t no wider than long, but that means other environments can have size_t as wide as long long. */ flags |= QUADINT; goto rflag; case L't': if (sizeof (ptrdiff_t) < sizeof (int)) /* POSIX states ptrdiff_t is 16 or more bits, as is short. */ flags |= SHORTINT; else if (sizeof (ptrdiff_t) == sizeof (int)) /* no flag needed */; else if (sizeof (ptrdiff_t) <= sizeof (long)) flags |= LONGINT; else /* POSIX states that at least one programming environment must support ptrdiff_t no wider than long, but that means other environments can have ptrdiff_t as wide as long long. */ flags |= QUADINT; goto rflag; case L'C': /* POSIX extension */ #endif /* _WANT_IO_C99_FORMATS */ case L'c': cp = buf; if (ch == L'c' && !(flags & LONGINT)) { wint_t wc = btowc ((int) GET_ARG (N, ap, int)); if (wc == WEOF) { fp->_flags |= __SERR; goto error; } cp[0] = (wchar_t) wc; } else { cp[0] = GET_ARG (N, ap, int); } cp[1] = L'\0'; size = 1; sign = L'\0'; break; case L'd': case L'i': _uquad = SARG (); #ifndef _NO_LONGLONG if ((quad_t)_uquad < 0) #else if ((long) _uquad < 0) #endif { _uquad = -_uquad; sign = L'-'; } base = DEC; goto number; #ifdef FLOATING_POINT # ifdef _WANT_IO_C99_FORMATS case L'a': case L'A': case L'F': # endif case L'e': case L'E': case L'f': case L'g': case L'G': # ifdef _NO_LONGDBL if (flags & LONGDBL) { _fpvalue = (double) GET_ARG (N, ap, _LONG_DOUBLE); } else { _fpvalue = GET_ARG (N, ap, double); } /* do this before tricky precision changes If the output is infinite or NaN, leading zeros are not permitted. Otherwise, scanf could not read what printf wrote. */ if (isinf (_fpvalue)) { if (_fpvalue < 0) sign = '-'; if (ch <= L'G') /* 'A', 'E', 'F', or 'G' */ cp = L"INF"; else cp = L"inf"; size = 3; flags &= ~ZEROPAD; break; } if (isnan (_fpvalue)) { if (signbit (_fpvalue)) sign = L'-'; if (ch <= L'G') /* 'A', 'E', 'F', or 'G' */ cp = L"NAN"; else cp = L"nan"; size = 3; flags &= ~ZEROPAD; break; } # else /* !_NO_LONGDBL */ if (flags & LONGDBL) { _fpvalue = GET_ARG (N, ap, _LONG_DOUBLE); } else { _fpvalue = (_LONG_DOUBLE)GET_ARG (N, ap, double); } /* do this before tricky precision changes */ expt = _ldcheck (&_fpvalue); if (expt == 2) { if (_fpvalue < 0) sign = L'-'; if (ch <= L'G') /* 'A', 'E', 'F', or 'G' */ cp = L"INF"; else cp = L"inf"; size = 3; flags &= ~ZEROPAD; break; } if (expt == 1) { if (signbit (_fpvalue)) sign = L'-'; if (ch <= L'G') /* 'A', 'E', 'F', or 'G' */ cp = L"NAN"; else cp = L"nan"; size = 3; flags &= ~ZEROPAD; break; } # endif /* !_NO_LONGDBL */ cp = buf; # ifdef _WANT_IO_C99_FORMATS if (ch == L'a' || ch == L'A') { ox[0] = L'0'; ox[1] = ch == L'a' ? L'x' : L'X'; flags |= HEXPREFIX; if (prec >= BUF) { if ((malloc_buf = (wchar_t *)malloc ((prec + 1) * sizeof (wchar_t))) == NULL) { fp->_flags |= __SERR; goto error; } cp = malloc_buf; } } else # endif /* _WANT_IO_C99_FORMATS */ if (prec == -1) { prec = DEFPREC; } else if ((ch == L'g' || ch == L'G') && prec == 0) { prec = 1; } flags |= FPT; cp = wcvt (data, _fpvalue, prec, flags, &softsign, &expt, ch, &ndig, cp, BUF); /* If buf is not large enough for the converted wchar_t sequence, call wcvt again with a malloced new buffer. This should happen fairly rarely. */ if (cp == buf && ndig > BUF && malloc_buf == NULL) { if ((malloc_buf = (wchar_t *)malloc (ndig * sizeof (wchar_t))) == NULL) { fp->_flags |= __SERR; goto error; } cp = wcvt (data, _fpvalue, prec, flags, &softsign, &expt, ch, &ndig, malloc_buf, ndig); } if (ch == L'g' || ch == L'G') { if (expt <= -4 || expt > prec) ch -= 2; /* 'e' or 'E' */ else ch = L'g'; } # ifdef _WANT_IO_C99_FORMATS else if (ch == L'F') ch = L'f'; # endif if (ch <= L'e') { /* 'a', 'A', 'e', or 'E' fmt */ --expt; expsize = wexponent (expstr, expt, ch); size = expsize + ndig; if (ndig > 1 || flags & ALT) ++size; # ifdef _WANT_IO_C99_FORMATS flags &= ~GROUPING; # endif } else { if (ch == L'f') { /* f fmt */ if (expt > 0) { size = expt; if (prec || flags & ALT) size += prec + 1; } else /* "0.X" */ size = (prec || flags & ALT) ? prec + 2 : 1; } else if (expt >= ndig) { /* fixed g fmt */ size = expt; if (flags & ALT) ++size; } else size = ndig + (expt > 0 ? 1 : 2 - expt); # ifdef _WANT_IO_C99_FORMATS if ((flags & GROUPING) && expt > 0) { /* space for thousands' grouping */ nseps = nrepeats = 0; lead = expt; while (*grouping != CHAR_MAX) { if (lead <= *grouping) break; lead -= *grouping; if (grouping[1]) { nseps++; grouping++; } else nrepeats++; } size += nseps + nrepeats; } else # endif lead = expt; } if (softsign) sign = L'-'; break; #endif /* FLOATING_POINT */ #ifdef _GLIBC_EXTENSION case L'm': /* GNU extension */ { int dummy; cp = (wchar_t *) _strerror_r (data, __errno_r(data), 1, &dummy); } flags &= ~LONGINT; goto string; #endif case L'n': #ifndef _NO_LONGLONG if (flags & QUADINT) *GET_ARG (N, ap, quad_ptr_t) = ret; else #endif if (flags & LONGINT) *GET_ARG (N, ap, long_ptr_t) = ret; else if (flags & SHORTINT) *GET_ARG (N, ap, short_ptr_t) = ret; #ifdef _WANT_IO_C99_FORMATS else if (flags & CHARINT) *GET_ARG (N, ap, char_ptr_t) = ret; #endif else *GET_ARG (N, ap, int_ptr_t) = ret; continue; /* no output */ case L'o': _uquad = UARG (); base = OCT; #ifdef _WANT_IO_C99_FORMATS flags &= ~GROUPING; #endif goto nosign; case L'p': /* * ``The argument shall be a pointer to void. The * value of the pointer is converted to a sequence * of printable characters, in an implementation- * defined manner.'' * -- ANSI X3J11 */ /* NOSTRICT */ _uquad = (uintptr_t) GET_ARG (N, ap, void_ptr_t); base = HEX; xdigs = L"0123456789abcdef"; flags |= HEXPREFIX; ox[0] = L'0'; ox[1] = ch = L'x'; goto nosign; case L's': #ifdef _WANT_IO_C99_FORMATS case L'S': /* POSIX extension */ #endif cp = GET_ARG (N, ap, wchar_ptr_t); #ifdef _GLIBC_EXTENSION string: #endif sign = '\0'; #ifndef __OPTIMIZE_SIZE__ /* Behavior is undefined if the user passed a NULL string when precision is not 0. However, if we are not optimizing for size, we might as well mirror glibc behavior. */ if (cp == NULL) { cp = L"(null)"; size = ((unsigned) prec > 6U) ? 6 : prec; } else #endif /* __OPTIMIZE_SIZE__ */ #ifdef _MB_CAPABLE if (ch != L'S' && !(flags & LONGINT)) { char *arg = (char *) cp; size_t insize = 0, nchars = 0, nconv = 0; mbstate_t ps; wchar_t *p; if (prec >= 0) { char *p = arg; memset ((void *)&ps, '\0', sizeof (mbstate_t)); while (nchars < (size_t)prec) { nconv = mbrlen (p, MB_CUR_MAX, &ps); if (nconv == 0 || nconv == (size_t)-1 || nconv == (size_t)-2) break; p += nconv; ++nchars; insize += nconv; } if (nconv == (size_t) -1 || nconv == (size_t) -2) { fp->_flags |= __SERR; goto error; } } else insize = strlen(arg); if (insize >= BUF) { if ((malloc_buf = (wchar_t *) malloc ((insize + 1) * sizeof (wchar_t))) == NULL) { fp->_flags |= __SERR; goto error; } cp = malloc_buf; } else cp = buf; memset ((void *)&ps, '\0', sizeof (mbstate_t)); p = cp; while (insize != 0) { nconv = mbrtowc (p, arg, insize, &ps); if (nconv == 0 || nconv == (size_t)-1 || nconv == (size_t)-2) break; ++p; arg += nconv; insize -= nconv; } if (nconv == (size_t) -1 || nconv == (size_t) -2) { fp->_flags |= __SERR; goto error; } *p = L'\0'; size = p - cp; } #else if (ch != L'S' && !(flags & LONGINT)) { char *arg = (char *) cp; size_t insize = 0; if (prec >= 0) { char *p = memchr (arg, '\0', prec); insize = p ? p - arg : prec; } else insize = strlen (arg); if (insize >= BUF) { if ((malloc_buf = (wchar_t *) malloc ((insize + 1) * sizeof (wchar_t))) == NULL) { fp->_flags |= __SERR; goto error; } cp = malloc_buf; } else cp = buf; for (size = 0; (size_t) size < insize; ++size) cp[size] = arg[size]; cp[size] = L'\0'; } #endif /* _MB_CAPABLE */ else if (prec >= 0) { /* * can't use wcslen; can only look for the * NUL in the first `prec' characters, and * strlen () will go further. */ wchar_t *p = wmemchr (cp, L'\0', prec); if (p != NULL) { size = p - cp; if (size > prec) size = prec; } else size = prec; } else size = wcslen (cp); break; case L'u': _uquad = UARG (); base = DEC; goto nosign; case L'X': xdigs = L"0123456789ABCDEF"; goto hex; case L'x': xdigs = L"0123456789abcdef"; hex: _uquad = UARG (); base = HEX; /* leading 0x/X only if non-zero */ if (flags & ALT && _uquad != 0) { ox[0] = L'0'; ox[1] = ch; flags |= HEXPREFIX; } #ifdef _WANT_IO_C99_FORMATS flags &= ~GROUPING; #endif /* unsigned conversions */ nosign: sign = L'\0'; /* * ``... diouXx conversions ... if a precision is * specified, the 0 flag will be ignored.'' * -- ANSI X3J11 */ number: if ((dprec = prec) >= 0) flags &= ~ZEROPAD; /* * ``The result of converting a zero value with an * explicit precision of zero is no characters.'' * -- ANSI X3J11 */ cp = buf + BUF; if (_uquad != 0 || prec != 0) { /* * Unsigned mod is hard, and unsigned mod * by a constant is easier than that by * a variable; hence this switch. */ switch (base) { case OCT: do { *--cp = to_char (_uquad & 7); _uquad >>= 3; } while (_uquad); /* handle octal leading 0 */ if (flags & ALT && *cp != L'0') *--cp = L'0'; break; case DEC: /* many numbers are 1 digit */ if (_uquad < 10) { *--cp = to_char(_uquad); break; } #ifdef _WANT_IO_C99_FORMATS ndig = 0; #endif do { *--cp = to_char (_uquad % 10); #ifdef _WANT_IO_C99_FORMATS ndig++; /* If (*grouping == CHAR_MAX) then no more grouping */ if ((flags & GROUPING) && ndig == *grouping && *grouping != CHAR_MAX && _uquad > 9) { *--cp = thousands_sep; ndig = 0; /* If (grouping[1] == '\0') then we have to use *grouping character (last grouping rule) for all next cases. */ if (grouping[1] != '\0') grouping++; } #endif _uquad /= 10; } while (_uquad != 0); break; case HEX: do { *--cp = xdigs[_uquad & 15]; _uquad >>= 4; } while (_uquad); break; default: cp = L"bug in vfprintf: bad base"; size = wcslen (cp); goto skipsize; } } /* * ...result is to be converted to an 'alternate form'. * For o conversion, it increases the precision to force * the first digit of the result to be a zero." * -- ANSI X3J11 * * To demonstrate this case, compile and run: * printf ("%#.0o",0); */ else if (base == OCT && (flags & ALT)) *--cp = L'0'; size = buf + BUF - cp; skipsize: break; default: /* "%?" prints ?, unless ? is NUL */ if (ch == L'\0') goto done; /* pretend it was %c with argument ch */ cp = buf; *cp = ch; size = 1; sign = L'\0'; break; } /* * All reasonable formats wind up here. At this point, `cp' * points to a string which (if not flags&LADJUST) should be * padded out to `width' places. If flags&ZEROPAD, it should * first be prefixed by any sign or other prefix; otherwise, * it should be blank padded before the prefix is emitted. * After any left-hand padding and prefixing, emit zeroes * required by a decimal [diouxX] precision, then print the * string proper, then emit zeroes required by any leftover * floating precision; finally, if LADJUST, pad with blanks. * If flags&FPT, ch must be in [aAeEfg]. * * Compute actual size, so we know how much to pad. * size excludes decimal prec; realsz includes it. */ realsz = dprec > size ? dprec : size; if (sign) realsz++; if (flags & HEXPREFIX) realsz+= 2; /* right-adjusting blank padding */ if ((flags & (LADJUST|ZEROPAD)) == 0) PAD (width - realsz, blanks); /* prefix */ if (sign) PRINT (&sign, 1); if (flags & HEXPREFIX) PRINT (ox, 2); /* right-adjusting zero padding */ if ((flags & (LADJUST|ZEROPAD)) == ZEROPAD) PAD (width - realsz, zeroes); /* leading zeroes from decimal precision */ PAD (dprec - size, zeroes); /* the string or number proper */ #ifdef FLOATING_POINT if ((flags & FPT) == 0) { PRINT (cp, size); } else { /* glue together f_p fragments */ if (ch >= L'f') { /* 'f' or 'g' */ if (_fpvalue == 0) { /* kludge for __dtoa irregularity */ PRINT (L"0", 1); if (expt < ndig || flags & ALT) { PRINT (&decimal_point, 1); PAD (ndig - 1, zeroes); } } else if (expt <= 0) { PRINT (L"0", 1); if (expt || ndig || flags & ALT) { PRINT (&decimal_point, 1); PAD (-expt, zeroes); PRINT (cp, ndig); } } else { wchar_t *convbuf = cp; PRINTANDPAD(cp, convbuf + ndig, lead, zeroes); cp += lead; #ifdef _WANT_IO_C99_FORMATS if (flags & GROUPING) { while (nseps > 0 || nrepeats > 0) { if (nrepeats > 0) nrepeats--; else { grouping--; nseps--; } PRINT (&thousands_sep, 1); PRINTANDPAD (cp, convbuf + ndig, *grouping, zeroes); cp += *grouping; } if (cp > convbuf + ndig) cp = convbuf + ndig; } #endif if (expt < ndig || flags & ALT) PRINT (&decimal_point, 1); PRINTANDPAD (cp, convbuf + ndig, ndig - expt, zeroes); } } else { /* 'a', 'A', 'e', or 'E' */ if (ndig > 1 || flags & ALT) { PRINT (cp, 1); cp++; PRINT (&decimal_point, 1); if (_fpvalue) { PRINT (cp, ndig - 1); } else /* 0.[0..] */ /* __dtoa irregularity */ PAD (ndig - 1, zeroes); } else /* XeYYY */ PRINT (cp, 1); PRINT (expstr, expsize); } } #else /* !FLOATING_POINT */ PRINT (cp, size); #endif /* left-adjusting padding (always blank) */ if (flags & LADJUST) PAD (width - realsz, blanks); /* finally, adjust ret */ ret += width > realsz ? width : realsz; FLUSH (); /* copy out the I/O vectors */ if (malloc_buf != NULL) { free (malloc_buf); malloc_buf = NULL; } } done: FLUSH (); error: if (malloc_buf != NULL) free (malloc_buf); #ifndef STRING_ONLY _newlib_flockfile_end (fp); #endif return (__sferror (fp) ? EOF : ret); /* NOTREACHED */ } #ifdef FLOATING_POINT /* Using reentrant DATA, convert finite VALUE into a string of digits with no decimal point, using NDIGITS precision and FLAGS as guides to whether trailing zeros must be included. Set *SIGN to nonzero if VALUE was negative. Set *DECPT to the exponent plus one. Set *LENGTH to the length of the returned string. CH must be one of [aAeEfFgG]; different from vfprintf.c:cvt(), the return string lives in BUF regardless of CH. LEN is the length of BUF, except when CH is [aA], in which case LEN is not in use. If BUF is not large enough for the converted string, only the first LEN number of characters will be returned in BUF, but *LENGTH will be set to the full length of the string before the truncation. */ static wchar_t * wcvt(struct _reent *data, _PRINTF_FLOAT_TYPE value, int ndigits, int flags, wchar_t *sign, int *decpt, int ch, int *length, wchar_t *buf, int len) { int mode, dsgn; # ifdef _NO_LONGDBL union double_union tmp; tmp.d = value; if (word0 (tmp) & Sign_bit) { /* this will check for < 0 and -0.0 */ value = -value; *sign = L'-'; } else *sign = L'\0'; # else /* !_NO_LONGDBL */ union { struct ldieee ieee; _LONG_DOUBLE val; } ld; ld.val = value; if (ld.ieee.sign) { /* this will check for < 0 and -0.0 */ value = -value; *sign = L'-'; } else *sign = L'\0'; # endif /* !_NO_LONGDBL */ (void) data; # ifdef _WANT_IO_C99_FORMATS if (ch == L'a' || ch == L'A') { wchar_t *digits, *bp, *rve; /* This code assumes FLT_RADIX is a power of 2. The initial division ensures the digit before the decimal will be less than FLT_RADIX (unless it is rounded later). There is no loss of precision in these calculations. */ value = FREXP (value, decpt) / 8; if (!value) *decpt = 1; digits = ch == L'a' ? L"0123456789abcdef" : L"0123456789ABCDEF"; bp = buf; do { value *= 16; mode = (int) value; value -= mode; *bp++ = digits[mode]; } while (ndigits-- && value); if (value > (_PRINTF_FLOAT_TYPE) 0.5 || (value == (_PRINTF_FLOAT_TYPE) 0.5 && mode & 1)) { /* round to even */ rve = bp; while (*--rve == digits[0xf]) { *rve = L'0'; } *rve = *rve == L'9' ? digits[0xa] : *rve + 1; } else { while (ndigits-- >= 0) { *bp++ = L'0'; } } *length = bp - buf; return buf; } # endif /* _WANT_IO_C99_FORMATS */ if (ch == L'f' || ch == L'F') { mode = 3; /* ndigits after the decimal point */ } else { /* To obtain ndigits after the decimal point for the 'e' * and 'E' formats, round to ndigits + 1 significant * figures. */ if (ch == L'e' || ch == L'E') { ndigits++; } mode = 2; /* ndigits significant digits */ } { char *digits, *bp, *rve; #ifndef _MB_CAPABLE int i; #endif digits = _DTOA (value, mode, ndigits, decpt, &dsgn, &rve); if ((ch != L'g' && ch != L'G') || flags & ALT) { /* Print trailing zeros */ bp = digits + ndigits; if (ch == L'f' || ch == L'F') { if (*digits == L'0' && value) *decpt = -ndigits + 1; bp += *decpt; } if (value == 0) /* kludge for __dtoa irregularity */ rve = bp; while (rve < bp) *rve++ = '0'; } *length = rve - digits; /* full length of the string */ #ifdef _MB_CAPABLE mbsnrtowcs (buf, (const char **) &digits, *length, len, NULL); #else for (i = 0; i < *length && i < len; ++i) buf[i] = (wchar_t) digits[i]; #endif return buf; } } static int wexponent(wchar_t *p0, int exp, int fmtch) { register wchar_t *p, *t; wchar_t expbuf[MAXEXPLEN]; # ifdef _WANT_IO_C99_FORMATS int isa = fmtch == L'a' || fmtch == L'A'; # else # define isa 0 # endif p = p0; *p++ = isa ? (int) (L'p' - L'a') + fmtch : fmtch; if (exp < 0) { exp = -exp; *p++ = L'-'; } else *p++ = L'+'; t = expbuf + MAXEXPLEN; if (exp > 9) { do { *--t = to_char (exp % 10); } while ((exp /= 10) > 9); *--t = to_char (exp); for (; t < expbuf + MAXEXPLEN; *p++ = *t++); } else { if (!isa) *p++ = L'0'; *p++ = to_char (exp); } return (p - p0); } #endif /* FLOATING_POINT */ #ifndef _NO_POS_ARGS /* Positional argument support. Written by Jeff Johnston Copyright (c) 2002 Red Hat Incorporated. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of Red Hat Incorporated may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* function to get positional parameter N where n = N - 1 */ static union arg_val * get_arg (struct _reent *data, int n, wchar_t *fmt, va_list *ap, int *numargs_p, union arg_val *args, int *arg_type, wchar_t **last_fmt) { wchar_t ch; int number, flags; int spec_type; int numargs = *numargs_p; __CH_CLASS chtype; __STATE state, next_state; __ACTION action; int pos, last_arg; int max_pos_arg = n; /* Only need types that can be reached via vararg promotions. */ enum types { INT, LONG_INT, QUAD_INT, CHAR_PTR, DOUBLE, LONG_DOUBLE, WIDE_CHAR }; /* if this isn't the first call, pick up where we left off last time */ if (*last_fmt != NULL) fmt = *last_fmt; /* we need to process either to end of fmt string or until we have actually read the desired parameter from the vararg list. */ while (*fmt && n >= numargs) { while (*fmt != L'\0' && *fmt != L'%') fmt += 1; if (*fmt == L'\0') break; state = START; flags = 0; pos = -1; number = 0; spec_type = INT; /* Use state/action table to process format specifiers. We ignore invalid formats and we are only interested in information that tells us how to read the vararg list. */ while (state != DONE) { ch = *fmt++; chtype = ch < (wchar_t) 256 ? __chclass[ch] : OTHER; next_state = __state_table[state][chtype]; action = __action_table[state][chtype]; state = next_state; switch (action) { case GETMOD: /* we have format modifier */ switch (ch) { case L'h': /* No flag needed, since short and char promote to int. */ break; case L'L': flags |= LONGDBL; break; case L'q': flags |= QUADINT; break; # ifdef _WANT_IO_C99_FORMATS case L'j': if (sizeof (intmax_t) == sizeof (long)) flags |= LONGINT; else flags |= QUADINT; break; case L'z': if (sizeof (size_t) <= sizeof (int)) /* no flag needed */; else if (sizeof (size_t) <= sizeof (long)) flags |= LONGINT; else /* POSIX states that at least one programming environment must support size_t no wider than long, but that means other environments can have size_t as wide as long long. */ flags |= QUADINT; break; case L't': if (sizeof (ptrdiff_t) <= sizeof (int)) /* no flag needed */; else if (sizeof (ptrdiff_t) <= sizeof (long)) flags |= LONGINT; else /* POSIX states that at least one programming environment must support ptrdiff_t no wider than long, but that means other environments can have ptrdiff_t as wide as long long. */ flags |= QUADINT; break; # endif /* _WANT_IO_C99_FORMATS */ case L'l': default: # if defined _WANT_IO_C99_FORMATS || !defined _NO_LONGLONG if (*fmt == L'l') { flags |= QUADINT; ++fmt; } else # endif flags |= LONGINT; break; } break; case GETARG: /* we have format specifier */ { numargs &= (MAX_POS_ARGS - 1); /* process the specifier and translate it to a type to fetch from varargs */ switch (ch) { case L'd': case L'i': case L'o': case L'x': case L'X': case L'u': if (flags & LONGINT) spec_type = LONG_INT; # ifndef _NO_LONGLONG else if (flags & QUADINT) spec_type = QUAD_INT; # endif else spec_type = INT; break; # ifdef _WANT_IO_C99_FORMATS case L'a': case L'A': case L'F': # endif case L'f': case L'g': case L'G': case L'E': case L'e': # ifndef _NO_LONGDBL if (flags & LONGDBL) spec_type = LONG_DOUBLE; else # endif spec_type = DOUBLE; break; case L's': # ifdef _WANT_IO_C99_FORMATS case L'S': /* POSIX extension */ # endif case L'p': case L'n': spec_type = CHAR_PTR; break; case L'c': # ifdef _WANT_IO_C99_FORMATS if (flags & LONGINT) spec_type = WIDE_CHAR; else # endif spec_type = INT; break; # ifdef _WANT_IO_C99_FORMATS case L'C': /* POSIX extension */ spec_type = WIDE_CHAR; break; # endif } /* if we have a positional parameter, just store the type, otherwise fetch the parameter from the vararg list */ if (pos != -1) arg_type[pos] = spec_type; else { switch (spec_type) { case LONG_INT: args[numargs++].val_long = va_arg (*ap, long); break; case QUAD_INT: args[numargs++].val_quad_t = va_arg (*ap, quad_t); break; case WIDE_CHAR: args[numargs++].val_wint_t = va_arg (*ap, wint_t); break; case INT: args[numargs++].val_int = va_arg (*ap, int); break; case CHAR_PTR: args[numargs++].val_wchar_ptr_t = va_arg (*ap, wchar_t *); break; case DOUBLE: args[numargs++].val_double = va_arg (*ap, double); break; case LONG_DOUBLE: args[numargs++].val__LONG_DOUBLE = va_arg (*ap, _LONG_DOUBLE); break; } } } break; case GETPOS: /* we have positional specifier */ if (arg_type[0] == -1) memset (arg_type, 0, sizeof (int) * MAX_POS_ARGS); pos = number - 1; max_pos_arg = (max_pos_arg > pos ? max_pos_arg : pos); break; case PWPOS: /* we have positional specifier for width or precision */ if (arg_type[0] == -1) memset (arg_type, 0, sizeof (int) * MAX_POS_ARGS); number -= 1; arg_type[number] = INT; max_pos_arg = (max_pos_arg > number ? max_pos_arg : number); break; case GETPWB: /* we require format pushback */ --fmt; FALLTHROUGH; case GETPW: /* we have a variable precision or width to acquire */ args[numargs++].val_int = va_arg (*ap, int); break; case NUMBER: /* we have a number to process */ number = (ch - '0'); while ((ch = *fmt) != '\0' && is_digit (ch)) { number = number * 10 + (ch - '0'); ++fmt; } break; case SKIPNUM: /* we have a number to skip */ while ((ch = *fmt) != '\0' && is_digit (ch)) ++fmt; break; case NOOP: default: break; /* do nothing */ } } } /* process all arguments up to at least the one we are looking for and if we have seen the end of the string, then process up to the max argument needed */ if (*fmt == '\0') last_arg = max_pos_arg; else last_arg = n; while (numargs <= last_arg) { switch (arg_type[numargs]) { case LONG_INT: args[numargs++].val_long = va_arg (*ap, long); break; case QUAD_INT: args[numargs++].val_quad_t = va_arg (*ap, quad_t); break; case CHAR_PTR: args[numargs++].val_wchar_ptr_t = va_arg (*ap, wchar_t *); break; case DOUBLE: args[numargs++].val_double = va_arg (*ap, double); break; case LONG_DOUBLE: args[numargs++].val__LONG_DOUBLE = va_arg (*ap, _LONG_DOUBLE); break; case WIDE_CHAR: args[numargs++].val_wint_t = va_arg (*ap, wint_t); break; case INT: default: args[numargs++].val_int = va_arg (*ap, int); break; } } /* alter the global numargs value and keep a reference to the last bit of the fmt string we processed here because the caller will continue processing where we started */ *numargs_p = numargs; *last_fmt = fmt; return &args[n]; } #endif /* !_NO_POS_ARGS */ picolibc-1.7.4/newlib/libc/stdio/vfwscanf.c000066400000000000000000001164541414576234500206310ustar00rootroot00000000000000/*- * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>, <>, <>---scan and format argument list from wide character input INDEX vfwscanf INDEX _vfwscanf INDEX vwscanf INDEX _vwscanf INDEX vswscanf INDEX _vswscanf SYNOPSIS #include #include int vwscanf(const wchar_t *__restrict <[fmt]>, va_list <[list]>); int vfwscanf(FILE *__restrict <[fp]>, const wchar_t *__restrict <[fmt]>, va_list <[list]>); int vswscanf(const wchar_t *__restrict <[str]>, const wchar_t *__restrict <[fmt]>, va_list <[list]>); int _vwscanf(struct _reent *<[reent]>, const wchar_t *<[fmt]>, va_list <[list]>); int _vfwscanf(struct _reent *<[reent]>, FILE *<[fp]>, const wchar_t *<[fmt]>, va_list <[list]>); int _vswscanf(struct _reent *<[reent]>, const wchar_t *<[str]>, const wchar_t *<[fmt]>, va_list <[list]>); DESCRIPTION <>, <>, and <> are (respectively) variants of <>, <>, and <>. They differ only in allowing their caller to pass the variable argument list as a <> object (initialized by <>) rather than directly accepting a variable number of arguments. RETURNS The return values are consistent with the corresponding functions: <> returns the number of input fields successfully scanned, converted, and stored; the return value does not include scanned fields which were not stored. If <> attempts to read at end-of-file, the return value is <>. If no fields were stored, the return value is <<0>>. The routines <<_vwscanf>>, <<_vfwscanf>>, and <<_vswscanf>> are reentrant versions which take an additional first parameter which points to the reentrancy structure. PORTABILITY C99, POSIX-1.2008 */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include #include #include #include #include #include #include #include "local.h" #ifdef INTEGER_ONLY #define VFWSCANF vfiwscanf #define _VFWSCANF_R _vfiwscanf_r #define __SVFWSCANF __svfiwscanf #ifdef STRING_ONLY # define __SVFWSCANF_R __ssvfiwscanf_r #else # define __SVFWSCANF_R __svfiwscanf_r #endif #else #define VFWSCANF vfwscanf #define _VFWSCANF_R _vfwscanf_r #define __SVFWSCANF __svfwscanf #ifdef STRING_ONLY # define __SVFWSCANF_R __ssvfwscanf_r #else # define __SVFWSCANF_R __svfwscanf_r #endif #ifndef NO_FLOATING_POINT #define FLOATING_POINT #endif #endif #ifdef STRING_ONLY #undef _newlib_flockfile_start #undef _newlib_flockfile_exit #undef _newlib_flockfile_end #define _newlib_flockfile_start(x) {} #define _newlib_flockfile_exit(x) {} #define _newlib_flockfile_end(x) {} #define _ungetwc_r _sungetwc_r #define __srefill_r __ssrefill_r #define _fgetwc_r _sfgetwc_r #endif #ifdef FLOATING_POINT #include #include #include #ifdef __HAVE_LOCALE_INFO_EXTENDED__ #include "../locale/setlocale.h" #endif /* Currently a test is made to see if long double processing is warranted. This could be changed in the future should the __ldtoa code be preferred over __dtoa. */ #define _NO_LONGDBL #if defined _WANT_IO_LONG_DOUBLE && (LDBL_MANT_DIG > DBL_MANT_DIG) #undef _NO_LONGDBL extern _LONG_DOUBLE _wcstold_r (wchar_t *s, wchar_t **sptr); #endif #include "floatio.h" #if ((MAXEXP+MAXFRACT+3) > MB_LEN_MAX) # define BUF (MAXEXP+MAXFRACT+3) /* 3 = sign + decimal point + NUL */ #else # define BUF MB_LEN_MAX #endif /* An upper bound for how long a long prints in decimal. 4 / 13 approximates log (2). Add one char for roundoff compensation and one for the sign. */ #define MAX_LONG_LEN ((CHAR_BIT * sizeof (long) - 1) * 4 / 13 + 2) #else #define BUF 40 #endif #define _NO_LONGLONG #if defined _WANT_IO_LONG_LONG \ && (defined __GNUC__ || __STDC_VERSION__ >= 199901L) # undef _NO_LONGLONG #endif #define _NO_POS_ARGS #ifdef _WANT_IO_POS_ARGS # undef _NO_POS_ARGS # ifdef NL_ARGMAX # define MAX_POS_ARGS NL_ARGMAX # else # define MAX_POS_ARGS 32 # endif static void * get_arg (int, va_list *, int *, void **); #endif /* _WANT_IO_POS_ARGS */ /* * Flags used during conversion. */ #define LONG 0x01 /* l: long or double */ #define LONGDBL 0x02 /* L/ll: long double or long long */ #define SHORT 0x04 /* h: short */ #define CHAR 0x08 /* hh: 8 bit integer */ #define SUPPRESS 0x10 /* suppress assignment */ #define POINTER 0x20 /* weird %p pointer (`fake hex') */ #define NOSKIP 0x40 /* do not skip blanks */ #define MALLOC 0x80 /* handle 'm' modifier */ /* * The following are used in numeric conversions only: * SIGNOK, NDIGITS, DPTOK, and EXPOK are for floating point; * SIGNOK, NDIGITS, PFXOK, and NZDIGITS are for integral. */ #define SIGNOK 0x80 /* +/- is (still) legal */ #define NDIGITS 0x100 /* no digits detected */ #define DPTOK 0x200 /* (float) decimal point is still legal */ #define EXPOK 0x400 /* (float) exponent (e+3, etc) still legal */ #define PFXOK 0x200 /* 0x prefix is (still) legal */ #define NZDIGITS 0x400 /* no zero digits detected */ #define HAVESIGN 0x10000 /* sign detected */ /* * Conversion types. */ #define CT_CHAR 0 /* %c conversion */ #define CT_CCL 1 /* %[...] conversion */ #define CT_STRING 2 /* %s conversion */ #define CT_INT 3 /* integer, i.e., wcstol or wcstoul */ #define CT_FLOAT 4 /* floating, i.e., wcstod */ #define INCCL(_c) \ (cclcompl ? (wmemchr(ccls, (_c), ccle - ccls) == NULL) : \ (wmemchr(ccls, (_c), ccle - ccls) != NULL)) /* * vfwscanf */ #ifndef STRING_ONLY #ifndef _REENT_ONLY int VFWSCANF (register FILE *__restrict fp, const wchar_t *__restrict fmt, va_list ap) { struct _reent *reent = _REENT; CHECK_INIT(reent, fp); return __SVFWSCANF_R (reent, fp, fmt, ap); } int __SVFWSCANF (register FILE *fp, wchar_t const *fmt0, va_list ap) { return __SVFWSCANF_R (_REENT, fp, fmt0, ap); } #endif /* !_REENT_ONLY */ int _VFWSCANF_R (struct _reent *data, register FILE *fp, const wchar_t *fmt, va_list ap) { CHECK_INIT(data, fp); return __SVFWSCANF_R (data, fp, fmt, ap); } #endif /* !STRING_ONLY */ #ifdef STRING_ONLY /* When dealing with the swscanf family, we don't want to use the * regular ungetwc which will drag in file I/O items we don't need. * So, we create our own trimmed-down version. */ static wint_t _sungetwc_r (struct _reent *data, wint_t wc, register FILE *fp) { (void) data; if (wc == WEOF) return (WEOF); /* After ungetc, we won't be at eof anymore */ fp->_flags &= ~__SEOF; /* All ungetwc usage in scanf un-gets the current character, so * just back up over the string if we aren't at the start */ if (fp->_bf._base != NULL && fp->_p > fp->_bf._base) { fp->_p -= sizeof (wchar_t); fp->_r += sizeof (wchar_t); } return wc; } extern int __ssrefill_r (struct _reent *ptr, register FILE * fp); static size_t _sfgetwc_r (struct _reent * ptr, FILE * fp) { wchar_t wc; if (fp->_r <= 0 && __ssrefill_r (ptr, fp)) return (WEOF); wc = *(wchar_t *) fp->_p; fp->_p += sizeof (wchar_t); fp->_r -= sizeof (wchar_t); return (wc); } #endif /* STRING_ONLY */ int __SVFWSCANF_R (struct _reent *rptr, register FILE *fp, wchar_t const *fmt0, va_list ap) { register wchar_t *fmt = (wchar_t *) fmt0; register wint_t c; /* character from format, or conversion */ register size_t width; /* field width, or 0 */ register wchar_t *p = NULL; /* points into all kinds of strings */ register int n; /* handy integer */ register int flags; /* flags as defined above */ register wchar_t *p0; /* saves original value of p when necessary */ int nassigned; /* number of fields assigned */ int nread; /* number of characters consumed from fp */ #ifndef _NO_POS_ARGS int N; /* arg number */ int arg_index = 0; /* index into args processed directly */ int numargs = 0; /* number of varargs read */ void *args[MAX_POS_ARGS]; /* positional args read */ int is_pos_arg; /* is current format positional? */ #endif int base = 0; /* base argument to wcstol/wcstoul */ mbstate_t mbs; /* value to keep track of multibyte state */ #define CCFN_PARAMS (const wchar_t *, wchar_t **, int) unsigned long (*ccfn)CCFN_PARAMS=0; /* conversion function (wcstol/wcstoul) */ wchar_t buf[BUF]; /* buffer for numeric conversions */ const wchar_t *ccls; /* character class start */ const wchar_t *ccle; /* character class end */ int cclcompl = 0; /* ccl is complemented? */ wint_t wi; /* handy wint_t */ char *mbp = NULL; /* multibyte string pointer for %c %s %[ */ size_t nconv; /* number of bytes in mb. conversion */ char mbbuf[MB_LEN_MAX]; /* temporary mb. character buffer */ char *cp; short *sp; int *ip; #ifdef FLOATING_POINT float *flp; _LONG_DOUBLE *ldp; double *dp; wchar_t decpt; #endif long *lp; #ifndef _NO_LONGLONG long long *llp; #endif #ifdef _WANT_IO_C99_FORMATS #define _WANT_IO_POSIX_EXTENSIONS #endif #ifdef _WANT_IO_POSIX_EXTENSIONS /* POSIX requires that fwscanf frees all allocated strings from 'm' conversions in case it returns EOF. m_ptr is used to keep track. It will be allocated on the stack the first time an 'm' conversion takes place, and it will be free'd on return from the function. This implementation tries to save space by only allocating 8 pointer slots at a time. Most scenarios should never have to call realloc again. This implementation allows only up to 65528 'm' conversions per fwscanf invocation for now. That should be enough for almost all scenarios, right? */ struct m_ptrs { void ***m_arr; /* Array of pointer args to 'm' conversion */ uint16_t m_siz; /* Number of slots in m_arr */ uint16_t m_cnt; /* Number of valid entries in m_arr */ } *m_ptr = NULL, m_store; #define init_m_ptr() \ do \ { \ if (!m_ptr) \ { \ m_ptr = &m_store; \ m_ptr->m_arr = NULL; \ m_ptr->m_siz = 0; \ m_ptr->m_cnt = 0; \ } \ } \ while (0) #define push_m_ptr(arg) \ do \ { \ if (m_ptr->m_cnt >= m_ptr->m_siz) \ { \ void ***n = NULL; \ \ if (m_ptr->m_siz + 8 > 0 && m_ptr->m_siz + 8 < UINT16_MAX) \ n = (void ***) realloc (m_ptr->m_arr, \ (m_ptr->m_siz + 8) * \ sizeof (void **)); \ if (!n) \ { \ nassigned = EOF; \ goto match_failure; \ } \ m_ptr->m_arr = n; \ m_ptr->m_siz += 8; \ } \ m_ptr->m_arr[m_ptr->m_cnt++] = (void **) (arg); \ } \ while (0) #define alloc_m_ptr(_type, _p, _p0, _p_p, _w) \ ({ \ _p_p = GET_ARG (N, ap, _type **); \ if (!_p_p) \ goto match_failure; \ _p0 = (_type *) malloc ((_w) * sizeof (_type)); \ if (!_p0) \ { \ nassigned = EOF; \ goto match_failure; \ } \ *_p_p = _p0; \ push_m_ptr (_p_p); \ _p = _p0; \ _w; \ }) /* For char output, check if there's room for at least MB_CUR_MAX characters. */ #define realloc_m_ptr(_type, _p, _p0, _p_p, _w) \ ({ \ size_t _nw = (_w); \ ptrdiff_t _dif = _p - _p0; \ if (_p_p && \ ((sizeof (_type) == 1 && (size_t) _dif >= _nw - MB_CUR_MAX) \ || (size_t) _dif >= _nw)) \ { \ _p0 = (_type *) realloc (_p0, (_nw << 1) * sizeof (_type)); \ if (!_p0) \ { \ nassigned = EOF; \ goto match_failure; \ } \ _p = _p0 + _dif; \ *_p_p = _p0; \ _nw <<= 1; \ } \ _nw; \ }) #define shrink_m_ptr(_type, _p_p, _w, _cw) \ ({ \ size_t _nw = (_w); \ if (_p_p && _nw < _cw) \ { \ _type *_np_p = (_type *) \ realloc (*_p_p, _nw * sizeof (_type)); \ if (_np_p) \ *_p_p = _np_p; \ } \ }) #define free_m_ptr() \ do \ { \ if (m_ptr) \ { \ if (nassigned == EOF) \ { \ int i; \ for (i = 0; i < m_ptr->m_cnt; ++i) \ { \ free (*m_ptr->m_arr[i]); \ *m_ptr->m_arr[i] = NULL; \ } \ } \ if (m_ptr->m_arr) \ free (m_ptr->m_arr); \ } \ } \ while (0) #endif /* `basefix' is used to avoid `if' tests in the integer scanner */ static const short basefix[17] = {10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; /* Macro to support positional arguments */ #ifndef _NO_POS_ARGS # define GET_ARG(n, ap, type) \ ((type) (is_pos_arg \ ? (n < numargs \ ? args[n] \ : get_arg (n, &ap, &numargs, args)) \ : (arg_index++ < numargs \ ? args[n] \ : (numargs < MAX_POS_ARGS \ ? args[numargs++] = va_arg (ap, void *) \ : va_arg (ap, void *))))) #else # define GET_ARG(n, ap, type) (va_arg (ap, type)) #endif #ifdef FLOATING_POINT #ifdef _MB_CAPABLE #ifdef __HAVE_LOCALE_INFO_EXTENDED__ decpt = *__get_current_numeric_locale ()->wdecimal_point; #else { size_t nconv; memset (&mbs, '\0', sizeof (mbs)); nconv = mbrtowc (&decpt, localeconv ()->decimal_point, MB_CUR_MAX, &mbs); if (nconv == (size_t) -1 || nconv == (size_t) -2) decpt = L'.'; } #endif /* !__HAVE_LOCALE_INFO_EXTENDED__ */ #else decpt = (wchar_t) *localeconv ()->decimal_point; #endif /* !_MB_CAPABLE */ #endif /* FLOATING_POINT */ _newlib_flockfile_start (fp); ORIENT (fp, 1); nassigned = 0; nread = 0; ccls = ccle = NULL; for (;;) { c = *fmt++; if (c == L'\0') goto all_done; if (iswspace (c)) { while ((c = _fgetwc_r (rptr, fp)) != WEOF && iswspace(c)) ; if (c != WEOF) _ungetwc_r (rptr, c, fp); continue; } if (c != L'%') goto literal; width = 0; flags = 0; #ifndef _NO_POS_ARGS N = arg_index; is_pos_arg = 0; #endif /* * switch on the format. continue if done; break once format * type is derived. */ again: c = *fmt++; switch (c) { case L'%': literal: if ((wi = _fgetwc_r (rptr, fp)) == WEOF) goto input_failure; if (wi != c) { _ungetwc_r (rptr, wi, fp); goto input_failure; } nread++; continue; case L'*': if ((flags & (CHAR | SHORT | LONG | LONGDBL | SUPPRESS | MALLOC)) || width) goto match_failure; flags |= SUPPRESS; goto again; case L'l': if (flags & (CHAR | SHORT | LONG | LONGDBL)) goto match_failure; #if defined _WANT_IO_C99_FORMATS || !defined _NO_LONGLONG if (*fmt == L'l') /* Check for 'll' = long long (SUSv3) */ { ++fmt; flags |= LONGDBL; } else #endif flags |= LONG; goto again; case L'L': if (flags & (CHAR | SHORT | LONG | LONGDBL)) goto match_failure; flags |= LONGDBL; goto again; case L'h': #ifdef _WANT_IO_C99_FORMATS if (flags & (CHAR | SHORT | LONG | LONGDBL)) goto match_failure; if (*fmt == 'h') /* Check for 'hh' = char int (SUSv3) */ { ++fmt; flags |= CHAR; } else #endif flags |= SHORT; goto again; #ifdef _WANT_IO_C99_FORMATS case L'j': /* intmax_t */ if (flags & (CHAR | SHORT | LONG | LONGDBL)) goto match_failure; if (sizeof (intmax_t) == sizeof (long)) flags |= LONG; else flags |= LONGDBL; goto again; case L't': /* ptrdiff_t */ if (flags & (CHAR | SHORT | LONG | LONGDBL)) goto match_failure; if (sizeof (ptrdiff_t) < sizeof (int)) /* POSIX states ptrdiff_t is 16 or more bits, as is short. */ flags |= SHORT; else if (sizeof (ptrdiff_t) == sizeof (int)) /* no flag needed */; else if (sizeof (ptrdiff_t) <= sizeof (long)) flags |= LONG; else /* POSIX states that at least one programming environment must support ptrdiff_t no wider than long, but that means other environments can have ptrdiff_t as wide as long long. */ flags |= LONGDBL; goto again; case L'z': /* size_t */ if (flags & (CHAR | SHORT | LONG | LONGDBL)) goto match_failure; if (sizeof (size_t) < sizeof (int)) /* POSIX states size_t is 16 or more bits, as is short. */ flags |= SHORT; else if (sizeof (size_t) == sizeof (int)) /* no flag needed */; else if (sizeof (size_t) <= sizeof (long)) flags |= LONG; else /* POSIX states that at least one programming environment must support size_t no wider than long, but that means other environments can have size_t as wide as long long. */ flags |= LONGDBL; goto again; #endif /* _WANT_IO_C99_FORMATS */ #ifdef _WANT_IO_POSIX_EXTENSIONS case 'm': if (flags & (CHAR | SHORT | LONG | LONGDBL | MALLOC)) goto match_failure; init_m_ptr (); flags |= MALLOC; goto again; #endif case L'0': case L'1': case L'2': case L'3': case L'4': case L'5': case L'6': case L'7': case L'8': case L'9': if (flags & (CHAR | SHORT | LONG | LONGDBL | MALLOC)) goto match_failure; width = width * 10 + c - L'0'; goto again; #ifndef _NO_POS_ARGS case L'$': if (flags & (CHAR | SHORT | LONG | LONGDBL | SUPPRESS | MALLOC)) goto match_failure; if (width <= MAX_POS_ARGS) { N = width - 1; is_pos_arg = 1; width = 0; goto again; } __errno_r(rptr) = EINVAL; goto input_failure; #endif /* !_NO_POS_ARGS */ case L'd': c = CT_INT; ccfn = (unsigned long (*)CCFN_PARAMS)wcstol; base = 10; break; case L'i': c = CT_INT; ccfn = (unsigned long (*)CCFN_PARAMS)wcstol; base = 0; break; case L'o': c = CT_INT; ccfn = wcstoul; base = 8; break; case L'u': c = CT_INT; ccfn = wcstoul; base = 10; break; case L'X': case L'x': flags |= PFXOK; /* enable 0x prefixing */ c = CT_INT; ccfn = wcstoul; base = 16; break; #ifdef FLOATING_POINT # ifdef _WANT_IO_C99_FORMATS case L'A': case L'a': case L'F': # endif case L'E': case L'G': case L'e': case L'f': case L'g': c = CT_FLOAT; break; #endif #ifdef _WANT_IO_C99_FORMATS case L'S': flags |= LONG; FALLTHROUGH; #endif case L's': c = CT_STRING; break; case L'[': if (*fmt == '^') { cclcompl = 1; ++fmt; } else cclcompl = 0; ccls = fmt; if (*fmt == ']') fmt++; while (*fmt != '\0' && *fmt != ']') fmt++; ccle = fmt; fmt++; flags |= NOSKIP; c = CT_CCL; break; #ifdef _WANT_IO_C99_FORMATS case 'C': flags |= LONG; FALLTHROUGH; #endif case 'c': flags |= NOSKIP; c = CT_CHAR; break; case 'p': /* pointer format is like hex */ flags |= POINTER | PFXOK; c = CT_INT; ccfn = wcstoul; base = 16; break; case 'n': if (flags & SUPPRESS) /* ??? */ continue; #ifdef _WANT_IO_C99_FORMATS if (flags & CHAR) { cp = GET_ARG (N, ap, char *); *cp = nread; } else #endif if (flags & SHORT) { sp = GET_ARG (N, ap, short *); *sp = nread; } else if (flags & LONG) { lp = GET_ARG (N, ap, long *); *lp = nread; } #ifndef _NO_LONGLONG else if (flags & LONGDBL) { llp = GET_ARG (N, ap, long long*); *llp = nread; } #endif else { ip = GET_ARG (N, ap, int *); *ip = nread; } continue; default: goto match_failure; } /* * Consume leading white space, except for formats that * suppress this. */ if ((flags & NOSKIP) == 0) { while ((wi = _fgetwc_r (rptr, fp)) != WEOF && iswspace (wi)) nread++; if (wi == WEOF) goto input_failure; _ungetwc_r (rptr, wi, fp); } /* * Do the conversion. */ switch (c) { case CT_CHAR: /* scan arbitrary characters (sets NOSKIP) */ if (width == 0) width = 1; if (flags & LONG) { #ifdef _WANT_IO_POSIX_EXTENSIONS wchar_t **p_p = NULL; wchar_t *p0 = NULL; size_t p_siz = 0; #endif if (flags & SUPPRESS) ; #ifdef _WANT_IO_POSIX_EXTENSIONS else if (flags & MALLOC) p_siz = alloc_m_ptr (wchar_t, p, p0, p_p, 32); #endif else p = GET_ARG(N, ap, wchar_t *); n = 0; while (width-- != 0 && (wi = _fgetwc_r (rptr, fp)) != WEOF) { if (!(flags & SUPPRESS)) { #ifdef _WANT_IO_POSIX_EXTENSIONS /* Check before ++ because we never add a \0 */ p_siz = realloc_m_ptr (wchar_t, p, p0, p_p, p_siz); #endif *p++ = (wchar_t) wi; } n++; } if (n == 0) goto input_failure; nread += n; #ifdef _WANT_IO_POSIX_EXTENSIONS shrink_m_ptr (wchar_t, p_p, p - p0, p_siz); #endif if (!(flags & SUPPRESS)) nassigned++; } else { #ifdef _WANT_IO_POSIX_EXTENSIONS char **mbp_p = NULL; char *mbp0 = NULL; size_t mbp_siz = 0; #endif if (flags & SUPPRESS) mbp = mbbuf; #ifdef _WANT_IO_POSIX_EXTENSIONS else if (flags & MALLOC) mbp_siz = alloc_m_ptr (char, mbp, mbp0, mbp_p, 32); #endif else mbp = GET_ARG(N, ap, char *); n = 0; memset ((void *)&mbs, '\0', sizeof (mbstate_t)); while (width != 0 && (wi = _fgetwc_r (rptr, fp)) != WEOF) { nconv = wcrtomb (mbp, wi, &mbs); if (nconv == (size_t) -1) goto input_failure; /* Ignore high surrogate in width counting */ if (nconv != 0 || mbs.__count != -4) width--; if (!(flags & SUPPRESS)) { #ifdef _WANT_IO_POSIX_EXTENSIONS mbp_siz = realloc_m_ptr (char, mbp, mbp0, mbp_p, mbp_siz); #endif mbp += nconv; } n++; } if (n == 0) goto input_failure; nread += n; #ifdef _WANT_IO_POSIX_EXTENSIONS shrink_m_ptr (char, mbp_p, mbp - mbp0, mbp_siz); #endif if (!(flags & SUPPRESS)) nassigned++; } break; case CT_CCL: /* scan a (nonempty) character class (sets NOSKIP) */ if (width == 0) width = SIZE_MAX; /* `infinity' */ /* take only those things in the class */ if ((flags & SUPPRESS) && (flags & LONG)) { n = 0; while ((wi = _fgetwc_r (rptr, fp)) != WEOF && width-- != 0 && INCCL (wi)) n++; if (wi != WEOF) _ungetwc_r (rptr, wi, fp); if (n == 0) goto match_failure; } else if (flags & LONG) { #ifdef _WANT_IO_POSIX_EXTENSIONS wchar_t **p_p = NULL; size_t p_siz = 0; if (flags & MALLOC) p_siz = alloc_m_ptr (wchar_t, p, p0, p_p, 32); else #endif p0 = p = GET_ARG(N, ap, wchar_t *); while ((wi = _fgetwc_r (rptr, fp)) != WEOF && width-- != 0 && INCCL (wi)) { *p++ = (wchar_t) wi; #ifdef _WANT_IO_POSIX_EXTENSIONS p_siz = realloc_m_ptr (wchar_t, p, p0, p_p, p_siz); #endif } if (wi != WEOF) _ungetwc_r (rptr, wi, fp); n = p - p0; if (n == 0) goto match_failure; *p = L'\0'; #ifdef _WANT_IO_POSIX_EXTENSIONS shrink_m_ptr (wchar_t, p_p, n + 1, p_siz); #endif nassigned++; } else { #ifdef _WANT_IO_POSIX_EXTENSIONS char **mbp_p = NULL; char *mbp0 = NULL; size_t mbp_siz = 0; #endif if (flags & SUPPRESS) mbp = mbbuf; #ifdef _WANT_IO_POSIX_EXTENSIONS else if (flags & MALLOC) mbp_siz = alloc_m_ptr (char, mbp, mbp0, mbp_p, 32); #endif else mbp = GET_ARG(N, ap, char *); n = 0; memset ((void *) &mbs, '\0', sizeof (mbstate_t)); while ((wi = _fgetwc_r (rptr, fp)) != WEOF && width != 0 && INCCL (wi)) { nconv = wcrtomb (mbp, wi, &mbs); if (nconv == (size_t) -1) goto input_failure; /* Ignore high surrogate in width counting */ if (nconv != 0 || mbs.__count != -4) width--; if (!(flags & SUPPRESS)) { mbp += nconv; #ifdef _WANT_IO_POSIX_EXTENSIONS mbp_siz = realloc_m_ptr (char, mbp, mbp0, mbp_p, mbp_siz); #endif } n++; } if (wi != WEOF) _ungetwc_r (rptr, wi, fp); if (!(flags & SUPPRESS)) { *mbp = 0; #ifdef _WANT_IO_POSIX_EXTENSIONS shrink_m_ptr (char, mbp_p, mbp - mbp0 + 1, mbp_siz); #endif nassigned++; } } nread += n; break; case CT_STRING: /* like CCL, but zero-length string OK, & no NOSKIP */ if (width == 0) width = SIZE_MAX; if ((flags & SUPPRESS) && (flags & LONG)) { while ((wi = _fgetwc_r (rptr, fp)) != WEOF && width-- != 0 && !iswspace (wi)) nread++; if (wi != WEOF) _ungetwc_r (rptr, wi, fp); } else if (flags & LONG) { #ifdef _WANT_IO_POSIX_EXTENSIONS wchar_t **p_p = NULL; size_t p_siz = 0; if (flags & MALLOC) p_siz = alloc_m_ptr (wchar_t, p, p0, p_p, 32); else #endif p0 = p = GET_ARG(N, ap, wchar_t *); while ((wi = _fgetwc_r (rptr, fp)) != WEOF && width-- != 0 && !iswspace (wi)) { *p++ = (wchar_t) wi; #ifdef _WANT_IO_POSIX_EXTENSIONS p_siz = realloc_m_ptr (wchar_t, p, p0, p_p, p_siz); #endif nread++; } if (wi != WEOF) _ungetwc_r (rptr, wi, fp); *p = L'\0'; #ifdef _WANT_IO_POSIX_EXTENSIONS shrink_m_ptr (wchar_t, p_p, p - p0 + 1, p_siz); #endif nassigned++; } else { #ifdef _WANT_IO_POSIX_EXTENSIONS char **mbp_p = NULL; char *mbp0 = NULL; size_t mbp_siz = 0; #endif if (flags & SUPPRESS) mbp = mbbuf; #ifdef _WANT_IO_POSIX_EXTENSIONS else if (flags & MALLOC) mbp_siz = alloc_m_ptr (char, mbp, mbp0, mbp_p, 32); #endif else mbp = GET_ARG(N, ap, char *); memset ((void *) &mbs, '\0', sizeof (mbstate_t)); while ((wi = _fgetwc_r (rptr, fp)) != WEOF && width != 0 && !iswspace (wi)) { nconv = wcrtomb(mbp, wi, &mbs); if (nconv == (size_t)-1) goto input_failure; /* Ignore high surrogate in width counting */ if (nconv != 0 || mbs.__count != -4) width--; if (!(flags & SUPPRESS)) { mbp += nconv; #ifdef _WANT_IO_POSIX_EXTENSIONS mbp_siz = realloc_m_ptr (char, mbp, mbp0, mbp_p, mbp_siz); #endif } nread++; } if (wi != WEOF) _ungetwc_r (rptr, wi, fp); if (!(flags & SUPPRESS)) { *mbp = 0; #ifdef _WANT_IO_POSIX_EXTENSIONS shrink_m_ptr (char, mbp_p, mbp - mbp0 + 1, mbp_siz); #endif nassigned++; } } continue; case CT_INT: { /* scan an integer as if by wcstol/wcstoul */ if (width == 0 || width > sizeof (buf) / sizeof (*buf) - 1) width = sizeof(buf) / sizeof (*buf) - 1; flags |= SIGNOK | NDIGITS | NZDIGITS; for (p = buf; width; width--) { c = _fgetwc_r (rptr, fp); /* * Switch on the character; `goto ok' if we * accept it as a part of number. */ switch (c) { /* * The digit 0 is always legal, but is special. * For %i conversions, if no digits (zero or nonzero) * have been scanned (only signs), we will have base==0. * In that case, we should set it to 8 and enable 0x * prefixing. Also, if we have not scanned zero digits * before this, do not turn off prefixing (someone else * will turn it off if we have scanned any nonzero digits). */ case L'0': if (base == 0) { base = 8; flags |= PFXOK; } if (flags & NZDIGITS) flags &= ~(SIGNOK | NZDIGITS | NDIGITS); else flags &= ~(SIGNOK | PFXOK | NDIGITS); goto ok; /* 1 through 7 always legal */ case L'1': case L'2': case L'3': case L'4': case L'5': case L'6': case L'7': base = basefix[base]; flags &= ~(SIGNOK | PFXOK | NDIGITS); goto ok; /* digits 8 and 9 ok iff decimal or hex */ case L'8': case L'9': base = basefix[base]; if (base <= 8) break; /* not legal here */ flags &= ~(SIGNOK | PFXOK | NDIGITS); goto ok; /* letters ok iff hex */ case L'A': case L'B': case L'C': case L'D': case L'E': case L'F': case L'a': case L'b': case L'c': case L'd': case L'e': case L'f': /* no need to fix base here */ if (base <= 10) break; /* not legal here */ flags &= ~(SIGNOK | PFXOK | NDIGITS); goto ok; /* sign ok only as first character */ case L'+': case L'-': if (flags & SIGNOK) { flags &= ~SIGNOK; flags |= HAVESIGN; goto ok; } break; /* x ok iff flag still set & single 0 seen */ case L'x': case L'X': if ((flags & PFXOK) && p == buf + 1 + !!(flags & HAVESIGN)) { base = 16;/* if %i */ flags &= ~PFXOK; goto ok; } break; } /* * If we got here, c is not a legal character * for a number. Stop accumulating digits. */ if (c != WEOF) _ungetwc_r (rptr, c, fp); break; ok: /* * c is legal: store it and look at the next. */ *p++ = (wchar_t) c; } /* * If we had only a sign, it is no good; push back the sign. * If the number ends in `x', it was [sign] '0' 'x', so push back * the x and treat it as [sign] '0'. * Use of ungetc here and below assumes ASCII encoding; we are only * pushing back 7-bit characters, so casting to unsigned char is * not necessary. */ if (flags & NDIGITS) { if (p > buf) _ungetwc_r (rptr, *--p, fp); /* [-+xX] */ goto match_failure; } c = p[-1]; if (c == L'x' || c == L'X') { --p; _ungetwc_r (rptr, c, fp); } if ((flags & SUPPRESS) == 0) { unsigned long res; *p = 0; res = (*ccfn) (buf, (wchar_t **) NULL, base); if (flags & POINTER) { void **vp = GET_ARG (N, ap, void **); #ifndef _NO_LONGLONG if (sizeof (uintptr_t) > sizeof (unsigned long)) { unsigned long long resll; resll = wcstoull (buf, (wchar_t **) NULL, base); *vp = (void *) (uintptr_t) resll; } else #endif /* !_NO_LONGLONG */ *vp = (void *) (uintptr_t) res; } #ifdef _WANT_IO_C99_FORMATS else if (flags & CHAR) { cp = GET_ARG (N, ap, char *); *cp = res; } #endif else if (flags & SHORT) { sp = GET_ARG (N, ap, short *); *sp = res; } else if (flags & LONG) { lp = GET_ARG (N, ap, long *); *lp = res; } #ifndef _NO_LONGLONG else if (flags & LONGDBL) { unsigned long long resll; if (ccfn == wcstoul) resll = wcstoull (buf, (wchar_t **) NULL, base); else resll = wcstoll (buf, (wchar_t **) NULL, base); llp = GET_ARG (N, ap, long long*); *llp = resll; } #endif else { ip = GET_ARG (N, ap, int *); *ip = res; } nassigned++; } nread += p - buf; break; } #ifdef FLOATING_POINT case CT_FLOAT: { /* scan a floating point number as if by wcstod */ /* This code used to assume that the number of digits is reasonable. However, ANSI / ISO C makes no such stipulation; we have to get exact results even when there is an unreasonable amount of leading zeroes. */ long leading_zeroes = 0; long zeroes, exp_adjust; wchar_t *exp_start = NULL; unsigned width_left = 0; char nancount = 0; char infcount = 0; #ifdef hardway if (width == 0 || width > sizeof (buf) / sizeof (*buf) - 1) #else /* size_t is unsigned, hence this optimisation */ if (width - 1 > sizeof (buf) / sizeof (*buf) - 2) #endif { width_left = width - (sizeof (buf) / sizeof (*buf) - 1); width = sizeof (buf) / sizeof (*buf) - 1; } flags |= SIGNOK | NDIGITS | DPTOK | EXPOK; zeroes = 0; exp_adjust = 0; for (p = buf; width; ) { c = _fgetwc_r (rptr, fp); /* * This code mimicks the integer conversion * code, but is much simpler. */ switch (c) { case L'0': if (flags & NDIGITS) { flags &= ~SIGNOK; zeroes++; if (width_left) { width_left--; width++; } goto fskip; } /* Fall through. */ case L'1': case L'2': case L'3': case L'4': case L'5': case L'6': case L'7': case L'8': case L'9': if (nancount + infcount == 0) { flags &= ~(SIGNOK | NDIGITS); goto fok; } break; case L'+': case L'-': if (flags & SIGNOK) { flags &= ~SIGNOK; goto fok; } break; case L'n': case L'N': if (nancount == 0 && zeroes == 0 && (flags & (NDIGITS | DPTOK | EXPOK)) == (NDIGITS | DPTOK | EXPOK)) { flags &= ~(SIGNOK | DPTOK | EXPOK | NDIGITS); nancount = 1; goto fok; } if (nancount == 2) { nancount = 3; goto fok; } if (infcount == 1 || infcount == 4) { infcount++; goto fok; } break; case L'a': case L'A': if (nancount == 1) { nancount = 2; goto fok; } break; case L'i': if (infcount == 0 && zeroes == 0 && (flags & (NDIGITS | DPTOK | EXPOK)) == (NDIGITS | DPTOK | EXPOK)) { flags &= ~(SIGNOK | DPTOK | EXPOK | NDIGITS); infcount = 1; goto fok; } if (infcount == 3 || infcount == 5) { infcount++; goto fok; } break; case L'f': case L'F': if (infcount == 2) { infcount = 3; goto fok; } break; case L't': case L'T': if (infcount == 6) { infcount = 7; goto fok; } break; case L'y': case L'Y': if (infcount == 7) { infcount = 8; goto fok; } break; case L'e': case L'E': /* no exponent without some digits */ if ((flags & (NDIGITS | EXPOK)) == EXPOK || ((flags & EXPOK) && zeroes)) { if (! (flags & DPTOK)) { exp_adjust = zeroes - leading_zeroes; exp_start = p; } flags = (flags & ~(EXPOK | DPTOK)) | SIGNOK | NDIGITS; zeroes = 0; goto fok; } break; default: if ((wchar_t) c == decpt && (flags & DPTOK)) { flags &= ~(SIGNOK | DPTOK); leading_zeroes = zeroes; goto fok; } break; } if (c != WEOF) _ungetwc_r (rptr, c, fp); break; fok: *p++ = c; fskip: width--; ++nread; } if (zeroes) flags &= ~NDIGITS; /* We may have a 'N' or possibly even [sign] 'N' 'a' as the start of 'NaN', only to run out of chars before it was complete (or having encountered a non-matching char). So check here if we have an outstanding nancount, and if so put back the chars we did swallow and treat as a failed match. FIXME - we still don't handle NAN([0xdigits]). */ if (nancount - 1U < 2U) /* nancount && nancount < 3 */ { /* Newlib's ungetc works even if we called __srefill in the middle of a partial parse, but POSIX does not guarantee that in all implementations of ungetc. */ while (p > buf) { _ungetwc_r (rptr, *--p, fp); /* [-+nNaA] */ --nread; } goto match_failure; } /* Likewise for 'inf' and 'infinity'. But be careful that 'infinite' consumes only 3 characters, leaving the stream at the second 'i'. */ if (infcount - 1U < 7U) /* infcount && infcount < 8 */ { if (infcount >= 3) /* valid 'inf', but short of 'infinity' */ while (infcount-- > 3) { _ungetwc_r (rptr, *--p, fp); /* [iInNtT] */ --nread; } else { while (p > buf) { _ungetwc_r (rptr, *--p, fp); /* [-+iInN] */ --nread; } goto match_failure; } } /* * If no digits, might be missing exponent digits * (just give back the exponent) or might be missing * regular digits, but had sign and/or decimal point. */ if (flags & NDIGITS) { if (flags & EXPOK) { /* no digits at all */ while (p > buf) { _ungetwc_r (rptr, *--p, fp); /* [-+.] */ --nread; } goto match_failure; } /* just a bad exponent (e and maybe sign) */ c = *--p; --nread; if (c != L'e' && c != L'E') { _ungetwc_r (rptr, c, fp); /* [-+] */ c = *--p; --nread; } _ungetwc_r (rptr, c, fp); /* [eE] */ } if ((flags & SUPPRESS) == 0) { double res = 0; #ifdef _NO_LONGDBL #define QUAD_RES res; #else /* !_NO_LONG_DBL */ long double qres = 0; #define QUAD_RES qres; #endif /* !_NO_LONG_DBL */ long new_exp = 0; *p = 0; if ((flags & (DPTOK | EXPOK)) == EXPOK) { exp_adjust = zeroes - leading_zeroes; new_exp = -exp_adjust; exp_start = p; } else if (exp_adjust) new_exp = wcstol ((exp_start + 1), NULL, 10) - exp_adjust; if (exp_adjust) { /* If there might not be enough space for the new exponent, truncate some trailing digits to make room. */ if (exp_start >= buf + sizeof (buf) / sizeof (*buf) - MAX_LONG_LEN) exp_start = buf + sizeof (buf) / sizeof (*buf) - MAX_LONG_LEN - 1; swprintf (exp_start, MAX_LONG_LEN, L"e%ld", new_exp); } /* FIXME: We don't have wcstold yet. */ #if 0//ndef _NO_LONGDBL /* !_NO_LONGDBL */ if (flags & LONGDBL) qres = wcstold (buf, NULL); else #endif res = wcstod (buf, NULL); if (flags & LONG) { dp = GET_ARG (N, ap, double *); *dp = res; } else if (flags & LONGDBL) { ldp = GET_ARG (N, ap, _LONG_DOUBLE *); *ldp = (_LONG_DOUBLE) QUAD_RES; } else { flp = GET_ARG (N, ap, float *); if (isnan (res)) *flp = nanf (""); else *flp = res; } nassigned++; } break; } #endif /* FLOATING_POINT */ } } input_failure: /* On read failure, return EOF failure regardless of matches; errno should have been set prior to here. On EOF failure (including invalid format string), return EOF if no matches yet, else number of matches made prior to failure. */ nassigned = nassigned && !(fp->_flags & __SERR) ? nassigned : EOF; match_failure: all_done: /* Return number of matches, which can be 0 on match failure. */ _newlib_flockfile_end (fp); #ifdef _WANT_IO_POSIX_EXTENSIONS free_m_ptr (); #endif return nassigned; } #ifndef _NO_POS_ARGS /* Process all intermediate arguments. Fortunately, with wscanf, all intermediate arguments are sizeof(void*), so we don't need to scan ahead in the format string. */ static void * get_arg (int n, va_list *ap, int *numargs_p, void **args) { int numargs = *numargs_p; while (n >= numargs) args[numargs++] = va_arg (*ap, void *); *numargs_p = numargs; return args[n]; } #endif /* !_NO_POS_ARGS */ picolibc-1.7.4/newlib/libc/stdio/viprintf.c000066400000000000000000000074521414576234500206520ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>, <>, <>, <>, <>, <>---format argument list (integer only) INDEX viprintf INDEX _viprintf_r INDEX vfiprintf INDEX _vfiprintf_r INDEX vsiprintf INDEX _vsiprintf_r INDEX vsniprintf INDEX _vsniprintf_r INDEX vasiprintf INDEX _vasiprintf_r INDEX vasniprintf INDEX _vasniprintf_r SYNOPSIS #include #include int viprintf(const char *<[fmt]>, va_list <[list]>); int vfiprintf(FILE *<[fp]>, const char *<[fmt]>, va_list <[list]>); int vsiprintf(char *<[str]>, const char *<[fmt]>, va_list <[list]>); int vsniprintf(char *<[str]>, size_t <[size]>, const char *<[fmt]>, va_list <[list]>); int vasiprintf(char **<[strp]>, const char *<[fmt]>, va_list <[list]>); char *vasniprintf(char *<[str]>, size_t *<[size]>, const char *<[fmt]>, va_list <[list]>); int _viprintf_r(struct _reent *<[reent]>, const char *<[fmt]>, va_list <[list]>); int _vfiprintf_r(struct _reent *<[reent]>, FILE *<[fp]>, const char *<[fmt]>, va_list <[list]>); int _vsiprintf_r(struct _reent *<[reent]>, char *<[str]>, const char *<[fmt]>, va_list <[list]>); int _vsniprintf_r(struct _reent *<[reent]>, char *<[str]>, size_t <[size]>, const char *<[fmt]>, va_list <[list]>); int _vasiprintf_r(struct _reent *<[reent]>, char **<[str]>, const char *<[fmt]>, va_list <[list]>); char *_vasniprintf_r(struct _reent *<[reent]>, char *<[str]>, size_t *<[size]>, const char *<[fmt]>, va_list <[list]>); DESCRIPTION <>, <>, <>, <>, <>, and <> are (respectively) variants of <>, <>, <>, <>, <>, and <>. They differ only in allowing their caller to pass the variable argument list as a <> object (initialized by <>) rather than directly accepting a variable number of arguments. The caller is responsible for calling <>. <<_viprintf_r>>, <<_vfiprintf_r>>, <<_vasiprintf_r>>, <<_vsiprintf_r>>, <<_vsniprintf_r>>, and <<_vasniprintf_r>> are reentrant versions of the above. RETURNS The return values are consistent with the corresponding functions: PORTABILITY All of these functions are newlib extensions. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" #ifndef _REENT_ONLY int viprintf (const char *fmt, va_list ap) { struct _reent *reent = _REENT; _REENT_SMALL_CHECK_INIT (reent); return _vfiprintf_r (reent, _stdout_r (reent), fmt, ap); } #endif /* !_REENT_ONLY */ int _viprintf_r (struct _reent *ptr, const char *fmt, va_list ap) { _REENT_SMALL_CHECK_INIT (ptr); return _vfiprintf_r (ptr, _stdout_r (ptr), fmt, ap); } picolibc-1.7.4/newlib/libc/stdio/viscanf.c000066400000000000000000000060631414576234500204370ustar00rootroot00000000000000/*- * Code created by modifying iscanf.c which has following copyright. * * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>, <>, <>---format argument list INDEX viscanf INDEX _viscanf_r INDEX vfiscanf INDEX _vfiscanf_r INDEX vsiscanf INDEX _vsiscanf_r SYNOPSIS #include #include int viscanf(const char *<[fmt]>, va_list <[list]>); int vfiscanf(FILE *<[fp]>, const char *<[fmt]>, va_list <[list]>); int vsiscanf(const char *<[str]>, const char *<[fmt]>, va_list <[list]>); int _viscanf_r(struct _reent *<[reent]>, const char *<[fmt]>, va_list <[list]>); int _vfiscanf_r(struct _reent *<[reent]>, FILE *<[fp]>, const char *<[fmt]>, va_list <[list]>); int _vsiscanf_r(struct _reent *<[reent]>, const char *<[str]>, const char *<[fmt]>, va_list <[list]>); DESCRIPTION <>, <>, and <> are (respectively) variants of <>, <>, and <>. They differ only in allowing their caller to pass the variable argument list as a <> object (initialized by <>) rather than directly accepting a variable number of arguments. RETURNS The return values are consistent with the corresponding functions: <> returns the number of input fields successfully scanned, converted, and stored; the return value does not include scanned fields which were not stored. If <> attempts to read at end-of-file, the return value is <>. If no fields were stored, the return value is <<0>>. The routines <<_viscanf_r>>, <<_vfiscanf_f>>, and <<_vsiscanf_r>> are reentrant versions which take an additional first parameter which points to the reentrancy structure. PORTABILITY These are newlib extensions. Supporting OS subroutines required: */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" #ifndef _REENT_ONLY int viscanf (const char *fmt, va_list ap) { struct _reent *reent = _REENT; _REENT_SMALL_CHECK_INIT (reent); return __svfiscanf_r (reent, _stdin_r (reent), fmt, ap); } #endif /* !_REENT_ONLY */ int _viscanf_r (struct _reent *ptr, const char *fmt, va_list ap) { _REENT_SMALL_CHECK_INIT (ptr); return __svfiscanf_r (ptr, _stdin_r (ptr), fmt, ap); } picolibc-1.7.4/newlib/libc/stdio/vprintf.c000066400000000000000000000030661414576234500204760ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* doc in vfprintf.c */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" #ifndef _REENT_ONLY int vprintf (const char *fmt, va_list ap) { struct _reent *reent = _REENT; _REENT_SMALL_CHECK_INIT (reent); return _vfprintf_r (reent, _stdout_r (reent), fmt, ap); } #ifdef _NANO_FORMATTED_IO int viprintf (const char *, __VALIST) _ATTRIBUTE ((__alias__("vprintf"))); #endif #endif /* !_REENT_ONLY */ int _vprintf_r (struct _reent *ptr, const char *__restrict fmt, va_list ap) { _REENT_SMALL_CHECK_INIT (ptr); return _vfprintf_r (ptr, _stdout_r (ptr), fmt, ap); } #ifdef _NANO_FORMATTED_IO int _viprintf_r (struct _reent *, const char *, __VALIST) _ATTRIBUTE ((__alias__("_vprintf_r"))); #endif picolibc-1.7.4/newlib/libc/stdio/vscanf.c000066400000000000000000000031401414576234500202570ustar00rootroot00000000000000/*- * Code created by modifying scanf.c which has following copyright. * * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" #ifndef _REENT_ONLY int vscanf (const char *fmt, va_list ap) { struct _reent *reent = _REENT; _REENT_SMALL_CHECK_INIT (reent); return __svfscanf_r (reent, _stdin_r (reent), fmt, ap); } #ifdef _NANO_FORMATTED_IO int viscanf (const char *, __VALIST) _ATTRIBUTE ((__alias__("vscanf"))); #endif #endif /* !_REENT_ONLY */ int _vscanf_r (struct _reent *ptr, const char *__restrict fmt, va_list ap) { _REENT_SMALL_CHECK_INIT (ptr); return __svfscanf_r (ptr, _stdin_r (ptr), fmt, ap); } #ifdef _NANO_FORMATTED_IO int _viscanf_r (struct _reent *, const char *, __VALIST) _ATTRIBUTE ((__alias__("_vscanf_r"))); #endif picolibc-1.7.4/newlib/libc/stdio/vsiprintf.c000066400000000000000000000030511414576234500210240ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* doc in viprintf.c */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "local.h" #ifndef _REENT_ONLY int vsiprintf (char *str, const char *fmt, va_list ap) { return _vsiprintf_r (_REENT, str, fmt, ap); } #endif /* !_REENT_ONLY */ int _vsiprintf_r (struct _reent *ptr, char *str, const char *fmt, va_list ap) { int ret; FILE f; f._flags = __SWR | __SSTR; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = INT_MAX; f._file = -1; /* No file. */ ret = _svfiprintf_r (ptr, &f, fmt, ap); *f._p = 0; return ret; } picolibc-1.7.4/newlib/libc/stdio/vsiscanf.c000066400000000000000000000030371414576234500206200ustar00rootroot00000000000000/* * Code created by modifying iscanf.c which has following copyright. * * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "local.h" /* * vsiscanf */ #ifndef _REENT_ONLY int vsiscanf (const char *str, const char *fmt, va_list ap) { return _vsiscanf_r (_REENT, str, fmt, ap); } #endif /* !_REENT_ONLY */ int _vsiscanf_r (struct _reent *ptr, const char *str, const char *fmt, va_list ap) { FILE f; f._flags = __SRD | __SSTR; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._r = strlen (str); f._read = __seofread; f._ub._base = NULL; f._lb._base = NULL; f._file = -1; /* No file. */ return __ssvfiscanf_r (ptr, &f, fmt, ap); } picolibc-1.7.4/newlib/libc/stdio/vsniprintf.c000066400000000000000000000034361414576234500212110ustar00rootroot00000000000000/* * Copyright (c) 1990, 2007 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* doc in viprintf.c */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include "local.h" #ifndef _REENT_ONLY int vsniprintf (char *str, size_t size, const char *fmt, va_list ap) { return _vsniprintf_r (_REENT, str, size, fmt, ap); } #endif /* !_REENT_ONLY */ int _vsniprintf_r (struct _reent *ptr, char *str, size_t size, const char *fmt, va_list ap) { int ret; FILE f; if (size > INT_MAX) { __errno_r(ptr) = EOVERFLOW; return EOF; } f._flags = __SWR | __SSTR; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = (size > 0 ? size - 1 : 0); f._file = -1; /* No file. */ ret = _svfiprintf_r (ptr, &f, fmt, ap); if (ret < EOF) __errno_r(ptr) = EOVERFLOW; if (size > 0) *f._p = 0; return ret; } picolibc-1.7.4/newlib/libc/stdio/vsnprintf.c000066400000000000000000000041711414576234500210350ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* doc in vfprintf.c */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include "local.h" #ifndef _REENT_ONLY #undef vsnprintf int vsnprintf (char *__restrict str, size_t size, const char *__restrict fmt, va_list ap) { return _vsnprintf_r (_REENT, str, size, fmt, ap); } #ifdef _NANO_FORMATTED_IO int vsniprintf (char *, size_t, const char *, __VALIST) _ATTRIBUTE ((__alias__("vsnprintf"))); #endif #endif /* !_REENT_ONLY */ int _vsnprintf_r (struct _reent *ptr, char *__restrict str, size_t size, const char *__restrict fmt, va_list ap) { int ret; FILE f; if (size > INT_MAX) { __errno_r(ptr) = EOVERFLOW; return EOF; } f._flags = __SWR | __SSTR; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = (size > 0 ? size - 1 : 0); f._file = -1; /* No file. */ ret = _svfprintf_r (ptr, &f, fmt, ap); if (ret < EOF) __errno_r(ptr) = EOVERFLOW; if (size > 0) *f._p = 0; return ret; } #ifdef _NANO_FORMATTED_IO int _vsniprintf_r (struct _reent *, char *, size_t, const char *, __VALIST) _ATTRIBUTE ((__alias__("_vsnprintf_r"))); #endif picolibc-1.7.4/newlib/libc/stdio/vsprintf.c000066400000000000000000000035651414576234500206650ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* doc in vfprintf.c */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "local.h" #ifndef _REENT_ONLY #undef vsprintf int vsprintf (char *__restrict str, const char *__restrict fmt, va_list ap) { return _vsprintf_r (_REENT, str, fmt, ap); } #ifdef _NANO_FORMATTED_IO int vsiprintf (char *, const char *, __VALIST) _ATTRIBUTE ((__alias__("vsprintf"))); #endif #endif /* !_REENT_ONLY */ int _vsprintf_r (struct _reent *ptr, char *__restrict str, const char *__restrict fmt, va_list ap) { int ret; FILE f; f._flags = __SWR | __SSTR; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = INT_MAX; f._file = -1; /* No file. */ ret = _svfprintf_r (ptr, &f, fmt, ap); *f._p = 0; return ret; } #ifdef _NANO_FORMATTED_IO int _vsiprintf_r (struct _reent *, char *, const char *, __VALIST) _ATTRIBUTE ((__alias__("_vsprintf_r"))); #endif picolibc-1.7.4/newlib/libc/stdio/vsscanf.c000066400000000000000000000035401414576234500204460ustar00rootroot00000000000000/* * Code created by modifying scanf.c which has following copyright. * * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "local.h" /* * vsscanf */ #ifndef _REENT_ONLY int vsscanf (const char *__restrict str, const char *__restrict fmt, va_list ap) { return _vsscanf_r (_REENT, str, fmt, ap); } #ifdef _NANO_FORMATTED_IO int vsiscanf (const char *, const char *, __VALIST) _ATTRIBUTE ((__alias__("vsscanf"))); #endif #endif /* !_REENT_ONLY */ int _vsscanf_r (struct _reent *ptr, const char *__restrict str, const char *__restrict fmt, va_list ap) { FILE f; f._flags = __SRD | __SSTR; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._r = strlen (str); f._read = __seofread; f._ub._base = NULL; f._lb._base = NULL; f._file = -1; /* No file. */ return __ssvfscanf_r (ptr, &f, fmt, ap); } #ifdef _NANO_FORMATTED_IO int _vsiscanf_r (struct _reent *, const char *, const char *, __VALIST) _ATTRIBUTE ((__alias__("_vsscanf_r"))); #endif picolibc-1.7.4/newlib/libc/stdio/vswprintf.c000066400000000000000000000045761414576234500210570ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* doc in vfwprintf.c */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include #include "local.h" int _vswprintf_r (struct _reent *ptr, wchar_t *str, size_t size, const wchar_t *fmt, va_list ap) { int ret; FILE f; if (size > INT_MAX / sizeof (wchar_t)) { __errno_r(ptr) = EOVERFLOW; /* POSIX extension */ return EOF; } f._flags = __SWR | __SSTR; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = (size > 0 ? (size - 1) * sizeof (wchar_t) : 0); f._file = -1; /* No file. */ ret = _svfwprintf_r (ptr, &f, fmt, ap); /* _svfwprintf_r() does not put in a terminating NUL, so add one if * appropriate, which is whenever size is > 0. _svfwprintf_r() stops * after n-1, so always just put at the end. */ if (size > 0) { *(wchar_t *)f._p = L'\0'; /* terminate the string */ } if(ret >= size) { /* _svfwprintf_r() returns how many wide characters it would have printed * if there were enough space. Return an error if too big to fit in str, * unlike snprintf, which returns the size needed. */ __errno_r(ptr) = EOVERFLOW; /* POSIX extension */ ret = -1; } return ret; } #ifndef _REENT_ONLY int vswprintf (wchar_t *__restrict str, size_t size, const wchar_t *__restrict fmt, va_list ap) { return _vswprintf_r (_REENT, str, size, fmt, ap); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/vswscanf.c000066400000000000000000000031431414576234500206340ustar00rootroot00000000000000/* * Code created by modifying scanf.c which has following copyright. * * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* Doc in vfwscanf.c */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include "local.h" /* * vsscanf */ #ifndef _REENT_ONLY int vswscanf (const wchar_t *__restrict str, const wchar_t * __restrict fmt, va_list ap) { return _vswscanf_r (_REENT, str, fmt, ap); } #endif /* !_REENT_ONLY */ int _vswscanf_r (struct _reent *ptr, const wchar_t *str, const wchar_t *fmt, va_list ap) { FILE f; f._flags = __SRD | __SSTR; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._r = wcslen (str) * sizeof (wchar_t); f._read = __seofread; f._ub._base = NULL; f._lb._base = NULL; f._file = -1; /* No file. */ return __ssvfwscanf_r (ptr, &f, fmt, ap); } picolibc-1.7.4/newlib/libc/stdio/vwprintf.c000066400000000000000000000025341414576234500206640ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* doc in vfwprintf.c */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "local.h" #ifndef _REENT_ONLY int vwprintf (const wchar_t *__restrict fmt, va_list ap) { struct _reent *reent = _REENT; _REENT_SMALL_CHECK_INIT (reent); return _vfwprintf_r (reent, _stdout_r (reent), fmt, ap); } #endif /* !_REENT_ONLY */ int _vwprintf_r (struct _reent *ptr, const wchar_t *fmt, va_list ap) { _REENT_SMALL_CHECK_INIT (ptr); return _vfwprintf_r (ptr, _stdout_r (ptr), fmt, ap); } picolibc-1.7.4/newlib/libc/stdio/vwscanf.c000066400000000000000000000026161414576234500204550ustar00rootroot00000000000000/*- * Code created by modifying scanf.c which has following copyright. * * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* Doc in vfwscanf.c */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "local.h" #ifndef _REENT_ONLY int vwscanf (const wchar_t *__restrict fmt, va_list ap) { struct _reent *reent = _REENT; _REENT_SMALL_CHECK_INIT (reent); return __svfwscanf_r (reent, _stdin_r (reent), fmt, ap); } #endif /* !_REENT_ONLY */ int _vwscanf_r (struct _reent *ptr, const wchar_t *fmt, va_list ap) { _REENT_SMALL_CHECK_INIT (ptr); return __svfwscanf_r (ptr, _stdin_r (ptr), fmt, ap); } picolibc-1.7.4/newlib/libc/stdio/wbuf.c000066400000000000000000000055041414576234500177500ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* No user fns here. Pesch 15apr92. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" #include "fvwrite.h" /* * Write the given character into the (probably full) buffer for * the given file. Flush the buffer out if it is or becomes full, * or if c=='\n' and the file is line buffered. */ int __swbuf_r (struct _reent *ptr, register int c, register FILE *fp) { register int n; /* Ensure stdio has been initialized. */ CHECK_INIT (ptr, fp); /* * In case we cannot write, or longjmp takes us out early, * make sure _w is 0 (if fully- or un-buffered) or -_bf._size * (if line buffered) so that we will get called again. * If we did not do this, a sufficient number of putc() * calls might wrap _w from negative to positive. */ fp->_w = fp->_lbfsize; if (cantwrite (ptr, fp)) return EOF; c = (unsigned char) c; ORIENT (fp, -1); /* * If it is completely full, flush it out. Then, in any case, * stuff c into the buffer. If this causes the buffer to fill * completely, or if c is '\n' and the file is line buffered, * flush it (perhaps a second time). The second flush will always * happen on unbuffered streams, where _bf._size==1; fflush() * guarantees that putc() will always call wbuf() by setting _w * to 0, so we need not do anything else. */ n = fp->_p - fp->_bf._base; if (n >= fp->_bf._size) { if (_fflush_r (ptr, fp)) return EOF; n = 0; } fp->_w--; *fp->_p++ = c; if (++n == fp->_bf._size || (fp->_flags & __SLBF && c == '\n')) if (_fflush_r (ptr, fp)) return EOF; return c; } /* This function isn't any longer declared in stdio.h, but it's required for backward compatibility with applications built against earlier dynamically built newlib libraries. */ int __swbuf (register int c, register FILE *fp) { return __swbuf_r (_REENT, c, fp); } picolibc-1.7.4/newlib/libc/stdio/wprintf.c000066400000000000000000000027151414576234500204770ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* doc in swprintf.c */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "local.h" int _wprintf_r (struct _reent *ptr, const wchar_t *fmt, ...) { int ret; va_list ap; _REENT_SMALL_CHECK_INIT (ptr); va_start (ap, fmt); ret = _vfwprintf_r (ptr, _stdout_r (ptr), fmt, ap); va_end (ap); return ret; } #ifndef _REENT_ONLY int wprintf (const wchar_t *__restrict fmt, ...) { int ret; va_list ap; struct _reent *ptr = _REENT; _REENT_SMALL_CHECK_INIT (ptr); va_start (ap, fmt); ret = _vfwprintf_r (ptr, _stdout_r (ptr), fmt, ap); va_end (ap); return ret; } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/wscanf.c000066400000000000000000000027101414576234500202620ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* Doc in swscanf.c */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "local.h" #ifndef _REENT_ONLY int wscanf(const wchar_t *__restrict fmt, ...) { int ret; va_list ap; struct _reent *reent = _REENT; _REENT_SMALL_CHECK_INIT (reent); va_start (ap, fmt); ret = _vfwscanf_r (reent, _stdin_r (reent), fmt, ap); va_end (ap); return ret; } #endif /* !_REENT_ONLY */ int _wscanf_r(struct _reent *ptr, const wchar_t *fmt, ...) { int ret; va_list ap; _REENT_SMALL_CHECK_INIT (ptr); va_start (ap, fmt); ret = _vfwscanf_r (ptr, _stdin_r (ptr), fmt, ap); va_end (ap); return (ret); } picolibc-1.7.4/newlib/libc/stdio/wsetup.c000066400000000000000000000050041414576234500203270ustar00rootroot00000000000000/* No user fns here. Pesch 15apr92. */ /* * Copyright (c) 1990, 2007 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "local.h" /* * Various output routines call wsetup to be sure it is safe to write, * because either _flags does not include __SWR, or _buf is NULL. * _wsetup returns 0 if OK to write, nonzero and set errno otherwise. */ int __swsetup_r (struct _reent *ptr, register FILE * fp) { /* Make sure stdio is set up. */ CHECK_INIT (_REENT, fp); /* * If we are not writing, we had better be reading and writing. */ if ((fp->_flags & __SWR) == 0) { if ((fp->_flags & __SRW) == 0) { __errno_r(ptr) = EBADF; fp->_flags |= __SERR; return EOF; } if (fp->_flags & __SRD) { /* clobber any ungetc data */ if (HASUB (fp)) FREEUB (ptr, fp); fp->_flags &= ~(__SRD | __SEOF); fp->_r = 0; fp->_p = fp->_bf._base; } fp->_flags |= __SWR; } /* * Make a buffer if necessary, then set _w. * A string I/O file should not explicitly allocate a buffer * unless asprintf is being used. */ if (fp->_bf._base == NULL && (!(fp->_flags & __SSTR) || (fp->_flags & __SMBF))) __smakebuf_r (ptr, fp); if (fp->_flags & __SLBF) { /* * It is line buffered, so make _lbfsize be -_bufsize * for the putc() macro. We will change _lbfsize back * to 0 whenever we turn off __SWR. */ fp->_w = 0; fp->_lbfsize = -fp->_bf._size; } else fp->_w = fp->_flags & __SNBF ? 0 : fp->_bf._size; if (!fp->_bf._base && (fp->_flags & __SMBF)) { /* __smakebuf_r set errno, but not flag */ fp->_flags |= __SERR; return EOF; } return 0; } picolibc-1.7.4/newlib/libc/stdio64/000077500000000000000000000000001414576234500170075ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/stdio64/fdopen64.c000066400000000000000000000047431414576234500206100ustar00rootroot00000000000000/* Copyright (c) 2003 Christopher Faylor */ /* FUNCTION <>---turn open large file into a stream INDEX fdopen64 INDEX _fdopen64_r SYNOPSIS #include FILE *fdopen64(int <[fd]>, const char *<[mode]>); FILE *_fdopen64_r(void *<[reent]>, int <[fd]>, const char *<[mode]>); DESCRIPTION <> produces a file descriptor of type <>, from a descriptor for an already-open file (returned, for example, by the system subroutine <> rather than by <>). The <[mode]> argument has the same meanings as in <>. RETURNS File pointer or <>, as for <>. */ #define _DEFAULT_SOURCE #include #include #include #include #include <_syslist.h> #include #include "../stdio/local.h" extern int __sflags (); FILE * _fdopen64_r (struct _reent *ptr, int fd, const char *mode) { register FILE *fp; int flags, oflags; #ifdef HAVE_FCNTL int fdflags, fdmode; #endif if ((flags = __sflags (ptr, mode, &oflags)) == 0) return 0; /* make sure the mode the user wants is a subset of the actual mode */ #ifdef HAVE_FCNTL if ((fdflags = fcntl (fd, F_GETFL, 0)) < 0) return 0; fdmode = fdflags & O_ACCMODE; if (fdmode != O_RDWR && (fdmode != (oflags & O_ACCMODE))) { __errno_r(ptr) = EBADF; return 0; } #endif if ((fp = __sfp (ptr)) == 0) return 0; _newlib_flockfile_start(fp); fp->_flags = flags; /* POSIX recommends setting the O_APPEND bit on fd to match append streams. Someone may later clear O_APPEND on fileno(fp), but the stream must still remain in append mode. Rely on __sflags setting __SAPP properly. */ #ifdef HAVE_FCNTL if ((oflags & O_APPEND) && !(fdflags & O_APPEND)) fcntl (fd, F_SETFL, fdflags | O_APPEND); #endif fp->_file = fd; fp->_cookie = (void *) fp; #undef _read #undef _write #undef _seek #undef _close fp->_read = __sread; fp->_write = __swrite64; fp->_seek = __sseek; fp->_seek64 = __sseek64; fp->_close = __sclose; #ifdef __SCLE /* Explicit given mode results in explicit setting mode on fd */ if (oflags & O_BINARY) setmode(fp->_file, O_BINARY); else if (oflags & O_TEXT) setmode(fp->_file, O_TEXT); if (__stextmode(fp->_file)) fp->_flags |= __SCLE; #endif fp->_flags |= __SL64; _newlib_flockfile_end(fp); return fp; } #ifndef _REENT_ONLY FILE * fdopen64 (int fd, const char *mode) { return _fdopen64_r (_REENT, fd, mode); } #endif picolibc-1.7.4/newlib/libc/stdio64/fgetpos64.c000066400000000000000000000047201414576234500207770ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---record position in a large stream or file INDEX fgetpos64 INDEX _fgetpos64_r SYNOPSIS #include int fgetpos64(FILE *<[fp]>, _fpos64_t *<[pos]>); int _fgetpos64_r(struct _reent *<[ptr]>, FILE *<[fp]>, _fpos64_t *<[pos]>); DESCRIPTION Objects of type <> can have a ``position'' that records how much of the file your program has already read. Many of the <> functions depend on this position, and many change it as a side effect. You can use <> to report on the current position for a file identified by <[fp]> that was opened by <>; <> will write a value representing that position at <<*<[pos]>>>. Later, you can use this value with <> to return the file to this position. In the current implementation, <> simply uses a character count to represent the file position; this is the same number that would be returned by <>. RETURNS <> returns <<0>> when successful. If <> fails, the result is <<1>>. Failure occurs on streams that do not support positioning or streams not opened via <>; the global <> indicates these conditions with the value <>. PORTABILITY <> is a glibc extension. No supporting OS subroutines are required. */ #define _DEFAULT_SOURCE #include #ifdef __LARGE64_FILES int _fgetpos64_r (struct _reent * ptr, FILE * fp, _fpos64_t * pos) { *pos = (_fpos64_t)_ftello64_r (ptr, fp); if (*pos != -1) { return 0; } return 1; } #ifndef _REENT_ONLY int fgetpos64 (FILE * fp, _fpos64_t * pos) { return _fgetpos64_r (_REENT, fp, pos); } #endif /* !_REENT_ONLY */ #endif /* __LARGE64_FILES */ picolibc-1.7.4/newlib/libc/stdio64/fopen64.c000066400000000000000000000060421414576234500204360ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---open a large file INDEX fopen64 INDEX _fopen64_r SYNOPSIS #include FILE *fopen64(const char *<[file]>, const char *<[mode]>); FILE *_fopen64_r(void *<[reent]>, const char *<[file]>, const char *<[mode]>); DESCRIPTION <> is identical to <> except it opens a large file that is potentially >2GB in size. See <> for further details. RETURNS <> return a file pointer which you can use for other file operations, unless the file you requested could not be opened; in that situation, the result is <>. If the reason for failure was an invalid string at <[mode]>, <> is set to <>. PORTABILITY <> is a glibc extension. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>, <>. */ /* Copied from fopen.c */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ #define _DEFAULT_SOURCE #include #include #include #include #include "../stdio/local.h" #ifdef __LARGE64_FILES FILE * _fopen64_r (struct _reent *ptr, const char *file, const char *mode) { register FILE *fp; register int f; int flags, oflags; if ((flags = __sflags (ptr, mode, &oflags)) == 0) return NULL; if ((fp = __sfp (ptr)) == NULL) return NULL; if ((f = open64 (file, oflags, 0666)) < 0) { _newlib_sfp_lock_start (); fp->_flags = 0; /* release */ #ifndef __SINGLE_THREAD__ __lock_close_recursive (fp->_lock); #endif _newlib_sfp_lock_end (); return NULL; } _newlib_flockfile_start (fp); fp->_file = f; fp->_flags = flags; fp->_cookie = (void *) fp; fp->_read = __sread; fp->_write = __swrite64; fp->_seek = __sseek; fp->_seek64 = __sseek64; fp->_close = __sclose; if (fp->_flags & __SAPP) _fseeko64_r (ptr, fp, 0, SEEK_END); #ifdef __SCLE if (__stextmode (fp->_file)) fp->_flags |= __SCLE; #endif fp->_flags |= __SL64; _newlib_flockfile_end (fp); return fp; } #ifndef _REENT_ONLY FILE * fopen64 (const char *file, const char *mode) { return _fopen64_r (_REENT, file, mode); } #endif #endif /* __LARGE64_FILES */ picolibc-1.7.4/newlib/libc/stdio64/freopen64.c000066400000000000000000000151711414576234500207700ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---open a large file using an existing file descriptor INDEX freopen64 INDEX _freopen64_r SYNOPSIS #include FILE *freopen64(const char *<[file]>, const char *<[mode]>, FILE *<[fp]>); FILE *_freopen64_r(struct _reent *<[ptr]>, const char *<[file]>, const char *<[mode]>, FILE *<[fp]>); DESCRIPTION Use this variant of <> if you wish to specify a particular file descriptor <[fp]> (notably <>, <>, or <>) for the file. If <[fp]> was associated with another file or stream, <> closes that other file or stream (but ignores any errors while closing it). <[file]> and <[mode]> are used just as in <>. If <[file]> is <>, the underlying stream is modified rather than closed. The file cannot be given a more permissive access mode (for example, a <[mode]> of "w" will fail on a read-only file descriptor), but can change status such as append or binary mode. If modification is not possible, failure occurs. RETURNS If successful, the result is the same as the argument <[fp]>. If the file cannot be opened as specified, the result is <>. PORTABILITY <> is a glibc extension. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include #include #include #include #include #include #include #include "../stdio/local.h" /* * Re-direct an existing, open (probably) file to some other file. */ #ifdef __LARGE64_FILES FILE * _freopen64_r (struct _reent *ptr, const char *file, const char *mode, register FILE *fp) { register int f; int flags, oflags, oflags2; int e = 0; CHECK_INIT (ptr, fp); /* We can't use the _newlib_flockfile_XXX macros here due to the interlocked locking with the sfp_lock. */ #ifdef _STDIO_WITH_THREAD_CANCELLATION_SUPPORT int __oldcancel; pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &__oldcancel); #endif oflags2 = fp->_flags2; if (!(oflags2 & __SNLK)) _flockfile (fp); if ((flags = __sflags (ptr, mode, &oflags)) == 0) { if (!(oflags2 & __SNLK)) _funlockfile (fp); #ifdef _STDIO_WITH_THREAD_CANCELLATION_SUPPORT pthread_setcancelstate (__oldcancel, &__oldcancel); #endif _fclose_r (ptr, fp); return NULL; } /* * Remember whether the stream was open to begin with, and * which file descriptor (if any) was associated with it. * If it was attached to a descriptor, defer closing it, * so that, e.g., freopen("/dev/stdin", "r", stdin) works. * This is unnecessary if it was not a Unix file. */ if (fp->_flags == 0) fp->_flags = __SEOF; /* hold on to it */ else { if (fp->_flags & __SWR) _fflush_r (ptr, fp); /* * If close is NULL, closing is a no-op, hence pointless. * If file is NULL, the file should not be closed. */ if (fp->_close != NULL && file != NULL) fp->_close (ptr, fp->_cookie); } /* * Now get a new descriptor to refer to the new file, or reuse the * existing file descriptor if file is NULL. */ if (file != NULL) { f = open64 ((char *) file, oflags, 0666); e = __errno_r(ptr); } else { #ifdef HAVE_FCNTL int oldflags; /* * Reuse the file descriptor, but only if the new access mode is * equal or less permissive than the old. F_SETFL correctly * ignores creation flags. */ f = fp->_file; if ((oldflags = fcntl (f, F_GETFL, 0)) == -1 || ! ((oldflags & O_ACCMODE) == O_RDWR || ((oldflags ^ oflags) & O_ACCMODE) == 0) || fcntl (f, F_SETFL, oflags) == -1) f = -1; #else /* We cannot modify without fcntl support. */ f = -1; #endif #ifdef __SCLE /* * F_SETFL doesn't change textmode. Don't mess with modes of ttys. */ if (0 <= f && ! isatty (f) && setmode (f, oflags & (O_BINARY | O_TEXT)) == -1) f = -1; #endif if (f < 0) { e = EBADF; if (fp->_close != NULL) fp->_close (ptr, fp->_cookie); } } /* * Finish closing fp. Even if the open succeeded above, * we cannot keep fp->_base: it may be the wrong size. * This loses the effect of any setbuffer calls, * but stdio has always done this before. */ if (fp->_flags & __SMBF) free ((char *) fp->_bf._base); fp->_w = 0; fp->_r = 0; fp->_p = NULL; fp->_bf._base = NULL; fp->_bf._size = 0; fp->_lbfsize = 0; if (HASUB (fp)) FREEUB (ptr, fp); fp->_ub._size = 0; if (HASLB (fp)) FREELB (ptr, fp); fp->_lb._size = 0; fp->_flags &= ~__SORD; fp->_flags2 &= ~__SWID; memset (&fp->_mbstate, 0, sizeof (_mbstate_t)); if (f < 0) { /* did not get it after all */ __sfp_lock_acquire (); fp->_flags = 0; /* set it free */ __errno_r(ptr) = e; /* restore in case _close clobbered */ if (!(oflags2 & __SNLK)) _funlockfile (fp); #ifndef __SINGLE_THREAD__ __lock_close_recursive (fp->_lock); #endif __sfp_lock_release (); #if !defined (__SINGLE_THREAD__) && defined (_POSIX_THREADS) pthread_setcancelstate (__oldcancel, &__oldcancel); #endif return NULL; } fp->_flags = flags; fp->_file = f; fp->_cookie = (void *) fp; fp->_read = __sread; fp->_write = __swrite64; fp->_seek = __sseek; fp->_seek64 = __sseek64; fp->_close = __sclose; #ifdef __SCLE if (__stextmode(fp->_file)) fp->_flags |= __SCLE; #endif fp->_flags |= __SL64; if (!(oflags2 & __SNLK)) _funlockfile (fp); #if !defined (__SINGLE_THREAD__) && defined (_POSIX_THREADS) pthread_setcancelstate (__oldcancel, &__oldcancel); #endif return fp; } #ifndef _REENT_ONLY FILE * freopen64 (const char *file, const char *mode, register FILE *fp) { return _freopen64_r (_REENT, file, mode, fp); } #endif /* !_REENT_ONLY */ #endif /* __LARGE64_FILES */ picolibc-1.7.4/newlib/libc/stdio64/fseeko64.c000066400000000000000000000213731414576234500206070ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---set file position for large file INDEX fseeko64 INDEX _fseeko64_r SYNOPSIS #include int fseeko64(FILE *<[fp]>, _off64_t <[offset]>, int <[whence]>); int _fseeko64_r (struct _reent *<[ptr]>, FILE *<[fp]>, _off64_t <[offset]>, int <[whence]>); DESCRIPTION Objects of type <> can have a ``position'' that records how much of the file your program has already read. Many of the <> functions depend on this position, and many change it as a side effect. You can use <> to set the position for the file identified by <[fp]> that was opened via <>. The value of <[offset]> determines the new position, in one of three ways selected by the value of <[whence]> (defined as macros in `<>'): <>---<[offset]> is the absolute file position (an offset from the beginning of the file) desired. <[offset]> must be positive. <>---<[offset]> is relative to the current file position. <[offset]> can meaningfully be either positive or negative. <>---<[offset]> is relative to the current end of file. <[offset]> can meaningfully be either positive (to increase the size of the file) or negative. See <> to determine the current file position. RETURNS <> returns <<0>> when successful. On failure, the result is <>. The reason for failure is indicated in <>: either <> (the stream identified by <[fp]> doesn't support repositioning or wasn't opened via <>) or <> (invalid file position). PORTABILITY <> is a glibc extension. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include #include #include #include #include #include #include #include "../stdio/local.h" #define POS_ERR (-(_fpos64_t)1) #ifdef __LARGE64_FILES /* * Seek the given file to the given offset. * `Whence' must be one of the three SEEK_* macros. */ _off64_t _fseeko64_r (struct _reent *ptr, register FILE *fp, _off64_t offset, int whence) { _fpos64_t (*seekfn) (struct _reent *, void *, _fpos64_t, int); _fpos64_t curoff; #if _FSEEK_OPTIMIZATION _fpos64_t target; size_t n; #endif int havepos; /* Only do 64-bit seek on large file. */ if (!(fp->_flags & __SL64)) { if ((_off_t) offset != offset) { __errno_r(ptr) = EOVERFLOW; return EOF; } return (_off64_t) _fseeko_r (ptr, fp, offset, whence); } /* Make sure stdio is set up. */ CHECK_INIT (ptr, fp); _newlib_flockfile_start (fp); curoff = fp->_offset; /* If we've been doing some writing, and we're in append mode then we don't really know where the filepos is. */ if (fp->_flags & __SAPP && fp->_flags & __SWR) { /* So flush the buffer and seek to the end. */ _fflush_r (ptr, fp); } /* Have to be able to seek. */ if ((seekfn = fp->_seek64) == NULL) { __errno_r(ptr) = ESPIPE; /* ??? */ _newlib_flockfile_exit(fp); return EOF; } /* * Change any SEEK_CUR to SEEK_SET, and check `whence' argument. * After this, whence is either SEEK_SET or SEEK_END. */ switch (whence) { case SEEK_CUR: /* * In order to seek relative to the current stream offset, * we have to first find the current stream offset a la * ftell (see ftell for details). */ _fflush_r (ptr, fp); /* may adjust seek offset on append stream */ if (fp->_flags & __SOFF) curoff = fp->_offset; else { curoff = seekfn (ptr, fp->_cookie, (_fpos64_t) 0, SEEK_CUR); if (curoff == -1L) { _newlib_flockfile_exit(fp); return EOF; } } if (fp->_flags & __SRD) { curoff -= fp->_r; if (HASUB (fp)) curoff -= fp->_ur; } else if (fp->_flags & __SWR && fp->_p != NULL) curoff += fp->_p - fp->_bf._base; offset += curoff; whence = SEEK_SET; havepos = 1; break; case SEEK_SET: case SEEK_END: havepos = 0; break; default: __errno_r(ptr) = EINVAL; _newlib_flockfile_exit(fp); return (EOF); } (void) havepos; /* * Can only optimise if: * reading (and not reading-and-writing); * not unbuffered; and * this is a `regular' Unix file (and hence seekfn==__sseek). * We must check __NBF first, because it is possible to have __NBF * and __SOPT both set. */ if (fp->_bf._base == NULL) __smakebuf_r (ptr, fp); #if _FSEEK_OPTIMIZATION if (fp->_flags & (__SWR | __SRW | __SNBF | __SNPT)) goto dumb; if ((fp->_flags & __SOPT) == 0) { struct stat64 st; if (seekfn != __sseek64 || fp->_file < 0 || _fstat64_r (ptr, fp->_file, &st) || (st.st_mode & S_IFMT) != S_IFREG) { fp->_flags |= __SNPT; goto dumb; } #ifdef HAVE_BLKSIZE fp->_blksize = st.st_blksize; #else fp->_blksize = 1024; #endif fp->_flags |= __SOPT; } /* * We are reading; we can try to optimise. * Figure out where we are going and where we are now. */ if (whence == SEEK_SET) target = offset; else { if (_fstat64_r (ptr, fp->_file, &st)) goto dumb; target = st.st_size + offset; } if (!havepos) { if (fp->_flags & __SOFF) curoff = fp->_offset; else { curoff = seekfn (ptr, fp->_cookie, (_fpos64_t)0, SEEK_CUR); if (curoff == POS_ERR) goto dumb; } curoff -= fp->_r; if (HASUB (fp)) curoff -= fp->_ur; } /* * Compute the number of bytes in the input buffer (pretending * that any ungetc() input has been discarded). Adjust current * offset backwards by this count so that it represents the * file offset for the first byte in the current input buffer. */ if (HASUB (fp)) { curoff += fp->_r; /* kill off ungetc */ n = fp->_up - fp->_bf._base; curoff -= n; n += fp->_ur; } else { n = fp->_p - fp->_bf._base; curoff -= n; n += fp->_r; } /* * If the target offset is within the current buffer, * simply adjust the pointers, clear EOF, undo ungetc(), * and return. */ if (target >= curoff && target < curoff + n) { register int o = target - curoff; fp->_p = fp->_bf._base + o; fp->_r = n - o; if (HASUB (fp)) FREEUB (ptr, fp); fp->_flags &= ~__SEOF; _newlib_flockfile_exit(fp); return 0; } /* * The place we want to get to is not within the current buffer, * but we can still be kind to the kernel copyout mechanism. * By aligning the file offset to a block boundary, we can let * the kernel use the VM hardware to map pages instead of * copying bytes laboriously. Using a block boundary also * ensures that we only read one block, rather than two. */ curoff = target & ~((_fpos64_t)(fp->_blksize - 1)); if (seekfn (ptr, fp->_cookie, curoff, SEEK_SET) == POS_ERR) goto dumb; fp->_r = 0; fp->_p = fp->_bf._base; if (HASUB (fp)) FREEUB (ptr, fp); fp->_flags &= ~__SEOF; n = target - curoff; if (n) { if (__srefill_r (ptr, fp) || fp->_r < n) goto dumb; fp->_p += n; fp->_r -= n; } _newlib_flockfile_exit(fp); return 0; /* * We get here if we cannot optimise the seek ... just * do it. Allow the seek function to change fp->_bf._base. */ dumb: #endif if (_fflush_r (ptr, fp) || seekfn (ptr, fp->_cookie, offset, whence) == POS_ERR) { _newlib_flockfile_exit(fp); return EOF; } /* success: clear EOF indicator and discard ungetc() data */ if (HASUB (fp)) FREEUB (ptr, fp); fp->_p = fp->_bf._base; fp->_r = 0; /* fp->_w = 0; *//* unnecessary (I think...) */ fp->_flags &= ~__SEOF; _newlib_flockfile_end (fp); return 0; } #ifndef _REENT_ONLY _off64_t fseeko64 (register FILE *fp, _off64_t offset, int whence) { return _fseeko64_r (_REENT, fp, offset, whence); } #endif /* !_REENT_ONLY */ #endif /* __LARGE64_FILES */ picolibc-1.7.4/newlib/libc/stdio64/fsetpos64.c000066400000000000000000000044631414576234500210170ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---restore position of a large stream or file INDEX fsetpos64 INDEX _fsetpos64_r SYNOPSIS #include int fsetpos64(FILE *<[fp]>, const _fpos64_t *<[pos]>); int _fsetpos64_r(struct _reent *<[ptr]>, FILE *<[fp]>, const _fpos64_t *<[pos]>); DESCRIPTION Objects of type <> can have a ``position'' that records how much of the file your program has already read. Many of the <> functions depend on this position, and many change it as a side effect. You can use <> to return the large file identified by <[fp]> to a previous position <<*<[pos]>>> (after first recording it with <>). See <> for a similar facility. RETURNS <> returns <<0>> when successful. If <> fails, the result is <<1>>. The reason for failure is indicated in <>: either <> (the stream identified by <[fp]> doesn't support 64-bit repositioning) or <> (invalid file position). PORTABILITY <> is a glibc extension. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include #ifdef __LARGE64_FILES int _fsetpos64_r (struct _reent *ptr, FILE * iop, const _fpos64_t * pos) { int x = _fseeko64_r (ptr, iop, (_off64_t)(*pos), SEEK_SET); if (x != 0) return 1; return 0; } #ifndef _REENT_ONLY int fsetpos64 (FILE * iop, const _fpos64_t * pos) { return _fsetpos64_r (_REENT, iop, pos); } #endif /* !_REENT_ONLY */ #endif /* __LARGE64_FILES */ picolibc-1.7.4/newlib/libc/stdio64/ftello64.c000066400000000000000000000104621414576234500206150ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---return position in a stream or file INDEX ftello64 INDEX _ftello64_r SYNOPSIS #include _off64_t ftello64(FILE *<[fp]>); _off64_t _ftello64_r(struct _reent *<[ptr]>, FILE *<[fp]>); DESCRIPTION Objects of type <> can have a ``position'' that records how much of the file your program has already read. Many of the <> functions depend on this position, and many change it as a side effect. The result of <> is the current position for a large file identified by <[fp]>. If you record this result, you can later use it with <> to return the file to this position. The difference between <> and <> is that <> returns <> and <> is designed to work for large files (>2GB) and returns <<_off64_t>>. In the current implementation, <> simply uses a character count to represent the file position; this is the same number that would be recorded by <>. The function exists only if the __LARGE64_FILES flag is defined. An error occurs if the <[fp]> was not opened via <>. RETURNS <> returns the file position, if possible. If it cannot do this, it returns <<-1>>. Failure occurs on streams that do not support positioning or not opened via <>; the global <> indicates this condition with the value <>. PORTABILITY <> is a glibc extension. No supporting OS subroutines are required. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ /* * ftello64: return current offset. */ #define _DEFAULT_SOURCE #include #include #include "../stdio/local.h" #ifdef __LARGE64_FILES _off64_t _ftello64_r (struct _reent *ptr, register FILE * fp) { _fpos64_t pos; /* Only do 64-bit tell on large file. */ if (!(fp->_flags & __SL64)) return (_off64_t) _ftello_r (ptr, fp); /* Ensure stdio is set up. */ CHECK_INIT (ptr, fp); _newlib_flockfile_start(fp); if (fp->_seek64 == NULL) { __errno_r(ptr) = ESPIPE; _newlib_flockfile_exit(fp); return (_off64_t) -1; } /* Find offset of underlying I/O object, then adjust for buffered bytes. */ if (!(fp->_flags & __SRD) && (fp->_flags & __SWR) && fp->_p != NULL && fp->_p - fp->_bf._base > 0 && (fp->_flags & __SAPP)) { pos = fp->_seek64 (ptr, fp->_cookie, (_fpos64_t) 0, SEEK_END); if (pos == (_fpos64_t) -1) { _newlib_flockfile_exit (fp); return (_off64_t) -1; } } else if (fp->_flags & __SOFF) pos = fp->_offset; else { pos = fp->_seek64 (ptr, fp->_cookie, (_fpos64_t) 0, SEEK_CUR); if (pos == (_fpos64_t) -1) { _newlib_flockfile_exit(fp); return (_off64_t) pos; } } if (fp->_flags & __SRD) { /* * Reading. Any unread characters (including * those from ungetc) cause the position to be * smaller than that in the underlying object. */ pos -= fp->_r; if (HASUB (fp)) pos -= fp->_ur; } else if (fp->_flags & __SWR && fp->_p != NULL) { /* * Writing. Any buffered characters cause the * position to be greater than that in the * underlying object. */ pos += fp->_p - fp->_bf._base; } _newlib_flockfile_end(fp); return (_off64_t) pos; } #ifndef _REENT_ONLY _off64_t ftello64 (register FILE * fp) { return _ftello64_r (_REENT, fp); } #endif /* !_REENT_ONLY */ #endif /* __LARGE64_FILES */ picolibc-1.7.4/newlib/libc/stdio64/meson.build000066400000000000000000000041171414576234500211540ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2020 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # srcs_stdio64 = [ 'fdopen64.c', 'fgetpos64.c', 'fopen64.c', 'freopen64.c', 'fseeko64.c', 'fsetpos64.c', 'ftello64.c', 'stdio64.c', 'tmpfile64.c', ] srcs_stdio64_use = [] foreach file : srcs_stdio64 s_file = fs.replace_suffix(file, '.S') if file in srcs_machine message('libc/stdio64/' + file + ': machine overrides generic') elif s_file in srcs_machine message('libc/stdio64/' + s_file + ': machine overrides generic') else srcs_stdio64_use += file endif endforeach src_stdio64 = files(srcs_stdio64_use) picolibc-1.7.4/newlib/libc/stdio64/stdio64.c000066400000000000000000000041021414576234500204440ustar00rootroot00000000000000/* No user fns here. Pesch 15apr92. */ /* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #define _DEFAULT_SOURCE #include #include #include #include #include #include "../stdio/local.h" #ifdef __LARGE64_FILES _off64_t lseek64(int fd, _off64_t offset, int whence); fpos64_t __sseek64 (struct _reent *ptr, void *cookie, _fpos64_t offset, int whence) { register FILE *fp = (FILE *) cookie; register _off64_t ret; (void) ptr; ret = lseek64 (fp->_file, (_off64_t) offset, whence); if (ret == (_fpos64_t)-1L) fp->_flags &= ~__SOFF; else { fp->_flags |= __SOFF; fp->_offset = ret; } return ret; } _READ_WRITE_RETURN_TYPE __swrite64 (struct _reent *ptr, void *cookie, char const *buf, _READ_WRITE_BUFSIZE_TYPE n) { register FILE *fp = (FILE *) cookie; _READ_WRITE_RETURN_TYPE w; #ifdef __SCLE int oldmode=0; #endif (void) ptr; if (fp->_flags & __SAPP) (void) lseek64 (fp->_file, (_off64_t)0, SEEK_END); fp->_flags &= ~__SOFF; /* in case O_APPEND mode is set */ #ifdef __SCLE if (fp->_flags & __SCLE) oldmode = setmode(fp->_file, O_BINARY); #endif w = write (fp->_file, buf, n); #ifdef __SCLE if (oldmode) setmode(fp->_file, oldmode); #endif return w; } #endif /* __LARGE64_FILES */ picolibc-1.7.4/newlib/libc/stdio64/stdio64.tex000066400000000000000000000035041414576234500210270ustar00rootroot00000000000000# #Copyright (c) 1990 The Regents of the University of California. #All rights reserved. # #Redistribution and use in source and binary forms are permitted #provided that the above copyright notice and this paragraph are #duplicated in all such forms and that any documentation, #and/or other materials related to such #distribution and use acknowledge that the software was developed #by the University of California, Berkeley. The name of the #University may not be used to endorse or promote products derived #from this software without specific prior written permission. #THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR #IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED #WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. # @node Stdio64 @chapter Large File Input and Output (@file{stdio.h}) This chapter comprises additional functions to manage large files which are potentially larger than 2GB. The underlying facilities for input and output depend on the host system, but these functions provide a uniform interface. The corresponding declarations are in @file{stdio.h}. @menu * fdopen64:: Turn open large file into a stream * fopen64:: Open a large file * freopen64:: Open a large file using an existing file descriptor * fsetpos64:: Restore position of a large stream or file * fgetpos64:: Get position of a large stream or file * ftello64:: Return position in a large stream or file * fseeko64:: Set large file position * tmpfile64:: Create a temporary large file @end menu @page @include stdio64/fdopen64.def @page @include stdio64/fopen64.def @page @include stdio64/freopen64.def @page @include stdio64/ftello64.def @page @include stdio64/fseeko64.def @page @include stdio64/fgetpos64.def @page @include stdio64/fsetpos64.def @page @include stdio64/tmpfile64.def picolibc-1.7.4/newlib/libc/stdio64/tmpfile64.c000066400000000000000000000053201414576234500207650ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---create a large temporary file INDEX tmpfile64 INDEX _tmpfile64_r SYNOPSIS #include FILE *tmpfile64(void); FILE *_tmpfile64_r(void *<[reent]>); DESCRIPTION Create a large temporary file (a file which will be deleted automatically), using a name generated by <>. The temporary file is opened with the mode <<"wb+">>, permitting you to read and write anywhere in it as a binary file (without any data transformations the host system may perform for text files). The file may be larger than 2GB. The alternate function <<_tmpfile64_r>> is a reentrant version. The argument <[reent]> is a pointer to a reentrancy structure. Both <> and <<_tmpfile64_r>> are only defined if __LARGE64_FILES is defined. RETURNS <> normally returns a pointer to the temporary file. If no temporary file could be created, the result is NULL, and <> records the reason for failure. PORTABILITY <> is a glibc extension. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>, <>, <>. <> also requires the global pointer <>. */ #include #include #include #include #include #include #ifndef O_BINARY # define O_BINARY 0 #endif #ifdef __LARGE64_FILES FILE * _tmpfile64_r (struct _reent *ptr) { FILE *fp; int e; char *f; char buf[L_tmpnam]; int fd; do { if ((f = _tmpnam_r (ptr, buf)) == NULL) return NULL; fd = open64 (f, O_RDWR | O_CREAT | O_EXCL | O_BINARY, S_IRUSR | S_IWUSR); } while (fd < 0 && __errno_r(ptr) == EEXIST); if (fd < 0) return NULL; fp = _fdopen64_r (ptr, fd, "wb+"); e = __errno_r(ptr); if (!fp) close (fd); (void) _remove_r (ptr, f); __errno_r(ptr) = e; return fp; } #ifndef _REENT_ONLY FILE * tmpfile64 (void) { return _tmpfile64_r (_REENT); } #endif #endif /* __LARGE64_FILES */ picolibc-1.7.4/newlib/libc/stdlib/000077500000000000000000000000001414576234500167745ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/stdlib/_Exit.c000066400000000000000000000017471414576234500202210ustar00rootroot00000000000000/* Copyright (c) 2002 Jeff Johnston */ /* FUNCTION <<_Exit>>---end program execution with no cleanup processing INDEX _Exit SYNOPSIS #include void _Exit(int <[code]>); DESCRIPTION Use <<_Exit>> to return control from a program to the host operating environment. Use the argument <[code]> to pass an exit status to the operating environment: two particular values, <> and <>, are defined in `<>' to indicate success or failure in a portable fashion. <<_Exit>> differs from <> in that it does not run any application-defined cleanup functions registered with <> and it does not clean up files and streams. It is identical to <<_exit>>. RETURNS <<_Exit>> does not return to its caller. PORTABILITY <<_Exit>> is defined by the C99 standard. Supporting OS subroutines required: <<_exit>>. */ #include #include /* for _exit() declaration */ void _Exit (int code) { _exit (code); } picolibc-1.7.4/newlib/libc/stdlib/__atexit.c000066400000000000000000000056161414576234500207440ustar00rootroot00000000000000/* Copyright (c) 2004 Paul Brook */ /* * Common routine to implement atexit-like functionality. * * This is also the key function to be configured as lite exit, a size-reduced * implementation of exit that doesn't invoke clean-up functions such as _fini * or global destructors. * * Default (without lite exit) call graph is like: * _start -> atexit -> __register_exitproc * _start -> __libc_init_array -> __cxa_atexit -> __register_exitproc * on_exit -> __register_exitproc * _start -> exit -> __call_exitprocs * * Here an -> means arrow tail invokes arrow head. All invocations here * are non-weak reference in current newlib. * * Lite exit makes some of above calls as weak reference, so that size expansive * functions __register_exitproc and __call_exitprocs may not be linked. These * calls are: * _start w-> atexit * __cxa_atexit w-> __register_exitproc * exit w-> __call_exitprocs * * Lite exit also makes sure that __call_exitprocs will be referenced as non-weak * whenever __register_exitproc is referenced as non-weak. * * Thus with lite exit libs, a program not explicitly calling atexit or on_exit * will escape from the burden of cleaning up code. A program with atexit or on_exit * will work consistently to normal libs. * * Lite exit is enabled with --enable-lite-exit, and is controlled with macro * _LITE_EXIT. */ #include #include #include #include "atexit.h" /* Make this a weak reference to avoid pulling in malloc. */ #ifndef MALLOC_PROVIDED void * malloc(size_t) _ATTRIBUTE((__weak__)); #endif #ifdef _LITE_EXIT /* As __call_exitprocs is weak reference in lite exit, make a non-weak reference to it here. */ const void * __atexit_dummy = &__call_exitprocs; #endif NEWLIB_THREAD_LOCAL_ATEXIT struct _atexit _atexit0; NEWLIB_THREAD_LOCAL_ATEXIT struct _atexit *_atexit; /* * Register a function to be performed at exit or on shared library unload. */ int __register_exitproc (int type, void (*fn) (void), void *arg, void *d) { struct _on_exit_args * args; register struct _atexit *p; __LIBC_LOCK(); p = _atexit; if (p == NULL) { _atexit = p = &_atexit0; } if (p->_ind >= _ATEXIT_SIZE) { #if !defined (_ATEXIT_DYNAMIC_ALLOC) || !defined (MALLOC_PROVIDED) __LIBC_UNLOCK(); return -1; #else p = (struct _atexit *) malloc (sizeof *p); if (p == NULL) { __LIBC_UNLOCK(); return -1; } p->_ind = 0; p->_next = _atexit; _atexit = p; p->_on_exit_args._fntypes = 0; p->_on_exit_args._is_cxa = 0; #endif } if (type != __et_atexit) { args = &p->_on_exit_args; args->_fnargs[p->_ind] = arg; args->_fntypes |= (1 << p->_ind); args->_dso_handle[p->_ind] = d; if (type == __et_cxa) args->_is_cxa |= (1 << p->_ind); } p->_fns[p->_ind++] = fn; __LIBC_UNLOCK(); return 0; } picolibc-1.7.4/newlib/libc/stdlib/__call_atexit.c000066400000000000000000000113151414576234500217300ustar00rootroot00000000000000/* Copyright (c) 2004 Paul Brook Common routine to implement atexit-like functionality. This is also the key function to be configured as lite exit, a size-reduced implementation of exit that doesn't invoke clean-up functions such as _fini or global destructors. Default (without lite exit) call graph is like: start -> atexit -> __register_exitproc start -> __libc_init_array -> __cxa_atexit -> __register_exitproc on_exit -> __register_exitproc start -> exit -> __call_exitprocs Here an -> means arrow tail invokes arrow head. All invocations here are non-weak reference in current newlib. Lite exit makes some of above calls as weak reference, so that size expansive functions __register_exitproc and __call_exitprocs may not be linked. These calls are: start w-> atexit cxa_atexit w-> __register_exitproc exit w-> __call_exitprocs Lite exit also makes sure that __call_exitprocs will be referenced as non-weak whenever __register_exitproc is referenced as non-weak. Thus with lite exit libs, a program not explicitly calling atexit or on_exit will escape from the burden of cleaning up code. A program with atexit or on_exit will work consistently to normal libs. Lite exit is enabled with --enable-lite-exit, and is controlled with macro LITE_EXIT. */ /* * COmmon routine to call call registered atexit-like routines. */ #include #include #include "atexit.h" /* Make this a weak reference to avoid pulling in free. */ #ifndef MALLOC_PROVIDED void free(void *) _ATTRIBUTE((__weak__)); #endif #ifdef _WANT_REGISTER_FINI /* If "__libc_fini" is defined, finalizers (either "__libc_fini_array", or "_fini", as appropriate) will be run after all user-specified atexit handlers. For example, you can define "__libc_fini" to "_fini" in your linker script if you want the C library, rather than startup code, to register finalizers. If you do that, then your startup code need not contain references to "atexit" or "exit". As a result, only applications that reference "exit" explicitly will pull in finalization code. The choice of whether to register finalizers from libc or from startup code is deferred to link-time, rather than being a configure-time option, so that the same C library binary can be used with multiple BSPs, some of which register finalizers from startup code, while others defer to the C library. */ extern char __libc_fini __attribute__((weak)); /* Register the application finalization function with atexit. These finalizers should run last. Therefore, we want to call atexit as soon as possible. */ static void register_fini(void) __attribute__((constructor (0))); static void register_fini(void) { if (&__libc_fini) { #ifdef HAVE_INITFINI_ARRAY extern void __libc_fini_array (void); atexit (__libc_fini_array); #else extern void _fini (void); atexit (_fini); #endif } } #endif /* _WANT_REGISTER_FINI */ /* * Call registered exit handlers. If D is null then all handlers are called, * otherwise only the handlers from that DSO are called. */ void __call_exitprocs (int code, void *d) { register struct _atexit *p; struct _atexit **lastp; register struct _on_exit_args * args; register int n; int i; void (*fn) (void); __LIBC_LOCK(); restart: p = _atexit; lastp = &_atexit; while (p) { args = &p->_on_exit_args; for (n = p->_ind - 1; n >= 0; n--) { int ind; i = 1 << n; /* Skip functions not from this dso. */ if (d && (!args || args->_dso_handle[n] != d)) continue; /* Remove the function now to protect against the function calling exit recursively. */ fn = p->_fns[n]; if (n == p->_ind - 1) p->_ind--; else p->_fns[n] = NULL; /* Skip functions that have already been called. */ if (!fn) continue; ind = p->_ind; /* Call the function. */ if (!args || (args->_fntypes & i) == 0) fn (); else if ((args->_is_cxa & i) == 0) (*((void (*)(int, void *)) fn))(code, args->_fnargs[n]); else (*((void (*)(void *)) fn))(args->_fnargs[n]); /* The function we called call atexit and registered another function (or functions). Call these new functions before continuing with the already registered functions. */ if (ind != p->_ind || *lastp != p) goto restart; } #if !defined (_ATEXIT_DYNAMIC_ALLOC) || !defined (MALLOC_PROVIDED) break; #else /* Move to the next block. Free empty blocks except the last one, which is part of _GLOBAL_REENT. */ if (p->_ind == 0 && p->_next) { /* Remove empty block from the list. */ *lastp = p->_next; free (p); p = *lastp; } else { lastp = &p->_next; p = p->_next; } #endif } __LIBC_UNLOCK(); } picolibc-1.7.4/newlib/libc/stdlib/a64l.c000066400000000000000000000072071414576234500177140ustar00rootroot00000000000000/* Copyright (c) 2002 Jeff Johnston */ /* FUNCTION <>, <>---convert between radix-64 ASCII string and long INDEX a64l INDEX l64a SYNOPSIS #include long a64l(const char *<[input]>); char *l64a(long <[input]>); DESCRIPTION Conversion is performed between long and radix-64 characters. The <> routine transforms up to 32 bits of input value starting from least significant bits to the most significant bits. The input value is split up into a maximum of 5 groups of 6 bits and possibly one group of 2 bits (bits 31 and 30). Each group of 6 bits forms a value from 0--63 which is translated into a character as follows: O+ o 0 = '.' o 1 = '/' o 2--11 = '0' to '9' o 12--37 = 'A' to 'Z' o 38--63 = 'a' to 'z' O- When the remaining bits are zero or all bits have been translated, a null terminator is appended to the string. An input value of 0 results in the empty string. The <> function performs the reverse translation. Each character is used to generate a 6-bit value for up to 30 bits and then a 2-bit value to complete a 32-bit result. The null terminator means that the remaining digits are 0. An empty input string or NULL string results in 0L. An invalid string results in undefined behavior. If the size of a long is greater than 32 bits, the result is sign-extended. RETURNS <> returns a null-terminated string of 0 to 6 characters. <> returns the 32-bit translated value from the input character string. PORTABILITY <> and <> are non-ANSI and are defined by the Single Unix Specification. Supporting OS subroutines required: None. */ #include <_ansi.h> #include #include long a64l (const char *input) { const char *ptr; char ch; int i, digit; unsigned long result = 0; if (input == NULL) return 0; ptr = input; /* it easiest to go from most significant digit to least so find end of input or up to 6 characters worth */ for (i = 0; i < 6; ++i) { if (*ptr) ++ptr; } while (ptr > input) { ch = *(--ptr); #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) if (ch >= 'a') digit = (ch - 'a') + 38; else if (ch >= 'A') digit = (ch - 'A') + 12; else if (ch >= '0') digit = (ch - '0') + 2; else if (ch == '/') digit = 1; else digit = 0; #else /* !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) */ switch (ch) { case '/': digit = 1; break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': digit = (ch - '0') + 2; break; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': digit = (ch - 'A') + 12; break; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': digit = (ch - 'a') + 38; break; default: digit = 0; break; } #endif /* !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) */ result = (result << 6) + digit; } #if LONG_MAX > 2147483647 /* for implementations where long is > 32 bits, the result must be sign-extended */ if (result & 0x80000000) return (~0UL << 32) + result; #endif return result; } picolibc-1.7.4/newlib/libc/stdlib/abort.c000066400000000000000000000027531414576234500202560ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ /* NetWare can not use this implementation of abort. It provides its own version of abort in clib.nlm. If we can not use clib.nlm, then we must write abort in sys/netware. */ #ifdef ABORT_PROVIDED int _dummy_abort = 1; #else /* FUNCTION <>---abnormal termination of a program INDEX abort SYNOPSIS #include void abort(void); DESCRIPTION Use <> to signal that your program has detected a condition it cannot deal with. Normally, <> ends your program's execution. Before terminating your program, <> raises the exception <> (using `<>'). If you have used <> to register an exception handler for this condition, that handler has the opportunity to retain control, thereby avoiding program termination. In this implementation, <> does not perform any stream- or file-related cleanup (the host environment may do so; if not, you can arrange for your program to do its own cleanup with a <> exception handler). RETURNS <> does not return to its caller. PORTABILITY ANSI C requires <>. Supporting OS subroutines required: <<_exit>> and optionally, <>. */ #include #include #include void abort (void) { #ifdef ABORT_MESSAGE write (2, "Abort called\n", sizeof ("Abort called\n")-1); #endif while (1) { raise (SIGABRT); _exit (1); } } #endif picolibc-1.7.4/newlib/libc/stdlib/abs.c000066400000000000000000000013201414576234500177010ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ /* FUNCTION <>---integer absolute value (magnitude) INDEX abs SYNOPSIS #include int abs(int <[i]>); DESCRIPTION <> returns @tex $|x|$, @end tex the absolute value of <[i]> (also called the magnitude of <[i]>). That is, if <[i]> is negative, the result is the opposite of <[i]>, but if <[i]> is nonnegative the result is <[i]>. The similar function <> uses and returns <> rather than <> values. RETURNS The result is a nonnegative integer. PORTABILITY <> is ANSI. No supporting OS subroutines are required. */ #include int abs (int i) { return (i < 0) ? -i : i; } picolibc-1.7.4/newlib/libc/stdlib/aligned_alloc.c000066400000000000000000000032221414576234500217140ustar00rootroot00000000000000/* C11 aligned_alloc Copyright (c) 2020 Arm Ltd. All rights reserved. SPDX-License-Identifier: BSD-3-Clause Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the company may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #ifndef HAVE_ALIAS_ATTRIBUTE void * aligned_alloc (size_t align, size_t size) { return memalign (align, size); } #endif picolibc-1.7.4/newlib/libc/stdlib/arc4random.c000066400000000000000000000114141414576234500211730ustar00rootroot00000000000000/* $OpenBSD: arc4random.c,v 1.52 2015/01/16 16:48:51 deraadt Exp $ */ /* * Copyright (c) 1996, David Mazieres * Copyright (c) 2008, Damien Miller * Copyright (c) 2013, Markus Friedl * Copyright (c) 2014, Theo de Raadt * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * ChaCha based random number generator for OpenBSD. */ #define _DEFAULT_SOURCE #include #include #include #include #include #include #include #include #include #define KEYSTREAM_ONLY #include "chacha_private.h" #define min(a, b) ((a) < (b) ? (a) : (b)) #ifdef __GNUC__ #define inline __inline #else /* !__GNUC__ */ #define inline #endif /* !__GNUC__ */ #define KEYSZ 32 #define IVSZ 8 #define BLOCKSZ 64 #define RSBUFSZ (16*BLOCKSZ) /* Marked MAP_INHERIT_ZERO, so zero'd out in fork children. */ static struct _rs { size_t rs_have; /* valid bytes at end of rs_buf */ size_t rs_count; /* bytes till reseed */ } *rs; /* Maybe be preserved in fork children, if _rs_allocate() decides. */ static struct _rsx { chacha_ctx rs_chacha; /* chacha context for random keystream */ unsigned char rs_buf[RSBUFSZ]; /* keystream blocks */ } *rsx; static inline int _rs_allocate(struct _rs **, struct _rsx **); static inline void _rs_forkdetect(void); #include "arc4random.h" static inline void _rs_rekey(unsigned char *dat, size_t datlen); static inline void _rs_init(unsigned char *buf, size_t n) { if (n < KEYSZ + IVSZ) return; if (rs == NULL) { if (_rs_allocate(&rs, &rsx) == -1) abort(); } chacha_keysetup(&rsx->rs_chacha, buf, KEYSZ * 8, 0); chacha_ivsetup(&rsx->rs_chacha, buf + KEYSZ); } static void _rs_stir(void) { unsigned char rnd[KEYSZ + IVSZ]; if (getentropy(rnd, sizeof rnd) == -1) _getentropy_fail(); if (!rs) _rs_init(rnd, sizeof(rnd)); else _rs_rekey(rnd, sizeof(rnd)); explicit_bzero(rnd, sizeof(rnd)); /* discard source seed */ /* invalidate rs_buf */ rs->rs_have = 0; memset(rsx->rs_buf, 0, sizeof(rsx->rs_buf)); rs->rs_count = (SIZE_MAX <= 65535) ? 65000 : (SIZE_MAX <= 1048575 ? 1048000 : 1600000); } static inline void _rs_stir_if_needed(size_t len) { _rs_forkdetect(); if (!rs || rs->rs_count <= len) _rs_stir(); if (rs->rs_count <= len) rs->rs_count = 0; else rs->rs_count -= len; } static inline void _rs_rekey(unsigned char *dat, size_t datlen) { #ifndef KEYSTREAM_ONLY memset(rsx->rs_buf, 0, sizeof(rsx->rs_buf)); #endif /* fill rs_buf with the keystream */ chacha_encrypt_bytes(&rsx->rs_chacha, rsx->rs_buf, rsx->rs_buf, sizeof(rsx->rs_buf)); /* mix in optional user provided data */ if (dat) { size_t i, m; m = min(datlen, KEYSZ + IVSZ); for (i = 0; i < m; i++) rsx->rs_buf[i] ^= dat[i]; } /* immediately reinit for backtracking resistance */ _rs_init(rsx->rs_buf, KEYSZ + IVSZ); memset(rsx->rs_buf, 0, KEYSZ + IVSZ); rs->rs_have = sizeof(rsx->rs_buf) - KEYSZ - IVSZ; } static inline void _rs_random_buf(void *_buf, size_t n) { unsigned char *buf = (unsigned char *)_buf; unsigned char *keystream; size_t m; _rs_stir_if_needed(n); while (n > 0) { if (rs->rs_have > 0) { m = min(n, rs->rs_have); keystream = rsx->rs_buf + sizeof(rsx->rs_buf) - rs->rs_have; memcpy(buf, keystream, m); memset(keystream, 0, m); buf += m; n -= m; rs->rs_have -= m; } if (rs->rs_have == 0) _rs_rekey(NULL, 0); } } static inline void _rs_random_u32(uint32_t *val) { unsigned char *keystream; _rs_stir_if_needed(sizeof(*val)); if (rs->rs_have < sizeof(*val)) _rs_rekey(NULL, 0); keystream = rsx->rs_buf + sizeof(rsx->rs_buf) - rs->rs_have; memcpy(val, keystream, sizeof(*val)); memset(keystream, 0, sizeof(*val)); rs->rs_have -= sizeof(*val); } uint32_t arc4random(void) { uint32_t val; #ifndef __SINGLE_THREAD__ _ARC4_LOCK(); #endif _rs_random_u32(&val); #ifndef __SINGLE_THREAD__ _ARC4_UNLOCK(); #endif return val; } void arc4random_buf(void *buf, size_t n) { #ifndef __SINGLE_THREAD__ _ARC4_LOCK(); #endif _rs_random_buf(buf, n); #ifndef __SINGLE_THREAD__ _ARC4_UNLOCK(); #endif } picolibc-1.7.4/newlib/libc/stdlib/arc4random.h000066400000000000000000000044631414576234500212060ustar00rootroot00000000000000/*- * Copyright (c) 2016 embedded brains GmbH * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* * Newlib ports may override the default implementations via the following * define and macros * o _ARC4RANDOM_DATA, * o _ARC4RANDOM_GETENTROPY_FAIL(), * o _ARC4RANDOM_ALLOCATE(rsp, rspx), and * o _ARC4RANDOM_FORKDETECT(). */ #include #include #include #define _ARC4_LOCK() __LIBC_LOCK() #define _ARC4_UNLOCK() __LIBC_UNLOCK() #ifdef _ARC4RANDOM_DATA _ARC4RANDOM_DATA #else static struct { struct _rs rs; struct _rsx rsx; } _arc4random_data; #endif static inline void _getentropy_fail(void) { #ifdef _ARC4RANDOM_GETENTROPY_FAIL _ARC4RANDOM_GETENTROPY_FAIL(); #else raise(SIGKILL); #endif } static inline int _rs_allocate(struct _rs **rsp, struct _rsx **rsxp) { #ifdef _ARC4RANDOM_ALLOCATE _ARC4RANDOM_ALLOCATE(rsp, rsxp); #else *rsp = &_arc4random_data.rs; *rsxp = &_arc4random_data.rsx; return (0); #endif } static inline void _rs_forkdetect(void) { #ifdef _ARC4RANDOM_FORKDETECT _ARC4RANDOM_FORKDETECT(); #endif } picolibc-1.7.4/newlib/libc/stdlib/arc4random_uniform.c000066400000000000000000000034401414576234500227320ustar00rootroot00000000000000/* $OpenBSD: arc4random_uniform.c,v 1.1 2014/07/12 13:24:54 deraadt Exp $ */ /* * Copyright (c) 2008, Damien Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #define _DEFAULT_SOURCE #include #include /* * Calculate a uniformly distributed random number less than upper_bound * avoiding "modulo bias". * * Uniformity is achieved by generating new random numbers until the one * returned is outside the range [0, 2**32 % upper_bound). This * guarantees the selected random number will be inside * [2**32 % upper_bound, 2**32) which maps back to [0, upper_bound) * after reduction modulo upper_bound. */ uint32_t arc4random_uniform(uint32_t upper_bound) { uint32_t r, min; if (upper_bound < 2) return 0; /* 2**32 % x == (2**32 - x) % x */ min = -upper_bound % upper_bound; /* * This could theoretically loop forever but each retry has * p > 0.5 (worst case, usually far better) of selecting a * number inside the range we need, so it should rarely need * to re-roll. */ for (;;) { r = arc4random(); if (r >= min) break; } return r % upper_bound; } picolibc-1.7.4/newlib/libc/stdlib/assert.c000066400000000000000000000036631414576234500204510ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ /* FUNCTION <>---macro for debugging diagnostics INDEX assert SYNOPSIS #include void assert(int <[expression]>); DESCRIPTION Use this macro to embed debuggging diagnostic statements in your programs. The argument <[expression]> should be an expression which evaluates to true (nonzero) when your program is working as you intended. When <[expression]> evaluates to false (zero), <> calls <>, after first printing a message showing what failed and where: . Assertion failed: <[expression]>, file <[filename]>, line <[lineno]>, function: <[func]> If the name of the current function is not known (for example, when using a C89 compiler that does not understand __func__), the function location is omitted. The macro is defined to permit you to turn off all uses of <> at compile time by defining <> as a preprocessor variable. If you do this, the <> macro expands to . (void(0)) RETURNS <> does not return a value. PORTABILITY The <> macro is required by ANSI, as is the behavior when <> is defined. Supporting OS subroutines required (only if enabled): <>, <>, <>, <>, <>, <>, <>, <>, <>. */ #include #include #include #ifndef HAVE_ASSERT_FUNC /* func can be NULL, in which case no function information is given. */ void __assert_func (const char *file, int line, const char *func, const char *failedexpr) { fprintf(stderr, "assertion \"%s\" failed: file \"%s\", line %d%s%s\n", failedexpr, file, line, func ? ", function: " : "", func ? func : ""); abort(); /* NOTREACHED */ } #endif /* HAVE_ASSERT_FUNC */ void __assert (const char *failedexpr, const char *file, int line) { __assert_func (file, line, NULL, failedexpr); /* NOTREACHED */ } picolibc-1.7.4/newlib/libc/stdlib/atexit.c000066400000000000000000000032031414576234500204340ustar00rootroot00000000000000/* * Copyright (c) 1990 Regents of the University of California. * All rights reserved. * * %sccs.include.redist.c% */ /* FUNCTION <>---request execution of functions at program exit INDEX atexit SYNOPSIS #include int atexit (void (*<[function]>)(void)); DESCRIPTION You can use <> to enroll functions in a list of functions that will be called when your program terminates normally. The argument is a pointer to a user-defined function (which must not require arguments and must not return a result). The functions are kept in a LIFO stack; that is, the last function enrolled by <> will be the first to execute when your program exits. There is no built-in limit to the number of functions you can enroll in this list; however, after every group of 32 functions is enrolled, <> will call <> to get space for the next part of the list. The initial list of 32 functions is statically allocated, so you can always count on at least that many slots available. RETURNS <> returns <<0>> if it succeeds in enrolling your function, <<-1>> if it fails (possible only if no space was available for <> to extend the list of functions). PORTABILITY <> is required by the ANSI standard, which also specifies that implementations must support enrolling at least 32 functions. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #include #include "atexit.h" /* * Register a function to be performed at exit. */ int atexit (void (*fn) (void)) { return __register_exitproc (__et_atexit, fn, NULL, NULL); } picolibc-1.7.4/newlib/libc/stdlib/atexit.h000066400000000000000000000024571414576234500204530ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ /* * Common definitions for atexit-like routines */ #include enum __atexit_types { __et_atexit, __et_onexit, __et_cxa }; #ifdef _REENT_GLOBAL_ATEXIT #define NEWLIB_THREAD_LOCAL_ATEXIT #else #define NEWLIB_THREAD_LOCAL_ATEXIT NEWLIB_THREAD_LOCAL #endif #define _ATEXIT_SIZE 32 /* must be at least 32 to guarantee ANSI conformance */ struct _on_exit_args { void * _fnargs[_ATEXIT_SIZE]; /* user fn args */ void * _dso_handle[_ATEXIT_SIZE]; /* Bitmask is set if user function takes arguments. */ uint32_t _fntypes; /* type of exit routine - Must have at least _ATEXIT_SIZE bits */ /* Bitmask is set if function was registered via __cxa_atexit. */ uint32_t _is_cxa; }; struct _atexit { struct _atexit *_next; /* next in list */ int _ind; /* next index in this table */ /* Some entries may already have been called, and will be NULL. */ void (*_fns[_ATEXIT_SIZE])(void); /* the table itself */ struct _on_exit_args _on_exit_args; }; extern NEWLIB_THREAD_LOCAL_ATEXIT struct _atexit _atexit0; extern NEWLIB_THREAD_LOCAL_ATEXIT struct _atexit *_atexit; void __call_exitprocs (int, void *); int __register_exitproc (int, void (*fn) (void), void *, void *); picolibc-1.7.4/newlib/libc/stdlib/atof.c000066400000000000000000000037461414576234500201030ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ /* FUNCTION <>, <>---string to double or float INDEX atof INDEX atoff SYNOPSIS #include double atof(const char *<[s]>); float atoff(const char *<[s]>); DESCRIPTION <> converts the initial portion of a string to a <>. <> converts the initial portion of a string to a <>. The functions parse the character string <[s]>, locating a substring which can be converted to a floating-point value. The substring must match the format: . [+|-]<[digits]>[.][<[digits]>][(e|E)[+|-]<[digits]>] The substring converted is the longest initial fragment of <[s]> that has the expected format, beginning with the first non-whitespace character. The substring is empty if <> is empty, consists entirely of whitespace, or if the first non-whitespace character is something other than <<+>>, <<->>, <<.>>, or a digit. <)>> is implemented as <, NULL)>>. <)>> is implemented as <, NULL)>>. RETURNS <> returns the converted substring value, if any, as a <>; or <<0.0>>, if no conversion could be performed. If the correct value is out of the range of representable values, plus or minus <> is returned, and <> is stored in <>. If the correct value would cause underflow, <<0.0>> is returned and <> is stored in <>. <> obeys the same rules as <>, except that it returns a <>. PORTABILITY <> is ANSI C. <>, <>, and <> are subsumed by <> and <>, but are used extensively in existing code. These functions are less reliable, but may be faster if the argument is verified to be in a valid range. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #include #include <_ansi.h> double atof (const char *s) { return strtod (s, NULL); } picolibc-1.7.4/newlib/libc/stdlib/atoff.c000066400000000000000000000002731414576234500202410ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ #include #include <_ansi.h> float atoff (const char *s) { return strtof (s, NULL); } picolibc-1.7.4/newlib/libc/stdlib/atoi.c000066400000000000000000000023031414576234500200720ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ /* FUNCTION <>, <>---string to integer INDEX atoi INDEX atol INDEX _atoi_r INDEX _atol_r SYNOPSIS #include int atoi(const char *<[s]>); long atol(const char *<[s]>); int _atoi_r(struct _reent *<[ptr]>, const char *<[s]>); long _atol_r(struct _reent *<[ptr]>, const char *<[s]>); DESCRIPTION <> converts the initial portion of a string to an <>. <> converts the initial portion of a string to a <>. <> is implemented as <<(int)strtol(s, NULL, 10).>> <> is implemented as <> <<_atoi_r>> and <<_atol_r>> are reentrant versions of <> and <> respectively, passing the reentrancy struct pointer. RETURNS The functions return the converted value, if any. If no conversion was made, <<0>> is returned. PORTABILITY <>, <> are ANSI. No supporting OS subroutines are required. */ /* * Andy Wilson, 2-Oct-89. */ #include #include <_ansi.h> #ifndef _REENT_ONLY int atoi (const char *s) { return (int) strtol (s, NULL, 10); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/atol.c000066400000000000000000000004151414576234500200770ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ /* * Andy Wilson, 2-Oct-89. */ #include #include <_ansi.h> #ifndef _REENT_ONLY long atol (const char *s) { return strtol (s, NULL, 10); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/atoll.c000066400000000000000000000050071414576234500202550ustar00rootroot00000000000000/* FUNCTION <>---convert a string to a long long integer INDEX atoll INDEX _atoll_r SYNOPSIS #include long long atoll(const char *<[str]>); long long _atoll_r(struct _reent *<[ptr]>, const char *<[str]>); DESCRIPTION The function <> converts the initial portion of the string pointed to by <<*<[str]>>> to a type <>. A call to atoll(str) in this implementation is equivalent to strtoll(str, (char **)NULL, 10) including behavior on error. The alternate function <<_atoll_r>> is a reentrant version. The extra argument <[reent]> is a pointer to a reentrancy structure. RETURNS The converted value. PORTABILITY <> is ISO 9899 (C99) and POSIX 1003.1-2001 compatable. No supporting OS subroutines are required. */ /* * Copyright (c) 1988, 1993 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include #include #ifndef _REENT_ONLY long long atoll (const char *str) { return strtoll(str, (char **)NULL, 10); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/btowc.c000066400000000000000000000010101414576234500202460ustar00rootroot00000000000000/* Copyright (c) 2002 Thomas Fitzsimmons */ #include #include #include #include #include "local.h" wint_t btowc (int c) { mbstate_t mbs; int retval = 0; wchar_t pwc; unsigned char b; if (c == EOF) return WEOF; b = (unsigned char)c; /* Put mbs in initial state. */ memset (&mbs, '\0', sizeof (mbs)); retval = __MBTOWC (&pwc, (const char *) &b, 1, &mbs); if (retval != 0 && retval != 1) return WEOF; return (wint_t)pwc; } picolibc-1.7.4/newlib/libc/stdlib/calloc.c000066400000000000000000000023531414576234500204000ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ #ifdef MALLOC_PROVIDED int _dummy_calloc = 1; #else /* FUNCTION <>---allocate space for arrays INDEX calloc INDEX _calloc_r SYNOPSIS #include void *calloc(size_t <[n]>, size_t <[s]>); void *_calloc_r(void *<[reent]>, size_t <[n]>, size_t <[s]>); DESCRIPTION Use <> to request a block of memory sufficient to hold an array of <[n]> elements, each of which has size <[s]>. The memory allocated by <> comes out of the same memory pool used by <>, but the memory block is initialized to all zero bytes. (To avoid the overhead of initializing the space, use <> instead.) The alternate function <<_calloc_r>> is reentrant. The extra argument <[reent]> is a pointer to a reentrancy structure. RETURNS If successful, a pointer to the newly allocated space. If unsuccessful, <>. PORTABILITY <> is ANSI. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #include #include #ifndef _REENT_ONLY void * calloc (size_t n, size_t size) { return _calloc_r (_REENT, n, size); } #endif #endif /* MALLOC_PROVIDED */ picolibc-1.7.4/newlib/libc/stdlib/chacha_private.h000066400000000000000000000141551414576234500221140ustar00rootroot00000000000000/* Copyright (c) 1996, David Mazieres Copyright (c) 2008, Damien Miller Copyright (c) 2013, Markus Friedl Copyright (c) 2014, Theo de Raadt Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* chacha-merged.c version 20080118 D. J. Bernstein Public domain. */ /* $OpenBSD: chacha_private.h,v 1.2 2013/10/04 07:02:27 djm Exp $ */ #include typedef uint8_t u8; typedef uint32_t u32; typedef struct { u32 input[16]; /* could be compressed */ } chacha_ctx; #define U8V(v) ((u8)(v)) #define U32V(v) ((u32)(v)) #define ROTL32(v, n) \ (U32V((v) << (n)) | ((v) >> (32 - (n)))) #define U8TO32_LITTLE(p) \ (((u32)((p)[0]) ) | \ ((u32)((p)[1]) << 8) | \ ((u32)((p)[2]) << 16) | \ ((u32)((p)[3]) << 24)) #define U32TO8_LITTLE(p, v) \ do { \ (p)[0] = U8V((v) ); \ (p)[1] = U8V((v) >> 8); \ (p)[2] = U8V((v) >> 16); \ (p)[3] = U8V((v) >> 24); \ } while (0) #define ROTATE(v,c) (ROTL32(v,c)) #define XOR(v,w) ((v) ^ (w)) #define PLUS(v,w) (U32V((v) + (w))) #define PLUSONE(v) (PLUS((v),1)) #define QUARTERROUND(a,b,c,d) \ a = PLUS(a,b); d = ROTATE(XOR(d,a),16); \ c = PLUS(c,d); b = ROTATE(XOR(b,c),12); \ a = PLUS(a,b); d = ROTATE(XOR(d,a), 8); \ c = PLUS(c,d); b = ROTATE(XOR(b,c), 7); static const char sigma[16] = "expand 32-byte k"; static const char tau[16] = "expand 16-byte k"; static void chacha_keysetup(chacha_ctx *x,const u8 *k,u32 kbits,u32 ivbits) { const char *constants; (void) ivbits; x->input[4] = U8TO32_LITTLE(k + 0); x->input[5] = U8TO32_LITTLE(k + 4); x->input[6] = U8TO32_LITTLE(k + 8); x->input[7] = U8TO32_LITTLE(k + 12); if (kbits == 256) { /* recommended */ k += 16; constants = sigma; } else { /* kbits == 128 */ constants = tau; } x->input[8] = U8TO32_LITTLE(k + 0); x->input[9] = U8TO32_LITTLE(k + 4); x->input[10] = U8TO32_LITTLE(k + 8); x->input[11] = U8TO32_LITTLE(k + 12); x->input[0] = U8TO32_LITTLE(constants + 0); x->input[1] = U8TO32_LITTLE(constants + 4); x->input[2] = U8TO32_LITTLE(constants + 8); x->input[3] = U8TO32_LITTLE(constants + 12); } static void chacha_ivsetup(chacha_ctx *x,const u8 *iv) { x->input[12] = 0; x->input[13] = 0; x->input[14] = U8TO32_LITTLE(iv + 0); x->input[15] = U8TO32_LITTLE(iv + 4); } static void chacha_encrypt_bytes(chacha_ctx *x,const u8 *m,u8 *c,u32 bytes) { u32 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15; u32 j0, j1, j2, j3, j4, j5, j6, j7, j8, j9, j10, j11, j12, j13, j14, j15; u8 *ctarget = NULL; u8 tmp[64]; u_int i; if (!bytes) return; j0 = x->input[0]; j1 = x->input[1]; j2 = x->input[2]; j3 = x->input[3]; j4 = x->input[4]; j5 = x->input[5]; j6 = x->input[6]; j7 = x->input[7]; j8 = x->input[8]; j9 = x->input[9]; j10 = x->input[10]; j11 = x->input[11]; j12 = x->input[12]; j13 = x->input[13]; j14 = x->input[14]; j15 = x->input[15]; for (;;) { if (bytes < 64) { for (i = 0;i < bytes;++i) tmp[i] = m[i]; m = tmp; ctarget = c; c = tmp; } x0 = j0; x1 = j1; x2 = j2; x3 = j3; x4 = j4; x5 = j5; x6 = j6; x7 = j7; x8 = j8; x9 = j9; x10 = j10; x11 = j11; x12 = j12; x13 = j13; x14 = j14; x15 = j15; for (i = 20;i > 0;i -= 2) { QUARTERROUND( x0, x4, x8,x12) QUARTERROUND( x1, x5, x9,x13) QUARTERROUND( x2, x6,x10,x14) QUARTERROUND( x3, x7,x11,x15) QUARTERROUND( x0, x5,x10,x15) QUARTERROUND( x1, x6,x11,x12) QUARTERROUND( x2, x7, x8,x13) QUARTERROUND( x3, x4, x9,x14) } x0 = PLUS(x0,j0); x1 = PLUS(x1,j1); x2 = PLUS(x2,j2); x3 = PLUS(x3,j3); x4 = PLUS(x4,j4); x5 = PLUS(x5,j5); x6 = PLUS(x6,j6); x7 = PLUS(x7,j7); x8 = PLUS(x8,j8); x9 = PLUS(x9,j9); x10 = PLUS(x10,j10); x11 = PLUS(x11,j11); x12 = PLUS(x12,j12); x13 = PLUS(x13,j13); x14 = PLUS(x14,j14); x15 = PLUS(x15,j15); #ifndef KEYSTREAM_ONLY x0 = XOR(x0,U8TO32_LITTLE(m + 0)); x1 = XOR(x1,U8TO32_LITTLE(m + 4)); x2 = XOR(x2,U8TO32_LITTLE(m + 8)); x3 = XOR(x3,U8TO32_LITTLE(m + 12)); x4 = XOR(x4,U8TO32_LITTLE(m + 16)); x5 = XOR(x5,U8TO32_LITTLE(m + 20)); x6 = XOR(x6,U8TO32_LITTLE(m + 24)); x7 = XOR(x7,U8TO32_LITTLE(m + 28)); x8 = XOR(x8,U8TO32_LITTLE(m + 32)); x9 = XOR(x9,U8TO32_LITTLE(m + 36)); x10 = XOR(x10,U8TO32_LITTLE(m + 40)); x11 = XOR(x11,U8TO32_LITTLE(m + 44)); x12 = XOR(x12,U8TO32_LITTLE(m + 48)); x13 = XOR(x13,U8TO32_LITTLE(m + 52)); x14 = XOR(x14,U8TO32_LITTLE(m + 56)); x15 = XOR(x15,U8TO32_LITTLE(m + 60)); #endif j12 = PLUSONE(j12); if (!j12) { j13 = PLUSONE(j13); /* stopping at 2^70 bytes per nonce is user's responsibility */ } U32TO8_LITTLE(c + 0,x0); U32TO8_LITTLE(c + 4,x1); U32TO8_LITTLE(c + 8,x2); U32TO8_LITTLE(c + 12,x3); U32TO8_LITTLE(c + 16,x4); U32TO8_LITTLE(c + 20,x5); U32TO8_LITTLE(c + 24,x6); U32TO8_LITTLE(c + 28,x7); U32TO8_LITTLE(c + 32,x8); U32TO8_LITTLE(c + 36,x9); U32TO8_LITTLE(c + 40,x10); U32TO8_LITTLE(c + 44,x11); U32TO8_LITTLE(c + 48,x12); U32TO8_LITTLE(c + 52,x13); U32TO8_LITTLE(c + 56,x14); U32TO8_LITTLE(c + 60,x15); if (bytes <= 64) { if (bytes < 64) { for (i = 0;i < bytes;++i) ctarget[i] = c[i]; } x->input[12] = j12; x->input[13] = j13; return; } bytes -= 64; c += 64; #ifndef KEYSTREAM_ONLY m += 64; #endif } } picolibc-1.7.4/newlib/libc/stdlib/cxa_atexit.c000066400000000000000000000035121414576234500212720ustar00rootroot00000000000000/* Copyright (c) 2004 Paul Brook Common routine to implement atexit-like functionality. This is also the key function to be configured as lite exit, a size-reduced implementation of exit that doesn't invoke clean-up functions such as _fini or global destructors. Default (without lite exit) call graph is like: start -> atexit -> __register_exitproc start -> __libc_init_array -> __cxa_atexit -> __register_exitproc on_exit -> __register_exitproc start -> exit -> __call_exitprocs Here an -> means arrow tail invokes arrow head. All invocations here are non-weak reference in current newlib. Lite exit makes some of above calls as weak reference, so that size expansive functions __register_exitproc and __call_exitprocs may not be linked. These calls are: start w-> atexit cxa_atexit w-> __register_exitproc exit w-> __call_exitprocs Lite exit also makes sure that __call_exitprocs will be referenced as non-weak whenever __register_exitproc is referenced as non-weak. Thus with lite exit libs, a program not explicitly calling atexit or on_exit will escape from the burden of cleaning up code. A program with atexit or on_exit will work consistently to normal libs. Lite exit is enabled with --enable-lite-exit, and is controlled with macro LITE_EXIT. */ /* * Implementation of __cxa_atexit. */ #include #include #include #include "atexit.h" /* * Register a function to be performed at exit or DSO unload. */ int __cxa_atexit (void (*fn) (void *), void *arg, void *d) { #ifdef _LITE_EXIT /* Refer to comments in __atexit.c for more details of lite exit. */ int __register_exitproc (int, void (*fn) (void), void *, void *) __attribute__ ((weak)); if (!__register_exitproc) return 0; else #endif return __register_exitproc (__et_cxa, (void (*)(void)) fn, arg, d); } picolibc-1.7.4/newlib/libc/stdlib/cxa_finalize.c000066400000000000000000000030601414576234500215730ustar00rootroot00000000000000/* Copyright (c) 2004 Paul Brook Common routine to implement atexit-like functionality. This is also the key function to be configured as lite exit, a size-reduced implementation of exit that doesn't invoke clean-up functions such as _fini or global destructors. Default (without lite exit) call graph is like: start -> atexit -> __register_exitproc start -> __libc_init_array -> __cxa_atexit -> __register_exitproc on_exit -> __register_exitproc start -> exit -> __call_exitprocs Here an -> means arrow tail invokes arrow head. All invocations here are non-weak reference in current newlib. Lite exit makes some of above calls as weak reference, so that size expansive functions __register_exitproc and __call_exitprocs may not be linked. These calls are: start w-> atexit cxa_atexit w-> __register_exitproc exit w-> __call_exitprocs Lite exit also makes sure that __call_exitprocs will be referenced as non-weak whenever __register_exitproc is referenced as non-weak. Thus with lite exit libs, a program not explicitly calling atexit or on_exit will escape from the burden of cleaning up code. A program with atexit or on_exit will work consistently to normal libs. Lite exit is enabled with --enable-lite-exit, and is controlled with macro LITE_EXIT. */ /* * Implementation if __cxa_finalize. */ #include #include "atexit.h" /* * Call registered exit handlers. If D is null then all handlers are called, * otherwise only the handlers from that DSO are called. */ void __cxa_finalize (void * d) { __call_exitprocs (0, d); } picolibc-1.7.4/newlib/libc/stdlib/div.c000066400000000000000000000072501414576234500177260ustar00rootroot00000000000000/* FUNCTION <

>---divide two integers INDEX div SYNOPSIS #include div_t div(int <[n]>, int <[d]>); DESCRIPTION Divide @tex $n/d$, @end tex @ifnottex <[n]>/<[d]>, @end ifnottex returning quotient and remainder as two integers in a structure <>. RETURNS The result is represented with the structure . typedef struct . { . int quot; . int rem; . } div_t; where the <> field represents the quotient, and <> the remainder. For nonzero <[d]>, if `<<<[r]> = div(<[n]>,<[d]>);>>' then <[n]> equals `<<<[r]>.rem + <[d]>*<[r]>.quot>>'. To divide <> rather than <> values, use the similar function <>. PORTABILITY <
> is ANSI. No supporting OS subroutines are required. */ /* * Copyright (c) 1990 Regents of the University of California. * All rights reserved. * * This code is derived from software contributed to Berkeley by * Chris Torek. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include <_ansi.h> #include /* div_t */ div_t div (int num, int denom) { div_t r; r.quot = num / denom; r.rem = num % denom; /* * The ANSI standard says that |r.quot| <= |n/d|, where * n/d is to be computed in infinite precision. In other * words, we should always truncate the quotient towards * 0, never -infinity or +infinity. * * Machine division and remainer may work either way when * one or both of n or d is negative. If only one is * negative and r.quot has been truncated towards -inf, * r.rem will have the same sign as denom and the opposite * sign of num; if both are negative and r.quot has been * truncated towards -inf, r.rem will be positive (will * have the opposite sign of num). These are considered * `wrong'. * * If both are num and denom are positive, r will always * be positive. * * This all boils down to: * if num >= 0, but r.rem < 0, we got the wrong answer. * In that case, to get the right answer, add 1 to r.quot and * subtract denom from r.rem. * if num < 0, but r.rem > 0, we also have the wrong answer. * In this case, to get the right answer, subtract 1 from r.quot and * add denom to r.rem. */ if (num >= 0 && r.rem < 0) { ++r.quot; r.rem -= denom; } else if (num < 0 && r.rem > 0) { --r.quot; r.rem += denom; } return (r); } picolibc-1.7.4/newlib/libc/stdlib/drand48.c000066400000000000000000000012331414576234500204030ustar00rootroot00000000000000/* * Copyright (c) 1993 Martin Birgmeier * All rights reserved. * * You may redistribute unmodified or modified versions of this source * code provided that the above copyright notice and this and the * following conditions are retained. * * This software is provided ``as is'', and comes with no warranties * of any kind. I shall in no event be liable for anything that happens * to anyone/anything when using this software. */ #define _DEFAULT_SOURCE #include "rand48.h" double _drand48_r (struct _rand48 *r) { return _erand48_r(r, r->_seed); } #ifndef _REENT_ONLY double drand48 (void) { return _drand48_r (&_rand48); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/dtoa.c000066400000000000000000000430711414576234500200740ustar00rootroot00000000000000/**************************************************************** * * The author of this software is David M. Gay. * * Copyright (c) 1991 by AT&T. * * Permission to use, copy, modify, and distribute this software for any * purpose without fee is hereby granted, provided that this entire notice * is included in all copies of any software which is or includes a copy * or modification of this software and in all copies of the supporting * documentation for such software. * * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED * WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR AT&T MAKES ANY * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. * ***************************************************************/ /* Please send bug reports to David M. Gay AT&T Bell Laboratories, Room 2C-463 600 Mountain Avenue Murray Hill, NJ 07974-2070 U.S.A. dmg@research.att.com or research!dmg */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "mprec.h" static int quorem (_Bigint * b, _Bigint * S) { int n; __Long borrow, y; __ULong carry, q, ys; __ULong *bx, *bxe, *sx, *sxe; #ifdef Pack_32 __Long z; __ULong si, zs; #endif if (!b || !S) return 0; n = S->_wds; #ifdef DEBUG /*debug*/ if (b->_wds > n) /*debug*/ Bug ("oversize b in quorem"); #endif if (b->_wds < n) return 0; sx = S->_x; sxe = sx + --n; bx = b->_x; bxe = bx + n; q = *bxe / (*sxe + 1); /* ensure q <= true quotient */ #ifdef DEBUG /*debug*/ if (q > 9) /*debug*/ Bug ("oversized quotient in quorem"); #endif if (q) { borrow = 0; carry = 0; do { #ifdef Pack_32 si = *sx++; ys = (si & 0xffff) * q + carry; zs = (si >> 16) * q + (ys >> 16); carry = zs >> 16; y = (*bx & 0xffff) - (ys & 0xffff) + borrow; borrow = y >> 16; Sign_Extend (borrow, y); z = (*bx >> 16) - (zs & 0xffff) + borrow; borrow = z >> 16; Sign_Extend (borrow, z); Storeinc (bx, z, y); #else ys = *sx++ * q + carry; carry = ys >> 16; y = *bx - (ys & 0xffff) + borrow; borrow = y >> 16; Sign_Extend (borrow, y); *bx++ = y & 0xffff; #endif } while (sx <= sxe); if (!*bxe) { bx = b->_x; while (--bxe > bx && !*bxe) --n; b->_wds = n; } } if (cmp (b, S) >= 0) { q++; borrow = 0; carry = 0; bx = b->_x; sx = S->_x; do { #ifdef Pack_32 si = *sx++; ys = (si & 0xffff) + carry; zs = (si >> 16) + (ys >> 16); carry = zs >> 16; y = (*bx & 0xffff) - (ys & 0xffff) + borrow; borrow = y >> 16; Sign_Extend (borrow, y); z = (*bx >> 16) - (zs & 0xffff) + borrow; borrow = z >> 16; Sign_Extend (borrow, z); Storeinc (bx, z, y); #else ys = *sx++ + carry; carry = ys >> 16; y = *bx - (ys & 0xffff) + borrow; borrow = y >> 16; Sign_Extend (borrow, y); *bx++ = y & 0xffff; #endif } while (sx <= sxe); bx = b->_x; bxe = bx + n; if (!*bxe) { while (--bxe > bx && !*bxe) --n; b->_wds = n; } } return q; } /* dtoa for IEEE arithmetic (dmg): convert double to ASCII string. * * Inspired by "How to Print Floating-Point Numbers Accurately" by * Guy L. Steele, Jr. and Jon L. White [Proc. ACM SIGPLAN '90, pp. 92-101]. * * Modifications: * 1. Rather than iterating, we use a simple numeric overestimate * to determine k = floor(log10(d)). We scale relevant * quantities using O(log2(k)) rather than O(k) multiplications. * 2. For some modes > 2 (corresponding to ecvt and fcvt), we don't * try to generate digits strictly left to right. Instead, we * compute with fewer bits and propagate the carry if necessary * when rounding the final digit up. This is often faster. * 3. Under the assumption that input will be rounded nearest, * mode 0 renders 1e23 as 1e23 rather than 9.999999999999999e22. * That is, we allow equality in stopping tests when the * round-nearest rule will give the same floating-point value * as would satisfaction of the stopping test with strict * inequality. * 4. We remove common factors of powers of 2 from relevant * quantities. * 5. When converting floating-point integers less than 1e16, * we use floating-point arithmetic rather than resorting * to multiple-precision integers. * 6. When asked to produce fewer than 15 digits, we first try * to get by with floating-point arithmetic; we resort to * multiple-precision integer arithmetic only if we cannot * guarantee that the floating-point calculation has given * the correctly rounded result. For k requested digits and * "uniformly" distributed input, the probability is * something like 10^(k-15) that we must resort to the long * calculation. */ char * __dtoa ( double _d, int mode, int ndigits, int *decpt, int *sign, char **rve) { /* Arguments ndigits, decpt, sign are similar to those of ecvt and fcvt; trailing zeros are suppressed from the returned string. If not null, *rve is set to point to the end of the return value. If d is +-Infinity or NaN, then *decpt is set to 9999. mode: 0 ==> shortest string that yields d when read in and rounded to nearest. 1 ==> like 0, but with Steele & White stopping rule; e.g. with IEEE P754 arithmetic , mode 0 gives 1e23 whereas mode 1 gives 9.999999999999999e22. 2 ==> max(1,ndigits) significant digits. This gives a return value similar to that of ecvt, except that trailing zeros are suppressed. 3 ==> through ndigits past the decimal point. This gives a return value similar to that from fcvt, except that trailing zeros are suppressed, and ndigits can be negative. 4-9 should give the same return values as 2-3, i.e., 4 <= mode <= 9 ==> same return as mode 2 + (mode & 1). These modes are mainly for debugging; often they run slower but sometimes faster than modes 2-3. 4,5,8,9 ==> left-to-right digit generation. 6-9 ==> don't try fast floating-point estimate (if applicable). Values of mode other than 0-9 are treated as mode 0. Sufficient space is allocated to the return value to hold the suppressed trailing zeros. */ int bbits, b2, b5, be, dig, i, ieps, ilim, ilim0, ilim1, j, j1, k, k0, k_check, leftright, m2, m5, s2, s5, spec_case, try_quick; union double_union d, d2, eps; __Long L; #ifndef Sudden_Underflow int denorm; __ULong x; #endif _Bigint *b, *b1, *delta, *mlo = NULL, *mhi, *S; double ds; char *s, *s0; d.d = _d; if (word0 (d) & Sign_bit) { /* set sign for everything, including 0's and NaNs */ *sign = 1; word0 (d) &= ~Sign_bit; /* clear sign bit */ } else *sign = 0; #if defined(IEEE_Arith) + defined(VAX) #ifdef IEEE_Arith if ((word0 (d) & Exp_mask) == Exp_mask) #else if (word0 (d) == 0x8000) #endif { /* Infinity or NaN */ *decpt = 9999; s = #ifdef IEEE_Arith !word1 (d) && !(word0 (d) & 0xfffff) ? "Infinity" : #endif "NaN"; if (rve) *rve = #ifdef IEEE_Arith s[3] ? s + 8 : #endif s + 3; return s; } #endif #ifdef IBM d.d += 0; /* normalize */ #endif if (!d.d) { *decpt = 1; s = "0"; if (rve) *rve = s + 1; return s; } b = d2b (d.d, &be, &bbits); if (!b) return NULL; #ifdef Sudden_Underflow i = (int) (word0 (d) >> Exp_shift1 & (Exp_mask >> Exp_shift1)); #else if ((i = (int) (word0 (d) >> Exp_shift1 & (Exp_mask >> Exp_shift1))) != 0) { #endif d2.d = d.d; word0 (d2) &= Frac_mask1; word0 (d2) |= Exp_11; #ifdef IBM if (j = 11 - hi0bits (word0 (d2) & Frac_mask)) d2.d /= 1 << j; #endif /* log(x) ~=~ log(1.5) + (x-1.5)/1.5 * log10(x) = log(x) / log(10) * ~=~ log(1.5)/log(10) + (x-1.5)/(1.5*log(10)) * log10(d) = (i-Bias)*log(2)/log(10) + log10(d2) * * This suggests computing an approximation k to log10(d) by * * k = (i - Bias)*0.301029995663981 * + ( (d2-1.5)*0.289529654602168 + 0.176091259055681 ); * * We want k to be too large rather than too small. * The error in the first-order Taylor series approximation * is in our favor, so we just round up the constant enough * to compensate for any error in the multiplication of * (i - Bias) by 0.301029995663981; since |i - Bias| <= 1077, * and 1077 * 0.30103 * 2^-52 ~=~ 7.2e-14, * adding 1e-13 to the constant term more than suffices. * Hence we adjust the constant term to 0.1760912590558. * (We could get a more accurate k by invoking log10, * but this is probably not worthwhile.) */ i -= Bias; #ifdef IBM i <<= 2; i += j; #endif #ifndef Sudden_Underflow denorm = 0; } else { /* d is denormalized */ i = bbits + be + (Bias + (P - 1) - 1); #if defined (_DOUBLE_IS_32BITS) x = word0 (d) << (32 - i); #else x = (i > 32) ? (word0 (d) << (64 - i)) | (word1 (d) >> (i - 32)) : (word1 (d) << (32 - i)); #endif d2.d = x; word0 (d2) -= 31 * Exp_msk1; /* adjust exponent */ i -= (Bias + (P - 1) - 1) + 1; denorm = 1; } #endif #if defined (_DOUBLE_IS_32BITS) ds = (d2.d - 1.5) * 0.289529651 + 0.176091269 + i * 0.30103001; #else ds = (d2.d - 1.5) * 0.289529654602168 + 0.1760912590558 + i * 0.301029995663981; #endif k = (int) ds; if (ds < 0. && ds != k) k--; /* want k = floor(ds) */ k_check = 1; if (k >= 0 && k <= Ten_pmax) { if (d.d < tens[k]) k--; k_check = 0; } j = bbits - i - 1; if (j >= 0) { b2 = 0; s2 = j; } else { b2 = -j; s2 = 0; } if (k >= 0) { b5 = 0; s5 = k; s2 += k; } else { b2 -= k; b5 = -k; s5 = 0; } if (mode < 0 || mode > 9) mode = 0; try_quick = 1; if (mode > 5) { mode -= 4; try_quick = 0; } leftright = 1; ilim = ilim1 = -1; switch (mode) { case 0: case 1: i = 18; ndigits = 0; break; case 2: leftright = 0; FALLTHROUGH; case 4: if (ndigits <= 0) ndigits = 1; ilim = ilim1 = i = ndigits; break; case 3: leftright = 0; FALLTHROUGH; case 5: i = ndigits + k + 1; ilim = i; ilim1 = i - 1; if (i <= 0) i = 1; } s = s0 = __alloc_dtoa_result(i); if (!s) { Bfree(b); return NULL; } if (ilim >= 0 && ilim <= Quick_max && try_quick) { /* Try to get by with floating-point arithmetic. */ i = 0; d2.d = d.d; k0 = k; ilim0 = ilim; ieps = 2; /* conservative */ if (k > 0) { ds = tens[k & 0xf]; j = k >> 4; if (j & Bletch) { /* prevent overflows */ j &= Bletch - 1; d.d /= bigtens[n_bigtens - 1]; ieps++; } for (; j; j >>= 1, i++) if (j & 1) { ieps++; ds *= bigtens[i]; } d.d /= ds; } else if ((j1 = -k) != 0) { d.d *= tens[j1 & 0xf]; for (j = j1 >> 4; j; j >>= 1, i++) if (j & 1) { ieps++; d.d *= bigtens[i]; } } if (k_check && d.d < 1. && ilim > 0) { if (ilim1 <= 0) goto fast_failed; ilim = ilim1; k--; d.d *= 10.; ieps++; } eps.d = ieps * d.d + 7.; word0 (eps) -= (P - 1) * Exp_msk1; if (ilim == 0) { S = mhi = 0; d.d -= 5.; if (d.d > eps.d) goto one_digit; if (d.d < -eps.d) goto no_digits; goto fast_failed; } #ifndef No_leftright if (leftright) { /* Use Steele & White method of only * generating digits needed. */ eps.d = 0.5 / tens[ilim - 1] - eps.d; for (i = 0;;) { L = d.d; d.d -= L; *s++ = '0' + (int) L; if (d.d < eps.d) goto ret1; if (1. - d.d < eps.d) goto bump_up; if (++i >= ilim) break; eps.d *= 10.; d.d *= 10.; } } else { #endif /* Generate ilim digits, then fix them up. */ eps.d *= tens[ilim - 1]; for (i = 1;; i++, d.d *= 10.) { L = d.d; d.d -= L; *s++ = '0' + (int) L; if (i == ilim) { if (d.d > 0.5 + eps.d) goto bump_up; else if (d.d < 0.5 - eps.d) { while (*--s == '0'); s++; goto ret1; } break; } } #ifndef No_leftright } #endif fast_failed: s = s0; d.d = d2.d; k = k0; ilim = ilim0; } /* Do we have a "small" integer? */ if (be >= 0 && k <= Int_max) { /* Yes. */ ds = tens[k]; if (ndigits < 0 && ilim <= 0) { S = mhi = 0; if (ilim < 0 || d.d <= 5 * ds) goto no_digits; goto one_digit; } for (i = 1;; i++) { L = d.d / ds; d.d -= L * ds; #ifdef Check_FLT_ROUNDS /* If FLT_ROUNDS == 2, L will usually be high by 1 */ if (d.d < 0) { L--; d.d += ds; } #endif *s++ = '0' + (int) L; if (i == ilim) { d.d += d.d; if ((d.d > ds) || ((d.d == ds) && (L & 1))) { bump_up: while (*--s == '9') if (s == s0) { k++; *s = '0'; break; } ++*s++; } break; } if (!(d.d *= 10.)) break; } goto ret1; } m2 = b2; m5 = b5; mhi = mlo = 0; if (leftright) { if (mode < 2) { i = #ifndef Sudden_Underflow denorm ? be + (Bias + (P - 1) - 1 + 1) : #endif #ifdef IBM 1 + 4 * P - 3 - bbits + ((bbits + be - 1) & 3); #else 1 + P - bbits; #endif } else { j = ilim - 1; if (m5 >= j) m5 -= j; else { s5 += j -= m5; b5 += j; m5 = 0; } if ((i = ilim) < 0) { m2 -= i; i = 0; } } b2 += i; s2 += i; mhi = i2b (1); } if (m2 > 0 && s2 > 0) { i = m2 < s2 ? m2 : s2; b2 -= i; m2 -= i; s2 -= i; } if (b5 > 0) { if (leftright) { if (m5 > 0) { mhi = pow5mult (mhi, m5); b1 = mult (mhi, b); Bfree (b); b = b1; } if ((j = b5 - m5) != 0) b = pow5mult (b, j); } else b = pow5mult (b, b5); } S = i2b (1); if (s5 > 0) S = pow5mult (S, s5); if (!S) goto ret; /* Check for special case that d is a normalized power of 2. */ spec_case = 0; if (mode < 2) { if (!word1 (d) && !(word0 (d) & Bndry_mask) #ifndef Sudden_Underflow && word0 (d) & Exp_mask #endif ) { /* The special case */ b2 += Log2P; s2 += Log2P; spec_case = 1; } } /* Arrange for convenient computation of quotients: * shift left if necessary so divisor has 4 leading 0 bits. * * Perhaps we should just compute leading 28 bits of S once * and for all and pass them and a shift to quorem, so it * can do shifts and ors to compute the numerator for q. */ #ifdef Pack_32 if ((i = ((s5 ? 32 - hi0bits (S->_x[S->_wds - 1]) : 1) + s2) & 0x1f) != 0) i = 32 - i; #else if ((i = ((s5 ? 32 - hi0bits (S->_x[S->_wds - 1]) : 1) + s2) & 0xf) != 0) i = 16 - i; #endif if (i > 4) { i -= 4; b2 += i; m2 += i; s2 += i; } else if (i < 4) { i += 28; b2 += i; m2 += i; s2 += i; } if (b2 > 0) b = lshift (b, b2); if (s2 > 0) S = lshift (S, s2); if (k_check) { if (cmp (b, S) < 0) { k--; b = multadd (b, 10, 0); /* we botched the k estimate */ if (leftright) mhi = multadd (mhi, 10, 0); ilim = ilim1; } } if (ilim <= 0 && mode > 2) { if (ilim < 0 || cmp (b, S = multadd (S, 5, 0)) <= 0) { /* no digits, fcvt style */ no_digits: k = -1 - ndigits; goto ret; } one_digit: *s++ = '1'; k++; goto ret; } if (leftright) { if (m2 > 0) mhi = lshift (mhi, m2); /* Compute mlo -- check for special case * that d is a normalized power of 2. */ mlo = mhi; if (spec_case) { mhi = Balloc (mhi->_k); if (!mhi) { Bfree(mlo); return NULL; } Bcopy (mhi, mlo); mhi = lshift (mhi, Log2P); } for (i = 1;; i++) { dig = quorem (b, S) + '0'; /* Do we yet have the shortest decimal string * that will round to d? */ j = cmp (b, mlo); delta = diff (S, mhi); j1 = delta->_sign ? 1 : cmp (b, delta); Bfree (delta); #ifndef ROUND_BIASED if (j1 == 0 && !mode && !(word1 (d) & 1)) { if (dig == '9') goto round_9_up; if (j > 0) dig++; *s++ = dig; goto ret; } #endif if ((j < 0) || ((j == 0) && !mode #ifndef ROUND_BIASED && !(word1 (d) & 1) #endif )) { if (j1 > 0) { b = lshift (b, 1); j1 = cmp (b, S); if (((j1 > 0) || ((j1 == 0) && (dig & 1))) && dig++ == '9') goto round_9_up; } *s++ = dig; goto ret; } if (j1 > 0) { if (dig == '9') { /* possible if i == 1 */ round_9_up: *s++ = '9'; goto roundoff; } *s++ = dig + 1; goto ret; } *s++ = dig; if (i == ilim) break; b = multadd (b, 10, 0); if (mlo == mhi) mlo = mhi = multadd (mhi, 10, 0); else { mlo = multadd (mlo, 10, 0); mhi = multadd (mhi, 10, 0); } } } else for (i = 1;; i++) { *s++ = dig = quorem (b, S) + '0'; if (i >= ilim) break; b = multadd (b, 10, 0); } /* Round off last digit */ b = lshift (b, 1); j = cmp (b, S); if ((j > 0) || ((j == 0) && (dig & 1))) { roundoff: while (*--s == '9') if (s == s0) { k++; *s++ = '1'; goto ret; } ++*s++; } else { while (*--s == '0'); s++; } ret: Bfree (S); if (mhi) { if (mlo && mlo != mhi) Bfree (mlo); Bfree (mhi); } ret1: Bfree (b); *s = 0; *decpt = k + 1; if (rve) *rve = s; return s0; } picolibc-1.7.4/newlib/libc/stdlib/ecvtbuf.c000066400000000000000000000213351414576234500206020ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ /* FUNCTION <>, <>---double or float to string INDEX ecvtbuf INDEX fcvtbuf SYNOPSIS #include char *ecvtbuf(double <[val]>, int <[chars]>, int *<[decpt]>, int *<[sgn]>, char *<[buf]>); char *fcvtbuf(double <[val]>, int <[decimals]>, int *<[decpt]>, int *<[sgn]>, char *<[buf]>); DESCRIPTION <> and <> produce (null-terminated) strings of digits representating the <> number <[val]>. The only difference between <> and <> is the interpretation of the second argument (<[chars]> or <[decimals]>). For <>, the second argument <[chars]> specifies the total number of characters to write (which is also the number of significant digits in the formatted string, since these two functions write only digits). For <>, the second argument <[decimals]> specifies the number of characters to write after the decimal point; all digits for the integer part of <[val]> are always included. Since <> and <> write only digits in the output string, they record the location of the decimal point in <<*<[decpt]>>>, and the sign of the number in <<*<[sgn]>>>. After formatting a number, <<*<[decpt]>>> contains the number of digits to the left of the decimal point. <<*<[sgn]>>> contains <<0>> if the number is positive, and <<1>> if it is negative. For both functions, you supply a pointer <[buf]> to an area of memory to hold the converted string. RETURNS Both functions return a pointer to <[buf]>, the string containing a character representation of <[val]>. PORTABILITY Neither function is ANSI C. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "mprec.h" #include "local.h" #include "atexit.h" static void print_f ( char *buf, double invalue, int ndigit, char type, int dot, int mode) { int decpt; int sign; char *p, *start, *end; (void) type; /* XXX should be used */ start = p = __dtoa (invalue, mode, ndigit, &decpt, &sign, &end); if (!p) { buf[0] = '\0'; return; } if (decpt == 9999) { strcpy (buf, p); return; } while (*p && decpt > 0) { *buf++ = *p++; decpt--; } /* Even if not in buffer */ while (decpt > 0) { *buf++ = '0'; decpt--; } if (dot || *p) { if (p == start) *buf++ = '0'; if (decpt < 0 && ndigit > 0) *buf++ = '.'; while (decpt < 0 && ndigit > 0) { *buf++ = '0'; decpt++; ndigit--; } /* Print rest of stuff */ while (*p && ndigit > 0) { *buf++ = *p++; ndigit--; } /* And trailing zeros */ while (ndigit > 0) { *buf++ = '0'; ndigit--; } } *buf++ = 0; } /* Print number in e format with width chars after. TYPE is one of 'e' or 'E'. It may also be one of 'g' or 'G' indicating that _gcvt is calling us and we should remove trailing zeroes. WIDTH is the number of digits of precision after the decimal point. */ static void print_e ( char *buf, double invalue, int width, char type, int dot) { int sign; char *end; char *p; int decpt; int top; int ndigit = width; p = __dtoa (invalue, 2, width + 1, &decpt, &sign, &end); if (!p) { buf[0] = '\0'; return; } if (decpt == 9999) { strcpy (buf, p); return; } *buf++ = *p++; if (ndigit > 0) dot = 1; while (*p && ndigit > 0) { if (dot) { *buf++ = '.'; dot = 0; } *buf++ = *p++; ndigit--; } /* Add trailing zeroes to fill out to ndigits unless this is 'g' format. Also, convert g/G to e/E. */ if (type == 'g') type = 'e'; else if (type == 'G') type = 'E'; else { while (ndigit > 0) { if (dot) { *buf++ = '.'; dot = 0; } *buf++ = '0'; ndigit--; } } /* Add the exponent. */ *buf++ = type; decpt--; if (decpt < 0) { *buf++ = '-'; decpt = -decpt; } else { *buf++ = '+'; } if (decpt > 99) { int top = decpt / 100; *buf++ = top + '0'; decpt -= top * 100; } top = decpt / 10; *buf++ = top + '0'; decpt -= top * 10; *buf++ = decpt + '0'; *buf++ = 0; } #ifndef _REENT_ONLY static NEWLIB_THREAD_LOCAL int _cvtlen; static NEWLIB_THREAD_LOCAL char *_cvtbuf; static void _cvtcleanup(void) { if (_cvtbuf) { free(_cvtbuf); _cvtbuf = NULL; } } /* Undocumented behaviour: when given NULL as a buffer, return a pointer to static space in the rent structure. This is only to support ecvt and fcvt, which aren't ANSI anyway. */ char * fcvtbuf (double invalue, int ndigit, int *decpt, int *sign, char *fcvt_buf) { char *save; char *p; char *end; int done = 0; if (fcvt_buf == NULL) { if (_cvtlen <= ndigit + 35) { if (!_cvtbuf) if (atexit(_cvtcleanup) != 0) return NULL; if ((fcvt_buf = (char *) realloc (_cvtbuf, ndigit + 36)) == NULL) return NULL; _cvtlen = ndigit + 36; _cvtbuf = fcvt_buf; } fcvt_buf = _cvtbuf ; } save = fcvt_buf; p = __dtoa (invalue, 3, ndigit, decpt, sign, &end); if (!p) return NULL; /* Now copy */ done = -*decpt; while (p < end) { *fcvt_buf++ = *p++; done++; } /* And unsuppress the trailing zeroes */ while (done < ndigit) { *fcvt_buf++ = '0'; done++; } *fcvt_buf++ = 0; return save; } char * ecvtbuf (double invalue, int ndigit, int *decpt, int *sign, char *fcvt_buf) { char *save; char *p; char *end; int done = 0; if (fcvt_buf == NULL) { if (_cvtlen <= ndigit) { if ((fcvt_buf = (char *) realloc (_cvtbuf, ndigit + 1)) == NULL) return NULL; _cvtlen = ndigit + 1; _cvtbuf = fcvt_buf; } fcvt_buf = _cvtbuf ; } save = fcvt_buf; p = __dtoa (invalue, 2, ndigit, decpt, sign, &end); if (!p) return NULL; /* Now copy */ while (p < end) { *fcvt_buf++ = *p++; done++; } /* And unsuppress the trailing zeroes */ while (done < ndigit) { *fcvt_buf++ = '0'; done++; } *fcvt_buf++ = 0; return save; } #endif char * _gcvt ( double invalue, int ndigit, char *buf, char type, int dot) { char *save = buf; if (invalue < 0) { invalue = -invalue; } if (invalue == 0) { *buf++ = '0'; *buf = '\0'; } else /* Which one to print ? ANSI says that anything with more that 4 zeros after the . or more than precision digits before is printed in e with the qualification that trailing zeroes are removed from the fraction portion. */ if (0.0001 >= invalue || invalue >= _mprec_log10 (ndigit)) { /* We subtract 1 from ndigit because in the 'e' format the precision is the number of digits after the . but in 'g' format it is the number of significant digits. We defer changing type to e/E so that print_e() can know it's us calling and thus should remove trailing zeroes. */ print_e (buf, invalue, ndigit - 1, type, dot); } else { int decpt; int sign; char *end; char *p; /* We always want ndigits of precision, even if that means printing * a bunch of leading zeros for numbers < 1.0 */ p = __dtoa (invalue, 2, ndigit, &decpt, &sign, &end); if (!p) return NULL; if (decpt == 9999) { strcpy (buf, p); return save; } while (*p && decpt > 0) { *buf++ = *p++; decpt--; ndigit--; } /* Even if not in buffer */ while (decpt > 0 && ndigit > 0) { *buf++ = '0'; decpt--; ndigit--; } if (dot || *p) { if (buf == save) *buf++ = '0'; *buf++ = '.'; /* Leading zeros don't count towards 'ndigit' */ while (decpt < 0) { *buf++ = '0'; decpt++; } /* Print rest of stuff */ while (*p && ndigit > 0) { *buf++ = *p++; ndigit--; } /* And trailing zeros */ if (dot) { while (ndigit > 0) { *buf++ = '0'; ndigit--; } } } *buf++ = 0; } return save; } char * _dcvt ( char *buffer, double invalue, int precision, int width, char type, int dot) { (void) width; /* XXX should be used */ switch (type) { case 'f': case 'F': print_f (buffer, invalue, precision, type, precision == 0 ? dot : 1, 3); break; case 'g': case 'G': if (precision == 0) precision = 1; _gcvt (invalue, precision, buffer, type, dot); break; case 'e': case 'E': print_e (buffer, invalue, precision, type, dot); } return buffer; } picolibc-1.7.4/newlib/libc/stdlib/efgcvt.c000066400000000000000000000077521414576234500204310ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ /* FUNCTION <>, <>, <>, <>---double or float to string INDEX ecvt INDEX ecvtf INDEX fcvt INDEX fcvtf SYNOPSIS #include char *ecvt(double <[val]>, int <[chars]>, int *<[decpt]>, int *<[sgn]>); char *ecvtf(float <[val]>, int <[chars]>, int *<[decpt]>, int *<[sgn]>); char *fcvt(double <[val]>, int <[decimals]>, int *<[decpt]>, int *<[sgn]>); char *fcvtf(float <[val]>, int <[decimals]>, int *<[decpt]>, int *<[sgn]>); DESCRIPTION <> and <> produce (null-terminated) strings of digits representating the <> number <[val]>. <> and <> produce the corresponding character representations of <> numbers. (The <> functions <> and <> are reentrant versions of <> and <>.) The only difference between <> and <> is the interpretation of the second argument (<[chars]> or <[decimals]>). For <>, the second argument <[chars]> specifies the total number of characters to write (which is also the number of significant digits in the formatted string, since these two functions write only digits). For <>, the second argument <[decimals]> specifies the number of characters to write after the decimal point; all digits for the integer part of <[val]> are always included. Since <> and <> write only digits in the output string, they record the location of the decimal point in <<*<[decpt]>>>, and the sign of the number in <<*<[sgn]>>>. After formatting a number, <<*<[decpt]>>> contains the number of digits to the left of the decimal point. <<*<[sgn]>>> contains <<0>> if the number is positive, and <<1>> if it is negative. RETURNS All four functions return a pointer to the new string containing a character representation of <[val]>. PORTABILITY None of these functions are ANSI C. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. NEWPAGE FUNCTION <>, <>---format double or float as string INDEX gcvt INDEX gcvtf SYNOPSIS #include char *gcvt(double <[val]>, int <[precision]>, char *<[buf]>); char *gcvtf(float <[val]>, int <[precision]>, char *<[buf]>); DESCRIPTION <> writes a fully formatted number as a null-terminated string in the buffer <<*<[buf]>>>. <> produces corresponding character representations of <> numbers. <> uses the same rules as the <> format `<<%.<[precision]>g>>'---only negative values are signed (with `<<->>'), and either exponential or ordinary decimal-fraction format is chosen depending on the number of significant digits (specified by <[precision]>). RETURNS The result is a pointer to the formatted representation of <[val]> (the same as the argument <[buf]>). PORTABILITY Neither function is ANSI C. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #define _XOPEN_SOURCE #define _XOPEN_SOURCE_EXTENDED #include <_ansi.h> #include #include #include "local.h" char * ecvtbuf (double, int, int*, int*, char *); char * fcvtbuf (double, int, int*, int*, char *); char * fcvt (double d, int ndigit, int *decpt, int *sign) { return fcvtbuf (d, ndigit, decpt, sign, NULL); } char * fcvtf (float d, int ndigit, int *decpt, int *sign) { return fcvt ((double) d, ndigit, decpt, sign); } char * gcvt (double d, int ndigit, char *buf) { char *tbuf = buf; if (d < 0) { *buf = '-'; buf++; ndigit--; } return (_gcvt (d, ndigit, buf, 'g', 0) ? tbuf : 0); } char * gcvtf (float d, int ndigit, char *buf) { double asd = (double) d; return gcvt (asd, ndigit, buf); } char * ecvt (double d, int ndigit, int *decpt, int *sign) { return ecvtbuf (d, ndigit, decpt, sign, NULL); } char * ecvtf (float d, int ndigit, int *decpt, int *sign) { return ecvt ((double) d, ndigit, decpt, sign); } picolibc-1.7.4/newlib/libc/stdlib/environ.c000066400000000000000000000034111414576234500206170ustar00rootroot00000000000000/* Copyright (c) 1995, 1996, 2002 Red Hat Incorporated. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * The name of Red Hat Incorporated may not be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Provide a definition of `environ' if crt0.o doesn't. */ static char *initial_env[] = { 0 }; /* Posix says `environ' is a pointer to a null terminated list of pointers. Hence `environ' itself is never NULL. */ char **environ = &initial_env[0]; picolibc-1.7.4/newlib/libc/stdlib/eprintf.c000066400000000000000000000017131414576234500206110ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ /* This is an implementation of the __eprintf function which is compatible with the assert.h which is distributed with gcc. This function is provided because in some cases libgcc.a will not provide __eprintf. This will happen if inhibit_libc is defined, which is done because at the time that libgcc2.c is compiled, the correct may not be available. newlib provides its own copy of assert.h, which calls __assert, not __eprintf. However, in some cases you may accidentally wind up compiling with the gcc assert.h. In such a case, this __eprintf will be used if there does not happen to be one in libgcc2.c. */ #include #include void __eprintf (const char *format, const char *file, unsigned int line, const char *expression) { (void) fprintf (stderr, format, file, line, expression); abort (); /*NOTREACHED*/ } picolibc-1.7.4/newlib/libc/stdlib/erand48.c000066400000000000000000000014431414576234500204070ustar00rootroot00000000000000/* * Copyright (c) 1993 Martin Birgmeier * All rights reserved. * * You may redistribute unmodified or modified versions of this source * code provided that the above copyright notice and this and the * following conditions are retained. * * This software is provided ``as is'', and comes with no warranties * of any kind. I shall in no event be liable for anything that happens * to anyone/anything when using this software. */ #include "rand48.h" double _erand48_r (struct _rand48 *r, unsigned short xseed[3]) { __dorand48(r, xseed); return ldexp((double) xseed[0], -48) + ldexp((double) xseed[1], -32) + ldexp((double) xseed[2], -16); } #ifndef _REENT_ONLY double erand48 (unsigned short xseed[3]) { return _erand48_r (&_rand48, xseed); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/exit.c000066400000000000000000000032161414576234500201130ustar00rootroot00000000000000/* * Copyright (c) 1990 Regents of the University of California. * All rights reserved. * * %sccs.include.redist.c% */ /* FUNCTION <>---end program execution INDEX exit SYNOPSIS #include void exit(int <[code]>); DESCRIPTION Use <> to return control from a program to the host operating environment. Use the argument <[code]> to pass an exit status to the operating environment: two particular values, <> and <>, are defined in `<>' to indicate success or failure in a portable fashion. <> does two kinds of cleanup before ending execution of your program. First, it calls all application-defined cleanup functions you have enrolled with <>. Second, files and streams are cleaned up: any pending output is delivered to the host system, each open file or stream is closed, and files created by <> are deleted. RETURNS <> does not return to its caller. PORTABILITY ANSI C requires <>, and specifies that <> and <> must be defined. Supporting OS subroutines required: <<_exit>>. */ #include #include /* for _exit() declaration */ #ifndef TINY_STDIO #include #endif #include "atexit.h" /* * Exit, flushing stdio buffers if necessary. */ void exit (int code) { #ifdef _LITE_EXIT /* Refer to comments in __atexit.c for more details of lite exit. */ void __call_exitprocs (int, void *) __attribute__((weak)); if (__call_exitprocs) #endif __call_exitprocs (code, NULL); #ifndef TINY_STDIO if (_GLOBAL_REENT->__cleanup) (*_GLOBAL_REENT->__cleanup) (_GLOBAL_REENT); #endif _exit (code); } picolibc-1.7.4/newlib/libc/stdlib/gdtoa-gethex.c000066400000000000000000000176321414576234500215310ustar00rootroot00000000000000/**************************************************************** The author of this software is David M. Gay. Copyright (C) 1998 by Lucent Technologies All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that the copyright notice and this permission notice and warranty disclaimer appear in supporting documentation, and that the name of Lucent or any of its entities not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************************************************/ /* Please send bug reports to David M. Gay (dmg at acm dot org, * with " at " changed at "@" and " dot " changed to "."). */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "mprec.h" #include "gdtoa.h" #if !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) && !defined(_SMALL_HEXDIG) const unsigned char __hexdig[256]= { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 16,17,18,19,20,21,22,23,24,25,0,0,0,0,0,0, 0,26,27,28,29,30,31,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,26,27,28,29,30,31,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }; #else /* !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) && !defined(_SMALL_HEXDIG) */ unsigned char __hexdig_fun (unsigned char c) { if(c>='0' && c<='9') return c-'0'+0x10; else if(c>='a' && c<='f') return c-'a'+0x10+10; else if(c>='A' && c<='F') return c-'A'+0x10+10; else return 0; } #endif /* !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) && !defined(_SMALL_HEXDIG) */ static void rshift (_Bigint *b, int k) { __ULong *x, *x1, *xe, y; int n; x = x1 = b->_x; n = k >> kshift; if (n < b->_wds) { xe = x + b->_wds; x += n; if (k &= kmask) { n = ULbits - k; y = *x++ >> k; while(x < xe) { *x1++ = (y | (*x << n)) & ALL_ON; y = *x++ >> k; } if ((*x1 = y) !=0) x1++; } else while(x < xe) *x1++ = *x++; } if ((b->_wds = x1 - b->_x) == 0) b->_x[0] = 0; } static _Bigint * increment ( _Bigint *b) { __ULong *x, *xe; _Bigint *b1; #ifdef Pack_16 __ULong carry = 1, y; #endif if (!b) return NULL; x = b->_x; xe = x + b->_wds; #ifdef Pack_32 do { if (*x < (__ULong)0xffffffffL) { ++*x; return b; } *x++ = 0; } while(x < xe); #else do { y = *x + carry; carry = y >> 16; *x++ = y & 0xffff; if (!carry) return b; } while(x < xe); if (carry) #endif { if (b->_wds >= b->_maxwds) { b1 = Balloc(b->_k+1); if (!b1) { Bfree(b); return NULL; } Bcopy(b1, b); Bfree(b); b = b1; } b->_x[b->_wds++] = 1; } return b; } int gethex (const char **sp, const FPI *fpi, Long *exp, _Bigint **bp, int sign, locale_t loc) { _Bigint *b; const unsigned char *decpt, *s0, *s, *s1; int esign, havedig, irv, k, n, nbits, up, zret; __ULong L, lostbits, *x; Long e, e1; #ifdef __HAVE_LOCALE_INFO__ const unsigned char *decimalpoint = (const unsigned char *) __get_numeric_locale(loc)->decimal_point; const size_t decp_len = strlen ((const char *) decimalpoint); const unsigned char decp_end = decimalpoint[decp_len - 1]; #else const unsigned char *decimalpoint = (const unsigned char *) "."; const size_t decp_len = 1; const unsigned char decp_end = (unsigned char) '.'; (void) loc; #endif havedig = 0; s0 = *(const unsigned char **)sp + 2; while(s0[havedig] == '0') havedig++; s0 += havedig; s = s0; decpt = 0; zret = 0; e = 0; if (!__get_hexdig(*s)) { zret = 1; if (strncmp ((const char *) s, (const char *) decimalpoint, decp_len) != 0) goto pcheck; decpt = (s += decp_len); if (!__get_hexdig(*s)) goto pcheck; while(*s == '0') s++; if (__get_hexdig(*s)) zret = 0; havedig = 1; s0 = s; } while(__get_hexdig(*s)) s++; if (strncmp ((const char *) s, (const char *) decimalpoint, decp_len) == 0 && !decpt) { decpt = (s += decp_len); while(__get_hexdig(*s)) s++; } if (decpt) e = -(((Long)(s-decpt)) << 2); pcheck: s1 = s; switch(*s) { case 'p': case 'P': esign = 0; switch(*++s) { case '-': esign = 1; FALLTHROUGH; case '+': s++; } if ((n = __get_hexdig(*s)) == 0 || n > 0x19) { s = s1; break; } e1 = n - 0x10; while((n = __get_hexdig(*++s)) !=0 && n <= 0x19) e1 = 10*e1 + n - 0x10; if (esign) e1 = -e1; e += e1; } *sp = (char*)s; if (zret) return havedig ? STRTOG_Zero : STRTOG_NoNumber; n = s1 - s0 - 1; for(k = 0; n > 7; n >>= 1) k++; b = Balloc(k); if (!b) return STRTOG_NoNumber; x = b->_x; n = 0; L = 0; while(s1 > s0) { if (*--s1 == decp_end && s1 - decp_len + 1 >= s0 && strncmp ((const char *) s1 - decp_len + 1, (const char *) decimalpoint, decp_len) == 0) { s1 -= decp_len - 1; /* Note the --s1 above! */ continue; } if (n == 32) { *x++ = L; L = 0; n = 0; } L |= (__get_hexdig(*s1) & 0x0f) << n; n += 4; } *x++ = L; b->_wds = n = x - b->_x; n = 32*n - hi0bits(L); nbits = fpi->nbits; lostbits = 0; x = b->_x; if (n > nbits) { n -= nbits; if (any_on(b,n)) { lostbits = 1; k = n - 1; if (x[k>>kshift] & 1 << (k & kmask)) { lostbits = 2; if (k > 1 && any_on(b,k-1)) lostbits = 3; } } rshift(b, n); e += n; } else if (n < nbits) { n = nbits - n; b = lshift(b, n); e -= n; x = b->_x; } if (e > fpi->emax) { ovfl: Bfree(b); *bp = 0; return STRTOG_Infinite | STRTOG_Overflow | STRTOG_Inexhi; } irv = STRTOG_Normal; if (e < fpi->emin) { irv = STRTOG_Denormal; n = fpi->emin - e; if (n >= nbits) { switch (fpi->rounding) { case FPI_Round_near: if (n == nbits && (n < 2 || any_on(b,n-1))) goto one_bit; break; case FPI_Round_up: if (!sign) goto one_bit; break; case FPI_Round_down: if (sign) { one_bit: *exp = fpi->emin; x[0] = b->_wds = 1; *bp = b; return STRTOG_Denormal | STRTOG_Inexhi | STRTOG_Underflow; } } Bfree(b); *bp = 0; return STRTOG_Zero | STRTOG_Inexlo | STRTOG_Underflow; } k = n - 1; if (lostbits) lostbits = 1; else if (k > 0) lostbits = any_on(b,k); if (x[k>>kshift] & 1 << (k & kmask)) lostbits |= 2; nbits -= n; rshift(b,n); e = fpi->emin; } if (lostbits) { up = 0; switch(fpi->rounding) { case FPI_Round_zero: break; case FPI_Round_near: if ((lostbits & 2) && ((lostbits & 1) | (x[0] & 1))) up = 1; break; case FPI_Round_up: up = 1 - sign; break; case FPI_Round_down: up = sign; } if (up) { k = b->_wds; b = increment(b); if (!b) return STRTOG_NoNumber; x = b->_x; if (irv == STRTOG_Denormal) { if (nbits == fpi->nbits - 1 && x[nbits >> kshift] & 1 << (nbits & kmask)) irv = STRTOG_Normal; } else if ((b->_wds > k) || ((n = nbits & kmask) !=0 && (hi0bits(x[k-1]) < 32-n))) { rshift(b,1); if (++e > fpi->emax) goto ovfl; } irv |= STRTOG_Inexhi; } else irv |= STRTOG_Inexlo; } *bp = b; *exp = e; return irv; } picolibc-1.7.4/newlib/libc/stdlib/gdtoa-hexnan.c000066400000000000000000000062051414576234500215200ustar00rootroot00000000000000/**************************************************************** The author of this software is David M. Gay. Copyright (C) 2000 by Lucent Technologies All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that the copyright notice and this permission notice and warranty disclaimer appear in supporting documentation, and that the name of Lucent or any of its entities not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************************************************/ /* Please send bug reports to David M. Gay Bell Laboratories, Room 2C-463 600 Mountain Avenue Murray Hill, NJ 07974-0636 U.S.A. dmg@bell-labs.com */ /* Modified 06-21-2006 by Jeff Johnston to work with newlib. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include "mprec.h" #include "gdtoa.h" #ifdef INFNAN_CHECK int match (const char **sp, char *t) { int c, d; const char *s = *sp; while( (d = *t++) !=0) { if ((c = *++s) >= 'A' && c <= 'Z') c += 'a' - 'A'; if (c != d) return 0; } *sp = s + 1; return 1; } static void L_shift (__ULong *x, __ULong *x1, int i) { int j; i = 8 - i; i <<= 2; j = ULbits - i; do { *x |= x[1] << j; x[1] >>= i; } while(++x < x1); } int hexnan (const char **sp, const FPI *fpi, __ULong *x0) { __ULong c, h, *x, *x1, *xe; const char *s; int havedig, hd0, i, nbits; nbits = fpi->nbits; x = x0 + (nbits >> kshift); if (nbits & kmask) x++; *--x = 0; x1 = xe = x; havedig = hd0 = i = 0; s = *sp; while((c = *(const unsigned char*)++s)) { if (!(h = __get_hexdig(c))) { if (c <= ' ') { if (hd0 < havedig) { if (x < x1 && i < 8) L_shift(x, x1, i); if (x <= x0) { i = 8; continue; } hd0 = havedig; *--x = 0; x1 = x; i = 0; } continue; } if (/*(*/ c == ')') { *sp = s + 1; break; } return STRTOG_NaN; } havedig++; if (++i > 8) { if (x <= x0) continue; i = 1; *--x = 0; } *x = ((*x << 4) | (h & 0xf)); } if (!havedig) return STRTOG_NaN; if (x < x1 && i < 8) L_shift(x, x1, i); if (x > x0) { x1 = x0; do *x1++ = *x++; while(x <= xe); do *x1++ = 0; while(x1 <= xe); } else { /* truncate high-order word if necessary */ if ( (i = nbits & (ULbits-1)) !=0) *xe &= ((__ULong)0xffffffff) >> (ULbits - i); } for(x1 = xe;; --x1) { if (*x1 != 0) break; if (x1 == x0) { *x1 = 1; break; } } return STRTOG_NaNbits; } #endif /* INFNAN_CHECK */ picolibc-1.7.4/newlib/libc/stdlib/gdtoa.h000066400000000000000000000040661414576234500202510ustar00rootroot00000000000000/**************************************************************** The author of this software is David M. Gay. Copyright (C) 1998 by Lucent Technologies All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that the copyright notice and this permission notice and warranty disclaimer appear in supporting documentation, and that the name of Lucent or any of its entities not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************************************************/ /* Please send bug reports to David M. Gay (dmg at acm dot org, * with " at " changed at "@" and " dot " changed to "."). */ #ifndef GDTOA_H_INCLUDED #define GDTOA_H_INCLUDED enum { /* return values from strtodg */ STRTOG_Zero = 0, STRTOG_Normal = 1, STRTOG_Denormal = 2, STRTOG_Infinite = 3, STRTOG_NaN = 4, STRTOG_NaNbits = 5, STRTOG_NoNumber = 6, STRTOG_Retmask = 7, /* The following may be or-ed into one of the above values. */ STRTOG_Neg = 0x08, STRTOG_Inexlo = 0x10, STRTOG_Inexhi = 0x20, STRTOG_Inexact = 0x30, STRTOG_Underflow= 0x40, STRTOG_Overflow = 0x80 }; typedef struct FPI { int nbits; int emin; int emax; int rounding; int sudden_underflow; } FPI; enum { /* FPI.rounding values: same as FLT_ROUNDS */ FPI_Round_zero = 0, FPI_Round_near = 1, FPI_Round_up = 2, FPI_Round_down = 3 }; #endif /* GDTOA_H_INCLUDED */ typedef unsigned short __UShort; picolibc-1.7.4/newlib/libc/stdlib/getenv.c000066400000000000000000000036351414576234500204370ustar00rootroot00000000000000/* FUNCTION <>---look up environment variable INDEX getenv INDEX environ SYNOPSIS #include char *getenv(const char *<[name]>); DESCRIPTION <> searches the list of environment variable names and values (using the global pointer ``<>'') for a variable whose name matches the string at <[name]>. If a variable name matches, <> returns a pointer to the associated value. RETURNS A pointer to the (string) value of the environment variable, or <> if there is no such environment variable. PORTABILITY <> is ANSI, but the rules for properly forming names of environment variables vary from one system to another. <> requires a global pointer <>. */ /* * Copyright (c) 1987, 2000 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that: (1) source distributions retain this entire copyright * notice and comment, and (2) distributions including binaries display * the following acknowledgement: ``This product includes software * developed by the University of California, Berkeley and its contributors'' * in the documentation or other materials provided with the distribution. * Neither the name of the University nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef _REENT_ONLY #include #include #include /* * getenv -- * Returns ptr to value associated with name, if any, else NULL. */ char * getenv (const char *name) { int offset; return _findenv (name, &offset); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/getenv_r.c000066400000000000000000000061721414576234500207570ustar00rootroot00000000000000/* FUNCTION <<_getenv_r>>---look up environment variable INDEX _getenv_r INDEX environ SYNOPSIS #include char *_getenv_r(struct _reent *<[reent_ptr]>, const char *<[name]>); DESCRIPTION <<_getenv_r>> searches the list of environment variable names and values (using the global pointer ``<>'') for a variable whose name matches the string at <[name]>. If a variable name matches, <<_getenv_r>> returns a pointer to the associated value. RETURNS A pointer to the (string) value of the environment variable, or <> if there is no such environment variable. PORTABILITY <<_getenv_r>> is not ANSI; the rules for properly forming names of environment variables vary from one system to another. This implementation does not permit '=' to be in identifiers. <<_getenv_r>> requires a global pointer <>. */ /* This file may have been modified by DJ Delorie (Jan 1991). If so, ** these modifications are Copyright (C) 1991 DJ Delorie. */ /* * Copyright (c) 1987 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that: (1) source distributions retain this entire copyright * notice and comment, and (2) distributions including binaries display * the following acknowledgement: ``This product includes software * developed by the University of California, Berkeley and its contributors'' * in the documentation or other materials provided with the distribution. * Neither the name of the University nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include #include #include #include "envlock.h" extern char **environ; /* Only deal with a pointer to environ, to work around subtle bugs with shared libraries and/or small data systems where the user declares his own 'environ'. */ static char ***p_environ = &environ; /* * _findenv -- * Returns pointer to value associated with name, if any, else NULL. * Sets offset to be the offset of the name/value combination in the * environmental array, for use by setenv(3) and unsetenv(3). * * This routine *should* be a static; don't use it. */ char * _findenv ( register const char *name, int *offset) { register int len; register char **p; const char *c; ENV_LOCK; /* In some embedded systems, this does not get set. This protects newlib from dereferencing a bad pointer. */ if (!*p_environ) { ENV_UNLOCK; return NULL; } c = name; while (*c && *c != '=') c++; /* Identifiers may not contain an '=', so cannot match if does */ if(*c != '=') { len = c - name; for (p = *p_environ; *p; ++p) if (!strncmp (*p, name, len)) if (*(c = *p + len) == '=') { *offset = p - *p_environ; ENV_UNLOCK; return (char *) (++c); } } ENV_UNLOCK; return NULL; } picolibc-1.7.4/newlib/libc/stdlib/getopt.c000066400000000000000000000346741414576234500204600ustar00rootroot00000000000000/**************************************************************************** getopt.c - Read command line options AUTHOR: Gregory Pietsch CREATED Fri Jan 10 21:13:05 1997 DESCRIPTION: The getopt() function parses the command line arguments. Its arguments argc and argv are the argument count and array as passed to the main() function on program invocation. The argument optstring is a list of available option characters. If such a character is followed by a colon (`:'), the option takes an argument, which is placed in optarg. If such a character is followed by two colons, the option takes an optional argument, which is placed in optarg. If the option does not take an argument, optarg is NULL. The external variable optind is the index of the next array element of argv to be processed; it communicates from one call to the next which element to process. The getopt_long() function works like getopt() except that it also accepts long options started by two dashes `--'. If these take values, it is either in the form --arg=value or --arg value It takes the additional arguments longopts which is a pointer to the first element of an array of type struct option. The last element of the array has to be filled with NULL for the name field. The longind pointer points to the index of the current long option relative to longopts if it is non-NULL. The getopt() function returns the option character if the option was found successfully, `:' if there was a missing parameter for one of the options, `?' for an unknown option character, and EOF for the end of the option list. The getopt_long() function's return value is described in the header file. The function getopt_long_only() is identical to getopt_long(), except that a plus sign `+' can introduce long options as well as `--'. The following describes how to deal with options that follow non-option argv-elements. If the caller did not specify anything, the default is REQUIRE_ORDER if the environment variable POSIXLY_CORRECT is defined, PERMUTE otherwise. REQUIRE_ORDER means don't recognize them as options; stop option processing when the first non-option is seen. This is what Unix does. This mode of operation is selected by either setting the environment variable POSIXLY_CORRECT, or using `+' as the first character of the optstring parameter. PERMUTE is the default. We permute the contents of ARGV as we scan, so that eventually all the non-options are at the end. This allows options to be given in any order, even with programs that were not written to expect this. RETURN_IN_ORDER is an option available to programs that were written to expect options and other argv-elements in any order and that care about the ordering of the two. We describe each non-option argv-element as if it were the argument of an option with character code 1. Using `-' as the first character of the optstring parameter selects this mode of operation. The special argument `--' forces an end of option-scanning regardless of the value of ordering. In the case of RETURN_IN_ORDER, only `--' can cause getopt() and friends to return EOF with optind != argc. 2012-08-26: Tried to make the error handling more sus4-like. The functions return a colon if getopt() and friends detect a missing argument and the first character of shortopts/optstring starts with a colon (`:'). If getopt() and friends detect a missing argument and shortopts/optstring does not start with a colon, the function returns a question mark (`?'). If it was a missing argument to a short option, optopt is set to the character in question. The colon goes after the ordering character (`+' or `-'). COPYRIGHT NOTICE AND DISCLAIMER: Copyright (C) 1997 Gregory Pietsch This file and the accompanying getopt.h header file are hereby placed in the public domain without restrictions. Just give the author credit, don't claim you wrote it or prevent anyone else from using it. Gregory Pietsch's current e-mail address: gpietsch@comcast.net ****************************************************************************/ #ifndef HAVE_GETOPT /* include files */ #include #include #include #define __need_getopt_newlib #include /* macros */ /* types */ typedef enum GETOPT_ORDERING_T { PERMUTE, RETURN_IN_ORDER, REQUIRE_ORDER } GETOPT_ORDERING_T; /* globally-defined variables */ char *optarg = 0; int optind = 0; int opterr = 1; int optopt = '?'; /* static variables */ static int optwhere = 0; static int permute_from = 0; static int num_nonopts = 0; /* functions */ /* reverse_argv_elements: reverses num elements starting at argv */ static void reverse_argv_elements (char **argv, int num) { int i; char *tmp; for (i = 0; i < (num >> 1); i++) { tmp = argv[i]; argv[i] = argv[num - i - 1]; argv[num - i - 1] = tmp; } } /* permute: swap two blocks of argv-elements given their lengths */ static void permute (char *const argv[], int len1, int len2) { reverse_argv_elements ((char **) argv, len1); reverse_argv_elements ((char **) argv, len1 + len2); reverse_argv_elements ((char **) argv, len2); } /* is_option: is this argv-element an option or the end of the option list? */ static int is_option (char *argv_element, int only) { return ((argv_element == 0) || (argv_element[0] == '-') || (only && argv_element[0] == '+')); } /* read_globals: read the values from the globals into a getopt_data structure */ static void read_globals (struct getopt_data *data) { data->optarg = optarg; data->optind = optind; data->opterr = opterr; data->optopt = optopt; data->optwhere = optwhere; data->permute_from = permute_from; data->num_nonopts = num_nonopts; } /* write_globals: write the values into the globals from a getopt_data structure */ static void write_globals (struct getopt_data *data) { optarg = data->optarg; optind = data->optind; opterr = data->opterr; optopt = data->optopt; optwhere = data->optwhere; permute_from = data->permute_from; num_nonopts = data->num_nonopts; } /* getopt_internal: the function that does all the dirty work NOTE: to reduce the code and RAM footprint this function uses fputs()/fputc() to do output to stderr instead of fprintf(). */ static int getopt_internal (int argc, char *const argv[], const char *shortopts, const struct option *longopts, int *longind, int only, struct getopt_data *data) { GETOPT_ORDERING_T ordering = PERMUTE; int optindex = 0; size_t match_chars = 0; char *possible_arg = 0; int longopt_match = -1; int has_arg = -1; char *cp = 0; int arg_next = 0; int initial_colon = 0; /* first, deal with silly parameters and easy stuff */ if (argc == 0 || argv == 0 || (shortopts == 0 && longopts == 0) || data->optind >= argc || argv[data->optind] == 0) return EOF; if (strcmp (argv[data->optind], "--") == 0) { data->optind++; return EOF; } /* if this is our first time through */ if (data->optind == 0) { data->optind = 1; data->optwhere = 1; data->permute_from = 0; data->num_nonopts = 0; } /* define ordering */ if (shortopts != 0 && (*shortopts == '-' || *shortopts == '+')) { ordering = (*shortopts == '-') ? RETURN_IN_ORDER : REQUIRE_ORDER; shortopts++; } else ordering = (getenv ("POSIXLY_CORRECT") != 0) ? REQUIRE_ORDER : PERMUTE; /* check for initial colon in shortopts */ if (shortopts != 0 && *shortopts == ':') { ++shortopts; initial_colon = 1; } /* * based on ordering, find our next option, if we're at the beginning of * one */ if (data->optwhere == 1) { switch (ordering) { default: /* shouldn't happen */ case PERMUTE: data->permute_from = data->optind; data->num_nonopts = 0; while (!is_option (argv[data->optind], only)) { data->optind++; data->num_nonopts++; } if (argv[data->optind] == 0) { /* no more options */ data->optind = data->permute_from; return EOF; } else if (strcmp (argv[data->optind], "--") == 0) { /* no more options, but have to get `--' out of the way */ permute (argv + data->permute_from, data->num_nonopts, 1); data->optind = data->permute_from + 1; return EOF; } break; case RETURN_IN_ORDER: if (!is_option (argv[data->optind], only)) { data->optarg = argv[data->optind++]; return (data->optopt = 1); } break; case REQUIRE_ORDER: if (!is_option (argv[data->optind], only)) return EOF; break; } } /* End of option list? */ if (argv[data->optind] == 0) return EOF; /* we've got an option, so parse it */ /* first, is it a long option? */ if (longopts != 0 && (memcmp (argv[data->optind], "--", 2) == 0 || (only && argv[data->optind][0] == '+')) && data->optwhere == 1) { /* handle long options */ if (memcmp (argv[data->optind], "--", 2) == 0) data->optwhere = 2; longopt_match = -1; possible_arg = strchr (argv[data->optind] + data->optwhere, '='); if (possible_arg == 0) { /* no =, so next argv might be arg */ match_chars = strlen (argv[data->optind]); possible_arg = argv[data->optind] + match_chars; match_chars = match_chars - data->optwhere; } else match_chars = (possible_arg - argv[data->optind]) - data->optwhere; for (optindex = 0; longopts[optindex].name != 0; ++optindex) { if (memcmp (argv[data->optind] + data->optwhere, longopts[optindex].name, match_chars) == 0) { /* do we have an exact match? */ if (match_chars == strlen (longopts[optindex].name)) { longopt_match = optindex; break; } /* do any characters match? */ else { if (longopt_match < 0) longopt_match = optindex; else { /* we have ambiguous options */ if (data->opterr) { fputs (argv[0], stderr); fputs (": option `", stderr); fputs (argv[data->optind], stderr); fputs ("' is ambiguous (could be `--", stderr); fputs (longopts[longopt_match].name, stderr); fputs ("' or `--", stderr); fputs (longopts[optindex].name, stderr); fputs ("')\n", stderr); } return (data->optopt = '?'); } } } } if (longopt_match >= 0) has_arg = longopts[longopt_match].has_arg; } /* if we didn't find a long option, is it a short option? */ if (longopt_match < 0 && shortopts != 0) { cp = strchr (shortopts, argv[data->optind][data->optwhere]); if (cp == 0) { /* couldn't find option in shortopts */ if (data->opterr) { fputs (argv[0], stderr); fputs (": invalid option -- `-", stderr); fputc (argv[data->optind][data->optwhere], stderr); fputs ("'\n", stderr); } data->optwhere++; if (argv[data->optind][data->optwhere] == '\0') { data->optind++; data->optwhere = 1; } return (data->optopt = '?'); } has_arg = ((cp[1] == ':') ? ((cp[2] == ':') ? OPTIONAL_ARG : REQUIRED_ARG) : NO_ARG); possible_arg = argv[data->optind] + data->optwhere + 1; data->optopt = *cp; } /* get argument and reset data->optwhere */ arg_next = 0; switch (has_arg) { case OPTIONAL_ARG: if (*possible_arg == '=') possible_arg++; data->optarg = (*possible_arg != '\0') ? possible_arg : 0; data->optwhere = 1; break; case REQUIRED_ARG: if (*possible_arg == '=') possible_arg++; if (*possible_arg != '\0') { data->optarg = possible_arg; data->optwhere = 1; } else if (data->optind + 1 >= argc) { if (data->opterr) { fputs (argv[0], stderr); fputs (": argument required for option `-", stderr); if (longopt_match >= 0) { fputc ('-', stderr); fputs (longopts[longopt_match].name, stderr); data->optopt = initial_colon ? ':' : '\?'; } else { fputc (*cp, stderr); data->optopt = *cp; } fputs ("'\n", stderr); } data->optind++; return initial_colon ? ':' : '\?'; } else { data->optarg = argv[data->optind + 1]; arg_next = 1; data->optwhere = 1; } break; default: /* shouldn't happen */ case NO_ARG: if (longopt_match < 0) { data->optwhere++; if (argv[data->optind][data->optwhere] == '\0') data->optwhere = 1; } else data->optwhere = 1; data->optarg = 0; break; } /* do we have to permute or otherwise modify data->optind? */ if (ordering == PERMUTE && data->optwhere == 1 && data->num_nonopts != 0) { permute (argv + data->permute_from, data->num_nonopts, 1 + arg_next); data->optind = data->permute_from + 1 + arg_next; } else if (data->optwhere == 1) data->optind = data->optind + 1 + arg_next; /* finally return */ if (longopt_match >= 0) { if (longind != 0) *longind = longopt_match; if (longopts[longopt_match].flag != 0) { *(longopts[longopt_match].flag) = longopts[longopt_match].val; return 0; } else return longopts[longopt_match].val; } else return data->optopt; } int getopt (int argc, char *const argv[], const char *optstring) { struct getopt_data data; int r; read_globals (&data); r = getopt_internal (argc, argv, optstring, 0, 0, 0, &data); write_globals (&data); return r; } int getopt_long (int argc, char *const argv[], const char *shortopts, const struct option *longopts, int *longind) { struct getopt_data data; int r; read_globals (&data); r = getopt_internal (argc, argv, shortopts, longopts, longind, 0, &data); write_globals (&data); return r; } int getopt_long_only (int argc, char *const argv[], const char *shortopts, const struct option *longopts, int *longind) { struct getopt_data data; int r; read_globals (&data); r = getopt_internal (argc, argv, shortopts, longopts, longind, 1, &data); write_globals (&data); return r; } int __getopt_r (int argc, char *const argv[], const char *optstring, struct getopt_data *data) { return getopt_internal (argc, argv, optstring, 0, 0, 0, data); } int __getopt_long_r (int argc, char *const argv[], const char *shortopts, const struct option *longopts, int *longind, struct getopt_data *data) { return getopt_internal (argc, argv, shortopts, longopts, longind, 0, data); } int __getopt_long_only_r (int argc, char *const argv[], const char *shortopts, const struct option *longopts, int *longind, struct getopt_data *data) { return getopt_internal (argc, argv, shortopts, longopts, longind, 1, data); } #endif /* !HAVE_GETOPT */ /* end of file GETOPT.C */ picolibc-1.7.4/newlib/libc/stdlib/getsubopt.3000066400000000000000000000100521414576234500210720ustar00rootroot00000000000000.\" Copyright (c) 1990, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)getsubopt.3 8.1 (Berkeley) 6/9/93 .\" $FreeBSD: src/lib/libc/stdlib/getsubopt.3,v 1.9 2001/09/07 14:46:35 asmodai Exp $ .\" .Dd June 9, 1993 .Dt GETSUBOPT 3 .Os .Sh NAME .Nm getsubopt .Nd get sub options from an argument .Sh LIBRARY .Lb libc .Sh SYNOPSIS .In unistd.h .Vt extern char *suboptarg ; .Ft int .Fn getsubopt "char **optionp" "char * const *tokens" "char **valuep" .Sh DESCRIPTION The .Fn getsubopt function parses a string containing tokens delimited by one or more tab, space or comma .Pq Ql \&, characters. It is intended for use in parsing groups of option arguments provided as part of a utility command line. .Pp The argument .Fa optionp is a pointer to a pointer to the string. The argument .Fa tokens is a pointer to a .Dv NULL Ns -terminated array of pointers to strings. .Pp The .Fn getsubopt function returns the zero-based offset of the pointer in the .Fa tokens array referencing a string which matches the first token in the string, or, \-1 if the string contains no tokens or .Fa tokens does not contain a matching string. .Pp If the token is of the form ``name=value'', the location referenced by .Fa valuep will be set to point to the start of the ``value'' portion of the token. .Pp On return from .Fn getsubopt , .Fa optionp will be set to point to the start of the next token in the string, or the null at the end of the string if no more tokens are present. The external variable .Fa suboptarg will be set to point to the start of the current token, or .Dv NULL if no tokens were present. The argument .Fa valuep will be set to point to the ``value'' portion of the token, or .Dv NULL if no ``value'' portion was present. .Sh EXAMPLES .Bd -literal -compact char *tokens[] = { #define ONE 0 "one", #define TWO 1 "two", NULL }; \&... extern char *optarg, *suboptarg; char *options, *value; while ((ch = getopt(argc, argv, "ab:")) != \-1) { switch(ch) { case 'a': /* process ``a'' option */ break; case 'b': options = optarg; while (*options) { switch(getsubopt(&options, tokens, &value)) { case ONE: /* process ``one'' sub option */ break; case TWO: /* process ``two'' sub option */ if (!value) error("no value for two"); i = atoi(value); break; case \-1: if (suboptarg) error("illegal sub option %s", suboptarg); else error("missing sub option"); break; } break; } .Ed .Sh SEE ALSO .Xr getopt 3 , .Xr strsep 3 .Sh HISTORY The .Fn getsubopt function first appeared in .Bx 4.4 . picolibc-1.7.4/newlib/libc/stdlib/getsubopt.c000066400000000000000000000061331414576234500211570ustar00rootroot00000000000000/*- * Copyright (c) 1990, 1993 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)getsubopt.c 8.1 (Berkeley) 6/4/93"; #endif /* LIBC_SCCS and not lint */ #include #include #include #include /* * The SVID interface to getsubopt provides no way of figuring out which * part of the suboptions list wasn't matched. This makes error messages * tricky... The extern variable suboptarg is a pointer to the token * which didn't match. */ char *suboptarg; int getsubopt(char **optionp, char * const * tokens, char **valuep) { int cnt; char *p; suboptarg = *valuep = NULL; if (!optionp || !*optionp) return(-1); /* skip leading white-space, commas */ for (p = *optionp; *p && (*p == ',' || *p == ' ' || *p == '\t'); ++p); if (!*p) { *optionp = p; return(-1); } /* save the start of the token, and skip the rest of the token. */ for (suboptarg = p; *++p && *p != ',' && *p != '=' && *p != ' ' && *p != '\t';); if (*p) { /* * If there's an equals sign, set the value pointer, and * skip over the value part of the token. Terminate the * token. */ if (*p == '=') { *p = '\0'; for (*valuep = ++p; *p && *p != ',' && *p != ' ' && *p != '\t'; ++p); if (*p) *p++ = '\0'; } else *p++ = '\0'; /* Skip any whitespace or commas after this token. */ for (; *p && (*p == ',' || *p == ' ' || *p == '\t'); ++p); } /* set optionp for next round. */ *optionp = p; for (cnt = 0; *tokens; ++tokens, ++cnt) if (!strcmp(suboptarg, *tokens)) return(cnt); return(-1); } picolibc-1.7.4/newlib/libc/stdlib/imaxabs.c000066400000000000000000000030641414576234500205670ustar00rootroot00000000000000/*- * Copyright (c) 2001 Mike Barcroft * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include __FBSDID("$FreeBSD: head/lib/libc/stdlib/imaxabs.c 86368 2001-11-15 02:05:03Z mike $"); #include #include intmax_t imaxabs(intmax_t j) { return (j < 0 ? -j : j); } picolibc-1.7.4/newlib/libc/stdlib/imaxdiv.c000066400000000000000000000035401414576234500206030ustar00rootroot00000000000000/*- * Copyright (c) 2001 Mike Barcroft * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include __FBSDID("$FreeBSD: head/lib/libc/stdlib/imaxdiv.c 301115 2016-06-01 10:14:25Z ache $"); #include #include /* See comments in div.c for implementation details. */ imaxdiv_t imaxdiv(intmax_t numer, intmax_t denom) { imaxdiv_t retval; retval.quot = numer / denom; retval.rem = numer % denom; #if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L) if (numer >= 0 && retval.rem < 0) { retval.quot++; retval.rem -= denom; } #endif return (retval); } picolibc-1.7.4/newlib/libc/stdlib/itoa.c000066400000000000000000000030101414576234500200660ustar00rootroot00000000000000/* Copyright (c) 2014 Corinna Vinschen */ /* FUNCTION <>---integer to string INDEX itoa SYNOPSIS #include char *itoa(int <[value]>, char *<[str]>, int <[base]>); char *__itoa(int <[value]>, char *<[str]>, int <[base]>); DESCRIPTION <> converts the integer <[value]> to a null-terminated string using the specified base, which must be between 2 and 36, inclusive. If <[base]> is 10, <[value]> is treated as signed and the string will be prefixed with '-' if negative. For all other bases, <[value]> is treated as unsigned. <[str]> should be an array long enough to contain the converted value, which in the worst case is sizeof(int)*8+1 bytes. RETURNS A pointer to the string, <[str]>, or NULL if <[base]> is invalid. PORTABILITY <> is non-ANSI. No supporting OS subroutine calls are required. */ #include char * __itoa (int value, char *str, int base) { unsigned uvalue; int i = 0; /* Check base is supported. */ if ((base < 2) || (base > 36)) { str[0] = '\0'; return NULL; } /* Negative numbers are only supported for decimal. * Cast to unsigned to avoid overflow for maximum negative value. */ if ((base == 10) && (value < 0)) { str[i++] = '-'; uvalue = (unsigned)-value; } else uvalue = (unsigned)value; __utoa (uvalue, &str[i], base); return str; } char * itoa (int value, char *str, int base) { return __itoa (value, str, base); } picolibc-1.7.4/newlib/libc/stdlib/jrand48.c000066400000000000000000000013431414576234500204130ustar00rootroot00000000000000/* * Copyright (c) 1993 Martin Birgmeier * All rights reserved. * * You may redistribute unmodified or modified versions of this source * code provided that the above copyright notice and this and the * following conditions are retained. * * This software is provided ``as is'', and comes with no warranties * of any kind. I shall in no event be liable for anything that happens * to anyone/anything when using this software. */ #include "rand48.h" long _jrand48_r (struct _rand48 *r, unsigned short xseed[3]) { __dorand48(r, xseed); return ((long) xseed[2] << 16) + (long) xseed[1]; } #ifndef _REENT_ONLY long jrand48 (unsigned short xseed[3]) { return _jrand48_r (&_rand48, xseed); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/l64a.c000066400000000000000000000025531414576234500177130ustar00rootroot00000000000000/* Copyright (c) 2002 Jeff Johnston */ /* l64a - convert long to radix-64 ascii string * * Conversion is performed on at most 32-bits of input value starting * from least significant bits to the most significant bits. * * The routine splits the input value into groups of 6 bits for up to * 32 bits of input. This means that the last group may be 2 bits * (bits 30 and 31). * * Each group of 6 bits forms a value from 0-63 which is converted into * a character as follows: * 0 = '.' * 1 = '/' * 2-11 = '0' to '9' * 12-37 = 'A' to 'Z' * 38-63 = 'a' to 'z' * * When the remaining bits are zero or all 32 bits have been translated, * a nul terminator is appended to the resulting string. An input value of * 0 results in an empty string. */ #include <_ansi.h> #include static const char R64_ARRAY[] = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; char * l64a (long value) { char *ptr; char *result; int i, index; unsigned long tmp = (unsigned long)value & 0xffffffff; static NEWLIB_THREAD_LOCAL char _l64a_buf[8]; result = _l64a_buf; ptr = result; for (i = 0; i < 6; ++i) { if (tmp == 0) { *ptr = '\0'; break; } index = tmp & (64 - 1); *ptr++ = R64_ARRAY[index]; tmp >>= 6; } return result; } picolibc-1.7.4/newlib/libc/stdlib/labs.c000066400000000000000000000013641414576234500200650ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ /* FUNCTION <>---long integer absolute value INDEX labs SYNOPSIS #include long labs(long <[i]>); DESCRIPTION <> returns @tex $|x|$, @end tex the absolute value of <[i]> (also called the magnitude of <[i]>). That is, if <[i]> is negative, the result is the opposite of <[i]>, but if <[i]> is nonnegative the result is <[i]>. The similar function <> uses and returns <> rather than <> values. RETURNS The result is a nonnegative long integer. PORTABILITY <> is ANSI. No supporting OS subroutine calls are required. */ #include long labs (long x) { if (x < 0) { x = -x; } return x; } picolibc-1.7.4/newlib/libc/stdlib/lcong48.c000066400000000000000000000014321414576234500204160ustar00rootroot00000000000000/* * Copyright (c) 1993 Martin Birgmeier * All rights reserved. * * You may redistribute unmodified or modified versions of this source * code provided that the above copyright notice and this and the * following conditions are retained. * * This software is provided ``as is'', and comes with no warranties * of any kind. I shall in no event be liable for anything that happens * to anyone/anything when using this software. */ #include "rand48.h" void _lcong48_r (struct _rand48 *r, unsigned short p[7]) { r->_seed[0] = p[0]; r->_seed[1] = p[1]; r->_seed[2] = p[2]; r->_mult[0] = p[3]; r->_mult[1] = p[4]; r->_mult[2] = p[5]; r->_add = p[6]; } #ifndef _REENT_ONLY void lcong48 (unsigned short p[7]) { _lcong48_r (&_rand48, p); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/ldiv.c000066400000000000000000000053021414576234500200760ustar00rootroot00000000000000/* FUNCTION <>---divide two long integers INDEX ldiv SYNOPSIS #include ldiv_t ldiv(long <[n]>, long <[d]>); DESCRIPTION Divide @tex $n/d$, @end tex @ifnottex <[n]>/<[d]>, @end ifnottex returning quotient and remainder as two long integers in a structure <>. RETURNS The result is represented with the structure . typedef struct . { . long quot; . long rem; . } ldiv_t; where the <> field represents the quotient, and <> the remainder. For nonzero <[d]>, if `<<<[r]> = ldiv(<[n]>,<[d]>);>>' then <[n]> equals `<<<[r]>.rem + <[d]>*<[r]>.quot>>'. To divide <> rather than <> values, use the similar function <
>. PORTABILITY <> is ANSI. No supporting OS subroutines are required. */ /* * Copyright (c) 1990 Regents of the University of California. * All rights reserved. * * This code is derived from software contributed to Berkeley by * Chris Torek. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include <_ansi.h> #include /* ldiv_t */ ldiv_t ldiv (long num, long denom) { ldiv_t r; /* see div.c for comments */ r.quot = num / denom; r.rem = num % denom; if (num >= 0 && r.rem < 0) { ++r.quot; r.rem -= denom; } else if (num < 0 && r.rem > 0) { --r.quot; r.rem += denom; } return (r); } picolibc-1.7.4/newlib/libc/stdlib/ldtoa.c000066400000000000000000002274671414576234500202650ustar00rootroot00000000000000 /* Extended precision arithmetic functions for long double I/O. * This program has been placed in the public domain. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "mprec.h" /* These are the externally visible entries. */ /* linux name: long double _IO_strtold (char *, char **); */ int _ldcheck (long double *); #if 0 void _IO_ldtostr (long double *, char *, int, int, char); #endif /* Number of 16 bit words in external x type format */ #define NE 10 /* Number of 16 bit words in internal format */ #define NI (NE+3) /* Array offset to exponent */ #define E 1 /* Array offset to high guard word */ #define M 2 /* Number of bits of precision */ #define NBITS ((NI-4)*16) /* Maximum number of decimal digits in ASCII conversion * = NBITS*log10(2) */ #define NDEC (NBITS*8/27) /* The exponent of 1.0 */ #define EXONE (0x3fff) /* Maximum exponent digits - base 10 */ #define MAX_EXP_DIGITS 5 /* Control structure for long double conversion including rounding precision values. * rndprc can be set to 80 (if NE=6), 64, 56, 53, or 24 bits. */ typedef struct { int rlast; int rndprc; int rw; int re; int outexpon; unsigned short rmsk; unsigned short rmbit; unsigned short rebit; unsigned short rbit[NI]; unsigned short equot[NI]; } LDPARMS; static void esub (const short unsigned int *a, const short unsigned int *b, short unsigned int *c, LDPARMS * ldp); static void emul (const short unsigned int *a, const short unsigned int *b, short unsigned int *c, LDPARMS * ldp); static void ediv (const short unsigned int *a, const short unsigned int *b, short unsigned int *c, LDPARMS * ldp); static int ecmp (const short unsigned int *a, const short unsigned int *b); static int enormlz (short unsigned int *x); static int eshift (short unsigned int *x, int sc); static void eshup1 (register short unsigned int *x); static void eshup8 (register short unsigned int *x); static void eshup6 (register short unsigned int *x); static void eshdn1 (register short unsigned int *x); static void eshdn8 (register short unsigned int *x); static void eshdn6 (register short unsigned int *x); static void eneg (short unsigned int *x); static void emov (register const short unsigned int *a, register short unsigned int *b); static void eclear (register short unsigned int *x); static void einfin (register short unsigned int *x, register LDPARMS * ldp); static void efloor (short unsigned int *x, short unsigned int *y, LDPARMS * ldp); static void etoasc (short unsigned int *x, char *string, int ndigs, int outformat, LDPARMS * ldp); union uconv { unsigned short pe; long double d; }; #if LDBL_MANT_DIG == 24 static void e24toe (short unsigned int *pe, short unsigned int *y, LDPARMS * ldp); #elif LDBL_MANT_DIG == 53 static void e53toe (short unsigned int *pe, short unsigned int *y, LDPARMS * ldp); #elif LDBL_MANT_DIG == 64 static void e64toe (short unsigned int *pe, short unsigned int *y, LDPARMS * ldp); #else static void e113toe (short unsigned int *pe, short unsigned int *y, LDPARMS * ldp); #endif /* econst.c */ /* e type constants used by high precision check routines */ #if NE == 10 /* 0.0 */ static const unsigned short ezero[NE] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, }; /* 1.0E0 */ static const unsigned short eone[NE] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0x3fff, }; #else /* 0.0 */ static const unsigned short ezero[NE] = { 0, 0000000, 0000000, 0000000, 0000000, 0000000, }; /* 1.0E0 */ static const unsigned short eone[NE] = { 0, 0000000, 0000000, 0000000, 0100000, 0x3fff, }; #endif /* Debugging routine for displaying errors */ #ifdef DEBUG /* Notice: the order of appearance of the following * messages is bound to the error codes defined * in mconf.h. */ static const char *const ermsg[7] = { "unknown", /* error code 0 */ "domain", /* error code 1 */ "singularity", /* et seq. */ "overflow", "underflow", "total loss of precision", "partial loss of precision" }; #define mtherr(name, code) printf( "\n%s %s error\n", name, ermsg[code] ); #else #define mtherr(name, code) #endif /* ieee.c * * Extended precision IEEE binary floating point arithmetic routines * * Numbers are stored in C language as arrays of 16-bit unsigned * short integers. The arguments of the routines are pointers to * the arrays. * * * External e type data structure, simulates Intel 8087 chip * temporary real format but possibly with a larger significand: * * NE-1 significand words (least significant word first, * most significant bit is normally set) * exponent (value = EXONE for 1.0, * top bit is the sign) * * * Internal data structure of a number (a "word" is 16 bits): * * ei[0] sign word (0 for positive, 0xffff for negative) * ei[1] biased exponent (value = EXONE for the number 1.0) * ei[2] high guard word (always zero after normalization) * ei[3] * to ei[NI-2] significand (NI-4 significand words, * most significant word first, * most significant bit is set) * ei[NI-1] low guard word (0x8000 bit is rounding place) * * * * Routines for external format numbers * * asctoe( string, e ) ASCII string to extended double e type * asctoe64( string, &d ) ASCII string to long double * asctoe53( string, &d ) ASCII string to double * asctoe24( string, &f ) ASCII string to single * asctoeg( string, e, prec, ldp ) ASCII string to specified precision * e24toe( &f, e, ldp ) IEEE single precision to e type * e53toe( &d, e, ldp ) IEEE double precision to e type * e64toe( &d, e, ldp ) IEEE long double precision to e type * e113toe( &d, e, ldp ) IEEE long double precision to e type * eabs(e) absolute value * eadd( a, b, c ) c = b + a * eclear(e) e = 0 * ecmp (a, b) Returns 1 if a > b, 0 if a == b, * -1 if a < b, -2 if either a or b is a NaN. * ediv( a, b, c, ldp ) c = b / a * efloor( a, b, ldp ) truncate to integer, toward -infinity * efrexp( a, exp, s ) extract exponent and significand * eifrac( e, &l, frac ) e to long integer and e type fraction * euifrac( e, &l, frac ) e to unsigned long integer and e type fraction * einfin( e, ldp ) set e to infinity, leaving its sign alone * eldexp( a, n, b ) multiply by 2**n * emov( a, b ) b = a * emul( a, b, c, ldp ) c = b * a * eneg(e) e = -e * eround( a, b ) b = nearest integer value to a * esub( a, b, c, ldp ) c = b - a * e24toasc( &f, str, n ) single to ASCII string, n digits after decimal * e53toasc( &d, str, n ) double to ASCII string, n digits after decimal * e64toasc( &d, str, n ) long double to ASCII string * etoasc(e,str,n,fmt,ldp)e to ASCII string, n digits after decimal * etoe24( e, &f ) convert e type to IEEE single precision * etoe53( e, &d ) convert e type to IEEE double precision * etoe64( e, &d ) convert e type to IEEE long double precision * ltoe( &l, e ) long (32 bit) integer to e type * ultoe( &l, e ) unsigned long (32 bit) integer to e type * eisneg( e ) 1 if sign bit of e != 0, else 0 * eisinf( e ) 1 if e has maximum exponent (non-IEEE) * or is infinite (IEEE) * eisnan( e ) 1 if e is a NaN * esqrt( a, b ) b = square root of a * * * Routines for internal format numbers * * eaddm( ai, bi ) add significands, bi = bi + ai * ecleaz(ei) ei = 0 * ecleazs(ei) set ei = 0 but leave its sign alone * ecmpm( ai, bi ) compare significands, return 1, 0, or -1 * edivm( ai, bi, ldp ) divide significands, bi = bi / ai * emdnorm(ai,l,s,exp,ldp) normalize and round off * emovi( a, ai ) convert external a to internal ai * emovo( ai, a, ldp ) convert internal ai to external a * emovz( ai, bi ) bi = ai, low guard word of bi = 0 * emulm( ai, bi, ldp ) multiply significands, bi = bi * ai * enormlz(ei) left-justify the significand * eshdn1( ai ) shift significand and guards down 1 bit * eshdn8( ai ) shift down 8 bits * eshdn6( ai ) shift down 16 bits * eshift( ai, n ) shift ai n bits up (or down if n < 0) * eshup1( ai ) shift significand and guards up 1 bit * eshup8( ai ) shift up 8 bits * eshup6( ai ) shift up 16 bits * esubm( ai, bi ) subtract significands, bi = bi - ai * * * The result is always normalized and rounded to NI-4 word precision * after each arithmetic operation. * * Exception flags are NOT fully supported. * * Define USE_INFINITY in mconf.h for support of infinity; otherwise a * saturation arithmetic is implemented. * * Define NANS for support of Not-a-Number items; otherwise the * arithmetic will never produce a NaN output, and might be confused * by a NaN input. * If NaN's are supported, the output of ecmp(a,b) is -2 if * either a or b is a NaN. This means asking if(ecmp(a,b) < 0) * may not be legitimate. Use if(ecmp(a,b) == -1) for less-than * if in doubt. * Signaling NaN's are NOT supported; they are treated the same * as quiet NaN's. * * Denormals are always supported here where appropriate (e.g., not * for conversion to DEC numbers). */ /* * Revision history: * * 5 Jan 84 PDP-11 assembly language version * 6 Dec 86 C language version * 30 Aug 88 100 digit version, improved rounding * 15 May 92 80-bit long double support * 22 Nov 00 Revised to fit into newlib by Jeff Johnston * * Author: S. L. Moshier. * * Copyright (c) 1984,2000 S.L. Moshier * * Permission to use, copy, modify, and distribute this software for any * purpose without fee is hereby granted, provided that this entire notice * is included in all copies of any software which is or includes a copy * or modification of this software and in all copies of the supporting * documentation for such software. * * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED * WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION * OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS * SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. * */ #include /* #include "\usr\include\stdio.h" */ /*#include "ehead.h"*/ /*#include "mconf.h"*/ /* mconf.h * * Common include file for math routines * * * * SYNOPSIS: * * #include "mconf.h" * * * * DESCRIPTION: * * This file contains definitions for error codes that are * passed to the common error handling routine mtherr() * (which see). * * The file also includes a conditional assembly definition * for the type of computer arithmetic (IEEE, DEC, Motorola * IEEE, or UNKnown). * * For Digital Equipment PDP-11 and VAX computers, certain * IBM systems, and others that use numbers with a 56-bit * significand, the symbol DEC should be defined. In this * mode, most floating point constants are given as arrays * of octal integers to eliminate decimal to binary conversion * errors that might be introduced by the compiler. * * For computers, such as IBM PC, that follow the IEEE * Standard for Binary Floating Point Arithmetic (ANSI/IEEE * Std 754-1985), the symbol IBMPC should be defined. These * numbers have 53-bit significands. In this mode, constants * are provided as arrays of hexadecimal 16 bit integers. * * To accommodate other types of computer arithmetic, all * constants are also provided in a normal decimal radix * which one can hope are correctly converted to a suitable * format by the available C language compiler. To invoke * this mode, the symbol UNK is defined. * * An important difference among these modes is a predefined * set of machine arithmetic constants for each. The numbers * MACHEP (the machine roundoff error), MAXNUM (largest number * represented), and several other parameters are preset by * the configuration symbol. Check the file const.c to * ensure that these values are correct for your computer. * * For ANSI C compatibility, define ANSIC equal to 1. Currently * this affects only the atan2() function and others that use it. */ /* Constant definitions for math error conditions */ #define DOMAIN 1 /* argument domain error */ #define SING 2 /* argument singularity */ #define OVERFLOW 3 /* overflow range error */ #define UNDERFLOW 4 /* underflow range error */ #define TLOSS 5 /* total loss of precision */ #define PLOSS 6 /* partial loss of precision */ #define EDOM 33 #define ERANGE 34 typedef struct { double r; double i; } cmplx; /* Type of computer arithmetic */ #ifndef DEC #ifdef __IEEE_LITTLE_ENDIAN #define IBMPC 1 #else /* !__IEEE_LITTLE_ENDIAN */ #define MIEEE 1 #endif /* !__IEEE_LITTLE_ENDIAN */ #endif /* !DEC */ /* Define 1 for ANSI C atan2() function * See atan.c and clog.c. */ #define ANSIC 1 /*define VOLATILE volatile*/ #define VOLATILE #define NANS #define USE_INFINITY /* NaN's require infinity support. */ #ifdef NANS #ifndef INFINITY #define USE_INFINITY #endif #endif /* This handles 64-bit long ints. */ #define LONGBITS (8 * sizeof(long)) static void eaddm (short unsigned int *x, short unsigned int *y); static void esubm (short unsigned int *x, short unsigned int *y); static void emdnorm (short unsigned int *s, int lost, int subflg, long int exp, int rcntrl, LDPARMS * ldp); #if 0 /* Broken, unusable implementation of strtold */ static int asctoeg (char *ss, short unsigned int *y, int oprec, LDPARMS * ldp); #endif static void enan (short unsigned int *nan, int size); #if LDBL_MANT_DIG == 24 static void toe24 (short unsigned int *x, short unsigned int *y); #elif LDBL_MANT_DIG == 53 static void toe53 (short unsigned int *x, short unsigned int *y); #elif LDBL_MANT_DIG == 64 static void toe64 (short unsigned int *a, short unsigned int *b); #else static void toe113 (short unsigned int *a, short unsigned int *b); #endif static void eiremain (short unsigned int *den, short unsigned int *num, LDPARMS * ldp); static int ecmpm (register short unsigned int *a, register short unsigned int *b); static int edivm (short unsigned int *den, short unsigned int *num, LDPARMS * ldp); static int emulm (short unsigned int *a, short unsigned int *b, LDPARMS * ldp); static int eisneg (const short unsigned int *x); static int eisinf (const short unsigned int *x); static void emovi (const short unsigned int *a, short unsigned int *b); static void emovo (short unsigned int *a, short unsigned int *b, LDPARMS * ldp); static void emovz (register short unsigned int *a, register short unsigned int *b); static void ecleaz (register short unsigned int *xi); static void eadd1 (const short unsigned int *a, const short unsigned int *b, short unsigned int *c, int subflg, LDPARMS * ldp); static int eisnan (const short unsigned int *x); static int eiisnan (short unsigned int *x); #ifdef DEC static void etodec (), todec (), dectoe (); #endif /* ; Clear out entire external format number. ; ; unsigned short x[]; ; eclear( x ); */ static void eclear (register short unsigned int *x) { register int i; for (i = 0; i < NE; i++) *x++ = 0; } /* Move external format number from a to b. * * emov( a, b ); */ static void emov (register const short unsigned int *a, register short unsigned int *b) { register int i; for (i = 0; i < NE; i++) *b++ = *a++; } /* ; Negate external format number ; ; unsigned short x[NE]; ; eneg( x ); */ static void eneg (short unsigned int *x) { #ifdef NANS if (eisnan (x)) return; #endif x[NE - 1] ^= 0x8000; /* Toggle the sign bit */ } /* Return 1 if external format number is negative, * else return zero. */ static int eisneg (const short unsigned int *x) { #ifdef NANS if (eisnan (x)) return (0); #endif if (x[NE - 1] & 0x8000) return (1); else return (0); } /* Return 1 if external format number has maximum possible exponent, * else return zero. */ static int eisinf (const short unsigned int *x) { if ((x[NE - 1] & 0x7fff) == 0x7fff) { #ifdef NANS if (eisnan (x)) return (0); #endif return (1); } else return (0); } /* Check if e-type number is not a number. */ static int eisnan (const short unsigned int *x) { #ifdef NANS int i; /* NaN has maximum exponent */ if ((x[NE - 1] & 0x7fff) != 0x7fff) return (0); /* ... and non-zero significand field. */ for (i = 0; i < NE - 1; i++) { if (*x++ != 0) return (1); } #endif return (0); } /* ; Fill entire number, including exponent and significand, with ; largest possible number. These programs implement a saturation ; value that is an ordinary, legal number. A special value ; "infinity" may also be implemented; this would require tests ; for that value and implementation of special rules for arithmetic ; operations involving inifinity. */ static void einfin (register short unsigned int *x, register LDPARMS * ldp) { register int i; #ifdef USE_INFINITY for (i = 0; i < NE - 1; i++) *x++ = 0; *x |= 32767; (void) ldp; #else for (i = 0; i < NE - 1; i++) *x++ = 0xffff; *x |= 32766; if (ldp->rndprc < NBITS) { if (ldp->rndprc == 113) { *(x - 9) = 0; *(x - 8) = 0; } if (ldp->rndprc == 64) { *(x - 5) = 0; } if (ldp->rndprc == 53) { *(x - 4) = 0xf800; } else { *(x - 4) = 0; *(x - 3) = 0; *(x - 2) = 0xff00; } } #endif } /* Move in external format number, * converting it to internal format. */ static void emovi (const short unsigned int *a, short unsigned int *b) { register const unsigned short *p; register unsigned short *q; int i; q = b; p = a + (NE - 1); /* point to last word of external number */ /* get the sign bit */ if (*p & 0x8000) *q++ = 0xffff; else *q++ = 0; /* get the exponent */ *q = *p--; *q++ &= 0x7fff; /* delete the sign bit */ #ifdef USE_INFINITY if ((*(q - 1) & 0x7fff) == 0x7fff) { #ifdef NANS if (eisnan (a)) { *q++ = 0; for (i = 3; i < NI; i++) *q++ = *p--; return; } #endif for (i = 2; i < NI; i++) *q++ = 0; return; } #endif /* clear high guard word */ *q++ = 0; /* move in the significand */ for (i = 0; i < NE - 1; i++) *q++ = *p--; /* clear low guard word */ *q = 0; } /* Move internal format number out, * converting it to external format. */ static void emovo (short unsigned int *a, short unsigned int *b, LDPARMS * ldp) { register unsigned short *p, *q; unsigned short i; p = a; q = b + (NE - 1); /* point to output exponent */ /* combine sign and exponent */ i = *p++; if (i) *q-- = *p++ | 0x8000; else *q-- = *p++; #ifdef USE_INFINITY if (*(p - 1) == 0x7fff) { #ifdef NANS if (eiisnan (a)) { enan (b, NBITS); return; } #endif einfin (b, ldp); return; } #endif /* skip over guard word */ ++p; /* move the significand */ for (i = 0; i < NE - 1; i++) *q-- = *p++; } /* Clear out internal format number. */ static void ecleaz (register short unsigned int *xi) { register int i; for (i = 0; i < NI; i++) *xi++ = 0; } /* same, but don't touch the sign. */ static void ecleazs (register short unsigned int *xi) { register int i; ++xi; for (i = 0; i < NI - 1; i++) *xi++ = 0; } /* Move internal format number from a to b. */ static void emovz (register short unsigned int *a, register short unsigned int *b) { register int i; for (i = 0; i < NI - 1; i++) *b++ = *a++; /* clear low guard word */ *b = 0; } /* Return nonzero if internal format number is a NaN. */ static int eiisnan (short unsigned int *x) { int i; if ((x[E] & 0x7fff) == 0x7fff) { for (i = M + 1; i < NI; i++) { if (x[i] != 0) return (1); } } return (0); } #if LDBL_MANT_DIG == 64 /* Return nonzero if internal format number is infinite. */ static int eiisinf (unsigned short x[]) { #ifdef NANS if (eiisnan (x)) return (0); #endif if ((x[E] & 0x7fff) == 0x7fff) return (1); return (0); } #endif /* LDBL_MANT_DIG == 64 */ /* ; Compare significands of numbers in internal format. ; Guard words are included in the comparison. ; ; unsigned short a[NI], b[NI]; ; cmpm( a, b ); ; ; for the significands: ; returns +1 if a > b ; 0 if a == b ; -1 if a < b */ static int ecmpm (register short unsigned int *a, register short unsigned int *b) { int i; a += M; /* skip up to significand area */ b += M; for (i = M; i < NI; i++) { if (*a++ != *b++) goto difrnt; } return (0); difrnt: if (*(--a) > *(--b)) return (1); else return (-1); } /* ; Shift significand down by 1 bit */ static void eshdn1 (register short unsigned int *x) { register unsigned short bits; int i; x += M; /* point to significand area */ bits = 0; for (i = M; i < NI; i++) { if (*x & 1) bits |= 1; *x >>= 1; if (bits & 2) *x |= 0x8000; bits <<= 1; ++x; } } /* ; Shift significand up by 1 bit */ static void eshup1 (register short unsigned int *x) { register unsigned short bits; int i; x += NI - 1; bits = 0; for (i = M; i < NI; i++) { if (*x & 0x8000) bits |= 1; *x <<= 1; if (bits & 2) *x |= 1; bits <<= 1; --x; } } /* ; Shift significand down by 8 bits */ static void eshdn8 (register short unsigned int *x) { register unsigned short newbyt, oldbyt; int i; x += M; oldbyt = 0; for (i = M; i < NI; i++) { newbyt = *x << 8; *x >>= 8; *x |= oldbyt; oldbyt = newbyt; ++x; } } /* ; Shift significand up by 8 bits */ static void eshup8 (register short unsigned int *x) { int i; register unsigned short newbyt, oldbyt; x += NI - 1; oldbyt = 0; for (i = M; i < NI; i++) { newbyt = *x >> 8; *x <<= 8; *x |= oldbyt; oldbyt = newbyt; --x; } } /* ; Shift significand up by 16 bits */ static void eshup6 (register short unsigned int *x) { int i; register unsigned short *p; p = x + M; x += M + 1; for (i = M; i < NI - 1; i++) *p++ = *x++; *p = 0; } /* ; Shift significand down by 16 bits */ static void eshdn6 (register short unsigned int *x) { int i; register unsigned short *p; x += NI - 1; p = x + 1; for (i = M; i < NI - 1; i++) *(--p) = *(--x); *(--p) = 0; } /* ; Add significands ; x + y replaces y */ static void eaddm (short unsigned int *x, short unsigned int *y) { register unsigned long a; int i; unsigned int carry; x += NI - 1; y += NI - 1; carry = 0; for (i = M; i < NI; i++) { a = (unsigned long) (*x) + (unsigned long) (*y) + carry; if (a & 0x10000) carry = 1; else carry = 0; *y = (unsigned short) a; --x; --y; } } /* ; Subtract significands ; y - x replaces y */ static void esubm (short unsigned int *x, short unsigned int *y) { unsigned long a; int i; unsigned int carry; x += NI - 1; y += NI - 1; carry = 0; for (i = M; i < NI; i++) { a = (unsigned long) (*y) - (unsigned long) (*x) - carry; if (a & 0x10000) carry = 1; else carry = 0; *y = (unsigned short) a; --x; --y; } } /* Divide significands */ /* Multiply significand of e-type number b by 16-bit quantity a, e-type result to c. */ static void m16m (short unsigned int a, short unsigned int *b, short unsigned int *c) { register unsigned short *pp; register unsigned long carry; unsigned short *ps; unsigned short p[NI]; unsigned long aa, m; int i; aa = a; pp = &p[NI - 2]; *pp++ = 0; *pp = 0; ps = &b[NI - 1]; for (i = M + 1; i < NI; i++) { if (*ps == 0) { --ps; --pp; *(pp - 1) = 0; } else { m = (unsigned long) aa **ps--; carry = (m & 0xffff) + *pp; *pp-- = (unsigned short) carry; carry = (carry >> 16) + (m >> 16) + *pp; *pp = (unsigned short) carry; *(pp - 1) = carry >> 16; } } for (i = M; i < NI; i++) c[i] = p[i]; } /* Divide significands. Neither the numerator nor the denominator is permitted to have its high guard word nonzero. */ static int edivm (short unsigned int *den, short unsigned int *num, LDPARMS * ldp) { int i; register unsigned short *p; unsigned long tnum; unsigned short j, tdenm, tquot; unsigned short tprod[NI + 1]; unsigned short *equot = ldp->equot; p = &equot[0]; *p++ = num[0]; *p++ = num[1]; for (i = M; i < NI; i++) { *p++ = 0; } eshdn1 (num); tdenm = den[M + 1]; for (i = M; i < NI; i++) { /* Find trial quotient digit (the radix is 65536). */ tnum = (((unsigned long) num[M]) << 16) + num[M + 1]; /* Do not execute the divide instruction if it will overflow. */ if ((tdenm * 0xffffUL) < tnum) tquot = 0xffff; else tquot = tnum / tdenm; /* Prove that the divide worked. */ /* tcheck = (unsigned long )tquot * tdenm; if( tnum - tcheck > tdenm ) tquot = 0xffff; */ /* Multiply denominator by trial quotient digit. */ m16m (tquot, den, tprod); /* The quotient digit may have been overestimated. */ if (ecmpm (tprod, num) > 0) { tquot -= 1; esubm (den, tprod); if (ecmpm (tprod, num) > 0) { tquot -= 1; esubm (den, tprod); } } /* if( ecmpm( tprod, num ) > 0 ) { eshow( "tprod", tprod ); eshow( "num ", num ); printf( "tnum = %08lx, tden = %04x, tquot = %04x\n", tnum, den[M+1], tquot ); } */ esubm (tprod, num); /* if( ecmpm( num, den ) >= 0 ) { eshow( "num ", num ); eshow( "den ", den ); printf( "tnum = %08lx, tden = %04x, tquot = %04x\n", tnum, den[M+1], tquot ); } */ equot[i] = tquot; eshup6 (num); } /* test for nonzero remainder after roundoff bit */ p = &num[M]; j = 0; for (i = M; i < NI; i++) { j |= *p++; } if (j) j = 1; for (i = 0; i < NI; i++) num[i] = equot[i]; return ((int) j); } /* Multiply significands */ static int emulm (short unsigned int *a, short unsigned int *b, LDPARMS * ldp) { unsigned short *p, *q; unsigned short pprod[NI]; unsigned short j; int i; unsigned short *equot = ldp->equot; equot[0] = b[0]; equot[1] = b[1]; for (i = M; i < NI; i++) equot[i] = 0; j = 0; p = &a[NI - 1]; q = &equot[NI - 1]; for (i = M + 1; i < NI; i++) { if (*p == 0) { --p; } else { m16m (*p--, b, pprod); eaddm (pprod, equot); } j |= *q; eshdn6 (equot); } for (i = 0; i < NI; i++) b[i] = equot[i]; /* return flag for lost nonzero bits */ return ((int) j); } /* static void eshow(str, x) char *str; unsigned short *x; { int i; printf( "%s ", str ); for( i=0; i NBITS) { ecleazs (s); return; } #endif exp -= j; #ifndef USE_INFINITY if (exp >= 32767L) goto overf; #else if ((j > NBITS) && (exp < 32767L)) { ecleazs (s); return; } #endif if (exp < 0L) { if (exp > (long) (-NBITS - 1)) { j = (int) exp; i = eshift (s, j); if (i) lost = 1; } else { ecleazs (s); return; } } /* Round off, unless told not to by rcntrl. */ if (rcntrl == 0) goto mdfin; /* Set up rounding parameters if the control register changed. */ if (ldp->rndprc != ldp->rlast) { ecleaz (ldp->rbit); switch (ldp->rndprc) { default: case NBITS: ldp->rw = NI - 1; /* low guard word */ ldp->rmsk = 0xffff; ldp->rmbit = 0x8000; ldp->rebit = 1; ldp->re = ldp->rw - 1; break; case 113: ldp->rw = 10; ldp->rmsk = 0x7fff; ldp->rmbit = 0x4000; ldp->rebit = 0x8000; ldp->re = ldp->rw; break; case 64: ldp->rw = 7; ldp->rmsk = 0xffff; ldp->rmbit = 0x8000; ldp->rebit = 1; ldp->re = ldp->rw - 1; break; /* For DEC arithmetic */ case 56: ldp->rw = 6; ldp->rmsk = 0xff; ldp->rmbit = 0x80; ldp->rebit = 0x100; ldp->re = ldp->rw; break; case 53: ldp->rw = 6; ldp->rmsk = 0x7ff; ldp->rmbit = 0x0400; ldp->rebit = 0x800; ldp->re = ldp->rw; break; case 24: ldp->rw = 4; ldp->rmsk = 0xff; ldp->rmbit = 0x80; ldp->rebit = 0x100; ldp->re = ldp->rw; break; } ldp->rbit[ldp->re] = ldp->rebit; ldp->rlast = ldp->rndprc; } /* Shift down 1 temporarily if the data structure has an implied * most significant bit and the number is denormal. * For rndprc = 64 or NBITS, there is no implied bit. * But Intel long double denormals lose one bit of significance even so. */ #if IBMPC if ((exp <= 0) && (ldp->rndprc != NBITS)) #else if ((exp <= 0) && (ldp->rndprc != 64) && (ldp->rndprc != NBITS)) #endif { lost |= s[NI - 1] & 1; eshdn1 (s); } /* Clear out all bits below the rounding bit, * remembering in r if any were nonzero. */ r = s[ldp->rw] & ldp->rmsk; if (ldp->rndprc < NBITS) { i = ldp->rw + 1; while (i < NI) { if (s[i]) r |= 1; s[i] = 0; ++i; } } s[ldp->rw] &= ~ldp->rmsk; if ((r & ldp->rmbit) != 0) { if (r == ldp->rmbit) { if (lost == 0) { /* round to even */ if ((s[ldp->re] & ldp->rebit) == 0) goto mddone; } else { if (subflg != 0) goto mddone; } } eaddm (ldp->rbit, s); } mddone: #if IBMPC if ((exp <= 0) && (ldp->rndprc != NBITS)) #else if ((exp <= 0) && (ldp->rndprc != 64) && (ldp->rndprc != NBITS)) #endif { eshup1 (s); } if (s[2] != 0) { /* overflow on roundoff */ eshdn1 (s); exp += 1; } mdfin: s[NI - 1] = 0; if (exp >= 32767L) { #ifndef USE_INFINITY overf: #endif #ifdef USE_INFINITY s[1] = 32767; for (i = 2; i < NI - 1; i++) s[i] = 0; #else s[1] = 32766; s[2] = 0; for (i = M + 1; i < NI - 1; i++) s[i] = 0xffff; s[NI - 1] = 0; if ((ldp->rndprc < 64) || (ldp->rndprc == 113)) { s[ldp->rw] &= ~ldp->rmsk; if (ldp->rndprc == 24) { s[5] = 0; s[6] = 0; } } #endif return; } if (exp < 0) s[1] = 0; else s[1] = (unsigned short) exp; } /* ; Subtract external format numbers. ; ; unsigned short a[NE], b[NE], c[NE]; ; LDPARMS *ldp; ; esub( a, b, c, ldp ); c = b - a */ static void esub (const short unsigned int *a, const short unsigned int *b, short unsigned int *c, LDPARMS * ldp) { #ifdef NANS if (eisnan (a)) { emov (a, c); return; } if (eisnan (b)) { emov (b, c); return; } /* Infinity minus infinity is a NaN. * Test for subtracting infinities of the same sign. */ if (eisinf (a) && eisinf (b) && ((eisneg (a) ^ eisneg (b)) == 0)) { mtherr ("esub", DOMAIN); enan (c, NBITS); return; } #endif eadd1 (a, b, c, 1, ldp); } static void eadd1 (const short unsigned int *a, const short unsigned int *b, short unsigned int *c, int subflg, LDPARMS * ldp) { unsigned short ai[NI], bi[NI], ci[NI]; int i, lost, j, k; long lt, lta, ltb; #ifdef USE_INFINITY if (eisinf (a)) { emov (a, c); if (subflg) eneg (c); return; } if (eisinf (b)) { emov (b, c); return; } #endif emovi (a, ai); emovi (b, bi); if (subflg) ai[0] = ~ai[0]; /* compare exponents */ lta = ai[E]; ltb = bi[E]; lt = lta - ltb; if (lt > 0L) { /* put the larger number in bi */ emovz (bi, ci); emovz (ai, bi); emovz (ci, ai); ltb = bi[E]; lt = -lt; } lost = 0; if (lt != 0L) { if (lt < (long) (-NBITS - 1)) goto done; /* answer same as larger addend */ k = (int) lt; lost = eshift (ai, k); /* shift the smaller number down */ } else { /* exponents were the same, so must compare significands */ i = ecmpm (ai, bi); if (i == 0) { /* the numbers are identical in magnitude */ /* if different signs, result is zero */ if (ai[0] != bi[0]) { eclear (c); return; } /* if same sign, result is double */ /* double denomalized tiny number */ if ((bi[E] == 0) && ((bi[3] & 0x8000) == 0)) { eshup1 (bi); goto done; } /* add 1 to exponent unless both are zero! */ for (j = 1; j < NI - 1; j++) { if (bi[j] != 0) { /* This could overflow, but let emovo take care of that. */ ltb += 1; break; } } bi[E] = (unsigned short) ltb; goto done; } if (i > 0) { /* put the larger number in bi */ emovz (bi, ci); emovz (ai, bi); emovz (ci, ai); } } if (ai[0] == bi[0]) { eaddm (ai, bi); subflg = 0; } else { esubm (ai, bi); subflg = 1; } emdnorm (bi, lost, subflg, ltb, 64, ldp); done: emovo (bi, c, ldp); } /* ; Divide. ; ; unsigned short a[NE], b[NE], c[NE]; ; LDPARMS *ldp; ; ediv( a, b, c, ldp ); c = b / a */ static void ediv (const short unsigned int *a, const short unsigned int *b, short unsigned int *c, LDPARMS * ldp) { unsigned short ai[NI], bi[NI]; int i; long lt, lta, ltb; #ifdef NANS /* Return any NaN input. */ if (eisnan (a)) { emov (a, c); return; } if (eisnan (b)) { emov (b, c); return; } /* Zero over zero, or infinity over infinity, is a NaN. */ if (((ecmp (a, ezero) == 0) && (ecmp (b, ezero) == 0)) || (eisinf (a) && eisinf (b))) { mtherr ("ediv", DOMAIN); enan (c, NBITS); return; } #endif /* Infinity over anything else is infinity. */ #ifdef USE_INFINITY if (eisinf (b)) { if (eisneg (a) ^ eisneg (b)) *(c + (NE - 1)) = 0x8000; else *(c + (NE - 1)) = 0; einfin (c, ldp); return; } if (eisinf (a)) { eclear (c); return; } #endif emovi (a, ai); emovi (b, bi); lta = ai[E]; ltb = bi[E]; if (bi[E] == 0) { /* See if numerator is zero. */ for (i = 1; i < NI - 1; i++) { if (bi[i] != 0) { ltb -= enormlz (bi); goto dnzro1; } } eclear (c); return; } dnzro1: if (ai[E] == 0) { /* possible divide by zero */ for (i = 1; i < NI - 1; i++) { if (ai[i] != 0) { lta -= enormlz (ai); goto dnzro2; } } if (ai[0] == bi[0]) *(c + (NE - 1)) = 0; else *(c + (NE - 1)) = 0x8000; einfin (c, ldp); mtherr ("ediv", SING); return; } dnzro2: i = edivm (ai, bi, ldp); /* calculate exponent */ lt = ltb - lta + EXONE; emdnorm (bi, i, 0, lt, 64, ldp); /* set the sign */ if (ai[0] == bi[0]) bi[0] = 0; else bi[0] = 0Xffff; emovo (bi, c, ldp); } /* ; Multiply. ; ; unsigned short a[NE], b[NE], c[NE]; ; LDPARMS *ldp ; emul( a, b, c, ldp ); c = b * a */ static void emul (const short unsigned int *a, const short unsigned int *b, short unsigned int *c, LDPARMS * ldp) { unsigned short ai[NI], bi[NI]; int i, j; long lt, lta, ltb; #ifdef NANS /* NaN times anything is the same NaN. */ if (eisnan (a)) { emov (a, c); return; } if (eisnan (b)) { emov (b, c); return; } /* Zero times infinity is a NaN. */ if ((eisinf (a) && (ecmp (b, ezero) == 0)) || (eisinf (b) && (ecmp (a, ezero) == 0))) { mtherr ("emul", DOMAIN); enan (c, NBITS); return; } #endif /* Infinity times anything else is infinity. */ #ifdef USE_INFINITY if (eisinf (a) || eisinf (b)) { if (eisneg (a) ^ eisneg (b)) *(c + (NE - 1)) = 0x8000; else *(c + (NE - 1)) = 0; einfin (c, ldp); return; } #endif emovi (a, ai); emovi (b, bi); lta = ai[E]; ltb = bi[E]; if (ai[E] == 0) { for (i = 1; i < NI - 1; i++) { if (ai[i] != 0) { lta -= enormlz (ai); goto mnzer1; } } eclear (c); return; } mnzer1: if (bi[E] == 0) { for (i = 1; i < NI - 1; i++) { if (bi[i] != 0) { ltb -= enormlz (bi); goto mnzer2; } } eclear (c); return; } mnzer2: /* Multiply significands */ j = emulm (ai, bi, ldp); /* calculate exponent */ lt = lta + ltb - (EXONE - 1); emdnorm (bi, j, 0, lt, 64, ldp); /* calculate sign of product */ if (ai[0] == bi[0]) bi[0] = 0; else bi[0] = 0xffff; emovo (bi, c, ldp); } #if LDBL_MANT_DIG > 64 static void e113toe (short unsigned int *pe, short unsigned int *y, LDPARMS * ldp) { register unsigned short r; unsigned short *e, *p; unsigned short yy[NI]; int denorm, i; e = pe; denorm = 0; ecleaz (yy); #ifdef IBMPC e += 7; #endif r = *e; yy[0] = 0; if (r & 0x8000) yy[0] = 0xffff; r &= 0x7fff; #ifdef USE_INFINITY if (r == 0x7fff) { #ifdef NANS #ifdef IBMPC for (i = 0; i < 7; i++) { if (pe[i] != 0) { enan (y, NBITS); return; } } #else /* !IBMPC */ for (i = 1; i < 8; i++) { if (pe[i] != 0) { enan (y, NBITS); return; } } #endif /* !IBMPC */ #endif /* NANS */ eclear (y); einfin (y, ldp); if (*e & 0x8000) eneg (y); return; } #endif /* INFINITY */ yy[E] = r; p = &yy[M + 1]; #ifdef IBMPC for (i = 0; i < 7; i++) *p++ = *(--e); #else /* IBMPC */ ++e; for (i = 0; i < 7; i++) *p++ = *e++; #endif /* IBMPC */ /* If denormal, remove the implied bit; else shift down 1. */ if (r == 0) { yy[M] = 0; } else { yy[M] = 1; eshift (yy, -1); } emovo (yy, y, ldp); } /* move out internal format to ieee long double */ static void __attribute__ ((__unused__)) toe113 (short unsigned int *a, short unsigned int *b) { register unsigned short *p, *q; unsigned short i; #ifdef NANS if (eiisnan (a)) { enan (b, 113); return; } #endif p = a; #ifdef MIEEE q = b; #else q = b + 7; /* point to output exponent */ #endif /* If not denormal, delete the implied bit. */ if (a[E] != 0) { eshup1 (a); } /* combine sign and exponent */ i = *p++; #ifdef MIEEE if (i) *q++ = *p++ | 0x8000; else *q++ = *p++; #else if (i) *q-- = *p++ | 0x8000; else *q-- = *p++; #endif /* skip over guard word */ ++p; /* move the significand */ #ifdef MIEEE for (i = 0; i < 7; i++) *q++ = *p++; #else for (i = 0; i < 7; i++) *q-- = *p++; #endif } #endif /* LDBL_MANT_DIG > 64 */ #if LDBL_MANT_DIG == 64 static void e64toe (short unsigned int *pe, short unsigned int *y, LDPARMS * ldp) { unsigned short yy[NI]; unsigned short *p, *q, *e; int i; e = pe; p = yy; for (i = 0; i < NE - 5; i++) *p++ = 0; #ifdef IBMPC for (i = 0; i < 5; i++) *p++ = *e++; #endif #ifdef DEC for (i = 0; i < 5; i++) *p++ = *e++; #endif #ifdef MIEEE p = &yy[0] + (NE - 1); *p-- = *e++; ++e; /* MIEEE skips over 2nd short */ for (i = 0; i < 4; i++) *p-- = *e++; #endif #ifdef IBMPC /* For Intel long double, shift denormal significand up 1 -- but only if the top significand bit is zero. */ if ((yy[NE - 1] & 0x7fff) == 0 && (yy[NE - 2] & 0x8000) == 0) { unsigned short temp[NI + 1]; emovi (yy, temp); eshup1 (temp); emovo (temp, y, ldp); return; } #endif #ifdef USE_INFINITY /* Point to the exponent field. */ p = &yy[NE - 1]; if ((*p & 0x7fff) == 0x7fff) { #ifdef NANS #ifdef IBMPC for (i = 0; i < 4; i++) { if ((i != 3 && pe[i] != 0) /* Check for Intel long double infinity pattern. */ || (i == 3 && pe[i] != 0x8000)) { enan (y, NBITS); return; } } #endif #ifdef MIEEE for (i = 2; i <= 5; i++) { if (pe[i] != 0) { enan (y, NBITS); return; } } #endif #endif /* NANS */ eclear (y); einfin (y, ldp); if (*p & 0x8000) eneg (y); return; } #endif /* USE_INFINITY */ p = yy; q = y; for (i = 0; i < NE; i++) *q++ = *p++; } /* move out internal format to ieee long double */ static void __attribute__ ((__unused__)) toe64 (short unsigned int *a, short unsigned int *b) { register unsigned short *p, *q; unsigned short i; #ifdef NANS if (eiisnan (a)) { enan (b, 64); return; } #endif #ifdef IBMPC /* Shift Intel denormal significand down 1. */ if (a[E] == 0) eshdn1 (a); #endif p = a; #ifdef MIEEE q = b; #else q = b + 4; /* point to output exponent */ /* NOTE: Intel data type is 96 bits wide, clear the last word here. */ *(q + 1) = 0; #endif /* combine sign and exponent */ i = *p++; #ifdef MIEEE if (i) *q++ = *p++ | 0x8000; else *q++ = *p++; *q++ = 0; /* leave 2nd short blank */ #else if (i) *q-- = *p++ | 0x8000; else *q-- = *p++; #endif /* skip over guard word */ ++p; /* move the significand */ #ifdef MIEEE for (i = 0; i < 4; i++) *q++ = *p++; #else #ifdef USE_INFINITY #ifdef IBMPC if (eiisinf (a)) { /* Intel long double infinity. */ *q-- = 0x8000; *q-- = 0; *q-- = 0; *q = 0; return; } #endif /* IBMPC */ #endif /* USE_INFINITY */ for (i = 0; i < 4; i++) *q-- = *p++; #endif } #endif /* LDBL_MANT_DIG == 64 */ #if LDBL_MANT_DIG == 53 /* ; Convert IEEE double precision to e type ; double d; ; unsigned short x[N+2]; ; e53toe( &d, x ); */ static void e53toe (short unsigned int *pe, short unsigned int *y, LDPARMS * ldp) { #ifdef DEC dectoe (pe, y); /* see etodec.c */ #else register unsigned short r; register unsigned short *p, *e; unsigned short yy[NI]; int denorm, k; e = pe; denorm = 0; /* flag if denormalized number */ ecleaz (yy); #ifdef IBMPC e += 3; #endif #ifdef DEC e += 3; #endif r = *e; yy[0] = 0; if (r & 0x8000) yy[0] = 0xffff; yy[M] = (r & 0x0f) | 0x10; r &= ~0x800f; /* strip sign and 4 significand bits */ #ifdef USE_INFINITY if (r == 0x7ff0) { #ifdef NANS #ifdef IBMPC if (((pe[3] & 0xf) != 0) || (pe[2] != 0) || (pe[1] != 0) || (pe[0] != 0)) { enan (y, NBITS); return; } #else /* !IBMPC */ if (((pe[0] & 0xf) != 0) || (pe[1] != 0) || (pe[2] != 0) || (pe[3] != 0)) { enan (y, NBITS); return; } #endif /* !IBMPC */ #endif /* NANS */ eclear (y); einfin (y, ldp); if (yy[0]) eneg (y); return; } #endif r >>= 4; /* If zero exponent, then the significand is denormalized. * So, take back the understood high significand bit. */ if (r == 0) { denorm = 1; yy[M] &= ~0x10; } r += EXONE - 01777; yy[E] = r; p = &yy[M + 1]; #ifdef IBMPC *p++ = *(--e); *p++ = *(--e); *p++ = *(--e); #else /* !IBMPC */ ++e; *p++ = *e++; *p++ = *e++; *p++ = *e++; #endif /* !IBMPC */ (void) eshift (yy, -5); if (denorm) { /* if zero exponent, then normalize the significand */ if ((k = enormlz (yy)) > NBITS) ecleazs (yy); else yy[E] -= (unsigned short) (k - 1); } emovo (yy, y, ldp); #endif /* !DEC */ } /* ; e type to IEEE double precision ; double d; ; unsigned short x[NE]; ; etoe53( x, &d ); */ #ifdef DEC static void etoe53 (x, e) unsigned short *x, *e; { etodec (x, e); /* see etodec.c */ } static void __attribute__ ((__unused__)) toe53 (x, y) unsigned short *x, *y; { todec (x, y); } #else static void __attribute__ ((__unused__)) toe53 (short unsigned int *x, short unsigned int *y) { unsigned short i; unsigned short *p; #ifdef NANS if (eiisnan (x)) { enan (y, 53); return; } #endif p = &x[0]; #ifdef IBMPC y += 3; #endif #ifdef DEC y += 3; #endif *y = 0; /* output high order */ if (*p++) *y = 0x8000; /* output sign bit */ i = *p++; if (i >= (unsigned int) 2047) { /* Saturate at largest number less than infinity. */ #ifdef USE_INFINITY *y |= 0x7ff0; #ifdef IBMPC *(--y) = 0; *(--y) = 0; *(--y) = 0; #else /* !IBMPC */ ++y; *y++ = 0; *y++ = 0; *y++ = 0; #endif /* IBMPC */ #else /* !USE_INFINITY */ *y |= (unsigned short) 0x7fef; #ifdef IBMPC *(--y) = 0xffff; *(--y) = 0xffff; *(--y) = 0xffff; #else /* !IBMPC */ ++y; *y++ = 0xffff; *y++ = 0xffff; *y++ = 0xffff; #endif #endif /* !USE_INFINITY */ return; } if (i == 0) { (void) eshift (x, 4); } else { i <<= 4; (void) eshift (x, 5); } i |= *p++ & (unsigned short) 0x0f; /* *p = xi[M] */ *y |= (unsigned short) i; /* high order output already has sign bit set */ #ifdef IBMPC *(--y) = *p++; *(--y) = *p++; *(--y) = *p; #else /* !IBMPC */ ++y; *y++ = *p++; *y++ = *p++; *y++ = *p++; #endif /* !IBMPC */ } #endif /* not DEC */ #endif /* LDBL_MANT_DIG == 53 */ #if LDBL_MANT_DIG == 24 /* ; Convert IEEE single precision to e type ; float d; ; unsigned short x[N+2]; ; dtox( &d, x ); */ void e24toe (short unsigned int *pe, short unsigned int *y, LDPARMS * ldp) { register unsigned short r; register unsigned short *p, *e; unsigned short yy[NI]; int denorm, k; e = pe; denorm = 0; /* flag if denormalized number */ ecleaz (yy); #ifdef IBMPC e += 1; #endif #ifdef DEC e += 1; #endif r = *e; yy[0] = 0; if (r & 0x8000) yy[0] = 0xffff; yy[M] = (r & 0x7f) | 0200; r &= ~0x807f; /* strip sign and 7 significand bits */ #ifdef USE_INFINITY if (r == 0x7f80) { #ifdef NANS #ifdef MIEEE if (((pe[0] & 0x7f) != 0) || (pe[1] != 0)) { enan (y, NBITS); return; } #else /* !MIEEE */ if (((pe[1] & 0x7f) != 0) || (pe[0] != 0)) { enan (y, NBITS); return; } #endif /* !MIEEE */ #endif /* NANS */ eclear (y); einfin (y, ldp); if (yy[0]) eneg (y); return; } #endif r >>= 7; /* If zero exponent, then the significand is denormalized. * So, take back the understood high significand bit. */ if (r == 0) { denorm = 1; yy[M] &= ~0200; } r += EXONE - 0177; yy[E] = r; p = &yy[M + 1]; #ifdef IBMPC *p++ = *(--e); #endif #ifdef DEC *p++ = *(--e); #endif #ifdef MIEEE ++e; *p++ = *e++; #endif (void) eshift (yy, -8); if (denorm) { /* if zero exponent, then normalize the significand */ if ((k = enormlz (yy)) > NBITS) ecleazs (yy); else yy[E] -= (unsigned short) (k - 1); } emovo (yy, y, ldp); } static void __attribute__ ((__unused__)) toe24 (short unsigned int *x, short unsigned int *y) { unsigned short i; unsigned short *p; #ifdef NANS if (eiisnan (x)) { enan (y, 24); return; } #endif p = &x[0]; #ifdef IBMPC y += 1; #endif #ifdef DEC y += 1; #endif *y = 0; /* output high order */ if (*p++) *y = 0x8000; /* output sign bit */ i = *p++; if (i >= 255) { /* Saturate at largest number less than infinity. */ #ifdef USE_INFINITY *y |= (unsigned short) 0x7f80; #ifdef IBMPC *(--y) = 0; #endif #ifdef DEC *(--y) = 0; #endif #ifdef MIEEE ++y; *y = 0; #endif #else /* !USE_INFINITY */ *y |= (unsigned short) 0x7f7f; #ifdef IBMPC *(--y) = 0xffff; #endif #ifdef DEC *(--y) = 0xffff; #endif #ifdef MIEEE ++y; *y = 0xffff; #endif #endif /* !USE_INFINITY */ return; } if (i == 0) { (void) eshift (x, 7); } else { i <<= 7; (void) eshift (x, 8); } i |= *p++ & (unsigned short) 0x7f; /* *p = xi[M] */ *y |= i; /* high order output already has sign bit set */ #ifdef IBMPC *(--y) = *p; #endif #ifdef DEC *(--y) = *p; #endif #ifdef MIEEE ++y; *y = *p; #endif } #endif /* LDBL_MANT_DIG == 24 */ /* Compare two e type numbers. * * unsigned short a[NE], b[NE]; * ecmp( a, b ); * * returns +1 if a > b * 0 if a == b * -1 if a < b * -2 if either a or b is a NaN. */ static int ecmp (const short unsigned int *a, const short unsigned int *b) { unsigned short ai[NI], bi[NI]; register unsigned short *p, *q; register int i; int msign; #ifdef NANS if (eisnan (a) || eisnan (b)) return (-2); #endif emovi (a, ai); p = ai; emovi (b, bi); q = bi; if (*p != *q) { /* the signs are different */ /* -0 equals + 0 */ for (i = 1; i < NI - 1; i++) { if (ai[i] != 0) goto nzro; if (bi[i] != 0) goto nzro; } return (0); nzro: if (*p == 0) return (1); else return (-1); } /* both are the same sign */ if (*p == 0) msign = 1; else msign = -1; i = NI - 1; do { if (*p++ != *q++) { goto diff; } } while (--i > 0); return (0); /* equality */ diff: if (*(--p) > *(--q)) return (msign); /* p is bigger */ else return (-msign); /* p is littler */ } /* ; Shift significand ; ; Shifts significand area up or down by the number of bits ; given by the variable sc. */ static int eshift (short unsigned int *x, int sc) { unsigned short lost; unsigned short *p; if (sc == 0) return (0); lost = 0; p = x + NI - 1; if (sc < 0) { sc = -sc; while (sc >= 16) { lost |= *p; /* remember lost bits */ eshdn6 (x); sc -= 16; } while (sc >= 8) { lost |= *p & 0xff; eshdn8 (x); sc -= 8; } while (sc > 0) { lost |= *p & 1; eshdn1 (x); sc -= 1; } } else { while (sc >= 16) { eshup6 (x); sc -= 16; } while (sc >= 8) { eshup8 (x); sc -= 8; } while (sc > 0) { eshup1 (x); sc -= 1; } } if (lost) lost = 1; return ((int) lost); } /* ; normalize ; ; Shift normalizes the significand area pointed to by argument ; shift count (up = positive) is returned. */ static int enormlz (short unsigned int *x) { register unsigned short *p; int sc; sc = 0; p = &x[M]; if (*p != 0) goto normdn; ++p; if (*p & 0x8000) return (0); /* already normalized */ while (*p == 0) { eshup6 (x); sc += 16; /* With guard word, there are NBITS+16 bits available. * return true if all are zero. */ if (sc > NBITS) return (sc); } /* see if high byte is zero */ while ((*p & 0xff00) == 0) { eshup8 (x); sc += 8; } /* now shift 1 bit at a time */ while ((*p & 0x8000) == 0) { eshup1 (x); sc += 1; if (sc > (NBITS + 16)) { mtherr ("enormlz", UNDERFLOW); return (sc); } } return (sc); /* Normalize by shifting down out of the high guard word of the significand */ normdn: if (*p & 0xff00) { eshdn8 (x); sc -= 8; } while (*p != 0) { eshdn1 (x); sc -= 1; if (sc < -NBITS) { mtherr ("enormlz", OVERFLOW); return (sc); } } return (sc); } /* Convert e type number to decimal format ASCII string. * The constants are for 64 bit precision. */ #define NTEN 12 #define MAXP 4096 #if NE == 10 static const unsigned short etens[NTEN + 1][NE] = { {0x6576, 0x4a92, 0x804a, 0x153f, 0xc94c, 0x979a, 0x8a20, 0x5202, 0xc460, 0x7525,}, /* 10**4096 */ {0x6a32, 0xce52, 0x329a, 0x28ce, 0xa74d, 0x5de4, 0xc53d, 0x3b5d, 0x9e8b, 0x5a92,}, /* 10**2048 */ {0x526c, 0x50ce, 0xf18b, 0x3d28, 0x650d, 0x0c17, 0x8175, 0x7586, 0xc976, 0x4d48,}, {0x9c66, 0x58f8, 0xbc50, 0x5c54, 0xcc65, 0x91c6, 0xa60e, 0xa0ae, 0xe319, 0x46a3,}, {0x851e, 0xeab7, 0x98fe, 0x901b, 0xddbb, 0xde8d, 0x9df9, 0xebfb, 0xaa7e, 0x4351,}, {0x0235, 0x0137, 0x36b1, 0x336c, 0xc66f, 0x8cdf, 0x80e9, 0x47c9, 0x93ba, 0x41a8,}, {0x50f8, 0x25fb, 0xc76b, 0x6b71, 0x3cbf, 0xa6d5, 0xffcf, 0x1f49, 0xc278, 0x40d3,}, {0x0000, 0x0000, 0x0000, 0x0000, 0xf020, 0xb59d, 0x2b70, 0xada8, 0x9dc5, 0x4069,}, {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0400, 0xc9bf, 0x8e1b, 0x4034,}, {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2000, 0xbebc, 0x4019,}, {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9c40, 0x400c,}, {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc800, 0x4005,}, {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa000, 0x4002,}, /* 10**1 */ }; static const unsigned short emtens[NTEN + 1][NE] = { {0x2030, 0xcffc, 0xa1c3, 0x8123, 0x2de3, 0x9fde, 0xd2ce, 0x04c8, 0xa6dd, 0x0ad8,}, /* 10**-4096 */ {0x8264, 0xd2cb, 0xf2ea, 0x12d4, 0x4925, 0x2de4, 0x3436, 0x534f, 0xceae, 0x256b,}, /* 10**-2048 */ {0xf53f, 0xf698, 0x6bd3, 0x0158, 0x87a6, 0xc0bd, 0xda57, 0x82a5, 0xa2a6, 0x32b5,}, {0xe731, 0x04d4, 0xe3f2, 0xd332, 0x7132, 0xd21c, 0xdb23, 0xee32, 0x9049, 0x395a,}, {0xa23e, 0x5308, 0xfefb, 0x1155, 0xfa91, 0x1939, 0x637a, 0x4325, 0xc031, 0x3cac,}, {0xe26d, 0xdbde, 0xd05d, 0xb3f6, 0xac7c, 0xe4a0, 0x64bc, 0x467c, 0xddd0, 0x3e55,}, {0x2a20, 0x6224, 0x47b3, 0x98d7, 0x3f23, 0xe9a5, 0xa539, 0xea27, 0xa87f, 0x3f2a,}, {0x0b5b, 0x4af2, 0xa581, 0x18ed, 0x67de, 0x94ba, 0x4539, 0x1ead, 0xcfb1, 0x3f94,}, {0xbf71, 0xa9b3, 0x7989, 0xbe68, 0x4c2e, 0xe15b, 0xc44d, 0x94be, 0xe695, 0x3fc9,}, {0x3d4d, 0x7c3d, 0x36ba, 0x0d2b, 0xfdc2, 0xcefc, 0x8461, 0x7711, 0xabcc, 0x3fe4,}, {0xc155, 0xa4a8, 0x404e, 0x6113, 0xd3c3, 0x652b, 0xe219, 0x1758, 0xd1b7, 0x3ff1,}, {0xd70a, 0x70a3, 0x0a3d, 0xa3d7, 0x3d70, 0xd70a, 0x70a3, 0x0a3d, 0xa3d7, 0x3ff8,}, {0xcccd, 0xcccc, 0xcccc, 0xcccc, 0xcccc, 0xcccc, 0xcccc, 0xcccc, 0xcccc, 0x3ffb,}, /* 10**-1 */ }; #else static const unsigned short etens[NTEN + 1][NE] = { {0xc94c, 0x979a, 0x8a20, 0x5202, 0xc460, 0x7525,}, /* 10**4096 */ {0xa74d, 0x5de4, 0xc53d, 0x3b5d, 0x9e8b, 0x5a92,}, /* 10**2048 */ {0x650d, 0x0c17, 0x8175, 0x7586, 0xc976, 0x4d48,}, {0xcc65, 0x91c6, 0xa60e, 0xa0ae, 0xe319, 0x46a3,}, {0xddbc, 0xde8d, 0x9df9, 0xebfb, 0xaa7e, 0x4351,}, {0xc66f, 0x8cdf, 0x80e9, 0x47c9, 0x93ba, 0x41a8,}, {0x3cbf, 0xa6d5, 0xffcf, 0x1f49, 0xc278, 0x40d3,}, {0xf020, 0xb59d, 0x2b70, 0xada8, 0x9dc5, 0x4069,}, {0x0000, 0x0000, 0x0400, 0xc9bf, 0x8e1b, 0x4034,}, {0x0000, 0x0000, 0x0000, 0x2000, 0xbebc, 0x4019,}, {0x0000, 0x0000, 0x0000, 0x0000, 0x9c40, 0x400c,}, {0x0000, 0x0000, 0x0000, 0x0000, 0xc800, 0x4005,}, {0x0000, 0x0000, 0x0000, 0x0000, 0xa000, 0x4002,}, /* 10**1 */ }; static const unsigned short emtens[NTEN + 1][NE] = { {0x2de4, 0x9fde, 0xd2ce, 0x04c8, 0xa6dd, 0x0ad8,}, /* 10**-4096 */ {0x4925, 0x2de4, 0x3436, 0x534f, 0xceae, 0x256b,}, /* 10**-2048 */ {0x87a6, 0xc0bd, 0xda57, 0x82a5, 0xa2a6, 0x32b5,}, {0x7133, 0xd21c, 0xdb23, 0xee32, 0x9049, 0x395a,}, {0xfa91, 0x1939, 0x637a, 0x4325, 0xc031, 0x3cac,}, {0xac7d, 0xe4a0, 0x64bc, 0x467c, 0xddd0, 0x3e55,}, {0x3f24, 0xe9a5, 0xa539, 0xea27, 0xa87f, 0x3f2a,}, {0x67de, 0x94ba, 0x4539, 0x1ead, 0xcfb1, 0x3f94,}, {0x4c2f, 0xe15b, 0xc44d, 0x94be, 0xe695, 0x3fc9,}, {0xfdc2, 0xcefc, 0x8461, 0x7711, 0xabcc, 0x3fe4,}, {0xd3c3, 0x652b, 0xe219, 0x1758, 0xd1b7, 0x3ff1,}, {0x3d71, 0xd70a, 0x70a3, 0x0a3d, 0xa3d7, 0x3ff8,}, {0xcccd, 0xcccc, 0xcccc, 0xcccc, 0xcccc, 0x3ffb,}, /* 10**-1 */ }; #endif /* ASCII string outputs for unix */ #if 0 void _IO_ldtostr (x, string, ndigs, flags, fmt) long double *x; char *string; int ndigs; int flags; char fmt; { unsigned short w[NI]; char *t, *u; LDPARMS rnd; LDPARMS *ldp = &rnd; rnd.rlast = -1; rnd.rndprc = NBITS; if (sizeof (long double) == 16) e113toe ((unsigned short *) x, w, ldp); else e64toe ((unsigned short *) x, w, ldp); etoasc (w, string, ndigs, -1, ldp); if (ndigs == 0 && flags == 0) { /* Delete the decimal point unless alternate format. */ t = string; while (*t != '.') ++t; u = t + 1; while (*t != '\0') *t++ = *u++; } if (*string == ' ') { t = string; u = t + 1; while (*t != '\0') *t++ = *u++; } if (fmt == 'E') { t = string; while (*t != 'e') ++t; *t = 'E'; } } #endif /* This routine will not return more than NDEC+1 digits. */ char * __ldtoa (long double d, int mode, int ndigits, int *decpt, int *sign, char **rve) { unsigned short e[NI]; char *s, *p; int i, k; int orig_ndigits; LDPARMS rnd; LDPARMS *ldp = &rnd; char *outstr; char outbuf[NDEC + MAX_EXP_DIGITS + 10]; union uconv du; du.d = d; orig_ndigits = ndigits; rnd.rlast = -1; rnd.rndprc = NBITS; #if LDBL_MANT_DIG == 24 e24toe (&du.pe, e, ldp); #elif LDBL_MANT_DIG == 53 e53toe (&du.pe, e, ldp); #elif LDBL_MANT_DIG == 64 e64toe (&du.pe, e, ldp); #else e113toe (&du.pe, e, ldp); #endif if (eisneg (e)) *sign = 1; else *sign = 0; /* Mode 3 is "f" format. */ if (mode != 3) ndigits -= 1; /* Mode 0 is for %.999 format, which is supposed to give a minimum length string that will convert back to the same binary value. For now, just ask for 20 digits which is enough but sometimes too many. */ if (mode == 0) ndigits = 20; /* This sanity limit must agree with the corresponding one in etoasc, to keep straight the returned value of outexpon. */ if (ndigits > NDEC) ndigits = NDEC; etoasc (e, outbuf, ndigits, mode, ldp); s = outbuf; if (eisinf (e) || eisnan (e)) { *decpt = 9999; goto stripspaces; } *decpt = ldp->outexpon + 1; /* Transform the string returned by etoasc into what the caller wants. */ /* Look for decimal point and delete it from the string. */ s = outbuf; while (*s != '\0') { if (*s == '.') goto yesdecpt; ++s; } goto nodecpt; yesdecpt: /* Delete the decimal point. */ while (*s != '\0') { *s = *(s + 1); ++s; } nodecpt: /* Back up over the exponent field. */ while (*s != 'E' && s > outbuf) --s; *s = '\0'; stripspaces: /* Strip leading spaces and sign. */ p = outbuf; while (*p == ' ' || *p == '-') ++p; /* Find new end of string. */ s = outbuf; while ((*s++ = *p++) != '\0') ; --s; /* Strip trailing zeros. */ if (mode == 2) k = 1; else if (ndigits > ldp->outexpon) k = ndigits; else k = ldp->outexpon; while (*(s - 1) == '0' && ((s - outbuf) > k)) *(--s) = '\0'; /* In f format, flush small off-scale values to zero. Rounding has been taken care of by etoasc. */ if (mode == 3 && ((ndigits + ldp->outexpon) < 0)) { s = outbuf; *s = '\0'; *decpt = 0; } /* we want to have enough space to hold the formatted result */ if (mode == 3) /* f format, account for sign + dec digits + decpt + frac */ i = *decpt + orig_ndigits + 3; else /* account for sign + max precision digs + E + exp sign + exponent */ i = orig_ndigits + MAX_EXP_DIGITS + 4; outstr = __alloc_dtoa_result(i); if (!outstr) return NULL; /* Copy from internal temporary buffer to permanent buffer. */ strcpy (outstr, outbuf); if (rve) *rve = outstr + (s - outbuf); return outstr; } /* Routine used to tell if long double is NaN or Infinity or regular number. Returns: 0 = regular number 1 = Nan 2 = Infinity */ int _ldcheck (long double *d) { unsigned short e[NI]; LDPARMS rnd; LDPARMS *ldp = &rnd; union uconv du; rnd.rlast = -1; rnd.rndprc = NBITS; du.d = *d; #if LDBL_MANT_DIG == 24 e24toe (&du.pe, e, ldp); #elif LDBL_MANT_DIG == 53 e53toe (&du.pe, e, ldp); #elif LDBL_MANT_DIG == 64 e64toe (&du.pe, e, ldp); #else e113toe (&du.pe, e, ldp); #endif if ((e[NE - 1] & 0x7fff) == 0x7fff) { #ifdef NANS if (eisnan (e)) return (1); #endif return (2); } else return (0); } /* _ldcheck */ static void etoasc (short unsigned int *x, char *string, int ndigits, int outformat, LDPARMS * ldp) { long digit; unsigned short y[NI], t[NI], u[NI], w[NI]; const unsigned short *p, *r, *ten; unsigned short sign; int i, j, k, expon, rndsav, ndigs; char *s, *ss; unsigned short m; unsigned short *equot = ldp->equot; ndigs = ndigits; rndsav = ldp->rndprc; #ifdef NANS if (eisnan (x)) { sprintf (string, " NaN "); expon = 9999; goto bxit; } #endif ldp->rndprc = NBITS; /* set to full precision */ emov (x, y); /* retain external format */ if (y[NE - 1] & 0x8000) { sign = 0xffff; y[NE - 1] &= 0x7fff; } else { sign = 0; } expon = 0; ten = &etens[NTEN][0]; emov (eone, t); /* Test for zero exponent */ if (y[NE - 1] == 0) { for (k = 0; k < NE - 1; k++) { if (y[k] != 0) goto tnzro; /* denormalized number */ } goto isone; /* legal all zeros */ } tnzro: /* Test for infinity. */ if (y[NE - 1] == 0x7fff) { if (sign) sprintf (string, " -Infinity "); else sprintf (string, " Infinity "); expon = 9999; goto bxit; } /* Test for exponent nonzero but significand denormalized. * This is an error condition. */ if ((y[NE - 1] != 0) && ((y[NE - 2] & 0x8000) == 0)) { mtherr ("etoasc", DOMAIN); sprintf (string, "NaN"); expon = 9999; goto bxit; } /* Compare to 1.0 */ i = ecmp (eone, y); if (i == 0) goto isone; if (i < 0) { /* Number is greater than 1 */ /* Convert significand to an integer and strip trailing decimal zeros. */ emov (y, u); u[NE - 1] = EXONE + NBITS - 1; p = &etens[NTEN - 4][0]; m = 16; do { ediv (p, u, t, ldp); efloor (t, w, ldp); for (j = 0; j < NE - 1; j++) { if (t[j] != w[j]) goto noint; } emov (t, u); expon += (int) m; noint: p += NE; m >>= 1; } while (m != 0); /* Rescale from integer significand */ u[NE - 1] += y[NE - 1] - (unsigned int) (EXONE + NBITS - 1); emov (u, y); /* Find power of 10 */ emov (eone, t); m = MAXP; p = &etens[0][0]; while (ecmp (ten, u) <= 0) { if (ecmp (p, u) <= 0) { ediv (p, u, u, ldp); emul (p, t, t, ldp); expon += (int) m; } m >>= 1; if (m == 0) break; p += NE; } } else { /* Number is less than 1.0 */ /* Pad significand with trailing decimal zeros. */ if (y[NE - 1] == 0) { while ((y[NE - 2] & 0x8000) == 0) { emul (ten, y, y, ldp); expon -= 1; } } else { emovi (y, w); for (i = 0; i < NDEC + 1; i++) { if ((w[NI - 1] & 0x7) != 0) break; /* multiply by 10 */ emovz (w, u); eshdn1 (u); eshdn1 (u); eaddm (w, u); u[1] += 3; while (u[2] != 0) { eshdn1 (u); u[1] += 1; } if (u[NI - 1] != 0) break; if (eone[NE - 1] <= u[1]) break; emovz (u, w); expon -= 1; } emovo (w, y, ldp); } k = -MAXP; p = &emtens[0][0]; r = &etens[0][0]; emov (y, w); emov (eone, t); while (ecmp (eone, w) > 0) { if (ecmp (p, w) >= 0) { emul (r, w, w, ldp); emul (r, t, t, ldp); expon += k; } k /= 2; if (k == 0) break; p += NE; r += NE; } ediv (t, eone, t, ldp); } isone: /* Find the first (leading) digit. */ emovi (t, w); emovz (w, t); emovi (y, w); emovz (w, y); eiremain (t, y, ldp); digit = equot[NI - 1]; while ((digit == 0) && (ecmp (y, ezero) != 0)) { eshup1 (y); emovz (y, u); eshup1 (u); eshup1 (u); eaddm (u, y); eiremain (t, y, ldp); digit = equot[NI - 1]; expon -= 1; } s = string; if (sign) *s++ = '-'; else *s++ = ' '; /* Examine number of digits requested by caller. */ if (outformat == 3) ndigs += expon; /* else if( ndigs < 0 ) ndigs = 0; */ if (ndigs > NDEC) ndigs = NDEC; if (digit == 10) { *s++ = '1'; *s++ = '.'; if (ndigs > 0) { *s++ = '0'; ndigs -= 1; } expon += 1; if (ndigs < 0) { ss = s; goto doexp; } } else { *s++ = (char) digit + '0'; *s++ = '.'; } /* Generate digits after the decimal point. */ for (k = 0; k <= ndigs; k++) { /* multiply current number by 10, without normalizing */ eshup1 (y); emovz (y, u); eshup1 (u); eshup1 (u); eaddm (u, y); eiremain (t, y, ldp); *s++ = (char) equot[NI - 1] + '0'; } digit = equot[NI - 1]; --s; ss = s; /* round off the ASCII string */ if (digit > 4) { /* Test for critical rounding case in ASCII output. */ if (digit == 5) { emovo (y, t, ldp); if (ecmp (t, ezero) != 0) goto roun; /* round to nearest */ if (ndigs < 0 || (*(s - 1 - (*(s - 1) == '.')) & 1) == 0) goto doexp; /* round to even */ } /* Round up and propagate carry-outs */ roun: --s; k = *s & 0x7f; /* Carry out to most significant digit? */ if (ndigs < 0) { /* This will print like "1E-6". */ *s = '1'; expon += 1; goto doexp; } else if (k == '.') { --s; k = *s; k += 1; *s = (char) k; /* Most significant digit carries to 10? */ if (k > '9') { expon += 1; *s = '1'; } goto doexp; } /* Round up and carry out from less significant digits */ k += 1; *s = (char) k; if (k > '9') { *s = '0'; goto roun; } } doexp: #ifdef __GO32__ if (expon >= 0) sprintf (ss, "e+%02d", expon); else sprintf (ss, "e-%02d", -expon); #else sprintf (ss, "E%d", expon); #endif bxit: ldp->rndprc = rndsav; ldp->outexpon = expon; } #if 0 /* Broken, unusable implementation of strtold */ /* ; ASCTOQ ; ASCTOQ.MAC LATEST REV: 11 JAN 84 ; SLM, 3 JAN 78 ; ; Convert ASCII string to quadruple precision floating point ; ; Numeric input is free field decimal number ; with max of 15 digits with or without ; decimal point entered as ASCII from teletype. ; Entering E after the number followed by a second ; number causes the second number to be interpreted ; as a power of 10 to be multiplied by the first number ; (i.e., "scientific" notation). ; ; Usage: ; asctoq( string, q ); */ long double strtold (char *s, char **se) { union uconv x; LDPARMS rnd; LDPARMS *ldp = &rnd; int lenldstr; rnd.rlast = -1; rnd.rndprc = NBITS; lenldstr = asctoeg (s, &x.pe, LDBL_MANT_DIG, ldp); if (se) *se = s + lenldstr; return x.d; } #define REASONABLE_LEN 200 static int asctoeg (char *ss, short unsigned int *y, int oprec, LDPARMS * ldp) { unsigned short yy[NI], xt[NI], tt[NI]; int esign, decflg, sgnflg, nexp, exp, prec, lost; int k, trail, c, rndsav; long lexp; unsigned short nsign; const unsigned short *p; char *sp, *s, *lstr; int lenldstr; int mflag = 0; char tmpstr[REASONABLE_LEN]; /* Copy the input string. */ c = strlen (ss) + 2; if (c <= REASONABLE_LEN) lstr = tmpstr; else { lstr = (char *) calloc (c, 1); mflag = 1; } s = ss; lenldstr = 0; while (*s == ' ') /* skip leading spaces */ { ++s; ++lenldstr; } sp = lstr; for (k = 0; k < c; k++) { if ((*sp++ = *s++) == '\0') break; } *sp = '\0'; s = lstr; rndsav = ldp->rndprc; ldp->rndprc = NBITS; /* Set to full precision */ lost = 0; nsign = 0; decflg = 0; sgnflg = 0; nexp = 0; exp = 0; prec = 0; ecleaz (yy); trail = 0; nxtcom: k = *s - '0'; if ((k >= 0) && (k <= 9)) { /* Ignore leading zeros */ if ((prec == 0) && (decflg == 0) && (k == 0)) goto donchr; /* Identify and strip trailing zeros after the decimal point. */ if ((trail == 0) && (decflg != 0)) { sp = s; while ((*sp >= '0') && (*sp <= '9')) ++sp; /* Check for syntax error */ c = *sp & 0x7f; if ((c != 'e') && (c != 'E') && (c != '\0') && (c != '\n') && (c != '\r') && (c != ' ') && (c != ',')) goto error; --sp; while (*sp == '0') *sp-- = 'z'; trail = 1; if (*s == 'z') goto donchr; } /* If enough digits were given to more than fill up the yy register, * continuing until overflow into the high guard word yy[2] * guarantees that there will be a roundoff bit at the top * of the low guard word after normalization. */ if (yy[2] == 0) { if (decflg) nexp += 1; /* count digits after decimal point */ eshup1 (yy); /* multiply current number by 10 */ emovz (yy, xt); eshup1 (xt); eshup1 (xt); eaddm (xt, yy); ecleaz (xt); xt[NI - 2] = (unsigned short) k; eaddm (xt, yy); } else { /* Mark any lost non-zero digit. */ lost |= k; /* Count lost digits before the decimal point. */ if (decflg == 0) nexp -= 1; } prec += 1; goto donchr; } switch (*s) { case 'z': break; case 'E': case 'e': goto expnt; case '.': /* decimal point */ if (decflg) goto error; ++decflg; break; case '-': nsign = 0xffff; if (sgnflg) goto error; ++sgnflg; break; case '+': if (sgnflg) goto error; ++sgnflg; break; case ',': case ' ': case '\0': case '\n': case '\r': goto daldone; case 'i': case 'I': goto infinite; default: error: #ifdef NANS enan (yy, NI * 16); #else mtherr ("asctoe", DOMAIN); ecleaz (yy); #endif goto aexit; } donchr: ++s; goto nxtcom; /* Exponent interpretation */ expnt: esign = 1; exp = 0; ++s; /* check for + or - */ if (*s == '-') { esign = -1; ++s; } if (*s == '+') ++s; while ((*s >= '0') && (*s <= '9')) { exp *= 10; exp += *s++ - '0'; if (exp > 4977) { if (esign < 0) goto zero; else goto infinite; } } if (esign < 0) exp = -exp; if (exp > 4932) { infinite: ecleaz (yy); yy[E] = 0x7fff; /* infinity */ goto aexit; } if (exp < -4977) { zero: ecleaz (yy); goto aexit; } daldone: nexp = exp - nexp; /* Pad trailing zeros to minimize power of 10, per IEEE spec. */ while ((nexp > 0) && (yy[2] == 0)) { emovz (yy, xt); eshup1 (xt); eshup1 (xt); eaddm (yy, xt); eshup1 (xt); if (xt[2] != 0) break; nexp -= 1; emovz (xt, yy); } if ((k = enormlz (yy)) > NBITS) { ecleaz (yy); goto aexit; } lexp = (EXONE - 1 + NBITS) - k; emdnorm (yy, lost, 0, lexp, 64, ldp); /* convert to external format */ /* Multiply by 10**nexp. If precision is 64 bits, * the maximum relative error incurred in forming 10**n * for 0 <= n <= 324 is 8.2e-20, at 10**180. * For 0 <= n <= 999, the peak relative error is 1.4e-19 at 10**947. * For 0 >= n >= -999, it is -1.55e-19 at 10**-435. */ lexp = yy[E]; if (nexp == 0) { k = 0; goto expdon; } esign = 1; if (nexp < 0) { nexp = -nexp; esign = -1; if (nexp > 4096) { /* Punt. Can't handle this without 2 divides. */ emovi (etens[0], tt); lexp -= tt[E]; k = edivm (tt, yy, ldp); lexp += EXONE; nexp -= 4096; } } p = &etens[NTEN][0]; emov (eone, xt); exp = 1; do { if (exp & nexp) emul (p, xt, xt, ldp); p -= NE; exp = exp + exp; } while (exp <= MAXP); emovi (xt, tt); if (esign < 0) { lexp -= tt[E]; k = edivm (tt, yy, ldp); lexp += EXONE; } else { lexp += tt[E]; k = emulm (tt, yy, ldp); lexp -= EXONE - 1; } expdon: /* Round and convert directly to the destination type */ if (oprec == 53) lexp -= EXONE - 0x3ff; else if (oprec == 24) lexp -= EXONE - 0177; #ifdef DEC else if (oprec == 56) lexp -= EXONE - 0201; #endif ldp->rndprc = oprec; emdnorm (yy, k, 0, lexp, 64, ldp); aexit: ldp->rndprc = rndsav; yy[0] = nsign; switch (oprec) { #ifdef DEC case 56: todec (yy, y); /* see etodec.c */ break; #endif #if LDBL_MANT_DIG == 53 case 53: toe53 (yy, y); break; #elif LDBL_MANT_DIG == 24 case 24: toe24 (yy, y); break; #elif LDBL_MANT_DIG == 64 case 64: toe64 (yy, y); break; #elif LDBL_MANT_DIG == 113 case 113: toe113 (yy, y); break; #else case NBITS: emovo (yy, y, ldp); break; #endif } lenldstr += s - lstr; if (mflag) free (lstr); return lenldstr; } #endif /* y = largest integer not greater than x * (truncated toward minus infinity) * * unsigned short x[NE], y[NE] * LDPARMS *ldp * * efloor( x, y, ldp ); */ static const unsigned short bmask[] = { 0xffff, 0xfffe, 0xfffc, 0xfff8, 0xfff0, 0xffe0, 0xffc0, 0xff80, 0xff00, 0xfe00, 0xfc00, 0xf800, 0xf000, 0xe000, 0xc000, 0x8000, 0x0000, }; static void efloor (short unsigned int *x, short unsigned int *y, LDPARMS * ldp) { register unsigned short *p; int e, expon, i; unsigned short f[NE]; emov (x, f); /* leave in external format */ expon = (int) f[NE - 1]; e = (expon & 0x7fff) - (EXONE - 1); if (e <= 0) { eclear (y); goto isitneg; } /* number of bits to clear out */ e = NBITS - e; emov (f, y); if (e <= 0) return; p = &y[0]; while (e >= 16) { *p++ = 0; e -= 16; } /* clear the remaining bits */ *p &= bmask[e]; /* truncate negatives toward minus infinity */ isitneg: if ((unsigned short) expon & (unsigned short) 0x8000) { for (i = 0; i < NE - 1; i++) { if (f[i] != y[i]) { esub (eone, y, y, ldp); break; } } } } static void eiremain (short unsigned int *den, short unsigned int *num, LDPARMS * ldp) { long ld, ln; unsigned short j; unsigned short *equot = ldp->equot; ld = den[E]; ld -= enormlz (den); ln = num[E]; ln -= enormlz (num); ecleaz (equot); while (ln >= ld) { if (ecmpm (den, num) <= 0) { esubm (den, num); j = 1; } else { j = 0; } eshup1 (equot); equot[NI - 1] |= j; eshup1 (num); ln -= 1; } emdnorm (num, 0, 0, ln, 0, ldp); } /* NaN bit patterns */ #ifdef MIEEE #if !defined(__mips) static const unsigned short nan113[8] = { 0x7fff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff }; static const unsigned short nan64[6] = { 0x7fff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff }; static const unsigned short nan53[4] = { 0x7fff, 0xffff, 0xffff, 0xffff }; static const unsigned short nan24[2] = { 0x7fff, 0xffff }; #elif defined(__mips_nan2008) /* __mips */ static const unsigned short nan113[8] = { 0x7fff, 0x8000, 0, 0, 0, 0, 0, 0 }; static const unsigned short nan64[6] = { 0x7fff, 0xc000, 0, 0, 0, 0 }; static const unsigned short nan53[4] = { 0x7ff8, 0, 0, 0 }; static const unsigned short nan24[2] = { 0x7fc0, 0 }; #else /* __mips && !__mips_nan2008 */ static const unsigned short nan113[8] = { 0x7fff, 0x7fff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff }; static const unsigned short nan64[6] = { 0x7fff, 0xbfff, 0xffff, 0xffff, 0xffff, 0xffff }; static const unsigned short nan53[4] = { 0x7ff7, 0xffff, 0xffff, 0xffff }; static const unsigned short nan24[2] = { 0x7fbf, 0xffff }; #endif /* __mips && !__mips_nan2008 */ #else /* !MIEEE */ #if !defined(__mips) || defined(__mips_nan2008) static const unsigned short nan113[8] = { 0, 0, 0, 0, 0, 0, 0x8000, 0x7fff }; static const unsigned short nan64[6] = { 0, 0, 0, 0, 0xc000, 0x7fff }; static const unsigned short nan53[4] = { 0, 0, 0, 0x7ff8 }; static const unsigned short nan24[2] = { 0, 0x7fc0 }; #else /* __mips && !__mips_nan2008 */ static const unsigned short nan113[8] = { 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x7fff, 0x7fff }; static const unsigned short nan64[6] = { 0xffff, 0xffff, 0xffff, 0xffff, 0xbfff, 0x7fff }; static const unsigned short nan53[4] = { 0xffff, 0xffff, 0xffff, 0x7ff7 }; static const unsigned short nan24[2] = { 0xffff, 0x7fbf }; #endif /* __mips && !__mips_nan2008 */ #endif /* !MIEEE */ static void enan (short unsigned int *nan, int size) { int i, n; const unsigned short *p; switch (size) { #ifndef DEC case 113: n = 8; p = nan113; break; case 64: n = 6; p = nan64; break; case 53: n = 4; p = nan53; break; case 24: n = 2; p = nan24; break; case NBITS: #if !defined(__mips) || defined(__mips_nan2008) for (i = 0; i < NE - 2; i++) *nan++ = 0; *nan++ = 0xc000; #else /* __mips && !__mips_nan2008 */ for (i = 0; i < NE - 2; i++) *nan++ = 0xffff; *nan++ = 0xbfff; #endif /* __mips && !__mips_nan2008 */ *nan++ = 0x7fff; return; case NI * 16: *nan++ = 0; *nan++ = 0x7fff; *nan++ = 0; #if !defined(__mips) || defined(__mips_nan2008) *nan++ = 0xc000; for (i = 4; i < NI - 1; i++) *nan++ = 0; #else /* __mips && !__mips_nan2008 */ *nan++ = 0xbfff; for (i = 4; i < NI - 1; i++) *nan++ = 0xffff; #endif /* __mips && !__mips_nan2008 */ *nan++ = 0; return; #endif default: mtherr ("enan", DOMAIN); return; } for (i = 0; i < n; i++) *nan++ = *p++; } picolibc-1.7.4/newlib/libc/stdlib/llabs.c000066400000000000000000000037321414576234500202420ustar00rootroot00000000000000/* FUNCTION <>---compute the absolute value of an long long integer. INDEX llabs SYNOPSIS #include long long llabs(long long <[j]>); DESCRIPTION The <> function computes the absolute value of the long long integer argument <[j]> (also called the magnitude of <[j]>). The similar function <> uses and returns <> rather than <> values. RETURNS A nonnegative long long integer. PORTABILITY <> is ISO 9899 (C99) compatable. No supporting OS subroutines are required. */ /*- * Copyright (c) 2001 Mike Barcroft * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include long long llabs (long long j) { return (j < 0 ? -j : j); } picolibc-1.7.4/newlib/libc/stdlib/lldiv.c000066400000000000000000000064111414576234500202540ustar00rootroot00000000000000/* FUNCTION <>---divide two long long integers INDEX lldiv SYNOPSIS #include lldiv_t lldiv(long long <[n]>, long long <[d]>); DESCRIPTION Divide @tex $n/d$, @end tex @ifnottex <[n]>/<[d]>, @end ifnottex returning quotient and remainder as two long long integers in a structure <>. RETURNS The result is represented with the structure . typedef struct . { . long long quot; . long long rem; . } lldiv_t; where the <> field represents the quotient, and <> the remainder. For nonzero <[d]>, if `<<<[r]> = ldiv(<[n]>,<[d]>);>>' then <[n]> equals `<<<[r]>.rem + <[d]>*<[r]>.quot>>'. To divide <> rather than <> values, use the similar function <>. PORTABILITY <> is ISO 9899 (C99) compatable. No supporting OS subroutines are required. */ /*- * Copyright (c) 2001 Mike Barcroft * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include /* * The ANSI standard says that |r.quot| <= |n/d|, where * n/d is to be computed in infinite precision. In other * words, we should always truncate the quotient towards * 0, never -infinity. * * Machine division and remainer may work either way when * one or both of n or d is negative. If only one is * negative and r.quot has been truncated towards -inf, * r.rem will have the same sign as denom and the opposite * sign of num; if both are negative and r.quot has been * truncated towards -inf, r.rem will be positive (will * have the opposite sign of num). These are considered * `wrong'. * * If both are num and denom are positive, r will always * be positive. * * This all boils down to: * if num >= 0, but r.rem < 0, we got the wrong answer. * In that case, to get the right answer, add 1 to r.quot and * subtract denom from r.rem. */ lldiv_t lldiv (long long numer, long long denom) { lldiv_t retval; retval.quot = numer / denom; retval.rem = numer % denom; if (numer >= 0 && retval.rem < 0) { retval.quot++; retval.rem -= denom; } return (retval); } picolibc-1.7.4/newlib/libc/stdlib/local.h000066400000000000000000000025741414576234500202470ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ /* Misc. local definitions for libc/stdlib */ #ifndef _LOCAL_H_ #define _LOCAL_H_ char * _gcvt (double , int , char *, char, int); #include "../locale/setlocale.h" #ifndef __machine_mbstate_t_defined #include #endif typedef int wctomb_f (char *, wchar_t, mbstate_t *); typedef wctomb_f *wctomb_p; wctomb_f __ascii_wctomb; #ifdef _MB_CAPABLE wctomb_f __utf8_wctomb; wctomb_f __sjis_wctomb; wctomb_f __eucjp_wctomb; wctomb_f __jis_wctomb; wctomb_p __iso_wctomb (int val); wctomb_p __cp_wctomb (int val); #ifdef __CYGWIN__ wctomb_f __gbk_wctomb; wctomb_f __kr_wctomb; wctomb_f __big5_wctomb; #endif #endif #define __WCTOMB (_locale->wctomb) typedef int mbtowc_f (wchar_t *, const char *, size_t, mbstate_t *); typedef mbtowc_f *mbtowc_p; mbtowc_f __ascii_mbtowc; #ifdef _MB_CAPABLE mbtowc_f __utf8_mbtowc; mbtowc_f __sjis_mbtowc; mbtowc_f __eucjp_mbtowc; mbtowc_f __jis_mbtowc; mbtowc_p __iso_mbtowc (int val); mbtowc_p __cp_mbtowc (int val); #ifdef __CYGWIN__ mbtowc_f __gbk_mbtowc; mbtowc_f __kr_mbtowc; mbtowc_f __big5_mbtowc; #endif #endif #define __MBTOWC (_locale->mbtowc) extern wchar_t __iso_8859_conv[14][0x60]; int __iso_8859_val_index (int); int __iso_8859_index (const char *); extern wchar_t __cp_conv[][0x80]; int __cp_val_index (int); int __cp_index (const char *); #endif picolibc-1.7.4/newlib/libc/stdlib/lrand48.c000066400000000000000000000013251414576234500204150ustar00rootroot00000000000000/* * Copyright (c) 1993 Martin Birgmeier * All rights reserved. * * You may redistribute unmodified or modified versions of this source * code provided that the above copyright notice and this and the * following conditions are retained. * * This software is provided ``as is'', and comes with no warranties * of any kind. I shall in no event be liable for anything that happens * to anyone/anything when using this software. */ #include "rand48.h" long _lrand48_r (struct _rand48 *r) { __dorand48(r, r->_seed); return (long)((unsigned long) r->_seed[2] << 15) + ((unsigned long) r->_seed[1] >> 1); } #ifndef _REENT_ONLY long lrand48 (void) { return _lrand48_r (&_rand48); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/malign.c000066400000000000000000000005621414576234500204120ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ #ifndef MALLOC_PROVIDED /* malign.c -- a wrapper for memalign_r. */ #include <_ansi.h> #include #include #include #ifndef _REENT_ONLY void * memalign (size_t align, size_t nbytes) { return _memalign_r (_REENT, align, nbytes); } #endif #endif picolibc-1.7.4/newlib/libc/stdlib/malloc-calloc.c000066400000000000000000000031721414576234500216450ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2019 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #define DEFINE_CALLOC #include "mallocr.c" picolibc-1.7.4/newlib/libc/stdlib/malloc-cfree.c000066400000000000000000000027441414576234500215000ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define DEFINE_CFREE #include "mallocr.c" picolibc-1.7.4/newlib/libc/stdlib/malloc-free.c000066400000000000000000000027431414576234500213340ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define DEFINE_FREE #include "mallocr.c" picolibc-1.7.4/newlib/libc/stdlib/malloc-mallinfo.c000066400000000000000000000031741414576234500222130ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2019 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #define DEFINE_MALLINFO #include "mallocr.c" picolibc-1.7.4/newlib/libc/stdlib/malloc-malloc.c000066400000000000000000000027451414576234500216640ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define DEFINE_MALLOC #include "mallocr.c" picolibc-1.7.4/newlib/libc/stdlib/malloc-malloc_stats.c000066400000000000000000000027531414576234500231010ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define DEFINE_MALLOC_STATS #include "mallocr.c" picolibc-1.7.4/newlib/libc/stdlib/malloc-malloc_usable_size.c000066400000000000000000000032061414576234500242420ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2019 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #define DEFINE_MALLOC_USABLE_SIZE #include "mallocr.c" picolibc-1.7.4/newlib/libc/stdlib/malloc-mallopt.c000066400000000000000000000027461414576234500220660ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define DEFINE_MALLOPT #include "mallocr.c" picolibc-1.7.4/newlib/libc/stdlib/malloc-memalign.c000066400000000000000000000027471414576234500222100ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define DEFINE_MEMALIGN #include "mallocr.c" picolibc-1.7.4/newlib/libc/stdlib/malloc-pvalloc.c000066400000000000000000000027461414576234500220560ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define DEFINE_PVALLOC #include "mallocr.c" picolibc-1.7.4/newlib/libc/stdlib/malloc-realloc.c000066400000000000000000000027461414576234500220370ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define DEFINE_REALLOC #include "mallocr.c" picolibc-1.7.4/newlib/libc/stdlib/malloc-valloc.c000066400000000000000000000027451414576234500216750ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define DEFINE_VALLOC #include "mallocr.c" picolibc-1.7.4/newlib/libc/stdlib/malloc.c000066400000000000000000000127271414576234500204200ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ /* VxWorks provides its own version of malloc, and we can't use this one because VxWorks does not provide sbrk. So we have a hook to not compile this code. */ /* The routines here are simple cover fns to the routines that do the real work (the reentrant versions). */ /* FIXME: Does the warning below (see WARNINGS) about non-reentrancy still apply? A first guess would be "no", but how about reentrancy in the *same* thread? */ #ifdef MALLOC_PROVIDED int _dummy_malloc = 1; #else /* FUNCTION <>, <>, <>---manage memory INDEX malloc INDEX realloc INDEX reallocf INDEX free INDEX memalign INDEX malloc_usable_size INDEX _malloc_r INDEX _realloc_r INDEX _reallocf_r INDEX _free_r INDEX _memalign_r INDEX _malloc_usable_size_r SYNOPSIS #include void *malloc(size_t <[nbytes]>); void *realloc(void *<[aptr]>, size_t <[nbytes]>); void *reallocf(void *<[aptr]>, size_t <[nbytes]>); void free(void *<[aptr]>); void *memalign(size_t <[align]>, size_t <[nbytes]>); size_t malloc_usable_size(void *<[aptr]>); void *_malloc_r(void *<[reent]>, size_t <[nbytes]>); void *_realloc_r(void *<[reent]>, void *<[aptr]>, size_t <[nbytes]>); void *_reallocf_r(void *<[reent]>, void *<[aptr]>, size_t <[nbytes]>); void _free_r(void *<[reent]>, void *<[aptr]>); void *_memalign_r(void *<[reent]>, size_t <[align]>, size_t <[nbytes]>); size_t _malloc_usable_size_r(void *<[reent]>, void *<[aptr]>); DESCRIPTION These functions manage a pool of system memory. Use <> to request allocation of an object with at least <[nbytes]> bytes of storage available. If the space is available, <> returns a pointer to a newly allocated block as its result. If you already have a block of storage allocated by <>, but you no longer need all the space allocated to it, you can make it smaller by calling <> with both the object pointer and the new desired size as arguments. <> guarantees that the contents of the smaller object match the beginning of the original object. Similarly, if you need more space for an object, use <> to request the larger size; again, <> guarantees that the beginning of the new, larger object matches the contents of the original object. When you no longer need an object originally allocated by <> or <> (or the related function <>), return it to the memory storage pool by calling <> with the address of the object as the argument. You can also use <> for this purpose by calling it with <<0>> as the <[nbytes]> argument. The <> function behaves just like <> except if the function is required to allocate new storage and this fails. In this case <> will free the original object passed in whereas <> will not. The <> function returns a block of size <[nbytes]> aligned to a <[align]> boundary. The <[align]> argument must be a power of two. The <> function takes a pointer to a block allocated by <>. It returns the amount of space that is available in the block. This may or may not be more than the size requested from <>, due to alignment or minimum size constraints. The alternate functions <<_malloc_r>>, <<_realloc_r>>, <<_reallocf_r>>, <<_free_r>>, <<_memalign_r>>, and <<_malloc_usable_size_r>> are reentrant versions. The extra argument <[reent]> is a pointer to a reentrancy structure. If you have multiple threads of execution which may call any of these routines, or if any of these routines may be called reentrantly, then you must provide implementations of the <<__malloc_lock>> and <<__malloc_unlock>> functions for your system. See the documentation for those functions. These functions operate by calling the function <<_sbrk_r>> or <>, which allocates space. You may need to provide one of these functions for your system. <<_sbrk_r>> is called with a positive value to allocate more space, and with a negative value to release previously allocated space if it is no longer required. @xref{Stubs}. RETURNS <> returns a pointer to the newly allocated space, if successful; otherwise it returns <>. If your application needs to generate empty objects, you may use <> for this purpose. <> returns a pointer to the new block of memory, or <> if a new block could not be allocated. <> is also the result when you use `<,0)>>' (which has the same effect as `<)>>'). You should always check the result of <>; successful reallocation is not guaranteed even when you request a smaller object. <> does not return a result. <> returns a pointer to the newly allocated space. <> returns the usable size. PORTABILITY <>, <>, and <> are specified by the ANSI C standard, but other conforming implementations of <> may behave differently when <[nbytes]> is zero. <> is part of SVR4. <> is not portable. Supporting OS subroutines required: <>. */ #include <_ansi.h> #include #include #include #ifndef _REENT_ONLY void * malloc (size_t nbytes) /* get a block */ { return _malloc_r (_REENT, nbytes); } void free (void *aptr) { _free_r (_REENT, aptr); } #endif #endif /* ! defined (MALLOC_PROVIDED) */ picolibc-1.7.4/newlib/libc/stdlib/mallocr.c000066400000000000000000003343441414576234500206040ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ #ifdef MALLOC_PROVIDED int _dummy_mallocr = 1; #else /* ---------- To make a malloc.h, start cutting here ------------ */ /* A version of malloc/free/realloc written by Doug Lea and released to the public domain. Send questions/comments/complaints/performance data to dl@cs.oswego.edu * VERSION 2.6.5 Wed Jun 17 15:55:16 1998 Doug Lea (dl at gee) Note: There may be an updated version of this malloc obtainable at ftp://g.oswego.edu/pub/misc/malloc.c Check before installing! Note: This version differs from 2.6.4 only by correcting a statement ordering error that could cause failures only when calls to this malloc are interposed with calls to other memory allocators. * Why use this malloc? This is not the fastest, most space-conserving, most portable, or most tunable malloc ever written. However it is among the fastest while also being among the most space-conserving, portable and tunable. Consistent balance across these factors results in a good general-purpose allocator. For a high-level description, see http://g.oswego.edu/dl/html/malloc.html * Synopsis of public routines (Much fuller descriptions are contained in the program documentation below.) malloc(size_t n); Return a pointer to a newly allocated chunk of at least n bytes, or null if no space is available. free(Void_t* p); Release the chunk of memory pointed to by p, or no effect if p is null. realloc(Void_t* p, size_t n); Return a pointer to a chunk of size n that contains the same data as does chunk p up to the minimum of (n, p's size) bytes, or null if no space is available. The returned pointer may or may not be the same as p. If p is null, equivalent to malloc. Unless the #define REALLOC_ZERO_BYTES_FREES below is set, realloc with a size argument of zero (re)allocates a minimum-sized chunk. memalign(size_t alignment, size_t n); Return a pointer to a newly allocated chunk of n bytes, aligned in accord with the alignment argument, which must be a power of two. valloc(size_t n); Equivalent to memalign(pagesize, n), where pagesize is the page size of the system (or as near to this as can be figured out from all the includes/defines below.) pvalloc(size_t n); Equivalent to valloc(minimum-page-that-holds(n)), that is, round up n to nearest pagesize. calloc(size_t unit, size_t quantity); Returns a pointer to quantity * unit bytes, with all locations set to zero. cfree(Void_t* p); Equivalent to free(p). malloc_trim(size_t pad); Release all but pad bytes of freed top-most memory back to the system. Return 1 if successful, else 0. malloc_usable_size(Void_t* p); Report the number usable allocated bytes associated with allocated chunk p. This may or may not report more bytes than were requested, due to alignment and minimum size constraints. malloc_stats(); Prints brief summary statistics on stderr. mallinfo() Returns (by copy) a struct containing various summary statistics. mallopt(int parameter_number, int parameter_value) Changes one of the tunable parameters described below. Returns 1 if successful in changing the parameter, else 0. * Vital statistics: Alignment: 8-byte 8 byte alignment is currently hardwired into the design. This seems to suffice for all current machines and C compilers. Assumed pointer representation: 4 or 8 bytes Code for 8-byte pointers is untested by me but has worked reliably by Wolfram Gloger, who contributed most of the changes supporting this. Assumed size_t representation: 4 or 8 bytes Note that size_t is allowed to be 4 bytes even if pointers are 8. Minimum overhead per allocated chunk: 4 or 8 bytes Each malloced chunk has a hidden overhead of 4 bytes holding size and status information. Minimum allocated size: 4-byte ptrs: 16 bytes (including 4 overhead) 8-byte ptrs: 24/32 bytes (including, 4/8 overhead) When a chunk is freed, 12 (for 4byte ptrs) or 20 (for 8 byte ptrs but 4 byte size) or 24 (for 8/8) additional bytes are needed; 4 (8) for a trailing size field and 8 (16) bytes for free list pointers. Thus, the minimum allocatable size is 16/24/32 bytes. Even a request for zero bytes (i.e., malloc(0)) returns a pointer to something of the minimum allocatable size. Maximum allocated size: 4-byte size_t: 2^31 - 8 bytes 8-byte size_t: 2^63 - 16 bytes It is assumed that (possibly signed) size_t bit values suffice to represent chunk sizes. `Possibly signed' is due to the fact that `size_t' may be defined on a system as either a signed or an unsigned type. To be conservative, values that would appear as negative numbers are avoided. Requests for sizes with a negative sign bit will return a minimum-sized chunk. Maximum overhead wastage per allocated chunk: normally 15 bytes Alignnment demands, plus the minimum allocatable size restriction make the normal worst-case wastage 15 bytes (i.e., up to 15 more bytes will be allocated than were requested in malloc), with two exceptions: 1. Because requests for zero bytes allocate non-zero space, the worst case wastage for a request of zero bytes is 24 bytes. 2. For requests >= mmap_threshold that are serviced via mmap(), the worst case wastage is 8 bytes plus the remainder from a system page (the minimal mmap unit); typically 4096 bytes. * Limitations Here are some features that are NOT currently supported * No user-definable hooks for callbacks and the like. * No automated mechanism for fully checking that all accesses to malloced memory stay within their bounds. * No support for compaction. * Synopsis of compile-time options: People have reported using previous versions of this malloc on all versions of Unix, sometimes by tweaking some of the defines below. It has been tested most extensively on Solaris and Linux. It is also reported to work on WIN32 platforms. People have also reported adapting this malloc for use in stand-alone embedded systems. The implementation is in straight, hand-tuned ANSI C. Among other consequences, it uses a lot of macros. Because of this, to be at all usable, this code should be compiled using an optimizing compiler (for example gcc -O2) that can simplify expressions and control paths. __STD_C (default: derived from C compiler defines) Nonzero if using ANSI-standard C compiler, a C++ compiler, or a C compiler sufficiently close to ANSI to get away with it. DEBUG (default: NOT defined) Define to enable debugging. Adds fairly extensive assertion-based checking to help track down memory errors, but noticeably slows down execution. SEPARATE_OBJECTS (default: NOT defined) Define this to compile into separate .o files. You must then compile malloc.c several times, defining a DEFINE_* macro each time. The list of DEFINE_* macros appears below. MALLOC_LOCK (default: NOT defined) MALLOC_UNLOCK (default: NOT defined) Define these to C expressions which are run to lock and unlock the malloc data structures. Calls may be nested; that is, MALLOC_LOCK may be called more than once before the corresponding MALLOC_UNLOCK calls. MALLOC_LOCK must avoid waiting for a lock that it already holds. MALLOC_ALIGNMENT (default: NOT defined) Define this to 16 if you need 16 byte alignment instead of 8 byte alignment which is the normal default. REALLOC_ZERO_BYTES_FREES (default: NOT defined) Define this if you think that realloc(p, 0) should be equivalent to free(p). Otherwise, since malloc returns a unique pointer for malloc(0), so does realloc(p, 0). HAVE_MEMCPY (default: defined) Define if you are not otherwise using ANSI STD C, but still have memcpy and memset in your C library and want to use them. Otherwise, simple internal versions are supplied. USE_MEMCPY (default: 1 if HAVE_MEMCPY is defined, 0 otherwise) Define as 1 if you want the C library versions of memset and memcpy called in realloc and calloc (otherwise macro versions are used). At least on some platforms, the simple macro versions usually outperform libc versions. HAVE_MMAP (default: defined as 1) Define to non-zero to optionally make malloc() use mmap() to allocate very large blocks. HAVE_MREMAP (default: defined as 0 unless Linux libc set) Define to non-zero to optionally make realloc() use mremap() to reallocate very large blocks. malloc_getpagesize (default: derived from system #includes) Either a constant or routine call returning the system page size. HAVE_USR_INCLUDE_MALLOC_H (default: NOT defined) Optionally define if you are on a system with a /usr/include/malloc.h that declares struct mallinfo. It is not at all necessary to define this even if you do, but will ensure consistency. INTERNAL_SIZE_T (default: size_t) Define to a 32-bit type (probably `unsigned int') if you are on a 64-bit machine, yet do not want or need to allow malloc requests of greater than 2^31 to be handled. This saves space, especially for very small chunks. INTERNAL_LINUX_C_LIB (default: NOT defined) Defined only when compiled as part of Linux libc. Also note that there is some odd internal name-mangling via defines (for example, internally, `malloc' is named `mALLOc') needed when compiling in this case. These look funny but don't otherwise affect anything. INTERNAL_NEWLIB (default: NOT defined) Defined only when compiled as part of the Cygnus newlib distribution. WIN32 (default: undefined) Define this on MS win (95, nt) platforms to compile in sbrk emulation. LACKS_UNISTD_H (default: undefined) Define this if your system does not have a . MORECORE (default: sbrk) The name of the routine to call to obtain more memory from the system. MORECORE_FAILURE (default: -1) The value returned upon failure of MORECORE. MORECORE_CLEARS (default 1) True (1) if the routine mapped to MORECORE zeroes out memory (which holds for sbrk). DEFAULT_TRIM_THRESHOLD DEFAULT_TOP_PAD DEFAULT_MMAP_THRESHOLD DEFAULT_MMAP_MAX Default values of tunable parameters (described in detail below) controlling interaction with host system routines (sbrk, mmap, etc). These values may also be changed dynamically via mallopt(). The preset defaults are those that give best performance for typical programs/systems. */ /* Preliminaries */ #define _DEFAULT_SOURCE #ifndef __STD_C #ifdef __STDC__ #define __STD_C 1 #else #if __cplusplus #define __STD_C 1 #else #define __STD_C 0 #endif /*__cplusplus*/ #endif /*__STDC__*/ #endif /*__STD_C*/ #ifndef Void_t #if __STD_C #define Void_t void #else #define Void_t char #endif #endif /*Void_t*/ #if __STD_C #include /* for size_t */ #else #include #endif #ifdef __cplusplus extern "C" { #endif #include /* needed for malloc_stats */ #include /* needed for overflow checks */ #include /* needed to set errno to ENOMEM */ #ifdef WIN32 #define WIN32_LEAN_AND_MEAN #include #endif /* Compile-time options */ /* Special defines for Cygnus newlib distribution. */ #ifdef INTERNAL_NEWLIB #include #include #define POINTER_UINT unsigned _POINTER_INT #define SEPARATE_OBJECTS #define HAVE_MMAP 0 #define MORECORE(size) sbrk((size)) #define MORECORE_CLEARS 0 #define MALLOC_LOCK __LIBC_LOCK() #define MALLOC_UNLOCK __LIBC_UNLOCK() #ifdef __CYGWIN__ # undef _WIN32 # undef WIN32 #endif #ifndef _WIN32 #ifdef SMALL_MEMORY #define malloc_getpagesize (128) #else #define malloc_getpagesize (4096) #endif #endif #if __STD_C extern void __malloc_lock(void); extern void __malloc_unlock(void); #else extern void __malloc_lock(); extern void __malloc_unlock(); #endif #else /* ! INTERNAL_NEWLIB */ #define POINTER_UINT unsigned long #endif /* ! INTERNAL_NEWLIB */ /* Debugging: Because freed chunks may be overwritten with link fields, this malloc will often die when freed memory is overwritten by user programs. This can be very effective (albeit in an annoying way) in helping track down dangling pointers. If you compile with -DDEBUG, a number of assertion checks are enabled that will catch more memory errors. You probably won't be able to make much sense of the actual assertion errors, but they should help you locate incorrectly overwritten memory. The checking is fairly extensive, and will slow down execution noticeably. Calling malloc_stats or mallinfo with DEBUG set will attempt to check every non-mmapped allocated and free chunk in the course of computing the summmaries. (By nature, mmapped regions cannot be checked very much automatically.) Setting DEBUG may also be helpful if you are trying to modify this code. The assertions in the check routines spell out in more detail the assumptions and invariants underlying the algorithms. */ #if DEBUG #include #else #define assert(x) ((void)0) #endif /* SEPARATE_OBJECTS should be defined if you want each function to go into a separate .o file. You must then compile malloc.c once per function, defining the appropriate DEFINE_ macro. See below for the list of macros. */ #ifndef SEPARATE_OBJECTS #define DEFINE_MALLOC #define DEFINE_FREE #define DEFINE_REALLOC #define DEFINE_CALLOC #define DEFINE_CFREE #define DEFINE_MEMALIGN #define DEFINE_VALLOC #define DEFINE_PVALLOC #define DEFINE_MALLINFO #define DEFINE_MALLOC_STATS #define DEFINE_MALLOC_USABLE_SIZE #define DEFINE_MALLOPT #define STATIC static #else #define STATIC #endif /* INTERNAL_SIZE_T is the word-size used for internal bookkeeping of chunk sizes. On a 64-bit machine, you can reduce malloc overhead by defining INTERNAL_SIZE_T to be a 32 bit `unsigned int' at the expense of not being able to handle requests greater than 2^31. This limitation is hardly ever a concern; you are encouraged to set this. However, the default version is the same as size_t. Since the implementation relies on __builtin_mul_overflow, defining a custom INTERNAL_SIZE_T on machines/compilers without __builtin_mul_overflow is not permitted. */ #ifndef INTERNAL_SIZE_T #define INTERNAL_SIZE_T size_t #elif !defined(HAVE_BUILTIN_MUL_OVERFLOW) #error Compiler does not support __builtin_mul_overflow, hence INTERNAL_SIZE_T cannot be set #endif /* Following is needed on implementations whereby long > size_t. The problem is caused because the code performs subtractions of size_t values and stores the result in long values. In the case where long > size_t and the first value is actually less than the second value, the resultant value is positive. For example, (long)(x - y) where x = 0 and y is 1 ends up being 0x00000000FFFFFFFF which is 2*31 - 1 instead of 0xFFFFFFFFFFFFFFFF. This is due to the fact that assignment from unsigned to signed won't sign extend. */ #define long_sub_size_t(x, y) \ (sizeof (long) > sizeof (INTERNAL_SIZE_T) && x < y \ ? -(long) (y - x) \ : (long) (x - y)) /* REALLOC_ZERO_BYTES_FREES should be set if a call to realloc with zero bytes should be the same as a call to free. Some people think it should. Otherwise, since this malloc returns a unique pointer for malloc(0), so does realloc(p, 0). */ /* #define REALLOC_ZERO_BYTES_FREES */ /* WIN32 causes an emulation of sbrk to be compiled in mmap-based options are not currently supported in WIN32. */ /* #define WIN32 */ #ifdef WIN32 #define MORECORE wsbrk #define HAVE_MMAP 0 #endif /* HAVE_MEMCPY should be defined if you are not otherwise using ANSI STD C, but still have memcpy and memset in your C library and want to use them in calloc and realloc. Otherwise simple macro versions are defined here. USE_MEMCPY should be defined as 1 if you actually want to have memset and memcpy called. People report that the macro versions are often enough faster than libc versions on many systems that it is better to use them. */ #define HAVE_MEMCPY /* Although the original macro is called USE_MEMCPY, newlib actually uses memmove to handle cases whereby a platform's memcpy implementation copies backwards and thus destructive overlap may occur in realloc whereby we are reclaiming free memory prior to the old allocation. */ #ifndef USE_MEMCPY #ifdef HAVE_MEMCPY #define USE_MEMCPY 1 #else #define USE_MEMCPY 0 #endif #endif #if (__STD_C || defined(HAVE_MEMCPY)) #if __STD_C void* memset(void*, int, size_t); void* memcpy(void*, const void*, size_t); void* memmove(void*, const void*, size_t); #else Void_t* memset(); Void_t* memcpy(); Void_t* memmove(); #endif #endif #if USE_MEMCPY /* The following macros are only invoked with (2n+1)-multiples of INTERNAL_SIZE_T units, with a positive integer n. This is exploited for fast inline execution when n is small. */ #define MALLOC_ZERO(charp, nbytes) \ do { \ INTERNAL_SIZE_T mzsz = (nbytes); \ if(mzsz <= 9*sizeof(mzsz)) { \ INTERNAL_SIZE_T* mz = (INTERNAL_SIZE_T*) (charp); \ if(mzsz >= 5*sizeof(mzsz)) { *mz++ = 0; \ *mz++ = 0; \ if(mzsz >= 7*sizeof(mzsz)) { *mz++ = 0; \ *mz++ = 0; \ if(mzsz >= 9*sizeof(mzsz)) { *mz++ = 0; \ *mz++ = 0; }}} \ *mz++ = 0; \ *mz++ = 0; \ *mz = 0; \ } else memset((charp), 0, mzsz); \ } while(0) #define MALLOC_COPY(dest,src,nbytes) \ do { \ INTERNAL_SIZE_T mcsz = (nbytes); \ if(mcsz <= 9*sizeof(mcsz)) { \ INTERNAL_SIZE_T* mcsrc = (INTERNAL_SIZE_T*) (src); \ INTERNAL_SIZE_T* mcdst = (INTERNAL_SIZE_T*) (dest); \ if(mcsz >= 5*sizeof(mcsz)) { *mcdst++ = *mcsrc++; \ *mcdst++ = *mcsrc++; \ if(mcsz >= 7*sizeof(mcsz)) { *mcdst++ = *mcsrc++; \ *mcdst++ = *mcsrc++; \ if(mcsz >= 9*sizeof(mcsz)) { *mcdst++ = *mcsrc++; \ *mcdst++ = *mcsrc++; }}} \ *mcdst++ = *mcsrc++; \ *mcdst++ = *mcsrc++; \ *mcdst = *mcsrc ; \ } else memmove(dest, src, mcsz); \ } while(0) #else /* !USE_MEMCPY */ /* Use Duff's device for good zeroing/copying performance. */ #define MALLOC_ZERO(charp, nbytes) \ do { \ INTERNAL_SIZE_T* mzp = (INTERNAL_SIZE_T*)(charp); \ long mctmp = (nbytes)/sizeof(INTERNAL_SIZE_T), mcn; \ if (mctmp < 8) mcn = 0; else { mcn = (mctmp-1)/8; mctmp %= 8; } \ switch (mctmp) { \ case 0: for(;;) { *mzp++ = 0; \ case 7: *mzp++ = 0; \ case 6: *mzp++ = 0; \ case 5: *mzp++ = 0; \ case 4: *mzp++ = 0; \ case 3: *mzp++ = 0; \ case 2: *mzp++ = 0; \ case 1: *mzp++ = 0; if(mcn <= 0) break; mcn--; } \ } \ } while(0) #define MALLOC_COPY(dest,src,nbytes) \ do { \ INTERNAL_SIZE_T* mcsrc = (INTERNAL_SIZE_T*) src; \ INTERNAL_SIZE_T* mcdst = (INTERNAL_SIZE_T*) dest; \ long mctmp = (nbytes)/sizeof(INTERNAL_SIZE_T), mcn; \ if (mctmp < 8) mcn = 0; else { mcn = (mctmp-1)/8; mctmp %= 8; } \ switch (mctmp) { \ case 0: for(;;) { *mcdst++ = *mcsrc++; \ case 7: *mcdst++ = *mcsrc++; \ case 6: *mcdst++ = *mcsrc++; \ case 5: *mcdst++ = *mcsrc++; \ case 4: *mcdst++ = *mcsrc++; \ case 3: *mcdst++ = *mcsrc++; \ case 2: *mcdst++ = *mcsrc++; \ case 1: *mcdst++ = *mcsrc++; if(mcn <= 0) break; mcn--; } \ } \ } while(0) #endif /* Define HAVE_MMAP to optionally make malloc() use mmap() to allocate very large blocks. These will be returned to the operating system immediately after a free(). */ #ifndef HAVE_MMAP #define HAVE_MMAP 1 #endif /* Define HAVE_MREMAP to make realloc() use mremap() to re-allocate large blocks. This is currently only possible on Linux with kernel versions newer than 1.3.77. */ #ifndef HAVE_MREMAP #ifdef INTERNAL_LINUX_C_LIB #define HAVE_MREMAP 1 #else #define HAVE_MREMAP 0 #endif #endif #if HAVE_MMAP #include #include #include #if !defined(MAP_ANONYMOUS) && defined(MAP_ANON) #define MAP_ANONYMOUS MAP_ANON #endif #endif /* HAVE_MMAP */ /* Access to system page size. To the extent possible, this malloc manages memory from the system in page-size units. The following mechanics for getpagesize were adapted from bsd/gnu getpagesize.h */ #ifndef LACKS_UNISTD_H # include #endif #ifndef malloc_getpagesize # ifdef _SC_PAGESIZE /* some SVR4 systems omit an underscore */ # ifndef _SC_PAGE_SIZE # define _SC_PAGE_SIZE _SC_PAGESIZE # endif # endif # ifdef _SC_PAGE_SIZE # define malloc_getpagesize sysconf(_SC_PAGE_SIZE) # else # if defined(BSD) || defined(DGUX) || defined(HAVE_GETPAGESIZE) extern size_t getpagesize(); # define malloc_getpagesize getpagesize() # else # include # ifdef EXEC_PAGESIZE # define malloc_getpagesize EXEC_PAGESIZE # else # ifdef NBPG # ifndef CLSIZE # define malloc_getpagesize NBPG # else # define malloc_getpagesize (NBPG * CLSIZE) # endif # else # ifdef NBPC # define malloc_getpagesize NBPC # else # ifdef PAGESIZE # define malloc_getpagesize PAGESIZE # else # define malloc_getpagesize (4096) /* just guess */ # endif # endif # endif # endif # endif # endif #endif /* This version of malloc supports the standard SVID/XPG mallinfo routine that returns a struct containing the same kind of information you can get from malloc_stats. It should work on any SVID/XPG compliant system that has a /usr/include/malloc.h defining struct mallinfo. (If you'd like to install such a thing yourself, cut out the preliminary declarations as described above and below and save them in a malloc.h file. But there's no compelling reason to bother to do this.) The main declaration needed is the mallinfo struct that is returned (by-copy) by mallinfo(). The SVID/XPG malloinfo struct contains a bunch of fields, most of which are not even meaningful in this version of malloc. Some of these fields are are instead filled by mallinfo() with other numbers that might possibly be of interest. HAVE_USR_INCLUDE_MALLOC_H should be set if you have a /usr/include/malloc.h file that includes a declaration of struct mallinfo. If so, it is included; else an SVID2/XPG2 compliant version is declared below. These must be precisely the same for mallinfo() to work. */ /* #define HAVE_USR_INCLUDE_MALLOC_H */ #if HAVE_USR_INCLUDE_MALLOC_H #include "/usr/include/malloc.h" #else /* SVID2/XPG mallinfo structure */ struct mallinfo { int arena; /* total space allocated from system */ int ordblks; /* number of non-inuse chunks */ int smblks; /* unused -- always zero */ int hblks; /* number of mmapped regions */ int hblkhd; /* total space in mmapped regions */ int usmblks; /* unused -- always zero */ int fsmblks; /* unused -- always zero */ int uordblks; /* total allocated space */ int fordblks; /* total non-inuse space */ int keepcost; /* top-most, releasable (via malloc_trim) space */ }; /* SVID2/XPG mallopt options */ #define M_MXFAST 1 /* UNUSED in this malloc */ #define M_NLBLKS 2 /* UNUSED in this malloc */ #define M_GRAIN 3 /* UNUSED in this malloc */ #define M_KEEP 4 /* UNUSED in this malloc */ #endif /* mallopt options that actually do something */ #define M_TRIM_THRESHOLD -1 #define M_TOP_PAD -2 #define M_MMAP_THRESHOLD -3 #define M_MMAP_MAX -4 #ifndef DEFAULT_TRIM_THRESHOLD #define DEFAULT_TRIM_THRESHOLD (128L * 1024L) #endif /* M_TRIM_THRESHOLD is the maximum amount of unused top-most memory to keep before releasing via malloc_trim in free(). Automatic trimming is mainly useful in long-lived programs. Because trimming via sbrk can be slow on some systems, and can sometimes be wasteful (in cases where programs immediately afterward allocate more large chunks) the value should be high enough so that your overall system performance would improve by releasing. The trim threshold and the mmap control parameters (see below) can be traded off with one another. Trimming and mmapping are two different ways of releasing unused memory back to the system. Between these two, it is often possible to keep system-level demands of a long-lived program down to a bare minimum. For example, in one test suite of sessions measuring the XF86 X server on Linux, using a trim threshold of 128K and a mmap threshold of 192K led to near-minimal long term resource consumption. If you are using this malloc in a long-lived program, it should pay to experiment with these values. As a rough guide, you might set to a value close to the average size of a process (program) running on your system. Releasing this much memory would allow such a process to run in memory. Generally, it's worth it to tune for trimming rather tham memory mapping when a program undergoes phases where several large chunks are allocated and released in ways that can reuse each other's storage, perhaps mixed with phases where there are no such chunks at all. And in well-behaved long-lived programs, controlling release of large blocks via trimming versus mapping is usually faster. However, in most programs, these parameters serve mainly as protection against the system-level effects of carrying around massive amounts of unneeded memory. Since frequent calls to sbrk, mmap, and munmap otherwise degrade performance, the default parameters are set to relatively high values that serve only as safeguards. The default trim value is high enough to cause trimming only in fairly extreme (by current memory consumption standards) cases. It must be greater than page size to have any useful effect. To disable trimming completely, you can set to (unsigned long)(-1); */ #ifndef DEFAULT_TOP_PAD #define DEFAULT_TOP_PAD (0) #endif /* M_TOP_PAD is the amount of extra `padding' space to allocate or retain whenever sbrk is called. It is used in two ways internally: * When sbrk is called to extend the top of the arena to satisfy a new malloc request, this much padding is added to the sbrk request. * When malloc_trim is called automatically from free(), it is used as the `pad' argument. In both cases, the actual amount of padding is rounded so that the end of the arena is always a system page boundary. The main reason for using padding is to avoid calling sbrk so often. Having even a small pad greatly reduces the likelihood that nearly every malloc request during program start-up (or after trimming) will invoke sbrk, which needlessly wastes time. Automatic rounding-up to page-size units is normally sufficient to avoid measurable overhead, so the default is 0. However, in systems where sbrk is relatively slow, it can pay to increase this value, at the expense of carrying around more memory than the program needs. */ #ifndef DEFAULT_MMAP_THRESHOLD #define DEFAULT_MMAP_THRESHOLD (128 * 1024) #endif /* M_MMAP_THRESHOLD is the request size threshold for using mmap() to service a request. Requests of at least this size that cannot be allocated using already-existing space will be serviced via mmap. (If enough normal freed space already exists it is used instead.) Using mmap segregates relatively large chunks of memory so that they can be individually obtained and released from the host system. A request serviced through mmap is never reused by any other request (at least not directly; the system may just so happen to remap successive requests to the same locations). Segregating space in this way has the benefit that mmapped space can ALWAYS be individually released back to the system, which helps keep the system level memory demands of a long-lived program low. Mapped memory can never become `locked' between other chunks, as can happen with normally allocated chunks, which menas that even trimming via malloc_trim would not release them. However, it has the disadvantages that: 1. The space cannot be reclaimed, consolidated, and then used to service later requests, as happens with normal chunks. 2. It can lead to more wastage because of mmap page alignment requirements 3. It causes malloc performance to be more dependent on host system memory management support routines which may vary in implementation quality and may impose arbitrary limitations. Generally, servicing a request via normal malloc steps is faster than going through a system's mmap. All together, these considerations should lead you to use mmap only for relatively large requests. */ #ifndef DEFAULT_MMAP_MAX #if HAVE_MMAP #define DEFAULT_MMAP_MAX (64) #else #define DEFAULT_MMAP_MAX (0) #endif #endif /* M_MMAP_MAX is the maximum number of requests to simultaneously service using mmap. This parameter exists because: 1. Some systems have a limited number of internal tables for use by mmap. 2. In most systems, overreliance on mmap can degrade overall performance. 3. If a program allocates many large regions, it is probably better off using normal sbrk-based allocation routines that can reclaim and reallocate normal heap memory. Using a small value allows transition into this mode after the first few allocations. Setting to 0 disables all use of mmap. If HAVE_MMAP is not set, the default value is 0, and attempts to set it to non-zero values in mallopt will fail. */ /* Special defines for linux libc Except when compiled using these special defines for Linux libc using weak aliases, this malloc is NOT designed to work in multithreaded applications. No semaphores or other concurrency control are provided to ensure that multiple malloc or free calls don't run at the same time, which could be disasterous. A single semaphore could be used across malloc, realloc, and free (which is essentially the effect of the linux weak alias approach). It would be hard to obtain finer granularity. */ #ifdef INTERNAL_LINUX_C_LIB #if __STD_C Void_t * __default_morecore_init (ptrdiff_t); Void_t *(*__morecore)(ptrdiff_t) = __default_morecore_init; #else Void_t * __default_morecore_init (); Void_t *(*__morecore)() = __default_morecore_init; #endif #define MORECORE (*__morecore) #define MORECORE_FAILURE 0 #define MORECORE_CLEARS 1 #else /* INTERNAL_LINUX_C_LIB */ #ifndef INTERNAL_NEWLIB #if __STD_C extern Void_t* sbrk(ptrdiff_t); #else extern Void_t* sbrk(); #endif #endif #ifndef MORECORE #define MORECORE sbrk #endif #ifndef MORECORE_FAILURE #define MORECORE_FAILURE -1 #endif #ifndef MORECORE_CLEARS #define MORECORE_CLEARS 1 #endif #endif /* INTERNAL_LINUX_C_LIB */ #if defined(INTERNAL_LINUX_C_LIB) && defined(__ELF__) #define cALLOc __libc_calloc #define fREe __libc_free #define mALLOc __libc_malloc #define mEMALIGn __libc_memalign #define rEALLOc __libc_realloc #define vALLOc __libc_valloc #define pvALLOc __libc_pvalloc #define mALLINFo __libc_mallinfo #define mALLOPt __libc_mallopt #pragma weak calloc = __libc_calloc #pragma weak free = __libc_free #pragma weak cfree = __libc_free #pragma weak malloc = __libc_malloc #pragma weak memalign = __libc_memalign #pragma weak realloc = __libc_realloc #pragma weak valloc = __libc_valloc #pragma weak pvalloc = __libc_pvalloc #pragma weak mallinfo = __libc_mallinfo #pragma weak mallopt = __libc_mallopt #else #define cALLOc calloc #define fREe free #define mALLOc malloc #define mEMALIGn memalign #define rEALLOc realloc #define vALLOc valloc #define pvALLOc pvalloc #define mALLINFo mallinfo #define mALLOPt mallopt #ifdef INTERNAL_NEWLIB #define malloc_stats malloc_stats #define malloc_trim malloc_trim #define malloc_usable_size malloc_usable_size #define malloc_update_mallinfo __malloc_update_mallinfo #define malloc_av_ __malloc_av_ #define malloc_current_mallinfo __malloc_current_mallinfo #define malloc_max_sbrked_mem __malloc_max_sbrked_mem #define malloc_max_total_mem __malloc_max_total_mem #define malloc_sbrk_base __malloc_sbrk_base #define malloc_top_pad __malloc_top_pad #define malloc_trim_threshold __malloc_trim_threshold #endif /* ! INTERNAL_NEWLIB */ #endif /* Public routines */ #if __STD_C Void_t* mALLOc(size_t); void fREe(Void_t*); Void_t* rEALLOc(Void_t*, size_t); Void_t* mEMALIGn(size_t, size_t); Void_t* vALLOc(size_t); Void_t* pvALLOc(size_t); Void_t* cALLOc(size_t, size_t); void cfree(Void_t*); int malloc_trim(size_t); size_t malloc_usable_size(Void_t*); void malloc_stats(void); int mALLOPt(int, int); struct mallinfo mALLINFo(void); #else Void_t* mALLOc(); void fREe(); Void_t* rEALLOc(); Void_t* mEMALIGn(); Void_t* vALLOc(); Void_t* pvALLOc(); Void_t* cALLOc(); void cfree(); int malloc_trim(); size_t malloc_usable_size(); void malloc_stats(); int mALLOPt(); struct mallinfo mALLINFo(); #endif /* Work around compiler optimizing away stores to 'size' field before * call to free. */ #ifdef HAVE_ALIAS_ATTRIBUTE extern __typeof(free) __malloc_free; #else #define __malloc_free(x) fREe(x) #endif #ifdef __cplusplus }; /* end of extern "C" */ #endif /* ---------- To make a malloc.h, end cutting here ------------ */ /* Emulation of sbrk for WIN32 All code within the ifdef WIN32 is untested by me. */ #ifdef WIN32 #define AlignPage(add) (((add) + (malloc_getpagesize-1)) & \ ~(malloc_getpagesize-1)) /* resrve 64MB to insure large contiguous space */ #define RESERVED_SIZE (1024*1024*64) #define NEXT_SIZE (2048*1024) #define TOP_MEMORY ((unsigned long)2*1024*1024*1024) struct GmListElement; typedef struct GmListElement GmListElement; struct GmListElement { GmListElement* next; void* base; }; static GmListElement* head = 0; static unsigned int gNextAddress = 0; static unsigned int gAddressBase = 0; static unsigned int gAllocatedSize = 0; static GmListElement* makeGmListElement (void* bas) { GmListElement* this; this = (GmListElement*)(void*)LocalAlloc (0, sizeof (GmListElement)); ASSERT (this); if (this) { this->base = bas; this->next = head; head = this; } return this; } void gcleanup (void) { BOOL rval; ASSERT ( (head == NULL) || (head->base == (void*)gAddressBase)); if (gAddressBase && (gNextAddress - gAddressBase)) { rval = VirtualFree ((void*)gAddressBase, gNextAddress - gAddressBase, MEM_DECOMMIT); ASSERT (rval); } while (head) { GmListElement* next = head->next; rval = VirtualFree (head->base, 0, MEM_RELEASE); ASSERT (rval); LocalFree (head); head = next; } } static void* findRegion (void* start_address, unsigned long size) { MEMORY_BASIC_INFORMATION info; while ((unsigned long)start_address < TOP_MEMORY) { VirtualQuery (start_address, &info, sizeof (info)); if (info.State != MEM_FREE) start_address = (char*)info.BaseAddress + info.RegionSize; else if (info.RegionSize >= size) return start_address; else start_address = (char*)info.BaseAddress + info.RegionSize; } return NULL; } void* wsbrk (long size) { void* tmp; if (size > 0) { if (gAddressBase == 0) { gAllocatedSize = max (RESERVED_SIZE, AlignPage (size)); gNextAddress = gAddressBase = (unsigned int)VirtualAlloc (NULL, gAllocatedSize, MEM_RESERVE, PAGE_NOACCESS); } else if (AlignPage (gNextAddress + size) > (gAddressBase + gAllocatedSize)) { long new_size = max (NEXT_SIZE, AlignPage (size)); void* new_address = (void*)(gAddressBase+gAllocatedSize); do { new_address = findRegion (new_address, new_size); if (new_address == 0) return (void*)-1; gAddressBase = gNextAddress = (unsigned int)VirtualAlloc (new_address, new_size, MEM_RESERVE, PAGE_NOACCESS); // repeat in case of race condition // The region that we found has been snagged // by another thread } while (gAddressBase == 0); ASSERT (new_address == (void*)gAddressBase); gAllocatedSize = new_size; if (!makeGmListElement ((void*)gAddressBase)) return (void*)-1; } if ((size + gNextAddress) > AlignPage (gNextAddress)) { void* res; res = VirtualAlloc ((void*)AlignPage (gNextAddress), (size + gNextAddress - AlignPage (gNextAddress)), MEM_COMMIT, PAGE_READWRITE); if (res == 0) return (void*)-1; } tmp = (void*)gNextAddress; gNextAddress = (unsigned int)tmp + size; return tmp; } else if (size < 0) { unsigned int alignedGoal = AlignPage (gNextAddress + size); /* Trim by releasing the virtual memory */ if (alignedGoal >= gAddressBase) { VirtualFree ((void*)alignedGoal, gNextAddress - alignedGoal, MEM_DECOMMIT); gNextAddress = gNextAddress + size; return (void*)gNextAddress; } else { VirtualFree ((void*)gAddressBase, gNextAddress - gAddressBase, MEM_DECOMMIT); gNextAddress = gAddressBase; return (void*)-1; } } else { return (void*)gNextAddress; } } #endif /* Type declarations */ struct malloc_chunk { INTERNAL_SIZE_T prev_size; /* Size of previous chunk (if free). */ INTERNAL_SIZE_T size; /* Size in bytes, including overhead. */ struct malloc_chunk* fd; /* double links -- used only if free. */ struct malloc_chunk* bk; }; typedef struct malloc_chunk* mchunkptr; /* malloc_chunk details: (The following includes lightly edited explanations by Colin Plumb.) Chunks of memory are maintained using a `boundary tag' method as described in e.g., Knuth or Standish. (See the paper by Paul Wilson ftp://ftp.cs.utexas.edu/pub/garbage/allocsrv.ps for a survey of such techniques.) Sizes of free chunks are stored both in the front of each chunk and at the end. This makes consolidating fragmented chunks into bigger chunks very fast. The size fields also hold bits representing whether chunks are free or in use. An allocated chunk looks like this: chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Size of previous chunk, if allocated | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Size of chunk, in bytes |P| mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | User data starts here... . . . . (malloc_usable_space() bytes) . . | nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Size of chunk | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Where "chunk" is the front of the chunk for the purpose of most of the malloc code, but "mem" is the pointer that is returned to the user. "Nextchunk" is the beginning of the next contiguous chunk. Chunks always begin on even word boundries, so the mem portion (which is returned to the user) is also on an even word boundary, and thus double-word aligned. Free chunks are stored in circular doubly-linked lists, and look like this: chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Size of previous chunk | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ `head:' | Size of chunk, in bytes |P| mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Forward pointer to next chunk in list | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Back pointer to previous chunk in list | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Unused space (may be 0 bytes long) . . . . | nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ `foot:' | Size of chunk, in bytes | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ The P (PREV_INUSE) bit, stored in the unused low-order bit of the chunk size (which is always a multiple of two words), is an in-use bit for the *previous* chunk. If that bit is *clear*, then the word before the current chunk size contains the previous chunk size, and can be used to find the front of the previous chunk. (The very first chunk allocated always has this bit set, preventing access to non-existent (or non-owned) memory.) Note that the `foot' of the current chunk is actually represented as the prev_size of the NEXT chunk. (This makes it easier to deal with alignments etc). The two exceptions to all this are 1. The special chunk `top', which doesn't bother using the trailing size field since there is no next contiguous chunk that would have to index off it. (After initialization, `top' is forced to always exist. If it would become less than MINSIZE bytes long, it is replenished via malloc_extend_top.) 2. Chunks allocated via mmap, which have the second-lowest-order bit (IS_MMAPPED) set in their size fields. Because they are never merged or traversed from any other chunk, they have no foot size or inuse information. Available chunks are kept in any of several places (all declared below): * `av': An array of chunks serving as bin headers for consolidated chunks. Each bin is doubly linked. The bins are approximately proportionally (log) spaced. There are a lot of these bins (128). This may look excessive, but works very well in practice. All procedures maintain the invariant that no consolidated chunk physically borders another one. Chunks in bins are kept in size order, with ties going to the approximately least recently used chunk. The chunks in each bin are maintained in decreasing sorted order by size. This is irrelevant for the small bins, which all contain the same-sized chunks, but facilitates best-fit allocation for larger chunks. (These lists are just sequential. Keeping them in order almost never requires enough traversal to warrant using fancier ordered data structures.) Chunks of the same size are linked with the most recently freed at the front, and allocations are taken from the back. This results in LRU or FIFO allocation order, which tends to give each chunk an equal opportunity to be consolidated with adjacent freed chunks, resulting in larger free chunks and less fragmentation. * `top': The top-most available chunk (i.e., the one bordering the end of available memory) is treated specially. It is never included in any bin, is used only if no other chunk is available, and is released back to the system if it is very large (see M_TRIM_THRESHOLD). * `last_remainder': A bin holding only the remainder of the most recently split (non-top) chunk. This bin is checked before other non-fitting chunks, so as to provide better locality for runs of sequentially allocated chunks. * Implicitly, through the host system's memory mapping tables. If supported, requests greater than a threshold are usually serviced via calls to mmap, and then later released via munmap. */ /* sizes, alignments */ #define SIZE_SZ (sizeof(INTERNAL_SIZE_T)) #ifndef MALLOC_ALIGNMENT #define MALLOC_ALIGN 8 #define MALLOC_ALIGNMENT (SIZE_SZ < 4 ? 8 : (SIZE_SZ + SIZE_SZ)) #else #define MALLOC_ALIGN MALLOC_ALIGNMENT #endif #define MALLOC_ALIGN_MASK (MALLOC_ALIGNMENT - 1) #define MINSIZE (sizeof(struct malloc_chunk)) /* conversion from malloc headers to user pointers, and back */ #define chunk2mem(p) ((Void_t*)((char*)(p) + 2*SIZE_SZ)) #define mem2chunk(mem) ((mchunkptr)((char*)(mem) - 2*SIZE_SZ)) /* pad request bytes into a usable size */ #define request2size(req) \ (((unsigned long)((req) + (SIZE_SZ + MALLOC_ALIGN_MASK)) < \ (unsigned long)(MINSIZE + MALLOC_ALIGN_MASK)) ? ((MINSIZE + MALLOC_ALIGN_MASK) & ~(MALLOC_ALIGN_MASK)) : \ (((req) + (SIZE_SZ + MALLOC_ALIGN_MASK)) & ~(MALLOC_ALIGN_MASK))) /* Check if m has acceptable alignment */ #define aligned_OK(m) (((unsigned long)((m)) & (MALLOC_ALIGN_MASK)) == 0) /* Physical chunk operations */ /* size field is or'ed with PREV_INUSE when previous adjacent chunk in use */ #define PREV_INUSE 0x1 /* size field is or'ed with IS_MMAPPED if the chunk was obtained with mmap() */ #define IS_MMAPPED 0x2 /* Bits to mask off when extracting size */ #define SIZE_BITS (PREV_INUSE|IS_MMAPPED) /* Ptr to next physical malloc_chunk. */ #define next_chunk(p) ((mchunkptr)( ((char*)(p)) + ((p)->size & ~PREV_INUSE) )) /* Ptr to previous physical malloc_chunk */ #define prev_chunk(p)\ ((mchunkptr)( ((char*)(p)) - ((p)->prev_size) )) /* Treat space at ptr + offset as a chunk */ #define chunk_at_offset(p, s) ((mchunkptr)(((char*)(p)) + (s))) /* Dealing with use bits */ /* extract p's inuse bit */ #define inuse(p)\ ((((mchunkptr)(((char*)(p))+((p)->size & ~PREV_INUSE)))->size) & PREV_INUSE) /* extract inuse bit of previous chunk */ #define prev_inuse(p) ((p)->size & PREV_INUSE) /* check for mmap()'ed chunk */ #define chunk_is_mmapped(p) ((p)->size & IS_MMAPPED) /* set/clear chunk as in use without otherwise disturbing */ #define set_inuse(p)\ ((mchunkptr)(((char*)(p)) + ((p)->size & ~PREV_INUSE)))->size |= PREV_INUSE #define clear_inuse(p)\ ((mchunkptr)(((char*)(p)) + ((p)->size & ~PREV_INUSE)))->size &= ~(PREV_INUSE) /* check/set/clear inuse bits in known places */ #define inuse_bit_at_offset(p, s)\ (((mchunkptr)(((char*)(p)) + (s)))->size & PREV_INUSE) #define set_inuse_bit_at_offset(p, s)\ (((mchunkptr)(((char*)(p)) + (s)))->size |= PREV_INUSE) #define clear_inuse_bit_at_offset(p, s)\ (((mchunkptr)(((char*)(p)) + (s)))->size &= ~(PREV_INUSE)) /* Dealing with size fields */ /* Get size, ignoring use bits */ #define chunksize(p) ((p)->size & ~(SIZE_BITS)) /* Set size at head, without disturbing its use bit */ #define set_head_size(p, s) ((p)->size = (((p)->size & PREV_INUSE) | (s))) /* Set size/use ignoring previous bits in header */ #define set_head(p, s) ((p)->size = (s)) /* Set size at footer (only when chunk is not in use) */ #define set_foot(p, s) (((mchunkptr)((char*)(p) + (s)))->prev_size = (s)) /* Bins The bins, `av_' are an array of pairs of pointers serving as the heads of (initially empty) doubly-linked lists of chunks, laid out in a way so that each pair can be treated as if it were in a malloc_chunk. (This way, the fd/bk offsets for linking bin heads and chunks are the same). Bins for sizes < 512 bytes contain chunks of all the same size, spaced 8 bytes apart. Larger bins are approximately logarithmically spaced. (See the table below.) The `av_' array is never mentioned directly in the code, but instead via bin access macros. Bin layout: 64 bins of size 8 32 bins of size 64 16 bins of size 512 8 bins of size 4096 4 bins of size 32768 2 bins of size 262144 1 bin of size what's left There is actually a little bit of slop in the numbers in bin_index for the sake of speed. This makes no difference elsewhere. The special chunks `top' and `last_remainder' get their own bins, (this is implemented via yet more trickery with the av_ array), although `top' is never properly linked to its bin since it is always handled specially. */ #ifdef SEPARATE_OBJECTS #define av_ malloc_av_ #endif #define NAV 128 /* number of bins */ typedef struct malloc_chunk* mbinptr; /* access macros */ #define bin_at(i) ((mbinptr)((char*)&(av_[2*(i) + 2]) - 2*SIZE_SZ)) #define next_bin(b) ((mbinptr)((char*)(b) + 2 * sizeof(mbinptr))) #define prev_bin(b) ((mbinptr)((char*)(b) - 2 * sizeof(mbinptr))) /* The first 2 bins are never indexed. The corresponding av_ cells are instead used for bookkeeping. This is not to save space, but to simplify indexing, maintain locality, and avoid some initialization tests. */ #define top (bin_at(0)->fd) /* The topmost chunk */ #define last_remainder (bin_at(1)) /* remainder from last split */ /* Because top initially points to its own bin with initial zero size, thus forcing extension on the first malloc request, we avoid having any special code in malloc to check whether it even exists yet. But we still need to in malloc_extend_top. */ #define initial_top ((mchunkptr)(bin_at(0))) /* Helper macro to initialize bins */ #define IAV(i) bin_at(i), bin_at(i) #ifdef DEFINE_MALLOC STATIC mbinptr av_[NAV * 2 + 2] = { 0, 0, IAV(0), IAV(1), IAV(2), IAV(3), IAV(4), IAV(5), IAV(6), IAV(7), IAV(8), IAV(9), IAV(10), IAV(11), IAV(12), IAV(13), IAV(14), IAV(15), IAV(16), IAV(17), IAV(18), IAV(19), IAV(20), IAV(21), IAV(22), IAV(23), IAV(24), IAV(25), IAV(26), IAV(27), IAV(28), IAV(29), IAV(30), IAV(31), IAV(32), IAV(33), IAV(34), IAV(35), IAV(36), IAV(37), IAV(38), IAV(39), IAV(40), IAV(41), IAV(42), IAV(43), IAV(44), IAV(45), IAV(46), IAV(47), IAV(48), IAV(49), IAV(50), IAV(51), IAV(52), IAV(53), IAV(54), IAV(55), IAV(56), IAV(57), IAV(58), IAV(59), IAV(60), IAV(61), IAV(62), IAV(63), IAV(64), IAV(65), IAV(66), IAV(67), IAV(68), IAV(69), IAV(70), IAV(71), IAV(72), IAV(73), IAV(74), IAV(75), IAV(76), IAV(77), IAV(78), IAV(79), IAV(80), IAV(81), IAV(82), IAV(83), IAV(84), IAV(85), IAV(86), IAV(87), IAV(88), IAV(89), IAV(90), IAV(91), IAV(92), IAV(93), IAV(94), IAV(95), IAV(96), IAV(97), IAV(98), IAV(99), IAV(100), IAV(101), IAV(102), IAV(103), IAV(104), IAV(105), IAV(106), IAV(107), IAV(108), IAV(109), IAV(110), IAV(111), IAV(112), IAV(113), IAV(114), IAV(115), IAV(116), IAV(117), IAV(118), IAV(119), IAV(120), IAV(121), IAV(122), IAV(123), IAV(124), IAV(125), IAV(126), IAV(127) }; #else extern mbinptr av_[NAV * 2 + 2]; #endif /* field-extraction macros */ #define first(b) ((b)->fd) #define last(b) ((b)->bk) /* Indexing into bins */ #define bin_index(sz) \ (((((unsigned long)(sz)) >> 9) == 0) ? (((unsigned long)(sz)) >> 3): \ ((((unsigned long)(sz)) >> 9) <= 4) ? 56 + (((unsigned long)(sz)) >> 6): \ ((((unsigned long)(sz)) >> 9) <= 20) ? 91 + (((unsigned long)(sz)) >> 9): \ ((((unsigned long)(sz)) >> 9) <= 84) ? 110 + (((unsigned long)(sz)) >> 12): \ ((((unsigned long)(sz)) >> 9) <= 340) ? 119 + (((unsigned long)(sz)) >> 15): \ ((((unsigned long)(sz)) >> 9) <= 1364) ? 124 + (((unsigned long)(sz)) >> 18): \ 126) /* bins for chunks < 512 are all spaced SMALLBIN_WIDTH bytes apart, and hold identically sized chunks. This is exploited in malloc. */ #define MAX_SMALLBIN_SIZE 512 #define SMALLBIN_WIDTH 8 #define SMALLBIN_WIDTH_BITS 3 #define MAX_SMALLBIN (MAX_SMALLBIN_SIZE / SMALLBIN_WIDTH) - 1 #define smallbin_index(sz) (((unsigned long)(sz)) >> SMALLBIN_WIDTH_BITS) /* Requests are `small' if both the corresponding and the next bin are small */ #define is_small_request(nb) (nb < MAX_SMALLBIN_SIZE - SMALLBIN_WIDTH) /* To help compensate for the large number of bins, a one-level index structure is used for bin-by-bin searching. `binblocks' is a one-word bitvector recording whether groups of BINBLOCKWIDTH bins have any (possibly) non-empty bins, so they can be skipped over all at once during during traversals. The bits are NOT always cleared as soon as all bins in a block are empty, but instead only when all are noticed to be empty during traversal in malloc. */ #define BINBLOCKWIDTH 4 /* bins per block */ #define binblocks (bin_at(0)->size) /* bitvector of nonempty blocks */ /* bin<->block macros */ #define idx2binblock(ix) ((unsigned long)1 << (ix / BINBLOCKWIDTH)) #define mark_binblock(ii) (binblocks |= idx2binblock(ii)) #define clear_binblock(ii) (binblocks &= ~(idx2binblock(ii))) /* Other static bookkeeping data */ #ifdef SEPARATE_OBJECTS #define trim_threshold malloc_trim_threshold #define top_pad malloc_top_pad #define n_mmaps_max malloc_n_mmaps_max #define mmap_threshold malloc_mmap_threshold #define sbrk_base malloc_sbrk_base #define max_sbrked_mem malloc_max_sbrked_mem #define max_total_mem malloc_max_total_mem #define current_mallinfo malloc_current_mallinfo #define n_mmaps malloc_n_mmaps #define max_n_mmaps malloc_max_n_mmaps #define mmapped_mem malloc_mmapped_mem #define max_mmapped_mem malloc_max_mmapped_mem #endif /* variables holding tunable values */ #ifdef DEFINE_MALLOC STATIC unsigned long trim_threshold = DEFAULT_TRIM_THRESHOLD; STATIC unsigned long top_pad = DEFAULT_TOP_PAD; #if HAVE_MMAP STATIC unsigned int n_mmaps_max = DEFAULT_MMAP_MAX; STATIC unsigned long mmap_threshold = DEFAULT_MMAP_THRESHOLD; #endif /* The first value returned from sbrk */ STATIC char* sbrk_base = (char*)(-1); /* The maximum memory obtained from system via sbrk */ STATIC unsigned long max_sbrked_mem = 0; /* The maximum via either sbrk or mmap */ STATIC unsigned long max_total_mem = 0; /* internal working copy of mallinfo */ STATIC struct mallinfo current_mallinfo = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; #if HAVE_MMAP /* Tracking mmaps */ STATIC unsigned int n_mmaps = 0; STATIC unsigned int max_n_mmaps = 0; STATIC unsigned long mmapped_mem = 0; STATIC unsigned long max_mmapped_mem = 0; #endif #else /* ! DEFINE_MALLOC */ extern unsigned long trim_threshold; extern unsigned long top_pad; #if HAVE_MMAP extern unsigned int n_mmaps_max; extern unsigned long mmap_threshold; #endif extern char* sbrk_base; extern unsigned long max_sbrked_mem; extern unsigned long max_total_mem; extern struct mallinfo current_mallinfo; #if HAVE_MMAP extern unsigned int n_mmaps; extern unsigned int max_n_mmaps; extern unsigned long mmapped_mem; extern unsigned long max_mmapped_mem; #endif #endif /* ! DEFINE_MALLOC */ /* The total memory obtained from system via sbrk */ #define sbrked_mem (current_mallinfo.arena) /* Debugging support */ #if DEBUG /* These routines make a number of assertions about the states of data structures that should be true at all times. If any are not true, it's very likely that a user program has somehow trashed memory. (It's also possible that there is a coding error in malloc. In which case, please report it!) */ #if __STD_C static void do_check_chunk(mchunkptr p) #else static void do_check_chunk(p) mchunkptr p; #endif { INTERNAL_SIZE_T sz = p->size & ~PREV_INUSE; /* No checkable chunk is mmapped */ assert(!chunk_is_mmapped(p)); /* Check for legal address ... */ assert((char*)p >= sbrk_base); if (p != top) assert((char*)p + sz <= (char*)top); else assert((char*)p + sz <= sbrk_base + sbrked_mem); } #if __STD_C static void do_check_free_chunk(mchunkptr p) #else static void do_check_free_chunk(p) mchunkptr p; #endif { INTERNAL_SIZE_T sz = p->size & ~PREV_INUSE; mchunkptr next = chunk_at_offset(p, sz); do_check_chunk(p); /* Check whether it claims to be free ... */ assert(!inuse(p)); /* Unless a special marker, must have OK fields */ if ((long)sz >= (long)MINSIZE) { assert((sz & MALLOC_ALIGN_MASK) == 0); assert(aligned_OK(chunk2mem(p))); /* ... matching footer field */ assert(next->prev_size == sz); /* ... and is fully consolidated */ assert(prev_inuse(p)); assert (next == top || inuse(next)); /* ... and has minimally sane links */ assert(p->fd->bk == p); assert(p->bk->fd == p); } else /* markers are always of size SIZE_SZ */ assert(sz == SIZE_SZ); } #if __STD_C static void do_check_inuse_chunk(mchunkptr p) #else static void do_check_inuse_chunk(p) mchunkptr p; #endif { mchunkptr next = next_chunk(p); do_check_chunk(p); /* Check whether it claims to be in use ... */ assert(inuse(p)); /* ... and is surrounded by OK chunks. Since more things can be checked with free chunks than inuse ones, if an inuse chunk borders them and debug is on, it's worth doing them. */ if (!prev_inuse(p)) { mchunkptr prv = prev_chunk(p); assert(next_chunk(prv) == p); do_check_free_chunk(prv); } if (next == top) { assert(prev_inuse(next)); assert(chunksize(next) >= MINSIZE); } else if (!inuse(next)) do_check_free_chunk(next); } #if __STD_C static void do_check_malloced_chunk(mchunkptr p, INTERNAL_SIZE_T s) #else static void do_check_malloced_chunk(p, s) mchunkptr p; INTERNAL_SIZE_T s; #endif { INTERNAL_SIZE_T sz = p->size & ~PREV_INUSE; long room = long_sub_size_t(sz, s); do_check_inuse_chunk(p); /* Legal size ... */ assert((long)sz >= (long)MINSIZE); assert((sz & MALLOC_ALIGN_MASK) == 0); assert(room >= 0); assert(room < (long)MINSIZE); /* ... and alignment */ assert(aligned_OK(chunk2mem(p))); /* ... and was allocated at front of an available chunk */ assert(prev_inuse(p)); } #define check_free_chunk(P) do_check_free_chunk(P) #define check_inuse_chunk(P) do_check_inuse_chunk(P) #define check_chunk(P) do_check_chunk(P) #define check_malloced_chunk(P,N) do_check_malloced_chunk(P,N) #else #define check_free_chunk(P) #define check_inuse_chunk(P) #define check_chunk(P) #define check_malloced_chunk(P,N) #endif /* Macro-based internal utilities */ /* Linking chunks in bin lists. Call these only with variables, not arbitrary expressions, as arguments. */ /* Place chunk p of size s in its bin, in size order, putting it ahead of others of same size. */ #define frontlink(P, S, IDX, BK, FD) \ { \ if (S < MAX_SMALLBIN_SIZE) \ { \ IDX = smallbin_index(S); \ mark_binblock(IDX); \ BK = bin_at(IDX); \ FD = BK->fd; \ P->bk = BK; \ P->fd = FD; \ FD->bk = BK->fd = P; \ } \ else \ { \ IDX = bin_index(S); \ BK = bin_at(IDX); \ FD = BK->fd; \ if (FD == BK) mark_binblock(IDX); \ else \ { \ while (FD != BK && S < chunksize(FD)) FD = FD->fd; \ BK = FD->bk; \ } \ P->bk = BK; \ P->fd = FD; \ FD->bk = BK->fd = P; \ } \ } /* take a chunk off a list */ #define unlink(P, BK, FD) \ { \ BK = P->bk; \ FD = P->fd; \ FD->bk = BK; \ BK->fd = FD; \ } \ /* Place p as the last remainder */ #define link_last_remainder(P) \ { \ last_remainder->fd = last_remainder->bk = P; \ P->fd = P->bk = last_remainder; \ } /* Clear the last_remainder bin */ #define clear_last_remainder \ (last_remainder->fd = last_remainder->bk = last_remainder) /* Routines dealing with mmap(). */ #if HAVE_MMAP #ifdef DEFINE_MALLOC #if __STD_C static mchunkptr mmap_chunk(size_t size) #else static mchunkptr mmap_chunk(size) size_t size; #endif { size_t page_mask = malloc_getpagesize - 1; mchunkptr p; #ifndef MAP_ANONYMOUS static int fd = -1; #endif if(n_mmaps >= n_mmaps_max) return 0; /* too many regions */ /* For mmapped chunks, the overhead is one SIZE_SZ unit larger, because * there is no following chunk whose prev_size field could be used. */ size = (size + SIZE_SZ + page_mask) & ~page_mask; #ifdef MAP_ANONYMOUS p = (mchunkptr)mmap(0, size, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); #else /* !MAP_ANONYMOUS */ if (fd < 0) { fd = open("/dev/zero", O_RDWR); if(fd < 0) return 0; } p = (mchunkptr)mmap(0, size, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0); #endif if(p == (mchunkptr)-1) return 0; n_mmaps++; if (n_mmaps > max_n_mmaps) max_n_mmaps = n_mmaps; /* We demand that eight bytes into a page must be 8-byte aligned. */ assert(aligned_OK(chunk2mem(p))); /* The offset to the start of the mmapped region is stored * in the prev_size field of the chunk; normally it is zero, * but that can be changed in memalign(). */ p->prev_size = 0; set_head(p, size|IS_MMAPPED); mmapped_mem += size; if ((unsigned long)mmapped_mem > (unsigned long)max_mmapped_mem) max_mmapped_mem = mmapped_mem; if ((unsigned long)(mmapped_mem + sbrked_mem) > (unsigned long)max_total_mem) max_total_mem = mmapped_mem + sbrked_mem; return p; } #endif /* DEFINE_MALLOC */ #ifdef SEPARATE_OBJECTS #define munmap_chunk malloc_munmap_chunk #endif #ifdef DEFINE_FREE #if __STD_C STATIC void munmap_chunk(mchunkptr p) #else STATIC void munmap_chunk(p) mchunkptr p; #endif { INTERNAL_SIZE_T size = chunksize(p); int ret; assert (chunk_is_mmapped(p)); assert(! ((char*)p >= sbrk_base && (char*)p < sbrk_base + sbrked_mem)); assert((n_mmaps > 0)); assert(((p->prev_size + size) & (malloc_getpagesize-1)) == 0); n_mmaps--; mmapped_mem -= (size + p->prev_size); ret = munmap((char *)p - p->prev_size, size + p->prev_size); /* munmap returns non-zero on failure */ assert(ret == 0); } #else /* ! DEFINE_FREE */ #if __STD_C extern void munmap_chunk(mchunkptr); #else extern void munmap_chunk(); #endif #endif /* ! DEFINE_FREE */ #if HAVE_MREMAP #ifdef DEFINE_REALLOC #if __STD_C static mchunkptr mremap_chunk(mchunkptr p, size_t new_size) #else static mchunkptr mremap_chunk(p, new_size) mchunkptr p; size_t new_size; #endif { size_t page_mask = malloc_getpagesize - 1; INTERNAL_SIZE_T offset = p->prev_size; INTERNAL_SIZE_T size = chunksize(p); char *cp; assert (chunk_is_mmapped(p)); assert(! ((char*)p >= sbrk_base && (char*)p < sbrk_base + sbrked_mem)); assert((n_mmaps > 0)); assert(((size + offset) & (malloc_getpagesize-1)) == 0); /* Note the extra SIZE_SZ overhead as in mmap_chunk(). */ new_size = (new_size + offset + SIZE_SZ + page_mask) & ~page_mask; cp = (char *)mremap((char *)p - offset, size + offset, new_size, 1); if (cp == (char *)-1) return 0; p = (mchunkptr)(cp + offset); assert(aligned_OK(chunk2mem(p))); assert((p->prev_size == offset)); set_head(p, (new_size - offset)|IS_MMAPPED); mmapped_mem -= size + offset; mmapped_mem += new_size; if ((unsigned long)mmapped_mem > (unsigned long)max_mmapped_mem) max_mmapped_mem = mmapped_mem; if ((unsigned long)(mmapped_mem + sbrked_mem) > (unsigned long)max_total_mem) max_total_mem = mmapped_mem + sbrked_mem; return p; } #endif /* DEFINE_REALLOC */ #endif /* HAVE_MREMAP */ #endif /* HAVE_MMAP */ #ifdef DEFINE_MALLOC /* Extend the top-most chunk by obtaining memory from system. Main interface to sbrk (but see also malloc_trim). */ #if __STD_C static void malloc_extend_top(INTERNAL_SIZE_T nb) #else static void malloc_extend_top(nb) RDECL INTERNAL_SIZE_T nb; #endif { char* brk; /* return value from sbrk */ INTERNAL_SIZE_T front_misalign; /* unusable bytes at front of sbrked space */ INTERNAL_SIZE_T correction; /* bytes for 2nd sbrk call */ int correction_failed = 0; /* whether we should relax the assertion */ char* new_brk; /* return of 2nd sbrk call */ INTERNAL_SIZE_T top_size; /* new size of top chunk */ mchunkptr old_top = top; /* Record state of old top */ INTERNAL_SIZE_T old_top_size = chunksize(old_top); char* old_end = (char*)(chunk_at_offset(old_top, old_top_size)); /* Pad request with top_pad plus minimal overhead */ INTERNAL_SIZE_T sbrk_size = nb + top_pad + MINSIZE; unsigned long pagesz = malloc_getpagesize; /* If not the first time through, round to preserve page boundary */ /* Otherwise, we need to correct to a page size below anyway. */ /* (We also correct below if an intervening foreign sbrk call.) */ if (sbrk_base != (char*)(-1)) sbrk_size = (sbrk_size + (pagesz - 1)) & ~(pagesz - 1); brk = (char*)(MORECORE (sbrk_size)); /* Fail if sbrk failed or if a foreign sbrk call killed our space */ if (brk == (char*)(MORECORE_FAILURE) || (brk < old_end && old_top != initial_top)) return; sbrked_mem += sbrk_size; if (brk == old_end /* can just add bytes to current top, unless previous correction failed */ && ((POINTER_UINT)old_end & (pagesz - 1)) == 0) { top_size = sbrk_size + old_top_size; set_head(top, top_size | PREV_INUSE); } else { if (sbrk_base == (char*)(-1)) /* First time through. Record base */ sbrk_base = brk; else /* Someone else called sbrk(). Count those bytes as sbrked_mem. */ sbrked_mem += brk - (char*)old_end; /* Guarantee alignment of first new chunk made from this space */ front_misalign = (POINTER_UINT)chunk2mem(brk) & MALLOC_ALIGN_MASK; if (front_misalign > 0) { correction = (MALLOC_ALIGNMENT) - front_misalign; brk += correction; } else correction = 0; /* Guarantee the next brk will be at a page boundary */ correction += pagesz - ((POINTER_UINT)(brk + sbrk_size) & (pagesz - 1)); /* To guarantee page boundary, correction should be less than pagesz */ correction &= (pagesz - 1); /* Allocate correction */ new_brk = (char*)(MORECORE (correction)); if (new_brk == (char*)(MORECORE_FAILURE)) { correction = 0; correction_failed = 1; new_brk = brk + sbrk_size; if (front_misalign > 0) new_brk -= (MALLOC_ALIGNMENT) - front_misalign; } sbrked_mem += correction; top = (mchunkptr)brk; top_size = new_brk - brk + correction; set_head(top, top_size | PREV_INUSE); if (old_top != initial_top) { /* There must have been an intervening foreign sbrk call. */ /* A double fencepost is necessary to prevent consolidation */ /* If not enough space to do this, then user did something very wrong */ if (old_top_size < MINSIZE) { set_head(top, PREV_INUSE); /* will force null return from malloc */ return; } /* Also keep size a multiple of MALLOC_ALIGNMENT */ old_top_size = (old_top_size - 3*SIZE_SZ) & ~MALLOC_ALIGN_MASK; set_head_size(old_top, old_top_size); chunk_at_offset(old_top, old_top_size )->size = SIZE_SZ|PREV_INUSE; chunk_at_offset(old_top, old_top_size + SIZE_SZ)->size = SIZE_SZ|PREV_INUSE; /* If possible, release the rest. */ if (old_top_size >= MINSIZE) __malloc_free(chunk2mem(old_top)); } } if ((unsigned long)sbrked_mem > (unsigned long)max_sbrked_mem) max_sbrked_mem = sbrked_mem; #if HAVE_MMAP if ((unsigned long)(mmapped_mem + sbrked_mem) > (unsigned long)max_total_mem) max_total_mem = mmapped_mem + sbrked_mem; #else if ((unsigned long)(sbrked_mem) > (unsigned long)max_total_mem) max_total_mem = sbrked_mem; #endif /* We always land on a page boundary */ assert(((unsigned long)((char*)top + top_size) & (pagesz - 1)) == 0 || correction_failed); (void) correction_failed; } #endif /* DEFINE_MALLOC */ /* Main public routines */ #ifdef DEFINE_MALLOC /* Malloc Algorthim: The requested size is first converted into a usable form, `nb'. This currently means to add 4 bytes overhead plus possibly more to obtain 8-byte alignment and/or to obtain a size of at least MINSIZE (currently 16 bytes), the smallest allocatable size. (All fits are considered `exact' if they are within MINSIZE bytes.) From there, the first successful of the following steps is taken: 1. The bin corresponding to the request size is scanned, and if a chunk of exactly the right size is found, it is taken. 2. The most recently remaindered chunk is used if it is big enough. This is a form of (roving) first fit, used only in the absence of exact fits. Runs of consecutive requests use the remainder of the chunk used for the previous such request whenever possible. This limited use of a first-fit style allocation strategy tends to give contiguous chunks coextensive lifetimes, which improves locality and can reduce fragmentation in the long run. 3. Other bins are scanned in increasing size order, using a chunk big enough to fulfill the request, and splitting off any remainder. This search is strictly by best-fit; i.e., the smallest (with ties going to approximately the least recently used) chunk that fits is selected. 4. If large enough, the chunk bordering the end of memory (`top') is split off. (This use of `top' is in accord with the best-fit search rule. In effect, `top' is treated as larger (and thus less well fitting) than any other available chunk since it can be extended to be as large as necessary (up to system limitations). 5. If the request size meets the mmap threshold and the system supports mmap, and there are few enough currently allocated mmapped regions, and a call to mmap succeeds, the request is allocated via direct memory mapping. 6. Otherwise, the top of memory is extended by obtaining more space from the system (normally using sbrk, but definable to anything else via the MORECORE macro). Memory is gathered from the system (in system page-sized units) in a way that allows chunks obtained across different sbrk calls to be consolidated, but does not require contiguous memory. Thus, it should be safe to intersperse mallocs with other sbrk calls. All allocations are made from the the `lowest' part of any found chunk. (The implementation invariant is that prev_inuse is always true of any allocated chunk; i.e., that each allocated chunk borders either a previously allocated and still in-use chunk, or the base of its memory arena.) */ #if __STD_C Void_t* mALLOc(size_t bytes) #else Void_t* mALLOc(bytes) RDECL size_t bytes; #endif { #ifdef MALLOC_PROVIDED return malloc (bytes); // Make sure that the pointer returned by malloc is returned back. #else mchunkptr victim; /* inspected/selected chunk */ INTERNAL_SIZE_T victim_size; /* its size */ int idx; /* index for bin traversal */ mbinptr bin; /* associated bin */ mchunkptr remainder; /* remainder from a split */ long remainder_size; /* its size */ int remainder_index; /* its bin index */ unsigned long block; /* block traverser bit */ int startidx; /* first bin of a traversed block */ mchunkptr fwd; /* misc temp for linking */ mchunkptr bck; /* misc temp for linking */ mbinptr q; /* misc temp */ INTERNAL_SIZE_T nb = request2size(bytes); /* padded request size; */ /* Check for overflow and just fail, if so. */ if (nb > INT_MAX || nb < bytes) { errno = ENOMEM; return 0; } MALLOC_LOCK; /* Check for exact match in a bin */ if (is_small_request(nb)) /* Faster version for small requests */ { idx = smallbin_index(nb); /* No traversal or size check necessary for small bins. */ q = bin_at(idx); victim = last(q); #if MALLOC_ALIGN != 16 /* Also scan the next one, since it would have a remainder < MINSIZE */ if (victim == q) { q = next_bin(q); victim = last(q); } #endif if (victim != q) { victim_size = chunksize(victim); unlink(victim, bck, fwd); set_inuse_bit_at_offset(victim, victim_size); check_malloced_chunk(victim, nb); MALLOC_UNLOCK; return chunk2mem(victim); } idx += 2; /* Set for bin scan below. We've already scanned 2 bins. */ } else { idx = bin_index(nb); bin = bin_at(idx); for (victim = last(bin); victim != bin; victim = victim->bk) { victim_size = chunksize(victim); remainder_size = long_sub_size_t(victim_size, nb); if (remainder_size >= (long)MINSIZE) /* too big */ { --idx; /* adjust to rescan below after checking last remainder */ break; } else if (remainder_size >= 0) /* exact fit */ { unlink(victim, bck, fwd); set_inuse_bit_at_offset(victim, victim_size); check_malloced_chunk(victim, nb); MALLOC_UNLOCK; return chunk2mem(victim); } } ++idx; } /* Try to use the last split-off remainder */ if ( (victim = last_remainder->fd) != last_remainder) { victim_size = chunksize(victim); remainder_size = long_sub_size_t(victim_size, nb); if (remainder_size >= (long)MINSIZE) /* re-split */ { remainder = chunk_at_offset(victim, nb); set_head(victim, nb | PREV_INUSE); link_last_remainder(remainder); set_head(remainder, remainder_size | PREV_INUSE); set_foot(remainder, remainder_size); check_malloced_chunk(victim, nb); MALLOC_UNLOCK; return chunk2mem(victim); } clear_last_remainder; if (remainder_size >= 0) /* exhaust */ { set_inuse_bit_at_offset(victim, victim_size); check_malloced_chunk(victim, nb); MALLOC_UNLOCK; return chunk2mem(victim); } /* Else place in bin */ frontlink(victim, victim_size, remainder_index, bck, fwd); } /* If there are any possibly nonempty big-enough blocks, search for best fitting chunk by scanning bins in blockwidth units. */ if ( (block = idx2binblock(idx)) <= binblocks) { /* Get to the first marked block */ if ( (block & binblocks) == 0) { /* force to an even block boundary */ idx = (idx & ~(BINBLOCKWIDTH - 1)) + BINBLOCKWIDTH; block <<= 1; while ((block & binblocks) == 0) { idx += BINBLOCKWIDTH; block <<= 1; } } /* For each possibly nonempty block ... */ for (;;) { startidx = idx; /* (track incomplete blocks) */ q = bin = bin_at(idx); /* For each bin in this block ... */ do { /* Find and use first big enough chunk ... */ for (victim = last(bin); victim != bin; victim = victim->bk) { victim_size = chunksize(victim); remainder_size = long_sub_size_t(victim_size, nb); if (remainder_size >= (long)MINSIZE) /* split */ { remainder = chunk_at_offset(victim, nb); set_head(victim, nb | PREV_INUSE); unlink(victim, bck, fwd); link_last_remainder(remainder); set_head(remainder, remainder_size | PREV_INUSE); set_foot(remainder, remainder_size); check_malloced_chunk(victim, nb); MALLOC_UNLOCK; return chunk2mem(victim); } else if (remainder_size >= 0) /* take */ { set_inuse_bit_at_offset(victim, victim_size); unlink(victim, bck, fwd); check_malloced_chunk(victim, nb); MALLOC_UNLOCK; return chunk2mem(victim); } } bin = next_bin(bin); #if MALLOC_ALIGN == 16 if (idx < MAX_SMALLBIN) { bin = next_bin(bin); ++idx; } #endif } while ((++idx & (BINBLOCKWIDTH - 1)) != 0); /* Clear out the block bit. */ do /* Possibly backtrack to try to clear a partial block */ { if ((startidx & (BINBLOCKWIDTH - 1)) == 0) { binblocks &= ~block; break; } --startidx; q = prev_bin(q); } while (first(q) == q); /* Get to the next possibly nonempty block */ if ( (block <<= 1) <= binblocks && (block != 0) ) { while ((block & binblocks) == 0) { idx += BINBLOCKWIDTH; block <<= 1; } } else break; } } /* Try to use top chunk */ /* Require that there be a remainder, ensuring top always exists */ remainder_size = long_sub_size_t(chunksize(top), nb); if (chunksize(top) < nb || remainder_size < (long)MINSIZE) { #if HAVE_MMAP /* If big and would otherwise need to extend, try to use mmap instead */ if ((unsigned long)nb >= (unsigned long)mmap_threshold && (victim = mmap_chunk(nb)) != 0) { MALLOC_UNLOCK; return chunk2mem(victim); } #endif /* Try to extend */ malloc_extend_top(nb); remainder_size = long_sub_size_t(chunksize(top), nb); if (chunksize(top) < nb || remainder_size < (long)MINSIZE) { MALLOC_UNLOCK; return 0; /* propagate failure */ } } victim = top; set_head(victim, nb | PREV_INUSE); top = chunk_at_offset(victim, nb); set_head(top, remainder_size | PREV_INUSE); check_malloced_chunk(victim, nb); MALLOC_UNLOCK; return chunk2mem(victim); #endif /* MALLOC_PROVIDED */ } #endif /* DEFINE_MALLOC */ #ifdef DEFINE_FREE /* free() algorithm : cases: 1. free(0) has no effect. 2. If the chunk was allocated via mmap, it is release via munmap(). 3. If a returned chunk borders the current high end of memory, it is consolidated into the top, and if the total unused topmost memory exceeds the trim threshold, malloc_trim is called. 4. Other chunks are consolidated as they arrive, and placed in corresponding bins. (This includes the case of consolidating with the current `last_remainder'). */ #if __STD_C void fREe(Void_t* mem) #else void fREe(mem) RDECL Void_t* mem; #endif { #ifdef MALLOC_PROVIDED free (mem); #else mchunkptr p; /* chunk corresponding to mem */ INTERNAL_SIZE_T hd; /* its head field */ INTERNAL_SIZE_T sz; /* its size */ int idx; /* its bin index */ mchunkptr next; /* next contiguous chunk */ INTERNAL_SIZE_T nextsz; /* its size */ INTERNAL_SIZE_T prevsz; /* size of previous contiguous chunk */ mchunkptr bck; /* misc temp for linking */ mchunkptr fwd; /* misc temp for linking */ int islr; /* track whether merging with last_remainder */ if (mem == 0) /* free(0) has no effect */ return; MALLOC_LOCK; p = mem2chunk(mem); hd = p->size; #if HAVE_MMAP if (hd & IS_MMAPPED) /* release mmapped memory. */ { munmap_chunk(p); MALLOC_UNLOCK; return; } #endif check_inuse_chunk(p); sz = hd & ~PREV_INUSE; next = chunk_at_offset(p, sz); nextsz = chunksize(next); if (next == top) /* merge with top */ { sz += nextsz; if (!(hd & PREV_INUSE)) /* consolidate backward */ { prevsz = p->prev_size; p = chunk_at_offset(p, -prevsz); sz += prevsz; unlink(p, bck, fwd); } set_head(p, sz | PREV_INUSE); top = p; if ((unsigned long)(sz) >= (unsigned long)trim_threshold) malloc_trim(top_pad); MALLOC_UNLOCK; return; } set_head(next, nextsz); /* clear inuse bit */ islr = 0; if (!(hd & PREV_INUSE)) /* consolidate backward */ { prevsz = p->prev_size; p = chunk_at_offset(p, -prevsz); sz += prevsz; if (p->fd == last_remainder) /* keep as last_remainder */ islr = 1; else unlink(p, bck, fwd); } if (!(inuse_bit_at_offset(next, nextsz))) /* consolidate forward */ { sz += nextsz; if (!islr && next->fd == last_remainder) /* re-insert last_remainder */ { islr = 1; link_last_remainder(p); } else unlink(next, bck, fwd); } set_head(p, sz | PREV_INUSE); set_foot(p, sz); if (!islr) frontlink(p, sz, idx, bck, fwd); MALLOC_UNLOCK; #endif /* MALLOC_PROVIDED */ } #ifdef HAVE_ALIAS_ATTRIBUTE #pragma GCC diagnostic push #ifndef __clang__ #pragma GCC diagnostic ignored "-Wmissing-attributes" #endif __strong_reference(free, __malloc_free); #pragma GCC diagnostic pop #endif #endif /* DEFINE_FREE */ #ifdef DEFINE_REALLOC /* Realloc algorithm: Chunks that were obtained via mmap cannot be extended or shrunk unless HAVE_MREMAP is defined, in which case mremap is used. Otherwise, if their reallocation is for additional space, they are copied. If for less, they are just left alone. Otherwise, if the reallocation is for additional space, and the chunk can be extended, it is, else a malloc-copy-free sequence is taken. There are several different ways that a chunk could be extended. All are tried: * Extending forward into following adjacent free chunk. * Shifting backwards, joining preceding adjacent space * Both shifting backwards and extending forward. * Extending into newly sbrked space Unless the #define REALLOC_ZERO_BYTES_FREES is set, realloc with a size argument of zero (re)allocates a minimum-sized chunk. If the reallocation is for less space, and the new request is for a `small' (<512 bytes) size, then the newly unused space is lopped off and freed. The old unix realloc convention of allowing the last-free'd chunk to be used as an argument to realloc is no longer supported. I don't know of any programs still relying on this feature, and allowing it would also allow too many other incorrect usages of realloc to be sensible. */ #if __STD_C Void_t* rEALLOc(Void_t* oldmem, size_t bytes) #else Void_t* rEALLOc(oldmem, bytes) RDECL Void_t* oldmem; size_t bytes; #endif { #ifdef MALLOC_PROVIDED realloc (oldmem, bytes); #else INTERNAL_SIZE_T nb; /* padded request size */ mchunkptr oldp; /* chunk corresponding to oldmem */ INTERNAL_SIZE_T oldsize; /* its size */ mchunkptr newp; /* chunk to return */ INTERNAL_SIZE_T newsize; /* its size */ Void_t* newmem; /* corresponding user mem */ mchunkptr next; /* next contiguous chunk after oldp */ INTERNAL_SIZE_T nextsize; /* its size */ mchunkptr prev; /* previous contiguous chunk before oldp */ INTERNAL_SIZE_T prevsize; /* its size */ mchunkptr remainder; /* holds split off extra space from newp */ INTERNAL_SIZE_T remainder_size; /* its size */ mchunkptr bck; /* misc temp for linking */ mchunkptr fwd; /* misc temp for linking */ #ifdef REALLOC_ZERO_BYTES_FREES if (bytes == 0) { fREe(oldmem); return 0; } #endif /* realloc of null is supposed to be same as malloc */ if (oldmem == 0) return mALLOc(bytes); MALLOC_LOCK; newp = oldp = mem2chunk(oldmem); newsize = oldsize = chunksize(oldp); nb = request2size(bytes); /* Check for overflow and just fail, if so. */ if (nb > INT_MAX || nb < bytes) { errno = ENOMEM; return 0; } #if HAVE_MMAP if (chunk_is_mmapped(oldp)) { #if HAVE_MREMAP newp = mremap_chunk(oldp, nb); if(newp) { MALLOC_UNLOCK; return chunk2mem(newp); } #endif /* Note the extra SIZE_SZ overhead. */ if(oldsize - SIZE_SZ >= nb) { MALLOC_UNLOCK; return oldmem; /* do nothing */ } /* Must alloc, copy, free. */ newmem = mALLOc(bytes); if (newmem == 0) { MALLOC_UNLOCK; return 0; /* propagate failure */ } MALLOC_COPY(newmem, oldmem, oldsize - 2*SIZE_SZ); munmap_chunk(oldp); MALLOC_UNLOCK; return newmem; } #endif check_inuse_chunk(oldp); if ((long)(oldsize) < (long)(nb)) { /* Try expanding forward */ next = chunk_at_offset(oldp, oldsize); if (next == top || !inuse(next)) { nextsize = chunksize(next); /* Forward into top only if a remainder */ if (next == top) { if ((long)(nextsize + newsize) >= (long)(nb + MINSIZE)) { newsize += nextsize; top = chunk_at_offset(oldp, nb); set_head(top, (newsize - nb) | PREV_INUSE); set_head_size(oldp, nb); MALLOC_UNLOCK; return chunk2mem(oldp); } } /* Forward into next chunk */ else if (((long)(nextsize + newsize) >= (long)(nb))) { unlink(next, bck, fwd); newsize += nextsize; goto split; } } else { next = 0; nextsize = 0; } /* Try shifting backwards. */ if (!prev_inuse(oldp)) { prev = prev_chunk(oldp); prevsize = chunksize(prev); /* try forward + backward first to save a later consolidation */ if (next != 0) { /* into top */ if (next == top) { if ((long)(nextsize + prevsize + newsize) >= (long)(nb + MINSIZE)) { unlink(prev, bck, fwd); newp = prev; newsize += prevsize + nextsize; newmem = chunk2mem(newp); MALLOC_COPY(newmem, oldmem, oldsize - SIZE_SZ); top = chunk_at_offset(newp, nb); set_head(top, (newsize - nb) | PREV_INUSE); set_head_size(newp, nb); MALLOC_UNLOCK; return newmem; } } /* into next chunk */ else if (((long)(nextsize + prevsize + newsize) >= (long)(nb))) { unlink(next, bck, fwd); unlink(prev, bck, fwd); newp = prev; newsize += nextsize + prevsize; newmem = chunk2mem(newp); MALLOC_COPY(newmem, oldmem, oldsize - SIZE_SZ); goto split; } } /* backward only */ if (prev != 0 && (long)(prevsize + newsize) >= (long)nb) { unlink(prev, bck, fwd); newp = prev; newsize += prevsize; newmem = chunk2mem(newp); MALLOC_COPY(newmem, oldmem, oldsize - SIZE_SZ); goto split; } } /* Must allocate */ newmem = mALLOc (bytes); if (newmem == 0) /* propagate failure */ { MALLOC_UNLOCK; return 0; } /* Avoid copy if newp is next chunk after oldp. */ /* (This can only happen when new chunk is sbrk'ed.) */ if ( (newp = mem2chunk(newmem)) == next_chunk(oldp)) { newsize += chunksize(newp); newp = oldp; goto split; } /* Otherwise copy, free, and exit */ MALLOC_COPY(newmem, oldmem, oldsize - SIZE_SZ); __malloc_free(oldmem); MALLOC_UNLOCK; return newmem; } split: /* split off extra room in old or expanded chunk */ remainder_size = long_sub_size_t(newsize, nb); if (remainder_size >= (long)MINSIZE) /* split off remainder */ { remainder = chunk_at_offset(newp, nb); set_head_size(newp, nb); set_head(remainder, remainder_size | PREV_INUSE); set_inuse_bit_at_offset(remainder, remainder_size); __malloc_free(chunk2mem(remainder)); /* let free() deal with it */ } else { set_head_size(newp, newsize); set_inuse_bit_at_offset(newp, newsize); } check_inuse_chunk(newp); MALLOC_UNLOCK; return chunk2mem(newp); #endif /* MALLOC_PROVIDED */ } #endif /* DEFINE_REALLOC */ #ifdef DEFINE_MEMALIGN /* memalign algorithm: memalign requests more than enough space from malloc, finds a spot within that chunk that meets the alignment request, and then possibly frees the leading and trailing space. The alignment argument must be a power of two. This property is not checked by memalign, so misuse may result in random runtime errors. 8-byte alignment is guaranteed by normal malloc calls, so don't bother calling memalign with an argument of 8 or less. Overreliance on memalign is a sure way to fragment space. */ #if __STD_C Void_t* mEMALIGn(size_t alignment, size_t bytes) #else Void_t* mEMALIGn(alignment, bytes) RDECL size_t alignment; size_t bytes; #endif { INTERNAL_SIZE_T nb; /* padded request size */ char* m; /* memory returned by malloc call */ mchunkptr p; /* corresponding chunk */ char* brk; /* alignment point within p */ mchunkptr newp; /* chunk to return */ INTERNAL_SIZE_T newsize; /* its size */ INTERNAL_SIZE_T leadsize; /* leading space befor alignment point */ mchunkptr remainder; /* spare room at end to split off */ long remainder_size; /* its size */ /* If need less alignment than we give anyway, just relay to malloc */ if (alignment <= MALLOC_ALIGNMENT) return mALLOc(bytes); /* Otherwise, ensure that it is at least a minimum chunk size */ if (alignment < MINSIZE) alignment = MINSIZE; /* Call malloc with worst case padding to hit alignment. */ nb = request2size(bytes); /* Check for overflow. */ if (nb > __SIZE_MAX__ - (alignment + MINSIZE) || nb < bytes) { errno = ENOMEM; return 0; } m = (char*)(mALLOc(nb + alignment + MINSIZE)); if (m == 0) return 0; /* propagate failure */ MALLOC_LOCK; p = mem2chunk(m); if ((((unsigned long)(m)) % alignment) == 0) /* aligned */ { #if HAVE_MMAP if(chunk_is_mmapped(p)) { MALLOC_UNLOCK; return chunk2mem(p); /* nothing more to do */ } #endif } else /* misaligned */ { /* Find an aligned spot inside chunk. Since we need to give back leading space in a chunk of at least MINSIZE, if the first calculation places us at a spot with less than MINSIZE leader, we can move to the next aligned spot -- we've allocated enough total room so that this is always possible. */ brk = (char*)mem2chunk(((unsigned long)(m + alignment - 1)) & -alignment); if ((long)(brk - (char*)(p)) < (long)MINSIZE) brk = brk + alignment; newp = (mchunkptr)brk; leadsize = brk - (char*)(p); newsize = chunksize(p) - leadsize; #if HAVE_MMAP if(chunk_is_mmapped(p)) { newp->prev_size = p->prev_size + leadsize; set_head(newp, newsize|IS_MMAPPED); MALLOC_UNLOCK; return chunk2mem(newp); } #endif /* give back leader, use the rest */ set_head(newp, newsize | PREV_INUSE); set_inuse_bit_at_offset(newp, newsize); set_head_size(p, leadsize); __malloc_free(chunk2mem(p)); p = newp; assert (newsize >= nb && (((unsigned long)(chunk2mem(p))) % alignment) == 0); } /* Also give back spare room at the end */ remainder_size = long_sub_size_t(chunksize(p), nb); if (remainder_size >= (long)MINSIZE) { remainder = chunk_at_offset(p, nb); set_head(remainder, remainder_size | PREV_INUSE); set_head_size(p, nb); __malloc_free(chunk2mem(remainder)); } check_inuse_chunk(p); MALLOC_UNLOCK; return chunk2mem(p); } #ifdef HAVE_ALIAS_ATTRIBUTE __strong_reference(memalign, aligned_alloc); #endif #endif /* DEFINE_MEMALIGN */ #ifdef DEFINE_VALLOC /* valloc just invokes memalign with alignment argument equal to the page size of the system (or as near to this as can be figured out from all the includes/defines above.) */ #if __STD_C Void_t* vALLOc(size_t bytes) #else Void_t* vALLOc(bytes) RDECL size_t bytes; #endif { return mEMALIGn (malloc_getpagesize, bytes); } #endif /* DEFINE_VALLOC */ #ifdef DEFINE_PVALLOC /* pvalloc just invokes valloc for the nearest pagesize that will accommodate request */ #if __STD_C Void_t* pvALLOc(size_t bytes) #else Void_t* pvALLOc(bytes) RDECL size_t bytes; #endif { size_t pagesize = malloc_getpagesize; if (bytes > __SIZE_MAX__ - pagesize) { errno = ENOMEM; return 0; } return mEMALIGn (pagesize, (bytes + pagesize - 1) & ~(pagesize - 1)); } #endif /* DEFINE_PVALLOC */ #ifdef DEFINE_CALLOC #include "mul_overflow.h" /* calloc calls malloc, then zeroes out the allocated chunk. */ #if __STD_C Void_t* cALLOc(size_t n, size_t elem_size) #else Void_t* cALLOc(n, elem_size) RDECL size_t n; size_t elem_size; #endif { mchunkptr p; INTERNAL_SIZE_T csz; INTERNAL_SIZE_T sz; #if MORECORE_CLEARS mchunkptr oldtop; INTERNAL_SIZE_T oldtopsize; #endif Void_t* mem; if (mul_overflow((INTERNAL_SIZE_T) n, (INTERNAL_SIZE_T) elem_size, &sz)) { errno = ENOMEM; return 0; } /* check if expand_top called, in which case don't need to clear */ #if MORECORE_CLEARS MALLOC_LOCK; oldtop = top; oldtopsize = chunksize(top); #endif mem = mALLOc (sz); if (mem == 0) { #if MORECORE_CLEARS MALLOC_UNLOCK; #endif return 0; } else { p = mem2chunk(mem); /* Two optional cases in which clearing not necessary */ #if HAVE_MMAP if (chunk_is_mmapped(p)) { #if MORECORE_CLEARS MALLOC_UNLOCK; #endif return mem; } #endif csz = chunksize(p); #if MORECORE_CLEARS if (p == oldtop && csz > oldtopsize) { /* clear only the bytes from non-freshly-sbrked memory */ csz = oldtopsize; } MALLOC_UNLOCK; #endif MALLOC_ZERO(mem, csz - SIZE_SZ); return mem; } } #endif /* DEFINE_CALLOC */ #if defined(DEFINE_CFREE) && !defined(__CYGWIN__) /* cfree just calls free. It is needed/defined on some systems that pair it with calloc, presumably for odd historical reasons. */ #if !defined(INTERNAL_LINUX_C_LIB) || !defined(__ELF__) #if !defined(INTERNAL_NEWLIB) || !defined(_REENT_ONLY) #if __STD_C void cfree(Void_t *mem) #else void cfree(mem) Void_t *mem; #endif { fREe(mem); } #endif #endif #endif /* DEFINE_CFREE */ #ifdef DEFINE_FREE /* Malloc_trim gives memory back to the system (via negative arguments to sbrk) if there is unused memory at the `high' end of the malloc pool. You can call this after freeing large blocks of memory to potentially reduce the system-level memory requirements of a program. However, it cannot guarantee to reduce memory. Under some allocation patterns, some large free blocks of memory will be locked between two used chunks, so they cannot be given back to the system. The `pad' argument to malloc_trim represents the amount of free trailing space to leave untrimmed. If this argument is zero, only the minimum amount of memory to maintain internal data structures will be left (one page or less). Non-zero arguments can be supplied to maintain enough trailing space to service future expected allocations without having to re-obtain memory from the system. Malloc_trim returns 1 if it actually released any memory, else 0. */ #if __STD_C int malloc_trim(size_t pad) #else int malloc_trim(pad) RDECL size_t pad; #endif { long top_size; /* Amount of top-most memory */ long extra; /* Amount to release */ char* current_brk; /* address returned by pre-check sbrk call */ char* new_brk; /* address returned by negative sbrk call */ unsigned long pagesz = malloc_getpagesize; MALLOC_LOCK; top_size = chunksize(top); extra = ((top_size - pad - MINSIZE + (pagesz-1)) / pagesz - 1) * pagesz; if (extra < (long)pagesz) /* Not enough memory to release */ { MALLOC_UNLOCK; return 0; } else { /* Test to make sure no one else called sbrk */ current_brk = (char*)(MORECORE (0)); if (current_brk != (char*)(top) + top_size) { MALLOC_UNLOCK; return 0; /* Apparently we don't own memory; must fail */ } else { new_brk = (char*)(MORECORE (-extra)); if (new_brk == (char*)(MORECORE_FAILURE)) /* sbrk failed? */ { /* Try to figure out what we have */ current_brk = (char*)(MORECORE (0)); top_size = current_brk - (char*)top; if (top_size >= (long)MINSIZE) /* if not, we are very very dead! */ { sbrked_mem = current_brk - sbrk_base; set_head(top, top_size | PREV_INUSE); } check_chunk(top); MALLOC_UNLOCK; return 0; } else { /* Success. Adjust top accordingly. */ set_head(top, (top_size - extra) | PREV_INUSE); sbrked_mem -= extra; check_chunk(top); MALLOC_UNLOCK; return 1; } } } } #endif /* DEFINE_FREE */ #ifdef DEFINE_MALLOC_USABLE_SIZE /* malloc_usable_size: This routine tells you how many bytes you can actually use in an allocated chunk, which may be more than you requested (although often not). You can use this many bytes without worrying about overwriting other allocated objects. Not a particularly great programming practice, but still sometimes useful. */ #if __STD_C size_t malloc_usable_size(Void_t* mem) #else size_t malloc_usable_size(mem) RDECL Void_t* mem; #endif { mchunkptr p; if (mem == 0) return 0; else { p = mem2chunk(mem); if(!chunk_is_mmapped(p)) { if (!inuse(p)) return 0; #if DEBUG MALLOC_LOCK; check_inuse_chunk(p); MALLOC_UNLOCK; #endif return chunksize(p) - SIZE_SZ; } return chunksize(p) - 2*SIZE_SZ; } } #endif /* DEFINE_MALLOC_USABLE_SIZE */ #ifdef DEFINE_MALLINFO /* Utility to update current_mallinfo for malloc_stats and mallinfo() */ STATIC void malloc_update_mallinfo(void) { int i; mbinptr b; mchunkptr p; #if DEBUG mchunkptr q; #endif INTERNAL_SIZE_T avail = chunksize(top); int navail = ((long)(avail) >= (long)MINSIZE)? 1 : 0; for (i = 1; i < NAV; ++i) { b = bin_at(i); for (p = last(b); p != b; p = p->bk) { #if DEBUG check_free_chunk(p); for (q = next_chunk(p); q < top && inuse(q) && (long)(chunksize(q)) >= (long)MINSIZE; q = next_chunk(q)) check_inuse_chunk(q); #endif avail += chunksize(p); navail++; } } current_mallinfo.ordblks = navail; current_mallinfo.uordblks = sbrked_mem - avail; current_mallinfo.fordblks = avail; #if HAVE_MMAP current_mallinfo.hblks = n_mmaps; current_mallinfo.hblkhd = mmapped_mem; #endif current_mallinfo.keepcost = chunksize(top); } #else /* ! DEFINE_MALLINFO */ #if __STD_C extern void malloc_update_mallinfo(void); #else extern void malloc_update_mallinfo(); #endif #endif /* ! DEFINE_MALLINFO */ #ifdef DEFINE_MALLOC_STATS /* malloc_stats: Prints on stderr the amount of space obtain from the system (both via sbrk and mmap), the maximum amount (which may be more than current if malloc_trim and/or munmap got called), the maximum number of simultaneous mmap regions used, and the current number of bytes allocated via malloc (or realloc, etc) but not yet freed. (Note that this is the number of bytes allocated, not the number requested. It will be larger than the number requested because of alignment and bookkeeping overhead.) */ #if __STD_C void malloc_stats(void) #else void malloc_stats() RDECL #endif { unsigned long local_max_total_mem; int local_sbrked_mem; struct mallinfo local_mallinfo; #if HAVE_MMAP unsigned long local_mmapped_mem, local_max_n_mmaps; #endif FILE *fp; MALLOC_LOCK; malloc_update_mallinfo(); local_max_total_mem = max_total_mem; local_sbrked_mem = sbrked_mem; local_mallinfo = current_mallinfo; #if HAVE_MMAP local_mmapped_mem = mmapped_mem; local_max_n_mmaps = max_n_mmaps; #endif MALLOC_UNLOCK; fp = stderr; fprintf(fp, "max system bytes = %10u\n", (unsigned int)(local_max_total_mem)); #if HAVE_MMAP fprintf(fp, "system bytes = %10u\n", (unsigned int)(local_sbrked_mem + local_mmapped_mem)); fprintf(fp, "in use bytes = %10u\n", (unsigned int)(local_mallinfo.uordblks + local_mmapped_mem)); #else fprintf(fp, "system bytes = %10u\n", (unsigned int)local_sbrked_mem); fprintf(fp, "in use bytes = %10u\n", (unsigned int)local_mallinfo.uordblks); #endif #if HAVE_MMAP fprintf(fp, "max mmap regions = %10u\n", (unsigned int)local_max_n_mmaps); #endif } #endif /* DEFINE_MALLOC_STATS */ #ifdef DEFINE_MALLINFO /* mallinfo returns a copy of updated current mallinfo. */ #if __STD_C struct mallinfo mALLINFo(void) #else struct mallinfo mALLINFo() RDECL #endif { struct mallinfo ret; MALLOC_LOCK; malloc_update_mallinfo(); ret = current_mallinfo; MALLOC_UNLOCK; return ret; } #endif /* DEFINE_MALLINFO */ #ifdef DEFINE_MALLOPT /* mallopt: mallopt is the general SVID/XPG interface to tunable parameters. The format is to provide a (parameter-number, parameter-value) pair. mallopt then sets the corresponding parameter to the argument value if it can (i.e., so long as the value is meaningful), and returns 1 if successful else 0. See descriptions of tunable parameters above. */ #if __STD_C int mALLOPt(int param_number, int value) #else int mALLOPt(param_number, value) RDECL int param_number; int value; #endif { MALLOC_LOCK; switch(param_number) { case M_TRIM_THRESHOLD: trim_threshold = value; MALLOC_UNLOCK; return 1; case M_TOP_PAD: top_pad = value; MALLOC_UNLOCK; return 1; case M_MMAP_THRESHOLD: #if HAVE_MMAP mmap_threshold = value; #endif MALLOC_UNLOCK; return 1; case M_MMAP_MAX: #if HAVE_MMAP n_mmaps_max = value; MALLOC_UNLOCK; return 1; #else MALLOC_UNLOCK; return value == 0; #endif default: MALLOC_UNLOCK; return 0; } } #endif /* DEFINE_MALLOPT */ /* History: V2.6.5 Wed Jun 17 15:57:31 1998 Doug Lea (dl at gee) * Fixed ordering problem with boundary-stamping V2.6.3 Sun May 19 08:17:58 1996 Doug Lea (dl at gee) * Added pvalloc, as recommended by H.J. Liu * Added 64bit pointer support mainly from Wolfram Gloger * Added anonymously donated WIN32 sbrk emulation * Malloc, calloc, getpagesize: add optimizations from Raymond Nijssen * malloc_extend_top: fix mask error that caused wastage after foreign sbrks * Add linux mremap support code from HJ Liu V2.6.2 Tue Dec 5 06:52:55 1995 Doug Lea (dl at gee) * Integrated most documentation with the code. * Add support for mmap, with help from Wolfram Gloger (Gloger@lrz.uni-muenchen.de). * Use last_remainder in more cases. * Pack bins using idea from colin@nyx10.cs.du.edu * Use ordered bins instead of best-fit threshhold * Eliminate block-local decls to simplify tracing and debugging. * Support another case of realloc via move into top * Fix error occuring when initial sbrk_base not word-aligned. * Rely on page size for units instead of SBRK_UNIT to avoid surprises about sbrk alignment conventions. * Add mallinfo, mallopt. Thanks to Raymond Nijssen (raymond@es.ele.tue.nl) for the suggestion. * Add `pad' argument to malloc_trim and top_pad mallopt parameter. * More precautions for cases where other routines call sbrk, courtesy of Wolfram Gloger (Gloger@lrz.uni-muenchen.de). * Added macros etc., allowing use in linux libc from H.J. Lu (hjl@gnu.ai.mit.edu) * Inverted this history list V2.6.1 Sat Dec 2 14:10:57 1995 Doug Lea (dl at gee) * Re-tuned and fixed to behave more nicely with V2.6.0 changes. * Removed all preallocation code since under current scheme the work required to undo bad preallocations exceeds the work saved in good cases for most test programs. * No longer use return list or unconsolidated bins since no scheme using them consistently outperforms those that don't given above changes. * Use best fit for very large chunks to prevent some worst-cases. * Added some support for debugging V2.6.0 Sat Nov 4 07:05:23 1995 Doug Lea (dl at gee) * Removed footers when chunks are in use. Thanks to Paul Wilson (wilson@cs.texas.edu) for the suggestion. V2.5.4 Wed Nov 1 07:54:51 1995 Doug Lea (dl at gee) * Added malloc_trim, with help from Wolfram Gloger (wmglo@Dent.MED.Uni-Muenchen.DE). V2.5.3 Tue Apr 26 10:16:01 1994 Doug Lea (dl at g) V2.5.2 Tue Apr 5 16:20:40 1994 Doug Lea (dl at g) * realloc: try to expand in both directions * malloc: swap order of clean-bin strategy; * realloc: only conditionally expand backwards * Try not to scavenge used bins * Use bin counts as a guide to preallocation * Occasionally bin return list chunks in first scan * Add a few optimizations from colin@nyx10.cs.du.edu V2.5.1 Sat Aug 14 15:40:43 1993 Doug Lea (dl at g) * faster bin computation & slightly different binning * merged all consolidations to one part of malloc proper (eliminating old malloc_find_space & malloc_clean_bin) * Scan 2 returns chunks (not just 1) * Propagate failure in realloc if malloc returns 0 * Add stuff to allow compilation on non-ANSI compilers from kpv@research.att.com V2.5 Sat Aug 7 07:41:59 1993 Doug Lea (dl at g.oswego.edu) * removed potential for odd address access in prev_chunk * removed dependency on getpagesize.h * misc cosmetics and a bit more internal documentation * anticosmetics: mangled names in macros to evade debugger strangeness * tested on sparc, hp-700, dec-mips, rs6000 with gcc & native cc (hp, dec only) allowing Detlefs & Zorn comparison study (in SIGPLAN Notices.) Trial version Fri Aug 28 13:14:29 1992 Doug Lea (dl at g.oswego.edu) * Based loosely on libg++-1.2X malloc. (It retains some of the overall structure of old version, but most details differ.) */ #endif picolibc-1.7.4/newlib/libc/stdlib/mbctype.h000066400000000000000000000013571414576234500206160ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ #ifndef _MBCTYPE_H_ #define _MBCTYPE_H_ /* escape character used for JIS encoding */ #define ESC_CHAR 0x1b /* functions used to support SHIFT_JIS, EUC-JP, and JIS multibyte encodings */ int _issjis1 (int c); int _issjis2 (int c); int _iseucjp (int c); int _isjis (int c); #define _issjis1(c) (((c) >= 0x81 && (c) <= 0x9f) || ((c) >= 0xe0 && (c) <= 0xef)) #define _issjis2(c) (((c) >= 0x40 && (c) <= 0x7e) || ((c) >= 0x80 && (c) <= 0xfc)) #define _iseucjp1(c) ((c) == 0x8e || (c) == 0x8f || ((c) >= 0xa1 && (c) <= 0xfe)) #define _iseucjp2(c) ((c) >= 0xa1 && (c) <= 0xfe) #define _isjis(c) ((c) >= 0x21 && (c) <= 0x7e) #endif /* _MBCTYPE_H_ */ picolibc-1.7.4/newlib/libc/stdlib/mblen.c000066400000000000000000000034341414576234500202410ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ /* FUNCTION <>---minimal multibyte length function INDEX mblen SYNOPSIS #include int mblen(const char *<[s]>, size_t <[n]>); DESCRIPTION When _MB_CAPABLE is not defined, this is a minimal ANSI-conforming implementation of <>. In this case, the only ``multi-byte character sequences'' recognized are single bytes, and thus <<1>> is returned unless <[s]> is the null pointer or has a length of 0 or is the empty string. When _MB_CAPABLE is defined, this routine calls <<__MBTOWC>> to perform the conversion, passing a state variable to allow state dependent decoding. The result is based on the locale setting which may be restricted to a defined set of locales. RETURNS This implementation of <> returns <<0>> if <[s]> is <> or the empty string; it returns <<1>> if not _MB_CAPABLE or the character is a single-byte character; it returns <<-1>> if the multi-byte character is invalid; otherwise it returns the number of bytes in the multibyte character. PORTABILITY <> is required in the ANSI C standard. However, the precise effects vary with the locale. <> requires no supporting OS subroutines. */ #ifndef _REENT_ONLY #include #include #include #include "local.h" int mblen (const char *s, size_t n) { #ifdef _MB_CAPABLE int retval = 0; static NEWLIB_THREAD_LOCAL _mbstate_t _mblen_state; retval = __MBTOWC (NULL, s, n, &_mblen_state); if (retval < 0) { _mblen_state.__count = 0; return -1; } else return retval; #else /* not _MB_CAPABLE */ if (s == NULL || *s == '\0') return 0; if (n == 0) return -1; return 1; #endif /* not _MB_CAPABLE */ } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/mbrlen.c000066400000000000000000000004261414576234500204210ustar00rootroot00000000000000/* Copyright (c) 2002 Thomas Fitzsimmons */ #include #include #include #include #include size_t mbrlen(const char *__restrict s, size_t n, mbstate_t *__restrict ps) { return mbrtowc(NULL, s, n, ps); } picolibc-1.7.4/newlib/libc/stdlib/mbrtowc.c000066400000000000000000000014101414576234500206110ustar00rootroot00000000000000/* Copyright (c) 2002 Thomas Fitzsimmons */ #include #include #include #include #include #include #include "local.h" #ifndef _REENT_ONLY size_t mbrtowc (wchar_t *__restrict pwc, const char *__restrict s, size_t n, mbstate_t *__restrict ps) { int retval = 0; #ifdef _MB_CAPABLE if (ps == NULL) { static NEWLIB_THREAD_LOCAL mbstate_t _mbrtowc_state; ps = &_mbrtowc_state; } #endif if (s == NULL) retval = __MBTOWC (NULL, "", 1, ps); else retval = __MBTOWC (pwc, s, n, ps); if (retval == -1) { ps->__count = 0; __errno_r(reent) = EILSEQ; return (size_t)(-1); } else return (size_t)retval; } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/mbsinit.c000066400000000000000000000003761414576234500206130ustar00rootroot00000000000000/* Copyright (c) 2002 Thomas Fitzsimmons */ #include #include #include #include int mbsinit(const mbstate_t *ps) { if (ps == NULL || ps->__count == 0) return 1; else return 0; } picolibc-1.7.4/newlib/libc/stdlib/mbsnrtowcs.c000066400000000000000000000056771414576234500213600ustar00rootroot00000000000000/* Copyright (c) 2009 Corinna Vinschen */ /* FUNCTION <>, <>---convert a character string to a wide-character string INDEX mbsrtowcs INDEX _mbsrtowcs_r INDEX mbsnrtowcs INDEX _mbsnrtowcs_r SYNOPSIS #include size_t mbsrtowcs(wchar_t *__restrict <[dst]>, const char **__restrict <[src]>, size_t <[len]>, mbstate_t *__restrict <[ps]>); #include size_t mbsnrtowcs(wchar_t *__ restrict <[dst]>, const char **__restrict <[src]>, size_t <[nms]>, size_t <[len]>, mbstate_t *__restrict <[ps]>); DESCRIPTION The <> function converts a sequence of multibyte characters pointed to indirectly by <[src]> into a sequence of corresponding wide characters and stores at most <[len]> of them in the wchar_t array pointed to by <[dst]>, until it encounters a terminating null character ('\0'). If <[dst]> is NULL, no characters are stored. If <[dst]> is not NULL, the pointer pointed to by <[src]> is updated to point to the character after the one that conversion stopped at. If conversion stops because a null character is encountered, *<[src]> is set to NULL. The mbstate_t argument, <[ps]>, is used to keep track of the shift state. If it is NULL, <> uses an internal, static mbstate_t object, which is initialized to the initial conversion state at program startup. The <> function behaves identically to <>, except that conversion stops after reading at most <[nms]> bytes from the buffer pointed to by <[src]>. RETURNS The <> and <> functions return the number of wide characters stored in the array pointed to by <[dst]> if successful, otherwise it returns (size_t)-1. PORTABILITY <> is defined by the C99 standard. <> is defined by the POSIX.1-2008 standard. */ #include #include #include #include #include #ifndef _REENT_ONLY size_t mbsnrtowcs ( wchar_t *dst, const char **src, size_t nms, size_t len, mbstate_t *ps) { wchar_t *ptr = dst; const char *tmp_src; size_t max; size_t count = 0; int bytes; #ifdef _MB_CAPABLE if (ps == NULL) { static NEWLIB_THREAD_LOCAL mbstate_t _mbsrtowcs_state; ps = &_mbsrtowcs_state; } #endif if (dst == NULL) { /* Ignore original len value and do not alter src pointer if the dst pointer is NULL. */ len = (size_t)-1; tmp_src = *src; src = &tmp_src; } max = len; while (len > 0) { bytes = mbrtowc (ptr, *src, nms, ps); if (bytes > 0) { *src += bytes; nms -= bytes; ++count; ptr = (dst == NULL) ? NULL : ptr + 1; --len; } else if (bytes == -2) { *src += nms; return count; } else if (bytes == 0) { *src = NULL; return count; } else { ps->__count = 0; __errno_r(r) = EILSEQ; return (size_t)-1; } } return (size_t)max; } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/mbsrtowcs.c000066400000000000000000000006601414576234500211650ustar00rootroot00000000000000/* Copyright (c) 2002 Thomas Fitzsimmons */ /* doc in mbsnrtowcs.c */ #define _DEFAULT_SOURCE #include #include #include #include #include #ifndef _REENT_ONLY size_t mbsrtowcs (wchar_t *__restrict dst, const char **__restrict src, size_t len, mbstate_t *__restrict ps) { return mbsnrtowcs (dst, src, (size_t) -1, len, ps); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/mbstowcs.c000066400000000000000000000044701414576234500210060ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ /* FUNCTION <>---minimal multibyte string to wide char converter INDEX mbstowcs SYNOPSIS #include int mbstowcs(wchar_t *restrict <[pwc]>, const char *restrict <[s]>, size_t <[n]>); DESCRIPTION When _MB_CAPABLE is not defined, this is a minimal ANSI-conforming implementation of <>. In this case, the only ``multi-byte character sequences'' recognized are single bytes, and they are ``converted'' to wide-char versions simply by byte extension. When _MB_CAPABLE is defined, this uses a state variable to allow state dependent decoding. The result is based on the locale setting which may be restricted to a defined set of locales. RETURNS This implementation of <> returns <<0>> if <[s]> is <> or is the empty string; it returns <<-1>> if _MB_CAPABLE and one of the multi-byte characters is invalid or incomplete; otherwise it returns the minimum of: <> or the number of multi-byte characters in <> plus 1 (to compensate for the nul character). If the return value is -1, the state of the <> string is indeterminate. If the input has a length of 0, the output string will be modified to contain a wchar_t nul terminator. PORTABILITY <> is required in the ANSI C standard. However, the precise effects vary with the locale. <> requires no supporting OS subroutines. */ #ifndef _REENT_ONLY #include #include #include #include "local.h" size_t mbstowcs (wchar_t *__restrict pwcs, const char *__restrict s, size_t n) { #ifdef _MB_CAPABLE mbstate_t state; state.__count = 0; size_t ret = 0; char *t = (char *)s; int bytes; if (!pwcs) n = (size_t) 1; /* Value doesn't matter as long as it's not 0. */ while (n > 0) { bytes = __MBTOWC (pwcs, t, MB_CUR_MAX, &state); if (bytes < 0) { state.__count = 0; return -1; } else if (bytes == 0) break; t += bytes; ++ret; if (pwcs) { ++pwcs; --n; } } return ret; #else /* not _MB_CAPABLE */ int count = 0; if (n != 0) { do { if ((*pwcs++ = (wchar_t) *s++) == 0) break; count++; } while (--n != 0); } return count; #endif /* not _MB_CAPABLE */ } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/mbtowc.c000066400000000000000000000043041414576234500204340ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ /* FUNCTION <>---minimal multibyte to wide char converter INDEX mbtowc SYNOPSIS #include int mbtowc(wchar_t *restrict <[pwc]>, const char *restrict <[s]>, size_t <[n]>); DESCRIPTION When _MB_CAPABLE is not defined, this is a minimal ANSI-conforming implementation of <>. In this case, only ``multi-byte character sequences'' recognized are single bytes, and they are ``converted'' to themselves. Each call to <> copies one character from <<*<[s]>>> to <<*<[pwc]>>>, unless <[s]> is a null pointer. The argument n is ignored. When _MB_CAPABLE is defined, this routine uses a state variable to allow state dependent decoding. The result is based on the locale setting which may be restricted to a defined set of locales. RETURNS This implementation of <> returns <<0>> if <[s]> is <> or is the empty string; it returns <<1>> if not _MB_CAPABLE or the character is a single-byte character; it returns <<-1>> if n is <<0>> or the multi-byte character is invalid; otherwise it returns the number of bytes in the multibyte character. If the return value is -1, no changes are made to the <> output string. If the input is the empty string, a wchar_t nul is placed in the output string and 0 is returned. If the input has a length of 0, no changes are made to the <> output string. PORTABILITY <> is required in the ANSI C standard. However, the precise effects vary with the locale. <> requires no supporting OS subroutines. */ #ifndef _REENT_ONLY #include #include #include #include "local.h" int mbtowc (wchar_t *__restrict pwc, const char *__restrict s, size_t n) { #ifdef _MB_CAPABLE int retval = 0; static NEWLIB_THREAD_LOCAL mbstate_t _mbtowc_state; retval = __MBTOWC (pwc, s, n, &_mbtowc_state); if (retval < 0) { _mbtowc_state.__count = 0; return -1; } return retval; #else /* not _MB_CAPABLE */ if (s == NULL) return 0; if (n == 0) return -1; if (pwc) *pwc = (wchar_t) *s; return (*s != '\0'); #endif /* not _MB_CAPABLE */ } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/mbtowc_r.c000066400000000000000000000522311414576234500207570ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ #include #include #include #include "mbctype.h" #include #include #include #include "local.h" int __ascii_mbtowc ( wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { wchar_t dummy; unsigned char *t = (unsigned char *)s; (void) state; if (pwc == NULL) pwc = &dummy; if (s == NULL) return 0; if (n == 0) return -2; #ifdef __CYGWIN__ if ((wchar_t)*t >= 0x80) { __errno_r(r) = EILSEQ; return -1; } #endif *pwc = (wchar_t)*t; if (*t == '\0') return 0; return 1; } #ifdef _MB_CAPABLE typedef enum __packed { ESCAPE, DOLLAR, BRACKET, AT, B, J, NUL, JIS_CHAR, OTHER, JIS_C_NUM } JIS_CHAR_TYPE; typedef enum __packed { ASCII, JIS, A_ESC, A_ESC_DL, JIS_1, J_ESC, J_ESC_BR, INV, JIS_S_NUM } JIS_STATE; typedef enum __packed { COPY_A, COPY_J1, COPY_J2, MAKE_A, NOOP, EMPTY, ERROR } JIS_ACTION; /************************************************************************************** * state/action tables for processing JIS encoding * Where possible, switches to JIS are grouped with proceding JIS characters and switches * to ASCII are grouped with preceding JIS characters. Thus, maximum returned length * is 2 (switch to JIS) + 2 (JIS characters) + 2 (switch back to ASCII) = 6. *************************************************************************************/ #ifndef __CYGWIN__ static JIS_STATE JIS_state_table[JIS_S_NUM][JIS_C_NUM] = { /* ESCAPE DOLLAR BRACKET AT B J NUL JIS_CHAR OTHER */ /* ASCII */ { A_ESC, ASCII, ASCII, ASCII, ASCII, ASCII, ASCII, ASCII, ASCII }, /* JIS */ { J_ESC, JIS_1, JIS_1, JIS_1, JIS_1, JIS_1, INV, JIS_1, INV }, /* A_ESC */ { ASCII, A_ESC_DL, ASCII, ASCII, ASCII, ASCII, ASCII, ASCII, ASCII }, /* A_ESC_DL */{ ASCII, ASCII, ASCII, JIS, JIS, ASCII, ASCII, ASCII, ASCII }, /* JIS_1 */ { INV, JIS, JIS, JIS, JIS, JIS, INV, JIS, INV }, /* J_ESC */ { INV, INV, J_ESC_BR, INV, INV, INV, INV, INV, INV }, /* J_ESC_BR */{ INV, INV, INV, INV, ASCII, ASCII, INV, INV, INV }, }; static JIS_ACTION JIS_action_table[JIS_S_NUM][JIS_C_NUM] = { /* ESCAPE DOLLAR BRACKET AT B J NUL JIS_CHAR OTHER */ /* ASCII */ { NOOP, COPY_A, COPY_A, COPY_A, COPY_A, COPY_A, EMPTY, COPY_A, COPY_A}, /* JIS */ { NOOP, COPY_J1, COPY_J1, COPY_J1, COPY_J1, COPY_J1, ERROR, COPY_J1, ERROR }, /* A_ESC */ { COPY_A, NOOP, COPY_A, COPY_A, COPY_A, COPY_A, COPY_A, COPY_A, COPY_A}, /* A_ESC_DL */{ COPY_A, COPY_A, COPY_A, NOOP, NOOP, COPY_A, COPY_A, COPY_A, COPY_A}, /* JIS_1 */ { ERROR, COPY_J2, COPY_J2, COPY_J2, COPY_J2, COPY_J2, ERROR, COPY_J2, ERROR }, /* J_ESC */ { ERROR, ERROR, NOOP, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR }, /* J_ESC_BR */{ ERROR, ERROR, ERROR, ERROR, MAKE_A, MAKE_A, ERROR, ERROR, ERROR }, }; #endif /* !__CYGWIN__ */ /* we override the mbstate_t __count field for more complex encodings and use it store a state value */ #define __state __count #ifdef _MB_EXTENDED_CHARSETS_ISO static int ___iso_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, int iso_idx, mbstate_t *state) { wchar_t dummy; unsigned char *t = (unsigned char *)s; if (pwc == NULL) pwc = &dummy; if (s == NULL) return 0; if (n == 0) return -2; if (*t >= 0xa0) { if (iso_idx >= 0) { *pwc = __iso_8859_conv[iso_idx][*t - 0xa0]; if (*pwc == 0) /* Invalid character */ { __errno_r(r) = EILSEQ; return -1; } return 1; } } *pwc = (wchar_t) *t; if (*t == '\0') return 0; return 1; } static int __iso_8859_1_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___iso_mbtowc (r, pwc, s, n, -1, state); } static int __iso_8859_2_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___iso_mbtowc (r, pwc, s, n, 0, state); } static int __iso_8859_3_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___iso_mbtowc (r, pwc, s, n, 1, state); } static int __iso_8859_4_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___iso_mbtowc (r, pwc, s, n, 2, state); } static int __iso_8859_5_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___iso_mbtowc (r, pwc, s, n, 3, state); } static int __iso_8859_6_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___iso_mbtowc (r, pwc, s, n, 4, state); } static int __iso_8859_7_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___iso_mbtowc (r, pwc, s, n, 5, state); } static int __iso_8859_8_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___iso_mbtowc (r, pwc, s, n, 6, state); } static int __iso_8859_9_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___iso_mbtowc (r, pwc, s, n, 7, state); } static int __iso_8859_10_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___iso_mbtowc (r, pwc, s, n, 8, state); } static int __iso_8859_11_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___iso_mbtowc (r, pwc, s, n, 9, state); } static int __iso_8859_13_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___iso_mbtowc (r, pwc, s, n, 10, state); } static int __iso_8859_14_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___iso_mbtowc (r, pwc, s, n, 11, state); } static int __iso_8859_15_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___iso_mbtowc (r, pwc, s, n, 12, state); } static int __iso_8859_16_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___iso_mbtowc (r, pwc, s, n, 13, state); } static mbtowc_p __iso_8859_mbtowc[17] = { NULL, __iso_8859_1_mbtowc, __iso_8859_2_mbtowc, __iso_8859_3_mbtowc, __iso_8859_4_mbtowc, __iso_8859_5_mbtowc, __iso_8859_6_mbtowc, __iso_8859_7_mbtowc, __iso_8859_8_mbtowc, __iso_8859_9_mbtowc, __iso_8859_10_mbtowc, __iso_8859_11_mbtowc, NULL, /* No ISO 8859-12 */ __iso_8859_13_mbtowc, __iso_8859_14_mbtowc, __iso_8859_15_mbtowc, __iso_8859_16_mbtowc }; /* val *MUST* be valid! All checks for validity are supposed to be performed before calling this function. */ mbtowc_p __iso_mbtowc (int val) { return __iso_8859_mbtowc[val]; } #endif /* _MB_EXTENDED_CHARSETS_ISO */ #ifdef _MB_EXTENDED_CHARSETS_WINDOWS static int ___cp_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, int cp_idx, mbstate_t *state) { wchar_t dummy; unsigned char *t = (unsigned char *)s; if (pwc == NULL) pwc = &dummy; if (s == NULL) return 0; if (n == 0) return -2; if (*t >= 0x80) { if (cp_idx >= 0) { *pwc = __cp_conv[cp_idx][*t - 0x80]; if (*pwc == 0) /* Invalid character */ { __errno_r(r) = EILSEQ; return -1; } return 1; } } *pwc = (wchar_t)*t; if (*t == '\0') return 0; return 1; } static int __cp_437_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___cp_mbtowc (r, pwc, s, n, 0, state); } static int __cp_720_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___cp_mbtowc (r, pwc, s, n, 1, state); } static int __cp_737_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___cp_mbtowc (r, pwc, s, n, 2, state); } static int __cp_775_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___cp_mbtowc (r, pwc, s, n, 3, state); } static int __cp_850_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___cp_mbtowc (r, pwc, s, n, 4, state); } static int __cp_852_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___cp_mbtowc (r, pwc, s, n, 5, state); } static int __cp_855_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___cp_mbtowc (r, pwc, s, n, 6, state); } static int __cp_857_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___cp_mbtowc (r, pwc, s, n, 7, state); } static int __cp_858_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___cp_mbtowc (r, pwc, s, n, 8, state); } static int __cp_862_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___cp_mbtowc (r, pwc, s, n, 9, state); } static int __cp_866_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___cp_mbtowc (r, pwc, s, n, 10, state); } static int __cp_874_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___cp_mbtowc (r, pwc, s, n, 11, state); } static int __cp_1125_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___cp_mbtowc (r, pwc, s, n, 12, state); } static int __cp_1250_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___cp_mbtowc (r, pwc, s, n, 13, state); } static int __cp_1251_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___cp_mbtowc (r, pwc, s, n, 14, state); } static int __cp_1252_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___cp_mbtowc (r, pwc, s, n, 15, state); } static int __cp_1253_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___cp_mbtowc (r, pwc, s, n, 16, state); } static int __cp_1254_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___cp_mbtowc (r, pwc, s, n, 17, state); } static int __cp_1255_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___cp_mbtowc (r, pwc, s, n, 18, state); } static int __cp_1256_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___cp_mbtowc (r, pwc, s, n, 19, state); } static int __cp_1257_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___cp_mbtowc (r, pwc, s, n, 20, state); } static int __cp_1258_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___cp_mbtowc (r, pwc, s, n, 21, state); } static int __cp_20866_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___cp_mbtowc (r, pwc, s, n, 22, state); } static int __cp_21866_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___cp_mbtowc (r, pwc, s, n, 23, state); } static int __cp_101_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___cp_mbtowc (r, pwc, s, n, 24, state); } static int __cp_102_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { return ___cp_mbtowc (r, pwc, s, n, 25, state); } static mbtowc_p __cp_xxx_mbtowc[26] = { __cp_437_mbtowc, __cp_720_mbtowc, __cp_737_mbtowc, __cp_775_mbtowc, __cp_850_mbtowc, __cp_852_mbtowc, __cp_855_mbtowc, __cp_857_mbtowc, __cp_858_mbtowc, __cp_862_mbtowc, __cp_866_mbtowc, __cp_874_mbtowc, __cp_1125_mbtowc, __cp_1250_mbtowc, __cp_1251_mbtowc, __cp_1252_mbtowc, __cp_1253_mbtowc, __cp_1254_mbtowc, __cp_1255_mbtowc, __cp_1256_mbtowc, __cp_1257_mbtowc, __cp_1258_mbtowc, __cp_20866_mbtowc, __cp_21866_mbtowc, __cp_101_mbtowc, __cp_102_mbtowc }; /* val *MUST* be valid! All checks for validity are supposed to be performed before calling this function. */ mbtowc_p __cp_mbtowc (int val) { return __cp_xxx_mbtowc[__cp_val_index (val)]; } #endif /* _MB_EXTENDED_CHARSETS_WINDOWS */ int __utf8_mbtowc ( wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { wchar_t dummy; unsigned char *t = (unsigned char *)s; int ch; int i = 0; if (pwc == NULL) pwc = &dummy; if (s == NULL) return 0; if (n == 0) return -2; if (state->__count == 0) ch = t[i++]; else ch = state->__value.__wchb[0]; if (ch == '\0') { *pwc = 0; state->__count = 0; return 0; /* s points to the null character */ } if (ch <= 0x7f) { /* single-byte sequence */ state->__count = 0; *pwc = ch; return 1; } if (ch >= 0xc0 && ch <= 0xdf) { /* two-byte sequence */ state->__value.__wchb[0] = ch; if (state->__count == 0) state->__count = 1; else if (n < (size_t)-1) ++n; if (n < 2) return -2; ch = t[i++]; if (ch < 0x80 || ch > 0xbf) { __errno_r(r) = EILSEQ; return -1; } if (state->__value.__wchb[0] < 0xc2) { /* overlong UTF-8 sequence */ __errno_r(r) = EILSEQ; return -1; } state->__count = 0; *pwc = (wchar_t)((state->__value.__wchb[0] & 0x1f) << 6) | (wchar_t)(ch & 0x3f); return i; } if (ch >= 0xe0 && ch <= 0xef) { /* three-byte sequence */ wchar_t tmp; state->__value.__wchb[0] = ch; if (state->__count == 0) state->__count = 1; else if (n < (size_t)-1) ++n; if (n < 2) return -2; ch = (state->__count == 1) ? t[i++] : state->__value.__wchb[1]; if (state->__value.__wchb[0] == 0xe0 && ch < 0xa0) { /* overlong UTF-8 sequence */ __errno_r(r) = EILSEQ; return -1; } if (ch < 0x80 || ch > 0xbf) { __errno_r(r) = EILSEQ; return -1; } state->__value.__wchb[1] = ch; if (state->__count == 1) state->__count = 2; else if (n < (size_t)-1) ++n; if (n < 3) return -2; ch = t[i++]; if (ch < 0x80 || ch > 0xbf) { __errno_r(r) = EILSEQ; return -1; } state->__count = 0; tmp = (wchar_t)((state->__value.__wchb[0] & 0x0f) << 12) | (wchar_t)((state->__value.__wchb[1] & 0x3f) << 6) | (wchar_t)(ch & 0x3f); *pwc = tmp; return i; } if (ch >= 0xf0 && ch <= 0xf4) { /* four-byte sequence */ wint_t tmp; state->__value.__wchb[0] = ch; if (state->__count == 0) state->__count = 1; else if (n < (size_t)-1) ++n; if (n < 2) return -2; ch = (state->__count == 1) ? t[i++] : state->__value.__wchb[1]; if ((state->__value.__wchb[0] == 0xf0 && ch < 0x90) || (state->__value.__wchb[0] == 0xf4 && ch >= 0x90)) { /* overlong UTF-8 sequence or result is > 0x10ffff */ __errno_r(r) = EILSEQ; return -1; } if (ch < 0x80 || ch > 0xbf) { __errno_r(r) = EILSEQ; return -1; } state->__value.__wchb[1] = ch; if (state->__count == 1) state->__count = 2; else if (n < (size_t)-1) ++n; if (n < 3) return -2; ch = (state->__count == 2) ? t[i++] : state->__value.__wchb[2]; if (ch < 0x80 || ch > 0xbf) { __errno_r(r) = EILSEQ; return -1; } state->__value.__wchb[2] = ch; if (state->__count == 2) state->__count = 3; else if (n < (size_t)-1) ++n; if (state->__count == 3 && sizeof(wchar_t) == 2) { /* On systems which have wchar_t being UTF-16 values, the value doesn't fit into a single wchar_t in this case. So what we do here is to store the state with a special value of __count and return the first half of a surrogate pair. The first three bytes of a UTF-8 sequence are enough to generate the first half of a UTF-16 surrogate pair. As return value we choose to return the number of bytes actually read up to here. The second half of the surrogate pair is returned in case we recognize the special __count value of four, and the next byte is actually a valid value. See below. */ tmp = (wint_t)((state->__value.__wchb[0] & 0x07) << 18) | (wint_t)((state->__value.__wchb[1] & 0x3f) << 12) | (wint_t)((state->__value.__wchb[2] & 0x3f) << 6); state->__count = 4; *pwc = 0xd800 | ((tmp - 0x10000) >> 10); return i; } if (n < 4) return -2; ch = t[i++]; if (ch < 0x80 || ch > 0xbf) { __errno_r(r) = EILSEQ; return -1; } tmp = (wint_t)((state->__value.__wchb[0] & 0x07) << 18) | (wint_t)((state->__value.__wchb[1] & 0x3f) << 12) | (wint_t)((state->__value.__wchb[2] & 0x3f) << 6) | (wint_t)(ch & 0x3f); if (state->__count == 4 && sizeof(wchar_t) == 2) /* Create the second half of the surrogate pair for systems with wchar_t == UTF-16 . */ *pwc = 0xdc00 | (tmp & 0x3ff); else *pwc = tmp; state->__count = 0; return i; } __errno_r(r) = EILSEQ; return -1; } /* Cygwin defines its own doublebyte charset conversion functions because the underlying OS requires wchar_t == UTF-16. */ #ifndef __CYGWIN__ int __sjis_mbtowc ( wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { wchar_t dummy; unsigned char *t = (unsigned char *)s; int ch; int i = 0; if (pwc == NULL) pwc = &dummy; if (s == NULL) return 0; /* not state-dependent */ if (n == 0) return -2; ch = t[i++]; if (state->__count == 0) { if (_issjis1 (ch)) { state->__value.__wchb[0] = ch; state->__count = 1; if (n <= 1) return -2; ch = t[i++]; } } if (state->__count == 1) { if (_issjis2 (ch)) { *pwc = (((wchar_t)state->__value.__wchb[0]) << 8) + (wchar_t)ch; state->__count = 0; return i; } else { __errno_r(r) = EILSEQ; return -1; } } *pwc = (wchar_t)*t; if (*t == '\0') return 0; return 1; } int __eucjp_mbtowc ( wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { wchar_t dummy; unsigned char *t = (unsigned char *)s; int ch; int i = 0; if (pwc == NULL) pwc = &dummy; if (s == NULL) return 0; if (n == 0) return -2; ch = t[i++]; if (state->__count == 0) { if (_iseucjp1 (ch)) { state->__value.__wchb[0] = ch; state->__count = 1; if (n <= 1) return -2; ch = t[i++]; } } if (state->__count == 1) { if (_iseucjp2 (ch)) { if (state->__value.__wchb[0] == 0x8f) { state->__value.__wchb[1] = ch; state->__count = 2; if (n <= (size_t) i) return -2; ch = t[i++]; } else { *pwc = (((wchar_t)state->__value.__wchb[0]) << 8) + (wchar_t)ch; state->__count = 0; return i; } } else { __errno_r(r) = EILSEQ; return -1; } } if (state->__count == 2) { if (_iseucjp2 (ch)) { *pwc = (((wchar_t)state->__value.__wchb[1]) << 8) + (wchar_t)(ch & 0x7f); state->__count = 0; return i; } else { __errno_r(r) = EILSEQ; return -1; } } *pwc = (wchar_t)*t; if (*t == '\0') return 0; return 1; } int __jis_mbtowc ( wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { wchar_t dummy; unsigned char *t = (unsigned char *)s; JIS_STATE curr_state; JIS_ACTION action; JIS_CHAR_TYPE ch; unsigned char *ptr; unsigned int i; int curr_ch; if (pwc == NULL) pwc = &dummy; if (s == NULL) { state->__state = ASCII; return 1; /* state-dependent */ } if (n == 0) return -2; curr_state = state->__state; ptr = t; for (i = 0; i < n; ++i) { curr_ch = t[i]; switch (curr_ch) { case ESC_CHAR: ch = ESCAPE; break; case '$': ch = DOLLAR; break; case '@': ch = AT; break; case '(': ch = BRACKET; break; case 'B': ch = B; break; case 'J': ch = J; break; case '\0': ch = NUL; break; default: if (_isjis (curr_ch)) ch = JIS_CHAR; else ch = OTHER; } action = JIS_action_table[curr_state][ch]; curr_state = JIS_state_table[curr_state][ch]; switch (action) { case NOOP: break; case EMPTY: state->__state = ASCII; *pwc = (wchar_t)0; return 0; case COPY_A: state->__state = ASCII; *pwc = (wchar_t)*ptr; return (i + 1); case COPY_J1: state->__value.__wchb[0] = t[i]; break; case COPY_J2: state->__state = JIS; *pwc = (((wchar_t)state->__value.__wchb[0]) << 8) + (wchar_t)(t[i]); return (i + 1); case MAKE_A: ptr = (unsigned char *)(t + i + 1); break; case ERROR: default: __errno_r(r) = EILSEQ; return -1; } } state->__state = curr_state; return -2; /* n < bytes needed */ } #endif /* !__CYGWIN__*/ #endif /* _MB_CAPABLE */ picolibc-1.7.4/newlib/libc/stdlib/meson.build000066400000000000000000000140561414576234500211440ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # nano_malloc_srcs_stdlib = [ 'nano-malloc-calloc.c', 'nano-malloc-cfree.c', 'nano-malloc-free.c', 'nano-malloc-mallinfo.c', 'nano-malloc-malloc.c', 'nano-malloc-malloc_stats.c', 'nano-malloc-malloc_usable_size.c', 'nano-malloc-mallopt.c', 'nano-malloc-memalign.c', 'nano-malloc-pvalloc.c', 'nano-malloc-realloc.c', 'nano-malloc-valloc.c', ] std_malloc_srcs_stdlib = [ 'malloc-calloc.c', 'malloc-cfree.c', 'malloc-free.c', 'malloc-mallinfo.c', 'malloc-malloc.c', 'malloc-malloc_stats.c', 'malloc-malloc_usable_size.c', 'malloc-mallopt.c', 'malloc-memalign.c', 'malloc-pvalloc.c', 'malloc-realloc.c', 'malloc-valloc.c', ] pico_exit_srcs_stdlib = [ 'pico-atexit.c', 'pico-exit.c', 'pico-onexit.c', 'pico-cxa-atexit.c', ] newlib_exit_srcs_stdlib = [ '__atexit.c', '__call_atexit.c', 'atexit.c', 'cxa_atexit.c', 'cxa_finalize.c', 'exit.c', 'on_exit.c', 'quick_exit.c', ] srcs_stdlib = [ 'a64l.c', 'abort.c', 'abs.c', 'aligned_alloc.c', 'arc4random.c', 'arc4random_uniform.c', 'assert.c', 'atof.c', 'atoff.c', 'atoi.c', 'atol.c', 'atoll.c', 'btowc.c', 'div.c', 'drand48.c', 'environ.c', 'eprintf.c', 'erand48.c', '_Exit.c', 'getenv.c', 'getenv_r.c', 'getopt.c', 'getsubopt.c', 'imaxabs.c', 'imaxdiv.c', 'itoa.c', 'jrand48.c', 'l64a.c', 'labs.c', 'lcong48.c', 'ldiv.c', 'llabs.c', 'lldiv.c', 'lrand48.c', 'mblen.c', 'mbrlen.c', 'mbrtowc.c', 'mbsinit.c', 'mbsnrtowcs.c', 'mbsrtowcs.c', 'mbstowcs.c', 'mbtowc.c', 'mbtowc_r.c', 'mrand48.c', 'mstats.c', 'nrand48.c', 'putenv.c', 'rand48.c', 'rand.c', 'random.c', 'rand_r.c', 'reallocarray.c', 'reallocf.c', 'rpmatch.c', 'sb_charsets.c', 'seed48.c', 'setenv.c', 'srand.c', 'srand48.c', 'srandom.c', 'strtoimax.c', 'strtol.c', 'strtoll.c', 'strtoul.c', 'strtoull.c', 'strtoumax.c', 'system.c', 'utoa.c', 'wcrtomb.c', 'wcsnrtombs.c', 'wcsrtombs.c', 'wcstod.c', 'wcstoimax.c', 'wcstol.c', 'wcstoll.c', 'wcstombs.c', 'wcstoul.c', 'wcstoull.c', 'wcstoumax.c', 'wctob.c', 'wctomb.c', 'wctomb_r.c', ] srcs_stdlib_stdio = [ 'dtoa.c', 'ecvtbuf.c', 'efgcvt.c', 'gdtoa-gethex.c', 'gdtoa-hexnan.c', 'mprec.c', 'strtod.c', 'strtodg.c', ] lsrcs_stdlib = [ 'strtold.c', 'strtorx.c', 'wcstold.c' ] if not tinystdio srcs_stdlib += srcs_stdlib_stdio if have_long_double and not long_double_equals_double srcs_stdlib += lsrcs_stdlib if newlib_io_long_double srcs_stdlib += 'ldtoa.c' endif endif endif # Work around compiler optimizing calls involving malloc/free c_args_malloc = [] if cc.has_argument('-fno-builtin-malloc') c_args_malloc += ['-fno-builtin-malloc'] endif if cc.has_argument('-fno-builtin-free') c_args_malloc += ['-fno-builtin-free'] endif if newlib_nano_malloc srcs_stdlib_malloc = nano_malloc_srcs_stdlib else srcs_stdlib_malloc = std_malloc_srcs_stdlib endif if picoexit srcs_stdlib += pico_exit_srcs_stdlib else srcs_stdlib += newlib_exit_srcs_stdlib endif hdrs_stdlib = [ 'arc4random.h', 'atexit.h', 'chacha_private.h', 'gd_qnan.h', 'gdtoa.h', 'local.h', 'mbctype.h', 'mprec.h', 'on_exit_args.h', 'rand48.h', 'std.h', ] srcs_stdlib_use = [] foreach file : srcs_stdlib s_file = fs.replace_suffix(file, '.S') if file in srcs_machine message('libc/stdlib/' + file + ': machine overrides generic') elif s_file in srcs_machine message('libc/stdlib/' + s_file + ': machine overrides generic') else srcs_stdlib_use += file endif endforeach srcs_stdlib_malloc_use = [] foreach file : srcs_stdlib_malloc s_file = fs.replace_suffix(file, '.S') if file in srcs_machine message('libc/stdlib/' + file + ': machine overrides generic') elif s_file in srcs_machine message('libc/stdlib/' + s_file + ': machine overrides generic') else srcs_stdlib_malloc_use += file endif endforeach src_stdlib = files(srcs_stdlib_use) foreach target : targets value = get_variable('target_' + target) # Have to build a sub-library to get custom c_args for malloc set_variable('lib_stdlib' + target, static_library('stdlib_malloc' + target, srcs_stdlib_malloc_use, pic: false, include_directories: inc, c_args: value[1] + ['-DINTERNAL_NEWLIB'] + c_args_malloc)) endforeach picolibc-1.7.4/newlib/libc/stdlib/mprec.c000066400000000000000000000454221414576234500202550ustar00rootroot00000000000000/**************************************************************** * * The author of this software is David M. Gay. * * Copyright (c) 1991 by AT&T. * * Permission to use, copy, modify, and distribute this software for any * purpose without fee is hereby granted, provided that this entire notice * is included in all copies of any software which is or includes a copy * or modification of this software and in all copies of the supporting * documentation for such software. * * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED * WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR AT&T MAKES ANY * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. * ***************************************************************/ /* Please send bug reports to David M. Gay AT&T Bell Laboratories, Room 2C-463 600 Mountain Avenue Murray Hill, NJ 07974-2070 U.S.A. dmg@research.att.com or research!dmg */ /* strtod for IEEE-, VAX-, and IBM-arithmetic machines. * * This strtod returns a nearest machine number to the input decimal * string (or sets errno to ERANGE). With IEEE arithmetic, ties are * broken by the IEEE round-even rule. Otherwise ties are broken by * biased rounding (add half and chop). * * Inspired loosely by William D. Clinger's paper "How to Read Floating * Point Numbers Accurately" [Proc. ACM SIGPLAN '90, pp. 92-101]. * * Modifications: * * 1. We only require IEEE, IBM, or VAX double-precision * arithmetic (not IEEE double-extended). * 2. We get by with floating-point arithmetic in a case that * Clinger missed -- when we're computing d * 10^n * for a small integer d and the integer n is not too * much larger than 22 (the maximum integer k for which * we can represent 10^k exactly), we may be able to * compute (d*10^k) * 10^(e-k) with just one roundoff. * 3. Rather than a bit-at-a-time adjustment of the binary * result in the hard case, we use floating-point * arithmetic to determine the adjustment to within * one bit; only in really hard cases do we need to * compute a second residual. * 4. Because of 3., we don't need a large table of powers of 10 * for ten-to-e (just some small tables, e.g. of 10^k * for 0 <= k <= 22). */ /* * #define IEEE_8087 for IEEE-arithmetic machines where the least * significant byte has the lowest address. * #define IEEE_MC68k for IEEE-arithmetic machines where the most * significant byte has the lowest address. * #define Sudden_Underflow for IEEE-format machines without gradual * underflow (i.e., that flush to zero on underflow). * #define IBM for IBM mainframe-style floating-point arithmetic. * #define VAX for VAX-style floating-point arithmetic. * #define Unsigned_Shifts if >> does treats its left operand as unsigned. * #define No_leftright to omit left-right logic in fast floating-point * computation of dtoa. * #define Check_FLT_ROUNDS if FLT_ROUNDS can assume the values 2 or 3. * #define RND_PRODQUOT to use rnd_prod and rnd_quot (assembly routines * that use extended-precision instructions to compute rounded * products and quotients) with IBM. * #define ROUND_BIASED for IEEE-format with biased rounding. * #define Inaccurate_Divide for IEEE-format with correctly rounded * products but inaccurate quotients, e.g., for Intel i860. * #define Just_16 to store 16 bits per 32-bit long when doing high-precision * integer arithmetic. Whether this speeds things up or slows things * down depends on the machine and the number being converted. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "mprec.h" #include "atexit.h" /* This is defined in sys/reent.h as (sizeof (size_t) << 3) now, as in NetBSD. The old value of 15 was wrong and made newlib vulnerable against buffer overrun attacks (CVE-2009-0689), same as other implementations of gdtoa based on BSD code. #define _Kmax 15 */ /* This value is used in stdlib/misc.c. reent/reent.c has to know it as well to make sure the freelist is correctly free'd. Therefore we define it here, rather than in stdlib/misc.c, as before. */ #define _Kmax (sizeof (size_t) << 3) static NEWLIB_THREAD_LOCAL char *__dtoa_result; static NEWLIB_THREAD_LOCAL int __dtoa_result_len; char *__alloc_dtoa_result(int len) { if (len > __dtoa_result_len) { if (__mprec_register_exit() != 0) return NULL; if (__dtoa_result) free(__dtoa_result); __dtoa_result = malloc(len); if (__dtoa_result) __dtoa_result_len = len; } return __dtoa_result; } static NEWLIB_THREAD_LOCAL int _mprec_exit_registered; static void __mprec_exit(void) { if (__dtoa_result) { free(__dtoa_result); __dtoa_result = NULL; __dtoa_result_len = 0; } } int __mprec_register_exit(void) { if (!_mprec_exit_registered) { _mprec_exit_registered = 1; return atexit(__mprec_exit); } return 0; } _Bigint * Balloc (int k) { int x; _Bigint *rv ; x = 1 << k; /* Allocate an mprec Bigint */ rv = (_Bigint *) calloc(1, sizeof (_Bigint) + (x-1) * sizeof(rv->_x)); if (rv == NULL) return NULL; rv->_k = k; rv->_maxwds = x; rv->_sign = rv->_wds = 0; return rv; } void Bfree (_Bigint * v) { free(v); } _Bigint * multadd ( _Bigint * b, int m, int a) { int i, wds; __ULong *x, y; #ifdef Pack_32 __ULong xi, z; #endif _Bigint *b1; if (!b) return NULL; wds = b->_wds; x = b->_x; i = 0; do { #ifdef Pack_32 xi = *x; y = (xi & 0xffff) * m + a; z = (xi >> 16) * m + (y >> 16); a = (int) (z >> 16); *x++ = (z << 16) + (y & 0xffff); #else y = *x * m + a; a = (int) (y >> 16); *x++ = y & 0xffff; #endif } while (++i < wds); if (a) { if (wds >= b->_maxwds) { b1 = Balloc (b->_k + 1); if (!b1) { Bfree(b); return NULL; } Bcopy (b1, b); Bfree (b); b = b1; } b->_x[wds++] = a; b->_wds = wds; } return b; } _Bigint * s2b ( const char *s, int nd0, int nd, __ULong y9) { _Bigint *b; int i, k; __Long x, y; x = (nd + 8) / 9; for (k = 0, y = 1; x > y; y <<= 1, k++); #ifdef Pack_32 b = Balloc (k); if (!b) return NULL; b->_x[0] = y9; b->_wds = 1; #else b = Balloc (k + 1); if (!b) return NULL; b->_x[0] = y9 & 0xffff; b->_wds = (b->_x[1] = y9 >> 16) ? 2 : 1; #endif i = 9; if (9 < nd0) { s += 9; do b = multadd (b, 10, *s++ - '0'); while (++i < nd0); s++; } else s += 10; for (; i < nd; i++) b = multadd (b, 10, *s++ - '0'); return b; } int hi0bits (register __ULong x) { register int k = 0; if (!(x & 0xffff0000)) { k = 16; x <<= 16; } if (!(x & 0xff000000)) { k += 8; x <<= 8; } if (!(x & 0xf0000000)) { k += 4; x <<= 4; } if (!(x & 0xc0000000)) { k += 2; x <<= 2; } if (!(x & 0x80000000)) { k++; if (!(x & 0x40000000)) return 32; } return k; } int lo0bits (__ULong *y) { register int k; register __ULong x = *y; if (x & 7) { if (x & 1) return 0; if (x & 2) { *y = x >> 1; return 1; } *y = x >> 2; return 2; } k = 0; if (!(x & 0xffff)) { k = 16; x >>= 16; } if (!(x & 0xff)) { k += 8; x >>= 8; } if (!(x & 0xf)) { k += 4; x >>= 4; } if (!(x & 0x3)) { k += 2; x >>= 2; } if (!(x & 1)) { k++; x >>= 1; if (!(x & 1)) return 32; } *y = x; return k; } _Bigint * i2b (int i) { _Bigint *b; b = Balloc (1); if (b) { b->_x[0] = i; b->_wds = 1; } return b; } _Bigint * mult (_Bigint * a, _Bigint * b) { _Bigint *c; int k, wa, wb, wc; __ULong carry, y, z; __ULong *x, *xa, *xae, *xb, *xbe, *xc, *xc0; #ifdef Pack_32 __ULong z2; #endif if (!a || !b) return NULL; if (a->_wds < b->_wds) { c = a; a = b; b = c; } k = a->_k; wa = a->_wds; wb = b->_wds; wc = wa + wb; if (wc > a->_maxwds) k++; c = Balloc (k); if (!c) return NULL; for (x = c->_x, xa = x + wc; x < xa; x++) *x = 0; xa = a->_x; xae = xa + wa; xb = b->_x; xbe = xb + wb; xc0 = c->_x; #ifdef Pack_32 for (; xb < xbe; xb++, xc0++) { if ((y = *xb & 0xffff) != 0) { x = xa; xc = xc0; carry = 0; do { z = (*x & 0xffff) * y + (*xc & 0xffff) + carry; carry = z >> 16; z2 = (*x++ >> 16) * y + (*xc >> 16) + carry; carry = z2 >> 16; Storeinc (xc, z2, z); } while (x < xae); *xc = carry; } if ((y = *xb >> 16) != 0) { x = xa; xc = xc0; carry = 0; z2 = *xc; do { z = (*x & 0xffff) * y + (*xc >> 16) + carry; carry = z >> 16; Storeinc (xc, z, z2); z2 = (*x++ >> 16) * y + (*xc & 0xffff) + carry; carry = z2 >> 16; } while (x < xae); *xc = z2; } } #else for (; xb < xbe; xc0++) { if (y = *xb++) { x = xa; xc = xc0; carry = 0; do { z = *x++ * y + *xc + carry; carry = z >> 16; *xc++ = z & 0xffff; } while (x < xae); *xc = carry; } } #endif for (xc0 = c->_x, xc = xc0 + wc; wc > 0 && !*--xc; --wc); c->_wds = wc; return c; } _Bigint * pow5mult (_Bigint * b, int k) { _Bigint *b1, *p5, *p51; int i; static const int p05[3] = {5, 25, 125}; if ((i = k & 3) != 0) b = multadd (b, p05[i - 1], 0); if (!(k >>= 2)) return b; p5 = i2b (625); for (;;) { if (k & 1) { b1 = mult (b, p5); Bfree (b); b = b1; } if (!(k >>= 1)) break; p51 = mult (p5, p5); Bfree(p5); p5 = p51; } Bfree(p5); return b; } _Bigint * lshift (_Bigint * b, int k) { int i, k1, n, n1; _Bigint *b1; __ULong *x, *x1, *xe, z; if (!b) return NULL; #ifdef Pack_32 n = k >> 5; #else n = k >> 4; #endif k1 = b->_k; n1 = n + b->_wds + 1; for (i = b->_maxwds; n1 > i; i <<= 1) k1++; b1 = Balloc (k1); if (!b1) goto bail; x1 = b1->_x; for (i = 0; i < n; i++) *x1++ = 0; x = b->_x; xe = x + b->_wds; #ifdef Pack_32 if (k &= 0x1f) { k1 = 32 - k; z = 0; do { *x1++ = *x << k | z; z = *x++ >> k1; } while (x < xe); if ((*x1 = z) != 0) ++n1; } #else if (k &= 0xf) { k1 = 16 - k; z = 0; do { *x1++ = *x << k & 0xffff | z; z = *x++ >> k1; } while (x < xe); if (*x1 = z) ++n1; } #endif else do *x1++ = *x++; while (x < xe); b1->_wds = n1 - 1; bail: Bfree (b); return b1; } int cmp (_Bigint * a, _Bigint * b) { __ULong *xa, *xa0, *xb, *xb0; int i, j; if (!a || !b) return 0; i = a->_wds; j = b->_wds; #ifdef DEBUG if (i > 1 && !a->_x[i - 1]) Bug ("cmp called with a->_x[a->_wds-1] == 0"); if (j > 1 && !b->_x[j - 1]) Bug ("cmp called with b->_x[b->_wds-1] == 0"); #endif if (i -= j) return i; xa0 = a->_x; xa = xa0 + j; xb0 = b->_x; xb = xb0 + j; for (;;) { if (*--xa != *--xb) return *xa < *xb ? -1 : 1; if (xa <= xa0) break; } return 0; } _Bigint * diff ( _Bigint * a, _Bigint * b) { _Bigint *c; int i, wa, wb; __Long borrow, y; /* We need signed shifts here. */ __ULong *xa, *xae, *xb, *xbe, *xc; #ifdef Pack_32 __Long z; #endif i = cmp (a, b); if (!i) { c = Balloc (0); if (!c) return NULL; c->_wds = 1; c->_x[0] = 0; return c; } if (i < 0) { c = a; a = b; b = c; i = 1; } else i = 0; c = Balloc (a->_k); if (!c) return NULL; c->_sign = i; wa = a->_wds; xa = a->_x; xae = xa + wa; wb = b->_wds; xb = b->_x; xbe = xb + wb; xc = c->_x; borrow = 0; #ifdef Pack_32 do { y = (*xa & 0xffff) - (*xb & 0xffff) + borrow; borrow = y >> 16; Sign_Extend (borrow, y); z = (*xa++ >> 16) - (*xb++ >> 16) + borrow; borrow = z >> 16; Sign_Extend (borrow, z); Storeinc (xc, z, y); } while (xb < xbe); while (xa < xae) { y = (*xa & 0xffff) + borrow; borrow = y >> 16; Sign_Extend (borrow, y); z = (*xa++ >> 16) + borrow; borrow = z >> 16; Sign_Extend (borrow, z); Storeinc (xc, z, y); } #else do { y = *xa++ - *xb++ + borrow; borrow = y >> 16; Sign_Extend (borrow, y); *xc++ = y & 0xffff; } while (xb < xbe); while (xa < xae) { y = *xa++ + borrow; borrow = y >> 16; Sign_Extend (borrow, y); *xc++ = y & 0xffff; } #endif while (!*--xc) wa--; c->_wds = wa; return c; } double ulp (double _x) { union double_union x, a; register __Long L; x.d = _x; L = (word0 (x) & Exp_mask) - (P - 1) * Exp_msk1; #ifndef Sudden_Underflow if (L > 0) { #endif #ifdef IBM L |= Exp_msk1 >> 4; #endif word0 (a) = L; #ifndef _DOUBLE_IS_32BITS word1 (a) = 0; #endif #ifndef Sudden_Underflow } else { L = -L >> Exp_shift; if (L < Exp_shift) { word0 (a) = 0x80000 >> L; #ifndef _DOUBLE_IS_32BITS word1 (a) = 0; #endif } else { word0 (a) = 0; L -= Exp_shift; #ifndef _DOUBLE_IS_32BITS word1 (a) = L >= 31 ? 1 : 1 << (31 - L); #endif } } #endif return a.d; } double b2d (_Bigint * a, int *e) { __ULong *xa, *xa0, w, y, z; int k; union double_union d; #ifdef VAX __ULong d0, d1; #else #define d0 word0(d) #define d1 word1(d) #endif xa0 = a->_x; xa = xa0 + a->_wds; y = *--xa; #ifdef DEBUG if (!y) Bug ("zero y in b2d"); #endif k = hi0bits (y); *e = 32 - k; #ifdef Pack_32 if (k < Ebits) { d0 = Exp_1 | y >> (Ebits - k); w = xa > xa0 ? *--xa : 0; #ifndef _DOUBLE_IS_32BITS d1 = y << ((32 - Ebits) + k) | w >> (Ebits - k); #endif goto ret_d; } z = xa > xa0 ? *--xa : 0; if (k -= Ebits) { d0 = Exp_1 | y << k | z >> (32 - k); y = xa > xa0 ? *--xa : 0; #ifndef _DOUBLE_IS_32BITS d1 = z << k | y >> (32 - k); #endif } else { d0 = Exp_1 | y; #ifndef _DOUBLE_IS_32BITS d1 = z; #endif } #else if (k < Ebits + 16) { z = xa > xa0 ? *--xa : 0; d0 = Exp_1 | y << k - Ebits | z >> Ebits + 16 - k; w = xa > xa0 ? *--xa : 0; y = xa > xa0 ? *--xa : 0; d1 = z << k + 16 - Ebits | w << k - Ebits | y >> 16 + Ebits - k; goto ret_d; } z = xa > xa0 ? *--xa : 0; w = xa > xa0 ? *--xa : 0; k -= Ebits + 16; d0 = Exp_1 | y << k + 16 | z << k | w >> 16 - k; y = xa > xa0 ? *--xa : 0; d1 = w << k + 16 | y << k; #endif ret_d: #ifdef VAX word0 (d) = d0 >> 16 | d0 << 16; word1 (d) = d1 >> 16 | d1 << 16; #else #undef d0 #undef d1 #endif return d.d; } _Bigint * d2b ( double _d, int *e, int *bits) { union double_union d; _Bigint *b; int de, i, k; __ULong *x, y, z; #ifdef VAX __ULong d0, d1; #endif d.d = _d; #ifdef VAX d0 = word0 (d) >> 16 | word0 (d) << 16; d1 = word1 (d) >> 16 | word1 (d) << 16; #else #define d0 word0(d) #define d1 word1(d) d.d = _d; #endif #ifdef Pack_32 b = Balloc (1); #else b = Balloc (2); #endif if (!b) return NULL; x = b->_x; z = d0 & Frac_mask; d0 &= 0x7fffffff; /* clear sign bit, which we ignore */ #ifdef Sudden_Underflow de = (int) (d0 >> Exp_shift); #ifndef IBM z |= Exp_msk11; #endif #else if ((de = (int) (d0 >> Exp_shift)) != 0) z |= Exp_msk1; #endif #ifdef Pack_32 #ifndef _DOUBLE_IS_32BITS if (d1) { y = d1; k = lo0bits (&y); if (k) { x[0] = y | z << (32 - k); z >>= k; } else x[0] = y; i = b->_wds = (x[1] = z) ? 2 : 1; } else #endif { #ifdef DEBUG if (!z) Bug ("Zero passed to d2b"); #endif k = lo0bits (&z); x[0] = z; i = b->_wds = 1; #ifndef _DOUBLE_IS_32BITS k += 32; #endif } #else if (d1) { y = d1; k = lo0bits (&y); if (k) if (k >= 16) { x[0] = y | z << 32 - k & 0xffff; x[1] = z >> k - 16 & 0xffff; x[2] = z >> k; i = 2; } else { x[0] = y & 0xffff; x[1] = y >> 16 | z << 16 - k & 0xffff; x[2] = z >> k & 0xffff; x[3] = z >> k + 16; i = 3; } else { x[0] = y & 0xffff; x[1] = y >> 16; x[2] = z & 0xffff; x[3] = z >> 16; i = 3; } } else { #ifdef DEBUG if (!z) Bug ("Zero passed to d2b"); #endif k = lo0bits (&z); if (k >= 16) { x[0] = z; i = 0; } else { x[0] = z & 0xffff; x[1] = z >> 16; i = 1; } k += 32; } while (!x[i]) --i; b->_wds = i + 1; #endif #ifndef Sudden_Underflow if (de) { #endif #ifdef IBM *e = (de - Bias - (P - 1) << 2) + k; *bits = 4 * P + 8 - k - hi0bits (word0 (d) & Frac_mask); #else *e = de - Bias - (P - 1) + k; *bits = P - k; #endif #ifndef Sudden_Underflow } else { *e = de - Bias - (P - 1) + 1 + k; #ifdef Pack_32 *bits = 32 * i - hi0bits (x[i - 1]); #else *bits = (i + 2) * 16 - hi0bits (x[i]); #endif } #endif return b; } #undef d0 #undef d1 double ratio (_Bigint * a, _Bigint * b) { union double_union da, db; int k, ka, kb; da.d = b2d (a, &ka); db.d = b2d (b, &kb); #ifdef Pack_32 k = ka - kb + 32 * (a->_wds - b->_wds); #else k = ka - kb + 16 * (a->_wds - b->_wds); #endif #ifdef IBM if (k > 0) { word0 (da) += (k >> 2) * Exp_msk1; if (k &= 3) da.d *= 1 << k; } else { k = -k; word0 (db) += (k >> 2) * Exp_msk1; if (k &= 3) db.d *= 1 << k; } #else if (k > 0) word0 (da) += k * Exp_msk1; else { k = -k; word0 (db) += k * Exp_msk1; } #endif return da.d / db.d; } const double tens[] = { 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, 1e22, 1e23, 1e24 }; #if !defined(_DOUBLE_IS_32BITS) && !defined(__v800) const double bigtens[] = {1e16, 1e32, 1e64, 1e128, 1e256}; const double tinytens[] = {1e-16, 1e-32, 1e-64, 1e-128, 1e-256}; #else const double bigtens[] = {1e16, 1e32}; const double tinytens[] = {1e-16, 1e-32}; #endif double _mprec_log10 (int dig) { double v = 1.0; if (dig < 24) return tens[dig]; while (dig > 0) { v *= 10; dig--; } return v; } void copybits (__ULong *c, int n, _Bigint *b) { __ULong *ce, *x, *xe; #ifdef Pack_16 int nw, nw1; #endif ce = c + ((n-1) >> kshift) + 1; x = b->_x; #ifdef Pack_32 xe = x + b->_wds; while(x < xe) *c++ = *x++; #else nw = b->_wds; nw1 = nw & 1; for(xe = x + (nw - nw1); x < xe; x += 2) Storeinc(c, x[1], x[0]); if (nw1) *c++ = *x; #endif while(c < ce) *c++ = 0; } __ULong any_on (_Bigint *b, int k) { int n, nwds; __ULong *x, *x0, x1, x2; x = b->_x; nwds = b->_wds; n = k >> kshift; if (n > nwds) n = nwds; else if (n < nwds && (k &= kmask)) { x1 = x2 = x[n]; x1 >>= k; x1 <<= k; if (x1 != x2) return 1; } x0 = x; x += n; while(x > x0) if (*--x) return 1; return 0; } picolibc-1.7.4/newlib/libc/stdlib/mprec.h000066400000000000000000000261061414576234500202600ustar00rootroot00000000000000/**************************************************************** * * The author of this software is David M. Gay. * * Copyright (c) 1991 by AT&T. * * Permission to use, copy, modify, and distribute this software for any * purpose without fee is hereby granted, provided that this entire notice * is included in all copies of any software which is or includes a copy * or modification of this software and in all copies of the supporting * documentation for such software. * * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED * WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR AT&T MAKES ANY * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. * ***************************************************************/ /* Please send bug reports to David M. Gay AT&T Bell Laboratories, Room 2C-463 600 Mountain Avenue Murray Hill, NJ 07974-2070 U.S.A. dmg@research.att.com or research!dmg */ #include #include #include #include #include #include #include #include "../locale/setlocale.h" #ifdef __IEEE_LITTLE_ENDIAN #define IEEE_8087 #endif #ifdef __IEEE_BIG_ENDIAN #define IEEE_MC68k #endif #ifdef __Z8000__ #define Just_16 #endif #ifdef DEBUG #include "stdio.h" #define Bug(x) {fprintf(stderr, "%s\n", x); exit(1);} #endif #ifdef Unsigned_Shifts #define Sign_Extend(a,b) if (b < 0) a |= (__uint32_t)0xffff0000; #else #define Sign_Extend(a,b) /*no-op*/ #endif #if defined(IEEE_8087) + defined(IEEE_MC68k) + defined(VAX) + defined(IBM) != 1 Exactly one of IEEE_8087, IEEE_MC68k, VAX, or IBM should be defined. #endif /* If we are going to examine or modify specific bits in a double using the word0 and/or word1 macros, then we must wrap the double inside a union. This is necessary to avoid undefined behavior according to the ANSI C spec. */ union double_union { double d; __uint32_t i[2]; }; #ifdef IEEE_8087 #define word0(x) (x.i[1]) #define word1(x) (x.i[0]) #else #define word0(x) (x.i[0]) #define word1(x) (x.i[1]) #endif /* The following is taken from gdtoaimp.h for use with new strtod, but adjusted to avoid invalid type-punning. */ typedef __int32_t Long; /* Unfortunately, because __ULong might be a different type than __uint32_t, we can't re-use union double_union as-is without further edits in strtod.c. */ typedef union { double d; __ULong i[2]; } U; #define dword0(x) word0(x) #define dword1(x) word1(x) #define dval(x) (x.d) #undef SI #ifdef Sudden_Underflow #define SI 1 #else #define SI 0 #endif #define Storeinc(a,b,c) (*(a)++ = ((b) << 16) | ((c) & 0xffff)) /* #define P DBL_MANT_DIG */ /* Ten_pmax = floor(P*log(2)/log(5)) */ /* Bletch = (highest power of 2 < DBL_MAX_10_EXP) / 16 */ /* Quick_max = floor((P-1)*log(FLT_RADIX)/log(10) - 1) */ /* Int_max = floor(P*log(FLT_RADIX)/log(10) - 1) */ #if defined(IEEE_8087) + defined(IEEE_MC68k) #if defined (_DOUBLE_IS_32BITS) #define Exp_shift 23 #define Exp_shift1 23 #define Exp_msk1 ((__uint32_t)0x00800000L) #define Exp_msk11 ((__uint32_t)0x00800000L) #define Exp_mask ((__uint32_t)0x7f800000L) #define P 24 #define Bias 127 #define NO_HEX_FP /* not supported in this case */ #define IEEE_Arith #define Emin (-126) #define Exp_1 ((__uint32_t)0x3f800000L) #define Exp_11 ((__uint32_t)0x3f800000L) #define Ebits 8 #define Frac_mask ((__uint32_t)0x007fffffL) #define Frac_mask1 ((__uint32_t)0x007fffffL) #define Ten_pmax 10 #define Sign_bit ((__uint32_t)0x80000000L) #define Ten_pmax 10 #define Bletch 2 #define Bndry_mask ((__uint32_t)0x007fffffL) #define Bndry_mask1 ((__uint32_t)0x007fffffL) #define LSB 1 #define Sign_bit ((__uint32_t)0x80000000L) #define Log2P 1 #define Tiny0 0 #define Tiny1 1 #define Quick_max 5 #define Int_max 6 #define Infinite(x) (word0(x) == ((__uint32_t)0x7f800000L)) #undef word0 #undef word1 #undef dword0 #undef dword1 #define word0(x) (x.i[0]) #define word1(x) 0 #define dword0(x) word0(x) #define dword1(x) 0 #else #define Exp_shift 20 #define Exp_shift1 20 #define Exp_msk1 ((__uint32_t)0x100000L) #define Exp_msk11 ((__uint32_t)0x100000L) #define Exp_mask ((__uint32_t)0x7ff00000L) #define P 53 #define Bias 1023 #define IEEE_Arith #define Emin (-1022) #define Exp_1 ((__uint32_t)0x3ff00000L) #define Exp_11 ((__uint32_t)0x3ff00000L) #define Ebits 11 #define Frac_mask ((__uint32_t)0xfffffL) #define Frac_mask1 ((__uint32_t)0xfffffL) #define Ten_pmax 22 #define Bletch 0x10 #define Bndry_mask ((__uint32_t)0xfffffL) #define Bndry_mask1 ((__uint32_t)0xfffffL) #define LSB 1 #define Sign_bit ((__uint32_t)0x80000000L) #define Log2P 1 #define Tiny0 0 #define Tiny1 1 #define Quick_max 14 #define Int_max 14 #define Infinite(x) (word0(x) == ((__uint32_t)0x7ff00000L)) /* sufficient test for here */ #endif /* !_DOUBLE_IS_32BITS */ #ifndef Flt_Rounds #ifdef FLT_ROUNDS #define Flt_Rounds FLT_ROUNDS #else #define Flt_Rounds 1 #endif #endif /*Flt_Rounds*/ #else /* !IEEE_8087 && !IEEE_MC68k */ #undef Sudden_Underflow #define Sudden_Underflow #ifdef IBM #define Flt_Rounds 0 #define Exp_shift 24 #define Exp_shift1 24 #define Exp_msk1 ((__uint32_t)0x1000000L) #define Exp_msk11 ((__uint32_t)0x1000000L) #define Exp_mask ((__uint32_t)0x7f000000L) #define P 14 #define Bias 65 #define Exp_1 ((__uint32_t)0x41000000L) #define Exp_11 ((__uint32_t)0x41000000L) #define Ebits 8 /* exponent has 7 bits, but 8 is the right value in b2d */ #define Frac_mask ((__uint32_t)0xffffffL) #define Frac_mask1 ((__uint32_t)0xffffffL) #define Bletch 4 #define Ten_pmax 22 #define Bndry_mask ((__uint32_t)0xefffffL) #define Bndry_mask1 ((__uint32_t)0xffffffL) #define LSB 1 #define Sign_bit ((__uint32_t)0x80000000L) #define Log2P 4 #define Tiny0 ((__uint32_t)0x100000L) #define Tiny1 0 #define Quick_max 14 #define Int_max 15 #else /* VAX */ #define Flt_Rounds 1 #define Exp_shift 23 #define Exp_shift1 7 #define Exp_msk1 0x80 #define Exp_msk11 ((__uint32_t)0x800000L) #define Exp_mask ((__uint32_t)0x7f80L) #define P 56 #define Bias 129 #define Exp_1 ((__uint32_t)0x40800000L) #define Exp_11 ((__uint32_t)0x4080L) #define Ebits 8 #define Frac_mask ((__uint32_t)0x7fffffL) #define Frac_mask1 ((__uint32_t)0xffff007fL) #define Ten_pmax 24 #define Bletch 2 #define Bndry_mask ((__uint32_t)0xffff007fL) #define Bndry_mask1 ((__uint32_t)0xffff007fL) #define LSB ((__uint32_t)0x10000L) #define Sign_bit ((__uint32_t)0x8000L) #define Log2P 1 #define Tiny0 0x80 #define Tiny1 0 #define Quick_max 15 #define Int_max 15 #endif #endif #ifndef IEEE_Arith #define ROUND_BIASED #else #define Scale_Bit 0x10 #if defined(_DOUBLE_IS_32BITS) && defined(__v800) #define n_bigtens 2 #else #define n_bigtens 5 #endif #endif #ifdef IBM #define n_bigtens 3 #endif #ifdef VAX #define n_bigtens 2 #endif #ifndef __NO_INFNAN_CHECK #define INFNAN_CHECK #endif #ifdef RND_PRODQUOT #define rounded_product(a,b) a = rnd_prod(a, b) #define rounded_quotient(a,b) a = rnd_quot(a, b) #ifdef KR_headers extern double rnd_prod(), rnd_quot(); #else extern double rnd_prod(double, double), rnd_quot(double, double); #endif #else #define rounded_product(a,b) a *= b #define rounded_quotient(a,b) a /= b #endif #define Big0 (Frac_mask1 | Exp_msk1*(DBL_MAX_EXP+Bias-1)) #define Big1 ((__uint32_t)0xffffffffL) #ifndef Just_16 /* When Pack_32 is not defined, we store 16 bits per 32-bit long. * This makes some inner loops simpler and sometimes saves work * during multiplications, but it often seems to make things slightly * slower. Hence the default is now to store 32 bits per long. */ #ifndef Pack_32 #define Pack_32 #endif #else /* Just_16 */ #ifndef Pack_16 #define Pack_16 #endif #endif /* Just_16 */ #ifdef Pack_32 #define ULbits 32 #define kshift 5 #define kmask 31 #define ALL_ON 0xffffffff #else #define ULbits 16 #define kshift 4 #define kmask 15 #define ALL_ON 0xffff #endif #ifdef __cplusplus extern "C" double strtod(const char *s00, char **se); extern "C" char *dtoa(double d, int mode, int ndigits, int *decpt, int *sign, char **rve); #endif typedef struct _Bigint _Bigint; #define Balloc _Balloc #define Bfree _Bfree #define multadd __multadd #define s2b __s2b #define lo0bits __lo0bits #define hi0bits __hi0bits #define i2b __i2b #define mult __multiply #define pow5mult __pow5mult #define lshift __lshift #define match __match #define cmp __mcmp #define diff __mdiff #define ulp __ulp #define b2d __b2d #define d2b __d2b #define ratio __ratio #define any_on __any_on #define gethex __gethex #define copybits __copybits #define hexnan __hexnan #if !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) && !defined(_SMALL_HEXDIG) #define __get_hexdig(x) __hexdig[x] /* NOTE: must evaluate arg only once */ #else /* !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) && !defined(_SMALL_HEXDIG) */ #define __get_hexdig(x) __hexdig_fun(x) #endif /* !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) && !defined(_SMALL_HEXDIG) */ #define tens __mprec_tens #define bigtens __mprec_bigtens #define tinytens __mprec_tinytens char *__alloc_dtoa_result(int len); int __mprec_register_exit(void); struct _Bigint { int _k, _maxwds, _sign, _wds; uint32_t _x[1]; }; struct FPI; double ulp (double x); double b2d (_Bigint *a , int *e); _Bigint * Balloc (int k); void Bfree (_Bigint *v); _Bigint * multadd (_Bigint *, int, int); _Bigint * s2b (const char*, int, int, __ULong); _Bigint * i2b (int); _Bigint * mult (_Bigint *, _Bigint *); _Bigint * pow5mult (_Bigint *, int k); int hi0bits (__ULong); int lo0bits (__ULong *); _Bigint * d2b (double d, int *e, int *bits); _Bigint * lshift (_Bigint *b, int k); int match (const char**, char*); _Bigint * diff (_Bigint *a, _Bigint *b); int cmp (_Bigint *a, _Bigint *b); int gethex (const char **sp, const struct FPI *fpi, Long *exp, _Bigint **bp, int sign, locale_t loc); double ratio (_Bigint *a, _Bigint *b); __ULong any_on (_Bigint *b, int k); void copybits (__ULong *c, int n, _Bigint *b); double _strtod_l (const char *__restrict s00, char **__restrict se, locale_t loc); #if defined (_HAVE_LONG_DOUBLE) && !defined (_LDBL_EQ_DBL) || 1 int _strtorx_l (const char *, char **, int, void *, locale_t); int _strtodg_l (const char *s00, char **se, struct FPI *fpi, Long *exp, __ULong *bits, locale_t); #endif /* _HAVE_LONG_DOUBLE && !_LDBL_EQ_DBL */ #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) || defined(_SMALL_HEXDIG) unsigned char __hexdig_fun (unsigned char); #endif /* !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) && !defined(_SMALL_HEXDIG) */ #ifdef INFNAN_CHECK int hexnan (const char **sp, const struct FPI *fpi, __ULong *x0); #endif #define Bcopy(x,y) memcpy((char *)&x->_sign, (char *)&y->_sign, y->_wds*sizeof(__Long) + 2*sizeof(int)) extern const double tinytens[]; extern const double bigtens[]; extern const double tens[]; #if !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) && !defined(_SMALL_HEXDIG) extern const unsigned char __hexdig[]; #endif /* !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) && !defined(_SMALL_HEXDIG) */ double _mprec_log10 (int); picolibc-1.7.4/newlib/libc/stdlib/mrand48.c000066400000000000000000000012621414576234500204160ustar00rootroot00000000000000/* * Copyright (c) 1993 Martin Birgmeier * All rights reserved. * * You may redistribute unmodified or modified versions of this source * code provided that the above copyright notice and this and the * following conditions are retained. * * This software is provided ``as is'', and comes with no warranties * of any kind. I shall in no event be liable for anything that happens * to anyone/anything when using this software. */ #include "rand48.h" long _mrand48_r (struct _rand48 *r) { __dorand48(r, r->_seed); return ((long) r->_seed[2] << 16) + (long) r->_seed[1]; } #ifndef _REENT_ONLY long mrand48 (void) { return _mrand48_r (&_rand48); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/msize.c000066400000000000000000000005601414576234500202700ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ #ifndef MALLOC_PROVIDED /* msize.c -- a wrapper for malloc_usable_size. */ #include <_ansi.h> #include #include #include #ifndef _REENT_ONLY size_t malloc_usable_size (void *ptr) { return _malloc_usable_size_r (_REENT, ptr); } #endif #endif picolibc-1.7.4/newlib/libc/stdlib/mstats.c000066400000000000000000000054111414576234500204540ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ /* VxWorks provides its own version of malloc, and we can't use this one because VxWorks does not provide sbrk. So we have a hook to not compile this code. */ #ifdef MALLOC_PROVIDED int _dummy_mstats = 1; #else /* FUNCTION <>, <>, <>---malloc support INDEX mallinfo INDEX malloc_stats INDEX mallopt INDEX _mallinfo_r INDEX _malloc_stats_r INDEX _mallopt_r SYNOPSIS #include struct mallinfo mallinfo(void); void malloc_stats(void); int mallopt(int <[parameter]>, <[value]>); struct mallinfo _mallinfo_r(void *<[reent]>); void _malloc_stats_r(void *<[reent]>); int _mallopt_r(void *<[reent]>, int <[parameter]>, <[value]>); DESCRIPTION <> returns a structure describing the current state of memory allocation. The structure is defined in malloc.h. The following fields are defined: <> is the total amount of space in the heap; <> is the number of chunks which are not in use; <> is the total amount of space allocated by <>; <> is the total amount of space not in use; <> is the size of the top most memory block. <> print some statistics about memory allocation on standard error. <> takes a parameter and a value. The parameters are defined in malloc.h, and may be one of the following: <> sets the maximum amount of unused space in the top most block before releasing it back to the system in <> (the space is released by calling <<_sbrk_r>> with a negative argument); <> is the amount of padding to allocate whenever <<_sbrk_r>> is called to allocate more space. The alternate functions <<_mallinfo_r>>, <<_malloc_stats_r>>, and <<_mallopt_r>> are reentrant versions. The extra argument <[reent]> is a pointer to a reentrancy structure. RETURNS <> returns a mallinfo structure. The structure is defined in malloc.h. <> does not return a result. <> returns zero if the parameter could not be set, or non-zero if it could be set. PORTABILITY <> and <> are provided by SVR4, but <> takes different parameters on different systems. <> is not portable. */ #include <_ansi.h> #include #include #include #if !defined (_ELIX_LEVEL) || _ELIX_LEVEL >= 2 /* mstats is now compatibility code. It used to be real, for a previous version of the malloc routines. It now just calls malloc_stats. */ #ifndef _REENT_ONLY void mstats (char *s) { fprintf (stderr, "Memory allocation statistics %s\n", s); malloc_stats (); } #endif #endif /* !_ELIX_LEVEL || _ELIX_LEVEL >= 2 */ #endif /* ! defined (MALLOC_PROVIDED) */ picolibc-1.7.4/newlib/libc/stdlib/mtrim.c000066400000000000000000000005061414576234500202710ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ #ifndef MALLOC_PROVIDED /* mtrim.c -- a wrapper for malloc_trim. */ #include <_ansi.h> #include #include #ifndef _REENT_ONLY int malloc_trim (size_t pad) { return _malloc_trim_r (_REENT, pad); } #endif #endif picolibc-1.7.4/newlib/libc/stdlib/mul_overflow.h000066400000000000000000000014611414576234500216670ustar00rootroot00000000000000#ifdef HAVE_BUILTIN_MUL_OVERFLOW // gcc should use the correct one here #define mul_overflow __builtin_mul_overflow #else /** * Since __builtin_mul_overflow doesn't seem to exist, * use a (slower) software implementation instead. * This is only implemented for size_t, so in case mallocr.c's INTERNAL_SIZE_T * is non default, mallocr.c throws an #error. */ static int mul_overflow_size_t(size_t a, size_t b, size_t *res) { // always fill the result (gcc doesn't define what happens here) if (res) *res = a * b; // multiply with 0 can not overflow (and avoid div-by-zero): if (a == 0 || b == 0) return 1; // check if overflow would happen: if ( (a > SIZE_MAX / b) || (b > SIZE_MAX / a)) return 1; return 0; } #define mul_overflow mul_overflow_size_t #endif picolibc-1.7.4/newlib/libc/stdlib/nano-malloc-calloc.c000066400000000000000000000027521414576234500226010ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define DEFINE_CALLOC #include "nano-mallocr.c" picolibc-1.7.4/newlib/libc/stdlib/nano-malloc-cfree.c000066400000000000000000000027511414576234500224270ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define DEFINE_CFREE #include "nano-mallocr.c" picolibc-1.7.4/newlib/libc/stdlib/nano-malloc-free.c000066400000000000000000000027501414576234500222630ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define DEFINE_FREE #include "nano-mallocr.c" picolibc-1.7.4/newlib/libc/stdlib/nano-malloc-mallinfo.c000066400000000000000000000032011414576234500231330ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2019 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #define DEFINE_MALLINFO #include "nano-mallocr.c" picolibc-1.7.4/newlib/libc/stdlib/nano-malloc-malloc.c000066400000000000000000000027521414576234500226130ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define DEFINE_MALLOC #include "nano-mallocr.c" picolibc-1.7.4/newlib/libc/stdlib/nano-malloc-malloc_stats.c000066400000000000000000000032051414576234500240230ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2019 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #define DEFINE_MALLOC_STATS #include "nano-mallocr.c" picolibc-1.7.4/newlib/libc/stdlib/nano-malloc-malloc_usable_size.c000066400000000000000000000032131414576234500251710ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2019 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #define DEFINE_MALLOC_USABLE_SIZE #include "nano-mallocr.c" picolibc-1.7.4/newlib/libc/stdlib/nano-malloc-mallopt.c000066400000000000000000000027531414576234500230150ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define DEFINE_MALLOPT #include "nano-mallocr.c" picolibc-1.7.4/newlib/libc/stdlib/nano-malloc-memalign.c000066400000000000000000000027541414576234500231370ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define DEFINE_MEMALIGN #include "nano-mallocr.c" picolibc-1.7.4/newlib/libc/stdlib/nano-malloc-pvalloc.c000066400000000000000000000027531414576234500230050ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define DEFINE_PVALLOC #include "nano-mallocr.c" picolibc-1.7.4/newlib/libc/stdlib/nano-malloc-realloc.c000066400000000000000000000027531414576234500227660ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define DEFINE_REALLOC #include "nano-mallocr.c" picolibc-1.7.4/newlib/libc/stdlib/nano-malloc-valloc.c000066400000000000000000000027521414576234500226240ustar00rootroot00000000000000/* Copyright © 2019 Keith Packard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define DEFINE_VALLOC #include "nano-mallocr.c" picolibc-1.7.4/newlib/libc/stdlib/nano-mallocr.c000066400000000000000000000453541414576234500215350ustar00rootroot00000000000000/* * Copyright (c) 2012, 2013 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Implementation of <> <> <> <>, optional * as to be reenterable. * * Interface documentation refer to malloc.c. */ #define _DEFAULT_SOURCE #include #include #include #include #include #include #include #include #if MALLOC_DEBUG #include #define MALLOC_LOCK do { __LIBC_LOCK(); __malloc_validate(); } while(0) #define MALLOC_UNLOCK do { __malloc_validate(); __LIBC_UNLOCK(); } while(0) #else #define MALLOC_LOCK __LIBC_LOCK() #define MALLOC_UNLOCK __LIBC_UNLOCK() #undef assert #define assert(x) ((void)0) #endif #ifndef MAX #define MAX(a,b) ((a) >= (b) ? (a) : (b)) #endif #define ALIGN_TO(size, align) \ (((size) + (align) -1L) & ~((align) -1L)) #define ALIGN_PTR(ptr, align) (void *) ALIGN_TO((uintptr_t) ptr, align) typedef struct { char c; union { void *p; double d; long long ll; size_t s; } u; } align_chunk_t; typedef struct { char c; size_t s; } align_head_t; typedef struct malloc_chunk { /* -------------------------------------- * chunk->| size | * mem_ptr->| When allocated: data | * | When freed: pointer to next free | * | chunk | * -------------------------------------- * * mem_ptr is aligned to MALLOC_CHUNK_ALIGN. That means that * the chunk may not be aligned to MALLOC_CHUNK_ALIGN. But * it will be aligned to MALLOC_HEAD_ALIGN. * * size is set so that a chunk starting at chunk+size will be * aligned correctly */ /* size of the allocated payload area */ size_t size; /* pointer to next chunk */ struct malloc_chunk * next; } chunk_t; /* Alignment of allocated chunk. Compute the alignment required from a * range of types */ #define MALLOC_CHUNK_ALIGN (offsetof(align_chunk_t, u)) /* Alignment of the header. Never larger than MALLOC_CHUNK_ALIGN */ #define MALLOC_HEAD_ALIGN (offsetof(align_head_t, s)) /* Size of malloc header. Keep it aligned. */ #define MALLOC_HEAD ALIGN_TO(sizeof(size_t), MALLOC_HEAD_ALIGN) /* nominal "page size" */ #define MALLOC_PAGE_ALIGN (0x1000) /* Minimum allocation size */ #define MALLOC_MINSIZE ALIGN_TO(sizeof(chunk_t), MALLOC_HEAD_ALIGN) /* Maximum allocation size */ #define MALLOC_MAXSIZE (SIZE_MAX - (MALLOC_HEAD + 2*MALLOC_CHUNK_ALIGN)) /* Forward data declarations */ extern chunk_t * __malloc_free_list; extern char * __malloc_sbrk_start; extern char * __malloc_sbrk_top; /* Forward function declarations */ void * malloc(size_t); void free (void * free_p); void cfree(void * ptr); void * calloc(size_t n, size_t elem); void malloc_stats(void); size_t malloc_usable_size(void * ptr); void * realloc(void * ptr, size_t size); void * memalign(size_t align, size_t s); int mallopt(int parameter_number, int parameter_value); void * valloc(size_t s); void * pvalloc(size_t s); void __malloc_validate(void); void __malloc_validate_block(chunk_t *r); void * __malloc_sbrk_aligned(size_t s); bool __malloc_grow_chunk(chunk_t *c, size_t new_size); /* Work around compiler optimizing away stores to 'size' field before * call to free. */ #ifdef HAVE_ALIAS_ATTRIBUTE extern __typeof(free) __malloc_free; extern __typeof(malloc) __malloc_malloc; #else #define __malloc_free(x) free(x) #define __malloc_malloc(x) malloc(x) #endif /* convert storage pointer to chunk */ static inline chunk_t * ptr_to_chunk(void * ptr) { return (chunk_t *) ((char *) ptr - MALLOC_HEAD); } /* convert chunk to storage pointer */ static inline void * chunk_to_ptr(chunk_t *c) { return (char *) c + MALLOC_HEAD; } /* end of chunk -- address of first byte past chunk storage */ static inline void * chunk_end(chunk_t *c) { return (char *) c + c->size; } /* chunk size needed to hold 'malloc_size' bytes */ static inline size_t chunk_size(size_t malloc_size) { /* Keep all blocks aligned */ malloc_size = ALIGN_TO(malloc_size, MALLOC_CHUNK_ALIGN); /* Add space for header */ malloc_size += MALLOC_HEAD; /* fill the gap between chunks */ malloc_size += (MALLOC_CHUNK_ALIGN - MALLOC_HEAD_ALIGN); /* Make sure the requested size is big enough to hold a free chunk */ malloc_size = MAX(MALLOC_MINSIZE, malloc_size); return malloc_size; } /* available storage in chunk */ static inline size_t chunk_usable(chunk_t *c) { return c->size - MALLOC_HEAD; } /* assign 'size' to the specified chunk and return it to the free * pool */ static inline void make_free_chunk(chunk_t *c, size_t size) { c->size = size; __malloc_free(chunk_to_ptr(c)); } #ifdef DEFINE_MALLOC /* List list header of free blocks */ chunk_t * __malloc_free_list; /* Starting point of memory allocated from system */ char * __malloc_sbrk_start; char * __malloc_sbrk_top; /** Function __malloc_sbrk_aligned * Algorithm: * Use sbrk() to obtain more memory and ensure the storage is * MALLOC_CHUNK_ALIGN aligned. Optimise for the case that it is * already aligned - only ask for extra padding after we know we * need it */ void* __malloc_sbrk_aligned(size_t s) { char *p, *align_p; #ifdef __APPLE__ /* Mac OS X 'emulates' sbrk, but the * parameter is int, not intptr_t or ptrdiff_t, */ int d = (int) s; if (d < 0 || (size_t) d != s) return (void *)-1; #else ptrdiff_t d = (ptrdiff_t)s; if (d < 0) return (void *)-1; #endif p = sbrk(d); /* sbrk returns -1 if fail to allocate */ if (p == (void *)-1) return p; __malloc_sbrk_top = p + s; /* Adjust returned space so that the storage area * is MALLOC_CHUNK_ALIGN aligned and the head is * MALLOC_HEAD_ALIGN aligned. */ align_p = (char*)ALIGN_PTR(p + MALLOC_HEAD, MALLOC_CHUNK_ALIGN) - MALLOC_HEAD; if (align_p != p) { /* p is not aligned, ask for a few more bytes so that we have * s bytes reserved from align_p. This should only occur for * the first sbrk in a chunk of memory as all others should be * aligned to the right value as chunk sizes are selected to * make them abut in memory */ size_t adjust = align_p - p; char *extra = sbrk(adjust); if (extra != p + s) return (void *) -1; __malloc_sbrk_top = extra + adjust; } if (__malloc_sbrk_start == NULL) __malloc_sbrk_start = align_p; return align_p; } bool __malloc_grow_chunk(chunk_t *c, size_t new_size) { char *chunk_e = chunk_end(c); if (chunk_e != __malloc_sbrk_top) return false; size_t add_size = MAX(MALLOC_MINSIZE, new_size - c->size); /* Ask for the extra memory needed */ char *heap = __malloc_sbrk_aligned(add_size); /* Check if we got what we wanted */ if (heap == chunk_e) { /* Set size and return */ c->size += add_size; return true; } if (heap != (char *) -1) { /* sbrk returned unexpected memory, free it */ make_free_chunk((chunk_t *) heap, add_size); } return false; } /** Function malloc * Algorithm: * Walk through the free list to find the first match. If fails to find * one, call sbrk to allocate a new chunk_t. */ void * malloc(size_t s) { chunk_t **p, *r; char * ptr; size_t alloc_size; if (s > MALLOC_MAXSIZE) { errno = ENOMEM; return NULL; } alloc_size = chunk_size(s); MALLOC_LOCK; for (p = &__malloc_free_list; (r = *p) != NULL; p = &r->next) { if (r->size >= alloc_size) { size_t rem = r->size - alloc_size; if (rem >= MALLOC_MINSIZE) { /* Find a chunk_t that much larger than required size, break * it into two chunks and return the first one */ chunk_t *s = (chunk_t *)((char *)r + alloc_size); s->size = rem; s->next = r->next; *p = s; r->size = alloc_size; } else { /* Find a chunk_t that is exactly the size or slightly bigger * than requested size, just return this chunk_t */ *p = r->next; } break; } if (!r->next && __malloc_grow_chunk(r, alloc_size)) { /* Grow the last chunk in memory to the requested size, * just return it */ *p = r->next; break; } } MALLOC_UNLOCK; /* Failed to find a appropriate chunk_t. Ask for more memory */ if (r == NULL) { r = __malloc_sbrk_aligned(alloc_size); /* sbrk returns -1 if fail to allocate */ if (r == (void *)-1) { errno = ENOMEM; MALLOC_UNLOCK; return NULL; } r->size = alloc_size; } ptr = (char *)r + MALLOC_HEAD; memset(ptr, '\0', alloc_size - MALLOC_HEAD); return ptr; } #ifdef HAVE_ALIAS_ATTRIBUTE #pragma GCC diagnostic push #ifndef __clang__ #pragma GCC diagnostic ignored "-Wmissing-attributes" #endif __strong_reference(malloc, __malloc_malloc); #pragma GCC diagnostic pop #endif #endif /* DEFINE_MALLOC */ #ifdef DEFINE_FREE /** Function free * Implementation of libc free. * Algorithm: * Maintain a global free chunk_t single link list, headed by global * variable __malloc_free_list. * When free, insert the to-be-freed chunk_t into free list. The place to * insert should make sure all chunks are sorted by address from low to * high. Then merge with neighbor chunks if adjacent. */ void free (void * free_p) { chunk_t * p_to_free; chunk_t ** p, * r; if (free_p == NULL) return; p_to_free = ptr_to_chunk(free_p); p_to_free->next = NULL; #if MALLOC_DEBUG __malloc_validate_block(p_to_free); #endif MALLOC_LOCK; for (p = &__malloc_free_list; (r = *p) != NULL; p = &r->next) { /* Insert in address order */ if (p_to_free < r) break; /* Merge blocks together */ if (chunk_end(r) == p_to_free) { r->size += p_to_free->size; p_to_free = r; r = r->next; goto no_insert; } /* Check for double free */ if (p_to_free == r) { errno = ENOMEM; MALLOC_UNLOCK; return; } } p_to_free->next = r; *p = p_to_free; no_insert: /* Merge blocks together */ if (chunk_end(p_to_free) == r) { p_to_free->size += r->size; p_to_free->next = r->next; } MALLOC_UNLOCK; } #ifdef HAVE_ALIAS_ATTRIBUTE #pragma GCC diagnostic push #ifndef __clang__ #pragma GCC diagnostic ignored "-Wmissing-attributes" #endif __strong_reference(free, __malloc_free); __strong_reference(free, cfree); #pragma GCC diagnostic pop #endif #endif /* DEFINE_FREE */ #ifdef DEFINE_CFREE #ifndef HAVE_ALIAS_ATTRIBUTE void cfree(void * ptr) { free(ptr); } #endif #endif /* DEFINE_CFREE */ #ifdef DEFINE_CALLOC #include "mul_overflow.h" /* Function calloc * * Implement calloc by multiplying sizes (with overflow check) and * calling malloc (which sets to zero) */ void * calloc(size_t n, size_t elem) { size_t bytes; if (mul_overflow (n, elem, &bytes)) { errno = ENOMEM; return NULL; } return malloc(bytes); } #endif /* DEFINE_CALLOC */ #ifdef DEFINE_REALLOC /* Function realloc * * Implement either by merging adjacent free memory * or by calling malloc/memcpy */ void * realloc(void * ptr, size_t size) { void * mem; if (ptr == NULL) return malloc(size); if (size == 0) { free(ptr); return NULL; } size_t new_size = chunk_size(size); chunk_t *p_to_realloc = ptr_to_chunk(ptr); #if MALLOC_DEBUG __malloc_validate_block(p_to_realloc); #endif size_t old_size = p_to_realloc->size; /* See if we can avoid allocating new memory * when increasing the size */ if (new_size > old_size) { void *chunk_e = chunk_end(p_to_realloc); MALLOC_LOCK; if (__malloc_grow_chunk(p_to_realloc, new_size)) { /* clear new memory */ memset(chunk_e, '\0', new_size - old_size); /* adjust chunk_t size */ old_size = new_size; } else { chunk_t **p, *r; /* Check to see if there's a chunk_t of free space just past * the current block, merge it in in case that's useful */ for (p = &__malloc_free_list; (r = *p) != NULL; p = &r->next) { if (r == chunk_e) { size_t r_size = r->size; /* remove R from the free list */ *p = r->next; /* clear the memory from r */ memset(r, '\0', r_size); /* add it's size to our block */ old_size += r_size; p_to_realloc->size = old_size; break; } if (p_to_realloc < r) break; } } MALLOC_UNLOCK; } if (new_size <= old_size) { size_t extra = old_size - new_size; /* If there's enough space left over, split it out * and free it */ if (extra >= MALLOC_MINSIZE) { p_to_realloc->size = new_size; make_free_chunk(chunk_end(p_to_realloc), extra); } return ptr; } /* No short cuts, allocate new memory and copy */ mem = malloc(size); memcpy(mem, ptr, old_size - MALLOC_HEAD); free(ptr); return mem; } #endif /* DEFINE_REALLOC */ #ifdef DEFINE_MALLINFO volatile chunk_t *__malloc_block; void __malloc_validate_block(chunk_t *r) { __malloc_block = r; assert (ALIGN_PTR(chunk_to_ptr(r), MALLOC_CHUNK_ALIGN) == chunk_to_ptr(r)); assert (ALIGN_PTR(r, MALLOC_HEAD_ALIGN) == r); assert (r->size >= MALLOC_MINSIZE); assert (r->size < 0x80000000UL); assert (ALIGN_TO(r->size, MALLOC_HEAD_ALIGN) == r->size); } void __malloc_validate(void) { chunk_t *r; for (r = __malloc_free_list; r; r = r->next) { __malloc_validate_block(r); assert (r->next == NULL || (char *) r + r->size < (char *) r->next); } } struct mallinfo mallinfo(void) { char * sbrk_now; chunk_t * pf; size_t free_size = 0; size_t total_size; int ordblks = 0; struct mallinfo current_mallinfo; MALLOC_LOCK; __malloc_validate(); if (__malloc_sbrk_start == NULL) total_size = 0; else { sbrk_now = __malloc_sbrk_top; if (sbrk_now == NULL) total_size = (size_t)-1; else total_size = (size_t) (sbrk_now - __malloc_sbrk_start); } for (pf = __malloc_free_list; pf; pf = pf->next) { ordblks++; free_size += pf->size; } current_mallinfo.ordblks = ordblks; current_mallinfo.arena = total_size; current_mallinfo.fordblks = free_size; current_mallinfo.uordblks = total_size - free_size; MALLOC_UNLOCK; return current_mallinfo; } #endif /* DEFINE_MALLINFO */ #ifdef DEFINE_MALLOC_STATS void malloc_stats(void) { struct mallinfo current_mallinfo; current_mallinfo = mallinfo(); fprintf(stderr, "max system bytes = %10lu\n", (long) current_mallinfo.arena); fprintf(stderr, "system bytes = %10lu\n", (long) current_mallinfo.arena); fprintf(stderr, "in use bytes = %10lu\n", (long) current_mallinfo.uordblks); fprintf(stderr, "free blocks = %10lu\n", (long) current_mallinfo.ordblks); } #endif /* DEFINE_MALLOC_STATS */ #ifdef DEFINE_MALLOC_USABLE_SIZE size_t malloc_usable_size(void * ptr) { return chunk_usable(ptr_to_chunk(ptr)); } #endif /* DEFINE_MALLOC_USABLE_SIZE */ #ifdef DEFINE_MEMALIGN /* Function memalign * Allocate memory block aligned at specific boundary. * align: required alignment. Must be power of 2. Return NULL * if not power of 2. Undefined behavior is bigger than * pointer value range. * s: required size. * Return: allocated memory pointer aligned to align * Algorithm: Malloc a big enough block, padding pointer to aligned * address, then truncate and free the tail if too big. * Record the offset of align pointer and original pointer * in the padding area. */ void * memalign(size_t align, size_t s) { chunk_t * chunk_p; size_t offset, size_with_padding; char * allocated, * aligned_p; /* Return NULL if align isn't power of 2 */ if ((align & (align-1)) != 0) return NULL; s = ALIGN_TO(MAX(s,1), MALLOC_CHUNK_ALIGN); align = MAX(align, MALLOC_MINSIZE); /* Make sure there's space to align the allocation and split * off chunk_t from the front */ size_with_padding = s + align + MALLOC_MINSIZE; allocated = __malloc_malloc(size_with_padding); if (allocated == NULL) return NULL; chunk_p = ptr_to_chunk(allocated); aligned_p = ALIGN_PTR(allocated, align); offset = aligned_p - allocated; /* Split off the front piece if necessary */ if (offset) { if (offset < MALLOC_MINSIZE) { aligned_p += align; offset += align; } chunk_t *new_chunk_p = ptr_to_chunk(aligned_p); new_chunk_p->size = chunk_p->size - offset; make_free_chunk(chunk_p, offset); chunk_p = new_chunk_p; } offset = chunk_p->size - chunk_size(s); /* Split off the back piece if large enough */ if (offset >= MALLOC_MINSIZE) { chunk_p->size -= offset; make_free_chunk((chunk_t *) chunk_end(chunk_p), offset); } return aligned_p; } #ifdef HAVE_ALIAS_ATTRIBUTE __strong_reference(memalign, aligned_alloc); #endif #endif /* DEFINE_MEMALIGN */ #ifdef DEFINE_MALLOPT int mallopt(int parameter_number, int parameter_value) { (void) parameter_number; (void) parameter_value; return 0; } #endif /* DEFINE_MALLOPT */ #ifdef DEFINE_VALLOC void * valloc(size_t s) { return memalign(MALLOC_PAGE_ALIGN, s); } #endif /* DEFINE_VALLOC */ #ifdef DEFINE_PVALLOC void * pvalloc(size_t s) { return valloc(ALIGN_TO(s, MALLOC_PAGE_ALIGN)); } #endif /* DEFINE_PVALLOC */ picolibc-1.7.4/newlib/libc/stdlib/nrand48.c000066400000000000000000000014071414576234500204200ustar00rootroot00000000000000/* * Copyright (c) 1993 Martin Birgmeier * All rights reserved. * * You may redistribute unmodified or modified versions of this source * code provided that the above copyright notice and this and the * following conditions are retained. * * This software is provided ``as is'', and comes with no warranties * of any kind. I shall in no event be liable for anything that happens * to anyone/anything when using this software. */ #include "rand48.h" long _nrand48_r (struct _rand48 *r, unsigned short xseed[3]) { __dorand48 (r, xseed); return (long)((unsigned long) xseed[2] << 15) + ((unsigned long) xseed[1] >> 1); } #ifndef _REENT_ONLY long nrand48 (unsigned short xseed[3]) { return _nrand48_r (&_rand48, xseed); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/on_exit.c000066400000000000000000000036201414576234500206060ustar00rootroot00000000000000/* * Copyright (c) 1990 Regents of the University of California. * All rights reserved. * * %sccs.include.redist.c% * * This function is a modified version of atexit.c */ /* FUNCTION <>---request execution of function with argument at program exit INDEX on_exit SYNOPSIS #include int on_exit (void (*<[function]>)(int, void *), void *<[arg]>); DESCRIPTION You can use <> to enroll functions in a list of functions that will be called when your program terminates normally. The argument is a pointer to a user-defined function which takes two arguments. The first is the status code passed to exit and the second argument is of type pointer to void. The function must not return a result. The value of <[arg]> is registered and passed as the argument to <[function]>. The functions are kept in a LIFO stack; that is, the last function enrolled by <> or <> will be the first to execute when your program exits. You can intermix functions using <> and <>. There is no built-in limit to the number of functions you can enroll in this list; however, after every group of 32 functions is enrolled, <>/<> will call <> to get space for the next part of the list. The initial list of 32 functions is statically allocated, so you can always count on at least that many slots available. RETURNS <> returns <<0>> if it succeeds in enrolling your function, <<-1>> if it fails (possible only if no space was available for <> to extend the list of functions). PORTABILITY <> is a non-standard glibc extension Supporting OS subroutines required: None */ #include #include #include "atexit.h" /* * Register a function to be performed at exit. */ int on_exit (void (*fn) (int, void *), void *arg) { return __register_exitproc (__et_onexit, (void (*)(void)) fn, arg, NULL); } picolibc-1.7.4/newlib/libc/stdlib/on_exit_args.c000066400000000000000000000025031414576234500216210ustar00rootroot00000000000000/* Copyright (c) 2015 Freddie Chopin */ /* * Static instance of _on_exit_args struct. * * When _REENT_SMALL is used, _atexit struct only contains a pointer to * _on_exit_args struct, so this was always allocated with malloc() - even for * the first 32 calls of atexit()-like functions, which are guaranteed to * succeed, but could fail because of "out of memory" error. This is even worse * when _ATEXIT_DYNAMIC_ALLOC is _NOT_ defined, in which case malloc() is not * used by internals of atexit()-like functions. In such configuration all calls * to the functions that need _on_exit_args struct (on_exit() and * __cxa_atexit()) would fail. * * Thats why a static instance of _on_exit_args struct is provided for * _REENT_SMALL configuration. This way the first 32 calls to atexit()-like * functions don't need malloc() and will always succeed. * * Because this struct is not needed for "normal" atexit(), it is used as a weak * reference in __register_exitproc(), but any use of on_exit() or * __cxa_atexit() will force it to be linked. */ #include #include #include #include "atexit.h" #ifdef _REENT_SMALL static struct _on_exit_args _on_exit_args_instance; struct _on_exit_args * const __on_exit_args = &_on_exit_args_instance; #endif /* def _REENT_SMALL */ picolibc-1.7.4/newlib/libc/stdlib/on_exit_args.h000066400000000000000000000005421414576234500216270ustar00rootroot00000000000000/* Copyright (c) 2015 Freddie Chopin */ #ifndef NEWLIB_CYGWIN_NEWLIB_LIBC_STDLIB_ON_EXIT_ARGS_H_ #define NEWLIB_CYGWIN_NEWLIB_LIBC_STDLIB_ON_EXIT_ARGS_H_ #ifdef _REENT_SMALL extern struct _on_exit_args * const __on_exit_args; #endif /* def _REENT_SMALL */ #endif /* def NEWLIB_CYGWIN_NEWLIB_LIBC_STDLIB_ON_EXIT_ARGS_H_ */ picolibc-1.7.4/newlib/libc/stdlib/pico-atexit.c000066400000000000000000000034461414576234500213750ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2021 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #define _DEFAULT_SOURCE #include #include "pico-onexit.h" int atexit (void (*func)(void)) { union on_exit_func func_u = { .atexit = func }; return _on_exit(PICO_ONEXIT_ATEXIT, func_u, NULL); } picolibc-1.7.4/newlib/libc/stdlib/pico-cxa-atexit.c000066400000000000000000000035371414576234500221470ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2021 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #define _GNU_SOURCE #include #include "pico-onexit.h" int __cxa_atexit (void (*func) (void *), void *arg, void *d) { union on_exit_func func_u = { .cxa_atexit = func }; (void) d; return _on_exit(PICO_ONEXIT_CXA_ATEXIT, func_u, arg); } picolibc-1.7.4/newlib/libc/stdlib/pico-exit.c000066400000000000000000000035521414576234500210460ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2021 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include void exit(int code) { void __call_exitprocs (int, void *) __attribute__((weak)); void __libc_fini_array(void); if (__call_exitprocs) __call_exitprocs (code, NULL); #ifdef HAVE_INITFINI_ARRAY __libc_fini_array(); #endif _exit(code); } picolibc-1.7.4/newlib/libc/stdlib/pico-onexit.c000066400000000000000000000066411414576234500214050ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2021 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include "pico-onexit.h" struct on_exit { union on_exit_func func; void *arg; int kind; }; static struct on_exit on_exits[ATEXIT_MAX]; int _on_exit(int kind, union on_exit_func func, void *arg) { int ret = -1; int o; __LIBC_LOCK(); for (o = 0; o < ATEXIT_MAX; o++) { if (on_exits[o].kind == PICO_ONEXIT_EMPTY) { on_exits[o].func = func; on_exits[o].arg = arg; on_exits[o].kind = kind; ret = 0; break; } } __LIBC_UNLOCK(); return ret; } int on_exit (void (*func)(int, void *),void *arg) { union on_exit_func func_u = { .on_exit = func }; return _on_exit(PICO_ONEXIT_ONEXIT, func_u, arg); } void __call_exitprocs(int code, void *param) { (void) param; for (;;) { int i; union on_exit_func func = {0}; int kind = PICO_ONEXIT_EMPTY; void *arg = 0; __LIBC_LOCK(); for (i = ATEXIT_MAX - 1; i >= 0; i--) { kind = on_exits[i].kind; if (kind != PICO_ONEXIT_EMPTY) { func = on_exits[i].func; arg = on_exits[i].arg; memset(&on_exits[i], '\0', sizeof(struct on_exit)); break; } } __LIBC_UNLOCK(); switch (kind) { case PICO_ONEXIT_EMPTY: return; case PICO_ONEXIT_ONEXIT: func.on_exit(code, arg); break; case PICO_ONEXIT_ATEXIT: func.atexit(); break; case PICO_ONEXIT_CXA_ATEXIT: func.cxa_atexit(arg); break; } } } picolibc-1.7.4/newlib/libc/stdlib/pico-onexit.h000066400000000000000000000036371414576234500214140ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2021 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #define PICO_ONEXIT_EMPTY 0 #define PICO_ONEXIT_ONEXIT 1 #define PICO_ONEXIT_ATEXIT 2 #define PICO_ONEXIT_CXA_ATEXIT 3 union on_exit_func { void (*on_exit)(int, void *); void (*atexit)(void); void (*cxa_atexit)(void *); }; int _on_exit(int kind, union on_exit_func func, void *arg); picolibc-1.7.4/newlib/libc/stdlib/putenv.c000066400000000000000000000024611414576234500204640ustar00rootroot00000000000000/*- * Copyright (c) 1988 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that: (1) source distributions retain this entire copyright * notice and comment, and (2) distributions including binaries display * the following acknowledgement: ``This product includes software * developed by the University of California, Berkeley and its contributors'' * in the documentation or other materials provided with the distribution. * Neither the name of the University nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef _REENT_ONLY #define _DEFAULT_SOURCE #include #include int putenv (char *str) { register char *p, *equal; int rval; p = strdup (str); if (!p) return 1; if (!(equal = strchr (p, '='))) { (void) free (p); return 1; } *equal = '\0'; rval = setenv (p, equal + 1, 1); (void) free (p); return rval; } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/putenv_r.c000066400000000000000000000032571414576234500210110ustar00rootroot00000000000000/* This file may have been modified by DJ Delorie (Jan 1991). If so, ** these modifications are Copyright (C) 1991 DJ Delorie. */ /*- * Copyright (c) 1988 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that: (1) source distributions retain this entire copyright * notice and comment, and (2) distributions including binaries display * the following acknowledgement: ``This product includes software * developed by the University of California, Berkeley and its contributors'' * in the documentation or other materials provided with the distribution. * Neither the name of the University nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include #include #include #include "envlock.h" /* _putenv_r - reentrant version of putenv that either adds or replaces the environment variable "name" with "value" which is specified by str as "name=value". */ int _putenv_r (struct _reent *reent_ptr, char *str) { register char *p, *equal; int rval; p = _strdup_r (reent_ptr, str); if (!p) return 1; if (!(equal = strchr (p, '='))) { (void) _free_r (reent_ptr, p); return 1; } *equal = '\0'; rval = _setenv_r (reent_ptr, p, equal + 1, 1); (void) _free_r (reent_ptr, p); return rval; } picolibc-1.7.4/newlib/libc/stdlib/quick_exit.c000066400000000000000000000044551414576234500213150ustar00rootroot00000000000000/*- * Copyright (c) 2011 David Chisnall * Copyright (c) 2015 embedded brains GmbH * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $FreeBSD$ */ #include #include #include /** * Linked list of quick exit handlers. This is simpler than the atexit() * version, because it is not required to support C++ destructors or * DSO-specific cleanups. */ struct quick_exit_handler { struct quick_exit_handler *next; void (*cleanup)(void); }; /** * Stack of cleanup handlers. These will be invoked in reverse order when */ static struct quick_exit_handler *handlers; int at_quick_exit(void (*func)(void)) { struct quick_exit_handler *h; h = malloc(sizeof(*h)); if (NULL == h) return (1); h->cleanup = func; __LIBC_LOCK(); h->next = handlers; handlers = h; __LIBC_UNLOCK(); return (0); } void quick_exit(int status) { struct quick_exit_handler *h; /* * XXX: The C++ spec requires us to call std::terminate if there is an * exception here. */ for (h = handlers; NULL != h; h = h->next) h->cleanup(); _exit(status); } picolibc-1.7.4/newlib/libc/stdlib/rand.c000066400000000000000000000037311414576234500200700ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ /* FUNCTION <>, <>---pseudo-random numbers INDEX rand INDEX srand INDEX rand_r SYNOPSIS #include int rand(void); void srand(unsigned int <[seed]>); int rand_r(unsigned int *<[seed]>); DESCRIPTION <> returns a different integer each time it is called; each integer is chosen by an algorithm designed to be unpredictable, so that you can use <> when you require a random number. The algorithm depends on a static variable called the ``random seed''; starting with a given value of the random seed always produces the same sequence of numbers in successive calls to <>. You can set the random seed using <>; it does nothing beyond storing its argument in the static variable used by <>. You can exploit this to make the pseudo-random sequence less predictable, if you wish, by using some other unpredictable value (often the least significant parts of a time-varying value) as the random seed before beginning a sequence of calls to <>; or, if you wish to ensure (for example, while debugging) that successive runs of your program use the same ``random'' numbers, you can use <> to set the same random seed at the outset. RETURNS <> returns the next pseudo-random integer in sequence; it is a number between <<0>> and <> (inclusive). <> does not return a result. NOTES <> and <> are unsafe for multi-threaded applications. <> is thread-safe and should be used instead. PORTABILITY <> is required by ANSI, but the algorithm for pseudo-random number generation is not specified; therefore, even if you use the same random seed, you cannot expect the same sequence of results on two different systems. <> requires no supporting OS subroutines. */ #ifndef _REENT_ONLY #define _DEFAULT_SOURCE #include int rand (void) { return (int) random(); } #endif /* _REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/rand48.c000066400000000000000000000125331414576234500202440ustar00rootroot00000000000000/* * Copyright (c) 1993 Martin Birgmeier * All rights reserved. * * You may redistribute unmodified or modified versions of this source * code provided that the above copyright notice and this and the * following conditions are retained. * * This software is provided ``as is'', and comes with no warranties * of any kind. I shall in no event be liable for anything that happens * to anyone/anything when using this software. */ /* FUNCTION <>, <>, <>, <>, <>, <>, <>, <>, <>, <>---pseudo-random number generators and initialization routines INDEX rand48 INDEX drand48 INDEX erand48 INDEX lrand48 INDEX nrand48 INDEX mrand48 INDEX jrand48 INDEX srand48 INDEX seed48 INDEX lcong48 SYNOPSIS #include double drand48(void); double erand48(unsigned short <[xseed]>[3]); long lrand48(void); long nrand48(unsigned short <[xseed]>[3]); long mrand48(void); long jrand48(unsigned short <[xseed]>[3]); void srand48(long <[seed]>); unsigned short *seed48(unsigned short <[xseed]>[3]); void lcong48(unsigned short <[p]>[7]); DESCRIPTION The <> family of functions generates pseudo-random numbers using a linear congruential algorithm working on integers 48 bits in size. The particular formula employed is r(n+1) = (a * r(n) + c) mod m where the default values are for the multiplicand a = 0xfdeece66d = 25214903917 and the addend c = 0xb = 11. The modulo is always fixed at m = 2 ** 48. r(n) is called the seed of the random number generator. For all the six generator routines described next, the first computational step is to perform a single iteration of the algorithm. <> and <> return values of type double. The full 48 bits of r(n+1) are loaded into the mantissa of the returned value, with the exponent set such that the values produced lie in the interval [0.0, 1.0]. <> and <> return values of type long in the range [0, 2**31-1]. The high-order (31) bits of r(n+1) are loaded into the lower bits of the returned value, with the topmost (sign) bit set to zero. <> and <> return values of type long in the range [-2**31, 2**31-1]. The high-order (32) bits of r(n+1) are loaded into the returned value. <>, <>, and <> use an internal buffer to store r(n). For these functions the initial value of r(0) = 0x1234abcd330e = 20017429951246. On the other hand, <>, <>, and <> use a user-supplied buffer to store the seed r(n), which consists of an array of 3 shorts, where the zeroth member holds the least significant bits. All functions share the same multiplicand and addend. <> is used to initialize the internal buffer r(n) of <>, <>, and <> such that the 32 bits of the seed value are copied into the upper 32 bits of r(n), with the lower 16 bits of r(n) arbitrarily being set to 0x330e. Additionally, the constant multiplicand and addend of the algorithm are reset to the default values given above. <> also initializes the internal buffer r(n) of <>, <>, and <>, but here all 48 bits of the seed can be specified in an array of 3 shorts, where the zeroth member specifies the lowest bits. Again, the constant multiplicand and addend of the algorithm are reset to the default values given above. <> returns a pointer to an array of 3 shorts which contains the old seed. This array is statically allocated, thus its contents are lost after each new call to <>. Finally, <> allows full control over the multiplicand and addend used in <>, <>, <>, <>, <>, and <>, and the seed used in <>, <>, and <>. An array of 7 shorts is passed as parameter; the first three shorts are used to initialize the seed; the second three are used to initialize the multiplicand; and the last short is used to initialize the addend. It is thus not possible to use values greater than 0xffff as the addend. Note that all three methods of seeding the random number generator always also set the multiplicand and addend for any of the six generator calls. For a more powerful random number generator, see <>. PORTABILITY SUS requires these functions. No supporting OS subroutines are required. */ #include "rand48.h" NEWLIB_THREAD_LOCAL struct _rand48 _rand48 = { ._seed = { _RAND48_SEED_0, _RAND48_SEED_1, _RAND48_SEED_2 }, ._mult = { _RAND48_MULT_0, _RAND48_MULT_1, _RAND48_MULT_2 }, ._add = _RAND48_ADD, }; void __dorand48 (struct _rand48 *r, unsigned short xseed[3]) { unsigned long accu; unsigned short temp[2]; accu = (unsigned long) r->_mult[0] * (unsigned long) xseed[0] + (unsigned long) r->_add; temp[0] = (unsigned short) accu; /* lower 16 bits */ accu >>= sizeof(unsigned short) * 8; accu += (unsigned long) r->_mult[0] * (unsigned long) xseed[1] + (unsigned long) r->_mult[1] * (unsigned long) xseed[0]; temp[1] = (unsigned short) accu; /* middle 16 bits */ accu >>= sizeof(unsigned short) * 8; accu += r->_mult[0] * xseed[2] + r->_mult[1] * xseed[1] + r->_mult[2] * xseed[0]; xseed[0] = temp[0]; xseed[1] = temp[1]; xseed[2] = (unsigned short) accu; } picolibc-1.7.4/newlib/libc/stdlib/rand48.h000066400000000000000000000027431414576234500202530ustar00rootroot00000000000000/* * Copyright (c) 1993 Martin Birgmeier * All rights reserved. * * You may redistribute unmodified or modified versions of this source * code provided that the above copyright notice and this and the * following conditions are retained. * * This software is provided ``as is'', and comes with no warranties * of any kind. I shall in no event be liable for anything that happens * to anyone/anything when using this software. */ #ifndef _RAND48_H_ #define _RAND48_H_ #include #include /* * rand48 family support * * Copyright (c) 1993 Martin Birgmeier * All rights reserved. * * You may redistribute unmodified or modified versions of this source * code provided that the above copyright notice and this and the * following conditions are retained. * * This software is provided ``as is'', and comes with no warranties * of any kind. I shall in no event be liable for anything that happens * to anyone/anything when using this software. */ #define _RAND48_SEED_0 (0x330e) #define _RAND48_SEED_1 (0xabcd) #define _RAND48_SEED_2 (0x1234) #define _RAND48_MULT_0 (0xe66d) #define _RAND48_MULT_1 (0xdeec) #define _RAND48_MULT_2 (0x0005) #define _RAND48_ADD (0x000b) struct _rand48 { unsigned short _seed[3]; unsigned short _mult[3]; unsigned short _add; }; extern NEWLIB_THREAD_LOCAL struct _rand48 _rand48; extern void __dorand48 (struct _rand48 *r, unsigned short[3]); #endif /* _RAND48_H_ */ picolibc-1.7.4/newlib/libc/stdlib/rand_r.c000066400000000000000000000017111414576234500204050ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ #include /* Pseudo-random generator based on Minimal Standard by Lewis, Goodman, and Miller in 1969. I[j+1] = a*I[j] (mod m) where a = 16807 m = 2147483647 Using Schrage's algorithm, a*I[j] (mod m) can be rewritten as: a*(I[j] mod q) - r*{I[j]/q} if >= 0 a*(I[j] mod q) - r*{I[j]/q} + m otherwise where: {} denotes integer division q = {m/a} = 127773 r = m (mod a) = 2836 note that the seed value of 0 cannot be used in the calculation as it results in 0 itself */ int rand_r (unsigned int *seed) { long k; long s = (long)(*seed); if (s == 0) s = 0x12345987; k = s / 127773; s = 16807 * (s - k * 127773) - 2836 * k; if (s < 0) s += 2147483647; (*seed) = (unsigned int)s; return (int)(s & RAND_MAX); } picolibc-1.7.4/newlib/libc/stdlib/random.c000066400000000000000000000041631414576234500204240ustar00rootroot00000000000000/* Copyright (c) 2016 Joel Sherrill */ /* FUNCTION <>, <>---pseudo-random numbers INDEX random INDEX srandom SYNOPSIS #define _XOPEN_SOURCE 500 #include long int random(void); void srandom(unsigned int <[seed]>); DESCRIPTION <> returns a different integer each time it is called; each integer is chosen by an algorithm designed to be unpredictable, so that you can use <> when you require a random number. The algorithm depends on a static variable called the ``random seed''; starting with a given value of the random seed always produces the same sequence of numbers in successive calls to <>. You can set the random seed using <>; it does nothing beyond storing its argument in the static variable used by <>. You can exploit this to make the pseudo-random sequence less predictable, if you wish, by using some other unpredictable value (often the least significant parts of a time-varying value) as the random seed before beginning a sequence of calls to <>; or, if you wish to ensure (for example, while debugging) that successive runs of your program use the same ``random'' numbers, you can use <> to set the same random seed at the outset. RETURNS <> returns the next pseudo-random integer in sequence; it is a number between <<0>> and <> (inclusive). <> does not return a result. NOTES <> and <> are unsafe for multi-threaded applications. _XOPEN_SOURCE may be any value >= 500. PORTABILITY <> is required by XSI. This implementation uses the same algorithm as <>. <> requires no supporting OS subroutines. */ #ifndef _REENT_ONLY #include NEWLIB_THREAD_LOCAL long long _rand_next = 1; long int random (void) { /* This multiplier was obtained from Knuth, D.E., "The Art of Computer Programming," Vol 2, Seminumerical Algorithms, Third Edition, Addison-Wesley, 1998, p. 106 (line 26) & p. 108 */ _rand_next = _rand_next * __extension__ 6364136223846793005LL + 1; return (long int)((_rand_next >> 32) & RAND_MAX); } #endif /* _REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/realloc.c000066400000000000000000000006341414576234500205640ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ #ifdef MALLOC_PROVIDED int _dummy_realloc = 1; #else /* realloc.c -- a wrapper for realloc_r. */ #include <_ansi.h> #include #include #include #ifndef _REENT_ONLY void * realloc (void *ap, size_t nbytes) { return _realloc_r (_REENT, ap, nbytes); } #endif #endif /* MALLOC_PROVIDED */ picolibc-1.7.4/newlib/libc/stdlib/reallocarray.c000066400000000000000000000022341414576234500216210ustar00rootroot00000000000000/* $OpenBSD: reallocarray.c,v 1.2 2014/12/08 03:45:00 bcook Exp $ */ /* * Copyright (c) 2008 Otto Moerbeek * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include #include #include "mul_overflow.h" void * reallocarray(void *optr, size_t nmemb, size_t size) { size_t bytes; if (mul_overflow (nmemb, size, &bytes)) { errno = ENOMEM; return NULL; } return realloc(optr, bytes); } picolibc-1.7.4/newlib/libc/stdlib/reallocf.c000066400000000000000000000031501414576234500207260ustar00rootroot00000000000000/*- * Copyright (c) 1998, M. Warner Losh * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* Documented in malloc.c. */ #define _DEFAULT_SOURCE #include #include #ifndef _REENT_ONLY void * reallocf (void *ptr, size_t size) { void *nptr; nptr = realloc(ptr, size); if (!nptr && ptr) free(ptr); return (nptr); } #endif picolibc-1.7.4/newlib/libc/stdlib/rpmatch.c000066400000000000000000000047451414576234500206100ustar00rootroot00000000000000/* FUNCTION <>---determine whether response to question is affirmative or negative INDEX rpmatch SYNOPSIS #include int rpmatch(const char *<[response]>); DESCRIPTION The <> function determines whether <[response]> is an affirmative or negative response to a question according to the current locale. RETURNS <> returns 1 if <[response]> is affirmative, 0 if negative, or -1 if not recognized as either. PORTABILITY <> is a BSD extension also found in glibc. NOTES No supporting OS subroutines are required. */ /* This code is originally taken from FreeBSD. */ /*- * Copyright (c) 2004-2005 Tim J. Robbins. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include #include #include #include #include int rpmatch (const char *response) { regex_t yes, no; int ret; if (regcomp(&yes, nl_langinfo(YESEXPR), REG_EXTENDED|REG_NOSUB) != 0) return (-1); if (regcomp(&no, nl_langinfo(NOEXPR), REG_EXTENDED|REG_NOSUB) != 0) { regfree(&yes); return (-1); } if (regexec(&yes, response, 0, NULL, 0) == 0) ret = 1; else if (regexec(&no, response, 0, NULL, 0) == 0) ret = 0; else ret = -1; regfree(&yes); regfree(&no); return (ret); } picolibc-1.7.4/newlib/libc/stdlib/sb_charsets.c000066400000000000000000001137061414576234500214500ustar00rootroot00000000000000/* Copyright (c) 2009 Corinna Vinschen */ #include #include #ifdef _MB_CAPABLE #ifdef _MB_EXTENDED_CHARSETS_ISO /* Tables for the ISO-8859-x to UTF conversion. The first index into the table is a value computed from the value x (function __iso_8859_index), the second index is the value of the incoming character - 0xa0. Values < 0xa0 don't have to be converted anyway. */ wchar_t __iso_8859_conv[14][0x60] = { /* ISO-8859-2 */ { 0xa0, 0x104, 0x2d8, 0x141, 0xa4, 0x13d, 0x15a, 0xa7, 0xa8, 0x160, 0x15e, 0x164, 0x179, 0xad, 0x17d, 0x17b, 0xb0, 0x105, 0x2db, 0x142, 0xb4, 0x13e, 0x15b, 0x2c7, 0xb8, 0x161, 0x15f, 0x165, 0x17a, 0x2dd, 0x17e, 0x17c, 0x154, 0xc1, 0xc2, 0x102, 0xc4, 0x139, 0x106, 0xc7, 0x10c, 0xc9, 0x118, 0xcb, 0x11a, 0xcd, 0xce, 0x10e, 0x110, 0x143, 0x147, 0xd3, 0xd4, 0x150, 0xd6, 0xd7, 0x158, 0x16e, 0xda, 0x170, 0xdc, 0xdd, 0x162, 0xdf, 0x155, 0xe1, 0xe2, 0x103, 0xe4, 0x13a, 0x107, 0xe7, 0x10d, 0xe9, 0x119, 0xeb, 0x11b, 0xed, 0xee, 0x10f, 0x111, 0x144, 0x148, 0xf3, 0xf4, 0x151, 0xf6, 0xf7, 0x159, 0x16f, 0xfa, 0x171, 0xfc, 0xfd, 0x163, 0x2d9 }, /* ISO-8859-3 */ { 0xa0, 0x126, 0x2d8, 0xa3, 0xa4, 0xf7f5, 0x124, 0xa7, 0xa8, 0x130, 0x15e, 0x11e, 0x134, 0xad, 0xf7f6, 0x17b, 0xb0, 0x127, 0xb2, 0xb3, 0xb4, 0xb5, 0x125, 0xb7, 0xb8, 0x131, 0x15f, 0x11f, 0x135, 0xbd, 0xf7f7, 0x17c, 0xc0, 0xc1, 0xc2, 0xf7f8, 0xc4, 0x10a, 0x108, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xf7f9, 0xd1, 0xd2, 0xd3, 0xd4, 0x120, 0xd6, 0xd7, 0x11c, 0xd9, 0xda, 0xdb, 0xdc, 0x16c, 0x15c, 0xdf, 0xe0, 0xe1, 0xe2, 0xf7fa, 0xe4, 0x10b, 0x109, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf7fb, 0xf1, 0xf2, 0xf3, 0xf4, 0x121, 0xf6, 0xf7, 0x11d, 0xf9, 0xfa, 0xfb, 0xfc, 0x16d, 0x15d, 0x2d9 }, /* ISO-8859-4 */ { 0xa0, 0x104, 0x138, 0x156, 0xa4, 0x128, 0x13b, 0xa7, 0xa8, 0x160, 0x112, 0x122, 0x166, 0xad, 0x17d, 0xaf, 0xb0, 0x105, 0x2db, 0x157, 0xb4, 0x129, 0x13c, 0x2c7, 0xb8, 0x161, 0x113, 0x123, 0x167, 0x14a, 0x17e, 0x14b, 0x100, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0x12e, 0x10c, 0xc9, 0x118, 0xcb, 0x116, 0xcd, 0xce, 0x12a, 0x110, 0x145, 0x14c, 0x136, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0x172, 0xda, 0xdb, 0xdc, 0x168, 0x16a, 0xdf, 0x101, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0x12f, 0x10d, 0xe9, 0x119, 0xeb, 0x117, 0xed, 0xee, 0x12b, 0x111, 0x146, 0x14d, 0x137, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0x173, 0xfa, 0xfb, 0xfc, 0x169, 0x16b, 0x2d9 }, /* ISO-8859-5 */ { 0xa0, 0x401, 0x402, 0x403, 0x404, 0x405, 0x406, 0x407, 0x408, 0x409, 0x40a, 0x40b, 0x40c, 0xad, 0x40e, 0x40f, 0x410, 0x411, 0x412, 0x413, 0x414, 0x415, 0x416, 0x417, 0x418, 0x419, 0x41a, 0x41b, 0x41c, 0x41d, 0x41e, 0x41f, 0x420, 0x421, 0x422, 0x423, 0x424, 0x425, 0x426, 0x427, 0x428, 0x429, 0x42a, 0x42b, 0x42c, 0x42d, 0x42e, 0x42f, 0x430, 0x431, 0x432, 0x433, 0x434, 0x435, 0x436, 0x437, 0x438, 0x439, 0x43a, 0x43b, 0x43c, 0x43d, 0x43e, 0x43f, 0x440, 0x441, 0x442, 0x443, 0x444, 0x445, 0x446, 0x447, 0x448, 0x449, 0x44a, 0x44b, 0x44c, 0x44d, 0x44e, 0x44f, 0x2116, 0x451, 0x452, 0x453, 0x454, 0x455, 0x456, 0x457, 0x458, 0x459, 0x45a, 0x45b, 0x45c, 0xa7, 0x45e, 0x45f }, /* ISO-8859-6 */ { 0xa0, 0xf7c8, 0xf7c9, 0xf7ca, 0xa4, 0xf7cb, 0xf7cc, 0xf7cd, 0xf7ce, 0xf7cf, 0xf7d0, 0xf7d1, 0x60c, 0xad, 0xf7d2, 0xf7d3, 0xf7d4, 0xf7d5, 0xf7d6, 0xf7d7, 0xf7d8, 0xf7d9, 0xf7da, 0xf7db, 0xf7dc, 0xf7dd, 0xf7de, 0x61b, 0xf7df, 0xf7e0, 0xf7e1, 0x61f, 0xf7e2, 0x621, 0x622, 0x623, 0x624, 0x625, 0x626, 0x627, 0x628, 0x629, 0x62a, 0x62b, 0x62c, 0x62d, 0x62e, 0x62f, 0x630, 0x631, 0x632, 0x633, 0x634, 0x635, 0x636, 0x637, 0x638, 0x639, 0x63a, 0xf7e3, 0xf7e4, 0xf7e5, 0xf7e6, 0xf7e7, 0x640, 0x641, 0x642, 0x643, 0x644, 0x645, 0x646, 0x647, 0x648, 0x649, 0x64a, 0x64b, 0x64c, 0x64d, 0x64e, 0x64f, 0x650, 0x651, 0x652, 0xf7e8, 0xf7e9, 0xf7ea, 0xf7eb, 0xf7ec, 0xf7ed, 0xf7ee, 0xf7ef, 0xf7f0, 0xf7f1, 0xf7f2, 0xf7f3, 0xf7f4 }, /* ISO-8859-7 */ { 0xa0, 0x2bd, 0x2bc, 0xa3, 0xf7c2, 0xf7c3, 0xa6, 0xa7, 0xa8, 0xa9, 0xf7c4, 0xab, 0xac, 0xad, 0xf7c5, 0x2015, 0xb0, 0xb1, 0xb2, 0xb3, 0x384, 0x385, 0x386, 0xb7, 0x388, 0x389, 0x38a, 0xbb, 0x38c, 0xbd, 0x38e, 0x38f, 0x390, 0x391, 0x392, 0x393, 0x394, 0x395, 0x396, 0x397, 0x398, 0x399, 0x39a, 0x39b, 0x39c, 0x39d, 0x39e, 0x39f, 0x3a0, 0x3a1, 0xf7c6, 0x3a3, 0x3a4, 0x3a5, 0x3a6, 0x3a7, 0x3a8, 0x3a9, 0x3aa, 0x3ab, 0x3ac, 0x3ad, 0x3ae, 0x3af, 0x3b0, 0x3b1, 0x3b2, 0x3b3, 0x3b4, 0x3b5, 0x3b6, 0x3b7, 0x3b8, 0x3b9, 0x3ba, 0x3bb, 0x3bc, 0x3bd, 0x3be, 0x3bf, 0x3c0, 0x3c1, 0x3c2, 0x3c3, 0x3c4, 0x3c5, 0x3c6, 0x3c7, 0x3c8, 0x3c9, 0x3ca, 0x3cb, 0x3cc, 0x3cd, 0x3ce, 0xf7c7 }, /* ISO-8859-8 */ { 0xa0, 0xf79c, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xd7, 0xab, 0xac, 0xad, 0xae, 0x203e, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xf7, 0xbb, 0xbc, 0xbd, 0xbe, 0xf79d, 0xf79e, 0xf79f, 0xf7a0, 0xf7a1, 0xf7a2, 0xf7a3, 0xf7a4, 0xf7a5, 0xf7a6, 0xf7a7, 0xf7a8, 0xf7a9, 0xf7aa, 0xf7ab, 0xf7ac, 0xf7ad, 0xf7ae, 0xf7af, 0xf7b0, 0xf7b1, 0xf7b2, 0xf7b3, 0xf7b4, 0xf7b5, 0xf7b6, 0xf7b7, 0xf7b8, 0xf7b9, 0xf7ba, 0xf7bb, 0xf7bc, 0x2017, 0x5d0, 0x5d1, 0x5d2, 0x5d3, 0x5d4, 0x5d5, 0x5d6, 0x5d7, 0x5d8, 0x5d9, 0x5da, 0x5db, 0x5dc, 0x5dd, 0x5de, 0x5df, 0x5e0, 0x5e1, 0x5e2, 0x5e3, 0x5e4, 0x5e5, 0x5e6, 0x5e7, 0x5e8, 0x5e9, 0x5ea, 0xf7bd, 0xf7be, 0xf7bf, 0xf7c0, 0xf7c1 }, /* ISO-8859-9 */ { 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0x11e, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0x130, 0x15e, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0x11f, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x131, 0x15f, 0xff }, /* ISO-8859-10 */ { 0xa0, 0x104, 0x112, 0x122, 0x12a, 0x128, 0x136, 0xa7, 0x13b, 0x110, 0x160, 0x166, 0x17d, 0xad, 0x16a, 0x14a, 0xb0, 0x105, 0x113, 0x123, 0x12b, 0x129, 0x137, 0xb7, 0x13c, 0x111, 0x161, 0x167, 0x17e, 0x2015, 0x16b, 0x14b, 0x100, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0x12e, 0x10c, 0xc9, 0x118, 0xcb, 0x116, 0xcd, 0xce, 0xcf, 0xd0, 0x145, 0x14c, 0xd3, 0xd4, 0xd5, 0xd6, 0x168, 0xd8, 0x172, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0x101, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0x12f, 0x10d, 0xe9, 0x119, 0xeb, 0x117, 0xed, 0xee, 0xef, 0xf0, 0x146, 0x14d, 0xf3, 0xf4, 0xf5, 0xf6, 0x169, 0xf8, 0x173, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x138 }, /* ISO-8859-11 */ { 0xa0, 0xe01, 0xe02, 0xe03, 0xe04, 0xe05, 0xe06, 0xe07, 0xe08, 0xe09, 0xe0a, 0xe0b, 0xe0c, 0xe0d, 0xe0e, 0xe0f, 0xe10, 0xe11, 0xe12, 0xe13, 0xe14, 0xe15, 0xe16, 0xe17, 0xe18, 0xe19, 0xe1a, 0xe1b, 0xe1c, 0xe1d, 0xe1e, 0xe1f, 0xe20, 0xe21, 0xe22, 0xe23, 0xe24, 0xe25, 0xe26, 0xe27, 0xe28, 0xe29, 0xe2a, 0xe2b, 0xe2c, 0xe2d, 0xe2e, 0xe2f, 0xe30, 0xe31, 0xe32, 0xe33, 0xe34, 0xe35, 0xe36, 0xe37, 0xe38, 0xe39, 0xe3a, 0xdb, 0xdc, 0xdd, 0xde, 0xe3f, 0xe40, 0xe41, 0xe42, 0xe43, 0xe44, 0xe45, 0xe46, 0xe47, 0xe48, 0xe49, 0xe4a, 0xe4b, 0xe4c, 0xe4d, 0xe4e, 0xe4f, 0xe50, 0xe51, 0xe52, 0xe53, 0xe54, 0xe55, 0xe56, 0xe57, 0xe58, 0xe59, 0xe5a, 0xe5b, 0xe31, 0xe34, 0xe47, 0xff }, /* ISO-8859-12 doesn't exist. The below code decrements the index into the table by one for ISO numbers > 12. */ /* ISO-8859-13 */ { 0xa0, 0x201d, 0xa2, 0xa3, 0xa4, 0x201e, 0xa6, 0xa7, 0xd8, 0xa9, 0x156, 0xab, 0xac, 0xad, 0xae, 0xc6, 0xb0, 0xb1, 0xb2, 0xb3, 0x201c, 0xb5, 0xb6, 0xb7, 0xf8, 0xb9, 0x157, 0xbb, 0xbc, 0xbd, 0xbe, 0xe6, 0x104, 0x12e, 0x100, 0x106, 0xc4, 0xc5, 0x118, 0x112, 0x10c, 0xc9, 0x179, 0x116, 0x122, 0x136, 0x12a, 0x13b, 0x160, 0x143, 0x145, 0xd3, 0x14c, 0xd5, 0xd6, 0xd7, 0x172, 0x141, 0x15a, 0x16a, 0xdc, 0x17b, 0x17d, 0xdf, 0x105, 0x12f, 0x101, 0x107, 0xe4, 0xe5, 0x119, 0x113, 0x10d, 0xe9, 0x17a, 0x117, 0x123, 0x137, 0x12b, 0x13c, 0x161, 0x144, 0x146, 0xf3, 0x14d, 0xf5, 0xf6, 0xf7, 0x173, 0x142, 0x15b, 0x16b, 0xfc, 0x17c, 0x17e, 0x2019 }, /* ISO-8859-14 */ { 0xa0, 0x1e02, 0x1e03, 0xa3, 0x10a, 0x10b, 0x1e0a, 0xa7, 0x1e80, 0xa9, 0x1e82, 0x1e0b, 0x1ef2, 0xad, 0xae, 0x178, 0x1e1e, 0x1e1f, 0x120, 0x121, 0x1e40, 0x1e41, 0xb6, 0x1e56, 0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0x174, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0x1e6a, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x176, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0x175, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0x1e6b, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0x177, 0xff }, /* ISO-8859-15 */ { 0xa0, 0xa1, 0xa2, 0xa3, 0x20ac, 0xa5, 0x160, 0xa7, 0x161, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0x17d, 0xb5, 0xb6, 0xb7, 0x17e, 0xb9, 0xba, 0xbb, 0x152, 0x153, 0x178, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff }, /* ISO-8859-16 */ { 0xa0, 0x104, 0x105, 0x141, 0x20ac, 0x201e, 0x160, 0xa7, 0x161, 0xa9, 0x218, 0xab, 0x179, 0xad, 0x17a, 0x17b, 0xb0, 0xb1, 0x10c, 0x142, 0x17d, 0x201d, 0xb6, 0xb7, 0x17e, 0x10d, 0x219, 0xbb, 0x152, 0x153, 0x178, 0x17c, 0xc0, 0xc1, 0xc2, 0x102, 0xc4, 0x106, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0x110, 0x143, 0xd2, 0xd3, 0xd4, 0x150, 0xd6, 0x15a, 0x170, 0xd9, 0xda, 0xdb, 0xdc, 0x118, 0x21a, 0xdf, 0xe0, 0xe1, 0xe2, 0x103, 0xe4, 0x107, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0x111, 0x144, 0xf2, 0xf3, 0xf4, 0x151, 0xf6, 0x15b, 0x171, 0xf9, 0xfa, 0xfb, 0xfc, 0x119, 0x21b, 0xff } }; #endif /* _MB_EXTENDED_CHARSETS_ISO */ #ifdef _MB_EXTENDED_CHARSETS_WINDOWS /* Tables for the Windows default singlebyte ANSI codepage conversion. The first index into the table is a value computed from the codepage value (function __cp_index), the second index is the value of the incoming character - 0x80. Values < 0x80 don't have to be converted anyway. */ wchar_t __cp_conv[26][0x80] = { /* CP437 */ { 0xc7, 0xfc, 0xe9, 0xe2, 0xe4, 0xe0, 0xe5, 0xe7, 0xea, 0xeb, 0xe8, 0xef, 0xee, 0xec, 0xc4, 0xc5, 0xc9, 0xe6, 0xc6, 0xf4, 0xf6, 0xf2, 0xfb, 0xf9, 0xff, 0xd6, 0xdc, 0xa2, 0xa3, 0xa5, 0x20a7, 0x192, 0xe1, 0xed, 0xf3, 0xfa, 0xf1, 0xd1, 0xaa, 0xba, 0xbf, 0x2310, 0xac, 0xbd, 0xbc, 0xa1, 0xab, 0xbb, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 0x3b1, 0xdf, 0x393, 0x3c0, 0x3a3, 0x3c3, 0xb5, 0x3c4, 0x3a6, 0x398, 0x3a9, 0x3b4, 0x221e, 0x3c6, 0x3b5, 0x2229, 0x2261, 0xb1, 0x2265, 0x2264, 0x2320, 0x2321, 0xf7, 0x2248, 0xb0, 0x2219, 0xb7, 0x221a, 0x207f, 0xb2, 0x25a0, 0xa0 }, /* CP720 */ { 0x80, 0x81, 0xe9, 0xe2, 0x84, 0xe0, 0x86, 0xe7, 0xea, 0xeb, 0xe8, 0xef, 0xee, 0x8d, 0x8e, 0x8f, 0x90, 0x651, 0x652, 0xf4, 0xa4, 0x640, 0xfb, 0xf9, 0x621, 0x622, 0x623, 0x624, 0xa3, 0x625, 0x626, 0x627, 0x628, 0x629, 0x62a, 0x62b, 0x62c, 0x62d, 0x62e, 0x62f, 0x630, 0x631, 0x632, 0x633, 0x634, 0x635, 0xab, 0xbb, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 0x636, 0x637, 0x638, 0x639, 0x63a, 0x641, 0xb5, 0x642, 0x643, 0x644, 0x645, 0x646, 0x647, 0x648, 0x649, 0x64a, 0x2261, 0x64b, 0x64c, 0x64d, 0x64e, 0x64f, 0x650, 0x2248, 0xb0, 0x2219, 0xb7, 0x221a, 0x207f, 0xb2, 0x25a0, 0xa0 }, /* CP737 */ { 0x391, 0x392, 0x393, 0x394, 0x395, 0x396, 0x397, 0x398, 0x399, 0x39a, 0x39b, 0x39c, 0x39d, 0x39e, 0x39f, 0x3a0, 0x3a1, 0x3a3, 0x3a4, 0x3a5, 0x3a6, 0x3a7, 0x3a8, 0x3a9, 0x3b1, 0x3b2, 0x3b3, 0x3b4, 0x3b5, 0x3b6, 0x3b7, 0x3b8, 0x3b9, 0x3ba, 0x3bb, 0x3bc, 0x3bd, 0x3be, 0x3bf, 0x3c0, 0x3c1, 0x3c3, 0x3c2, 0x3c4, 0x3c5, 0x3c6, 0x3c7, 0x3c8, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 0x3c9, 0x3ac, 0x3ad, 0x3ae, 0x3ca, 0x3af, 0x3cc, 0x3cd, 0x3cb, 0x3ce, 0x386, 0x388, 0x389, 0x38a, 0x38c, 0x38e, 0x38f, 0xb1, 0x2265, 0x2264, 0x3aa, 0x3ab, 0xf7, 0x2248, 0xb0, 0x2219, 0xb7, 0x221a, 0x207f, 0xb2, 0x25a0, 0xa0 }, /* CP775 */ { 0x106, 0xfc, 0xe9, 0x101, 0xe4, 0x123, 0xe5, 0x107, 0x142, 0x113, 0x156, 0x157, 0x12b, 0x179, 0xc4, 0xc5, 0xc9, 0xe6, 0xc6, 0x14d, 0xf6, 0x122, 0xa2, 0x15a, 0x15b, 0xd6, 0xdc, 0xf8, 0xa3, 0xd8, 0xd7, 0xa4, 0x100, 0x12a, 0xf3, 0x17b, 0x17c, 0x17a, 0x201d, 0xa6, 0xa9, 0xae, 0xac, 0xbd, 0xbc, 0x141, 0xab, 0xbb, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x104, 0x10c, 0x118, 0x116, 0x2563, 0x2551, 0x2557, 0x255d, 0x12e, 0x160, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x172, 0x16a, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x17d, 0x105, 0x10d, 0x119, 0x117, 0x12f, 0x161, 0x173, 0x16b, 0x17e, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 0xd3, 0xdf, 0x14c, 0x143, 0xf5, 0xd5, 0xb5, 0x144, 0x136, 0x137, 0x13b, 0x13c, 0x146, 0x112, 0x145, 0x2019, 0xad, 0xb1, 0x201c, 0xbe, 0xb6, 0xa7, 0xf7, 0x201e, 0xb0, 0x2219, 0xb7, 0xb9, 0xb3, 0xb2, 0x25a0, 0xa0 }, /* CP850 */ { 0xc7, 0xfc, 0xe9, 0xe2, 0xe4, 0xe0, 0xe5, 0xe7, 0xea, 0xeb, 0xe8, 0xef, 0xee, 0xec, 0xc4, 0xc5, 0xc9, 0xe6, 0xc6, 0xf4, 0xf6, 0xf2, 0xfb, 0xf9, 0xff, 0xd6, 0xdc, 0xf8, 0xa3, 0xd8, 0xd7, 0x192, 0xe1, 0xed, 0xf3, 0xfa, 0xf1, 0xd1, 0xaa, 0xba, 0xbf, 0xae, 0xac, 0xbd, 0xbc, 0xa1, 0xab, 0xbb, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0xc1, 0xc2, 0xc0, 0xa9, 0x2563, 0x2551, 0x2557, 0x255d, 0xa2, 0xa5, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0xe3, 0xc3, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0xa4, 0xf0, 0xd0, 0xca, 0xcb, 0xc8, 0x131, 0xcd, 0xce, 0xcf, 0x2518, 0x250c, 0x2588, 0x2584, 0xa6, 0xcc, 0x2580, 0xd3, 0xdf, 0xd4, 0xd2, 0xf5, 0xd5, 0xb5, 0xfe, 0xde, 0xda, 0xdb, 0xd9, 0xfd, 0xdd, 0xaf, 0xb4, 0xad, 0xb1, 0x2017, 0xbe, 0xb6, 0xa7, 0xf7, 0xb8, 0xb0, 0xa8, 0xb7, 0xb9, 0xb3, 0xb2, 0x25a0, 0xa0 }, /* CP852 */ { 0xc7, 0xfc, 0xe9, 0xe2, 0xe4, 0x16f, 0x107, 0xe7, 0x142, 0xeb, 0x150, 0x151, 0xee, 0x179, 0xc4, 0x106, 0xc9, 0x139, 0x13a, 0xf4, 0xf6, 0x13d, 0x13e, 0x15a, 0x15b, 0xd6, 0xdc, 0x164, 0x165, 0x141, 0xd7, 0x10d, 0xe1, 0xed, 0xf3, 0xfa, 0x104, 0x105, 0x17d, 0x17e, 0x118, 0x119, 0xac, 0x17a, 0x10c, 0x15f, 0xab, 0xbb, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0xc1, 0xc2, 0x11a, 0x15e, 0x2563, 0x2551, 0x2557, 0x255d, 0x17b, 0x17c, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x102, 0x103, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0xa4, 0x111, 0x110, 0x10e, 0xcb, 0x10f, 0x147, 0xcd, 0xce, 0x11b, 0x2518, 0x250c, 0x2588, 0x2584, 0x162, 0x16e, 0x2580, 0xd3, 0xdf, 0xd4, 0x143, 0x144, 0x148, 0x160, 0x161, 0x154, 0xda, 0x155, 0x170, 0xfd, 0xdd, 0x163, 0xb4, 0xad, 0x2dd, 0x2db, 0x2c7, 0x2d8, 0xa7, 0xf7, 0xb8, 0xb0, 0xa8, 0x2d9, 0x171, 0x158, 0x159, 0x25a0, 0xa0 }, /* CP855 */ { 0x452, 0x402, 0x453, 0x403, 0x451, 0x401, 0x454, 0x404, 0x455, 0x405, 0x456, 0x406, 0x457, 0x407, 0x458, 0x408, 0x459, 0x409, 0x45a, 0x40a, 0x45b, 0x40b, 0x45c, 0x40c, 0x45e, 0x40e, 0x45f, 0x40f, 0x44e, 0x42e, 0x44a, 0x42a, 0x430, 0x410, 0x431, 0x411, 0x446, 0x426, 0x434, 0x414, 0x435, 0x415, 0x444, 0x424, 0x433, 0x413, 0xab, 0xbb, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x445, 0x425, 0x438, 0x418, 0x2563, 0x2551, 0x2557, 0x255d, 0x439, 0x419, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x43a, 0x41a, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0xa4, 0x43b, 0x41b, 0x43c, 0x41c, 0x43d, 0x41d, 0x43e, 0x41e, 0x43f, 0x2518, 0x250c, 0x2588, 0x2584, 0x41f, 0x44f, 0x2580, 0x42f, 0x440, 0x420, 0x441, 0x421, 0x442, 0x422, 0x443, 0x423, 0x436, 0x416, 0x432, 0x412, 0x44c, 0x42c, 0x2116, 0xad, 0x44b, 0x42b, 0x437, 0x417, 0x448, 0x428, 0x44d, 0x42d, 0x449, 0x429, 0x447, 0x427, 0xa7, 0x25a0, 0xa0 }, /* CP857 */ { 0xc7, 0xfc, 0xe9, 0xe2, 0xe4, 0xe0, 0xe5, 0xe7, 0xea, 0xeb, 0xe8, 0xef, 0xee, 0x131, 0xc4, 0xc5, 0xc9, 0xe6, 0xc6, 0xf4, 0xf6, 0xf2, 0xfb, 0xf9, 0x130, 0xd6, 0xdc, 0xf8, 0xa3, 0xd8, 0x15e, 0x15f, 0xe1, 0xed, 0xf3, 0xfa, 0xf1, 0xd1, 0x11e, 0x11f, 0xbf, 0xae, 0xac, 0xbd, 0xbc, 0xa1, 0xab, 0xbb, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0xc1, 0xc2, 0xc0, 0xa9, 0x2563, 0x2551, 0x2557, 0x255d, 0xa2, 0xa5, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0xe3, 0xc3, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0xa4, 0xba, 0xaa, 0xca, 0xcb, 0xc8, 0xf8bb, 0xcd, 0xce, 0xcf, 0x2518, 0x250c, 0x2588, 0x2584, 0xa6, 0xcc, 0x2580, 0xd3, 0xdf, 0xd4, 0xd2, 0xf5, 0xd5, 0xb5, 0xf8bc, 0xd7, 0xda, 0xdb, 0xd9, 0xec, 0xff, 0xaf, 0xb4, 0xad, 0xb1, 0xf8bd, 0xbe, 0xb6, 0xa7, 0xf7, 0xb8, 0xb0, 0xa8, 0xb7, 0xb9, 0xb3, 0xb2, 0x25a0, 0xa0 }, /* CP858 */ { 0xc7, 0xfc, 0xe9, 0xe2, 0xe4, 0xe0, 0xe5, 0xe7, 0xea, 0xeb, 0xe8, 0xef, 0xee, 0xec, 0xc4, 0xc5, 0xc9, 0xe6, 0xc6, 0xf4, 0xf6, 0xf2, 0xfb, 0xf9, 0xff, 0xd6, 0xdc, 0xf8, 0xa3, 0xd8, 0xd7, 0x192, 0xe1, 0xed, 0xf3, 0xfa, 0xf1, 0xd1, 0xaa, 0xba, 0xbf, 0xae, 0xac, 0xbd, 0xbc, 0xa1, 0xab, 0xbb, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0xc1, 0xc2, 0xc0, 0xa9, 0x2563, 0x2551, 0x2557, 0x255d, 0xa2, 0xa5, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0xe3, 0xc3, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0xa4, 0xf0, 0xd0, 0xca, 0xcb, 0xc8, 0x20ac, 0xcd, 0xce, 0xcf, 0x2518, 0x250c, 0x2588, 0x2584, 0xa6, 0xcc, 0x2580, 0xd3, 0xdf, 0xd4, 0xd2, 0xf5, 0xd5, 0xb5, 0xfe, 0xde, 0xda, 0xdb, 0xd9, 0xfd, 0xdd, 0xaf, 0xb4, 0xad, 0xb1, 0x2017, 0xbe, 0xb6, 0xa7, 0xf7, 0xb8, 0xb0, 0xa8, 0xb7, 0xb9, 0xb3, 0xb2, 0x25a0, 0xa0 }, /* CP862 */ { 0x5d0, 0x5d1, 0x5d2, 0x5d3, 0x5d4, 0x5d5, 0x5d6, 0x5d7, 0x5d8, 0x5d9, 0x5da, 0x5db, 0x5dc, 0x5dd, 0x5de, 0x5df, 0x5e0, 0x5e1, 0x5e2, 0x5e3, 0x5e4, 0x5e5, 0x5e6, 0x5e7, 0x5e8, 0x5e9, 0x5ea, 0xa2, 0xa3, 0xa5, 0x20a7, 0x192, 0xe1, 0xed, 0xf3, 0xfa, 0xf1, 0xd1, 0xaa, 0xba, 0xbf, 0x2310, 0xac, 0xbd, 0xbc, 0xa1, 0xab, 0xbb, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 0x3b1, 0xdf, 0x393, 0x3c0, 0x3a3, 0x3c3, 0xb5, 0x3c4, 0x3a6, 0x398, 0x3a9, 0x3b4, 0x221e, 0x3c6, 0x3b5, 0x2229, 0x2261, 0xb1, 0x2265, 0x2264, 0x2320, 0x2321, 0xf7, 0x2248, 0xb0, 0x2219, 0xb7, 0x221a, 0x207f, 0xb2, 0x25a0, 0xa0 }, /* CP866 */ { 0x410, 0x411, 0x412, 0x413, 0x414, 0x415, 0x416, 0x417, 0x418, 0x419, 0x41a, 0x41b, 0x41c, 0x41d, 0x41e, 0x41f, 0x420, 0x421, 0x422, 0x423, 0x424, 0x425, 0x426, 0x427, 0x428, 0x429, 0x42a, 0x42b, 0x42c, 0x42d, 0x42e, 0x42f, 0x430, 0x431, 0x432, 0x433, 0x434, 0x435, 0x436, 0x437, 0x438, 0x439, 0x43a, 0x43b, 0x43c, 0x43d, 0x43e, 0x43f, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 0x440, 0x441, 0x442, 0x443, 0x444, 0x445, 0x446, 0x447, 0x448, 0x449, 0x44a, 0x44b, 0x44c, 0x44d, 0x44e, 0x44f, 0x401, 0x451, 0x404, 0x454, 0x407, 0x457, 0x40e, 0x45e, 0xb0, 0x2219, 0xb7, 0x221a, 0x2116, 0xa4, 0x25a0, 0xa0 }, /* CP874 */ { 0x20ac, 0x81, 0x82, 0x83, 0x84, 0x2026, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xe01, 0xe02, 0xe03, 0xe04, 0xe05, 0xe06, 0xe07, 0xe08, 0xe09, 0xe0a, 0xe0b, 0xe0c, 0xe0d, 0xe0e, 0xe0f, 0xe10, 0xe11, 0xe12, 0xe13, 0xe14, 0xe15, 0xe16, 0xe17, 0xe18, 0xe19, 0xe1a, 0xe1b, 0xe1c, 0xe1d, 0xe1e, 0xe1f, 0xe20, 0xe21, 0xe22, 0xe23, 0xe24, 0xe25, 0xe26, 0xe27, 0xe28, 0xe29, 0xe2a, 0xe2b, 0xe2c, 0xe2d, 0xe2e, 0xe2f, 0xe30, 0xe31, 0xe32, 0xe33, 0xe34, 0xe35, 0xe36, 0xe37, 0xe38, 0xe39, 0xe3a, 0xf8c1, 0xf8c2, 0xf8c3, 0xf8c4, 0xe3f, 0xe40, 0xe41, 0xe42, 0xe43, 0xe44, 0xe45, 0xe46, 0xe47, 0xe48, 0xe49, 0xe4a, 0xe4b, 0xe4c, 0xe4d, 0xe4e, 0xe4f, 0xe50, 0xe51, 0xe52, 0xe53, 0xe54, 0xe55, 0xe56, 0xe57, 0xe58, 0xe59, 0xe5a, 0xe5b, 0xf8c5, 0xf8c6, 0xf8c7, 0xf8c8 }, /* CP1125 */ { 0x410, 0x411, 0x412, 0x413, 0x414, 0x415, 0x416, 0x417, 0x418, 0x419, 0x41a, 0x41b, 0x41c, 0x41d, 0x41e, 0x41f, 0x420, 0x421, 0x422, 0x423, 0x424, 0x425, 0x426, 0x427, 0x428, 0x429, 0x42a, 0x42b, 0x42c, 0x42d, 0x42e, 0x42f, 0x430, 0x431, 0x432, 0x433, 0x434, 0x435, 0x436, 0x437, 0x438, 0x439, 0x43a, 0x43b, 0x43c, 0x43d, 0x43e, 0x43f, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 0x440, 0x441, 0x442, 0x443, 0x444, 0x445, 0x446, 0x447, 0x448, 0x449, 0x44a, 0x44b, 0x44c, 0x44d, 0x44e, 0x44f, 0x401, 0x451, 0x490, 0x491, 0x404, 0x454, 0x406, 0x456, 0x407, 0x457, 0xb7, 0x221a, 0x2116, 0xa4, 0x25a0, 0xa0 }, /* CP1250 */ { 0x20ac, 0x81, 0x201a, 0x83, 0x201e, 0x2026, 0x2020, 0x2021, 0x88, 0x2030, 0x160, 0x2039, 0x15a, 0x164, 0x17d, 0x179, 0x90, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x98, 0x2122, 0x161, 0x203a, 0x15b, 0x165, 0x17e, 0x17a, 0xa0, 0x2c7, 0x2d8, 0x141, 0xa4, 0x104, 0xa6, 0xa7, 0xa8, 0xa9, 0x15e, 0xab, 0xac, 0xad, 0xae, 0x17b, 0xb0, 0xb1, 0x2db, 0x142, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0x105, 0x15f, 0xbb, 0x13d, 0x2dd, 0x13e, 0x17c, 0x154, 0xc1, 0xc2, 0x102, 0xc4, 0x139, 0x106, 0xc7, 0x10c, 0xc9, 0x118, 0xcb, 0x11a, 0xcd, 0xce, 0x10e, 0x110, 0x143, 0x147, 0xd3, 0xd4, 0x150, 0xd6, 0xd7, 0x158, 0x16e, 0xda, 0x170, 0xdc, 0xdd, 0x162, 0xdf, 0x155, 0xe1, 0xe2, 0x103, 0xe4, 0x13a, 0x107, 0xe7, 0x10d, 0xe9, 0x119, 0xeb, 0x11b, 0xed, 0xee, 0x10f, 0x111, 0x144, 0x148, 0xf3, 0xf4, 0x151, 0xf6, 0xf7, 0x159, 0x16f, 0xfa, 0x171, 0xfc, 0xfd, 0x163, 0x2d9 }, /* CP1251 */ { 0x402, 0x403, 0x201a, 0x453, 0x201e, 0x2026, 0x2020, 0x2021, 0x20ac, 0x2030, 0x409, 0x2039, 0x40a, 0x40c, 0x40b, 0x40f, 0x452, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x98, 0x2122, 0x459, 0x203a, 0x45a, 0x45c, 0x45b, 0x45f, 0xa0, 0x40e, 0x45e, 0x408, 0xa4, 0x490, 0xa6, 0xa7, 0x401, 0xa9, 0x404, 0xab, 0xac, 0xad, 0xae, 0x407, 0xb0, 0xb1, 0x406, 0x456, 0x491, 0xb5, 0xb6, 0xb7, 0x451, 0x2116, 0x454, 0xbb, 0x458, 0x405, 0x455, 0x457, 0x410, 0x411, 0x412, 0x413, 0x414, 0x415, 0x416, 0x417, 0x418, 0x419, 0x41a, 0x41b, 0x41c, 0x41d, 0x41e, 0x41f, 0x420, 0x421, 0x422, 0x423, 0x424, 0x425, 0x426, 0x427, 0x428, 0x429, 0x42a, 0x42b, 0x42c, 0x42d, 0x42e, 0x42f, 0x430, 0x431, 0x432, 0x433, 0x434, 0x435, 0x436, 0x437, 0x438, 0x439, 0x43a, 0x43b, 0x43c, 0x43d, 0x43e, 0x43f, 0x440, 0x441, 0x442, 0x443, 0x444, 0x445, 0x446, 0x447, 0x448, 0x449, 0x44a, 0x44b, 0x44c, 0x44d, 0x44e, 0x44f }, /* CP1252 */ { 0x20ac, 0x81, 0x201a, 0x192, 0x201e, 0x2026, 0x2020, 0x2021, 0x2c6, 0x2030, 0x160, 0x2039, 0x152, 0x8d, 0x17d, 0x8f, 0x90, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x2dc, 0x2122, 0x161, 0x203a, 0x153, 0x9d, 0x17e, 0x178, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff }, /* CP1253 */ { 0x20ac, 0x81, 0x201a, 0x192, 0x201e, 0x2026, 0x2020, 0x2021, 0x88, 0x2030, 0x8a, 0x2039, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x98, 0x2122, 0x9a, 0x203a, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0x385, 0x386, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xf8f9, 0xab, 0xac, 0xad, 0xae, 0x2015, 0xb0, 0xb1, 0xb2, 0xb3, 0x384, 0xb5, 0xb6, 0xb7, 0x388, 0x389, 0x38a, 0xbb, 0x38c, 0xbd, 0x38e, 0x38f, 0x390, 0x391, 0x392, 0x393, 0x394, 0x395, 0x396, 0x397, 0x398, 0x399, 0x39a, 0x39b, 0x39c, 0x39d, 0x39e, 0x39f, 0x3a0, 0x3a1, 0xf8fa, 0x3a3, 0x3a4, 0x3a5, 0x3a6, 0x3a7, 0x3a8, 0x3a9, 0x3aa, 0x3ab, 0x3ac, 0x3ad, 0x3ae, 0x3af, 0x3b0, 0x3b1, 0x3b2, 0x3b3, 0x3b4, 0x3b5, 0x3b6, 0x3b7, 0x3b8, 0x3b9, 0x3ba, 0x3bb, 0x3bc, 0x3bd, 0x3be, 0x3bf, 0x3c0, 0x3c1, 0x3c2, 0x3c3, 0x3c4, 0x3c5, 0x3c6, 0x3c7, 0x3c8, 0x3c9, 0x3ca, 0x3cb, 0x3cc, 0x3cd, 0x3ce, 0xf8fb }, /* CP1254 */ { 0x20ac, 0x81, 0x201a, 0x192, 0x201e, 0x2026, 0x2020, 0x2021, 0x2c6, 0x2030, 0x160, 0x2039, 0x152, 0x8d, 0x8e, 0x8f, 0x90, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x2dc, 0x2122, 0x161, 0x203a, 0x153, 0x9d, 0x9e, 0x178, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0x11e, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0x130, 0x15e, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0x11f, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x131, 0x15f, 0xff }, /* CP1255 */ { 0x20ac, 0x81, 0x201a, 0x192, 0x201e, 0x2026, 0x2020, 0x2021, 0x2c6, 0x2030, 0x8a, 0x2039, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x2dc, 0x2122, 0x9a, 0x203a, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0x20aa, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xd7, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xf7, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0x5b0, 0x5b1, 0x5b2, 0x5b3, 0x5b4, 0x5b5, 0x5b6, 0x5b7, 0x5b8, 0x5b9, 0x5ba, 0x5bb, 0x5bc, 0x5bd, 0x5be, 0x5bf, 0x5c0, 0x5c1, 0x5c2, 0x5c3, 0x5f0, 0x5f1, 0x5f2, 0x5f3, 0x5f4, 0xf88d, 0xf88e, 0xf88f, 0xf890, 0xf891, 0xf892, 0xf893, 0x5d0, 0x5d1, 0x5d2, 0x5d3, 0x5d4, 0x5d5, 0x5d6, 0x5d7, 0x5d8, 0x5d9, 0x5da, 0x5db, 0x5dc, 0x5dd, 0x5de, 0x5df, 0x5e0, 0x5e1, 0x5e2, 0x5e3, 0x5e4, 0x5e5, 0x5e6, 0x5e7, 0x5e8, 0x5e9, 0x5ea, 0xf894, 0xf895, 0x200e, 0x200f, 0xf896 }, /* CP1256 */ { 0x20ac, 0x67e, 0x201a, 0x192, 0x201e, 0x2026, 0x2020, 0x2021, 0x2c6, 0x2030, 0x679, 0x2039, 0x152, 0x686, 0x698, 0x688, 0x6af, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x6a9, 0x2122, 0x691, 0x203a, 0x153, 0x200c, 0x200d, 0x6ba, 0xa0, 0x60c, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0x6be, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0x61b, 0xbb, 0xbc, 0xbd, 0xbe, 0x61f, 0x6c1, 0x621, 0x622, 0x623, 0x624, 0x625, 0x626, 0x627, 0x628, 0x629, 0x62a, 0x62b, 0x62c, 0x62d, 0x62e, 0x62f, 0x630, 0x631, 0x632, 0x633, 0x634, 0x635, 0x636, 0xd7, 0x637, 0x638, 0x639, 0x63a, 0x640, 0x641, 0x642, 0x643, 0xe0, 0x644, 0xe2, 0x645, 0x646, 0x647, 0x648, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0x649, 0x64a, 0xee, 0xef, 0x64b, 0x64c, 0x64d, 0x64e, 0xf4, 0x64f, 0x650, 0xf7, 0x651, 0xf9, 0x652, 0xfb, 0xfc, 0x200e, 0x200f, 0x6d2 }, /* CP1257 */ { 0x20ac, 0x81, 0x201a, 0x83, 0x201e, 0x2026, 0x2020, 0x2021, 0x88, 0x2030, 0x8a, 0x2039, 0x8c, 0xa8, 0x2c7, 0xb8, 0x90, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x98, 0x2122, 0x9a, 0x203a, 0x9c, 0xaf, 0x2db, 0x9f, 0xa0, 0xf8fc, 0xa2, 0xa3, 0xa4, 0xf8fd, 0xa6, 0xa7, 0xd8, 0xa9, 0x156, 0xab, 0xac, 0xad, 0xae, 0xc6, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xf8, 0xb9, 0x157, 0xbb, 0xbc, 0xbd, 0xbe, 0xe6, 0x104, 0x12e, 0x100, 0x106, 0xc4, 0xc5, 0x118, 0x112, 0x10c, 0xc9, 0x179, 0x116, 0x122, 0x136, 0x12a, 0x13b, 0x160, 0x143, 0x145, 0xd3, 0x14c, 0xd5, 0xd6, 0xd7, 0x172, 0x141, 0x15a, 0x16a, 0xdc, 0x17b, 0x17d, 0xdf, 0x105, 0x12f, 0x101, 0x107, 0xe4, 0xe5, 0x119, 0x113, 0x10d, 0xe9, 0x17a, 0x117, 0x123, 0x137, 0x12b, 0x13c, 0x161, 0x144, 0x146, 0xf3, 0x14d, 0xf5, 0xf6, 0xf7, 0x173, 0x142, 0x15b, 0x16b, 0xfc, 0x17c, 0x17e, 0x2d9 }, /* CP1258 */ { 0x20ac, 0x81, 0x201a, 0x192, 0x201e, 0x2026, 0x2020, 0x2021, 0x2c6, 0x2030, 0x8a, 0x2039, 0x152, 0x8d, 0x8e, 0x8f, 0x90, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x2dc, 0x2122, 0x9a, 0x203a, 0x153, 0x9d, 0x9e, 0x178, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0x102, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0x300, 0xcd, 0xce, 0xcf, 0x110, 0xd1, 0x309, 0xd3, 0xd4, 0x1a0, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0x1af, 0x303, 0xdf, 0xe0, 0xe1, 0xe2, 0x103, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0x301, 0xed, 0xee, 0xef, 0x111, 0xf1, 0x323, 0xf3, 0xf4, 0x1a1, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x1b0, 0x20ab, 0xff }, /* CP20866 (KOI8-R) */ { 0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524, 0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590, 0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248, 0x2264, 0x2265, 0xa0, 0x2321, 0xb0, 0xb2, 0xb7, 0xf7, 0x2550, 0x2551, 0x2552, 0x451, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e, 0x255f, 0x2560, 0x2561, 0x401, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0xa9, 0x44e, 0x430, 0x431, 0x446, 0x434, 0x435, 0x444, 0x433, 0x445, 0x438, 0x439, 0x43a, 0x43b, 0x43c, 0x43d, 0x43e, 0x43f, 0x44f, 0x440, 0x441, 0x442, 0x443, 0x436, 0x432, 0x44c, 0x44b, 0x437, 0x448, 0x44d, 0x449, 0x447, 0x44a, 0x42e, 0x410, 0x411, 0x426, 0x414, 0x415, 0x424, 0x413, 0x425, 0x418, 0x419, 0x41a, 0x41b, 0x41c, 0x41d, 0x41e, 0x41f, 0x42f, 0x420, 0x421, 0x422, 0x423, 0x416, 0x412, 0x42c, 0x42b, 0x417, 0x428, 0x42d, 0x429, 0x427, 0x42a }, /* CP21866 (KOI8-U) */ { 0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524, 0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590, 0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248, 0x2264, 0x2265, 0xa0, 0x2321, 0xb0, 0xb2, 0xb7, 0xf7, 0x2550, 0x2551, 0x2552, 0x451, 0x454, 0x2554, 0x456, 0x457, 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x491, 0x45e, 0x255e, 0x255f, 0x2560, 0x2561, 0x401, 0x404, 0x2563, 0x406, 0x407, 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x490, 0x40e, 0xa9, 0x44e, 0x430, 0x431, 0x446, 0x434, 0x435, 0x444, 0x433, 0x445, 0x438, 0x439, 0x43a, 0x43b, 0x43c, 0x43d, 0x43e, 0x43f, 0x44f, 0x440, 0x441, 0x442, 0x443, 0x436, 0x432, 0x44c, 0x44b, 0x437, 0x448, 0x44d, 0x449, 0x447, 0x44a, 0x42e, 0x410, 0x411, 0x426, 0x414, 0x415, 0x424, 0x413, 0x425, 0x418, 0x419, 0x41a, 0x41b, 0x41c, 0x41d, 0x41e, 0x41f, 0x42f, 0x420, 0x421, 0x422, 0x423, 0x416, 0x412, 0x42c, 0x42b, 0x417, 0x428, 0x42d, 0x429, 0x427, 0x42a }, /* The following are not valid Windows codepages, but they fit nicely here. The CP numbers are only used internally and are guranteed not to clash with valid Windows codepage identifier. */ /* CP101 (GEORGIAN-PS) Georgian charset, used as the default charset in the ka_GE locale (Georgian, Georgia). Apparently derived from Windows CP1252. */ { 0x80, 0x81, 0x201a, 0x192, 0x201e, 0x2026, 0x2020, 0x2021, 0x2c6, 0x2030, 0x160, 0x2039, 0x152, 0x8d, 0x8e, 0x8f, 0x90, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x2dc, 0x2122, 0x161, 0x203a, 0x153, 0x9d, 0x9e, 0x178, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0x10d0, 0x10d1, 0x10d2, 0x10d3, 0x10d4, 0x10d5, 0x10d6, 0x10f1, 0x10d7, 0x10d8, 0x10d9, 0x10da, 0x10db, 0x10dc, 0x10f2, 0x10dd, 0x10de, 0x10df, 0x10e0, 0x10e1, 0x10e2, 0x10f3, 0x10e3, 0x10e4, 0x10e5, 0x10e6, 0x10e7, 0x10e8, 0x10e9, 0x10ea, 0x10eb, 0x10ec, 0x10ed, 0x10ee, 0x10f4, 0x10ef, 0x10f0, 0x10f5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff }, /* CP102 (PT154) Cyrillic-Asian charset, used as the default charset in the kk_KZ locale (Kazakh, Kazakhstan). */ { 0x496, 0x492, 0x4ee, 0x493, 0x201e, 0x2026, 0x4b6, 0x4ae, 0x4b2, 0x4af, 0x4a0, 0x4e2, 0x4a2, 0x49a, 0x4ba, 0x4b8, 0x497, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x4b3, 0x4b7, 0x4a1, 0x4e3, 0x4a3, 0x49b, 0x4bb, 0x4b9, 0xa0, 0x40e, 0x45e, 0x408, 0x4e8, 0x498, 0x4b0, 0xa7, 0x401, 0xa9, 0x4d8, 0xab, 0xac, 0x4ef, 0xae, 0x49c, 0xb0, 0x4b1, 0x406, 0x456, 0x499, 0x4e9, 0xb6, 0xb7, 0x451, 0x2116, 0x4d9, 0xbb, 0x458, 0x4aa, 0x4ab, 0x49d, 0x410, 0x411, 0x412, 0x413, 0x414, 0x415, 0x416, 0x417, 0x418, 0x419, 0x41a, 0x41b, 0x41c, 0x41d, 0x41e, 0x41f, 0x420, 0x421, 0x422, 0x423, 0x424, 0x425, 0x426, 0x427, 0x428, 0x429, 0x42a, 0x42b, 0x42c, 0x42d, 0x42e, 0x42f, 0x430, 0x431, 0x432, 0x433, 0x434, 0x435, 0x436, 0x437, 0x438, 0x439, 0x43a, 0x43b, 0x43c, 0x43d, 0x43e, 0x43f, 0x440, 0x441, 0x442, 0x443, 0x444, 0x445, 0x446, 0x447, 0x448, 0x449, 0x44a, 0x44b, 0x44c, 0x44d, 0x44e, 0x44f } }; #endif /* _MB_EXTENDED_CHARSETS_WINDOWS */ #if defined(_MB_EXTENDED_CHARSETS_ISO) || defined(_MB_EXTENDED_CHARSETS_WINDOWS) /* Handle one to five decimal digits. Return -1 in any other case. */ static int __micro_atoi (const char *s) { int ret = 0; if (!*s) return -1; while (*s) { if (*s < '0' || *s > '9' || ret >= 100000) return -1; ret = 10 * ret + (*s++ - '0'); } return ret; } #endif #ifdef _MB_EXTENDED_CHARSETS_ISO int __iso_8859_val_index (int val) { if (val >= 2 && val <= 16) { val -= 2; if (val > 10) --val; return (int) val; } return -1; } int __iso_8859_index (const char *charset_ext) { return __iso_8859_val_index (__micro_atoi (charset_ext)); } #endif /* _MB_EXTENDED_CHARSETS_ISO */ #ifdef _MB_EXTENDED_CHARSETS_WINDOWS int __cp_val_index (int val) { int cp_idx; switch (val) { case 437: cp_idx = 0; break; case 720: cp_idx = 1; break; case 737: cp_idx = 2; break; case 775: cp_idx = 3; break; case 850: cp_idx = 4; break; case 852: cp_idx = 5; break; case 855: cp_idx = 6; break; case 857: cp_idx = 7; break; case 858: cp_idx = 8; break; case 862: cp_idx = 9; break; case 866: cp_idx = 10; break; case 874: cp_idx = 11; break; case 1125: cp_idx = 12; break; case 1250: cp_idx = 13; break; case 1251: cp_idx = 14; break; case 1252: cp_idx = 15; break; case 1253: cp_idx = 16; break; case 1254: cp_idx = 17; break; case 1255: cp_idx = 18; break; case 1256: cp_idx = 19; break; case 1257: cp_idx = 20; break; case 1258: cp_idx = 21; break; case 20866: cp_idx = 22; break; case 21866: cp_idx = 23; break; case 101: cp_idx = 24; break; case 102: cp_idx = 25; break; default: cp_idx = -1; break; } return cp_idx; } int __cp_index (const char *charset_ext) { return __cp_val_index (__micro_atoi (charset_ext)); } #endif /* _MB_EXTENDED_CHARSETS_WINDOWS */ #endif /* _MB_CAPABLE */ picolibc-1.7.4/newlib/libc/stdlib/seed48.c000066400000000000000000000020101414576234500202250ustar00rootroot00000000000000/* * Copyright (c) 1993 Martin Birgmeier * All rights reserved. * * You may redistribute unmodified or modified versions of this source * code provided that the above copyright notice and this and the * following conditions are retained. * * This software is provided ``as is'', and comes with no warranties * of any kind. I shall in no event be liable for anything that happens * to anyone/anything when using this software. */ #include "rand48.h" unsigned short * _seed48_r (struct _rand48 *r, unsigned short xseed[3]) { static NEWLIB_THREAD_LOCAL unsigned short sseed[3]; sseed[0] = r->_seed[0]; sseed[1] = r->_seed[1]; sseed[2] = r->_seed[2]; r->_seed[0] = xseed[0]; r->_seed[1] = xseed[1]; r->_seed[2] = xseed[2]; r->_mult[0] = _RAND48_MULT_0; r->_mult[1] = _RAND48_MULT_1; r->_mult[2] = _RAND48_MULT_2; r->_add = _RAND48_ADD; return sseed; } #ifndef _REENT_ONLY unsigned short * seed48 (unsigned short xseed[3]) { return _seed48_r (&_rand48, xseed); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/setenv.c000066400000000000000000000071501414576234500204470ustar00rootroot00000000000000/* * Copyright (c) 1987 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that: (1) source distributions retain this entire copyright * notice and comment, and (2) distributions including binaries display * the following acknowledgement: ``This product includes software * developed by the University of California, Berkeley and its contributors'' * in the documentation or other materials provided with the distribution. * Neither the name of the University nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef _REENT_ONLY #include #include #include #include #include /* * setenv -- * Set the value of the environmental variable "name" to be * "value". If rewrite is set, replace any current value. */ extern char **environ; /* Only deal with a pointer to environ, to work around subtle bugs with shared libraries and/or small data systems where the user declares his own 'environ'. */ static char ***p_environ = &environ; int setenv (const char *name, const char *value, int rewrite) { static int alloced; /* if allocated space before */ register char *C; size_t l_value; int offset; if (strchr(name, '=')) { __errno_r(ptr) = EINVAL; return -1; } ENV_LOCK; l_value = strlen (value); if ((C = _findenv (name, &offset))) { /* find if already exists */ if (!rewrite) { ENV_UNLOCK; return 0; } if (strlen (C) >= l_value) { /* old larger; copy over */ strcpy(C, value); ENV_UNLOCK; return 0; } } else { /* create new slot */ register int cnt; register char **P; for (P = *p_environ, cnt = 0; *P; ++P, ++cnt); if (alloced) { /* just increase size */ *p_environ = (char **) realloc ((char *) environ, (size_t) (sizeof (char *) * (cnt + 2))); if (!*p_environ) { ENV_UNLOCK; return -1; } } else { /* get new space */ alloced = 1; /* copy old entries into it */ P = (char **) malloc ((size_t) (sizeof (char *) * (cnt + 2))); if (!P) { ENV_UNLOCK; return (-1); } memcpy((char *) P,(char *) *p_environ, cnt * sizeof (char *)); *p_environ = P; } (*p_environ)[cnt + 1] = NULL; offset = cnt; } for (C = (char *) name; *C && *C != '='; ++C); /* no `=' in name */ if (!((*p_environ)[offset] = /* name + `=' + value */ malloc ((size_t) ((int) (C - name) + l_value + 2)))) { ENV_UNLOCK; return -1; } for (C = (*p_environ)[offset]; (*C = *name++) && *C != '='; ++C); for (*C++ = '='; (*C++ = *value++) != 0;); ENV_UNLOCK; return 0; } /* * unsetenv(name) -- * Delete environmental variable "name". */ int unsetenv (const char *name) { register char **P; int offset; /* Name cannot be NULL, empty, or contain an equal sign. */ if (name == NULL || name[0] == '\0' || strchr(name, '=')) { errno = EINVAL; return -1; } ENV_LOCK; while (_findenv (name, &offset)) /* if set multiple times */ { for (P = &(*p_environ)[offset];; ++P) if (!(*P = *(P + 1))) break; } ENV_UNLOCK; return 0; } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/setenv_r.c000066400000000000000000000100521414576234500207630ustar00rootroot00000000000000/* This file may have been modified by DJ Delorie (Jan 1991). If so, ** these modifications are Copyright (C) 1991 DJ Delorie. */ /* * Copyright (c) 1987 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that: (1) source distributions retain this entire copyright * notice and comment, and (2) distributions including binaries display * the following acknowledgement: ``This product includes software * developed by the University of California, Berkeley and its contributors'' * in the documentation or other materials provided with the distribution. * Neither the name of the University nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include #include #include #include #include #include #include "envlock.h" extern char **environ; /* Only deal with a pointer to environ, to work around subtle bugs with shared libraries and/or small data systems where the user declares his own 'environ'. */ static char ***p_environ = &environ; /* _findenv_r is defined in getenv_r.c. */ extern char *_findenv_r (struct _reent *, const char *, int *); /* * _setenv_r -- * Set the value of the environmental variable "name" to be * "value". If rewrite is set, replace any current value. * If "name" contains equal sign, -1 is returned, and errno is * set to EINVAL; */ int _setenv_r (struct _reent *reent_ptr, const char *name, const char *value, int rewrite) { static int alloced; /* if allocated space before */ register char *C; int l_value, offset; if (strchr(name, '=')) { errno = EINVAL; return -1; } ENV_LOCK; l_value = strlen (value); if ((C = _findenv_r (reent_ptr, name, &offset))) { /* find if already exists */ if (!rewrite) { ENV_UNLOCK; return 0; } if (strlen (C) >= l_value) { /* old larger; copy over */ while ((*C++ = *value++) != 0); ENV_UNLOCK; return 0; } } else { /* create new slot */ register int cnt; register char **P; for (P = *p_environ, cnt = 0; *P; ++P, ++cnt); if (alloced) { /* just increase size */ *p_environ = (char **) _realloc_r (reent_ptr, (char *) environ, (size_t) (sizeof (char *) * (cnt + 2))); if (!*p_environ) { ENV_UNLOCK; return -1; } } else { /* get new space */ alloced = 1; /* copy old entries into it */ P = (char **) _malloc_r (reent_ptr, (size_t) (sizeof (char *) * (cnt + 2))); if (!P) { ENV_UNLOCK; return (-1); } memcpy((char *) P,(char *) *p_environ, cnt * sizeof (char *)); *p_environ = P; } (*p_environ)[cnt + 1] = NULL; offset = cnt; } for (C = (char *) name; *C && *C != '='; ++C); /* no `=' in name */ if (!((*p_environ)[offset] = /* name + `=' + value */ _malloc_r (reent_ptr, (size_t) ((int) (C - name) + l_value + 2)))) { ENV_UNLOCK; return -1; } for (C = (*p_environ)[offset]; (*C = *name++) && *C != '='; ++C); for (*C++ = '='; (*C++ = *value++) != 0;); ENV_UNLOCK; return 0; } /* * _unsetenv_r(name) -- * Delete environmental variable "name". */ int _unsetenv_r (struct _reent *reent_ptr, const char *name) { register char **P; int offset; /* Name cannot be NULL, empty, or contain an equal sign. */ if (name == NULL || name[0] == '\0' || strchr(name, '=')) { errno = EINVAL; return -1; } ENV_LOCK; while (_findenv_r (reent_ptr, name, &offset)) /* if set multiple times */ { for (P = &(*p_environ)[offset];; ++P) if (!(*P = *(P + 1))) break; } ENV_UNLOCK; return 0; } picolibc-1.7.4/newlib/libc/stdlib/srand.c000066400000000000000000000037401414576234500202530ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ /* FUNCTION <>, <>---pseudo-random numbers INDEX rand INDEX srand INDEX rand_r SYNOPSIS #include int rand(void); void srand(unsigned int <[seed]>); int rand_r(unsigned int *<[seed]>); DESCRIPTION <> returns a different integer each time it is called; each integer is chosen by an algorithm designed to be unpredictable, so that you can use <> when you require a random number. The algorithm depends on a static variable called the ``random seed''; starting with a given value of the random seed always produces the same sequence of numbers in successive calls to <>. You can set the random seed using <>; it does nothing beyond storing its argument in the static variable used by <>. You can exploit this to make the pseudo-random sequence less predictable, if you wish, by using some other unpredictable value (often the least significant parts of a time-varying value) as the random seed before beginning a sequence of calls to <>; or, if you wish to ensure (for example, while debugging) that successive runs of your program use the same ``random'' numbers, you can use <> to set the same random seed at the outset. RETURNS <> returns the next pseudo-random integer in sequence; it is a number between <<0>> and <> (inclusive). <> does not return a result. NOTES <> and <> are unsafe for multi-threaded applications. <> is thread-safe and should be used instead. PORTABILITY <> is required by ANSI, but the algorithm for pseudo-random number generation is not specified; therefore, even if you use the same random seed, you cannot expect the same sequence of results on two different systems. <> requires no supporting OS subroutines. */ #ifndef _REENT_ONLY #define _DEFAULT_SOURCE #include void srand (unsigned int seed) { srandom(seed); } #endif /* _REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/srand48.c000066400000000000000000000015611414576234500204260ustar00rootroot00000000000000/* * Copyright (c) 1993 Martin Birgmeier * All rights reserved. * * You may redistribute unmodified or modified versions of this source * code provided that the above copyright notice and this and the * following conditions are retained. * * This software is provided ``as is'', and comes with no warranties * of any kind. I shall in no event be liable for anything that happens * to anyone/anything when using this software. */ #include "rand48.h" void _srand48_r (struct _rand48 *r, long seed) { r->_seed[0] = _RAND48_SEED_0; r->_seed[1] = (unsigned short) seed; r->_seed[2] = (unsigned short) ((unsigned long)seed >> 16); r->_mult[0] = _RAND48_MULT_0; r->_mult[1] = _RAND48_MULT_1; r->_mult[2] = _RAND48_MULT_2; r->_add = _RAND48_ADD; } #ifndef _REENT_ONLY void srand48 (long seed) { _srand48_r (&_rand48, seed); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/srandom.c000066400000000000000000000035271414576234500206120ustar00rootroot00000000000000/* Copyright (c) 2016 Joel Sherrill */ /* FUNCTION <>, <>---pseudo-random numbers INDEX random INDEX srandom SYNOPSIS #define _XOPEN_SOURCE 500 #include long int random(void); void srandom(unsigned int <[seed]>); DESCRIPTION <> returns a different integer each time it is called; each integer is chosen by an algorithm designed to be unpredictable, so that you can use <> when you require a random number. The algorithm depends on a static variable called the ``random seed''; starting with a given value of the random seed always produces the same sequence of numbers in successive calls to <>. You can set the random seed using <>; it does nothing beyond storing its argument in the static variable used by <>. You can exploit this to make the pseudo-random sequence less predictable, if you wish, by using some other unpredictable value (often the least significant parts of a time-varying value) as the random seed before beginning a sequence of calls to <>; or, if you wish to ensure (for example, while debugging) that successive runs of your program use the same ``random'' numbers, you can use <> to set the same random seed at the outset. RETURNS <> returns the next pseudo-random integer in sequence; it is a number between <<0>> and <> (inclusive). <> does not return a result. NOTES <> and <> are unsafe for multi-threaded applications. _XOPEN_SOURCE may be any value >= 500. PORTABILITY <> is required by XSI. This implementation uses the same algorithm as <>. <> requires no supporting OS subroutines. */ #ifndef _REENT_ONLY #include extern NEWLIB_THREAD_LOCAL long long _rand_next; void srandom (unsigned int seed) { _rand_next = seed; } #endif /* _REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/std.h000066400000000000000000000012221414576234500177340ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ #include #include #include #include #include #ifndef CYGNUS_NEC #include #endif #define Ise(c) ((c == 'e') || (c == 'E') || (c == 'd') || (c == 'D')) #define Isdigit(c) ((c <= '9') && (c >= '0')) #define Isspace(c) ((c == ' ') || (c == '\t') || (c=='\n') || (c=='\v') \ || (c == '\r') || (c == '\f')) #define Issign(c) ((c == '-') || (c == '+')) #define Val(c) ((c - '0')) #define MAXE 308 #define MINE (-308) /* flags */ #define SIGN 0x01 #define ESIGN 0x02 #define DECP 0x04 picolibc-1.7.4/newlib/libc/stdlib/stdlib.tex000066400000000000000000000105551414576234500210050ustar00rootroot00000000000000# #Copyright (c) 1990 Regents of the University of California. #All rights reserved. # @node Stdlib @chapter Standard Utility Functions (@file{stdlib.h}) This chapter groups utility functions useful in a variety of programs. The corresponding declarations are in the header file @file{stdlib.h}. @menu * _Exit:: End program execution without cleaning up * a64l:: String to long long * abort:: Abnormal termination of a program * abs:: Integer absolute value (magnitude) * assert:: Macro for Debugging Diagnostics * atexit:: Request execution of functions at program exit * atof:: String to double or float * atoi:: String to integer * atoll:: String to long long * bsearch:: Binary search * calloc:: Allocate space for arrays * div:: Divide two integers * ecvtbuf:: Double or float to string of digits * ecvt:: Double or float to string of digits (malloc result) * __env_lock:: Lock environment list for getenv and setenv * gcvt:: Format double or float as string * exit:: End program execution * getenv:: Look up environment variable * itoa:: Integer to string * labs:: Long integer absolute value (magnitude) * ldiv:: Divide two long integers * llabs:: Long long integer absolute value (magnitude) * lldiv:: Divide two long long integers * malloc:: Allocate and manage memory (malloc, realloc, free) * mallinfo:: Get information about allocated memory * __malloc_lock:: Lock memory pool for malloc and free * mbsrtowcs:: Convert a character string to a wide-character string * mbstowcs:: Minimal multibyte string to wide string converter * mblen:: Minimal multibyte length * mbtowc:: Minimal multibyte to wide character converter * on_exit:: Request execution of functions at program exit * qsort:: Array sort * rand:: Pseudo-random numbers * random:: Pseudo-random numbers * rand48:: Uniformly distributed pseudo-random numbers * rpmatch:: Determine whether response is affirmative or negative * strtod:: String to double or float * strtol:: String to long * strtoll:: String to long long * strtoul:: String to unsigned long * strtoull:: String to unsigned long long * wcsrtombs:: Convert a wide-character string to a character string * wcstod:: Wide string to double or float * wcstol:: Wide string to long * wcstoll:: Wide string to long long * wcstoul:: Wide string to unsigned long * wcstoull:: Wide string to unsigned long long * system:: Execute command string * utoa:: Unsigned integer to string * wcstombs:: Minimal wide string to multibyte string converter * wctomb:: Minimal wide character to multibyte converter @end menu @page @include stdlib/_Exit.def @page @include stdlib/a64l.def @page @include stdlib/abort.def @page @include stdlib/abs.def @page @include stdlib/assert.def @page @include stdlib/atexit.def @page @include stdlib/atof.def @page @include stdlib/atoi.def @page @include stdlib/atoll.def @page @include search/bsearch.def @page @include stdlib/calloc.def @page @include stdlib/div.def @page @include stdlib/efgcvt.def @page @include stdlib/ecvtbuf.def @page @include stdlib/envlock.def @page @include stdlib/exit.def @page @include stdlib/getenv.def @page @include stdlib/itoa.def @page @include stdlib/labs.def @page @include stdlib/ldiv.def @page @include stdlib/llabs.def @page @include stdlib/lldiv.def @page @include stdlib/malloc.def @page @include stdlib/mstats.def @page @include stdlib/mlock.def @page @include stdlib/mblen.def @page @include stdlib/mbsnrtowcs.def @page @include stdlib/mbstowcs.def @page @include stdlib/mbtowc.def @page @include stdlib/on_exit.def @page @include search/qsort.def @page @include stdlib/rand.def @page @include stdlib/random.def @page @include stdlib/rand48.def @page @include stdlib/rpmatch.def @page @include stdlib/strtod.def @page @include stdlib/strtol.def @page @include stdlib/strtoll.def @page @include stdlib/strtoul.def @page @include stdlib/strtoull.def @page @include stdlib/wcsnrtombs.def @page @include stdlib/wcstod.def @page @include stdlib/wcstol.def @page @include stdlib/wcstoll.def @page @include stdlib/wcstoul.def @page @include stdlib/wcstoull.def @page @include stdlib/system.def @page @include stdlib/utoa.def @page @include stdlib/wcstombs.def @page @include stdlib/wctomb.def picolibc-1.7.4/newlib/libc/stdlib/strtod.c000066400000000000000000000725771414576234500205010ustar00rootroot00000000000000/* FUNCTION <>, <>, <>, <>, <>, <>---string to double or float INDEX strtod INDEX strtof INDEX strtold INDEX strtod_l INDEX strtof_l INDEX strtold_l INDEX _strtod_r SYNOPSIS #include double strtod(const char *restrict <[str]>, char **restrict <[tail]>); float strtof(const char *restrict <[str]>, char **restrict <[tail]>); long double strtold(const char *restrict <[str]>, char **restrict <[tail]>); #include double strtod_l(const char *restrict <[str]>, char **restrict <[tail]>, locale_t <[locale]>); float strtof_l(const char *restrict <[str]>, char **restrict <[tail]>, locale_t <[locale]>); long double strtold_l(const char *restrict <[str]>, char **restrict <[tail]>, locale_t <[locale]>); double _strtod_r(void *<[reent]>, const char *restrict <[str]>, char **restrict <[tail]>); DESCRIPTION <>, <>, <> parse the character string <[str]>, producing a substring which can be converted to a double, float, or long double value, respectively. The substring converted is the longest initial subsequence of <[str]>, beginning with the first non-whitespace character, that has one of these formats: .[+|-]<[digits]>[.[<[digits]>]][(e|E)[+|-]<[digits]>] .[+|-].<[digits]>[(e|E)[+|-]<[digits]>] .[+|-](i|I)(n|N)(f|F)[(i|I)(n|N)(i|I)(t|T)(y|Y)] .[+|-](n|N)(a|A)(n|N)[<(>[<[hexdigits]>]<)>] .[+|-]0(x|X)<[hexdigits]>[.[<[hexdigits]>]][(p|P)[+|-]<[digits]>] .[+|-]0(x|X).<[hexdigits]>[(p|P)[+|-]<[digits]>] The substring contains no characters if <[str]> is empty, consists entirely of whitespace, or if the first non-whitespace character is something other than <<+>>, <<->>, <<.>>, or a digit, and cannot be parsed as infinity or NaN. If the platform does not support NaN, then NaN is treated as an empty substring. If the substring is empty, no conversion is done, and the value of <[str]> is stored in <<*<[tail]>>>. Otherwise, the substring is converted, and a pointer to the final string (which will contain at least the terminating null character of <[str]>) is stored in <<*<[tail]>>>. If you want no assignment to <<*<[tail]>>>, pass a null pointer as <[tail]>. This implementation returns the nearest machine number to the input decimal string. Ties are broken by using the IEEE round-even rule. However, <> is currently subject to double rounding errors. <>, <>, <> are like <>, <>, <> but perform the conversion based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. The alternate function <<_strtod_r>> is a reentrant version. The extra argument <[reent]> is a pointer to a reentrancy structure. RETURNS These functions return the converted substring value, if any. If no conversion could be performed, 0 is returned. If the correct value is out of the range of representable values, plus or minus <> (<>, <>) is returned, and <> is stored in errno. If the correct value would cause underflow, 0 is returned and <> is stored in errno. PORTABILITY <> is ANSI. <>, <> are C99. <>, <>, <> are GNU extensions. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ /**************************************************************** The author of this software is David M. Gay. Copyright (C) 1998-2001 by Lucent Technologies All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that the copyright notice and this permission notice and warranty disclaimer appear in supporting documentation, and that the name of Lucent or any of its entities not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************************************************/ /* Please send bug reports to David M. Gay (dmg at acm dot org, * with " at " changed at "@" and " dot " changed to "."). */ /* Original file gdtoa-strtod.c Modified 06-21-2006 by Jeff Johnston to work within newlib. */ #define _GNU_SOURCE #include <_ansi.h> #include #include #include #include "mprec.h" #include "gdtoa.h" #include "../locale/setlocale.h" /* #ifndef NO_FENV_H */ /* #include */ /* #endif */ #include "locale.h" #ifdef IEEE_Arith #ifndef NO_IEEE_Scale #define Avoid_Underflow #undef tinytens /* The factor of 2^106 in tinytens[4] helps us avoid setting the underflow */ /* flag unnecessarily. It leads to a song and dance at the end of strtod. */ static const double tinytens[] = { 1e-16, 1e-32, #ifdef _DOUBLE_IS_32BITS 0.0, 0.0, 0.0 #else 1e-64, 1e-128, 9007199254740992. * 9007199254740992.e-256 #endif }; #endif #endif #ifdef Honor_FLT_ROUNDS #define Rounding rounding #undef Check_FLT_ROUNDS #define Check_FLT_ROUNDS #else #define Rounding Flt_Rounds #endif #ifdef IEEE_MC68k #define _0 0 #define _1 1 #else #define _0 1 #define _1 0 #endif #ifdef Avoid_Underflow /*{*/ static double sulp (U x, int scale) { U u; double rv; int i; rv = ulp(dval(x)); if (!scale || (i = 2*P + 1 - ((dword0(x) & Exp_mask) >> Exp_shift)) <= 0) return rv; /* Is there an example where i <= 0 ? */ dword0(u) = Exp_1 + ((__int32_t)i << Exp_shift); #ifndef _DOUBLE_IS_32BITS dword1(u) = 0; #endif return rv * u.d; } #endif /*}*/ #ifndef NO_HEX_FP static void ULtod (__ULong *L, __ULong *bits, Long exp, int k) { switch(k & STRTOG_Retmask) { case STRTOG_NoNumber: case STRTOG_Zero: L[0] = L[1] = 0; break; case STRTOG_Denormal: L[_1] = bits[0]; L[_0] = bits[1]; break; case STRTOG_Normal: case STRTOG_NaNbits: L[_1] = bits[0]; L[_0] = (bits[1] & ~0x100000) | ((exp + 0x3ff + 52) << 20); break; case STRTOG_Infinite: L[_0] = 0x7ff00000; L[_1] = 0; break; case STRTOG_NaN: L[_0] = 0x7fffffff; L[_1] = (__ULong)-1; } if (k & STRTOG_Neg) L[_0] |= 0x80000000L; } #endif /* !NO_HEX_FP */ double strtod_l (const char *__restrict s00, char **__restrict se, locale_t loc) { #ifdef Avoid_Underflow int scale; #endif int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, decpt, dsign, e, e1, esign, i, j, k, nd, nd0, nf, nz, nz0, sign; const char *s, *s0, *s1; double aadj, adj; U aadj1, rv, rv0; Long L; __ULong y, z; _Bigint *bb = NULL, *bb1, *bd = NULL, *bd0, *bs = NULL, *delta = NULL; #ifdef Avoid_Underflow __ULong Lsb, Lsb1; #endif #ifdef SET_INEXACT int inexact, oldinexact; #endif #ifdef Honor_FLT_ROUNDS int rounding; #endif #ifdef __HAVE_LOCALE_INFO__ const char *decimal_point = __get_numeric_locale(loc)->decimal_point; const int dec_len = strlen (decimal_point); #else const char *decimal_point = "."; const int dec_len = 1; #endif delta = bs = bd = NULL; sign = nz0 = nz = decpt = 0; dval(rv) = 0.; for(s = s00;;s++) switch(*s) { case '-': sign = 1; FALLTHROUGH; case '+': if (*++s) goto break2; FALLTHROUGH; case 0: goto ret0; case '\t': case '\n': case '\v': case '\f': case '\r': case ' ': continue; default: goto break2; } break2: if (*s == '0') { #ifndef NO_HEX_FP { static const FPI fpi = { 53, 1-1023-53+1, 2046-1023-53+1, 1, SI }; Long exp; __ULong bits[2]; switch(s[1]) { case 'x': case 'X': /* If the number is not hex, then the parse of 0 is still valid. */ s00 = s + 1; { #if defined(FE_DOWNWARD) && defined(FE_TONEAREST) && defined(FE_TOWARDZERO) && defined(FE_UPWARD) FPI fpi1 = fpi; switch(fegetround()) { case FE_TOWARDZERO: fpi1.rounding = 0; break; case FE_UPWARD: fpi1.rounding = 2; break; case FE_DOWNWARD: fpi1.rounding = 3; } #else #define fpi1 fpi #endif switch((i = gethex(&s, &fpi1, &exp, &bb, sign, loc)) & STRTOG_Retmask) { case STRTOG_NoNumber: s = s00; sign = 0; FALLTHROUGH; case STRTOG_Zero: break; default: if (bb) { copybits(bits, fpi.nbits, bb); Bfree(bb); } ULtod(rv.i, bits, exp, i); #ifndef NO_ERRNO /* try to avoid the bug of testing an 8087 register value */ if ((dword0(rv)&Exp_mask) == 0) errno = ERANGE; #endif }} goto ret; } } #endif nz0 = 1; while(*++s == '0') ; if (!*s) goto ret; } s0 = s; y = z = 0; for(nd = nf = 0; (c = *s) >= '0' && c <= '9'; nd++, s++) if (nd < 9) y = 10*y + c - '0'; else z = 10*z + c - '0'; nd0 = nd; if (strncmp (s, decimal_point, dec_len) == 0) { decpt = 1; c = *(s += dec_len); if (!nd) { for(; c == '0'; c = *++s) nz++; if (c > '0' && c <= '9') { s0 = s; nf += nz; nz = 0; goto have_dig; } goto dig_done; } for(; c >= '0' && c <= '9'; c = *++s) { have_dig: nz++; if (c -= '0') { nf += nz; for(i = 1; i < nz; i++) if (nd++ < 9) y *= 10; else if (nd <= DBL_DIG + 1) z *= 10; if (nd++ < 9) y = 10*y + c; else if (nd <= DBL_DIG + 1) z = 10*z + c; nz = 0; } } } dig_done: e = 0; if (c == 'e' || c == 'E') { if (!nd && !nz && !nz0) { goto ret0; } s00 = s; esign = 0; switch(c = *++s) { case '-': esign = 1; FALLTHROUGH; case '+': c = *++s; } if (c >= '0' && c <= '9') { while(c == '0') c = *++s; if (c > '0' && c <= '9') { L = c - '0'; s1 = s; while((c = *++s) >= '0' && c <= '9') L = 10*L + c - '0'; if (s - s1 > 8 || L > 19999) /* Avoid confusion from exponents * so large that e might overflow. */ e = 19999; /* safe for 16 bit ints */ else e = (int)L; if (esign) e = -e; } else e = 0; } else s = s00; } if (!nd) { if (!nz && !nz0) { #ifdef INFNAN_CHECK /* Check for Nan and Infinity */ __ULong bits[2]; static const FPI fpinan = /* only 52 explicit bits */ { 52, 1-1023-53+1, 2046-1023-53+1, 1, SI }; if (!decpt) switch(c) { case 'i': case 'I': if (match(&s,"nf")) { --s; if (!match(&s,"inity")) ++s; dword0(rv) = 0x7ff00000; #ifndef _DOUBLE_IS_32BITS dword1(rv) = 0; #endif /*!_DOUBLE_IS_32BITS*/ goto ret; } break; case 'n': case 'N': if (match(&s, "an")) { #ifndef No_Hex_NaN if (*s == '(' /*)*/ && hexnan(&s, &fpinan, bits) == STRTOG_NaNbits) { dword0(rv) = 0x7ff00000 | bits[1]; #ifndef _DOUBLE_IS_32BITS dword1(rv) = bits[0]; #endif /*!_DOUBLE_IS_32BITS*/ } else { #endif dval(rv) = nan (""); #ifndef No_Hex_NaN } #endif goto ret; } } #endif /* INFNAN_CHECK */ ret0: s = s00; sign = 0; } goto ret; } e1 = e -= nf; /* Now we have nd0 digits, starting at s0, followed by a * decimal point, followed by nd-nd0 digits. The number we're * after is the integer represented by those digits times * 10**e */ if (!nd0) nd0 = nd; k = nd < DBL_DIG + 1 ? nd : DBL_DIG + 1; dval(rv) = y; if (k > 9) { #ifdef SET_INEXACT if (k > DBL_DIG) oldinexact = get_inexact(); #endif dval(rv) = tens[k - 9] * dval(rv) + z; } bd0 = 0; if (nd <= DBL_DIG #ifndef RND_PRODQUOT #ifndef Honor_FLT_ROUNDS && Flt_Rounds == 1 #endif #endif ) { if (!e) goto ret; if (e > 0) { if (e <= Ten_pmax) { #ifdef VAX goto vax_ovfl_check; #else #ifdef Honor_FLT_ROUNDS /* round correctly FLT_ROUNDS = 2 or 3 */ if (sign) { dval(rv) = -dval(rv); sign = 0; } #endif /* rv = */ rounded_product(dval(rv), tens[e]); goto ret; #endif } i = DBL_DIG - nd; if (e <= Ten_pmax + i) { /* A fancier test would sometimes let us do * this for larger i values. */ #ifdef Honor_FLT_ROUNDS /* round correctly FLT_ROUNDS = 2 or 3 */ if (sign) { dval(rv) = -dval(rv); sign = 0; } #endif e -= i; dval(rv) *= tens[i]; #ifdef VAX /* VAX exponent range is so narrow we must * worry about overflow here... */ vax_ovfl_check: dword0(rv) -= P*Exp_msk1; /* rv = */ rounded_product(dval(rv), tens[e]); if ((dword0(rv) & Exp_mask) > Exp_msk1*(DBL_MAX_EXP+Bias-1-P)) goto ovfl; dword0(rv) += P*Exp_msk1; #else /* rv = */ rounded_product(dval(rv), tens[e]); #endif goto ret; } } #ifndef Inaccurate_Divide else if (e >= -Ten_pmax) { #ifdef Honor_FLT_ROUNDS /* round correctly FLT_ROUNDS = 2 or 3 */ if (sign) { dval(rv) = -dval(rv); sign = 0; } #endif /* rv = */ rounded_quotient(dval(rv), tens[-e]); goto ret; } #endif } e1 += nd - k; #ifdef IEEE_Arith #ifdef SET_INEXACT inexact = 1; if (k <= DBL_DIG) oldinexact = get_inexact(); #endif #ifdef Avoid_Underflow scale = 0; #endif #ifdef Honor_FLT_ROUNDS if ((rounding = Flt_Rounds) >= 2) { if (sign) rounding = rounding == 2 ? 0 : 2; else if (rounding != 2) rounding = 0; } #endif #endif /*IEEE_Arith*/ /* Get starting approximation = rv * 10**e1 */ if (e1 > 0) { if ( (i = e1 & 15) !=0) dval(rv) *= tens[i]; if (e1 &= ~15) { if (e1 > DBL_MAX_10_EXP) { ovfl: #ifndef NO_ERRNO errno = ERANGE; #endif /* Can't trust HUGE_VAL */ #ifdef IEEE_Arith #ifdef Honor_FLT_ROUNDS switch(rounding) { case 0: /* toward 0 */ case 3: /* toward -infinity */ dword0(rv) = Big0; #ifndef _DOUBLE_IS_32BITS dword1(rv) = Big1; #endif /*!_DOUBLE_IS_32BITS*/ break; default: dword0(rv) = Exp_mask; #ifndef _DOUBLE_IS_32BITS dword1(rv) = 0; #endif /*!_DOUBLE_IS_32BITS*/ } #else /*Honor_FLT_ROUNDS*/ dword0(rv) = Exp_mask; #ifndef _DOUBLE_IS_32BITS dword1(rv) = 0; #endif /*!_DOUBLE_IS_32BITS*/ #endif /*Honor_FLT_ROUNDS*/ #ifdef SET_INEXACT /* set overflow bit */ dval(rv0) = 1e300; dval(rv0) *= dval(rv0); #endif #else /*IEEE_Arith*/ dword0(rv) = Big0; #ifndef _DOUBLE_IS_32BITS dword1(rv) = Big1; #endif /*!_DOUBLE_IS_32BITS*/ #endif /*IEEE_Arith*/ if (bd0) goto retfree; goto ret; } e1 >>= 4; for(j = 0; e1 > 1; j++, e1 >>= 1) if (e1 & 1) dval(rv) *= bigtens[j]; /* The last multiplication could overflow. */ dword0(rv) -= P*Exp_msk1; dval(rv) *= bigtens[j]; if ((z = dword0(rv) & Exp_mask) > Exp_msk1*(DBL_MAX_EXP+Bias-P)) goto ovfl; if (z > Exp_msk1*(DBL_MAX_EXP+Bias-1-P)) { /* set to largest number */ /* (Can't trust DBL_MAX) */ dword0(rv) = Big0; #ifndef _DOUBLE_IS_32BITS dword1(rv) = Big1; #endif /*!_DOUBLE_IS_32BITS*/ } else dword0(rv) += P*Exp_msk1; } } else if (e1 < 0) { e1 = -e1; if ( (i = e1 & 15) !=0) dval(rv) /= tens[i]; if (e1 >>= 4) { if (e1 >= 1 << n_bigtens) goto undfl; #ifdef Avoid_Underflow if (e1 & Scale_Bit) scale = 2*P; for(j = 0; e1 > 0; j++, e1 >>= 1) if (e1 & 1) dval(rv) *= tinytens[j]; if (scale && (j = 2*P + 1 - ((dword0(rv) & Exp_mask) >> Exp_shift)) > 0) { /* scaled rv is denormal; zap j low bits */ if (j >= 32) { #ifndef _DOUBLE_IS_32BITS dword1(rv) = 0; #endif /*!_DOUBLE_IS_32BITS*/ if (j >= 53) dword0(rv) = (P+2)*Exp_msk1; else dword0(rv) &= 0xffffffff << (j-32); } #ifndef _DOUBLE_IS_32BITS else dword1(rv) &= 0xffffffff << j; #endif /*!_DOUBLE_IS_32BITS*/ } #else for(j = 0; e1 > 1; j++, e1 >>= 1) if (e1 & 1) dval(rv) *= tinytens[j]; /* The last multiplication could underflow. */ dval(rv0) = dval(rv); dval(rv) *= tinytens[j]; if (!dval(rv)) { dval(rv) = 2.*dval(rv0); dval(rv) *= tinytens[j]; #endif if (!dval(rv)) { undfl: dval(rv) = 0.; #ifndef NO_ERRNO errno = ERANGE; #endif if (bd0) goto retfree; goto ret; } #ifndef Avoid_Underflow #ifndef _DOUBLE_IS_32BITS dword0(rv) = Tiny0; dword1(rv) = Tiny1; #else dword0(rv) = Tiny1; #endif /*_DOUBLE_IS_32BITS*/ /* The refinement below will clean * this approximation up. */ } #endif } } /* Now the hard part -- adjusting rv to the correct value.*/ /* Put digits into bd: true value = bd * 10^e */ bd0 = s2b(s0, nd0, nd, y); if (bd0 == NULL) goto ovfl; for(;;) { bd = Balloc(bd0->_k); if (bd == NULL) goto ovfl; Bcopy(bd, bd0); bb = d2b(dval(rv), &bbe, &bbbits); /* rv = bb * 2^bbe */ if (bb == NULL) goto ovfl; bs = i2b(1); if (bs == NULL) goto ovfl; if (e >= 0) { bb2 = bb5 = 0; bd2 = bd5 = e; } else { bb2 = bb5 = -e; bd2 = bd5 = 0; } if (bbe >= 0) bb2 += bbe; else bd2 -= bbe; bs2 = bb2; #ifdef Honor_FLT_ROUNDS if (rounding != 1) bs2++; #endif #ifdef Avoid_Underflow Lsb = LSB; Lsb1 = 0; j = bbe - scale; i = j + bbbits - 1; /* logb(rv) */ j = P + 1 - bbbits; if (i < Emin) { /* denormal */ i = Emin - i; j -= i; if (i < 32) Lsb <<= i; else Lsb1 = Lsb << (i-32); } #else /*Avoid_Underflow*/ #ifdef Sudden_Underflow #ifdef IBM j = 1 + 4*P - 3 - bbbits + ((bbe + bbbits - 1) & 3); #else j = P + 1 - bbbits; #endif #else /*Sudden_Underflow*/ j = bbe; i = j + bbbits - 1; /* logb(rv) */ if (i < Emin) /* denormal */ j += P - Emin; else j = P + 1 - bbbits; #endif /*Sudden_Underflow*/ #endif /*Avoid_Underflow*/ bb2 += j; bd2 += j; #ifdef Avoid_Underflow bd2 += scale; #endif i = bb2 < bd2 ? bb2 : bd2; if (i > bs2) i = bs2; if (i > 0) { bb2 -= i; bd2 -= i; bs2 -= i; } if (bb5 > 0) { bs = pow5mult(bs, bb5); if (bs == NULL) goto ovfl; bb1 = mult(bs, bb); if (bb1 == NULL) goto ovfl; Bfree( bb); bb = bb1; } if (bb2 > 0) { bb = lshift(bb, bb2); if (bb == NULL) goto ovfl; } if (bd5 > 0) { bd = pow5mult( bd, bd5); if (bd == NULL) goto ovfl; } if (bd2 > 0) { bd = lshift(bd, bd2); if (bd == NULL) goto ovfl; } if (bs2 > 0) { bs = lshift(bs, bs2); if (bs == NULL) goto ovfl; } delta = diff(bb, bd); if (delta == NULL) goto ovfl; dsign = delta->_sign; delta->_sign = 0; i = cmp(delta, bs); #ifdef Honor_FLT_ROUNDS if (rounding != 1) { if (i < 0) { /* Error is less than an ulp */ if (!delta->_x[0] && delta->_wds <= 1) { /* exact */ #ifdef SET_INEXACT inexact = 0; #endif break; } if (rounding) { if (dsign) { adj = 1.; goto apply_adj; } } else if (!dsign) { adj = -1.; if (!dword1(rv) && !(dword0(rv) & Frac_mask)) { y = dword0(rv) & Exp_mask; #ifdef Avoid_Underflow if (!scale || y > 2*P*Exp_msk1) #else if (y) #endif { delta = lshift(delta,Log2P); if (cmp(delta, bs) <= 0) adj = -0.5; } } apply_adj: #ifdef Avoid_Underflow if (scale && (y = dword0(rv) & Exp_mask) <= 2*P*Exp_msk1) dword0(adj) += (2*P+1)*Exp_msk1 - y; #else #ifdef Sudden_Underflow if ((dword0(rv) & Exp_mask) <= P*Exp_msk1) { dword0(rv) += P*Exp_msk1; dval(rv) += adj*ulp(dval(rv)); dword0(rv) -= P*Exp_msk1; } else #endif /*Sudden_Underflow*/ #endif /*Avoid_Underflow*/ dval(rv) += adj*ulp(dval(rv)); } break; } adj = ratio(delta, bs); if (adj < 1.) adj = 1.; if (adj <= 0x7ffffffe) { /* adj = rounding ? ceil(adj) : floor(adj); */ y = adj; if (y != adj) { if (!((rounding>>1) ^ dsign)) y++; adj = y; } } #ifdef Avoid_Underflow if (scale && (y = dword0(rv) & Exp_mask) <= 2*P*Exp_msk1) dword0(adj) += (2*P+1)*Exp_msk1 - y; #else #ifdef Sudden_Underflow if ((dword0(rv) & Exp_mask) <= P*Exp_msk1) { dword0(rv) += P*Exp_msk1; adj *= ulp(dval(rv)); if (dsign) dval(rv) += adj; else dval(rv) -= adj; dword0(rv) -= P*Exp_msk1; goto cont; } #endif /*Sudden_Underflow*/ #endif /*Avoid_Underflow*/ adj *= ulp(dval(rv)); if (dsign) { if (dword0(rv) == Big0 && dword1(rv) == Big1) goto ovfl; dval(rv) += adj; else dval(rv) -= adj; goto cont; } #endif /*Honor_FLT_ROUNDS*/ if (i < 0) { /* Error is less than half an ulp -- check for * special case of mantissa a power of two. */ if (dsign || dword1(rv) || dword0(rv) & Bndry_mask #ifdef IEEE_Arith #ifdef Avoid_Underflow || (dword0(rv) & Exp_mask) <= (2*P+1)*Exp_msk1 #else || (dword0(rv) & Exp_mask) <= Exp_msk1 #endif #endif ) { #ifdef SET_INEXACT if (!delta->x[0] && delta->wds <= 1) inexact = 0; #endif break; } if (!delta->_x[0] && delta->_wds <= 1) { /* exact result */ #ifdef SET_INEXACT inexact = 0; #endif break; } delta = lshift(delta,Log2P); if (cmp(delta, bs) > 0) goto drop_down; break; } if (i == 0) { /* exactly half-way between */ if (dsign) { if ((dword0(rv) & Bndry_mask1) == Bndry_mask1 && dword1(rv) == ( #ifdef Avoid_Underflow (scale && (y = dword0(rv) & Exp_mask) <= 2*P*Exp_msk1) ? (0xffffffff & (0xffffffff << (2*P+1-(y>>Exp_shift)))) : #endif 0xffffffff)) { /*boundary case -- increment exponent*/ if (dword0(rv) == Big0 && dword1(rv) == Big1) goto ovfl; dword0(rv) = (dword0(rv) & Exp_mask) + Exp_msk1 #ifdef IBM | Exp_msk1 >> 4 #endif ; #ifndef _DOUBLE_IS_32BITS dword1(rv) = 0; #endif /*!_DOUBLE_IS_32BITS*/ #ifdef Avoid_Underflow dsign = 0; #endif break; } } else if (!(dword0(rv) & Bndry_mask) && !dword1(rv)) { drop_down: /* boundary case -- decrement exponent */ #ifdef Sudden_Underflow /*{{*/ L = dword0(rv) & Exp_mask; #ifdef IBM if (L < Exp_msk1) #else #ifdef Avoid_Underflow if (L <= (scale ? (2*P+1)*Exp_msk1 : Exp_msk1)) #else if (L <= Exp_msk1) #endif /*Avoid_Underflow*/ #endif /*IBM*/ goto undfl; L -= Exp_msk1; #else /*Sudden_Underflow}{*/ #ifdef Avoid_Underflow if (scale) { L = dword0(rv) & Exp_mask; if (L <= (Long) ((2*P+1)*Exp_msk1)) { if (L > (Long)((P+2)*Exp_msk1)) /* round even ==> */ /* accept rv */ break; /* rv = smallest denormal */ goto undfl; } } #endif /*Avoid_Underflow*/ L = (dword0(rv) & Exp_mask) - Exp_msk1; #endif /*Sudden_Underflow}*/ dword0(rv) = L | Bndry_mask1; #ifndef _DOUBLE_IS_32BITS dword1(rv) = 0xffffffff; #endif /*!_DOUBLE_IS_32BITS*/ #ifdef IBM goto cont; #else break; #endif } #ifndef ROUND_BIASED #ifdef Avoid_Underflow if (Lsb1) { if (!(dword0(rv) & Lsb1)) break; } else if (!(dword1(rv) & Lsb)) break; #else if (!(dword1(rv) & LSB)) break; #endif #endif if (dsign) #ifdef Avoid_Underflow dval(rv) += sulp(rv, scale); #else dval(rv) += ulp(dval(rv)); #endif #ifndef ROUND_BIASED else { #ifdef Avoid_Underflow dval(rv) -= sulp(rv, scale); #else dval(rv) -= ulp(dval(rv)); #endif #ifndef Sudden_Underflow if (!dval(rv)) goto undfl; #endif } #ifdef Avoid_Underflow dsign = 1 - dsign; #endif #endif break; } if ((aadj = ratio(delta, bs)) <= 2.) { if (dsign) aadj = dval(aadj1) = 1.; else if (dword1(rv) || dword0(rv) & Bndry_mask) { #ifndef Sudden_Underflow if (dword1(rv) == Tiny1 && !dword0(rv)) goto undfl; #endif aadj = 1.; dval(aadj1) = -1.; } else { /* special case -- power of FLT_RADIX to be */ /* rounded down... */ if (aadj < 2./FLT_RADIX) aadj = 1./FLT_RADIX; else aadj *= 0.5; dval(aadj1) = -aadj; } } else { aadj *= 0.5; dval(aadj1) = dsign ? aadj : -aadj; #ifdef Check_FLT_ROUNDS switch(Rounding) { case 2: /* towards +infinity */ dval(aadj1) -= 0.5; break; case 0: /* towards 0 */ case 3: /* towards -infinity */ dval(aadj1) += 0.5; } #else if (Flt_Rounds == 0) dval(aadj1) += 0.5; #endif /*Check_FLT_ROUNDS*/ } y = dword0(rv) & Exp_mask; /* Check for overflow */ if (y == Exp_msk1*(DBL_MAX_EXP+Bias-1)) { dval(rv0) = dval(rv); dword0(rv) -= P*Exp_msk1; adj = dval(aadj1) * ulp(dval(rv)); dval(rv) += adj; if ((dword0(rv) & Exp_mask) >= Exp_msk1*(DBL_MAX_EXP+Bias-P)) { if (dword0(rv0) == Big0 && dword1(rv0) == Big1) goto ovfl; dword0(rv) = Big0; #ifndef _DOUBLE_IS_32BITS dword1(rv) = Big1; #endif /*!_DOUBLE_IS_32BITS*/ goto cont; } else dword0(rv) += P*Exp_msk1; } else { #ifdef Avoid_Underflow if (scale && y <= 2*P*Exp_msk1) { if (aadj <= 0x7fffffff) { if ((z = aadj) == 0) z = 1; aadj = z; dval(aadj1) = dsign ? aadj : -aadj; } dword0(aadj1) += (2*P+1)*Exp_msk1 - y; } adj = dval(aadj1) * ulp(dval(rv)); dval(rv) += adj; #else #ifdef Sudden_Underflow if ((dword0(rv) & Exp_mask) <= P*Exp_msk1) { dval(rv0) = dval(rv); dword0(rv) += P*Exp_msk1; adj = dval(aadj1) * ulp(dval(rv)); dval(rv) += adj; #ifdef IBM if ((dword0(rv) & Exp_mask) < P*Exp_msk1) #else if ((dword0(rv) & Exp_mask) <= P*Exp_msk1) #endif { if (dword0(rv0) == Tiny0 && dword1(rv0) == Tiny1) goto undfl; #ifndef _DOUBLE_IS_32BITS dword0(rv) = Tiny0; dword1(rv) = Tiny1; #else dword0(rv) = Tiny1; #endif /*_DOUBLE_IS_32BITS*/ goto cont; } else dword0(rv) -= P*Exp_msk1; } else { adj = dval(aadj1) * ulp(dval(rv)); dval(rv) += adj; } #else /*Sudden_Underflow*/ /* Compute adj so that the IEEE rounding rules will * correctly round rv + adj in some half-way cases. * If rv * ulp(rv) is denormalized (i.e., * y <= (P-1)*Exp_msk1), we must adjust aadj to avoid * trouble from bits lost to denormalization; * example: 1.2e-307 . */ if (y <= (P-1)*Exp_msk1 && aadj > 1.) { dval(aadj1) = (double)(int)(aadj + 0.5); if (!dsign) dval(aadj1) = -dval(aadj1); } adj = dval(aadj1) * ulp(dval(rv)); dval(rv) += adj; #endif /*Sudden_Underflow*/ #endif /*Avoid_Underflow*/ } z = dword0(rv) & Exp_mask; #ifndef SET_INEXACT #ifdef Avoid_Underflow if (!scale) #endif if (y == z) { /* Can we stop now? */ #ifndef _DOUBLE_IS_32BITS /* If FE_INVALID floating point exceptions are enabled, a conversion to a 32 bit value is dangerous. A positive double value can result in a negative 32 bit int, thus raising SIGFPE. To avoid this, always convert into 64 bit here. */ __int64_t L = (__int64_t)aadj; #else L = (Long)aadj; #endif aadj -= L; /* The tolerances below are conservative. */ if (dsign || dword1(rv) || dword0(rv) & Bndry_mask) { if (aadj < .4999999 || aadj > .5000001) break; } else if (aadj < .4999999/FLT_RADIX) break; } #endif cont: Bfree(bb); Bfree(bd); Bfree(bs); Bfree(delta); } #ifdef SET_INEXACT if (inexact) { if (!oldinexact) { dword0(rv0) = Exp_1 + (70 << Exp_shift); #ifndef _DOUBLE_IS_32BITS dword1(rv0) = 0; #endif /*!_DOUBLE_IS_32BITS*/ dval(rv0) += 1.; } } else if (!oldinexact) clear_inexact(); #endif #ifdef Avoid_Underflow if (scale) { dword0(rv0) = Exp_1 - 2*P*Exp_msk1; #ifndef _DOUBLE_IS_32BITS dword1(rv0) = 0; #endif /*!_DOUBLE_IS_32BITS*/ dval(rv) *= dval(rv0); #ifndef NO_ERRNO /* try to avoid the bug of testing an 8087 register value */ if ((dword0(rv) & Exp_mask) == 0) errno = ERANGE; #endif } #endif /* Avoid_Underflow */ #ifdef SET_INEXACT if (inexact && !(dword0(rv) & Exp_mask)) { /* set underflow bit */ dval(rv0) = 1e-300; dval(rv0) *= dval(rv0); } #endif retfree: Bfree(bb); Bfree(bd); Bfree(bs); Bfree(bd0); Bfree(delta); ret: if (se) *se = (char *)s; return sign ? -dval(rv) : dval(rv); } double strtod (const char *__restrict s00, char **__restrict se) { return strtod_l (s00, se, __get_current_locale ()); } #if defined(_HAVE_LONG_DOUBLE) && defined(_LDBL_EQ_DBL) #ifdef HAVE_ALIAS_ATTRIBUTE extern long double strtold(const char *, char **) __attribute__ ((__alias__ ("strtod"))); #else long double strtold (const char * nptr, char ** endptr) { return (long double) strtod(nptr, endptr); } #endif #endif /* * These two functions are not quite correct as they return true for * zero, however they are 'good enough' for the test in strtof below * as we only need to know whether the double test is false when * the float test is true. */ static inline int isdenorm(double d) { U u; dval(u) = d; return (dword0(u) & Exp_mask) == 0; } static inline int isdenormf(float f) { union { float f; __uint32_t i; } u; u.f = f; return (u.i & 0x7f800000) == 0; } float strtof (const char *__restrict s00, char **__restrict se) { double val = strtod_l (s00, se, __get_current_locale ()); if (isnan (val)) return signbit (val) ? -nanf ("") : nanf (""); float retval = (float) val; #ifndef NO_ERRNO if ((isinf (retval) && !isinf (val)) || (isdenormf(retval) && !isdenorm(val))) errno = ERANGE; #endif return retval; } picolibc-1.7.4/newlib/libc/stdlib/strtodg.c000066400000000000000000000554701414576234500206410ustar00rootroot00000000000000/**************************************************************** The author of this software is David M. Gay. Copyright (C) 1998-2001 by Lucent Technologies All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that the copyright notice and this permission notice and warranty disclaimer appear in supporting documentation, and that the name of Lucent or any of its entities not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************************************************/ /* Please send bug reports to David M. Gay (dmg at acm dot org, * with " at " changed at "@" and " dot " changed to "."). */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "mprec.h" #include "gdtoa.h" #include "locale.h" #if defined (_HAVE_LONG_DOUBLE) && !defined (_LDBL_EQ_DBL) || 1 #define USE_LOCALE static const int fivesbits[] = { 0, 3, 5, 7, 10, 12, 14, 17, 19, 21, 24, 26, 28, 31, 33, 35, 38, 40, 42, 45, 47, 49, 52 #ifdef VAX , 54, 56 #endif }; static _Bigint * sum (_Bigint *a, _Bigint *b) { _Bigint *c; __ULong carry, *xc, *xa, *xb, *xe, y; #ifdef Pack_32 __ULong z; #endif if (a->_wds < b->_wds) { c = b; b = a; a = c; } c = Balloc(a->_k); if (!c) return NULL; c->_wds = a->_wds; carry = 0; xa = a->_x; xb = b->_x; xc = c->_x; xe = xc + b->_wds; #ifdef Pack_32 do { y = (*xa & 0xffff) + (*xb & 0xffff) + carry; carry = (y & 0x10000) >> 16; z = (*xa++ >> 16) + (*xb++ >> 16) + carry; carry = (z & 0x10000) >> 16; Storeinc(xc, z, y); } while(xc < xe); xe += a->_wds - b->_wds; while(xc < xe) { y = (*xa & 0xffff) + carry; carry = (y & 0x10000) >> 16; z = (*xa++ >> 16) + carry; carry = (z & 0x10000) >> 16; Storeinc(xc, z, y); } #else do { y = *xa++ + *xb++ + carry; carry = (y & 0x10000) >> 16; *xc++ = y & 0xffff; } while(xc < xe); xe += a->_wds - b->_wds; while(xc < xe) { y = *xa++ + carry; carry = (y & 0x10000) >> 16; *xc++ = y & 0xffff; } #endif if (carry) { if (c->_wds == c->_maxwds) { b = Balloc(c->_k + 1); if (!b) { Bfree(c); return NULL; } Bcopy(b, c); Bfree(c); c = b; } c->_x[c->_wds++] = 1; } return c; } static void rshift (_Bigint *b, int k) { __ULong *x, *x1, *xe, y; int n; x = x1 = b->_x; n = k >> kshift; if (n < b->_wds) { xe = x + b->_wds; x += n; if (k &= kmask) { n = ULbits - k; y = *x++ >> k; while(x < xe) { *x1++ = (y | (*x << n)) & ALL_ON; y = *x++ >> k; } if ((*x1 = y) !=0) x1++; } else while(x < xe) *x1++ = *x++; } if ((b->_wds = x1 - b->_x) == 0) b->_x[0] = 0; } static int trailz (_Bigint *b) { __ULong L, *x, *xe; int n = 0; x = b->_x; xe = x + b->_wds; for(n = 0; x < xe && !*x; x++) n += ULbits; if (x < xe) { L = *x; n += lo0bits(&L); } return n; } _Bigint * increment (_Bigint *b) { __ULong *x, *xe; _Bigint *b1; #ifdef Pack_16 __ULong carry = 1, y; #endif x = b->_x; xe = x + b->_wds; #ifdef Pack_32 do { if (*x < (__ULong)0xffffffffL) { ++*x; return b; } *x++ = 0; } while(x < xe); #else do { y = *x + carry; carry = y >> 16; *x++ = y & 0xffff; if (!carry) return b; } while(x < xe); if (carry) #endif { if (b->_wds >= b->_maxwds) { b1 = Balloc(b->_k+1); if (!b) { Bfree(b); return NULL; } Bcopy(b1,b); Bfree(b); b = b1; } b->_x[b->_wds++] = 1; } return b; } int decrement (_Bigint *b) { __ULong *x, *xe; #ifdef Pack_16 __ULong borrow = 1, y; #endif x = b->_x; xe = x + b->_wds; #ifdef Pack_32 do { if (*x) { --*x; break; } *x++ = 0xffffffffL; } while(x < xe); #else do { y = *x - borrow; borrow = (y & 0x10000) >> 16; *x++ = y & 0xffff; } while(borrow && x < xe); #endif return STRTOG_Inexlo; } static int all_on (_Bigint *b, int n) { __ULong *x, *xe; x = b->_x; xe = x + (n >> kshift); while(x < xe) if ((*x++ & ALL_ON) != ALL_ON) return 0; if (n &= kmask) return ((*x | (ALL_ON << n)) & ALL_ON) == ALL_ON; return 1; } _Bigint * set_ones (_Bigint *b, int n) { int k; __ULong *x, *xe; k = (n + ((1 << kshift) - 1)) >> kshift; if (b->_k < k) { Bfree(b); b = Balloc(k); if (!b) return NULL; } k = n >> kshift; if (n &= kmask) k++; b->_wds = k; x = b->_x; xe = x + k; while(x < xe) *x++ = ALL_ON; if (n) x[-1] >>= ULbits - n; return b; } static int rvOK (double d, FPI *fpi, Long *exp, __ULong *bits, int exact, int rd, int *irv) { _Bigint *b = NULL; __ULong carry, inex, lostbits; int bdif, e, j, k, k1, nb, rv; carry = rv = 0; b = d2b(d, &e, &bdif); if (!b) goto ret; bdif -= nb = fpi->nbits; e += bdif; if (bdif <= 0) { if (exact) goto trunc; goto ret; } if (P == nb) { if ( #ifndef IMPRECISE_INEXACT exact && #endif fpi->rounding == #ifdef RND_PRODQUOT FPI_Round_near #else Flt_Rounds #endif ) goto trunc; goto ret; } switch(rd) { case 1: goto trunc; case 2: break; default: /* round near */ k = bdif - 1; if (k < 0) goto trunc; if (!k) { if (!exact) goto ret; if (b->_x[0] & 2) break; goto trunc; } if (b->_x[k>>kshift] & ((__ULong)1 << (k & kmask))) break; goto trunc; } /* "break" cases: round up 1 bit, then truncate; bdif > 0 */ carry = 1; trunc: inex = lostbits = 0; if (bdif > 0) { if ( (lostbits = any_on(b, bdif)) !=0) inex = STRTOG_Inexlo; rshift(b, bdif); if (carry) { inex = STRTOG_Inexhi; b = increment(b); if (!b) goto ret; if ( (j = nb & kmask) !=0) j = ULbits - j; if (hi0bits(b->_x[b->_wds - 1]) != j) { if (!lostbits) lostbits = b->_x[0] & 1; rshift(b, 1); e++; } } } else if (bdif < 0) { b = lshift(b, -bdif); if (!b) goto ret; } if (e < fpi->emin) { k = fpi->emin - e; e = fpi->emin; if (k > nb || fpi->sudden_underflow) { b->_wds = inex = 0; *irv = STRTOG_Underflow | STRTOG_Inexlo; #ifndef NO_ERRNO errno = ERANGE; #endif } else { k1 = k - 1; if (k1 > 0 && !lostbits) lostbits = any_on(b, k1); if (!lostbits && !exact) goto ret; lostbits |= carry = b->_x[k1>>kshift] & (1 << (k1 & kmask)); rshift(b, k); *irv = STRTOG_Denormal; if (carry) { b = increment(b); if (!b) goto ret; inex = STRTOG_Inexhi | STRTOG_Underflow; #ifndef NO_ERRNO errno = ERANGE; #endif } else if (lostbits) inex = STRTOG_Inexlo | STRTOG_Underflow; #ifndef NO_ERRNO errno = ERANGE; #endif } } else if (e > fpi->emax) { e = fpi->emax + 1; *irv = STRTOG_Infinite | STRTOG_Overflow | STRTOG_Inexhi; #ifndef NO_ERRNO errno = ERANGE; #endif b->_wds = inex = 0; } *exp = e; copybits(bits, nb, b); *irv |= inex; rv = 1; ret: Bfree(b); return rv; } static int mantbits (U d) { __ULong L; #ifdef VAX L = word1(d) << 16 | word1(d) >> 16; if (L) #else if ( (L = word1(d)) !=0) #endif return P - lo0bits(&L); #ifdef VAX L = word0(d) << 16 | word0(d) >> 16 | Exp_msk11; #else L = word0(d) | Exp_msk1; #endif return P - 32 - lo0bits(&L); } int _strtodg_l (const char *s00, char **se, FPI *fpi, Long *exp, __ULong *bits, locale_t loc) { int abe, abits, asub; int bb0, bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, decpt, denorm; int dsign, e, e1, e2, emin, esign, finished, i, inex, irv; int j, k, nbits, nd, nd0, nf, nz, nz0, rd, rvbits, rve, rve1, sign; int sudden_underflow; const char *s, *s0, *s1; //double adj, adj0, rv, tol; double adj0, tol; U adj, rv; Long L; __ULong y, z; _Bigint *ab = NULL, *bb = NULL, *bb1 = NULL, *bd = NULL, *bd0 = NULL, *bs = NULL, *delta = NULL, *rvb = NULL, *rvb0 = NULL; const char *decimal_point = __get_numeric_locale(loc)->decimal_point; int dec_len = strlen (decimal_point); irv = STRTOG_Zero; denorm = sign = nz0 = nz = 0; dval(rv) = 0.; rvb = 0; nbits = fpi->nbits; for(s = s00;;s++) switch(*s) { case '-': sign = 1; FALLTHROUGH; case '+': if (*++s) goto break2; FALLTHROUGH; case 0: sign = 0; irv = STRTOG_NoNumber; s = s00; goto ret; case '\t': case '\n': case '\v': case '\f': case '\r': case ' ': continue; default: goto break2; } break2: if (*s == '0') { #ifndef NO_HEX_FP switch(s[1]) { case 'x': case 'X': irv = gethex(&s, fpi, exp, &rvb, sign, loc); if (irv == STRTOG_NoNumber) { s = s00; sign = 0; } goto ret; } #endif nz0 = 1; while(*++s == '0') ; if (!*s) goto ret; } sudden_underflow = fpi->sudden_underflow; s0 = s; y = z = 0; for(decpt = nd = nf = 0; (c = *s) >= '0' && c <= '9'; nd++, s++) if (nd < 9) y = 10*y + c - '0'; else if (nd < 16) z = 10*z + c - '0'; nd0 = nd; #ifdef USE_LOCALE if (strncmp (s, decimal_point, dec_len) == 0) #else if (c == '.') #endif { decpt = 1; #ifdef USE_LOCALE c = *(s += dec_len); #else c = *++s; #endif if (!nd) { for(; c == '0'; c = *++s) nz++; if (c > '0' && c <= '9') { s0 = s; nf += nz; nz = 0; goto have_dig; } goto dig_done; } for(; c >= '0' && c <= '9'; c = *++s) { have_dig: nz++; if (c -= '0') { nf += nz; for(i = 1; i < nz; i++) if (nd++ < 9) y *= 10; else if (nd <= DBL_DIG + 1) z *= 10; if (nd++ < 9) y = 10*y + c; else if (nd <= DBL_DIG + 1) z = 10*z + c; nz = 0; } } } dig_done: e = 0; if (c == 'e' || c == 'E') { if (!nd && !nz && !nz0) { irv = STRTOG_NoNumber; s = s00; goto ret; } s00 = s; esign = 0; switch(c = *++s) { case '-': esign = 1; FALLTHROUGH; case '+': c = *++s; } if (c >= '0' && c <= '9') { while(c == '0') c = *++s; if (c > '0' && c <= '9') { L = c - '0'; s1 = s; while((c = *++s) >= '0' && c <= '9') L = 10*L + c - '0'; if (s - s1 > 8 || L > 19999) /* Avoid confusion from exponents * so large that e might overflow. */ e = 19999; /* safe for 16 bit ints */ else e = (int)L; if (esign) e = -e; } else e = 0; } else s = s00; } if (!nd) { if (!nz && !nz0) { #ifdef INFNAN_CHECK /* Check for Nan and Infinity */ if (!decpt) switch(c) { case 'i': case 'I': if (match(&s,"nf")) { --s; if (!match(&s,"inity")) ++s; irv = STRTOG_Infinite; goto infnanexp; } break; case 'n': case 'N': if (match(&s, "an")) { irv = STRTOG_NaN; *exp = fpi->emax + 1; #ifndef No_Hex_NaN if (*s == '(') /*)*/ irv = hexnan(&s, fpi, bits); #endif goto infnanexp; } } #endif /* INFNAN_CHECK */ irv = STRTOG_NoNumber; s = s00; } goto ret; } irv = STRTOG_Normal; e1 = e -= nf; rd = 0; switch(fpi->rounding & 3) { case FPI_Round_up: rd = 2 - sign; break; case FPI_Round_zero: rd = 1; break; case FPI_Round_down: rd = 1 + sign; } /* Now we have nd0 digits, starting at s0, followed by a * decimal point, followed by nd-nd0 digits. The number we're * after is the integer represented by those digits times * 10**e */ if (!nd0) nd0 = nd; k = nd < DBL_DIG + 1 ? nd : DBL_DIG + 1; dval(rv) = y; if (k > 9) dval(rv) = tens[k - 9] * dval(rv) + z; bd0 = 0; if (nbits <= P && nd <= DBL_DIG) { if (!e) { if (rvOK(dval(rv), fpi, exp, bits, 1, rd, &irv)) goto ret; } else if (e > 0) { if (e <= Ten_pmax) { #ifdef VAX goto vax_ovfl_check; #else i = fivesbits[e] + mantbits(rv) <= P; /* rv = */ rounded_product(dval(rv), tens[e]); if (rvOK(dval(rv), fpi, exp, bits, i, rd, &irv)) goto ret; e1 -= e; goto rv_notOK; #endif } i = DBL_DIG - nd; if (e <= Ten_pmax + i) { /* A fancier test would sometimes let us do * this for larger i values. */ e2 = e - i; e1 -= i; dval(rv) *= tens[i]; #ifdef VAX /* VAX exponent range is so narrow we must * worry about overflow here... */ vax_ovfl_check: dval(adj) = dval(rv); word0(adj) -= P*Exp_msk1; /* adj = */ rounded_product(dval(adj), tens[e2]); if ((word0(adj) & Exp_mask) > Exp_msk1*(DBL_MAX_EXP+Bias-1-P)) goto rv_notOK; word0(adj) += P*Exp_msk1; dval(rv) = dval(adj); #else /* rv = */ rounded_product(dval(rv), tens[e2]); #endif if (rvOK(dval(rv), fpi, exp, bits, 0, rd, &irv)) goto ret; e1 -= e2; } } #ifndef Inaccurate_Divide else if (e >= -Ten_pmax) { /* rv = */ rounded_quotient(dval(rv), tens[-e]); if (rvOK(dval(rv), fpi, exp, bits, 0, rd, &irv)) goto ret; e1 -= e; } #endif } rv_notOK: e1 += nd - k; /* Get starting approximation = rv * 10**e1 */ e2 = 0; if (e1 > 0) { if ( (i = e1 & 15) !=0) dval(rv) *= tens[i]; if (e1 &= ~15) { e1 >>= 4; while(e1 >= (1 << (n_bigtens-1))) { e2 += ((word0(rv) & Exp_mask) >> Exp_shift1) - Bias; word0(rv) &= ~Exp_mask; word0(rv) |= Bias << Exp_shift1; dval(rv) *= bigtens[n_bigtens-1]; e1 -= 1 << (n_bigtens-1); } e2 += ((word0(rv) & Exp_mask) >> Exp_shift1) - Bias; word0(rv) &= ~Exp_mask; word0(rv) |= Bias << Exp_shift1; for(j = 0; e1 > 0; j++, e1 >>= 1) if (e1 & 1) dval(rv) *= bigtens[j]; } } else if (e1 < 0) { e1 = -e1; if ( (i = e1 & 15) !=0) dval(rv) /= tens[i]; if (e1 &= ~15) { e1 >>= 4; while(e1 >= (1 << (n_bigtens-1))) { e2 += ((word0(rv) & Exp_mask) >> Exp_shift1) - Bias; word0(rv) &= ~Exp_mask; word0(rv) |= Bias << Exp_shift1; dval(rv) *= tinytens[n_bigtens-1]; e1 -= 1 << (n_bigtens-1); } e2 += ((word0(rv) & Exp_mask) >> Exp_shift1) - Bias; word0(rv) &= ~Exp_mask; word0(rv) |= Bias << Exp_shift1; for(j = 0; e1 > 0; j++, e1 >>= 1) if (e1 & 1) dval(rv) *= tinytens[j]; } } #ifdef IBM /* e2 is a correction to the (base 2) exponent of the return * value, reflecting adjustments above to avoid overflow in the * native arithmetic. For native IBM (base 16) arithmetic, we * must multiply e2 by 4 to change from base 16 to 2. */ e2 <<= 2; #endif rvb = d2b(dval(rv), &rve, &rvbits); /* rv = rvb * 2^rve */ if (!rvb) goto nomem; rve += e2; if ((j = rvbits - nbits) > 0) { rshift(rvb, j); rvbits = nbits; rve += j; } bb0 = 0; /* trailing zero bits in rvb */ e2 = rve + rvbits - nbits; if (e2 > fpi->emax + 1) goto huge; rve1 = rve + rvbits - nbits; if (e2 < (emin = fpi->emin)) { denorm = 1; j = rve - emin; if (j > 0) { rvb = lshift(rvb, j); if (!rvb) goto nomem; rvbits += j; } else if (j < 0) { rvbits += j; if (rvbits <= 0) { if (rvbits < -1) { ufl: rvb->_wds = 0; rvb->_x[0] = 0; *exp = emin; irv = STRTOG_Underflow | STRTOG_Inexlo; #ifndef NO_ERRNO errno = ERANGE; #endif goto ret; } rvb->_x[0] = rvb->_wds = rvbits = 1; } else rshift(rvb, -j); } rve = rve1 = emin; if (sudden_underflow && e2 + 1 < emin) goto ufl; } /* Now the hard part -- adjusting rv to the correct value.*/ /* Put digits into bd: true value = bd * 10^e */ bd0 = s2b(s0, nd0, nd, y); if (!bd0) goto nomem; for(;;) { bd = Balloc(bd0->_k); if (!bd) goto nomem; Bcopy(bd, bd0); bb = Balloc(rvb->_k); if (!bb) goto nomem; Bcopy(bb, rvb); bbbits = rvbits - bb0; bbe = rve + bb0; bs = i2b(1); if (!bs) goto nomem; if (e >= 0) { bb2 = bb5 = 0; bd2 = bd5 = e; } else { bb2 = bb5 = -e; bd2 = bd5 = 0; } if (bbe >= 0) bb2 += bbe; else bd2 -= bbe; bs2 = bb2; j = nbits + 1 - bbbits; i = bbe + bbbits - nbits; if (i < emin) /* denormal */ j += i - emin; bb2 += j; bd2 += j; i = bb2 < bd2 ? bb2 : bd2; if (i > bs2) i = bs2; if (i > 0) { bb2 -= i; bd2 -= i; bs2 -= i; } if (bb5 > 0) { bs = pow5mult(bs, bb5); if (!bs) goto nomem; bb1 = mult(bs, bb); if (!bb1) goto nomem; Bfree(bb); bb = bb1; } bb2 -= bb0; if (bb2 > 0) { bb = lshift(bb, bb2); if (!bb) goto nomem; } else if (bb2 < 0) rshift(bb, -bb2); if (bd5 > 0) { bd = pow5mult(bd, bd5); if (!bd) goto nomem; } if (bd2 > 0) { bd = lshift(bd, bd2); if (!bd) goto nomem; } if (bs2 > 0) { bs = lshift(bs, bs2); if (!bs) goto nomem; } asub = 1; inex = STRTOG_Inexhi; delta = diff(bb, bd); if (!delta) goto nomem; if (delta->_wds <= 1 && !delta->_x[0]) break; dsign = delta->_sign; delta->_sign = finished = 0; L = 0; i = cmp(delta, bs); if (rd && i <= 0) { irv = STRTOG_Normal; if ( (finished = dsign ^ (rd&1)) !=0) { if (dsign != 0) { irv |= STRTOG_Inexhi; goto adj1; } irv |= STRTOG_Inexlo; if (rve1 == emin) goto adj1; for(i = 0, j = nbits; j >= ULbits; i++, j -= ULbits) { if (rvb->_x[i] & ALL_ON) goto adj1; } if (j > 1 && lo0bits(rvb->_x + i) < j - 1) goto adj1; rve = rve1 - 1; rvb = set_ones(rvb, rvbits = nbits); if (!rvb) goto nomem; break; } irv |= dsign ? STRTOG_Inexlo : STRTOG_Inexhi; break; } if (i < 0) { /* Error is less than half an ulp -- check for * special case of mantissa a power of two. */ irv = dsign ? STRTOG_Normal | STRTOG_Inexlo : STRTOG_Normal | STRTOG_Inexhi; if (dsign || bbbits > 1 || denorm || rve1 == emin) break; delta = lshift(delta,1); if (!delta) goto nomem; if (cmp(delta, bs) > 0) { irv = STRTOG_Normal | STRTOG_Inexlo; goto drop_down; } break; } if (i == 0) { /* exactly half-way between */ if (dsign) { if (denorm && all_on(rvb, rvbits)) { /*boundary case -- increment exponent*/ rvb->_wds = 1; rvb->_x[0] = 1; rve = emin + nbits - (rvbits = 1); irv = STRTOG_Normal | STRTOG_Inexhi; denorm = 0; break; } irv = STRTOG_Normal | STRTOG_Inexlo; } else if (bbbits == 1) { irv = STRTOG_Normal; drop_down: /* boundary case -- decrement exponent */ if (rve1 == emin) { irv = STRTOG_Normal | STRTOG_Inexhi; if (rvb->_wds == 1 && rvb->_x[0] == 1) sudden_underflow = 1; break; } rve -= nbits; rvb = set_ones(rvb, rvbits = nbits); if (!rvb) goto nomem; break; } else irv = STRTOG_Normal | STRTOG_Inexhi; if ((bbbits < nbits && !denorm) || !(rvb->_x[0] & 1)) break; if (dsign) { rvb = increment(rvb); if (!rvb) goto nomem; j = kmask & (ULbits - (rvbits & kmask)); if (hi0bits(rvb->_x[rvb->_wds - 1]) != j) rvbits++; irv = STRTOG_Normal | STRTOG_Inexhi; } else { if (bbbits == 1) goto undfl; decrement(rvb); irv = STRTOG_Normal | STRTOG_Inexlo; } break; } if ((dval(adj) = ratio(delta, bs)) <= 2.) { adj1: inex = STRTOG_Inexlo; if (dsign) { asub = 0; inex = STRTOG_Inexhi; } else if (denorm && bbbits <= 1) { undfl: rvb->_wds = 0; rve = emin; irv = STRTOG_Underflow | STRTOG_Inexlo; #ifndef NO_ERRNO errno = ERANGE; #endif break; } adj0 = dval(adj) = 1.; } else { adj0 = dval(adj) *= 0.5; if (dsign) { asub = 0; inex = STRTOG_Inexlo; } if (dval(adj) < 2147483647.) { L = adj0; adj0 -= L; switch(rd) { case 0: if (adj0 >= .5) goto inc_L; break; case 1: if (asub && adj0 > 0.) goto inc_L; break; case 2: if (!asub && adj0 > 0.) { inc_L: L++; inex = STRTOG_Inexact - inex; } } dval(adj) = L; } } y = rve + rvbits; /* adj *= ulp(dval(rv)); */ /* if (asub) rv -= adj; else rv += adj; */ if (!denorm && rvbits < nbits) { rvb = lshift(rvb, j = nbits - rvbits); if (!rvb) goto nomem; rve -= j; rvbits = nbits; } ab = d2b(dval(adj), &abe, &abits); if (!ab) goto nomem; if (abe < 0) rshift(ab, -abe); else if (abe > 0) { ab = lshift(ab, abe); if (!ab) goto nomem; } rvb0 = rvb; if (asub) { /* rv -= adj; */ j = hi0bits(rvb->_x[rvb->_wds-1]); rvb = diff(rvb, ab); if (!rvb) goto nomem; k = rvb0->_wds - 1; if (denorm) /* do nothing */; else if (rvb->_wds <= k || hi0bits( rvb->_x[k]) > hi0bits(rvb0->_x[k])) { /* unlikely; can only have lost 1 high bit */ if (rve1 == emin) { --rvbits; denorm = 1; } else { rvb = lshift(rvb, 1); if (!rvb) goto nomem; --rve; --rve1; L = finished = 0; } } } else { rvb = sum(rvb, ab); if (!rvb) goto nomem; k = rvb->_wds - 1; if (k >= rvb0->_wds || hi0bits(rvb->_x[k]) < hi0bits(rvb0->_x[k])) { if (denorm) { if (++rvbits == nbits) denorm = 0; } else { rshift(rvb, 1); rve++; rve1++; L = 0; } } } Bfree(ab); ab = NULL; Bfree(rvb0); rvb0 = NULL; if (finished) break; z = rve + rvbits; if (y == z && L) { /* Can we stop now? */ tol = dval(adj) * 5e-16; /* > max rel error */ dval(adj) = adj0 - .5; if (dval(adj) < -tol) { if (adj0 > tol) { irv |= inex; break; } } else if (dval(adj) > tol && adj0 < 1. - tol) { irv |= inex; break; } } bb0 = denorm ? 0 : trailz(rvb); Bfree(bb); bb = NULL; Bfree(bd); bd = NULL; Bfree(bs); bs = NULL; Bfree(delta); delta = NULL; } if (!denorm && (j = nbits - rvbits)) { if (j > 0) { rvb = lshift(rvb, j); if (!rvb) goto nomem; } else rshift(rvb, -j); rve -= j; } *exp = rve; Bfree(bb); Bfree(bd); Bfree(bs); Bfree(bd0); Bfree(delta); if (rve > fpi->emax) { huge: rvb->_wds = 0; irv = STRTOG_Infinite | STRTOG_Overflow | STRTOG_Inexhi; #ifndef NO_ERRNO errno = ERANGE; #endif infnanexp: *exp = fpi->emax + 1; } ret: if (denorm) { if (sudden_underflow) { rvb->_wds = 0; irv = STRTOG_Underflow | STRTOG_Inexlo; #ifndef NO_ERRNO errno = ERANGE; #endif } else { irv = (irv & ~STRTOG_Retmask) | (rvb->_wds > 0 ? STRTOG_Denormal : STRTOG_Zero); if (irv & STRTOG_Inexact) irv |= STRTOG_Underflow; #ifndef NO_ERRNO errno = ERANGE; #endif } } if (se) *se = (char *)s; if (sign) irv |= STRTOG_Neg; if (rvb) { copybits(bits, nbits, rvb); Bfree(rvb); } return irv; nomem: Bfree(bb); Bfree(bd); Bfree(bs); if (bd0 != bd) Bfree(bd0); Bfree(delta); Bfree(rvb); if (rvb0 != rvb) Bfree(rvb0); #ifndef NO_ERRNO errno = ENOMEM; #endif return STRTOG_NoNumber; } #endif /* _HAVE_LONG_DOUBLE && !_LDBL_EQ_DBL */ picolibc-1.7.4/newlib/libc/stdlib/strtoimax.c000066400000000000000000000113231414576234500211720ustar00rootroot00000000000000/*- * Copyright (c) 1992, 1993 * The Regents of the University of California. All rights reserved. * * Copyright (c) 2011 The FreeBSD Foundation * All rights reserved. * Portions of this software were developed by David Chisnall * under sponsorship from the FreeBSD Foundation. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "from @(#)strtol.c 8.1 (Berkeley) 6/4/93"; #endif /* LIBC_SCCS and not lint */ #define _DEFAULT_SOURCE #include __FBSDID("$FreeBSD: head/lib/libc/stdlib/strtoimax.c 251672 2013-06-13 00:19:30Z emaste $"); #include #include #include #include #include #include "../locale/setlocale.h" /* * Convert a string to an intmax_t integer. * * Assumes that the upper and lower case * alphabets and digits are each contiguous. */ #ifndef _REENT_ONLY intmax_t strtoimax_l(const char * __restrict nptr, char ** __restrict endptr, int base, locale_t loc) { const char *s = nptr; uintmax_t acc = 0; char c; uintmax_t cutoff; int neg = 0, any = 0, cutlim; /* * Skip white space and pick up leading +/- sign if any. * If base is 0, allow 0x for hex and 0 for octal, else * assume decimal; if base is already 16, allow 0x. */ do { c = *s++; } while (isspace_l(c, loc)); if (c == '-') { neg = 1; c = *s++; } else { neg = 0; if (c == '+') c = *s++; } if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X')) { c = s[1]; s += 2; base = 16; } if (base == 0) base = c == '0' ? 8 : 10; if (base < 2 || base > 36) goto noconv; /* * Compute the cutoff value between legal numbers and illegal * numbers. That is the largest legal value, divided by the * base. An input number that is greater than this value, if * followed by a legal input character, is too big. One that * is equal to this value may be valid or not; the limit * between valid and invalid numbers is then based on the last * digit. For instance, if the range for intmax_t is * [-9223372036854775808..9223372036854775807] and the input base * is 10, cutoff will be set to 922337203685477580 and cutlim to * either 7 (neg==0) or 8 (neg==1), meaning that if we have * accumulated a value > 922337203685477580, or equal but the * next digit is > 7 (or 8), the number is too big, and we will * return a range error. * * Set 'any' if any `digits' consumed; make it negative to indicate * overflow. */ cutoff = neg ? -(uintmax_t)INTMAX_MIN : INTMAX_MAX; cutlim = cutoff % base; cutoff /= base; for ( ; ; c = *s++) { if (c >= '0' && c <= '9') c -= '0'; else if (c >= 'A' && c <= 'Z') c -= 'A' - 10; else if (c >= 'a' && c <= 'z') c -= 'a' - 10; else break; if (c >= base) break; if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim)) any = -1; else { any = 1; acc *= base; acc += c; } } if (any < 0) { acc = neg ? INTMAX_MIN : INTMAX_MAX; __errno_r(rptr) = ERANGE; } else if (!any) { noconv: __errno_r(rptr) = EINVAL; } else if (neg) acc = -acc; if (endptr != NULL) *endptr = (char *)(any ? s - 1 : nptr); return (acc); } intmax_t strtoimax(const char* __restrict nptr, char** __restrict endptr, int base) { return strtoimax_l(nptr, endptr, base, __get_current_locale()); } #endif picolibc-1.7.4/newlib/libc/stdlib/strtol.c000066400000000000000000000172421414576234500204750ustar00rootroot00000000000000/* FUNCTION <>, <>---string to long INDEX strtol INDEX strtol_l INDEX _strtol_r SYNOPSIS #include long strtol(const char *restrict <[s]>, char **restrict <[ptr]>, int <[base]>); #include long strtol_l(const char *restrict <[s]>, char **restrict <[ptr]>, int <[base]>, locale_t <[locale]>); DESCRIPTION The function <> converts the string <<*<[s]>>> to a <>. First, it breaks down the string into three parts: leading whitespace, which is ignored; a subject string consisting of characters resembling an integer in the radix specified by <[base]>; and a trailing portion consisting of zero or more unparseable characters, and always including the terminating null character. Then, it attempts to convert the subject string into a <> and returns the result. If the value of <[base]> is 0, the subject string is expected to look like a normal C integer constant: an optional sign, a possible `<<0x>>' indicating a hexadecimal base, and a number. If <[base]> is between 2 and 36, the expected form of the subject is a sequence of letters and digits representing an integer in the radix specified by <[base]>, with an optional plus or minus sign. The letters <>--<> (or, equivalently, <>--<>) are used to signify values from 10 to 35; only letters whose ascribed values are less than <[base]> are permitted. If <[base]> is 16, a leading <<0x>> is permitted. The subject sequence is the longest initial sequence of the input string that has the expected form, starting with the first non-whitespace character. If the string is empty or consists entirely of whitespace, or if the first non-whitespace character is not a permissible letter or digit, the subject string is empty. If the subject string is acceptable, and the value of <[base]> is zero, <> attempts to determine the radix from the input string. A string with a leading <<0x>> is treated as a hexadecimal value; a string with a leading 0 and no <> is treated as octal; all other strings are treated as decimal. If <[base]> is between 2 and 36, it is used as the conversion radix, as described above. If the subject string begins with a minus sign, the value is negated. Finally, a pointer to the first character past the converted subject string is stored in <[ptr]>, if <[ptr]> is not <>. If the subject string is empty (or not in acceptable form), no conversion is performed and the value of <[s]> is stored in <[ptr]> (if <[ptr]> is not <>). <> is like <> but performs the conversion based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS <>, <> return the converted value, if any. If no conversion was made, 0 is returned. <>, <> return <> or <> if the magnitude of the converted value is too large, and sets <> to <>. PORTABILITY <> is ANSI. <> is a GNU extension. No supporting OS subroutines are required. */ /*- * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _GNU_SOURCE #include <_ansi.h> #include #include #include #include #include "../locale/setlocale.h" /* * Convert a string to a long integer. */ static long _strtol_l (const char *__restrict nptr, char **__restrict endptr, int base, locale_t loc) { register const unsigned char *s = (const unsigned char *)nptr; register unsigned long acc; register int c; register unsigned long cutoff; register int neg = 0, any, cutlim; if (base < 0 || base == 1 || base > 36) { errno = EINVAL; if (endptr != 0) *endptr = (char *) nptr; return 0; } /* * Skip white space and pick up leading +/- sign if any. * If base is 0, allow 0x for hex and 0 for octal, else * assume decimal; if base is already 16, allow 0x. */ do { c = *s++; } while (isspace_l(c, loc)); if (c == '-') { neg = 1; c = *s++; } else if (c == '+') c = *s++; if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X') && (('0' <= s[1] && s[1] <= '9') || ('a' <= s[1] && s[1] <= 'f') || ('A' <= s[1] && s[1] <= 'F'))) { c = s[1]; s += 2; base = 16; } if (base == 0) base = c == '0' ? 8 : 10; /* * Compute the cutoff value between legal numbers and illegal * numbers. That is the largest legal value, divided by the * base. An input number that is greater than this value, if * followed by a legal input character, is too big. One that * is equal to this value may be valid or not; the limit * between valid and invalid numbers is then based on the last * digit. For instance, if the range for longs is * [-2147483648..2147483647] and the input base is 10, * cutoff will be set to 214748364 and cutlim to either * 7 (neg==0) or 8 (neg==1), meaning that if we have accumulated * a value > 214748364, or equal but the next digit is > 7 (or 8), * the number is too big, and we will return a range error. * * Set any if any `digits' consumed; make it negative to indicate * overflow. */ cutoff = neg ? -(unsigned long)LONG_MIN : LONG_MAX; cutlim = cutoff % (unsigned long)base; cutoff /= (unsigned long)base; for (acc = 0, any = 0;; c = *s++) { if (c >= '0' && c <= '9') c -= '0'; else if (c >= 'A' && c <= 'Z') c -= 'A' - 10; else if (c >= 'a' && c <= 'z') c -= 'a' - 10; else break; if (c >= base) break; if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim)) { any = -1; } else { any = 1; acc *= base; acc += c; } } if (any < 0) { acc = neg ? LONG_MIN : LONG_MAX; __errno_r(rptr) = ERANGE; } else if (neg) acc = -acc; if (endptr != 0) *endptr = (char *) (any ? (char *)s - 1 : nptr); return (acc); } #ifndef _REENT_ONLY long strtol_l (const char *__restrict s, char **__restrict ptr, int base, locale_t loc) { return _strtol_l (s, ptr, base, loc); } long strtol (const char *__restrict s, char **__restrict ptr, int base) { return _strtol_l (s, ptr, base, __get_current_locale ()); } #endif picolibc-1.7.4/newlib/libc/stdlib/strtold.c000066400000000000000000000054631414576234500206430ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2009 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define _GNU_SOURCE #include #include "local.h" #include "mprec.h" #undef FLT_ROUNDS #if defined(_HAVE_LONG_DOUBLE) && __LDBL_MANT_DIG__ == 64 /* Intel MCU has no x87 floating point unit */ #if (defined (__x86_64__) || defined (__i386__)) && !defined (__iamcu__) static const int map[] = { 1, /* round to nearest */ 3, /* round to zero */ 2, /* round to negative infinity */ 0 /* round to positive infinity */ }; int __flt_rounds(void) { int x; /* Assume that the x87 and the SSE unit agree on the rounding mode. */ __asm__("fnstcw %0" : "=m" (x)); return (map[(x >> 10) & 0x03]); } #define FLT_ROUNDS __flt_rounds() #else #define FLT_ROUNDS 0 #endif long double strtold_l (const char *__restrict s00, char **__restrict se, locale_t loc) { #ifdef _LDBL_EQ_DBL /* On platforms where long double is as wide as double. */ return strtod_l (s00, se, loc); #else long double result; _strtorx_l (s00, se, FLT_ROUNDS, &result, loc); return result; #endif } long double strtold (const char *__restrict s00, char **__restrict se) { #ifdef _LDBL_EQ_DBL /* On platforms where long double is as wide as double. */ return strtod (s00, se); #else long double result; _strtorx_l (s00, se, FLT_ROUNDS, &result, __get_current_locale ()); return result; #endif } #endif /* _HAVE_LONG_DOUBLE */ picolibc-1.7.4/newlib/libc/stdlib/strtoll.c000066400000000000000000000172721414576234500206540ustar00rootroot00000000000000/* FUNCTION <>, <>---string to long long INDEX strtoll INDEX strtoll_l INDEX _strtoll_r SYNOPSIS #include long long strtoll(const char *restrict <[s]>, char **restrict <[ptr]>, int <[base]>); #include long long strtoll_l(const char *restrict <[s]>, char **restrict <[ptr]>, int <[base]>, locale_t <[locale]>); long long _strtoll_r(void *<[reent]>, const char *restrict <[s]>, char **restrict <[ptr]>, int <[base]>); DESCRIPTION The function <> converts the string <<*<[s]>>> to a <>. First, it breaks down the string into three parts: leading whitespace, which is ignored; a subject string consisting of characters resembling an integer in the radix specified by <[base]>; and a trailing portion consisting of zero or more unparseable characters, and always including the terminating null character. Then, it attempts to convert the subject string into a <> and returns the result. If the value of <[base]> is 0, the subject string is expected to look like a normal C integer constant: an optional sign, a possible `<<0x>>' indicating a hexadecimal base, and a number. If <[base]> is between 2 and 36, the expected form of the subject is a sequence of letters and digits representing an integer in the radix specified by <[base]>, with an optional plus or minus sign. The letters <>--<> (or, equivalently, <>--<>) are used to signify values from 10 to 35; only letters whose ascribed values are less than <[base]> are permitted. If <[base]> is 16, a leading <<0x>> is permitted. The subject sequence is the longest initial sequence of the input string that has the expected form, starting with the first non-whitespace character. If the string is empty or consists entirely of whitespace, or if the first non-whitespace character is not a permissible letter or digit, the subject string is empty. If the subject string is acceptable, and the value of <[base]> is zero, <> attempts to determine the radix from the input string. A string with a leading <<0x>> is treated as a hexadecimal value; a string with a leading 0 and no <> is treated as octal; all other strings are treated as decimal. If <[base]> is between 2 and 36, it is used as the conversion radix, as described above. If the subject string begins with a minus sign, the value is negated. Finally, a pointer to the first character past the converted subject string is stored in <[ptr]>, if <[ptr]> is not <>. If the subject string is empty (or not in acceptable form), no conversion is performed and the value of <[s]> is stored in <[ptr]> (if <[ptr]> is not <>). <> is like <> but performs the conversion based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. The alternate function <<_strtoll_r>> is a reentrant version. The extra argument <[reent]> is a pointer to a reentrancy structure. RETURNS <>, <> return the converted value, if any. If no conversion was made, 0 is returned. <>, <> return <> or <> if the magnitude of the converted value is too large, and sets <> to <>. PORTABILITY <> is ANSI. <> is a GNU extension. No supporting OS subroutines are required. */ /*- * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _GNU_SOURCE #include <_ansi.h> #include #include #include #include #include "../locale/setlocale.h" /* * Convert a string to a long long integer. */ static long long _strtoll_l (const char *__restrict nptr, char **__restrict endptr, int base, locale_t loc) { register const unsigned char *s = (const unsigned char *)nptr; register unsigned long long acc; register int c; register unsigned long long cutoff; register int neg = 0, any, cutlim; /* * Skip white space and pick up leading +/- sign if any. * If base is 0, allow 0x for hex and 0 for octal, else * assume decimal; if base is already 16, allow 0x. */ do { c = *s++; } while (isspace_l(c, loc)); if (c == '-') { neg = 1; c = *s++; } else if (c == '+') c = *s++; if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X')) { c = s[1]; s += 2; base = 16; } if (base == 0) base = c == '0' ? 8 : 10; /* * Compute the cutoff value between legal numbers and illegal * numbers. That is the largest legal value, divided by the * base. An input number that is greater than this value, if * followed by a legal input character, is too big. One that * is equal to this value may be valid or not; the limit * between valid and invalid numbers is then based on the last * digit. For instance, if the range for longs is * [-2147483648..2147483647] and the input base is 10, * cutoff will be set to 214748364 and cutlim to either * 7 (neg==0) or 8 (neg==1), meaning that if we have accumulated * a value > 214748364, or equal but the next digit is > 7 (or 8), * the number is too big, and we will return a range error. * * Set any if any `digits' consumed; make it negative to indicate * overflow. */ cutoff = neg ? -(unsigned long long)LLONG_MIN : LLONG_MAX; cutlim = cutoff % (unsigned long long)base; cutoff /= (unsigned long long)base; for (acc = 0, any = 0;; c = *s++) { if (c >= '0' && c <= '9') c -= '0'; else if (c >= 'A' && c <= 'Z') c -= 'A' - 10; else if (c >= 'a' && c <= 'z') c -= 'a' - 10; else break; if (c >= base) break; if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim)) any = -1; else { any = 1; acc *= base; acc += c; } } if (any < 0) { acc = neg ? LLONG_MIN : LLONG_MAX; __errno_r(rptr) = ERANGE; } else if (neg) acc = -acc; if (endptr != 0) *endptr = (char *) (any ? (char *)s - 1 : nptr); return (acc); } #ifndef _REENT_ONLY long long strtoll_l (const char *__restrict s, char **__restrict ptr, int base, locale_t loc) { return _strtoll_l (s, ptr, base, loc); } long long strtoll (const char *__restrict s, char **__restrict ptr, int base) { return _strtoll_l (s, ptr, base, __get_current_locale ()); } #endif picolibc-1.7.4/newlib/libc/stdlib/strtorx.c000066400000000000000000000062011414576234500206640ustar00rootroot00000000000000/**************************************************************** The author of this software is David M. Gay. Copyright (C) 1998, 2000 by Lucent Technologies All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that the copyright notice and this permission notice and warranty disclaimer appear in supporting documentation, and that the name of Lucent or any of its entities not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************************************************/ /* Please send bug reports to David M. Gay (dmg at acm dot org, * with " at " changed at "@" and " dot " changed to "."). */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "mprec.h" #include "gdtoa.h" #if defined (_HAVE_LONG_DOUBLE) && !defined (_LDBL_EQ_DBL) && __LDBL_MANT_DIG__ == 64 /* one or the other of IEEE_MC68k or IEEE_8087 should be #defined */ #ifdef IEEE_MC68k #define _0 0 #define _1 1 #define _2 2 #define _3 3 #define _4 4 #endif #ifdef IEEE_8087 #define _0 4 #define _1 3 #define _2 2 #define _3 1 #define _4 0 #endif void #ifdef KR_headers ULtox(L, bits, exp, k) __UShort *L; __ULong *bits; Long exp; int k; #else ULtox(__UShort *L, __ULong *bits, Long exp, int k) #endif { switch(k & STRTOG_Retmask) { case STRTOG_NoNumber: case STRTOG_Zero: L[0] = L[1] = L[2] = L[3] = L[4] = 0; break; case STRTOG_Denormal: L[_0] = 0; goto normal_bits; case STRTOG_Normal: case STRTOG_NaNbits: L[_0] = exp + 0x3fff + 63; normal_bits: L[_4] = (__UShort)bits[0]; L[_3] = (__UShort)(bits[0] >> 16); L[_2] = (__UShort)bits[1]; L[_1] = (__UShort)(bits[1] >> 16); break; case STRTOG_Infinite: L[_0] = 0x7fff; L[_1] = 0x8000; L[_2] = L[_3] = L[_4] = 0; break; case STRTOG_NaN: *((long double*)L) = __builtin_nanl (""); } if (k & STRTOG_Neg) L[_0] |= 0x8000; } int #ifdef KR_headers _strtorx_l(s, sp, rounding, L, loc) const char *s; char **sp; int rounding; void *L; locale_t loc; #else _strtorx_l(const char *s, char **sp, int rounding, void *L, locale_t loc) #endif { static FPI fpi0 = { 64, 1-16383-64+1, 32766 - 16383 - 64 + 1, 1, SI }; FPI *fpi, fpi1; __ULong bits[2]; Long exp; int k; fpi = &fpi0; if (rounding != FPI_Round_near) { fpi1 = fpi0; fpi1.rounding = rounding; fpi = &fpi1; } k = _strtodg_l(s, sp, fpi, &exp, bits, loc); ULtox((__UShort*)L, bits, exp, k); return k; } #endif /* _HAVE_LONG_DOUBLE && !_LDBL_EQ_DBL */ picolibc-1.7.4/newlib/libc/stdlib/strtoul.c000066400000000000000000000150361414576234500206610ustar00rootroot00000000000000/* FUNCTION <>, <>---string to unsigned long INDEX strtoul INDEX strtoul_l INDEX _strtoul_r SYNOPSIS #include unsigned long strtoul(const char *restrict <[s]>, char **restrict <[ptr]>, int <[base]>); #include unsigned long strtoul_l(const char *restrict <[s]>, char **restrict <[ptr]>, int <[base]>, locale_t <[locale]>); unsigned long _strtoul_r(void *<[reent]>, const char *restrict <[s]>, char **restrict <[ptr]>, int <[base]>); DESCRIPTION The function <> converts the string <<*<[s]>>> to an <>. First, it breaks down the string into three parts: leading whitespace, which is ignored; a subject string consisting of the digits meaningful in the radix specified by <[base]> (for example, <<0>> through <<7>> if the value of <[base]> is 8); and a trailing portion consisting of one or more unparseable characters, which always includes the terminating null character. Then, it attempts to convert the subject string into an unsigned long integer, and returns the result. If the value of <[base]> is zero, the subject string is expected to look like a normal C integer constant (save that no optional sign is permitted): a possible <<0x>> indicating hexadecimal radix, and a number. If <[base]> is between 2 and 36, the expected form of the subject is a sequence of digits (which may include letters, depending on the base) representing an integer in the radix specified by <[base]>. The letters <>--<> (or <>--<>) are used as digits valued from 10 to 35. If <[base]> is 16, a leading <<0x>> is permitted. The subject sequence is the longest initial sequence of the input string that has the expected form, starting with the first non-whitespace character. If the string is empty or consists entirely of whitespace, or if the first non-whitespace character is not a permissible digit, the subject string is empty. If the subject string is acceptable, and the value of <[base]> is zero, <> attempts to determine the radix from the input string. A string with a leading <<0x>> is treated as a hexadecimal value; a string with a leading <<0>> and no <> is treated as octal; all other strings are treated as decimal. If <[base]> is between 2 and 36, it is used as the conversion radix, as described above. Finally, a pointer to the first character past the converted subject string is stored in <[ptr]>, if <[ptr]> is not <>. If the subject string is empty (that is, if <<*>><[s]> does not start with a substring in acceptable form), no conversion is performed and the value of <[s]> is stored in <[ptr]> (if <[ptr]> is not <>). <> is like <> but performs the conversion based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. The alternate function <<_strtoul_r>> is a reentrant version. The extra argument <[reent]> is a pointer to a reentrancy structure. RETURNS <>, <> return the converted value, if any. If no conversion was made, <<0>> is returned. <>, <> return <> if the magnitude of the converted value is too large, and sets <> to <>. PORTABILITY <> is ANSI. <> is a GNU extension. <> requires no supporting OS subroutines. */ /* * Copyright (c) 1990 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _GNU_SOURCE #include <_ansi.h> #include #include #include #include #include "../locale/setlocale.h" /* * Convert a string to an unsigned long integer. */ #ifndef _REENT_ONLY unsigned long strtoul_l (const char *__restrict nptr, char **__restrict endptr, int base, locale_t loc) { register const unsigned char *s = (const unsigned char *)nptr; register unsigned long acc; register int c; register unsigned long cutoff; register int neg = 0, any, cutlim; /* * See strtol for comments as to the logic used. */ do { c = *s++; } while (isspace_l(c, loc)); if (c == '-') { neg = 1; c = *s++; } else if (c == '+') c = *s++; if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X')) { c = s[1]; s += 2; base = 16; } if (base == 0) base = c == '0' ? 8 : 10; cutoff = (unsigned long)ULONG_MAX / (unsigned long)base; cutlim = (unsigned long)ULONG_MAX % (unsigned long)base; for (acc = 0, any = 0;; c = *s++) { if (c >= '0' && c <= '9') c -= '0'; else if (c >= 'A' && c <= 'Z') c -= 'A' - 10; else if (c >= 'a' && c <= 'z') c -= 'a' - 10; else break; if (c >= base) break; if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim)) any = -1; else { any = 1; acc *= base; acc += c; } } if (any < 0) { acc = ULONG_MAX; __errno_r(rptr) = ERANGE; } else if (neg) acc = -acc; if (endptr != 0) *endptr = (char *) (any ? (char *)s - 1 : nptr); return (acc); } unsigned long strtoul (const char *__restrict s, char **__restrict ptr, int base) { return strtoul_l (s, ptr, base, __get_current_locale ()); } #endif picolibc-1.7.4/newlib/libc/stdlib/strtoull.c000066400000000000000000000154661414576234500210440ustar00rootroot00000000000000/* FUNCTION <>, <>---string to unsigned long long INDEX strtoull INDEX strtoull_l SYNOPSIS #include unsigned long long strtoull(const char *restrict <[s]>, char **restrict <[ptr]>, int <[base]>); #include unsigned long long strtoull_l(const char *restrict <[s]>, char **restrict <[ptr]>, int <[base]>, locale_t <[locale]>); unsigned long long _strtoull_r(void *<[reent]>, const char *restrict <[s]>, char **restrict <[ptr]>, int <[base]>); DESCRIPTION The function <> converts the string <<*<[s]>>> to an <>. First, it breaks down the string into three parts: leading whitespace, which is ignored; a subject string consisting of the digits meaningful in the radix specified by <[base]> (for example, <<0>> through <<7>> if the value of <[base]> is 8); and a trailing portion consisting of one or more unparseable characters, which always includes the terminating null character. Then, it attempts to convert the subject string into an unsigned long long integer, and returns the result. If the value of <[base]> is zero, the subject string is expected to look like a normal C integer constant (save that no optional sign is permitted): a possible <<0x>> indicating hexadecimal radix, and a number. If <[base]> is between 2 and 36, the expected form of the subject is a sequence of digits (which may include letters, depending on the base) representing an integer in the radix specified by <[base]>. The letters <>--<> (or <>--<>) are used as digits valued from 10 to 35. If <[base]> is 16, a leading <<0x>> is permitted. The subject sequence is the longest initial sequence of the input string that has the expected form, starting with the first non-whitespace character. If the string is empty or consists entirely of whitespace, or if the first non-whitespace character is not a permissible digit, the subject string is empty. If the subject string is acceptable, and the value of <[base]> is zero, <> attempts to determine the radix from the input string. A string with a leading <<0x>> is treated as a hexadecimal value; a string with a leading <<0>> and no <> is treated as octal; all other strings are treated as decimal. If <[base]> is between 2 and 36, it is used as the conversion radix, as described above. Finally, a pointer to the first character past the converted subject string is stored in <[ptr]>, if <[ptr]> is not <>. If the subject string is empty (that is, if <<*>><[s]> does not start with a substring in acceptable form), no conversion is performed and the value of <[s]> is stored in <[ptr]> (if <[ptr]> is not <>). <> is like <> but performs the conversion based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. The alternate function <<_strtoull_r>> is a reentrant version. The extra argument <[reent]> is a pointer to a reentrancy structure. RETURNS <>, <> return the converted value, if any. If no conversion was made, <<0>> is returned. <>, <> return <> if the magnitude of the converted value is too large, and sets <> to <>. PORTABILITY <> is ANSI. <> is a GNU extension. <> requires no supporting OS subroutines. */ /* * Copyright (c) 1990 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _GNU_SOURCE #include <_ansi.h> #include #include #include #include #include "../locale/setlocale.h" /* * Convert a string to an unsigned long long integer. */ static unsigned long long _strtoull_l (const char *__restrict nptr, char **__restrict endptr, int base, locale_t loc) { register const unsigned char *s = (const unsigned char *)nptr; register unsigned long long acc; register int c; register unsigned long long cutoff; register int neg = 0, any, cutlim; /* * See strtol for comments as to the logic used. */ do { c = *s++; } while (isspace_l(c, loc)); if (c == '-') { neg = 1; c = *s++; } else if (c == '+') c = *s++; if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X')) { c = s[1]; s += 2; base = 16; } if (base == 0) base = c == '0' ? 8 : 10; cutoff = (unsigned long long)ULLONG_MAX / (unsigned long long)base; cutlim = (unsigned long long)ULLONG_MAX % (unsigned long long)base; for (acc = 0, any = 0;; c = *s++) { if (c >= '0' && c <= '9') c -= '0'; else if (c >= 'A' && c <= 'Z') c -= 'A' - 10; else if (c >= 'a' && c <= 'z') c -= 'a' - 10; else break; if (c >= base) break; if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim)) any = -1; else { any = 1; acc *= base; acc += c; } } if (any < 0) { acc = ULLONG_MAX; __errno_r(rptr) = ERANGE; } else if (neg) acc = -acc; if (endptr != 0) *endptr = (char *) (any ? (char *)s - 1 : nptr); return (acc); } #ifndef _REENT_ONLY unsigned long long strtoull_l (const char *__restrict s, char **__restrict ptr, int base, locale_t loc) { return _strtoull_l (s, ptr, base, loc); } unsigned long long strtoull (const char *__restrict s, char **__restrict ptr, int base) { return _strtoull_l (s, ptr, base, __get_current_locale ()); } #endif picolibc-1.7.4/newlib/libc/stdlib/strtoumax.c000066400000000000000000000073161414576234500212150ustar00rootroot00000000000000/*- * Copyright (c) 1992, 1993 * The Regents of the University of California. All rights reserved. * * Copyright (c) 2011 The FreeBSD Foundation * All rights reserved. * Portions of this software were developed by David Chisnall * under sponsorship from the FreeBSD Foundation. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "from @(#)strtoul.c 8.1 (Berkeley) 6/4/93"; #endif /* LIBC_SCCS and not lint */ #define _DEFAULT_SOURCE #include __FBSDID("$FreeBSD: head/lib/libc/stdlib/strtoumax.c 251672 2013-06-13 00:19:30Z emaste $"); #include #include #include #include #include #include "../locale/setlocale.h" /* * Convert a string to a uintmax_t integer. * * Assumes that the upper and lower case * alphabets and digits are each contiguous. */ #ifndef _REENT_ONLY uintmax_t strtoumax_l(const char * __restrict nptr, char ** __restrict endptr, int base, locale_t loc) { const char *s = nptr; uintmax_t acc; char c; uintmax_t cutoff; int neg = 0, any, cutlim; /* * See strtoimax for comments as to the logic used. */ do { c = *s++; } while (isspace_l(c, loc)); if (c == '-') { neg = 1; c = *s++; } else { neg = 0; if (c == '+') c = *s++; } if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X')) { c = s[1]; s += 2; base = 16; } if (base == 0) base = c == '0' ? 8 : 10; acc = any = 0; if (base < 2 || base > 36) goto noconv; cutoff = UINTMAX_MAX / base; cutlim = UINTMAX_MAX % base; for ( ; ; c = *s++) { if (c >= '0' && c <= '9') c -= '0'; else if (c >= 'A' && c <= 'Z') c -= 'A' - 10; else if (c >= 'a' && c <= 'z') c -= 'a' - 10; else break; if (c >= base) break; if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim)) any = -1; else { any = 1; acc *= base; acc += c; } } if (any < 0) { acc = UINTMAX_MAX; __errno_r(rptr) = ERANGE; } else if (!any) { noconv: __errno_r(rptr) = EINVAL; } else if (neg) acc = -acc; if (endptr != NULL) *endptr = (char *)(any ? s - 1 : nptr); return (acc); } uintmax_t strtoumax(const char* __restrict nptr, char** __restrict endptr, int base) { return strtoumax_l(nptr, endptr, base, __get_current_locale()); } #endif picolibc-1.7.4/newlib/libc/stdlib/system.c000066400000000000000000000072661414576234500204770ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ /* FUNCTION <>---execute command string INDEX system INDEX _system_r SYNOPSIS #include int system(char *<[s]>); int _system_r(void *<[reent]>, char *<[s]>); DESCRIPTION Use <> to pass a command string <<*<[s]>>> to <> on your system, and wait for it to finish executing. Use ``<>'' to test whether your system has <> available. The alternate function <<_system_r>> is a reentrant version. The extra argument <[reent]> is a pointer to a reentrancy structure. RETURNS <> returns a non-zero value if <> is available, and <<0>> if it is not. With a command argument, the result of <> is the exit status returned by <>. PORTABILITY ANSI C requires <>, but leaves the nature and effects of a command processor undefined. ANSI C does, however, specify that <> return zero or nonzero to report on the existence of a command processor. POSIX.2 requires <>, and requires that it invoke a <>. Where <> is found is left unspecified. Supporting OS subroutines required: <<_exit>>, <<_execve>>, <<_fork_r>>, <<_wait_r>>. */ #include <_ansi.h> #include #include #include #include #include <_syslist.h> #include #if defined (unix) || defined (__CYGWIN__) static int do_system (const char *s); #endif #ifndef _REENT_ONLY int system (const char *s) { #if defined(HAVE_SYSTEM) return _system (s); #elif defined(NO_EXEC) if (s == NULL) return 0; errno = ENOSYS; return -1; #else /* ??? How to handle (s == NULL) here is not exactly clear. If _fork_r fails, that's not really a justification for returning 0. For now we always return 0 and leave it to each target to explicitly handle otherwise (this can always be relaxed in the future). */ #if defined (unix) || defined (__CYGWIN__) if (s == NULL) return 1; return do_system (s); #else if (s == NULL) return 0; errno = ENOSYS; return -1; #endif #endif } #endif #if defined (unix) && !defined (__CYGWIN__) && !defined(__rtems__) extern char **environ; /* Only deal with a pointer to environ, to work around subtle bugs with shared libraries and/or small data systems where the user declares his own 'environ'. */ static char ***p_environ = &environ; static int do_system (const char *s) { char *argv[4]; int pid, status; argv[0] = "sh"; argv[1] = "-c"; argv[2] = (char *) s; argv[3] = NULL; if ((pid = fork ()) == 0) { execve ("/bin/sh", argv, *p_environ); exit (100); } else if (pid == -1) return -1; else { int rc = wait (&status); if (rc == -1) return -1; status = (status >> 8) & 0xff; return status; } } #endif #if defined (__CYGWIN__) static int do_system (const char *s) { char *argv[4]; int pid, status; argv[0] = "sh"; argv[1] = "-c"; argv[2] = (char *) s; argv[3] = NULL; if ((pid = vfork ()) == 0) { /* ??? It's not clear what's the right path to take (pun intended :-). There won't be an "sh" in any fixed location so we need each user to be able to say where to find "sh". That suggests using an environment variable, but after a few more such situations we may have too many of them. */ char *sh = getenv ("SH_PATH"); if (sh == NULL) sh = "/bin/sh"; _execve (sh, argv, environ); exit (100); } else if (pid == -1) return -1; else { extern int _wait (int *); int rc = _wait (&status); if (rc == -1) return -1; status = (status >> 8) & 0xff; return status; } } #endif picolibc-1.7.4/newlib/libc/stdlib/utoa.c000066400000000000000000000030131414576234500201050ustar00rootroot00000000000000/* Copyright (c) 2014 Corinna Vinschen */ /* FUNCTION <>---unsigned integer to string INDEX utoa SYNOPSIS #include char *utoa(unsigned <[value]>, char *<[str]>, int <[base]>); char *__utoa(unsigned <[value]>, char *<[str]>, int <[base]>); DESCRIPTION <> converts the unsigned integer [] to a null-terminated string using the specified base, which must be between 2 and 36, inclusive. <[str]> should be an array long enough to contain the converted value, which in the worst case is sizeof(int)*8+1 bytes. RETURNS A pointer to the string, <[str]>, or NULL if <[base]> is invalid. PORTABILITY <> is non-ANSI. No supporting OS subroutine calls are required. */ #include char * __utoa (unsigned value, char *str, int base) { const char digits[] = "0123456789abcdefghijklmnopqrstuvwxyz"; int i, j; unsigned remainder; char c; /* Check base is supported. */ if ((base < 2) || (base > 36)) { str[0] = '\0'; return NULL; } /* Convert to string. Digits are in reverse order. */ i = 0; do { remainder = value % base; str[i++] = digits[remainder]; value = value / base; } while (value != 0); str[i] = '\0'; /* Reverse string. */ for (j = 0, i--; j < i; j++, i--) { c = str[j]; str[j] = str[i]; str[i] = c; } return str; } char * utoa (unsigned value, char *str, int base) { return __utoa (value, str, base); } picolibc-1.7.4/newlib/libc/stdlib/valloc.c000066400000000000000000000006561414576234500204270ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ #ifndef MALLOC_PROVIDED /* valloc.c -- a wrapper for valloc_r and pvalloc_r. */ #include <_ansi.h> #include #include #include #ifndef _REENT_ONLY void * valloc (size_t nbytes) { return _valloc_r (_REENT, nbytes); } void * pvalloc (size_t nbytes) { return _pvalloc_r (_REENT, nbytes); } #endif #endif picolibc-1.7.4/newlib/libc/stdlib/wcrtomb.c000066400000000000000000000013411414576234500206140ustar00rootroot00000000000000/* Copyright (c) 2002 Thomas Fitzsimmons */ #include #include #include #include #include #include "local.h" #ifndef _REENT_ONLY size_t wcrtomb (char *__restrict s, wchar_t wc, mbstate_t *__restrict ps) { int retval = 0; char buf[10]; #ifdef _MB_CAPABLE if (ps == NULL) { static NEWLIB_THREAD_LOCAL mbstate_t _wcrtomb_state; ps = &_wcrtomb_state; } #endif if (s == NULL) retval = __WCTOMB (buf, L'\0', ps); else retval = __WCTOMB (s, wc, ps); if (retval == -1) { ps->__count = 0; __errno_r(reent) = EILSEQ; return (size_t)(-1); } else return (size_t)retval; } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/wcsnrtombs.c000066400000000000000000000073001414576234500213410ustar00rootroot00000000000000/* Copyright (c) 2009 Corinna Vinschen */ /* FUNCTION <>, <>---convert a wide-character string to a character string INDEX wcsrtombs INDEX _wcsrtombs_r INDEX wcsnrtombs INDEX _wcsnrtombs_r SYNOPSIS #include size_t wcsrtombs(char *__restrict <[dst]>, const wchar_t **__restrict <[src]>, size_t <[len]>, mbstate_t *__restrict <[ps]>); #include size_t _wcsrtombs_r(struct _reent *<[ptr]>, char *<[dst]>, const wchar_t **<[src]>, size_t <[len]>, mbstate_t *<[ps]>); #include size_t wcsnrtombs(char *__restrict <[dst]>, const wchar_t **__restrict <[src]>, size_t <[nwc]>, size_t <[len]>, mbstate_t *__restrict <[ps]>); #include size_t _wcsnrtombs_r(struct _reent *<[ptr]>, char *<[dst]>, const wchar_t **<[src]>, size_t <[nwc]>, size_t <[len]>, mbstate_t *<[ps]>); DESCRIPTION The <> function converts a string of wide characters indirectly pointed to by <[src]> to a corresponding multibyte character string stored in the array pointed to by <[dst]>. No more than <[len]> bytes are written to <[dst]>. If <[dst]> is NULL, no characters are stored. If <[dst]> is not NULL, the pointer pointed to by <[src]> is updated to point to the character after the one that conversion stopped at. If conversion stops because a null character is encountered, *<[src]> is set to NULL. The mbstate_t argument, <[ps]>, is used to keep track of the shift state. If it is NULL, <> uses an internal, static mbstate_t object, which is initialized to the initial conversion state at program startup. The <> function behaves identically to <>, except that conversion stops after reading at most <[nwc]> characters from the buffer pointed to by <[src]>. RETURNS The <> and <> functions return the number of bytes stored in the array pointed to by <[dst]> (not including any terminating null), if successful, otherwise it returns (size_t)-1. PORTABILITY <> is defined by C99 standard. <> is defined by the POSIX.1-2008 standard. */ #include #include #include #include #include #include "local.h" #include "../locale/setlocale.h" size_t _wcsnrtombs_l (char *dst, const wchar_t **src, size_t nwc, size_t len, mbstate_t *ps, struct __locale_t *loc) { char *ptr = dst; char buff[10]; wchar_t *pwcs; size_t n; int i; #ifdef _MB_CAPABLE if (ps == NULL) { static NEWLIB_THREAD_LOCAL mbstate_t _wcsrtombs_state; ps = &_wcsrtombs_state; } #endif /* If no dst pointer, treat len as maximum possible value. */ if (dst == NULL) len = (size_t)-1; n = 0; pwcs = (wchar_t *)(*src); while (n < len && nwc-- > 0) { int count = ps->__count; wint_t wch = ps->__value.__wch; int bytes = loc->wctomb (buff, *pwcs, ps); if (bytes == -1) { __errno_r(r) = EILSEQ; ps->__count = 0; return (size_t)-1; } if (n + bytes <= len) { n += bytes; if (dst) { for (i = 0; i < bytes; ++i) *ptr++ = buff[i]; ++(*src); } if (*pwcs++ == 0x00) { if (dst) *src = NULL; ps->__count = 0; return n - 1; } } else { /* not enough room, we must back up state to before __WCTOMB call */ ps->__count = count; ps->__value.__wch = wch; len = 0; } } return n; } #ifndef _REENT_ONLY size_t wcsnrtombs (char *__restrict dst, const wchar_t **__restrict src, size_t nwc, size_t len, mbstate_t *__restrict ps) { return _wcsnrtombs_l (dst, src, nwc, len, ps, __get_current_locale ()); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/wcsrtombs.c000066400000000000000000000005661414576234500211720ustar00rootroot00000000000000/* Copyright (c) 2002 Thomas Fitzsimmons */ /* Doc in wcsnrtombs.c */ #define _DEFAULT_SOURCE #include #include #ifndef _REENT_ONLY size_t wcsrtombs (char *__restrict dst, const wchar_t **__restrict src, size_t len, mbstate_t *__restrict ps) { return wcsnrtombs (dst, src, (size_t) -1, len, ps); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/wcstod.c000066400000000000000000000210301414576234500204370ustar00rootroot00000000000000/* FUNCTION <>, <>, <>, <>, <>, <>---wide char string to double or float INDEX wcstod INDEX wcstof INDEX wcstold INDEX wcstod_l INDEX wcstof_l INDEX wcstold_l INDEX _wcstod_r INDEX _wcstof_r SYNOPSIS #include double wcstod(const wchar_t *__restrict <[str]>, wchar_t **__restrict <[tail]>); float wcstof(const wchar_t *__restrict <[str]>, wchar_t **__restrict <[tail]>); long double wcstold(const wchar_t *__restrict <[str]>, wchar_t **__restrict <[tail]>); #include double wcstod_l(const wchar_t *__restrict <[str]>, wchar_t **__restrict <[tail]>, locale_t <[locale]>); float wcstof_l(const wchar_t *__restrict <[str]>, wchar_t **__restrict <[tail]>, locale_t <[locale]>); long double wcstold_l(const wchar_t *__restrict <[str]>, wchar_t **__restrict <[tail]>, locale_t <[locale]>); double _wcstod_r(void *<[reent]>, const wchar_t *<[str]>, wchar_t **<[tail]>); float _wcstof_r(void *<[reent]>, const wchar_t *<[str]>, wchar_t **<[tail]>); DESCRIPTION <>, <>, <> parse the wide-character string <[str]>, producing a substring which can be converted to a double, float, or long double value. The substring converted is the longest initial subsequence of <[str]>, beginning with the first non-whitespace character, that has one of these formats: .[+|-]<[digits]>[.[<[digits]>]][(e|E)[+|-]<[digits]>] .[+|-].<[digits]>[(e|E)[+|-]<[digits]>] .[+|-](i|I)(n|N)(f|F)[(i|I)(n|N)(i|I)(t|T)(y|Y)] .[+|-](n|N)(a|A)(n|N)[<(>[<[hexdigits]>]<)>] .[+|-]0(x|X)<[hexdigits]>[.[<[hexdigits]>]][(p|P)[+|-]<[digits]>] .[+|-]0(x|X).<[hexdigits]>[(p|P)[+|-]<[digits]>] The substring contains no characters if <[str]> is empty, consists entirely of whitespace, or if the first non-whitespace character is something other than <<+>>, <<->>, <<.>>, or a digit, and cannot be parsed as infinity or NaN. If the platform does not support NaN, then NaN is treated as an empty substring. If the substring is empty, no conversion is done, and the value of <[str]> is stored in <<*<[tail]>>>. Otherwise, the substring is converted, and a pointer to the final string (which will contain at least the terminating null character of <[str]>) is stored in <<*<[tail]>>>. If you want no assignment to <<*<[tail]>>>, pass a null pointer as <[tail]>. This implementation returns the nearest machine number to the input decimal string. Ties are broken by using the IEEE round-even rule. However, <> is currently subject to double rounding errors. <>, <>, <> are like <>, <>, <> but perform the conversion based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. The alternate functions <<_wcstod_r>> and <<_wcstof_r>> are reentrant versions of <> and <>, respectively. The extra argument <[reent]> is a pointer to a reentrancy structure. RETURNS Return the converted substring value, if any. If no conversion could be performed, 0 is returned. If the correct value is out of the range of representable values, plus or minus <> is returned, and <> is stored in errno. If the correct value would cause underflow, 0 is returned and <> is stored in errno. PORTABILITY <> is ANSI. <>, <> are C99. <>, <>, <> are GNU extensions. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ /*- * Copyright (c) 2002 Tim J. Robbins * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _GNU_SOURCE #include <_ansi.h> #include #include #include #include #include #include #include #include "../locale/setlocale.h" #ifndef _REENT_ONLY double wcstod_l (const wchar_t *nptr, wchar_t **endptr, locale_t loc) { static const mbstate_t initial; mbstate_t mbs; double val; char *buf, *end; const wchar_t *wcp; size_t len; while (iswspace_l(*nptr, loc)) nptr++; /* * Convert the supplied numeric wide char. string to multibyte. * * We could attempt to find the end of the numeric portion of the * wide char. string to avoid converting unneeded characters but * choose not to bother; optimising the uncommon case where * the input string contains a lot of text after the number * duplicates a lot of strtod()'s functionality and slows down the * most common cases. */ wcp = nptr; mbs = initial; if ((len = _wcsnrtombs_l(NULL, &wcp, (size_t) -1, 0, &mbs, loc)) == (size_t) -1) { if (endptr != NULL) *endptr = (wchar_t *)nptr; return (0.0); } if ((buf = malloc(len + 1)) == NULL) return (0.0); mbs = initial; _wcsnrtombs_l(buf, &wcp, (size_t) -1, len + 1, &mbs, loc); /* Let strtod() do most of the work for us. */ val = strtod_l(buf, &end, loc); /* * We only know where the number ended in the _multibyte_ * representation of the string. If the caller wants to know * where it ended, count multibyte characters to find the * corresponding position in the wide char string. */ if (endptr != NULL) { const char *decimal_point = __get_numeric_locale(loc)->decimal_point; /* The only valid multibyte char in a float converted by strtod/wcstod is the radix char. What we do here is, figure out if the radix char was in the valid leading float sequence in the incoming string. If so, the multibyte float string is strlen(radix char) - 1 bytes longer than the incoming wide char string has characters. To fix endptr, reposition end as if the radix char was just one byte long. The resulting difference (end - buf) is then equivalent to the number of valid wide characters in the input string. */ len = strlen (decimal_point); if (len > 1) { char *d = strstr (buf, decimal_point); if (d && d < end) end -= len - 1; } *endptr = (wchar_t *)nptr + (end - buf); } free(buf); return (val); } double wcstod (const wchar_t *__restrict nptr, wchar_t **__restrict endptr) { return wcstod_l (nptr, endptr, __get_current_locale ()); } float wcstof_l (const wchar_t *__restrict nptr, wchar_t **__restrict endptr, locale_t loc) { double val = wcstod_l (nptr, endptr, loc); if (isnan (val)) return nanf (""); float retval = (float) val; #ifndef NO_ERRNO if (isinf (retval) && !isinf (val)) __errno_r(_REENT) = ERANGE; #endif return retval; } float wcstof (const wchar_t *__restrict nptr, wchar_t **__restrict endptr) { double val = wcstod_l (nptr, endptr, __get_current_locale ()); if (isnan (val)) return nanf (""); float retval = (float) val; #ifndef NO_ERRNO if (isinf (retval) && !isinf (val)) __errno_r(_REENT) = ERANGE; #endif return retval; } #endif picolibc-1.7.4/newlib/libc/stdlib/wcstoimax.c000066400000000000000000000076571414576234500211750ustar00rootroot00000000000000/*- * Copyright (c) 1992, 1993 * The Regents of the University of California. All rights reserved. * * Copyright (c) 2011 The FreeBSD Foundation * All rights reserved. * Portions of this software were developed by David Chisnall * under sponsorship from the FreeBSD Foundation. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _DEFAULT_SOURCE #include #if 0 #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "from @(#)strtol.c 8.1 (Berkeley) 6/4/93"; #endif /* LIBC_SCCS and not lint */ __FBSDID("FreeBSD: src/lib/libc/stdlib/strtoimax.c,v 1.8 2002/09/06 11:23:59 tjr Exp "); #endif __FBSDID("$FreeBSD: head/lib/libc/locale/wcstoimax.c 314436 2017-02-28 23:42:47Z imp $"); #include #include #include #include #include #include #include "../locale/setlocale.h" /* * Convert a wide character string to an intmax_t integer. */ #ifndef _REENT_ONLY intmax_t wcstoimax_l(const wchar_t * __restrict nptr, wchar_t ** __restrict endptr, int base, locale_t loc) { const wchar_t *s = nptr; uintmax_t acc; wchar_t c; uintmax_t cutoff; int neg = 0, any, cutlim; /* * See strtoimax for comments as to the logic used. */ do { c = *s++; } while (iswspace_l(c, loc)); if (c == L'-') { neg = 1; c = *s++; } else { neg = 0; if (c == L'+') c = *s++; } if ((base == 0 || base == 16) && c == L'0' && (*s == L'x' || *s == L'X')) { c = s[1]; s += 2; base = 16; } if (base == 0) base = c == L'0' ? 8 : 10; acc = any = 0; if (base < 2 || base > 36) goto noconv; cutoff = neg ? -(uintmax_t)INTMAX_MIN : INTMAX_MAX; cutlim = cutoff % base; cutoff /= base; for ( ; ; c = *s++) { #ifdef notyet if (iswdigit_l(c, loc)) c = digittoint_l(c, loc); else #endif if (c >= L'0' && c <= L'9') c -= L'0'; else if (c >= L'A' && c <= L'Z') c -= L'A' - 10; else if (c >= 'a' && c <= 'z') c -= L'a' - 10; else break; if ((int) c >= base) break; if (any < 0 || acc > cutoff || (acc == cutoff && (int) c > cutlim)) any = -1; else { any = 1; acc *= base; acc += c; } } if (any < 0) { acc = neg ? INTMAX_MIN : INTMAX_MAX; __errno_r(rptr) = ERANGE; } else if (!any) { noconv: __errno_r(rptr) = EINVAL; } else if (neg) acc = -acc; if (endptr != NULL) *endptr = (wchar_t *)(any ? s - 1 : nptr); return (acc); } intmax_t wcstoimax(const wchar_t* __restrict nptr, wchar_t** __restrict endptr, int base) { return wcstoimax_l(nptr, endptr, base, __get_current_locale()); } #endif picolibc-1.7.4/newlib/libc/stdlib/wcstol.c000066400000000000000000000167101414576234500204600ustar00rootroot00000000000000/* FUNCTION <>, <>---wide string to long INDEX wcstol INDEX wcstol_l INDEX _wcstol_r SYNOPSIS #include long wcstol(const wchar_t *__restrict <[s]>, wchar_t **__restrict <[ptr]>, int <[base]>); #include long wcstol_l(const wchar_t *__restrict <[s]>, wchar_t **__restrict <[ptr]>, int <[base]>, locale_t <[locale]>); long _wcstol_r(void *<[reent]>, const wchar_t *<[s]>, wchar_t **<[ptr]>, int <[base]>); DESCRIPTION The function <> converts the wide string <<*<[s]>>> to a <>. First, it breaks down the string into three parts: leading whitespace, which is ignored; a subject string consisting of characters resembling an integer in the radix specified by <[base]>; and a trailing portion consisting of zero or more unparseable characters, and always including the terminating null character. Then, it attempts to convert the subject string into a <> and returns the result. If the value of <[base]> is 0, the subject string is expected to look like a normal C integer constant: an optional sign, a possible `<<0x>>' indicating a hexadecimal base, and a number. If <[base]> is between 2 and 36, the expected form of the subject is a sequence of letters and digits representing an integer in the radix specified by <[base]>, with an optional plus or minus sign. The letters <>--<> (or, equivalently, <>--<>) are used to signify values from 10 to 35; only letters whose ascribed values are less than <[base]> are permitted. If <[base]> is 16, a leading <<0x>> is permitted. The subject sequence is the longest initial sequence of the input string that has the expected form, starting with the first non-whitespace character. If the string is empty or consists entirely of whitespace, or if the first non-whitespace character is not a permissible letter or digit, the subject string is empty. If the subject string is acceptable, and the value of <[base]> is zero, <> attempts to determine the radix from the input string. A string with a leading <<0x>> is treated as a hexadecimal value; a string with a leading 0 and no <> is treated as octal; all other strings are treated as decimal. If <[base]> is between 2 and 36, it is used as the conversion radix, as described above. If the subject string begins with a minus sign, the value is negated. Finally, a pointer to the first character past the converted subject string is stored in <[ptr]>, if <[ptr]> is not <>. If the subject string is empty (or not in acceptable form), no conversion is performed and the value of <[s]> is stored in <[ptr]> (if <[ptr]> is not <>). The alternate function <<_wcstol_r>> is a reentrant version. The extra argument <[reent]> is a pointer to a reentrancy structure. <> is like <> but performs the conversion based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS <>, <> return the converted value, if any. If no conversion was made, 0 is returned. <>, <> return <> or <> if the magnitude of the converted value is too large, and sets <> to <>. PORTABILITY <> is ANSI. <> is a GNU extension. No supporting OS subroutines are required. */ /*- * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include "../locale/setlocale.h" /* * Convert a wide string to a long integer. */ #ifndef _REENT_ONLY long wcstol_l (const wchar_t *nptr, wchar_t **endptr, int base, locale_t loc) { register const wchar_t *s = nptr; register unsigned long acc; register wchar_t c; register unsigned long cutoff; register int neg = 0, any, cutlim; /* * Skip white space and pick up leading +/- sign if any. * If base is 0, allow 0x for hex and 0 for octal, else * assume decimal; if base is already 16, allow 0x. */ do { c = *s++; } while (iswspace_l(c, loc)); if (c == L'-') { neg = 1; c = *s++; } else if (c == L'+') c = *s++; if ((base == 0 || base == 16) && c == L'0' && (*s == L'x' || *s == L'X')) { c = s[1]; s += 2; base = 16; } if (base == 0) base = c == L'0' ? 8 : 10; /* * Compute the cutoff value between legal numbers and illegal * numbers. That is the largest legal value, divided by the * base. An input number that is greater than this value, if * followed by a legal input character, is too big. One that * is equal to this value may be valid or not; the limit * between valid and invalid numbers is then based on the last * digit. For instance, if the range for longs is * [-2147483648..2147483647] and the input base is 10, * cutoff will be set to 214748364 and cutlim to either * 7 (neg==0) or 8 (neg==1), meaning that if we have accumulated * a value > 214748364, or equal but the next digit is > 7 (or 8), * the number is too big, and we will return a range error. * * Set any if any `digits' consumed; make it negative to indicate * overflow. */ cutoff = neg ? -(unsigned long)LONG_MIN : LONG_MAX; cutlim = cutoff % (unsigned long)base; cutoff /= (unsigned long)base; for (acc = 0, any = 0;; c = *s++) { if (c >= L'0' && c <= L'9') c -= L'0'; else if (c >= L'A' && c <= L'Z') c -= L'A' - 10; else if (c >= L'a' && c <= L'z') c -= L'a' - 10; else break; if ((int) c >= base) break; if (any < 0 || acc > cutoff || (acc == cutoff && (int) c > cutlim)) any = -1; else { any = 1; acc *= base; acc += (int) c; } } if (any < 0) { acc = neg ? LONG_MIN : LONG_MAX; __errno_r(rptr) = ERANGE; } else if (neg) acc = -acc; if (endptr != 0) *endptr = (wchar_t *) (any ? s - 1 : nptr); return (acc); } long wcstol (const wchar_t *__restrict s, wchar_t **__restrict ptr, int base) { return wcstol_l (s, ptr, base, __get_current_locale ()); } #endif picolibc-1.7.4/newlib/libc/stdlib/wcstold.c000066400000000000000000000100451414576234500206170ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2009 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define _GNU_SOURCE #include #include #include #include #include #include "local.h" #include "../locale/setlocale.h" #if defined(_HAVE_LONG_DOUBLE) && __LDBL_MANT_DIG == 64 long double wcstold_l (const wchar_t *__restrict nptr, wchar_t **__restrict endptr, locale_t loc) { #ifdef _LDBL_EQ_DBL /* On platforms where long double is as wide as double. */ return wcstod_l(nptr, endptr, loc); #else /* This is a duplicate of the code in wcstod.c, but converted to long double. */ static const mbstate_t initial; mbstate_t mbs; long double val; char *buf, *end; const wchar_t *wcp; size_t len; while (iswspace (*nptr)) nptr++; /* Convert the supplied numeric wide char string to multibyte. */ wcp = nptr; mbs = initial; if ((len = _wcsnrtombs_l (NULL, &wcp, (size_t) -1, 0, &mbs, loc)) == (size_t) -1) { if (endptr != NULL) *endptr = (wchar_t *) nptr; return 0.0L; } if ((buf = malloc (len + 1)) == NULL) return 0.0L; mbs = initial; _wcsnrtombs_l (buf, &wcp, (size_t) -1, len + 1, &mbs, loc); val = strtold_l (buf, &end, loc); /* We only know where the number ended in the _multibyte_ representation of the string. If the caller wants to know where it ended, count multibyte characters to find the corresponding position in the wide char string. */ if (endptr != NULL) { const char *decimal_point = __get_numeric_locale(loc)->decimal_point; /* The only valid multibyte char in a float converted by strtold/wcstold is the radix char. What we do here is, figure out if the radix char was in the valid leading float sequence in the incoming string. If so, the multibyte float string is strlen (radix char) - 1 bytes longer than the incoming wide char string has characters. To fix endptr, reposition end as if the radix char was just one byte long. The resulting difference (end - buf) is then equivalent to the number of valid wide characters in the input string. */ len = strlen (decimal_point); if (len > 1) { char *d = strstr (buf, decimal_point); if (d && d < end) end -= len - 1; } *endptr = (wchar_t *) nptr + (end - buf); } free (buf); return val; #endif /* _LDBL_EQ_DBL */ } long double wcstold (const wchar_t *__restrict nptr, wchar_t **__restrict endptr) { #ifdef _LDBL_EQ_DBL /* On platforms where long double is as wide as double. */ return wcstod_l(nptr, endptr, __get_current_locale ()); #else return wcstold_l(nptr, endptr, __get_current_locale ()); #endif } #endif /* _HAVE_LONG_DOUBLE && __LDBL_MANT_DIG == 64 */ picolibc-1.7.4/newlib/libc/stdlib/wcstoll.c000066400000000000000000000170501414576234500206320ustar00rootroot00000000000000/* FUNCTION <>, <>---wide string to long long INDEX wcstoll INDEX wcstoll_l INDEX _wcstoll_r SYNOPSIS #include long long wcstoll(const wchar_t *__restrict <[s]>, wchar_t **__restrict <[ptr]>,int <[base]>); #include long long wcstoll_l(const wchar_t *__restrict <[s]>, wchar_t **__restrict <[ptr]>, int <[base]>, locale_t <[locale]>); long long _wcstoll_r(void *<[reent]>, const wchar_t *<[s]>, wchar_t **<[ptr]>, int <[base]>); DESCRIPTION The function <> converts the wide string <<*<[s]>>> to a <>. First, it breaks down the string into three parts: leading whitespace, which is ignored; a subject string consisting of characters resembling an integer in the radix specified by <[base]>; and a trailing portion consisting of zero or more unparseable characters, and always including the terminating null character. Then, it attempts to convert the subject string into a <> and returns the result. If the value of <[base]> is 0, the subject string is expected to look like a normal C integer constant: an optional sign, a possible `<<0x>>' indicating a hexadecimal base, and a number. If <[base]> is between 2 and 36, the expected form of the subject is a sequence of letters and digits representing an integer in the radix specified by <[base]>, with an optional plus or minus sign. The letters <>--<> (or, equivalently, <>--<>) are used to signify values from 10 to 35; only letters whose ascribed values are less than <[base]> are permitted. If <[base]> is 16, a leading <<0x>> is permitted. The subject sequence is the longest initial sequence of the input string that has the expected form, starting with the first non-whitespace character. If the string is empty or consists entirely of whitespace, or if the first non-whitespace character is not a permissible letter or digit, the subject string is empty. If the subject string is acceptable, and the value of <[base]> is zero, <> attempts to determine the radix from the input string. A string with a leading <<0x>> is treated as a hexadecimal value; a string with a leading 0 and no <> is treated as octal; all other strings are treated as decimal. If <[base]> is between 2 and 36, it is used as the conversion radix, as described above. If the subject string begins with a minus sign, the value is negated. Finally, a pointer to the first character past the converted subject string is stored in <[ptr]>, if <[ptr]> is not <>. If the subject string is empty (or not in acceptable form), no conversion is performed and the value of <[s]> is stored in <[ptr]> (if <[ptr]> is not <>). The alternate function <<_wcstoll_r>> is a reentrant version. The extra argument <[reent]> is a pointer to a reentrancy structure. <> is like <> but performs the conversion based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS <>, <> return the converted value, if any. If no conversion was made, 0 is returned. <>, <> return <> or <> if the magnitude of the converted value is too large, and sets <> to <>. PORTABILITY <> is ANSI. <> is a GNU extension. No supporting OS subroutines are required. */ /*- * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _GNU_SOURCE #include <_ansi.h> #include #include #include #include #include "../locale/setlocale.h" /* * Convert a wide string to a long long integer. */ #ifndef _REENT_ONLY long long wcstoll_l (const wchar_t *nptr, wchar_t **endptr, int base, locale_t loc) { register const wchar_t *s = nptr; register unsigned long long acc; register wchar_t c; register unsigned long long cutoff; register int neg = 0, any, cutlim; /* * Skip white space and pick up leading +/- sign if any. * If base is 0, allow 0x for hex and 0 for octal, else * assume decimal; if base is already 16, allow 0x. */ do { c = *s++; } while (iswspace_l(c, loc)); if (c == L'-') { neg = 1; c = *s++; } else if (c == L'+') c = *s++; if ((base == 0 || base == 16) && c == L'0' && (*s == L'x' || *s == L'X')) { c = s[1]; s += 2; base = 16; } if (base == 0) base = c == L'0' ? 8 : 10; /* * Compute the cutoff value between legal numbers and illegal * numbers. That is the largest legal value, divided by the * base. An input number that is greater than this value, if * followed by a legal input character, is too big. One that * is equal to this value may be valid or not; the limit * between valid and invalid numbers is then based on the last * digit. For instance, if the range for longs is * [-2147483648..2147483647] and the input base is 10, * cutoff will be set to 214748364 and cutlim to either * 7 (neg==0) or 8 (neg==1), meaning that if we have accumulated * a value > 214748364, or equal but the next digit is > 7 (or 8), * the number is too big, and we will return a range error. * * Set any if any `digits' consumed; make it negative to indicate * overflow. */ cutoff = neg ? -(unsigned long long)LLONG_MIN : LLONG_MAX; cutlim = cutoff % (unsigned long long)base; cutoff /= (unsigned long long)base; for (acc = 0, any = 0;; c = *s++) { if (c >= L'0' && c <= L'9') c -= L'0'; else if (c >= L'A' && c <= L'Z') c -= L'A' - 10; else if (c >= L'a' && c <= L'z') c -= L'a' - 10; else break; if ((int) c >= base) break; if (any < 0 || acc > cutoff || (acc == cutoff && (int) c > cutlim)) any = -1; else { any = 1; acc *= base; acc += (int) c; } } if (any < 0) { acc = neg ? LLONG_MIN : LLONG_MAX; __errno_r(rptr) = ERANGE; } else if (neg) acc = -acc; if (endptr != 0) *endptr = (wchar_t *) (any ? s - 1 : nptr); return (acc); } long long wcstoll (const wchar_t *__restrict s, wchar_t **__restrict ptr, int base) { return wcstoll_l (s, ptr, base, __get_current_locale ()); } #endif picolibc-1.7.4/newlib/libc/stdlib/wcstoll_r.c000066400000000000000000000027441414576234500211570ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* dummy */ picolibc-1.7.4/newlib/libc/stdlib/wcstombs.c000066400000000000000000000052271414576234500210070ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ /* FUNCTION <>---minimal wide char string to multibyte string converter INDEX wcstombs SYNOPSIS #include size_t wcstombs(char *restrict <[s]>, const wchar_t *restrict <[pwc]>, size_t <[n]>); DESCRIPTION When _MB_CAPABLE is not defined, this is a minimal ANSI-conforming implementation of <>. In this case, all wide-characters are expected to represent single bytes and so are converted simply by casting to char. When _MB_CAPABLE is defined, this routine uses a state variable to allow state dependent decoding. The result is based on the locale setting which may be restricted to a defined set of locales. RETURNS This implementation of <> returns <<0>> if <[s]> is <> or is the empty string; it returns <<-1>> if _MB_CAPABLE and one of the wide-char characters does not represent a valid multi-byte character; otherwise it returns the minimum of: <> or the number of bytes that are transferred to <>, not including the nul terminator. If the return value is -1, the state of the <> string is indeterminate. If the input has a length of 0, the output string will be modified to contain a wchar_t nul terminator if <> > 0. PORTABILITY <> is required in the ANSI C standard. However, the precise effects vary with the locale. <> requires no supporting OS subroutines. */ #ifndef _REENT_ONLY #include #include #include #include "local.h" size_t wcstombs (char *__restrict s, const wchar_t *__restrict pwcs, size_t n) { #ifdef _MB_CAPABLE mbstate_t state; state.__count = 0; char *ptr = s; size_t max = n; char buff[8]; int i, bytes, num_to_copy; if (s == NULL) { size_t num_bytes = 0; while (*pwcs != 0) { bytes = __WCTOMB (buff, *pwcs++, &state); if (bytes == -1) return -1; num_bytes += bytes; } return num_bytes; } else { while (n > 0) { bytes = __WCTOMB (buff, *pwcs, &state); if (bytes == -1) return -1; num_to_copy = (n > (size_t) bytes ? bytes : (int)n); for (i = 0; i < num_to_copy; ++i) *ptr++ = buff[i]; if (*pwcs == 0x00) return ptr - s - (n >= (size_t) bytes); ++pwcs; n -= num_to_copy; } return max; } #else /* not _MB_CAPABLE */ int count = 0; if (n != 0) { do { if ((*s++ = (char) *pwcs++) == 0) break; count++; } while (--n != 0); } return count; #endif /* not _MB_CAPABLE */ } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/wcstoul.c000066400000000000000000000151221414576234500206410ustar00rootroot00000000000000/* FUNCTION <>, <>---wide string to unsigned long INDEX wcstoul INDEX wcstoul_l INDEX _wcstoul_r SYNOPSIS #include unsigned long wcstoul(const wchar_t *__restrict <[s]>, wchar_t **__restrict <[ptr]>, int <[base]>); #include unsigned long wcstoul_l(const wchar_t *__restrict <[s]>, wchar_t **__restrict <[ptr]>, int <[base]>, locale_t <[locale]>); unsigned long _wcstoul_r(void *<[reent]>, const wchar_t *<[s]>, wchar_t **<[ptr]>, int <[base]>); DESCRIPTION The function <> converts the wide string <<*<[s]>>> to an <>. First, it breaks down the string into three parts: leading whitespace, which is ignored; a subject string consisting of the digits meaningful in the radix specified by <[base]> (for example, <<0>> through <<7>> if the value of <[base]> is 8); and a trailing portion consisting of one or more unparseable characters, which always includes the terminating null character. Then, it attempts to convert the subject string into an unsigned long integer, and returns the result. If the value of <[base]> is zero, the subject string is expected to look like a normal C integer constant (save that no optional sign is permitted): a possible <<0x>> indicating hexadecimal radix, and a number. If <[base]> is between 2 and 36, the expected form of the subject is a sequence of digits (which may include letters, depending on the base) representing an integer in the radix specified by <[base]>. The letters <>--<> (or <>--<>) are used as digits valued from 10 to 35. If <[base]> is 16, a leading <<0x>> is permitted. The subject sequence is the longest initial sequence of the input string that has the expected form, starting with the first non-whitespace character. If the string is empty or consists entirely of whitespace, or if the first non-whitespace character is not a permissible digit, the subject string is empty. If the subject string is acceptable, and the value of <[base]> is zero, <> attempts to determine the radix from the input string. A string with a leading <<0x>> is treated as a hexadecimal value; a string with a leading <<0>> and no <> is treated as octal; all other strings are treated as decimal. If <[base]> is between 2 and 36, it is used as the conversion radix, as described above. Finally, a pointer to the first character past the converted subject string is stored in <[ptr]>, if <[ptr]> is not <>. If the subject string is empty (that is, if <<*>><[s]> does not start with a substring in acceptable form), no conversion is performed and the value of <[s]> is stored in <[ptr]> (if <[ptr]> is not <>). The alternate function <<_wcstoul_r>> is a reentrant version. The extra argument <[reent]> is a pointer to a reentrancy structure. <> is like <> but performs the conversion based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS <>, <> return the converted value, if any. If no conversion was made, <<0>> is returned. <>, <> return <> if the magnitude of the converted value is too large, and sets <> to <>. PORTABILITY <> is ANSI. <> is a GNU extension. <> requires no supporting OS subroutines. */ /* * Copyright (c) 1990 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include #include "../locale/setlocale.h" /* * Convert a wide string to an unsigned long integer. */ #ifndef _REENT_ONLY unsigned long wcstoul_l (const wchar_t *nptr, wchar_t **endptr, int base, locale_t loc) { register const wchar_t *s = nptr; register unsigned long acc; register wchar_t c; register unsigned long cutoff; register int neg = 0, any, cutlim; /* * See strtol for comments as to the logic used. */ do { c = *s++; } while (iswspace_l(c, loc)); if (c == L'-') { neg = 1; c = *s++; } else if (c == L'+') c = *s++; if ((base == 0 || base == 16) && c == L'0' && (*s == L'x' || *s == L'X')) { c = s[1]; s += 2; base = 16; } if (base == 0) base = c == L'0' ? 8 : 10; cutoff = (unsigned long)ULONG_MAX / (unsigned long)base; cutlim = (unsigned long)ULONG_MAX % (unsigned long)base; for (acc = 0, any = 0;; c = *s++) { if (c >= L'0' && c <= L'9') c -= L'0'; else if (c >= L'A' && c <= L'Z') c -= L'A' - 10; else if (c >= L'a' && c <= L'z') c -= L'a' - 10; else break; if ((int) c >= base) break; if (any < 0 || acc > cutoff || (acc == cutoff && (int) c > cutlim)) any = -1; else { any = 1; acc *= base; acc += (unsigned long) c; } } if (any < 0) { acc = ULONG_MAX; __errno_r(rptr) = ERANGE; } else if (neg) acc = -acc; if (endptr != 0) *endptr = (wchar_t *) (any ? s - 1 : nptr); return (acc); } unsigned long wcstoul (const wchar_t *__restrict s, wchar_t **__restrict ptr, int base) { return wcstoul_l (s, ptr, base, __get_current_locale ()); } #endif picolibc-1.7.4/newlib/libc/stdlib/wcstoull.c000066400000000000000000000162031414576234500210160ustar00rootroot00000000000000/* FUNCTION <>, <>---wide string to unsigned long long INDEX wcstoull INDEX wcstoull_l INDEX _wcstoull_r SYNOPSIS #include unsigned long long wcstoull(const wchar_t *__restrict <[s]>, wchar_t **__restrict <[ptr]>, int <[base]>); #include unsigned long long wcstoull_l(const wchar_t *__restrict <[s]>, wchar_t **__restrict <[ptr]>, int <[base]>, locale_t <[locale]>); unsigned long long _wcstoull_r(void *<[reent]>, const wchar_t *<[s]>, wchar_t **<[ptr]>, int <[base]>); DESCRIPTION The function <> converts the wide string <<*<[s]>>> to an <>. First, it breaks down the string into three parts: leading whitespace, which is ignored; a subject string consisting of the digits meaningful in the radix specified by <[base]> (for example, <<0>> through <<7>> if the value of <[base]> is 8); and a trailing portion consisting of one or more unparseable characters, which always includes the terminating null character. Then, it attempts to convert the subject string into an unsigned long long integer, and returns the result. If the value of <[base]> is zero, the subject string is expected to look like a normal C integer constant: an optional sign (<<+>> or <<->>), a possible <<0x>> indicating hexadecimal radix or a possible <0> indicating octal radix, and a number. If <[base]> is between 2 and 36, the expected form of the subject is a sequence of digits (which may include letters, depending on the base) representing an integer in the radix specified by <[base]>. The letters <>--<> (or <>--<>) are used as digits valued from 10 to 35. If <[base]> is 16, a leading <<0x>> is permitted. The subject sequence is the longest initial sequence of the input string that has the expected form, starting with the first non-whitespace character. If the string is empty or consists entirely of whitespace, or if the first non-whitespace character is not a permissible digit, the subject string is empty. If the subject string is acceptable, and the value of <[base]> is zero, <> attempts to determine the radix from the input string. A string with a leading <<0x>> is treated as a hexadecimal value; a string with a leading <<0>> and no <> is treated as octal; all other strings are treated as decimal. If <[base]> is between 2 and 36, it is used as the conversion radix, as described above. Finally, a pointer to the first character past the converted subject string is stored in <[ptr]>, if <[ptr]> is not <>. If the subject string is empty (that is, if <<*>><[s]> does not start with a substring in acceptable form), no conversion is performed and the value of <[s]> is stored in <[ptr]> (if <[ptr]> is not <>). The alternate function <<_wcstoull_r>> is a reentrant version. The extra argument <[reent]> is a pointer to a reentrancy structure. <> is like <> but performs the conversion based on the locale specified by the locale object locale. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS <>, <> return <<0>> and sets <> to <> if the value of <[base]> is not supported. <>, <> return the converted value, if any. If no conversion was made, <<0>> is returned. <>, <> return <> if the magnitude of the converted value is too large, and sets <> to <>. PORTABILITY <> is ANSI. <> is a GNU extension. <> requires no supporting OS subroutines. */ /* * Copyright (c) 1990 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _GNU_SOURCE #include <_ansi.h> #include #include #include #include #include "../locale/setlocale.h" /* Make up for older non-compliant limits.h. (This is a C99/POSIX function, * and both require ULLONG_MAX in limits.h.) */ #if !defined(ULLONG_MAX) # define ULLONG_MAX ULONG_LONG_MAX #endif /* * Convert a wide string to an unsigned long long integer. */ #ifndef _REENT_ONLY unsigned long long wcstoull_l (const wchar_t *nptr, wchar_t **endptr, int base, locale_t loc) { register const wchar_t *s = nptr; register unsigned long long acc; register wchar_t c; register unsigned long long cutoff; register int neg = 0, any, cutlim; if(base < 0 || base == 1 || base > 36) { __errno_r(rptr) = EINVAL; return(0ULL); } /* * See strtol for comments as to the logic used. */ do { c = *s++; } while (iswspace_l(c, loc)); if (c == L'-') { neg = 1; c = *s++; } else if (c == L'+') c = *s++; if ((base == 0 || base == 16) && c == L'0' && (*s == L'x' || *s == L'X')) { c = s[1]; s += 2; base = 16; } if (base == 0) base = c == L'0' ? 8 : 10; cutoff = (unsigned long long)ULLONG_MAX / (unsigned long long)base; cutlim = (unsigned long long)ULLONG_MAX % (unsigned long long)base; for (acc = 0, any = 0;; c = *s++) { if (c >= L'0' && c <= L'9') c -= L'0'; else if (c >= L'A' && c <= L'Z') c -= L'A' - 10; else if (c >= L'a' && c <= L'z') c -= L'a' - 10; else break; if ((int) c >= base) break; if (any < 0 || acc > cutoff || (acc == cutoff && (int) c > cutlim)) any = -1; else { any = 1; acc *= base; acc += (unsigned long long) c; } } if (any < 0) { acc = ULLONG_MAX; __errno_r(rptr) = ERANGE; } else if (neg) acc = -acc; if (endptr != 0) *endptr = (wchar_t *) (any ? s - 1 : nptr); return (acc); } unsigned long long wcstoull (const wchar_t *__restrict s, wchar_t **__restrict ptr, int base) { return wcstoull_l (s, ptr, base, __get_current_locale ()); } #endif picolibc-1.7.4/newlib/libc/stdlib/wcstoull_r.c000066400000000000000000000027441414576234500213440ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* dummy */ picolibc-1.7.4/newlib/libc/stdlib/wcstoumax.c000066400000000000000000000076121414576234500212000ustar00rootroot00000000000000/*- * Copyright (c) 1992, 1993 * The Regents of the University of California. All rights reserved. * * Copyright (c) 2011 The FreeBSD Foundation * All rights reserved. * Portions of this software were developed by David Chisnall * under sponsorship from the FreeBSD Foundation. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _DEFAULT_SOURCE #include #if 0 #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "from @(#)strtoul.c 8.1 (Berkeley) 6/4/93"; #endif /* LIBC_SCCS and not lint */ __FBSDID("FreeBSD: src/lib/libc/stdlib/strtoumax.c,v 1.8 2002/09/06 11:23:59 tjr Exp "); #endif __FBSDID("$FreeBSD: head/lib/libc/locale/wcstoumax.c 314436 2017-02-28 23:42:47Z imp $"); #include #include #include #include #include #include #include "../locale/setlocale.h" /* * Convert a wide character string to a uintmax_t integer. */ #ifndef _REENT_ONLY uintmax_t wcstoumax_l(const wchar_t * __restrict nptr, wchar_t ** __restrict endptr, int base, locale_t loc) { const wchar_t *s = nptr; uintmax_t acc; wchar_t c; uintmax_t cutoff; int neg = 0, any, cutlim; /* * See strtoimax for comments as to the logic used. */ do { c = *s++; } while (iswspace_l(c, loc)); if (c == L'-') { neg = 1; c = *s++; } else { neg = 0; if (c == L'+') c = *s++; } if ((base == 0 || base == 16) && c == L'0' && (*s == L'x' || *s == L'X')) { c = s[1]; s += 2; base = 16; } if (base == 0) base = c == L'0' ? 8 : 10; acc = any = 0; if (base < 2 || base > 36) goto noconv; cutoff = UINTMAX_MAX / base; cutlim = UINTMAX_MAX % base; for ( ; ; c = *s++) { #ifdef notyet if (iswdigit_l(c, loc)) c = digittoint_l(c, loc); else #endif if (c >= L'0' && c <= L'9') c -= L'0'; else if (c >= L'A' && c <= L'Z') c -= L'A' - 10; else if (c >= L'a' && c <= L'z') c -= L'a' - 10; else break; if ((int) c >= base) break; if (any < 0 || acc > cutoff || (acc == cutoff && (int) c > cutlim)) any = -1; else { any = 1; acc *= base; acc += (uintmax_t) c; } } if (any < 0) { acc = UINTMAX_MAX; __errno_r(rptr) = ERANGE; } else if (!any) { noconv: __errno_r(rptr) = EINVAL; } else if (neg) acc = -acc; if (endptr != NULL) *endptr = (wchar_t *)(any ? s - 1 : nptr); return (acc); } uintmax_t wcstoumax(const wchar_t* __restrict nptr, wchar_t** __restrict endptr, int base) { return wcstoumax_l(nptr, endptr, base, __get_current_locale()); } #endif picolibc-1.7.4/newlib/libc/stdlib/wctob.c000066400000000000000000000006421414576234500202600ustar00rootroot00000000000000/* Copyright (c) 2002 Thomas Fitzsimmons */ #include #include #include #include #include "local.h" int wctob (wint_t wc) { mbstate_t mbs; unsigned char pmb[MB_LEN_MAX]; if (wc == WEOF) return EOF; /* Put mbs in initial state. */ memset (&mbs, '\0', sizeof (mbs)); return __WCTOMB ((char *) pmb, wc, &mbs) == 1 ? (int) pmb[0] : EOF; } picolibc-1.7.4/newlib/libc/stdlib/wctomb.c000066400000000000000000000036011414576234500204330ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ /* FUNCTION <>---minimal wide char to multibyte converter INDEX wctomb SYNOPSIS #include int wctomb(char *<[s]>, wchar_t <[wchar]>); DESCRIPTION When _MB_CAPABLE is not defined, this is a minimal ANSI-conforming implementation of <>. The only ``wide characters'' recognized are single bytes, and they are ``converted'' to themselves. When _MB_CAPABLE is defined, this routine calls <<_wctomb_r>> to perform the conversion, passing a state variable to allow state dependent decoding. The result is based on the locale setting which may be restricted to a defined set of locales. Each call to <> modifies <<*<[s]>>> unless <[s]> is a null pointer or _MB_CAPABLE is defined and <[wchar]> is invalid. RETURNS This implementation of <> returns <<0>> if <[s]> is <>; it returns <<-1>> if _MB_CAPABLE is enabled and the wchar is not a valid multi-byte character, it returns <<1>> if _MB_CAPABLE is not defined or the wchar is in reality a single byte character, otherwise it returns the number of bytes in the multi-byte character. PORTABILITY <> is required in the ANSI C standard. However, the precise effects vary with the locale. <> requires no supporting OS subroutines. */ #ifndef _REENT_ONLY #include #include #include #include "local.h" int wctomb (char *s, wchar_t wchar) { #ifdef _MB_CAPABLE static NEWLIB_THREAD_LOCAL mbstate_t _wctomb_state; return __WCTOMB (s, wchar, &_wctomb_state); #else /* not _MB_CAPABLE */ if (s == NULL) return 0; /* Verify that wchar is a valid single-byte character. */ if ((size_t)wchar >= 0x100) { errno = EILSEQ; return -1; } *s = (char) wchar; return 1; #endif /* not _MB_CAPABLE */ } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdlib/wctomb_r.c000066400000000000000000000327201414576234500207600ustar00rootroot00000000000000/* Copyright (c) 1990 Regents of the University of California. All rights reserved. */ #include #include #include #include #include #include "mbctype.h" #include "local.h" int __ascii_wctomb ( char *s, wchar_t _wchar, mbstate_t *state) { /* Avoids compiler warnings about comparisons that are always false due to limited range when sizeof(wchar_t) is 2 but sizeof(wint_t) is 4, as is the case on cygwin. */ wint_t wchar = _wchar; (void) state; if (s == NULL) return 0; #ifdef __CYGWIN__ if ((size_t)wchar >= 0x80) #else if ((size_t)wchar >= 0x100) #endif { __errno_r(r) = EILSEQ; return -1; } *s = (char) wchar; return 1; } #ifdef _MB_CAPABLE /* for some conversions, we use the __count field as a place to store a state value */ #define __state __count int __utf8_wctomb ( char *s, wchar_t _wchar, mbstate_t *state) { wint_t wchar = _wchar; int ret = 0; if (s == NULL) return 0; /* UTF-8 encoding is not state-dependent */ if (sizeof (wchar_t) == 2 && state->__count == -4 && (wchar < 0xdc00 || wchar > 0xdfff)) { /* There's a leftover lone high surrogate. Write out the CESU-8 value of the surrogate and proceed to convert the given character. Note to return extra 3 bytes. */ wchar_t tmp; tmp = (state->__value.__wchb[0] << 16 | state->__value.__wchb[1] << 8) - (0x10000 >> 10 | 0xd80d); *s++ = 0xe0 | ((tmp & 0xf000) >> 12); *s++ = 0x80 | ((tmp & 0xfc0) >> 6); *s++ = 0x80 | (tmp & 0x3f); state->__count = 0; ret = 3; } if (wchar <= 0x7f) { *s = wchar; return ret + 1; } if (wchar >= 0x80 && wchar <= 0x7ff) { *s++ = 0xc0 | ((wchar & 0x7c0) >> 6); *s = 0x80 | (wchar & 0x3f); return ret + 2; } if (wchar >= 0x800 && wchar <= 0xffff) { /* No UTF-16 surrogate handling in UCS-4 */ if (sizeof (wchar_t) == 2 && wchar >= 0xd800 && wchar <= 0xdfff) { wint_t tmp; if (wchar <= 0xdbff) { /* First half of a surrogate pair. Store the state and return ret + 0. */ tmp = ((wchar & 0x3ff) << 10) + 0x10000; state->__value.__wchb[0] = (tmp >> 16) & 0xff; state->__value.__wchb[1] = (tmp >> 8) & 0xff; state->__count = -4; *s = (0xf0 | ((tmp & 0x1c0000) >> 18)); return ret; } if (state->__count == -4) { /* Second half of a surrogate pair. Reconstruct the full Unicode value and return the trailing three bytes of the UTF-8 character. */ tmp = (state->__value.__wchb[0] << 16) | (state->__value.__wchb[1] << 8) | (wchar & 0x3ff); state->__count = 0; *s++ = 0xf0 | ((tmp & 0x1c0000) >> 18); *s++ = 0x80 | ((tmp & 0x3f000) >> 12); *s++ = 0x80 | ((tmp & 0xfc0) >> 6); *s = 0x80 | (tmp & 0x3f); return 4; } /* Otherwise translate into CESU-8 value. */ } *s++ = 0xe0 | ((wchar & 0xf000) >> 12); *s++ = 0x80 | ((wchar & 0xfc0) >> 6); *s = 0x80 | (wchar & 0x3f); return ret + 3; } if (wchar >= 0x10000 && wchar <= 0x10ffff) { *s++ = 0xf0 | ((wchar & 0x1c0000) >> 18); *s++ = 0x80 | ((wchar & 0x3f000) >> 12); *s++ = 0x80 | ((wchar & 0xfc0) >> 6); *s = 0x80 | (wchar & 0x3f); return 4; } __errno_r(r) = EILSEQ; return -1; } /* Cygwin defines its own doublebyte charset conversion functions because the underlying OS requires wchar_t == UTF-16. */ #ifndef __CYGWIN__ int __sjis_wctomb ( char *s, wchar_t _wchar, mbstate_t *state) { wint_t wchar = _wchar; unsigned char char2 = (unsigned char)wchar; unsigned char char1 = (unsigned char)(wchar >> 8); (void) state; if (s == NULL) return 0; /* not state-dependent */ if (char1 != 0x00) { /* first byte is non-zero..validate multi-byte char */ if (_issjis1(char1) && _issjis2(char2)) { *s++ = (char)char1; *s = (char)char2; return 2; } else { __errno_r(r) = EILSEQ; return -1; } } *s = (char) wchar; return 1; } int __eucjp_wctomb ( char *s, wchar_t _wchar, mbstate_t *state) { wint_t wchar = _wchar; unsigned char char2 = (unsigned char)wchar; unsigned char char1 = (unsigned char)(wchar >> 8); (void) state; if (s == NULL) return 0; /* not state-dependent */ if (char1 != 0x00) { /* first byte is non-zero..validate multi-byte char */ if (_iseucjp1 (char1) && _iseucjp2 (char2)) { *s++ = (char)char1; *s = (char)char2; return 2; } else if (_iseucjp2 (char1) && _iseucjp2 (char2 | 0x80)) { *s++ = (char)0x8f; *s++ = (char)char1; *s = (char)(char2 | 0x80); return 3; } else { __errno_r(r) = EILSEQ; return -1; } } *s = (char) wchar; return 1; } int __jis_wctomb ( char *s, wchar_t _wchar, mbstate_t *state) { wint_t wchar = _wchar; int cnt = 0; unsigned char char2 = (unsigned char)wchar; unsigned char char1 = (unsigned char)(wchar >> 8); if (s == NULL) return 1; /* state-dependent */ if (char1 != 0x00) { /* first byte is non-zero..validate multi-byte char */ if (_isjis (char1) && _isjis (char2)) { if (state->__state == 0) { /* must switch from ASCII to JIS state */ state->__state = 1; *s++ = ESC_CHAR; *s++ = '$'; *s++ = 'B'; cnt = 3; } *s++ = (char)char1; *s = (char)char2; return cnt + 2; } __errno_r(r) = EILSEQ; return -1; } if (state->__state != 0) { /* must switch from JIS to ASCII state */ state->__state = 0; *s++ = ESC_CHAR; *s++ = '('; *s++ = 'B'; cnt = 3; } *s = (char)char2; return cnt + 1; } #endif /* !__CYGWIN__ */ #ifdef _MB_EXTENDED_CHARSETS_ISO static int ___iso_wctomb (char *s, wchar_t _wchar, int iso_idx, mbstate_t *state) { wint_t wchar = _wchar; if (s == NULL) return 0; /* wchars <= 0x9f translate to all ISO charsets directly. */ if (wchar >= 0xa0) { if (iso_idx >= 0) { unsigned char mb; for (mb = 0; mb < 0x60; ++mb) if (__iso_8859_conv[iso_idx][mb] == wchar) { *s = (char) (mb + 0xa0); return 1; } __errno_r(r) = EILSEQ; return -1; } } if ((size_t)wchar >= 0x100) { __errno_r(r) = EILSEQ; return -1; } *s = (char) wchar; return 1; } int __iso_8859_1_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___iso_wctomb (s, _wchar, -1, state); } int __iso_8859_2_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___iso_wctomb (s, _wchar, 0, state); } int __iso_8859_3_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___iso_wctomb (s, _wchar, 1, state); } int __iso_8859_4_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___iso_wctomb (s, _wchar, 2, state); } int __iso_8859_5_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___iso_wctomb (s, _wchar, 3, state); } int __iso_8859_6_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___iso_wctomb (s, _wchar, 4, state); } int __iso_8859_7_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___iso_wctomb (s, _wchar, 5, state); } int __iso_8859_8_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___iso_wctomb (s, _wchar, 6, state); } int __iso_8859_9_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___iso_wctomb (s, _wchar, 7, state); } int __iso_8859_10_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___iso_wctomb (s, _wchar, 8, state); } int __iso_8859_11_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___iso_wctomb (s, _wchar, 9, state); } int __iso_8859_13_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___iso_wctomb (s, _wchar, 10, state); } int __iso_8859_14_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___iso_wctomb (s, _wchar, 11, state); } int __iso_8859_15_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___iso_wctomb (s, _wchar, 12, state); } int __iso_8859_16_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___iso_wctomb (s, _wchar, 13, state); } static wctomb_p __iso_8859_wctomb[17] = { NULL, __iso_8859_1_wctomb, __iso_8859_2_wctomb, __iso_8859_3_wctomb, __iso_8859_4_wctomb, __iso_8859_5_wctomb, __iso_8859_6_wctomb, __iso_8859_7_wctomb, __iso_8859_8_wctomb, __iso_8859_9_wctomb, __iso_8859_10_wctomb, __iso_8859_11_wctomb, NULL, /* No ISO 8859-12 */ __iso_8859_13_wctomb, __iso_8859_14_wctomb, __iso_8859_15_wctomb, __iso_8859_16_wctomb }; /* val *MUST* be valid! All checks for validity are supposed to be performed before calling this function. */ wctomb_p __iso_wctomb (int val) { return __iso_8859_wctomb[val]; } #endif /* _MB_EXTENDED_CHARSETS_ISO */ #ifdef _MB_EXTENDED_CHARSETS_WINDOWS static int ___cp_wctomb (char *s, wchar_t _wchar, int cp_idx, mbstate_t *state) { wint_t wchar = _wchar; if (s == NULL) return 0; if (wchar >= 0x80) { if (cp_idx >= 0) { unsigned char mb; for (mb = 0; mb < 0x80; ++mb) if (__cp_conv[cp_idx][mb] == wchar) { *s = (char) (mb + 0x80); return 1; } __errno_r(r) = EILSEQ; return -1; } } if ((size_t)wchar >= 0x100) { __errno_r(r) = EILSEQ; return -1; } *s = (char) wchar; return 1; } static int __cp_437_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___cp_wctomb (s, _wchar, 0, state); } static int __cp_720_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___cp_wctomb (s, _wchar, 1, state); } static int __cp_737_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___cp_wctomb (s, _wchar, 2, state); } static int __cp_775_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___cp_wctomb (s, _wchar, 3, state); } static int __cp_850_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___cp_wctomb (s, _wchar, 4, state); } static int __cp_852_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___cp_wctomb (s, _wchar, 5, state); } static int __cp_855_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___cp_wctomb (s, _wchar, 6, state); } static int __cp_857_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___cp_wctomb (s, _wchar, 7, state); } static int __cp_858_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___cp_wctomb (s, _wchar, 8, state); } static int __cp_862_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___cp_wctomb (s, _wchar, 9, state); } static int __cp_866_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___cp_wctomb (s, _wchar, 10, state); } static int __cp_874_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___cp_wctomb (s, _wchar, 11, state); } static int __cp_1125_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___cp_wctomb (s, _wchar, 12, state); } static int __cp_1250_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___cp_wctomb (s, _wchar, 13, state); } static int __cp_1251_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___cp_wctomb (s, _wchar, 14, state); } static int __cp_1252_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___cp_wctomb (s, _wchar, 15, state); } static int __cp_1253_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___cp_wctomb (s, _wchar, 16, state); } static int __cp_1254_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___cp_wctomb (s, _wchar, 17, state); } static int __cp_1255_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___cp_wctomb (s, _wchar, 18, state); } static int __cp_1256_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___cp_wctomb (s, _wchar, 19, state); } static int __cp_1257_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___cp_wctomb (s, _wchar, 20, state); } static int __cp_1258_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___cp_wctomb (s, _wchar, 21, state); } static int __cp_20866_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___cp_wctomb (s, _wchar, 22, state); } static int __cp_21866_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___cp_wctomb (s, _wchar, 23, state); } static int __cp_101_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___cp_wctomb (s, _wchar, 24, state); } static int __cp_102_wctomb (char *s, wchar_t _wchar, mbstate_t *state) { return ___cp_wctomb (s, _wchar, 25, state); } static wctomb_p __cp_xxx_wctomb[26] = { __cp_437_wctomb, __cp_720_wctomb, __cp_737_wctomb, __cp_775_wctomb, __cp_850_wctomb, __cp_852_wctomb, __cp_855_wctomb, __cp_857_wctomb, __cp_858_wctomb, __cp_862_wctomb, __cp_866_wctomb, __cp_874_wctomb, __cp_1125_wctomb, __cp_1250_wctomb, __cp_1251_wctomb, __cp_1252_wctomb, __cp_1253_wctomb, __cp_1254_wctomb, __cp_1255_wctomb, __cp_1256_wctomb, __cp_1257_wctomb, __cp_1258_wctomb, __cp_20866_wctomb, __cp_21866_wctomb, __cp_101_wctomb, __cp_102_wctomb }; /* val *MUST* be valid! All checks for validity are supposed to be performed before calling this function. */ wctomb_p __cp_wctomb (int val) { return __cp_xxx_wctomb[__cp_val_index (val)]; } #endif /* _MB_EXTENDED_CHARSETS_WINDOWS */ #endif /* _MB_CAPABLE */ picolibc-1.7.4/newlib/libc/string/000077500000000000000000000000001414576234500170215ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/string/WIDTH-A000066400000000000000000000170541414576234500200100ustar00rootroot00000000000000# This file is automatically generated # UAX #11: East Asian Ambiguous # Plane 00 # Rows Positions (Cells) 00 A1 A4 A7-A8 AA AD-AE B0-B4 B6-BA BC-BF C6 D0 D7-D8 DE-E1 E6 E8-EA 00 EC-ED F0 F2-F3 F7-FA FC FE 01 01 11 13 1B 26-27 2B 31-33 38 3F-42 44 48-4B 4D 52-53 66-67 6B 01 CE D0 D2 D4 D6 D8 DA DC 02 51 61 C4 C7 C9-CB CD D0 D8-DB DD DF 03 00-6F 91-A1 A3-A9 B1-C1 C3-C9 04 01 10-4F 51 20 10 13-16 18-19 1C-1D 20-22 24-27 30 32-33 35 3B 3E 74 7F 81-84 20 AC 21 03 05 09 13 16 21-22 26 2B 53-54 5B-5E 60-6B 70-79 89 90-99 B8-B9 21 D2 D4 E7 22 00 02-03 07-08 0B 0F 11 15 1A 1D-20 23 25 27-2C 2E 34-37 3C-3D 22 48 4C 52 60-61 64-67 6A-6B 6E-6F 82-83 86-87 95 99 A5 BF 23 12 24 60-E9 EB-FF 25 00-4B 50-73 80-8F 92-95 A0-A1 A3-A9 B2-B3 B6-B7 BC-BD C0-C1 C6-C8 25 CB CE-D1 E2-E5 EF 26 05-06 09 0E-0F 1C 1E 40 42 60-61 63-65 67-6A 6C-6D 6F 9E-9F BF 26 C6-CD CF-D3 D5-E1 E3 E8-E9 EB-F1 F4 F6-F9 FB-FC FE-FF 27 3D 76-7F 2B 56-59 32 48-4F E0 00-FF E1 00-FF E2 00-FF E3 00-FF E4 00-FF E5 00-FF E6 00-FF E7 00-FF E8 00-FF E9 00-FF EA 00-FF EB 00-FF EC 00-FF ED 00-FF EE 00-FF EF 00-FF F0 00-FF F1 00-FF F2 00-FF F3 00-FF F4 00-FF F5 00-FF F6 00-FF F7 00-FF F8 00-FF FE 00-0F FF FD 1F1 00-0A 10-2D 30-69 70-8D 8F-90 9B-AC E01 00-EF F00 00-FF F01 00-FF F02 00-FF F03 00-FF F04 00-FF F05 00-FF F06 00-FF F07 00-FF F08 00-FF F09 00-FF F0A 00-FF F0B 00-FF F0C 00-FF F0D 00-FF F0E 00-FF F0F 00-FF F10 00-FF F11 00-FF F12 00-FF F13 00-FF F14 00-FF F15 00-FF F16 00-FF F17 00-FF F18 00-FF F19 00-FF F1A 00-FF F1B 00-FF F1C 00-FF F1D 00-FF F1E 00-FF F1F 00-FF F20 00-FF F21 00-FF F22 00-FF F23 00-FF F24 00-FF F25 00-FF F26 00-FF F27 00-FF F28 00-FF F29 00-FF F2A 00-FF F2B 00-FF F2C 00-FF F2D 00-FF F2E 00-FF F2F 00-FF F30 00-FF F31 00-FF F32 00-FF F33 00-FF F34 00-FF F35 00-FF F36 00-FF F37 00-FF F38 00-FF F39 00-FF F3A 00-FF F3B 00-FF F3C 00-FF F3D 00-FF F3E 00-FF F3F 00-FF F40 00-FF F41 00-FF F42 00-FF F43 00-FF F44 00-FF F45 00-FF F46 00-FF F47 00-FF F48 00-FF F49 00-FF F4A 00-FF F4B 00-FF F4C 00-FF F4D 00-FF F4E 00-FF F4F 00-FF F50 00-FF F51 00-FF F52 00-FF F53 00-FF F54 00-FF F55 00-FF F56 00-FF F57 00-FF F58 00-FF F59 00-FF F5A 00-FF F5B 00-FF F5C 00-FF F5D 00-FF F5E 00-FF F5F 00-FF F60 00-FF F61 00-FF F62 00-FF F63 00-FF F64 00-FF F65 00-FF F66 00-FF F67 00-FF F68 00-FF F69 00-FF F6A 00-FF F6B 00-FF F6C 00-FF F6D 00-FF F6E 00-FF F6F 00-FF F70 00-FF F71 00-FF F72 00-FF F73 00-FF F74 00-FF F75 00-FF F76 00-FF F77 00-FF F78 00-FF F79 00-FF F7A 00-FF F7B 00-FF F7C 00-FF F7D 00-FF F7E 00-FF F7F 00-FF F80 00-FF F81 00-FF F82 00-FF F83 00-FF F84 00-FF F85 00-FF F86 00-FF F87 00-FF F88 00-FF F89 00-FF F8A 00-FF F8B 00-FF F8C 00-FF F8D 00-FF F8E 00-FF F8F 00-FF F90 00-FF F91 00-FF F92 00-FF F93 00-FF F94 00-FF F95 00-FF F96 00-FF F97 00-FF F98 00-FF F99 00-FF F9A 00-FF F9B 00-FF F9C 00-FF F9D 00-FF F9E 00-FF F9F 00-FF FA0 00-FF FA1 00-FF FA2 00-FF FA3 00-FF FA4 00-FF FA5 00-FF FA6 00-FF FA7 00-FF FA8 00-FF FA9 00-FF FAA 00-FF FAB 00-FF FAC 00-FF FAD 00-FF FAE 00-FF FAF 00-FF FB0 00-FF FB1 00-FF FB2 00-FF FB3 00-FF FB4 00-FF FB5 00-FF FB6 00-FF FB7 00-FF FB8 00-FF FB9 00-FF FBA 00-FF FBB 00-FF FBC 00-FF FBD 00-FF FBE 00-FF FBF 00-FF FC0 00-FF FC1 00-FF FC2 00-FF FC3 00-FF FC4 00-FF FC5 00-FF FC6 00-FF FC7 00-FF FC8 00-FF FC9 00-FF FCA 00-FF FCB 00-FF FCC 00-FF FCD 00-FF FCE 00-FF FCF 00-FF FD0 00-FF FD1 00-FF FD2 00-FF FD3 00-FF FD4 00-FF FD5 00-FF FD6 00-FF FD7 00-FF FD8 00-FF FD9 00-FF FDA 00-FF FDB 00-FF FDC 00-FF FDD 00-FF FDE 00-FF FDF 00-FF FE0 00-FF FE1 00-FF FE2 00-FF FE3 00-FF FE4 00-FF FE5 00-FF FE6 00-FF FE7 00-FF FE8 00-FF FE9 00-FF FEA 00-FF FEB 00-FF FEC 00-FF FED 00-FF FEE 00-FF FEF 00-FF FF0 00-FF FF1 00-FF FF2 00-FF FF3 00-FF FF4 00-FF FF5 00-FF FF6 00-FF FF7 00-FF FF8 00-FF FF9 00-FF FFA 00-FF FFB 00-FF FFC 00-FF FFD 00-FF FFE 00-FF FFF 00-FD 1000 00-FF 1001 00-FF 1002 00-FF 1003 00-FF 1004 00-FF 1005 00-FF 1006 00-FF 1007 00-FF 1008 00-FF 1009 00-FF 100A 00-FF 100B 00-FF 100C 00-FF 100D 00-FF 100E 00-FF 100F 00-FF 1010 00-FF 1011 00-FF 1012 00-FF 1013 00-FF 1014 00-FF 1015 00-FF 1016 00-FF 1017 00-FF 1018 00-FF 1019 00-FF 101A 00-FF 101B 00-FF 101C 00-FF 101D 00-FF 101E 00-FF 101F 00-FF 1020 00-FF 1021 00-FF 1022 00-FF 1023 00-FF 1024 00-FF 1025 00-FF 1026 00-FF 1027 00-FF 1028 00-FF 1029 00-FF 102A 00-FF 102B 00-FF 102C 00-FF 102D 00-FF 102E 00-FF 102F 00-FF 1030 00-FF 1031 00-FF 1032 00-FF 1033 00-FF 1034 00-FF 1035 00-FF 1036 00-FF 1037 00-FF 1038 00-FF 1039 00-FF 103A 00-FF 103B 00-FF 103C 00-FF 103D 00-FF 103E 00-FF 103F 00-FF 1040 00-FF 1041 00-FF 1042 00-FF 1043 00-FF 1044 00-FF 1045 00-FF 1046 00-FF 1047 00-FF 1048 00-FF 1049 00-FF 104A 00-FF 104B 00-FF 104C 00-FF 104D 00-FF 104E 00-FF 104F 00-FF 1050 00-FF 1051 00-FF 1052 00-FF 1053 00-FF 1054 00-FF 1055 00-FF 1056 00-FF 1057 00-FF 1058 00-FF 1059 00-FF 105A 00-FF 105B 00-FF 105C 00-FF 105D 00-FF 105E 00-FF 105F 00-FF 1060 00-FF 1061 00-FF 1062 00-FF 1063 00-FF 1064 00-FF 1065 00-FF 1066 00-FF 1067 00-FF 1068 00-FF 1069 00-FF 106A 00-FF 106B 00-FF 106C 00-FF 106D 00-FF 106E 00-FF 106F 00-FF 1070 00-FF 1071 00-FF 1072 00-FF 1073 00-FF 1074 00-FF 1075 00-FF 1076 00-FF 1077 00-FF 1078 00-FF 1079 00-FF 107A 00-FF 107B 00-FF 107C 00-FF 107D 00-FF 107E 00-FF 107F 00-FF 1080 00-FF 1081 00-FF 1082 00-FF 1083 00-FF 1084 00-FF 1085 00-FF 1086 00-FF 1087 00-FF 1088 00-FF 1089 00-FF 108A 00-FF 108B 00-FF 108C 00-FF 108D 00-FF 108E 00-FF 108F 00-FF 1090 00-FF 1091 00-FF 1092 00-FF 1093 00-FF 1094 00-FF 1095 00-FF 1096 00-FF 1097 00-FF 1098 00-FF 1099 00-FF 109A 00-FF 109B 00-FF 109C 00-FF 109D 00-FF 109E 00-FF 109F 00-FF 10A0 00-FF 10A1 00-FF 10A2 00-FF 10A3 00-FF 10A4 00-FF 10A5 00-FF 10A6 00-FF 10A7 00-FF 10A8 00-FF 10A9 00-FF 10AA 00-FF 10AB 00-FF 10AC 00-FF 10AD 00-FF 10AE 00-FF 10AF 00-FF 10B0 00-FF 10B1 00-FF 10B2 00-FF 10B3 00-FF 10B4 00-FF 10B5 00-FF 10B6 00-FF 10B7 00-FF 10B8 00-FF 10B9 00-FF 10BA 00-FF 10BB 00-FF 10BC 00-FF 10BD 00-FF 10BE 00-FF 10BF 00-FF 10C0 00-FF 10C1 00-FF 10C2 00-FF 10C3 00-FF 10C4 00-FF 10C5 00-FF 10C6 00-FF 10C7 00-FF 10C8 00-FF 10C9 00-FF 10CA 00-FF 10CB 00-FF 10CC 00-FF 10CD 00-FF 10CE 00-FF 10CF 00-FF 10D0 00-FF 10D1 00-FF 10D2 00-FF 10D3 00-FF 10D4 00-FF 10D5 00-FF 10D6 00-FF 10D7 00-FF 10D8 00-FF 10D9 00-FF 10DA 00-FF 10DB 00-FF 10DC 00-FF 10DD 00-FF 10DE 00-FF 10DF 00-FF 10E0 00-FF 10E1 00-FF 10E2 00-FF 10E3 00-FF 10E4 00-FF 10E5 00-FF 10E6 00-FF 10E7 00-FF 10E8 00-FF 10E9 00-FF 10EA 00-FF 10EB 00-FF 10EC 00-FF 10ED 00-FF 10EE 00-FF 10EF 00-FF 10F0 00-FF 10F1 00-FF 10F2 00-FF 10F3 00-FF 10F4 00-FF 10F5 00-FF 10F6 00-FF 10F7 00-FF 10F8 00-FF 10F9 00-FF 10FA 00-FF 10FB 00-FF 10FC 00-FF 10FD 00-FF 10FE 00-FF 10FF 00-FD picolibc-1.7.4/newlib/libc/string/ambiguous.t000066400000000000000000000071671414576234500212140ustar00rootroot00000000000000/* This file is automatically generated */ { { 0x00A1, 0x00A1 }, { 0x00A4, 0x00A4 }, { 0x00A7, 0x00A8 }, { 0x00AA, 0x00AA }, { 0x00AE, 0x00AE }, { 0x00B0, 0x00B4 }, { 0x00B6, 0x00BA }, { 0x00BC, 0x00BF }, { 0x00C6, 0x00C6 }, { 0x00D0, 0x00D0 }, { 0x00D7, 0x00D8 }, { 0x00DE, 0x00E1 }, { 0x00E6, 0x00E6 }, { 0x00E8, 0x00EA }, { 0x00EC, 0x00ED }, { 0x00F0, 0x00F0 }, { 0x00F2, 0x00F3 }, { 0x00F7, 0x00FA }, { 0x00FC, 0x00FC }, { 0x00FE, 0x00FE }, { 0x0101, 0x0101 }, { 0x0111, 0x0111 }, { 0x0113, 0x0113 }, { 0x011B, 0x011B }, { 0x0126, 0x0127 }, { 0x012B, 0x012B }, { 0x0131, 0x0133 }, { 0x0138, 0x0138 }, { 0x013F, 0x0142 }, { 0x0144, 0x0144 }, { 0x0148, 0x014B }, { 0x014D, 0x014D }, { 0x0152, 0x0153 }, { 0x0166, 0x0167 }, { 0x016B, 0x016B }, { 0x01CE, 0x01CE }, { 0x01D0, 0x01D0 }, { 0x01D2, 0x01D2 }, { 0x01D4, 0x01D4 }, { 0x01D6, 0x01D6 }, { 0x01D8, 0x01D8 }, { 0x01DA, 0x01DA }, { 0x01DC, 0x01DC }, { 0x0251, 0x0251 }, { 0x0261, 0x0261 }, { 0x02C4, 0x02C4 }, { 0x02C7, 0x02C7 }, { 0x02C9, 0x02CB }, { 0x02CD, 0x02CD }, { 0x02D0, 0x02D0 }, { 0x02D8, 0x02DB }, { 0x02DD, 0x02DD }, { 0x02DF, 0x02DF }, { 0x0391, 0x03A1 }, { 0x03A3, 0x03A9 }, { 0x03B1, 0x03C1 }, { 0x03C3, 0x03C9 }, { 0x0401, 0x0401 }, { 0x0410, 0x044F }, { 0x0451, 0x0451 }, { 0x2010, 0x2010 }, { 0x2013, 0x2016 }, { 0x2018, 0x2019 }, { 0x201C, 0x201D }, { 0x2020, 0x2022 }, { 0x2024, 0x2027 }, { 0x2030, 0x2030 }, { 0x2032, 0x2033 }, { 0x2035, 0x2035 }, { 0x203B, 0x203B }, { 0x203E, 0x203E }, { 0x2074, 0x2074 }, { 0x207F, 0x207F }, { 0x2081, 0x2084 }, { 0x20AC, 0x20AC }, { 0x2103, 0x2103 }, { 0x2105, 0x2105 }, { 0x2109, 0x2109 }, { 0x2113, 0x2113 }, { 0x2116, 0x2116 }, { 0x2121, 0x2122 }, { 0x2126, 0x2126 }, { 0x212B, 0x212B }, { 0x2153, 0x2154 }, { 0x215B, 0x215E }, { 0x2160, 0x216B }, { 0x2170, 0x2179 }, { 0x2189, 0x2189 }, { 0x2190, 0x2199 }, { 0x21B8, 0x21B9 }, { 0x21D2, 0x21D2 }, { 0x21D4, 0x21D4 }, { 0x21E7, 0x21E7 }, { 0x2200, 0x2200 }, { 0x2202, 0x2203 }, { 0x2207, 0x2208 }, { 0x220B, 0x220B }, { 0x220F, 0x220F }, { 0x2211, 0x2211 }, { 0x2215, 0x2215 }, { 0x221A, 0x221A }, { 0x221D, 0x2220 }, { 0x2223, 0x2223 }, { 0x2225, 0x2225 }, { 0x2227, 0x222C }, { 0x222E, 0x222E }, { 0x2234, 0x2237 }, { 0x223C, 0x223D }, { 0x2248, 0x2248 }, { 0x224C, 0x224C }, { 0x2252, 0x2252 }, { 0x2260, 0x2261 }, { 0x2264, 0x2267 }, { 0x226A, 0x226B }, { 0x226E, 0x226F }, { 0x2282, 0x2283 }, { 0x2286, 0x2287 }, { 0x2295, 0x2295 }, { 0x2299, 0x2299 }, { 0x22A5, 0x22A5 }, { 0x22BF, 0x22BF }, { 0x2312, 0x2312 }, { 0x2460, 0x24E9 }, { 0x24EB, 0x254B }, { 0x2550, 0x2573 }, { 0x2580, 0x258F }, { 0x2592, 0x2595 }, { 0x25A0, 0x25A1 }, { 0x25A3, 0x25A9 }, { 0x25B2, 0x25B3 }, { 0x25B6, 0x25B7 }, { 0x25BC, 0x25BD }, { 0x25C0, 0x25C1 }, { 0x25C6, 0x25C8 }, { 0x25CB, 0x25CB }, { 0x25CE, 0x25D1 }, { 0x25E2, 0x25E5 }, { 0x25EF, 0x25EF }, { 0x2605, 0x2606 }, { 0x2609, 0x2609 }, { 0x260E, 0x260F }, { 0x261C, 0x261C }, { 0x261E, 0x261E }, { 0x2640, 0x2640 }, { 0x2642, 0x2642 }, { 0x2660, 0x2661 }, { 0x2663, 0x2665 }, { 0x2667, 0x266A }, { 0x266C, 0x266D }, { 0x266F, 0x266F }, { 0x269E, 0x269F }, { 0x26BF, 0x26BF }, { 0x26C6, 0x26CD }, { 0x26CF, 0x26D3 }, { 0x26D5, 0x26E1 }, { 0x26E3, 0x26E3 }, { 0x26E8, 0x26E9 }, { 0x26EB, 0x26F1 }, { 0x26F4, 0x26F4 }, { 0x26F6, 0x26F9 }, { 0x26FB, 0x26FC }, { 0x26FE, 0x26FF }, { 0x273D, 0x273D }, { 0x2776, 0x277F }, { 0x2B56, 0x2B59 }, { 0x3248, 0x324F }, { 0xE000, 0xF8FF }, { 0xFFFD, 0xFFFD }, { 0x1F100, 0x1F10A }, { 0x1F110, 0x1F12D }, { 0x1F130, 0x1F169 }, { 0x1F170, 0x1F18D }, { 0x1F18F, 0x1F190 }, { 0x1F19B, 0x1F1AC }, { 0xF0000, 0xFFFFD }, { 0x100000, 0x10FFFD } }; picolibc-1.7.4/newlib/libc/string/bcmp.c000066400000000000000000000027131414576234500201110ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---compare two memory areas INDEX bcmp SYNOPSIS #include int bcmp(const void *<[s1]>, const void *<[s2]>, size_t <[n]>); DESCRIPTION This function compares not more than <[n]> bytes of the object pointed to by <[s1]> with the object pointed to by <[s2]>. This function is identical to <>. RETURNS The function returns an integer greater than, equal to or less than zero according to whether the object pointed to by <[s1]> is greater than, equal to or less than the object pointed to by <[s2]>. PORTABILITY <> requires no supporting OS subroutines. QUICKREF bcmp ansi pure */ #include #include int bcmp (const void *m1, const void *m2, size_t n) { return memcmp (m1, m2, n); } picolibc-1.7.4/newlib/libc/string/bcopy.c000066400000000000000000000023711414576234500203040ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---copy memory regions SYNOPSIS #include void bcopy(const void *<[in]>, void *<[out]>, size_t <[n]>); DESCRIPTION This function copies <[n]> bytes from the memory region pointed to by <[in]> to the memory region pointed to by <[out]>. This function is implemented in term of <>. PORTABILITY <> requires no supporting OS subroutines. QUICKREF bcopy - pure */ #include #include #undef bcopy void bcopy (const void *b1, void *b2, size_t length) { memmove (b2, b1, length); } picolibc-1.7.4/newlib/libc/string/bzero.c000066400000000000000000000024161414576234500203110ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---initialize memory to zero INDEX bzero SYNOPSIS #include void bzero(void *<[b]>, size_t <[length]>); DESCRIPTION <> initializes <[length]> bytes of memory, starting at address <[b]>, to zero. RETURNS <> does not return a result. PORTABILITY <> is in the Berkeley Software Distribution. Neither ANSI C nor the System V Interface Definition (Issue 2) require <>. <> requires no supporting OS subroutines. */ #include #undef memset void bzero(void *b, size_t length) { memset(b, 0, length); } picolibc-1.7.4/newlib/libc/string/combining.t000066400000000000000000000162551414576234500211640ustar00rootroot00000000000000/* This file is automatically generated */ { { 0x0300, 0x036F }, { 0x0483, 0x0489 }, { 0x0591, 0x05BD }, { 0x05BF, 0x05BF }, { 0x05C1, 0x05C2 }, { 0x05C4, 0x05C5 }, { 0x05C7, 0x05C7 }, { 0x0600, 0x0605 }, { 0x0610, 0x061A }, { 0x061C, 0x061C }, { 0x064B, 0x065F }, { 0x0670, 0x0670 }, { 0x06D6, 0x06DD }, { 0x06DF, 0x06E4 }, { 0x06E7, 0x06E8 }, { 0x06EA, 0x06ED }, { 0x070F, 0x070F }, { 0x0711, 0x0711 }, { 0x0730, 0x074A }, { 0x07A6, 0x07B0 }, { 0x07EB, 0x07F3 }, { 0x07FD, 0x07FD }, { 0x0816, 0x0819 }, { 0x081B, 0x0823 }, { 0x0825, 0x0827 }, { 0x0829, 0x082D }, { 0x0859, 0x085B }, { 0x08D3, 0x0902 }, { 0x093A, 0x093A }, { 0x093C, 0x093C }, { 0x0941, 0x0948 }, { 0x094D, 0x094D }, { 0x0951, 0x0957 }, { 0x0962, 0x0963 }, { 0x0981, 0x0981 }, { 0x09BC, 0x09BC }, { 0x09C1, 0x09C4 }, { 0x09CD, 0x09CD }, { 0x09E2, 0x09E3 }, { 0x09FE, 0x09FE }, { 0x0A01, 0x0A02 }, { 0x0A3C, 0x0A3C }, { 0x0A41, 0x0A42 }, { 0x0A47, 0x0A48 }, { 0x0A4B, 0x0A4D }, { 0x0A51, 0x0A51 }, { 0x0A70, 0x0A71 }, { 0x0A75, 0x0A75 }, { 0x0A81, 0x0A82 }, { 0x0ABC, 0x0ABC }, { 0x0AC1, 0x0AC5 }, { 0x0AC7, 0x0AC8 }, { 0x0ACD, 0x0ACD }, { 0x0AE2, 0x0AE3 }, { 0x0AFA, 0x0AFF }, { 0x0B01, 0x0B01 }, { 0x0B3C, 0x0B3C }, { 0x0B3F, 0x0B3F }, { 0x0B41, 0x0B44 }, { 0x0B4D, 0x0B4D }, { 0x0B55, 0x0B56 }, { 0x0B62, 0x0B63 }, { 0x0B82, 0x0B82 }, { 0x0BC0, 0x0BC0 }, { 0x0BCD, 0x0BCD }, { 0x0C00, 0x0C00 }, { 0x0C04, 0x0C04 }, { 0x0C3E, 0x0C40 }, { 0x0C46, 0x0C48 }, { 0x0C4A, 0x0C4D }, { 0x0C55, 0x0C56 }, { 0x0C62, 0x0C63 }, { 0x0C81, 0x0C81 }, { 0x0CBC, 0x0CBC }, { 0x0CBF, 0x0CBF }, { 0x0CC6, 0x0CC6 }, { 0x0CCC, 0x0CCD }, { 0x0CE2, 0x0CE3 }, { 0x0D00, 0x0D01 }, { 0x0D3B, 0x0D3C }, { 0x0D41, 0x0D44 }, { 0x0D4D, 0x0D4D }, { 0x0D62, 0x0D63 }, { 0x0D81, 0x0D81 }, { 0x0DCA, 0x0DCA }, { 0x0DD2, 0x0DD4 }, { 0x0DD6, 0x0DD6 }, { 0x0E31, 0x0E31 }, { 0x0E34, 0x0E3A }, { 0x0E47, 0x0E4E }, { 0x0EB1, 0x0EB1 }, { 0x0EB4, 0x0EBC }, { 0x0EC8, 0x0ECD }, { 0x0F18, 0x0F19 }, { 0x0F35, 0x0F35 }, { 0x0F37, 0x0F37 }, { 0x0F39, 0x0F39 }, { 0x0F71, 0x0F7E }, { 0x0F80, 0x0F84 }, { 0x0F86, 0x0F87 }, { 0x0F8D, 0x0F97 }, { 0x0F99, 0x0FBC }, { 0x0FC6, 0x0FC6 }, { 0x102D, 0x1030 }, { 0x1032, 0x1037 }, { 0x1039, 0x103A }, { 0x103D, 0x103E }, { 0x1058, 0x1059 }, { 0x105E, 0x1060 }, { 0x1071, 0x1074 }, { 0x1082, 0x1082 }, { 0x1085, 0x1086 }, { 0x108D, 0x108D }, { 0x109D, 0x109D }, { 0x1160, 0x11FF }, { 0x135D, 0x135F }, { 0x1712, 0x1714 }, { 0x1732, 0x1734 }, { 0x1752, 0x1753 }, { 0x1772, 0x1773 }, { 0x17B4, 0x17B5 }, { 0x17B7, 0x17BD }, { 0x17C6, 0x17C6 }, { 0x17C9, 0x17D3 }, { 0x17DD, 0x17DD }, { 0x180B, 0x180E }, { 0x1885, 0x1886 }, { 0x18A9, 0x18A9 }, { 0x1920, 0x1922 }, { 0x1927, 0x1928 }, { 0x1932, 0x1932 }, { 0x1939, 0x193B }, { 0x1A17, 0x1A18 }, { 0x1A1B, 0x1A1B }, { 0x1A56, 0x1A56 }, { 0x1A58, 0x1A5E }, { 0x1A60, 0x1A60 }, { 0x1A62, 0x1A62 }, { 0x1A65, 0x1A6C }, { 0x1A73, 0x1A7C }, { 0x1A7F, 0x1A7F }, { 0x1AB0, 0x1AC0 }, { 0x1B00, 0x1B03 }, { 0x1B34, 0x1B34 }, { 0x1B36, 0x1B3A }, { 0x1B3C, 0x1B3C }, { 0x1B42, 0x1B42 }, { 0x1B6B, 0x1B73 }, { 0x1B80, 0x1B81 }, { 0x1BA2, 0x1BA5 }, { 0x1BA8, 0x1BA9 }, { 0x1BAB, 0x1BAD }, { 0x1BE6, 0x1BE6 }, { 0x1BE8, 0x1BE9 }, { 0x1BED, 0x1BED }, { 0x1BEF, 0x1BF1 }, { 0x1C2C, 0x1C33 }, { 0x1C36, 0x1C37 }, { 0x1CD0, 0x1CD2 }, { 0x1CD4, 0x1CE0 }, { 0x1CE2, 0x1CE8 }, { 0x1CED, 0x1CED }, { 0x1CF4, 0x1CF4 }, { 0x1CF8, 0x1CF9 }, { 0x1DC0, 0x1DF9 }, { 0x1DFB, 0x1DFF }, { 0x200B, 0x200F }, { 0x202A, 0x202E }, { 0x2060, 0x2064 }, { 0x2066, 0x206F }, { 0x20D0, 0x20F0 }, { 0x2CEF, 0x2CF1 }, { 0x2D7F, 0x2D7F }, { 0x2DE0, 0x2DFF }, { 0x302A, 0x302D }, { 0x3099, 0x309A }, { 0xA66F, 0xA672 }, { 0xA674, 0xA67D }, { 0xA69E, 0xA69F }, { 0xA6F0, 0xA6F1 }, { 0xA802, 0xA802 }, { 0xA806, 0xA806 }, { 0xA80B, 0xA80B }, { 0xA825, 0xA826 }, { 0xA82C, 0xA82C }, { 0xA8C4, 0xA8C5 }, { 0xA8E0, 0xA8F1 }, { 0xA8FF, 0xA8FF }, { 0xA926, 0xA92D }, { 0xA947, 0xA951 }, { 0xA980, 0xA982 }, { 0xA9B3, 0xA9B3 }, { 0xA9B6, 0xA9B9 }, { 0xA9BC, 0xA9BD }, { 0xA9E5, 0xA9E5 }, { 0xAA29, 0xAA2E }, { 0xAA31, 0xAA32 }, { 0xAA35, 0xAA36 }, { 0xAA43, 0xAA43 }, { 0xAA4C, 0xAA4C }, { 0xAA7C, 0xAA7C }, { 0xAAB0, 0xAAB0 }, { 0xAAB2, 0xAAB4 }, { 0xAAB7, 0xAAB8 }, { 0xAABE, 0xAABF }, { 0xAAC1, 0xAAC1 }, { 0xAAEC, 0xAAED }, { 0xAAF6, 0xAAF6 }, { 0xABE5, 0xABE5 }, { 0xABE8, 0xABE8 }, { 0xABED, 0xABED }, { 0xD7B0, 0xD7C6 }, { 0xD7CB, 0xD7FB }, { 0xFB1E, 0xFB1E }, { 0xFE00, 0xFE0F }, { 0xFE20, 0xFE2F }, { 0xFEFF, 0xFEFF }, { 0xFFF9, 0xFFFB }, { 0x101FD, 0x101FD }, { 0x102E0, 0x102E0 }, { 0x10376, 0x1037A }, { 0x10A01, 0x10A03 }, { 0x10A05, 0x10A06 }, { 0x10A0C, 0x10A0F }, { 0x10A38, 0x10A3A }, { 0x10A3F, 0x10A3F }, { 0x10AE5, 0x10AE6 }, { 0x10D24, 0x10D27 }, { 0x10EAB, 0x10EAC }, { 0x10F46, 0x10F50 }, { 0x11001, 0x11001 }, { 0x11038, 0x11046 }, { 0x1107F, 0x11081 }, { 0x110B3, 0x110B6 }, { 0x110B9, 0x110BA }, { 0x110BD, 0x110BD }, { 0x110CD, 0x110CD }, { 0x11100, 0x11102 }, { 0x11127, 0x1112B }, { 0x1112D, 0x11134 }, { 0x11173, 0x11173 }, { 0x11180, 0x11181 }, { 0x111B6, 0x111BE }, { 0x111C9, 0x111CC }, { 0x111CF, 0x111CF }, { 0x1122F, 0x11231 }, { 0x11234, 0x11234 }, { 0x11236, 0x11237 }, { 0x1123E, 0x1123E }, { 0x112DF, 0x112DF }, { 0x112E3, 0x112EA }, { 0x11300, 0x11301 }, { 0x1133B, 0x1133C }, { 0x11340, 0x11340 }, { 0x11366, 0x1136C }, { 0x11370, 0x11374 }, { 0x11438, 0x1143F }, { 0x11442, 0x11444 }, { 0x11446, 0x11446 }, { 0x1145E, 0x1145E }, { 0x114B3, 0x114B8 }, { 0x114BA, 0x114BA }, { 0x114BF, 0x114C0 }, { 0x114C2, 0x114C3 }, { 0x115B2, 0x115B5 }, { 0x115BC, 0x115BD }, { 0x115BF, 0x115C0 }, { 0x115DC, 0x115DD }, { 0x11633, 0x1163A }, { 0x1163D, 0x1163D }, { 0x1163F, 0x11640 }, { 0x116AB, 0x116AB }, { 0x116AD, 0x116AD }, { 0x116B0, 0x116B5 }, { 0x116B7, 0x116B7 }, { 0x1171D, 0x1171F }, { 0x11722, 0x11725 }, { 0x11727, 0x1172B }, { 0x1182F, 0x11837 }, { 0x11839, 0x1183A }, { 0x1193B, 0x1193C }, { 0x1193E, 0x1193E }, { 0x11943, 0x11943 }, { 0x119D4, 0x119D7 }, { 0x119DA, 0x119DB }, { 0x119E0, 0x119E0 }, { 0x11A01, 0x11A0A }, { 0x11A33, 0x11A38 }, { 0x11A3B, 0x11A3E }, { 0x11A47, 0x11A47 }, { 0x11A51, 0x11A56 }, { 0x11A59, 0x11A5B }, { 0x11A8A, 0x11A96 }, { 0x11A98, 0x11A99 }, { 0x11C30, 0x11C36 }, { 0x11C38, 0x11C3D }, { 0x11C3F, 0x11C3F }, { 0x11C92, 0x11CA7 }, { 0x11CAA, 0x11CB0 }, { 0x11CB2, 0x11CB3 }, { 0x11CB5, 0x11CB6 }, { 0x11D31, 0x11D36 }, { 0x11D3A, 0x11D3A }, { 0x11D3C, 0x11D3D }, { 0x11D3F, 0x11D45 }, { 0x11D47, 0x11D47 }, { 0x11D90, 0x11D91 }, { 0x11D95, 0x11D95 }, { 0x11D97, 0x11D97 }, { 0x11EF3, 0x11EF4 }, { 0x13430, 0x13438 }, { 0x16AF0, 0x16AF4 }, { 0x16B30, 0x16B36 }, { 0x16F4F, 0x16F4F }, { 0x16F8F, 0x16F92 }, { 0x16FE4, 0x16FE4 }, { 0x1BC9D, 0x1BC9E }, { 0x1BCA0, 0x1BCA3 }, { 0x1D167, 0x1D169 }, { 0x1D173, 0x1D182 }, { 0x1D185, 0x1D18B }, { 0x1D1AA, 0x1D1AD }, { 0x1D242, 0x1D244 }, { 0x1DA00, 0x1DA36 }, { 0x1DA3B, 0x1DA6C }, { 0x1DA75, 0x1DA75 }, { 0x1DA84, 0x1DA84 }, { 0x1DA9B, 0x1DA9F }, { 0x1DAA1, 0x1DAAF }, { 0x1E000, 0x1E006 }, { 0x1E008, 0x1E018 }, { 0x1E01B, 0x1E021 }, { 0x1E023, 0x1E024 }, { 0x1E026, 0x1E02A }, { 0x1E130, 0x1E136 }, { 0x1E2EC, 0x1E2EF }, { 0x1E8D0, 0x1E8D6 }, { 0x1E944, 0x1E94A }, { 0xE0001, 0xE0001 }, { 0xE0020, 0xE007F }, { 0xE0100, 0xE01EF } }; picolibc-1.7.4/newlib/libc/string/explicit_bzero.c000066400000000000000000000004611414576234500222100ustar00rootroot00000000000000/* $OpenBSD: explicit_bzero.c,v 1.2 2014/06/10 04:17:37 deraadt Exp $ */ /* * Copyright (c) 2014 Ted Unangst * Public domain. */ #define _DEFAULT_SOURCE #include /* * explicit_bzero - don't let the compiler optimize away bzero */ void explicit_bzero(void *p, size_t n) { bzero(p, n); } picolibc-1.7.4/newlib/libc/string/ffsl.c000066400000000000000000000032531414576234500201220ustar00rootroot00000000000000/*- * Copyright (c) 2017 embedded brains GmbH * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include int ffsl(long i) { #ifdef HAVE_BUILTIN_FFSL return (__builtin_ffsl(i)); #elif defined(HAVE_BUILTIN_CTZL) if (i == 0) return 0; return __builtin_ctzl((unsigned long)i) + 1; #else int r; if (!i) return 0; r = 0; for (;;) { if (((1L << r++) & i) != 0) return r; } return 0; #endif } picolibc-1.7.4/newlib/libc/string/ffsll.c000066400000000000000000000032731414576234500203000ustar00rootroot00000000000000/*- * Copyright (c) 2017 embedded brains GmbH * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include int ffsll(long long i) { #ifdef HAVE_BUILTIN_FFSLL return (__builtin_ffsll(i)); #elif defined(HAVE_BUILTIN_CTZLL) if (i == 0) return 0; return __builtin_ctzll((unsigned long long)i) + 1; #else int r; if (!i) return 0; r = 0; for (;;) { if (((1LL << r++) & i) != 0) return r; } return 0; #endif } picolibc-1.7.4/newlib/libc/string/fls.c000066400000000000000000000027361414576234500177610ustar00rootroot00000000000000/*- * Copyright (c) 2017 embedded brains GmbH * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include #include int fls(int i) { if (i == 0) return 0; return (sizeof(i) * CHAR_BIT - __builtin_clz(i)); } picolibc-1.7.4/newlib/libc/string/flsl.c000066400000000000000000000027411414576234500201310ustar00rootroot00000000000000/*- * Copyright (c) 2017 embedded brains GmbH * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include #include int flsl(long i) { if (i == 0) return 0; return (sizeof(i) * CHAR_BIT - __builtin_clzl(i)); } picolibc-1.7.4/newlib/libc/string/flsll.c000066400000000000000000000027501414576234500203050ustar00rootroot00000000000000/*- * Copyright (c) 2017 embedded brains GmbH * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include #include int flsll(long long i) { if (i == 0) return 0; return (sizeof(i) * CHAR_BIT - __builtin_clzll(i)); } picolibc-1.7.4/newlib/libc/string/gnu_basename.c000066400000000000000000000012201414576234500216040ustar00rootroot00000000000000#ifndef _NO_BASENAME /* Copyright 2015 Red Hat, Inc. * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ /* The differences with the POSIX version (unix/basename.c): * - declared in (instead of ); * - the argument is never modified, and therefore is marked const; * - the empty string is returned if path is an empty string, "/", or ends * with a trailing slash. */ #include char * __gnu_basename (const char *path) { char *p; if ((p = strrchr (path, '/'))) return p + 1; return (char *) path; } #endif /* !_NO_BASENAME */ picolibc-1.7.4/newlib/libc/string/index.c000066400000000000000000000025511414576234500202770ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---search for character in string INDEX index SYNOPSIS #include char * index(const char *<[string]>, int <[c]>); DESCRIPTION This function finds the first occurence of <[c]> (converted to a char) in the string pointed to by <[string]> (including the terminating null character). This function is identical to <>. RETURNS Returns a pointer to the located character, or a null pointer if <[c]> does not occur in <[string]>. PORTABILITY <> requires no supporting OS subroutines. QUICKREF index - pure */ #include #include char * index (const char *s, int c) { return strchr (s, c); } picolibc-1.7.4/newlib/libc/string/local.h000066400000000000000000000003021414576234500202570ustar00rootroot00000000000000/* Copyright (c) 2009 Corinna Vinschen */ #include <_ansi.h> #include <../ctype/local.h> /* internal function to compute width of wide char. */ int __wcwidth (wint_t); picolibc-1.7.4/newlib/libc/string/memccpy.c000066400000000000000000000072621414576234500206310ustar00rootroot00000000000000/* Copyright (c) 2002 Jeff Johnston */ /* FUNCTION <>---copy memory regions with end-token check SYNOPSIS #include void* memccpy(void *restrict <[out]>, const void *restrict <[in]>, int <[endchar]>, size_t <[n]>); DESCRIPTION This function copies up to <[n]> bytes from the memory region pointed to by <[in]> to the memory region pointed to by <[out]>. If a byte matching the <[endchar]> is encountered, the byte is copied and copying stops. If the regions overlap, the behavior is undefined. RETURNS <> returns a pointer to the first byte following the <[endchar]> in the <[out]> region. If no byte matching <[endchar]> was copied, then <> is returned. PORTABILITY <> is a GNU extension. <> requires no supporting OS subroutines. */ #include <_ansi.h> #include #include #include /* Nonzero if either X or Y is not aligned on a "long" boundary. */ #define UNALIGNED(X, Y) \ (((long)X & (sizeof (long) - 1)) | ((long)Y & (sizeof (long) - 1))) /* How many bytes are copied each iteration of the word copy loop. */ #define LITTLEBLOCKSIZE (sizeof (long)) /* Threshhold for punting to the byte copier. */ #define TOO_SMALL(LEN) ((LEN) < LITTLEBLOCKSIZE) /* Macros for detecting endchar */ #if LONG_MAX == 2147483647L #define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) #else #if LONG_MAX == 9223372036854775807L /* Nonzero if X (a long int) contains a NULL byte. */ #define DETECTNULL(X) (((X) - 0x0101010101010101) & ~(X) & 0x8080808080808080) #else #error long int is not a 32bit or 64bit type. #endif #endif void * memccpy (void *__restrict dst0, const void *__restrict src0, int endchar0, size_t len0) { #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) void *ptr = NULL; char *dst = (char *) dst0; char *src = (char *) src0; char endchar = endchar0 & 0xff; while (len0--) { if ((*dst++ = *src++) == endchar) { ptr = dst; break; } } return ptr; #else void *ptr = NULL; char *dst = dst0; const char *src = src0; long *aligned_dst; const long *aligned_src; char endchar = endchar0 & 0xff; /* If the size is small, or either SRC or DST is unaligned, then punt into the byte copy loop. This should be rare. */ if (!TOO_SMALL(len0) && !UNALIGNED (src, dst)) { unsigned int i; unsigned long mask = 0; aligned_dst = (long*)dst; aligned_src = (long*)src; /* The fast code reads the ASCII one word at a time and only performs the bytewise search on word-sized segments if they contain the search character, which is detected by XORing the word-sized segment with a word-sized block of the search character and then detecting for the presence of NULL in the result. */ for (i = 0; i < LITTLEBLOCKSIZE; i++) mask = (mask << 8) + endchar; /* Copy one long word at a time if possible. */ while (len0 >= LITTLEBLOCKSIZE) { unsigned long buffer = (unsigned long)(*aligned_src); buffer ^= mask; if (DETECTNULL (buffer)) break; /* endchar is found, go byte by byte from here */ *aligned_dst++ = *aligned_src++; len0 -= LITTLEBLOCKSIZE; } /* Pick up any residual with a byte copier. */ dst = (char*)aligned_dst; src = (char*)aligned_src; } while (len0--) { if ((*dst++ = *src++) == endchar) { ptr = dst; break; } } return ptr; #endif /* not PREFER_SIZE_OVER_SPEED */ } picolibc-1.7.4/newlib/libc/string/memchr.c000066400000000000000000000075201414576234500204440ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---find character in memory INDEX memchr SYNOPSIS #include void *memchr(const void *<[src]>, int <[c]>, size_t <[length]>); DESCRIPTION This function searches memory starting at <<*<[src]>>> for the character <[c]>. The search only ends with the first occurrence of <[c]>, or after <[length]> characters; in particular, <> does not terminate the search. RETURNS If the character <[c]> is found within <[length]> characters of <<*<[src]>>>, a pointer to the character is returned. If <[c]> is not found, then <> is returned. PORTABILITY <> is ANSI C. <> requires no supporting OS subroutines. QUICKREF memchr ansi pure */ #include <_ansi.h> #include #include /* Nonzero if either X or Y is not aligned on a "long" boundary. */ #define UNALIGNED(X) ((long)X & (sizeof (long) - 1)) /* How many bytes are loaded each iteration of the word copy loop. */ #define LBLOCKSIZE (sizeof (long)) /* Threshhold for punting to the bytewise iterator. */ #define TOO_SMALL(LEN) ((LEN) < LBLOCKSIZE) #if LONG_MAX == 2147483647L #define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) #else #if LONG_MAX == 9223372036854775807L /* Nonzero if X (a long int) contains a NULL byte. */ #define DETECTNULL(X) (((X) - 0x0101010101010101) & ~(X) & 0x8080808080808080) #else #error long int is not a 32bit or 64bit type. #endif #endif #ifndef DETECTNULL #error long int is not a 32bit or 64bit byte #endif /* DETECTCHAR returns nonzero if (long)X contains the byte used to fill (long)MASK. */ #define DETECTCHAR(X,MASK) (DETECTNULL(X ^ MASK)) void * memchr (const void *src_void, int c, size_t length) { const unsigned char *src = (const unsigned char *) src_void; unsigned char d = c; #if !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) unsigned long *asrc; unsigned long mask; unsigned int i; while (UNALIGNED (src)) { if (!length--) return NULL; if (*src == d) return (void *) src; src++; } if (!TOO_SMALL (length)) { /* If we get this far, we know that length is large and src is word-aligned. */ /* The fast code reads the source one word at a time and only performs the bytewise search on word-sized segments if they contain the search character, which is detected by XORing the word-sized segment with a word-sized block of the search character and then detecting for the presence of NUL in the result. */ asrc = (unsigned long *) src; mask = d << 8 | d; mask = mask << 16 | mask; for (i = 32; i < LBLOCKSIZE * 8; i <<= 1) mask = (mask << i) | mask; while (length >= LBLOCKSIZE) { if (DETECTCHAR (*asrc, mask)) break; length -= LBLOCKSIZE; asrc++; } /* If there are fewer than LBLOCKSIZE characters left, then we resort to the bytewise loop. */ src = (unsigned char *) asrc; } #endif /* not PREFER_SIZE_OVER_SPEED */ while (length--) { if (*src == d) return (void *) src; src++; } return NULL; } picolibc-1.7.4/newlib/libc/string/memcmp.c000066400000000000000000000056631414576234500204550ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---compare two memory areas INDEX memcmp SYNOPSIS #include int memcmp(const void *<[s1]>, const void *<[s2]>, size_t <[n]>); DESCRIPTION This function compares not more than <[n]> characters of the object pointed to by <[s1]> with the object pointed to by <[s2]>. RETURNS The function returns an integer greater than, equal to or less than zero according to whether the object pointed to by <[s1]> is greater than, equal to or less than the object pointed to by <[s2]>. PORTABILITY <> is ANSI C. <> requires no supporting OS subroutines. QUICKREF memcmp ansi pure */ #include /* Nonzero if either X or Y is not aligned on a "long" boundary. */ #define UNALIGNED(X, Y) \ (((long)X & (sizeof (long) - 1)) | ((long)Y & (sizeof (long) - 1))) /* How many bytes are copied each iteration of the word copy loop. */ #define LBLOCKSIZE (sizeof (long)) /* Threshhold for punting to the byte copier. */ #define TOO_SMALL(LEN) ((LEN) < LBLOCKSIZE) int memcmp (const void *m1, const void *m2, size_t n) { #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) unsigned char *s1 = (unsigned char *) m1; unsigned char *s2 = (unsigned char *) m2; while (n--) { if (*s1 != *s2) { return *s1 - *s2; } s1++; s2++; } return 0; #else unsigned char *s1 = (unsigned char *) m1; unsigned char *s2 = (unsigned char *) m2; unsigned long *a1; unsigned long *a2; /* If the size is too small, or either pointer is unaligned, then we punt to the byte compare loop. Hopefully this will not turn up in inner loops. */ if (!TOO_SMALL(n) && !UNALIGNED(s1,s2)) { /* Otherwise, load and compare the blocks of memory one word at a time. */ a1 = (unsigned long*) s1; a2 = (unsigned long*) s2; while (n >= LBLOCKSIZE) { if (*a1 != *a2) break; a1++; a2++; n -= LBLOCKSIZE; } /* check m mod LBLOCKSIZE remaining characters */ s1 = (unsigned char*)a1; s2 = (unsigned char*)a2; } while (n--) { if (*s1 != *s2) return *s1 - *s2; s1++; s2++; } return 0; #endif /* not PREFER_SIZE_OVER_SPEED */ } picolibc-1.7.4/newlib/libc/string/memcpy.c000066400000000000000000000063721414576234500204670ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---copy memory regions SYNOPSIS #include void* memcpy(void *restrict <[out]>, const void *restrict <[in]>, size_t <[n]>); DESCRIPTION This function copies <[n]> bytes from the memory region pointed to by <[in]> to the memory region pointed to by <[out]>. If the regions overlap, the behavior is undefined. RETURNS <> returns a pointer to the first byte of the <[out]> region. PORTABILITY <> is ANSI C. <> requires no supporting OS subroutines. QUICKREF memcpy ansi pure */ #include <_ansi.h> #include #include "local.h" /* Nonzero if either X or Y is not aligned on a "long" boundary. */ #define UNALIGNED(X, Y) \ (((long)X & (sizeof (long) - 1)) | ((long)Y & (sizeof (long) - 1))) /* How many bytes are copied each iteration of the 4X unrolled loop. */ #define BIGBLOCKSIZE (sizeof (long) << 2) /* How many bytes are copied each iteration of the word copy loop. */ #define LITTLEBLOCKSIZE (sizeof (long)) /* Threshhold for punting to the byte copier. */ #define TOO_SMALL(LEN) ((LEN) < BIGBLOCKSIZE) #undef memcpy void * __inhibit_loop_to_libcall memcpy (void *__restrict dst0, const void *__restrict src0, size_t len0) { #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) char *dst = (char *) dst0; char *src = (char *) src0; void *save = dst0; while (len0--) { *dst++ = *src++; } return save; #else char *dst = dst0; const char *src = src0; long *aligned_dst; const long *aligned_src; /* If the size is small, or either SRC or DST is unaligned, then punt into the byte copy loop. This should be rare. */ if (!TOO_SMALL(len0) && !UNALIGNED (src, dst)) { aligned_dst = (long*)dst; aligned_src = (long*)src; /* Copy 4X long words at a time if possible. */ while (len0 >= BIGBLOCKSIZE) { *aligned_dst++ = *aligned_src++; *aligned_dst++ = *aligned_src++; *aligned_dst++ = *aligned_src++; *aligned_dst++ = *aligned_src++; len0 -= BIGBLOCKSIZE; } /* Copy one long word at a time if possible. */ while (len0 >= LITTLEBLOCKSIZE) { *aligned_dst++ = *aligned_src++; len0 -= LITTLEBLOCKSIZE; } /* Pick up any residual with a byte copier. */ dst = (char*)aligned_dst; src = (char*)aligned_src; } while (len0--) *dst++ = *src++; return dst0; #endif /* not PREFER_SIZE_OVER_SPEED */ } picolibc-1.7.4/newlib/libc/string/memmem.c000066400000000000000000000134601414576234500204460ustar00rootroot00000000000000/* Optimized memmem function. Copyright (c) 2018 Arm Ltd. All rights reserved. SPDX-License-Identifier: BSD-3-Clause Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the company may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>---find memory segment INDEX memmem SYNOPSIS #include void *memmem(const void *<[s1]>, size_t <[l1]>, const void *<[s2]>, size_t <[l2]>); DESCRIPTION Locates the first occurrence in the memory region pointed to by <[s1]> with length <[l1]> of the sequence of bytes pointed to by <[s2]> of length <[l2]>. If you already know the lengths of your haystack and needle, <> is much faster than <>. RETURNS Returns a pointer to the located segment, or a null pointer if <[s2]> is not found. If <[l2]> is 0, <[s1]> is returned. PORTABILITY <> is a newlib extension. <> requires no supporting OS subroutines. QUICKREF memmem pure */ #include #include #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) /* Small and efficient memmem implementation (quadratic worst-case). */ void * memmem (const void *haystack, size_t hs_len, const void *needle, size_t ne_len) { const char *hs = haystack; const char *ne = needle; if (ne_len == 0) return (void *)hs; int i; int c = ne[0]; const char *end = hs + hs_len - ne_len; for ( ; hs <= end; hs++) { if (hs[0] != c) continue; for (i = ne_len - 1; i != 0; i--) if (hs[i] != ne[i]) break; if (i == 0) return (void *)hs; } return NULL; } #else # define RETURN_TYPE void * # define AVAILABLE(h, h_l, j, n_l) ((j) <= (h_l) - (n_l)) # include "str-two-way.h" #define hash2(p) (((size_t)(p)[0] - ((size_t)(p)[-1] << 3)) % sizeof (shift)) /* Fast memmem algorithm with guaranteed linear-time performance. Small needles up to size 2 use a dedicated linear search. Longer needles up to size 256 use a novel modified Horspool algorithm. It hashes pairs of characters to quickly skip past mismatches. The main search loop only exits if the last 2 characters match, avoiding unnecessary calls to memcmp and allowing for a larger skip if there is no match. A self-adapting filtering check is used to quickly detect mismatches in long needles. By limiting the needle length to 256, the shift table can be reduced to 8 bits per entry, lowering preprocessing overhead and minimizing cache effects. The limit also implies worst-case performance is linear. Needles larger than 256 characters use the linear-time Two-Way algorithm. */ void * memmem (const void *haystack, size_t hs_len, const void *needle, size_t ne_len) { const unsigned char *hs = haystack; const unsigned char *ne = needle; if (ne_len == 0) return (void *) hs; if (ne_len == 1) return (void *) memchr (hs, ne[0], hs_len); /* Ensure haystack length is >= needle length. */ if (hs_len < ne_len) return NULL; const unsigned char *end = hs + hs_len - ne_len; if (ne_len == 2) { uint32_t nw = ne[0] << 16 | ne[1], hw = hs[0] << 16 | hs[1]; for (hs++; hs <= end && hw != nw; ) hw = hw << 16 | *++hs; return hw == nw ? (void *)(hs - 1) : NULL; } /* Use Two-Way algorithm for very long needles. */ if (__builtin_expect (ne_len > 256, 0)) return two_way_long_needle (hs, hs_len, ne, ne_len); uint8_t shift[256]; size_t tmp, shift1; size_t m1 = ne_len - 1; size_t offset = 0; size_t i; /* Initialize bad character shift hash table. */ memset (shift, 0, sizeof (shift)); for (i = 1; i < m1; i++) shift[hash2 (ne + i)] = i; shift1 = m1 - shift[hash2 (ne + m1)]; shift[hash2 (ne + m1)] = m1; for ( ; hs <= end; ) { /* Skip past character pairs not in the needle. */ do { hs += m1; tmp = shift[hash2 (hs)]; } while (hs <= end && tmp == 0); /* If the match is not at the end of the needle, shift to the end and continue until we match the last 2 characters. */ hs -= tmp; if (tmp < m1) continue; /* The last 2 characters match. If the needle is long, check a fixed number of characters first to quickly filter out mismatches. */ if (m1 <= 15 || memcmp (hs + offset, ne + offset, sizeof (long)) == 0) { if (memcmp (hs, ne, m1) == 0) return (void *) hs; /* Adjust filter offset when it doesn't find the mismatch. */ offset = (offset >= sizeof (long) ? offset : m1) - sizeof (long); } /* Skip based on matching the last 2 characters. */ hs += shift1; } return NULL; } #endif /* Compilation for speed. */ picolibc-1.7.4/newlib/libc/string/memmove.c000066400000000000000000000075551414576234500206460ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---move possibly overlapping memory INDEX memmove SYNOPSIS #include void *memmove(void *<[dst]>, const void *<[src]>, size_t <[length]>); DESCRIPTION This function moves <[length]> characters from the block of memory starting at <<*<[src]>>> to the memory starting at <<*<[dst]>>>. <> reproduces the characters correctly at <<*<[dst]>>> even if the two areas overlap. RETURNS The function returns <[dst]> as passed. PORTABILITY <> is ANSI C. <> requires no supporting OS subroutines. QUICKREF memmove ansi pure */ #include #include <_ansi.h> #include #include #include "local.h" /* Nonzero if either X or Y is not aligned on a "long" boundary. */ #define UNALIGNED(X, Y) \ (((long)X & (sizeof (long) - 1)) | ((long)Y & (sizeof (long) - 1))) /* How many bytes are copied each iteration of the 4X unrolled loop. */ #define BIGBLOCKSIZE (sizeof (long) << 2) /* How many bytes are copied each iteration of the word copy loop. */ #define LITTLEBLOCKSIZE (sizeof (long)) /* Threshhold for punting to the byte copier. */ #define TOO_SMALL(LEN) ((LEN) < BIGBLOCKSIZE) #undef memmove /*SUPPRESS 20*/ void * __inhibit_loop_to_libcall memmove (void *dst_void, const void *src_void, size_t length) { #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) char *dst = dst_void; const char *src = src_void; if (src < dst && dst < src + length) { /* Have to copy backwards */ src += length; dst += length; while (length--) { *--dst = *--src; } } else { while (length--) { *dst++ = *src++; } } return dst_void; #else char *dst = dst_void; const char *src = src_void; long *aligned_dst; const long *aligned_src; if (src < dst && dst < src + length) { /* Destructive overlap...have to copy backwards */ src += length; dst += length; while (length--) { *--dst = *--src; } } else { /* Use optimizing algorithm for a non-destructive copy to closely match memcpy. If the size is small or either SRC or DST is unaligned, then punt into the byte copy loop. This should be rare. */ if (!TOO_SMALL(length) && !UNALIGNED (src, dst)) { aligned_dst = (long*)dst; aligned_src = (long*)src; /* Copy 4X long words at a time if possible. */ while (length >= BIGBLOCKSIZE) { *aligned_dst++ = *aligned_src++; *aligned_dst++ = *aligned_src++; *aligned_dst++ = *aligned_src++; *aligned_dst++ = *aligned_src++; length -= BIGBLOCKSIZE; } /* Copy one long word at a time if possible. */ while (length >= LITTLEBLOCKSIZE) { *aligned_dst++ = *aligned_src++; length -= LITTLEBLOCKSIZE; } /* Pick up any residual with a byte copier. */ dst = (char*)aligned_dst; src = (char*)aligned_src; } while (length--) { *dst++ = *src++; } } return dst_void; #endif /* not PREFER_SIZE_OVER_SPEED */ } picolibc-1.7.4/newlib/libc/string/mempcpy.c000066400000000000000000000050461414576234500206440ustar00rootroot00000000000000/* Copyright (c) 2002 Jeff Johnston */ /* FUNCTION <>---copy memory regions and return end pointer SYNOPSIS #include void* mempcpy(void *<[out]>, const void *<[in]>, size_t <[n]>); DESCRIPTION This function copies <[n]> bytes from the memory region pointed to by <[in]> to the memory region pointed to by <[out]>. If the regions overlap, the behavior is undefined. RETURNS <> returns a pointer to the byte following the last byte copied to the <[out]> region. PORTABILITY <> is a GNU extension. <> requires no supporting OS subroutines. */ #include <_ansi.h> #include #include #include /* Nonzero if either X or Y is not aligned on a "long" boundary. */ #define UNALIGNED(X, Y) \ (((long)X & (sizeof (long) - 1)) | ((long)Y & (sizeof (long) - 1))) /* How many bytes are copied each iteration of the 4X unrolled loop. */ #define BIGBLOCKSIZE (sizeof (long) << 2) /* How many bytes are copied each iteration of the word copy loop. */ #define LITTLEBLOCKSIZE (sizeof (long)) /* Threshhold for punting to the byte copier. */ #define TOO_SMALL(LEN) ((LEN) < BIGBLOCKSIZE) void * mempcpy (void *dst0, const void *src0, size_t len0) { #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) char *dst = (char *) dst0; char *src = (char *) src0; while (len0--) { *dst++ = *src++; } return dst; #else char *dst = dst0; const char *src = src0; long *aligned_dst; const long *aligned_src; /* If the size is small, or either SRC or DST is unaligned, then punt into the byte copy loop. This should be rare. */ if (!TOO_SMALL(len0) && !UNALIGNED (src, dst)) { aligned_dst = (long*)dst; aligned_src = (long*)src; /* Copy 4X long words at a time if possible. */ while (len0 >= BIGBLOCKSIZE) { *aligned_dst++ = *aligned_src++; *aligned_dst++ = *aligned_src++; *aligned_dst++ = *aligned_src++; *aligned_dst++ = *aligned_src++; len0 -= BIGBLOCKSIZE; } /* Copy one long word at a time if possible. */ while (len0 >= LITTLEBLOCKSIZE) { *aligned_dst++ = *aligned_src++; len0 -= LITTLEBLOCKSIZE; } /* Pick up any residual with a byte copier. */ dst = (char*)aligned_dst; src = (char*)aligned_src; } while (len0--) *dst++ = *src++; return dst; #endif /* not PREFER_SIZE_OVER_SPEED */ } picolibc-1.7.4/newlib/libc/string/memrchr.c000066400000000000000000000064121414576234500206250ustar00rootroot00000000000000/* Copyright (c) 2012 Corinna Vinschen */ /* FUNCTION <>---reverse search for character in memory INDEX memrchr SYNOPSIS #include void *memrchr(const void *<[src]>, int <[c]>, size_t <[length]>); DESCRIPTION This function searches memory starting at <[length]> bytes beyond <<*<[src]>>> backwards for the character <[c]>. The search only ends with the first occurrence of <[c]>; in particular, <> does not terminate the search. RETURNS If the character <[c]> is found within <[length]> characters of <<*<[src]>>>, a pointer to the character is returned. If <[c]> is not found, then <> is returned. PORTABILITY <> is a GNU extension. <> requires no supporting OS subroutines. QUICKREF memrchr */ #include <_ansi.h> #include #include /* Nonzero if X is not aligned on a "long" boundary. */ #define UNALIGNED(X) ((long)(X + 1) & (sizeof (long) - 1)) /* How many bytes are loaded each iteration of the word copy loop. */ #define LBLOCKSIZE (sizeof (long)) /* Threshhold for punting to the bytewise iterator. */ #define TOO_SMALL(LEN) ((LEN) < LBLOCKSIZE) #if LONG_MAX == 2147483647L #define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) #else #if LONG_MAX == 9223372036854775807L /* Nonzero if X (a long int) contains a NULL byte. */ #define DETECTNULL(X) (((X) - 0x0101010101010101) & ~(X) & 0x8080808080808080) #else #error long int is not a 32bit or 64bit type. #endif #endif #ifndef DETECTNULL #error long int is not a 32bit or 64bit byte #endif /* DETECTCHAR returns nonzero if (long)X contains the byte used to fill (long)MASK. */ #define DETECTCHAR(X,MASK) (DETECTNULL(X ^ MASK)) void * memrchr (const void *src_void, int c, size_t length) { const unsigned char *src = (const unsigned char *) src_void + length - 1; unsigned char d = c; #if !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) unsigned long *asrc; unsigned long mask; unsigned int i; while (UNALIGNED (src)) { if (!length--) return NULL; if (*src == d) return (void *) src; src--; } if (!TOO_SMALL (length)) { /* If we get this far, we know that length is large and src is word-aligned. */ /* The fast code reads the source one word at a time and only performs the bytewise search on word-sized segments if they contain the search character, which is detected by XORing the word-sized segment with a word-sized block of the search character and then detecting for the presence of NUL in the result. */ asrc = (unsigned long *) (src - LBLOCKSIZE + 1); mask = d << 8 | d; mask = mask << 16 | mask; for (i = 32; i < LBLOCKSIZE * 8; i <<= 1) mask = (mask << i) | mask; while (length >= LBLOCKSIZE) { if (DETECTCHAR (*asrc, mask)) break; length -= LBLOCKSIZE; asrc--; } /* If there are fewer than LBLOCKSIZE characters left, then we resort to the bytewise loop. */ src = (unsigned char *) asrc + LBLOCKSIZE - 1; } #endif /* not PREFER_SIZE_OVER_SPEED */ while (length--) { if (*src == d) return (void *) src; src--; } return NULL; } picolibc-1.7.4/newlib/libc/string/memset.c000066400000000000000000000053651414576234500204700ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---set an area of memory INDEX memset SYNOPSIS #include void *memset(void *<[dst]>, int <[c]>, size_t <[length]>); DESCRIPTION This function converts the argument <[c]> into an unsigned char and fills the first <[length]> characters of the array pointed to by <[dst]> to the value. RETURNS <> returns the value of <[dst]>. PORTABILITY <> is ANSI C. <> requires no supporting OS subroutines. QUICKREF memset ansi pure */ #include #include "local.h" #define LBLOCKSIZE (sizeof(long)) #define UNALIGNED(X) ((long)X & (LBLOCKSIZE - 1)) #define TOO_SMALL(LEN) ((LEN) < LBLOCKSIZE) #undef memset void * __inhibit_loop_to_libcall memset (void *m, int c, size_t n) { char *s = (char *) m; #if !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) unsigned int i; unsigned long buffer; unsigned long *aligned_addr; unsigned int d = c & 0xff; /* To avoid sign extension, copy C to an unsigned variable. */ while (UNALIGNED (s)) { if (n--) *s++ = (char) c; else return m; } if (!TOO_SMALL (n)) { /* If we get this far, we know that n is large and s is word-aligned. */ aligned_addr = (unsigned long *) s; /* Store D into each char sized location in BUFFER so that we can set large blocks quickly. */ buffer = (d << 8) | d; buffer |= (buffer << 16); for (i = 32; i < LBLOCKSIZE * 8; i <<= 1) buffer = (buffer << i) | buffer; /* Unroll the loop. */ while (n >= LBLOCKSIZE*4) { *aligned_addr++ = buffer; *aligned_addr++ = buffer; *aligned_addr++ = buffer; *aligned_addr++ = buffer; n -= 4*LBLOCKSIZE; } while (n >= LBLOCKSIZE) { *aligned_addr++ = buffer; n -= LBLOCKSIZE; } /* Pick up the remainder with a bytewise loop. */ s = (char*)aligned_addr; } #endif /* not PREFER_SIZE_OVER_SPEED */ while (n--) *s++ = (char) c; return m; } picolibc-1.7.4/newlib/libc/string/meson.build000066400000000000000000000107721414576234500211720ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # srcs_string = [ 'bcmp.c', 'bcopy.c', 'bzero.c', 'explicit_bzero.c', 'ffsl.c', 'ffsll.c', 'fls.c', 'flsl.c', 'flsll.c', 'gnu_basename.c', 'index.c', 'memccpy.c', 'memchr.c', 'memcmp.c', 'memcpy.c', 'memmem.c', 'memmove.c', 'mempcpy.c', 'memrchr.c', 'memset.c', 'rawmemchr.c', 'rindex.c', 'stpcpy.c', 'stpncpy.c', 'strcasecmp.c', 'strcasecmp_l.c', 'strcasestr.c', 'strcat.c', 'strchr.c', 'strchrnul.c', 'strcoll.c', 'strcoll_l.c', 'strcpy.c', 'strcspn.c', 'strdup.c', 'strerror.c', 'strerror_r.c', 'strlcat.c', 'strlcpy.c', 'strlen.c', 'strlwr.c', 'strncasecmp.c', 'strncasecmp_l.c', 'strncat.c', 'strncmp.c', 'strncpy.c', 'strndup.c', 'strnlen.c', 'strnstr.c', 'strpbrk.c', 'strrchr.c', 'strsep.c', 'strsignal.c', 'strspn.c', 'strstr.c', 'strtok.c', 'strtok_r.c', 'strupr.c', 'strverscmp.c', 'strxfrm.c', 'strxfrm_l.c', 'swab.c', 'timingsafe_bcmp.c', 'timingsafe_memcmp.c', 'u_strerr.c', 'wcpcpy.c', 'wcpncpy.c', 'wcscasecmp.c', 'wcscasecmp_l.c', 'wcscat.c', 'wcschr.c', 'wcscmp.c', 'wcscoll.c', 'wcscoll_l.c', 'wcscpy.c', 'wcscspn.c', 'wcsdup.c', 'wcslcat.c', 'wcslcpy.c', 'wcslen.c', 'wcsncasecmp.c', 'wcsncasecmp_l.c', 'wcsncat.c', 'wcsncmp.c', 'wcsncpy.c', 'wcsnlen.c', 'wcspbrk.c', 'wcsrchr.c', 'wcsspn.c', 'wcsstr.c', 'wcstok.c', 'wcswidth.c', 'wcsxfrm.c', 'wcsxfrm_l.c', 'wcwidth.c', 'wmemchr.c', 'wmemcmp.c', 'wmemcpy.c', 'wmemmove.c', 'wmempcpy.c', 'wmemset.c', 'xpg_strerror_r.c', ] hdrs_string = [ 'local.h', 'str-two-way.h', ] srcs_strcmp = [ 'strcmp.c' ] srcs_string_use = [] foreach file : srcs_string s_file = fs.replace_suffix(file, '.S') if file in srcs_machine message('libc/string/' + file + ': machine overrides generic') elif s_file in srcs_machine message('libc/string/' + s_file + ': machine overrides generic') else srcs_string_use += file endif endforeach srcs_strcmp_use = [] foreach file : srcs_strcmp s_file = fs.replace_suffix(file, '.S') if file in srcs_machine message('libc/string/' + file + ': machine overrides generic') elif s_file in srcs_machine message('libc/string/' + s_file + ': machine overrides generic') else srcs_strcmp_use += file endif endforeach if fast_strcmp cargs_strcmp = ['-O3'] else cargs_strcmp = [] endif src_string = files(srcs_string_use) # Need a sub-library to pass custom cflags to strcmp if srcs_strcmp_use != [] foreach target : targets value = get_variable('target_' + target) set_variable('lib_string' + target, static_library('strcmp' + target, srcs_strcmp_use, pic: false, c_args: value[1] + cargs_strcmp, include_directories: inc)) endforeach endif picolibc-1.7.4/newlib/libc/string/mkunidata000077500000000000000000000041061414576234500207250ustar00rootroot00000000000000#! /bin/sh # Copyright(c) 2018 Thomas Wolff echo Generating Unicode width data for newlib/libc/string/wcwidth.c cd `dirname $0` PATH="$PATH":. # ensure access to uniset tool ############################################################################# # checks and (with option -u) downloads case "$1" in -h) echo "Usage: $0 [-h|-u|-i]" echo "Generate width data tables ambiguous.t, combining.t, wide.t" echo "from local Unicode files UnicodeData.txt, Blocks.txt, EastAsianWidth.txt." echo "" echo "Options:" echo " -u download files from unicode.org first, download uniset tool" echo " -i copy files from /usr/share/unicode/ucd first" echo " -h show this" exit ;; -u) wget () { ref=`basename $1` ref=`ls "$ref" 2> /dev/null || echo 01-Jan-1970` curl -R -O --connect-timeout 55 -z "$ref" "$1" } echo downloading uniset tool wget https://www.cl.cam.ac.uk/~mgk25/download/uniset.tar.gz gzip -dc uniset.tar.gz | tar xvf - uniset echo downloading data from unicode.org for data in UnicodeData.txt Blocks.txt EastAsianWidth.txt do wget http://unicode.org/Public/UNIDATA/$data done ;; -i) echo copying data from /usr/share/unicode/ucd for data in UnicodeData.txt Blocks.txt EastAsianWidth.txt do cp /usr/share/unicode/ucd/$data . done ;; esac echo checking uniset tool type uniset || exit 9 echo checking Unicode data files for data in UnicodeData.txt Blocks.txt EastAsianWidth.txt do if [ -r $data ] then true else echo $data not available, skipping table generation exit fi done echo generating from Unicode version `sed -e 's,[^.0-9],,g' -e 1q Blocks.txt` ############################################################################# # table generation echo generating combining characters table uniset +cat=Me +cat=Mn +cat=Cf -00AD +1160-11FF +200B +D7B0-D7C6 +D7CB-D7FB c > combining.t echo generating ambiguous width characters table sh ./mkwidthA && uniset +WIDTH-A -cat=Me -cat=Mn -cat=Cf c > ambiguous.t echo generating wide characters table sh ./mkwide ############################################################################# # end picolibc-1.7.4/newlib/libc/string/mkwide000077500000000000000000000024301414576234500202260ustar00rootroot00000000000000#! /bin/sh # Copyright(c) 2018 Thomas Wolff # generate list of wide characters, with convex closure skipcheck=false if [ ! -r EastAsianWidth.txt ] then ln -s /usr/share/unicode/ucd/EastAsianWidth.txt . || exit 1 fi if [ ! -r UnicodeData.txt ] then ln -s /usr/share/unicode/ucd/UnicodeData.txt . || exit 1 fi if [ ! -r Blocks.txt ] then ln -s /usr/share/unicode/ucd/Blocks.txt . || exit 1 fi sed -e "s,^\([^;]*\);[NAH],\1," -e t -e d EastAsianWidth.txt > wide.na sed -e "s,^\([^;]*\);[WF],\1," -e t -e d EastAsianWidth.txt > wide.fw PATH="$PATH:." # for uniset nrfw=`uniset +wide.fw nr | sed -e 's,.*:,,'` echo FW $nrfw nrna=`uniset +wide.na nr | sed -e 's,.*:,,'` echo NAH $nrna extrablocks="2E80-303E" # check all blocks includes () { nr=`uniset +wide.$2 -$1 nr | sed -e 's,.*:,,'` test $nr != $3 } echo "adding compact closure of wide ranges, this may take ~10min" for b in $extrablocks `sed -e 's,^\([0-9A-F]*\)\.\.\([0-9A-F]*\).*,\1-\2,' -e t -e d Blocks.txt` do range=$b echo checking $range $* >&2 if includes $range fw $nrfw && ! includes $range na $nrna then echo $range fi done > wide.blocks ( sed -e "s,^,//," -e 1q EastAsianWidth.txt sed -e "s,^,//," -e 1q Blocks.txt uniset `sed -e 's,^,+,' wide.blocks` +wide.fw c ) > wide.t rm -f wide.na wide.fw wide.blocks picolibc-1.7.4/newlib/libc/string/mkwidthA000077500000000000000000000012151414576234500205160ustar00rootroot00000000000000#! /bin/sh # Copyright(c) 2018 Thomas Wolff # generate WIDTH-A file, listing Unicode characters with width property # Ambiguous, from EastAsianWidth.txt if [ ! -r EastAsianWidth.txt ] then ln -s /usr/share/unicode/ucd/EastAsianWidth.txt . || exit 1 fi if [ ! -r UnicodeData.txt ] then ln -s /usr/share/unicode/ucd/UnicodeData.txt . || exit 1 fi if [ ! -r Blocks.txt ] then ln -s /usr/share/unicode/ucd/Blocks.txt . || exit 1 fi sed -e "s,^\([^;]*\);A,\1," -e t -e d EastAsianWidth.txt > width-a-new rm -f WIDTH-A echo "# UAX #11: East Asian Ambiguous" > WIDTH-A PATH="$PATH:." uniset +width-a-new compact >> WIDTH-A rm -f width-a-new picolibc-1.7.4/newlib/libc/string/rawmemchr.c000066400000000000000000000056011414576234500211540ustar00rootroot00000000000000/* Copyright (c) 2013 Yaakov Selkowitz */ /* FUNCTION <>---find character in memory INDEX rawmemchr SYNOPSIS #include void *rawmemchr(const void *<[src]>, int <[c]>); DESCRIPTION This function searches memory starting at <<*<[src]>>> for the character <[c]>. The search only ends with the first occurrence of <[c]>; in particular, <> does not terminate the search. No bounds checking is performed, so this function should only be used when it is certain that the character <[c]> will be found. RETURNS A pointer to the first occurance of character <[c]>. PORTABILITY <> is a GNU extension. <> requires no supporting OS subroutines. QUICKREF rawmemchr */ #include <_ansi.h> #include #include /* Nonzero if X is not aligned on a "long" boundary. */ #define UNALIGNED(X) ((long)X & (sizeof (long) - 1)) /* How many bytes are loaded each iteration of the word copy loop. */ #define LBLOCKSIZE (sizeof (long)) /* Threshhold for punting to the bytewise iterator. */ #define TOO_SMALL(LEN) ((LEN) < LBLOCKSIZE) #if LONG_MAX == 2147483647L #define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) #else #if LONG_MAX == 9223372036854775807L /* Nonzero if X (a long int) contains a NULL byte. */ #define DETECTNULL(X) (((X) - 0x0101010101010101) & ~(X) & 0x8080808080808080) #else #error long int is not a 32bit or 64bit type. #endif #endif #ifndef DETECTNULL #error long int is not a 32bit or 64bit byte #endif /* DETECTCHAR returns nonzero if (long)X contains the byte used to fill (long)MASK. */ #define DETECTCHAR(X,MASK) (DETECTNULL(X ^ MASK)) void * rawmemchr (const void *src_void, int c) { const unsigned char *src = (const unsigned char *) src_void; unsigned char d = c; #if !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) unsigned long *asrc; unsigned long mask; unsigned int i; while (UNALIGNED (src)) { if (*src == d) return (void *) src; src++; } /* If we get this far, we know that src is word-aligned. */ /* The fast code reads the source one word at a time and only performs the bytewise search on word-sized segments if they contain the search character, which is detected by XORing the word-sized segment with a word-sized block of the search character and then detecting for the presence of NUL in the result. */ asrc = (unsigned long *) src; mask = d << 8 | d; mask = mask << 16 | mask; for (i = 32; i < LBLOCKSIZE * 8; i <<= 1) mask = (mask << i) | mask; while (1) { if (DETECTCHAR (*asrc, mask)) break; asrc++; } /* We have the matching word, now we resort to a bytewise loop. */ src = (unsigned char *) asrc; #endif /* !PREFER_SIZE_OVER_SPEED && !__OPTIMIZE_SIZE__ */ while (1) { if (*src == d) return (void *) src; src++; } } picolibc-1.7.4/newlib/libc/string/rindex.c000066400000000000000000000025671414576234500204700ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---reverse search for character in string INDEX rindex SYNOPSIS #include char * rindex(const char *<[string]>, int <[c]>); DESCRIPTION This function finds the last occurence of <[c]> (converted to a char) in the string pointed to by <[string]> (including the terminating null character). This function is identical to <>. RETURNS Returns a pointer to the located character, or a null pointer if <[c]> does not occur in <[string]>. PORTABILITY <> requires no supporting OS subroutines. QUICKREF rindex - pure */ #include #include char * rindex (const char *s, int c) { return strrchr (s, c); } picolibc-1.7.4/newlib/libc/string/stpcpy.c000066400000000000000000000037531414576234500205170ustar00rootroot00000000000000/* Copyright (c) 2007 Corinna Vinschen */ /* FUNCTION <>---copy string returning a pointer to its end INDEX stpcpy SYNOPSIS #include char *stpcpy(char *restrict <[dst]>, const char *restrict <[src]>); DESCRIPTION <> copies the string pointed to by <[src]> (including the terminating null character) to the array pointed to by <[dst]>. RETURNS This function returns a pointer to the end of the destination string, thus pointing to the trailing '\0'. PORTABILITY <> is a GNU extension, candidate for inclusion into POSIX/SUSv4. <> requires no supporting OS subroutines. QUICKREF stpcpy gnu */ #include #include /*SUPPRESS 560*/ /*SUPPRESS 530*/ /* Nonzero if either X or Y is not aligned on a "long" boundary. */ #define UNALIGNED(X, Y) \ (((long)X & (sizeof (long) - 1)) | ((long)Y & (sizeof (long) - 1))) #if LONG_MAX == 2147483647L #define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) #else #if LONG_MAX == 9223372036854775807L /* Nonzero if X (a long int) contains a NULL byte. */ #define DETECTNULL(X) (((X) - 0x0101010101010101) & ~(X) & 0x8080808080808080) #else #error long int is not a 32bit or 64bit type. #endif #endif #ifndef DETECTNULL #error long int is not a 32bit or 64bit byte #endif char* stpcpy (char *__restrict dst, const char *__restrict src) { #if !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) long *aligned_dst; const long *aligned_src; /* If SRC or DEST is unaligned, then copy bytes. */ if (!UNALIGNED (src, dst)) { aligned_dst = (long*)dst; aligned_src = (long*)src; /* SRC and DEST are both "long int" aligned, try to do "long int" sized copies. */ while (!DETECTNULL(*aligned_src)) { *aligned_dst++ = *aligned_src++; } dst = (char*)aligned_dst; src = (char*)aligned_src; } #endif /* not PREFER_SIZE_OVER_SPEED */ while ((*dst++ = *src++)) ; return --dst; } picolibc-1.7.4/newlib/libc/string/stpncpy.c000066400000000000000000000052111414576234500206640ustar00rootroot00000000000000/* Copyright (c) 2007 Corinna Vinschen */ /* FUNCTION <>---counted copy string returning a pointer to its end INDEX stpncpy SYNOPSIS #include char *stpncpy(char *restrict <[dst]>, const char *restrict <[src]>, size_t <[length]>); DESCRIPTION <> copies not more than <[length]> characters from the the string pointed to by <[src]> (including the terminating null character) to the array pointed to by <[dst]>. If the string pointed to by <[src]> is shorter than <[length]> characters, null characters are appended to the destination array until a total of <[length]> characters have been written. RETURNS This function returns a pointer to the end of the destination string, thus pointing to the trailing '\0', or, if the destination string is not null-terminated, pointing to dst + n. PORTABILITY <> is a GNU extension, candidate for inclusion into POSIX/SUSv4. <> requires no supporting OS subroutines. QUICKREF stpncpy gnu */ #include #include /*SUPPRESS 560*/ /*SUPPRESS 530*/ /* Nonzero if either X or Y is not aligned on a "long" boundary. */ #define UNALIGNED(X, Y) \ (((long)X & (sizeof (long) - 1)) | ((long)Y & (sizeof (long) - 1))) #if LONG_MAX == 2147483647L #define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) #else #if LONG_MAX == 9223372036854775807L /* Nonzero if X (a long int) contains a NULL byte. */ #define DETECTNULL(X) (((X) - 0x0101010101010101) & ~(X) & 0x8080808080808080) #else #error long int is not a 32bit or 64bit type. #endif #endif #ifndef DETECTNULL #error long int is not a 32bit or 64bit byte #endif #define TOO_SMALL(LEN) ((LEN) < sizeof (long)) char * stpncpy (char *__restrict dst, const char *__restrict src, size_t count) { char *ret = NULL; #if !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) long *aligned_dst; const long *aligned_src; /* If SRC and DEST is aligned and count large enough, then copy words. */ if (!UNALIGNED (src, dst) && !TOO_SMALL (count)) { aligned_dst = (long*)dst; aligned_src = (long*)src; /* SRC and DEST are both "long int" aligned, try to do "long int" sized copies. */ while (count >= sizeof (long int) && !DETECTNULL(*aligned_src)) { count -= sizeof (long int); *aligned_dst++ = *aligned_src++; } dst = (char*)aligned_dst; src = (char*)aligned_src; } #endif /* not PREFER_SIZE_OVER_SPEED */ while (count > 0) { --count; if ((*dst++ = *src++) == '\0') { ret = dst - 1; break; } } while (count-- > 0) *dst++ = '\0'; return ret ? ret : dst; } picolibc-1.7.4/newlib/libc/string/str-two-way.h000066400000000000000000000330221414576234500214070ustar00rootroot00000000000000/* Byte-wise substring search, using the Two-Way algorithm. * Copyright (C) 2008, 2010 Eric Blake * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ /* Before including this file, you need to include , and define: RESULT_TYPE A macro that expands to the return type. AVAILABLE(h, h_l, j, n_l) A macro that returns nonzero if there are at least N_L bytes left starting at H[J]. H is 'unsigned char *', H_L, J, and N_L are 'size_t'; H_L is an lvalue. For NUL-terminated searches, H_L can be modified each iteration to avoid having to compute the end of H up front. For case-insensitivity, you may optionally define: CMP_FUNC(p1, p2, l) A macro that returns 0 iff the first L characters of P1 and P2 are equal. CANON_ELEMENT(c) A macro that canonicalizes an element right after it has been fetched from one of the two strings. The argument is an 'unsigned char'; the result must be an 'unsigned char' as well. This file undefines the macros documented above, and defines LONG_NEEDLE_THRESHOLD. */ #include #include #include <_ansi.h> /* We use the Two-Way string matching algorithm, which guarantees linear complexity with constant space. Additionally, for long needles, we also use a bad character shift table similar to the Boyer-Moore algorithm to achieve improved (potentially sub-linear) performance. See http://www-igm.univ-mlv.fr/~lecroq/string/node26.html#SECTION00260 and http://en.wikipedia.org/wiki/Boyer-Moore_string_search_algorithm */ /* Point at which computing a bad-byte shift table is likely to be worthwhile. Small needles should not compute a table, since it adds (1 << CHAR_BIT) + NEEDLE_LEN computations of preparation for a speedup no greater than a factor of NEEDLE_LEN. The larger the needle, the better the potential performance gain. On the other hand, on non-POSIX systems with CHAR_BIT larger than eight, the memory required for the table is prohibitive. */ #if CHAR_BIT < 10 # define LONG_NEEDLE_THRESHOLD 32U #else # define LONG_NEEDLE_THRESHOLD SIZE_MAX #endif #define MAX(a, b) ((a < b) ? (b) : (a)) #ifndef CANON_ELEMENT # define CANON_ELEMENT(c) c #endif #ifndef CMP_FUNC # define CMP_FUNC memcmp #endif /* Perform a critical factorization of NEEDLE, of length NEEDLE_LEN. Return the index of the first byte in the right half, and set *PERIOD to the global period of the right half. The global period of a string is the smallest index (possibly its length) at which all remaining bytes in the string are repetitions of the prefix (the last repetition may be a subset of the prefix). When NEEDLE is factored into two halves, a local period is the length of the smallest word that shares a suffix with the left half and shares a prefix with the right half. All factorizations of a non-empty NEEDLE have a local period of at least 1 and no greater than NEEDLE_LEN. A critical factorization has the property that the local period equals the global period. All strings have at least one critical factorization with the left half smaller than the global period. Given an ordered alphabet, a critical factorization can be computed in linear time, with 2 * NEEDLE_LEN comparisons, by computing the larger of two ordered maximal suffixes. The ordered maximal suffixes are determined by lexicographic comparison of periodicity. */ static size_t critical_factorization (const unsigned char *needle, size_t needle_len, size_t *period) { /* Index of last byte of left half, or SIZE_MAX. */ size_t max_suffix, max_suffix_rev; size_t j; /* Index into NEEDLE for current candidate suffix. */ size_t k; /* Offset into current period. */ size_t p; /* Intermediate period. */ unsigned char a, b; /* Current comparison bytes. */ /* Invariants: 0 <= j < NEEDLE_LEN - 1 -1 <= max_suffix{,_rev} < j (treating SIZE_MAX as if it were signed) min(max_suffix, max_suffix_rev) < global period of NEEDLE 1 <= p <= global period of NEEDLE p == global period of the substring NEEDLE[max_suffix{,_rev}+1...j] 1 <= k <= p */ /* Perform lexicographic search. */ max_suffix = SIZE_MAX; j = 0; k = p = 1; while (j + k < needle_len) { a = CANON_ELEMENT (needle[j + k]); b = CANON_ELEMENT (needle[(size_t)(max_suffix + k)]); if (a < b) { /* Suffix is smaller, period is entire prefix so far. */ j += k; k = 1; p = j - max_suffix; } else if (a == b) { /* Advance through repetition of the current period. */ if (k != p) ++k; else { j += p; k = 1; } } else /* b < a */ { /* Suffix is larger, start over from current location. */ max_suffix = j++; k = p = 1; } } *period = p; /* Perform reverse lexicographic search. */ max_suffix_rev = SIZE_MAX; j = 0; k = p = 1; while (j + k < needle_len) { a = CANON_ELEMENT (needle[j + k]); b = CANON_ELEMENT (needle[max_suffix_rev + k]); if (b < a) { /* Suffix is smaller, period is entire prefix so far. */ j += k; k = 1; p = j - max_suffix_rev; } else if (a == b) { /* Advance through repetition of the current period. */ if (k != p) ++k; else { j += p; k = 1; } } else /* a < b */ { /* Suffix is larger, start over from current location. */ max_suffix_rev = j++; k = p = 1; } } /* Choose the longer suffix. Return the first byte of the right half, rather than the last byte of the left half. */ if (max_suffix_rev + 1 < max_suffix + 1) return max_suffix + 1; *period = p; return max_suffix_rev + 1; } /* Return the first location of non-empty NEEDLE within HAYSTACK, or NULL. HAYSTACK_LEN is the minimum known length of HAYSTACK. This method is optimized for NEEDLE_LEN < LONG_NEEDLE_THRESHOLD. Performance is guaranteed to be linear, with an initialization cost of 2 * NEEDLE_LEN comparisons. If AVAILABLE does not modify HAYSTACK_LEN (as in memmem), then at most 2 * HAYSTACK_LEN - NEEDLE_LEN comparisons occur in searching. If AVAILABLE modifies HAYSTACK_LEN (as in strstr), then at most 3 * HAYSTACK_LEN - NEEDLE_LEN comparisons occur in searching. */ static inline RETURN_TYPE two_way_short_needle (const unsigned char *haystack, size_t haystack_len, const unsigned char *needle, size_t needle_len) { size_t i; /* Index into current byte of NEEDLE. */ size_t j; /* Index into current window of HAYSTACK. */ size_t period; /* The period of the right half of needle. */ size_t suffix; /* The index of the right half of needle. */ /* Factor the needle into two halves, such that the left half is smaller than the global period, and the right half is periodic (with a period as large as NEEDLE_LEN - suffix). */ suffix = critical_factorization (needle, needle_len, &period); /* Perform the search. Each iteration compares the right half first. */ if (CMP_FUNC (needle, needle + period, suffix) == 0) { /* Entire needle is periodic; a mismatch can only advance by the period, so use memory to avoid rescanning known occurrences of the period. */ size_t memory = 0; j = 0; while (AVAILABLE (haystack, haystack_len, j, needle_len)) { /* Scan for matches in right half. */ i = MAX (suffix, memory); while (i < needle_len && (CANON_ELEMENT (needle[i]) == CANON_ELEMENT (haystack[i + j]))) ++i; if (needle_len <= i) { /* Scan for matches in left half. */ i = suffix - 1; while (memory < i + 1 && (CANON_ELEMENT (needle[i]) == CANON_ELEMENT (haystack[i + j]))) --i; if (i + 1 < memory + 1) return (RETURN_TYPE) (haystack + j); /* No match, so remember how many repetitions of period on the right half were scanned. */ j += period; memory = needle_len - period; } else { j += i - suffix + 1; memory = 0; } } } else { /* The two halves of needle are distinct; no extra memory is required, and any mismatch results in a maximal shift. */ period = MAX (suffix, needle_len - suffix) + 1; j = 0; while (AVAILABLE (haystack, haystack_len, j, needle_len)) { /* Scan for matches in right half. */ i = suffix; while (i < needle_len && (CANON_ELEMENT (needle[i]) == CANON_ELEMENT (haystack[i + j]))) ++i; if (needle_len <= i) { /* Scan for matches in left half. */ i = suffix - 1; while (i != SIZE_MAX && (CANON_ELEMENT (needle[i]) == CANON_ELEMENT (haystack[i + j]))) --i; if (i == SIZE_MAX) return (RETURN_TYPE) (haystack + j); j += period; } else j += i - suffix + 1; } } return NULL; } /* Return the first location of non-empty NEEDLE within HAYSTACK, or NULL. HAYSTACK_LEN is the minimum known length of HAYSTACK. This method is optimized for LONG_NEEDLE_THRESHOLD <= NEEDLE_LEN. Performance is guaranteed to be linear, with an initialization cost of 3 * NEEDLE_LEN + (1 << CHAR_BIT) operations. If AVAILABLE does not modify HAYSTACK_LEN (as in memmem), then at most 2 * HAYSTACK_LEN - NEEDLE_LEN comparisons occur in searching, and sublinear performance O(HAYSTACK_LEN / NEEDLE_LEN) is possible. If AVAILABLE modifies HAYSTACK_LEN (as in strstr), then at most 3 * HAYSTACK_LEN - NEEDLE_LEN comparisons occur in searching, and sublinear performance is not possible. */ _NOINLINE_STATIC RETURN_TYPE __attribute__ ((__used__)) two_way_long_needle (const unsigned char *haystack, size_t haystack_len, const unsigned char *needle, size_t needle_len) { size_t i; /* Index into current byte of NEEDLE. */ size_t j; /* Index into current window of HAYSTACK. */ size_t period; /* The period of the right half of needle. */ size_t suffix; /* The index of the right half of needle. */ size_t shift_table[1U << CHAR_BIT]; /* See below. */ /* Factor the needle into two halves, such that the left half is smaller than the global period, and the right half is periodic (with a period as large as NEEDLE_LEN - suffix). */ suffix = critical_factorization (needle, needle_len, &period); /* Populate shift_table. For each possible byte value c, shift_table[c] is the distance from the last occurrence of c to the end of NEEDLE, or NEEDLE_LEN if c is absent from the NEEDLE. shift_table[NEEDLE[NEEDLE_LEN - 1]] contains the only 0. */ for (i = 0; i < 1U << CHAR_BIT; i++) shift_table[i] = needle_len; for (i = 0; i < needle_len; i++) shift_table[CANON_ELEMENT (needle[i])] = needle_len - i - 1; /* Perform the search. Each iteration compares the right half first. */ if (CMP_FUNC (needle, needle + period, suffix) == 0) { /* Entire needle is periodic; a mismatch can only advance by the period, so use memory to avoid rescanning known occurrences of the period. */ size_t memory = 0; size_t shift; j = 0; while (AVAILABLE (haystack, haystack_len, j, needle_len)) { /* Check the last byte first; if it does not match, then shift to the next possible match location. */ shift = shift_table[CANON_ELEMENT (haystack[j + needle_len - 1])]; if (0 < shift) { if (memory && shift < period) { /* Since needle is periodic, but the last period has a byte out of place, there can be no match until after the mismatch. */ shift = needle_len - period; } memory = 0; j += shift; continue; } /* Scan for matches in right half. The last byte has already been matched, by virtue of the shift table. */ i = MAX (suffix, memory); while (i < needle_len - 1 && (CANON_ELEMENT (needle[i]) == CANON_ELEMENT (haystack[i + j]))) ++i; if (needle_len - 1 <= i) { /* Scan for matches in left half. */ i = suffix - 1; while (memory < i + 1 && (CANON_ELEMENT (needle[i]) == CANON_ELEMENT (haystack[i + j]))) --i; if (i + 1 < memory + 1) return (RETURN_TYPE) (haystack + j); /* No match, so remember how many repetitions of period on the right half were scanned. */ j += period; memory = needle_len - period; } else { j += i - suffix + 1; memory = 0; } } } else { /* The two halves of needle are distinct; no extra memory is required, and any mismatch results in a maximal shift. */ size_t shift; period = MAX (suffix, needle_len - suffix) + 1; j = 0; while (AVAILABLE (haystack, haystack_len, j, needle_len)) { /* Check the last byte first; if it does not match, then shift to the next possible match location. */ shift = shift_table[CANON_ELEMENT (haystack[j + needle_len - 1])]; if (0 < shift) { j += shift; continue; } /* Scan for matches in right half. The last byte has already been matched, by virtue of the shift table. */ i = suffix; while (i < needle_len - 1 && (CANON_ELEMENT (needle[i]) == CANON_ELEMENT (haystack[i + j]))) ++i; if (needle_len - 1 <= i) { /* Scan for matches in left half. */ i = suffix - 1; while (i != SIZE_MAX && (CANON_ELEMENT (needle[i]) == CANON_ELEMENT (haystack[i + j]))) --i; if (i == SIZE_MAX) return (RETURN_TYPE) (haystack + j); j += period; } else j += i - suffix + 1; } } return NULL; } #undef AVAILABLE #undef CANON_ELEMENT #undef CMP_FUNC #undef MAX #undef RETURN_TYPE picolibc-1.7.4/newlib/libc/string/strcasecmp.c000066400000000000000000000034221414576234500213320ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---case-insensitive character string compare INDEX strcasecmp SYNOPSIS #include int strcasecmp(const char *<[a]>, const char *<[b]>); DESCRIPTION <> compares the string at <[a]> to the string at <[b]> in a case-insensitive manner. RETURNS If <<*<[a]>>> sorts lexicographically after <<*<[b]>>> (after both are converted to lowercase), <> returns a number greater than zero. If the two strings match, <> returns zero. If <<*<[a]>>> sorts lexicographically before <<*<[b]>>>, <> returns a number less than zero. PORTABILITY <> is in the Berkeley Software Distribution. <> requires no supporting OS subroutines. It uses tolower() from elsewhere in this library. QUICKREF strcasecmp */ #include #include int strcasecmp (const char *s1, const char *s2) { int d = 0; for ( ; ; ) { const int c1 = tolower(*s1++); const int c2 = tolower(*s2++); if (((d = c1 - c2) != 0) || (c2 == '\0')) break; } return d; } picolibc-1.7.4/newlib/libc/string/strcasecmp_l.c000066400000000000000000000025131414576234500216450ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen */ /* FUNCTION <>---case-insensitive character string compare INDEX strcasecmp_l SYNOPSIS #include int strcasecmp_l(const char *<[a]>, const char *<[b]>, locale_t <[locale]>); DESCRIPTION <> compares the string at <[a]> to the string at <[b]> in a case-insensitive manner. if <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS If <<*<[a]>>> sorts lexicographically after <<*<[b]>>> (after both are converted to lowercase), <> returns a number greater than zero. If the two strings match, <> returns zero. If <<*<[a]>>> sorts lexicographically before <<*<[b]>>>, <> returns a number less than zero. PORTABILITY <> is POSIX-1.2008. <> requires no supporting OS subroutines. It uses tolower_l() from elsewhere in this library. QUICKREF strcasecmp_l */ #define _DEFAULT_SOURCE #include #include int strcasecmp_l (const char *s1, const char *s2, struct __locale_t *locale) { int d = 0; for ( ; ; ) { const int c1 = tolower_l (*s1++, locale); const int c2 = tolower_l (*s2++, locale); if (((d = c1 - c2) != 0) || (c2 == '\0')) break; } return d; } picolibc-1.7.4/newlib/libc/string/strcasestr.c000066400000000000000000000113541414576234500213660ustar00rootroot00000000000000/* FUNCTION <>---case-insensitive character string search INDEX strcasestr SYNOPSIS #include char *strcasestr(const char *<[s]>, const char *<[find]>); DESCRIPTION <> searchs the string <[s]> for the first occurrence of the sequence <[find]>. <> is identical to <> except the search is case-insensitive. RETURNS A pointer to the first case-insensitive occurrence of the sequence <[find]> or <> if no match was found. PORTABILITY <> is in the Berkeley Software Distribution. <> requires no supporting OS subroutines. It uses tolower() from elsewhere in this library. QUICKREF strcasestr */ /*- * Copyright (c) 1990, 1993 * The Regents of the University of California. All rights reserved. * * The quadratic code is derived from software contributed to Berkeley by * Chris Torek. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* Linear algorithm Copyright (C) 2008 Eric Blake * Permission to use, copy, modify, and distribute the linear portion of * software is freely granted, provided that this notice is preserved. */ #include #include #include #include #if !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) # define RETURN_TYPE char * # define AVAILABLE(h, h_l, j, n_l) \ (!memchr ((h) + (h_l), '\0', (j) + (n_l) - (h_l)) \ && ((h_l) = (j) + (n_l))) # define CANON_ELEMENT(c) tolower (c) #if __GNUC_PREREQ (4, 2) /* strncasecmp uses signed char, CMP_FUNC is expected to use unsigned char. */ #pragma GCC diagnostic ignored "-Wpointer-sign" #endif # define CMP_FUNC strncasecmp # include "str-two-way.h" #endif /* * Find the first occurrence of find in s, ignore case. */ char * strcasestr (const char *s, const char *find) { #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) /* Less code size, but quadratic performance in the worst case. */ char c, sc; size_t len; if ((c = *find++) != 0) { c = tolower((unsigned char)c); len = strlen(find); do { do { if ((sc = *s++) == 0) return (NULL); } while ((char)tolower((unsigned char)sc) != c); } while (strncasecmp(s, find, len) != 0); s--; } return ((char *)s); #else /* compilation for speed */ /* Larger code size, but guaranteed linear performance. */ const char *haystack = s; const char *needle = find; size_t needle_len; /* Length of NEEDLE. */ size_t haystack_len; /* Known minimum length of HAYSTACK. */ int ok = 1; /* True if NEEDLE is prefix of HAYSTACK. */ /* Determine length of NEEDLE, and in the process, make sure HAYSTACK is at least as long (no point processing all of a long NEEDLE if HAYSTACK is too short). */ while (*haystack && *needle) ok &= (tolower ((unsigned char) *haystack++) == tolower ((unsigned char) *needle++)); if (*needle) return NULL; if (ok) return (char *) s; needle_len = needle - find; haystack = s + 1; haystack_len = needle_len - 1; /* Perform the search. */ if (needle_len < LONG_NEEDLE_THRESHOLD) return two_way_short_needle ((const unsigned char *) haystack, haystack_len, (const unsigned char *) find, needle_len); return two_way_long_needle ((const unsigned char *) haystack, haystack_len, (const unsigned char *) find, needle_len); #endif /* compilation for speed */ } picolibc-1.7.4/newlib/libc/string/strcat.c000066400000000000000000000054351414576234500204740ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---concatenate strings INDEX strcat SYNOPSIS #include char *strcat(char *restrict <[dst]>, const char *restrict <[src]>); DESCRIPTION <> appends a copy of the string pointed to by <[src]> (including the terminating null character) to the end of the string pointed to by <[dst]>. The initial character of <[src]> overwrites the null character at the end of <[dst]>. RETURNS This function returns the initial value of <[dst]> PORTABILITY <> is ANSI C. <> requires no supporting OS subroutines. QUICKREF strcat ansi pure */ #include #include /* Nonzero if X is aligned on a "long" boundary. */ #define ALIGNED(X) \ (((long)X & (sizeof (long) - 1)) == 0) #if LONG_MAX == 2147483647L #define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) #else #if LONG_MAX == 9223372036854775807L /* Nonzero if X (a long int) contains a NULL byte. */ #define DETECTNULL(X) (((X) - 0x0101010101010101) & ~(X) & 0x8080808080808080) #else #error long int is not a 32bit or 64bit type. #endif #endif #ifndef DETECTNULL #error long int is not a 32bit or 64bit byte #endif /*SUPPRESS 560*/ /*SUPPRESS 530*/ #undef strcat char * strcat (char *__restrict s1, const char *__restrict s2) { #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) char *s = s1; while (*s1) s1++; while ((*s1++ = *s2++)) ; return s; #else char *s = s1; /* Skip over the data in s1 as quickly as possible. */ if (ALIGNED (s1)) { unsigned long *aligned_s1 = (unsigned long *)s1; while (!DETECTNULL (*aligned_s1)) aligned_s1++; s1 = (char *)aligned_s1; } while (*s1) s1++; /* s1 now points to the its trailing null character, we can just use strcpy to do the work for us now. ?!? We might want to just include strcpy here. Also, this will cause many more unaligned string copies because s1 is much less likely to be aligned. I don't know if its worth tweaking strcpy to handle this better. */ strcpy (s1, s2); return s; #endif /* not PREFER_SIZE_OVER_SPEED */ } picolibc-1.7.4/newlib/libc/string/strchr.c000066400000000000000000000066101414576234500204750ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---search for character in string INDEX strchr SYNOPSIS #include char * strchr(const char *<[string]>, int <[c]>); DESCRIPTION This function finds the first occurence of <[c]> (converted to a char) in the string pointed to by <[string]> (including the terminating null character). RETURNS Returns a pointer to the located character, or a null pointer if <[c]> does not occur in <[string]>. PORTABILITY <> is ANSI C. <> requires no supporting OS subroutines. QUICKREF strchr ansi pure */ #include #include /* Nonzero if X is not aligned on a "long" boundary. */ #define UNALIGNED(X) ((long)X & (sizeof (long) - 1)) /* How many bytes are loaded each iteration of the word copy loop. */ #define LBLOCKSIZE (sizeof (long)) #if LONG_MAX == 2147483647L #define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) #else #if LONG_MAX == 9223372036854775807L /* Nonzero if X (a long int) contains a NULL byte. */ #define DETECTNULL(X) (((X) - 0x0101010101010101) & ~(X) & 0x8080808080808080) #else #error long int is not a 32bit or 64bit type. #endif #endif /* DETECTCHAR returns nonzero if (long)X contains the byte used to fill (long)MASK. */ #define DETECTCHAR(X,MASK) (DETECTNULL(X ^ MASK)) char * strchr (const char *s1, int i) { const unsigned char *s = (const unsigned char *)s1; unsigned char c = i; #if !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) unsigned long mask,j; unsigned long *aligned_addr; /* Special case for finding 0. */ if (!c) { while (UNALIGNED (s)) { if (!*s) return (char *) s; s++; } /* Operate a word at a time. */ aligned_addr = (unsigned long *) s; while (!DETECTNULL (*aligned_addr)) aligned_addr++; /* Found the end of string. */ s = (const unsigned char *) aligned_addr; while (*s) s++; return (char *) s; } /* All other bytes. Align the pointer, then search a long at a time. */ while (UNALIGNED (s)) { if (!*s) return NULL; if (*s == c) return (char *) s; s++; } mask = c; for (j = 8; j < LBLOCKSIZE * 8; j <<= 1) mask = (mask << j) | mask; aligned_addr = (unsigned long *) s; while (!DETECTNULL (*aligned_addr) && !DETECTCHAR (*aligned_addr, mask)) aligned_addr++; /* The block of bytes currently pointed to by aligned_addr contains either a null or the target char, or both. We catch it using the bytewise search. */ s = (unsigned char *) aligned_addr; #endif /* not PREFER_SIZE_OVER_SPEED */ while (*s && *s != c) s++; if (*s == c) return (char *)s; return NULL; } picolibc-1.7.4/newlib/libc/string/strchrnul.c000066400000000000000000000015321414576234500212120ustar00rootroot00000000000000/* Copyright (c) 2011 Corinna Vinschen */ /* FUNCTION <>---search for character in string INDEX strchrnul SYNOPSIS #include char * strchrnul(const char *<[string]>, int <[c]>); DESCRIPTION This function finds the first occurence of <[c]> (converted to a char) in the string pointed to by <[string]> (including the terminating null character). RETURNS Returns a pointer to the located character, or a pointer to the concluding null byte if <[c]> does not occur in <[string]>. PORTABILITY <> is a GNU extension. <> requires no supporting OS subroutines. It uses strchr() and strlen() from elsewhere in this library. QUICKREF strchrnul */ #include char * strchrnul (const char *s1, int i) { char *s = strchr(s1, i); return s ? s : (char *)s1 + strlen(s1); } picolibc-1.7.4/newlib/libc/string/strcmp.c000066400000000000000000000057651414576234500205120ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---character string compare INDEX strcmp SYNOPSIS #include int strcmp(const char *<[a]>, const char *<[b]>); DESCRIPTION <> compares the string at <[a]> to the string at <[b]>. RETURNS If <<*<[a]>>> sorts lexicographically after <<*<[b]>>>, <> returns a number greater than zero. If the two strings match, <> returns zero. If <<*<[a]>>> sorts lexicographically before <<*<[b]>>>, <> returns a number less than zero. PORTABILITY <> is ANSI C. <> requires no supporting OS subroutines. QUICKREF strcmp ansi pure */ #include #include /* Nonzero if either X or Y is not aligned on a "long" boundary. */ #define UNALIGNED(X, Y) \ (((long)X & (sizeof (long) - 1)) | ((long)Y & (sizeof (long) - 1))) /* DETECTNULL returns nonzero if (long)X contains a NULL byte. */ #if LONG_MAX == 2147483647L #define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) #else #if LONG_MAX == 9223372036854775807L #define DETECTNULL(X) (((X) - 0x0101010101010101) & ~(X) & 0x8080808080808080) #else #error long int is not a 32bit or 64bit type. #endif #endif #ifndef DETECTNULL #error long int is not a 32bit or 64bit byte #endif int strcmp (const char *s1, const char *s2) { #if (defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__)) && !defined(FAST_STRCMP) while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } return (*(unsigned char *) s1) - (*(unsigned char *) s2); #else unsigned long *a1; unsigned long *a2; /* If s1 or s2 are unaligned, then compare bytes. */ if (!UNALIGNED (s1, s2)) { /* If s1 and s2 are word-aligned, compare them a word at a time. */ a1 = (unsigned long*)s1; a2 = (unsigned long*)s2; while (*a1 == *a2) { /* To get here, *a1 == *a2, thus if we find a null in *a1, then the strings must be equal, so return zero. */ if (DETECTNULL (*a1)) return 0; a1++; a2++; } /* A difference was detected in last few bytes of s1, so search bytewise */ s1 = (char*)a1; s2 = (char*)a2; } while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } return (*(unsigned char *) s1) - (*(unsigned char *) s2); #endif /* not PREFER_SIZE_OVER_SPEED */ } picolibc-1.7.4/newlib/libc/string/strcoll.c000066400000000000000000000032351414576234500206520ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---locale-specific character string compare INDEX strcoll SYNOPSIS #include int strcoll(const char *<[stra]>, const char * <[strb]>); DESCRIPTION <> compares the string pointed to by <[stra]> to the string pointed to by <[strb]>, using an interpretation appropriate to the current <> state. (NOT Cygwin:) The current implementation of <> simply uses <> and does not support any language-specific sorting. RETURNS If the first string is greater than the second string, <> returns a number greater than zero. If the two strings are equivalent, <> returns zero. If the first string is less than the second string, <> returns a number less than zero. PORTABILITY <> is ANSI C. <> requires no supporting OS subroutines. QUICKREF strcoll ansi pure */ #include int strcoll (const char *a, const char *b) { return strcmp (a, b); } picolibc-1.7.4/newlib/libc/string/strcoll_l.c000066400000000000000000000023641414576234500211670ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen */ /* FUNCTION <>---locale-specific character string compare INDEX strcoll_l SYNOPSIS #include int strcoll_l(const char *<[stra]>, const char * <[strb]>, locale_t <[locale]>); DESCRIPTION <> compares the string pointed to by <[stra]> to the string pointed to by <[strb]>, using an interpretation appropriate to the current <> state. (NOT Cygwin:) The current implementation of <> simply uses <> and does not support any language-specific sorting. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS If the first string is greater than the second string, <> returns a number greater than zero. If the two strings are equivalent, <> returns zero. If the first string is less than the second string, <> returns a number less than zero. PORTABILITY <> is POSIX-1.2008. <> requires no supporting OS subroutines. QUICKREF strcoll_l ansi pure */ #define _DEFAULT_SOURCE #include int strcoll_l (const char *a, const char *b, struct __locale_t *locale) { (void) locale; return strcmp (a, b); } picolibc-1.7.4/newlib/libc/string/strcpy.c000066400000000000000000000051141414576234500205120ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---copy string INDEX strcpy SYNOPSIS #include char *strcpy(char *<[dst]>, const char *<[src]>); DESCRIPTION <> copies the string pointed to by <[src]> (including the terminating null character) to the array pointed to by <[dst]>. RETURNS This function returns the initial value of <[dst]>. PORTABILITY <> is ANSI C. <> requires no supporting OS subroutines. QUICKREF strcpy ansi pure */ #include #include /*SUPPRESS 560*/ /*SUPPRESS 530*/ /* Nonzero if either X or Y is not aligned on a "long" boundary. */ #define UNALIGNED(X, Y) \ (((long)X & (sizeof (long) - 1)) | ((long)Y & (sizeof (long) - 1))) #if LONG_MAX == 2147483647L #define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) #else #if LONG_MAX == 9223372036854775807L /* Nonzero if X (a long int) contains a NULL byte. */ #define DETECTNULL(X) (((X) - 0x0101010101010101) & ~(X) & 0x8080808080808080) #else #error long int is not a 32bit or 64bit type. #endif #endif #ifndef DETECTNULL #error long int is not a 32bit or 64bit byte #endif #undef strcpy char* strcpy (char *dst0, const char *src0) { #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) char *s = dst0; while ((*dst0++ = *src0++)) ; return s; #else char *dst = dst0; const char *src = src0; long *aligned_dst; const long *aligned_src; /* If SRC or DEST is unaligned, then copy bytes. */ if (!UNALIGNED (src, dst)) { aligned_dst = (long*)dst; aligned_src = (long*)src; /* SRC and DEST are both "long int" aligned, try to do "long int" sized copies. */ while (!DETECTNULL(*aligned_src)) { *aligned_dst++ = *aligned_src++; } dst = (char*)aligned_dst; src = (char*)aligned_src; } while ((*dst++ = *src++)) ; return dst0; #endif /* not PREFER_SIZE_OVER_SPEED */ } picolibc-1.7.4/newlib/libc/string/strcspn.c000066400000000000000000000027321414576234500206650ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---count characters not in string INDEX strcspn SYNOPSIS size_t strcspn(const char *<[s1]>, const char *<[s2]>); DESCRIPTION This function computes the length of the initial part of the string pointed to by <[s1]> which consists entirely of characters <[NOT]> from the string pointed to by <[s2]> (excluding the terminating null character). RETURNS <> returns the length of the substring found. PORTABILITY <> is ANSI C. <> requires no supporting OS subroutines. */ #include size_t strcspn (const char *s1, const char *s2) { const char *s = s1; const char *c; while (*s1) { for (c = s2; *c; c++) { if (*s1 == *c) break; } if (*c) break; s1++; } return s1 - s; } picolibc-1.7.4/newlib/libc/string/strdup.c000066400000000000000000000004771414576234500205160ustar00rootroot00000000000000/* Copyright (c) 2002 Jeff Johnston */ #ifndef _REENT_ONLY #include #include char * strdup (const char *str) { size_t len = strlen (str) + 1; char *copy = malloc (len); if (copy) { memcpy (copy, str, len); } return copy; } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/string/strdup_r.c000066400000000000000000000005041414576234500210260ustar00rootroot00000000000000/* Copyright (c) 2002 Jeff Johnston */ #include #include char * _strdup_r (struct _reent *reent_ptr, const char *str) { size_t len = strlen (str) + 1; char *copy = _malloc_r (reent_ptr, len); if (copy) { memcpy (copy, str, len); } return copy; } picolibc-1.7.4/newlib/libc/string/strerror.c000066400000000000000000000423531414576234500210560ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /*** **** CAUTION!!! KEEP DOC CONSISTENT---if you change text of a message **** here, change two places: **** 1) the leading doc section (alphabetized by macro) **** 2) the real text inside switch(errnum) ***/ /* FUNCTION <>, <>---convert error number to string INDEX strerror INDEX strerror_l SYNOPSIS #include char *strerror(int <[errnum]>); char *strerror_l(int <[errnum]>, locale_t <[locale]>); char *_strerror_r(struct _reent <[ptr]>, int <[errnum]>, int <[internal]>, int *<[error]>); DESCRIPTION <> converts the error number <[errnum]> into a string. The value of <[errnum]> is usually a copy of <>. If <> is not a known error number, the result points to an empty string. <> is like <> but creates a string in a format as expected in locale <[locale]>. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. This implementation of <> prints out the following strings for each of the values defined in `<>': o+ o 0 Success o E2BIG Arg list too long o EACCES Permission denied o EADDRINUSE Address already in use o EADDRNOTAVAIL Address not available o EADV Advertise error o EAFNOSUPPORT Address family not supported by protocol family o EAGAIN No more processes o EALREADY Socket already connected o EBADF Bad file number o EBADMSG Bad message o EBUSY Device or resource busy o ECANCELED Operation canceled o ECHILD No children o ECOMM Communication error o ECONNABORTED Software caused connection abort o ECONNREFUSED Connection refused o ECONNRESET Connection reset by peer o EDEADLK Deadlock o EDESTADDRREQ Destination address required o EEXIST File exists o EDOM Mathematics argument out of domain of function o EFAULT Bad address o EFBIG File too large o EHOSTDOWN Host is down o EHOSTUNREACH Host is unreachable o EIDRM Identifier removed o EILSEQ Illegal byte sequence o EINPROGRESS Connection already in progress o EINTR Interrupted system call o EINVAL Invalid argument o EIO I/O error o EISCONN Socket is already connected o EISDIR Is a directory o ELIBACC Cannot access a needed shared library o ELIBBAD Accessing a corrupted shared library o ELIBEXEC Cannot exec a shared library directly o ELIBMAX Attempting to link in more shared libraries than system limit o ELIBSCN <<.lib>> section in a.out corrupted o EMFILE File descriptor value too large o EMLINK Too many links o EMSGSIZE Message too long o EMULTIHOP Multihop attempted o ENAMETOOLONG File or path name too long o ENETDOWN Network interface is not configured o ENETRESET Connection aborted by network o ENETUNREACH Network is unreachable o ENFILE Too many open files in system o ENOBUFS No buffer space available o ENODATA No data o ENODEV No such device o ENOENT No such file or directory o ENOEXEC Exec format error o ENOLCK No lock o ENOLINK Virtual circuit is gone o ENOMEM Not enough space o ENOMSG No message of desired type o ENONET Machine is not on the network o ENOPKG No package o ENOPROTOOPT Protocol not available o ENOSPC No space left on device o ENOSR No stream resources o ENOSTR Not a stream o ENOSYS Function not implemented o ENOTBLK Block device required o ENOTCONN Socket is not connected o ENOTDIR Not a directory o ENOTEMPTY Directory not empty o ENOTRECOVERABLE State not recoverable o ENOTSOCK Socket operation on non-socket o ENOTSUP Not supported o ENOTTY Not a character device o ENXIO No such device or address o EOPNOTSUPP Operation not supported on socket o EOVERFLOW Value too large for defined data type o EOWNERDEAD Previous owner died o EPERM Not owner o EPIPE Broken pipe o EPROTO Protocol error o EPROTOTYPE Protocol wrong type for socket o EPROTONOSUPPORT Unknown protocol o ERANGE Result too large o EREMOTE Resource is remote o EROFS Read-only file system o ESHUTDOWN Can't send after socket shutdown o ESOCKTNOSUPPORT Socket type not supported o ESPIPE Illegal seek o ESRCH No such process o ESRMNT Srmount error o ESTRPIPE Strings pipe error o ETIME Stream ioctl timeout o ETIMEDOUT Connection timed out o ETXTBSY Text file busy o EWOULDBLOCK Operation would block (usually same as EAGAIN) o EXDEV Cross-device link o- <<_strerror_r>> is a reentrant version of the above. RETURNS This function returns a pointer to a string. Your application must not modify that string. PORTABILITY ANSI C requires <>, but does not specify the strings used for each error number. <> is POSIX-1.2008. Although this implementation of <> is reentrant (depending on <<_user_strerror>>), ANSI C declares that subsequent calls to <> may overwrite the result string; therefore portable code cannot depend on the reentrancy of this subroutine. Although this implementation of <> guarantees a non-null result with a NUL-terminator, some implementations return <> on failure. Although POSIX allows <> to set <> to EINVAL on failure, this implementation does not do so (unless you provide <<_user_strerror>>). POSIX recommends that unknown <[errnum]> result in a message including that value, however it is not a requirement and this implementation does not provide that information (unless you provide <<_user_strerror>>). This implementation of <> provides for user-defined extensibility. <> defines <[__ELASTERROR]>, which can be used as a base for user-defined error values. If the user supplies a routine named <<_user_strerror>>, and <[errnum]> passed to <> does not match any of the supported values, <<_user_strerror>> is called with three arguments. The first is of type <[int]>, and is the <[errnum]> value unknown to <>. The second is of type <[int]>, and matches the <[internal]> argument of <<_strerror_r>>; this should be zero if called from <> and non-zero if called from any other function; <<_user_strerror>> can use this information to satisfy the POSIX rule that no other standardized function can overwrite a static buffer reused by <>. The third is of type <[int *]>, and matches the <[error]> argument of <<_strerror_r>>; if a non-zero value is stored into that location (usually <[EINVAL]>), then <> will set <> to that value, and the XPG variant of <> will return that value instead of zero or <[ERANGE]>. <<_user_strerror>> returns a <[char *]> value; returning <[NULL]> implies that the user function did not choose to handle <[errnum]>. The default <<_user_strerror>> returns <[NULL]> for all input values. Note that <<_user_sterror>> must be thread-safe, and only denote errors via the third argument rather than modifying <>, if <> and <> are are to comply with POSIX. <> requires no supporting OS subroutines. QUICKREF strerror ansi pure */ #define _DEFAULT_SOURCE #include #include char * _strerror_r ( int errnum, int internal, int *errptr) { char *error; extern char *_user_strerror (int, int, int *); switch (errnum) { case 0: error = "Success"; break; /* go32 defines EPERM as EACCES */ #if defined (EPERM) && (!defined (EACCES) || (EPERM != EACCES)) case EPERM: error = "Not owner"; break; #endif #ifdef ENOENT case ENOENT: error = "No such file or directory"; break; #endif #ifdef ESRCH case ESRCH: error = "No such process"; break; #endif #ifdef EINTR case EINTR: error = "Interrupted system call"; break; #endif #ifdef EIO case EIO: error = "I/O error"; break; #endif /* go32 defines ENXIO as ENODEV */ #if defined (ENXIO) && (!defined (ENODEV) || (ENXIO != ENODEV)) case ENXIO: error = "No such device or address"; break; #endif #ifdef E2BIG case E2BIG: error = "Arg list too long"; break; #endif #ifdef ENOEXEC case ENOEXEC: error = "Exec format error"; break; #endif #ifdef EALREADY case EALREADY: error = "Socket already connected"; break; #endif #ifdef EBADF case EBADF: error = "Bad file number"; break; #endif #ifdef ECHILD case ECHILD: error = "No children"; break; #endif #ifdef EDESTADDRREQ case EDESTADDRREQ: error = "Destination address required"; break; #endif #ifdef EAGAIN case EAGAIN: error = "No more processes"; break; #endif #ifdef ENOMEM case ENOMEM: error = "Not enough space"; break; #endif #ifdef EACCES case EACCES: error = "Permission denied"; break; #endif #ifdef EFAULT case EFAULT: error = "Bad address"; break; #endif #ifdef ENOTBLK case ENOTBLK: error = "Block device required"; break; #endif #ifdef EBUSY case EBUSY: error = "Device or resource busy"; break; #endif #ifdef EEXIST case EEXIST: error = "File exists"; break; #endif #ifdef EXDEV case EXDEV: error = "Cross-device link"; break; #endif #ifdef ENODEV case ENODEV: error = "No such device"; break; #endif #ifdef ENOTDIR case ENOTDIR: error = "Not a directory"; break; #endif #ifdef EHOSTDOWN case EHOSTDOWN: error = "Host is down"; break; #endif #ifdef EINPROGRESS case EINPROGRESS: error = "Connection already in progress"; break; #endif #ifdef EISDIR case EISDIR: error = "Is a directory"; break; #endif #ifdef EINVAL case EINVAL: error = "Invalid argument"; break; #endif #ifdef ENETDOWN case ENETDOWN: error = "Network interface is not configured"; break; #endif #ifdef ENETRESET case ENETRESET: error = "Connection aborted by network"; break; #endif #ifdef ENFILE case ENFILE: error = "Too many open files in system"; break; #endif #ifdef EMFILE case EMFILE: error = "File descriptor value too large"; break; #endif #ifdef ENOTTY case ENOTTY: error = "Not a character device"; break; #endif #ifdef ETXTBSY case ETXTBSY: error = "Text file busy"; break; #endif #ifdef EFBIG case EFBIG: error = "File too large"; break; #endif #ifdef EHOSTUNREACH case EHOSTUNREACH: error = "Host is unreachable"; break; #endif #ifdef ENOSPC case ENOSPC: error = "No space left on device"; break; #endif #ifdef ENOTSUP case ENOTSUP: error = "Not supported"; break; #endif #ifdef ESPIPE case ESPIPE: error = "Illegal seek"; break; #endif #ifdef EROFS case EROFS: error = "Read-only file system"; break; #endif #ifdef EMLINK case EMLINK: error = "Too many links"; break; #endif #ifdef EPIPE case EPIPE: error = "Broken pipe"; break; #endif #ifdef EDOM case EDOM: error = "Mathematics argument out of domain of function"; break; #endif #ifdef ERANGE case ERANGE: error = "Result too large"; break; #endif #ifdef ENOMSG case ENOMSG: error = "No message of desired type"; break; #endif #ifdef EIDRM case EIDRM: error = "Identifier removed"; break; #endif #ifdef EILSEQ case EILSEQ: error = "Illegal byte sequence"; break; #endif #ifdef EDEADLK case EDEADLK: error = "Deadlock"; break; #endif #ifdef ENETUNREACH case ENETUNREACH: error = "Network is unreachable"; break; #endif #ifdef ENOLCK case ENOLCK: error = "No lock"; break; #endif #ifdef ENOSTR case ENOSTR: error = "Not a stream"; break; #endif #ifdef ETIME case ETIME: error = "Stream ioctl timeout"; break; #endif #ifdef ENOSR case ENOSR: error = "No stream resources"; break; #endif #ifdef ENONET case ENONET: error = "Machine is not on the network"; break; #endif #ifdef ENOPKG case ENOPKG: error = "No package"; break; #endif #ifdef EREMOTE case EREMOTE: error = "Resource is remote"; break; #endif #ifdef ENOLINK case ENOLINK: error = "Virtual circuit is gone"; break; #endif #ifdef EADV case EADV: error = "Advertise error"; break; #endif #ifdef ESRMNT case ESRMNT: error = "Srmount error"; break; #endif #ifdef ECOMM case ECOMM: error = "Communication error"; break; #endif #ifdef EPROTO case EPROTO: error = "Protocol error"; break; #endif #ifdef EPROTONOSUPPORT case EPROTONOSUPPORT: error = "Unknown protocol"; break; #endif #ifdef EMULTIHOP case EMULTIHOP: error = "Multihop attempted"; break; #endif #ifdef EBADMSG case EBADMSG: error = "Bad message"; break; #endif #ifdef ELIBACC case ELIBACC: error = "Cannot access a needed shared library"; break; #endif #ifdef ELIBBAD case ELIBBAD: error = "Accessing a corrupted shared library"; break; #endif #ifdef ELIBSCN case ELIBSCN: error = ".lib section in a.out corrupted"; break; #endif #ifdef ELIBMAX case ELIBMAX: error = "Attempting to link in more shared libraries than system limit"; break; #endif #ifdef ELIBEXEC case ELIBEXEC: error = "Cannot exec a shared library directly"; break; #endif #ifdef ENOSYS case ENOSYS: error = "Function not implemented"; break; #endif #ifdef ENMFILE case ENMFILE: error = "No more files"; break; #endif #ifdef ENOTEMPTY case ENOTEMPTY: error = "Directory not empty"; break; #endif #ifdef ENAMETOOLONG case ENAMETOOLONG: error = "File or path name too long"; break; #endif #ifdef ELOOP case ELOOP: error = "Too many symbolic links"; break; #endif #ifdef ENOBUFS case ENOBUFS: error = "No buffer space available"; break; #endif #ifdef ENODATA case ENODATA: error = "No data"; break; #endif #ifdef EAFNOSUPPORT case EAFNOSUPPORT: error = "Address family not supported by protocol family"; break; #endif #ifdef EPROTOTYPE case EPROTOTYPE: error = "Protocol wrong type for socket"; break; #endif #ifdef ENOTSOCK case ENOTSOCK: error = "Socket operation on non-socket"; break; #endif #ifdef ENOPROTOOPT case ENOPROTOOPT: error = "Protocol not available"; break; #endif #ifdef ESHUTDOWN case ESHUTDOWN: error = "Can't send after socket shutdown"; break; #endif #ifdef ECONNREFUSED case ECONNREFUSED: error = "Connection refused"; break; #endif #ifdef ECONNRESET case ECONNRESET: error = "Connection reset by peer"; break; #endif #ifdef EADDRINUSE case EADDRINUSE: error = "Address already in use"; break; #endif #ifdef EADDRNOTAVAIL case EADDRNOTAVAIL: error = "Address not available"; break; #endif #ifdef ECONNABORTED case ECONNABORTED: error = "Software caused connection abort"; break; #endif #if (defined(EWOULDBLOCK) && (!defined (EAGAIN) || (EWOULDBLOCK != EAGAIN))) case EWOULDBLOCK: error = "Operation would block"; break; #endif #ifdef ENOTCONN case ENOTCONN: error = "Socket is not connected"; break; #endif #ifdef ESOCKTNOSUPPORT case ESOCKTNOSUPPORT: error = "Socket type not supported"; break; #endif #ifdef EISCONN case EISCONN: error = "Socket is already connected"; break; #endif #ifdef ECANCELED case ECANCELED: error = "Operation canceled"; break; #endif #ifdef ENOTRECOVERABLE case ENOTRECOVERABLE: error = "State not recoverable"; break; #endif #ifdef EOWNERDEAD case EOWNERDEAD: error = "Previous owner died"; break; #endif #ifdef ESTRPIPE case ESTRPIPE: error = "Streams pipe error"; break; #endif #if defined(EOPNOTSUPP) && (!defined(ENOTSUP) || (ENOTSUP != EOPNOTSUPP)) case EOPNOTSUPP: error = "Operation not supported on socket"; break; #endif #ifdef EOVERFLOW case EOVERFLOW: error = "Value too large for defined data type"; break; #endif #ifdef EMSGSIZE case EMSGSIZE: error = "Message too long"; break; #endif #ifdef ETIMEDOUT case ETIMEDOUT: error = "Connection timed out"; break; #endif default: if (!errptr) errptr = &__errno_r(ptr); if ((error = _user_strerror (errnum, internal, errptr)) == 0) error = ""; break; } return error; } char * strerror (int errnum) { return _strerror_r (errnum, 0, NULL); } char * strerror_l (int errnum, locale_t locale) { (void) locale; /* We don't support per-locale error messages. */ return _strerror_r (errnum, 0, NULL); } picolibc-1.7.4/newlib/libc/string/strerror_r.c000066400000000000000000000053541414576234500213770ustar00rootroot00000000000000/* Copyright (c) 2002 Jeff Johnston */ /* GNU variant of strerror_r. */ /* FUNCTION <>---convert error number to string and copy to buffer INDEX strerror_r SYNOPSIS #include #ifdef _GNU_SOURCE char *strerror_r(int <[errnum]>, char *<[buffer]>, size_t <[n]>); #else int strerror_r(int <[errnum]>, char *<[buffer]>, size_t <[n]>); #endif DESCRIPTION <> converts the error number <[errnum]> into a string and copies the result into the supplied <[buffer]> for a length up to <[n]>, including the NUL terminator. The value of <[errnum]> is usually a copy of <>. If <> is not a known error number, the result is the empty string. See <> for how strings are mapped to <>. RETURNS There are two variants: the GNU version always returns a NUL-terminated string, which is <[buffer]> if all went well, but which is another pointer if <[n]> was too small (leaving <[buffer]> untouched). If the return is not <[buffer]>, your application must not modify that string. The POSIX version returns 0 on success, <[EINVAL]> if <> was not recognized, and <[ERANGE]> if <[n]> was too small. The variant chosen depends on macros that you define before inclusion of <>. PORTABILITY <> with a <[char *]> result is a GNU extension. <> with an <[int]> result is required by POSIX 2001. This function is compliant only if <<_user_strerror>> is not provided, or if it is thread-safe and uses separate storage according to whether the second argument of that function is non-zero. For more details on <<_user_strerror>>, see the <> documentation. POSIX states that the contents of <[buf]> are unspecified on error, although this implementation guarantees a NUL-terminated string for all except <[n]> of 0. POSIX recommends that unknown <[errnum]> result in a message including that value, however it is not a requirement and this implementation provides only an empty string (unless you provide <<_user_strerror>>). POSIX also recommends that unknown <[errnum]> fail with EINVAL even when providing such a message, however it is not a requirement and this implementation will return success if <<_user_strerror>> provided a non-empty alternate string without assigning into its third argument. <> requires no supporting OS subroutines. */ #undef __STRICT_ANSI__ #define _GNU_SOURCE #include #include #undef strerror_r /* For backwards-compatible linking, this must be the GNU signature; see xpg_strerror_r.c for the POSIX version. */ char * strerror_r (int errnum, char *buffer, size_t n) { char *error = _strerror_r (errnum, 1, NULL); if (strlen (error) >= n) return error; return strcpy (buffer, error); } picolibc-1.7.4/newlib/libc/string/strings.tex000066400000000000000000000113471414576234500212420ustar00rootroot00000000000000# #Copyright (c) 1994 Cygnus Support. #All rights reserved. # #Redistribution and use in source and binary forms are permitted #provided that the above copyright notice and this paragraph are #duplicated in all such forms and that any documentation, #and/or other materials related to such #distribution and use acknowledge that the software was developed #at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to #endorse or promote products derived from this software without #specific prior written permission. #THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR #IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED #WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. # @node Strings @chapter Strings and Memory (@file{string.h}) This chapter describes string-handling functions and functions for managing areas of memory. The corresponding declarations are in @file{string.h}. @menu * bcmp:: Compare two memory areas * bcopy:: Copy memory regions * bzero:: Initialize memory to zero * index:: Search for character in string * memccpy:: Copy memory regions up to end-token * memchr:: Find character in memory * memcmp:: Compare two memory areas * memcpy:: Copy memory regions * memmem:: Find memory segment * memmove:: Move possibly overlapping memory * mempcpy:: Copy memory regions and locate end * memrchr:: Reverse search for character in memory * memset:: Set an area of memory * rawmemchr:: Find character in memory * rindex:: Reverse search for character in string * stpcpy:: Copy string returning a pointer to its end * stpncpy:: Counted copy string returning a pointer to its end * strcasecmp:: Compare strings ignoring case * strcasestr:: Find string segment ignoring case * strcat:: Concatenate strings * strchr:: Search for character in string * strchrnul:: Search for character in string * strcmp:: Character string compare * strcoll:: Locale-specific character string compare * strcpy:: Copy string * strcspn:: Count chars not in string * strerror:: Convert error number to string (strerror, strerror_l) * strerror_r:: Convert error number to string * strlen:: Character string length * strlwr:: Convert string to lowercase * strncasecmp:: Compare strings ignoring case * strncat:: Concatenate strings * strncmp:: Character string compare * strncpy:: Counted copy string * strnstr:: Find string segment * strnlen:: Character string length * strpbrk:: Find chars in string * strrchr:: Reverse search for character in string * strsignal:: Return signal message string * strspn:: Find initial match * strstr:: Find string segment * strtok:: Get next token from a string * strupr:: Convert string to upper case * strverscmp:: Compare version strings * strxfrm:: Transform string * swab:: Swap adjacent bytes * wcscasecmp:: Compare wide character strings ignoring case * wcsdup:: Wide character string duplicate * wcsncasecmp:: Compare wide character strings ignoring case @end menu @page @include string/bcmp.def @page @include string/bcopy.def @page @include string/bzero.def @page @include string/index.def @page @include string/memccpy.def @page @include string/memchr.def @page @include string/memcmp.def @page @include string/memcpy.def @page @include string/memmem.def @page @include string/memmove.def @page @include string/mempcpy.def @page @include string/memrchr.def @page @include string/memset.def @page @include string/rawmemchr.def @page @include string/rindex.def @page @include string/stpcpy.def @page @include string/stpncpy.def @page @include string/strcasecmp.def @page @include string/strcasestr.def @page @include string/strcat.def @page @include string/strchr.def @page @include string/strchrnul.def @page @include string/strcmp.def @page @include string/strcoll.def @page @include string/strcpy.def @page @include string/strcspn.def @page @include string/strerror.def @page @include string/strerror_r.def @page @include string/strlen.def @page @include string/strlwr.def @page @include string/strncasecmp.def @page @include string/strncat.def @page @include string/strncmp.def @page @include string/strncpy.def @page @include string/strnstr.def @page @include string/strnlen.def @page @include string/strpbrk.def @page @include string/strrchr.def @page @include string/strsignal.def @page @include string/strspn.def @page @include string/strstr.def @page @include string/strtok.def @page @include string/strupr.def @page @include string/strverscmp.def @page @include string/strxfrm.def @page @include string/swab.def @page @include string/wcscasecmp.def @page @include string/wcsdup.def @page @include string/wcsncasecmp.def picolibc-1.7.4/newlib/libc/string/strlcat.c000066400000000000000000000053371414576234500206510ustar00rootroot00000000000000/* $OpenBSD: strlcat.c,v 1.8 2001/05/13 15:40:15 deraadt Exp $ */ /* * Copyright (c) 1998 Todd C. Miller * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if defined(LIBC_SCCS) && !defined(lint) static char *rcsid = "$OpenBSD: strlcat.c,v 1.8 2001/05/13 15:40:15 deraadt Exp $"; #endif /* LIBC_SCCS and not lint */ #include #include /* * Appends src to string dst of size siz (unlike strncat, siz is the * full size of dst, not space left). At most siz-1 characters * will be copied. Always NUL terminates (unless siz <= strlen(dst)). * Returns strlen(src) + MIN(siz, strlen(initial dst)). * If retval >= siz, truncation occurred. */ size_t strlcat (char *dst, const char *src, size_t siz) { register char *d = dst; register const char *s = src; register size_t n = siz; size_t dlen; /* Find the end of dst and adjust bytes left but don't go past end */ while (n-- != 0 && *d != '\0') d++; dlen = d - dst; n = siz - dlen; if (n == 0) return(dlen + strlen(s)); while (*s != '\0') { if (n != 1) { *d++ = *s; n--; } s++; } *d = '\0'; return(dlen + (s - src)); /* count does not include NUL */ } picolibc-1.7.4/newlib/libc/string/strlcpy.c000066400000000000000000000052141414576234500206670ustar00rootroot00000000000000/* $OpenBSD: strlcpy.c,v 1.5 2001/05/13 15:40:16 deraadt Exp $ */ /* * Copyright (c) 1998 Todd C. Miller * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if defined(LIBC_SCCS) && !defined(lint) static char *rcsid = "$OpenBSD: strlcpy.c,v 1.5 2001/05/13 15:40:16 deraadt Exp $"; #endif /* LIBC_SCCS and not lint */ #include #include /* * Copy src to string dst of size siz. At most siz-1 characters * will be copied. Always NUL terminates (unless siz == 0). * Returns strlen(src); if retval >= siz, truncation occurred. */ size_t strlcpy (char *dst, const char *src, size_t siz) { register char *d = dst; register const char *s = src; register size_t n = siz; /* Copy as many bytes as will fit */ if (n != 0 && --n != 0) { do { if ((*d++ = *s++) == 0) break; } while (--n != 0); } /* Not enough room in dst, add NUL and traverse rest of src */ if (n == 0) { if (siz != 0) *d = '\0'; /* NUL-terminate dst */ while (*s++) ; } return(s - src - 1); /* count does not include NUL */ } picolibc-1.7.4/newlib/libc/string/strlen.c000066400000000000000000000046651414576234500205070ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---character string length INDEX strlen SYNOPSIS #include size_t strlen(const char *<[str]>); DESCRIPTION The <> function works out the length of the string starting at <<*<[str]>>> by counting chararacters until it reaches a <> character. RETURNS <> returns the character count. PORTABILITY <> is ANSI C. <> requires no supporting OS subroutines. QUICKREF strlen ansi pure */ #include <_ansi.h> #include #include #define LBLOCKSIZE (sizeof (long)) #define UNALIGNED(X) ((long)X & (LBLOCKSIZE - 1)) #if LONG_MAX == 2147483647L #define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) #else #if LONG_MAX == 9223372036854775807L /* Nonzero if X (a long int) contains a NULL byte. */ #define DETECTNULL(X) (((X) - 0x0101010101010101) & ~(X) & 0x8080808080808080) #else #error long int is not a 32bit or 64bit type. #endif #endif #ifndef DETECTNULL #error long int is not a 32bit or 64bit byte #endif size_t strlen (const char *str) { const char *start = str; #if !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) unsigned long *aligned_addr; /* Align the pointer, so we can search a word at a time. */ while (UNALIGNED (str)) { if (!*str) return str - start; str++; } /* If the string is word-aligned, we can check for the presence of a null in each word-sized block. */ aligned_addr = (unsigned long *)str; while (!DETECTNULL (*aligned_addr)) aligned_addr++; /* Once a null is detected, we check each byte in that block for a precise position of the null. */ str = (char *) aligned_addr; #endif /* not PREFER_SIZE_OVER_SPEED */ while (*str) str++; return str - start; } picolibc-1.7.4/newlib/libc/string/strlwr.c000066400000000000000000000024121414576234500205210ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---force string to lowercase INDEX strlwr SYNOPSIS #include char *strlwr(char *<[a]>); DESCRIPTION <> converts each character in the string at <[a]> to lowercase. RETURNS <> returns its argument, <[a]>. PORTABILITY <> is not widely portable. <> requires no supporting OS subroutines. QUICKREF strlwr */ #include #include char * strlwr (char *s) { unsigned char *ucs = (unsigned char *) s; for ( ; *ucs != '\0'; ucs++) { *ucs = tolower(*ucs); } return s; } picolibc-1.7.4/newlib/libc/string/strncasecmp.c000066400000000000000000000035611414576234500215140ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---case-insensitive character string compare INDEX strncasecmp SYNOPSIS #include int strncasecmp(const char *<[a]>, const char * <[b]>, size_t <[length]>); DESCRIPTION <> compares up to <[length]> characters from the string at <[a]> to the string at <[b]> in a case-insensitive manner. RETURNS If <<*<[a]>>> sorts lexicographically after <<*<[b]>>> (after both are converted to lowercase), <> returns a number greater than zero. If the two strings are equivalent, <> returns zero. If <<*<[a]>>> sorts lexicographically before <<*<[b]>>>, <> returns a number less than zero. PORTABILITY <> is in the Berkeley Software Distribution. <> requires no supporting OS subroutines. It uses tolower() from elsewhere in this library. QUICKREF strncasecmp */ #include #include int strncasecmp (const char *s1, const char *s2, size_t n) { int d = 0; for ( ; n != 0; n--) { const int c1 = tolower(*s1++); const int c2 = tolower(*s2++); if (((d = c1 - c2) != 0) || (c2 == '\0')) break; } return d; } picolibc-1.7.4/newlib/libc/string/strncasecmp_l.c000066400000000000000000000026631414576234500220310ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen */ /* FUNCTION <>---case-insensitive character string compare INDEX strncasecmp_l SYNOPSIS #include int strncasecmp_l(const char *<[a]>, const char * <[b]>, size_t <[length]>, locale_t <[locale]>); DESCRIPTION <> compares up to <[length]> characters from the string at <[a]> to the string at <[b]> in a case-insensitive manner. if <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS If <<*<[a]>>> sorts lexicographically after <<*<[b]>>> (after both are converted to lowercase), <> returns a number greater than zero. If the two strings are equivalent, <> returns zero. If <<*<[a]>>> sorts lexicographically before <<*<[b]>>>, <> returns a number less than zero. PORTABILITY <> is POSIX-1.2008. <> requires no supporting OS subroutines. It uses tolower_l() from elsewhere in this library. QUICKREF strncasecmp_l */ #define _DEFAULT_SOURCE #include #include int strncasecmp_l (const char *s1, const char *s2, size_t n, struct __locale_t *locale) { int d = 0; for ( ; n != 0; n--) { const int c1 = tolower_l (*s1++, locale); const int c2 = tolower_l (*s2++, locale); if (((d = c1 - c2) != 0) || (c2 == '\0')) break; } return d; } picolibc-1.7.4/newlib/libc/string/strncat.c000066400000000000000000000061221414576234500206440ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---concatenate strings INDEX strncat SYNOPSIS #include char *strncat(char *restrict <[dst]>, const char *restrict <[src]>, size_t <[length]>); DESCRIPTION <> appends not more than <[length]> characters from the string pointed to by <[src]> (including the terminating null character) to the end of the string pointed to by <[dst]>. The initial character of <[src]> overwrites the null character at the end of <[dst]>. A terminating null character is always appended to the result WARNINGS Note that a null is always appended, so that if the copy is limited by the <[length]> argument, the number of characters appended to <[dst]> is <>. RETURNS This function returns the initial value of <[dst]> PORTABILITY <> is ANSI C. <> requires no supporting OS subroutines. QUICKREF strncat ansi pure */ #include #include /* Nonzero if X is aligned on a "long" boundary. */ #define ALIGNED(X) \ (((long)X & (sizeof (long) - 1)) == 0) #if LONG_MAX == 2147483647L #define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) #else #if LONG_MAX == 9223372036854775807L /* Nonzero if X (a long int) contains a NULL byte. */ #define DETECTNULL(X) (((X) - 0x0101010101010101) & ~(X) & 0x8080808080808080) #else #error long int is not a 32bit or 64bit type. #endif #endif #ifndef DETECTNULL #error long int is not a 32bit or 64bit byte #endif #undef strncat char * strncat (char *__restrict s1, const char *__restrict s2, size_t n) { #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) char *s = s1; while (*s1) s1++; while (n-- != 0 && (*s1++ = *s2++)) { if (n == 0) *s1 = '\0'; } return s; #else char *s = s1; /* Skip over the data in s1 as quickly as possible. */ if (ALIGNED (s1)) { unsigned long *aligned_s1 = (unsigned long *)s1; while (!DETECTNULL (*aligned_s1)) aligned_s1++; s1 = (char *)aligned_s1; } while (*s1) s1++; /* s1 now points to the its trailing null character, now copy up to N bytes from S2 into S1 stopping if a NULL is encountered in S2. It is not safe to use strncpy here since it copies EXACTLY N characters, NULL padding if necessary. */ while (n-- != 0 && (*s1++ = *s2++)) { if (n == 0) *s1 = '\0'; } return s; #endif /* not PREFER_SIZE_OVER_SPEED */ } picolibc-1.7.4/newlib/libc/string/strncmp.c000066400000000000000000000065101414576234500206550ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---character string compare INDEX strncmp SYNOPSIS #include int strncmp(const char *<[a]>, const char * <[b]>, size_t <[length]>); DESCRIPTION <> compares up to <[length]> characters from the string at <[a]> to the string at <[b]>. RETURNS If <<*<[a]>>> sorts lexicographically after <<*<[b]>>>, <> returns a number greater than zero. If the two strings are equivalent, <> returns zero. If <<*<[a]>>> sorts lexicographically before <<*<[b]>>>, <> returns a number less than zero. PORTABILITY <> is ANSI C. <> requires no supporting OS subroutines. QUICKREF strncmp ansi pure */ #include #include /* Nonzero if either X or Y is not aligned on a "long" boundary. */ #define UNALIGNED(X, Y) \ (((long)X & (sizeof (long) - 1)) | ((long)Y & (sizeof (long) - 1))) /* DETECTNULL returns nonzero if (long)X contains a NULL byte. */ #if LONG_MAX == 2147483647L #define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) #else #if LONG_MAX == 9223372036854775807L #define DETECTNULL(X) (((X) - 0x0101010101010101) & ~(X) & 0x8080808080808080) #else #error long int is not a 32bit or 64bit type. #endif #endif #ifndef DETECTNULL #error long int is not a 32bit or 64bit byte #endif int strncmp (const char *s1, const char *s2, size_t n) { #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) if (n == 0) return 0; while (n-- != 0 && *s1 == *s2) { if (n == 0 || *s1 == '\0') break; s1++; s2++; } return (*(unsigned char *) s1) - (*(unsigned char *) s2); #else unsigned long *a1; unsigned long *a2; if (n == 0) return 0; /* If s1 or s2 are unaligned, then compare bytes. */ if (!UNALIGNED (s1, s2)) { /* If s1 and s2 are word-aligned, compare them a word at a time. */ a1 = (unsigned long*)s1; a2 = (unsigned long*)s2; while (n >= sizeof (long) && *a1 == *a2) { n -= sizeof (long); /* If we've run out of bytes or hit a null, return zero since we already know *a1 == *a2. */ if (n == 0 || DETECTNULL (*a1)) return 0; a1++; a2++; } /* A difference was detected in last few bytes of s1, so search bytewise */ s1 = (char*)a1; s2 = (char*)a2; } while (n-- > 0 && *s1 == *s2) { /* If we've run out of bytes or hit a null, return zero since we already know *s1 == *s2. */ if (n == 0 || *s1 == '\0') return 0; s1++; s2++; } return (*(unsigned char *) s1) - (*(unsigned char *) s2); #endif /* not PREFER_SIZE_OVER_SPEED */ } picolibc-1.7.4/newlib/libc/string/strncpy.c000066400000000000000000000064451414576234500207000ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---counted copy string INDEX strncpy SYNOPSIS #include char *strncpy(char *restrict <[dst]>, const char *restrict <[src]>, size_t <[length]>); DESCRIPTION <> copies not more than <[length]> characters from the string pointed to by <[src]> (including the terminating null character) to the array pointed to by <[dst]>. If the string pointed to by <[src]> is shorter than <[length]> characters, null characters are appended to the destination array until a total of <[length]> characters have been written. RETURNS This function returns the initial value of <[dst]>. PORTABILITY <> is ANSI C. <> requires no supporting OS subroutines. QUICKREF strncpy ansi pure */ #include #include /*SUPPRESS 560*/ /*SUPPRESS 530*/ /* Nonzero if either X or Y is not aligned on a "long" boundary. */ #define UNALIGNED(X, Y) \ (((long)X & (sizeof (long) - 1)) | ((long)Y & (sizeof (long) - 1))) #if LONG_MAX == 2147483647L #define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) #else #if LONG_MAX == 9223372036854775807L /* Nonzero if X (a long int) contains a NULL byte. */ #define DETECTNULL(X) (((X) - 0x0101010101010101) & ~(X) & 0x8080808080808080) #else #error long int is not a 32bit or 64bit type. #endif #endif #ifndef DETECTNULL #error long int is not a 32bit or 64bit byte #endif #define TOO_SMALL(LEN) ((LEN) < sizeof (long)) #undef strncpy char * strncpy (char *__restrict dst0, const char *__restrict src0, size_t count) { #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) char *dscan; const char *sscan; dscan = dst0; sscan = src0; while (count > 0) { --count; if ((*dscan++ = *sscan++) == '\0') break; } while (count-- > 0) *dscan++ = '\0'; return dst0; #else char *dst = dst0; const char *src = src0; long *aligned_dst; const long *aligned_src; /* If SRC and DEST is aligned and count large enough, then copy words. */ if (!UNALIGNED (src, dst) && !TOO_SMALL (count)) { aligned_dst = (long*)dst; aligned_src = (long*)src; /* SRC and DEST are both "long int" aligned, try to do "long int" sized copies. */ while (count >= sizeof (long int) && !DETECTNULL(*aligned_src)) { count -= sizeof (long int); *aligned_dst++ = *aligned_src++; } dst = (char*)aligned_dst; src = (char*)aligned_src; } while (count > 0) { --count; if ((*dst++ = *src++) == '\0') break; } while (count-- > 0) *dst++ = '\0'; return dst0; #endif /* not PREFER_SIZE_OVER_SPEED */ } picolibc-1.7.4/newlib/libc/string/strndup.c000066400000000000000000000007031414576234500206640ustar00rootroot00000000000000/* Copyright (c) 2002 Jeff Johnston */ #ifndef _REENT_ONLY #include <_ansi.h> #include #include char * strndup (const char *str, size_t n) { const char *ptr = str; size_t len; char *copy; while (n-- > 0 && *ptr) ptr++; len = ptr - str; copy = malloc (len + 1); if (copy) { memcpy (copy, str, len); copy[len] = '\0'; } return copy; } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/string/strndup_r.c000066400000000000000000000006741414576234500212140ustar00rootroot00000000000000/* Copyright (c) 2002 Jeff Johnston */ #include #include char * _strndup_r (struct _reent *reent_ptr, const char *str, size_t n) { const char *ptr = str; size_t len; char *copy; while (n-- > 0 && *ptr) ptr++; len = ptr - str; copy = _malloc_r (reent_ptr, len + 1); if (copy) { memcpy (copy, str, len); copy[len] = '\0'; } return copy; } picolibc-1.7.4/newlib/libc/string/strnlen.c000066400000000000000000000014451414576234500206560ustar00rootroot00000000000000/* Copyright (c) 2002 Jeff Johnston */ /* FUNCTION <>---character string length INDEX strnlen SYNOPSIS #include size_t strnlen(const char *<[str]>, size_t <[n]>); DESCRIPTION The <> function works out the length of the string starting at <<*<[str]>>> by counting chararacters until it reaches a NUL character or the maximum: <[n]> number of characters have been inspected. RETURNS <> returns the character count or <[n]>. PORTABILITY <> is a GNU extension. <> requires no supporting OS subroutines. */ #undef __STRICT_ANSI__ #include <_ansi.h> #include size_t strnlen (const char *str, size_t n) { const char *start = str; while (n-- > 0 && *str) str++; return str - start; } picolibc-1.7.4/newlib/libc/string/strnstr.c000066400000000000000000000022641414576234500207100ustar00rootroot00000000000000/* Copyright (c) 2017 Sichen Zhao <1473996754@qq.com> */ /* FUNCTION <>---find string segment INDEX strnstr SYNOPSIS #include size_t strnstr(const char *<[s1]>, const char *<[s2]>, size_t <[n]>); DESCRIPTION Locates the first occurrence in the string pointed to by <[s1]> of the sequence of limited to the <[n]> characters in the string pointed to by <[s2]> RETURNS Returns a pointer to the located string segment, or a null pointer if the string <[s2]> is not found. If <[s2]> points to a string with zero length, <[s1]> is returned. PORTABILITY <> is a BSD extension. <> requires no supporting OS subroutines. QUICKREF strnstr pure */ #define _GNU_SOURCE #include /* * Find the first occurrence of find in s, where the search is limited to the * first slen characters of s. */ char * strnstr(const char *haystack, const char *needle, size_t haystack_len) { size_t needle_len = strnlen(needle, haystack_len); if (needle_len < haystack_len || !needle[needle_len]) { char *x = memmem(haystack, haystack_len, needle, needle_len); if (x && !memchr(haystack, 0, x - haystack)) return x; } return NULL; } picolibc-1.7.4/newlib/libc/string/strpbrk.c000066400000000000000000000030461414576234500206570ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---find characters in string INDEX strpbrk SYNOPSIS #include char *strpbrk(const char *<[s1]>, const char *<[s2]>); DESCRIPTION This function locates the first occurence in the string pointed to by <[s1]> of any character in string pointed to by <[s2]> (excluding the terminating null character). RETURNS <> returns a pointer to the character found in <[s1]>, or a null pointer if no character from <[s2]> occurs in <[s1]>. PORTABILITY <> requires no supporting OS subroutines. */ #include char * strpbrk (const char *s1, const char *s2) { const char *c = s2; if (!*s1) return (char *) NULL; while (*s1) { for (c = s2; *c; c++) { if (*s1 == *c) break; } if (*c) break; s1++; } if (*c == '\0') s1 = NULL; return (char *) s1; } picolibc-1.7.4/newlib/libc/string/strrchr.c000066400000000000000000000027751414576234500206670ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---reverse search for character in string INDEX strrchr SYNOPSIS #include char * strrchr(const char *<[string]>, int <[c]>); DESCRIPTION This function finds the last occurence of <[c]> (converted to a char) in the string pointed to by <[string]> (including the terminating null character). RETURNS Returns a pointer to the located character, or a null pointer if <[c]> does not occur in <[string]>. PORTABILITY <> is ANSI C. <> requires no supporting OS subroutines. QUICKREF strrchr ansi pure */ #include char * strrchr (const char *s, int i) { const char *last = NULL; char c = i; if (c) { while ((s=strchr(s, c))) { last = s; s++; } } else { last = strchr(s, c); } return (char *) last; } picolibc-1.7.4/newlib/libc/string/strsep.c000066400000000000000000000006031414576234500205040ustar00rootroot00000000000000/* BSD strsep function */ /* Copyright 2002, Red Hat Inc. */ /* undef STRICT_ANSI so that strsep prototype will be defined */ #undef __STRICT_ANSI__ #include #include <_ansi.h> extern char *__strtok_r (char *, const char *, char **, int); char * strsep (register char **source_ptr, register const char *delim) { return __strtok_r (*source_ptr, delim, source_ptr, 0); } picolibc-1.7.4/newlib/libc/string/strsignal.c000066400000000000000000000114121414576234500211720ustar00rootroot00000000000000/* FUNCTION <>---convert signal number to string INDEX strsignal SYNOPSIS #include char *strsignal(int <[signal]>); DESCRIPTION <> converts the signal number <[signal]> into a string. If <[signal]> is not a known signal number, the result will be of the form "Unknown signal NN" where NN is the <[signal]> is a decimal number. RETURNS This function returns a pointer to a string. Your application must not modify that string. PORTABILITY POSIX.1-2008 C requires <>, but does not specify the strings used for each signal number. <> requires no supporting OS subroutines. QUICKREF strsignal pure */ /* * Written by Joel Sherrill . * * COPYRIGHT (c) 2010, 2017. * On-Line Applications Research Corporation (OAR). * * Permission to use, copy, modify, and distribute this software for any * purpose without fee is hereby granted, provided that this entire notice * is included in all copies of any software which is or includes a copy * or modification of this software. * * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED * WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION * OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS * SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. */ #include #include #include #include char * strsignal (int signal) { char *buffer; static NEWLIB_THREAD_LOCAL char _signal_buf[24]; buffer = _signal_buf; #if defined(SIGRTMIN) && defined(SIGRTMAX) if ((signal >= SIGRTMIN) && (signal <= SIGRTMAX)) { sprintf (buffer, "Real-time signal %d", signal - SIGRTMIN); return buffer; } #endif switch (signal) { #ifdef SIGHUP case SIGHUP: buffer = "Hangup"; break; #endif #ifdef SIGINT case SIGINT: buffer = "Interrupt"; break; #endif #ifdef SIGQUIT case SIGQUIT: buffer = "Quit"; break; #endif #ifdef SIGILL case SIGILL: buffer = "Illegal instruction"; break; #endif #ifdef SIGTRAP case SIGTRAP: buffer = "Trace/breakpoint trap"; break; #endif #ifdef SIGIOT #if defined(SIGABRT) && (SIGIOT != SIGABRT) case SIGABRT: #endif case SIGIOT: buffer = "IOT trap"; break; #endif #ifdef SIGEMT case SIGEMT: buffer = "EMT trap"; break; #endif #ifdef SIGFPE case SIGFPE: buffer = "Floating point exception"; break; #endif #ifdef SIGKILL case SIGKILL: buffer = "Killed"; break; #endif #ifdef SIGBUS case SIGBUS: buffer = "Bus error"; break; #endif #ifdef SIGSEGV case SIGSEGV: buffer = "Segmentation fault"; break; #endif #ifdef SIGSYS case SIGSYS: buffer = "Bad system call"; break; #endif #ifdef SIGPIPE case SIGPIPE: buffer = "Broken pipe"; break; #endif #ifdef SIGALRM case SIGALRM: buffer = "Alarm clock"; break; #endif #ifdef SIGTERM case SIGTERM: buffer = "Terminated"; break; #endif #ifdef SIGURG case SIGURG: buffer = "Urgent I/O condition"; break; #endif #ifdef SIGSTOP case SIGSTOP: buffer = "Stopped (signal)"; break; #endif #ifdef SIGTSTP case SIGTSTP: buffer = "Stopped"; break; #endif #ifdef SIGCONT case SIGCONT: buffer = "Continued"; break; #endif #ifdef SIGCHLD #if defined(SIGCLD) && (SIGCHLD != SIGCLD) case SIGCLD: #endif case SIGCHLD: buffer = "Child exited"; break; #endif #ifdef SIGTTIN case SIGTTIN: buffer = "Stopped (tty input)"; break; #endif #ifdef SIGTTOUT case SIGTTOUT: buffer = "Stopped (tty output)"; break; #endif #ifdef SIGIO #if defined(SIGPOLL) && (SIGIO != SIGPOLL) case SIGPOLL: #endif case SIGIO: buffer = "I/O possible"; break; #endif #ifdef SIGWINCH case SIGWINCH: buffer = "Window changed"; break; #endif #ifdef SIGUSR1 case SIGUSR1: buffer = "User defined signal 1"; break; #endif #ifdef SIGUSR2 case SIGUSR2: buffer = "User defined signal 2"; break; #endif #ifdef SIGPWR case SIGPWR: buffer = "Power Failure"; break; #endif #ifdef SIGXCPU case SIGXCPU: buffer = "CPU time limit exceeded"; break; #endif #ifdef SIGXFSZ case SIGXFSZ: buffer = "File size limit exceeded"; break; #endif #ifdef SIGVTALRM case SIGVTALRM : buffer = "Virtual timer expired"; break; #endif #ifdef SIGPROF case SIGPROF: buffer = "Profiling timer expired"; break; #endif #if defined(SIGLOST) && SIGLOST != SIGPWR case SIGLOST: buffer = "Resource lost"; break; #endif default: sprintf (buffer, "Unknown signal %d", signal); break; } return buffer; } picolibc-1.7.4/newlib/libc/string/strspn.c000066400000000000000000000027701414576234500205240ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---find initial match INDEX strspn SYNOPSIS #include size_t strspn(const char *<[s1]>, const char *<[s2]>); DESCRIPTION This function computes the length of the initial segment of the string pointed to by <[s1]> which consists entirely of characters from the string pointed to by <[s2]> (excluding the terminating null character). RETURNS <> returns the length of the segment found. PORTABILITY <> is ANSI C. <> requires no supporting OS subroutines. QUICKREF strspn ansi pure */ #include size_t strspn (const char *s1, const char *s2) { const char *s = s1; const char *c; while (*s1) { for (c = s2; *c; c++) { if (*s1 == *c) break; } if (*c == '\0') break; s1++; } return s1 - s; } picolibc-1.7.4/newlib/libc/string/strstr.c000066400000000000000000000155211414576234500205320ustar00rootroot00000000000000/* Optimized strstr function. Copyright (c) 2018 Arm Ltd. All rights reserved. SPDX-License-Identifier: BSD-3-Clause Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the company may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---find string segment INDEX strstr SYNOPSIS #include char *strstr(const char *<[s1]>, const char *<[s2]>); DESCRIPTION Locates the first occurrence in the string pointed to by <[s1]> of the sequence of characters in the string pointed to by <[s2]> (excluding the terminating null character). RETURNS Returns a pointer to the located string segment, or a null pointer if the string <[s2]> is not found. If <[s2]> points to a string with zero length, <[s1]> is returned. PORTABILITY <> is ANSI C. <> requires no supporting OS subroutines. QUICKREF strstr ansi pure */ #define _DEFAULT_SOURCE #include #include #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) \ || CHAR_BIT > 8 /* Small and efficient strstr implementation. */ char * strstr (const char *hs, const char *ne) { size_t i; int c = ne[0]; if (c == 0) return (char*)hs; for ( ; hs[0] != '\0'; hs++) { if (hs[0] != c) continue; for (i = 1; ne[i] != 0; i++) if (hs[i] != ne[i]) break; if (ne[i] == '\0') return (char*)hs; } return NULL; } #else /* compilation for speed */ # define RETURN_TYPE char * # define AVAILABLE(h, h_l, j, n_l) (((j) <= (h_l) - (n_l)) \ || ((h_l) += strnlen ((const char *) (h) + (h_l), (n_l) | 2048), ((j) <= (h_l) - (n_l)))) # include "str-two-way.h" /* Number of bits used to index shift table. */ #define SHIFT_TABLE_BITS 6 static inline char * strstr2 (const unsigned char *hs, const unsigned char *ne) { uint32_t h1 = (ne[0] << 16) | ne[1]; uint32_t h2 = 0; int c; for (c = hs[0]; h1 != h2 && c != 0; c = *++hs) h2 = (h2 << 16) | c; return h1 == h2 ? (char *)hs - 2 : NULL; } static inline char * strstr3 (const unsigned char *hs, const unsigned char *ne) { uint32_t h1 = (ne[0] << 24) | (ne[1] << 16) | (ne[2] << 8); uint32_t h2 = 0; int c; for (c = hs[0]; h1 != h2 && c != 0; c = *++hs) h2 = (h2 | c) << 8; return h1 == h2 ? (char *)hs - 3 : NULL; } static inline char * strstr4 (const unsigned char *hs, const unsigned char *ne) { uint32_t h1 = (ne[0] << 24) | (ne[1] << 16) | (ne[2] << 8) | ne[3]; uint32_t h2 = 0; int c; for (c = hs[0]; c != 0 && h1 != h2; c = *++hs) h2 = (h2 << 8) | c; return h1 == h2 ? (char *)hs - 4 : NULL; } /* Extremely fast strstr algorithm with guaranteed linear-time performance. Small needles up to size 4 use a dedicated linear search. Longer needles up to size 254 use Sunday's Quick-Search algorithm. Due to its simplicity it has the best average performance of string matching algorithms on almost all inputs. It uses a bad-character shift table to skip past mismatches. By limiting the needle length to 254, the shift table can be reduced to 8 bits per entry, lowering preprocessing overhead and minimizing cache effects. The limit also implies the worst-case performance is linear. Even larger needles are processed by the linear-time Two-Way algorithm. */ char * strstr (const char *haystack, const char *needle) { const unsigned char *hs = (const unsigned char *) haystack; const unsigned char *ne = (const unsigned char *) needle; size_t i; /* Handle short needle special cases first. */ if (ne[0] == '\0') return (char *) hs; if (ne[1] == '\0') return (char*)strchr ((const char *) hs, (char) ne[0]); if (ne[2] == '\0') return strstr2 (hs, ne); if (ne[3] == '\0') return strstr3 (hs, ne); if (ne[4] == '\0') return strstr4 (hs, ne); size_t ne_len = strlen ((const char *) ne); size_t hs_len = strnlen ((const char *) hs, ne_len | 512); /* Ensure haystack length is >= needle length. */ if (hs_len < ne_len) return NULL; /* Use the Quick-Search algorithm for needle lengths less than 255. */ if (__builtin_expect (ne_len < 255, 1)) { uint8_t shift[1 << SHIFT_TABLE_BITS]; const unsigned char *end = hs + hs_len - ne_len; /* Initialize bad character shift hash table. */ memset (shift, ne_len + 1, sizeof (shift)); for (i = 0; i < ne_len; i++) shift[ne[i] % sizeof (shift)] = ne_len - i; do { hs--; /* Search by skipping past bad characters. */ size_t tmp = shift[hs[ne_len] % sizeof (shift)]; for (hs += tmp; hs <= end; hs += tmp) { tmp = shift[hs[ne_len] % sizeof (shift)]; if (memcmp (hs, ne, ne_len) == 0) return (char*) hs; } if (end[ne_len] == 0) return NULL; end += strnlen ((const char *) (end + ne_len), 2048); } while (hs <= end); return NULL; } /* Use Two-Way algorithm for very long needles. */ return two_way_long_needle (hs, hs_len, ne, ne_len); } #endif /* compilation for speed */ picolibc-1.7.4/newlib/libc/string/strtok.c000066400000000000000000000067441414576234500205260ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>, <>, <>---get next token from a string INDEX strtok INDEX strtok_r INDEX strsep SYNOPSIS #include char *strtok(char *restrict <[source]>, const char *restrict <[delimiters]>); char *strtok_r(char *restrict <[source]>, const char *restrict <[delimiters]>, char **<[lasts]>); char *strsep(char **<[source_ptr]>, const char *<[delimiters]>); DESCRIPTION The <> function is used to isolate sequential tokens in a null-terminated string, <<*<[source]>>>. These tokens are delimited in the string by at least one of the characters in <<*<[delimiters]>>>. The first time that <> is called, <<*<[source]>>> should be specified; subsequent calls, wishing to obtain further tokens from the same string, should pass a null pointer instead. The separator string, <<*<[delimiters]>>>, must be supplied each time and may change between calls. The <> function returns a pointer to the beginning of each subsequent token in the string, after replacing the separator character itself with a null character. When no more tokens remain, a null pointer is returned. The <> function has the same behavior as <>, except a pointer to placeholder <<*<[lasts]>>> must be supplied by the caller. The <> function is similar in behavior to <>, except a pointer to the string pointer must be supplied <<<[source_ptr]>>> and the function does not skip leading delimiters. When the string starts with a delimiter, the delimiter is changed to the null character and the empty string is returned. Like <> and <>, the <<*<[source_ptr]>>> is updated to the next character following the last delimiter found or NULL if the end of string is reached with no more delimiters. RETURNS <>, <>, and <> all return a pointer to the next token, or <> if no more tokens can be found. For <>, a token may be the empty string. NOTES <> is unsafe for multi-threaded applications. <> and <> are thread-safe and should be used instead. PORTABILITY <> is ANSI C. <> is POSIX. <> is a BSD extension. <>, <>, and <> require no supporting OS subroutines. QUICKREF strtok ansi impure */ /* undef STRICT_ANSI so that strtok_r prototype will be defined */ #undef __STRICT_ANSI__ #include #include #include <_ansi.h> #ifndef _REENT_ONLY static NEWLIB_THREAD_LOCAL char *_strtok_last; extern char *__strtok_r (char *, const char *, char **, int); char * strtok (register char *__restrict s, register const char *__restrict delim) { return __strtok_r (s, delim, &_strtok_last, 1); } #endif picolibc-1.7.4/newlib/libc/string/strtok_r.c000066400000000000000000000053001414576234500210320ustar00rootroot00000000000000/* * Copyright (c) 1988 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include char * __strtok_r (register char *s, register const char *delim, char **lasts, int skip_leading_delim) { register char *spanp; register int c, sc; char *tok; if (s == NULL && (s = *lasts) == NULL) return (NULL); /* * Skip (span) leading delimiters (s += strspn(s, delim), sort of). */ cont: c = *s++; for (spanp = (char *)delim; (sc = *spanp++) != 0;) { if (c == sc) { if (skip_leading_delim) { goto cont; } else { *lasts = s; s[-1] = 0; return (s - 1); } } } if (c == 0) { /* no non-delimiter characters */ *lasts = NULL; return (NULL); } tok = s - 1; /* * Scan token (scan for delimiters: s += strcspn(s, delim), sort of). * Note that delim must have one NUL; we stop if we see that, too. */ for (;;) { c = *s++; spanp = (char *)delim; do { if ((sc = *spanp++) == c) { if (c == 0) s = NULL; else s[-1] = 0; *lasts = s; return (tok); } } while (sc != 0); } /* NOTREACHED */ } char * strtok_r (register char *__restrict s, register const char *__restrict delim, char **__restrict lasts) { return __strtok_r (s, delim, lasts, 1); } picolibc-1.7.4/newlib/libc/string/strupr.c000066400000000000000000000024121414576234500205230ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---force string to uppercase INDEX strupr SYNOPSIS #include char *strupr(char *<[a]>); DESCRIPTION <> converts each character in the string at <[a]> to uppercase. RETURNS <> returns its argument, <[a]>. PORTABILITY <> is not widely portable. <> requires no supporting OS subroutines. QUICKREF strupr */ #include #include char * strupr (char *s) { unsigned char *ucs = (unsigned char *) s; for ( ; *ucs != '\0'; ucs++) { *ucs = toupper(*ucs); } return s; } picolibc-1.7.4/newlib/libc/string/strverscmp.c000066400000000000000000000053751414576234500214070ustar00rootroot00000000000000/* FUNCTION <>---version string compare INDEX strverscmp SYNOPSIS #define _GNU_SOURCE #include int strverscmp(const char *<[a]>, const char *<[b]>); DESCRIPTION <> compares the string at <[a]> to the string at <[b]> in a version-logical order. RETURNS If <<*<[a]>>> version-sorts after <<*<[b]>>>, <> returns a number greater than zero. If the two strings match, <> returns zero. If <<*<[a]>>> version-sorts before <<*<[b]>>>, <> returns a number less than zero. PORTABILITY <> is a GNU extension. <> requires no supporting OS subroutines. It uses isdigit() from elsewhere in this library. QUICKREF strverscmp */ /* From musl src/string/strverscmp.c Copyright © 2005-2014 Rich Felker, et al. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #define _GNU_SOURCE #include #include int strverscmp(const char *l0, const char *r0) { const unsigned char *l = (const void *)l0; const unsigned char *r = (const void *)r0; size_t i, dp, j; int z = 1; /* Find maximal matching prefix and track its maximal digit * suffix and whether those digits are all zeros. */ for (dp=i=0; l[i]==r[i]; i++) { int c = l[i]; if (!c) return 0; if (!isdigit(c)) dp=i+1, z=1; else if (c!='0') z=0; } if (l[dp]!='0' && r[dp]!='0') { /* If we're not looking at a digit sequence that began * with a zero, longest digit string is greater. */ for (j=i; isdigit(l[j]); j++) if (!isdigit(r[j])) return 1; if (isdigit(r[j])) return -1; } else if (z && dp>---transform string INDEX strxfrm SYNOPSIS #include size_t strxfrm(char *restrict <[s1]>, const char *restrict <[s2]>, size_t <[n]>); DESCRIPTION This function transforms the string pointed to by <[s2]> and places the resulting string into the array pointed to by <[s1]>. The transformation is such that if the <> function is applied to the two transformed strings, it returns a value greater than, equal to, or less than zero, correspoinding to the result of a <> function applied to the same two original strings. No more than <[n]> characters are placed into the resulting array pointed to by <[s1]>, including the terminating null character. If <[n]> is zero, <[s1]> may be a null pointer. If copying takes place between objects that overlap, the behavior is undefined. (NOT Cygwin:) The current implementation of <> simply copies the input and does not support any language-specific transformations. RETURNS The <> function returns the length of the transformed string (not including the terminating null character). If the value returned is <[n]> or more, the contents of the array pointed to by <[s1]> are indeterminate. PORTABILITY <> is ANSI C. <> requires no supporting OS subroutines. QUICKREF strxfrm ansi pure */ #include size_t strxfrm (char *__restrict s1, const char *__restrict s2, size_t n) { size_t res; res = 0; while (n-- > 0) { if ((*s1++ = *s2++) != '\0') ++res; else return res; } while (*s2) { ++s2; ++res; } return res; } picolibc-1.7.4/newlib/libc/string/strxfrm_l.c000066400000000000000000000036211414576234500212070ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen */ /* FUNCTION <>---transform string INDEX strxfrm_l SYNOPSIS #include size_t strxfrm_l(char *restrict <[s1]>, const char *restrict <[s2]>, size_t <[n]>, locale_t <[locale]>); DESCRIPTION This function transforms the string pointed to by <[s2]> and places the resulting string into the array pointed to by <[s1]>. The transformation is such that if the <> function is applied to the two transformed strings, it returns a value greater than, equal to, or less than zero, correspoinding to the result of a <> function applied to the same two original strings. No more than <[n]> characters are placed into the resulting array pointed to by <[s1]>, including the terminating null character. If <[n]> is zero, <[s1]> may be a null pointer. If copying takes place between objects that overlap, the behavior is undefined. (NOT Cygwin:) The current implementation of <> simply copies the input and does not support any language-specific transformations. If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the behaviour is undefined. RETURNS The <> function returns the length of the transformed string (not including the terminating null character). If the value returned is <[n]> or more, the contents of the array pointed to by <[s1]> are indeterminate. PORTABILITY <> is POSIX-1.2008. <> requires no supporting OS subroutines. QUICKREF strxfrm_l ansi pure */ #define _DEFAULT_SOURCE #include size_t strxfrm_l (char *__restrict s1, const char *__restrict s2, size_t n, locale_t locale) { size_t res; (void) locale; res = 0; while (n-- > 0) { if ((*s1++ = *s2++) != '\0') ++res; else return res; } while (*s2) { ++s2; ++res; } return res; } picolibc-1.7.4/newlib/libc/string/swab.c000066400000000000000000000014701414576234500201230ustar00rootroot00000000000000/* Copyright (c) 2000 Alexandre Oliva */ /* FUNCTION <>---swap adjacent bytes SYNOPSIS #include void swab(const void *<[in]>, void *<[out]>, ssize_t <[n]>); DESCRIPTION This function copies <[n]> bytes from the memory region pointed to by <[in]> to the memory region pointed to by <[out]>, exchanging adjacent even and odd bytes. PORTABILITY <> requires no supporting OS subroutines. */ #include void swab (const void *b1, void *b2, ssize_t length) { const char *from = b1; char *to = b2; ssize_t ptr; for (ptr = 1; ptr < length; ptr += 2) { char p = from[ptr]; char q = from[ptr-1]; to[ptr-1] = p; to[ptr ] = q; } if (ptr == length) /* I.e., if length is odd, */ to[ptr-1] = 0; /* then pad with a NUL. */ } picolibc-1.7.4/newlib/libc/string/timingsafe_bcmp.c000066400000000000000000000020651414576234500223170ustar00rootroot00000000000000/* $OpenBSD: timingsafe_bcmp.c,v 1.2 2014/06/10 04:17:37 deraadt Exp $ */ /* * Copyright (c) 2010 Damien Miller. All rights reserved. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include int timingsafe_bcmp(const void *b1, const void *b2, size_t n) { const unsigned char *p1 = b1, *p2 = b2; int ret = 0; for (; n > 0; n--) ret |= *p1++ ^ *p2++; return (ret != 0); } picolibc-1.7.4/newlib/libc/string/timingsafe_memcmp.c000066400000000000000000000031351414576234500226530ustar00rootroot00000000000000/* $OpenBSD: timingsafe_memcmp.c,v 1.1 2014/06/13 02:12:17 matthew Exp $ */ /* * Copyright (c) 2014 Google Inc. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include int timingsafe_memcmp(const void *b1, const void *b2, size_t len) { const unsigned char *p1 = b1, *p2 = b2; size_t i; int res = 0, done = 0; for (i = 0; i < len; i++) { /* lt is -1 if p1[i] < p2[i]; else 0. */ int lt = (p1[i] - p2[i]) >> CHAR_BIT; /* gt is -1 if p1[i] > p2[i]; else 0. */ int gt = (p2[i] - p1[i]) >> CHAR_BIT; /* cmp is 1 if p1[i] > p2[i]; -1 if p1[i] < p2[i]; else 0. */ int cmp = lt - gt; /* set res = cmp if !done. */ res |= cmp & ~done; /* set done if p1[i] != p2[i]. */ done |= lt | gt; } return (res); } picolibc-1.7.4/newlib/libc/string/u_strerr.c000066400000000000000000000016341414576234500210360ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include <_ansi.h> char * _user_strerror (int errnum, int internal, int *errptr) { /* prevent warning about unused parameters */ (void) errnum; (void) internal; (void) errptr; return 0; } picolibc-1.7.4/newlib/libc/string/uniset000077500000000000000000000523441414576234500202660ustar00rootroot00000000000000#!/usr/bin/perl # Copyright (c) 2018 Markus Kuhn # Uniset -- Unicode subset manager -- Markus Kuhn # http://www.cl.cam.ac.uk/~mgk25/download/uniset.tar.gz require 5.014; use open ':utf8'; use FindBin qw($RealBin); # to find directory where this file is located binmode(STDOUT, ":utf8"); binmode(STDIN, ":utf8"); my (%name, %invname, %category, %comment); print <. yyyy yyyy (optionally prefixed with 0x) is a Unicode character belonging to the specified subset. yyyy-yyyy a range of Unicode characters belonging to yyyy..yyyy the specified subset. xx yy yy yy-yy yy xx denotes a row (high-byte) and the yy specify corresponding low bytes or with a hyphen also ranges of low bytes in the Unicode values that belong to this subset. This is also the format that is generated by the compact command. End exit 1 if $#ARGV < 0; # Subroutine to identify whether the ISO 10646/Unicode character code # ucs belongs into the East Asian Wide (W) or East Asian FullWidth # (F) category as defined in Unicode Technical Report #11. sub iswide ($) { my $ucs = shift(@_); return ($ucs >= 0x1100 && ($ucs <= 0x115f || # Hangul Jamo $ucs == 0x2329 || $ucs == 0x232a || ($ucs >= 0x2e80 && $ucs <= 0xa4cf && $ucs != 0x303f) || # CJK .. Yi ($ucs >= 0xac00 && $ucs <= 0xd7a3) || # Hangul Syllables ($ucs >= 0xf900 && $ucs <= 0xfaff) || # CJK Comp. Ideographs ($ucs >= 0xfe30 && $ucs <= 0xfe6f) || # CJK Comp. Forms ($ucs >= 0xff00 && $ucs <= 0xff60) || # Fullwidth Forms ($ucs >= 0xffe0 && $ucs <= 0xffe6) || ($ucs >= 0x20000 && $ucs <= 0x2fffd) || ($ucs >= 0x30000 && $ucs <= 0x3fffd))); } # Return the Unicode name that belongs to a given character code # Jamo short names, see Unicode 3.0, table 4-4, page 86 my @lname = ('G', 'GG', 'N', 'D', 'DD', 'R', 'M', 'B', 'BB', 'S', 'SS', '', 'J', 'JJ', 'C', 'K', 'T', 'P', 'H'); # 1100..1112 my @vname = ('A', 'AE', 'YA', 'YAE', 'EO', 'E', 'YEO', 'YE', 'O', 'WA', 'WAE', 'OE', 'YO', 'U', 'WEO', 'WE', 'WI', 'YU', 'EU', 'YI', 'I'); # 1161..1175 my @tname = ('G', 'GG', 'GS', 'N', 'NJ', 'NH', 'D', 'L', 'LG', 'LM', 'LB', 'LS', 'LT', 'LP', 'LH', 'M', 'B', 'BS', 'S', 'SS', 'NG', 'J', 'C', 'K', 'T', 'P', 'H'); # 11a8..11c2 sub name { my $ucs = shift(@_); # The intervals used here reflect Unicode Version 3.2 if (($ucs >= 0x3400 && $ucs <= 0x4db5) || ($ucs >= 0x4e00 && $ucs <= 0x9fa5) || ($ucs >= 0x20000 && $ucs <= 0x2a6d6)) { return "CJK UNIFIED IDEOGRAPH-" . sprintf("%04X", $ucs); } if ($ucs >= 0xac00 && $ucs <= 0xd7a3) { my $s = $ucs - 0xac00; my $l = 0x1100 + int($s / (21 * 28)); my $v = 0x1161 + int(($s % (21 * 28)) / 28); my $t = 0x11a7 + $s % 28; return "HANGUL SYLLABLE " . ($lname[int($s / (21 * 28))] . $vname[int(($s % (21 * 28)) / 28)] . $tname[$s % 28 - 1]); } return $name{$ucs}; } sub is_unicode { my $ucs = shift(@_); # The intervals used here reflect Unicode Version 3.2 if (($ucs >= 0x3400 && $ucs <= 0x4db5) || ($ucs >= 0x4e00 && $ucs <= 0x9fa5) || ($ucs >= 0xac00 && $ucs <= 0xd7a3) || ($ucs >= 0x20000 && $ucs <= 0x2a6d6)) { return 1; } return exists $name{$ucs}; } my @search_path = (); if ($RealBin =~ m|^(.*)/bin\z| && -d "$1/share/uniset") { push @search_path, "$1/share/uniset"; } else { push @search_path, $RealBin; } sub search_open { my ($mode, $fn) = @_; my $file; return $file if open($file, $mode, $fn); return undef if $fn =~ m|/|; for my $path (@search_path) { return $file if open($file, $mode, "$path/$fn"); } return undef; } my $html = 0; my $image = 0; my $adducs = 0; my $unicodedata = "UnicodeData.txt"; my $blockdata = "Blocks.txt"; # read list of all Unicode names my $data = search_open('<', $unicodedata); unless ($data) { die ("Can't open Unicode database '$unicodedata':\n$!\n\n" . "Please make sure that you have downloaded the file\n" . "http://www.unicode.org/Public/UNIDATA/UnicodeData.txt\n"); } while (<$data>) { if (/^([0-9,A-F]{4,8});([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*)$/) { next if $2 ne '' && substr($2, 0, 1) eq '<'; $ucs = hex($1); $name{$ucs} = $2; $invname{$2} = $ucs; $category{$ucs} = $3; $comment{$ucs} = $12; } else { die("Syntax error in line '$_' in file '$unicodedata'\n"); } } close($data); # read list of all Unicode blocks $data = search_open('<', $blockdata); unless ($data) { die ("Can't open Unicode blockname list '$blockdata':\n$!\n\n" . "Please make sure that you have downloaded the file\n" . "http://www.unicode.org/Public/UNIDATA/Blocks.txt\n"); } my $blocks = 0; my (@blockstart, @blockend, @blockname); while (<$data>) { if (/^\s*([0-9,A-F]{4,8})\s*\.\.\s*([0-9,A-F]{4,8})\s*;\s*(.*)$/) { $blockstart[$blocks] = hex($1); $blockend [$blocks] = hex($2); $blockname [$blocks] = $3; $blocks++; } elsif (/^\s*\#/ || /^\s*$/) { # ignore comments and empty lines } else { die("Syntax error in line '$_' in file '$blockdata'\n"); } } close($data); if ($blockend[$blocks-1] < 0x110000) { $blockstart[$blocks] = 0x110000; $blockend [$blocks] = 0x7FFFFFFF; $blockname [$blocks] = "Beyond Plane 16"; $blocks++; } # process command line arguments while ($_ = shift(@ARGV)) { if (/^html$/) { $html = 1; } elsif (/^ucs$/) { $adducs = 1; } elsif (/^img$/) { $html = 1; $image = 1; } elsif (/^template$/) { $template = shift(@ARGV); open(TEMPLATE, $template) || die("Can't open template file '$template': $!\n"); while (

Py?P%yDP'yEP)yFP-yGP1yHP4yIP5yJP;yKP=yLP?yMPJyQPKyRPOySPQyTPTyUPXyVP[yWP\yXPgyYPiyZPky[Pry\Pyy]P{y^P|y_P~y`PyaPybPykPylPymPynPyoPypPyqPyrPysPytPyuPyvPywPyxPyyPyzPy{Py|Py}Py~Py!Qy"Qy#Qy$Qy%Qy&Qy'Qy(Qy)Qz*Qz+Qz,Q z-Q z.Q z/Qz0Qz1Qz2Qz3Q!z4Q'z5Q+z6Q-z7Q/z8Q0z9QLzCQUzDQVzEQYzFQezKQgzLQjzMQmzNQuzOQxzPQ~zQQzRQzSQzTQzUQzVQzWQzXQzYQzZQz[Qz\Qz]Qz^Qz_Qz`QzaQzbQzcQzdQzeQzfQzgQzhQziQznQzoQzpQzqQzrQ{sQ{tQ{uQ#{vQ4{"RG{'RN{(RU{)R`{*Rd{+Rf{,Ri{-Rj{.Rm{/Ro{0Rr{1Rs{2Rw{3R{4R{5R{6R{7R{8R{9R{:R{;R{R{?R{@R{AR{BR{CR{HR{IR{JR{KR{LR{RR{SR{TR |aR|fR|gR |hR%|iR&|jR(|kR,|lR1|mR3|nR4|oR6|pR9|qR:|rRF|sRJ|tRa|!Sc|"Sg|#Si|$Sm|%Sn|&Sp|'Sr|(Sy|)S||*S}|+S|,S|-S|.S|/S|0S|1S|2S|3S|9S|:S|>S|?S|FS|GS|HS|IS|JS}KS}SS}TS}US#}VS&}WS*}XS-}YS1}ZSG}`SH}aSM}bSQ}cSS}dSW}eSe}jSg}kSj}lSp}mSx}nSz}oS{}pS}{S}|S}}S}~S}!T}"T}#T}$T}%T}&T}'T}(T}1T}2T}4T}5T}6T}7T}8T}9T}:T};T}T~3T~?T~@T~AT~BT~CT~DT~ET ~FT'~GT(~HT,~IT-~JT/~KT3~LT6~MT?~NTD~OTE~PTG~QTN~RTP~STR~TTX~UT_~VTa~WTb~XTe~YTk~ZTn~[To~\Ts~]Tx~^T~~_T~`T~aT~bT~cT~dT~eT~fT~gT~hT~iT~jTCpTDqTGrTOsTRtTSuTm~Tq!U&U+U,U-U.U/U0U1U2U3U4U5U6U7U8U9U:U;UU?U@UAUBUCUDUHUIU JU$VU&WU,XU.YU0ZU4[U5\U7]U9^U:_U<`U>aU@bUDcU`dUdeUffUmgUqhUuiUjUkUlUmUnUoUpUqUrUsUȀtÙuUπvUҀwU|U}U~U!V"V#V$V%V&V'V(V )V-V.V /V$0V'1V,2V03V54V:5V<6VE7VG8VJ9VL:VR;VWVmBVoCVwDVEVJVKVFVLVMVNVOVPVQVRVSVTVÁVVŁWVʁXVˁUV΁YVρZVՁ[Vׁ\Vہ]V݁^Vށ_V`VaVbVcVkVlVmVnVoVpVqVrVsVtV!uV"vV(wV2xV4yV:zVK!WN"WO#WQ$WV%W\&W`'Wc(Wg)Wm*Wt+W{,W3W4W5W6W7W8W9W:W;Wj\@k\Bl\Em\Fn\Io\Op\Rq\Wr\ky\nz\p{\s|\u}\$]%]&]'](])]*]+],]-].]3]9]:];]<]=]>]?]@]A]B]C]D]E]F]K] L]"M]$N]&O]+P],Q]/R]5S]7T]=U]>V]@W]CX]EY]GZ]I[]M\]N]]S^]\b]]c]ad]ee]gf]p]q]r]s]t]u]v]w]x]y]z]{]|]}]~]!^"^#^$^Ê%^݊/^ߊ0^1^2^6^7^8^9^ ?^ :^;^<^=^>^-@^0A^7B^e^Ef^Gg^Ih^Ki^Oj^Qk^cs^dt^fu^hv^iw^mx^sy^uz^v{^{|^~}^~^!_"_#_$_%_&_'_(_)_*_+_Ō,_ƌ-_Ɍ._ˌ/_ό0_Ռ2_֌1_ٌ3_݌4_5_6_7_8_9_:_;_<_=_>_?_@_A_ B_C_D_E_eF_iG_lH_nI_J_K_L_M_N_O_P_Q_U_V_W_X_Y_Z_[_\_]_o_^_΍d_эe_ԍf_Սg_׍h_ٍi_j_k_l_m_s_t_ x_y_z_{_1$`3%`=*`@+`A,`T1`i8`A`B`C`D`E`F`K`L`M`N`O`P`Q`R`S`ǎX`ώY`юZ`Ԏ[`܎\`]`a`b`c`e`f`g`h`i`j`n` o`!p`#q`%r`'s`(t`:|`@}`A~`C!aG"aX)a]*a^+ae,a-a3a4a5a6a7a8aƏ9aʏ:aˏ;a͏aӏ?aՏ@aAaBaCaDaEaFaGaHaIaJaKaLaMa NaOaPa3Wa4Xa7Ya?ZaC[aD\aL]a[^a]_ab`afaagbalcapdateayfagahaiajakalaua{a}a̐|aҐ-b,b/b0b1b2b.b :b;b.Ib/Jb1Kb4LbCSbGTbHUbOVbSWba\bd]bg^bm_bt`bdbebfbgbhbibnbobpbqbrbzbӑ$cԑ%cב&cّ'cڑ(cޑ)c*c+c4c5c6c7cAcBcCcDcEcFcGc3PcJ]cXbcYcc\dc]ec`fcagc}c~c!d"d#d(d)d*d+dӒ?dMdNdOdPdQdRdSdTdUd VdWdXdYdUndWodXpdZqd^rddsdetdgudivdjwdz!e'e(e)e*e+e,e-e.e/e0e1e2e3e4e5e;e6e:e)hD*hG+hJ,hj8hl9h:h;hhCh˜DhŘEhȘFh̘GhHhMhNhOhPhQhRhShZh"[h&\h']h+^h@hhAihMmhNnhTohwhxhyhzh~h!i"i#i$iÙ%iə&iә'iԙ(iٙ)iڙ*iܙ+iޙ,i-i1i2i3i4i5i6i :i ;ii?i'Di-Ei.Fi3Gi5Hi6Ii8JiALiDMiGKiQRiTSiVTi]UiViWiXiYi^i_i`iaibiÚciƚdiȚeiΚfiКgiҚhiۚliܚminioipiqirisitiuiviwixi+j,j-j.j /j&0j+1j-2j=9jH:jK;jL?@ABCD~!"!    RSTUVWXYZ[\^_&2A?JRf'138B@IKSg  " $0*.(469=;CGEPLTXVZ\`^dblpjrnhtxvy}{   !%+/)57:><DHFQMUYW[]a_ecmqksoiuwz~|NNNN NNN#N$N(N+N.N/N0N5N@NANDNGNQNZN\NcNhNiNtNuNyNNNNNNNNNNNNNNNNNNNNNNOOOOO O OOOOOO.O1O`O3O5O7O9O;O>O@OBOHOIOKOLOROTOVOXO_OcOjOlOnOqOwOxOyOzO}O~OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPP P PPPPPPPPPP"P'P.P0P2P3P5P@PAPBPEPFPJPLPNPQPRPSPWPYP_P`PbPcPfPgPjPmPpPqP;PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQ Q Q QPQQQQQQQQ#Q'Q(Q,Q-Q/Q1Q3Q4Q5Q8Q9QBQJQOQSQUQWQXQ_QdQfQ~QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRR"R(R1R2R5RSBSLSKSYS[SaScSeSlSmSrSyS~SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTT!T'T(T*T/T1T4T5TCTDTGTMTOT^TbTdTfTgTiTkTmTnTtTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUU U U UUU*U+U2U5U6U;UW?WEWFWLWMWRWbWeWgWhWkWmWnWoWpWqWsWtWuWwWyWzW{W|W~WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXX WX X XXXX X&X'X-X2X9X?XIXLXMXOXPXUX_XaXdXgXhXxX|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYY Y YYYAYY!Y#Y$Y(Y/Y0Y3Y5Y6Y?YCYFYRYSYYY[Y]Y^Y_YaYcYkYmYoYrYuYvYyY{Y|YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZ Z ZZZZZ#Z$Z'Z(Z*Z-Z0ZDZEZGZHZLZPZUZ^ZcZeZgZmZwZzZ{Z~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[4[[[[![%[-[8[A[K[L[R[V[^[h[n[o[|[}[~[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\ \\\\#\&\)\+\,\.\0\2\5\6\Y\Z\\\b\c\g\h\i\m\p\t\u\z\{\|\}\\\\\\\\\\\\\\\\\\\\\\\\\]]] ]]+]#]$]&]']1]4]9]=]?]B]C]F]H]U]Q]Y]J]_]`]a]b]d]j]m]p]y]z]~]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^ ^^^^^^ ^.^(^2^5^>^K^P^I^Q^V^X^[^\^^^h^j^k^l^m^n^p^^^^^^^^^^^^^^^^^^^^^^^^^^_________!_"_#_$_(_+_,_._0_4_6_;_=_?_@_D_E_G_M_P_T_X_[_`_c_d_g_o_r_t_u_x_z_}_~________________________________________`` ` ```````$`-`3`5`@`G`H`I`L`Q`T`V`W`]`a`g`q`~``````````````````````````````````````````aaa a aaaaaaaaaaa"a*a+a0a1a5a6a7a9aAaEaFaIa^a`alaraxa{a|aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbb b"b#b'b)b+b9b=bBbCbDbFbLbPbQbRbTbVbZb\bdbmbobsbzb}bbbbbbbbbbbbbbbbbbbbbbccc c c ccccc)c*c-c5c6c9cgEgGgHgLgTgUg]gfglgngtgvg{gggggggggggggggggggggggggggggggggghRhhhhh(h'h,h-h/h0h1h3h;h?hDhEhJhLhUhWhXh[hkhnhohphqhrhuhyhzh{h|hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhii i iiiiii1i3i5i8i;iBiEiIiNiWi[icidieifihiiilipiqirizi{iiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjj j$j(j0j2j4j7j;j>j?jEjFjIjJjNjPjQjRjUjVj[jdjgjjjqjsj~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkk kkkkkkk$k(k+k,k/k5k6k;k?kFkJkMkRkVkXk]k`kgkkknkpkuk}k~kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllll l llllll&l'l(l,l.l3l5l6l:l;l?lJlKlMlOlRlTlYl[l\lklmloltlvlxlyl{llllllllllllllllllllllllllllllllmmm mmmmmm&m'm(lgm.m/m1m9mu?u@uCuGuHuNuPuRuWu^u_uauouquyuzu{u|u}u~uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvv v vvvvvvvvvvv#v%v&v)v-v2v3v5v8v9v:vwBwEwFwJwMwNwOwRwVwWw\w^w_w`wbwdwgwjwlwpwrwswtwzw}wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxx x xxxx!x"x#x-x.x0x5x7xCxDxGxHxLxNxRx\x^x`xaxcxdxhxjxnxzx~xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyxxxxxyy yyyyyy y%y'y)y-y1y4y5y;y=y?yDyEyFyJyKyOyQyTyXy[y\ygyiykyryyy{y|y~yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzz z z zzzzz!z'z+z-z/z0z4z5z8z9z:zDzEzGzHzLzUzVzYz\z]z_z`zezgzjzmzuzxz~zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{#{'{){*{+{-{.{/{0{1{4{={?{@{A{G{N{U{`{d{f{i{j{m{o{r{s{w{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{|||||| | | ||||| |%|&|(|,|1|3|4|6|9|:|F|J|U|Q|R|S|Y|Z|[|\|]|^|a|c|g|i|m|n|p|r|y|||}|||||||||||||||||||||||||||||||}}}} }}}}}}}}#}&}*}-}1}<}=}>}@}A}G}H}M}Q}S}W}Y}Z}\}]}e}g}j}p}x}z}{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}~}}}}}}}}}}}~~~~~~~~ ~'~(~,~-~/~3~6~?~D~E~G~N~P~R~X~_~a~b~e~k~n~o~s~x~~~~~~~~~~~~~<;=>?CDGORS[\]acdefmq}~  $&,.04579:<>@D`dfmquȀ̀πҀԀՀ׀؀  $',05:@CEMX]adeoqr{ȇɇʇ·Շևهڇ܇߇ (-.025:@BEFIORWZ[\abcknpsuz{|}ԉՉ։׉؉ "$&+,/57=>@CEGIMNSVWX\]aeguvwyz{~ÊƊȊɊʊъӊԊՊ׊݊ߊ  -07EGIKOQSTWX[]Ycdfhimsuv{~ŌƌɌˌό֌Ռٌ݌ eilnōƍǍȍʍ΍эԍՍ׍ٍ  !"#&'136789=@AKMNOT[\]^abilmopqyz{ÎĎǎώюԎ܎ !#%'(,-.4567:@ACGOQRSTUX]^eƏʏˏ͏ЏҏӏՏ ()/*,-347?CDL[]bfglpty̐ĐŐǐȐՐאِؐܐݐߐҐ  %"#')./14679:<=CGHOSWYZ[adgmtyz{‘Ñőӑԑבّڑޑ #$%&(./035689:<>@BCFGJMNOQXY\]`aeghinopuvwxy{|}’ÒŒƒǒȒ˒̒͒ΒВӒՒגْؒܒݒߒ !$%')*3467GHIPQRUWXZ^degijmopqstvz}ēœƓǓɓʓ˓͓̓ӓٓܓޓߓ ./1234;?=CEHJLUY\_achkmnoqrxy~ƕȕɕ˕Еѕҕӕٕڕݕޕߕ"$%&,13789:<=ARTVWXant{|~ʖ]ؖږݖޖߖ !"#(13ACJNOUWXZ[cgjnsvwx{}ėŗǗɗʗ̗͗ΗЗїԗחؗٗݗޗۗ   #&+./0235%>DGJQRSVWYZbcefjl˜ŘȘ̘"&'+123459:;<@AFGHMNTXY[\^_`Ùəәԙٙڙܙޙ  "#$'-.3568GADJKLNQTV]ÚƚȚΚКҚ՚֚ךۚܚ  &+-34579:=HKLUVW[^acefhjklmnsuwxyǛțΛЛכ؛ݛߛ "#&'()*1567=ACDEIJNOPSTVX[]^_cij\khnpruw{ /0234:?@ABCD~"!!    RSTUVWXYZ[\^_&2A?JRf'138B@IKSg  " $0*.(469=;CGEPLTXVZ\`^dblpjrnhtxvy}{   !%+/)57:><DHFQMUYW[]a_ecmqksoiuwz~|NNN NNN#N$N(N+N.N/N0N5N@NANDNGNQNZN\NcNhNiNtNuNyNNNNNNNNNNNNNNNNNNNNNNNOOOO O OOOOOO.O1O`O3O5O7O9O;O>O@OBOHOIOKOLOROTOVOXO_OcOjOlOnOqOwOxOyOzO}O~OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPP P PPPPPPPPPP"P'P.P0P2P3P5P@PAPBPEPFPJPLPNPQPRPSPWPYP_P`PbPcPfPgPjPmPpPqP;PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQ Q Q QQPQQQQQQQ#Q'Q(Q,Q-Q/Q1Q3Q4Q5Q8Q9QBQJQOQSQUQWQXQ_QdQfQ~QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRR"R(R1R2R5RSBSLSKSYS[SaScSeSlSmSrSyS~SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTT!T'T(T*T/T1T4T5TCTDTGTMTOT^TbTdTfTgTiTkTmTnTtTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUU U U UUU*U+U2U5U6U;UW?WEWFWLWMWRWbWeWgWhWkWmWnWoWpWqWsWtWuWwWyWzW{W|W~WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXX XW X XXXX X&X'X-X2X9X?XIXLXMXOXPXUX_XaXdXgXhXxX|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYY Y YYYYAY!Y#Y$Y(Y/Y0Y3Y5Y6Y?YCYFYRYSYYY[Y]Y^Y_YaYcYkYmYoYrYuYvYyY{Y|YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZ Z ZZZZZ#Z$Z'Z(Z*Z-Z0ZDZEZGZHZLZPZUZ^ZcZeZgZmZwZzZ{Z~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[4[[[[![%[-[8[A[K[L[R[V[^[h[n[o[|[}[~[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ \\\\#\&\)\+\,\.\0\2\5\6\Y\Z\\\b\c\g\h\i\m\p\t\u\z\{\|\}\\\\\\\\\\\\\\\\\\\\\\\\\\]] ]]+]#]$]&]']1]4]9]=]?]B]C]F]H]U]Q]Y]J]_]`]a]b]d]j]m]p]y]z]~]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^ ^^^^^^ ^.^(^2^5^>^K^P^I^Q^V^X^[^\^^^h^j^k^l^m^n^p^^^^^^^^^^^^^^^^^^^^^^^^^^^________!_"_#_$_(_+_,_._0_4_6_;_=_?_@_D_E_G_M_P_T_X_[_`_c_d_g_o_r_t_u_x_z_}_~_________________________________________` ` ```````$`-`3`5`@`G`H`I`L`Q`T`V`W`]`a`g`q`~```````````````````````````````````````````aa a aaaaaaaaaaa"a*a+a0a1a5a6a7a9aAaEaFaIa^a`alaraxa{a|aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbb b"b#b'b)b+b9b=bBbCbDbFbLbPbQbRbTbVbZb\bdbmbobsbzb}bbbbbbbbbbbbbbbbbbbbbbbcc c c ccccc)c*c-c5c6c9cgEgGgHgLgTgUg]gfglgngtgvg{gggggggggggggggggggggggggggggggggggRhhhhh(h'h,h-h/h0h1h3h;h?hDhEhJhLhUhWhXh[hkhnhohphqhrhuhyhzh{h|hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhi i iiiiii1i3i5i8i;iBiEiIiNiWi[icidieifihiiilipiqirizi{iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjj j$j(j0j2j4j7j;j>j?jEjFjIjJjNjPjQjRjUjVj[jdjgjjjqjsj~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkk kkkkkkk$k(k+k,k/k5k6k;k?kFkJkMkRkVkXk]k`kgkkknkpkuk}k~kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkklll l llllll&l'l(l,l.l3l5l6l:l;l?lJlKlMlOlRlTlYl[l\lklmloltlvlxlyl{lllllllllllllllllllllllllllllllllmm mmmmmm&m'm(mgl.m/m1m9mu?u@uCuGuHuNuPuRuWu^u_uauouquyuzu{u|u}u~uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvv v vvvvvvvvvvv#v%v&v)v-v2v3v5v8v9v:vwBwEwFwJwMwNwOwRwVwWw\w^w_w`wbwdwgwjwlwpwrwswtwzw}wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxx x xxxx!x"x#x-x.x0x5x7xCxDxGxHxLxNxRx\x^x`xaxcxdxhxjxnxzx~xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyxxxxxy yyyyyy y%y'y)y-y1y4y5y;y=y?yDyEyFyJyKyOyQyTyXy[y\ygyiykyryyy{y|y~yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz z z zzzzz!z'z+z-z/z0z4z5z8z9z:zDzEzGzHzLzUzVzYz\z]z_z`zezgzjzmzuzxz~zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{#{'{){*{+{-{.{/{0{1{4{={?{@{A{G{N{U{`{d{f{i{j{m{o{r{s{w{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{||||| | | ||||| |%|&|(|,|1|3|4|6|9|:|F|J|U|Q|R|S|Y|Z|[|\|]|^|a|c|g|i|m|n|p|r|y|||}||||||||||||||||||||||||||||||||}}} }}}}}}}}#}&}*}-}1}<}=}>}@}A}G}H}M}Q}S}W}Y}Z}\}]}e}g}j}p}x}z}{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}~}}}}}}}}}}}~~~~~~~ ~'~(~,~-~/~3~6~?~D~E~G~N~P~R~X~_~a~b~e~k~n~o~s~x~~~~~~~~~~~~~~<;=>?CDGORS[\]acdefmq}~  $&,.04579:<>@D`dfmquȀ̀πҀԀՀ׀؀  $',05:@CEMX]adeoqr{ȇɇʇ·Շևهڇ܇߇ (-.025:@BEFIORWZ[\abcknpsuz{|}ԉՉ։׉؉ "$&+,/57=>@CEGIMNSVWX\]aeguvwyz{~ÊƊȊɊʊъӊԊՊ׊݊ߊ  -07EGIKOQSTWX[]Ycdfhimsuv{~ŌƌɌˌό֌Ռٌ݌ eilnōƍǍȍʍ΍эԍՍ׍ٍ  !"#&'136789=@AKMNOT[\]^abilmopqyz{ÎĎǎώюԎ܎ !#%'(,-.4567:@ACGOQRSTUX]^eƏʏˏ͏ЏҏӏՏ ()/*,-347?CDL[]bfglpty̐ÐĐŐǐȐՐאِؐܐݐߐҐ  %"#')./14679:<=CGHOSWYZ[adgmtyz{‘Ñőӑԑבّڑޑ #$%&(./035689:<>@BCFGJMNOQXY\]`aeghinopuvwxy{|}’ÒŒƒǒȒ˒̒͒ΒВӒՒגْؒܒݒߒ !$%')*3467GHIPQRUWXZ^degijmopqstvz}ēœƓǓɓʓ˓͓̓ӓٓܓޓߓ ./1234;?=CEHJLUY\_achkmnoqrxy~ƕȕɕ˕Еѕҕӕٕڕݕޕߕ"$%&,13789:<=ARTVWXant{|~ʖҖ]ؖږݖޖߖ !"#(13ACJNOUWXZ[cgjnsvwx{}ėŗǗɗʗ̗͗ΗЗїԗחؗٗݗޗۗ   #&+./0235%>DGJQRSVWYZbcefjl˜ŘȘ̘"&'+123459:;<@AFGHMNTXY[\^_`Ùəәԙٙڙܙޙ  "#$'-.3568GADJKLNQTV]ÚƚȚΚКҚ՚֚ךۚܚ  &+-34579:=HKLUVW[^acefhjklmnsuwxyǛțΛЛכ؛ݛߛ "#&'()*1567=ACDEIJNOPSTVX[]^_cij\khnpruw{ /0234:+!+w0!0~1!1~J2!2~3!3~4!4~d5!5~6!6~ 7!7~~8!8~9!9~::!:~;!;~!>~?!?~n@!@~A!A~*B!B~C!C~D!D~ DE!E~ F!F~ G!G~ ^H!H~ I!I~ J!J~ xK!K~ L!L~ 4M!M~ N!N~ O!O~ NP!P~ Q!Q~ R!R~hS!S~T!T~$U!U~V!V~W!W~>X!X~Y!Y~Z!Z~X[![~\!\~]!]~r^!^~_!_~.`!`~a!a~b!b~Hc!c~d!d~e!e~bf!f~g!g~h!h~|i!i~j!j~8k!k~l!l~m!mcR~!"!    RSTUVWXYZ[\^_A?JRf'138B@IKSg  " $0*.(469=;CGEPLTXVZ\`^dblpjrnhtxvy}{   !%+/)57:><DHFQMUYW[]a_ecmqksoiuwz~|NNNN NNN#N$N(N+N.N/N0N5N@NANDNGNQNZN\NcNhNiNtNuNyNNNNNNNNNNNNNNNNNNNNNNOOOOO O OOOOOO.O1O`O3O5O7O9O;O>O@OBOHOIOKOLOROTOVOXO_OcOjOlOnOqOwOxOyOzO}O~OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPP P PPPPPPPPPP"P'P.P0P2P3P5P@PAPBPEPFPJPLPNPQPRPSPWPYP_P`PbPcPfPgPjPmPpPqP;PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQ Q Q QPQQQQQQQQ#Q'Q(Q,Q-Q/Q1Q3Q4Q5Q8Q9QBQJQOQSQUQWQXQ_QdQfQ~QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRR"R(R1R2R5RSBSLSKSYS[SaScSeSlSmSrSyS~SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTT!T'T(T*T/T1T4T5TCTDTGTMTOT^TbTdTfTgTiTkTmTnTtTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUU U U UUU*U+U2U5U6U;UW?WEWFWLWMWRWbWeWgWhWkWmWnWoWpWqWsWtWuWwWyWzW{W|W~WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXX WX X XXXX X&X'X-X2X9X?XIXLXMXOXPXUX_XaXdXgXhXxX|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYY Y YYYAYY!Y#Y$Y(Y/Y0Y3Y5Y6Y?YCYFYRYSYYY[Y]Y^Y_YaYcYkYmYoYrYuYvYyY{Y|YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZ Z ZZZZZ#Z$Z'Z(Z*Z-Z0ZDZEZGZHZLZPZUZ^ZcZeZgZmZwZzZ{Z~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[4[[[[![%[-[8[A[K[L[R[V[^[h[n[o[|[}[~[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\ \\\\#\&\)\+\,\.\0\2\5\6\Y\Z\\\b\c\g\h\i\m\p\t\u\z\{\|\}\\\\\\\\\\\\\\\\\\\\\\\\\]]] ]]+]#]$]&]']1]4]9]=]?]B]C]F]H]U]Q]Y]J]_]`]a]b]d]j]m]p]y]z]~]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^ ^^^^^^ ^.^(^2^5^>^K^P^I^Q^V^X^[^\^^^h^j^k^l^m^n^p^^^^^^^^^^^^^^^^^^^^^^^^^^_________!_"_#_$_(_+_,_._0_4_6_;_=_?_@_D_E_G_M_P_T_X_[_`_c_d_g_o_r_t_u_x_z_}_~________________________________________`` ` ```````$`-`3`5`@`G`H`I`L`Q`T`V`W`]`a`g`q`~``````````````````````````````````````````aaa a aaaaaaaaaaa"a*a+a0a1a5a6a7a9aAaEaFaIa^a`alaraxa{a|aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbb b"b#b'b)b+b9b=bBbCbDbFbLbPbQbRbTbVbZb\bdbmbobsbzb}bbbbbbbbbbbbbbbbbbbbbbccc c c ccccc)c*c-c5c6c9cgEgGgHgLgTgUg]gfglgngtgvg{gggggggggggggggggggggggggggggggggghRhhhhh(h'h,h-h/h0h1h3h;h?hDhEhJhLhUhWhXh[hkhnhohphqhrhuhyhzh{h|hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhii i iiiiii1i3i5i8i;iBiEiIiNiWi[icidieifihiiilipiqirizi{iiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjj j$j(j0j2j4j7j;j>j?jEjFjIjJjNjPjQjRjUjVj[jdjgjjjqjsj~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkk kkkkkkk$k(k+k,k/k5k6k;k?kFkJkMkRkVkXk]k`kgkkknkpkuk}k~kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllll l llllll&l'l(l,l.l3l5l6l:l;l?lJlKlMlOlRlTlYl[l\lklmloltlvlxlyl{llllllllllllllllllllllllllllllllmmm mmmmmm&m'm(lgm.m/m1m9mu?u@uCuGuHuNuPuRuWu^u_uauouquyuzu{u|u}u~uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvv v vvvvvvvvvvv#v%v&v)v-v2v3v5v8v9v:vwBwEwFwJwMwNwOwRwVwWw\w^w_w`wbwdwgwjwlwpwrwswtwzw}wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxx x xxxx!x"x#x-x.x0x5x7xCxDxGxHxLxNxRx\x^x`xaxcxdxhxjxnxzx~xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyxxxxxyy yyyyyy y%y'y)y-y1y4y5y;y=y?yDyEyFyJyKyOyQyTyXy[y\ygyiykyryyy{y|y~yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzz z z zzzzz!z'z+z-z/z0z4z5z8z9z:zDzEzGzHzLzUzVzYz\z]z_z`zezgzjzmzuzxz~zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{#{'{){*{+{-{.{/{0{1{4{={?{@{A{G{N{U{`{d{f{i{j{m{o{r{s{w{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{|||||| | | ||||| |%|&|(|,|1|3|4|6|9|:|F|J|U|Q|R|S|Y|Z|[|\|]|^|a|c|g|i|m|n|p|r|y|||}|||||||||||||||||||||||||||||||}}}} }}}}}}}}#}&}*}-}1}<}=}>}@}A}G}H}M}Q}S}W}Y}Z}\}]}e}g}j}p}x}z}{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}~}}}}}}}}}}}~~~~~~~~ ~'~(~,~-~/~3~6~?~D~E~G~N~P~R~X~_~a~b~e~k~n~o~s~x~~~~~~~~~~~~~<;=>?CDGORS[\]acdefmq}~  $&,.04579:<>@D`dfmquȀ̀πҀԀՀ׀؀  $',05:@CEMX]adeoqr{ȇɇʇ·Շևهڇ܇߇ (-.025:@BEFIORWZ[\abcknpsuz{|}ԉՉ։׉؉ "$&+,/57=>@CEGIMNSVWX\]aeguvwyz{~ÊƊȊɊʊъӊԊՊ׊݊ߊ  -07EGIKOQSTWX[]Ycdfhimsuv{~ŌƌɌˌό֌Ռٌ݌ eilnōƍǍȍʍ΍эԍՍ׍ٍ  !"#&'136789=@AKMNOT[\]^abilmopqyz{ÎĎǎώюԎ܎ !#%'(,-.4567:@ACGOQRSTUX]^eƏʏˏ͏ЏҏӏՏ ()/*,-347?CDL[]bfglpty̐ÐĐŐǐȐՐאِؐܐݐߐҐ  %"#')./14679:<=CGHOSWYZ[adgmtyz{‘Ñőӑԑבّڑޑ #$%&(./035689:<>@BCFGJMNOQXY\]`aeghinopuvwxy{|}’ÒŒƒǒȒ˒̒͒ΒВӒՒגْؒܒݒߒ !$%')*3467GHIPQRUWXZ^degijmopqstvz}ēœƓǓɓʓ˓͓̓ӓٓܓޓߓ ./1234;?=CEHJLUY\_achkmnoqrxy~ƕȕɕ˕Еѕҕӕٕڕݕޕߕ"$%&,13789:<=ARTVWXant{|~ʖ]ؖږݖޖߖ !"#(13ACJNOUWXZ[cgjnsvwx{}ėŗǗɗʗ̗͗ΗЗїԗחؗٗݗޗۗ   #&+./0235%>DGJQRSVWYZbcefjl˜ŘȘ̘"&'+123459:;<@AFGHMNTXY[\^_`Ùəәԙٙڙܙޙ  "#$'-.3568GADJKLNQTV]ÚƚȚΚКҚ՚֚ךۚܚ  &+-34579:=HKLUVW[^acefhjklmnsuwxyǛțΛЛכ؛ݛߛ "#&'()*1567=ACDEIJNOPSTVX[]^_cij\khnpruw{ /0234:!+w+!0~0!1~1J!2~2!3~3!4~4d!5~5!6~6 !7~7~!8~8!9~9:!:~:!;~;!<~~>!?~?n!@~@!A~A*!B~B!C~C!D~DD !E~E !F~F !G~G^ !H~H !I~I !J~Jx !K~K !L~L4 !M~M !N~N !O~ON !P~P !Q~Q !R~Rh!S~S!T~T$!U~U!V~V!W~W>!X~X!Y~Y!Z~ZX![~[!\~\!]~]r!^~^!_~_.!`~`!a~a!b~bH!c~c!d~d!e~eb!f~f!g~g!h~h|!i~i!j~j8!k~k!l~l!mcmR~"!!    RSTUVWXYZ[\^_A?JRf'138B@IKSg  " $0*.(469=;CGEPLTXVZ\`^dblpjrnhtxvy}{   !%+/)57:><DHFQMUYW[]a_ecmqksoiuwz~|NNN NNN#N$N(N+N.N/N0N5N@NANDNGNQNZN\NcNhNiNtNuNyNNNNNNNNNNNNNNNNNNNNNNNOOOO O OOOOOO.O1O`O3O5O7O9O;O>O@OBOHOIOKOLOROTOVOXO_OcOjOlOnOqOwOxOyOzO}O~OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPP P PPPPPPPPPP"P'P.P0P2P3P5P@PAPBPEPFPJPLPNPQPRPSPWPYP_P`PbPcPfPgPjPmPpPqP;PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQ Q Q QQPQQQQQQQ#Q'Q(Q,Q-Q/Q1Q3Q4Q5Q8Q9QBQJQOQSQUQWQXQ_QdQfQ~QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRR"R(R1R2R5RSBSLSKSYS[SaScSeSlSmSrSyS~SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTT!T'T(T*T/T1T4T5TCTDTGTMTOT^TbTdTfTgTiTkTmTnTtTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUU U U UUU*U+U2U5U6U;UW?WEWFWLWMWRWbWeWgWhWkWmWnWoWpWqWsWtWuWwWyWzW{W|W~WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXX XW X XXXX X&X'X-X2X9X?XIXLXMXOXPXUX_XaXdXgXhXxX|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYY Y YYYYAY!Y#Y$Y(Y/Y0Y3Y5Y6Y?YCYFYRYSYYY[Y]Y^Y_YaYcYkYmYoYrYuYvYyY{Y|YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZ Z ZZZZZ#Z$Z'Z(Z*Z-Z0ZDZEZGZHZLZPZUZ^ZcZeZgZmZwZzZ{Z~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[4[[[[![%[-[8[A[K[L[R[V[^[h[n[o[|[}[~[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ \\\\#\&\)\+\,\.\0\2\5\6\Y\Z\\\b\c\g\h\i\m\p\t\u\z\{\|\}\\\\\\\\\\\\\\\\\\\\\\\\\\]] ]]+]#]$]&]']1]4]9]=]?]B]C]F]H]U]Q]Y]J]_]`]a]b]d]j]m]p]y]z]~]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^ ^^^^^^ ^.^(^2^5^>^K^P^I^Q^V^X^[^\^^^h^j^k^l^m^n^p^^^^^^^^^^^^^^^^^^^^^^^^^^^________!_"_#_$_(_+_,_._0_4_6_;_=_?_@_D_E_G_M_P_T_X_[_`_c_d_g_o_r_t_u_x_z_}_~_________________________________________` ` ```````$`-`3`5`@`G`H`I`L`Q`T`V`W`]`a`g`q`~```````````````````````````````````````````aa a aaaaaaaaaaa"a*a+a0a1a5a6a7a9aAaEaFaIa^a`alaraxa{a|aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbb b"b#b'b)b+b9b=bBbCbDbFbLbPbQbRbTbVbZb\bdbmbobsbzb}bbbbbbbbbbbbbbbbbbbbbbbcc c c ccccc)c*c-c5c6c9cgEgGgHgLgTgUg]gfglgngtgvg{gggggggggggggggggggggggggggggggggggRhhhhh(h'h,h-h/h0h1h3h;h?hDhEhJhLhUhWhXh[hkhnhohphqhrhuhyhzh{h|hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhi i iiiiii1i3i5i8i;iBiEiIiNiWi[icidieifihiiilipiqirizi{iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjj j$j(j0j2j4j7j;j>j?jEjFjIjJjNjPjQjRjUjVj[jdjgjjjqjsj~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkk kkkkkkk$k(k+k,k/k5k6k;k?kFkJkMkRkVkXk]k`kgkkknkpkuk}k~kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkklll l llllll&l'l(l,l.l3l5l6l:l;l?lJlKlMlOlRlTlYl[l\lklmloltlvlxlyl{lllllllllllllllllllllllllllllllllmm mmmmmm&m'm(mgl.m/m1m9mu?u@uCuGuHuNuPuRuWu^u_uauouquyuzu{u|u}u~uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvv v vvvvvvvvvvv#v%v&v)v-v2v3v5v8v9v:vwBwEwFwJwMwNwOwRwVwWw\w^w_w`wbwdwgwjwlwpwrwswtwzw}wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxx x xxxx!x"x#x-x.x0x5x7xCxDxGxHxLxNxRx\x^x`xaxcxdxhxjxnxzx~xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyxxxxxy yyyyyy y%y'y)y-y1y4y5y;y=y?yDyEyFyJyKyOyQyTyXy[y\ygyiykyryyy{y|y~yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz z z zzzzz!z'z+z-z/z0z4z5z8z9z:zDzEzGzHzLzUzVzYz\z]z_z`zezgzjzmzuzxz~zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{#{'{){*{+{-{.{/{0{1{4{={?{@{A{G{N{U{`{d{f{i{j{m{o{r{s{w{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{||||| | | ||||| |%|&|(|,|1|3|4|6|9|:|F|J|U|Q|R|S|Y|Z|[|\|]|^|a|c|g|i|m|n|p|r|y|||}||||||||||||||||||||||||||||||||}}} }}}}}}}}#}&}*}-}1}<}=}>}@}A}G}H}M}Q}S}W}Y}Z}\}]}e}g}j}p}x}z}{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}~}}}}}}}}}}}~~~~~~~ ~'~(~,~-~/~3~6~?~D~E~G~N~P~R~X~_~a~b~e~k~n~o~s~x~~~~~~~~~~~~~~<;=>?CDGORS[\]acdefmq}~  $&,.04579:<>@D`dfmquȀ̀πҀԀՀ׀؀  $',05:@CEMX]adeoqr{ȇɇʇ·Շևهڇ܇߇ (-.025:@BEFIORWZ[\abcknpsuz{|}ԉՉ։׉؉ "$&+,/57=>@CEGIMNSVWX\]aeguvwyz{~ÊƊȊɊʊъӊԊՊ׊݊ߊ  -07EGIKOQSTWX[]Ycdfhimsuv{~ŌƌɌˌό֌Ռٌ݌ eilnōƍǍȍʍ΍эԍՍ׍ٍ  !"#&'136789=@AKMNOT[\]^abilmopqyz{ÎĎǎώюԎ܎ !#%'(,-.4567:@ACGOQRSTUX]^eƏʏˏ͏ЏҏӏՏ ()/*,-347?CDL[]bfglpty̐ÐĐŐǐȐՐאِؐܐݐߐҐ  %"#')./14679:<=CGHOSWYZ[adgmtyz{‘Ñőӑԑבّڑޑ #$%&(./035689:<>@BCFGJMNOQXY\]`aeghinopuvwxy{|}’ÒŒƒǒȒ˒̒͒ΒВӒՒגْؒܒݒߒ !$%')*3467GHIPQRUWXZ^degijmopqstvz}ēœƓǓɓʓ˓͓̓ӓٓܓޓߓ ./1234;?=CEHJLUY\_achkmnoqrxy~ƕȕɕ˕Еѕҕӕٕڕݕޕߕ"$%&,13789:<=ARTVWXant{|~ʖҖ]ؖږݖޖߖ !"#(13ACJNOUWXZ[cgjnsvwx{}ėŗǗɗʗ̗͗ΗЗїԗחؗٗݗޗۗ   #&+./0235%>DGJQRSVWYZbcefjl˜ŘȘ̘"&'+123459:;<@AFGHMNTXY[\^_`Ùəәԙٙڙܙޙ  "#$'-.3568GADJKLNQTV]ÚƚȚΚКҚ՚֚ךۚܚ  &+-34579:=HKLUVW[^acefhjklmnsuwxyǛțΛЛכ؛ݛߛ "#&'()*1567=ACDEIJNOPSTVX[]^_cij\khnpruw{ /0234:?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~*  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~%%% %%%%%$%,%4%<%%%%%%%%# %"""H"d"e#!%P%Q%RQ%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%lN01F45D3E89:;<=>?O@ABC62LK7HMIGJ.&$%/ !"#,+(-)'*  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~%% %%%%%$%,%4%<%%%%%%%%% #%""H"d"e"!#P%Q%R%QS%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%N01F45D3E89:;<=>?O@ABC62LK7HMIGJ.&$%/ !"#,+(-)'*picolibc-1.7.4/newlib/libc/iconv/ccs/binary/koi8_ru.cct000066400000000000000000000121241414576234500227400ustar00rootroot00000000000000koi8_ruXPRTT*  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~*  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~%%% %%%%%$%,%4%<%%%%%%%% %"  !!"%P%Q%RQT%TVW%W%X%Y%Z%[^%^%_%`%a%c%f%g%h%i%jN01F45D3E89:;<=>?O@ABC62LK7HMIGJ.&$%/ !"#,+(-)'*  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~%% %%%%%$%,%4%<%%%%%%%%% %"  !"!P%Q%R%QTT%VWW%X%Y%Z%[%^^%_%`%a%c%f%g%h%i%j%N01F45D3E89:;<=>?O@ABC62LK7HMIGJ.&$%/ !"#,+(-)'*picolibc-1.7.4/newlib/libc/iconv/ccs/binary/koi8_u.cct000066400000000000000000000111241414576234500225550ustar00rootroot00000000000000koi8_uXXPRTT*  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~*  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~%%% %%%%%$%,%4%<%%%%%%%%# %"""H"d"e#!%P%Q%RQT%TVW%W%X%Y%Z%[%]%^%_%`%a%c%f%g%h%i%j%lN01F45D3E89:;<=>?O@ABC62LK7HMIGJ.&$%/ !"#,+(-)'*  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~%% %%%%%$%,%4%<%%%%%%%%% #%""H"d"e"!#P%Q%R%QTT%VWW%X%Y%Z%[%]%^%_%`%a%c%f%g%h%i%j%l%N01F45D3E89:;<=>?O@ABC62LK7HMIGJ.&$%/ !"#,+(-)'*picolibc-1.7.4/newlib/libc/iconv/ccs/binary/koi8_uni.cct000066400000000000000000000121241414576234500231050ustar00rootroot00000000000000koi8_uniPRTT*  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~*  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~%%% %%%%%$%,%4%<%%%%%%    "  !"RSQTUVWXYZ[\^_!    N01F45D3E89:;<=>?O@ABC62LK7HMIGJ.&$%/ !"#,+(-)'*  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~%% %%%%%$%,%4%<%%%%%%%    "  "!RSQTUVWXYZ[\^_!    N01F45D3E89:;<=>?O@ABC62LK7HMIGJ.&$%/ !"#,+(-)'*picolibc-1.7.4/newlib/libc/iconv/ccs/binary/ksx1001.cct000066400000000000000000012176241414576234500225040ustar00rootroot00000000000000ksx1001XP$$P$HPu(xu(2BzBz  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"."4!W!'(#!)!F!>)w)x"%"R!$",)v(,(y(v(z"/(!("!?(*(-),)!)#!@)*)-)"($)$)%(&)&)'(()(())))0(/)/(+)+(.)."'"0"("+"*"-")%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x,',!,",#,$,%,&,(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,?,@,A,Q,R,S,T,U,V,X,Y,Z,[,\,],^,_,`,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,W!*!.!/!0!1"S"T!%!&"6!G!H!X)y)z){)|)})~!I"5'$"`"e"b'Y!J(w(x({(|(}(~%0%1%2%3%4%5%6%7%8%9%!%"%#%$%%%&%'%(%)%*!g!h!f!i!j"U"X"V"Y"W"!"""#!S"$!T!t!u"3"2!n!p!D!P!+!|!}!{!z!r!s"1!E!q!-!o!V!A!U!B!C!l!m!x!y!v!w"A!Q!R(g(h(i(j(k(l(m(n(o(p(q(r(s(t(u)g)h)i)j)k)l)m)n)o)p)q)r)s)t)u)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)])^)_)`)a)b)c)d)e)f(M(N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f&!&,&"&-&#&H&G&.&$&B&A&/&&&F&E&1&%&D&C&0&'&<&I&J&7&K&L&2&)&>&M&N&9&O&P&4&(&Q&R&8&=&S&T&3&*&U&V&:&?&W&X&5&+&Y&Z&;&[&\&@&]&^&_&`&a&b&c&d&6"F!a!`"C"G"H"K"J"I"L!c!b":"9!e!d"8"7!_!^"B![!]!\"D"E!Z!Y"O"N"P"Q!O!N"<"="@";">"?"M"["\"]"Z!!!"!#!(!4!5!6!7!8!9!:!;!*?*@*A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*[*\*]*^*_*`*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s+!+"+#+$+%+&+'+(+)+*+++,+-+.+/+0+1+2+3+4+5+6+7+8+9+:+;+<+=+>+?+@+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+[+\+]+^+_+`+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z${$|$}$~)1)2)3)4)5)6)7)8)9):);)<)=)>)?)@)A)B)C)D)E)F)G)H)I)J)K)L"_(1(2(3(4(5(6(7(8(9(:(;(<(=(>(?(@(A(B(C(D(E(F(G(H(I(J(K(L"^'I'J'K'L'M':';'\']'^'6'7'8'T'U'V'W'X'!'"'#'%'+','-'.'/'0'1'2'3'4'''(')'*'='>'e'f'g'h'a'b'c'?'@'A'B'C'D'E'F'G'H'N'O'P'Q'R'S'Z'["c'l'&'`'o"a'<'m'5'9'j'k'_"d'd'n'ilioKvRX2m[_2_>y;\tuds&]`a&Nx\0c*qiMz|/S!q+gQR,Nyq}^?{:y9NRc+k`NzKwe%JaTLja\c_-KkU/Vuex^@l#iMj'iv{;gioLPf^Ad,XLyqN_z$f2z{z=LHoMUUS"lQd'lRv1N{PQK?m$m(^Bvbm\\u`9TNt5S[V5l$dfqjKlK@lrPjyrl%P_gjPk\Q[i}L[WZaV6c_^C^DJ!nlS#n7xOjHn8q,q%iNySpp$alOgsKm)J>tovN^{P;U7nqt(\xK'ZN`fm%nr\yy\s\xrty|qP<[yW1K|p%K}UtMmJ%V+PBp>R=L$z6LMZzvOi8XuLNWMTQimJkYb}2c-VLY4a'nSPC}3UdOhmCP2N~Z(xP}VxQxR\S]b{y]Ac5m]NDK!]c|]y/R{O!d(t6l~c.gm}AZbX3]dpovqzpQuZO\T\&o?NO`YYVlTjKJ?U0OiqmLOdxdmWX}'j+v2Opy=ftK[sQiQs)P`iRZcbRv"atZdgUu?O"M/O#M0q~P#a/x#J&w;rj^HiS^I}^J@yjQNnTTRY#}(WYwNz>OVWpkaxE\z]Cy_go}ev#Y|})gnUeoPM1w"q2q1M2Z+J'cb{t\\Bp'f@Jmhkeh\Cm^SrLwNTg+KCa1w2SsSRu@_]nsgq}4rHsRntbSLQ_ji:YWuMqrzGYxTBve]Egrm_JK[zh5S&}5yIdb{=W$NENUVfe=^Mlsm`ll{>_kaxy>Ps`*hbbTR}e(YSS^t8w<\}hldgcwl(zqerPtR/\eP%q4|1Lx]FzQw_z(nu^Ngsw,kDma`+]GR3R?JL{?e}]eXMltPuhmPRYXvf[*w`XYt#t]oQY5m+c7n;M4`sjMluhnK)q/JMl)rk}oysfAlXm,jNh_^OR>QVfBccd0X4v%s^W%whhF{f]f\~XZZ,j0c8J*ayj1rlznnUytRl{{}p`=NcxF^._Ee>m-zjMnm&m.pm]!m/|xXkLyM5z)a]bUmO]"yJjhemSkiTazdLadhGN[\Uw5|spsN/q5oRhHkqKT`>cxji|2`tO`n%z*fCa2J+cdi;bVsrnVj2PvlYZKO(]#X[yNiUcQRdMV9o@a|v9_Gd1\g\hzVSvqZzrb}UOPxM_uKdpK+WDb~]ZZ.JnU9c!hcs+O)SwTqNdhreug.V:_ld@hdX5d\t9q6b^a5Moq'NeK]Ycs,Pyl+^Swiyua^Knc|HMpyv_pe?N?|am0}Qv;yOkZJAR8MqcS}ffmczp*yP|bx'aenygvjm|4uBW\pu]hSmu|Z?L{Szt$oWTC{c{m`-jn{3dBvgR]_L|Ie)`vv3a~KpjojpZ@x4krdCiWdqJoNW|JsaKDceKEj4i=WIk[m1LCw>|KxtY7sSsTwdwQX7N1JB{4KFpvUgjPLTK/t*i/uCiX]iqsU{^;t{}s}rw&]ITSL(ZALUYdzJecSJ,};}Gg2jQ_tQld^eCY&M|{dr_uhxxmNG}vhXMXgVLZJc_vpGpFX:qttpuL|ejEjs][\W^}ryUGXPpHQ!Q"YTVhYJZ1XG\bsNutq9ZSvjOu}.JR_4W]z:n'u=xumhTaQ#aVyx[JKyTTY\n>wmRnafwy]mh[[3Qw`0TbvWWyX]M}r+M=xBr,J-J.O.cB\7[ZY;JsvSfxjujvvyO/JSJ/R0q:W3cCs}^Z^[o^bcn{_wWJNh[[q;iqz7PFL+n(KzyyL}S~dPrnTU_M|8QPrMwRJTUYX^MYn)v]\TVSVmPM!_5_xT!N2hJkucUuPu!Y'e+fKuqeEy#`[vkKqYju"WQQxjxjyZ3o_qoevn?bdP?z,uQg3i>rN[4|N]ng4W4w4M>ZiO0wYsfNYN*KHP'pKPGdE[`UZW'n@xvuRmiY]o]p]q]rY>{FO3n}d+ZEXlQ(b)^`2|~Q+Wz{HbWT#pxW(agS?odWEkb|gd"bhfP{hthett`^v4jRy{`BJdg7j}Y]Z4n*{i[KZ5q>S,{I_OS@cWof|Pi@uSl\w7j8Qy\Hj9q^W6O5Y(ln]*M"h.a=rQiAR|[5sgX~|Qm2t/{#|An+T%trnY{JMcX;e[xwvTW)KIfQpLX.ySU~Xr|ZkbXmVVQ`3|RkHSApMOwmRTX\IWq_;s%tMq?x1iz{KJUyTwJVH|hs=n~g~SBS6L-vzV2RXgXc%g9p-{Lk!T&{MU=q_v{^4UkeH{$T9^ad#W7xn^5VRyUg:kUUwoga>z.ViVng;lKU3N4{%anw({NX={}|iO6mGn,L]v'fzu$}\m3NIoha?z[Kcw){&\9q@mHoCV-}Nh!{tU'qvfSL^x2\k}6ejq`[L]MTHYmu%f{fT}HV!}?|So!gb,u7`p}8chT'h|zRxoVSU4pPwpn3j:jSmI]+e,}!_Pl3_Qmmx8wzx+t`T:d3iZ^6Y?Y@VoYLZ*_eweL2_yW`T;}zL3[s_RNJnZdd{OO7nCNjb-WazuUIx,gYsiXmcDpqhe`znDY^k"k#|Bj;h+^bmoh#OqT<|jg>|rV4b.S7zLz\m5ach,h]oit=O8i[Q,ZGkIhL^7V\-bkV|JyTZtWL!O:u8YCPhcEkxr1O;S-haNl`4^c]wr2svv[W~x_wrP)fZu&Wb3^g\TMs8i!rrskpWOWO_h@hAOci"P*sAP+TdoqCn_VktYWfZ7]{]OX#ZYpXoDaXqTmrU[U\sDKWb6oq{USX]PpYK3U]M'P,Q:qDe3{uia}`|L5O=orb7Lhp|V`qFb8k+K5XQtNswWFQ;w*mJWSXzvEQL]|_}ye`Jr}S0tsZIf^x:hPX{jUV#vFr[d|h2ZZr\{Vi2n-zc\nujf`p}W,uEn`[e]^Ypi#qyrD`Ki$b9c1|kM(L6p[f:M)sCaYo+gE`isET@U?].y|L@e"N8XRyVq*NQvG[k_~XawsWgT~Qb:OX`Lky}}WhKXibh:cGlMlNV?c'_V}hnav(]}x;hQyWNnlOi%VUMEm:Q=O>l;R1LiYDi|Q>le4MHnHgHMIy7qhYr[uJ5YFXIY+m\oV%bqV~Y!X@\[m=_8j%W-symxuGaJkcr^xLjYSF[fu/Npi~{6brOrw9YsaKZ]Z9k{K9my``t@}<_1co`#}9p1MKm>U@cpmzidUmg]Tve7[gb?nKWtp]N+g^VVaLh3en\"`PU5U!{[yKKst%zHVWie{\}P{vZ%[=lbMwp^vI^oS1|nhCqHNqymrtd6u9\pcqh%r;^$ZLJicZ|YjZyDc${]oJhDULkWY-{+SYU"v^Zv`Qi(uyz/k|`jc2UEqcUnMLmYXAzlqkzY1J7SgxeS2b@r_Mey,MMn.V.Wjg`k.OY\Mm{^pWk^%_W[P[QU#p2\\Jhxf\Nj\[Ri3w[c(W.`aK:eQP\UAXJc)`$i)SG\]x.L8P.XrcJL/T-vQPLJFUBN:JGz0_Xu:ekot]5M*cr{wwP}:}av~Q@hEd8ahLARm[>`bzIaMJ8r`qI^qp_xDnL^rgIbsgacKcLOxo,}~|%z1_Y`RtZqJN#rv!kKq|sG`km|a[ne^uzSqKP/]9QCu1jFpav,uYpk]:r?wE["rvJ:wuKenf`SN%VXT/iISNtBKfq!k2q"k3p4KtT0s2{7ulngt2umOspbnNqLe8WucsOeOFs3dXOyOZzMfcrbunJ;c\NrVYn0teXB\PLnU`vJ}JXVtOV&\>[TWGr~qMbC\^\_o-f+y]j?o.tPNsf,N^UyctMPU8w}\)^v\*rci4R\ifcvgJPNZwJ^wJ{wFOHaPnPitNtUMO[];N,ihT4dGu[zA^)TxowS3k7oxu\mL[UqOqPu2Y.U,bF}#{e_+buv-u3p5a%u]l"m}u4{8[#VJKYeTszk8`7Wlqle/UaWmQQaroy]W0XhK=yZxNyp`mc3t3jBrfp6[VkdrgWUT6yhWAeUijWLSibI|[M-L0j"dvP@p7n!WvbJbKzOk_VKt4mMdRj)d:s"MRvKqfmAh{bMSo5ziy&_=wGx}x|^+[hc]abQFvPkfZylG^xxic^NuzCeWlHsId;f.o6\?N=XCPOOzsJ`WQGi.h=zDbOzEy8\`{0X)e_y'vnvLbxlqZ`qRRLOKJ=]?vo^yz4U-qg^>\@QHQIx>KvTyubaSXix~OL}$NvzPLsf>v.UpQJ|>UqMiz5bPtwMTg#[%bQW"wcj&P!NZ{k[&[^Xej`X*e`V[oFxjdUNw`XWotmMfLtucdJ\ayH|?h'XDK>\.Wwph]@OM\sY0fid0?0@0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~1!1"1#1$1%1&1'1(1)1*1+1,1-1.1/101112131415161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1w1x1y1z1{1|1}1~2!2"2#2$2%2&2'2(2)2*2+2,2-2.2/202122232425262728292:2;2<2=2>2?2@2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X2Y2Z2[2\2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{2|2}2~3!3"3#3$3%3&3'3(3)3*3+3,3-3.3/303132333435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3{3|3}3~4!4"4#4$4%4&4'4(4)4*4+4,4-4.4/404142434445464748494:4;4<4=4>4?4@4A4B4C4D4E4F4G4H4I4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4\4]4^4_4`4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4{4|4}4~5!5"5#5$5%5&5'5(5)5*5+5,5-5.5/505152535455565758595:5;5<5=5>5?5@5A5B5C5D5E5F5G5H5I5J5K5L5M5N5O5P5Q5R5S5T5U5V5W5X5Y5Z5[5\5]5^5_5`5a5b5c5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5s5t5u5v5w5x5y5z5{5|5}5~6!6"6#6$6%6&6'6(6)6*6+6,6-6.6/606162636465666768696:6;6<6=6>6?6@6A6B6C6D6E6F6G6H6I6J6K6L6M6N6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6\6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6w6x6y6z6{6|6}6~7!7"7#7$7%7&7'7(7)7*7+7,7-7.7/707172737475767778797:7;7<7=7>7?7@7A7B7C7D7E7F7G7H7I7J7K7L7M7N7O7P7Q7R7S7T7U7V7W7X7Y7Z7[7\7]7^7_7`7a7b7c7d7e7f7g7h7i7j7k7l7m7n7o7p7q7r7s7t7u7v7w7x7y7z7{7|7}7~8!8"8#8$8%8&8'8(8)8*8+8,8-8.8/808182838485868788898:8;8<8=8>8?8@8A8B8C8D8E8F8G8H8I8J8K8L8M8N8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8\8]8^8_8`8a8b8c8d8e8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}8~9!9"9#9$9%9&9'9(9)9*9+9,9-9.9/909192939495969798999:9;9<9=9>9?9@9A9B9C9D9E9F9G9H9I9J9K9L9M9N9O9P9Q9R9S9T9U9V9W9X9Y9Z9[9\9]9^9_9`9a9b9c9d9e9f9g9h9i9j9k9l9m9n9o9p9q9r9s9t9u9v9w9x9y9z9{9|9}9~:!:":#:$:%:&:':(:):*:+:,:-:.:/:0:1:2:3:4:5:6:7:8:9:::;:<:=:>:?:@:A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z:[:\:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:{:|:}:~;!;";#;$;%;&;';(;);*;+;,;-;.;/;0;1;2;3;4;5;6;7;8;9;:;;;<;=;>;?;@;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z;[;\;];^;_;`;a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;z;{;|;};~=?=@=A=B=C=D=E=F=G=H=I=J=K=L=M=N=O=P=Q=R=S=T=U=V=W=X=Y=Z=[=\=]=^=_=`=a=b=c=d=e=f=g=h=i=j=k=l=m=n=o=p=q=r=s=t=u=v=w=x=y=z={=|=}=~>!>">#>$>%>&>'>(>)>*>+>,>->.>/>0>1>2>3>4>5>6>7>8>9>:>;><>=>>>?>@>A>B>C>D>E>F>G>H>I>J>K>L>M>N>O>P>Q>R>S>T>U>V>W>X>Y>Z>[>\>]>^>_>`>a>b>c>d>e>f>g>h>i>j>k>l>m>n>o>p>q>r>s>t>u>v>w>x>y>z>{>|>}>~?!?"?#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:?;????@?A?B?C?D?E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U?V?W?X?Y?Z?[?\?]?^?_?`?a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?{?|?}?~@!@"@#@$@%@&@'@(@)@*@+@,@-@.@/@0@1@2@3@4@5@6@7@8@9@:@;@<@=@>@?@@@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@[@\@]@^@_@`@a@b@c@d@e@f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@{@|@}@~A!A"A#A$A%A&A'A(A)A*A+A,A-A.A/A0A1A2A3A4A5A6A7A8A9A:A;AA?A@AAABACADAEAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXAYAZA[A\A]A^A_A`AaAbAcAdAeAfAgAhAiAjAkAlAmAnAoApAqArAsAtAuAvAwAxAyAzA{A|A}A~B!B"B#B$B%B&B'B(B)B*B+B,B-B.B/B0B1B2B3B4B5B6B7B8B9B:B;BB?B@BABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBUBVBWBXBYBZB[B\B]B^B_B`BaBbBcBdBeBfBgBhBiBjBkBlBmBnBoBpBqBrBsBtBuBvBwBxByBzB{B|B}B~C!C"C#C$C%C&C'C(C)C*C+C,C-C.C/C0C1C2C3C4C5C6C7C8C9C:C;CC?C@CACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCWCXCYCZC[C\C]C^C_C`CaCbCcCdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzC{C|C}C~D!D"D#D$D%D&D'D(D)D*D+D,D-D.D/D0D1D2D3D4D5D6D7D8D9D:D;DD?D@DADBDCDDDEDFDGDHDIDJDKDLDMDNDODPDQDRDSDTDUDVDWDXDYDZD[D\D]D^D_D`DaDbDcDdDeDfDgDhDiDjDkDlDmDnDoDpDqDrDsDtDuDvDwDxDyDzD{D|D}D~E!E"E#E$E%E&E'E(E)E*E+E,E-E.E/E0E1E2E3E4E5E6E7E8E9E:E;EE?E@EAEBECEDEEEFEGEHEIEJEKELEMENEOEPEQERESETEUEVEWEXEYEZE[E\E]E^E_E`EaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpEqErEsEtEuEvEwExEyEzE{E|E}E~F!F"F#F$F%F&F'F(F)F*F+F,F-F.F/F0F1F2F3F4F5F6F7F8F9F:F;FF?F@FAFBFCFDFEFFFGFHFIFJFKFLFMFNFOFPFQFRFSFTFUFVFWFXFYFZF[F\F]F^F_F`FaFbFcFdFeFfFgFhFiFjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzF{F|F}F~G!G"G#G$G%G&G'G(G)G*G+G,G-G.G/G0G1G2G3G4G5G6G7G8G9G:G;GG?G@GAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG[G\G]G^G_G`GaGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzG{G|G}G~H!H"H#H$H%H&H'H(H)H*H+H,H-H.H/H0H1H2H3H4H5H6H7H8H9H:H;HH?H@HAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH[H\H]H^H_H`HaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHzH{H|H}H~KPKVKgMOMhN-O{P"P8PPP]QTQUQXQ[Q\Q]Q^Q_Q`QbQcQdQeQfQhQiQjQkQmQoQpQrQvQzQ|Q}Q~R"R#R'R(R)R*R+R-R2R>RBRCRDRFRGRHRIRJRKRMRNRORPRQRRRSRTRURVRWRYRZR^R_RaRbRdReRfRgRhRiRjRkRpRqRrRsRtRuRwRxTfT|U%U+U.V8VMWKWd[E[d\%]%]U]t^|^~_3_a_h`qa-amcud!d)e.e1e2e9e;e#?#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#[!,#]#^#_#`#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y#z#{#|#}"&!K!L!~#~!M#\  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~."4"W!'!#()!F!>!w)x)%"R"$!,"v),(y(v(z(/"!("(?!*(-(,)!)#)@!*)-)")$($)%)&(&)')((())())0)/(/)+(+).(.)'"0"("+"*"-")"A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x%',!,",#,$,%,&,(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,?,@,A,Q,R,S,T,U,V,X,Y,Z,[,\,],^,_,`,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,W,*!.!/!0!1!S"T"%!&!6"G!H!X!y)z){)|)})~)I!5"$'`"e"b"Y'J!w(x({(|(}(~(0%1%2%3%4%5%6%7%8%9%!%"%#%$%%%&%'%(%)%*%g!h!f!i!j!U"X"V"Y"W"!"""#"S!$"T!t!u!3"2"n!p!D!P!+!|!}!{!z!r!s!1"E!q!-!o!V!A!U!B!C!l!m!x!y!v!w!A"Q!R!g(h(i(j(k(l(m(n(o(p(q(r(s(t(u(g)h)i)j)k)l)m)n)o)p)q)r)s)t)u)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)])^)_)`)a)b)c)d)e)f)M(N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f(!&,&"&-&#&H&G&.&$&B&A&/&&&F&E&1&%&D&C&0&'&<&I&J&7&K&L&2&)&>&M&N&9&O&P&4&(&Q&R&8&=&S&T&3&*&U&V&:&?&W&X&5&+&Y&Z&;&[&\&@&]&^&_&`&a&b&c&d&6&F"a!`!C"G"H"K"J"I"L"c!b!:"9"e!d!8"7"_!^!B"[!]!\!D"E"Z!Y!O"N"P"Q"O!N!<"="@";">"?"M"["\"]"Z"!!"!#!(!4!5!6!7!8!9!:!;!*?*@*A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*[*\*]*^*_*`*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*!+"+#+$+%+&+'+(+)+*+++,+-+.+/+0+1+2+3+4+5+6+7+8+9+:+;+<+=+>+?+@+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+[+\+]+^+_+`+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z${$|$}$~$1)2)3)4)5)6)7)8)9):);)<)=)>)?)@)A)B)C)D)E)F)G)H)I)J)K)L)_"1(2(3(4(5(6(7(8(9(:(;(<(=(>(?(@(A(B(C(D(E(F(G(H(I(J(K(L(^"I'J'K'L'M':';'\']'^'6'7'8'T'U'V'W'X'!'"'#'%'+','-'.'/'0'1'2'3'4'''(')'*'='>'e'f'g'h'a'b'c'?'@'A'B'C'D'E'F'G'H'N'O'P'Q'R'S'Z'['c"l'&'`'o'a"<'m'5'9'j'k'_'d"d'n'i'ilKoRv2X[m2_>_;yt\du&s`]&axN0\*ciqzM/|!S+qQg,RyN}q?^:{9yRN+c`kzNwK%eaJLTajc\-_kK/UuVxe@^#lMi'jvi;{igLofPA^,dLXqy_N$z2f{z=zHLMoUU"SQl'dRl1v{NQP?K$m(mB^bv\mu\9`NT5t[S5V$lfdjqlK@KrljPry%l_PjgkPQ\i[L}W[aZ6V_cC^D^!Jln#S7nOxHj8n,q%qNiNpS$plagOKs)m>JotNv{^;P7Uqn(tx\'KNZf`%mrny\\y\srxytq|p=R$L6zMLzZOv8iuXNLMWQTmikJbY2}-cLV4Y'aSnCP3}dUhOCm2P~N(ZPxV}QxRxS\b]y{A]5c]mDN!Kc]]|/y{R!O(d6t~l.cmgA}bZ3Xd]opqvpzuQOZT\&\?oONY`VYTlKj?J0UiOmqOLxdmdXW'}+j2vpO=ytf[KQsQi)s`PRicZRb"vtadZUg?u"O/M#O0M~q#P/a#x&J;wjrH^SiI^^}@JjyNQTnRT#Y(}YWNw>zVOpWakExz\C]_yoge}#v|Y)}ngeUPo1M"w2q1q2M+Z'Jbc<{$Y:nSxz{$O{\cv*m!raN&z`yVlnd!yo{ky#n,j(JztVMv|ItTx&xJ^FrZWPSEXfj]sZddvrvB_}YvL:S/day&pSK<`JtzT*}by7tB}0|l}bJ=}gjC_RQbN$S+}`_GrpgnP*sK^8vua3q#w)J%OD_0a?p$v6cFzoPm}D]w|?f-^?zqeDm%Rn}6uvaL^^|Wl]M7V3MUxXejOPOLj.j-jqS%SOw$n$P"rpP#rxw3P)[;SlJ&qUKgw^M$w@x]SPL&Osvwa\S~z'zYk'O/jod9iXqXXr`4f|\qsPc{rF[qPrP\OQS1LXw(Kd\tB\'p@fmJkhheC\^mrSwLTN+gCK1a2wsSRS@u]_snqg4}HrRstnSbQLj_:iWYMurqGzxYBTevE]rg_mKJz[5h&S5}Iybd={$WENUNfV=eM^sl`mll>{k_xa>ysP*`bhTb}R(eSY^S8te-mjznM&m.mmp!]/mx|kXyL5M)z]aUbOm"]JyhjmekSTizaLddaGh[NU\5ws|sp/N5qRoHhqkTK>`xcij2|t``O%n*zCf2a+Jdc;iVbrsVn2jvPYlKZ(O#][XNyUiQcZMd9V@o|a9vG_1dg\h\VzvSZqrz}bOUxP_MKupd+KDW~bZ].ZnJ9U!cch+s)OwSqTdNrhue.g:Vl_@ddh5X\d9t6q^b5aoM'qeN]KcY,syP+lS^iwuy^anKcH|pMvyp_?e?Na|0mQ};vOyZkAJ8RqMScf}mfzc*pPyb|'xeaynvgmj4|Bu\Wuph]mS|u?Z{LzS$tWoCTc{m{-`nj3{Bdgv]RL_I|)ev`3v~apKojpj@Z4xrkCdWiqdoJWNJ|asDKecEK4j=iIW[k1mCL>wK|tx7YSsTsdwQw7X1NBJ4{FKvpgUPjTL/K*t/iCuXii]sq{U;^{ts}r}&wI]ST(LAZULdYJzce},J;}G}2gQjt_lQ^dCe&YS{|rdu_xhmxGNv}XhXMVgZLcJv_GpFp:XtqptLue|Ejsj[]W\}^yrGUPXHp!Q"QTYhVJY1ZGXb\Nstu9qSZjvuO.}RJ4_]W:z'n=uuxhmaT#QVaxyJ[yKTT\Y>nmwnRfaywm][h3[wQ0`bTWvyW]X}M+r=MBx,r-J.J.OBc7\Z[;YsJSvxfujvjyv/OSJ/J0R:q3WCc}sZ^[^^ocb{nw_JWhN[[;qqi7zFP+L(nzKyy}L~SPdnrUTM_8|PQMrRwTJYU^XYM)nP\]VTVSPm!M5_x_!T2NJhukUcPu!u'Y+eKfquEe#y[`kvqKjY"uQWxQxjyj3Z_ooqve?ndb?P,zQu3g>iNr4[N|n]4g4W4w>MiZ0OYwfsYN*NHK'PKpGPEd`[ZU'W@nvxRuimko]p]q]r]>YF{3O}n+dEZlX(Q)b<^5gp[bopq4Oq[1`%_Ry}g#fq{0K.rgM\hWg@wcP!Z=L)QL]~c*Q*h6jzyLfXvGTKYRYKSwX)Zxu^^/r)xHXAnAys]zj=v;a?MTtMfO|"{\`;tUZ2yr{v[_^r[\xnwhkzRv2`~|+QzWH{Wb#Txp(Wga?SdoEWbkg|"dhbPfh{htteh^`4vRj{yB`dJ7g}j]Y4Z*ni{K[5Z>q,SI{O_@SWcfoP|@iSu\l7w8jyQH\9j^q6W5O(Ynl*]"M.h=aQrAi|R5[gs~XQ|2m/t#{A|+n%TrtYnJ{cM;X[ewxTv)WIKQfLp.XSy~UL|rkZXbVmQV3`R|HkASMpwORmXTI\qW;_%sMt?q1xziK{UJTyJwHVh|=s~n~gBS6S-Lzv2VXRXg%c9g-pL{!k&TM{=U_q{v4^kUHe${9Ta^#d7Wnx5^RVUy:gUkwUgo>a.ziVnV;gKl3U4N%{na(wN{=X}{i|6OGm,n]L'vzf$u\}3mINho?a[zcK)w&{9\@qHmCo-VN}!ht{'UvqSf^L2xk\6}je`qL[M]HTmY%u{fTfH}!V?}S|!os,b7up`8}hc'T|hRzoxSV4UPppw3n:jSjIm+],e!}P_3lQ_mm8xzw+x`t:T3dZi6^?Y@YoVLY*Ze_ew2Ly_`W;Tz}3Ls[R_JNZnddO{7OCnjN-baWuzIU,xYgismXDcqpehz`Dn^Y"k#kB|;j+hb^om#hqOgr|4V.b7SLz\z5mca,h]hio=t8O[i,QGZIkLh7^X-\kb|VyJZTWt!L:O8uCYhPEcxk1r;O-SahlN4`c^w]2rvs[v~W_xrw)PZf&uT3bg^<\6RUu!N)uy]z]Up_vZrkdqr9l|}*aYJoo*uyl-xBrCvRW"yVpzp`vsiCr+T3J&MCMZMOYDv]nDg4bb_[g1h.|MekztMT8s!irrksWpWO_O@hAhcO"i*PAs+PdTUCq_nkVYtfW7Z{]O]#XYZXpDoXaTqrm[U\UDsWK6bqoU{XSP]Yp3K]U'M,P:QDq3eu{ai`}<|"Z#Z!RoRmbi^\N5rdPQ]Ha7[c_9mEqOs+W,akcGnIazJ{pazZpgLtZ?LmN)UbzePVk_l|_Vwj^4K>o5L=Oro7bhL|p`VFq8b+k5KQXNtwsFW;Q*wJmSWzXEvLQ|]}_eyJ`}r0SstIZ^f:xPh{XUj#VFv[r|d2hZZ\rV{2i-nczn\ju`f}p,WEu`ne[^]pY#iyqDrK`$i9b1ck|(M6L[p:f)MCsYa+oEgi`Es@T?U.]|y@L"e8NRXVy*qQNGvk[~_aXswgW~TV:bXOL`yk}}hWXKbi:hGcMlNl?V'cV_h}an(v}];xQhWynNOl%iUVEM:m=Q>O;l1RiLDY|i>Ql4eHMHnHgIM7yhqrYu[5JFYIX+Ybo\%Vqb~V!Y@X[\=m8_%j-WysxmGuJack^rLxYjFSf[/upN~i6{rbrO9wsYKa]Z9Z{k9Kym``@t<}1_oc#`9}1pKM>m@UpczmdimU]gvT7eg[?bKntW]p+N^gVVLa3hne"\P`5U!U[{KysK%tHzWVei\{P}v{%Z=[blwM^pIvo^1Sn|ChHqqNmytr6d9up\qc%h;r$^LZiJZcY|ZjDy$c]{JoDhLUWk-Y+{YS"U^vvZQ`(iyu/z|kj`2cEUcqnULMYmAXlzkqj1Y7JgSex2S@b_reM,yMM.n.VjW`g.kYOM\{mp^kW%^W_P[Q[#U2p\\hJfxN\\jR[3i[w(c.Wa`:KQe\PAUJX)c$`)iGS]\.x8L.PrXJc/L-TQvLPFJBU:NGJ0zX_:uketo5]*Mrcw{Pw:}a}~v@QEh8dhaALmR>[b`IzMa8J`rIqq^_pDxLnr^IgsbagKcLcxO,o~}%|1zY_R`ZtJq#Nr!vKk|qGsk`|m[aenu^SzKq/P9]CQ1uFjap,vYukp:]?rEw"[vr:JuweKfnS`%NXV/TIiNSBtfK!q2k"q3k4ptK0T2s7{lugn2tmusObpNnLq8euWsceOFO3sXdyOZOMzcfbrnu;J\crNYV0netBXP\nL`UJvJ}VXOt&V>\T[GW~rMqCb^\_\-o+f]y?j.oPtsN,f^NyUtcPM8U}w)\v^*\cr4i\RfivcJgNPwZuw^{JFwHOPaPntitNMU[O;],Nhi4TGd[uAz)^xTwo3S7kxo\uLmU[OqPq2u.Y,UFb#}e{+_ub-v3u5p%a]u"l}m4u8{#[JVYKTezs8k7`lWlq/eaUmWQQrayo<]\vepDtii{soT"L~w<_Mk7PBV-h/o%KiKhzFLgfGj$[IO|bzo^kHu^TU`0oGb/YgyegJOQaHb{oyzr\'`hxjK]0WhX=KZyNxpym`3c3tBjfr6pV[dkgrUW6ThyAWUejiLWiSIb[|-M0L"jvd@P7p!nvWJbKbOz_kKV4tMmRd)j:d"sRMKvfqAmWb{SM5oiz&y=_Gw}x|x+^h[]cbaFQPvfkyZGlx^ix^cuNCzWeHlIs;d.f6o?\=NCXOPzOJsW`GQ.i=hDzObEz8y`\0{)X_e'ynvLvxbql`ZRqLRKO=J?]ovy^4z-Ugq>^@\HQIQ>xvKyTbuSaiX~xLO$}vNPzsL>f.vpUJQ>|qUiM5zPbwtTM#g%[Qb"Wcw&j!PZNk{&[^[eX`j*X`e[VFojxUdwNX`oWmtfMtLcuJda\Hy?|'hDX>K.\wWhp@]MOs\0Yif0?0@0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~0!1"1#1$1%1&1'1(1)1*1+1,1-1.1/101112131415161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1w1x1y1z1{1|1}1~1!2"2#2$2%2&2'2(2)2*2+2,2-2.2/202122232425262728292:2;2<2=2>2?2@2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X2Y2Z2[2\2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{2|2}2~2!3"3#3$3%3&3'3(3)3*3+3,3-3.3/303132333435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3{3|3}3~3!4"4#4$4%4&4'4(4)4*4+4,4-4.4/404142434445464748494:4;4<4=4>4?4@4A4B4C4D4E4F4G4H4I4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4\4]4^4_4`4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4{4|4}4~4!5"5#5$5%5&5'5(5)5*5+5,5-5.5/505152535455565758595:5;5<5=5>5?5@5A5B5C5D5E5F5G5H5I5J5K5L5M5N5O5P5Q5R5S5T5U5V5W5X5Y5Z5[5\5]5^5_5`5a5b5c5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5s5t5u5v5w5x5y5z5{5|5}5~5!6"6#6$6%6&6'6(6)6*6+6,6-6.6/606162636465666768696:6;6<6=6>6?6@6A6B6C6D6E6F6G6H6I6J6K6L6M6N6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6\6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6w6x6y6z6{6|6}6~6!7"7#7$7%7&7'7(7)7*7+7,7-7.7/707172737475767778797:7;7<7=7>7?7@7A7B7C7D7E7F7G7H7I7J7K7L7M7N7O7P7Q7R7S7T7U7V7W7X7Y7Z7[7\7]7^7_7`7a7b7c7d7e7f7g7h7i7j7k7l7m7n7o7p7q7r7s7t7u7v7w7x7y7z7{7|7}7~7!8"8#8$8%8&8'8(8)8*8+8,8-8.8/808182838485868788898:8;8<8=8>8?8@8A8B8C8D8E8F8G8H8I8J8K8L8M8N8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8\8]8^8_8`8a8b8c8d8e8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}8~8!9"9#9$9%9&9'9(9)9*9+9,9-9.9/909192939495969798999:9;9<9=9>9?9@9A9B9C9D9E9F9G9H9I9J9K9L9M9N9O9P9Q9R9S9T9U9V9W9X9Y9Z9[9\9]9^9_9`9a9b9c9d9e9f9g9h9i9j9k9l9m9n9o9p9q9r9s9t9u9v9w9x9y9z9{9|9}9~9!:":#:$:%:&:':(:):*:+:,:-:.:/:0:1:2:3:4:5:6:7:8:9:::;:<:=:>:?:@:A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z:[:\:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:{:|:}:~:!;";#;$;%;&;';(;);*;+;,;-;.;/;0;1;2;3;4;5;6;7;8;9;:;;;<;=;>;?;@;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z;[;\;];^;_;`;a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;z;{;|;};~;!<"<#<$<%<&<'<(<)<*<+<,<-<.=?=@=A=B=C=D=E=F=G=H=I=J=K=L=M=N=O=P=Q=R=S=T=U=V=W=X=Y=Z=[=\=]=^=_=`=a=b=c=d=e=f=g=h=i=j=k=l=m=n=o=p=q=r=s=t=u=v=w=x=y=z={=|=}=~=!>">#>$>%>&>'>(>)>*>+>,>->.>/>0>1>2>3>4>5>6>7>8>9>:>;><>=>>>?>@>A>B>C>D>E>F>G>H>I>J>K>L>M>N>O>P>Q>R>S>T>U>V>W>X>Y>Z>[>\>]>^>_>`>a>b>c>d>e>f>g>h>i>j>k>l>m>n>o>p>q>r>s>t>u>v>w>x>y>z>{>|>}>~>!?"?#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:?;????@?A?B?C?D?E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U?V?W?X?Y?Z?[?\?]?^?_?`?a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?{?|?}?~?!@"@#@$@%@&@'@(@)@*@+@,@-@.@/@0@1@2@3@4@5@6@7@8@9@:@;@<@=@>@?@@@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@[@\@]@^@_@`@a@b@c@d@e@f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@{@|@}@~@!A"A#A$A%A&A'A(A)A*A+A,A-A.A/A0A1A2A3A4A5A6A7A8A9A:A;AA?A@AAABACADAEAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXAYAZA[A\A]A^A_A`AaAbAcAdAeAfAgAhAiAjAkAlAmAnAoApAqArAsAtAuAvAwAxAyAzA{A|A}A~A!B"B#B$B%B&B'B(B)B*B+B,B-B.B/B0B1B2B3B4B5B6B7B8B9B:B;BB?B@BABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBUBVBWBXBYBZB[B\B]B^B_B`BaBbBcBdBeBfBgBhBiBjBkBlBmBnBoBpBqBrBsBtBuBvBwBxByBzB{B|B}B~B!C"C#C$C%C&C'C(C)C*C+C,C-C.C/C0C1C2C3C4C5C6C7C8C9C:C;CC?C@CACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCWCXCYCZC[C\C]C^C_C`CaCbCcCdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzC{C|C}C~C!D"D#D$D%D&D'D(D)D*D+D,D-D.D/D0D1D2D3D4D5D6D7D8D9D:D;DD?D@DADBDCDDDEDFDGDHDIDJDKDLDMDNDODPDQDRDSDTDUDVDWDXDYDZD[D\D]D^D_D`DaDbDcDdDeDfDgDhDiDjDkDlDmDnDoDpDqDrDsDtDuDvDwDxDyDzD{D|D}D~D!E"E#E$E%E&E'E(E)E*E+E,E-E.E/E0E1E2E3E4E5E6E7E8E9E:E;EE?E@EAEBECEDEEEFEGEHEIEJEKELEMENEOEPEQERESETEUEVEWEXEYEZE[E\E]E^E_E`EaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpEqErEsEtEuEvEwExEyEzE{E|E}E~E!F"F#F$F%F&F'F(F)F*F+F,F-F.F/F0F1F2F3F4F5F6F7F8F9F:F;FF?F@FAFBFCFDFEFFFGFHFIFJFKFLFMFNFOFPFQFRFSFTFUFVFWFXFYFZF[F\F]F^F_F`FaFbFcFdFeFfFgFhFiFjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzF{F|F}F~F!G"G#G$G%G&G'G(G)G*G+G,G-G.G/G0G1G2G3G4G5G6G7G8G9G:G;GG?G@GAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG[G\G]G^G_G`GaGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzG{G|G}G~G!H"H#H$H%H&H'H(H)H*H+H,H-H.H/H0H1H2H3H4H5H6H7H8H9H:H;HH?H@HAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH[H\H]H^H_H`HaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHzH{H|H}H~HPKVKgKOMhM-N{O"P8PPP]PTQUQXQ[Q\Q]Q^Q_Q`QbQcQdQeQfQhQiQjQkQmQoQpQrQvQzQ|Q}Q~Q"R#R'R(R)R*R+R-R2R>RBRCRDRFRGRHRIRJRKRMRNRORPRQRRRSRTRURVRWRYRZR^R_RaRbRdReRfRgRhRiRjRkRpRqRrRsRtRuRwRxRfT|T%U+U.U8VMVKWdWE[d[%\%]U]t]|^~^3_a_h_q`-amauc!d)d.e1e2e9e;e#?#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#[#,!]#^#_#`#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y#z#{#|#}#&"K!L!~!~#M!\#8$%135?B8IK<?E^Qw  ![!i!p!y!!"%".$`$n$t$$$ $$$%%>% %KB%%%%%%&`&m00000A000111\222`2{3333>NN ANNHNKNONN]N_SNNVNN^NNlNNrO OuOFOH~OMOQOYO\OOOOP#P-PGPIPtPxPQQ@QNQeQnQuQxQQQQQQRR R6R;RJRMRRRRRRSSS?SJSQST SoSw SS SS TT .T8T> 8T{T} ?UU BUU GUU MWMWQ UXX ZX/X5 `XX gYY lY'Y. uYGYI }YNYW YjYn YY YY YY [T[_ [[ [[ [[ [[ [[ [[ [[ \\ \8\@ ]] ]] ^_^c ^r^~ ^^ ^^ ^^ __ $_f_q ,__ 8__ ;__ D__ G__ J`A`C N`b`p Q`` ``` i`` la a oaGaL rabah xaa aa ab b b b>bA bGbM bb bb c:c> cc cc dxdz dd dd e*e, e6e? eMeQ etex ee ee ff ff f-f1 fAfD f[f_ !fdfo &fsfz 2ff :ff =ff @fg Cgg Tg&g. YgNgS bgmgw hgg sgg vgg |hlB l]l` l}l ll ll ll ll m5m> mwmy mm mm mm mm nn& $n+n/ 4n:n> 9n[n_ >no CoWo_ Hozo~ Qoo Voo \pp _pp gpp jpp oqdqi rqq xqr {r:r@ rFrH ss s)s+ ss ss ss tt t t: t?tD tWtj u0u3 uYu] uu vv& v{v~ vv ww x%x' xx xx y*y, yGyI yVy` yy +yy 0yy 5z;z@ 8{I{V >|=|? L|| O|| R}} U}} a} }" f}+}0 i}B}F o}q}s t}} w}} |}} ~~# ~i~m  os }  xz ! *, Ƃ59 ɂnr ΂ ӂт  49   hjͅ[_ac~!&)mu,5@EJQY_ GJʎ&* #JUӐ\cߐmo|ꐯINɑ bf()/ԕ2KM5[d8sxBHMRadLNy|IMЙAE ,1ɬϭsv׭{ۭJP\ax}󮼮̮?Cǯ SY#İ1 7<#%B49EKNQqT_w$*@EKM\a̵¸ ȸ49˹̹ѹعݺSUdi纃4>@E ͼ&+0W[4pu9{}?BHKQ\b'h,1tHMzdiDNSY]apuŸž,;PUƸƺOX|~ ǃNJ ǔǚǠǦǼ"ȃȍ(36; A\aG')M8>PTYW̨̭]_acΠΥfl,1rx~@E !8=ӌӑՄՉTY ^!F!>)w)x"%"R!$",)v(,(y(v(z"/)%(&)&(()(())))0(/)/"("+"*"-")%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x,!,",#,$,%,&,(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,?,@,A,Q,R,S,T,U,V,X,Y,Z,[,\,],^,_,`,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,W)z){)|)})~({(|(}(~%0%1%2%3%4%5%6%7%8%9%!%"%#%$%%%&%'%(%)%*!g!h!f!i!j"U"X"V"Y"W!+!|!}!{!z!r!s"1(g(h(i(j(k(l(m(n(o(p(q(r(s(t(u)g)h)i)j)k)l)m)n)o)p)q)r)s)t)u)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)])^)_)`)a)b)c)d)e)f(M(N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f&!&,&"&-&#&H&G&.&$&B&A&/&&&F&E&1&%&D&C&0&'&<&I&J&7&K&L&2&)&>&M&N&9&O&P&4&(&Q&R&8&=&S&T&3&*&U&V&:&?&W&X&5&+&Y&Z&;&[&\&@&]&^&_&`&a&b&c&d&6!a!`"C"G"H"K"J"I"L!_!^"B!]!\"D"E"<"="@";">"?"M"["\"]"Z!!!"!#!(!4!5!6!7!8!9!:!;!*?*@*A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*[*\*]*^*_*`*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s+!+"+#+$+%+&+'+(+)+*+++,+-+.+/+0+1+2+3+4+5+6+7+8+9+:+;+<+=+>+?+@+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+[+\+]+^+_+`+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z${$|$}$~)1)2)3)4)5)6)7)8)9):);)<)=)>)?)@)A)B)C)D)E)F)G)H)I)J)K)L"_(1(2(3(4(5(6(7(8(9(:(;(<(=(>(?(@(A(B(C(D(E(F(G(H(I(J(K(L'I'J'K'L'M':';'\']'^'6'7'8'T'U'V'W'X'!'"'#'%'+','-'.'/'0'1'2'3'4'''(')'*'='>'e'f'g'h'a'b'c'?'@'A'B'C'D'E'F'G'H'N'O'P'Q'R'S'Z'["c'l'&'`'o"a'<'m'5'd'n'iX2m[_2_>y;\ts&]`a&Nx\0q}^?{:y9NzKwe%iMj'iv{;gioLXLyqN_z$f2z{z=LHoMUUm(^Bvbm\\u`9S[V5l$yrl%P_gjPk\Q[i}LS#n7xOjHn8q,q%iNeylj]VmBLuu5d-\A^Fzoca['v7OfprKZgRWCvph^J#L'jIv0oOiOw^^GkpqVh4kCj*z|uvp<}T`;NCP:w:XswMl}R.noUWjdx"MkW?{1\2PlN}npUXp=WPTPWOkj}k}UtHhjus]Bo7gTJJp$alOgsKm)J>^{P;U7nqP<[yW1p>R=L$TQimJkYb}2c-VLY4a'nSPC]b{y]Ac5R{O!d(t6l~c.gm}AZb]dpovqzpYVlTjKJ?U0OiiQs)P`iRZcgUu?O"M/O#M0q~P#a/x#J&w;rj^HiSyjQNnTTRY#}(WYwNz>}ev#Y|})gncb{hkeh\Cm^Srll{>_kaxPs`*hbbTR}e(S^t8w<\}hldgPtR/\eP%q4|1Lx]FzQw_w,kDma`+]Ge}]eXMn;M4`sjMluhnK)q/Mnm&m.pm]!m/|xXkSkiTazdLadhG\Uw5|spsN/q5oRhHkqKT`>cxji|2z*fCa2J+cdi;bVsrnVj2PvlYZKO(X[yNiUcQX,sLM{vVguhocyR;ssc{^PN0VwqYmbnvjOpnc|S_Sta3a4c9kEt)M6RyZ-RcOQb^a5Moq'NeK]Pyl+^Swiv:[_SSxGJNxAR4\4z9JO|3jjjkPzd]_nK,i|am0}Qv;yOkZJAR8MqcS}fpu]hSmu|Z?L{jn{3dBe)`vv3Z@x4krk[m1LCw>|KX7N1JB{4KF}s}rw&JPz+kkgxYeT{|czXsUO+ksU|Yfbyb!kT`wd2L|Uh[.a6x7`?{C]jb"n&YgR9UCZeZPQYNXK^t,Z{vihsO,ppt}[HN@cTQOquMrOkoXfIX8zsUSsuw.oHMsuOespBY8Y9oIwK_.huSdvwU:sMKaNf|+U;b%M9jrKGMt[/oY_sNgZBO-oZnX]'b&lmS)r)pDbbiohZZCZDTEgzM`c0[2{DscY%{g]KPTf6`.}Z\5`xg1a9c@y@ippEcA|L|MzYq8}u`yg{|7|d{EcgX9vx\ELX`/tgo\O|o]r*J,};}GQld^eCmg{5xlhXMXgVLZJc_vpGpFX:qttpuLXPpHQ!Q"YTVhYJZ1XG\bsNutW]z:n'u=xuyx[JKyTTY\n>wmJ-J.O.[ZY;JsvSfxjuJ/R0q:W3cCs}^ZL+n(KzyyL}S~TU_M|8QP^\p,L~Maa:[oZ2y#`[vkKqYju"WQQxjxjyZ3qoevn?bdP?z,uQg3O0wYsfZTb'{|f"|6r-oas.\FYkT8k>]o]p]q]r[pobqpO4f#{qK0r.Q)]Lc~Q*h*j6yzfLvXYKYRSKXwZ)ux^^r/x)]sjzv=a;M?tTfM|O{"`\x\wnkhRzZjZFwAbg}WNHj7|@}gwoz-vYztfnL\a<`oi?|}fNOnv>`2|~Q+T#pxW(fP{hthett`^v4jRy{Y]Z4n*{iS@cWof|PMcX;e[xwr|ZkbXmVVQ`3mRTX\IWqS6L-vzV2RXp-{Lk!VRyUg:kUUwoga>}\m3NIz[Kcw){&q@mHoCX`|:}/pN[apOs>b,}8chT'h|zRe,}!_Pl3_Qmmx8wzXmcDpq`znDY^t=O8i[Q,ZH_&y3rRJDbi\Jl4z@{(P(O9UJWbb/W8o"bZv|{PQ-MdQ.\mhNpyN5f|W{PV]uwqv}[w{ji\YAur`Ejb3^g\Y1_W[P[Q}av~Q@Oxo,}~|%z1_Y`Ra$M+Yth&MNai|o`couJ_k1m?d&y$p3elQgYGdWj]TwaZ[?LElPK;^sx/ov]6n/Mx^8|'w|w1N;t!nMa.lCO~x?XbSh^(tdlBYuyE]SVql||pm@J9nd[SzgXctA]7]8OE__r>v!kKq|sGKtT0s2{7WucsOes3dXOyOZteXB\PLnU`vJ}JXVtOV&\>[TWG^v\*rci4R\w\ajNAT1}1f={-aNwbuoOGT2LoThnOwW`&VAa\pcqd\qV'k4j!x1?1@1A1B1C1D1Z1[1\1m1n1o1p1q1t1u1v1w1x1~2!2"2#2$2(2)2*2+2-2.2/20212F2G2H2I2]2^2_2`2a2b2z2{2|2}2~3*3+3,3-3.3/303132333435363738393:3;3<3?3@3A3B3C3J3K3L3M3Q3R3S3T3U3V3W3X3[3\3]3^3_3t3u3v4C4D4E4X4Y4Z4[4\4]4^4_4`4a4b4c4d4e4f4g4h4i4j4k4l4o4p4q4r4s4u4v4w4x4y4z4{4|5)5*5+5,5-5u5v5w5x5y5z6!6"6#6$6%6&6'6(6+6,6-6.6/666768696:6;6<6=6@6A6B6C6D6w6x6y6z6{6|6}6~7!7"7%7&7'7(7)737475767778797:7E7F7G7H7I88898:8;8<8=8C8D8E8F8I8J8K8L8M8N8]8^8_8b8c8d8e8f8k8l8m8n8p8q8r8s9+9,9-9.9/9091929R9S9T9U9V9W9X9Y9Z9[9\9]9^9_9`9a9b9l9m9n9o9p:(:):*:+:,:1:2:3:4:8:9:::;:Q:R:S:T:x:y:z:{;#;$;%;&;';(;);*;-;.;/;0;1;;;<;=;B;C;D;E;F;g;h;i;j;k;l;m;n;o;p;q;r;s;y;z;{;|;}<-<.7>8>9>F>G>H>I>J>K>L>M>N>O>P>Q>R>S>T>U>V>W>Z>[>\>]>^>p>q>r>s>t>u>v>w>x>y>z>{>|>}>~?!?"?)?*?+?,?0?1?2?3?4?5?6?7?8?9????C?D?E?F?G?H?I?J?K?L?Q?R?S?T?U?o?p?q@?@@@A@B@C@D@E@F@G@O@P@Q@R@S@T@U@V@W@X@\@]@^@_@`@a@b@c@d@e@f@k@l@m@n@oA=A>A?A@AAABACAYAZA[B#B$B%B&B+B,B-B.B/B4B5B6B7B8B@BABBBCBDBvBwBxB|B}B~C!C"C#C(C)C*C+C,C7C8C9C:C;D$D%D&D7D8D9D:D;DDDEDFDGDHDTDUDVDWDXE=E>E?E@EAEFEGEHEIEJERESETEUEVFDFEFFFGFJFKFLFMFNFTFUFVFWFXF_F`FaFbFcG\G]G^G_G`GxGyGzG{G|HgHhHiHjHkKPKVKgMOMhN-O{P"P8PPP]QTQUQXQ[Q\Q]Q^Q_Q`QbQcQdQeQfQhQiQjQkQmQoQpQrQvQzQ|Q}Q~R"R#R'R(R)R*R+R-R2R>RBRCRDRFRGRHRIRJRKRMRNRORPRQRRRSRTRURVRWRYRZR^R_RaRbRdReRfRgRhRiRjRkRpRqRrRsRtRuRwRxTfT|U%U+U.V8VMWKWd[E[d\%]%]U]t^|^~_3_a_h`qa-amcud!d)e.e1e2e9e;e#?#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#[!,#]#^#_#`#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y#z#{#|#}"&!K!L!~#~!M#\"."4!W!'(#!)(!("!?(*(-),)!)#!@)*)-)"&($')$8)'R(+S)+f(.g)."'"0,' !* !. !/ !0 !1 "S !"T %!% &!& 0"6 2!G 3!H ;!X t)y!!I! "5!'$!"`!!"e!""b!&'Y!+!J!S(w!T(x!"!!""""#"!S""$"!T"!t" !u""3""2"!n"!p"!D" !P"4!E"5!q"R0SpRCtoRGvNRTt(RV\xR[K'R]ZNRa`fRim%RjnrRo\yRry\Rus\R}xrRtyR|qRK|Rp%RK}RUtRMmRJ%RV+RPBRz6RLMRZzRvORi8RXuRLNRWMR}3RUdROhRmCRP2RN~RZ(SxPS}VS xQSxRS\SS m]S!NDS#K!S*]cS/|]S9y/SMX3SWQuSZZOS\\TS^\&S`o?SfNOSh`YS}qmSLOSdxSdmSWXS}'Sj+Sv2SOpSy=SftSK[SsQSbRSv"SatSZdS^IT}^TJ@TOVTWpTkaT xET&\zT)]CT+y_T3goTBUeTHoPTJM1TQw"Thq2Tjq1TqM2TsZ+TuJ'Tn:TxST{zTO$T\{TvcTm*Tr!TNaTz&Ty`TlVTdnTy!T{oTykTn#Tj,TJ(TtzTMVT|vTtITxTUx&U^JUrFUWZUSPUXEU/jfU1s]U5dZU>vdUDvrUF_BUOY}USLvUVS:U^d/UcyaU|p&UKSU`Y"YSY1cwY7l(Y>zqYDerYZz(Y`nuYb^NYggsYsR3YtR?YxJLY}{?YltYPuYhmYPRYYXYvfY[*Yw`YXYYt#Yt]YoQYY5Ym+Yc7YJMYl)YrkY}oYysYfAYlXYm,ZjNZh_Z^OZR&ZgtZQVZfBZ ccZ%d0Z)X4Z6v%Z[Pm-[Qzj[cLy[dM5[iz)[ka][pbU[qmO[u]"[xyJ[zjh[|em[N[[`t[O`[n%[]#[R<[uA[\D[u;[^Q\\f\^R\tS\_F\$iV\([+\1v&\EK\\FLz\HO]\Kh)\Mc;\Nc:\Q`Z\Unw\[\3\`Su\bW&\dv5\eW[\laU\oTj\q_#\y}_\Pw\mT\K*\d[\a{\K"\S`\d?\{@\Z>\dM\V9\o@\a|\v9\_G\d1\\g\\h\zV\Sv\qZ\zr]b}] UO]Px]M_]uK]dp]K+]WD]'b~])]Z]KZ.]LJn]PU9]ic!]lhc]os+]O)]Sw]Tq]Nd]hr]eu]g.]V:]_l]d@]hd]X5]d\]t9]q6]Yc]s,]yu]a^]Kn^c<^xV^[n^ }q^w6^t^^rm^^p(^%a}^+^T^-`,^3mc^6Sa^8_H^=Y6^?},^@oS^DdA^Exk^G[,^L|F^UX-^md^]g^_I^_m^n<^oA^LR^]$^_J^Sx^q(^M7^oT^jl^_K^O*^N)^Vx^q7^nx^Uf^tf^fE^oU^Ko^|__\'_Vg_ xI_cR_l,_p)_&zW_'{A_)R@_1e0_5me_:K-_KEa?j4aBi=aDWIaSxtaUY7aXsSaYsTa]wda_wQakpvanUgapjPavLTawK/a}t*a~i/auCaiXa]iaqsaU{a^;at{a]IaTSaL(aZAaLUaYdazJaecaSs6dXnWd`uDdiX$dor'dVNdR5dSUdtLdZ|dYhdwkduIdsfg2fjQf_tfY&fMf|{fdrf_ufhxfxmfNGf}vg|egjEg jsg ][g \Wg^}grygUGg1q9g4ZSg6vjg:Oug=}.gFJRgI_4gVmhg\Tag^Q#g_aVg{Rng~afgwyg]mgh[g[3gQwg`0gTbgvWgWygX]gM}gr+gM=gxBgr,gcBg\7gjvgvygO/gJSg^[go^hbchn{h_whWJh!Nhh"[[h*q;h/iqh8z7h9PFhHdPhNrnhmrMhvwRhJThUYhX^hMYhn)hvh]\hTVhSVhmPhM!h_5h_xhT!hN2ihJikui cUiuPiu!i'Y'i0e+i=fKi?uqiJeEiho_ii>irNi[4i|Ni]nig4iW4iw4iM>iZiiNYiN*iKHiP'ipKiPGjdEj [`jUZjW'jn@jxvjuRjmij!YN3kF}dkGzNkLJ0kNw'kPO1kjh`kra(kwUvkxO}k{^]kYQkdjkrOkw?kbfkb(kcVkmQkiykV1k^2k`hkS+kk\k_/kJCkn|k}CkkvkO2kYlkY=kX_kY>k{FkO3ln}ld+lZElXll#Q(l4b)l7^nMS,nV{InX_Ongi@nkuSnnl\now7nrj8nsQynz\Hnj9nq^nW6nO5nY(nlnn]*nM"nh.na=nrQniAnR|n[5nsgnX~n|Qnm2nt/n{#n|Ann+nT%ntrnnYn{JovToW)oKIofQopLo X.o"ySo#U~o+Xob|RodkHomSAonpMopOwo_;os%otMoq?ox1oizo{KoJUoyTowJoVHo|hos=on~og~oSBogXoc%og9oT&o{MoU=oq_ov{o^4oUkpeHp{$pT9p ^ap d#pW7pxnp^5p#z.p'Vip(Vnp/g;p7lKp>U3pLN4pP{%pQanpXw(p]{NpcX=pk{}pp|ipxO6p|mGp}n,pL]pv'pfzpu$pohpa?p\9pV-p}Nph!p{tpU'pqvpfSpL^px2p\kq}6q ejq q`q[Lq]MqTHq!Ymq&u%q0f{q6fTqG}HqIV!qJ}?qL|SqNo!qPg|Bs?j;sDh+sE^bsPmosRh#sWOqshTsr|rsuV4sxb.szS7s{zLsz\sm5sacsh,sh]soisZGskIshLs^7sVw\-wbkwV|wJywTZwtWwL!wO:wu8wYCwPhwcEwkxwr1wO;w`4x^cx]wx,W~x2x_x4wrxEP)xOfZx]u&xkW^dy@^eyAQ5yPi^ye_Tyhxyymp.yzQ8yV_yPWye]y}{y`IyVIyT*yeLyi`yN!yu)y]yy]zypUyv_yrZydkyrqyl9z}|za*zJYz ooz u*zlyzx-zrBzvCzWRzy"z pVz.pzz1v`z6isz7rCzFYOzIvDzMn]zNgDzWb4za_bzbg[zih1zk|.zpeMztzkzvOzTMzs8zi!zrrzskzpWzOWzO_zh@zhAzOczi"zP*zsAzP+zTdzo|LqC|Mn_|`Vk|dtY|lWf|sZ7|]{|]O|X#|ZY|pX|oD|aX|qT|mr|U[|b6|oq|{U|SX|U]|M'|P,}Q:}Ro}bm}3ck}5nG}9aI}:Jz}PL?}^Nm}aU)}bzb}fPe}hkV}jl_}n_|}vo>}yL5}O=}or}b7}Lh}p|}V`}qF}b8}k+}WF}vE}QL}]|}_}}ye}`J}x:}hP}X{}jU}V#}vF~ r[~ d|~h2~+\n~.uj~/f`~1p}~7W,~=uE~>n`~A[e~C]^~FYp~Gi#~Rqy~TrD~U`K~^i$~ab9~pp[~yf:~|M)~sC~aY~o+~gE~`i~sE~T@~U?6].8y|:L@Le"PN8TXRUyVjq*kNQnvGp[kr_~uXawwsyWgT~Q<eOK6Z8MDV>b:OX`Lky}}WhKXibh:cGlMlNV?c'_V}hx;hQyWNnlOi%VUMEm:Q= O> l;R1LiYDi|-Q>3l<6e-=w0?LjCSDFV@JV}Va!X^=Zv)^Z$wrEu+y}J\MFr6]~L7[8PiN]k@}"xKjVq0[NwC[OK$x`{WkJ`!NMT\}XRvr7hRJELk#bn)b;+w-/xa9sl>^!Kd}NclP]/Q]0TK7UhSea#fR`kp~pi&qKrwZ[9L.Z[MG]1X/c#Norsx3`Nu}klefp0UDmtcmhBmuW|m;v+r8vHO@f(}i OA `_ ^l`"@]2Ef)GosYsmdkzfyfvf}xu,~duicmKOdXS]3Tlr9_7KN{XPYJ4xbOBl>gH XIY+(m<+XT/\Z1b<@bpGz;Iu.J{*Ol{Ql?R|XsTewyC{nbWimv^mLlcnhTzxXUtjN9VaORP6N"snsx\LPKnIb]u~T,)uW,X?1}@8k-=U*Ig(WnJ[JgaxccT]fjXk{Ylmwoe5uP-zqqb=cHYU_*[\oV%bqV~Y!X@\[m=_8j%W-!sy#mx%uG,aJ-kc/r^=xL?jYASFC[fIu/NNpSi~Y{6cbrmaKZ]Z9k{K9my```#}9p1MKm>idUmg]Tve7[gb?nKWtp]N+g^VVaL h3en\"`P-U5?U!N{[PyKTKsUt%g}Py{vZ%[=lbMwp^vI^oS1|nhCqHNqymrtd6u9\pcqh%r;^$ZLNJiUcZW|Y_jZfyDhc$t{]voJxhDULkWY-{+SYU"v^Zv`Qi(uyz/k|`jc2UE"qc#Un1ML6mY;XA@zlFqkLz-`b1zI4aM6J8:r`;qIP^qTp_UxD[nL^^r`gIbbscgafcKicLytZqJN#ro-?f+Dy]Ej?Io.MtPNNs]f,_N^bUyctMPU8w}\)ifcvgJPNZwJk5ATmBbDGigYi+injrr@uqewtCx`Tzk6U$kih;XW{.Qa[@u>^waPnPitNtUMO[];N,ihT4dGu[zA^)'Tx-ow2S3RqPbu2iY.jU,lbFu}#w{ex_+buv-u3p5a%u]eTszaroy]PyZj[Vpkd}eUijWLL0j"WvbJbKzOk_VKt4pgbLd*uamZWnQqZ']Tj#VCVtZ_o3bMo}rhoEggW}gN_\yG'Yv0_,2VZ9\$=p8BUzDdwHVDQtlVo~\p!^^*aZe{bgMSko5oziy&_=wGx}x|^+[hc]abQFlGNu zC eW lHsId;f.o6 \?(N=EXCQQGRi.Th=WzDbOzEy8\`{0vnvLbxlqZ`J=]?vo^yz4U-qg^>\@QHQIx>+Kv0Ty6ub7aS@XiCx~EOLM}$UNvWzPZLs[f>_v.bUpeQJi|>jUqMiz5bPtwMTg#[%bQ'W"*wc1j&I\.WWwph]@OM\sY0fi d<jD&dl(de;{xQL;]d=`M\aYwl]_rmNYPe#yMM.ONv/e$U6uV]yyi}g$VcQKVdUr^zWxXjOUX}X+}K|\`(Us}YL#YySjuuoGSZZ=h(\/p#MU `);^,Jp:Kn1Nn2RvM_nRaVFg`ejs;leawdKW#[BJ~OO0!0"0# 05$0680<90=<0>@0?K0@M0AT0BX0C\0Dp0Eq0Ft0Gw0Hx0Iz0J0U0V0g0h0i0j0k0l0m0n0o0p0q0r0s0z0{0|0}0~ 1! 1"1#1$1%1& 1')1(,1)-1*41+51,81-<1.D1/E10G11I12P13T14X15a16c17l18m19p1:1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1] 1^ 1_ 1`1a01b11c41d71e81f:1g@1hA1iC1jE1kF1lT1rV1se1yh1zi1{l1|p1}2%2&2'2,22232425262728292:2;2< 2=2>,2?-2@02A22B42C<2D=2EH2JI2KP2L\2M]2Nd2Oe2Py2Q2R2S2T2U2V2W2X2Y2Z2[2\2c2d2e2f2g2h2i2j2k2l2m 2n2o2p2q2r(2sD2tE2uH2vJ2wL2xN2y]3!|3"}3#3$3%3&3'3(3)3=3>3D3E3F3G3H3I3N3O3P(3Y,3Z@3`A3aD3bH3cP3dQ3eT3fU3gX3h\3i`3jx3ky3l|3m3n3o3p3q3r3s3w3x3y3z3{3|3}3~4!4"4#4$4%4&4'4(4)4*4+ 4, 4-4.4/4041 42443<44X45\46`47h48i49t4:u4;|4<4=4>4?4@4A4B4F4G4H4I4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4m4n4td4}e4~g5!i5"k5#n5$p5%q5&t5'x5(5.5/505152535455565758595:5;5<5=5>5?5@5A5B5C5D5E5F5G5H 5I(5J)5K+5L45MP5NQ5OT5PX5Q`5Ra5Sc5Te5Ul5V5W5X5Y5Z5[5\5]5^5_5`5a5b5c5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5s5t05{15|45}85~P6)T6*6061626364656>6?6E6F6G6H6I6J%6K,6L46MH6Nd6Oh6P6Q6R6S6T6U6V6W6X6Y6Z6[6\6]6^(6_)6`,6a/6b06c86d96e;6fD6gH6hL6iT6jU6k`6ld6mh6np6oq6ps6qu6r|6s}6t6u6v7#7$7*7+7,7-7.7/707172 7;7<7=7>7?7@$7A%7B(7C,7D@7JD7KQ7LS7M\7N]7O`7Pd7Ql7Rm7So7Tq7Ux7V|7W7X7Y7Z7[7\7]7^7_7`7a7b7c7d7e7f7g7h7i7j7k7l7m7n7o7p 7q<7r=7s@7tD7uL7vO7wQ7xX7yY7z\7{`7|h7}i7~k8!m8"t8#u8$x8%|8&8'8(8)8*8+8,8-8.8/80818283848586878>8?8@8A8B8G8H8O8P8Q8R88S98T<8U@8VB8WH8XI8YK8ZM8[N8\X8`\8ap8gq8ht8ix8j8o8t8u8v8w8x8y8z8{8|8}8~9!9" 9#9$9%9&9' 9()9)+9*D93E94G95I96M97O98P99T9:X9;a99?9@9A9B9C9D9E9F9G9H9I9J9K9L9M9N9O9P9Q$9c%9d'9e)9f-9g09h19i49j89kI9qL9rM9sP9t]9u9v9w9x9y9z9{9|9}9~:!:":#:$:%:&:':-:.:/:0:5:6:7:<:=:>:? :@:A:B$:C,:D@:EH:FI:GL:HP:IX:JY:Kd:Lh:M:N:O:P:U:V:W:X:Y:Z:[:\:]:^:_:`:a:b:c:d:e:f:g:h:i :j :k:l:m:n:o:pD:qE:rH:sL:tN:uT:vU:w`:|a:}d:~h;!j;";+;,;2;3;4;5;6;7;8;9;:;>;?;@ ;A@;GA;HD;IH;JP;KQ;LU;M;N;O;P;Q;R;S;T;U;V;W<;XQ;YX;Z\;[`;\h;]i;^;_;`;a;b;c;d;e;f;t;u;v;w;x;~@´=?µ=@·=A¹=B=C=D=E=F=G=M=R=S =T =U =V=Z=[$=\%=](=^)=_E=`h=ai=bl=cp=dr=ex=fy=g|=h}=iÄ=jÈ=kÌ=l=m=n=o=p=q=r=s=t=u=v=w=x=y=z={$=|,=}0=~4>!<>"=>#H>$d>%e>&h>'l>(t>)u>*y>+Ā>,Ĕ>-Ĝ>.ĸ>/ļ>0>1>2>3>4>5>6 >:>;><>=(>>)>?,>@0>A8>B9>C;>D=>Ed>Xh>Y|>_}>`ŀ>ań>bŇ>cŌ>dō>eŏ>fő>gŕ>hŗ>iŘ>jŜ>kŠ>lũ>mŴ>nŵ>o?#?$?%?&?'?(?-?.?/ ?:?;$?@%?A(?B@?MA?ND?OH?P\?V]?W`?Xl?Yo?Zq?[x?\y?]|?^ƀ?_ƈ?`Ɖ?aƋ?bƍ?cƔ?dƕ?eƘ?fƜ?gƤ?hƥ?iƧ?jƩ?kư?lƱ?mƴ?n?r?s?t?u?v?w?x?y?z?{?|?}?~@!@"@#@$@%@&@'@(@) @*@+@,@-@. @/!@0$@1(@20@31@43@55@67@7<@8=@9@@:D@;J@\@H`@Ih@Jk@Kt@Lu@Mx@Nǎ@Yǐ@ZǑ@[Ǭ@gǭ@hǰ@iǴ@j@p@q@r@s@t@u@v@w@x@y@z@{@|@} @~A!A"A#A$A%A&A' A($A),A*-A+/A,1A-8A.TB?hBE}BFʄBGʘBHʼBIʽBJBKBLBMBNBOBPBQBRBSBTBUBVBWBXBYBZ B[!B\AB]HB^IB_LB`PBaXBbYBc]BddBexBfyBg˜Bh˸BiBjBkBlBm Bn BoBpBqBrBs!Bt"Bu,By.Bz0B{DC$EC%HC&LC'`C-dC.fC/hC0pC1uC2̘C3̙C4̜C5̠C6̴C<̵C≠C>̼C?C@CACBCCCDCECFCGCHCICJ CK CLCMCNCOCPCQ$CR(CS,CT9CU\CV`CWdCXlCYmCZoC[qC\xC]͈C^͔C_͕C`͘Ca͜CbͤCcͥCdͧCeͩCfͰCgChCiCjCkClCmCnCoCpCqCrCs CtCuCv Cw!Cx$Cy(Cz0C{1C|3C}5C~XD!YD"\D#hD'iD(kD)mD*tD+uD,xD-|D.΄D/΅D0·D1ΉD2ΐD3ΑD4ΔD5ΘD6άD<έD=D>D?D@DADBDCDIDJDKDLDMDNDODPDQ DR$DS8DYTDZUD[XD\\D]dD^eD_gD`iDapDbqDctDdxDeπDfυDgόDhϡDiϨDjϰDkDlDmDnDoDpDqDrDsDtDuDvDwDxDy-Dz4D{5D|8D}F?F@FAFBFCFHFI%FO(FP)FQ,FR0FSDFYEFZ|F[}F\ӀF]ӄF^ӘFdәFeӜFfӠFgӨFhөFiӫFjӭFkӴFlӸFmӼFnFoFpFqFrFsFtFuFvFwFxFyFzF{F|F}F~G!G"@G#DG$\G%`G&dG'mG(oG)xG*yG+|G,G-ԀG.ԂG/ԈG0ԉG1ԋG2ԍG3ԔG4ԩG5G6G7G8G9G:G;GG?G@GAGB GCGDGEGF֨H?֬H@ְHAֹHBֻHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHX HY(HZ)H[+H\-H]4H^5H_8H` %K%B%%%%%%`&m&0000A0000111\22`2{23333>N NANNHKNONN]N_NSNNVNN^NNlNNr OOuFOHO~MOQOYO\OOOOO#P-PGPIPtPxPPQ@QNQeQnQuQxQQQQQQQR R6R;RJRMRRRRRRRSS?SJSQSTS oSwS SS SS TT. 8T>T8 {T}T? UUB UUG UUM MWQWU X XZ /X5X` XXg YYl 'Y.Yu GYIY} NYWY jYnY YY YY YY T[_[ [[ [[ [[ [[ [[ [[ [[ \\ 8\@\ ]] ]] _^c^ r^~^ ^^ ^^ ^^ __$ f_q_, __8 __; __D __G __J A`C`N b`p`Q ``` ``i ``l aao GaLar bahax aa aa ab bb >bAb GbMb bb bb :c>c cc cc xdzd dd dd *e,e 6e?e MeQe texe ee ee ff f f -f1f AfDf [f_f! dfof& sfzf2 ff: ff= ff@ fgC ggT &g.gY NgSgb mgwgh ggs ggv gg| lBl ]l`l }ll ll ll ll ll 5m>m wmym mm mm mm mm n&n$ +n/n4 :n>n9 [n_n> noC Wo_oH zo~oQ ooV oo\ pp_ ppg ppj ppo dqiqr qqx qr{ :r@r FrHr ss )s+s ss ss ss t t t:t ?tDt Wtjt 0u3u Yu]u uu v&v {v~v vv ww %x'x xx xx *y,y GyIy Vy`y yy+ yy0 yy5 ;z@z8 I{V{> =|?|L ||O ||R } }U }}a }"}f +}0}i B}F}o q}s}t }}w }}| }} ~#~ i~m~  os }  xz  ! *, 59 nr тׂ  49   hjͅυ[_ac~!&)mu,5@EJQYʌ_挃 GJʎ͎&* #JU\cmo|INɑё bf()/ԕ֕2KM5[d8sxBHMΖRadLNy|IMЙҙAE ,1sv{JP\ax}̮Ѯ?Cǯί SY#İɰ1 7<#%B49EKNQqT_w$*@EKM\a̵ѵ 49̹ҹSUdi4>@E ͼѼ&+0W[4pu9{}?BHKQ\b'h,1tHMzdi‹’׌DNŝSYŨ]aůpuŴžź,;PUƺOX|~ NJ ǚǦ"ȍ(36; A\aG')M8>PTYW̭]_acΥfl,1rx~@Eф ӊ!ӏ8=ӕӑӛՉա֧TY׭ ^F!>!w)x)%"R"$!,"v),(y(v(z(/"%)&(&)((())())0)/(/)("+"*"-")"A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x%!,",#,$,%,&,(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,?,@,A,Q,R,S,T,U,V,X,Y,Z,[,\,],^,_,`,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,W,z){)|)})~){(|(}(~(0%1%2%3%4%5%6%7%8%9%!%"%#%$%%%&%'%(%)%*%g!h!f!i!j!U"X"V"Y"W"+!|!}!{!z!r!s!1"g(h(i(j(k(l(m(n(o(p(q(r(s(t(u(g)h)i)j)k)l)m)n)o)p)q)r)s)t)u)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)])^)_)`)a)b)c)d)e)f)M(N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f(!&,&"&-&#&H&G&.&$&B&A&/&&&F&E&1&%&D&C&0&'&<&I&J&7&K&L&2&)&>&M&N&9&O&P&4&(&Q&R&8&=&S&T&3&*&U&V&:&?&W&X&5&+&Y&Z&;&[&\&@&]&^&_&`&a&b&c&d&6&a!`!C"G"H"K"J"I"L"_!^!B"]!\!D"E"<"="@";">"?"M"["\"]"Z"!!"!#!(!4!5!6!7!8!9!:!;!*?*@*A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*[*\*]*^*_*`*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*!+"+#+$+%+&+'+(+)+*+++,+-+.+/+0+1+2+3+4+5+6+7+8+9+:+;+<+=+>+?+@+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+[+\+]+^+_+`+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z${$|$}$~$1)2)3)4)5)6)7)8)9):);)<)=)>)?)@)A)B)C)D)E)F)G)H)I)J)K)L)_"1(2(3(4(5(6(7(8(9(:(;(<(=(>(?(@(A(B(C(D(E(F(G(H(I(J(K(L(I'J'K'L'M':';'\']'^'6'7'8'T'U'V'W'X'!'"'#'%'+','-'.'/'0'1'2'3'4'''(')'*'='>'e'f'g'h'a'b'c'?'@'A'B'C'D'E'F'G'H'N'O'P'Q'R'S'Z'['c"l'&'`'o'a"<'m'5'd'n'i'2X[m2_>_;yt\&s`]&axN0\}q?^:{9yzNwK%eMi'jvi;{igLoLXqy_N$z2f{z=zHLMoUU(mB^bv\mu\9`[S5V$lry%l_PjgkPQ\i[L}#S7nOxHj8n,q%qNiyejlV]BmuL5u-dA\F^ozac'[7vfOrpZKRgCWpv^h#J'LIj0vOoOi^wG^pkVq4hCk*j|zvuJ{^;P7Uqnp=R$LQTmikJbY2}-cLV4Y'aSnCPb]y{A]5c{R!O(d6t~l.cmgA}bZd]opqvpzVYTlKj?J0UiOQi)s`PRicZUg?u"O/M#O0M~q#P/a#x&J;wjrH^SijyNQTnRT#Y(}YWNw>ze}#v|Y)}ngbc<{$YJtzT*}by7tB}0|l}bJ=}gjC_RQbN$S;SlJ&qUK1LXw(KdkhheC\^mrSll>{k_xasP*`bhTb}R(e^S8t`xcij2|*zCf2a+Jdc;iVbrsVn2jvPYlKZ(O[XNyUiQc,XLs{MVvugohyc;Rss{cP^0NwVYqbmvnOjnp|c_StS3a4a9cEk)t6MyR-ZcRQO^b5aoM'qeN]KyP+lS^iw:v_[SSGxNJAx4R4\9zOJ3|jjkjzP]dn_,Kca|0mQ};vOyZkAJ8RqMScf}uph]mS|u?Z{Lnj3{Bd)ev`3v@Z4xrk[k1mCL>wK|7X1NBJ4{FKs}r}&wPJ+zkkxgeY{Tc|XzUs+Osk|UfYyb!bTkw`2d|LhU.[6a7x?`C{j]"b&ngY9RCUeZPZYQXN^K,t{Zivsh,Opp}tH[@NTcOQuqrMkOXoIf8XszSUus.wHosMOuseBp8Y9YIoKw._uhdSwv:UMsaKfN+|;U%b9MrjGKtM/[Yos_gNBZ-OZoXn']&bml)S)rDpbboiZhCZDZETzg`M0c2[D{cs%Yg{K]TP6f.`Z}5\x`1g9a@c@ypiEpAcL|M|Yz8qu}y`{g7|d|E{gc9XxvE\XL/`gt\o|O]o*r,J;}G}lQ^dCegm5{lxXhXMVgZLcJv_GpFp:XtqptLuPXHp!Q"QTYhVJY1ZGXb\Nstu]W:z'n=uuxxyJ[yKTT\Y>nmw-J.J.OZ[;YsJSvxfuj/J0R:q3WCc}sZ^+L(nzKyy}L~SUTM_8|PQ\^,p~LaM:ao[2Z#y[`kvqKjY"uQWxQxjyj3Zoqve?ndb?P,zQu3g0OYwfsTZ'b|{"f6|-rao.sF\kY8T>ko]p]q]r]p[bopq4O#fq{0K.r)QL]~c*Q*h6jzyLfXvKYRYKSwX)Zxu^^/r)xs]zj=v;a?MTtMfO|"{\`\xnwhkzRjZFZAwgbW}HN7j@|g}ow-zYvtznf\Lv2`~|+Q#Txp(WPfh{htteh^`4vRj{y]Y4Z*ni{@SWcfoP|cM;X[ewx|rkZXbVmQV3`RmXTI\qW6S-Lzv2VXR-pL{!kRVUy:gUkwUgo>a\}3mIN[zcK)w&{@qHmCo`X:|/}Npa[Op>s,b8}hc'T|hRz,e!}P_3lQ_mm8xzwmXDcqpz`Dn^Y=t8O[i,QHZ&_3yRrDJibJ\4l@z({(P9OJUbW/b8W"oZb|vP{-QdM.Qm\Nhyp5N|f{WVPu]qw}vw[j{\iAYruE`T3bg^<\6RUu+T3J&MCMZMuTIP'olbj[LNhuUwMS~sXt3V-]\UDsWKP]Yp3KDq3eu{ai`}<|"Z#Z!Ri^\N5rdPQ]Ha7[c_9mEqOs+W,a{pazZpgLtZVwj^4K5KQXNtws;Q*wJmSWzX}r0SstIZ^fZZ\rV{2i-ncz1ck|(M6Lan(v}]$VFu"aFiitlVSk=l\bk^\p?kNW?Qvz*vwzfX1tsmY\M`ESl|[RkT"^fS]r?O,k?tobqYGq8K~y:[uZlv\ZdzO`]J^U^Jd_R]tw\g%d#|;[:r}iJPVuEY4d'm=j~fDw-u`Y4eHMHnIM7yhqrYu[5JFYm|`l~RGi*f4]5d0X$|JMTW#^`dQUpXCxWjrO9wsY@t<}1_oc@UpczmHzWVei\{,{CO}kZP[P>j1YW_P[Q[a}~v@QxO,o~}%|1zY_R`$a+MtY&hNMiao|c`uo_J1k?m&d$y3plegQGYWd]jwTZa?[ELPl;Ks^/xvo6]/nxM8^'||w1w;N!tMn.aCl~O?xbXhS(^dtBluYEyS]qV|lp|@m9JdnS[gzcXAt7]8]EO__>r!vKk|qGstK0T2s7{uWsceO3sXdyOZOetBXP\nL`UJvJ}VXOt&V>\T[GWv^*\cr4i\R\wjaAN1T1}=f-{NabwouGO2ToLhTOnWw&`AV\acpdqq\'V4k!j1?1@1A1B1C1D1Z1[1\1m1n1o1p1q1t1u1v1w1x1~1!2"2#2$2(2)2*2+2-2.2/20212F2G2H2I2]2^2_2`2a2b2z2{2|2}2~2*3+3,3-3.3/303132333435363738393:3;3<3?3@3A3B3C3J3K3L3M3Q3R3S3T3U3V3W3X3[3\3]3^3_3t3u3v3C4D4E4X4Y4Z4[4\4]4^4_4`4a4b4c4d4e4f4g4h4i4j4k4l4o4p4q4r4s4u4v4w4x4y4z4{4|4)5*5+5,5-5u5v5w5x5y5z5!6"6#6$6%6&6'6(6+6,6-6.6/666768696:6;6<6=6@6A6B6C6D6w6x6y6z6{6|6}6~6!7"7%7&7'7(7)737475767778797:7E7F7G7H7I78898:8;8<8=8C8D8E8F8I8J8K8L8M8N8]8^8_8b8c8d8e8f8k8l8m8n8p8q8r8s8+9,9-9.9/9091929R9S9T9U9V9W9X9Y9Z9[9\9]9^9_9`9a9b9l9m9n9o9p9(:):*:+:,:1:2:3:4:8:9:::;:Q:R:S:T:x:y:z:{:#;$;%;&;';(;);*;-;.;/;0;1;;;<;=;B;C;D;E;F;g;h;i;j;k;l;m;n;o;p;q;r;s;y;z;{;|;};-<.8>9>F>G>H>I>J>K>L>M>N>O>P>Q>R>S>T>U>V>W>Z>[>\>]>^>p>q>r>s>t>u>v>w>x>y>z>{>|>}>~>!?"?)?*?+?,?0?1?2?3?4?5?6?7?8?9????C?D?E?F?G?H?I?J?K?L?Q?R?S?T?U?o?p?q??@@@A@B@C@D@E@F@G@O@P@Q@R@S@T@U@V@W@X@\@]@^@_@`@a@b@c@d@e@f@k@l@m@n@o@=A>A?A@AAABACAYAZA[A#B$B%B&B+B,B-B.B/B4B5B6B7B8B@BABBBCBDBvBwBxB|B}B~B!C"C#C(C)C*C+C,C7C8C9C:C;C$D%D&D7D8D9D:D;DDDEDFDGDHDTDUDVDWDXD=E>E?E@EAEFEGEHEIEJERESETEUEVEDFEFFFGFJFKFLFMFNFTFUFVFWFXF_F`FaFbFcF\G]G^G_G`GxGyGzG{G|GgHhHiHjHkHPKVKgKOMhM-N{O"P8PPP]PTQUQXQ[Q\Q]Q^Q_Q`QbQcQdQeQfQhQiQjQkQmQoQpQrQvQzQ|Q}Q~Q"R#R'R(R)R*R+R-R2R>RBRCRDRFRGRHRIRJRKRMRNRORPRQRRRSRTRURVRWRYRZR^R_RaRbRdReRfRgRhRiRjRkRpRqRrRsRtRuRwRxRfT|T%U+U.U8VMVKWdWE[d[%\%]U]t]|^~^3_a_h_q`-amauc!d)d.e1e2e9e;e#?#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#[#,!]#^#_#`#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y#z#{#|#}#&"K!L!~!~#M!\#."4"W!'!#()!!("(?!*(-(,)!)#)@!*)-)")&$('$)8')R+(S+)f.(g.)'"0"', *! .! /! 0! 1! S"! T"% %!& &!0 6"2 G!3 H!; X!t y)!I! !5"!$'!`"!!e""!b"&!Y'+!J!S!w(T!x(!!"!"""#""S!"$""T!"t! "u!"3""2""n!"p!"D! "P!4"E!5"q!<"-!="o!R"V!`"A!a"U!d"B!e"C!j"l!k"m!"x!"y!"v!"w!"A""Q!#R!%F"%c!%b!%:"%9"%e!%d!%8"%7"%[!&Z!&Y!&O"&N"&P"&Q"@&O!B&N!2^"39'3j'3k'3_'3d"NilNKoNRvNduN*c-Niq2NzM8N/|9N!S;N+qBNQgCN,RENyNVNRNXN+cYN`kkNaJmNLTsNajvNc\wN-_~NkKN/UNuVNxeN@^N#lNfPNA^N,dN"SNQlN'dNRlN1vN{NNQPN?KN$mNNTN5tNfdNjqNlKN@KNrlOjP/OW[4OaZ6O6V8O_c:OC^N0RpSCRotGRNvTR(tVRx\[R'K]RNZaRf`iR%mjRrnoRy\rR\yuR\s}RrxRytRq|R|KR%pR}KRtURmMR%JR+VRBPR6zRMLRzZROvR8iRuXRNLRMWR3}RdURhORCmR2PR~NR(ZSPxSV} SQxSRxSS\ S]m!SDN#S!K*Sc]/S]|9S/yMS3XWSuQZSOZ\ST\^S&\`S?ofSONhSY`}SmqSOLSxdSmdSXWS'}S+jS2vSpOS=yStfS[KSQsSRbS"vStaSdZSI^T^}T@JTVOTpWTak TEx&Tz\)TC]+T_y3TogBTeUHTPoJT1MQT"whT2qjT1qqT2MsT+ZuT'JT:nTSxTz{T$OT{\TcvT*mT!rTaNT&zT`yTVlTndT!yTo{TkyT#nT,jT(JTztTVMTv|TItTTxU&xUJ^UFrUZWUPSUEX/Ufj1U]s5UZd>UdvDUrvFUB_OU}YSUvLVU:S^U/dcUay|U&pUSKU<`U+}U`_UGrUpgUnPU*sUK^U8vUuaU3qV#w V)JV%OVD_/V0a2V?p4V$v6V6cSVFzhVoPkVm}tVD]Vw|V?fV-^V?zVqeVDmV%RVn}V6uVvaVL^V^|VWlV]MV7VV3MWUxWXeWjO WPO WLjW.jW-jWqSW%SWOw(W$n-W$P0W"r;WpP@W#rBWxwGW3PJW)[aWgwdW^MfW$wjW@xnW]SpWPLuW&O|WsvWwaW\SW~zW'zWYkW'OW/jWodW9iWXqWXXWr`W4fW|\WqsWPcW{rWF[WqPWrPX\OXQSX\t!XB\$X'p'X@f*XmJ:XwLJXTNKX+gOXCKQX1aTX2wWXsSXXRSZX@u^X]_aXsnbXqgdX4}uXHryXRs|Xtn~XSbXQLXj_X:iXWYXMuXrqXGzXxYXBTXevXE]XrgX_mXKJXz[X5hX&SX5}XIyXbdX={X$WXENXUNXfVX=eXM^XslX`mY>y"YSY1Ywc7Y(l>YqzDYreZY(z`YunbYN^gYsgsY3RtY?RxYLJ}Y?{YtlYuPYmhYRPYXYYfvY*[Y`wYYXY#tY]tYQoY5YY+mY7cYMJY)lYkrYo}YsyYAfYXlY,mZNjZ_hZO^Z&RZtgZVQZBf Zcc%Z0d)Z4X6Z%veP[-mQ[jzc[yLd[5Mi[)zk[]ap[Ubq[Omu["]x[Jyz[hj|[me[[N[t`[`O[%n[#][Z\Md\9V\@o\|a\9v\G_\1d\g\\h\\Vz\vS\Zq\rz]}b ]OU]xP]_M]Ku]pd]+K]DW']~b)]Z]K].ZL]nJP]9Ui]!cl]cho]+s])O]wS]qT]dN]rh]ue].g]:V]l_]@d]dh]5X]\d]9t]6q]cY],s]uy]^a]nK^aEK?a4jBa=iDaIWSatxUa7YXaSsYaTs]adw_aQwkavpnagUpaPjvaTLwa/K}a*t~a/iaCuaXiai]asqa{Ua;^a{taI]aSTa(LaAZaULadYaJzacead6sXdWn`dDuid$Xod'rdNVd5RdUSdLtd|ZdhYdkwdIud}f2gfQjft_f&YfSf{|frdfu_fxhfmxfGNfv}ge|gEj gsj g[] gW\g}^gyrgGU1g9q4gSZ6gjv:guO=g.}FgRJIg4_Vghm\gaT^g#Q_gVa{gnR~gfagywgm]g[hg3[gwQg0`gbTgWvgyWg]Xg}Mg+rg=MgBxg,rgBcg7\gvjgyvg/OgSJg[^g^ohcbh{nhw_hJW!hhN"h[[*h;q/hqi8h7z9hFPHhPdNhnrmhMrvhRwhTJhYUh^XhYMh)nhPh\]hVThVShPmh!Mh5_hx_h!Th2NiJhiuk iUciPui!u'i'Y0i+e=iKf?iquJiEehi_oi>iiNri4[iN|in]i4gi4Wi4wi>MiiZiYNi*NiHKi'PiKpiGPjEd j`[jZUj'Wj@njvxjRujim!jk3NFkd}GkNzLk0JNk'wPk1Ojk`hrk(awkvUxk}O{k]^kQYkjdkOrk?wkfbk(bkVckQmkyik1Vk2^kh`k+Sk\kk/_kCJk|nkC}kvkk2OklYk=Yk_Xk>YkF{k3Ol}nl+dlEZllX#l(Q4l)b7l<^8l5gNlq[Pl1`Ul%_WlRyZl}ghlgMjl\hmlWgpl@wrlcPvl!Zzl=LlGTlHXlAnlAyl;tlUZl2ylr{lv[l_^lr[lqMn,SVnI{XnO_gn@iknSunn\lon7wrn8jsnyQznH\n9jn^qn6Wn5On(Ynnln*]n"Mn.hn=anQrnAin|Rn5[ngsn~XnQ|n2mn/tn#{nA|n+nn%TnrtnYnnJ{oTvo)WoIKoQfoLp o.X"oSy#o~U+oLboR|doHkmoASnoMppowOo;_o%soMto?qo1xozioK{oUJoTyoJwoHVoh|o=so~no~goBSoXgo%co9go&ToM{o=Uo_qo{vo4^okUpHep${p9T pa^ p#dp7Wpnxp5^#p.z'piV(pnV/p;g7pKl>p3ULp4NPp%{QpnaXp(w]pN{cp=Xkp}{ppi|xp6O|pGm}p,np]Lp'vpzfp$uphop?ap9\p-VpN}p!hpt{p'UpvqpSfp^Lp2xpk\q6} qje q`qqL[qM]qHT!qmY&q%u0q{f6qTfGqH}Iq!VJq?}LqS|Nq!oPqsB|?s;jDs+hEsb^PsomRs#hWsqOhsgrsr|us4Vxs.bzs7S{sLzs\zs5mscas,hs]hsiosGZsIksLhs7^sXw-\wkbw|VwyJwZTwWtw!Lw:Ow8uwCYwhPwEcwxkw1rw;Ow4`xc^xw],x~W2x_x4xrwEx)POxZf]x&ukxyd^@ye^Ay5QPy^ieyT_hyyxmy.pzy8Qy_VyWPy]ey{}yI`yIVy*TyLey`iy!Ny)uyy]yz]yUpy_vyZrykdyqry9lz|}z*azYJ zoo z*uzylz-xzBrzCvzRWz"y zVp.zzp1z`v6zsi7zCrFzOYIzDvMz]nNzDgWz4bazb_bz[giz1hkz.|pzMetzkzvztzMTz8sz!izrrzkszWpzWOz_Oz@hzAhzcOz"iz*PzAsz+PzdTzUL|CqM|_n`|kVd|Ytl|fWs|7Z|{]|O]|#X|YZ|Xp|Do|Xa|Tq|rm|[U|6b|qo|U{|XS|]U|'M|,P}:Q}oR}mb3}kc5}Gn9}Ia:}zJP}?L^}mNa})Ub}bzf}ePh}Vkj}_ln}|_v}>oy}5L}=O}ro}7b}hL}|p}`V}Fq}8b}+k}FW}Ev}LQ}|]}}_}ey}J`}:x}Ph}{X}Uj}#V}Fv ~[r ~|d~2h+~n\.~ju/~`f1~}p7~,W=~Eu>~`nA~e[C~^]F~pYG~#iR~yqT~DrU~K`^~$ia~9bp~[py~:f|~)M~Cs~Ya~+o~Eg~i`~Es~@T~?U6.]8|y:@LL"eP8NTRXUVyj*qkQNnGvpk[r~_uaXwswygW~TV:bXOL`yk}}hWXKbi:hGcMlNl?V'cV_h};xQhWynNOl%iUVEM:m=Q >O ;l1RiLDY|i->Q3!^K}dNlcP/]Q0]T7KUShe#af`Rk~pp&iqrKZw9[.L[ZGM1]/X#coNsr3xN`}ulkƁfé0p؁DU߁tmmcBhum|W;m+v8rHv@O(fi} AO _` l^"`@2]E)fGsoYmsdzkffyv}fx,u~udciKmdOSX3]lT9r7_NKX{YPۂ4Jނbx߂BO>lHg IX+Y(bo\%Vqb~V!Y@X[\=m8_%j-W!ys#xm%Gu,Ja-ck/^r=Lx?YjAFSCf[I/uNpNS~iY6{crbmKa]Z9Z{k9Kym``#`9}1pKMɅ>mՅdi܅mU݅]gvT7eg[?bKntW]p+N^gVVLa 3hne"\P`-5U?!UN[{PKyTsKU%tgP}yv{%Z=[blwM^pIvdžo^ˆ1SԆn|نChۆHq߆qNmytr6d9up\qc%h;r$^LZNiJUZcWY|_ZjfDyh$ct]{vJoxDhLUWk-Y+{YS"Uć^vvZQ`(iyu/z|kj`2cEU"cq#nU1LM6Ym;AX@lzFkqL[-b`1Iz4Ma68J:`r;IqPq^T_pUDx[Ln^r^`IgbsbcagfKciLcyZtJq#N-o?+fD]yE?jI.oMPtNsN],f_^NbyUtcPM8U}w)\fiŏvcΏJgяNPԏwZ5kAmTBDbGgiY+iijnr@rueqwCtxT`z6k$Uik;hWX.{aQ@[>uw^PaPntiʐtNސMU[O;],Nhi4TGd[uAz)^'xT-wo23SRPqb2ui.Yj,UlFbu#}we{x+_ub-v3u5p%a]uTeǑzsבraؑyoܑ<]ݑ\vepDtii{s oTMk7P4BV:-h?/o@%KEiKIhzWFL[gf^Gj^kHu^TU`0oGb/YgyegJOQaHb̒{oϒyzҒr\'`hxjK]PZyjV[pdk}UejiLW0L"jvWJbKbOz_kKV4tՖgp֖Lbٖ*dۖauܖZmnWqQ'ZT]#jCVtV_Z3oMb}ohrEogg}WNg\_Gy'vY0,_2ZV9$\=8pBzUDwdHDVQltV~o\!p^*^aWeb{gSMk5ooiz&y=_GwĘ}xǘ|xۘ+^ܘh[ߘ]cbaFQGluN Cz We HlIs;d.f6o ?\(=NECXQGQR.iT=hWDzObEz8y`\0{nvLvxbql`Zՙ=Jٙ?]ݙovߙy^4z-Ugq>^@\HQIQ>x+vK0yT6bu7Sa@iXC~xELOM$}UvNWPzZsL[>f_.vbpUeJQi>|jqUiM5zӚPbԚwtؚTM#g%[Qb'"W*cw1&jKI.\WwWhp@]MOs\0Yif 0@?0K@0MA0TB0XC0\D0pE0qF0tG0wH0xI0zJ0U0V0g0Ĭh0Ȭi0̬j0լk0׬l0m0n0o0p0q0r0s0z0{0|0}0~0 !1 "1#1$1%1&1 '1)(1,)1-*14+15,18-1<.1D/1E01G11I21P31T41X51a61c71l81m91p:1E1F1G1H1I1J1K1L1M1N1ĭO1ȭP1ЭQ1ѭR1ӭS1ܭT1U1V1W1X1Y1]1 ^1 _1 `1a10b11c14d17e18f1:g1@h1Ai1Cj1Ek1Fl1Tr1Vs1ey1hz1i{1l|1p}1%2&2'2Į,2خ22ٮ32ܮ425262728292:2;2<2 =2>2,?2-@20A22B24C23аD3ѰE3԰F3ذG3H3I3N3O3P3(Y3,Z3@`3Aa3Db3Hc3Pd3Qe3Tf3Ug3Xh3\i3`j3xk3yl3|m3n3o3p3q3r3s3w3x3y3̱z3б{3Ա|3ܱ}3ݱ~3߱!4"4#4$4%4&4'4(4)4*4+4 ,4 -4.4/40414 24434<44X54\64`74h84i94t:4u;4|<4=4>4?4@4A4B4F4G4H4I4J4K4L4M4N4ȲO4ɲP4̲Q4вR4ҲS4زT4ٲU4۲V4ݲW4m4n4t4d}4e~4g!5i"5k#5n$5p%5q&5t'5x(5.5/50515253545ij55ų65ȳ75˳85̳95γ:5г;5Գ<5ճ=5׳>5ٳ?5۳@5ݳA5B5C5D5E5F5G5H5 I5(J5)K5+L54M5PN5QO5TP5XQ5`R5aS5cT5eU5lV5W5X5Y5Z5[5\5]5^5_5`5Ĵa5ȴb5дc5մd5ܴe5ݴf5g5h5i5j5k5l5m5n5o5p5q5r5s5t50{51|54}58~5P)6T*6061626364656>6ĵ?6صE6F6G6H6I6J6%K6,L64M6HN6dO6hP6Q6R6S6T6U6V6W6ԶX6Y6Z6[6\6]6^6(_6)`6,a6/b60c68d69e6;f6Dg6Hh6Li6Tj6Uk6`l6dm6hn6po6qp6sq6ur6|s6}t6u6v6#7$7*7+7,7Ƿ-7ɷ.7/7071727 ;7<7=7>7?7@7$A7%B7(C7,D7@J7DK7QL7SM7\N7]O7`P7dQ7lR7mS7oT7qU7xV7|W7X7Y7Z7[7\7]7^7ø_7Ÿ`7̸a7иb7Ըc7ݸd7߸e7f7g7h7i7j7k7l7m7n7o7p7 q78ٹ?8۹@8ݹA8޹B8G8H8O8P8Q8R88S89T89?9@9A9B9C9D9E9F9G9ĻH9ȻI9лJ9ӻK9L9M9N9O9P9Q9$c9%d9'e9)f9-g90h91i94j98k9Iq9Lr9Ms9Pt9]u9v9w9x9y9z9{9|9}9~9!:":#:$:%:&:':-:.:/:ļ0:ռ5:ؼ6:ܼ7:<:=:>:?: @:A:B:$C:,D:@E:HF:IG:LH:PI:XJ:YK:dL:hM:N:O:P:U:V:W:X:Y:Z:[:\:]:^:Խ_:ս`:ؽa:ܽb:c:d:e:f:g:h:i: j: k:l:m:n:o:p:Dq:Er:Hs:Lt:Nu:Tv:Uw:`|:a}:d~:h!;j";+;,;2;3;4;о5;Ѿ6;Ծ7;׾8;ؾ9;:;>;?;@; A;@G;AH;DI;HJ;PK;QL;UM;N;O;ſP;̿Q;ͿR;пS;ԿT;ܿU;߿V;W;<@?=?=@=A=B=C=D=E=F=G=M=R=S= T= U= V=Z=[=$\=%]=(^=)_=E`=ha=ib=lc=pd=re=xf=yg=|h=}i=j=k=l=m=n=o=p=q=r=s=t=u=v=w=x=y=z={=$|=,}=0~=4!><">=#>H$>d%>e&>h'>l(>t)>u*>y+>,>->.>/>0>1>2>3>4>5>6> :>;><>=>(>>)?>,@>0A>8B>9C>;D>=E>dX>hY>|_>}`>a>b>c>d>e>f>g>h>i>j>k>l>m>n>o>#?$?%?&?'?(?-?.?/? :?;?$@?%A?(B?@M?AN?DO?HP?\V?]W?`X?lY?oZ?q[?x\?y]?|^?_?`?a?b?c?d?e?f?g?h?i?j?k?l?m?n?r?s?t?u?v?w?x?y?z?{?|?}?~?!@"@#@$@%@&@'@(@)@ *@+@,@-@.@ /@!0@$1@(2@03@14@35@56@77@<8@=9@@:@D;@J<@L=@M>@\H@`I@hJ@kK@tL@uM@xN@Y@Z@[@g@h@i@j@p@q@r@s@t@u@v@w@x@y@z@{@|@}@ ~@!A"A#A$A%A&A'A (A$)A,*A-+A/,A1-A8.ABT?BhEB}FBGBHBIBJBKBLBMBNBOBPBQBRBSBTBUBVBWBXBYBZB [B!\BA]BH^BI_BL`BPaBXbBYcB]dBdeBxfBygBhBiBjBkBlBmB nB oBpBqBrBsB!tB"uB,yB.zB0{BD$CE%CH&CL'C`-Cd.Cf/Ch0Cp1Cu2C3C4C5C6CC?C@CACBCCCDCECFCGCHCICJC KC LCMCNCOCPCQC$RC(SC,TC9UC\VC`WCdXClYCmZCo[Cq\Cx]C^C_C`CaCbCcCdCeCfCgChCiCjCkClCmCnCoCpCqCrCsC tCuCvC wC!xC$yC(zC0{C1|C3}C5~CX!DY"D\#Dh'Di(Dk)Dm*Dt+Du,Dx-D|.D/D0D1D2D3D4D5D6DD?D@DADBDCDIDJDKDLDMDNDODPDQD RD$SD8YDTZDU[DX\D\]Dd^De_Dg`DiaDpbDqcDtdDxeDfDgDhDiDjDkDlDmDnDoDpDqDrDsDtDuDvDwDxDyD-zD4{D5|D8}D<~DD!EE"EG#EI$EP%ET&EX'E`(El)Em*Ep+Et,E|-E}.E/E0E1E2E3E4E5E6E7E8E9E:E;EF?F@FAFBFCFHFIF%OF(PF)QF,RF0SFDYFEZF|[F}\F]F^FdFeFfFgFhFiFjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzF{F|F}F~F!G"G@#GD$G\%G`&Gd'Gm(Go)Gx*Gy+G|,G-G.G/G0G1G2G3G4G5G6G7G8G9G:G;GG?G@GAGBG CGDGEGFGH?H@HAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXH YH(ZH)[H+\H-]H4^H5_H8`H?@ABCDEFGHIJKLMNOPQRSTUVWXY000 % &0 "%<"<    0000 0 0 0 0 0000"`"d"e""4 2 3!!+&B&@" "#"""a"R ;&&%%%%%%%%%%%!!!!!0"j"k""=""5"+","" """""*")"'"(!!""^".""! 0%%%%&d&`&a&e&g&c"%%%%%%%%%%%&h&&&& !!!!!!&m&i&j&l22!3!"33!!  !"#$%&'()*+,-./0123456789:;=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]1112131415161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1w1x1y1z1{1|1}1~1111111111111111!p!q!r!s!t!u!v!w!x!y!`!a!b!c!d!e!f!g!h!i%%% %%%%%,%$%4%<%%%%%%%#%3%+%;%K% %/%(%7%?%%0%%%8%B%%%%%%%% %%%!%"%&%'%)%*%-%.%1%2%5%6%9%:%=%>%@%A%C%D%E%F%G%H%I%J333!3333333333333333333333333333333333333333333333333333!&3333333333333333333333&2?ARfJ2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{$$$$$$$$$$$$$$$$$$$$$$$$$$$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n!S!T![!\!]!^'138@BSgKI2222222222 2 2 2 2 22222222222222$$$$$$$$$$$$$$$$$$$$$$$$$$$t$u$v$w$x$y$z${$|$}$~$$$$ t  0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 !"#$%&'()*+,-./012345Q6789:;<=>?@ABCDEFGHIJKLMNO  $,-/0189<@KMTX\pqtwxzĬȬ̬լ׬  ),-458DEGIMOPTXaclĻȻлӻ $%')-0148@ACDEILMP]ļͼϼмѼռؼܼ $,@HILPXYdhԽսؽܽ DEHLNTUWYZ[`adhjpqstu{|}оѾԾ׾ؾ @ADHPQUſ̿ͿпԿܿ߿DEHLTUWXY`dfhpų̴̵̸̘̙̜̠̩̫̬̭̼ $(,9\`dlmoqx͈͔͕ͤͥͧͩ͘͜Ͱ  !$(0135XY\_`ahikmtux|΄΅·ΉΐΑΔΘΠΡΣΤΥάέ $,-/018TUX\degipqtxπυόϡϨϰ-458ahe9iouvv{U[WQ|P(S\E]bcnddn py[ݎ}EN~NPe]^aiWqTGu+N^Pgph@Q RRjwR`/PHacdhpLt/t{Pʼnܙ(R.`]bOQIS!X^fm8prs{P[SfckNVPXJX`*a'biЛA[}_NPTU[ ]]e*eNh!jKrvw}^NߏNʙUNNEN]NOQwRS@SSTVWuW[]^abeQggikPkklBnpxrstwwzv}  ߈b3dҚEןW \@ʗTzَ͐X\Hcz[_zyzP&R8RSwWbcrk mw7SsWhvg:jopm̙Kfwkx<SW-YNcisxEzz|us5RWGuG{`̒jXQKRKRbhiuPRRaeh9it~{K뉲9љI NYdfjt4yy~_ &O S`%bqlr}}fNQbw܀OOQvQUVhW;WWYYGY[\]]^~_beeggg^hhj_k:l#l}lmst&t*ttuxuxxyAyGyHyz{}}-OHw!$Qe}OvT bhTUQ: Za bbfqV cOczSW!gi`ns"u7#$%} &'rVZ()*+,NC-QgYHg.Ys^tdy_`lbc{[[R/Yt_)`012tY3456789:;<=>?@ABCoDE`FGfHI\?JKLMNOPQZ%g{}RSTUVWXY\r-RL]Pde,ko|C~͉dbɁ؈^gmjrttoO] _ QcueNPQiQhj|||oҏOQ7RTB^anb>ejoy*܈#bjRfkwpy+bBabe#o#qIt}o&#JQRRm pȈ^eko|>suNO6V_\]`s{-΀F4HaOoyR`ddjo^prv\2ouxy}ɓX_g'p't|`~Q!p(rbxʌŒڌNP[^eqvBwJ|'XZA\bjmov;}/~78KRegimAnpt t`uYv$xk,^Qmb.xOP+]m}*_aDhaRҀQQi^z}uOR)STU\e`gNhmlrrttbu|lyψ̑ЖTo~qtWgmt3x,z{ |ditjuxx虬T[^Uo NSMZ)]_Nabc=fifno+pcw,;E;Ubg+l jzNY__g}T+WYZ[f'ghkqdu㐁EL@[_lsvv߄ QQMQRhlww }}bnQT T}ffi'nvw‡iOQRY^=aUdxdyfgj!kkr_ratAw8wۀ(g(lrgvwfzFklY"g&SoXY^cf4gsn:s+zׂד(R]aab bdeiYkfkq!su]~Fj'aXPRT;UOelv} } ^RlriTsZ\>]K_L_g*hicneef ginx}!+*2P OcW_bcgonCqvÀ̀ڈ)MjO/Op^gh"v}v~D^aj qiqujd~ACO{OpQ^hl>lNlr{ălt:PRXdjtvVx9eS^_R%wINPQu\[^wff:ghpuuyzݏ' OX!X1[fnkemnzo}su+܉\OPSS\[_g yy/9;g,NvOYI\\\cghpqt+~+"ҜN NOPRVRoT&TWY+Zf[Z[u[^fbvewemnnr6{&|?6PQ@tܖDٜSRT)VtXYTYn_abnfl~qv||}gO[__b])g hx|~ClNPSS*SQYZb^`abIbyegikkkklht5uxxyy|}ဥ>ƒ芹l^۟;V[*_lejkm\opr]sӘ;al7XNMNNNO:Oy@y`y{}}r цLjߊP^܍fߞRJigjPR*\qeclUsu#u{x0Nwdkq^N kgIhnkcoN PPQUFUV[@\\^8^^^`hQjanXr=r@rvye{ԈsaޗX^tUlza}"rrruu%m{XX]^^_`UbceMfffhhrt^{n}n}r͟ YYm^-`ffsglPmo_wxƑ˓+NPQHU[ [bGe~en2q}ttDttvly}~Uz9ux%MSh\QiTlm)n+ ;-gRafk~ ]emqnWY[`'`bff_s)svw{lVreNRkrmz{9}0oSV/XQ[\\]b@cdf-hlmnppqu&uuv{{|+} }9,m4 a7O\lg_m|~[k]d \s[`g~mފ R7ppQxpOSUVWXZ[\\^%ab bKcde6exj9kl4mo1qrsxttv&wayzWz|}}~a)1څꈖ8Bl֗ӛSX~Y[p[moZqt!t]__`BehiojSkm5msvw{M}#@cbđb Se]]']it_hob҉6rNNXPRSGbf~i^OSV6YZ\8\N\M^_`Cef/fBggswy:ń͉fiUzW[_`obi kn\q{҇UXߘO8OOT{Z [aT3UXbXYgZ[`aeVefdhlZopqsR{}2\KlsDs:ntevzi~ Q@Xdtuvp͙Tn&tzzهxZI[[himcstt,x}UL.f_egljsP-ZkjwY]l]s%uOPQX/Y-YY[]bdddfjHqtdzz~G~^p‡ YÐRa~k2mt~%OPQRWX[^aBimngnqtbu(u,s8Ɏ NOQPvQ*SSS[[\$aaer[st@vyPyy}Ն^GꖅR_gef1h/q\z6 NjRkoqSK1NqQCSTWWWZZ[`(a?clm9nrnr0s?tWшE`ƖbXg^OMPIPSqW YZ\ apfn-r2tK}Äf?_[U˛ONsOQQjU/U[z[^|^}^``aa ce8g ggiaiblm'n8os6s7t\u1vR}8Պۊ0BJ>zIɓnX kӀQAYk\9odsגۀbp}hW`iaGkNYTm-pcl㐑QaɁOPQ[aadikuwdcpNNO Y7Y]__[`!r>supuy 3Q茽 p7vNNRSpTVY[__nn}j5mwNOZO~Xen8NXYY`AzOQeSDNRi[UNR:TYY[P[W[\`caHnpqnstux}+(ɊǖO\RVef(p|pr5}Lr[qhkozv\fo[{|*6NNS X4XXYl\^3^_5cfgVjjk o?rFsPtz|x߁烊l#ψݍwQTW([bMgPh=hn=np}~! KNr-{͓OGONQ2TY^bguinjlnrs*u{}5W[Ο_RT Z[dXeunrvzM{|M~>߃{+ʍd_iOCOzPQhQxRMRjXaX|Y`\\U^`b0hkloqNt u0u8uQvr{L{{{~n>I?"+ZkRb*bmYvdz{}vS`\^o8p|cdzvNNNP\PuTHY[^@^^_`c:e?etefvfxgihjkcl@mmnn^ppssu:w[xyz z}|}Gꌞ-Jؒf̓ V\R6RU|X$^_`choym{,ͅDd=LJOQFQRV2__kcdefAffghhioonqgqr*tw:yVyZyz z||}D~pT m;՜e|[X\ SRbsP'[_`akhmt.z.}B}~1k*5~OPWP]^c+jN;OOOPZY݀TjThUYO[]^f]g1gh*lm2nJopsu|L}},}ۊ;p31NRDz|OQQW[\fYj=mZnoq uoz"!u˙N-NFS}jiklAzXafbpuu~RINKSTW0W@_ccdoe/efzggkbl`lo,wx%yIyW}󂝂rvzz7~TwUUXuc/d"fIfKhmikm%nsthtu[uvwwy~ ~/:ю돰2csOSYZ^hNtuyz̏egWoW}ݏ/_aoNOPSU]o]k!kdx{IʐncId>w@z/jdoqttz|~|~ }LR9[dg-}.PSXyaXaYaezًP P!RuU1Z<^_pa4e^f f6fino2sv!z9YքPW[[_icx&}܅!ǑQg{VQY`UPRT\:a}bbdenv `_NSCUY)]dlmszw!QTU_do}M5P\lmuw|=|dyXY^cwrRuwk܌^ftm}˗QRCfmn}.^RRTabbhiiZj5pq&x]yyyz xՃIIbOVqwׇ[_gQSXZ[`ad`~=p%dP]gXbciixjnkvy˂)ύKۚ6 Nu\y]z{Q{~.ĎYtf%i?tCQg.QE_l]w`ST9V4Z6\1pZ퍣_PtNS`n,\dOP$U\^_`ehlmquuvazzI}}n􆩏əRRGRŘ퉪NgoO[glmxtx'ݓ|yz1_NTU>XY`bSbg6iU5@P,SSUDW|bXdfkgoot"t88TQVWf_HakNpXp}Yj+cw=XTd-i[^noiQLSY*` aKklpl{΂ԍƐdodeQNTWa_hvu{R}qXí*9PxYWYb*a]ryWaZF]bddgwlm>r,t6x4wۘR$WBgrHt㌩*QkScLOiU`eWlmrLrz_mopaOPObArG{}MWj^sg UT [^c^_ e=[OHSS STTW^`bbcUlmfux2ށ/ބa ^EffprOR}_jaSgSjotyhhyǘĚCTziSJ_|buvBS9_<_lsubu{FNO\c>myrϘ0NQDRW_blnppPpqstiJaQn_W`agfYJNNNT|XXY}\_'b6bHf fgkmimnVnooop]rt%tZtvy\|~ႦkN_twje`bwZZfmn>t?B_`{T_l^lm*p}y ;ST[j:pkuuyyqAt de+xxzkN8UYP[^{`ckafehSnqet}i%m;ns>AQ^L_`M`a0aLfCfDiln_nobqLtv{|'RWQS/V^_`b`affgjmoppsj~j4ԊRsr[jkTV[]eHefhmmr;uMOPSTT?@ABCDEFGHIJKLMNOPQRSTUVWXY000% & 0 %"<<"    000 0 0 0 0 00000`"d"e""4"2 3 !+!B&@& ""#""a"R"; &&%%%%%%%%%%%!!!!!0j"k""=""5"+","" """""*")"'"("!!""^.""" !0 %%%%d&`&a&e&g&c&"%%%%%%%%%%%h&&&&& ! !!!!!m&i&j&l&22!3"!33!!  !"#$%&'()*+,-./0123456789:;=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]112131415161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1w1x1y1z1{1|1}1~11111111111111111p!q!r!s!t!u!v!w!x!y!`!a!b!c!d!e!f!g!h!i!%% %%%%%,%$%4%<%%%%%%%#%3%+%;%K% %/%(%7%?%%0%%%8%B%%%%%%%% %%%!%"%&%'%)%*%-%.%1%2%5%6%9%:%=%>%@%A%C%D%E%F%G%H%I%J%333!3333333333333333333333333333333333333333333333333333&!3333333333333333333333&2?ARfJ`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{2$$$$$$$$$$$$$$$$$$$$$$$$$$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$S!T![!\!]!^!'138@BSgKI222222222 2 2 2 2 222222222222222$$$$$$$$$$$$$$$$$$$$$$$$$$t$u$v$w$x$y$z${$|$}$~$$$$$t  A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 !"#$%&'()*+,-./012345Q6789:;<=>?@ABCDEFGHIJKLMNO  $,-/0189<@KMTX\pqtwxzĬȬ̬լ׬  ),-458DEGIMOPTXaclĻȻлӻ $%')-0148@ACDEILMP]ļͼϼмѼռؼܼ $,@HILPXYdhԽսؽܽ DEHLNTUWYZ[`adhjpqstu{|}оѾԾ׾ؾ @ADHPQUſ̿ͿпԿܿ߿DEHLTUWXY`dfhpų̴̵̸̘̙̜̠̩̫̬̭̼ $(,9\`dlmoqx͈͔͕ͤͥͧͩ͘͜Ͱ  !$(0135XY\_`ahikmtux|΄΅·ΉΐΑΔΘΠΡΣΤΥάέ $,-/018TUX\degipqtxπυόϡϨϰ-458aha9eiouvv{˄U[QW|(PSE\]bncdd np[yݍ}E~NNeP]^aWiqTGu+^NPpg@h QRRjwԞR/`HPacdkLp/tt{PŃܕ(.R]`bOIQ!SX^f8mprsP{[fSckVNPJXX*`'abiA[}_NPTU []]*eNe!hKjrvw^}N߆NʐUNEN]NNOwQR@SSSTVuWW[]^abQeggiPkkkBlnxprstwwvz}  ߂b3dҙEם W@\ʃTzو͎XH\cz[_yzz&P8RRwSWbrc km7wSWshvՕ:gjpom̎Kwfxk<S-WNYcisExzz|us5RGWGu`{̃XjKQKRRbhuiPRRae9hi~tK{냲9яI NYdfj4tyy~_ & OS%`qbrl}f}NbQwOOvQQUhV;WWWYGYY[\]]~^_beegg^ghh_j:k#l}llms&t*tttxuuxxAyGyHyzy{}}-OHw!$Qe}vO TbThёU:Q Za bbfVq OczcWS!g`isn"7u#$% }&'rVZ()*+,CN-gQHYg.sYt^dy_l`b{c[[R/tY)_`012Yt345678љ9:;<=>?@ABCoDE`FGfHI?\JKLMNOPQZ%{g}RSTUVWXY<\l?SnY69NNFOUWXV_eejkMnwz|}ˆ2[dozsuTVUMWadfm[nmoouCANJZlSuT{]UXXXb^bdhvu|NWnW'Y \\6^_4bds۞[_`PR0RW5XWX\`\\]^_`ccdChhjm!nnoqvywy;zHSMvܗkpXrrhscwy{~X`feeflqqZmNzNQQR TaqgPhhm|ouwzc\Qe\gguzsZF-o\Ao _]Yjq{vI{'0Ua[iv?\mpsa}=]j^NuSkk>pr-LRP]d,ekoC|~ͅdb؁^gjmrtotސO ]_ QceuNPiQQhj|||oҊϑO7QRBT^na>bejo*y܅#bjΞRfwkp+ybBab#e#oIqt}o&#JQRR mpˆ^eko>|usN6OV_\]`s-{F4HaOoyR`ddj^oprv\2ouxy}Ƀ֊X_'g'pt`|~!Q(pbrxŒڌNP[^eqBvwJ|'XAZb\jmo;v/}7~8KRegiAmnp t`tYu$vkx,^mQ.bxO+P]m}*_DahaRQQ^iz}uO)RSTUe\`Nghlmrrttbul|yψ̑БɛT~oqtWgm3t,xz {|idjtuxxT[U^ oNMS)Z]N_ba=ciffn+ocpw,;E;Ub+gl jzNY__g}T+WYZ['fghkdqu㌁EL@_[lsvv QMQQRhlw w}}bnQ T}Tff'invw„iOQRY=^Uaxdydfg!jkk_rarAt8ww((glgrvfwFzkl"Y&goSXY^c4fsg:n+szׂ(R]aa bbdeYifkk!qs]uF~j'aX؞PR;TOUevl } }^RlirsTZ>\K]L__*ghcieee fginx!}+*2 POcW_bcogCnqv̀ڀ)Mj/OpO^g"h}v~vDa^ jiqqjudA~CܘOO{pQ^h>lNllr{l:tPRXdjtVvx9e^S_%RwINPuQ[\w^f:fghpuuyz' O!X1X[nfekmzn}os+u܈\OPS\S[_ gyy/9;,gvNOIY\\\gchpq+t+~"Ғ NNOPVRoR&TTW+YfZZ[u[[^fvbweenmn6r&{?|6PQ@tܑDٙSR)TtVXTYnY_anbf~lqv||}g[O__b)] gh|xC~lNPS*SQSYbZ^`aIbybegikkkklh5tuxxyy|}>船l^ۘ;V*[l_ejk\mop]rsӌ;a7lXMNNNN:Oy@y`yy{}r} фdž߈P^܌fߙJRigjP*Rq\ceUls#uu{x0wNdk^q NkIghnkco NPPQFUUV@[\\8^^^^`QhajXn=r@rrvey{saތ^XtUlaz"}rrru%um{XX]^^_U`bcMefffhhr^tn{n}}r͞ YmY-^`fsfgPlm_owxƄˑ+NPHQU [[Gb~ee2n}qtDtttlvy}U~z9ux%MhSQ\Til)m+n ;-gaRfk~ ]emqnWY['``bf_f)ssvwl{VreNRrkmz9{0}oS/VQX[\\]@bcd-fhlmnppq&uuuv{{+| }9},m4 a7Ol\_gm|~k[] d\ᘇs[`~gm 7RpQpxpבOSUVWXZ[\\%^a bKbcd6exe9jk4lm1oqrxstt&vawyWzz|}}a~)1ڄꅖ8Bl֖ӚS~XYp[[mZoq!tt]__B`ehoiSjk5mmsvwM{}#@cbĊ bSe]']i]_thob6rNXNPRGSbfi~^OS6VYZ8\N\M\^_C`e/fBfggsw:ÿ́fiUzW[_o`b ik\nq{UXߘ8OOO{T Z[T3TUbXXgYZ[`aVeedfhZlopqRs}{2K\lDss:netviz~ @QXdtupv͖T&ntzzنxIZ[[hicmst,tx}UL.f_egjls-PZjkwYl]]%sOuPQ/X-YYY[]bdddfHjqdtzzG~^~p YR~a2ktm~%OPQRWX[^Baimgnnqbt(u,us8Ʉ ޓNQOvP*QSSS[[$\aae[rs@tvPyyy}Յ^GꑅRg_e1f/h\q6z NRjkoqSK1NqĖCQSTWWWZZ[(`?acl9mrnn0r?sWtтE`bXg^MOIPPqS WYZ \paf-n2rKt}Àf?_[U˗OsNOQjQ/UUz[[|^}^^``a ac8e gggaibil'm8no6s7s\t1uRv}8Ոۊ0BJ>zIɑn XkAQkY9\dosbph}Wi`GakYNTm-pclQaOPQ[aadikuwdcpNN O7YY]_[_!`>rspuuy 3Q 7pvNNRpSTVY[__nnj}5mwNZO~OXen8NXYYA`zOÌeQDSNiRU[N:RTYYP[W[\[c`Hanpnqstux+}(Ʌnj̖\ORVe(f|pp5r}Lrq[hkzov\f[o{*|6ܖNN S4XXXlY\3^^5_cfVgjj k?oFrPstz|x߁灊l#υ݈wQT(W[MbPg=hh=nn}p!~ KN-r{͊GONO2QTY^bugnijlnr*su{5}W[Ζ_R TZ[XduenrvMz{M|>~{+ʌd_iѓCOzOPhQxQMRjRaX|X`Y\U\^`0bhkloNq t0u8uQurvL{{{{~n>I?"+ZkR*bbYmdvz{v}`S\^8op|ޞczdvNNN\PuPHTY[@^^^_`:c?eteevfxfghijck@lmmn^nppss:u[wxy z}z|}Gꊞ-Jؑf̒ V\6RR|U$X^_`chomy,{́Dd=LJOFQQR2V_k_cdeAfffghhionogqq*rt:wVyZyy zz||D}p~T m;Ֆe|ÓX[ \RSbs'P[_`kahm.t.zB}}1~k*5~POPW]^+cj;NOOOZPYĀjThTUOY[]^]f1gg*hl2mJnopsuL|},}}ۆ;p31NRDЙz|OQQW[\Yf=jZmno qouz"!u˖-NNF͑}SjkiAlzXafbpuuR~IKNST0W@W_ccod/eezfggbk`ll,ow%xIyWy}󁝂rvz7zT~wUUuX/c"dIfKfmhik%mnshtt[uuvwwy ~~/:ь뎰2csOSYZ^Nhtuyz̍폟egWWo}/Ɩ_aoNOPSUo]]!kdkx{IʎnIc>d@wz/jdoqttz|~|~ }L9R[d-g.}PSyXXaYaaez P!PuR1UUXY`Sbb6gUi5@ݙ,PSSDU|WXbdkfgoo"t8t8QTVfWH_aNkXpp}jY+cw=TX-di[^oniLQS*Y `Kakpll{΀ԂƍdodeNQTW_avhuR{q}Xi*9xPWYYb*]ayr֕aWFZ]bddwgl>m,r6t4xwۍ$RBWgHrt*kQSLciOU`WelmLrrzm_opaOOPAbGr{}MjWs^g U T[c^^ _e=[HOS SSTTW^`bbUclfmu2xހ/ނa E^ffprO}Rj_SaSgjothyhyǘĘCTzSiJ|_buvB9S<__lsbuuF{ON< NUOSY^0flUtwfPXx[P[h``eWl"oopUPӗrRDQ+TTcUUjm}fwyTTv䆤ԕ\N OYZ]R`bmgAhl/n8* NUPTWZYi[[awiwm#pr犂홸R8hPx^OgGLNTVs WSVX[1aj{sҎGkWUYrkiO\&_a[flpsss)wMwC}b}#~7R IoQ[tz@ZOTS>Y\>cymrϒ0NDQRWb_lnpPppqsitJanQW_`gafYJNNN|TXX}Y\'_6bHb fgfkimmVnnooo]pr%tZttv\y|~ဦkN_twje`bwZZfm>n?tB_`{T_^ll*mp}y ;ST[:jkpuuyyqAt d+exxkz8NUPY[{^`cakefShneqt}i%;mn>sAʕQL^_M``0aLaCfDfil_nnboLqtv{'|RWQÞ/SV^_b``affgjmoppjsj~4ԆČRrs[kjTV][Heefhmm;ruMOPST!>~ ?!?~ y@!@~ A!A~ 5B!B~ C!C~ D!D~ OE!E~ F!F~ G!G~ iH!H~ J!J~%K!K~L!L~M!M~?N!N~O!O~P!P~YQ!Q~R!R~S!S~sT!T~U!U~/V!V~W!W~X!X~IY!Y~Z!Z~[![~c\!\~]!]~^!^~}_!_~`!`~9a!a~b!b~c!c~Sd!d~e!e~f!f~mg!g~h!h~)i!i~j!j~k!k~Cl!l~m!m~n!n~]o!o~p!p~q!q~wr!r~s!s~3t!t~u!u~v!v~Mw!w~x!x~ y!y~gz!z~{!{~ #|!|~ }!}~ 000 % &0 "%<"<    0000 0 0 0 0 0000"`"d"e""4 2 3!!+&B&@" "#"""a"R ;&&%%%%%%%%%%%!!!!!0"j"k""=""5"+","" """""*")"'"(!!""^".""! 0%%%%&d&`&a&e&g&c"%%%%%%%%%%%&h&&&& !!!!!!&m&i&j&l22!3!"33!!  !"#$%&'()*+,-./0123456789:;=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]1112131415161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1w1x1y1z1{1|1}1~1111111111111111!p!q!r!s!t!u!v!w!x!y!`!a!b!c!d!e!f!g!h!i%%% %%%%%,%$%4%<%%%%%%%#%3%+%;%K% %/%(%7%?%%0%%%8%B%%%%%%%% %%%!%"%&%'%)%*%-%.%1%2%5%6%9%:%=%>%@%A%C%D%E%F%G%H%I%J333!3333333333333333333333333333333333333333333333333333!&3333333333333333333333&2?ARfJ2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{$$$$$$$$$$$$$$$$$$$$$$$$$$$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n!S!T![!\!]!^'138@BSgKI2222222222 2 2 2 2 22222222222222$$$$$$$$$$$$$$$$$$$$$$$$$$$t$u$v$w$x$y$z${$|$}$~$$$$ t  0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 !"#$%&'()*+,-./012345Q6789:;<=>?@ABCDEFGHIJKLMNO  $,-/0189<@KMTX\pqtwxzĬȬ̬լ׬  ),-458DEGIMOPTXaclĻȻлӻ $%')-0148@ACDEILMP]ļͼϼмѼռؼܼ $,@HILPXYdhԽսؽܽ DEHLNTUWYZ[`adhjpqstu{|}оѾԾ׾ؾ @ADHPQUſ̿ͿпԿܿ߿DEHLTUWXY`dfhpų̴̵̸̘̙̜̠̩̫̬̭̼ $(,9\`dlmoqx͈͔͕ͤͥͧͩ͘͜Ͱ  !$(0135XY\_`ahikmtux|΄΅·ΉΐΑΔΘΠΡΣΤΥάέ $,-/018TUX\degipqtxπυόϡϨϰ-458ahe9iouvv{U[WQ|P(S\E]bcnddn py[ݎ}EN~NPe]^aiWqTGu+N^Pgph@Q RRjwR`/PHacdhpLt/t{Pʼnܙ(R.`]bOQIS!X^fm8prs{P[SfckNVPXJX`*a'biЛA[}_NPTU[ ]]e*eNh!jKrvw}^NߏNʙUNNEN]NOQwRS@SSTVWuW[]^abeQggikPkklBnpxrstwwzv}  ߈b3dҚEןW \@ʗTzَ͐X\Hcz[_zyzP&R8RSwWbcrk mw7SsWhvg:jopm̙Kfwkx<SW-YNcisxEzz|us5RWGuG{`̒jXQKRKRbhiuPRRaeh9it~{K뉲9љI NYdfjt4yy~_ &O S`%bqlr}}fNQbw܀OOQvQUVhW;WWYYGY[\]]^~_beeggg^hhj_k:l#l}lmst&t*ttuxuxxyAyGyHyz{}}-OHw!$Qe}OvT bhTUQ: Za bbfqV cOczSW!gi`ns"u7#$%} &'rVZ()*+,NC-QgYHg.Ys^tdy_`lbc{[[R/Yt_)`012tY3456789:;<=>?@ABCoDE`FGfHI\?JKLMNOPQZ%g{}RSTUVWXY\r-RL]Pde,ko|C~͉dbɁ؈^gmjrttoO] _ QcueNPQiQhj|||oҏOQ7RTB^anb>ejoy*܈#bjRfkwpy+bBabe#o#qIt}o&#JQRRm pȈ^eko|>suNO6V_\]`s{-΀F4HaOoyR`ddjo^prv\2ouxy}ɓX_g'p't|`~Q!p(rbxʌŒڌNP[^eqvBwJ|'XZA\bjmov;}/~78KRegimAnpt t`uYv$xk,^Qmb.xOP+]m}*_aDhaRҀQQi^z}uOR)STU\e`gNhmlrrttbu|lyψ̑ЖTo~qtWgmt3x,z{ |ditjuxx虬T[^Uo NSMZ)]_Nabc=fifno+pcw,;E;Ubg+l jzNY__g}T+WYZ[f'ghkqdu㐁EL@[_lsvv߄ QQMQRhlww }}bnŅQT T}ffi'nvw‡iOQRY^=aUdxdyfgj!kkr_ratAw8wۀ(g(lrgvwfzFklY"g&SoXY^cf4gsn:s+zׂד(R]aab bdeiYkfkq!su]~Fj'aXPRT;UOelv} } ^RlriTsZ\>]K_L_g*hicneef ginx}!+*2P OcW_bcgonCqvÀ̀ڈ)MjO/Op^gh"v}v~D^aj qiqujd~ACO{OpQ^hl>lNlr{ălt:PRXdjtvVx9eS^_R%wINPQu\[^wff:ghpuuyzݏ' OX!X1[fnkemnzo}su+܉\OPSS\[_g yy/9;g,NvOYI\\\cghpqt+~+"ҜN NOPRVRoT&TWY+Zf[Z[u[^fbvewemnnr6{&|?6PQ@tܖDٜSRT)VtXYTYn_abnfl~qv||}gO[__b])g hx|~ClNPSS*SQYZb^`abIbyegikkkklht5uxxyy|}ဥ>ƒ芹l^۟;V[*_lejkm\opr]sӘ;al7XNMNNNO:Oy@y`y{}}r цLjߊP^܍fߞRJigjPR*\qeclUsu#u{x0Nwdkq^N kgIhnkcoN PPQUFUV[@\\^8^^^`hQjanXr=r@rvye{ԈsaޗX^tUlza}"rrruu%m{XX]^^_`UbceMfffhhrt^{n}n}r͟ YYm^-`ffsglPmo_wxƑ˓+NPQHU[ [bGe~en2q}ttDttvly}~Uz9ux%MSh\QiTlm)n+ ;-gRafk~ ]emqnWY[`'`bff_s)svw{lVreNRkrmz{9}0oSV/XQ[\\]b@cdf-hlmnppqu&uuv{{|+} }9,m4 a7O\lg_m|~[k]d \s[`g~mފ R7ppQxpOSUVWXZ[\\^%ab bKcde6exj9kl4mo1qrsxttv&wayzWz|}}~a)1څꈖ8Bl֗ӛSX~Y[p[moZqt!t]__`BehiojSkm5msvw{M}#@cbđb Se]]']it_hob҉6rNNXPRSGbf~i^OSV6YZ\8\N\M^_`Cef/fBggswy:ń͉fiUzW[_`obi kn\q{҇UXߘO8OOT{Z [aT3UXbXYgZ[`aeVefdhlZopqsR{}2\KlsDs:ntevzi~ Q@Xdtuvp͙Tn&tzzهxZI[[himcstt,x}UL.f_egljsP-ZkjwY]l]s%uOPQX/Y-YY[]bdddfjHqtdzz~G~^p‡ YÐRa~k2mt~%OPQRWX[^aBimngnqtbu(u,s8Ɏ NOQPvQ*SSS[[\$aaer[st@vyPyy}Ն^GꖅR_gef1h/q\z6 NjRkoqSK1NqQCSTWWWZZ[`(a?clm9nrnr0s?tWшE`ƖbXg^OMPIPSqW YZ\ apfn-r2tK}Äf?_[U˛ONsOQQjU/U[z[^|^}^``aa ce8g ggiaiblm'n8os6s7t\u1vR}8Պۊ0BJ>zIɓnX kӀQAYk\9odsגۀbp}hW`iaGkNYTm-pcl㐑QaɁOPQ[aadikuwdcpNNO Y7Y]__[`!r>supuy 3Q茽 p7vNNRSpTVY[__nn}j5mwNOZO~Xen8NXYY`AzOQeSDNRi[UNR:TYY[P[W[\`caHnpqnstux}+(ɊǖO\RVef(p|pr5}Lr[qhkozv\fo[{|*6NNS X4XXYl\^3^_5cfgVjjk o?rFsPtz|x߁烊l#ψݍwQTW([bMgPh=hn=np}~! KNr-{͓OGONQ2TY^bguinjlnrs*u{}5W[Ο_RT Z[dXeunrvzM{|M~>߃{+ʍd_iOCOzPQhQxRMRjXaX|Y`\\U^`b0hkloqNt u0u8uQvr{L{{{~n>I?"+ZkRb*bmYvdz{}vS`\^o8p|cdzvNNNP\PuTHY[^@^^_`c:e?etefvfxgihjkcl@mmnn^ppssu:w[xyz z}|}Gꌞ-Jؒf̓ V\R6RU|X$^_`choym{,ͅDd=LJOQFQRV2__kcdefAffghhioonqgqr*tw:yVyZyz z||}D~pT m;՜e|[X\ SRbsP'[_`akhmt.z.}B}~1k*5~OPWP]^c+jN;OOOPZY݀TjThUYO[]^f]g1gh*lm2nJopsu|L}},}ۊ;p31NRDz|OQQW[\fYj=mZnoq uoz"!u˙N-NFS}jiklAzXafbpuu~RINKSTW0W@_ccdoe/efzggkbl`lo,wx%yIyW}󂝂rvzz7~TwUUXuc/d"fIfKhmikm%nsthtu[uvwwy~ ~/:ю돰2csOSYZ^hNtuyz̏egWoW}ݏ/_aoNOPSU]o]k!kdx{IʐncId>w@z/jdoqttz|~|~ }LR9[dg-}.PSXyaXaYaezًP P!RuU1Z<^_pa4e^f f6fino2sv!z9YքPW[[_icx&}܅!ǑQg{VQY`UPRT\:a}bbdenv `_NSCUY)]dlmszw!QTU_do}M5P\lmuw|=|dyXY^cwrRuwk܌^ftm}˗QRCfmn}.^RRTabbhiiZj5pq&x]yyyz xՃIIbOVqwׇ[_gQSXZ[`ad`~=p%dP]gXbciixjnkvy˂)ύKۚ6 Nu\y]z{Q{~.ĎYtf%i?tCQg.QE_l]w`ST9V4Z6\1pZ퍣_PtNS`n,\dOP$U\^_`ehlmquuvazzI}}n􆩏əRRGRŘ퉪NgoO[glmxtx'ݓ|yz1_NTU>XY`bSbg6iU5@P,SSUDW|bXdfkgoot"t88TQVWf_HakNpXp}Yj+cw=XTd-i[^noiQLSY*` aKklpl{΂ԍƐdodeQNTWa_hvu{R}qXí*9PxYWYb*a]ryWaZF]bddgwlm>r,t6x4wۘR$WBgrHt㌩*QkScLOiU`eWlmrLrz_mopaOPObArG{}MWj^sg UT [^c^_ e=[OHSS STTW^`bbcUlmfux2ށ/ބa ^EffprOR}_jaSgSjotyhhyǘĚCTziSJ_|buvBS9_<_lsubu{FNO\c>myrϘ0NQDRW_blnppPpqstiJaQn_W`agfYJNNNT|XXY}\_'b6bHf fgkmimnVnooop]rt%tZtvy\|~ႦkN_twje`bwZZfmn>t?B_`{T_l^lm*p}y ;ST[j:pkuuyyqAt de+xxzkN8UYP[^{`ckafehSnqet}i%m;ns>AQ^L_`M`a0aLfCfDiln_nobqLtv{|'RWQS/V^_`b`affgjmoppsj~j4ԊRsr[jkTV[]eHefhmmr;uMOPSTT~> !?~?y !@~@ !A~A5 !B~B !C~C !D~DO !E~E !F~F !G~Gi !H~H !J~J%!K~K!L~L!M~M?!N~N!O~O!P~PY!Q~Q!R~R!S~Ss!T~T!U~U/!V~V!W~W!X~XI!Y~Y!Z~Z![~[c!\~\!]~]!^~^}!_~_!`~`9!a~a!b~b!c~cS!d~d!e~e!f~fm!g~g!h~h)!i~i!j~j!k~kC!l~l!m~m!n~n]!o~o!p~p!q~qw!r~r!s~s3!t~t!u~u!v~vM!w~w!x~x !y~yg!z~z!{~{# !|~| !}~} 000% & 0 %"<<"    000 0 0 0 0 00000`"d"e""4"2 3 !+!B&@& ""#""a"R"; &&%%%%%%%%%%%!!!!!0j"k""=""5"+","" """""*")"'"("!!""^.""" !0 %%%%d&`&a&e&g&c&"%%%%%%%%%%%h&&&&& ! !!!!!m&i&j&l&22!3"!33!!  !"#$%&'()*+,-./0123456789:;=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]112131415161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1w1x1y1z1{1|1}1~11111111111111111p!q!r!s!t!u!v!w!x!y!`!a!b!c!d!e!f!g!h!i!%% %%%%%,%$%4%<%%%%%%%#%3%+%;%K% %/%(%7%?%%0%%%8%B%%%%%%%% %%%!%"%&%'%)%*%-%.%1%2%5%6%9%:%=%>%@%A%C%D%E%F%G%H%I%J%333!3333333333333333333333333333333333333333333333333333&!3333333333333333333333&2?ARfJ`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{2$$$$$$$$$$$$$$$$$$$$$$$$$$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$S!T![!\!]!^!'138@BSgKI222222222 2 2 2 2 222222222222222$$$$$$$$$$$$$$$$$$$$$$$$$$t$u$v$w$x$y$z${$|$}$~$$$$$t  A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 !"#$%&'()*+,-./012345Q6789:;<=>?@ABCDEFGHIJKLMNO  $,-/0189<@KMTX\pqtwxzĬȬ̬լ׬  ),-458DEGIMOPTXaclĻȻлӻ $%')-0148@ACDEILMP]ļͼϼмѼռؼܼ $,@HILPXYdhԽսؽܽ DEHLNTUWYZ[`adhjpqstu{|}оѾԾ׾ؾ @ADHPQUſ̿ͿпԿܿ߿DEHLTUWXY`dfhpų̴̵̸̘̙̜̠̩̫̬̭̼ $(,9\`dlmoqx͈͔͕ͤͥͧͩ͘͜Ͱ  !$(0135XY\_`ahikmtux|΄΅·ΉΐΑΔΘΠΡΣΤΥάέ $,-/018TUX\degipqtxπυόϡϨϰ-458aha9eiouvv{˄U[QW|(PSE\]bncdd np[yݍ}E~NNeP]^aWiqTGu+^NPpg@h QRRjwԞR/`HPacdkLp/tt{PŃܕ(.R]`bOIQ!SX^f8mprsP{[fSckVNPJXX*`'abiA[}_NPTU []]*eNe!hKjrvw^}N߆NʐUNEN]NNOwQR@SSSTVuWW[]^abQeggiPkkkBlnxprstwwvz}  ߂b3dҙEם W@\ʃTzو͎XH\cz[_yzz&P8RRwSWbrc km7wSWshvՕ:gjpom̎Kwfxk<S-WNYcisExzz|us5RGWGu`{̃XjKQKRRbhuiPRRae9hi~tK{냲9яI NYdfj4tyy~_ & OS%`qbrl}f}NbQwOOvQQUhV;WWWYGYY[\]]~^_beegg^ghh_j:k#l}llms&t*tttxuuxxAyGyHyzy{}}-OHw!$Qe}vO TbThёU:Q Za bbfVq OczcWS!g`isn"7u#$% }&'rVZ()*+,CN-gQHYg.sYt^dy_l`b{c[[R/tY)_`012Yt345678љ9:;<=>?@ABCoDE`FGfHI?\JKLMNOPQZ%{g}RSTUVWXY<\l?SnY69NNFOUWXV_eejkMnwz|}ˆ2[dozsuTVUMWadfm[nmoouCANJZlSuT{]UXXXb^bdhvu|NWnW'Y \\6^_4bds۞[_`PR0RW5XWX\`\\]^_`ccdChhjm!nnoqvywy;zHSMvܗkpXrrhscwy{~X`feeflqqZmNzNQQR TaqgPhhm|ouwzc\Qe\gguzsZF-o\Ao _]Yjq{vI{'0Ua[iv?\mpsa}=]j^NuSkk>pr-LRP]d,ekoC|~ͅdb؁^gjmrtotސO ]_ QceuNPiQQhj|||oҊϑO7QRBT^na>bejo*y܅#bjΞRfwkp+ybBab#e#oIqt}o&#JQRR mpˆ^eko>|usN6OV_\]`s-{F4HaOoyR`ddj^oprv\2ouxy}Ƀ֊X_'g'pt`|~!Q(pbrxŒڌNP[^eqBvwJ|'XAZb\jmo;v/}7~8KRegiAmnp t`tYu$vkx,^mQ.bxO+P]m}*_DahaRQQ^iz}uO)RSTUe\`Nghlmrrttbul|yψ̑БɛT~oqtWgm3t,xz {|idjtuxxT[U^ oNMS)Z]N_ba=ciffn+ocpw,;E;Ub+gl jzNY__g}T+WYZ['fghkdqu㌁EL@_[lsvv QMQQRhlw w}}bnQ T}Tff'invw„iOQRY=^Uaxdydfg!jkk_rarAt8ww((glgrvfwFzkl"Y&goSXY^c4fsg:n+szׂ(R]aa bbdeYifkk!qs]uF~j'aX؞PR;TOUevl } }^RlirsTZ>\K]L__*ghcieee fginx!}+*2 POcW_bcogCnqv̀ڀ)Mj/OpO^g"h}v~vDa^ jiqqjudA~CܘOO{pQ^h>lNllr{l:tPRXdjtVvx9e^S_%RwINPuQ[\w^f:fghpuuyz' O!X1X[nfekmzn}os+u܈\OPS\S[_ gyy/9;,gvNOIY\\\gchpq+t+~"Ғ NNOPVRoR&TTW+YfZZ[u[[^fvbweenmn6r&{?|6PQ@tܑDٙSR)TtVXTYnY_anbf~lqv||}g[O__b)] gh|xC~lNPS*SQSYbZ^`aIbybegikkkklh5tuxxyy|}>船l^ۘ;V*[l_ejk\mop]rsӌ;a7lXMNNNN:Oy@y`yy{}r} фdž߈P^܌fߙJRigjP*Rq\ceUls#uu{x0wNdk^q NkIghnkco NPPQFUUV@[\\8^^^^`QhajXn=r@rrvey{saތ^XtUlaz"}rrru%um{XX]^^_U`bcMefffhhr^tn{n}}r͞ YmY-^`fsfgPlm_owxƄˑ+NPHQU [[Gb~ee2n}qtDtttlvy}U~z9ux%MhSQ\Til)m+n ;-gaRfk~ ]emqnWY['``bf_f)ssvwl{VreNRrkmz9{0}oS/VQX[\\]@bcd-fhlmnppq&uuuv{{+| }9},m4 a7Ol\_gm|~k[] d\ᘇs[`~gm 7RpQpxpבOSUVWXZ[\\%^a bKbcd6exe9jk4lm1oqrxstt&vawyWzz|}}a~)1ڄꅖ8Bl֖ӚS~XYp[[mZoq!tt]__B`ehoiSjk5mmsvwM{}#@cbĊ bSe]']i]_thob6rNXNPRGSbfi~^OS6VYZ8\N\M\^_C`e/fBfggsw:ÿ́fiUzW[_o`b ik\nq{UXߘ8OOO{T Z[T3TUbXXgYZ[`aVeedfhZlopqRs}{2K\lDss:netviz~ @QXdtupv͖T&ntzzنxIZ[[hicmst,tx}UL.f_egjls-PZjkwYl]]%sOuPQ/X-YYY[]bdddfHjqdtzzG~^~p YR~a2ktm~%OPQRWX[^Baimgnnqbt(u,us8Ʉ ޓNQOvP*QSSS[[$\aae[rs@tvPyyy}Յ^GꑅRg_e1f/h\q6z NRjkoqSK1NqĖCQSTWWWZZ[(`?acl9mrnn0r?sWtтE`bXg^MOIPPqS WYZ \paf-n2rKt}Àf?_[U˗OsNOQjQ/UUz[[|^}^^``a ac8e gggaibil'm8no6s7s\t1uRv}8Ոۊ0BJ>zIɑn XkAQkY9\dosbph}Wi`GakYNTm-pclQaOPQ[aadikuwdcpNN O7YY]_[_!`>rspuuy 3Q 7pvNNRpSTVY[__nnj}5mwNZO~OXen8NXYYA`zOÌeQDSNiRU[N:RTYYP[W[\[c`Hanpnqstux+}(Ʌnj̖\ORVe(f|pp5r}Lrq[hkzov\f[o{*|6ܖNN S4XXXlY\3^^5_cfVgjj k?oFrPstz|x߁灊l#υ݈wQT(W[MbPg=hh=nn}p!~ KN-r{͊GONO2QTY^bugnijlnr*su{5}W[Ζ_R TZ[XduenrvMz{M|>~{+ʌd_iѓCOzOPhQxQMRjRaX|X`Y\U\^`0bhkloNq t0u8uQurvL{{{{~n>I?"+ZkR*bbYmdvz{v}`S\^8op|ޞczdvNNN\PuPHTY[@^^^_`:c?eteevfxfghijck@lmmn^nppss:u[wxy z}z|}Gꊞ-Jؑf̒ V\6RR|U$X^_`chomy,{́Dd=LJOFQQR2V_k_cdeAfffghhionogqq*rt:wVyZyy zz||D}p~T m;Ֆe|ÓX[ \RSbs'P[_`kahm.t.zB}}1~k*5~POPW]^+cj;NOOOZPYĀjThTUOY[]^]f1gg*hl2mJnopsuL|},}}ۆ;p31NRDЙz|OQQW[\Yf=jZmno qouz"!u˖-NNF͑}SjkiAlzXafbpuuR~IKNST0W@W_ccod/eezfggbk`ll,ow%xIyWy}󁝂rvz7zT~wUUuX/c"dIfKfmhik%mnshtt[uuvwwy ~~/:ь뎰2csOSYZ^Nhtuyz̍폟egWWo}/Ɩ_aoNOPSUo]]!kdkx{IʎnIc>d@wz/jdoqttz|~|~ }L9R[d-g.}PSyXXaYaaez P!PuR1UUXY`Sbb6gUi5@ݙ,PSSDU|WXbdkfgoo"t8t8QTVfWH_aNkXpp}jY+cw=TX-di[^oniLQS*Y `Kakpll{΀ԂƍdodeNQTW_avhuR{q}Xi*9xPWYYb*]ayr֕aWFZ]bddwgl>m,r6t4xwۍ$RBWgHrt*kQSLciOU`WelmLrrzm_opaOOPAbGr{}MjWs^g U T[c^^ _e=[HOS SSTTW^`bbUclfmu2xހ/ނa E^ffprO}Rj_SaSgjothyhyǘĘCTzSiJ|_buvB9S<__lsbuuF{ON< NUOSY^0flUtwfPXx[P[h``eWl"oopUPӗrRDQ+TTcUUjm}fwyTTv䆤ԕ\N OYZ]R`bmgAhl/n8* NUPTWZYi[[awiwm#pr犂홸R8hPx^OgGLNTVs WSVX[1aj{sҎGkWUYrkiO\&_a[flpsss)wMwC}b}#~7R IoQ[tz@ZOTS>Y\>cymrϒ0NDQRWb_lnpPppqsitJanQW_`gafYJNNN|TXX}Y\'_6bHb fgfkimmVnnooo]pr%tZttv\y|~ဦkN_twje`bwZZfm>n?tB_`{T_^ll*mp}y ;ST[:jkpuuyyqAt d+exxkz8NUPY[{^`cakefShneqt}i%;mn>sAʕQL^_M``0aLaCfDfil_nnboLqtv{'|RWQÞ/SV^_b``affgjmoppjsj~4ԆČRrs[kjTV][Heefhmm;ruMOPST?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~㥹  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~㥹  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   & ! 0` 9Zd}y     "  !"a :[e~zA^{B_=>|T9 CGPXnpbU: DHQYoqc  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   & ! 0 `9 Zd}y    "   "!a: [e~zA^{B_=>|T9 CGPXnpbU: DHQYoqcpicolibc-1.7.4/newlib/libc/iconv/ccs/binary/win_1251.cct000066400000000000000000000101241414576234500226230ustar00rootroot00000000000000win_1251PR TTO  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~O  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ S  & ! 0 9   R     "  !"Y :Z\[_^VQ!TXUW !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ S & ! 0 9   R    "   "!Y: Z\[_^VQ!TXUW !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOpicolibc-1.7.4/newlib/libc/iconv/ccs/binary/win_1252.cct000066400000000000000000000111241414576234500226250ustar00rootroot00000000000000win_1252PRTT  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   & ! 0` 9R}     "  !"a :S~x  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   & ! 0 `9 R}    "   "!a: S~xpicolibc-1.7.4/newlib/libc/iconv/ccs/binary/win_1253.cct000066400000000000000000000111241414576234500226260ustar00rootroot00000000000000win_1253PRTT  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   & ! 0 9     "  !" :   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   & ! 0 9     "   "!:  picolibc-1.7.4/newlib/libc/iconv/ccs/binary/win_1254.cct000066400000000000000000000111241414576234500226270ustar00rootroot00000000000000win_1254PRTT  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   & ! 0` 9R     "  !"a :Sx0^1_  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   & ! 0 `9 R    "   "!a: Sx0^1_picolibc-1.7.4/newlib/libc/iconv/ccs/binary/win_1255.cct000066400000000000000000000121241414576234500226310ustar00rootroot00000000000000win_1255PRTT  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   & ! 0 9     "  !" :     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   & ! 0 9     "   "!:   picolibc-1.7.4/newlib/libc/iconv/ccs/binary/win_1256.cct000066400000000000000000000121241414576234500226320ustar00rootroot00000000000000win_1256PRTT  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ~   & ! 0y 9R     "  !" :S  !"#$%&'()*+,-./0123456789:@ABCDEFGHIJKLMNOPQR    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ~  & ! 0 y9 R    "   "!: S  !"#$%&'()*+,-./0123456789:@ABCDEFGHIJKLMNOPQR  picolibc-1.7.4/newlib/libc/iconv/ccs/binary/win_1257.cct000066400000000000000000000111241414576234500226320ustar00rootroot00000000000000win_1257PRTT  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ůר  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ůר  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   & ! 0 9     "  !" :VW. y"6*;`CELrAZj{}/ z#7+<aDFMsB[k|~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   & ! 0 9     "   "!: VW. y"6*;`CELrAZj{}/ z#7+<aDFMsB[k|~picolibc-1.7.4/newlib/libc/iconv/ccs/binary/win_1258.cct000066400000000000000000000121241414576234500226340ustar00rootroot00000000000000win_1258PRTT  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   & ! 0 9R     "  !" :Sx #   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   & ! 0 9 R    "   "!: Sx # picolibc-1.7.4/newlib/libc/iconv/ccs/ccs.h000066400000000000000000000142531414576234500203270ustar00rootroot00000000000000/* * Copyright (c) 2003-2004, Artem B. Bityuckiy * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifndef __CCS_H__ #define __CCS_H__ #include <_ansi.h> #include #include /* * Size-optimized tables will be linked instead of speed-optimized if * TABLE_USE_SIZE_OPTIMISATION macro is defined. */ #if defined (PREFER_SIZE_OVER_SPEED) || defined (__OPTIMIZE_SIZE__) # define TABLE_USE_SIZE_OPTIMIZATION #endif /* Invalid code marker */ #define INVALC 0xFFFF /* Invalid block marker - marks empty blocks in speed-optimized tables */ #define INVBLK 0xFFFF /* Lost code marker - marks codes that was lost during CCS->UCS mapping */ #define LOST_C DEFAULT_CHARACTER /* * Table parameters values. */ /* Table version 1.0 identifier */ #define TABLE_VERSION_1 1 /* 8 and 16 bit tables identifiers */ #define TABLE_8BIT 8 #define TABLE_16BIT 16 /* Size-optimized and speed-optimized tables identifiers */ #define TABLE_SIZE_OPTIMIZED 1 #define TABLE_SPEED_OPTIMIZED 2 /* Built-in/external tables identifiers */ #define TABLE_BUILTIN 1 #define TABLE_EXTERNAL 2 /* * Binary table fields. */ /* "No table" marker */ #define EXTTABLE_NO_TABLE 0 /* Version offset (2 bytes) */ #define EXTTABLE_VERSION_OFF 0 /* Bits number offset (2 bytes) */ #define EXTTABLE_BITS_OFF 2 /* CCS name length offset (2 bytes) */ #define EXTTABLE_CCSNAME_LEN_OFF 4 /* CCS name offset (expanded to even bytes number)*/ #define EXTTABLE_CCSNAME_OFF 8 /* Header length (minus CCS name) */ #define EXTTABLE_HEADER_LEN (EXTTABLE_CCSNAME_OFF + 16*4) /* Tables and lengths offsets minus CCS name length (4 bytes) */ #define EXTTABLE_FROM_SPEED_BE_OFF (EXTTABLE_CCSNAME_OFF + 0) #define EXTTABLE_FROM_SPEED_BE_LEN_OFF (EXTTABLE_CCSNAME_OFF + 4) #define EXTTABLE_FROM_SPEED_LE_OFF (EXTTABLE_CCSNAME_OFF + 8) #define EXTTABLE_FROM_SPEED_LE_LEN_OFF (EXTTABLE_CCSNAME_OFF + 12) #define EXTTABLE_FROM_SIZE_BE_OFF (EXTTABLE_CCSNAME_OFF + 16) #define EXTTABLE_FROM_SIZE_BE_LEN_OFF (EXTTABLE_CCSNAME_OFF + 20) #define EXTTABLE_FROM_SIZE_LE_OFF (EXTTABLE_CCSNAME_OFF + 24) #define EXTTABLE_FROM_SIZE_LE_LEN_OFF (EXTTABLE_CCSNAME_OFF + 28) #define EXTTABLE_TO_SPEED_BE_OFF (EXTTABLE_CCSNAME_OFF + 32) #define EXTTABLE_TO_SPEED_BE_LEN_OFF (EXTTABLE_CCSNAME_OFF + 36) #define EXTTABLE_TO_SPEED_LE_OFF (EXTTABLE_CCSNAME_OFF + 40) #define EXTTABLE_TO_SPEED_LE_LEN_OFF (EXTTABLE_CCSNAME_OFF + 44) #define EXTTABLE_TO_SIZE_BE_OFF (EXTTABLE_CCSNAME_OFF + 48) #define EXTTABLE_TO_SIZE_BE_LEN_OFF (EXTTABLE_CCSNAME_OFF + 52) #define EXTTABLE_TO_SIZE_LE_OFF (EXTTABLE_CCSNAME_OFF + 56) #define EXTTABLE_TO_SIZE_LE_LEN_OFF (EXTTABLE_CCSNAME_OFF + 60) /* Endian-independent offsets */ #if (BYTE_ORDER == LITTLE_ENDIAN) # define EXTTABLE_FROM_SPEED_OFF EXTTABLE_FROM_SPEED_LE_OFF # define EXTTABLE_FROM_SIZE_OFF EXTTABLE_FROM_SIZE_LE_OFF # define EXTTABLE_TO_SPEED_OFF EXTTABLE_TO_SPEED_LE_OFF # define EXTTABLE_TO_SIZE_OFF EXTTABLE_TO_SIZE_LE_OFF # define EXTTABLE_FROM_SPEED_LEN_OFF EXTTABLE_FROM_SPEED_LE_LEN_OFF # define EXTTABLE_FROM_SIZE_LEN_OFF EXTTABLE_FROM_SIZE_LE_LEN_OFF # define EXTTABLE_TO_SPEED_LEN_OFF EXTTABLE_TO_SPEED_LE_LEN_OFF # define EXTTABLE_TO_SIZE_LEN_OFF EXTTABLE_TO_SIZE_LE_LEN_OFF #elif (BYTE_ORDER == BIG_ENDIAN) # define EXTTABLE_FROM_SPEED_OFF EXTTABLE_FROM_SPEED_BE_OFF # define EXTTABLE_FROM_SIZE_OFF EXTTABLE_FROM_SIZE_BE_OFF # define EXTTABLE_TO_SPEED_OFF EXTTABLE_TO_SPEED_BE_OFF # define EXTTABLE_TO_SIZE_OFF EXTTABLE_TO_SIZE_BE_OFF # define EXTTABLE_FROM_SPEED_LEN_OFF EXTTABLE_FROM_SPEED_BE_LEN_OFF # define EXTTABLE_FROM_SIZE_LEN_OFF EXTTABLE_FROM_SIZE_BE_LEN_OFF # define EXTTABLE_TO_SPEED_LEN_OFF EXTTABLE_TO_SPEED_BE_LEN_OFF # define EXTTABLE_TO_SIZE_LEN_OFF EXTTABLE_TO_SIZE_BE_LEN_OFF #endif /* * Size-optimized suitable fields indexes. */ /* Ranges number array index */ #define RANGES_NUM_INDEX 0 /* Un-ranged codes number array index */ #define UNRANGED_NUM_INDEX 1 /* First un-ranged pair index array index */ #define FIRST_UNRANGED_INDEX_INDEX 2 /* First range array index */ #define FIRST_RANGE_INDEX 3 /* * Builtin CCS table description structure. */ typedef struct { __uint16_t ver; /* Table version */ const char *name; /* CCS name */ __uint16_t bits; /* CCS's bits number */ int from_ucs_type; /* UCS -> CCS table optimization type */ const __uint16_t *from_ucs; /* UCS -> CCS table */ int to_ucs_type; /* CCS -> UCS table optimization type */ const __uint16_t *to_ucs; /* CCS -> UCS table */ } iconv_ccs_t; /* * CCS table descriptor. */ typedef struct { int bits; /* CCS's bits number */ int type; /* Table type (builtin/external) */ int optimization; /* Table optimization type (speed/size) */ const __uint16_t *tbl; /* Table's data */ } iconv_ccs_desc_t; /* Array containing all built-in CCS tables */ extern const iconv_ccs_t * _iconv_ccs[]; #endif /* __CCS_H__ */ picolibc-1.7.4/newlib/libc/iconv/ccs/ccsbi.c000066400000000000000000000117561414576234500206420ustar00rootroot00000000000000/* * This file was automatically generated mkdeps.pl script. Don't edit. */ #include <_ansi.h> #include "ccsbi.h" /* * The following array contains the list of built-in CCS tables. */ const iconv_ccs_t * _iconv_ccs[] = { #if defined (ICONV_TO_UCS_CCS_CP775) \ || defined (ICONV_FROM_UCS_CCS_CP775) &_iconv_ccs_cp775, #endif #if defined (ICONV_TO_UCS_CCS_ISO_IR_111) \ || defined (ICONV_FROM_UCS_CCS_ISO_IR_111) &_iconv_ccs_iso_ir_111, #endif #if defined (ICONV_TO_UCS_CCS_CP866) \ || defined (ICONV_FROM_UCS_CCS_CP866) &_iconv_ccs_cp866, #endif #if defined (ICONV_TO_UCS_CCS_KOI8_UNI) \ || defined (ICONV_FROM_UCS_CCS_KOI8_UNI) &_iconv_ccs_koi8_uni, #endif #if defined (ICONV_TO_UCS_CCS_WIN_1250) \ || defined (ICONV_FROM_UCS_CCS_WIN_1250) &_iconv_ccs_win_1250, #endif #if defined (ICONV_TO_UCS_CCS_JIS_X0201_1976) \ || defined (ICONV_FROM_UCS_CCS_JIS_X0201_1976) &_iconv_ccs_jis_x0201_1976, #endif #if defined (ICONV_TO_UCS_CCS_WIN_1251) \ || defined (ICONV_FROM_UCS_CCS_WIN_1251) &_iconv_ccs_win_1251, #endif #if defined (ICONV_TO_UCS_CCS_WIN_1252) \ || defined (ICONV_FROM_UCS_CCS_WIN_1252) &_iconv_ccs_win_1252, #endif #if defined (ICONV_TO_UCS_CCS_WIN_1253) \ || defined (ICONV_FROM_UCS_CCS_WIN_1253) &_iconv_ccs_win_1253, #endif #if defined (ICONV_TO_UCS_CCS_BIG5) \ || defined (ICONV_FROM_UCS_CCS_BIG5) &_iconv_ccs_big5, #endif #if defined (ICONV_TO_UCS_CCS_WIN_1254) \ || defined (ICONV_FROM_UCS_CCS_WIN_1254) &_iconv_ccs_win_1254, #endif #if defined (ICONV_TO_UCS_CCS_WIN_1255) \ || defined (ICONV_FROM_UCS_CCS_WIN_1255) &_iconv_ccs_win_1255, #endif #if defined (ICONV_TO_UCS_CCS_WIN_1256) \ || defined (ICONV_FROM_UCS_CCS_WIN_1256) &_iconv_ccs_win_1256, #endif #if defined (ICONV_TO_UCS_CCS_CNS11643_PLANE14) \ || defined (ICONV_FROM_UCS_CCS_CNS11643_PLANE14) &_iconv_ccs_cns11643_plane14, #endif #if defined (ICONV_TO_UCS_CCS_WIN_1257) \ || defined (ICONV_FROM_UCS_CCS_WIN_1257) &_iconv_ccs_win_1257, #endif #if defined (ICONV_TO_UCS_CCS_WIN_1258) \ || defined (ICONV_FROM_UCS_CCS_WIN_1258) &_iconv_ccs_win_1258, #endif #if defined (ICONV_TO_UCS_CCS_JIS_X0208_1990) \ || defined (ICONV_FROM_UCS_CCS_JIS_X0208_1990) &_iconv_ccs_jis_x0208_1990, #endif #if defined (ICONV_TO_UCS_CCS_JIS_X0212_1990) \ || defined (ICONV_FROM_UCS_CCS_JIS_X0212_1990) &_iconv_ccs_jis_x0212_1990, #endif #if defined (ICONV_TO_UCS_CCS_CNS11643_PLANE1) \ || defined (ICONV_FROM_UCS_CCS_CNS11643_PLANE1) &_iconv_ccs_cns11643_plane1, #endif #if defined (ICONV_TO_UCS_CCS_CP850) \ || defined (ICONV_FROM_UCS_CCS_CP850) &_iconv_ccs_cp850, #endif #if defined (ICONV_TO_UCS_CCS_CNS11643_PLANE2) \ || defined (ICONV_FROM_UCS_CCS_CNS11643_PLANE2) &_iconv_ccs_cns11643_plane2, #endif #if defined (ICONV_TO_UCS_CCS_CP852) \ || defined (ICONV_FROM_UCS_CCS_CP852) &_iconv_ccs_cp852, #endif #if defined (ICONV_TO_UCS_CCS_KOI8_RU) \ || defined (ICONV_FROM_UCS_CCS_KOI8_RU) &_iconv_ccs_koi8_ru, #endif #if defined (ICONV_TO_UCS_CCS_CP855) \ || defined (ICONV_FROM_UCS_CCS_CP855) &_iconv_ccs_cp855, #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_1) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_1) &_iconv_ccs_iso_8859_1, #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_2) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_2) &_iconv_ccs_iso_8859_2, #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_3) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_3) &_iconv_ccs_iso_8859_3, #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_4) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_4) &_iconv_ccs_iso_8859_4, #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_5) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_5) &_iconv_ccs_iso_8859_5, #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_6) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_6) &_iconv_ccs_iso_8859_6, #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_7) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_7) &_iconv_ccs_iso_8859_7, #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_8) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_8) &_iconv_ccs_iso_8859_8, #endif #if defined (ICONV_TO_UCS_CCS_KSX1001) \ || defined (ICONV_FROM_UCS_CCS_KSX1001) &_iconv_ccs_ksx1001, #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_9) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_9) &_iconv_ccs_iso_8859_9, #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_10) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_10) &_iconv_ccs_iso_8859_10, #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_11) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_11) &_iconv_ccs_iso_8859_11, #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_13) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_13) &_iconv_ccs_iso_8859_13, #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_14) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_14) &_iconv_ccs_iso_8859_14, #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_15) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_15) &_iconv_ccs_iso_8859_15, #endif #if defined (ICONV_TO_UCS_CCS_KOI8_R) \ || defined (ICONV_FROM_UCS_CCS_KOI8_R) &_iconv_ccs_koi8_r, #endif #if defined (ICONV_TO_UCS_CCS_KOI8_U) \ || defined (ICONV_FROM_UCS_CCS_KOI8_U) &_iconv_ccs_koi8_u, #endif NULL }; picolibc-1.7.4/newlib/libc/iconv/ccs/ccsbi.h000066400000000000000000000325601414576234500206430ustar00rootroot00000000000000/* * This file was automatically generated mkdeps.pl script. Don't edit. */ #ifndef __CCSBI_H__ #define __CCSBI_H__ #include #include <_ansi.h> #include "ccs.h" /* * Enable CCS tables if encoding needs them. * Defining ICONV_TO_UCS_CCS_XXX macro or ICONV_FROM_UCS_CCS_XXX * macro is needed to enable "XXX encoding -> UCS" or "UCS -> XXX encoding" * part of CCS table. * CCS tables aren't linked if Newlib was configuted to use external CCS tables. */ #ifndef _ICONV_ENABLE_EXTERNAL_CCS #if defined (_ICONV_FROM_ENCODING_BIG5) # define ICONV_TO_UCS_CCS_BIG5 #endif #if defined (_ICONV_TO_ENCODING_BIG5) # define ICONV_FROM_UCS_CCS_BIG5 #endif #if defined (_ICONV_FROM_ENCODING_EUC_TW) # define ICONV_TO_UCS_CCS_CNS11643_PLANE1 #endif #if defined (_ICONV_TO_ENCODING_EUC_TW) # define ICONV_FROM_UCS_CCS_CNS11643_PLANE1 #endif #if defined (_ICONV_FROM_ENCODING_EUC_TW) # define ICONV_TO_UCS_CCS_CNS11643_PLANE14 #endif #if defined (_ICONV_TO_ENCODING_EUC_TW) # define ICONV_FROM_UCS_CCS_CNS11643_PLANE14 #endif #if defined (_ICONV_FROM_ENCODING_EUC_TW) # define ICONV_TO_UCS_CCS_CNS11643_PLANE2 #endif #if defined (_ICONV_TO_ENCODING_EUC_TW) # define ICONV_FROM_UCS_CCS_CNS11643_PLANE2 #endif #if defined (_ICONV_FROM_ENCODING_CP775) # define ICONV_TO_UCS_CCS_CP775 #endif #if defined (_ICONV_TO_ENCODING_CP775) # define ICONV_FROM_UCS_CCS_CP775 #endif #if defined (_ICONV_FROM_ENCODING_CP850) # define ICONV_TO_UCS_CCS_CP850 #endif #if defined (_ICONV_TO_ENCODING_CP850) # define ICONV_FROM_UCS_CCS_CP850 #endif #if defined (_ICONV_FROM_ENCODING_CP852) # define ICONV_TO_UCS_CCS_CP852 #endif #if defined (_ICONV_TO_ENCODING_CP852) # define ICONV_FROM_UCS_CCS_CP852 #endif #if defined (_ICONV_FROM_ENCODING_CP855) # define ICONV_TO_UCS_CCS_CP855 #endif #if defined (_ICONV_TO_ENCODING_CP855) # define ICONV_FROM_UCS_CCS_CP855 #endif #if defined (_ICONV_FROM_ENCODING_CP866) # define ICONV_TO_UCS_CCS_CP866 #endif #if defined (_ICONV_TO_ENCODING_CP866) # define ICONV_FROM_UCS_CCS_CP866 #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_1) # define ICONV_TO_UCS_CCS_ISO_8859_1 #endif #if defined (_ICONV_TO_ENCODING_ISO_8859_1) # define ICONV_FROM_UCS_CCS_ISO_8859_1 #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_10) # define ICONV_TO_UCS_CCS_ISO_8859_10 #endif #if defined (_ICONV_TO_ENCODING_ISO_8859_10) # define ICONV_FROM_UCS_CCS_ISO_8859_10 #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_11) # define ICONV_TO_UCS_CCS_ISO_8859_11 #endif #if defined (_ICONV_TO_ENCODING_ISO_8859_11) # define ICONV_FROM_UCS_CCS_ISO_8859_11 #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_13) # define ICONV_TO_UCS_CCS_ISO_8859_13 #endif #if defined (_ICONV_TO_ENCODING_ISO_8859_13) # define ICONV_FROM_UCS_CCS_ISO_8859_13 #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_14) # define ICONV_TO_UCS_CCS_ISO_8859_14 #endif #if defined (_ICONV_TO_ENCODING_ISO_8859_14) # define ICONV_FROM_UCS_CCS_ISO_8859_14 #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_15) # define ICONV_TO_UCS_CCS_ISO_8859_15 #endif #if defined (_ICONV_TO_ENCODING_ISO_8859_15) # define ICONV_FROM_UCS_CCS_ISO_8859_15 #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_2) # define ICONV_TO_UCS_CCS_ISO_8859_2 #endif #if defined (_ICONV_TO_ENCODING_ISO_8859_2) # define ICONV_FROM_UCS_CCS_ISO_8859_2 #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_3) # define ICONV_TO_UCS_CCS_ISO_8859_3 #endif #if defined (_ICONV_TO_ENCODING_ISO_8859_3) # define ICONV_FROM_UCS_CCS_ISO_8859_3 #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_4) # define ICONV_TO_UCS_CCS_ISO_8859_4 #endif #if defined (_ICONV_TO_ENCODING_ISO_8859_4) # define ICONV_FROM_UCS_CCS_ISO_8859_4 #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_5) # define ICONV_TO_UCS_CCS_ISO_8859_5 #endif #if defined (_ICONV_TO_ENCODING_ISO_8859_5) # define ICONV_FROM_UCS_CCS_ISO_8859_5 #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_6) # define ICONV_TO_UCS_CCS_ISO_8859_6 #endif #if defined (_ICONV_TO_ENCODING_ISO_8859_6) # define ICONV_FROM_UCS_CCS_ISO_8859_6 #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_7) # define ICONV_TO_UCS_CCS_ISO_8859_7 #endif #if defined (_ICONV_TO_ENCODING_ISO_8859_7) # define ICONV_FROM_UCS_CCS_ISO_8859_7 #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_8) # define ICONV_TO_UCS_CCS_ISO_8859_8 #endif #if defined (_ICONV_TO_ENCODING_ISO_8859_8) # define ICONV_FROM_UCS_CCS_ISO_8859_8 #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_9) # define ICONV_TO_UCS_CCS_ISO_8859_9 #endif #if defined (_ICONV_TO_ENCODING_ISO_8859_9) # define ICONV_FROM_UCS_CCS_ISO_8859_9 #endif #if defined (_ICONV_FROM_ENCODING_ISO_IR_111) # define ICONV_TO_UCS_CCS_ISO_IR_111 #endif #if defined (_ICONV_TO_ENCODING_ISO_IR_111) # define ICONV_FROM_UCS_CCS_ISO_IR_111 #endif #if defined (_ICONV_FROM_ENCODING_EUC_JP) # define ICONV_TO_UCS_CCS_JIS_X0201_1976 #endif #if defined (_ICONV_TO_ENCODING_EUC_JP) # define ICONV_FROM_UCS_CCS_JIS_X0201_1976 #endif #if defined (_ICONV_FROM_ENCODING_EUC_JP) # define ICONV_TO_UCS_CCS_JIS_X0208_1990 #endif #if defined (_ICONV_TO_ENCODING_EUC_JP) # define ICONV_FROM_UCS_CCS_JIS_X0208_1990 #endif #if defined (_ICONV_FROM_ENCODING_EUC_JP) # define ICONV_TO_UCS_CCS_JIS_X0212_1990 #endif #if defined (_ICONV_TO_ENCODING_EUC_JP) # define ICONV_FROM_UCS_CCS_JIS_X0212_1990 #endif #if defined (_ICONV_FROM_ENCODING_KOI8_R) # define ICONV_TO_UCS_CCS_KOI8_R #endif #if defined (_ICONV_TO_ENCODING_KOI8_R) # define ICONV_FROM_UCS_CCS_KOI8_R #endif #if defined (_ICONV_FROM_ENCODING_KOI8_RU) # define ICONV_TO_UCS_CCS_KOI8_RU #endif #if defined (_ICONV_TO_ENCODING_KOI8_RU) # define ICONV_FROM_UCS_CCS_KOI8_RU #endif #if defined (_ICONV_FROM_ENCODING_KOI8_U) # define ICONV_TO_UCS_CCS_KOI8_U #endif #if defined (_ICONV_TO_ENCODING_KOI8_U) # define ICONV_FROM_UCS_CCS_KOI8_U #endif #if defined (_ICONV_FROM_ENCODING_KOI8_UNI) # define ICONV_TO_UCS_CCS_KOI8_UNI #endif #if defined (_ICONV_TO_ENCODING_KOI8_UNI) # define ICONV_FROM_UCS_CCS_KOI8_UNI #endif #if defined (_ICONV_FROM_ENCODING_EUC_KR) # define ICONV_TO_UCS_CCS_KSX1001 #endif #if defined (_ICONV_TO_ENCODING_EUC_KR) # define ICONV_FROM_UCS_CCS_KSX1001 #endif #if defined (_ICONV_FROM_ENCODING_WIN_1250) # define ICONV_TO_UCS_CCS_WIN_1250 #endif #if defined (_ICONV_TO_ENCODING_WIN_1250) # define ICONV_FROM_UCS_CCS_WIN_1250 #endif #if defined (_ICONV_FROM_ENCODING_WIN_1251) # define ICONV_TO_UCS_CCS_WIN_1251 #endif #if defined (_ICONV_TO_ENCODING_WIN_1251) # define ICONV_FROM_UCS_CCS_WIN_1251 #endif #if defined (_ICONV_FROM_ENCODING_WIN_1252) # define ICONV_TO_UCS_CCS_WIN_1252 #endif #if defined (_ICONV_TO_ENCODING_WIN_1252) # define ICONV_FROM_UCS_CCS_WIN_1252 #endif #if defined (_ICONV_FROM_ENCODING_WIN_1253) # define ICONV_TO_UCS_CCS_WIN_1253 #endif #if defined (_ICONV_TO_ENCODING_WIN_1253) # define ICONV_FROM_UCS_CCS_WIN_1253 #endif #if defined (_ICONV_FROM_ENCODING_WIN_1254) # define ICONV_TO_UCS_CCS_WIN_1254 #endif #if defined (_ICONV_TO_ENCODING_WIN_1254) # define ICONV_FROM_UCS_CCS_WIN_1254 #endif #if defined (_ICONV_FROM_ENCODING_WIN_1255) # define ICONV_TO_UCS_CCS_WIN_1255 #endif #if defined (_ICONV_TO_ENCODING_WIN_1255) # define ICONV_FROM_UCS_CCS_WIN_1255 #endif #if defined (_ICONV_FROM_ENCODING_WIN_1256) # define ICONV_TO_UCS_CCS_WIN_1256 #endif #if defined (_ICONV_TO_ENCODING_WIN_1256) # define ICONV_FROM_UCS_CCS_WIN_1256 #endif #if defined (_ICONV_FROM_ENCODING_WIN_1257) # define ICONV_TO_UCS_CCS_WIN_1257 #endif #if defined (_ICONV_TO_ENCODING_WIN_1257) # define ICONV_FROM_UCS_CCS_WIN_1257 #endif #if defined (_ICONV_FROM_ENCODING_WIN_1258) # define ICONV_TO_UCS_CCS_WIN_1258 #endif #if defined (_ICONV_TO_ENCODING_WIN_1258) # define ICONV_FROM_UCS_CCS_WIN_1258 #endif /* * CCS table description structures forward declarations. */ #if defined (ICONV_TO_UCS_CCS_BIG5) \ || defined (ICONV_FROM_UCS_CCS_BIG5) extern const iconv_ccs_t _iconv_ccs_big5; #endif #if defined (ICONV_TO_UCS_CCS_CNS11643_PLANE1) \ || defined (ICONV_FROM_UCS_CCS_CNS11643_PLANE1) extern const iconv_ccs_t _iconv_ccs_cns11643_plane1; #endif #if defined (ICONV_TO_UCS_CCS_CNS11643_PLANE14) \ || defined (ICONV_FROM_UCS_CCS_CNS11643_PLANE14) extern const iconv_ccs_t _iconv_ccs_cns11643_plane14; #endif #if defined (ICONV_TO_UCS_CCS_CNS11643_PLANE2) \ || defined (ICONV_FROM_UCS_CCS_CNS11643_PLANE2) extern const iconv_ccs_t _iconv_ccs_cns11643_plane2; #endif #if defined (ICONV_TO_UCS_CCS_CP775) \ || defined (ICONV_FROM_UCS_CCS_CP775) extern const iconv_ccs_t _iconv_ccs_cp775; #endif #if defined (ICONV_TO_UCS_CCS_CP850) \ || defined (ICONV_FROM_UCS_CCS_CP850) extern const iconv_ccs_t _iconv_ccs_cp850; #endif #if defined (ICONV_TO_UCS_CCS_CP852) \ || defined (ICONV_FROM_UCS_CCS_CP852) extern const iconv_ccs_t _iconv_ccs_cp852; #endif #if defined (ICONV_TO_UCS_CCS_CP855) \ || defined (ICONV_FROM_UCS_CCS_CP855) extern const iconv_ccs_t _iconv_ccs_cp855; #endif #if defined (ICONV_TO_UCS_CCS_CP866) \ || defined (ICONV_FROM_UCS_CCS_CP866) extern const iconv_ccs_t _iconv_ccs_cp866; #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_1) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_1) extern const iconv_ccs_t _iconv_ccs_iso_8859_1; #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_10) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_10) extern const iconv_ccs_t _iconv_ccs_iso_8859_10; #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_11) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_11) extern const iconv_ccs_t _iconv_ccs_iso_8859_11; #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_13) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_13) extern const iconv_ccs_t _iconv_ccs_iso_8859_13; #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_14) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_14) extern const iconv_ccs_t _iconv_ccs_iso_8859_14; #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_15) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_15) extern const iconv_ccs_t _iconv_ccs_iso_8859_15; #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_2) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_2) extern const iconv_ccs_t _iconv_ccs_iso_8859_2; #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_3) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_3) extern const iconv_ccs_t _iconv_ccs_iso_8859_3; #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_4) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_4) extern const iconv_ccs_t _iconv_ccs_iso_8859_4; #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_5) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_5) extern const iconv_ccs_t _iconv_ccs_iso_8859_5; #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_6) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_6) extern const iconv_ccs_t _iconv_ccs_iso_8859_6; #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_7) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_7) extern const iconv_ccs_t _iconv_ccs_iso_8859_7; #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_8) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_8) extern const iconv_ccs_t _iconv_ccs_iso_8859_8; #endif #if defined (ICONV_TO_UCS_CCS_ISO_8859_9) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_9) extern const iconv_ccs_t _iconv_ccs_iso_8859_9; #endif #if defined (ICONV_TO_UCS_CCS_ISO_IR_111) \ || defined (ICONV_FROM_UCS_CCS_ISO_IR_111) extern const iconv_ccs_t _iconv_ccs_iso_ir_111; #endif #if defined (ICONV_TO_UCS_CCS_JIS_X0201_1976) \ || defined (ICONV_FROM_UCS_CCS_JIS_X0201_1976) extern const iconv_ccs_t _iconv_ccs_jis_x0201_1976; #endif #if defined (ICONV_TO_UCS_CCS_JIS_X0208_1990) \ || defined (ICONV_FROM_UCS_CCS_JIS_X0208_1990) extern const iconv_ccs_t _iconv_ccs_jis_x0208_1990; #endif #if defined (ICONV_TO_UCS_CCS_JIS_X0212_1990) \ || defined (ICONV_FROM_UCS_CCS_JIS_X0212_1990) extern const iconv_ccs_t _iconv_ccs_jis_x0212_1990; #endif #if defined (ICONV_TO_UCS_CCS_KOI8_R) \ || defined (ICONV_FROM_UCS_CCS_KOI8_R) extern const iconv_ccs_t _iconv_ccs_koi8_r; #endif #if defined (ICONV_TO_UCS_CCS_KOI8_RU) \ || defined (ICONV_FROM_UCS_CCS_KOI8_RU) extern const iconv_ccs_t _iconv_ccs_koi8_ru; #endif #if defined (ICONV_TO_UCS_CCS_KOI8_U) \ || defined (ICONV_FROM_UCS_CCS_KOI8_U) extern const iconv_ccs_t _iconv_ccs_koi8_u; #endif #if defined (ICONV_TO_UCS_CCS_KOI8_UNI) \ || defined (ICONV_FROM_UCS_CCS_KOI8_UNI) extern const iconv_ccs_t _iconv_ccs_koi8_uni; #endif #if defined (ICONV_TO_UCS_CCS_KSX1001) \ || defined (ICONV_FROM_UCS_CCS_KSX1001) extern const iconv_ccs_t _iconv_ccs_ksx1001; #endif #if defined (ICONV_TO_UCS_CCS_WIN_1250) \ || defined (ICONV_FROM_UCS_CCS_WIN_1250) extern const iconv_ccs_t _iconv_ccs_win_1250; #endif #if defined (ICONV_TO_UCS_CCS_WIN_1251) \ || defined (ICONV_FROM_UCS_CCS_WIN_1251) extern const iconv_ccs_t _iconv_ccs_win_1251; #endif #if defined (ICONV_TO_UCS_CCS_WIN_1252) \ || defined (ICONV_FROM_UCS_CCS_WIN_1252) extern const iconv_ccs_t _iconv_ccs_win_1252; #endif #if defined (ICONV_TO_UCS_CCS_WIN_1253) \ || defined (ICONV_FROM_UCS_CCS_WIN_1253) extern const iconv_ccs_t _iconv_ccs_win_1253; #endif #if defined (ICONV_TO_UCS_CCS_WIN_1254) \ || defined (ICONV_FROM_UCS_CCS_WIN_1254) extern const iconv_ccs_t _iconv_ccs_win_1254; #endif #if defined (ICONV_TO_UCS_CCS_WIN_1255) \ || defined (ICONV_FROM_UCS_CCS_WIN_1255) extern const iconv_ccs_t _iconv_ccs_win_1255; #endif #if defined (ICONV_TO_UCS_CCS_WIN_1256) \ || defined (ICONV_FROM_UCS_CCS_WIN_1256) extern const iconv_ccs_t _iconv_ccs_win_1256; #endif #if defined (ICONV_TO_UCS_CCS_WIN_1257) \ || defined (ICONV_FROM_UCS_CCS_WIN_1257) extern const iconv_ccs_t _iconv_ccs_win_1257; #endif #if defined (ICONV_TO_UCS_CCS_WIN_1258) \ || defined (ICONV_FROM_UCS_CCS_WIN_1258) extern const iconv_ccs_t _iconv_ccs_win_1258; #endif #endif /* !_ICONV_ENABLE_EXTERNAL_CCS */ #endif /* __CCSBI_H__ */ picolibc-1.7.4/newlib/libc/iconv/ccs/ccsnames.h000066400000000000000000000044221414576234500213500ustar00rootroot00000000000000/* * This file was automatically generated mkdeps.pl script. Don't edit. */ #ifndef __CCSNAMES_H__ #define __CCSNAMES_H__ #include "../lib/encnames.h" /* * CCS tables names macros. */ #define ICONV_CCS_BIG5 ICONV_ENCODING_BIG5 #define ICONV_CCS_CNS11643_PLANE1 "cns11643_plane1" #define ICONV_CCS_CNS11643_PLANE14 "cns11643_plane14" #define ICONV_CCS_CNS11643_PLANE2 "cns11643_plane2" #define ICONV_CCS_CP775 ICONV_ENCODING_CP775 #define ICONV_CCS_CP850 ICONV_ENCODING_CP850 #define ICONV_CCS_CP852 ICONV_ENCODING_CP852 #define ICONV_CCS_CP855 ICONV_ENCODING_CP855 #define ICONV_CCS_CP866 ICONV_ENCODING_CP866 #define ICONV_CCS_ISO_8859_1 ICONV_ENCODING_ISO_8859_1 #define ICONV_CCS_ISO_8859_10 ICONV_ENCODING_ISO_8859_10 #define ICONV_CCS_ISO_8859_11 ICONV_ENCODING_ISO_8859_11 #define ICONV_CCS_ISO_8859_13 ICONV_ENCODING_ISO_8859_13 #define ICONV_CCS_ISO_8859_14 ICONV_ENCODING_ISO_8859_14 #define ICONV_CCS_ISO_8859_15 ICONV_ENCODING_ISO_8859_15 #define ICONV_CCS_ISO_8859_2 ICONV_ENCODING_ISO_8859_2 #define ICONV_CCS_ISO_8859_3 ICONV_ENCODING_ISO_8859_3 #define ICONV_CCS_ISO_8859_4 ICONV_ENCODING_ISO_8859_4 #define ICONV_CCS_ISO_8859_5 ICONV_ENCODING_ISO_8859_5 #define ICONV_CCS_ISO_8859_6 ICONV_ENCODING_ISO_8859_6 #define ICONV_CCS_ISO_8859_7 ICONV_ENCODING_ISO_8859_7 #define ICONV_CCS_ISO_8859_8 ICONV_ENCODING_ISO_8859_8 #define ICONV_CCS_ISO_8859_9 ICONV_ENCODING_ISO_8859_9 #define ICONV_CCS_ISO_IR_111 ICONV_ENCODING_ISO_IR_111 #define ICONV_CCS_JIS_X0201_1976 "jis_x0201_1976" #define ICONV_CCS_JIS_X0208_1990 "jis_x0208_1990" #define ICONV_CCS_JIS_X0212_1990 "jis_x0212_1990" #define ICONV_CCS_KOI8_R ICONV_ENCODING_KOI8_R #define ICONV_CCS_KOI8_RU ICONV_ENCODING_KOI8_RU #define ICONV_CCS_KOI8_U ICONV_ENCODING_KOI8_U #define ICONV_CCS_KOI8_UNI ICONV_ENCODING_KOI8_UNI #define ICONV_CCS_KSX1001 "ksx1001" #define ICONV_CCS_WIN_1250 ICONV_ENCODING_WIN_1250 #define ICONV_CCS_WIN_1251 ICONV_ENCODING_WIN_1251 #define ICONV_CCS_WIN_1252 ICONV_ENCODING_WIN_1252 #define ICONV_CCS_WIN_1253 ICONV_ENCODING_WIN_1253 #define ICONV_CCS_WIN_1254 ICONV_ENCODING_WIN_1254 #define ICONV_CCS_WIN_1255 ICONV_ENCODING_WIN_1255 #define ICONV_CCS_WIN_1256 ICONV_ENCODING_WIN_1256 #define ICONV_CCS_WIN_1257 ICONV_ENCODING_WIN_1257 #define ICONV_CCS_WIN_1258 ICONV_ENCODING_WIN_1258 #endif /* !__CCSNAMES_H__ */ picolibc-1.7.4/newlib/libc/iconv/ccs/cns11643_plane1.c000066400000000000000000021306701414576234500222000ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for cns11643_plane1 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_CNS11643_PLANE1) \ || defined (ICONV_FROM_UCS_CCS_CNS11643_PLANE1) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" /* * 16-bit cns11643_plane1 -> UCS speed-optimized table (33792 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_CNS11643_PLANE1) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t to_ucs_speed_cns11643_plane1[] = { /* Heading Block */ INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,0x0100,0x0200,0x0300,0x0400,0x0500,0x0600,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,0x0700,INVBLK,0x0800,0x0900,0x0A00,0x0B00, 0x0C00,0x0D00,0x0E00,0x0F00,0x1000,0x1100,0x1200,0x1300, 0x1400,0x1500,0x1600,0x1700,0x1800,0x1900,0x1A00,0x1B00, 0x1C00,0x1D00,0x1E00,0x1F00,0x2000,0x2100,0x2200,0x2300, 0x2400,0x2500,0x2600,0x2700,0x2800,0x2900,0x2A00,0x2B00, 0x2C00,0x2D00,0x2E00,0x2F00,0x3000,0x3100,0x3200,0x3300, 0x3400,0x3500,0x3600,0x3700,0x3800,0x3900,0x3A00,0x3B00, 0x3C00,0x3D00,0x3E00,0x3F00,0x4000,0x4100,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, /* Block 34, Array index 0x0100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3000,0xFF0C,0x3001,0x3002,0xFF0E,0x30FB,0xFF1B, 0xFF1A,0xFF1F,0xFF01,0xFE30,0x2026,0x2025,0xFE50,0xFE51, 0xFE52,0x00B7,0xFE54,0xFE55,0xFE56,0xFE57,0xFE31,0x2014, 0xFE32,0x2013,INVALC,INVALC,INVALC,INVALC,0xFF08,0xFF09, 0xFE35,0xFE36,0xFF5B,0xFF5D,0xFE37,0xFE38,0x3014,0x3015, 0xFE39,0xFE3A,0x3010,0x3011,0xFE3B,0xFE3C,0x300A,0x300B, 0xFE3D,0xFE3E,0x3008,0x3009,0xFE3F,0xFE40,0x300C,0x300D, 0xFE41,0xFE42,0x300E,0x300F,0xFE43,0xFE44,0xFE59,0xFE5A, 0xFE5B,0xFE5C,0xFE5D,0xFE5E,0x2018,0x2019,0x201C,0x201D, 0x301D,0x301E,0x2032,0x2035,0xFF03,0xFF06,0xFF0A,0x203B, 0x00A7,0x3003,0x25CB,0x25CF,0x25B3,0x25B2,0x25CE,0x2606, 0x2605,0x25C7,0x25C6,0x25A1,0x25A0,0x25BD,0x25BC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 35, Array index 0x0200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x32A3,0x2105,0x203E,INVALC,0xFF3F,INVALC,0xFE49, 0xFE4A,0xFE4D,0xFE4E,0xFE4B,0xFE4C,0xFE5F,0xFE60,0xFE61, 0xFF0B,0xFF0D,0x00D7,0x00F7,0x00B1,0x221A,0xFF1C,0xFF1E, 0xFF1D,0x2266,0x2267,0x2260,0x221E,0x2252,0x2261,0xFE62, 0xFE63,0xFE64,0xFE66,0xFE65,0x223C,0x2229,0x222A,0x22A5, 0x2220,0x221F,0x22BF,0x33D2,0x33D1,0x222B,0x222E,0x2235, 0x2234,0x2640,0x2642,0x2641,0x2609,0x2191,0x2193,0x2192, 0x2190,0x2196,0x2197,0x2199,0x2198,0x2016,0xFF5C,0xFF0F, 0xFF3C,0x2215,0xFE68,0xFF04,0xFFE5,0x3012,0xFFE0,0xFFE1, 0xFF05,0xFF20,0x2103,0x2109,0xFE69,0xFE6A,0xFE6B,0x33D5, 0x339C,0x339D,0x339E,0x33CE,0x33A1,0x338E,0x338F,0x33C4, 0x00B0,0x5159,0x515B,0x515E,0x515D,0x5161,0x5163,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 36, Array index 0x0300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x55E7,0x74E9,0x7CCE,0x2581,0x2582,0x2583,0x2584, 0x2585,0x2586,0x2587,0x2588,0x258F,0x258E,0x258D,0x258C, 0x258B,0x258A,0x2589,0x253C,0x2534,0x252C,0x2524,0x251C, 0x2594,0x2500,0x2502,0x2595,0x250C,0x2510,0x2514,0x2518, 0x256D,0x256E,0x2570,0x256F,0x2550,0x255E,0x256A,0x2561, 0x25E2,0x25E3,0x25E5,0x25E4,0x2571,0x2572,0x2573,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 37, Array index 0x0400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xFF10,0xFF11,0xFF12,0xFF13,0xFF14,0xFF15,0xFF16, 0xFF17,0xFF18,0xFF19,0x2160,0x2161,0x2162,0x2163,0x2164, 0x2165,0x2166,0x2167,0x2168,0x2169,0x3021,0x3022,0x3023, 0x3024,0x3025,0x3026,0x3027,0x3028,0x3029,INVALC,0x5344, INVALC,0xFF21,0xFF22,0xFF23,0xFF24,0xFF25,0xFF26,0xFF27, 0xFF28,0xFF29,0xFF2A,0xFF2B,0xFF2C,0xFF2D,0xFF2E,0xFF2F, 0xFF30,0xFF31,0xFF32,0xFF33,0xFF34,0xFF35,0xFF36,0xFF37, 0xFF38,0xFF39,0xFF3A,0xFF41,0xFF42,0xFF43,0xFF44,0xFF45, 0xFF46,0xFF47,0xFF48,0xFF49,0xFF4A,0xFF4B,0xFF4C,0xFF4D, 0xFF4E,0xFF4F,0xFF50,0xFF51,0xFF52,0xFF53,0xFF54,0xFF55, 0xFF56,0xFF57,0xFF58,0xFF59,0xFF5A,0x0391,0x0392,0x0393, 0x0394,0x0395,0x0396,0x0397,0x0398,0x0399,0x039A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 38, Array index 0x0500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x039B,0x039C,0x039D,0x039E,0x039F,0x03A0,0x03A1, 0x03A3,0x03A4,0x03A5,0x03A6,0x03A7,0x03A8,0x03A9,0x03B1, 0x03B2,0x03B3,0x03B4,0x03B5,0x03B6,0x03B7,0x03B8,0x03B9, 0x03BA,0x03BB,0x03BC,0x03BD,0x03BE,0x03BF,0x03C0,0x03C1, 0x03C3,0x03C4,0x03C5,0x03C6,0x03C7,0x03C8,0x03C9,0x3105, 0x3106,0x3107,0x3108,0x3109,0x310A,0x310B,0x310C,0x310D, 0x310E,0x310F,0x3110,0x3111,0x3112,0x3113,0x3114,0x3115, 0x3116,0x3117,0x3118,0x3119,0x311A,0x311B,0x311C,0x311D, 0x311E,0x311F,0x3120,0x3121,0x3122,0x3123,0x3124,0x3125, 0x3126,0x3127,0x3128,0x3129,0x02D9,0x02C9,0x02CA,0x02C7, 0x02CB,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 39, Array index 0x0600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2460,0x2461,0x2462,0x2463,0x2464,0x2465,0x2466, 0x2467,0x2468,0x2469,0x2474,0x2475,0x2476,0x2477,0x2478, 0x2479,0x247A,0x247B,0x247C,0x247D,0x2170,0x2171,0x2172, 0x2173,0x2174,0x2175,0x2176,0x2177,0x2178,0x2179,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 67, Array index 0x0700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2400,0x2401,0x2402,0x2403,0x2404,0x2405,0x2406, 0x2407,0x2408,0x2409,0x240A,0x240B,0x240C,0x240D,0x240E, 0x240F,0x2410,0x2411,0x2412,0x2413,0x2414,0x2415,0x2416, 0x2417,0x2418,0x2419,0x241A,0x241B,0x241C,0x241D,0x241E, 0x241F,0x2421,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 69, Array index 0x0800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4E00,0x4E59,0x4E01,0x4E03,0x4E43,0x4E5D,0x4E86, 0x4E8C,0x4EBA,0x513F,0x5165,0x516B,0x51E0,0x5200,0x5201, 0x529B,0x5315,0x5341,0x535C,0x53C8,0x4E09,0x4E0B,0x4E08, 0x4E0A,0x4E2B,0x4E38,0x51E1,0x4E45,0x4E48,0x4E5F,0x4E5E, 0x4E8E,0x4EA1,0x5140,0x5203,0x52FA,0x5343,0x53C9,0x53E3, 0x571F,0x58EB,0x5915,0x5927,0x5973,0x5B50,0x5B51,0x5B53, 0x5BF8,0x5C0F,0x5C22,0x5C38,0x5C71,0x5DDD,0x5DE5,0x5DF1, 0x5DF2,0x5DF3,0x5DFE,0x5E72,0x5EFE,0x5F0B,0x5F13,0x624D, 0x4E11,0x4E10,0x4E0D,0x4E2D,0x4E30,0x4E39,0x4E4B,0x5C39, 0x4E88,0x4E91,0x4E95,0x4E92,0x4E94,0x4EA2,0x4EC1,0x4EC0, 0x4EC3,0x4EC6,0x4EC7,0x4ECD,0x4ECA,0x4ECB,0x4EC4,0x5143, 0x5141,0x5167,0x516D,0x516E,0x516C,0x5197,0x51F6,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 70, Array index 0x0900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5206,0x5207,0x5208,0x52FB,0x52FE,0x52FF,0x5316, 0x5339,0x5348,0x5347,0x5345,0x535E,0x5384,0x53CB,0x53CA, 0x53CD,0x58EC,0x5929,0x592B,0x592A,0x592D,0x5B54,0x5C11, 0x5C24,0x5C3A,0x5C6F,0x5DF4,0x5E7B,0x5EFF,0x5F14,0x5F15, 0x5FC3,0x6208,0x6236,0x624B,0x624E,0x652F,0x6587,0x6597, 0x65A4,0x65B9,0x65E5,0x66F0,0x6708,0x6728,0x6B20,0x6B62, 0x6B79,0x6BCB,0x6BD4,0x6BDB,0x6C0F,0x6C34,0x706B,0x722A, 0x7236,0x723B,0x7247,0x7259,0x725B,0x72AC,0x738B,0x4E19, 0x4E16,0x4E15,0x4E14,0x4E18,0x4E3B,0x4E4D,0x4E4F,0x4E4E, 0x4EE5,0x4ED8,0x4ED4,0x4ED5,0x4ED6,0x4ED7,0x4EE3,0x4EE4, 0x4ED9,0x4EDE,0x5145,0x5144,0x5189,0x518A,0x51AC,0x51F9, 0x51FA,0x51F8,0x520A,0x52A0,0x529F,0x5305,0x5306,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 71, Array index 0x0A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5317,0x531D,0x4EDF,0x534A,0x5349,0x5361,0x5360, 0x536F,0x536E,0x53BB,0x53EF,0x53E4,0x53F3,0x53EC,0x53EE, 0x53E9,0x53E8,0x53FC,0x53F8,0x53F5,0x53EB,0x53E6,0x53EA, 0x53F2,0x53F1,0x53F0,0x53E5,0x53ED,0x53FB,0x56DB,0x56DA, 0x5916,0x592E,0x5931,0x5974,0x5976,0x5B55,0x5B83,0x5C3C, 0x5DE8,0x5DE7,0x5DE6,0x5E02,0x5E03,0x5E73,0x5E7C,0x5F01, 0x5F18,0x5F17,0x5FC5,0x620A,0x6253,0x6254,0x6252,0x6251, 0x65A5,0x65E6,0x672E,0x672C,0x672A,0x672B,0x672D,0x6B63, 0x6BCD,0x6C11,0x6C10,0x6C38,0x6C41,0x6C40,0x6C3E,0x72AF, 0x7384,0x7389,0x74DC,0x74E6,0x7518,0x751F,0x7528,0x7529, 0x7530,0x7531,0x7532,0x7533,0x758B,0x767D,0x76AE,0x76BF, 0x76EE,0x77DB,0x77E2,0x77F3,0x793A,0x79BE,0x7A74,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 72, Array index 0x0B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7ACB,0x4E1E,0x4E1F,0x4E52,0x4E53,0x4E69,0x4E99, 0x4EA4,0x4EA6,0x4EA5,0x4EFF,0x4F09,0x4F19,0x4F0A,0x4F15, 0x4F0D,0x4F10,0x4F11,0x4F0F,0x4EF2,0x4EF6,0x4EFB,0x4EF0, 0x4EF3,0x4EFD,0x4F01,0x4F0B,0x5149,0x5147,0x5146,0x5148, 0x5168,0x5171,0x518D,0x51B0,0x5217,0x5211,0x5212,0x520E, 0x5216,0x52A3,0x5308,0x5321,0x5320,0x5370,0x5371,0x5409, 0x540F,0x540C,0x540A,0x5410,0x5401,0x540B,0x5404,0x5411, 0x540D,0x5408,0x5403,0x540E,0x5406,0x5412,0x56E0,0x56DE, 0x56DD,0x5733,0x5730,0x5728,0x572D,0x572C,0x572F,0x5729, 0x5919,0x591A,0x5937,0x5938,0x5984,0x5978,0x5983,0x597D, 0x5979,0x5982,0x5981,0x5B57,0x5B58,0x5B87,0x5B88,0x5B85, 0x5B89,0x5BFA,0x5C16,0x5C79,0x5DDE,0x5E06,0x5E76,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 73, Array index 0x0C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5E74,0x5F0F,0x5F1B,0x5FD9,0x5FD6,0x620E,0x620C, 0x620D,0x6210,0x6263,0x625B,0x6258,0x6536,0x65E9,0x65E8, 0x65EC,0x65ED,0x66F2,0x66F3,0x6709,0x673D,0x6734,0x6731, 0x6735,0x6B21,0x6B64,0x6B7B,0x6C16,0x6C5D,0x6C57,0x6C59, 0x6C5F,0x6C60,0x6C50,0x6C55,0x6C61,0x6C5B,0x6C4D,0x6C4E, 0x7070,0x725F,0x725D,0x767E,0x7AF9,0x7C73,0x7CF8,0x7F36, 0x7F8A,0x7FBD,0x8001,0x8003,0x800C,0x8012,0x8033,0x807F, 0x8089,0x808B,0x808C,0x81E3,0x81EA,0x81F3,0x81FC,0x820C, 0x821B,0x821F,0x826E,0x8272,0x827E,0x866B,0x8840,0x884C, 0x8863,0x897F,0x9621,0x4E32,0x4EA8,0x4F4D,0x4F4F,0x4F47, 0x4F57,0x4F5E,0x4F34,0x4F5B,0x4F55,0x4F30,0x4F50,0x4F51, 0x4F3D,0x4F3A,0x4F38,0x4F43,0x4F54,0x4F3C,0x4F46,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 74, Array index 0x0D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4F63,0x4F5C,0x4F60,0x4F2F,0x4F4E,0x4F36,0x4F59, 0x4F5D,0x4F48,0x4F5A,0x514C,0x514B,0x514D,0x5175,0x51B6, 0x51B7,0x5225,0x5224,0x5229,0x522A,0x5228,0x52AB,0x52A9, 0x52AA,0x52AC,0x5323,0x5373,0x5375,0x541D,0x542D,0x541E, 0x543E,0x5426,0x544E,0x5427,0x5446,0x5443,0x5433,0x5448, 0x5442,0x541B,0x5429,0x544A,0x5439,0x543B,0x5438,0x542E, 0x5435,0x5436,0x5420,0x543C,0x5440,0x5431,0x542B,0x541F, 0x542C,0x56EA,0x56F0,0x56E4,0x56EB,0x574A,0x5751,0x5740, 0x574D,0x5747,0x574E,0x573E,0x5750,0x574F,0x573B,0x58EF, 0x593E,0x599D,0x5992,0x59A8,0x599E,0x59A3,0x5999,0x5996, 0x598D,0x59A4,0x5993,0x598A,0x59A5,0x5B5D,0x5B5C,0x5B5A, 0x5B5B,0x5B8C,0x5B8B,0x5B8F,0x5C2C,0x5C40,0x5C41,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 75, Array index 0x0E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5C3F,0x5C3E,0x5C90,0x5C91,0x5C94,0x5C8C,0x5DEB, 0x5E0C,0x5E8F,0x5E87,0x5E8A,0x5EF7,0x5F04,0x5F1F,0x5F64, 0x5F62,0x5F77,0x5F79,0x5FD8,0x5FCC,0x5FD7,0x5FCD,0x5FF1, 0x5FEB,0x5FF8,0x5FEA,0x6212,0x6211,0x6284,0x6297,0x6296, 0x6280,0x6276,0x6289,0x626D,0x628A,0x627C,0x627E,0x6279, 0x6273,0x6292,0x626F,0x6298,0x626E,0x6295,0x6293,0x6291, 0x6286,0x6539,0x653B,0x6538,0x65F1,0x66F4,0x675F,0x674E, 0x674F,0x6750,0x6751,0x675C,0x6756,0x675E,0x6749,0x6746, 0x6760,0x6753,0x6757,0x6B65,0x6BCF,0x6C42,0x6C5E,0x6C99, 0x6C81,0x6C88,0x6C89,0x6C85,0x6C9B,0x6C6A,0x6C7A,0x6C90, 0x6C70,0x6C8C,0x6C68,0x6C96,0x6C92,0x6C7D,0x6C83,0x6C72, 0x6C7E,0x6C74,0x6C86,0x6C76,0x6C8D,0x6C94,0x6C98,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 76, Array index 0x0F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6C82,0x7076,0x707C,0x707D,0x7078,0x7262,0x7261, 0x7260,0x72C4,0x72C2,0x7396,0x752C,0x752B,0x7537,0x7538, 0x7682,0x76EF,0x77E3,0x79C1,0x79C0,0x79BF,0x7A76,0x7CFB, 0x7F55,0x8096,0x8093,0x809D,0x8098,0x809B,0x809A,0x80B2, 0x826F,0x8292,0x828B,0x828D,0x898B,0x89D2,0x8A00,0x8C37, 0x8C46,0x8C55,0x8C9D,0x8D64,0x8D70,0x8DB3,0x8EAB,0x8ECA, 0x8F9B,0x8FB0,0x8FC2,0x8FC6,0x8FC5,0x8FC4,0x5DE1,0x9091, 0x90A2,0x90AA,0x90A6,0x90A3,0x9149,0x91C6,0x91CC,0x9632, 0x962E,0x9631,0x962A,0x962C,0x4E26,0x4E56,0x4E73,0x4E8B, 0x4E9B,0x4E9E,0x4EAB,0x4EAC,0x4F6F,0x4F9D,0x4F8D,0x4F73, 0x4F7F,0x4F6C,0x4F9B,0x4F8B,0x4F86,0x4F83,0x4F70,0x4F75, 0x4F88,0x4F69,0x4F7B,0x4F96,0x4F7E,0x4F8F,0x4F91,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 77, Array index 0x1000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4F7A,0x5154,0x5152,0x5155,0x5169,0x5177,0x5176, 0x5178,0x51BD,0x51FD,0x523B,0x5238,0x5237,0x523A,0x5230, 0x522E,0x5236,0x5241,0x52BE,0x52BB,0x5352,0x5354,0x5353, 0x5351,0x5366,0x5377,0x5378,0x5379,0x53D6,0x53D4,0x53D7, 0x5473,0x5475,0x5496,0x5478,0x5495,0x5480,0x547B,0x5477, 0x5484,0x5492,0x5486,0x547C,0x5490,0x5471,0x5476,0x548C, 0x549A,0x5462,0x5468,0x548B,0x547D,0x548E,0x56FA,0x5783, 0x5777,0x576A,0x5769,0x5761,0x5766,0x5764,0x577C,0x591C, 0x5949,0x5947,0x5948,0x5944,0x5954,0x59BE,0x59BB,0x59D4, 0x59B9,0x59AE,0x59D1,0x59C6,0x59D0,0x59CD,0x59CB,0x59D3, 0x59CA,0x59AF,0x59B3,0x59D2,0x59C5,0x5B5F,0x5B64,0x5B63, 0x5B97,0x5B9A,0x5B98,0x5B9C,0x5B99,0x5B9B,0x5C1A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 78, Array index 0x1100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5C48,0x5C45,0x5C46,0x5CB7,0x5CA1,0x5CB8,0x5CA9, 0x5CAB,0x5CB1,0x5CB3,0x5E18,0x5E1A,0x5E16,0x5E15,0x5E1B, 0x5E11,0x5E78,0x5E9A,0x5E97,0x5E9C,0x5E95,0x5E96,0x5EF6, 0x5F26,0x5F27,0x5F29,0x5F80,0x5F81,0x5F7F,0x5F7C,0x5FDD, 0x5FE0,0x5FFD,0x5FF5,0x5FFF,0x600F,0x6014,0x602F,0x6035, 0x6016,0x602A,0x6015,0x6021,0x6027,0x6029,0x602B,0x601B, 0x6216,0x6215,0x623F,0x623E,0x6240,0x627F,0x62C9,0x62CC, 0x62C4,0x62BF,0x62C2,0x62B9,0x62D2,0x62DB,0x62AB,0x62D3, 0x62D4,0x62CB,0x62C8,0x62A8,0x62BD,0x62BC,0x62D0,0x62D9, 0x62C7,0x62CD,0x62B5,0x62DA,0x62B1,0x62D8,0x62D6,0x62D7, 0x62C6,0x62AC,0x62CE,0x653E,0x65A7,0x65BC,0x65FA,0x6614, 0x6613,0x660C,0x6606,0x6602,0x660E,0x6600,0x660F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 79, Array index 0x1200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6615,0x660A,0x6607,0x670D,0x670B,0x676D,0x678B, 0x6795,0x6771,0x679C,0x6773,0x6777,0x6787,0x679D,0x6797, 0x676F,0x6770,0x677F,0x6789,0x677E,0x6790,0x6775,0x679A, 0x6793,0x677C,0x676A,0x6772,0x6B23,0x6B66,0x6B67,0x6B7F, 0x6C13,0x6C1B,0x6CE3,0x6CE8,0x6CF3,0x6CB1,0x6CCC,0x6CE5, 0x6CB3,0x6CBD,0x6CBE,0x6CBC,0x6CE2,0x6CAB,0x6CD5,0x6CD3, 0x6CB8,0x6CC4,0x6CB9,0x6CC1,0x6CAE,0x6CD7,0x6CC5,0x6CF1, 0x6CBF,0x6CBB,0x6CE1,0x6CDB,0x6CCA,0x6CAC,0x6CEF,0x6CDC, 0x6CD6,0x6CE0,0x7095,0x708E,0x7092,0x708A,0x7099,0x722C, 0x722D,0x7238,0x7248,0x7267,0x7269,0x72C0,0x72CE,0x72D9, 0x72D7,0x72D0,0x73A9,0x73A8,0x739F,0x73AB,0x73A5,0x753D, 0x759D,0x7599,0x759A,0x7684,0x76C2,0x76F2,0x76F4,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 80, Array index 0x1300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x77E5,0x77FD,0x793E,0x7940,0x7941,0x79C9,0x79C8, 0x7A7A,0x7A79,0x7AFA,0x7CFE,0x7F54,0x7F8C,0x7F8B,0x8005, 0x80BA,0x80A5,0x80A2,0x80B1,0x80A1,0x80AB,0x80A9,0x80B4, 0x80AA,0x80AF,0x81E5,0x81FE,0x820D,0x82B3,0x829D,0x8299, 0x82AD,0x82BD,0x829F,0x82B9,0x82B1,0x82AC,0x82A5,0x82AF, 0x82B8,0x82A3,0x82B0,0x82BE,0x82B7,0x864E,0x8671,0x521D, 0x8868,0x8ECB,0x8FCE,0x8FD4,0x8FD1,0x90B5,0x90B8,0x90B1, 0x90B6,0x91C7,0x91D1,0x9577,0x9580,0x961C,0x9640,0x963F, 0x963B,0x9644,0x9642,0x96B9,0x96E8,0x9752,0x975E,0x4E9F, 0x4EAD,0x4EAE,0x4FE1,0x4FB5,0x4FAF,0x4FBF,0x4FE0,0x4FD1, 0x4FCF,0x4FDD,0x4FC3,0x4FB6,0x4FD8,0x4FDF,0x4FCA,0x4FD7, 0x4FAE,0x4FD0,0x4FC4,0x4FC2,0x4FDA,0x4FCE,0x4FDE,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 81, Array index 0x1400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4FB7,0x5157,0x5192,0x5191,0x51A0,0x524E,0x5243, 0x524A,0x524D,0x524C,0x524B,0x5247,0x52C7,0x52C9,0x52C3, 0x52C1,0x530D,0x5357,0x537B,0x539A,0x53DB,0x54AC,0x54C0, 0x54A8,0x54CE,0x54C9,0x54B8,0x54A6,0x54B3,0x54C7,0x54C2, 0x54BD,0x54AA,0x54C1,0x54C4,0x54C8,0x54AF,0x54AB,0x54B1, 0x54BB,0x54A9,0x54A7,0x54BF,0x56FF,0x5782,0x578B,0x57A0, 0x57A3,0x57A2,0x57CE,0x57AE,0x5793,0x5955,0x5951,0x594F, 0x594E,0x5950,0x59DC,0x59D8,0x59FF,0x59E3,0x59E8,0x5A03, 0x59E5,0x59EA,0x59DA,0x59E6,0x5A01,0x59FB,0x5B69,0x5BA3, 0x5BA6,0x5BA4,0x5BA2,0x5BA5,0x5C01,0x5C4E,0x5C4F,0x5C4D, 0x5C4B,0x5CD9,0x5CD2,0x5DF7,0x5E1D,0x5E25,0x5E1F,0x5E7D, 0x5EA0,0x5EA6,0x5EFA,0x5F08,0x5F2D,0x5F65,0x5F88,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 82, Array index 0x1500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5F85,0x5F8A,0x5F8B,0x5F87,0x5F8C,0x5F89,0x6012, 0x601D,0x6020,0x6025,0x600E,0x6028,0x604D,0x6070,0x6068, 0x6062,0x6046,0x6043,0x606C,0x606B,0x606A,0x6064,0x6241, 0x62DC,0x6316,0x6309,0x62FC,0x62ED,0x6301,0x62EE,0x62FD, 0x6307,0x62F1,0x62F7,0x62EF,0x62EC,0x62FE,0x62F4,0x6311, 0x6302,0x653F,0x6545,0x65AB,0x65BD,0x65E2,0x6625,0x662D, 0x6620,0x6627,0x662F,0x661F,0x6628,0x6631,0x6624,0x66F7, 0x67FF,0x67D3,0x67F1,0x67D4,0x67D0,0x67EC,0x67B6,0x67AF, 0x67F5,0x67E9,0x67EF,0x67C4,0x67D1,0x67B4,0x67DA,0x67E5, 0x67B8,0x67CF,0x67DE,0x67F3,0x67B0,0x67D9,0x67E2,0x67DD, 0x67D2,0x6B6A,0x6B83,0x6B86,0x6BB5,0x6BD2,0x6BD7,0x6C1F, 0x6CC9,0x6D0B,0x6D32,0x6D2A,0x6D41,0x6D25,0x6D0C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 83, Array index 0x1600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6D31,0x6D1E,0x6D17,0x6D3B,0x6D3D,0x6D3E,0x6D36, 0x6D1B,0x6CF5,0x6D39,0x6D27,0x6D38,0x6D29,0x6D2E,0x6D35, 0x6D0E,0x6D2B,0x70AB,0x70BA,0x70B3,0x70AC,0x70AF,0x70AD, 0x70B8,0x70AE,0x70A4,0x7230,0x7272,0x726F,0x7274,0x72E9, 0x72E0,0x72E1,0x73B7,0x73CA,0x73BB,0x73B2,0x73CD,0x73C0, 0x73B3,0x751A,0x752D,0x754F,0x754C,0x754E,0x754B,0x75AB, 0x75A4,0x75A5,0x75A2,0x75A3,0x7678,0x7686,0x7687,0x7688, 0x76C8,0x76C6,0x76C3,0x76C5,0x7701,0x76F9,0x76F8,0x7709, 0x770B,0x76FE,0x76FC,0x7707,0x77DC,0x7802,0x7814,0x780C, 0x780D,0x7946,0x7949,0x7948,0x7947,0x79B9,0x79BA,0x79D1, 0x79D2,0x79CB,0x7A7F,0x7A81,0x7AFF,0x7AFD,0x7C7D,0x7D02, 0x7D05,0x7D00,0x7D09,0x7D07,0x7D04,0x7D06,0x7F38,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 84, Array index 0x1700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7F8E,0x7FBF,0x8010,0x800D,0x8011,0x8036,0x80D6, 0x80E5,0x80DA,0x80C3,0x80C4,0x80CC,0x80E1,0x80DB,0x80CE, 0x80DE,0x80E4,0x80DD,0x81F4,0x8222,0x82E7,0x8303,0x8305, 0x82E3,0x82DB,0x82E6,0x8304,0x82E5,0x8302,0x8309,0x82D2, 0x82D7,0x82F1,0x8301,0x82DC,0x82D4,0x82D1,0x82DE,0x82D3, 0x82DF,0x82EF,0x8306,0x8650,0x8679,0x867B,0x867A,0x884D, 0x886B,0x8981,0x89D4,0x8A08,0x8A02,0x8A03,0x8C9E,0x8CA0, 0x8D74,0x8D73,0x8DB4,0x8ECD,0x8ECC,0x8FF0,0x8FE6,0x8FE2, 0x8FEA,0x8FE5,0x8FED,0x8FEB,0x8FE4,0x8FE8,0x90CA,0x90CE, 0x90C1,0x90C3,0x914B,0x914A,0x91CD,0x9582,0x9650,0x964B, 0x964C,0x964D,0x9762,0x9769,0x97CB,0x97ED,0x97F3,0x9801, 0x98A8,0x98DB,0x98DF,0x9996,0x9999,0x4E58,0x4EB3,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 85, Array index 0x1800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x500C,0x500D,0x5023,0x4FEF,0x5026,0x5025,0x4FF8, 0x5029,0x5016,0x5006,0x503C,0x501F,0x501A,0x5012,0x5011, 0x4FFA,0x5000,0x5014,0x5028,0x4FF1,0x5021,0x500B,0x5019, 0x5018,0x4FF3,0x4FEE,0x502D,0x502A,0x4FFE,0x502B,0x5009, 0x517C,0x51A4,0x51A5,0x51A2,0x51CD,0x51CC,0x51C6,0x51CB, 0x5256,0x525C,0x5254,0x525B,0x525D,0x532A,0x537F,0x539F, 0x539D,0x53DF,0x54E8,0x5510,0x5501,0x5537,0x54FC,0x54E5, 0x54F2,0x5506,0x54FA,0x5514,0x54E9,0x54ED,0x54E1,0x5509, 0x54EE,0x54EA,0x54E6,0x5527,0x5507,0x54FD,0x550F,0x5703, 0x5704,0x57C2,0x57D4,0x57CB,0x57C3,0x5809,0x590F,0x5957, 0x5958,0x595A,0x5A11,0x5A18,0x5A1C,0x5A1F,0x5A1B,0x5A13, 0x59EC,0x5A20,0x5A23,0x5A29,0x5A25,0x5A0C,0x5A09,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 86, Array index 0x1900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5B6B,0x5C58,0x5BB0,0x5BB3,0x5BB6,0x5BB4,0x5BAE, 0x5BB5,0x5BB9,0x5BB8,0x5C04,0x5C51,0x5C55,0x5C50,0x5CED, 0x5CFD,0x5CFB,0x5CEA,0x5CE8,0x5CF0,0x5CF6,0x5D01,0x5CF4, 0x5DEE,0x5E2D,0x5E2B,0x5EAB,0x5EAD,0x5EA7,0x5F31,0x5F92, 0x5F91,0x5F90,0x6059,0x6063,0x6065,0x6050,0x6055,0x606D, 0x6069,0x606F,0x6084,0x609F,0x609A,0x608D,0x6094,0x608C, 0x6085,0x6096,0x6247,0x62F3,0x6308,0x62FF,0x634E,0x633E, 0x632F,0x6355,0x6342,0x6346,0x634F,0x6349,0x633A,0x6350, 0x633D,0x632A,0x632B,0x6328,0x634D,0x634C,0x6548,0x6549, 0x6599,0x65C1,0x65C5,0x6642,0x6649,0x664F,0x6643,0x6652, 0x664C,0x6645,0x6641,0x66F8,0x6714,0x6715,0x6717,0x6821, 0x6838,0x6848,0x6846,0x6853,0x6839,0x6842,0x6854,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 87, Array index 0x1A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6829,0x68B3,0x6817,0x684C,0x6851,0x683D,0x67F4, 0x6850,0x6840,0x683C,0x6843,0x682A,0x6845,0x6813,0x6818, 0x6841,0x6B8A,0x6B89,0x6BB7,0x6C23,0x6C27,0x6C28,0x6C26, 0x6C24,0x6CF0,0x6D6A,0x6D95,0x6D88,0x6D87,0x6D66,0x6D78, 0x6D77,0x6D59,0x6D93,0x6D6C,0x6D89,0x6D6E,0x6D5A,0x6D74, 0x6D69,0x6D8C,0x6D8A,0x6D79,0x6D85,0x6D65,0x6D94,0x70CA, 0x70D8,0x70E4,0x70D9,0x70C8,0x70CF,0x7239,0x7279,0x72FC, 0x72F9,0x72FD,0x72F8,0x72F7,0x7386,0x73ED,0x7409,0x73EE, 0x73E0,0x73EA,0x73DE,0x7554,0x755D,0x755C,0x755A,0x7559, 0x75BE,0x75C5,0x75C7,0x75B2,0x75B3,0x75BD,0x75BC,0x75B9, 0x75C2,0x75B8,0x768B,0x76B0,0x76CA,0x76CD,0x76CE,0x7729, 0x771F,0x7720,0x7728,0x77E9,0x7830,0x7827,0x7838,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 88, Array index 0x1B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x781D,0x7834,0x7837,0x7825,0x782D,0x7820,0x781F, 0x7832,0x7955,0x7950,0x7960,0x795F,0x7956,0x795E,0x795D, 0x7957,0x795A,0x79E4,0x79E3,0x79E7,0x79DF,0x79E6,0x79E9, 0x79D8,0x7A84,0x7A88,0x7AD9,0x7B06,0x7B11,0x7C89,0x7D21, 0x7D17,0x7D0B,0x7D0A,0x7D20,0x7D22,0x7D14,0x7D10,0x7D15, 0x7D1A,0x7D1C,0x7D0D,0x7D19,0x7D1B,0x7F3A,0x7F5F,0x7F94, 0x7FC5,0x7FC1,0x8006,0x8004,0x8018,0x8015,0x8019,0x8017, 0x803D,0x803F,0x80F1,0x8102,0x80F0,0x8105,0x80ED,0x80F4, 0x8106,0x80F8,0x80F3,0x8108,0x80FD,0x810A,0x80FC,0x80EF, 0x81ED,0x81EC,0x8200,0x8210,0x822A,0x822B,0x8228,0x822C, 0x82BB,0x832B,0x8352,0x8354,0x834A,0x8338,0x8350,0x8349, 0x8335,0x8334,0x834F,0x8332,0x8339,0x8336,0x8317,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 89, Array index 0x1C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8340,0x8331,0x8328,0x8343,0x8654,0x868A,0x86AA, 0x8693,0x86A4,0x86A9,0x868C,0x86A3,0x869C,0x8870,0x8877, 0x8881,0x8882,0x887D,0x8879,0x8A18,0x8A10,0x8A0E,0x8A0C, 0x8A15,0x8A0A,0x8A17,0x8A13,0x8A16,0x8A0F,0x8A11,0x8C48, 0x8C7A,0x8C79,0x8CA1,0x8CA2,0x8D77,0x8EAC,0x8ED2,0x8ED4, 0x8ECF,0x8FB1,0x9001,0x9006,0x8FF7,0x9000,0x8FFA,0x8FF4, 0x9003,0x8FFD,0x9005,0x8FF8,0x9095,0x90E1,0x90DD,0x90E2, 0x9152,0x914D,0x914C,0x91D8,0x91DD,0x91D7,0x91DC,0x91D9, 0x9583,0x9662,0x9663,0x9661,0x965B,0x965D,0x9664,0x9658, 0x965E,0x96BB,0x98E2,0x99AC,0x9AA8,0x9AD8,0x9B25,0x9B32, 0x9B3C,0x4E7E,0x507A,0x507D,0x505C,0x5047,0x5043,0x504C, 0x505A,0x5049,0x5065,0x5076,0x504E,0x5055,0x5075,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 90, Array index 0x1D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5074,0x5077,0x504F,0x500F,0x506F,0x506D,0x515C, 0x5195,0x51F0,0x526A,0x526F,0x52D2,0x52D9,0x52D8,0x52D5, 0x5310,0x530F,0x5319,0x533F,0x5340,0x533E,0x53C3,0x66FC, 0x5546,0x556A,0x5566,0x5544,0x555E,0x5561,0x5543,0x554A, 0x5531,0x5556,0x554F,0x5555,0x552F,0x5564,0x5538,0x552E, 0x555C,0x552C,0x5563,0x5533,0x5541,0x5557,0x5708,0x570B, 0x5709,0x57DF,0x5805,0x580A,0x5806,0x57E0,0x57E4,0x57FA, 0x5802,0x5835,0x57F7,0x57F9,0x5920,0x5962,0x5A36,0x5A41, 0x5A49,0x5A66,0x5A6A,0x5A40,0x5A3C,0x5A62,0x5A5A,0x5A46, 0x5A4A,0x5B70,0x5BC7,0x5BC5,0x5BC4,0x5BC2,0x5BBF,0x5BC6, 0x5C09,0x5C08,0x5C07,0x5C60,0x5C5C,0x5C5D,0x5D07,0x5D06, 0x5D0E,0x5D1B,0x5D16,0x5D22,0x5D11,0x5D29,0x5D14,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 91, Array index 0x1E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5D19,0x5D24,0x5D27,0x5D17,0x5DE2,0x5E38,0x5E36, 0x5E33,0x5E37,0x5EB7,0x5EB8,0x5EB6,0x5EB5,0x5EBE,0x5F35, 0x5F37,0x5F57,0x5F6C,0x5F69,0x5F6B,0x5F97,0x5F99,0x5F9E, 0x5F98,0x5FA1,0x5FA0,0x5F9C,0x607F,0x60A3,0x6089,0x60A0, 0x60A8,0x60CB,0x60B4,0x60E6,0x60BD,0x60C5,0x60BB,0x60B5, 0x60DC,0x60BC,0x60D8,0x60D5,0x60C6,0x60DF,0x60B8,0x60DA, 0x60C7,0x621A,0x621B,0x6248,0x63A0,0x63A7,0x6372,0x6396, 0x63A2,0x63A5,0x6377,0x6367,0x6398,0x63AA,0x6371,0x63A9, 0x6389,0x6383,0x639B,0x636B,0x63A8,0x6384,0x6388,0x6399, 0x63A1,0x63AC,0x6392,0x638F,0x6380,0x637B,0x6369,0x6368, 0x637A,0x655D,0x6556,0x6551,0x6559,0x6557,0x555F,0x654F, 0x6558,0x6555,0x6554,0x659C,0x659B,0x65AC,0x65CF,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 92, Array index 0x1F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x65CB,0x65CC,0x65CE,0x665D,0x665A,0x6664,0x6668, 0x6666,0x665E,0x66F9,0x52D7,0x671B,0x6881,0x68AF,0x68A2, 0x6893,0x68B5,0x687F,0x6876,0x68B1,0x68A7,0x6897,0x68B0, 0x6883,0x68C4,0x68AD,0x6886,0x6885,0x6894,0x689D,0x68A8, 0x689F,0x68A1,0x6882,0x6B32,0x6BBA,0x6BEB,0x6BEC,0x6C2B, 0x6D8E,0x6DBC,0x6DF3,0x6DD9,0x6DB2,0x6DE1,0x6DCC,0x6DE4, 0x6DFB,0x6DFA,0x6E05,0x6DC7,0x6DCB,0x6DAF,0x6DD1,0x6DAE, 0x6DDE,0x6DF9,0x6DB8,0x6DF7,0x6DF5,0x6DC5,0x6DD2,0x6E1A, 0x6DB5,0x6DDA,0x6DEB,0x6DD8,0x6DEA,0x6DF1,0x6DEE,0x6DE8, 0x6DC6,0x6DC4,0x6DAA,0x6DEC,0x6DBF,0x6DE6,0x70F9,0x7109, 0x710A,0x70FD,0x70EF,0x723D,0x727D,0x7281,0x731C,0x731B, 0x7316,0x7313,0x7319,0x7387,0x7405,0x740A,0x7403,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 93, Array index 0x2000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7406,0x73FE,0x740D,0x74E0,0x74F6,0x74F7,0x751C, 0x7522,0x7565,0x7566,0x7562,0x7570,0x758F,0x75D4,0x75D5, 0x75B5,0x75CA,0x75CD,0x768E,0x76D4,0x76D2,0x76DB,0x7737, 0x773E,0x773C,0x7736,0x7738,0x773A,0x786B,0x7843,0x784E, 0x7965,0x7968,0x796D,0x79FB,0x7A92,0x7A95,0x7B20,0x7B28, 0x7B1B,0x7B2C,0x7B26,0x7B19,0x7B1E,0x7B2E,0x7C92,0x7C97, 0x7C95,0x7D46,0x7D43,0x7D71,0x7D2E,0x7D39,0x7D3C,0x7D40, 0x7D30,0x7D33,0x7D44,0x7D2F,0x7D42,0x7D32,0x7D31,0x7F3D, 0x7F9E,0x7F9A,0x7FCC,0x7FCE,0x7FD2,0x801C,0x804A,0x8046, 0x812F,0x8116,0x8123,0x812B,0x8129,0x8130,0x8124,0x8202, 0x8235,0x8237,0x8236,0x8239,0x838E,0x839E,0x8398,0x8378, 0x83A2,0x8396,0x83BD,0x83AB,0x8392,0x838A,0x8393,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 94, Array index 0x2100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8389,0x83A0,0x8377,0x837B,0x837C,0x8386,0x83A7, 0x8655,0x5F6A,0x86C7,0x86C0,0x86B6,0x86C4,0x86B5,0x86C6, 0x86CB,0x86B1,0x86AF,0x86C9,0x8853,0x889E,0x8888,0x88AB, 0x8892,0x8896,0x888D,0x888B,0x8993,0x898F,0x8A2A,0x8A1D, 0x8A23,0x8A25,0x8A31,0x8A2D,0x8A1F,0x8A1B,0x8A22,0x8C49, 0x8C5A,0x8CA9,0x8CAC,0x8CAB,0x8CA8,0x8CAA,0x8CA7,0x8D67, 0x8D66,0x8DBE,0x8DBA,0x8EDB,0x8EDF,0x9019,0x900D,0x901A, 0x9017,0x9023,0x901F,0x901D,0x9010,0x9015,0x901E,0x9020, 0x900F,0x9022,0x9016,0x901B,0x9014,0x90E8,0x90ED,0x90FD, 0x9157,0x91CE,0x91F5,0x91E6,0x91E3,0x91E7,0x91ED,0x91E9, 0x9589,0x966A,0x9675,0x9673,0x9678,0x9670,0x9674,0x9676, 0x9677,0x966C,0x96C0,0x96EA,0x96E9,0x7AE0,0x7ADF,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 95, Array index 0x2200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9802,0x9803,0x9B5A,0x9CE5,0x9E75,0x9E7F,0x9EA5, 0x9EBB,0x50A2,0x508D,0x5085,0x5099,0x5091,0x5080,0x5096, 0x5098,0x509A,0x6700,0x51F1,0x5272,0x5274,0x5275,0x5269, 0x52DE,0x52DD,0x52DB,0x535A,0x53A5,0x557B,0x5580,0x55A7, 0x557C,0x558A,0x559D,0x5598,0x5582,0x559C,0x55AA,0x5594, 0x5587,0x558B,0x5583,0x55B3,0x55AE,0x559F,0x553E,0x55B2, 0x559A,0x55BB,0x55AC,0x55B1,0x557E,0x5589,0x55AB,0x5599, 0x570D,0x582F,0x582A,0x5834,0x5824,0x5830,0x5831,0x5821, 0x581D,0x5820,0x58F9,0x58FA,0x5960,0x5A77,0x5A9A,0x5A7F, 0x5A92,0x5A9B,0x5AA7,0x5B73,0x5B71,0x5BD2,0x5BCC,0x5BD3, 0x5BD0,0x5C0A,0x5C0B,0x5C31,0x5D4C,0x5D50,0x5D34,0x5D47, 0x5DFD,0x5E45,0x5E3D,0x5E40,0x5E43,0x5E7E,0x5ECA,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 96, Array index 0x2300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5EC1,0x5EC2,0x5EC4,0x5F3C,0x5F6D,0x5FA9,0x5FAA, 0x5FA8,0x60D1,0x60E1,0x60B2,0x60B6,0x60E0,0x611C,0x6123, 0x60FA,0x6115,0x60F0,0x60FB,0x60F4,0x6168,0x60F1,0x610E, 0x60F6,0x6109,0x6100,0x6112,0x621F,0x6249,0x63A3,0x638C, 0x63CF,0x63C0,0x63E9,0x63C9,0x63C6,0x63CD,0x63D2,0x63E3, 0x63D0,0x63E1,0x63D6,0x63ED,0x63EE,0x6376,0x63F4,0x63EA, 0x63DB,0x6452,0x63DA,0x63F9,0x655E,0x6566,0x6562,0x6563, 0x6591,0x6590,0x65AF,0x666E,0x6670,0x6674,0x6676,0x666F, 0x6691,0x667A,0x667E,0x6677,0x66FE,0x66FF,0x671F,0x671D, 0x68FA,0x68D5,0x68E0,0x68D8,0x68D7,0x6905,0x68DF,0x68F5, 0x68EE,0x68E7,0x68F9,0x68D2,0x68F2,0x68E3,0x68CB,0x68CD, 0x690D,0x6912,0x690E,0x68C9,0x68DA,0x696E,0x68FB,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 97, Array index 0x2400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6B3E,0x6B3A,0x6B3D,0x6B98,0x6B96,0x6BBC,0x6BEF, 0x6C2E,0x6C2F,0x6C2C,0x6E2F,0x6E38,0x6E54,0x6E21,0x6E32, 0x6E67,0x6E4A,0x6E20,0x6E25,0x6E23,0x6E1B,0x6E5B,0x6E58, 0x6E24,0x6E56,0x6E6E,0x6E2D,0x6E26,0x6E6F,0x6E34,0x6E4D, 0x6E3A,0x6E2C,0x6E43,0x6E1D,0x6E3E,0x6ECB,0x6E89,0x6E19, 0x6E4E,0x6E63,0x6E44,0x6E72,0x6E69,0x6E5F,0x7119,0x711A, 0x7126,0x7130,0x7121,0x7136,0x716E,0x711C,0x724C,0x7284, 0x7280,0x7336,0x7325,0x7334,0x7329,0x743A,0x742A,0x7433, 0x7422,0x7425,0x7435,0x7436,0x7434,0x742F,0x741B,0x7426, 0x7428,0x7525,0x7526,0x756B,0x756A,0x75E2,0x75DB,0x75E3, 0x75D9,0x75D8,0x75DE,0x75E0,0x767B,0x767C,0x7696,0x7693, 0x76B4,0x76DC,0x774F,0x77ED,0x785D,0x786C,0x786F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 98, Array index 0x2500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7A0D,0x7A08,0x7A0B,0x7A05,0x7A00,0x7A98,0x7A97, 0x7A96,0x7AE5,0x7AE3,0x7B49,0x7B56,0x7B46,0x7B50,0x7B52, 0x7B54,0x7B4D,0x7B4B,0x7B4F,0x7B51,0x7C9F,0x7CA5,0x7D5E, 0x7D50,0x7D68,0x7D55,0x7D2B,0x7D6E,0x7D72,0x7D61,0x7D66, 0x7D62,0x7D70,0x7D73,0x5584,0x7FD4,0x7FD5,0x800B,0x8052, 0x8085,0x8155,0x8154,0x814B,0x8151,0x814E,0x8139,0x8146, 0x813E,0x814C,0x8153,0x8174,0x8212,0x821C,0x83E9,0x8403, 0x83F8,0x840D,0x83E0,0x83C5,0x840B,0x83C1,0x83EF,0x83F1, 0x83F4,0x8457,0x840A,0x83F0,0x840C,0x83CC,0x83FD,0x83F2, 0x83CA,0x8438,0x840E,0x8404,0x83DC,0x8407,0x83D4,0x83DF, 0x865B,0x86DF,0x86D9,0x86ED,0x86D4,0x86DB,0x86E4,0x86D0, 0x86DE,0x8857,0x88C1,0x88C2,0x88B1,0x8983,0x8996,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 99, Array index 0x2600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8A3B,0x8A60,0x8A55,0x8A5E,0x8A3C,0x8A41,0x8A54, 0x8A5B,0x8A50,0x8A46,0x8A34,0x8A3A,0x8A36,0x8A56,0x8C61, 0x8C82,0x8CAF,0x8CBC,0x8CB3,0x8CBD,0x8CC1,0x8CBB,0x8CC0, 0x8CB4,0x8CB7,0x8CB6,0x8CBF,0x8CB8,0x8D8A,0x8D85,0x8D81, 0x8DCE,0x8DDD,0x8DCB,0x8DDA,0x8DD1,0x8DCC,0x8DDB,0x8DC6, 0x8EFB,0x8EF8,0x8EFC,0x8F9C,0x902E,0x9035,0x9031,0x9038, 0x9032,0x9036,0x9102,0x90F5,0x9109,0x90FE,0x9163,0x9165, 0x91CF,0x9214,0x9215,0x9223,0x9209,0x921E,0x920D,0x9210, 0x9207,0x9211,0x9594,0x958F,0x958B,0x9591,0x9593,0x9592, 0x958E,0x968A,0x968E,0x968B,0x967D,0x9685,0x9686,0x968D, 0x9672,0x9684,0x96C1,0x96C5,0x96C4,0x96C6,0x96C7,0x96EF, 0x96F2,0x97CC,0x9805,0x9806,0x9808,0x98E7,0x98EA,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 100, Array index 0x2700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x98EF,0x98E9,0x98F2,0x98ED,0x99AE,0x99AD,0x9EC3, 0x9ECD,0x9ED1,0x4E82,0x50AD,0x50B5,0x50B2,0x50B3,0x50C5, 0x50BE,0x50AC,0x50B7,0x50BB,0x50AF,0x50C7,0x527F,0x5277, 0x527D,0x52DF,0x52E6,0x52E4,0x52E2,0x52E3,0x532F,0x55DF, 0x55E8,0x55D3,0x55E6,0x55CE,0x55DC,0x55C7,0x55D1,0x55E3, 0x55E4,0x55EF,0x55DA,0x55E1,0x55C5,0x55C6,0x55E5,0x55C9, 0x5712,0x5713,0x585E,0x5851,0x5858,0x5857,0x585A,0x5854, 0x586B,0x584C,0x586D,0x584A,0x5862,0x5852,0x584B,0x5967, 0x5AC1,0x5AC9,0x5ACC,0x5ABE,0x5ABD,0x5ABC,0x5AB3,0x5AC2, 0x5AB2,0x5D69,0x5D6F,0x5E4C,0x5E79,0x5EC9,0x5EC8,0x5F12, 0x5F59,0x5FAC,0x5FAE,0x611A,0x610F,0x6148,0x611F,0x60F3, 0x611B,0x60F9,0x6101,0x6108,0x614E,0x614C,0x6144,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 101, Array index 0x2800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x614D,0x613E,0x6134,0x6127,0x610D,0x6106,0x6137, 0x6221,0x6222,0x6413,0x643E,0x641E,0x642A,0x642D,0x643D, 0x642C,0x640F,0x641C,0x6414,0x640D,0x6436,0x6416,0x6417, 0x6406,0x656C,0x659F,0x65B0,0x6697,0x6689,0x6687,0x6688, 0x6696,0x6684,0x6698,0x668D,0x6703,0x6994,0x696D,0x695A, 0x6977,0x6960,0x6954,0x6975,0x6930,0x6982,0x694A,0x6968, 0x696B,0x695E,0x6953,0x6979,0x6986,0x695D,0x6963,0x695B, 0x6B47,0x6B72,0x6BC0,0x6BBF,0x6BD3,0x6BFD,0x6EA2,0x6EAF, 0x6ED3,0x6EB6,0x6EC2,0x6E90,0x6E9D,0x6EC7,0x6EC5,0x6EA5, 0x6E98,0x6EBC,0x6EBA,0x6EAB,0x6ED1,0x6E96,0x6E9C,0x6EC4, 0x6ED4,0x6EAA,0x6EA7,0x6EB4,0x714E,0x7159,0x7169,0x7164, 0x7149,0x7167,0x715C,0x716C,0x7166,0x714C,0x7165,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 102, Array index 0x2900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x715E,0x7146,0x7168,0x7156,0x723A,0x7252,0x7337, 0x7345,0x733F,0x733E,0x746F,0x745A,0x7455,0x745F,0x745E, 0x7441,0x743F,0x7459,0x745B,0x745C,0x7576,0x7578,0x7600, 0x75F0,0x7601,0x75F2,0x75F1,0x75FA,0x75FF,0x75F4,0x75F3, 0x76DE,0x76DF,0x775B,0x776B,0x7766,0x775E,0x7763,0x7779, 0x776A,0x776C,0x775C,0x7765,0x7768,0x7762,0x77EE,0x788E, 0x78B0,0x7897,0x7898,0x788C,0x7889,0x787C,0x7891,0x7893, 0x787F,0x797A,0x797F,0x7981,0x842C,0x79BD,0x7A1C,0x7A1A, 0x7A20,0x7A14,0x7A1F,0x7A1E,0x7A9F,0x7AA0,0x7B77,0x7BC0, 0x7B60,0x7B6E,0x7B67,0x7CB1,0x7CB3,0x7CB5,0x7D93,0x7D79, 0x7D91,0x7D81,0x7D8F,0x7D5B,0x7F6E,0x7F69,0x7F6A,0x7F72, 0x7FA9,0x7FA8,0x7FA4,0x8056,0x8058,0x8086,0x8084,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 103, Array index 0x2A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8171,0x8170,0x8178,0x8165,0x816E,0x8173,0x816B, 0x8179,0x817A,0x8166,0x8205,0x8247,0x8482,0x8477,0x843D, 0x8431,0x8475,0x8466,0x846B,0x8449,0x846C,0x845B,0x843C, 0x8435,0x8461,0x8463,0x8469,0x846D,0x8446,0x865E,0x865C, 0x865F,0x86F9,0x8713,0x8708,0x8707,0x8700,0x86FE,0x86FB, 0x8702,0x8703,0x8706,0x870A,0x8859,0x88DF,0x88D4,0x88D9, 0x88DC,0x88D8,0x88DD,0x88E1,0x88CA,0x88D5,0x88D2,0x899C, 0x89E3,0x8A6B,0x8A72,0x8A73,0x8A66,0x8A69,0x8A70,0x8A87, 0x8A7C,0x8A63,0x8AA0,0x8A71,0x8A85,0x8A6D,0x8A62,0x8A6E, 0x8A6C,0x8A79,0x8A7B,0x8A3E,0x8A68,0x8C62,0x8C8A,0x8C89, 0x8CCA,0x8CC7,0x8CC8,0x8CC4,0x8CB2,0x8CC3,0x8CC2,0x8CC5, 0x8DE1,0x8DDF,0x8DE8,0x8DEF,0x8DF3,0x8DFA,0x8DEA,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 104, Array index 0x2B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8DE4,0x8DE6,0x8EB2,0x8F03,0x8F09,0x8EFE,0x8F0A, 0x8F9F,0x8FB2,0x904B,0x904A,0x9053,0x9042,0x9054,0x903C, 0x9055,0x9050,0x9047,0x904F,0x904E,0x904D,0x9051,0x903E, 0x9041,0x9112,0x9117,0x916C,0x916A,0x9169,0x91C9,0x9237, 0x9257,0x9238,0x923D,0x9240,0x923E,0x925B,0x924B,0x9264, 0x9251,0x9234,0x9249,0x924D,0x9245,0x9239,0x923F,0x925A, 0x9598,0x9698,0x9694,0x9695,0x96CD,0x96CB,0x96C9,0x96CA, 0x96F7,0x96FB,0x96F9,0x96F6,0x9756,0x9774,0x9776,0x9810, 0x9811,0x9813,0x980A,0x9812,0x980C,0x98FC,0x98F4,0x98FD, 0x98FE,0x99B3,0x99B1,0x99B4,0x9AE1,0x9CE9,0x9E82,0x9F0E, 0x9F13,0x9F20,0x50E7,0x50EE,0x50E5,0x50D6,0x50ED,0x50DA, 0x50D5,0x50CF,0x50D1,0x50F1,0x50CE,0x50E9,0x5162,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 105, Array index 0x2C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x51F3,0x5283,0x5282,0x5331,0x53AD,0x55FE,0x5600, 0x561B,0x5617,0x55FD,0x5614,0x5606,0x5609,0x560D,0x560E, 0x55F7,0x5616,0x561F,0x5608,0x5610,0x55F6,0x5718,0x5716, 0x5875,0x587E,0x5883,0x5893,0x588A,0x5879,0x5885,0x587D, 0x58FD,0x5925,0x5922,0x5924,0x596A,0x5969,0x5AE1,0x5AE6, 0x5AE9,0x5AD7,0x5AD6,0x5AD8,0x5AE3,0x5B75,0x5BDE,0x5BE7, 0x5BE1,0x5BE5,0x5BE6,0x5BE8,0x5BE2,0x5BE4,0x5BDF,0x5C0D, 0x5C62,0x5D84,0x5D87,0x5E5B,0x5E63,0x5E55,0x5E57,0x5E54, 0x5ED3,0x5ED6,0x5F0A,0x5F46,0x5F70,0x5FB9,0x6147,0x613F, 0x614B,0x6177,0x6162,0x6163,0x615F,0x615A,0x6158,0x6175, 0x622A,0x6487,0x6458,0x6454,0x64A4,0x6478,0x645F,0x647A, 0x6451,0x6467,0x6434,0x646D,0x647B,0x6572,0x65A1,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 106, Array index 0x2D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x65D7,0x65D6,0x66A2,0x66A8,0x669D,0x699C,0x69A8, 0x6995,0x69C1,0x69AE,0x69D3,0x69CB,0x699B,0x69B7,0x69BB, 0x69AB,0x69B4,0x69D0,0x69CD,0x69AD,0x69CC,0x69A6,0x69C3, 0x69A3,0x6B49,0x6B4C,0x6C33,0x6F33,0x6F14,0x6EFE,0x6F13, 0x6EF4,0x6F29,0x6F3E,0x6F20,0x6F2C,0x6F0F,0x6F02,0x6F22, 0x6EFF,0x6EEF,0x6F06,0x6F31,0x6F38,0x6F32,0x6F23,0x6F15, 0x6F2B,0x6F2F,0x6F88,0x6F2A,0x6EEC,0x6F01,0x6EF2,0x6ECC, 0x6EF7,0x7194,0x7199,0x717D,0x718A,0x7184,0x7192,0x723E, 0x7292,0x7296,0x7344,0x7350,0x7464,0x7463,0x746A,0x7470, 0x746D,0x7504,0x7591,0x7627,0x760D,0x760B,0x7609,0x7613, 0x76E1,0x76E3,0x7784,0x777D,0x777F,0x7761,0x78C1,0x789F, 0x78A7,0x78B3,0x78A9,0x78A3,0x798E,0x798F,0x798D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 107, Array index 0x2E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7A2E,0x7A31,0x7AAA,0x7AA9,0x7AED,0x7AEF,0x7BA1, 0x7B95,0x7B8B,0x7B75,0x7B97,0x7B9D,0x7B94,0x7B8F,0x7BB8, 0x7B87,0x7B84,0x7CB9,0x7CBD,0x7CBE,0x7DBB,0x7DB0,0x7D9C, 0x7DBD,0x7DBE,0x7DA0,0x7DCA,0x7DB4,0x7DB2,0x7DB1,0x7DBA, 0x7DA2,0x7DBF,0x7DB5,0x7DB8,0x7DAD,0x7DD2,0x7DC7,0x7DAC, 0x7F70,0x7FE0,0x7FE1,0x7FDF,0x805E,0x805A,0x8087,0x8150, 0x8180,0x818F,0x8188,0x818A,0x817F,0x8182,0x81E7,0x81FA, 0x8207,0x8214,0x821E,0x824B,0x84C9,0x84BF,0x84C6,0x84C4, 0x8499,0x849E,0x84B2,0x849C,0x84CB,0x84B8,0x84C0,0x84D3, 0x8490,0x84BC,0x84D1,0x84CA,0x873F,0x871C,0x873B,0x8722, 0x8725,0x8734,0x8718,0x8755,0x8737,0x8729,0x88F3,0x8902, 0x88F4,0x88F9,0x88F8,0x88FD,0x88E8,0x891A,0x88EF,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 108, Array index 0x2F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8AA6,0x8A8C,0x8A9E,0x8AA3,0x8A8D,0x8AA1,0x8A93, 0x8AA4,0x8AAA,0x8AA5,0x8AA8,0x8A98,0x8A91,0x8A9A,0x8AA7, 0x8C6A,0x8C8D,0x8C8C,0x8CD3,0x8CD1,0x8CD2,0x8D6B,0x8D99, 0x8D95,0x8DFC,0x8F14,0x8F12,0x8F15,0x8F13,0x8FA3,0x9060, 0x9058,0x905C,0x9063,0x9059,0x905E,0x9062,0x905D,0x905B, 0x9119,0x9118,0x911E,0x9175,0x9178,0x9177,0x9174,0x9278, 0x92AC,0x9280,0x9285,0x9298,0x9296,0x927B,0x9293,0x929C, 0x92A8,0x927C,0x9291,0x95A1,0x95A8,0x95A9,0x95A3,0x95A5, 0x95A4,0x9699,0x969C,0x969B,0x96CC,0x96D2,0x9700,0x977C, 0x9785,0x97F6,0x9817,0x9818,0x98AF,0x98B1,0x9903,0x9905, 0x990C,0x9909,0x99C1,0x9AAF,0x9AB0,0x9AE6,0x9B41,0x9B42, 0x9CF4,0x9CF6,0x9CF3,0x9EBC,0x9F3B,0x9F4A,0x5104,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 109, Array index 0x3000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5100,0x50FB,0x50F5,0x50F9,0x5102,0x5108,0x5109, 0x5105,0x51DC,0x5287,0x5288,0x5289,0x528D,0x528A,0x52F0, 0x53B2,0x562E,0x563B,0x5639,0x5632,0x563F,0x5634,0x5629, 0x5653,0x564E,0x5657,0x5674,0x5636,0x562F,0x5630,0x5880, 0x589F,0x589E,0x58B3,0x589C,0x58AE,0x58A9,0x58A6,0x596D, 0x5B09,0x5AFB,0x5B0B,0x5AF5,0x5B0C,0x5B08,0x5BEE,0x5BEC, 0x5BE9,0x5BEB,0x5C64,0x5C65,0x5D9D,0x5D94,0x5E62,0x5E5F, 0x5E61,0x5EE2,0x5EDA,0x5EDF,0x5EDD,0x5EE3,0x5EE0,0x5F48, 0x5F71,0x5FB7,0x5FB5,0x6176,0x6167,0x616E,0x615D,0x6155, 0x6182,0x617C,0x6170,0x616B,0x617E,0x61A7,0x6190,0x61AB, 0x618E,0x61AC,0x619A,0x61A4,0x6194,0x61AE,0x622E,0x6469, 0x646F,0x6479,0x649E,0x64B2,0x6488,0x6490,0x64B0,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 110, Array index 0x3100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x64A5,0x6493,0x6495,0x64A9,0x6492,0x64AE,0x64AD, 0x64AB,0x649A,0x64AC,0x6499,0x64A2,0x64B3,0x6575,0x6577, 0x6578,0x66AE,0x66AB,0x66B4,0x66B1,0x6A23,0x6A1F,0x69E8, 0x6A01,0x6A1E,0x6A19,0x69FD,0x6A21,0x6A13,0x6A0A,0x69F3, 0x6A02,0x6A05,0x69ED,0x6A11,0x6B50,0x6B4E,0x6BA4,0x6BC5, 0x6BC6,0x6F3F,0x6F7C,0x6F84,0x6F51,0x6F66,0x6F54,0x6F86, 0x6F6D,0x6F5B,0x6F78,0x6F6E,0x6F8E,0x6F7A,0x6F70,0x6F64, 0x6F97,0x6F58,0x6ED5,0x6F6F,0x6F60,0x6F5F,0x719F,0x71AC, 0x71B1,0x71A8,0x7256,0x729B,0x734E,0x7357,0x7469,0x748B, 0x7483,0x747E,0x7480,0x757F,0x7620,0x7629,0x761F,0x7624, 0x7626,0x7621,0x7622,0x769A,0x76BA,0x76E4,0x778E,0x7787, 0x778C,0x7791,0x778B,0x78CB,0x78C5,0x78BA,0x78CA,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 111, Array index 0x3200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x78BE,0x78D5,0x78BC,0x78D0,0x7A3F,0x7A3C,0x7A40, 0x7A3D,0x7A37,0x7A3B,0x7AAF,0x7AAE,0x7BAD,0x7BB1,0x7BC4, 0x7BB4,0x7BC6,0x7BC7,0x7BC1,0x7BA0,0x7BCC,0x7CCA,0x7DE0, 0x7DF4,0x7DEF,0x7DFB,0x7DD8,0x7DEC,0x7DDD,0x7DE8,0x7DE3, 0x7DDA,0x7DDE,0x7DE9,0x7D9E,0x7DD9,0x7DF2,0x7DF9,0x7F75, 0x7F77,0x7FAF,0x7FE9,0x8026,0x819B,0x819C,0x819D,0x81A0, 0x819A,0x8198,0x8517,0x853D,0x851A,0x84EE,0x852C,0x852D, 0x8513,0x8511,0x8523,0x8521,0x8514,0x84EC,0x8525,0x84FF, 0x8506,0x8782,0x8774,0x8776,0x8760,0x8766,0x8778,0x8768, 0x8759,0x8757,0x874C,0x8753,0x885B,0x885D,0x8910,0x8907, 0x8912,0x8913,0x8915,0x890A,0x8ABC,0x8AD2,0x8AC7,0x8AC4, 0x8A95,0x8ACB,0x8AF8,0x8AB2,0x8AC9,0x8AC2,0x8ABF,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 112, Array index 0x3300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8AB0,0x8AD6,0x8ACD,0x8AB6,0x8AB9,0x8ADB,0x8C4C, 0x8C4E,0x8C6C,0x8CE0,0x8CDE,0x8CE6,0x8CE4,0x8CEC,0x8CED, 0x8CE2,0x8CE3,0x8CDC,0x8CEA,0x8CE1,0x8D6D,0x8D9F,0x8DA3, 0x8E2B,0x8E10,0x8E1D,0x8E22,0x8E0F,0x8E29,0x8E1F,0x8E21, 0x8E1E,0x8EBA,0x8F1D,0x8F1B,0x8F1F,0x8F29,0x8F26,0x8F2A, 0x8F1C,0x8F1E,0x8F25,0x9069,0x906E,0x9068,0x906D,0x9077, 0x9130,0x912D,0x9127,0x9131,0x9187,0x9189,0x918B,0x9183, 0x92C5,0x92BB,0x92B7,0x92EA,0x92E4,0x92C1,0x92B3,0x92BC, 0x92D2,0x92C7,0x92F0,0x92B2,0x95AD,0x95B1,0x9704,0x9706, 0x9707,0x9709,0x9760,0x978D,0x978B,0x978F,0x9821,0x982B, 0x981C,0x98B3,0x990A,0x9913,0x9912,0x9918,0x99DD,0x99D0, 0x99DF,0x99DB,0x99D1,0x99D5,0x99D2,0x99D9,0x9AB7,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 113, Array index 0x3400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9AEE,0x9AEF,0x9B27,0x9B45,0x9B44,0x9B77,0x9B6F, 0x9D06,0x9D09,0x9D03,0x9EA9,0x9EBE,0x9ECE,0x58A8,0x9F52, 0x5112,0x5118,0x5114,0x5110,0x5115,0x5180,0x51AA,0x51DD, 0x5291,0x5293,0x52F3,0x5659,0x566B,0x5679,0x5669,0x5664, 0x5678,0x566A,0x5668,0x5665,0x5671,0x566F,0x566C,0x5662, 0x5676,0x58C1,0x58BE,0x58C7,0x58C5,0x596E,0x5B1D,0x5B34, 0x5B78,0x5BF0,0x5C0E,0x5F4A,0x61B2,0x6191,0x61A9,0x618A, 0x61CD,0x61B6,0x61BE,0x61CA,0x61C8,0x6230,0x64C5,0x64C1, 0x64CB,0x64BB,0x64BC,0x64DA,0x64C4,0x64C7,0x64C2,0x64CD, 0x64BF,0x64D2,0x64D4,0x64BE,0x6574,0x66C6,0x66C9,0x66B9, 0x66C4,0x66C7,0x66B8,0x6A3D,0x6A38,0x6A3A,0x6A59,0x6A6B, 0x6A58,0x6A39,0x6A44,0x6A62,0x6A61,0x6A4B,0x6A47,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 114, Array index 0x3500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6A35,0x6A5F,0x6A48,0x6B59,0x6B77,0x6C05,0x6FC2, 0x6FB1,0x6FA1,0x6FC3,0x6FA4,0x6FC1,0x6FA7,0x6FB3,0x6FC0, 0x6FB9,0x6FB6,0x6FA6,0x6FA0,0x6FB4,0x71BE,0x71C9,0x71D0, 0x71D2,0x71C8,0x71D5,0x71B9,0x71CE,0x71D9,0x71DC,0x71C3, 0x71C4,0x7368,0x749C,0x74A3,0x7498,0x749F,0x749E,0x74E2, 0x750C,0x750D,0x7634,0x7638,0x763A,0x76E7,0x76E5,0x77A0, 0x779E,0x779F,0x77A5,0x78E8,0x78DA,0x78EC,0x78E7,0x79A6, 0x7A4D,0x7A4E,0x7A46,0x7A4C,0x7A4B,0x7ABA,0x7BD9,0x7C11, 0x7BC9,0x7BE4,0x7BDB,0x7BE1,0x7BE9,0x7BE6,0x7CD5,0x7CD6, 0x7E0A,0x7E11,0x7E08,0x7E1B,0x7E23,0x7E1E,0x7E1D,0x7E09, 0x7E10,0x7F79,0x7FB2,0x7FF0,0x7FF1,0x7FEE,0x8028,0x81B3, 0x81A9,0x81A8,0x81FB,0x8208,0x8258,0x8259,0x854A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 115, Array index 0x3600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8559,0x8548,0x8568,0x8569,0x8543,0x8549,0x856D, 0x856A,0x855E,0x8783,0x879F,0x879E,0x87A2,0x878D,0x8861, 0x892A,0x8932,0x8925,0x892B,0x8921,0x89AA,0x89A6,0x8AE6, 0x8AFA,0x8AEB,0x8AF1,0x8B00,0x8ADC,0x8AE7,0x8AEE,0x8AFE, 0x8B01,0x8B02,0x8AF7,0x8AED,0x8AF3,0x8AF6,0x8AFC,0x8C6B, 0x8C6D,0x8C93,0x8CF4,0x8E44,0x8E31,0x8E34,0x8E42,0x8E39, 0x8E35,0x8F3B,0x8F2F,0x8F38,0x8F33,0x8FA8,0x8FA6,0x9075, 0x9074,0x9078,0x9072,0x907C,0x907A,0x9134,0x9192,0x9320, 0x9336,0x92F8,0x9333,0x932F,0x9322,0x92FC,0x932B,0x9304, 0x931A,0x9310,0x9326,0x9321,0x9315,0x932E,0x9319,0x95BB, 0x96A7,0x96A8,0x96AA,0x96D5,0x970E,0x9711,0x9716,0x970D, 0x9713,0x970F,0x975B,0x975C,0x9766,0x9798,0x9830,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 116, Array index 0x3700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9838,0x983B,0x9837,0x982D,0x9839,0x9824,0x9910, 0x9928,0x991E,0x991B,0x9921,0x991A,0x99ED,0x99E2,0x99F1, 0x9AB8,0x9ABC,0x9AFB,0x9AED,0x9B28,0x9B91,0x9D15,0x9D23, 0x9D26,0x9D28,0x9D12,0x9D1B,0x9ED8,0x9ED4,0x9F8D,0x9F9C, 0x512A,0x511F,0x5121,0x5132,0x52F5,0x568E,0x5680,0x5690, 0x5685,0x5687,0x568F,0x58D5,0x58D3,0x58D1,0x58CE,0x5B30, 0x5B2A,0x5B24,0x5B7A,0x5C37,0x5C68,0x5DBC,0x5DBA,0x5DBD, 0x5DB8,0x5E6B,0x5F4C,0x5FBD,0x61C9,0x61C2,0x61C7,0x61E6, 0x61CB,0x6232,0x6234,0x64CE,0x64CA,0x64D8,0x64E0,0x64F0, 0x64E6,0x64EC,0x64F1,0x64E2,0x64ED,0x6582,0x6583,0x66D9, 0x66D6,0x6A80,0x6A94,0x6A84,0x6AA2,0x6A9C,0x6ADB,0x6AA3, 0x6A7E,0x6A97,0x6A90,0x6AA0,0x6B5C,0x6BAE,0x6BDA,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 117, Array index 0x3800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6C08,0x6FD8,0x6FF1,0x6FDF,0x6FE0,0x6FDB,0x6FE4, 0x6FEB,0x6FEF,0x6F80,0x6FEC,0x6FE1,0x6FE9,0x6FD5,0x6FEE, 0x6FF0,0x71E7,0x71DF,0x71EE,0x71E6,0x71E5,0x71ED,0x71EC, 0x71F4,0x71E0,0x7235,0x7246,0x7370,0x7372,0x74A9,0x74B0, 0x74A6,0x74A8,0x7646,0x7642,0x764C,0x76EA,0x77B3,0x77AA, 0x77B0,0x77AC,0x77A7,0x77AD,0x77EF,0x78F7,0x78FA,0x78F4, 0x78EF,0x7901,0x79A7,0x79AA,0x7A57,0x7ABF,0x7C07,0x7C0D, 0x7BFE,0x7BF7,0x7C0C,0x7BE0,0x7CE0,0x7CDC,0x7CDE,0x7CE2, 0x7CDF,0x7CD9,0x7CDD,0x7E2E,0x7E3E,0x7E46,0x7E37,0x7E32, 0x7E43,0x7E2B,0x7E3D,0x7E31,0x7E45,0x7E41,0x7E34,0x7E39, 0x7E48,0x7E35,0x7E3F,0x7E2F,0x7F44,0x7FF3,0x7FFC,0x8071, 0x8072,0x8070,0x806F,0x8073,0x81C6,0x81C3,0x81BA,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 118, Array index 0x3900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x81C2,0x81C0,0x81BF,0x81BD,0x81C9,0x81BE,0x81E8, 0x8209,0x8271,0x85AA,0x8584,0x857E,0x859C,0x8591,0x8594, 0x85AF,0x859B,0x8587,0x85A8,0x858A,0x85A6,0x8667,0x87C0, 0x87D1,0x87B3,0x87D2,0x87C6,0x87AB,0x87BB,0x87BA,0x87C8, 0x87CB,0x893B,0x8936,0x8944,0x8938,0x893D,0x89AC,0x8B0E, 0x8B17,0x8B19,0x8B1B,0x8B0A,0x8B20,0x8B1D,0x8B04,0x8B10, 0x8C41,0x8C3F,0x8C73,0x8CFA,0x8CFD,0x8CFC,0x8CF8,0x8CFB, 0x8DA8,0x8E49,0x8E4B,0x8E48,0x8E4A,0x8F44,0x8F3E,0x8F42, 0x8F45,0x8F3F,0x907F,0x907D,0x9084,0x9081,0x9082,0x9080, 0x9139,0x91A3,0x919E,0x919C,0x934D,0x9382,0x9328,0x9375, 0x934A,0x9365,0x934B,0x9318,0x937E,0x936C,0x935B,0x9370, 0x935A,0x9354,0x95CA,0x95CB,0x95CC,0x95C8,0x95C6,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 119, Array index 0x3A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x96B1,0x96B8,0x96D6,0x971C,0x971E,0x97A0,0x97D3, 0x9846,0x98B6,0x9935,0x9A01,0x99FF,0x9BAE,0x9BAB,0x9BAA, 0x9BAD,0x9D3B,0x9D3F,0x9E8B,0x9ECF,0x9EDE,0x9EDC,0x9EDD, 0x9EDB,0x9F3E,0x9F4B,0x53E2,0x5695,0x56AE,0x58D9,0x58D8, 0x5B38,0x5F5E,0x61E3,0x6233,0x64F4,0x64F2,0x64FE,0x6506, 0x64FA,0x64FB,0x64F7,0x65B7,0x66DC,0x6726,0x6AB3,0x6AAC, 0x6AC3,0x6ABB,0x6AB8,0x6AC2,0x6AAE,0x6AAF,0x6B5F,0x6B78, 0x6BAF,0x7009,0x700B,0x6FFE,0x7006,0x6FFA,0x7011,0x700F, 0x71FB,0x71FC,0x71FE,0x71F8,0x7377,0x7375,0x74A7,0x74BF, 0x7515,0x7656,0x7658,0x7652,0x77BD,0x77BF,0x77BB,0x77BC, 0x790E,0x79AE,0x7A61,0x7A62,0x7A60,0x7AC4,0x7AC5,0x7C2B, 0x7C27,0x7C2A,0x7C1E,0x7C23,0x7C21,0x7CE7,0x7E54,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 120, Array index 0x3B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7E55,0x7E5E,0x7E5A,0x7E61,0x7E52,0x7E59,0x7F48, 0x7FF9,0x7FFB,0x8077,0x8076,0x81CD,0x81CF,0x820A,0x85CF, 0x85A9,0x85CD,0x85D0,0x85C9,0x85B0,0x85BA,0x85B9,0x87EF, 0x87EC,0x87F2,0x87E0,0x8986,0x89B2,0x89F4,0x8B28,0x8B39, 0x8B2C,0x8B2B,0x8C50,0x8D05,0x8E59,0x8E63,0x8E66,0x8E64, 0x8E5F,0x8E55,0x8EC0,0x8F49,0x8F4D,0x9087,0x9083,0x9088, 0x91AB,0x91AC,0x91D0,0x9394,0x938A,0x9396,0x93A2,0x93B3, 0x93AE,0x93AC,0x93B0,0x9398,0x939A,0x9397,0x95D4,0x95D6, 0x95D0,0x95D5,0x96E2,0x96DC,0x96D9,0x96DB,0x96DE,0x9724, 0x97A3,0x97A6,0x97AD,0x97F9,0x984D,0x984F,0x984C,0x984E, 0x9853,0x98BA,0x993E,0x993F,0x993D,0x992E,0x99A5,0x9A0E, 0x9AC1,0x9B03,0x9B06,0x9B4F,0x9B4E,0x9B4D,0x9BCA,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 121, Array index 0x3C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9BC9,0x9BFD,0x9BC8,0x9BC0,0x9D51,0x9D5D,0x9D60, 0x9EE0,0x9F15,0x9F2C,0x5133,0x56A5,0x56A8,0x58DE,0x58DF, 0x58E2,0x5BF5,0x9F90,0x5EEC,0x61F2,0x61F7,0x61F6,0x61F5, 0x6500,0x650F,0x66E0,0x66DD,0x6AE5,0x6ADD,0x6ADA,0x6AD3, 0x701B,0x701F,0x7028,0x701A,0x701D,0x7015,0x7018,0x7206, 0x720D,0x7258,0x72A2,0x7378,0x737A,0x74BD,0x74CA,0x74E3, 0x7587,0x7586,0x765F,0x7661,0x77C7,0x7919,0x79B1,0x7A6B, 0x7A69,0x7C3E,0x7C3F,0x7C38,0x7C3D,0x7C37,0x7C40,0x7E6B, 0x7E6D,0x7E79,0x7E69,0x7E6A,0x7E73,0x7F85,0x7FB6,0x7FB9, 0x7FB8,0x81D8,0x85E9,0x85DD,0x85EA,0x85D5,0x85E4,0x85E5, 0x85F7,0x87FB,0x8805,0x880D,0x87F9,0x87FE,0x8960,0x895F, 0x8956,0x895E,0x8B41,0x8B5C,0x8B58,0x8B49,0x8B5A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 122, Array index 0x3D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8B4E,0x8B4F,0x8B46,0x8B59,0x8D08,0x8D0A,0x8E7C, 0x8E72,0x8E87,0x8E76,0x8E6C,0x8E7A,0x8E74,0x8F54,0x8F4E, 0x8FAD,0x908A,0x908B,0x91B1,0x91AE,0x93E1,0x93D1,0x93DF, 0x93C3,0x93C8,0x93DC,0x93DD,0x93D6,0x93E2,0x93CD,0x93D8, 0x93E4,0x93D7,0x93E8,0x95DC,0x96B4,0x96E3,0x972A,0x9727, 0x9761,0x97DC,0x97FB,0x985E,0x9858,0x985B,0x98BC,0x9945, 0x9949,0x9A16,0x9A19,0x9B0D,0x9BE8,0x9BE7,0x9BD6,0x9BDB, 0x9D89,0x9D61,0x9D72,0x9D6A,0x9D6C,0x9E92,0x9E97,0x9E93, 0x9EB4,0x52F8,0x56B7,0x56B6,0x56B4,0x56BC,0x58E4,0x5B40, 0x5B43,0x5B7D,0x5BF6,0x5DC9,0x61F8,0x61FA,0x6518,0x6514, 0x6519,0x66E6,0x6727,0x6AEC,0x703E,0x7030,0x7032,0x7210, 0x737B,0x74CF,0x7662,0x7665,0x7926,0x792A,0x792C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 123, Array index 0x3E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x792B,0x7AC7,0x7AF6,0x7C4C,0x7C43,0x7C4D,0x7CEF, 0x7CF0,0x8FAE,0x7E7D,0x7E7C,0x7E82,0x7F4C,0x8000,0x81DA, 0x8266,0x85FB,0x85F9,0x8611,0x85FA,0x8606,0x860B,0x8607, 0x860A,0x8814,0x8815,0x8964,0x89BA,0x89F8,0x8B70,0x8B6C, 0x8B66,0x8B6F,0x8B5F,0x8B6B,0x8D0F,0x8D0D,0x8E89,0x8E81, 0x8E85,0x8E82,0x91B4,0x91CB,0x9418,0x9403,0x93FD,0x95E1, 0x9730,0x98C4,0x9952,0x9951,0x99A8,0x9A2B,0x9A30,0x9A37, 0x9A35,0x9C13,0x9C0D,0x9E79,0x9EB5,0x9EE8,0x9F2F,0x9F5F, 0x9F63,0x9F61,0x5137,0x5138,0x56C1,0x56C0,0x56C2,0x5914, 0x5C6C,0x5DCD,0x61FC,0x61FE,0x651D,0x651C,0x6595,0x66E9, 0x6AFB,0x6B04,0x6AFA,0x6BB2,0x704C,0x721B,0x72A7,0x74D6, 0x74D4,0x7669,0x77D3,0x7C50,0x7E8F,0x7E8C,0x7FBC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 124, Array index 0x3F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8617,0x862D,0x861A,0x8823,0x8822,0x8821,0x881F, 0x896A,0x896C,0x89BD,0x8B74,0x8B77,0x8B7D,0x8D13,0x8E8A, 0x8E8D,0x8E8B,0x8F5F,0x8FAF,0x91BA,0x942E,0x9433,0x9435, 0x943A,0x9438,0x9432,0x942B,0x95E2,0x9738,0x9739,0x9732, 0x97FF,0x9867,0x9865,0x9957,0x9A45,0x9A43,0x9A40,0x9A3E, 0x9ACF,0x9B54,0x9B51,0x9C2D,0x9C25,0x9DAF,0x9DB4,0x9DC2, 0x9DB8,0x9E9D,0x9EEF,0x9F19,0x9F5C,0x9F66,0x9F67,0x513C, 0x513B,0x56C8,0x56CA,0x56C9,0x5B7F,0x5DD4,0x5DD2,0x5F4E, 0x61FF,0x6524,0x6B0A,0x6B61,0x7051,0x7058,0x7380,0x74E4, 0x758A,0x766E,0x766C,0x79B3,0x7C60,0x7C5F,0x807E,0x807D, 0x81DF,0x8972,0x896F,0x89FC,0x8B80,0x8D16,0x8D17,0x8E91, 0x8E93,0x8F61,0x9148,0x9444,0x9451,0x9452,0x973D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 125, Array index 0x4000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x973E,0x97C3,0x97C1,0x986B,0x9955,0x9A55,0x9A4D, 0x9AD2,0x9B1A,0x9C49,0x9C31,0x9C3E,0x9C3B,0x9DD3,0x9DD7, 0x9F34,0x9F6C,0x9F6A,0x9F94,0x56CC,0x5DD6,0x6200,0x6523, 0x652B,0x652A,0x66EC,0x6B10,0x74DA,0x7ACA,0x7C64,0x7C63, 0x7C65,0x7E93,0x7E96,0x7E94,0x81E2,0x8638,0x863F,0x8831, 0x8B8A,0x9090,0x908F,0x9463,0x9460,0x9464,0x9768,0x986F, 0x995C,0x9A5A,0x9A5B,0x9A57,0x9AD3,0x9AD4,0x9AD1,0x9C54, 0x9C57,0x9C56,0x9DE5,0x9E9F,0x9EF4,0x56D1,0x58E9,0x652C, 0x705E,0x7671,0x7672,0x77D7,0x7F50,0x7F88,0x8836,0x8839, 0x8862,0x8B93,0x8B92,0x8B96,0x8277,0x8D1B,0x91C0,0x946A, 0x9742,0x9748,0x9744,0x97C6,0x9870,0x9A5F,0x9B22,0x9B58, 0x9C5F,0x9DF9,0x9DFA,0x9E7C,0x9E7D,0x9F07,0x9F77,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 126, Array index 0x4100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9F72,0x5EF3,0x6B16,0x7063,0x7C6C,0x7C6E,0x883B, 0x89C0,0x8EA1,0x91C1,0x9472,0x9470,0x9871,0x995E,0x9AD6, 0x9B23,0x9ECC,0x7064,0x77DA,0x8B9A,0x9477,0x97C9,0x9A62, 0x9A65,0x7E9C,0x8B9C,0x8EAA,0x91C5,0x947D,0x947E,0x947C, 0x9C77,0x9C78,0x9EF7,0x8C54,0x947F,0x9E1A,0x7228,0x9A6A, 0x9B31,0x9E1B,0x9E1E,0x7C72,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, }; #endif /* ICONV_TO_UCS_CCS_CNS11643_PLANE1 && !defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * 16-bit cns11643_plane1 -> UCS size-optimized table (12138 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_CNS11643_PLANE1) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t to_ucs_size_cns11643_plane1[] = { 0x0042, /* Ranges number */ 0x0000, /* Unranged codes number */ 0x17B5, /* First unranged code index */ /* Ranges list: first code, last Code, array index. */ /* Array index: 0x0003 */ 0x2121, 0x2139, 0x00C9, /* Array index: 0x0006 */ 0x213E, 0x217E, 0x00E2, /* Array index: 0x0009 */ 0x2221, 0x227E, 0x0123, /* Array index: 0x000C */ 0x2321, 0x234E, 0x0181, /* Array index: 0x000F */ 0x2421, 0x247E, 0x01AF, /* Array index: 0x0012 */ 0x2521, 0x2570, 0x020D, /* Array index: 0x0015 */ 0x2621, 0x263E, 0x025D, /* Array index: 0x0018 */ 0x4221, 0x4241, 0x027B, /* Array index: 0x001B */ 0x4421, 0x447E, 0x029C, /* Array index: 0x001E */ 0x4521, 0x457E, 0x02FA, /* Array index: 0x0021 */ 0x4621, 0x467E, 0x0358, /* Array index: 0x0024 */ 0x4721, 0x477E, 0x03B6, /* Array index: 0x0027 */ 0x4821, 0x487E, 0x0414, /* Array index: 0x002A */ 0x4921, 0x497E, 0x0472, /* Array index: 0x002D */ 0x4A21, 0x4A7E, 0x04D0, /* Array index: 0x0030 */ 0x4B21, 0x4B7E, 0x052E, /* Array index: 0x0033 */ 0x4C21, 0x4C7E, 0x058C, /* Array index: 0x0036 */ 0x4D21, 0x4D7E, 0x05EA, /* Array index: 0x0039 */ 0x4E21, 0x4E7E, 0x0648, /* Array index: 0x003C */ 0x4F21, 0x4F7E, 0x06A6, /* Array index: 0x003F */ 0x5021, 0x507E, 0x0704, /* Array index: 0x0042 */ 0x5121, 0x517E, 0x0762, /* Array index: 0x0045 */ 0x5221, 0x527E, 0x07C0, /* Array index: 0x0048 */ 0x5321, 0x537E, 0x081E, /* Array index: 0x004B */ 0x5421, 0x547E, 0x087C, /* Array index: 0x004E */ 0x5521, 0x557E, 0x08DA, /* Array index: 0x0051 */ 0x5621, 0x567E, 0x0938, /* Array index: 0x0054 */ 0x5721, 0x577E, 0x0996, /* Array index: 0x0057 */ 0x5821, 0x587E, 0x09F4, /* Array index: 0x005A */ 0x5921, 0x597E, 0x0A52, /* Array index: 0x005D */ 0x5A21, 0x5A7E, 0x0AB0, /* Array index: 0x0060 */ 0x5B21, 0x5B7E, 0x0B0E, /* Array index: 0x0063 */ 0x5C21, 0x5C7E, 0x0B6C, /* Array index: 0x0066 */ 0x5D21, 0x5D7E, 0x0BCA, /* Array index: 0x0069 */ 0x5E21, 0x5E7E, 0x0C28, /* Array index: 0x006C */ 0x5F21, 0x5F7E, 0x0C86, /* Array index: 0x006F */ 0x6021, 0x607E, 0x0CE4, /* Array index: 0x0072 */ 0x6121, 0x617E, 0x0D42, /* Array index: 0x0075 */ 0x6221, 0x627E, 0x0DA0, /* Array index: 0x0078 */ 0x6321, 0x637E, 0x0DFE, /* Array index: 0x007B */ 0x6421, 0x647E, 0x0E5C, /* Array index: 0x007E */ 0x6521, 0x657E, 0x0EBA, /* Array index: 0x0081 */ 0x6621, 0x667E, 0x0F18, /* Array index: 0x0084 */ 0x6721, 0x677E, 0x0F76, /* Array index: 0x0087 */ 0x6821, 0x687E, 0x0FD4, /* Array index: 0x008A */ 0x6921, 0x697E, 0x1032, /* Array index: 0x008D */ 0x6A21, 0x6A7E, 0x1090, /* Array index: 0x0090 */ 0x6B21, 0x6B7E, 0x10EE, /* Array index: 0x0093 */ 0x6C21, 0x6C7E, 0x114C, /* Array index: 0x0096 */ 0x6D21, 0x6D7E, 0x11AA, /* Array index: 0x0099 */ 0x6E21, 0x6E7E, 0x1208, /* Array index: 0x009C */ 0x6F21, 0x6F7E, 0x1266, /* Array index: 0x009F */ 0x7021, 0x707E, 0x12C4, /* Array index: 0x00A2 */ 0x7121, 0x717E, 0x1322, /* Array index: 0x00A5 */ 0x7221, 0x727E, 0x1380, /* Array index: 0x00A8 */ 0x7321, 0x737E, 0x13DE, /* Array index: 0x00AB */ 0x7421, 0x747E, 0x143C, /* Array index: 0x00AE */ 0x7521, 0x757E, 0x149A, /* Array index: 0x00B1 */ 0x7621, 0x767E, 0x14F8, /* Array index: 0x00B4 */ 0x7721, 0x777E, 0x1556, /* Array index: 0x00B7 */ 0x7821, 0x787E, 0x15B4, /* Array index: 0x00BA */ 0x7921, 0x797E, 0x1612, /* Array index: 0x00BD */ 0x7A21, 0x7A7E, 0x1670, /* Array index: 0x00C0 */ 0x7B21, 0x7B7E, 0x16CE, /* Array index: 0x00C3 */ 0x7C21, 0x7C7E, 0x172C, /* Array index: 0x00C6 */ 0x7D21, 0x7D4B, 0x178A, /* Ranges content */ /* Range 0x2121 - 0x2139, array index: 0x00C9 */ 0x3000,0xFF0C,0x3001,0x3002,0xFF0E,0x30FB,0xFF1B,0xFF1A, 0xFF1F,0xFF01,0xFE30,0x2026,0x2025,0xFE50,0xFE51,0xFE52, 0x00B7,0xFE54,0xFE55,0xFE56,0xFE57,0xFE31,0x2014,0xFE32, 0x2013, /* Range 0x213E - 0x217E, array index: 0x00E2 */ 0xFF08,0xFF09,0xFE35,0xFE36,0xFF5B,0xFF5D,0xFE37,0xFE38, 0x3014,0x3015,0xFE39,0xFE3A,0x3010,0x3011,0xFE3B,0xFE3C, 0x300A,0x300B,0xFE3D,0xFE3E,0x3008,0x3009,0xFE3F,0xFE40, 0x300C,0x300D,0xFE41,0xFE42,0x300E,0x300F,0xFE43,0xFE44, 0xFE59,0xFE5A,0xFE5B,0xFE5C,0xFE5D,0xFE5E,0x2018,0x2019, 0x201C,0x201D,0x301D,0x301E,0x2032,0x2035,0xFF03,0xFF06, 0xFF0A,0x203B,0x00A7,0x3003,0x25CB,0x25CF,0x25B3,0x25B2, 0x25CE,0x2606,0x2605,0x25C7,0x25C6,0x25A1,0x25A0,0x25BD, 0x25BC, /* Range 0x2221 - 0x227E, array index: 0x0123 */ 0x32A3,0x2105,0x203E,INVALC,0xFF3F,INVALC,0xFE49,0xFE4A, 0xFE4D,0xFE4E,0xFE4B,0xFE4C,0xFE5F,0xFE60,0xFE61,0xFF0B, 0xFF0D,0x00D7,0x00F7,0x00B1,0x221A,0xFF1C,0xFF1E,0xFF1D, 0x2266,0x2267,0x2260,0x221E,0x2252,0x2261,0xFE62,0xFE63, 0xFE64,0xFE66,0xFE65,0x223C,0x2229,0x222A,0x22A5,0x2220, 0x221F,0x22BF,0x33D2,0x33D1,0x222B,0x222E,0x2235,0x2234, 0x2640,0x2642,0x2641,0x2609,0x2191,0x2193,0x2192,0x2190, 0x2196,0x2197,0x2199,0x2198,0x2016,0xFF5C,0xFF0F,0xFF3C, 0x2215,0xFE68,0xFF04,0xFFE5,0x3012,0xFFE0,0xFFE1,0xFF05, 0xFF20,0x2103,0x2109,0xFE69,0xFE6A,0xFE6B,0x33D5,0x339C, 0x339D,0x339E,0x33CE,0x33A1,0x338E,0x338F,0x33C4,0x00B0, 0x5159,0x515B,0x515E,0x515D,0x5161,0x5163, /* Range 0x2321 - 0x234E, array index: 0x0181 */ 0x55E7,0x74E9,0x7CCE,0x2581,0x2582,0x2583,0x2584,0x2585, 0x2586,0x2587,0x2588,0x258F,0x258E,0x258D,0x258C,0x258B, 0x258A,0x2589,0x253C,0x2534,0x252C,0x2524,0x251C,0x2594, 0x2500,0x2502,0x2595,0x250C,0x2510,0x2514,0x2518,0x256D, 0x256E,0x2570,0x256F,0x2550,0x255E,0x256A,0x2561,0x25E2, 0x25E3,0x25E5,0x25E4,0x2571,0x2572,0x2573, /* Range 0x2421 - 0x247E, array index: 0x01AF */ 0xFF10,0xFF11,0xFF12,0xFF13,0xFF14,0xFF15,0xFF16,0xFF17, 0xFF18,0xFF19,0x2160,0x2161,0x2162,0x2163,0x2164,0x2165, 0x2166,0x2167,0x2168,0x2169,0x3021,0x3022,0x3023,0x3024, 0x3025,0x3026,0x3027,0x3028,0x3029,INVALC,0x5344,INVALC, 0xFF21,0xFF22,0xFF23,0xFF24,0xFF25,0xFF26,0xFF27,0xFF28, 0xFF29,0xFF2A,0xFF2B,0xFF2C,0xFF2D,0xFF2E,0xFF2F,0xFF30, 0xFF31,0xFF32,0xFF33,0xFF34,0xFF35,0xFF36,0xFF37,0xFF38, 0xFF39,0xFF3A,0xFF41,0xFF42,0xFF43,0xFF44,0xFF45,0xFF46, 0xFF47,0xFF48,0xFF49,0xFF4A,0xFF4B,0xFF4C,0xFF4D,0xFF4E, 0xFF4F,0xFF50,0xFF51,0xFF52,0xFF53,0xFF54,0xFF55,0xFF56, 0xFF57,0xFF58,0xFF59,0xFF5A,0x0391,0x0392,0x0393,0x0394, 0x0395,0x0396,0x0397,0x0398,0x0399,0x039A, /* Range 0x2521 - 0x2570, array index: 0x020D */ 0x039B,0x039C,0x039D,0x039E,0x039F,0x03A0,0x03A1,0x03A3, 0x03A4,0x03A5,0x03A6,0x03A7,0x03A8,0x03A9,0x03B1,0x03B2, 0x03B3,0x03B4,0x03B5,0x03B6,0x03B7,0x03B8,0x03B9,0x03BA, 0x03BB,0x03BC,0x03BD,0x03BE,0x03BF,0x03C0,0x03C1,0x03C3, 0x03C4,0x03C5,0x03C6,0x03C7,0x03C8,0x03C9,0x3105,0x3106, 0x3107,0x3108,0x3109,0x310A,0x310B,0x310C,0x310D,0x310E, 0x310F,0x3110,0x3111,0x3112,0x3113,0x3114,0x3115,0x3116, 0x3117,0x3118,0x3119,0x311A,0x311B,0x311C,0x311D,0x311E, 0x311F,0x3120,0x3121,0x3122,0x3123,0x3124,0x3125,0x3126, 0x3127,0x3128,0x3129,0x02D9,0x02C9,0x02CA,0x02C7,0x02CB, /* Range 0x2621 - 0x263E, array index: 0x025D */ 0x2460,0x2461,0x2462,0x2463,0x2464,0x2465,0x2466,0x2467, 0x2468,0x2469,0x2474,0x2475,0x2476,0x2477,0x2478,0x2479, 0x247A,0x247B,0x247C,0x247D,0x2170,0x2171,0x2172,0x2173, 0x2174,0x2175,0x2176,0x2177,0x2178,0x2179, /* Range 0x4221 - 0x4241, array index: 0x027B */ 0x2400,0x2401,0x2402,0x2403,0x2404,0x2405,0x2406,0x2407, 0x2408,0x2409,0x240A,0x240B,0x240C,0x240D,0x240E,0x240F, 0x2410,0x2411,0x2412,0x2413,0x2414,0x2415,0x2416,0x2417, 0x2418,0x2419,0x241A,0x241B,0x241C,0x241D,0x241E,0x241F, 0x2421, /* Range 0x4421 - 0x447E, array index: 0x029C */ 0x4E00,0x4E59,0x4E01,0x4E03,0x4E43,0x4E5D,0x4E86,0x4E8C, 0x4EBA,0x513F,0x5165,0x516B,0x51E0,0x5200,0x5201,0x529B, 0x5315,0x5341,0x535C,0x53C8,0x4E09,0x4E0B,0x4E08,0x4E0A, 0x4E2B,0x4E38,0x51E1,0x4E45,0x4E48,0x4E5F,0x4E5E,0x4E8E, 0x4EA1,0x5140,0x5203,0x52FA,0x5343,0x53C9,0x53E3,0x571F, 0x58EB,0x5915,0x5927,0x5973,0x5B50,0x5B51,0x5B53,0x5BF8, 0x5C0F,0x5C22,0x5C38,0x5C71,0x5DDD,0x5DE5,0x5DF1,0x5DF2, 0x5DF3,0x5DFE,0x5E72,0x5EFE,0x5F0B,0x5F13,0x624D,0x4E11, 0x4E10,0x4E0D,0x4E2D,0x4E30,0x4E39,0x4E4B,0x5C39,0x4E88, 0x4E91,0x4E95,0x4E92,0x4E94,0x4EA2,0x4EC1,0x4EC0,0x4EC3, 0x4EC6,0x4EC7,0x4ECD,0x4ECA,0x4ECB,0x4EC4,0x5143,0x5141, 0x5167,0x516D,0x516E,0x516C,0x5197,0x51F6, /* Range 0x4521 - 0x457E, array index: 0x02FA */ 0x5206,0x5207,0x5208,0x52FB,0x52FE,0x52FF,0x5316,0x5339, 0x5348,0x5347,0x5345,0x535E,0x5384,0x53CB,0x53CA,0x53CD, 0x58EC,0x5929,0x592B,0x592A,0x592D,0x5B54,0x5C11,0x5C24, 0x5C3A,0x5C6F,0x5DF4,0x5E7B,0x5EFF,0x5F14,0x5F15,0x5FC3, 0x6208,0x6236,0x624B,0x624E,0x652F,0x6587,0x6597,0x65A4, 0x65B9,0x65E5,0x66F0,0x6708,0x6728,0x6B20,0x6B62,0x6B79, 0x6BCB,0x6BD4,0x6BDB,0x6C0F,0x6C34,0x706B,0x722A,0x7236, 0x723B,0x7247,0x7259,0x725B,0x72AC,0x738B,0x4E19,0x4E16, 0x4E15,0x4E14,0x4E18,0x4E3B,0x4E4D,0x4E4F,0x4E4E,0x4EE5, 0x4ED8,0x4ED4,0x4ED5,0x4ED6,0x4ED7,0x4EE3,0x4EE4,0x4ED9, 0x4EDE,0x5145,0x5144,0x5189,0x518A,0x51AC,0x51F9,0x51FA, 0x51F8,0x520A,0x52A0,0x529F,0x5305,0x5306, /* Range 0x4621 - 0x467E, array index: 0x0358 */ 0x5317,0x531D,0x4EDF,0x534A,0x5349,0x5361,0x5360,0x536F, 0x536E,0x53BB,0x53EF,0x53E4,0x53F3,0x53EC,0x53EE,0x53E9, 0x53E8,0x53FC,0x53F8,0x53F5,0x53EB,0x53E6,0x53EA,0x53F2, 0x53F1,0x53F0,0x53E5,0x53ED,0x53FB,0x56DB,0x56DA,0x5916, 0x592E,0x5931,0x5974,0x5976,0x5B55,0x5B83,0x5C3C,0x5DE8, 0x5DE7,0x5DE6,0x5E02,0x5E03,0x5E73,0x5E7C,0x5F01,0x5F18, 0x5F17,0x5FC5,0x620A,0x6253,0x6254,0x6252,0x6251,0x65A5, 0x65E6,0x672E,0x672C,0x672A,0x672B,0x672D,0x6B63,0x6BCD, 0x6C11,0x6C10,0x6C38,0x6C41,0x6C40,0x6C3E,0x72AF,0x7384, 0x7389,0x74DC,0x74E6,0x7518,0x751F,0x7528,0x7529,0x7530, 0x7531,0x7532,0x7533,0x758B,0x767D,0x76AE,0x76BF,0x76EE, 0x77DB,0x77E2,0x77F3,0x793A,0x79BE,0x7A74, /* Range 0x4721 - 0x477E, array index: 0x03B6 */ 0x7ACB,0x4E1E,0x4E1F,0x4E52,0x4E53,0x4E69,0x4E99,0x4EA4, 0x4EA6,0x4EA5,0x4EFF,0x4F09,0x4F19,0x4F0A,0x4F15,0x4F0D, 0x4F10,0x4F11,0x4F0F,0x4EF2,0x4EF6,0x4EFB,0x4EF0,0x4EF3, 0x4EFD,0x4F01,0x4F0B,0x5149,0x5147,0x5146,0x5148,0x5168, 0x5171,0x518D,0x51B0,0x5217,0x5211,0x5212,0x520E,0x5216, 0x52A3,0x5308,0x5321,0x5320,0x5370,0x5371,0x5409,0x540F, 0x540C,0x540A,0x5410,0x5401,0x540B,0x5404,0x5411,0x540D, 0x5408,0x5403,0x540E,0x5406,0x5412,0x56E0,0x56DE,0x56DD, 0x5733,0x5730,0x5728,0x572D,0x572C,0x572F,0x5729,0x5919, 0x591A,0x5937,0x5938,0x5984,0x5978,0x5983,0x597D,0x5979, 0x5982,0x5981,0x5B57,0x5B58,0x5B87,0x5B88,0x5B85,0x5B89, 0x5BFA,0x5C16,0x5C79,0x5DDE,0x5E06,0x5E76, /* Range 0x4821 - 0x487E, array index: 0x0414 */ 0x5E74,0x5F0F,0x5F1B,0x5FD9,0x5FD6,0x620E,0x620C,0x620D, 0x6210,0x6263,0x625B,0x6258,0x6536,0x65E9,0x65E8,0x65EC, 0x65ED,0x66F2,0x66F3,0x6709,0x673D,0x6734,0x6731,0x6735, 0x6B21,0x6B64,0x6B7B,0x6C16,0x6C5D,0x6C57,0x6C59,0x6C5F, 0x6C60,0x6C50,0x6C55,0x6C61,0x6C5B,0x6C4D,0x6C4E,0x7070, 0x725F,0x725D,0x767E,0x7AF9,0x7C73,0x7CF8,0x7F36,0x7F8A, 0x7FBD,0x8001,0x8003,0x800C,0x8012,0x8033,0x807F,0x8089, 0x808B,0x808C,0x81E3,0x81EA,0x81F3,0x81FC,0x820C,0x821B, 0x821F,0x826E,0x8272,0x827E,0x866B,0x8840,0x884C,0x8863, 0x897F,0x9621,0x4E32,0x4EA8,0x4F4D,0x4F4F,0x4F47,0x4F57, 0x4F5E,0x4F34,0x4F5B,0x4F55,0x4F30,0x4F50,0x4F51,0x4F3D, 0x4F3A,0x4F38,0x4F43,0x4F54,0x4F3C,0x4F46, /* Range 0x4921 - 0x497E, array index: 0x0472 */ 0x4F63,0x4F5C,0x4F60,0x4F2F,0x4F4E,0x4F36,0x4F59,0x4F5D, 0x4F48,0x4F5A,0x514C,0x514B,0x514D,0x5175,0x51B6,0x51B7, 0x5225,0x5224,0x5229,0x522A,0x5228,0x52AB,0x52A9,0x52AA, 0x52AC,0x5323,0x5373,0x5375,0x541D,0x542D,0x541E,0x543E, 0x5426,0x544E,0x5427,0x5446,0x5443,0x5433,0x5448,0x5442, 0x541B,0x5429,0x544A,0x5439,0x543B,0x5438,0x542E,0x5435, 0x5436,0x5420,0x543C,0x5440,0x5431,0x542B,0x541F,0x542C, 0x56EA,0x56F0,0x56E4,0x56EB,0x574A,0x5751,0x5740,0x574D, 0x5747,0x574E,0x573E,0x5750,0x574F,0x573B,0x58EF,0x593E, 0x599D,0x5992,0x59A8,0x599E,0x59A3,0x5999,0x5996,0x598D, 0x59A4,0x5993,0x598A,0x59A5,0x5B5D,0x5B5C,0x5B5A,0x5B5B, 0x5B8C,0x5B8B,0x5B8F,0x5C2C,0x5C40,0x5C41, /* Range 0x4A21 - 0x4A7E, array index: 0x04D0 */ 0x5C3F,0x5C3E,0x5C90,0x5C91,0x5C94,0x5C8C,0x5DEB,0x5E0C, 0x5E8F,0x5E87,0x5E8A,0x5EF7,0x5F04,0x5F1F,0x5F64,0x5F62, 0x5F77,0x5F79,0x5FD8,0x5FCC,0x5FD7,0x5FCD,0x5FF1,0x5FEB, 0x5FF8,0x5FEA,0x6212,0x6211,0x6284,0x6297,0x6296,0x6280, 0x6276,0x6289,0x626D,0x628A,0x627C,0x627E,0x6279,0x6273, 0x6292,0x626F,0x6298,0x626E,0x6295,0x6293,0x6291,0x6286, 0x6539,0x653B,0x6538,0x65F1,0x66F4,0x675F,0x674E,0x674F, 0x6750,0x6751,0x675C,0x6756,0x675E,0x6749,0x6746,0x6760, 0x6753,0x6757,0x6B65,0x6BCF,0x6C42,0x6C5E,0x6C99,0x6C81, 0x6C88,0x6C89,0x6C85,0x6C9B,0x6C6A,0x6C7A,0x6C90,0x6C70, 0x6C8C,0x6C68,0x6C96,0x6C92,0x6C7D,0x6C83,0x6C72,0x6C7E, 0x6C74,0x6C86,0x6C76,0x6C8D,0x6C94,0x6C98, /* Range 0x4B21 - 0x4B7E, array index: 0x052E */ 0x6C82,0x7076,0x707C,0x707D,0x7078,0x7262,0x7261,0x7260, 0x72C4,0x72C2,0x7396,0x752C,0x752B,0x7537,0x7538,0x7682, 0x76EF,0x77E3,0x79C1,0x79C0,0x79BF,0x7A76,0x7CFB,0x7F55, 0x8096,0x8093,0x809D,0x8098,0x809B,0x809A,0x80B2,0x826F, 0x8292,0x828B,0x828D,0x898B,0x89D2,0x8A00,0x8C37,0x8C46, 0x8C55,0x8C9D,0x8D64,0x8D70,0x8DB3,0x8EAB,0x8ECA,0x8F9B, 0x8FB0,0x8FC2,0x8FC6,0x8FC5,0x8FC4,0x5DE1,0x9091,0x90A2, 0x90AA,0x90A6,0x90A3,0x9149,0x91C6,0x91CC,0x9632,0x962E, 0x9631,0x962A,0x962C,0x4E26,0x4E56,0x4E73,0x4E8B,0x4E9B, 0x4E9E,0x4EAB,0x4EAC,0x4F6F,0x4F9D,0x4F8D,0x4F73,0x4F7F, 0x4F6C,0x4F9B,0x4F8B,0x4F86,0x4F83,0x4F70,0x4F75,0x4F88, 0x4F69,0x4F7B,0x4F96,0x4F7E,0x4F8F,0x4F91, /* Range 0x4C21 - 0x4C7E, array index: 0x058C */ 0x4F7A,0x5154,0x5152,0x5155,0x5169,0x5177,0x5176,0x5178, 0x51BD,0x51FD,0x523B,0x5238,0x5237,0x523A,0x5230,0x522E, 0x5236,0x5241,0x52BE,0x52BB,0x5352,0x5354,0x5353,0x5351, 0x5366,0x5377,0x5378,0x5379,0x53D6,0x53D4,0x53D7,0x5473, 0x5475,0x5496,0x5478,0x5495,0x5480,0x547B,0x5477,0x5484, 0x5492,0x5486,0x547C,0x5490,0x5471,0x5476,0x548C,0x549A, 0x5462,0x5468,0x548B,0x547D,0x548E,0x56FA,0x5783,0x5777, 0x576A,0x5769,0x5761,0x5766,0x5764,0x577C,0x591C,0x5949, 0x5947,0x5948,0x5944,0x5954,0x59BE,0x59BB,0x59D4,0x59B9, 0x59AE,0x59D1,0x59C6,0x59D0,0x59CD,0x59CB,0x59D3,0x59CA, 0x59AF,0x59B3,0x59D2,0x59C5,0x5B5F,0x5B64,0x5B63,0x5B97, 0x5B9A,0x5B98,0x5B9C,0x5B99,0x5B9B,0x5C1A, /* Range 0x4D21 - 0x4D7E, array index: 0x05EA */ 0x5C48,0x5C45,0x5C46,0x5CB7,0x5CA1,0x5CB8,0x5CA9,0x5CAB, 0x5CB1,0x5CB3,0x5E18,0x5E1A,0x5E16,0x5E15,0x5E1B,0x5E11, 0x5E78,0x5E9A,0x5E97,0x5E9C,0x5E95,0x5E96,0x5EF6,0x5F26, 0x5F27,0x5F29,0x5F80,0x5F81,0x5F7F,0x5F7C,0x5FDD,0x5FE0, 0x5FFD,0x5FF5,0x5FFF,0x600F,0x6014,0x602F,0x6035,0x6016, 0x602A,0x6015,0x6021,0x6027,0x6029,0x602B,0x601B,0x6216, 0x6215,0x623F,0x623E,0x6240,0x627F,0x62C9,0x62CC,0x62C4, 0x62BF,0x62C2,0x62B9,0x62D2,0x62DB,0x62AB,0x62D3,0x62D4, 0x62CB,0x62C8,0x62A8,0x62BD,0x62BC,0x62D0,0x62D9,0x62C7, 0x62CD,0x62B5,0x62DA,0x62B1,0x62D8,0x62D6,0x62D7,0x62C6, 0x62AC,0x62CE,0x653E,0x65A7,0x65BC,0x65FA,0x6614,0x6613, 0x660C,0x6606,0x6602,0x660E,0x6600,0x660F, /* Range 0x4E21 - 0x4E7E, array index: 0x0648 */ 0x6615,0x660A,0x6607,0x670D,0x670B,0x676D,0x678B,0x6795, 0x6771,0x679C,0x6773,0x6777,0x6787,0x679D,0x6797,0x676F, 0x6770,0x677F,0x6789,0x677E,0x6790,0x6775,0x679A,0x6793, 0x677C,0x676A,0x6772,0x6B23,0x6B66,0x6B67,0x6B7F,0x6C13, 0x6C1B,0x6CE3,0x6CE8,0x6CF3,0x6CB1,0x6CCC,0x6CE5,0x6CB3, 0x6CBD,0x6CBE,0x6CBC,0x6CE2,0x6CAB,0x6CD5,0x6CD3,0x6CB8, 0x6CC4,0x6CB9,0x6CC1,0x6CAE,0x6CD7,0x6CC5,0x6CF1,0x6CBF, 0x6CBB,0x6CE1,0x6CDB,0x6CCA,0x6CAC,0x6CEF,0x6CDC,0x6CD6, 0x6CE0,0x7095,0x708E,0x7092,0x708A,0x7099,0x722C,0x722D, 0x7238,0x7248,0x7267,0x7269,0x72C0,0x72CE,0x72D9,0x72D7, 0x72D0,0x73A9,0x73A8,0x739F,0x73AB,0x73A5,0x753D,0x759D, 0x7599,0x759A,0x7684,0x76C2,0x76F2,0x76F4, /* Range 0x4F21 - 0x4F7E, array index: 0x06A6 */ 0x77E5,0x77FD,0x793E,0x7940,0x7941,0x79C9,0x79C8,0x7A7A, 0x7A79,0x7AFA,0x7CFE,0x7F54,0x7F8C,0x7F8B,0x8005,0x80BA, 0x80A5,0x80A2,0x80B1,0x80A1,0x80AB,0x80A9,0x80B4,0x80AA, 0x80AF,0x81E5,0x81FE,0x820D,0x82B3,0x829D,0x8299,0x82AD, 0x82BD,0x829F,0x82B9,0x82B1,0x82AC,0x82A5,0x82AF,0x82B8, 0x82A3,0x82B0,0x82BE,0x82B7,0x864E,0x8671,0x521D,0x8868, 0x8ECB,0x8FCE,0x8FD4,0x8FD1,0x90B5,0x90B8,0x90B1,0x90B6, 0x91C7,0x91D1,0x9577,0x9580,0x961C,0x9640,0x963F,0x963B, 0x9644,0x9642,0x96B9,0x96E8,0x9752,0x975E,0x4E9F,0x4EAD, 0x4EAE,0x4FE1,0x4FB5,0x4FAF,0x4FBF,0x4FE0,0x4FD1,0x4FCF, 0x4FDD,0x4FC3,0x4FB6,0x4FD8,0x4FDF,0x4FCA,0x4FD7,0x4FAE, 0x4FD0,0x4FC4,0x4FC2,0x4FDA,0x4FCE,0x4FDE, /* Range 0x5021 - 0x507E, array index: 0x0704 */ 0x4FB7,0x5157,0x5192,0x5191,0x51A0,0x524E,0x5243,0x524A, 0x524D,0x524C,0x524B,0x5247,0x52C7,0x52C9,0x52C3,0x52C1, 0x530D,0x5357,0x537B,0x539A,0x53DB,0x54AC,0x54C0,0x54A8, 0x54CE,0x54C9,0x54B8,0x54A6,0x54B3,0x54C7,0x54C2,0x54BD, 0x54AA,0x54C1,0x54C4,0x54C8,0x54AF,0x54AB,0x54B1,0x54BB, 0x54A9,0x54A7,0x54BF,0x56FF,0x5782,0x578B,0x57A0,0x57A3, 0x57A2,0x57CE,0x57AE,0x5793,0x5955,0x5951,0x594F,0x594E, 0x5950,0x59DC,0x59D8,0x59FF,0x59E3,0x59E8,0x5A03,0x59E5, 0x59EA,0x59DA,0x59E6,0x5A01,0x59FB,0x5B69,0x5BA3,0x5BA6, 0x5BA4,0x5BA2,0x5BA5,0x5C01,0x5C4E,0x5C4F,0x5C4D,0x5C4B, 0x5CD9,0x5CD2,0x5DF7,0x5E1D,0x5E25,0x5E1F,0x5E7D,0x5EA0, 0x5EA6,0x5EFA,0x5F08,0x5F2D,0x5F65,0x5F88, /* Range 0x5121 - 0x517E, array index: 0x0762 */ 0x5F85,0x5F8A,0x5F8B,0x5F87,0x5F8C,0x5F89,0x6012,0x601D, 0x6020,0x6025,0x600E,0x6028,0x604D,0x6070,0x6068,0x6062, 0x6046,0x6043,0x606C,0x606B,0x606A,0x6064,0x6241,0x62DC, 0x6316,0x6309,0x62FC,0x62ED,0x6301,0x62EE,0x62FD,0x6307, 0x62F1,0x62F7,0x62EF,0x62EC,0x62FE,0x62F4,0x6311,0x6302, 0x653F,0x6545,0x65AB,0x65BD,0x65E2,0x6625,0x662D,0x6620, 0x6627,0x662F,0x661F,0x6628,0x6631,0x6624,0x66F7,0x67FF, 0x67D3,0x67F1,0x67D4,0x67D0,0x67EC,0x67B6,0x67AF,0x67F5, 0x67E9,0x67EF,0x67C4,0x67D1,0x67B4,0x67DA,0x67E5,0x67B8, 0x67CF,0x67DE,0x67F3,0x67B0,0x67D9,0x67E2,0x67DD,0x67D2, 0x6B6A,0x6B83,0x6B86,0x6BB5,0x6BD2,0x6BD7,0x6C1F,0x6CC9, 0x6D0B,0x6D32,0x6D2A,0x6D41,0x6D25,0x6D0C, /* Range 0x5221 - 0x527E, array index: 0x07C0 */ 0x6D31,0x6D1E,0x6D17,0x6D3B,0x6D3D,0x6D3E,0x6D36,0x6D1B, 0x6CF5,0x6D39,0x6D27,0x6D38,0x6D29,0x6D2E,0x6D35,0x6D0E, 0x6D2B,0x70AB,0x70BA,0x70B3,0x70AC,0x70AF,0x70AD,0x70B8, 0x70AE,0x70A4,0x7230,0x7272,0x726F,0x7274,0x72E9,0x72E0, 0x72E1,0x73B7,0x73CA,0x73BB,0x73B2,0x73CD,0x73C0,0x73B3, 0x751A,0x752D,0x754F,0x754C,0x754E,0x754B,0x75AB,0x75A4, 0x75A5,0x75A2,0x75A3,0x7678,0x7686,0x7687,0x7688,0x76C8, 0x76C6,0x76C3,0x76C5,0x7701,0x76F9,0x76F8,0x7709,0x770B, 0x76FE,0x76FC,0x7707,0x77DC,0x7802,0x7814,0x780C,0x780D, 0x7946,0x7949,0x7948,0x7947,0x79B9,0x79BA,0x79D1,0x79D2, 0x79CB,0x7A7F,0x7A81,0x7AFF,0x7AFD,0x7C7D,0x7D02,0x7D05, 0x7D00,0x7D09,0x7D07,0x7D04,0x7D06,0x7F38, /* Range 0x5321 - 0x537E, array index: 0x081E */ 0x7F8E,0x7FBF,0x8010,0x800D,0x8011,0x8036,0x80D6,0x80E5, 0x80DA,0x80C3,0x80C4,0x80CC,0x80E1,0x80DB,0x80CE,0x80DE, 0x80E4,0x80DD,0x81F4,0x8222,0x82E7,0x8303,0x8305,0x82E3, 0x82DB,0x82E6,0x8304,0x82E5,0x8302,0x8309,0x82D2,0x82D7, 0x82F1,0x8301,0x82DC,0x82D4,0x82D1,0x82DE,0x82D3,0x82DF, 0x82EF,0x8306,0x8650,0x8679,0x867B,0x867A,0x884D,0x886B, 0x8981,0x89D4,0x8A08,0x8A02,0x8A03,0x8C9E,0x8CA0,0x8D74, 0x8D73,0x8DB4,0x8ECD,0x8ECC,0x8FF0,0x8FE6,0x8FE2,0x8FEA, 0x8FE5,0x8FED,0x8FEB,0x8FE4,0x8FE8,0x90CA,0x90CE,0x90C1, 0x90C3,0x914B,0x914A,0x91CD,0x9582,0x9650,0x964B,0x964C, 0x964D,0x9762,0x9769,0x97CB,0x97ED,0x97F3,0x9801,0x98A8, 0x98DB,0x98DF,0x9996,0x9999,0x4E58,0x4EB3, /* Range 0x5421 - 0x547E, array index: 0x087C */ 0x500C,0x500D,0x5023,0x4FEF,0x5026,0x5025,0x4FF8,0x5029, 0x5016,0x5006,0x503C,0x501F,0x501A,0x5012,0x5011,0x4FFA, 0x5000,0x5014,0x5028,0x4FF1,0x5021,0x500B,0x5019,0x5018, 0x4FF3,0x4FEE,0x502D,0x502A,0x4FFE,0x502B,0x5009,0x517C, 0x51A4,0x51A5,0x51A2,0x51CD,0x51CC,0x51C6,0x51CB,0x5256, 0x525C,0x5254,0x525B,0x525D,0x532A,0x537F,0x539F,0x539D, 0x53DF,0x54E8,0x5510,0x5501,0x5537,0x54FC,0x54E5,0x54F2, 0x5506,0x54FA,0x5514,0x54E9,0x54ED,0x54E1,0x5509,0x54EE, 0x54EA,0x54E6,0x5527,0x5507,0x54FD,0x550F,0x5703,0x5704, 0x57C2,0x57D4,0x57CB,0x57C3,0x5809,0x590F,0x5957,0x5958, 0x595A,0x5A11,0x5A18,0x5A1C,0x5A1F,0x5A1B,0x5A13,0x59EC, 0x5A20,0x5A23,0x5A29,0x5A25,0x5A0C,0x5A09, /* Range 0x5521 - 0x557E, array index: 0x08DA */ 0x5B6B,0x5C58,0x5BB0,0x5BB3,0x5BB6,0x5BB4,0x5BAE,0x5BB5, 0x5BB9,0x5BB8,0x5C04,0x5C51,0x5C55,0x5C50,0x5CED,0x5CFD, 0x5CFB,0x5CEA,0x5CE8,0x5CF0,0x5CF6,0x5D01,0x5CF4,0x5DEE, 0x5E2D,0x5E2B,0x5EAB,0x5EAD,0x5EA7,0x5F31,0x5F92,0x5F91, 0x5F90,0x6059,0x6063,0x6065,0x6050,0x6055,0x606D,0x6069, 0x606F,0x6084,0x609F,0x609A,0x608D,0x6094,0x608C,0x6085, 0x6096,0x6247,0x62F3,0x6308,0x62FF,0x634E,0x633E,0x632F, 0x6355,0x6342,0x6346,0x634F,0x6349,0x633A,0x6350,0x633D, 0x632A,0x632B,0x6328,0x634D,0x634C,0x6548,0x6549,0x6599, 0x65C1,0x65C5,0x6642,0x6649,0x664F,0x6643,0x6652,0x664C, 0x6645,0x6641,0x66F8,0x6714,0x6715,0x6717,0x6821,0x6838, 0x6848,0x6846,0x6853,0x6839,0x6842,0x6854, /* Range 0x5621 - 0x567E, array index: 0x0938 */ 0x6829,0x68B3,0x6817,0x684C,0x6851,0x683D,0x67F4,0x6850, 0x6840,0x683C,0x6843,0x682A,0x6845,0x6813,0x6818,0x6841, 0x6B8A,0x6B89,0x6BB7,0x6C23,0x6C27,0x6C28,0x6C26,0x6C24, 0x6CF0,0x6D6A,0x6D95,0x6D88,0x6D87,0x6D66,0x6D78,0x6D77, 0x6D59,0x6D93,0x6D6C,0x6D89,0x6D6E,0x6D5A,0x6D74,0x6D69, 0x6D8C,0x6D8A,0x6D79,0x6D85,0x6D65,0x6D94,0x70CA,0x70D8, 0x70E4,0x70D9,0x70C8,0x70CF,0x7239,0x7279,0x72FC,0x72F9, 0x72FD,0x72F8,0x72F7,0x7386,0x73ED,0x7409,0x73EE,0x73E0, 0x73EA,0x73DE,0x7554,0x755D,0x755C,0x755A,0x7559,0x75BE, 0x75C5,0x75C7,0x75B2,0x75B3,0x75BD,0x75BC,0x75B9,0x75C2, 0x75B8,0x768B,0x76B0,0x76CA,0x76CD,0x76CE,0x7729,0x771F, 0x7720,0x7728,0x77E9,0x7830,0x7827,0x7838, /* Range 0x5721 - 0x577E, array index: 0x0996 */ 0x781D,0x7834,0x7837,0x7825,0x782D,0x7820,0x781F,0x7832, 0x7955,0x7950,0x7960,0x795F,0x7956,0x795E,0x795D,0x7957, 0x795A,0x79E4,0x79E3,0x79E7,0x79DF,0x79E6,0x79E9,0x79D8, 0x7A84,0x7A88,0x7AD9,0x7B06,0x7B11,0x7C89,0x7D21,0x7D17, 0x7D0B,0x7D0A,0x7D20,0x7D22,0x7D14,0x7D10,0x7D15,0x7D1A, 0x7D1C,0x7D0D,0x7D19,0x7D1B,0x7F3A,0x7F5F,0x7F94,0x7FC5, 0x7FC1,0x8006,0x8004,0x8018,0x8015,0x8019,0x8017,0x803D, 0x803F,0x80F1,0x8102,0x80F0,0x8105,0x80ED,0x80F4,0x8106, 0x80F8,0x80F3,0x8108,0x80FD,0x810A,0x80FC,0x80EF,0x81ED, 0x81EC,0x8200,0x8210,0x822A,0x822B,0x8228,0x822C,0x82BB, 0x832B,0x8352,0x8354,0x834A,0x8338,0x8350,0x8349,0x8335, 0x8334,0x834F,0x8332,0x8339,0x8336,0x8317, /* Range 0x5821 - 0x587E, array index: 0x09F4 */ 0x8340,0x8331,0x8328,0x8343,0x8654,0x868A,0x86AA,0x8693, 0x86A4,0x86A9,0x868C,0x86A3,0x869C,0x8870,0x8877,0x8881, 0x8882,0x887D,0x8879,0x8A18,0x8A10,0x8A0E,0x8A0C,0x8A15, 0x8A0A,0x8A17,0x8A13,0x8A16,0x8A0F,0x8A11,0x8C48,0x8C7A, 0x8C79,0x8CA1,0x8CA2,0x8D77,0x8EAC,0x8ED2,0x8ED4,0x8ECF, 0x8FB1,0x9001,0x9006,0x8FF7,0x9000,0x8FFA,0x8FF4,0x9003, 0x8FFD,0x9005,0x8FF8,0x9095,0x90E1,0x90DD,0x90E2,0x9152, 0x914D,0x914C,0x91D8,0x91DD,0x91D7,0x91DC,0x91D9,0x9583, 0x9662,0x9663,0x9661,0x965B,0x965D,0x9664,0x9658,0x965E, 0x96BB,0x98E2,0x99AC,0x9AA8,0x9AD8,0x9B25,0x9B32,0x9B3C, 0x4E7E,0x507A,0x507D,0x505C,0x5047,0x5043,0x504C,0x505A, 0x5049,0x5065,0x5076,0x504E,0x5055,0x5075, /* Range 0x5921 - 0x597E, array index: 0x0A52 */ 0x5074,0x5077,0x504F,0x500F,0x506F,0x506D,0x515C,0x5195, 0x51F0,0x526A,0x526F,0x52D2,0x52D9,0x52D8,0x52D5,0x5310, 0x530F,0x5319,0x533F,0x5340,0x533E,0x53C3,0x66FC,0x5546, 0x556A,0x5566,0x5544,0x555E,0x5561,0x5543,0x554A,0x5531, 0x5556,0x554F,0x5555,0x552F,0x5564,0x5538,0x552E,0x555C, 0x552C,0x5563,0x5533,0x5541,0x5557,0x5708,0x570B,0x5709, 0x57DF,0x5805,0x580A,0x5806,0x57E0,0x57E4,0x57FA,0x5802, 0x5835,0x57F7,0x57F9,0x5920,0x5962,0x5A36,0x5A41,0x5A49, 0x5A66,0x5A6A,0x5A40,0x5A3C,0x5A62,0x5A5A,0x5A46,0x5A4A, 0x5B70,0x5BC7,0x5BC5,0x5BC4,0x5BC2,0x5BBF,0x5BC6,0x5C09, 0x5C08,0x5C07,0x5C60,0x5C5C,0x5C5D,0x5D07,0x5D06,0x5D0E, 0x5D1B,0x5D16,0x5D22,0x5D11,0x5D29,0x5D14, /* Range 0x5A21 - 0x5A7E, array index: 0x0AB0 */ 0x5D19,0x5D24,0x5D27,0x5D17,0x5DE2,0x5E38,0x5E36,0x5E33, 0x5E37,0x5EB7,0x5EB8,0x5EB6,0x5EB5,0x5EBE,0x5F35,0x5F37, 0x5F57,0x5F6C,0x5F69,0x5F6B,0x5F97,0x5F99,0x5F9E,0x5F98, 0x5FA1,0x5FA0,0x5F9C,0x607F,0x60A3,0x6089,0x60A0,0x60A8, 0x60CB,0x60B4,0x60E6,0x60BD,0x60C5,0x60BB,0x60B5,0x60DC, 0x60BC,0x60D8,0x60D5,0x60C6,0x60DF,0x60B8,0x60DA,0x60C7, 0x621A,0x621B,0x6248,0x63A0,0x63A7,0x6372,0x6396,0x63A2, 0x63A5,0x6377,0x6367,0x6398,0x63AA,0x6371,0x63A9,0x6389, 0x6383,0x639B,0x636B,0x63A8,0x6384,0x6388,0x6399,0x63A1, 0x63AC,0x6392,0x638F,0x6380,0x637B,0x6369,0x6368,0x637A, 0x655D,0x6556,0x6551,0x6559,0x6557,0x555F,0x654F,0x6558, 0x6555,0x6554,0x659C,0x659B,0x65AC,0x65CF, /* Range 0x5B21 - 0x5B7E, array index: 0x0B0E */ 0x65CB,0x65CC,0x65CE,0x665D,0x665A,0x6664,0x6668,0x6666, 0x665E,0x66F9,0x52D7,0x671B,0x6881,0x68AF,0x68A2,0x6893, 0x68B5,0x687F,0x6876,0x68B1,0x68A7,0x6897,0x68B0,0x6883, 0x68C4,0x68AD,0x6886,0x6885,0x6894,0x689D,0x68A8,0x689F, 0x68A1,0x6882,0x6B32,0x6BBA,0x6BEB,0x6BEC,0x6C2B,0x6D8E, 0x6DBC,0x6DF3,0x6DD9,0x6DB2,0x6DE1,0x6DCC,0x6DE4,0x6DFB, 0x6DFA,0x6E05,0x6DC7,0x6DCB,0x6DAF,0x6DD1,0x6DAE,0x6DDE, 0x6DF9,0x6DB8,0x6DF7,0x6DF5,0x6DC5,0x6DD2,0x6E1A,0x6DB5, 0x6DDA,0x6DEB,0x6DD8,0x6DEA,0x6DF1,0x6DEE,0x6DE8,0x6DC6, 0x6DC4,0x6DAA,0x6DEC,0x6DBF,0x6DE6,0x70F9,0x7109,0x710A, 0x70FD,0x70EF,0x723D,0x727D,0x7281,0x731C,0x731B,0x7316, 0x7313,0x7319,0x7387,0x7405,0x740A,0x7403, /* Range 0x5C21 - 0x5C7E, array index: 0x0B6C */ 0x7406,0x73FE,0x740D,0x74E0,0x74F6,0x74F7,0x751C,0x7522, 0x7565,0x7566,0x7562,0x7570,0x758F,0x75D4,0x75D5,0x75B5, 0x75CA,0x75CD,0x768E,0x76D4,0x76D2,0x76DB,0x7737,0x773E, 0x773C,0x7736,0x7738,0x773A,0x786B,0x7843,0x784E,0x7965, 0x7968,0x796D,0x79FB,0x7A92,0x7A95,0x7B20,0x7B28,0x7B1B, 0x7B2C,0x7B26,0x7B19,0x7B1E,0x7B2E,0x7C92,0x7C97,0x7C95, 0x7D46,0x7D43,0x7D71,0x7D2E,0x7D39,0x7D3C,0x7D40,0x7D30, 0x7D33,0x7D44,0x7D2F,0x7D42,0x7D32,0x7D31,0x7F3D,0x7F9E, 0x7F9A,0x7FCC,0x7FCE,0x7FD2,0x801C,0x804A,0x8046,0x812F, 0x8116,0x8123,0x812B,0x8129,0x8130,0x8124,0x8202,0x8235, 0x8237,0x8236,0x8239,0x838E,0x839E,0x8398,0x8378,0x83A2, 0x8396,0x83BD,0x83AB,0x8392,0x838A,0x8393, /* Range 0x5D21 - 0x5D7E, array index: 0x0BCA */ 0x8389,0x83A0,0x8377,0x837B,0x837C,0x8386,0x83A7,0x8655, 0x5F6A,0x86C7,0x86C0,0x86B6,0x86C4,0x86B5,0x86C6,0x86CB, 0x86B1,0x86AF,0x86C9,0x8853,0x889E,0x8888,0x88AB,0x8892, 0x8896,0x888D,0x888B,0x8993,0x898F,0x8A2A,0x8A1D,0x8A23, 0x8A25,0x8A31,0x8A2D,0x8A1F,0x8A1B,0x8A22,0x8C49,0x8C5A, 0x8CA9,0x8CAC,0x8CAB,0x8CA8,0x8CAA,0x8CA7,0x8D67,0x8D66, 0x8DBE,0x8DBA,0x8EDB,0x8EDF,0x9019,0x900D,0x901A,0x9017, 0x9023,0x901F,0x901D,0x9010,0x9015,0x901E,0x9020,0x900F, 0x9022,0x9016,0x901B,0x9014,0x90E8,0x90ED,0x90FD,0x9157, 0x91CE,0x91F5,0x91E6,0x91E3,0x91E7,0x91ED,0x91E9,0x9589, 0x966A,0x9675,0x9673,0x9678,0x9670,0x9674,0x9676,0x9677, 0x966C,0x96C0,0x96EA,0x96E9,0x7AE0,0x7ADF, /* Range 0x5E21 - 0x5E7E, array index: 0x0C28 */ 0x9802,0x9803,0x9B5A,0x9CE5,0x9E75,0x9E7F,0x9EA5,0x9EBB, 0x50A2,0x508D,0x5085,0x5099,0x5091,0x5080,0x5096,0x5098, 0x509A,0x6700,0x51F1,0x5272,0x5274,0x5275,0x5269,0x52DE, 0x52DD,0x52DB,0x535A,0x53A5,0x557B,0x5580,0x55A7,0x557C, 0x558A,0x559D,0x5598,0x5582,0x559C,0x55AA,0x5594,0x5587, 0x558B,0x5583,0x55B3,0x55AE,0x559F,0x553E,0x55B2,0x559A, 0x55BB,0x55AC,0x55B1,0x557E,0x5589,0x55AB,0x5599,0x570D, 0x582F,0x582A,0x5834,0x5824,0x5830,0x5831,0x5821,0x581D, 0x5820,0x58F9,0x58FA,0x5960,0x5A77,0x5A9A,0x5A7F,0x5A92, 0x5A9B,0x5AA7,0x5B73,0x5B71,0x5BD2,0x5BCC,0x5BD3,0x5BD0, 0x5C0A,0x5C0B,0x5C31,0x5D4C,0x5D50,0x5D34,0x5D47,0x5DFD, 0x5E45,0x5E3D,0x5E40,0x5E43,0x5E7E,0x5ECA, /* Range 0x5F21 - 0x5F7E, array index: 0x0C86 */ 0x5EC1,0x5EC2,0x5EC4,0x5F3C,0x5F6D,0x5FA9,0x5FAA,0x5FA8, 0x60D1,0x60E1,0x60B2,0x60B6,0x60E0,0x611C,0x6123,0x60FA, 0x6115,0x60F0,0x60FB,0x60F4,0x6168,0x60F1,0x610E,0x60F6, 0x6109,0x6100,0x6112,0x621F,0x6249,0x63A3,0x638C,0x63CF, 0x63C0,0x63E9,0x63C9,0x63C6,0x63CD,0x63D2,0x63E3,0x63D0, 0x63E1,0x63D6,0x63ED,0x63EE,0x6376,0x63F4,0x63EA,0x63DB, 0x6452,0x63DA,0x63F9,0x655E,0x6566,0x6562,0x6563,0x6591, 0x6590,0x65AF,0x666E,0x6670,0x6674,0x6676,0x666F,0x6691, 0x667A,0x667E,0x6677,0x66FE,0x66FF,0x671F,0x671D,0x68FA, 0x68D5,0x68E0,0x68D8,0x68D7,0x6905,0x68DF,0x68F5,0x68EE, 0x68E7,0x68F9,0x68D2,0x68F2,0x68E3,0x68CB,0x68CD,0x690D, 0x6912,0x690E,0x68C9,0x68DA,0x696E,0x68FB, /* Range 0x6021 - 0x607E, array index: 0x0CE4 */ 0x6B3E,0x6B3A,0x6B3D,0x6B98,0x6B96,0x6BBC,0x6BEF,0x6C2E, 0x6C2F,0x6C2C,0x6E2F,0x6E38,0x6E54,0x6E21,0x6E32,0x6E67, 0x6E4A,0x6E20,0x6E25,0x6E23,0x6E1B,0x6E5B,0x6E58,0x6E24, 0x6E56,0x6E6E,0x6E2D,0x6E26,0x6E6F,0x6E34,0x6E4D,0x6E3A, 0x6E2C,0x6E43,0x6E1D,0x6E3E,0x6ECB,0x6E89,0x6E19,0x6E4E, 0x6E63,0x6E44,0x6E72,0x6E69,0x6E5F,0x7119,0x711A,0x7126, 0x7130,0x7121,0x7136,0x716E,0x711C,0x724C,0x7284,0x7280, 0x7336,0x7325,0x7334,0x7329,0x743A,0x742A,0x7433,0x7422, 0x7425,0x7435,0x7436,0x7434,0x742F,0x741B,0x7426,0x7428, 0x7525,0x7526,0x756B,0x756A,0x75E2,0x75DB,0x75E3,0x75D9, 0x75D8,0x75DE,0x75E0,0x767B,0x767C,0x7696,0x7693,0x76B4, 0x76DC,0x774F,0x77ED,0x785D,0x786C,0x786F, /* Range 0x6121 - 0x617E, array index: 0x0D42 */ 0x7A0D,0x7A08,0x7A0B,0x7A05,0x7A00,0x7A98,0x7A97,0x7A96, 0x7AE5,0x7AE3,0x7B49,0x7B56,0x7B46,0x7B50,0x7B52,0x7B54, 0x7B4D,0x7B4B,0x7B4F,0x7B51,0x7C9F,0x7CA5,0x7D5E,0x7D50, 0x7D68,0x7D55,0x7D2B,0x7D6E,0x7D72,0x7D61,0x7D66,0x7D62, 0x7D70,0x7D73,0x5584,0x7FD4,0x7FD5,0x800B,0x8052,0x8085, 0x8155,0x8154,0x814B,0x8151,0x814E,0x8139,0x8146,0x813E, 0x814C,0x8153,0x8174,0x8212,0x821C,0x83E9,0x8403,0x83F8, 0x840D,0x83E0,0x83C5,0x840B,0x83C1,0x83EF,0x83F1,0x83F4, 0x8457,0x840A,0x83F0,0x840C,0x83CC,0x83FD,0x83F2,0x83CA, 0x8438,0x840E,0x8404,0x83DC,0x8407,0x83D4,0x83DF,0x865B, 0x86DF,0x86D9,0x86ED,0x86D4,0x86DB,0x86E4,0x86D0,0x86DE, 0x8857,0x88C1,0x88C2,0x88B1,0x8983,0x8996, /* Range 0x6221 - 0x627E, array index: 0x0DA0 */ 0x8A3B,0x8A60,0x8A55,0x8A5E,0x8A3C,0x8A41,0x8A54,0x8A5B, 0x8A50,0x8A46,0x8A34,0x8A3A,0x8A36,0x8A56,0x8C61,0x8C82, 0x8CAF,0x8CBC,0x8CB3,0x8CBD,0x8CC1,0x8CBB,0x8CC0,0x8CB4, 0x8CB7,0x8CB6,0x8CBF,0x8CB8,0x8D8A,0x8D85,0x8D81,0x8DCE, 0x8DDD,0x8DCB,0x8DDA,0x8DD1,0x8DCC,0x8DDB,0x8DC6,0x8EFB, 0x8EF8,0x8EFC,0x8F9C,0x902E,0x9035,0x9031,0x9038,0x9032, 0x9036,0x9102,0x90F5,0x9109,0x90FE,0x9163,0x9165,0x91CF, 0x9214,0x9215,0x9223,0x9209,0x921E,0x920D,0x9210,0x9207, 0x9211,0x9594,0x958F,0x958B,0x9591,0x9593,0x9592,0x958E, 0x968A,0x968E,0x968B,0x967D,0x9685,0x9686,0x968D,0x9672, 0x9684,0x96C1,0x96C5,0x96C4,0x96C6,0x96C7,0x96EF,0x96F2, 0x97CC,0x9805,0x9806,0x9808,0x98E7,0x98EA, /* Range 0x6321 - 0x637E, array index: 0x0DFE */ 0x98EF,0x98E9,0x98F2,0x98ED,0x99AE,0x99AD,0x9EC3,0x9ECD, 0x9ED1,0x4E82,0x50AD,0x50B5,0x50B2,0x50B3,0x50C5,0x50BE, 0x50AC,0x50B7,0x50BB,0x50AF,0x50C7,0x527F,0x5277,0x527D, 0x52DF,0x52E6,0x52E4,0x52E2,0x52E3,0x532F,0x55DF,0x55E8, 0x55D3,0x55E6,0x55CE,0x55DC,0x55C7,0x55D1,0x55E3,0x55E4, 0x55EF,0x55DA,0x55E1,0x55C5,0x55C6,0x55E5,0x55C9,0x5712, 0x5713,0x585E,0x5851,0x5858,0x5857,0x585A,0x5854,0x586B, 0x584C,0x586D,0x584A,0x5862,0x5852,0x584B,0x5967,0x5AC1, 0x5AC9,0x5ACC,0x5ABE,0x5ABD,0x5ABC,0x5AB3,0x5AC2,0x5AB2, 0x5D69,0x5D6F,0x5E4C,0x5E79,0x5EC9,0x5EC8,0x5F12,0x5F59, 0x5FAC,0x5FAE,0x611A,0x610F,0x6148,0x611F,0x60F3,0x611B, 0x60F9,0x6101,0x6108,0x614E,0x614C,0x6144, /* Range 0x6421 - 0x647E, array index: 0x0E5C */ 0x614D,0x613E,0x6134,0x6127,0x610D,0x6106,0x6137,0x6221, 0x6222,0x6413,0x643E,0x641E,0x642A,0x642D,0x643D,0x642C, 0x640F,0x641C,0x6414,0x640D,0x6436,0x6416,0x6417,0x6406, 0x656C,0x659F,0x65B0,0x6697,0x6689,0x6687,0x6688,0x6696, 0x6684,0x6698,0x668D,0x6703,0x6994,0x696D,0x695A,0x6977, 0x6960,0x6954,0x6975,0x6930,0x6982,0x694A,0x6968,0x696B, 0x695E,0x6953,0x6979,0x6986,0x695D,0x6963,0x695B,0x6B47, 0x6B72,0x6BC0,0x6BBF,0x6BD3,0x6BFD,0x6EA2,0x6EAF,0x6ED3, 0x6EB6,0x6EC2,0x6E90,0x6E9D,0x6EC7,0x6EC5,0x6EA5,0x6E98, 0x6EBC,0x6EBA,0x6EAB,0x6ED1,0x6E96,0x6E9C,0x6EC4,0x6ED4, 0x6EAA,0x6EA7,0x6EB4,0x714E,0x7159,0x7169,0x7164,0x7149, 0x7167,0x715C,0x716C,0x7166,0x714C,0x7165, /* Range 0x6521 - 0x657E, array index: 0x0EBA */ 0x715E,0x7146,0x7168,0x7156,0x723A,0x7252,0x7337,0x7345, 0x733F,0x733E,0x746F,0x745A,0x7455,0x745F,0x745E,0x7441, 0x743F,0x7459,0x745B,0x745C,0x7576,0x7578,0x7600,0x75F0, 0x7601,0x75F2,0x75F1,0x75FA,0x75FF,0x75F4,0x75F3,0x76DE, 0x76DF,0x775B,0x776B,0x7766,0x775E,0x7763,0x7779,0x776A, 0x776C,0x775C,0x7765,0x7768,0x7762,0x77EE,0x788E,0x78B0, 0x7897,0x7898,0x788C,0x7889,0x787C,0x7891,0x7893,0x787F, 0x797A,0x797F,0x7981,0x842C,0x79BD,0x7A1C,0x7A1A,0x7A20, 0x7A14,0x7A1F,0x7A1E,0x7A9F,0x7AA0,0x7B77,0x7BC0,0x7B60, 0x7B6E,0x7B67,0x7CB1,0x7CB3,0x7CB5,0x7D93,0x7D79,0x7D91, 0x7D81,0x7D8F,0x7D5B,0x7F6E,0x7F69,0x7F6A,0x7F72,0x7FA9, 0x7FA8,0x7FA4,0x8056,0x8058,0x8086,0x8084, /* Range 0x6621 - 0x667E, array index: 0x0F18 */ 0x8171,0x8170,0x8178,0x8165,0x816E,0x8173,0x816B,0x8179, 0x817A,0x8166,0x8205,0x8247,0x8482,0x8477,0x843D,0x8431, 0x8475,0x8466,0x846B,0x8449,0x846C,0x845B,0x843C,0x8435, 0x8461,0x8463,0x8469,0x846D,0x8446,0x865E,0x865C,0x865F, 0x86F9,0x8713,0x8708,0x8707,0x8700,0x86FE,0x86FB,0x8702, 0x8703,0x8706,0x870A,0x8859,0x88DF,0x88D4,0x88D9,0x88DC, 0x88D8,0x88DD,0x88E1,0x88CA,0x88D5,0x88D2,0x899C,0x89E3, 0x8A6B,0x8A72,0x8A73,0x8A66,0x8A69,0x8A70,0x8A87,0x8A7C, 0x8A63,0x8AA0,0x8A71,0x8A85,0x8A6D,0x8A62,0x8A6E,0x8A6C, 0x8A79,0x8A7B,0x8A3E,0x8A68,0x8C62,0x8C8A,0x8C89,0x8CCA, 0x8CC7,0x8CC8,0x8CC4,0x8CB2,0x8CC3,0x8CC2,0x8CC5,0x8DE1, 0x8DDF,0x8DE8,0x8DEF,0x8DF3,0x8DFA,0x8DEA, /* Range 0x6721 - 0x677E, array index: 0x0F76 */ 0x8DE4,0x8DE6,0x8EB2,0x8F03,0x8F09,0x8EFE,0x8F0A,0x8F9F, 0x8FB2,0x904B,0x904A,0x9053,0x9042,0x9054,0x903C,0x9055, 0x9050,0x9047,0x904F,0x904E,0x904D,0x9051,0x903E,0x9041, 0x9112,0x9117,0x916C,0x916A,0x9169,0x91C9,0x9237,0x9257, 0x9238,0x923D,0x9240,0x923E,0x925B,0x924B,0x9264,0x9251, 0x9234,0x9249,0x924D,0x9245,0x9239,0x923F,0x925A,0x9598, 0x9698,0x9694,0x9695,0x96CD,0x96CB,0x96C9,0x96CA,0x96F7, 0x96FB,0x96F9,0x96F6,0x9756,0x9774,0x9776,0x9810,0x9811, 0x9813,0x980A,0x9812,0x980C,0x98FC,0x98F4,0x98FD,0x98FE, 0x99B3,0x99B1,0x99B4,0x9AE1,0x9CE9,0x9E82,0x9F0E,0x9F13, 0x9F20,0x50E7,0x50EE,0x50E5,0x50D6,0x50ED,0x50DA,0x50D5, 0x50CF,0x50D1,0x50F1,0x50CE,0x50E9,0x5162, /* Range 0x6821 - 0x687E, array index: 0x0FD4 */ 0x51F3,0x5283,0x5282,0x5331,0x53AD,0x55FE,0x5600,0x561B, 0x5617,0x55FD,0x5614,0x5606,0x5609,0x560D,0x560E,0x55F7, 0x5616,0x561F,0x5608,0x5610,0x55F6,0x5718,0x5716,0x5875, 0x587E,0x5883,0x5893,0x588A,0x5879,0x5885,0x587D,0x58FD, 0x5925,0x5922,0x5924,0x596A,0x5969,0x5AE1,0x5AE6,0x5AE9, 0x5AD7,0x5AD6,0x5AD8,0x5AE3,0x5B75,0x5BDE,0x5BE7,0x5BE1, 0x5BE5,0x5BE6,0x5BE8,0x5BE2,0x5BE4,0x5BDF,0x5C0D,0x5C62, 0x5D84,0x5D87,0x5E5B,0x5E63,0x5E55,0x5E57,0x5E54,0x5ED3, 0x5ED6,0x5F0A,0x5F46,0x5F70,0x5FB9,0x6147,0x613F,0x614B, 0x6177,0x6162,0x6163,0x615F,0x615A,0x6158,0x6175,0x622A, 0x6487,0x6458,0x6454,0x64A4,0x6478,0x645F,0x647A,0x6451, 0x6467,0x6434,0x646D,0x647B,0x6572,0x65A1, /* Range 0x6921 - 0x697E, array index: 0x1032 */ 0x65D7,0x65D6,0x66A2,0x66A8,0x669D,0x699C,0x69A8,0x6995, 0x69C1,0x69AE,0x69D3,0x69CB,0x699B,0x69B7,0x69BB,0x69AB, 0x69B4,0x69D0,0x69CD,0x69AD,0x69CC,0x69A6,0x69C3,0x69A3, 0x6B49,0x6B4C,0x6C33,0x6F33,0x6F14,0x6EFE,0x6F13,0x6EF4, 0x6F29,0x6F3E,0x6F20,0x6F2C,0x6F0F,0x6F02,0x6F22,0x6EFF, 0x6EEF,0x6F06,0x6F31,0x6F38,0x6F32,0x6F23,0x6F15,0x6F2B, 0x6F2F,0x6F88,0x6F2A,0x6EEC,0x6F01,0x6EF2,0x6ECC,0x6EF7, 0x7194,0x7199,0x717D,0x718A,0x7184,0x7192,0x723E,0x7292, 0x7296,0x7344,0x7350,0x7464,0x7463,0x746A,0x7470,0x746D, 0x7504,0x7591,0x7627,0x760D,0x760B,0x7609,0x7613,0x76E1, 0x76E3,0x7784,0x777D,0x777F,0x7761,0x78C1,0x789F,0x78A7, 0x78B3,0x78A9,0x78A3,0x798E,0x798F,0x798D, /* Range 0x6A21 - 0x6A7E, array index: 0x1090 */ 0x7A2E,0x7A31,0x7AAA,0x7AA9,0x7AED,0x7AEF,0x7BA1,0x7B95, 0x7B8B,0x7B75,0x7B97,0x7B9D,0x7B94,0x7B8F,0x7BB8,0x7B87, 0x7B84,0x7CB9,0x7CBD,0x7CBE,0x7DBB,0x7DB0,0x7D9C,0x7DBD, 0x7DBE,0x7DA0,0x7DCA,0x7DB4,0x7DB2,0x7DB1,0x7DBA,0x7DA2, 0x7DBF,0x7DB5,0x7DB8,0x7DAD,0x7DD2,0x7DC7,0x7DAC,0x7F70, 0x7FE0,0x7FE1,0x7FDF,0x805E,0x805A,0x8087,0x8150,0x8180, 0x818F,0x8188,0x818A,0x817F,0x8182,0x81E7,0x81FA,0x8207, 0x8214,0x821E,0x824B,0x84C9,0x84BF,0x84C6,0x84C4,0x8499, 0x849E,0x84B2,0x849C,0x84CB,0x84B8,0x84C0,0x84D3,0x8490, 0x84BC,0x84D1,0x84CA,0x873F,0x871C,0x873B,0x8722,0x8725, 0x8734,0x8718,0x8755,0x8737,0x8729,0x88F3,0x8902,0x88F4, 0x88F9,0x88F8,0x88FD,0x88E8,0x891A,0x88EF, /* Range 0x6B21 - 0x6B7E, array index: 0x10EE */ 0x8AA6,0x8A8C,0x8A9E,0x8AA3,0x8A8D,0x8AA1,0x8A93,0x8AA4, 0x8AAA,0x8AA5,0x8AA8,0x8A98,0x8A91,0x8A9A,0x8AA7,0x8C6A, 0x8C8D,0x8C8C,0x8CD3,0x8CD1,0x8CD2,0x8D6B,0x8D99,0x8D95, 0x8DFC,0x8F14,0x8F12,0x8F15,0x8F13,0x8FA3,0x9060,0x9058, 0x905C,0x9063,0x9059,0x905E,0x9062,0x905D,0x905B,0x9119, 0x9118,0x911E,0x9175,0x9178,0x9177,0x9174,0x9278,0x92AC, 0x9280,0x9285,0x9298,0x9296,0x927B,0x9293,0x929C,0x92A8, 0x927C,0x9291,0x95A1,0x95A8,0x95A9,0x95A3,0x95A5,0x95A4, 0x9699,0x969C,0x969B,0x96CC,0x96D2,0x9700,0x977C,0x9785, 0x97F6,0x9817,0x9818,0x98AF,0x98B1,0x9903,0x9905,0x990C, 0x9909,0x99C1,0x9AAF,0x9AB0,0x9AE6,0x9B41,0x9B42,0x9CF4, 0x9CF6,0x9CF3,0x9EBC,0x9F3B,0x9F4A,0x5104, /* Range 0x6C21 - 0x6C7E, array index: 0x114C */ 0x5100,0x50FB,0x50F5,0x50F9,0x5102,0x5108,0x5109,0x5105, 0x51DC,0x5287,0x5288,0x5289,0x528D,0x528A,0x52F0,0x53B2, 0x562E,0x563B,0x5639,0x5632,0x563F,0x5634,0x5629,0x5653, 0x564E,0x5657,0x5674,0x5636,0x562F,0x5630,0x5880,0x589F, 0x589E,0x58B3,0x589C,0x58AE,0x58A9,0x58A6,0x596D,0x5B09, 0x5AFB,0x5B0B,0x5AF5,0x5B0C,0x5B08,0x5BEE,0x5BEC,0x5BE9, 0x5BEB,0x5C64,0x5C65,0x5D9D,0x5D94,0x5E62,0x5E5F,0x5E61, 0x5EE2,0x5EDA,0x5EDF,0x5EDD,0x5EE3,0x5EE0,0x5F48,0x5F71, 0x5FB7,0x5FB5,0x6176,0x6167,0x616E,0x615D,0x6155,0x6182, 0x617C,0x6170,0x616B,0x617E,0x61A7,0x6190,0x61AB,0x618E, 0x61AC,0x619A,0x61A4,0x6194,0x61AE,0x622E,0x6469,0x646F, 0x6479,0x649E,0x64B2,0x6488,0x6490,0x64B0, /* Range 0x6D21 - 0x6D7E, array index: 0x11AA */ 0x64A5,0x6493,0x6495,0x64A9,0x6492,0x64AE,0x64AD,0x64AB, 0x649A,0x64AC,0x6499,0x64A2,0x64B3,0x6575,0x6577,0x6578, 0x66AE,0x66AB,0x66B4,0x66B1,0x6A23,0x6A1F,0x69E8,0x6A01, 0x6A1E,0x6A19,0x69FD,0x6A21,0x6A13,0x6A0A,0x69F3,0x6A02, 0x6A05,0x69ED,0x6A11,0x6B50,0x6B4E,0x6BA4,0x6BC5,0x6BC6, 0x6F3F,0x6F7C,0x6F84,0x6F51,0x6F66,0x6F54,0x6F86,0x6F6D, 0x6F5B,0x6F78,0x6F6E,0x6F8E,0x6F7A,0x6F70,0x6F64,0x6F97, 0x6F58,0x6ED5,0x6F6F,0x6F60,0x6F5F,0x719F,0x71AC,0x71B1, 0x71A8,0x7256,0x729B,0x734E,0x7357,0x7469,0x748B,0x7483, 0x747E,0x7480,0x757F,0x7620,0x7629,0x761F,0x7624,0x7626, 0x7621,0x7622,0x769A,0x76BA,0x76E4,0x778E,0x7787,0x778C, 0x7791,0x778B,0x78CB,0x78C5,0x78BA,0x78CA, /* Range 0x6E21 - 0x6E7E, array index: 0x1208 */ 0x78BE,0x78D5,0x78BC,0x78D0,0x7A3F,0x7A3C,0x7A40,0x7A3D, 0x7A37,0x7A3B,0x7AAF,0x7AAE,0x7BAD,0x7BB1,0x7BC4,0x7BB4, 0x7BC6,0x7BC7,0x7BC1,0x7BA0,0x7BCC,0x7CCA,0x7DE0,0x7DF4, 0x7DEF,0x7DFB,0x7DD8,0x7DEC,0x7DDD,0x7DE8,0x7DE3,0x7DDA, 0x7DDE,0x7DE9,0x7D9E,0x7DD9,0x7DF2,0x7DF9,0x7F75,0x7F77, 0x7FAF,0x7FE9,0x8026,0x819B,0x819C,0x819D,0x81A0,0x819A, 0x8198,0x8517,0x853D,0x851A,0x84EE,0x852C,0x852D,0x8513, 0x8511,0x8523,0x8521,0x8514,0x84EC,0x8525,0x84FF,0x8506, 0x8782,0x8774,0x8776,0x8760,0x8766,0x8778,0x8768,0x8759, 0x8757,0x874C,0x8753,0x885B,0x885D,0x8910,0x8907,0x8912, 0x8913,0x8915,0x890A,0x8ABC,0x8AD2,0x8AC7,0x8AC4,0x8A95, 0x8ACB,0x8AF8,0x8AB2,0x8AC9,0x8AC2,0x8ABF, /* Range 0x6F21 - 0x6F7E, array index: 0x1266 */ 0x8AB0,0x8AD6,0x8ACD,0x8AB6,0x8AB9,0x8ADB,0x8C4C,0x8C4E, 0x8C6C,0x8CE0,0x8CDE,0x8CE6,0x8CE4,0x8CEC,0x8CED,0x8CE2, 0x8CE3,0x8CDC,0x8CEA,0x8CE1,0x8D6D,0x8D9F,0x8DA3,0x8E2B, 0x8E10,0x8E1D,0x8E22,0x8E0F,0x8E29,0x8E1F,0x8E21,0x8E1E, 0x8EBA,0x8F1D,0x8F1B,0x8F1F,0x8F29,0x8F26,0x8F2A,0x8F1C, 0x8F1E,0x8F25,0x9069,0x906E,0x9068,0x906D,0x9077,0x9130, 0x912D,0x9127,0x9131,0x9187,0x9189,0x918B,0x9183,0x92C5, 0x92BB,0x92B7,0x92EA,0x92E4,0x92C1,0x92B3,0x92BC,0x92D2, 0x92C7,0x92F0,0x92B2,0x95AD,0x95B1,0x9704,0x9706,0x9707, 0x9709,0x9760,0x978D,0x978B,0x978F,0x9821,0x982B,0x981C, 0x98B3,0x990A,0x9913,0x9912,0x9918,0x99DD,0x99D0,0x99DF, 0x99DB,0x99D1,0x99D5,0x99D2,0x99D9,0x9AB7, /* Range 0x7021 - 0x707E, array index: 0x12C4 */ 0x9AEE,0x9AEF,0x9B27,0x9B45,0x9B44,0x9B77,0x9B6F,0x9D06, 0x9D09,0x9D03,0x9EA9,0x9EBE,0x9ECE,0x58A8,0x9F52,0x5112, 0x5118,0x5114,0x5110,0x5115,0x5180,0x51AA,0x51DD,0x5291, 0x5293,0x52F3,0x5659,0x566B,0x5679,0x5669,0x5664,0x5678, 0x566A,0x5668,0x5665,0x5671,0x566F,0x566C,0x5662,0x5676, 0x58C1,0x58BE,0x58C7,0x58C5,0x596E,0x5B1D,0x5B34,0x5B78, 0x5BF0,0x5C0E,0x5F4A,0x61B2,0x6191,0x61A9,0x618A,0x61CD, 0x61B6,0x61BE,0x61CA,0x61C8,0x6230,0x64C5,0x64C1,0x64CB, 0x64BB,0x64BC,0x64DA,0x64C4,0x64C7,0x64C2,0x64CD,0x64BF, 0x64D2,0x64D4,0x64BE,0x6574,0x66C6,0x66C9,0x66B9,0x66C4, 0x66C7,0x66B8,0x6A3D,0x6A38,0x6A3A,0x6A59,0x6A6B,0x6A58, 0x6A39,0x6A44,0x6A62,0x6A61,0x6A4B,0x6A47, /* Range 0x7121 - 0x717E, array index: 0x1322 */ 0x6A35,0x6A5F,0x6A48,0x6B59,0x6B77,0x6C05,0x6FC2,0x6FB1, 0x6FA1,0x6FC3,0x6FA4,0x6FC1,0x6FA7,0x6FB3,0x6FC0,0x6FB9, 0x6FB6,0x6FA6,0x6FA0,0x6FB4,0x71BE,0x71C9,0x71D0,0x71D2, 0x71C8,0x71D5,0x71B9,0x71CE,0x71D9,0x71DC,0x71C3,0x71C4, 0x7368,0x749C,0x74A3,0x7498,0x749F,0x749E,0x74E2,0x750C, 0x750D,0x7634,0x7638,0x763A,0x76E7,0x76E5,0x77A0,0x779E, 0x779F,0x77A5,0x78E8,0x78DA,0x78EC,0x78E7,0x79A6,0x7A4D, 0x7A4E,0x7A46,0x7A4C,0x7A4B,0x7ABA,0x7BD9,0x7C11,0x7BC9, 0x7BE4,0x7BDB,0x7BE1,0x7BE9,0x7BE6,0x7CD5,0x7CD6,0x7E0A, 0x7E11,0x7E08,0x7E1B,0x7E23,0x7E1E,0x7E1D,0x7E09,0x7E10, 0x7F79,0x7FB2,0x7FF0,0x7FF1,0x7FEE,0x8028,0x81B3,0x81A9, 0x81A8,0x81FB,0x8208,0x8258,0x8259,0x854A, /* Range 0x7221 - 0x727E, array index: 0x1380 */ 0x8559,0x8548,0x8568,0x8569,0x8543,0x8549,0x856D,0x856A, 0x855E,0x8783,0x879F,0x879E,0x87A2,0x878D,0x8861,0x892A, 0x8932,0x8925,0x892B,0x8921,0x89AA,0x89A6,0x8AE6,0x8AFA, 0x8AEB,0x8AF1,0x8B00,0x8ADC,0x8AE7,0x8AEE,0x8AFE,0x8B01, 0x8B02,0x8AF7,0x8AED,0x8AF3,0x8AF6,0x8AFC,0x8C6B,0x8C6D, 0x8C93,0x8CF4,0x8E44,0x8E31,0x8E34,0x8E42,0x8E39,0x8E35, 0x8F3B,0x8F2F,0x8F38,0x8F33,0x8FA8,0x8FA6,0x9075,0x9074, 0x9078,0x9072,0x907C,0x907A,0x9134,0x9192,0x9320,0x9336, 0x92F8,0x9333,0x932F,0x9322,0x92FC,0x932B,0x9304,0x931A, 0x9310,0x9326,0x9321,0x9315,0x932E,0x9319,0x95BB,0x96A7, 0x96A8,0x96AA,0x96D5,0x970E,0x9711,0x9716,0x970D,0x9713, 0x970F,0x975B,0x975C,0x9766,0x9798,0x9830, /* Range 0x7321 - 0x737E, array index: 0x13DE */ 0x9838,0x983B,0x9837,0x982D,0x9839,0x9824,0x9910,0x9928, 0x991E,0x991B,0x9921,0x991A,0x99ED,0x99E2,0x99F1,0x9AB8, 0x9ABC,0x9AFB,0x9AED,0x9B28,0x9B91,0x9D15,0x9D23,0x9D26, 0x9D28,0x9D12,0x9D1B,0x9ED8,0x9ED4,0x9F8D,0x9F9C,0x512A, 0x511F,0x5121,0x5132,0x52F5,0x568E,0x5680,0x5690,0x5685, 0x5687,0x568F,0x58D5,0x58D3,0x58D1,0x58CE,0x5B30,0x5B2A, 0x5B24,0x5B7A,0x5C37,0x5C68,0x5DBC,0x5DBA,0x5DBD,0x5DB8, 0x5E6B,0x5F4C,0x5FBD,0x61C9,0x61C2,0x61C7,0x61E6,0x61CB, 0x6232,0x6234,0x64CE,0x64CA,0x64D8,0x64E0,0x64F0,0x64E6, 0x64EC,0x64F1,0x64E2,0x64ED,0x6582,0x6583,0x66D9,0x66D6, 0x6A80,0x6A94,0x6A84,0x6AA2,0x6A9C,0x6ADB,0x6AA3,0x6A7E, 0x6A97,0x6A90,0x6AA0,0x6B5C,0x6BAE,0x6BDA, /* Range 0x7421 - 0x747E, array index: 0x143C */ 0x6C08,0x6FD8,0x6FF1,0x6FDF,0x6FE0,0x6FDB,0x6FE4,0x6FEB, 0x6FEF,0x6F80,0x6FEC,0x6FE1,0x6FE9,0x6FD5,0x6FEE,0x6FF0, 0x71E7,0x71DF,0x71EE,0x71E6,0x71E5,0x71ED,0x71EC,0x71F4, 0x71E0,0x7235,0x7246,0x7370,0x7372,0x74A9,0x74B0,0x74A6, 0x74A8,0x7646,0x7642,0x764C,0x76EA,0x77B3,0x77AA,0x77B0, 0x77AC,0x77A7,0x77AD,0x77EF,0x78F7,0x78FA,0x78F4,0x78EF, 0x7901,0x79A7,0x79AA,0x7A57,0x7ABF,0x7C07,0x7C0D,0x7BFE, 0x7BF7,0x7C0C,0x7BE0,0x7CE0,0x7CDC,0x7CDE,0x7CE2,0x7CDF, 0x7CD9,0x7CDD,0x7E2E,0x7E3E,0x7E46,0x7E37,0x7E32,0x7E43, 0x7E2B,0x7E3D,0x7E31,0x7E45,0x7E41,0x7E34,0x7E39,0x7E48, 0x7E35,0x7E3F,0x7E2F,0x7F44,0x7FF3,0x7FFC,0x8071,0x8072, 0x8070,0x806F,0x8073,0x81C6,0x81C3,0x81BA, /* Range 0x7521 - 0x757E, array index: 0x149A */ 0x81C2,0x81C0,0x81BF,0x81BD,0x81C9,0x81BE,0x81E8,0x8209, 0x8271,0x85AA,0x8584,0x857E,0x859C,0x8591,0x8594,0x85AF, 0x859B,0x8587,0x85A8,0x858A,0x85A6,0x8667,0x87C0,0x87D1, 0x87B3,0x87D2,0x87C6,0x87AB,0x87BB,0x87BA,0x87C8,0x87CB, 0x893B,0x8936,0x8944,0x8938,0x893D,0x89AC,0x8B0E,0x8B17, 0x8B19,0x8B1B,0x8B0A,0x8B20,0x8B1D,0x8B04,0x8B10,0x8C41, 0x8C3F,0x8C73,0x8CFA,0x8CFD,0x8CFC,0x8CF8,0x8CFB,0x8DA8, 0x8E49,0x8E4B,0x8E48,0x8E4A,0x8F44,0x8F3E,0x8F42,0x8F45, 0x8F3F,0x907F,0x907D,0x9084,0x9081,0x9082,0x9080,0x9139, 0x91A3,0x919E,0x919C,0x934D,0x9382,0x9328,0x9375,0x934A, 0x9365,0x934B,0x9318,0x937E,0x936C,0x935B,0x9370,0x935A, 0x9354,0x95CA,0x95CB,0x95CC,0x95C8,0x95C6, /* Range 0x7621 - 0x767E, array index: 0x14F8 */ 0x96B1,0x96B8,0x96D6,0x971C,0x971E,0x97A0,0x97D3,0x9846, 0x98B6,0x9935,0x9A01,0x99FF,0x9BAE,0x9BAB,0x9BAA,0x9BAD, 0x9D3B,0x9D3F,0x9E8B,0x9ECF,0x9EDE,0x9EDC,0x9EDD,0x9EDB, 0x9F3E,0x9F4B,0x53E2,0x5695,0x56AE,0x58D9,0x58D8,0x5B38, 0x5F5E,0x61E3,0x6233,0x64F4,0x64F2,0x64FE,0x6506,0x64FA, 0x64FB,0x64F7,0x65B7,0x66DC,0x6726,0x6AB3,0x6AAC,0x6AC3, 0x6ABB,0x6AB8,0x6AC2,0x6AAE,0x6AAF,0x6B5F,0x6B78,0x6BAF, 0x7009,0x700B,0x6FFE,0x7006,0x6FFA,0x7011,0x700F,0x71FB, 0x71FC,0x71FE,0x71F8,0x7377,0x7375,0x74A7,0x74BF,0x7515, 0x7656,0x7658,0x7652,0x77BD,0x77BF,0x77BB,0x77BC,0x790E, 0x79AE,0x7A61,0x7A62,0x7A60,0x7AC4,0x7AC5,0x7C2B,0x7C27, 0x7C2A,0x7C1E,0x7C23,0x7C21,0x7CE7,0x7E54, /* Range 0x7721 - 0x777E, array index: 0x1556 */ 0x7E55,0x7E5E,0x7E5A,0x7E61,0x7E52,0x7E59,0x7F48,0x7FF9, 0x7FFB,0x8077,0x8076,0x81CD,0x81CF,0x820A,0x85CF,0x85A9, 0x85CD,0x85D0,0x85C9,0x85B0,0x85BA,0x85B9,0x87EF,0x87EC, 0x87F2,0x87E0,0x8986,0x89B2,0x89F4,0x8B28,0x8B39,0x8B2C, 0x8B2B,0x8C50,0x8D05,0x8E59,0x8E63,0x8E66,0x8E64,0x8E5F, 0x8E55,0x8EC0,0x8F49,0x8F4D,0x9087,0x9083,0x9088,0x91AB, 0x91AC,0x91D0,0x9394,0x938A,0x9396,0x93A2,0x93B3,0x93AE, 0x93AC,0x93B0,0x9398,0x939A,0x9397,0x95D4,0x95D6,0x95D0, 0x95D5,0x96E2,0x96DC,0x96D9,0x96DB,0x96DE,0x9724,0x97A3, 0x97A6,0x97AD,0x97F9,0x984D,0x984F,0x984C,0x984E,0x9853, 0x98BA,0x993E,0x993F,0x993D,0x992E,0x99A5,0x9A0E,0x9AC1, 0x9B03,0x9B06,0x9B4F,0x9B4E,0x9B4D,0x9BCA, /* Range 0x7821 - 0x787E, array index: 0x15B4 */ 0x9BC9,0x9BFD,0x9BC8,0x9BC0,0x9D51,0x9D5D,0x9D60,0x9EE0, 0x9F15,0x9F2C,0x5133,0x56A5,0x56A8,0x58DE,0x58DF,0x58E2, 0x5BF5,0x9F90,0x5EEC,0x61F2,0x61F7,0x61F6,0x61F5,0x6500, 0x650F,0x66E0,0x66DD,0x6AE5,0x6ADD,0x6ADA,0x6AD3,0x701B, 0x701F,0x7028,0x701A,0x701D,0x7015,0x7018,0x7206,0x720D, 0x7258,0x72A2,0x7378,0x737A,0x74BD,0x74CA,0x74E3,0x7587, 0x7586,0x765F,0x7661,0x77C7,0x7919,0x79B1,0x7A6B,0x7A69, 0x7C3E,0x7C3F,0x7C38,0x7C3D,0x7C37,0x7C40,0x7E6B,0x7E6D, 0x7E79,0x7E69,0x7E6A,0x7E73,0x7F85,0x7FB6,0x7FB9,0x7FB8, 0x81D8,0x85E9,0x85DD,0x85EA,0x85D5,0x85E4,0x85E5,0x85F7, 0x87FB,0x8805,0x880D,0x87F9,0x87FE,0x8960,0x895F,0x8956, 0x895E,0x8B41,0x8B5C,0x8B58,0x8B49,0x8B5A, /* Range 0x7921 - 0x797E, array index: 0x1612 */ 0x8B4E,0x8B4F,0x8B46,0x8B59,0x8D08,0x8D0A,0x8E7C,0x8E72, 0x8E87,0x8E76,0x8E6C,0x8E7A,0x8E74,0x8F54,0x8F4E,0x8FAD, 0x908A,0x908B,0x91B1,0x91AE,0x93E1,0x93D1,0x93DF,0x93C3, 0x93C8,0x93DC,0x93DD,0x93D6,0x93E2,0x93CD,0x93D8,0x93E4, 0x93D7,0x93E8,0x95DC,0x96B4,0x96E3,0x972A,0x9727,0x9761, 0x97DC,0x97FB,0x985E,0x9858,0x985B,0x98BC,0x9945,0x9949, 0x9A16,0x9A19,0x9B0D,0x9BE8,0x9BE7,0x9BD6,0x9BDB,0x9D89, 0x9D61,0x9D72,0x9D6A,0x9D6C,0x9E92,0x9E97,0x9E93,0x9EB4, 0x52F8,0x56B7,0x56B6,0x56B4,0x56BC,0x58E4,0x5B40,0x5B43, 0x5B7D,0x5BF6,0x5DC9,0x61F8,0x61FA,0x6518,0x6514,0x6519, 0x66E6,0x6727,0x6AEC,0x703E,0x7030,0x7032,0x7210,0x737B, 0x74CF,0x7662,0x7665,0x7926,0x792A,0x792C, /* Range 0x7A21 - 0x7A7E, array index: 0x1670 */ 0x792B,0x7AC7,0x7AF6,0x7C4C,0x7C43,0x7C4D,0x7CEF,0x7CF0, 0x8FAE,0x7E7D,0x7E7C,0x7E82,0x7F4C,0x8000,0x81DA,0x8266, 0x85FB,0x85F9,0x8611,0x85FA,0x8606,0x860B,0x8607,0x860A, 0x8814,0x8815,0x8964,0x89BA,0x89F8,0x8B70,0x8B6C,0x8B66, 0x8B6F,0x8B5F,0x8B6B,0x8D0F,0x8D0D,0x8E89,0x8E81,0x8E85, 0x8E82,0x91B4,0x91CB,0x9418,0x9403,0x93FD,0x95E1,0x9730, 0x98C4,0x9952,0x9951,0x99A8,0x9A2B,0x9A30,0x9A37,0x9A35, 0x9C13,0x9C0D,0x9E79,0x9EB5,0x9EE8,0x9F2F,0x9F5F,0x9F63, 0x9F61,0x5137,0x5138,0x56C1,0x56C0,0x56C2,0x5914,0x5C6C, 0x5DCD,0x61FC,0x61FE,0x651D,0x651C,0x6595,0x66E9,0x6AFB, 0x6B04,0x6AFA,0x6BB2,0x704C,0x721B,0x72A7,0x74D6,0x74D4, 0x7669,0x77D3,0x7C50,0x7E8F,0x7E8C,0x7FBC, /* Range 0x7B21 - 0x7B7E, array index: 0x16CE */ 0x8617,0x862D,0x861A,0x8823,0x8822,0x8821,0x881F,0x896A, 0x896C,0x89BD,0x8B74,0x8B77,0x8B7D,0x8D13,0x8E8A,0x8E8D, 0x8E8B,0x8F5F,0x8FAF,0x91BA,0x942E,0x9433,0x9435,0x943A, 0x9438,0x9432,0x942B,0x95E2,0x9738,0x9739,0x9732,0x97FF, 0x9867,0x9865,0x9957,0x9A45,0x9A43,0x9A40,0x9A3E,0x9ACF, 0x9B54,0x9B51,0x9C2D,0x9C25,0x9DAF,0x9DB4,0x9DC2,0x9DB8, 0x9E9D,0x9EEF,0x9F19,0x9F5C,0x9F66,0x9F67,0x513C,0x513B, 0x56C8,0x56CA,0x56C9,0x5B7F,0x5DD4,0x5DD2,0x5F4E,0x61FF, 0x6524,0x6B0A,0x6B61,0x7051,0x7058,0x7380,0x74E4,0x758A, 0x766E,0x766C,0x79B3,0x7C60,0x7C5F,0x807E,0x807D,0x81DF, 0x8972,0x896F,0x89FC,0x8B80,0x8D16,0x8D17,0x8E91,0x8E93, 0x8F61,0x9148,0x9444,0x9451,0x9452,0x973D, /* Range 0x7C21 - 0x7C7E, array index: 0x172C */ 0x973E,0x97C3,0x97C1,0x986B,0x9955,0x9A55,0x9A4D,0x9AD2, 0x9B1A,0x9C49,0x9C31,0x9C3E,0x9C3B,0x9DD3,0x9DD7,0x9F34, 0x9F6C,0x9F6A,0x9F94,0x56CC,0x5DD6,0x6200,0x6523,0x652B, 0x652A,0x66EC,0x6B10,0x74DA,0x7ACA,0x7C64,0x7C63,0x7C65, 0x7E93,0x7E96,0x7E94,0x81E2,0x8638,0x863F,0x8831,0x8B8A, 0x9090,0x908F,0x9463,0x9460,0x9464,0x9768,0x986F,0x995C, 0x9A5A,0x9A5B,0x9A57,0x9AD3,0x9AD4,0x9AD1,0x9C54,0x9C57, 0x9C56,0x9DE5,0x9E9F,0x9EF4,0x56D1,0x58E9,0x652C,0x705E, 0x7671,0x7672,0x77D7,0x7F50,0x7F88,0x8836,0x8839,0x8862, 0x8B93,0x8B92,0x8B96,0x8277,0x8D1B,0x91C0,0x946A,0x9742, 0x9748,0x9744,0x97C6,0x9870,0x9A5F,0x9B22,0x9B58,0x9C5F, 0x9DF9,0x9DFA,0x9E7C,0x9E7D,0x9F07,0x9F77, /* Range 0x7D21 - 0x7D4B, array index: 0x178A */ 0x9F72,0x5EF3,0x6B16,0x7063,0x7C6C,0x7C6E,0x883B,0x89C0, 0x8EA1,0x91C1,0x9472,0x9470,0x9871,0x995E,0x9AD6,0x9B23, 0x9ECC,0x7064,0x77DA,0x8B9A,0x9477,0x97C9,0x9A62,0x9A65, 0x7E9C,0x8B9C,0x8EAA,0x91C5,0x947D,0x947E,0x947C,0x9C77, 0x9C78,0x9EF7,0x8C54,0x947F,0x9E1A,0x7228,0x9A6A,0x9B31, 0x9E1B,0x9E1E,0x7C72, /* Unranged codes (66 codes) */ }; #endif /* ICONV_TO_UCS_CCS_CNS11643_PLANE1 && defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * 16-bit UCS -> cns11643_plane1 speed-optimized table (50176 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_CNS11643_PLANE1) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t from_ucs_speed_cns11643_plane1[] = { /* Heading Block */ 0x0100,INVBLK,0x0200,0x0300,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, 0x0400,0x0500,0x0600,INVBLK,0x0700,0x0800,0x0900,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, 0x0A00,0x0B00,0x0C00,0x0D00,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,0x0E00,0x0F00, 0x1000,0x1100,0x1200,0x1300,0x1400,0x1500,0x1600,0x1700, 0x1800,0x1900,0x1A00,0x1B00,0x1C00,0x1D00,0x1E00,0x1F00, 0x2000,0x2100,0x2200,0x2300,0x2400,0x2500,0x2600,0x2700, 0x2800,0x2900,0x2A00,0x2B00,0x2C00,0x2D00,0x2E00,0x2F00, 0x3000,0x3100,0x3200,0x3300,0x3400,0x3500,0x3600,0x3700, 0x3800,0x3900,0x3A00,0x3B00,0x3C00,0x3D00,0x3E00,0x3F00, 0x4000,0x4100,0x4200,0x4300,0x4400,0x4500,0x4600,0x4700, 0x4800,0x4900,0x4A00,0x4B00,0x4C00,0x4D00,0x4E00,0x4F00, 0x5000,0x5100,0x5200,0x5300,0x5400,0x5500,0x5600,0x5700, 0x5800,0x5900,0x5A00,0x5B00,0x5C00,0x5D00,0x5E00,0x5F00, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,0x6000,0x6100, /* Block 1, Array index 0x0100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2170, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2278,0x2234,INVALC,INVALC,INVALC,INVALC,INVALC,0x2131, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2232, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2233, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 3, Array index 0x0200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x256F, INVALC,0x256D,0x256E,0x2570,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x256C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 4, Array index 0x0300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2475,0x2476,0x2477,0x2478,0x2479,0x247A,0x247B, 0x247C,0x247D,0x247E,0x2521,0x2522,0x2523,0x2524,0x2525, 0x2526,0x2527,INVALC,0x2528,0x2529,0x252A,0x252B,0x252C, 0x252D,0x252E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x252F,0x2530,0x2531,0x2532,0x2533,0x2534,0x2535, 0x2536,0x2537,0x2538,0x2539,0x253A,0x253B,0x253C,0x253D, 0x253E,0x253F,INVALC,0x2540,0x2541,0x2542,0x2543,0x2544, 0x2545,0x2546,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 33, Array index 0x0400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2139,0x2137,INVALC,0x225D,INVALC, 0x2164,0x2165,INVALC,INVALC,0x2166,0x2167,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x212D,0x212C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x216A,INVALC,INVALC,0x216B,INVALC,INVALC, INVALC,INVALC,INVALC,0x216F,INVALC,INVALC,0x2223,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 34, Array index 0x0500 */ INVALC,INVALC,INVALC,0x226A,INVALC,0x2222,INVALC,INVALC, INVALC,0x226B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x242B,0x242C,0x242D,0x242E,0x242F,0x2430,0x2431,0x2432, 0x2433,0x2434,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2635,0x2636,0x2637,0x2638,0x2639,0x263A,0x263B,0x263C, 0x263D,0x263E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2258,0x2255,0x2257,0x2256,INVALC,INVALC,0x2259,0x225A, 0x225C,0x225B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 35, Array index 0x0600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2261,INVALC,INVALC, INVALC,INVALC,0x2235,INVALC,INVALC,INVALC,0x223C,0x2249, 0x2248,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2245,0x2246,0x224D,INVALC,INVALC,0x224E,INVALC, INVALC,INVALC,INVALC,INVALC,0x2250,0x224F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2244,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x223D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x223B,0x223E,INVALC,INVALC,INVALC,INVALC,0x2239,0x223A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2247,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x224A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 37, Array index 0x0700 */ 0x4221,0x4222,0x4223,0x4224,0x4225,0x4226,0x4227,0x4228, 0x4229,0x422A,0x422B,0x422C,0x422D,0x422E,0x422F,0x4230, 0x4231,0x4232,0x4233,0x4234,0x4235,0x4236,0x4237,0x4238, 0x4239,0x423A,0x423B,0x423C,0x423D,0x423E,0x423F,0x4240, INVALC,0x4241,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2621,0x2622,0x2623,0x2624,0x2625,0x2626,0x2627,0x2628, 0x2629,0x262A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x262B,0x262C,0x262D,0x262E, 0x262F,0x2630,0x2631,0x2632,0x2633,0x2634,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 38, Array index 0x0800 */ 0x2339,INVALC,0x233A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x233C,INVALC,INVALC,INVALC, 0x233D,INVALC,INVALC,INVALC,0x233E,INVALC,INVALC,INVALC, 0x233F,INVALC,INVALC,INVALC,0x2337,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2336,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2335,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2334,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2333,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2344,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2345,INVALC, INVALC,0x2347,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2346,INVALC,INVALC,0x2340,0x2341,0x2343, 0x2342,0x234C,0x234D,0x234E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2324,0x2325,0x2326,0x2327,0x2328,0x2329,0x232A, 0x232B,0x2332,0x2331,0x2330,0x232F,0x232E,0x232D,0x232C, INVALC,INVALC,INVALC,INVALC,0x2338,0x233B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x217C,0x217B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2175,0x2174,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x217E,0x217D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x217A,0x2179, INVALC,INVALC,INVALC,0x2172,INVALC,INVALC,0x2176,0x2173, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2348,0x2349,0x234B,0x234A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 39, Array index 0x0900 */ INVALC,INVALC,INVALC,INVALC,INVALC,0x2178,0x2177,INVALC, INVALC,0x2254,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2251,0x2253,0x2252,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 49, Array index 0x0A00 */ 0x2121,0x2123,0x2124,0x2171,INVALC,INVALC,INVALC,INVALC, 0x2152,0x2153,0x214E,0x214F,0x2156,0x2157,0x215A,0x215B, 0x214A,0x214B,0x2265,INVALC,0x2146,0x2147,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2168,0x2169,INVALC, INVALC,0x2435,0x2436,0x2437,0x2438,0x2439,0x243A,0x243B, 0x243C,0x243D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2126,INVALC,INVALC,INVALC,INVALC, /* Block 50, Array index 0x0B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,0x2547,0x2548,0x2549, 0x254A,0x254B,0x254C,0x254D,0x254E,0x254F,0x2550,0x2551, 0x2552,0x2553,0x2554,0x2555,0x2556,0x2557,0x2558,0x2559, 0x255A,0x255B,0x255C,0x255D,0x255E,0x255F,0x2560,0x2561, 0x2562,0x2563,0x2564,0x2565,0x2566,0x2567,0x2568,0x2569, 0x256A,0x256B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 51, Array index 0x0C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2221,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 52, Array index 0x0D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2275,0x2276, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2270,0x2271,0x2272,INVALC, INVALC,0x2274,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2277,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2273,INVALC, INVALC,0x224C,0x224B,INVALC,INVALC,0x226F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 79, Array index 0x0E00 */ 0x4421,0x4423,INVALC,0x4424,INVALC,INVALC,INVALC,INVALC, 0x4437,0x4435,0x4438,0x4436,INVALC,0x4462,INVALC,INVALC, 0x4461,0x4460,INVALC,INVALC,0x4562,0x4561,0x4560,INVALC, 0x4563,0x455F,INVALC,INVALC,INVALC,INVALC,0x4722,0x4723, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4B64,INVALC, INVALC,INVALC,INVALC,0x4439,INVALC,0x4463,INVALC,INVALC, 0x4464,INVALC,0x486B,INVALC,INVALC,INVALC,INVALC,INVALC, 0x443A,0x4465,INVALC,0x4564,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4425,INVALC,0x443C,INVALC,INVALC, 0x443D,INVALC,INVALC,0x4466,INVALC,0x4565,0x4567,0x4566, INVALC,INVALC,0x4724,0x4725,INVALC,INVALC,0x4B65,INVALC, 0x537D,0x4422,INVALC,INVALC,INVALC,0x4426,0x443F,0x443E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4726,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4B66,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5871,INVALC, INVALC,INVALC,0x632A,INVALC,INVALC,INVALC,0x4427,INVALC, 0x4468,INVALC,INVALC,0x4B67,0x4428,INVALC,0x4440,INVALC, INVALC,0x4469,0x446B,INVALC,0x446C,0x446A,INVALC,INVALC, INVALC,0x4727,INVALC,0x4B68,INVALC,INVALC,0x4B69,0x4F67, INVALC,0x4441,0x446D,INVALC,0x4728,0x472A,0x4729,INVALC, 0x486C,INVALC,INVALC,0x4B6A,0x4B6B,0x4F68,0x4F69,INVALC, INVALC,INVALC,INVALC,0x537E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4429,INVALC,INVALC,INVALC,INVALC,INVALC, 0x446F,0x446E,INVALC,0x4470,0x4476,INVALC,0x4471,0x4472, INVALC,INVALC,0x4474,0x4475,INVALC,0x4473,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x456A,0x456B,0x456C,0x456D, 0x4569,0x4570,INVALC,INVALC,INVALC,INVALC,0x4571,0x4623, INVALC,INVALC,INVALC,0x456E,0x456F,0x4568,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4737,INVALC,0x4734,0x4738,INVALC,INVALC,0x4735,INVALC, INVALC,INVALC,INVALC,0x4736,INVALC,0x4739,INVALC,0x472B, /* Block 80, Array index 0x0F00 */ INVALC,0x473A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x472C,0x472E,0x473B,INVALC,0x4730,INVALC,0x4733, 0x4731,0x4732,INVALC,INVALC,INVALC,0x472F,INVALC,INVALC, INVALC,0x472D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4924, 0x4875,INVALC,INVALC,INVALC,0x4872,INVALC,0x4926,INVALC, 0x487A,INVALC,0x4879,INVALC,0x487D,0x4878,INVALC,INVALC, INVALC,INVALC,INVALC,0x487B,INVALC,INVALC,0x487E,0x486F, 0x4929,INVALC,INVALC,INVALC,INVALC,0x486D,0x4925,0x486E, 0x4876,0x4877,INVALC,INVALC,0x487C,0x4874,INVALC,0x4870, INVALC,0x4927,0x492A,0x4873,0x4922,0x4928,0x4871,INVALC, 0x4923,INVALC,INVALC,0x4921,INVALC,INVALC,INVALC,INVALC, INVALC,0x4B79,INVALC,INVALC,0x4B71,INVALC,INVALC,0x4B6C, 0x4B76,INVALC,INVALC,0x4B6F,INVALC,0x4B77,INVALC,INVALC, INVALC,INVALC,0x4C21,0x4B7A,INVALC,INVALC,0x4B7C,0x4B70, INVALC,INVALC,INVALC,0x4B75,INVALC,INVALC,0x4B74,INVALC, 0x4B78,INVALC,INVALC,0x4B73,INVALC,0x4B6E,INVALC,0x4B7D, INVALC,0x4B7E,INVALC,INVALC,INVALC,INVALC,0x4B7B,INVALC, INVALC,INVALC,INVALC,0x4B72,INVALC,0x4B6D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4F78,0x4F6C, INVALC,INVALC,INVALC,INVALC,INVALC,0x4F6B,0x4F73,0x5021, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4F6D, INVALC,INVALC,0x4F7B,0x4F72,0x4F7A,INVALC,INVALC,INVALC, INVALC,INVALC,0x4F76,INVALC,INVALC,INVALC,0x4F7D,0x4F70, 0x4F79,0x4F6F,INVALC,INVALC,INVALC,INVALC,INVALC,0x4F77, 0x4F74,INVALC,0x4F7C,INVALC,INVALC,0x4F71,0x4F7E,0x4F75, 0x4F6E,0x4F6A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x543A,0x5424, INVALC,0x5434,INVALC,0x5439,INVALC,INVALC,INVALC,INVALC, 0x5427,INVALC,0x5430,INVALC,INVALC,INVALC,0x543D,INVALC, /* Block 81, Array index 0x1000 */ 0x5431,INVALC,INVALC,INVALC,INVALC,INVALC,0x542A,INVALC, INVALC,0x543F,INVALC,0x5436,0x5421,0x5422,INVALC,0x5924, INVALC,0x542F,0x542E,INVALC,0x5432,INVALC,0x5429,INVALC, 0x5438,0x5437,0x542D,INVALC,INVALC,INVALC,INVALC,0x542C, INVALC,0x5435,INVALC,0x5423,INVALC,0x5426,0x5425,INVALC, 0x5433,0x5428,0x543C,0x543E,INVALC,0x543B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x542B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5876,INVALC,INVALC,INVALC,0x5875, INVALC,0x5879,INVALC,INVALC,0x5877,INVALC,0x587C,0x5923, INVALC,INVALC,INVALC,INVALC,INVALC,0x587D,INVALC,INVALC, INVALC,INVALC,0x5878,INVALC,0x5874,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x587A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5926,INVALC,0x5925, INVALC,INVALC,INVALC,INVALC,0x5921,0x587E,0x587B,0x5922, INVALC,INVALC,0x5872,INVALC,INVALC,0x5873,INVALC,INVALC, 0x5E2E,INVALC,INVALC,INVALC,INVALC,0x5E2B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5E2A,INVALC,INVALC, INVALC,0x5E2D,INVALC,INVALC,INVALC,INVALC,0x5E2F,INVALC, 0x5E30,0x5E2C,0x5E31,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5E29,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6331,0x632B,INVALC,0x6334, INVALC,INVALC,0x632D,0x632E,INVALC,0x632C,INVALC,0x6332, INVALC,INVALC,INVALC,0x6333,INVALC,INVALC,0x6330,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x632F,INVALC,0x6335, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x677C,0x6779, INVALC,0x677A,INVALC,INVALC,INVALC,0x6778,0x6775,INVALC, INVALC,INVALC,0x6777,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6774,INVALC,0x6772, INVALC,0x677D,INVALC,INVALC,INVALC,0x6776,0x6773,INVALC, INVALC,0x677B,INVALC,INVALC,INVALC,0x6C23,INVALC,INVALC, INVALC,0x6C24,INVALC,0x6C22,INVALC,INVALC,INVALC,INVALC, /* Block 82, Array index 0x1100 */ 0x6C21,INVALC,0x6C25,INVALC,0x6B7E,0x6C28,INVALC,INVALC, 0x6C26,0x6C27,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7033,INVALC,0x7030,INVALC,0x7032,0x7034,INVALC,INVALC, 0x7031,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7341, INVALC,0x7342,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7340,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7343,0x782B,INVALC,INVALC,INVALC,0x7A62, 0x7A63,INVALC,INVALC,0x7B58,0x7B57,INVALC,INVALC,0x442A, 0x4442,0x4478,INVALC,0x4477,0x4573,0x4572,0x473E,0x473D, 0x473F,0x473C,INVALC,0x492C,0x492B,0x492D,INVALC,INVALC, INVALC,INVALC,0x4C23,INVALC,0x4C22,0x4C24,INVALC,0x5022, INVALC,0x2279,INVALC,0x227A,0x5927,0x227C,0x227B,INVALC, INVALC,0x227D,0x677E,0x227E,INVALC,0x442B,INVALC,0x4479, 0x4740,0x4C25,INVALC,0x442C,0x447C,0x447A,0x447B,INVALC, INVALC,0x4741,INVALC,INVALC,INVALC,0x492E,0x4C27,0x4C26, 0x4C28,INVALC,INVALC,INVALC,0x5440,INVALC,INVALC,INVALC, 0x7035,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4574,0x4575,INVALC,INVALC,0x4742,INVALC,INVALC, INVALC,0x5024,0x5023,INVALC,INVALC,0x5928,INVALC,0x447D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5025,INVALC,0x5443,INVALC,0x5441,0x5442,INVALC,INVALC, INVALC,INVALC,0x7036,INVALC,0x4576,INVALC,INVALC,INVALC, 0x4743,INVALC,INVALC,INVALC,INVALC,INVALC,0x492F,0x4930, INVALC,INVALC,INVALC,INVALC,INVALC,0x4C29,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5446,INVALC, INVALC,INVALC,INVALC,0x5447,0x5445,0x5444,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6C29,0x7037,INVALC,INVALC, 0x442D,0x443B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5929,0x5E33,INVALC,0x6821,INVALC,INVALC,0x447E,INVALC, 0x4579,0x4577,0x4578,INVALC,INVALC,0x4C2A,INVALC,INVALC, /* Block 83, Array index 0x1200 */ 0x442E,0x442F,INVALC,0x4443,INVALC,INVALC,0x4521,0x4522, 0x4523,INVALC,0x457A,INVALC,INVALC,INVALC,0x4747,INVALC, INVALC,0x4745,0x4746,INVALC,INVALC,INVALC,0x4748,0x4744, INVALC,INVALC,INVALC,INVALC,INVALC,0x4F4F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4932,0x4931,INVALC,INVALC, 0x4935,0x4933,0x4934,INVALC,INVALC,INVALC,0x4C30,INVALC, 0x4C2F,INVALC,INVALC,INVALC,INVALC,INVALC,0x4C31,0x4C2D, 0x4C2C,INVALC,0x4C2E,0x4C2B,INVALC,INVALC,INVALC,INVALC, INVALC,0x4C32,INVALC,0x5027,INVALC,INVALC,INVALC,0x502C, INVALC,INVALC,0x5028,0x502B,0x502A,0x5029,0x5026,INVALC, INVALC,INVALC,INVALC,INVALC,0x544A,INVALC,0x5448,INVALC, INVALC,INVALC,INVALC,0x544B,0x5449,0x544C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5E37,0x592A,INVALC,INVALC,INVALC,INVALC,0x592B, INVALC,INVALC,0x5E34,INVALC,0x5E35,0x5E36,INVALC,0x6337, INVALC,INVALC,INVALC,INVALC,INVALC,0x6338,INVALC,0x6336, INVALC,INVALC,0x6823,0x6822,INVALC,INVALC,INVALC,0x6C2A, 0x6C2B,0x6C2C,0x6C2E,INVALC,INVALC,0x6C2D,INVALC,INVALC, INVALC,0x7038,INVALC,0x7039,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4430,INVALC,INVALC,INVALC,0x457C, 0x457B,INVALC,INVALC,0x4749,INVALC,INVALC,INVALC,INVALC, INVALC,0x4937,0x4938,0x4936,0x4939,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4C34,INVALC,INVALC,0x4C33,INVALC, INVALC,0x5030,INVALC,0x502F,INVALC,INVALC,INVALC,0x502D, INVALC,0x502E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x592C,INVALC,INVALC,0x592F,INVALC,0x5B2B, 0x592E,0x592D,INVALC,0x5E3A,INVALC,0x5E39,0x5E38,0x6339, INVALC,INVALC,0x633C,0x633D,0x633B,INVALC,0x633A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6C2F,INVALC,INVALC,0x703A,INVALC,0x7344,INVALC,INVALC, 0x7961,INVALC,0x4444,0x4524,INVALC,INVALC,0x4525,0x4526, /* Block 84, Array index 0x1300 */ INVALC,INVALC,INVALC,INVALC,INVALC,0x457D,0x457E,INVALC, 0x474A,INVALC,INVALC,INVALC,INVALC,0x5031,INVALC,0x5931, 0x5930,INVALC,INVALC,INVALC,INVALC,0x4431,0x4527,0x4621, INVALC,0x5932,INVALC,INVALC,INVALC,0x4622,INVALC,INVALC, 0x474C,0x474B,INVALC,0x493A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x544D,INVALC,INVALC,INVALC,INVALC,0x633E, INVALC,0x6824,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4528,INVALC,INVALC,INVALC,INVALC,0x5935,0x5933, 0x5934,0x4432,INVALC,0x4445,0x243F,0x452B,INVALC,0x452A, 0x4529,0x4625,0x4624,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4C38,0x4C35,0x4C37,0x4C36,INVALC,INVALC,0x5032, INVALC,INVALC,0x5E3B,INVALC,0x4433,INVALC,0x452C,INVALC, 0x4627,0x4626,INVALC,INVALC,INVALC,INVALC,0x4C39,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4629,0x4628, 0x474D,0x474E,INVALC,0x493B,INVALC,0x493C,INVALC,0x4C3A, 0x4C3B,0x4C3C,INVALC,0x5033,INVALC,INVALC,INVALC,0x544E, INVALC,INVALC,INVALC,INVALC,0x452D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5034,INVALC,INVALC,0x5450,INVALC,0x544F, INVALC,INVALC,INVALC,INVALC,INVALC,0x5E3C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6825,INVALC,INVALC, INVALC,INVALC,0x6C30,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x462A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5936,INVALC,INVALC,INVALC,INVALC, 0x4434,0x4446,0x452F,0x452E,INVALC,0x4530,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4C3E,INVALC,0x4C3D,0x4C3F, INVALC,INVALC,INVALC,0x5035,INVALC,INVALC,INVALC,0x5451, INVALC,INVALC,0x763B,0x4447,0x462C,0x463B,0x4636,INVALC, 0x4631,0x4630,0x4637,0x4635,0x462E,0x463C,0x462F,0x462B, 0x463A,0x4639,0x4638,0x462D,INVALC,0x4634,INVALC,INVALC, 0x4633,INVALC,INVALC,0x463D,0x4632,INVALC,INVALC,INVALC, /* Block 85, Array index 0x1400 */ INVALC,0x4754,INVALC,0x475A,0x4756,INVALC,0x475C,INVALC, 0x4759,0x474F,0x4752,0x4755,0x4751,0x4758,0x475B,0x4750, 0x4753,0x4757,0x475D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4949,INVALC,0x493D,0x493F,0x4957, 0x4952,INVALC,INVALC,INVALC,INVALC,INVALC,0x4941,0x4943, INVALC,0x494A,INVALC,0x4956,0x4958,0x493E,0x494F,INVALC, INVALC,0x4955,INVALC,0x4946,INVALC,0x4950,0x4951,INVALC, 0x494E,0x494C,INVALC,0x494D,0x4953,INVALC,0x4940,INVALC, 0x4954,INVALC,0x4948,0x4945,INVALC,INVALC,0x4944,INVALC, 0x4947,INVALC,0x494B,INVALC,INVALC,INVALC,0x4942,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4C51,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4C52,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4C4D,INVALC,0x4C40,INVALC,0x4C41,0x4C4E,0x4C47, 0x4C43,INVALC,INVALC,0x4C46,0x4C4B,0x4C54,INVALC,INVALC, 0x4C45,INVALC,INVALC,INVALC,0x4C48,INVALC,0x4C4A,INVALC, INVALC,INVALC,INVALC,0x4C53,0x4C4F,INVALC,0x4C55,INVALC, 0x4C4C,INVALC,0x4C49,INVALC,INVALC,0x4C44,0x4C42,INVALC, INVALC,INVALC,0x4C50,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x503C,0x504A, 0x5038,0x5049,0x5041,0x5046,0x5036,INVALC,INVALC,0x5045, INVALC,0x5047,INVALC,0x503D,INVALC,INVALC,INVALC,INVALC, 0x503B,INVALC,INVALC,0x5048,INVALC,0x5040,INVALC,0x504B, 0x5037,0x5042,0x503F,INVALC,0x5043,INVALC,INVALC,0x503E, 0x5044,0x503A,INVALC,INVALC,INVALC,INVALC,0x5039,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x545E,INVALC,INVALC,INVALC,0x5457,0x5462,INVALC, 0x5452,0x545C,0x5461,INVALC,INVALC,0x545D,0x5460,INVALC, INVALC,INVALC,0x5458,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x545A,INVALC,0x5456,0x5465,INVALC,INVALC, /* Block 86, Array index 0x1500 */ INVALC,0x5454,INVALC,INVALC,INVALC,INVALC,0x5459,0x5464, INVALC,0x545F,INVALC,INVALC,INVALC,INVALC,INVALC,0x5466, 0x5453,INVALC,INVALC,INVALC,0x545B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5463, INVALC,INVALC,INVALC,INVALC,0x5949,INVALC,0x5947,0x5944, INVALC,0x5940,INVALC,0x594B,INVALC,INVALC,INVALC,0x5455, 0x5946,INVALC,INVALC,INVALC,INVALC,INVALC,0x5E4E,INVALC, INVALC,0x594C,INVALC,0x593E,0x593B,INVALC,0x5938,INVALC, INVALC,INVALC,0x593F,INVALC,INVALC,INVALC,INVALC,0x5942, INVALC,INVALC,INVALC,INVALC,INVALC,0x5943,0x5941,0x594D, INVALC,INVALC,INVALC,INVALC,0x5948,INVALC,0x593C,0x5A76, INVALC,0x593D,INVALC,0x594A,0x5945,INVALC,0x593A,INVALC, INVALC,INVALC,0x5939,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5E3D,0x5E40,INVALC,0x5E54,INVALC, 0x5E3E,INVALC,0x5E44,0x5E4A,0x6143,INVALC,INVALC,0x5E48, INVALC,0x5E55,0x5E41,0x5E49,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5E47,INVALC,INVALC,INVALC, 0x5E43,0x5E57,0x5E50,INVALC,0x5E45,0x5E42,INVALC,0x5E4D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5E3F, INVALC,INVALC,0x5E46,0x5E56,0x5E52,INVALC,0x5E4C,INVALC, INVALC,0x5E53,0x5E4F,0x5E4B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5E51,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x634C,0x634D,0x6345, INVALC,0x634F,INVALC,INVALC,INVALC,INVALC,0x6343,INVALC, INVALC,0x6346,INVALC,0x6341,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x634A,INVALC,0x6344,INVALC,INVALC,0x633F, INVALC,0x634B,INVALC,0x6347,0x6348,0x634E,0x6342,0x2321, 0x6340,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6349, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6835,0x6830, INVALC,INVALC,INVALC,INVALC,INVALC,0x682A,0x6826,INVALC, /* Block 87, Array index 0x1600 */ 0x6827,INVALC,INVALC,INVALC,INVALC,INVALC,0x682C,INVALC, 0x6833,0x682D,INVALC,INVALC,INVALC,0x682E,0x682F,INVALC, 0x6834,INVALC,INVALC,INVALC,0x682B,INVALC,0x6831,0x6829, INVALC,INVALC,INVALC,0x6828,INVALC,INVALC,INVALC,0x6832, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6C37,INVALC,INVALC,INVALC,INVALC,0x6C31,0x6C3D, 0x6C3E,INVALC,0x6C34,INVALC,0x6C36,INVALC,0x6C3C,INVALC, INVALC,0x6C33,INVALC,0x6C32,INVALC,INVALC,INVALC,0x6C35, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6C39,INVALC, INVALC,INVALC,INVALC,0x6C38,INVALC,INVALC,INVALC,0x6C3A, INVALC,0x703B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7047,INVALC,0x703F,0x7043,INVALC,INVALC, 0x7042,0x703E,0x7041,0x703C,0x7046,INVALC,INVALC,0x7045, INVALC,0x7044,INVALC,INVALC,0x6C3B,INVALC,0x7048,INVALC, 0x7040,0x703D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7346,INVALC,INVALC,INVALC,INVALC,0x7348,INVALC,0x7349, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7345,0x734A, 0x7347,INVALC,INVALC,INVALC,INVALC,0x763C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x782C,INVALC,INVALC, 0x782D,INVALC,INVALC,INVALC,INVALC,INVALC,0x763D,INVALC, INVALC,INVALC,INVALC,INVALC,0x7964,INVALC,0x7963,0x7962, INVALC,INVALC,INVALC,INVALC,0x7965,INVALC,INVALC,INVALC, 0x7A65,0x7A64,0x7A66,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7B59,0x7B5B,0x7B5A,INVALC,0x7C34,INVALC,INVALC,INVALC, INVALC,0x7C5D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x463F,0x463E,INVALC,0x4760,0x475F,INVALC, 0x475E,INVALC,INVALC,INVALC,0x495B,INVALC,INVALC,INVALC, INVALC,INVALC,0x4959,0x495C,INVALC,INVALC,INVALC,INVALC, 0x495A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4C56,INVALC,INVALC,INVALC,INVALC,0x504C, /* Block 88, Array index 0x1700 */ INVALC,INVALC,INVALC,0x5467,0x5468,INVALC,INVALC,INVALC, 0x594E,0x5950,INVALC,0x594F,INVALC,0x5E58,INVALC,INVALC, INVALC,INVALC,0x6350,0x6351,INVALC,INVALC,0x6837,INVALC, 0x6836,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4448, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4763,0x4767,INVALC,INVALC,0x4765,0x4764,INVALC,0x4766, 0x4762,INVALC,INVALC,0x4761,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4966,INVALC,INVALC,0x4963,INVALC, 0x495F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4961, INVALC,INVALC,0x495D,INVALC,INVALC,0x4960,0x4962,0x4965, 0x4964,0x495E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4C5B,INVALC,INVALC,0x4C5D,INVALC,0x4C5C,INVALC, INVALC,0x4C5A,0x4C59,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4C58, INVALC,INVALC,INVALC,INVALC,0x4C5E,INVALC,INVALC,INVALC, INVALC,INVALC,0x504D,0x4C57,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x504E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5054,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x504F,INVALC,0x5051,0x5050,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5053,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5469,0x546C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x546B,INVALC,INVALC,0x5052,INVALC, INVALC,INVALC,INVALC,INVALC,0x546A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5951, 0x5955,INVALC,INVALC,INVALC,0x5956,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x595A, INVALC,0x595B,0x5957,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 89, Array index 0x1800 */ INVALC,INVALC,0x5958,INVALC,INVALC,0x5952,0x5954,INVALC, INVALC,0x546D,0x5953,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5E60,INVALC,INVALC, 0x5E61,0x5E5F,INVALC,INVALC,0x5E5C,INVALC,INVALC,INVALC, INVALC,INVALC,0x5E5A,INVALC,INVALC,INVALC,INVALC,0x5E59, 0x5E5D,0x5E5E,INVALC,INVALC,0x5E5B,0x5959,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x635B,0x635E,0x6359,INVALC,INVALC,INVALC, INVALC,0x6353,0x635D,INVALC,0x6357,INVALC,INVALC,0x6355, 0x6354,INVALC,0x6356,INVALC,INVALC,INVALC,0x6352,INVALC, INVALC,INVALC,0x635C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6358,INVALC,0x635A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6838,INVALC,INVALC, INVALC,0x683D,INVALC,INVALC,INVALC,0x683F,0x6839,INVALC, 0x6C3F,INVALC,INVALC,0x683A,INVALC,0x683E,INVALC,INVALC, INVALC,INVALC,0x683C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x683B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6C43,INVALC,0x6C41,0x6C40, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6C46,INVALC, 0x702E,0x6C45,INVALC,INVALC,INVALC,INVALC,0x6C44,INVALC, INVALC,INVALC,INVALC,0x6C42,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x704A,INVALC, INVALC,0x7049,INVALC,INVALC,INVALC,0x704C,INVALC,0x704B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x734E,INVALC, INVALC,0x734D,INVALC,0x734C,INVALC,0x734B,INVALC,INVALC, 0x763F,0x763E,INVALC,INVALC,INVALC,INVALC,0x782E,0x782F, INVALC,INVALC,0x7830,INVALC,0x7966,INVALC,INVALC,INVALC, INVALC,0x7C5E,INVALC,0x4449,0x4531,INVALC,INVALC,0x4967, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5E62,0x5E63,INVALC,INVALC,0x6840,INVALC,INVALC, /* Block 90, Array index 0x1900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x546E, INVALC,INVALC,INVALC,INVALC,0x7A67,0x444A,0x4640,INVALC, INVALC,0x4768,0x4769,INVALC,0x4C5F,INVALC,INVALC,INVALC, 0x595C,INVALC,0x6842,INVALC,0x6843,0x6841,INVALC,0x444B, INVALC,0x4532,0x4534,0x4533,INVALC,0x4535,0x4641,INVALC, INVALC,0x4642,INVALC,INVALC,INVALC,INVALC,INVALC,0x476A, 0x476B,INVALC,INVALC,INVALC,INVALC,INVALC,0x4968,INVALC, INVALC,INVALC,INVALC,INVALC,0x4C63,INVALC,INVALC,0x4C61, 0x4C62,0x4C60,INVALC,INVALC,INVALC,INVALC,0x5058,0x5057, 0x5059,0x5056,INVALC,INVALC,0x4C64,0x5055,INVALC,0x546F, 0x5470,INVALC,0x5471,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5E64,INVALC,0x595D,INVALC,INVALC,INVALC,INVALC,0x635F, INVALC,0x6845,0x6844,INVALC,INVALC,0x6C47,0x704D,INVALC, INVALC,INVALC,INVALC,0x444C,0x4643,INVALC,0x4644,INVALC, 0x476D,0x4770,INVALC,INVALC,INVALC,0x476F,INVALC,INVALC, INVALC,0x4772,0x4771,0x476E,0x476C,INVALC,INVALC,INVALC, INVALC,INVALC,0x4973,INVALC,INVALC,0x4970,INVALC,INVALC, INVALC,INVALC,0x496A,0x4972,INVALC,INVALC,0x496F,INVALC, INVALC,0x496E,INVALC,INVALC,INVALC,0x4969,0x496C,INVALC, INVALC,INVALC,INVALC,0x496D,0x4971,0x4974,INVALC,INVALC, 0x496B,INVALC,INVALC,INVALC,INVALC,INVALC,0x4C69,0x4C71, INVALC,INVALC,INVALC,0x4C72,INVALC,INVALC,INVALC,INVALC, INVALC,0x4C68,INVALC,0x4C66,INVALC,INVALC,0x4C65,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4C74,0x4C6B,INVALC, INVALC,INVALC,0x4C70,0x4C6E,INVALC,0x4C6D,INVALC,INVALC, 0x4C6C,0x4C6A,0x4C73,0x4C6F,0x4C67,INVALC,INVALC,INVALC, 0x505B,INVALC,0x5062,INVALC,0x505A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x505D,INVALC,0x5060,0x5063,INVALC, 0x505E,INVALC,0x5061,INVALC,0x5478,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5065,INVALC,INVALC,INVALC,0x505C, /* Block 91, Array index 0x1A00 */ INVALC,0x5064,INVALC,0x505F,INVALC,INVALC,INVALC,INVALC, INVALC,0x547E,INVALC,INVALC,0x547D,INVALC,INVALC,INVALC, INVALC,0x5472,INVALC,0x5477,INVALC,INVALC,INVALC,INVALC, 0x5473,INVALC,INVALC,0x5476,0x5474,INVALC,INVALC,0x5475, 0x5479,INVALC,INVALC,0x547A,INVALC,0x547C,INVALC,INVALC, INVALC,0x547B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x595E,INVALC, INVALC,INVALC,INVALC,INVALC,0x5964,INVALC,INVALC,INVALC, 0x5963,0x595F,INVALC,INVALC,INVALC,INVALC,0x5967,INVALC, INVALC,0x5960,0x5968,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5966,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5965,INVALC,INVALC,INVALC,0x5961,INVALC, INVALC,INVALC,0x5962,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5E65, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5E67, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5E68,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5E66,0x5E69,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5E6A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6368,0x6366,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6365,0x6364,0x6363,INVALC, INVALC,0x6360,0x6367,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6361,INVALC,INVALC,0x6362,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x684A,0x6849, 0x684B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6846,INVALC,0x684C,INVALC,INVALC,0x6847,INVALC, INVALC,0x6848,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6C4B,INVALC,INVALC, INVALC,INVALC,INVALC,0x6C49,INVALC,INVALC,INVALC,INVALC, /* Block 92, Array index 0x1B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6C4D,0x6C48,INVALC,0x6C4A,0x6C4C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x704E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7351,INVALC,INVALC,INVALC, INVALC,INVALC,0x7350,INVALC,INVALC,INVALC,INVALC,INVALC, 0x734F,INVALC,INVALC,INVALC,0x704F,INVALC,INVALC,INVALC, 0x7640,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7967,INVALC,INVALC,0x7968,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x444D,0x444E,INVALC,0x444F,0x4536,0x4645,INVALC,0x4773, 0x4774,INVALC,0x4977,0x4978,0x4976,0x4975,INVALC,0x4C75, INVALC,INVALC,INVALC,0x4C77,0x4C76,INVALC,INVALC,INVALC, INVALC,0x5066,INVALC,0x5521,INVALC,INVALC,INVALC,INVALC, 0x5969,0x5E6C,INVALC,0x5E6B,INVALC,0x684D,INVALC,INVALC, 0x7050,INVALC,0x7352,INVALC,INVALC,0x7969,INVALC,0x7B5C, INVALC,INVALC,INVALC,0x4646,INVALC,0x4777,INVALC,0x4775, 0x4776,0x4778,INVALC,0x497A,0x4979,INVALC,INVALC,0x497B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4C78, 0x4C7A,0x4C7C,0x4C79,0x4C7D,0x4C7B,INVALC,INVALC,INVALC, INVALC,INVALC,0x506A,0x5067,0x5069,0x506B,0x5068,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5527,INVALC, 0x5523,INVALC,INVALC,0x5524,0x5526,0x5528,0x5525,INVALC, 0x552A,0x5529,INVALC,INVALC,INVALC,INVALC,INVALC,0x596E, INVALC,INVALC,0x596D,INVALC,0x596C,0x596B,0x596F,0x596A, INVALC,INVALC,INVALC,INVALC,0x5E6E,INVALC,INVALC,INVALC, 0x5E70,INVALC,0x5E6D,0x5E6F,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x684E,0x6856, INVALC,0x6850,0x6854,INVALC,0x6855,0x6851,0x6852,0x684F, 0x6853,0x6C50,INVALC,0x6C51,0x6C4F,INVALC,0x6C4E,INVALC, 0x7051,INVALC,INVALC,INVALC,INVALC,0x7831,0x796A,INVALC, 0x4450,INVALC,0x4779,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 93, Array index 0x1C00 */ INVALC,0x506C,INVALC,INVALC,0x552B,INVALC,INVALC,0x5972, 0x5971,0x5970,0x5E71,0x5E72,INVALC,0x6857,0x7052,0x4451, INVALC,0x4537,INVALC,INVALC,INVALC,INVALC,0x477A,INVALC, INVALC,INVALC,0x4C7E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4452,INVALC,0x4538,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x497C,INVALC,INVALC,INVALC, INVALC,0x5E73,INVALC,INVALC,INVALC,INVALC,INVALC,0x7353, 0x4453,0x4467,0x4539,INVALC,0x4647,INVALC,0x4A22,0x4A21, 0x497D,0x497E,INVALC,INVALC,INVALC,0x4D22,0x4D23,INVALC, 0x4D21,INVALC,INVALC,0x5070,INVALC,0x506F,0x506D,0x506E, 0x552E,0x552C,INVALC,INVALC,INVALC,0x552D,INVALC,INVALC, 0x5522,INVALC,INVALC,INVALC,0x5974,0x5975,INVALC,INVALC, 0x5973,INVALC,0x6858,INVALC,0x6C52,0x6C53,INVALC,INVALC, 0x7354,INVALC,INVALC,INVALC,0x7A68,INVALC,INVALC,0x453A, INVALC,0x4454,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x477B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4A26,INVALC,INVALC,INVALC, 0x4A23,0x4A24,INVALC,INVALC,0x4A25,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4D25,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4D27,INVALC,0x4D28,INVALC,INVALC,INVALC,INVALC, INVALC,0x4D29,INVALC,0x4D2A,INVALC,INVALC,INVALC,0x4D24, 0x4D26,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5072,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5071,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5533,INVALC,0x5532,INVALC,INVALC,0x552F,INVALC,INVALC, 0x5534,INVALC,INVALC,INVALC,0x5537,INVALC,0x5535,INVALC, INVALC,INVALC,INVALC,0x5531,INVALC,0x5530,INVALC,INVALC, /* Block 94, Array index 0x1D00 */ INVALC,0x5536,INVALC,INVALC,INVALC,INVALC,0x5977,0x5976, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5978,INVALC, INVALC,0x597C,INVALC,INVALC,0x597E,INVALC,0x597A,0x5A24, INVALC,0x5A21,INVALC,0x5979,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x597B,INVALC,0x5A22,INVALC,INVALC,0x5A23, INVALC,0x597D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5E76,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5E77, INVALC,INVALC,INVALC,INVALC,0x5E74,INVALC,INVALC,INVALC, 0x5E75,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6369,INVALC,INVALC,INVALC,INVALC,INVALC,0x636A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6859,INVALC,INVALC,0x685A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6C55,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6C54,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7358,INVALC,0x7356,INVALC,0x7355,0x7357,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x796B,INVALC,INVALC,INVALC,0x7A69,INVALC,INVALC, INVALC,INVALC,0x7B5E,INVALC,0x7B5D,INVALC,0x7C35,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4455,0x477C,INVALC, INVALC,0x4B56,0x5A25,INVALC,INVALC,0x4456,0x464A,0x4649, 0x4648,INVALC,INVALC,0x4A27,INVALC,INVALC,0x5538,INVALC, INVALC,0x4457,0x4458,0x4459,0x453B,INVALC,INVALC,0x5073, INVALC,INVALC,INVALC,INVALC,INVALC,0x5E78,0x445A,INVALC, /* Block 95, Array index 0x1E00 */ INVALC,INVALC,0x464B,0x464C,INVALC,INVALC,0x477D,INVALC, INVALC,INVALC,INVALC,INVALC,0x4A28,INVALC,INVALC,INVALC, INVALC,0x4D30,INVALC,INVALC,INVALC,0x4D2E,0x4D2D,INVALC, 0x4D2B,INVALC,0x4D2C,0x4D2F,INVALC,0x5074,INVALC,0x5076, INVALC,INVALC,INVALC,INVALC,INVALC,0x5075,INVALC,INVALC, INVALC,INVALC,INVALC,0x553A,INVALC,0x5539,INVALC,INVALC, INVALC,INVALC,INVALC,0x5A28,INVALC,INVALC,0x5A27,0x5A29, 0x5A26,INVALC,INVALC,INVALC,INVALC,0x5E7A,INVALC,INVALC, 0x5E7B,INVALC,INVALC,0x5E7C,INVALC,0x5E79,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x636B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x685F,0x685D,INVALC,0x685E, INVALC,INVALC,INVALC,0x685B,INVALC,INVALC,INVALC,0x6C57, INVALC,0x6C58,0x6C56,0x685C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7359,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x445B,0x464D,0x4821,INVALC,0x477E,INVALC, 0x4D31,0x636C,INVALC,0x453C,0x464E,0x5077,0x5E7D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A2A, INVALC,INVALC,0x4A2B,INVALC,INVALC,INVALC,INVALC,0x4A29, INVALC,INVALC,INVALC,INVALC,INVALC,0x4D35,0x4D36,0x4D33, INVALC,INVALC,0x4D32,INVALC,0x4D34,INVALC,INVALC,INVALC, 0x5078,INVALC,INVALC,INVALC,INVALC,INVALC,0x5079,0x553D, INVALC,INVALC,INVALC,0x553B,INVALC,0x553C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5A2D,0x5A2C,0x5A2A, 0x5A2B,INVALC,INVALC,INVALC,INVALC,INVALC,0x5A2E,INVALC, INVALC,0x5F21,0x5F22,INVALC,0x5F23,INVALC,INVALC,INVALC, 0x636E,0x636D,0x5E7E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6860,INVALC,INVALC,0x6861,INVALC, INVALC,INVALC,0x6C5A,INVALC,INVALC,0x6C5C,INVALC,0x6C5B, 0x6C5E,INVALC,0x6C59,0x6C5D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7833,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7D22,INVALC,INVALC,0x4D37,0x4A2C, INVALC,INVALC,0x507A,INVALC,INVALC,INVALC,0x445C,0x453D, /* Block 96, Array index 0x1F00 */ INVALC,0x464F,INVALC,INVALC,0x4A2D,INVALC,INVALC,INVALC, 0x507B,INVALC,0x6862,0x445D,INVALC,INVALC,INVALC,0x4822, INVALC,INVALC,0x636F,0x445E,0x453E,0x453F,INVALC,0x4651, 0x4650,INVALC,INVALC,0x4823,INVALC,INVALC,INVALC,0x4A2E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4D38,0x4D39, INVALC,0x4D3A,INVALC,INVALC,INVALC,0x507C,INVALC,INVALC, INVALC,0x553E,INVALC,INVALC,INVALC,0x5A2F,INVALC,0x5A30, INVALC,INVALC,INVALC,INVALC,0x5F24,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6863,INVALC, 0x6C5F,INVALC,0x7053,INVALC,0x735A,INVALC,0x7B5F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5A31, INVALC,0x6370,INVALC,INVALC,INVALC,INVALC,0x7641,INVALC, INVALC,INVALC,0x4A30,INVALC,0x4A2F,0x507D,INVALC,INVALC, INVALC,0x5A33,0x5D29,0x5A34,0x5A32,0x5F25,INVALC,INVALC, 0x6864,0x6C60,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A31, INVALC,0x4A32,INVALC,INVALC,0x4D3E,INVALC,INVALC,0x4D3D, 0x4D3B,0x4D3C,INVALC,INVALC,INVALC,0x5121,INVALC,0x5124, 0x507E,0x5126,0x5122,0x5123,0x5125,INVALC,INVALC,INVALC, 0x5541,0x5540,0x553F,INVALC,INVALC,INVALC,INVALC,0x5A35, 0x5A38,0x5A36,INVALC,INVALC,0x5A3B,INVALC,0x5A37,INVALC, 0x5A3A,0x5A39,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5F28,0x5F26,0x5F27,INVALC,0x6371,INVALC,0x6372,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6C62,INVALC,0x6C61, INVALC,0x6865,INVALC,INVALC,INVALC,0x735B,INVALC,INVALC, INVALC,INVALC,INVALC,0x4540,INVALC,0x4652,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4A34,0x4A36,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4825,0x4A35, 0x4A33,0x4824,INVALC,INVALC,INVALC,0x4D3F,INVALC,INVALC, 0x4D40,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4A3A,0x4A38,INVALC,INVALC,INVALC,INVALC, INVALC,0x4A37,INVALC,INVALC,INVALC,0x4D42,INVALC,INVALC, 0x4A39,INVALC,INVALC,INVALC,INVALC,0x4D41,INVALC,0x4D43, /* Block 97, Array index 0x2000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x512B,0x4D44, INVALC,INVALC,0x5127,INVALC,0x4D45,0x4D4A,0x4D48,INVALC, INVALC,INVALC,INVALC,0x4D4F,INVALC,0x5128,INVALC,INVALC, 0x5129,0x4D4B,INVALC,INVALC,INVALC,0x512A,INVALC,0x4D4C, 0x512C,0x4D4D,0x4D49,0x4D4E,INVALC,INVALC,INVALC,0x4D46, INVALC,INVALC,INVALC,INVALC,INVALC,0x4D47,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5132,INVALC,INVALC,0x5131,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x512D,INVALC,INVALC, 0x5545,INVALC,INVALC,INVALC,INVALC,0x5546,INVALC,INVALC, INVALC,0x5542,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5130,0x5543,0x5136,0x5544,INVALC,INVALC, 0x512F,0x5548,0x5135,0x5134,0x5133,0x5547,INVALC,0x5549, 0x512E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5A3C, INVALC,INVALC,INVALC,INVALC,0x554A,0x5550,INVALC,INVALC, INVALC,0x5A3E,INVALC,INVALC,0x554F,0x554D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x554E,INVALC,0x5551,INVALC, INVALC,INVALC,0x554C,INVALC,INVALC,INVALC,INVALC,0x554B, 0x5A3F,INVALC,INVALC,0x5A3D,INVALC,INVALC,INVALC,INVALC, 0x5A40,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5F2B,INVALC,0x5A42,0x5A47,0x5F2C,INVALC, 0x5A4E,INVALC,INVALC,0x5A46,0x5A49,0x5A44,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5A45,0x5A4C,0x5A50, INVALC,INVALC,INVALC,0x5A41,INVALC,INVALC,INVALC,INVALC, INVALC,0x5F29,INVALC,INVALC,INVALC,0x5A4B,INVALC,INVALC, 0x5A4A,INVALC,0x5A4F,INVALC,0x5A48,INVALC,INVALC,0x5A4D, 0x5F2D,0x5F2A,INVALC,INVALC,INVALC,INVALC,0x5A43,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5F32,0x5F36,INVALC,0x6377,0x5F34,INVALC,0x5F38,INVALC, INVALC,0x6379,0x5F30,0x5F33,INVALC,INVALC,INVALC,INVALC, /* Block 98, Array index 0x2100 */ 0x5F3A,0x637A,INVALC,INVALC,INVALC,INVALC,0x6426,INVALC, 0x637B,0x5F39,INVALC,INVALC,INVALC,0x6425,0x5F37,0x6374, INVALC,INVALC,0x5F3B,INVALC,INVALC,0x5F31,INVALC,INVALC, INVALC,INVALC,0x6373,0x6378,0x5F2E,INVALC,INVALC,0x6376, INVALC,INVALC,INVALC,0x5F2F,INVALC,INVALC,INVALC,0x6424, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6423,INVALC,INVALC,0x6427, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6422,0x6867, INVALC,INVALC,INVALC,INVALC,0x637E,INVALC,INVALC,0x6866, 0x6375,INVALC,INVALC,0x6868,0x637D,0x6421,0x637C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6C67,INVALC,INVALC, 0x686E,INVALC,0x686D,INVALC,INVALC,0x6C66,INVALC,0x686C, INVALC,INVALC,0x686A,0x686B,INVALC,INVALC,INVALC,0x6C64, 0x5F35,INVALC,INVALC,0x6C6B,INVALC,INVALC,0x6C65,INVALC, 0x6C6A,INVALC,INVALC,INVALC,INVALC,0x686F,0x6C63,0x6869, INVALC,INVALC,INVALC,INVALC,0x6C69,INVALC,0x6C6C,INVALC, INVALC,INVALC,0x6C68,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7057,INVALC,INVALC,INVALC,0x6C70,INVALC, 0x6C6E,0x7055,INVALC,INVALC,0x6C74,INVALC,INVALC,INVALC, INVALC,INVALC,0x6C72,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6C73,INVALC,INVALC,0x6C6D, INVALC,0x7056,INVALC,0x6C6F,0x6C71,INVALC,0x6C75,INVALC, INVALC,INVALC,0x7054,INVALC,INVALC,INVALC,0x7059,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x705A,INVALC, INVALC,INVALC,0x735D,INVALC,INVALC,INVALC,INVALC,0x735E, 0x705C,0x735C,0x705B,0x7360,INVALC,0x7058,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7642,INVALC,INVALC,0x735F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7834,INVALC,INVALC,0x7837,0x7836,0x7835, 0x796C,INVALC,0x796D,INVALC,0x7A6A,INVALC,0x7A6B,0x7B60, /* Block 99, Array index 0x2200 */ 0x7C36,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4541,INVALC,0x4653,INVALC,0x4827,0x4828,0x4826,INVALC, 0x4829,0x4A3C,0x4A3B,INVALC,INVALC,0x4D51,0x4D50,INVALC, INVALC,INVALC,0x5A51,0x5A52,INVALC,INVALC,INVALC,0x5F3C, INVALC,0x6428,0x6429,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6870,INVALC,INVALC,INVALC,0x6C76,INVALC, 0x705D,INVALC,0x7361,0x7643,0x7362,INVALC,0x4542,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4D53,0x4D52, 0x4D54,0x5137,INVALC,INVALC,INVALC,INVALC,INVALC,0x5552, 0x5A53,0x5F3D,INVALC,0x4543,INVALC,0x445F,0x4544,INVALC, INVALC,0x4657,0x4656,0x4654,0x4655,INVALC,INVALC,INVALC, 0x482C,INVALC,INVALC,0x482B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x482A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4A43,0x4A4C,0x4A4A, INVALC,INVALC,INVALC,0x4A48,INVALC,INVALC,0x4A41,INVALC, INVALC,0x4A47,INVALC,INVALC,0x4A45,INVALC,0x4A46,0x4D55, 0x4A40,INVALC,INVALC,INVALC,0x4A3D,INVALC,0x4A50,INVALC, INVALC,0x4A42,0x4A44,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4A4F,0x4A49,0x4A4E,INVALC,0x4A4D,0x4A3F,0x4A3E, 0x4A4B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4D63,INVALC,INVALC,0x4D5E,0x4D71,INVALC,INVALC,INVALC, INVALC,0x4D6C,INVALC,INVALC,INVALC,0x4D6A,INVALC,INVALC, INVALC,0x4D5B,INVALC,INVALC,0x4D65,0x4D64,INVALC,0x4D59, INVALC,INVALC,0x4D5A,INVALC,0x4D58,INVALC,0x4D70,0x4D68, 0x4D62,0x4D56,INVALC,0x4D61,0x4D57,0x4D69,0x4D72,INVALC, 0x4D66,INVALC,0x4D5C,0x4D5F,0x4D60,INVALC,0x4D6E,0x4D6F, 0x4D6D,0x4D67,0x4D6B,0x4D5D,0x5138,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5144,0x513C,0x513E,0x5143, INVALC,0x5141,INVALC,0x5553,0x5146,INVALC,INVALC,0x5142, INVALC,INVALC,INVALC,INVALC,0x513B,0x513F,0x5145,0x5555, /* Block 100, Array index 0x2300 */ INVALC,0x513D,0x5148,INVALC,INVALC,INVALC,INVALC,0x5140, 0x5554,0x513A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5147,INVALC,INVALC,INVALC,INVALC,0x5139,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5563,INVALC,0x5561,0x5562,INVALC,INVALC,INVALC,0x5558, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x555E,INVALC,INVALC,0x5560,0x5557,INVALC, INVALC,INVALC,0x555A,INVALC,INVALC,INVALC,0x555B,INVALC, INVALC,0x555D,INVALC,INVALC,0x5565,0x5564,0x5556,0x555C, 0x555F,INVALC,INVALC,INVALC,INVALC,0x5559,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5A5B, 0x5A6F,0x5A6E,INVALC,0x5A63,INVALC,INVALC,INVALC,INVALC, INVALC,0x5A5E,0x5A56,INVALC,INVALC,INVALC,0x5F4D,0x5A5A, INVALC,INVALC,0x5A70,0x5A6D,INVALC,INVALC,INVALC,INVALC, 0x5A6C,INVALC,INVALC,0x5A61,0x5A65,INVALC,INVALC,INVALC, 0x5A66,0x5A60,INVALC,INVALC,0x5F3F,INVALC,INVALC,0x5A6B, INVALC,INVALC,0x5A6A,INVALC,INVALC,INVALC,0x5A57,INVALC, 0x5A5C,0x5A67,INVALC,0x5A62,INVALC,INVALC,INVALC,INVALC, 0x5A54,0x5A68,0x5A58,0x5F3E,INVALC,0x5A59,INVALC,0x5A55, 0x5A64,0x5A5F,0x5A5D,INVALC,0x5A69,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5F41,INVALC,INVALC,INVALC,INVALC,INVALC,0x5F44,INVALC, INVALC,0x5F43,INVALC,INVALC,INVALC,0x5F45,INVALC,0x5F40, 0x5F48,INVALC,0x5F46,INVALC,INVALC,INVALC,0x5F4A,INVALC, INVALC,INVALC,0x5F52,0x5F50,INVALC,INVALC,INVALC,INVALC, INVALC,0x5F49,INVALC,0x5F47,INVALC,INVALC,INVALC,INVALC, INVALC,0x5F42,0x5F4F,INVALC,INVALC,0x5F4B,0x5F4C,INVALC, INVALC,INVALC,INVALC,INVALC,0x5F4E,INVALC,INVALC,INVALC, INVALC,0x5F53,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 101, Array index 0x2400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6438,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6434,INVALC,0x6431, INVALC,INVALC,INVALC,0x642A,0x6433,INVALC,0x6436,0x6437, INVALC,INVALC,INVALC,INVALC,0x6432,INVALC,0x642C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x642D,INVALC,0x6430,0x642E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x687A,INVALC,0x6435,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x642F,0x642B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6878,0x5F51,INVALC,0x6873,INVALC,INVALC,INVALC, 0x6872,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6876, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6879, INVALC,0x6C77,INVALC,INVALC,INVALC,0x687B,INVALC,0x6C78, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6875,0x6C79,0x6877,0x687C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6871, 0x6C7C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6C7D,INVALC,0x6D25,0x6D22,INVALC,0x6D23,INVALC,INVALC, INVALC,0x6D2B,0x6D29,INVALC,INVALC,INVALC,0x6C7A,INVALC, INVALC,INVALC,0x6D2C,INVALC,0x6874,0x6D21,INVALC,INVALC, INVALC,0x6D24,INVALC,0x6D28,0x6D2A,0x6D27,0x6D26,INVALC, 0x6C7E,INVALC,0x6C7B,0x6D2D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7061,0x7062,INVALC,0x706B,0x7068, INVALC,0x705F,0x7066,INVALC,0x7064,0x705E,INVALC,0x7065, INVALC,INVALC,0x7364,0x7060,INVALC,0x7067,0x7363,INVALC, INVALC,INVALC,0x7069,INVALC,0x706A,INVALC,INVALC,INVALC, 0x7365,INVALC,0x7063,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7366,INVALC,0x736B,INVALC,INVALC,INVALC,0x7368,INVALC, INVALC,INVALC,INVALC,INVALC,0x7369,0x736C,INVALC,INVALC, 0x7367,0x736A,0x7645,INVALC,0x7644,INVALC,INVALC,0x764A, INVALC,INVALC,0x7648,0x7649,INVALC,INVALC,0x7646,INVALC, /* Block 102, Array index 0x2500 */ 0x7838,INVALC,INVALC,INVALC,INVALC,INVALC,0x7647,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7839, INVALC,INVALC,INVALC,INVALC,0x796F,INVALC,INVALC,INVALC, 0x796E,0x7970,INVALC,INVALC,0x7A6D,0x7A6C,INVALC,INVALC, INVALC,INVALC,INVALC,0x7C37,0x7B61,INVALC,INVALC,INVALC, INVALC,INVALC,0x7C39,0x7C38,0x7C5F,INVALC,INVALC,0x4545, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x482D,INVALC, 0x4A53,0x4A51,INVALC,0x4A52,INVALC,INVALC,0x4D73,0x5149, INVALC,INVALC,INVALC,INVALC,INVALC,0x514A,INVALC,INVALC, 0x5566,0x5567,INVALC,INVALC,INVALC,INVALC,INVALC,0x5A77, INVALC,0x5A73,INVALC,INVALC,0x5A7A,0x5A79,0x5A72,0x5A75, 0x5A78,0x5A74,INVALC,INVALC,INVALC,0x5A71,0x5F54,INVALC, INVALC,INVALC,0x5F56,0x5F57,INVALC,INVALC,0x5F55,INVALC, INVALC,INVALC,INVALC,INVALC,0x6439,INVALC,INVALC,INVALC, INVALC,INVALC,0x687D,INVALC,0x706C,0x6D2E,INVALC,0x6D2F, 0x6D30,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x736D,0x736E,INVALC,INVALC,INVALC,0x4546, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5F59,0x5F58,INVALC,INVALC,INVALC,0x7A6E,INVALC,0x4547, INVALC,0x5568,INVALC,0x5A7C,0x5A7B,INVALC,INVALC,0x643A, INVALC,0x687E,INVALC,INVALC,0x4548,0x4658,INVALC,0x4D74, INVALC,INVALC,INVALC,0x514B,0x5A7D,INVALC,INVALC,0x5F5A, 0x643B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x764B, INVALC,0x4549,INVALC,INVALC,0x4D75,0x514C,INVALC,INVALC, INVALC,0x5569,INVALC,INVALC,INVALC,0x556A,INVALC,INVALC, INVALC,INVALC,INVALC,0x5B21,0x5B22,INVALC,0x5B23,0x5A7E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6922,0x6921, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x514D,INVALC,INVALC,0x454A,0x4659,INVALC, 0x482F,0x482E,INVALC,INVALC,0x4830,0x4831,INVALC,INVALC, INVALC,0x4A54,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4D76,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 103, Array index 0x2600 */ 0x4D7D,INVALC,0x4D7B,INVALC,INVALC,INVALC,0x4D7A,0x4E23, INVALC,INVALC,0x4E22,INVALC,0x4D79,INVALC,0x4D7C,0x4D7E, INVALC,INVALC,INVALC,0x4D78,0x4D77,0x4E21,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5153, 0x5150,INVALC,INVALC,INVALC,0x5156,0x514E,INVALC,0x5151, 0x5154,INVALC,INVALC,INVALC,INVALC,0x514F,INVALC,0x5152, INVALC,0x5155,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5572,0x556B,0x556E,INVALC,0x5571,INVALC,INVALC, INVALC,0x556C,INVALC,INVALC,0x5570,INVALC,INVALC,0x556D, INVALC,INVALC,0x556F,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5B25,INVALC,INVALC,0x5B24,0x5B29,INVALC, INVALC,INVALC,INVALC,INVALC,0x5B26,INVALC,0x5B28,INVALC, 0x5B27,INVALC,INVALC,INVALC,INVALC,INVALC,0x5F5B,0x5F5F, 0x5F5C,INVALC,INVALC,INVALC,0x5F5D,INVALC,0x5F5E,0x5F63, INVALC,INVALC,0x5F61,INVALC,INVALC,INVALC,0x5F62,INVALC, INVALC,INVALC,INVALC,INVALC,0x6441,INVALC,INVALC,0x643E, 0x643F,0x643D,INVALC,INVALC,INVALC,0x6443,INVALC,INVALC, INVALC,0x5F60,INVALC,INVALC,INVALC,INVALC,0x6440,0x643C, 0x6442,INVALC,INVALC,INVALC,INVALC,0x6925,INVALC,INVALC, INVALC,INVALC,0x6923,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6924,INVALC,INVALC,0x6D32,INVALC,INVALC,0x6D31,INVALC, INVALC,0x6D34,INVALC,INVALC,0x6D33,INVALC,INVALC,INVALC, 0x7072,0x706F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7070,INVALC,0x706D,0x7071, INVALC,0x706E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7370,INVALC, INVALC,0x736F,INVALC,INVALC,0x764C,0x783B,INVALC,INVALC, 0x783A,INVALC,INVALC,INVALC,INVALC,INVALC,0x7971,INVALC, INVALC,0x7A6F,INVALC,INVALC,0x7C3A,INVALC,INVALC,INVALC, 0x454B,INVALC,0x4832,0x4833,0x4A55,INVALC,INVALC,0x5157, 0x5573,0x5B2A,INVALC,INVALC,0x5937,INVALC,0x5F64,0x5F65, /* Block 104, Array index 0x2700 */ 0x5E32,INVALC,INVALC,0x6444,INVALC,INVALC,INVALC,INVALC, 0x454C,0x4834,INVALC,0x4E25,INVALC,0x4E24,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5574,0x5575,INVALC,0x5576, INVALC,INVALC,INVALC,0x5B2C,INVALC,0x5F67,INVALC,0x5F66, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x764D,0x7972, 0x454D,INVALC,0x465C,0x465D,0x465B,0x465E,0x465A,INVALC, INVALC,0x4837,INVALC,INVALC,0x4836,0x4838,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4835,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A5F,INVALC, INVALC,0x4A5E,INVALC,INVALC,INVALC,INVALC,0x4A57,0x4A58, 0x4A59,0x4A5A,INVALC,0x4A61,INVALC,INVALC,0x4A5C,0x4A62, INVALC,INVALC,INVALC,INVALC,0x4A5B,INVALC,0x4A5D,0x4A56, 0x4A60,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4E3A,INVALC,INVALC,0x4E26,INVALC,0x4E30, 0x4E31,0x4E29,0x4E3B,0x4E2B,INVALC,0x4E36,INVALC,0x4E2C, INVALC,INVALC,INVALC,INVALC,0x4E39,INVALC,0x4E34,0x4E32, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4E2D, INVALC,0x4E33,INVALC,0x4E27,INVALC,INVALC,INVALC,INVALC, 0x4E35,INVALC,INVALC,0x4E38,INVALC,0x4E28,INVALC,0x4E2F, INVALC,INVALC,0x4E37,INVALC,0x4E2A,0x4E2E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x515F, 0x516C,INVALC,INVALC,INVALC,0x5165,INVALC,0x515E,INVALC, 0x5168,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5163,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5169, 0x515C,0x5164,0x5170,0x5159,0x515B,INVALC,INVALC,INVALC, INVALC,0x516D,0x5166,INVALC,INVALC,0x516F,0x516A,INVALC, INVALC,INVALC,0x516E,INVALC,INVALC,0x5167,INVALC,INVALC, INVALC,0x5161,INVALC,INVALC,0x515D,INVALC,INVALC,0x5162, INVALC,0x515A,INVALC,0x516B,0x5627,0x5160,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5158, /* Block 105, Array index 0x2800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x562E,INVALC,INVALC,INVALC,0x5623, 0x562F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5577,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5621,0x562C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5578,0x557C,INVALC,INVALC,0x562A,0x5626,INVALC,INVALC, 0x5629,0x5630,0x557D,0x562B,INVALC,0x562D,0x557A,INVALC, 0x5579,INVALC,INVALC,INVALC,0x5624,INVALC,INVALC,INVALC, 0x5628,0x5625,INVALC,0x557B,0x557E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B33,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B32, INVALC,0x5B2D,0x5B42,0x5B38,INVALC,0x5B3C,0x5B3B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5B30,0x5B3D,INVALC,INVALC,0x5B36, INVALC,INVALC,INVALC,INVALC,INVALC,0x5B3E,INVALC,0x5B40, INVALC,0x5B41,0x5B2F,INVALC,INVALC,INVALC,INVALC,0x5B35, 0x5B3F,INVALC,INVALC,INVALC,INVALC,0x5B3A,INVALC,0x5B2E, 0x5B37,0x5B34,INVALC,0x5622,INVALC,0x5B31,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5B39,INVALC,INVALC,INVALC, INVALC,0x5F7B,INVALC,0x5F76,INVALC,0x5F77,INVALC,INVALC, INVALC,INVALC,0x5F73,INVALC,INVALC,0x5F69,INVALC,0x5F6C, 0x5F6B,INVALC,0x5F7C,INVALC,INVALC,INVALC,INVALC,0x5F6E, 0x5F6A,INVALC,INVALC,0x5F75,INVALC,INVALC,INVALC,0x5F71, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5F70,INVALC, INVALC,INVALC,0x5F74,INVALC,INVALC,0x5F6F,INVALC,INVALC, INVALC,0x5F72,0x5F68,0x5F7E,INVALC,INVALC,INVALC,INVALC, /* Block 106, Array index 0x2900 */ INVALC,INVALC,INVALC,INVALC,INVALC,0x5F6D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5F78,0x5F7A,INVALC, INVALC,INVALC,0x5F79,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x644C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x644E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6452,0x644A,INVALC,INVALC,INVALC, INVALC,INVALC,0x6447,0x6457,INVALC,0x6455,0x6451,INVALC, 0x6449,INVALC,INVALC,0x6456,INVALC,INVALC,INVALC,INVALC, 0x644F,INVALC,INVALC,0x6450,INVALC,0x6446,0x5F7D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x644B,INVALC,0x6448, INVALC,0x6453,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x644D,INVALC,INVALC,INVALC,0x6454,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6445,0x6928,INVALC,INVALC, INVALC,INVALC,INVALC,0x692D,0x6926,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6938,INVALC,INVALC,0x6936,INVALC, 0x6927,INVALC,INVALC,0x6930,INVALC,0x6934,0x692A,INVALC, INVALC,INVALC,INVALC,INVALC,0x6931,INVALC,INVALC,0x692E, INVALC,INVALC,INVALC,0x692F,INVALC,INVALC,INVALC,INVALC, INVALC,0x6929,INVALC,0x6937,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x692C,0x6935,0x6933,INVALC,INVALC, 0x6932,INVALC,INVALC,0x692B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6D37,INVALC,INVALC,INVALC,INVALC,0x6D42,INVALC,INVALC, INVALC,INVALC,INVALC,0x6D3F,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6D3B,INVALC,INVALC, /* Block 107, Array index 0x2A00 */ INVALC,0x6D38,0x6D40,INVALC,INVALC,0x6D41,INVALC,INVALC, INVALC,INVALC,0x6D3E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6D43,INVALC,0x6D3D,INVALC,INVALC,INVALC,INVALC, INVALC,0x6D3A,INVALC,INVALC,INVALC,INVALC,0x6D39,0x6D36, INVALC,0x6D3C,INVALC,0x6D35,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7121,INVALC,INVALC, 0x7074,0x7079,0x7075,INVALC,INVALC,0x7073,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x707A,INVALC,INVALC,0x707E, 0x7123,INVALC,INVALC,0x707D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7078,0x7076,INVALC,INVALC,INVALC,INVALC,INVALC,0x7122, INVALC,0x707C,0x707B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7077,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7378,INVALC, 0x7371,INVALC,INVALC,INVALC,0x7373,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x737A,INVALC,INVALC,INVALC,0x7372,INVALC,INVALC,0x7379, INVALC,INVALC,INVALC,INVALC,0x7375,INVALC,INVALC,INVALC, 0x737B,INVALC,0x7374,0x7377,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x764F,INVALC,0x7654,0x7655, INVALC,INVALC,INVALC,0x764E,INVALC,INVALC,INVALC,INVALC, 0x7652,INVALC,INVALC,0x7651,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7653,0x7650,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x783F,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x783E,0x7376,INVALC,0x783D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x783C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7973,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7A72,0x7A70,INVALC,INVALC,INVALC,INVALC, /* Block 108, Array index 0x2B00 */ INVALC,INVALC,INVALC,INVALC,0x7A71,INVALC,INVALC,INVALC, INVALC,INVALC,0x7B62,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7C3B,INVALC,INVALC,INVALC,INVALC,INVALC,0x7D23,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x454E,0x4839,INVALC,0x4E3C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5B43,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6022,INVALC,INVALC,0x6023,0x6021,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6458, INVALC,0x6939,INVALC,INVALC,0x693A,INVALC,0x6D45,INVALC, 0x6D44,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7124,INVALC,INVALC,0x737C,INVALC,INVALC,0x7656, INVALC,0x7B63,0x454F,0x465F,0x483A,0x4A63,0x4E3D,0x4E3E, INVALC,INVALC,0x5171,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6459,INVALC,INVALC,INVALC,INVALC,0x7125, 0x7657,0x4550,INVALC,0x483B,INVALC,INVALC,INVALC,0x4E3F, INVALC,INVALC,INVALC,0x5172,INVALC,INVALC,0x5173,INVALC, INVALC,0x5632,0x5631,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6025,INVALC, 0x6024,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6D46,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x737D,0x7658, INVALC,INVALC,0x7A73,INVALC,INVALC,0x5174,INVALC,0x5633, INVALC,INVALC,0x5B44,INVALC,0x6026,INVALC,INVALC,0x645B, 0x645A,INVALC,INVALC,INVALC,INVALC,0x6D47,0x6D48,INVALC, INVALC,INVALC,INVALC,0x4551,INVALC,0x4660,INVALC,0x4A64, INVALC,INVALC,0x5175,0x645C,0x4552,INVALC,INVALC,0x5176, INVALC,INVALC,0x737E,0x4553,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5B45,0x5B46,INVALC,INVALC,0x6027, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x645D,INVALC,INVALC, /* Block 109, Array index 0x2C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,0x7126,INVALC,INVALC, 0x7421,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4554, 0x4662,0x4661,INVALC,0x4E40,INVALC,INVALC,0x483C,INVALC, INVALC,INVALC,INVALC,0x4E41,INVALC,INVALC,INVALC,0x5177, INVALC,INVALC,INVALC,0x5634,0x5638,INVALC,0x5637,0x5635, 0x5636,INVALC,INVALC,0x5B47,0x602A,INVALC,0x6028,0x6029, INVALC,INVALC,INVALC,0x693B,0x4555,INVALC,INVALC,INVALC, 0x4663,INVALC,INVALC,INVALC,INVALC,INVALC,0x4666,INVALC, 0x4665,0x4664,0x4A65,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4846,0x4847,INVALC, 0x4842,INVALC,INVALC,INVALC,INVALC,0x4843,INVALC,0x483E, INVALC,0x483F,INVALC,0x4845,INVALC,0x483D,0x4A66,0x4840, 0x4841,0x4844,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4A72,INVALC,0x4A6D,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4A70,INVALC,0x4A77,INVALC,0x4A79,INVALC,0x4A7B,INVALC, INVALC,INVALC,0x4A6E,INVALC,INVALC,0x4A75,0x4A78,INVALC, INVALC,0x4A68,0x4B21,0x4A76,INVALC,0x4A6B,0x4A7A,INVALC, 0x4A69,0x4A6A,INVALC,INVALC,0x4A71,0x4A7C,INVALC,INVALC, 0x4A6F,INVALC,0x4A74,INVALC,0x4A7D,INVALC,0x4A73,INVALC, 0x4A7E,0x4A67,INVALC,0x4A6C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4E4D,0x4E5D,INVALC,0x4E54,INVALC, INVALC,0x4E45,INVALC,0x4E48,INVALC,INVALC,INVALC,INVALC, 0x4E50,0x4E52,INVALC,0x4E59,0x4E4B,0x4E49,0x4E4A,0x4E58, INVALC,0x4E53,INVALC,INVALC,0x4E51,0x4E56,INVALC,INVALC, INVALC,0x5178,0x4E5C,INVALC,0x4E46,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4E4F,INVALC,0x4E4E,0x4E60,0x4E55, INVALC,INVALC,INVALC,0x4E5B,0x4E5F,INVALC,INVALC,INVALC, 0x4E61,0x4E5A,0x4E4C,0x4E42,INVALC,0x4E47,INVALC,INVALC, 0x4E43,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4E5E, 0x5639,0x4E57,INVALC,0x4E44,INVALC,0x5229,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 110, Array index 0x2D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5179,0x517E,INVALC,0x5230,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5223, INVALC,INVALC,INVALC,0x5228,INVALC,INVALC,0x5222,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x517D,INVALC,0x522B, INVALC,0x522D,0x517B,0x5231,INVALC,INVALC,0x522E,INVALC, INVALC,0x5221,0x517A,INVALC,INVALC,0x522F,0x5227,INVALC, 0x522C,0x522A,INVALC,0x5224,INVALC,0x5225,0x5226,INVALC, INVALC,0x517C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5641,0x5646,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x564D,0x563E,INVALC, INVALC,0x5648,0x563A,INVALC,0x5643,INVALC,0x5645,INVALC, INVALC,INVALC,INVALC,INVALC,0x5647,INVALC,INVALC,0x5640, 0x563F,0x564B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x564C,INVALC,0x563D, 0x563C,0x5644,0x564A,INVALC,0x5649,INVALC,0x5B48,INVALC, INVALC,INVALC,INVALC,0x5642,0x564E,0x563B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5B6A,INVALC,INVALC,INVALC,0x5B57,0x5B55, INVALC,INVALC,0x5B4C,INVALC,INVALC,0x5B60,INVALC,INVALC, 0x5B5A,INVALC,INVALC,INVALC,0x5B49,INVALC,INVALC,0x5B6C, INVALC,INVALC,INVALC,INVALC,0x5B69,0x5B5D,0x5B68,0x5B53, INVALC,INVALC,INVALC,0x5B54,0x5B4E,INVALC,INVALC,INVALC, INVALC,0x5B56,0x5B5E,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5B63,0x5B4B,0x5B61,INVALC,INVALC,INVALC,0x5B58,INVALC, INVALC,0x5B4D,INVALC,INVALC,0x5B4F,INVALC,0x5B6D,INVALC, 0x5B67,INVALC,0x5B64,0x5B62,0x5B6B,INVALC,0x5B66,INVALC, INVALC,0x5B65,INVALC,0x5B4A,INVALC,0x5B5C,INVALC,0x5B5B, INVALC,0x5B59,0x5B51,0x5B50,INVALC,INVALC,INVALC,INVALC, /* Block 111, Array index 0x2E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,0x5B52,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6047,0x5B5F,0x6035,INVALC,0x6043,INVALC,INVALC, 0x6032,0x602E,INVALC,0x6034,0x6038,0x6033,0x603C,INVALC, INVALC,INVALC,INVALC,INVALC,0x6041,0x603B,INVALC,0x602B, INVALC,INVALC,0x602F,INVALC,0x603E,INVALC,INVALC,INVALC, 0x602C,INVALC,0x6040,INVALC,INVALC,INVALC,0x6044,INVALC, INVALC,INVALC,INVALC,0x6042,0x604A,INVALC,INVALC,INVALC, INVALC,INVALC,0x6031,INVALC,INVALC,0x603F,0x6048,INVALC, INVALC,INVALC,INVALC,INVALC,0x602D,INVALC,0x6039,INVALC, 0x6037,INVALC,INVALC,0x6036,INVALC,INVALC,INVALC,0x604D, INVALC,INVALC,INVALC,0x6049,INVALC,INVALC,INVALC,0x6030, INVALC,0x604C,INVALC,INVALC,INVALC,INVALC,0x603A,0x603D, INVALC,INVALC,0x604B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6046,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6463,INVALC,INVALC,INVALC,INVALC,INVALC,0x646D,INVALC, 0x6468,INVALC,INVALC,INVALC,0x646E,0x6464,INVALC,INVALC, INVALC,INVALC,0x645E,INVALC,INVALC,0x6467,INVALC,0x6472, INVALC,INVALC,0x6471,0x646B,INVALC,INVALC,INVALC,0x645F, INVALC,INVALC,INVALC,INVALC,0x6473,INVALC,0x6461,INVALC, INVALC,INVALC,0x646A,INVALC,0x6469,INVALC,INVALC,INVALC, INVALC,INVALC,0x6462,INVALC,0x646F,0x6466,INVALC,0x6465, INVALC,INVALC,INVALC,0x6045,0x6957,INVALC,INVALC,INVALC, INVALC,0x646C,INVALC,0x6460,0x6470,0x6D5A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6954,INVALC,INVALC,0x6949, INVALC,INVALC,0x6956,INVALC,0x6940,INVALC,INVALC,0x6958, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x693E,0x6948, /* Block 112, Array index 0x2F00 */ INVALC,0x6955,0x6946,INVALC,INVALC,INVALC,0x694A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6945, INVALC,INVALC,INVALC,0x693F,0x693D,0x694F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6943,INVALC,0x6947,0x694E,INVALC,INVALC,INVALC,INVALC, INVALC,0x6941,0x6953,0x6950,0x6944,INVALC,INVALC,0x6951, INVALC,0x694B,0x694D,0x693C,INVALC,INVALC,INVALC,INVALC, 0x694C,INVALC,INVALC,INVALC,INVALC,INVALC,0x6942,0x6D49, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6D4C,INVALC,INVALC,0x6D4E,INVALC,INVALC,INVALC, 0x6D59,INVALC,INVALC,0x6D51,INVALC,INVALC,INVALC,0x6D5D, 0x6D5C,INVALC,INVALC,INVALC,0x6D57,INVALC,0x6D4D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6D50,0x6D53,0x6D5B, 0x6D56,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6D52,INVALC,0x6D55,INVALC,0x6D4A,INVALC,INVALC,INVALC, 0x742A,INVALC,INVALC,INVALC,0x6D4B,INVALC,0x6D4F,INVALC, 0x6952,INVALC,INVALC,INVALC,INVALC,INVALC,0x6D54,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6D58, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7133,0x7129,INVALC,INVALC,0x712B,INVALC,0x7132,0x712D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7128,INVALC,0x712E,0x7134,INVALC,0x7131,INVALC, INVALC,0x7130,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x712F,0x712C,0x7127,0x712A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x742E,INVALC,INVALC, 0x7422,INVALC,INVALC,0x7426,INVALC,INVALC,INVALC,0x7424, 0x7425,0x742C,INVALC,INVALC,0x7427,INVALC,INVALC,INVALC, INVALC,0x742D,INVALC,0x7428,0x742B,INVALC,0x742F,0x7429, 0x7430,0x7423,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x765D,INVALC,INVALC,INVALC,0x765B,INVALC, /* Block 113, Array index 0x3000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x765C,INVALC, INVALC,0x7659,INVALC,0x765A,INVALC,INVALC,INVALC,0x765F, INVALC,0x765E,INVALC,INVALC,INVALC,0x7845,INVALC,INVALC, 0x7846,INVALC,0x7843,0x7840,INVALC,0x7844,INVALC,0x7841, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7842,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7975,INVALC,0x7976,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7974,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7A74,INVALC,INVALC,INVALC, INVALC,0x7B64,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7B65,INVALC,INVALC,INVALC,INVALC,INVALC,0x7C60,INVALC, INVALC,INVALC,INVALC,0x7D24,0x7D32,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4556,INVALC,INVALC,INVALC,INVALC, 0x4848,INVALC,INVALC,INVALC,INVALC,INVALC,0x4B22,INVALC, 0x4B25,INVALC,INVALC,INVALC,0x4B23,0x4B24,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4E65,INVALC,INVALC,INVALC,0x4E63,INVALC, INVALC,INVALC,0x4E64,INVALC,INVALC,0x4E62,INVALC,INVALC, INVALC,0x4E66,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x523A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5232,0x5235,0x5237,0x5239,0x5236, INVALC,INVALC,INVALC,0x5234,INVALC,INVALC,INVALC,INVALC, 0x5238,INVALC,0x5233,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5653,INVALC,0x564F,INVALC,INVALC,INVALC,INVALC,0x5654, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5650,0x5652,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5651,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B72, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5B6E,INVALC,INVALC,INVALC,0x5B71,INVALC,INVALC, /* Block 114, Array index 0x3100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5B6F,0x5B70,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x604E,0x604F,INVALC,0x6055,INVALC,INVALC,INVALC, INVALC,0x6052,INVALC,INVALC,INVALC,INVALC,0x6050,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6051,INVALC,INVALC,INVALC,INVALC,INVALC,0x6053,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6522,INVALC, INVALC,0x6478,INVALC,INVALC,0x647D,INVALC,0x6474,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6524,INVALC, INVALC,0x6475,INVALC,INVALC,0x647A,INVALC,0x6521,INVALC, INVALC,INVALC,INVALC,INVALC,0x6477,0x647E,0x647C,0x6479, 0x6523,0x6476,INVALC,INVALC,0x647B,INVALC,0x6054,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x695B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x695D,INVALC,INVALC,INVALC, INVALC,INVALC,0x695C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x695E,INVALC,0x6959,INVALC,INVALC,INVALC, INVALC,0x695A,INVALC,INVALC,INVALC,INVALC,INVALC,0x6D5E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6D61,INVALC,INVALC,INVALC,0x6D5F,INVALC,INVALC,INVALC, INVALC,0x6D60,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x713B,INVALC,INVALC,INVALC,INVALC,0x7135,INVALC, INVALC,INVALC,INVALC,0x713F,0x7140,INVALC,INVALC,INVALC, 0x7139,0x7136,INVALC,INVALC,INVALC,INVALC,0x713C,INVALC, 0x7137,INVALC,0x7138,INVALC,INVALC,0x713A,INVALC,INVALC, INVALC,0x713D,INVALC,INVALC,0x713E,INVALC,INVALC,0x7432, 0x7439,INVALC,INVALC,INVALC,INVALC,0x7435,0x7434,0x7431, INVALC,INVALC,INVALC,INVALC,0x7437,0x7436,0x7433,INVALC, INVALC,INVALC,INVALC,INVALC,0x7438,INVALC,INVALC,INVALC, 0x7663,INVALC,INVALC,0x7660,0x7661,INVALC,0x7662,INVALC, /* Block 115, Array index 0x3200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7847,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7848,INVALC,INVALC, 0x7977,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7A75,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7D46,INVALC,0x4557,INVALC,0x4E67,0x4E68,INVALC,INVALC, 0x523B,INVALC,INVALC,INVALC,INVALC,0x743A,0x4558,INVALC, 0x4E69,0x5655,0x6525,0x4559,INVALC,0x5B73,0x695F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x743B,0x455A, 0x4E6A,INVALC,INVALC,INVALC,0x6056,INVALC,INVALC,INVALC, INVALC,INVALC,0x6526,INVALC,INVALC,INVALC,0x6D62,INVALC, 0x7849,0x455B,INVALC,0x455C,INVALC,0x484A,INVALC,0x4849, 0x4B28,0x4B27,0x4B26,INVALC,INVALC,INVALC,INVALC,0x4E6B, INVALC,0x4E6C,INVALC,INVALC,INVALC,INVALC,INVALC,0x523D, INVALC,INVALC,0x523C,INVALC,0x523E,INVALC,INVALC,INVALC, INVALC,0x5656,INVALC,INVALC,INVALC,0x5B74,INVALC,INVALC, 0x6058,0x5B75,INVALC,INVALC,0x6057,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6960,INVALC,INVALC,INVALC,0x6961,INVALC, INVALC,INVALC,INVALC,0x6D63,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x784A,INVALC,INVALC,INVALC,INVALC,0x7A76, INVALC,INVALC,INVALC,INVALC,0x455D,INVALC,INVALC,0x4667, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4E6D,INVALC,0x4B2A,INVALC,0x4B29,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4E6E,INVALC, 0x4E71,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4E70, INVALC,0x4E6F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5240,0x5241,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x523F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x565B, 0x565A,0x5658,INVALC,INVALC,0x5657,0x5659,INVALC,INVALC, /* Block 116, Array index 0x3300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5B79,INVALC,INVALC,0x5B78,INVALC, INVALC,0x5B7A,INVALC,0x5B77,0x5B76,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x605A,INVALC,INVALC, INVALC,0x605C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x605B,INVALC,0x6059,0x6527, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x652A,0x6529, INVALC,INVALC,INVALC,INVALC,0x6962,0x6528,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6D64,INVALC, 0x6963,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6D65, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7141,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x743C,INVALC,0x743D,INVALC,INVALC,0x7665,INVALC,0x7664, 0x784B,INVALC,0x784C,0x7978,INVALC,INVALC,INVALC,INVALC, 0x7B66,INVALC,INVALC,INVALC,0x4668,INVALC,0x565C,0x5B7B, INVALC,0x4669,INVALC,0x455E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4B2B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4E74, INVALC,INVALC,INVALC,INVALC,INVALC,0x4E76,INVALC,INVALC, 0x4E73,0x4E72,INVALC,0x4E75,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5245,0x5248,INVALC,INVALC,INVALC,0x5242, INVALC,INVALC,INVALC,0x5244,INVALC,INVALC,INVALC,INVALC, 0x5247,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5243,INVALC,INVALC,0x5246,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5662,INVALC, 0x5660,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5661,INVALC,INVALC,0x565D,0x565F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C22,INVALC, /* Block 117, Array index 0x3400 */ INVALC,INVALC,INVALC,0x5B7E,INVALC,0x5B7C,0x5C21,INVALC, INVALC,0x565E,0x5B7D,INVALC,INVALC,0x5C23,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6066,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6060,INVALC,INVALC,0x6061,0x6067,INVALC, 0x6068,INVALC,0x605E,INVALC,INVALC,INVALC,INVALC,0x6065, INVALC,INVALC,INVALC,0x605F,0x6064,0x6062,0x6063,INVALC, INVALC,INVALC,0x605D,INVALC,INVALC,INVALC,INVALC,0x6531, INVALC,0x6530,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x652D,INVALC,INVALC, INVALC,0x6532,0x652C,0x6533,0x6534,INVALC,0x652F,0x652E, INVALC,INVALC,INVALC,0x6965,0x6964,INVALC,INVALC,INVALC, INVALC,0x6D66,0x6966,INVALC,INVALC,0x6968,INVALC,0x652B, 0x6967,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6D69,INVALC, 0x6D6A,INVALC,INVALC,0x6D68,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6D67,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7144,INVALC,INVALC,INVALC,0x7142,INVALC,0x7146,0x7145, INVALC,INVALC,INVALC,0x7143,INVALC,INVALC,0x7440,0x7666, 0x7441,0x743E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x743F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x784D,INVALC,0x7667, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x784E,INVALC,INVALC,INVALC,INVALC,0x7979, INVALC,INVALC,INVALC,INVALC,0x7A78,INVALC,0x7A77,INVALC, INVALC,INVALC,0x7C3C,INVALC,0x466A,INVALC,INVALC,INVALC, 0x5C24,INVALC,0x7147,0x784F,0x7B67,INVALC,0x466B,INVALC, INVALC,0x2322,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C25,0x5C26, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 118, Array index 0x3500 */ INVALC,INVALC,INVALC,INVALC,0x6969,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7148,0x7149,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7668,INVALC,INVALC, 0x466C,INVALC,0x5249,INVALC,0x5C27,INVALC,INVALC,0x466D, INVALC,INVALC,0x5C28,INVALC,INVALC,0x6069,0x606A,INVALC, 0x466E,0x466F,INVALC,0x4B2D,0x4B2C,0x524A,INVALC,INVALC, 0x4670,0x4671,0x4672,0x4673,INVALC,INVALC,INVALC,0x4B2E, 0x4B2F,INVALC,INVALC,INVALC,INVALC,0x4E77,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x524E,0x524C,INVALC,0x524D,0x524B, INVALC,INVALC,INVALC,INVALC,0x5663,INVALC,INVALC,INVALC, INVALC,0x5667,0x5666,INVALC,0x5665,0x5664,INVALC,INVALC, INVALC,INVALC,0x5C2B,INVALC,INVALC,0x5C29,0x5C2A,INVALC, INVALC,INVALC,0x606C,0x606B,INVALC,INVALC,INVALC,INVALC, 0x5C2C,INVALC,INVALC,INVALC,INVALC,INVALC,0x6535,INVALC, 0x6536,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6D6B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7851,0x7850, INVALC,INVALC,0x7B68,0x4674,INVALC,INVALC,INVALC,0x5C2D, INVALC,0x696A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4E79,0x4E7A,INVALC,INVALC,0x4E78,INVALC,INVALC, INVALC,INVALC,0x5252,0x5253,0x5250,0x5251,INVALC,INVALC, INVALC,INVALC,INVALC,0x524F,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x566B,0x566C,INVALC,0x5C30,INVALC,INVALC, 0x5671,0x566F,INVALC,INVALC,0x566E,0x566D,0x5668,INVALC, INVALC,INVALC,0x5670,INVALC,INVALC,0x5669,INVALC,0x566A, INVALC,INVALC,0x5C31,INVALC,INVALC,0x5C32,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5C2E,0x5C2F,INVALC,INVALC, 0x6071,0x6070,INVALC,0x606E,INVALC,INVALC,0x6072,INVALC, 0x6073,INVALC,0x606D,0x606F,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6538,0x653B,0x653A,0x653F,0x653E,INVALC,INVALC,INVALC, INVALC,INVALC,0x653C,INVALC,INVALC,INVALC,INVALC,0x653D, /* Block 119, Array index 0x3600 */ 0x6537,0x6539,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x696E,INVALC,0x696D,INVALC,0x696C,INVALC,INVALC, INVALC,INVALC,INVALC,0x696F,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6D6E, 0x6D6C,0x6D71,0x6D72,INVALC,0x6D6F,INVALC,0x6D70,0x696B, INVALC,0x6D6D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x714A,INVALC,INVALC,INVALC, 0x714B,INVALC,0x714C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7443,INVALC,INVALC,INVALC,0x7442,INVALC, INVALC,INVALC,INVALC,INVALC,0x7444,INVALC,INVALC,INVALC, INVALC,INVALC,0x766B,INVALC,INVALC,INVALC,0x7669,INVALC, 0x766A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7852, INVALC,0x7853,0x797A,INVALC,INVALC,0x797B,INVALC,INVALC, INVALC,0x7A79,INVALC,INVALC,0x7B6A,INVALC,0x7B69,INVALC, INVALC,0x7C61,0x7C62,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5254,INVALC,INVALC,0x6074,0x6075,0x4675,0x484B,INVALC, INVALC,INVALC,0x4B30,INVALC,0x4E7B,INVALC,0x5255,0x5256, 0x5257,INVALC,INVALC,0x5672,INVALC,INVALC,0x5C33,INVALC, INVALC,INVALC,INVALC,0x6077,INVALC,INVALC,0x6076,INVALC, INVALC,INVALC,0x6D73,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4676,INVALC, 0x5673,INVALC,INVALC,INVALC,0x6078,INVALC,INVALC,INVALC, INVALC,INVALC,0x6D74,INVALC,INVALC,INVALC,INVALC,0x4677, INVALC,INVALC,0x4E7C,0x525A,INVALC,0x525B,0x5259,INVALC, 0x5258,INVALC,0x5674,INVALC,INVALC,0x5675,0x5676,INVALC, INVALC,INVALC,0x5C35,INVALC,0x5C34,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5C36,0x6079,INVALC,0x6540,0x6541, INVALC,0x6970,INVALC,0x6971,0x6D75,0x714E,INVALC,0x714D, INVALC,INVALC,0x7445,INVALC,INVALC,INVALC,0x4678,0x4B31, INVALC,INVALC,0x4E7D,INVALC,0x4E7E,INVALC,INVALC,INVALC, 0x525E,0x525D,INVALC,INVALC,0x5262,INVALC,0x5261,INVALC, /* Block 120, Array index 0x3700 */ INVALC,0x525C,INVALC,INVALC,INVALC,INVALC,INVALC,0x5263, INVALC,0x525F,INVALC,0x5260,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5678, 0x5679,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x567A,0x5677,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C3A,0x5C37, 0x5C3B,INVALC,0x5C3C,INVALC,0x5C39,INVALC,0x5C38,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x607A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6542,0x654A,INVALC,0x6545,INVALC, INVALC,0x6975,0x654D,0x6546,INVALC,0x654B,0x6544,INVALC, 0x654C,INVALC,0x6548,0x6543,0x6549,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6547,INVALC,INVALC,INVALC,0x6973,INVALC,0x6974, INVALC,INVALC,INVALC,INVALC,0x6972,INVALC,INVALC,0x6D77, INVALC,INVALC,INVALC,0x6D7A,0x6D78,INVALC,0x6D76,INVALC, INVALC,0x6D79,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7150,0x7151, 0x714F,INVALC,INVALC,INVALC,INVALC,0x7152,INVALC,0x744A, INVALC,INVALC,0x7447,INVALC,0x7449,0x744B,INVALC,INVALC, 0x7448,INVALC,INVALC,0x7446,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x766E,0x766F,0x766C,INVALC,0x766D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7854, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7A7A,INVALC,INVALC,INVALC,0x7C63, INVALC,INVALC,0x7D33,0x4679,0x5264,INVALC,INVALC,INVALC, INVALC,INVALC,0x467A,0x4B32,INVALC,0x4F21,INVALC,INVALC, INVALC,0x567B,INVALC,INVALC,INVALC,0x607B,0x654E,0x744C, INVALC,INVALC,INVALC,0x467B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4F22,INVALC,INVALC, /* Block 121, Array index 0x3800 */ INVALC,INVALC,0x5265,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5267,0x5268,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5266,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5721,INVALC,0x5727, 0x5726,INVALC,INVALC,INVALC,INVALC,0x5724,INVALC,0x567D, INVALC,INVALC,INVALC,INVALC,INVALC,0x5725,INVALC,INVALC, 0x567C,INVALC,0x5728,INVALC,0x5722,INVALC,INVALC,0x5723, 0x567E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5C3E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C3F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x607C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5C3D,0x607D,INVALC,INVALC,0x607E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6555,INVALC,INVALC,0x6558, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6554,INVALC,INVALC,0x6553,INVALC,0x654F,INVALC, INVALC,0x6556,INVALC,0x6557,INVALC,INVALC,INVALC,0x6551, 0x6552,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6977, INVALC,INVALC,INVALC,0x697B,INVALC,INVALC,INVALC,0x6978, INVALC,0x697A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6550,INVALC,INVALC,0x6979,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6D7D,INVALC,0x6E23,INVALC,0x6E21,INVALC, INVALC,0x6976,INVALC,INVALC,INVALC,0x6D7C,INVALC,INVALC, INVALC,INVALC,0x6D7E,0x6D7B,INVALC,INVALC,INVALC,INVALC, 0x6E24,INVALC,INVALC,INVALC,INVALC,0x6E22,INVALC,INVALC, INVALC,INVALC,0x7154,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7156, 0x7153,INVALC,INVALC,INVALC,0x7155,INVALC,INVALC,0x7450, INVALC,INVALC,INVALC,INVALC,0x744F,INVALC,INVALC,0x744D, INVALC,INVALC,0x744E,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 122, Array index 0x3900 */ INVALC,0x7451,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7670,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7855,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x797C,INVALC, INVALC,INVALC,0x797D,0x7A21,0x797E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x467C,INVALC,INVALC,INVALC,0x4F23,INVALC, 0x4F24,0x4F25,INVALC,INVALC,INVALC,INVALC,0x5269,0x526C, 0x526B,0x526A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x572A,INVALC,INVALC,INVALC,INVALC,0x5729,0x572D,0x5730, INVALC,INVALC,0x5731,INVALC,INVALC,0x572F,0x572E,0x572C, 0x572B,INVALC,INVALC,INVALC,INVALC,0x5C40,INVALC,INVALC, 0x5C41,INVALC,INVALC,INVALC,INVALC,0x5C42,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6559,INVALC,INVALC,INVALC,INVALC,0x655A, INVALC,0x655B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x697E,0x697C,0x697D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7157,0x7452, INVALC,INVALC,0x7453,INVALC,INVALC,INVALC,0x7671,INVALC, INVALC,0x7856,INVALC,0x7B6B,INVALC,INVALC,INVALC,INVALC, INVALC,0x526D,0x526E,INVALC,INVALC,0x655D,0x467D,0x4B35, 0x4B34,0x4B33,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4F27,0x4F26,INVALC,0x5271,INVALC,INVALC,INVALC,INVALC, INVALC,0x526F,0x5270,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5738,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5735, INVALC,INVALC,INVALC,0x5733,0x5732,INVALC,0x5736,0x5734, INVALC,0x5737,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5C43,INVALC,INVALC,INVALC,INVALC, /* Block 123, Array index 0x3A00 */ 0x6125,INVALC,INVALC,INVALC,INVALC,0x6124,INVALC,INVALC, 0x6122,INVALC,INVALC,0x6123,INVALC,0x6121,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6561,INVALC,INVALC,INVALC, INVALC,INVALC,0x655F,INVALC,0x655E,INVALC,0x6563,0x6562, 0x6560,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6A21,INVALC, INVALC,0x6A22,INVALC,INVALC,INVALC,INVALC,INVALC,0x6E29, INVALC,INVALC,INVALC,0x6E2A,0x6E26,0x6E28,INVALC,0x6E25, 0x6E27,INVALC,INVALC,INVALC,INVALC,INVALC,0x715A,INVALC, INVALC,INVALC,INVALC,0x715C,0x715B,0x7158,0x7159,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7454, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7674,0x7672,0x7673,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7858,INVALC,0x7857,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x467E,INVALC,0x4B36,INVALC, INVALC,0x4F29,0x4F28,INVALC,INVALC,INVALC,INVALC,0x5272, INVALC,0x5273,INVALC,INVALC,0x5739,INVALC,INVALC,INVALC, 0x573A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5C44,INVALC,INVALC,0x5C45,0x6128,0x6127, 0x6126,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6564, 0x6565,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6A24,0x6A23,INVALC,INVALC,INVALC,0x6E2C,0x6E2B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x715D,INVALC,INVALC,INVALC,INVALC,0x7455, INVALC,INVALC,INVALC,INVALC,0x7675,0x7676,INVALC,0x7A22, INVALC,INVALC,0x7C3D,0x4721,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x573B,INVALC,INVALC,INVALC,INVALC,INVALC,0x5D7E, 0x5D7D,INVALC,INVALC,0x612A,INVALC,0x6129,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6A25,INVALC,0x6A26, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7A23,INVALC, INVALC,0x484C,0x4F2A,INVALC,INVALC,0x5275,INVALC,0x5274, /* Block 124, Array index 0x3B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x573C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x573D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5C4B,INVALC,0x5C48,INVALC,INVALC,0x5C4C,INVALC, 0x5C46,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C4A,INVALC, 0x5C47,INVALC,INVALC,INVALC,0x5C49,INVALC,0x5C4D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x612D,INVALC, INVALC,0x612B,INVALC,0x6132,INVALC,0x6131,INVALC,0x6133, 0x612E,0x6134,0x612F,INVALC,0x6130,INVALC,0x612C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6568,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x656A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6569,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6A2A,INVALC,0x6566, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6A31,INVALC,INVALC,0x6A30, INVALC,INVALC,INVALC,0x6A29,INVALC,INVALC,INVALC,0x6A2E, INVALC,INVALC,INVALC,INVALC,0x6A2D,0x6A28,INVALC,0x6A2B, INVALC,INVALC,INVALC,INVALC,INVALC,0x6A2C,INVALC,INVALC, 0x6E34,0x6A27,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6E2D,INVALC,INVALC, INVALC,0x6E2E,INVALC,INVALC,0x6E30,INVALC,INVALC,INVALC, 0x6A2F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6567,0x6E33,INVALC,INVALC,0x6E2F,INVALC,0x6E31,0x6E32, INVALC,0x7160,INVALC,INVALC,0x6E35,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x715E,INVALC,0x7162,INVALC,INVALC,INVALC,INVALC, 0x745B,0x7163,INVALC,INVALC,0x7161,INVALC,0x7165,INVALC, INVALC,0x7164,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7459, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7458,INVALC, /* Block 125, Array index 0x3C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7456, INVALC,INVALC,INVALC,INVALC,0x745A,0x7457,INVALC,INVALC, INVALC,0x715F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x767A,INVALC, INVALC,0x767C,INVALC,0x767B,INVALC,INVALC,INVALC,0x7678, INVALC,INVALC,0x7679,0x7677,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x785D, 0x785B,INVALC,INVALC,INVALC,INVALC,0x785C,0x7859,0x785A, 0x785E,INVALC,INVALC,0x7A25,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7A24,0x7A26,INVALC,INVALC, 0x7A7B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7B6D, 0x7B6C,INVALC,INVALC,0x7C3F,0x7C3E,0x7C40,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7D25,INVALC,0x7D26,INVALC, INVALC,INVALC,0x7D4B,0x484D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5276,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x573E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5C4E,INVALC,INVALC,0x5C50,INVALC,0x5C4F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6135, INVALC,INVALC,INVALC,INVALC,INVALC,0x6136,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x656B,INVALC,0x656C,INVALC,0x656D,INVALC,INVALC, INVALC,0x6A32,INVALC,INVALC,INVALC,0x6A33,0x6A34,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6E36,INVALC,INVALC,INVALC,0x2323,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7166,0x7167,INVALC, INVALC,0x7461,INVALC,INVALC,0x745D,0x7462,0x745E,0x7460, 0x745C,INVALC,0x745F,INVALC,INVALC,INVALC,INVALC,0x767D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7A27, 0x7A28,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x484E,INVALC,INVALC,0x4B37,INVALC,INVALC,0x4F2B,INVALC, /* Block 126, Array index 0x3D00 */ 0x5279,INVALC,0x5277,INVALC,0x527C,0x5278,0x527D,0x527B, INVALC,0x527A,0x5742,0x5741,INVALC,0x574A,INVALC,INVALC, 0x5746,INVALC,INVALC,INVALC,0x5745,0x5747,INVALC,0x5740, INVALC,0x574B,0x5748,0x574C,0x5749,INVALC,INVALC,INVALC, 0x5743,0x573F,0x5744,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x613B,INVALC,INVALC,0x5C54,0x5C5B, 0x5C58,0x5C5E,0x5C5D,0x5C59,INVALC,INVALC,INVALC,INVALC, INVALC,0x5C55,INVALC,INVALC,0x5C56,INVALC,INVALC,INVALC, 0x5C57,INVALC,0x5C5C,0x5C52,0x5C5A,INVALC,0x5C51,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6138,INVALC,INVALC,INVALC,INVALC,0x613A,INVALC,INVALC, INVALC,INVALC,INVALC,0x6573,INVALC,INVALC,0x6137,INVALC, INVALC,0x613E,0x6140,INVALC,INVALC,INVALC,0x613F,INVALC, 0x6139,INVALC,INVALC,INVALC,INVALC,INVALC,0x613C,INVALC, 0x6141,0x5C53,0x613D,0x6142,INVALC,INVALC,INVALC,INVALC, INVALC,0x656F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6571,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6572, INVALC,0x6570,INVALC,0x656E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6A37,INVALC,0x6E43,INVALC, 0x6A3A,INVALC,0x6A40,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6A47,0x6A44,INVALC,INVALC, 0x6A36,0x6A3E,0x6A3D,INVALC,0x6A3C,0x6A42,INVALC,INVALC, 0x6A43,INVALC,0x6A3F,0x6A35,INVALC,0x6A38,0x6A39,0x6A41, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6A46, INVALC,INVALC,0x6A3B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6A45,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6E3B,0x6E44,0x6E40,INVALC,INVALC,0x6E3D,0x6E41,INVALC, 0x6E37,INVALC,INVALC,0x6E3F,INVALC,INVALC,INVALC,INVALC, 0x6E3E,0x6E42,INVALC,INVALC,0x6E3C,INVALC,INVALC,0x6E39, INVALC,INVALC,0x6E45,INVALC,0x6E38,INVALC,INVALC,INVALC, INVALC,0x6E46,INVALC,0x6E3A,INVALC,INVALC,INVALC,INVALC, /* Block 127, Array index 0x3E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x716A,0x716F,0x7168,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7170,0x7169,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x716B,INVALC,0x716E,0x716D,INVALC, INVALC,INVALC,INVALC,0x716C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7469,INVALC,INVALC,0x7463,0x7473, INVALC,0x746B,0x7467,INVALC,0x746E,0x7471,INVALC,0x7466, INVALC,0x746F,INVALC,INVALC,INVALC,0x746A,0x7464,0x7472, INVALC,0x746D,INVALC,0x7468,INVALC,0x746C,0x7465,INVALC, 0x7470,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7725,INVALC,0x767E,0x7721,INVALC,INVALC, INVALC,0x7726,0x7723,INVALC,INVALC,INVALC,0x7722,INVALC, INVALC,0x7724,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7862,0x7863,0x785F,INVALC,0x7860,INVALC,INVALC, INVALC,INVALC,INVALC,0x7864,INVALC,INVALC,INVALC,INVALC, INVALC,0x7861,INVALC,INVALC,0x7A2B,0x7A2A,INVALC,INVALC, INVALC,INVALC,0x7A2C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7A7D,INVALC,INVALC,0x7A7C, INVALC,INVALC,INVALC,0x7C41,0x7C43,INVALC,0x7C42,INVALC, INVALC,INVALC,INVALC,INVALC,0x7D39,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 128, Array index 0x3F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x484F,INVALC, 0x527E,INVALC,0x574D,INVALC,INVALC,0x5C5F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7474,INVALC,INVALC,INVALC, 0x7727,INVALC,INVALC,INVALC,0x7A2D,INVALC,INVALC,INVALC, 0x7C64,INVALC,INVALC,INVALC,0x4F2C,0x4B38,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x574E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6575,0x6576,INVALC,INVALC,INVALC,0x6574,INVALC, 0x6A48,INVALC,0x6577,INVALC,INVALC,0x6E47,INVALC,0x6E48, INVALC,0x7171,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7865,INVALC,INVALC, 0x7C65,INVALC,0x4850,0x4F2E,0x4F2D,INVALC,0x5321,INVALC, INVALC,INVALC,INVALC,INVALC,0x574F,INVALC,INVALC,INVALC, INVALC,INVALC,0x5C61,INVALC,INVALC,INVALC,0x5C60,INVALC, INVALC,INVALC,INVALC,INVALC,0x657A,INVALC,INVALC,INVALC, 0x6579,0x6578,INVALC,INVALC,INVALC,INVALC,INVALC,0x6E49, INVALC,INVALC,0x7172,INVALC,INVALC,INVALC,0x7866,INVALC, 0x7868,0x7867,INVALC,INVALC,0x7A7E,0x4851,INVALC,0x5322, INVALC,0x5751,INVALC,INVALC,INVALC,0x5750,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5C62,INVALC,0x5C63,INVALC, INVALC,INVALC,0x5C64,INVALC,0x6144,0x6145,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6A4B, 0x6A49,0x6A4A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6E4A,INVALC,INVALC,INVALC,INVALC,0x7175,INVALC, 0x7173,0x7174,INVALC,0x7475,INVALC,INVALC,INVALC,INVALC, INVALC,0x7728,INVALC,0x7729,0x7476,INVALC,INVALC,INVALC, /* Block 129, Array index 0x4000 */ 0x7A2E,0x4852,INVALC,0x4853,0x5753,0x4F2F,0x5752,INVALC, INVALC,INVALC,INVALC,0x6146,0x4854,0x5324,INVALC,INVALC, 0x5323,0x5325,0x4855,INVALC,INVALC,0x5755,INVALC,0x5757, 0x5754,0x5756,INVALC,INVALC,0x5C65,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6E4B,INVALC, 0x7176,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4856,INVALC,INVALC,0x5326,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5758,INVALC,0x5759, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C67,INVALC, INVALC,INVALC,0x5C66,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6147,INVALC,INVALC,INVALC,0x657B,INVALC, 0x657C,INVALC,0x6A4D,INVALC,INVALC,INVALC,0x6A4C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x747A, 0x7479,0x7477,0x7478,0x747B,INVALC,INVALC,0x772B,0x772A, INVALC,INVALC,INVALC,INVALC,INVALC,0x7B6F,0x7B6E,0x4857, INVALC,INVALC,INVALC,INVALC,0x657E,0x6148,0x657D,0x6A4E, INVALC,0x4858,INVALC,0x4859,0x485A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4B3A,INVALC,INVALC,0x4B39,INVALC, 0x4B3C,INVALC,0x4B3E,0x4B3D,INVALC,0x4B3B,INVALC,INVALC, INVALC,0x4F34,0x4F32,INVALC,INVALC,0x4F31,INVALC,INVALC, INVALC,0x4F36,0x4F38,0x4F35,INVALC,INVALC,INVALC,0x4F39, INVALC,0x4F33,0x4B3F,INVALC,0x4F37,INVALC,INVALC,INVALC, INVALC,INVALC,0x4F30,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x532A,0x532B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x532C,INVALC,0x532F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5327,INVALC, INVALC,INVALC,0x5329,0x532E,INVALC,0x5332,0x5330,INVALC, INVALC,0x532D,INVALC,INVALC,0x5331,0x5328,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x575E,INVALC,0x5767, 0x575C,0x575A,INVALC,0x5762,0x575F,INVALC,INVALC,INVALC, 0x5761,INVALC,INVALC,INVALC,0x5766,0x5764,INVALC,INVALC, /* Block 130, Array index 0x4100 */ INVALC,INVALC,0x575B,INVALC,INVALC,0x575D,0x5760,INVALC, 0x5763,INVALC,0x5765,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C69,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5C6A,0x5C6E,INVALC,INVALC,INVALC, INVALC,0x5C6C,INVALC,0x5C6B,INVALC,INVALC,INVALC,0x5C68, 0x5C6D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x614E,INVALC,INVALC,INVALC,INVALC,0x6150,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x614F,INVALC, INVALC,INVALC,INVALC,0x614B,0x6151,INVALC,0x614D,INVALC, 0x6A4F,0x614C,INVALC,0x6152,0x614A,0x6149,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6624,0x662A,INVALC, INVALC,INVALC,INVALC,0x6627,INVALC,INVALC,0x6625,INVALC, 0x6622,0x6621,INVALC,0x6626,0x6153,INVALC,INVALC,INVALC, 0x6623,0x6628,0x6629,INVALC,INVALC,INVALC,INVALC,0x6A54, 0x6A50,INVALC,0x6A55,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6A52,INVALC,0x6A53,INVALC,INVALC,INVALC,INVALC,0x6A51, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6E51,INVALC,0x6E50,0x6E4C,0x6E4D,0x6E4E,INVALC,INVALC, 0x6E4F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7179,0x7178,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7177,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x747E,INVALC,INVALC,0x7524,0x7526,0x7523, 0x7522,INVALC,0x7521,0x747D,INVALC,INVALC,0x747C,INVALC, INVALC,0x7525,INVALC,INVALC,INVALC,0x772C,INVALC,0x772D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7869,INVALC,0x7A2F,INVALC,INVALC,INVALC,INVALC,0x7B70, INVALC,INVALC,0x7C44,0x485B,INVALC,0x4F3A,INVALC,0x6A56, 0x7527,INVALC,0x485C,INVALC,0x5769,0x5768,INVALC,INVALC, INVALC,INVALC,INVALC,0x485D,0x5333,INVALC,INVALC,INVALC, INVALC,INVALC,0x6A57,0x717A,0x485E,INVALC,0x4F3B,INVALC, /* Block 131, Array index 0x4200 */ 0x576A,INVALC,0x5C6F,INVALC,INVALC,0x662B,INVALC,0x6A58, 0x717B,0x7528,0x772E,INVALC,0x485F,0x4F3C,INVALC,INVALC, 0x576B,INVALC,0x6154,INVALC,0x6A59,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4860,0x6155,INVALC,0x6A5A,0x4861, INVALC,INVALC,0x5334,INVALC,INVALC,INVALC,INVALC,INVALC, 0x576E,INVALC,0x576C,0x576D,0x576F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5C70,0x5C72,0x5C71, INVALC,0x5C73,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x662C, INVALC,INVALC,INVALC,0x6A5B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x717C,0x717D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7A30,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4862,0x4B40, INVALC,0x7529,0x4863,INVALC,INVALC,INVALC,INVALC,0x7C6C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4864,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4B42,INVALC,0x4B43,INVALC,INVALC, INVALC,INVALC,0x4B41,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4F3F,INVALC,INVALC,INVALC,0x4F3E,INVALC,0x4F42, INVALC,INVALC,INVALC,0x4F49,INVALC,0x4F46,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4F45,0x4F40,INVALC,0x4F47, 0x4F4A,0x4F44,INVALC,0x4F3D,INVALC,INVALC,INVALC,0x4F4C, 0x4F48,0x4F43,INVALC,0x5770,INVALC,0x4F41,0x4F4B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5345,0x533F,0x5347,0x5344,INVALC,INVALC,0x5340, INVALC,INVALC,INVALC,0x5339,0x5343,INVALC,0x5346,0x5348, INVALC,INVALC,INVALC,0x5338,INVALC,0x533C,0x533A,0x5335, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5349, INVALC,0x5341,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 132, Array index 0x4300 */ INVALC,0x5342,0x533D,0x5336,0x533B,0x5337,0x534A,INVALC, INVALC,0x533E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x577E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5823,INVALC,INVALC,0x5771,INVALC,INVALC,INVALC,INVALC, INVALC,0x5822,0x577B,INVALC,0x5779,0x5778,0x577D,INVALC, 0x5775,0x577C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5821,INVALC,INVALC,0x5824,INVALC,INVALC,INVALC,INVALC, INVALC,0x5777,0x5774,INVALC,INVALC,INVALC,INVALC,0x577A, 0x5776,INVALC,0x5772,INVALC,0x5773,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5D23, 0x5C77,INVALC,INVALC,0x5D24,0x5D25,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5D26,INVALC, INVALC,0x5D21,0x5C7D,INVALC,INVALC,INVALC,0x5C74,INVALC, INVALC,INVALC,0x5C7C,0x5C7E,INVALC,INVALC,0x5C79,INVALC, 0x5C76,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C75,INVALC, 0x5D22,INVALC,0x5C78,INVALC,INVALC,INVALC,INVALC,0x5D27, INVALC,INVALC,INVALC,0x5C7B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5C7A,INVALC,INVALC, INVALC,0x615D,INVALC,INVALC,INVALC,0x615B,INVALC,INVALC, INVALC,INVALC,0x6168,INVALC,0x6165,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x616E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x616C,INVALC,INVALC,0x616F, 0x615A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6156,INVALC,INVALC,INVALC,INVALC,INVALC,0x615E, 0x6163,0x615F,0x6167,INVALC,0x6160,INVALC,INVALC,INVALC, 0x6158,INVALC,INVALC,INVALC,INVALC,0x6166,INVALC,INVALC, /* Block 133, Array index 0x4400 */ INVALC,INVALC,INVALC,0x6157,0x616B,INVALC,INVALC,0x616D, INVALC,INVALC,0x6162,0x615C,0x6164,0x6159,0x616A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x655C,INVALC,INVALC,INVALC, INVALC,0x6630,INVALC,INVALC,INVALC,0x6638,INVALC,INVALC, 0x6169,INVALC,INVALC,INVALC,0x6637,0x662F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x663D,INVALC, INVALC,0x6634,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6161, INVALC,INVALC,INVALC,0x6636,INVALC,INVALC,INVALC,INVALC, INVALC,0x6639,INVALC,0x663A,INVALC,INVALC,0x6632,INVALC, INVALC,0x663B,INVALC,0x6633,0x6635,0x663C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6631,INVALC,0x662E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x662D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6A68,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6A60,INVALC,INVALC,0x6A63,INVALC,0x6A61,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6A62,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6A65,INVALC,INVALC,INVALC,0x6A69,INVALC,INVALC,0x6A5D, 0x6A66,INVALC,INVALC,INVALC,0x6A5F,INVALC,0x6A5E,INVALC, INVALC,0x6A5C,0x6A6B,0x6A64,INVALC,INVALC,INVALC,INVALC, INVALC,0x6A6A,INVALC,0x6A67,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6E5D,INVALC,0x6E55,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6E5F, /* Block 134, Array index 0x4500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6E60,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6E59,INVALC,0x6E58,0x6E5C,INVALC,INVALC,0x6E52, INVALC,INVALC,0x6E54,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6E5B,INVALC,0x6E5A,INVALC,0x6E5E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6E56,0x6E57,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6E53,INVALC,INVALC, INVALC,INVALC,INVALC,0x7225,INVALC,INVALC,INVALC,INVALC, 0x7222,0x7226,0x717E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7221,INVALC,INVALC,INVALC,INVALC,0x7229,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7223,0x7224,0x7228,INVALC,INVALC,0x7227,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x752C,INVALC, INVALC,INVALC,INVALC,INVALC,0x752B,INVALC,INVALC,0x7532, INVALC,INVALC,0x7534,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x752E,INVALC,INVALC,0x752F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7531,0x752D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7535,INVALC, 0x7533,0x7730,0x752A,INVALC,INVALC,INVALC,INVALC,0x7530, 0x7734,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7736,0x7735,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7733,INVALC,INVALC,INVALC,0x7731,INVALC,0x772F, 0x7732,INVALC,INVALC,INVALC,INVALC,0x786D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x786B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x786E,0x786F,INVALC,INVALC, INVALC,0x786A,0x786C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7870, INVALC,0x7A32,0x7A34,0x7A31,INVALC,INVALC,INVALC,INVALC, /* Block 135, Array index 0x4600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7A35,0x7A37, INVALC,INVALC,0x7A38,0x7A36,INVALC,INVALC,INVALC,INVALC, INVALC,0x7A33,INVALC,INVALC,INVALC,INVALC,INVALC,0x7B21, INVALC,INVALC,0x7B23,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7B22,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7C45,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7C46, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4F4D,INVALC, 0x534B,INVALC,INVALC,INVALC,0x5825,0x5D28,INVALC,INVALC, INVALC,INVALC,INVALC,0x6170,0x663F,INVALC,0x663E,0x6640, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7536, INVALC,INVALC,INVALC,0x4865,INVALC,INVALC,INVALC,INVALC, INVALC,0x4F4E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x534C,0x534E,0x534D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5826,INVALC,0x582B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5828,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x582D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x582C,0x5829,INVALC,INVALC,INVALC, INVALC,0x582A,0x5827,INVALC,INVALC,INVALC,INVALC,0x5D32, INVALC,0x5D31,INVALC,INVALC,INVALC,0x5D2E,0x5D2C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5D2B,INVALC,INVALC,INVALC,0x5D2D,INVALC,0x5D2F,0x5D2A, INVALC,0x5D33,INVALC,0x5D30,INVALC,INVALC,INVALC,INVALC, 0x6177,INVALC,INVALC,INVALC,0x6174,INVALC,INVALC,INVALC, INVALC,0x6172,INVALC,0x6175,INVALC,INVALC,0x6178,0x6171, INVALC,INVALC,INVALC,INVALC,0x6176,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6173,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6641,INVALC,0x6647,INVALC,INVALC,0x6646,INVALC, /* Block 136, Array index 0x4700 */ 0x6645,INVALC,0x6648,0x6649,INVALC,INVALC,0x664A,0x6644, 0x6643,INVALC,0x664B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6642,INVALC,INVALC,INVALC,INVALC, 0x6A72,INVALC,INVALC,INVALC,0x6A6D,INVALC,INVALC,INVALC, INVALC,INVALC,0x6A6F,INVALC,INVALC,0x6A70,INVALC,INVALC, INVALC,0x6A75,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6A71,INVALC,INVALC,0x6A74, INVALC,INVALC,INVALC,0x6A6E,INVALC,INVALC,INVALC,0x6A6C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6E6A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6E6B,INVALC,0x6A73,INVALC,0x6E69, INVALC,0x6E68,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6E64,INVALC,INVALC,INVALC,INVALC,INVALC,0x6E65,INVALC, 0x6E67,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6E62,INVALC,0x6E63,INVALC, 0x6E66,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6E61,0x722A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x722E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x722C,0x722B, INVALC,INVALC,0x722D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x753C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7539,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x753E,0x753D,INVALC,INVALC,INVALC,INVALC, 0x7537,INVALC,INVALC,INVALC,INVALC,INVALC,0x753B,INVALC, 0x753F,INVALC,INVALC,0x7540,INVALC,INVALC,INVALC,INVALC, INVALC,0x7538,0x753A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x773A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7738,INVALC,INVALC,0x7737, INVALC,INVALC,0x7739,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7874,INVALC,0x7871,INVALC,INVALC,0x7875,INVALC, /* Block 137, Array index 0x4800 */ INVALC,INVALC,INVALC,INVALC,INVALC,0x7872,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7873,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7A39,0x7A3A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7B27, INVALC,0x7B26,0x7B25,0x7B24,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7C47,INVALC,INVALC,INVALC,INVALC,0x7C66,INVALC, INVALC,0x7C67,INVALC,0x7D27,INVALC,INVALC,INVALC,INVALC, 0x4866,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4867,0x534F,INVALC,INVALC, INVALC,INVALC,INVALC,0x5D34,INVALC,INVALC,INVALC,0x6179, INVALC,0x664C,INVALC,0x6E6C,INVALC,0x6E6D,INVALC,INVALC, INVALC,0x722F,0x7C68,0x4868,INVALC,INVALC,INVALC,INVALC, 0x4F50,INVALC,INVALC,0x5350,INVALC,INVALC,INVALC,INVALC, 0x582E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x582F, INVALC,0x5833,INVALC,INVALC,INVALC,0x5832,INVALC,INVALC, INVALC,0x5830,0x5831,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5D36,INVALC,INVALC,0x5D3B,INVALC,0x5D3A,INVALC,INVALC, INVALC,INVALC,0x5D38,INVALC,INVALC,INVALC,0x5D39,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5D35,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5D37,INVALC,INVALC,INVALC,INVALC, INVALC,0x617C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x617A,0x617B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6654,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6656,INVALC,0x664E,0x6655,INVALC,INVALC, 0x6651,0x664F,INVALC,INVALC,0x6650,0x6652,INVALC,0x664D, INVALC,0x6653,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6A7C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6A7E, INVALC,INVALC,INVALC,0x6A76,0x6A78,INVALC,INVALC,INVALC, 0x6A7A,0x6A79,INVALC,INVALC,INVALC,0x6A7B,INVALC,INVALC, /* Block 138, Array index 0x4900 */ INVALC,INVALC,0x6A77,INVALC,INVALC,INVALC,INVALC,0x6E6F, INVALC,INVALC,0x6E73,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6E6E,INVALC,0x6E70,0x6E71,INVALC,0x6E72,INVALC,INVALC, INVALC,INVALC,0x6A7D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7234,INVALC,INVALC,INVALC,0x7232,INVALC,INVALC, INVALC,INVALC,0x7230,0x7233,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7231,INVALC,INVALC,INVALC,0x7542,INVALC, 0x7544,INVALC,INVALC,0x7541,INVALC,0x7545,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7543,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7878,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7879,0x7877, 0x7876,INVALC,INVALC,INVALC,0x7A3B,INVALC,INVALC,INVALC, INVALC,INVALC,0x7B28,INVALC,0x7B29,INVALC,INVALC,0x7B72, INVALC,INVALC,0x7B71,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4869, INVALC,0x5351,INVALC,0x617D,INVALC,INVALC,0x773B,INVALC, INVALC,INVALC,INVALC,0x4B44,INVALC,INVALC,INVALC,0x5D3D, INVALC,INVALC,INVALC,0x5D3C,INVALC,INVALC,0x617E,INVALC, INVALC,INVALC,INVALC,INVALC,0x6657,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7236,INVALC, INVALC,INVALC,0x7235,INVALC,0x7546,INVALC,INVALC,INVALC, INVALC,INVALC,0x773C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7A3C,INVALC,INVALC,0x7B2A,INVALC,INVALC, 0x7D28,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4B45,INVALC,0x5352,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6658,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x773D,INVALC,INVALC,INVALC, 0x7A3D,INVALC,INVALC,INVALC,0x7B73,INVALC,INVALC,INVALC, /* Block 139, Array index 0x4A00 */ 0x4B46,INVALC,0x5354,0x5355,INVALC,INVALC,INVALC,INVALC, 0x5353,INVALC,0x5839,INVALC,0x5837,INVALC,0x5836,0x583D, 0x5835,0x583E,INVALC,0x583B,INVALC,0x5838,0x583C,0x583A, 0x5834,INVALC,INVALC,0x5D45,INVALC,0x5D3F,INVALC,0x5D44, INVALC,INVALC,0x5D46,0x5D40,INVALC,0x5D41,INVALC,INVALC, INVALC,INVALC,0x5D3E,INVALC,INVALC,0x5D43,INVALC,INVALC, INVALC,0x5D42,INVALC,INVALC,0x622B,INVALC,0x622D,INVALC, INVALC,INVALC,0x622C,0x6221,0x6225,INVALC,0x666B,INVALC, INVALC,0x6226,INVALC,INVALC,INVALC,INVALC,0x622A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6229,INVALC,INVALC,INVALC,0x6227,0x6223,0x622E,INVALC, INVALC,INVALC,INVALC,0x6228,INVALC,INVALC,0x6224,INVALC, 0x6222,INVALC,0x6666,0x6661,INVALC,INVALC,0x665C,INVALC, 0x666C,0x665D,INVALC,0x6659,0x6668,0x6665,0x6667,INVALC, 0x665E,0x6663,0x665A,0x665B,INVALC,INVALC,INVALC,INVALC, INVALC,0x6669,INVALC,0x666A,0x6660,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6664,INVALC,0x665F, INVALC,INVALC,INVALC,INVALC,0x6B22,0x6B25,INVALC,INVALC, INVALC,0x6B2D,INVALC,0x6B27,INVALC,0x6E78,INVALC,INVALC, 0x6B2C,INVALC,0x6B2E,INVALC,INVALC,INVALC,0x6B23,INVALC, 0x6662,0x6B26,INVALC,0x6B24,0x6B28,0x6B2A,0x6B21,0x6B2F, 0x6B2B,INVALC,0x6B29,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6F21,INVALC,0x6E7B,INVALC,INVALC,INVALC,0x6F24,INVALC, INVALC,0x6F25,INVALC,INVALC,0x6E74,INVALC,INVALC,0x6E7E, INVALC,INVALC,0x6E7D,INVALC,0x6E77,INVALC,INVALC,0x6E76, INVALC,0x6E7C,INVALC,0x6E79,INVALC,0x6F23,INVALC,INVALC, INVALC,INVALC,0x6E75,INVALC,INVALC,INVALC,0x6F22,INVALC, INVALC,INVALC,INVALC,0x6F26,0x723C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7237,0x723D, INVALC,INVALC,INVALC,0x7239,INVALC,0x7243,0x723E,INVALC, INVALC,0x723A,INVALC,0x7244,INVALC,INVALC,0x7245,0x7242, 0x6E7A,INVALC,0x7238,INVALC,0x7246,INVALC,0x723F,INVALC, /* Block 140, Array index 0x4B00 */ 0x723B,0x7240,0x7241,INVALC,0x754E,INVALC,INVALC,INVALC, INVALC,INVALC,0x754B,INVALC,INVALC,INVALC,0x7547,INVALC, 0x754F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7548, INVALC,0x7549,INVALC,0x754A,INVALC,0x754D,INVALC,INVALC, 0x754C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x773E,INVALC,INVALC,0x7741,0x7740,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x773F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x787A,INVALC,INVALC,INVALC,INVALC,0x7923,INVALC, INVALC,0x787D,INVALC,INVALC,INVALC,INVALC,0x7921,0x7922, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x787C,0x7924,0x787E,INVALC,0x787B,INVALC,INVALC,0x7A42, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7A40,INVALC, INVALC,INVALC,INVALC,0x7A43,0x7A3F,INVALC,INVALC,0x7A41, 0x7A3E,INVALC,INVALC,INVALC,0x7B2B,INVALC,INVALC,0x7B2C, INVALC,INVALC,INVALC,INVALC,INVALC,0x7B2D,INVALC,INVALC, 0x7B74,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7C48,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7C6A,0x7C69,INVALC,INVALC,0x7C6B,INVALC, INVALC,INVALC,0x7D34,INVALC,0x7D3A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 141, Array index 0x4C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4B47, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7551, INVALC,0x7550,INVALC,INVALC,INVALC,INVALC,0x4B48,INVALC, 0x583F,0x5D47,INVALC,INVALC,0x6F27,INVALC,0x6F28,INVALC, 0x7742,INVALC,INVALC,INVALC,0x7D43,0x4B49,INVALC,INVALC, INVALC,INVALC,0x5D48,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x622F,0x666D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6B30,0x7247,0x6F29,0x7248,INVALC,INVALC, INVALC,INVALC,INVALC,0x7552,INVALC,INVALC,INVALC,INVALC, INVALC,0x5841,0x5840,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6230,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x666F,0x666E,INVALC,0x6B32,0x6B31,INVALC,INVALC, INVALC,INVALC,INVALC,0x7249,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4B4A,0x5356,INVALC, 0x5357,0x5842,0x5843,INVALC,INVALC,INVALC,INVALC,0x5D4E, 0x5D4C,0x5D49,0x5D4D,0x5D4B,0x5D4A,INVALC,INVALC,0x6231, INVALC,INVALC,0x6674,0x6233,0x6238,INVALC,0x623A,0x6239, 0x623C,INVALC,INVALC,0x6236,0x6232,0x6234,INVALC,0x623B, 0x6237,0x6235,0x6676,0x6675,0x6673,0x6677,INVALC,0x6671, 0x6672,INVALC,0x6670,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6B34,0x6B35,0x6B33,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6F32,INVALC,0x6F2B,INVALC, 0x6F2A,0x6F34,0x6F30,0x6F31,0x6F2D,INVALC,0x6F2C,INVALC, INVALC,INVALC,0x6F33,INVALC,0x6F2E,0x6F2F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x724A,INVALC,INVALC,INVALC, 0x7556,INVALC,0x7553,0x7557,0x7555,0x7554,INVALC,INVALC, /* Block 142, Array index 0x4D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,0x7743,INVALC,INVALC, 0x7925,INVALC,0x7926,INVALC,INVALC,0x7A45,INVALC,0x7A44, INVALC,INVALC,INVALC,0x7B2E,INVALC,INVALC,0x7B75,0x7B76, INVALC,INVALC,INVALC,0x7C6D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4B4B,INVALC,0x5D50,0x5D4F, INVALC,INVALC,INVALC,0x6B36,INVALC,0x6F35,INVALC,INVALC, 0x4B4C,INVALC,INVALC,0x5359,0x5358,INVALC,INVALC,0x5844, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x623F,INVALC,INVALC,INVALC,0x623E,INVALC,INVALC, INVALC,INVALC,0x623D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6B38,INVALC,INVALC, INVALC,0x6B37,INVALC,INVALC,INVALC,INVALC,INVALC,0x6F36, INVALC,INVALC,INVALC,0x6F37,INVALC,INVALC,INVALC,INVALC, 0x7558,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4B4D,0x535A,INVALC,INVALC,INVALC, INVALC,INVALC,0x5D52,INVALC,INVALC,INVALC,0x5D51,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6247,INVALC, INVALC,INVALC,INVALC,0x6242,0x6245,INVALC,0x6240,INVALC, INVALC,0x6244,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6243,0x6246,INVALC,0x6241,INVALC,0x6679, INVALC,0x6678,INVALC,INVALC,0x6721,INVALC,0x6722,INVALC, 0x667A,INVALC,0x667E,INVALC,INVALC,INVALC,INVALC,0x667B, INVALC,INVALC,INVALC,0x667C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x667D,INVALC,0x6B39,INVALC,INVALC,INVALC, /* Block 143, Array index 0x4E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6F3C, 0x6F39,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6F3A,0x6F40,0x6F3E, INVALC,0x6F3F,0x6F3B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6F3D,INVALC,0x6F38,INVALC,INVALC,INVALC,INVALC, INVALC,0x724C,INVALC,INVALC,0x724D,0x7250,INVALC,INVALC, INVALC,0x724F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x724E,INVALC,0x724B,INVALC,INVALC,INVALC, 0x755B,0x7559,0x755C,0x755A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7749,INVALC,INVALC, INVALC,0x7744,INVALC,INVALC,INVALC,INVALC,INVALC,0x7748, INVALC,INVALC,INVALC,0x7745,0x7747,INVALC,0x7746,INVALC, INVALC,INVALC,INVALC,INVALC,0x792B,INVALC,INVALC,INVALC, INVALC,INVALC,0x7928,INVALC,0x792D,INVALC,0x792A,INVALC, INVALC,INVALC,0x792C,INVALC,0x7927,INVALC,INVALC,INVALC, INVALC,0x7A47,0x7A49,INVALC,INVALC,0x7A48,INVALC,0x7929, INVALC,0x7A46,0x7B2F,0x7B31,INVALC,0x7B30,INVALC,INVALC, INVALC,0x7B77,INVALC,0x7B78,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7D29,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7D3B,0x4B4E,0x5845,INVALC,INVALC,INVALC, INVALC,INVALC,0x6723,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6F41,INVALC,INVALC,INVALC,INVALC,INVALC, 0x774A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4B4F,0x4F51,0x535C,0x535B,INVALC,0x5848, INVALC,INVALC,0x5846,INVALC,0x5847,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5D53,INVALC,INVALC,INVALC,0x5D54, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6249,INVALC,INVALC,0x6248,0x624A,INVALC,0x6726,INVALC, /* Block 144, Array index 0x4F00 */ INVALC,INVALC,INVALC,0x6724,INVALC,INVALC,INVALC,INVALC, INVALC,0x6725,0x6727,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6B3B,0x6B3D,0x6B3A,0x6B3C,INVALC,INVALC, INVALC,INVALC,INVALC,0x6F43,0x6F48,0x6F42,0x6F49,0x6F44, INVALC,INVALC,INVALC,INVALC,INVALC,0x6F4A,0x6F46,INVALC, INVALC,0x6F45,0x6F47,INVALC,INVALC,INVALC,INVALC,0x7252, INVALC,INVALC,INVALC,0x7254,INVALC,INVALC,INVALC,INVALC, 0x7253,INVALC,INVALC,0x7251,INVALC,INVALC,0x755E,0x7561, INVALC,INVALC,0x755F,INVALC,0x755D,0x7560,INVALC,INVALC, INVALC,0x774B,INVALC,INVALC,INVALC,0x774C,0x792F,INVALC, INVALC,INVALC,INVALC,INVALC,0x792E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7B32, INVALC,0x7B79,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4B50,0x624B,INVALC,INVALC,0x6728, INVALC,INVALC,INVALC,0x6B3E,INVALC,INVALC,0x7256,INVALC, 0x7255,INVALC,INVALC,INVALC,INVALC,0x7930,0x7A29,0x7B33, 0x4B51,0x5849,0x6729,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4B52,INVALC,0x4B55,0x4B54,0x4B53,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4F52,INVALC, INVALC,0x4F54,INVALC,INVALC,0x4F53,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x535F,INVALC,0x5364,0x5361,0x535E,INVALC, 0x5365,INVALC,0x5360,0x5363,INVALC,0x5362,INVALC,INVALC, 0x535D,INVALC,INVALC,INVALC,0x584F,INVALC,INVALC,0x584C, 0x5853,INVALC,0x584E,INVALC,INVALC,0x5851,INVALC,INVALC, /* Block 145, Array index 0x5000 */ 0x584D,0x584A,INVALC,0x5850,INVALC,0x5852,0x584B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5D56,INVALC,0x5D60, 0x5D5C,INVALC,INVALC,INVALC,0x5D64,0x5D5D,0x5D62,0x5D58, INVALC,0x5D55,0x5D57,0x5D63,INVALC,0x5D5B,0x5D5E,0x5D5A, 0x5D5F,INVALC,0x5D61,0x5D59,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x624C,INVALC, INVALC,0x624E,0x6250,INVALC,INVALC,0x624D,0x6251,INVALC, 0x624F,INVALC,INVALC,INVALC,0x672F,INVALC,0x6737,INVALC, INVALC,0x6738,0x672D,INVALC,INVALC,INVALC,INVALC,0x6732, INVALC,INVALC,0x672B,0x672A,INVALC,0x6735,0x6734,0x6733, 0x6731,0x6736,INVALC,0x672C,0x672E,0x6730,INVALC,INVALC, 0x6B40,0x6B43,INVALC,0x6B47,0x6B41,0x6B46,0x6B44,INVALC, 0x6B3F,INVALC,0x6B45,0x6B42,INVALC,INVALC,INVALC,INVALC, 0x6F4D,0x6F4B,INVALC,INVALC,INVALC,0x6F4E,0x6F4C,INVALC, INVALC,INVALC,0x725A,INVALC,0x7258,0x7257,INVALC,0x6F4F, 0x7259,INVALC,0x725C,INVALC,0x725B,0x7563,INVALC,0x7562, 0x7567,0x7565,0x7566,0x774E,0x7564,INVALC,INVALC,0x774D, 0x774F,INVALC,0x7931,0x7932,INVALC,INVALC,INVALC,0x7C4A, 0x7C49,0x4B57,INVALC,INVALC,INVALC,0x5854,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4B58,0x4B5B,INVALC,INVALC,0x4B5A,INVALC, INVALC,INVALC,0x4B59,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4F57,INVALC,INVALC,INVALC,0x4F55,0x4F58,INVALC, 0x4F56,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5368,INVALC,0x5369,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5366,INVALC,INVALC,INVALC,0x5367,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5856,INVALC,INVALC, INVALC,0x5855,0x5857,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5D65,INVALC,INVALC,INVALC,INVALC,0x5D66,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6253,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5D67,0x6255,INVALC, /* Block 146, Array index 0x5100 */ INVALC,INVALC,0x6252,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6254,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6739,INVALC,INVALC,INVALC,INVALC,0x673A, 0x6B49,0x6B48,INVALC,INVALC,INVALC,INVALC,0x6B4A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6F52, INVALC,INVALC,INVALC,INVALC,INVALC,0x6F51,INVALC,INVALC, 0x6F50,0x6F53,INVALC,INVALC,0x725D,INVALC,INVALC,INVALC, INVALC,0x7568,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7B7A,0x4B5C,0x536B,0x536A,0x585A,0x5859,INVALC,INVALC, INVALC,INVALC,0x5858,INVALC,INVALC,INVALC,INVALC,0x5D68, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6256,INVALC,0x6257,INVALC,INVALC, INVALC,0x673D,0x673C,INVALC,0x673B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6B4E,0x6B4B,INVALC,0x6B4D, 0x6B4C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6F57,INVALC,INVALC,INVALC,0x6F54, INVALC,0x6F55,INVALC,0x6F56,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x725E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x756B,INVALC,0x756A,INVALC, INVALC,INVALC,INVALC,0x7569,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7750,0x7751,INVALC,0x7934,INVALC, INVALC,0x7933,INVALC,INVALC,0x7A4A,INVALC,INVALC,INVALC, INVALC,INVALC,0x7B34,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7C6E,0x7D2A,INVALC,INVALC,INVALC,0x7D3C,0x4B5D,0x4F59, INVALC,0x673E,INVALC,0x7A4B,0x4B5E,0x536C,0x5D69,0x6258, 0x7752,0x4F5A,INVALC,INVALC,INVALC,INVALC,INVALC,0x585D, 0x585B,0x585F,INVALC,INVALC,0x585E,0x585C,INVALC,INVALC, INVALC,INVALC,INVALC,0x5D6C,INVALC,INVALC,0x5D6B,0x5D6D, INVALC,0x5D6F,INVALC,INVALC,INVALC,0x5D6E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5D6A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 147, Array index 0x5200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6260, INVALC,0x625C,INVALC,INVALC,INVALC,0x625E,INVALC,INVALC, 0x625F,0x6261,INVALC,INVALC,0x6259,0x625A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x625D,INVALC, INVALC,INVALC,INVALC,0x625B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6749,INVALC,INVALC,0x673F, 0x6741,0x674D,INVALC,INVALC,INVALC,0x6742,0x6744,0x674E, 0x6743,INVALC,INVALC,INVALC,INVALC,0x674C,INVALC,INVALC, INVALC,0x674A,INVALC,0x6746,INVALC,0x674B,INVALC,INVALC, INVALC,0x6748,INVALC,INVALC,INVALC,INVALC,INVALC,0x6740, INVALC,INVALC,0x674F,0x6745,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6747,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6B4F,INVALC,INVALC,0x6B55,0x6B59,INVALC,INVALC,INVALC, 0x6B51,INVALC,INVALC,INVALC,INVALC,0x6B52,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6B5A,INVALC,0x6B56,INVALC,INVALC,0x6B54,INVALC, 0x6B53,INVALC,INVALC,INVALC,0x6B57,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6B58,INVALC,INVALC,INVALC,0x6B50,INVALC,INVALC,INVALC, INVALC,INVALC,0x6F63,0x6F5E,INVALC,INVALC,INVALC,0x6F5A, INVALC,INVALC,INVALC,0x6F59,0x6F5F,INVALC,INVALC,INVALC, INVALC,0x6F5D,INVALC,INVALC,INVALC,0x6F58,INVALC,0x6F61, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6F60,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6F5C,INVALC,INVALC,INVALC, INVALC,INVALC,0x6F5B,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6F62,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7261,INVALC,INVALC,INVALC,0x7265,INVALC,INVALC,INVALC, /* Block 148, Array index 0x5300 */ INVALC,INVALC,INVALC,INVALC,0x7267,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7269,INVALC,INVALC,INVALC,INVALC,0x726C,INVALC,INVALC, 0x7573,0x726E,0x7268,INVALC,INVALC,INVALC,INVALC,INVALC, 0x725F,0x726B,0x7264,INVALC,INVALC,INVALC,0x726A,INVALC, 0x756E,INVALC,INVALC,0x7266,INVALC,INVALC,0x726D,0x7263, INVALC,INVALC,INVALC,0x7262,INVALC,INVALC,0x7260,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7570,0x7572,INVALC,0x756C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7579,INVALC,INVALC,INVALC, INVALC,INVALC,0x7578,0x7576,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7571,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7575,INVALC,INVALC,INVALC, 0x7577,INVALC,INVALC,INVALC,INVALC,0x756F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7574,INVALC, INVALC,INVALC,0x756D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7754,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7753,INVALC,0x7755,0x775D, 0x775B,INVALC,0x775C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7756,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7759,INVALC,0x7758,INVALC, 0x775A,INVALC,INVALC,0x7757,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7938,INVALC,INVALC,INVALC,INVALC, 0x7939,INVALC,INVALC,INVALC,INVALC,0x793E,INVALC,INVALC, INVALC,0x7936,INVALC,INVALC,INVALC,INVALC,0x793C,0x7941, 0x793F,INVALC,INVALC,INVALC,0x793A,0x793B,INVALC,0x7937, INVALC,0x7935,0x793D,INVALC,0x7940,INVALC,INVALC,INVALC, 0x7942,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7A4E,INVALC,INVALC, /* Block 149, Array index 0x5400 */ INVALC,INVALC,INVALC,0x7A4D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7A4C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7B3B,INVALC,INVALC,0x7B35,INVALC, INVALC,INVALC,0x7B3A,0x7B36,INVALC,0x7B37,INVALC,INVALC, 0x7B39,INVALC,0x7B38,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7B7B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7B7C,0x7B7D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7C4C,INVALC,INVALC,0x7C4B,0x7C4D,INVALC,INVALC,INVALC, INVALC,INVALC,0x7C6F,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7D2C,INVALC,0x7D2B,INVALC,INVALC,INVALC,INVALC,0x7D35, INVALC,INVALC,INVALC,INVALC,0x7D3F,0x7D3D,0x7D3E,0x7D44, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 150, Array index 0x5500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4F5B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4F5C,INVALC,0x536D,0x5860,INVALC,INVALC,INVALC,INVALC, INVALC,0x5D70,INVALC,0x6264,INVALC,INVALC,0x6268,0x6263, INVALC,0x6265,0x6267,0x6266,0x6262,INVALC,INVALC,INVALC, 0x6750,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6B5B,INVALC,0x6B5E,0x6B60,0x6B5F,INVALC,INVALC, 0x6B5C,0x6B5D,INVALC,INVALC,INVALC,0x6F64,INVALC,INVALC, INVALC,0x6F65,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x726F,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x757E,INVALC, 0x757D,INVALC,0x757A,0x757B,0x757C,INVALC,INVALC,INVALC, 0x7760,INVALC,INVALC,INVALC,0x775E,0x7761,0x775F,INVALC, INVALC,INVALC,INVALC,INVALC,0x7943,INVALC,INVALC,INVALC, INVALC,0x7A4F,0x7B3C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 151, Array index 0x5600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4F5D,INVALC,INVALC,INVALC, INVALC,0x486A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4B62,INVALC,0x4B63,INVALC,0x4B60,INVALC, INVALC,0x4B61,0x4B5F,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4F60,INVALC,INVALC,INVALC,0x4F5F, 0x4F5E,INVALC,0x4F62,INVALC,0x4F61,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x536F,0x5370,0x5371,INVALC,INVALC, 0x536E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5867,INVALC,INVALC,0x5864,INVALC,0x5865,0x5868,INVALC, INVALC,0x5863,0x5861,0x5862,0x5866,INVALC,INVALC,INVALC, INVALC,INVALC,0x5D71,INVALC,0x5D79,INVALC,INVALC,INVALC, 0x5D75,INVALC,0x6270,0x5D73,0x5D76,0x5D72,0x5D77,0x5D78, 0x5D74,INVALC,INVALC,INVALC,INVALC,0x626C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6271,0x626D,0x626E,INVALC, INVALC,INVALC,0x6269,0x626B,INVALC,0x626F,0x626A,INVALC, INVALC,INVALC,INVALC,INVALC,0x6752,0x6753,INVALC,INVALC, 0x6751,0x6B61,INVALC,0x6B63,0x6B62,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7270, 0x7271,INVALC,0x7272,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7621,INVALC,INVALC,0x7944,INVALC,INVALC,INVALC, 0x7622,0x4F63,INVALC,0x5869,INVALC,INVALC,INVALC,INVALC, 0x5D7A,0x6272,INVALC,INVALC,0x6274,0x6273,0x6275,0x6276, INVALC,0x6756,0x6757,0x6755,0x6B64,0x6754,INVALC,INVALC, INVALC,INVALC,0x6B65,INVALC,INVALC,0x7273,0x7623,INVALC, INVALC,0x7764,INVALC,0x7765,0x7763,INVALC,0x7766,INVALC, INVALC,INVALC,0x7762,0x7945,INVALC,INVALC,INVALC,INVALC, 0x4F64,0x5D7C,0x5D7B,INVALC,INVALC,INVALC,INVALC,0x6277, INVALC,INVALC,0x6278,INVALC,INVALC,INVALC,0x675B,0x6758, INVALC,0x675A,INVALC,0x6759,INVALC,INVALC,INVALC,INVALC, /* Block 152, Array index 0x5700 */ 0x6B66,INVALC,INVALC,INVALC,0x6F66,INVALC,0x6F67,0x6F68, INVALC,0x6F69,INVALC,INVALC,INVALC,0x7277,0x7274,0x7279, INVALC,0x7275,INVALC,0x7278,INVALC,INVALC,0x7276,INVALC, INVALC,INVALC,INVALC,INVALC,0x7624,INVALC,0x7625,INVALC, INVALC,INVALC,INVALC,INVALC,0x7767,INVALC,INVALC,0x7947, INVALC,INVALC,0x7946,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7A50,INVALC,0x7B3F,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7B3D,0x7B3E,INVALC,INVALC,INVALC,0x7B7E,0x7C21,INVALC, INVALC,INVALC,0x7C70,INVALC,0x7C72,INVALC,INVALC,INVALC, 0x7C71,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4F65,INVALC,INVALC,INVALC,0x675C,INVALC, INVALC,INVALC,INVALC,0x727A,0x727B,INVALC,0x4F66,INVALC, 0x6F6A,0x7948,0x5372,INVALC,INVALC,INVALC,0x727C,INVALC, 0x7C4E,0x5373,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x675D,INVALC,0x675E,INVALC, INVALC,INVALC,INVALC,INVALC,0x6B67,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6B68,INVALC,INVALC, INVALC,INVALC,INVALC,0x6F6C,INVALC,0x6F6B,INVALC,0x6F6D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x727D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7626,INVALC,INVALC,0x7768,INVALC,INVALC,0x7769,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x776A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7C23,INVALC,0x7C22,INVALC,INVALC,0x7C73,INVALC, INVALC,0x7D36,INVALC,0x5374,0x6279,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7627,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7949,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5375,INVALC,INVALC, INVALC,INVALC,INVALC,0x5376,INVALC,INVALC,0x6B69,INVALC, INVALC,0x776B,INVALC,0x794A,INVALC,INVALC,INVALC,0x7B40, /* Block 153, Array index 0x5800 */ INVALC,0x5377,0x5E21,0x5E22,INVALC,0x627A,0x627B,INVALC, 0x627C,INVALC,0x6762,INVALC,0x6764,INVALC,INVALC,INVALC, 0x675F,0x6760,0x6763,0x6761,INVALC,INVALC,INVALC,0x6B6A, 0x6B6B,INVALC,INVALC,INVALC,0x6F70,INVALC,INVALC,INVALC, INVALC,0x6F6E,INVALC,INVALC,0x7326,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6F6F,INVALC,0x7324,INVALC,INVALC, 0x727E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7323, 0x7321,0x7325,INVALC,0x7322,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7628,INVALC, INVALC,INVALC,INVALC,INVALC,0x776E,0x776C,0x776F,0x776D, INVALC,INVALC,INVALC,0x7770,INVALC,INVALC,INVALC,INVALC, 0x794C,INVALC,INVALC,0x794D,INVALC,INVALC,0x794B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7B42,INVALC,0x7B41, INVALC,INVALC,INVALC,0x7C24,INVALC,INVALC,INVALC,0x7C4F, 0x7C74,0x7D2D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5378,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6B6C, INVALC,0x6B6D,INVALC,0x6F71,INVALC,INVALC,0x7629,INVALC, INVALC,INVALC,0x7771,INVALC,0x794E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7A51,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5379,INVALC,INVALC,INVALC,0x537A, INVALC,INVALC,0x586A,INVALC,INVALC,INVALC,INVALC,0x627D, INVALC,0x6322,0x627E,INVALC,INVALC,0x6324,INVALC,0x6321, INVALC,INVALC,0x6323,INVALC,0x6766,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6765,0x6767,0x6768,INVALC, /* Block 154, Array index 0x5900 */ INVALC,INVALC,INVALC,0x6B6E,INVALC,0x6B6F,INVALC,INVALC, INVALC,0x6B71,0x6F72,INVALC,0x6B70,INVALC,INVALC,INVALC, 0x7327,INVALC,0x6F74,0x6F73,INVALC,INVALC,INVALC,INVALC, 0x6F75,INVALC,0x732C,0x732A,INVALC,INVALC,0x7329,INVALC, INVALC,0x732B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7328,INVALC,INVALC,INVALC,INVALC,INVALC,0x7775,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x762A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7774,0x7772,0x7773, INVALC,INVALC,INVALC,INVALC,INVALC,0x794F,INVALC,INVALC, INVALC,0x7950,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7A53,0x7A52,INVALC,INVALC,0x7C25,INVALC,0x7B43, INVALC,INVALC,INVALC,INVALC,0x7C50,INVALC,0x7D2E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x537B,INVALC, INVALC,0x537C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7776,INVALC,INVALC, 0x7A54,INVALC,INVALC,INVALC,0x586B,0x6326,0x6325,INVALC, INVALC,0x676A,INVALC,0x6769,0x676B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6B72,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6F77,0x6F7A,0x6F7C,INVALC,INVALC,0x6F7B,INVALC,INVALC, INVALC,0x6F7D,INVALC,0x6F79,INVALC,0x6F76,INVALC,0x6F78, INVALC,INVALC,0x732E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x732D,INVALC,INVALC, INVALC,0x732F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x762C, /* Block 155, Array index 0x5A00 */ INVALC,0x762B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7777,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7951,INVALC, INVALC,0x7952,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7A55,INVALC,INVALC,INVALC,INVALC, 0x7A56,INVALC,INVALC,INVALC,INVALC,0x7A58,INVALC,0x7A57, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7B47,INVALC, 0x7B46,INVALC,INVALC,0x7B45,INVALC,0x7B44,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7C27,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7C26,INVALC,0x7C53, INVALC,INVALC,0x7C51,0x7C52,INVALC,INVALC,INVALC,0x7C75, INVALC,INVALC,0x7D37,INVALC,INVALC,0x7D38,INVALC,INVALC, INVALC,INVALC,0x7D47,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x586C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6B73, 0x6B74,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6F7E, 0x7330,INVALC,INVALC,INVALC,0x7331,INVALC,INVALC,INVALC, INVALC,0x7778,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7B48, INVALC,0x7C56,0x7C28,0x7C54,0x7C55,INVALC,0x7D2F,INVALC, 0x586D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x676C,INVALC,INVALC,INVALC,INVALC,0x6B75,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7333,0x7021,0x7022, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7332,INVALC,INVALC,INVALC,INVALC, /* Block 156, Array index 0x5B00 */ INVALC,INVALC,INVALC,0x7779,INVALC,INVALC,0x777A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7953,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7C29,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7C76,0x7D30,INVALC,0x586E,INVALC,0x7023, 0x7334,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7D48,0x586F,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5870,INVALC,INVALC,INVALC, INVALC,0x6B76,0x6B77,INVALC,0x7025,0x7024,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x777D,0x777C,0x777B, INVALC,0x7B4A,INVALC,INVALC,0x7B49,INVALC,INVALC,INVALC, 0x7C77,INVALC,0x5E23,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7027, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7026, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7335,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x762F,0x762E,INVALC,0x7630,0x762D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7824,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7823,0x7821,0x777E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7956,INVALC, INVALC,INVALC,INVALC,0x7957,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7955, 0x7954,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7822,INVALC,INVALC, /* Block 157, Array index 0x5C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7A5A,INVALC,INVALC, INVALC,INVALC,INVALC,0x7A59,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7B4C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7B4B,INVALC,INVALC, INVALC,0x7C2B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7C2D,INVALC,INVALC,0x7C2C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7C2A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7C57,INVALC,0x7C59,0x7C58, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7C78, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7D40, 0x7D41,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5E24,INVALC,INVALC, INVALC,0x676D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6B7A,0x6B78,INVALC,0x6B79,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 158, Array index 0x5D00 */ INVALC,INVALC,INVALC,0x702A,INVALC,INVALC,0x7028,INVALC, INVALC,0x7029,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x733A,INVALC,INVALC,0x7336,INVALC,INVALC, INVALC,INVALC,INVALC,0x733B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7337,INVALC,INVALC,0x7338,INVALC, 0x7339,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7631,INVALC,INVALC,INVALC,0x7632, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7825,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7826,INVALC,INVALC, 0x7827,0x7959,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x795B,INVALC,0x795C,INVALC,INVALC,INVALC, INVALC,INVALC,0x795A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7958,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7B4D, INVALC,INVALC,INVALC,INVALC,0x7B4E,INVALC,INVALC,INVALC, 0x7B50,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7B4F,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7C2E,INVALC,INVALC,INVALC,0x7C2F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7C5A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7C79,0x7C7A,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 159, Array index 0x5E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7D45,0x7D49,INVALC,INVALC,0x7D4A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5E25,INVALC,INVALC, INVALC,0x7A5B,INVALC,INVALC,0x7C7B,0x7C7C,INVALC,0x5E26, INVALC,INVALC,0x676E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7633,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x795D,0x795F,INVALC,INVALC,INVALC,0x795E, INVALC,INVALC,INVALC,INVALC,INVALC,0x7B51,INVALC,0x7C5B, INVALC,INVALC,INVALC,INVALC,INVALC,0x5E27,INVALC,INVALC, INVALC,0x702B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7960,0x7A5C,INVALC,INVALC, INVALC,INVALC,INVALC,0x5E28,0x6B7B,INVALC,0x702C,INVALC, INVALC,INVALC,INVALC,0x6327,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7D31,0x6328,0x702D,0x7634, INVALC,0x6329,INVALC,INVALC,0x733D,INVALC,INVALC,INVALC, 0x733C,INVALC,INVALC,0x7638,0x7636,0x7637,0x7635,INVALC, 0x7828,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7A5D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7B52, INVALC,INVALC,INVALC,INVALC,0x7C5C,INVALC,INVALC,0x7D42, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 160, Array index 0x5F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7C7D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x676F,INVALC, INVALC,INVALC,INVALC,0x6770,INVALC,0x7829,INVALC,INVALC, INVALC,0x7B53,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6771,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x782A,INVALC,INVALC,0x7A5E, INVALC,INVALC,INVALC,INVALC,0x7C30,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6B7C,INVALC,INVALC,0x7639,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6B7D,0x763A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x702F,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7B54,INVALC,INVALC,0x7A5F, INVALC,0x7A61,INVALC,0x7A60,INVALC,INVALC,0x7B55,0x7B56, INVALC,INVALC,0x7C32,INVALC,0x7C31,INVALC,INVALC,INVALC, INVALC,INVALC,0x7D21,INVALC,INVALC,INVALC,INVALC,0x7C7E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x733E,INVALC,INVALC, 0x7832,INVALC,INVALC,INVALC,0x7C33,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x733F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 255, Array index 0x6000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x212B,0x2136,0x2138,INVALC,INVALC,0x2140,0x2141,0x2144, 0x2145,0x2148,0x2149,0x214C,0x214D,0x2150,0x2151,0x2154, 0x2155,0x2158,0x2159,0x215C,0x215D,INVALC,INVALC,INVALC, INVALC,0x2227,0x2228,0x222B,0x222C,0x2229,0x222A,INVALC, 0x212E,0x212F,0x2130,INVALC,0x2132,0x2133,0x2134,0x2135, INVALC,0x215E,0x215F,0x2160,0x2161,0x2162,0x2163,0x222D, 0x222E,0x222F,0x223F,0x2240,0x2241,0x2243,0x2242,INVALC, 0x2262,0x226C,0x226D,0x226E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 256, Array index 0x6100 */ INVALC,0x212A,INVALC,0x216C,0x2263,0x2268,0x216D,INVALC, 0x213E,0x213F,0x216E,0x2230,0x2122,0x2231,0x2125,0x225F, 0x2421,0x2422,0x2423,0x2424,0x2425,0x2426,0x2427,0x2428, 0x2429,0x242A,0x2128,0x2127,0x2236,0x2238,0x2237,0x2129, 0x2269,0x2441,0x2442,0x2443,0x2444,0x2445,0x2446,0x2447, 0x2448,0x2449,0x244A,0x244B,0x244C,0x244D,0x244E,0x244F, 0x2450,0x2451,0x2452,0x2453,0x2454,0x2455,0x2456,0x2457, 0x2458,0x2459,0x245A,INVALC,0x2260,INVALC,INVALC,0x2225, INVALC,0x245B,0x245C,0x245D,0x245E,0x245F,0x2460,0x2461, 0x2462,0x2463,0x2464,0x2465,0x2466,0x2467,0x2468,0x2469, 0x246A,0x246B,0x246C,0x246D,0x246E,0x246F,0x2470,0x2471, 0x2472,0x2473,0x2474,0x2142,0x225E,0x2143,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2266,0x2267,INVALC,INVALC,INVALC,0x2264,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, }; #endif /* ICONV_FROM_UCS_CCS_CNS11643_PLANE1 && !defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * 16-bit UCS -> cns11643_plane1 size-optimized table (22050 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_CNS11643_PLANE1) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t from_ucs_size_cns11643_plane1[] = { 0x017D, /* Ranges number */ 0x0DA3, /* Unranged codes number */ 0x0FCB, /* First unranged code index */ /* Ranges list: first code, last Code, array index. */ /* Array index: 0x0003 */ 0x02C7, 0x02CB, 0x047A, /* Array index: 0x0006 */ 0x0391, 0x03A9, 0x047F, /* Array index: 0x0009 */ 0x03B1, 0x03C9, 0x0498, /* Array index: 0x000C */ 0x2160, 0x2169, 0x04B1, /* Array index: 0x000F */ 0x2170, 0x2179, 0x04BB, /* Array index: 0x0012 */ 0x2190, 0x2199, 0x04C5, /* Array index: 0x0015 */ 0x221E, 0x2220, 0x04CF, /* Array index: 0x0018 */ 0x2229, 0x222B, 0x04D2, /* Array index: 0x001B */ 0x2400, 0x2421, 0x04D5, /* Array index: 0x001E */ 0x2460, 0x2469, 0x04F7, /* Array index: 0x0021 */ 0x2474, 0x247D, 0x0501, /* Array index: 0x0024 */ 0x256D, 0x2573, 0x050B, /* Array index: 0x0027 */ 0x2581, 0x258F, 0x0512, /* Array index: 0x002A */ 0x25E2, 0x25E5, 0x0521, /* Array index: 0x002D */ 0x2640, 0x2642, 0x0525, /* Array index: 0x0030 */ 0x3000, 0x3003, 0x0528, /* Array index: 0x0033 */ 0x3008, 0x3015, 0x052C, /* Array index: 0x0036 */ 0x301D, 0x3029, 0x053A, /* Array index: 0x0039 */ 0x3105, 0x3129, 0x0547, /* Array index: 0x003C */ 0x339C, 0x339E, 0x056C, /* Array index: 0x003F */ 0x4E08, 0x4E19, 0x056F, /* Array index: 0x0042 */ 0x4E4B, 0x4E53, 0x0581, /* Array index: 0x0045 */ 0x4E5D, 0x4E5F, 0x058A, /* Array index: 0x0048 */ 0x4E91, 0x4E95, 0x058D, /* Array index: 0x004B */ 0x4E9E, 0x4EAE, 0x0592, /* Array index: 0x004E */ 0x4EC0, 0x4ECD, 0x05A3, /* Array index: 0x0051 */ 0x4ED4, 0x4ED9, 0x05B1, /* Array index: 0x0054 */ 0x4EE3, 0x4EE5, 0x05B7, /* Array index: 0x0057 */ 0x4F09, 0x4F11, 0x05BA, /* Array index: 0x005A */ 0x4F46, 0x4F48, 0x05C3, /* Array index: 0x005D */ 0x4F4D, 0x4F60, 0x05C6, /* Array index: 0x0060 */ 0x4FB5, 0x4FB7, 0x05DA, /* Array index: 0x0063 */ 0x4FC2, 0x4FC4, 0x05DD, /* Array index: 0x0066 */ 0x4FCE, 0x4FD1, 0x05E0, /* Array index: 0x0069 */ 0x4FDD, 0x4FE1, 0x05E4, /* Array index: 0x006C */ 0x5009, 0x501A, 0x05E9, /* Array index: 0x006F */ 0x5025, 0x502D, 0x05FB, /* Array index: 0x0072 */ 0x5074, 0x5077, 0x0604, /* Array index: 0x0075 */ 0x5096, 0x509A, 0x0608, /* Array index: 0x0078 */ 0x513B, 0x514D, 0x060D, /* Array index: 0x007B */ 0x5159, 0x516E, 0x0620, /* Array index: 0x007E */ 0x5175, 0x5178, 0x0636, /* Array index: 0x0081 */ 0x51CB, 0x51CD, 0x063A, /* Array index: 0x0084 */ 0x51F6, 0x51FA, 0x063D, /* Array index: 0x0087 */ 0x5206, 0x520A, 0x0642, /* Array index: 0x008A */ 0x5224, 0x522A, 0x0647, /* Array index: 0x008D */ 0x5236, 0x523B, 0x064E, /* Array index: 0x0090 */ 0x524A, 0x524E, 0x0654, /* Array index: 0x0093 */ 0x525B, 0x525D, 0x0659, /* Array index: 0x0096 */ 0x5287, 0x528A, 0x065C, /* Array index: 0x0099 */ 0x52A9, 0x52AC, 0x0660, /* Array index: 0x009C */ 0x52D5, 0x52E6, 0x0664, /* Array index: 0x009F */ 0x5315, 0x5319, 0x0676, /* Array index: 0x00A2 */ 0x533E, 0x534A, 0x067B, /* Array index: 0x00A5 */ 0x5351, 0x5354, 0x0688, /* Array index: 0x00A8 */ 0x536E, 0x537B, 0x068C, /* Array index: 0x00AB */ 0x53C8, 0x53CD, 0x069A, /* Array index: 0x00AE */ 0x53E2, 0x53F5, 0x06A0, /* Array index: 0x00B1 */ 0x5406, 0x5412, 0x06B4, /* Array index: 0x00B4 */ 0x541B, 0x5420, 0x06C1, /* Array index: 0x00B7 */ 0x5429, 0x542E, 0x06C7, /* Array index: 0x00BA */ 0x5435, 0x5443, 0x06CD, /* Array index: 0x00BD */ 0x5473, 0x547D, 0x06DC, /* Array index: 0x00C0 */ 0x54A6, 0x54AC, 0x06E7, /* Array index: 0x00C3 */ 0x54BD, 0x54C9, 0x06EE, /* Array index: 0x00C6 */ 0x54E5, 0x54EE, 0x06FB, /* Array index: 0x00C9 */ 0x5555, 0x5557, 0x0705, /* Array index: 0x00CC */ 0x5580, 0x5584, 0x0708, /* Array index: 0x00CF */ 0x5587, 0x558B, 0x070D, /* Array index: 0x00D2 */ 0x5598, 0x559F, 0x0712, /* Array index: 0x00D5 */ 0x55AA, 0x55B3, 0x071A, /* Array index: 0x00D8 */ 0x55C5, 0x55C9, 0x0724, /* Array index: 0x00DB */ 0x55E1, 0x55E8, 0x0729, /* Array index: 0x00DE */ 0x562E, 0x5636, 0x0731, /* Array index: 0x00E1 */ 0x5664, 0x566C, 0x073A, /* Array index: 0x00E4 */ 0x568E, 0x5690, 0x0743, /* Array index: 0x00E7 */ 0x56C0, 0x56C2, 0x0746, /* Array index: 0x00EA */ 0x56C8, 0x56CC, 0x0749, /* Array index: 0x00ED */ 0x56DA, 0x56E0, 0x074E, /* Array index: 0x00F0 */ 0x572C, 0x5730, 0x0755, /* Array index: 0x00F3 */ 0x574D, 0x5751, 0x075A, /* Array index: 0x00F6 */ 0x582F, 0x5835, 0x075F, /* Array index: 0x00F9 */ 0x584A, 0x584C, 0x0766, /* Array index: 0x00FC */ 0x5914, 0x591C, 0x0769, /* Array index: 0x00FF */ 0x5927, 0x592E, 0x0772, /* Array index: 0x0102 */ 0x5947, 0x5949, 0x077A, /* Array index: 0x0105 */ 0x594E, 0x595A, 0x077D, /* Array index: 0x0108 */ 0x5981, 0x5984, 0x078A, /* Array index: 0x010B */ 0x59A3, 0x59A5, 0x078E, /* Array index: 0x010E */ 0x59D0, 0x59D4, 0x0791, /* Array index: 0x0111 */ 0x5ABC, 0x5AC2, 0x0796, /* Array index: 0x0114 */ 0x5AD6, 0x5AD8, 0x079D, /* Array index: 0x0117 */ 0x5B08, 0x5B0C, 0x07A0, /* Array index: 0x011A */ 0x5B50, 0x5B5F, 0x07A5, /* Array index: 0x011D */ 0x5B85, 0x5B8C, 0x07B5, /* Array index: 0x0120 */ 0x5B97, 0x5B9C, 0x07BD, /* Array index: 0x0123 */ 0x5BA2, 0x5BA6, 0x07C3, /* Array index: 0x0126 */ 0x5BB3, 0x5BB9, 0x07C8, /* Array index: 0x0129 */ 0x5BC2, 0x5BC7, 0x07CF, /* Array index: 0x012C */ 0x5BDE, 0x5BF0, 0x07D5, /* Array index: 0x012F */ 0x5C07, 0x5C11, 0x07E8, /* Array index: 0x0132 */ 0x5C37, 0x5C41, 0x07F3, /* Array index: 0x0135 */ 0x5C4B, 0x5C51, 0x07FE, /* Array index: 0x0138 */ 0x5DE1, 0x5DE8, 0x0805, /* Array index: 0x013B */ 0x5DF1, 0x5DF4, 0x080D, /* Array index: 0x013E */ 0x5E36, 0x5E38, 0x0811, /* Array index: 0x0141 */ 0x5E5F, 0x5E63, 0x0814, /* Array index: 0x0144 */ 0x5E72, 0x5E7E, 0x0819, /* Array index: 0x0147 */ 0x5E95, 0x5E97, 0x0826, /* Array index: 0x014A */ 0x5EB5, 0x5EB8, 0x0829, /* Array index: 0x014D */ 0x5EC8, 0x5ECA, 0x082D, /* Array index: 0x0150 */ 0x5EDF, 0x5EE3, 0x0830, /* Array index: 0x0153 */ 0x5F12, 0x5F18, 0x0835, /* Array index: 0x0156 */ 0x5F69, 0x5F71, 0x083C, /* Array index: 0x0159 */ 0x5F7F, 0x5F81, 0x0845, /* Array index: 0x015C */ 0x5F85, 0x5F92, 0x0848, /* Array index: 0x015F */ 0x5F97, 0x5F99, 0x0856, /* Array index: 0x0162 */ 0x5FA8, 0x5FAE, 0x0859, /* Array index: 0x0165 */ 0x5FD6, 0x5FD9, 0x0860, /* Array index: 0x0168 */ 0x6012, 0x6016, 0x0864, /* Array index: 0x016B */ 0x6025, 0x602B, 0x0869, /* Array index: 0x016E */ 0x6062, 0x6070, 0x0870, /* Array index: 0x0171 */ 0x60B2, 0x60BD, 0x087F, /* Array index: 0x0174 */ 0x60C5, 0x60C7, 0x088B, /* Array index: 0x0177 */ 0x60DF, 0x60E1, 0x088E, /* Array index: 0x017A */ 0x60F0, 0x60FB, 0x0891, /* Array index: 0x017D */ 0x610D, 0x610F, 0x089D, /* Array index: 0x0180 */ 0x611A, 0x611C, 0x08A0, /* Array index: 0x0183 */ 0x6147, 0x614E, 0x08A3, /* Array index: 0x0186 */ 0x6175, 0x6177, 0x08AB, /* Array index: 0x0189 */ 0x61C7, 0x61CD, 0x08AE, /* Array index: 0x018C */ 0x61F5, 0x6200, 0x08B5, /* Array index: 0x018F */ 0x620A, 0x6216, 0x08C1, /* Array index: 0x0192 */ 0x6230, 0x6236, 0x08CE, /* Array index: 0x0195 */ 0x623E, 0x6241, 0x08D5, /* Array index: 0x0198 */ 0x6247, 0x6254, 0x08D9, /* Array index: 0x019B */ 0x626D, 0x626F, 0x08E7, /* Array index: 0x019E */ 0x627C, 0x6280, 0x08EA, /* Array index: 0x01A1 */ 0x6291, 0x6298, 0x08EF, /* Array index: 0x01A4 */ 0x62C4, 0x62DC, 0x08F7, /* Array index: 0x01A7 */ 0x62EC, 0x62F4, 0x0910, /* Array index: 0x01AA */ 0x62FC, 0x6302, 0x0919, /* Array index: 0x01AD */ 0x6307, 0x6309, 0x0920, /* Array index: 0x01B0 */ 0x634C, 0x6350, 0x0923, /* Array index: 0x01B3 */ 0x6367, 0x636B, 0x0928, /* Array index: 0x01B6 */ 0x63A0, 0x63AC, 0x092D, /* Array index: 0x01B9 */ 0x6413, 0x6417, 0x093A, /* Array index: 0x01BC */ 0x6478, 0x647B, 0x093F, /* Array index: 0x01BF */ 0x64A9, 0x64B3, 0x0943, /* Array index: 0x01C2 */ 0x64BB, 0x64CE, 0x094E, /* Array index: 0x01C5 */ 0x64EC, 0x64F4, 0x0962, /* Array index: 0x01C8 */ 0x652A, 0x652C, 0x096B, /* Array index: 0x01CB */ 0x6554, 0x6559, 0x096E, /* Array index: 0x01CE */ 0x6574, 0x6578, 0x0974, /* Array index: 0x01D1 */ 0x65CB, 0x65CF, 0x0979, /* Array index: 0x01D4 */ 0x65E5, 0x65ED, 0x097E, /* Array index: 0x01D7 */ 0x6613, 0x6615, 0x0987, /* Array index: 0x01DA */ 0x6624, 0x6628, 0x098A, /* Array index: 0x01DD */ 0x6641, 0x6645, 0x098F, /* Array index: 0x01E0 */ 0x666E, 0x6670, 0x0994, /* Array index: 0x01E3 */ 0x6687, 0x6689, 0x0997, /* Array index: 0x01E6 */ 0x6696, 0x6698, 0x099A, /* Array index: 0x01E9 */ 0x66F0, 0x66F9, 0x099D, /* Array index: 0x01EC */ 0x66FC, 0x6700, 0x09A7, /* Array index: 0x01EF */ 0x6726, 0x672E, 0x09AC, /* Array index: 0x01F2 */ 0x674E, 0x6757, 0x09B5, /* Array index: 0x01F5 */ 0x675C, 0x6760, 0x09BF, /* Array index: 0x01F8 */ 0x676D, 0x6777, 0x09C4, /* Array index: 0x01FB */ 0x67CF, 0x67D4, 0x09CF, /* Array index: 0x01FE */ 0x67F1, 0x67F5, 0x09D5, /* Array index: 0x0201 */ 0x683C, 0x6848, 0x09DA, /* Array index: 0x0204 */ 0x6850, 0x6854, 0x09E7, /* Array index: 0x0207 */ 0x687F, 0x6886, 0x09EC, /* Array index: 0x020A */ 0x68AD, 0x68B5, 0x09F4, /* Array index: 0x020D */ 0x68F9, 0x68FB, 0x09FD, /* Array index: 0x0210 */ 0x695A, 0x6960, 0x0A00, /* Array index: 0x0213 */ 0x69CB, 0x69CD, 0x0A07, /* Array index: 0x0216 */ 0x6A38, 0x6A3A, 0x0A0A, /* Array index: 0x0219 */ 0x6B5F, 0x6B67, 0x0A0D, /* Array index: 0x021C */ 0x6B77, 0x6B7B, 0x0A16, /* Array index: 0x021F */ 0x6BD2, 0x6BD4, 0x0A1B, /* Array index: 0x0222 */ 0x6C0F, 0x6C13, 0x0A1E, /* Array index: 0x0225 */ 0x6C23, 0x6C2F, 0x0A23, /* Array index: 0x0228 */ 0x6C3E, 0x6C42, 0x0A30, /* Array index: 0x022B */ 0x6C5B, 0x6C61, 0x0A35, /* Array index: 0x022E */ 0x6C7D, 0x6C8D, 0x0A3C, /* Array index: 0x0231 */ 0x6CB8, 0x6CC5, 0x0A4D, /* Array index: 0x0234 */ 0x6CD3, 0x6CD7, 0x0A5B, /* Array index: 0x0237 */ 0x6CE0, 0x6CE5, 0x0A60, /* Array index: 0x023A */ 0x6CEF, 0x6CF5, 0x0A66, /* Array index: 0x023D */ 0x6D27, 0x6D2B, 0x0A6D, /* Array index: 0x0240 */ 0x6D35, 0x6D3E, 0x0A72, /* Array index: 0x0243 */ 0x6D77, 0x6D79, 0x0A7C, /* Array index: 0x0246 */ 0x6D85, 0x6D8E, 0x0A7F, /* Array index: 0x0249 */ 0x6D93, 0x6D95, 0x0A89, /* Array index: 0x024C */ 0x6DC4, 0x6DC7, 0x0A8C, /* Array index: 0x024F */ 0x6DD8, 0x6DDA, 0x0A90, /* Array index: 0x0252 */ 0x6DE8, 0x6DEE, 0x0A93, /* Array index: 0x0255 */ 0x6DF7, 0x6DFB, 0x0A9A, /* Array index: 0x0258 */ 0x6E19, 0x6E26, 0x0A9F, /* Array index: 0x025B */ 0x6ED1, 0x6ED5, 0x0AAD, /* Array index: 0x025E */ 0x6EFE, 0x6F02, 0x0AB2, /* Array index: 0x0261 */ 0x6F13, 0x6F15, 0x0AB7, /* Array index: 0x0264 */ 0x6F29, 0x6F2C, 0x0ABA, /* Array index: 0x0267 */ 0x6F2F, 0x6F33, 0x0ABE, /* Array index: 0x026A */ 0x6F6D, 0x6F70, 0x0AC3, /* Array index: 0x026D */ 0x6FC0, 0x6FC3, 0x0AC7, /* Array index: 0x0270 */ 0x6FDF, 0x6FE1, 0x0ACB, /* Array index: 0x0273 */ 0x6FEB, 0x6FF1, 0x0ACE, /* Array index: 0x0276 */ 0x70AB, 0x70AF, 0x0AD5, /* Array index: 0x0279 */ 0x7164, 0x7169, 0x0ADA, /* Array index: 0x027C */ 0x71E5, 0x71E7, 0x0AE0, /* Array index: 0x027F */ 0x71EC, 0x71EE, 0x0AE3, /* Array index: 0x0282 */ 0x7235, 0x723E, 0x0AE6, /* Array index: 0x0285 */ 0x7246, 0x7248, 0x0AF0, /* Array index: 0x0288 */ 0x725D, 0x7262, 0x0AF3, /* Array index: 0x028B */ 0x72F7, 0x72FD, 0x0AF9, /* Array index: 0x028E */ 0x7377, 0x737B, 0x0B00, /* Array index: 0x0291 */ 0x7433, 0x7436, 0x0B05, /* Array index: 0x0294 */ 0x7459, 0x745F, 0x0B09, /* Array index: 0x0297 */ 0x74A6, 0x74A9, 0x0B10, /* Array index: 0x029A */ 0x74E0, 0x74E6, 0x0B14, /* Array index: 0x029D */ 0x7525, 0x7533, 0x0B1B, /* Array index: 0x02A0 */ 0x754B, 0x754F, 0x0B2A, /* Array index: 0x02A3 */ 0x7559, 0x755D, 0x0B2F, /* Array index: 0x02A6 */ 0x75A2, 0x75A5, 0x0B34, /* Array index: 0x02A9 */ 0x75B8, 0x75BE, 0x0B38, /* Array index: 0x02AC */ 0x75F0, 0x75F4, 0x0B3F, /* Array index: 0x02AF */ 0x75FF, 0x7601, 0x0B44, /* Array index: 0x02B2 */ 0x761F, 0x7629, 0x0B47, /* Array index: 0x02B5 */ 0x767B, 0x767E, 0x0B52, /* Array index: 0x02B8 */ 0x7684, 0x7688, 0x0B56, /* Array index: 0x02BB */ 0x76C2, 0x76CE, 0x0B5B, /* Array index: 0x02BE */ 0x76DB, 0x76E7, 0x0B68, /* Array index: 0x02C1 */ 0x7736, 0x773E, 0x0B75, /* Array index: 0x02C4 */ 0x7761, 0x776C, 0x0B7E, /* Array index: 0x02C7 */ 0x779E, 0x77A0, 0x0B8A, /* Array index: 0x02CA */ 0x77BB, 0x77BF, 0x0B8D, /* Array index: 0x02CD */ 0x77DA, 0x77DC, 0x0B92, /* Array index: 0x02D0 */ 0x77ED, 0x77EF, 0x0B95, /* Array index: 0x02D3 */ 0x792A, 0x792C, 0x0B98, /* Array index: 0x02D6 */ 0x7946, 0x7949, 0x0B9B, /* Array index: 0x02D9 */ 0x7955, 0x7957, 0x0B9F, /* Array index: 0x02DC */ 0x795D, 0x7960, 0x0BA2, /* Array index: 0x02DF */ 0x798D, 0x798F, 0x0BA6, /* Array index: 0x02E2 */ 0x79B9, 0x79C1, 0x0BA9, /* Array index: 0x02E5 */ 0x79E3, 0x79E9, 0x0BB2, /* Array index: 0x02E8 */ 0x7A1C, 0x7A20, 0x0BB9, /* Array index: 0x02EB */ 0x7A3B, 0x7A40, 0x0BBE, /* Array index: 0x02EE */ 0x7A4B, 0x7A4E, 0x0BC4, /* Array index: 0x02F1 */ 0x7A60, 0x7A62, 0x0BC8, /* Array index: 0x02F4 */ 0x7A95, 0x7A98, 0x0BCB, /* Array index: 0x02F7 */ 0x7B4D, 0x7B56, 0x0BCF, /* Array index: 0x02FA */ 0x7C3D, 0x7C40, 0x0BD9, /* Array index: 0x02FD */ 0x7C5F, 0x7C65, 0x0BDD, /* Array index: 0x0300 */ 0x7CDC, 0x7CE2, 0x0BE4, /* Array index: 0x0303 */ 0x7D02, 0x7D0D, 0x0BEB, /* Array index: 0x0306 */ 0x7D17, 0x7D22, 0x0BF7, /* Array index: 0x0309 */ 0x7D2E, 0x7D33, 0x0C03, /* Array index: 0x030C */ 0x7D40, 0x7D46, 0x0C09, /* Array index: 0x030F */ 0x7D6E, 0x7D73, 0x0C10, /* Array index: 0x0312 */ 0x7DAC, 0x7DB5, 0x0C16, /* Array index: 0x0315 */ 0x7DBA, 0x7DBF, 0x0C20, /* Array index: 0x0318 */ 0x7DD8, 0x7DE0, 0x0C26, /* Array index: 0x031B */ 0x7E08, 0x7E0A, 0x0C2F, /* Array index: 0x031E */ 0x7E2E, 0x7E48, 0x0C32, /* Array index: 0x0321 */ 0x7E69, 0x7E6D, 0x0C4D, /* Array index: 0x0324 */ 0x7F88, 0x7F8E, 0x0C52, /* Array index: 0x0327 */ 0x7FDF, 0x7FE1, 0x0C59, /* Array index: 0x032A */ 0x8000, 0x8006, 0x0C5C, /* Array index: 0x032D */ 0x800B, 0x8012, 0x0C63, /* Array index: 0x0330 */ 0x8015, 0x8019, 0x0C6B, /* Array index: 0x0333 */ 0x806F, 0x8077, 0x0C70, /* Array index: 0x0336 */ 0x807D, 0x807F, 0x0C79, /* Array index: 0x0339 */ 0x8084, 0x808C, 0x0C7C, /* Array index: 0x033C */ 0x80A9, 0x80AB, 0x0C85, /* Array index: 0x033F */ 0x80DA, 0x80DE, 0x0C88, /* Array index: 0x0342 */ 0x80ED, 0x80F4, 0x0C8D, /* Array index: 0x0345 */ 0x8150, 0x8155, 0x0C95, /* Array index: 0x0348 */ 0x8170, 0x817A, 0x0C9B, /* Array index: 0x034B */ 0x8198, 0x819D, 0x0CA6, /* Array index: 0x034E */ 0x81BD, 0x81C3, 0x0CAC, /* Array index: 0x0351 */ 0x81FA, 0x8202, 0x0CB3, /* Array index: 0x0354 */ 0x8205, 0x820D, 0x0CBC, /* Array index: 0x0357 */ 0x821B, 0x821F, 0x0CC5, /* Array index: 0x035A */ 0x8228, 0x822C, 0x0CCA, /* Array index: 0x035D */ 0x8235, 0x8239, 0x0CCF, /* Array index: 0x0360 */ 0x826E, 0x8272, 0x0CD4, /* Array index: 0x0363 */ 0x82AC, 0x82BE, 0x0CD9, /* Array index: 0x0366 */ 0x82D1, 0x82D4, 0x0CEC, /* Array index: 0x0369 */ 0x82DB, 0x82DF, 0x0CF0, /* Array index: 0x036C */ 0x82E3, 0x82E7, 0x0CF5, /* Array index: 0x036F */ 0x8301, 0x8306, 0x0CFA, /* Array index: 0x0372 */ 0x8331, 0x8339, 0x0D00, /* Array index: 0x0375 */ 0x83EF, 0x83F4, 0x0D09, /* Array index: 0x0378 */ 0x840A, 0x840E, 0x0D0F, /* Array index: 0x037B */ 0x8469, 0x846D, 0x0D14, /* Array index: 0x037E */ 0x84C9, 0x84CB, 0x0D19, /* Array index: 0x0381 */ 0x8548, 0x854A, 0x0D1C, /* Array index: 0x0384 */ 0x8568, 0x856A, 0x0D1F, /* Array index: 0x0387 */ 0x85A6, 0x85AA, 0x0D22, /* Array index: 0x038A */ 0x85F7, 0x85FB, 0x0D27, /* Array index: 0x038D */ 0x865B, 0x865F, 0x0D2C, /* Array index: 0x0390 */ 0x8679, 0x867B, 0x0D31, /* Array index: 0x0393 */ 0x8702, 0x870A, 0x0D34, /* Array index: 0x0396 */ 0x881F, 0x8823, 0x0D3D, /* Array index: 0x0399 */ 0x8861, 0x8863, 0x0D42, /* Array index: 0x039C */ 0x895E, 0x8960, 0x0D45, /* Array index: 0x039F */ 0x8A0C, 0x8A18, 0x0D48, /* Array index: 0x03A2 */ 0x8A3A, 0x8A3E, 0x0D55, /* Array index: 0x03A5 */ 0x8A54, 0x8A56, 0x0D5A, /* Array index: 0x03A8 */ 0x8A68, 0x8A73, 0x0D5D, /* Array index: 0x03AB */ 0x8AA0, 0x8AAA, 0x0D69, /* Array index: 0x03AE */ 0x8AF6, 0x8B04, 0x0D74, /* Array index: 0x03B1 */ 0x8B58, 0x8B5C, 0x0D83, /* Array index: 0x03B4 */ 0x8C6A, 0x8C6D, 0x0D88, /* Array index: 0x03B7 */ 0x8C89, 0x8C8D, 0x0D8C, /* Array index: 0x03BA */ 0x8C9D, 0x8CA2, 0x0D91, /* Array index: 0x03BD */ 0x8CA7, 0x8CAC, 0x0D97, /* Array index: 0x03C0 */ 0x8CB2, 0x8CCA, 0x0D9D, /* Array index: 0x03C3 */ 0x8CD1, 0x8CD3, 0x0DB6, /* Array index: 0x03C6 */ 0x8CDE, 0x8CE6, 0x0DB9, /* Array index: 0x03C9 */ 0x8CF8, 0x8CFD, 0x0DC2, /* Array index: 0x03CC */ 0x8E1D, 0x8E22, 0x0DC8, /* Array index: 0x03CF */ 0x8E48, 0x8E4B, 0x0DCE, /* Array index: 0x03D2 */ 0x8E87, 0x8E8D, 0x0DD2, /* Array index: 0x03D5 */ 0x8EAA, 0x8EAC, 0x0DD9, /* Array index: 0x03D8 */ 0x8ECA, 0x8ECF, 0x0DDC, /* Array index: 0x03DB */ 0x8F12, 0x8F15, 0x0DE2, /* Array index: 0x03DE */ 0x8F1B, 0x8F1F, 0x0DE6, /* Array index: 0x03E1 */ 0x8FAD, 0x8FB2, 0x0DEB, /* Array index: 0x03E4 */ 0x8FC2, 0x8FC6, 0x0DF1, /* Array index: 0x03E7 */ 0x8FE2, 0x8FED, 0x0DF6, /* Array index: 0x03EA */ 0x9014, 0x9023, 0x0E02, /* Array index: 0x03ED */ 0x904A, 0x9063, 0x0E12, /* Array index: 0x03F0 */ 0x9074, 0x9091, 0x0E2C, /* Array index: 0x03F3 */ 0x9117, 0x9119, 0x0E4A, /* Array index: 0x03F6 */ 0x9148, 0x914D, 0x0E4D, /* Array index: 0x03F9 */ 0x9174, 0x9178, 0x0E53, /* Array index: 0x03FC */ 0x91C5, 0x91D1, 0x0E58, /* Array index: 0x03FF */ 0x91D7, 0x91DD, 0x0E65, /* Array index: 0x0402 */ 0x9237, 0x9240, 0x0E6C, /* Array index: 0x0405 */ 0x9318, 0x931A, 0x0E76, /* Array index: 0x0408 */ 0x9320, 0x9322, 0x0E79, /* Array index: 0x040B */ 0x9394, 0x939A, 0x0E7C, /* Array index: 0x040E */ 0x93D6, 0x93D8, 0x0E83, /* Array index: 0x0411 */ 0x947C, 0x947F, 0x0E86, /* Array index: 0x0414 */ 0x958E, 0x9594, 0x0E8A, /* Array index: 0x0417 */ 0x95A1, 0x95A9, 0x0E91, /* Array index: 0x041A */ 0x95C8, 0x95CC, 0x0E9A, /* Array index: 0x041D */ 0x95D4, 0x95D6, 0x0E9F, /* Array index: 0x0420 */ 0x964B, 0x964D, 0x0EA2, /* Array index: 0x0423 */ 0x965D, 0x9664, 0x0EA5, /* Array index: 0x0426 */ 0x9670, 0x9678, 0x0EAD, /* Array index: 0x0429 */ 0x9684, 0x9686, 0x0EB6, /* Array index: 0x042C */ 0x968A, 0x968E, 0x0EB9, /* Array index: 0x042F */ 0x9698, 0x969C, 0x0EBE, /* Array index: 0x0432 */ 0x96C0, 0x96CD, 0x0EC3, /* Array index: 0x0435 */ 0x96E8, 0x96EA, 0x0ED1, /* Array index: 0x0438 */ 0x970D, 0x9713, 0x0ED4, /* Array index: 0x043B */ 0x975E, 0x9762, 0x0EDB, /* Array index: 0x043E */ 0x97FF, 0x9813, 0x0EE0, /* Array index: 0x0441 */ 0x9837, 0x983B, 0x0EF5, /* Array index: 0x0444 */ 0x984C, 0x984F, 0x0EFA, /* Array index: 0x0447 */ 0x986F, 0x9871, 0x0EFE, /* Array index: 0x044A */ 0x98FC, 0x98FE, 0x0F01, /* Array index: 0x044D */ 0x993D, 0x993F, 0x0F04, /* Array index: 0x0450 */ 0x99AC, 0x99AE, 0x0F07, /* Array index: 0x0453 */ 0x99D0, 0x99D2, 0x0F0A, /* Array index: 0x0456 */ 0x9ACF, 0x9AD8, 0x0F0D, /* Array index: 0x0459 */ 0x9AED, 0x9AEF, 0x0F17, /* Array index: 0x045C */ 0x9B41, 0x9B45, 0x0F1A, /* Array index: 0x045F */ 0x9B4D, 0x9B51, 0x0F1F, /* Array index: 0x0462 */ 0x9BAA, 0x9BAE, 0x0F24, /* Array index: 0x0465 */ 0x9BC8, 0x9BCA, 0x0F29, /* Array index: 0x0468 */ 0x9ECC, 0x9ED1, 0x0F2C, /* Array index: 0x046B */ 0x9EDB, 0x9EE0, 0x0F32, /* Array index: 0x046E */ 0xFE30, 0xFE44, 0x0F38, /* Array index: 0x0471 */ 0xFE49, 0xFE6B, 0x0F4D, /* Array index: 0x0474 */ 0xFF01, 0xFF3C, 0x0F70, /* Array index: 0x0477 */ 0xFF3F, 0xFF5D, 0x0FAC, /* Ranges content */ /* Range 0x02C7 - 0x02CB, array index: 0x047A */ 0x256F,INVALC,0x256D,0x256E,0x2570, /* Range 0x0391 - 0x03A9, array index: 0x047F */ 0x2475,0x2476,0x2477,0x2478,0x2479,0x247A,0x247B,0x247C, 0x247D,0x247E,0x2521,0x2522,0x2523,0x2524,0x2525,0x2526, 0x2527,INVALC,0x2528,0x2529,0x252A,0x252B,0x252C,0x252D, 0x252E, /* Range 0x03B1 - 0x03C9, array index: 0x0498 */ 0x252F,0x2530,0x2531,0x2532,0x2533,0x2534,0x2535,0x2536, 0x2537,0x2538,0x2539,0x253A,0x253B,0x253C,0x253D,0x253E, 0x253F,INVALC,0x2540,0x2541,0x2542,0x2543,0x2544,0x2545, 0x2546, /* Range 0x2160 - 0x2169, array index: 0x04B1 */ 0x242B,0x242C,0x242D,0x242E,0x242F,0x2430,0x2431,0x2432, 0x2433,0x2434, /* Range 0x2170 - 0x2179, array index: 0x04BB */ 0x2635,0x2636,0x2637,0x2638,0x2639,0x263A,0x263B,0x263C, 0x263D,0x263E, /* Range 0x2190 - 0x2199, array index: 0x04C5 */ 0x2258,0x2255,0x2257,0x2256,INVALC,INVALC,0x2259,0x225A, 0x225C,0x225B, /* Range 0x221E - 0x2220, array index: 0x04CF */ 0x223C,0x2249,0x2248, /* Range 0x2229 - 0x222B, array index: 0x04D2 */ 0x2245,0x2246,0x224D, /* Range 0x2400 - 0x2421, array index: 0x04D5 */ 0x4221,0x4222,0x4223,0x4224,0x4225,0x4226,0x4227,0x4228, 0x4229,0x422A,0x422B,0x422C,0x422D,0x422E,0x422F,0x4230, 0x4231,0x4232,0x4233,0x4234,0x4235,0x4236,0x4237,0x4238, 0x4239,0x423A,0x423B,0x423C,0x423D,0x423E,0x423F,0x4240, INVALC,0x4241, /* Range 0x2460 - 0x2469, array index: 0x04F7 */ 0x2621,0x2622,0x2623,0x2624,0x2625,0x2626,0x2627,0x2628, 0x2629,0x262A, /* Range 0x2474 - 0x247D, array index: 0x0501 */ 0x262B,0x262C,0x262D,0x262E,0x262F,0x2630,0x2631,0x2632, 0x2633,0x2634, /* Range 0x256D - 0x2573, array index: 0x050B */ 0x2340,0x2341,0x2343,0x2342,0x234C,0x234D,0x234E, /* Range 0x2581 - 0x258F, array index: 0x0512 */ 0x2324,0x2325,0x2326,0x2327,0x2328,0x2329,0x232A,0x232B, 0x2332,0x2331,0x2330,0x232F,0x232E,0x232D,0x232C, /* Range 0x25E2 - 0x25E5, array index: 0x0521 */ 0x2348,0x2349,0x234B,0x234A, /* Range 0x2640 - 0x2642, array index: 0x0525 */ 0x2251,0x2253,0x2252, /* Range 0x3000 - 0x3003, array index: 0x0528 */ 0x2121,0x2123,0x2124,0x2171, /* Range 0x3008 - 0x3015, array index: 0x052C */ 0x2152,0x2153,0x214E,0x214F,0x2156,0x2157,0x215A,0x215B, 0x214A,0x214B,0x2265,INVALC,0x2146,0x2147, /* Range 0x301D - 0x3029, array index: 0x053A */ 0x2168,0x2169,INVALC,INVALC,0x2435,0x2436,0x2437,0x2438, 0x2439,0x243A,0x243B,0x243C,0x243D, /* Range 0x3105 - 0x3129, array index: 0x0547 */ 0x2547,0x2548,0x2549,0x254A,0x254B,0x254C,0x254D,0x254E, 0x254F,0x2550,0x2551,0x2552,0x2553,0x2554,0x2555,0x2556, 0x2557,0x2558,0x2559,0x255A,0x255B,0x255C,0x255D,0x255E, 0x255F,0x2560,0x2561,0x2562,0x2563,0x2564,0x2565,0x2566, 0x2567,0x2568,0x2569,0x256A,0x256B, /* Range 0x339C - 0x339E, array index: 0x056C */ 0x2270,0x2271,0x2272, /* Range 0x4E08 - 0x4E19, array index: 0x056F */ 0x4437,0x4435,0x4438,0x4436,INVALC,0x4462,INVALC,INVALC, 0x4461,0x4460,INVALC,INVALC,0x4562,0x4561,0x4560,INVALC, 0x4563,0x455F, /* Range 0x4E4B - 0x4E53, array index: 0x0581 */ 0x4466,INVALC,0x4565,0x4567,0x4566,INVALC,INVALC,0x4724, 0x4725, /* Range 0x4E5D - 0x4E5F, array index: 0x058A */ 0x4426,0x443F,0x443E, /* Range 0x4E91 - 0x4E95, array index: 0x058D */ 0x4469,0x446B,INVALC,0x446C,0x446A, /* Range 0x4E9E - 0x4EAE, array index: 0x0592 */ 0x4B69,0x4F67,INVALC,0x4441,0x446D,INVALC,0x4728,0x472A, 0x4729,INVALC,0x486C,INVALC,INVALC,0x4B6A,0x4B6B,0x4F68, 0x4F69, /* Range 0x4EC0 - 0x4ECD, array index: 0x05A3 */ 0x446F,0x446E,INVALC,0x4470,0x4476,INVALC,0x4471,0x4472, INVALC,INVALC,0x4474,0x4475,INVALC,0x4473, /* Range 0x4ED4 - 0x4ED9, array index: 0x05B1 */ 0x456A,0x456B,0x456C,0x456D,0x4569,0x4570, /* Range 0x4EE3 - 0x4EE5, array index: 0x05B7 */ 0x456E,0x456F,0x4568, /* Range 0x4F09 - 0x4F11, array index: 0x05BA */ 0x472C,0x472E,0x473B,INVALC,0x4730,INVALC,0x4733,0x4731, 0x4732, /* Range 0x4F46 - 0x4F48, array index: 0x05C3 */ 0x487E,0x486F,0x4929, /* Range 0x4F4D - 0x4F60, array index: 0x05C6 */ 0x486D,0x4925,0x486E,0x4876,0x4877,INVALC,INVALC,0x487C, 0x4874,INVALC,0x4870,INVALC,0x4927,0x492A,0x4873,0x4922, 0x4928,0x4871,INVALC,0x4923, /* Range 0x4FB5 - 0x4FB7, array index: 0x05DA */ 0x4F6B,0x4F73,0x5021, /* Range 0x4FC2 - 0x4FC4, array index: 0x05DD */ 0x4F7B,0x4F72,0x4F7A, /* Range 0x4FCE - 0x4FD1, array index: 0x05E0 */ 0x4F7D,0x4F70,0x4F79,0x4F6F, /* Range 0x4FDD - 0x4FE1, array index: 0x05E4 */ 0x4F71,0x4F7E,0x4F75,0x4F6E,0x4F6A, /* Range 0x5009 - 0x501A, array index: 0x05E9 */ 0x543F,INVALC,0x5436,0x5421,0x5422,INVALC,0x5924,INVALC, 0x542F,0x542E,INVALC,0x5432,INVALC,0x5429,INVALC,0x5438, 0x5437,0x542D, /* Range 0x5025 - 0x502D, array index: 0x05FB */ 0x5426,0x5425,INVALC,0x5433,0x5428,0x543C,0x543E,INVALC, 0x543B, /* Range 0x5074 - 0x5077, array index: 0x0604 */ 0x5921,0x587E,0x587B,0x5922, /* Range 0x5096 - 0x509A, array index: 0x0608 */ 0x5E2F,INVALC,0x5E30,0x5E2C,0x5E31, /* Range 0x513B - 0x514D, array index: 0x060D */ 0x7B58,0x7B57,INVALC,INVALC,0x442A,0x4442,0x4478,INVALC, 0x4477,0x4573,0x4572,0x473E,0x473D,0x473F,0x473C,INVALC, 0x492C,0x492B,0x492D, /* Range 0x5159 - 0x516E, array index: 0x0620 */ 0x2279,INVALC,0x227A,0x5927,0x227C,0x227B,INVALC,INVALC, 0x227D,0x677E,0x227E,INVALC,0x442B,INVALC,0x4479,0x4740, 0x4C25,INVALC,0x442C,0x447C,0x447A,0x447B, /* Range 0x5175 - 0x5178, array index: 0x0636 */ 0x492E,0x4C27,0x4C26,0x4C28, /* Range 0x51CB - 0x51CD, array index: 0x063A */ 0x5447,0x5445,0x5444, /* Range 0x51F6 - 0x51FA, array index: 0x063D */ 0x447E,INVALC,0x4579,0x4577,0x4578, /* Range 0x5206 - 0x520A, array index: 0x0642 */ 0x4521,0x4522,0x4523,INVALC,0x457A, /* Range 0x5224 - 0x522A, array index: 0x0647 */ 0x4932,0x4931,INVALC,INVALC,0x4935,0x4933,0x4934, /* Range 0x5236 - 0x523B, array index: 0x064E */ 0x4C31,0x4C2D,0x4C2C,INVALC,0x4C2E,0x4C2B, /* Range 0x524A - 0x524E, array index: 0x0654 */ 0x5028,0x502B,0x502A,0x5029,0x5026, /* Range 0x525B - 0x525D, array index: 0x0659 */ 0x544B,0x5449,0x544C, /* Range 0x5287 - 0x528A, array index: 0x065C */ 0x6C2A,0x6C2B,0x6C2C,0x6C2E, /* Range 0x52A9 - 0x52AC, array index: 0x0660 */ 0x4937,0x4938,0x4936,0x4939, /* Range 0x52D5 - 0x52E6, array index: 0x0664 */ 0x592F,INVALC,0x5B2B,0x592E,0x592D,INVALC,0x5E3A,INVALC, 0x5E39,0x5E38,0x6339,INVALC,INVALC,0x633C,0x633D,0x633B, INVALC,0x633A, /* Range 0x5315 - 0x5319, array index: 0x0676 */ 0x4431,0x4527,0x4621,INVALC,0x5932, /* Range 0x533E - 0x534A, array index: 0x067B */ 0x5935,0x5933,0x5934,0x4432,INVALC,0x4445,0x243F,0x452B, INVALC,0x452A,0x4529,0x4625,0x4624, /* Range 0x5351 - 0x5354, array index: 0x0688 */ 0x4C38,0x4C35,0x4C37,0x4C36, /* Range 0x536E - 0x537B, array index: 0x068C */ 0x4629,0x4628,0x474D,0x474E,INVALC,0x493B,INVALC,0x493C, INVALC,0x4C3A,0x4C3B,0x4C3C,INVALC,0x5033, /* Range 0x53C8 - 0x53CD, array index: 0x069A */ 0x4434,0x4446,0x452F,0x452E,INVALC,0x4530, /* Range 0x53E2 - 0x53F5, array index: 0x06A0 */ 0x763B,0x4447,0x462C,0x463B,0x4636,INVALC,0x4631,0x4630, 0x4637,0x4635,0x462E,0x463C,0x462F,0x462B,0x463A,0x4639, 0x4638,0x462D,INVALC,0x4634, /* Range 0x5406 - 0x5412, array index: 0x06B4 */ 0x475C,INVALC,0x4759,0x474F,0x4752,0x4755,0x4751,0x4758, 0x475B,0x4750,0x4753,0x4757,0x475D, /* Range 0x541B - 0x5420, array index: 0x06C1 */ 0x4949,INVALC,0x493D,0x493F,0x4957,0x4952, /* Range 0x5429 - 0x542E, array index: 0x06C7 */ 0x494A,INVALC,0x4956,0x4958,0x493E,0x494F, /* Range 0x5435 - 0x5443, array index: 0x06CD */ 0x4950,0x4951,INVALC,0x494E,0x494C,INVALC,0x494D,0x4953, INVALC,0x4940,INVALC,0x4954,INVALC,0x4948,0x4945, /* Range 0x5473 - 0x547D, array index: 0x06DC */ 0x4C40,INVALC,0x4C41,0x4C4E,0x4C47,0x4C43,INVALC,INVALC, 0x4C46,0x4C4B,0x4C54, /* Range 0x54A6 - 0x54AC, array index: 0x06E7 */ 0x503C,0x504A,0x5038,0x5049,0x5041,0x5046,0x5036, /* Range 0x54BD - 0x54C9, array index: 0x06EE */ 0x5040,INVALC,0x504B,0x5037,0x5042,0x503F,INVALC,0x5043, INVALC,INVALC,0x503E,0x5044,0x503A, /* Range 0x54E5 - 0x54EE, array index: 0x06FB */ 0x5457,0x5462,INVALC,0x5452,0x545C,0x5461,INVALC,INVALC, 0x545D,0x5460, /* Range 0x5555 - 0x5557, array index: 0x0705 */ 0x5943,0x5941,0x594D, /* Range 0x5580 - 0x5584, array index: 0x0708 */ 0x5E3E,INVALC,0x5E44,0x5E4A,0x6143, /* Range 0x5587 - 0x558B, array index: 0x070D */ 0x5E48,INVALC,0x5E55,0x5E41,0x5E49, /* Range 0x5598 - 0x559F, array index: 0x0712 */ 0x5E43,0x5E57,0x5E50,INVALC,0x5E45,0x5E42,INVALC,0x5E4D, /* Range 0x55AA - 0x55B3, array index: 0x071A */ 0x5E46,0x5E56,0x5E52,INVALC,0x5E4C,INVALC,INVALC,0x5E53, 0x5E4F,0x5E4B, /* Range 0x55C5 - 0x55C9, array index: 0x0724 */ 0x634C,0x634D,0x6345,INVALC,0x634F, /* Range 0x55E1 - 0x55E8, array index: 0x0729 */ 0x634B,INVALC,0x6347,0x6348,0x634E,0x6342,0x2321,0x6340, /* Range 0x562E - 0x5636, array index: 0x0731 */ 0x6C31,0x6C3D,0x6C3E,INVALC,0x6C34,INVALC,0x6C36,INVALC, 0x6C3C, /* Range 0x5664 - 0x566C, array index: 0x073A */ 0x703F,0x7043,INVALC,INVALC,0x7042,0x703E,0x7041,0x703C, 0x7046, /* Range 0x568E - 0x5690, array index: 0x0743 */ 0x7345,0x734A,0x7347, /* Range 0x56C0 - 0x56C2, array index: 0x0746 */ 0x7A65,0x7A64,0x7A66, /* Range 0x56C8 - 0x56CC, array index: 0x0749 */ 0x7B59,0x7B5B,0x7B5A,INVALC,0x7C34, /* Range 0x56DA - 0x56E0, array index: 0x074E */ 0x463F,0x463E,INVALC,0x4760,0x475F,INVALC,0x475E, /* Range 0x572C - 0x5730, array index: 0x0755 */ 0x4765,0x4764,INVALC,0x4766,0x4762, /* Range 0x574D - 0x5751, array index: 0x075A */ 0x4960,0x4962,0x4965,0x4964,0x495E, /* Range 0x582F - 0x5835, array index: 0x075F */ 0x5E59,0x5E5D,0x5E5E,INVALC,INVALC,0x5E5B,0x5959, /* Range 0x584A - 0x584C, array index: 0x0766 */ 0x635B,0x635E,0x6359, /* Range 0x5914 - 0x591C, array index: 0x0769 */ 0x7A67,0x444A,0x4640,INVALC,INVALC,0x4768,0x4769,INVALC, 0x4C5F, /* Range 0x5927 - 0x592E, array index: 0x0772 */ 0x444B,INVALC,0x4532,0x4534,0x4533,INVALC,0x4535,0x4641, /* Range 0x5947 - 0x5949, array index: 0x077A */ 0x4C61,0x4C62,0x4C60, /* Range 0x594E - 0x595A, array index: 0x077D */ 0x5058,0x5057,0x5059,0x5056,INVALC,INVALC,0x4C64,0x5055, INVALC,0x546F,0x5470,INVALC,0x5471, /* Range 0x5981 - 0x5984, array index: 0x078A */ 0x4772,0x4771,0x476E,0x476C, /* Range 0x59A3 - 0x59A5, array index: 0x078E */ 0x496D,0x4971,0x4974, /* Range 0x59D0 - 0x59D4, array index: 0x0791 */ 0x4C6C,0x4C6A,0x4C73,0x4C6F,0x4C67, /* Range 0x5ABC - 0x5AC2, array index: 0x0796 */ 0x6365,0x6364,0x6363,INVALC,INVALC,0x6360,0x6367, /* Range 0x5AD6 - 0x5AD8, array index: 0x079D */ 0x684A,0x6849,0x684B, /* Range 0x5B08 - 0x5B0C, array index: 0x07A0 */ 0x6C4D,0x6C48,INVALC,0x6C4A,0x6C4C, /* Range 0x5B50 - 0x5B5F, array index: 0x07A5 */ 0x444D,0x444E,INVALC,0x444F,0x4536,0x4645,INVALC,0x4773, 0x4774,INVALC,0x4977,0x4978,0x4976,0x4975,INVALC,0x4C75, /* Range 0x5B85 - 0x5B8C, array index: 0x07B5 */ 0x4777,INVALC,0x4775,0x4776,0x4778,INVALC,0x497A,0x4979, /* Range 0x5B97 - 0x5B9C, array index: 0x07BD */ 0x4C78,0x4C7A,0x4C7C,0x4C79,0x4C7D,0x4C7B, /* Range 0x5BA2 - 0x5BA6, array index: 0x07C3 */ 0x506A,0x5067,0x5069,0x506B,0x5068, /* Range 0x5BB3 - 0x5BB9, array index: 0x07C8 */ 0x5524,0x5526,0x5528,0x5525,INVALC,0x552A,0x5529, /* Range 0x5BC2 - 0x5BC7, array index: 0x07CF */ 0x596D,INVALC,0x596C,0x596B,0x596F,0x596A, /* Range 0x5BDE - 0x5BF0, array index: 0x07D5 */ 0x684E,0x6856,INVALC,0x6850,0x6854,INVALC,0x6855,0x6851, 0x6852,0x684F,0x6853,0x6C50,INVALC,0x6C51,0x6C4F,INVALC, 0x6C4E,INVALC,0x7051, /* Range 0x5C07 - 0x5C11, array index: 0x07E8 */ 0x5972,0x5971,0x5970,0x5E71,0x5E72,INVALC,0x6857,0x7052, 0x4451,INVALC,0x4537, /* Range 0x5C37 - 0x5C41, array index: 0x07F3 */ 0x7353,0x4453,0x4467,0x4539,INVALC,0x4647,INVALC,0x4A22, 0x4A21,0x497D,0x497E, /* Range 0x5C4B - 0x5C51, array index: 0x07FE */ 0x5070,INVALC,0x506F,0x506D,0x506E,0x552E,0x552C, /* Range 0x5DE1 - 0x5DE8, array index: 0x0805 */ 0x4B56,0x5A25,INVALC,INVALC,0x4456,0x464A,0x4649,0x4648, /* Range 0x5DF1 - 0x5DF4, array index: 0x080D */ 0x4457,0x4458,0x4459,0x453B, /* Range 0x5E36 - 0x5E38, array index: 0x0811 */ 0x5A27,0x5A29,0x5A26, /* Range 0x5E5F - 0x5E63, array index: 0x0814 */ 0x6C57,INVALC,0x6C58,0x6C56,0x685C, /* Range 0x5E72 - 0x5E7E, array index: 0x0819 */ 0x445B,0x464D,0x4821,INVALC,0x477E,INVALC,0x4D31,0x636C, INVALC,0x453C,0x464E,0x5077,0x5E7D, /* Range 0x5E95 - 0x5E97, array index: 0x0826 */ 0x4D35,0x4D36,0x4D33, /* Range 0x5EB5 - 0x5EB8, array index: 0x0829 */ 0x5A2D,0x5A2C,0x5A2A,0x5A2B, /* Range 0x5EC8 - 0x5ECA, array index: 0x082D */ 0x636E,0x636D,0x5E7E, /* Range 0x5EDF - 0x5EE3, array index: 0x0830 */ 0x6C5B,0x6C5E,INVALC,0x6C59,0x6C5D, /* Range 0x5F12 - 0x5F18, array index: 0x0835 */ 0x636F,0x445E,0x453E,0x453F,INVALC,0x4651,0x4650, /* Range 0x5F69 - 0x5F71, array index: 0x083C */ 0x5A33,0x5D29,0x5A34,0x5A32,0x5F25,INVALC,INVALC,0x6864, 0x6C60, /* Range 0x5F7F - 0x5F81, array index: 0x0845 */ 0x4D3D,0x4D3B,0x4D3C, /* Range 0x5F85 - 0x5F92, array index: 0x0848 */ 0x5121,INVALC,0x5124,0x507E,0x5126,0x5122,0x5123,0x5125, INVALC,INVALC,INVALC,0x5541,0x5540,0x553F, /* Range 0x5F97 - 0x5F99, array index: 0x0856 */ 0x5A35,0x5A38,0x5A36, /* Range 0x5FA8 - 0x5FAE, array index: 0x0859 */ 0x5F28,0x5F26,0x5F27,INVALC,0x6371,INVALC,0x6372, /* Range 0x5FD6 - 0x5FD9, array index: 0x0860 */ 0x4825,0x4A35,0x4A33,0x4824, /* Range 0x6012 - 0x6016, array index: 0x0864 */ 0x5127,INVALC,0x4D45,0x4D4A,0x4D48, /* Range 0x6025 - 0x602B, array index: 0x0869 */ 0x512A,INVALC,0x4D4C,0x512C,0x4D4D,0x4D49,0x4D4E, /* Range 0x6062 - 0x6070, array index: 0x0870 */ 0x5130,0x5543,0x5136,0x5544,INVALC,INVALC,0x512F,0x5548, 0x5135,0x5134,0x5133,0x5547,INVALC,0x5549,0x512E, /* Range 0x60B2 - 0x60BD, array index: 0x087F */ 0x5F2B,INVALC,0x5A42,0x5A47,0x5F2C,INVALC,0x5A4E,INVALC, INVALC,0x5A46,0x5A49,0x5A44, /* Range 0x60C5 - 0x60C7, array index: 0x088B */ 0x5A45,0x5A4C,0x5A50, /* Range 0x60DF - 0x60E1, array index: 0x088E */ 0x5A4D,0x5F2D,0x5F2A, /* Range 0x60F0 - 0x60FB, array index: 0x0891 */ 0x5F32,0x5F36,INVALC,0x6377,0x5F34,INVALC,0x5F38,INVALC, INVALC,0x6379,0x5F30,0x5F33, /* Range 0x610D - 0x610F, array index: 0x089D */ 0x6425,0x5F37,0x6374, /* Range 0x611A - 0x611C, array index: 0x08A0 */ 0x6373,0x6378,0x5F2E, /* Range 0x6147 - 0x614E, array index: 0x08A3 */ 0x6866,0x6375,INVALC,INVALC,0x6868,0x637D,0x6421,0x637C, /* Range 0x6175 - 0x6177, array index: 0x08AB */ 0x686F,0x6C63,0x6869, /* Range 0x61C7 - 0x61CD, array index: 0x08AE */ 0x735E,0x705C,0x735C,0x705B,0x7360,INVALC,0x7058, /* Range 0x61F5 - 0x6200, array index: 0x08B5 */ 0x7837,0x7836,0x7835,0x796C,INVALC,0x796D,INVALC,0x7A6A, INVALC,0x7A6B,0x7B60,0x7C36, /* Range 0x620A - 0x6216, array index: 0x08C1 */ 0x4653,INVALC,0x4827,0x4828,0x4826,INVALC,0x4829,0x4A3C, 0x4A3B,INVALC,INVALC,0x4D51,0x4D50, /* Range 0x6230 - 0x6236, array index: 0x08CE */ 0x705D,INVALC,0x7361,0x7643,0x7362,INVALC,0x4542, /* Range 0x623E - 0x6241, array index: 0x08D5 */ 0x4D53,0x4D52,0x4D54,0x5137, /* Range 0x6247 - 0x6254, array index: 0x08D9 */ 0x5552,0x5A53,0x5F3D,INVALC,0x4543,INVALC,0x445F,0x4544, INVALC,INVALC,0x4657,0x4656,0x4654,0x4655, /* Range 0x626D - 0x626F, array index: 0x08E7 */ 0x4A43,0x4A4C,0x4A4A, /* Range 0x627C - 0x6280, array index: 0x08EA */ 0x4A45,INVALC,0x4A46,0x4D55,0x4A40, /* Range 0x6291 - 0x6298, array index: 0x08EF */ 0x4A4F,0x4A49,0x4A4E,INVALC,0x4A4D,0x4A3F,0x4A3E,0x4A4B, /* Range 0x62C4 - 0x62DC, array index: 0x08F7 */ 0x4D58,INVALC,0x4D70,0x4D68,0x4D62,0x4D56,INVALC,0x4D61, 0x4D57,0x4D69,0x4D72,INVALC,0x4D66,INVALC,0x4D5C,0x4D5F, 0x4D60,INVALC,0x4D6E,0x4D6F,0x4D6D,0x4D67,0x4D6B,0x4D5D, 0x5138, /* Range 0x62EC - 0x62F4, array index: 0x0910 */ 0x5144,0x513C,0x513E,0x5143,INVALC,0x5141,INVALC,0x5553, 0x5146, /* Range 0x62FC - 0x6302, array index: 0x0919 */ 0x513B,0x513F,0x5145,0x5555,INVALC,0x513D,0x5148, /* Range 0x6307 - 0x6309, array index: 0x0920 */ 0x5140,0x5554,0x513A, /* Range 0x634C - 0x6350, array index: 0x0923 */ 0x5565,0x5564,0x5556,0x555C,0x555F, /* Range 0x6367 - 0x636B, array index: 0x0928 */ 0x5A5B,0x5A6F,0x5A6E,INVALC,0x5A63, /* Range 0x63A0 - 0x63AC, array index: 0x092D */ 0x5A54,0x5A68,0x5A58,0x5F3E,INVALC,0x5A59,INVALC,0x5A55, 0x5A64,0x5A5F,0x5A5D,INVALC,0x5A69, /* Range 0x6413 - 0x6417, array index: 0x093A */ 0x642A,0x6433,INVALC,0x6436,0x6437, /* Range 0x6478 - 0x647B, array index: 0x093F */ 0x6875,0x6C79,0x6877,0x687C, /* Range 0x64A9 - 0x64B3, array index: 0x0943 */ 0x6D24,INVALC,0x6D28,0x6D2A,0x6D27,0x6D26,INVALC,0x6C7E, INVALC,0x6C7B,0x6D2D, /* Range 0x64BB - 0x64CE, array index: 0x094E */ 0x7061,0x7062,INVALC,0x706B,0x7068,INVALC,0x705F,0x7066, INVALC,0x7064,0x705E,INVALC,0x7065,INVALC,INVALC,0x7364, 0x7060,INVALC,0x7067,0x7363, /* Range 0x64EC - 0x64F4, array index: 0x0962 */ 0x7369,0x736C,INVALC,INVALC,0x7367,0x736A,0x7645,INVALC, 0x7644, /* Range 0x652A - 0x652C, array index: 0x096B */ 0x7C39,0x7C38,0x7C5F, /* Range 0x6554 - 0x6559, array index: 0x096E */ 0x5A7A,0x5A79,0x5A72,0x5A75,0x5A78,0x5A74, /* Range 0x6574 - 0x6578, array index: 0x0974 */ 0x706C,0x6D2E,INVALC,0x6D2F,0x6D30, /* Range 0x65CB - 0x65CF, array index: 0x0979 */ 0x5B21,0x5B22,INVALC,0x5B23,0x5A7E, /* Range 0x65E5 - 0x65ED, array index: 0x097E */ 0x454A,0x4659,INVALC,0x482F,0x482E,INVALC,INVALC,0x4830, 0x4831, /* Range 0x6613 - 0x6615, array index: 0x0987 */ 0x4D78,0x4D77,0x4E21, /* Range 0x6624 - 0x6628, array index: 0x098A */ 0x5156,0x514E,INVALC,0x5151,0x5154, /* Range 0x6641 - 0x6645, array index: 0x098F */ 0x5572,0x556B,0x556E,INVALC,0x5571, /* Range 0x666E - 0x6670, array index: 0x0994 */ 0x5F5B,0x5F5F,0x5F5C, /* Range 0x6687 - 0x6689, array index: 0x0997 */ 0x643E,0x643F,0x643D, /* Range 0x6696 - 0x6698, array index: 0x099A */ 0x6440,0x643C,0x6442, /* Range 0x66F0 - 0x66F9, array index: 0x099D */ 0x454B,INVALC,0x4832,0x4833,0x4A55,INVALC,INVALC,0x5157, 0x5573,0x5B2A, /* Range 0x66FC - 0x6700, array index: 0x09A7 */ 0x5937,INVALC,0x5F64,0x5F65,0x5E32, /* Range 0x6726 - 0x672E, array index: 0x09AC */ 0x764D,0x7972,0x454D,INVALC,0x465C,0x465D,0x465B,0x465E, 0x465A, /* Range 0x674E - 0x6757, array index: 0x09B5 */ 0x4A57,0x4A58,0x4A59,0x4A5A,INVALC,0x4A61,INVALC,INVALC, 0x4A5C,0x4A62, /* Range 0x675C - 0x6760, array index: 0x09BF */ 0x4A5B,INVALC,0x4A5D,0x4A56,0x4A60, /* Range 0x676D - 0x6777, array index: 0x09C4 */ 0x4E26,INVALC,0x4E30,0x4E31,0x4E29,0x4E3B,0x4E2B,INVALC, 0x4E36,INVALC,0x4E2C, /* Range 0x67CF - 0x67D4, array index: 0x09CF */ 0x5169,0x515C,0x5164,0x5170,0x5159,0x515B, /* Range 0x67F1 - 0x67F5, array index: 0x09D5 */ 0x515A,INVALC,0x516B,0x5627,0x5160, /* Range 0x683C - 0x6848, array index: 0x09DA */ 0x562A,0x5626,INVALC,INVALC,0x5629,0x5630,0x557D,0x562B, INVALC,0x562D,0x557A,INVALC,0x5579, /* Range 0x6850 - 0x6854, array index: 0x09E7 */ 0x5628,0x5625,INVALC,0x557B,0x557E, /* Range 0x687F - 0x6886, array index: 0x09EC */ 0x5B32,INVALC,0x5B2D,0x5B42,0x5B38,INVALC,0x5B3C,0x5B3B, /* Range 0x68AD - 0x68B5, array index: 0x09F4 */ 0x5B3A,INVALC,0x5B2E,0x5B37,0x5B34,INVALC,0x5622,INVALC, 0x5B31, /* Range 0x68F9 - 0x68FB, array index: 0x09FD */ 0x5F72,0x5F68,0x5F7E, /* Range 0x695A - 0x6960, array index: 0x0A00 */ 0x6447,0x6457,INVALC,0x6455,0x6451,INVALC,0x6449, /* Range 0x69CB - 0x69CD, array index: 0x0A07 */ 0x692C,0x6935,0x6933, /* Range 0x6A38 - 0x6A3A, array index: 0x0A0A */ 0x7074,0x7079,0x7075, /* Range 0x6B5F - 0x6B67, array index: 0x0A0D */ 0x7656,INVALC,0x7B63,0x454F,0x465F,0x483A,0x4A63,0x4E3D, 0x4E3E, /* Range 0x6B77 - 0x6B7B, array index: 0x0A16 */ 0x7125,0x7657,0x4550,INVALC,0x483B, /* Range 0x6BD2 - 0x6BD4, array index: 0x0A1B */ 0x5175,0x645C,0x4552, /* Range 0x6C0F - 0x6C13, array index: 0x0A1E */ 0x4554,0x4662,0x4661,INVALC,0x4E40, /* Range 0x6C23 - 0x6C2F, array index: 0x0A23 */ 0x5634,0x5638,INVALC,0x5637,0x5635,0x5636,INVALC,INVALC, 0x5B47,0x602A,INVALC,0x6028,0x6029, /* Range 0x6C3E - 0x6C42, array index: 0x0A30 */ 0x4666,INVALC,0x4665,0x4664,0x4A65, /* Range 0x6C5B - 0x6C61, array index: 0x0A35 */ 0x4845,INVALC,0x483D,0x4A66,0x4840,0x4841,0x4844, /* Range 0x6C7D - 0x6C8D, array index: 0x0A3C */ 0x4A75,0x4A78,INVALC,INVALC,0x4A68,0x4B21,0x4A76,INVALC, 0x4A6B,0x4A7A,INVALC,0x4A69,0x4A6A,INVALC,INVALC,0x4A71, 0x4A7C, /* Range 0x6CB8 - 0x6CC5, array index: 0x0A4D */ 0x4E50,0x4E52,INVALC,0x4E59,0x4E4B,0x4E49,0x4E4A,0x4E58, INVALC,0x4E53,INVALC,INVALC,0x4E51,0x4E56, /* Range 0x6CD3 - 0x6CD7, array index: 0x0A5B */ 0x4E4F,INVALC,0x4E4E,0x4E60,0x4E55, /* Range 0x6CE0 - 0x6CE5, array index: 0x0A60 */ 0x4E61,0x4E5A,0x4E4C,0x4E42,INVALC,0x4E47, /* Range 0x6CEF - 0x6CF5, array index: 0x0A66 */ 0x4E5E,0x5639,0x4E57,INVALC,0x4E44,INVALC,0x5229, /* Range 0x6D27 - 0x6D2B, array index: 0x0A6D */ 0x522B,INVALC,0x522D,0x517B,0x5231, /* Range 0x6D35 - 0x6D3E, array index: 0x0A72 */ 0x522F,0x5227,INVALC,0x522C,0x522A,INVALC,0x5224,INVALC, 0x5225,0x5226, /* Range 0x6D77 - 0x6D79, array index: 0x0A7C */ 0x5640,0x563F,0x564B, /* Range 0x6D85 - 0x6D8E, array index: 0x0A7F */ 0x564C,INVALC,0x563D,0x563C,0x5644,0x564A,INVALC,0x5649, INVALC,0x5B48, /* Range 0x6D93 - 0x6D95, array index: 0x0A89 */ 0x5642,0x564E,0x563B, /* Range 0x6DC4 - 0x6DC7, array index: 0x0A8C */ 0x5B69,0x5B5D,0x5B68,0x5B53, /* Range 0x6DD8 - 0x6DDA, array index: 0x0A90 */ 0x5B63,0x5B4B,0x5B61, /* Range 0x6DE8 - 0x6DEE, array index: 0x0A93 */ 0x5B67,INVALC,0x5B64,0x5B62,0x5B6B,INVALC,0x5B66, /* Range 0x6DF7 - 0x6DFB, array index: 0x0A9A */ 0x5B5B,INVALC,0x5B59,0x5B51,0x5B50, /* Range 0x6E19 - 0x6E26, array index: 0x0A9F */ 0x6047,0x5B5F,0x6035,INVALC,0x6043,INVALC,INVALC,0x6032, 0x602E,INVALC,0x6034,0x6038,0x6033,0x603C, /* Range 0x6ED1 - 0x6ED5, array index: 0x0AAD */ 0x646C,INVALC,0x6460,0x6470,0x6D5A, /* Range 0x6EFE - 0x6F02, array index: 0x0AB2 */ 0x693E,0x6948,INVALC,0x6955,0x6946, /* Range 0x6F13 - 0x6F15, array index: 0x0AB7 */ 0x693F,0x693D,0x694F, /* Range 0x6F29 - 0x6F2C, array index: 0x0ABA */ 0x6941,0x6953,0x6950,0x6944, /* Range 0x6F2F - 0x6F33, array index: 0x0ABE */ 0x6951,INVALC,0x694B,0x694D,0x693C, /* Range 0x6F6D - 0x6F70, array index: 0x0AC3 */ 0x6D50,0x6D53,0x6D5B,0x6D56, /* Range 0x6FC0 - 0x6FC3, array index: 0x0AC7 */ 0x712F,0x712C,0x7127,0x712A, /* Range 0x6FDF - 0x6FE1, array index: 0x0ACB */ 0x7424,0x7425,0x742C, /* Range 0x6FEB - 0x6FF1, array index: 0x0ACE */ 0x7428,0x742B,INVALC,0x742F,0x7429,0x7430,0x7423, /* Range 0x70AB - 0x70AF, array index: 0x0AD5 */ 0x5232,0x5235,0x5237,0x5239,0x5236, /* Range 0x7164 - 0x7169, array index: 0x0ADA */ 0x6477,0x647E,0x647C,0x6479,0x6523,0x6476, /* Range 0x71E5 - 0x71E7, array index: 0x0AE0 */ 0x7435,0x7434,0x7431, /* Range 0x71EC - 0x71EE, array index: 0x0AE3 */ 0x7437,0x7436,0x7433, /* Range 0x7235 - 0x723E, array index: 0x0AE6 */ 0x743A,0x4558,INVALC,0x4E69,0x5655,0x6525,0x4559,INVALC, 0x5B73,0x695F, /* Range 0x7246 - 0x7248, array index: 0x0AF0 */ 0x743B,0x455A,0x4E6A, /* Range 0x725D - 0x7262, array index: 0x0AF3 */ 0x484A,INVALC,0x4849,0x4B28,0x4B27,0x4B26, /* Range 0x72F7 - 0x72FD, array index: 0x0AF9 */ 0x565B,0x565A,0x5658,INVALC,INVALC,0x5657,0x5659, /* Range 0x7377 - 0x737B, array index: 0x0B00 */ 0x7664,0x784B,INVALC,0x784C,0x7978, /* Range 0x7433 - 0x7436, array index: 0x0B05 */ 0x605F,0x6064,0x6062,0x6063, /* Range 0x7459 - 0x745F, array index: 0x0B09 */ 0x6532,0x652C,0x6533,0x6534,INVALC,0x652F,0x652E, /* Range 0x74A6 - 0x74A9, array index: 0x0B10 */ 0x7440,0x7666,0x7441,0x743E, /* Range 0x74E0 - 0x74E6, array index: 0x0B14 */ 0x5C24,INVALC,0x7147,0x784F,0x7B67,INVALC,0x466B, /* Range 0x7525 - 0x7533, array index: 0x0B1B */ 0x6069,0x606A,INVALC,0x466E,0x466F,INVALC,0x4B2D,0x4B2C, 0x524A,INVALC,INVALC,0x4670,0x4671,0x4672,0x4673, /* Range 0x754B - 0x754F, array index: 0x0B2A */ 0x524E,0x524C,INVALC,0x524D,0x524B, /* Range 0x7559 - 0x755D, array index: 0x0B2F */ 0x5667,0x5666,INVALC,0x5665,0x5664, /* Range 0x75A2 - 0x75A5, array index: 0x0B34 */ 0x5252,0x5253,0x5250,0x5251, /* Range 0x75B8 - 0x75BE, array index: 0x0B38 */ 0x5671,0x566F,INVALC,INVALC,0x566E,0x566D,0x5668, /* Range 0x75F0 - 0x75F4, array index: 0x0B3F */ 0x6538,0x653B,0x653A,0x653F,0x653E, /* Range 0x75FF - 0x7601, array index: 0x0B44 */ 0x653D,0x6537,0x6539, /* Range 0x761F - 0x7629, array index: 0x0B47 */ 0x6D6E,0x6D6C,0x6D71,0x6D72,INVALC,0x6D6F,INVALC,0x6D70, 0x696B,INVALC,0x6D6D, /* Range 0x767B - 0x767E, array index: 0x0B52 */ 0x6074,0x6075,0x4675,0x484B, /* Range 0x7684 - 0x7688, array index: 0x0B56 */ 0x4E7B,INVALC,0x5255,0x5256,0x5257, /* Range 0x76C2 - 0x76CE, array index: 0x0B5B */ 0x4E7C,0x525A,INVALC,0x525B,0x5259,INVALC,0x5258,INVALC, 0x5674,INVALC,INVALC,0x5675,0x5676, /* Range 0x76DB - 0x76E7, array index: 0x0B68 */ 0x5C36,0x6079,INVALC,0x6540,0x6541,INVALC,0x6970,INVALC, 0x6971,0x6D75,0x714E,INVALC,0x714D, /* Range 0x7736 - 0x773E, array index: 0x0B75 */ 0x5C3A,0x5C37,0x5C3B,INVALC,0x5C3C,INVALC,0x5C39,INVALC, 0x5C38, /* Range 0x7761 - 0x776C, array index: 0x0B7E */ 0x6975,0x654D,0x6546,INVALC,0x654B,0x6544,INVALC,0x654C, INVALC,0x6548,0x6543,0x6549, /* Range 0x779E - 0x77A0, array index: 0x0B8A */ 0x7150,0x7151,0x714F, /* Range 0x77BB - 0x77BF, array index: 0x0B8D */ 0x766E,0x766F,0x766C,INVALC,0x766D, /* Range 0x77DA - 0x77DC, array index: 0x0B92 */ 0x7D33,0x4679,0x5264, /* Range 0x77ED - 0x77EF, array index: 0x0B95 */ 0x607B,0x654E,0x744C, /* Range 0x792A - 0x792C, array index: 0x0B98 */ 0x797D,0x7A21,0x797E, /* Range 0x7946 - 0x7949, array index: 0x0B9B */ 0x5269,0x526C,0x526B,0x526A, /* Range 0x7955 - 0x7957, array index: 0x0B9F */ 0x5729,0x572D,0x5730, /* Range 0x795D - 0x7960, array index: 0x0BA2 */ 0x572F,0x572E,0x572C,0x572B, /* Range 0x798D - 0x798F, array index: 0x0BA6 */ 0x697E,0x697C,0x697D, /* Range 0x79B9 - 0x79C1, array index: 0x0BA9 */ 0x526D,0x526E,INVALC,INVALC,0x655D,0x467D,0x4B35,0x4B34, 0x4B33, /* Range 0x79E3 - 0x79E9, array index: 0x0BB2 */ 0x5733,0x5732,INVALC,0x5736,0x5734,INVALC,0x5737, /* Range 0x7A1C - 0x7A20, array index: 0x0BB9 */ 0x655E,INVALC,0x6563,0x6562,0x6560, /* Range 0x7A3B - 0x7A40, array index: 0x0BBE */ 0x6E2A,0x6E26,0x6E28,INVALC,0x6E25,0x6E27, /* Range 0x7A4B - 0x7A4E, array index: 0x0BC4 */ 0x715C,0x715B,0x7158,0x7159, /* Range 0x7A60 - 0x7A62, array index: 0x0BC8 */ 0x7674,0x7672,0x7673, /* Range 0x7A95 - 0x7A98, array index: 0x0BCB */ 0x5C45,0x6128,0x6127,0x6126, /* Range 0x7B4D - 0x7B56, array index: 0x0BCF */ 0x6131,INVALC,0x6133,0x612E,0x6134,0x612F,INVALC,0x6130, INVALC,0x612C, /* Range 0x7C3D - 0x7C40, array index: 0x0BD9 */ 0x785C,0x7859,0x785A,0x785E, /* Range 0x7C5F - 0x7C65, array index: 0x0BDD */ 0x7B6D,0x7B6C,INVALC,INVALC,0x7C3F,0x7C3E,0x7C40, /* Range 0x7CDC - 0x7CE2, array index: 0x0BE4 */ 0x745D,0x7462,0x745E,0x7460,0x745C,INVALC,0x745F, /* Range 0x7D02 - 0x7D0D, array index: 0x0BEB */ 0x5277,INVALC,0x527C,0x5278,0x527D,0x527B,INVALC,0x527A, 0x5742,0x5741,INVALC,0x574A, /* Range 0x7D17 - 0x7D22, array index: 0x0BF7 */ 0x5740,INVALC,0x574B,0x5748,0x574C,0x5749,INVALC,INVALC, INVALC,0x5743,0x573F,0x5744, /* Range 0x7D2E - 0x7D33, array index: 0x0C03 */ 0x5C54,0x5C5B,0x5C58,0x5C5E,0x5C5D,0x5C59, /* Range 0x7D40 - 0x7D46, array index: 0x0C09 */ 0x5C57,INVALC,0x5C5C,0x5C52,0x5C5A,INVALC,0x5C51, /* Range 0x7D6E - 0x7D73, array index: 0x0C10 */ 0x613C,INVALC,0x6141,0x5C53,0x613D,0x6142, /* Range 0x7DAC - 0x7DB5, array index: 0x0C16 */ 0x6A47,0x6A44,INVALC,INVALC,0x6A36,0x6A3E,0x6A3D,INVALC, 0x6A3C,0x6A42, /* Range 0x7DBA - 0x7DBF, array index: 0x0C20 */ 0x6A3F,0x6A35,INVALC,0x6A38,0x6A39,0x6A41, /* Range 0x7DD8 - 0x7DE0, array index: 0x0C26 */ 0x6E3B,0x6E44,0x6E40,INVALC,INVALC,0x6E3D,0x6E41,INVALC, 0x6E37, /* Range 0x7E08 - 0x7E0A, array index: 0x0C2F */ 0x716A,0x716F,0x7168, /* Range 0x7E2E - 0x7E48, array index: 0x0C32 */ 0x7463,0x7473,INVALC,0x746B,0x7467,INVALC,0x746E,0x7471, INVALC,0x7466,INVALC,0x746F,INVALC,INVALC,INVALC,0x746A, 0x7464,0x7472,INVALC,0x746D,INVALC,0x7468,INVALC,0x746C, 0x7465,INVALC,0x7470, /* Range 0x7E69 - 0x7E6D, array index: 0x0C4D */ 0x7862,0x7863,0x785F,INVALC,0x7860, /* Range 0x7F88 - 0x7F8E, array index: 0x0C52 */ 0x7C65,INVALC,0x4850,0x4F2E,0x4F2D,INVALC,0x5321, /* Range 0x7FDF - 0x7FE1, array index: 0x0C59 */ 0x6A4B,0x6A49,0x6A4A, /* Range 0x8000 - 0x8006, array index: 0x0C5C */ 0x7A2E,0x4852,INVALC,0x4853,0x5753,0x4F2F,0x5752, /* Range 0x800B - 0x8012, array index: 0x0C63 */ 0x6146,0x4854,0x5324,INVALC,INVALC,0x5323,0x5325,0x4855, /* Range 0x8015 - 0x8019, array index: 0x0C6B */ 0x5755,INVALC,0x5757,0x5754,0x5756, /* Range 0x806F - 0x8077, array index: 0x0C70 */ 0x747A,0x7479,0x7477,0x7478,0x747B,INVALC,INVALC,0x772B, 0x772A, /* Range 0x807D - 0x807F, array index: 0x0C79 */ 0x7B6F,0x7B6E,0x4857, /* Range 0x8084 - 0x808C, array index: 0x0C7C */ 0x657E,0x6148,0x657D,0x6A4E,INVALC,0x4858,INVALC,0x4859, 0x485A, /* Range 0x80A9 - 0x80AB, array index: 0x0C85 */ 0x4F36,0x4F38,0x4F35, /* Range 0x80DA - 0x80DE, array index: 0x0C88 */ 0x5329,0x532E,INVALC,0x5332,0x5330, /* Range 0x80ED - 0x80F4, array index: 0x0C8D */ 0x575E,INVALC,0x5767,0x575C,0x575A,INVALC,0x5762,0x575F, /* Range 0x8150 - 0x8155, array index: 0x0C95 */ 0x6A4F,0x614C,INVALC,0x6152,0x614A,0x6149, /* Range 0x8170 - 0x817A, array index: 0x0C9B */ 0x6622,0x6621,INVALC,0x6626,0x6153,INVALC,INVALC,INVALC, 0x6623,0x6628,0x6629, /* Range 0x8198 - 0x819D, array index: 0x0CA6 */ 0x6E51,INVALC,0x6E50,0x6E4C,0x6E4D,0x6E4E, /* Range 0x81BD - 0x81C3, array index: 0x0CAC */ 0x7524,0x7526,0x7523,0x7522,INVALC,0x7521,0x747D, /* Range 0x81FA - 0x8202, array index: 0x0CB3 */ 0x6A57,0x717A,0x485E,INVALC,0x4F3B,INVALC,0x576A,INVALC, 0x5C6F, /* Range 0x8205 - 0x820D, array index: 0x0CBC */ 0x662B,INVALC,0x6A58,0x717B,0x7528,0x772E,INVALC,0x485F, 0x4F3C, /* Range 0x821B - 0x821F, array index: 0x0CC5 */ 0x4860,0x6155,INVALC,0x6A5A,0x4861, /* Range 0x8228 - 0x822C, array index: 0x0CCA */ 0x576E,INVALC,0x576C,0x576D,0x576F, /* Range 0x8235 - 0x8239, array index: 0x0CCF */ 0x5C70,0x5C72,0x5C71,INVALC,0x5C73, /* Range 0x826E - 0x8272, array index: 0x0CD4 */ 0x4862,0x4B40,INVALC,0x7529,0x4863, /* Range 0x82AC - 0x82BE, array index: 0x0CD9 */ 0x4F45,0x4F40,INVALC,0x4F47,0x4F4A,0x4F44,INVALC,0x4F3D, INVALC,INVALC,INVALC,0x4F4C,0x4F48,0x4F43,INVALC,0x5770, INVALC,0x4F41,0x4F4B, /* Range 0x82D1 - 0x82D4, array index: 0x0CEC */ 0x5345,0x533F,0x5347,0x5344, /* Range 0x82DB - 0x82DF, array index: 0x0CF0 */ 0x5339,0x5343,INVALC,0x5346,0x5348, /* Range 0x82E3 - 0x82E7, array index: 0x0CF5 */ 0x5338,INVALC,0x533C,0x533A,0x5335, /* Range 0x8301 - 0x8306, array index: 0x0CFA */ 0x5342,0x533D,0x5336,0x533B,0x5337,0x534A, /* Range 0x8331 - 0x8339, array index: 0x0D00 */ 0x5822,0x577B,INVALC,0x5779,0x5778,0x577D,INVALC,0x5775, 0x577C, /* Range 0x83EF - 0x83F4, array index: 0x0D09 */ 0x615E,0x6163,0x615F,0x6167,INVALC,0x6160, /* Range 0x840A - 0x840E, array index: 0x0D0F */ 0x6162,0x615C,0x6164,0x6159,0x616A, /* Range 0x8469 - 0x846D, array index: 0x0D14 */ 0x663B,INVALC,0x6633,0x6635,0x663C, /* Range 0x84C9 - 0x84CB, array index: 0x0D19 */ 0x6A5C,0x6A6B,0x6A64, /* Range 0x8548 - 0x854A, array index: 0x0D1C */ 0x7222,0x7226,0x717E, /* Range 0x8568 - 0x856A, array index: 0x0D1F */ 0x7223,0x7224,0x7228, /* Range 0x85A6 - 0x85AA, array index: 0x0D22 */ 0x7535,INVALC,0x7533,0x7730,0x752A, /* Range 0x85F7 - 0x85FB, array index: 0x0D27 */ 0x7870,INVALC,0x7A32,0x7A34,0x7A31, /* Range 0x865B - 0x865F, array index: 0x0D2C */ 0x6170,0x663F,INVALC,0x663E,0x6640, /* Range 0x8679 - 0x867B, array index: 0x0D31 */ 0x534C,0x534E,0x534D, /* Range 0x8702 - 0x870A, array index: 0x0D34 */ 0x6648,0x6649,INVALC,INVALC,0x664A,0x6644,0x6643,INVALC, 0x664B, /* Range 0x881F - 0x8823, array index: 0x0D3D */ 0x7B27,INVALC,0x7B26,0x7B25,0x7B24, /* Range 0x8861 - 0x8863, array index: 0x0D42 */ 0x722F,0x7C68,0x4868, /* Range 0x895E - 0x8960, array index: 0x0D45 */ 0x7879,0x7877,0x7876, /* Range 0x8A0C - 0x8A18, array index: 0x0D48 */ 0x5837,INVALC,0x5836,0x583D,0x5835,0x583E,INVALC,0x583B, INVALC,0x5838,0x583C,0x583A,0x5834, /* Range 0x8A3A - 0x8A3E, array index: 0x0D55 */ 0x622C,0x6221,0x6225,INVALC,0x666B, /* Range 0x8A54 - 0x8A56, array index: 0x0D5A */ 0x6227,0x6223,0x622E, /* Range 0x8A68 - 0x8A73, array index: 0x0D5D */ 0x666C,0x665D,INVALC,0x6659,0x6668,0x6665,0x6667,INVALC, 0x665E,0x6663,0x665A,0x665B, /* Range 0x8AA0 - 0x8AAA, array index: 0x0D69 */ 0x6662,0x6B26,INVALC,0x6B24,0x6B28,0x6B2A,0x6B21,0x6B2F, 0x6B2B,INVALC,0x6B29, /* Range 0x8AF6 - 0x8B04, array index: 0x0D74 */ 0x7245,0x7242,0x6E7A,INVALC,0x7238,INVALC,0x7246,INVALC, 0x723F,INVALC,0x723B,0x7240,0x7241,INVALC,0x754E, /* Range 0x8B58 - 0x8B5C, array index: 0x0D83 */ 0x787C,0x7924,0x787E,INVALC,0x787B, /* Range 0x8C6A - 0x8C6D, array index: 0x0D88 */ 0x6B30,0x7247,0x6F29,0x7248, /* Range 0x8C89 - 0x8C8D, array index: 0x0D8C */ 0x666F,0x666E,INVALC,0x6B32,0x6B31, /* Range 0x8C9D - 0x8CA2, array index: 0x0D91 */ 0x4B4A,0x5356,INVALC,0x5357,0x5842,0x5843, /* Range 0x8CA7 - 0x8CAC, array index: 0x0D97 */ 0x5D4E,0x5D4C,0x5D49,0x5D4D,0x5D4B,0x5D4A, /* Range 0x8CB2 - 0x8CCA, array index: 0x0D9D */ 0x6674,0x6233,0x6238,INVALC,0x623A,0x6239,0x623C,INVALC, INVALC,0x6236,0x6232,0x6234,INVALC,0x623B,0x6237,0x6235, 0x6676,0x6675,0x6673,0x6677,INVALC,0x6671,0x6672,INVALC, 0x6670, /* Range 0x8CD1 - 0x8CD3, array index: 0x0DB6 */ 0x6B34,0x6B35,0x6B33, /* Range 0x8CDE - 0x8CE6, array index: 0x0DB9 */ 0x6F2B,INVALC,0x6F2A,0x6F34,0x6F30,0x6F31,0x6F2D,INVALC, 0x6F2C, /* Range 0x8CF8 - 0x8CFD, array index: 0x0DC2 */ 0x7556,INVALC,0x7553,0x7557,0x7555,0x7554, /* Range 0x8E1D - 0x8E22, array index: 0x0DC8 */ 0x6F3A,0x6F40,0x6F3E,INVALC,0x6F3F,0x6F3B, /* Range 0x8E48 - 0x8E4B, array index: 0x0DCE */ 0x755B,0x7559,0x755C,0x755A, /* Range 0x8E87 - 0x8E8D, array index: 0x0DD2 */ 0x7929,INVALC,0x7A46,0x7B2F,0x7B31,INVALC,0x7B30, /* Range 0x8EAA - 0x8EAC, array index: 0x0DD9 */ 0x7D3B,0x4B4E,0x5845, /* Range 0x8ECA - 0x8ECF, array index: 0x0DDC */ 0x4B4F,0x4F51,0x535C,0x535B,INVALC,0x5848, /* Range 0x8F12 - 0x8F15, array index: 0x0DE2 */ 0x6B3B,0x6B3D,0x6B3A,0x6B3C, /* Range 0x8F1B - 0x8F1F, array index: 0x0DE6 */ 0x6F43,0x6F48,0x6F42,0x6F49,0x6F44, /* Range 0x8FAD - 0x8FB2, array index: 0x0DEB */ 0x7930,0x7A29,0x7B33,0x4B51,0x5849,0x6729, /* Range 0x8FC2 - 0x8FC6, array index: 0x0DF1 */ 0x4B52,INVALC,0x4B55,0x4B54,0x4B53, /* Range 0x8FE2 - 0x8FED, array index: 0x0DF6 */ 0x535F,INVALC,0x5364,0x5361,0x535E,INVALC,0x5365,INVALC, 0x5360,0x5363,INVALC,0x5362, /* Range 0x9014 - 0x9023, array index: 0x0E02 */ 0x5D64,0x5D5D,0x5D62,0x5D58,INVALC,0x5D55,0x5D57,0x5D63, INVALC,0x5D5B,0x5D5E,0x5D5A,0x5D5F,INVALC,0x5D61,0x5D59, /* Range 0x904A - 0x9063, array index: 0x0E12 */ 0x672B,0x672A,INVALC,0x6735,0x6734,0x6733,0x6731,0x6736, INVALC,0x672C,0x672E,0x6730,INVALC,INVALC,0x6B40,0x6B43, INVALC,0x6B47,0x6B41,0x6B46,0x6B44,INVALC,0x6B3F,INVALC, 0x6B45,0x6B42, /* Range 0x9074 - 0x9091, array index: 0x0E2C */ 0x7258,0x7257,INVALC,0x6F4F,0x7259,INVALC,0x725C,INVALC, 0x725B,0x7563,INVALC,0x7562,0x7567,0x7565,0x7566,0x774E, 0x7564,INVALC,INVALC,0x774D,0x774F,INVALC,0x7931,0x7932, INVALC,INVALC,INVALC,0x7C4A,0x7C49,0x4B57, /* Range 0x9117 - 0x9119, array index: 0x0E4A */ 0x673A,0x6B49,0x6B48, /* Range 0x9148 - 0x914D, array index: 0x0E4D */ 0x7B7A,0x4B5C,0x536B,0x536A,0x585A,0x5859, /* Range 0x9174 - 0x9178, array index: 0x0E53 */ 0x6B4E,0x6B4B,INVALC,0x6B4D,0x6B4C, /* Range 0x91C5 - 0x91D1, array index: 0x0E58 */ 0x7D3C,0x4B5D,0x4F59,INVALC,0x673E,INVALC,0x7A4B,0x4B5E, 0x536C,0x5D69,0x6258,0x7752,0x4F5A, /* Range 0x91D7 - 0x91DD, array index: 0x0E65 */ 0x585D,0x585B,0x585F,INVALC,INVALC,0x585E,0x585C, /* Range 0x9237 - 0x9240, array index: 0x0E6C */ 0x673F,0x6741,0x674D,INVALC,INVALC,INVALC,0x6742,0x6744, 0x674E,0x6743, /* Range 0x9318 - 0x931A, array index: 0x0E76 */ 0x7573,0x726E,0x7268, /* Range 0x9320 - 0x9322, array index: 0x0E79 */ 0x725F,0x726B,0x7264, /* Range 0x9394 - 0x939A, array index: 0x0E7C */ 0x7753,INVALC,0x7755,0x775D,0x775B,INVALC,0x775C, /* Range 0x93D6 - 0x93D8, array index: 0x0E83 */ 0x793C,0x7941,0x793F, /* Range 0x947C - 0x947F, array index: 0x0E86 */ 0x7D3F,0x7D3D,0x7D3E,0x7D44, /* Range 0x958E - 0x9594, array index: 0x0E8A */ 0x6268,0x6263,INVALC,0x6265,0x6267,0x6266,0x6262, /* Range 0x95A1 - 0x95A9, array index: 0x0E91 */ 0x6B5B,INVALC,0x6B5E,0x6B60,0x6B5F,INVALC,INVALC,0x6B5C, 0x6B5D, /* Range 0x95C8 - 0x95CC, array index: 0x0E9A */ 0x757D,INVALC,0x757A,0x757B,0x757C, /* Range 0x95D4 - 0x95D6, array index: 0x0E9F */ 0x775E,0x7761,0x775F, /* Range 0x964B - 0x964D, array index: 0x0EA2 */ 0x536F,0x5370,0x5371, /* Range 0x965D - 0x9664, array index: 0x0EA5 */ 0x5865,0x5868,INVALC,INVALC,0x5863,0x5861,0x5862,0x5866, /* Range 0x9670 - 0x9678, array index: 0x0EAD */ 0x5D75,INVALC,0x6270,0x5D73,0x5D76,0x5D72,0x5D77,0x5D78, 0x5D74, /* Range 0x9684 - 0x9686, array index: 0x0EB6 */ 0x6271,0x626D,0x626E, /* Range 0x968A - 0x968E, array index: 0x0EB9 */ 0x6269,0x626B,INVALC,0x626F,0x626A, /* Range 0x9698 - 0x969C, array index: 0x0EBE */ 0x6751,0x6B61,INVALC,0x6B63,0x6B62, /* Range 0x96C0 - 0x96CD, array index: 0x0EC3 */ 0x5D7A,0x6272,INVALC,INVALC,0x6274,0x6273,0x6275,0x6276, INVALC,0x6756,0x6757,0x6755,0x6B64,0x6754, /* Range 0x96E8 - 0x96EA, array index: 0x0ED1 */ 0x4F64,0x5D7C,0x5D7B, /* Range 0x970D - 0x9713, array index: 0x0ED4 */ 0x7277,0x7274,0x7279,INVALC,0x7275,INVALC,0x7278, /* Range 0x975E - 0x9762, array index: 0x0EDB */ 0x4F66,INVALC,0x6F6A,0x7948,0x5372, /* Range 0x97FF - 0x9813, array index: 0x0EE0 */ 0x7B40,INVALC,0x5377,0x5E21,0x5E22,INVALC,0x627A,0x627B, INVALC,0x627C,INVALC,0x6762,INVALC,0x6764,INVALC,INVALC, INVALC,0x675F,0x6760,0x6763,0x6761, /* Range 0x9837 - 0x983B, array index: 0x0EF5 */ 0x7323,0x7321,0x7325,INVALC,0x7322, /* Range 0x984C - 0x984F, array index: 0x0EFA */ 0x776E,0x776C,0x776F,0x776D, /* Range 0x986F - 0x9871, array index: 0x0EFE */ 0x7C4F,0x7C74,0x7D2D, /* Range 0x98FC - 0x98FE, array index: 0x0F01 */ 0x6765,0x6767,0x6768, /* Range 0x993D - 0x993F, array index: 0x0F04 */ 0x7774,0x7772,0x7773, /* Range 0x99AC - 0x99AE, array index: 0x0F07 */ 0x586B,0x6326,0x6325, /* Range 0x99D0 - 0x99D2, array index: 0x0F0A */ 0x6F77,0x6F7A,0x6F7C, /* Range 0x9ACF - 0x9AD8, array index: 0x0F0D */ 0x7B48,INVALC,0x7C56,0x7C28,0x7C54,0x7C55,INVALC,0x7D2F, INVALC,0x586D, /* Range 0x9AED - 0x9AEF, array index: 0x0F17 */ 0x7333,0x7021,0x7022, /* Range 0x9B41 - 0x9B45, array index: 0x0F1A */ 0x6B76,0x6B77,INVALC,0x7025,0x7024, /* Range 0x9B4D - 0x9B51, array index: 0x0F1F */ 0x777D,0x777C,0x777B,INVALC,0x7B4A, /* Range 0x9BAA - 0x9BAE, array index: 0x0F24 */ 0x762F,0x762E,INVALC,0x7630,0x762D, /* Range 0x9BC8 - 0x9BCA, array index: 0x0F29 */ 0x7823,0x7821,0x777E, /* Range 0x9ECC - 0x9ED1, array index: 0x0F2C */ 0x7D31,0x6328,0x702D,0x7634,INVALC,0x6329, /* Range 0x9EDB - 0x9EE0, array index: 0x0F32 */ 0x7638,0x7636,0x7637,0x7635,INVALC,0x7828, /* Range 0xFE30 - 0xFE44, array index: 0x0F38 */ 0x212B,0x2136,0x2138,INVALC,INVALC,0x2140,0x2141,0x2144, 0x2145,0x2148,0x2149,0x214C,0x214D,0x2150,0x2151,0x2154, 0x2155,0x2158,0x2159,0x215C,0x215D, /* Range 0xFE49 - 0xFE6B, array index: 0x0F4D */ 0x2227,0x2228,0x222B,0x222C,0x2229,0x222A,INVALC,0x212E, 0x212F,0x2130,INVALC,0x2132,0x2133,0x2134,0x2135,INVALC, 0x215E,0x215F,0x2160,0x2161,0x2162,0x2163,0x222D,0x222E, 0x222F,0x223F,0x2240,0x2241,0x2243,0x2242,INVALC,0x2262, 0x226C,0x226D,0x226E, /* Range 0xFF01 - 0xFF3C, array index: 0x0F70 */ 0x212A,INVALC,0x216C,0x2263,0x2268,0x216D,INVALC,0x213E, 0x213F,0x216E,0x2230,0x2122,0x2231,0x2125,0x225F,0x2421, 0x2422,0x2423,0x2424,0x2425,0x2426,0x2427,0x2428,0x2429, 0x242A,0x2128,0x2127,0x2236,0x2238,0x2237,0x2129,0x2269, 0x2441,0x2442,0x2443,0x2444,0x2445,0x2446,0x2447,0x2448, 0x2449,0x244A,0x244B,0x244C,0x244D,0x244E,0x244F,0x2450, 0x2451,0x2452,0x2453,0x2454,0x2455,0x2456,0x2457,0x2458, 0x2459,0x245A,INVALC,0x2260, /* Range 0xFF3F - 0xFF5D, array index: 0x0FAC */ 0x2225,INVALC,0x245B,0x245C,0x245D,0x245E,0x245F,0x2460, 0x2461,0x2462,0x2463,0x2464,0x2465,0x2466,0x2467,0x2468, 0x2469,0x246A,0x246B,0x246C,0x246D,0x246E,0x246F,0x2470, 0x2471,0x2472,0x2473,0x2474,0x2142,0x225E,0x2143, /* Unranged codes (381 codes) */ /* Array index: 0x0FCB */ 0x00A7,0x2170, /* Array index: 0x0FCB */ 0x00B0,0x2278, /* Array index: 0x0FCB */ 0x00B1,0x2234, /* Array index: 0x0FCB */ 0x00B7,0x2131, /* Array index: 0x0FCB */ 0x00D7,0x2232, /* Array index: 0x0FCB */ 0x00F7,0x2233, /* Array index: 0x0FCB */ 0x02D9,0x256C, /* Array index: 0x0FCB */ 0x2013,0x2139, /* Array index: 0x0FCB */ 0x2014,0x2137, /* Array index: 0x0FCB */ 0x2016,0x225D, /* Array index: 0x0FCB */ 0x2018,0x2164, /* Array index: 0x0FCB */ 0x2019,0x2165, /* Array index: 0x0FCB */ 0x201C,0x2166, /* Array index: 0x0FCB */ 0x201D,0x2167, /* Array index: 0x0FCB */ 0x2025,0x212D, /* Array index: 0x0FCB */ 0x2026,0x212C, /* Array index: 0x0FCB */ 0x2032,0x216A, /* Array index: 0x0FCB */ 0x2035,0x216B, /* Array index: 0x0FCB */ 0x203B,0x216F, /* Array index: 0x0FCB */ 0x203E,0x2223, /* Array index: 0x0FCB */ 0x2103,0x226A, /* Array index: 0x0FCB */ 0x2105,0x2222, /* Array index: 0x0FCB */ 0x2109,0x226B, /* Array index: 0x0FCB */ 0x2215,0x2261, /* Array index: 0x0FCB */ 0x221A,0x2235, /* Array index: 0x0FCB */ 0x222E,0x224E, /* Array index: 0x0FCB */ 0x2234,0x2250, /* Array index: 0x0FCB */ 0x2235,0x224F, /* Array index: 0x0FCB */ 0x223C,0x2244, /* Array index: 0x0FCB */ 0x2252,0x223D, /* Array index: 0x0FCB */ 0x2260,0x223B, /* Array index: 0x0FCB */ 0x2261,0x223E, /* Array index: 0x0FCB */ 0x2266,0x2239, /* Array index: 0x0FCB */ 0x2267,0x223A, /* Array index: 0x0FCB */ 0x22A5,0x2247, /* Array index: 0x0FCB */ 0x22BF,0x224A, /* Array index: 0x0FCB */ 0x2500,0x2339, /* Array index: 0x0FCB */ 0x2502,0x233A, /* Array index: 0x0FCB */ 0x250C,0x233C, /* Array index: 0x0FCB */ 0x2510,0x233D, /* Array index: 0x0FCB */ 0x2514,0x233E, /* Array index: 0x0FCB */ 0x2518,0x233F, /* Array index: 0x0FCB */ 0x251C,0x2337, /* Array index: 0x0FCB */ 0x2524,0x2336, /* Array index: 0x0FCB */ 0x252C,0x2335, /* Array index: 0x0FCB */ 0x2534,0x2334, /* Array index: 0x0FCB */ 0x253C,0x2333, /* Array index: 0x0FCB */ 0x2550,0x2344, /* Array index: 0x0FCB */ 0x255E,0x2345, /* Array index: 0x0FCB */ 0x2561,0x2347, /* Array index: 0x0FCB */ 0x256A,0x2346, /* Array index: 0x0FCB */ 0x2594,0x2338, /* Array index: 0x0FCB */ 0x2595,0x233B, /* Array index: 0x0FCB */ 0x25A0,0x217C, /* Array index: 0x0FCB */ 0x25A1,0x217B, /* Array index: 0x0FCB */ 0x25B2,0x2175, /* Array index: 0x0FCB */ 0x25B3,0x2174, /* Array index: 0x0FCB */ 0x25BC,0x217E, /* Array index: 0x0FCB */ 0x25BD,0x217D, /* Array index: 0x0FCB */ 0x25C6,0x217A, /* Array index: 0x0FCB */ 0x25C7,0x2179, /* Array index: 0x0FCB */ 0x25CB,0x2172, /* Array index: 0x0FCB */ 0x25CE,0x2176, /* Array index: 0x0FCB */ 0x25CF,0x2173, /* Array index: 0x0FCB */ 0x2605,0x2178, /* Array index: 0x0FCB */ 0x2606,0x2177, /* Array index: 0x0FCB */ 0x2609,0x2254, /* Array index: 0x0FCB */ 0x30FB,0x2126, /* Array index: 0x0FCB */ 0x32A3,0x2221, /* Array index: 0x0FCB */ 0x338E,0x2275, /* Array index: 0x0FCB */ 0x338F,0x2276, /* Array index: 0x0FCB */ 0x33A1,0x2274, /* Array index: 0x0FCB */ 0x33C4,0x2277, /* Array index: 0x0FCB */ 0x33CE,0x2273, /* Array index: 0x0FCB */ 0x33D1,0x224C, /* Array index: 0x0FCB */ 0x33D2,0x224B, /* Array index: 0x0FCB */ 0x33D5,0x226F, /* Array index: 0x0FCB */ 0x4E00,0x4421, /* Array index: 0x0FCB */ 0x4E01,0x4423, /* Array index: 0x0FCB */ 0x4E03,0x4424, /* Array index: 0x0FCB */ 0x4E1E,0x4722, /* Array index: 0x0FCB */ 0x4E1F,0x4723, /* Array index: 0x0FCB */ 0x4E26,0x4B64, /* Array index: 0x0FCB */ 0x4E2B,0x4439, /* Array index: 0x0FCB */ 0x4E2D,0x4463, /* Array index: 0x0FCB */ 0x4E30,0x4464, /* Array index: 0x0FCB */ 0x4E32,0x486B, /* Array index: 0x0FCB */ 0x4E38,0x443A, /* Array index: 0x0FCB */ 0x4E39,0x4465, /* Array index: 0x0FCB */ 0x4E3B,0x4564, /* Array index: 0x0FCB */ 0x4E43,0x4425, /* Array index: 0x0FCB */ 0x4E45,0x443C, /* Array index: 0x0FCB */ 0x4E48,0x443D, /* Array index: 0x0FCB */ 0x4E56,0x4B65, /* Array index: 0x0FCB */ 0x4E58,0x537D, /* Array index: 0x0FCB */ 0x4E59,0x4422, /* Array index: 0x0FCB */ 0x4E69,0x4726, /* Array index: 0x0FCB */ 0x4E73,0x4B66, /* Array index: 0x0FCB */ 0x4E7E,0x5871, /* Array index: 0x0FCB */ 0x4E82,0x632A, /* Array index: 0x0FCB */ 0x4E86,0x4427, /* Array index: 0x0FCB */ 0x4E88,0x4468, /* Array index: 0x0FCB */ 0x4E8B,0x4B67, /* Array index: 0x0FCB */ 0x4E8C,0x4428, /* Array index: 0x0FCB */ 0x4E8E,0x4440, /* Array index: 0x0FCB */ 0x4E99,0x4727, /* Array index: 0x0FCB */ 0x4E9B,0x4B68, /* Array index: 0x0FCB */ 0x4EB3,0x537E, /* Array index: 0x0FCB */ 0x4EBA,0x4429, /* Array index: 0x0FCB */ 0x4EDE,0x4571, /* Array index: 0x0FCB */ 0x4EDF,0x4623, /* Array index: 0x0FCB */ 0x4EF0,0x4737, /* Array index: 0x0FCB */ 0x4EF2,0x4734, /* Array index: 0x0FCB */ 0x4EF3,0x4738, /* Array index: 0x0FCB */ 0x4EF6,0x4735, /* Array index: 0x0FCB */ 0x4EFB,0x4736, /* Array index: 0x0FCB */ 0x4EFD,0x4739, /* Array index: 0x0FCB */ 0x4EFF,0x472B, /* Array index: 0x0FCB */ 0x4F01,0x473A, /* Array index: 0x0FCB */ 0x4F15,0x472F, /* Array index: 0x0FCB */ 0x4F19,0x472D, /* Array index: 0x0FCB */ 0x4F2F,0x4924, /* Array index: 0x0FCB */ 0x4F30,0x4875, /* Array index: 0x0FCB */ 0x4F34,0x4872, /* Array index: 0x0FCB */ 0x4F36,0x4926, /* Array index: 0x0FCB */ 0x4F38,0x487A, /* Array index: 0x0FCB */ 0x4F3A,0x4879, /* Array index: 0x0FCB */ 0x4F3C,0x487D, /* Array index: 0x0FCB */ 0x4F3D,0x4878, /* Array index: 0x0FCB */ 0x4F43,0x487B, /* Array index: 0x0FCB */ 0x4F63,0x4921, /* Array index: 0x0FCB */ 0x4F69,0x4B79, /* Array index: 0x0FCB */ 0x4F6C,0x4B71, /* Array index: 0x0FCB */ 0x4F6F,0x4B6C, /* Array index: 0x0FCB */ 0x4F70,0x4B76, /* Array index: 0x0FCB */ 0x4F73,0x4B6F, /* Array index: 0x0FCB */ 0x4F75,0x4B77, /* Array index: 0x0FCB */ 0x4F7A,0x4C21, /* Array index: 0x0FCB */ 0x4F7B,0x4B7A, /* Array index: 0x0FCB */ 0x4F7E,0x4B7C, /* Array index: 0x0FCB */ 0x4F7F,0x4B70, /* Array index: 0x0FCB */ 0x4F83,0x4B75, /* Array index: 0x0FCB */ 0x4F86,0x4B74, /* Array index: 0x0FCB */ 0x4F88,0x4B78, /* Array index: 0x0FCB */ 0x4F8B,0x4B73, /* Array index: 0x0FCB */ 0x4F8D,0x4B6E, /* Array index: 0x0FCB */ 0x4F8F,0x4B7D, /* Array index: 0x0FCB */ 0x4F91,0x4B7E, /* Array index: 0x0FCB */ 0x4F96,0x4B7B, /* Array index: 0x0FCB */ 0x4F9B,0x4B72, /* Array index: 0x0FCB */ 0x4F9D,0x4B6D, /* Array index: 0x0FCB */ 0x4FAE,0x4F78, /* Array index: 0x0FCB */ 0x4FAF,0x4F6C, /* Array index: 0x0FCB */ 0x4FBF,0x4F6D, /* Array index: 0x0FCB */ 0x4FCA,0x4F76, /* Array index: 0x0FCB */ 0x4FD7,0x4F77, /* Array index: 0x0FCB */ 0x4FD8,0x4F74, /* Array index: 0x0FCB */ 0x4FDA,0x4F7C, /* Array index: 0x0FCB */ 0x4FEE,0x543A, /* Array index: 0x0FCB */ 0x4FEF,0x5424, /* Array index: 0x0FCB */ 0x4FF1,0x5434, /* Array index: 0x0FCB */ 0x4FF3,0x5439, /* Array index: 0x0FCB */ 0x4FF8,0x5427, /* Array index: 0x0FCB */ 0x4FFA,0x5430, /* Array index: 0x0FCB */ 0x4FFE,0x543D, /* Array index: 0x0FCB */ 0x5000,0x5431, /* Array index: 0x0FCB */ 0x5006,0x542A, /* Array index: 0x0FCB */ 0x501F,0x542C, /* Array index: 0x0FCB */ 0x5021,0x5435, /* Array index: 0x0FCB */ 0x5023,0x5423, /* Array index: 0x0FCB */ 0x503C,0x542B, /* Array index: 0x0FCB */ 0x5043,0x5876, /* Array index: 0x0FCB */ 0x5047,0x5875, /* Array index: 0x0FCB */ 0x5049,0x5879, /* Array index: 0x0FCB */ 0x504C,0x5877, /* Array index: 0x0FCB */ 0x504E,0x587C, /* Array index: 0x0FCB */ 0x504F,0x5923, /* Array index: 0x0FCB */ 0x5055,0x587D, /* Array index: 0x0FCB */ 0x505A,0x5878, /* Array index: 0x0FCB */ 0x505C,0x5874, /* Array index: 0x0FCB */ 0x5065,0x587A, /* Array index: 0x0FCB */ 0x506D,0x5926, /* Array index: 0x0FCB */ 0x506F,0x5925, /* Array index: 0x0FCB */ 0x507A,0x5872, /* Array index: 0x0FCB */ 0x507D,0x5873, /* Array index: 0x0FCB */ 0x5080,0x5E2E, /* Array index: 0x0FCB */ 0x5085,0x5E2B, /* Array index: 0x0FCB */ 0x508D,0x5E2A, /* Array index: 0x0FCB */ 0x5091,0x5E2D, /* Array index: 0x0FCB */ 0x50A2,0x5E29, /* Array index: 0x0FCB */ 0x50AC,0x6331, /* Array index: 0x0FCB */ 0x50AD,0x632B, /* Array index: 0x0FCB */ 0x50AF,0x6334, /* Array index: 0x0FCB */ 0x50B2,0x632D, /* Array index: 0x0FCB */ 0x50B3,0x632E, /* Array index: 0x0FCB */ 0x50B5,0x632C, /* Array index: 0x0FCB */ 0x50B7,0x6332, /* Array index: 0x0FCB */ 0x50BB,0x6333, /* Array index: 0x0FCB */ 0x50BE,0x6330, /* Array index: 0x0FCB */ 0x50C5,0x632F, /* Array index: 0x0FCB */ 0x50C7,0x6335, /* Array index: 0x0FCB */ 0x50CE,0x677C, /* Array index: 0x0FCB */ 0x50CF,0x6779, /* Array index: 0x0FCB */ 0x50D1,0x677A, /* Array index: 0x0FCB */ 0x50D5,0x6778, /* Array index: 0x0FCB */ 0x50D6,0x6775, /* Array index: 0x0FCB */ 0x50DA,0x6777, /* Array index: 0x0FCB */ 0x50E5,0x6774, /* Array index: 0x0FCB */ 0x50E7,0x6772, /* Array index: 0x0FCB */ 0x50E9,0x677D, /* Array index: 0x0FCB */ 0x50ED,0x6776, /* Array index: 0x0FCB */ 0x50EE,0x6773, /* Array index: 0x0FCB */ 0x50F1,0x677B, /* Array index: 0x0FCB */ 0x50F5,0x6C23, /* Array index: 0x0FCB */ 0x50F9,0x6C24, /* Array index: 0x0FCB */ 0x50FB,0x6C22, /* Array index: 0x0FCB */ 0x5100,0x6C21, /* Array index: 0x0FCB */ 0x5102,0x6C25, /* Array index: 0x0FCB */ 0x5104,0x6B7E, /* Array index: 0x0FCB */ 0x5105,0x6C28, /* Array index: 0x0FCB */ 0x5108,0x6C26, /* Array index: 0x0FCB */ 0x5109,0x6C27, /* Array index: 0x0FCB */ 0x5110,0x7033, /* Array index: 0x0FCB */ 0x5112,0x7030, /* Array index: 0x0FCB */ 0x5114,0x7032, /* Array index: 0x0FCB */ 0x5115,0x7034, /* Array index: 0x0FCB */ 0x5118,0x7031, /* Array index: 0x0FCB */ 0x511F,0x7341, /* Array index: 0x0FCB */ 0x5121,0x7342, /* Array index: 0x0FCB */ 0x512A,0x7340, /* Array index: 0x0FCB */ 0x5132,0x7343, /* Array index: 0x0FCB */ 0x5133,0x782B, /* Array index: 0x0FCB */ 0x5137,0x7A62, /* Array index: 0x0FCB */ 0x5138,0x7A63, /* Array index: 0x0FCB */ 0x5152,0x4C23, /* Array index: 0x0FCB */ 0x5154,0x4C22, /* Array index: 0x0FCB */ 0x5155,0x4C24, /* Array index: 0x0FCB */ 0x5157,0x5022, /* Array index: 0x0FCB */ 0x5171,0x4741, /* Array index: 0x0FCB */ 0x517C,0x5440, /* Array index: 0x0FCB */ 0x5180,0x7035, /* Array index: 0x0FCB */ 0x5189,0x4574, /* Array index: 0x0FCB */ 0x518A,0x4575, /* Array index: 0x0FCB */ 0x518D,0x4742, /* Array index: 0x0FCB */ 0x5191,0x5024, /* Array index: 0x0FCB */ 0x5192,0x5023, /* Array index: 0x0FCB */ 0x5195,0x5928, /* Array index: 0x0FCB */ 0x5197,0x447D, /* Array index: 0x0FCB */ 0x51A0,0x5025, /* Array index: 0x0FCB */ 0x51A2,0x5443, /* Array index: 0x0FCB */ 0x51A4,0x5441, /* Array index: 0x0FCB */ 0x51A5,0x5442, /* Array index: 0x0FCB */ 0x51AA,0x7036, /* Array index: 0x0FCB */ 0x51AC,0x4576, /* Array index: 0x0FCB */ 0x51B0,0x4743, /* Array index: 0x0FCB */ 0x51B6,0x492F, /* Array index: 0x0FCB */ 0x51B7,0x4930, /* Array index: 0x0FCB */ 0x51BD,0x4C29, /* Array index: 0x0FCB */ 0x51C6,0x5446, /* Array index: 0x0FCB */ 0x51DC,0x6C29, /* Array index: 0x0FCB */ 0x51DD,0x7037, /* Array index: 0x0FCB */ 0x51E0,0x442D, /* Array index: 0x0FCB */ 0x51E1,0x443B, /* Array index: 0x0FCB */ 0x51F0,0x5929, /* Array index: 0x0FCB */ 0x51F1,0x5E33, /* Array index: 0x0FCB */ 0x51F3,0x6821, /* Array index: 0x0FCB */ 0x51FD,0x4C2A, /* Array index: 0x0FCB */ 0x5200,0x442E, /* Array index: 0x0FCB */ 0x5201,0x442F, /* Array index: 0x0FCB */ 0x5203,0x4443, /* Array index: 0x0FCB */ 0x520E,0x4747, /* Array index: 0x0FCB */ 0x5211,0x4745, /* Array index: 0x0FCB */ 0x5212,0x4746, /* Array index: 0x0FCB */ 0x5216,0x4748, /* Array index: 0x0FCB */ 0x5217,0x4744, /* Array index: 0x0FCB */ 0x521D,0x4F4F, /* Array index: 0x0FCB */ 0x522E,0x4C30, /* Array index: 0x0FCB */ 0x5230,0x4C2F, /* Array index: 0x0FCB */ 0x5241,0x4C32, /* Array index: 0x0FCB */ 0x5243,0x5027, /* Array index: 0x0FCB */ 0x5247,0x502C, /* Array index: 0x0FCB */ 0x5254,0x544A, /* Array index: 0x0FCB */ 0x5256,0x5448, /* Array index: 0x0FCB */ 0x5269,0x5E37, /* Array index: 0x0FCB */ 0x526A,0x592A, /* Array index: 0x0FCB */ 0x526F,0x592B, /* Array index: 0x0FCB */ 0x5272,0x5E34, /* Array index: 0x0FCB */ 0x5274,0x5E35, /* Array index: 0x0FCB */ 0x5275,0x5E36, /* Array index: 0x0FCB */ 0x5277,0x6337, /* Array index: 0x0FCB */ 0x527D,0x6338, /* Array index: 0x0FCB */ 0x527F,0x6336, /* Array index: 0x0FCB */ 0x5282,0x6823, /* Array index: 0x0FCB */ 0x5283,0x6822, /* Array index: 0x0FCB */ 0x528D,0x6C2D, /* Array index: 0x0FCB */ 0x5291,0x7038, /* Array index: 0x0FCB */ 0x5293,0x7039, /* Array index: 0x0FCB */ 0x529B,0x4430, /* Array index: 0x0FCB */ 0x529F,0x457C, /* Array index: 0x0FCB */ 0x52A0,0x457B, /* Array index: 0x0FCB */ 0x52A3,0x4749, /* Array index: 0x0FCB */ 0x52BB,0x4C34, /* Array index: 0x0FCB */ 0x52BE,0x4C33, /* Array index: 0x0FCB */ 0x52C1,0x5030, /* Array index: 0x0FCB */ 0x52C3,0x502F, /* Array index: 0x0FCB */ 0x52C7,0x502D, /* Array index: 0x0FCB */ 0x52C9,0x502E, /* Array index: 0x0FCB */ 0x52D2,0x592C, /* Array index: 0x0FCB */ 0x52F0,0x6C2F, /* Array index: 0x0FCB */ 0x52F3,0x703A, /* Array index: 0x0FCB */ 0x52F5,0x7344, /* Array index: 0x0FCB */ 0x52F8,0x7961, /* Array index: 0x0FCB */ 0x52FA,0x4444, /* Array index: 0x0FCB */ 0x52FB,0x4524, /* Array index: 0x0FCB */ 0x52FE,0x4525, /* Array index: 0x0FCB */ 0x52FF,0x4526, /* Array index: 0x0FCB */ 0x5305,0x457D, /* Array index: 0x0FCB */ 0x5306,0x457E, /* Array index: 0x0FCB */ 0x5308,0x474A, /* Array index: 0x0FCB */ 0x530D,0x5031, /* Array index: 0x0FCB */ 0x530F,0x5931, /* Array index: 0x0FCB */ 0x5310,0x5930, /* Array index: 0x0FCB */ 0x531D,0x4622, /* Array index: 0x0FCB */ 0x5320,0x474C, /* Array index: 0x0FCB */ 0x5321,0x474B, /* Array index: 0x0FCB */ 0x5323,0x493A, /* Array index: 0x0FCB */ 0x532A,0x544D, /* Array index: 0x0FCB */ 0x532F,0x633E, /* Array index: 0x0FCB */ 0x5331,0x6824, /* Array index: 0x0FCB */ 0x5339,0x4528, /* Array index: 0x0FCB */ 0x5357,0x5032, /* Array index: 0x0FCB */ 0x535A,0x5E3B, /* Array index: 0x0FCB */ 0x535C,0x4433, /* Array index: 0x0FCB */ 0x535E,0x452C, /* Array index: 0x0FCB */ 0x5360,0x4627, /* Array index: 0x0FCB */ 0x5361,0x4626, /* Array index: 0x0FCB */ 0x5366,0x4C39, /* Array index: 0x0FCB */ 0x537F,0x544E, /* Array index: 0x0FCB */ 0x5384,0x452D, /* Array index: 0x0FCB */ 0x539A,0x5034, /* Array index: 0x0FCB */ 0x539D,0x5450, /* Array index: 0x0FCB */ 0x539F,0x544F, /* Array index: 0x0FCB */ 0x53A5,0x5E3C, /* Array index: 0x0FCB */ 0x53AD,0x6825, /* Array index: 0x0FCB */ 0x53B2,0x6C30, /* Array index: 0x0FCB */ 0x53BB,0x462A, /* Array index: 0x0FCB */ 0x53C3,0x5936, /* Array index: 0x0FCB */ 0x53D4,0x4C3E, /* Array index: 0x0FCB */ 0x53D6,0x4C3D, /* Array index: 0x0FCB */ 0x53D7,0x4C3F, /* Array index: 0x0FCB */ 0x53DB,0x5035, /* Array index: 0x0FCB */ 0x53DF,0x5451, /* Array index: 0x0FCB */ 0x53F8,0x4633, /* Array index: 0x0FCB */ 0x53FB,0x463D, /* Array index: 0x0FCB */ 0x53FC,0x4632, /* Array index: 0x0FCB */ 0x5401,0x4754, /* Array index: 0x0FCB */ 0x5403,0x475A, /* Array index: 0x0FCB */ 0x5404,0x4756, /* Array index: 0x0FCB */ 0x5426,0x4941, /* Array index: 0x0FCB */ 0x5427,0x4943, /* Array index: 0x0FCB */ 0x5431,0x4955, /* Array index: 0x0FCB */ 0x5433,0x4946, /* Array index: 0x0FCB */ 0x5446,0x4944, /* Array index: 0x0FCB */ 0x5448,0x4947, /* Array index: 0x0FCB */ 0x544A,0x494B, /* Array index: 0x0FCB */ 0x544E,0x4942, /* Array index: 0x0FCB */ 0x5462,0x4C51, /* Array index: 0x0FCB */ 0x5468,0x4C52, /* Array index: 0x0FCB */ 0x5471,0x4C4D, /* Array index: 0x0FCB */ 0x5480,0x4C45, /* Array index: 0x0FCB */ 0x5484,0x4C48, /* Array index: 0x0FCB */ 0x5486,0x4C4A, /* Array index: 0x0FCB */ 0x548B,0x4C53, /* Array index: 0x0FCB */ 0x548C,0x4C4F, /* Array index: 0x0FCB */ 0x548E,0x4C55, /* Array index: 0x0FCB */ 0x5490,0x4C4C, /* Array index: 0x0FCB */ 0x5492,0x4C49, /* Array index: 0x0FCB */ 0x5495,0x4C44, /* Array index: 0x0FCB */ 0x5496,0x4C42, /* Array index: 0x0FCB */ 0x549A,0x4C50, /* Array index: 0x0FCB */ 0x54AF,0x5045, /* Array index: 0x0FCB */ 0x54B1,0x5047, /* Array index: 0x0FCB */ 0x54B3,0x503D, /* Array index: 0x0FCB */ 0x54B8,0x503B, /* Array index: 0x0FCB */ 0x54BB,0x5048, /* Array index: 0x0FCB */ 0x54CE,0x5039, /* Array index: 0x0FCB */ 0x54E1,0x545E, /* Array index: 0x0FCB */ 0x54F2,0x5458, /* Array index: 0x0FCB */ 0x54FA,0x545A, /* Array index: 0x0FCB */ 0x54FC,0x5456, /* Array index: 0x0FCB */ 0x54FD,0x5465, /* Array index: 0x0FCB */ 0x5501,0x5454, /* Array index: 0x0FCB */ 0x5506,0x5459, /* Array index: 0x0FCB */ 0x5507,0x5464, /* Array index: 0x0FCB */ 0x5509,0x545F, /* Array index: 0x0FCB */ 0x550F,0x5466, /* Array index: 0x0FCB */ 0x5510,0x5453, /* Array index: 0x0FCB */ 0x5514,0x545B, /* Array index: 0x0FCB */ 0x5527,0x5463, /* Array index: 0x0FCB */ 0x552C,0x5949, /* Array index: 0x0FCB */ 0x552E,0x5947, /* Array index: 0x0FCB */ 0x552F,0x5944, /* Array index: 0x0FCB */ 0x5531,0x5940, /* Array index: 0x0FCB */ 0x5533,0x594B, /* Array index: 0x0FCB */ 0x5537,0x5455, /* Array index: 0x0FCB */ 0x5538,0x5946, /* Array index: 0x0FCB */ 0x553E,0x5E4E, /* Array index: 0x0FCB */ 0x5541,0x594C, /* Array index: 0x0FCB */ 0x5543,0x593E, /* Array index: 0x0FCB */ 0x5544,0x593B, /* Array index: 0x0FCB */ 0x5546,0x5938, /* Array index: 0x0FCB */ 0x554A,0x593F, /* Array index: 0x0FCB */ 0x554F,0x5942, /* Array index: 0x0FCB */ 0x555C,0x5948, /* Array index: 0x0FCB */ 0x555E,0x593C, /* Array index: 0x0FCB */ 0x555F,0x5A76, /* Array index: 0x0FCB */ 0x5561,0x593D, /* Array index: 0x0FCB */ 0x5563,0x594A, /* Array index: 0x0FCB */ 0x5564,0x5945, /* Array index: 0x0FCB */ 0x5566,0x593A, /* Array index: 0x0FCB */ 0x556A,0x5939, /* Array index: 0x0FCB */ 0x557B,0x5E3D, /* Array index: 0x0FCB */ 0x557C,0x5E40, /* Array index: 0x0FCB */ 0x557E,0x5E54, /* Array index: 0x0FCB */ 0x5594,0x5E47, /* Array index: 0x0FCB */ 0x55A7,0x5E3F, /* Array index: 0x0FCB */ 0x55BB,0x5E51, /* Array index: 0x0FCB */ 0x55CE,0x6343, /* Array index: 0x0FCB */ 0x55D1,0x6346, /* Array index: 0x0FCB */ 0x55D3,0x6341, /* Array index: 0x0FCB */ 0x55DA,0x634A, /* Array index: 0x0FCB */ 0x55DC,0x6344, /* Array index: 0x0FCB */ 0x55DF,0x633F, /* Array index: 0x0FCB */ 0x55EF,0x6349, /* Array index: 0x0FCB */ 0x55F6,0x6835, /* Array index: 0x0FCB */ 0x55F7,0x6830, /* Array index: 0x0FCB */ 0x55FD,0x682A, /* Array index: 0x0FCB */ 0x55FE,0x6826, /* Array index: 0x0FCB */ 0x5600,0x6827, /* Array index: 0x0FCB */ 0x5606,0x682C, /* Array index: 0x0FCB */ 0x5608,0x6833, /* Array index: 0x0FCB */ 0x5609,0x682D, /* Array index: 0x0FCB */ 0x560D,0x682E, /* Array index: 0x0FCB */ 0x560E,0x682F, /* Array index: 0x0FCB */ 0x5610,0x6834, /* Array index: 0x0FCB */ 0x5614,0x682B, /* Array index: 0x0FCB */ 0x5616,0x6831, /* Array index: 0x0FCB */ 0x5617,0x6829, /* Array index: 0x0FCB */ 0x561B,0x6828, /* Array index: 0x0FCB */ 0x561F,0x6832, /* Array index: 0x0FCB */ 0x5629,0x6C37, /* Array index: 0x0FCB */ 0x5639,0x6C33, /* Array index: 0x0FCB */ 0x563B,0x6C32, /* Array index: 0x0FCB */ 0x563F,0x6C35, /* Array index: 0x0FCB */ 0x564E,0x6C39, /* Array index: 0x0FCB */ 0x5653,0x6C38, /* Array index: 0x0FCB */ 0x5657,0x6C3A, /* Array index: 0x0FCB */ 0x5659,0x703B, /* Array index: 0x0FCB */ 0x5662,0x7047, /* Array index: 0x0FCB */ 0x566F,0x7045, /* Array index: 0x0FCB */ 0x5671,0x7044, /* Array index: 0x0FCB */ 0x5674,0x6C3B, /* Array index: 0x0FCB */ 0x5676,0x7048, /* Array index: 0x0FCB */ 0x5678,0x7040, /* Array index: 0x0FCB */ 0x5679,0x703D, /* Array index: 0x0FCB */ 0x5680,0x7346, /* Array index: 0x0FCB */ 0x5685,0x7348, /* Array index: 0x0FCB */ 0x5687,0x7349, /* Array index: 0x0FCB */ 0x5695,0x763C, /* Array index: 0x0FCB */ 0x56A5,0x782C, /* Array index: 0x0FCB */ 0x56A8,0x782D, /* Array index: 0x0FCB */ 0x56AE,0x763D, /* Array index: 0x0FCB */ 0x56B4,0x7964, /* Array index: 0x0FCB */ 0x56B6,0x7963, /* Array index: 0x0FCB */ 0x56B7,0x7962, /* Array index: 0x0FCB */ 0x56BC,0x7965, /* Array index: 0x0FCB */ 0x56D1,0x7C5D, /* Array index: 0x0FCB */ 0x56E4,0x495B, /* Array index: 0x0FCB */ 0x56EA,0x4959, /* Array index: 0x0FCB */ 0x56EB,0x495C, /* Array index: 0x0FCB */ 0x56F0,0x495A, /* Array index: 0x0FCB */ 0x56FA,0x4C56, /* Array index: 0x0FCB */ 0x56FF,0x504C, /* Array index: 0x0FCB */ 0x5703,0x5467, /* Array index: 0x0FCB */ 0x5704,0x5468, /* Array index: 0x0FCB */ 0x5708,0x594E, /* Array index: 0x0FCB */ 0x5709,0x5950, /* Array index: 0x0FCB */ 0x570B,0x594F, /* Array index: 0x0FCB */ 0x570D,0x5E58, /* Array index: 0x0FCB */ 0x5712,0x6350, /* Array index: 0x0FCB */ 0x5713,0x6351, /* Array index: 0x0FCB */ 0x5716,0x6837, /* Array index: 0x0FCB */ 0x5718,0x6836, /* Array index: 0x0FCB */ 0x571F,0x4448, /* Array index: 0x0FCB */ 0x5728,0x4763, /* Array index: 0x0FCB */ 0x5729,0x4767, /* Array index: 0x0FCB */ 0x5733,0x4761, /* Array index: 0x0FCB */ 0x573B,0x4966, /* Array index: 0x0FCB */ 0x573E,0x4963, /* Array index: 0x0FCB */ 0x5740,0x495F, /* Array index: 0x0FCB */ 0x5747,0x4961, /* Array index: 0x0FCB */ 0x574A,0x495D, /* Array index: 0x0FCB */ 0x5761,0x4C5B, /* Array index: 0x0FCB */ 0x5764,0x4C5D, /* Array index: 0x0FCB */ 0x5766,0x4C5C, /* Array index: 0x0FCB */ 0x5769,0x4C5A, /* Array index: 0x0FCB */ 0x576A,0x4C59, /* Array index: 0x0FCB */ 0x5777,0x4C58, /* Array index: 0x0FCB */ 0x577C,0x4C5E, /* Array index: 0x0FCB */ 0x5782,0x504D, /* Array index: 0x0FCB */ 0x5783,0x4C57, /* Array index: 0x0FCB */ 0x578B,0x504E, /* Array index: 0x0FCB */ 0x5793,0x5054, /* Array index: 0x0FCB */ 0x57A0,0x504F, /* Array index: 0x0FCB */ 0x57A2,0x5051, /* Array index: 0x0FCB */ 0x57A3,0x5050, /* Array index: 0x0FCB */ 0x57AE,0x5053, /* Array index: 0x0FCB */ 0x57C2,0x5469, /* Array index: 0x0FCB */ 0x57C3,0x546C, /* Array index: 0x0FCB */ 0x57CB,0x546B, /* Array index: 0x0FCB */ 0x57CE,0x5052, /* Array index: 0x0FCB */ 0x57D4,0x546A, /* Array index: 0x0FCB */ 0x57DF,0x5951, /* Array index: 0x0FCB */ 0x57E0,0x5955, /* Array index: 0x0FCB */ 0x57E4,0x5956, /* Array index: 0x0FCB */ 0x57F7,0x595A, /* Array index: 0x0FCB */ 0x57F9,0x595B, /* Array index: 0x0FCB */ 0x57FA,0x5957, /* Array index: 0x0FCB */ 0x5802,0x5958, /* Array index: 0x0FCB */ 0x5805,0x5952, /* Array index: 0x0FCB */ 0x5806,0x5954, /* Array index: 0x0FCB */ 0x5809,0x546D, /* Array index: 0x0FCB */ 0x580A,0x5953, /* Array index: 0x0FCB */ 0x581D,0x5E60, /* Array index: 0x0FCB */ 0x5820,0x5E61, /* Array index: 0x0FCB */ 0x5821,0x5E5F, /* Array index: 0x0FCB */ 0x5824,0x5E5C, /* Array index: 0x0FCB */ 0x582A,0x5E5A, /* Array index: 0x0FCB */ 0x5851,0x6353, /* Array index: 0x0FCB */ 0x5852,0x635D, /* Array index: 0x0FCB */ 0x5854,0x6357, /* Array index: 0x0FCB */ 0x5857,0x6355, /* Array index: 0x0FCB */ 0x5858,0x6354, /* Array index: 0x0FCB */ 0x585A,0x6356, /* Array index: 0x0FCB */ 0x585E,0x6352, /* Array index: 0x0FCB */ 0x5862,0x635C, /* Array index: 0x0FCB */ 0x586B,0x6358, /* Array index: 0x0FCB */ 0x586D,0x635A, /* Array index: 0x0FCB */ 0x5875,0x6838, /* Array index: 0x0FCB */ 0x5879,0x683D, /* Array index: 0x0FCB */ 0x587D,0x683F, /* Array index: 0x0FCB */ 0x587E,0x6839, /* Array index: 0x0FCB */ 0x5880,0x6C3F, /* Array index: 0x0FCB */ 0x5883,0x683A, /* Array index: 0x0FCB */ 0x5885,0x683E, /* Array index: 0x0FCB */ 0x588A,0x683C, /* Array index: 0x0FCB */ 0x5893,0x683B, /* Array index: 0x0FCB */ 0x589C,0x6C43, /* Array index: 0x0FCB */ 0x589E,0x6C41, /* Array index: 0x0FCB */ 0x589F,0x6C40, /* Array index: 0x0FCB */ 0x58A6,0x6C46, /* Array index: 0x0FCB */ 0x58A8,0x702E, /* Array index: 0x0FCB */ 0x58A9,0x6C45, /* Array index: 0x0FCB */ 0x58AE,0x6C44, /* Array index: 0x0FCB */ 0x58B3,0x6C42, /* Array index: 0x0FCB */ 0x58BE,0x704A, /* Array index: 0x0FCB */ 0x58C1,0x7049, /* Array index: 0x0FCB */ 0x58C5,0x704C, /* Array index: 0x0FCB */ 0x58C7,0x704B, /* Array index: 0x0FCB */ 0x58CE,0x734E, /* Array index: 0x0FCB */ 0x58D1,0x734D, /* Array index: 0x0FCB */ 0x58D3,0x734C, /* Array index: 0x0FCB */ 0x58D5,0x734B, /* Array index: 0x0FCB */ 0x58D8,0x763F, /* Array index: 0x0FCB */ 0x58D9,0x763E, /* Array index: 0x0FCB */ 0x58DE,0x782E, /* Array index: 0x0FCB */ 0x58DF,0x782F, /* Array index: 0x0FCB */ 0x58E2,0x7830, /* Array index: 0x0FCB */ 0x58E4,0x7966, /* Array index: 0x0FCB */ 0x58E9,0x7C5E, /* Array index: 0x0FCB */ 0x58EB,0x4449, /* Array index: 0x0FCB */ 0x58EC,0x4531, /* Array index: 0x0FCB */ 0x58EF,0x4967, /* Array index: 0x0FCB */ 0x58F9,0x5E62, /* Array index: 0x0FCB */ 0x58FA,0x5E63, /* Array index: 0x0FCB */ 0x58FD,0x6840, /* Array index: 0x0FCB */ 0x590F,0x546E, /* Array index: 0x0FCB */ 0x5920,0x595C, /* Array index: 0x0FCB */ 0x5922,0x6842, /* Array index: 0x0FCB */ 0x5924,0x6843, /* Array index: 0x0FCB */ 0x5925,0x6841, /* Array index: 0x0FCB */ 0x5931,0x4642, /* Array index: 0x0FCB */ 0x5937,0x476A, /* Array index: 0x0FCB */ 0x5938,0x476B, /* Array index: 0x0FCB */ 0x593E,0x4968, /* Array index: 0x0FCB */ 0x5944,0x4C63, /* Array index: 0x0FCB */ 0x5960,0x5E64, /* Array index: 0x0FCB */ 0x5962,0x595D, /* Array index: 0x0FCB */ 0x5967,0x635F, /* Array index: 0x0FCB */ 0x5969,0x6845, /* Array index: 0x0FCB */ 0x596A,0x6844, /* Array index: 0x0FCB */ 0x596D,0x6C47, /* Array index: 0x0FCB */ 0x596E,0x704D, /* Array index: 0x0FCB */ 0x5973,0x444C, /* Array index: 0x0FCB */ 0x5974,0x4643, /* Array index: 0x0FCB */ 0x5976,0x4644, /* Array index: 0x0FCB */ 0x5978,0x476D, /* Array index: 0x0FCB */ 0x5979,0x4770, /* Array index: 0x0FCB */ 0x597D,0x476F, /* Array index: 0x0FCB */ 0x598A,0x4973, /* Array index: 0x0FCB */ 0x598D,0x4970, /* Array index: 0x0FCB */ 0x5992,0x496A, /* Array index: 0x0FCB */ 0x5993,0x4972, /* Array index: 0x0FCB */ 0x5996,0x496F, /* Array index: 0x0FCB */ 0x5999,0x496E, /* Array index: 0x0FCB */ 0x599D,0x4969, /* Array index: 0x0FCB */ 0x599E,0x496C, /* Array index: 0x0FCB */ 0x59A8,0x496B, /* Array index: 0x0FCB */ 0x59AE,0x4C69, /* Array index: 0x0FCB */ 0x59AF,0x4C71, /* Array index: 0x0FCB */ 0x59B3,0x4C72, /* Array index: 0x0FCB */ 0x59B9,0x4C68, /* Array index: 0x0FCB */ 0x59BB,0x4C66, /* Array index: 0x0FCB */ 0x59BE,0x4C65, /* Array index: 0x0FCB */ 0x59C5,0x4C74, /* Array index: 0x0FCB */ 0x59C6,0x4C6B, /* Array index: 0x0FCB */ 0x59CA,0x4C70, /* Array index: 0x0FCB */ 0x59CB,0x4C6E, /* Array index: 0x0FCB */ 0x59CD,0x4C6D, /* Array index: 0x0FCB */ 0x59D8,0x505B, /* Array index: 0x0FCB */ 0x59DA,0x5062, /* Array index: 0x0FCB */ 0x59DC,0x505A, /* Array index: 0x0FCB */ 0x59E3,0x505D, /* Array index: 0x0FCB */ 0x59E5,0x5060, /* Array index: 0x0FCB */ 0x59E6,0x5063, /* Array index: 0x0FCB */ 0x59E8,0x505E, /* Array index: 0x0FCB */ 0x59EA,0x5061, /* Array index: 0x0FCB */ 0x59EC,0x5478, /* Array index: 0x0FCB */ 0x59FB,0x5065, /* Array index: 0x0FCB */ 0x59FF,0x505C, /* Array index: 0x0FCB */ 0x5A01,0x5064, /* Array index: 0x0FCB */ 0x5A03,0x505F, /* Array index: 0x0FCB */ 0x5A09,0x547E, /* Array index: 0x0FCB */ 0x5A0C,0x547D, /* Array index: 0x0FCB */ 0x5A11,0x5472, /* Array index: 0x0FCB */ 0x5A13,0x5477, /* Array index: 0x0FCB */ 0x5A18,0x5473, /* Array index: 0x0FCB */ 0x5A1B,0x5476, /* Array index: 0x0FCB */ 0x5A1C,0x5474, /* Array index: 0x0FCB */ 0x5A1F,0x5475, /* Array index: 0x0FCB */ 0x5A20,0x5479, /* Array index: 0x0FCB */ 0x5A23,0x547A, /* Array index: 0x0FCB */ 0x5A25,0x547C, /* Array index: 0x0FCB */ 0x5A29,0x547B, /* Array index: 0x0FCB */ 0x5A36,0x595E, /* Array index: 0x0FCB */ 0x5A3C,0x5964, /* Array index: 0x0FCB */ 0x5A40,0x5963, /* Array index: 0x0FCB */ 0x5A41,0x595F, /* Array index: 0x0FCB */ 0x5A46,0x5967, /* Array index: 0x0FCB */ 0x5A49,0x5960, /* Array index: 0x0FCB */ 0x5A4A,0x5968, /* Array index: 0x0FCB */ 0x5A5A,0x5966, /* Array index: 0x0FCB */ 0x5A62,0x5965, /* Array index: 0x0FCB */ 0x5A66,0x5961, /* Array index: 0x0FCB */ 0x5A6A,0x5962, /* Array index: 0x0FCB */ 0x5A77,0x5E65, /* Array index: 0x0FCB */ 0x5A7F,0x5E67, /* Array index: 0x0FCB */ 0x5A92,0x5E68, /* Array index: 0x0FCB */ 0x5A9A,0x5E66, /* Array index: 0x0FCB */ 0x5A9B,0x5E69, /* Array index: 0x0FCB */ 0x5AA7,0x5E6A, /* Array index: 0x0FCB */ 0x5AB2,0x6368, /* Array index: 0x0FCB */ 0x5AB3,0x6366, /* Array index: 0x0FCB */ 0x5AC9,0x6361, /* Array index: 0x0FCB */ 0x5ACC,0x6362, /* Array index: 0x0FCB */ 0x5AE1,0x6846, /* Array index: 0x0FCB */ 0x5AE3,0x684C, /* Array index: 0x0FCB */ 0x5AE6,0x6847, /* Array index: 0x0FCB */ 0x5AE9,0x6848, /* Array index: 0x0FCB */ 0x5AF5,0x6C4B, /* Array index: 0x0FCB */ 0x5AFB,0x6C49, /* Array index: 0x0FCB */ 0x5B1D,0x704E, /* Array index: 0x0FCB */ 0x5B24,0x7351, /* Array index: 0x0FCB */ 0x5B2A,0x7350, /* Array index: 0x0FCB */ 0x5B30,0x734F, /* Array index: 0x0FCB */ 0x5B34,0x704F, /* Array index: 0x0FCB */ 0x5B38,0x7640, /* Array index: 0x0FCB */ 0x5B40,0x7967, /* Array index: 0x0FCB */ 0x5B43,0x7968, /* Array index: 0x0FCB */ 0x5B63,0x4C77, /* Array index: 0x0FCB */ 0x5B64,0x4C76, /* Array index: 0x0FCB */ 0x5B69,0x5066, /* Array index: 0x0FCB */ 0x5B6B,0x5521, /* Array index: 0x0FCB */ 0x5B70,0x5969, /* Array index: 0x0FCB */ 0x5B71,0x5E6C, /* Array index: 0x0FCB */ 0x5B73,0x5E6B, /* Array index: 0x0FCB */ 0x5B75,0x684D, /* Array index: 0x0FCB */ 0x5B78,0x7050, /* Array index: 0x0FCB */ 0x5B7A,0x7352, /* Array index: 0x0FCB */ 0x5B7D,0x7969, /* Array index: 0x0FCB */ 0x5B7F,0x7B5C, /* Array index: 0x0FCB */ 0x5B83,0x4646, /* Array index: 0x0FCB */ 0x5B8F,0x497B, /* Array index: 0x0FCB */ 0x5BAE,0x5527, /* Array index: 0x0FCB */ 0x5BB0,0x5523, /* Array index: 0x0FCB */ 0x5BBF,0x596E, /* Array index: 0x0FCB */ 0x5BCC,0x5E6E, /* Array index: 0x0FCB */ 0x5BD0,0x5E70, /* Array index: 0x0FCB */ 0x5BD2,0x5E6D, /* Array index: 0x0FCB */ 0x5BD3,0x5E6F, /* Array index: 0x0FCB */ 0x5BF5,0x7831, /* Array index: 0x0FCB */ 0x5BF6,0x796A, /* Array index: 0x0FCB */ 0x5BF8,0x4450, /* Array index: 0x0FCB */ 0x5BFA,0x4779, /* Array index: 0x0FCB */ 0x5C01,0x506C, /* Array index: 0x0FCB */ 0x5C04,0x552B, /* Array index: 0x0FCB */ 0x5C16,0x477A, /* Array index: 0x0FCB */ 0x5C1A,0x4C7E, /* Array index: 0x0FCB */ 0x5C22,0x4452, /* Array index: 0x0FCB */ 0x5C24,0x4538, /* Array index: 0x0FCB */ 0x5C2C,0x497C, /* Array index: 0x0FCB */ 0x5C31,0x5E73, /* Array index: 0x0FCB */ 0x5C45,0x4D22, /* Array index: 0x0FCB */ 0x5C46,0x4D23, /* Array index: 0x0FCB */ 0x5C48,0x4D21, /* Array index: 0x0FCB */ 0x5C55,0x552D, /* Array index: 0x0FCB */ 0x5C58,0x5522, /* Array index: 0x0FCB */ 0x5C5C,0x5974, /* Array index: 0x0FCB */ 0x5C5D,0x5975, /* Array index: 0x0FCB */ 0x5C60,0x5973, /* Array index: 0x0FCB */ 0x5C62,0x6858, /* Array index: 0x0FCB */ 0x5C64,0x6C52, /* Array index: 0x0FCB */ 0x5C65,0x6C53, /* Array index: 0x0FCB */ 0x5C68,0x7354, /* Array index: 0x0FCB */ 0x5C6C,0x7A68, /* Array index: 0x0FCB */ 0x5C6F,0x453A, /* Array index: 0x0FCB */ 0x5C71,0x4454, /* Array index: 0x0FCB */ 0x5C79,0x477B, /* Array index: 0x0FCB */ 0x5C8C,0x4A26, /* Array index: 0x0FCB */ 0x5C90,0x4A23, /* Array index: 0x0FCB */ 0x5C91,0x4A24, /* Array index: 0x0FCB */ 0x5C94,0x4A25, /* Array index: 0x0FCB */ 0x5CA1,0x4D25, /* Array index: 0x0FCB */ 0x5CA9,0x4D27, /* Array index: 0x0FCB */ 0x5CAB,0x4D28, /* Array index: 0x0FCB */ 0x5CB1,0x4D29, /* Array index: 0x0FCB */ 0x5CB3,0x4D2A, /* Array index: 0x0FCB */ 0x5CB7,0x4D24, /* Array index: 0x0FCB */ 0x5CB8,0x4D26, /* Array index: 0x0FCB */ 0x5CD2,0x5072, /* Array index: 0x0FCB */ 0x5CD9,0x5071, /* Array index: 0x0FCB */ 0x5CE8,0x5533, /* Array index: 0x0FCB */ 0x5CEA,0x5532, /* Array index: 0x0FCB */ 0x5CED,0x552F, /* Array index: 0x0FCB */ 0x5CF0,0x5534, /* Array index: 0x0FCB */ 0x5CF4,0x5537, /* Array index: 0x0FCB */ 0x5CF6,0x5535, /* Array index: 0x0FCB */ 0x5CFB,0x5531, /* Array index: 0x0FCB */ 0x5CFD,0x5530, /* Array index: 0x0FCB */ 0x5D01,0x5536, /* Array index: 0x0FCB */ 0x5D06,0x5977, /* Array index: 0x0FCB */ 0x5D07,0x5976, /* Array index: 0x0FCB */ 0x5D0E,0x5978, /* Array index: 0x0FCB */ 0x5D11,0x597C, /* Array index: 0x0FCB */ 0x5D14,0x597E, /* Array index: 0x0FCB */ 0x5D16,0x597A, /* Array index: 0x0FCB */ 0x5D17,0x5A24, /* Array index: 0x0FCB */ 0x5D19,0x5A21, /* Array index: 0x0FCB */ 0x5D1B,0x5979, /* Array index: 0x0FCB */ 0x5D22,0x597B, /* Array index: 0x0FCB */ 0x5D24,0x5A22, /* Array index: 0x0FCB */ 0x5D27,0x5A23, /* Array index: 0x0FCB */ 0x5D29,0x597D, /* Array index: 0x0FCB */ 0x5D34,0x5E76, /* Array index: 0x0FCB */ 0x5D47,0x5E77, /* Array index: 0x0FCB */ 0x5D4C,0x5E74, /* Array index: 0x0FCB */ 0x5D50,0x5E75, /* Array index: 0x0FCB */ 0x5D69,0x6369, /* Array index: 0x0FCB */ 0x5D6F,0x636A, /* Array index: 0x0FCB */ 0x5D84,0x6859, /* Array index: 0x0FCB */ 0x5D87,0x685A, /* Array index: 0x0FCB */ 0x5D94,0x6C55, /* Array index: 0x0FCB */ 0x5D9D,0x6C54, /* Array index: 0x0FCB */ 0x5DB8,0x7358, /* Array index: 0x0FCB */ 0x5DBA,0x7356, /* Array index: 0x0FCB */ 0x5DBC,0x7355, /* Array index: 0x0FCB */ 0x5DBD,0x7357, /* Array index: 0x0FCB */ 0x5DC9,0x796B, /* Array index: 0x0FCB */ 0x5DCD,0x7A69, /* Array index: 0x0FCB */ 0x5DD2,0x7B5E, /* Array index: 0x0FCB */ 0x5DD4,0x7B5D, /* Array index: 0x0FCB */ 0x5DD6,0x7C35, /* Array index: 0x0FCB */ 0x5DDD,0x4455, /* Array index: 0x0FCB */ 0x5DDE,0x477C, /* Array index: 0x0FCB */ 0x5DEB,0x4A27, /* Array index: 0x0FCB */ 0x5DEE,0x5538, /* Array index: 0x0FCB */ 0x5DF7,0x5073, /* Array index: 0x0FCB */ 0x5DFD,0x5E78, /* Array index: 0x0FCB */ 0x5DFE,0x445A, /* Array index: 0x0FCB */ 0x5E02,0x464B, /* Array index: 0x0FCB */ 0x5E03,0x464C, /* Array index: 0x0FCB */ 0x5E06,0x477D, /* Array index: 0x0FCB */ 0x5E0C,0x4A28, /* Array index: 0x0FCB */ 0x5E11,0x4D30, /* Array index: 0x0FCB */ 0x5E15,0x4D2E, /* Array index: 0x0FCB */ 0x5E16,0x4D2D, /* Array index: 0x0FCB */ 0x5E18,0x4D2B, /* Array index: 0x0FCB */ 0x5E1A,0x4D2C, /* Array index: 0x0FCB */ 0x5E1B,0x4D2F, /* Array index: 0x0FCB */ 0x5E1D,0x5074, /* Array index: 0x0FCB */ 0x5E1F,0x5076, /* Array index: 0x0FCB */ 0x5E25,0x5075, /* Array index: 0x0FCB */ 0x5E2B,0x553A, /* Array index: 0x0FCB */ 0x5E2D,0x5539, /* Array index: 0x0FCB */ 0x5E33,0x5A28, /* Array index: 0x0FCB */ 0x5E3D,0x5E7A, /* Array index: 0x0FCB */ 0x5E40,0x5E7B, /* Array index: 0x0FCB */ 0x5E43,0x5E7C, /* Array index: 0x0FCB */ 0x5E45,0x5E79, /* Array index: 0x0FCB */ 0x5E4C,0x636B, /* Array index: 0x0FCB */ 0x5E54,0x685F, /* Array index: 0x0FCB */ 0x5E55,0x685D, /* Array index: 0x0FCB */ 0x5E57,0x685E, /* Array index: 0x0FCB */ 0x5E5B,0x685B, /* Array index: 0x0FCB */ 0x5E6B,0x7359, /* Array index: 0x0FCB */ 0x5E87,0x4A2A, /* Array index: 0x0FCB */ 0x5E8A,0x4A2B, /* Array index: 0x0FCB */ 0x5E8F,0x4A29, /* Array index: 0x0FCB */ 0x5E9A,0x4D32, /* Array index: 0x0FCB */ 0x5E9C,0x4D34, /* Array index: 0x0FCB */ 0x5EA0,0x5078, /* Array index: 0x0FCB */ 0x5EA6,0x5079, /* Array index: 0x0FCB */ 0x5EA7,0x553D, /* Array index: 0x0FCB */ 0x5EAB,0x553B, /* Array index: 0x0FCB */ 0x5EAD,0x553C, /* Array index: 0x0FCB */ 0x5EBE,0x5A2E, /* Array index: 0x0FCB */ 0x5EC1,0x5F21, /* Array index: 0x0FCB */ 0x5EC2,0x5F22, /* Array index: 0x0FCB */ 0x5EC4,0x5F23, /* Array index: 0x0FCB */ 0x5ED3,0x6860, /* Array index: 0x0FCB */ 0x5ED6,0x6861, /* Array index: 0x0FCB */ 0x5EDA,0x6C5A, /* Array index: 0x0FCB */ 0x5EDD,0x6C5C, /* Array index: 0x0FCB */ 0x5EEC,0x7833, /* Array index: 0x0FCB */ 0x5EF3,0x7D22, /* Array index: 0x0FCB */ 0x5EF6,0x4D37, /* Array index: 0x0FCB */ 0x5EF7,0x4A2C, /* Array index: 0x0FCB */ 0x5EFA,0x507A, /* Array index: 0x0FCB */ 0x5EFE,0x445C, /* Array index: 0x0FCB */ 0x5EFF,0x453D, /* Array index: 0x0FCB */ 0x5F01,0x464F, /* Array index: 0x0FCB */ 0x5F04,0x4A2D, /* Array index: 0x0FCB */ 0x5F08,0x507B, /* Array index: 0x0FCB */ 0x5F0A,0x6862, /* Array index: 0x0FCB */ 0x5F0B,0x445D, /* Array index: 0x0FCB */ 0x5F0F,0x4822, /* Array index: 0x0FCB */ 0x5F1B,0x4823, /* Array index: 0x0FCB */ 0x5F1F,0x4A2E, /* Array index: 0x0FCB */ 0x5F26,0x4D38, /* Array index: 0x0FCB */ 0x5F27,0x4D39, /* Array index: 0x0FCB */ 0x5F29,0x4D3A, /* Array index: 0x0FCB */ 0x5F2D,0x507C, /* Array index: 0x0FCB */ 0x5F31,0x553E, /* Array index: 0x0FCB */ 0x5F35,0x5A2F, /* Array index: 0x0FCB */ 0x5F37,0x5A30, /* Array index: 0x0FCB */ 0x5F3C,0x5F24, /* Array index: 0x0FCB */ 0x5F46,0x6863, /* Array index: 0x0FCB */ 0x5F48,0x6C5F, /* Array index: 0x0FCB */ 0x5F4A,0x7053, /* Array index: 0x0FCB */ 0x5F4C,0x735A, /* Array index: 0x0FCB */ 0x5F4E,0x7B5F, /* Array index: 0x0FCB */ 0x5F57,0x5A31, /* Array index: 0x0FCB */ 0x5F59,0x6370, /* Array index: 0x0FCB */ 0x5F5E,0x7641, /* Array index: 0x0FCB */ 0x5F62,0x4A30, /* Array index: 0x0FCB */ 0x5F64,0x4A2F, /* Array index: 0x0FCB */ 0x5F65,0x507D, /* Array index: 0x0FCB */ 0x5F77,0x4A31, /* Array index: 0x0FCB */ 0x5F79,0x4A32, /* Array index: 0x0FCB */ 0x5F7C,0x4D3E, /* Array index: 0x0FCB */ 0x5F9C,0x5A3B, /* Array index: 0x0FCB */ 0x5F9E,0x5A37, /* Array index: 0x0FCB */ 0x5FA0,0x5A3A, /* Array index: 0x0FCB */ 0x5FA1,0x5A39, /* Array index: 0x0FCB */ 0x5FB5,0x6C62, /* Array index: 0x0FCB */ 0x5FB7,0x6C61, /* Array index: 0x0FCB */ 0x5FB9,0x6865, /* Array index: 0x0FCB */ 0x5FBD,0x735B, /* Array index: 0x0FCB */ 0x5FC3,0x4540, /* Array index: 0x0FCB */ 0x5FC5,0x4652, /* Array index: 0x0FCB */ 0x5FCC,0x4A34, /* Array index: 0x0FCB */ 0x5FCD,0x4A36, /* Array index: 0x0FCB */ 0x5FDD,0x4D3F, /* Array index: 0x0FCB */ 0x5FE0,0x4D40, /* Array index: 0x0FCB */ 0x5FEA,0x4A3A, /* Array index: 0x0FCB */ 0x5FEB,0x4A38, /* Array index: 0x0FCB */ 0x5FF1,0x4A37, /* Array index: 0x0FCB */ 0x5FF5,0x4D42, /* Array index: 0x0FCB */ 0x5FF8,0x4A39, /* Array index: 0x0FCB */ 0x5FFD,0x4D41, /* Array index: 0x0FCB */ 0x5FFF,0x4D43, /* Array index: 0x0FCB */ 0x600E,0x512B, /* Array index: 0x0FCB */ 0x600F,0x4D44, /* Array index: 0x0FCB */ 0x601B,0x4D4F, /* Array index: 0x0FCB */ 0x601D,0x5128, /* Array index: 0x0FCB */ 0x6020,0x5129, /* Array index: 0x0FCB */ 0x6021,0x4D4B, /* Array index: 0x0FCB */ 0x602F,0x4D46, /* Array index: 0x0FCB */ 0x6035,0x4D47, /* Array index: 0x0FCB */ 0x6043,0x5132, /* Array index: 0x0FCB */ 0x6046,0x5131, /* Array index: 0x0FCB */ 0x604D,0x512D, /* Array index: 0x0FCB */ 0x6050,0x5545, /* Array index: 0x0FCB */ 0x6055,0x5546, /* Array index: 0x0FCB */ 0x6059,0x5542, /* Array index: 0x0FCB */ 0x607F,0x5A3C, /* Array index: 0x0FCB */ 0x6084,0x554A, /* Array index: 0x0FCB */ 0x6085,0x5550, /* Array index: 0x0FCB */ 0x6089,0x5A3E, /* Array index: 0x0FCB */ 0x608C,0x554F, /* Array index: 0x0FCB */ 0x608D,0x554D, /* Array index: 0x0FCB */ 0x6094,0x554E, /* Array index: 0x0FCB */ 0x6096,0x5551, /* Array index: 0x0FCB */ 0x609A,0x554C, /* Array index: 0x0FCB */ 0x609F,0x554B, /* Array index: 0x0FCB */ 0x60A0,0x5A3F, /* Array index: 0x0FCB */ 0x60A3,0x5A3D, /* Array index: 0x0FCB */ 0x60A8,0x5A40, /* Array index: 0x0FCB */ 0x60CB,0x5A41, /* Array index: 0x0FCB */ 0x60D1,0x5F29, /* Array index: 0x0FCB */ 0x60D5,0x5A4B, /* Array index: 0x0FCB */ 0x60D8,0x5A4A, /* Array index: 0x0FCB */ 0x60DA,0x5A4F, /* Array index: 0x0FCB */ 0x60DC,0x5A48, /* Array index: 0x0FCB */ 0x60E6,0x5A43, /* Array index: 0x0FCB */ 0x6100,0x5F3A, /* Array index: 0x0FCB */ 0x6101,0x637A, /* Array index: 0x0FCB */ 0x6106,0x6426, /* Array index: 0x0FCB */ 0x6108,0x637B, /* Array index: 0x0FCB */ 0x6109,0x5F39, /* Array index: 0x0FCB */ 0x6112,0x5F3B, /* Array index: 0x0FCB */ 0x6115,0x5F31, /* Array index: 0x0FCB */ 0x611F,0x6376, /* Array index: 0x0FCB */ 0x6123,0x5F2F, /* Array index: 0x0FCB */ 0x6127,0x6424, /* Array index: 0x0FCB */ 0x6134,0x6423, /* Array index: 0x0FCB */ 0x6137,0x6427, /* Array index: 0x0FCB */ 0x613E,0x6422, /* Array index: 0x0FCB */ 0x613F,0x6867, /* Array index: 0x0FCB */ 0x6144,0x637E, /* Array index: 0x0FCB */ 0x6155,0x6C67, /* Array index: 0x0FCB */ 0x6158,0x686E, /* Array index: 0x0FCB */ 0x615A,0x686D, /* Array index: 0x0FCB */ 0x615D,0x6C66, /* Array index: 0x0FCB */ 0x615F,0x686C, /* Array index: 0x0FCB */ 0x6162,0x686A, /* Array index: 0x0FCB */ 0x6163,0x686B, /* Array index: 0x0FCB */ 0x6167,0x6C64, /* Array index: 0x0FCB */ 0x6168,0x5F35, /* Array index: 0x0FCB */ 0x616B,0x6C6B, /* Array index: 0x0FCB */ 0x616E,0x6C65, /* Array index: 0x0FCB */ 0x6170,0x6C6A, /* Array index: 0x0FCB */ 0x617C,0x6C69, /* Array index: 0x0FCB */ 0x617E,0x6C6C, /* Array index: 0x0FCB */ 0x6182,0x6C68, /* Array index: 0x0FCB */ 0x618A,0x7057, /* Array index: 0x0FCB */ 0x618E,0x6C70, /* Array index: 0x0FCB */ 0x6190,0x6C6E, /* Array index: 0x0FCB */ 0x6191,0x7055, /* Array index: 0x0FCB */ 0x6194,0x6C74, /* Array index: 0x0FCB */ 0x619A,0x6C72, /* Array index: 0x0FCB */ 0x61A4,0x6C73, /* Array index: 0x0FCB */ 0x61A7,0x6C6D, /* Array index: 0x0FCB */ 0x61A9,0x7056, /* Array index: 0x0FCB */ 0x61AB,0x6C6F, /* Array index: 0x0FCB */ 0x61AC,0x6C71, /* Array index: 0x0FCB */ 0x61AE,0x6C75, /* Array index: 0x0FCB */ 0x61B2,0x7054, /* Array index: 0x0FCB */ 0x61B6,0x7059, /* Array index: 0x0FCB */ 0x61BE,0x705A, /* Array index: 0x0FCB */ 0x61C2,0x735D, /* Array index: 0x0FCB */ 0x61E3,0x7642, /* Array index: 0x0FCB */ 0x61E6,0x735F, /* Array index: 0x0FCB */ 0x61F2,0x7834, /* Array index: 0x0FCB */ 0x6208,0x4541, /* Array index: 0x0FCB */ 0x621A,0x5A51, /* Array index: 0x0FCB */ 0x621B,0x5A52, /* Array index: 0x0FCB */ 0x621F,0x5F3C, /* Array index: 0x0FCB */ 0x6221,0x6428, /* Array index: 0x0FCB */ 0x6222,0x6429, /* Array index: 0x0FCB */ 0x622A,0x6870, /* Array index: 0x0FCB */ 0x622E,0x6C76, /* Array index: 0x0FCB */ 0x6258,0x482C, /* Array index: 0x0FCB */ 0x625B,0x482B, /* Array index: 0x0FCB */ 0x6263,0x482A, /* Array index: 0x0FCB */ 0x6273,0x4A48, /* Array index: 0x0FCB */ 0x6276,0x4A41, /* Array index: 0x0FCB */ 0x6279,0x4A47, /* Array index: 0x0FCB */ 0x6284,0x4A3D, /* Array index: 0x0FCB */ 0x6286,0x4A50, /* Array index: 0x0FCB */ 0x6289,0x4A42, /* Array index: 0x0FCB */ 0x628A,0x4A44, /* Array index: 0x0FCB */ 0x62A8,0x4D63, /* Array index: 0x0FCB */ 0x62AB,0x4D5E, /* Array index: 0x0FCB */ 0x62AC,0x4D71, /* Array index: 0x0FCB */ 0x62B1,0x4D6C, /* Array index: 0x0FCB */ 0x62B5,0x4D6A, /* Array index: 0x0FCB */ 0x62B9,0x4D5B, /* Array index: 0x0FCB */ 0x62BC,0x4D65, /* Array index: 0x0FCB */ 0x62BD,0x4D64, /* Array index: 0x0FCB */ 0x62BF,0x4D59, /* Array index: 0x0FCB */ 0x62C2,0x4D5A, /* Array index: 0x0FCB */ 0x62F7,0x5142, /* Array index: 0x0FCB */ 0x6311,0x5147, /* Array index: 0x0FCB */ 0x6316,0x5139, /* Array index: 0x0FCB */ 0x6328,0x5563, /* Array index: 0x0FCB */ 0x632A,0x5561, /* Array index: 0x0FCB */ 0x632B,0x5562, /* Array index: 0x0FCB */ 0x632F,0x5558, /* Array index: 0x0FCB */ 0x633A,0x555E, /* Array index: 0x0FCB */ 0x633D,0x5560, /* Array index: 0x0FCB */ 0x633E,0x5557, /* Array index: 0x0FCB */ 0x6342,0x555A, /* Array index: 0x0FCB */ 0x6346,0x555B, /* Array index: 0x0FCB */ 0x6349,0x555D, /* Array index: 0x0FCB */ 0x6355,0x5559, /* Array index: 0x0FCB */ 0x6371,0x5A5E, /* Array index: 0x0FCB */ 0x6372,0x5A56, /* Array index: 0x0FCB */ 0x6376,0x5F4D, /* Array index: 0x0FCB */ 0x6377,0x5A5A, /* Array index: 0x0FCB */ 0x637A,0x5A70, /* Array index: 0x0FCB */ 0x637B,0x5A6D, /* Array index: 0x0FCB */ 0x6380,0x5A6C, /* Array index: 0x0FCB */ 0x6383,0x5A61, /* Array index: 0x0FCB */ 0x6384,0x5A65, /* Array index: 0x0FCB */ 0x6388,0x5A66, /* Array index: 0x0FCB */ 0x6389,0x5A60, /* Array index: 0x0FCB */ 0x638C,0x5F3F, /* Array index: 0x0FCB */ 0x638F,0x5A6B, /* Array index: 0x0FCB */ 0x6392,0x5A6A, /* Array index: 0x0FCB */ 0x6396,0x5A57, /* Array index: 0x0FCB */ 0x6398,0x5A5C, /* Array index: 0x0FCB */ 0x6399,0x5A67, /* Array index: 0x0FCB */ 0x639B,0x5A62, /* Array index: 0x0FCB */ 0x63C0,0x5F41, /* Array index: 0x0FCB */ 0x63C6,0x5F44, /* Array index: 0x0FCB */ 0x63C9,0x5F43, /* Array index: 0x0FCB */ 0x63CD,0x5F45, /* Array index: 0x0FCB */ 0x63CF,0x5F40, /* Array index: 0x0FCB */ 0x63D0,0x5F48, /* Array index: 0x0FCB */ 0x63D2,0x5F46, /* Array index: 0x0FCB */ 0x63D6,0x5F4A, /* Array index: 0x0FCB */ 0x63DA,0x5F52, /* Array index: 0x0FCB */ 0x63DB,0x5F50, /* Array index: 0x0FCB */ 0x63E1,0x5F49, /* Array index: 0x0FCB */ 0x63E3,0x5F47, /* Array index: 0x0FCB */ 0x63E9,0x5F42, /* Array index: 0x0FCB */ 0x63EA,0x5F4F, /* Array index: 0x0FCB */ 0x63ED,0x5F4B, /* Array index: 0x0FCB */ 0x63EE,0x5F4C, /* Array index: 0x0FCB */ 0x63F4,0x5F4E, /* Array index: 0x0FCB */ 0x63F9,0x5F53, /* Array index: 0x0FCB */ 0x6406,0x6438, /* Array index: 0x0FCB */ 0x640D,0x6434, /* Array index: 0x0FCB */ 0x640F,0x6431, /* Array index: 0x0FCB */ 0x641C,0x6432, /* Array index: 0x0FCB */ 0x641E,0x642C, /* Array index: 0x0FCB */ 0x642A,0x642D, /* Array index: 0x0FCB */ 0x642C,0x6430, /* Array index: 0x0FCB */ 0x642D,0x642E, /* Array index: 0x0FCB */ 0x6434,0x687A, /* Array index: 0x0FCB */ 0x6436,0x6435, /* Array index: 0x0FCB */ 0x643D,0x642F, /* Array index: 0x0FCB */ 0x643E,0x642B, /* Array index: 0x0FCB */ 0x6451,0x6878, /* Array index: 0x0FCB */ 0x6452,0x5F51, /* Array index: 0x0FCB */ 0x6454,0x6873, /* Array index: 0x0FCB */ 0x6458,0x6872, /* Array index: 0x0FCB */ 0x645F,0x6876, /* Array index: 0x0FCB */ 0x6467,0x6879, /* Array index: 0x0FCB */ 0x6469,0x6C77, /* Array index: 0x0FCB */ 0x646D,0x687B, /* Array index: 0x0FCB */ 0x646F,0x6C78, /* Array index: 0x0FCB */ 0x6487,0x6871, /* Array index: 0x0FCB */ 0x6488,0x6C7C, /* Array index: 0x0FCB */ 0x6490,0x6C7D, /* Array index: 0x0FCB */ 0x6492,0x6D25, /* Array index: 0x0FCB */ 0x6493,0x6D22, /* Array index: 0x0FCB */ 0x6495,0x6D23, /* Array index: 0x0FCB */ 0x6499,0x6D2B, /* Array index: 0x0FCB */ 0x649A,0x6D29, /* Array index: 0x0FCB */ 0x649E,0x6C7A, /* Array index: 0x0FCB */ 0x64A2,0x6D2C, /* Array index: 0x0FCB */ 0x64A4,0x6874, /* Array index: 0x0FCB */ 0x64A5,0x6D21, /* Array index: 0x0FCB */ 0x64D2,0x7069, /* Array index: 0x0FCB */ 0x64D4,0x706A, /* Array index: 0x0FCB */ 0x64D8,0x7365, /* Array index: 0x0FCB */ 0x64DA,0x7063, /* Array index: 0x0FCB */ 0x64E0,0x7366, /* Array index: 0x0FCB */ 0x64E2,0x736B, /* Array index: 0x0FCB */ 0x64E6,0x7368, /* Array index: 0x0FCB */ 0x64F7,0x764A, /* Array index: 0x0FCB */ 0x64FA,0x7648, /* Array index: 0x0FCB */ 0x64FB,0x7649, /* Array index: 0x0FCB */ 0x64FE,0x7646, /* Array index: 0x0FCB */ 0x6500,0x7838, /* Array index: 0x0FCB */ 0x6506,0x7647, /* Array index: 0x0FCB */ 0x650F,0x7839, /* Array index: 0x0FCB */ 0x6514,0x796F, /* Array index: 0x0FCB */ 0x6518,0x796E, /* Array index: 0x0FCB */ 0x6519,0x7970, /* Array index: 0x0FCB */ 0x651C,0x7A6D, /* Array index: 0x0FCB */ 0x651D,0x7A6C, /* Array index: 0x0FCB */ 0x6523,0x7C37, /* Array index: 0x0FCB */ 0x6524,0x7B61, /* Array index: 0x0FCB */ 0x652F,0x4545, /* Array index: 0x0FCB */ 0x6536,0x482D, /* Array index: 0x0FCB */ 0x6538,0x4A53, /* Array index: 0x0FCB */ 0x6539,0x4A51, /* Array index: 0x0FCB */ 0x653B,0x4A52, /* Array index: 0x0FCB */ 0x653E,0x4D73, /* Array index: 0x0FCB */ 0x653F,0x5149, /* Array index: 0x0FCB */ 0x6545,0x514A, /* Array index: 0x0FCB */ 0x6548,0x5566, /* Array index: 0x0FCB */ 0x6549,0x5567, /* Array index: 0x0FCB */ 0x654F,0x5A77, /* Array index: 0x0FCB */ 0x6551,0x5A73, /* Array index: 0x0FCB */ 0x655D,0x5A71, /* Array index: 0x0FCB */ 0x655E,0x5F54, /* Array index: 0x0FCB */ 0x6562,0x5F56, /* Array index: 0x0FCB */ 0x6563,0x5F57, /* Array index: 0x0FCB */ 0x6566,0x5F55, /* Array index: 0x0FCB */ 0x656C,0x6439, /* Array index: 0x0FCB */ 0x6572,0x687D, /* Array index: 0x0FCB */ 0x6582,0x736D, /* Array index: 0x0FCB */ 0x6583,0x736E, /* Array index: 0x0FCB */ 0x6587,0x4546, /* Array index: 0x0FCB */ 0x6590,0x5F59, /* Array index: 0x0FCB */ 0x6591,0x5F58, /* Array index: 0x0FCB */ 0x6595,0x7A6E, /* Array index: 0x0FCB */ 0x6597,0x4547, /* Array index: 0x0FCB */ 0x6599,0x5568, /* Array index: 0x0FCB */ 0x659B,0x5A7C, /* Array index: 0x0FCB */ 0x659C,0x5A7B, /* Array index: 0x0FCB */ 0x659F,0x643A, /* Array index: 0x0FCB */ 0x65A1,0x687E, /* Array index: 0x0FCB */ 0x65A4,0x4548, /* Array index: 0x0FCB */ 0x65A5,0x4658, /* Array index: 0x0FCB */ 0x65A7,0x4D74, /* Array index: 0x0FCB */ 0x65AB,0x514B, /* Array index: 0x0FCB */ 0x65AC,0x5A7D, /* Array index: 0x0FCB */ 0x65AF,0x5F5A, /* Array index: 0x0FCB */ 0x65B0,0x643B, /* Array index: 0x0FCB */ 0x65B7,0x764B, /* Array index: 0x0FCB */ 0x65B9,0x4549, /* Array index: 0x0FCB */ 0x65BC,0x4D75, /* Array index: 0x0FCB */ 0x65BD,0x514C, /* Array index: 0x0FCB */ 0x65C1,0x5569, /* Array index: 0x0FCB */ 0x65C5,0x556A, /* Array index: 0x0FCB */ 0x65D6,0x6922, /* Array index: 0x0FCB */ 0x65D7,0x6921, /* Array index: 0x0FCB */ 0x65E2,0x514D, /* Array index: 0x0FCB */ 0x65F1,0x4A54, /* Array index: 0x0FCB */ 0x65FA,0x4D76, /* Array index: 0x0FCB */ 0x6600,0x4D7D, /* Array index: 0x0FCB */ 0x6602,0x4D7B, /* Array index: 0x0FCB */ 0x6606,0x4D7A, /* Array index: 0x0FCB */ 0x6607,0x4E23, /* Array index: 0x0FCB */ 0x660A,0x4E22, /* Array index: 0x0FCB */ 0x660C,0x4D79, /* Array index: 0x0FCB */ 0x660E,0x4D7C, /* Array index: 0x0FCB */ 0x660F,0x4D7E, /* Array index: 0x0FCB */ 0x661F,0x5153, /* Array index: 0x0FCB */ 0x6620,0x5150, /* Array index: 0x0FCB */ 0x662D,0x514F, /* Array index: 0x0FCB */ 0x662F,0x5152, /* Array index: 0x0FCB */ 0x6631,0x5155, /* Array index: 0x0FCB */ 0x6649,0x556C, /* Array index: 0x0FCB */ 0x664C,0x5570, /* Array index: 0x0FCB */ 0x664F,0x556D, /* Array index: 0x0FCB */ 0x6652,0x556F, /* Array index: 0x0FCB */ 0x665A,0x5B25, /* Array index: 0x0FCB */ 0x665D,0x5B24, /* Array index: 0x0FCB */ 0x665E,0x5B29, /* Array index: 0x0FCB */ 0x6664,0x5B26, /* Array index: 0x0FCB */ 0x6666,0x5B28, /* Array index: 0x0FCB */ 0x6668,0x5B27, /* Array index: 0x0FCB */ 0x6674,0x5F5D, /* Array index: 0x0FCB */ 0x6676,0x5F5E, /* Array index: 0x0FCB */ 0x6677,0x5F63, /* Array index: 0x0FCB */ 0x667A,0x5F61, /* Array index: 0x0FCB */ 0x667E,0x5F62, /* Array index: 0x0FCB */ 0x6684,0x6441, /* Array index: 0x0FCB */ 0x668D,0x6443, /* Array index: 0x0FCB */ 0x6691,0x5F60, /* Array index: 0x0FCB */ 0x669D,0x6925, /* Array index: 0x0FCB */ 0x66A2,0x6923, /* Array index: 0x0FCB */ 0x66A8,0x6924, /* Array index: 0x0FCB */ 0x66AB,0x6D32, /* Array index: 0x0FCB */ 0x66AE,0x6D31, /* Array index: 0x0FCB */ 0x66B1,0x6D34, /* Array index: 0x0FCB */ 0x66B4,0x6D33, /* Array index: 0x0FCB */ 0x66B8,0x7072, /* Array index: 0x0FCB */ 0x66B9,0x706F, /* Array index: 0x0FCB */ 0x66C4,0x7070, /* Array index: 0x0FCB */ 0x66C6,0x706D, /* Array index: 0x0FCB */ 0x66C7,0x7071, /* Array index: 0x0FCB */ 0x66C9,0x706E, /* Array index: 0x0FCB */ 0x66D6,0x7370, /* Array index: 0x0FCB */ 0x66D9,0x736F, /* Array index: 0x0FCB */ 0x66DC,0x764C, /* Array index: 0x0FCB */ 0x66DD,0x783B, /* Array index: 0x0FCB */ 0x66E0,0x783A, /* Array index: 0x0FCB */ 0x66E6,0x7971, /* Array index: 0x0FCB */ 0x66E9,0x7A6F, /* Array index: 0x0FCB */ 0x66EC,0x7C3A, /* Array index: 0x0FCB */ 0x6703,0x6444, /* Array index: 0x0FCB */ 0x6708,0x454C, /* Array index: 0x0FCB */ 0x6709,0x4834, /* Array index: 0x0FCB */ 0x670B,0x4E25, /* Array index: 0x0FCB */ 0x670D,0x4E24, /* Array index: 0x0FCB */ 0x6714,0x5574, /* Array index: 0x0FCB */ 0x6715,0x5575, /* Array index: 0x0FCB */ 0x6717,0x5576, /* Array index: 0x0FCB */ 0x671B,0x5B2C, /* Array index: 0x0FCB */ 0x671D,0x5F67, /* Array index: 0x0FCB */ 0x671F,0x5F66, /* Array index: 0x0FCB */ 0x6731,0x4837, /* Array index: 0x0FCB */ 0x6734,0x4836, /* Array index: 0x0FCB */ 0x6735,0x4838, /* Array index: 0x0FCB */ 0x673D,0x4835, /* Array index: 0x0FCB */ 0x6746,0x4A5F, /* Array index: 0x0FCB */ 0x6749,0x4A5E, /* Array index: 0x0FCB */ 0x676A,0x4E3A, /* Array index: 0x0FCB */ 0x677C,0x4E39, /* Array index: 0x0FCB */ 0x677E,0x4E34, /* Array index: 0x0FCB */ 0x677F,0x4E32, /* Array index: 0x0FCB */ 0x6787,0x4E2D, /* Array index: 0x0FCB */ 0x6789,0x4E33, /* Array index: 0x0FCB */ 0x678B,0x4E27, /* Array index: 0x0FCB */ 0x6790,0x4E35, /* Array index: 0x0FCB */ 0x6793,0x4E38, /* Array index: 0x0FCB */ 0x6795,0x4E28, /* Array index: 0x0FCB */ 0x6797,0x4E2F, /* Array index: 0x0FCB */ 0x679A,0x4E37, /* Array index: 0x0FCB */ 0x679C,0x4E2A, /* Array index: 0x0FCB */ 0x679D,0x4E2E, /* Array index: 0x0FCB */ 0x67AF,0x515F, /* Array index: 0x0FCB */ 0x67B0,0x516C, /* Array index: 0x0FCB */ 0x67B4,0x5165, /* Array index: 0x0FCB */ 0x67B6,0x515E, /* Array index: 0x0FCB */ 0x67B8,0x5168, /* Array index: 0x0FCB */ 0x67C4,0x5163, /* Array index: 0x0FCB */ 0x67D9,0x516D, /* Array index: 0x0FCB */ 0x67DA,0x5166, /* Array index: 0x0FCB */ 0x67DD,0x516F, /* Array index: 0x0FCB */ 0x67DE,0x516A, /* Array index: 0x0FCB */ 0x67E2,0x516E, /* Array index: 0x0FCB */ 0x67E5,0x5167, /* Array index: 0x0FCB */ 0x67E9,0x5161, /* Array index: 0x0FCB */ 0x67EC,0x515D, /* Array index: 0x0FCB */ 0x67EF,0x5162, /* Array index: 0x0FCB */ 0x67FF,0x5158, /* Array index: 0x0FCB */ 0x6813,0x562E, /* Array index: 0x0FCB */ 0x6817,0x5623, /* Array index: 0x0FCB */ 0x6818,0x562F, /* Array index: 0x0FCB */ 0x6821,0x5577, /* Array index: 0x0FCB */ 0x6829,0x5621, /* Array index: 0x0FCB */ 0x682A,0x562C, /* Array index: 0x0FCB */ 0x6838,0x5578, /* Array index: 0x0FCB */ 0x6839,0x557C, /* Array index: 0x0FCB */ 0x684C,0x5624, /* Array index: 0x0FCB */ 0x6876,0x5B33, /* Array index: 0x0FCB */ 0x6893,0x5B30, /* Array index: 0x0FCB */ 0x6894,0x5B3D, /* Array index: 0x0FCB */ 0x6897,0x5B36, /* Array index: 0x0FCB */ 0x689D,0x5B3E, /* Array index: 0x0FCB */ 0x689F,0x5B40, /* Array index: 0x0FCB */ 0x68A1,0x5B41, /* Array index: 0x0FCB */ 0x68A2,0x5B2F, /* Array index: 0x0FCB */ 0x68A7,0x5B35, /* Array index: 0x0FCB */ 0x68A8,0x5B3F, /* Array index: 0x0FCB */ 0x68C4,0x5B39, /* Array index: 0x0FCB */ 0x68C9,0x5F7B, /* Array index: 0x0FCB */ 0x68CB,0x5F76, /* Array index: 0x0FCB */ 0x68CD,0x5F77, /* Array index: 0x0FCB */ 0x68D2,0x5F73, /* Array index: 0x0FCB */ 0x68D5,0x5F69, /* Array index: 0x0FCB */ 0x68D7,0x5F6C, /* Array index: 0x0FCB */ 0x68D8,0x5F6B, /* Array index: 0x0FCB */ 0x68DA,0x5F7C, /* Array index: 0x0FCB */ 0x68DF,0x5F6E, /* Array index: 0x0FCB */ 0x68E0,0x5F6A, /* Array index: 0x0FCB */ 0x68E3,0x5F75, /* Array index: 0x0FCB */ 0x68E7,0x5F71, /* Array index: 0x0FCB */ 0x68EE,0x5F70, /* Array index: 0x0FCB */ 0x68F2,0x5F74, /* Array index: 0x0FCB */ 0x68F5,0x5F6F, /* Array index: 0x0FCB */ 0x6905,0x5F6D, /* Array index: 0x0FCB */ 0x690D,0x5F78, /* Array index: 0x0FCB */ 0x690E,0x5F7A, /* Array index: 0x0FCB */ 0x6912,0x5F79, /* Array index: 0x0FCB */ 0x6930,0x644C, /* Array index: 0x0FCB */ 0x694A,0x644E, /* Array index: 0x0FCB */ 0x6953,0x6452, /* Array index: 0x0FCB */ 0x6954,0x644A, /* Array index: 0x0FCB */ 0x6963,0x6456, /* Array index: 0x0FCB */ 0x6968,0x644F, /* Array index: 0x0FCB */ 0x696B,0x6450, /* Array index: 0x0FCB */ 0x696D,0x6446, /* Array index: 0x0FCB */ 0x696E,0x5F7D, /* Array index: 0x0FCB */ 0x6975,0x644B, /* Array index: 0x0FCB */ 0x6977,0x6448, /* Array index: 0x0FCB */ 0x6979,0x6453, /* Array index: 0x0FCB */ 0x6982,0x644D, /* Array index: 0x0FCB */ 0x6986,0x6454, /* Array index: 0x0FCB */ 0x6994,0x6445, /* Array index: 0x0FCB */ 0x6995,0x6928, /* Array index: 0x0FCB */ 0x699B,0x692D, /* Array index: 0x0FCB */ 0x699C,0x6926, /* Array index: 0x0FCB */ 0x69A3,0x6938, /* Array index: 0x0FCB */ 0x69A6,0x6936, /* Array index: 0x0FCB */ 0x69A8,0x6927, /* Array index: 0x0FCB */ 0x69AB,0x6930, /* Array index: 0x0FCB */ 0x69AD,0x6934, /* Array index: 0x0FCB */ 0x69AE,0x692A, /* Array index: 0x0FCB */ 0x69B4,0x6931, /* Array index: 0x0FCB */ 0x69B7,0x692E, /* Array index: 0x0FCB */ 0x69BB,0x692F, /* Array index: 0x0FCB */ 0x69C1,0x6929, /* Array index: 0x0FCB */ 0x69C3,0x6937, /* Array index: 0x0FCB */ 0x69D0,0x6932, /* Array index: 0x0FCB */ 0x69D3,0x692B, /* Array index: 0x0FCB */ 0x69E8,0x6D37, /* Array index: 0x0FCB */ 0x69ED,0x6D42, /* Array index: 0x0FCB */ 0x69F3,0x6D3F, /* Array index: 0x0FCB */ 0x69FD,0x6D3B, /* Array index: 0x0FCB */ 0x6A01,0x6D38, /* Array index: 0x0FCB */ 0x6A02,0x6D40, /* Array index: 0x0FCB */ 0x6A05,0x6D41, /* Array index: 0x0FCB */ 0x6A0A,0x6D3E, /* Array index: 0x0FCB */ 0x6A11,0x6D43, /* Array index: 0x0FCB */ 0x6A13,0x6D3D, /* Array index: 0x0FCB */ 0x6A19,0x6D3A, /* Array index: 0x0FCB */ 0x6A1E,0x6D39, /* Array index: 0x0FCB */ 0x6A1F,0x6D36, /* Array index: 0x0FCB */ 0x6A21,0x6D3C, /* Array index: 0x0FCB */ 0x6A23,0x6D35, /* Array index: 0x0FCB */ 0x6A35,0x7121, /* Array index: 0x0FCB */ 0x6A3D,0x7073, /* Array index: 0x0FCB */ 0x6A44,0x707A, /* Array index: 0x0FCB */ 0x6A47,0x707E, /* Array index: 0x0FCB */ 0x6A48,0x7123, /* Array index: 0x0FCB */ 0x6A4B,0x707D, /* Array index: 0x0FCB */ 0x6A58,0x7078, /* Array index: 0x0FCB */ 0x6A59,0x7076, /* Array index: 0x0FCB */ 0x6A5F,0x7122, /* Array index: 0x0FCB */ 0x6A61,0x707C, /* Array index: 0x0FCB */ 0x6A62,0x707B, /* Array index: 0x0FCB */ 0x6A6B,0x7077, /* Array index: 0x0FCB */ 0x6A7E,0x7378, /* Array index: 0x0FCB */ 0x6A80,0x7371, /* Array index: 0x0FCB */ 0x6A84,0x7373, /* Array index: 0x0FCB */ 0x6A90,0x737A, /* Array index: 0x0FCB */ 0x6A94,0x7372, /* Array index: 0x0FCB */ 0x6A97,0x7379, /* Array index: 0x0FCB */ 0x6A9C,0x7375, /* Array index: 0x0FCB */ 0x6AA0,0x737B, /* Array index: 0x0FCB */ 0x6AA2,0x7374, /* Array index: 0x0FCB */ 0x6AA3,0x7377, /* Array index: 0x0FCB */ 0x6AAC,0x764F, /* Array index: 0x0FCB */ 0x6AAE,0x7654, /* Array index: 0x0FCB */ 0x6AAF,0x7655, /* Array index: 0x0FCB */ 0x6AB3,0x764E, /* Array index: 0x0FCB */ 0x6AB8,0x7652, /* Array index: 0x0FCB */ 0x6ABB,0x7651, /* Array index: 0x0FCB */ 0x6AC2,0x7653, /* Array index: 0x0FCB */ 0x6AC3,0x7650, /* Array index: 0x0FCB */ 0x6AD3,0x783F, /* Array index: 0x0FCB */ 0x6ADA,0x783E, /* Array index: 0x0FCB */ 0x6ADB,0x7376, /* Array index: 0x0FCB */ 0x6ADD,0x783D, /* Array index: 0x0FCB */ 0x6AE5,0x783C, /* Array index: 0x0FCB */ 0x6AEC,0x7973, /* Array index: 0x0FCB */ 0x6AFA,0x7A72, /* Array index: 0x0FCB */ 0x6AFB,0x7A70, /* Array index: 0x0FCB */ 0x6B04,0x7A71, /* Array index: 0x0FCB */ 0x6B0A,0x7B62, /* Array index: 0x0FCB */ 0x6B10,0x7C3B, /* Array index: 0x0FCB */ 0x6B16,0x7D23, /* Array index: 0x0FCB */ 0x6B20,0x454E, /* Array index: 0x0FCB */ 0x6B21,0x4839, /* Array index: 0x0FCB */ 0x6B23,0x4E3C, /* Array index: 0x0FCB */ 0x6B32,0x5B43, /* Array index: 0x0FCB */ 0x6B3A,0x6022, /* Array index: 0x0FCB */ 0x6B3D,0x6023, /* Array index: 0x0FCB */ 0x6B3E,0x6021, /* Array index: 0x0FCB */ 0x6B47,0x6458, /* Array index: 0x0FCB */ 0x6B49,0x6939, /* Array index: 0x0FCB */ 0x6B4C,0x693A, /* Array index: 0x0FCB */ 0x6B4E,0x6D45, /* Array index: 0x0FCB */ 0x6B50,0x6D44, /* Array index: 0x0FCB */ 0x6B59,0x7124, /* Array index: 0x0FCB */ 0x6B5C,0x737C, /* Array index: 0x0FCB */ 0x6B6A,0x5171, /* Array index: 0x0FCB */ 0x6B72,0x6459, /* Array index: 0x0FCB */ 0x6B7F,0x4E3F, /* Array index: 0x0FCB */ 0x6B83,0x5172, /* Array index: 0x0FCB */ 0x6B86,0x5173, /* Array index: 0x0FCB */ 0x6B89,0x5632, /* Array index: 0x0FCB */ 0x6B8A,0x5631, /* Array index: 0x0FCB */ 0x6B96,0x6025, /* Array index: 0x0FCB */ 0x6B98,0x6024, /* Array index: 0x0FCB */ 0x6BA4,0x6D46, /* Array index: 0x0FCB */ 0x6BAE,0x737D, /* Array index: 0x0FCB */ 0x6BAF,0x7658, /* Array index: 0x0FCB */ 0x6BB2,0x7A73, /* Array index: 0x0FCB */ 0x6BB5,0x5174, /* Array index: 0x0FCB */ 0x6BB7,0x5633, /* Array index: 0x0FCB */ 0x6BBA,0x5B44, /* Array index: 0x0FCB */ 0x6BBC,0x6026, /* Array index: 0x0FCB */ 0x6BBF,0x645B, /* Array index: 0x0FCB */ 0x6BC0,0x645A, /* Array index: 0x0FCB */ 0x6BC5,0x6D47, /* Array index: 0x0FCB */ 0x6BC6,0x6D48, /* Array index: 0x0FCB */ 0x6BCB,0x4551, /* Array index: 0x0FCB */ 0x6BCD,0x4660, /* Array index: 0x0FCB */ 0x6BCF,0x4A64, /* Array index: 0x0FCB */ 0x6BD7,0x5176, /* Array index: 0x0FCB */ 0x6BDA,0x737E, /* Array index: 0x0FCB */ 0x6BDB,0x4553, /* Array index: 0x0FCB */ 0x6BEB,0x5B45, /* Array index: 0x0FCB */ 0x6BEC,0x5B46, /* Array index: 0x0FCB */ 0x6BEF,0x6027, /* Array index: 0x0FCB */ 0x6BFD,0x645D, /* Array index: 0x0FCB */ 0x6C05,0x7126, /* Array index: 0x0FCB */ 0x6C08,0x7421, /* Array index: 0x0FCB */ 0x6C16,0x483C, /* Array index: 0x0FCB */ 0x6C1B,0x4E41, /* Array index: 0x0FCB */ 0x6C1F,0x5177, /* Array index: 0x0FCB */ 0x6C33,0x693B, /* Array index: 0x0FCB */ 0x6C34,0x4555, /* Array index: 0x0FCB */ 0x6C38,0x4663, /* Array index: 0x0FCB */ 0x6C4D,0x4846, /* Array index: 0x0FCB */ 0x6C4E,0x4847, /* Array index: 0x0FCB */ 0x6C50,0x4842, /* Array index: 0x0FCB */ 0x6C55,0x4843, /* Array index: 0x0FCB */ 0x6C57,0x483E, /* Array index: 0x0FCB */ 0x6C59,0x483F, /* Array index: 0x0FCB */ 0x6C68,0x4A72, /* Array index: 0x0FCB */ 0x6C6A,0x4A6D, /* Array index: 0x0FCB */ 0x6C70,0x4A70, /* Array index: 0x0FCB */ 0x6C72,0x4A77, /* Array index: 0x0FCB */ 0x6C74,0x4A79, /* Array index: 0x0FCB */ 0x6C76,0x4A7B, /* Array index: 0x0FCB */ 0x6C7A,0x4A6E, /* Array index: 0x0FCB */ 0x6C90,0x4A6F, /* Array index: 0x0FCB */ 0x6C92,0x4A74, /* Array index: 0x0FCB */ 0x6C94,0x4A7D, /* Array index: 0x0FCB */ 0x6C96,0x4A73, /* Array index: 0x0FCB */ 0x6C98,0x4A7E, /* Array index: 0x0FCB */ 0x6C99,0x4A67, /* Array index: 0x0FCB */ 0x6C9B,0x4A6C, /* Array index: 0x0FCB */ 0x6CAB,0x4E4D, /* Array index: 0x0FCB */ 0x6CAC,0x4E5D, /* Array index: 0x0FCB */ 0x6CAE,0x4E54, /* Array index: 0x0FCB */ 0x6CB1,0x4E45, /* Array index: 0x0FCB */ 0x6CB3,0x4E48, /* Array index: 0x0FCB */ 0x6CC9,0x5178, /* Array index: 0x0FCB */ 0x6CCA,0x4E5C, /* Array index: 0x0FCB */ 0x6CCC,0x4E46, /* Array index: 0x0FCB */ 0x6CDB,0x4E5B, /* Array index: 0x0FCB */ 0x6CDC,0x4E5F, /* Array index: 0x0FCB */ 0x6CE8,0x4E43, /* Array index: 0x0FCB */ 0x6D0B,0x5179, /* Array index: 0x0FCB */ 0x6D0C,0x517E, /* Array index: 0x0FCB */ 0x6D0E,0x5230, /* Array index: 0x0FCB */ 0x6D17,0x5223, /* Array index: 0x0FCB */ 0x6D1B,0x5228, /* Array index: 0x0FCB */ 0x6D1E,0x5222, /* Array index: 0x0FCB */ 0x6D25,0x517D, /* Array index: 0x0FCB */ 0x6D2E,0x522E, /* Array index: 0x0FCB */ 0x6D31,0x5221, /* Array index: 0x0FCB */ 0x6D32,0x517A, /* Array index: 0x0FCB */ 0x6D41,0x517C, /* Array index: 0x0FCB */ 0x6D59,0x5641, /* Array index: 0x0FCB */ 0x6D5A,0x5646, /* Array index: 0x0FCB */ 0x6D65,0x564D, /* Array index: 0x0FCB */ 0x6D66,0x563E, /* Array index: 0x0FCB */ 0x6D69,0x5648, /* Array index: 0x0FCB */ 0x6D6A,0x563A, /* Array index: 0x0FCB */ 0x6D6C,0x5643, /* Array index: 0x0FCB */ 0x6D6E,0x5645, /* Array index: 0x0FCB */ 0x6D74,0x5647, /* Array index: 0x0FCB */ 0x6DAA,0x5B6A, /* Array index: 0x0FCB */ 0x6DAE,0x5B57, /* Array index: 0x0FCB */ 0x6DAF,0x5B55, /* Array index: 0x0FCB */ 0x6DB2,0x5B4C, /* Array index: 0x0FCB */ 0x6DB5,0x5B60, /* Array index: 0x0FCB */ 0x6DB8,0x5B5A, /* Array index: 0x0FCB */ 0x6DBC,0x5B49, /* Array index: 0x0FCB */ 0x6DBF,0x5B6C, /* Array index: 0x0FCB */ 0x6DCB,0x5B54, /* Array index: 0x0FCB */ 0x6DCC,0x5B4E, /* Array index: 0x0FCB */ 0x6DD1,0x5B56, /* Array index: 0x0FCB */ 0x6DD2,0x5B5E, /* Array index: 0x0FCB */ 0x6DDE,0x5B58, /* Array index: 0x0FCB */ 0x6DE1,0x5B4D, /* Array index: 0x0FCB */ 0x6DE4,0x5B4F, /* Array index: 0x0FCB */ 0x6DE6,0x5B6D, /* Array index: 0x0FCB */ 0x6DF1,0x5B65, /* Array index: 0x0FCB */ 0x6DF3,0x5B4A, /* Array index: 0x0FCB */ 0x6DF5,0x5B5C, /* Array index: 0x0FCB */ 0x6E05,0x5B52, /* Array index: 0x0FCB */ 0x6E2C,0x6041, /* Array index: 0x0FCB */ 0x6E2D,0x603B, /* Array index: 0x0FCB */ 0x6E2F,0x602B, /* Array index: 0x0FCB */ 0x6E32,0x602F, /* Array index: 0x0FCB */ 0x6E34,0x603E, /* Array index: 0x0FCB */ 0x6E38,0x602C, /* Array index: 0x0FCB */ 0x6E3A,0x6040, /* Array index: 0x0FCB */ 0x6E3E,0x6044, /* Array index: 0x0FCB */ 0x6E43,0x6042, /* Array index: 0x0FCB */ 0x6E44,0x604A, /* Array index: 0x0FCB */ 0x6E4A,0x6031, /* Array index: 0x0FCB */ 0x6E4D,0x603F, /* Array index: 0x0FCB */ 0x6E4E,0x6048, /* Array index: 0x0FCB */ 0x6E54,0x602D, /* Array index: 0x0FCB */ 0x6E56,0x6039, /* Array index: 0x0FCB */ 0x6E58,0x6037, /* Array index: 0x0FCB */ 0x6E5B,0x6036, /* Array index: 0x0FCB */ 0x6E5F,0x604D, /* Array index: 0x0FCB */ 0x6E63,0x6049, /* Array index: 0x0FCB */ 0x6E67,0x6030, /* Array index: 0x0FCB */ 0x6E69,0x604C, /* Array index: 0x0FCB */ 0x6E6E,0x603A, /* Array index: 0x0FCB */ 0x6E6F,0x603D, /* Array index: 0x0FCB */ 0x6E72,0x604B, /* Array index: 0x0FCB */ 0x6E89,0x6046, /* Array index: 0x0FCB */ 0x6E90,0x6463, /* Array index: 0x0FCB */ 0x6E96,0x646D, /* Array index: 0x0FCB */ 0x6E98,0x6468, /* Array index: 0x0FCB */ 0x6E9C,0x646E, /* Array index: 0x0FCB */ 0x6E9D,0x6464, /* Array index: 0x0FCB */ 0x6EA2,0x645E, /* Array index: 0x0FCB */ 0x6EA5,0x6467, /* Array index: 0x0FCB */ 0x6EA7,0x6472, /* Array index: 0x0FCB */ 0x6EAA,0x6471, /* Array index: 0x0FCB */ 0x6EAB,0x646B, /* Array index: 0x0FCB */ 0x6EAF,0x645F, /* Array index: 0x0FCB */ 0x6EB4,0x6473, /* Array index: 0x0FCB */ 0x6EB6,0x6461, /* Array index: 0x0FCB */ 0x6EBA,0x646A, /* Array index: 0x0FCB */ 0x6EBC,0x6469, /* Array index: 0x0FCB */ 0x6EC2,0x6462, /* Array index: 0x0FCB */ 0x6EC4,0x646F, /* Array index: 0x0FCB */ 0x6EC5,0x6466, /* Array index: 0x0FCB */ 0x6EC7,0x6465, /* Array index: 0x0FCB */ 0x6ECB,0x6045, /* Array index: 0x0FCB */ 0x6ECC,0x6957, /* Array index: 0x0FCB */ 0x6EEC,0x6954, /* Array index: 0x0FCB */ 0x6EEF,0x6949, /* Array index: 0x0FCB */ 0x6EF2,0x6956, /* Array index: 0x0FCB */ 0x6EF4,0x6940, /* Array index: 0x0FCB */ 0x6EF7,0x6958, /* Array index: 0x0FCB */ 0x6F06,0x694A, /* Array index: 0x0FCB */ 0x6F0F,0x6945, /* Array index: 0x0FCB */ 0x6F20,0x6943, /* Array index: 0x0FCB */ 0x6F22,0x6947, /* Array index: 0x0FCB */ 0x6F23,0x694E, /* Array index: 0x0FCB */ 0x6F38,0x694C, /* Array index: 0x0FCB */ 0x6F3E,0x6942, /* Array index: 0x0FCB */ 0x6F3F,0x6D49, /* Array index: 0x0FCB */ 0x6F51,0x6D4C, /* Array index: 0x0FCB */ 0x6F54,0x6D4E, /* Array index: 0x0FCB */ 0x6F58,0x6D59, /* Array index: 0x0FCB */ 0x6F5B,0x6D51, /* Array index: 0x0FCB */ 0x6F5F,0x6D5D, /* Array index: 0x0FCB */ 0x6F60,0x6D5C, /* Array index: 0x0FCB */ 0x6F64,0x6D57, /* Array index: 0x0FCB */ 0x6F66,0x6D4D, /* Array index: 0x0FCB */ 0x6F78,0x6D52, /* Array index: 0x0FCB */ 0x6F7A,0x6D55, /* Array index: 0x0FCB */ 0x6F7C,0x6D4A, /* Array index: 0x0FCB */ 0x6F80,0x742A, /* Array index: 0x0FCB */ 0x6F84,0x6D4B, /* Array index: 0x0FCB */ 0x6F86,0x6D4F, /* Array index: 0x0FCB */ 0x6F88,0x6952, /* Array index: 0x0FCB */ 0x6F8E,0x6D54, /* Array index: 0x0FCB */ 0x6F97,0x6D58, /* Array index: 0x0FCB */ 0x6FA0,0x7133, /* Array index: 0x0FCB */ 0x6FA1,0x7129, /* Array index: 0x0FCB */ 0x6FA4,0x712B, /* Array index: 0x0FCB */ 0x6FA6,0x7132, /* Array index: 0x0FCB */ 0x6FA7,0x712D, /* Array index: 0x0FCB */ 0x6FB1,0x7128, /* Array index: 0x0FCB */ 0x6FB3,0x712E, /* Array index: 0x0FCB */ 0x6FB4,0x7134, /* Array index: 0x0FCB */ 0x6FB6,0x7131, /* Array index: 0x0FCB */ 0x6FB9,0x7130, /* Array index: 0x0FCB */ 0x6FD5,0x742E, /* Array index: 0x0FCB */ 0x6FD8,0x7422, /* Array index: 0x0FCB */ 0x6FDB,0x7426, /* Array index: 0x0FCB */ 0x6FE4,0x7427, /* Array index: 0x0FCB */ 0x6FE9,0x742D, /* Array index: 0x0FCB */ 0x6FFA,0x765D, /* Array index: 0x0FCB */ 0x6FFE,0x765B, /* Array index: 0x0FCB */ 0x7006,0x765C, /* Array index: 0x0FCB */ 0x7009,0x7659, /* Array index: 0x0FCB */ 0x700B,0x765A, /* Array index: 0x0FCB */ 0x700F,0x765F, /* Array index: 0x0FCB */ 0x7011,0x765E, /* Array index: 0x0FCB */ 0x7015,0x7845, /* Array index: 0x0FCB */ 0x7018,0x7846, /* Array index: 0x0FCB */ 0x701A,0x7843, /* Array index: 0x0FCB */ 0x701B,0x7840, /* Array index: 0x0FCB */ 0x701D,0x7844, /* Array index: 0x0FCB */ 0x701F,0x7841, /* Array index: 0x0FCB */ 0x7028,0x7842, /* Array index: 0x0FCB */ 0x7030,0x7975, /* Array index: 0x0FCB */ 0x7032,0x7976, /* Array index: 0x0FCB */ 0x703E,0x7974, /* Array index: 0x0FCB */ 0x704C,0x7A74, /* Array index: 0x0FCB */ 0x7051,0x7B64, /* Array index: 0x0FCB */ 0x7058,0x7B65, /* Array index: 0x0FCB */ 0x705E,0x7C60, /* Array index: 0x0FCB */ 0x7063,0x7D24, /* Array index: 0x0FCB */ 0x7064,0x7D32, /* Array index: 0x0FCB */ 0x706B,0x4556, /* Array index: 0x0FCB */ 0x7070,0x4848, /* Array index: 0x0FCB */ 0x7076,0x4B22, /* Array index: 0x0FCB */ 0x7078,0x4B25, /* Array index: 0x0FCB */ 0x707C,0x4B23, /* Array index: 0x0FCB */ 0x707D,0x4B24, /* Array index: 0x0FCB */ 0x708A,0x4E65, /* Array index: 0x0FCB */ 0x708E,0x4E63, /* Array index: 0x0FCB */ 0x7092,0x4E64, /* Array index: 0x0FCB */ 0x7095,0x4E62, /* Array index: 0x0FCB */ 0x7099,0x4E66, /* Array index: 0x0FCB */ 0x70A4,0x523A, /* Array index: 0x0FCB */ 0x70B3,0x5234, /* Array index: 0x0FCB */ 0x70B8,0x5238, /* Array index: 0x0FCB */ 0x70BA,0x5233, /* Array index: 0x0FCB */ 0x70C8,0x5653, /* Array index: 0x0FCB */ 0x70CA,0x564F, /* Array index: 0x0FCB */ 0x70CF,0x5654, /* Array index: 0x0FCB */ 0x70D8,0x5650, /* Array index: 0x0FCB */ 0x70D9,0x5652, /* Array index: 0x0FCB */ 0x70E4,0x5651, /* Array index: 0x0FCB */ 0x70EF,0x5B72, /* Array index: 0x0FCB */ 0x70F9,0x5B6E, /* Array index: 0x0FCB */ 0x70FD,0x5B71, /* Array index: 0x0FCB */ 0x7109,0x5B6F, /* Array index: 0x0FCB */ 0x710A,0x5B70, /* Array index: 0x0FCB */ 0x7119,0x604E, /* Array index: 0x0FCB */ 0x711A,0x604F, /* Array index: 0x0FCB */ 0x711C,0x6055, /* Array index: 0x0FCB */ 0x7121,0x6052, /* Array index: 0x0FCB */ 0x7126,0x6050, /* Array index: 0x0FCB */ 0x7130,0x6051, /* Array index: 0x0FCB */ 0x7136,0x6053, /* Array index: 0x0FCB */ 0x7146,0x6522, /* Array index: 0x0FCB */ 0x7149,0x6478, /* Array index: 0x0FCB */ 0x714C,0x647D, /* Array index: 0x0FCB */ 0x714E,0x6474, /* Array index: 0x0FCB */ 0x7156,0x6524, /* Array index: 0x0FCB */ 0x7159,0x6475, /* Array index: 0x0FCB */ 0x715C,0x647A, /* Array index: 0x0FCB */ 0x715E,0x6521, /* Array index: 0x0FCB */ 0x716C,0x647B, /* Array index: 0x0FCB */ 0x716E,0x6054, /* Array index: 0x0FCB */ 0x717D,0x695B, /* Array index: 0x0FCB */ 0x7184,0x695D, /* Array index: 0x0FCB */ 0x718A,0x695C, /* Array index: 0x0FCB */ 0x7192,0x695E, /* Array index: 0x0FCB */ 0x7194,0x6959, /* Array index: 0x0FCB */ 0x7199,0x695A, /* Array index: 0x0FCB */ 0x719F,0x6D5E, /* Array index: 0x0FCB */ 0x71A8,0x6D61, /* Array index: 0x0FCB */ 0x71AC,0x6D5F, /* Array index: 0x0FCB */ 0x71B1,0x6D60, /* Array index: 0x0FCB */ 0x71B9,0x713B, /* Array index: 0x0FCB */ 0x71BE,0x7135, /* Array index: 0x0FCB */ 0x71C3,0x713F, /* Array index: 0x0FCB */ 0x71C4,0x7140, /* Array index: 0x0FCB */ 0x71C8,0x7139, /* Array index: 0x0FCB */ 0x71C9,0x7136, /* Array index: 0x0FCB */ 0x71CE,0x713C, /* Array index: 0x0FCB */ 0x71D0,0x7137, /* Array index: 0x0FCB */ 0x71D2,0x7138, /* Array index: 0x0FCB */ 0x71D5,0x713A, /* Array index: 0x0FCB */ 0x71D9,0x713D, /* Array index: 0x0FCB */ 0x71DC,0x713E, /* Array index: 0x0FCB */ 0x71DF,0x7432, /* Array index: 0x0FCB */ 0x71E0,0x7439, /* Array index: 0x0FCB */ 0x71F4,0x7438, /* Array index: 0x0FCB */ 0x71F8,0x7663, /* Array index: 0x0FCB */ 0x71FB,0x7660, /* Array index: 0x0FCB */ 0x71FC,0x7661, /* Array index: 0x0FCB */ 0x71FE,0x7662, /* Array index: 0x0FCB */ 0x7206,0x7847, /* Array index: 0x0FCB */ 0x720D,0x7848, /* Array index: 0x0FCB */ 0x7210,0x7977, /* Array index: 0x0FCB */ 0x721B,0x7A75, /* Array index: 0x0FCB */ 0x7228,0x7D46, /* Array index: 0x0FCB */ 0x722A,0x4557, /* Array index: 0x0FCB */ 0x722C,0x4E67, /* Array index: 0x0FCB */ 0x722D,0x4E68, /* Array index: 0x0FCB */ 0x7230,0x523B, /* Array index: 0x0FCB */ 0x724C,0x6056, /* Array index: 0x0FCB */ 0x7252,0x6526, /* Array index: 0x0FCB */ 0x7256,0x6D62, /* Array index: 0x0FCB */ 0x7258,0x7849, /* Array index: 0x0FCB */ 0x7259,0x455B, /* Array index: 0x0FCB */ 0x725B,0x455C, /* Array index: 0x0FCB */ 0x7267,0x4E6B, /* Array index: 0x0FCB */ 0x7269,0x4E6C, /* Array index: 0x0FCB */ 0x726F,0x523D, /* Array index: 0x0FCB */ 0x7272,0x523C, /* Array index: 0x0FCB */ 0x7274,0x523E, /* Array index: 0x0FCB */ 0x7279,0x5656, /* Array index: 0x0FCB */ 0x727D,0x5B74, /* Array index: 0x0FCB */ 0x7280,0x6058, /* Array index: 0x0FCB */ 0x7281,0x5B75, /* Array index: 0x0FCB */ 0x7284,0x6057, /* Array index: 0x0FCB */ 0x7292,0x6960, /* Array index: 0x0FCB */ 0x7296,0x6961, /* Array index: 0x0FCB */ 0x729B,0x6D63, /* Array index: 0x0FCB */ 0x72A2,0x784A, /* Array index: 0x0FCB */ 0x72A7,0x7A76, /* Array index: 0x0FCB */ 0x72AC,0x455D, /* Array index: 0x0FCB */ 0x72AF,0x4667, /* Array index: 0x0FCB */ 0x72C0,0x4E6D, /* Array index: 0x0FCB */ 0x72C2,0x4B2A, /* Array index: 0x0FCB */ 0x72C4,0x4B29, /* Array index: 0x0FCB */ 0x72CE,0x4E6E, /* Array index: 0x0FCB */ 0x72D0,0x4E71, /* Array index: 0x0FCB */ 0x72D7,0x4E70, /* Array index: 0x0FCB */ 0x72D9,0x4E6F, /* Array index: 0x0FCB */ 0x72E0,0x5240, /* Array index: 0x0FCB */ 0x72E1,0x5241, /* Array index: 0x0FCB */ 0x72E9,0x523F, /* Array index: 0x0FCB */ 0x7313,0x5B79, /* Array index: 0x0FCB */ 0x7316,0x5B78, /* Array index: 0x0FCB */ 0x7319,0x5B7A, /* Array index: 0x0FCB */ 0x731B,0x5B77, /* Array index: 0x0FCB */ 0x731C,0x5B76, /* Array index: 0x0FCB */ 0x7325,0x605A, /* Array index: 0x0FCB */ 0x7329,0x605C, /* Array index: 0x0FCB */ 0x7334,0x605B, /* Array index: 0x0FCB */ 0x7336,0x6059, /* Array index: 0x0FCB */ 0x7337,0x6527, /* Array index: 0x0FCB */ 0x733E,0x652A, /* Array index: 0x0FCB */ 0x733F,0x6529, /* Array index: 0x0FCB */ 0x7344,0x6962, /* Array index: 0x0FCB */ 0x7345,0x6528, /* Array index: 0x0FCB */ 0x734E,0x6D64, /* Array index: 0x0FCB */ 0x7350,0x6963, /* Array index: 0x0FCB */ 0x7357,0x6D65, /* Array index: 0x0FCB */ 0x7368,0x7141, /* Array index: 0x0FCB */ 0x7370,0x743C, /* Array index: 0x0FCB */ 0x7372,0x743D, /* Array index: 0x0FCB */ 0x7375,0x7665, /* Array index: 0x0FCB */ 0x7380,0x7B66, /* Array index: 0x0FCB */ 0x7384,0x4668, /* Array index: 0x0FCB */ 0x7386,0x565C, /* Array index: 0x0FCB */ 0x7387,0x5B7B, /* Array index: 0x0FCB */ 0x7389,0x4669, /* Array index: 0x0FCB */ 0x738B,0x455E, /* Array index: 0x0FCB */ 0x7396,0x4B2B, /* Array index: 0x0FCB */ 0x739F,0x4E74, /* Array index: 0x0FCB */ 0x73A5,0x4E76, /* Array index: 0x0FCB */ 0x73A8,0x4E73, /* Array index: 0x0FCB */ 0x73A9,0x4E72, /* Array index: 0x0FCB */ 0x73AB,0x4E75, /* Array index: 0x0FCB */ 0x73B2,0x5245, /* Array index: 0x0FCB */ 0x73B3,0x5248, /* Array index: 0x0FCB */ 0x73B7,0x5242, /* Array index: 0x0FCB */ 0x73BB,0x5244, /* Array index: 0x0FCB */ 0x73C0,0x5247, /* Array index: 0x0FCB */ 0x73CA,0x5243, /* Array index: 0x0FCB */ 0x73CD,0x5246, /* Array index: 0x0FCB */ 0x73DE,0x5662, /* Array index: 0x0FCB */ 0x73E0,0x5660, /* Array index: 0x0FCB */ 0x73EA,0x5661, /* Array index: 0x0FCB */ 0x73ED,0x565D, /* Array index: 0x0FCB */ 0x73EE,0x565F, /* Array index: 0x0FCB */ 0x73FE,0x5C22, /* Array index: 0x0FCB */ 0x7403,0x5B7E, /* Array index: 0x0FCB */ 0x7405,0x5B7C, /* Array index: 0x0FCB */ 0x7406,0x5C21, /* Array index: 0x0FCB */ 0x7409,0x565E, /* Array index: 0x0FCB */ 0x740A,0x5B7D, /* Array index: 0x0FCB */ 0x740D,0x5C23, /* Array index: 0x0FCB */ 0x741B,0x6066, /* Array index: 0x0FCB */ 0x7422,0x6060, /* Array index: 0x0FCB */ 0x7425,0x6061, /* Array index: 0x0FCB */ 0x7426,0x6067, /* Array index: 0x0FCB */ 0x7428,0x6068, /* Array index: 0x0FCB */ 0x742A,0x605E, /* Array index: 0x0FCB */ 0x742F,0x6065, /* Array index: 0x0FCB */ 0x743A,0x605D, /* Array index: 0x0FCB */ 0x743F,0x6531, /* Array index: 0x0FCB */ 0x7441,0x6530, /* Array index: 0x0FCB */ 0x7455,0x652D, /* Array index: 0x0FCB */ 0x7463,0x6965, /* Array index: 0x0FCB */ 0x7464,0x6964, /* Array index: 0x0FCB */ 0x7469,0x6D66, /* Array index: 0x0FCB */ 0x746A,0x6966, /* Array index: 0x0FCB */ 0x746D,0x6968, /* Array index: 0x0FCB */ 0x746F,0x652B, /* Array index: 0x0FCB */ 0x7470,0x6967, /* Array index: 0x0FCB */ 0x747E,0x6D69, /* Array index: 0x0FCB */ 0x7480,0x6D6A, /* Array index: 0x0FCB */ 0x7483,0x6D68, /* Array index: 0x0FCB */ 0x748B,0x6D67, /* Array index: 0x0FCB */ 0x7498,0x7144, /* Array index: 0x0FCB */ 0x749C,0x7142, /* Array index: 0x0FCB */ 0x749E,0x7146, /* Array index: 0x0FCB */ 0x749F,0x7145, /* Array index: 0x0FCB */ 0x74A3,0x7143, /* Array index: 0x0FCB */ 0x74B0,0x743F, /* Array index: 0x0FCB */ 0x74BD,0x784D, /* Array index: 0x0FCB */ 0x74BF,0x7667, /* Array index: 0x0FCB */ 0x74CA,0x784E, /* Array index: 0x0FCB */ 0x74CF,0x7979, /* Array index: 0x0FCB */ 0x74D4,0x7A78, /* Array index: 0x0FCB */ 0x74D6,0x7A77, /* Array index: 0x0FCB */ 0x74DA,0x7C3C, /* Array index: 0x0FCB */ 0x74DC,0x466A, /* Array index: 0x0FCB */ 0x74E9,0x2322, /* Array index: 0x0FCB */ 0x74F6,0x5C25, /* Array index: 0x0FCB */ 0x74F7,0x5C26, /* Array index: 0x0FCB */ 0x7504,0x6969, /* Array index: 0x0FCB */ 0x750C,0x7148, /* Array index: 0x0FCB */ 0x750D,0x7149, /* Array index: 0x0FCB */ 0x7515,0x7668, /* Array index: 0x0FCB */ 0x7518,0x466C, /* Array index: 0x0FCB */ 0x751A,0x5249, /* Array index: 0x0FCB */ 0x751C,0x5C27, /* Array index: 0x0FCB */ 0x751F,0x466D, /* Array index: 0x0FCB */ 0x7522,0x5C28, /* Array index: 0x0FCB */ 0x7537,0x4B2E, /* Array index: 0x0FCB */ 0x7538,0x4B2F, /* Array index: 0x0FCB */ 0x753D,0x4E77, /* Array index: 0x0FCB */ 0x7554,0x5663, /* Array index: 0x0FCB */ 0x7562,0x5C2B, /* Array index: 0x0FCB */ 0x7565,0x5C29, /* Array index: 0x0FCB */ 0x7566,0x5C2A, /* Array index: 0x0FCB */ 0x756A,0x606C, /* Array index: 0x0FCB */ 0x756B,0x606B, /* Array index: 0x0FCB */ 0x7570,0x5C2C, /* Array index: 0x0FCB */ 0x7576,0x6535, /* Array index: 0x0FCB */ 0x7578,0x6536, /* Array index: 0x0FCB */ 0x757F,0x6D6B, /* Array index: 0x0FCB */ 0x7586,0x7851, /* Array index: 0x0FCB */ 0x7587,0x7850, /* Array index: 0x0FCB */ 0x758A,0x7B68, /* Array index: 0x0FCB */ 0x758B,0x4674, /* Array index: 0x0FCB */ 0x758F,0x5C2D, /* Array index: 0x0FCB */ 0x7591,0x696A, /* Array index: 0x0FCB */ 0x7599,0x4E79, /* Array index: 0x0FCB */ 0x759A,0x4E7A, /* Array index: 0x0FCB */ 0x759D,0x4E78, /* Array index: 0x0FCB */ 0x75AB,0x524F, /* Array index: 0x0FCB */ 0x75B2,0x566B, /* Array index: 0x0FCB */ 0x75B3,0x566C, /* Array index: 0x0FCB */ 0x75B5,0x5C30, /* Array index: 0x0FCB */ 0x75C2,0x5670, /* Array index: 0x0FCB */ 0x75C5,0x5669, /* Array index: 0x0FCB */ 0x75C7,0x566A, /* Array index: 0x0FCB */ 0x75CA,0x5C31, /* Array index: 0x0FCB */ 0x75CD,0x5C32, /* Array index: 0x0FCB */ 0x75D4,0x5C2E, /* Array index: 0x0FCB */ 0x75D5,0x5C2F, /* Array index: 0x0FCB */ 0x75D8,0x6071, /* Array index: 0x0FCB */ 0x75D9,0x6070, /* Array index: 0x0FCB */ 0x75DB,0x606E, /* Array index: 0x0FCB */ 0x75DE,0x6072, /* Array index: 0x0FCB */ 0x75E0,0x6073, /* Array index: 0x0FCB */ 0x75E2,0x606D, /* Array index: 0x0FCB */ 0x75E3,0x606F, /* Array index: 0x0FCB */ 0x75FA,0x653C, /* Array index: 0x0FCB */ 0x7609,0x696E, /* Array index: 0x0FCB */ 0x760B,0x696D, /* Array index: 0x0FCB */ 0x760D,0x696C, /* Array index: 0x0FCB */ 0x7613,0x696F, /* Array index: 0x0FCB */ 0x7634,0x714A, /* Array index: 0x0FCB */ 0x7638,0x714B, /* Array index: 0x0FCB */ 0x763A,0x714C, /* Array index: 0x0FCB */ 0x7642,0x7443, /* Array index: 0x0FCB */ 0x7646,0x7442, /* Array index: 0x0FCB */ 0x764C,0x7444, /* Array index: 0x0FCB */ 0x7652,0x766B, /* Array index: 0x0FCB */ 0x7656,0x7669, /* Array index: 0x0FCB */ 0x7658,0x766A, /* Array index: 0x0FCB */ 0x765F,0x7852, /* Array index: 0x0FCB */ 0x7661,0x7853, /* Array index: 0x0FCB */ 0x7662,0x797A, /* Array index: 0x0FCB */ 0x7665,0x797B, /* Array index: 0x0FCB */ 0x7669,0x7A79, /* Array index: 0x0FCB */ 0x766C,0x7B6A, /* Array index: 0x0FCB */ 0x766E,0x7B69, /* Array index: 0x0FCB */ 0x7671,0x7C61, /* Array index: 0x0FCB */ 0x7672,0x7C62, /* Array index: 0x0FCB */ 0x7678,0x5254, /* Array index: 0x0FCB */ 0x7682,0x4B30, /* Array index: 0x0FCB */ 0x768B,0x5672, /* Array index: 0x0FCB */ 0x768E,0x5C33, /* Array index: 0x0FCB */ 0x7693,0x6077, /* Array index: 0x0FCB */ 0x7696,0x6076, /* Array index: 0x0FCB */ 0x769A,0x6D73, /* Array index: 0x0FCB */ 0x76AE,0x4676, /* Array index: 0x0FCB */ 0x76B0,0x5673, /* Array index: 0x0FCB */ 0x76B4,0x6078, /* Array index: 0x0FCB */ 0x76BA,0x6D74, /* Array index: 0x0FCB */ 0x76BF,0x4677, /* Array index: 0x0FCB */ 0x76D2,0x5C35, /* Array index: 0x0FCB */ 0x76D4,0x5C34, /* Array index: 0x0FCB */ 0x76EA,0x7445, /* Array index: 0x0FCB */ 0x76EE,0x4678, /* Array index: 0x0FCB */ 0x76EF,0x4B31, /* Array index: 0x0FCB */ 0x76F2,0x4E7D, /* Array index: 0x0FCB */ 0x76F4,0x4E7E, /* Array index: 0x0FCB */ 0x76F8,0x525E, /* Array index: 0x0FCB */ 0x76F9,0x525D, /* Array index: 0x0FCB */ 0x76FC,0x5262, /* Array index: 0x0FCB */ 0x76FE,0x5261, /* Array index: 0x0FCB */ 0x7701,0x525C, /* Array index: 0x0FCB */ 0x7707,0x5263, /* Array index: 0x0FCB */ 0x7709,0x525F, /* Array index: 0x0FCB */ 0x770B,0x5260, /* Array index: 0x0FCB */ 0x771F,0x5678, /* Array index: 0x0FCB */ 0x7720,0x5679, /* Array index: 0x0FCB */ 0x7728,0x567A, /* Array index: 0x0FCB */ 0x7729,0x5677, /* Array index: 0x0FCB */ 0x774F,0x607A, /* Array index: 0x0FCB */ 0x775B,0x6542, /* Array index: 0x0FCB */ 0x775C,0x654A, /* Array index: 0x0FCB */ 0x775E,0x6545, /* Array index: 0x0FCB */ 0x7779,0x6547, /* Array index: 0x0FCB */ 0x777D,0x6973, /* Array index: 0x0FCB */ 0x777F,0x6974, /* Array index: 0x0FCB */ 0x7784,0x6972, /* Array index: 0x0FCB */ 0x7787,0x6D77, /* Array index: 0x0FCB */ 0x778B,0x6D7A, /* Array index: 0x0FCB */ 0x778C,0x6D78, /* Array index: 0x0FCB */ 0x778E,0x6D76, /* Array index: 0x0FCB */ 0x7791,0x6D79, /* Array index: 0x0FCB */ 0x77A5,0x7152, /* Array index: 0x0FCB */ 0x77A7,0x744A, /* Array index: 0x0FCB */ 0x77AA,0x7447, /* Array index: 0x0FCB */ 0x77AC,0x7449, /* Array index: 0x0FCB */ 0x77AD,0x744B, /* Array index: 0x0FCB */ 0x77B0,0x7448, /* Array index: 0x0FCB */ 0x77B3,0x7446, /* Array index: 0x0FCB */ 0x77C7,0x7854, /* Array index: 0x0FCB */ 0x77D3,0x7A7A, /* Array index: 0x0FCB */ 0x77D7,0x7C63, /* Array index: 0x0FCB */ 0x77E2,0x467A, /* Array index: 0x0FCB */ 0x77E3,0x4B32, /* Array index: 0x0FCB */ 0x77E5,0x4F21, /* Array index: 0x0FCB */ 0x77E9,0x567B, /* Array index: 0x0FCB */ 0x77F3,0x467B, /* Array index: 0x0FCB */ 0x77FD,0x4F22, /* Array index: 0x0FCB */ 0x7802,0x5265, /* Array index: 0x0FCB */ 0x780C,0x5267, /* Array index: 0x0FCB */ 0x780D,0x5268, /* Array index: 0x0FCB */ 0x7814,0x5266, /* Array index: 0x0FCB */ 0x781D,0x5721, /* Array index: 0x0FCB */ 0x781F,0x5727, /* Array index: 0x0FCB */ 0x7820,0x5726, /* Array index: 0x0FCB */ 0x7825,0x5724, /* Array index: 0x0FCB */ 0x7827,0x567D, /* Array index: 0x0FCB */ 0x782D,0x5725, /* Array index: 0x0FCB */ 0x7830,0x567C, /* Array index: 0x0FCB */ 0x7832,0x5728, /* Array index: 0x0FCB */ 0x7834,0x5722, /* Array index: 0x0FCB */ 0x7837,0x5723, /* Array index: 0x0FCB */ 0x7838,0x567E, /* Array index: 0x0FCB */ 0x7843,0x5C3E, /* Array index: 0x0FCB */ 0x784E,0x5C3F, /* Array index: 0x0FCB */ 0x785D,0x607C, /* Array index: 0x0FCB */ 0x786B,0x5C3D, /* Array index: 0x0FCB */ 0x786C,0x607D, /* Array index: 0x0FCB */ 0x786F,0x607E, /* Array index: 0x0FCB */ 0x787C,0x6555, /* Array index: 0x0FCB */ 0x787F,0x6558, /* Array index: 0x0FCB */ 0x7889,0x6554, /* Array index: 0x0FCB */ 0x788C,0x6553, /* Array index: 0x0FCB */ 0x788E,0x654F, /* Array index: 0x0FCB */ 0x7891,0x6556, /* Array index: 0x0FCB */ 0x7893,0x6557, /* Array index: 0x0FCB */ 0x7897,0x6551, /* Array index: 0x0FCB */ 0x7898,0x6552, /* Array index: 0x0FCB */ 0x789F,0x6977, /* Array index: 0x0FCB */ 0x78A3,0x697B, /* Array index: 0x0FCB */ 0x78A7,0x6978, /* Array index: 0x0FCB */ 0x78A9,0x697A, /* Array index: 0x0FCB */ 0x78B0,0x6550, /* Array index: 0x0FCB */ 0x78B3,0x6979, /* Array index: 0x0FCB */ 0x78BA,0x6D7D, /* Array index: 0x0FCB */ 0x78BC,0x6E23, /* Array index: 0x0FCB */ 0x78BE,0x6E21, /* Array index: 0x0FCB */ 0x78C1,0x6976, /* Array index: 0x0FCB */ 0x78C5,0x6D7C, /* Array index: 0x0FCB */ 0x78CA,0x6D7E, /* Array index: 0x0FCB */ 0x78CB,0x6D7B, /* Array index: 0x0FCB */ 0x78D0,0x6E24, /* Array index: 0x0FCB */ 0x78D5,0x6E22, /* Array index: 0x0FCB */ 0x78DA,0x7154, /* Array index: 0x0FCB */ 0x78E7,0x7156, /* Array index: 0x0FCB */ 0x78E8,0x7153, /* Array index: 0x0FCB */ 0x78EC,0x7155, /* Array index: 0x0FCB */ 0x78EF,0x7450, /* Array index: 0x0FCB */ 0x78F4,0x744F, /* Array index: 0x0FCB */ 0x78F7,0x744D, /* Array index: 0x0FCB */ 0x78FA,0x744E, /* Array index: 0x0FCB */ 0x7901,0x7451, /* Array index: 0x0FCB */ 0x790E,0x7670, /* Array index: 0x0FCB */ 0x7919,0x7855, /* Array index: 0x0FCB */ 0x7926,0x797C, /* Array index: 0x0FCB */ 0x793A,0x467C, /* Array index: 0x0FCB */ 0x793E,0x4F23, /* Array index: 0x0FCB */ 0x7940,0x4F24, /* Array index: 0x0FCB */ 0x7941,0x4F25, /* Array index: 0x0FCB */ 0x7950,0x572A, /* Array index: 0x0FCB */ 0x795A,0x5731, /* Array index: 0x0FCB */ 0x7965,0x5C40, /* Array index: 0x0FCB */ 0x7968,0x5C41, /* Array index: 0x0FCB */ 0x796D,0x5C42, /* Array index: 0x0FCB */ 0x797A,0x6559, /* Array index: 0x0FCB */ 0x797F,0x655A, /* Array index: 0x0FCB */ 0x7981,0x655B, /* Array index: 0x0FCB */ 0x79A6,0x7157, /* Array index: 0x0FCB */ 0x79A7,0x7452, /* Array index: 0x0FCB */ 0x79AA,0x7453, /* Array index: 0x0FCB */ 0x79AE,0x7671, /* Array index: 0x0FCB */ 0x79B1,0x7856, /* Array index: 0x0FCB */ 0x79B3,0x7B6B, /* Array index: 0x0FCB */ 0x79C8,0x4F27, /* Array index: 0x0FCB */ 0x79C9,0x4F26, /* Array index: 0x0FCB */ 0x79CB,0x5271, /* Array index: 0x0FCB */ 0x79D1,0x526F, /* Array index: 0x0FCB */ 0x79D2,0x5270, /* Array index: 0x0FCB */ 0x79D8,0x5738, /* Array index: 0x0FCB */ 0x79DF,0x5735, /* Array index: 0x0FCB */ 0x79FB,0x5C43, /* Array index: 0x0FCB */ 0x7A00,0x6125, /* Array index: 0x0FCB */ 0x7A05,0x6124, /* Array index: 0x0FCB */ 0x7A08,0x6122, /* Array index: 0x0FCB */ 0x7A0B,0x6123, /* Array index: 0x0FCB */ 0x7A0D,0x6121, /* Array index: 0x0FCB */ 0x7A14,0x6561, /* Array index: 0x0FCB */ 0x7A1A,0x655F, /* Array index: 0x0FCB */ 0x7A2E,0x6A21, /* Array index: 0x0FCB */ 0x7A31,0x6A22, /* Array index: 0x0FCB */ 0x7A37,0x6E29, /* Array index: 0x0FCB */ 0x7A46,0x715A, /* Array index: 0x0FCB */ 0x7A57,0x7454, /* Array index: 0x0FCB */ 0x7A69,0x7858, /* Array index: 0x0FCB */ 0x7A6B,0x7857, /* Array index: 0x0FCB */ 0x7A74,0x467E, /* Array index: 0x0FCB */ 0x7A76,0x4B36, /* Array index: 0x0FCB */ 0x7A79,0x4F29, /* Array index: 0x0FCB */ 0x7A7A,0x4F28, /* Array index: 0x0FCB */ 0x7A7F,0x5272, /* Array index: 0x0FCB */ 0x7A81,0x5273, /* Array index: 0x0FCB */ 0x7A84,0x5739, /* Array index: 0x0FCB */ 0x7A88,0x573A, /* Array index: 0x0FCB */ 0x7A92,0x5C44, /* Array index: 0x0FCB */ 0x7A9F,0x6564, /* Array index: 0x0FCB */ 0x7AA0,0x6565, /* Array index: 0x0FCB */ 0x7AA9,0x6A24, /* Array index: 0x0FCB */ 0x7AAA,0x6A23, /* Array index: 0x0FCB */ 0x7AAE,0x6E2C, /* Array index: 0x0FCB */ 0x7AAF,0x6E2B, /* Array index: 0x0FCB */ 0x7ABA,0x715D, /* Array index: 0x0FCB */ 0x7ABF,0x7455, /* Array index: 0x0FCB */ 0x7AC4,0x7675, /* Array index: 0x0FCB */ 0x7AC5,0x7676, /* Array index: 0x0FCB */ 0x7AC7,0x7A22, /* Array index: 0x0FCB */ 0x7ACA,0x7C3D, /* Array index: 0x0FCB */ 0x7ACB,0x4721, /* Array index: 0x0FCB */ 0x7AD9,0x573B, /* Array index: 0x0FCB */ 0x7ADF,0x5D7E, /* Array index: 0x0FCB */ 0x7AE0,0x5D7D, /* Array index: 0x0FCB */ 0x7AE3,0x612A, /* Array index: 0x0FCB */ 0x7AE5,0x6129, /* Array index: 0x0FCB */ 0x7AED,0x6A25, /* Array index: 0x0FCB */ 0x7AEF,0x6A26, /* Array index: 0x0FCB */ 0x7AF6,0x7A23, /* Array index: 0x0FCB */ 0x7AF9,0x484C, /* Array index: 0x0FCB */ 0x7AFA,0x4F2A, /* Array index: 0x0FCB */ 0x7AFD,0x5275, /* Array index: 0x0FCB */ 0x7AFF,0x5274, /* Array index: 0x0FCB */ 0x7B06,0x573C, /* Array index: 0x0FCB */ 0x7B11,0x573D, /* Array index: 0x0FCB */ 0x7B19,0x5C4B, /* Array index: 0x0FCB */ 0x7B1B,0x5C48, /* Array index: 0x0FCB */ 0x7B1E,0x5C4C, /* Array index: 0x0FCB */ 0x7B20,0x5C46, /* Array index: 0x0FCB */ 0x7B26,0x5C4A, /* Array index: 0x0FCB */ 0x7B28,0x5C47, /* Array index: 0x0FCB */ 0x7B2C,0x5C49, /* Array index: 0x0FCB */ 0x7B2E,0x5C4D, /* Array index: 0x0FCB */ 0x7B46,0x612D, /* Array index: 0x0FCB */ 0x7B49,0x612B, /* Array index: 0x0FCB */ 0x7B4B,0x6132, /* Array index: 0x0FCB */ 0x7B60,0x6568, /* Array index: 0x0FCB */ 0x7B67,0x656A, /* Array index: 0x0FCB */ 0x7B6E,0x6569, /* Array index: 0x0FCB */ 0x7B75,0x6A2A, /* Array index: 0x0FCB */ 0x7B77,0x6566, /* Array index: 0x0FCB */ 0x7B84,0x6A31, /* Array index: 0x0FCB */ 0x7B87,0x6A30, /* Array index: 0x0FCB */ 0x7B8B,0x6A29, /* Array index: 0x0FCB */ 0x7B8F,0x6A2E, /* Array index: 0x0FCB */ 0x7B94,0x6A2D, /* Array index: 0x0FCB */ 0x7B95,0x6A28, /* Array index: 0x0FCB */ 0x7B97,0x6A2B, /* Array index: 0x0FCB */ 0x7B9D,0x6A2C, /* Array index: 0x0FCB */ 0x7BA0,0x6E34, /* Array index: 0x0FCB */ 0x7BA1,0x6A27, /* Array index: 0x0FCB */ 0x7BAD,0x6E2D, /* Array index: 0x0FCB */ 0x7BB1,0x6E2E, /* Array index: 0x0FCB */ 0x7BB4,0x6E30, /* Array index: 0x0FCB */ 0x7BB8,0x6A2F, /* Array index: 0x0FCB */ 0x7BC0,0x6567, /* Array index: 0x0FCB */ 0x7BC1,0x6E33, /* Array index: 0x0FCB */ 0x7BC4,0x6E2F, /* Array index: 0x0FCB */ 0x7BC6,0x6E31, /* Array index: 0x0FCB */ 0x7BC7,0x6E32, /* Array index: 0x0FCB */ 0x7BC9,0x7160, /* Array index: 0x0FCB */ 0x7BCC,0x6E35, /* Array index: 0x0FCB */ 0x7BD9,0x715E, /* Array index: 0x0FCB */ 0x7BDB,0x7162, /* Array index: 0x0FCB */ 0x7BE0,0x745B, /* Array index: 0x0FCB */ 0x7BE1,0x7163, /* Array index: 0x0FCB */ 0x7BE4,0x7161, /* Array index: 0x0FCB */ 0x7BE6,0x7165, /* Array index: 0x0FCB */ 0x7BE9,0x7164, /* Array index: 0x0FCB */ 0x7BF7,0x7459, /* Array index: 0x0FCB */ 0x7BFE,0x7458, /* Array index: 0x0FCB */ 0x7C07,0x7456, /* Array index: 0x0FCB */ 0x7C0C,0x745A, /* Array index: 0x0FCB */ 0x7C0D,0x7457, /* Array index: 0x0FCB */ 0x7C11,0x715F, /* Array index: 0x0FCB */ 0x7C1E,0x767A, /* Array index: 0x0FCB */ 0x7C21,0x767C, /* Array index: 0x0FCB */ 0x7C23,0x767B, /* Array index: 0x0FCB */ 0x7C27,0x7678, /* Array index: 0x0FCB */ 0x7C2A,0x7679, /* Array index: 0x0FCB */ 0x7C2B,0x7677, /* Array index: 0x0FCB */ 0x7C37,0x785D, /* Array index: 0x0FCB */ 0x7C38,0x785B, /* Array index: 0x0FCB */ 0x7C43,0x7A25, /* Array index: 0x0FCB */ 0x7C4C,0x7A24, /* Array index: 0x0FCB */ 0x7C4D,0x7A26, /* Array index: 0x0FCB */ 0x7C50,0x7A7B, /* Array index: 0x0FCB */ 0x7C6C,0x7D25, /* Array index: 0x0FCB */ 0x7C6E,0x7D26, /* Array index: 0x0FCB */ 0x7C72,0x7D4B, /* Array index: 0x0FCB */ 0x7C73,0x484D, /* Array index: 0x0FCB */ 0x7C7D,0x5276, /* Array index: 0x0FCB */ 0x7C89,0x573E, /* Array index: 0x0FCB */ 0x7C92,0x5C4E, /* Array index: 0x0FCB */ 0x7C95,0x5C50, /* Array index: 0x0FCB */ 0x7C97,0x5C4F, /* Array index: 0x0FCB */ 0x7C9F,0x6135, /* Array index: 0x0FCB */ 0x7CA5,0x6136, /* Array index: 0x0FCB */ 0x7CB1,0x656B, /* Array index: 0x0FCB */ 0x7CB3,0x656C, /* Array index: 0x0FCB */ 0x7CB5,0x656D, /* Array index: 0x0FCB */ 0x7CB9,0x6A32, /* Array index: 0x0FCB */ 0x7CBD,0x6A33, /* Array index: 0x0FCB */ 0x7CBE,0x6A34, /* Array index: 0x0FCB */ 0x7CCA,0x6E36, /* Array index: 0x0FCB */ 0x7CCE,0x2323, /* Array index: 0x0FCB */ 0x7CD5,0x7166, /* Array index: 0x0FCB */ 0x7CD6,0x7167, /* Array index: 0x0FCB */ 0x7CD9,0x7461, /* Array index: 0x0FCB */ 0x7CE7,0x767D, /* Array index: 0x0FCB */ 0x7CEF,0x7A27, /* Array index: 0x0FCB */ 0x7CF0,0x7A28, /* Array index: 0x0FCB */ 0x7CF8,0x484E, /* Array index: 0x0FCB */ 0x7CFB,0x4B37, /* Array index: 0x0FCB */ 0x7CFE,0x4F2B, /* Array index: 0x0FCB */ 0x7D00,0x5279, /* Array index: 0x0FCB */ 0x7D10,0x5746, /* Array index: 0x0FCB */ 0x7D14,0x5745, /* Array index: 0x0FCB */ 0x7D15,0x5747, /* Array index: 0x0FCB */ 0x7D2B,0x613B, /* Array index: 0x0FCB */ 0x7D39,0x5C55, /* Array index: 0x0FCB */ 0x7D3C,0x5C56, /* Array index: 0x0FCB */ 0x7D50,0x6138, /* Array index: 0x0FCB */ 0x7D55,0x613A, /* Array index: 0x0FCB */ 0x7D5B,0x6573, /* Array index: 0x0FCB */ 0x7D5E,0x6137, /* Array index: 0x0FCB */ 0x7D61,0x613E, /* Array index: 0x0FCB */ 0x7D62,0x6140, /* Array index: 0x0FCB */ 0x7D66,0x613F, /* Array index: 0x0FCB */ 0x7D68,0x6139, /* Array index: 0x0FCB */ 0x7D79,0x656F, /* Array index: 0x0FCB */ 0x7D81,0x6571, /* Array index: 0x0FCB */ 0x7D8F,0x6572, /* Array index: 0x0FCB */ 0x7D91,0x6570, /* Array index: 0x0FCB */ 0x7D93,0x656E, /* Array index: 0x0FCB */ 0x7D9C,0x6A37, /* Array index: 0x0FCB */ 0x7D9E,0x6E43, /* Array index: 0x0FCB */ 0x7DA0,0x6A3A, /* Array index: 0x0FCB */ 0x7DA2,0x6A40, /* Array index: 0x0FCB */ 0x7DB8,0x6A43, /* Array index: 0x0FCB */ 0x7DC7,0x6A46, /* Array index: 0x0FCB */ 0x7DCA,0x6A3B, /* Array index: 0x0FCB */ 0x7DD2,0x6A45, /* Array index: 0x0FCB */ 0x7DE3,0x6E3F, /* Array index: 0x0FCB */ 0x7DE8,0x6E3E, /* Array index: 0x0FCB */ 0x7DE9,0x6E42, /* Array index: 0x0FCB */ 0x7DEC,0x6E3C, /* Array index: 0x0FCB */ 0x7DEF,0x6E39, /* Array index: 0x0FCB */ 0x7DF2,0x6E45, /* Array index: 0x0FCB */ 0x7DF4,0x6E38, /* Array index: 0x0FCB */ 0x7DF9,0x6E46, /* Array index: 0x0FCB */ 0x7DFB,0x6E3A, /* Array index: 0x0FCB */ 0x7E10,0x7170, /* Array index: 0x0FCB */ 0x7E11,0x7169, /* Array index: 0x0FCB */ 0x7E1B,0x716B, /* Array index: 0x0FCB */ 0x7E1D,0x716E, /* Array index: 0x0FCB */ 0x7E1E,0x716D, /* Array index: 0x0FCB */ 0x7E23,0x716C, /* Array index: 0x0FCB */ 0x7E2B,0x7469, /* Array index: 0x0FCB */ 0x7E52,0x7725, /* Array index: 0x0FCB */ 0x7E54,0x767E, /* Array index: 0x0FCB */ 0x7E55,0x7721, /* Array index: 0x0FCB */ 0x7E59,0x7726, /* Array index: 0x0FCB */ 0x7E5A,0x7723, /* Array index: 0x0FCB */ 0x7E5E,0x7722, /* Array index: 0x0FCB */ 0x7E61,0x7724, /* Array index: 0x0FCB */ 0x7E73,0x7864, /* Array index: 0x0FCB */ 0x7E79,0x7861, /* Array index: 0x0FCB */ 0x7E7C,0x7A2B, /* Array index: 0x0FCB */ 0x7E7D,0x7A2A, /* Array index: 0x0FCB */ 0x7E82,0x7A2C, /* Array index: 0x0FCB */ 0x7E8C,0x7A7D, /* Array index: 0x0FCB */ 0x7E8F,0x7A7C, /* Array index: 0x0FCB */ 0x7E93,0x7C41, /* Array index: 0x0FCB */ 0x7E94,0x7C43, /* Array index: 0x0FCB */ 0x7E96,0x7C42, /* Array index: 0x0FCB */ 0x7E9C,0x7D39, /* Array index: 0x0FCB */ 0x7F36,0x484F, /* Array index: 0x0FCB */ 0x7F38,0x527E, /* Array index: 0x0FCB */ 0x7F3A,0x574D, /* Array index: 0x0FCB */ 0x7F3D,0x5C5F, /* Array index: 0x0FCB */ 0x7F44,0x7474, /* Array index: 0x0FCB */ 0x7F48,0x7727, /* Array index: 0x0FCB */ 0x7F4C,0x7A2D, /* Array index: 0x0FCB */ 0x7F50,0x7C64, /* Array index: 0x0FCB */ 0x7F54,0x4F2C, /* Array index: 0x0FCB */ 0x7F55,0x4B38, /* Array index: 0x0FCB */ 0x7F5F,0x574E, /* Array index: 0x0FCB */ 0x7F69,0x6575, /* Array index: 0x0FCB */ 0x7F6A,0x6576, /* Array index: 0x0FCB */ 0x7F6E,0x6574, /* Array index: 0x0FCB */ 0x7F70,0x6A48, /* Array index: 0x0FCB */ 0x7F72,0x6577, /* Array index: 0x0FCB */ 0x7F75,0x6E47, /* Array index: 0x0FCB */ 0x7F77,0x6E48, /* Array index: 0x0FCB */ 0x7F79,0x7171, /* Array index: 0x0FCB */ 0x7F85,0x7865, /* Array index: 0x0FCB */ 0x7F94,0x574F, /* Array index: 0x0FCB */ 0x7F9A,0x5C61, /* Array index: 0x0FCB */ 0x7F9E,0x5C60, /* Array index: 0x0FCB */ 0x7FA4,0x657A, /* Array index: 0x0FCB */ 0x7FA8,0x6579, /* Array index: 0x0FCB */ 0x7FA9,0x6578, /* Array index: 0x0FCB */ 0x7FAF,0x6E49, /* Array index: 0x0FCB */ 0x7FB2,0x7172, /* Array index: 0x0FCB */ 0x7FB6,0x7866, /* Array index: 0x0FCB */ 0x7FB8,0x7868, /* Array index: 0x0FCB */ 0x7FB9,0x7867, /* Array index: 0x0FCB */ 0x7FBC,0x7A7E, /* Array index: 0x0FCB */ 0x7FBD,0x4851, /* Array index: 0x0FCB */ 0x7FBF,0x5322, /* Array index: 0x0FCB */ 0x7FC1,0x5751, /* Array index: 0x0FCB */ 0x7FC5,0x5750, /* Array index: 0x0FCB */ 0x7FCC,0x5C62, /* Array index: 0x0FCB */ 0x7FCE,0x5C63, /* Array index: 0x0FCB */ 0x7FD2,0x5C64, /* Array index: 0x0FCB */ 0x7FD4,0x6144, /* Array index: 0x0FCB */ 0x7FD5,0x6145, /* Array index: 0x0FCB */ 0x7FE9,0x6E4A, /* Array index: 0x0FCB */ 0x7FEE,0x7175, /* Array index: 0x0FCB */ 0x7FF0,0x7173, /* Array index: 0x0FCB */ 0x7FF1,0x7174, /* Array index: 0x0FCB */ 0x7FF3,0x7475, /* Array index: 0x0FCB */ 0x7FF9,0x7728, /* Array index: 0x0FCB */ 0x7FFB,0x7729, /* Array index: 0x0FCB */ 0x7FFC,0x7476, /* Array index: 0x0FCB */ 0x801C,0x5C65, /* Array index: 0x0FCB */ 0x8026,0x6E4B, /* Array index: 0x0FCB */ 0x8028,0x7176, /* Array index: 0x0FCB */ 0x8033,0x4856, /* Array index: 0x0FCB */ 0x8036,0x5326, /* Array index: 0x0FCB */ 0x803D,0x5758, /* Array index: 0x0FCB */ 0x803F,0x5759, /* Array index: 0x0FCB */ 0x8046,0x5C67, /* Array index: 0x0FCB */ 0x804A,0x5C66, /* Array index: 0x0FCB */ 0x8052,0x6147, /* Array index: 0x0FCB */ 0x8056,0x657B, /* Array index: 0x0FCB */ 0x8058,0x657C, /* Array index: 0x0FCB */ 0x805A,0x6A4D, /* Array index: 0x0FCB */ 0x805E,0x6A4C, /* Array index: 0x0FCB */ 0x8093,0x4B3A, /* Array index: 0x0FCB */ 0x8096,0x4B39, /* Array index: 0x0FCB */ 0x8098,0x4B3C, /* Array index: 0x0FCB */ 0x809A,0x4B3E, /* Array index: 0x0FCB */ 0x809B,0x4B3D, /* Array index: 0x0FCB */ 0x809D,0x4B3B, /* Array index: 0x0FCB */ 0x80A1,0x4F34, /* Array index: 0x0FCB */ 0x80A2,0x4F32, /* Array index: 0x0FCB */ 0x80A5,0x4F31, /* Array index: 0x0FCB */ 0x80AF,0x4F39, /* Array index: 0x0FCB */ 0x80B1,0x4F33, /* Array index: 0x0FCB */ 0x80B2,0x4B3F, /* Array index: 0x0FCB */ 0x80B4,0x4F37, /* Array index: 0x0FCB */ 0x80BA,0x4F30, /* Array index: 0x0FCB */ 0x80C3,0x532A, /* Array index: 0x0FCB */ 0x80C4,0x532B, /* Array index: 0x0FCB */ 0x80CC,0x532C, /* Array index: 0x0FCB */ 0x80CE,0x532F, /* Array index: 0x0FCB */ 0x80D6,0x5327, /* Array index: 0x0FCB */ 0x80E1,0x532D, /* Array index: 0x0FCB */ 0x80E4,0x5331, /* Array index: 0x0FCB */ 0x80E5,0x5328, /* Array index: 0x0FCB */ 0x80F8,0x5761, /* Array index: 0x0FCB */ 0x80FC,0x5766, /* Array index: 0x0FCB */ 0x80FD,0x5764, /* Array index: 0x0FCB */ 0x8102,0x575B, /* Array index: 0x0FCB */ 0x8105,0x575D, /* Array index: 0x0FCB */ 0x8106,0x5760, /* Array index: 0x0FCB */ 0x8108,0x5763, /* Array index: 0x0FCB */ 0x810A,0x5765, /* Array index: 0x0FCB */ 0x8116,0x5C69, /* Array index: 0x0FCB */ 0x8123,0x5C6A, /* Array index: 0x0FCB */ 0x8124,0x5C6E, /* Array index: 0x0FCB */ 0x8129,0x5C6C, /* Array index: 0x0FCB */ 0x812B,0x5C6B, /* Array index: 0x0FCB */ 0x812F,0x5C68, /* Array index: 0x0FCB */ 0x8130,0x5C6D, /* Array index: 0x0FCB */ 0x8139,0x614E, /* Array index: 0x0FCB */ 0x813E,0x6150, /* Array index: 0x0FCB */ 0x8146,0x614F, /* Array index: 0x0FCB */ 0x814B,0x614B, /* Array index: 0x0FCB */ 0x814C,0x6151, /* Array index: 0x0FCB */ 0x814E,0x614D, /* Array index: 0x0FCB */ 0x8165,0x6624, /* Array index: 0x0FCB */ 0x8166,0x662A, /* Array index: 0x0FCB */ 0x816B,0x6627, /* Array index: 0x0FCB */ 0x816E,0x6625, /* Array index: 0x0FCB */ 0x817F,0x6A54, /* Array index: 0x0FCB */ 0x8180,0x6A50, /* Array index: 0x0FCB */ 0x8182,0x6A55, /* Array index: 0x0FCB */ 0x8188,0x6A52, /* Array index: 0x0FCB */ 0x818A,0x6A53, /* Array index: 0x0FCB */ 0x818F,0x6A51, /* Array index: 0x0FCB */ 0x81A0,0x6E4F, /* Array index: 0x0FCB */ 0x81A8,0x7179, /* Array index: 0x0FCB */ 0x81A9,0x7178, /* Array index: 0x0FCB */ 0x81B3,0x7177, /* Array index: 0x0FCB */ 0x81BA,0x747E, /* Array index: 0x0FCB */ 0x81C6,0x747C, /* Array index: 0x0FCB */ 0x81C9,0x7525, /* Array index: 0x0FCB */ 0x81CD,0x772C, /* Array index: 0x0FCB */ 0x81CF,0x772D, /* Array index: 0x0FCB */ 0x81D8,0x7869, /* Array index: 0x0FCB */ 0x81DA,0x7A2F, /* Array index: 0x0FCB */ 0x81DF,0x7B70, /* Array index: 0x0FCB */ 0x81E2,0x7C44, /* Array index: 0x0FCB */ 0x81E3,0x485B, /* Array index: 0x0FCB */ 0x81E5,0x4F3A, /* Array index: 0x0FCB */ 0x81E7,0x6A56, /* Array index: 0x0FCB */ 0x81E8,0x7527, /* Array index: 0x0FCB */ 0x81EA,0x485C, /* Array index: 0x0FCB */ 0x81EC,0x5769, /* Array index: 0x0FCB */ 0x81ED,0x5768, /* Array index: 0x0FCB */ 0x81F3,0x485D, /* Array index: 0x0FCB */ 0x81F4,0x5333, /* Array index: 0x0FCB */ 0x8210,0x576B, /* Array index: 0x0FCB */ 0x8212,0x6154, /* Array index: 0x0FCB */ 0x8214,0x6A59, /* Array index: 0x0FCB */ 0x8222,0x5334, /* Array index: 0x0FCB */ 0x8247,0x662C, /* Array index: 0x0FCB */ 0x824B,0x6A5B, /* Array index: 0x0FCB */ 0x8258,0x717C, /* Array index: 0x0FCB */ 0x8259,0x717D, /* Array index: 0x0FCB */ 0x8266,0x7A30, /* Array index: 0x0FCB */ 0x8277,0x7C6C, /* Array index: 0x0FCB */ 0x827E,0x4864, /* Array index: 0x0FCB */ 0x828B,0x4B42, /* Array index: 0x0FCB */ 0x828D,0x4B43, /* Array index: 0x0FCB */ 0x8292,0x4B41, /* Array index: 0x0FCB */ 0x8299,0x4F3F, /* Array index: 0x0FCB */ 0x829D,0x4F3E, /* Array index: 0x0FCB */ 0x829F,0x4F42, /* Array index: 0x0FCB */ 0x82A3,0x4F49, /* Array index: 0x0FCB */ 0x82A5,0x4F46, /* Array index: 0x0FCB */ 0x82D7,0x5340, /* Array index: 0x0FCB */ 0x82EF,0x5349, /* Array index: 0x0FCB */ 0x82F1,0x5341, /* Array index: 0x0FCB */ 0x8309,0x533E, /* Array index: 0x0FCB */ 0x8317,0x577E, /* Array index: 0x0FCB */ 0x8328,0x5823, /* Array index: 0x0FCB */ 0x832B,0x5771, /* Array index: 0x0FCB */ 0x8340,0x5821, /* Array index: 0x0FCB */ 0x8343,0x5824, /* Array index: 0x0FCB */ 0x8349,0x5777, /* Array index: 0x0FCB */ 0x834A,0x5774, /* Array index: 0x0FCB */ 0x834F,0x577A, /* Array index: 0x0FCB */ 0x8350,0x5776, /* Array index: 0x0FCB */ 0x8352,0x5772, /* Array index: 0x0FCB */ 0x8354,0x5773, /* Array index: 0x0FCB */ 0x8377,0x5D23, /* Array index: 0x0FCB */ 0x8378,0x5C77, /* Array index: 0x0FCB */ 0x837B,0x5D24, /* Array index: 0x0FCB */ 0x837C,0x5D25, /* Array index: 0x0FCB */ 0x8386,0x5D26, /* Array index: 0x0FCB */ 0x8389,0x5D21, /* Array index: 0x0FCB */ 0x838A,0x5C7D, /* Array index: 0x0FCB */ 0x838E,0x5C74, /* Array index: 0x0FCB */ 0x8392,0x5C7C, /* Array index: 0x0FCB */ 0x8393,0x5C7E, /* Array index: 0x0FCB */ 0x8396,0x5C79, /* Array index: 0x0FCB */ 0x8398,0x5C76, /* Array index: 0x0FCB */ 0x839E,0x5C75, /* Array index: 0x0FCB */ 0x83A0,0x5D22, /* Array index: 0x0FCB */ 0x83A2,0x5C78, /* Array index: 0x0FCB */ 0x83A7,0x5D27, /* Array index: 0x0FCB */ 0x83AB,0x5C7B, /* Array index: 0x0FCB */ 0x83BD,0x5C7A, /* Array index: 0x0FCB */ 0x83C1,0x615D, /* Array index: 0x0FCB */ 0x83C5,0x615B, /* Array index: 0x0FCB */ 0x83CA,0x6168, /* Array index: 0x0FCB */ 0x83CC,0x6165, /* Array index: 0x0FCB */ 0x83D4,0x616E, /* Array index: 0x0FCB */ 0x83DC,0x616C, /* Array index: 0x0FCB */ 0x83DF,0x616F, /* Array index: 0x0FCB */ 0x83E0,0x615A, /* Array index: 0x0FCB */ 0x83E9,0x6156, /* Array index: 0x0FCB */ 0x83F8,0x6158, /* Array index: 0x0FCB */ 0x83FD,0x6166, /* Array index: 0x0FCB */ 0x8403,0x6157, /* Array index: 0x0FCB */ 0x8404,0x616B, /* Array index: 0x0FCB */ 0x8407,0x616D, /* Array index: 0x0FCB */ 0x842C,0x655C, /* Array index: 0x0FCB */ 0x8431,0x6630, /* Array index: 0x0FCB */ 0x8435,0x6638, /* Array index: 0x0FCB */ 0x8438,0x6169, /* Array index: 0x0FCB */ 0x843C,0x6637, /* Array index: 0x0FCB */ 0x843D,0x662F, /* Array index: 0x0FCB */ 0x8446,0x663D, /* Array index: 0x0FCB */ 0x8449,0x6634, /* Array index: 0x0FCB */ 0x8457,0x6161, /* Array index: 0x0FCB */ 0x845B,0x6636, /* Array index: 0x0FCB */ 0x8461,0x6639, /* Array index: 0x0FCB */ 0x8463,0x663A, /* Array index: 0x0FCB */ 0x8466,0x6632, /* Array index: 0x0FCB */ 0x8475,0x6631, /* Array index: 0x0FCB */ 0x8477,0x662E, /* Array index: 0x0FCB */ 0x8482,0x662D, /* Array index: 0x0FCB */ 0x8490,0x6A68, /* Array index: 0x0FCB */ 0x8499,0x6A60, /* Array index: 0x0FCB */ 0x849C,0x6A63, /* Array index: 0x0FCB */ 0x849E,0x6A61, /* Array index: 0x0FCB */ 0x84B2,0x6A62, /* Array index: 0x0FCB */ 0x84B8,0x6A65, /* Array index: 0x0FCB */ 0x84BC,0x6A69, /* Array index: 0x0FCB */ 0x84BF,0x6A5D, /* Array index: 0x0FCB */ 0x84C0,0x6A66, /* Array index: 0x0FCB */ 0x84C4,0x6A5F, /* Array index: 0x0FCB */ 0x84C6,0x6A5E, /* Array index: 0x0FCB */ 0x84D1,0x6A6A, /* Array index: 0x0FCB */ 0x84D3,0x6A67, /* Array index: 0x0FCB */ 0x84EC,0x6E5D, /* Array index: 0x0FCB */ 0x84EE,0x6E55, /* Array index: 0x0FCB */ 0x84FF,0x6E5F, /* Array index: 0x0FCB */ 0x8506,0x6E60, /* Array index: 0x0FCB */ 0x8511,0x6E59, /* Array index: 0x0FCB */ 0x8513,0x6E58, /* Array index: 0x0FCB */ 0x8514,0x6E5C, /* Array index: 0x0FCB */ 0x8517,0x6E52, /* Array index: 0x0FCB */ 0x851A,0x6E54, /* Array index: 0x0FCB */ 0x8521,0x6E5B, /* Array index: 0x0FCB */ 0x8523,0x6E5A, /* Array index: 0x0FCB */ 0x8525,0x6E5E, /* Array index: 0x0FCB */ 0x852C,0x6E56, /* Array index: 0x0FCB */ 0x852D,0x6E57, /* Array index: 0x0FCB */ 0x853D,0x6E53, /* Array index: 0x0FCB */ 0x8543,0x7225, /* Array index: 0x0FCB */ 0x8559,0x7221, /* Array index: 0x0FCB */ 0x855E,0x7229, /* Array index: 0x0FCB */ 0x856D,0x7227, /* Array index: 0x0FCB */ 0x857E,0x752C, /* Array index: 0x0FCB */ 0x8584,0x752B, /* Array index: 0x0FCB */ 0x8587,0x7532, /* Array index: 0x0FCB */ 0x858A,0x7534, /* Array index: 0x0FCB */ 0x8591,0x752E, /* Array index: 0x0FCB */ 0x8594,0x752F, /* Array index: 0x0FCB */ 0x859B,0x7531, /* Array index: 0x0FCB */ 0x859C,0x752D, /* Array index: 0x0FCB */ 0x85AF,0x7530, /* Array index: 0x0FCB */ 0x85B0,0x7734, /* Array index: 0x0FCB */ 0x85B9,0x7736, /* Array index: 0x0FCB */ 0x85BA,0x7735, /* Array index: 0x0FCB */ 0x85C9,0x7733, /* Array index: 0x0FCB */ 0x85CD,0x7731, /* Array index: 0x0FCB */ 0x85CF,0x772F, /* Array index: 0x0FCB */ 0x85D0,0x7732, /* Array index: 0x0FCB */ 0x85D5,0x786D, /* Array index: 0x0FCB */ 0x85DD,0x786B, /* Array index: 0x0FCB */ 0x85E4,0x786E, /* Array index: 0x0FCB */ 0x85E5,0x786F, /* Array index: 0x0FCB */ 0x85E9,0x786A, /* Array index: 0x0FCB */ 0x85EA,0x786C, /* Array index: 0x0FCB */ 0x8606,0x7A35, /* Array index: 0x0FCB */ 0x8607,0x7A37, /* Array index: 0x0FCB */ 0x860A,0x7A38, /* Array index: 0x0FCB */ 0x860B,0x7A36, /* Array index: 0x0FCB */ 0x8611,0x7A33, /* Array index: 0x0FCB */ 0x8617,0x7B21, /* Array index: 0x0FCB */ 0x861A,0x7B23, /* Array index: 0x0FCB */ 0x862D,0x7B22, /* Array index: 0x0FCB */ 0x8638,0x7C45, /* Array index: 0x0FCB */ 0x863F,0x7C46, /* Array index: 0x0FCB */ 0x864E,0x4F4D, /* Array index: 0x0FCB */ 0x8650,0x534B, /* Array index: 0x0FCB */ 0x8654,0x5825, /* Array index: 0x0FCB */ 0x8655,0x5D28, /* Array index: 0x0FCB */ 0x8667,0x7536, /* Array index: 0x0FCB */ 0x866B,0x4865, /* Array index: 0x0FCB */ 0x8671,0x4F4E, /* Array index: 0x0FCB */ 0x868A,0x5826, /* Array index: 0x0FCB */ 0x868C,0x582B, /* Array index: 0x0FCB */ 0x8693,0x5828, /* Array index: 0x0FCB */ 0x869C,0x582D, /* Array index: 0x0FCB */ 0x86A3,0x582C, /* Array index: 0x0FCB */ 0x86A4,0x5829, /* Array index: 0x0FCB */ 0x86A9,0x582A, /* Array index: 0x0FCB */ 0x86AA,0x5827, /* Array index: 0x0FCB */ 0x86AF,0x5D32, /* Array index: 0x0FCB */ 0x86B1,0x5D31, /* Array index: 0x0FCB */ 0x86B5,0x5D2E, /* Array index: 0x0FCB */ 0x86B6,0x5D2C, /* Array index: 0x0FCB */ 0x86C0,0x5D2B, /* Array index: 0x0FCB */ 0x86C4,0x5D2D, /* Array index: 0x0FCB */ 0x86C6,0x5D2F, /* Array index: 0x0FCB */ 0x86C7,0x5D2A, /* Array index: 0x0FCB */ 0x86C9,0x5D33, /* Array index: 0x0FCB */ 0x86CB,0x5D30, /* Array index: 0x0FCB */ 0x86D0,0x6177, /* Array index: 0x0FCB */ 0x86D4,0x6174, /* Array index: 0x0FCB */ 0x86D9,0x6172, /* Array index: 0x0FCB */ 0x86DB,0x6175, /* Array index: 0x0FCB */ 0x86DE,0x6178, /* Array index: 0x0FCB */ 0x86DF,0x6171, /* Array index: 0x0FCB */ 0x86E4,0x6176, /* Array index: 0x0FCB */ 0x86ED,0x6173, /* Array index: 0x0FCB */ 0x86F9,0x6641, /* Array index: 0x0FCB */ 0x86FB,0x6647, /* Array index: 0x0FCB */ 0x86FE,0x6646, /* Array index: 0x0FCB */ 0x8700,0x6645, /* Array index: 0x0FCB */ 0x8713,0x6642, /* Array index: 0x0FCB */ 0x8718,0x6A72, /* Array index: 0x0FCB */ 0x871C,0x6A6D, /* Array index: 0x0FCB */ 0x8722,0x6A6F, /* Array index: 0x0FCB */ 0x8725,0x6A70, /* Array index: 0x0FCB */ 0x8729,0x6A75, /* Array index: 0x0FCB */ 0x8734,0x6A71, /* Array index: 0x0FCB */ 0x8737,0x6A74, /* Array index: 0x0FCB */ 0x873B,0x6A6E, /* Array index: 0x0FCB */ 0x873F,0x6A6C, /* Array index: 0x0FCB */ 0x874C,0x6E6A, /* Array index: 0x0FCB */ 0x8753,0x6E6B, /* Array index: 0x0FCB */ 0x8755,0x6A73, /* Array index: 0x0FCB */ 0x8757,0x6E69, /* Array index: 0x0FCB */ 0x8759,0x6E68, /* Array index: 0x0FCB */ 0x8760,0x6E64, /* Array index: 0x0FCB */ 0x8766,0x6E65, /* Array index: 0x0FCB */ 0x8768,0x6E67, /* Array index: 0x0FCB */ 0x8774,0x6E62, /* Array index: 0x0FCB */ 0x8776,0x6E63, /* Array index: 0x0FCB */ 0x8778,0x6E66, /* Array index: 0x0FCB */ 0x8782,0x6E61, /* Array index: 0x0FCB */ 0x8783,0x722A, /* Array index: 0x0FCB */ 0x878D,0x722E, /* Array index: 0x0FCB */ 0x879E,0x722C, /* Array index: 0x0FCB */ 0x879F,0x722B, /* Array index: 0x0FCB */ 0x87A2,0x722D, /* Array index: 0x0FCB */ 0x87AB,0x753C, /* Array index: 0x0FCB */ 0x87B3,0x7539, /* Array index: 0x0FCB */ 0x87BA,0x753E, /* Array index: 0x0FCB */ 0x87BB,0x753D, /* Array index: 0x0FCB */ 0x87C0,0x7537, /* Array index: 0x0FCB */ 0x87C6,0x753B, /* Array index: 0x0FCB */ 0x87C8,0x753F, /* Array index: 0x0FCB */ 0x87CB,0x7540, /* Array index: 0x0FCB */ 0x87D1,0x7538, /* Array index: 0x0FCB */ 0x87D2,0x753A, /* Array index: 0x0FCB */ 0x87E0,0x773A, /* Array index: 0x0FCB */ 0x87EC,0x7738, /* Array index: 0x0FCB */ 0x87EF,0x7737, /* Array index: 0x0FCB */ 0x87F2,0x7739, /* Array index: 0x0FCB */ 0x87F9,0x7874, /* Array index: 0x0FCB */ 0x87FB,0x7871, /* Array index: 0x0FCB */ 0x87FE,0x7875, /* Array index: 0x0FCB */ 0x8805,0x7872, /* Array index: 0x0FCB */ 0x880D,0x7873, /* Array index: 0x0FCB */ 0x8814,0x7A39, /* Array index: 0x0FCB */ 0x8815,0x7A3A, /* Array index: 0x0FCB */ 0x8831,0x7C47, /* Array index: 0x0FCB */ 0x8836,0x7C66, /* Array index: 0x0FCB */ 0x8839,0x7C67, /* Array index: 0x0FCB */ 0x883B,0x7D27, /* Array index: 0x0FCB */ 0x8840,0x4866, /* Array index: 0x0FCB */ 0x884C,0x4867, /* Array index: 0x0FCB */ 0x884D,0x534F, /* Array index: 0x0FCB */ 0x8853,0x5D34, /* Array index: 0x0FCB */ 0x8857,0x6179, /* Array index: 0x0FCB */ 0x8859,0x664C, /* Array index: 0x0FCB */ 0x885B,0x6E6C, /* Array index: 0x0FCB */ 0x885D,0x6E6D, /* Array index: 0x0FCB */ 0x8868,0x4F50, /* Array index: 0x0FCB */ 0x886B,0x5350, /* Array index: 0x0FCB */ 0x8870,0x582E, /* Array index: 0x0FCB */ 0x8877,0x582F, /* Array index: 0x0FCB */ 0x8879,0x5833, /* Array index: 0x0FCB */ 0x887D,0x5832, /* Array index: 0x0FCB */ 0x8881,0x5830, /* Array index: 0x0FCB */ 0x8882,0x5831, /* Array index: 0x0FCB */ 0x8888,0x5D36, /* Array index: 0x0FCB */ 0x888B,0x5D3B, /* Array index: 0x0FCB */ 0x888D,0x5D3A, /* Array index: 0x0FCB */ 0x8892,0x5D38, /* Array index: 0x0FCB */ 0x8896,0x5D39, /* Array index: 0x0FCB */ 0x889E,0x5D35, /* Array index: 0x0FCB */ 0x88AB,0x5D37, /* Array index: 0x0FCB */ 0x88B1,0x617C, /* Array index: 0x0FCB */ 0x88C1,0x617A, /* Array index: 0x0FCB */ 0x88C2,0x617B, /* Array index: 0x0FCB */ 0x88CA,0x6654, /* Array index: 0x0FCB */ 0x88D2,0x6656, /* Array index: 0x0FCB */ 0x88D4,0x664E, /* Array index: 0x0FCB */ 0x88D5,0x6655, /* Array index: 0x0FCB */ 0x88D8,0x6651, /* Array index: 0x0FCB */ 0x88D9,0x664F, /* Array index: 0x0FCB */ 0x88DC,0x6650, /* Array index: 0x0FCB */ 0x88DD,0x6652, /* Array index: 0x0FCB */ 0x88DF,0x664D, /* Array index: 0x0FCB */ 0x88E1,0x6653, /* Array index: 0x0FCB */ 0x88E8,0x6A7C, /* Array index: 0x0FCB */ 0x88EF,0x6A7E, /* Array index: 0x0FCB */ 0x88F3,0x6A76, /* Array index: 0x0FCB */ 0x88F4,0x6A78, /* Array index: 0x0FCB */ 0x88F8,0x6A7A, /* Array index: 0x0FCB */ 0x88F9,0x6A79, /* Array index: 0x0FCB */ 0x88FD,0x6A7B, /* Array index: 0x0FCB */ 0x8902,0x6A77, /* Array index: 0x0FCB */ 0x8907,0x6E6F, /* Array index: 0x0FCB */ 0x890A,0x6E73, /* Array index: 0x0FCB */ 0x8910,0x6E6E, /* Array index: 0x0FCB */ 0x8912,0x6E70, /* Array index: 0x0FCB */ 0x8913,0x6E71, /* Array index: 0x0FCB */ 0x8915,0x6E72, /* Array index: 0x0FCB */ 0x891A,0x6A7D, /* Array index: 0x0FCB */ 0x8921,0x7234, /* Array index: 0x0FCB */ 0x8925,0x7232, /* Array index: 0x0FCB */ 0x892A,0x7230, /* Array index: 0x0FCB */ 0x892B,0x7233, /* Array index: 0x0FCB */ 0x8932,0x7231, /* Array index: 0x0FCB */ 0x8936,0x7542, /* Array index: 0x0FCB */ 0x8938,0x7544, /* Array index: 0x0FCB */ 0x893B,0x7541, /* Array index: 0x0FCB */ 0x893D,0x7545, /* Array index: 0x0FCB */ 0x8944,0x7543, /* Array index: 0x0FCB */ 0x8956,0x7878, /* Array index: 0x0FCB */ 0x8964,0x7A3B, /* Array index: 0x0FCB */ 0x896A,0x7B28, /* Array index: 0x0FCB */ 0x896C,0x7B29, /* Array index: 0x0FCB */ 0x896F,0x7B72, /* Array index: 0x0FCB */ 0x8972,0x7B71, /* Array index: 0x0FCB */ 0x897F,0x4869, /* Array index: 0x0FCB */ 0x8981,0x5351, /* Array index: 0x0FCB */ 0x8983,0x617D, /* Array index: 0x0FCB */ 0x8986,0x773B, /* Array index: 0x0FCB */ 0x898B,0x4B44, /* Array index: 0x0FCB */ 0x898F,0x5D3D, /* Array index: 0x0FCB */ 0x8993,0x5D3C, /* Array index: 0x0FCB */ 0x8996,0x617E, /* Array index: 0x0FCB */ 0x899C,0x6657, /* Array index: 0x0FCB */ 0x89A6,0x7236, /* Array index: 0x0FCB */ 0x89AA,0x7235, /* Array index: 0x0FCB */ 0x89AC,0x7546, /* Array index: 0x0FCB */ 0x89B2,0x773C, /* Array index: 0x0FCB */ 0x89BA,0x7A3C, /* Array index: 0x0FCB */ 0x89BD,0x7B2A, /* Array index: 0x0FCB */ 0x89C0,0x7D28, /* Array index: 0x0FCB */ 0x89D2,0x4B45, /* Array index: 0x0FCB */ 0x89D4,0x5352, /* Array index: 0x0FCB */ 0x89E3,0x6658, /* Array index: 0x0FCB */ 0x89F4,0x773D, /* Array index: 0x0FCB */ 0x89F8,0x7A3D, /* Array index: 0x0FCB */ 0x89FC,0x7B73, /* Array index: 0x0FCB */ 0x8A00,0x4B46, /* Array index: 0x0FCB */ 0x8A02,0x5354, /* Array index: 0x0FCB */ 0x8A03,0x5355, /* Array index: 0x0FCB */ 0x8A08,0x5353, /* Array index: 0x0FCB */ 0x8A0A,0x5839, /* Array index: 0x0FCB */ 0x8A1B,0x5D45, /* Array index: 0x0FCB */ 0x8A1D,0x5D3F, /* Array index: 0x0FCB */ 0x8A1F,0x5D44, /* Array index: 0x0FCB */ 0x8A22,0x5D46, /* Array index: 0x0FCB */ 0x8A23,0x5D40, /* Array index: 0x0FCB */ 0x8A25,0x5D41, /* Array index: 0x0FCB */ 0x8A2A,0x5D3E, /* Array index: 0x0FCB */ 0x8A2D,0x5D43, /* Array index: 0x0FCB */ 0x8A31,0x5D42, /* Array index: 0x0FCB */ 0x8A34,0x622B, /* Array index: 0x0FCB */ 0x8A36,0x622D, /* Array index: 0x0FCB */ 0x8A41,0x6226, /* Array index: 0x0FCB */ 0x8A46,0x622A, /* Array index: 0x0FCB */ 0x8A50,0x6229, /* Array index: 0x0FCB */ 0x8A5B,0x6228, /* Array index: 0x0FCB */ 0x8A5E,0x6224, /* Array index: 0x0FCB */ 0x8A60,0x6222, /* Array index: 0x0FCB */ 0x8A62,0x6666, /* Array index: 0x0FCB */ 0x8A63,0x6661, /* Array index: 0x0FCB */ 0x8A66,0x665C, /* Array index: 0x0FCB */ 0x8A79,0x6669, /* Array index: 0x0FCB */ 0x8A7B,0x666A, /* Array index: 0x0FCB */ 0x8A7C,0x6660, /* Array index: 0x0FCB */ 0x8A85,0x6664, /* Array index: 0x0FCB */ 0x8A87,0x665F, /* Array index: 0x0FCB */ 0x8A8C,0x6B22, /* Array index: 0x0FCB */ 0x8A8D,0x6B25, /* Array index: 0x0FCB */ 0x8A91,0x6B2D, /* Array index: 0x0FCB */ 0x8A93,0x6B27, /* Array index: 0x0FCB */ 0x8A95,0x6E78, /* Array index: 0x0FCB */ 0x8A98,0x6B2C, /* Array index: 0x0FCB */ 0x8A9A,0x6B2E, /* Array index: 0x0FCB */ 0x8A9E,0x6B23, /* Array index: 0x0FCB */ 0x8AB0,0x6F21, /* Array index: 0x0FCB */ 0x8AB2,0x6E7B, /* Array index: 0x0FCB */ 0x8AB6,0x6F24, /* Array index: 0x0FCB */ 0x8AB9,0x6F25, /* Array index: 0x0FCB */ 0x8ABC,0x6E74, /* Array index: 0x0FCB */ 0x8ABF,0x6E7E, /* Array index: 0x0FCB */ 0x8AC2,0x6E7D, /* Array index: 0x0FCB */ 0x8AC4,0x6E77, /* Array index: 0x0FCB */ 0x8AC7,0x6E76, /* Array index: 0x0FCB */ 0x8AC9,0x6E7C, /* Array index: 0x0FCB */ 0x8ACB,0x6E79, /* Array index: 0x0FCB */ 0x8ACD,0x6F23, /* Array index: 0x0FCB */ 0x8AD2,0x6E75, /* Array index: 0x0FCB */ 0x8AD6,0x6F22, /* Array index: 0x0FCB */ 0x8ADB,0x6F26, /* Array index: 0x0FCB */ 0x8ADC,0x723C, /* Array index: 0x0FCB */ 0x8AE6,0x7237, /* Array index: 0x0FCB */ 0x8AE7,0x723D, /* Array index: 0x0FCB */ 0x8AEB,0x7239, /* Array index: 0x0FCB */ 0x8AED,0x7243, /* Array index: 0x0FCB */ 0x8AEE,0x723E, /* Array index: 0x0FCB */ 0x8AF1,0x723A, /* Array index: 0x0FCB */ 0x8AF3,0x7244, /* Array index: 0x0FCB */ 0x8B0A,0x754B, /* Array index: 0x0FCB */ 0x8B0E,0x7547, /* Array index: 0x0FCB */ 0x8B10,0x754F, /* Array index: 0x0FCB */ 0x8B17,0x7548, /* Array index: 0x0FCB */ 0x8B19,0x7549, /* Array index: 0x0FCB */ 0x8B1B,0x754A, /* Array index: 0x0FCB */ 0x8B1D,0x754D, /* Array index: 0x0FCB */ 0x8B20,0x754C, /* Array index: 0x0FCB */ 0x8B28,0x773E, /* Array index: 0x0FCB */ 0x8B2B,0x7741, /* Array index: 0x0FCB */ 0x8B2C,0x7740, /* Array index: 0x0FCB */ 0x8B39,0x773F, /* Array index: 0x0FCB */ 0x8B41,0x787A, /* Array index: 0x0FCB */ 0x8B46,0x7923, /* Array index: 0x0FCB */ 0x8B49,0x787D, /* Array index: 0x0FCB */ 0x8B4E,0x7921, /* Array index: 0x0FCB */ 0x8B4F,0x7922, /* Array index: 0x0FCB */ 0x8B5F,0x7A42, /* Array index: 0x0FCB */ 0x8B66,0x7A40, /* Array index: 0x0FCB */ 0x8B6B,0x7A43, /* Array index: 0x0FCB */ 0x8B6C,0x7A3F, /* Array index: 0x0FCB */ 0x8B6F,0x7A41, /* Array index: 0x0FCB */ 0x8B70,0x7A3E, /* Array index: 0x0FCB */ 0x8B74,0x7B2B, /* Array index: 0x0FCB */ 0x8B77,0x7B2C, /* Array index: 0x0FCB */ 0x8B7D,0x7B2D, /* Array index: 0x0FCB */ 0x8B80,0x7B74, /* Array index: 0x0FCB */ 0x8B8A,0x7C48, /* Array index: 0x0FCB */ 0x8B92,0x7C6A, /* Array index: 0x0FCB */ 0x8B93,0x7C69, /* Array index: 0x0FCB */ 0x8B96,0x7C6B, /* Array index: 0x0FCB */ 0x8B9A,0x7D34, /* Array index: 0x0FCB */ 0x8B9C,0x7D3A, /* Array index: 0x0FCB */ 0x8C37,0x4B47, /* Array index: 0x0FCB */ 0x8C3F,0x7551, /* Array index: 0x0FCB */ 0x8C41,0x7550, /* Array index: 0x0FCB */ 0x8C46,0x4B48, /* Array index: 0x0FCB */ 0x8C48,0x583F, /* Array index: 0x0FCB */ 0x8C49,0x5D47, /* Array index: 0x0FCB */ 0x8C4C,0x6F27, /* Array index: 0x0FCB */ 0x8C4E,0x6F28, /* Array index: 0x0FCB */ 0x8C50,0x7742, /* Array index: 0x0FCB */ 0x8C54,0x7D43, /* Array index: 0x0FCB */ 0x8C55,0x4B49, /* Array index: 0x0FCB */ 0x8C5A,0x5D48, /* Array index: 0x0FCB */ 0x8C61,0x622F, /* Array index: 0x0FCB */ 0x8C62,0x666D, /* Array index: 0x0FCB */ 0x8C73,0x7552, /* Array index: 0x0FCB */ 0x8C79,0x5841, /* Array index: 0x0FCB */ 0x8C7A,0x5840, /* Array index: 0x0FCB */ 0x8C82,0x6230, /* Array index: 0x0FCB */ 0x8C93,0x7249, /* Array index: 0x0FCB */ 0x8CAF,0x6231, /* Array index: 0x0FCB */ 0x8CDC,0x6F32, /* Array index: 0x0FCB */ 0x8CEA,0x6F33, /* Array index: 0x0FCB */ 0x8CEC,0x6F2E, /* Array index: 0x0FCB */ 0x8CED,0x6F2F, /* Array index: 0x0FCB */ 0x8CF4,0x724A, /* Array index: 0x0FCB */ 0x8D05,0x7743, /* Array index: 0x0FCB */ 0x8D08,0x7925, /* Array index: 0x0FCB */ 0x8D0A,0x7926, /* Array index: 0x0FCB */ 0x8D0D,0x7A45, /* Array index: 0x0FCB */ 0x8D0F,0x7A44, /* Array index: 0x0FCB */ 0x8D13,0x7B2E, /* Array index: 0x0FCB */ 0x8D16,0x7B75, /* Array index: 0x0FCB */ 0x8D17,0x7B76, /* Array index: 0x0FCB */ 0x8D1B,0x7C6D, /* Array index: 0x0FCB */ 0x8D64,0x4B4B, /* Array index: 0x0FCB */ 0x8D66,0x5D50, /* Array index: 0x0FCB */ 0x8D67,0x5D4F, /* Array index: 0x0FCB */ 0x8D6B,0x6B36, /* Array index: 0x0FCB */ 0x8D6D,0x6F35, /* Array index: 0x0FCB */ 0x8D70,0x4B4C, /* Array index: 0x0FCB */ 0x8D73,0x5359, /* Array index: 0x0FCB */ 0x8D74,0x5358, /* Array index: 0x0FCB */ 0x8D77,0x5844, /* Array index: 0x0FCB */ 0x8D81,0x623F, /* Array index: 0x0FCB */ 0x8D85,0x623E, /* Array index: 0x0FCB */ 0x8D8A,0x623D, /* Array index: 0x0FCB */ 0x8D95,0x6B38, /* Array index: 0x0FCB */ 0x8D99,0x6B37, /* Array index: 0x0FCB */ 0x8D9F,0x6F36, /* Array index: 0x0FCB */ 0x8DA3,0x6F37, /* Array index: 0x0FCB */ 0x8DA8,0x7558, /* Array index: 0x0FCB */ 0x8DB3,0x4B4D, /* Array index: 0x0FCB */ 0x8DB4,0x535A, /* Array index: 0x0FCB */ 0x8DBA,0x5D52, /* Array index: 0x0FCB */ 0x8DBE,0x5D51, /* Array index: 0x0FCB */ 0x8DC6,0x6247, /* Array index: 0x0FCB */ 0x8DCB,0x6242, /* Array index: 0x0FCB */ 0x8DCC,0x6245, /* Array index: 0x0FCB */ 0x8DCE,0x6240, /* Array index: 0x0FCB */ 0x8DD1,0x6244, /* Array index: 0x0FCB */ 0x8DDA,0x6243, /* Array index: 0x0FCB */ 0x8DDB,0x6246, /* Array index: 0x0FCB */ 0x8DDD,0x6241, /* Array index: 0x0FCB */ 0x8DDF,0x6679, /* Array index: 0x0FCB */ 0x8DE1,0x6678, /* Array index: 0x0FCB */ 0x8DE4,0x6721, /* Array index: 0x0FCB */ 0x8DE6,0x6722, /* Array index: 0x0FCB */ 0x8DE8,0x667A, /* Array index: 0x0FCB */ 0x8DEA,0x667E, /* Array index: 0x0FCB */ 0x8DEF,0x667B, /* Array index: 0x0FCB */ 0x8DF3,0x667C, /* Array index: 0x0FCB */ 0x8DFA,0x667D, /* Array index: 0x0FCB */ 0x8DFC,0x6B39, /* Array index: 0x0FCB */ 0x8E0F,0x6F3C, /* Array index: 0x0FCB */ 0x8E10,0x6F39, /* Array index: 0x0FCB */ 0x8E29,0x6F3D, /* Array index: 0x0FCB */ 0x8E2B,0x6F38, /* Array index: 0x0FCB */ 0x8E31,0x724C, /* Array index: 0x0FCB */ 0x8E34,0x724D, /* Array index: 0x0FCB */ 0x8E35,0x7250, /* Array index: 0x0FCB */ 0x8E39,0x724F, /* Array index: 0x0FCB */ 0x8E42,0x724E, /* Array index: 0x0FCB */ 0x8E44,0x724B, /* Array index: 0x0FCB */ 0x8E55,0x7749, /* Array index: 0x0FCB */ 0x8E59,0x7744, /* Array index: 0x0FCB */ 0x8E5F,0x7748, /* Array index: 0x0FCB */ 0x8E63,0x7745, /* Array index: 0x0FCB */ 0x8E64,0x7747, /* Array index: 0x0FCB */ 0x8E66,0x7746, /* Array index: 0x0FCB */ 0x8E6C,0x792B, /* Array index: 0x0FCB */ 0x8E72,0x7928, /* Array index: 0x0FCB */ 0x8E74,0x792D, /* Array index: 0x0FCB */ 0x8E76,0x792A, /* Array index: 0x0FCB */ 0x8E7A,0x792C, /* Array index: 0x0FCB */ 0x8E7C,0x7927, /* Array index: 0x0FCB */ 0x8E81,0x7A47, /* Array index: 0x0FCB */ 0x8E82,0x7A49, /* Array index: 0x0FCB */ 0x8E85,0x7A48, /* Array index: 0x0FCB */ 0x8E91,0x7B77, /* Array index: 0x0FCB */ 0x8E93,0x7B78, /* Array index: 0x0FCB */ 0x8EA1,0x7D29, /* Array index: 0x0FCB */ 0x8EB2,0x6723, /* Array index: 0x0FCB */ 0x8EBA,0x6F41, /* Array index: 0x0FCB */ 0x8EC0,0x774A, /* Array index: 0x0FCB */ 0x8ED2,0x5846, /* Array index: 0x0FCB */ 0x8ED4,0x5847, /* Array index: 0x0FCB */ 0x8EDB,0x5D53, /* Array index: 0x0FCB */ 0x8EDF,0x5D54, /* Array index: 0x0FCB */ 0x8EF8,0x6249, /* Array index: 0x0FCB */ 0x8EFB,0x6248, /* Array index: 0x0FCB */ 0x8EFC,0x624A, /* Array index: 0x0FCB */ 0x8EFE,0x6726, /* Array index: 0x0FCB */ 0x8F03,0x6724, /* Array index: 0x0FCB */ 0x8F09,0x6725, /* Array index: 0x0FCB */ 0x8F0A,0x6727, /* Array index: 0x0FCB */ 0x8F25,0x6F4A, /* Array index: 0x0FCB */ 0x8F26,0x6F46, /* Array index: 0x0FCB */ 0x8F29,0x6F45, /* Array index: 0x0FCB */ 0x8F2A,0x6F47, /* Array index: 0x0FCB */ 0x8F2F,0x7252, /* Array index: 0x0FCB */ 0x8F33,0x7254, /* Array index: 0x0FCB */ 0x8F38,0x7253, /* Array index: 0x0FCB */ 0x8F3B,0x7251, /* Array index: 0x0FCB */ 0x8F3E,0x755E, /* Array index: 0x0FCB */ 0x8F3F,0x7561, /* Array index: 0x0FCB */ 0x8F42,0x755F, /* Array index: 0x0FCB */ 0x8F44,0x755D, /* Array index: 0x0FCB */ 0x8F45,0x7560, /* Array index: 0x0FCB */ 0x8F49,0x774B, /* Array index: 0x0FCB */ 0x8F4D,0x774C, /* Array index: 0x0FCB */ 0x8F4E,0x792F, /* Array index: 0x0FCB */ 0x8F54,0x792E, /* Array index: 0x0FCB */ 0x8F5F,0x7B32, /* Array index: 0x0FCB */ 0x8F61,0x7B79, /* Array index: 0x0FCB */ 0x8F9B,0x4B50, /* Array index: 0x0FCB */ 0x8F9C,0x624B, /* Array index: 0x0FCB */ 0x8F9F,0x6728, /* Array index: 0x0FCB */ 0x8FA3,0x6B3E, /* Array index: 0x0FCB */ 0x8FA6,0x7256, /* Array index: 0x0FCB */ 0x8FA8,0x7255, /* Array index: 0x0FCB */ 0x8FCE,0x4F52, /* Array index: 0x0FCB */ 0x8FD1,0x4F54, /* Array index: 0x0FCB */ 0x8FD4,0x4F53, /* Array index: 0x0FCB */ 0x8FF0,0x535D, /* Array index: 0x0FCB */ 0x8FF4,0x584F, /* Array index: 0x0FCB */ 0x8FF7,0x584C, /* Array index: 0x0FCB */ 0x8FF8,0x5853, /* Array index: 0x0FCB */ 0x8FFA,0x584E, /* Array index: 0x0FCB */ 0x8FFD,0x5851, /* Array index: 0x0FCB */ 0x9000,0x584D, /* Array index: 0x0FCB */ 0x9001,0x584A, /* Array index: 0x0FCB */ 0x9003,0x5850, /* Array index: 0x0FCB */ 0x9005,0x5852, /* Array index: 0x0FCB */ 0x9006,0x584B, /* Array index: 0x0FCB */ 0x900D,0x5D56, /* Array index: 0x0FCB */ 0x900F,0x5D60, /* Array index: 0x0FCB */ 0x9010,0x5D5C, /* Array index: 0x0FCB */ 0x902E,0x624C, /* Array index: 0x0FCB */ 0x9031,0x624E, /* Array index: 0x0FCB */ 0x9032,0x6250, /* Array index: 0x0FCB */ 0x9035,0x624D, /* Array index: 0x0FCB */ 0x9036,0x6251, /* Array index: 0x0FCB */ 0x9038,0x624F, /* Array index: 0x0FCB */ 0x903C,0x672F, /* Array index: 0x0FCB */ 0x903E,0x6737, /* Array index: 0x0FCB */ 0x9041,0x6738, /* Array index: 0x0FCB */ 0x9042,0x672D, /* Array index: 0x0FCB */ 0x9047,0x6732, /* Array index: 0x0FCB */ 0x9068,0x6F4D, /* Array index: 0x0FCB */ 0x9069,0x6F4B, /* Array index: 0x0FCB */ 0x906D,0x6F4E, /* Array index: 0x0FCB */ 0x906E,0x6F4C, /* Array index: 0x0FCB */ 0x9072,0x725A, /* Array index: 0x0FCB */ 0x9095,0x5854, /* Array index: 0x0FCB */ 0x90A2,0x4B58, /* Array index: 0x0FCB */ 0x90A3,0x4B5B, /* Array index: 0x0FCB */ 0x90A6,0x4B5A, /* Array index: 0x0FCB */ 0x90AA,0x4B59, /* Array index: 0x0FCB */ 0x90B1,0x4F57, /* Array index: 0x0FCB */ 0x90B5,0x4F55, /* Array index: 0x0FCB */ 0x90B6,0x4F58, /* Array index: 0x0FCB */ 0x90B8,0x4F56, /* Array index: 0x0FCB */ 0x90C1,0x5368, /* Array index: 0x0FCB */ 0x90C3,0x5369, /* Array index: 0x0FCB */ 0x90CA,0x5366, /* Array index: 0x0FCB */ 0x90CE,0x5367, /* Array index: 0x0FCB */ 0x90DD,0x5856, /* Array index: 0x0FCB */ 0x90E1,0x5855, /* Array index: 0x0FCB */ 0x90E2,0x5857, /* Array index: 0x0FCB */ 0x90E8,0x5D65, /* Array index: 0x0FCB */ 0x90ED,0x5D66, /* Array index: 0x0FCB */ 0x90F5,0x6253, /* Array index: 0x0FCB */ 0x90FD,0x5D67, /* Array index: 0x0FCB */ 0x90FE,0x6255, /* Array index: 0x0FCB */ 0x9102,0x6252, /* Array index: 0x0FCB */ 0x9109,0x6254, /* Array index: 0x0FCB */ 0x9112,0x6739, /* Array index: 0x0FCB */ 0x911E,0x6B4A, /* Array index: 0x0FCB */ 0x9127,0x6F52, /* Array index: 0x0FCB */ 0x912D,0x6F51, /* Array index: 0x0FCB */ 0x9130,0x6F50, /* Array index: 0x0FCB */ 0x9131,0x6F53, /* Array index: 0x0FCB */ 0x9134,0x725D, /* Array index: 0x0FCB */ 0x9139,0x7568, /* Array index: 0x0FCB */ 0x9152,0x5858, /* Array index: 0x0FCB */ 0x9157,0x5D68, /* Array index: 0x0FCB */ 0x9163,0x6256, /* Array index: 0x0FCB */ 0x9165,0x6257, /* Array index: 0x0FCB */ 0x9169,0x673D, /* Array index: 0x0FCB */ 0x916A,0x673C, /* Array index: 0x0FCB */ 0x916C,0x673B, /* Array index: 0x0FCB */ 0x9183,0x6F57, /* Array index: 0x0FCB */ 0x9187,0x6F54, /* Array index: 0x0FCB */ 0x9189,0x6F55, /* Array index: 0x0FCB */ 0x918B,0x6F56, /* Array index: 0x0FCB */ 0x9192,0x725E, /* Array index: 0x0FCB */ 0x919C,0x756B, /* Array index: 0x0FCB */ 0x919E,0x756A, /* Array index: 0x0FCB */ 0x91A3,0x7569, /* Array index: 0x0FCB */ 0x91AB,0x7750, /* Array index: 0x0FCB */ 0x91AC,0x7751, /* Array index: 0x0FCB */ 0x91AE,0x7934, /* Array index: 0x0FCB */ 0x91B1,0x7933, /* Array index: 0x0FCB */ 0x91B4,0x7A4A, /* Array index: 0x0FCB */ 0x91BA,0x7B34, /* Array index: 0x0FCB */ 0x91C0,0x7C6E, /* Array index: 0x0FCB */ 0x91C1,0x7D2A, /* Array index: 0x0FCB */ 0x91E3,0x5D6C, /* Array index: 0x0FCB */ 0x91E6,0x5D6B, /* Array index: 0x0FCB */ 0x91E7,0x5D6D, /* Array index: 0x0FCB */ 0x91E9,0x5D6F, /* Array index: 0x0FCB */ 0x91ED,0x5D6E, /* Array index: 0x0FCB */ 0x91F5,0x5D6A, /* Array index: 0x0FCB */ 0x9207,0x6260, /* Array index: 0x0FCB */ 0x9209,0x625C, /* Array index: 0x0FCB */ 0x920D,0x625E, /* Array index: 0x0FCB */ 0x9210,0x625F, /* Array index: 0x0FCB */ 0x9211,0x6261, /* Array index: 0x0FCB */ 0x9214,0x6259, /* Array index: 0x0FCB */ 0x9215,0x625A, /* Array index: 0x0FCB */ 0x921E,0x625D, /* Array index: 0x0FCB */ 0x9223,0x625B, /* Array index: 0x0FCB */ 0x9234,0x6749, /* Array index: 0x0FCB */ 0x9245,0x674C, /* Array index: 0x0FCB */ 0x9249,0x674A, /* Array index: 0x0FCB */ 0x924B,0x6746, /* Array index: 0x0FCB */ 0x924D,0x674B, /* Array index: 0x0FCB */ 0x9251,0x6748, /* Array index: 0x0FCB */ 0x9257,0x6740, /* Array index: 0x0FCB */ 0x925A,0x674F, /* Array index: 0x0FCB */ 0x925B,0x6745, /* Array index: 0x0FCB */ 0x9264,0x6747, /* Array index: 0x0FCB */ 0x9278,0x6B4F, /* Array index: 0x0FCB */ 0x927B,0x6B55, /* Array index: 0x0FCB */ 0x927C,0x6B59, /* Array index: 0x0FCB */ 0x9280,0x6B51, /* Array index: 0x0FCB */ 0x9285,0x6B52, /* Array index: 0x0FCB */ 0x9291,0x6B5A, /* Array index: 0x0FCB */ 0x9293,0x6B56, /* Array index: 0x0FCB */ 0x9296,0x6B54, /* Array index: 0x0FCB */ 0x9298,0x6B53, /* Array index: 0x0FCB */ 0x929C,0x6B57, /* Array index: 0x0FCB */ 0x92A8,0x6B58, /* Array index: 0x0FCB */ 0x92AC,0x6B50, /* Array index: 0x0FCB */ 0x92B2,0x6F63, /* Array index: 0x0FCB */ 0x92B3,0x6F5E, /* Array index: 0x0FCB */ 0x92B7,0x6F5A, /* Array index: 0x0FCB */ 0x92BB,0x6F59, /* Array index: 0x0FCB */ 0x92BC,0x6F5F, /* Array index: 0x0FCB */ 0x92C1,0x6F5D, /* Array index: 0x0FCB */ 0x92C5,0x6F58, /* Array index: 0x0FCB */ 0x92C7,0x6F61, /* Array index: 0x0FCB */ 0x92D2,0x6F60, /* Array index: 0x0FCB */ 0x92E4,0x6F5C, /* Array index: 0x0FCB */ 0x92EA,0x6F5B, /* Array index: 0x0FCB */ 0x92F0,0x6F62, /* Array index: 0x0FCB */ 0x92F8,0x7261, /* Array index: 0x0FCB */ 0x92FC,0x7265, /* Array index: 0x0FCB */ 0x9304,0x7267, /* Array index: 0x0FCB */ 0x9310,0x7269, /* Array index: 0x0FCB */ 0x9315,0x726C, /* Array index: 0x0FCB */ 0x9326,0x726A, /* Array index: 0x0FCB */ 0x9328,0x756E, /* Array index: 0x0FCB */ 0x932B,0x7266, /* Array index: 0x0FCB */ 0x932E,0x726D, /* Array index: 0x0FCB */ 0x932F,0x7263, /* Array index: 0x0FCB */ 0x9333,0x7262, /* Array index: 0x0FCB */ 0x9336,0x7260, /* Array index: 0x0FCB */ 0x934A,0x7570, /* Array index: 0x0FCB */ 0x934B,0x7572, /* Array index: 0x0FCB */ 0x934D,0x756C, /* Array index: 0x0FCB */ 0x9354,0x7579, /* Array index: 0x0FCB */ 0x935A,0x7578, /* Array index: 0x0FCB */ 0x935B,0x7576, /* Array index: 0x0FCB */ 0x9365,0x7571, /* Array index: 0x0FCB */ 0x936C,0x7575, /* Array index: 0x0FCB */ 0x9370,0x7577, /* Array index: 0x0FCB */ 0x9375,0x756F, /* Array index: 0x0FCB */ 0x937E,0x7574, /* Array index: 0x0FCB */ 0x9382,0x756D, /* Array index: 0x0FCB */ 0x938A,0x7754, /* Array index: 0x0FCB */ 0x93A2,0x7756, /* Array index: 0x0FCB */ 0x93AC,0x7759, /* Array index: 0x0FCB */ 0x93AE,0x7758, /* Array index: 0x0FCB */ 0x93B0,0x775A, /* Array index: 0x0FCB */ 0x93B3,0x7757, /* Array index: 0x0FCB */ 0x93C3,0x7938, /* Array index: 0x0FCB */ 0x93C8,0x7939, /* Array index: 0x0FCB */ 0x93CD,0x793E, /* Array index: 0x0FCB */ 0x93D1,0x7936, /* Array index: 0x0FCB */ 0x93DC,0x793A, /* Array index: 0x0FCB */ 0x93DD,0x793B, /* Array index: 0x0FCB */ 0x93DF,0x7937, /* Array index: 0x0FCB */ 0x93E1,0x7935, /* Array index: 0x0FCB */ 0x93E2,0x793D, /* Array index: 0x0FCB */ 0x93E4,0x7940, /* Array index: 0x0FCB */ 0x93E8,0x7942, /* Array index: 0x0FCB */ 0x93FD,0x7A4E, /* Array index: 0x0FCB */ 0x9403,0x7A4D, /* Array index: 0x0FCB */ 0x9418,0x7A4C, /* Array index: 0x0FCB */ 0x942B,0x7B3B, /* Array index: 0x0FCB */ 0x942E,0x7B35, /* Array index: 0x0FCB */ 0x9432,0x7B3A, /* Array index: 0x0FCB */ 0x9433,0x7B36, /* Array index: 0x0FCB */ 0x9435,0x7B37, /* Array index: 0x0FCB */ 0x9438,0x7B39, /* Array index: 0x0FCB */ 0x943A,0x7B38, /* Array index: 0x0FCB */ 0x9444,0x7B7B, /* Array index: 0x0FCB */ 0x9451,0x7B7C, /* Array index: 0x0FCB */ 0x9452,0x7B7D, /* Array index: 0x0FCB */ 0x9460,0x7C4C, /* Array index: 0x0FCB */ 0x9463,0x7C4B, /* Array index: 0x0FCB */ 0x9464,0x7C4D, /* Array index: 0x0FCB */ 0x946A,0x7C6F, /* Array index: 0x0FCB */ 0x9470,0x7D2C, /* Array index: 0x0FCB */ 0x9472,0x7D2B, /* Array index: 0x0FCB */ 0x9477,0x7D35, /* Array index: 0x0FCB */ 0x9577,0x4F5B, /* Array index: 0x0FCB */ 0x9580,0x4F5C, /* Array index: 0x0FCB */ 0x9582,0x536D, /* Array index: 0x0FCB */ 0x9583,0x5860, /* Array index: 0x0FCB */ 0x9589,0x5D70, /* Array index: 0x0FCB */ 0x958B,0x6264, /* Array index: 0x0FCB */ 0x9598,0x6750, /* Array index: 0x0FCB */ 0x95AD,0x6F64, /* Array index: 0x0FCB */ 0x95B1,0x6F65, /* Array index: 0x0FCB */ 0x95BB,0x726F, /* Array index: 0x0FCB */ 0x95C6,0x757E, /* Array index: 0x0FCB */ 0x95D0,0x7760, /* Array index: 0x0FCB */ 0x95DC,0x7943, /* Array index: 0x0FCB */ 0x95E1,0x7A4F, /* Array index: 0x0FCB */ 0x95E2,0x7B3C, /* Array index: 0x0FCB */ 0x961C,0x4F5D, /* Array index: 0x0FCB */ 0x9621,0x486A, /* Array index: 0x0FCB */ 0x962A,0x4B62, /* Array index: 0x0FCB */ 0x962C,0x4B63, /* Array index: 0x0FCB */ 0x962E,0x4B60, /* Array index: 0x0FCB */ 0x9631,0x4B61, /* Array index: 0x0FCB */ 0x9632,0x4B5F, /* Array index: 0x0FCB */ 0x963B,0x4F60, /* Array index: 0x0FCB */ 0x963F,0x4F5F, /* Array index: 0x0FCB */ 0x9640,0x4F5E, /* Array index: 0x0FCB */ 0x9642,0x4F62, /* Array index: 0x0FCB */ 0x9644,0x4F61, /* Array index: 0x0FCB */ 0x9650,0x536E, /* Array index: 0x0FCB */ 0x9658,0x5867, /* Array index: 0x0FCB */ 0x965B,0x5864, /* Array index: 0x0FCB */ 0x966A,0x5D71, /* Array index: 0x0FCB */ 0x966C,0x5D79, /* Array index: 0x0FCB */ 0x967D,0x626C, /* Array index: 0x0FCB */ 0x9694,0x6752, /* Array index: 0x0FCB */ 0x9695,0x6753, /* Array index: 0x0FCB */ 0x96A7,0x7270, /* Array index: 0x0FCB */ 0x96A8,0x7271, /* Array index: 0x0FCB */ 0x96AA,0x7272, /* Array index: 0x0FCB */ 0x96B1,0x7621, /* Array index: 0x0FCB */ 0x96B4,0x7944, /* Array index: 0x0FCB */ 0x96B8,0x7622, /* Array index: 0x0FCB */ 0x96B9,0x4F63, /* Array index: 0x0FCB */ 0x96BB,0x5869, /* Array index: 0x0FCB */ 0x96D2,0x6B65, /* Array index: 0x0FCB */ 0x96D5,0x7273, /* Array index: 0x0FCB */ 0x96D6,0x7623, /* Array index: 0x0FCB */ 0x96D9,0x7764, /* Array index: 0x0FCB */ 0x96DB,0x7765, /* Array index: 0x0FCB */ 0x96DC,0x7763, /* Array index: 0x0FCB */ 0x96DE,0x7766, /* Array index: 0x0FCB */ 0x96E2,0x7762, /* Array index: 0x0FCB */ 0x96E3,0x7945, /* Array index: 0x0FCB */ 0x96EF,0x6277, /* Array index: 0x0FCB */ 0x96F2,0x6278, /* Array index: 0x0FCB */ 0x96F6,0x675B, /* Array index: 0x0FCB */ 0x96F7,0x6758, /* Array index: 0x0FCB */ 0x96F9,0x675A, /* Array index: 0x0FCB */ 0x96FB,0x6759, /* Array index: 0x0FCB */ 0x9700,0x6B66, /* Array index: 0x0FCB */ 0x9704,0x6F66, /* Array index: 0x0FCB */ 0x9706,0x6F67, /* Array index: 0x0FCB */ 0x9707,0x6F68, /* Array index: 0x0FCB */ 0x9709,0x6F69, /* Array index: 0x0FCB */ 0x9716,0x7276, /* Array index: 0x0FCB */ 0x971C,0x7624, /* Array index: 0x0FCB */ 0x971E,0x7625, /* Array index: 0x0FCB */ 0x9724,0x7767, /* Array index: 0x0FCB */ 0x9727,0x7947, /* Array index: 0x0FCB */ 0x972A,0x7946, /* Array index: 0x0FCB */ 0x9730,0x7A50, /* Array index: 0x0FCB */ 0x9732,0x7B3F, /* Array index: 0x0FCB */ 0x9738,0x7B3D, /* Array index: 0x0FCB */ 0x9739,0x7B3E, /* Array index: 0x0FCB */ 0x973D,0x7B7E, /* Array index: 0x0FCB */ 0x973E,0x7C21, /* Array index: 0x0FCB */ 0x9742,0x7C70, /* Array index: 0x0FCB */ 0x9744,0x7C72, /* Array index: 0x0FCB */ 0x9748,0x7C71, /* Array index: 0x0FCB */ 0x9752,0x4F65, /* Array index: 0x0FCB */ 0x9756,0x675C, /* Array index: 0x0FCB */ 0x975B,0x727A, /* Array index: 0x0FCB */ 0x975C,0x727B, /* Array index: 0x0FCB */ 0x9766,0x727C, /* Array index: 0x0FCB */ 0x9768,0x7C4E, /* Array index: 0x0FCB */ 0x9769,0x5373, /* Array index: 0x0FCB */ 0x9774,0x675D, /* Array index: 0x0FCB */ 0x9776,0x675E, /* Array index: 0x0FCB */ 0x977C,0x6B67, /* Array index: 0x0FCB */ 0x9785,0x6B68, /* Array index: 0x0FCB */ 0x978B,0x6F6C, /* Array index: 0x0FCB */ 0x978D,0x6F6B, /* Array index: 0x0FCB */ 0x978F,0x6F6D, /* Array index: 0x0FCB */ 0x9798,0x727D, /* Array index: 0x0FCB */ 0x97A0,0x7626, /* Array index: 0x0FCB */ 0x97A3,0x7768, /* Array index: 0x0FCB */ 0x97A6,0x7769, /* Array index: 0x0FCB */ 0x97AD,0x776A, /* Array index: 0x0FCB */ 0x97C1,0x7C23, /* Array index: 0x0FCB */ 0x97C3,0x7C22, /* Array index: 0x0FCB */ 0x97C6,0x7C73, /* Array index: 0x0FCB */ 0x97C9,0x7D36, /* Array index: 0x0FCB */ 0x97CB,0x5374, /* Array index: 0x0FCB */ 0x97CC,0x6279, /* Array index: 0x0FCB */ 0x97D3,0x7627, /* Array index: 0x0FCB */ 0x97DC,0x7949, /* Array index: 0x0FCB */ 0x97ED,0x5375, /* Array index: 0x0FCB */ 0x97F3,0x5376, /* Array index: 0x0FCB */ 0x97F6,0x6B69, /* Array index: 0x0FCB */ 0x97F9,0x776B, /* Array index: 0x0FCB */ 0x97FB,0x794A, /* Array index: 0x0FCB */ 0x9817,0x6B6A, /* Array index: 0x0FCB */ 0x9818,0x6B6B, /* Array index: 0x0FCB */ 0x981C,0x6F70, /* Array index: 0x0FCB */ 0x9821,0x6F6E, /* Array index: 0x0FCB */ 0x9824,0x7326, /* Array index: 0x0FCB */ 0x982B,0x6F6F, /* Array index: 0x0FCB */ 0x982D,0x7324, /* Array index: 0x0FCB */ 0x9830,0x727E, /* Array index: 0x0FCB */ 0x9846,0x7628, /* Array index: 0x0FCB */ 0x9853,0x7770, /* Array index: 0x0FCB */ 0x9858,0x794C, /* Array index: 0x0FCB */ 0x985B,0x794D, /* Array index: 0x0FCB */ 0x985E,0x794B, /* Array index: 0x0FCB */ 0x9865,0x7B42, /* Array index: 0x0FCB */ 0x9867,0x7B41, /* Array index: 0x0FCB */ 0x986B,0x7C24, /* Array index: 0x0FCB */ 0x98A8,0x5378, /* Array index: 0x0FCB */ 0x98AF,0x6B6C, /* Array index: 0x0FCB */ 0x98B1,0x6B6D, /* Array index: 0x0FCB */ 0x98B3,0x6F71, /* Array index: 0x0FCB */ 0x98B6,0x7629, /* Array index: 0x0FCB */ 0x98BA,0x7771, /* Array index: 0x0FCB */ 0x98BC,0x794E, /* Array index: 0x0FCB */ 0x98C4,0x7A51, /* Array index: 0x0FCB */ 0x98DB,0x5379, /* Array index: 0x0FCB */ 0x98DF,0x537A, /* Array index: 0x0FCB */ 0x98E2,0x586A, /* Array index: 0x0FCB */ 0x98E7,0x627D, /* Array index: 0x0FCB */ 0x98E9,0x6322, /* Array index: 0x0FCB */ 0x98EA,0x627E, /* Array index: 0x0FCB */ 0x98ED,0x6324, /* Array index: 0x0FCB */ 0x98EF,0x6321, /* Array index: 0x0FCB */ 0x98F2,0x6323, /* Array index: 0x0FCB */ 0x98F4,0x6766, /* Array index: 0x0FCB */ 0x9903,0x6B6E, /* Array index: 0x0FCB */ 0x9905,0x6B6F, /* Array index: 0x0FCB */ 0x9909,0x6B71, /* Array index: 0x0FCB */ 0x990A,0x6F72, /* Array index: 0x0FCB */ 0x990C,0x6B70, /* Array index: 0x0FCB */ 0x9910,0x7327, /* Array index: 0x0FCB */ 0x9912,0x6F74, /* Array index: 0x0FCB */ 0x9913,0x6F73, /* Array index: 0x0FCB */ 0x9918,0x6F75, /* Array index: 0x0FCB */ 0x991A,0x732C, /* Array index: 0x0FCB */ 0x991B,0x732A, /* Array index: 0x0FCB */ 0x991E,0x7329, /* Array index: 0x0FCB */ 0x9921,0x732B, /* Array index: 0x0FCB */ 0x9928,0x7328, /* Array index: 0x0FCB */ 0x992E,0x7775, /* Array index: 0x0FCB */ 0x9935,0x762A, /* Array index: 0x0FCB */ 0x9945,0x794F, /* Array index: 0x0FCB */ 0x9949,0x7950, /* Array index: 0x0FCB */ 0x9951,0x7A53, /* Array index: 0x0FCB */ 0x9952,0x7A52, /* Array index: 0x0FCB */ 0x9955,0x7C25, /* Array index: 0x0FCB */ 0x9957,0x7B43, /* Array index: 0x0FCB */ 0x995C,0x7C50, /* Array index: 0x0FCB */ 0x995E,0x7D2E, /* Array index: 0x0FCB */ 0x9996,0x537B, /* Array index: 0x0FCB */ 0x9999,0x537C, /* Array index: 0x0FCB */ 0x99A5,0x7776, /* Array index: 0x0FCB */ 0x99A8,0x7A54, /* Array index: 0x0FCB */ 0x99B1,0x676A, /* Array index: 0x0FCB */ 0x99B3,0x6769, /* Array index: 0x0FCB */ 0x99B4,0x676B, /* Array index: 0x0FCB */ 0x99C1,0x6B72, /* Array index: 0x0FCB */ 0x99D5,0x6F7B, /* Array index: 0x0FCB */ 0x99D9,0x6F7D, /* Array index: 0x0FCB */ 0x99DB,0x6F79, /* Array index: 0x0FCB */ 0x99DD,0x6F76, /* Array index: 0x0FCB */ 0x99DF,0x6F78, /* Array index: 0x0FCB */ 0x99E2,0x732E, /* Array index: 0x0FCB */ 0x99ED,0x732D, /* Array index: 0x0FCB */ 0x99F1,0x732F, /* Array index: 0x0FCB */ 0x99FF,0x762C, /* Array index: 0x0FCB */ 0x9A01,0x762B, /* Array index: 0x0FCB */ 0x9A0E,0x7777, /* Array index: 0x0FCB */ 0x9A16,0x7951, /* Array index: 0x0FCB */ 0x9A19,0x7952, /* Array index: 0x0FCB */ 0x9A2B,0x7A55, /* Array index: 0x0FCB */ 0x9A30,0x7A56, /* Array index: 0x0FCB */ 0x9A35,0x7A58, /* Array index: 0x0FCB */ 0x9A37,0x7A57, /* Array index: 0x0FCB */ 0x9A3E,0x7B47, /* Array index: 0x0FCB */ 0x9A40,0x7B46, /* Array index: 0x0FCB */ 0x9A43,0x7B45, /* Array index: 0x0FCB */ 0x9A45,0x7B44, /* Array index: 0x0FCB */ 0x9A4D,0x7C27, /* Array index: 0x0FCB */ 0x9A55,0x7C26, /* Array index: 0x0FCB */ 0x9A57,0x7C53, /* Array index: 0x0FCB */ 0x9A5A,0x7C51, /* Array index: 0x0FCB */ 0x9A5B,0x7C52, /* Array index: 0x0FCB */ 0x9A5F,0x7C75, /* Array index: 0x0FCB */ 0x9A62,0x7D37, /* Array index: 0x0FCB */ 0x9A65,0x7D38, /* Array index: 0x0FCB */ 0x9A6A,0x7D47, /* Array index: 0x0FCB */ 0x9AA8,0x586C, /* Array index: 0x0FCB */ 0x9AAF,0x6B73, /* Array index: 0x0FCB */ 0x9AB0,0x6B74, /* Array index: 0x0FCB */ 0x9AB7,0x6F7E, /* Array index: 0x0FCB */ 0x9AB8,0x7330, /* Array index: 0x0FCB */ 0x9ABC,0x7331, /* Array index: 0x0FCB */ 0x9AC1,0x7778, /* Array index: 0x0FCB */ 0x9AE1,0x676C, /* Array index: 0x0FCB */ 0x9AE6,0x6B75, /* Array index: 0x0FCB */ 0x9AFB,0x7332, /* Array index: 0x0FCB */ 0x9B03,0x7779, /* Array index: 0x0FCB */ 0x9B06,0x777A, /* Array index: 0x0FCB */ 0x9B0D,0x7953, /* Array index: 0x0FCB */ 0x9B1A,0x7C29, /* Array index: 0x0FCB */ 0x9B22,0x7C76, /* Array index: 0x0FCB */ 0x9B23,0x7D30, /* Array index: 0x0FCB */ 0x9B25,0x586E, /* Array index: 0x0FCB */ 0x9B27,0x7023, /* Array index: 0x0FCB */ 0x9B28,0x7334, /* Array index: 0x0FCB */ 0x9B31,0x7D48, /* Array index: 0x0FCB */ 0x9B32,0x586F, /* Array index: 0x0FCB */ 0x9B3C,0x5870, /* Array index: 0x0FCB */ 0x9B54,0x7B49, /* Array index: 0x0FCB */ 0x9B58,0x7C77, /* Array index: 0x0FCB */ 0x9B5A,0x5E23, /* Array index: 0x0FCB */ 0x9B6F,0x7027, /* Array index: 0x0FCB */ 0x9B77,0x7026, /* Array index: 0x0FCB */ 0x9B91,0x7335, /* Array index: 0x0FCB */ 0x9BC0,0x7824, /* Array index: 0x0FCB */ 0x9BD6,0x7956, /* Array index: 0x0FCB */ 0x9BDB,0x7957, /* Array index: 0x0FCB */ 0x9BE7,0x7955, /* Array index: 0x0FCB */ 0x9BE8,0x7954, /* Array index: 0x0FCB */ 0x9BFD,0x7822, /* Array index: 0x0FCB */ 0x9C0D,0x7A5A, /* Array index: 0x0FCB */ 0x9C13,0x7A59, /* Array index: 0x0FCB */ 0x9C25,0x7B4C, /* Array index: 0x0FCB */ 0x9C2D,0x7B4B, /* Array index: 0x0FCB */ 0x9C31,0x7C2B, /* Array index: 0x0FCB */ 0x9C3B,0x7C2D, /* Array index: 0x0FCB */ 0x9C3E,0x7C2C, /* Array index: 0x0FCB */ 0x9C49,0x7C2A, /* Array index: 0x0FCB */ 0x9C54,0x7C57, /* Array index: 0x0FCB */ 0x9C56,0x7C59, /* Array index: 0x0FCB */ 0x9C57,0x7C58, /* Array index: 0x0FCB */ 0x9C5F,0x7C78, /* Array index: 0x0FCB */ 0x9C77,0x7D40, /* Array index: 0x0FCB */ 0x9C78,0x7D41, /* Array index: 0x0FCB */ 0x9CE5,0x5E24, /* Array index: 0x0FCB */ 0x9CE9,0x676D, /* Array index: 0x0FCB */ 0x9CF3,0x6B7A, /* Array index: 0x0FCB */ 0x9CF4,0x6B78, /* Array index: 0x0FCB */ 0x9CF6,0x6B79, /* Array index: 0x0FCB */ 0x9D03,0x702A, /* Array index: 0x0FCB */ 0x9D06,0x7028, /* Array index: 0x0FCB */ 0x9D09,0x7029, /* Array index: 0x0FCB */ 0x9D12,0x733A, /* Array index: 0x0FCB */ 0x9D15,0x7336, /* Array index: 0x0FCB */ 0x9D1B,0x733B, /* Array index: 0x0FCB */ 0x9D23,0x7337, /* Array index: 0x0FCB */ 0x9D26,0x7338, /* Array index: 0x0FCB */ 0x9D28,0x7339, /* Array index: 0x0FCB */ 0x9D3B,0x7631, /* Array index: 0x0FCB */ 0x9D3F,0x7632, /* Array index: 0x0FCB */ 0x9D51,0x7825, /* Array index: 0x0FCB */ 0x9D5D,0x7826, /* Array index: 0x0FCB */ 0x9D60,0x7827, /* Array index: 0x0FCB */ 0x9D61,0x7959, /* Array index: 0x0FCB */ 0x9D6A,0x795B, /* Array index: 0x0FCB */ 0x9D6C,0x795C, /* Array index: 0x0FCB */ 0x9D72,0x795A, /* Array index: 0x0FCB */ 0x9D89,0x7958, /* Array index: 0x0FCB */ 0x9DAF,0x7B4D, /* Array index: 0x0FCB */ 0x9DB4,0x7B4E, /* Array index: 0x0FCB */ 0x9DB8,0x7B50, /* Array index: 0x0FCB */ 0x9DC2,0x7B4F, /* Array index: 0x0FCB */ 0x9DD3,0x7C2E, /* Array index: 0x0FCB */ 0x9DD7,0x7C2F, /* Array index: 0x0FCB */ 0x9DE5,0x7C5A, /* Array index: 0x0FCB */ 0x9DF9,0x7C79, /* Array index: 0x0FCB */ 0x9DFA,0x7C7A, /* Array index: 0x0FCB */ 0x9E1A,0x7D45, /* Array index: 0x0FCB */ 0x9E1B,0x7D49, /* Array index: 0x0FCB */ 0x9E1E,0x7D4A, /* Array index: 0x0FCB */ 0x9E75,0x5E25, /* Array index: 0x0FCB */ 0x9E79,0x7A5B, /* Array index: 0x0FCB */ 0x9E7C,0x7C7B, /* Array index: 0x0FCB */ 0x9E7D,0x7C7C, /* Array index: 0x0FCB */ 0x9E7F,0x5E26, /* Array index: 0x0FCB */ 0x9E82,0x676E, /* Array index: 0x0FCB */ 0x9E8B,0x7633, /* Array index: 0x0FCB */ 0x9E92,0x795D, /* Array index: 0x0FCB */ 0x9E93,0x795F, /* Array index: 0x0FCB */ 0x9E97,0x795E, /* Array index: 0x0FCB */ 0x9E9D,0x7B51, /* Array index: 0x0FCB */ 0x9E9F,0x7C5B, /* Array index: 0x0FCB */ 0x9EA5,0x5E27, /* Array index: 0x0FCB */ 0x9EA9,0x702B, /* Array index: 0x0FCB */ 0x9EB4,0x7960, /* Array index: 0x0FCB */ 0x9EB5,0x7A5C, /* Array index: 0x0FCB */ 0x9EBB,0x5E28, /* Array index: 0x0FCB */ 0x9EBC,0x6B7B, /* Array index: 0x0FCB */ 0x9EBE,0x702C, /* Array index: 0x0FCB */ 0x9EC3,0x6327, /* Array index: 0x0FCB */ 0x9ED4,0x733D, /* Array index: 0x0FCB */ 0x9ED8,0x733C, /* Array index: 0x0FCB */ 0x9EE8,0x7A5D, /* Array index: 0x0FCB */ 0x9EEF,0x7B52, /* Array index: 0x0FCB */ 0x9EF4,0x7C5C, /* Array index: 0x0FCB */ 0x9EF7,0x7D42, /* Array index: 0x0FCB */ 0x9F07,0x7C7D, /* Array index: 0x0FCB */ 0x9F0E,0x676F, /* Array index: 0x0FCB */ 0x9F13,0x6770, /* Array index: 0x0FCB */ 0x9F15,0x7829, /* Array index: 0x0FCB */ 0x9F19,0x7B53, /* Array index: 0x0FCB */ 0x9F20,0x6771, /* Array index: 0x0FCB */ 0x9F2C,0x782A, /* Array index: 0x0FCB */ 0x9F2F,0x7A5E, /* Array index: 0x0FCB */ 0x9F34,0x7C30, /* Array index: 0x0FCB */ 0x9F3B,0x6B7C, /* Array index: 0x0FCB */ 0x9F3E,0x7639, /* Array index: 0x0FCB */ 0x9F4A,0x6B7D, /* Array index: 0x0FCB */ 0x9F4B,0x763A, /* Array index: 0x0FCB */ 0x9F52,0x702F, /* Array index: 0x0FCB */ 0x9F5C,0x7B54, /* Array index: 0x0FCB */ 0x9F5F,0x7A5F, /* Array index: 0x0FCB */ 0x9F61,0x7A61, /* Array index: 0x0FCB */ 0x9F63,0x7A60, /* Array index: 0x0FCB */ 0x9F66,0x7B55, /* Array index: 0x0FCB */ 0x9F67,0x7B56, /* Array index: 0x0FCB */ 0x9F6A,0x7C32, /* Array index: 0x0FCB */ 0x9F6C,0x7C31, /* Array index: 0x0FCB */ 0x9F72,0x7D21, /* Array index: 0x0FCB */ 0x9F77,0x7C7E, /* Array index: 0x0FCB */ 0x9F8D,0x733E, /* Array index: 0x0FCB */ 0x9F90,0x7832, /* Array index: 0x0FCB */ 0x9F94,0x7C33, /* Array index: 0x0FCB */ 0x9F9C,0x733F, /* Array index: 0x0FCB */ 0xFFE0,0x2266, /* Array index: 0x0FCB */ 0xFFE1,0x2267, /* Array index: 0x0FCB */ 0xFFE5,0x2264, }; #endif /* ICONV_FROM_UCS_CCS_CNS11643_PLANE1 && defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * cns11643_plane1 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_cns11643_plane1 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_CNS11643_PLANE1, /* CCS name */ TABLE_16BIT, /* Table bits */ #if defined (ICONV_FROM_UCS_CCS_CNS11643_PLANE1) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SIZE_OPTIMIZED, (__uint16_t *)&from_ucs_size_cns11643_plane1, /* UCS -> cns11643_plane1 table size-optimized table */ #elif defined (ICONV_FROM_UCS_CCS_CNS11643_PLANE1) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SPEED_OPTIMIZED, (__uint16_t *)&from_ucs_speed_cns11643_plane1, /* UCS -> cns11643_plane1 table speed-optimized table */ #else TABLE_SPEED_OPTIMIZED, (__uint16_t *)NULL, #endif #if defined (ICONV_TO_UCS_CCS_CNS11643_PLANE1) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SIZE_OPTIMIZED, (__uint16_t *)&to_ucs_size_cns11643_plane1 /* cns11643_plane1 -> UCS table speed-optimized table */ #elif defined (ICONV_TO_UCS_CCS_CNS11643_PLANE1) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SPEED_OPTIMIZED, (__uint16_t *)&to_ucs_speed_cns11643_plane1 /* cns11643_plane1 -> UCS table speed-optimized table */ #else TABLE_SPEED_OPTIMIZED, (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_CNS11643_PLANE1) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/cns11643_plane14.c000066400000000000000000020373761414576234500222750ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for cns11643_plane14 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_CNS11643_PLANE14) \ || defined (ICONV_FROM_UCS_CCS_CNS11643_PLANE14) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" /* * 16-bit cns11643_plane14 -> UCS speed-optimized table (36864 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_CNS11643_PLANE14) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t to_ucs_speed_cns11643_plane14[] = { /* Heading Block */ INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,0x0100,0x0200,0x0300,0x0400,0x0500,0x0600,0x0700, 0x0800,0x0900,0x0A00,0x0B00,0x0C00,0x0D00,0x0E00,0x0F00, 0x1000,0x1100,0x1200,0x1300,0x1400,0x1500,0x1600,0x1700, 0x1800,0x1900,0x1A00,0x1B00,0x1C00,0x1D00,0x1E00,0x1F00, 0x2000,0x2100,0x2200,0x2300,0x2400,0x2500,0x2600,0x2700, 0x2800,0x2900,0x2A00,0x2B00,0x2C00,0x2D00,0x2E00,0x2F00, 0x3000,0x3100,0x3200,0x3300,0x3400,0x3500,0x3600,0x3700, 0x3800,0x3900,0x3A00,0x3B00,0x3C00,0x3D00,0x3E00,0x3F00, 0x4000,0x4100,0x4200,0x4300,0x4400,0x4500,0x4600,0x4700, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, /* Block 34, Array index 0x0100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4E28,0x4E36,0x4E3F,0x4E85,0x4E05,0x4E04,0x5182, 0x5196,0x5338,0x5369,0x53B6,0x4E2A,0x4E87,0x4E49,0x51E2, 0x4E46,0x4E8F,0x4EBC,0x4EBE,0x5166,0x51E3,0x5204,0x529C, INVALC,0x5902,0x590A,0x5B80,0x5DDB,0x5E7A,0x5E7F,0x5EF4, 0x5F50,0x5F51,0x5F61,0x961D,INVALC,0x4E63,0x4E62,0x4EA3, 0x5185,0x4EC5,0x4ECF,0x4ECE,0x4ECC,0x5184,0x5186,INVALC, INVALC,0x51E4,0x5205,0x529E,0x529D,0x52FD,0x5300,0x533A, INVALC,0x5346,0x535D,0x5386,0x53B7,INVALC,0x53CC,INVALC, 0x53CE,0x5721,INVALC,0x5E00,0x5F0C,0x6237,0x6238,0x6534, 0x6535,0x65E0,INVALC,0x738D,0x4E97,0x4EE0,INVALC,INVALC, 0x4EE7,INVALC,0x4EE6,INVALC,INVALC,INVALC,INVALC,0x56D8, 0x518B,0x518C,0x5199,0x51E5,INVALC,0x520B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 35, Array index 0x0200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5304,0x5303,0x5307,INVALC,0x531E,0x535F, 0x536D,0x5389,0x53BA,0x53D0,INVALC,0x53F6,0x53F7,0x53F9, INVALC,0x53F4,INVALC,INVALC,0x5724,0x5904,0x5918,0x5932, 0x5930,0x5934,INVALC,0x5975,INVALC,0x5B82,0x5BF9,0x5C14, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5E81, 0x5E83,0x5F0D,0x5F52,INVALC,0x5FCA,0x5FC7,0x6239,INVALC, 0x624F,0x65E7,0x672F,0x6B7A,0x6C39,INVALC,INVALC,0x6C37, 0x6C44,0x6C45,0x738C,0x7592,0x7676,0x9093,0x9092,INVALC, INVALC,0x4E21,0x4E20,0x4E22,0x4E68,0x4E89,0x4E98,0x4EF9, 0x4EEF,INVALC,INVALC,0x4EF8,0x4F06,0x4F03,0x4EFC,0x4EEE, 0x4F16,INVALC,0x4F28,0x4F1C,0x4F07,0x4F1A,0x4EFA,0x4F17, 0x514A,INVALC,0x5172,INVALC,0x51B4,0x51B3,0x51B2,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 36, Array index 0x0300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x51E8,INVALC,0x5214,0x520F,0x5215,0x5218, 0x52A8,INVALC,0x534B,0x534F,INVALC,0x5350,INVALC,0x538B, INVALC,0x53BE,INVALC,0x53D2,0x5416,0x53FF,INVALC,0x5400, INVALC,0x5405,0x5413,0x5415,INVALC,INVALC,0x56E3,0x5735, 0x5736,0x5731,0x5732,0x58EE,0x5905,0x4E54,INVALC,0x5936, INVALC,INVALC,INVALC,0x597A,INVALC,0x5986,INVALC,INVALC, 0x5B86,0x5F53,0x5C18,INVALC,0x5C3D,0x5C78,INVALC,INVALC, INVALC,INVALC,0x5C80,INVALC,0x5E08,INVALC,INVALC,INVALC, INVALC,0x5EF5,0x5F0E,INVALC,INVALC,INVALC,0x5FD3,0x5FDA, INVALC,0x5FDB,INVALC,0x620F,0x625D,0x625F,0x6267,0x6257, 0x9F50,INVALC,0x65EB,0x65EA,INVALC,0x6737,INVALC,0x6732, 0x6736,0x6B22,0x6BCE,INVALC,0x6C58,0x6C51,0x6C77,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 37, Array index 0x0400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6C3C,INVALC,0x6C5A,INVALC,0x6C53,0x706F,0x7072, 0x706E,INVALC,INVALC,0x7073,0x72B1,0x72B2,INVALC,0x738F, INVALC,INVALC,INVALC,0x793C,INVALC,0x808D,0x808E,INVALC, 0x827B,INVALC,0x8D71,0x8FB9,0x9096,0x909A,INVALC,0x4E24, 0x4E71,INVALC,0x4E9C,0x4F45,0x4F4A,0x4F39,0x4F37,INVALC, 0x4F32,0x4F42,INVALC,0x4F44,0x4F4B,INVALC,0x4F40,0x4F35, 0x4F31,0x5151,INVALC,0x5150,0x514E,INVALC,INVALC,0x519D, INVALC,0x51B5,0x51B8,0x51EC,0x5223,0x5227,0x5226,0x521F, 0x522B,0x5220,0x52B4,0x52B3,INVALC,0x5325,0x533B,0x5374, INVALC,INVALC,INVALC,INVALC,INVALC,0x544D,INVALC,INVALC, 0x543A,INVALC,INVALC,0x5444,0x544C,0x5423,0x541A,0x5432, 0x544B,0x5421,INVALC,0x5434,0x5449,0x5450,0x5422,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 38, Array index 0x0500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x543F,0x5451,0x545A,0x542F,INVALC,0x56E9,0x56F2, 0x56F3,0x56EF,0x56ED,0x56EC,0x56E6,0x5748,INVALC,0x5744, 0x573F,0x573C,0x5753,0x5756,INVALC,0x575F,0x5743,0x5758, 0x5757,INVALC,INVALC,INVALC,0x5746,INVALC,0x573D,INVALC, 0x5742,0x5754,0x5755,0x58F1,0x58F2,0x58F0,0x590B,0x9EA6, 0x56F1,0x593D,INVALC,0x5994,0x598C,INVALC,0x599C,INVALC, INVALC,0x599F,INVALC,0x599B,INVALC,0x5989,0x599A,INVALC, 0x6588,INVALC,0x5B8D,INVALC,0x5BFE,0x5BFF,0x5BFD,0x5C2B, INVALC,0x5C84,0x5C8E,0x5C9C,INVALC,INVALC,0x5C85,0x5DF5, 0x5E09,INVALC,INVALC,0x5E0B,INVALC,0x5E92,0x5E90,0x5F03, INVALC,0x5F1E,0x5F63,INVALC,0x5FE7,0x5FFE,0x5FE6,0x5FDC, 0x5FCE,INVALC,0x5FFC,0x5FDF,0x5FEC,0x5FF6,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 39, Array index 0x0600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5FF2,0x5FF0,0x5FF9,INVALC,0x6213,INVALC,INVALC, 0x623B,0x623C,0x6282,INVALC,INVALC,INVALC,0x6278,0x628B, INVALC,0x629E,0x62A5,0x629B,0x629C,0x6299,0x628D,0x6285, 0x629D,0x6275,INVALC,INVALC,INVALC,0x65F6,INVALC,INVALC, INVALC,0x66F5,0x675B,INVALC,0x6754,0x6752,INVALC,0x6758, 0x6744,0x674A,0x6761,INVALC,0x6C7F,0x6C91,0x6C9E,INVALC, 0x6C6E,0x6C7C,0x6C9F,0x6C75,INVALC,0x6C56,0x6CA2,0x6C79, INVALC,0x6CA1,INVALC,0x6CAA,0x6CA0,INVALC,0x7079,0x7077, 0x707E,INVALC,0x7075,0x707B,0x7264,INVALC,0x72BB,0x72BC, 0x72C7,0x72B9,0x72BE,0x72B6,INVALC,INVALC,0x7398,INVALC, INVALC,INVALC,INVALC,0x7593,0x7680,INVALC,0x7683,0x76C0, 0x76C1,INVALC,INVALC,0x77F4,0x77F5,INVALC,0x7ACC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 40, Array index 0x0700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7ACD,0x7CFA,0x809F,0x8091,0x8097,0x8094,INVALC, 0x8286,0x828C,INVALC,0x8295,INVALC,0x866C,INVALC,0x8FB5, 0x8FBE,0x8FC7,INVALC,0x8FC1,0x90A9,0x90A4,INVALC,INVALC, INVALC,0x90A8,0x9627,0x9626,0x962B,0x9633,0x9634,0x9629, 0x4E3D,INVALC,0x4E9D,0x4F93,0x4F8A,INVALC,INVALC,0x4F6D, 0x4F8E,0x4FA0,0x4FA2,0x4FA1,0x4F9F,0x4FA3,INVALC,0x4F72, INVALC,0x4F8C,0x5156,INVALC,INVALC,0x5190,INVALC,INVALC, INVALC,0x51ED,0x51FE,0x522F,INVALC,0x523C,0x5234,0x5239, 0x52B9,0x52B5,0x52BF,0x5355,INVALC,0x5376,0x537A,0x5393, INVALC,0x53C1,0x53C2,0x53D5,0x5485,INVALC,0x545F,0x5493, 0x5489,0x5479,0x9EFE,0x548F,0x5469,0x546D,INVALC,0x5494, 0x546A,0x548A,INVALC,0x56FD,0x56FB,0x56F8,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 41, Array index 0x0800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x56FC,0x56F6,0x5765,0x5781,0x5763,0x5767,INVALC, 0x576E,0x5778,0x577F,INVALC,INVALC,0x58F3,0x594B,0x594C, INVALC,INVALC,INVALC,0x59AD,INVALC,0x59C4,INVALC,0x59C2, 0x59B0,INVALC,INVALC,INVALC,INVALC,0x59BF,INVALC,0x59C9, 0x59B8,0x59AC,INVALC,INVALC,INVALC,0x59B7,0x59D7,INVALC, 0x5B60,INVALC,0x5B96,0x5B9E,0x5B94,0x5B9F,0x5B9D,INVALC, 0x5C00,0x5C19,INVALC,INVALC,0x5C49,0x5C4A,INVALC,0x5CBB, 0x5CC1,INVALC,INVALC,INVALC,0x5CB9,0x5C9E,0x5CB4,0x5CBA, 0x5DF6,0x5E13,0x5E12,0x5E77,INVALC,0x5E98,INVALC,0x5E99, 0x5E9D,0x5EF8,INVALC,0x5EF9,INVALC,0x5F06,0x5F21,INVALC, 0x5F25,0x5F55,INVALC,INVALC,INVALC,0x5F84,0x5F83,0x6030, 0x6007,INVALC,0x6036,INVALC,INVALC,INVALC,0x5FE9,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 42, Array index 0x0900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x603D,0x6008,INVALC,INVALC,0x62BA,0x62B2,INVALC, 0x62B7,0x62E4,0x62A7,INVALC,INVALC,INVALC,0x62D5,0x62E1, 0x62DD,0x62A6,0x62C1,0x62C5,0x62C0,0x62DF,0x62E0,0x62DE, INVALC,0x6589,INVALC,0x65A6,0x65BA,INVALC,0x65FF,INVALC, 0x6617,0x6618,0x6601,0x65FE,INVALC,0x670C,INVALC,0x676B, 0x6796,0x6782,0x678A,INVALC,0x67A3,INVALC,0x67A2,0x678F, INVALC,0x67F9,0x6780,0x6B26,0x6B27,0x6B68,0x6B69,INVALC, 0x6B81,0x6BB4,0x6BD1,INVALC,INVALC,0x6C1C,INVALC,INVALC, INVALC,INVALC,INVALC,0x6C97,0x6C6C,0x6CDF,INVALC,0x6CEA, INVALC,0x6CE4,0x6CD8,0x6CB2,0x6CCE,0x6CC8,INVALC,0x708B, 0x7088,0x7090,0x708F,INVALC,0x7087,0x7089,0x708D,0x7081, INVALC,0x708C,INVALC,INVALC,0x7240,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 43, Array index 0x0A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7265,0x7266,0x7268,INVALC,INVALC,0x72CD,0x72D3, 0x72DB,INVALC,0x72CF,0x73A7,0x73A3,0x739E,INVALC,0x73AF, INVALC,INVALC,0x73AA,0x739C,INVALC,0x7542,0x7544,0x753B, 0x7541,INVALC,0x759B,0x759E,INVALC,0x79C4,0x79C3,0x79C6, INVALC,INVALC,0x79C7,INVALC,0x79CA,INVALC,INVALC,0x7ACF, 0x7C76,0x7C74,0x7CFF,0x7CFC,INVALC,INVALC,0x7F59,0x80A8, INVALC,INVALC,0x80B0,INVALC,0x80B3,INVALC,0x80A4,0x80B6, 0x80A7,0x80AC,INVALC,0x80A6,0x5367,0x820E,0x82C4,0x833E, 0x829C,INVALC,INVALC,INVALC,INVALC,INVALC,0x82AA,INVALC, 0x82C9,INVALC,INVALC,0x82A6,0x82B2,INVALC,INVALC,INVALC, 0x8FCC,0x8FD9,0x8FCA,0x8FD8,0x8FCF,0x90B7,INVALC,0x90AD, 0x90B9,0x9637,INVALC,0x9641,0x963E,0x96B6,0x9751,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 44, Array index 0x0B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9763,0x4E57,0x4E79,0x4EB2,0x4EB0,0x4EAF,0x4EB1, 0x4FD2,0x4FD5,INVALC,0x4FBE,0x4FB8,0x4FB0,0x4FB1,0x4FC8, INVALC,INVALC,0x4FC6,0x4FCC,0x4FE5,0x4FE3,0x4FB4,0x516A, INVALC,0x519F,INVALC,0x51C1,INVALC,0x51C2,0x51C3,0x5245, 0x5248,INVALC,INVALC,0x524F,INVALC,INVALC,0x52C5,0x52CA, 0x52C4,0x5327,0x5358,0x537D,INVALC,0x53DD,0x53DC,0x53DA, 0x53D9,0x54B9,INVALC,0x54D0,0x54B4,0x54CA,INVALC,0x54A3, 0x54DA,0x54A4,INVALC,0x54B2,0x549E,0x549F,0x54B5,INVALC, INVALC,0x54CD,INVALC,0x54CC,INVALC,0x5700,0x57AC,0x5791, 0x578E,0x578D,0x5792,0x57A1,0x5790,0x57A6,0x57A8,INVALC, 0x579C,0x5796,0x57A7,INVALC,INVALC,INVALC,INVALC,0x58F5, INVALC,0x5909,0x5908,INVALC,0x5952,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 45, Array index 0x0C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x59DF,INVALC,0x59EB,0x59EF,0x59F0,0x59D5,0x5A0D, 0x5A04,0x59F9,0x5A02,0x59F8,0x59E2,0x59D9,0x59E7,0x5B6A, INVALC,INVALC,0x5BAB,INVALC,0x5C1B,0x5C2F,INVALC,0x663C, INVALC,INVALC,INVALC,0x5CD1,0x5CDC,0x5CE6,0x5CE1,0x5CCD, INVALC,0x5CE2,0x5CDD,0x5CE5,0x5DFB,0x5DFA,0x5E1E,INVALC, 0x5EA1,INVALC,INVALC,0x5EFC,0x5EFB,0x5F2F,INVALC,INVALC, 0x5F66,INVALC,INVALC,INVALC,0x605C,INVALC,0x604E,0x6051, INVALC,INVALC,0x6023,0x6031,0x607C,0x6052,INVALC,0x6060, 0x604A,0x6061,INVALC,0x6218,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x631F,0x6317,0x62EA,0x6321,0x6304, 0x6305,INVALC,0x6531,0x6544,0x6540,INVALC,0x6542,0x65BE, INVALC,0x6629,0x661B,INVALC,0x6623,0x662C,0x661A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 46, Array index 0x0D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6630,0x663B,0x661E,0x6637,0x6638,INVALC,0x670E, INVALC,INVALC,0x67E8,0x67D6,INVALC,0x67C7,0x67BC,0x6852, 0x67BF,0x67D5,0x67FE,0x8363,0x67FB,INVALC,0x67B1,0x6801, 0x6805,0x6800,0x67D7,INVALC,0x6B2A,0x6B6B,INVALC,INVALC, INVALC,INVALC,0x6BE1,INVALC,INVALC,0x6D23,0x6CFF,0x6D14, 0x6D05,0x6D13,0x6D06,0x6D21,INVALC,0x6D15,0x6CAF,0x6CF4, 0x6D02,0x6D45,INVALC,0x6D26,INVALC,0x6D44,INVALC,0x6D24, 0x70A5,INVALC,0x70A3,INVALC,0x70A2,0x70BB,0x70A0,0x70AA, INVALC,INVALC,0x70A8,0x70B6,0x70B2,0x70A7,INVALC,INVALC, 0x70B9,0x722E,INVALC,0x723C,INVALC,0x726D,INVALC,INVALC, 0x72E7,0x72ED,INVALC,0x72EC,0x72E5,0x72E2,INVALC,0x73C4, 0x73BD,0x73CF,0x73C9,0x73C1,0x73D0,INVALC,0x73CE,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 47, Array index 0x0E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x74ED,0x74EB,INVALC,0x74EF,0x7549,0x7550,0x7546, 0x754A,INVALC,0x754D,0x75A6,INVALC,INVALC,INVALC,0x75A8, INVALC,INVALC,0x76C7,0x76FF,INVALC,0x76FD,0x77E6,0x780A, INVALC,0x7804,0x780B,0x7807,INVALC,0x7815,0x7808,INVALC, 0x79D3,0x79D4,0x79D0,0x79D7,0x7A7C,INVALC,INVALC,0x7A7D, 0x7A83,0x7A82,INVALC,0x7AD4,0x7AD5,0x7AD3,0x7AD0,0x7AD2, 0x7AFE,0x7AFC,0x7C77,0x7C7C,0x7C7B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7F8F,0x80D3,INVALC, 0x80CB,0x80D2,INVALC,0x8109,0x80E2,0x80DF,0x80C6,INVALC, 0x8224,0x82F7,0x82D8,0x82DD,INVALC,INVALC,0x82F8,0x82FC, INVALC,INVALC,0x82E9,INVALC,0x82EE,INVALC,0x82D0,0x830E, 0x82E2,0x830B,0x82FD,0x5179,0x8676,INVALC,0x8678,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 48, Array index 0x0F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x8675,0x867D,INVALC,0x8842,0x8866, INVALC,0x898C,0x8A05,INVALC,0x8A06,INVALC,0x8C9F,INVALC, 0x8FF1,0x8FE7,0x8FE9,0x8FEF,0x90C2,0x90BC,INVALC,0x90C6, 0x90C0,INVALC,INVALC,0x90CD,0x90C9,INVALC,0x90C4,INVALC, 0x9581,INVALC,0x9CEC,0x5032,0x4FF9,0x501D,0x4FFF,0x5004, 0x4FF0,0x5003,INVALC,0x5002,0x4FFC,0x4FF2,0x5024,0x5008, 0x5036,0x502E,INVALC,0x5010,0x5038,0x5039,0x4FFD,0x5056, 0x4FFB,0x51A3,0x51A6,0x51A1,INVALC,INVALC,0x51C7,0x51C9, 0x5260,0x5264,0x5259,0x5265,0x5267,0x5257,0x5263,INVALC, 0x5253,INVALC,0x52CF,INVALC,0x52CE,0x52D0,0x52D1,0x52CC, INVALC,INVALC,INVALC,0x550D,0x54F4,INVALC,0x5513,0x54EF, 0x54F5,0x54F9,0x5502,0x5500,INVALC,INVALC,0x5518,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 49, Array index 0x1000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x54F0,0x54F6,INVALC,INVALC,0x5519,INVALC,0x5705, 0x57C9,INVALC,0x57B7,0x57CD,INVALC,INVALC,INVALC,0x57BE, 0x57BB,INVALC,0x57DB,0x57C8,0x57C4,0x57C5,0x57D1,0x57CA, 0x57C0,INVALC,INVALC,0x5A21,0x5A2A,INVALC,0x5A1D,INVALC, 0x5A0B,INVALC,INVALC,INVALC,INVALC,0x5A22,INVALC,INVALC, 0x5A24,INVALC,0x5A14,0x5A31,INVALC,0x5A2F,0x5A1A,0x5A12, INVALC,INVALC,0x5A26,INVALC,INVALC,0x5BBC,0x5BBB,0x5BB7, 0x5C05,0x5C06,0x5C52,0x5C53,INVALC,INVALC,0x5CFA,0x5CEB, INVALC,0x5CF3,0x5CF5,0x5CE9,0x5CEF,INVALC,0x5E2A,0x5E30, 0x5E2E,0x5E2C,0x5E2F,0x5EAF,0x5EA9,INVALC,0x5EFD,0x5F32, 0x5F8E,0x5F93,0x5F8F,0x604F,0x6099,INVALC,0x607E,INVALC, 0x6074,0x604B,0x6073,0x6075,INVALC,INVALC,0x6056,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 50, Array index 0x1100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x60A9,0x608B,0x60A6,INVALC,0x6093,0x60AE,0x609E, 0x60A7,0x6245,INVALC,INVALC,0x632E,INVALC,0x6352,0x6330, 0x635B,INVALC,0x6319,0x631B,INVALC,0x6331,0x635D,0x6337, 0x6335,0x6353,INVALC,0x635C,0x633F,0x654B,INVALC,INVALC, 0x658B,INVALC,0x659A,0x6650,0x6646,0x664E,0x6640,INVALC, 0x664B,0x6648,INVALC,0x6660,0x6644,0x664D,INVALC,0x6837, 0x6824,INVALC,INVALC,0x681B,0x6836,INVALC,0x682C,0x6819, 0x6856,0x6847,0x683E,0x681E,INVALC,0x6815,0x6822,0x6827, 0x6859,0x6858,0x6855,0x6830,0x6823,0x6B2E,0x6B2B,0x6B30, 0x6B6C,INVALC,0x6B8B,INVALC,0x6BE9,0x6BEA,0x6BE5,0x6D6B, INVALC,INVALC,0x6D73,0x6D57,INVALC,INVALC,0x6D5D,0x6D56, 0x6D8F,0x6D5B,0x6D1C,0x6D9A,0x6D9B,0x6D99,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 51, Array index 0x1200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6D81,0x6D71,INVALC,INVALC,0x6D72,0x6D5C,0x6D96, 0x70C4,0x70DB,0x70CC,0x70D0,0x70E3,0x70DF,INVALC,0x70D6, 0x70EE,0x70D5,INVALC,INVALC,INVALC,INVALC,0x727A,INVALC, 0x72F5,0x7302,INVALC,INVALC,0x73E2,0x73EC,0x73D5,0x73F9, 0x73DF,0x73E6,INVALC,INVALC,INVALC,INVALC,0x73E4,0x73E1, 0x74F3,INVALC,INVALC,INVALC,INVALC,0x7556,0x7555,0x7558, 0x7557,0x755E,0x75C3,INVALC,INVALC,0x75B4,INVALC,0x75B1, INVALC,INVALC,0x76CB,0x76CC,0x772A,INVALC,0x7716,0x770F, INVALC,INVALC,0x773F,0x772B,0x770E,0x7724,INVALC,0x7721, 0x7718,0x77DD,INVALC,INVALC,0x7824,0x7836,INVALC,0x7958, 0x7959,INVALC,0x7962,0x79DA,0x79D9,INVALC,0x79E1,0x79E5, 0x79E8,0x79DB,INVALC,0x79E2,0x79F0,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 52, Array index 0x1300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7ADA,0x7ADD,INVALC,0x7ADB,0x7ADC, INVALC,INVALC,0x7B0D,0x7B0B,0x7B14,0x7C8E,0x7C86,INVALC, 0x7C87,0x7C83,0x7C8B,INVALC,INVALC,INVALC,INVALC,0x7D24, INVALC,INVALC,INVALC,0x7D25,0x7F62,0x7F93,0x7F99,0x7F97, INVALC,INVALC,0x7FC4,0x7FC6,0x800A,INVALC,INVALC,0x8040, 0x803C,0x803B,0x80F6,0x80FF,0x80EE,0x8104,0x8103,0x8107, INVALC,INVALC,0x80F7,INVALC,INVALC,0x822D,INVALC,0x8227, 0x8229,0x831F,0x8357,INVALC,INVALC,INVALC,INVALC,0x8321, INVALC,INVALC,0x8318,0x8358,INVALC,INVALC,INVALC,INVALC, INVALC,0x8684,0x869F,0x869B,0x8689,0x86A6,0x8692,0x868F, 0x86A0,0x884F,0x8878,0x887A,0x886E,0x887B,0x8884,0x8873, INVALC,INVALC,0x8A0D,0x8A0B,0x8A19,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 53, Array index 0x1400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x8FF9,0x9009,0x9008, INVALC,0x90DE,0x9151,INVALC,INVALC,0x91DB,0x91DF,0x91DE, 0x91D6,0x91E0,0x9585,0x9660,0x9659,INVALC,0x9656,INVALC, INVALC,0x96BD,INVALC,INVALC,0x5042,0x5059,INVALC,0x5044, 0x5066,0x5052,0x5054,0x5071,0x5050,0x507B,0x507C,0x5058, INVALC,INVALC,0x5079,0x506C,0x5078,0x51A8,0x51D1,0x51CF, 0x5268,0x5276,0x52D4,INVALC,0x53A0,0x53C4,INVALC,0x5558, 0x554C,0x5568,INVALC,0x5549,INVALC,INVALC,0x555D,0x5529, INVALC,0x5554,0x5553,INVALC,0x555A,INVALC,0x553A,0x553F, 0x552B,0x57EA,INVALC,0x57EF,INVALC,INVALC,0x57DD,0x57FE, INVALC,0x57DE,0x57E6,INVALC,0x57E8,0x57FF,0x5803,0x58F7, 0x68A6,0x591F,INVALC,0x595B,0x595D,0x595E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 54, Array index 0x1500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5A2B,INVALC,0x5A3B,INVALC,INVALC,0x5A61, 0x5A3A,0x5A6E,0x5A4B,0x5A6B,INVALC,INVALC,0x5A45,0x5A4E, 0x5A68,0x5A3D,0x5A71,0x5A3F,0x5A6F,0x5A75,INVALC,0x5A73, 0x5A2C,0x5A59,0x5A54,0x5A4F,0x5A63,INVALC,INVALC,0x5BC8, INVALC,0x5BC3,INVALC,0x5C5B,0x5C61,INVALC,0x5D21,0x5D0A, 0x5D09,INVALC,0x5D2C,0x5D08,INVALC,INVALC,0x5D2A,0x5D15, INVALC,0x5D10,0x5D13,INVALC,0x5D2F,0x5D18,INVALC,0x5DE3, 0x5E39,0x5E35,0x5E3A,0x5E32,INVALC,INVALC,INVALC,INVALC, 0x5EBB,0x5EBA,0x5F34,0x5F39,INVALC,INVALC,INVALC,INVALC, 0x6098,INVALC,0x60D0,INVALC,INVALC,INVALC,0x60D7,0x60AA, INVALC,0x60A1,0x60A4,INVALC,0x60EE,INVALC,0x60E7,INVALC, INVALC,0x60DE,INVALC,INVALC,0x637E,0x638B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 55, Array index 0x1600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6379,0x6386,0x6393,INVALC,0x6373,0x636A, INVALC,0x636C,INVALC,0x637F,INVALC,0x63B2,0x63BA,INVALC, INVALC,0x6366,0x6374,INVALC,0x655A,INVALC,0x654E,0x654D, 0x658D,0x658E,0x65AD,INVALC,0x65C7,0x65CA,INVALC,0x65C9, INVALC,0x65E3,0x6657,INVALC,0x6663,0x6667,0x671A,0x6719, 0x6716,INVALC,INVALC,0x689E,0x68B6,0x6898,0x6873,INVALC, 0x689A,0x688E,0x68B7,0x68DB,0x68A5,0x686C,0x68C1,0x6884, INVALC,INVALC,0x6895,0x687A,0x6899,INVALC,0x68B8,0x68B9, 0x6870,INVALC,0x6B35,INVALC,0x6B90,0x6BBB,0x6BED,INVALC, INVALC,INVALC,0x6DC1,0x6DC3,0x6DCE,INVALC,INVALC,0x6DAD, 0x6E04,INVALC,0x6DB9,INVALC,0x6DE7,INVALC,0x6E08,0x6E06, INVALC,0x6E0A,0x6DB0,INVALC,0x6DF8,0x6E0C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 56, Array index 0x1700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6DB1,INVALC,0x6E02,0x6E07,0x6E09,0x6E01,0x6E17, 0x6DFF,0x6E12,INVALC,INVALC,0x7103,0x7107,0x7101,0x70F5, 0x70F1,0x7108,0x70F2,0x710F,INVALC,0x70FE,INVALC,INVALC, INVALC,0x731A,0x7310,0x730E,0x7402,0x73F3,INVALC,INVALC, 0x73FB,INVALC,INVALC,INVALC,0x751B,0x7523,0x7561,0x7568, INVALC,0x7567,0x75D3,INVALC,INVALC,0x7690,INVALC,INVALC, 0x76D5,0x76D7,0x76D6,0x7730,INVALC,0x7726,INVALC,0x7740, INVALC,0x771E,INVALC,INVALC,INVALC,0x7847,INVALC,0x784B, 0x7851,0x784F,0x7842,0x7846,INVALC,0x796E,0x796C,0x79F2, INVALC,0x79F1,0x79F5,0x79F3,0x79F9,INVALC,INVALC,INVALC, 0x7A9A,0x7A93,0x7A91,0x7AE1,INVALC,INVALC,0x7B21,0x7B1C, 0x7B16,0x7B17,0x7B36,0x7B1F,INVALC,0x7C93,0x7C99,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 57, Array index 0x1800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7C9A,0x7C9C,INVALC,0x7D49,INVALC,0x7D34,0x7D37, INVALC,0x7D2D,INVALC,0x7D4C,INVALC,INVALC,0x7D48,INVALC, INVALC,0x7F3B,INVALC,INVALC,INVALC,INVALC,0x8008,0x801A, INVALC,0x801D,INVALC,0x8049,0x8045,0x8044,0x7C9B,INVALC, INVALC,0x812A,0x812E,INVALC,INVALC,0x8131,INVALC,0x811A, 0x8134,0x8117,INVALC,INVALC,INVALC,0x831D,0x8371,0x8384, 0x8380,0x8372,0x83A1,INVALC,0x8379,0x8391,INVALC,0x839F, 0x83AD,INVALC,INVALC,0x8323,INVALC,0x8385,0x839C,0x83B7, 0x8658,0x865A,INVALC,0x8657,0x86B2,INVALC,0x86AE,INVALC, INVALC,INVALC,0x8845,0x889C,0x8894,0x88A3,0x888F,0x88A5, 0x88A9,0x88A6,0x888A,0x88A0,0x8890,0x8992,0x8991,0x8994, INVALC,0x8A26,0x8A32,0x8A28,INVALC,INVALC,0x8A1C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 58, Array index 0x1900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x8A2B,0x8A20,INVALC,0x8A29,INVALC,INVALC, INVALC,0x8A21,0x8C3A,INVALC,0x8C5B,0x8C58,0x8C7C,INVALC, 0x8CA6,0x8CAE,0x8CAD,0x8D65,INVALC,0x8D7E,INVALC,0x8D7C, 0x8D7F,0x8D7A,0x8DBD,INVALC,INVALC,0x8DC0,0x8DBB,0x8EAD, 0x8EAF,0x8ED6,INVALC,INVALC,INVALC,INVALC,INVALC,0x8ED9, INVALC,INVALC,0x9012,0x900E,0x9025,INVALC,0x9013,0x90EE, INVALC,0x90AB,0x90F7,INVALC,0x9159,0x9154,0x91F2,0x91F0, 0x91E5,0x91F6,INVALC,INVALC,0x9587,INVALC,0x965A,INVALC, INVALC,0x966E,INVALC,INVALC,INVALC,0x9679,INVALC,0x98E1, 0x98E6,INVALC,0x9EC4,0x9ED2,0x4E80,INVALC,0x4E81,0x508F, 0x5097,0x5088,0x5089,INVALC,INVALC,0x5081,0x5160,INVALC, INVALC,0x5E42,0x51D3,INVALC,INVALC,0x51D2,0x51D6,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 59, Array index 0x1A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5273,INVALC,0x5270,INVALC,INVALC,INVALC,0x53A8, 0x53A6,0x53C5,0x5597,0x55DE,INVALC,INVALC,0x5596,0x55B4, INVALC,0x5585,INVALC,0x559B,0x55A0,INVALC,0x5559,INVALC, 0x5586,INVALC,INVALC,0x55AF,0x557A,INVALC,INVALC,INVALC, 0x559E,INVALC,0x55A9,0x570F,0x570E,0x581A,INVALC,0x581F, INVALC,0x583C,0x5818,0x583E,0x5826,INVALC,0x583A,INVALC, 0x5822,INVALC,0x58FB,0x5963,0x5964,INVALC,0x5AA8,0x5AA3, 0x5A82,0x5A88,0x5AA1,0x5A85,0x5A98,INVALC,0x5A99,INVALC, 0x5A89,0x5A81,0x5A96,0x5A80,INVALC,INVALC,0x5A91,INVALC, INVALC,INVALC,INVALC,0x5ACF,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5A87,0x5AA0,INVALC,0x5A79,INVALC,0x5A86, 0x5AAB,0x5AAA,0x5AA4,0x5A8D,0x5A7E,INVALC,0x5BD5,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 60, Array index 0x1B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5C1E,0x5C5F,0x5C5E,0x5D44, 0x5D3E,INVALC,0x5D48,0x5D1C,INVALC,0x5D5B,0x5D4D,INVALC, INVALC,0x5D57,INVALC,0x5D53,0x5D4F,INVALC,0x5D3B,0x5D46, INVALC,INVALC,0x5E46,0x5E47,INVALC,0x5E48,0x5EC0,0x5EBD, 0x5EBF,INVALC,0x5F11,INVALC,0x5F3E,0x5F3B,INVALC,0x5F3A, INVALC,INVALC,INVALC,0x5FA7,INVALC,0x60EA,INVALC,0x6107, 0x6122,0x610C,INVALC,INVALC,0x60B3,0x60D6,0x60D2,INVALC, 0x60E3,0x60E5,0x60E9,INVALC,INVALC,0x6111,0x60FD,INVALC, INVALC,0x611E,0x6120,0x6121,0x621E,INVALC,0x63E2,0x63DE, 0x63E6,INVALC,INVALC,INVALC,INVALC,0x63F8,INVALC,0x63FE, 0x63C1,0x63BF,0x63F7,0x63D1,0x655F,0x6560,0x6561,INVALC, INVALC,0x65D1,INVALC,INVALC,0x667D,0x666B,0x667F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 61, Array index 0x1C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6673,0x6681,0x666D,0x6669,INVALC, INVALC,0x671E,0x68ED,INVALC,INVALC,INVALC,INVALC,0x6903, INVALC,0x68FE,0x68E5,0x691E,0x6902,INVALC,INVALC,0x6909, 0x68CA,0x6900,INVALC,0x6901,0x6918,0x68E2,0x68CF,INVALC, 0x692E,0x68C5,0x68FF,INVALC,0x691C,0x68C3,INVALC,0x6B6F, INVALC,0x6B6E,INVALC,0x6BBE,INVALC,0x6BF4,0x6C2D,INVALC, 0x6DB6,0x6E75,0x6E1E,INVALC,0x6E18,INVALC,0x6E48,INVALC, 0x6E4F,INVALC,0x6E42,0x6E6A,0x6E70,0x6DFE,INVALC,INVALC, 0x6E6D,INVALC,0x6E7B,0x6E7E,0x6E59,INVALC,0x6E57,INVALC, 0x6E80,0x6E50,INVALC,0x6E29,0x6E76,0x6E2A,0x6E4C,0x712A, INVALC,0x7135,0x712C,0x7137,0x711D,INVALC,INVALC,0x7138, INVALC,0x7134,0x712B,0x7133,0x7127,0x7124,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 62, Array index 0x1D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x712D,0x7232,0x7283,0x7282,0x7287,0x7306,0x7324, 0x7338,0x732A,0x732C,0x732B,INVALC,0x732F,0x7328,0x7417, INVALC,INVALC,0x7419,0x7438,INVALC,0x741F,0x7414,0x743C, 0x73F7,0x741C,0x7415,0x7418,0x7439,0x74F9,0x7524,INVALC, INVALC,INVALC,0x756E,0x756D,0x7571,0x758E,INVALC,0x75E5, INVALC,INVALC,INVALC,INVALC,0x7694,0x76B3,INVALC,0x76D9, INVALC,0x7748,0x7749,0x7743,INVALC,INVALC,0x7742,0x77DF, INVALC,0x7863,0x7876,INVALC,0x785F,0x7866,0x7966,0x7971, INVALC,INVALC,0x7976,0x7984,0x7975,0x79FF,0x7A07,INVALC, 0x7A0E,0x7A09,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7AE7,0x7AE2,0x7B55,INVALC,INVALC,0x7B43,0x7B57,0x7B6C, 0x7B42,0x7B53,INVALC,0x7B41,INVALC,INVALC,0x7CA7,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 63, Array index 0x1E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7CA0,0x7CA6,0x7CA4,0x7D74,INVALC,0x7D59,INVALC, 0x7D60,0x7D57,0x7D6C,0x7D7E,0x7D64,INVALC,0x7D5A,0x7D5D, INVALC,INVALC,INVALC,0x7D76,0x7D4D,0x7D75,INVALC,0x7FD3, 0x7FD6,INVALC,INVALC,0x8060,0x804E,0x8145,0x813B,INVALC, 0x8148,0x8142,0x8149,0x8140,0x8114,0x8141,INVALC,0x81EF, 0x81F6,0x8203,INVALC,0x83ED,INVALC,0x83DA,0x8418,0x83D2, 0x8408,INVALC,0x8400,INVALC,INVALC,INVALC,0x8417,0x8346, 0x8414,0x83D3,0x8405,0x841F,0x8402,0x8416,0x83CD,0x83E6, INVALC,0x865D,0x86D5,0x86E1,INVALC,INVALC,INVALC,INVALC, 0x86EE,0x8847,0x8846,INVALC,INVALC,0x88BB,INVALC,0x88BF, 0x88B4,INVALC,0x88B5,INVALC,0x899A,0x8A43,INVALC,INVALC, 0x8A5A,INVALC,INVALC,INVALC,0x8A35,0x8A38,0x8A42,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 64, Array index 0x1F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8A49,0x8A5D,0x8A4B,0x8A3D,INVALC,INVALC,INVALC, INVALC,0x8C60,0x8C5E,0x8C7F,0x8C7E,0x8C83,INVALC,0x8CB1, 0x8D87,INVALC,INVALC,0x8D88,0x8D83,INVALC,INVALC,0x8D86, 0x8D8B,0x8D82,0x8DCA,0x8DD2,INVALC,INVALC,0x8DD4,0x8DC9, 0x8EB0,INVALC,INVALC,INVALC,0x8EF2,0x8EE4,0x8EF3,0x8EEA, INVALC,0x8EFD,INVALC,0x8F9D,0x902B,0x902A,INVALC,0x9028, 0x9029,0x902C,INVALC,INVALC,0x903A,0x9030,0x9037,0x903B, INVALC,0x910A,INVALC,INVALC,INVALC,0x91FE,0x9220,INVALC, 0x920B,INVALC,0x9218,0x9222,INVALC,0x921B,0x9208,INVALC, 0x920E,0x9213,INVALC,INVALC,0x9595,INVALC,INVALC,INVALC, 0x968C,0x967B,0x967F,0x9681,INVALC,0x9682,INVALC,INVALC, INVALC,INVALC,INVALC,0x96EE,0x96ED,INVALC,0x96EC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 65, Array index 0x2000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x975F,0x976F,INVALC,0x976D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x98F0,INVALC,INVALC,INVALC,0x9AA9, INVALC,INVALC,0x9AE0,0x4EB7,INVALC,INVALC,0x50CC,0x50BC, INVALC,0x50AA,0x50B9,INVALC,0x50AB,0x50C3,0x50CD,0x517E, 0x527E,0x5279,INVALC,INVALC,0x52E1,0x52E0,0x52E7,0x5380, 0x53AB,0x53AA,0x53A9,0x53E0,0x55EA,INVALC,0x55D7,INVALC, INVALC,0x55C1,0x5715,INVALC,0x586C,INVALC,0x585C,0x5850, 0x5861,0x586A,0x5869,0x5856,0x5860,0x5866,0x585F,0x5923, 0x5966,0x5968,INVALC,INVALC,0x5ACE,INVALC,0x5AC5,0x5AC3, INVALC,INVALC,0x5AD0,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5B74,0x5B76,0x5BDC,0x5BD7,0x5BDA,0x5BDB,INVALC, 0x5C20,0x5D6D,0x5D66,INVALC,0x5D64,0x5D6E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 66, Array index 0x2100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5D60,0x5F42,0x5F5A,0x5F6E,INVALC,INVALC,0x6130, 0x613A,0x612A,0x6143,0x6119,0x6131,INVALC,0x613D,INVALC, INVALC,INVALC,0x6408,0x6432,0x6438,INVALC,0x6431,INVALC, 0x6419,INVALC,0x6411,INVALC,INVALC,0x6429,0x641D,INVALC, INVALC,INVALC,0x643C,INVALC,0x6446,0x6447,INVALC,INVALC, 0x643A,0x6407,INVALC,0x656B,INVALC,0x6570,0x656D,INVALC, 0x65E4,0x6693,INVALC,INVALC,INVALC,INVALC,0x668F,INVALC, INVALC,0x6692,INVALC,0x668E,INVALC,0x6946,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6931,INVALC,INVALC, 0x693E,INVALC,0x697C,0x6943,INVALC,0x6973,INVALC,0x6955, INVALC,INVALC,0x6985,0x694D,0x6950,0x6947,0x6967,0x6936, 0x6964,0x6961,INVALC,0x697D,0x6B44,0x6B40,0x6B71,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 67, Array index 0x2200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6B73,0x6B9C,INVALC,INVALC,INVALC,0x6BC1,INVALC, 0x6BFA,0x6C31,0x6C32,INVALC,INVALC,0x6EB8,0x6EA8,INVALC, 0x6E91,0x6EBB,INVALC,0x6E9A,INVALC,INVALC,0x6EA9,INVALC, INVALC,0x6EB5,0x6E6C,0x6EE8,INVALC,0x6EDD,0x6EDA,0x6EE6, 0x6EAC,INVALC,INVALC,INVALC,0x6ED9,0x6EE3,0x6EE9,0x6EDB, INVALC,0x716F,INVALC,INVALC,0x7148,INVALC,0x714A,0x716B, INVALC,0x714F,0x7157,0x7174,INVALC,INVALC,INVALC,0x7145, 0x7151,0x716D,INVALC,0x7251,0x7250,0x724E,INVALC,0x7341, INVALC,0x732E,0x7346,INVALC,0x7427,INVALC,0x7448,0x7453, 0x743D,INVALC,0x745D,0x7456,INVALC,0x741E,0x7447,0x7443, 0x7458,0x7449,INVALC,0x744C,0x7445,0x743E,INVALC,0x7501, 0x751E,INVALC,INVALC,0x757A,0x75EE,0x7602,0x7697,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 68, Array index 0x2300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7698,INVALC,INVALC,INVALC,0x775D,0x7764,0x7753, 0x7758,0x7882,0x7890,0x788A,INVALC,0x787A,0x787D,INVALC, 0x788B,0x7878,INVALC,INVALC,0x788D,0x7888,0x7892,0x7881, 0x797E,0x7983,INVALC,INVALC,INVALC,0x7980,INVALC,INVALC, INVALC,0x7A0F,INVALC,INVALC,0x7A1D,INVALC,0x7AA1,0x7AA4, INVALC,0x7AE9,0x7AEA,INVALC,0x7B62,0x7B6B,INVALC,0x7B5E, INVALC,0x7B79,INVALC,INVALC,0x7B6F,0x7B68,INVALC,INVALC, 0x7CAE,INVALC,INVALC,INVALC,0x7CB0,INVALC,0x7D90,INVALC, 0x7D8A,INVALC,0x7D8B,0x7D99,0x7D95,INVALC,0x7D87,0x7D78, 0x7D97,0x7D89,0x7D98,INVALC,INVALC,INVALC,0x7FA3,INVALC, INVALC,INVALC,0x7FDD,0x8057,INVALC,0x8163,0x816A,0x816C, INVALC,INVALC,INVALC,0x815D,0x8175,INVALC,0x815F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 69, Array index 0x2400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x817D,0x816D,INVALC,INVALC,0x8241,0x844F, 0x8484,INVALC,0x847F,INVALC,0x8448,0x842A,0x847B,0x8472, 0x8464,0x842E,0x845C,0x8453,INVALC,0x8441,0x84C8,INVALC, 0x8462,0x8480,0x843E,0x8483,0x8471,INVALC,0x844A,0x8455, 0x8458,INVALC,INVALC,INVALC,0x86FC,0x86FD,0x8715,INVALC, 0x8716,0x86FF,INVALC,INVALC,INVALC,0x8858,0x88CF,0x88E0, INVALC,INVALC,INVALC,INVALC,0x89E7,0x8A6A,0x8A80,INVALC, 0x8A6F,0x8A65,INVALC,0x8A78,0x8A7D,0x8A88,INVALC,INVALC, 0x8A64,0x8A7E,INVALC,0x8A67,0x8C63,0x8C88,INVALC,0x8CCD, INVALC,0x8CC9,INVALC,0x8DED,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x8EB1,INVALC,INVALC,0x8F04,0x8F9E, 0x8FA0,0x9043,0x9046,0x9048,0x9045,0x9040,0x904C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 70, Array index 0x2500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x910C,0x9113,0x9115,INVALC,0x916B, 0x9167,0x925D,0x9255,0x9235,INVALC,0x9259,0x922F,0x923C, 0x928F,0x925C,0x926A,0x9262,0x925F,0x926B,0x926E,0x923B, 0x9244,0x9241,0x959A,INVALC,0x9599,INVALC,INVALC,INVALC, 0x968F,INVALC,0x9696,INVALC,INVALC,INVALC,0x96F4,0x96FC, INVALC,0x9755,INVALC,0x9779,INVALC,INVALC,INVALC,0x97EE, 0x97F5,INVALC,0x980B,INVALC,0x98F3,INVALC,INVALC,0x98F7, 0x98FF,0x98F5,INVALC,0x98EC,0x98F1,INVALC,INVALC,0x999A, INVALC,0x9AE2,0x9B3D,0x9B5D,0x9CE8,INVALC,0x9CEB,0x9CEF, 0x9CEE,0x9E81,0x9F14,0x50D0,0x50D9,0x50DC,0x50D8,INVALC, 0x50E1,0x50EB,INVALC,INVALC,0x50F4,0x50E2,0x50DE,INVALC, INVALC,INVALC,0x51F4,INVALC,INVALC,INVALC,0x52ED,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 71, Array index 0x2600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x52EA,INVALC,0x5332,INVALC,0x53AE,0x53B0,INVALC, 0x55FB,0x5603,0x560B,INVALC,0x5607,INVALC,0x55F8,INVALC, 0x5628,0x561E,INVALC,0x5618,0x5611,0x5651,0x5605,0x5717, 0x5892,INVALC,0x588C,INVALC,0x5878,0x5884,0x5873,0x58AD, 0x5897,0x5895,0x5877,0x5872,0x5896,0x588D,0x5910,INVALC, 0x596C,INVALC,0x5AE7,INVALC,0x5AE4,INVALC,INVALC,0x5AEF, 0x5626,INVALC,INVALC,0x5AF0,0x5D7B,INVALC,0x5D83,INVALC, INVALC,0x5D8B,0x5D8C,INVALC,0x5D78,0x5E52,INVALC,INVALC, 0x5ED0,0x5ECF,INVALC,0x5FB3,0x5FB4,INVALC,INVALC,INVALC, 0x617B,INVALC,0x616F,0x6181,0x613C,0x6142,0x6138,0x6133, INVALC,0x6160,0x6169,0x617D,0x6186,0x622C,0x6228,INVALC, 0x644C,INVALC,0x6457,0x647C,INVALC,INVALC,0x6455,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 72, Array index 0x2700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6462,0x6471,0x646A,0x6456,0x643B,0x6481,INVALC, 0x644F,0x647E,0x6464,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6571,INVALC,INVALC,0x66A5,0x669A,0x669C,INVALC,0x66A6, INVALC,0x66A4,0x698F,0x69C5,0x69C8,0x6992,0x69B2,INVALC, INVALC,INVALC,0x69E3,0x69C0,0x69D6,0x69D1,0x699F,0x69A2, 0x69D2,INVALC,INVALC,INVALC,0x69E1,0x69D5,0x699D,INVALC, INVALC,0x6998,INVALC,0x6B74,0x6BA1,INVALC,0x6EF0,0x6EF3, INVALC,INVALC,0x6F1B,0x6F0C,0x6F1D,0x6F34,0x6F28,0x6F17, INVALC,0x6F44,0x6F42,0x6F04,0x6F11,0x6EFA,0x6F4A,0x7191, 0x718E,INVALC,0x718B,0x718D,0x717F,0x718C,0x717E,0x717C, 0x7183,INVALC,0x7188,INVALC,INVALC,0x7294,INVALC,0x7355, 0x7353,0x734F,0x7354,0x746C,0x7465,0x7466,0x7461,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 73, Array index 0x2800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x746B,0x7468,0x7476,INVALC,0x7460,INVALC,0x7474, 0x7506,0x760E,INVALC,0x7607,INVALC,INVALC,0x76B9,INVALC, 0x76B7,0x76E2,INVALC,0x7774,0x7777,0x7776,0x7775,INVALC, 0x7778,0x7771,INVALC,0x777A,0x715B,0x777B,0x78A6,0x78AE, 0x78B8,INVALC,INVALC,INVALC,0x78B1,0x78AF,INVALC,0x7989, 0x7987,INVALC,INVALC,0x7A29,INVALC,0x7A2A,INVALC,0x7A2D, 0x7A2C,INVALC,0x7A32,INVALC,0x7AEC,0x7AF0,0x7B81,0x7B9E, 0x7B83,INVALC,0x7B92,INVALC,0x7BA3,0x7B9F,0x7B93,INVALC, 0x7B86,0x7CB8,0x7CB7,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7DC8,0x7DB6,INVALC,0x7DD1,INVALC,0x7DA8,0x7DAB,INVALC, 0x7DB3,0x7DCD,INVALC,0x7DCF,0x7DA4,INVALC,INVALC,0x7F41, 0x7F6F,0x7F71,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 74, Array index 0x2900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x8023,0x805B,INVALC,0x8061,0x805F,0x8181, INVALC,INVALC,0x8184,0x8213,INVALC,0x824A,0x824C,INVALC, INVALC,INVALC,0x84BD,0x8495,INVALC,0x8492,0x84C3,INVALC, 0x8496,0x84A5,0x84B5,0x84B3,0x84A3,0x84E4,0x84D8,0x84D5, INVALC,0x84B7,0x84AD,0x84DA,0x8493,0x8736,INVALC,INVALC, INVALC,0x873D,0x872B,0x8747,0x8739,INVALC,0x8745,0x871D, INVALC,0x88FF,0x88EA,INVALC,0x88F5,INVALC,0x8900,0x88ED, 0x8903,0x88E9,INVALC,INVALC,0x89EA,INVALC,0x8A9B,0x8A8E, 0x8AA2,INVALC,0x8A9C,0x8A94,0x8A90,0x8AA9,0x8AAC,INVALC, 0x8A9F,INVALC,INVALC,0x8A9D,INVALC,0x8C67,INVALC,INVALC, 0x8CD0,0x8CD6,0x8CD4,0x8D98,0x8D9A,0x8D97,INVALC,INVALC, INVALC,0x8E0B,0x8E08,0x8E01,0x8EB4,0x8EB3,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 75, Array index 0x2A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8FA1,0x8FA2,INVALC,0x905A,INVALC,0x9061,0x905F, INVALC,INVALC,0x9125,0x917B,0x9176,0x917C,INVALC,0x9289, 0x92F6,0x92B1,0x92AD,0x9292,0x9281,0x9284,INVALC,0x92AE, 0x9290,0x929E,INVALC,INVALC,INVALC,0x95A2,0x95A7,INVALC, INVALC,INVALC,INVALC,INVALC,0x96A0,0x969D,0x969F,0x96D0, INVALC,0x96D1,INVALC,INVALC,0x9759,INVALC,0x9764,INVALC, INVALC,INVALC,0x9819,INVALC,0x9814,0x9815,0x981A,INVALC, INVALC,INVALC,INVALC,0x9906,INVALC,0x98F8,0x9901,INVALC, 0x99BE,0x99BC,0x99B7,0x99B6,0x99C0,INVALC,0x99B8,INVALC, INVALC,INVALC,0x99C4,INVALC,0x99BF,INVALC,0x9ADA,0x9AE4, 0x9AE9,0x9AE8,0x9AEA,0x9AE5,INVALC,0x9B26,INVALC,INVALC, 0x9B40,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 76, Array index 0x2B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x9EBD,INVALC,INVALC,INVALC,INVALC,0x510E, INVALC,0x50F7,INVALC,0x50FC,0x510D,0x5101,0x51DA,0x51D9, 0x51DB,0x5286,0x528E,0x52EE,0x5333,0x53B1,INVALC,0x5647, 0x562D,0x5654,INVALC,0x564B,0x5652,0x5631,0x5644,0x5656, 0x5650,0x562B,INVALC,0x564D,0x5637,0x564F,0x58A2,0x58B7, INVALC,0x58B2,INVALC,0x58AA,0x58B5,0x58B0,INVALC,0x58B4, 0x58A4,0x58A7,INVALC,0x5926,0x5AFE,INVALC,0x5B04,INVALC, 0x5AFC,INVALC,0x5B06,0x5B0A,0x5AFA,0x5B0D,0x5B00,0x5B0E, INVALC,INVALC,INVALC,0x5D91,INVALC,0x5D8F,0x5D90,0x5D98, 0x5DA4,0x5D9B,0x5DA3,0x5D96,0x5DE4,0x5E5A,INVALC,INVALC, 0x5E5E,INVALC,0x5FB8,0x6157,0x615C,0x61A6,0x6195,0x6188, INVALC,0x61A3,0x618F,INVALC,0x6164,INVALC,0x6159,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 77, Array index 0x2C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6178,INVALC,0x6185,0x6187,0x619E,INVALC,INVALC, 0x6198,0x619C,INVALC,INVALC,0x622F,0x6480,0x649B,0x648E, 0x648D,0x6494,0x64C6,INVALC,0x64A8,0x6483,INVALC,0x64B9, 0x6486,0x64B4,0x64AF,0x6491,INVALC,0x64AA,0x64A1,0x64A7, 0x66B6,0x66B3,INVALC,0x66BC,0x66AC,INVALC,0x66AD,0x6A0E, INVALC,0x6A1C,0x6A1A,INVALC,INVALC,0x6A0B,INVALC,0x69EF, 0x6A0C,0x69F0,0x6A22,INVALC,0x69D8,INVALC,0x6A12,0x69FA, INVALC,0x6A2A,INVALC,0x6A10,INVALC,INVALC,0x6A29,0x69F9, 0x69EA,0x6A2C,0x6A24,INVALC,0x69E9,0x6B52,0x6B4F,0x6B53, INVALC,INVALC,0x6F10,0x6F65,0x6F75,INVALC,INVALC,INVALC, INVALC,0x6FD0,INVALC,0x6F5C,0x6F3D,0x6F71,INVALC,0x6F91, 0x6F0B,0x6F79,0x6F81,0x6F8F,INVALC,0x6F59,0x6F74,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 78, Array index 0x2D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x71AE,INVALC,0x71A3,0x71AD,INVALC,INVALC, 0x71AB,0x71A6,0x71A2,INVALC,0x52F2,0x7257,0x7255,0x7299, 0x734B,0x747A,INVALC,INVALC,INVALC,0x748C,0x7484,INVALC, INVALC,0x7482,0x7493,0x747B,INVALC,0x7509,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x778A,INVALC,0x7790,INVALC, 0x78C6,0x78D3,0x78C0,0x78D2,0x78C7,0x78C2,INVALC,0x799F, 0x799D,0x799E,INVALC,0x7A41,INVALC,0x7A38,0x7A3A,0x7A42, INVALC,INVALC,0x7A3E,0x7AB0,0x7BAE,0x7BB3,INVALC,INVALC, 0x7BBF,INVALC,INVALC,0x7BCD,INVALC,0x7BB2,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7CC4,0x7CCD,0x7CC2, 0x7CC6,0x7CC3,0x7CC9,0x7CC7,INVALC,0x7DF8,INVALC,0x7DED, 0x7DE2,INVALC,INVALC,INVALC,0x7DDC,0x7E02,0x7E01,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 79, Array index 0x2E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7DD6,INVALC,0x7DE4,0x7DFE,INVALC,0x7E00, 0x7DFC,0x7DFD,INVALC,0x7DF5,0x7DFF,INVALC,0x7DEB,0x7DE5, 0x7F78,0x7FAE,0x7FE7,INVALC,0x8065,0x806A,0x8066,0x8068, 0x806B,0x8194,0x81A1,0x8192,0x8196,0x8193,INVALC,INVALC, 0x8501,INVALC,0x84F8,INVALC,0x84F5,INVALC,0x8504,INVALC, INVALC,INVALC,INVALC,0x851B,0x8503,0x8533,0x8534,0x84ED, INVALC,INVALC,0x8535,INVALC,0x8505,INVALC,INVALC,INVALC, INVALC,0x877D,INVALC,INVALC,INVALC,0x8771,INVALC,0x885C, 0x88E6,0x890F,0x891B,INVALC,0x89A9,0x89A5,0x89EE,0x8AB1, INVALC,0x8ACC,0x8ACE,INVALC,0x8AB7,INVALC,0x8AB5,0x8AE9, 0x8AB4,INVALC,0x8AB3,0x8AC1,0x8AAF,0x8ACA,0x8AD0,INVALC, INVALC,INVALC,0x8C8E,INVALC,INVALC,0x8CE9,0x8CDB,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 80, Array index 0x2F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x8CEB,0x8DA4,INVALC,0x8DA2,0x8D9D,INVALC, INVALC,INVALC,INVALC,0x8E2A,0x8E28,INVALC,INVALC,0x8EB8, 0x8EB6,0x8EB9,0x8EB7,0x8F22,0x8F2B,0x8F27,0x8F19,0x8FA4, INVALC,0x8FB3,INVALC,0x9071,0x906A,INVALC,INVALC,0x9188, 0x918C,0x92BF,0x92B8,0x92BE,0x92DC,0x92E5,INVALC,INVALC, 0x92D4,0x92D6,INVALC,0x92DA,0x92ED,0x92F3,0x92DB,INVALC, 0x92B9,0x92E2,0x92EB,0x95AF,INVALC,0x95B2,0x95B3,INVALC, INVALC,INVALC,0x96A3,0x96A5,INVALC,INVALC,INVALC,INVALC, 0x970A,INVALC,0x9787,0x9789,0x978C,0x97EF,0x982A,0x9822, INVALC,0x981F,INVALC,0x9919,INVALC,0x99CA,0x99DA,INVALC, INVALC,INVALC,0x99DE,0x99C8,0x99E0,INVALC,0x9AB6,0x9AB5, INVALC,0x9AF4,INVALC,0x9B6B,0x9B69,0x9B72,0x9B63,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 81, Array index 0x3000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x9D0D,INVALC,0x9D01,0x9D0C,INVALC,0x9CF8, INVALC,INVALC,0x9CFE,0x9D02,0x9E84,INVALC,0x9EAB,0x9EAA, 0x511D,0x5116,INVALC,0x512B,0x511E,0x511B,0x5290,0x5294, 0x5314,INVALC,INVALC,0x5667,INVALC,0x567B,INVALC,0x565F, 0x5661,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x58C3,0x58CA,0x58BB,0x58C0,0x58C4,0x5901,0x5B1F,0x5B18, 0x5B11,0x5B15,INVALC,0x5B12,0x5B1C,INVALC,0x5B22,0x5B79, 0x5DA6,INVALC,0x5DB3,0x5DAB,0x5EEA,INVALC,0x5F5B,INVALC, INVALC,0x61B7,0x61CE,0x61B9,0x61BD,0x61CF,0x61C0,0x6199, 0x6197,INVALC,0x61BB,0x61D0,0x61C4,0x6231,INVALC,0x64D3, 0x64C0,INVALC,INVALC,INVALC,INVALC,0x64DC,0x64D1,0x64C8, INVALC,0x64D5,0x66C3,INVALC,INVALC,0x66BF,0x66C5,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 82, Array index 0x3100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x66CD,0x66C1,0x6706,INVALC,0x6724,0x6A63, 0x6A42,0x6A52,INVALC,0x6A43,0x6A33,INVALC,0x6A6C,0x6A57, INVALC,0x6A4C,0x6A6E,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6A37,INVALC,0x6A71,0x6A4A,0x6A36,INVALC,0x6A53,INVALC, 0x6A45,0x6A70,INVALC,INVALC,0x6A5C,0x6B58,0x6B57,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6FBB,INVALC,INVALC, 0x6FBE,INVALC,INVALC,INVALC,0x6FB5,0x6FD3,0x6F9F,INVALC, 0x6FB7,0x6FF5,0x71B7,INVALC,0x71BB,INVALC,0x71D1,INVALC, 0x71BA,INVALC,0x71B6,0x71CC,INVALC,INVALC,0x71D3,0x749B, INVALC,INVALC,0x7496,0x74A2,0x749D,0x750A,0x750E,INVALC, 0x7581,0x762C,0x7637,0x7636,0x763B,INVALC,0x76A1,INVALC, INVALC,0x7798,INVALC,0x7796,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 83, Array index 0x3200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x78D6,0x78EB,INVALC,0x78DC,INVALC,0x79A5,0x79A9, 0x9834,0x7A53,0x7A45,INVALC,0x7A4F,INVALC,0x7ABD,0x7ABB, 0x7AF1,INVALC,INVALC,0x7BEC,0x7BED,INVALC,INVALC,0x7CD3, INVALC,0x7CE1,INVALC,0x7E19,INVALC,INVALC,INVALC,0x7E27, 0x7E26,INVALC,INVALC,0x806E,0x81AF,INVALC,INVALC,0x81AD, INVALC,0x81AA,0x8218,INVALC,INVALC,INVALC,INVALC,0x856F, 0x854C,INVALC,0x8542,INVALC,0x855C,0x8570,0x855F,INVALC, 0x855A,0x854B,0x853F,0x878A,INVALC,0x878B,0x87A1,0x878E, INVALC,INVALC,0x8799,0x885E,0x885F,0x8924,0x89A7,0x8AEA, 0x8AFD,0x8AF9,0x8AE3,0x8AE5,INVALC,INVALC,0x8AEC,INVALC, INVALC,INVALC,INVALC,0x8CF2,INVALC,0x8CEF,INVALC,0x8DA6, INVALC,INVALC,INVALC,0x8E3B,0x8E43,INVALC,0x8E32,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 84, Array index 0x3300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8F31,0x8F30,INVALC,0x8F2D,0x8F3C,0x8FA7,0x8FA5, INVALC,INVALC,INVALC,0x9137,0x9195,0x918E,INVALC,0x9196, INVALC,0x9345,0x930A,INVALC,INVALC,0x92FD,0x9317,0x931C, 0x9307,0x9331,0x9332,0x932C,0x9330,0x9303,0x9305,INVALC, 0x95C2,INVALC,0x95B8,INVALC,0x95C1,INVALC,INVALC,INVALC, 0x96AB,0x96B7,INVALC,INVALC,0x9715,0x9714,INVALC,INVALC, 0x970C,0x9717,INVALC,0x9793,INVALC,0x97D2,INVALC,INVALC, 0x9836,0x9831,0x9833,0x983C,0x982E,0x983A,INVALC,0x983D, INVALC,0x98B5,0x9922,0x9923,0x9920,0x991C,0x991D,INVALC, 0x99A0,INVALC,0x99EF,0x99E8,0x99EB,INVALC,INVALC,INVALC, 0x99E1,0x99E6,INVALC,INVALC,0x9AF8,0x9AF5,INVALC,INVALC, 0x9B83,0x9B94,0x9B84,INVALC,0x9B8B,0x9B8F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 85, Array index 0x3400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9B8C,INVALC,0x9B89,INVALC,0x9B8E,INVALC,INVALC, INVALC,0x9D24,0x9D0F,INVALC,0x9D13,0x9D0A,INVALC,INVALC, INVALC,INVALC,0x9D2A,0x9D1A,INVALC,0x9D27,0x9D16,0x9D21, INVALC,0x9E85,0x9EAC,0x9EC6,0x9EC5,0x9ED7,0x9F53,INVALC, 0x5128,0x5127,0x51DF,INVALC,0x5335,0x53B3,INVALC,0x568A, 0x567D,0x5689,INVALC,0x58CD,0x58D0,INVALC,0x5B2B,0x5B33, 0x5B29,0x5B35,0x5B31,0x5B37,0x5C36,0x5DBE,INVALC,0x5DB9, INVALC,0x5DBB,INVALC,0x61E2,0x61DB,0x61DD,0x61DC,0x61DA, INVALC,0x61D9,INVALC,INVALC,0x64DF,INVALC,INVALC,0x64E1, INVALC,0x64EE,INVALC,0x65B5,0x66D4,0x66D5,INVALC,0x66D0, 0x66D1,0x66CE,0x66D7,INVALC,INVALC,0x6A7D,0x6A8A,INVALC, 0x6AA7,INVALC,0x6A99,0x6A82,0x6A88,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 86, Array index 0x3500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6A86,INVALC,0x6A98,0x6A9D,INVALC,INVALC,0x6A8F, INVALC,0x6AAA,INVALC,0x6B5D,INVALC,0x6C0A,INVALC,0x6FD7, 0x6FD6,0x6FE5,INVALC,INVALC,INVALC,0x6FD9,0x6FDA,0x6FEA, INVALC,0x6FF6,INVALC,INVALC,0x71E3,INVALC,0x71E9,INVALC, 0x71EB,0x71EF,0x71F3,0x71EA,INVALC,INVALC,INVALC,INVALC, INVALC,0x7371,INVALC,0x74AE,INVALC,0x74B3,INVALC,0x74AC, INVALC,INVALC,0x7583,0x7645,0x764E,0x7644,0x76A3,0x76A5, 0x77A6,0x77A4,INVALC,0x77A9,0x77AF,INVALC,INVALC,INVALC, 0x78F0,0x78F8,0x78F1,INVALC,0x7A49,INVALC,INVALC,INVALC, 0x7AC2,0x7AF2,0x7AF3,0x7BFA,INVALC,0x7BF6,0x7BFC,0x7C18, 0x7C08,0x7C12,INVALC,INVALC,0x7CDB,0x7CDA,INVALC,INVALC, INVALC,0x7E2C,0x7E4D,INVALC,INVALC,0x7F46,0x7FF6,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 87, Array index 0x3600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x802B,0x8074,0x81B8,0x81C8,INVALC,INVALC,INVALC, 0x8592,0x8593,INVALC,0x857F,0x85AB,0x8597,INVALC,INVALC, 0x85AC,INVALC,INVALC,INVALC,0x87CE,INVALC,0x87CD,INVALC, INVALC,0x87C1,0x87B1,0x87C7,INVALC,0x8940,INVALC,0x893F, 0x8939,INVALC,0x8943,INVALC,INVALC,INVALC,0x89AB,INVALC, 0x8B1F,0x8B09,0x8B0C,INVALC,INVALC,0x8C40,INVALC,0x8C96, INVALC,0x8CF6,0x8CF7,INVALC,0x8E46,0x8E4F,INVALC,INVALC, INVALC,0x8F3D,0x8F41,0x9366,0x9378,0x935D,0x9369,0x9374, 0x937D,0x936E,0x9372,0x9373,0x9362,0x9348,0x9353,0x935F, 0x9368,INVALC,0x937F,0x936B,INVALC,0x95C4,INVALC,0x96AF, 0x96AD,0x96B2,INVALC,INVALC,0x971A,0x971B,INVALC,INVALC, INVALC,INVALC,0x979B,0x979F,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 88, Array index 0x3700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x9840,INVALC, 0x9847,INVALC,0x98B7,INVALC,INVALC,INVALC,INVALC,INVALC, 0x99A2,INVALC,INVALC,0x9A00,0x99F3,INVALC,INVALC,0x99F5, INVALC,INVALC,0x9ABD,0x9B00,0x9B02,INVALC,0x9B34,0x9B49, 0x9B9F,INVALC,0x9BA3,0x9BCD,0x9B99,0x9B9D,INVALC,INVALC, 0x9D39,INVALC,0x9D44,INVALC,INVALC,0x9D35,INVALC,INVALC, 0x9EAF,INVALC,0x512F,INVALC,INVALC,0x9F8E,INVALC,0x569F, 0x569B,0x569E,0x5696,0x5694,0x56A0,INVALC,0x5B3B,INVALC, INVALC,0x5B3A,0x5DC1,0x5F4D,0x5F5D,0x61F3,INVALC,INVALC, INVALC,INVALC,0x64F6,0x64E5,0x64EA,0x64E7,0x6505,INVALC, 0x64F9,INVALC,INVALC,INVALC,0x6AAB,0x6AED,0x6AB2,0x6AB0, 0x6AB5,0x6ABE,0x6AC1,0x6AC8,INVALC,0x6AC0,0x6ABC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 89, Array index 0x3800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6AB1,0x6AC4,0x6ABF,INVALC,INVALC,0x7008,0x7003, 0x6FFD,0x7010,0x7002,0x7013,INVALC,0x71FA,0x7200,0x74B9, 0x74BC,INVALC,0x765B,0x7651,0x764F,0x76EB,0x77B8,INVALC, 0x77B9,0x77C1,0x77C0,0x77BE,0x790B,INVALC,0x7907,0x790A, 0x7908,INVALC,0x790D,0x7906,0x7915,0x79AF,INVALC,INVALC, INVALC,0x7AF5,INVALC,INVALC,0x7C2E,INVALC,0x7C1B,INVALC, 0x7C1A,0x7C24,INVALC,INVALC,0x7CE6,0x7CE3,INVALC,INVALC, 0x7E5D,0x7E4F,0x7E66,0x7E5B,0x7F47,0x7FB4,INVALC,INVALC, INVALC,0x7FFA,0x802E,INVALC,INVALC,0x81CE,INVALC,INVALC, 0x8219,INVALC,INVALC,0x85CC,0x85B2,INVALC,0x85BB,0x85C1, INVALC,INVALC,INVALC,0x87E9,0x87EE,0x87F0,0x87D6,0x880E, 0x87DA,0x8948,0x894A,0x894E,0x894D,0x89B1,0x89B0,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 90, Array index 0x3900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x89B3,INVALC,0x8B38,0x8B32,INVALC,0x8B2D,INVALC, 0x8B34,INVALC,0x8B29,0x8C74,INVALC,INVALC,0x8D03,INVALC, INVALC,0x8DA9,0x8E58,INVALC,INVALC,0x8EBF,0x8EC1,0x8F4A, 0x8FAC,INVALC,0x9089,0x913D,0x913C,0x91A9,0x93A0,INVALC, 0x9390,INVALC,0x9393,0x938B,0x93AD,0x93BB,0x93B8,INVALC, INVALC,0x939C,0x95D8,0x95D7,INVALC,INVALC,INVALC,0x975D, 0x97A9,0x97DA,INVALC,INVALC,INVALC,INVALC,0x9854,INVALC, 0x9855,0x984B,INVALC,0x983F,0x98B9,INVALC,INVALC,INVALC, INVALC,0x9938,0x9936,0x9940,INVALC,0x993B,0x9939,0x99A4, INVALC,INVALC,0x9A08,0x9A0C,INVALC,0x9A10,INVALC,0x9B07, INVALC,0x9BD2,INVALC,0x9BC2,0x9BBB,0x9BCC,0x9BCB,INVALC, INVALC,0x9D4D,0x9D63,0x9D4E,INVALC,0x9D50,0x9D55,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 91, Array index 0x3A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x9D5E,INVALC,0x9E90,0x9EB2,0x9EB1,INVALC, 0x9ECA,0x9F02,0x9F27,0x9F26,INVALC,0x56AF,0x58E0,0x58DC, INVALC,0x5B39,INVALC,INVALC,0x5B7C,0x5BF3,INVALC,INVALC, 0x5C6B,0x5DC4,0x650B,0x6508,0x650A,INVALC,INVALC,0x65DC, INVALC,INVALC,0x66E1,0x66DF,0x6ACE,0x6AD4,0x6AE3,0x6AD7, 0x6AE2,INVALC,INVALC,INVALC,INVALC,0x6AD8,0x6AD5,0x6AD2, INVALC,INVALC,0x701E,0x702C,0x7025,0x6FF3,0x7204,0x7208, 0x7215,INVALC,0x74C4,0x74C9,0x74C7,0x74C8,0x76A9,0x77C6, 0x77C5,0x7918,0x791A,0x7920,INVALC,0x7A66,0x7A64,0x7A6A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7C35,0x7C34, INVALC,INVALC,0x7E6C,INVALC,0x7E6E,0x7E71,INVALC,0x81D4, 0x81D6,0x821A,0x8262,0x8265,0x8276,0x85DB,0x85D6,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 92, Array index 0x3B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x85E7,INVALC,INVALC,0x85F4,INVALC,0x87FD, 0x87D5,0x8807,INVALC,0x880F,0x87F8,INVALC,INVALC,0x8987, INVALC,0x89B5,0x89F5,INVALC,0x8B3F,0x8B43,0x8B4C,INVALC, 0x8D0B,0x8E6B,0x8E68,0x8E70,0x8E75,0x8E77,INVALC,0x8EC3, INVALC,0x93E9,0x93EA,0x93CB,0x93C5,0x93C6,INVALC,0x93ED, 0x93D3,INVALC,0x93E5,INVALC,INVALC,0x93DB,0x93EB,0x93E0, 0x93C1,INVALC,INVALC,0x95DD,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x97B2,0x97B4,0x97B1, 0x97B5,0x97F2,INVALC,INVALC,INVALC,0x9856,INVALC,INVALC, INVALC,0x9944,INVALC,0x9A26,0x9A1F,0x9A18,0x9A21,0x9A17, INVALC,0x9B09,INVALC,INVALC,0x9BC5,0x9BDF,INVALC,0x9BE3, INVALC,0x9BE9,0x9BEE,INVALC,INVALC,0x9D66,0x9D7A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 93, Array index 0x3C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x9D6E,0x9D91,0x9D83,0x9D76,0x9D7E,0x9D6D, INVALC,0x9E95,0x9EE3,INVALC,INVALC,0x9F03,0x9F04,INVALC, 0x9F17,INVALC,0x5136,INVALC,0x5336,INVALC,0x5B42,INVALC, INVALC,0x5B44,0x5B46,0x5B7E,0x5DCA,0x5DC8,0x5DCC,0x5EF0, INVALC,0x6585,0x66E5,0x66E7,INVALC,INVALC,INVALC,0x6AF4, INVALC,0x6AE9,INVALC,INVALC,INVALC,INVALC,INVALC,0x703D, INVALC,0x7036,INVALC,0x7216,INVALC,0x7212,0x720F,0x7217, 0x7211,0x720B,INVALC,INVALC,0x74CD,0x74D0,0x74CC,0x74CE, 0x74D1,INVALC,0x7589,INVALC,0x7A6F,0x7C4B,0x7C44,INVALC, INVALC,INVALC,INVALC,INVALC,0x7E7F,0x8B71,INVALC,0x802F, 0x807A,0x807B,0x807C,INVALC,INVALC,INVALC,0x85FC,0x8610, 0x8602,INVALC,INVALC,0x85EE,0x8603,INVALC,0x860D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 94, Array index 0x3D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8613,0x8608,0x860F,0x8818,0x8812,INVALC,INVALC, 0x8967,0x8965,0x89BB,0x8B69,0x8B62,INVALC,0x8B6E,INVALC, 0x8B61,INVALC,0x8B64,0x8B4D,0x8C51,INVALC,INVALC,0x8E83, 0x8EC6,INVALC,0x941F,INVALC,0x9404,0x9417,0x9408,0x9405, INVALC,0x93F3,0x941E,0x9402,0x941A,0x941B,0x9427,0x941C, INVALC,0x96B5,INVALC,INVALC,0x9733,INVALC,0x9734,0x9731, 0x97B8,0x97BA,INVALC,0x97FC,INVALC,INVALC,0x98C3,INVALC, 0x994D,INVALC,0x9A2F,INVALC,INVALC,INVALC,0x9AC9,INVALC, 0x9AC8,0x9AC4,0x9B2A,0x9B38,0x9B50,INVALC,0x9C0A,0x9BFB, 0x9C04,0x9BFC,0x9BFE,INVALC,INVALC,INVALC,0x9C02,0x9BF6, 0x9C1B,0x9BF9,0x9C15,0x9C10,0x9BFF,0x9C00,0x9C0C,INVALC, INVALC,0x9D95,0x9DA5,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 95, Array index 0x3E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9E98,0x9EC1,INVALC,0x9F5A,0x5164,0x56BB,INVALC, 0x58E6,0x5B49,0x5BF7,INVALC,INVALC,0x5DD0,INVALC,0x5FC2, INVALC,0x6511,INVALC,0x6AFF,0x6AFE,0x6AFD,INVALC,0x6B01, INVALC,INVALC,0x704B,0x704D,0x7047,0x74D3,0x7668,0x7667, INVALC,INVALC,0x77D1,0x7930,0x7932,0x792E,INVALC,0x9F9D, 0x7AC9,0x7AC8,INVALC,0x7C56,0x7C51,INVALC,INVALC,INVALC, 0x7E85,0x7E89,0x7E8E,0x7E84,INVALC,0x826A,0x862B,0x862F, 0x8628,INVALC,0x8616,0x8615,0x861D,0x881A,INVALC,INVALC, INVALC,0x89BC,0x8B75,0x8B7C,INVALC,0x8D11,0x8D12,0x8F5C, 0x91BB,INVALC,0x93F4,INVALC,INVALC,0x942D,INVALC,INVALC, 0x96E4,0x9737,0x9736,0x9767,0x97BE,0x97BD,0x97E2,0x9868, 0x9866,0x98C8,0x98CA,0x98C7,0x98DC,INVALC,0x994F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 96, Array index 0x3F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x99A9,0x9A3C,INVALC,0x9A3B,0x9ACE,INVALC,0x9B14, 0x9B53,INVALC,0x9C2E,INVALC,0x9C1F,INVALC,INVALC,INVALC, INVALC,0x9DB0,0x9DBD,INVALC,INVALC,0x9DAE,0x9DC4,0x9E7B, INVALC,INVALC,0x9E9E,INVALC,0x9F05,INVALC,0x9F69,0x9FA1, 0x56C7,0x571D,0x5B4A,0x5DD3,INVALC,0x5F72,0x6202,INVALC, 0x6235,0x6527,0x651E,0x651F,INVALC,INVALC,0x6B07,0x6B06, INVALC,INVALC,0x7054,0x721C,0x7220,0x7AF8,INVALC,0x7C5D, 0x7C58,INVALC,0x7E92,0x7F4E,INVALC,INVALC,INVALC,0x8827, INVALC,0x8B81,0x8B83,INVALC,0x8C44,INVALC,INVALC,INVALC, INVALC,0x9442,0x944D,0x9454,0x944E,INVALC,0x9443,INVALC, INVALC,0x973C,0x9740,0x97C0,INVALC,INVALC,INVALC,INVALC, 0x995A,0x9A51,INVALC,0x9ADD,INVALC,INVALC,0x9C38,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 97, Array index 0x4000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x9C45,0x9C3A,INVALC,0x9C35,INVALC,INVALC, INVALC,0x9EF1,INVALC,0x9F93,0x529A,INVALC,INVALC,0x8641, 0x5DD7,INVALC,0x6528,INVALC,INVALC,INVALC,0x7053,0x7059, INVALC,0x7221,INVALC,0x766F,0x7937,0x79B5,0x7C62,0x7C5E, 0x7CF5,INVALC,INVALC,0x863D,INVALC,0x882D,0x8989,0x8B8D, 0x8B87,0x8B90,0x8D1A,0x8E99,INVALC,INVALC,INVALC,0x945F, INVALC,INVALC,0x9456,0x9461,0x945B,0x945A,0x945C,0x9465, INVALC,0x9741,INVALC,INVALC,0x986E,0x986C,0x986D,INVALC, 0x99AA,0x9A5C,0x9A58,0x9ADE,INVALC,0x9C4F,0x9C51,INVALC, 0x9C53,INVALC,INVALC,INVALC,0x9DFC,0x9F39,INVALC,0x513E, INVALC,0x56D2,INVALC,0x5B4F,0x6B14,INVALC,0x7A72,0x7A73, INVALC,INVALC,INVALC,0x8B91,INVALC,INVALC,0x91BF,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 98, Array index 0x4100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x946C,INVALC,INVALC,0x96E6,0x9745,INVALC, 0x97C8,0x97E4,0x995D,INVALC,0x9B21,INVALC,0x9B2C,0x9B57, INVALC,INVALC,0x9C5D,0x9C61,0x9C65,0x9E08,INVALC,INVALC, INVALC,INVALC,INVALC,0x9F45,INVALC,INVALC,0x6205,0x66EF, 0x6B1B,0x6B1D,0x7225,0x7224,0x7C6D,INVALC,0x8642,0x8649, INVALC,0x8978,0x898A,0x8B97,INVALC,0x8C9B,0x8D1C,INVALC, 0x8EA2,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9C6C,INVALC,0x9C6F,INVALC,0x9E0E,INVALC,0x9F08, 0x9F1D,0x9FA3,INVALC,INVALC,0x5F60,0x6B1C,INVALC,INVALC, INVALC,0x7CF3,INVALC,0x8B9B,0x8EA7,0x91C4,INVALC,0x947A, INVALC,INVALC,0x9A61,0x9A63,0x9AD7,0x9C76,INVALC,0x9FA5, INVALC,0x7067,INVALC,0x72AB,0x864A,0x897D,0x8B9D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 99, Array index 0x4200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8C53,0x8F65,0x947B,INVALC,0x98CD,0x98DD,INVALC, 0x9B30,0x9E16,INVALC,INVALC,INVALC,INVALC,INVALC,0x96E7, 0x9E18,0x9EA2,INVALC,0x9F7C,INVALC,0x7E9E,0x9484,INVALC, 0x9E1C,INVALC,0x7C71,0x97CA,INVALC,INVALC,INVALC,0x9EA3, INVALC,0x9C7B,0x9F97,INVALC,INVALC,0x9750,INVALC,INVALC, INVALC,0x5727,0x5C13,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5FC8,INVALC,INVALC,INVALC,INVALC,INVALC,0x6765, INVALC,INVALC,0x52BD,INVALC,0x5B66,INVALC,0x65F9,0x6788, 0x6CE6,0x6CCB,INVALC,0x4FBD,0x5F8D,INVALC,0x6018,0x6048, INVALC,0x6B29,0x70A6,INVALC,0x7706,INVALC,INVALC,INVALC, 0x5A10,0x5CFC,0x5CFE,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x70C9,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 100, Array index 0x4300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x9579,INVALC,0x96BA,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7B29,0x8128,INVALC, 0x8A2E,INVALC,INVALC,INVALC,0x9AD9,INVALC,0x582B,0x5845, INVALC,0x63FA,INVALC,INVALC,INVALC,0x6E86,INVALC,INVALC, INVALC,INVALC,INVALC,0x5867,INVALC,0x5BDD,0x656E,INVALC, INVALC,INVALC,0x8C87,INVALC,0x50D2,0x50DF,INVALC,INVALC, INVALC,INVALC,0x69BA,INVALC,0x6B9D,INVALC,0x8059,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6F8A,INVALC,INVALC,0x7BC3,0x7BC2, INVALC,INVALC,INVALC,INVALC,0x90F6,INVALC,0x9823,INVALC, INVALC,INVALC,INVALC,INVALC,0x71CD,0x7499,INVALC,INVALC, INVALC,INVALC,INVALC,0x9842,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 101, Array index 0x4400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7F84,INVALC,INVALC,INVALC,INVALC,INVALC, 0x8D0E,INVALC,0x9861,INVALC,INVALC,0x8B73,INVALC,0x9C27, INVALC,0x9458,0x77D6,0x9B2D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4F66,0x4F68,0x4FE7,0x503F,INVALC,0x50A6,0x510F,0x523E, 0x5324,0x5365,0x539B,0x517F,0x54CB,0x5573,0x5571,0x556B, 0x55F4,0x5622,0x5620,0x5692,0x56BA,0x5691,0x56B0,0x5759, 0x578A,0x580F,0x5812,0x5813,0x5847,0x589B,0x5900,0x594D, 0x5AD1,0x5AD3,0x5B67,0x5C57,0x5C77,0x5CD5,0x5D75,0x5D8E, 0x5DA5,0x5DB6,0x5DBF,0x5E65,0x5ECD,0x5EED,0x5F94,0x5F9A, 0x5FBA,0x6125,0x6150,0x62A3,0x6360,0x6364,0x63B6,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 102, Array index 0x4500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6403,0x64B6,0x651A,0x7A25,0x5C21,0x66E2,0x6702, 0x67A4,0x67AC,0x6810,0x6806,0x685E,0x685A,0x692C,0x6929, 0x6A2D,0x6A77,0x6A7A,0x6ACA,0x6AE6,0x6AF5,0x6B0D,0x6B0E, 0x6BDC,0x6BDD,0x6BF6,0x6C1E,0x6C63,0x6DA5,0x6E0F,0x6E8A, 0x6E84,0x6E8B,0x6E7C,0x6F4C,0x6F48,0x6F49,0x6F9D,0x6F99, 0x6FF8,0x702E,0x702D,0x705C,0x79CC,0x70BF,0x70EA,0x70E5, 0x7111,0x7112,0x713F,0x7139,0x713B,0x713D,0x7177,0x7175, 0x7176,0x7171,0x7196,0x7193,0x71B4,0x71DD,0x71DE,0x720E, 0x5911,0x7218,0x7347,0x7348,0x73EF,0x7412,0x743B,0x74A4, 0x748D,0x74B4,0x7673,0x7677,0x76BC,0x7819,0x781B,0x783D, 0x7853,0x7854,0x7858,0x78B7,0x78D8,0x78EE,0x7922,0x794D, 0x7986,0x7999,0x79A3,0x79BC,0x7AA7,0x7B37,0x7B59,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 103, Array index 0x4600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7BD0,0x7C2F,0x7C32,0x7C42,0x7C4E,0x7C68,0x7CA9, 0x7CED,0x7DD0,0x7E07,0x7DD3,0x7E64,0x7F40,INVALC,0x8041, 0x8063,0x80BB,0x6711,0x6725,0x8248,0x8310,0x8362,0x8312, 0x8421,0x841E,0x84E2,0x84DE,0x84E1,0x8573,0x85D4,0x85F5, 0x8637,0x8645,0x8672,0x874A,0x87A9,0x87A5,0x87F5,0x8834, 0x8850,0x8887,0x8954,0x8984,0x8B03,0x8C52,0x8CD8,0x8D0C, 0x8D18,0x8DB0,0x8EBC,0x8ED5,0x8FAA,0x909C,INVALC,0x915C, 0x922B,0x9221,0x9273,0x92F4,0x92F5,0x933F,0x9342,0x9386, 0x93BE,0x93BC,0x93BD,0x93F1,0x93F2,0x93EF,0x9422,0x9423, 0x9424,0x9467,0x9466,0x9597,0x95CE,0x95E7,0x973B,0x974D, 0x98E4,0x9942,0x9B1D,0x9B98,INVALC,0x9D49,0x6449,0x5E71, 0x5E85,0x61D3,0x990E,0x8002,0x781E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 104, Array index 0x4700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5528,0x5572,0x55BA,0x55F0,0x55EE,0x56B8,0x56B9, 0x56C4,0x8053,0x92B0,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, }; #endif /* ICONV_TO_UCS_CCS_CNS11643_PLANE14 && !defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * 16-bit cns11643_plane14 -> UCS size-optimized table (12822 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_CNS11643_PLANE14) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t to_ucs_size_cns11643_plane14[] = { 0x00DE, /* Ranges number */ 0x01A6, /* Unranged codes number */ 0x15BF, /* First unranged code index */ /* Ranges list: first code, last Code, array index. */ /* Array index: 0x0003 */ 0x2121, 0x216D, 0x029D, /* Array index: 0x0006 */ 0x2177, 0x217D, 0x02EA, /* Array index: 0x0009 */ 0x2222, 0x223F, 0x02F1, /* Array index: 0x000C */ 0x2247, 0x227E, 0x030F, /* Array index: 0x000F */ 0x2322, 0x2347, 0x0347, /* Array index: 0x0012 */ 0x2350, 0x2355, 0x036D, /* Array index: 0x0015 */ 0x2369, 0x237E, 0x0373, /* Array index: 0x0018 */ 0x2423, 0x242F, 0x0389, /* Array index: 0x001B */ 0x2438, 0x2454, 0x0396, /* Array index: 0x001E */ 0x2457, 0x2467, 0x03B3, /* Array index: 0x0021 */ 0x2473, 0x247E, 0x03C4, /* Array index: 0x0024 */ 0x2521, 0x2538, 0x03D0, /* Array index: 0x0027 */ 0x253E, 0x254E, 0x03E8, /* Array index: 0x002A */ 0x255A, 0x2568, 0x03F9, /* Array index: 0x002D */ 0x256B, 0x257D, 0x0408, /* Array index: 0x0030 */ 0x2621, 0x262A, 0x041B, /* Array index: 0x0033 */ 0x262E, 0x2639, 0x0425, /* Array index: 0x0036 */ 0x2641, 0x266B, 0x0431, /* Array index: 0x0039 */ 0x2673, 0x267E, 0x045C, /* Array index: 0x003C */ 0x2721, 0x2752, 0x0468, /* Array index: 0x003F */ 0x2759, 0x277D, 0x049A, /* Array index: 0x0042 */ 0x2821, 0x282F, 0x04BF, /* Array index: 0x0045 */ 0x283D, 0x2841, 0x04CE, /* Array index: 0x0048 */ 0x2848, 0x287A, 0x04D3, /* Array index: 0x004B */ 0x2925, 0x295A, 0x0506, /* Array index: 0x004E */ 0x2963, 0x2979, 0x053C, /* Array index: 0x0051 */ 0x2A21, 0x2A3F, 0x0553, /* Array index: 0x0054 */ 0x2A47, 0x2A4F, 0x0572, /* Array index: 0x0057 */ 0x2A54, 0x2A60, 0x057B, /* Array index: 0x005A */ 0x2A70, 0x2A7E, 0x0588, /* Array index: 0x005D */ 0x2B21, 0x2B40, 0x0597, /* Array index: 0x0060 */ 0x2B46, 0x2B5E, 0x05B7, /* Array index: 0x0063 */ 0x2B63, 0x2B72, 0x05D0, /* Array index: 0x0066 */ 0x2C21, 0x2C2F, 0x05E0, /* Array index: 0x0069 */ 0x2C3B, 0x2C4D, 0x05EF, /* Array index: 0x006C */ 0x2C56, 0x2C63, 0x0602, /* Array index: 0x006F */ 0x2C6B, 0x2C7E, 0x0610, /* Array index: 0x0072 */ 0x2D21, 0x2D3D, 0x0624, /* Array index: 0x0075 */ 0x2D45, 0x2D7E, 0x0641, /* Array index: 0x0078 */ 0x2E21, 0x2E2B, 0x067B, /* Array index: 0x007B */ 0x2E32, 0x2E54, 0x0686, /* Array index: 0x007E */ 0x2E5D, 0x2E6F, 0x06A9, /* Array index: 0x0081 */ 0x2E74, 0x2E7E, 0x06BC, /* Array index: 0x0084 */ 0x2F23, 0x2F6F, 0x06C7, /* Array index: 0x0087 */ 0x2F73, 0x2F7B, 0x0714, /* Array index: 0x008A */ 0x3027, 0x302B, 0x071D, /* Array index: 0x008D */ 0x302F, 0x3040, 0x0722, /* Array index: 0x0090 */ 0x304A, 0x304F, 0x0734, /* Array index: 0x0093 */ 0x3055, 0x307B, 0x073A, /* Array index: 0x0096 */ 0x3121, 0x3129, 0x0761, /* Array index: 0x0099 */ 0x312C, 0x313D, 0x076A, /* Array index: 0x009C */ 0x3140, 0x317D, 0x077C, /* Array index: 0x009F */ 0x3221, 0x3231, 0x07BA, /* Array index: 0x00A2 */ 0x3238, 0x3241, 0x07CB, /* Array index: 0x00A5 */ 0x3246, 0x3248, 0x07D5, /* Array index: 0x00A8 */ 0x324D, 0x3252, 0x07D8, /* Array index: 0x00AB */ 0x325A, 0x327C, 0x07DE, /* Array index: 0x00AE */ 0x3323, 0x3332, 0x0801, /* Array index: 0x00B1 */ 0x333B, 0x334F, 0x0811, /* Array index: 0x00B4 */ 0x3355, 0x335A, 0x0826, /* Array index: 0x00B7 */ 0x3369, 0x337C, 0x082C, /* Array index: 0x00BA */ 0x3425, 0x3436, 0x0840, /* Array index: 0x00BD */ 0x343C, 0x347D, 0x0852, /* Array index: 0x00C0 */ 0x3527, 0x353C, 0x0894, /* Array index: 0x00C3 */ 0x3543, 0x355B, 0x08AA, /* Array index: 0x00C6 */ 0x3560, 0x3563, 0x08C3, /* Array index: 0x00C9 */ 0x356E, 0x3576, 0x08C7, /* Array index: 0x00CC */ 0x3622, 0x367D, 0x08D0, /* Array index: 0x00CF */ 0x3721, 0x373D, 0x092C, /* Array index: 0x00D2 */ 0x3744, 0x374A, 0x0949, /* Array index: 0x00D5 */ 0x3750, 0x3759, 0x0950, /* Array index: 0x00D8 */ 0x375D, 0x377E, 0x095A, /* Array index: 0x00DB */ 0x3839, 0x3842, 0x097C, /* Array index: 0x00DE */ 0x3845, 0x3858, 0x0986, /* Array index: 0x00E1 */ 0x385B, 0x387B, 0x099A, /* Array index: 0x00E4 */ 0x3929, 0x3941, 0x09BB, /* Array index: 0x00E7 */ 0x394A, 0x3959, 0x09D4, /* Array index: 0x00EA */ 0x3967, 0x397E, 0x09E4, /* Array index: 0x00ED */ 0x3A27, 0x3A3C, 0x09FC, /* Array index: 0x00F0 */ 0x3A40, 0x3A63, 0x0A12, /* Array index: 0x00F3 */ 0x3A75, 0x3A7E, 0x0A36, /* Array index: 0x00F6 */ 0x3B24, 0x3B2E, 0x0A40, /* Array index: 0x00F9 */ 0x3B33, 0x3B47, 0x0A4B, /* Array index: 0x00FC */ 0x3B4D, 0x3B68, 0x0A60, /* Array index: 0x00FF */ 0x3B6D, 0x3B76, 0x0A7C, /* Array index: 0x0102 */ 0x3B7C, 0x3B7E, 0x0A86, /* Array index: 0x0105 */ 0x3C23, 0x3C2A, 0x0A89, /* Array index: 0x0108 */ 0x3C2F, 0x3C5D, 0x0A91, /* Array index: 0x010B */ 0x3C60, 0x3C74, 0x0AC0, /* Array index: 0x010E */ 0x3C77, 0x3C7D, 0x0AD5, /* Array index: 0x0111 */ 0x3D21, 0x3D47, 0x0ADC, /* Array index: 0x0114 */ 0x3D4F, 0x3D69, 0x0B03, /* Array index: 0x0117 */ 0x3D70, 0x3D7B, 0x0B1E, /* Array index: 0x011A */ 0x3E21, 0x3E63, 0x0B2A, /* Array index: 0x011D */ 0x3E68, 0x3E6A, 0x0B6D, /* Array index: 0x0120 */ 0x3E7C, 0x3E7E, 0x0B70, /* Array index: 0x0123 */ 0x3F21, 0x3F24, 0x0B73, /* Array index: 0x0126 */ 0x3F29, 0x3F59, 0x0B77, /* Array index: 0x0129 */ 0x3F62, 0x3F69, 0x0BA8, /* Array index: 0x012C */ 0x3F70, 0x3F75, 0x0BB0, /* Array index: 0x012F */ 0x4036, 0x4061, 0x0BB6, /* Array index: 0x0132 */ 0x4071, 0x407D, 0x0BE2, /* Array index: 0x0135 */ 0x4121, 0x413E, 0x0BEF, /* Array index: 0x0138 */ 0x414D, 0x4151, 0x0C0D, /* Array index: 0x013B */ 0x4172, 0x417E, 0x0C12, /* Array index: 0x013E */ 0x4226, 0x4233, 0x0C1F, /* Array index: 0x0141 */ 0x4239, 0x4249, 0x0C2D, /* Array index: 0x0144 */ 0x424E, 0x427E, 0x0C3E, /* Array index: 0x0147 */ 0x4325, 0x4339, 0x0C6F, /* Array index: 0x014A */ 0x4346, 0x4355, 0x0C84, /* Array index: 0x014D */ 0x4360, 0x436A, 0x0C94, /* Array index: 0x0150 */ 0x4372, 0x4377, 0x0C9F, /* Array index: 0x0153 */ 0x4422, 0x444F, 0x0CA5, /* Array index: 0x0156 */ 0x4454, 0x446B, 0x0CD3, /* Array index: 0x0159 */ 0x4476, 0x447E, 0x0CEB, /* Array index: 0x015C */ 0x4523, 0x453C, 0x0CF4, /* Array index: 0x015F */ 0x4557, 0x455C, 0x0D0E, /* Array index: 0x0162 */ 0x455F, 0x4576, 0x0D14, /* Array index: 0x0165 */ 0x4625, 0x4664, 0x0D2C, /* Array index: 0x0168 */ 0x4668, 0x467B, 0x0D6C, /* Array index: 0x016B */ 0x4721, 0x472A, 0x0D80, /* Array index: 0x016E */ 0x4733, 0x474E, 0x0D8A, /* Array index: 0x0171 */ 0x4753, 0x4772, 0x0DA6, /* Array index: 0x0174 */ 0x4775, 0x477E, 0x0DC6, /* Array index: 0x0177 */ 0x4821, 0x482B, 0x0DD0, /* Array index: 0x017A */ 0x4830, 0x4840, 0x0DDB, /* Array index: 0x017D */ 0x4844, 0x4848, 0x0DEC, /* Array index: 0x0180 */ 0x4852, 0x4862, 0x0DF1, /* Array index: 0x0183 */ 0x486D, 0x4879, 0x0E02, /* Array index: 0x0186 */ 0x4922, 0x492E, 0x0E0F, /* Array index: 0x0189 */ 0x4932, 0x4959, 0x0E1C, /* Array index: 0x018C */ 0x495C, 0x4968, 0x0E44, /* Array index: 0x018F */ 0x4970, 0x497D, 0x0E51, /* Array index: 0x0192 */ 0x4A26, 0x4A39, 0x0E5F, /* Array index: 0x0195 */ 0x4A44, 0x4A49, 0x0E73, /* Array index: 0x0198 */ 0x4A52, 0x4A56, 0x0E79, /* Array index: 0x019B */ 0x4A5D, 0x4A66, 0x0E7E, /* Array index: 0x019E */ 0x4A6C, 0x4A75, 0x0E88, /* Array index: 0x01A1 */ 0x4B29, 0x4B5F, 0x0E92, /* Array index: 0x01A4 */ 0x4B63, 0x4B6D, 0x0EC9, /* Array index: 0x01A7 */ 0x4B70, 0x4B7E, 0x0ED4, /* Array index: 0x01AA */ 0x4C21, 0x4C4A, 0x0EE3, /* Array index: 0x01AD */ 0x4C4D, 0x4C6C, 0x0F0D, /* Array index: 0x01B0 */ 0x4C71, 0x4C7E, 0x0F2D, /* Array index: 0x01B3 */ 0x4D24, 0x4D31, 0x0F3B, /* Array index: 0x01B6 */ 0x4D35, 0x4D3D, 0x0F49, /* Array index: 0x01B9 */ 0x4D46, 0x4D5D, 0x0F52, /* Array index: 0x01BC */ 0x4D6D, 0x4D7E, 0x0F6A, /* Array index: 0x01BF */ 0x4E24, 0x4E3D, 0x0F7C, /* Array index: 0x01C2 */ 0x4E4B, 0x4E4F, 0x0F96, /* Array index: 0x01C5 */ 0x4E5D, 0x4E76, 0x0F9B, /* Array index: 0x01C8 */ 0x4F22, 0x4F26, 0x0FB5, /* Array index: 0x01CB */ 0x4F2B, 0x4F56, 0x0FBA, /* Array index: 0x01CE */ 0x4F60, 0x4F7E, 0x0FE6, /* Array index: 0x01D1 */ 0x502A, 0x5038, 0x1005, /* Array index: 0x01D4 */ 0x5048, 0x5070, 0x1014, /* Array index: 0x01D7 */ 0x5075, 0x507E, 0x103D, /* Array index: 0x01DA */ 0x5122, 0x5132, 0x1047, /* Array index: 0x01DD */ 0x5138, 0x5146, 0x1058, /* Array index: 0x01E0 */ 0x5154, 0x5176, 0x1067, /* Array index: 0x01E3 */ 0x5224, 0x5234, 0x108A, /* Array index: 0x01E6 */ 0x5252, 0x526B, 0x109B, /* Array index: 0x01E9 */ 0x5321, 0x5344, 0x10B5, /* Array index: 0x01EC */ 0x5358, 0x536C, 0x10D9, /* Array index: 0x01EF */ 0x5374, 0x537D, 0x10EE, /* Array index: 0x01F2 */ 0x5429, 0x542D, 0x10F8, /* Array index: 0x01F5 */ 0x5432, 0x5461, 0x10FD, /* Array index: 0x01F8 */ 0x5469, 0x547C, 0x112D, /* Array index: 0x01FB */ 0x552D, 0x5539, 0x1141, /* Array index: 0x01FE */ 0x553E, 0x5543, 0x114E, /* Array index: 0x0201 */ 0x5552, 0x5575, 0x1154, /* Array index: 0x0204 */ 0x5621, 0x5624, 0x1178, /* Array index: 0x0207 */ 0x5628, 0x562D, 0x117C, /* Array index: 0x020A */ 0x5639, 0x5642, 0x1182, /* Array index: 0x020D */ 0x5646, 0x564A, 0x118C, /* Array index: 0x0210 */ 0x5651, 0x5675, 0x1191, /* Array index: 0x0213 */ 0x573A, 0x5745, 0x11B6, /* Array index: 0x0216 */ 0x5755, 0x5765, 0x11C2, /* Array index: 0x0219 */ 0x576A, 0x577E, 0x11D3, /* Array index: 0x021C */ 0x5821, 0x5845, 0x11E8, /* Array index: 0x021F */ 0x5854, 0x585D, 0x120D, /* Array index: 0x0222 */ 0x586B, 0x587E, 0x1217, /* Array index: 0x0225 */ 0x5931, 0x5951, 0x122B, /* Array index: 0x0228 */ 0x5958, 0x595C, 0x124C, /* Array index: 0x022B */ 0x5961, 0x597E, 0x1251, /* Array index: 0x022E */ 0x5A22, 0x5A3C, 0x126F, /* Array index: 0x0231 */ 0x5A42, 0x5A48, 0x128A, /* Array index: 0x0234 */ 0x5A4D, 0x5A67, 0x1291, /* Array index: 0x0237 */ 0x5A74, 0x5A7E, 0x12AC, /* Array index: 0x023A */ 0x5B25, 0x5B2C, 0x12B7, /* Array index: 0x023D */ 0x5B31, 0x5B50, 0x12BF, /* Array index: 0x0240 */ 0x5B5D, 0x5B61, 0x12DF, /* Array index: 0x0243 */ 0x5B69, 0x5B7E, 0x12E4, /* Array index: 0x0246 */ 0x5C22, 0x5C43, 0x12FA, /* Array index: 0x0249 */ 0x5C53, 0x5C66, 0x131C, /* Array index: 0x024C */ 0x5C6C, 0x5C7E, 0x1330, /* Array index: 0x024F */ 0x5D21, 0x5D49, 0x1343, /* Array index: 0x0252 */ 0x5D4C, 0x5D53, 0x136C, /* Array index: 0x0255 */ 0x5D5E, 0x5D7A, 0x1374, /* Array index: 0x0258 */ 0x5E21, 0x5E2A, 0x1391, /* Array index: 0x025B */ 0x5E31, 0x5E6A, 0x139B, /* Array index: 0x025E */ 0x5E70, 0x5E7E, 0x13D5, /* Array index: 0x0261 */ 0x5F21, 0x5F2C, 0x13E4, /* Array index: 0x0264 */ 0x5F31, 0x5F37, 0x13F0, /* Array index: 0x0267 */ 0x5F3C, 0x5F5B, 0x13F7, /* Array index: 0x026A */ 0x5F69, 0x5F73, 0x1417, /* Array index: 0x026D */ 0x6039, 0x6040, 0x1422, /* Array index: 0x0270 */ 0x6043, 0x604B, 0x142A, /* Array index: 0x0273 */ 0x6052, 0x6068, 0x1433, /* Array index: 0x0276 */ 0x6073, 0x6077, 0x144A, /* Array index: 0x0279 */ 0x6125, 0x6135, 0x144F, /* Array index: 0x027C */ 0x613E, 0x6150, 0x1460, /* Array index: 0x027F */ 0x615D, 0x6165, 0x1473, /* Array index: 0x0282 */ 0x6169, 0x617E, 0x147C, /* Array index: 0x0285 */ 0x6221, 0x6229, 0x1492, /* Array index: 0x0288 */ 0x622F, 0x623B, 0x149B, /* Array index: 0x028B */ 0x625C, 0x6272, 0x14A8, /* Array index: 0x028E */ 0x642F, 0x6433, 0x14BF, /* Array index: 0x0291 */ 0x6448, 0x647E, 0x14C4, /* Array index: 0x0294 */ 0x6521, 0x657E, 0x14FB, /* Array index: 0x0297 */ 0x6621, 0x667C, 0x1559, /* Array index: 0x029A */ 0x6721, 0x672A, 0x15B5, /* Ranges content */ /* Range 0x2121 - 0x216D, array index: 0x029D */ 0x4E28,0x4E36,0x4E3F,0x4E85,0x4E05,0x4E04,0x5182,0x5196, 0x5338,0x5369,0x53B6,0x4E2A,0x4E87,0x4E49,0x51E2,0x4E46, 0x4E8F,0x4EBC,0x4EBE,0x5166,0x51E3,0x5204,0x529C,INVALC, 0x5902,0x590A,0x5B80,0x5DDB,0x5E7A,0x5E7F,0x5EF4,0x5F50, 0x5F51,0x5F61,0x961D,INVALC,0x4E63,0x4E62,0x4EA3,0x5185, 0x4EC5,0x4ECF,0x4ECE,0x4ECC,0x5184,0x5186,INVALC,INVALC, 0x51E4,0x5205,0x529E,0x529D,0x52FD,0x5300,0x533A,INVALC, 0x5346,0x535D,0x5386,0x53B7,INVALC,0x53CC,INVALC,0x53CE, 0x5721,INVALC,0x5E00,0x5F0C,0x6237,0x6238,0x6534,0x6535, 0x65E0,INVALC,0x738D,0x4E97,0x4EE0, /* Range 0x2177 - 0x217D, array index: 0x02EA */ 0x56D8,0x518B,0x518C,0x5199,0x51E5,INVALC,0x520B, /* Range 0x2222 - 0x223F, array index: 0x02F1 */ 0x5304,0x5303,0x5307,INVALC,0x531E,0x535F,0x536D,0x5389, 0x53BA,0x53D0,INVALC,0x53F6,0x53F7,0x53F9,INVALC,0x53F4, INVALC,INVALC,0x5724,0x5904,0x5918,0x5932,0x5930,0x5934, INVALC,0x5975,INVALC,0x5B82,0x5BF9,0x5C14, /* Range 0x2247 - 0x227E, array index: 0x030F */ 0x5E81,0x5E83,0x5F0D,0x5F52,INVALC,0x5FCA,0x5FC7,0x6239, INVALC,0x624F,0x65E7,0x672F,0x6B7A,0x6C39,INVALC,INVALC, 0x6C37,0x6C44,0x6C45,0x738C,0x7592,0x7676,0x9093,0x9092, INVALC,INVALC,0x4E21,0x4E20,0x4E22,0x4E68,0x4E89,0x4E98, 0x4EF9,0x4EEF,INVALC,INVALC,0x4EF8,0x4F06,0x4F03,0x4EFC, 0x4EEE,0x4F16,INVALC,0x4F28,0x4F1C,0x4F07,0x4F1A,0x4EFA, 0x4F17,0x514A,INVALC,0x5172,INVALC,0x51B4,0x51B3,0x51B2, /* Range 0x2322 - 0x2347, array index: 0x0347 */ 0x51E8,INVALC,0x5214,0x520F,0x5215,0x5218,0x52A8,INVALC, 0x534B,0x534F,INVALC,0x5350,INVALC,0x538B,INVALC,0x53BE, INVALC,0x53D2,0x5416,0x53FF,INVALC,0x5400,INVALC,0x5405, 0x5413,0x5415,INVALC,INVALC,0x56E3,0x5735,0x5736,0x5731, 0x5732,0x58EE,0x5905,0x4E54,INVALC,0x5936, /* Range 0x2350 - 0x2355, array index: 0x036D */ 0x5B86,0x5F53,0x5C18,INVALC,0x5C3D,0x5C78, /* Range 0x2369 - 0x237E, array index: 0x0373 */ 0x5FDB,INVALC,0x620F,0x625D,0x625F,0x6267,0x6257,0x9F50, INVALC,0x65EB,0x65EA,INVALC,0x6737,INVALC,0x6732,0x6736, 0x6B22,0x6BCE,INVALC,0x6C58,0x6C51,0x6C77, /* Range 0x2423 - 0x242F, array index: 0x0389 */ 0x6C5A,INVALC,0x6C53,0x706F,0x7072,0x706E,INVALC,INVALC, 0x7073,0x72B1,0x72B2,INVALC,0x738F, /* Range 0x2438 - 0x2454, array index: 0x0396 */ 0x827B,INVALC,0x8D71,0x8FB9,0x9096,0x909A,INVALC,0x4E24, 0x4E71,INVALC,0x4E9C,0x4F45,0x4F4A,0x4F39,0x4F37,INVALC, 0x4F32,0x4F42,INVALC,0x4F44,0x4F4B,INVALC,0x4F40,0x4F35, 0x4F31,0x5151,INVALC,0x5150,0x514E, /* Range 0x2457 - 0x2467, array index: 0x03B3 */ 0x519D,INVALC,0x51B5,0x51B8,0x51EC,0x5223,0x5227,0x5226, 0x521F,0x522B,0x5220,0x52B4,0x52B3,INVALC,0x5325,0x533B, 0x5374, /* Range 0x2473 - 0x247E, array index: 0x03C4 */ 0x5444,0x544C,0x5423,0x541A,0x5432,0x544B,0x5421,INVALC, 0x5434,0x5449,0x5450,0x5422, /* Range 0x2521 - 0x2538, array index: 0x03D0 */ 0x543F,0x5451,0x545A,0x542F,INVALC,0x56E9,0x56F2,0x56F3, 0x56EF,0x56ED,0x56EC,0x56E6,0x5748,INVALC,0x5744,0x573F, 0x573C,0x5753,0x5756,INVALC,0x575F,0x5743,0x5758,0x5757, /* Range 0x253E - 0x254E, array index: 0x03E8 */ 0x573D,INVALC,0x5742,0x5754,0x5755,0x58F1,0x58F2,0x58F0, 0x590B,0x9EA6,0x56F1,0x593D,INVALC,0x5994,0x598C,INVALC, 0x599C, /* Range 0x255A - 0x2568, array index: 0x03F9 */ 0x5B8D,INVALC,0x5BFE,0x5BFF,0x5BFD,0x5C2B,INVALC,0x5C84, 0x5C8E,0x5C9C,INVALC,INVALC,0x5C85,0x5DF5,0x5E09, /* Range 0x256B - 0x257D, array index: 0x0408 */ 0x5E0B,INVALC,0x5E92,0x5E90,0x5F03,INVALC,0x5F1E,0x5F63, INVALC,0x5FE7,0x5FFE,0x5FE6,0x5FDC,0x5FCE,INVALC,0x5FFC, 0x5FDF,0x5FEC,0x5FF6, /* Range 0x2621 - 0x262A, array index: 0x041B */ 0x5FF2,0x5FF0,0x5FF9,INVALC,0x6213,INVALC,INVALC,0x623B, 0x623C,0x6282, /* Range 0x262E - 0x2639, array index: 0x0425 */ 0x6278,0x628B,INVALC,0x629E,0x62A5,0x629B,0x629C,0x6299, 0x628D,0x6285,0x629D,0x6275, /* Range 0x2641 - 0x266B, array index: 0x0431 */ 0x66F5,0x675B,INVALC,0x6754,0x6752,INVALC,0x6758,0x6744, 0x674A,0x6761,INVALC,0x6C7F,0x6C91,0x6C9E,INVALC,0x6C6E, 0x6C7C,0x6C9F,0x6C75,INVALC,0x6C56,0x6CA2,0x6C79,INVALC, 0x6CA1,INVALC,0x6CAA,0x6CA0,INVALC,0x7079,0x7077,0x707E, INVALC,0x7075,0x707B,0x7264,INVALC,0x72BB,0x72BC,0x72C7, 0x72B9,0x72BE,0x72B6, /* Range 0x2673 - 0x267E, array index: 0x045C */ 0x7593,0x7680,INVALC,0x7683,0x76C0,0x76C1,INVALC,INVALC, 0x77F4,0x77F5,INVALC,0x7ACC, /* Range 0x2721 - 0x2752, array index: 0x0468 */ 0x7ACD,0x7CFA,0x809F,0x8091,0x8097,0x8094,INVALC,0x8286, 0x828C,INVALC,0x8295,INVALC,0x866C,INVALC,0x8FB5,0x8FBE, 0x8FC7,INVALC,0x8FC1,0x90A9,0x90A4,INVALC,INVALC,INVALC, 0x90A8,0x9627,0x9626,0x962B,0x9633,0x9634,0x9629,0x4E3D, INVALC,0x4E9D,0x4F93,0x4F8A,INVALC,INVALC,0x4F6D,0x4F8E, 0x4FA0,0x4FA2,0x4FA1,0x4F9F,0x4FA3,INVALC,0x4F72,INVALC, 0x4F8C,0x5156, /* Range 0x2759 - 0x277D, array index: 0x049A */ 0x51ED,0x51FE,0x522F,INVALC,0x523C,0x5234,0x5239,0x52B9, 0x52B5,0x52BF,0x5355,INVALC,0x5376,0x537A,0x5393,INVALC, 0x53C1,0x53C2,0x53D5,0x5485,INVALC,0x545F,0x5493,0x5489, 0x5479,0x9EFE,0x548F,0x5469,0x546D,INVALC,0x5494,0x546A, 0x548A,INVALC,0x56FD,0x56FB,0x56F8, /* Range 0x2821 - 0x282F, array index: 0x04BF */ 0x56FC,0x56F6,0x5765,0x5781,0x5763,0x5767,INVALC,0x576E, 0x5778,0x577F,INVALC,INVALC,0x58F3,0x594B,0x594C, /* Range 0x283D - 0x2841, array index: 0x04CE */ 0x59BF,INVALC,0x59C9,0x59B8,0x59AC, /* Range 0x2848 - 0x287A, array index: 0x04D3 */ 0x5B60,INVALC,0x5B96,0x5B9E,0x5B94,0x5B9F,0x5B9D,INVALC, 0x5C00,0x5C19,INVALC,INVALC,0x5C49,0x5C4A,INVALC,0x5CBB, 0x5CC1,INVALC,INVALC,INVALC,0x5CB9,0x5C9E,0x5CB4,0x5CBA, 0x5DF6,0x5E13,0x5E12,0x5E77,INVALC,0x5E98,INVALC,0x5E99, 0x5E9D,0x5EF8,INVALC,0x5EF9,INVALC,0x5F06,0x5F21,INVALC, 0x5F25,0x5F55,INVALC,INVALC,INVALC,0x5F84,0x5F83,0x6030, 0x6007,INVALC,0x6036, /* Range 0x2925 - 0x295A, array index: 0x0506 */ 0x62BA,0x62B2,INVALC,0x62B7,0x62E4,0x62A7,INVALC,INVALC, INVALC,0x62D5,0x62E1,0x62DD,0x62A6,0x62C1,0x62C5,0x62C0, 0x62DF,0x62E0,0x62DE,INVALC,0x6589,INVALC,0x65A6,0x65BA, INVALC,0x65FF,INVALC,0x6617,0x6618,0x6601,0x65FE,INVALC, 0x670C,INVALC,0x676B,0x6796,0x6782,0x678A,INVALC,0x67A3, INVALC,0x67A2,0x678F,INVALC,0x67F9,0x6780,0x6B26,0x6B27, 0x6B68,0x6B69,INVALC,0x6B81,0x6BB4,0x6BD1, /* Range 0x2963 - 0x2979, array index: 0x053C */ 0x6C97,0x6C6C,0x6CDF,INVALC,0x6CEA,INVALC,0x6CE4,0x6CD8, 0x6CB2,0x6CCE,0x6CC8,INVALC,0x708B,0x7088,0x7090,0x708F, INVALC,0x7087,0x7089,0x708D,0x7081,INVALC,0x708C, /* Range 0x2A21 - 0x2A3F, array index: 0x0553 */ 0x7265,0x7266,0x7268,INVALC,INVALC,0x72CD,0x72D3,0x72DB, INVALC,0x72CF,0x73A7,0x73A3,0x739E,INVALC,0x73AF,INVALC, INVALC,0x73AA,0x739C,INVALC,0x7542,0x7544,0x753B,0x7541, INVALC,0x759B,0x759E,INVALC,0x79C4,0x79C3,0x79C6, /* Range 0x2A47 - 0x2A4F, array index: 0x0572 */ 0x7ACF,0x7C76,0x7C74,0x7CFF,0x7CFC,INVALC,INVALC,0x7F59, 0x80A8, /* Range 0x2A54 - 0x2A60, array index: 0x057B */ 0x80B3,INVALC,0x80A4,0x80B6,0x80A7,0x80AC,INVALC,0x80A6, 0x5367,0x820E,0x82C4,0x833E,0x829C, /* Range 0x2A70 - 0x2A7E, array index: 0x0588 */ 0x8FCC,0x8FD9,0x8FCA,0x8FD8,0x8FCF,0x90B7,INVALC,0x90AD, 0x90B9,0x9637,INVALC,0x9641,0x963E,0x96B6,0x9751, /* Range 0x2B21 - 0x2B40, array index: 0x0597 */ 0x9763,0x4E57,0x4E79,0x4EB2,0x4EB0,0x4EAF,0x4EB1,0x4FD2, 0x4FD5,INVALC,0x4FBE,0x4FB8,0x4FB0,0x4FB1,0x4FC8,INVALC, INVALC,0x4FC6,0x4FCC,0x4FE5,0x4FE3,0x4FB4,0x516A,INVALC, 0x519F,INVALC,0x51C1,INVALC,0x51C2,0x51C3,0x5245,0x5248, /* Range 0x2B46 - 0x2B5E, array index: 0x05B7 */ 0x52C5,0x52CA,0x52C4,0x5327,0x5358,0x537D,INVALC,0x53DD, 0x53DC,0x53DA,0x53D9,0x54B9,INVALC,0x54D0,0x54B4,0x54CA, INVALC,0x54A3,0x54DA,0x54A4,INVALC,0x54B2,0x549E,0x549F, 0x54B5, /* Range 0x2B63 - 0x2B72, array index: 0x05D0 */ 0x54CC,INVALC,0x5700,0x57AC,0x5791,0x578E,0x578D,0x5792, 0x57A1,0x5790,0x57A6,0x57A8,INVALC,0x579C,0x5796,0x57A7, /* Range 0x2C21 - 0x2C2F, array index: 0x05E0 */ 0x59DF,INVALC,0x59EB,0x59EF,0x59F0,0x59D5,0x5A0D,0x5A04, 0x59F9,0x5A02,0x59F8,0x59E2,0x59D9,0x59E7,0x5B6A, /* Range 0x2C3B - 0x2C4D, array index: 0x05EF */ 0x5CD1,0x5CDC,0x5CE6,0x5CE1,0x5CCD,INVALC,0x5CE2,0x5CDD, 0x5CE5,0x5DFB,0x5DFA,0x5E1E,INVALC,0x5EA1,INVALC,INVALC, 0x5EFC,0x5EFB,0x5F2F, /* Range 0x2C56 - 0x2C63, array index: 0x0602 */ 0x604E,0x6051,INVALC,INVALC,0x6023,0x6031,0x607C,0x6052, INVALC,0x6060,0x604A,0x6061,INVALC,0x6218, /* Range 0x2C6B - 0x2C7E, array index: 0x0610 */ 0x631F,0x6317,0x62EA,0x6321,0x6304,0x6305,INVALC,0x6531, 0x6544,0x6540,INVALC,0x6542,0x65BE,INVALC,0x6629,0x661B, INVALC,0x6623,0x662C,0x661A, /* Range 0x2D21 - 0x2D3D, array index: 0x0624 */ 0x6630,0x663B,0x661E,0x6637,0x6638,INVALC,0x670E,INVALC, INVALC,0x67E8,0x67D6,INVALC,0x67C7,0x67BC,0x6852,0x67BF, 0x67D5,0x67FE,0x8363,0x67FB,INVALC,0x67B1,0x6801,0x6805, 0x6800,0x67D7,INVALC,0x6B2A,0x6B6B, /* Range 0x2D45 - 0x2D7E, array index: 0x0641 */ 0x6D23,0x6CFF,0x6D14,0x6D05,0x6D13,0x6D06,0x6D21,INVALC, 0x6D15,0x6CAF,0x6CF4,0x6D02,0x6D45,INVALC,0x6D26,INVALC, 0x6D44,INVALC,0x6D24,0x70A5,INVALC,0x70A3,INVALC,0x70A2, 0x70BB,0x70A0,0x70AA,INVALC,INVALC,0x70A8,0x70B6,0x70B2, 0x70A7,INVALC,INVALC,0x70B9,0x722E,INVALC,0x723C,INVALC, 0x726D,INVALC,INVALC,0x72E7,0x72ED,INVALC,0x72EC,0x72E5, 0x72E2,INVALC,0x73C4,0x73BD,0x73CF,0x73C9,0x73C1,0x73D0, INVALC,0x73CE, /* Range 0x2E21 - 0x2E2B, array index: 0x067B */ 0x74ED,0x74EB,INVALC,0x74EF,0x7549,0x7550,0x7546,0x754A, INVALC,0x754D,0x75A6, /* Range 0x2E32 - 0x2E54, array index: 0x0686 */ 0x76C7,0x76FF,INVALC,0x76FD,0x77E6,0x780A,INVALC,0x7804, 0x780B,0x7807,INVALC,0x7815,0x7808,INVALC,0x79D3,0x79D4, 0x79D0,0x79D7,0x7A7C,INVALC,INVALC,0x7A7D,0x7A83,0x7A82, INVALC,0x7AD4,0x7AD5,0x7AD3,0x7AD0,0x7AD2,0x7AFE,0x7AFC, 0x7C77,0x7C7C,0x7C7B, /* Range 0x2E5D - 0x2E6F, array index: 0x06A9 */ 0x7F8F,0x80D3,INVALC,0x80CB,0x80D2,INVALC,0x8109,0x80E2, 0x80DF,0x80C6,INVALC,0x8224,0x82F7,0x82D8,0x82DD,INVALC, INVALC,0x82F8,0x82FC, /* Range 0x2E74 - 0x2E7E, array index: 0x06BC */ 0x82EE,INVALC,0x82D0,0x830E,0x82E2,0x830B,0x82FD,0x5179, 0x8676,INVALC,0x8678, /* Range 0x2F23 - 0x2F6F, array index: 0x06C7 */ 0x8675,0x867D,INVALC,0x8842,0x8866,INVALC,0x898C,0x8A05, INVALC,0x8A06,INVALC,0x8C9F,INVALC,0x8FF1,0x8FE7,0x8FE9, 0x8FEF,0x90C2,0x90BC,INVALC,0x90C6,0x90C0,INVALC,INVALC, 0x90CD,0x90C9,INVALC,0x90C4,INVALC,0x9581,INVALC,0x9CEC, 0x5032,0x4FF9,0x501D,0x4FFF,0x5004,0x4FF0,0x5003,INVALC, 0x5002,0x4FFC,0x4FF2,0x5024,0x5008,0x5036,0x502E,INVALC, 0x5010,0x5038,0x5039,0x4FFD,0x5056,0x4FFB,0x51A3,0x51A6, 0x51A1,INVALC,INVALC,0x51C7,0x51C9,0x5260,0x5264,0x5259, 0x5265,0x5267,0x5257,0x5263,INVALC,0x5253,INVALC,0x52CF, INVALC,0x52CE,0x52D0,0x52D1,0x52CC, /* Range 0x2F73 - 0x2F7B, array index: 0x0714 */ 0x550D,0x54F4,INVALC,0x5513,0x54EF,0x54F5,0x54F9,0x5502, 0x5500, /* Range 0x3027 - 0x302B, array index: 0x071D */ 0x5705,0x57C9,INVALC,0x57B7,0x57CD, /* Range 0x302F - 0x3040, array index: 0x0722 */ 0x57BE,0x57BB,INVALC,0x57DB,0x57C8,0x57C4,0x57C5,0x57D1, 0x57CA,0x57C0,INVALC,INVALC,0x5A21,0x5A2A,INVALC,0x5A1D, INVALC,0x5A0B, /* Range 0x304A - 0x304F, array index: 0x0734 */ 0x5A14,0x5A31,INVALC,0x5A2F,0x5A1A,0x5A12, /* Range 0x3055 - 0x307B, array index: 0x073A */ 0x5BBC,0x5BBB,0x5BB7,0x5C05,0x5C06,0x5C52,0x5C53,INVALC, INVALC,0x5CFA,0x5CEB,INVALC,0x5CF3,0x5CF5,0x5CE9,0x5CEF, INVALC,0x5E2A,0x5E30,0x5E2E,0x5E2C,0x5E2F,0x5EAF,0x5EA9, INVALC,0x5EFD,0x5F32,0x5F8E,0x5F93,0x5F8F,0x604F,0x6099, INVALC,0x607E,INVALC,0x6074,0x604B,0x6073,0x6075, /* Range 0x3121 - 0x3129, array index: 0x0761 */ 0x60A9,0x608B,0x60A6,INVALC,0x6093,0x60AE,0x609E,0x60A7, 0x6245, /* Range 0x312C - 0x313D, array index: 0x076A */ 0x632E,INVALC,0x6352,0x6330,0x635B,INVALC,0x6319,0x631B, INVALC,0x6331,0x635D,0x6337,0x6335,0x6353,INVALC,0x635C, 0x633F,0x654B, /* Range 0x3140 - 0x317D, array index: 0x077C */ 0x658B,INVALC,0x659A,0x6650,0x6646,0x664E,0x6640,INVALC, 0x664B,0x6648,INVALC,0x6660,0x6644,0x664D,INVALC,0x6837, 0x6824,INVALC,INVALC,0x681B,0x6836,INVALC,0x682C,0x6819, 0x6856,0x6847,0x683E,0x681E,INVALC,0x6815,0x6822,0x6827, 0x6859,0x6858,0x6855,0x6830,0x6823,0x6B2E,0x6B2B,0x6B30, 0x6B6C,INVALC,0x6B8B,INVALC,0x6BE9,0x6BEA,0x6BE5,0x6D6B, INVALC,INVALC,0x6D73,0x6D57,INVALC,INVALC,0x6D5D,0x6D56, 0x6D8F,0x6D5B,0x6D1C,0x6D9A,0x6D9B,0x6D99, /* Range 0x3221 - 0x3231, array index: 0x07BA */ 0x6D81,0x6D71,INVALC,INVALC,0x6D72,0x6D5C,0x6D96,0x70C4, 0x70DB,0x70CC,0x70D0,0x70E3,0x70DF,INVALC,0x70D6,0x70EE, 0x70D5, /* Range 0x3238 - 0x3241, array index: 0x07CB */ 0x72F5,0x7302,INVALC,INVALC,0x73E2,0x73EC,0x73D5,0x73F9, 0x73DF,0x73E6, /* Range 0x3246 - 0x3248, array index: 0x07D5 */ 0x73E4,0x73E1,0x74F3, /* Range 0x324D - 0x3252, array index: 0x07D8 */ 0x7556,0x7555,0x7558,0x7557,0x755E,0x75C3, /* Range 0x325A - 0x327C, array index: 0x07DE */ 0x76CB,0x76CC,0x772A,INVALC,0x7716,0x770F,INVALC,INVALC, 0x773F,0x772B,0x770E,0x7724,INVALC,0x7721,0x7718,0x77DD, INVALC,INVALC,0x7824,0x7836,INVALC,0x7958,0x7959,INVALC, 0x7962,0x79DA,0x79D9,INVALC,0x79E1,0x79E5,0x79E8,0x79DB, INVALC,0x79E2,0x79F0, /* Range 0x3323 - 0x3332, array index: 0x0801 */ 0x7ADA,0x7ADD,INVALC,0x7ADB,0x7ADC,INVALC,INVALC,0x7B0D, 0x7B0B,0x7B14,0x7C8E,0x7C86,INVALC,0x7C87,0x7C83,0x7C8B, /* Range 0x333B - 0x334F, array index: 0x0811 */ 0x7D25,0x7F62,0x7F93,0x7F99,0x7F97,INVALC,INVALC,0x7FC4, 0x7FC6,0x800A,INVALC,INVALC,0x8040,0x803C,0x803B,0x80F6, 0x80FF,0x80EE,0x8104,0x8103,0x8107, /* Range 0x3355 - 0x335A, array index: 0x0826 */ 0x822D,INVALC,0x8227,0x8229,0x831F,0x8357, /* Range 0x3369 - 0x337C, array index: 0x082C */ 0x8684,0x869F,0x869B,0x8689,0x86A6,0x8692,0x868F,0x86A0, 0x884F,0x8878,0x887A,0x886E,0x887B,0x8884,0x8873,INVALC, INVALC,0x8A0D,0x8A0B,0x8A19, /* Range 0x3425 - 0x3436, array index: 0x0840 */ 0x8FF9,0x9009,0x9008,INVALC,0x90DE,0x9151,INVALC,INVALC, 0x91DB,0x91DF,0x91DE,0x91D6,0x91E0,0x9585,0x9660,0x9659, INVALC,0x9656, /* Range 0x343C - 0x347D, array index: 0x0852 */ 0x5042,0x5059,INVALC,0x5044,0x5066,0x5052,0x5054,0x5071, 0x5050,0x507B,0x507C,0x5058,INVALC,INVALC,0x5079,0x506C, 0x5078,0x51A8,0x51D1,0x51CF,0x5268,0x5276,0x52D4,INVALC, 0x53A0,0x53C4,INVALC,0x5558,0x554C,0x5568,INVALC,0x5549, INVALC,INVALC,0x555D,0x5529,INVALC,0x5554,0x5553,INVALC, 0x555A,INVALC,0x553A,0x553F,0x552B,0x57EA,INVALC,0x57EF, INVALC,INVALC,0x57DD,0x57FE,INVALC,0x57DE,0x57E6,INVALC, 0x57E8,0x57FF,0x5803,0x58F7,0x68A6,0x591F,INVALC,0x595B, 0x595D,0x595E, /* Range 0x3527 - 0x353C, array index: 0x0894 */ 0x5A61,0x5A3A,0x5A6E,0x5A4B,0x5A6B,INVALC,INVALC,0x5A45, 0x5A4E,0x5A68,0x5A3D,0x5A71,0x5A3F,0x5A6F,0x5A75,INVALC, 0x5A73,0x5A2C,0x5A59,0x5A54,0x5A4F,0x5A63, /* Range 0x3543 - 0x355B, array index: 0x08AA */ 0x5C5B,0x5C61,INVALC,0x5D21,0x5D0A,0x5D09,INVALC,0x5D2C, 0x5D08,INVALC,INVALC,0x5D2A,0x5D15,INVALC,0x5D10,0x5D13, INVALC,0x5D2F,0x5D18,INVALC,0x5DE3,0x5E39,0x5E35,0x5E3A, 0x5E32, /* Range 0x3560 - 0x3563, array index: 0x08C3 */ 0x5EBB,0x5EBA,0x5F34,0x5F39, /* Range 0x356E - 0x3576, array index: 0x08C7 */ 0x60D7,0x60AA,INVALC,0x60A1,0x60A4,INVALC,0x60EE,INVALC, 0x60E7, /* Range 0x3622 - 0x367D, array index: 0x08D0 */ 0x6379,0x6386,0x6393,INVALC,0x6373,0x636A,INVALC,0x636C, INVALC,0x637F,INVALC,0x63B2,0x63BA,INVALC,INVALC,0x6366, 0x6374,INVALC,0x655A,INVALC,0x654E,0x654D,0x658D,0x658E, 0x65AD,INVALC,0x65C7,0x65CA,INVALC,0x65C9,INVALC,0x65E3, 0x6657,INVALC,0x6663,0x6667,0x671A,0x6719,0x6716,INVALC, INVALC,0x689E,0x68B6,0x6898,0x6873,INVALC,0x689A,0x688E, 0x68B7,0x68DB,0x68A5,0x686C,0x68C1,0x6884,INVALC,INVALC, 0x6895,0x687A,0x6899,INVALC,0x68B8,0x68B9,0x6870,INVALC, 0x6B35,INVALC,0x6B90,0x6BBB,0x6BED,INVALC,INVALC,INVALC, 0x6DC1,0x6DC3,0x6DCE,INVALC,INVALC,0x6DAD,0x6E04,INVALC, 0x6DB9,INVALC,0x6DE7,INVALC,0x6E08,0x6E06,INVALC,0x6E0A, 0x6DB0,INVALC,0x6DF8,0x6E0C, /* Range 0x3721 - 0x373D, array index: 0x092C */ 0x6DB1,INVALC,0x6E02,0x6E07,0x6E09,0x6E01,0x6E17,0x6DFF, 0x6E12,INVALC,INVALC,0x7103,0x7107,0x7101,0x70F5,0x70F1, 0x7108,0x70F2,0x710F,INVALC,0x70FE,INVALC,INVALC,INVALC, 0x731A,0x7310,0x730E,0x7402,0x73F3, /* Range 0x3744 - 0x374A, array index: 0x0949 */ 0x751B,0x7523,0x7561,0x7568,INVALC,0x7567,0x75D3, /* Range 0x3750 - 0x3759, array index: 0x0950 */ 0x76D5,0x76D7,0x76D6,0x7730,INVALC,0x7726,INVALC,0x7740, INVALC,0x771E, /* Range 0x375D - 0x377E, array index: 0x095A */ 0x7847,INVALC,0x784B,0x7851,0x784F,0x7842,0x7846,INVALC, 0x796E,0x796C,0x79F2,INVALC,0x79F1,0x79F5,0x79F3,0x79F9, INVALC,INVALC,INVALC,0x7A9A,0x7A93,0x7A91,0x7AE1,INVALC, INVALC,0x7B21,0x7B1C,0x7B16,0x7B17,0x7B36,0x7B1F,INVALC, 0x7C93,0x7C99, /* Range 0x3839 - 0x3842, array index: 0x097C */ 0x801D,INVALC,0x8049,0x8045,0x8044,0x7C9B,INVALC,INVALC, 0x812A,0x812E, /* Range 0x3845 - 0x3858, array index: 0x0986 */ 0x8131,INVALC,0x811A,0x8134,0x8117,INVALC,INVALC,INVALC, 0x831D,0x8371,0x8384,0x8380,0x8372,0x83A1,INVALC,0x8379, 0x8391,INVALC,0x839F,0x83AD, /* Range 0x385B - 0x387B, array index: 0x099A */ 0x8323,INVALC,0x8385,0x839C,0x83B7,0x8658,0x865A,INVALC, 0x8657,0x86B2,INVALC,0x86AE,INVALC,INVALC,INVALC,0x8845, 0x889C,0x8894,0x88A3,0x888F,0x88A5,0x88A9,0x88A6,0x888A, 0x88A0,0x8890,0x8992,0x8991,0x8994,INVALC,0x8A26,0x8A32, 0x8A28, /* Range 0x3929 - 0x3941, array index: 0x09BB */ 0x8A21,0x8C3A,INVALC,0x8C5B,0x8C58,0x8C7C,INVALC,0x8CA6, 0x8CAE,0x8CAD,0x8D65,INVALC,0x8D7E,INVALC,0x8D7C,0x8D7F, 0x8D7A,0x8DBD,INVALC,INVALC,0x8DC0,0x8DBB,0x8EAD,0x8EAF, 0x8ED6, /* Range 0x394A - 0x3959, array index: 0x09D4 */ 0x9012,0x900E,0x9025,INVALC,0x9013,0x90EE,INVALC,0x90AB, 0x90F7,INVALC,0x9159,0x9154,0x91F2,0x91F0,0x91E5,0x91F6, /* Range 0x3967 - 0x397E, array index: 0x09E4 */ 0x98E1,0x98E6,INVALC,0x9EC4,0x9ED2,0x4E80,INVALC,0x4E81, 0x508F,0x5097,0x5088,0x5089,INVALC,INVALC,0x5081,0x5160, INVALC,INVALC,0x5E42,0x51D3,INVALC,INVALC,0x51D2,0x51D6, /* Range 0x3A27 - 0x3A3C, array index: 0x09FC */ 0x53A8,0x53A6,0x53C5,0x5597,0x55DE,INVALC,INVALC,0x5596, 0x55B4,INVALC,0x5585,INVALC,0x559B,0x55A0,INVALC,0x5559, INVALC,0x5586,INVALC,INVALC,0x55AF,0x557A, /* Range 0x3A40 - 0x3A63, array index: 0x0A12 */ 0x559E,INVALC,0x55A9,0x570F,0x570E,0x581A,INVALC,0x581F, INVALC,0x583C,0x5818,0x583E,0x5826,INVALC,0x583A,INVALC, 0x5822,INVALC,0x58FB,0x5963,0x5964,INVALC,0x5AA8,0x5AA3, 0x5A82,0x5A88,0x5AA1,0x5A85,0x5A98,INVALC,0x5A99,INVALC, 0x5A89,0x5A81,0x5A96,0x5A80, /* Range 0x3A75 - 0x3A7E, array index: 0x0A36 */ 0x5A79,INVALC,0x5A86,0x5AAB,0x5AAA,0x5AA4,0x5A8D,0x5A7E, INVALC,0x5BD5, /* Range 0x3B24 - 0x3B2E, array index: 0x0A40 */ 0x5C1E,0x5C5F,0x5C5E,0x5D44,0x5D3E,INVALC,0x5D48,0x5D1C, INVALC,0x5D5B,0x5D4D, /* Range 0x3B33 - 0x3B47, array index: 0x0A4B */ 0x5D53,0x5D4F,INVALC,0x5D3B,0x5D46,INVALC,INVALC,0x5E46, 0x5E47,INVALC,0x5E48,0x5EC0,0x5EBD,0x5EBF,INVALC,0x5F11, INVALC,0x5F3E,0x5F3B,INVALC,0x5F3A, /* Range 0x3B4D - 0x3B68, array index: 0x0A60 */ 0x60EA,INVALC,0x6107,0x6122,0x610C,INVALC,INVALC,0x60B3, 0x60D6,0x60D2,INVALC,0x60E3,0x60E5,0x60E9,INVALC,INVALC, 0x6111,0x60FD,INVALC,INVALC,0x611E,0x6120,0x6121,0x621E, INVALC,0x63E2,0x63DE,0x63E6, /* Range 0x3B6D - 0x3B76, array index: 0x0A7C */ 0x63F8,INVALC,0x63FE,0x63C1,0x63BF,0x63F7,0x63D1,0x655F, 0x6560,0x6561, /* Range 0x3B7C - 0x3B7E, array index: 0x0A86 */ 0x667D,0x666B,0x667F, /* Range 0x3C23 - 0x3C2A, array index: 0x0A89 */ 0x6673,0x6681,0x666D,0x6669,INVALC,INVALC,0x671E,0x68ED, /* Range 0x3C2F - 0x3C5D, array index: 0x0A91 */ 0x6903,INVALC,0x68FE,0x68E5,0x691E,0x6902,INVALC,INVALC, 0x6909,0x68CA,0x6900,INVALC,0x6901,0x6918,0x68E2,0x68CF, INVALC,0x692E,0x68C5,0x68FF,INVALC,0x691C,0x68C3,INVALC, 0x6B6F,INVALC,0x6B6E,INVALC,0x6BBE,INVALC,0x6BF4,0x6C2D, INVALC,0x6DB6,0x6E75,0x6E1E,INVALC,0x6E18,INVALC,0x6E48, INVALC,0x6E4F,INVALC,0x6E42,0x6E6A,0x6E70,0x6DFE, /* Range 0x3C60 - 0x3C74, array index: 0x0AC0 */ 0x6E6D,INVALC,0x6E7B,0x6E7E,0x6E59,INVALC,0x6E57,INVALC, 0x6E80,0x6E50,INVALC,0x6E29,0x6E76,0x6E2A,0x6E4C,0x712A, INVALC,0x7135,0x712C,0x7137,0x711D, /* Range 0x3C77 - 0x3C7D, array index: 0x0AD5 */ 0x7138,INVALC,0x7134,0x712B,0x7133,0x7127,0x7124, /* Range 0x3D21 - 0x3D47, array index: 0x0ADC */ 0x712D,0x7232,0x7283,0x7282,0x7287,0x7306,0x7324,0x7338, 0x732A,0x732C,0x732B,INVALC,0x732F,0x7328,0x7417,INVALC, INVALC,0x7419,0x7438,INVALC,0x741F,0x7414,0x743C,0x73F7, 0x741C,0x7415,0x7418,0x7439,0x74F9,0x7524,INVALC,INVALC, INVALC,0x756E,0x756D,0x7571,0x758E,INVALC,0x75E5, /* Range 0x3D4F - 0x3D69, array index: 0x0B03 */ 0x76D9,INVALC,0x7748,0x7749,0x7743,INVALC,INVALC,0x7742, 0x77DF,INVALC,0x7863,0x7876,INVALC,0x785F,0x7866,0x7966, 0x7971,INVALC,INVALC,0x7976,0x7984,0x7975,0x79FF,0x7A07, INVALC,0x7A0E,0x7A09, /* Range 0x3D70 - 0x3D7B, array index: 0x0B1E */ 0x7AE7,0x7AE2,0x7B55,INVALC,INVALC,0x7B43,0x7B57,0x7B6C, 0x7B42,0x7B53,INVALC,0x7B41, /* Range 0x3E21 - 0x3E63, array index: 0x0B2A */ 0x7CA0,0x7CA6,0x7CA4,0x7D74,INVALC,0x7D59,INVALC,0x7D60, 0x7D57,0x7D6C,0x7D7E,0x7D64,INVALC,0x7D5A,0x7D5D,INVALC, INVALC,INVALC,0x7D76,0x7D4D,0x7D75,INVALC,0x7FD3,0x7FD6, INVALC,INVALC,0x8060,0x804E,0x8145,0x813B,INVALC,0x8148, 0x8142,0x8149,0x8140,0x8114,0x8141,INVALC,0x81EF,0x81F6, 0x8203,INVALC,0x83ED,INVALC,0x83DA,0x8418,0x83D2,0x8408, INVALC,0x8400,INVALC,INVALC,INVALC,0x8417,0x8346,0x8414, 0x83D3,0x8405,0x841F,0x8402,0x8416,0x83CD,0x83E6,INVALC, 0x865D,0x86D5,0x86E1, /* Range 0x3E68 - 0x3E6A, array index: 0x0B6D */ 0x86EE,0x8847,0x8846, /* Range 0x3E7C - 0x3E7E, array index: 0x0B70 */ 0x8A35,0x8A38,0x8A42, /* Range 0x3F21 - 0x3F24, array index: 0x0B73 */ 0x8A49,0x8A5D,0x8A4B,0x8A3D, /* Range 0x3F29 - 0x3F59, array index: 0x0B77 */ 0x8C60,0x8C5E,0x8C7F,0x8C7E,0x8C83,INVALC,0x8CB1,0x8D87, INVALC,INVALC,0x8D88,0x8D83,INVALC,INVALC,0x8D86,0x8D8B, 0x8D82,0x8DCA,0x8DD2,INVALC,INVALC,0x8DD4,0x8DC9,0x8EB0, INVALC,INVALC,INVALC,0x8EF2,0x8EE4,0x8EF3,0x8EEA,INVALC, 0x8EFD,INVALC,0x8F9D,0x902B,0x902A,INVALC,0x9028,0x9029, 0x902C,INVALC,INVALC,0x903A,0x9030,0x9037,0x903B,INVALC, 0x910A, /* Range 0x3F62 - 0x3F69, array index: 0x0BA8 */ 0x9218,0x9222,INVALC,0x921B,0x9208,INVALC,0x920E,0x9213, /* Range 0x3F70 - 0x3F75, array index: 0x0BB0 */ 0x968C,0x967B,0x967F,0x9681,INVALC,0x9682, /* Range 0x4036 - 0x4061, array index: 0x0BB6 */ 0x50CC,0x50BC,INVALC,0x50AA,0x50B9,INVALC,0x50AB,0x50C3, 0x50CD,0x517E,0x527E,0x5279,INVALC,INVALC,0x52E1,0x52E0, 0x52E7,0x5380,0x53AB,0x53AA,0x53A9,0x53E0,0x55EA,INVALC, 0x55D7,INVALC,INVALC,0x55C1,0x5715,INVALC,0x586C,INVALC, 0x585C,0x5850,0x5861,0x586A,0x5869,0x5856,0x5860,0x5866, 0x585F,0x5923,0x5966,0x5968, /* Range 0x4071 - 0x407D, array index: 0x0BE2 */ 0x5B74,0x5B76,0x5BDC,0x5BD7,0x5BDA,0x5BDB,INVALC,0x5C20, 0x5D6D,0x5D66,INVALC,0x5D64,0x5D6E, /* Range 0x4121 - 0x413E, array index: 0x0BEF */ 0x5D60,0x5F42,0x5F5A,0x5F6E,INVALC,INVALC,0x6130,0x613A, 0x612A,0x6143,0x6119,0x6131,INVALC,0x613D,INVALC,INVALC, INVALC,0x6408,0x6432,0x6438,INVALC,0x6431,INVALC,0x6419, INVALC,0x6411,INVALC,INVALC,0x6429,0x641D, /* Range 0x414D - 0x4151, array index: 0x0C0D */ 0x6570,0x656D,INVALC,0x65E4,0x6693, /* Range 0x4172 - 0x417E, array index: 0x0C12 */ 0x6985,0x694D,0x6950,0x6947,0x6967,0x6936,0x6964,0x6961, INVALC,0x697D,0x6B44,0x6B40,0x6B71, /* Range 0x4226 - 0x4233, array index: 0x0C1F */ 0x6BC1,INVALC,0x6BFA,0x6C31,0x6C32,INVALC,INVALC,0x6EB8, 0x6EA8,INVALC,0x6E91,0x6EBB,INVALC,0x6E9A, /* Range 0x4239 - 0x4249, array index: 0x0C2D */ 0x6EB5,0x6E6C,0x6EE8,INVALC,0x6EDD,0x6EDA,0x6EE6,0x6EAC, INVALC,INVALC,INVALC,0x6ED9,0x6EE3,0x6EE9,0x6EDB,INVALC, 0x716F, /* Range 0x424E - 0x427E, array index: 0x0C3E */ 0x714A,0x716B,INVALC,0x714F,0x7157,0x7174,INVALC,INVALC, INVALC,0x7145,0x7151,0x716D,INVALC,0x7251,0x7250,0x724E, INVALC,0x7341,INVALC,0x732E,0x7346,INVALC,0x7427,INVALC, 0x7448,0x7453,0x743D,INVALC,0x745D,0x7456,INVALC,0x741E, 0x7447,0x7443,0x7458,0x7449,INVALC,0x744C,0x7445,0x743E, INVALC,0x7501,0x751E,INVALC,INVALC,0x757A,0x75EE,0x7602, 0x7697, /* Range 0x4325 - 0x4339, array index: 0x0C6F */ 0x775D,0x7764,0x7753,0x7758,0x7882,0x7890,0x788A,INVALC, 0x787A,0x787D,INVALC,0x788B,0x7878,INVALC,INVALC,0x788D, 0x7888,0x7892,0x7881,0x797E,0x7983, /* Range 0x4346 - 0x4355, array index: 0x0C84 */ 0x7AA1,0x7AA4,INVALC,0x7AE9,0x7AEA,INVALC,0x7B62,0x7B6B, INVALC,0x7B5E,INVALC,0x7B79,INVALC,INVALC,0x7B6F,0x7B68, /* Range 0x4360 - 0x436A, array index: 0x0C94 */ 0x7D8A,INVALC,0x7D8B,0x7D99,0x7D95,INVALC,0x7D87,0x7D78, 0x7D97,0x7D89,0x7D98, /* Range 0x4372 - 0x4377, array index: 0x0C9F */ 0x7FDD,0x8057,INVALC,0x8163,0x816A,0x816C, /* Range 0x4422 - 0x444F, array index: 0x0CA5 */ 0x817D,0x816D,INVALC,INVALC,0x8241,0x844F,0x8484,INVALC, 0x847F,INVALC,0x8448,0x842A,0x847B,0x8472,0x8464,0x842E, 0x845C,0x8453,INVALC,0x8441,0x84C8,INVALC,0x8462,0x8480, 0x843E,0x8483,0x8471,INVALC,0x844A,0x8455,0x8458,INVALC, INVALC,INVALC,0x86FC,0x86FD,0x8715,INVALC,0x8716,0x86FF, INVALC,INVALC,INVALC,0x8858,0x88CF,0x88E0, /* Range 0x4454 - 0x446B, array index: 0x0CD3 */ 0x89E7,0x8A6A,0x8A80,INVALC,0x8A6F,0x8A65,INVALC,0x8A78, 0x8A7D,0x8A88,INVALC,INVALC,0x8A64,0x8A7E,INVALC,0x8A67, 0x8C63,0x8C88,INVALC,0x8CCD,INVALC,0x8CC9,INVALC,0x8DED, /* Range 0x4476 - 0x447E, array index: 0x0CEB */ 0x8F04,0x8F9E,0x8FA0,0x9043,0x9046,0x9048,0x9045,0x9040, 0x904C, /* Range 0x4523 - 0x453C, array index: 0x0CF4 */ 0x910C,0x9113,0x9115,INVALC,0x916B,0x9167,0x925D,0x9255, 0x9235,INVALC,0x9259,0x922F,0x923C,0x928F,0x925C,0x926A, 0x9262,0x925F,0x926B,0x926E,0x923B,0x9244,0x9241,0x959A, INVALC,0x9599, /* Range 0x4557 - 0x455C, array index: 0x0D0E */ 0x98F7,0x98FF,0x98F5,INVALC,0x98EC,0x98F1, /* Range 0x455F - 0x4576, array index: 0x0D14 */ 0x999A,INVALC,0x9AE2,0x9B3D,0x9B5D,0x9CE8,INVALC,0x9CEB, 0x9CEF,0x9CEE,0x9E81,0x9F14,0x50D0,0x50D9,0x50DC,0x50D8, INVALC,0x50E1,0x50EB,INVALC,INVALC,0x50F4,0x50E2,0x50DE, /* Range 0x4625 - 0x4664, array index: 0x0D2C */ 0x53AE,0x53B0,INVALC,0x55FB,0x5603,0x560B,INVALC,0x5607, INVALC,0x55F8,INVALC,0x5628,0x561E,INVALC,0x5618,0x5611, 0x5651,0x5605,0x5717,0x5892,INVALC,0x588C,INVALC,0x5878, 0x5884,0x5873,0x58AD,0x5897,0x5895,0x5877,0x5872,0x5896, 0x588D,0x5910,INVALC,0x596C,INVALC,0x5AE7,INVALC,0x5AE4, INVALC,INVALC,0x5AEF,0x5626,INVALC,INVALC,0x5AF0,0x5D7B, INVALC,0x5D83,INVALC,INVALC,0x5D8B,0x5D8C,INVALC,0x5D78, 0x5E52,INVALC,INVALC,0x5ED0,0x5ECF,INVALC,0x5FB3,0x5FB4, /* Range 0x4668 - 0x467B, array index: 0x0D6C */ 0x617B,INVALC,0x616F,0x6181,0x613C,0x6142,0x6138,0x6133, INVALC,0x6160,0x6169,0x617D,0x6186,0x622C,0x6228,INVALC, 0x644C,INVALC,0x6457,0x647C, /* Range 0x4721 - 0x472A, array index: 0x0D80 */ 0x6462,0x6471,0x646A,0x6456,0x643B,0x6481,INVALC,0x644F, 0x647E,0x6464, /* Range 0x4733 - 0x474E, array index: 0x0D8A */ 0x66A5,0x669A,0x669C,INVALC,0x66A6,INVALC,0x66A4,0x698F, 0x69C5,0x69C8,0x6992,0x69B2,INVALC,INVALC,INVALC,0x69E3, 0x69C0,0x69D6,0x69D1,0x699F,0x69A2,0x69D2,INVALC,INVALC, INVALC,0x69E1,0x69D5,0x699D, /* Range 0x4753 - 0x4772, array index: 0x0DA6 */ 0x6B74,0x6BA1,INVALC,0x6EF0,0x6EF3,INVALC,INVALC,0x6F1B, 0x6F0C,0x6F1D,0x6F34,0x6F28,0x6F17,INVALC,0x6F44,0x6F42, 0x6F04,0x6F11,0x6EFA,0x6F4A,0x7191,0x718E,INVALC,0x718B, 0x718D,0x717F,0x718C,0x717E,0x717C,0x7183,INVALC,0x7188, /* Range 0x4775 - 0x477E, array index: 0x0DC6 */ 0x7294,INVALC,0x7355,0x7353,0x734F,0x7354,0x746C,0x7465, 0x7466,0x7461, /* Range 0x4821 - 0x482B, array index: 0x0DD0 */ 0x746B,0x7468,0x7476,INVALC,0x7460,INVALC,0x7474,0x7506, 0x760E,INVALC,0x7607, /* Range 0x4830 - 0x4840, array index: 0x0DDB */ 0x76B7,0x76E2,INVALC,0x7774,0x7777,0x7776,0x7775,INVALC, 0x7778,0x7771,INVALC,0x777A,0x715B,0x777B,0x78A6,0x78AE, 0x78B8, /* Range 0x4844 - 0x4848, array index: 0x0DEC */ 0x78B1,0x78AF,INVALC,0x7989,0x7987, /* Range 0x4852 - 0x4862, array index: 0x0DF1 */ 0x7A32,INVALC,0x7AEC,0x7AF0,0x7B81,0x7B9E,0x7B83,INVALC, 0x7B92,INVALC,0x7BA3,0x7B9F,0x7B93,INVALC,0x7B86,0x7CB8, 0x7CB7, /* Range 0x486D - 0x4879, array index: 0x0E02 */ 0x7DA8,0x7DAB,INVALC,0x7DB3,0x7DCD,INVALC,0x7DCF,0x7DA4, INVALC,INVALC,0x7F41,0x7F6F,0x7F71, /* Range 0x4922 - 0x492E, array index: 0x0E0F */ 0x8023,0x805B,INVALC,0x8061,0x805F,0x8181,INVALC,INVALC, 0x8184,0x8213,INVALC,0x824A,0x824C, /* Range 0x4932 - 0x4959, array index: 0x0E1C */ 0x84BD,0x8495,INVALC,0x8492,0x84C3,INVALC,0x8496,0x84A5, 0x84B5,0x84B3,0x84A3,0x84E4,0x84D8,0x84D5,INVALC,0x84B7, 0x84AD,0x84DA,0x8493,0x8736,INVALC,INVALC,INVALC,0x873D, 0x872B,0x8747,0x8739,INVALC,0x8745,0x871D,INVALC,0x88FF, 0x88EA,INVALC,0x88F5,INVALC,0x8900,0x88ED,0x8903,0x88E9, /* Range 0x495C - 0x4968, array index: 0x0E44 */ 0x89EA,INVALC,0x8A9B,0x8A8E,0x8AA2,INVALC,0x8A9C,0x8A94, 0x8A90,0x8AA9,0x8AAC,INVALC,0x8A9F, /* Range 0x4970 - 0x497D, array index: 0x0E51 */ 0x8CD0,0x8CD6,0x8CD4,0x8D98,0x8D9A,0x8D97,INVALC,INVALC, INVALC,0x8E0B,0x8E08,0x8E01,0x8EB4,0x8EB3, /* Range 0x4A26 - 0x4A39, array index: 0x0E5F */ 0x9061,0x905F,INVALC,INVALC,0x9125,0x917B,0x9176,0x917C, INVALC,0x9289,0x92F6,0x92B1,0x92AD,0x9292,0x9281,0x9284, INVALC,0x92AE,0x9290,0x929E, /* Range 0x4A44 - 0x4A49, array index: 0x0E73 */ 0x96A0,0x969D,0x969F,0x96D0,INVALC,0x96D1, /* Range 0x4A52 - 0x4A56, array index: 0x0E79 */ 0x9819,INVALC,0x9814,0x9815,0x981A, /* Range 0x4A5D - 0x4A66, array index: 0x0E7E */ 0x98F8,0x9901,INVALC,0x99BE,0x99BC,0x99B7,0x99B6,0x99C0, INVALC,0x99B8, /* Range 0x4A6C - 0x4A75, array index: 0x0E88 */ 0x99BF,INVALC,0x9ADA,0x9AE4,0x9AE9,0x9AE8,0x9AEA,0x9AE5, INVALC,0x9B26, /* Range 0x4B29 - 0x4B5F, array index: 0x0E92 */ 0x50F7,INVALC,0x50FC,0x510D,0x5101,0x51DA,0x51D9,0x51DB, 0x5286,0x528E,0x52EE,0x5333,0x53B1,INVALC,0x5647,0x562D, 0x5654,INVALC,0x564B,0x5652,0x5631,0x5644,0x5656,0x5650, 0x562B,INVALC,0x564D,0x5637,0x564F,0x58A2,0x58B7,INVALC, 0x58B2,INVALC,0x58AA,0x58B5,0x58B0,INVALC,0x58B4,0x58A4, 0x58A7,INVALC,0x5926,0x5AFE,INVALC,0x5B04,INVALC,0x5AFC, INVALC,0x5B06,0x5B0A,0x5AFA,0x5B0D,0x5B00,0x5B0E, /* Range 0x4B63 - 0x4B6D, array index: 0x0EC9 */ 0x5D91,INVALC,0x5D8F,0x5D90,0x5D98,0x5DA4,0x5D9B,0x5DA3, 0x5D96,0x5DE4,0x5E5A, /* Range 0x4B70 - 0x4B7E, array index: 0x0ED4 */ 0x5E5E,INVALC,0x5FB8,0x6157,0x615C,0x61A6,0x6195,0x6188, INVALC,0x61A3,0x618F,INVALC,0x6164,INVALC,0x6159, /* Range 0x4C21 - 0x4C4A, array index: 0x0EE3 */ 0x6178,INVALC,0x6185,0x6187,0x619E,INVALC,INVALC,0x6198, 0x619C,INVALC,INVALC,0x622F,0x6480,0x649B,0x648E,0x648D, 0x6494,0x64C6,INVALC,0x64A8,0x6483,INVALC,0x64B9,0x6486, 0x64B4,0x64AF,0x6491,INVALC,0x64AA,0x64A1,0x64A7,0x66B6, 0x66B3,INVALC,0x66BC,0x66AC,INVALC,0x66AD,0x6A0E,INVALC, 0x6A1C,0x6A1A, /* Range 0x4C4D - 0x4C6C, array index: 0x0F0D */ 0x6A0B,INVALC,0x69EF,0x6A0C,0x69F0,0x6A22,INVALC,0x69D8, INVALC,0x6A12,0x69FA,INVALC,0x6A2A,INVALC,0x6A10,INVALC, INVALC,0x6A29,0x69F9,0x69EA,0x6A2C,0x6A24,INVALC,0x69E9, 0x6B52,0x6B4F,0x6B53,INVALC,INVALC,0x6F10,0x6F65,0x6F75, /* Range 0x4C71 - 0x4C7E, array index: 0x0F2D */ 0x6FD0,INVALC,0x6F5C,0x6F3D,0x6F71,INVALC,0x6F91,0x6F0B, 0x6F79,0x6F81,0x6F8F,INVALC,0x6F59,0x6F74, /* Range 0x4D24 - 0x4D31, array index: 0x0F3B */ 0x71A3,0x71AD,INVALC,INVALC,0x71AB,0x71A6,0x71A2,INVALC, 0x52F2,0x7257,0x7255,0x7299,0x734B,0x747A, /* Range 0x4D35 - 0x4D3D, array index: 0x0F49 */ 0x748C,0x7484,INVALC,INVALC,0x7482,0x7493,0x747B,INVALC, 0x7509, /* Range 0x4D46 - 0x4D5D, array index: 0x0F52 */ 0x7790,INVALC,0x78C6,0x78D3,0x78C0,0x78D2,0x78C7,0x78C2, INVALC,0x799F,0x799D,0x799E,INVALC,0x7A41,INVALC,0x7A38, 0x7A3A,0x7A42,INVALC,INVALC,0x7A3E,0x7AB0,0x7BAE,0x7BB3, /* Range 0x4D6D - 0x4D7E, array index: 0x0F6A */ 0x7CC4,0x7CCD,0x7CC2,0x7CC6,0x7CC3,0x7CC9,0x7CC7,INVALC, 0x7DF8,INVALC,0x7DED,0x7DE2,INVALC,INVALC,INVALC,0x7DDC, 0x7E02,0x7E01, /* Range 0x4E24 - 0x4E3D, array index: 0x0F7C */ 0x7DE4,0x7DFE,INVALC,0x7E00,0x7DFC,0x7DFD,INVALC,0x7DF5, 0x7DFF,INVALC,0x7DEB,0x7DE5,0x7F78,0x7FAE,0x7FE7,INVALC, 0x8065,0x806A,0x8066,0x8068,0x806B,0x8194,0x81A1,0x8192, 0x8196,0x8193, /* Range 0x4E4B - 0x4E4F, array index: 0x0F96 */ 0x851B,0x8503,0x8533,0x8534,0x84ED, /* Range 0x4E5D - 0x4E76, array index: 0x0F9B */ 0x8771,INVALC,0x885C,0x88E6,0x890F,0x891B,INVALC,0x89A9, 0x89A5,0x89EE,0x8AB1,INVALC,0x8ACC,0x8ACE,INVALC,0x8AB7, INVALC,0x8AB5,0x8AE9,0x8AB4,INVALC,0x8AB3,0x8AC1,0x8AAF, 0x8ACA,0x8AD0, /* Range 0x4F22 - 0x4F26, array index: 0x0FB5 */ 0x8CEB,0x8DA4,INVALC,0x8DA2,0x8D9D, /* Range 0x4F2B - 0x4F56, array index: 0x0FBA */ 0x8E2A,0x8E28,INVALC,INVALC,0x8EB8,0x8EB6,0x8EB9,0x8EB7, 0x8F22,0x8F2B,0x8F27,0x8F19,0x8FA4,INVALC,0x8FB3,INVALC, 0x9071,0x906A,INVALC,INVALC,0x9188,0x918C,0x92BF,0x92B8, 0x92BE,0x92DC,0x92E5,INVALC,INVALC,0x92D4,0x92D6,INVALC, 0x92DA,0x92ED,0x92F3,0x92DB,INVALC,0x92B9,0x92E2,0x92EB, 0x95AF,INVALC,0x95B2,0x95B3, /* Range 0x4F60 - 0x4F7E, array index: 0x0FE6 */ 0x970A,INVALC,0x9787,0x9789,0x978C,0x97EF,0x982A,0x9822, INVALC,0x981F,INVALC,0x9919,INVALC,0x99CA,0x99DA,INVALC, INVALC,INVALC,0x99DE,0x99C8,0x99E0,INVALC,0x9AB6,0x9AB5, INVALC,0x9AF4,INVALC,0x9B6B,0x9B69,0x9B72,0x9B63, /* Range 0x502A - 0x5038, array index: 0x1005 */ 0x9CFE,0x9D02,0x9E84,INVALC,0x9EAB,0x9EAA,0x511D,0x5116, INVALC,0x512B,0x511E,0x511B,0x5290,0x5294,0x5314, /* Range 0x5048 - 0x5070, array index: 0x1014 */ 0x58C3,0x58CA,0x58BB,0x58C0,0x58C4,0x5901,0x5B1F,0x5B18, 0x5B11,0x5B15,INVALC,0x5B12,0x5B1C,INVALC,0x5B22,0x5B79, 0x5DA6,INVALC,0x5DB3,0x5DAB,0x5EEA,INVALC,0x5F5B,INVALC, INVALC,0x61B7,0x61CE,0x61B9,0x61BD,0x61CF,0x61C0,0x6199, 0x6197,INVALC,0x61BB,0x61D0,0x61C4,0x6231,INVALC,0x64D3, 0x64C0, /* Range 0x5075 - 0x507E, array index: 0x103D */ 0x64DC,0x64D1,0x64C8,INVALC,0x64D5,0x66C3,INVALC,INVALC, 0x66BF,0x66C5, /* Range 0x5122 - 0x5132, array index: 0x1047 */ 0x66CD,0x66C1,0x6706,INVALC,0x6724,0x6A63,0x6A42,0x6A52, INVALC,0x6A43,0x6A33,INVALC,0x6A6C,0x6A57,INVALC,0x6A4C, 0x6A6E, /* Range 0x5138 - 0x5146, array index: 0x1058 */ 0x6A37,INVALC,0x6A71,0x6A4A,0x6A36,INVALC,0x6A53,INVALC, 0x6A45,0x6A70,INVALC,INVALC,0x6A5C,0x6B58,0x6B57, /* Range 0x5154 - 0x5176, array index: 0x1067 */ 0x6FB5,0x6FD3,0x6F9F,INVALC,0x6FB7,0x6FF5,0x71B7,INVALC, 0x71BB,INVALC,0x71D1,INVALC,0x71BA,INVALC,0x71B6,0x71CC, INVALC,INVALC,0x71D3,0x749B,INVALC,INVALC,0x7496,0x74A2, 0x749D,0x750A,0x750E,INVALC,0x7581,0x762C,0x7637,0x7636, 0x763B,INVALC,0x76A1, /* Range 0x5224 - 0x5234, array index: 0x108A */ 0x78DC,INVALC,0x79A5,0x79A9,0x9834,0x7A53,0x7A45,INVALC, 0x7A4F,INVALC,0x7ABD,0x7ABB,0x7AF1,INVALC,INVALC,0x7BEC, 0x7BED, /* Range 0x5252 - 0x526B, array index: 0x109B */ 0x8542,INVALC,0x855C,0x8570,0x855F,INVALC,0x855A,0x854B, 0x853F,0x878A,INVALC,0x878B,0x87A1,0x878E,INVALC,INVALC, 0x8799,0x885E,0x885F,0x8924,0x89A7,0x8AEA,0x8AFD,0x8AF9, 0x8AE3,0x8AE5, /* Range 0x5321 - 0x5344, array index: 0x10B5 */ 0x8F31,0x8F30,INVALC,0x8F2D,0x8F3C,0x8FA7,0x8FA5,INVALC, INVALC,INVALC,0x9137,0x9195,0x918E,INVALC,0x9196,INVALC, 0x9345,0x930A,INVALC,INVALC,0x92FD,0x9317,0x931C,0x9307, 0x9331,0x9332,0x932C,0x9330,0x9303,0x9305,INVALC,0x95C2, INVALC,0x95B8,INVALC,0x95C1, /* Range 0x5358 - 0x536C, array index: 0x10D9 */ 0x9836,0x9831,0x9833,0x983C,0x982E,0x983A,INVALC,0x983D, INVALC,0x98B5,0x9922,0x9923,0x9920,0x991C,0x991D,INVALC, 0x99A0,INVALC,0x99EF,0x99E8,0x99EB, /* Range 0x5374 - 0x537D, array index: 0x10EE */ 0x9AF8,0x9AF5,INVALC,INVALC,0x9B83,0x9B94,0x9B84,INVALC, 0x9B8B,0x9B8F, /* Range 0x5429 - 0x542D, array index: 0x10F8 */ 0x9D24,0x9D0F,INVALC,0x9D13,0x9D0A, /* Range 0x5432 - 0x5461, array index: 0x10FD */ 0x9D2A,0x9D1A,INVALC,0x9D27,0x9D16,0x9D21,INVALC,0x9E85, 0x9EAC,0x9EC6,0x9EC5,0x9ED7,0x9F53,INVALC,0x5128,0x5127, 0x51DF,INVALC,0x5335,0x53B3,INVALC,0x568A,0x567D,0x5689, INVALC,0x58CD,0x58D0,INVALC,0x5B2B,0x5B33,0x5B29,0x5B35, 0x5B31,0x5B37,0x5C36,0x5DBE,INVALC,0x5DB9,INVALC,0x5DBB, INVALC,0x61E2,0x61DB,0x61DD,0x61DC,0x61DA,INVALC,0x61D9, /* Range 0x5469 - 0x547C, array index: 0x112D */ 0x64EE,INVALC,0x65B5,0x66D4,0x66D5,INVALC,0x66D0,0x66D1, 0x66CE,0x66D7,INVALC,INVALC,0x6A7D,0x6A8A,INVALC,0x6AA7, INVALC,0x6A99,0x6A82,0x6A88, /* Range 0x552D - 0x5539, array index: 0x1141 */ 0x6C0A,INVALC,0x6FD7,0x6FD6,0x6FE5,INVALC,INVALC,INVALC, 0x6FD9,0x6FDA,0x6FEA,INVALC,0x6FF6, /* Range 0x553E - 0x5543, array index: 0x114E */ 0x71E9,INVALC,0x71EB,0x71EF,0x71F3,0x71EA, /* Range 0x5552 - 0x5575, array index: 0x1154 */ 0x7583,0x7645,0x764E,0x7644,0x76A3,0x76A5,0x77A6,0x77A4, INVALC,0x77A9,0x77AF,INVALC,INVALC,INVALC,0x78F0,0x78F8, 0x78F1,INVALC,0x7A49,INVALC,INVALC,INVALC,0x7AC2,0x7AF2, 0x7AF3,0x7BFA,INVALC,0x7BF6,0x7BFC,0x7C18,0x7C08,0x7C12, INVALC,INVALC,0x7CDB,0x7CDA, /* Range 0x5621 - 0x5624, array index: 0x1178 */ 0x802B,0x8074,0x81B8,0x81C8, /* Range 0x5628 - 0x562D, array index: 0x117C */ 0x8592,0x8593,INVALC,0x857F,0x85AB,0x8597, /* Range 0x5639 - 0x5642, array index: 0x1182 */ 0x87C1,0x87B1,0x87C7,INVALC,0x8940,INVALC,0x893F,0x8939, INVALC,0x8943, /* Range 0x5646 - 0x564A, array index: 0x118C */ 0x89AB,INVALC,0x8B1F,0x8B09,0x8B0C, /* Range 0x5651 - 0x5675, array index: 0x1191 */ 0x8CF6,0x8CF7,INVALC,0x8E46,0x8E4F,INVALC,INVALC,INVALC, 0x8F3D,0x8F41,0x9366,0x9378,0x935D,0x9369,0x9374,0x937D, 0x936E,0x9372,0x9373,0x9362,0x9348,0x9353,0x935F,0x9368, INVALC,0x937F,0x936B,INVALC,0x95C4,INVALC,0x96AF,0x96AD, 0x96B2,INVALC,INVALC,0x971A,0x971B, /* Range 0x573A - 0x5745, array index: 0x11B6 */ 0x9ABD,0x9B00,0x9B02,INVALC,0x9B34,0x9B49,0x9B9F,INVALC, 0x9BA3,0x9BCD,0x9B99,0x9B9D, /* Range 0x5755 - 0x5765, array index: 0x11C2 */ 0x9F8E,INVALC,0x569F,0x569B,0x569E,0x5696,0x5694,0x56A0, INVALC,0x5B3B,INVALC,INVALC,0x5B3A,0x5DC1,0x5F4D,0x5F5D, 0x61F3, /* Range 0x576A - 0x577E, array index: 0x11D3 */ 0x64F6,0x64E5,0x64EA,0x64E7,0x6505,INVALC,0x64F9,INVALC, INVALC,INVALC,0x6AAB,0x6AED,0x6AB2,0x6AB0,0x6AB5,0x6ABE, 0x6AC1,0x6AC8,INVALC,0x6AC0,0x6ABC, /* Range 0x5821 - 0x5845, array index: 0x11E8 */ 0x6AB1,0x6AC4,0x6ABF,INVALC,INVALC,0x7008,0x7003,0x6FFD, 0x7010,0x7002,0x7013,INVALC,0x71FA,0x7200,0x74B9,0x74BC, INVALC,0x765B,0x7651,0x764F,0x76EB,0x77B8,INVALC,0x77B9, 0x77C1,0x77C0,0x77BE,0x790B,INVALC,0x7907,0x790A,0x7908, INVALC,0x790D,0x7906,0x7915,0x79AF, /* Range 0x5854 - 0x585D, array index: 0x120D */ 0x7CE6,0x7CE3,INVALC,INVALC,0x7E5D,0x7E4F,0x7E66,0x7E5B, 0x7F47,0x7FB4, /* Range 0x586B - 0x587E, array index: 0x1217 */ 0x85CC,0x85B2,INVALC,0x85BB,0x85C1,INVALC,INVALC,INVALC, 0x87E9,0x87EE,0x87F0,0x87D6,0x880E,0x87DA,0x8948,0x894A, 0x894E,0x894D,0x89B1,0x89B0, /* Range 0x5931 - 0x5951, array index: 0x122B */ 0x8DA9,0x8E58,INVALC,INVALC,0x8EBF,0x8EC1,0x8F4A,0x8FAC, INVALC,0x9089,0x913D,0x913C,0x91A9,0x93A0,INVALC,0x9390, INVALC,0x9393,0x938B,0x93AD,0x93BB,0x93B8,INVALC,INVALC, 0x939C,0x95D8,0x95D7,INVALC,INVALC,INVALC,0x975D,0x97A9, 0x97DA, /* Range 0x5958 - 0x595C, array index: 0x124C */ 0x9855,0x984B,INVALC,0x983F,0x98B9, /* Range 0x5961 - 0x597E, array index: 0x1251 */ 0x9938,0x9936,0x9940,INVALC,0x993B,0x9939,0x99A4,INVALC, INVALC,0x9A08,0x9A0C,INVALC,0x9A10,INVALC,0x9B07,INVALC, 0x9BD2,INVALC,0x9BC2,0x9BBB,0x9BCC,0x9BCB,INVALC,INVALC, 0x9D4D,0x9D63,0x9D4E,INVALC,0x9D50,0x9D55, /* Range 0x5A22 - 0x5A3C, array index: 0x126F */ 0x9D5E,INVALC,0x9E90,0x9EB2,0x9EB1,INVALC,0x9ECA,0x9F02, 0x9F27,0x9F26,INVALC,0x56AF,0x58E0,0x58DC,INVALC,0x5B39, INVALC,INVALC,0x5B7C,0x5BF3,INVALC,INVALC,0x5C6B,0x5DC4, 0x650B,0x6508,0x650A, /* Range 0x5A42 - 0x5A48, array index: 0x128A */ 0x66E1,0x66DF,0x6ACE,0x6AD4,0x6AE3,0x6AD7,0x6AE2, /* Range 0x5A4D - 0x5A67, array index: 0x1291 */ 0x6AD8,0x6AD5,0x6AD2,INVALC,INVALC,0x701E,0x702C,0x7025, 0x6FF3,0x7204,0x7208,0x7215,INVALC,0x74C4,0x74C9,0x74C7, 0x74C8,0x76A9,0x77C6,0x77C5,0x7918,0x791A,0x7920,INVALC, 0x7A66,0x7A64,0x7A6A, /* Range 0x5A74 - 0x5A7E, array index: 0x12AC */ 0x7E6E,0x7E71,INVALC,0x81D4,0x81D6,0x821A,0x8262,0x8265, 0x8276,0x85DB,0x85D6, /* Range 0x5B25 - 0x5B2C, array index: 0x12B7 */ 0x85F4,INVALC,0x87FD,0x87D5,0x8807,INVALC,0x880F,0x87F8, /* Range 0x5B31 - 0x5B50, array index: 0x12BF */ 0x89B5,0x89F5,INVALC,0x8B3F,0x8B43,0x8B4C,INVALC,0x8D0B, 0x8E6B,0x8E68,0x8E70,0x8E75,0x8E77,INVALC,0x8EC3,INVALC, 0x93E9,0x93EA,0x93CB,0x93C5,0x93C6,INVALC,0x93ED,0x93D3, INVALC,0x93E5,INVALC,INVALC,0x93DB,0x93EB,0x93E0,0x93C1, /* Range 0x5B5D - 0x5B61, array index: 0x12DF */ 0x97B2,0x97B4,0x97B1,0x97B5,0x97F2, /* Range 0x5B69 - 0x5B7E, array index: 0x12E4 */ 0x9944,INVALC,0x9A26,0x9A1F,0x9A18,0x9A21,0x9A17,INVALC, 0x9B09,INVALC,INVALC,0x9BC5,0x9BDF,INVALC,0x9BE3,INVALC, 0x9BE9,0x9BEE,INVALC,INVALC,0x9D66,0x9D7A, /* Range 0x5C22 - 0x5C43, array index: 0x12FA */ 0x9D6E,0x9D91,0x9D83,0x9D76,0x9D7E,0x9D6D,INVALC,0x9E95, 0x9EE3,INVALC,INVALC,0x9F03,0x9F04,INVALC,0x9F17,INVALC, 0x5136,INVALC,0x5336,INVALC,0x5B42,INVALC,INVALC,0x5B44, 0x5B46,0x5B7E,0x5DCA,0x5DC8,0x5DCC,0x5EF0,INVALC,0x6585, 0x66E5,0x66E7, /* Range 0x5C53 - 0x5C66, array index: 0x131C */ 0x7216,INVALC,0x7212,0x720F,0x7217,0x7211,0x720B,INVALC, INVALC,0x74CD,0x74D0,0x74CC,0x74CE,0x74D1,INVALC,0x7589, INVALC,0x7A6F,0x7C4B,0x7C44, /* Range 0x5C6C - 0x5C7E, array index: 0x1330 */ 0x7E7F,0x8B71,INVALC,0x802F,0x807A,0x807B,0x807C,INVALC, INVALC,INVALC,0x85FC,0x8610,0x8602,INVALC,INVALC,0x85EE, 0x8603,INVALC,0x860D, /* Range 0x5D21 - 0x5D49, array index: 0x1343 */ 0x8613,0x8608,0x860F,0x8818,0x8812,INVALC,INVALC,0x8967, 0x8965,0x89BB,0x8B69,0x8B62,INVALC,0x8B6E,INVALC,0x8B61, INVALC,0x8B64,0x8B4D,0x8C51,INVALC,INVALC,0x8E83,0x8EC6, INVALC,0x941F,INVALC,0x9404,0x9417,0x9408,0x9405,INVALC, 0x93F3,0x941E,0x9402,0x941A,0x941B,0x9427,0x941C,INVALC, 0x96B5, /* Range 0x5D4C - 0x5D53, array index: 0x136C */ 0x9733,INVALC,0x9734,0x9731,0x97B8,0x97BA,INVALC,0x97FC, /* Range 0x5D5E - 0x5D7A, array index: 0x1374 */ 0x9AC9,INVALC,0x9AC8,0x9AC4,0x9B2A,0x9B38,0x9B50,INVALC, 0x9C0A,0x9BFB,0x9C04,0x9BFC,0x9BFE,INVALC,INVALC,INVALC, 0x9C02,0x9BF6,0x9C1B,0x9BF9,0x9C15,0x9C10,0x9BFF,0x9C00, 0x9C0C,INVALC,INVALC,0x9D95,0x9DA5, /* Range 0x5E21 - 0x5E2A, array index: 0x1391 */ 0x9E98,0x9EC1,INVALC,0x9F5A,0x5164,0x56BB,INVALC,0x58E6, 0x5B49,0x5BF7, /* Range 0x5E31 - 0x5E6A, array index: 0x139B */ 0x6511,INVALC,0x6AFF,0x6AFE,0x6AFD,INVALC,0x6B01,INVALC, INVALC,0x704B,0x704D,0x7047,0x74D3,0x7668,0x7667,INVALC, INVALC,0x77D1,0x7930,0x7932,0x792E,INVALC,0x9F9D,0x7AC9, 0x7AC8,INVALC,0x7C56,0x7C51,INVALC,INVALC,INVALC,0x7E85, 0x7E89,0x7E8E,0x7E84,INVALC,0x826A,0x862B,0x862F,0x8628, INVALC,0x8616,0x8615,0x861D,0x881A,INVALC,INVALC,INVALC, 0x89BC,0x8B75,0x8B7C,INVALC,0x8D11,0x8D12,0x8F5C,0x91BB, INVALC,0x93F4, /* Range 0x5E70 - 0x5E7E, array index: 0x13D5 */ 0x96E4,0x9737,0x9736,0x9767,0x97BE,0x97BD,0x97E2,0x9868, 0x9866,0x98C8,0x98CA,0x98C7,0x98DC,INVALC,0x994F, /* Range 0x5F21 - 0x5F2C, array index: 0x13E4 */ 0x99A9,0x9A3C,INVALC,0x9A3B,0x9ACE,INVALC,0x9B14,0x9B53, INVALC,0x9C2E,INVALC,0x9C1F, /* Range 0x5F31 - 0x5F37, array index: 0x13F0 */ 0x9DB0,0x9DBD,INVALC,INVALC,0x9DAE,0x9DC4,0x9E7B, /* Range 0x5F3C - 0x5F5B, array index: 0x13F7 */ 0x9F05,INVALC,0x9F69,0x9FA1,0x56C7,0x571D,0x5B4A,0x5DD3, INVALC,0x5F72,0x6202,INVALC,0x6235,0x6527,0x651E,0x651F, INVALC,INVALC,0x6B07,0x6B06,INVALC,INVALC,0x7054,0x721C, 0x7220,0x7AF8,INVALC,0x7C5D,0x7C58,INVALC,0x7E92,0x7F4E, /* Range 0x5F69 - 0x5F73, array index: 0x1417 */ 0x9442,0x944D,0x9454,0x944E,INVALC,0x9443,INVALC,INVALC, 0x973C,0x9740,0x97C0, /* Range 0x6039 - 0x6040, array index: 0x1422 */ 0x7221,INVALC,0x766F,0x7937,0x79B5,0x7C62,0x7C5E,0x7CF5, /* Range 0x6043 - 0x604B, array index: 0x142A */ 0x863D,INVALC,0x882D,0x8989,0x8B8D,0x8B87,0x8B90,0x8D1A, 0x8E99, /* Range 0x6052 - 0x6068, array index: 0x1433 */ 0x9456,0x9461,0x945B,0x945A,0x945C,0x9465,INVALC,0x9741, INVALC,INVALC,0x986E,0x986C,0x986D,INVALC,0x99AA,0x9A5C, 0x9A58,0x9ADE,INVALC,0x9C4F,0x9C51,INVALC,0x9C53, /* Range 0x6073 - 0x6077, array index: 0x144A */ 0x5B4F,0x6B14,INVALC,0x7A72,0x7A73, /* Range 0x6125 - 0x6135, array index: 0x144F */ 0x96E6,0x9745,INVALC,0x97C8,0x97E4,0x995D,INVALC,0x9B21, INVALC,0x9B2C,0x9B57,INVALC,INVALC,0x9C5D,0x9C61,0x9C65, 0x9E08, /* Range 0x613E - 0x6150, array index: 0x1460 */ 0x6205,0x66EF,0x6B1B,0x6B1D,0x7225,0x7224,0x7C6D,INVALC, 0x8642,0x8649,INVALC,0x8978,0x898A,0x8B97,INVALC,0x8C9B, 0x8D1C,INVALC,0x8EA2, /* Range 0x615D - 0x6165, array index: 0x1473 */ 0x9E0E,INVALC,0x9F08,0x9F1D,0x9FA3,INVALC,INVALC,0x5F60, 0x6B1C, /* Range 0x6169 - 0x617E, array index: 0x147C */ 0x7CF3,INVALC,0x8B9B,0x8EA7,0x91C4,INVALC,0x947A,INVALC, INVALC,0x9A61,0x9A63,0x9AD7,0x9C76,INVALC,0x9FA5,INVALC, 0x7067,INVALC,0x72AB,0x864A,0x897D,0x8B9D, /* Range 0x6221 - 0x6229, array index: 0x1492 */ 0x8C53,0x8F65,0x947B,INVALC,0x98CD,0x98DD,INVALC,0x9B30, 0x9E16, /* Range 0x622F - 0x623B, array index: 0x149B */ 0x96E7,0x9E18,0x9EA2,INVALC,0x9F7C,INVALC,0x7E9E,0x9484, INVALC,0x9E1C,INVALC,0x7C71,0x97CA, /* Range 0x625C - 0x6272, array index: 0x14A8 */ 0x5B66,INVALC,0x65F9,0x6788,0x6CE6,0x6CCB,INVALC,0x4FBD, 0x5F8D,INVALC,0x6018,0x6048,INVALC,0x6B29,0x70A6,INVALC, 0x7706,INVALC,INVALC,INVALC,0x5A10,0x5CFC,0x5CFE, /* Range 0x642F - 0x6433, array index: 0x14BF */ 0x9C27,INVALC,0x9458,0x77D6,0x9B2D, /* Range 0x6448 - 0x647E, array index: 0x14C4 */ 0x4F66,0x4F68,0x4FE7,0x503F,INVALC,0x50A6,0x510F,0x523E, 0x5324,0x5365,0x539B,0x517F,0x54CB,0x5573,0x5571,0x556B, 0x55F4,0x5622,0x5620,0x5692,0x56BA,0x5691,0x56B0,0x5759, 0x578A,0x580F,0x5812,0x5813,0x5847,0x589B,0x5900,0x594D, 0x5AD1,0x5AD3,0x5B67,0x5C57,0x5C77,0x5CD5,0x5D75,0x5D8E, 0x5DA5,0x5DB6,0x5DBF,0x5E65,0x5ECD,0x5EED,0x5F94,0x5F9A, 0x5FBA,0x6125,0x6150,0x62A3,0x6360,0x6364,0x63B6, /* Range 0x6521 - 0x657E, array index: 0x14FB */ 0x6403,0x64B6,0x651A,0x7A25,0x5C21,0x66E2,0x6702,0x67A4, 0x67AC,0x6810,0x6806,0x685E,0x685A,0x692C,0x6929,0x6A2D, 0x6A77,0x6A7A,0x6ACA,0x6AE6,0x6AF5,0x6B0D,0x6B0E,0x6BDC, 0x6BDD,0x6BF6,0x6C1E,0x6C63,0x6DA5,0x6E0F,0x6E8A,0x6E84, 0x6E8B,0x6E7C,0x6F4C,0x6F48,0x6F49,0x6F9D,0x6F99,0x6FF8, 0x702E,0x702D,0x705C,0x79CC,0x70BF,0x70EA,0x70E5,0x7111, 0x7112,0x713F,0x7139,0x713B,0x713D,0x7177,0x7175,0x7176, 0x7171,0x7196,0x7193,0x71B4,0x71DD,0x71DE,0x720E,0x5911, 0x7218,0x7347,0x7348,0x73EF,0x7412,0x743B,0x74A4,0x748D, 0x74B4,0x7673,0x7677,0x76BC,0x7819,0x781B,0x783D,0x7853, 0x7854,0x7858,0x78B7,0x78D8,0x78EE,0x7922,0x794D,0x7986, 0x7999,0x79A3,0x79BC,0x7AA7,0x7B37,0x7B59, /* Range 0x6621 - 0x667C, array index: 0x1559 */ 0x7BD0,0x7C2F,0x7C32,0x7C42,0x7C4E,0x7C68,0x7CA9,0x7CED, 0x7DD0,0x7E07,0x7DD3,0x7E64,0x7F40,INVALC,0x8041,0x8063, 0x80BB,0x6711,0x6725,0x8248,0x8310,0x8362,0x8312,0x8421, 0x841E,0x84E2,0x84DE,0x84E1,0x8573,0x85D4,0x85F5,0x8637, 0x8645,0x8672,0x874A,0x87A9,0x87A5,0x87F5,0x8834,0x8850, 0x8887,0x8954,0x8984,0x8B03,0x8C52,0x8CD8,0x8D0C,0x8D18, 0x8DB0,0x8EBC,0x8ED5,0x8FAA,0x909C,INVALC,0x915C,0x922B, 0x9221,0x9273,0x92F4,0x92F5,0x933F,0x9342,0x9386,0x93BE, 0x93BC,0x93BD,0x93F1,0x93F2,0x93EF,0x9422,0x9423,0x9424, 0x9467,0x9466,0x9597,0x95CE,0x95E7,0x973B,0x974D,0x98E4, 0x9942,0x9B1D,0x9B98,INVALC,0x9D49,0x6449,0x5E71,0x5E85, 0x61D3,0x990E,0x8002,0x781E, /* Range 0x6721 - 0x672A, array index: 0x15B5 */ 0x5528,0x5572,0x55BA,0x55F0,0x55EE,0x56B8,0x56B9,0x56C4, 0x8053,0x92B0, /* Unranged codes (222 codes) */ /* Array index: 0x15BF */ 0x2170,0x4EE7, /* Array index: 0x15BF */ 0x2172,0x4EE6, /* Array index: 0x15BF */ 0x234B,0x597A, /* Array index: 0x15BF */ 0x234D,0x5986, /* Array index: 0x15BF */ 0x235A,0x5C80, /* Array index: 0x15BF */ 0x235C,0x5E08, /* Array index: 0x15BF */ 0x2361,0x5EF5, /* Array index: 0x15BF */ 0x2362,0x5F0E, /* Array index: 0x15BF */ 0x2366,0x5FD3, /* Array index: 0x15BF */ 0x2367,0x5FDA, /* Array index: 0x15BF */ 0x2421,0x6C3C, /* Array index: 0x15BF */ 0x2433,0x793C, /* Array index: 0x15BF */ 0x2435,0x808D, /* Array index: 0x15BF */ 0x2436,0x808E, /* Array index: 0x15BF */ 0x246D,0x544D, /* Array index: 0x15BF */ 0x2470,0x543A, /* Array index: 0x15BF */ 0x253C,0x5746, /* Array index: 0x15BF */ 0x2551,0x599F, /* Array index: 0x15BF */ 0x2553,0x599B, /* Array index: 0x15BF */ 0x2555,0x5989, /* Array index: 0x15BF */ 0x2556,0x599A, /* Array index: 0x15BF */ 0x2558,0x6588, /* Array index: 0x15BF */ 0x263D,0x65F6, /* Array index: 0x15BF */ 0x266E,0x7398, /* Array index: 0x15BF */ 0x2755,0x5190, /* Array index: 0x15BF */ 0x2833,0x59AD, /* Array index: 0x15BF */ 0x2835,0x59C4, /* Array index: 0x15BF */ 0x2837,0x59C2, /* Array index: 0x15BF */ 0x2838,0x59B0, /* Array index: 0x15BF */ 0x2845,0x59B7, /* Array index: 0x15BF */ 0x2846,0x59D7, /* Array index: 0x15BF */ 0x287E,0x5FE9, /* Array index: 0x15BF */ 0x2921,0x603D, /* Array index: 0x15BF */ 0x2922,0x6008, /* Array index: 0x15BF */ 0x295D,0x6C1C, /* Array index: 0x15BF */ 0x297C,0x7240, /* Array index: 0x15BF */ 0x2A42,0x79C7, /* Array index: 0x15BF */ 0x2A44,0x79CA, /* Array index: 0x15BF */ 0x2A52,0x80B0, /* Array index: 0x15BF */ 0x2A66,0x82AA, /* Array index: 0x15BF */ 0x2A68,0x82C9, /* Array index: 0x15BF */ 0x2A6B,0x82A6, /* Array index: 0x15BF */ 0x2A6C,0x82B2, /* Array index: 0x15BF */ 0x2B43,0x524F, /* Array index: 0x15BF */ 0x2B61,0x54CD, /* Array index: 0x15BF */ 0x2B77,0x58F5, /* Array index: 0x15BF */ 0x2B79,0x5909, /* Array index: 0x15BF */ 0x2B7A,0x5908, /* Array index: 0x15BF */ 0x2B7C,0x5952, /* Array index: 0x15BF */ 0x2C32,0x5BAB, /* Array index: 0x15BF */ 0x2C34,0x5C1B, /* Array index: 0x15BF */ 0x2C35,0x5C2F, /* Array index: 0x15BF */ 0x2C37,0x663C, /* Array index: 0x15BF */ 0x2C50,0x5F66, /* Array index: 0x15BF */ 0x2C54,0x605C, /* Array index: 0x15BF */ 0x2D42,0x6BE1, /* Array index: 0x15BF */ 0x2E2F,0x75A8, /* Array index: 0x15BF */ 0x2E72,0x82E9, /* Array index: 0x15BF */ 0x2F7E,0x5518, /* Array index: 0x15BF */ 0x3021,0x54F0, /* Array index: 0x15BF */ 0x3022,0x54F6, /* Array index: 0x15BF */ 0x3025,0x5519, /* Array index: 0x15BF */ 0x3045,0x5A22, /* Array index: 0x15BF */ 0x3048,0x5A24, /* Array index: 0x15BF */ 0x3052,0x5A26, /* Array index: 0x15BF */ 0x307E,0x6056, /* Array index: 0x15BF */ 0x3236,0x727A, /* Array index: 0x15BF */ 0x3255,0x75B4, /* Array index: 0x15BF */ 0x3257,0x75B1, /* Array index: 0x15BF */ 0x3337,0x7D24, /* Array index: 0x15BF */ 0x3352,0x80F7, /* Array index: 0x15BF */ 0x335F,0x8321, /* Array index: 0x15BF */ 0x3362,0x8318, /* Array index: 0x15BF */ 0x3363,0x8358, /* Array index: 0x15BF */ 0x3439,0x96BD, /* Array index: 0x15BF */ 0x3522,0x5A2B, /* Array index: 0x15BF */ 0x3524,0x5A3B, /* Array index: 0x15BF */ 0x353F,0x5BC8, /* Array index: 0x15BF */ 0x3541,0x5BC3, /* Array index: 0x15BF */ 0x3568,0x6098, /* Array index: 0x15BF */ 0x356A,0x60D0, /* Array index: 0x15BF */ 0x3579,0x60DE, /* Array index: 0x15BF */ 0x357C,0x637E, /* Array index: 0x15BF */ 0x357D,0x638B, /* Array index: 0x15BF */ 0x3740,0x73FB, /* Array index: 0x15BF */ 0x374D,0x7690, /* Array index: 0x15BF */ 0x3821,0x7C9A, /* Array index: 0x15BF */ 0x3822,0x7C9C, /* Array index: 0x15BF */ 0x3824,0x7D49, /* Array index: 0x15BF */ 0x3826,0x7D34, /* Array index: 0x15BF */ 0x3827,0x7D37, /* Array index: 0x15BF */ 0x3829,0x7D2D, /* Array index: 0x15BF */ 0x382B,0x7D4C, /* Array index: 0x15BF */ 0x382E,0x7D48, /* Array index: 0x15BF */ 0x3831,0x7F3B, /* Array index: 0x15BF */ 0x3836,0x8008, /* Array index: 0x15BF */ 0x3837,0x801A, /* Array index: 0x15BF */ 0x387E,0x8A1C, /* Array index: 0x15BF */ 0x3922,0x8A2B, /* Array index: 0x15BF */ 0x3923,0x8A20, /* Array index: 0x15BF */ 0x3925,0x8A29, /* Array index: 0x15BF */ 0x3947,0x8ED9, /* Array index: 0x15BF */ 0x395C,0x9587, /* Array index: 0x15BF */ 0x395E,0x965A, /* Array index: 0x15BF */ 0x3961,0x966E, /* Array index: 0x15BF */ 0x3965,0x9679, /* Array index: 0x15BF */ 0x3A21,0x5273, /* Array index: 0x15BF */ 0x3A23,0x5270, /* Array index: 0x15BF */ 0x3A66,0x5A91, /* Array index: 0x15BF */ 0x3A6B,0x5ACF, /* Array index: 0x15BF */ 0x3A72,0x5A87, /* Array index: 0x15BF */ 0x3A73,0x5AA0, /* Array index: 0x15BF */ 0x3B31,0x5D57, /* Array index: 0x15BF */ 0x3B4B,0x5FA7, /* Array index: 0x15BF */ 0x3B79,0x65D1, /* Array index: 0x15BF */ 0x3D4C,0x7694, /* Array index: 0x15BF */ 0x3D4D,0x76B3, /* Array index: 0x15BF */ 0x3D7E,0x7CA7, /* Array index: 0x15BF */ 0x3E6D,0x88BB, /* Array index: 0x15BF */ 0x3E6F,0x88BF, /* Array index: 0x15BF */ 0x3E70,0x88B4, /* Array index: 0x15BF */ 0x3E72,0x88B5, /* Array index: 0x15BF */ 0x3E74,0x899A, /* Array index: 0x15BF */ 0x3E75,0x8A43, /* Array index: 0x15BF */ 0x3E78,0x8A5A, /* Array index: 0x15BF */ 0x3F5D,0x91FE, /* Array index: 0x15BF */ 0x3F5E,0x9220, /* Array index: 0x15BF */ 0x3F60,0x920B, /* Array index: 0x15BF */ 0x3F6C,0x9595, /* Array index: 0x15BF */ 0x3F7B,0x96EE, /* Array index: 0x15BF */ 0x3F7C,0x96ED, /* Array index: 0x15BF */ 0x3F7E,0x96EC, /* Array index: 0x15BF */ 0x4021,0x975F, /* Array index: 0x15BF */ 0x4022,0x976F, /* Array index: 0x15BF */ 0x4024,0x976D, /* Array index: 0x15BF */ 0x402B,0x98F0, /* Array index: 0x15BF */ 0x402F,0x9AA9, /* Array index: 0x15BF */ 0x4032,0x9AE0, /* Array index: 0x15BF */ 0x4033,0x4EB7, /* Array index: 0x15BF */ 0x4064,0x5ACE, /* Array index: 0x15BF */ 0x4066,0x5AC5, /* Array index: 0x15BF */ 0x4067,0x5AC3, /* Array index: 0x15BF */ 0x406A,0x5AD0, /* Array index: 0x15BF */ 0x4142,0x643C, /* Array index: 0x15BF */ 0x4144,0x6446, /* Array index: 0x15BF */ 0x4145,0x6447, /* Array index: 0x15BF */ 0x4148,0x643A, /* Array index: 0x15BF */ 0x4149,0x6407, /* Array index: 0x15BF */ 0x414B,0x656B, /* Array index: 0x15BF */ 0x4156,0x668F, /* Array index: 0x15BF */ 0x4159,0x6692, /* Array index: 0x15BF */ 0x415B,0x668E, /* Array index: 0x15BF */ 0x415D,0x6946, /* Array index: 0x15BF */ 0x4165,0x6931, /* Array index: 0x15BF */ 0x4168,0x693E, /* Array index: 0x15BF */ 0x416A,0x697C, /* Array index: 0x15BF */ 0x416B,0x6943, /* Array index: 0x15BF */ 0x416D,0x6973, /* Array index: 0x15BF */ 0x416F,0x6955, /* Array index: 0x15BF */ 0x4221,0x6B73, /* Array index: 0x15BF */ 0x4222,0x6B9C, /* Array index: 0x15BF */ 0x4236,0x6EA9, /* Array index: 0x15BF */ 0x424C,0x7148, /* Array index: 0x15BF */ 0x4321,0x7698, /* Array index: 0x15BF */ 0x433D,0x7980, /* Array index: 0x15BF */ 0x4341,0x7A0F, /* Array index: 0x15BF */ 0x4344,0x7A1D, /* Array index: 0x15BF */ 0x4358,0x7CAE, /* Array index: 0x15BF */ 0x435C,0x7CB0, /* Array index: 0x15BF */ 0x435E,0x7D90, /* Array index: 0x15BF */ 0x436E,0x7FA3, /* Array index: 0x15BF */ 0x437B,0x815D, /* Array index: 0x15BF */ 0x437C,0x8175, /* Array index: 0x15BF */ 0x437E,0x815F, /* Array index: 0x15BF */ 0x4473,0x8EB1, /* Array index: 0x15BF */ 0x4540,0x968F, /* Array index: 0x15BF */ 0x4542,0x9696, /* Array index: 0x15BF */ 0x4546,0x96F4, /* Array index: 0x15BF */ 0x4547,0x96FC, /* Array index: 0x15BF */ 0x4549,0x9755, /* Array index: 0x15BF */ 0x454B,0x9779, /* Array index: 0x15BF */ 0x454F,0x97EE, /* Array index: 0x15BF */ 0x4550,0x97F5, /* Array index: 0x15BF */ 0x4552,0x980B, /* Array index: 0x15BF */ 0x4554,0x98F3, /* Array index: 0x15BF */ 0x457A,0x51F4, /* Array index: 0x15BF */ 0x457E,0x52ED, /* Array index: 0x15BF */ 0x4621,0x52EA, /* Array index: 0x15BF */ 0x4623,0x5332, /* Array index: 0x15BF */ 0x467E,0x6455, /* Array index: 0x15BF */ 0x4730,0x6571, /* Array index: 0x15BF */ 0x4751,0x6998, /* Array index: 0x15BF */ 0x482E,0x76B9, /* Array index: 0x15BF */ 0x484B,0x7A29, /* Array index: 0x15BF */ 0x484D,0x7A2A, /* Array index: 0x15BF */ 0x484F,0x7A2D, /* Array index: 0x15BF */ 0x4850,0x7A2C, /* Array index: 0x15BF */ 0x4868,0x7DC8, /* Array index: 0x15BF */ 0x4869,0x7DB6, /* Array index: 0x15BF */ 0x486B,0x7DD1, /* Array index: 0x15BF */ 0x496B,0x8A9D, /* Array index: 0x15BF */ 0x496D,0x8C67, /* Array index: 0x15BF */ 0x4A21,0x8FA1, /* Array index: 0x15BF */ 0x4A22,0x8FA2, /* Array index: 0x15BF */ 0x4A24,0x905A, /* Array index: 0x15BF */ 0x4A3D,0x95A2, /* Array index: 0x15BF */ 0x4A3E,0x95A7, /* Array index: 0x15BF */ 0x4A4C,0x9759, /* Array index: 0x15BF */ 0x4A4E,0x9764, /* Array index: 0x15BF */ 0x4A5B,0x9906, /* Array index: 0x15BF */ 0x4A6A,0x99C4, /* Array index: 0x15BF */ 0x4A78,0x9B40, /* Array index: 0x15BF */ 0x4B22,0x9EBD, /* Array index: 0x15BF */ 0x4B27,0x510E, /* Array index: 0x15BF */ 0x4D22,0x71AE, /* Array index: 0x15BF */ 0x4D44,0x778A, /* Array index: 0x15BF */ 0x4D60,0x7BBF, /* Array index: 0x15BF */ 0x4D63,0x7BCD, /* Array index: 0x15BF */ 0x4D65,0x7BB2, /* Array index: 0x15BF */ 0x4E22,0x7DD6, /* Array index: 0x15BF */ 0x4E40,0x8501, /* Array index: 0x15BF */ 0x4E42,0x84F8, /* Array index: 0x15BF */ 0x4E44,0x84F5, /* Array index: 0x15BF */ 0x4E46,0x8504, /* Array index: 0x15BF */ 0x4E52,0x8535, /* Array index: 0x15BF */ 0x4E54,0x8505, /* Array index: 0x15BF */ 0x4E59,0x877D, /* Array index: 0x15BF */ 0x4E7A,0x8C8E, /* Array index: 0x15BF */ 0x4E7D,0x8CE9, /* Array index: 0x15BF */ 0x4E7E,0x8CDB, /* Array index: 0x15BF */ 0x4F5A,0x96A3, /* Array index: 0x15BF */ 0x4F5B,0x96A5, /* Array index: 0x15BF */ 0x5022,0x9D0D, /* Array index: 0x15BF */ 0x5024,0x9D01, /* Array index: 0x15BF */ 0x5025,0x9D0C, /* Array index: 0x15BF */ 0x5027,0x9CF8, /* Array index: 0x15BF */ 0x503B,0x5667, /* Array index: 0x15BF */ 0x503D,0x567B, /* Array index: 0x15BF */ 0x503F,0x565F, /* Array index: 0x15BF */ 0x5040,0x5661, /* Array index: 0x15BF */ 0x514D,0x6FBB, /* Array index: 0x15BF */ 0x5150,0x6FBE, /* Array index: 0x15BF */ 0x5179,0x7798, /* Array index: 0x15BF */ 0x517B,0x7796, /* Array index: 0x15BF */ 0x5221,0x78D6, /* Array index: 0x15BF */ 0x5222,0x78EB, /* Array index: 0x15BF */ 0x5237,0x7CD3, /* Array index: 0x15BF */ 0x5239,0x7CE1, /* Array index: 0x15BF */ 0x523B,0x7E19, /* Array index: 0x15BF */ 0x523F,0x7E27, /* Array index: 0x15BF */ 0x5240,0x7E26, /* Array index: 0x15BF */ 0x5243,0x806E, /* Array index: 0x15BF */ 0x5244,0x81AF, /* Array index: 0x15BF */ 0x5247,0x81AD, /* Array index: 0x15BF */ 0x5249,0x81AA, /* Array index: 0x15BF */ 0x524A,0x8218, /* Array index: 0x15BF */ 0x524F,0x856F, /* Array index: 0x15BF */ 0x5250,0x854C, /* Array index: 0x15BF */ 0x526E,0x8AEC, /* Array index: 0x15BF */ 0x5273,0x8CF2, /* Array index: 0x15BF */ 0x5275,0x8CEF, /* Array index: 0x15BF */ 0x5277,0x8DA6, /* Array index: 0x15BF */ 0x527B,0x8E3B, /* Array index: 0x15BF */ 0x527C,0x8E43, /* Array index: 0x15BF */ 0x527E,0x8E32, /* Array index: 0x15BF */ 0x5348,0x96AB, /* Array index: 0x15BF */ 0x5349,0x96B7, /* Array index: 0x15BF */ 0x534C,0x9715, /* Array index: 0x15BF */ 0x534D,0x9714, /* Array index: 0x15BF */ 0x5350,0x970C, /* Array index: 0x15BF */ 0x5351,0x9717, /* Array index: 0x15BF */ 0x5353,0x9793, /* Array index: 0x15BF */ 0x5355,0x97D2, /* Array index: 0x15BF */ 0x5370,0x99E1, /* Array index: 0x15BF */ 0x5371,0x99E6, /* Array index: 0x15BF */ 0x5421,0x9B8C, /* Array index: 0x15BF */ 0x5423,0x9B89, /* Array index: 0x15BF */ 0x5425,0x9B8E, /* Array index: 0x15BF */ 0x5464,0x64DF, /* Array index: 0x15BF */ 0x5467,0x64E1, /* Array index: 0x15BF */ 0x5521,0x6A86, /* Array index: 0x15BF */ 0x5523,0x6A98, /* Array index: 0x15BF */ 0x5524,0x6A9D, /* Array index: 0x15BF */ 0x5527,0x6A8F, /* Array index: 0x15BF */ 0x5529,0x6AAA, /* Array index: 0x15BF */ 0x552B,0x6B5D, /* Array index: 0x15BF */ 0x553C,0x71E3, /* Array index: 0x15BF */ 0x5549,0x7371, /* Array index: 0x15BF */ 0x554B,0x74AE, /* Array index: 0x15BF */ 0x554D,0x74B3, /* Array index: 0x15BF */ 0x554F,0x74AC, /* Array index: 0x15BF */ 0x5579,0x7E2C, /* Array index: 0x15BF */ 0x557A,0x7E4D, /* Array index: 0x15BF */ 0x557D,0x7F46, /* Array index: 0x15BF */ 0x557E,0x7FF6, /* Array index: 0x15BF */ 0x5630,0x85AC, /* Array index: 0x15BF */ 0x5634,0x87CE, /* Array index: 0x15BF */ 0x5636,0x87CD, /* Array index: 0x15BF */ 0x564D,0x8C40, /* Array index: 0x15BF */ 0x564F,0x8C96, /* Array index: 0x15BF */ 0x567A,0x979B, /* Array index: 0x15BF */ 0x567B,0x979F, /* Array index: 0x15BF */ 0x5726,0x9840, /* Array index: 0x15BF */ 0x5728,0x9847, /* Array index: 0x15BF */ 0x572A,0x98B7, /* Array index: 0x15BF */ 0x5730,0x99A2, /* Array index: 0x15BF */ 0x5733,0x9A00, /* Array index: 0x15BF */ 0x5734,0x99F3, /* Array index: 0x15BF */ 0x5737,0x99F5, /* Array index: 0x15BF */ 0x5748,0x9D39, /* Array index: 0x15BF */ 0x574A,0x9D44, /* Array index: 0x15BF */ 0x574D,0x9D35, /* Array index: 0x15BF */ 0x5750,0x9EAF, /* Array index: 0x15BF */ 0x5752,0x512F, /* Array index: 0x15BF */ 0x5849,0x7AF5, /* Array index: 0x15BF */ 0x584C,0x7C2E, /* Array index: 0x15BF */ 0x584E,0x7C1B, /* Array index: 0x15BF */ 0x5850,0x7C1A, /* Array index: 0x15BF */ 0x5851,0x7C24, /* Array index: 0x15BF */ 0x5861,0x7FFA, /* Array index: 0x15BF */ 0x5862,0x802E, /* Array index: 0x15BF */ 0x5865,0x81CE, /* Array index: 0x15BF */ 0x5868,0x8219, /* Array index: 0x15BF */ 0x5921,0x89B3, /* Array index: 0x15BF */ 0x5923,0x8B38, /* Array index: 0x15BF */ 0x5924,0x8B32, /* Array index: 0x15BF */ 0x5926,0x8B2D, /* Array index: 0x15BF */ 0x5928,0x8B34, /* Array index: 0x15BF */ 0x592A,0x8B29, /* Array index: 0x15BF */ 0x592B,0x8C74, /* Array index: 0x15BF */ 0x592E,0x8D03, /* Array index: 0x15BF */ 0x5956,0x9854, /* Array index: 0x15BF */ 0x5A3F,0x65DC, /* Array index: 0x15BF */ 0x5A6E,0x7C35, /* Array index: 0x15BF */ 0x5A6F,0x7C34, /* Array index: 0x15BF */ 0x5A72,0x7E6C, /* Array index: 0x15BF */ 0x5B22,0x85E7, /* Array index: 0x15BF */ 0x5B2F,0x8987, /* Array index: 0x15BF */ 0x5B53,0x95DD, /* Array index: 0x15BF */ 0x5B65,0x9856, /* Array index: 0x15BF */ 0x5C47,0x6AF4, /* Array index: 0x15BF */ 0x5C49,0x6AE9, /* Array index: 0x15BF */ 0x5C4F,0x703D, /* Array index: 0x15BF */ 0x5C51,0x7036, /* Array index: 0x15BF */ 0x5D56,0x98C3, /* Array index: 0x15BF */ 0x5D58,0x994D, /* Array index: 0x15BF */ 0x5D5A,0x9A2F, /* Array index: 0x15BF */ 0x5E2D,0x5DD0, /* Array index: 0x15BF */ 0x5E2F,0x5FC2, /* Array index: 0x15BF */ 0x5E6D,0x942D, /* Array index: 0x15BF */ 0x5F3A,0x9E9E, /* Array index: 0x15BF */ 0x5F5F,0x8827, /* Array index: 0x15BF */ 0x5F61,0x8B81, /* Array index: 0x15BF */ 0x5F62,0x8B83, /* Array index: 0x15BF */ 0x5F64,0x8C44, /* Array index: 0x15BF */ 0x5F78,0x995A, /* Array index: 0x15BF */ 0x5F79,0x9A51, /* Array index: 0x15BF */ 0x5F7B,0x9ADD, /* Array index: 0x15BF */ 0x5F7E,0x9C38, /* Array index: 0x15BF */ 0x6022,0x9C45, /* Array index: 0x15BF */ 0x6023,0x9C3A, /* Array index: 0x15BF */ 0x6025,0x9C35, /* Array index: 0x15BF */ 0x6029,0x9EF1, /* Array index: 0x15BF */ 0x602B,0x9F93, /* Array index: 0x15BF */ 0x602C,0x529A, /* Array index: 0x15BF */ 0x602F,0x8641, /* Array index: 0x15BF */ 0x6030,0x5DD7, /* Array index: 0x15BF */ 0x6032,0x6528, /* Array index: 0x15BF */ 0x6036,0x7053, /* Array index: 0x15BF */ 0x6037,0x7059, /* Array index: 0x15BF */ 0x604F,0x945F, /* Array index: 0x15BF */ 0x606C,0x9DFC, /* Array index: 0x15BF */ 0x606D,0x9F39, /* Array index: 0x15BF */ 0x606F,0x513E, /* Array index: 0x15BF */ 0x6071,0x56D2, /* Array index: 0x15BF */ 0x607B,0x8B91, /* Array index: 0x15BF */ 0x607E,0x91BF, /* Array index: 0x15BF */ 0x6122,0x946C, /* Array index: 0x15BF */ 0x613B,0x9F45, /* Array index: 0x15BF */ 0x6159,0x9C6C, /* Array index: 0x15BF */ 0x615B,0x9C6F, /* Array index: 0x15BF */ 0x623F,0x9EA3, /* Array index: 0x15BF */ 0x6241,0x9C7B, /* Array index: 0x15BF */ 0x6242,0x9F97, /* Array index: 0x15BF */ 0x6245,0x9750, /* Array index: 0x15BF */ 0x6249,0x5727, /* Array index: 0x15BF */ 0x624A,0x5C13, /* Array index: 0x15BF */ 0x6251,0x5FC8, /* Array index: 0x15BF */ 0x6257,0x6765, /* Array index: 0x15BF */ 0x625A,0x52BD, /* Array index: 0x15BF */ 0x6279,0x70C9, /* Array index: 0x15BF */ 0x6323,0x9579, /* Array index: 0x15BF */ 0x6325,0x96BA, /* Array index: 0x15BF */ 0x632D,0x7B29, /* Array index: 0x15BF */ 0x632E,0x8128, /* Array index: 0x15BF */ 0x6330,0x8A2E, /* Array index: 0x15BF */ 0x6334,0x9AD9, /* Array index: 0x15BF */ 0x6336,0x582B, /* Array index: 0x15BF */ 0x6337,0x5845, /* Array index: 0x15BF */ 0x6339,0x63FA, /* Array index: 0x15BF */ 0x633D,0x6E86, /* Array index: 0x15BF */ 0x6343,0x5867, /* Array index: 0x15BF */ 0x6345,0x5BDD, /* Array index: 0x15BF */ 0x6346,0x656E, /* Array index: 0x15BF */ 0x634A,0x8C87, /* Array index: 0x15BF */ 0x634C,0x50D2, /* Array index: 0x15BF */ 0x634D,0x50DF, /* Array index: 0x15BF */ 0x6352,0x69BA, /* Array index: 0x15BF */ 0x6354,0x6B9D, /* Array index: 0x15BF */ 0x6356,0x8059, /* Array index: 0x15BF */ 0x6363,0x6F8A, /* Array index: 0x15BF */ 0x6366,0x7BC3, /* Array index: 0x15BF */ 0x6367,0x7BC2, /* Array index: 0x15BF */ 0x636C,0x90F6, /* Array index: 0x15BF */ 0x636E,0x9823, /* Array index: 0x15BF */ 0x6374,0x71CD, /* Array index: 0x15BF */ 0x6375,0x7499, /* Array index: 0x15BF */ 0x637B,0x9842, /* Array index: 0x15BF */ 0x6422,0x7F84, /* Array index: 0x15BF */ 0x6428,0x8D0E, /* Array index: 0x15BF */ 0x642A,0x9861, /* Array index: 0x15BF */ 0x642D,0x8B73, }; #endif /* ICONV_TO_UCS_CCS_CNS11643_PLANE14 && defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * 16-bit UCS -> cns11643_plane14 speed-optimized table (42496 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_CNS11643_PLANE14) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t from_ucs_speed_cns11643_plane14[] = { /* Heading Block */ INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,0x0100,0x0200, 0x0300,0x0400,0x0500,0x0600,0x0700,0x0800,0x0900,0x0A00, 0x0B00,0x0C00,0x0D00,0x0E00,0x0F00,0x1000,0x1100,0x1200, 0x1300,0x1400,0x1500,0x1600,0x1700,0x1800,0x1900,0x1A00, 0x1B00,0x1C00,0x1D00,0x1E00,0x1F00,0x2000,0x2100,0x2200, 0x2300,0x2400,0x2500,0x2600,0x2700,0x2800,0x2900,0x2A00, 0x2B00,0x2C00,0x2D00,0x2E00,0x2F00,0x3000,0x3100,0x3200, 0x3300,0x3400,0x3500,0x3600,0x3700,0x3800,0x3900,0x3A00, 0x3B00,0x3C00,0x3D00,0x3E00,0x3F00,0x4000,0x4100,0x4200, 0x4300,0x4400,0x4500,0x4600,0x4700,0x4800,0x4900,0x4A00, 0x4B00,0x4C00,0x4D00,0x4E00,0x4F00,0x5000,0x5100,0x5200, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, /* Block 79, Array index 0x0100 */ INVALC,INVALC,INVALC,INVALC,0x2126,0x2125,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2262,0x2261,0x2263,INVALC,0x243F,INVALC,INVALC,INVALC, 0x2121,INVALC,0x212C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2122,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2740,INVALC,0x2123, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2130,INVALC, INVALC,0x212E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2345,INVALC,INVALC,0x2B22, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2146,0x2145,INVALC,INVALC,INVALC,INVALC, 0x2264,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2440,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2B23,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x396C,0x396E,INVALC,INVALC,INVALC,0x2124,INVALC,0x212D, INVALC,0x2265,INVALC,INVALC,INVALC,INVALC,INVALC,0x2131, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x216C, 0x2266,INVALC,INVALC,INVALC,0x2442,0x2742,INVALC,INVALC, INVALC,INVALC,INVALC,0x2147,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2B26, 0x2B25,0x2B27,0x2B24,INVALC,INVALC,INVALC,INVALC,0x4033, INVALC,INVALC,INVALC,INVALC,0x2132,INVALC,0x2133,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2149,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x214C,INVALC,0x214B,0x214A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x216D,INVALC,INVALC,INVALC,INVALC,INVALC,0x2172,0x2170, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x226F,0x2268, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x226B,0x2267,0x2276,INVALC,0x226E,INVALC,INVALC,INVALC, /* Block 80, Array index 0x0200 */ INVALC,INVALC,INVALC,0x226D,INVALC,INVALC,0x226C,0x2274, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2270,0x2277, INVALC,INVALC,0x2275,INVALC,0x2273,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2272,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2450,0x2448,INVALC,INVALC,0x244F,INVALC,0x2446, INVALC,0x2445,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x244E,INVALC,0x2449,INVALC,0x244B,0x2443,INVALC,INVALC, INVALC,INVALC,0x2444,0x244C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6448,INVALC, 0x6449,INVALC,INVALC,INVALC,INVALC,0x2747,INVALC,INVALC, INVALC,INVALC,0x274F,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2744,INVALC,0x2751,INVALC,0x2748,INVALC, INVALC,INVALC,INVALC,0x2743,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x274C, 0x2749,0x274B,0x274A,0x274D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2B2D,0x2B2E,INVALC,INVALC,0x2B36,INVALC,INVALC,INVALC, 0x2B2C,INVALC,INVALC,INVALC,INVALC,0x6263,0x2B2B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2B32,INVALC, 0x2B2F,INVALC,INVALC,INVALC,0x2B33,INVALC,INVALC,INVALC, INVALC,INVALC,0x2B28,INVALC,INVALC,0x2B29,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2B35,INVALC,0x2B34,INVALC,0x644A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2F48,INVALC,0x2F4D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2F44,INVALC,0x2F58,0x2F4C,0x2F56,INVALC,0x2F46, /* Block 81, Array index 0x0300 */ INVALC,INVALC,0x2F4B,0x2F49,0x2F47,INVALC,INVALC,INVALC, 0x2F4F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2F53,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2F45,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2F4E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2F51,INVALC, INVALC,INVALC,0x2F43,INVALC,INVALC,INVALC,0x2F50,INVALC, 0x2F54,0x2F55,INVALC,INVALC,INVALC,INVALC,INVALC,0x644B, INVALC,INVALC,0x343C,INVALC,0x343F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3444,INVALC,0x3441,INVALC,0x3442,INVALC,0x2F57,INVALC, 0x3447,0x343D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3440,INVALC, INVALC,INVALC,INVALC,INVALC,0x344B,INVALC,INVALC,INVALC, INVALC,0x3443,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x344C,0x344A,INVALC,0x3445,0x3446,INVALC,INVALC,INVALC, INVALC,0x3975,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3971,0x3972,INVALC,INVALC,INVALC,INVALC,INVALC,0x396F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3970, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x644D,INVALC, INVALC,INVALC,0x4039,0x403C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x403A,INVALC,INVALC,0x4037,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x403D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4036,0x403E,INVALC,INVALC, 0x456B,INVALC,0x634C,INVALC,INVALC,INVALC,INVALC,INVALC, 0x456E,0x456C,INVALC,INVALC,0x456D,INVALC,0x4576,0x634D, INVALC,0x4570,0x4575,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4571,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4574,INVALC,INVALC,0x4B29, INVALC,INVALC,INVALC,INVALC,0x4B2B,INVALC,INVALC,INVALC, /* Block 82, Array index 0x0400 */ INVALC,0x4B2D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4B2C,0x4B27,0x644E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5031,INVALC, INVALC,INVALC,INVALC,0x5035,INVALC,0x5030,0x5034,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5441, 0x5440,INVALC,INVALC,0x5033,INVALC,INVALC,INVALC,0x5752, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C32,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x606F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2278,INVALC,INVALC,INVALC,0x2454,INVALC, 0x2453,0x2451,INVALC,INVALC,INVALC,INVALC,0x2752,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3976,INVALC,INVALC,INVALC,0x5E25,INVALC,0x2134,INVALC, INVALC,INVALC,0x2B37,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x227A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2E7B,INVALC,INVALC,INVALC,INVALC,0x403F,0x6453, INVALC,INVALC,0x2127,INVALC,0x214D,0x2148,0x214E,INVALC, INVALC,INVALC,INVALC,0x2178,0x2179,INVALC,INVALC,INVALC, 0x2755,INVALC,INVALC,INVALC,INVALC,INVALC,0x2128,INVALC, INVALC,0x217A,INVALC,INVALC,INVALC,0x2457,INVALC,0x2B39, INVALC,0x2F5B,INVALC,0x2F59,INVALC,INVALC,0x2F5A,INVALC, 0x344D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x227E,0x227D,0x227C,0x2459,INVALC,INVALC, 0x245A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2B3B,0x2B3D,0x2B3E,INVALC,INVALC,INVALC,0x2F5E, INVALC,0x2F5F,INVALC,INVALC,INVALC,INVALC,INVALC,0x344F, INVALC,0x344E,0x397D,0x397A,INVALC,INVALC,0x397E,INVALC, INVALC,0x4B2F,0x4B2E,0x4B30,INVALC,INVALC,INVALC,0x5442, INVALC,INVALC,0x212F,0x2135,0x2151,0x217B,INVALC,INVALC, 0x2322,INVALC,INVALC,INVALC,0x245B,0x2759,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x457A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x275A,INVALC, /* Block 83, Array index 0x0500 */ INVALC,INVALC,INVALC,INVALC,0x2136,0x2152,INVALC,INVALC, INVALC,INVALC,INVALC,0x217D,INVALC,INVALC,INVALC,0x2325, INVALC,INVALC,INVALC,INVALC,0x2324,0x2326,INVALC,INVALC, 0x2327,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x245F, 0x2461,INVALC,INVALC,0x245C,INVALC,INVALC,0x245E,0x245D, INVALC,INVALC,INVALC,0x2460,INVALC,INVALC,INVALC,0x275B, INVALC,INVALC,INVALC,INVALC,0x275E,INVALC,INVALC,INVALC, INVALC,0x275F,INVALC,INVALC,0x275D,INVALC,0x644F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2B3F,INVALC,INVALC, 0x2B40,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2B43, INVALC,INVALC,INVALC,0x2F68,INVALC,INVALC,INVALC,0x2F65, INVALC,0x2F62,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2F60,INVALC,INVALC,0x2F66,0x2F61,0x2F63,INVALC,0x2F64, 0x3450,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3A23,INVALC,INVALC,0x3A21,INVALC,INVALC,0x3451,INVALC, INVALC,0x4041,INVALC,INVALC,INVALC,INVALC,0x4040,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4B31,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4B32,INVALC, 0x5036,INVALC,INVALC,INVALC,0x5037,INVALC,INVALC,INVALC, INVALC,INVALC,0x602C,INVALC,0x2137,0x2154,0x2153,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2328,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2463,0x2462,0x2761,INVALC,INVALC, INVALC,0x2760,INVALC,INVALC,INVALC,0x625A,INVALC,0x2762, INVALC,INVALC,INVALC,INVALC,0x2B48,0x2B46,INVALC,INVALC, INVALC,INVALC,0x2B47,INVALC,0x2F6F,INVALC,0x2F6C,0x2F6A, 0x2F6D,0x2F6E,INVALC,INVALC,0x3452,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4045,0x4044,INVALC,INVALC,INVALC,INVALC,INVALC,0x4046, INVALC,INVALC,0x4621,INVALC,INVALC,0x457E,0x4B33,INVALC, INVALC,INVALC,0x4D2C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2155,INVALC,INVALC, /* Block 84, Array index 0x0600 */ 0x2156,INVALC,INVALC,0x2223,0x2222,INVALC,INVALC,0x2224, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5038,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2226,INVALC, INVALC,INVALC,INVALC,INVALC,0x6450,0x2465,INVALC,0x2B49, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4623,0x4B34,INVALC,0x5444,0x5C34,INVALC, 0x2129,INVALC,0x2157,0x2466,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2159,INVALC, INVALC,INVALC,INVALC,0x232A,INVALC,INVALC,INVALC,0x232B, 0x232D,INVALC,INVALC,INVALC,INVALC,0x2763,INVALC,INVALC, 0x2B4A,INVALC,INVALC,INVALC,INVALC,0x215A,INVALC,0x2227, INVALC,INVALC,INVALC,INVALC,INVALC,0x6451,INVALC,0x2A5C, INVALC,0x212A,INVALC,INVALC,INVALC,0x2228,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2467,INVALC,0x2765,INVALC, INVALC,INVALC,0x2766,INVALC,INVALC,0x2B4B,INVALC,INVALC, 0x4047,INVALC,INVALC,INVALC,INVALC,INVALC,0x215B,INVALC, INVALC,0x2229,INVALC,0x232F,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2767,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6452,INVALC,INVALC,INVALC,INVALC, 0x3454,INVALC,INVALC,INVALC,INVALC,INVALC,0x3A28,INVALC, 0x3A27,0x404A,0x4049,0x4048,INVALC,INVALC,0x4625,INVALC, 0x4626,0x4B35,INVALC,0x5445,INVALC,INVALC,0x212B,0x215C, INVALC,INVALC,0x222A,INVALC,INVALC,INVALC,0x2331,INVALC, INVALC,0x2769,0x276A,INVALC,0x3455,0x3A29,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x215E,INVALC,0x2160,INVALC, 0x222B,INVALC,0x2333,INVALC,INVALC,0x276B,INVALC,INVALC, INVALC,0x2B50,0x2B4F,INVALC,0x2B4E,0x2B4D,INVALC,INVALC, 0x404B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2231,INVALC,0x222D,0x222E, INVALC,0x222F,INVALC,INVALC,INVALC,INVALC,INVALC,0x2335, /* Block 85, Array index 0x0700 */ 0x2337,INVALC,INVALC,INVALC,INVALC,0x2339,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x233A,INVALC,0x233B,0x2334,INVALC, INVALC,INVALC,0x2476,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2479,0x247E,0x2475,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2524, INVALC,INVALC,0x2477,INVALC,0x247B,INVALC,INVALC,INVALC, INVALC,INVALC,0x2470,INVALC,INVALC,INVALC,INVALC,0x2521, INVALC,INVALC,INVALC,INVALC,0x2473,INVALC,INVALC,INVALC, INVALC,0x247C,INVALC,0x2478,0x2474,0x246D,INVALC,INVALC, 0x247D,0x2522,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2523,INVALC,INVALC,INVALC,INVALC,0x276E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2774,0x2778,INVALC,INVALC,0x2775,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2771,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x276C,INVALC,INVALC, INVALC,0x2770,0x2779,INVALC,INVALC,INVALC,INVALC,0x2773, INVALC,INVALC,INVALC,0x276F,0x2777,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2B5C,0x2B5D, INVALC,INVALC,INVALC,0x2B57,0x2B59,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2B5B,INVALC,0x2B54,0x2B5E,INVALC,INVALC, INVALC,0x2B51,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2B55,0x6454,0x2B63,0x2B61,INVALC,INVALC, 0x2B53,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2B58,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2F77, 0x3021,INVALC,INVALC,INVALC,0x2F74,0x2F78,0x3022,INVALC, INVALC,0x2F79,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 86, Array index 0x0800 */ 0x2F7B,INVALC,0x2F7A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2F73,INVALC,INVALC, INVALC,INVALC,INVALC,0x2F76,INVALC,INVALC,INVALC,INVALC, 0x2F7E,0x3025,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6721,0x345F,INVALC,0x3468,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3466,INVALC,INVALC,INVALC,INVALC,0x3467, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x345B,INVALC,INVALC,0x3458,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3462,0x3461,INVALC,INVALC,INVALC, 0x3457,0x3A36,0x3464,INVALC,INVALC,0x345E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3459,INVALC,INVALC,0x6457,INVALC,INVALC,INVALC,INVALC, INVALC,0x6456,0x6722,0x6455,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3A3C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3A31,0x3A38,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3A2E,0x3A2A, INVALC,INVALC,INVALC,0x3A33,INVALC,INVALC,0x3A40,INVALC, 0x3A34,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3A42,INVALC,INVALC,INVALC,INVALC,INVALC,0x3A3B, INVALC,INVALC,INVALC,INVALC,0x3A2F,INVALC,INVALC,INVALC, INVALC,INVALC,0x6723,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4051,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x404E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3A2B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x404C,INVALC,INVALC,INVALC,0x6725,INVALC, 0x6724,INVALC,INVALC,INVALC,0x6458,INVALC,INVALC,INVALC, 0x462E,INVALC,INVALC,0x4628,INVALC,INVALC,INVALC,INVALC, /* Block 87, Array index 0x0900 */ INVALC,INVALC,INVALC,0x4629,INVALC,0x4636,INVALC,0x462C, INVALC,INVALC,INVALC,0x462A,INVALC,INVALC,INVALC,INVALC, INVALC,0x4634,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4633,INVALC,INVALC,INVALC,INVALC,INVALC,0x4631,INVALC, 0x645A,INVALC,0x6459,INVALC,INVALC,INVALC,0x4650,INVALC, 0x4630,INVALC,INVALC,0x4B41,INVALC,0x4B38,INVALC,INVALC, INVALC,0x4B3D,INVALC,INVALC,INVALC,INVALC,INVALC,0x4B44, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4B3E,INVALC,INVALC,0x4B37, INVALC,INVALC,INVALC,0x4B3B,INVALC,0x4B43,INVALC,0x4B45, 0x4B40,0x4635,0x4B3C,INVALC,0x4B39,INVALC,0x4B3F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x503F, INVALC,0x5040,INVALC,INVALC,INVALC,INVALC,INVALC,0x503B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x503D,INVALC,0x5448,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5449,0x5447,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x645D,0x645B,INVALC,0x575B,INVALC,0x575A,INVALC, INVALC,INVALC,INVALC,0x5758,INVALC,INVALC,0x5759,0x5757, 0x575C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5A2D, 0x645E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6726,0x6727,0x645C,0x5E26,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6728,INVALC,INVALC,0x5F40, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6071,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2177,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x233E,INVALC,INVALC,0x252C,INVALC, INVALC,0x2526,INVALC,INVALC,0x252B,0x252A,INVALC,0x2529, INVALC,0x2548,0x2527,0x2528,INVALC,INVALC,0x2822,INVALC, 0x277D,INVALC,INVALC,0x277C,0x2821,0x277B,INVALC,INVALC, /* Block 88, Array index 0x0A00 */ 0x2B65,INVALC,INVALC,INVALC,INVALC,0x3027,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3A44,0x3A43, INVALC,INVALC,INVALC,INVALC,INVALC,0x4052,INVALC,0x4637, INVALC,INVALC,INVALC,INVALC,INVALC,0x5F41,INVALC,INVALC, INVALC,0x2161,INVALC,INVALC,0x2234,INVALC,INVALC,0x6249, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2341,0x2342,INVALC,INVALC,0x233F,0x2340,INVALC, INVALC,INVALC,INVALC,INVALC,0x2531,0x253E,INVALC,0x2530, INVALC,INVALC,0x2540,0x2536,0x252F,INVALC,0x253C,INVALC, 0x252D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2532,0x2541,0x2542,0x2533,0x2538, 0x2537,0x645F,INVALC,INVALC,INVALC,INVALC,INVALC,0x2535, INVALC,INVALC,INVALC,0x2825,INVALC,0x2823,INVALC,0x2826, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2828,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2829,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x282A, INVALC,0x2824,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6460,INVALC,INVALC,0x2B69,0x2B68,INVALC, 0x2B6C,0x2B67,0x2B6A,INVALC,INVALC,INVALC,0x2B71,INVALC, INVALC,INVALC,INVALC,INVALC,0x2B70,INVALC,INVALC,INVALC, INVALC,0x2B6B,INVALC,INVALC,INVALC,INVALC,0x2B6D,0x2B72, 0x2B6E,INVALC,INVALC,INVALC,0x2B66,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x302A, INVALC,INVALC,INVALC,0x3030,INVALC,INVALC,0x302F,INVALC, 0x3038,INVALC,INVALC,INVALC,0x3034,0x3035,INVALC,INVALC, 0x3033,0x3028,0x3037,INVALC,INVALC,0x302B,INVALC,INVALC, INVALC,0x3036,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3032,INVALC,0x346E,0x3471,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3472,INVALC, 0x3474,INVALC,0x3469,INVALC,INVALC,INVALC,INVALC,0x346B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x346F,0x3475, /* Block 89, Array index 0x0B00 */ INVALC,INVALC,INVALC,0x3476,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6461, INVALC,INVALC,0x6462,0x6463,INVALC,INVALC,INVALC,INVALC, 0x3A4A,INVALC,0x3A45,INVALC,INVALC,INVALC,INVALC,0x3A47, INVALC,INVALC,0x3A50,INVALC,INVALC,INVALC,0x3A4C,INVALC, INVALC,INVALC,INVALC,0x6336,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3A4E,INVALC,0x3A49,INVALC,0x3A4B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6337,INVALC,0x6464, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4057,INVALC,INVALC,INVALC,INVALC,INVALC,0x405B,INVALC, INVALC,INVALC,INVALC,INVALC,0x4056,INVALC,INVALC,0x405E, 0x405C,0x4058,INVALC,INVALC,INVALC,INVALC,0x405D,0x6343, INVALC,0x405A,0x4059,INVALC,0x4054,INVALC,INVALC,INVALC, INVALC,INVALC,0x4643,0x463E,INVALC,INVALC,INVALC,0x4642, 0x463C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x463D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x463A,0x4645,INVALC,INVALC, INVALC,INVALC,0x4638,INVALC,INVALC,0x4641,0x4644,0x4640, INVALC,INVALC,INVALC,0x6465,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4B46,INVALC,0x4B50,INVALC,INVALC,0x4B51, INVALC,INVALC,0x4B4B,INVALC,INVALC,0x463F,INVALC,INVALC, 0x4B4D,INVALC,0x4B49,INVALC,0x4B4F,0x4B4C,INVALC,0x4B47, INVALC,INVALC,INVALC,0x504A,INVALC,INVALC,INVALC,INVALC, 0x504B,INVALC,INVALC,0x5048,0x504C,INVALC,INVALC,INVALC, INVALC,INVALC,0x5049,INVALC,INVALC,0x544B,INVALC,INVALC, 0x544C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5A2F,INVALC,INVALC,INVALC, 0x5A2E,INVALC,INVALC,INVALC,INVALC,INVALC,0x5E28,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2343,INVALC, 0x2545,0x2543,0x2544,0x282D,INVALC,0x2B77,INVALC,0x3477, INVALC,INVALC,INVALC,0x3A52,INVALC,INVALC,INVALC,INVALC, /* Block 90, Array index 0x0C00 */ 0x6466,0x504D,0x2139,INVALC,0x2235,0x2344,INVALC,INVALC, 0x2B7A,0x2B79,0x213A,0x2546,INVALC,INVALC,INVALC,INVALC, 0x4646,0x6560,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2236,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3479, INVALC,INVALC,INVALC,0x405F,INVALC,INVALC,0x4B53,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2238,INVALC,0x2237,INVALC,0x2239,INVALC,0x2347,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2549,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x282E,0x282F,0x6467,INVALC,INVALC, INVALC,INVALC,0x2B7C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x347B,INVALC,0x347C,0x347D,INVALC, INVALC,INVALC,INVALC,0x3A53,0x3A54,INVALC,0x4060,INVALC, 0x4061,INVALC,INVALC,INVALC,0x4648,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x223B,INVALC,INVALC, INVALC,INVALC,0x234B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x234D,INVALC, INVALC,0x2555,INVALC,INVALC,0x254C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x254B,INVALC,INVALC,INVALC, INVALC,INVALC,0x2556,0x2553,0x254E,INVALC,INVALC,0x2551, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2841,0x2833,INVALC,INVALC, 0x2838,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2845, 0x2840,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x283D, INVALC,INVALC,0x2837,INVALC,0x2835,INVALC,INVALC,INVALC, INVALC,0x283F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2C26,INVALC,0x2846, INVALC,0x2C2D,INVALC,INVALC,INVALC,INVALC,INVALC,0x2C21, INVALC,INVALC,0x2C2C,INVALC,INVALC,INVALC,INVALC,0x2C2E, INVALC,INVALC,INVALC,0x2C23,INVALC,INVALC,INVALC,0x2C24, 0x2C25,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2C2B,0x2C29,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 91, Array index 0x0D00 */ INVALC,INVALC,0x2C2A,INVALC,0x2C28,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3040,INVALC,0x2C27,INVALC,INVALC, 0x6270,INVALC,0x304F,INVALC,0x304A,INVALC,INVALC,INVALC, INVALC,INVALC,0x304E,INVALC,INVALC,0x303E,INVALC,INVALC, INVALC,0x303B,0x3045,INVALC,0x3048,INVALC,0x3052,INVALC, INVALC,INVALC,0x303C,0x3522,0x3538,INVALC,INVALC,0x304D, INVALC,0x304B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3528,0x3524,INVALC,0x3531,INVALC,0x3533, INVALC,INVALC,INVALC,INVALC,INVALC,0x352E,INVALC,INVALC, INVALC,INVALC,INVALC,0x352A,INVALC,INVALC,0x352F,0x353B, INVALC,INVALC,INVALC,INVALC,0x353A,INVALC,INVALC,INVALC, INVALC,0x3539,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3527,INVALC,0x353C,INVALC,INVALC,INVALC,INVALC, 0x3530,INVALC,INVALC,0x352B,INVALC,INVALC,0x3529,0x3534, INVALC,0x3532,INVALC,0x3537,INVALC,0x3535,INVALC,INVALC, INVALC,0x3A75,INVALC,INVALC,INVALC,INVALC,0x3A7C,INVALC, 0x3A63,0x3A61,0x3A58,INVALC,INVALC,0x3A5B,0x3A77,0x3A72, 0x3A59,0x3A60,INVALC,INVALC,INVALC,0x3A7B,INVALC,INVALC, INVALC,0x3A66,INVALC,INVALC,INVALC,INVALC,0x3A62,INVALC, 0x3A5C,0x3A5E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3A73,0x3A5A,INVALC,0x3A57,0x3A7A,INVALC,INVALC,INVALC, 0x3A56,INVALC,0x3A79,0x3A78,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4067,INVALC,0x4066,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4064,0x3A6B, 0x406A,0x6468,INVALC,0x6469,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x464C,INVALC,INVALC,0x464A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x464F, 0x4653,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4B5C,INVALC,0x4B58,INVALC,0x4B54,INVALC, /* Block 92, Array index 0x0E00 */ 0x4B5E,INVALC,INVALC,INVALC,0x4B56,INVALC,0x4B5A,INVALC, INVALC,INVALC,0x4B5B,INVALC,INVALC,0x4B5D,0x4B5F,INVALC, INVALC,0x5050,0x5053,INVALC,INVALC,0x5051,INVALC,INVALC, 0x504F,INVALC,INVALC,INVALC,0x5054,INVALC,INVALC,0x504E, INVALC,INVALC,0x5056,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5450,INVALC,0x544E,INVALC,INVALC,INVALC,INVALC, INVALC,0x5452,INVALC,0x544F,INVALC,0x5451,INVALC,0x5453, INVALC,0x5A31,0x5761,0x575E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5C36,INVALC,0x5C39,INVALC,0x5C3A,INVALC, INVALC,0x5E29,0x5F42,INVALC,INVALC,INVALC,INVALC,0x6073, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2848,INVALC,INVALC,INVALC,INVALC,INVALC,0x625C,0x646A, INVALC,INVALC,0x2C2F,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4071,INVALC,0x4072,INVALC, INVALC,0x5057,INVALC,INVALC,0x5A34,INVALC,0x5C3B,INVALC, 0x213B,INVALC,0x223D,INVALC,INVALC,INVALC,0x2350,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x255A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x284C,INVALC,0x284A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x284E,0x284B,0x284D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2C32,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3057, INVALC,INVALC,INVALC,0x3056,0x3055,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3541,INVALC,INVALC,INVALC,INVALC, 0x353F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3A7E,INVALC,0x4074, INVALC,INVALC,0x4075,0x4076,0x4073,0x6345,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5A35,INVALC,INVALC,INVALC,0x5E2A, INVALC,0x223E,INVALC,INVALC,INVALC,0x255E,0x255C,0x255D, /* Block 93, Array index 0x0F00 */ 0x2850,INVALC,INVALC,INVALC,INVALC,0x3058,0x3059,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x624A,0x223F,INVALC,INVALC,INVALC, 0x2352,0x2851,INVALC,0x2C34,INVALC,INVALC,0x3B24,INVALC, 0x4078,0x6525,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x255F,INVALC,INVALC,INVALC,0x2C35, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5454,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2354,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2854,0x2855,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x305A,0x305B,INVALC,INVALC,INVALC,0x646B, INVALC,INVALC,INVALC,0x3543,INVALC,INVALC,0x3B26,0x3B25, INVALC,0x3544,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5A38,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x646C, 0x2355,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x235A,INVALC,INVALC,INVALC,0x2561,0x2566,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2562,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2563,INVALC,0x285D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x285E,INVALC,INVALC,INVALC, INVALC,0x285C,0x285F,0x2857,INVALC,INVALC,INVALC,INVALC, INVALC,0x2858,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2C3F,INVALC,INVALC, INVALC,0x2C3B,INVALC,INVALC,INVALC,0x646D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2C3C,0x2C42,INVALC,INVALC, INVALC,0x2C3E,0x2C41,INVALC,INVALC,0x2C43,0x2C3D,INVALC, INVALC,0x3063,INVALC,0x305F,INVALC,INVALC,INVALC,0x3064, INVALC,INVALC,INVALC,0x3061,INVALC,0x3062,INVALC,INVALC, INVALC,INVALC,0x305E,INVALC,0x6271,INVALC,0x6272,INVALC, /* Block 94, Array index 0x1000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x354B,0x3548,0x3547,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3551,INVALC,INVALC,0x3552,INVALC,0x354F,INVALC,INVALC, 0x3555,INVALC,INVALC,INVALC,0x3B2B,INVALC,INVALC,INVALC, INVALC,0x3546,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x354E,INVALC,0x354A,INVALC,INVALC,0x3554, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3B36,INVALC,INVALC,0x3B28,INVALC, INVALC,INVALC,INVALC,INVALC,0x3B27,INVALC,0x3B37,INVALC, 0x3B2A,INVALC,INVALC,INVALC,INVALC,0x3B2E,INVALC,0x3B34, INVALC,INVALC,INVALC,0x3B33,INVALC,INVALC,INVALC,0x3B31, INVALC,INVALC,INVALC,0x3B2D,INVALC,INVALC,INVALC,INVALC, 0x4121,INVALC,INVALC,INVALC,0x407C,INVALC,0x407A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4079,0x407D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x646E,INVALC,INVALC, 0x465C,INVALC,INVALC,0x4654,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4656,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4659,0x465A,INVALC,0x646F,0x4B65, 0x4B66,0x4B63,INVALC,INVALC,INVALC,INVALC,0x4B6B,INVALC, 0x4B67,INVALC,INVALC,0x4B69,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4B6A,0x4B68,0x6470,0x5058,INVALC, INVALC,INVALC,INVALC,0x505B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x505A,INVALC,INVALC,0x6471,INVALC, INVALC,0x5457,INVALC,0x5459,INVALC,INVALC,0x5455,0x6472, INVALC,0x5762,INVALC,INVALC,0x5A39,INVALC,INVALC,INVALC, 0x5C3D,INVALC,0x5C3C,INVALC,0x5C3E,INVALC,INVALC,INVALC, 0x5E2D,INVALC,INVALC,0x5F43,INVALC,INVALC,INVALC,0x6030, INVALC,INVALC,INVALC,0x213C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3557,0x4B6C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2567,0x2860,INVALC, INVALC,INVALC,0x2C45,0x2C44,INVALC,INVALC,INVALC,INVALC, /* Block 95, Array index 0x1100 */ 0x2163,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x235C,0x2568,INVALC,0x256B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2862,0x2861,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2C46,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3066,INVALC,0x3069,INVALC,0x3068,0x306A, 0x3067,INVALC,0x355B,INVALC,INVALC,0x3559,INVALC,INVALC, INVALC,0x3558,0x355A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3979,INVALC,INVALC,INVALC,0x3B3A,0x3B3B, 0x3B3D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x465D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4B6D,INVALC,INVALC,INVALC,0x4B70,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6473,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6677,INVALC,INVALC,INVALC,INVALC,INVALC,0x2863, INVALC,INVALC,0x213D,INVALC,INVALC,INVALC,INVALC,0x213E, INVALC,0x2247,INVALC,0x2248,INVALC,0x6678,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x256E,INVALC,0x256D,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2865,0x2867,INVALC,INVALC,INVALC,0x2868,INVALC,INVALC, INVALC,0x2C48,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x306C,INVALC,INVALC,INVALC,INVALC,INVALC,0x306B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3561,0x3560,INVALC,0x3B3F,INVALC,0x3B40, 0x3B3E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6474,INVALC,0x4661, 0x4660,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x505C,INVALC,INVALC,0x6475,INVALC,INVALC, 0x5C3F,INVALC,INVALC,INVALC,0x213F,0x2361,INVALC,INVALC, 0x2869,0x286B,INVALC,0x2C4C,0x2C4B,0x306E,INVALC,INVALC, /* Block 96, Array index 0x1200 */ INVALC,INVALC,INVALC,0x256F,INVALC,INVALC,0x286D,INVALC, INVALC,INVALC,INVALC,INVALC,0x2164,0x2249,0x2362,INVALC, INVALC,0x3B42,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2571,INVALC, INVALC,0x286E,INVALC,INVALC,INVALC,0x2870,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2C4D, INVALC,INVALC,0x306F,INVALC,0x3562,INVALC,INVALC,INVALC, INVALC,0x3563,0x3B47,0x3B45,INVALC,INVALC,0x3B44,INVALC, INVALC,INVALC,0x4122,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5763,INVALC,INVALC, 0x2140,0x2141,0x224A,0x2351,INVALC,0x2871,INVALC,INVALC, INVALC,INVALC,0x4123,0x505E,INVALC,0x5764,INVALC,INVALC, 0x6164,0x2142,INVALC,0x2572,INVALC,INVALC,0x2C50,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4124,INVALC, INVALC,INVALC,0x5F45,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2876,0x2875,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6264,0x3070,0x3072, INVALC,INVALC,INVALC,0x3071,0x6476,INVALC,INVALC,INVALC, INVALC,INVALC,0x6477,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3B4B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4663,0x4664,INVALC,INVALC,INVALC, 0x4B72,INVALC,0x6478,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5E2F,INVALC,INVALC,INVALC,INVALC,0x224D, 0x6251,INVALC,0x224C,INVALC,INVALC,INVALC,0x2578,INVALC, INVALC,INVALC,INVALC,0x2366,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2367,0x2369,0x2577,INVALC,INVALC,0x257B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2576,0x2574, INVALC,0x287E,INVALC,INVALC,0x257C,INVALC,INVALC,INVALC, 0x2622,INVALC,0x2621,INVALC,INVALC,INVALC,0x257D,INVALC, INVALC,0x2623,INVALC,INVALC,0x257A,INVALC,0x2575,INVALC, /* Block 97, Array index 0x1300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2878, 0x2922,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6266,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2C5A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2877,0x2C5B,INVALC,INVALC,INVALC,INVALC,0x287A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2921,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6267,INVALC,0x2C60,0x3079,INVALC,INVALC,0x2C56,0x3073, INVALC,0x2C57,0x2C5D,INVALC,INVALC,INVALC,0x307E,INVALC, INVALC,INVALC,INVALC,INVALC,0x2C54,INVALC,INVALC,INVALC, 0x2C5F,0x2C61,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x307A,0x3078,0x307B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2C5C,INVALC,0x3076,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3122,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3125,INVALC,INVALC,INVALC,INVALC, 0x3568,0x3074,INVALC,INVALC,INVALC,INVALC,0x3127,INVALC, INVALC,0x3571,INVALC,INVALC,0x3572,INVALC,0x3123,0x3128, INVALC,0x3121,0x356F,INVALC,INVALC,INVALC,0x3126,INVALC, INVALC,INVALC,INVALC,0x3B54,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x356A,INVALC,0x3B56,INVALC,INVALC,INVALC,0x3B55,0x356E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3579,INVALC, INVALC,INVALC,INVALC,0x3B58,INVALC,0x3B59,INVALC,0x3576, INVALC,0x3B5A,0x3B4D,INVALC,INVALC,INVALC,0x3574,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3B5E,INVALC,INVALC, /* Block 98, Array index 0x1400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3B4F, INVALC,INVALC,INVALC,INVALC,0x3B51,INVALC,INVALC,INVALC, INVALC,0x3B5D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x412B,INVALC,INVALC,INVALC,INVALC,0x3B61,INVALC, 0x3B62,0x3B63,0x3B50,INVALC,INVALC,0x6479,INVALC,INVALC, INVALC,INVALC,0x4129,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4127,0x412C,INVALC,0x466F,INVALC,INVALC,INVALC,INVALC, 0x466E,INVALC,0x4128,INVALC,0x466C,0x412E,INVALC,INVALC, INVALC,INVALC,0x466D,0x412A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x647A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4B73, INVALC,0x4B7E,INVALC,INVALC,0x4B74,INVALC,INVALC,INVALC, 0x4671,INVALC,INVALC,INVALC,0x4B7C,INVALC,INVALC,INVALC, INVALC,0x4672,INVALC,INVALC,INVALC,INVALC,INVALC,0x466A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4C21,INVALC,INVALC,0x4668,INVALC,0x4673,INVALC,INVALC, INVALC,0x466B,INVALC,INVALC,INVALC,0x4C23,0x4674,0x4C24, 0x4B77,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4B7A, INVALC,INVALC,INVALC,INVALC,INVALC,0x4B76,INVALC,0x5068, 0x4C28,0x5067,INVALC,INVALC,0x4C29,INVALC,0x4C25,INVALC, INVALC,INVALC,INVALC,0x4B79,INVALC,INVALC,0x4B75,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5061, INVALC,0x5063,INVALC,0x506A,INVALC,0x5064,INVALC,INVALC, 0x5066,INVALC,INVALC,INVALC,0x506C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5062,0x5065, 0x506B,INVALC,INVALC,0x6679,INVALC,INVALC,INVALC,INVALC, INVALC,0x5461,0x545F,0x545C,0x545E,0x545D,INVALC,INVALC, INVALC,INVALC,0x545B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5765,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 99, Array index 0x1500 */ INVALC,INVALC,0x5F46,INVALC,INVALC,0x613E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x236B, INVALC,INVALC,INVALC,0x2625,INVALC,INVALC,INVALC,INVALC, 0x2C63,INVALC,INVALC,INVALC,INVALC,INVALC,0x3B64,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4676,INVALC,INVALC,INVALC,0x4675,INVALC,INVALC,0x4C2C, INVALC,0x506D,INVALC,INVALC,INVALC,0x5F48,INVALC,0x2165, 0x2166,0x224E,INVALC,0x2628,0x2629,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3129,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2250, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x236F, INVALC,INVALC,INVALC,INVALC,INVALC,0x236C,INVALC,0x236D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x236E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2639,INVALC,INVALC, 0x262E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x262A,INVALC,INVALC,0x2637,INVALC,INVALC, INVALC,INVALC,INVALC,0x262F,INVALC,0x2636,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2635,INVALC,0x2633,0x2634,0x2638,0x2631,INVALC, INVALC,INVALC,INVALC,0x647B,INVALC,0x2632,0x2931,0x292A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2926,INVALC,INVALC,INVALC,INVALC,0x2928, INVALC,INVALC,0x2925,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2934,0x2932,INVALC,INVALC,INVALC,0x2933,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x292E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2930,0x2937,0x2935, 0x2936,0x292F,INVALC,INVALC,0x2929,INVALC,INVALC,INVALC, INVALC,INVALC,0x2C6D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 100, Array index 0x1600 */ INVALC,INVALC,INVALC,INVALC,0x2C6F,0x2C70,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2C6C, INVALC,0x3132,INVALC,0x3133,INVALC,INVALC,INVALC,0x2C6B, INVALC,0x2C6E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x312C,INVALC, 0x312F,0x3135,INVALC,INVALC,INVALC,0x3138,INVALC,0x3137, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x313C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x312E,0x3139,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3130,0x313B,0x3136,INVALC,INVALC, 0x647C,INVALC,INVALC,INVALC,0x647D,INVALC,0x3631,INVALC, INVALC,INVALC,0x3627,INVALC,0x3629,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3626,0x3632,INVALC,INVALC,INVALC, INVALC,0x3622,INVALC,INVALC,INVALC,INVALC,0x357C,0x362B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3623,INVALC, INVALC,INVALC,INVALC,0x357D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3624,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x362D,INVALC,INVALC,INVALC,0x647E,INVALC, INVALC,INVALC,0x362E,INVALC,INVALC,INVALC,INVALC,0x3B71, INVALC,0x3B70,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3B73,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3B67,INVALC, INVALC,INVALC,0x3B66,INVALC,INVALC,INVALC,0x3B68,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3B72, 0x3B6D,INVALC,0x6339,INVALC,INVALC,INVALC,0x3B6F,INVALC, /* Block 101, Array index 0x1700 */ INVALC,INVALC,INVALC,0x6521,INVALC,INVALC,INVALC,0x4149, 0x4132,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x413A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4138,INVALC,INVALC,INVALC,0x413E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x413D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4136,0x4133,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4134,INVALC,0x4148,0x4725,0x4142,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4144,0x4145, INVALC,0x6676,INVALC,INVALC,0x4678,INVALC,INVALC,0x4728, INVALC,INVALC,INVALC,INVALC,INVALC,0x467E,0x4724,0x467A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4721,INVALC,0x472A,INVALC,INVALC,INVALC, INVALC,INVALC,0x4723,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4722,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x467B,INVALC,0x4729,INVALC, 0x4C2D,0x4726,INVALC,0x4C35,INVALC,INVALC,0x4C38,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4C30,0x4C2F,INVALC, INVALC,0x4C3B,INVALC,INVALC,0x4C31,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4C2E,INVALC,INVALC,INVALC,INVALC, INVALC,0x4C3E,INVALC,INVALC,INVALC,INVALC,INVALC,0x4C3F, 0x4C34,INVALC,0x4C3D,INVALC,INVALC,INVALC,INVALC,0x4C3A, INVALC,INVALC,INVALC,INVALC,0x4C39,INVALC,0x6522,INVALC, INVALC,0x4C37,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5070,INVALC,INVALC,INVALC,INVALC,INVALC,0x4C32,INVALC, 0x5077,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5076,INVALC,0x506F,INVALC,0x5079,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5075,INVALC,INVALC,0x5464, INVALC,0x5467,INVALC,INVALC,INVALC,0x576B,INVALC,0x576D, INVALC,INVALC,0x576C,INVALC,INVALC,INVALC,0x5469,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x576A,INVALC, INVALC,0x5770,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 102, Array index 0x1800 */ INVALC,INVALC,INVALC,INVALC,INVALC,0x576E,INVALC,INVALC, 0x5A3B,INVALC,0x5A3C,0x5A3A,INVALC,INVALC,INVALC,INVALC, INVALC,0x5E31,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6523,INVALC,INVALC,INVALC,0x5F4A,0x5F4B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5F49, 0x6032,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2C72,INVALC,INVALC,0x2167,0x2168,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2C74,INVALC,0x2C76,INVALC,0x2C73,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x313D,INVALC,0x3637,0x3636,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3634,INVALC,INVALC,INVALC,INVALC,0x3B74, 0x3B75,0x3B76,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x414B,INVALC,0x414E,0x6346,INVALC, 0x414D,0x4730,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5C41,INVALC,INVALC, 0x2558,0x2939,INVALC,0x3140,INVALC,0x3638,0x3639,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3142,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x293B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x363A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x546B,INVALC,INVALC, INVALC,INVALC,0x293C,INVALC,INVALC,INVALC,0x2C77,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x363C, INVALC,0x363F,0x363D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3B79,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5A3F,INVALC,INVALC,INVALC, 0x2169,INVALC,INVALC,0x3641,0x4150,INVALC,INVALC,0x2251, INVALC,INVALC,0x2373,0x2372,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x263D,INVALC, INVALC,0x625E,INVALC,INVALC,INVALC,INVALC,0x2943,0x293E, /* Block 103, Array index 0x1900 */ INVALC,0x2942,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2940, 0x2941,INVALC,0x2C7E,0x2C7A,INVALC,INVALC,0x2D23,INVALC, INVALC,INVALC,INVALC,0x2C7C,INVALC,INVALC,INVALC,INVALC, INVALC,0x2C79,INVALC,INVALC,0x2C7D,INVALC,INVALC,INVALC, 0x2D21,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2D24, 0x2D25,INVALC,INVALC,0x2D22,0x2C37,INVALC,INVALC,INVALC, 0x3146,INVALC,INVALC,INVALC,0x314C,INVALC,0x3144,INVALC, 0x3149,INVALC,INVALC,0x3148,INVALC,0x314D,0x3145,INVALC, 0x3143,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3642, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x314B,INVALC,INVALC,0x3644,INVALC,INVALC,INVALC,0x3645, INVALC,0x3C26,INVALC,0x3B7D,INVALC,0x3C25,INVALC,INVALC, INVALC,INVALC,INVALC,0x3C23,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3B7C,INVALC,0x3B7E, INVALC,0x3C24,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x415B,0x4156, INVALC,INVALC,0x4159,0x4151,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4734,INVALC,0x4735,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4739,0x4733,0x4737,INVALC, INVALC,INVALC,INVALC,INVALC,0x4C44,0x4C46,INVALC,INVALC, INVALC,INVALC,INVALC,0x4C41,INVALC,INVALC,0x4C40,INVALC, INVALC,INVALC,INVALC,INVALC,0x4C43,INVALC,INVALC,0x507D, INVALC,0x5123,INVALC,0x507A,INVALC,0x507E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5122,0x5471,INVALC, 0x546F,0x5470,INVALC,INVALC,0x546C,0x546D,INVALC,0x5472, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5A43, INVALC,0x5A42,0x6526,INVALC,INVALC,0x5C42,INVALC,0x5C43, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x613F, INVALC,INVALC,INVALC,INVALC,INVALC,0x2641,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 104, Array index 0x1A00 */ INVALC,INVALC,0x6527,INVALC,INVALC,INVALC,0x5124,INVALC, INVALC,INVALC,INVALC,INVALC,0x2945,INVALC,0x2D27,INVALC, INVALC,0x6632,INVALC,INVALC,INVALC,INVALC,0x3648,INVALC, INVALC,0x3647,0x3646,INVALC,INVALC,INVALC,0x3C29,INVALC, INVALC,INVALC,INVALC,INVALC,0x5126,0x6633,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2252, INVALC,INVALC,0x2377,INVALC,INVALC,INVALC,0x2378,0x2375, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2648,INVALC,INVALC,INVALC, INVALC,INVALC,0x2649,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2645,INVALC,0x2644,INVALC,INVALC,INVALC, 0x2647,INVALC,INVALC,0x2642,INVALC,INVALC,INVALC,INVALC, INVALC,0x264A,INVALC,INVALC,INVALC,0x6257,INVALC,INVALC, INVALC,INVALC,INVALC,0x2947,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2952,INVALC,0x2949,INVALC,INVALC,INVALC,INVALC,INVALC, 0x625F,INVALC,0x294A,INVALC,INVALC,INVALC,INVALC,0x294F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2948,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x294E,0x294C,0x6528,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6529,INVALC,INVALC,INVALC, INVALC,0x2D36,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2D2E,INVALC,INVALC,0x2D30, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2D2D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2D31,0x2D2B,0x2D3A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2D2A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2951,INVALC,0x2D34,INVALC,INVALC,0x2D32,INVALC, /* Block 105, Array index 0x1B00 */ 0x2D39,0x2D37,INVALC,INVALC,INVALC,0x2D38,0x652B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x652A,INVALC,INVALC,INVALC,INVALC,0x315D,INVALC,INVALC, INVALC,0x3157,INVALC,0x3153,INVALC,INVALC,0x315B,INVALC, INVALC,INVALC,0x315E,0x3164,0x3150,INVALC,INVALC,0x315F, INVALC,INVALC,INVALC,INVALC,0x3156,INVALC,INVALC,INVALC, 0x3163,INVALC,INVALC,INVALC,INVALC,INVALC,0x3154,0x314F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x315A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3159, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2D2F,INVALC,INVALC,0x3162,0x3158,INVALC, 0x3161,0x3160,0x652D,INVALC,INVALC,INVALC,0x652C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3655,INVALC,INVALC,INVALC, 0x3660,INVALC,INVALC,0x364E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x365B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3657,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3651,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x365A,INVALC,INVALC, 0x364D,0x365C,0x3650,INVALC,INVALC,INVALC,0x364B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3654,0x3478,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x364C,0x3652, 0x365E,0x365F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3656,INVALC,0x3C45,INVALC,0x3C41,INVALC,INVALC, INVALC,INVALC,0x3C38,INVALC,INVALC,INVALC,INVALC,0x3C3E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3653,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3C3D,INVALC,INVALC,0x3C32,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3C2A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3C31,0x3C42, /* Block 106, Array index 0x1C00 */ 0x3C39,0x3C3B,0x3C34,0x3C2F,INVALC,INVALC,INVALC,INVALC, INVALC,0x3C37,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3C3C,INVALC,INVALC,INVALC,0x3C44,INVALC,0x3C33,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x652F,INVALC,INVALC,0x652E,INVALC,0x3C40,INVALC, INVALC,0x4165,INVALC,INVALC,INVALC,INVALC,0x4177,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4168,INVALC, INVALC,INVALC,INVALC,0x416B,INVALC,INVALC,0x415D,0x4175, INVALC,INVALC,INVALC,INVALC,INVALC,0x4173,INVALC,INVALC, 0x4174,INVALC,INVALC,INVALC,INVALC,0x416F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4179,INVALC,INVALC,0x4178,INVALC,INVALC,0x4176, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x416D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x416A,0x417B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4172,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x473A, INVALC,INVALC,0x473D,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4751,INVALC,INVALC,INVALC,INVALC,0x474E,INVALC,0x4746, INVALC,INVALC,0x4747,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x473E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6352,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4743,INVALC,INVALC,INVALC,INVALC,0x473B,INVALC,INVALC, 0x473C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4745,0x4748,INVALC,INVALC,0x474D,0x4744,INVALC, 0x4C54,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x474C,INVALC,0x4742,INVALC,INVALC,INVALC,INVALC, INVALC,0x4C64,0x4C60,INVALC,INVALC,INVALC,INVALC,0x4C4F, 0x4C51,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4C5F,0x4C57,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 107, Array index 0x1D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4C4D,0x4C50,INVALC,0x4C47,INVALC, 0x4C5B,INVALC,0x4C56,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4C4A,INVALC,0x4C49,INVALC,INVALC,INVALC, INVALC,INVALC,0x4C52,INVALC,0x4C62,INVALC,INVALC,INVALC, INVALC,0x4C5E,0x4C59,INVALC,0x4C61,0x6530,INVALC,INVALC, INVALC,INVALC,INVALC,0x512C,INVALC,INVALC,0x513C,0x5138, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5128,0x512B,INVALC,0x5140,INVALC,INVALC, INVALC,INVALC,0x513B,INVALC,0x5131,INVALC,INVALC,INVALC, INVALC,INVALC,0x5129,0x513E,INVALC,INVALC,INVALC,0x512F, INVALC,INVALC,INVALC,INVALC,0x5144,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5127,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x512E,INVALC,0x5132,INVALC, 0x5141,0x513A,INVALC,INVALC,INVALC,INVALC,INVALC,0x6531, INVALC,INVALC,0x6532,INVALC,INVALC,0x5475,INVALC,INVALC, INVALC,INVALC,0x547B,INVALC,INVALC,INVALC,0x5521,INVALC, 0x547C,INVALC,0x5476,INVALC,INVALC,INVALC,INVALC,0x5527, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5523,0x547A,INVALC,INVALC,INVALC,0x5524,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5478, INVALC,INVALC,0x5529,0x5774,INVALC,INVALC,INVALC,INVALC, 0x5777,0x5821,0x5776,INVALC,INVALC,0x5778,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x577E,INVALC,0x5779,0x5823, 0x577D,0x577A,INVALC,INVALC,0x5822,INVALC,INVALC,INVALC, 0x577B,INVALC,0x6533,INVALC,INVALC,INVALC,0x5A44,INVALC, INVALC,INVALC,0x5A4F,INVALC,0x5A45,0x5A4E,INVALC,0x5A47, 0x5A4D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5A48,0x5A46,INVALC,INVALC,0x6534,INVALC, INVALC,0x5C49,INVALC,INVALC,INVALC,0x5775,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5C47,0x6535,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5E35,0x5E34,0x5E33, /* Block 108, Array index 0x1E00 */ INVALC,0x5E37,INVALC,INVALC,INVALC,INVALC,0x5F4F,0x5F4E, INVALC,INVALC,INVALC,INVALC,INVALC,0x6536,0x6537,INVALC, INVALC,INVALC,INVALC,INVALC,0x6074,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6140,0x6165,0x6141,INVALC,INVALC, INVALC,INVALC,0x2379,INVALC,INVALC,INVALC,0x2953,0x2954, INVALC,0x6269,0x2D3C,0x3166,INVALC,INVALC,0x3165,INVALC, 0x3167,INVALC,INVALC,INVALC,INVALC,0x3662,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x417D,INVALC,INVALC,INVALC,0x417C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4C66, INVALC,INVALC,0x4C65,0x4C67,INVALC,INVALC,INVALC,0x5146, 0x5145,INVALC,INVALC,INVALC,INVALC,0x552B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2955,0x2956,INVALC,0x2D3D,0x3168,INVALC,0x3C49,0x3C47, INVALC,0x417E,INVALC,0x4221,0x4753,INVALC,INVALC,INVALC, INVALC,INVALC,0x2253,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2958,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x316A,INVALC,INVALC,INVALC,INVALC, 0x3664,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4222,0x6354,INVALC,INVALC, INVALC,0x4754,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2959,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3665,INVALC,INVALC,0x3C4B,INVALC, INVALC,0x4226,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x237A,INVALC, INVALC,0x295A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6538,0x6539,INVALC,INVALC, INVALC,0x2D42,INVALC,INVALC,INVALC,0x316E,INVALC,INVALC, INVALC,0x316C,0x316D,INVALC,INVALC,0x3666,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3C4D,INVALC,0x653A,INVALC, INVALC,INVALC,0x4228,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 109, Array index 0x1F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x552D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x295D,INVALC,0x653B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3C4E,INVALC,INVALC, INVALC,0x4229,0x422A,INVALC,INVALC,INVALC,INVALC,0x2257, INVALC,0x2254,INVALC,INVALC,0x2421,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2258,0x2259,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x237D,INVALC,0x2425,INVALC,INVALC,0x2655,INVALC, 0x237C,INVALC,0x2423,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x653C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2964,INVALC,0x2650,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2653,INVALC,0x237E, INVALC,0x2657,INVALC,INVALC,0x2651,INVALC,INVALC,0x264C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x264D,INVALC,INVALC,INVALC,INVALC,INVALC,0x2963, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x264E,0x2652, 0x265C,0x2659,0x2656,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x265B,INVALC,INVALC,INVALC,INVALC,0x2D4E, INVALC,INVALC,0x296B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x296D,INVALC,INVALC,0x6261,INVALC,INVALC,0x296C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x296A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2965, INVALC,INVALC,INVALC,INVALC,0x2969,INVALC,0x6260,INVALC, INVALC,INVALC,0x2967,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2D4F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2D46, /* Block 110, Array index 0x2000 */ INVALC,INVALC,0x2D50,INVALC,INVALC,0x2D48,0x2D4A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2D49,0x2D47,0x2D4D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x317A,INVALC,INVALC,INVALC, INVALC,0x2D4B,INVALC,0x2D45,0x2D57,INVALC,0x2D53,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2D55,0x2D51,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3177,0x3173, INVALC,INVALC,INVALC,0x3179,0x3226,0x3176,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x316F,INVALC,INVALC,INVALC,INVALC, INVALC,0x3222,0x3225,0x3172,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3221,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3178, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3227,INVALC, INVALC,0x317D,0x317B,0x317C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x653D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x366F,INVALC,INVALC, 0x367A,0x3721,INVALC,INVALC,INVALC,INVALC,0x3C50,INVALC, INVALC,0x3672,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x366A,INVALC,0x366B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x366C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3674, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x367C,INVALC,INVALC,INVALC,INVALC,INVALC,0x3C5D,0x3728, /* Block 111, Array index 0x2100 */ INVALC,0x3726,0x3723,INVALC,0x3670,INVALC,0x3677,0x3724, 0x3676,0x3725,0x3679,INVALC,0x367D,INVALC,INVALC,0x653E, INVALC,INVALC,0x3729,INVALC,INVALC,INVALC,INVALC,0x3727, 0x3C54,INVALC,INVALC,INVALC,INVALC,INVALC,0x3C52,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3C6B,0x3C6D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3C5A,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3C56,INVALC,INVALC,INVALC,0x3C6E,INVALC,INVALC,0x3C58, 0x3C69,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3C66, INVALC,0x3C64,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3C5B,INVALC,0x423A,0x3C60,INVALC,INVALC, 0x3C5C,INVALC,INVALC,INVALC,INVALC,0x3C51,0x3C6C,INVALC, INVALC,INVALC,INVALC,0x3C62,0x6542,INVALC,0x3C63,INVALC, 0x3C68,INVALC,INVALC,INVALC,0x6540,INVALC,0x633D,INVALC, INVALC,INVALC,0x653F,0x6541,INVALC,INVALC,INVALC,INVALC, INVALC,0x4230,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4233,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x422E,0x4236,INVALC,INVALC,0x4240,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4239,INVALC,INVALC, 0x422D,INVALC,INVALC,0x4231,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4244,0x423E,0x4247,INVALC,0x423D,INVALC,INVALC, INVALC,INVALC,INVALC,0x4245,INVALC,INVALC,0x423F,INVALC, 0x423B,0x4246,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4756,INVALC,INVALC,0x4757,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4765,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 112, Array index 0x2200 */ INVALC,INVALC,INVALC,INVALC,0x4763,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4C78,0x475B,INVALC,INVALC,INVALC, 0x4C6A,0x4764,INVALC,INVALC,INVALC,INVALC,INVALC,0x475F, INVALC,INVALC,INVALC,0x475A,INVALC,0x475C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x475E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x475D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4C74,INVALC,INVALC, INVALC,INVALC,0x4762,INVALC,0x4761,INVALC,INVALC,INVALC, 0x6544,0x6545,0x4766,INVALC,0x6543,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4C7D,INVALC,INVALC,0x4C73,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4C6B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4C75,INVALC,INVALC,0x4C7E,0x4C6C,INVALC,INVALC, INVALC,0x4C79,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4C7A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6363,INVALC,INVALC,INVALC,INVALC,0x4C7B, INVALC,0x4C77,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6547,INVALC,INVALC,INVALC,0x6546,INVALC,0x5156, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5154,INVALC,0x5158, INVALC,INVALC,INVALC,0x514D,INVALC,INVALC,0x5150,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4C71,INVALC,INVALC,0x5155,INVALC,INVALC,0x5530,0x552F, INVALC,0x5535,0x5536,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5531,INVALC,INVALC, INVALC,INVALC,0x5537,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5A55,INVALC,0x5159,0x5539,INVALC, 0x6548,INVALC,INVALC,INVALC,INVALC,0x5828,INVALC,INVALC, /* Block 113, Array index 0x2300 */ INVALC,INVALC,0x582A,0x5827,INVALC,INVALC,INVALC,INVALC, 0x5826,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5829,INVALC,INVALC,0x582B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5A52,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5A54,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5A53,0x654A,0x6549,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C51,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5C4F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5E3C, INVALC,INVALC,INVALC,0x5E3A,INVALC,0x5E3B,INVALC,INVALC, INVALC,INVALC,INVALC,0x6036,0x5F52,INVALC,INVALC,INVALC, INVALC,0x6037,INVALC,INVALC,0x654B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6179, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2428,0x2426, INVALC,INVALC,0x2427,0x242B,INVALC,0x2662,INVALC,0x265F, INVALC,0x265E,INVALC,0x2663,INVALC,INVALC,0x2660,INVALC, INVALC,0x2977,INVALC,INVALC,INVALC,INVALC,INVALC,0x2974, 0x2970,0x2975,INVALC,0x296F,0x2979,0x2976,INVALC,0x2972, 0x2971,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2D5E,INVALC,0x2D5C,0x2D5A,INVALC,0x2D58,0x626A,0x2D65, 0x2D62,INVALC,0x2D5F,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2D64,INVALC,INVALC,INVALC,0x2D63,INVALC, INVALC,0x2D68,INVALC,0x2D5D,INVALC,INVALC,INVALC,0x654D, INVALC,INVALC,INVALC,INVALC,0x3228,INVALC,INVALC,INVALC, INVALC,0x6279,INVALC,INVALC,0x322A,INVALC,INVALC,INVALC, 0x322B,INVALC,INVALC,INVALC,INVALC,0x3231,0x322F,INVALC, INVALC,INVALC,INVALC,0x3229,INVALC,INVALC,INVALC,0x322D, INVALC,INVALC,INVALC,0x322C,INVALC,0x654F,INVALC,INVALC, INVALC,INVALC,0x654E,INVALC,INVALC,INVALC,0x3230,INVALC, INVALC,0x3730,0x3732,INVALC,INVALC,0x372F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3735,INVALC, /* Block 114, Array index 0x2400 */ INVALC,0x372E,INVALC,0x372C,INVALC,INVALC,INVALC,0x372D, 0x3731,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3733, INVALC,0x6550,0x6551,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3C74,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3C7D,INVALC,INVALC,0x3C7C, INVALC,INVALC,0x3C6F,0x3C7A,0x3C72,0x3D21,INVALC,INVALC, INVALC,INVALC,INVALC,0x3C7B,0x3C79,0x3C71,INVALC,0x3C73, 0x3C77,0x6553,INVALC,0x6554,INVALC,0x6555,INVALC,0x6552, INVALC,INVALC,INVALC,INVALC,INVALC,0x4257,INVALC,INVALC, 0x424C,INVALC,0x424E,INVALC,INVALC,INVALC,INVALC,0x4251, INVALC,0x4258,INVALC,INVALC,INVALC,INVALC,INVALC,0x4252, INVALC,INVALC,INVALC,0x483C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x424F,INVALC,0x4259,INVALC,0x4249, INVALC,0x6559,INVALC,INVALC,0x4253,0x6557,0x6558,0x6556, INVALC,INVALC,INVALC,INVALC,0x476F,INVALC,0x476E,0x476C, INVALC,INVALC,INVALC,0x4770,INVALC,INVALC,INVALC,INVALC, 0x4772,INVALC,INVALC,0x476A,0x476D,0x476B,0x4768,INVALC, INVALC,0x4767,INVALC,0x655B,INVALC,INVALC,0x655A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4D2A,0x4D24,INVALC,INVALC,0x4D29,INVALC, INVALC,INVALC,INVALC,0x4D28,INVALC,0x4D25,0x4D22,INVALC, INVALC,INVALC,INVALC,INVALC,0x655C,INVALC,0x5162,0x515A, INVALC,INVALC,0x5160,0x515C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5163,0x6374,INVALC,INVALC, INVALC,0x515E,INVALC,0x5166,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x655D,0x655E,INVALC, INVALC,INVALC,INVALC,0x553C,INVALC,INVALC,INVALC,INVALC, INVALC,0x553E,0x5543,0x5540,INVALC,INVALC,INVALC,0x5541, INVALC,INVALC,INVALC,0x5542,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x582D,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 115, Array index 0x2500 */ 0x582E,INVALC,INVALC,INVALC,0x5A56,INVALC,INVALC,INVALC, 0x5A57,INVALC,INVALC,0x5C59,INVALC,INVALC,0x655F,0x5C56, INVALC,0x5C58,0x5C55,INVALC,INVALC,0x5A58,0x5C53,0x5C57, 0x6561,INVALC,INVALC,INVALC,0x5F53,INVALC,INVALC,INVALC, 0x5F54,0x6039,INVALC,INVALC,0x6143,0x6142,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2D69,INVALC, INVALC,INVALC,0x3D22,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2D6B,INVALC,INVALC,INVALC, 0x297C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x425D,INVALC, 0x425C,0x425B,INVALC,INVALC,INVALC,0x4D2E,INVALC,0x4D2D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2664,0x2A21,0x2A22,INVALC, 0x2A23,INVALC,INVALC,INVALC,INVALC,0x2D6D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3236,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3D24,0x3D23,INVALC,INVALC,INVALC,0x3D25, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4775,INVALC,INVALC,INVALC, INVALC,0x4D2F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x617B,INVALC,INVALC,INVALC,INVALC, INVALC,0x242C,0x242D,INVALC,INVALC,INVALC,0x266B,INVALC, INVALC,0x2669,INVALC,0x2666,0x2667,INVALC,0x266A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2668, INVALC,INVALC,INVALC,INVALC,INVALC,0x2A26,INVALC,0x2A2A, INVALC,INVALC,INVALC,0x2A27,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2A28,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2D75,INVALC,INVALC,0x2D74,INVALC,0x2D70, INVALC,INVALC,INVALC,INVALC,0x2D73,0x2D71,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3238,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 116, Array index 0x2600 */ INVALC,INVALC,0x3239,INVALC,INVALC,INVALC,0x3D26,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x373B,INVALC, 0x373A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3739,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3D27,INVALC,INVALC,INVALC, 0x3D2E,INVALC,0x3D29,0x3D2B,0x3D2A,INVALC,0x4261,0x3D2D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3D28,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x425F,INVALC,INVALC,INVALC,INVALC,0x4262,0x6562, 0x6563,INVALC,INVALC,0x4D30,INVALC,INVALC,INVALC,0x4779, INVALC,INVALC,INVALC,0x4778,0x477A,0x4777,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5549,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x225A,0x216B,INVALC,0x242F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x266E,INVALC,INVALC,INVALC,0x2A33,INVALC,0x2A2D,INVALC, INVALC,INVALC,INVALC,0x2A2C,INVALC,INVALC,INVALC,0x2A2B, INVALC,INVALC,0x2A32,INVALC,INVALC,INVALC,INVALC,0x2A2F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2D78,INVALC,INVALC, INVALC,0x2D7B,INVALC,INVALC,0x2D77,INVALC,INVALC,INVALC, INVALC,0x2D7A,INVALC,INVALC,INVALC,INVALC,0x2D7E,0x2D79, 0x2D7C,INVALC,INVALC,INVALC,INVALC,0x323E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3240, INVALC,0x3247,0x323C,INVALC,0x3246,INVALC,0x3241,INVALC, INVALC,INVALC,INVALC,INVALC,0x323D,INVALC,INVALC,0x6564, INVALC,INVALC,INVALC,0x373D,INVALC,INVALC,INVALC,0x3D38, INVALC,0x323F,INVALC,0x3740,INVALC,INVALC,INVALC,INVALC, /* Block 117, Array index 0x2700 */ INVALC,INVALC,0x373C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6565,INVALC,0x3D36,0x3D3A,INVALC,0x3D2F, 0x3D3B,0x3D32,INVALC,INVALC,0x3D39,INVALC,0x426D,0x3D35, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4264, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3D33,0x3D3C,INVALC,0x6566,0x3D37,0x4268,0x4275,INVALC, INVALC,INVALC,INVALC,0x426F,INVALC,0x4274,INVALC,0x426E, 0x4266,0x4271,INVALC,INVALC,0x4273,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4267,INVALC,INVALC,0x426B,INVALC, 0x4270,INVALC,INVALC,INVALC,INVALC,0x426A,INVALC,INVALC, 0x4825,0x477E,INVALC,INVALC,INVALC,0x477C,0x477D,INVALC, 0x4822,INVALC,INVALC,0x4821,0x477B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4827,INVALC,0x4823,INVALC, INVALC,INVALC,0x4D31,0x4D3B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4D39,INVALC,0x4D36,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4D35,0x6568,INVALC,INVALC, INVALC,INVALC,INVALC,0x4D3A,INVALC,INVALC,0x516A,INVALC, INVALC,0x6375,INVALC,0x5167,INVALC,0x516C,INVALC,INVALC, INVALC,INVALC,0x516B,INVALC,0x6567,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x554F,INVALC,0x554B,INVALC, INVALC,INVALC,INVALC,0x554D,0x6569,INVALC,INVALC,INVALC, INVALC,0x582F,INVALC,INVALC,0x5830,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5A5A,INVALC,INVALC,0x5A5C, 0x5A5D,0x5A5B,INVALC,INVALC,0x5C5E,0x5C5C,0x5C5F,INVALC, 0x5C5D,0x5C60,INVALC,0x5E3D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2E22,INVALC,0x2E21,INVALC,0x2E24, INVALC,INVALC,INVALC,0x3248,INVALC,INVALC,INVALC,INVALC, INVALC,0x3D3D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 118, Array index 0x2800 */ INVALC,0x4277,INVALC,INVALC,INVALC,INVALC,0x4828,INVALC, INVALC,0x4D3D,0x516D,INVALC,INVALC,INVALC,0x516E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3744,INVALC,INVALC,0x4278,INVALC, INVALC,INVALC,INVALC,0x3745,0x3D3E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2A37,INVALC,INVALC,INVALC,INVALC, INVALC,0x2A38,0x2A35,INVALC,0x2A36,INVALC,0x2E27,INVALC, INVALC,0x2E25,0x2E28,INVALC,INVALC,0x2E2A,INVALC,INVALC, 0x2E26,INVALC,INVALC,INVALC,INVALC,0x324E,0x324D,0x3250, 0x324F,INVALC,INVALC,INVALC,INVALC,INVALC,0x3251,INVALC, INVALC,0x3746,INVALC,INVALC,INVALC,INVALC,INVALC,0x3749, 0x3747,INVALC,INVALC,INVALC,INVALC,0x3D43,0x3D42,INVALC, INVALC,0x3D44,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x427B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5170,INVALC,0x5552,INVALC,INVALC,INVALC,INVALC, INVALC,0x5C62,INVALC,INVALC,INVALC,INVALC,0x3D45,INVALC, INVALC,INVALC,0x225B,0x2673,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2A3A,INVALC,INVALC,0x2A3B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2E2B,INVALC, 0x2E2F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3257,INVALC,INVALC,0x3255,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3252,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x374A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3D47,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x427C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 119, Array index 0x2900 */ INVALC,INVALC,0x427D,INVALC,INVALC,INVALC,INVALC,0x482B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4829,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5171,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5173,0x5172, INVALC,INVALC,INVALC,0x5174,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5555,0x5553,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5554,0x5834, INVALC,0x5833,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5832,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5E3F, 0x5E3E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x603B, INVALC,INVALC,INVALC,0x656A,INVALC,INVALC,0x225C,0x656B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2674,INVALC,INVALC,0x2676,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x374D,INVALC,INVALC,INVALC,0x3D4C,INVALC,INVALC,0x427E, 0x4321,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5176,INVALC,0x5556,INVALC,0x5557,INVALC,INVALC, INVALC,0x5A5E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3D4D,INVALC,INVALC,INVALC,0x4830, INVALC,0x482E,INVALC,INVALC,0x656C,INVALC,INVALC,INVALC, 0x2677,0x2678,INVALC,INVALC,INVALC,INVALC,INVALC,0x2E32, INVALC,INVALC,INVALC,0x325A,0x325B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3750,0x3752,0x3751, INVALC,0x3D4F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4831,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5835,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2E35,INVALC,0x2E33, /* Block 120, Array index 0x2A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x626C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3264,0x325F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x325E,INVALC, 0x3268,INVALC,INVALC,INVALC,INVALC,INVALC,0x3759,INVALC, INVALC,0x3267,INVALC,INVALC,0x3265,INVALC,0x3755,INVALC, INVALC,INVALC,0x325C,0x3263,INVALC,INVALC,INVALC,INVALC, 0x3753,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3262, 0x3757,INVALC,0x3D56,0x3D53,INVALC,INVALC,INVALC,INVALC, 0x3D51,0x3D52,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4327,INVALC,INVALC,INVALC,INVALC, 0x4328,INVALC,INVALC,INVALC,INVALC,0x4325,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4326,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4839,INVALC,INVALC,0x4833,0x4836,0x4835,0x4834, 0x4838,INVALC,0x483B,0x483D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4D44,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4D46,INVALC,INVALC,INVALC,INVALC,INVALC,0x517B,INVALC, 0x5179,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5559,INVALC,0x5558,INVALC, INVALC,0x555B,INVALC,INVALC,INVALC,INVALC,INVALC,0x555C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5836,0x5838,INVALC,INVALC,INVALC,INVALC,0x583B,INVALC, 0x583A,0x5839,INVALC,INVALC,INVALC,0x5A60,0x5A5F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5E42,INVALC,INVALC,INVALC,INVALC,0x6432,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3269,INVALC,0x3D57, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2E36,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x267B,0x267C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 121, Array index 0x2B00 */ INVALC,INVALC,INVALC,INVALC,0x2E39,INVALC,INVALC,0x2E3B, 0x2E3E,INVALC,0x2E37,0x2E3A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2E3D,INVALC,INVALC, INVALC,0x656D,INVALC,0x656E,INVALC,INVALC,0x667C,INVALC, INVALC,INVALC,INVALC,INVALC,0x326C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x326D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x656F,INVALC,INVALC, INVALC,INVALC,0x3762,INVALC,INVALC,INVALC,0x3763,0x375D, INVALC,INVALC,INVALC,0x375F,INVALC,INVALC,INVALC,0x3761, INVALC,0x3760,INVALC,0x6570,0x6571,INVALC,INVALC,INVALC, 0x6572,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3D5C, INVALC,INVALC,INVALC,0x3D59,INVALC,INVALC,0x3D5D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3D5A,INVALC, 0x4331,INVALC,0x432D,INVALC,INVALC,0x432E,INVALC,INVALC, INVALC,0x4337,0x4329,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4335,INVALC,0x432B,0x4330,INVALC,0x4334,INVALC,INVALC, 0x432A,INVALC,0x4336,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x483E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x483F,0x4845, INVALC,0x4844,INVALC,INVALC,INVALC,INVALC,INVALC,0x6573, 0x4840,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4D4A,INVALC,0x4D4D,INVALC,INVALC,INVALC,0x4D48,0x4D4C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4D4B,0x4D49,INVALC,INVALC,0x5221,INVALC, 0x6574,INVALC,INVALC,INVALC,0x5224,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5222,INVALC,INVALC,0x6575,INVALC, 0x5560,0x5562,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5561,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 122, Array index 0x2C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5843,0x583E, 0x5840,INVALC,0x583F,0x583C,INVALC,0x5842,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5844,INVALC,INVALC, 0x5A61,INVALC,0x5A62,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5A63,INVALC,0x6576,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5E45,INVALC, 0x5E43,INVALC,0x5E44,INVALC,INVALC,INVALC,INVALC,0x603C, INVALC,INVALC,INVALC,INVALC,0x2433,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6577,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x326F,0x3270,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3272,INVALC,INVALC,INVALC,0x3D5E,INVALC, INVALC,INVALC,INVALC,INVALC,0x3766,INVALC,0x3765,INVALC, INVALC,0x3D5F,INVALC,INVALC,INVALC,0x3D64,0x3D62,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4338,INVALC, 0x433D,INVALC,INVALC,0x4339,0x3D63,INVALC,0x6578,0x4848, INVALC,0x4847,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6579,INVALC,INVALC,INVALC,0x4D50,0x4D51,0x4D4F, INVALC,INVALC,INVALC,0x657A,INVALC,0x5226,INVALC,INVALC, INVALC,0x5227,INVALC,INVALC,INVALC,INVALC,INVALC,0x5845, INVALC,INVALC,INVALC,INVALC,INVALC,0x603D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x657B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2A3E,0x2A3D,INVALC,0x2A3F,0x2A42, INVALC,INVALC,0x2A44,INVALC,0x654C,INVALC,INVALC,INVALC, 0x2E42,INVALC,INVALC,0x2E40,0x2E41,INVALC,INVALC,0x2E43, INVALC,0x3274,0x3273,0x3279,INVALC,INVALC,INVALC,INVALC, INVALC,0x3276,0x327B,INVALC,INVALC,0x3277,INVALC,INVALC, 0x3278,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x327C,0x3769,0x3767,0x376B,INVALC,0x376A,INVALC,INVALC, INVALC,0x376C,INVALC,INVALC,INVALC,INVALC,INVALC,0x3D65, /* Block 123, Array index 0x2D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3D66, INVALC,0x3D69,INVALC,INVALC,INVALC,INVALC,0x3D68,0x4341, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4344,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6524,INVALC,INVALC, INVALC,0x484B,0x484D,INVALC,0x4850,0x484F,INVALC,INVALC, INVALC,INVALC,0x4852,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4D55,INVALC,0x4D56,INVALC,INVALC,INVALC,0x4D5A,INVALC, INVALC,0x4D53,0x4D57,INVALC,INVALC,0x522A,INVALC,INVALC, INVALC,0x5564,INVALC,INVALC,INVALC,INVALC,INVALC,0x522C, INVALC,INVALC,INVALC,0x5229,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5A66,INVALC,0x5A65,INVALC, INVALC,INVALC,0x5A67,INVALC,INVALC,INVALC,INVALC,0x5C64, INVALC,INVALC,0x6076,0x6077,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2E44,0x2E47,INVALC,INVALC, INVALC,INVALC,0x2E49,0x2E48,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3772,INVALC,0x3771,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3770,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4346,INVALC,INVALC,0x4347,INVALC,INVALC,0x657C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4D5B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x522F,INVALC,0x522E,INVALC,INVALC, INVALC,INVALC,0x5568,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5E49,0x5E48,INVALC,INVALC,0x267E,0x2721,INVALC,0x2A47, 0x2E4E,INVALC,0x2E4F,0x2E4D,0x2E4B,0x2E4C,INVALC,INVALC, INVALC,INVALC,0x3323,0x3326,0x3327,0x3324,INVALC,INVALC, INVALC,0x3773,0x3D71,INVALC,INVALC,INVALC,INVALC,0x3D70, INVALC,0x4349,0x434A,INVALC,0x4854,INVALC,INVALC,INVALC, 0x4855,0x5230,0x5569,0x556A,INVALC,0x5849,INVALC,INVALC, 0x5F55,INVALC,INVALC,INVALC,0x2E51,INVALC,0x2E50,INVALC, /* Block 124, Array index 0x2E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x332B,INVALC,0x332A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x332C,INVALC,0x3778,0x3779, INVALC,INVALC,INVALC,INVALC,0x3777,INVALC,INVALC,0x377B, INVALC,0x3776,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x632D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x377A,0x657D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3D7B,0x3D78,0x3D75,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3D79,INVALC,0x3D72,INVALC,0x3D76, INVALC,0x657E,INVALC,INVALC,INVALC,INVALC,0x434F,INVALC, INVALC,INVALC,0x434C,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4355,INVALC,INVALC,0x434D,0x3D77,INVALC,INVALC,0x4354, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4351,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4856,INVALC,0x4858,INVALC,INVALC,0x4860,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x485A,0x485E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4857,0x485D, INVALC,INVALC,INVALC,0x485C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4D5C,INVALC, INVALC,INVALC,0x4D65,0x4D5D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4D60, INVALC,INVALC,0x6367,0x6366,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4D63,INVALC,INVALC, 0x6621,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5233,0x5234,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x556D,INVALC, INVALC,INVALC,0x556B,INVALC,0x556E,INVALC,INVALC,INVALC, /* Block 125, Array index 0x2F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5570,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5571,INVALC,INVALC,INVALC,INVALC,INVALC, 0x556F,INVALC,0x5850,0x584E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5851,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x584C,0x6622, INVALC,INVALC,0x6623,INVALC,0x5A6F,0x5A6E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6624,INVALC,0x5C66,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5C65,INVALC,INVALC,0x6625,INVALC, INVALC,0x5E4C,INVALC,INVALC,INVALC,INVALC,0x5E4B,INVALC, 0x5F58,INVALC,INVALC,INVALC,INVALC,0x5F57,0x603F,INVALC, INVALC,INVALC,0x603E,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6626,INVALC,INVALC,INVALC,INVALC,0x6144,INVALC,INVALC, INVALC,0x623A,INVALC,INVALC,0x2A49,INVALC,0x2A48,0x2E52, INVALC,INVALC,INVALC,0x2E54,0x2E53,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3331,INVALC,INVALC,0x332E,0x3330, INVALC,INVALC,INVALC,0x3332,INVALC,INVALC,0x332D,INVALC, INVALC,INVALC,INVALC,0x377D,INVALC,INVALC,INVALC,INVALC, INVALC,0x377E,0x3821,0x383E,0x3822,INVALC,INVALC,INVALC, 0x3E21,INVALC,INVALC,INVALC,0x3E23,INVALC,0x3E22,0x3D7E, INVALC,0x6627,INVALC,INVALC,INVALC,INVALC,0x4358,INVALC, 0x435C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4862, 0x4861,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4D6F,0x4D71,0x4D6D,INVALC,0x4D70,0x4D73, INVALC,0x4D72,INVALC,INVALC,INVALC,0x4D6E,INVALC,INVALC, INVALC,INVALC,INVALC,0x5237,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5575,0x5574,INVALC,INVALC,INVALC,INVALC, INVALC,0x5239,INVALC,0x5855,INVALC,INVALC,0x5854,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6628,INVALC,INVALC, INVALC,INVALC,INVALC,0x6169,INVALC,0x6040,INVALC,INVALC, INVALC,INVALC,0x2722,INVALC,0x2A4B,INVALC,INVALC,0x2A4A, /* Block 126, Array index 0x3000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3337,0x333B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3829,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3826,INVALC,INVALC,0x3827, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x382E,0x3824,INVALC,INVALC,0x382B,0x3E34,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3E29, INVALC,0x3E26,0x3E2E,INVALC,INVALC,0x3E2F,INVALC,INVALC, 0x3E28,INVALC,INVALC,INVALC,0x3E2C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3E2A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3E24,0x3E35,0x3E33,INVALC, 0x4367,INVALC,INVALC,INVALC,INVALC,INVALC,0x3E2B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4366, INVALC,0x4369,0x4360,0x4362,INVALC,INVALC,INVALC,INVALC, 0x435E,INVALC,INVALC,INVALC,INVALC,0x4364,INVALC,0x4368, 0x436A,0x4363,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4874,INVALC,INVALC,INVALC, 0x486D,INVALC,INVALC,0x486E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4870,INVALC,INVALC,0x4869,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4868,INVALC,INVALC,INVALC,INVALC,0x4871,INVALC,0x4873, 0x6629,0x486B,INVALC,0x662B,INVALC,INVALC,0x4E22,INVALC, INVALC,INVALC,INVALC,INVALC,0x4D7C,INVALC,INVALC,INVALC, INVALC,INVALC,0x4D78,INVALC,0x4E24,0x4E2F,INVALC,INVALC, INVALC,INVALC,INVALC,0x4E2E,INVALC,0x4D77,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4E2B,INVALC,INVALC, 0x4D75,INVALC,INVALC,INVALC,0x4E28,0x4E29,0x4E25,0x4E2C, /* Block 127, Array index 0x3100 */ 0x4E27,0x4D7E,0x4D7D,INVALC,INVALC,INVALC,INVALC,0x662A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x523B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5240,0x523F, INVALC,INVALC,INVALC,INVALC,0x5579,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x557A,INVALC,0x5859, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x585B,INVALC,0x5858,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x662C,INVALC,0x585A,INVALC, INVALC,INVALC,INVALC,INVALC,0x5A72,INVALC,0x5A74,INVALC, INVALC,0x5A75,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C6C, INVALC,INVALC,INVALC,INVALC,0x5E53,0x5E50,INVALC,INVALC, INVALC,0x5E51,INVALC,INVALC,INVALC,INVALC,0x5E52,INVALC, INVALC,INVALC,0x5F5A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6235,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 128, Array index 0x3200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3831,INVALC,INVALC,INVALC,INVALC, 0x662D,0x4877,INVALC,INVALC,INVALC,INVALC,0x557D,0x585C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5F5B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2A4E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x333C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4878, INVALC,0x4879,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4E30,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6422,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2E5D, INVALC,INVALC,INVALC,0x333D,INVALC,INVALC,INVALC,0x333F, INVALC,0x333E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x436E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4E31,INVALC, INVALC,INVALC,INVALC,INVALC,0x585D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3342,INVALC,0x3343,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3E37,INVALC,INVALC,0x3E38,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4372,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4E32, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x557E,INVALC, INVALC,INVALC,0x5861,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 129, Array index 0x3300 */ INVALC,INVALC,0x667B,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3836,INVALC,0x3344,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3837,INVALC,INVALC,0x3839,INVALC,INVALC, INVALC,INVALC,INVALC,0x4922,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5621,INVALC,INVALC,0x5862,0x5C6F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3349,0x3348,INVALC,INVALC,INVALC, 0x3347,0x662F,INVALC,INVALC,0x383D,0x383C,INVALC,INVALC, INVALC,0x383B,INVALC,INVALC,INVALC,INVALC,0x3E3C,INVALC, INVALC,INVALC,INVALC,0x6729,INVALC,INVALC,INVALC,0x4373, INVALC,0x6356,INVALC,0x4923,INVALC,INVALC,INVALC,0x4926, 0x3E3B,0x4925,INVALC,0x6630,INVALC,0x4E34,0x4E36,INVALC, 0x4E37,INVALC,0x4E35,0x4E38,INVALC,INVALC,0x5243,INVALC, INVALC,INVALC,INVALC,INVALC,0x5622,INVALC,INVALC,INVALC, INVALC,INVALC,0x5C70,0x5C71,0x5C72,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2435,0x2436,INVALC, INVALC,0x2724,INVALC,INVALC,0x2726,INVALC,INVALC,0x2725, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2723, INVALC,INVALC,INVALC,INVALC,0x2A56,INVALC,0x2A5B,0x2A58, 0x2A4F,INVALC,INVALC,INVALC,0x2A59,INVALC,INVALC,INVALC, 0x2A52,INVALC,INVALC,0x2A54,INVALC,INVALC,0x2A57,INVALC, INVALC,INVALC,INVALC,0x6631,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2E66,INVALC, INVALC,INVALC,INVALC,0x2E60,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2E61,0x2E5E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2E65, INVALC,INVALC,0x2E64,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x334C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x334A,0x3352, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x334B, /* Block 130, Array index 0x3400 */ INVALC,INVALC,INVALC,0x334E,0x334D,INVALC,INVALC,0x334F, INVALC,0x2E63,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3E44,INVALC,INVALC,0x3849, INVALC,INVALC,0x3847,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x632E,INVALC,0x3841,INVALC,INVALC,INVALC,0x3842,INVALC, INVALC,0x3845,INVALC,INVALC,0x3848,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3E3E,INVALC,INVALC,INVALC,INVALC, 0x3E43,0x3E45,0x3E41,INVALC,INVALC,0x3E3D,INVALC,INVALC, 0x3E40,0x3E42,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x437B,INVALC,0x437E, INVALC,INVALC,INVALC,0x4375,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4376,INVALC,0x4377,0x4423,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x437C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4422,INVALC,INVALC, INVALC,0x4927,INVALC,INVALC,0x492A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4E3B,0x4E3D,0x4E39,INVALC,0x4E3C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4E3A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5249,INVALC,INVALC,0x5247,INVALC,0x5244, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5623,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5624,INVALC,INVALC,INVALC,INVALC,INVALC,0x5865,INVALC, INVALC,INVALC,INVALC,INVALC,0x5A77,INVALC,0x5A78,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3E47, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3E48,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 131, Array index 0x3500 */ INVALC,INVALC,INVALC,0x3E49,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2A5D,INVALC, INVALC,INVALC,INVALC,0x492B,INVALC,INVALC,INVALC,INVALC, 0x524A,0x5868,0x5A79,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2E68,INVALC,INVALC,0x3357, INVALC,0x3358,INVALC,INVALC,INVALC,0x3355,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4426,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6634,INVALC,0x492D,INVALC,0x492E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5A7A,INVALC,INVALC,0x5A7B,INVALC,INVALC, INVALC,INVALC,0x5E55,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5A7C,INVALC, INVALC,INVALC,INVALC,0x2438,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2728,INVALC, INVALC,INVALC,INVALC,INVALC,0x2729,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x272B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2A60,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2A6B,INVALC, INVALC,INVALC,0x2A66,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2A6C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2A5E,INVALC,INVALC,INVALC, INVALC,0x2A68,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2E76,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2E6A,INVALC,INVALC,INVALC,INVALC,0x2E6B,INVALC,INVALC, INVALC,INVALC,0x2E78,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2E72,INVALC,INVALC,INVALC,INVALC,0x2E74,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2E69, 0x2E6E,INVALC,INVALC,INVALC,0x2E6F,0x2E7A,INVALC,INVALC, /* Block 132, Array index 0x3600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2E79,INVALC,INVALC,0x2E77,INVALC, 0x6635,INVALC,0x6637,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3362,INVALC,INVALC,INVALC,INVALC,0x384D,INVALC,0x3359, INVALC,0x335F,INVALC,0x385B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2A5F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3E57,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x335A, 0x3363,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6636,0x2D33,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x384E,0x3851,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3854,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3850,INVALC,INVALC,INVALC,0x384F,0x385D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3855,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x385E,INVALC,INVALC,0x3857, INVALC,0x3852,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3858,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x385F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3E5E,INVALC,INVALC, INVALC,INVALC,0x3E4F,0x3E59,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3E4D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3E5F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3E4B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 133, Array index 0x3700 */ 0x3E52,INVALC,0x3E5C,INVALC,INVALC,0x3E5A,INVALC,INVALC, 0x3E50,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3E58,INVALC,0x3E5D,0x3E56, 0x3E4E,INVALC,INVALC,INVALC,INVALC,INVALC,0x6639,0x3E5B, INVALC,0x6638,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x442D,INVALC,INVALC,INVALC,0x4431,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x443A,INVALC, INVALC,0x4435,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x442C,INVALC,0x443E,INVALC,INVALC,INVALC,INVALC,0x4427, INVALC,INVALC,INVALC,0x4433,INVALC,0x443F,INVALC,INVALC, 0x4440,INVALC,INVALC,INVALC,0x4432,INVALC,INVALC,INVALC, INVALC,INVALC,0x4438,INVALC,0x4430,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x443C,0x442F,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x442E,INVALC,INVALC,INVALC,0x442A, 0x4439,INVALC,INVALC,0x443B,0x4428,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4935,0x4944,INVALC,0x4933,0x4938,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x493C,INVALC,0x4939,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4942,INVALC,INVALC, INVALC,INVALC,INVALC,0x493B,INVALC,0x493A,INVALC,0x4941, INVALC,INVALC,INVALC,INVALC,INVALC,0x4932,INVALC,INVALC, INVALC,INVALC,INVALC,0x4936,INVALC,INVALC,INVALC,INVALC, 0x4436,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x493F,INVALC,INVALC, 0x493E,INVALC,0x4943,INVALC,INVALC,INVALC,0x663B,INVALC, INVALC,0x663C,0x663A,INVALC,0x493D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4E4F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4E44,INVALC,INVALC, 0x4E42,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 134, Array index 0x3800 */ INVALC,0x4E40,INVALC,0x4E4C,0x4E46,0x4E54,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4E4B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4E4D,0x4E4E,0x4E52,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x525A, INVALC,INVALC,0x5252,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5259,0x5250,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5258,INVALC,0x5254,INVALC,INVALC,0x5256, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x524F, 0x5255,INVALC,INVALC,0x663D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x562B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5628,0x5629,INVALC,INVALC,INVALC,0x562D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x562C,0x5630,INVALC,INVALC,INVALC, INVALC,INVALC,0x586C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x586E,INVALC,INVALC,INVALC,INVALC, INVALC,0x586F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x586B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x663E,INVALC,0x5A7E,INVALC, INVALC,INVALC,INVALC,0x5A7D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B22, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C7B,INVALC, INVALC,INVALC,INVALC,INVALC,0x5B25,0x663F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5C76,INVALC,INVALC,INVALC, /* Block 135, Array index 0x3900 */ INVALC,INVALC,0x5C78,0x5C7C,INVALC,INVALC,INVALC,INVALC, 0x5D22,INVALC,INVALC,INVALC,INVALC,0x5C7E,INVALC,0x5D23, 0x5C77,INVALC,INVALC,0x5D21,INVALC,0x5E5B,0x5E5A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5E5C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5E58,INVALC,INVALC,0x5E56,INVALC,INVALC,INVALC,0x5E57, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6640, INVALC,INVALC,INVALC,INVALC,INVALC,0x6043,INVALC,INVALC, INVALC,0x602F,0x6146,INVALC,INVALC,0x6641,INVALC,INVALC, INVALC,0x6147,0x617C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3863, 0x3860,INVALC,0x3861,INVALC,INVALC,0x3E61,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x272D,INVALC,INVALC,INVALC, INVALC,INVALC,0x6642,INVALC,INVALC,0x2F23,0x2E7C,INVALC, 0x2E7E,INVALC,INVALC,INVALC,INVALC,0x2F24,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3369,INVALC,INVALC,INVALC, INVALC,0x336C,INVALC,INVALC,INVALC,INVALC,INVALC,0x336F, INVALC,INVALC,0x336E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x336B,INVALC,INVALC,INVALC,0x336A, 0x3370,INVALC,INVALC,INVALC,INVALC,INVALC,0x336D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3866,INVALC, INVALC,INVALC,0x3864,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3E62,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3E63,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3E68,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4444,0x4445,INVALC,0x4449, /* Block 136, Array index 0x3A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4446,0x4448,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x494F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x494A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4945,INVALC, INVALC,0x494C,INVALC,INVALC,INVALC,0x4949,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x494E,INVALC,0x494B, INVALC,INVALC,0x6643,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4E5D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4E59,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x525B,0x525D,INVALC,INVALC,0x525F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5262,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x525E,INVALC,INVALC,INVALC,0x6645,INVALC,INVALC, INVALC,0x6644,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x563A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5639,INVALC,INVALC,INVALC,INVALC,INVALC,0x563B, INVALC,INVALC,INVALC,INVALC,INVALC,0x5636,0x5634,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5B28,0x5876,INVALC, INVALC,INVALC,0x5878,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5873,INVALC,INVALC,INVALC,INVALC,0x5874,INVALC, 0x5875,INVALC,INVALC,INVALC,INVALC,0x6646,INVALC,INVALC, 0x5B2C,INVALC,INVALC,INVALC,INVALC,0x5B27,INVALC,INVALC, /* Block 137, Array index 0x3B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B29, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5877,0x5B2B, INVALC,INVALC,0x5D25,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5D24,INVALC,0x5E5D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5F5F, INVALC,INVALC,INVALC,INVALC,INVALC,0x6045,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6647,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2F26,INVALC,INVALC,0x386A,0x3E6A,0x3E69, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3371, 0x6648,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x444D,INVALC,INVALC,INVALC,0x4E5F,INVALC,0x5263,0x5264, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2F27,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3374,INVALC, INVALC,INVALC,INVALC,0x3377,INVALC,INVALC,INVALC,INVALC, 0x3372,INVALC,0x3373,0x3375,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3376,INVALC,INVALC,0x6649, INVALC,INVALC,0x3872,INVALC,INVALC,INVALC,INVALC,0x386E, 0x3874,INVALC,INVALC,INVALC,0x386C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x386B,INVALC,INVALC,INVALC, 0x3873,INVALC,INVALC,0x386D,INVALC,0x386F,0x3871,INVALC, INVALC,0x3870,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3E70,0x3E72,INVALC,INVALC, INVALC,INVALC,INVALC,0x3E6D,INVALC,INVALC,INVALC,0x3E6F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x444E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x444F,INVALC,INVALC,INVALC,INVALC,INVALC,0x4E60,INVALC, INVALC,0x4959,0x4952,INVALC,INVALC,0x4957,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4954,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4951, /* Block 138, Array index 0x3C00 */ 0x4956,INVALC,INVALC,0x4958,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4E61, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4E62,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5265,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5640,INVALC,INVALC,INVALC,INVALC,INVALC,0x563F, 0x563D,INVALC,INVALC,0x5642,INVALC,INVALC,INVALC,INVALC, 0x5879,INVALC,0x587A,INVALC,INVALC,0x587C,0x587B,INVALC, INVALC,INVALC,INVALC,INVALC,0x664A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5D29,INVALC,0x5D28, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6149,INVALC,INVALC,INVALC,INVALC,0x617D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x664B,INVALC,INVALC,0x5B2F, INVALC,0x6046,0x614A,INVALC,0x2F29,INVALC,INVALC,INVALC, INVALC,0x3876,0x3875,INVALC,0x3877,INVALC,INVALC,INVALC, INVALC,INVALC,0x3E74,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4E65,INVALC,0x5266, INVALC,0x4E64,INVALC,0x5646,INVALC,INVALC,INVALC,INVALC, 0x587E,0x587D,INVALC,0x5921,INVALC,0x5B31,INVALC,INVALC, INVALC,INVALC,INVALC,0x5D2A,0x5E61,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4454, INVALC,INVALC,0x495C,INVALC,INVALC,INVALC,0x4E66,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5B32,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 139, Array index 0x3D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,0x2F2A,0x2F2C,INVALC, INVALC,INVALC,INVALC,0x337B,INVALC,0x337A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x337C,INVALC,INVALC,0x387E,INVALC,INVALC,INVALC, 0x3923,0x3929,INVALC,INVALC,INVALC,INVALC,0x3879,INVALC, 0x387B,0x3925,INVALC,0x3922,INVALC,INVALC,0x6330,INVALC, INVALC,INVALC,0x387A,INVALC,INVALC,0x3E7C,INVALC,INVALC, 0x3E7D,INVALC,INVALC,INVALC,INVALC,0x3F24,INVALC,INVALC, INVALC,INVALC,0x3E7E,0x3E75,INVALC,INVALC,INVALC,INVALC, INVALC,0x3F21,INVALC,0x3F23,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3E78,INVALC,INVALC,0x3F22,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4460,0x4459,INVALC,0x4463, INVALC,INVALC,0x4455,INVALC,INVALC,INVALC,INVALC,0x4458, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x445B,INVALC,INVALC,INVALC,INVALC,0x445C,0x4461,INVALC, 0x4456,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x445D,INVALC,INVALC,INVALC,INVALC,INVALC,0x495F,INVALC, 0x4964,INVALC,INVALC,INVALC,0x4963,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x495E,0x4962,0x496B,INVALC,0x4968, INVALC,INVALC,0x4960,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4965,INVALC,INVALC,0x4966,INVALC,INVALC,0x4E74, INVALC,0x4E67,INVALC,0x4E72,0x4E70,0x4E6E,INVALC,0x4E6C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4E73,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4E75,INVALC,0x4E69,INVALC,0x4E6A,INVALC, 0x4E76,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x526A,INVALC,0x526B,INVALC,INVALC, INVALC,0x4E6F,0x5267,INVALC,0x526E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5269,INVALC,INVALC,INVALC,0x5268,INVALC,INVALC, /* Block 140, Array index 0x3E00 */ INVALC,INVALC,INVALC,0x664C,INVALC,INVALC,INVALC,INVALC, INVALC,0x5649,INVALC,INVALC,0x564A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5648, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x592A,INVALC,INVALC,INVALC,0x5926,INVALC,INVALC, INVALC,INVALC,0x5924,INVALC,0x5928,INVALC,INVALC,INVALC, 0x5923,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B34, INVALC,INVALC,INVALC,0x5B35,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5B36,0x5D33,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5D30,0x5D2C,INVALC,0x5D32,INVALC,INVALC,INVALC, INVALC,0x5D2B,INVALC,INVALC,INVALC,INVALC,0x5D2E,INVALC, INVALC,0x5C6D,INVALC,0x642D,INVALC,0x5E62,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5E63,INVALC,INVALC,INVALC, INVALC,0x5F61,INVALC,0x5F62,INVALC,INVALC,INVALC,0x6048, INVALC,INVALC,INVALC,INVALC,INVALC,0x6047,INVALC,INVALC, 0x6049,0x607B,INVALC,INVALC,INVALC,INVALC,INVALC,0x614B, INVALC,INVALC,INVALC,0x616B,INVALC,0x617E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 141, Array index 0x3F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x392A,INVALC,INVALC,INVALC,INVALC,INVALC, 0x564D,INVALC,INVALC,INVALC,0x5F64,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5D34,0x664D,0x6221,INVALC,INVALC,INVALC,INVALC, 0x392D,INVALC,INVALC,0x392C,INVALC,INVALC,0x3F2A,INVALC, 0x3F29,INVALC,INVALC,0x4464,INVALC,INVALC,INVALC,0x496D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x592B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x392E,INVALC,0x3F2C,0x3F2B, INVALC,INVALC,INVALC,0x3F2D,INVALC,INVALC,INVALC,0x634A, 0x4465,INVALC,INVALC,INVALC,INVALC,INVALC,0x4E7A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x564F,INVALC, INVALC,INVALC,INVALC,0x614D,INVALC,INVALC,INVALC,0x2F2E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3930,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3932,0x3931,INVALC, INVALC,0x3F2F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4469,INVALC,INVALC,INVALC,0x4467,INVALC,INVALC, 0x4970,INVALC,INVALC,INVALC,0x4972,INVALC,0x4971,INVALC, 0x664E,INVALC,INVALC,0x4E7E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4E7D,INVALC,0x4F22,INVALC,INVALC,INVALC,0x5275, INVALC,INVALC,0x5273,INVALC,INVALC,INVALC,0x5651,0x5652, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 142, Array index 0x4000 */ INVALC,INVALC,INVALC,0x592E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5B38,0x664F,INVALC,0x6428,INVALC, INVALC,0x5E65,0x5E66,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6650,INVALC,0x604A,INVALC,0x614E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3933,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x243A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3939,INVALC,0x3937,INVALC,0x3935,0x3938, INVALC,INVALC,0x3F39,0x3F34,INVALC,INVALC,0x3F37,0x3F30, 0x3F33,INVALC,INVALC,0x3F38,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4975, 0x4973,INVALC,0x4974,INVALC,INVALC,0x4F26,INVALC,INVALC, INVALC,INVALC,0x4F25,INVALC,0x4F23,INVALC,0x5277,INVALC, INVALC,0x5931,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6651,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x393E,INVALC,0x393A,INVALC,INVALC, 0x393D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3F3F,0x3F3A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3F3B,INVALC,0x3F3E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x446B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 143, Array index 0x4100 */ INVALC,0x497B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x497A,INVALC,INVALC,0x4979,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4F2C,INVALC,0x4F2B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x527E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x527B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x527C,INVALC,INVALC,0x5654,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5655, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5932,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5B3A,INVALC,INVALC,0x5B39,INVALC,INVALC,INVALC,INVALC, 0x5B3B,INVALC,INVALC,INVALC,INVALC,0x5B3C,INVALC,0x5B3D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5D37,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x604B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6150,INVALC,INVALC,INVALC,INVALC,0x616C, INVALC,INVALC,INVALC,INVALC,INVALC,0x393F,INVALC,0x3940, 0x3F40,0x4473,INVALC,0x497D,0x497C,INVALC,0x4F30,0x4F32, 0x4F2F,0x4F31,INVALC,INVALC,0x6652,INVALC,INVALC,0x5935, INVALC,0x5936,INVALC,0x5B3F,INVALC,INVALC,0x5D38,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6653,0x3941,INVALC, INVALC,0x3947,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3F45,INVALC,INVALC,INVALC, INVALC,INVALC,0x3F47,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3F44,0x3F46,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3F49,INVALC,INVALC, /* Block 144, Array index 0x4200 */ INVALC,INVALC,INVALC,INVALC,0x4476,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4F36,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4F33,INVALC,INVALC,INVALC,INVALC,0x4F35, INVALC,INVALC,INVALC,0x4F34,INVALC,0x5324,INVALC,INVALC, 0x5322,0x5321,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5325,0x5659,INVALC,INVALC, INVALC,0x565A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5937,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5E67,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6222,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3F4B,0x4477,INVALC, 0x4478,0x4A21,0x4A22,INVALC,0x4F37,0x5327,INVALC,0x5326, INVALC,INVALC,0x6654,INVALC,0x5938,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4F39,INVALC,0x272F,INVALC,INVALC, INVALC,0x243B,INVALC,INVALC,INVALC,INVALC,0x2730,INVALC, INVALC,0x2733,INVALC,INVALC,INVALC,INVALC,INVALC,0x2731, INVALC,INVALC,0x2A72,INVALC,0x2A70,INVALC,INVALC,0x2A74, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2A73,0x2A71,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2F31, INVALC,0x2F32,INVALC,INVALC,INVALC,INVALC,INVALC,0x2F33, INVALC,0x2F30,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3425,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 145, Array index 0x4300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3427,0x3426,INVALC,INVALC,INVALC,INVALC,0x394B,INVALC, INVALC,INVALC,0x394A,0x394E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x394C,INVALC,INVALC, 0x3F4F,0x3F50,0x3F4D,0x3F4C,0x3F51,INVALC,INVALC,INVALC, 0x3F55,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3F56, INVALC,INVALC,0x3F54,0x3F57,INVALC,INVALC,INVALC,INVALC, 0x447D,INVALC,INVALC,0x4479,INVALC,0x447C,0x447A,INVALC, 0x447B,INVALC,INVALC,INVALC,0x447E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4A24,INVALC,INVALC,INVALC,INVALC,0x4A27, INVALC,0x4A26,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4F3C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4F3B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x593A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x225E,0x225D,INVALC,INVALC,0x243C,INVALC, INVALC,INVALC,0x243D,INVALC,0x6655,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2735,INVALC,INVALC,INVALC, 0x2739,0x2734,INVALC,0x3951,INVALC,0x2A77,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2A75, INVALC,0x2A78,INVALC,INVALC,0x2F35,INVALC,INVALC,INVALC, 0x2F38,INVALC,0x2F34,INVALC,0x2F3E,INVALC,0x2F37,INVALC, INVALC,0x2F3C,INVALC,INVALC,INVALC,0x2F3B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3429,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x394F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x636C,0x3952, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 146, Array index 0x4400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3F59,INVALC,0x4523,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4524,INVALC,0x4525,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4A2A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x532B, INVALC,INVALC,INVALC,INVALC,0x593C,0x593B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x342A,INVALC,INVALC,0x3955,INVALC,INVALC,INVALC, INVALC,0x3954,INVALC,INVALC,0x6657,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4528, INVALC,INVALC,INVALC,0x4527,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A2C,INVALC, INVALC,INVALC,INVALC,0x4A2B,0x4A2D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4F3F,INVALC,INVALC,INVALC,0x4F40,INVALC,0x532D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x532C,0x532F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x593D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5E68,INVALC,INVALC,INVALC,0x607E, INVALC,INVALC,INVALC,INVALC,0x616D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3430,INVALC, INVALC,INVALC,INVALC,0x342D,INVALC,INVALC,0x342F,0x342E, 0x3431,INVALC,INVALC,INVALC,INVALC,0x3958,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3957,INVALC,0x3956,INVALC,INVALC,INVALC,0x3959,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3F5D,INVALC, /* Block 147, Array index 0x4500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3F66,INVALC,INVALC,0x3F60,INVALC,INVALC,0x3F68,INVALC, INVALC,INVALC,INVALC,0x3F69,INVALC,INVALC,INVALC,INVALC, 0x3F62,INVALC,INVALC,0x3F65,INVALC,INVALC,INVALC,INVALC, 0x3F5E,0x6659,0x3F63,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6658,INVALC,INVALC,INVALC,0x452E, INVALC,INVALC,INVALC,INVALC,INVALC,0x452B,INVALC,INVALC, INVALC,INVALC,INVALC,0x4537,0x452F,INVALC,INVALC,INVALC, INVALC,0x4539,INVALC,INVALC,0x4538,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x452A,INVALC,INVALC, INVALC,0x452D,INVALC,INVALC,0x4531,0x4529,INVALC,0x4534, INVALC,INVALC,0x4533,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4532,0x4535,INVALC,INVALC,0x4536,INVALC, INVALC,INVALC,INVALC,0x665A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4A34,INVALC,INVALC,0x4A35,INVALC,INVALC,INVALC, INVALC,0x4A2F,INVALC,INVALC,INVALC,INVALC,INVALC,0x4530, 0x4A38,INVALC,0x4A33,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A39,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4A32,0x4A37,INVALC, 0x672A,0x4A31,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4F42,0x4F50,INVALC,INVALC,INVALC,INVALC,0x4F43,0x4F41, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4F48,INVALC,0x4F49,INVALC, INVALC,INVALC,0x4F4B,0x4F4E,0x4F44,INVALC,INVALC,INVALC, INVALC,INVALC,0x4F51,INVALC,INVALC,0x4F45,INVALC,INVALC, INVALC,INVALC,INVALC,0x4F52,INVALC,0x4F4C,INVALC,INVALC, INVALC,INVALC,INVALC,0x4F4D,0x665B,0x665C,0x4A30,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5335,INVALC,INVALC, /* Block 148, Array index 0x4600 */ INVALC,INVALC,INVALC,0x533D,INVALC,0x533E,INVALC,0x5338, INVALC,INVALC,0x5332,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5336, INVALC,INVALC,INVALC,INVALC,0x5337,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x533B,INVALC,INVALC,INVALC, 0x533C,0x5339,0x533A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x665D, INVALC,INVALC,0x665E,INVALC,INVALC,0x5331,INVALC,INVALC, 0x5665,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5666,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x565D,INVALC,0x5667, INVALC,INVALC,0x5664,INVALC,INVALC,INVALC,0x565B,INVALC, 0x5668,0x565E,INVALC,0x566B,INVALC,INVALC,0x5661,INVALC, INVALC,INVALC,0x5662,0x5663,0x565F,INVALC,INVALC,INVALC, 0x565C,INVALC,INVALC,INVALC,INVALC,0x5660,INVALC,0x566A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x665F,INVALC, INVALC,INVALC,INVALC,0x5943,INVALC,INVALC,INVALC,INVALC, 0x5940,INVALC,INVALC,0x5942,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5949,INVALC,INVALC,INVALC, 0x593E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5944,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5946,INVALC,INVALC,0x5945,0x6661,0x6662,0x6660,INVALC, INVALC,0x5B50,INVALC,INVALC,INVALC,0x5B44,0x5B45,INVALC, INVALC,INVALC,INVALC,0x5B43,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5B48,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5B4D,INVALC,INVALC,INVALC,INVALC, 0x5B4F,INVALC,INVALC,INVALC,INVALC,0x5B4A,INVALC,INVALC, INVALC,0x5B41,0x5B42,0x5B4E,INVALC,0x5B47,INVALC,0x6665, INVALC,0x6663,0x6664,0x5D41,0x5E6A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 149, Array index 0x4700 */ INVALC,INVALC,0x5D43,INVALC,0x5D3C,0x5D3F,INVALC,INVALC, 0x5D3E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5D3D, INVALC,INVALC,0x5D44,0x5D45,0x5D47,INVALC,0x5D42,0x5D3A, INVALC,INVALC,0x6666,0x6667,0x6668,INVALC,INVALC,0x5D46, INVALC,INVALC,INVALC,INVALC,INVALC,0x5E6D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5F69,0x5F6E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5F6A,0x5F6C,INVALC, INVALC,INVALC,INVALC,INVALC,0x5F6B,INVALC,0x6052,INVALC, 0x6431,INVALC,0x6055,0x6054,0x6056,INVALC,INVALC,0x604F, INVALC,0x6053,INVALC,INVALC,INVALC,0x6057,0x666A,0x6669, INVALC,INVALC,INVALC,INVALC,0x6122,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x616F,0x6223,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6236,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 150, Array index 0x4800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6323,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2F40,INVALC,INVALC,INVALC,0x3432,INVALC,0x395C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3F6C,INVALC,0x666B, INVALC,0x453C,0x453A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4A3D,INVALC,INVALC,INVALC,INVALC,0x4A3E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4F53, INVALC,INVALC,0x4F55,0x4F56,INVALC,INVALC,INVALC,INVALC, 0x5342,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5344,0x5340,INVALC,0x566D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x666C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x594B, 0x594A,INVALC,INVALC,INVALC,INVALC,0x5B53,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x666D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 151, Array index 0x4900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2143,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x273B,0x273A, INVALC,0x273F,INVALC,0x273C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x273D,0x273E,INVALC,INVALC,0x2A79, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2A7C,INVALC, INVALC,0x2A7B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3436,INVALC, INVALC,0x3434,0x395E,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3433,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3961,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3965,INVALC,0x3F71,INVALC,INVALC,INVALC,0x3F72, INVALC,0x3F73,0x3F75,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3F70,INVALC,INVALC,0x4540, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4542,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4A45,INVALC,0x4A46, 0x4A44,INVALC,INVALC,0x4F5A,INVALC,0x4F5B,INVALC,INVALC, INVALC,INVALC,INVALC,0x5348,INVALC,0x5670,INVALC,0x566F, INVALC,INVALC,0x5671,INVALC,INVALC,0x5D49,0x2A7D,0x5349, INVALC,INVALC,0x6325,INVALC,INVALC,0x3439,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4A47,0x4A49,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5E70,INVALC,0x6125,0x622F, INVALC,INVALC,INVALC,INVALC,0x3F7E,0x3F7C,0x3F7B,INVALC, INVALC,INVALC,INVALC,INVALC,0x4546,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4547,INVALC,INVALC,INVALC, /* Block 152, Array index 0x4A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4F60,INVALC,0x5350,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x534D,0x534C,INVALC,0x5351, INVALC,INVALC,0x5674,0x5675,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5D4F,INVALC,0x5D4C,0x5D4E,INVALC,0x5E72,0x5E71, INVALC,INVALC,INVALC,0x666E,0x5F71,INVALC,INVALC,INVALC, 0x5F72,0x6059,INVALC,INVALC,INVALC,0x6126,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x666F,INVALC,INVALC, 0x6245,0x2A7E,INVALC,INVALC,INVALC,0x4549,INVALC,INVALC, INVALC,0x4A4C,INVALC,INVALC,INVALC,0x594F,INVALC,0x4021, INVALC,INVALC,INVALC,0x2B21,0x4A4E,INVALC,INVALC,0x5E73, INVALC,INVALC,INVALC,INVALC,INVALC,0x4024,INVALC,0x4022, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x454B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4F62, INVALC,0x4F63,INVALC,INVALC,0x4F64,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5353,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x567A,INVALC,INVALC,INVALC,0x567B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5950,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5B5F,0x5B5D,INVALC,0x5B5E,0x5B60,INVALC,INVALC, 0x5D50,INVALC,0x5D51,INVALC,INVALC,0x5E75,0x5E74,INVALC, 0x5F73,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6128,INVALC,0x623B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5355,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5951,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5E76,INVALC,0x6129,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x454F,0x4F65, INVALC,INVALC,0x5B61,INVALC,INVALC,0x4550,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5D53,INVALC,INVALC,INVALC, /* Block 153, Array index 0x4B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4552,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4A54,0x4A55,INVALC,INVALC, INVALC,0x4A52,0x4A56,INVALC,INVALC,INVALC,INVALC,0x4F69, INVALC,INVALC,0x4F67,0x636E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4F66,INVALC,INVALC,INVALC,0x535C,INVALC, INVALC,0x5359,INVALC,0x535A,0x5228,INVALC,0x5358,INVALC, INVALC,INVALC,0x535D,INVALC,0x535B,0x535F,INVALC,0x595B, 0x5726,INVALC,0x637B,INVALC,INVALC,INVALC,INVALC,0x5728, INVALC,INVALC,INVALC,0x5959,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5956,0x5958,0x5B65,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x642A,INVALC,INVALC,INVALC,INVALC,0x5E78,INVALC, 0x5E77,INVALC,INVALC,INVALC,0x605D,0x605E,0x605C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5361,INVALC,0x572A, INVALC,0x595C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5D56,INVALC,INVALC,INVALC,0x5E7B, 0x5E79,INVALC,0x5E7A,INVALC,INVALC,0x6225,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5E7C,0x6226,INVALC,INVALC, INVALC,0x3967,INVALC,INVALC,0x6670,INVALC,0x3968,INVALC, INVALC,INVALC,INVALC,INVALC,0x455B,INVALC,INVALC,INVALC, 0x402B,0x455C,INVALC,0x4554,INVALC,0x4559,INVALC,0x4557, 0x4A5D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4558, /* Block 154, Array index 0x4C00 */ INVALC,0x4A5E,INVALC,INVALC,INVALC,INVALC,0x4A5B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x667A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4F6B,INVALC,INVALC,0x5365,0x5366,INVALC,INVALC, 0x5364,INVALC,0x5362,0x5363,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5962,INVALC, 0x5961,0x5966,INVALC,0x5965,INVALC,INVALC,INVALC,INVALC, 0x5963,INVALC,0x6671,INVALC,0x5B69,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5D58,INVALC,0x5E7E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5F78,INVALC,INVALC,0x612A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x455F,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5368,INVALC,0x5730,INVALC,0x5967,INVALC,INVALC,INVALC, INVALC,0x5F21,0x6060,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A63,0x4A62, 0x4A66,INVALC,INVALC,INVALC,0x4A61,INVALC,0x4A60,0x4A6C, 0x4A64,INVALC,INVALC,INVALC,0x4A6A,INVALC,INVALC,INVALC, 0x4F73,INVALC,0x4F6D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4F6E,INVALC,INVALC,INVALC,0x4F72,INVALC, 0x4F74,0x5370,INVALC,INVALC,INVALC,INVALC,0x5371,INVALC, 0x536B,INVALC,INVALC,0x536C,INVALC,INVALC,INVALC,0x536A, INVALC,INVALC,INVALC,0x5734,INVALC,0x5737,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 155, Array index 0x4D00 */ 0x5733,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x596A,INVALC,INVALC,INVALC,0x596B,INVALC,INVALC,INVALC, 0x596D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B6F, 0x5B6D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B6C, INVALC,0x5B6E,INVALC,INVALC,INVALC,INVALC,0x5B6B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5D5A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5F24,0x5F22,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5F79,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6062,INVALC,INVALC,INVALC,0x6061,INVALC,INVALC,INVALC, INVALC,0x6172,INVALC,0x6173,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x402F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4F77,0x4F76,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x573A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5D61,INVALC,INVALC,INVALC, 0x5D60,0x5D5E,INVALC,INVALC,INVALC,INVALC,0x5F25,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6174, INVALC,0x6334,0x4A6E,INVALC,INVALC,0x5F7B,0x6063,INVALC, 0x4032,INVALC,0x4561,INVALC,0x4A6F,0x4A73,INVALC,INVALC, 0x4A71,0x4A70,0x4A72,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4F79,0x5375,INVALC,INVALC, 0x5374,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 156, Array index 0x4E00 */ 0x573B,INVALC,0x573C,INVALC,INVALC,INVALC,INVALC,0x596F, INVALC,0x5B71,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5F27,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6672,INVALC,INVALC, INVALC,0x612C,INVALC,INVALC,INVALC,INVALC,0x4A75,INVALC, INVALC,INVALC,0x5D62,INVALC,0x612E,0x6433,INVALC,INVALC, 0x6228,INVALC,INVALC,INVALC,0x573E,INVALC,INVALC,INVALC, 0x5D63,INVALC,INVALC,INVALC,INVALC,0x4562,INVALC,INVALC, 0x4A78,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x573F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5D64,INVALC,INVALC,0x5F28,INVALC,INVALC,INVALC,0x612F, INVALC,INVALC,INVALC,INVALC,INVALC,0x4563,INVALC,INVALC, INVALC,INVALC,INVALC,0x4F7E,INVALC,INVALC,INVALC,INVALC, INVALC,0x4F7C,INVALC,0x4F7B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4F7D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5378,0x537A,INVALC,INVALC,INVALC, INVALC,0x5423,INVALC,0x537C,0x5421,INVALC,0x5425,0x537D, INVALC,INVALC,INVALC,INVALC,0x5379,INVALC,INVALC,INVALC, 0x6673,0x5744,INVALC,INVALC,INVALC,0x5745,INVALC,0x5740, INVALC,INVALC,INVALC,0x5742,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5974,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5973,INVALC,INVALC,0x5B74,INVALC,INVALC, INVALC,INVALC,INVALC,0x5976,0x5975,0x5743,INVALC,INVALC, INVALC,INVALC,0x5971,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B75, INVALC,INVALC,INVALC,0x5B77,INVALC,INVALC,INVALC,INVALC, INVALC,0x5B79,INVALC,INVALC,INVALC,INVALC,0x5B7A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5D6F,INVALC, INVALC,0x5D71,INVALC,0x5D67,0x5D69,INVALC,0x5D6A,0x5D74, /* Block 157, Array index 0x4F00 */ 0x5D75,INVALC,0x5D6E,INVALC,0x5D68,INVALC,INVALC,INVALC, INVALC,INVALC,0x5D66,INVALC,0x5D76,INVALC,INVALC,INVALC, 0x5D73,INVALC,INVALC,INVALC,INVALC,0x5D72,INVALC,INVALC, INVALC,INVALC,INVALC,0x5D70,INVALC,INVALC,INVALC,0x5F2C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x642F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5F2A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6025,INVALC,INVALC, 0x5F7E,INVALC,0x6023,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6022,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6065, INVALC,0x6066,INVALC,0x6068,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6132,INVALC,INVALC, INVALC,0x6133,INVALC,INVALC,INVALC,0x6134,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6159,INVALC,INVALC,0x615B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6175,INVALC, INVALC,INVALC,INVALC,0x6241,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4564,INVALC,INVALC,0x4566,0x2F42,INVALC,0x4568,0x4567, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5027,INVALC,INVALC,INVALC,INVALC,INVALC,0x502A,INVALC, /* Block 158, Array index 0x5000 */ INVALC,0x5024,0x502B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x542D,INVALC,0x5025,0x5022,INVALC,0x542A, INVALC,INVALC,INVALC,0x542C,INVALC,INVALC,0x5436,INVALC, INVALC,INVALC,0x5433,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5437,INVALC,INVALC,0x5429,INVALC,INVALC,0x5435, INVALC,INVALC,0x5432,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x574D,INVALC,INVALC, INVALC,0x5748,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x574A,INVALC,INVALC,INVALC, INVALC,0x6675,INVALC,INVALC,INVALC,0x5979,0x597B,INVALC, 0x597D,INVALC,INVALC,INVALC,INVALC,0x597E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5A22,INVALC, INVALC,INVALC,INVALC,0x597A,INVALC,INVALC,0x5B7D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5C27,0x5C22,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C25,INVALC, INVALC,INVALC,0x5B7E,INVALC,INVALC,INVALC,0x5C26,INVALC, INVALC,INVALC,INVALC,0x5C24,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5C23,INVALC,INVALC,INVALC,0x5D79,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5D7A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5F35,INVALC, 0x5F31,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5F32,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5F36,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x606C,INVALC,INVALC,INVALC, /* Block 159, Array index 0x5100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6135,INVALC,INVALC,INVALC,INVALC,INVALC,0x615D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6229,INVALC, 0x6230,INVALC,INVALC,INVALC,0x6238,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5F37,INVALC,INVALC,INVALC,INVALC, INVALC,0x4569,INVALC,INVALC,0x502C,0x5439,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5A24,INVALC,INVALC,INVALC,INVALC,0x5C29,INVALC,INVALC, 0x5E21,INVALC,INVALC,INVALC,INVALC,INVALC,0x5F3A,INVALC, INVALC,INVALC,0x6231,0x623F,INVALC,INVALC,0x2547,INVALC, INVALC,INVALC,0x502F,0x502E,0x543A,INVALC,INVALC,0x5750, INVALC,0x5A26,0x5A25,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4B22,INVALC,INVALC, INVALC,0x5E22,INVALC,INVALC,0x396A,0x543C,0x543B,INVALC, INVALC,INVALC,0x5A28,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x396B,INVALC,INVALC,INVALC,INVALC,0x543D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5C2A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6029,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2772,INVALC, /* Block 160, Array index 0x5200 */ INVALC,INVALC,0x5A29,0x5C2D,0x5C2E,0x5F3C,INVALC,INVALC, 0x615F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x456A,INVALC,INVALC,0x5C30, INVALC,INVALC,INVALC,INVALC,INVALC,0x6160,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5A2B,0x5A2A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x606D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x613B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2370,INVALC,INVALC,0x543E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5E24,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5F3E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6233,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5755,INVALC, INVALC,INVALC,INVALC,0x602B,INVALC,INVALC,INVALC,0x6242, INVALC,INVALC,INVALC,INVALC,INVALC,0x5E47,INVALC,INVALC, INVALC,0x5F3F,INVALC,0x6161,INVALC,0x6177,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, }; #endif /* ICONV_FROM_UCS_CCS_CNS11643_PLANE14 && !defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * 16-bit UCS -> cns11643_plane14 size-optimized table (16576 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_CNS11643_PLANE14) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t from_ucs_size_cns11643_plane14[] = { 0x00C5, /* Ranges number */ 0x0D04, /* Unranged codes number */ 0x0658, /* First unranged code index */ /* Ranges list: first code, last Code, array index. */ /* Array index: 0x0003 */ 0x4E20, 0x4E24, 0x0252, /* Array index: 0x0006 */ 0x4EAF, 0x4EB2, 0x0257, /* Array index: 0x0009 */ 0x4EF8, 0x4EFC, 0x025B, /* Array index: 0x000C */ 0x4F9F, 0x4FA3, 0x0260, /* Array index: 0x000F */ 0x4FF9, 0x5004, 0x0265, /* Array index: 0x0012 */ 0x5078, 0x507C, 0x0271, /* Array index: 0x0015 */ 0x50DE, 0x50E2, 0x0276, /* Array index: 0x0018 */ 0x510D, 0x510F, 0x027B, /* Array index: 0x001B */ 0x5182, 0x5186, 0x027E, /* Array index: 0x001E */ 0x51B2, 0x51B5, 0x0283, /* Array index: 0x0021 */ 0x51C1, 0x51C3, 0x0287, /* Array index: 0x0024 */ 0x51CF, 0x51D3, 0x028A, /* Array index: 0x0027 */ 0x51D9, 0x51DB, 0x028F, /* Array index: 0x002A */ 0x51E2, 0x51E5, 0x0292, /* Array index: 0x002D */ 0x5263, 0x5268, 0x0296, /* Array index: 0x0030 */ 0x529A, 0x529E, 0x029C, /* Array index: 0x0033 */ 0x52B3, 0x52B5, 0x02A1, /* Array index: 0x0036 */ 0x52CC, 0x52D1, 0x02A4, /* Array index: 0x0039 */ 0x5332, 0x533B, 0x02AA, /* Array index: 0x003C */ 0x53A6, 0x53AB, 0x02B4, /* Array index: 0x003F */ 0x53C1, 0x53C5, 0x02BA, /* Array index: 0x0042 */ 0x53D9, 0x53DD, 0x02BF, /* Array index: 0x0045 */ 0x5421, 0x5423, 0x02C4, /* Array index: 0x0048 */ 0x5449, 0x5451, 0x02C7, /* Array index: 0x004B */ 0x54CA, 0x54CD, 0x02D0, /* Array index: 0x004E */ 0x54F4, 0x54F6, 0x02D4, /* Array index: 0x0051 */ 0x5558, 0x555A, 0x02D7, /* Array index: 0x0054 */ 0x5571, 0x5573, 0x02DA, /* Array index: 0x0057 */ 0x564D, 0x5656, 0x02DD, /* Array index: 0x005A */ 0x569E, 0x56A0, 0x02E7, /* Array index: 0x005D */ 0x56B8, 0x56BB, 0x02EA, /* Array index: 0x0060 */ 0x56EF, 0x56F3, 0x02EE, /* Array index: 0x0063 */ 0x56FB, 0x56FD, 0x02F3, /* Array index: 0x0066 */ 0x5742, 0x5748, 0x02F6, /* Array index: 0x0069 */ 0x5753, 0x5759, 0x02FD, /* Array index: 0x006C */ 0x578D, 0x5792, 0x0304, /* Array index: 0x006F */ 0x57A6, 0x57A8, 0x030A, /* Array index: 0x0072 */ 0x57C4, 0x57CA, 0x030D, /* Array index: 0x0075 */ 0x585F, 0x5861, 0x0314, /* Array index: 0x0078 */ 0x5866, 0x586C, 0x0317, /* Array index: 0x007B */ 0x5895, 0x5897, 0x031E, /* Array index: 0x007E */ 0x58EE, 0x58F7, 0x0321, /* Array index: 0x0081 */ 0x5900, 0x590B, 0x032B, /* Array index: 0x0084 */ 0x594B, 0x594D, 0x0337, /* Array index: 0x0087 */ 0x599A, 0x599C, 0x033A, /* Array index: 0x008A */ 0x5A2A, 0x5A2C, 0x033D, /* Array index: 0x008D */ 0x5A7E, 0x5A89, 0x0340, /* Array index: 0x0090 */ 0x5AA0, 0x5AA4, 0x034C, /* Array index: 0x0093 */ 0x5ACE, 0x5AD3, 0x0351, /* Array index: 0x0096 */ 0x5B37, 0x5B3B, 0x0357, /* Array index: 0x0099 */ 0x5B9D, 0x5B9F, 0x035C, /* Array index: 0x009C */ 0x5BDA, 0x5BDD, 0x035F, /* Array index: 0x009F */ 0x5BFD, 0x5C00, 0x0363, /* Array index: 0x00A2 */ 0x5CB9, 0x5CBB, 0x0367, /* Array index: 0x00A5 */ 0x5D08, 0x5D0A, 0x036A, /* Array index: 0x00A8 */ 0x5D8B, 0x5D91, 0x036D, /* Array index: 0x00AB */ 0x5DA3, 0x5DA6, 0x0374, /* Array index: 0x00AE */ 0x5E2C, 0x5E32, 0x0378, /* Array index: 0x00B1 */ 0x5E46, 0x5E48, 0x037F, /* Array index: 0x00B4 */ 0x5EF8, 0x5EFD, 0x0382, /* Array index: 0x00B7 */ 0x5F0C, 0x5F0E, 0x0388, /* Array index: 0x00BA */ 0x5F39, 0x5F3B, 0x038B, /* Array index: 0x00BD */ 0x5F50, 0x5F55, 0x038E, /* Array index: 0x00C0 */ 0x5F8D, 0x5F8F, 0x0394, /* Array index: 0x00C3 */ 0x5FDA, 0x5FDC, 0x0397, /* Array index: 0x00C6 */ 0x604E, 0x6052, 0x039A, /* Array index: 0x00C9 */ 0x6073, 0x6075, 0x039F, /* Array index: 0x00CC */ 0x60A6, 0x60AA, 0x03A2, /* Array index: 0x00CF */ 0x611E, 0x6122, 0x03A7, /* Array index: 0x00D2 */ 0x6185, 0x6188, 0x03AC, /* Array index: 0x00D5 */ 0x6195, 0x6199, 0x03B0, /* Array index: 0x00D8 */ 0x61CE, 0x61D0, 0x03B5, /* Array index: 0x00DB */ 0x61D9, 0x61DD, 0x03B8, /* Array index: 0x00DE */ 0x6235, 0x623C, 0x03BD, /* Array index: 0x00E1 */ 0x6299, 0x629E, 0x03C5, /* Array index: 0x00E4 */ 0x62A3, 0x62A7, 0x03CB, /* Array index: 0x00E7 */ 0x62DD, 0x62E1, 0x03D0, /* Array index: 0x00EA */ 0x635B, 0x635D, 0x03D5, /* Array index: 0x00ED */ 0x6438, 0x643C, 0x03D8, /* Array index: 0x00F0 */ 0x6455, 0x6457, 0x03DD, /* Array index: 0x00F3 */ 0x655F, 0x6561, 0x03E0, /* Array index: 0x00F6 */ 0x656D, 0x6571, 0x03E3, /* Array index: 0x00F9 */ 0x6617, 0x661B, 0x03E8, /* Array index: 0x00FC */ 0x66A4, 0x66A6, 0x03ED, /* Array index: 0x00FF */ 0x66CD, 0x66D7, 0x03F0, /* Array index: 0x0102 */ 0x67A2, 0x67A4, 0x03FB, /* Array index: 0x0105 */ 0x67D5, 0x67D7, 0x03FE, /* Array index: 0x0108 */ 0x6822, 0x6824, 0x0401, /* Array index: 0x010B */ 0x6855, 0x685A, 0x0404, /* Array index: 0x010E */ 0x6898, 0x689A, 0x040A, /* Array index: 0x0111 */ 0x68B6, 0x68B9, 0x040D, /* Array index: 0x0114 */ 0x68FE, 0x6903, 0x0411, /* Array index: 0x0117 */ 0x6A29, 0x6A2D, 0x0417, /* Array index: 0x011A */ 0x6AB0, 0x6AB2, 0x041C, /* Array index: 0x011D */ 0x6ABC, 0x6AC1, 0x041F, /* Array index: 0x0120 */ 0x6AD4, 0x6AD8, 0x0425, /* Array index: 0x0123 */ 0x6AFD, 0x6B01, 0x042A, /* Array index: 0x0126 */ 0x6B1B, 0x6B1D, 0x042F, /* Array index: 0x0129 */ 0x6B26, 0x6B2B, 0x0432, /* Array index: 0x012C */ 0x6B68, 0x6B74, 0x0438, /* Array index: 0x012F */ 0x6C9E, 0x6CA2, 0x0445, /* Array index: 0x0132 */ 0x6D13, 0x6D15, 0x044A, /* Array index: 0x0135 */ 0x6D5B, 0x6D5D, 0x044D, /* Array index: 0x0138 */ 0x6D71, 0x6D73, 0x0450, /* Array index: 0x013B */ 0x6D99, 0x6D9B, 0x0453, /* Array index: 0x013E */ 0x6DFE, 0x6E0C, 0x0456, /* Array index: 0x0141 */ 0x6ED9, 0x6EDD, 0x0465, /* Array index: 0x0144 */ 0x6F48, 0x6F4C, 0x046A, /* Array index: 0x0147 */ 0x6FD6, 0x6FDA, 0x046F, /* Array index: 0x014A */ 0x702C, 0x702E, 0x0474, /* Array index: 0x014D */ 0x7087, 0x7090, 0x0477, /* Array index: 0x0150 */ 0x70A2, 0x70AA, 0x0481, /* Array index: 0x0153 */ 0x712A, 0x712D, 0x048A, /* Array index: 0x0156 */ 0x7133, 0x713F, 0x048E, /* Array index: 0x0159 */ 0x7174, 0x7177, 0x049B, /* Array index: 0x015C */ 0x718B, 0x718E, 0x049F, /* Array index: 0x015F */ 0x71E9, 0x71EB, 0x04A3, /* Array index: 0x0162 */ 0x720E, 0x7218, 0x04A6, /* Array index: 0x0165 */ 0x7264, 0x7268, 0x04B1, /* Array index: 0x0168 */ 0x7328, 0x732F, 0x04B6, /* Array index: 0x016B */ 0x7346, 0x7348, 0x04BE, /* Array index: 0x016E */ 0x7353, 0x7355, 0x04C1, /* Array index: 0x0171 */ 0x73CE, 0x73D0, 0x04C4, /* Array index: 0x0174 */ 0x7414, 0x7419, 0x04C7, /* Array index: 0x0177 */ 0x7438, 0x743E, 0x04CD, /* Array index: 0x017A */ 0x7445, 0x7449, 0x04D4, /* Array index: 0x017D */ 0x74C7, 0x74D3, 0x04D9, /* Array index: 0x0180 */ 0x7555, 0x7558, 0x04E6, /* Array index: 0x0183 */ 0x76D5, 0x76D9, 0x04EA, /* Array index: 0x0186 */ 0x773F, 0x7743, 0x04EF, /* Array index: 0x0189 */ 0x7774, 0x777B, 0x04F4, /* Array index: 0x018C */ 0x7807, 0x780B, 0x04FC, /* Array index: 0x018F */ 0x7906, 0x790D, 0x0501, /* Array index: 0x0192 */ 0x7983, 0x7989, 0x0509, /* Array index: 0x0195 */ 0x799D, 0x799F, 0x0510, /* Array index: 0x0198 */ 0x79C3, 0x79C7, 0x0513, /* Array index: 0x019B */ 0x79D7, 0x79DB, 0x0518, /* Array index: 0x019E */ 0x79F0, 0x79F5, 0x051D, /* Array index: 0x01A1 */ 0x7A29, 0x7A2D, 0x0523, /* Array index: 0x01A4 */ 0x7ACC, 0x7AD5, 0x0528, /* Array index: 0x01A7 */ 0x7ADA, 0x7ADD, 0x0532, /* Array index: 0x01AA */ 0x7AF0, 0x7AF5, 0x0536, /* Array index: 0x01AD */ 0x7B41, 0x7B43, 0x053C, /* Array index: 0x01B0 */ 0x7C99, 0x7C9C, 0x053F, /* Array index: 0x01B3 */ 0x7CC2, 0x7CC9, 0x0543, /* Array index: 0x01B6 */ 0x7D74, 0x7D78, 0x054B, /* Array index: 0x01B9 */ 0x7D87, 0x7D8B, 0x0550, /* Array index: 0x01BC */ 0x7D95, 0x7D99, 0x0555, /* Array index: 0x01BF */ 0x7DCD, 0x7DD3, 0x055A, /* Array index: 0x01C2 */ 0x7DFC, 0x7E02, 0x0561, /* Array index: 0x01C5 */ 0x805F, 0x806B, 0x0568, /* Array index: 0x01C8 */ 0x807A, 0x807C, 0x0575, /* Array index: 0x01CB */ 0x80A4, 0x80A8, 0x0578, /* Array index: 0x01CE */ 0x8140, 0x8142, 0x057D, /* Array index: 0x01D1 */ 0x8192, 0x8196, 0x0580, /* Array index: 0x01D4 */ 0x8218, 0x821A, 0x0585, /* Array index: 0x01D7 */ 0x8414, 0x8418, 0x0588, /* Array index: 0x01DA */ 0x8492, 0x8496, 0x058D, /* Array index: 0x01DD */ 0x8501, 0x8505, 0x0592, /* Array index: 0x01E0 */ 0x8533, 0x8535, 0x0597, /* Array index: 0x01E3 */ 0x8845, 0x8847, 0x059A, /* Array index: 0x01E6 */ 0x8A9B, 0x8A9F, 0x059D, /* Array index: 0x01E9 */ 0x8AB1, 0x8AB7, 0x05A2, /* Array index: 0x01EC */ 0x8C51, 0x8C53, 0x05A9, /* Array index: 0x01EF */ 0x8D82, 0x8D88, 0x05AC, /* Array index: 0x01F2 */ 0x8EAD, 0x8EB9, 0x05B3, /* Array index: 0x01F5 */ 0x8F9D, 0x8FA7, 0x05C0, /* Array index: 0x01F8 */ 0x9028, 0x902C, 0x05CB, /* Array index: 0x01FB */ 0x91DE, 0x91E0, 0x05D0, /* Array index: 0x01FE */ 0x9220, 0x9222, 0x05D3, /* Array index: 0x0201 */ 0x92AD, 0x92B1, 0x05D6, /* Array index: 0x0204 */ 0x92DA, 0x92DC, 0x05DB, /* Array index: 0x0207 */ 0x92F3, 0x92F6, 0x05DE, /* Array index: 0x020A */ 0x9330, 0x9332, 0x05E2, /* Array index: 0x020D */ 0x9372, 0x9374, 0x05E5, /* Array index: 0x0210 */ 0x93BB, 0x93BE, 0x05E8, /* Array index: 0x0213 */ 0x93E9, 0x93F4, 0x05EC, /* Array index: 0x0216 */ 0x941A, 0x9424, 0x05F8, /* Array index: 0x0219 */ 0x9458, 0x945C, 0x0603, /* Array index: 0x021C */ 0x9465, 0x9467, 0x0608, /* Array index: 0x021F */ 0x96B5, 0x96B7, 0x060B, /* Array index: 0x0222 */ 0x96EC, 0x96EE, 0x060E, /* Array index: 0x0225 */ 0x9733, 0x9737, 0x0611, /* Array index: 0x0228 */ 0x97B1, 0x97B5, 0x0616, /* Array index: 0x022B */ 0x983C, 0x9842, 0x061B, /* Array index: 0x022E */ 0x9854, 0x9856, 0x0622, /* Array index: 0x0231 */ 0x986C, 0x986E, 0x0625, /* Array index: 0x0234 */ 0x99B6, 0x99B8, 0x0628, /* Array index: 0x0237 */ 0x99BC, 0x99C0, 0x062B, /* Array index: 0x023A */ 0x9AE4, 0x9AEA, 0x0630, /* Array index: 0x023D */ 0x9B8B, 0x9B8F, 0x0637, /* Array index: 0x0240 */ 0x9BCB, 0x9BCD, 0x063C, /* Array index: 0x0243 */ 0x9BFB, 0x9C04, 0x063F, /* Array index: 0x0246 */ 0x9CEB, 0x9CEF, 0x0649, /* Array index: 0x0249 */ 0x9EAA, 0x9EAC, 0x064E, /* Array index: 0x024C */ 0x9EC4, 0x9EC6, 0x0651, /* Array index: 0x024F */ 0x9F02, 0x9F05, 0x0654, /* Ranges content */ /* Range 0x4E20 - 0x4E24, array index: 0x0252 */ 0x2262,0x2261,0x2263,INVALC,0x243F, /* Range 0x4EAF - 0x4EB2, array index: 0x0257 */ 0x2B26,0x2B25,0x2B27,0x2B24, /* Range 0x4EF8 - 0x4EFC, array index: 0x025B */ 0x226B,0x2267,0x2276,INVALC,0x226E, /* Range 0x4F9F - 0x4FA3, array index: 0x0260 */ 0x274C,0x2749,0x274B,0x274A,0x274D, /* Range 0x4FF9 - 0x5004, array index: 0x0265 */ 0x2F44,INVALC,0x2F58,0x2F4C,0x2F56,INVALC,0x2F46,INVALC, INVALC,0x2F4B,0x2F49,0x2F47, /* Range 0x5078 - 0x507C, array index: 0x0271 */ 0x344C,0x344A,INVALC,0x3445,0x3446, /* Range 0x50DE - 0x50E2, array index: 0x0276 */ 0x4576,0x634D,INVALC,0x4570,0x4575, /* Range 0x510D - 0x510F, array index: 0x027B */ 0x4B2C,0x4B27,0x644E, /* Range 0x5182 - 0x5186, array index: 0x027E */ 0x2127,INVALC,0x214D,0x2148,0x214E, /* Range 0x51B2 - 0x51B5, array index: 0x0283 */ 0x227E,0x227D,0x227C,0x2459, /* Range 0x51C1 - 0x51C3, array index: 0x0287 */ 0x2B3B,0x2B3D,0x2B3E, /* Range 0x51CF - 0x51D3, array index: 0x028A */ 0x344F,INVALC,0x344E,0x397D,0x397A, /* Range 0x51D9 - 0x51DB, array index: 0x028F */ 0x4B2F,0x4B2E,0x4B30, /* Range 0x51E2 - 0x51E5, array index: 0x0292 */ 0x212F,0x2135,0x2151,0x217B, /* Range 0x5263 - 0x5268, array index: 0x0296 */ 0x2F66,0x2F61,0x2F63,INVALC,0x2F64,0x3450, /* Range 0x529A - 0x529E, array index: 0x029C */ 0x602C,INVALC,0x2137,0x2154,0x2153, /* Range 0x52B3 - 0x52B5, array index: 0x02A1 */ 0x2463,0x2462,0x2761, /* Range 0x52CC - 0x52D1, array index: 0x02A4 */ 0x2F6F,INVALC,0x2F6C,0x2F6A,0x2F6D,0x2F6E, /* Range 0x5332 - 0x533B, array index: 0x02AA */ 0x4623,0x4B34,INVALC,0x5444,0x5C34,INVALC,0x2129,INVALC, 0x2157,0x2466, /* Range 0x53A6 - 0x53AB, array index: 0x02B4 */ 0x3A28,INVALC,0x3A27,0x404A,0x4049,0x4048, /* Range 0x53C1 - 0x53C5, array index: 0x02BA */ 0x2769,0x276A,INVALC,0x3455,0x3A29, /* Range 0x53D9 - 0x53DD, array index: 0x02BF */ 0x2B50,0x2B4F,INVALC,0x2B4E,0x2B4D, /* Range 0x5421 - 0x5423, array index: 0x02C4 */ 0x2479,0x247E,0x2475, /* Range 0x5449 - 0x5451, array index: 0x02C7 */ 0x247C,INVALC,0x2478,0x2474,0x246D,INVALC,INVALC,0x247D, 0x2522, /* Range 0x54CA - 0x54CD, array index: 0x02D0 */ 0x2B55,0x6454,0x2B63,0x2B61, /* Range 0x54F4 - 0x54F6, array index: 0x02D4 */ 0x2F74,0x2F78,0x3022, /* Range 0x5558 - 0x555A, array index: 0x02D7 */ 0x3457,0x3A36,0x3464, /* Range 0x5571 - 0x5573, array index: 0x02DA */ 0x6456,0x6722,0x6455, /* Range 0x564D - 0x5656, array index: 0x02DD */ 0x4B43,INVALC,0x4B45,0x4B40,0x4635,0x4B3C,INVALC,0x4B39, INVALC,0x4B3F, /* Range 0x569E - 0x56A0, array index: 0x02E7 */ 0x5759,0x5757,0x575C, /* Range 0x56B8 - 0x56BB, array index: 0x02EA */ 0x6726,0x6727,0x645C,0x5E26, /* Range 0x56EF - 0x56F3, array index: 0x02EE */ 0x2529,INVALC,0x2548,0x2527,0x2528, /* Range 0x56FB - 0x56FD, array index: 0x02F3 */ 0x277C,0x2821,0x277B, /* Range 0x5742 - 0x5748, array index: 0x02F6 */ 0x2540,0x2536,0x252F,INVALC,0x253C,INVALC,0x252D, /* Range 0x5753 - 0x5759, array index: 0x02FD */ 0x2532,0x2541,0x2542,0x2533,0x2538,0x2537,0x645F, /* Range 0x578D - 0x5792, array index: 0x0304 */ 0x2B69,0x2B68,INVALC,0x2B6C,0x2B67,0x2B6A, /* Range 0x57A6 - 0x57A8, array index: 0x030A */ 0x2B6D,0x2B72,0x2B6E, /* Range 0x57C4 - 0x57CA, array index: 0x030D */ 0x3034,0x3035,INVALC,INVALC,0x3033,0x3028,0x3037, /* Range 0x585F - 0x5861, array index: 0x0314 */ 0x405E,0x405C,0x4058, /* Range 0x5866 - 0x586C, array index: 0x0317 */ 0x405D,0x6343,INVALC,0x405A,0x4059,INVALC,0x4054, /* Range 0x5895 - 0x5897, array index: 0x031E */ 0x4641,0x4644,0x4640, /* Range 0x58EE - 0x58F7, array index: 0x0321 */ 0x2343,INVALC,0x2545,0x2543,0x2544,0x282D,INVALC,0x2B77, INVALC,0x3477, /* Range 0x5900 - 0x590B, array index: 0x032B */ 0x6466,0x504D,0x2139,INVALC,0x2235,0x2344,INVALC,INVALC, 0x2B7A,0x2B79,0x213A,0x2546, /* Range 0x594B - 0x594D, array index: 0x0337 */ 0x282E,0x282F,0x6467, /* Range 0x599A - 0x599C, array index: 0x033A */ 0x2556,0x2553,0x254E, /* Range 0x5A2A - 0x5A2C, array index: 0x033D */ 0x303C,0x3522,0x3538, /* Range 0x5A7E - 0x5A89, array index: 0x0340 */ 0x3A7C,INVALC,0x3A63,0x3A61,0x3A58,INVALC,INVALC,0x3A5B, 0x3A77,0x3A72,0x3A59,0x3A60, /* Range 0x5AA0 - 0x5AA4, array index: 0x034C */ 0x3A73,0x3A5A,INVALC,0x3A57,0x3A7A, /* Range 0x5ACE - 0x5AD3, array index: 0x0351 */ 0x4064,0x3A6B,0x406A,0x6468,INVALC,0x6469, /* Range 0x5B37 - 0x5B3B, array index: 0x0357 */ 0x5453,INVALC,0x5A31,0x5761,0x575E, /* Range 0x5B9D - 0x5B9F, array index: 0x035C */ 0x284E,0x284B,0x284D, /* Range 0x5BDA - 0x5BDD, array index: 0x035F */ 0x4075,0x4076,0x4073,0x6345, /* Range 0x5BFD - 0x5C00, array index: 0x0363 */ 0x255E,0x255C,0x255D,0x2850, /* Range 0x5CB9 - 0x5CBB, array index: 0x0367 */ 0x285C,0x285F,0x2857, /* Range 0x5D08 - 0x5D0A, array index: 0x036A */ 0x354B,0x3548,0x3547, /* Range 0x5D8B - 0x5D91, array index: 0x036D */ 0x4659,0x465A,INVALC,0x646F,0x4B65,0x4B66,0x4B63, /* Range 0x5DA3 - 0x5DA6, array index: 0x0374 */ 0x4B6A,0x4B68,0x6470,0x5058, /* Range 0x5E2C - 0x5E32, array index: 0x0378 */ 0x3069,INVALC,0x3068,0x306A,0x3067,INVALC,0x355B, /* Range 0x5E46 - 0x5E48, array index: 0x037F */ 0x3B3A,0x3B3B,0x3B3D, /* Range 0x5EF8 - 0x5EFD, array index: 0x0382 */ 0x2869,0x286B,INVALC,0x2C4C,0x2C4B,0x306E, /* Range 0x5F0C - 0x5F0E, array index: 0x0388 */ 0x2164,0x2249,0x2362, /* Range 0x5F39 - 0x5F3B, array index: 0x038B */ 0x3563,0x3B47,0x3B45, /* Range 0x5F50 - 0x5F55, array index: 0x038E */ 0x2140,0x2141,0x224A,0x2351,INVALC,0x2871, /* Range 0x5F8D - 0x5F8F, array index: 0x0394 */ 0x6264,0x3070,0x3072, /* Range 0x5FDA - 0x5FDC, array index: 0x0397 */ 0x2367,0x2369,0x2577, /* Range 0x604E - 0x6052, array index: 0x039A */ 0x2C56,0x3073,INVALC,0x2C57,0x2C5D, /* Range 0x6073 - 0x6075, array index: 0x039F */ 0x307A,0x3078,0x307B, /* Range 0x60A6 - 0x60AA, array index: 0x03A2 */ 0x3123,0x3128,INVALC,0x3121,0x356F, /* Range 0x611E - 0x6122, array index: 0x03A7 */ 0x3B61,INVALC,0x3B62,0x3B63,0x3B50, /* Range 0x6185 - 0x6188, array index: 0x03AC */ 0x4C23,0x4674,0x4C24,0x4B77, /* Range 0x6195 - 0x6199, array index: 0x03B0 */ 0x4B76,INVALC,0x5068,0x4C28,0x5067, /* Range 0x61CE - 0x61D0, array index: 0x03B5 */ 0x5062,0x5065,0x506B, /* Range 0x61D9 - 0x61DD, array index: 0x03B8 */ 0x5461,0x545F,0x545C,0x545E,0x545D, /* Range 0x6235 - 0x623C, array index: 0x03BD */ 0x5F48,INVALC,0x2165,0x2166,0x224E,INVALC,0x2628,0x2629, /* Range 0x6299 - 0x629E, array index: 0x03C5 */ 0x2635,INVALC,0x2633,0x2634,0x2638,0x2631, /* Range 0x62A3 - 0x62A7, array index: 0x03CB */ 0x647B,INVALC,0x2632,0x2931,0x292A, /* Range 0x62DD - 0x62E1, array index: 0x03D0 */ 0x2930,0x2937,0x2935,0x2936,0x292F, /* Range 0x635B - 0x635D, array index: 0x03D5 */ 0x3130,0x313B,0x3136, /* Range 0x6438 - 0x643C, array index: 0x03D8 */ 0x4134,INVALC,0x4148,0x4725,0x4142, /* Range 0x6455 - 0x6457, array index: 0x03DD */ 0x467E,0x4724,0x467A, /* Range 0x655F - 0x6561, array index: 0x03E0 */ 0x3B74,0x3B75,0x3B76, /* Range 0x656D - 0x6571, array index: 0x03E3 */ 0x414E,0x6346,INVALC,0x414D,0x4730, /* Range 0x6617 - 0x661B, array index: 0x03E8 */ 0x2940,0x2941,INVALC,0x2C7E,0x2C7A, /* Range 0x66A4 - 0x66A6, array index: 0x03ED */ 0x4739,0x4733,0x4737, /* Range 0x66CD - 0x66D7, array index: 0x03F0 */ 0x5122,0x5471,INVALC,0x546F,0x5470,INVALC,INVALC,0x546C, 0x546D,INVALC,0x5472, /* Range 0x67A2 - 0x67A4, array index: 0x03FB */ 0x294E,0x294C,0x6528, /* Range 0x67D5 - 0x67D7, array index: 0x03FE */ 0x2D31,0x2D2B,0x2D3A, /* Range 0x6822 - 0x6824, array index: 0x0401 */ 0x315E,0x3164,0x3150, /* Range 0x6855 - 0x685A, array index: 0x0404 */ 0x3162,0x3158,INVALC,0x3161,0x3160,0x652D, /* Range 0x6898 - 0x689A, array index: 0x040A */ 0x364D,0x365C,0x3650, /* Range 0x68B6 - 0x68B9, array index: 0x040D */ 0x364C,0x3652,0x365E,0x365F, /* Range 0x68FE - 0x6903, array index: 0x0411 */ 0x3C31,0x3C42,0x3C39,0x3C3B,0x3C34,0x3C2F, /* Range 0x6A29 - 0x6A2D, array index: 0x0417 */ 0x4C5E,0x4C59,INVALC,0x4C61,0x6530, /* Range 0x6AB0 - 0x6AB2, array index: 0x041C */ 0x5777,0x5821,0x5776, /* Range 0x6ABC - 0x6AC1, array index: 0x041F */ 0x577E,INVALC,0x5779,0x5823,0x577D,0x577A, /* Range 0x6AD4 - 0x6AD8, array index: 0x0425 */ 0x5A45,0x5A4E,INVALC,0x5A47,0x5A4D, /* Range 0x6AFD - 0x6B01, array index: 0x042A */ 0x5E35,0x5E34,0x5E33,INVALC,0x5E37, /* Range 0x6B1B - 0x6B1D, array index: 0x042F */ 0x6140,0x6165,0x6141, /* Range 0x6B26 - 0x6B2B, array index: 0x0432 */ 0x2953,0x2954,INVALC,0x6269,0x2D3C,0x3166, /* Range 0x6B68 - 0x6B74, array index: 0x0438 */ 0x2955,0x2956,INVALC,0x2D3D,0x3168,INVALC,0x3C49,0x3C47, INVALC,0x417E,INVALC,0x4221,0x4753, /* Range 0x6C9E - 0x6CA2, array index: 0x0445 */ 0x264E,0x2652,0x265C,0x2659,0x2656, /* Range 0x6D13 - 0x6D15, array index: 0x044A */ 0x2D49,0x2D47,0x2D4D, /* Range 0x6D5B - 0x6D5D, array index: 0x044D */ 0x3179,0x3226,0x3176, /* Range 0x6D71 - 0x6D73, array index: 0x0450 */ 0x3222,0x3225,0x3172, /* Range 0x6D99 - 0x6D9B, array index: 0x0453 */ 0x317D,0x317B,0x317C, /* Range 0x6DFE - 0x6E0C, array index: 0x0456 */ 0x3C5D,0x3728,INVALC,0x3726,0x3723,INVALC,0x3670,INVALC, 0x3677,0x3724,0x3676,0x3725,0x3679,INVALC,0x367D, /* Range 0x6ED9 - 0x6EDD, array index: 0x0465 */ 0x4244,0x423E,0x4247,INVALC,0x423D, /* Range 0x6F48 - 0x6F4C, array index: 0x046A */ 0x6544,0x6545,0x4766,INVALC,0x6543, /* Range 0x6FD6 - 0x6FDA, array index: 0x046F */ 0x5530,0x552F,INVALC,0x5535,0x5536, /* Range 0x702C - 0x702E, array index: 0x0474 */ 0x5A53,0x654A,0x6549, /* Range 0x7087 - 0x7090, array index: 0x0477 */ 0x2974,0x2970,0x2975,INVALC,0x296F,0x2979,0x2976,INVALC, 0x2972,0x2971, /* Range 0x70A2 - 0x70AA, array index: 0x0481 */ 0x2D5C,0x2D5A,INVALC,0x2D58,0x626A,0x2D65,0x2D62,INVALC, 0x2D5F, /* Range 0x712A - 0x712D, array index: 0x048A */ 0x3C6F,0x3C7A,0x3C72,0x3D21, /* Range 0x7133 - 0x713F, array index: 0x048E */ 0x3C7B,0x3C79,0x3C71,INVALC,0x3C73,0x3C77,0x6553,INVALC, 0x6554,INVALC,0x6555,INVALC,0x6552, /* Range 0x7174 - 0x7177, array index: 0x049B */ 0x4253,0x6557,0x6558,0x6556, /* Range 0x718B - 0x718E, array index: 0x049F */ 0x476A,0x476D,0x476B,0x4768, /* Range 0x71E9 - 0x71EB, array index: 0x04A3 */ 0x553E,0x5543,0x5540, /* Range 0x720E - 0x7218, array index: 0x04A6 */ 0x655F,0x5C56,INVALC,0x5C58,0x5C55,INVALC,INVALC,0x5A58, 0x5C53,0x5C57,0x6561, /* Range 0x7264 - 0x7268, array index: 0x04B1 */ 0x2664,0x2A21,0x2A22,INVALC,0x2A23, /* Range 0x7328 - 0x732F, array index: 0x04B6 */ 0x3D2E,INVALC,0x3D29,0x3D2B,0x3D2A,INVALC,0x4261,0x3D2D, /* Range 0x7346 - 0x7348, array index: 0x04BE */ 0x4262,0x6562,0x6563, /* Range 0x7353 - 0x7355, array index: 0x04C1 */ 0x4778,0x477A,0x4777, /* Range 0x73CE - 0x73D0, array index: 0x04C4 */ 0x2D7E,0x2D79,0x2D7C, /* Range 0x7414 - 0x7419, array index: 0x04C7 */ 0x3D36,0x3D3A,INVALC,0x3D2F,0x3D3B,0x3D32, /* Range 0x7438 - 0x743E, array index: 0x04CD */ 0x3D33,0x3D3C,INVALC,0x6566,0x3D37,0x4268,0x4275, /* Range 0x7445 - 0x7449, array index: 0x04D4 */ 0x4274,INVALC,0x426E,0x4266,0x4271, /* Range 0x74C7 - 0x74D3, array index: 0x04D9 */ 0x5A5C,0x5A5D,0x5A5B,INVALC,INVALC,0x5C5E,0x5C5C,0x5C5F, INVALC,0x5C5D,0x5C60,INVALC,0x5E3D, /* Range 0x7555 - 0x7558, array index: 0x04E6 */ 0x324E,0x324D,0x3250,0x324F, /* Range 0x76D5 - 0x76D9, array index: 0x04EA */ 0x3750,0x3752,0x3751,INVALC,0x3D4F, /* Range 0x773F - 0x7743, array index: 0x04EF */ 0x3262,0x3757,INVALC,0x3D56,0x3D53, /* Range 0x7774 - 0x777B, array index: 0x04F4 */ 0x4833,0x4836,0x4835,0x4834,0x4838,INVALC,0x483B,0x483D, /* Range 0x7807 - 0x780B, array index: 0x04FC */ 0x2E3B,0x2E3E,INVALC,0x2E37,0x2E3A, /* Range 0x7906 - 0x790D, array index: 0x0501 */ 0x5843,0x583E,0x5840,INVALC,0x583F,0x583C,INVALC,0x5842, /* Range 0x7983 - 0x7989, array index: 0x0509 */ 0x4339,0x3D63,INVALC,0x6578,0x4848,INVALC,0x4847, /* Range 0x799D - 0x799F, array index: 0x0510 */ 0x4D50,0x4D51,0x4D4F, /* Range 0x79C3 - 0x79C7, array index: 0x0513 */ 0x2A3E,0x2A3D,INVALC,0x2A3F,0x2A42, /* Range 0x79D7 - 0x79DB, array index: 0x0518 */ 0x2E43,INVALC,0x3274,0x3273,0x3279, /* Range 0x79F0 - 0x79F5, array index: 0x051D */ 0x327C,0x3769,0x3767,0x376B,INVALC,0x376A, /* Range 0x7A29 - 0x7A2D, array index: 0x0523 */ 0x484B,0x484D,INVALC,0x4850,0x484F, /* Range 0x7ACC - 0x7AD5, array index: 0x0528 */ 0x267E,0x2721,INVALC,0x2A47,0x2E4E,INVALC,0x2E4F,0x2E4D, 0x2E4B,0x2E4C, /* Range 0x7ADA - 0x7ADD, array index: 0x0532 */ 0x3323,0x3326,0x3327,0x3324, /* Range 0x7AF0 - 0x7AF5, array index: 0x0536 */ 0x4855,0x5230,0x5569,0x556A,INVALC,0x5849, /* Range 0x7B41 - 0x7B43, array index: 0x053C */ 0x3D7B,0x3D78,0x3D75, /* Range 0x7C99 - 0x7C9C, array index: 0x053F */ 0x377E,0x3821,0x383E,0x3822, /* Range 0x7CC2 - 0x7CC9, array index: 0x0543 */ 0x4D6F,0x4D71,0x4D6D,INVALC,0x4D70,0x4D73,INVALC,0x4D72, /* Range 0x7D74 - 0x7D78, array index: 0x054B */ 0x3E24,0x3E35,0x3E33,INVALC,0x4367, /* Range 0x7D87 - 0x7D8B, array index: 0x0550 */ 0x4366,INVALC,0x4369,0x4360,0x4362, /* Range 0x7D95 - 0x7D99, array index: 0x0555 */ 0x4364,INVALC,0x4368,0x436A,0x4363, /* Range 0x7DCD - 0x7DD3, array index: 0x055A */ 0x4871,INVALC,0x4873,0x6629,0x486B,INVALC,0x662B, /* Range 0x7DFC - 0x7E02, array index: 0x0561 */ 0x4E28,0x4E29,0x4E25,0x4E2C,0x4E27,0x4D7E,0x4D7D, /* Range 0x805F - 0x806B, array index: 0x0568 */ 0x4926,0x3E3B,0x4925,INVALC,0x6630,INVALC,0x4E34,0x4E36, INVALC,0x4E37,INVALC,0x4E35,0x4E38, /* Range 0x807A - 0x807C, array index: 0x0575 */ 0x5C70,0x5C71,0x5C72, /* Range 0x80A4 - 0x80A8, array index: 0x0578 */ 0x2A56,INVALC,0x2A5B,0x2A58,0x2A4F, /* Range 0x8140 - 0x8142, array index: 0x057D */ 0x3E43,0x3E45,0x3E41, /* Range 0x8192 - 0x8196, array index: 0x0580 */ 0x4E3B,0x4E3D,0x4E39,INVALC,0x4E3C, /* Range 0x8218 - 0x821A, array index: 0x0585 */ 0x524A,0x5868,0x5A79, /* Range 0x8414 - 0x8418, array index: 0x0588 */ 0x3E58,INVALC,0x3E5D,0x3E56,0x3E4E, /* Range 0x8492 - 0x8496, array index: 0x058D */ 0x4935,0x4944,INVALC,0x4933,0x4938, /* Range 0x8501 - 0x8505, array index: 0x0592 */ 0x4E40,INVALC,0x4E4C,0x4E46,0x4E54, /* Range 0x8533 - 0x8535, array index: 0x0597 */ 0x4E4D,0x4E4E,0x4E52, /* Range 0x8845 - 0x8847, array index: 0x059A */ 0x386A,0x3E6A,0x3E69, /* Range 0x8A9B - 0x8A9F, array index: 0x059D */ 0x495E,0x4962,0x496B,INVALC,0x4968, /* Range 0x8AB1 - 0x8AB7, array index: 0x05A2 */ 0x4E67,INVALC,0x4E72,0x4E70,0x4E6E,INVALC,0x4E6C, /* Range 0x8C51 - 0x8C53, array index: 0x05A9 */ 0x5D34,0x664D,0x6221, /* Range 0x8D82 - 0x8D88, array index: 0x05AC */ 0x3F39,0x3F34,INVALC,INVALC,0x3F37,0x3F30,0x3F33, /* Range 0x8EAD - 0x8EB9, array index: 0x05B3 */ 0x393F,INVALC,0x3940,0x3F40,0x4473,INVALC,0x497D,0x497C, INVALC,0x4F30,0x4F32,0x4F2F,0x4F31, /* Range 0x8F9D - 0x8FA7, array index: 0x05C0 */ 0x3F4B,0x4477,INVALC,0x4478,0x4A21,0x4A22,INVALC,0x4F37, 0x5327,INVALC,0x5326, /* Range 0x9028 - 0x902C, array index: 0x05CB */ 0x3F4F,0x3F50,0x3F4D,0x3F4C,0x3F51, /* Range 0x91DE - 0x91E0, array index: 0x05D0 */ 0x342F,0x342E,0x3431, /* Range 0x9220 - 0x9222, array index: 0x05D3 */ 0x3F5E,0x6659,0x3F63, /* Range 0x92AD - 0x92B1, array index: 0x05D6 */ 0x4A32,0x4A37,INVALC,0x672A,0x4A31, /* Range 0x92DA - 0x92DC, array index: 0x05DB */ 0x4F4B,0x4F4E,0x4F44, /* Range 0x92F3 - 0x92F6, array index: 0x05DE */ 0x4F4D,0x665B,0x665C,0x4A30, /* Range 0x9330 - 0x9332, array index: 0x05E2 */ 0x533C,0x5339,0x533A, /* Range 0x9372 - 0x9374, array index: 0x05E5 */ 0x5662,0x5663,0x565F, /* Range 0x93BB - 0x93BE, array index: 0x05E8 */ 0x5945,0x6661,0x6662,0x6660, /* Range 0x93E9 - 0x93F4, array index: 0x05EC */ 0x5B41,0x5B42,0x5B4E,INVALC,0x5B47,INVALC,0x6665,INVALC, 0x6663,0x6664,0x5D41,0x5E6A, /* Range 0x941A - 0x9424, array index: 0x05F8 */ 0x5D44,0x5D45,0x5D47,INVALC,0x5D42,0x5D3A,INVALC,INVALC, 0x6666,0x6667,0x6668, /* Range 0x9458 - 0x945C, array index: 0x0603 */ 0x6431,INVALC,0x6055,0x6054,0x6056, /* Range 0x9465 - 0x9467, array index: 0x0608 */ 0x6057,0x666A,0x6669, /* Range 0x96B5 - 0x96B7, array index: 0x060B */ 0x5D49,0x2A7D,0x5349, /* Range 0x96EC - 0x96EE, array index: 0x060E */ 0x3F7E,0x3F7C,0x3F7B, /* Range 0x9733 - 0x9737, array index: 0x0611 */ 0x5D4C,0x5D4E,INVALC,0x5E72,0x5E71, /* Range 0x97B1 - 0x97B5, array index: 0x0616 */ 0x5B5F,0x5B5D,INVALC,0x5B5E,0x5B60, /* Range 0x983C - 0x9842, array index: 0x061B */ 0x535B,0x535F,INVALC,0x595B,0x5726,INVALC,0x637B, /* Range 0x9854 - 0x9856, array index: 0x0622 */ 0x5956,0x5958,0x5B65, /* Range 0x986C - 0x986E, array index: 0x0625 */ 0x605D,0x605E,0x605C, /* Range 0x99B6 - 0x99B8, array index: 0x0628 */ 0x4A63,0x4A62,0x4A66, /* Range 0x99BC - 0x99C0, array index: 0x062B */ 0x4A61,INVALC,0x4A60,0x4A6C,0x4A64, /* Range 0x9AE4 - 0x9AEA, array index: 0x0630 */ 0x4A6F,0x4A73,INVALC,INVALC,0x4A71,0x4A70,0x4A72, /* Range 0x9B8B - 0x9B8F, array index: 0x0637 */ 0x537C,0x5421,INVALC,0x5425,0x537D, /* Range 0x9BCB - 0x9BCD, array index: 0x063C */ 0x5976,0x5975,0x5743, /* Range 0x9BFB - 0x9C04, array index: 0x063F */ 0x5D67,0x5D69,INVALC,0x5D6A,0x5D74,0x5D75,INVALC,0x5D6E, INVALC,0x5D68, /* Range 0x9CEB - 0x9CEF, array index: 0x0649 */ 0x4566,0x2F42,INVALC,0x4568,0x4567, /* Range 0x9EAA - 0x9EAC, array index: 0x064E */ 0x502F,0x502E,0x543A, /* Range 0x9EC4 - 0x9EC6, array index: 0x0651 */ 0x396A,0x543C,0x543B, /* Range 0x9F02 - 0x9F05, array index: 0x0654 */ 0x5A29,0x5C2D,0x5C2E,0x5F3C, /* Unranged codes (197 codes) */ /* Array index: 0x0658 */ 0x4E04,0x2126, /* Array index: 0x0658 */ 0x4E05,0x2125, /* Array index: 0x0658 */ 0x4E28,0x2121, /* Array index: 0x0658 */ 0x4E2A,0x212C, /* Array index: 0x0658 */ 0x4E36,0x2122, /* Array index: 0x0658 */ 0x4E3D,0x2740, /* Array index: 0x0658 */ 0x4E3F,0x2123, /* Array index: 0x0658 */ 0x4E46,0x2130, /* Array index: 0x0658 */ 0x4E49,0x212E, /* Array index: 0x0658 */ 0x4E54,0x2345, /* Array index: 0x0658 */ 0x4E57,0x2B22, /* Array index: 0x0658 */ 0x4E62,0x2146, /* Array index: 0x0658 */ 0x4E63,0x2145, /* Array index: 0x0658 */ 0x4E68,0x2264, /* Array index: 0x0658 */ 0x4E71,0x2440, /* Array index: 0x0658 */ 0x4E79,0x2B23, /* Array index: 0x0658 */ 0x4E80,0x396C, /* Array index: 0x0658 */ 0x4E81,0x396E, /* Array index: 0x0658 */ 0x4E85,0x2124, /* Array index: 0x0658 */ 0x4E87,0x212D, /* Array index: 0x0658 */ 0x4E89,0x2265, /* Array index: 0x0658 */ 0x4E8F,0x2131, /* Array index: 0x0658 */ 0x4E97,0x216C, /* Array index: 0x0658 */ 0x4E98,0x2266, /* Array index: 0x0658 */ 0x4E9C,0x2442, /* Array index: 0x0658 */ 0x4E9D,0x2742, /* Array index: 0x0658 */ 0x4EA3,0x2147, /* Array index: 0x0658 */ 0x4EB7,0x4033, /* Array index: 0x0658 */ 0x4EBC,0x2132, /* Array index: 0x0658 */ 0x4EBE,0x2133, /* Array index: 0x0658 */ 0x4EC5,0x2149, /* Array index: 0x0658 */ 0x4ECC,0x214C, /* Array index: 0x0658 */ 0x4ECE,0x214B, /* Array index: 0x0658 */ 0x4ECF,0x214A, /* Array index: 0x0658 */ 0x4EE0,0x216D, /* Array index: 0x0658 */ 0x4EE6,0x2172, /* Array index: 0x0658 */ 0x4EE7,0x2170, /* Array index: 0x0658 */ 0x4EEE,0x226F, /* Array index: 0x0658 */ 0x4EEF,0x2268, /* Array index: 0x0658 */ 0x4F03,0x226D, /* Array index: 0x0658 */ 0x4F06,0x226C, /* Array index: 0x0658 */ 0x4F07,0x2274, /* Array index: 0x0658 */ 0x4F16,0x2270, /* Array index: 0x0658 */ 0x4F17,0x2277, /* Array index: 0x0658 */ 0x4F1A,0x2275, /* Array index: 0x0658 */ 0x4F1C,0x2273, /* Array index: 0x0658 */ 0x4F28,0x2272, /* Array index: 0x0658 */ 0x4F31,0x2450, /* Array index: 0x0658 */ 0x4F32,0x2448, /* Array index: 0x0658 */ 0x4F35,0x244F, /* Array index: 0x0658 */ 0x4F37,0x2446, /* Array index: 0x0658 */ 0x4F39,0x2445, /* Array index: 0x0658 */ 0x4F40,0x244E, /* Array index: 0x0658 */ 0x4F42,0x2449, /* Array index: 0x0658 */ 0x4F44,0x244B, /* Array index: 0x0658 */ 0x4F45,0x2443, /* Array index: 0x0658 */ 0x4F4A,0x2444, /* Array index: 0x0658 */ 0x4F4B,0x244C, /* Array index: 0x0658 */ 0x4F66,0x6448, /* Array index: 0x0658 */ 0x4F68,0x6449, /* Array index: 0x0658 */ 0x4F6D,0x2747, /* Array index: 0x0658 */ 0x4F72,0x274F, /* Array index: 0x0658 */ 0x4F8A,0x2744, /* Array index: 0x0658 */ 0x4F8C,0x2751, /* Array index: 0x0658 */ 0x4F8E,0x2748, /* Array index: 0x0658 */ 0x4F93,0x2743, /* Array index: 0x0658 */ 0x4FB0,0x2B2D, /* Array index: 0x0658 */ 0x4FB1,0x2B2E, /* Array index: 0x0658 */ 0x4FB4,0x2B36, /* Array index: 0x0658 */ 0x4FB8,0x2B2C, /* Array index: 0x0658 */ 0x4FBD,0x6263, /* Array index: 0x0658 */ 0x4FBE,0x2B2B, /* Array index: 0x0658 */ 0x4FC6,0x2B32, /* Array index: 0x0658 */ 0x4FC8,0x2B2F, /* Array index: 0x0658 */ 0x4FCC,0x2B33, /* Array index: 0x0658 */ 0x4FD2,0x2B28, /* Array index: 0x0658 */ 0x4FD5,0x2B29, /* Array index: 0x0658 */ 0x4FE3,0x2B35, /* Array index: 0x0658 */ 0x4FE5,0x2B34, /* Array index: 0x0658 */ 0x4FE7,0x644A, /* Array index: 0x0658 */ 0x4FF0,0x2F48, /* Array index: 0x0658 */ 0x4FF2,0x2F4D, /* Array index: 0x0658 */ 0x5008,0x2F4F, /* Array index: 0x0658 */ 0x5010,0x2F53, /* Array index: 0x0658 */ 0x501D,0x2F45, /* Array index: 0x0658 */ 0x5024,0x2F4E, /* Array index: 0x0658 */ 0x502E,0x2F51, /* Array index: 0x0658 */ 0x5032,0x2F43, /* Array index: 0x0658 */ 0x5036,0x2F50, /* Array index: 0x0658 */ 0x5038,0x2F54, /* Array index: 0x0658 */ 0x5039,0x2F55, /* Array index: 0x0658 */ 0x503F,0x644B, /* Array index: 0x0658 */ 0x5042,0x343C, /* Array index: 0x0658 */ 0x5044,0x343F, /* Array index: 0x0658 */ 0x5050,0x3444, /* Array index: 0x0658 */ 0x5052,0x3441, /* Array index: 0x0658 */ 0x5054,0x3442, /* Array index: 0x0658 */ 0x5056,0x2F57, /* Array index: 0x0658 */ 0x5058,0x3447, /* Array index: 0x0658 */ 0x5059,0x343D, /* Array index: 0x0658 */ 0x5066,0x3440, /* Array index: 0x0658 */ 0x506C,0x344B, /* Array index: 0x0658 */ 0x5071,0x3443, /* Array index: 0x0658 */ 0x5081,0x3975, /* Array index: 0x0658 */ 0x5088,0x3971, /* Array index: 0x0658 */ 0x5089,0x3972, /* Array index: 0x0658 */ 0x508F,0x396F, /* Array index: 0x0658 */ 0x5097,0x3970, /* Array index: 0x0658 */ 0x50A6,0x644D, /* Array index: 0x0658 */ 0x50AA,0x4039, /* Array index: 0x0658 */ 0x50AB,0x403C, /* Array index: 0x0658 */ 0x50B9,0x403A, /* Array index: 0x0658 */ 0x50BC,0x4037, /* Array index: 0x0658 */ 0x50C3,0x403D, /* Array index: 0x0658 */ 0x50CC,0x4036, /* Array index: 0x0658 */ 0x50CD,0x403E, /* Array index: 0x0658 */ 0x50D0,0x456B, /* Array index: 0x0658 */ 0x50D2,0x634C, /* Array index: 0x0658 */ 0x50D8,0x456E, /* Array index: 0x0658 */ 0x50D9,0x456C, /* Array index: 0x0658 */ 0x50DC,0x456D, /* Array index: 0x0658 */ 0x50EB,0x4571, /* Array index: 0x0658 */ 0x50F4,0x4574, /* Array index: 0x0658 */ 0x50F7,0x4B29, /* Array index: 0x0658 */ 0x50FC,0x4B2B, /* Array index: 0x0658 */ 0x5101,0x4B2D, /* Array index: 0x0658 */ 0x5116,0x5031, /* Array index: 0x0658 */ 0x511B,0x5035, /* Array index: 0x0658 */ 0x511D,0x5030, /* Array index: 0x0658 */ 0x511E,0x5034, /* Array index: 0x0658 */ 0x5127,0x5441, /* Array index: 0x0658 */ 0x5128,0x5440, /* Array index: 0x0658 */ 0x512B,0x5033, /* Array index: 0x0658 */ 0x512F,0x5752, /* Array index: 0x0658 */ 0x5136,0x5C32, /* Array index: 0x0658 */ 0x513E,0x606F, /* Array index: 0x0658 */ 0x514A,0x2278, /* Array index: 0x0658 */ 0x514E,0x2454, /* Array index: 0x0658 */ 0x5150,0x2453, /* Array index: 0x0658 */ 0x5151,0x2451, /* Array index: 0x0658 */ 0x5156,0x2752, /* Array index: 0x0658 */ 0x5160,0x3976, /* Array index: 0x0658 */ 0x5164,0x5E25, /* Array index: 0x0658 */ 0x5166,0x2134, /* Array index: 0x0658 */ 0x516A,0x2B37, /* Array index: 0x0658 */ 0x5172,0x227A, /* Array index: 0x0658 */ 0x5179,0x2E7B, /* Array index: 0x0658 */ 0x517E,0x403F, /* Array index: 0x0658 */ 0x517F,0x6453, /* Array index: 0x0658 */ 0x518B,0x2178, /* Array index: 0x0658 */ 0x518C,0x2179, /* Array index: 0x0658 */ 0x5190,0x2755, /* Array index: 0x0658 */ 0x5196,0x2128, /* Array index: 0x0658 */ 0x5199,0x217A, /* Array index: 0x0658 */ 0x519D,0x2457, /* Array index: 0x0658 */ 0x519F,0x2B39, /* Array index: 0x0658 */ 0x51A1,0x2F5B, /* Array index: 0x0658 */ 0x51A3,0x2F59, /* Array index: 0x0658 */ 0x51A6,0x2F5A, /* Array index: 0x0658 */ 0x51A8,0x344D, /* Array index: 0x0658 */ 0x51B8,0x245A, /* Array index: 0x0658 */ 0x51C7,0x2F5E, /* Array index: 0x0658 */ 0x51C9,0x2F5F, /* Array index: 0x0658 */ 0x51D6,0x397E, /* Array index: 0x0658 */ 0x51DF,0x5442, /* Array index: 0x0658 */ 0x51E8,0x2322, /* Array index: 0x0658 */ 0x51EC,0x245B, /* Array index: 0x0658 */ 0x51ED,0x2759, /* Array index: 0x0658 */ 0x51F4,0x457A, /* Array index: 0x0658 */ 0x51FE,0x275A, /* Array index: 0x0658 */ 0x5204,0x2136, /* Array index: 0x0658 */ 0x5205,0x2152, /* Array index: 0x0658 */ 0x520B,0x217D, /* Array index: 0x0658 */ 0x520F,0x2325, /* Array index: 0x0658 */ 0x5214,0x2324, /* Array index: 0x0658 */ 0x5215,0x2326, /* Array index: 0x0658 */ 0x5218,0x2327, /* Array index: 0x0658 */ 0x521F,0x245F, /* Array index: 0x0658 */ 0x5220,0x2461, /* Array index: 0x0658 */ 0x5223,0x245C, /* Array index: 0x0658 */ 0x5226,0x245E, /* Array index: 0x0658 */ 0x5227,0x245D, /* Array index: 0x0658 */ 0x522B,0x2460, /* Array index: 0x0658 */ 0x522F,0x275B, /* Array index: 0x0658 */ 0x5234,0x275E, /* Array index: 0x0658 */ 0x5239,0x275F, /* Array index: 0x0658 */ 0x523C,0x275D, /* Array index: 0x0658 */ 0x523E,0x644F, /* Array index: 0x0658 */ 0x5245,0x2B3F, /* Array index: 0x0658 */ 0x5248,0x2B40, /* Array index: 0x0658 */ 0x524F,0x2B43, /* Array index: 0x0658 */ 0x5253,0x2F68, /* Array index: 0x0658 */ 0x5257,0x2F65, /* Array index: 0x0658 */ 0x5259,0x2F62, /* Array index: 0x0658 */ 0x5260,0x2F60, /* Array index: 0x0658 */ 0x5270,0x3A23, /* Array index: 0x0658 */ 0x5273,0x3A21, /* Array index: 0x0658 */ 0x5276,0x3451, /* Array index: 0x0658 */ 0x5279,0x4041, /* Array index: 0x0658 */ 0x527E,0x4040, /* Array index: 0x0658 */ 0x5286,0x4B31, /* Array index: 0x0658 */ 0x528E,0x4B32, /* Array index: 0x0658 */ 0x5290,0x5036, /* Array index: 0x0658 */ 0x5294,0x5037, /* Array index: 0x0658 */ 0x52A8,0x2328, /* Array index: 0x0658 */ 0x52B9,0x2760, /* Array index: 0x0658 */ 0x52BD,0x625A, /* Array index: 0x0658 */ 0x52BF,0x2762, /* Array index: 0x0658 */ 0x52C4,0x2B48, /* Array index: 0x0658 */ 0x52C5,0x2B46, /* Array index: 0x0658 */ 0x52CA,0x2B47, /* Array index: 0x0658 */ 0x52D4,0x3452, /* Array index: 0x0658 */ 0x52E0,0x4045, /* Array index: 0x0658 */ 0x52E1,0x4044, /* Array index: 0x0658 */ 0x52E7,0x4046, /* Array index: 0x0658 */ 0x52EA,0x4621, /* Array index: 0x0658 */ 0x52ED,0x457E, /* Array index: 0x0658 */ 0x52EE,0x4B33, /* Array index: 0x0658 */ 0x52F2,0x4D2C, /* Array index: 0x0658 */ 0x52FD,0x2155, /* Array index: 0x0658 */ 0x5300,0x2156, /* Array index: 0x0658 */ 0x5303,0x2223, /* Array index: 0x0658 */ 0x5304,0x2222, /* Array index: 0x0658 */ 0x5307,0x2224, /* Array index: 0x0658 */ 0x5314,0x5038, /* Array index: 0x0658 */ 0x531E,0x2226, /* Array index: 0x0658 */ 0x5324,0x6450, /* Array index: 0x0658 */ 0x5325,0x2465, /* Array index: 0x0658 */ 0x5327,0x2B49, /* Array index: 0x0658 */ 0x5346,0x2159, /* Array index: 0x0658 */ 0x534B,0x232A, /* Array index: 0x0658 */ 0x534F,0x232B, /* Array index: 0x0658 */ 0x5350,0x232D, /* Array index: 0x0658 */ 0x5355,0x2763, /* Array index: 0x0658 */ 0x5358,0x2B4A, /* Array index: 0x0658 */ 0x535D,0x215A, /* Array index: 0x0658 */ 0x535F,0x2227, /* Array index: 0x0658 */ 0x5365,0x6451, /* Array index: 0x0658 */ 0x5367,0x2A5C, /* Array index: 0x0658 */ 0x5369,0x212A, /* Array index: 0x0658 */ 0x536D,0x2228, /* Array index: 0x0658 */ 0x5374,0x2467, /* Array index: 0x0658 */ 0x5376,0x2765, /* Array index: 0x0658 */ 0x537A,0x2766, /* Array index: 0x0658 */ 0x537D,0x2B4B, /* Array index: 0x0658 */ 0x5380,0x4047, /* Array index: 0x0658 */ 0x5386,0x215B, /* Array index: 0x0658 */ 0x5389,0x2229, /* Array index: 0x0658 */ 0x538B,0x232F, /* Array index: 0x0658 */ 0x5393,0x2767, /* Array index: 0x0658 */ 0x539B,0x6452, /* Array index: 0x0658 */ 0x53A0,0x3454, /* Array index: 0x0658 */ 0x53AE,0x4625, /* Array index: 0x0658 */ 0x53B0,0x4626, /* Array index: 0x0658 */ 0x53B1,0x4B35, /* Array index: 0x0658 */ 0x53B3,0x5445, /* Array index: 0x0658 */ 0x53B6,0x212B, /* Array index: 0x0658 */ 0x53B7,0x215C, /* Array index: 0x0658 */ 0x53BA,0x222A, /* Array index: 0x0658 */ 0x53BE,0x2331, /* Array index: 0x0658 */ 0x53CC,0x215E, /* Array index: 0x0658 */ 0x53CE,0x2160, /* Array index: 0x0658 */ 0x53D0,0x222B, /* Array index: 0x0658 */ 0x53D2,0x2333, /* Array index: 0x0658 */ 0x53D5,0x276B, /* Array index: 0x0658 */ 0x53E0,0x404B, /* Array index: 0x0658 */ 0x53F4,0x2231, /* Array index: 0x0658 */ 0x53F6,0x222D, /* Array index: 0x0658 */ 0x53F7,0x222E, /* Array index: 0x0658 */ 0x53F9,0x222F, /* Array index: 0x0658 */ 0x53FF,0x2335, /* Array index: 0x0658 */ 0x5400,0x2337, /* Array index: 0x0658 */ 0x5405,0x2339, /* Array index: 0x0658 */ 0x5413,0x233A, /* Array index: 0x0658 */ 0x5415,0x233B, /* Array index: 0x0658 */ 0x5416,0x2334, /* Array index: 0x0658 */ 0x541A,0x2476, /* Array index: 0x0658 */ 0x542F,0x2524, /* Array index: 0x0658 */ 0x5432,0x2477, /* Array index: 0x0658 */ 0x5434,0x247B, /* Array index: 0x0658 */ 0x543A,0x2470, /* Array index: 0x0658 */ 0x543F,0x2521, /* Array index: 0x0658 */ 0x5444,0x2473, /* Array index: 0x0658 */ 0x545A,0x2523, /* Array index: 0x0658 */ 0x545F,0x276E, /* Array index: 0x0658 */ 0x5469,0x2774, /* Array index: 0x0658 */ 0x546A,0x2778, /* Array index: 0x0658 */ 0x546D,0x2775, /* Array index: 0x0658 */ 0x5479,0x2771, /* Array index: 0x0658 */ 0x5485,0x276C, /* Array index: 0x0658 */ 0x5489,0x2770, /* Array index: 0x0658 */ 0x548A,0x2779, /* Array index: 0x0658 */ 0x548F,0x2773, /* Array index: 0x0658 */ 0x5493,0x276F, /* Array index: 0x0658 */ 0x5494,0x2777, /* Array index: 0x0658 */ 0x549E,0x2B5C, /* Array index: 0x0658 */ 0x549F,0x2B5D, /* Array index: 0x0658 */ 0x54A3,0x2B57, /* Array index: 0x0658 */ 0x54A4,0x2B59, /* Array index: 0x0658 */ 0x54B2,0x2B5B, /* Array index: 0x0658 */ 0x54B4,0x2B54, /* Array index: 0x0658 */ 0x54B5,0x2B5E, /* Array index: 0x0658 */ 0x54B9,0x2B51, /* Array index: 0x0658 */ 0x54D0,0x2B53, /* Array index: 0x0658 */ 0x54DA,0x2B58, /* Array index: 0x0658 */ 0x54EF,0x2F77, /* Array index: 0x0658 */ 0x54F0,0x3021, /* Array index: 0x0658 */ 0x54F9,0x2F79, /* Array index: 0x0658 */ 0x5500,0x2F7B, /* Array index: 0x0658 */ 0x5502,0x2F7A, /* Array index: 0x0658 */ 0x550D,0x2F73, /* Array index: 0x0658 */ 0x5513,0x2F76, /* Array index: 0x0658 */ 0x5518,0x2F7E, /* Array index: 0x0658 */ 0x5519,0x3025, /* Array index: 0x0658 */ 0x5528,0x6721, /* Array index: 0x0658 */ 0x5529,0x345F, /* Array index: 0x0658 */ 0x552B,0x3468, /* Array index: 0x0658 */ 0x553A,0x3466, /* Array index: 0x0658 */ 0x553F,0x3467, /* Array index: 0x0658 */ 0x5549,0x345B, /* Array index: 0x0658 */ 0x554C,0x3458, /* Array index: 0x0658 */ 0x5553,0x3462, /* Array index: 0x0658 */ 0x5554,0x3461, /* Array index: 0x0658 */ 0x555D,0x345E, /* Array index: 0x0658 */ 0x5568,0x3459, /* Array index: 0x0658 */ 0x556B,0x6457, /* Array index: 0x0658 */ 0x557A,0x3A3C, /* Array index: 0x0658 */ 0x5585,0x3A31, /* Array index: 0x0658 */ 0x5586,0x3A38, /* Array index: 0x0658 */ 0x5596,0x3A2E, /* Array index: 0x0658 */ 0x5597,0x3A2A, /* Array index: 0x0658 */ 0x559B,0x3A33, /* Array index: 0x0658 */ 0x559E,0x3A40, /* Array index: 0x0658 */ 0x55A0,0x3A34, /* Array index: 0x0658 */ 0x55A9,0x3A42, /* Array index: 0x0658 */ 0x55AF,0x3A3B, /* Array index: 0x0658 */ 0x55B4,0x3A2F, /* Array index: 0x0658 */ 0x55BA,0x6723, /* Array index: 0x0658 */ 0x55C1,0x4051, /* Array index: 0x0658 */ 0x55D7,0x404E, /* Array index: 0x0658 */ 0x55DE,0x3A2B, /* Array index: 0x0658 */ 0x55EA,0x404C, /* Array index: 0x0658 */ 0x55EE,0x6725, /* Array index: 0x0658 */ 0x55F0,0x6724, /* Array index: 0x0658 */ 0x55F4,0x6458, /* Array index: 0x0658 */ 0x55F8,0x462E, /* Array index: 0x0658 */ 0x55FB,0x4628, /* Array index: 0x0658 */ 0x5603,0x4629, /* Array index: 0x0658 */ 0x5605,0x4636, /* Array index: 0x0658 */ 0x5607,0x462C, /* Array index: 0x0658 */ 0x560B,0x462A, /* Array index: 0x0658 */ 0x5611,0x4634, /* Array index: 0x0658 */ 0x5618,0x4633, /* Array index: 0x0658 */ 0x561E,0x4631, /* Array index: 0x0658 */ 0x5620,0x645A, /* Array index: 0x0658 */ 0x5622,0x6459, /* Array index: 0x0658 */ 0x5626,0x4650, /* Array index: 0x0658 */ 0x5628,0x4630, /* Array index: 0x0658 */ 0x562B,0x4B41, /* Array index: 0x0658 */ 0x562D,0x4B38, /* Array index: 0x0658 */ 0x5631,0x4B3D, /* Array index: 0x0658 */ 0x5637,0x4B44, /* Array index: 0x0658 */ 0x5644,0x4B3E, /* Array index: 0x0658 */ 0x5647,0x4B37, /* Array index: 0x0658 */ 0x564B,0x4B3B, /* Array index: 0x0658 */ 0x565F,0x503F, /* Array index: 0x0658 */ 0x5661,0x5040, /* Array index: 0x0658 */ 0x5667,0x503B, /* Array index: 0x0658 */ 0x567B,0x503D, /* Array index: 0x0658 */ 0x567D,0x5448, /* Array index: 0x0658 */ 0x5689,0x5449, /* Array index: 0x0658 */ 0x568A,0x5447, /* Array index: 0x0658 */ 0x5691,0x645D, /* Array index: 0x0658 */ 0x5692,0x645B, /* Array index: 0x0658 */ 0x5694,0x575B, /* Array index: 0x0658 */ 0x5696,0x575A, /* Array index: 0x0658 */ 0x569B,0x5758, /* Array index: 0x0658 */ 0x56AF,0x5A2D, /* Array index: 0x0658 */ 0x56B0,0x645E, /* Array index: 0x0658 */ 0x56C4,0x6728, /* Array index: 0x0658 */ 0x56C7,0x5F40, /* Array index: 0x0658 */ 0x56D2,0x6071, /* Array index: 0x0658 */ 0x56D8,0x2177, /* Array index: 0x0658 */ 0x56E3,0x233E, /* Array index: 0x0658 */ 0x56E6,0x252C, /* Array index: 0x0658 */ 0x56E9,0x2526, /* Array index: 0x0658 */ 0x56EC,0x252B, /* Array index: 0x0658 */ 0x56ED,0x252A, /* Array index: 0x0658 */ 0x56F6,0x2822, /* Array index: 0x0658 */ 0x56F8,0x277D, /* Array index: 0x0658 */ 0x5700,0x2B65, /* Array index: 0x0658 */ 0x5705,0x3027, /* Array index: 0x0658 */ 0x570E,0x3A44, /* Array index: 0x0658 */ 0x570F,0x3A43, /* Array index: 0x0658 */ 0x5715,0x4052, /* Array index: 0x0658 */ 0x5717,0x4637, /* Array index: 0x0658 */ 0x571D,0x5F41, /* Array index: 0x0658 */ 0x5721,0x2161, /* Array index: 0x0658 */ 0x5724,0x2234, /* Array index: 0x0658 */ 0x5727,0x6249, /* Array index: 0x0658 */ 0x5731,0x2341, /* Array index: 0x0658 */ 0x5732,0x2342, /* Array index: 0x0658 */ 0x5735,0x233F, /* Array index: 0x0658 */ 0x5736,0x2340, /* Array index: 0x0658 */ 0x573C,0x2531, /* Array index: 0x0658 */ 0x573D,0x253E, /* Array index: 0x0658 */ 0x573F,0x2530, /* Array index: 0x0658 */ 0x575F,0x2535, /* Array index: 0x0658 */ 0x5763,0x2825, /* Array index: 0x0658 */ 0x5765,0x2823, /* Array index: 0x0658 */ 0x5767,0x2826, /* Array index: 0x0658 */ 0x576E,0x2828, /* Array index: 0x0658 */ 0x5778,0x2829, /* Array index: 0x0658 */ 0x577F,0x282A, /* Array index: 0x0658 */ 0x5781,0x2824, /* Array index: 0x0658 */ 0x578A,0x6460, /* Array index: 0x0658 */ 0x5796,0x2B71, /* Array index: 0x0658 */ 0x579C,0x2B70, /* Array index: 0x0658 */ 0x57A1,0x2B6B, /* Array index: 0x0658 */ 0x57AC,0x2B66, /* Array index: 0x0658 */ 0x57B7,0x302A, /* Array index: 0x0658 */ 0x57BB,0x3030, /* Array index: 0x0658 */ 0x57BE,0x302F, /* Array index: 0x0658 */ 0x57C0,0x3038, /* Array index: 0x0658 */ 0x57CD,0x302B, /* Array index: 0x0658 */ 0x57D1,0x3036, /* Array index: 0x0658 */ 0x57DB,0x3032, /* Array index: 0x0658 */ 0x57DD,0x346E, /* Array index: 0x0658 */ 0x57DE,0x3471, /* Array index: 0x0658 */ 0x57E6,0x3472, /* Array index: 0x0658 */ 0x57E8,0x3474, /* Array index: 0x0658 */ 0x57EA,0x3469, /* Array index: 0x0658 */ 0x57EF,0x346B, /* Array index: 0x0658 */ 0x57FE,0x346F, /* Array index: 0x0658 */ 0x57FF,0x3475, /* Array index: 0x0658 */ 0x5803,0x3476, /* Array index: 0x0658 */ 0x580F,0x6461, /* Array index: 0x0658 */ 0x5812,0x6462, /* Array index: 0x0658 */ 0x5813,0x6463, /* Array index: 0x0658 */ 0x5818,0x3A4A, /* Array index: 0x0658 */ 0x581A,0x3A45, /* Array index: 0x0658 */ 0x581F,0x3A47, /* Array index: 0x0658 */ 0x5822,0x3A50, /* Array index: 0x0658 */ 0x5826,0x3A4C, /* Array index: 0x0658 */ 0x582B,0x6336, /* Array index: 0x0658 */ 0x583A,0x3A4E, /* Array index: 0x0658 */ 0x583C,0x3A49, /* Array index: 0x0658 */ 0x583E,0x3A4B, /* Array index: 0x0658 */ 0x5845,0x6337, /* Array index: 0x0658 */ 0x5847,0x6464, /* Array index: 0x0658 */ 0x5850,0x4057, /* Array index: 0x0658 */ 0x5856,0x405B, /* Array index: 0x0658 */ 0x585C,0x4056, /* Array index: 0x0658 */ 0x5872,0x4643, /* Array index: 0x0658 */ 0x5873,0x463E, /* Array index: 0x0658 */ 0x5877,0x4642, /* Array index: 0x0658 */ 0x5878,0x463C, /* Array index: 0x0658 */ 0x5884,0x463D, /* Array index: 0x0658 */ 0x588C,0x463A, /* Array index: 0x0658 */ 0x588D,0x4645, /* Array index: 0x0658 */ 0x5892,0x4638, /* Array index: 0x0658 */ 0x589B,0x6465, /* Array index: 0x0658 */ 0x58A2,0x4B46, /* Array index: 0x0658 */ 0x58A4,0x4B50, /* Array index: 0x0658 */ 0x58A7,0x4B51, /* Array index: 0x0658 */ 0x58AA,0x4B4B, /* Array index: 0x0658 */ 0x58AD,0x463F, /* Array index: 0x0658 */ 0x58B0,0x4B4D, /* Array index: 0x0658 */ 0x58B2,0x4B49, /* Array index: 0x0658 */ 0x58B4,0x4B4F, /* Array index: 0x0658 */ 0x58B5,0x4B4C, /* Array index: 0x0658 */ 0x58B7,0x4B47, /* Array index: 0x0658 */ 0x58BB,0x504A, /* Array index: 0x0658 */ 0x58C0,0x504B, /* Array index: 0x0658 */ 0x58C3,0x5048, /* Array index: 0x0658 */ 0x58C4,0x504C, /* Array index: 0x0658 */ 0x58CA,0x5049, /* Array index: 0x0658 */ 0x58CD,0x544B, /* Array index: 0x0658 */ 0x58D0,0x544C, /* Array index: 0x0658 */ 0x58DC,0x5A2F, /* Array index: 0x0658 */ 0x58E0,0x5A2E, /* Array index: 0x0658 */ 0x58E6,0x5E28, /* Array index: 0x0658 */ 0x58FB,0x3A52, /* Array index: 0x0658 */ 0x5910,0x4646, /* Array index: 0x0658 */ 0x5911,0x6560, /* Array index: 0x0658 */ 0x5918,0x2236, /* Array index: 0x0658 */ 0x591F,0x3479, /* Array index: 0x0658 */ 0x5923,0x405F, /* Array index: 0x0658 */ 0x5926,0x4B53, /* Array index: 0x0658 */ 0x5930,0x2238, /* Array index: 0x0658 */ 0x5932,0x2237, /* Array index: 0x0658 */ 0x5934,0x2239, /* Array index: 0x0658 */ 0x5936,0x2347, /* Array index: 0x0658 */ 0x593D,0x2549, /* Array index: 0x0658 */ 0x5952,0x2B7C, /* Array index: 0x0658 */ 0x595B,0x347B, /* Array index: 0x0658 */ 0x595D,0x347C, /* Array index: 0x0658 */ 0x595E,0x347D, /* Array index: 0x0658 */ 0x5963,0x3A53, /* Array index: 0x0658 */ 0x5964,0x3A54, /* Array index: 0x0658 */ 0x5966,0x4060, /* Array index: 0x0658 */ 0x5968,0x4061, /* Array index: 0x0658 */ 0x596C,0x4648, /* Array index: 0x0658 */ 0x5975,0x223B, /* Array index: 0x0658 */ 0x597A,0x234B, /* Array index: 0x0658 */ 0x5986,0x234D, /* Array index: 0x0658 */ 0x5989,0x2555, /* Array index: 0x0658 */ 0x598C,0x254C, /* Array index: 0x0658 */ 0x5994,0x254B, /* Array index: 0x0658 */ 0x599F,0x2551, /* Array index: 0x0658 */ 0x59AC,0x2841, /* Array index: 0x0658 */ 0x59AD,0x2833, /* Array index: 0x0658 */ 0x59B0,0x2838, /* Array index: 0x0658 */ 0x59B7,0x2845, /* Array index: 0x0658 */ 0x59B8,0x2840, /* Array index: 0x0658 */ 0x59BF,0x283D, /* Array index: 0x0658 */ 0x59C2,0x2837, /* Array index: 0x0658 */ 0x59C4,0x2835, /* Array index: 0x0658 */ 0x59C9,0x283F, /* Array index: 0x0658 */ 0x59D5,0x2C26, /* Array index: 0x0658 */ 0x59D7,0x2846, /* Array index: 0x0658 */ 0x59D9,0x2C2D, /* Array index: 0x0658 */ 0x59DF,0x2C21, /* Array index: 0x0658 */ 0x59E2,0x2C2C, /* Array index: 0x0658 */ 0x59E7,0x2C2E, /* Array index: 0x0658 */ 0x59EB,0x2C23, /* Array index: 0x0658 */ 0x59EF,0x2C24, /* Array index: 0x0658 */ 0x59F0,0x2C25, /* Array index: 0x0658 */ 0x59F8,0x2C2B, /* Array index: 0x0658 */ 0x59F9,0x2C29, /* Array index: 0x0658 */ 0x5A02,0x2C2A, /* Array index: 0x0658 */ 0x5A04,0x2C28, /* Array index: 0x0658 */ 0x5A0B,0x3040, /* Array index: 0x0658 */ 0x5A0D,0x2C27, /* Array index: 0x0658 */ 0x5A10,0x6270, /* Array index: 0x0658 */ 0x5A12,0x304F, /* Array index: 0x0658 */ 0x5A14,0x304A, /* Array index: 0x0658 */ 0x5A1A,0x304E, /* Array index: 0x0658 */ 0x5A1D,0x303E, /* Array index: 0x0658 */ 0x5A21,0x303B, /* Array index: 0x0658 */ 0x5A22,0x3045, /* Array index: 0x0658 */ 0x5A24,0x3048, /* Array index: 0x0658 */ 0x5A26,0x3052, /* Array index: 0x0658 */ 0x5A2F,0x304D, /* Array index: 0x0658 */ 0x5A31,0x304B, /* Array index: 0x0658 */ 0x5A3A,0x3528, /* Array index: 0x0658 */ 0x5A3B,0x3524, /* Array index: 0x0658 */ 0x5A3D,0x3531, /* Array index: 0x0658 */ 0x5A3F,0x3533, /* Array index: 0x0658 */ 0x5A45,0x352E, /* Array index: 0x0658 */ 0x5A4B,0x352A, /* Array index: 0x0658 */ 0x5A4E,0x352F, /* Array index: 0x0658 */ 0x5A4F,0x353B, /* Array index: 0x0658 */ 0x5A54,0x353A, /* Array index: 0x0658 */ 0x5A59,0x3539, /* Array index: 0x0658 */ 0x5A61,0x3527, /* Array index: 0x0658 */ 0x5A63,0x353C, /* Array index: 0x0658 */ 0x5A68,0x3530, /* Array index: 0x0658 */ 0x5A6B,0x352B, /* Array index: 0x0658 */ 0x5A6E,0x3529, /* Array index: 0x0658 */ 0x5A6F,0x3534, /* Array index: 0x0658 */ 0x5A71,0x3532, /* Array index: 0x0658 */ 0x5A73,0x3537, /* Array index: 0x0658 */ 0x5A75,0x3535, /* Array index: 0x0658 */ 0x5A79,0x3A75, /* Array index: 0x0658 */ 0x5A8D,0x3A7B, /* Array index: 0x0658 */ 0x5A91,0x3A66, /* Array index: 0x0658 */ 0x5A96,0x3A62, /* Array index: 0x0658 */ 0x5A98,0x3A5C, /* Array index: 0x0658 */ 0x5A99,0x3A5E, /* Array index: 0x0658 */ 0x5AA8,0x3A56, /* Array index: 0x0658 */ 0x5AAA,0x3A79, /* Array index: 0x0658 */ 0x5AAB,0x3A78, /* Array index: 0x0658 */ 0x5AC3,0x4067, /* Array index: 0x0658 */ 0x5AC5,0x4066, /* Array index: 0x0658 */ 0x5AE4,0x464C, /* Array index: 0x0658 */ 0x5AE7,0x464A, /* Array index: 0x0658 */ 0x5AEF,0x464F, /* Array index: 0x0658 */ 0x5AF0,0x4653, /* Array index: 0x0658 */ 0x5AFA,0x4B5C, /* Array index: 0x0658 */ 0x5AFC,0x4B58, /* Array index: 0x0658 */ 0x5AFE,0x4B54, /* Array index: 0x0658 */ 0x5B00,0x4B5E, /* Array index: 0x0658 */ 0x5B04,0x4B56, /* Array index: 0x0658 */ 0x5B06,0x4B5A, /* Array index: 0x0658 */ 0x5B0A,0x4B5B, /* Array index: 0x0658 */ 0x5B0D,0x4B5D, /* Array index: 0x0658 */ 0x5B0E,0x4B5F, /* Array index: 0x0658 */ 0x5B11,0x5050, /* Array index: 0x0658 */ 0x5B12,0x5053, /* Array index: 0x0658 */ 0x5B15,0x5051, /* Array index: 0x0658 */ 0x5B18,0x504F, /* Array index: 0x0658 */ 0x5B1C,0x5054, /* Array index: 0x0658 */ 0x5B1F,0x504E, /* Array index: 0x0658 */ 0x5B22,0x5056, /* Array index: 0x0658 */ 0x5B29,0x5450, /* Array index: 0x0658 */ 0x5B2B,0x544E, /* Array index: 0x0658 */ 0x5B31,0x5452, /* Array index: 0x0658 */ 0x5B33,0x544F, /* Array index: 0x0658 */ 0x5B35,0x5451, /* Array index: 0x0658 */ 0x5B42,0x5C36, /* Array index: 0x0658 */ 0x5B44,0x5C39, /* Array index: 0x0658 */ 0x5B46,0x5C3A, /* Array index: 0x0658 */ 0x5B49,0x5E29, /* Array index: 0x0658 */ 0x5B4A,0x5F42, /* Array index: 0x0658 */ 0x5B4F,0x6073, /* Array index: 0x0658 */ 0x5B60,0x2848, /* Array index: 0x0658 */ 0x5B66,0x625C, /* Array index: 0x0658 */ 0x5B67,0x646A, /* Array index: 0x0658 */ 0x5B6A,0x2C2F, /* Array index: 0x0658 */ 0x5B74,0x4071, /* Array index: 0x0658 */ 0x5B76,0x4072, /* Array index: 0x0658 */ 0x5B79,0x5057, /* Array index: 0x0658 */ 0x5B7C,0x5A34, /* Array index: 0x0658 */ 0x5B7E,0x5C3B, /* Array index: 0x0658 */ 0x5B80,0x213B, /* Array index: 0x0658 */ 0x5B82,0x223D, /* Array index: 0x0658 */ 0x5B86,0x2350, /* Array index: 0x0658 */ 0x5B8D,0x255A, /* Array index: 0x0658 */ 0x5B94,0x284C, /* Array index: 0x0658 */ 0x5B96,0x284A, /* Array index: 0x0658 */ 0x5BAB,0x2C32, /* Array index: 0x0658 */ 0x5BB7,0x3057, /* Array index: 0x0658 */ 0x5BBB,0x3056, /* Array index: 0x0658 */ 0x5BBC,0x3055, /* Array index: 0x0658 */ 0x5BC3,0x3541, /* Array index: 0x0658 */ 0x5BC8,0x353F, /* Array index: 0x0658 */ 0x5BD5,0x3A7E, /* Array index: 0x0658 */ 0x5BD7,0x4074, /* Array index: 0x0658 */ 0x5BF3,0x5A35, /* Array index: 0x0658 */ 0x5BF7,0x5E2A, /* Array index: 0x0658 */ 0x5BF9,0x223E, /* Array index: 0x0658 */ 0x5C05,0x3058, /* Array index: 0x0658 */ 0x5C06,0x3059, /* Array index: 0x0658 */ 0x5C13,0x624A, /* Array index: 0x0658 */ 0x5C14,0x223F, /* Array index: 0x0658 */ 0x5C18,0x2352, /* Array index: 0x0658 */ 0x5C19,0x2851, /* Array index: 0x0658 */ 0x5C1B,0x2C34, /* Array index: 0x0658 */ 0x5C1E,0x3B24, /* Array index: 0x0658 */ 0x5C20,0x4078, /* Array index: 0x0658 */ 0x5C21,0x6525, /* Array index: 0x0658 */ 0x5C2B,0x255F, /* Array index: 0x0658 */ 0x5C2F,0x2C35, /* Array index: 0x0658 */ 0x5C36,0x5454, /* Array index: 0x0658 */ 0x5C3D,0x2354, /* Array index: 0x0658 */ 0x5C49,0x2854, /* Array index: 0x0658 */ 0x5C4A,0x2855, /* Array index: 0x0658 */ 0x5C52,0x305A, /* Array index: 0x0658 */ 0x5C53,0x305B, /* Array index: 0x0658 */ 0x5C57,0x646B, /* Array index: 0x0658 */ 0x5C5B,0x3543, /* Array index: 0x0658 */ 0x5C5E,0x3B26, /* Array index: 0x0658 */ 0x5C5F,0x3B25, /* Array index: 0x0658 */ 0x5C61,0x3544, /* Array index: 0x0658 */ 0x5C6B,0x5A38, /* Array index: 0x0658 */ 0x5C77,0x646C, /* Array index: 0x0658 */ 0x5C78,0x2355, /* Array index: 0x0658 */ 0x5C80,0x235A, /* Array index: 0x0658 */ 0x5C84,0x2561, /* Array index: 0x0658 */ 0x5C85,0x2566, /* Array index: 0x0658 */ 0x5C8E,0x2562, /* Array index: 0x0658 */ 0x5C9C,0x2563, /* Array index: 0x0658 */ 0x5C9E,0x285D, /* Array index: 0x0658 */ 0x5CB4,0x285E, /* Array index: 0x0658 */ 0x5CC1,0x2858, /* Array index: 0x0658 */ 0x5CCD,0x2C3F, /* Array index: 0x0658 */ 0x5CD1,0x2C3B, /* Array index: 0x0658 */ 0x5CD5,0x646D, /* Array index: 0x0658 */ 0x5CDC,0x2C3C, /* Array index: 0x0658 */ 0x5CDD,0x2C42, /* Array index: 0x0658 */ 0x5CE1,0x2C3E, /* Array index: 0x0658 */ 0x5CE2,0x2C41, /* Array index: 0x0658 */ 0x5CE5,0x2C43, /* Array index: 0x0658 */ 0x5CE6,0x2C3D, /* Array index: 0x0658 */ 0x5CE9,0x3063, /* Array index: 0x0658 */ 0x5CEB,0x305F, /* Array index: 0x0658 */ 0x5CEF,0x3064, /* Array index: 0x0658 */ 0x5CF3,0x3061, /* Array index: 0x0658 */ 0x5CF5,0x3062, /* Array index: 0x0658 */ 0x5CFA,0x305E, /* Array index: 0x0658 */ 0x5CFC,0x6271, /* Array index: 0x0658 */ 0x5CFE,0x6272, /* Array index: 0x0658 */ 0x5D10,0x3551, /* Array index: 0x0658 */ 0x5D13,0x3552, /* Array index: 0x0658 */ 0x5D15,0x354F, /* Array index: 0x0658 */ 0x5D18,0x3555, /* Array index: 0x0658 */ 0x5D1C,0x3B2B, /* Array index: 0x0658 */ 0x5D21,0x3546, /* Array index: 0x0658 */ 0x5D2A,0x354E, /* Array index: 0x0658 */ 0x5D2C,0x354A, /* Array index: 0x0658 */ 0x5D2F,0x3554, /* Array index: 0x0658 */ 0x5D3B,0x3B36, /* Array index: 0x0658 */ 0x5D3E,0x3B28, /* Array index: 0x0658 */ 0x5D44,0x3B27, /* Array index: 0x0658 */ 0x5D46,0x3B37, /* Array index: 0x0658 */ 0x5D48,0x3B2A, /* Array index: 0x0658 */ 0x5D4D,0x3B2E, /* Array index: 0x0658 */ 0x5D4F,0x3B34, /* Array index: 0x0658 */ 0x5D53,0x3B33, /* Array index: 0x0658 */ 0x5D57,0x3B31, /* Array index: 0x0658 */ 0x5D5B,0x3B2D, /* Array index: 0x0658 */ 0x5D60,0x4121, /* Array index: 0x0658 */ 0x5D64,0x407C, /* Array index: 0x0658 */ 0x5D66,0x407A, /* Array index: 0x0658 */ 0x5D6D,0x4079, /* Array index: 0x0658 */ 0x5D6E,0x407D, /* Array index: 0x0658 */ 0x5D75,0x646E, /* Array index: 0x0658 */ 0x5D78,0x465C, /* Array index: 0x0658 */ 0x5D7B,0x4654, /* Array index: 0x0658 */ 0x5D83,0x4656, /* Array index: 0x0658 */ 0x5D96,0x4B6B, /* Array index: 0x0658 */ 0x5D98,0x4B67, /* Array index: 0x0658 */ 0x5D9B,0x4B69, /* Array index: 0x0658 */ 0x5DAB,0x505B, /* Array index: 0x0658 */ 0x5DB3,0x505A, /* Array index: 0x0658 */ 0x5DB6,0x6471, /* Array index: 0x0658 */ 0x5DB9,0x5457, /* Array index: 0x0658 */ 0x5DBB,0x5459, /* Array index: 0x0658 */ 0x5DBE,0x5455, /* Array index: 0x0658 */ 0x5DBF,0x6472, /* Array index: 0x0658 */ 0x5DC1,0x5762, /* Array index: 0x0658 */ 0x5DC4,0x5A39, /* Array index: 0x0658 */ 0x5DC8,0x5C3D, /* Array index: 0x0658 */ 0x5DCA,0x5C3C, /* Array index: 0x0658 */ 0x5DCC,0x5C3E, /* Array index: 0x0658 */ 0x5DD0,0x5E2D, /* Array index: 0x0658 */ 0x5DD3,0x5F43, /* Array index: 0x0658 */ 0x5DD7,0x6030, /* Array index: 0x0658 */ 0x5DDB,0x213C, /* Array index: 0x0658 */ 0x5DE3,0x3557, /* Array index: 0x0658 */ 0x5DE4,0x4B6C, /* Array index: 0x0658 */ 0x5DF5,0x2567, /* Array index: 0x0658 */ 0x5DF6,0x2860, /* Array index: 0x0658 */ 0x5DFA,0x2C45, /* Array index: 0x0658 */ 0x5DFB,0x2C44, /* Array index: 0x0658 */ 0x5E00,0x2163, /* Array index: 0x0658 */ 0x5E08,0x235C, /* Array index: 0x0658 */ 0x5E09,0x2568, /* Array index: 0x0658 */ 0x5E0B,0x256B, /* Array index: 0x0658 */ 0x5E12,0x2862, /* Array index: 0x0658 */ 0x5E13,0x2861, /* Array index: 0x0658 */ 0x5E1E,0x2C46, /* Array index: 0x0658 */ 0x5E2A,0x3066, /* Array index: 0x0658 */ 0x5E35,0x3559, /* Array index: 0x0658 */ 0x5E39,0x3558, /* Array index: 0x0658 */ 0x5E3A,0x355A, /* Array index: 0x0658 */ 0x5E42,0x3979, /* Array index: 0x0658 */ 0x5E52,0x465D, /* Array index: 0x0658 */ 0x5E5A,0x4B6D, /* Array index: 0x0658 */ 0x5E5E,0x4B70, /* Array index: 0x0658 */ 0x5E65,0x6473, /* Array index: 0x0658 */ 0x5E71,0x6677, /* Array index: 0x0658 */ 0x5E77,0x2863, /* Array index: 0x0658 */ 0x5E7A,0x213D, /* Array index: 0x0658 */ 0x5E7F,0x213E, /* Array index: 0x0658 */ 0x5E81,0x2247, /* Array index: 0x0658 */ 0x5E83,0x2248, /* Array index: 0x0658 */ 0x5E85,0x6678, /* Array index: 0x0658 */ 0x5E90,0x256E, /* Array index: 0x0658 */ 0x5E92,0x256D, /* Array index: 0x0658 */ 0x5E98,0x2865, /* Array index: 0x0658 */ 0x5E99,0x2867, /* Array index: 0x0658 */ 0x5E9D,0x2868, /* Array index: 0x0658 */ 0x5EA1,0x2C48, /* Array index: 0x0658 */ 0x5EA9,0x306C, /* Array index: 0x0658 */ 0x5EAF,0x306B, /* Array index: 0x0658 */ 0x5EBA,0x3561, /* Array index: 0x0658 */ 0x5EBB,0x3560, /* Array index: 0x0658 */ 0x5EBD,0x3B3F, /* Array index: 0x0658 */ 0x5EBF,0x3B40, /* Array index: 0x0658 */ 0x5EC0,0x3B3E, /* Array index: 0x0658 */ 0x5ECD,0x6474, /* Array index: 0x0658 */ 0x5ECF,0x4661, /* Array index: 0x0658 */ 0x5ED0,0x4660, /* Array index: 0x0658 */ 0x5EEA,0x505C, /* Array index: 0x0658 */ 0x5EED,0x6475, /* Array index: 0x0658 */ 0x5EF0,0x5C3F, /* Array index: 0x0658 */ 0x5EF4,0x213F, /* Array index: 0x0658 */ 0x5EF5,0x2361, /* Array index: 0x0658 */ 0x5F03,0x256F, /* Array index: 0x0658 */ 0x5F06,0x286D, /* Array index: 0x0658 */ 0x5F11,0x3B42, /* Array index: 0x0658 */ 0x5F1E,0x2571, /* Array index: 0x0658 */ 0x5F21,0x286E, /* Array index: 0x0658 */ 0x5F25,0x2870, /* Array index: 0x0658 */ 0x5F2F,0x2C4D, /* Array index: 0x0658 */ 0x5F32,0x306F, /* Array index: 0x0658 */ 0x5F34,0x3562, /* Array index: 0x0658 */ 0x5F3E,0x3B44, /* Array index: 0x0658 */ 0x5F42,0x4122, /* Array index: 0x0658 */ 0x5F4D,0x5763, /* Array index: 0x0658 */ 0x5F5A,0x4123, /* Array index: 0x0658 */ 0x5F5B,0x505E, /* Array index: 0x0658 */ 0x5F5D,0x5764, /* Array index: 0x0658 */ 0x5F60,0x6164, /* Array index: 0x0658 */ 0x5F61,0x2142, /* Array index: 0x0658 */ 0x5F63,0x2572, /* Array index: 0x0658 */ 0x5F66,0x2C50, /* Array index: 0x0658 */ 0x5F6E,0x4124, /* Array index: 0x0658 */ 0x5F72,0x5F45, /* Array index: 0x0658 */ 0x5F83,0x2876, /* Array index: 0x0658 */ 0x5F84,0x2875, /* Array index: 0x0658 */ 0x5F93,0x3071, /* Array index: 0x0658 */ 0x5F94,0x6476, /* Array index: 0x0658 */ 0x5F9A,0x6477, /* Array index: 0x0658 */ 0x5FA7,0x3B4B, /* Array index: 0x0658 */ 0x5FB3,0x4663, /* Array index: 0x0658 */ 0x5FB4,0x4664, /* Array index: 0x0658 */ 0x5FB8,0x4B72, /* Array index: 0x0658 */ 0x5FBA,0x6478, /* Array index: 0x0658 */ 0x5FC2,0x5E2F, /* Array index: 0x0658 */ 0x5FC7,0x224D, /* Array index: 0x0658 */ 0x5FC8,0x6251, /* Array index: 0x0658 */ 0x5FCA,0x224C, /* Array index: 0x0658 */ 0x5FCE,0x2578, /* Array index: 0x0658 */ 0x5FD3,0x2366, /* Array index: 0x0658 */ 0x5FDF,0x257B, /* Array index: 0x0658 */ 0x5FE6,0x2576, /* Array index: 0x0658 */ 0x5FE7,0x2574, /* Array index: 0x0658 */ 0x5FE9,0x287E, /* Array index: 0x0658 */ 0x5FEC,0x257C, /* Array index: 0x0658 */ 0x5FF0,0x2622, /* Array index: 0x0658 */ 0x5FF2,0x2621, /* Array index: 0x0658 */ 0x5FF6,0x257D, /* Array index: 0x0658 */ 0x5FF9,0x2623, /* Array index: 0x0658 */ 0x5FFC,0x257A, /* Array index: 0x0658 */ 0x5FFE,0x2575, /* Array index: 0x0658 */ 0x6007,0x2878, /* Array index: 0x0658 */ 0x6008,0x2922, /* Array index: 0x0658 */ 0x6018,0x6266, /* Array index: 0x0658 */ 0x6023,0x2C5A, /* Array index: 0x0658 */ 0x6030,0x2877, /* Array index: 0x0658 */ 0x6031,0x2C5B, /* Array index: 0x0658 */ 0x6036,0x287A, /* Array index: 0x0658 */ 0x603D,0x2921, /* Array index: 0x0658 */ 0x6048,0x6267, /* Array index: 0x0658 */ 0x604A,0x2C60, /* Array index: 0x0658 */ 0x604B,0x3079, /* Array index: 0x0658 */ 0x6056,0x307E, /* Array index: 0x0658 */ 0x605C,0x2C54, /* Array index: 0x0658 */ 0x6060,0x2C5F, /* Array index: 0x0658 */ 0x6061,0x2C61, /* Array index: 0x0658 */ 0x607C,0x2C5C, /* Array index: 0x0658 */ 0x607E,0x3076, /* Array index: 0x0658 */ 0x608B,0x3122, /* Array index: 0x0658 */ 0x6093,0x3125, /* Array index: 0x0658 */ 0x6098,0x3568, /* Array index: 0x0658 */ 0x6099,0x3074, /* Array index: 0x0658 */ 0x609E,0x3127, /* Array index: 0x0658 */ 0x60A1,0x3571, /* Array index: 0x0658 */ 0x60A4,0x3572, /* Array index: 0x0658 */ 0x60AE,0x3126, /* Array index: 0x0658 */ 0x60B3,0x3B54, /* Array index: 0x0658 */ 0x60D0,0x356A, /* Array index: 0x0658 */ 0x60D2,0x3B56, /* Array index: 0x0658 */ 0x60D6,0x3B55, /* Array index: 0x0658 */ 0x60D7,0x356E, /* Array index: 0x0658 */ 0x60DE,0x3579, /* Array index: 0x0658 */ 0x60E3,0x3B58, /* Array index: 0x0658 */ 0x60E5,0x3B59, /* Array index: 0x0658 */ 0x60E7,0x3576, /* Array index: 0x0658 */ 0x60E9,0x3B5A, /* Array index: 0x0658 */ 0x60EA,0x3B4D, /* Array index: 0x0658 */ 0x60EE,0x3574, /* Array index: 0x0658 */ 0x60FD,0x3B5E, /* Array index: 0x0658 */ 0x6107,0x3B4F, /* Array index: 0x0658 */ 0x610C,0x3B51, /* Array index: 0x0658 */ 0x6111,0x3B5D, /* Array index: 0x0658 */ 0x6119,0x412B, /* Array index: 0x0658 */ 0x6125,0x6479, /* Array index: 0x0658 */ 0x612A,0x4129, /* Array index: 0x0658 */ 0x6130,0x4127, /* Array index: 0x0658 */ 0x6131,0x412C, /* Array index: 0x0658 */ 0x6133,0x466F, /* Array index: 0x0658 */ 0x6138,0x466E, /* Array index: 0x0658 */ 0x613A,0x4128, /* Array index: 0x0658 */ 0x613C,0x466C, /* Array index: 0x0658 */ 0x613D,0x412E, /* Array index: 0x0658 */ 0x6142,0x466D, /* Array index: 0x0658 */ 0x6143,0x412A, /* Array index: 0x0658 */ 0x6150,0x647A, /* Array index: 0x0658 */ 0x6157,0x4B73, /* Array index: 0x0658 */ 0x6159,0x4B7E, /* Array index: 0x0658 */ 0x615C,0x4B74, /* Array index: 0x0658 */ 0x6160,0x4671, /* Array index: 0x0658 */ 0x6164,0x4B7C, /* Array index: 0x0658 */ 0x6169,0x4672, /* Array index: 0x0658 */ 0x616F,0x466A, /* Array index: 0x0658 */ 0x6178,0x4C21, /* Array index: 0x0658 */ 0x617B,0x4668, /* Array index: 0x0658 */ 0x617D,0x4673, /* Array index: 0x0658 */ 0x6181,0x466B, /* Array index: 0x0658 */ 0x618F,0x4B7A, /* Array index: 0x0658 */ 0x619C,0x4C29, /* Array index: 0x0658 */ 0x619E,0x4C25, /* Array index: 0x0658 */ 0x61A3,0x4B79, /* Array index: 0x0658 */ 0x61A6,0x4B75, /* Array index: 0x0658 */ 0x61B7,0x5061, /* Array index: 0x0658 */ 0x61B9,0x5063, /* Array index: 0x0658 */ 0x61BB,0x506A, /* Array index: 0x0658 */ 0x61BD,0x5064, /* Array index: 0x0658 */ 0x61C0,0x5066, /* Array index: 0x0658 */ 0x61C4,0x506C, /* Array index: 0x0658 */ 0x61D3,0x6679, /* Array index: 0x0658 */ 0x61E2,0x545B, /* Array index: 0x0658 */ 0x61F3,0x5765, /* Array index: 0x0658 */ 0x6202,0x5F46, /* Array index: 0x0658 */ 0x6205,0x613E, /* Array index: 0x0658 */ 0x620F,0x236B, /* Array index: 0x0658 */ 0x6213,0x2625, /* Array index: 0x0658 */ 0x6218,0x2C63, /* Array index: 0x0658 */ 0x621E,0x3B64, /* Array index: 0x0658 */ 0x6228,0x4676, /* Array index: 0x0658 */ 0x622C,0x4675, /* Array index: 0x0658 */ 0x622F,0x4C2C, /* Array index: 0x0658 */ 0x6231,0x506D, /* Array index: 0x0658 */ 0x6245,0x3129, /* Array index: 0x0658 */ 0x624F,0x2250, /* Array index: 0x0658 */ 0x6257,0x236F, /* Array index: 0x0658 */ 0x625D,0x236C, /* Array index: 0x0658 */ 0x625F,0x236D, /* Array index: 0x0658 */ 0x6267,0x236E, /* Array index: 0x0658 */ 0x6275,0x2639, /* Array index: 0x0658 */ 0x6278,0x262E, /* Array index: 0x0658 */ 0x6282,0x262A, /* Array index: 0x0658 */ 0x6285,0x2637, /* Array index: 0x0658 */ 0x628B,0x262F, /* Array index: 0x0658 */ 0x628D,0x2636, /* Array index: 0x0658 */ 0x62B2,0x2926, /* Array index: 0x0658 */ 0x62B7,0x2928, /* Array index: 0x0658 */ 0x62BA,0x2925, /* Array index: 0x0658 */ 0x62C0,0x2934, /* Array index: 0x0658 */ 0x62C1,0x2932, /* Array index: 0x0658 */ 0x62C5,0x2933, /* Array index: 0x0658 */ 0x62D5,0x292E, /* Array index: 0x0658 */ 0x62E4,0x2929, /* Array index: 0x0658 */ 0x62EA,0x2C6D, /* Array index: 0x0658 */ 0x6304,0x2C6F, /* Array index: 0x0658 */ 0x6305,0x2C70, /* Array index: 0x0658 */ 0x6317,0x2C6C, /* Array index: 0x0658 */ 0x6319,0x3132, /* Array index: 0x0658 */ 0x631B,0x3133, /* Array index: 0x0658 */ 0x631F,0x2C6B, /* Array index: 0x0658 */ 0x6321,0x2C6E, /* Array index: 0x0658 */ 0x632E,0x312C, /* Array index: 0x0658 */ 0x6330,0x312F, /* Array index: 0x0658 */ 0x6331,0x3135, /* Array index: 0x0658 */ 0x6335,0x3138, /* Array index: 0x0658 */ 0x6337,0x3137, /* Array index: 0x0658 */ 0x633F,0x313C, /* Array index: 0x0658 */ 0x6352,0x312E, /* Array index: 0x0658 */ 0x6353,0x3139, /* Array index: 0x0658 */ 0x6360,0x647C, /* Array index: 0x0658 */ 0x6364,0x647D, /* Array index: 0x0658 */ 0x6366,0x3631, /* Array index: 0x0658 */ 0x636A,0x3627, /* Array index: 0x0658 */ 0x636C,0x3629, /* Array index: 0x0658 */ 0x6373,0x3626, /* Array index: 0x0658 */ 0x6374,0x3632, /* Array index: 0x0658 */ 0x6379,0x3622, /* Array index: 0x0658 */ 0x637E,0x357C, /* Array index: 0x0658 */ 0x637F,0x362B, /* Array index: 0x0658 */ 0x6386,0x3623, /* Array index: 0x0658 */ 0x638B,0x357D, /* Array index: 0x0658 */ 0x6393,0x3624, /* Array index: 0x0658 */ 0x63B2,0x362D, /* Array index: 0x0658 */ 0x63B6,0x647E, /* Array index: 0x0658 */ 0x63BA,0x362E, /* Array index: 0x0658 */ 0x63BF,0x3B71, /* Array index: 0x0658 */ 0x63C1,0x3B70, /* Array index: 0x0658 */ 0x63D1,0x3B73, /* Array index: 0x0658 */ 0x63DE,0x3B67, /* Array index: 0x0658 */ 0x63E2,0x3B66, /* Array index: 0x0658 */ 0x63E6,0x3B68, /* Array index: 0x0658 */ 0x63F7,0x3B72, /* Array index: 0x0658 */ 0x63F8,0x3B6D, /* Array index: 0x0658 */ 0x63FA,0x6339, /* Array index: 0x0658 */ 0x63FE,0x3B6F, /* Array index: 0x0658 */ 0x6403,0x6521, /* Array index: 0x0658 */ 0x6407,0x4149, /* Array index: 0x0658 */ 0x6408,0x4132, /* Array index: 0x0658 */ 0x6411,0x413A, /* Array index: 0x0658 */ 0x6419,0x4138, /* Array index: 0x0658 */ 0x641D,0x413E, /* Array index: 0x0658 */ 0x6429,0x413D, /* Array index: 0x0658 */ 0x6431,0x4136, /* Array index: 0x0658 */ 0x6432,0x4133, /* Array index: 0x0658 */ 0x6446,0x4144, /* Array index: 0x0658 */ 0x6447,0x4145, /* Array index: 0x0658 */ 0x6449,0x6676, /* Array index: 0x0658 */ 0x644C,0x4678, /* Array index: 0x0658 */ 0x644F,0x4728, /* Array index: 0x0658 */ 0x6462,0x4721, /* Array index: 0x0658 */ 0x6464,0x472A, /* Array index: 0x0658 */ 0x646A,0x4723, /* Array index: 0x0658 */ 0x6471,0x4722, /* Array index: 0x0658 */ 0x647C,0x467B, /* Array index: 0x0658 */ 0x647E,0x4729, /* Array index: 0x0658 */ 0x6480,0x4C2D, /* Array index: 0x0658 */ 0x6481,0x4726, /* Array index: 0x0658 */ 0x6483,0x4C35, /* Array index: 0x0658 */ 0x6486,0x4C38, /* Array index: 0x0658 */ 0x648D,0x4C30, /* Array index: 0x0658 */ 0x648E,0x4C2F, /* Array index: 0x0658 */ 0x6491,0x4C3B, /* Array index: 0x0658 */ 0x6494,0x4C31, /* Array index: 0x0658 */ 0x649B,0x4C2E, /* Array index: 0x0658 */ 0x64A1,0x4C3E, /* Array index: 0x0658 */ 0x64A7,0x4C3F, /* Array index: 0x0658 */ 0x64A8,0x4C34, /* Array index: 0x0658 */ 0x64AA,0x4C3D, /* Array index: 0x0658 */ 0x64AF,0x4C3A, /* Array index: 0x0658 */ 0x64B4,0x4C39, /* Array index: 0x0658 */ 0x64B6,0x6522, /* Array index: 0x0658 */ 0x64B9,0x4C37, /* Array index: 0x0658 */ 0x64C0,0x5070, /* Array index: 0x0658 */ 0x64C6,0x4C32, /* Array index: 0x0658 */ 0x64C8,0x5077, /* Array index: 0x0658 */ 0x64D1,0x5076, /* Array index: 0x0658 */ 0x64D3,0x506F, /* Array index: 0x0658 */ 0x64D5,0x5079, /* Array index: 0x0658 */ 0x64DC,0x5075, /* Array index: 0x0658 */ 0x64DF,0x5464, /* Array index: 0x0658 */ 0x64E1,0x5467, /* Array index: 0x0658 */ 0x64E5,0x576B, /* Array index: 0x0658 */ 0x64E7,0x576D, /* Array index: 0x0658 */ 0x64EA,0x576C, /* Array index: 0x0658 */ 0x64EE,0x5469, /* Array index: 0x0658 */ 0x64F6,0x576A, /* Array index: 0x0658 */ 0x64F9,0x5770, /* Array index: 0x0658 */ 0x6505,0x576E, /* Array index: 0x0658 */ 0x6508,0x5A3B, /* Array index: 0x0658 */ 0x650A,0x5A3C, /* Array index: 0x0658 */ 0x650B,0x5A3A, /* Array index: 0x0658 */ 0x6511,0x5E31, /* Array index: 0x0658 */ 0x651A,0x6523, /* Array index: 0x0658 */ 0x651E,0x5F4A, /* Array index: 0x0658 */ 0x651F,0x5F4B, /* Array index: 0x0658 */ 0x6527,0x5F49, /* Array index: 0x0658 */ 0x6528,0x6032, /* Array index: 0x0658 */ 0x6531,0x2C72, /* Array index: 0x0658 */ 0x6534,0x2167, /* Array index: 0x0658 */ 0x6535,0x2168, /* Array index: 0x0658 */ 0x6540,0x2C74, /* Array index: 0x0658 */ 0x6542,0x2C76, /* Array index: 0x0658 */ 0x6544,0x2C73, /* Array index: 0x0658 */ 0x654B,0x313D, /* Array index: 0x0658 */ 0x654D,0x3637, /* Array index: 0x0658 */ 0x654E,0x3636, /* Array index: 0x0658 */ 0x655A,0x3634, /* Array index: 0x0658 */ 0x656B,0x414B, /* Array index: 0x0658 */ 0x6585,0x5C41, /* Array index: 0x0658 */ 0x6588,0x2558, /* Array index: 0x0658 */ 0x6589,0x2939, /* Array index: 0x0658 */ 0x658B,0x3140, /* Array index: 0x0658 */ 0x658D,0x3638, /* Array index: 0x0658 */ 0x658E,0x3639, /* Array index: 0x0658 */ 0x659A,0x3142, /* Array index: 0x0658 */ 0x65A6,0x293B, /* Array index: 0x0658 */ 0x65AD,0x363A, /* Array index: 0x0658 */ 0x65B5,0x546B, /* Array index: 0x0658 */ 0x65BA,0x293C, /* Array index: 0x0658 */ 0x65BE,0x2C77, /* Array index: 0x0658 */ 0x65C7,0x363C, /* Array index: 0x0658 */ 0x65C9,0x363F, /* Array index: 0x0658 */ 0x65CA,0x363D, /* Array index: 0x0658 */ 0x65D1,0x3B79, /* Array index: 0x0658 */ 0x65DC,0x5A3F, /* Array index: 0x0658 */ 0x65E0,0x2169, /* Array index: 0x0658 */ 0x65E3,0x3641, /* Array index: 0x0658 */ 0x65E4,0x4150, /* Array index: 0x0658 */ 0x65E7,0x2251, /* Array index: 0x0658 */ 0x65EA,0x2373, /* Array index: 0x0658 */ 0x65EB,0x2372, /* Array index: 0x0658 */ 0x65F6,0x263D, /* Array index: 0x0658 */ 0x65F9,0x625E, /* Array index: 0x0658 */ 0x65FE,0x2943, /* Array index: 0x0658 */ 0x65FF,0x293E, /* Array index: 0x0658 */ 0x6601,0x2942, /* Array index: 0x0658 */ 0x661E,0x2D23, /* Array index: 0x0658 */ 0x6623,0x2C7C, /* Array index: 0x0658 */ 0x6629,0x2C79, /* Array index: 0x0658 */ 0x662C,0x2C7D, /* Array index: 0x0658 */ 0x6630,0x2D21, /* Array index: 0x0658 */ 0x6637,0x2D24, /* Array index: 0x0658 */ 0x6638,0x2D25, /* Array index: 0x0658 */ 0x663B,0x2D22, /* Array index: 0x0658 */ 0x663C,0x2C37, /* Array index: 0x0658 */ 0x6640,0x3146, /* Array index: 0x0658 */ 0x6644,0x314C, /* Array index: 0x0658 */ 0x6646,0x3144, /* Array index: 0x0658 */ 0x6648,0x3149, /* Array index: 0x0658 */ 0x664B,0x3148, /* Array index: 0x0658 */ 0x664D,0x314D, /* Array index: 0x0658 */ 0x664E,0x3145, /* Array index: 0x0658 */ 0x6650,0x3143, /* Array index: 0x0658 */ 0x6657,0x3642, /* Array index: 0x0658 */ 0x6660,0x314B, /* Array index: 0x0658 */ 0x6663,0x3644, /* Array index: 0x0658 */ 0x6667,0x3645, /* Array index: 0x0658 */ 0x6669,0x3C26, /* Array index: 0x0658 */ 0x666B,0x3B7D, /* Array index: 0x0658 */ 0x666D,0x3C25, /* Array index: 0x0658 */ 0x6673,0x3C23, /* Array index: 0x0658 */ 0x667D,0x3B7C, /* Array index: 0x0658 */ 0x667F,0x3B7E, /* Array index: 0x0658 */ 0x6681,0x3C24, /* Array index: 0x0658 */ 0x668E,0x415B, /* Array index: 0x0658 */ 0x668F,0x4156, /* Array index: 0x0658 */ 0x6692,0x4159, /* Array index: 0x0658 */ 0x6693,0x4151, /* Array index: 0x0658 */ 0x669A,0x4734, /* Array index: 0x0658 */ 0x669C,0x4735, /* Array index: 0x0658 */ 0x66AC,0x4C44, /* Array index: 0x0658 */ 0x66AD,0x4C46, /* Array index: 0x0658 */ 0x66B3,0x4C41, /* Array index: 0x0658 */ 0x66B6,0x4C40, /* Array index: 0x0658 */ 0x66BC,0x4C43, /* Array index: 0x0658 */ 0x66BF,0x507D, /* Array index: 0x0658 */ 0x66C1,0x5123, /* Array index: 0x0658 */ 0x66C3,0x507A, /* Array index: 0x0658 */ 0x66C5,0x507E, /* Array index: 0x0658 */ 0x66DF,0x5A43, /* Array index: 0x0658 */ 0x66E1,0x5A42, /* Array index: 0x0658 */ 0x66E2,0x6526, /* Array index: 0x0658 */ 0x66E5,0x5C42, /* Array index: 0x0658 */ 0x66E7,0x5C43, /* Array index: 0x0658 */ 0x66EF,0x613F, /* Array index: 0x0658 */ 0x66F5,0x2641, /* Array index: 0x0658 */ 0x6702,0x6527, /* Array index: 0x0658 */ 0x6706,0x5124, /* Array index: 0x0658 */ 0x670C,0x2945, /* Array index: 0x0658 */ 0x670E,0x2D27, /* Array index: 0x0658 */ 0x6711,0x6632, /* Array index: 0x0658 */ 0x6716,0x3648, /* Array index: 0x0658 */ 0x6719,0x3647, /* Array index: 0x0658 */ 0x671A,0x3646, /* Array index: 0x0658 */ 0x671E,0x3C29, /* Array index: 0x0658 */ 0x6724,0x5126, /* Array index: 0x0658 */ 0x6725,0x6633, /* Array index: 0x0658 */ 0x672F,0x2252, /* Array index: 0x0658 */ 0x6732,0x2377, /* Array index: 0x0658 */ 0x6736,0x2378, /* Array index: 0x0658 */ 0x6737,0x2375, /* Array index: 0x0658 */ 0x6744,0x2648, /* Array index: 0x0658 */ 0x674A,0x2649, /* Array index: 0x0658 */ 0x6752,0x2645, /* Array index: 0x0658 */ 0x6754,0x2644, /* Array index: 0x0658 */ 0x6758,0x2647, /* Array index: 0x0658 */ 0x675B,0x2642, /* Array index: 0x0658 */ 0x6761,0x264A, /* Array index: 0x0658 */ 0x6765,0x6257, /* Array index: 0x0658 */ 0x676B,0x2947, /* Array index: 0x0658 */ 0x6780,0x2952, /* Array index: 0x0658 */ 0x6782,0x2949, /* Array index: 0x0658 */ 0x6788,0x625F, /* Array index: 0x0658 */ 0x678A,0x294A, /* Array index: 0x0658 */ 0x678F,0x294F, /* Array index: 0x0658 */ 0x6796,0x2948, /* Array index: 0x0658 */ 0x67AC,0x6529, /* Array index: 0x0658 */ 0x67B1,0x2D36, /* Array index: 0x0658 */ 0x67BC,0x2D2E, /* Array index: 0x0658 */ 0x67BF,0x2D30, /* Array index: 0x0658 */ 0x67C7,0x2D2D, /* Array index: 0x0658 */ 0x67E8,0x2D2A, /* Array index: 0x0658 */ 0x67F9,0x2951, /* Array index: 0x0658 */ 0x67FB,0x2D34, /* Array index: 0x0658 */ 0x67FE,0x2D32, /* Array index: 0x0658 */ 0x6800,0x2D39, /* Array index: 0x0658 */ 0x6801,0x2D37, /* Array index: 0x0658 */ 0x6805,0x2D38, /* Array index: 0x0658 */ 0x6806,0x652B, /* Array index: 0x0658 */ 0x6810,0x652A, /* Array index: 0x0658 */ 0x6815,0x315D, /* Array index: 0x0658 */ 0x6819,0x3157, /* Array index: 0x0658 */ 0x681B,0x3153, /* Array index: 0x0658 */ 0x681E,0x315B, /* Array index: 0x0658 */ 0x6827,0x315F, /* Array index: 0x0658 */ 0x682C,0x3156, /* Array index: 0x0658 */ 0x6830,0x3163, /* Array index: 0x0658 */ 0x6836,0x3154, /* Array index: 0x0658 */ 0x6837,0x314F, /* Array index: 0x0658 */ 0x683E,0x315A, /* Array index: 0x0658 */ 0x6847,0x3159, /* Array index: 0x0658 */ 0x6852,0x2D2F, /* Array index: 0x0658 */ 0x685E,0x652C, /* Array index: 0x0658 */ 0x686C,0x3655, /* Array index: 0x0658 */ 0x6870,0x3660, /* Array index: 0x0658 */ 0x6873,0x364E, /* Array index: 0x0658 */ 0x687A,0x365B, /* Array index: 0x0658 */ 0x6884,0x3657, /* Array index: 0x0658 */ 0x688E,0x3651, /* Array index: 0x0658 */ 0x6895,0x365A, /* Array index: 0x0658 */ 0x689E,0x364B, /* Array index: 0x0658 */ 0x68A5,0x3654, /* Array index: 0x0658 */ 0x68A6,0x3478, /* Array index: 0x0658 */ 0x68C1,0x3656, /* Array index: 0x0658 */ 0x68C3,0x3C45, /* Array index: 0x0658 */ 0x68C5,0x3C41, /* Array index: 0x0658 */ 0x68CA,0x3C38, /* Array index: 0x0658 */ 0x68CF,0x3C3E, /* Array index: 0x0658 */ 0x68DB,0x3653, /* Array index: 0x0658 */ 0x68E2,0x3C3D, /* Array index: 0x0658 */ 0x68E5,0x3C32, /* Array index: 0x0658 */ 0x68ED,0x3C2A, /* Array index: 0x0658 */ 0x6909,0x3C37, /* Array index: 0x0658 */ 0x6918,0x3C3C, /* Array index: 0x0658 */ 0x691C,0x3C44, /* Array index: 0x0658 */ 0x691E,0x3C33, /* Array index: 0x0658 */ 0x6929,0x652F, /* Array index: 0x0658 */ 0x692C,0x652E, /* Array index: 0x0658 */ 0x692E,0x3C40, /* Array index: 0x0658 */ 0x6931,0x4165, /* Array index: 0x0658 */ 0x6936,0x4177, /* Array index: 0x0658 */ 0x693E,0x4168, /* Array index: 0x0658 */ 0x6943,0x416B, /* Array index: 0x0658 */ 0x6946,0x415D, /* Array index: 0x0658 */ 0x6947,0x4175, /* Array index: 0x0658 */ 0x694D,0x4173, /* Array index: 0x0658 */ 0x6950,0x4174, /* Array index: 0x0658 */ 0x6955,0x416F, /* Array index: 0x0658 */ 0x6961,0x4179, /* Array index: 0x0658 */ 0x6964,0x4178, /* Array index: 0x0658 */ 0x6967,0x4176, /* Array index: 0x0658 */ 0x6973,0x416D, /* Array index: 0x0658 */ 0x697C,0x416A, /* Array index: 0x0658 */ 0x697D,0x417B, /* Array index: 0x0658 */ 0x6985,0x4172, /* Array index: 0x0658 */ 0x698F,0x473A, /* Array index: 0x0658 */ 0x6992,0x473D, /* Array index: 0x0658 */ 0x6998,0x4751, /* Array index: 0x0658 */ 0x699D,0x474E, /* Array index: 0x0658 */ 0x699F,0x4746, /* Array index: 0x0658 */ 0x69A2,0x4747, /* Array index: 0x0658 */ 0x69B2,0x473E, /* Array index: 0x0658 */ 0x69BA,0x6352, /* Array index: 0x0658 */ 0x69C0,0x4743, /* Array index: 0x0658 */ 0x69C5,0x473B, /* Array index: 0x0658 */ 0x69C8,0x473C, /* Array index: 0x0658 */ 0x69D1,0x4745, /* Array index: 0x0658 */ 0x69D2,0x4748, /* Array index: 0x0658 */ 0x69D5,0x474D, /* Array index: 0x0658 */ 0x69D6,0x4744, /* Array index: 0x0658 */ 0x69D8,0x4C54, /* Array index: 0x0658 */ 0x69E1,0x474C, /* Array index: 0x0658 */ 0x69E3,0x4742, /* Array index: 0x0658 */ 0x69E9,0x4C64, /* Array index: 0x0658 */ 0x69EA,0x4C60, /* Array index: 0x0658 */ 0x69EF,0x4C4F, /* Array index: 0x0658 */ 0x69F0,0x4C51, /* Array index: 0x0658 */ 0x69F9,0x4C5F, /* Array index: 0x0658 */ 0x69FA,0x4C57, /* Array index: 0x0658 */ 0x6A0B,0x4C4D, /* Array index: 0x0658 */ 0x6A0C,0x4C50, /* Array index: 0x0658 */ 0x6A0E,0x4C47, /* Array index: 0x0658 */ 0x6A10,0x4C5B, /* Array index: 0x0658 */ 0x6A12,0x4C56, /* Array index: 0x0658 */ 0x6A1A,0x4C4A, /* Array index: 0x0658 */ 0x6A1C,0x4C49, /* Array index: 0x0658 */ 0x6A22,0x4C52, /* Array index: 0x0658 */ 0x6A24,0x4C62, /* Array index: 0x0658 */ 0x6A33,0x512C, /* Array index: 0x0658 */ 0x6A36,0x513C, /* Array index: 0x0658 */ 0x6A37,0x5138, /* Array index: 0x0658 */ 0x6A42,0x5128, /* Array index: 0x0658 */ 0x6A43,0x512B, /* Array index: 0x0658 */ 0x6A45,0x5140, /* Array index: 0x0658 */ 0x6A4A,0x513B, /* Array index: 0x0658 */ 0x6A4C,0x5131, /* Array index: 0x0658 */ 0x6A52,0x5129, /* Array index: 0x0658 */ 0x6A53,0x513E, /* Array index: 0x0658 */ 0x6A57,0x512F, /* Array index: 0x0658 */ 0x6A5C,0x5144, /* Array index: 0x0658 */ 0x6A63,0x5127, /* Array index: 0x0658 */ 0x6A6C,0x512E, /* Array index: 0x0658 */ 0x6A6E,0x5132, /* Array index: 0x0658 */ 0x6A70,0x5141, /* Array index: 0x0658 */ 0x6A71,0x513A, /* Array index: 0x0658 */ 0x6A77,0x6531, /* Array index: 0x0658 */ 0x6A7A,0x6532, /* Array index: 0x0658 */ 0x6A7D,0x5475, /* Array index: 0x0658 */ 0x6A82,0x547B, /* Array index: 0x0658 */ 0x6A86,0x5521, /* Array index: 0x0658 */ 0x6A88,0x547C, /* Array index: 0x0658 */ 0x6A8A,0x5476, /* Array index: 0x0658 */ 0x6A8F,0x5527, /* Array index: 0x0658 */ 0x6A98,0x5523, /* Array index: 0x0658 */ 0x6A99,0x547A, /* Array index: 0x0658 */ 0x6A9D,0x5524, /* Array index: 0x0658 */ 0x6AA7,0x5478, /* Array index: 0x0658 */ 0x6AAA,0x5529, /* Array index: 0x0658 */ 0x6AAB,0x5774, /* Array index: 0x0658 */ 0x6AB5,0x5778, /* Array index: 0x0658 */ 0x6AC4,0x5822, /* Array index: 0x0658 */ 0x6AC8,0x577B, /* Array index: 0x0658 */ 0x6ACA,0x6533, /* Array index: 0x0658 */ 0x6ACE,0x5A44, /* Array index: 0x0658 */ 0x6AD2,0x5A4F, /* Array index: 0x0658 */ 0x6AE2,0x5A48, /* Array index: 0x0658 */ 0x6AE3,0x5A46, /* Array index: 0x0658 */ 0x6AE6,0x6534, /* Array index: 0x0658 */ 0x6AE9,0x5C49, /* Array index: 0x0658 */ 0x6AED,0x5775, /* Array index: 0x0658 */ 0x6AF4,0x5C47, /* Array index: 0x0658 */ 0x6AF5,0x6535, /* Array index: 0x0658 */ 0x6B06,0x5F4F, /* Array index: 0x0658 */ 0x6B07,0x5F4E, /* Array index: 0x0658 */ 0x6B0D,0x6536, /* Array index: 0x0658 */ 0x6B0E,0x6537, /* Array index: 0x0658 */ 0x6B14,0x6074, /* Array index: 0x0658 */ 0x6B22,0x2379, /* Array index: 0x0658 */ 0x6B2E,0x3165, /* Array index: 0x0658 */ 0x6B30,0x3167, /* Array index: 0x0658 */ 0x6B35,0x3662, /* Array index: 0x0658 */ 0x6B40,0x417D, /* Array index: 0x0658 */ 0x6B44,0x417C, /* Array index: 0x0658 */ 0x6B4F,0x4C66, /* Array index: 0x0658 */ 0x6B52,0x4C65, /* Array index: 0x0658 */ 0x6B53,0x4C67, /* Array index: 0x0658 */ 0x6B57,0x5146, /* Array index: 0x0658 */ 0x6B58,0x5145, /* Array index: 0x0658 */ 0x6B5D,0x552B, /* Array index: 0x0658 */ 0x6B7A,0x2253, /* Array index: 0x0658 */ 0x6B81,0x2958, /* Array index: 0x0658 */ 0x6B8B,0x316A, /* Array index: 0x0658 */ 0x6B90,0x3664, /* Array index: 0x0658 */ 0x6B9C,0x4222, /* Array index: 0x0658 */ 0x6B9D,0x6354, /* Array index: 0x0658 */ 0x6BA1,0x4754, /* Array index: 0x0658 */ 0x6BB4,0x2959, /* Array index: 0x0658 */ 0x6BBB,0x3665, /* Array index: 0x0658 */ 0x6BBE,0x3C4B, /* Array index: 0x0658 */ 0x6BC1,0x4226, /* Array index: 0x0658 */ 0x6BCE,0x237A, /* Array index: 0x0658 */ 0x6BD1,0x295A, /* Array index: 0x0658 */ 0x6BDC,0x6538, /* Array index: 0x0658 */ 0x6BDD,0x6539, /* Array index: 0x0658 */ 0x6BE1,0x2D42, /* Array index: 0x0658 */ 0x6BE5,0x316E, /* Array index: 0x0658 */ 0x6BE9,0x316C, /* Array index: 0x0658 */ 0x6BEA,0x316D, /* Array index: 0x0658 */ 0x6BED,0x3666, /* Array index: 0x0658 */ 0x6BF4,0x3C4D, /* Array index: 0x0658 */ 0x6BF6,0x653A, /* Array index: 0x0658 */ 0x6BFA,0x4228, /* Array index: 0x0658 */ 0x6C0A,0x552D, /* Array index: 0x0658 */ 0x6C1C,0x295D, /* Array index: 0x0658 */ 0x6C1E,0x653B, /* Array index: 0x0658 */ 0x6C2D,0x3C4E, /* Array index: 0x0658 */ 0x6C31,0x4229, /* Array index: 0x0658 */ 0x6C32,0x422A, /* Array index: 0x0658 */ 0x6C37,0x2257, /* Array index: 0x0658 */ 0x6C39,0x2254, /* Array index: 0x0658 */ 0x6C3C,0x2421, /* Array index: 0x0658 */ 0x6C44,0x2258, /* Array index: 0x0658 */ 0x6C45,0x2259, /* Array index: 0x0658 */ 0x6C51,0x237D, /* Array index: 0x0658 */ 0x6C53,0x2425, /* Array index: 0x0658 */ 0x6C56,0x2655, /* Array index: 0x0658 */ 0x6C58,0x237C, /* Array index: 0x0658 */ 0x6C5A,0x2423, /* Array index: 0x0658 */ 0x6C63,0x653C, /* Array index: 0x0658 */ 0x6C6C,0x2964, /* Array index: 0x0658 */ 0x6C6E,0x2650, /* Array index: 0x0658 */ 0x6C75,0x2653, /* Array index: 0x0658 */ 0x6C77,0x237E, /* Array index: 0x0658 */ 0x6C79,0x2657, /* Array index: 0x0658 */ 0x6C7C,0x2651, /* Array index: 0x0658 */ 0x6C7F,0x264C, /* Array index: 0x0658 */ 0x6C91,0x264D, /* Array index: 0x0658 */ 0x6C97,0x2963, /* Array index: 0x0658 */ 0x6CAA,0x265B, /* Array index: 0x0658 */ 0x6CAF,0x2D4E, /* Array index: 0x0658 */ 0x6CB2,0x296B, /* Array index: 0x0658 */ 0x6CC8,0x296D, /* Array index: 0x0658 */ 0x6CCB,0x6261, /* Array index: 0x0658 */ 0x6CCE,0x296C, /* Array index: 0x0658 */ 0x6CD8,0x296A, /* Array index: 0x0658 */ 0x6CDF,0x2965, /* Array index: 0x0658 */ 0x6CE4,0x2969, /* Array index: 0x0658 */ 0x6CE6,0x6260, /* Array index: 0x0658 */ 0x6CEA,0x2967, /* Array index: 0x0658 */ 0x6CF4,0x2D4F, /* Array index: 0x0658 */ 0x6CFF,0x2D46, /* Array index: 0x0658 */ 0x6D02,0x2D50, /* Array index: 0x0658 */ 0x6D05,0x2D48, /* Array index: 0x0658 */ 0x6D06,0x2D4A, /* Array index: 0x0658 */ 0x6D1C,0x317A, /* Array index: 0x0658 */ 0x6D21,0x2D4B, /* Array index: 0x0658 */ 0x6D23,0x2D45, /* Array index: 0x0658 */ 0x6D24,0x2D57, /* Array index: 0x0658 */ 0x6D26,0x2D53, /* Array index: 0x0658 */ 0x6D44,0x2D55, /* Array index: 0x0658 */ 0x6D45,0x2D51, /* Array index: 0x0658 */ 0x6D56,0x3177, /* Array index: 0x0658 */ 0x6D57,0x3173, /* Array index: 0x0658 */ 0x6D6B,0x316F, /* Array index: 0x0658 */ 0x6D81,0x3221, /* Array index: 0x0658 */ 0x6D8F,0x3178, /* Array index: 0x0658 */ 0x6D96,0x3227, /* Array index: 0x0658 */ 0x6DA5,0x653D, /* Array index: 0x0658 */ 0x6DAD,0x366F, /* Array index: 0x0658 */ 0x6DB0,0x367A, /* Array index: 0x0658 */ 0x6DB1,0x3721, /* Array index: 0x0658 */ 0x6DB6,0x3C50, /* Array index: 0x0658 */ 0x6DB9,0x3672, /* Array index: 0x0658 */ 0x6DC1,0x366A, /* Array index: 0x0658 */ 0x6DC3,0x366B, /* Array index: 0x0658 */ 0x6DCE,0x366C, /* Array index: 0x0658 */ 0x6DE7,0x3674, /* Array index: 0x0658 */ 0x6DF8,0x367C, /* Array index: 0x0658 */ 0x6E0F,0x653E, /* Array index: 0x0658 */ 0x6E12,0x3729, /* Array index: 0x0658 */ 0x6E17,0x3727, /* Array index: 0x0658 */ 0x6E18,0x3C54, /* Array index: 0x0658 */ 0x6E1E,0x3C52, /* Array index: 0x0658 */ 0x6E29,0x3C6B, /* Array index: 0x0658 */ 0x6E2A,0x3C6D, /* Array index: 0x0658 */ 0x6E42,0x3C5A, /* Array index: 0x0658 */ 0x6E48,0x3C56, /* Array index: 0x0658 */ 0x6E4C,0x3C6E, /* Array index: 0x0658 */ 0x6E4F,0x3C58, /* Array index: 0x0658 */ 0x6E50,0x3C69, /* Array index: 0x0658 */ 0x6E57,0x3C66, /* Array index: 0x0658 */ 0x6E59,0x3C64, /* Array index: 0x0658 */ 0x6E6A,0x3C5B, /* Array index: 0x0658 */ 0x6E6C,0x423A, /* Array index: 0x0658 */ 0x6E6D,0x3C60, /* Array index: 0x0658 */ 0x6E70,0x3C5C, /* Array index: 0x0658 */ 0x6E75,0x3C51, /* Array index: 0x0658 */ 0x6E76,0x3C6C, /* Array index: 0x0658 */ 0x6E7B,0x3C62, /* Array index: 0x0658 */ 0x6E7C,0x6542, /* Array index: 0x0658 */ 0x6E7E,0x3C63, /* Array index: 0x0658 */ 0x6E80,0x3C68, /* Array index: 0x0658 */ 0x6E84,0x6540, /* Array index: 0x0658 */ 0x6E86,0x633D, /* Array index: 0x0658 */ 0x6E8A,0x653F, /* Array index: 0x0658 */ 0x6E8B,0x6541, /* Array index: 0x0658 */ 0x6E91,0x4230, /* Array index: 0x0658 */ 0x6E9A,0x4233, /* Array index: 0x0658 */ 0x6EA8,0x422E, /* Array index: 0x0658 */ 0x6EA9,0x4236, /* Array index: 0x0658 */ 0x6EAC,0x4240, /* Array index: 0x0658 */ 0x6EB5,0x4239, /* Array index: 0x0658 */ 0x6EB8,0x422D, /* Array index: 0x0658 */ 0x6EBB,0x4231, /* Array index: 0x0658 */ 0x6EE3,0x4245, /* Array index: 0x0658 */ 0x6EE6,0x423F, /* Array index: 0x0658 */ 0x6EE8,0x423B, /* Array index: 0x0658 */ 0x6EE9,0x4246, /* Array index: 0x0658 */ 0x6EF0,0x4756, /* Array index: 0x0658 */ 0x6EF3,0x4757, /* Array index: 0x0658 */ 0x6EFA,0x4765, /* Array index: 0x0658 */ 0x6F04,0x4763, /* Array index: 0x0658 */ 0x6F0B,0x4C78, /* Array index: 0x0658 */ 0x6F0C,0x475B, /* Array index: 0x0658 */ 0x6F10,0x4C6A, /* Array index: 0x0658 */ 0x6F11,0x4764, /* Array index: 0x0658 */ 0x6F17,0x475F, /* Array index: 0x0658 */ 0x6F1B,0x475A, /* Array index: 0x0658 */ 0x6F1D,0x475C, /* Array index: 0x0658 */ 0x6F28,0x475E, /* Array index: 0x0658 */ 0x6F34,0x475D, /* Array index: 0x0658 */ 0x6F3D,0x4C74, /* Array index: 0x0658 */ 0x6F42,0x4762, /* Array index: 0x0658 */ 0x6F44,0x4761, /* Array index: 0x0658 */ 0x6F59,0x4C7D, /* Array index: 0x0658 */ 0x6F5C,0x4C73, /* Array index: 0x0658 */ 0x6F65,0x4C6B, /* Array index: 0x0658 */ 0x6F71,0x4C75, /* Array index: 0x0658 */ 0x6F74,0x4C7E, /* Array index: 0x0658 */ 0x6F75,0x4C6C, /* Array index: 0x0658 */ 0x6F79,0x4C79, /* Array index: 0x0658 */ 0x6F81,0x4C7A, /* Array index: 0x0658 */ 0x6F8A,0x6363, /* Array index: 0x0658 */ 0x6F8F,0x4C7B, /* Array index: 0x0658 */ 0x6F91,0x4C77, /* Array index: 0x0658 */ 0x6F99,0x6547, /* Array index: 0x0658 */ 0x6F9D,0x6546, /* Array index: 0x0658 */ 0x6F9F,0x5156, /* Array index: 0x0658 */ 0x6FB5,0x5154, /* Array index: 0x0658 */ 0x6FB7,0x5158, /* Array index: 0x0658 */ 0x6FBB,0x514D, /* Array index: 0x0658 */ 0x6FBE,0x5150, /* Array index: 0x0658 */ 0x6FD0,0x4C71, /* Array index: 0x0658 */ 0x6FD3,0x5155, /* Array index: 0x0658 */ 0x6FE5,0x5531, /* Array index: 0x0658 */ 0x6FEA,0x5537, /* Array index: 0x0658 */ 0x6FF3,0x5A55, /* Array index: 0x0658 */ 0x6FF5,0x5159, /* Array index: 0x0658 */ 0x6FF6,0x5539, /* Array index: 0x0658 */ 0x6FF8,0x6548, /* Array index: 0x0658 */ 0x6FFD,0x5828, /* Array index: 0x0658 */ 0x7002,0x582A, /* Array index: 0x0658 */ 0x7003,0x5827, /* Array index: 0x0658 */ 0x7008,0x5826, /* Array index: 0x0658 */ 0x7010,0x5829, /* Array index: 0x0658 */ 0x7013,0x582B, /* Array index: 0x0658 */ 0x701E,0x5A52, /* Array index: 0x0658 */ 0x7025,0x5A54, /* Array index: 0x0658 */ 0x7036,0x5C51, /* Array index: 0x0658 */ 0x703D,0x5C4F, /* Array index: 0x0658 */ 0x7047,0x5E3C, /* Array index: 0x0658 */ 0x704B,0x5E3A, /* Array index: 0x0658 */ 0x704D,0x5E3B, /* Array index: 0x0658 */ 0x7053,0x6036, /* Array index: 0x0658 */ 0x7054,0x5F52, /* Array index: 0x0658 */ 0x7059,0x6037, /* Array index: 0x0658 */ 0x705C,0x654B, /* Array index: 0x0658 */ 0x7067,0x6179, /* Array index: 0x0658 */ 0x706E,0x2428, /* Array index: 0x0658 */ 0x706F,0x2426, /* Array index: 0x0658 */ 0x7072,0x2427, /* Array index: 0x0658 */ 0x7073,0x242B, /* Array index: 0x0658 */ 0x7075,0x2662, /* Array index: 0x0658 */ 0x7077,0x265F, /* Array index: 0x0658 */ 0x7079,0x265E, /* Array index: 0x0658 */ 0x707B,0x2663, /* Array index: 0x0658 */ 0x707E,0x2660, /* Array index: 0x0658 */ 0x7081,0x2977, /* Array index: 0x0658 */ 0x70A0,0x2D5E, /* Array index: 0x0658 */ 0x70B2,0x2D64, /* Array index: 0x0658 */ 0x70B6,0x2D63, /* Array index: 0x0658 */ 0x70B9,0x2D68, /* Array index: 0x0658 */ 0x70BB,0x2D5D, /* Array index: 0x0658 */ 0x70BF,0x654D, /* Array index: 0x0658 */ 0x70C4,0x3228, /* Array index: 0x0658 */ 0x70C9,0x6279, /* Array index: 0x0658 */ 0x70CC,0x322A, /* Array index: 0x0658 */ 0x70D0,0x322B, /* Array index: 0x0658 */ 0x70D5,0x3231, /* Array index: 0x0658 */ 0x70D6,0x322F, /* Array index: 0x0658 */ 0x70DB,0x3229, /* Array index: 0x0658 */ 0x70DF,0x322D, /* Array index: 0x0658 */ 0x70E3,0x322C, /* Array index: 0x0658 */ 0x70E5,0x654F, /* Array index: 0x0658 */ 0x70EA,0x654E, /* Array index: 0x0658 */ 0x70EE,0x3230, /* Array index: 0x0658 */ 0x70F1,0x3730, /* Array index: 0x0658 */ 0x70F2,0x3732, /* Array index: 0x0658 */ 0x70F5,0x372F, /* Array index: 0x0658 */ 0x70FE,0x3735, /* Array index: 0x0658 */ 0x7101,0x372E, /* Array index: 0x0658 */ 0x7103,0x372C, /* Array index: 0x0658 */ 0x7107,0x372D, /* Array index: 0x0658 */ 0x7108,0x3731, /* Array index: 0x0658 */ 0x710F,0x3733, /* Array index: 0x0658 */ 0x7111,0x6550, /* Array index: 0x0658 */ 0x7112,0x6551, /* Array index: 0x0658 */ 0x711D,0x3C74, /* Array index: 0x0658 */ 0x7124,0x3C7D, /* Array index: 0x0658 */ 0x7127,0x3C7C, /* Array index: 0x0658 */ 0x7145,0x4257, /* Array index: 0x0658 */ 0x7148,0x424C, /* Array index: 0x0658 */ 0x714A,0x424E, /* Array index: 0x0658 */ 0x714F,0x4251, /* Array index: 0x0658 */ 0x7151,0x4258, /* Array index: 0x0658 */ 0x7157,0x4252, /* Array index: 0x0658 */ 0x715B,0x483C, /* Array index: 0x0658 */ 0x716B,0x424F, /* Array index: 0x0658 */ 0x716D,0x4259, /* Array index: 0x0658 */ 0x716F,0x4249, /* Array index: 0x0658 */ 0x7171,0x6559, /* Array index: 0x0658 */ 0x717C,0x476F, /* Array index: 0x0658 */ 0x717E,0x476E, /* Array index: 0x0658 */ 0x717F,0x476C, /* Array index: 0x0658 */ 0x7183,0x4770, /* Array index: 0x0658 */ 0x7188,0x4772, /* Array index: 0x0658 */ 0x7191,0x4767, /* Array index: 0x0658 */ 0x7193,0x655B, /* Array index: 0x0658 */ 0x7196,0x655A, /* Array index: 0x0658 */ 0x71A2,0x4D2A, /* Array index: 0x0658 */ 0x71A3,0x4D24, /* Array index: 0x0658 */ 0x71A6,0x4D29, /* Array index: 0x0658 */ 0x71AB,0x4D28, /* Array index: 0x0658 */ 0x71AD,0x4D25, /* Array index: 0x0658 */ 0x71AE,0x4D22, /* Array index: 0x0658 */ 0x71B4,0x655C, /* Array index: 0x0658 */ 0x71B6,0x5162, /* Array index: 0x0658 */ 0x71B7,0x515A, /* Array index: 0x0658 */ 0x71BA,0x5160, /* Array index: 0x0658 */ 0x71BB,0x515C, /* Array index: 0x0658 */ 0x71CC,0x5163, /* Array index: 0x0658 */ 0x71CD,0x6374, /* Array index: 0x0658 */ 0x71D1,0x515E, /* Array index: 0x0658 */ 0x71D3,0x5166, /* Array index: 0x0658 */ 0x71DD,0x655D, /* Array index: 0x0658 */ 0x71DE,0x655E, /* Array index: 0x0658 */ 0x71E3,0x553C, /* Array index: 0x0658 */ 0x71EF,0x5541, /* Array index: 0x0658 */ 0x71F3,0x5542, /* Array index: 0x0658 */ 0x71FA,0x582D, /* Array index: 0x0658 */ 0x7200,0x582E, /* Array index: 0x0658 */ 0x7204,0x5A56, /* Array index: 0x0658 */ 0x7208,0x5A57, /* Array index: 0x0658 */ 0x720B,0x5C59, /* Array index: 0x0658 */ 0x721C,0x5F53, /* Array index: 0x0658 */ 0x7220,0x5F54, /* Array index: 0x0658 */ 0x7221,0x6039, /* Array index: 0x0658 */ 0x7224,0x6143, /* Array index: 0x0658 */ 0x7225,0x6142, /* Array index: 0x0658 */ 0x722E,0x2D69, /* Array index: 0x0658 */ 0x7232,0x3D22, /* Array index: 0x0658 */ 0x723C,0x2D6B, /* Array index: 0x0658 */ 0x7240,0x297C, /* Array index: 0x0658 */ 0x724E,0x425D, /* Array index: 0x0658 */ 0x7250,0x425C, /* Array index: 0x0658 */ 0x7251,0x425B, /* Array index: 0x0658 */ 0x7255,0x4D2E, /* Array index: 0x0658 */ 0x7257,0x4D2D, /* Array index: 0x0658 */ 0x726D,0x2D6D, /* Array index: 0x0658 */ 0x727A,0x3236, /* Array index: 0x0658 */ 0x7282,0x3D24, /* Array index: 0x0658 */ 0x7283,0x3D23, /* Array index: 0x0658 */ 0x7287,0x3D25, /* Array index: 0x0658 */ 0x7294,0x4775, /* Array index: 0x0658 */ 0x7299,0x4D2F, /* Array index: 0x0658 */ 0x72AB,0x617B, /* Array index: 0x0658 */ 0x72B1,0x242C, /* Array index: 0x0658 */ 0x72B2,0x242D, /* Array index: 0x0658 */ 0x72B6,0x266B, /* Array index: 0x0658 */ 0x72B9,0x2669, /* Array index: 0x0658 */ 0x72BB,0x2666, /* Array index: 0x0658 */ 0x72BC,0x2667, /* Array index: 0x0658 */ 0x72BE,0x266A, /* Array index: 0x0658 */ 0x72C7,0x2668, /* Array index: 0x0658 */ 0x72CD,0x2A26, /* Array index: 0x0658 */ 0x72CF,0x2A2A, /* Array index: 0x0658 */ 0x72D3,0x2A27, /* Array index: 0x0658 */ 0x72DB,0x2A28, /* Array index: 0x0658 */ 0x72E2,0x2D75, /* Array index: 0x0658 */ 0x72E5,0x2D74, /* Array index: 0x0658 */ 0x72E7,0x2D70, /* Array index: 0x0658 */ 0x72EC,0x2D73, /* Array index: 0x0658 */ 0x72ED,0x2D71, /* Array index: 0x0658 */ 0x72F5,0x3238, /* Array index: 0x0658 */ 0x7302,0x3239, /* Array index: 0x0658 */ 0x7306,0x3D26, /* Array index: 0x0658 */ 0x730E,0x373B, /* Array index: 0x0658 */ 0x7310,0x373A, /* Array index: 0x0658 */ 0x731A,0x3739, /* Array index: 0x0658 */ 0x7324,0x3D27, /* Array index: 0x0658 */ 0x7338,0x3D28, /* Array index: 0x0658 */ 0x7341,0x425F, /* Array index: 0x0658 */ 0x734B,0x4D30, /* Array index: 0x0658 */ 0x734F,0x4779, /* Array index: 0x0658 */ 0x7371,0x5549, /* Array index: 0x0658 */ 0x738C,0x225A, /* Array index: 0x0658 */ 0x738D,0x216B, /* Array index: 0x0658 */ 0x738F,0x242F, /* Array index: 0x0658 */ 0x7398,0x266E, /* Array index: 0x0658 */ 0x739C,0x2A33, /* Array index: 0x0658 */ 0x739E,0x2A2D, /* Array index: 0x0658 */ 0x73A3,0x2A2C, /* Array index: 0x0658 */ 0x73A7,0x2A2B, /* Array index: 0x0658 */ 0x73AA,0x2A32, /* Array index: 0x0658 */ 0x73AF,0x2A2F, /* Array index: 0x0658 */ 0x73BD,0x2D78, /* Array index: 0x0658 */ 0x73C1,0x2D7B, /* Array index: 0x0658 */ 0x73C4,0x2D77, /* Array index: 0x0658 */ 0x73C9,0x2D7A, /* Array index: 0x0658 */ 0x73D5,0x323E, /* Array index: 0x0658 */ 0x73DF,0x3240, /* Array index: 0x0658 */ 0x73E1,0x3247, /* Array index: 0x0658 */ 0x73E2,0x323C, /* Array index: 0x0658 */ 0x73E4,0x3246, /* Array index: 0x0658 */ 0x73E6,0x3241, /* Array index: 0x0658 */ 0x73EC,0x323D, /* Array index: 0x0658 */ 0x73EF,0x6564, /* Array index: 0x0658 */ 0x73F3,0x373D, /* Array index: 0x0658 */ 0x73F7,0x3D38, /* Array index: 0x0658 */ 0x73F9,0x323F, /* Array index: 0x0658 */ 0x73FB,0x3740, /* Array index: 0x0658 */ 0x7402,0x373C, /* Array index: 0x0658 */ 0x7412,0x6565, /* Array index: 0x0658 */ 0x741C,0x3D39, /* Array index: 0x0658 */ 0x741E,0x426D, /* Array index: 0x0658 */ 0x741F,0x3D35, /* Array index: 0x0658 */ 0x7427,0x4264, /* Array index: 0x0658 */ 0x7443,0x426F, /* Array index: 0x0658 */ 0x744C,0x4273, /* Array index: 0x0658 */ 0x7453,0x4267, /* Array index: 0x0658 */ 0x7456,0x426B, /* Array index: 0x0658 */ 0x7458,0x4270, /* Array index: 0x0658 */ 0x745D,0x426A, /* Array index: 0x0658 */ 0x7460,0x4825, /* Array index: 0x0658 */ 0x7461,0x477E, /* Array index: 0x0658 */ 0x7465,0x477C, /* Array index: 0x0658 */ 0x7466,0x477D, /* Array index: 0x0658 */ 0x7468,0x4822, /* Array index: 0x0658 */ 0x746B,0x4821, /* Array index: 0x0658 */ 0x746C,0x477B, /* Array index: 0x0658 */ 0x7474,0x4827, /* Array index: 0x0658 */ 0x7476,0x4823, /* Array index: 0x0658 */ 0x747A,0x4D31, /* Array index: 0x0658 */ 0x747B,0x4D3B, /* Array index: 0x0658 */ 0x7482,0x4D39, /* Array index: 0x0658 */ 0x7484,0x4D36, /* Array index: 0x0658 */ 0x748C,0x4D35, /* Array index: 0x0658 */ 0x748D,0x6568, /* Array index: 0x0658 */ 0x7493,0x4D3A, /* Array index: 0x0658 */ 0x7496,0x516A, /* Array index: 0x0658 */ 0x7499,0x6375, /* Array index: 0x0658 */ 0x749B,0x5167, /* Array index: 0x0658 */ 0x749D,0x516C, /* Array index: 0x0658 */ 0x74A2,0x516B, /* Array index: 0x0658 */ 0x74A4,0x6567, /* Array index: 0x0658 */ 0x74AC,0x554F, /* Array index: 0x0658 */ 0x74AE,0x554B, /* Array index: 0x0658 */ 0x74B3,0x554D, /* Array index: 0x0658 */ 0x74B4,0x6569, /* Array index: 0x0658 */ 0x74B9,0x582F, /* Array index: 0x0658 */ 0x74BC,0x5830, /* Array index: 0x0658 */ 0x74C4,0x5A5A, /* Array index: 0x0658 */ 0x74EB,0x2E22, /* Array index: 0x0658 */ 0x74ED,0x2E21, /* Array index: 0x0658 */ 0x74EF,0x2E24, /* Array index: 0x0658 */ 0x74F3,0x3248, /* Array index: 0x0658 */ 0x74F9,0x3D3D, /* Array index: 0x0658 */ 0x7501,0x4277, /* Array index: 0x0658 */ 0x7506,0x4828, /* Array index: 0x0658 */ 0x7509,0x4D3D, /* Array index: 0x0658 */ 0x750A,0x516D, /* Array index: 0x0658 */ 0x750E,0x516E, /* Array index: 0x0658 */ 0x751B,0x3744, /* Array index: 0x0658 */ 0x751E,0x4278, /* Array index: 0x0658 */ 0x7523,0x3745, /* Array index: 0x0658 */ 0x7524,0x3D3E, /* Array index: 0x0658 */ 0x753B,0x2A37, /* Array index: 0x0658 */ 0x7541,0x2A38, /* Array index: 0x0658 */ 0x7542,0x2A35, /* Array index: 0x0658 */ 0x7544,0x2A36, /* Array index: 0x0658 */ 0x7546,0x2E27, /* Array index: 0x0658 */ 0x7549,0x2E25, /* Array index: 0x0658 */ 0x754A,0x2E28, /* Array index: 0x0658 */ 0x754D,0x2E2A, /* Array index: 0x0658 */ 0x7550,0x2E26, /* Array index: 0x0658 */ 0x755E,0x3251, /* Array index: 0x0658 */ 0x7561,0x3746, /* Array index: 0x0658 */ 0x7567,0x3749, /* Array index: 0x0658 */ 0x7568,0x3747, /* Array index: 0x0658 */ 0x756D,0x3D43, /* Array index: 0x0658 */ 0x756E,0x3D42, /* Array index: 0x0658 */ 0x7571,0x3D44, /* Array index: 0x0658 */ 0x757A,0x427B, /* Array index: 0x0658 */ 0x7581,0x5170, /* Array index: 0x0658 */ 0x7583,0x5552, /* Array index: 0x0658 */ 0x7589,0x5C62, /* Array index: 0x0658 */ 0x758E,0x3D45, /* Array index: 0x0658 */ 0x7592,0x225B, /* Array index: 0x0658 */ 0x7593,0x2673, /* Array index: 0x0658 */ 0x759B,0x2A3A, /* Array index: 0x0658 */ 0x759E,0x2A3B, /* Array index: 0x0658 */ 0x75A6,0x2E2B, /* Array index: 0x0658 */ 0x75A8,0x2E2F, /* Array index: 0x0658 */ 0x75B1,0x3257, /* Array index: 0x0658 */ 0x75B4,0x3255, /* Array index: 0x0658 */ 0x75C3,0x3252, /* Array index: 0x0658 */ 0x75D3,0x374A, /* Array index: 0x0658 */ 0x75E5,0x3D47, /* Array index: 0x0658 */ 0x75EE,0x427C, /* Array index: 0x0658 */ 0x7602,0x427D, /* Array index: 0x0658 */ 0x7607,0x482B, /* Array index: 0x0658 */ 0x760E,0x4829, /* Array index: 0x0658 */ 0x762C,0x5171, /* Array index: 0x0658 */ 0x7636,0x5173, /* Array index: 0x0658 */ 0x7637,0x5172, /* Array index: 0x0658 */ 0x763B,0x5174, /* Array index: 0x0658 */ 0x7644,0x5555, /* Array index: 0x0658 */ 0x7645,0x5553, /* Array index: 0x0658 */ 0x764E,0x5554, /* Array index: 0x0658 */ 0x764F,0x5834, /* Array index: 0x0658 */ 0x7651,0x5833, /* Array index: 0x0658 */ 0x765B,0x5832, /* Array index: 0x0658 */ 0x7667,0x5E3F, /* Array index: 0x0658 */ 0x7668,0x5E3E, /* Array index: 0x0658 */ 0x766F,0x603B, /* Array index: 0x0658 */ 0x7673,0x656A, /* Array index: 0x0658 */ 0x7676,0x225C, /* Array index: 0x0658 */ 0x7677,0x656B, /* Array index: 0x0658 */ 0x7680,0x2674, /* Array index: 0x0658 */ 0x7683,0x2676, /* Array index: 0x0658 */ 0x7690,0x374D, /* Array index: 0x0658 */ 0x7694,0x3D4C, /* Array index: 0x0658 */ 0x7697,0x427E, /* Array index: 0x0658 */ 0x7698,0x4321, /* Array index: 0x0658 */ 0x76A1,0x5176, /* Array index: 0x0658 */ 0x76A3,0x5556, /* Array index: 0x0658 */ 0x76A5,0x5557, /* Array index: 0x0658 */ 0x76A9,0x5A5E, /* Array index: 0x0658 */ 0x76B3,0x3D4D, /* Array index: 0x0658 */ 0x76B7,0x4830, /* Array index: 0x0658 */ 0x76B9,0x482E, /* Array index: 0x0658 */ 0x76BC,0x656C, /* Array index: 0x0658 */ 0x76C0,0x2677, /* Array index: 0x0658 */ 0x76C1,0x2678, /* Array index: 0x0658 */ 0x76C7,0x2E32, /* Array index: 0x0658 */ 0x76CB,0x325A, /* Array index: 0x0658 */ 0x76CC,0x325B, /* Array index: 0x0658 */ 0x76E2,0x4831, /* Array index: 0x0658 */ 0x76EB,0x5835, /* Array index: 0x0658 */ 0x76FD,0x2E35, /* Array index: 0x0658 */ 0x76FF,0x2E33, /* Array index: 0x0658 */ 0x7706,0x626C, /* Array index: 0x0658 */ 0x770E,0x3264, /* Array index: 0x0658 */ 0x770F,0x325F, /* Array index: 0x0658 */ 0x7716,0x325E, /* Array index: 0x0658 */ 0x7718,0x3268, /* Array index: 0x0658 */ 0x771E,0x3759, /* Array index: 0x0658 */ 0x7721,0x3267, /* Array index: 0x0658 */ 0x7724,0x3265, /* Array index: 0x0658 */ 0x7726,0x3755, /* Array index: 0x0658 */ 0x772A,0x325C, /* Array index: 0x0658 */ 0x772B,0x3263, /* Array index: 0x0658 */ 0x7730,0x3753, /* Array index: 0x0658 */ 0x7748,0x3D51, /* Array index: 0x0658 */ 0x7749,0x3D52, /* Array index: 0x0658 */ 0x7753,0x4327, /* Array index: 0x0658 */ 0x7758,0x4328, /* Array index: 0x0658 */ 0x775D,0x4325, /* Array index: 0x0658 */ 0x7764,0x4326, /* Array index: 0x0658 */ 0x7771,0x4839, /* Array index: 0x0658 */ 0x778A,0x4D44, /* Array index: 0x0658 */ 0x7790,0x4D46, /* Array index: 0x0658 */ 0x7796,0x517B, /* Array index: 0x0658 */ 0x7798,0x5179, /* Array index: 0x0658 */ 0x77A4,0x5559, /* Array index: 0x0658 */ 0x77A6,0x5558, /* Array index: 0x0658 */ 0x77A9,0x555B, /* Array index: 0x0658 */ 0x77AF,0x555C, /* Array index: 0x0658 */ 0x77B8,0x5836, /* Array index: 0x0658 */ 0x77B9,0x5838, /* Array index: 0x0658 */ 0x77BE,0x583B, /* Array index: 0x0658 */ 0x77C0,0x583A, /* Array index: 0x0658 */ 0x77C1,0x5839, /* Array index: 0x0658 */ 0x77C5,0x5A60, /* Array index: 0x0658 */ 0x77C6,0x5A5F, /* Array index: 0x0658 */ 0x77D1,0x5E42, /* Array index: 0x0658 */ 0x77D6,0x6432, /* Array index: 0x0658 */ 0x77DD,0x3269, /* Array index: 0x0658 */ 0x77DF,0x3D57, /* Array index: 0x0658 */ 0x77E6,0x2E36, /* Array index: 0x0658 */ 0x77F4,0x267B, /* Array index: 0x0658 */ 0x77F5,0x267C, /* Array index: 0x0658 */ 0x7804,0x2E39, /* Array index: 0x0658 */ 0x7815,0x2E3D, /* Array index: 0x0658 */ 0x7819,0x656D, /* Array index: 0x0658 */ 0x781B,0x656E, /* Array index: 0x0658 */ 0x781E,0x667C, /* Array index: 0x0658 */ 0x7824,0x326C, /* Array index: 0x0658 */ 0x7836,0x326D, /* Array index: 0x0658 */ 0x783D,0x656F, /* Array index: 0x0658 */ 0x7842,0x3762, /* Array index: 0x0658 */ 0x7846,0x3763, /* Array index: 0x0658 */ 0x7847,0x375D, /* Array index: 0x0658 */ 0x784B,0x375F, /* Array index: 0x0658 */ 0x784F,0x3761, /* Array index: 0x0658 */ 0x7851,0x3760, /* Array index: 0x0658 */ 0x7853,0x6570, /* Array index: 0x0658 */ 0x7854,0x6571, /* Array index: 0x0658 */ 0x7858,0x6572, /* Array index: 0x0658 */ 0x785F,0x3D5C, /* Array index: 0x0658 */ 0x7863,0x3D59, /* Array index: 0x0658 */ 0x7866,0x3D5D, /* Array index: 0x0658 */ 0x7876,0x3D5A, /* Array index: 0x0658 */ 0x7878,0x4331, /* Array index: 0x0658 */ 0x787A,0x432D, /* Array index: 0x0658 */ 0x787D,0x432E, /* Array index: 0x0658 */ 0x7881,0x4337, /* Array index: 0x0658 */ 0x7882,0x4329, /* Array index: 0x0658 */ 0x7888,0x4335, /* Array index: 0x0658 */ 0x788A,0x432B, /* Array index: 0x0658 */ 0x788B,0x4330, /* Array index: 0x0658 */ 0x788D,0x4334, /* Array index: 0x0658 */ 0x7890,0x432A, /* Array index: 0x0658 */ 0x7892,0x4336, /* Array index: 0x0658 */ 0x78A6,0x483E, /* Array index: 0x0658 */ 0x78AE,0x483F, /* Array index: 0x0658 */ 0x78AF,0x4845, /* Array index: 0x0658 */ 0x78B1,0x4844, /* Array index: 0x0658 */ 0x78B7,0x6573, /* Array index: 0x0658 */ 0x78B8,0x4840, /* Array index: 0x0658 */ 0x78C0,0x4D4A, /* Array index: 0x0658 */ 0x78C2,0x4D4D, /* Array index: 0x0658 */ 0x78C6,0x4D48, /* Array index: 0x0658 */ 0x78C7,0x4D4C, /* Array index: 0x0658 */ 0x78D2,0x4D4B, /* Array index: 0x0658 */ 0x78D3,0x4D49, /* Array index: 0x0658 */ 0x78D6,0x5221, /* Array index: 0x0658 */ 0x78D8,0x6574, /* Array index: 0x0658 */ 0x78DC,0x5224, /* Array index: 0x0658 */ 0x78EB,0x5222, /* Array index: 0x0658 */ 0x78EE,0x6575, /* Array index: 0x0658 */ 0x78F0,0x5560, /* Array index: 0x0658 */ 0x78F1,0x5562, /* Array index: 0x0658 */ 0x78F8,0x5561, /* Array index: 0x0658 */ 0x7915,0x5844, /* Array index: 0x0658 */ 0x7918,0x5A61, /* Array index: 0x0658 */ 0x791A,0x5A62, /* Array index: 0x0658 */ 0x7920,0x5A63, /* Array index: 0x0658 */ 0x7922,0x6576, /* Array index: 0x0658 */ 0x792E,0x5E45, /* Array index: 0x0658 */ 0x7930,0x5E43, /* Array index: 0x0658 */ 0x7932,0x5E44, /* Array index: 0x0658 */ 0x7937,0x603C, /* Array index: 0x0658 */ 0x793C,0x2433, /* Array index: 0x0658 */ 0x794D,0x6577, /* Array index: 0x0658 */ 0x7958,0x326F, /* Array index: 0x0658 */ 0x7959,0x3270, /* Array index: 0x0658 */ 0x7962,0x3272, /* Array index: 0x0658 */ 0x7966,0x3D5E, /* Array index: 0x0658 */ 0x796C,0x3766, /* Array index: 0x0658 */ 0x796E,0x3765, /* Array index: 0x0658 */ 0x7971,0x3D5F, /* Array index: 0x0658 */ 0x7975,0x3D64, /* Array index: 0x0658 */ 0x7976,0x3D62, /* Array index: 0x0658 */ 0x797E,0x4338, /* Array index: 0x0658 */ 0x7980,0x433D, /* Array index: 0x0658 */ 0x7999,0x6579, /* Array index: 0x0658 */ 0x79A3,0x657A, /* Array index: 0x0658 */ 0x79A5,0x5226, /* Array index: 0x0658 */ 0x79A9,0x5227, /* Array index: 0x0658 */ 0x79AF,0x5845, /* Array index: 0x0658 */ 0x79B5,0x603D, /* Array index: 0x0658 */ 0x79BC,0x657B, /* Array index: 0x0658 */ 0x79CA,0x2A44, /* Array index: 0x0658 */ 0x79CC,0x654C, /* Array index: 0x0658 */ 0x79D0,0x2E42, /* Array index: 0x0658 */ 0x79D3,0x2E40, /* Array index: 0x0658 */ 0x79D4,0x2E41, /* Array index: 0x0658 */ 0x79E1,0x3276, /* Array index: 0x0658 */ 0x79E2,0x327B, /* Array index: 0x0658 */ 0x79E5,0x3277, /* Array index: 0x0658 */ 0x79E8,0x3278, /* Array index: 0x0658 */ 0x79F9,0x376C, /* Array index: 0x0658 */ 0x79FF,0x3D65, /* Array index: 0x0658 */ 0x7A07,0x3D66, /* Array index: 0x0658 */ 0x7A09,0x3D69, /* Array index: 0x0658 */ 0x7A0E,0x3D68, /* Array index: 0x0658 */ 0x7A0F,0x4341, /* Array index: 0x0658 */ 0x7A1D,0x4344, /* Array index: 0x0658 */ 0x7A25,0x6524, /* Array index: 0x0658 */ 0x7A32,0x4852, /* Array index: 0x0658 */ 0x7A38,0x4D55, /* Array index: 0x0658 */ 0x7A3A,0x4D56, /* Array index: 0x0658 */ 0x7A3E,0x4D5A, /* Array index: 0x0658 */ 0x7A41,0x4D53, /* Array index: 0x0658 */ 0x7A42,0x4D57, /* Array index: 0x0658 */ 0x7A45,0x522A, /* Array index: 0x0658 */ 0x7A49,0x5564, /* Array index: 0x0658 */ 0x7A4F,0x522C, /* Array index: 0x0658 */ 0x7A53,0x5229, /* Array index: 0x0658 */ 0x7A64,0x5A66, /* Array index: 0x0658 */ 0x7A66,0x5A65, /* Array index: 0x0658 */ 0x7A6A,0x5A67, /* Array index: 0x0658 */ 0x7A6F,0x5C64, /* Array index: 0x0658 */ 0x7A72,0x6076, /* Array index: 0x0658 */ 0x7A73,0x6077, /* Array index: 0x0658 */ 0x7A7C,0x2E44, /* Array index: 0x0658 */ 0x7A7D,0x2E47, /* Array index: 0x0658 */ 0x7A82,0x2E49, /* Array index: 0x0658 */ 0x7A83,0x2E48, /* Array index: 0x0658 */ 0x7A91,0x3772, /* Array index: 0x0658 */ 0x7A93,0x3771, /* Array index: 0x0658 */ 0x7A9A,0x3770, /* Array index: 0x0658 */ 0x7AA1,0x4346, /* Array index: 0x0658 */ 0x7AA4,0x4347, /* Array index: 0x0658 */ 0x7AA7,0x657C, /* Array index: 0x0658 */ 0x7AB0,0x4D5B, /* Array index: 0x0658 */ 0x7ABB,0x522F, /* Array index: 0x0658 */ 0x7ABD,0x522E, /* Array index: 0x0658 */ 0x7AC2,0x5568, /* Array index: 0x0658 */ 0x7AC8,0x5E49, /* Array index: 0x0658 */ 0x7AC9,0x5E48, /* Array index: 0x0658 */ 0x7AE1,0x3773, /* Array index: 0x0658 */ 0x7AE2,0x3D71, /* Array index: 0x0658 */ 0x7AE7,0x3D70, /* Array index: 0x0658 */ 0x7AE9,0x4349, /* Array index: 0x0658 */ 0x7AEA,0x434A, /* Array index: 0x0658 */ 0x7AEC,0x4854, /* Array index: 0x0658 */ 0x7AF8,0x5F55, /* Array index: 0x0658 */ 0x7AFC,0x2E51, /* Array index: 0x0658 */ 0x7AFE,0x2E50, /* Array index: 0x0658 */ 0x7B0B,0x332B, /* Array index: 0x0658 */ 0x7B0D,0x332A, /* Array index: 0x0658 */ 0x7B14,0x332C, /* Array index: 0x0658 */ 0x7B16,0x3778, /* Array index: 0x0658 */ 0x7B17,0x3779, /* Array index: 0x0658 */ 0x7B1C,0x3777, /* Array index: 0x0658 */ 0x7B1F,0x377B, /* Array index: 0x0658 */ 0x7B21,0x3776, /* Array index: 0x0658 */ 0x7B29,0x632D, /* Array index: 0x0658 */ 0x7B36,0x377A, /* Array index: 0x0658 */ 0x7B37,0x657D, /* Array index: 0x0658 */ 0x7B53,0x3D79, /* Array index: 0x0658 */ 0x7B55,0x3D72, /* Array index: 0x0658 */ 0x7B57,0x3D76, /* Array index: 0x0658 */ 0x7B59,0x657E, /* Array index: 0x0658 */ 0x7B5E,0x434F, /* Array index: 0x0658 */ 0x7B62,0x434C, /* Array index: 0x0658 */ 0x7B68,0x4355, /* Array index: 0x0658 */ 0x7B6B,0x434D, /* Array index: 0x0658 */ 0x7B6C,0x3D77, /* Array index: 0x0658 */ 0x7B6F,0x4354, /* Array index: 0x0658 */ 0x7B79,0x4351, /* Array index: 0x0658 */ 0x7B81,0x4856, /* Array index: 0x0658 */ 0x7B83,0x4858, /* Array index: 0x0658 */ 0x7B86,0x4860, /* Array index: 0x0658 */ 0x7B92,0x485A, /* Array index: 0x0658 */ 0x7B93,0x485E, /* Array index: 0x0658 */ 0x7B9E,0x4857, /* Array index: 0x0658 */ 0x7B9F,0x485D, /* Array index: 0x0658 */ 0x7BA3,0x485C, /* Array index: 0x0658 */ 0x7BAE,0x4D5C, /* Array index: 0x0658 */ 0x7BB2,0x4D65, /* Array index: 0x0658 */ 0x7BB3,0x4D5D, /* Array index: 0x0658 */ 0x7BBF,0x4D60, /* Array index: 0x0658 */ 0x7BC2,0x6367, /* Array index: 0x0658 */ 0x7BC3,0x6366, /* Array index: 0x0658 */ 0x7BCD,0x4D63, /* Array index: 0x0658 */ 0x7BD0,0x6621, /* Array index: 0x0658 */ 0x7BEC,0x5233, /* Array index: 0x0658 */ 0x7BED,0x5234, /* Array index: 0x0658 */ 0x7BF6,0x556D, /* Array index: 0x0658 */ 0x7BFA,0x556B, /* Array index: 0x0658 */ 0x7BFC,0x556E, /* Array index: 0x0658 */ 0x7C08,0x5570, /* Array index: 0x0658 */ 0x7C12,0x5571, /* Array index: 0x0658 */ 0x7C18,0x556F, /* Array index: 0x0658 */ 0x7C1A,0x5850, /* Array index: 0x0658 */ 0x7C1B,0x584E, /* Array index: 0x0658 */ 0x7C24,0x5851, /* Array index: 0x0658 */ 0x7C2E,0x584C, /* Array index: 0x0658 */ 0x7C2F,0x6622, /* Array index: 0x0658 */ 0x7C32,0x6623, /* Array index: 0x0658 */ 0x7C34,0x5A6F, /* Array index: 0x0658 */ 0x7C35,0x5A6E, /* Array index: 0x0658 */ 0x7C42,0x6624, /* Array index: 0x0658 */ 0x7C44,0x5C66, /* Array index: 0x0658 */ 0x7C4B,0x5C65, /* Array index: 0x0658 */ 0x7C4E,0x6625, /* Array index: 0x0658 */ 0x7C51,0x5E4C, /* Array index: 0x0658 */ 0x7C56,0x5E4B, /* Array index: 0x0658 */ 0x7C58,0x5F58, /* Array index: 0x0658 */ 0x7C5D,0x5F57, /* Array index: 0x0658 */ 0x7C5E,0x603F, /* Array index: 0x0658 */ 0x7C62,0x603E, /* Array index: 0x0658 */ 0x7C68,0x6626, /* Array index: 0x0658 */ 0x7C6D,0x6144, /* Array index: 0x0658 */ 0x7C71,0x623A, /* Array index: 0x0658 */ 0x7C74,0x2A49, /* Array index: 0x0658 */ 0x7C76,0x2A48, /* Array index: 0x0658 */ 0x7C77,0x2E52, /* Array index: 0x0658 */ 0x7C7B,0x2E54, /* Array index: 0x0658 */ 0x7C7C,0x2E53, /* Array index: 0x0658 */ 0x7C83,0x3331, /* Array index: 0x0658 */ 0x7C86,0x332E, /* Array index: 0x0658 */ 0x7C87,0x3330, /* Array index: 0x0658 */ 0x7C8B,0x3332, /* Array index: 0x0658 */ 0x7C8E,0x332D, /* Array index: 0x0658 */ 0x7C93,0x377D, /* Array index: 0x0658 */ 0x7CA0,0x3E21, /* Array index: 0x0658 */ 0x7CA4,0x3E23, /* Array index: 0x0658 */ 0x7CA6,0x3E22, /* Array index: 0x0658 */ 0x7CA7,0x3D7E, /* Array index: 0x0658 */ 0x7CA9,0x6627, /* Array index: 0x0658 */ 0x7CAE,0x4358, /* Array index: 0x0658 */ 0x7CB0,0x435C, /* Array index: 0x0658 */ 0x7CB7,0x4862, /* Array index: 0x0658 */ 0x7CB8,0x4861, /* Array index: 0x0658 */ 0x7CCD,0x4D6E, /* Array index: 0x0658 */ 0x7CD3,0x5237, /* Array index: 0x0658 */ 0x7CDA,0x5575, /* Array index: 0x0658 */ 0x7CDB,0x5574, /* Array index: 0x0658 */ 0x7CE1,0x5239, /* Array index: 0x0658 */ 0x7CE3,0x5855, /* Array index: 0x0658 */ 0x7CE6,0x5854, /* Array index: 0x0658 */ 0x7CED,0x6628, /* Array index: 0x0658 */ 0x7CF3,0x6169, /* Array index: 0x0658 */ 0x7CF5,0x6040, /* Array index: 0x0658 */ 0x7CFA,0x2722, /* Array index: 0x0658 */ 0x7CFC,0x2A4B, /* Array index: 0x0658 */ 0x7CFF,0x2A4A, /* Array index: 0x0658 */ 0x7D24,0x3337, /* Array index: 0x0658 */ 0x7D25,0x333B, /* Array index: 0x0658 */ 0x7D2D,0x3829, /* Array index: 0x0658 */ 0x7D34,0x3826, /* Array index: 0x0658 */ 0x7D37,0x3827, /* Array index: 0x0658 */ 0x7D48,0x382E, /* Array index: 0x0658 */ 0x7D49,0x3824, /* Array index: 0x0658 */ 0x7D4C,0x382B, /* Array index: 0x0658 */ 0x7D4D,0x3E34, /* Array index: 0x0658 */ 0x7D57,0x3E29, /* Array index: 0x0658 */ 0x7D59,0x3E26, /* Array index: 0x0658 */ 0x7D5A,0x3E2E, /* Array index: 0x0658 */ 0x7D5D,0x3E2F, /* Array index: 0x0658 */ 0x7D60,0x3E28, /* Array index: 0x0658 */ 0x7D64,0x3E2C, /* Array index: 0x0658 */ 0x7D6C,0x3E2A, /* Array index: 0x0658 */ 0x7D7E,0x3E2B, /* Array index: 0x0658 */ 0x7D90,0x435E, /* Array index: 0x0658 */ 0x7DA4,0x4874, /* Array index: 0x0658 */ 0x7DA8,0x486D, /* Array index: 0x0658 */ 0x7DAB,0x486E, /* Array index: 0x0658 */ 0x7DB3,0x4870, /* Array index: 0x0658 */ 0x7DB6,0x4869, /* Array index: 0x0658 */ 0x7DC8,0x4868, /* Array index: 0x0658 */ 0x7DD6,0x4E22, /* Array index: 0x0658 */ 0x7DDC,0x4D7C, /* Array index: 0x0658 */ 0x7DE2,0x4D78, /* Array index: 0x0658 */ 0x7DE4,0x4E24, /* Array index: 0x0658 */ 0x7DE5,0x4E2F, /* Array index: 0x0658 */ 0x7DEB,0x4E2E, /* Array index: 0x0658 */ 0x7DED,0x4D77, /* Array index: 0x0658 */ 0x7DF5,0x4E2B, /* Array index: 0x0658 */ 0x7DF8,0x4D75, /* Array index: 0x0658 */ 0x7E07,0x662A, /* Array index: 0x0658 */ 0x7E19,0x523B, /* Array index: 0x0658 */ 0x7E26,0x5240, /* Array index: 0x0658 */ 0x7E27,0x523F, /* Array index: 0x0658 */ 0x7E2C,0x5579, /* Array index: 0x0658 */ 0x7E4D,0x557A, /* Array index: 0x0658 */ 0x7E4F,0x5859, /* Array index: 0x0658 */ 0x7E5B,0x585B, /* Array index: 0x0658 */ 0x7E5D,0x5858, /* Array index: 0x0658 */ 0x7E64,0x662C, /* Array index: 0x0658 */ 0x7E66,0x585A, /* Array index: 0x0658 */ 0x7E6C,0x5A72, /* Array index: 0x0658 */ 0x7E6E,0x5A74, /* Array index: 0x0658 */ 0x7E71,0x5A75, /* Array index: 0x0658 */ 0x7E7F,0x5C6C, /* Array index: 0x0658 */ 0x7E84,0x5E53, /* Array index: 0x0658 */ 0x7E85,0x5E50, /* Array index: 0x0658 */ 0x7E89,0x5E51, /* Array index: 0x0658 */ 0x7E8E,0x5E52, /* Array index: 0x0658 */ 0x7E92,0x5F5A, /* Array index: 0x0658 */ 0x7E9E,0x6235, /* Array index: 0x0658 */ 0x7F3B,0x3831, /* Array index: 0x0658 */ 0x7F40,0x662D, /* Array index: 0x0658 */ 0x7F41,0x4877, /* Array index: 0x0658 */ 0x7F46,0x557D, /* Array index: 0x0658 */ 0x7F47,0x585C, /* Array index: 0x0658 */ 0x7F4E,0x5F5B, /* Array index: 0x0658 */ 0x7F59,0x2A4E, /* Array index: 0x0658 */ 0x7F62,0x333C, /* Array index: 0x0658 */ 0x7F6F,0x4878, /* Array index: 0x0658 */ 0x7F71,0x4879, /* Array index: 0x0658 */ 0x7F78,0x4E30, /* Array index: 0x0658 */ 0x7F84,0x6422, /* Array index: 0x0658 */ 0x7F8F,0x2E5D, /* Array index: 0x0658 */ 0x7F93,0x333D, /* Array index: 0x0658 */ 0x7F97,0x333F, /* Array index: 0x0658 */ 0x7F99,0x333E, /* Array index: 0x0658 */ 0x7FA3,0x436E, /* Array index: 0x0658 */ 0x7FAE,0x4E31, /* Array index: 0x0658 */ 0x7FB4,0x585D, /* Array index: 0x0658 */ 0x7FC4,0x3342, /* Array index: 0x0658 */ 0x7FC6,0x3343, /* Array index: 0x0658 */ 0x7FD3,0x3E37, /* Array index: 0x0658 */ 0x7FD6,0x3E38, /* Array index: 0x0658 */ 0x7FDD,0x4372, /* Array index: 0x0658 */ 0x7FE7,0x4E32, /* Array index: 0x0658 */ 0x7FF6,0x557E, /* Array index: 0x0658 */ 0x7FFA,0x5861, /* Array index: 0x0658 */ 0x8002,0x667B, /* Array index: 0x0658 */ 0x8008,0x3836, /* Array index: 0x0658 */ 0x800A,0x3344, /* Array index: 0x0658 */ 0x801A,0x3837, /* Array index: 0x0658 */ 0x801D,0x3839, /* Array index: 0x0658 */ 0x8023,0x4922, /* Array index: 0x0658 */ 0x802B,0x5621, /* Array index: 0x0658 */ 0x802E,0x5862, /* Array index: 0x0658 */ 0x802F,0x5C6F, /* Array index: 0x0658 */ 0x803B,0x3349, /* Array index: 0x0658 */ 0x803C,0x3348, /* Array index: 0x0658 */ 0x8040,0x3347, /* Array index: 0x0658 */ 0x8041,0x662F, /* Array index: 0x0658 */ 0x8044,0x383D, /* Array index: 0x0658 */ 0x8045,0x383C, /* Array index: 0x0658 */ 0x8049,0x383B, /* Array index: 0x0658 */ 0x804E,0x3E3C, /* Array index: 0x0658 */ 0x8053,0x6729, /* Array index: 0x0658 */ 0x8057,0x4373, /* Array index: 0x0658 */ 0x8059,0x6356, /* Array index: 0x0658 */ 0x805B,0x4923, /* Array index: 0x0658 */ 0x806E,0x5243, /* Array index: 0x0658 */ 0x8074,0x5622, /* Array index: 0x0658 */ 0x808D,0x2435, /* Array index: 0x0658 */ 0x808E,0x2436, /* Array index: 0x0658 */ 0x8091,0x2724, /* Array index: 0x0658 */ 0x8094,0x2726, /* Array index: 0x0658 */ 0x8097,0x2725, /* Array index: 0x0658 */ 0x809F,0x2723, /* Array index: 0x0658 */ 0x80AC,0x2A59, /* Array index: 0x0658 */ 0x80B0,0x2A52, /* Array index: 0x0658 */ 0x80B3,0x2A54, /* Array index: 0x0658 */ 0x80B6,0x2A57, /* Array index: 0x0658 */ 0x80BB,0x6631, /* Array index: 0x0658 */ 0x80C6,0x2E66, /* Array index: 0x0658 */ 0x80CB,0x2E60, /* Array index: 0x0658 */ 0x80D2,0x2E61, /* Array index: 0x0658 */ 0x80D3,0x2E5E, /* Array index: 0x0658 */ 0x80DF,0x2E65, /* Array index: 0x0658 */ 0x80E2,0x2E64, /* Array index: 0x0658 */ 0x80EE,0x334C, /* Array index: 0x0658 */ 0x80F6,0x334A, /* Array index: 0x0658 */ 0x80F7,0x3352, /* Array index: 0x0658 */ 0x80FF,0x334B, /* Array index: 0x0658 */ 0x8103,0x334E, /* Array index: 0x0658 */ 0x8104,0x334D, /* Array index: 0x0658 */ 0x8107,0x334F, /* Array index: 0x0658 */ 0x8109,0x2E63, /* Array index: 0x0658 */ 0x8114,0x3E44, /* Array index: 0x0658 */ 0x8117,0x3849, /* Array index: 0x0658 */ 0x811A,0x3847, /* Array index: 0x0658 */ 0x8128,0x632E, /* Array index: 0x0658 */ 0x812A,0x3841, /* Array index: 0x0658 */ 0x812E,0x3842, /* Array index: 0x0658 */ 0x8131,0x3845, /* Array index: 0x0658 */ 0x8134,0x3848, /* Array index: 0x0658 */ 0x813B,0x3E3E, /* Array index: 0x0658 */ 0x8145,0x3E3D, /* Array index: 0x0658 */ 0x8148,0x3E40, /* Array index: 0x0658 */ 0x8149,0x3E42, /* Array index: 0x0658 */ 0x815D,0x437B, /* Array index: 0x0658 */ 0x815F,0x437E, /* Array index: 0x0658 */ 0x8163,0x4375, /* Array index: 0x0658 */ 0x816A,0x4376, /* Array index: 0x0658 */ 0x816C,0x4377, /* Array index: 0x0658 */ 0x816D,0x4423, /* Array index: 0x0658 */ 0x8175,0x437C, /* Array index: 0x0658 */ 0x817D,0x4422, /* Array index: 0x0658 */ 0x8181,0x4927, /* Array index: 0x0658 */ 0x8184,0x492A, /* Array index: 0x0658 */ 0x81A1,0x4E3A, /* Array index: 0x0658 */ 0x81AA,0x5249, /* Array index: 0x0658 */ 0x81AD,0x5247, /* Array index: 0x0658 */ 0x81AF,0x5244, /* Array index: 0x0658 */ 0x81B8,0x5623, /* Array index: 0x0658 */ 0x81C8,0x5624, /* Array index: 0x0658 */ 0x81CE,0x5865, /* Array index: 0x0658 */ 0x81D4,0x5A77, /* Array index: 0x0658 */ 0x81D6,0x5A78, /* Array index: 0x0658 */ 0x81EF,0x3E47, /* Array index: 0x0658 */ 0x81F6,0x3E48, /* Array index: 0x0658 */ 0x8203,0x3E49, /* Array index: 0x0658 */ 0x820E,0x2A5D, /* Array index: 0x0658 */ 0x8213,0x492B, /* Array index: 0x0658 */ 0x8224,0x2E68, /* Array index: 0x0658 */ 0x8227,0x3357, /* Array index: 0x0658 */ 0x8229,0x3358, /* Array index: 0x0658 */ 0x822D,0x3355, /* Array index: 0x0658 */ 0x8241,0x4426, /* Array index: 0x0658 */ 0x8248,0x6634, /* Array index: 0x0658 */ 0x824A,0x492D, /* Array index: 0x0658 */ 0x824C,0x492E, /* Array index: 0x0658 */ 0x8262,0x5A7A, /* Array index: 0x0658 */ 0x8265,0x5A7B, /* Array index: 0x0658 */ 0x826A,0x5E55, /* Array index: 0x0658 */ 0x8276,0x5A7C, /* Array index: 0x0658 */ 0x827B,0x2438, /* Array index: 0x0658 */ 0x8286,0x2728, /* Array index: 0x0658 */ 0x828C,0x2729, /* Array index: 0x0658 */ 0x8295,0x272B, /* Array index: 0x0658 */ 0x829C,0x2A60, /* Array index: 0x0658 */ 0x82A6,0x2A6B, /* Array index: 0x0658 */ 0x82AA,0x2A66, /* Array index: 0x0658 */ 0x82B2,0x2A6C, /* Array index: 0x0658 */ 0x82C4,0x2A5E, /* Array index: 0x0658 */ 0x82C9,0x2A68, /* Array index: 0x0658 */ 0x82D0,0x2E76, /* Array index: 0x0658 */ 0x82D8,0x2E6A, /* Array index: 0x0658 */ 0x82DD,0x2E6B, /* Array index: 0x0658 */ 0x82E2,0x2E78, /* Array index: 0x0658 */ 0x82E9,0x2E72, /* Array index: 0x0658 */ 0x82EE,0x2E74, /* Array index: 0x0658 */ 0x82F7,0x2E69, /* Array index: 0x0658 */ 0x82F8,0x2E6E, /* Array index: 0x0658 */ 0x82FC,0x2E6F, /* Array index: 0x0658 */ 0x82FD,0x2E7A, /* Array index: 0x0658 */ 0x830B,0x2E79, /* Array index: 0x0658 */ 0x830E,0x2E77, /* Array index: 0x0658 */ 0x8310,0x6635, /* Array index: 0x0658 */ 0x8312,0x6637, /* Array index: 0x0658 */ 0x8318,0x3362, /* Array index: 0x0658 */ 0x831D,0x384D, /* Array index: 0x0658 */ 0x831F,0x3359, /* Array index: 0x0658 */ 0x8321,0x335F, /* Array index: 0x0658 */ 0x8323,0x385B, /* Array index: 0x0658 */ 0x833E,0x2A5F, /* Array index: 0x0658 */ 0x8346,0x3E57, /* Array index: 0x0658 */ 0x8357,0x335A, /* Array index: 0x0658 */ 0x8358,0x3363, /* Array index: 0x0658 */ 0x8362,0x6636, /* Array index: 0x0658 */ 0x8363,0x2D33, /* Array index: 0x0658 */ 0x8371,0x384E, /* Array index: 0x0658 */ 0x8372,0x3851, /* Array index: 0x0658 */ 0x8379,0x3854, /* Array index: 0x0658 */ 0x8380,0x3850, /* Array index: 0x0658 */ 0x8384,0x384F, /* Array index: 0x0658 */ 0x8385,0x385D, /* Array index: 0x0658 */ 0x8391,0x3855, /* Array index: 0x0658 */ 0x839C,0x385E, /* Array index: 0x0658 */ 0x839F,0x3857, /* Array index: 0x0658 */ 0x83A1,0x3852, /* Array index: 0x0658 */ 0x83AD,0x3858, /* Array index: 0x0658 */ 0x83B7,0x385F, /* Array index: 0x0658 */ 0x83CD,0x3E5E, /* Array index: 0x0658 */ 0x83D2,0x3E4F, /* Array index: 0x0658 */ 0x83D3,0x3E59, /* Array index: 0x0658 */ 0x83DA,0x3E4D, /* Array index: 0x0658 */ 0x83E6,0x3E5F, /* Array index: 0x0658 */ 0x83ED,0x3E4B, /* Array index: 0x0658 */ 0x8400,0x3E52, /* Array index: 0x0658 */ 0x8402,0x3E5C, /* Array index: 0x0658 */ 0x8405,0x3E5A, /* Array index: 0x0658 */ 0x8408,0x3E50, /* Array index: 0x0658 */ 0x841E,0x6639, /* Array index: 0x0658 */ 0x841F,0x3E5B, /* Array index: 0x0658 */ 0x8421,0x6638, /* Array index: 0x0658 */ 0x842A,0x442D, /* Array index: 0x0658 */ 0x842E,0x4431, /* Array index: 0x0658 */ 0x843E,0x443A, /* Array index: 0x0658 */ 0x8441,0x4435, /* Array index: 0x0658 */ 0x8448,0x442C, /* Array index: 0x0658 */ 0x844A,0x443E, /* Array index: 0x0658 */ 0x844F,0x4427, /* Array index: 0x0658 */ 0x8453,0x4433, /* Array index: 0x0658 */ 0x8455,0x443F, /* Array index: 0x0658 */ 0x8458,0x4440, /* Array index: 0x0658 */ 0x845C,0x4432, /* Array index: 0x0658 */ 0x8462,0x4438, /* Array index: 0x0658 */ 0x8464,0x4430, /* Array index: 0x0658 */ 0x8471,0x443C, /* Array index: 0x0658 */ 0x8472,0x442F, /* Array index: 0x0658 */ 0x847B,0x442E, /* Array index: 0x0658 */ 0x847F,0x442A, /* Array index: 0x0658 */ 0x8480,0x4439, /* Array index: 0x0658 */ 0x8483,0x443B, /* Array index: 0x0658 */ 0x8484,0x4428, /* Array index: 0x0658 */ 0x84A3,0x493C, /* Array index: 0x0658 */ 0x84A5,0x4939, /* Array index: 0x0658 */ 0x84AD,0x4942, /* Array index: 0x0658 */ 0x84B3,0x493B, /* Array index: 0x0658 */ 0x84B5,0x493A, /* Array index: 0x0658 */ 0x84B7,0x4941, /* Array index: 0x0658 */ 0x84BD,0x4932, /* Array index: 0x0658 */ 0x84C3,0x4936, /* Array index: 0x0658 */ 0x84C8,0x4436, /* Array index: 0x0658 */ 0x84D5,0x493F, /* Array index: 0x0658 */ 0x84D8,0x493E, /* Array index: 0x0658 */ 0x84DA,0x4943, /* Array index: 0x0658 */ 0x84DE,0x663B, /* Array index: 0x0658 */ 0x84E1,0x663C, /* Array index: 0x0658 */ 0x84E2,0x663A, /* Array index: 0x0658 */ 0x84E4,0x493D, /* Array index: 0x0658 */ 0x84ED,0x4E4F, /* Array index: 0x0658 */ 0x84F5,0x4E44, /* Array index: 0x0658 */ 0x84F8,0x4E42, /* Array index: 0x0658 */ 0x851B,0x4E4B, /* Array index: 0x0658 */ 0x853F,0x525A, /* Array index: 0x0658 */ 0x8542,0x5252, /* Array index: 0x0658 */ 0x854B,0x5259, /* Array index: 0x0658 */ 0x854C,0x5250, /* Array index: 0x0658 */ 0x855A,0x5258, /* Array index: 0x0658 */ 0x855C,0x5254, /* Array index: 0x0658 */ 0x855F,0x5256, /* Array index: 0x0658 */ 0x856F,0x524F, /* Array index: 0x0658 */ 0x8570,0x5255, /* Array index: 0x0658 */ 0x8573,0x663D, /* Array index: 0x0658 */ 0x857F,0x562B, /* Array index: 0x0658 */ 0x8592,0x5628, /* Array index: 0x0658 */ 0x8593,0x5629, /* Array index: 0x0658 */ 0x8597,0x562D, /* Array index: 0x0658 */ 0x85AB,0x562C, /* Array index: 0x0658 */ 0x85AC,0x5630, /* Array index: 0x0658 */ 0x85B2,0x586C, /* Array index: 0x0658 */ 0x85BB,0x586E, /* Array index: 0x0658 */ 0x85C1,0x586F, /* Array index: 0x0658 */ 0x85CC,0x586B, /* Array index: 0x0658 */ 0x85D4,0x663E, /* Array index: 0x0658 */ 0x85D6,0x5A7E, /* Array index: 0x0658 */ 0x85DB,0x5A7D, /* Array index: 0x0658 */ 0x85E7,0x5B22, /* Array index: 0x0658 */ 0x85EE,0x5C7B, /* Array index: 0x0658 */ 0x85F4,0x5B25, /* Array index: 0x0658 */ 0x85F5,0x663F, /* Array index: 0x0658 */ 0x85FC,0x5C76, /* Array index: 0x0658 */ 0x8602,0x5C78, /* Array index: 0x0658 */ 0x8603,0x5C7C, /* Array index: 0x0658 */ 0x8608,0x5D22, /* Array index: 0x0658 */ 0x860D,0x5C7E, /* Array index: 0x0658 */ 0x860F,0x5D23, /* Array index: 0x0658 */ 0x8610,0x5C77, /* Array index: 0x0658 */ 0x8613,0x5D21, /* Array index: 0x0658 */ 0x8615,0x5E5B, /* Array index: 0x0658 */ 0x8616,0x5E5A, /* Array index: 0x0658 */ 0x861D,0x5E5C, /* Array index: 0x0658 */ 0x8628,0x5E58, /* Array index: 0x0658 */ 0x862B,0x5E56, /* Array index: 0x0658 */ 0x862F,0x5E57, /* Array index: 0x0658 */ 0x8637,0x6640, /* Array index: 0x0658 */ 0x863D,0x6043, /* Array index: 0x0658 */ 0x8641,0x602F, /* Array index: 0x0658 */ 0x8642,0x6146, /* Array index: 0x0658 */ 0x8645,0x6641, /* Array index: 0x0658 */ 0x8649,0x6147, /* Array index: 0x0658 */ 0x864A,0x617C, /* Array index: 0x0658 */ 0x8657,0x3863, /* Array index: 0x0658 */ 0x8658,0x3860, /* Array index: 0x0658 */ 0x865A,0x3861, /* Array index: 0x0658 */ 0x865D,0x3E61, /* Array index: 0x0658 */ 0x866C,0x272D, /* Array index: 0x0658 */ 0x8672,0x6642, /* Array index: 0x0658 */ 0x8675,0x2F23, /* Array index: 0x0658 */ 0x8676,0x2E7C, /* Array index: 0x0658 */ 0x8678,0x2E7E, /* Array index: 0x0658 */ 0x867D,0x2F24, /* Array index: 0x0658 */ 0x8684,0x3369, /* Array index: 0x0658 */ 0x8689,0x336C, /* Array index: 0x0658 */ 0x868F,0x336F, /* Array index: 0x0658 */ 0x8692,0x336E, /* Array index: 0x0658 */ 0x869B,0x336B, /* Array index: 0x0658 */ 0x869F,0x336A, /* Array index: 0x0658 */ 0x86A0,0x3370, /* Array index: 0x0658 */ 0x86A6,0x336D, /* Array index: 0x0658 */ 0x86AE,0x3866, /* Array index: 0x0658 */ 0x86B2,0x3864, /* Array index: 0x0658 */ 0x86D5,0x3E62, /* Array index: 0x0658 */ 0x86E1,0x3E63, /* Array index: 0x0658 */ 0x86EE,0x3E68, /* Array index: 0x0658 */ 0x86FC,0x4444, /* Array index: 0x0658 */ 0x86FD,0x4445, /* Array index: 0x0658 */ 0x86FF,0x4449, /* Array index: 0x0658 */ 0x8715,0x4446, /* Array index: 0x0658 */ 0x8716,0x4448, /* Array index: 0x0658 */ 0x871D,0x494F, /* Array index: 0x0658 */ 0x872B,0x494A, /* Array index: 0x0658 */ 0x8736,0x4945, /* Array index: 0x0658 */ 0x8739,0x494C, /* Array index: 0x0658 */ 0x873D,0x4949, /* Array index: 0x0658 */ 0x8745,0x494E, /* Array index: 0x0658 */ 0x8747,0x494B, /* Array index: 0x0658 */ 0x874A,0x6643, /* Array index: 0x0658 */ 0x8771,0x4E5D, /* Array index: 0x0658 */ 0x877D,0x4E59, /* Array index: 0x0658 */ 0x878A,0x525B, /* Array index: 0x0658 */ 0x878B,0x525D, /* Array index: 0x0658 */ 0x878E,0x525F, /* Array index: 0x0658 */ 0x8799,0x5262, /* Array index: 0x0658 */ 0x87A1,0x525E, /* Array index: 0x0658 */ 0x87A5,0x6645, /* Array index: 0x0658 */ 0x87A9,0x6644, /* Array index: 0x0658 */ 0x87B1,0x563A, /* Array index: 0x0658 */ 0x87C1,0x5639, /* Array index: 0x0658 */ 0x87C7,0x563B, /* Array index: 0x0658 */ 0x87CD,0x5636, /* Array index: 0x0658 */ 0x87CE,0x5634, /* Array index: 0x0658 */ 0x87D5,0x5B28, /* Array index: 0x0658 */ 0x87D6,0x5876, /* Array index: 0x0658 */ 0x87DA,0x5878, /* Array index: 0x0658 */ 0x87E9,0x5873, /* Array index: 0x0658 */ 0x87EE,0x5874, /* Array index: 0x0658 */ 0x87F0,0x5875, /* Array index: 0x0658 */ 0x87F5,0x6646, /* Array index: 0x0658 */ 0x87F8,0x5B2C, /* Array index: 0x0658 */ 0x87FD,0x5B27, /* Array index: 0x0658 */ 0x8807,0x5B29, /* Array index: 0x0658 */ 0x880E,0x5877, /* Array index: 0x0658 */ 0x880F,0x5B2B, /* Array index: 0x0658 */ 0x8812,0x5D25, /* Array index: 0x0658 */ 0x8818,0x5D24, /* Array index: 0x0658 */ 0x881A,0x5E5D, /* Array index: 0x0658 */ 0x8827,0x5F5F, /* Array index: 0x0658 */ 0x882D,0x6045, /* Array index: 0x0658 */ 0x8834,0x6647, /* Array index: 0x0658 */ 0x8842,0x2F26, /* Array index: 0x0658 */ 0x884F,0x3371, /* Array index: 0x0658 */ 0x8850,0x6648, /* Array index: 0x0658 */ 0x8858,0x444D, /* Array index: 0x0658 */ 0x885C,0x4E5F, /* Array index: 0x0658 */ 0x885E,0x5263, /* Array index: 0x0658 */ 0x885F,0x5264, /* Array index: 0x0658 */ 0x8866,0x2F27, /* Array index: 0x0658 */ 0x886E,0x3374, /* Array index: 0x0658 */ 0x8873,0x3377, /* Array index: 0x0658 */ 0x8878,0x3372, /* Array index: 0x0658 */ 0x887A,0x3373, /* Array index: 0x0658 */ 0x887B,0x3375, /* Array index: 0x0658 */ 0x8884,0x3376, /* Array index: 0x0658 */ 0x8887,0x6649, /* Array index: 0x0658 */ 0x888A,0x3872, /* Array index: 0x0658 */ 0x888F,0x386E, /* Array index: 0x0658 */ 0x8890,0x3874, /* Array index: 0x0658 */ 0x8894,0x386C, /* Array index: 0x0658 */ 0x889C,0x386B, /* Array index: 0x0658 */ 0x88A0,0x3873, /* Array index: 0x0658 */ 0x88A3,0x386D, /* Array index: 0x0658 */ 0x88A5,0x386F, /* Array index: 0x0658 */ 0x88A6,0x3871, /* Array index: 0x0658 */ 0x88A9,0x3870, /* Array index: 0x0658 */ 0x88B4,0x3E70, /* Array index: 0x0658 */ 0x88B5,0x3E72, /* Array index: 0x0658 */ 0x88BB,0x3E6D, /* Array index: 0x0658 */ 0x88BF,0x3E6F, /* Array index: 0x0658 */ 0x88CF,0x444E, /* Array index: 0x0658 */ 0x88E0,0x444F, /* Array index: 0x0658 */ 0x88E6,0x4E60, /* Array index: 0x0658 */ 0x88E9,0x4959, /* Array index: 0x0658 */ 0x88EA,0x4952, /* Array index: 0x0658 */ 0x88ED,0x4957, /* Array index: 0x0658 */ 0x88F5,0x4954, /* Array index: 0x0658 */ 0x88FF,0x4951, /* Array index: 0x0658 */ 0x8900,0x4956, /* Array index: 0x0658 */ 0x8903,0x4958, /* Array index: 0x0658 */ 0x890F,0x4E61, /* Array index: 0x0658 */ 0x891B,0x4E62, /* Array index: 0x0658 */ 0x8924,0x5265, /* Array index: 0x0658 */ 0x8939,0x5640, /* Array index: 0x0658 */ 0x893F,0x563F, /* Array index: 0x0658 */ 0x8940,0x563D, /* Array index: 0x0658 */ 0x8943,0x5642, /* Array index: 0x0658 */ 0x8948,0x5879, /* Array index: 0x0658 */ 0x894A,0x587A, /* Array index: 0x0658 */ 0x894D,0x587C, /* Array index: 0x0658 */ 0x894E,0x587B, /* Array index: 0x0658 */ 0x8954,0x664A, /* Array index: 0x0658 */ 0x8965,0x5D29, /* Array index: 0x0658 */ 0x8967,0x5D28, /* Array index: 0x0658 */ 0x8978,0x6149, /* Array index: 0x0658 */ 0x897D,0x617D, /* Array index: 0x0658 */ 0x8984,0x664B, /* Array index: 0x0658 */ 0x8987,0x5B2F, /* Array index: 0x0658 */ 0x8989,0x6046, /* Array index: 0x0658 */ 0x898A,0x614A, /* Array index: 0x0658 */ 0x898C,0x2F29, /* Array index: 0x0658 */ 0x8991,0x3876, /* Array index: 0x0658 */ 0x8992,0x3875, /* Array index: 0x0658 */ 0x8994,0x3877, /* Array index: 0x0658 */ 0x899A,0x3E74, /* Array index: 0x0658 */ 0x89A5,0x4E65, /* Array index: 0x0658 */ 0x89A7,0x5266, /* Array index: 0x0658 */ 0x89A9,0x4E64, /* Array index: 0x0658 */ 0x89AB,0x5646, /* Array index: 0x0658 */ 0x89B0,0x587E, /* Array index: 0x0658 */ 0x89B1,0x587D, /* Array index: 0x0658 */ 0x89B3,0x5921, /* Array index: 0x0658 */ 0x89B5,0x5B31, /* Array index: 0x0658 */ 0x89BB,0x5D2A, /* Array index: 0x0658 */ 0x89BC,0x5E61, /* Array index: 0x0658 */ 0x89E7,0x4454, /* Array index: 0x0658 */ 0x89EA,0x495C, /* Array index: 0x0658 */ 0x89EE,0x4E66, /* Array index: 0x0658 */ 0x89F5,0x5B32, /* Array index: 0x0658 */ 0x8A05,0x2F2A, /* Array index: 0x0658 */ 0x8A06,0x2F2C, /* Array index: 0x0658 */ 0x8A0B,0x337B, /* Array index: 0x0658 */ 0x8A0D,0x337A, /* Array index: 0x0658 */ 0x8A19,0x337C, /* Array index: 0x0658 */ 0x8A1C,0x387E, /* Array index: 0x0658 */ 0x8A20,0x3923, /* Array index: 0x0658 */ 0x8A21,0x3929, /* Array index: 0x0658 */ 0x8A26,0x3879, /* Array index: 0x0658 */ 0x8A28,0x387B, /* Array index: 0x0658 */ 0x8A29,0x3925, /* Array index: 0x0658 */ 0x8A2B,0x3922, /* Array index: 0x0658 */ 0x8A2E,0x6330, /* Array index: 0x0658 */ 0x8A32,0x387A, /* Array index: 0x0658 */ 0x8A35,0x3E7C, /* Array index: 0x0658 */ 0x8A38,0x3E7D, /* Array index: 0x0658 */ 0x8A3D,0x3F24, /* Array index: 0x0658 */ 0x8A42,0x3E7E, /* Array index: 0x0658 */ 0x8A43,0x3E75, /* Array index: 0x0658 */ 0x8A49,0x3F21, /* Array index: 0x0658 */ 0x8A4B,0x3F23, /* Array index: 0x0658 */ 0x8A5A,0x3E78, /* Array index: 0x0658 */ 0x8A5D,0x3F22, /* Array index: 0x0658 */ 0x8A64,0x4460, /* Array index: 0x0658 */ 0x8A65,0x4459, /* Array index: 0x0658 */ 0x8A67,0x4463, /* Array index: 0x0658 */ 0x8A6A,0x4455, /* Array index: 0x0658 */ 0x8A6F,0x4458, /* Array index: 0x0658 */ 0x8A78,0x445B, /* Array index: 0x0658 */ 0x8A7D,0x445C, /* Array index: 0x0658 */ 0x8A7E,0x4461, /* Array index: 0x0658 */ 0x8A80,0x4456, /* Array index: 0x0658 */ 0x8A88,0x445D, /* Array index: 0x0658 */ 0x8A8E,0x495F, /* Array index: 0x0658 */ 0x8A90,0x4964, /* Array index: 0x0658 */ 0x8A94,0x4963, /* Array index: 0x0658 */ 0x8AA2,0x4960, /* Array index: 0x0658 */ 0x8AA9,0x4965, /* Array index: 0x0658 */ 0x8AAC,0x4966, /* Array index: 0x0658 */ 0x8AAF,0x4E74, /* Array index: 0x0658 */ 0x8AC1,0x4E73, /* Array index: 0x0658 */ 0x8ACA,0x4E75, /* Array index: 0x0658 */ 0x8ACC,0x4E69, /* Array index: 0x0658 */ 0x8ACE,0x4E6A, /* Array index: 0x0658 */ 0x8AD0,0x4E76, /* Array index: 0x0658 */ 0x8AE3,0x526A, /* Array index: 0x0658 */ 0x8AE5,0x526B, /* Array index: 0x0658 */ 0x8AE9,0x4E6F, /* Array index: 0x0658 */ 0x8AEA,0x5267, /* Array index: 0x0658 */ 0x8AEC,0x526E, /* Array index: 0x0658 */ 0x8AF9,0x5269, /* Array index: 0x0658 */ 0x8AFD,0x5268, /* Array index: 0x0658 */ 0x8B03,0x664C, /* Array index: 0x0658 */ 0x8B09,0x5649, /* Array index: 0x0658 */ 0x8B0C,0x564A, /* Array index: 0x0658 */ 0x8B1F,0x5648, /* Array index: 0x0658 */ 0x8B29,0x592A, /* Array index: 0x0658 */ 0x8B2D,0x5926, /* Array index: 0x0658 */ 0x8B32,0x5924, /* Array index: 0x0658 */ 0x8B34,0x5928, /* Array index: 0x0658 */ 0x8B38,0x5923, /* Array index: 0x0658 */ 0x8B3F,0x5B34, /* Array index: 0x0658 */ 0x8B43,0x5B35, /* Array index: 0x0658 */ 0x8B4C,0x5B36, /* Array index: 0x0658 */ 0x8B4D,0x5D33, /* Array index: 0x0658 */ 0x8B61,0x5D30, /* Array index: 0x0658 */ 0x8B62,0x5D2C, /* Array index: 0x0658 */ 0x8B64,0x5D32, /* Array index: 0x0658 */ 0x8B69,0x5D2B, /* Array index: 0x0658 */ 0x8B6E,0x5D2E, /* Array index: 0x0658 */ 0x8B71,0x5C6D, /* Array index: 0x0658 */ 0x8B73,0x642D, /* Array index: 0x0658 */ 0x8B75,0x5E62, /* Array index: 0x0658 */ 0x8B7C,0x5E63, /* Array index: 0x0658 */ 0x8B81,0x5F61, /* Array index: 0x0658 */ 0x8B83,0x5F62, /* Array index: 0x0658 */ 0x8B87,0x6048, /* Array index: 0x0658 */ 0x8B8D,0x6047, /* Array index: 0x0658 */ 0x8B90,0x6049, /* Array index: 0x0658 */ 0x8B91,0x607B, /* Array index: 0x0658 */ 0x8B97,0x614B, /* Array index: 0x0658 */ 0x8B9B,0x616B, /* Array index: 0x0658 */ 0x8B9D,0x617E, /* Array index: 0x0658 */ 0x8C3A,0x392A, /* Array index: 0x0658 */ 0x8C40,0x564D, /* Array index: 0x0658 */ 0x8C44,0x5F64, /* Array index: 0x0658 */ 0x8C58,0x392D, /* Array index: 0x0658 */ 0x8C5B,0x392C, /* Array index: 0x0658 */ 0x8C5E,0x3F2A, /* Array index: 0x0658 */ 0x8C60,0x3F29, /* Array index: 0x0658 */ 0x8C63,0x4464, /* Array index: 0x0658 */ 0x8C67,0x496D, /* Array index: 0x0658 */ 0x8C74,0x592B, /* Array index: 0x0658 */ 0x8C7C,0x392E, /* Array index: 0x0658 */ 0x8C7E,0x3F2C, /* Array index: 0x0658 */ 0x8C7F,0x3F2B, /* Array index: 0x0658 */ 0x8C83,0x3F2D, /* Array index: 0x0658 */ 0x8C87,0x634A, /* Array index: 0x0658 */ 0x8C88,0x4465, /* Array index: 0x0658 */ 0x8C8E,0x4E7A, /* Array index: 0x0658 */ 0x8C96,0x564F, /* Array index: 0x0658 */ 0x8C9B,0x614D, /* Array index: 0x0658 */ 0x8C9F,0x2F2E, /* Array index: 0x0658 */ 0x8CA6,0x3930, /* Array index: 0x0658 */ 0x8CAD,0x3932, /* Array index: 0x0658 */ 0x8CAE,0x3931, /* Array index: 0x0658 */ 0x8CB1,0x3F2F, /* Array index: 0x0658 */ 0x8CC9,0x4469, /* Array index: 0x0658 */ 0x8CCD,0x4467, /* Array index: 0x0658 */ 0x8CD0,0x4970, /* Array index: 0x0658 */ 0x8CD4,0x4972, /* Array index: 0x0658 */ 0x8CD6,0x4971, /* Array index: 0x0658 */ 0x8CD8,0x664E, /* Array index: 0x0658 */ 0x8CDB,0x4E7E, /* Array index: 0x0658 */ 0x8CE9,0x4E7D, /* Array index: 0x0658 */ 0x8CEB,0x4F22, /* Array index: 0x0658 */ 0x8CEF,0x5275, /* Array index: 0x0658 */ 0x8CF2,0x5273, /* Array index: 0x0658 */ 0x8CF6,0x5651, /* Array index: 0x0658 */ 0x8CF7,0x5652, /* Array index: 0x0658 */ 0x8D03,0x592E, /* Array index: 0x0658 */ 0x8D0B,0x5B38, /* Array index: 0x0658 */ 0x8D0C,0x664F, /* Array index: 0x0658 */ 0x8D0E,0x6428, /* Array index: 0x0658 */ 0x8D11,0x5E65, /* Array index: 0x0658 */ 0x8D12,0x5E66, /* Array index: 0x0658 */ 0x8D18,0x6650, /* Array index: 0x0658 */ 0x8D1A,0x604A, /* Array index: 0x0658 */ 0x8D1C,0x614E, /* Array index: 0x0658 */ 0x8D65,0x3933, /* Array index: 0x0658 */ 0x8D71,0x243A, /* Array index: 0x0658 */ 0x8D7A,0x3939, /* Array index: 0x0658 */ 0x8D7C,0x3937, /* Array index: 0x0658 */ 0x8D7E,0x3935, /* Array index: 0x0658 */ 0x8D7F,0x3938, /* Array index: 0x0658 */ 0x8D8B,0x3F38, /* Array index: 0x0658 */ 0x8D97,0x4975, /* Array index: 0x0658 */ 0x8D98,0x4973, /* Array index: 0x0658 */ 0x8D9A,0x4974, /* Array index: 0x0658 */ 0x8D9D,0x4F26, /* Array index: 0x0658 */ 0x8DA2,0x4F25, /* Array index: 0x0658 */ 0x8DA4,0x4F23, /* Array index: 0x0658 */ 0x8DA6,0x5277, /* Array index: 0x0658 */ 0x8DA9,0x5931, /* Array index: 0x0658 */ 0x8DB0,0x6651, /* Array index: 0x0658 */ 0x8DBB,0x393E, /* Array index: 0x0658 */ 0x8DBD,0x393A, /* Array index: 0x0658 */ 0x8DC0,0x393D, /* Array index: 0x0658 */ 0x8DC9,0x3F3F, /* Array index: 0x0658 */ 0x8DCA,0x3F3A, /* Array index: 0x0658 */ 0x8DD2,0x3F3B, /* Array index: 0x0658 */ 0x8DD4,0x3F3E, /* Array index: 0x0658 */ 0x8DED,0x446B, /* Array index: 0x0658 */ 0x8E01,0x497B, /* Array index: 0x0658 */ 0x8E08,0x497A, /* Array index: 0x0658 */ 0x8E0B,0x4979, /* Array index: 0x0658 */ 0x8E28,0x4F2C, /* Array index: 0x0658 */ 0x8E2A,0x4F2B, /* Array index: 0x0658 */ 0x8E32,0x527E, /* Array index: 0x0658 */ 0x8E3B,0x527B, /* Array index: 0x0658 */ 0x8E43,0x527C, /* Array index: 0x0658 */ 0x8E46,0x5654, /* Array index: 0x0658 */ 0x8E4F,0x5655, /* Array index: 0x0658 */ 0x8E58,0x5932, /* Array index: 0x0658 */ 0x8E68,0x5B3A, /* Array index: 0x0658 */ 0x8E6B,0x5B39, /* Array index: 0x0658 */ 0x8E70,0x5B3B, /* Array index: 0x0658 */ 0x8E75,0x5B3C, /* Array index: 0x0658 */ 0x8E77,0x5B3D, /* Array index: 0x0658 */ 0x8E83,0x5D37, /* Array index: 0x0658 */ 0x8E99,0x604B, /* Array index: 0x0658 */ 0x8EA2,0x6150, /* Array index: 0x0658 */ 0x8EA7,0x616C, /* Array index: 0x0658 */ 0x8EBC,0x6652, /* Array index: 0x0658 */ 0x8EBF,0x5935, /* Array index: 0x0658 */ 0x8EC1,0x5936, /* Array index: 0x0658 */ 0x8EC3,0x5B3F, /* Array index: 0x0658 */ 0x8EC6,0x5D38, /* Array index: 0x0658 */ 0x8ED5,0x6653, /* Array index: 0x0658 */ 0x8ED6,0x3941, /* Array index: 0x0658 */ 0x8ED9,0x3947, /* Array index: 0x0658 */ 0x8EE4,0x3F45, /* Array index: 0x0658 */ 0x8EEA,0x3F47, /* Array index: 0x0658 */ 0x8EF2,0x3F44, /* Array index: 0x0658 */ 0x8EF3,0x3F46, /* Array index: 0x0658 */ 0x8EFD,0x3F49, /* Array index: 0x0658 */ 0x8F04,0x4476, /* Array index: 0x0658 */ 0x8F19,0x4F36, /* Array index: 0x0658 */ 0x8F22,0x4F33, /* Array index: 0x0658 */ 0x8F27,0x4F35, /* Array index: 0x0658 */ 0x8F2B,0x4F34, /* Array index: 0x0658 */ 0x8F2D,0x5324, /* Array index: 0x0658 */ 0x8F30,0x5322, /* Array index: 0x0658 */ 0x8F31,0x5321, /* Array index: 0x0658 */ 0x8F3C,0x5325, /* Array index: 0x0658 */ 0x8F3D,0x5659, /* Array index: 0x0658 */ 0x8F41,0x565A, /* Array index: 0x0658 */ 0x8F4A,0x5937, /* Array index: 0x0658 */ 0x8F5C,0x5E67, /* Array index: 0x0658 */ 0x8F65,0x6222, /* Array index: 0x0658 */ 0x8FAA,0x6654, /* Array index: 0x0658 */ 0x8FAC,0x5938, /* Array index: 0x0658 */ 0x8FB3,0x4F39, /* Array index: 0x0658 */ 0x8FB5,0x272F, /* Array index: 0x0658 */ 0x8FB9,0x243B, /* Array index: 0x0658 */ 0x8FBE,0x2730, /* Array index: 0x0658 */ 0x8FC1,0x2733, /* Array index: 0x0658 */ 0x8FC7,0x2731, /* Array index: 0x0658 */ 0x8FCA,0x2A72, /* Array index: 0x0658 */ 0x8FCC,0x2A70, /* Array index: 0x0658 */ 0x8FCF,0x2A74, /* Array index: 0x0658 */ 0x8FD8,0x2A73, /* Array index: 0x0658 */ 0x8FD9,0x2A71, /* Array index: 0x0658 */ 0x8FE7,0x2F31, /* Array index: 0x0658 */ 0x8FE9,0x2F32, /* Array index: 0x0658 */ 0x8FEF,0x2F33, /* Array index: 0x0658 */ 0x8FF1,0x2F30, /* Array index: 0x0658 */ 0x8FF9,0x3425, /* Array index: 0x0658 */ 0x9008,0x3427, /* Array index: 0x0658 */ 0x9009,0x3426, /* Array index: 0x0658 */ 0x900E,0x394B, /* Array index: 0x0658 */ 0x9012,0x394A, /* Array index: 0x0658 */ 0x9013,0x394E, /* Array index: 0x0658 */ 0x9025,0x394C, /* Array index: 0x0658 */ 0x9030,0x3F55, /* Array index: 0x0658 */ 0x9037,0x3F56, /* Array index: 0x0658 */ 0x903A,0x3F54, /* Array index: 0x0658 */ 0x903B,0x3F57, /* Array index: 0x0658 */ 0x9040,0x447D, /* Array index: 0x0658 */ 0x9043,0x4479, /* Array index: 0x0658 */ 0x9045,0x447C, /* Array index: 0x0658 */ 0x9046,0x447A, /* Array index: 0x0658 */ 0x9048,0x447B, /* Array index: 0x0658 */ 0x904C,0x447E, /* Array index: 0x0658 */ 0x905A,0x4A24, /* Array index: 0x0658 */ 0x905F,0x4A27, /* Array index: 0x0658 */ 0x9061,0x4A26, /* Array index: 0x0658 */ 0x906A,0x4F3C, /* Array index: 0x0658 */ 0x9071,0x4F3B, /* Array index: 0x0658 */ 0x9089,0x593A, /* Array index: 0x0658 */ 0x9092,0x225E, /* Array index: 0x0658 */ 0x9093,0x225D, /* Array index: 0x0658 */ 0x9096,0x243C, /* Array index: 0x0658 */ 0x909A,0x243D, /* Array index: 0x0658 */ 0x909C,0x6655, /* Array index: 0x0658 */ 0x90A4,0x2735, /* Array index: 0x0658 */ 0x90A8,0x2739, /* Array index: 0x0658 */ 0x90A9,0x2734, /* Array index: 0x0658 */ 0x90AB,0x3951, /* Array index: 0x0658 */ 0x90AD,0x2A77, /* Array index: 0x0658 */ 0x90B7,0x2A75, /* Array index: 0x0658 */ 0x90B9,0x2A78, /* Array index: 0x0658 */ 0x90BC,0x2F35, /* Array index: 0x0658 */ 0x90C0,0x2F38, /* Array index: 0x0658 */ 0x90C2,0x2F34, /* Array index: 0x0658 */ 0x90C4,0x2F3E, /* Array index: 0x0658 */ 0x90C6,0x2F37, /* Array index: 0x0658 */ 0x90C9,0x2F3C, /* Array index: 0x0658 */ 0x90CD,0x2F3B, /* Array index: 0x0658 */ 0x90DE,0x3429, /* Array index: 0x0658 */ 0x90EE,0x394F, /* Array index: 0x0658 */ 0x90F6,0x636C, /* Array index: 0x0658 */ 0x90F7,0x3952, /* Array index: 0x0658 */ 0x910A,0x3F59, /* Array index: 0x0658 */ 0x910C,0x4523, /* Array index: 0x0658 */ 0x9113,0x4524, /* Array index: 0x0658 */ 0x9115,0x4525, /* Array index: 0x0658 */ 0x9125,0x4A2A, /* Array index: 0x0658 */ 0x9137,0x532B, /* Array index: 0x0658 */ 0x913C,0x593C, /* Array index: 0x0658 */ 0x913D,0x593B, /* Array index: 0x0658 */ 0x9151,0x342A, /* Array index: 0x0658 */ 0x9154,0x3955, /* Array index: 0x0658 */ 0x9159,0x3954, /* Array index: 0x0658 */ 0x915C,0x6657, /* Array index: 0x0658 */ 0x9167,0x4528, /* Array index: 0x0658 */ 0x916B,0x4527, /* Array index: 0x0658 */ 0x9176,0x4A2C, /* Array index: 0x0658 */ 0x917B,0x4A2B, /* Array index: 0x0658 */ 0x917C,0x4A2D, /* Array index: 0x0658 */ 0x9188,0x4F3F, /* Array index: 0x0658 */ 0x918C,0x4F40, /* Array index: 0x0658 */ 0x918E,0x532D, /* Array index: 0x0658 */ 0x9195,0x532C, /* Array index: 0x0658 */ 0x9196,0x532F, /* Array index: 0x0658 */ 0x91A9,0x593D, /* Array index: 0x0658 */ 0x91BB,0x5E68, /* Array index: 0x0658 */ 0x91BF,0x607E, /* Array index: 0x0658 */ 0x91C4,0x616D, /* Array index: 0x0658 */ 0x91D6,0x3430, /* Array index: 0x0658 */ 0x91DB,0x342D, /* Array index: 0x0658 */ 0x91E5,0x3958, /* Array index: 0x0658 */ 0x91F0,0x3957, /* Array index: 0x0658 */ 0x91F2,0x3956, /* Array index: 0x0658 */ 0x91F6,0x3959, /* Array index: 0x0658 */ 0x91FE,0x3F5D, /* Array index: 0x0658 */ 0x9208,0x3F66, /* Array index: 0x0658 */ 0x920B,0x3F60, /* Array index: 0x0658 */ 0x920E,0x3F68, /* Array index: 0x0658 */ 0x9213,0x3F69, /* Array index: 0x0658 */ 0x9218,0x3F62, /* Array index: 0x0658 */ 0x921B,0x3F65, /* Array index: 0x0658 */ 0x922B,0x6658, /* Array index: 0x0658 */ 0x922F,0x452E, /* Array index: 0x0658 */ 0x9235,0x452B, /* Array index: 0x0658 */ 0x923B,0x4537, /* Array index: 0x0658 */ 0x923C,0x452F, /* Array index: 0x0658 */ 0x9241,0x4539, /* Array index: 0x0658 */ 0x9244,0x4538, /* Array index: 0x0658 */ 0x9255,0x452A, /* Array index: 0x0658 */ 0x9259,0x452D, /* Array index: 0x0658 */ 0x925C,0x4531, /* Array index: 0x0658 */ 0x925D,0x4529, /* Array index: 0x0658 */ 0x925F,0x4534, /* Array index: 0x0658 */ 0x9262,0x4533, /* Array index: 0x0658 */ 0x926A,0x4532, /* Array index: 0x0658 */ 0x926B,0x4535, /* Array index: 0x0658 */ 0x926E,0x4536, /* Array index: 0x0658 */ 0x9273,0x665A, /* Array index: 0x0658 */ 0x9281,0x4A34, /* Array index: 0x0658 */ 0x9284,0x4A35, /* Array index: 0x0658 */ 0x9289,0x4A2F, /* Array index: 0x0658 */ 0x928F,0x4530, /* Array index: 0x0658 */ 0x9290,0x4A38, /* Array index: 0x0658 */ 0x9292,0x4A33, /* Array index: 0x0658 */ 0x929E,0x4A39, /* Array index: 0x0658 */ 0x92B8,0x4F42, /* Array index: 0x0658 */ 0x92B9,0x4F50, /* Array index: 0x0658 */ 0x92BE,0x4F43, /* Array index: 0x0658 */ 0x92BF,0x4F41, /* Array index: 0x0658 */ 0x92D4,0x4F48, /* Array index: 0x0658 */ 0x92D6,0x4F49, /* Array index: 0x0658 */ 0x92E2,0x4F51, /* Array index: 0x0658 */ 0x92E5,0x4F45, /* Array index: 0x0658 */ 0x92EB,0x4F52, /* Array index: 0x0658 */ 0x92ED,0x4F4C, /* Array index: 0x0658 */ 0x92FD,0x5335, /* Array index: 0x0658 */ 0x9303,0x533D, /* Array index: 0x0658 */ 0x9305,0x533E, /* Array index: 0x0658 */ 0x9307,0x5338, /* Array index: 0x0658 */ 0x930A,0x5332, /* Array index: 0x0658 */ 0x9317,0x5336, /* Array index: 0x0658 */ 0x931C,0x5337, /* Array index: 0x0658 */ 0x932C,0x533B, /* Array index: 0x0658 */ 0x933F,0x665D, /* Array index: 0x0658 */ 0x9342,0x665E, /* Array index: 0x0658 */ 0x9345,0x5331, /* Array index: 0x0658 */ 0x9348,0x5665, /* Array index: 0x0658 */ 0x9353,0x5666, /* Array index: 0x0658 */ 0x935D,0x565D, /* Array index: 0x0658 */ 0x935F,0x5667, /* Array index: 0x0658 */ 0x9362,0x5664, /* Array index: 0x0658 */ 0x9366,0x565B, /* Array index: 0x0658 */ 0x9368,0x5668, /* Array index: 0x0658 */ 0x9369,0x565E, /* Array index: 0x0658 */ 0x936B,0x566B, /* Array index: 0x0658 */ 0x936E,0x5661, /* Array index: 0x0658 */ 0x9378,0x565C, /* Array index: 0x0658 */ 0x937D,0x5660, /* Array index: 0x0658 */ 0x937F,0x566A, /* Array index: 0x0658 */ 0x9386,0x665F, /* Array index: 0x0658 */ 0x938B,0x5943, /* Array index: 0x0658 */ 0x9390,0x5940, /* Array index: 0x0658 */ 0x9393,0x5942, /* Array index: 0x0658 */ 0x939C,0x5949, /* Array index: 0x0658 */ 0x93A0,0x593E, /* Array index: 0x0658 */ 0x93AD,0x5944, /* Array index: 0x0658 */ 0x93B8,0x5946, /* Array index: 0x0658 */ 0x93C1,0x5B50, /* Array index: 0x0658 */ 0x93C5,0x5B44, /* Array index: 0x0658 */ 0x93C6,0x5B45, /* Array index: 0x0658 */ 0x93CB,0x5B43, /* Array index: 0x0658 */ 0x93D3,0x5B48, /* Array index: 0x0658 */ 0x93DB,0x5B4D, /* Array index: 0x0658 */ 0x93E0,0x5B4F, /* Array index: 0x0658 */ 0x93E5,0x5B4A, /* Array index: 0x0658 */ 0x9402,0x5D43, /* Array index: 0x0658 */ 0x9404,0x5D3C, /* Array index: 0x0658 */ 0x9405,0x5D3F, /* Array index: 0x0658 */ 0x9408,0x5D3E, /* Array index: 0x0658 */ 0x9417,0x5D3D, /* Array index: 0x0658 */ 0x9427,0x5D46, /* Array index: 0x0658 */ 0x942D,0x5E6D, /* Array index: 0x0658 */ 0x9442,0x5F69, /* Array index: 0x0658 */ 0x9443,0x5F6E, /* Array index: 0x0658 */ 0x944D,0x5F6A, /* Array index: 0x0658 */ 0x944E,0x5F6C, /* Array index: 0x0658 */ 0x9454,0x5F6B, /* Array index: 0x0658 */ 0x9456,0x6052, /* Array index: 0x0658 */ 0x945F,0x604F, /* Array index: 0x0658 */ 0x9461,0x6053, /* Array index: 0x0658 */ 0x946C,0x6122, /* Array index: 0x0658 */ 0x947A,0x616F, /* Array index: 0x0658 */ 0x947B,0x6223, /* Array index: 0x0658 */ 0x9484,0x6236, /* Array index: 0x0658 */ 0x9579,0x6323, /* Array index: 0x0658 */ 0x9581,0x2F40, /* Array index: 0x0658 */ 0x9585,0x3432, /* Array index: 0x0658 */ 0x9587,0x395C, /* Array index: 0x0658 */ 0x9595,0x3F6C, /* Array index: 0x0658 */ 0x9597,0x666B, /* Array index: 0x0658 */ 0x9599,0x453C, /* Array index: 0x0658 */ 0x959A,0x453A, /* Array index: 0x0658 */ 0x95A2,0x4A3D, /* Array index: 0x0658 */ 0x95A7,0x4A3E, /* Array index: 0x0658 */ 0x95AF,0x4F53, /* Array index: 0x0658 */ 0x95B2,0x4F55, /* Array index: 0x0658 */ 0x95B3,0x4F56, /* Array index: 0x0658 */ 0x95B8,0x5342, /* Array index: 0x0658 */ 0x95C1,0x5344, /* Array index: 0x0658 */ 0x95C2,0x5340, /* Array index: 0x0658 */ 0x95C4,0x566D, /* Array index: 0x0658 */ 0x95CE,0x666C, /* Array index: 0x0658 */ 0x95D7,0x594B, /* Array index: 0x0658 */ 0x95D8,0x594A, /* Array index: 0x0658 */ 0x95DD,0x5B53, /* Array index: 0x0658 */ 0x95E7,0x666D, /* Array index: 0x0658 */ 0x961D,0x2143, /* Array index: 0x0658 */ 0x9626,0x273B, /* Array index: 0x0658 */ 0x9627,0x273A, /* Array index: 0x0658 */ 0x9629,0x273F, /* Array index: 0x0658 */ 0x962B,0x273C, /* Array index: 0x0658 */ 0x9633,0x273D, /* Array index: 0x0658 */ 0x9634,0x273E, /* Array index: 0x0658 */ 0x9637,0x2A79, /* Array index: 0x0658 */ 0x963E,0x2A7C, /* Array index: 0x0658 */ 0x9641,0x2A7B, /* Array index: 0x0658 */ 0x9656,0x3436, /* Array index: 0x0658 */ 0x9659,0x3434, /* Array index: 0x0658 */ 0x965A,0x395E, /* Array index: 0x0658 */ 0x9660,0x3433, /* Array index: 0x0658 */ 0x966E,0x3961, /* Array index: 0x0658 */ 0x9679,0x3965, /* Array index: 0x0658 */ 0x967B,0x3F71, /* Array index: 0x0658 */ 0x967F,0x3F72, /* Array index: 0x0658 */ 0x9681,0x3F73, /* Array index: 0x0658 */ 0x9682,0x3F75, /* Array index: 0x0658 */ 0x968C,0x3F70, /* Array index: 0x0658 */ 0x968F,0x4540, /* Array index: 0x0658 */ 0x9696,0x4542, /* Array index: 0x0658 */ 0x969D,0x4A45, /* Array index: 0x0658 */ 0x969F,0x4A46, /* Array index: 0x0658 */ 0x96A0,0x4A44, /* Array index: 0x0658 */ 0x96A3,0x4F5A, /* Array index: 0x0658 */ 0x96A5,0x4F5B, /* Array index: 0x0658 */ 0x96AB,0x5348, /* Array index: 0x0658 */ 0x96AD,0x5670, /* Array index: 0x0658 */ 0x96AF,0x566F, /* Array index: 0x0658 */ 0x96B2,0x5671, /* Array index: 0x0658 */ 0x96BA,0x6325, /* Array index: 0x0658 */ 0x96BD,0x3439, /* Array index: 0x0658 */ 0x96D0,0x4A47, /* Array index: 0x0658 */ 0x96D1,0x4A49, /* Array index: 0x0658 */ 0x96E4,0x5E70, /* Array index: 0x0658 */ 0x96E6,0x6125, /* Array index: 0x0658 */ 0x96E7,0x622F, /* Array index: 0x0658 */ 0x96F4,0x4546, /* Array index: 0x0658 */ 0x96FC,0x4547, /* Array index: 0x0658 */ 0x970A,0x4F60, /* Array index: 0x0658 */ 0x970C,0x5350, /* Array index: 0x0658 */ 0x9714,0x534D, /* Array index: 0x0658 */ 0x9715,0x534C, /* Array index: 0x0658 */ 0x9717,0x5351, /* Array index: 0x0658 */ 0x971A,0x5674, /* Array index: 0x0658 */ 0x971B,0x5675, /* Array index: 0x0658 */ 0x9731,0x5D4F, /* Array index: 0x0658 */ 0x973B,0x666E, /* Array index: 0x0658 */ 0x973C,0x5F71, /* Array index: 0x0658 */ 0x9740,0x5F72, /* Array index: 0x0658 */ 0x9741,0x6059, /* Array index: 0x0658 */ 0x9745,0x6126, /* Array index: 0x0658 */ 0x974D,0x666F, /* Array index: 0x0658 */ 0x9750,0x6245, /* Array index: 0x0658 */ 0x9751,0x2A7E, /* Array index: 0x0658 */ 0x9755,0x4549, /* Array index: 0x0658 */ 0x9759,0x4A4C, /* Array index: 0x0658 */ 0x975D,0x594F, /* Array index: 0x0658 */ 0x975F,0x4021, /* Array index: 0x0658 */ 0x9763,0x2B21, /* Array index: 0x0658 */ 0x9764,0x4A4E, /* Array index: 0x0658 */ 0x9767,0x5E73, /* Array index: 0x0658 */ 0x976D,0x4024, /* Array index: 0x0658 */ 0x976F,0x4022, /* Array index: 0x0658 */ 0x9779,0x454B, /* Array index: 0x0658 */ 0x9787,0x4F62, /* Array index: 0x0658 */ 0x9789,0x4F63, /* Array index: 0x0658 */ 0x978C,0x4F64, /* Array index: 0x0658 */ 0x9793,0x5353, /* Array index: 0x0658 */ 0x979B,0x567A, /* Array index: 0x0658 */ 0x979F,0x567B, /* Array index: 0x0658 */ 0x97A9,0x5950, /* Array index: 0x0658 */ 0x97B8,0x5D50, /* Array index: 0x0658 */ 0x97BA,0x5D51, /* Array index: 0x0658 */ 0x97BD,0x5E75, /* Array index: 0x0658 */ 0x97BE,0x5E74, /* Array index: 0x0658 */ 0x97C0,0x5F73, /* Array index: 0x0658 */ 0x97C8,0x6128, /* Array index: 0x0658 */ 0x97CA,0x623B, /* Array index: 0x0658 */ 0x97D2,0x5355, /* Array index: 0x0658 */ 0x97DA,0x5951, /* Array index: 0x0658 */ 0x97E2,0x5E76, /* Array index: 0x0658 */ 0x97E4,0x6129, /* Array index: 0x0658 */ 0x97EE,0x454F, /* Array index: 0x0658 */ 0x97EF,0x4F65, /* Array index: 0x0658 */ 0x97F2,0x5B61, /* Array index: 0x0658 */ 0x97F5,0x4550, /* Array index: 0x0658 */ 0x97FC,0x5D53, /* Array index: 0x0658 */ 0x980B,0x4552, /* Array index: 0x0658 */ 0x9814,0x4A54, /* Array index: 0x0658 */ 0x9815,0x4A55, /* Array index: 0x0658 */ 0x9819,0x4A52, /* Array index: 0x0658 */ 0x981A,0x4A56, /* Array index: 0x0658 */ 0x981F,0x4F69, /* Array index: 0x0658 */ 0x9822,0x4F67, /* Array index: 0x0658 */ 0x9823,0x636E, /* Array index: 0x0658 */ 0x982A,0x4F66, /* Array index: 0x0658 */ 0x982E,0x535C, /* Array index: 0x0658 */ 0x9831,0x5359, /* Array index: 0x0658 */ 0x9833,0x535A, /* Array index: 0x0658 */ 0x9834,0x5228, /* Array index: 0x0658 */ 0x9836,0x5358, /* Array index: 0x0658 */ 0x983A,0x535D, /* Array index: 0x0658 */ 0x9847,0x5728, /* Array index: 0x0658 */ 0x984B,0x5959, /* Array index: 0x0658 */ 0x9861,0x642A, /* Array index: 0x0658 */ 0x9866,0x5E78, /* Array index: 0x0658 */ 0x9868,0x5E77, /* Array index: 0x0658 */ 0x98B5,0x5361, /* Array index: 0x0658 */ 0x98B7,0x572A, /* Array index: 0x0658 */ 0x98B9,0x595C, /* Array index: 0x0658 */ 0x98C3,0x5D56, /* Array index: 0x0658 */ 0x98C7,0x5E7B, /* Array index: 0x0658 */ 0x98C8,0x5E79, /* Array index: 0x0658 */ 0x98CA,0x5E7A, /* Array index: 0x0658 */ 0x98CD,0x6225, /* Array index: 0x0658 */ 0x98DC,0x5E7C, /* Array index: 0x0658 */ 0x98DD,0x6226, /* Array index: 0x0658 */ 0x98E1,0x3967, /* Array index: 0x0658 */ 0x98E4,0x6670, /* Array index: 0x0658 */ 0x98E6,0x3968, /* Array index: 0x0658 */ 0x98EC,0x455B, /* Array index: 0x0658 */ 0x98F0,0x402B, /* Array index: 0x0658 */ 0x98F1,0x455C, /* Array index: 0x0658 */ 0x98F3,0x4554, /* Array index: 0x0658 */ 0x98F5,0x4559, /* Array index: 0x0658 */ 0x98F7,0x4557, /* Array index: 0x0658 */ 0x98F8,0x4A5D, /* Array index: 0x0658 */ 0x98FF,0x4558, /* Array index: 0x0658 */ 0x9901,0x4A5E, /* Array index: 0x0658 */ 0x9906,0x4A5B, /* Array index: 0x0658 */ 0x990E,0x667A, /* Array index: 0x0658 */ 0x9919,0x4F6B, /* Array index: 0x0658 */ 0x991C,0x5365, /* Array index: 0x0658 */ 0x991D,0x5366, /* Array index: 0x0658 */ 0x9920,0x5364, /* Array index: 0x0658 */ 0x9922,0x5362, /* Array index: 0x0658 */ 0x9923,0x5363, /* Array index: 0x0658 */ 0x9936,0x5962, /* Array index: 0x0658 */ 0x9938,0x5961, /* Array index: 0x0658 */ 0x9939,0x5966, /* Array index: 0x0658 */ 0x993B,0x5965, /* Array index: 0x0658 */ 0x9940,0x5963, /* Array index: 0x0658 */ 0x9942,0x6671, /* Array index: 0x0658 */ 0x9944,0x5B69, /* Array index: 0x0658 */ 0x994D,0x5D58, /* Array index: 0x0658 */ 0x994F,0x5E7E, /* Array index: 0x0658 */ 0x995A,0x5F78, /* Array index: 0x0658 */ 0x995D,0x612A, /* Array index: 0x0658 */ 0x999A,0x455F, /* Array index: 0x0658 */ 0x99A0,0x5368, /* Array index: 0x0658 */ 0x99A2,0x5730, /* Array index: 0x0658 */ 0x99A4,0x5967, /* Array index: 0x0658 */ 0x99A9,0x5F21, /* Array index: 0x0658 */ 0x99AA,0x6060, /* Array index: 0x0658 */ 0x99C4,0x4A6A, /* Array index: 0x0658 */ 0x99C8,0x4F73, /* Array index: 0x0658 */ 0x99CA,0x4F6D, /* Array index: 0x0658 */ 0x99DA,0x4F6E, /* Array index: 0x0658 */ 0x99DE,0x4F72, /* Array index: 0x0658 */ 0x99E0,0x4F74, /* Array index: 0x0658 */ 0x99E1,0x5370, /* Array index: 0x0658 */ 0x99E6,0x5371, /* Array index: 0x0658 */ 0x99E8,0x536B, /* Array index: 0x0658 */ 0x99EB,0x536C, /* Array index: 0x0658 */ 0x99EF,0x536A, /* Array index: 0x0658 */ 0x99F3,0x5734, /* Array index: 0x0658 */ 0x99F5,0x5737, /* Array index: 0x0658 */ 0x9A00,0x5733, /* Array index: 0x0658 */ 0x9A08,0x596A, /* Array index: 0x0658 */ 0x9A0C,0x596B, /* Array index: 0x0658 */ 0x9A10,0x596D, /* Array index: 0x0658 */ 0x9A17,0x5B6F, /* Array index: 0x0658 */ 0x9A18,0x5B6D, /* Array index: 0x0658 */ 0x9A1F,0x5B6C, /* Array index: 0x0658 */ 0x9A21,0x5B6E, /* Array index: 0x0658 */ 0x9A26,0x5B6B, /* Array index: 0x0658 */ 0x9A2F,0x5D5A, /* Array index: 0x0658 */ 0x9A3B,0x5F24, /* Array index: 0x0658 */ 0x9A3C,0x5F22, /* Array index: 0x0658 */ 0x9A51,0x5F79, /* Array index: 0x0658 */ 0x9A58,0x6062, /* Array index: 0x0658 */ 0x9A5C,0x6061, /* Array index: 0x0658 */ 0x9A61,0x6172, /* Array index: 0x0658 */ 0x9A63,0x6173, /* Array index: 0x0658 */ 0x9AA9,0x402F, /* Array index: 0x0658 */ 0x9AB5,0x4F77, /* Array index: 0x0658 */ 0x9AB6,0x4F76, /* Array index: 0x0658 */ 0x9ABD,0x573A, /* Array index: 0x0658 */ 0x9AC4,0x5D61, /* Array index: 0x0658 */ 0x9AC8,0x5D60, /* Array index: 0x0658 */ 0x9AC9,0x5D5E, /* Array index: 0x0658 */ 0x9ACE,0x5F25, /* Array index: 0x0658 */ 0x9AD7,0x6174, /* Array index: 0x0658 */ 0x9AD9,0x6334, /* Array index: 0x0658 */ 0x9ADA,0x4A6E, /* Array index: 0x0658 */ 0x9ADD,0x5F7B, /* Array index: 0x0658 */ 0x9ADE,0x6063, /* Array index: 0x0658 */ 0x9AE0,0x4032, /* Array index: 0x0658 */ 0x9AE2,0x4561, /* Array index: 0x0658 */ 0x9AF4,0x4F79, /* Array index: 0x0658 */ 0x9AF5,0x5375, /* Array index: 0x0658 */ 0x9AF8,0x5374, /* Array index: 0x0658 */ 0x9B00,0x573B, /* Array index: 0x0658 */ 0x9B02,0x573C, /* Array index: 0x0658 */ 0x9B07,0x596F, /* Array index: 0x0658 */ 0x9B09,0x5B71, /* Array index: 0x0658 */ 0x9B14,0x5F27, /* Array index: 0x0658 */ 0x9B1D,0x6672, /* Array index: 0x0658 */ 0x9B21,0x612C, /* Array index: 0x0658 */ 0x9B26,0x4A75, /* Array index: 0x0658 */ 0x9B2A,0x5D62, /* Array index: 0x0658 */ 0x9B2C,0x612E, /* Array index: 0x0658 */ 0x9B2D,0x6433, /* Array index: 0x0658 */ 0x9B30,0x6228, /* Array index: 0x0658 */ 0x9B34,0x573E, /* Array index: 0x0658 */ 0x9B38,0x5D63, /* Array index: 0x0658 */ 0x9B3D,0x4562, /* Array index: 0x0658 */ 0x9B40,0x4A78, /* Array index: 0x0658 */ 0x9B49,0x573F, /* Array index: 0x0658 */ 0x9B50,0x5D64, /* Array index: 0x0658 */ 0x9B53,0x5F28, /* Array index: 0x0658 */ 0x9B57,0x612F, /* Array index: 0x0658 */ 0x9B5D,0x4563, /* Array index: 0x0658 */ 0x9B63,0x4F7E, /* Array index: 0x0658 */ 0x9B69,0x4F7C, /* Array index: 0x0658 */ 0x9B6B,0x4F7B, /* Array index: 0x0658 */ 0x9B72,0x4F7D, /* Array index: 0x0658 */ 0x9B83,0x5378, /* Array index: 0x0658 */ 0x9B84,0x537A, /* Array index: 0x0658 */ 0x9B89,0x5423, /* Array index: 0x0658 */ 0x9B94,0x5379, /* Array index: 0x0658 */ 0x9B98,0x6673, /* Array index: 0x0658 */ 0x9B99,0x5744, /* Array index: 0x0658 */ 0x9B9D,0x5745, /* Array index: 0x0658 */ 0x9B9F,0x5740, /* Array index: 0x0658 */ 0x9BA3,0x5742, /* Array index: 0x0658 */ 0x9BBB,0x5974, /* Array index: 0x0658 */ 0x9BC2,0x5973, /* Array index: 0x0658 */ 0x9BC5,0x5B74, /* Array index: 0x0658 */ 0x9BD2,0x5971, /* Array index: 0x0658 */ 0x9BDF,0x5B75, /* Array index: 0x0658 */ 0x9BE3,0x5B77, /* Array index: 0x0658 */ 0x9BE9,0x5B79, /* Array index: 0x0658 */ 0x9BEE,0x5B7A, /* Array index: 0x0658 */ 0x9BF6,0x5D6F, /* Array index: 0x0658 */ 0x9BF9,0x5D71, /* Array index: 0x0658 */ 0x9C0A,0x5D66, /* Array index: 0x0658 */ 0x9C0C,0x5D76, /* Array index: 0x0658 */ 0x9C10,0x5D73, /* Array index: 0x0658 */ 0x9C15,0x5D72, /* Array index: 0x0658 */ 0x9C1B,0x5D70, /* Array index: 0x0658 */ 0x9C1F,0x5F2C, /* Array index: 0x0658 */ 0x9C27,0x642F, /* Array index: 0x0658 */ 0x9C2E,0x5F2A, /* Array index: 0x0658 */ 0x9C35,0x6025, /* Array index: 0x0658 */ 0x9C38,0x5F7E, /* Array index: 0x0658 */ 0x9C3A,0x6023, /* Array index: 0x0658 */ 0x9C45,0x6022, /* Array index: 0x0658 */ 0x9C4F,0x6065, /* Array index: 0x0658 */ 0x9C51,0x6066, /* Array index: 0x0658 */ 0x9C53,0x6068, /* Array index: 0x0658 */ 0x9C5D,0x6132, /* Array index: 0x0658 */ 0x9C61,0x6133, /* Array index: 0x0658 */ 0x9C65,0x6134, /* Array index: 0x0658 */ 0x9C6C,0x6159, /* Array index: 0x0658 */ 0x9C6F,0x615B, /* Array index: 0x0658 */ 0x9C76,0x6175, /* Array index: 0x0658 */ 0x9C7B,0x6241, /* Array index: 0x0658 */ 0x9CE8,0x4564, /* Array index: 0x0658 */ 0x9CF8,0x5027, /* Array index: 0x0658 */ 0x9CFE,0x502A, /* Array index: 0x0658 */ 0x9D01,0x5024, /* Array index: 0x0658 */ 0x9D02,0x502B, /* Array index: 0x0658 */ 0x9D0A,0x542D, /* Array index: 0x0658 */ 0x9D0C,0x5025, /* Array index: 0x0658 */ 0x9D0D,0x5022, /* Array index: 0x0658 */ 0x9D0F,0x542A, /* Array index: 0x0658 */ 0x9D13,0x542C, /* Array index: 0x0658 */ 0x9D16,0x5436, /* Array index: 0x0658 */ 0x9D1A,0x5433, /* Array index: 0x0658 */ 0x9D21,0x5437, /* Array index: 0x0658 */ 0x9D24,0x5429, /* Array index: 0x0658 */ 0x9D27,0x5435, /* Array index: 0x0658 */ 0x9D2A,0x5432, /* Array index: 0x0658 */ 0x9D35,0x574D, /* Array index: 0x0658 */ 0x9D39,0x5748, /* Array index: 0x0658 */ 0x9D44,0x574A, /* Array index: 0x0658 */ 0x9D49,0x6675, /* Array index: 0x0658 */ 0x9D4D,0x5979, /* Array index: 0x0658 */ 0x9D4E,0x597B, /* Array index: 0x0658 */ 0x9D50,0x597D, /* Array index: 0x0658 */ 0x9D55,0x597E, /* Array index: 0x0658 */ 0x9D5E,0x5A22, /* Array index: 0x0658 */ 0x9D63,0x597A, /* Array index: 0x0658 */ 0x9D66,0x5B7D, /* Array index: 0x0658 */ 0x9D6D,0x5C27, /* Array index: 0x0658 */ 0x9D6E,0x5C22, /* Array index: 0x0658 */ 0x9D76,0x5C25, /* Array index: 0x0658 */ 0x9D7A,0x5B7E, /* Array index: 0x0658 */ 0x9D7E,0x5C26, /* Array index: 0x0658 */ 0x9D83,0x5C24, /* Array index: 0x0658 */ 0x9D91,0x5C23, /* Array index: 0x0658 */ 0x9D95,0x5D79, /* Array index: 0x0658 */ 0x9DA5,0x5D7A, /* Array index: 0x0658 */ 0x9DAE,0x5F35, /* Array index: 0x0658 */ 0x9DB0,0x5F31, /* Array index: 0x0658 */ 0x9DBD,0x5F32, /* Array index: 0x0658 */ 0x9DC4,0x5F36, /* Array index: 0x0658 */ 0x9DFC,0x606C, /* Array index: 0x0658 */ 0x9E08,0x6135, /* Array index: 0x0658 */ 0x9E0E,0x615D, /* Array index: 0x0658 */ 0x9E16,0x6229, /* Array index: 0x0658 */ 0x9E18,0x6230, /* Array index: 0x0658 */ 0x9E1C,0x6238, /* Array index: 0x0658 */ 0x9E7B,0x5F37, /* Array index: 0x0658 */ 0x9E81,0x4569, /* Array index: 0x0658 */ 0x9E84,0x502C, /* Array index: 0x0658 */ 0x9E85,0x5439, /* Array index: 0x0658 */ 0x9E90,0x5A24, /* Array index: 0x0658 */ 0x9E95,0x5C29, /* Array index: 0x0658 */ 0x9E98,0x5E21, /* Array index: 0x0658 */ 0x9E9E,0x5F3A, /* Array index: 0x0658 */ 0x9EA2,0x6231, /* Array index: 0x0658 */ 0x9EA3,0x623F, /* Array index: 0x0658 */ 0x9EA6,0x2547, /* Array index: 0x0658 */ 0x9EAF,0x5750, /* Array index: 0x0658 */ 0x9EB1,0x5A26, /* Array index: 0x0658 */ 0x9EB2,0x5A25, /* Array index: 0x0658 */ 0x9EBD,0x4B22, /* Array index: 0x0658 */ 0x9EC1,0x5E22, /* Array index: 0x0658 */ 0x9ECA,0x5A28, /* Array index: 0x0658 */ 0x9ED2,0x396B, /* Array index: 0x0658 */ 0x9ED7,0x543D, /* Array index: 0x0658 */ 0x9EE3,0x5C2A, /* Array index: 0x0658 */ 0x9EF1,0x6029, /* Array index: 0x0658 */ 0x9EFE,0x2772, /* Array index: 0x0658 */ 0x9F08,0x615F, /* Array index: 0x0658 */ 0x9F14,0x456A, /* Array index: 0x0658 */ 0x9F17,0x5C30, /* Array index: 0x0658 */ 0x9F1D,0x6160, /* Array index: 0x0658 */ 0x9F26,0x5A2B, /* Array index: 0x0658 */ 0x9F27,0x5A2A, /* Array index: 0x0658 */ 0x9F39,0x606D, /* Array index: 0x0658 */ 0x9F45,0x613B, /* Array index: 0x0658 */ 0x9F50,0x2370, /* Array index: 0x0658 */ 0x9F53,0x543E, /* Array index: 0x0658 */ 0x9F5A,0x5E24, /* Array index: 0x0658 */ 0x9F69,0x5F3E, /* Array index: 0x0658 */ 0x9F7C,0x6233, /* Array index: 0x0658 */ 0x9F8E,0x5755, /* Array index: 0x0658 */ 0x9F93,0x602B, /* Array index: 0x0658 */ 0x9F97,0x6242, /* Array index: 0x0658 */ 0x9F9D,0x5E47, /* Array index: 0x0658 */ 0x9FA1,0x5F3F, /* Array index: 0x0658 */ 0x9FA3,0x6161, /* Array index: 0x0658 */ 0x9FA5,0x6177, }; #endif /* ICONV_FROM_UCS_CCS_CNS11643_PLANE14 && defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * cns11643_plane14 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_cns11643_plane14 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_CNS11643_PLANE14, /* CCS name */ TABLE_16BIT, /* Table bits */ #if defined (ICONV_FROM_UCS_CCS_CNS11643_PLANE14) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SIZE_OPTIMIZED, (__uint16_t *)&from_ucs_size_cns11643_plane14, /* UCS -> cns11643_plane14 table size-optimized table */ #elif defined (ICONV_FROM_UCS_CCS_CNS11643_PLANE14) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SPEED_OPTIMIZED, (__uint16_t *)&from_ucs_speed_cns11643_plane14, /* UCS -> cns11643_plane14 table speed-optimized table */ #else TABLE_SPEED_OPTIMIZED, (__uint16_t *)NULL, #endif #if defined (ICONV_TO_UCS_CCS_CNS11643_PLANE14) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SIZE_OPTIMIZED, (__uint16_t *)&to_ucs_size_cns11643_plane14 /* cns11643_plane14 -> UCS table speed-optimized table */ #elif defined (ICONV_TO_UCS_CCS_CNS11643_PLANE14) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SPEED_OPTIMIZED, (__uint16_t *)&to_ucs_speed_cns11643_plane14 /* cns11643_plane14 -> UCS table speed-optimized table */ #else TABLE_SPEED_OPTIMIZED, (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_CNS11643_PLANE14) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/cns11643_plane2.c000066400000000000000000022546711414576234500222110ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for cns11643_plane2 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_CNS11643_PLANE2) \ || defined (ICONV_FROM_UCS_CCS_CNS11643_PLANE2) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" /* * 16-bit cns11643_plane2 -> UCS speed-optimized table (42496 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_CNS11643_PLANE2) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t to_ucs_speed_cns11643_plane2[] = { /* Heading Block */ INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,0x0100,0x0200,0x0300,0x0400,0x0500,0x0600,0x0700, 0x0800,0x0900,0x0A00,0x0B00,0x0C00,0x0D00,0x0E00,0x0F00, 0x1000,0x1100,0x1200,0x1300,0x1400,0x1500,0x1600,0x1700, 0x1800,0x1900,0x1A00,0x1B00,0x1C00,0x1D00,0x1E00,0x1F00, 0x2000,0x2100,0x2200,0x2300,0x2400,0x2500,0x2600,0x2700, 0x2800,0x2900,0x2A00,0x2B00,0x2C00,0x2D00,0x2E00,0x2F00, 0x3000,0x3100,0x3200,0x3300,0x3400,0x3500,0x3600,0x3700, 0x3800,0x3900,0x3A00,0x3B00,0x3C00,0x3D00,0x3E00,0x3F00, 0x4000,0x4100,0x4200,0x4300,0x4400,0x4500,0x4600,0x4700, 0x4800,0x4900,0x4A00,0x4B00,0x4C00,0x4D00,0x4E00,0x4F00, 0x5000,0x5100,0x5200,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, /* Block 34, Array index 0x0100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4E42,0x4E5C,0x51F5,0x531A,0x5382,0x4E07,0x4E0C, 0x4E47,0x4E8D,0x56D7,0x5C6E,0x5F73,0x4E0F,0x5187,0x4E0E, 0x4E2E,0x4E93,0x4EC2,0x4EC9,0x4EC8,0x5198,0x52FC,0x536C, 0x53B9,0x5720,0x5903,0x592C,0x5C10,0x5DFF,0x65E1,0x6BB3, 0x6BCC,0x6C14,0x723F,0x4E31,0x4E3C,0x4EE8,0x4EDC,0x4EE9, 0x4EE1,0x4EDD,0x4EDA,0x520C,0x5209,0x531C,0x534C,0x5722, 0x5723,0x5917,0x592F,0x5B81,0x5B84,0x5C12,0x5C3B,0x5C74, 0x5C73,0x5E04,0x5E80,0x5E82,0x5FC9,0x6209,0x6250,0x6C15, 0x6C36,0x6C43,0x6C3F,0x6C3B,0x72AE,0x72B0,0x738A,0x79B8, 0x808A,0x961E,0x4F0E,0x4F18,0x4F2C,0x4EF5,0x4F14,0x4EF1, 0x4F00,0x4EF7,0x4F08,0x4F1D,0x4F02,0x4F05,0x4F22,0x4F13, 0x4F04,0x4EF4,0x4F12,0x51B1,0x5213,0x5210,0x52A6,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 35, Array index 0x0200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5322,0x531F,0x534D,0x538A,0x5407,0x56E1,0x56DF, 0x572E,0x572A,0x5734,0x593C,0x5980,0x597C,0x5985,0x597B, 0x597E,0x5977,0x597F,0x5B56,0x5C15,0x5C25,0x5C7C,0x5C7A, 0x5C7B,0x5C7E,0x5DDF,0x5E75,0x5E84,0x5F02,0x5F1A,0x5F74, 0x5FD5,0x5FD4,0x5FCF,0x625C,0x625E,0x6264,0x6261,0x6266, 0x6262,0x6259,0x6260,0x625A,0x6265,0x6537,0x65EF,0x65EE, 0x673E,0x6739,0x6738,0x673B,0x673A,0x673F,0x673C,0x6733, 0x6C18,0x6C46,0x6C52,0x6C5C,0x6C4F,0x6C4A,0x6C54,0x6C4B, 0x6C4C,0x7071,0x725E,0x72B4,0x72B5,0x738E,0x752A,0x767F, 0x7A75,0x7F51,0x8278,0x827C,0x8280,0x827D,0x827F,0x864D, 0x897E,0x9099,0x9097,0x9098,0x909B,0x9094,0x9622,0x9624, 0x9620,0x9623,0x4F56,0x4F3B,0x4F62,0x4F49,0x4F53,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 36, Array index 0x0300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4F64,0x4F3E,0x4F67,0x4F52,0x4F5F,0x4F41,0x4F58, 0x4F2D,0x4F33,0x4F3F,0x4F61,0x518F,0x51B9,0x521C,0x521E, 0x5221,0x52AD,0x52AE,0x5309,0x5363,0x5372,0x538E,0x538F, 0x5430,0x5437,0x542A,0x5454,0x5445,0x5419,0x541C,0x5425, 0x5418,0x543D,0x544F,0x5441,0x5428,0x5424,0x5447,0x56EE, 0x56E7,0x56E5,0x5741,0x5745,0x574C,0x5749,0x574B,0x5752, 0x5906,0x5940,0x59A6,0x5998,0x59A0,0x5997,0x598E,0x59A2, 0x5990,0x598F,0x59A7,0x59A1,0x5B8E,0x5B92,0x5C28,0x5C2A, 0x5C8D,0x5C8F,0x5C88,0x5C8B,0x5C89,0x5C92,0x5C8A,0x5C86, 0x5C93,0x5C95,0x5DE0,0x5E0A,0x5E0E,0x5E8B,0x5E89,0x5E8C, 0x5E88,0x5E8D,0x5F05,0x5F1D,0x5F78,0x5F76,0x5FD2,0x5FD1, 0x5FD0,0x5FED,0x5FE8,0x5FEE,0x5FF3,0x5FE1,0x5FE4,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 37, Array index 0x0400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5FE3,0x5FFA,0x5FEF,0x5FF7,0x5FFB,0x6000,0x5FF4, 0x623A,0x6283,0x628C,0x628E,0x628F,0x6294,0x6287,0x6271, 0x627B,0x627A,0x6270,0x6281,0x6288,0x6277,0x627D,0x6272, 0x6274,0x65F0,0x65F4,0x65F3,0x65F2,0x65F5,0x6745,0x6747, 0x6759,0x6755,0x674C,0x6748,0x675D,0x674D,0x675A,0x674B, 0x6BD0,0x6C19,0x6C1A,0x6C78,0x6C67,0x6C6B,0x6C84,0x6C8B, 0x6C8F,0x6C71,0x6C6F,0x6C69,0x6C9A,0x6C6D,0x6C87,0x6C95, 0x6C9C,0x6C66,0x6C73,0x6C65,0x6C7B,0x6C8E,0x7074,0x707A, 0x7263,0x72BF,0x72BD,0x72C3,0x72C6,0x72C1,0x72BA,0x72C5, 0x7395,0x7397,0x7393,0x7394,0x7392,0x753A,0x7539,0x7594, 0x7595,0x7681,0x793D,0x8034,0x8095,0x8099,0x8090,0x8092, 0x809C,0x8290,0x828F,0x8285,0x828E,0x8291,0x8293,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 38, Array index 0x0500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x828A,0x8283,0x8284,0x8C78,0x8FC9,0x8FBF,0x909F, 0x90A1,0x90A5,0x909E,0x90A7,0x90A0,0x9630,0x9628,0x962F, 0x962D,0x4E33,0x4F98,0x4F7C,0x4F85,0x4F7D,0x4F80,0x4F87, 0x4F76,0x4F74,0x4F89,0x4F84,0x4F77,0x4F4C,0x4F97,0x4F6A, 0x4F9A,0x4F79,0x4F81,0x4F78,0x4F90,0x4F9C,0x4F94,0x4F9E, 0x4F92,0x4F82,0x4F95,0x4F6B,0x4F6E,0x519E,0x51BC,0x51BE, 0x5235,0x5232,0x5233,0x5246,0x5231,0x52BC,0x530A,0x530B, 0x533C,0x5392,0x5394,0x5487,0x547F,0x5481,0x5491,0x5482, 0x5488,0x546B,0x547A,0x547E,0x5465,0x546C,0x5474,0x5466, 0x548D,0x546F,0x5461,0x5460,0x5498,0x5463,0x5467,0x5464, 0x56F7,0x56F9,0x576F,0x5772,0x576D,0x576B,0x5771,0x5770, 0x5776,0x5780,0x5775,0x577B,0x5773,0x5774,0x5762,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 39, Array index 0x0600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5768,0x577D,0x590C,0x5945,0x59B5,0x59BA,0x59CF, 0x59CE,0x59B2,0x59CC,0x59C1,0x59B6,0x59BC,0x59C3,0x59D6, 0x59B1,0x59BD,0x59C0,0x59C8,0x59B4,0x59C7,0x5B62,0x5B65, 0x5B93,0x5B95,0x5C44,0x5C47,0x5CAE,0x5CA4,0x5CA0,0x5CB5, 0x5CAF,0x5CA8,0x5CAC,0x5C9F,0x5CA3,0x5CAD,0x5CA2,0x5CAA, 0x5CA7,0x5C9D,0x5CA5,0x5CB6,0x5CB0,0x5CA6,0x5E17,0x5E14, 0x5E19,0x5F28,0x5F22,0x5F23,0x5F24,0x5F54,0x5F82,0x5F7E, 0x5F7D,0x5FDE,0x5FE5,0x602D,0x6026,0x6019,0x6032,0x600B, 0x6034,0x600A,0x6017,0x6033,0x601A,0x601E,0x602C,0x6022, 0x600D,0x6010,0x602E,0x6013,0x6011,0x600C,0x6009,0x601C, 0x6214,0x623D,0x62AD,0x62B4,0x62D1,0x62BE,0x62AA,0x62B6, 0x62CA,0x62AE,0x62B3,0x62AF,0x62BB,0x62A9,0x62B0,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 40, Array index 0x0700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x62B8,0x653D,0x65A8,0x65BB,0x6609,0x65FC,0x6604, 0x6612,0x6608,0x65FB,0x6603,0x660B,0x660D,0x6605,0x65FD, 0x6611,0x6610,0x66F6,0x670A,0x6785,0x676C,0x678E,0x6792, 0x6776,0x677B,0x6798,0x6786,0x6784,0x6774,0x678D,0x678C, 0x677A,0x679F,0x6791,0x6799,0x6783,0x677D,0x6781,0x6778, 0x6779,0x6794,0x6B25,0x6B80,0x6B7E,0x6BDE,0x6C1D,0x6C93, 0x6CEC,0x6CEB,0x6CEE,0x6CD9,0x6CB6,0x6CD4,0x6CAD,0x6CE7, 0x6CB7,0x6CD0,0x6CC2,0x6CBA,0x6CC3,0x6CC6,0x6CED,0x6CF2, 0x6CD2,0x6CDD,0x6CB4,0x6C8A,0x6C9D,0x6C80,0x6CDE,0x6CC0, 0x6D30,0x6CCD,0x6CC7,0x6CB0,0x6CF9,0x6CCF,0x6CE9,0x6CD1, 0x7094,0x7098,0x7085,0x7093,0x7086,0x7084,0x7091,0x7096, 0x7082,0x709A,0x7083,0x726A,0x72D6,0x72CB,0x72D8,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 41, Array index 0x0800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x72C9,0x72DC,0x72D2,0x72D4,0x72DA,0x72CC,0x72D1, 0x73A4,0x73A1,0x73AD,0x73A6,0x73A2,0x73A0,0x73AC,0x739D, 0x74DD,0x74E8,0x753F,0x7540,0x753E,0x758C,0x7598,0x76AF, 0x76F3,0x76F1,0x76F0,0x76F5,0x77F8,0x77FC,0x77F9,0x77FB, 0x77FA,0x77F7,0x7942,0x793F,0x79C5,0x7A78,0x7A7B,0x7AFB, 0x7C75,0x7CFD,0x8035,0x808F,0x80AE,0x80A3,0x80B8,0x80B5, 0x80AD,0x8220,0x82A0,0x82C0,0x82AB,0x829A,0x8298,0x829B, 0x82B5,0x82A7,0x82AE,0x82BC,0x829E,0x82BA,0x82B4,0x82A8, 0x82A1,0x82A9,0x82C2,0x82A4,0x82C3,0x82B6,0x82A2,0x8670, 0x866F,0x866D,0x866E,0x8C56,0x8FD2,0x8FCB,0x8FD3,0x8FCD, 0x8FD6,0x8FD5,0x8FD7,0x90B2,0x90B4,0x90AF,0x90B3,0x90B0, 0x9639,0x963D,0x963C,0x963A,0x9643,0x4FCD,0x4FC5,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 42, Array index 0x0900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4FD3,0x4FB2,0x4FC9,0x4FCB,0x4FC1,0x4FD4,0x4FDC, 0x4FD9,0x4FBB,0x4FB3,0x4FDB,0x4FC7,0x4FD6,0x4FBA,0x4FC0, 0x4FB9,0x4FEC,0x5244,0x5249,0x52C0,0x52C2,0x533D,0x537C, 0x5397,0x5396,0x5399,0x5398,0x54BA,0x54A1,0x54AD,0x54A5, 0x54CF,0x54C3,0x830D,0x54B7,0x54AE,0x54D6,0x54B6,0x54C5, 0x54C6,0x54A0,0x5470,0x54BC,0x54A2,0x54BE,0x5472,0x54DE, 0x54B0,0x57B5,0x579E,0x579F,0x57A4,0x578C,0x5797,0x579D, 0x579B,0x5794,0x5798,0x578F,0x5799,0x57A5,0x579A,0x5795, 0x58F4,0x590D,0x5953,0x59E1,0x59DE,0x59EE,0x5A00,0x59F1, 0x59DD,0x59FA,0x59FD,0x59FC,0x59F6,0x59E4,0x59F2,0x59F7, 0x59DB,0x59E9,0x59F3,0x59F5,0x59E0,0x59FE,0x59F4,0x59ED, 0x5BA8,0x5C4C,0x5CD0,0x5CD8,0x5CCC,0x5CD7,0x5CCB,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 43, Array index 0x0A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5CDB,0x5CDE,0x5CDA,0x5CC9,0x5CC7,0x5CCA,0x5CD6, 0x5CD3,0x5CD4,0x5CCF,0x5CC8,0x5CC6,0x5CCE,0x5CDF,0x5CF8, 0x5DF9,0x5E21,0x5E22,0x5E23,0x5E20,0x5E24,0x5EB0,0x5EA4, 0x5EA2,0x5E9B,0x5EA3,0x5EA5,0x5F07,0x5F2E,0x5F56,0x5F86, 0x6037,0x6039,0x6054,0x6072,0x605E,0x6045,0x6053,0x6047, 0x6049,0x605B,0x604C,0x6040,0x6042,0x605F,0x6024,0x6044, 0x6058,0x6066,0x606E,0x6242,0x6243,0x62CF,0x630D,0x630B, 0x62F5,0x630E,0x6303,0x62EB,0x62F9,0x630F,0x630C,0x62F8, 0x62F6,0x6300,0x6313,0x6314,0x62FA,0x6315,0x62FB,0x62F0, 0x6541,0x6543,0x65AA,0x65BF,0x6636,0x6621,0x6632,0x6635, 0x661C,0x6626,0x6622,0x6633,0x662B,0x663A,0x661D,0x6634, 0x6639,0x662E,0x670F,0x6710,0x67C1,0x67F2,0x67C8,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 44, Array index 0x0B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x67BA,0x67DC,0x67BB,0x67F8,0x67D8,0x67C0,0x67B7, 0x67C5,0x67EB,0x67E4,0x67DF,0x67B5,0x67CD,0x67B3,0x67F7, 0x67F6,0x67EE,0x67E3,0x67C2,0x67B9,0x67CE,0x67E7,0x67F0, 0x67B2,0x67FC,0x67C6,0x67ED,0x67CC,0x67AE,0x67E6,0x67DB, 0x67FA,0x67C9,0x67CA,0x67C3,0x67EA,0x67CB,0x6B28,0x6B82, 0x6B84,0x6BB6,0x6BD6,0x6BD8,0x6BE0,0x6C20,0x6C21,0x6D28, 0x6D34,0x6D2D,0x6D1F,0x6D3C,0x6D3F,0x6D12,0x6D0A,0x6CDA, 0x6D33,0x6D04,0x6D19,0x6D3A,0x6D1A,0x6D11,0x6D00,0x6D1D, 0x6D42,0x6D01,0x6D18,0x6D37,0x6D03,0x6D0F,0x6D40,0x6D07, 0x6D20,0x6D2C,0x6D08,0x6D22,0x6D09,0x6D10,0x70B7,0x709F, 0x70BE,0x70B1,0x70B0,0x70A1,0x70B4,0x70B5,0x70A9,0x7241, 0x7249,0x724A,0x726C,0x7270,0x7273,0x726E,0x72CA,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 45, Array index 0x0C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x72E4,0x72E8,0x72EB,0x72DF,0x72EA,0x72E6,0x72E3, 0x7385,0x73CC,0x73C2,0x73C8,0x73C5,0x73B9,0x73B6,0x73B5, 0x73B4,0x73EB,0x73BF,0x73C7,0x73BE,0x73C3,0x73C6,0x73B8, 0x73CB,0x74EC,0x74EE,0x752E,0x7547,0x7548,0x75A7,0x75AA, 0x7679,0x76C4,0x7708,0x7703,0x7704,0x7705,0x770A,0x76F7, 0x76FB,0x76FA,0x77E7,0x77E8,0x7806,0x7811,0x7812,0x7805, 0x7810,0x780F,0x780E,0x7809,0x7803,0x7813,0x794A,0x794C, 0x794B,0x7945,0x7944,0x79D5,0x79CD,0x79CF,0x79D6,0x79CE, 0x7A80,0x7A7E,0x7AD1,0x7B00,0x7B01,0x7C7A,0x7C78,0x7C79, 0x7C7F,0x7C80,0x7C81,0x7D03,0x7D08,0x7D01,0x7F58,0x7F91, 0x7F8D,0x7FBE,0x8007,0x800E,0x800F,0x8014,0x8037,0x80D8, 0x80C7,0x80E0,0x80D1,0x80C8,0x80C2,0x80D0,0x80C5,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 46, Array index 0x0D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x80E3,0x80D9,0x80DC,0x80CA,0x80D5,0x80C9,0x80CF, 0x80D7,0x80E6,0x80CD,0x81FF,0x8221,0x8294,0x82D9,0x82FE, 0x82F9,0x8307,0x82E8,0x8300,0x82D5,0x833A,0x82EB,0x82D6, 0x82F4,0x82EC,0x82E1,0x82F2,0x82F5,0x830C,0x82FB,0x82F6, 0x82F0,0x82EA,0x82E4,0x82E0,0x82FA,0x82F3,0x82ED,0x8677, 0x8674,0x867C,0x8673,0x8841,0x884E,0x8867,0x886A,0x8869, 0x89D3,0x8A04,0x8A07,0x8D72,0x8FE3,0x8FE1,0x8FEE,0x8FE0, 0x90F1,0x90BD,0x90BF,0x90D5,0x90C5,0x90BE,0x90C7,0x90CB, 0x90C8,0x91D4,0x91D3,0x9654,0x964F,0x9651,0x9653,0x964A, 0x964E,0x501E,0x5005,0x5007,0x5013,0x5022,0x5030,0x501B, 0x4FF5,0x4FF4,0x5033,0x5037,0x502C,0x4FF6,0x4FF7,0x5017, 0x501C,0x5020,0x5027,0x5035,0x502F,0x5031,0x500E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 47, Array index 0x0E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x515A,0x5194,0x5193,0x51CA,0x51C4,0x51C5,0x51C8, 0x51CE,0x5261,0x525A,0x5252,0x525E,0x525F,0x5255,0x5262, 0x52CD,0x530E,0x539E,0x5526,0x54E2,0x5517,0x5512,0x54E7, 0x54F3,0x54E4,0x551A,0x54FF,0x5504,0x5508,0x54EB,0x5511, 0x5505,0x54F1,0x550A,0x54FB,0x54F7,0x54F8,0x54E0,0x550E, 0x5503,0x550B,0x5701,0x5702,0x57CC,0x5832,0x57D5,0x57D2, 0x57BA,0x57C6,0x57BD,0x57BC,0x57B8,0x57B6,0x57BF,0x57C7, 0x57D0,0x57B9,0x57C1,0x590E,0x594A,0x5A19,0x5A16,0x5A2D, 0x5A2E,0x5A15,0x5A0F,0x5A17,0x5A0A,0x5A1E,0x5A33,0x5B6C, 0x5BA7,0x5BAD,0x5BAC,0x5C03,0x5C56,0x5C54,0x5CEC,0x5CFF, 0x5CEE,0x5CF1,0x5CF7,0x5D00,0x5CF9,0x5E29,0x5E28,0x5EA8, 0x5EAE,0x5EAA,0x5EAC,0x5F33,0x5F30,0x5F67,0x605D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 48, Array index 0x0F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x605A,0x6067,0x6041,0x60A2,0x6088,0x6080,0x6092, 0x6081,0x609D,0x6083,0x6095,0x609B,0x6097,0x6087,0x609C, 0x608E,0x6219,0x6246,0x62F2,0x6310,0x6356,0x632C,0x6344, 0x6345,0x6336,0x6343,0x63E4,0x6339,0x634B,0x634A,0x633C, 0x6329,0x6341,0x6334,0x6358,0x6354,0x6359,0x632D,0x6347, 0x6333,0x635A,0x6351,0x6338,0x6357,0x6340,0x6348,0x654A, 0x6546,0x65C6,0x65C3,0x65C4,0x65C2,0x664A,0x665F,0x6647, 0x6651,0x6712,0x6713,0x681F,0x681A,0x6849,0x6832,0x6833, 0x683B,0x684B,0x684F,0x6816,0x6831,0x681C,0x6835,0x682B, 0x682D,0x682F,0x684E,0x6844,0x6834,0x681D,0x6812,0x6814, 0x6826,0x6828,0x682E,0x684D,0x683A,0x6825,0x6820,0x6B2C, 0x6B2F,0x6B2D,0x6B31,0x6B34,0x6B6D,0x8082,0x6B88,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 49, Array index 0x1000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6BE6,0x6BE4,0x6BE8,0x6BE3,0x6BE2,0x6BE7,0x6C25, 0x6D7A,0x6D63,0x6D64,0x6D76,0x6D0D,0x6D61,0x6D92,0x6D58, 0x6D62,0x6D6D,0x6D6F,0x6D91,0x6D8D,0x6DEF,0x6D7F,0x6D86, 0x6D5E,0x6D67,0x6D60,0x6D97,0x6D70,0x6D7C,0x6D5F,0x6D82, 0x6D98,0x6D2F,0x6D68,0x6D8B,0x6D7E,0x6D80,0x6D84,0x6D16, 0x6D83,0x6D7B,0x6D7D,0x6D75,0x6D90,0x70DC,0x70D3,0x70D1, 0x70DD,0x70CB,0x7F39,0x70E2,0x70D7,0x70D2,0x70DE,0x70E0, 0x70D4,0x70CD,0x70C5,0x70C6,0x70C7,0x70DA,0x70CE,0x70E1, 0x7242,0x7278,0x7277,0x7276,0x7300,0x72FA,0x72F4,0x72FE, 0x72F6,0x72F3,0x72FB,0x7301,0x73D3,0x73D9,0x73E5,0x73D6, 0x73BC,0x73E7,0x73E3,0x73E9,0x73DC,0x73D2,0x73DB,0x73D4, 0x73DD,0x73DA,0x73D7,0x73D8,0x73E8,0x74DE,0x74DF,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 50, Array index 0x1100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x74F4,0x74F5,0x7521,0x755B,0x755F,0x75B0,0x75C1, 0x75BB,0x75C4,0x75C0,0x75BF,0x75B6,0x75BA,0x768A,0x76C9, 0x771D,0x771B,0x7710,0x7713,0x7712,0x7723,0x7711,0x7715, 0x7719,0x771A,0x7722,0x7727,0x7823,0x782C,0x7822,0x7835, 0x782F,0x7828,0x782E,0x782B,0x7821,0x7829,0x7833,0x782A, 0x7831,0x7954,0x795B,0x794F,0x795C,0x7953,0x7952,0x7951, 0x79EB,0x79EC,0x79E0,0x79EE,0x79ED,0x79EA,0x79DC,0x79DE, 0x79DD,0x7A86,0x7A89,0x7A85,0x7A8B,0x7A8C,0x7A8A,0x7A87, 0x7AD8,0x7B10,0x7B04,0x7B13,0x7B05,0x7B0F,0x7B08,0x7B0A, 0x7B0E,0x7B09,0x7B12,0x7C84,0x7C91,0x7C8A,0x7C8C,0x7C88, 0x7C8D,0x7C85,0x7D1E,0x7D1D,0x7D11,0x7D0E,0x7D18,0x7D16, 0x7D13,0x7D1F,0x7D12,0x7D0F,0x7D0C,0x7F5C,0x7F61,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 51, Array index 0x1200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7F5E,0x7F60,0x7F5D,0x7F5B,0x7F96,0x7F92,0x7FC3, 0x7FC2,0x7FC0,0x8016,0x803E,0x8039,0x80FA,0x80F2,0x80F9, 0x80F5,0x8101,0x80FB,0x8100,0x8201,0x822F,0x8225,0x8333, 0x832D,0x8344,0x8319,0x8351,0x8325,0x8356,0x833F,0x8341, 0x8326,0x831C,0x8322,0x8342,0x834E,0x831B,0x832A,0x8308, 0x833C,0x834D,0x8316,0x8324,0x8320,0x8337,0x832F,0x8329, 0x8347,0x8345,0x834C,0x8353,0x831E,0x832C,0x834B,0x8327, 0x8348,0x8653,0x8652,0x86A2,0x86A8,0x8696,0x868D,0x8691, 0x869E,0x8687,0x8697,0x8686,0x868B,0x869A,0x8685,0x86A5, 0x8699,0x86A1,0x86A7,0x8695,0x8698,0x868E,0x869D,0x8690, 0x8694,0x8843,0x8844,0x886D,0x8875,0x8876,0x8872,0x8880, 0x8871,0x887F,0x886F,0x8883,0x887E,0x8874,0x887C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 52, Array index 0x1300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8A12,0x8C47,0x8C57,0x8C7B,0x8CA4,0x8CA3,0x8D76, 0x8D78,0x8DB5,0x8DB7,0x8DB6,0x8ED1,0x8ED3,0x8FFE,0x8FF5, 0x9002,0x8FFF,0x8FFB,0x9004,0x8FFC,0x8FF6,0x90D6,0x90E0, 0x90D9,0x90DA,0x90E3,0x90DF,0x90E5,0x90D8,0x90DB,0x90D7, 0x90DC,0x90E4,0x9150,0x914E,0x914F,0x91D5,0x91E2,0x91DA, 0x965C,0x965F,0x96BC,0x98E3,0x9ADF,0x9B2F,0x4E7F,0x5070, 0x506A,0x5061,0x505E,0x5060,0x5053,0x504B,0x505D,0x5072, 0x5048,0x504D,0x5041,0x505B,0x504A,0x5062,0x5015,0x5045, 0x505F,0x5069,0x506B,0x5063,0x5064,0x5046,0x5040,0x506E, 0x5073,0x5057,0x5051,0x51D0,0x526B,0x526D,0x526C,0x526E, 0x52D6,0x52D3,0x532D,0x539C,0x5575,0x5576,0x553C,0x554D, 0x5550,0x5534,0x552A,0x5551,0x5562,0x5536,0x5535,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 53, Array index 0x1400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5530,0x5552,0x5545,0x550C,0x5532,0x5565,0x554E, 0x5539,0x5548,0x552D,0x553B,0x5540,0x554B,0x570A,0x5707, 0x57FB,0x5814,0x57E2,0x57F6,0x57DC,0x57F4,0x5800,0x57ED, 0x57FD,0x5808,0x57F8,0x580B,0x57F3,0x57CF,0x5807,0x57EE, 0x57E3,0x57F2,0x57E5,0x57EC,0x57E1,0x580E,0x57FC,0x5810, 0x57E7,0x5801,0x580C,0x57F1,0x57E9,0x57F0,0x580D,0x5804, 0x595C,0x5A60,0x5A58,0x5A55,0x5A67,0x5A5E,0x5A38,0x5A35, 0x5A6D,0x5A50,0x5A5F,0x5A65,0x5A6C,0x5A53,0x5A64,0x5A57, 0x5A43,0x5A5D,0x5A52,0x5A44,0x5A5B,0x5A48,0x5A8E,0x5A3E, 0x5A4D,0x5A39,0x5A4C,0x5A70,0x5A69,0x5A47,0x5A51,0x5A56, 0x5A42,0x5A5C,0x5B72,0x5B6E,0x5BC1,0x5BC0,0x5C59,0x5D1E, 0x5D0B,0x5D1D,0x5D1A,0x5D20,0x5D0C,0x5D28,0x5D0D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 54, Array index 0x1500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5D26,0x5D25,0x5D0F,0x5D30,0x5D12,0x5D23,0x5D1F, 0x5D2E,0x5E3E,0x5E34,0x5EB1,0x5EB4,0x5EB9,0x5EB2,0x5EB3, 0x5F36,0x5F38,0x5F9B,0x5F96,0x5F9F,0x608A,0x6090,0x6086, 0x60BE,0x60B0,0x60BA,0x60D3,0x60D4,0x60CF,0x60E4,0x60D9, 0x60DD,0x60C8,0x60B1,0x60DB,0x60B7,0x60CA,0x60BF,0x60C3, 0x60CD,0x60C0,0x6332,0x6365,0x638A,0x6382,0x637D,0x63BD, 0x639E,0x63AD,0x639D,0x6397,0x63AB,0x638E,0x636F,0x6387, 0x6390,0x636E,0x63AF,0x6375,0x639C,0x636D,0x63AE,0x637C, 0x63A4,0x633B,0x639F,0x6378,0x6385,0x6381,0x6391,0x638D, 0x6370,0x6553,0x65CD,0x6665,0x6661,0x665B,0x6659,0x665C, 0x6662,0x6718,0x6879,0x6887,0x6890,0x689C,0x686D,0x686E, 0x68AE,0x68AB,0x6956,0x686F,0x68A3,0x68AC,0x68A9,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 55, Array index 0x1600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6875,0x6874,0x68B2,0x688F,0x6877,0x6892,0x687C, 0x686B,0x6872,0x68AA,0x6880,0x6871,0x687E,0x689B,0x6896, 0x688B,0x68A0,0x6889,0x68A4,0x6878,0x687B,0x6891,0x688C, 0x688A,0x687D,0x6B36,0x6B33,0x6B37,0x6B38,0x6B91,0x6B8F, 0x6B8D,0x6B8E,0x6B8C,0x6C2A,0x6DC0,0x6DAB,0x6DB4,0x6DB3, 0x6E74,0x6DAC,0x6DE9,0x6DE2,0x6DB7,0x6DF6,0x6DD4,0x6E00, 0x6DC8,0x6DE0,0x6DDF,0x6DD6,0x6DBE,0x6DE5,0x6DDC,0x6DDD, 0x6DDB,0x6DF4,0x6DCA,0x6DBD,0x6DED,0x6DF0,0x6DBA,0x6DD5, 0x6DC2,0x6DCF,0x6DC9,0x6DD0,0x6DF2,0x6DD3,0x6DFD,0x6DD7, 0x6DCD,0x6DE3,0x6DBB,0x70FA,0x710D,0x70F7,0x7117,0x70F4, 0x710C,0x70F0,0x7104,0x70F3,0x7110,0x70FC,0x70FF,0x7106, 0x7113,0x7100,0x70F8,0x70F6,0x710B,0x7102,0x710E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 56, Array index 0x1700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x727E,0x727B,0x727C,0x727F,0x731D,0x7317,0x7307, 0x7311,0x7318,0x730A,0x7308,0x72FF,0x730F,0x731E,0x7388, 0x73F6,0x73F8,0x73F5,0x7404,0x7401,0x73FD,0x7407,0x7400, 0x73FA,0x73FC,0x73FF,0x740C,0x740B,0x73F4,0x7408,0x7564, 0x7563,0x75CE,0x75D2,0x75CF,0x75CB,0x75CC,0x75D1,0x75D0, 0x768F,0x7689,0x76D3,0x7739,0x772F,0x772D,0x7731,0x7732, 0x7734,0x7733,0x773D,0x7725,0x773B,0x7735,0x7848,0x7852, 0x7849,0x784D,0x784A,0x784C,0x7826,0x7845,0x7850,0x7964, 0x7967,0x7969,0x796A,0x7963,0x796B,0x7961,0x79BB,0x79FA, 0x79F8,0x79F6,0x79F7,0x7A8F,0x7A94,0x7A90,0x7B35,0x7B3B, 0x7B34,0x7B25,0x7B30,0x7B22,0x7B24,0x7B33,0x7B18,0x7B2A, 0x7B1D,0x7B31,0x7B2B,0x7B2D,0x7B2F,0x7B32,0x7B38,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 57, Array index 0x1800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7B1A,0x7B23,0x7C94,0x7C98,0x7C96,0x7CA3,0x7D35, 0x7D3D,0x7D38,0x7D36,0x7D3A,0x7D45,0x7D2C,0x7D29,0x7D41, 0x7D47,0x7D3E,0x7D3F,0x7D4A,0x7D3B,0x7D28,0x7F63,0x7F95, 0x7F9C,0x7F9D,0x7F9B,0x7FCA,0x7FCB,0x7FCD,0x7FD0,0x7FD1, 0x7FC7,0x7FCF,0x7FC9,0x801F,0x801E,0x801B,0x8047,0x8043, 0x8048,0x8118,0x8125,0x8119,0x811B,0x812D,0x811F,0x812C, 0x811E,0x8121,0x8115,0x8127,0x811D,0x8122,0x8211,0x8238, 0x8233,0x823A,0x8234,0x8232,0x8274,0x8390,0x83A3,0x83A8, 0x838D,0x837A,0x8373,0x83A4,0x8374,0x838F,0x8381,0x8395, 0x8399,0x8375,0x8394,0x83A9,0x837D,0x8383,0x838C,0x839D, 0x839B,0x83AA,0x838B,0x837E,0x83A5,0x83AF,0x8388,0x8397, 0x83B0,0x837F,0x83A6,0x8387,0x83AE,0x8376,0x8659,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 58, Array index 0x1900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8656,0x86BF,0x86B7,0x86C2,0x86C1,0x86C5,0x86BA, 0x86B0,0x86C8,0x86B9,0x86B3,0x86B8,0x86CC,0x86B4,0x86BB, 0x86BC,0x86C3,0x86BD,0x86BE,0x8852,0x8889,0x8895,0x88A8, 0x88A2,0x88AA,0x889A,0x8891,0x88A1,0x889F,0x8898,0x88A7, 0x8899,0x889B,0x8897,0x88A4,0x88AC,0x888C,0x8893,0x888E, 0x8982,0x89D6,0x89D9,0x89D5,0x8A30,0x8A27,0x8A2C,0x8A1E, 0x8C39,0x8C3B,0x8C5C,0x8C5D,0x8C7D,0x8CA5,0x8D7D,0x8D7B, 0x8D79,0x8DBC,0x8DC2,0x8DB9,0x8DBF,0x8DC1,0x8ED8,0x8EDE, 0x8EDD,0x8EDC,0x8ED7,0x8EE0,0x8EE1,0x9024,0x900B,0x9011, 0x901C,0x900C,0x9021,0x90EF,0x90EA,0x90F0,0x90F4,0x90F2, 0x90F3,0x90D4,0x90EB,0x90EC,0x90E9,0x9156,0x9158,0x915A, 0x9153,0x9155,0x91EC,0x91F4,0x91F1,0x91F3,0x91F8,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 59, Array index 0x1A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x91E4,0x91F9,0x91EA,0x91EB,0x91F7,0x91E8,0x91EE, 0x957A,0x9586,0x9588,0x967C,0x966D,0x966B,0x9671,0x966F, 0x96BF,0x976A,0x9804,0x98E5,0x9997,0x509B,0x5095,0x5094, 0x509E,0x508B,0x50A3,0x5083,0x508C,0x508E,0x509D,0x5068, 0x509C,0x5092,0x5082,0x5087,0x515F,0x51D4,0x5312,0x5311, 0x53A4,0x53A7,0x5591,0x55A8,0x55A5,0x55AD,0x5577,0x5645, 0x55A2,0x5593,0x5588,0x558F,0x55B5,0x5581,0x55A3,0x5592, 0x55A4,0x557D,0x558C,0x55A6,0x557F,0x5595,0x55A1,0x558E, 0x570C,0x5829,0x5837,0x5819,0x581E,0x5827,0x5823,0x5828, 0x57F5,0x5848,0x5825,0x581C,0x581B,0x5833,0x583F,0x5836, 0x582E,0x5839,0x5838,0x582D,0x582C,0x583B,0x5961,0x5AAF, 0x5A94,0x5A9F,0x5A7A,0x5AA2,0x5A9E,0x5A78,0x5AA6,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 60, Array index 0x1B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5A7C,0x5AA5,0x5AAC,0x5A95,0x5AAE,0x5A37,0x5A84, 0x5A8A,0x5A97,0x5A83,0x5A8B,0x5AA9,0x5A7B,0x5A7D,0x5A8C, 0x5A9C,0x5A8F,0x5A93,0x5A9D,0x5BEA,0x5BCD,0x5BCB,0x5BD4, 0x5BD1,0x5BCA,0x5BCE,0x5C0C,0x5C30,0x5D37,0x5D43,0x5D6B, 0x5D41,0x5D4B,0x5D3F,0x5D35,0x5D51,0x5D4E,0x5D55,0x5D33, 0x5D3A,0x5D52,0x5D3D,0x5D31,0x5D59,0x5D42,0x5D39,0x5D49, 0x5D38,0x5D3C,0x5D32,0x5D36,0x5D40,0x5D45,0x5E44,0x5E41, 0x5F58,0x5FA6,0x5FA5,0x5FAB,0x60C9,0x60B9,0x60CC,0x60E2, 0x60CE,0x60C4,0x6114,0x60F2,0x610A,0x6116,0x6105,0x60F5, 0x6113,0x60F8,0x60FC,0x60FE,0x60C1,0x6103,0x6118,0x611D, 0x6110,0x60FF,0x6104,0x610B,0x624A,0x6394,0x63B1,0x63B0, 0x63CE,0x63E5,0x63E8,0x63EF,0x63C3,0x649D,0x63F3,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 61, Array index 0x1C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x63CA,0x63E0,0x63F6,0x63D5,0x63F2,0x63F5,0x6461, 0x63DF,0x63BE,0x63DD,0x63DC,0x63C4,0x63D8,0x63D3,0x63C2, 0x63C7,0x63CC,0x63CB,0x63C8,0x63F0,0x63D7,0x63D9,0x6532, 0x6567,0x656A,0x6564,0x655C,0x6568,0x6565,0x658C,0x659D, 0x659E,0x65AE,0x65D0,0x65D2,0x667C,0x666C,0x667B,0x6680, 0x6671,0x6679,0x666A,0x6672,0x6701,0x690C,0x68D3,0x6904, 0x68DC,0x692A,0x68EC,0x68EA,0x68F1,0x690F,0x68D6,0x68F7, 0x68EB,0x68E4,0x68F6,0x6913,0x6910,0x68F3,0x68E1,0x6907, 0x68CC,0x6908,0x6970,0x68B4,0x6911,0x68EF,0x68C6,0x6914, 0x68F8,0x68D0,0x68FD,0x68FC,0x68E8,0x690B,0x690A,0x6917, 0x68CE,0x68C8,0x68DD,0x68DE,0x68E6,0x68F4,0x68D1,0x6906, 0x68D4,0x68E9,0x6915,0x6925,0x68C7,0x6B39,0x6B3B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 62, Array index 0x1D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6B3F,0x6B3C,0x6B94,0x6B97,0x6B99,0x6B95,0x6BBD, 0x6BF0,0x6BF2,0x6BF3,0x6C30,0x6DFC,0x6E46,0x6E47,0x6E1F, 0x6E49,0x6E88,0x6E3C,0x6E3D,0x6E45,0x6E62,0x6E2B,0x6E3F, 0x6E41,0x6E5D,0x6E73,0x6E1C,0x6E33,0x6E4B,0x6E40,0x6E51, 0x6E3B,0x6E03,0x6E2E,0x6E5E,0x6E68,0x6E5C,0x6E61,0x6E31, 0x6E28,0x6E60,0x6E71,0x6E6B,0x6E39,0x6E22,0x6E30,0x6E53, 0x6E65,0x6E27,0x6E78,0x6E64,0x6E77,0x6E55,0x6E79,0x6E52, 0x6E66,0x6E35,0x6E36,0x6E5A,0x7120,0x711E,0x712F,0x70FB, 0x712E,0x7131,0x7123,0x7125,0x7122,0x7132,0x711F,0x7128, 0x713A,0x711B,0x724B,0x725A,0x7288,0x7289,0x7286,0x7285, 0x728B,0x7312,0x730B,0x7330,0x7322,0x7331,0x7333,0x7327, 0x7332,0x732D,0x7326,0x7323,0x7335,0x730C,0x742E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 63, Array index 0x1E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x742C,0x7430,0x742B,0x7416,0x741A,0x7421,0x742D, 0x7431,0x7424,0x7423,0x741D,0x7429,0x7420,0x7432,0x74FB, 0x752F,0x756F,0x756C,0x75E7,0x75DA,0x75E1,0x75E6,0x75DD, 0x75DF,0x75E4,0x75D7,0x7695,0x7692,0x76DA,0x7746,0x7747, 0x7744,0x774D,0x7745,0x774A,0x774E,0x774B,0x774C,0x77DE, 0x77EC,0x7860,0x7864,0x7865,0x785C,0x786D,0x7871,0x786A, 0x786E,0x7870,0x7869,0x7868,0x785E,0x7862,0x7974,0x7973, 0x7972,0x7970,0x7A02,0x7A0A,0x7A03,0x7A0C,0x7A04,0x7A99, 0x7AE6,0x7AE4,0x7B4A,0x7B47,0x7B44,0x7B48,0x7B4C,0x7B4E, 0x7B40,0x7B58,0x7B45,0x7CA2,0x7C9E,0x7CA8,0x7CA1,0x7D58, 0x7D6F,0x7D63,0x7D53,0x7D56,0x7D67,0x7D6A,0x7D4F,0x7D6D, 0x7D5C,0x7D6B,0x7D52,0x7D54,0x7D69,0x7D51,0x7D5F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 64, Array index 0x1F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7D4E,0x7F3E,0x7F3F,0x7F65,0x7F66,0x7FA2,0x7FA0, 0x7FA1,0x7FD7,0x8051,0x804F,0x8050,0x80FE,0x80D4,0x8143, 0x814A,0x8152,0x814F,0x8147,0x813D,0x814D,0x813A,0x81E6, 0x81EE,0x81F7,0x81F8,0x81F9,0x8204,0x823C,0x823D,0x823F, 0x8275,0x833B,0x83CF,0x83F9,0x8423,0x83C0,0x83E8,0x8412, 0x83E7,0x83E4,0x83FC,0x83F6,0x8410,0x83C6,0x83C8,0x83EB, 0x83E3,0x83BF,0x8401,0x83DD,0x83E5,0x83D8,0x83FF,0x83E1, 0x83CB,0x83CE,0x83D6,0x83F5,0x83C9,0x8409,0x840F,0x83DE, 0x8411,0x8406,0x83C2,0x83F3,0x83D5,0x83FA,0x83C7,0x83D1, 0x83EA,0x8413,0x839A,0x83C3,0x83EC,0x83EE,0x83C4,0x83FB, 0x83D7,0x83E2,0x841B,0x83DB,0x83FE,0x86D8,0x86E2,0x86E6, 0x86D3,0x86E3,0x86DA,0x86EA,0x86DD,0x86EB,0x86DC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 65, Array index 0x2000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x86EC,0x86E9,0x86D7,0x86E8,0x86D1,0x8848,0x8856, 0x8855,0x88BA,0x88D7,0x88B9,0x88B8,0x88C0,0x88BE,0x88B6, 0x88BC,0x88B7,0x88BD,0x88B2,0x8901,0x88C9,0x8995,0x8998, 0x8997,0x89DD,0x89DA,0x89DB,0x8A4E,0x8A4D,0x8A39,0x8A59, 0x8A40,0x8A57,0x8A58,0x8A44,0x8A45,0x8A52,0x8A48,0x8A51, 0x8A4A,0x8A4C,0x8A4F,0x8C5F,0x8C81,0x8C80,0x8CBA,0x8CBE, 0x8CB0,0x8CB9,0x8CB5,0x8D84,0x8D80,0x8D89,0x8DD8,0x8DD3, 0x8DCD,0x8DC7,0x8DD6,0x8DDC,0x8DCF,0x8DD5,0x8DD9,0x8DC8, 0x8DD7,0x8DC5,0x8EEF,0x8EF7,0x8EFA,0x8EF9,0x8EE6,0x8EEE, 0x8EE5,0x8EF5,0x8EE7,0x8EE8,0x8EF6,0x8EEB,0x8EF1,0x8EEC, 0x8EF4,0x8EE9,0x902D,0x9034,0x902F,0x9106,0x912C,0x9104, 0x90FF,0x90FC,0x9108,0x90F9,0x90FB,0x9101,0x9100,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 66, Array index 0x2100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9107,0x9105,0x9103,0x9161,0x9164,0x915F,0x9162, 0x9160,0x9201,0x920A,0x9225,0x9203,0x921A,0x9226,0x920F, 0x920C,0x9200,0x9212,0x91FF,0x91FD,0x9206,0x9204,0x9227, 0x9202,0x921C,0x9224,0x9219,0x9217,0x9205,0x9216,0x957B, 0x958D,0x958C,0x9590,0x9687,0x967E,0x9688,0x9689,0x9683, 0x9680,0x96C2,0x96C8,0x96C3,0x96F1,0x96F0,0x976C,0x9770, 0x976E,0x9807,0x98A9,0x98EB,0x9CE6,0x9EF9,0x4E83,0x4E84, 0x4EB6,0x50BD,0x50BF,0x50C6,0x50AE,0x50C4,0x50CA,0x50B4, 0x50C8,0x50C2,0x50B0,0x50C1,0x50BA,0x50B1,0x50CB,0x50C9, 0x50B6,0x50B8,0x51D7,0x527A,0x5278,0x527B,0x527C,0x55C3, 0x55DB,0x55CC,0x55D0,0x55CB,0x55CA,0x55DD,0x55C0,0x55D4, 0x55C4,0x55E9,0x55BF,0x55D2,0x558D,0x55CF,0x55D5,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 67, Array index 0x2200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x55E2,0x55D6,0x55C8,0x55F2,0x55CD,0x55D9,0x55C2, 0x5714,0x5853,0x5868,0x5864,0x584F,0x584D,0x5849,0x586F, 0x5855,0x584E,0x585D,0x5859,0x5865,0x585B,0x583D,0x5863, 0x5871,0x58FC,0x5AC7,0x5AC4,0x5ACB,0x5ABA,0x5AB8,0x5AB1, 0x5AB5,0x5AB0,0x5ABF,0x5AC8,0x5ABB,0x5AC6,0x5AB7,0x5AC0, 0x5ACA,0x5AB4,0x5AB6,0x5ACD,0x5AB9,0x5A90,0x5BD6,0x5BD8, 0x5BD9,0x5C1F,0x5C33,0x5D71,0x5D63,0x5D4A,0x5D65,0x5D72, 0x5D6C,0x5D5E,0x5D68,0x5D67,0x5D62,0x5DF0,0x5E4F,0x5E4E, 0x5E4A,0x5E4D,0x5E4B,0x5EC5,0x5ECC,0x5EC6,0x5ECB,0x5EC7, 0x5F40,0x5FAF,0x5FAD,0x60F7,0x6149,0x614A,0x612B,0x6145, 0x6136,0x6132,0x612E,0x6146,0x612F,0x614F,0x6129,0x6140, 0x6220,0x9168,0x6223,0x6225,0x6224,0x63C5,0x63F1,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 68, Array index 0x2300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x63EB,0x6410,0x6412,0x6409,0x6420,0x6424,0x6433, 0x6443,0x641F,0x6415,0x6418,0x6439,0x6437,0x6422,0x6423, 0x640C,0x6426,0x6430,0x6428,0x6441,0x6435,0x642F,0x640A, 0x641A,0x6440,0x6425,0x6427,0x640B,0x63E7,0x641B,0x642E, 0x6421,0x640E,0x656F,0x6592,0x65D3,0x6686,0x668C,0x6695, 0x6690,0x668B,0x668A,0x6699,0x6694,0x6678,0x6720,0x6966, 0x695F,0x6938,0x694E,0x6962,0x6971,0x693F,0x6945,0x696A, 0x6939,0x6942,0x6957,0x6959,0x697A,0x6948,0x6949,0x6935, 0x696C,0x6933,0x693D,0x6965,0x68F0,0x6978,0x6934,0x6969, 0x6940,0x696F,0x6944,0x6976,0x6958,0x6941,0x6974,0x694C, 0x693B,0x694B,0x6937,0x695C,0x694F,0x6951,0x6932,0x6952, 0x692F,0x697B,0x693C,0x6B46,0x6B45,0x6B43,0x6B42,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 69, Array index 0x2400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6B48,0x6B41,0x6B9B,0x6BFB,0x6BFC,0x6BF9,0x6BF7, 0x6BF8,0x6E9B,0x6ED6,0x6EC8,0x6E8F,0x6EC0,0x6E9F,0x6E93, 0x6E94,0x6EA0,0x6EB1,0x6EB9,0x6EC6,0x6ED2,0x6EBD,0x6EC1, 0x6E9E,0x6EC9,0x6EB7,0x6EB0,0x6ECD,0x6EA6,0x6ECF,0x6EB2, 0x6EBE,0x6EC3,0x6EDC,0x6ED8,0x6E99,0x6E92,0x6E8E,0x6E8D, 0x6EA4,0x6EA1,0x6EBF,0x6EB3,0x6ED0,0x6ECA,0x6E97,0x6EAE, 0x6EA3,0x7147,0x7154,0x7152,0x7163,0x7160,0x7141,0x715D, 0x7162,0x7172,0x7178,0x716A,0x7161,0x7142,0x7158,0x7143, 0x714B,0x7170,0x715F,0x7150,0x7153,0x7144,0x714D,0x715A, 0x724F,0x728D,0x728C,0x7291,0x7290,0x728E,0x733C,0x7342, 0x733B,0x733A,0x7340,0x734A,0x7349,0x7444,0x744A,0x744B, 0x7452,0x7451,0x7457,0x7440,0x744F,0x7450,0x744E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 70, Array index 0x2500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7442,0x7446,0x744D,0x7454,0x74E1,0x74FF,0x74FE, 0x74FD,0x751D,0x7579,0x7577,0x6983,0x75EF,0x760F,0x7603, 0x75F7,0x75FE,0x75FC,0x75F9,0x75F8,0x7610,0x75FB,0x75F6, 0x75ED,0x75F5,0x75FD,0x7699,0x76B5,0x76DD,0x7755,0x775F, 0x7760,0x7752,0x7756,0x775A,0x7769,0x7767,0x7754,0x7759, 0x776D,0x77E0,0x7887,0x789A,0x7894,0x788F,0x7884,0x7895, 0x7885,0x7886,0x78A1,0x7883,0x7879,0x7899,0x7880,0x7896, 0x787B,0x797C,0x7982,0x797D,0x7979,0x7A11,0x7A18,0x7A19, 0x7A12,0x7A17,0x7A15,0x7A22,0x7A13,0x7A1B,0x7A10,0x7AA3, 0x7AA2,0x7A9E,0x7AEB,0x7B66,0x7B64,0x7B6D,0x7B74,0x7B69, 0x7B72,0x7B65,0x7B73,0x7B71,0x7B70,0x7B61,0x7B78,0x7B76, 0x7B63,0x7CB2,0x7CB4,0x7CAF,0x7D88,0x7D86,0x7D80,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 71, Array index 0x2600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7D8D,0x7D7F,0x7D85,0x7D7A,0x7D8E,0x7D7B,0x7D83, 0x7D7C,0x7D8C,0x7D94,0x7D84,0x7D7D,0x7D92,0x7F6D,0x7F6B, 0x7F67,0x7F68,0x7F6C,0x7FA6,0x7FA5,0x7FA7,0x7FDB,0x7FDC, 0x8021,0x8164,0x8160,0x8177,0x815C,0x8169,0x815B,0x8162, 0x8172,0x6721,0x815E,0x8176,0x8167,0x816F,0x8144,0x8161, 0x821D,0x8249,0x8244,0x8240,0x8242,0x8245,0x84F1,0x843F, 0x8456,0x8476,0x8479,0x848F,0x848D,0x8465,0x8451,0x8440, 0x8486,0x8467,0x8430,0x844D,0x847D,0x845A,0x8459,0x8474, 0x8473,0x845D,0x8507,0x845E,0x8437,0x843A,0x8434,0x847A, 0x8443,0x8478,0x8432,0x8445,0x8429,0x83D9,0x844B,0x842F, 0x8442,0x842D,0x845F,0x8470,0x8439,0x844E,0x844C,0x8452, 0x846F,0x84C5,0x848E,0x843B,0x8447,0x8436,0x8433,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 72, Array index 0x2700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8468,0x847E,0x8444,0x842B,0x8460,0x8454,0x846E, 0x8450,0x870B,0x8704,0x86F7,0x870C,0x86FA,0x86D6,0x86F5, 0x874D,0x86F8,0x870E,0x8709,0x8701,0x86F6,0x870D,0x8705, 0x88D6,0x88CB,0x88CD,0x88CE,0x88DE,0x88DB,0x88DA,0x88CC, 0x88D0,0x8985,0x899B,0x89DF,0x89E5,0x89E4,0x89E1,0x89E0, 0x89E2,0x89DC,0x89E6,0x8A76,0x8A86,0x8A7F,0x8A61,0x8A3F, 0x8A77,0x8A82,0x8A84,0x8A75,0x8A83,0x8A81,0x8A74,0x8A7A, 0x8C3C,0x8C4B,0x8C4A,0x8C65,0x8C64,0x8C66,0x8C86,0x8C84, 0x8C85,0x8CCC,0x8D68,0x8D69,0x8D91,0x8D8C,0x8D8E,0x8D8F, 0x8D8D,0x8D93,0x8D94,0x8D90,0x8D92,0x8DF0,0x8DE0,0x8DEC, 0x8DF1,0x8DEE,0x8DD0,0x8DE9,0x8DE3,0x8DE2,0x8DE7,0x8DF2, 0x8DEB,0x8DF4,0x8F06,0x8EFF,0x8F01,0x8F00,0x8F05,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 73, Array index 0x2800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8F07,0x8F08,0x8F02,0x8F0B,0x9052,0x903F,0x9044, 0x9049,0x903D,0x9110,0x910D,0x910F,0x9111,0x9116,0x9114, 0x910B,0x910E,0x916E,0x916F,0x9248,0x9252,0x9230,0x923A, 0x9266,0x9233,0x9265,0x925E,0x9283,0x922E,0x924A,0x9246, 0x926D,0x926C,0x924F,0x9260,0x9267,0x926F,0x9236,0x9261, 0x9270,0x9231,0x9254,0x9263,0x9250,0x9272,0x924E,0x9253, 0x924C,0x9256,0x9232,0x959F,0x959C,0x959E,0x959B,0x9692, 0x9693,0x9691,0x9697,0x96CE,0x96FA,0x96FD,0x96F8,0x96F5, 0x9773,0x9777,0x9778,0x9772,0x980F,0x980D,0x980E,0x98AC, 0x98F6,0x98F9,0x99AF,0x99B2,0x99B0,0x99B5,0x9AAD,0x9AAB, 0x9B5B,0x9CEA,0x9CED,0x9CE7,0x9E80,0x9EFD,0x50E6,0x50D4, 0x50D7,0x50E8,0x50F3,0x50DB,0x50EA,0x50DD,0x50E4,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 74, Array index 0x2900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x50D3,0x50EC,0x50F0,0x50EF,0x50E3,0x50E0,0x51D8, 0x5280,0x5281,0x52E9,0x52EB,0x5330,0x53AC,0x5627,0x5615, 0x560C,0x5612,0x55FC,0x560F,0x561C,0x5601,0x5613,0x5602, 0x55FA,0x561D,0x5604,0x55FF,0x55F9,0x5889,0x587C,0x5890, 0x5898,0x5886,0x5881,0x587F,0x5874,0x588B,0x587A,0x5887, 0x5891,0x588E,0x5876,0x5882,0x5888,0x587B,0x5894,0x588F, 0x58FE,0x596B,0x5ADC,0x5AEE,0x5AE5,0x5AD5,0x5AEA,0x5ADA, 0x5AED,0x5AEB,0x5AF3,0x5AE2,0x5AE0,0x5ADB,0x5AEC,0x5ADE, 0x5ADD,0x5AD9,0x5AE8,0x5ADF,0x5B77,0x5BE0,0x5BE3,0x5C63, 0x5D82,0x5D80,0x5D7D,0x5D86,0x5D7A,0x5D81,0x5D77,0x5D8A, 0x5D89,0x5D88,0x5D7E,0x5D7C,0x5D8D,0x5D79,0x5D7F,0x5E58, 0x5E59,0x5E53,0x5ED8,0x5ED1,0x5ED7,0x5ECE,0x5EDC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 75, Array index 0x2A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5ED5,0x5ED9,0x5ED2,0x5ED4,0x5F44,0x5F43,0x5F6F, 0x5FB6,0x612C,0x6128,0x6141,0x615E,0x6171,0x6173,0x6152, 0x6153,0x6172,0x616C,0x6180,0x6174,0x6154,0x617A,0x615B, 0x6165,0x613B,0x616A,0x6161,0x6156,0x6229,0x6227,0x622B, 0x642B,0x644D,0x645B,0x645D,0x6474,0x6476,0x6472,0x6473, 0x647D,0x6475,0x6466,0x64A6,0x644E,0x6482,0x645E,0x645C, 0x644B,0x6453,0x6460,0x6450,0x647F,0x643F,0x646C,0x646B, 0x6459,0x6465,0x6477,0x6573,0x65A0,0x66A1,0x66A0,0x669F, 0x6705,0x6704,0x6722,0x69B1,0x69B6,0x69C9,0x69A0,0x69CE, 0x6996,0x69B0,0x69AC,0x69BC,0x6991,0x6999,0x698E,0x69A7, 0x698D,0x69A9,0x69BE,0x69AF,0x69BF,0x69C4,0x69BD,0x69A4, 0x69D4,0x69B9,0x69CA,0x699A,0x69CF,0x69B3,0x6993,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 76, Array index 0x2B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x69AA,0x69A1,0x699E,0x69D9,0x6997,0x6990,0x69C2, 0x69B5,0x69A5,0x69C6,0x6B4A,0x6B4D,0x6B4B,0x6B9E,0x6B9F, 0x6BA0,0x6BC3,0x6BC4,0x6BFE,0x6ECE,0x6EF5,0x6EF1,0x6F03, 0x6F25,0x6EF8,0x6F37,0x6EFB,0x6F2E,0x6F09,0x6F4E,0x6F19, 0x6F1A,0x6F27,0x6F18,0x6F3B,0x6F12,0x6EED,0x6F0A,0x6F36, 0x6F73,0x6EF9,0x6EEE,0x6F2D,0x6F40,0x6F30,0x6F3C,0x6F35, 0x6EEB,0x6F07,0x6F0E,0x6F43,0x6F05,0x6EFD,0x6EF6,0x6F39, 0x6F1C,0x6EFC,0x6F3A,0x6F1F,0x6F0D,0x6F1E,0x6F08,0x6F21, 0x7187,0x7190,0x7189,0x7180,0x7185,0x7182,0x718F,0x717B, 0x7186,0x7181,0x7197,0x7244,0x7253,0x7297,0x7295,0x7293, 0x7343,0x734D,0x7351,0x734C,0x7462,0x7473,0x7471,0x7475, 0x7472,0x7467,0x746E,0x7500,0x7502,0x7503,0x757D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 77, Array index 0x2C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7590,0x7616,0x7608,0x760C,0x7615,0x7611,0x760A, 0x7614,0x76B8,0x7781,0x777C,0x7785,0x7782,0x776E,0x7780, 0x776F,0x777E,0x7783,0x78B2,0x78AA,0x78B4,0x78AD,0x78A8, 0x787E,0x78AB,0x789E,0x78A5,0x78A0,0x78AC,0x78A2,0x78A4, 0x7998,0x798A,0x798B,0x7996,0x7995,0x7994,0x7993,0x7997, 0x7988,0x7992,0x7990,0x7A2B,0x7A4A,0x7A30,0x7A2F,0x7A28, 0x7A26,0x7AA8,0x7AAB,0x7AAC,0x7AEE,0x7B88,0x7B9C,0x7B8A, 0x7B91,0x7B90,0x7B96,0x7B8D,0x7B8C,0x7B9B,0x7B8E,0x7B85, 0x7B98,0x5284,0x7B99,0x7BA4,0x7B82,0x7CBB,0x7CBF,0x7CBC, 0x7CBA,0x7DA7,0x7DB7,0x7DC2,0x7DA3,0x7DAA,0x7DC1,0x7DC0, 0x7DC5,0x7D9D,0x7DCE,0x7DC4,0x7DC6,0x7DCB,0x7DCC,0x7DAF, 0x7DB9,0x7D96,0x7DBC,0x7D9F,0x7DA6,0x7DAE,0x7DA9,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 78, Array index 0x2D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7DA1,0x7DC9,0x7F73,0x7FE2,0x7FE3,0x7FE5,0x7FDE, 0x8024,0x805D,0x805C,0x8189,0x8186,0x8183,0x8187,0x818D, 0x818C,0x818B,0x8215,0x8497,0x84A4,0x84A1,0x849F,0x84BA, 0x84CE,0x84C2,0x84AC,0x84AE,0x84AB,0x84B9,0x84B4,0x84C1, 0x84CD,0x84AA,0x849A,0x84B1,0x84D0,0x849D,0x84A7,0x84BB, 0x84A2,0x8494,0x84C7,0x84CC,0x849B,0x84A9,0x84AF,0x84A8, 0x84D6,0x8498,0x84B6,0x84CF,0x84A0,0x84D7,0x84D4,0x84D2, 0x84DB,0x84B0,0x8491,0x8661,0x8733,0x8723,0x8728,0x876B, 0x8740,0x872E,0x871E,0x8721,0x8719,0x871B,0x8743,0x872C, 0x8741,0x873E,0x8746,0x8720,0x8732,0x872A,0x872D,0x873C, 0x8712,0x873A,0x8731,0x8735,0x8742,0x8726,0x8727,0x8738, 0x8724,0x871A,0x8730,0x8711,0x88F7,0x88E7,0x88F1,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 79, Array index 0x2E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x88F2,0x88FA,0x88FE,0x88EE,0x88FC,0x88F6,0x88FB, 0x88F0,0x88EC,0x88EB,0x899D,0x89A1,0x899F,0x899E,0x89E9, 0x89EB,0x89E8,0x8AAB,0x8A99,0x8A8B,0x8A92,0x8A8F,0x8A96, 0x8C3D,0x8C68,0x8C69,0x8CD5,0x8CCF,0x8CD7,0x8D96,0x8E09, 0x8E02,0x8DFF,0x8E0D,0x8DFD,0x8E0A,0x8E03,0x8E07,0x8E06, 0x8E05,0x8DFE,0x8E00,0x8E04,0x8F10,0x8F11,0x8F0E,0x8F0D, 0x9123,0x911C,0x9120,0x9122,0x911F,0x911D,0x911A,0x9124, 0x9121,0x911B,0x917A,0x9172,0x9179,0x9173,0x92A5,0x92A4, 0x9276,0x929B,0x927A,0x92A0,0x9294,0x92AA,0x928D,0x92A6, 0x929A,0x92AB,0x9279,0x9297,0x927F,0x92A3,0x92EE,0x928E, 0x9282,0x9295,0x92A2,0x927D,0x9288,0x92A1,0x928A,0x9286, 0x928C,0x9299,0x92A7,0x927E,0x9287,0x92A9,0x929D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 80, Array index 0x2F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x928B,0x922D,0x969E,0x96A1,0x96FF,0x9758,0x977D, 0x977A,0x977E,0x9783,0x9780,0x9782,0x977B,0x9784,0x9781, 0x977F,0x97CE,0x97CD,0x9816,0x98AD,0x98AE,0x9902,0x9900, 0x9907,0x999D,0x999C,0x99C3,0x99B9,0x99BB,0x99BA,0x99C2, 0x99BD,0x99C7,0x9AB1,0x9AE3,0x9AE7,0x9B3E,0x9B3F,0x9B60, 0x9B61,0x9B5F,0x9CF1,0x9CF2,0x9CF5,0x9EA7,0x50FF,0x5103, 0x5130,0x50F8,0x5106,0x5107,0x50F6,0x50FE,0x510B,0x510C, 0x50FD,0x510A,0x528B,0x528C,0x52F1,0x52EF,0x5648,0x5642, 0x564C,0x5635,0x5641,0x564A,0x5649,0x5646,0x5658,0x565A, 0x5640,0x5633,0x563D,0x562C,0x563E,0x5638,0x562A,0x563A, 0x571A,0x58AB,0x589D,0x58B1,0x58A0,0x58A3,0x58AF,0x58AC, 0x58A5,0x58A1,0x58FF,0x5AFF,0x5AF4,0x5AFD,0x5AF7,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 81, Array index 0x3000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5AF6,0x5B03,0x5AF8,0x5B02,0x5AF9,0x5B01,0x5B07, 0x5B05,0x5B0F,0x5C67,0x5D99,0x5D97,0x5D9F,0x5D92,0x5DA2, 0x5D93,0x5D95,0x5DA0,0x5D9C,0x5DA1,0x5D9A,0x5D9E,0x5E69, 0x5E5D,0x5E60,0x5E5C,0x7DF3,0x5EDB,0x5EDE,0x5EE1,0x5F49, 0x5FB2,0x618B,0x6183,0x6179,0x61B1,0x61B0,0x61A2,0x6189, 0x619B,0x6193,0x61AF,0x61AD,0x619F,0x6192,0x61AA,0x61A1, 0x618D,0x6166,0x61B3,0x622D,0x646E,0x6470,0x6496,0x64A0, 0x6485,0x6497,0x649C,0x648F,0x648B,0x648A,0x648C,0x64A3, 0x649F,0x6468,0x64B1,0x6498,0x6576,0x657A,0x6579,0x657B, 0x65B2,0x65B3,0x66B5,0x66B0,0x66A9,0x66B2,0x66B7,0x66AA, 0x66AF,0x6A00,0x6A06,0x6A17,0x69E5,0x69F8,0x6A15,0x69F1, 0x69E4,0x6A20,0x69FF,0x69EC,0x69E2,0x6A1B,0x6A1D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 82, Array index 0x3100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x69FE,0x6A27,0x69F2,0x69EE,0x6A14,0x69F7,0x69E7, 0x6A40,0x6A08,0x69E6,0x69FB,0x6A0D,0x69FC,0x69EB,0x6A09, 0x6A04,0x6A18,0x6A25,0x6A0F,0x69F6,0x6A26,0x6A07,0x69F4, 0x6A16,0x6B51,0x6BA5,0x6BA3,0x6BA2,0x6BA6,0x6C01,0x6C00, 0x6BFF,0x6C02,0x6F41,0x6F26,0x6F7E,0x6F87,0x6FC6,0x6F92, 0x6F8D,0x6F89,0x6F8C,0x6F62,0x6F4F,0x6F85,0x6F5A,0x6F96, 0x6F76,0x6F6C,0x6F82,0x6F55,0x6F72,0x6F52,0x6F50,0x6F57, 0x6F94,0x6F93,0x6F5D,0x6F00,0x6F61,0x6F6B,0x6F7D,0x6F67, 0x6F90,0x6F53,0x6F8B,0x6F69,0x6F7F,0x6F95,0x6F63,0x6F77, 0x6F6A,0x6F7B,0x71B2,0x71AF,0x719B,0x71B0,0x71A0,0x719A, 0x71A9,0x71B5,0x719D,0x71A5,0x719E,0x71A4,0x71A1,0x71AA, 0x719C,0x71A7,0x71B3,0x7298,0x729A,0x7358,0x7352,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 83, Array index 0x3200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x735E,0x735F,0x7360,0x735D,0x735B,0x7361,0x735A, 0x7359,0x7362,0x7487,0x7489,0x748A,0x7486,0x7481,0x747D, 0x7485,0x7488,0x747C,0x7479,0x7508,0x7507,0x757E,0x7625, 0x761E,0x7619,0x761D,0x761C,0x7623,0x761A,0x7628,0x761B, 0x769C,0x769D,0x769E,0x769B,0x778D,0x778F,0x7789,0x7788, 0x78CD,0x78BB,0x78CF,0x78CC,0x78D1,0x78CE,0x78D4,0x78C8, 0x78C3,0x78C4,0x78C9,0x799A,0x79A1,0x79A0,0x799C,0x79A2, 0x799B,0x6B76,0x7A39,0x7AB2,0x7AB4,0x7AB3,0x7BB7,0x7BCB, 0x7BBE,0x7BAC,0x7BCE,0x7BAF,0x7BB9,0x7BCA,0x7BB5,0x7CC5, 0x7CC8,0x7CCC,0x7CCB,0x7DF7,0x7DDB,0x7DEA,0x7DE7,0x7DD7, 0x7DE1,0x7E03,0x7DFA,0x7DE6,0x7DF6,0x7DF1,0x7DF0,0x7DEE, 0x7DDF,0x7F76,0x7FAC,0x7FB0,0x7FAD,0x7FED,0x7FEB,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 84, Array index 0x3300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7FEA,0x7FEC,0x7FE6,0x7FE8,0x8064,0x8067,0x81A3, 0x819F,0x819E,0x8195,0x81A2,0x8199,0x8197,0x8216,0x824F, 0x8253,0x8252,0x8250,0x824E,0x8251,0x8524,0x853B,0x850F, 0x8500,0x8529,0x850E,0x8509,0x850D,0x851F,0x850A,0x8527, 0x851C,0x84FB,0x852B,0x84FA,0x8508,0x850C,0x84F4,0x852A, 0x84F2,0x8515,0x84F7,0x84EB,0x84F3,0x84FC,0x8512,0x84EA, 0x84E9,0x8516,0x84FE,0x8528,0x851D,0x852E,0x8502,0x84FD, 0x851E,0x84F6,0x8531,0x8526,0x84E7,0x84E8,0x84F0,0x84EF, 0x84F9,0x8518,0x8520,0x8530,0x850B,0x8519,0x852F,0x8662, 0x8756,0x8763,0x8764,0x8777,0x87E1,0x8773,0x8758,0x8754, 0x875B,0x8752,0x8761,0x875A,0x8751,0x875E,0x876D,0x876A, 0x8750,0x874E,0x875F,0x875D,0x876F,0x876C,0x877A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 85, Array index 0x3400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x876E,0x875C,0x8765,0x874F,0x877B,0x8775,0x8762, 0x8767,0x8769,0x885A,0x8905,0x890C,0x8914,0x890B,0x8917, 0x8918,0x8919,0x8906,0x8916,0x8911,0x890E,0x8909,0x89A2, 0x89A4,0x89A3,0x89ED,0x89F0,0x89EC,0x8ACF,0x8AC6,0x8AB8, 0x8AD3,0x8AD1,0x8AD4,0x8AD5,0x8ABB,0x8AD7,0x8ABE,0x8AC0, 0x8AC5,0x8AD8,0x8AC3,0x8ABA,0x8ABD,0x8AD9,0x8C3E,0x8C4D, 0x8C8F,0x8CE5,0x8CDF,0x8CD9,0x8CE8,0x8CDA,0x8CDD,0x8CE7, 0x8DA0,0x8D9C,0x8DA1,0x8D9B,0x8E20,0x8E23,0x8E25,0x8E24, 0x8E2E,0x8E15,0x8E1B,0x8E16,0x8E11,0x8E19,0x8E26,0x8E27, 0x8E14,0x8E12,0x8E18,0x8E13,0x8E1C,0x8E17,0x8E1A,0x8F2C, 0x8F24,0x8F18,0x8F1A,0x8F20,0x8F23,0x8F16,0x8F17,0x9073, 0x9070,0x906F,0x9067,0x906B,0x912F,0x912B,0x9129,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 86, Array index 0x3500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x912A,0x9132,0x9126,0x912E,0x9185,0x9186,0x918A, 0x9181,0x9182,0x9184,0x9180,0x92D0,0x92C3,0x92C4,0x92C0, 0x92D9,0x92B6,0x92CF,0x92F1,0x92DF,0x92D8,0x92E9,0x92D7, 0x92DD,0x92CC,0x92EF,0x92C2,0x92E8,0x92CA,0x92C8,0x92CE, 0x92E6,0x92CD,0x92D5,0x92C9,0x92E0,0x92DE,0x92E7,0x92D1, 0x92D3,0x92B5,0x92E1,0x9325,0x92C6,0x92B4,0x957C,0x95AC, 0x95AB,0x95AE,0x95B0,0x96A4,0x96A2,0x96D3,0x9705,0x9708, 0x9702,0x975A,0x978A,0x978E,0x9788,0x97D0,0x97CF,0x981E, 0x981D,0x9826,0x9829,0x9828,0x9820,0x981B,0x9827,0x98B2, 0x9908,0x98FA,0x9911,0x9914,0x9916,0x9917,0x9915,0x99DC, 0x99CD,0x99CF,0x99D3,0x99D4,0x99CE,0x99C9,0x99D6,0x99D8, 0x99CB,0x99D7,0x99CC,0x9AB3,0x9AEC,0x9AEB,0x9AF3,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 87, Array index 0x3600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9AF2,0x9AF1,0x9B46,0x9B43,0x9B67,0x9B74,0x9B71, 0x9B66,0x9B76,0x9B75,0x9B70,0x9B68,0x9B64,0x9B6C,0x9CFC, 0x9CFA,0x9CFD,0x9CFF,0x9CF7,0x9D07,0x9D00,0x9CF9,0x9CFB, 0x9D08,0x9D05,0x9D04,0x9E83,0x9ED3,0x9F0F,0x9F10,0x511C, 0x5113,0x5117,0x511A,0x5111,0x51DE,0x5334,0x53E1,0x5670, 0x5660,0x566E,0x5673,0x5666,0x5663,0x566D,0x5672,0x565E, 0x5677,0x571C,0x571B,0x58C8,0x58BD,0x58C9,0x58BF,0x58BA, 0x58C2,0x58BC,0x58C6,0x5B17,0x5B19,0x5B1B,0x5B21,0x5B14, 0x5B13,0x5B10,0x5B16,0x5B28,0x5B1A,0x5B20,0x5B1E,0x5BEF, 0x5DAC,0x5DB1,0x5DA9,0x5DA7,0x5DB5,0x5DB0,0x5DAE,0x5DAA, 0x5DA8,0x5DB2,0x5DAD,0x5DAF,0x5DB4,0x5E67,0x5E68,0x5E66, 0x5E6F,0x5EE9,0x5EE7,0x5EE6,0x5EE8,0x5EE5,0x5F4B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 88, Array index 0x3700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5FBC,0x5FBB,0x619D,0x61A8,0x6196,0x61C5,0x61B4, 0x61C6,0x61C1,0x61CC,0x61BA,0x61BF,0x61B8,0x618C,0x64D7, 0x64D6,0x64D0,0x64CF,0x64C9,0x64BD,0x6489,0x64C3,0x64DB, 0x64F3,0x64D9,0x6533,0x657F,0x657C,0x65A2,0x66C8,0x66BE, 0x66C0,0x66CA,0x66CB,0x66CF,0x66BD,0x66BB,0x66BA,0x66CC, 0x6723,0x6A34,0x6A66,0x6A49,0x6A67,0x6A32,0x6A68,0x6A3E, 0x6A5D,0x6A6D,0x6A76,0x6A5B,0x6A51,0x6A28,0x6A5A,0x6A3B, 0x6A3F,0x6A41,0x6A6A,0x6A64,0x6A50,0x6A4F,0x6A54,0x6A6F, 0x6A69,0x6A60,0x6A3C,0x6A5E,0x6A56,0x6A55,0x6A4D,0x6A4E, 0x6A46,0x6B55,0x6B54,0x6B56,0x6BA7,0x6BAA,0x6BAB,0x6BC8, 0x6BC7,0x6C04,0x6C03,0x6C06,0x6FAD,0x6FCB,0x6FA3,0x6FC7, 0x6FBC,0x6FCE,0x6FC8,0x6F5E,0x6FC4,0x6FBD,0x6F9E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 89, Array index 0x3800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6FCA,0x6FA8,0x7004,0x6FA5,0x6FAE,0x6FBA,0x6FAC, 0x6FAA,0x6FCF,0x6FBF,0x6FB8,0x6FA2,0x6FC9,0x6FAB,0x6FCD, 0x6FAF,0x6FB2,0x6FB0,0x71C5,0x71C2,0x71BF,0x71B8,0x71D6, 0x71C0,0x71C1,0x71CB,0x71D4,0x71CA,0x71C7,0x71CF,0x71BD, 0x71D8,0x71BC,0x71C6,0x71DA,0x71DB,0x729D,0x729E,0x7369, 0x7366,0x7367,0x736C,0x7365,0x736B,0x736A,0x747F,0x749A, 0x74A0,0x7494,0x7492,0x7495,0x74A1,0x750B,0x7580,0x762F, 0x762D,0x7631,0x763D,0x7633,0x763C,0x7635,0x7632,0x7630, 0x76BB,0x76E6,0x779A,0x779D,0x77A1,0x779C,0x779B,0x77A2, 0x77A3,0x7795,0x7799,0x7797,0x78DD,0x78E9,0x78E5,0x78EA, 0x78DE,0x78E3,0x78DB,0x78E1,0x78E2,0x78ED,0x78DF,0x78E0, 0x79A4,0x7A44,0x7A48,0x7A47,0x7AB6,0x7AB8,0x7AB5,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 90, Array index 0x3900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7AB1,0x7AB7,0x7BDE,0x7BE3,0x7BE7,0x7BDD,0x7BD5, 0x7BE5,0x7BDA,0x7BE8,0x7BF9,0x7BD4,0x7BEA,0x7BE2,0x7BDC, 0x7BEB,0x7BD8,0x7BDF,0x7CD2,0x7CD4,0x7CD7,0x7CD0,0x7CD1, 0x7E12,0x7E21,0x7E17,0x7E0C,0x7E1F,0x7E20,0x7E13,0x7E0E, 0x7E1C,0x7E15,0x7E1A,0x7E22,0x7E0B,0x7E0F,0x7E16,0x7E0D, 0x7E14,0x7E25,0x7E24,0x7F43,0x7F7B,0x7F7C,0x7F7A,0x7FB1, 0x7FEF,0x802A,0x8029,0x806C,0x81B1,0x81A6,0x81AE,0x81B9, 0x81B5,0x81AB,0x81B0,0x81AC,0x81B4,0x81B2,0x81B7,0x81A7, 0x81F2,0x8255,0x8256,0x8257,0x8556,0x8545,0x856B,0x854D, 0x8553,0x8561,0x8558,0x8540,0x8546,0x8564,0x8541,0x8562, 0x8544,0x8551,0x8547,0x8563,0x853E,0x855B,0x8571,0x854E, 0x856E,0x8575,0x8555,0x8567,0x8560,0x858C,0x8566,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 91, Array index 0x3A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x855D,0x8554,0x8565,0x856C,0x8663,0x8665,0x8664, 0x87A4,0x879B,0x878F,0x8797,0x8793,0x8792,0x8788,0x8781, 0x8796,0x8798,0x8779,0x8787,0x87A3,0x8785,0x8790,0x8791, 0x879D,0x8784,0x8794,0x879C,0x879A,0x8789,0x891E,0x8926, 0x8930,0x892D,0x892E,0x8927,0x8931,0x8922,0x8929,0x8923, 0x892F,0x892C,0x891F,0x89F1,0x8AE0,0x8AE2,0x8AF2,0x8AF4, 0x8AF5,0x8ADD,0x8B14,0x8AE4,0x8ADF,0x8AF0,0x8AC8,0x8ADE, 0x8AE1,0x8AE8,0x8AFF,0x8AEF,0x8AFB,0x8C91,0x8C92,0x8C90, 0x8CF5,0x8CEE,0x8CF1,0x8CF0,0x8CF3,0x8D6C,0x8D6E,0x8DA5, 0x8DA7,0x8E33,0x8E3E,0x8E38,0x8E40,0x8E45,0x8E36,0x8E3C, 0x8E3D,0x8E41,0x8E30,0x8E3F,0x8EBD,0x8F36,0x8F2E,0x8F35, 0x8F32,0x8F39,0x8F37,0x8F34,0x9076,0x9079,0x907B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 92, Array index 0x3B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9086,0x90FA,0x9133,0x9135,0x9136,0x9193,0x9190, 0x9191,0x918D,0x918F,0x9327,0x931E,0x9308,0x931F,0x9306, 0x930F,0x937A,0x9338,0x933C,0x931B,0x9323,0x9312,0x9301, 0x9346,0x932D,0x930E,0x930D,0x92CB,0x931D,0x92FA,0x9313, 0x92F9,0x92F7,0x9334,0x9302,0x9324,0x92FF,0x9329,0x9339, 0x9335,0x932A,0x9314,0x930C,0x930B,0x92FE,0x9309,0x9300, 0x92FB,0x9316,0x95BC,0x95CD,0x95BE,0x95B9,0x95BA,0x95B6, 0x95BF,0x95B5,0x95BD,0x96A9,0x96D4,0x970B,0x9712,0x9710, 0x9799,0x9797,0x9794,0x97F0,0x97F8,0x9835,0x982F,0x9832, 0x9924,0x991F,0x9927,0x9929,0x999E,0x99EE,0x99EC,0x99E5, 0x99E4,0x99F0,0x99E3,0x99EA,0x99E9,0x99E7,0x9AB9,0x9ABF, 0x9AB4,0x9ABB,0x9AF6,0x9AFA,0x9AF9,0x9AF7,0x9B33,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 93, Array index 0x3C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9B80,0x9B85,0x9B87,0x9B7C,0x9B7E,0x9B7B,0x9B82, 0x9B93,0x9B92,0x9B90,0x9B7A,0x9B95,0x9B7D,0x9B88,0x9D25, 0x9D17,0x9D20,0x9D1E,0x9D14,0x9D29,0x9D1D,0x9D18,0x9D22, 0x9D10,0x9D19,0x9D1F,0x9E88,0x9E86,0x9E87,0x9EAE,0x9EAD, 0x9ED5,0x9ED6,0x9EFA,0x9F12,0x9F3D,0x5126,0x5125,0x5122, 0x5124,0x5120,0x5129,0x52F4,0x5693,0x568C,0x568D,0x5686, 0x5684,0x5683,0x567E,0x5682,0x567F,0x5681,0x58D6,0x58D4, 0x58CF,0x58D2,0x5B2D,0x5B25,0x5B32,0x5B23,0x5B2C,0x5B27, 0x5B26,0x5B2F,0x5B2E,0x5B7B,0x5BF1,0x5BF2,0x5DB7,0x5E6C, 0x5E6A,0x5FBE,0x61C3,0x61B5,0x61BC,0x61E7,0x61E0,0x61E5, 0x61E4,0x61E8,0x61DE,0x64EF,0x64E9,0x64E3,0x64EB,0x64E4, 0x64E8,0x6581,0x6580,0x65B6,0x65DA,0x66D2,0x6A8D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 94, Array index 0x3D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6A96,0x6A81,0x6AA5,0x6A89,0x6A9F,0x6A9B,0x6AA1, 0x6A9E,0x6A87,0x6A93,0x6A8E,0x6A95,0x6A83,0x6AA8,0x6AA4, 0x6A91,0x6A7F,0x6AA6,0x6A9A,0x6A85,0x6A8C,0x6A92,0x6B5B, 0x6BAD,0x6C09,0x6FCC,0x6FA9,0x6FF4,0x6FD4,0x6FE3,0x6FDC, 0x6FED,0x6FE7,0x6FE6,0x6FDE,0x6FF2,0x6FDD,0x6FE2,0x6FE8, 0x71E1,0x71F1,0x71E8,0x71F2,0x71E4,0x71F0,0x71E2,0x7373, 0x736E,0x736F,0x7497,0x74B2,0x74AB,0x7490,0x74AA,0x74AD, 0x74B1,0x74A5,0x74AF,0x7510,0x7511,0x7512,0x750F,0x7584, 0x7643,0x7648,0x7649,0x7647,0x76A4,0x76E9,0x77B5,0x77AB, 0x77B2,0x77B7,0x77B6,0x77B4,0x77B1,0x77A8,0x77F0,0x78F3, 0x78FD,0x7902,0x78FB,0x78FC,0x78FF,0x78F2,0x7905,0x78F9, 0x78FE,0x7904,0x79AB,0x79A8,0x7A5C,0x7A5B,0x7A56,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 95, Array index 0x3E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7A58,0x7A54,0x7A5A,0x7ABE,0x7AC0,0x7AC1,0x7C05, 0x7C0F,0x7BF2,0x7C00,0x7BFF,0x7BFB,0x7C0E,0x7BF4,0x7C0B, 0x7BF3,0x7C02,0x7C09,0x7C03,0x7C01,0x7BF8,0x7BFD,0x7C06, 0x7BF0,0x7BF1,0x7C10,0x7C0A,0x7CE8,0x7E2D,0x7E3C,0x7E42, 0x7E33,0x9848,0x7E38,0x7E2A,0x7E49,0x7E40,0x7E47,0x7E29, 0x7E4C,0x7E30,0x7E3B,0x7E36,0x7E44,0x7E3A,0x7F45,0x7F7F, 0x7F7E,0x7F7D,0x7FF4,0x7FF2,0x802C,0x81BB,0x81C4,0x81CC, 0x81CA,0x81C5,0x81C7,0x81BC,0x81E9,0x825B,0x825A,0x825C, 0x8583,0x8580,0x858F,0x85A7,0x8595,0x85A0,0x858B,0x85A3, 0x857B,0x85A4,0x859A,0x859E,0x8577,0x857C,0x8589,0x85A1, 0x857A,0x8578,0x8557,0x858E,0x8596,0x8586,0x858D,0x8599, 0x859D,0x8581,0x85A2,0x8582,0x8588,0x8585,0x8579,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 96, Array index 0x3F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8576,0x8598,0x8590,0x859F,0x8668,0x87BE,0x87AA, 0x87AD,0x87C5,0x87B0,0x87AC,0x87B9,0x87B5,0x87BC,0x87AE, 0x87C9,0x87C3,0x87C2,0x87CC,0x87B7,0x87AF,0x87C4,0x87CA, 0x87B4,0x87B6,0x87BF,0x87B8,0x87BD,0x87DE,0x87B2,0x8935, 0x8933,0x893C,0x893E,0x8941,0x8952,0x8937,0x8942,0x89AD, 0x89AF,0x89AE,0x89F2,0x89F3,0x8B1E,0x8B18,0x8B16,0x8B11, 0x8B05,0x8B0B,0x8B22,0x8B0F,0x8B12,0x8B15,0x8B07,0x8B0D, 0x8B08,0x8B06,0x8B1C,0x8B13,0x8B1A,0x8C4F,0x8C70,0x8C72, 0x8C71,0x8C6F,0x8C95,0x8C94,0x8CF9,0x8D6F,0x8E4E,0x8E4D, 0x8E53,0x8E50,0x8E4C,0x8E47,0x8F43,0x8F40,0x9085,0x907E, 0x9138,0x919A,0x91A2,0x919B,0x9199,0x919F,0x91A1,0x919D, 0x91A0,0x93A1,0x9383,0x93AF,0x9364,0x9356,0x9347,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 97, Array index 0x4000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x937C,0x9358,0x935C,0x9376,0x9349,0x9350,0x9351, 0x9360,0x936D,0x938F,0x934C,0x936A,0x9379,0x9357,0x9355, 0x9352,0x934F,0x9371,0x9377,0x937B,0x9361,0x935E,0x9363, 0x9367,0x934E,0x9359,0x95C7,0x95C0,0x95C9,0x95C3,0x95C5, 0x95B7,0x96AE,0x96B0,0x96AC,0x9720,0x971F,0x9718,0x971D, 0x9719,0x979A,0x97A1,0x979C,0x979E,0x979D,0x97D5,0x97D4, 0x97F1,0x9841,0x9844,0x984A,0x9849,0x9845,0x9843,0x9925, 0x992B,0x992C,0x992A,0x9933,0x9932,0x992F,0x992D,0x9931, 0x9930,0x9998,0x99A3,0x99A1,0x9A02,0x99FA,0x99F4,0x99F7, 0x99F9,0x99F8,0x99F6,0x99FB,0x99FD,0x99FE,0x99FC,0x9A03, 0x9ABE,0x9AFE,0x9AFD,0x9B01,0x9AFC,0x9B48,0x9B9A,0x9BA8, 0x9B9E,0x9B9B,0x9BA6,0x9BA1,0x9BA5,0x9BA4,0x9B86,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 98, Array index 0x4100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9BA2,0x9BA0,0x9BAF,0x9D33,0x9D41,0x9D67,0x9D36, 0x9D2E,0x9D2F,0x9D31,0x9D38,0x9D30,0x9D45,0x9D42,0x9D43, 0x9D3E,0x9D37,0x9D40,0x9D3D,0x7FF5,0x9D2D,0x9E8A,0x9E89, 0x9E8D,0x9EB0,0x9EC8,0x9EDA,0x9EFB,0x9EFF,0x9F24,0x9F23, 0x9F22,0x9F54,0x9FA0,0x5131,0x512D,0x512E,0x5698,0x569C, 0x5697,0x569A,0x569D,0x5699,0x5970,0x5B3C,0x5C69,0x5C6A, 0x5DC0,0x5E6D,0x5E6E,0x61D8,0x61DF,0x61ED,0x61EE,0x61F1, 0x61EA,0x61F0,0x61EB,0x61D6,0x61E9,0x64FF,0x6504,0x64FD, 0x64F8,0x6501,0x6503,0x64FC,0x6594,0x65DB,0x66DA,0x66DB, 0x66D8,0x6AC5,0x6AB9,0x6ABD,0x6AE1,0x6AC6,0x6ABA,0x6AB6, 0x6AB7,0x6AC7,0x6AB4,0x6AAD,0x6B5E,0x6BC9,0x6C0B,0x7007, 0x700C,0x700D,0x7001,0x7005,0x7014,0x700E,0x6FFF,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 99, Array index 0x4200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7000,0x6FFB,0x7026,0x6FFC,0x6FF7,0x700A,0x7201, 0x71FF,0x71F9,0x7203,0x71FD,0x7376,0x74B8,0x74C0,0x74B5, 0x74C1,0x74BE,0x74B6,0x74BB,0x74C2,0x7514,0x7513,0x765C, 0x7664,0x7659,0x7650,0x7653,0x7657,0x765A,0x76A6,0x76BD, 0x76EC,0x77C2,0x77BA,0x790C,0x7913,0x7914,0x7909,0x7910, 0x7912,0x7911,0x79AD,0x79AC,0x7A5F,0x7C1C,0x7C29,0x7C19, 0x7C20,0x7C1F,0x7C2D,0x7C1D,0x7C26,0x7C28,0x7C22,0x7C25, 0x7C30,0x7E5C,0x7E50,0x7E56,0x7E63,0x7E58,0x7E62,0x7E5F, 0x7E51,0x7E60,0x7E57,0x7E53,0x7FB5,0x7FB3,0x7FF7,0x7FF8, 0x8075,0x81D1,0x81D2,0x81D0,0x825F,0x825E,0x85B4,0x85C6, 0x85C0,0x85C3,0x85C2,0x85B3,0x85B5,0x85BD,0x85C7,0x85C4, 0x85BF,0x85CB,0x85CE,0x85C8,0x85C5,0x85B1,0x85B6,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 100, Array index 0x4300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x85D2,0x8624,0x85B8,0x85B7,0x85BE,0x8669,0x87E7, 0x87E6,0x87E2,0x87DB,0x87EB,0x87EA,0x87E5,0x87DF,0x87F3, 0x87E4,0x87D4,0x87DC,0x87D3,0x87ED,0x87D8,0x87E3,0x87D7, 0x87D9,0x8801,0x87F4,0x87E8,0x87DD,0x8953,0x894B,0x894F, 0x894C,0x8946,0x8950,0x8951,0x8949,0x8B2A,0x8B27,0x8B23, 0x8B33,0x8B30,0x8B35,0x8B47,0x8B2F,0x8B3C,0x8B3E,0x8B31, 0x8B25,0x8B37,0x8B26,0x8B36,0x8B2E,0x8B24,0x8B3B,0x8B3D, 0x8B3A,0x8C42,0x8C75,0x8C99,0x8C98,0x8C97,0x8CFE,0x8D04, 0x8D02,0x8D00,0x8E5C,0x8E62,0x8E60,0x8E57,0x8E56,0x8E5E, 0x8E65,0x8E67,0x8E5B,0x8E5A,0x8E61,0x8E5D,0x8E69,0x8E54, 0x8F46,0x8F47,0x8F48,0x8F4B,0x9128,0x913A,0x913B,0x913E, 0x91A8,0x91A5,0x91A7,0x91AF,0x91AA,0x93B5,0x938C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 101, Array index 0x4400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9392,0x93B7,0x939B,0x939D,0x9389,0x93A7,0x938E, 0x93AA,0x939E,0x93A6,0x9395,0x9388,0x9399,0x939F,0x9380, 0x938D,0x93B1,0x9391,0x93B2,0x93A4,0x93A8,0x93B4,0x93A3, 0x95D2,0x95D3,0x95D1,0x96B3,0x96D7,0x96DA,0x5DC2,0x96DF, 0x96D8,0x96DD,0x9723,0x9722,0x9725,0x97AC,0x97AE,0x97A8, 0x97AB,0x97A4,0x97AA,0x97A2,0x97A5,0x97D7,0x97D9,0x97D6, 0x97D8,0x97FA,0x9850,0x9851,0x9852,0x98B8,0x9941,0x993C, 0x993A,0x9A0F,0x9A0B,0x9A09,0x9A0D,0x9A04,0x9A11,0x9A0A, 0x9A05,0x9A07,0x9A06,0x9AC0,0x9ADC,0x9B08,0x9B04,0x9B05, 0x9B29,0x9B35,0x9B4A,0x9B4C,0x9B4B,0x9BC7,0x9BC6,0x9BC3, 0x9BBF,0x9BC1,0x9BB5,0x9BB8,0x9BD3,0x9BB6,0x9BC4,0x9BB9, 0x9BBD,0x9D5C,0x9D53,0x9D4F,0x9D4A,0x9D5B,0x9D4B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 102, Array index 0x4500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9D59,0x9D56,0x9D4C,0x9D57,0x9D52,0x9D54,0x9D5F, 0x9D58,0x9D5A,0x9E8E,0x9E8C,0x9EDF,0x9F01,0x9F00,0x9F16, 0x9F25,0x9F2B,0x9F2A,0x9F29,0x9F28,0x9F4C,0x9F55,0x5134, 0x5135,0x5296,0x52F7,0x53B4,0x56AB,0x56AD,0x56A6,0x56A7, 0x56AA,0x56AC,0x58DA,0x58DD,0x58DB,0x5912,0x5B3D,0x5B3E, 0x5B3F,0x5DC3,0x5E70,0x5FBF,0x61FB,0x6507,0x6510,0x650D, 0x6509,0x650C,0x650E,0x6584,0x65DE,0x65DD,0x66DE,0x6AE7, 0x6AE0,0x6ACC,0x6AD1,0x6AD9,0x6ACB,0x6ADF,0x6ADC,0x6AD0, 0x6AEB,0x6ACF,0x6ACD,0x6ADE,0x6B60,0x6BB0,0x6C0C,0x7019, 0x7027,0x7020,0x7016,0x702B,0x7021,0x7022,0x7023,0x7029, 0x7017,0x7024,0x701C,0x720C,0x720A,0x7207,0x7202,0x7205, 0x72A5,0x72A6,0x72A4,0x72A3,0x72A1,0x74CB,0x74C5,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 103, Array index 0x4600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x74B7,0x74C3,0x7516,0x7660,0x77C9,0x77CA,0x77C4, 0x77F1,0x791D,0x791B,0x7921,0x791C,0x7917,0x791E,0x79B0, 0x7A67,0x7A68,0x7C33,0x7C3C,0x7C39,0x7C2C,0x7C3B,0x7CEC, 0x7CEA,0x7E76,0x7E75,0x7E78,0x7E70,0x7E77,0x7E6F,0x7E7A, 0x7E72,0x7E74,0x7E68,0x7F4B,0x7F4A,0x7F83,0x7F86,0x7FB7, 0x7FFD,0x7FFE,0x8078,0x81D7,0x81D5,0x820B,0x8264,0x8261, 0x8263,0x85EB,0x85F1,0x85ED,0x85D9,0x85E1,0x85E8,0x85DA, 0x85D7,0x85EC,0x85F2,0x85F8,0x85D8,0x85DF,0x85E3,0x85DC, 0x85D1,0x85F0,0x85E6,0x85EF,0x85DE,0x85E2,0x8800,0x87FA, 0x8803,0x87F6,0x87F7,0x8809,0x880C,0x880B,0x8806,0x87FC, 0x8808,0x87FF,0x880A,0x8802,0x8962,0x895A,0x895B,0x8957, 0x8961,0x895C,0x8958,0x895D,0x8959,0x8988,0x89B7,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 104, Array index 0x4700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x89B6,0x89F6,0x8B50,0x8B48,0x8B4A,0x8B40,0x8B53, 0x8B56,0x8B54,0x8B4B,0x8B55,0x8B51,0x8B42,0x8B52,0x8B57, 0x8C43,0x8C77,0x8C76,0x8C9A,0x8D06,0x8D07,0x8D09,0x8DAC, 0x8DAA,0x8DAD,0x8DAB,0x8E6D,0x8E78,0x8E73,0x8E6A,0x8E6F, 0x8E7B,0x8EC2,0x8F52,0x8F51,0x8F4F,0x8F50,0x8F53,0x8FB4, 0x9140,0x913F,0x91B0,0x91AD,0x93DE,0x93C7,0x93CF,0x93C2, 0x93DA,0x93D0,0x93F9,0x93EC,0x93CC,0x93D9,0x93A9,0x93E6, 0x93CA,0x93D4,0x93EE,0x93E3,0x93D5,0x93C4,0x93CE,0x93C0, 0x93D2,0x93A5,0x93E7,0x957D,0x95DA,0x95DB,0x96E1,0x9729, 0x972B,0x972C,0x9728,0x9726,0x97B3,0x97B7,0x97B6,0x97DD, 0x97DE,0x97DF,0x985C,0x9859,0x985D,0x9857,0x98BF,0x98BD, 0x98BB,0x98BE,0x9948,0x9947,0x9943,0x99A6,0x99A7,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 105, Array index 0x4800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9A1A,0x9A15,0x9A25,0x9A1D,0x9A24,0x9A1B,0x9A22, 0x9A20,0x9A27,0x9A23,0x9A1E,0x9A1C,0x9A14,0x9AC2,0x9B0B, 0x9B0A,0x9B0E,0x9B0C,0x9B37,0x9BEA,0x9BEB,0x9BE0,0x9BDE, 0x9BE4,0x9BE6,0x9BE2,0x9BF0,0x9BD4,0x9BD7,0x9BEC,0x9BDC, 0x9BD9,0x9BE5,0x9BD5,0x9BE1,0x9BDA,0x9D77,0x9D81,0x9D8A, 0x9D84,0x9D88,0x9D71,0x9D80,0x9D78,0x9D86,0x9D8B,0x9D8C, 0x9D7D,0x9D6B,0x9D74,0x9D75,0x9D70,0x9D69,0x9D85,0x9D73, 0x9D7B,0x9D82,0x9D6F,0x9D79,0x9D7F,0x9D87,0x9D68,0x9E94, 0x9E91,0x9EC0,0x9EFC,0x9F2D,0x9F40,0x9F41,0x9F4D,0x9F56, 0x9F57,0x9F58,0x5337,0x56B2,0x56B5,0x56B3,0x58E3,0x5B45, 0x5DC6,0x5DC7,0x5EEE,0x5EEF,0x5FC0,0x5FC1,0x61F9,0x6517, 0x6516,0x6515,0x6513,0x65DF,0x66E8,0x66E3,0x66E4,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 106, Array index 0x4900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6AF3,0x6AF0,0x6AEA,0x6AE8,0x6AF9,0x6AF1,0x6AEE, 0x6AEF,0x703C,0x7035,0x702F,0x7037,0x7034,0x7031,0x7042, 0x7038,0x703F,0x703A,0x7039,0x702A,0x7040,0x703B,0x7033, 0x7041,0x7213,0x7214,0x72A8,0x737D,0x737C,0x74BA,0x76AB, 0x76AA,0x76BE,0x76ED,0x77CC,0x77CE,0x77CF,0x77CD,0x77F2, 0x7925,0x7923,0x7927,0x7928,0x7924,0x7929,0x79B2,0x7A6E, 0x7A6C,0x7A6D,0x7AF7,0x7C49,0x7C48,0x7C4A,0x7C47,0x7C45, 0x7CEE,0x7E7B,0x7E7E,0x7E81,0x7E80,0x7FBA,0x7FFF,0x8079, 0x81DB,0x81D9,0x8268,0x8269,0x8622,0x85FF,0x8601,0x85FE, 0x861B,0x8600,0x85F6,0x8604,0x8609,0x8605,0x860C,0x85FD, 0x8819,0x8810,0x8811,0x8817,0x8813,0x8816,0x8963,0x8966, 0x89B9,0x89F7,0x8B60,0x8B6A,0x8B5D,0x8B68,0x8B63,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 107, Array index 0x4A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8B65,0x8B67,0x8B6D,0x8DAE,0x8E86,0x8E88,0x8E84, 0x8F59,0x8F56,0x8F57,0x8F55,0x8F58,0x8F5A,0x908D,0x9143, 0x9141,0x91B7,0x91B5,0x91B2,0x91B3,0x940B,0x9413,0x93FB, 0x9420,0x940F,0x9414,0x93FE,0x9415,0x9410,0x9428,0x9419, 0x940D,0x93F5,0x9400,0x93F7,0x9407,0x940E,0x9416,0x9412, 0x93FA,0x9409,0x93F8,0x943C,0x940A,0x93FF,0x93FC,0x940C, 0x93F6,0x9411,0x9406,0x95DE,0x95E0,0x95DF,0x972E,0x972F, 0x97B9,0x97BB,0x97FD,0x97FE,0x9860,0x9862,0x9863,0x985F, 0x98C1,0x98C2,0x9950,0x994E,0x9959,0x994C,0x994B,0x9953, 0x9A32,0x9A34,0x9A31,0x9A2C,0x9A2A,0x9A36,0x9A29,0x9A2E, 0x9A38,0x9A2D,0x9AC7,0x9ACA,0x9AC6,0x9B10,0x9B12,0x9B11, 0x9C0B,0x9C08,0x9BF7,0x9C05,0x9C12,0x9BF8,0x9C40,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 108, Array index 0x4B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9C07,0x9C0E,0x9C06,0x9C17,0x9C14,0x9C09,0x9D9F, 0x9D99,0x9DA4,0x9D9D,0x9D92,0x9D98,0x9D90,0x9D9B,0x9DA0, 0x9D94,0x9D9C,0x9DAA,0x9D97,0x9DA1,0x9D9A,0x9DA2,0x9DA8, 0x9D9E,0x9DA3,0x9DBF,0x9DA9,0x9D96,0x9DA6,0x9DA7,0x9E99, 0x9E9B,0x9E9A,0x9EE5,0x9EE4,0x9EE7,0x9EE6,0x9F30,0x9F2E, 0x9F5B,0x9F60,0x9F5E,0x9F5D,0x9F59,0x9F91,0x513A,0x5139, 0x5298,0x5297,0x56C3,0x56BD,0x56BE,0x5B48,0x5B47,0x5DCB, 0x5DCF,0x5EF1,0x61FD,0x651B,0x6B02,0x6AFC,0x6B03,0x6AF8, 0x6B00,0x7043,0x7044,0x704A,0x7048,0x7049,0x7045,0x7046, 0x721D,0x721A,0x7219,0x737E,0x7517,0x766A,0x77D0,0x792D, 0x7931,0x792F,0x7C54,0x7C53,0x7CF2,0x7E8A,0x7E87,0x7E88, 0x7E8B,0x7E86,0x7E8D,0x7F4D,0x7FBB,0x8030,0x81DD,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 109, Array index 0x4C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8618,0x862A,0x8626,0x861F,0x8623,0x861C,0x8619, 0x8627,0x862E,0x8621,0x8620,0x8629,0x861E,0x8625,0x8829, 0x881D,0x881B,0x8820,0x8824,0x881C,0x882B,0x884A,0x896D, 0x8969,0x896E,0x896B,0x89FA,0x8B79,0x8B78,0x8B45,0x8B7A, 0x8B7B,0x8D10,0x8D14,0x8DAF,0x8E8E,0x8E8C,0x8F5E,0x8F5B, 0x8F5D,0x9146,0x9144,0x9145,0x91B9,0x943F,0x943B,0x9436, 0x9429,0x943D,0x9430,0x9439,0x942A,0x9437,0x942C,0x9440, 0x9431,0x95E5,0x95E4,0x95E3,0x9735,0x973A,0x97BF,0x97E1, 0x9864,0x98C9,0x98C6,0x98C0,0x9958,0x9956,0x9A39,0x9A3D, 0x9A46,0x9A44,0x9A42,0x9A41,0x9A3A,0x9A3F,0x9ACD,0x9B15, 0x9B17,0x9B18,0x9B16,0x9B3A,0x9B52,0x9C2B,0x9C1D,0x9C1C, 0x9C2C,0x9C23,0x9C28,0x9C29,0x9C24,0x9C21,0x9DB7,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 110, Array index 0x4D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9DB6,0x9DBC,0x9DC1,0x9DC7,0x9DCA,0x9DCF,0x9DBE, 0x9DC5,0x9DC3,0x9DBB,0x9DB5,0x9DCE,0x9DB9,0x9DBA,0x9DAC, 0x9DC8,0x9DB1,0x9DAD,0x9DCC,0x9DB3,0x9DCD,0x9DB2,0x9E7A, 0x9E9C,0x9EEB,0x9EEE,0x9EED,0x9F1B,0x9F18,0x9F1A,0x9F31, 0x9F4E,0x9F65,0x9F64,0x9F92,0x4EB9,0x56C6,0x56C5,0x56CB, 0x5971,0x5B4B,0x5B4C,0x5DD5,0x5DD1,0x5EF2,0x6521,0x6520, 0x6526,0x6522,0x6B0B,0x6B08,0x6B09,0x6C0D,0x7055,0x7056, 0x7057,0x7052,0x721E,0x721F,0x72A9,0x737F,0x74D8,0x74D5, 0x74D9,0x74D7,0x766D,0x76AD,0x7935,0x79B4,0x7A70,0x7A71, 0x7C57,0x7C5C,0x7C59,0x7C5B,0x7C5A,0x7CF4,0x7CF1,0x7E91, 0x7F4F,0x7F87,0x81DE,0x826B,0x8634,0x8635,0x8633,0x862C, 0x8632,0x8636,0x882C,0x8828,0x8826,0x882A,0x8825,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 111, Array index 0x4E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8971,0x89BF,0x89BE,0x89FB,0x8B7E,0x8B84,0x8B82, 0x8B86,0x8B85,0x8B7F,0x8D15,0x8E95,0x8E94,0x8E9A,0x8E92, 0x8E90,0x8E96,0x8E97,0x8F60,0x8F62,0x9147,0x944C,0x9450, 0x944A,0x944B,0x944F,0x9447,0x9445,0x9448,0x9449,0x9446, 0x973F,0x97E3,0x986A,0x9869,0x98CB,0x9954,0x995B,0x9A4E, 0x9A53,0x9A54,0x9A4C,0x9A4F,0x9A48,0x9A4A,0x9A49,0x9A52, 0x9A50,0x9AD0,0x9B19,0x9B2B,0x9B3B,0x9B56,0x9B55,0x9C46, 0x9C48,0x9C3F,0x9C44,0x9C39,0x9C33,0x9C41,0x9C3C,0x9C37, 0x9C34,0x9C32,0x9C3D,0x9C36,0x9DDB,0x9DD2,0x9DDE,0x9DDA, 0x9DCB,0x9DD0,0x9DDC,0x9DD1,0x9DDF,0x9DE9,0x9DD9,0x9DD8, 0x9DD6,0x9DF5,0x9DD5,0x9DDD,0x9EB6,0x9EF0,0x9F35,0x9F33, 0x9F32,0x9F42,0x9F6B,0x9F95,0x9FA2,0x513D,0x5299,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 112, Array index 0x4F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x58E8,0x58E7,0x5972,0x5B4D,0x5DD8,0x882F,0x5F4F, 0x6201,0x6203,0x6204,0x6529,0x6525,0x6596,0x66EB,0x6B11, 0x6B12,0x6B0F,0x6BCA,0x705B,0x705A,0x7222,0x7382,0x7381, 0x7383,0x7670,0x77D4,0x7C67,0x7C66,0x7E95,0x826C,0x863A, 0x8640,0x8639,0x863C,0x8631,0x863B,0x863E,0x8830,0x8832, 0x882E,0x8833,0x8976,0x8974,0x8973,0x89FE,0x8B8C,0x8B8E, 0x8B8B,0x8B88,0x8C45,0x8D19,0x8E98,0x8F64,0x8F63,0x91BC, 0x9462,0x9455,0x945D,0x9457,0x945E,0x97C4,0x97C5,0x9800, 0x9A56,0x9A59,0x9B1E,0x9B1F,0x9B20,0x9C52,0x9C58,0x9C50, 0x9C4A,0x9C4D,0x9C4B,0x9C55,0x9C59,0x9C4C,0x9C4E,0x9DFB, 0x9DF7,0x9DEF,0x9DE3,0x9DEB,0x9DF8,0x9DE4,0x9DF6,0x9DE1, 0x9DEE,0x9DE6,0x9DF2,0x9DF0,0x9DE2,0x9DEC,0x9DF4,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 113, Array index 0x5000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9DF3,0x9DE8,0x9DED,0x9EC2,0x9ED0,0x9EF2,0x9EF3, 0x9F06,0x9F1C,0x9F38,0x9F37,0x9F36,0x9F43,0x9F4F,0x9F71, 0x9F70,0x9F6E,0x9F6F,0x56D3,0x56CD,0x5B4E,0x5C6D,0x652D, 0x66ED,0x66EE,0x6B13,0x705F,0x7061,0x705D,0x7060,0x7223, 0x74DB,0x74E5,0x77D5,0x7938,0x79B7,0x79B6,0x7C6A,0x7E97, 0x7F89,0x826D,0x8643,0x8838,0x8837,0x8835,0x884B,0x8B94, 0x8B95,0x8E9E,0x8E9F,0x8EA0,0x8E9D,0x91BE,0x91BD,0x91C2, 0x946B,0x9468,0x9469,0x96E5,0x9746,0x9743,0x9747,0x97C7, 0x97E5,0x9A5E,0x9AD5,0x9B59,0x9C63,0x9C67,0x9C66,0x9C62, 0x9C5E,0x9C60,0x9E02,0x9DFE,0x9E07,0x9E03,0x9E06,0x9E05, 0x9E00,0x9E01,0x9E09,0x9DFF,0x9DFD,0x9E04,0x9EA0,0x9F1E, 0x9F46,0x9F74,0x9F75,0x9F76,0x56D4,0x652E,0x65B8,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 114, Array index 0x5100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6B18,0x6B19,0x6B17,0x6B1A,0x7062,0x7226,0x72AA, 0x77D8,0x77D9,0x7939,0x7C69,0x7C6B,0x7CF6,0x7E9A,0x7E98, 0x7E9B,0x7E99,0x81E0,0x81E1,0x8646,0x8647,0x8648,0x8979, 0x897A,0x897C,0x897B,0x89FF,0x8B98,0x8B99,0x8EA5,0x8EA4, 0x8EA3,0x946E,0x946D,0x946F,0x9471,0x9473,0x9749,0x9872, 0x995F,0x9C68,0x9C6E,0x9C6D,0x9E0B,0x9E0D,0x9E10,0x9E0F, 0x9E12,0x9E11,0x9EA1,0x9EF5,0x9F09,0x9F47,0x9F78,0x9F7B, 0x9F7A,0x9F79,0x571E,0x7066,0x7C6F,0x883C,0x8DB2,0x8EA6, 0x91C3,0x9474,0x9478,0x9476,0x9475,0x9A60,0x9B2E,0x9C74, 0x9C73,0x9C71,0x9C75,0x9E14,0x9E13,0x9EF6,0x9F0A,0x9FA4, 0x7068,0x7065,0x7CF7,0x866A,0x883E,0x883D,0x883F,0x8B9E, 0x8C9C,0x8EA9,0x8EC9,0x974B,0x9873,0x9874,0x98CC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 115, Array index 0x5200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9961,0x99AB,0x9A64,0x9A66,0x9A67,0x9B24,0x9E15, 0x9E17,0x9F48,0x6207,0x6B1E,0x7227,0x864C,0x8EA8,0x9482, 0x9480,0x9481,0x9A69,0x9A68,0x9E19,0x864B,0x8B9F,0x9483, 0x9C79,0x9EB7,0x7675,0x9A6B,0x9C7A,0x9E1D,0x7069,0x706A, 0x7229,0x9EA4,0x9F7E,0x9F49,0x9F98,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, }; #endif /* ICONV_TO_UCS_CCS_CNS11643_PLANE2 && !defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * 16-bit cns11643_plane2 -> UCS size-optimized table (15798 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_CNS11643_PLANE2) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t to_ucs_size_cns11643_plane2[] = { 0x0052, /* Ranges number */ 0x0000, /* Unranged codes number */ 0x1EDB, /* First unranged code index */ /* Ranges list: first code, last Code, array index. */ /* Array index: 0x0003 */ 0x2121, 0x217E, 0x00F9, /* Array index: 0x0006 */ 0x2221, 0x227E, 0x0157, /* Array index: 0x0009 */ 0x2321, 0x237E, 0x01B5, /* Array index: 0x000C */ 0x2421, 0x247E, 0x0213, /* Array index: 0x000F */ 0x2521, 0x257E, 0x0271, /* Array index: 0x0012 */ 0x2621, 0x267E, 0x02CF, /* Array index: 0x0015 */ 0x2721, 0x277E, 0x032D, /* Array index: 0x0018 */ 0x2821, 0x287E, 0x038B, /* Array index: 0x001B */ 0x2921, 0x297E, 0x03E9, /* Array index: 0x001E */ 0x2A21, 0x2A7E, 0x0447, /* Array index: 0x0021 */ 0x2B21, 0x2B7E, 0x04A5, /* Array index: 0x0024 */ 0x2C21, 0x2C7E, 0x0503, /* Array index: 0x0027 */ 0x2D21, 0x2D7E, 0x0561, /* Array index: 0x002A */ 0x2E21, 0x2E7E, 0x05BF, /* Array index: 0x002D */ 0x2F21, 0x2F7E, 0x061D, /* Array index: 0x0030 */ 0x3021, 0x307E, 0x067B, /* Array index: 0x0033 */ 0x3121, 0x317E, 0x06D9, /* Array index: 0x0036 */ 0x3221, 0x327E, 0x0737, /* Array index: 0x0039 */ 0x3321, 0x337E, 0x0795, /* Array index: 0x003C */ 0x3421, 0x347E, 0x07F3, /* Array index: 0x003F */ 0x3521, 0x357E, 0x0851, /* Array index: 0x0042 */ 0x3621, 0x367E, 0x08AF, /* Array index: 0x0045 */ 0x3721, 0x377E, 0x090D, /* Array index: 0x0048 */ 0x3821, 0x387E, 0x096B, /* Array index: 0x004B */ 0x3921, 0x397E, 0x09C9, /* Array index: 0x004E */ 0x3A21, 0x3A7E, 0x0A27, /* Array index: 0x0051 */ 0x3B21, 0x3B7E, 0x0A85, /* Array index: 0x0054 */ 0x3C21, 0x3C7E, 0x0AE3, /* Array index: 0x0057 */ 0x3D21, 0x3D7E, 0x0B41, /* Array index: 0x005A */ 0x3E21, 0x3E7E, 0x0B9F, /* Array index: 0x005D */ 0x3F21, 0x3F7E, 0x0BFD, /* Array index: 0x0060 */ 0x4021, 0x407E, 0x0C5B, /* Array index: 0x0063 */ 0x4121, 0x417E, 0x0CB9, /* Array index: 0x0066 */ 0x4221, 0x427E, 0x0D17, /* Array index: 0x0069 */ 0x4321, 0x437E, 0x0D75, /* Array index: 0x006C */ 0x4421, 0x447E, 0x0DD3, /* Array index: 0x006F */ 0x4521, 0x457E, 0x0E31, /* Array index: 0x0072 */ 0x4621, 0x467E, 0x0E8F, /* Array index: 0x0075 */ 0x4721, 0x477E, 0x0EED, /* Array index: 0x0078 */ 0x4821, 0x487E, 0x0F4B, /* Array index: 0x007B */ 0x4921, 0x497E, 0x0FA9, /* Array index: 0x007E */ 0x4A21, 0x4A7E, 0x1007, /* Array index: 0x0081 */ 0x4B21, 0x4B7E, 0x1065, /* Array index: 0x0084 */ 0x4C21, 0x4C7E, 0x10C3, /* Array index: 0x0087 */ 0x4D21, 0x4D7E, 0x1121, /* Array index: 0x008A */ 0x4E21, 0x4E7E, 0x117F, /* Array index: 0x008D */ 0x4F21, 0x4F7E, 0x11DD, /* Array index: 0x0090 */ 0x5021, 0x507E, 0x123B, /* Array index: 0x0093 */ 0x5121, 0x517E, 0x1299, /* Array index: 0x0096 */ 0x5221, 0x527E, 0x12F7, /* Array index: 0x0099 */ 0x5321, 0x537E, 0x1355, /* Array index: 0x009C */ 0x5421, 0x547E, 0x13B3, /* Array index: 0x009F */ 0x5521, 0x557E, 0x1411, /* Array index: 0x00A2 */ 0x5621, 0x567E, 0x146F, /* Array index: 0x00A5 */ 0x5721, 0x577E, 0x14CD, /* Array index: 0x00A8 */ 0x5821, 0x587E, 0x152B, /* Array index: 0x00AB */ 0x5921, 0x597E, 0x1589, /* Array index: 0x00AE */ 0x5A21, 0x5A7E, 0x15E7, /* Array index: 0x00B1 */ 0x5B21, 0x5B7E, 0x1645, /* Array index: 0x00B4 */ 0x5C21, 0x5C7E, 0x16A3, /* Array index: 0x00B7 */ 0x5D21, 0x5D7E, 0x1701, /* Array index: 0x00BA */ 0x5E21, 0x5E7E, 0x175F, /* Array index: 0x00BD */ 0x5F21, 0x5F7E, 0x17BD, /* Array index: 0x00C0 */ 0x6021, 0x607E, 0x181B, /* Array index: 0x00C3 */ 0x6121, 0x617E, 0x1879, /* Array index: 0x00C6 */ 0x6221, 0x627E, 0x18D7, /* Array index: 0x00C9 */ 0x6321, 0x637E, 0x1935, /* Array index: 0x00CC */ 0x6421, 0x647E, 0x1993, /* Array index: 0x00CF */ 0x6521, 0x657E, 0x19F1, /* Array index: 0x00D2 */ 0x6621, 0x667E, 0x1A4F, /* Array index: 0x00D5 */ 0x6721, 0x677E, 0x1AAD, /* Array index: 0x00D8 */ 0x6821, 0x687E, 0x1B0B, /* Array index: 0x00DB */ 0x6921, 0x697E, 0x1B69, /* Array index: 0x00DE */ 0x6A21, 0x6A7E, 0x1BC7, /* Array index: 0x00E1 */ 0x6B21, 0x6B7E, 0x1C25, /* Array index: 0x00E4 */ 0x6C21, 0x6C7E, 0x1C83, /* Array index: 0x00E7 */ 0x6D21, 0x6D7E, 0x1CE1, /* Array index: 0x00EA */ 0x6E21, 0x6E7E, 0x1D3F, /* Array index: 0x00ED */ 0x6F21, 0x6F7E, 0x1D9D, /* Array index: 0x00F0 */ 0x7021, 0x707E, 0x1DFB, /* Array index: 0x00F3 */ 0x7121, 0x717E, 0x1E59, /* Array index: 0x00F6 */ 0x7221, 0x7244, 0x1EB7, /* Ranges content */ /* Range 0x2121 - 0x217E, array index: 0x00F9 */ 0x4E42,0x4E5C,0x51F5,0x531A,0x5382,0x4E07,0x4E0C,0x4E47, 0x4E8D,0x56D7,0x5C6E,0x5F73,0x4E0F,0x5187,0x4E0E,0x4E2E, 0x4E93,0x4EC2,0x4EC9,0x4EC8,0x5198,0x52FC,0x536C,0x53B9, 0x5720,0x5903,0x592C,0x5C10,0x5DFF,0x65E1,0x6BB3,0x6BCC, 0x6C14,0x723F,0x4E31,0x4E3C,0x4EE8,0x4EDC,0x4EE9,0x4EE1, 0x4EDD,0x4EDA,0x520C,0x5209,0x531C,0x534C,0x5722,0x5723, 0x5917,0x592F,0x5B81,0x5B84,0x5C12,0x5C3B,0x5C74,0x5C73, 0x5E04,0x5E80,0x5E82,0x5FC9,0x6209,0x6250,0x6C15,0x6C36, 0x6C43,0x6C3F,0x6C3B,0x72AE,0x72B0,0x738A,0x79B8,0x808A, 0x961E,0x4F0E,0x4F18,0x4F2C,0x4EF5,0x4F14,0x4EF1,0x4F00, 0x4EF7,0x4F08,0x4F1D,0x4F02,0x4F05,0x4F22,0x4F13,0x4F04, 0x4EF4,0x4F12,0x51B1,0x5213,0x5210,0x52A6, /* Range 0x2221 - 0x227E, array index: 0x0157 */ 0x5322,0x531F,0x534D,0x538A,0x5407,0x56E1,0x56DF,0x572E, 0x572A,0x5734,0x593C,0x5980,0x597C,0x5985,0x597B,0x597E, 0x5977,0x597F,0x5B56,0x5C15,0x5C25,0x5C7C,0x5C7A,0x5C7B, 0x5C7E,0x5DDF,0x5E75,0x5E84,0x5F02,0x5F1A,0x5F74,0x5FD5, 0x5FD4,0x5FCF,0x625C,0x625E,0x6264,0x6261,0x6266,0x6262, 0x6259,0x6260,0x625A,0x6265,0x6537,0x65EF,0x65EE,0x673E, 0x6739,0x6738,0x673B,0x673A,0x673F,0x673C,0x6733,0x6C18, 0x6C46,0x6C52,0x6C5C,0x6C4F,0x6C4A,0x6C54,0x6C4B,0x6C4C, 0x7071,0x725E,0x72B4,0x72B5,0x738E,0x752A,0x767F,0x7A75, 0x7F51,0x8278,0x827C,0x8280,0x827D,0x827F,0x864D,0x897E, 0x9099,0x9097,0x9098,0x909B,0x9094,0x9622,0x9624,0x9620, 0x9623,0x4F56,0x4F3B,0x4F62,0x4F49,0x4F53, /* Range 0x2321 - 0x237E, array index: 0x01B5 */ 0x4F64,0x4F3E,0x4F67,0x4F52,0x4F5F,0x4F41,0x4F58,0x4F2D, 0x4F33,0x4F3F,0x4F61,0x518F,0x51B9,0x521C,0x521E,0x5221, 0x52AD,0x52AE,0x5309,0x5363,0x5372,0x538E,0x538F,0x5430, 0x5437,0x542A,0x5454,0x5445,0x5419,0x541C,0x5425,0x5418, 0x543D,0x544F,0x5441,0x5428,0x5424,0x5447,0x56EE,0x56E7, 0x56E5,0x5741,0x5745,0x574C,0x5749,0x574B,0x5752,0x5906, 0x5940,0x59A6,0x5998,0x59A0,0x5997,0x598E,0x59A2,0x5990, 0x598F,0x59A7,0x59A1,0x5B8E,0x5B92,0x5C28,0x5C2A,0x5C8D, 0x5C8F,0x5C88,0x5C8B,0x5C89,0x5C92,0x5C8A,0x5C86,0x5C93, 0x5C95,0x5DE0,0x5E0A,0x5E0E,0x5E8B,0x5E89,0x5E8C,0x5E88, 0x5E8D,0x5F05,0x5F1D,0x5F78,0x5F76,0x5FD2,0x5FD1,0x5FD0, 0x5FED,0x5FE8,0x5FEE,0x5FF3,0x5FE1,0x5FE4, /* Range 0x2421 - 0x247E, array index: 0x0213 */ 0x5FE3,0x5FFA,0x5FEF,0x5FF7,0x5FFB,0x6000,0x5FF4,0x623A, 0x6283,0x628C,0x628E,0x628F,0x6294,0x6287,0x6271,0x627B, 0x627A,0x6270,0x6281,0x6288,0x6277,0x627D,0x6272,0x6274, 0x65F0,0x65F4,0x65F3,0x65F2,0x65F5,0x6745,0x6747,0x6759, 0x6755,0x674C,0x6748,0x675D,0x674D,0x675A,0x674B,0x6BD0, 0x6C19,0x6C1A,0x6C78,0x6C67,0x6C6B,0x6C84,0x6C8B,0x6C8F, 0x6C71,0x6C6F,0x6C69,0x6C9A,0x6C6D,0x6C87,0x6C95,0x6C9C, 0x6C66,0x6C73,0x6C65,0x6C7B,0x6C8E,0x7074,0x707A,0x7263, 0x72BF,0x72BD,0x72C3,0x72C6,0x72C1,0x72BA,0x72C5,0x7395, 0x7397,0x7393,0x7394,0x7392,0x753A,0x7539,0x7594,0x7595, 0x7681,0x793D,0x8034,0x8095,0x8099,0x8090,0x8092,0x809C, 0x8290,0x828F,0x8285,0x828E,0x8291,0x8293, /* Range 0x2521 - 0x257E, array index: 0x0271 */ 0x828A,0x8283,0x8284,0x8C78,0x8FC9,0x8FBF,0x909F,0x90A1, 0x90A5,0x909E,0x90A7,0x90A0,0x9630,0x9628,0x962F,0x962D, 0x4E33,0x4F98,0x4F7C,0x4F85,0x4F7D,0x4F80,0x4F87,0x4F76, 0x4F74,0x4F89,0x4F84,0x4F77,0x4F4C,0x4F97,0x4F6A,0x4F9A, 0x4F79,0x4F81,0x4F78,0x4F90,0x4F9C,0x4F94,0x4F9E,0x4F92, 0x4F82,0x4F95,0x4F6B,0x4F6E,0x519E,0x51BC,0x51BE,0x5235, 0x5232,0x5233,0x5246,0x5231,0x52BC,0x530A,0x530B,0x533C, 0x5392,0x5394,0x5487,0x547F,0x5481,0x5491,0x5482,0x5488, 0x546B,0x547A,0x547E,0x5465,0x546C,0x5474,0x5466,0x548D, 0x546F,0x5461,0x5460,0x5498,0x5463,0x5467,0x5464,0x56F7, 0x56F9,0x576F,0x5772,0x576D,0x576B,0x5771,0x5770,0x5776, 0x5780,0x5775,0x577B,0x5773,0x5774,0x5762, /* Range 0x2621 - 0x267E, array index: 0x02CF */ 0x5768,0x577D,0x590C,0x5945,0x59B5,0x59BA,0x59CF,0x59CE, 0x59B2,0x59CC,0x59C1,0x59B6,0x59BC,0x59C3,0x59D6,0x59B1, 0x59BD,0x59C0,0x59C8,0x59B4,0x59C7,0x5B62,0x5B65,0x5B93, 0x5B95,0x5C44,0x5C47,0x5CAE,0x5CA4,0x5CA0,0x5CB5,0x5CAF, 0x5CA8,0x5CAC,0x5C9F,0x5CA3,0x5CAD,0x5CA2,0x5CAA,0x5CA7, 0x5C9D,0x5CA5,0x5CB6,0x5CB0,0x5CA6,0x5E17,0x5E14,0x5E19, 0x5F28,0x5F22,0x5F23,0x5F24,0x5F54,0x5F82,0x5F7E,0x5F7D, 0x5FDE,0x5FE5,0x602D,0x6026,0x6019,0x6032,0x600B,0x6034, 0x600A,0x6017,0x6033,0x601A,0x601E,0x602C,0x6022,0x600D, 0x6010,0x602E,0x6013,0x6011,0x600C,0x6009,0x601C,0x6214, 0x623D,0x62AD,0x62B4,0x62D1,0x62BE,0x62AA,0x62B6,0x62CA, 0x62AE,0x62B3,0x62AF,0x62BB,0x62A9,0x62B0, /* Range 0x2721 - 0x277E, array index: 0x032D */ 0x62B8,0x653D,0x65A8,0x65BB,0x6609,0x65FC,0x6604,0x6612, 0x6608,0x65FB,0x6603,0x660B,0x660D,0x6605,0x65FD,0x6611, 0x6610,0x66F6,0x670A,0x6785,0x676C,0x678E,0x6792,0x6776, 0x677B,0x6798,0x6786,0x6784,0x6774,0x678D,0x678C,0x677A, 0x679F,0x6791,0x6799,0x6783,0x677D,0x6781,0x6778,0x6779, 0x6794,0x6B25,0x6B80,0x6B7E,0x6BDE,0x6C1D,0x6C93,0x6CEC, 0x6CEB,0x6CEE,0x6CD9,0x6CB6,0x6CD4,0x6CAD,0x6CE7,0x6CB7, 0x6CD0,0x6CC2,0x6CBA,0x6CC3,0x6CC6,0x6CED,0x6CF2,0x6CD2, 0x6CDD,0x6CB4,0x6C8A,0x6C9D,0x6C80,0x6CDE,0x6CC0,0x6D30, 0x6CCD,0x6CC7,0x6CB0,0x6CF9,0x6CCF,0x6CE9,0x6CD1,0x7094, 0x7098,0x7085,0x7093,0x7086,0x7084,0x7091,0x7096,0x7082, 0x709A,0x7083,0x726A,0x72D6,0x72CB,0x72D8, /* Range 0x2821 - 0x287E, array index: 0x038B */ 0x72C9,0x72DC,0x72D2,0x72D4,0x72DA,0x72CC,0x72D1,0x73A4, 0x73A1,0x73AD,0x73A6,0x73A2,0x73A0,0x73AC,0x739D,0x74DD, 0x74E8,0x753F,0x7540,0x753E,0x758C,0x7598,0x76AF,0x76F3, 0x76F1,0x76F0,0x76F5,0x77F8,0x77FC,0x77F9,0x77FB,0x77FA, 0x77F7,0x7942,0x793F,0x79C5,0x7A78,0x7A7B,0x7AFB,0x7C75, 0x7CFD,0x8035,0x808F,0x80AE,0x80A3,0x80B8,0x80B5,0x80AD, 0x8220,0x82A0,0x82C0,0x82AB,0x829A,0x8298,0x829B,0x82B5, 0x82A7,0x82AE,0x82BC,0x829E,0x82BA,0x82B4,0x82A8,0x82A1, 0x82A9,0x82C2,0x82A4,0x82C3,0x82B6,0x82A2,0x8670,0x866F, 0x866D,0x866E,0x8C56,0x8FD2,0x8FCB,0x8FD3,0x8FCD,0x8FD6, 0x8FD5,0x8FD7,0x90B2,0x90B4,0x90AF,0x90B3,0x90B0,0x9639, 0x963D,0x963C,0x963A,0x9643,0x4FCD,0x4FC5, /* Range 0x2921 - 0x297E, array index: 0x03E9 */ 0x4FD3,0x4FB2,0x4FC9,0x4FCB,0x4FC1,0x4FD4,0x4FDC,0x4FD9, 0x4FBB,0x4FB3,0x4FDB,0x4FC7,0x4FD6,0x4FBA,0x4FC0,0x4FB9, 0x4FEC,0x5244,0x5249,0x52C0,0x52C2,0x533D,0x537C,0x5397, 0x5396,0x5399,0x5398,0x54BA,0x54A1,0x54AD,0x54A5,0x54CF, 0x54C3,0x830D,0x54B7,0x54AE,0x54D6,0x54B6,0x54C5,0x54C6, 0x54A0,0x5470,0x54BC,0x54A2,0x54BE,0x5472,0x54DE,0x54B0, 0x57B5,0x579E,0x579F,0x57A4,0x578C,0x5797,0x579D,0x579B, 0x5794,0x5798,0x578F,0x5799,0x57A5,0x579A,0x5795,0x58F4, 0x590D,0x5953,0x59E1,0x59DE,0x59EE,0x5A00,0x59F1,0x59DD, 0x59FA,0x59FD,0x59FC,0x59F6,0x59E4,0x59F2,0x59F7,0x59DB, 0x59E9,0x59F3,0x59F5,0x59E0,0x59FE,0x59F4,0x59ED,0x5BA8, 0x5C4C,0x5CD0,0x5CD8,0x5CCC,0x5CD7,0x5CCB, /* Range 0x2A21 - 0x2A7E, array index: 0x0447 */ 0x5CDB,0x5CDE,0x5CDA,0x5CC9,0x5CC7,0x5CCA,0x5CD6,0x5CD3, 0x5CD4,0x5CCF,0x5CC8,0x5CC6,0x5CCE,0x5CDF,0x5CF8,0x5DF9, 0x5E21,0x5E22,0x5E23,0x5E20,0x5E24,0x5EB0,0x5EA4,0x5EA2, 0x5E9B,0x5EA3,0x5EA5,0x5F07,0x5F2E,0x5F56,0x5F86,0x6037, 0x6039,0x6054,0x6072,0x605E,0x6045,0x6053,0x6047,0x6049, 0x605B,0x604C,0x6040,0x6042,0x605F,0x6024,0x6044,0x6058, 0x6066,0x606E,0x6242,0x6243,0x62CF,0x630D,0x630B,0x62F5, 0x630E,0x6303,0x62EB,0x62F9,0x630F,0x630C,0x62F8,0x62F6, 0x6300,0x6313,0x6314,0x62FA,0x6315,0x62FB,0x62F0,0x6541, 0x6543,0x65AA,0x65BF,0x6636,0x6621,0x6632,0x6635,0x661C, 0x6626,0x6622,0x6633,0x662B,0x663A,0x661D,0x6634,0x6639, 0x662E,0x670F,0x6710,0x67C1,0x67F2,0x67C8, /* Range 0x2B21 - 0x2B7E, array index: 0x04A5 */ 0x67BA,0x67DC,0x67BB,0x67F8,0x67D8,0x67C0,0x67B7,0x67C5, 0x67EB,0x67E4,0x67DF,0x67B5,0x67CD,0x67B3,0x67F7,0x67F6, 0x67EE,0x67E3,0x67C2,0x67B9,0x67CE,0x67E7,0x67F0,0x67B2, 0x67FC,0x67C6,0x67ED,0x67CC,0x67AE,0x67E6,0x67DB,0x67FA, 0x67C9,0x67CA,0x67C3,0x67EA,0x67CB,0x6B28,0x6B82,0x6B84, 0x6BB6,0x6BD6,0x6BD8,0x6BE0,0x6C20,0x6C21,0x6D28,0x6D34, 0x6D2D,0x6D1F,0x6D3C,0x6D3F,0x6D12,0x6D0A,0x6CDA,0x6D33, 0x6D04,0x6D19,0x6D3A,0x6D1A,0x6D11,0x6D00,0x6D1D,0x6D42, 0x6D01,0x6D18,0x6D37,0x6D03,0x6D0F,0x6D40,0x6D07,0x6D20, 0x6D2C,0x6D08,0x6D22,0x6D09,0x6D10,0x70B7,0x709F,0x70BE, 0x70B1,0x70B0,0x70A1,0x70B4,0x70B5,0x70A9,0x7241,0x7249, 0x724A,0x726C,0x7270,0x7273,0x726E,0x72CA, /* Range 0x2C21 - 0x2C7E, array index: 0x0503 */ 0x72E4,0x72E8,0x72EB,0x72DF,0x72EA,0x72E6,0x72E3,0x7385, 0x73CC,0x73C2,0x73C8,0x73C5,0x73B9,0x73B6,0x73B5,0x73B4, 0x73EB,0x73BF,0x73C7,0x73BE,0x73C3,0x73C6,0x73B8,0x73CB, 0x74EC,0x74EE,0x752E,0x7547,0x7548,0x75A7,0x75AA,0x7679, 0x76C4,0x7708,0x7703,0x7704,0x7705,0x770A,0x76F7,0x76FB, 0x76FA,0x77E7,0x77E8,0x7806,0x7811,0x7812,0x7805,0x7810, 0x780F,0x780E,0x7809,0x7803,0x7813,0x794A,0x794C,0x794B, 0x7945,0x7944,0x79D5,0x79CD,0x79CF,0x79D6,0x79CE,0x7A80, 0x7A7E,0x7AD1,0x7B00,0x7B01,0x7C7A,0x7C78,0x7C79,0x7C7F, 0x7C80,0x7C81,0x7D03,0x7D08,0x7D01,0x7F58,0x7F91,0x7F8D, 0x7FBE,0x8007,0x800E,0x800F,0x8014,0x8037,0x80D8,0x80C7, 0x80E0,0x80D1,0x80C8,0x80C2,0x80D0,0x80C5, /* Range 0x2D21 - 0x2D7E, array index: 0x0561 */ 0x80E3,0x80D9,0x80DC,0x80CA,0x80D5,0x80C9,0x80CF,0x80D7, 0x80E6,0x80CD,0x81FF,0x8221,0x8294,0x82D9,0x82FE,0x82F9, 0x8307,0x82E8,0x8300,0x82D5,0x833A,0x82EB,0x82D6,0x82F4, 0x82EC,0x82E1,0x82F2,0x82F5,0x830C,0x82FB,0x82F6,0x82F0, 0x82EA,0x82E4,0x82E0,0x82FA,0x82F3,0x82ED,0x8677,0x8674, 0x867C,0x8673,0x8841,0x884E,0x8867,0x886A,0x8869,0x89D3, 0x8A04,0x8A07,0x8D72,0x8FE3,0x8FE1,0x8FEE,0x8FE0,0x90F1, 0x90BD,0x90BF,0x90D5,0x90C5,0x90BE,0x90C7,0x90CB,0x90C8, 0x91D4,0x91D3,0x9654,0x964F,0x9651,0x9653,0x964A,0x964E, 0x501E,0x5005,0x5007,0x5013,0x5022,0x5030,0x501B,0x4FF5, 0x4FF4,0x5033,0x5037,0x502C,0x4FF6,0x4FF7,0x5017,0x501C, 0x5020,0x5027,0x5035,0x502F,0x5031,0x500E, /* Range 0x2E21 - 0x2E7E, array index: 0x05BF */ 0x515A,0x5194,0x5193,0x51CA,0x51C4,0x51C5,0x51C8,0x51CE, 0x5261,0x525A,0x5252,0x525E,0x525F,0x5255,0x5262,0x52CD, 0x530E,0x539E,0x5526,0x54E2,0x5517,0x5512,0x54E7,0x54F3, 0x54E4,0x551A,0x54FF,0x5504,0x5508,0x54EB,0x5511,0x5505, 0x54F1,0x550A,0x54FB,0x54F7,0x54F8,0x54E0,0x550E,0x5503, 0x550B,0x5701,0x5702,0x57CC,0x5832,0x57D5,0x57D2,0x57BA, 0x57C6,0x57BD,0x57BC,0x57B8,0x57B6,0x57BF,0x57C7,0x57D0, 0x57B9,0x57C1,0x590E,0x594A,0x5A19,0x5A16,0x5A2D,0x5A2E, 0x5A15,0x5A0F,0x5A17,0x5A0A,0x5A1E,0x5A33,0x5B6C,0x5BA7, 0x5BAD,0x5BAC,0x5C03,0x5C56,0x5C54,0x5CEC,0x5CFF,0x5CEE, 0x5CF1,0x5CF7,0x5D00,0x5CF9,0x5E29,0x5E28,0x5EA8,0x5EAE, 0x5EAA,0x5EAC,0x5F33,0x5F30,0x5F67,0x605D, /* Range 0x2F21 - 0x2F7E, array index: 0x061D */ 0x605A,0x6067,0x6041,0x60A2,0x6088,0x6080,0x6092,0x6081, 0x609D,0x6083,0x6095,0x609B,0x6097,0x6087,0x609C,0x608E, 0x6219,0x6246,0x62F2,0x6310,0x6356,0x632C,0x6344,0x6345, 0x6336,0x6343,0x63E4,0x6339,0x634B,0x634A,0x633C,0x6329, 0x6341,0x6334,0x6358,0x6354,0x6359,0x632D,0x6347,0x6333, 0x635A,0x6351,0x6338,0x6357,0x6340,0x6348,0x654A,0x6546, 0x65C6,0x65C3,0x65C4,0x65C2,0x664A,0x665F,0x6647,0x6651, 0x6712,0x6713,0x681F,0x681A,0x6849,0x6832,0x6833,0x683B, 0x684B,0x684F,0x6816,0x6831,0x681C,0x6835,0x682B,0x682D, 0x682F,0x684E,0x6844,0x6834,0x681D,0x6812,0x6814,0x6826, 0x6828,0x682E,0x684D,0x683A,0x6825,0x6820,0x6B2C,0x6B2F, 0x6B2D,0x6B31,0x6B34,0x6B6D,0x8082,0x6B88, /* Range 0x3021 - 0x307E, array index: 0x067B */ 0x6BE6,0x6BE4,0x6BE8,0x6BE3,0x6BE2,0x6BE7,0x6C25,0x6D7A, 0x6D63,0x6D64,0x6D76,0x6D0D,0x6D61,0x6D92,0x6D58,0x6D62, 0x6D6D,0x6D6F,0x6D91,0x6D8D,0x6DEF,0x6D7F,0x6D86,0x6D5E, 0x6D67,0x6D60,0x6D97,0x6D70,0x6D7C,0x6D5F,0x6D82,0x6D98, 0x6D2F,0x6D68,0x6D8B,0x6D7E,0x6D80,0x6D84,0x6D16,0x6D83, 0x6D7B,0x6D7D,0x6D75,0x6D90,0x70DC,0x70D3,0x70D1,0x70DD, 0x70CB,0x7F39,0x70E2,0x70D7,0x70D2,0x70DE,0x70E0,0x70D4, 0x70CD,0x70C5,0x70C6,0x70C7,0x70DA,0x70CE,0x70E1,0x7242, 0x7278,0x7277,0x7276,0x7300,0x72FA,0x72F4,0x72FE,0x72F6, 0x72F3,0x72FB,0x7301,0x73D3,0x73D9,0x73E5,0x73D6,0x73BC, 0x73E7,0x73E3,0x73E9,0x73DC,0x73D2,0x73DB,0x73D4,0x73DD, 0x73DA,0x73D7,0x73D8,0x73E8,0x74DE,0x74DF, /* Range 0x3121 - 0x317E, array index: 0x06D9 */ 0x74F4,0x74F5,0x7521,0x755B,0x755F,0x75B0,0x75C1,0x75BB, 0x75C4,0x75C0,0x75BF,0x75B6,0x75BA,0x768A,0x76C9,0x771D, 0x771B,0x7710,0x7713,0x7712,0x7723,0x7711,0x7715,0x7719, 0x771A,0x7722,0x7727,0x7823,0x782C,0x7822,0x7835,0x782F, 0x7828,0x782E,0x782B,0x7821,0x7829,0x7833,0x782A,0x7831, 0x7954,0x795B,0x794F,0x795C,0x7953,0x7952,0x7951,0x79EB, 0x79EC,0x79E0,0x79EE,0x79ED,0x79EA,0x79DC,0x79DE,0x79DD, 0x7A86,0x7A89,0x7A85,0x7A8B,0x7A8C,0x7A8A,0x7A87,0x7AD8, 0x7B10,0x7B04,0x7B13,0x7B05,0x7B0F,0x7B08,0x7B0A,0x7B0E, 0x7B09,0x7B12,0x7C84,0x7C91,0x7C8A,0x7C8C,0x7C88,0x7C8D, 0x7C85,0x7D1E,0x7D1D,0x7D11,0x7D0E,0x7D18,0x7D16,0x7D13, 0x7D1F,0x7D12,0x7D0F,0x7D0C,0x7F5C,0x7F61, /* Range 0x3221 - 0x327E, array index: 0x0737 */ 0x7F5E,0x7F60,0x7F5D,0x7F5B,0x7F96,0x7F92,0x7FC3,0x7FC2, 0x7FC0,0x8016,0x803E,0x8039,0x80FA,0x80F2,0x80F9,0x80F5, 0x8101,0x80FB,0x8100,0x8201,0x822F,0x8225,0x8333,0x832D, 0x8344,0x8319,0x8351,0x8325,0x8356,0x833F,0x8341,0x8326, 0x831C,0x8322,0x8342,0x834E,0x831B,0x832A,0x8308,0x833C, 0x834D,0x8316,0x8324,0x8320,0x8337,0x832F,0x8329,0x8347, 0x8345,0x834C,0x8353,0x831E,0x832C,0x834B,0x8327,0x8348, 0x8653,0x8652,0x86A2,0x86A8,0x8696,0x868D,0x8691,0x869E, 0x8687,0x8697,0x8686,0x868B,0x869A,0x8685,0x86A5,0x8699, 0x86A1,0x86A7,0x8695,0x8698,0x868E,0x869D,0x8690,0x8694, 0x8843,0x8844,0x886D,0x8875,0x8876,0x8872,0x8880,0x8871, 0x887F,0x886F,0x8883,0x887E,0x8874,0x887C, /* Range 0x3321 - 0x337E, array index: 0x0795 */ 0x8A12,0x8C47,0x8C57,0x8C7B,0x8CA4,0x8CA3,0x8D76,0x8D78, 0x8DB5,0x8DB7,0x8DB6,0x8ED1,0x8ED3,0x8FFE,0x8FF5,0x9002, 0x8FFF,0x8FFB,0x9004,0x8FFC,0x8FF6,0x90D6,0x90E0,0x90D9, 0x90DA,0x90E3,0x90DF,0x90E5,0x90D8,0x90DB,0x90D7,0x90DC, 0x90E4,0x9150,0x914E,0x914F,0x91D5,0x91E2,0x91DA,0x965C, 0x965F,0x96BC,0x98E3,0x9ADF,0x9B2F,0x4E7F,0x5070,0x506A, 0x5061,0x505E,0x5060,0x5053,0x504B,0x505D,0x5072,0x5048, 0x504D,0x5041,0x505B,0x504A,0x5062,0x5015,0x5045,0x505F, 0x5069,0x506B,0x5063,0x5064,0x5046,0x5040,0x506E,0x5073, 0x5057,0x5051,0x51D0,0x526B,0x526D,0x526C,0x526E,0x52D6, 0x52D3,0x532D,0x539C,0x5575,0x5576,0x553C,0x554D,0x5550, 0x5534,0x552A,0x5551,0x5562,0x5536,0x5535, /* Range 0x3421 - 0x347E, array index: 0x07F3 */ 0x5530,0x5552,0x5545,0x550C,0x5532,0x5565,0x554E,0x5539, 0x5548,0x552D,0x553B,0x5540,0x554B,0x570A,0x5707,0x57FB, 0x5814,0x57E2,0x57F6,0x57DC,0x57F4,0x5800,0x57ED,0x57FD, 0x5808,0x57F8,0x580B,0x57F3,0x57CF,0x5807,0x57EE,0x57E3, 0x57F2,0x57E5,0x57EC,0x57E1,0x580E,0x57FC,0x5810,0x57E7, 0x5801,0x580C,0x57F1,0x57E9,0x57F0,0x580D,0x5804,0x595C, 0x5A60,0x5A58,0x5A55,0x5A67,0x5A5E,0x5A38,0x5A35,0x5A6D, 0x5A50,0x5A5F,0x5A65,0x5A6C,0x5A53,0x5A64,0x5A57,0x5A43, 0x5A5D,0x5A52,0x5A44,0x5A5B,0x5A48,0x5A8E,0x5A3E,0x5A4D, 0x5A39,0x5A4C,0x5A70,0x5A69,0x5A47,0x5A51,0x5A56,0x5A42, 0x5A5C,0x5B72,0x5B6E,0x5BC1,0x5BC0,0x5C59,0x5D1E,0x5D0B, 0x5D1D,0x5D1A,0x5D20,0x5D0C,0x5D28,0x5D0D, /* Range 0x3521 - 0x357E, array index: 0x0851 */ 0x5D26,0x5D25,0x5D0F,0x5D30,0x5D12,0x5D23,0x5D1F,0x5D2E, 0x5E3E,0x5E34,0x5EB1,0x5EB4,0x5EB9,0x5EB2,0x5EB3,0x5F36, 0x5F38,0x5F9B,0x5F96,0x5F9F,0x608A,0x6090,0x6086,0x60BE, 0x60B0,0x60BA,0x60D3,0x60D4,0x60CF,0x60E4,0x60D9,0x60DD, 0x60C8,0x60B1,0x60DB,0x60B7,0x60CA,0x60BF,0x60C3,0x60CD, 0x60C0,0x6332,0x6365,0x638A,0x6382,0x637D,0x63BD,0x639E, 0x63AD,0x639D,0x6397,0x63AB,0x638E,0x636F,0x6387,0x6390, 0x636E,0x63AF,0x6375,0x639C,0x636D,0x63AE,0x637C,0x63A4, 0x633B,0x639F,0x6378,0x6385,0x6381,0x6391,0x638D,0x6370, 0x6553,0x65CD,0x6665,0x6661,0x665B,0x6659,0x665C,0x6662, 0x6718,0x6879,0x6887,0x6890,0x689C,0x686D,0x686E,0x68AE, 0x68AB,0x6956,0x686F,0x68A3,0x68AC,0x68A9, /* Range 0x3621 - 0x367E, array index: 0x08AF */ 0x6875,0x6874,0x68B2,0x688F,0x6877,0x6892,0x687C,0x686B, 0x6872,0x68AA,0x6880,0x6871,0x687E,0x689B,0x6896,0x688B, 0x68A0,0x6889,0x68A4,0x6878,0x687B,0x6891,0x688C,0x688A, 0x687D,0x6B36,0x6B33,0x6B37,0x6B38,0x6B91,0x6B8F,0x6B8D, 0x6B8E,0x6B8C,0x6C2A,0x6DC0,0x6DAB,0x6DB4,0x6DB3,0x6E74, 0x6DAC,0x6DE9,0x6DE2,0x6DB7,0x6DF6,0x6DD4,0x6E00,0x6DC8, 0x6DE0,0x6DDF,0x6DD6,0x6DBE,0x6DE5,0x6DDC,0x6DDD,0x6DDB, 0x6DF4,0x6DCA,0x6DBD,0x6DED,0x6DF0,0x6DBA,0x6DD5,0x6DC2, 0x6DCF,0x6DC9,0x6DD0,0x6DF2,0x6DD3,0x6DFD,0x6DD7,0x6DCD, 0x6DE3,0x6DBB,0x70FA,0x710D,0x70F7,0x7117,0x70F4,0x710C, 0x70F0,0x7104,0x70F3,0x7110,0x70FC,0x70FF,0x7106,0x7113, 0x7100,0x70F8,0x70F6,0x710B,0x7102,0x710E, /* Range 0x3721 - 0x377E, array index: 0x090D */ 0x727E,0x727B,0x727C,0x727F,0x731D,0x7317,0x7307,0x7311, 0x7318,0x730A,0x7308,0x72FF,0x730F,0x731E,0x7388,0x73F6, 0x73F8,0x73F5,0x7404,0x7401,0x73FD,0x7407,0x7400,0x73FA, 0x73FC,0x73FF,0x740C,0x740B,0x73F4,0x7408,0x7564,0x7563, 0x75CE,0x75D2,0x75CF,0x75CB,0x75CC,0x75D1,0x75D0,0x768F, 0x7689,0x76D3,0x7739,0x772F,0x772D,0x7731,0x7732,0x7734, 0x7733,0x773D,0x7725,0x773B,0x7735,0x7848,0x7852,0x7849, 0x784D,0x784A,0x784C,0x7826,0x7845,0x7850,0x7964,0x7967, 0x7969,0x796A,0x7963,0x796B,0x7961,0x79BB,0x79FA,0x79F8, 0x79F6,0x79F7,0x7A8F,0x7A94,0x7A90,0x7B35,0x7B3B,0x7B34, 0x7B25,0x7B30,0x7B22,0x7B24,0x7B33,0x7B18,0x7B2A,0x7B1D, 0x7B31,0x7B2B,0x7B2D,0x7B2F,0x7B32,0x7B38, /* Range 0x3821 - 0x387E, array index: 0x096B */ 0x7B1A,0x7B23,0x7C94,0x7C98,0x7C96,0x7CA3,0x7D35,0x7D3D, 0x7D38,0x7D36,0x7D3A,0x7D45,0x7D2C,0x7D29,0x7D41,0x7D47, 0x7D3E,0x7D3F,0x7D4A,0x7D3B,0x7D28,0x7F63,0x7F95,0x7F9C, 0x7F9D,0x7F9B,0x7FCA,0x7FCB,0x7FCD,0x7FD0,0x7FD1,0x7FC7, 0x7FCF,0x7FC9,0x801F,0x801E,0x801B,0x8047,0x8043,0x8048, 0x8118,0x8125,0x8119,0x811B,0x812D,0x811F,0x812C,0x811E, 0x8121,0x8115,0x8127,0x811D,0x8122,0x8211,0x8238,0x8233, 0x823A,0x8234,0x8232,0x8274,0x8390,0x83A3,0x83A8,0x838D, 0x837A,0x8373,0x83A4,0x8374,0x838F,0x8381,0x8395,0x8399, 0x8375,0x8394,0x83A9,0x837D,0x8383,0x838C,0x839D,0x839B, 0x83AA,0x838B,0x837E,0x83A5,0x83AF,0x8388,0x8397,0x83B0, 0x837F,0x83A6,0x8387,0x83AE,0x8376,0x8659, /* Range 0x3921 - 0x397E, array index: 0x09C9 */ 0x8656,0x86BF,0x86B7,0x86C2,0x86C1,0x86C5,0x86BA,0x86B0, 0x86C8,0x86B9,0x86B3,0x86B8,0x86CC,0x86B4,0x86BB,0x86BC, 0x86C3,0x86BD,0x86BE,0x8852,0x8889,0x8895,0x88A8,0x88A2, 0x88AA,0x889A,0x8891,0x88A1,0x889F,0x8898,0x88A7,0x8899, 0x889B,0x8897,0x88A4,0x88AC,0x888C,0x8893,0x888E,0x8982, 0x89D6,0x89D9,0x89D5,0x8A30,0x8A27,0x8A2C,0x8A1E,0x8C39, 0x8C3B,0x8C5C,0x8C5D,0x8C7D,0x8CA5,0x8D7D,0x8D7B,0x8D79, 0x8DBC,0x8DC2,0x8DB9,0x8DBF,0x8DC1,0x8ED8,0x8EDE,0x8EDD, 0x8EDC,0x8ED7,0x8EE0,0x8EE1,0x9024,0x900B,0x9011,0x901C, 0x900C,0x9021,0x90EF,0x90EA,0x90F0,0x90F4,0x90F2,0x90F3, 0x90D4,0x90EB,0x90EC,0x90E9,0x9156,0x9158,0x915A,0x9153, 0x9155,0x91EC,0x91F4,0x91F1,0x91F3,0x91F8, /* Range 0x3A21 - 0x3A7E, array index: 0x0A27 */ 0x91E4,0x91F9,0x91EA,0x91EB,0x91F7,0x91E8,0x91EE,0x957A, 0x9586,0x9588,0x967C,0x966D,0x966B,0x9671,0x966F,0x96BF, 0x976A,0x9804,0x98E5,0x9997,0x509B,0x5095,0x5094,0x509E, 0x508B,0x50A3,0x5083,0x508C,0x508E,0x509D,0x5068,0x509C, 0x5092,0x5082,0x5087,0x515F,0x51D4,0x5312,0x5311,0x53A4, 0x53A7,0x5591,0x55A8,0x55A5,0x55AD,0x5577,0x5645,0x55A2, 0x5593,0x5588,0x558F,0x55B5,0x5581,0x55A3,0x5592,0x55A4, 0x557D,0x558C,0x55A6,0x557F,0x5595,0x55A1,0x558E,0x570C, 0x5829,0x5837,0x5819,0x581E,0x5827,0x5823,0x5828,0x57F5, 0x5848,0x5825,0x581C,0x581B,0x5833,0x583F,0x5836,0x582E, 0x5839,0x5838,0x582D,0x582C,0x583B,0x5961,0x5AAF,0x5A94, 0x5A9F,0x5A7A,0x5AA2,0x5A9E,0x5A78,0x5AA6, /* Range 0x3B21 - 0x3B7E, array index: 0x0A85 */ 0x5A7C,0x5AA5,0x5AAC,0x5A95,0x5AAE,0x5A37,0x5A84,0x5A8A, 0x5A97,0x5A83,0x5A8B,0x5AA9,0x5A7B,0x5A7D,0x5A8C,0x5A9C, 0x5A8F,0x5A93,0x5A9D,0x5BEA,0x5BCD,0x5BCB,0x5BD4,0x5BD1, 0x5BCA,0x5BCE,0x5C0C,0x5C30,0x5D37,0x5D43,0x5D6B,0x5D41, 0x5D4B,0x5D3F,0x5D35,0x5D51,0x5D4E,0x5D55,0x5D33,0x5D3A, 0x5D52,0x5D3D,0x5D31,0x5D59,0x5D42,0x5D39,0x5D49,0x5D38, 0x5D3C,0x5D32,0x5D36,0x5D40,0x5D45,0x5E44,0x5E41,0x5F58, 0x5FA6,0x5FA5,0x5FAB,0x60C9,0x60B9,0x60CC,0x60E2,0x60CE, 0x60C4,0x6114,0x60F2,0x610A,0x6116,0x6105,0x60F5,0x6113, 0x60F8,0x60FC,0x60FE,0x60C1,0x6103,0x6118,0x611D,0x6110, 0x60FF,0x6104,0x610B,0x624A,0x6394,0x63B1,0x63B0,0x63CE, 0x63E5,0x63E8,0x63EF,0x63C3,0x649D,0x63F3, /* Range 0x3C21 - 0x3C7E, array index: 0x0AE3 */ 0x63CA,0x63E0,0x63F6,0x63D5,0x63F2,0x63F5,0x6461,0x63DF, 0x63BE,0x63DD,0x63DC,0x63C4,0x63D8,0x63D3,0x63C2,0x63C7, 0x63CC,0x63CB,0x63C8,0x63F0,0x63D7,0x63D9,0x6532,0x6567, 0x656A,0x6564,0x655C,0x6568,0x6565,0x658C,0x659D,0x659E, 0x65AE,0x65D0,0x65D2,0x667C,0x666C,0x667B,0x6680,0x6671, 0x6679,0x666A,0x6672,0x6701,0x690C,0x68D3,0x6904,0x68DC, 0x692A,0x68EC,0x68EA,0x68F1,0x690F,0x68D6,0x68F7,0x68EB, 0x68E4,0x68F6,0x6913,0x6910,0x68F3,0x68E1,0x6907,0x68CC, 0x6908,0x6970,0x68B4,0x6911,0x68EF,0x68C6,0x6914,0x68F8, 0x68D0,0x68FD,0x68FC,0x68E8,0x690B,0x690A,0x6917,0x68CE, 0x68C8,0x68DD,0x68DE,0x68E6,0x68F4,0x68D1,0x6906,0x68D4, 0x68E9,0x6915,0x6925,0x68C7,0x6B39,0x6B3B, /* Range 0x3D21 - 0x3D7E, array index: 0x0B41 */ 0x6B3F,0x6B3C,0x6B94,0x6B97,0x6B99,0x6B95,0x6BBD,0x6BF0, 0x6BF2,0x6BF3,0x6C30,0x6DFC,0x6E46,0x6E47,0x6E1F,0x6E49, 0x6E88,0x6E3C,0x6E3D,0x6E45,0x6E62,0x6E2B,0x6E3F,0x6E41, 0x6E5D,0x6E73,0x6E1C,0x6E33,0x6E4B,0x6E40,0x6E51,0x6E3B, 0x6E03,0x6E2E,0x6E5E,0x6E68,0x6E5C,0x6E61,0x6E31,0x6E28, 0x6E60,0x6E71,0x6E6B,0x6E39,0x6E22,0x6E30,0x6E53,0x6E65, 0x6E27,0x6E78,0x6E64,0x6E77,0x6E55,0x6E79,0x6E52,0x6E66, 0x6E35,0x6E36,0x6E5A,0x7120,0x711E,0x712F,0x70FB,0x712E, 0x7131,0x7123,0x7125,0x7122,0x7132,0x711F,0x7128,0x713A, 0x711B,0x724B,0x725A,0x7288,0x7289,0x7286,0x7285,0x728B, 0x7312,0x730B,0x7330,0x7322,0x7331,0x7333,0x7327,0x7332, 0x732D,0x7326,0x7323,0x7335,0x730C,0x742E, /* Range 0x3E21 - 0x3E7E, array index: 0x0B9F */ 0x742C,0x7430,0x742B,0x7416,0x741A,0x7421,0x742D,0x7431, 0x7424,0x7423,0x741D,0x7429,0x7420,0x7432,0x74FB,0x752F, 0x756F,0x756C,0x75E7,0x75DA,0x75E1,0x75E6,0x75DD,0x75DF, 0x75E4,0x75D7,0x7695,0x7692,0x76DA,0x7746,0x7747,0x7744, 0x774D,0x7745,0x774A,0x774E,0x774B,0x774C,0x77DE,0x77EC, 0x7860,0x7864,0x7865,0x785C,0x786D,0x7871,0x786A,0x786E, 0x7870,0x7869,0x7868,0x785E,0x7862,0x7974,0x7973,0x7972, 0x7970,0x7A02,0x7A0A,0x7A03,0x7A0C,0x7A04,0x7A99,0x7AE6, 0x7AE4,0x7B4A,0x7B47,0x7B44,0x7B48,0x7B4C,0x7B4E,0x7B40, 0x7B58,0x7B45,0x7CA2,0x7C9E,0x7CA8,0x7CA1,0x7D58,0x7D6F, 0x7D63,0x7D53,0x7D56,0x7D67,0x7D6A,0x7D4F,0x7D6D,0x7D5C, 0x7D6B,0x7D52,0x7D54,0x7D69,0x7D51,0x7D5F, /* Range 0x3F21 - 0x3F7E, array index: 0x0BFD */ 0x7D4E,0x7F3E,0x7F3F,0x7F65,0x7F66,0x7FA2,0x7FA0,0x7FA1, 0x7FD7,0x8051,0x804F,0x8050,0x80FE,0x80D4,0x8143,0x814A, 0x8152,0x814F,0x8147,0x813D,0x814D,0x813A,0x81E6,0x81EE, 0x81F7,0x81F8,0x81F9,0x8204,0x823C,0x823D,0x823F,0x8275, 0x833B,0x83CF,0x83F9,0x8423,0x83C0,0x83E8,0x8412,0x83E7, 0x83E4,0x83FC,0x83F6,0x8410,0x83C6,0x83C8,0x83EB,0x83E3, 0x83BF,0x8401,0x83DD,0x83E5,0x83D8,0x83FF,0x83E1,0x83CB, 0x83CE,0x83D6,0x83F5,0x83C9,0x8409,0x840F,0x83DE,0x8411, 0x8406,0x83C2,0x83F3,0x83D5,0x83FA,0x83C7,0x83D1,0x83EA, 0x8413,0x839A,0x83C3,0x83EC,0x83EE,0x83C4,0x83FB,0x83D7, 0x83E2,0x841B,0x83DB,0x83FE,0x86D8,0x86E2,0x86E6,0x86D3, 0x86E3,0x86DA,0x86EA,0x86DD,0x86EB,0x86DC, /* Range 0x4021 - 0x407E, array index: 0x0C5B */ 0x86EC,0x86E9,0x86D7,0x86E8,0x86D1,0x8848,0x8856,0x8855, 0x88BA,0x88D7,0x88B9,0x88B8,0x88C0,0x88BE,0x88B6,0x88BC, 0x88B7,0x88BD,0x88B2,0x8901,0x88C9,0x8995,0x8998,0x8997, 0x89DD,0x89DA,0x89DB,0x8A4E,0x8A4D,0x8A39,0x8A59,0x8A40, 0x8A57,0x8A58,0x8A44,0x8A45,0x8A52,0x8A48,0x8A51,0x8A4A, 0x8A4C,0x8A4F,0x8C5F,0x8C81,0x8C80,0x8CBA,0x8CBE,0x8CB0, 0x8CB9,0x8CB5,0x8D84,0x8D80,0x8D89,0x8DD8,0x8DD3,0x8DCD, 0x8DC7,0x8DD6,0x8DDC,0x8DCF,0x8DD5,0x8DD9,0x8DC8,0x8DD7, 0x8DC5,0x8EEF,0x8EF7,0x8EFA,0x8EF9,0x8EE6,0x8EEE,0x8EE5, 0x8EF5,0x8EE7,0x8EE8,0x8EF6,0x8EEB,0x8EF1,0x8EEC,0x8EF4, 0x8EE9,0x902D,0x9034,0x902F,0x9106,0x912C,0x9104,0x90FF, 0x90FC,0x9108,0x90F9,0x90FB,0x9101,0x9100, /* Range 0x4121 - 0x417E, array index: 0x0CB9 */ 0x9107,0x9105,0x9103,0x9161,0x9164,0x915F,0x9162,0x9160, 0x9201,0x920A,0x9225,0x9203,0x921A,0x9226,0x920F,0x920C, 0x9200,0x9212,0x91FF,0x91FD,0x9206,0x9204,0x9227,0x9202, 0x921C,0x9224,0x9219,0x9217,0x9205,0x9216,0x957B,0x958D, 0x958C,0x9590,0x9687,0x967E,0x9688,0x9689,0x9683,0x9680, 0x96C2,0x96C8,0x96C3,0x96F1,0x96F0,0x976C,0x9770,0x976E, 0x9807,0x98A9,0x98EB,0x9CE6,0x9EF9,0x4E83,0x4E84,0x4EB6, 0x50BD,0x50BF,0x50C6,0x50AE,0x50C4,0x50CA,0x50B4,0x50C8, 0x50C2,0x50B0,0x50C1,0x50BA,0x50B1,0x50CB,0x50C9,0x50B6, 0x50B8,0x51D7,0x527A,0x5278,0x527B,0x527C,0x55C3,0x55DB, 0x55CC,0x55D0,0x55CB,0x55CA,0x55DD,0x55C0,0x55D4,0x55C4, 0x55E9,0x55BF,0x55D2,0x558D,0x55CF,0x55D5, /* Range 0x4221 - 0x427E, array index: 0x0D17 */ 0x55E2,0x55D6,0x55C8,0x55F2,0x55CD,0x55D9,0x55C2,0x5714, 0x5853,0x5868,0x5864,0x584F,0x584D,0x5849,0x586F,0x5855, 0x584E,0x585D,0x5859,0x5865,0x585B,0x583D,0x5863,0x5871, 0x58FC,0x5AC7,0x5AC4,0x5ACB,0x5ABA,0x5AB8,0x5AB1,0x5AB5, 0x5AB0,0x5ABF,0x5AC8,0x5ABB,0x5AC6,0x5AB7,0x5AC0,0x5ACA, 0x5AB4,0x5AB6,0x5ACD,0x5AB9,0x5A90,0x5BD6,0x5BD8,0x5BD9, 0x5C1F,0x5C33,0x5D71,0x5D63,0x5D4A,0x5D65,0x5D72,0x5D6C, 0x5D5E,0x5D68,0x5D67,0x5D62,0x5DF0,0x5E4F,0x5E4E,0x5E4A, 0x5E4D,0x5E4B,0x5EC5,0x5ECC,0x5EC6,0x5ECB,0x5EC7,0x5F40, 0x5FAF,0x5FAD,0x60F7,0x6149,0x614A,0x612B,0x6145,0x6136, 0x6132,0x612E,0x6146,0x612F,0x614F,0x6129,0x6140,0x6220, 0x9168,0x6223,0x6225,0x6224,0x63C5,0x63F1, /* Range 0x4321 - 0x437E, array index: 0x0D75 */ 0x63EB,0x6410,0x6412,0x6409,0x6420,0x6424,0x6433,0x6443, 0x641F,0x6415,0x6418,0x6439,0x6437,0x6422,0x6423,0x640C, 0x6426,0x6430,0x6428,0x6441,0x6435,0x642F,0x640A,0x641A, 0x6440,0x6425,0x6427,0x640B,0x63E7,0x641B,0x642E,0x6421, 0x640E,0x656F,0x6592,0x65D3,0x6686,0x668C,0x6695,0x6690, 0x668B,0x668A,0x6699,0x6694,0x6678,0x6720,0x6966,0x695F, 0x6938,0x694E,0x6962,0x6971,0x693F,0x6945,0x696A,0x6939, 0x6942,0x6957,0x6959,0x697A,0x6948,0x6949,0x6935,0x696C, 0x6933,0x693D,0x6965,0x68F0,0x6978,0x6934,0x6969,0x6940, 0x696F,0x6944,0x6976,0x6958,0x6941,0x6974,0x694C,0x693B, 0x694B,0x6937,0x695C,0x694F,0x6951,0x6932,0x6952,0x692F, 0x697B,0x693C,0x6B46,0x6B45,0x6B43,0x6B42, /* Range 0x4421 - 0x447E, array index: 0x0DD3 */ 0x6B48,0x6B41,0x6B9B,0x6BFB,0x6BFC,0x6BF9,0x6BF7,0x6BF8, 0x6E9B,0x6ED6,0x6EC8,0x6E8F,0x6EC0,0x6E9F,0x6E93,0x6E94, 0x6EA0,0x6EB1,0x6EB9,0x6EC6,0x6ED2,0x6EBD,0x6EC1,0x6E9E, 0x6EC9,0x6EB7,0x6EB0,0x6ECD,0x6EA6,0x6ECF,0x6EB2,0x6EBE, 0x6EC3,0x6EDC,0x6ED8,0x6E99,0x6E92,0x6E8E,0x6E8D,0x6EA4, 0x6EA1,0x6EBF,0x6EB3,0x6ED0,0x6ECA,0x6E97,0x6EAE,0x6EA3, 0x7147,0x7154,0x7152,0x7163,0x7160,0x7141,0x715D,0x7162, 0x7172,0x7178,0x716A,0x7161,0x7142,0x7158,0x7143,0x714B, 0x7170,0x715F,0x7150,0x7153,0x7144,0x714D,0x715A,0x724F, 0x728D,0x728C,0x7291,0x7290,0x728E,0x733C,0x7342,0x733B, 0x733A,0x7340,0x734A,0x7349,0x7444,0x744A,0x744B,0x7452, 0x7451,0x7457,0x7440,0x744F,0x7450,0x744E, /* Range 0x4521 - 0x457E, array index: 0x0E31 */ 0x7442,0x7446,0x744D,0x7454,0x74E1,0x74FF,0x74FE,0x74FD, 0x751D,0x7579,0x7577,0x6983,0x75EF,0x760F,0x7603,0x75F7, 0x75FE,0x75FC,0x75F9,0x75F8,0x7610,0x75FB,0x75F6,0x75ED, 0x75F5,0x75FD,0x7699,0x76B5,0x76DD,0x7755,0x775F,0x7760, 0x7752,0x7756,0x775A,0x7769,0x7767,0x7754,0x7759,0x776D, 0x77E0,0x7887,0x789A,0x7894,0x788F,0x7884,0x7895,0x7885, 0x7886,0x78A1,0x7883,0x7879,0x7899,0x7880,0x7896,0x787B, 0x797C,0x7982,0x797D,0x7979,0x7A11,0x7A18,0x7A19,0x7A12, 0x7A17,0x7A15,0x7A22,0x7A13,0x7A1B,0x7A10,0x7AA3,0x7AA2, 0x7A9E,0x7AEB,0x7B66,0x7B64,0x7B6D,0x7B74,0x7B69,0x7B72, 0x7B65,0x7B73,0x7B71,0x7B70,0x7B61,0x7B78,0x7B76,0x7B63, 0x7CB2,0x7CB4,0x7CAF,0x7D88,0x7D86,0x7D80, /* Range 0x4621 - 0x467E, array index: 0x0E8F */ 0x7D8D,0x7D7F,0x7D85,0x7D7A,0x7D8E,0x7D7B,0x7D83,0x7D7C, 0x7D8C,0x7D94,0x7D84,0x7D7D,0x7D92,0x7F6D,0x7F6B,0x7F67, 0x7F68,0x7F6C,0x7FA6,0x7FA5,0x7FA7,0x7FDB,0x7FDC,0x8021, 0x8164,0x8160,0x8177,0x815C,0x8169,0x815B,0x8162,0x8172, 0x6721,0x815E,0x8176,0x8167,0x816F,0x8144,0x8161,0x821D, 0x8249,0x8244,0x8240,0x8242,0x8245,0x84F1,0x843F,0x8456, 0x8476,0x8479,0x848F,0x848D,0x8465,0x8451,0x8440,0x8486, 0x8467,0x8430,0x844D,0x847D,0x845A,0x8459,0x8474,0x8473, 0x845D,0x8507,0x845E,0x8437,0x843A,0x8434,0x847A,0x8443, 0x8478,0x8432,0x8445,0x8429,0x83D9,0x844B,0x842F,0x8442, 0x842D,0x845F,0x8470,0x8439,0x844E,0x844C,0x8452,0x846F, 0x84C5,0x848E,0x843B,0x8447,0x8436,0x8433, /* Range 0x4721 - 0x477E, array index: 0x0EED */ 0x8468,0x847E,0x8444,0x842B,0x8460,0x8454,0x846E,0x8450, 0x870B,0x8704,0x86F7,0x870C,0x86FA,0x86D6,0x86F5,0x874D, 0x86F8,0x870E,0x8709,0x8701,0x86F6,0x870D,0x8705,0x88D6, 0x88CB,0x88CD,0x88CE,0x88DE,0x88DB,0x88DA,0x88CC,0x88D0, 0x8985,0x899B,0x89DF,0x89E5,0x89E4,0x89E1,0x89E0,0x89E2, 0x89DC,0x89E6,0x8A76,0x8A86,0x8A7F,0x8A61,0x8A3F,0x8A77, 0x8A82,0x8A84,0x8A75,0x8A83,0x8A81,0x8A74,0x8A7A,0x8C3C, 0x8C4B,0x8C4A,0x8C65,0x8C64,0x8C66,0x8C86,0x8C84,0x8C85, 0x8CCC,0x8D68,0x8D69,0x8D91,0x8D8C,0x8D8E,0x8D8F,0x8D8D, 0x8D93,0x8D94,0x8D90,0x8D92,0x8DF0,0x8DE0,0x8DEC,0x8DF1, 0x8DEE,0x8DD0,0x8DE9,0x8DE3,0x8DE2,0x8DE7,0x8DF2,0x8DEB, 0x8DF4,0x8F06,0x8EFF,0x8F01,0x8F00,0x8F05, /* Range 0x4821 - 0x487E, array index: 0x0F4B */ 0x8F07,0x8F08,0x8F02,0x8F0B,0x9052,0x903F,0x9044,0x9049, 0x903D,0x9110,0x910D,0x910F,0x9111,0x9116,0x9114,0x910B, 0x910E,0x916E,0x916F,0x9248,0x9252,0x9230,0x923A,0x9266, 0x9233,0x9265,0x925E,0x9283,0x922E,0x924A,0x9246,0x926D, 0x926C,0x924F,0x9260,0x9267,0x926F,0x9236,0x9261,0x9270, 0x9231,0x9254,0x9263,0x9250,0x9272,0x924E,0x9253,0x924C, 0x9256,0x9232,0x959F,0x959C,0x959E,0x959B,0x9692,0x9693, 0x9691,0x9697,0x96CE,0x96FA,0x96FD,0x96F8,0x96F5,0x9773, 0x9777,0x9778,0x9772,0x980F,0x980D,0x980E,0x98AC,0x98F6, 0x98F9,0x99AF,0x99B2,0x99B0,0x99B5,0x9AAD,0x9AAB,0x9B5B, 0x9CEA,0x9CED,0x9CE7,0x9E80,0x9EFD,0x50E6,0x50D4,0x50D7, 0x50E8,0x50F3,0x50DB,0x50EA,0x50DD,0x50E4, /* Range 0x4921 - 0x497E, array index: 0x0FA9 */ 0x50D3,0x50EC,0x50F0,0x50EF,0x50E3,0x50E0,0x51D8,0x5280, 0x5281,0x52E9,0x52EB,0x5330,0x53AC,0x5627,0x5615,0x560C, 0x5612,0x55FC,0x560F,0x561C,0x5601,0x5613,0x5602,0x55FA, 0x561D,0x5604,0x55FF,0x55F9,0x5889,0x587C,0x5890,0x5898, 0x5886,0x5881,0x587F,0x5874,0x588B,0x587A,0x5887,0x5891, 0x588E,0x5876,0x5882,0x5888,0x587B,0x5894,0x588F,0x58FE, 0x596B,0x5ADC,0x5AEE,0x5AE5,0x5AD5,0x5AEA,0x5ADA,0x5AED, 0x5AEB,0x5AF3,0x5AE2,0x5AE0,0x5ADB,0x5AEC,0x5ADE,0x5ADD, 0x5AD9,0x5AE8,0x5ADF,0x5B77,0x5BE0,0x5BE3,0x5C63,0x5D82, 0x5D80,0x5D7D,0x5D86,0x5D7A,0x5D81,0x5D77,0x5D8A,0x5D89, 0x5D88,0x5D7E,0x5D7C,0x5D8D,0x5D79,0x5D7F,0x5E58,0x5E59, 0x5E53,0x5ED8,0x5ED1,0x5ED7,0x5ECE,0x5EDC, /* Range 0x4A21 - 0x4A7E, array index: 0x1007 */ 0x5ED5,0x5ED9,0x5ED2,0x5ED4,0x5F44,0x5F43,0x5F6F,0x5FB6, 0x612C,0x6128,0x6141,0x615E,0x6171,0x6173,0x6152,0x6153, 0x6172,0x616C,0x6180,0x6174,0x6154,0x617A,0x615B,0x6165, 0x613B,0x616A,0x6161,0x6156,0x6229,0x6227,0x622B,0x642B, 0x644D,0x645B,0x645D,0x6474,0x6476,0x6472,0x6473,0x647D, 0x6475,0x6466,0x64A6,0x644E,0x6482,0x645E,0x645C,0x644B, 0x6453,0x6460,0x6450,0x647F,0x643F,0x646C,0x646B,0x6459, 0x6465,0x6477,0x6573,0x65A0,0x66A1,0x66A0,0x669F,0x6705, 0x6704,0x6722,0x69B1,0x69B6,0x69C9,0x69A0,0x69CE,0x6996, 0x69B0,0x69AC,0x69BC,0x6991,0x6999,0x698E,0x69A7,0x698D, 0x69A9,0x69BE,0x69AF,0x69BF,0x69C4,0x69BD,0x69A4,0x69D4, 0x69B9,0x69CA,0x699A,0x69CF,0x69B3,0x6993, /* Range 0x4B21 - 0x4B7E, array index: 0x1065 */ 0x69AA,0x69A1,0x699E,0x69D9,0x6997,0x6990,0x69C2,0x69B5, 0x69A5,0x69C6,0x6B4A,0x6B4D,0x6B4B,0x6B9E,0x6B9F,0x6BA0, 0x6BC3,0x6BC4,0x6BFE,0x6ECE,0x6EF5,0x6EF1,0x6F03,0x6F25, 0x6EF8,0x6F37,0x6EFB,0x6F2E,0x6F09,0x6F4E,0x6F19,0x6F1A, 0x6F27,0x6F18,0x6F3B,0x6F12,0x6EED,0x6F0A,0x6F36,0x6F73, 0x6EF9,0x6EEE,0x6F2D,0x6F40,0x6F30,0x6F3C,0x6F35,0x6EEB, 0x6F07,0x6F0E,0x6F43,0x6F05,0x6EFD,0x6EF6,0x6F39,0x6F1C, 0x6EFC,0x6F3A,0x6F1F,0x6F0D,0x6F1E,0x6F08,0x6F21,0x7187, 0x7190,0x7189,0x7180,0x7185,0x7182,0x718F,0x717B,0x7186, 0x7181,0x7197,0x7244,0x7253,0x7297,0x7295,0x7293,0x7343, 0x734D,0x7351,0x734C,0x7462,0x7473,0x7471,0x7475,0x7472, 0x7467,0x746E,0x7500,0x7502,0x7503,0x757D, /* Range 0x4C21 - 0x4C7E, array index: 0x10C3 */ 0x7590,0x7616,0x7608,0x760C,0x7615,0x7611,0x760A,0x7614, 0x76B8,0x7781,0x777C,0x7785,0x7782,0x776E,0x7780,0x776F, 0x777E,0x7783,0x78B2,0x78AA,0x78B4,0x78AD,0x78A8,0x787E, 0x78AB,0x789E,0x78A5,0x78A0,0x78AC,0x78A2,0x78A4,0x7998, 0x798A,0x798B,0x7996,0x7995,0x7994,0x7993,0x7997,0x7988, 0x7992,0x7990,0x7A2B,0x7A4A,0x7A30,0x7A2F,0x7A28,0x7A26, 0x7AA8,0x7AAB,0x7AAC,0x7AEE,0x7B88,0x7B9C,0x7B8A,0x7B91, 0x7B90,0x7B96,0x7B8D,0x7B8C,0x7B9B,0x7B8E,0x7B85,0x7B98, 0x5284,0x7B99,0x7BA4,0x7B82,0x7CBB,0x7CBF,0x7CBC,0x7CBA, 0x7DA7,0x7DB7,0x7DC2,0x7DA3,0x7DAA,0x7DC1,0x7DC0,0x7DC5, 0x7D9D,0x7DCE,0x7DC4,0x7DC6,0x7DCB,0x7DCC,0x7DAF,0x7DB9, 0x7D96,0x7DBC,0x7D9F,0x7DA6,0x7DAE,0x7DA9, /* Range 0x4D21 - 0x4D7E, array index: 0x1121 */ 0x7DA1,0x7DC9,0x7F73,0x7FE2,0x7FE3,0x7FE5,0x7FDE,0x8024, 0x805D,0x805C,0x8189,0x8186,0x8183,0x8187,0x818D,0x818C, 0x818B,0x8215,0x8497,0x84A4,0x84A1,0x849F,0x84BA,0x84CE, 0x84C2,0x84AC,0x84AE,0x84AB,0x84B9,0x84B4,0x84C1,0x84CD, 0x84AA,0x849A,0x84B1,0x84D0,0x849D,0x84A7,0x84BB,0x84A2, 0x8494,0x84C7,0x84CC,0x849B,0x84A9,0x84AF,0x84A8,0x84D6, 0x8498,0x84B6,0x84CF,0x84A0,0x84D7,0x84D4,0x84D2,0x84DB, 0x84B0,0x8491,0x8661,0x8733,0x8723,0x8728,0x876B,0x8740, 0x872E,0x871E,0x8721,0x8719,0x871B,0x8743,0x872C,0x8741, 0x873E,0x8746,0x8720,0x8732,0x872A,0x872D,0x873C,0x8712, 0x873A,0x8731,0x8735,0x8742,0x8726,0x8727,0x8738,0x8724, 0x871A,0x8730,0x8711,0x88F7,0x88E7,0x88F1, /* Range 0x4E21 - 0x4E7E, array index: 0x117F */ 0x88F2,0x88FA,0x88FE,0x88EE,0x88FC,0x88F6,0x88FB,0x88F0, 0x88EC,0x88EB,0x899D,0x89A1,0x899F,0x899E,0x89E9,0x89EB, 0x89E8,0x8AAB,0x8A99,0x8A8B,0x8A92,0x8A8F,0x8A96,0x8C3D, 0x8C68,0x8C69,0x8CD5,0x8CCF,0x8CD7,0x8D96,0x8E09,0x8E02, 0x8DFF,0x8E0D,0x8DFD,0x8E0A,0x8E03,0x8E07,0x8E06,0x8E05, 0x8DFE,0x8E00,0x8E04,0x8F10,0x8F11,0x8F0E,0x8F0D,0x9123, 0x911C,0x9120,0x9122,0x911F,0x911D,0x911A,0x9124,0x9121, 0x911B,0x917A,0x9172,0x9179,0x9173,0x92A5,0x92A4,0x9276, 0x929B,0x927A,0x92A0,0x9294,0x92AA,0x928D,0x92A6,0x929A, 0x92AB,0x9279,0x9297,0x927F,0x92A3,0x92EE,0x928E,0x9282, 0x9295,0x92A2,0x927D,0x9288,0x92A1,0x928A,0x9286,0x928C, 0x9299,0x92A7,0x927E,0x9287,0x92A9,0x929D, /* Range 0x4F21 - 0x4F7E, array index: 0x11DD */ 0x928B,0x922D,0x969E,0x96A1,0x96FF,0x9758,0x977D,0x977A, 0x977E,0x9783,0x9780,0x9782,0x977B,0x9784,0x9781,0x977F, 0x97CE,0x97CD,0x9816,0x98AD,0x98AE,0x9902,0x9900,0x9907, 0x999D,0x999C,0x99C3,0x99B9,0x99BB,0x99BA,0x99C2,0x99BD, 0x99C7,0x9AB1,0x9AE3,0x9AE7,0x9B3E,0x9B3F,0x9B60,0x9B61, 0x9B5F,0x9CF1,0x9CF2,0x9CF5,0x9EA7,0x50FF,0x5103,0x5130, 0x50F8,0x5106,0x5107,0x50F6,0x50FE,0x510B,0x510C,0x50FD, 0x510A,0x528B,0x528C,0x52F1,0x52EF,0x5648,0x5642,0x564C, 0x5635,0x5641,0x564A,0x5649,0x5646,0x5658,0x565A,0x5640, 0x5633,0x563D,0x562C,0x563E,0x5638,0x562A,0x563A,0x571A, 0x58AB,0x589D,0x58B1,0x58A0,0x58A3,0x58AF,0x58AC,0x58A5, 0x58A1,0x58FF,0x5AFF,0x5AF4,0x5AFD,0x5AF7, /* Range 0x5021 - 0x507E, array index: 0x123B */ 0x5AF6,0x5B03,0x5AF8,0x5B02,0x5AF9,0x5B01,0x5B07,0x5B05, 0x5B0F,0x5C67,0x5D99,0x5D97,0x5D9F,0x5D92,0x5DA2,0x5D93, 0x5D95,0x5DA0,0x5D9C,0x5DA1,0x5D9A,0x5D9E,0x5E69,0x5E5D, 0x5E60,0x5E5C,0x7DF3,0x5EDB,0x5EDE,0x5EE1,0x5F49,0x5FB2, 0x618B,0x6183,0x6179,0x61B1,0x61B0,0x61A2,0x6189,0x619B, 0x6193,0x61AF,0x61AD,0x619F,0x6192,0x61AA,0x61A1,0x618D, 0x6166,0x61B3,0x622D,0x646E,0x6470,0x6496,0x64A0,0x6485, 0x6497,0x649C,0x648F,0x648B,0x648A,0x648C,0x64A3,0x649F, 0x6468,0x64B1,0x6498,0x6576,0x657A,0x6579,0x657B,0x65B2, 0x65B3,0x66B5,0x66B0,0x66A9,0x66B2,0x66B7,0x66AA,0x66AF, 0x6A00,0x6A06,0x6A17,0x69E5,0x69F8,0x6A15,0x69F1,0x69E4, 0x6A20,0x69FF,0x69EC,0x69E2,0x6A1B,0x6A1D, /* Range 0x5121 - 0x517E, array index: 0x1299 */ 0x69FE,0x6A27,0x69F2,0x69EE,0x6A14,0x69F7,0x69E7,0x6A40, 0x6A08,0x69E6,0x69FB,0x6A0D,0x69FC,0x69EB,0x6A09,0x6A04, 0x6A18,0x6A25,0x6A0F,0x69F6,0x6A26,0x6A07,0x69F4,0x6A16, 0x6B51,0x6BA5,0x6BA3,0x6BA2,0x6BA6,0x6C01,0x6C00,0x6BFF, 0x6C02,0x6F41,0x6F26,0x6F7E,0x6F87,0x6FC6,0x6F92,0x6F8D, 0x6F89,0x6F8C,0x6F62,0x6F4F,0x6F85,0x6F5A,0x6F96,0x6F76, 0x6F6C,0x6F82,0x6F55,0x6F72,0x6F52,0x6F50,0x6F57,0x6F94, 0x6F93,0x6F5D,0x6F00,0x6F61,0x6F6B,0x6F7D,0x6F67,0x6F90, 0x6F53,0x6F8B,0x6F69,0x6F7F,0x6F95,0x6F63,0x6F77,0x6F6A, 0x6F7B,0x71B2,0x71AF,0x719B,0x71B0,0x71A0,0x719A,0x71A9, 0x71B5,0x719D,0x71A5,0x719E,0x71A4,0x71A1,0x71AA,0x719C, 0x71A7,0x71B3,0x7298,0x729A,0x7358,0x7352, /* Range 0x5221 - 0x527E, array index: 0x12F7 */ 0x735E,0x735F,0x7360,0x735D,0x735B,0x7361,0x735A,0x7359, 0x7362,0x7487,0x7489,0x748A,0x7486,0x7481,0x747D,0x7485, 0x7488,0x747C,0x7479,0x7508,0x7507,0x757E,0x7625,0x761E, 0x7619,0x761D,0x761C,0x7623,0x761A,0x7628,0x761B,0x769C, 0x769D,0x769E,0x769B,0x778D,0x778F,0x7789,0x7788,0x78CD, 0x78BB,0x78CF,0x78CC,0x78D1,0x78CE,0x78D4,0x78C8,0x78C3, 0x78C4,0x78C9,0x799A,0x79A1,0x79A0,0x799C,0x79A2,0x799B, 0x6B76,0x7A39,0x7AB2,0x7AB4,0x7AB3,0x7BB7,0x7BCB,0x7BBE, 0x7BAC,0x7BCE,0x7BAF,0x7BB9,0x7BCA,0x7BB5,0x7CC5,0x7CC8, 0x7CCC,0x7CCB,0x7DF7,0x7DDB,0x7DEA,0x7DE7,0x7DD7,0x7DE1, 0x7E03,0x7DFA,0x7DE6,0x7DF6,0x7DF1,0x7DF0,0x7DEE,0x7DDF, 0x7F76,0x7FAC,0x7FB0,0x7FAD,0x7FED,0x7FEB, /* Range 0x5321 - 0x537E, array index: 0x1355 */ 0x7FEA,0x7FEC,0x7FE6,0x7FE8,0x8064,0x8067,0x81A3,0x819F, 0x819E,0x8195,0x81A2,0x8199,0x8197,0x8216,0x824F,0x8253, 0x8252,0x8250,0x824E,0x8251,0x8524,0x853B,0x850F,0x8500, 0x8529,0x850E,0x8509,0x850D,0x851F,0x850A,0x8527,0x851C, 0x84FB,0x852B,0x84FA,0x8508,0x850C,0x84F4,0x852A,0x84F2, 0x8515,0x84F7,0x84EB,0x84F3,0x84FC,0x8512,0x84EA,0x84E9, 0x8516,0x84FE,0x8528,0x851D,0x852E,0x8502,0x84FD,0x851E, 0x84F6,0x8531,0x8526,0x84E7,0x84E8,0x84F0,0x84EF,0x84F9, 0x8518,0x8520,0x8530,0x850B,0x8519,0x852F,0x8662,0x8756, 0x8763,0x8764,0x8777,0x87E1,0x8773,0x8758,0x8754,0x875B, 0x8752,0x8761,0x875A,0x8751,0x875E,0x876D,0x876A,0x8750, 0x874E,0x875F,0x875D,0x876F,0x876C,0x877A, /* Range 0x5421 - 0x547E, array index: 0x13B3 */ 0x876E,0x875C,0x8765,0x874F,0x877B,0x8775,0x8762,0x8767, 0x8769,0x885A,0x8905,0x890C,0x8914,0x890B,0x8917,0x8918, 0x8919,0x8906,0x8916,0x8911,0x890E,0x8909,0x89A2,0x89A4, 0x89A3,0x89ED,0x89F0,0x89EC,0x8ACF,0x8AC6,0x8AB8,0x8AD3, 0x8AD1,0x8AD4,0x8AD5,0x8ABB,0x8AD7,0x8ABE,0x8AC0,0x8AC5, 0x8AD8,0x8AC3,0x8ABA,0x8ABD,0x8AD9,0x8C3E,0x8C4D,0x8C8F, 0x8CE5,0x8CDF,0x8CD9,0x8CE8,0x8CDA,0x8CDD,0x8CE7,0x8DA0, 0x8D9C,0x8DA1,0x8D9B,0x8E20,0x8E23,0x8E25,0x8E24,0x8E2E, 0x8E15,0x8E1B,0x8E16,0x8E11,0x8E19,0x8E26,0x8E27,0x8E14, 0x8E12,0x8E18,0x8E13,0x8E1C,0x8E17,0x8E1A,0x8F2C,0x8F24, 0x8F18,0x8F1A,0x8F20,0x8F23,0x8F16,0x8F17,0x9073,0x9070, 0x906F,0x9067,0x906B,0x912F,0x912B,0x9129, /* Range 0x5521 - 0x557E, array index: 0x1411 */ 0x912A,0x9132,0x9126,0x912E,0x9185,0x9186,0x918A,0x9181, 0x9182,0x9184,0x9180,0x92D0,0x92C3,0x92C4,0x92C0,0x92D9, 0x92B6,0x92CF,0x92F1,0x92DF,0x92D8,0x92E9,0x92D7,0x92DD, 0x92CC,0x92EF,0x92C2,0x92E8,0x92CA,0x92C8,0x92CE,0x92E6, 0x92CD,0x92D5,0x92C9,0x92E0,0x92DE,0x92E7,0x92D1,0x92D3, 0x92B5,0x92E1,0x9325,0x92C6,0x92B4,0x957C,0x95AC,0x95AB, 0x95AE,0x95B0,0x96A4,0x96A2,0x96D3,0x9705,0x9708,0x9702, 0x975A,0x978A,0x978E,0x9788,0x97D0,0x97CF,0x981E,0x981D, 0x9826,0x9829,0x9828,0x9820,0x981B,0x9827,0x98B2,0x9908, 0x98FA,0x9911,0x9914,0x9916,0x9917,0x9915,0x99DC,0x99CD, 0x99CF,0x99D3,0x99D4,0x99CE,0x99C9,0x99D6,0x99D8,0x99CB, 0x99D7,0x99CC,0x9AB3,0x9AEC,0x9AEB,0x9AF3, /* Range 0x5621 - 0x567E, array index: 0x146F */ 0x9AF2,0x9AF1,0x9B46,0x9B43,0x9B67,0x9B74,0x9B71,0x9B66, 0x9B76,0x9B75,0x9B70,0x9B68,0x9B64,0x9B6C,0x9CFC,0x9CFA, 0x9CFD,0x9CFF,0x9CF7,0x9D07,0x9D00,0x9CF9,0x9CFB,0x9D08, 0x9D05,0x9D04,0x9E83,0x9ED3,0x9F0F,0x9F10,0x511C,0x5113, 0x5117,0x511A,0x5111,0x51DE,0x5334,0x53E1,0x5670,0x5660, 0x566E,0x5673,0x5666,0x5663,0x566D,0x5672,0x565E,0x5677, 0x571C,0x571B,0x58C8,0x58BD,0x58C9,0x58BF,0x58BA,0x58C2, 0x58BC,0x58C6,0x5B17,0x5B19,0x5B1B,0x5B21,0x5B14,0x5B13, 0x5B10,0x5B16,0x5B28,0x5B1A,0x5B20,0x5B1E,0x5BEF,0x5DAC, 0x5DB1,0x5DA9,0x5DA7,0x5DB5,0x5DB0,0x5DAE,0x5DAA,0x5DA8, 0x5DB2,0x5DAD,0x5DAF,0x5DB4,0x5E67,0x5E68,0x5E66,0x5E6F, 0x5EE9,0x5EE7,0x5EE6,0x5EE8,0x5EE5,0x5F4B, /* Range 0x5721 - 0x577E, array index: 0x14CD */ 0x5FBC,0x5FBB,0x619D,0x61A8,0x6196,0x61C5,0x61B4,0x61C6, 0x61C1,0x61CC,0x61BA,0x61BF,0x61B8,0x618C,0x64D7,0x64D6, 0x64D0,0x64CF,0x64C9,0x64BD,0x6489,0x64C3,0x64DB,0x64F3, 0x64D9,0x6533,0x657F,0x657C,0x65A2,0x66C8,0x66BE,0x66C0, 0x66CA,0x66CB,0x66CF,0x66BD,0x66BB,0x66BA,0x66CC,0x6723, 0x6A34,0x6A66,0x6A49,0x6A67,0x6A32,0x6A68,0x6A3E,0x6A5D, 0x6A6D,0x6A76,0x6A5B,0x6A51,0x6A28,0x6A5A,0x6A3B,0x6A3F, 0x6A41,0x6A6A,0x6A64,0x6A50,0x6A4F,0x6A54,0x6A6F,0x6A69, 0x6A60,0x6A3C,0x6A5E,0x6A56,0x6A55,0x6A4D,0x6A4E,0x6A46, 0x6B55,0x6B54,0x6B56,0x6BA7,0x6BAA,0x6BAB,0x6BC8,0x6BC7, 0x6C04,0x6C03,0x6C06,0x6FAD,0x6FCB,0x6FA3,0x6FC7,0x6FBC, 0x6FCE,0x6FC8,0x6F5E,0x6FC4,0x6FBD,0x6F9E, /* Range 0x5821 - 0x587E, array index: 0x152B */ 0x6FCA,0x6FA8,0x7004,0x6FA5,0x6FAE,0x6FBA,0x6FAC,0x6FAA, 0x6FCF,0x6FBF,0x6FB8,0x6FA2,0x6FC9,0x6FAB,0x6FCD,0x6FAF, 0x6FB2,0x6FB0,0x71C5,0x71C2,0x71BF,0x71B8,0x71D6,0x71C0, 0x71C1,0x71CB,0x71D4,0x71CA,0x71C7,0x71CF,0x71BD,0x71D8, 0x71BC,0x71C6,0x71DA,0x71DB,0x729D,0x729E,0x7369,0x7366, 0x7367,0x736C,0x7365,0x736B,0x736A,0x747F,0x749A,0x74A0, 0x7494,0x7492,0x7495,0x74A1,0x750B,0x7580,0x762F,0x762D, 0x7631,0x763D,0x7633,0x763C,0x7635,0x7632,0x7630,0x76BB, 0x76E6,0x779A,0x779D,0x77A1,0x779C,0x779B,0x77A2,0x77A3, 0x7795,0x7799,0x7797,0x78DD,0x78E9,0x78E5,0x78EA,0x78DE, 0x78E3,0x78DB,0x78E1,0x78E2,0x78ED,0x78DF,0x78E0,0x79A4, 0x7A44,0x7A48,0x7A47,0x7AB6,0x7AB8,0x7AB5, /* Range 0x5921 - 0x597E, array index: 0x1589 */ 0x7AB1,0x7AB7,0x7BDE,0x7BE3,0x7BE7,0x7BDD,0x7BD5,0x7BE5, 0x7BDA,0x7BE8,0x7BF9,0x7BD4,0x7BEA,0x7BE2,0x7BDC,0x7BEB, 0x7BD8,0x7BDF,0x7CD2,0x7CD4,0x7CD7,0x7CD0,0x7CD1,0x7E12, 0x7E21,0x7E17,0x7E0C,0x7E1F,0x7E20,0x7E13,0x7E0E,0x7E1C, 0x7E15,0x7E1A,0x7E22,0x7E0B,0x7E0F,0x7E16,0x7E0D,0x7E14, 0x7E25,0x7E24,0x7F43,0x7F7B,0x7F7C,0x7F7A,0x7FB1,0x7FEF, 0x802A,0x8029,0x806C,0x81B1,0x81A6,0x81AE,0x81B9,0x81B5, 0x81AB,0x81B0,0x81AC,0x81B4,0x81B2,0x81B7,0x81A7,0x81F2, 0x8255,0x8256,0x8257,0x8556,0x8545,0x856B,0x854D,0x8553, 0x8561,0x8558,0x8540,0x8546,0x8564,0x8541,0x8562,0x8544, 0x8551,0x8547,0x8563,0x853E,0x855B,0x8571,0x854E,0x856E, 0x8575,0x8555,0x8567,0x8560,0x858C,0x8566, /* Range 0x5A21 - 0x5A7E, array index: 0x15E7 */ 0x855D,0x8554,0x8565,0x856C,0x8663,0x8665,0x8664,0x87A4, 0x879B,0x878F,0x8797,0x8793,0x8792,0x8788,0x8781,0x8796, 0x8798,0x8779,0x8787,0x87A3,0x8785,0x8790,0x8791,0x879D, 0x8784,0x8794,0x879C,0x879A,0x8789,0x891E,0x8926,0x8930, 0x892D,0x892E,0x8927,0x8931,0x8922,0x8929,0x8923,0x892F, 0x892C,0x891F,0x89F1,0x8AE0,0x8AE2,0x8AF2,0x8AF4,0x8AF5, 0x8ADD,0x8B14,0x8AE4,0x8ADF,0x8AF0,0x8AC8,0x8ADE,0x8AE1, 0x8AE8,0x8AFF,0x8AEF,0x8AFB,0x8C91,0x8C92,0x8C90,0x8CF5, 0x8CEE,0x8CF1,0x8CF0,0x8CF3,0x8D6C,0x8D6E,0x8DA5,0x8DA7, 0x8E33,0x8E3E,0x8E38,0x8E40,0x8E45,0x8E36,0x8E3C,0x8E3D, 0x8E41,0x8E30,0x8E3F,0x8EBD,0x8F36,0x8F2E,0x8F35,0x8F32, 0x8F39,0x8F37,0x8F34,0x9076,0x9079,0x907B, /* Range 0x5B21 - 0x5B7E, array index: 0x1645 */ 0x9086,0x90FA,0x9133,0x9135,0x9136,0x9193,0x9190,0x9191, 0x918D,0x918F,0x9327,0x931E,0x9308,0x931F,0x9306,0x930F, 0x937A,0x9338,0x933C,0x931B,0x9323,0x9312,0x9301,0x9346, 0x932D,0x930E,0x930D,0x92CB,0x931D,0x92FA,0x9313,0x92F9, 0x92F7,0x9334,0x9302,0x9324,0x92FF,0x9329,0x9339,0x9335, 0x932A,0x9314,0x930C,0x930B,0x92FE,0x9309,0x9300,0x92FB, 0x9316,0x95BC,0x95CD,0x95BE,0x95B9,0x95BA,0x95B6,0x95BF, 0x95B5,0x95BD,0x96A9,0x96D4,0x970B,0x9712,0x9710,0x9799, 0x9797,0x9794,0x97F0,0x97F8,0x9835,0x982F,0x9832,0x9924, 0x991F,0x9927,0x9929,0x999E,0x99EE,0x99EC,0x99E5,0x99E4, 0x99F0,0x99E3,0x99EA,0x99E9,0x99E7,0x9AB9,0x9ABF,0x9AB4, 0x9ABB,0x9AF6,0x9AFA,0x9AF9,0x9AF7,0x9B33, /* Range 0x5C21 - 0x5C7E, array index: 0x16A3 */ 0x9B80,0x9B85,0x9B87,0x9B7C,0x9B7E,0x9B7B,0x9B82,0x9B93, 0x9B92,0x9B90,0x9B7A,0x9B95,0x9B7D,0x9B88,0x9D25,0x9D17, 0x9D20,0x9D1E,0x9D14,0x9D29,0x9D1D,0x9D18,0x9D22,0x9D10, 0x9D19,0x9D1F,0x9E88,0x9E86,0x9E87,0x9EAE,0x9EAD,0x9ED5, 0x9ED6,0x9EFA,0x9F12,0x9F3D,0x5126,0x5125,0x5122,0x5124, 0x5120,0x5129,0x52F4,0x5693,0x568C,0x568D,0x5686,0x5684, 0x5683,0x567E,0x5682,0x567F,0x5681,0x58D6,0x58D4,0x58CF, 0x58D2,0x5B2D,0x5B25,0x5B32,0x5B23,0x5B2C,0x5B27,0x5B26, 0x5B2F,0x5B2E,0x5B7B,0x5BF1,0x5BF2,0x5DB7,0x5E6C,0x5E6A, 0x5FBE,0x61C3,0x61B5,0x61BC,0x61E7,0x61E0,0x61E5,0x61E4, 0x61E8,0x61DE,0x64EF,0x64E9,0x64E3,0x64EB,0x64E4,0x64E8, 0x6581,0x6580,0x65B6,0x65DA,0x66D2,0x6A8D, /* Range 0x5D21 - 0x5D7E, array index: 0x1701 */ 0x6A96,0x6A81,0x6AA5,0x6A89,0x6A9F,0x6A9B,0x6AA1,0x6A9E, 0x6A87,0x6A93,0x6A8E,0x6A95,0x6A83,0x6AA8,0x6AA4,0x6A91, 0x6A7F,0x6AA6,0x6A9A,0x6A85,0x6A8C,0x6A92,0x6B5B,0x6BAD, 0x6C09,0x6FCC,0x6FA9,0x6FF4,0x6FD4,0x6FE3,0x6FDC,0x6FED, 0x6FE7,0x6FE6,0x6FDE,0x6FF2,0x6FDD,0x6FE2,0x6FE8,0x71E1, 0x71F1,0x71E8,0x71F2,0x71E4,0x71F0,0x71E2,0x7373,0x736E, 0x736F,0x7497,0x74B2,0x74AB,0x7490,0x74AA,0x74AD,0x74B1, 0x74A5,0x74AF,0x7510,0x7511,0x7512,0x750F,0x7584,0x7643, 0x7648,0x7649,0x7647,0x76A4,0x76E9,0x77B5,0x77AB,0x77B2, 0x77B7,0x77B6,0x77B4,0x77B1,0x77A8,0x77F0,0x78F3,0x78FD, 0x7902,0x78FB,0x78FC,0x78FF,0x78F2,0x7905,0x78F9,0x78FE, 0x7904,0x79AB,0x79A8,0x7A5C,0x7A5B,0x7A56, /* Range 0x5E21 - 0x5E7E, array index: 0x175F */ 0x7A58,0x7A54,0x7A5A,0x7ABE,0x7AC0,0x7AC1,0x7C05,0x7C0F, 0x7BF2,0x7C00,0x7BFF,0x7BFB,0x7C0E,0x7BF4,0x7C0B,0x7BF3, 0x7C02,0x7C09,0x7C03,0x7C01,0x7BF8,0x7BFD,0x7C06,0x7BF0, 0x7BF1,0x7C10,0x7C0A,0x7CE8,0x7E2D,0x7E3C,0x7E42,0x7E33, 0x9848,0x7E38,0x7E2A,0x7E49,0x7E40,0x7E47,0x7E29,0x7E4C, 0x7E30,0x7E3B,0x7E36,0x7E44,0x7E3A,0x7F45,0x7F7F,0x7F7E, 0x7F7D,0x7FF4,0x7FF2,0x802C,0x81BB,0x81C4,0x81CC,0x81CA, 0x81C5,0x81C7,0x81BC,0x81E9,0x825B,0x825A,0x825C,0x8583, 0x8580,0x858F,0x85A7,0x8595,0x85A0,0x858B,0x85A3,0x857B, 0x85A4,0x859A,0x859E,0x8577,0x857C,0x8589,0x85A1,0x857A, 0x8578,0x8557,0x858E,0x8596,0x8586,0x858D,0x8599,0x859D, 0x8581,0x85A2,0x8582,0x8588,0x8585,0x8579, /* Range 0x5F21 - 0x5F7E, array index: 0x17BD */ 0x8576,0x8598,0x8590,0x859F,0x8668,0x87BE,0x87AA,0x87AD, 0x87C5,0x87B0,0x87AC,0x87B9,0x87B5,0x87BC,0x87AE,0x87C9, 0x87C3,0x87C2,0x87CC,0x87B7,0x87AF,0x87C4,0x87CA,0x87B4, 0x87B6,0x87BF,0x87B8,0x87BD,0x87DE,0x87B2,0x8935,0x8933, 0x893C,0x893E,0x8941,0x8952,0x8937,0x8942,0x89AD,0x89AF, 0x89AE,0x89F2,0x89F3,0x8B1E,0x8B18,0x8B16,0x8B11,0x8B05, 0x8B0B,0x8B22,0x8B0F,0x8B12,0x8B15,0x8B07,0x8B0D,0x8B08, 0x8B06,0x8B1C,0x8B13,0x8B1A,0x8C4F,0x8C70,0x8C72,0x8C71, 0x8C6F,0x8C95,0x8C94,0x8CF9,0x8D6F,0x8E4E,0x8E4D,0x8E53, 0x8E50,0x8E4C,0x8E47,0x8F43,0x8F40,0x9085,0x907E,0x9138, 0x919A,0x91A2,0x919B,0x9199,0x919F,0x91A1,0x919D,0x91A0, 0x93A1,0x9383,0x93AF,0x9364,0x9356,0x9347, /* Range 0x6021 - 0x607E, array index: 0x181B */ 0x937C,0x9358,0x935C,0x9376,0x9349,0x9350,0x9351,0x9360, 0x936D,0x938F,0x934C,0x936A,0x9379,0x9357,0x9355,0x9352, 0x934F,0x9371,0x9377,0x937B,0x9361,0x935E,0x9363,0x9367, 0x934E,0x9359,0x95C7,0x95C0,0x95C9,0x95C3,0x95C5,0x95B7, 0x96AE,0x96B0,0x96AC,0x9720,0x971F,0x9718,0x971D,0x9719, 0x979A,0x97A1,0x979C,0x979E,0x979D,0x97D5,0x97D4,0x97F1, 0x9841,0x9844,0x984A,0x9849,0x9845,0x9843,0x9925,0x992B, 0x992C,0x992A,0x9933,0x9932,0x992F,0x992D,0x9931,0x9930, 0x9998,0x99A3,0x99A1,0x9A02,0x99FA,0x99F4,0x99F7,0x99F9, 0x99F8,0x99F6,0x99FB,0x99FD,0x99FE,0x99FC,0x9A03,0x9ABE, 0x9AFE,0x9AFD,0x9B01,0x9AFC,0x9B48,0x9B9A,0x9BA8,0x9B9E, 0x9B9B,0x9BA6,0x9BA1,0x9BA5,0x9BA4,0x9B86, /* Range 0x6121 - 0x617E, array index: 0x1879 */ 0x9BA2,0x9BA0,0x9BAF,0x9D33,0x9D41,0x9D67,0x9D36,0x9D2E, 0x9D2F,0x9D31,0x9D38,0x9D30,0x9D45,0x9D42,0x9D43,0x9D3E, 0x9D37,0x9D40,0x9D3D,0x7FF5,0x9D2D,0x9E8A,0x9E89,0x9E8D, 0x9EB0,0x9EC8,0x9EDA,0x9EFB,0x9EFF,0x9F24,0x9F23,0x9F22, 0x9F54,0x9FA0,0x5131,0x512D,0x512E,0x5698,0x569C,0x5697, 0x569A,0x569D,0x5699,0x5970,0x5B3C,0x5C69,0x5C6A,0x5DC0, 0x5E6D,0x5E6E,0x61D8,0x61DF,0x61ED,0x61EE,0x61F1,0x61EA, 0x61F0,0x61EB,0x61D6,0x61E9,0x64FF,0x6504,0x64FD,0x64F8, 0x6501,0x6503,0x64FC,0x6594,0x65DB,0x66DA,0x66DB,0x66D8, 0x6AC5,0x6AB9,0x6ABD,0x6AE1,0x6AC6,0x6ABA,0x6AB6,0x6AB7, 0x6AC7,0x6AB4,0x6AAD,0x6B5E,0x6BC9,0x6C0B,0x7007,0x700C, 0x700D,0x7001,0x7005,0x7014,0x700E,0x6FFF, /* Range 0x6221 - 0x627E, array index: 0x18D7 */ 0x7000,0x6FFB,0x7026,0x6FFC,0x6FF7,0x700A,0x7201,0x71FF, 0x71F9,0x7203,0x71FD,0x7376,0x74B8,0x74C0,0x74B5,0x74C1, 0x74BE,0x74B6,0x74BB,0x74C2,0x7514,0x7513,0x765C,0x7664, 0x7659,0x7650,0x7653,0x7657,0x765A,0x76A6,0x76BD,0x76EC, 0x77C2,0x77BA,0x790C,0x7913,0x7914,0x7909,0x7910,0x7912, 0x7911,0x79AD,0x79AC,0x7A5F,0x7C1C,0x7C29,0x7C19,0x7C20, 0x7C1F,0x7C2D,0x7C1D,0x7C26,0x7C28,0x7C22,0x7C25,0x7C30, 0x7E5C,0x7E50,0x7E56,0x7E63,0x7E58,0x7E62,0x7E5F,0x7E51, 0x7E60,0x7E57,0x7E53,0x7FB5,0x7FB3,0x7FF7,0x7FF8,0x8075, 0x81D1,0x81D2,0x81D0,0x825F,0x825E,0x85B4,0x85C6,0x85C0, 0x85C3,0x85C2,0x85B3,0x85B5,0x85BD,0x85C7,0x85C4,0x85BF, 0x85CB,0x85CE,0x85C8,0x85C5,0x85B1,0x85B6, /* Range 0x6321 - 0x637E, array index: 0x1935 */ 0x85D2,0x8624,0x85B8,0x85B7,0x85BE,0x8669,0x87E7,0x87E6, 0x87E2,0x87DB,0x87EB,0x87EA,0x87E5,0x87DF,0x87F3,0x87E4, 0x87D4,0x87DC,0x87D3,0x87ED,0x87D8,0x87E3,0x87D7,0x87D9, 0x8801,0x87F4,0x87E8,0x87DD,0x8953,0x894B,0x894F,0x894C, 0x8946,0x8950,0x8951,0x8949,0x8B2A,0x8B27,0x8B23,0x8B33, 0x8B30,0x8B35,0x8B47,0x8B2F,0x8B3C,0x8B3E,0x8B31,0x8B25, 0x8B37,0x8B26,0x8B36,0x8B2E,0x8B24,0x8B3B,0x8B3D,0x8B3A, 0x8C42,0x8C75,0x8C99,0x8C98,0x8C97,0x8CFE,0x8D04,0x8D02, 0x8D00,0x8E5C,0x8E62,0x8E60,0x8E57,0x8E56,0x8E5E,0x8E65, 0x8E67,0x8E5B,0x8E5A,0x8E61,0x8E5D,0x8E69,0x8E54,0x8F46, 0x8F47,0x8F48,0x8F4B,0x9128,0x913A,0x913B,0x913E,0x91A8, 0x91A5,0x91A7,0x91AF,0x91AA,0x93B5,0x938C, /* Range 0x6421 - 0x647E, array index: 0x1993 */ 0x9392,0x93B7,0x939B,0x939D,0x9389,0x93A7,0x938E,0x93AA, 0x939E,0x93A6,0x9395,0x9388,0x9399,0x939F,0x9380,0x938D, 0x93B1,0x9391,0x93B2,0x93A4,0x93A8,0x93B4,0x93A3,0x95D2, 0x95D3,0x95D1,0x96B3,0x96D7,0x96DA,0x5DC2,0x96DF,0x96D8, 0x96DD,0x9723,0x9722,0x9725,0x97AC,0x97AE,0x97A8,0x97AB, 0x97A4,0x97AA,0x97A2,0x97A5,0x97D7,0x97D9,0x97D6,0x97D8, 0x97FA,0x9850,0x9851,0x9852,0x98B8,0x9941,0x993C,0x993A, 0x9A0F,0x9A0B,0x9A09,0x9A0D,0x9A04,0x9A11,0x9A0A,0x9A05, 0x9A07,0x9A06,0x9AC0,0x9ADC,0x9B08,0x9B04,0x9B05,0x9B29, 0x9B35,0x9B4A,0x9B4C,0x9B4B,0x9BC7,0x9BC6,0x9BC3,0x9BBF, 0x9BC1,0x9BB5,0x9BB8,0x9BD3,0x9BB6,0x9BC4,0x9BB9,0x9BBD, 0x9D5C,0x9D53,0x9D4F,0x9D4A,0x9D5B,0x9D4B, /* Range 0x6521 - 0x657E, array index: 0x19F1 */ 0x9D59,0x9D56,0x9D4C,0x9D57,0x9D52,0x9D54,0x9D5F,0x9D58, 0x9D5A,0x9E8E,0x9E8C,0x9EDF,0x9F01,0x9F00,0x9F16,0x9F25, 0x9F2B,0x9F2A,0x9F29,0x9F28,0x9F4C,0x9F55,0x5134,0x5135, 0x5296,0x52F7,0x53B4,0x56AB,0x56AD,0x56A6,0x56A7,0x56AA, 0x56AC,0x58DA,0x58DD,0x58DB,0x5912,0x5B3D,0x5B3E,0x5B3F, 0x5DC3,0x5E70,0x5FBF,0x61FB,0x6507,0x6510,0x650D,0x6509, 0x650C,0x650E,0x6584,0x65DE,0x65DD,0x66DE,0x6AE7,0x6AE0, 0x6ACC,0x6AD1,0x6AD9,0x6ACB,0x6ADF,0x6ADC,0x6AD0,0x6AEB, 0x6ACF,0x6ACD,0x6ADE,0x6B60,0x6BB0,0x6C0C,0x7019,0x7027, 0x7020,0x7016,0x702B,0x7021,0x7022,0x7023,0x7029,0x7017, 0x7024,0x701C,0x720C,0x720A,0x7207,0x7202,0x7205,0x72A5, 0x72A6,0x72A4,0x72A3,0x72A1,0x74CB,0x74C5, /* Range 0x6621 - 0x667E, array index: 0x1A4F */ 0x74B7,0x74C3,0x7516,0x7660,0x77C9,0x77CA,0x77C4,0x77F1, 0x791D,0x791B,0x7921,0x791C,0x7917,0x791E,0x79B0,0x7A67, 0x7A68,0x7C33,0x7C3C,0x7C39,0x7C2C,0x7C3B,0x7CEC,0x7CEA, 0x7E76,0x7E75,0x7E78,0x7E70,0x7E77,0x7E6F,0x7E7A,0x7E72, 0x7E74,0x7E68,0x7F4B,0x7F4A,0x7F83,0x7F86,0x7FB7,0x7FFD, 0x7FFE,0x8078,0x81D7,0x81D5,0x820B,0x8264,0x8261,0x8263, 0x85EB,0x85F1,0x85ED,0x85D9,0x85E1,0x85E8,0x85DA,0x85D7, 0x85EC,0x85F2,0x85F8,0x85D8,0x85DF,0x85E3,0x85DC,0x85D1, 0x85F0,0x85E6,0x85EF,0x85DE,0x85E2,0x8800,0x87FA,0x8803, 0x87F6,0x87F7,0x8809,0x880C,0x880B,0x8806,0x87FC,0x8808, 0x87FF,0x880A,0x8802,0x8962,0x895A,0x895B,0x8957,0x8961, 0x895C,0x8958,0x895D,0x8959,0x8988,0x89B7, /* Range 0x6721 - 0x677E, array index: 0x1AAD */ 0x89B6,0x89F6,0x8B50,0x8B48,0x8B4A,0x8B40,0x8B53,0x8B56, 0x8B54,0x8B4B,0x8B55,0x8B51,0x8B42,0x8B52,0x8B57,0x8C43, 0x8C77,0x8C76,0x8C9A,0x8D06,0x8D07,0x8D09,0x8DAC,0x8DAA, 0x8DAD,0x8DAB,0x8E6D,0x8E78,0x8E73,0x8E6A,0x8E6F,0x8E7B, 0x8EC2,0x8F52,0x8F51,0x8F4F,0x8F50,0x8F53,0x8FB4,0x9140, 0x913F,0x91B0,0x91AD,0x93DE,0x93C7,0x93CF,0x93C2,0x93DA, 0x93D0,0x93F9,0x93EC,0x93CC,0x93D9,0x93A9,0x93E6,0x93CA, 0x93D4,0x93EE,0x93E3,0x93D5,0x93C4,0x93CE,0x93C0,0x93D2, 0x93A5,0x93E7,0x957D,0x95DA,0x95DB,0x96E1,0x9729,0x972B, 0x972C,0x9728,0x9726,0x97B3,0x97B7,0x97B6,0x97DD,0x97DE, 0x97DF,0x985C,0x9859,0x985D,0x9857,0x98BF,0x98BD,0x98BB, 0x98BE,0x9948,0x9947,0x9943,0x99A6,0x99A7, /* Range 0x6821 - 0x687E, array index: 0x1B0B */ 0x9A1A,0x9A15,0x9A25,0x9A1D,0x9A24,0x9A1B,0x9A22,0x9A20, 0x9A27,0x9A23,0x9A1E,0x9A1C,0x9A14,0x9AC2,0x9B0B,0x9B0A, 0x9B0E,0x9B0C,0x9B37,0x9BEA,0x9BEB,0x9BE0,0x9BDE,0x9BE4, 0x9BE6,0x9BE2,0x9BF0,0x9BD4,0x9BD7,0x9BEC,0x9BDC,0x9BD9, 0x9BE5,0x9BD5,0x9BE1,0x9BDA,0x9D77,0x9D81,0x9D8A,0x9D84, 0x9D88,0x9D71,0x9D80,0x9D78,0x9D86,0x9D8B,0x9D8C,0x9D7D, 0x9D6B,0x9D74,0x9D75,0x9D70,0x9D69,0x9D85,0x9D73,0x9D7B, 0x9D82,0x9D6F,0x9D79,0x9D7F,0x9D87,0x9D68,0x9E94,0x9E91, 0x9EC0,0x9EFC,0x9F2D,0x9F40,0x9F41,0x9F4D,0x9F56,0x9F57, 0x9F58,0x5337,0x56B2,0x56B5,0x56B3,0x58E3,0x5B45,0x5DC6, 0x5DC7,0x5EEE,0x5EEF,0x5FC0,0x5FC1,0x61F9,0x6517,0x6516, 0x6515,0x6513,0x65DF,0x66E8,0x66E3,0x66E4, /* Range 0x6921 - 0x697E, array index: 0x1B69 */ 0x6AF3,0x6AF0,0x6AEA,0x6AE8,0x6AF9,0x6AF1,0x6AEE,0x6AEF, 0x703C,0x7035,0x702F,0x7037,0x7034,0x7031,0x7042,0x7038, 0x703F,0x703A,0x7039,0x702A,0x7040,0x703B,0x7033,0x7041, 0x7213,0x7214,0x72A8,0x737D,0x737C,0x74BA,0x76AB,0x76AA, 0x76BE,0x76ED,0x77CC,0x77CE,0x77CF,0x77CD,0x77F2,0x7925, 0x7923,0x7927,0x7928,0x7924,0x7929,0x79B2,0x7A6E,0x7A6C, 0x7A6D,0x7AF7,0x7C49,0x7C48,0x7C4A,0x7C47,0x7C45,0x7CEE, 0x7E7B,0x7E7E,0x7E81,0x7E80,0x7FBA,0x7FFF,0x8079,0x81DB, 0x81D9,0x8268,0x8269,0x8622,0x85FF,0x8601,0x85FE,0x861B, 0x8600,0x85F6,0x8604,0x8609,0x8605,0x860C,0x85FD,0x8819, 0x8810,0x8811,0x8817,0x8813,0x8816,0x8963,0x8966,0x89B9, 0x89F7,0x8B60,0x8B6A,0x8B5D,0x8B68,0x8B63, /* Range 0x6A21 - 0x6A7E, array index: 0x1BC7 */ 0x8B65,0x8B67,0x8B6D,0x8DAE,0x8E86,0x8E88,0x8E84,0x8F59, 0x8F56,0x8F57,0x8F55,0x8F58,0x8F5A,0x908D,0x9143,0x9141, 0x91B7,0x91B5,0x91B2,0x91B3,0x940B,0x9413,0x93FB,0x9420, 0x940F,0x9414,0x93FE,0x9415,0x9410,0x9428,0x9419,0x940D, 0x93F5,0x9400,0x93F7,0x9407,0x940E,0x9416,0x9412,0x93FA, 0x9409,0x93F8,0x943C,0x940A,0x93FF,0x93FC,0x940C,0x93F6, 0x9411,0x9406,0x95DE,0x95E0,0x95DF,0x972E,0x972F,0x97B9, 0x97BB,0x97FD,0x97FE,0x9860,0x9862,0x9863,0x985F,0x98C1, 0x98C2,0x9950,0x994E,0x9959,0x994C,0x994B,0x9953,0x9A32, 0x9A34,0x9A31,0x9A2C,0x9A2A,0x9A36,0x9A29,0x9A2E,0x9A38, 0x9A2D,0x9AC7,0x9ACA,0x9AC6,0x9B10,0x9B12,0x9B11,0x9C0B, 0x9C08,0x9BF7,0x9C05,0x9C12,0x9BF8,0x9C40, /* Range 0x6B21 - 0x6B7E, array index: 0x1C25 */ 0x9C07,0x9C0E,0x9C06,0x9C17,0x9C14,0x9C09,0x9D9F,0x9D99, 0x9DA4,0x9D9D,0x9D92,0x9D98,0x9D90,0x9D9B,0x9DA0,0x9D94, 0x9D9C,0x9DAA,0x9D97,0x9DA1,0x9D9A,0x9DA2,0x9DA8,0x9D9E, 0x9DA3,0x9DBF,0x9DA9,0x9D96,0x9DA6,0x9DA7,0x9E99,0x9E9B, 0x9E9A,0x9EE5,0x9EE4,0x9EE7,0x9EE6,0x9F30,0x9F2E,0x9F5B, 0x9F60,0x9F5E,0x9F5D,0x9F59,0x9F91,0x513A,0x5139,0x5298, 0x5297,0x56C3,0x56BD,0x56BE,0x5B48,0x5B47,0x5DCB,0x5DCF, 0x5EF1,0x61FD,0x651B,0x6B02,0x6AFC,0x6B03,0x6AF8,0x6B00, 0x7043,0x7044,0x704A,0x7048,0x7049,0x7045,0x7046,0x721D, 0x721A,0x7219,0x737E,0x7517,0x766A,0x77D0,0x792D,0x7931, 0x792F,0x7C54,0x7C53,0x7CF2,0x7E8A,0x7E87,0x7E88,0x7E8B, 0x7E86,0x7E8D,0x7F4D,0x7FBB,0x8030,0x81DD, /* Range 0x6C21 - 0x6C7E, array index: 0x1C83 */ 0x8618,0x862A,0x8626,0x861F,0x8623,0x861C,0x8619,0x8627, 0x862E,0x8621,0x8620,0x8629,0x861E,0x8625,0x8829,0x881D, 0x881B,0x8820,0x8824,0x881C,0x882B,0x884A,0x896D,0x8969, 0x896E,0x896B,0x89FA,0x8B79,0x8B78,0x8B45,0x8B7A,0x8B7B, 0x8D10,0x8D14,0x8DAF,0x8E8E,0x8E8C,0x8F5E,0x8F5B,0x8F5D, 0x9146,0x9144,0x9145,0x91B9,0x943F,0x943B,0x9436,0x9429, 0x943D,0x9430,0x9439,0x942A,0x9437,0x942C,0x9440,0x9431, 0x95E5,0x95E4,0x95E3,0x9735,0x973A,0x97BF,0x97E1,0x9864, 0x98C9,0x98C6,0x98C0,0x9958,0x9956,0x9A39,0x9A3D,0x9A46, 0x9A44,0x9A42,0x9A41,0x9A3A,0x9A3F,0x9ACD,0x9B15,0x9B17, 0x9B18,0x9B16,0x9B3A,0x9B52,0x9C2B,0x9C1D,0x9C1C,0x9C2C, 0x9C23,0x9C28,0x9C29,0x9C24,0x9C21,0x9DB7, /* Range 0x6D21 - 0x6D7E, array index: 0x1CE1 */ 0x9DB6,0x9DBC,0x9DC1,0x9DC7,0x9DCA,0x9DCF,0x9DBE,0x9DC5, 0x9DC3,0x9DBB,0x9DB5,0x9DCE,0x9DB9,0x9DBA,0x9DAC,0x9DC8, 0x9DB1,0x9DAD,0x9DCC,0x9DB3,0x9DCD,0x9DB2,0x9E7A,0x9E9C, 0x9EEB,0x9EEE,0x9EED,0x9F1B,0x9F18,0x9F1A,0x9F31,0x9F4E, 0x9F65,0x9F64,0x9F92,0x4EB9,0x56C6,0x56C5,0x56CB,0x5971, 0x5B4B,0x5B4C,0x5DD5,0x5DD1,0x5EF2,0x6521,0x6520,0x6526, 0x6522,0x6B0B,0x6B08,0x6B09,0x6C0D,0x7055,0x7056,0x7057, 0x7052,0x721E,0x721F,0x72A9,0x737F,0x74D8,0x74D5,0x74D9, 0x74D7,0x766D,0x76AD,0x7935,0x79B4,0x7A70,0x7A71,0x7C57, 0x7C5C,0x7C59,0x7C5B,0x7C5A,0x7CF4,0x7CF1,0x7E91,0x7F4F, 0x7F87,0x81DE,0x826B,0x8634,0x8635,0x8633,0x862C,0x8632, 0x8636,0x882C,0x8828,0x8826,0x882A,0x8825, /* Range 0x6E21 - 0x6E7E, array index: 0x1D3F */ 0x8971,0x89BF,0x89BE,0x89FB,0x8B7E,0x8B84,0x8B82,0x8B86, 0x8B85,0x8B7F,0x8D15,0x8E95,0x8E94,0x8E9A,0x8E92,0x8E90, 0x8E96,0x8E97,0x8F60,0x8F62,0x9147,0x944C,0x9450,0x944A, 0x944B,0x944F,0x9447,0x9445,0x9448,0x9449,0x9446,0x973F, 0x97E3,0x986A,0x9869,0x98CB,0x9954,0x995B,0x9A4E,0x9A53, 0x9A54,0x9A4C,0x9A4F,0x9A48,0x9A4A,0x9A49,0x9A52,0x9A50, 0x9AD0,0x9B19,0x9B2B,0x9B3B,0x9B56,0x9B55,0x9C46,0x9C48, 0x9C3F,0x9C44,0x9C39,0x9C33,0x9C41,0x9C3C,0x9C37,0x9C34, 0x9C32,0x9C3D,0x9C36,0x9DDB,0x9DD2,0x9DDE,0x9DDA,0x9DCB, 0x9DD0,0x9DDC,0x9DD1,0x9DDF,0x9DE9,0x9DD9,0x9DD8,0x9DD6, 0x9DF5,0x9DD5,0x9DDD,0x9EB6,0x9EF0,0x9F35,0x9F33,0x9F32, 0x9F42,0x9F6B,0x9F95,0x9FA2,0x513D,0x5299, /* Range 0x6F21 - 0x6F7E, array index: 0x1D9D */ 0x58E8,0x58E7,0x5972,0x5B4D,0x5DD8,0x882F,0x5F4F,0x6201, 0x6203,0x6204,0x6529,0x6525,0x6596,0x66EB,0x6B11,0x6B12, 0x6B0F,0x6BCA,0x705B,0x705A,0x7222,0x7382,0x7381,0x7383, 0x7670,0x77D4,0x7C67,0x7C66,0x7E95,0x826C,0x863A,0x8640, 0x8639,0x863C,0x8631,0x863B,0x863E,0x8830,0x8832,0x882E, 0x8833,0x8976,0x8974,0x8973,0x89FE,0x8B8C,0x8B8E,0x8B8B, 0x8B88,0x8C45,0x8D19,0x8E98,0x8F64,0x8F63,0x91BC,0x9462, 0x9455,0x945D,0x9457,0x945E,0x97C4,0x97C5,0x9800,0x9A56, 0x9A59,0x9B1E,0x9B1F,0x9B20,0x9C52,0x9C58,0x9C50,0x9C4A, 0x9C4D,0x9C4B,0x9C55,0x9C59,0x9C4C,0x9C4E,0x9DFB,0x9DF7, 0x9DEF,0x9DE3,0x9DEB,0x9DF8,0x9DE4,0x9DF6,0x9DE1,0x9DEE, 0x9DE6,0x9DF2,0x9DF0,0x9DE2,0x9DEC,0x9DF4, /* Range 0x7021 - 0x707E, array index: 0x1DFB */ 0x9DF3,0x9DE8,0x9DED,0x9EC2,0x9ED0,0x9EF2,0x9EF3,0x9F06, 0x9F1C,0x9F38,0x9F37,0x9F36,0x9F43,0x9F4F,0x9F71,0x9F70, 0x9F6E,0x9F6F,0x56D3,0x56CD,0x5B4E,0x5C6D,0x652D,0x66ED, 0x66EE,0x6B13,0x705F,0x7061,0x705D,0x7060,0x7223,0x74DB, 0x74E5,0x77D5,0x7938,0x79B7,0x79B6,0x7C6A,0x7E97,0x7F89, 0x826D,0x8643,0x8838,0x8837,0x8835,0x884B,0x8B94,0x8B95, 0x8E9E,0x8E9F,0x8EA0,0x8E9D,0x91BE,0x91BD,0x91C2,0x946B, 0x9468,0x9469,0x96E5,0x9746,0x9743,0x9747,0x97C7,0x97E5, 0x9A5E,0x9AD5,0x9B59,0x9C63,0x9C67,0x9C66,0x9C62,0x9C5E, 0x9C60,0x9E02,0x9DFE,0x9E07,0x9E03,0x9E06,0x9E05,0x9E00, 0x9E01,0x9E09,0x9DFF,0x9DFD,0x9E04,0x9EA0,0x9F1E,0x9F46, 0x9F74,0x9F75,0x9F76,0x56D4,0x652E,0x65B8, /* Range 0x7121 - 0x717E, array index: 0x1E59 */ 0x6B18,0x6B19,0x6B17,0x6B1A,0x7062,0x7226,0x72AA,0x77D8, 0x77D9,0x7939,0x7C69,0x7C6B,0x7CF6,0x7E9A,0x7E98,0x7E9B, 0x7E99,0x81E0,0x81E1,0x8646,0x8647,0x8648,0x8979,0x897A, 0x897C,0x897B,0x89FF,0x8B98,0x8B99,0x8EA5,0x8EA4,0x8EA3, 0x946E,0x946D,0x946F,0x9471,0x9473,0x9749,0x9872,0x995F, 0x9C68,0x9C6E,0x9C6D,0x9E0B,0x9E0D,0x9E10,0x9E0F,0x9E12, 0x9E11,0x9EA1,0x9EF5,0x9F09,0x9F47,0x9F78,0x9F7B,0x9F7A, 0x9F79,0x571E,0x7066,0x7C6F,0x883C,0x8DB2,0x8EA6,0x91C3, 0x9474,0x9478,0x9476,0x9475,0x9A60,0x9B2E,0x9C74,0x9C73, 0x9C71,0x9C75,0x9E14,0x9E13,0x9EF6,0x9F0A,0x9FA4,0x7068, 0x7065,0x7CF7,0x866A,0x883E,0x883D,0x883F,0x8B9E,0x8C9C, 0x8EA9,0x8EC9,0x974B,0x9873,0x9874,0x98CC, /* Range 0x7221 - 0x7244, array index: 0x1EB7 */ 0x9961,0x99AB,0x9A64,0x9A66,0x9A67,0x9B24,0x9E15,0x9E17, 0x9F48,0x6207,0x6B1E,0x7227,0x864C,0x8EA8,0x9482,0x9480, 0x9481,0x9A69,0x9A68,0x9E19,0x864B,0x8B9F,0x9483,0x9C79, 0x9EB7,0x7675,0x9A6B,0x9C7A,0x9E1D,0x7069,0x706A,0x7229, 0x9EA4,0x9F7E,0x9F49,0x9F98, /* Unranged codes (82 codes) */ }; #endif /* ICONV_TO_UCS_CCS_CNS11643_PLANE2 && defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * 16-bit UCS -> cns11643_plane2 speed-optimized table (42496 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_CNS11643_PLANE2) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t from_ucs_speed_cns11643_plane2[] = { /* Heading Block */ INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,0x0100,0x0200, 0x0300,0x0400,0x0500,0x0600,0x0700,0x0800,0x0900,0x0A00, 0x0B00,0x0C00,0x0D00,0x0E00,0x0F00,0x1000,0x1100,0x1200, 0x1300,0x1400,0x1500,0x1600,0x1700,0x1800,0x1900,0x1A00, 0x1B00,0x1C00,0x1D00,0x1E00,0x1F00,0x2000,0x2100,0x2200, 0x2300,0x2400,0x2500,0x2600,0x2700,0x2800,0x2900,0x2A00, 0x2B00,0x2C00,0x2D00,0x2E00,0x2F00,0x3000,0x3100,0x3200, 0x3300,0x3400,0x3500,0x3600,0x3700,0x3800,0x3900,0x3A00, 0x3B00,0x3C00,0x3D00,0x3E00,0x3F00,0x4000,0x4100,0x4200, 0x4300,0x4400,0x4500,0x4600,0x4700,0x4800,0x4900,0x4A00, 0x4B00,0x4C00,0x4D00,0x4E00,0x4F00,0x5000,0x5100,0x5200, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, /* Block 79, Array index 0x0100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2126, INVALC,INVALC,INVALC,INVALC,0x2127,INVALC,0x212F,0x212D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2130,INVALC, INVALC,0x2143,INVALC,0x2531,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2144,INVALC,INVALC,INVALC, INVALC,INVALC,0x2121,INVALC,INVALC,INVALC,INVALC,0x2128, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2122,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x334E, INVALC,INVALC,INVALC,0x4156,0x4157,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2129,INVALC,INVALC, INVALC,INVALC,INVALC,0x2131,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4158,INVALC, INVALC,0x6D44,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2132,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2134,0x2133,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x214A,INVALC,0x2146,0x2149,INVALC,INVALC, INVALC,0x2148,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2145,0x2147,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x216F,INVALC,INVALC,0x2179,0x216D,INVALC,0x2171, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 80, Array index 0x0200 */ 0x2170,INVALC,0x2174,INVALC,0x2178,0x2175,INVALC,INVALC, 0x2172,INVALC,INVALC,INVALC,INVALC,INVALC,0x216A,INVALC, INVALC,INVALC,0x217A,0x2177,0x216E,INVALC,INVALC,INVALC, 0x216B,INVALC,INVALC,INVALC,INVALC,0x2173,INVALC,INVALC, INVALC,INVALC,0x2176,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x216C,0x2328,INVALC,INVALC, INVALC,INVALC,INVALC,0x2329,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x227B,INVALC,INVALC,0x2322,0x232A, INVALC,0x2326,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x227D,INVALC,INVALC,0x253D,INVALC,INVALC,INVALC, INVALC,INVALC,0x2324,0x227E,INVALC,INVALC,0x227A,INVALC, 0x2327,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2325, INVALC,0x232B,0x227C,INVALC,0x2321,INVALC,INVALC,0x2323, INVALC,INVALC,0x253F,0x254B,INVALC,INVALC,0x254C,INVALC, INVALC,INVALC,INVALC,INVALC,0x2539,INVALC,0x2538,0x253C, 0x2543,0x2541,INVALC,INVALC,0x2533,0x2535,INVALC,INVALC, 0x2536,0x2542,0x2549,INVALC,0x253B,0x2534,INVALC,0x2537, INVALC,0x253A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2544,INVALC,0x2548,INVALC,0x2546,0x254A,INVALC,0x253E, 0x2532,INVALC,0x2540,INVALC,0x2545,INVALC,0x2547,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2922,0x292A,INVALC,INVALC,INVALC,INVALC, INVALC,0x2930,0x292E,0x2929,INVALC,INVALC,INVALC,INVALC, 0x292F,0x2925,INVALC,INVALC,INVALC,0x287E,INVALC,0x292C, INVALC,0x2923,INVALC,0x2924,INVALC,0x287D,INVALC,INVALC, INVALC,INVALC,INVALC,0x2921,0x2926,INVALC,0x292D,INVALC, INVALC,0x2928,INVALC,0x292B,0x2927,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2931,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2D71,0x2D70,0x2D75,0x2D76, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 81, Array index 0x0300 */ INVALC,INVALC,INVALC,INVALC,INVALC,0x2D6A,INVALC,0x2D6B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2D7E,INVALC, INVALC,INVALC,INVALC,0x2D6C,INVALC,0x335E,INVALC,0x2D77, INVALC,INVALC,INVALC,0x2D6F,0x2D78,INVALC,0x2D69,INVALC, 0x2D79,INVALC,0x2D6D,INVALC,INVALC,INVALC,INVALC,0x2D7A, INVALC,INVALC,INVALC,INVALC,0x2D74,INVALC,INVALC,0x2D7C, 0x2D6E,0x2D7D,INVALC,0x2D72,INVALC,0x2D7B,INVALC,0x2D73, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3366,0x335A,INVALC,INVALC,INVALC,0x335F,0x3365,INVALC, 0x3358,INVALC,0x335C,0x3355,INVALC,0x3359,INVALC,INVALC, INVALC,0x336A,INVALC,0x3354,INVALC,INVALC,INVALC,0x3369, INVALC,INVALC,INVALC,0x335B,INVALC,0x3356,0x3352,0x3360, 0x3353,0x3351,0x335D,0x3363,0x3364,INVALC,INVALC,INVALC, 0x3A3F,0x3361,0x3350,0x3362,INVALC,INVALC,0x3367,INVALC, 0x334F,INVALC,0x3357,0x3368,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3A42,0x3A3B,INVALC,INVALC,INVALC,0x3A43, INVALC,INVALC,INVALC,0x3A39,0x3A3C,INVALC,0x3A3D,INVALC, INVALC,INVALC,0x3A41,INVALC,0x3A37,0x3A36,INVALC,INVALC, INVALC,INVALC,INVALC,0x3A35,0x3A40,0x3A3E,0x3A38,INVALC, INVALC,INVALC,INVALC,0x3A3A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x415C,INVALC, 0x4162,0x4165,INVALC,INVALC,0x415F,INVALC,0x4168,INVALC, 0x4169,INVALC,0x4164,INVALC,INVALC,0x4159,INVALC,0x415A, INVALC,0x4163,0x4161,INVALC,0x415D,INVALC,0x415B,INVALC, 0x4160,0x4167,0x415E,0x4166,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4921,0x4877,INVALC,INVALC,0x4878, INVALC,INVALC,INVALC,0x487B,INVALC,0x487D,INVALC,INVALC, 0x4926,INVALC,INVALC,0x4925,0x487E,INVALC,0x4876,INVALC, 0x4879,INVALC,0x487C,INVALC,0x4922,INVALC,INVALC,0x4924, 0x4923,INVALC,INVALC,0x487A,INVALC,INVALC,0x4F54,INVALC, 0x4F51,INVALC,INVALC,INVALC,INVALC,0x4F58,0x4F55,0x4F4E, /* Block 82, Array index 0x0400 */ INVALC,INVALC,INVALC,0x4F4F,INVALC,INVALC,0x4F52,0x4F53, INVALC,INVALC,0x4F59,0x4F56,0x4F57,INVALC,INVALC,INVALC, INVALC,0x5643,INVALC,0x5640,INVALC,INVALC,INVALC,0x5641, INVALC,INVALC,0x5642,INVALC,0x563F,INVALC,INVALC,INVALC, 0x5C49,INVALC,0x5C47,INVALC,0x5C48,0x5C46,0x5C45,INVALC, INVALC,0x5C4A,INVALC,INVALC,INVALC,0x6144,0x6145,INVALC, 0x4F50,0x6143,INVALC,INVALC,0x6537,0x6538,INVALC,INVALC, INVALC,0x6B4F,0x6B4E,INVALC,INVALC,0x6E7D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2E21,INVALC,INVALC,INVALC,INVALC,0x3A44, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x212E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x232C, INVALC,INVALC,INVALC,0x2E23,0x2E22,INVALC,INVALC,INVALC, 0x2135,INVALC,INVALC,INVALC,INVALC,INVALC,0x254D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x217B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x232D,INVALC,INVALC,0x254E,INVALC,0x254F,INVALC, INVALC,INVALC,INVALC,INVALC,0x2E25,0x2E26,INVALC,INVALC, 0x2E27,INVALC,0x2E24,INVALC,INVALC,INVALC,0x2E28,INVALC, 0x336B,INVALC,INVALC,INVALC,0x3A45,INVALC,INVALC,0x416A, 0x4927,INVALC,INVALC,INVALC,INVALC,INVALC,0x5644,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2123,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 83, Array index 0x0500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x214C,INVALC,INVALC,0x214B,INVALC,INVALC,INVALC, 0x217D,INVALC,INVALC,0x217C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x232E,INVALC,0x232F,INVALC, INVALC,0x2330,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2554,0x2551,0x2552,INVALC,0x2550,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2932,INVALC,0x2553,INVALC, INVALC,0x2933,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2E2B,INVALC,INVALC,0x2E2E,INVALC,INVALC, INVALC,INVALC,0x2E2A,INVALC,INVALC,INVALC,0x2E2C,0x2E2D, INVALC,0x2E29,0x2E2F,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x336C,0x336E,0x336D,0x336F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x416C,INVALC,0x416B,0x416D,0x416E,INVALC,INVALC,INVALC, 0x4928,0x4929,INVALC,INVALC,0x4C61,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4F5A,0x4F5B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6539,0x6B51, 0x6B50,0x6E7E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x217E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2331,0x2332,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2555,INVALC,INVALC,INVALC, 0x2934,INVALC,0x2935,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2E30,INVALC,INVALC, INVALC,INVALC,INVALC,0x3371,INVALC,INVALC,0x3370,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x492A,INVALC,0x492B,INVALC,INVALC,INVALC,0x4F5D, INVALC,0x4F5C,INVALC,INVALC,0x5C4B,INVALC,INVALC,0x653A, INVALC,INVALC,INVALC,INVALC,0x2136,INVALC,INVALC,INVALC, /* Block 84, Array index 0x0600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2333,0x2556,0x2557,INVALC,INVALC,0x2E31,INVALC, INVALC,0x3A47,0x3A46,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2124,INVALC,0x214D,INVALC,INVALC,0x2222, INVALC,INVALC,0x2221,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3372,INVALC,INVALC, 0x492C,INVALC,INVALC,INVALC,0x5645,INVALC,INVALC,0x686A, INVALC,INVALC,INVALC,INVALC,0x2558,0x2936,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x214E,0x2223,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2334,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2137,INVALC,INVALC,INVALC, INVALC,INVALC,0x2335,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2937,INVALC,INVALC,INVALC, INVALC,INVALC,0x2125,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2224,INVALC,INVALC,INVALC,0x2336,0x2337, INVALC,INVALC,0x2559,INVALC,0x255A,INVALC,0x2939,0x2938, 0x293B,0x293A,INVALC,INVALC,0x3373,INVALC,0x2E32,INVALC, INVALC,INVALC,INVALC,INVALC,0x3A48,INVALC,INVALC,0x3A49, INVALC,INVALC,INVALC,INVALC,0x492D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x653B,INVALC,INVALC,INVALC, INVALC,0x2138,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5646,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 85, Array index 0x0700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2225, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2340,0x233D,INVALC,INVALC,0x233E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2345,0x233F,INVALC,INVALC, 0x2344,INVALC,0x233A,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2338,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2339, INVALC,INVALC,INVALC,INVALC,INVALC,0x2341,INVALC,INVALC, INVALC,0x2343,INVALC,INVALC,INVALC,0x233C,INVALC,0x2346, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2342, INVALC,INVALC,INVALC,INVALC,0x233B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x256B,0x256A,INVALC,0x256D,0x256F,0x2564,0x2567,0x256E, INVALC,INVALC,INVALC,0x2561,0x2565,INVALC,INVALC,0x2569, 0x294A,INVALC,0x294E,INVALC,0x2566,INVALC,INVALC,INVALC, INVALC,INVALC,0x2562,INVALC,INVALC,INVALC,0x2563,0x255C, INVALC,0x255D,0x255F,INVALC,INVALC,INVALC,INVALC,0x255B, 0x2560,INVALC,INVALC,INVALC,INVALC,0x2568,INVALC,INVALC, INVALC,0x255E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x256C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2949,0x293D,0x294C,INVALC,INVALC,0x293F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x293E,0x2944,INVALC, 0x2950,INVALC,INVALC,INVALC,INVALC,INVALC,0x2946,0x2943, INVALC,INVALC,0x293C,INVALC,0x294B,INVALC,0x294D,INVALC, INVALC,INVALC,INVALC,0x2941,INVALC,0x2947,0x2948,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2940, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2945,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x294F,INVALC, 0x2E46,INVALC,0x2E34,INVALC,0x2E39,INVALC,INVALC,0x2E37, INVALC,INVALC,INVALC,0x2E3E,INVALC,INVALC,INVALC,INVALC, INVALC,0x2E41,INVALC,0x2E38,INVALC,INVALC,INVALC,0x2E44, 0x2E45,INVALC,INVALC,0x2E43,INVALC,INVALC,INVALC,0x2E3B, /* Block 86, Array index 0x0800 */ INVALC,INVALC,INVALC,0x2E48,0x2E3C,0x2E40,INVALC,INVALC, 0x2E3D,INVALC,0x2E42,0x2E49,0x3424,INVALC,0x2E47,INVALC, INVALC,0x2E3F,0x2E36,INVALC,INVALC,INVALC,INVALC,0x2E35, INVALC,INVALC,0x2E3A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2E33,INVALC, INVALC,INVALC,0x337A,INVALC,INVALC,0x342A,INVALC,INVALC, 0x3421,INVALC,0x3425,INVALC,0x3379,0x337E,0x337D,INVALC, INVALC,0x3428,INVALC,0x342B,0x3376,INVALC,INVALC,INVALC, 0x342C,INVALC,INVALC,INVALC,INVALC,0x3423,INVALC,INVALC, 0x3429,INVALC,INVALC,0x342D,INVALC,0x3377,0x3427,INVALC, 0x3378,0x337B,0x3422,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x337C,INVALC,INVALC,0x3426,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3374,0x3375,0x3A4E, INVALC,INVALC,INVALC,INVALC,INVALC,0x3A59,INVALC,0x3A5C, INVALC,0x3A55,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3A52,INVALC,INVALC,INVALC,0x3A5A,0x417C,0x3A5F,0x3A53, INVALC,0x3A4A,0x3A57,0x3A51,INVALC,0x3A5D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3A5E,0x3A50,0x3A56,0x3A58,0x3A4C,0x3A5B,INVALC, 0x3A4B,INVALC,INVALC,INVALC,INVALC,0x3A4D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3A54,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x417A, 0x4176,INVALC,0x4227,0x416F,0x4178,INVALC,INVALC,INVALC, 0x4223,INVALC,0x4174,0x4173,0x4171,0x4225,INVALC,0x417D, 0x4172,INVALC,0x417B,INVALC,0x4177,0x417E,0x4222,INVALC, INVALC,0x4226,INVALC,0x4170,INVALC,0x4175,INVALC,INVALC, INVALC,INVALC,0x4221,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4179,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4224,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x493C,0x4938,INVALC,0x4932,INVALC,INVALC,0x493B, /* Block 87, Array index 0x0900 */ INVALC,0x4935,0x4937,INVALC,0x493A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4930,INVALC,INVALC,0x4933, INVALC,INVALC,0x4931,0x4936,INVALC,0x492F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4934,0x4939,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x492E, INVALC,INVALC,0x4F6E,INVALC,0x4F6B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4F69,INVALC,0x4F61,INVALC,INVALC, 0x4F6D,INVALC,0x4F6F,INVALC,INVALC,0x4F6A,0x4F6C,INVALC, 0x4F68,0x4F62,0x4F5F,INVALC,INVALC,0x3A4F,0x4F65,INVALC, 0x4F5E,0x4F64,0x4F63,INVALC,0x4F60,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4F66,INVALC,0x4F67,INVALC,INVALC,INVALC,0x564F,INVALC, 0x5648,INVALC,INVALC,0x564C,INVALC,INVALC,0x564B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x564D,0x5649,INVALC, 0x5647,INVALC,0x564E,0x564A,INVALC,INVALC,INVALC,0x5650, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C52,0x5C54, INVALC,0x5C55,0x5C53,0x5C51,0x5C50,INVALC,0x5C4F,INVALC, INVALC,INVALC,INVALC,INVALC,0x5C4D,0x5C4E,INVALC,INVALC, INVALC,INVALC,INVALC,0x5C4C,INVALC,INVALC,INVALC,0x6148, 0x6146,0x614B,0x6149,INVALC,0x6147,0x614A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x653E,0x653F, INVALC,INVALC,0x6540,0x653C,0x6541,0x653D,INVALC,INVALC, INVALC,INVALC,0x686B,0x686D,INVALC,0x686C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6B53,0x6B54,INVALC, INVALC,INVALC,INVALC,0x6B52,INVALC,0x6D46,0x6D45,INVALC, INVALC,INVALC,INVALC,0x6D47,INVALC,0x7034,INVALC,INVALC, INVALC,INVALC,INVALC,0x7033,0x707C,INVALC,INVALC,0x212A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2227, INVALC,0x2226,INVALC,INVALC,INVALC,0x2349,INVALC,0x2348, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2347,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2570, INVALC,0x2571,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 88, Array index 0x0A00 */ INVALC,0x2E4A,0x2E4B,INVALC,INVALC,INVALC,INVALC,0x342F, INVALC,INVALC,0x342E,INVALC,0x3A60,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4228,INVALC,INVALC,INVALC, INVALC,INVALC,0x4F70,0x5652,0x5651,INVALC,0x715A,INVALC, 0x2139,INVALC,0x214F,0x2150,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2229,INVALC,INVALC,INVALC,0x2228,INVALC, INVALC,INVALC,INVALC,INVALC,0x222A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x234A,INVALC,INVALC,INVALC,0x234B,INVALC,INVALC, INVALC,0x234D,INVALC,0x234E,0x234C,INVALC,INVALC,INVALC, INVALC,INVALC,0x234F,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x257E,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2621,INVALC,INVALC,0x2575,INVALC,0x2574,INVALC,0x2572, 0x2577,0x2576,0x2573,0x257C,0x257D,0x257A,0x2578,INVALC, INVALC,INVALC,INVALC,0x257B,INVALC,0x2622,INVALC,INVALC, 0x2579,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2955,INVALC,INVALC,0x295B, INVALC,INVALC,INVALC,INVALC,0x2959,0x295F,INVALC,0x2956, 0x295A,0x295C,0x295E,0x2958,INVALC,0x2957,0x2952,0x2953, INVALC,INVALC,INVALC,INVALC,0x2954,0x295D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2951,0x2E55,INVALC, 0x2E54,0x2E59,0x2E50,INVALC,0x2E53,0x2E52,INVALC,0x2E56, INVALC,0x2E5A,INVALC,INVALC,INVALC,INVALC,0x2E51,0x2E57, INVALC,INVALC,INVALC,INVALC,0x2E4C,INVALC,INVALC,0x343D, 0x2E58,INVALC,0x2E4F,INVALC,INVALC,0x2E4E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3434,INVALC,INVALC,INVALC, INVALC,0x3444,0x3432,0x3440,INVALC,0x3442,INVALC,0x3448, INVALC,0x344C,INVALC,INVALC,0x3443,0x3437,0x343F,INVALC, 0x344D,0x344B,0x3441,0x343C,0x3435,0x3A68,0x3433,INVALC, 0x343A,INVALC,INVALC,0x3430,0x3446,0x3438,INVALC,INVALC, /* Block 89, Array index 0x0B00 */ 0x3436,0x3449,INVALC,INVALC,0x344F,INVALC,INVALC,0x343E, 0x3439,INVALC,INVALC,0x343B,0x344A,0x344E,0x3445,INVALC, 0x3447,INVALC,INVALC,INVALC,0x3431,INVALC,INVALC,INVALC, INVALC,0x3A63,INVALC,0x3A6C,0x3A6B,INVALC,0x3A64,INVALC, INVALC,INVALC,INVALC,0x3A66,INVALC,0x3A6A,INVALC,0x3A65, 0x3A67,0x3A61,INVALC,INVALC,0x3A74,0x3A73,0x3A70,INVALC, INVALC,INVALC,0x2E4D,0x3A6D,INVALC,INVALC,0x3A6F,0x3A62, 0x3A72,0x3A71,INVALC,0x3A75,INVALC,0x4236,INVALC,0x3A6E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3A69,0x422E,INVALC,INVALC,INVALC,0x422D,0x4231,0x422C, INVALC,INVALC,INVALC,0x4229,INVALC,0x4230,INVALC,INVALC, INVALC,0x4233,INVALC,0x4235,INVALC,0x4232,INVALC,INVALC, INVALC,INVALC,INVALC,0x4237,0x422B,0x4234,INVALC,INVALC, 0x422A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x422F, INVALC,0x4238,INVALC,INVALC,0x4944,INVALC,0x494A,INVALC, INVALC,INVALC,0x4946,0x494D,0x493E,INVALC,INVALC,0x4943, INVALC,0x4942,0x494B,INVALC,INVALC,INVALC,0x4941,0x4947, 0x494C,0x493D,INVALC,0x4945,INVALC,INVALC,0x4949,0x494F, 0x493F,0x4948,INVALC,INVALC,0x494E,INVALC,INVALC,INVALC, 0x4940,INVALC,INVALC,INVALC,INVALC,0x4F72,INVALC,INVALC, 0x4F74,0x4F79,INVALC,0x4F75,INVALC,0x4F78,INVALC,INVALC, INVALC,INVALC,INVALC,0x4F71,0x4F77,INVALC,INVALC,0x4F76, INVALC,0x4F73,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5657,INVALC,0x5659,0x5654,INVALC,0x5656, INVALC,INVALC,0x5658,INVALC,INVALC,INVALC,0x565A,INVALC, 0x5653,0x5655,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C58, INVALC,INVALC,0x5C59,INVALC,0x5C57,INVALC,0x5C56,INVALC, INVALC,INVALC,0x6542,0x6544,INVALC,0x6543,INVALC,INVALC, INVALC,INVALC,INVALC,0x686E,INVALC,INVALC,INVALC,0x6F22, 0x6F21,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2960,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4239,INVALC,0x4950,0x4F7A, /* Block 90, Array index 0x0C00 */ INVALC,INVALC,INVALC,0x213A,INVALC,INVALC,0x2350,INVALC, INVALC,INVALC,INVALC,INVALC,0x2623,0x2961,0x2E5B,INVALC, INVALC,INVALC,0x6545,INVALC,INVALC,INVALC,INVALC,0x2151, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x213B,INVALC,INVALC,0x2152, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x222B,INVALC,INVALC,INVALC, 0x2351,INVALC,INVALC,INVALC,INVALC,0x2624,INVALC,INVALC, INVALC,INVALC,0x2E5C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2962,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3450,INVALC,INVALC,INVALC, INVALC,0x3A76,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4951,INVALC,INVALC,INVALC,INVALC, 0x614C,0x6D48,0x6F23,INVALC,INVALC,INVALC,INVALC,0x2231, INVALC,INVALC,INVALC,0x222F,0x222D,INVALC,0x2230,0x2232, 0x222C,INVALC,INVALC,INVALC,INVALC,0x222E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2356,0x2359, 0x2358,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2355, 0x2353,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2354,0x235B,0x2357,INVALC,INVALC,INVALC,0x2352,0x235A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2630,0x2629,INVALC,0x2634,0x2625,0x262C,INVALC, INVALC,INVALC,0x2626,INVALC,0x262D,0x2631,INVALC,INVALC, 0x2632,0x262B,INVALC,0x262E,INVALC,INVALC,INVALC,0x2635, 0x2633,INVALC,INVALC,INVALC,0x262A,INVALC,0x2628,0x2627, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x262F,INVALC, INVALC,INVALC,INVALC,0x2970,INVALC,0x2968,0x2964,INVALC, 0x2974,0x2963,INVALC,INVALC,0x296D,INVALC,INVALC,INVALC, INVALC,0x2971,INVALC,INVALC,INVALC,0x2977,0x2965,INVALC, INVALC,0x2967,0x296E,0x2972,0x2976,0x2973,0x296C,0x296F, INVALC,INVALC,0x2969,INVALC,0x296B,0x296A,0x2975,INVALC, /* Block 91, Array index 0x0D00 */ 0x2966,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2E64,INVALC,INVALC,INVALC,INVALC,0x2E62, INVALC,INVALC,INVALC,INVALC,INVALC,0x2E61,0x2E5E,0x2E63, INVALC,0x2E5D,INVALC,INVALC,INVALC,INVALC,0x2E65,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2E5F,0x2E60,INVALC, INVALC,INVALC,INVALC,0x2E66,INVALC,0x3457,INVALC,0x3B26, 0x3456,0x3469,INVALC,INVALC,INVALC,INVALC,0x3467,INVALC, INVALC,INVALC,0x3470,0x3460,0x3463,INVALC,INVALC,0x346D, 0x3465,INVALC,INVALC,INVALC,0x346A,0x3468,INVALC,INVALC, 0x3459,0x346E,0x3462,0x345D,INVALC,0x3453,0x346F,0x345F, 0x3452,INVALC,INVALC,0x3464,0x3471,0x3461,0x3455,0x345A, 0x3451,INVALC,INVALC,INVALC,0x345E,0x345B,INVALC,0x3454, INVALC,0x346C,INVALC,INVALC,0x345C,0x3458,INVALC,INVALC, 0x346B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3A7D,INVALC,0x3A7A,0x3B2D,0x3B21,0x3B2E,INVALC,INVALC, INVALC,INVALC,INVALC,0x3B2A,0x3B27,INVALC,INVALC,INVALC, INVALC,INVALC,0x3B28,0x3B2B,0x3B2F,INVALC,0x3466,0x3B31, 0x424D,INVALC,INVALC,0x3B32,0x3A78,0x3B24,INVALC,0x3B29, INVALC,INVALC,INVALC,INVALC,0x3B30,0x3B33,0x3A7C,0x3A79, INVALC,INVALC,0x3A7B,INVALC,INVALC,0x3B22,0x3A7E,INVALC, INVALC,0x3B2C,INVALC,INVALC,0x3B23,INVALC,0x3B25,0x3A77, 0x4241,0x423F,INVALC,INVALC,0x4249,0x4240,0x424A,0x4246, 0x423E,0x424C,0x423D,0x4244,INVALC,INVALC,INVALC,0x4242, 0x4247,INVALC,INVALC,INVALC,0x423B,INVALC,0x4245,0x423A, 0x4243,INVALC,0x4248,0x423C,INVALC,0x424B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4955,INVALC,INVALC, INVALC,0x4961,0x4957,0x495D,0x4952,0x4960,0x495F,0x4963, 0x495C,INVALC,0x495B,INVALC,INVALC,0x4954,INVALC,INVALC, 0x4962,INVALC,0x4956,0x4959,0x495E,0x4958,0x4953,INVALC, INVALC,INVALC,INVALC,0x495A,0x4F7C,INVALC,0x5021,0x4F7E, 0x5023,0x5025,INVALC,INVALC,INVALC,0x4F7D,INVALC,0x4F7B, /* Block 92, Array index 0x0E00 */ INVALC,0x5026,0x5024,0x5022,INVALC,0x5028,INVALC,0x5027, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5029, 0x5661,INVALC,INVALC,0x5660,0x565F,INVALC,0x5662,0x565B, INVALC,0x565C,0x5664,0x565D,INVALC,INVALC,0x5666,INVALC, 0x5665,0x565E,INVALC,0x5C5D,INVALC,0x5C5B,0x5C60,0x5C5F, 0x5663,INVALC,INVALC,INVALC,0x5C5E,0x5C5A,0x5C62,0x5C61, INVALC,INVALC,0x5C5C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x614D,0x6546,0x6547,0x6548, INVALC,INVALC,INVALC,INVALC,INVALC,0x686F,INVALC,0x6B56, 0x6B55,INVALC,INVALC,0x6D49,0x6D4A,0x6F24,0x7035,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2233,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2636,INVALC,INVALC,0x2637,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2E67,INVALC,0x3473,INVALC, INVALC,INVALC,0x3472,INVALC,INVALC,INVALC,INVALC,0x4964, INVALC,INVALC,INVALC,0x5C63,INVALC,INVALC,INVALC,INVALC, INVALC,0x2153,INVALC,INVALC,0x2154,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x235C,INVALC, INVALC,INVALC,0x235D,0x2638,INVALC,0x2639,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2E68, 0x2978,INVALC,INVALC,INVALC,0x2E6A,0x2E69,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3475,0x3474,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3B39,0x3B36,INVALC,0x3B35,0x3B3A,INVALC, INVALC,0x3B38,INVALC,INVALC,0x3B37,INVALC,0x424E,INVALC, 0x424F,0x4250,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4965,INVALC,INVALC,0x4966,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3B34,INVALC,INVALC,INVALC,INVALC,0x5667, INVALC,0x5C64,0x5C65,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 93, Array index 0x0F00 */ INVALC,INVALC,INVALC,0x2E6B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3B3B,INVALC,INVALC,INVALC, 0x213C,INVALC,0x2155,INVALC,INVALC,0x2234,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4251, INVALC,INVALC,INVALC,INVALC,INVALC,0x2235,INVALC,INVALC, 0x235E,INVALC,0x235F,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3B3C,INVALC,INVALC,0x4252,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2156,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x263A,INVALC,INVALC,0x263B, INVALC,INVALC,INVALC,INVALC,0x2979,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2E6D,INVALC,0x2E6C,INVALC, INVALC,0x3476,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4967,INVALC,INVALC,INVALC,0x502A, INVALC,0x614E,0x614F,INVALC,INVALC,0x7036,0x212B,INVALC, INVALC,INVALC,INVALC,0x2158,0x2157,INVALC,INVALC,INVALC, INVALC,INVALC,0x2237,0x2238,0x2236,INVALC,0x2239,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2367,INVALC, 0x2362,0x2364,0x2366,0x2363,INVALC,0x2360,INVALC,0x2361, INVALC,INVALC,0x2365,0x2368,INVALC,0x2369,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2649,INVALC,0x2643, 0x263E,INVALC,0x2646,0x2644,0x263D,0x264A,0x264D,0x2648, 0x2641,INVALC,0x2647,INVALC,0x2642,0x2645,0x263C,0x2640, 0x264C,INVALC,INVALC,INVALC,INVALC,0x263F,0x264B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2A2C,0x2A25, 0x2A2B,0x2A24,0x2A26,0x297E,0x297C,INVALC,0x2A2D,0x2A2A, 0x297A,INVALC,INVALC,0x2A28,0x2A29,INVALC,0x2A27,0x297D, 0x297B,INVALC,0x2A23,0x2A21,INVALC,INVALC,0x2A22,0x2A2E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2E6E,INVALC,0x2E70,INVALC, INVALC,0x2E71,INVALC,INVALC,INVALC,INVALC,INVALC,0x2E72, 0x2A2F,0x2E74,INVALC,INVALC,INVALC,INVALC,INVALC,0x2E6F, /* Block 94, Array index 0x1000 */ 0x2E73,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3478,0x347C,0x347E,INVALC,0x3523, INVALC,INVALC,0x3525,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x347A,INVALC,INVALC,0x3479,0x3477,0x3527, 0x347B,INVALC,INVALC,0x3526,INVALC,0x3522,0x3521,INVALC, 0x347D,INVALC,INVALC,INVALC,INVALC,INVALC,0x3528,INVALC, 0x3524,0x3B4B,0x3B52,0x3B47,INVALC,0x3B43,0x3B53,0x3B3D, 0x3B50,0x3B4E,0x3B48,INVALC,0x3B51,0x3B4A,INVALC,0x3B42, 0x3B54,0x3B40,0x3B4D,0x3B3E,INVALC,0x3B55,INVALC,INVALC, INVALC,0x3B4F,0x4255,0x3B41,INVALC,INVALC,0x3B45,INVALC, INVALC,0x3B44,0x3B49,INVALC,INVALC,0x3B46,INVALC,INVALC, INVALC,0x3B4C,INVALC,INVALC,INVALC,INVALC,0x4259,INVALC, INVALC,INVALC,0x425C,0x4254,INVALC,0x4256,INVALC,0x425B, 0x425A,INVALC,INVALC,0x3B3F,0x4258,INVALC,INVALC,INVALC, INVALC,0x4253,0x4257,INVALC,INVALC,INVALC,INVALC,0x496E, INVALC,0x4975,0x496C,INVALC,0x4973,0x496A,0x4972,0x4976, 0x4969,0x496D,0x4968,INVALC,INVALC,INVALC,0x496B,INVALC, 0x4971,0x4970,0x496F,INVALC,INVALC,0x4974,INVALC,INVALC, INVALC,INVALC,0x502E,0x5030,INVALC,0x5031,INVALC,0x502C, INVALC,0x502B,0x5035,INVALC,0x5033,INVALC,0x5036,0x502D, 0x5032,0x5034,0x502F,INVALC,INVALC,INVALC,INVALC,0x566B, 0x5670,0x566A,0x566F,INVALC,0x5668,0x5672,0x566E,0x5673, 0x566D,0x5669,0x5671,INVALC,0x5674,0x566C,INVALC,0x5C66, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6150,INVALC,0x643E,0x6549,INVALC,INVALC,0x6870,0x6871, INVALC,INVALC,INVALC,0x6B57,INVALC,INVALC,INVALC,0x6B58, INVALC,0x6D4C,INVALC,INVALC,INVALC,0x6D4B,INVALC,INVALC, 0x6F25,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x223A, 0x236A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x425D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2A30,INVALC,INVALC,INVALC,INVALC,INVALC,0x213D, /* Block 95, Array index 0x1100 */ INVALC,INVALC,INVALC,INVALC,0x2159,INVALC,INVALC,INVALC, INVALC,INVALC,0x236B,INVALC,INVALC,INVALC,0x236C,INVALC, INVALC,INVALC,INVALC,INVALC,0x264F,INVALC,INVALC,0x264E, INVALC,0x2650,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2A34,0x2A31,0x2A32,0x2A33,0x2A35,INVALC,INVALC,INVALC, 0x2E76,0x2E75,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x352A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3529,INVALC, INVALC,0x3B57,INVALC,INVALC,0x3B56,INVALC,INVALC,INVALC, INVALC,INVALC,0x4260,0x4262,INVALC,0x4261,0x425F,0x425E, INVALC,INVALC,INVALC,0x4979,INVALC,INVALC,INVALC,INVALC, 0x4977,0x4978,INVALC,INVALC,0x503A,0x5038,INVALC,INVALC, 0x5039,INVALC,INVALC,INVALC,INVALC,INVALC,0x5677,0x5675, 0x5676,0x5037,0x5C68,INVALC,0x5C67,0x6151,0x6152,0x5678, 0x654A,INVALC,INVALC,INVALC,INVALC,0x223B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x215A,INVALC,0x215B,INVALC,0x223C,INVALC,INVALC,INVALC, 0x2370,0x236E,INVALC,0x236D,0x236F,0x2371,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2A39,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2A38,0x2A3A,0x2A37,0x2A3B,INVALC,INVALC, 0x2E77,INVALC,0x2E79,INVALC,0x2E7A,INVALC,0x2E78,INVALC, 0x2A36,0x352B,0x352E,0x352F,0x352C,INVALC,INVALC,INVALC, INVALC,0x352D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4263,0x4265,0x4267, INVALC,INVALC,INVALC,0x4266,0x4264,INVALC,0x497D,INVALC, INVALC,0x497B,0x4A23,INVALC,0x4A24,0x4A21,INVALC,0x497C, 0x497A,0x4A22,INVALC,0x503C,0x497E,INVALC,0x503D,INVALC, INVALC,0x503E,INVALC,INVALC,INVALC,0x567D,0x567B,0x567A, 0x567C,0x5679,INVALC,INVALC,INVALC,INVALC,0x6872,0x6873, INVALC,0x6B59,0x6D4D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 96, Array index 0x1200 */ INVALC,INVALC,0x223D,INVALC,INVALC,0x2372,INVALC,0x2A3C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x223E,INVALC,INVALC,0x2373,INVALC,INVALC, INVALC,INVALC,0x2652,0x2653,0x2654,INVALC,INVALC,INVALC, 0x2651,INVALC,INVALC,INVALC,INVALC,INVALC,0x2A3D,INVALC, 0x2E7C,INVALC,INVALC,0x2E7B,INVALC,INVALC,0x3530,INVALC, 0x3531,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4268,INVALC,INVALC,0x4A26,0x4A25,INVALC,INVALC,INVALC, INVALC,0x503F,INVALC,0x567E,INVALC,INVALC,INVALC,0x6F27, INVALC,INVALC,INVALC,INVALC,0x2655,INVALC,0x2A3E,INVALC, 0x3B58,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2E7D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A27, INVALC,INVALC,INVALC,0x212C,0x223F,INVALC,0x2375,INVALC, 0x2374,INVALC,INVALC,INVALC,INVALC,0x2658,0x2657,INVALC, INVALC,INVALC,0x2656,INVALC,INVALC,INVALC,0x2A3F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3533,INVALC, INVALC,INVALC,INVALC,0x3532,INVALC,INVALC,INVALC,0x3534, INVALC,INVALC,INVALC,INVALC,INVALC,0x3B5A,0x3B59,INVALC, INVALC,INVALC,INVALC,0x3B5B,INVALC,0x426A,INVALC,0x4269, INVALC,INVALC,0x5040,INVALC,INVALC,INVALC,0x4A28,INVALC, INVALC,INVALC,INVALC,0x5722,0x5721,INVALC,0x5C69,0x654B, 0x6874,0x6875,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x215C,INVALC,INVALC,INVALC,INVALC,INVALC,0x2242, 0x2378,0x2377,0x2376,INVALC,0x2241,0x2240,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2659,INVALC, INVALC,0x237D,INVALC,0x2421,0x237E,0x265A,INVALC,INVALC, 0x237A,INVALC,INVALC,INVALC,INVALC,0x2379,0x237B,0x2423, INVALC,INVALC,INVALC,0x237C,0x2427,INVALC,INVALC,0x2424, INVALC,INVALC,0x2422,0x2425,INVALC,INVALC,INVALC,INVALC, /* Block 97, Array index 0x1300 */ 0x2426,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x266E,0x2661,0x265F,0x266D,0x2668,INVALC,INVALC, 0x2669,0x266C,INVALC,0x266B,INVALC,INVALC,INVALC,0x2662, INVALC,0x265D,0x2664,INVALC,0x266F,INVALC,0x2665,INVALC, INVALC,INVALC,0x2667,INVALC,0x2A4E,INVALC,0x265C,INVALC, INVALC,INVALC,INVALC,INVALC,0x2666,0x265B,0x266A,INVALC, INVALC,INVALC,0x265E,0x2663,0x2660,INVALC,INVALC,0x2A40, INVALC,0x2A41,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2A4B,0x2F23,0x2A4C,INVALC,0x2A4F,0x2A45,INVALC,0x2A47, INVALC,0x2A48,INVALC,INVALC,0x2A4A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2A46,0x2A42,INVALC,INVALC,INVALC, 0x2A50,INVALC,0x2F21,0x2A49,INVALC,0x2E7E,0x2A44,0x2A4D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2A51,0x2F22, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2A52,INVALC, INVALC,INVALC,0x2A43,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2F26,0x2F28,INVALC,0x2F2A,INVALC,INVALC,0x3537,0x2F2E, 0x2F25,INVALC,0x3535,INVALC,INVALC,INVALC,0x2F30,INVALC, 0x3536,INVALC,0x2F27,INVALC,INVALC,0x2F2B,INVALC,0x2F2D, INVALC,INVALC,INVALC,0x2F2C,0x2F2F,0x2F29,INVALC,INVALC, INVALC,INVALC,0x2F24,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3539,0x3542,INVALC,INVALC,INVALC,INVALC,INVALC,0x3544, INVALC,0x3B5D,0x353A,INVALC,INVALC,INVALC,0x3538,0x3546, 0x3549,0x3B6C,INVALC,0x3547,0x3B61,INVALC,INVALC,INVALC, 0x3541,0x3B5C,0x3545,INVALC,0x3B5E,0x3548,0x3B60,0x353D, INVALC,INVALC,INVALC,0x353B,0x353C,INVALC,INVALC,INVALC, INVALC,0x353F,INVALC,0x3543,INVALC,0x3540,INVALC,INVALC, INVALC,INVALC,0x3B5F,INVALC,0x353E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3B63,INVALC,INVALC,0x3B67,INVALC,0x426B, 0x3B69,INVALC,INVALC,INVALC,0x3B6A,INVALC,0x3B6B,0x3B71, /* Block 98, Array index 0x1400 */ INVALC,INVALC,INVALC,0x3B6D,0x3B72,0x3B66,INVALC,INVALC, INVALC,INVALC,0x3B64,0x3B73,INVALC,INVALC,INVALC,INVALC, 0x3B70,INVALC,INVALC,0x3B68,0x3B62,INVALC,0x3B65,INVALC, 0x3B6E,INVALC,INVALC,INVALC,INVALC,0x3B6F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4A2A,0x4276,INVALC,0x426E,0x4A29,INVALC,0x4272,0x4274, INVALC,INVALC,0x4271,INVALC,INVALC,INVALC,0x4270,INVALC, INVALC,INVALC,INVALC,0x4A39,INVALC,INVALC,INVALC,INVALC, 0x4277,0x4A2B,INVALC,INVALC,INVALC,0x426F,0x4273,INVALC, INVALC,0x426C,0x426D,INVALC,INVALC,INVALC,INVALC,0x4275, INVALC,INVALC,0x4A2F,0x4A30,0x4A35,INVALC,0x4A3C,INVALC, INVALC,INVALC,INVALC,0x4A37,INVALC,INVALC,0x4A2C,INVALC, INVALC,0x4A3B,INVALC,INVALC,INVALC,0x4A38,0x5051,INVALC, INVALC,INVALC,0x4A3A,INVALC,0x4A32,INVALC,INVALC,INVALC, INVALC,0x4A2D,0x4A31,0x4A2E,0x4A34,INVALC,INVALC,INVALC, INVALC,0x5043,0x4A36,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4A33,INVALC,INVALC,0x5042,INVALC,INVALC,INVALC,INVALC, INVALC,0x5047,INVALC,0x5041,0x572E,0x5050,INVALC,INVALC, INVALC,INVALC,0x504D,0x5049,INVALC,INVALC,0x5725,INVALC, INVALC,INVALC,INVALC,0x5048,INVALC,0x5723,INVALC,0x504C, INVALC,0x504F,0x5046,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5724,INVALC,0x504E,INVALC,INVALC,0x504B,INVALC,0x504A, 0x5045,0x5044,INVALC,0x5052,0x5727,0x5C6B,INVALC,INVALC, 0x572D,INVALC,0x572B,INVALC,0x5C6C,INVALC,INVALC,0x572C, INVALC,0x5729,INVALC,0x5C6A,INVALC,0x5726,0x5728,INVALC, INVALC,INVALC,INVALC,INVALC,0x572A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x615B,INVALC, 0x6153,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C72,0x6154, 0x5C6E,INVALC,INVALC,INVALC,0x5C70,0x5C6F,INVALC,0x5C6D, 0x5C71,0x615C,0x6158,0x615A,INVALC,0x6155,0x6156,INVALC, 0x6159,0x6157,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6876,INVALC,0x654C,INVALC,0x6B5A,INVALC,INVALC, /* Block 99, Array index 0x1500 */ INVALC,0x6F28,INVALC,0x6F29,0x6F2A,INVALC,INVALC,0x722A, INVALC,0x215D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2670,INVALC,INVALC,INVALC, INVALC,0x2F31,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4278,INVALC,INVALC,0x427A,0x427C,0x427B,INVALC,0x4A3E, INVALC,0x4A3D,INVALC,0x4A3F,INVALC,0x5053,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2428,INVALC,INVALC,0x2671,INVALC,INVALC, INVALC,INVALC,0x2A53,0x2A54,INVALC,INVALC,0x2F32,INVALC, INVALC,INVALC,0x3B74,INVALC,INVALC,INVALC,INVALC,INVALC, 0x215E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2249,0x224B,INVALC,0x2243,INVALC,0x2244,INVALC, 0x224A,0x2246,0x2248,INVALC,0x2245,0x224C,0x2247,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2432,0x242F,0x2437,INVALC,0x2438,INVALC,INVALC,0x2435, INVALC,INVALC,0x2431,0x2430,INVALC,0x2436,INVALC,INVALC, INVALC,0x2433,INVALC,0x2429,INVALC,INVALC,INVALC,0x242E, 0x2434,INVALC,INVALC,INVALC,0x242A,INVALC,0x242B,0x242C, INVALC,INVALC,INVALC,INVALC,0x242D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x267D,0x2676,INVALC,INVALC,0x2672,0x2679,0x267B, 0x267E,INVALC,INVALC,0x267A,0x2673,INVALC,0x2677,INVALC, 0x2721,INVALC,INVALC,0x267C,INVALC,INVALC,0x2675,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2678,INVALC,INVALC,INVALC,INVALC,0x2A55, INVALC,0x2674,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2A5B,INVALC,INVALC,INVALC,INVALC, 0x2A67,INVALC,0x2F33,INVALC,INVALC,0x2A58,0x2A60,INVALC, 0x2A5F,0x2A5C,0x2A64,0x2A66,INVALC,INVALC,INVALC,INVALC, /* Block 100, Array index 0x1600 */ 0x2A61,INVALC,INVALC,0x2A5A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2A57,0x2A5E,0x2A56,0x2A59,0x2A5D, 0x2F34,INVALC,INVALC,0x2A62,0x2A63,0x2A65,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2F40,INVALC,INVALC,0x2F36,0x2F46,INVALC,INVALC, INVALC,INVALC,0x354A,0x2F48,0x2F42,INVALC,0x2F39,INVALC, 0x2F4B,0x2F3C,INVALC,0x3561,0x2F3F,INVALC,INVALC,INVALC, 0x2F4D,0x2F41,INVALC,0x2F3A,0x2F37,0x2F38,INVALC,0x2F47, 0x2F4E,INVALC,0x2F3E,0x2F3D,INVALC,INVALC,INVALC,INVALC, INVALC,0x2F4A,INVALC,INVALC,0x2F44,INVALC,0x2F35,0x2F4C, 0x2F43,0x2F45,0x2F49,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x354B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x355D,0x3559,0x3556, 0x3568,INVALC,INVALC,INVALC,INVALC,0x355B,INVALC,INVALC, 0x3563,INVALC,INVALC,INVALC,0x355F,0x354E,INVALC,INVALC, INVALC,0x3565,0x354D,INVALC,INVALC,0x3564,INVALC,0x3557, INVALC,INVALC,0x354C,INVALC,INVALC,0x3567,0x3555,INVALC, 0x3558,0x3566,INVALC,INVALC,0x3B75,INVALC,INVALC,0x3553, INVALC,INVALC,INVALC,INVALC,0x355C,0x3552,0x3550,0x3562, INVALC,INVALC,INVALC,INVALC,0x3560,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3554,INVALC,0x3551,0x355E,0x355A, 0x3B77,0x3B76,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x354F,0x3C29,INVALC, INVALC,INVALC,0x3C2F,0x3B7C,0x3C2C,0x427D,INVALC,0x3C30, 0x3C33,INVALC,0x3C21,0x3C32,0x3C31,INVALC,0x3B78,INVALC, INVALC,INVALC,INVALC,0x3C2E,INVALC,0x3C24,INVALC,0x3C35, 0x3C2D,0x3C36,INVALC,INVALC,0x3C2B,0x3C2A,INVALC,0x3C28, 0x3C22,INVALC,INVALC,INVALC,0x2F3B,0x3B79,INVALC,0x433D, 0x3B7A,INVALC,INVALC,0x4321,INVALC,INVALC,INVALC,0x3B7B, 0x3C34,0x427E,0x3C25,0x3B7E,INVALC,0x3C26,0x3C23,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 101, Array index 0x1700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4324,0x4337,0x433C,0x4330,INVALC,0x4341,INVALC, 0x4322,INVALC,0x4323,INVALC,INVALC,0x432A,INVALC,INVALC, 0x432B,INVALC,0x4338,0x433E,INVALC,INVALC,INVALC,0x4329, 0x4325,0x4340,0x432E,0x432F,0x4326,0x433A,0x4331,0x433B, 0x4333,INVALC,INVALC,0x4A40,INVALC,INVALC,0x433F,0x4336, 0x4332,INVALC,INVALC,0x4327,INVALC,0x4335,INVALC,0x432D, INVALC,0x432C,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A55, 0x4339,0x4334,INVALC,0x4328,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4A50,INVALC,0x4A41,0x4A4C,INVALC, 0x4A53,INVALC,INVALC,0x4A51,INVALC,INVALC,INVALC,INVALC, INVALC,0x4A58,INVALC,0x4A42,0x4A4F,0x4A43,0x4A4E,INVALC, 0x4A52,0x3C27,INVALC,INVALC,INVALC,0x4A59,0x4A4A,INVALC, 0x5061,INVALC,INVALC,0x4A57,0x4A56,INVALC,0x5054,INVALC, 0x5055,INVALC,0x4A46,0x4A47,0x4A44,0x4A49,0x4A45,0x4A5A, INVALC,INVALC,INVALC,INVALC,INVALC,0x4A48,INVALC,0x4A54, INVALC,INVALC,0x4A4D,INVALC,INVALC,0x5058,INVALC,INVALC, INVALC,0x5735,0x505D,0x505C,0x505E,INVALC,INVALC,0x505B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5056,0x5059, 0x5063,INVALC,INVALC,INVALC,0x505A,0x3B7D,INVALC,0x5060, 0x5057,INVALC,INVALC,0x505F,INVALC,INVALC,0x4A4B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5062,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5734,INVALC,INVALC, INVALC,INVALC,INVALC,0x5736,INVALC,INVALC,INVALC,INVALC, INVALC,0x5733,INVALC,INVALC,INVALC,INVALC,INVALC,0x5732, 0x5731,INVALC,INVALC,INVALC,INVALC,INVALC,0x5730,0x572F, INVALC,0x5739,INVALC,0x5737,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5C75,0x5C77,INVALC,INVALC,INVALC, 0x5C78,0x5C74,INVALC,0x5C76,INVALC,INVALC,INVALC,0x5C73, INVALC,INVALC,INVALC,0x5738,INVALC,INVALC,INVALC,INVALC, 0x6160,INVALC,INVALC,INVALC,0x6163,0x615F,INVALC,0x615D, /* Block 102, Array index 0x1800 */ INVALC,0x6161,INVALC,0x6162,0x615E,INVALC,INVALC,0x654D, INVALC,0x6550,INVALC,INVALC,0x6551,0x654F,0x6552,INVALC, 0x654E,INVALC,INVALC,0x687A,INVALC,0x6879,0x6878,0x6877, INVALC,INVALC,INVALC,0x6B5B,INVALC,INVALC,INVALC,INVALC, 0x6D4F,0x6D4E,0x6D51,INVALC,INVALC,0x6F2C,0x6D50,INVALC, INVALC,0x6F2B,INVALC,INVALC,INVALC,0x7037,0x707D,INVALC, INVALC,INVALC,0x3C37,0x573A,INVALC,INVALC,INVALC,0x224D, INVALC,INVALC,INVALC,INVALC,INVALC,0x2722,INVALC,INVALC, INVALC,0x2A68,INVALC,0x2A69,INVALC,INVALC,0x2F50,INVALC, INVALC,INVALC,0x2F4F,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3569,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3C3B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3C3A,0x3C3D,INVALC,0x3C38, 0x3C3C,INVALC,0x3C39,INVALC,INVALC,INVALC,INVALC,0x4342, INVALC,INVALC,INVALC,0x4A5B,INVALC,INVALC,0x5064,INVALC, INVALC,0x5066,0x5065,0x5067,0x573C,INVALC,INVALC,0x573B, 0x5C7A,0x5C79,INVALC,INVALC,0x6553,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3C3E,INVALC,INVALC,INVALC, INVALC,INVALC,0x4343,INVALC,0x6164,INVALC,0x6F2D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3C3F,0x3C40,INVALC, 0x4A5C,INVALC,0x573D,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2723,INVALC,0x2A6A,INVALC,INVALC,INVALC,0x3C41,INVALC, INVALC,INVALC,0x5068,0x5069,INVALC,INVALC,0x5C7B,INVALC, 0x707E,INVALC,INVALC,0x2724,INVALC,INVALC,INVALC,0x2A6B, INVALC,INVALC,0x2F54,0x2F52,0x2F53,INVALC,0x2F51,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x356A,INVALC,INVALC, 0x3C42,INVALC,0x3C43,0x4344,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5C7C,0x6165,INVALC,0x6555,0x6554,0x687B, INVALC,0x213E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x224F,0x224E, 0x2439,INVALC,0x243C,0x243B,0x243A,0x243D,INVALC,INVALC, INVALC,INVALC,INVALC,0x272A,0x2726,0x272F,INVALC,INVALC, /* Block 103, Array index 0x1900 */ INVALC,INVALC,INVALC,0x272B,0x2727,0x272E,INVALC,INVALC, 0x2729,0x2725,INVALC,0x272C,INVALC,0x272D,INVALC,INVALC, 0x2731,0x2730,0x2728,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2A70,0x2A76,INVALC,INVALC, INVALC,0x2A6D,0x2A72,INVALC,INVALC,INVALC,0x2A71,INVALC, INVALC,INVALC,INVALC,0x2A74,INVALC,INVALC,0x2A79,INVALC, INVALC,INVALC,0x2A6E,0x2A73,0x2A77,0x2A6F,0x2A6C,INVALC, INVALC,0x2A78,0x2A75,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2F57, INVALC,INVALC,0x2F55,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2F58,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x356E,INVALC,0x356D,0x356F,INVALC,INVALC,0x2F56, INVALC,0x356C,0x3570,INVALC,INVALC,0x356B,INVALC,INVALC, INVALC,INVALC,0x3C4A,INVALC,0x3C45,INVALC,INVALC,INVALC, INVALC,0x3C48,0x3C4B,INVALC,INVALC,INVALC,INVALC,INVALC, 0x434D,0x3C49,INVALC,0x3C46,0x3C44,INVALC,INVALC,INVALC, 0x3C47,INVALC,INVALC,INVALC,INVALC,INVALC,0x4345,INVALC, INVALC,INVALC,0x434A,0x4349,0x4346,INVALC,INVALC,INVALC, 0x4348,INVALC,INVALC,INVALC,0x434C,0x4347,INVALC,INVALC, INVALC,0x434B,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A5F, 0x4A5E,0x4A5D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x506C,0x506F,INVALC,INVALC,INVALC,INVALC,0x5070, 0x506B,INVALC,0x506D,INVALC,INVALC,0x506A,INVALC,0x506E, INVALC,INVALC,0x5746,0x5745,INVALC,0x5744,0x573F,INVALC, 0x5740,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x573E,INVALC,0x5741,0x5742,0x5747,INVALC,INVALC,0x5743, INVALC,INVALC,0x5C7D,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6168,INVALC,0x6166,0x6167,INVALC,INVALC,0x6556,INVALC, INVALC,INVALC,INVALC,0x687D,0x687E,INVALC,INVALC,INVALC, 0x687C,INVALC,INVALC,0x6F2E,INVALC,0x7038,0x7039,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2732,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 104, Array index 0x1A00 */ INVALC,0x3C4C,INVALC,INVALC,0x4A61,0x4A60,INVALC,INVALC, INVALC,INVALC,0x2733,INVALC,INVALC,INVALC,INVALC,0x2A7A, 0x2A7B,INVALC,0x2F59,0x2F5A,INVALC,INVALC,INVALC,INVALC, 0x3571,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x434E,0x4641,0x4A62,0x5748,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2257,INVALC,INVALC,INVALC,INVALC, 0x2252,0x2251,0x2254,0x2253,0x2256,INVALC,0x2250,0x2255, INVALC,INVALC,INVALC,INVALC,INVALC,0x243E,INVALC,0x243F, 0x2443,INVALC,INVALC,0x2447,0x2442,0x2445,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2441,INVALC,INVALC, INVALC,0x2440,0x2446,INVALC,INVALC,0x2444,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2735,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x273D,INVALC,0x2738,INVALC, 0x2747,0x2748,0x2740,0x2739,INVALC,0x2745,INVALC,INVALC, INVALC,0x2746,INVALC,0x2744,0x273C,0x2734,0x273B,INVALC, INVALC,INVALC,INVALC,INVALC,0x273F,0x273E,0x2736,INVALC, INVALC,0x2742,0x2737,INVALC,0x2749,INVALC,INVALC,INVALC, 0x273A,0x2743,INVALC,INVALC,INVALC,INVALC,INVALC,0x2741, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2B3D,INVALC, INVALC,INVALC,0x2B38,0x2B2E,INVALC,0x2B2C,INVALC,0x2B27, INVALC,0x2B34,0x2B21,0x2B23,INVALC,INVALC,INVALC,INVALC, 0x2B26,0x2A7C,0x2B33,0x2B43,INVALC,0x2B28,0x2B3A,INVALC, 0x2A7E,0x2B41,0x2B42,0x2B45,0x2B3C,0x2B2D,0x2B35,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2B25,INVALC,INVALC,0x2B3F,0x2B22,INVALC,INVALC,0x2B2B, INVALC,INVALC,INVALC,0x2B32,0x2B2A,INVALC,0x2B3E,0x2B36, INVALC,INVALC,0x2B44,0x2B29,INVALC,0x2B3B,0x2B31,INVALC, 0x2B37,INVALC,0x2A7D,INVALC,INVALC,INVALC,0x2B30,0x2B2F, 0x2B24,INVALC,0x2B40,INVALC,0x2B39,INVALC,INVALC,INVALC, /* Block 105, Array index 0x1B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2F6E,INVALC,0x2F6F,INVALC,0x2F63,INVALC, INVALC,INVALC,0x2F5C,INVALC,0x2F65,0x2F6D,INVALC,0x2F5B, 0x2F76,INVALC,INVALC,INVALC,INVALC,0x2F75,0x2F70,INVALC, 0x2F71,INVALC,INVALC,0x2F67,INVALC,0x2F68,0x2F72,0x2F69, INVALC,0x2F64,0x2F5E,0x2F5F,0x2F6C,0x2F66,INVALC,INVALC, INVALC,INVALC,0x2F74,0x2F60,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2F6B,INVALC,INVALC,INVALC, INVALC,0x2F5D,INVALC,0x2F61,INVALC,0x2F73,0x2F6A,0x2F62, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3628,INVALC,0x3576,0x3577,0x357B, INVALC,0x362C,0x3629,INVALC,0x3622,0x3621,INVALC,0x3625, 0x3634,0x3572,INVALC,0x3635,0x3627,0x3639,0x362D,INVALC, 0x362B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3573, INVALC,0x3632,0x3638,0x3630,0x3637,INVALC,INVALC,0x3624, 0x3574,0x3636,0x3626,INVALC,INVALC,INVALC,0x362F,INVALC, INVALC,INVALC,INVALC,0x362E,0x3575,INVALC,INVALC,INVALC, 0x3631,INVALC,INVALC,0x357C,0x3633,INVALC,INVALC,INVALC, INVALC,0x357E,0x362A,0x3579,0x357D,INVALC,0x3578,INVALC, INVALC,INVALC,0x3623,INVALC,0x3C63,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3C66,0x3C7C, 0x3C71,INVALC,INVALC,INVALC,0x3C60,INVALC,0x3C70,INVALC, 0x3C69,0x3C76,INVALC,0x3C4E,0x3C78,INVALC,0x3C56,INVALC, INVALC,INVALC,INVALC,INVALC,0x3C50,0x3C72,0x3C73,INVALC, INVALC,0x3C5E,INVALC,INVALC,0x3C59,INVALC,0x3C74,INVALC, 0x3C6C,0x3C79,0x3C53,0x3C58,0x3C52,INVALC,INVALC,0x3C65, 0x4364,0x3C54,INVALC,0x3C5D,0x3C75,INVALC,0x3C5A,0x3C57, 0x3C68,INVALC,INVALC,INVALC,0x3C6B,0x3C6A,INVALC,INVALC, /* Block 106, Array index 0x1C00 */ INVALC,INVALC,INVALC,INVALC,0x3C4F,INVALC,0x3C77,0x3C5F, 0x3C61,INVALC,0x3C6E,0x3C6D,0x3C4D,INVALC,INVALC,0x3C55, 0x3C5C,0x3C64,INVALC,0x3C5B,0x3C67,0x3C7A,INVALC,0x3C6F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3C7B,INVALC,INVALC, INVALC,INVALC,0x3C51,INVALC,INVALC,INVALC,INVALC,0x4378, INVALC,INVALC,0x4376,0x4361,0x4366,0x435F,INVALC,0x4372, 0x4351,0x4358,INVALC,0x4370,0x437A,0x4362,INVALC,0x4355, 0x4368,0x436D,0x4359,INVALC,0x436A,0x4356,INVALC,INVALC, 0x435D,0x435E,INVALC,0x4371,0x436F,INVALC,0x4352,0x4374, INVALC,0x4375,0x4377,INVALC,INVALC,INVALC,0x357A,0x435A, 0x436C,0x435B,INVALC,INVALC,0x4373,INVALC,INVALC,0x4350, INVALC,INVALC,0x4353,INVALC,INVALC,0x4363,0x434F,INVALC, INVALC,0x4367,0x4357,INVALC,0x4360,INVALC,INVALC,0x4369, 0x3C62,0x4354,INVALC,INVALC,0x436E,INVALC,0x436B,INVALC, 0x4365,INVALC,0x435C,0x4379,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x452C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4A70,0x4A6E,INVALC, 0x4B26,0x4A6C,INVALC,0x4A7E,INVALC,INVALC,0x4A68,0x4B25, INVALC,0x4A6D,0x4A7B,INVALC,INVALC,INVALC,0x4B23,INVALC, 0x4A66,0x4B22,INVALC,INVALC,0x4A77,0x4B29,INVALC,0x4A6F, INVALC,0x4A71,0x4B21,INVALC,0x4A6A,INVALC,INVALC,0x4A73, 0x4A69,0x4A63,INVALC,0x4A7D,INVALC,0x4B28,0x4A64,INVALC, INVALC,0x4A79,INVALC,INVALC,0x4A6B,0x4A76,0x4A72,0x4A74, INVALC,INVALC,0x4B27,INVALC,0x4A75,INVALC,0x4B2A,INVALC, INVALC,0x4A65,0x4A7A,INVALC,INVALC,INVALC,0x4A67,0x4A7C, INVALC,INVALC,INVALC,INVALC,0x4A78,INVALC,INVALC,INVALC, INVALC,0x4B24,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x507C,INVALC,0x5078,0x5074,0x512A,0x5127, INVALC,INVALC,INVALC,0x512E,0x507B,INVALC,0x5124,INVALC, INVALC,0x5077,0x5123,INVALC,0x5137,INVALC,0x5134,0x5126, 0x5075,INVALC,INVALC,0x512B,0x512D,INVALC,0x5121,0x507A, /* Block 107, Array index 0x1D00 */ 0x5071,INVALC,INVALC,INVALC,0x5130,INVALC,0x5072,0x5136, 0x5129,0x512F,INVALC,INVALC,INVALC,0x512C,INVALC,0x5133, INVALC,INVALC,INVALC,INVALC,0x5125,0x5076,0x5138,0x5073, 0x5131,INVALC,INVALC,0x507D,INVALC,0x507E,INVALC,INVALC, 0x5079,INVALC,INVALC,INVALC,INVALC,0x5132,0x5135,0x5122, 0x5755,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x574D,INVALC,0x5749,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5757,0x5762,INVALC,0x574F,0x5758, 0x5128,0x5759,INVALC,INVALC,INVALC,INVALC,0x5768,INVALC, INVALC,0x574B,INVALC,INVALC,INVALC,0x5766,0x5767,0x575D, 0x575C,0x5754,INVALC,INVALC,0x575E,0x5765,0x5764,INVALC, INVALC,INVALC,0x5756,0x5753,INVALC,0x5750,0x5763,INVALC, 0x5761,INVALC,INVALC,INVALC,0x575B,INVALC,0x574A,0x574C, 0x574E,0x5760,0x575A,INVALC,INVALC,0x5751,INVALC,0x575F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5752,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5D31, INVALC,0x5D22,INVALC,0x5D2D,INVALC,0x5D34,INVALC,0x5D29, INVALC,0x5D24,INVALC,INVALC,0x5D35,0x5C7E,0x5D2B,INVALC, INVALC,0x5D30,0x5D36,0x5D2A,INVALC,0x5D2C,0x5D21,INVALC, INVALC,INVALC,0x5D33,0x5D26,INVALC,INVALC,0x5D28,0x5D25, INVALC,0x5D27,INVALC,INVALC,0x5D2F,0x5D23,0x5D32,INVALC, 0x5D2E,INVALC,INVALC,INVALC,INVALC,0x6173,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6172,INVALC,0x616F,0x6170, INVALC,0x616A,0x616E,INVALC,INVALC,0x616B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6169,0x616D,0x6171, INVALC,INVALC,INVALC,0x655C,0x6559,0x6562,INVALC,0x6561, 0x655F,0x655A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x655B,INVALC,INVALC,0x655E,INVALC,0x6563,0x655D, 0x6558,0x616C,INVALC,INVALC,INVALC,INVALC,INVALC,0x6557, 0x6924,INVALC,0x6923,0x6560,INVALC,INVALC,0x6927,0x6928, 0x6922,0x6926,INVALC,0x6921,INVALC,INVALC,INVALC,INVALC, 0x6B5F,0x6925,INVALC,INVALC,0x6B5D,INVALC,INVALC,INVALC, /* Block 108, Array index 0x1E00 */ 0x6B60,INVALC,0x6B5C,0x6B5E,INVALC,INVALC,INVALC,INVALC, 0x6D53,0x6D54,INVALC,0x6D52,INVALC,INVALC,INVALC,0x6F31, INVALC,0x6F2F,0x6F30,0x703A,INVALC,INVALC,INVALC,0x7123, 0x7121,0x7122,0x7124,INVALC,INVALC,INVALC,0x722B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x274A,INVALC,INVALC, 0x2B46,INVALC,INVALC,INVALC,0x2F77,0x2F79,INVALC,0x2F78, INVALC,0x2F7A,INVALC,0x363B,0x2F7B,INVALC,0x363A,0x363C, 0x363D,0x3C7D,INVALC,0x3C7E,0x3D22,INVALC,INVALC,0x3D21, INVALC,0x4422,0x437E,0x437D,INVALC,0x437C,0x437B,INVALC, 0x4421,INVALC,0x4B2B,0x4B2D,INVALC,0x4B2C,INVALC,INVALC, INVALC,0x5139,INVALC,INVALC,0x576A,0x5769,0x576B,INVALC, INVALC,INVALC,INVALC,0x5D37,INVALC,INVALC,0x6174,INVALC, 0x6564,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2F7C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5259,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x274C,INVALC, 0x274B,INVALC,0x2B47,INVALC,0x2B48,INVALC,INVALC,INVALC, 0x2F7E,INVALC,INVALC,INVALC,0x3642,0x3640,0x3641,0x363F, INVALC,0x363E,INVALC,INVALC,0x3D23,0x3D26,INVALC,0x3D24, INVALC,0x3D25,INVALC,0x4423,INVALC,INVALC,0x4B2E,0x4B2F, 0x4B30,INVALC,0x513C,0x513B,INVALC,0x513A,0x513D,0x576C, INVALC,INVALC,0x576D,0x576E,INVALC,0x5D38,INVALC,INVALC, 0x6565,INVALC,INVALC,0x213F,INVALC,INVALC,0x2B49,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3D27,INVALC,INVALC, INVALC,INVALC,INVALC,0x4B31,0x4B32,INVALC,INVALC,0x5770, 0x576F,0x6175,0x6F32,INVALC,0x2140,INVALC,INVALC,INVALC, 0x2448,INVALC,INVALC,INVALC,INVALC,INVALC,0x2B4A,INVALC, 0x2B4B,INVALC,INVALC,INVALC,INVALC,INVALC,0x274D,INVALC, 0x2B4C,INVALC,0x3025,0x3024,0x3022,INVALC,0x3021,0x3026, 0x3023,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3D28,INVALC,0x3D29,0x3D2A,INVALC,INVALC,INVALC,0x4427, 0x4428,0x4426,INVALC,0x4424,0x4425,INVALC,0x4B33,0x5140, /* Block 109, Array index 0x1F00 */ 0x513F,0x513E,0x5141,0x5772,0x5771,INVALC,0x5773,INVALC, INVALC,0x5D39,INVALC,0x6176,0x6566,0x6D55,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2141,0x215F,INVALC,INVALC, 0x2258,0x2449,0x244A,INVALC,INVALC,0x274E,INVALC,INVALC, 0x2B4D,0x2B4E,INVALC,INVALC,INVALC,0x3027,INVALC,INVALC, INVALC,INVALC,0x3643,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3D2B,INVALC,INVALC,INVALC,INVALC,INVALC,0x2160,INVALC, INVALC,INVALC,INVALC,0x2163,INVALC,INVALC,INVALC,0x2162, INVALC,INVALC,INVALC,0x2161,INVALC,INVALC,0x2259,INVALC, INVALC,INVALC,0x225D,0x225F,0x2260,INVALC,INVALC,0x225C, INVALC,INVALC,0x225A,INVALC,0x225E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x225B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x245B,0x2459,0x244C, INVALC,0x2453,INVALC,0x244D,INVALC,0x2455,INVALC,0x2452, INVALC,0x2451,INVALC,0x245A,INVALC,INVALC,INVALC,INVALC, 0x244B,INVALC,INVALC,0x245C,INVALC,INVALC,INVALC,INVALC, 0x2765,INVALC,INVALC,INVALC,0x244E,INVALC,INVALC,0x2456, INVALC,INVALC,0x2763,0x244F,INVALC,INVALC,0x245D,0x2450, INVALC,INVALC,INVALC,0x274F,INVALC,0x2457,INVALC,INVALC, INVALC,INVALC,0x2454,INVALC,0x2458,0x2764,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2756,INVALC,INVALC, 0x276B,INVALC,INVALC,INVALC,0x2762,INVALC,0x2754,0x2758, INVALC,INVALC,0x275B,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2767,INVALC,0x275A,0x275C,INVALC,INVALC,0x275D,0x276A, INVALC,INVALC,INVALC,INVALC,INVALC,0x2769,INVALC,0x276D, 0x2759,0x276F,0x2760,INVALC,0x2755,INVALC,INVALC,INVALC, INVALC,0x2753,0x2B57,INVALC,INVALC,0x2761,0x2766,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2757, INVALC,0x276E,INVALC,0x2751,0x2750,0x275E,0x2752,INVALC, INVALC,INVALC,0x275F,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x276C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 110, Array index 0x2000 */ 0x2B5E,0x2B61,INVALC,0x2B64,0x2B59,INVALC,INVALC,0x2B67, 0x2B6A,0x2B6C,0x2B56,INVALC,INVALC,0x302C,INVALC,0x2B65, 0x2B6D,0x2B5D,0x2B55,INVALC,INVALC,INVALC,0x3047,INVALC, 0x2B62,0x2B5A,0x2B5C,INVALC,INVALC,0x2B5F,INVALC,0x2B52, 0x2B68,INVALC,0x2B6B,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2B4F,INVALC,INVALC,INVALC,0x2B69,0x2B51,INVALC,0x3041, 0x2768,INVALC,INVALC,0x2B58,0x2B50,INVALC,INVALC,0x2B63, INVALC,INVALC,0x2B5B,INVALC,0x2B53,INVALC,INVALC,0x2B54, 0x2B66,INVALC,0x2B60,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x302F,INVALC,INVALC,INVALC,INVALC,INVALC,0x3038,0x303E, 0x303A,0x302D,0x3030,0x3029,0x302A,INVALC,INVALC,0x3039, 0x3042,INVALC,INVALC,INVALC,INVALC,0x3031,INVALC,0x3032, 0x303C,INVALC,INVALC,INVALC,INVALC,0x304B,0x302B,INVALC, INVALC,INVALC,0x3028,0x3049,0x303D,0x304A,0x3044,0x3036, 0x3045,INVALC,0x303F,0x3048,0x3046,INVALC,0x3037,INVALC, INVALC,INVALC,INVALC,0x3043,INVALC,0x3034,INVALC,INVALC, 0x304C,0x3033,0x302E,INVALC,INVALC,INVALC,INVALC,0x303B, 0x3040,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3645,0x3649,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3647,0x3646,INVALC,INVALC,0x364C, INVALC,INVALC,0x365E,0x366A,INVALC,0x365B,0x3654,INVALC, 0x3644,INVALC,0x3660,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3650,0x3662,0x365A,INVALC,INVALC,0x3668,INVALC,0x3661, 0x3663,INVALC,INVALC,0x3665,0x364E,0x365F,0x3653,0x3667, INVALC,INVALC,INVALC,0x3658,0x3656,0x3657,INVALC,0x3652, 0x3651,INVALC,0x364B,0x3669,INVALC,0x3655,INVALC,INVALC, INVALC,0x364A,INVALC,INVALC,INVALC,0x365C,INVALC,0x3035, 0x365D,INVALC,0x3664,INVALC,0x3659,INVALC,0x364D,INVALC, INVALC,INVALC,INVALC,INVALC,0x3D2C,0x3666,INVALC,INVALC, /* Block 111, Array index 0x2100 */ 0x364F,INVALC,INVALC,0x3D41,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3D3B,INVALC,INVALC,0x3D2F, INVALC,INVALC,0x3D4D,INVALC,INVALC,INVALC,INVALC,0x3D51, 0x3D48,INVALC,INVALC,0x3D36,INVALC,INVALC,0x3D42,INVALC, 0x3D4E,0x3D47,INVALC,0x3D3C,INVALC,0x3D59,0x3D5A,INVALC, INVALC,0x3D4C,INVALC,0x3D40,0x3D32,0x3D33,INVALC,0x3D37, 0x3D3E,0x3D38,INVALC,INVALC,INVALC,0x3D34,0x3D2D,0x3D2E, INVALC,0x3D30,INVALC,0x3D3D,INVALC,INVALC,INVALC,INVALC, INVALC,0x3D3F,0x3D57,0x3D4F,INVALC,0x3D55,INVALC,INVALC, INVALC,INVALC,0x3D5B,INVALC,0x3D45,0x3D39,0x3D43,INVALC, 0x3D49,0x3D46,0x3D35,INVALC,0x3D53,0x3D50,0x3D58,INVALC, 0x3D44,INVALC,INVALC,0x3D4B,INVALC,INVALC,INVALC,INVALC, INVALC,0x3D4A,INVALC,0x3D3A,0x3648,INVALC,INVALC,0x3D54, 0x3D52,0x3D56,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3D31,INVALC,INVALC,INVALC,INVALC,0x4447,0x4446,0x442C, INVALC,INVALC,0x4445,0x442F,0x4430,INVALC,INVALC,0x444E, INVALC,0x4444,INVALC,0x4429,INVALC,INVALC,0x4438,0x442E, 0x4431,0x4449,INVALC,0x4450,0x4448,INVALC,0x443D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x444F,INVALC, 0x443B,0x4432,0x443F,0x444B,INVALC,INVALC,INVALC,0x443A, INVALC,0x4433,INVALC,INVALC,INVALC,0x4436,0x4440,0x444A, 0x442D,0x4437,INVALC,0x4441,INVALC,INVALC,0x4434,INVALC, 0x442B,0x4439,0x444D,INVALC,INVALC,0x443C,0x4B34,0x443E, 0x444C,INVALC,0x4435,INVALC,INVALC,INVALC,0x442A,INVALC, 0x4443,INVALC,INVALC,INVALC,0x4442,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4B50,INVALC,0x4B45,0x4B4A,INVALC, INVALC,0x4B36,INVALC,INVALC,INVALC,0x4B35,0x4B56,INVALC, 0x4B39,0x4B49,INVALC,0x4B3B,0x4B59,0x4B55,INVALC,INVALC, /* Block 112, Array index 0x2200 */ 0x515B,INVALC,INVALC,0x4B37,INVALC,0x4B54,INVALC,0x4B51, 0x4B5E,0x4B3D,0x4B46,INVALC,INVALC,0x4B5C,0x4B52,INVALC, INVALC,INVALC,0x4B44,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4B42,0x4B3F,0x4B40,INVALC,0x4B58,INVALC,0x4B5D,0x4B5B, INVALC,0x4B5F,INVALC,INVALC,INVALC,0x4B38,0x5143,0x4B41, INVALC,INVALC,INVALC,INVALC,INVALC,0x4B4B,0x4B3C,INVALC, 0x4B4D,INVALC,INVALC,INVALC,INVALC,0x4B4F,0x4B47,0x4B3A, INVALC,0x4B57,0x4B5A,0x4B43,0x4B4E,INVALC,INVALC,INVALC, 0x4B4C,0x5142,INVALC,0x4B53,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4B3E,0x514C, 0x5156,INVALC,0x5155,0x5161,INVALC,0x5153,INVALC,0x5157, INVALC,INVALC,0x514E,INVALC,INVALC,0x515A,0x577B,INVALC, INVALC,0x515C,0x514B,0x5166,INVALC,INVALC,INVALC,0x515F, INVALC,0x5163,0x5168,0x515D,0x5151,INVALC,INVALC,INVALC, INVALC,INVALC,0x5154,0x4B48,INVALC,INVALC,0x5150,0x5167, INVALC,INVALC,INVALC,0x5169,INVALC,0x515E,0x5144,0x5164, INVALC,INVALC,0x5152,INVALC,INVALC,0x514D,INVALC,0x5145, INVALC,0x5149,INVALC,0x5162,0x514A,0x5148,INVALC,INVALC, 0x5160,INVALC,0x5147,0x5159,0x5158,0x5165,0x514F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x577E,INVALC, INVALC,INVALC,0x582C,0x5776,INVALC,0x5824,INVALC,INVALC, 0x5822,0x5D3B,0x5828,0x582E,0x5827,0x5774,0x5825,0x5830, 0x5832,INVALC,0x5831,INVALC,INVALC,INVALC,INVALC,INVALC, 0x582B,INVALC,0x5826,INVALC,0x5778,0x577D,INVALC,0x582A, INVALC,INVALC,INVALC,INVALC,0x577C,INVALC,0x5146,0x5777, 0x577A,0x582D,0x5821,0x5775,0x5D3A,0x582F,0x5779,0x5829, INVALC,INVALC,INVALC,INVALC,0x5D3D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5D3F,0x5D45,0x5D43,INVALC, INVALC,INVALC,0x5D46,0x5D3E,INVALC,INVALC,0x5D42,0x5D41, 0x5D47,INVALC,INVALC,INVALC,INVALC,0x5D40,INVALC,INVALC, INVALC,INVALC,0x5D44,INVALC,0x5D3C,INVALC,INVALC,0x6225, INVALC,INVALC,INVALC,0x6222,0x6224,INVALC,INVALC,0x617E, /* Block 113, Array index 0x2300 */ 0x6221,0x617A,INVALC,INVALC,0x5823,0x617B,INVALC,0x6177, INVALC,INVALC,0x6226,INVALC,0x6178,0x6179,0x617D,INVALC, INVALC,INVALC,INVALC,INVALC,0x617C,INVALC,0x656A,0x6570, INVALC,0x6567,INVALC,INVALC,0x6572,INVALC,INVALC,INVALC, 0x6569,0x656C,0x656D,0x656E,0x6571,INVALC,0x6223,0x6568, INVALC,0x656F,0x6934,0x656B,INVALC,INVALC,INVALC,0x692B, INVALC,0x692E,INVALC,0x6937,0x692D,0x692A,INVALC,0x692C, 0x6930,0x6933,0x6932,0x6936,0x6929,INVALC,INVALC,0x6931, 0x6935,0x6938,0x692F,0x6B61,0x6B62,0x6B66,0x6B67,INVALC, 0x6B64,0x6B65,0x6B63,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6D59,INVALC,INVALC,0x6D56,0x6D57,0x6D58, INVALC,INVALC,0x6F34,0x6F33,INVALC,0x703D,INVALC,0x703B, 0x703E,0x703C,0x7125,INVALC,INVALC,0x7171,0x715B,INVALC, 0x7170,0x723E,0x723F,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2261,INVALC,INVALC,0x245E,INVALC,INVALC,INVALC, INVALC,INVALC,0x245F,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2778,0x277A,0x2775,0x2772,0x2774,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2776,INVALC,0x2773,0x2770,INVALC,0x2777,INVALC, 0x2771,INVALC,0x2779,INVALC,INVALC,INVALC,INVALC,0x2B6F, INVALC,0x2B73,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2B76,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2B72,0x2B71,INVALC,INVALC,0x2B74,0x2B75,INVALC,0x2B6E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2B70,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x305A,0x305B,0x305C, INVALC,INVALC,INVALC,0x3051,INVALC,0x3059,0x305E,INVALC, INVALC,0x304F,0x3055,0x304E,0x3058,INVALC,INVALC,0x3054, INVALC,INVALC,0x305D,INVALC,0x304D,0x3050,0x3056,INVALC, 0x3057,0x305F,0x3053,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3671,INVALC,INVALC,0x3673,0x366F,INVALC,0x367B,0x366D, 0x367A,INVALC,0x366B,0x3D5F,0x3675,INVALC,INVALC,0x3676, /* Block 114, Array index 0x2400 */ 0x3679,INVALC,0x367D,INVALC,0x3672,INVALC,0x3677,INVALC, INVALC,INVALC,INVALC,0x367C,0x3670,0x366C,0x367E,INVALC, 0x3674,INVALC,INVALC,0x3678,INVALC,INVALC,INVALC,0x366E, INVALC,INVALC,INVALC,0x3D69,INVALC,INVALC,0x3D5D,0x3D66, 0x3D5C,INVALC,0x3D64,0x3D62,INVALC,0x3D63,INVALC,INVALC, 0x3D67,INVALC,INVALC,INVALC,INVALC,INVALC,0x3D60,0x3D5E, INVALC,0x3D61,0x3D65,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3D68,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4456,0x445D,0x445F,0x4465,INVALC,INVALC,0x4451, INVALC,INVALC,INVALC,0x4460,INVALC,0x4466,INVALC,INVALC, 0x4463,INVALC,0x4453,0x4464,0x4452,INVALC,INVALC,INVALC, 0x445E,INVALC,0x4467,INVALC,INVALC,0x4457,INVALC,0x4462, 0x4455,0x445C,0x4458,0x4454,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x445B,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4461,INVALC,0x4459,INVALC,INVALC,INVALC,INVALC,INVALC, 0x445A,INVALC,INVALC,0x4B67,INVALC,INVALC,INVALC,INVALC, 0x4B63,0x4B69,0x4B65,INVALC,INVALC,0x4B64,0x4B68,0x4B60, INVALC,0x4B62,INVALC,INVALC,INVALC,INVALC,INVALC,0x4B66, 0x4B61,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4B6A, INVALC,INVALC,0x516F,0x516C,0x5178,0x5172,0x5174,INVALC, 0x516E,0x5176,INVALC,INVALC,0x5175,0x5173,INVALC,0x5179, INVALC,0x5170,0x5177,INVALC,INVALC,INVALC,INVALC,0x516B, 0x516D,INVALC,0x516A,0x517A,INVALC,0x5171,INVALC,INVALC, 0x5836,INVALC,INVALC,INVALC,0x5841,0x583F,INVALC,0x5835, 0x5838,0x5839,0x5834,INVALC,INVALC,0x5833,0x5842,0x583D, INVALC,INVALC,0x583C,0x583A,INVALC,INVALC,INVALC,0x583E, INVALC,INVALC,INVALC,INVALC,0x583B,INVALC,0x5837,INVALC, 0x5840,INVALC,0x5843,0x5844,INVALC,INVALC,INVALC,INVALC, INVALC,0x5D48,0x5D4E,INVALC,0x5D4C,INVALC,INVALC,INVALC, 0x5D4A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5D4D,0x5D49,0x5D4B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6229,INVALC,INVALC,INVALC,0x622B,INVALC,0x6228, /* Block 115, Array index 0x2500 */ INVALC,0x6227,0x6576,0x622A,INVALC,0x6577,INVALC,0x6575, INVALC,INVALC,0x6574,INVALC,0x6573,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6939,0x693A,INVALC,INVALC,INVALC, INVALC,0x6B6A,0x6B69,INVALC,INVALC,0x6B68,0x6D5A,0x6D5B, INVALC,INVALC,0x6F35,0x703F,INVALC,INVALC,0x7126,0x722C, INVALC,0x7240,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2142, INVALC,0x2B77,0x3060,INVALC,0x4B6B,INVALC,INVALC,INVALC, INVALC,0x2B78,0x2B79,0x3D6A,INVALC,INVALC,INVALC,0x4468, INVALC,INVALC,INVALC,0x4B6C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3D6B,INVALC,INVALC,INVALC,0x2262,INVALC, INVALC,INVALC,INVALC,0x2460,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x277B,INVALC,0x2B7A,INVALC,0x2B7D,INVALC, 0x2B7B,INVALC,INVALC,0x2B7C,INVALC,INVALC,0x3063,0x3062, 0x3061,INVALC,INVALC,0x3722,0x3723,INVALC,0x3721,0x3724, INVALC,INVALC,INVALC,INVALC,INVALC,0x3D6F,0x3D6E,INVALC, 0x3D6C,0x3D6D,INVALC,0x3D70,0x446A,0x4469,0x446D,INVALC, 0x446C,0x446B,INVALC,0x4B6F,INVALC,0x4B6E,INVALC,0x4B6D, 0x517B,INVALC,0x517C,INVALC,INVALC,0x5845,0x5846,INVALC, INVALC,0x657C,INVALC,0x657B,0x657A,0x6578,0x6579,INVALC, 0x693B,0x6D5C,0x7127,INVALC,INVALC,INVALC,0x2164,INVALC, 0x2165,INVALC,INVALC,INVALC,0x2263,0x2264,INVALC,INVALC, INVALC,INVALC,0x2466,INVALC,INVALC,0x2462,INVALC,0x2461, INVALC,0x2465,INVALC,0x2463,INVALC,0x2467,0x2464,INVALC, INVALC,0x2821,0x2B7E,0x277D,0x2826,INVALC,INVALC,INVALC, INVALC,0x2827,0x2823,INVALC,0x2824,INVALC,0x277C,INVALC, 0x277E,INVALC,0x2825,INVALC,0x2822,INVALC,INVALC,0x2C24, INVALC,INVALC,INVALC,0x2C27,0x2C21,INVALC,0x2C26,INVALC, 0x2C22,INVALC,0x2C25,0x2C23,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3069,0x3066,INVALC,0x3068,INVALC, INVALC,INVALC,0x3065,0x306A,INVALC,INVALC,0x3067,0x372C, /* Block 116, Array index 0x2600 */ 0x3064,0x306B,INVALC,INVALC,INVALC,INVALC,INVALC,0x3727, 0x372B,INVALC,0x372A,0x3D72,0x3D7D,INVALC,INVALC,0x372D, INVALC,0x3728,0x3D71,INVALC,INVALC,INVALC,INVALC,0x3726, 0x3729,INVALC,INVALC,INVALC,INVALC,0x3725,0x372E,INVALC, INVALC,INVALC,0x3D74,0x3D7B,INVALC,INVALC,0x3D7A,0x3D77, INVALC,INVALC,INVALC,INVALC,INVALC,0x3D79,INVALC,INVALC, 0x3D73,0x3D75,0x3D78,0x3D76,INVALC,0x3D7C,INVALC,INVALC, INVALC,INVALC,0x4471,0x4470,0x446E,INVALC,INVALC,INVALC, 0x4472,INVALC,0x446F,0x4B70,INVALC,INVALC,INVALC,INVALC, INVALC,0x4474,0x4473,INVALC,0x4B73,0x4B71,INVALC,INVALC, INVALC,0x4B72,0x517E,INVALC,INVALC,INVALC,INVALC,INVALC, 0x517D,0x5228,0x5227,0x5225,INVALC,0x5224,0x5221,0x5222, 0x5223,0x5226,0x5229,INVALC,INVALC,0x584B,0x5848,0x5849, INVALC,0x5847,0x584D,0x584C,0x584A,INVALC,0x5D50,0x5D51, INVALC,INVALC,INVALC,0x5D4F,INVALC,INVALC,0x622C,INVALC, INVALC,INVALC,INVALC,INVALC,0x693D,0x693C,0x6B6B,0x6D5D, INVALC,0x6F37,0x6F36,0x6F38,INVALC,0x2C28,INVALC,INVALC, 0x372F,INVALC,0x2166,INVALC,INVALC,INVALC,0x2265,INVALC, INVALC,INVALC,0x246C,0x246A,0x246B,0x2468,INVALC,0x2469, INVALC,INVALC,INVALC,INVALC,INVALC,0x282F,INVALC,INVALC, 0x282D,0x2829,0x282C,INVALC,0x2828,INVALC,0x282B,INVALC, INVALC,INVALC,INVALC,INVALC,0x282E,0x282A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2C30,0x2C2F,0x2C2E,INVALC, 0x2C37,0x2C2D,INVALC,INVALC,0x3070,INVALC,0x2C34,0x2C32, INVALC,INVALC,0x2C2A,0x2C35,INVALC,0x2C2C,0x2C36,0x2C33, 0x2C2B,INVALC,INVALC,0x2C38,0x2C29,INVALC,INVALC,INVALC, INVALC,INVALC,0x3075,0x306C,0x3077,INVALC,0x306F,0x307A, 0x307B,0x306D,0x3079,0x3076,0x3074,0x3078,INVALC,INVALC, INVALC,INVALC,INVALC,0x3072,INVALC,0x306E,INVALC,0x3071, 0x307C,0x3073,INVALC,0x2C31,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x373D,0x3732,0x3730,INVALC, 0x3731,INVALC,0x3738,INVALC,0x3739,0x3735,INVALC,0x373A, /* Block 117, Array index 0x2700 */ 0x3737,0x3734,INVALC,INVALC,0x3733,INVALC,INVALC,0x3736, 0x373E,INVALC,INVALC,0x373C,0x373B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3E24,INVALC, INVALC,INVALC,0x3E25,INVALC,INVALC,0x3E2B,INVALC,INVALC, 0x3E2D,0x3E26,INVALC,0x3E2A,0x3E29,INVALC,INVALC,INVALC, INVALC,0x3E2C,INVALC,0x3E23,0x3E21,0x3E27,0x3D7E,INVALC, 0x3E22,0x3E28,0x3E2E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x447B,INVALC,0x4521,INVALC,0x4475,INVALC,0x4522,INVALC, INVALC,INVALC,0x4476,0x4477,INVALC,0x4523,0x447E,0x447C, 0x447D,0x4479,0x4478,INVALC,0x4524,INVALC,INVALC,0x447A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4B74,INVALC,INVALC,INVALC,INVALC,0x4B79, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4B7A,INVALC, INVALC,0x4B76,0x4B78,0x4B75,INVALC,0x4B77,INVALC,INVALC, INVALC,0x5233,INVALC,INVALC,0x5232,0x522F,INVALC,0x584E, INVALC,0x522E,INVALC,INVALC,INVALC,0x5230,0x522D,0x522A, 0x5231,0x522B,0x522C,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5D55,INVALC,0x5852,INVALC,0x5851,0x5853,INVALC,0x5D52, INVALC,INVALC,0x584F,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5850,0x5854,INVALC,INVALC,INVALC,0x5D59,INVALC,INVALC, INVALC,INVALC,0x5D56,0x5D54,INVALC,0x5D57,INVALC,0x5D5A, INVALC,0x5D58,0x5D53,INVALC,INVALC,0x622F,0x6232,0x6621, 0x622D,INVALC,0x693E,0x6233,INVALC,INVALC,0x6231,INVALC, 0x622E,0x6230,0x6234,0x6622,INVALC,0x657E,INVALC,INVALC, INVALC,INVALC,INVALC,0x657D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6D5F,INVALC,0x6D61, 0x6D5E,0x6D60,INVALC,0x7040,INVALC,0x2830,0x307D,0x307E, INVALC,0x4525,INVALC,INVALC,INVALC,0x7041,INVALC,INVALC, 0x2831,INVALC,INVALC,INVALC,0x2C39,INVALC,0x2C3A,INVALC, INVALC,INVALC,INVALC,INVALC,0x3121,0x3122,INVALC,INVALC, INVALC,INVALC,INVALC,0x3E2F,INVALC,0x4528,0x4527,0x4526, /* Block 118, Array index 0x2800 */ 0x4B7B,INVALC,0x4B7C,0x4B7D,INVALC,INVALC,INVALC,0x5235, 0x5234,INVALC,INVALC,0x5855,INVALC,INVALC,INVALC,0x5D5E, 0x5D5B,0x5D5C,0x5D5D,0x6236,0x6235,INVALC,0x6623,0x6B6C, INVALC,INVALC,INVALC,INVALC,INVALC,0x4529,INVALC,INVALC, INVALC,0x3123,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2266,INVALC,INVALC,INVALC,0x2C3B,0x3E30, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x246E,0x246D,INVALC,INVALC,INVALC,0x2834,0x2832, 0x2833,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2C3C, 0x2C3D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3124,INVALC,INVALC,INVALC,0x3125, INVALC,INVALC,INVALC,0x3740,0x373F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3E32,INVALC,INVALC,0x3E31, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x452B, INVALC,0x452A,INVALC,INVALC,INVALC,0x4B7E,0x5236,INVALC, 0x5856,INVALC,INVALC,INVALC,0x5D5F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2835,INVALC,INVALC,INVALC, 0x4C21,INVALC,INVALC,INVALC,0x246F,0x2470,INVALC,INVALC, 0x2836,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2C3E, INVALC,INVALC,0x2C3F,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3126,INVALC,INVALC,INVALC,INVALC,INVALC,0x312C,INVALC, INVALC,INVALC,0x312D,0x3128,INVALC,INVALC,INVALC,0x312B, 0x312A,0x3127,INVALC,INVALC,0x3129,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3744,0x3745,INVALC,0x3741,0x3743, 0x3747,0x3746,0x3742,INVALC,INVALC,INVALC,INVALC,0x3E3A, INVALC,INVALC,0x3E34,INVALC,INVALC,0x3E37,INVALC,0x3E38, INVALC,0x3E35,INVALC,INVALC,0x3E39,INVALC,0x3E36,0x3E33, INVALC,INVALC,INVALC,INVALC,INVALC,0x4538,INVALC,0x452D, INVALC,INVALC,INVALC,INVALC,INVALC,0x4539,0x4537,0x4530, 0x4534,0x4533,INVALC,0x4536,0x4532,0x453A,0x4531,INVALC, /* Block 119, Array index 0x2900 */ INVALC,INVALC,INVALC,0x452F,INVALC,INVALC,INVALC,INVALC, 0x4C23,INVALC,0x4C27,INVALC,0x4C24,INVALC,INVALC,0x452E, 0x4535,0x4C26,INVALC,INVALC,0x4C28,0x4C25,0x4C22,INVALC, INVALC,0x5239,0x523D,0x523F,0x523B,0x523A,0x5238,INVALC, INVALC,INVALC,INVALC,0x523C,INVALC,0x5237,INVALC,INVALC, 0x523E,INVALC,INVALC,INVALC,INVALC,0x5858,INVALC,0x5857, 0x585F,0x5859,0x585E,0x585B,INVALC,0x585D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x585C,0x585A,INVALC,INVALC, INVALC,INVALC,INVALC,0x5D60,INVALC,INVALC,INVALC,0x5D63, 0x5D61,0x5D62,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x623A,INVALC,INVALC,0x623B,INVALC,INVALC,INVALC,0x623C, INVALC,0x6239,0x623D,INVALC,0x6237,INVALC,INVALC,INVALC, 0x6624,INVALC,INVALC,INVALC,0x6238,INVALC,INVALC,INVALC, INVALC,INVALC,0x6B6D,INVALC,INVALC,0x6D62,INVALC,INVALC, 0x6F39,INVALC,INVALC,INVALC,INVALC,0x723A,INVALC,INVALC, INVALC,0x2C40,INVALC,INVALC,INVALC,INVALC,INVALC,0x2267, INVALC,0x2471,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3749,0x312E,INVALC,INVALC,INVALC,INVALC,0x3748, INVALC,INVALC,0x3E3C,INVALC,INVALC,0x3E3B,INVALC,INVALC, INVALC,0x453B,INVALC,0x5243,0x5240,0x5241,0x5242,INVALC, INVALC,INVALC,INVALC,INVALC,0x5D64,INVALC,0x623E,INVALC, INVALC,INVALC,0x6940,0x693F,INVALC,0x6D63,INVALC,0x2837, INVALC,INVALC,INVALC,INVALC,INVALC,0x453C,INVALC,INVALC, 0x4C29,INVALC,INVALC,0x5860,INVALC,0x623F,0x6941,INVALC, INVALC,INVALC,INVALC,INVALC,0x2C41,INVALC,INVALC,INVALC, INVALC,0x312F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x374A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3E3D,INVALC,INVALC,0x453D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5861,INVALC, INVALC,0x5D65,INVALC,INVALC,0x6240,0x6942,INVALC,INVALC, 0x283A,0x2839,INVALC,0x2838,INVALC,0x283B,INVALC,0x2C47, INVALC,INVALC,0x2C49,0x2C48,INVALC,INVALC,INVALC,INVALC, /* Block 120, Array index 0x2A00 */ INVALC,INVALC,INVALC,0x2C43,0x2C44,0x2C45,INVALC,INVALC, 0x2C42,INVALC,0x2C46,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3132,0x3136,0x3134,0x3133,INVALC,0x3137,INVALC,INVALC, INVALC,0x3138,0x3139,0x3131,INVALC,0x3130,INVALC,INVALC, INVALC,INVALC,0x313A,0x3135,INVALC,0x3753,INVALC,0x313B, INVALC,INVALC,INVALC,INVALC,INVALC,0x374D,INVALC,0x374C, INVALC,0x374E,0x374F,0x3751,0x3750,0x3755,INVALC,INVALC, INVALC,0x374B,INVALC,0x3754,INVALC,0x3752,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3E40,0x3E42,0x3E3E,0x3E3F, INVALC,INVALC,0x3E43,0x3E45,0x3E46,0x3E41,0x3E44,INVALC, INVALC,INVALC,0x4541,INVALC,0x4546,0x453E,0x4542,INVALC, INVALC,0x4547,0x4543,INVALC,INVALC,INVALC,INVALC,0x453F, 0x4540,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4545, INVALC,0x4544,INVALC,INVALC,INVALC,0x4548,0x4C2E,0x4C30, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4C2B,INVALC,0x4C31,INVALC, 0x4C2F,0x4C2A,0x4C2D,0x4C32,INVALC,0x4C2C,INVALC,INVALC, 0x5247,0x5246,INVALC,INVALC,INVALC,0x5244,INVALC,0x5245, INVALC,INVALC,INVALC,INVALC,INVALC,0x5869,INVALC,0x586B, INVALC,0x586A,0x5862,0x5866,0x5865,0x5863,INVALC,INVALC, INVALC,0x5864,0x5867,0x5868,INVALC,INVALC,INVALC,INVALC, 0x5D6D,INVALC,INVALC,0x5D67,INVALC,INVALC,INVALC,INVALC, INVALC,0x5D6C,0x5D68,INVALC,0x5D6B,0x5D66,0x5D6A,0x5D69, INVALC,INVALC,0x6242,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6241,INVALC,0x6627,INVALC,INVALC,INVALC, INVALC,0x6625,0x6626,INVALC,0x6943,0x6946,0x6944,0x6945, 0x6B6E,INVALC,INVALC,INVALC,0x6F3A,0x7042,INVALC,INVALC, 0x7128,0x7129,INVALC,INVALC,INVALC,INVALC,0x3E47,INVALC, 0x4549,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2C4A, 0x2C4B,INVALC,INVALC,INVALC,0x3E48,INVALC,INVALC,INVALC, 0x5D6E,0x6628,0x6947,INVALC,INVALC,INVALC,INVALC,0x2841, 0x283C,0x283E,0x2840,0x283F,0x283D,INVALC,INVALC,INVALC, /* Block 121, Array index 0x2B00 */ INVALC,INVALC,INVALC,0x2C54,INVALC,0x2C4F,0x2C4C,INVALC, INVALC,0x2C53,INVALC,INVALC,INVALC,INVALC,0x2C52,0x2C51, 0x2C50,0x2C4D,0x2C4E,0x2C55,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3144,0x313E,0x313C,INVALC,INVALC,0x375C,INVALC, 0x3141,0x3145,0x3147,0x3143,0x313D,INVALC,0x3142,0x3140, INVALC,0x3148,INVALC,0x3146,INVALC,0x313F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x375D,INVALC,INVALC, 0x3756,0x3758,0x375A,INVALC,0x375B,0x3759,INVALC,INVALC, 0x375E,INVALC,0x3757,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3E4C,INVALC,0x3E54,INVALC, 0x3E49,INVALC,0x3E55,INVALC,0x3E4A,0x3E4B,INVALC,INVALC, 0x3E53,0x3E52,0x3E4F,INVALC,INVALC,0x3E4D,0x3E50,INVALC, 0x3E51,0x3E4E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4554,INVALC,0x4558,INVALC,INVALC,0x4C38,INVALC, 0x4556,INVALC,INVALC,0x4553,0x454E,0x4550,0x4551,0x454A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x454D, INVALC,INVALC,INVALC,INVALC,0x454C,0x454F,0x4557,INVALC, INVALC,0x4555,0x454B,INVALC,INVALC,INVALC,0x4C3A,INVALC, 0x4C3C,0x4552,0x4C3E,INVALC,0x4C3F,0x4C3B,INVALC,INVALC, 0x4C37,INVALC,0x4C34,0x4C39,0x4C3D,0x4C36,INVALC,INVALC, INVALC,INVALC,0x4C33,INVALC,0x4C35,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5249,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5250,0x5251,INVALC,INVALC,INVALC, 0x524F,0x5252,INVALC,INVALC,0x524B,0x5248,0x524D,0x524A, INVALC,0x524C,INVALC,INVALC,0x524E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5872,INVALC,0x586C,0x5870,0x5876, 0x5877,0x5873,0x5874,0x5871,INVALC,0x586E,INVALC,INVALC, INVALC,0x586D,0x586F,INVALC,INVALC,0x5875,INVALC,INVALC, INVALC,INVALC,0x5D75,0x5D6F,INVALC,INVALC,INVALC,INVALC, INVALC,0x5D77,INVALC,0x5D72,0x5D73,0x5D70,0x5D78,0x5D74, /* Block 122, Array index 0x2C00 */ INVALC,INVALC,0x5D71,INVALC,0x5D79,0x5D76,INVALC,INVALC, INVALC,0x6246,INVALC,INVALC,0x6243,INVALC,INVALC,INVALC, 0x6247,0x6249,0x6248,0x6244,0x6245,INVALC,INVALC,0x662D, INVALC,INVALC,INVALC,0x662A,0x662C,0x6629,0x662E,INVALC, INVALC,0x662B,INVALC,0x6949,0x694C,0x6948,INVALC,0x694A, 0x694B,0x694D,INVALC,INVALC,INVALC,0x6B6F,INVALC,0x6B71, INVALC,0x6B70,INVALC,INVALC,INVALC,0x6D64,INVALC,INVALC, 0x7043,0x712A,INVALC,INVALC,INVALC,0x2472,INVALC,0x2843, INVALC,INVALC,0x2842,INVALC,0x2C5A,0x2C59,INVALC,INVALC, INVALC,INVALC,0x2C56,0x2C58,0x2C57,INVALC,INVALC,0x314B, INVALC,0x314F,0x314E,0x314D,0x3149,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x314A,0x314C,INVALC,INVALC,INVALC, INVALC,0x3765,INVALC,0x3763,0x375F,INVALC,INVALC,0x3760, INVALC,0x3761,0x3762,0x3764,INVALC,INVALC,INVALC,INVALC, 0x3E59,INVALC,0x3E58,0x3E57,0x3E56,INVALC,INVALC,INVALC, INVALC,0x455C,INVALC,INVALC,0x4559,0x455B,INVALC,INVALC, INVALC,INVALC,0x455A,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4C48,INVALC,0x4C41,0x4C42,INVALC,INVALC,INVALC,INVALC, 0x4C4A,INVALC,0x4C49,0x4C46,0x4C45,0x4C44,0x4C43,0x4C47, 0x4C40,INVALC,0x5253,0x5258,0x5256,INVALC,INVALC,INVALC, 0x5255,0x5254,0x5257,INVALC,0x5878,INVALC,INVALC,INVALC, 0x5D7B,INVALC,INVALC,0x5D7A,0x624B,0x624A,INVALC,INVALC, 0x662F,INVALC,0x694E,INVALC,0x6D65,INVALC,0x7045,0x7044, 0x2167,INVALC,INVALC,0x3766,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2844,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2C5C,0x2C5F,0x2C5D, INVALC,INVALC,INVALC,INVALC,INVALC,0x2C5B,0x2C5E,INVALC, INVALC,INVALC,INVALC,INVALC,0x3156,0x3158,0x3157,INVALC, 0x3152,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3155,0x3150,0x3151,0x3154,0x3153,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3769,0x376A, 0x3768,INVALC,0x3767,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 123, Array index 0x2D00 */ INVALC,INVALC,0x3E5A,0x3E5C,0x3E5E,INVALC,INVALC,INVALC, INVALC,INVALC,0x3E5B,INVALC,0x3E5D,INVALC,INVALC,INVALC, 0x4566,0x455D,0x4560,0x4564,INVALC,0x4562,INVALC,0x4561, 0x455E,0x455F,INVALC,0x4565,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4563,INVALC,INVALC,INVALC,0x4C50,INVALC, 0x4C4F,INVALC,INVALC,0x4C4B,INVALC,INVALC,INVALC,0x4C4E, 0x4C4D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x525A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5879,INVALC,INVALC,0x587B, 0x587A,INVALC,0x4C4C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5E22,INVALC,0x5D7E,INVALC, 0x5E21,INVALC,0x5E23,0x5D7D,0x5D7C,INVALC,INVALC,0x624C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6630, 0x6631,INVALC,INVALC,INVALC,0x6950,0x6951,0x694F,INVALC, 0x6D66,0x6D67,INVALC,INVALC,INVALC,0x2268,INVALC,INVALC, 0x2845,INVALC,INVALC,0x2846,INVALC,INVALC,0x2C61,INVALC, 0x2C60,INVALC,INVALC,INVALC,INVALC,0x315B,0x3159,0x315F, INVALC,0x315A,0x315E,0x315C,0x315D,INVALC,INVALC,0x376B, 0x376D,INVALC,INVALC,INVALC,0x376C,INVALC,INVALC,INVALC, INVALC,0x3E5F,INVALC,INVALC,INVALC,INVALC,0x4569,INVALC, INVALC,INVALC,0x4568,0x4567,INVALC,INVALC,INVALC,INVALC, 0x4C51,INVALC,INVALC,0x4C52,0x4C53,INVALC,INVALC,INVALC, INVALC,0x5921,0x525B,0x525D,0x525C,0x587E,0x587C,0x5922, 0x587D,INVALC,INVALC,INVALC,INVALC,INVALC,0x5E24,INVALC, 0x5E25,0x5E26,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2C62,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3160,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3E61,INVALC,0x3E60,INVALC, INVALC,INVALC,INVALC,0x456A,INVALC,INVALC,0x4C54,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6952, INVALC,INVALC,INVALC,0x2847,INVALC,INVALC,INVALC,INVALC, /* Block 124, Array index 0x2E00 */ 0x2C63,0x2C64,INVALC,INVALC,0x3162,0x3164,INVALC,INVALC, 0x3166,0x3169,0x3167,INVALC,INVALC,INVALC,0x3168,0x3165, 0x3161,INVALC,0x316A,0x3163,INVALC,INVALC,INVALC,INVALC, 0x3776,INVALC,0x3821,INVALC,INVALC,0x3778,INVALC,INVALC, INVALC,INVALC,0x3773,0x3822,0x3774,0x3771,INVALC,INVALC, INVALC,INVALC,0x3777,0x377A,INVALC,0x377B,INVALC,0x377C, 0x3772,0x3779,0x377D,0x3775,0x3770,0x376E,INVALC,INVALC, 0x377E,INVALC,INVALC,0x376F,INVALC,INVALC,INVALC,INVALC, 0x3E68,INVALC,INVALC,INVALC,0x3E64,0x3E6A,INVALC,0x3E63, 0x3E65,INVALC,0x3E62,INVALC,0x3E66,INVALC,0x3E67,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3E69,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4575,INVALC,0x4578,0x456C,0x4571,0x456B,INVALC, INVALC,0x456F,INVALC,INVALC,INVALC,0x456D,INVALC,INVALC, 0x4574,0x4573,0x4570,0x4572,0x456E,INVALC,0x4577,INVALC, 0x4576,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4C64,INVALC,INVALC,0x4C5F,INVALC,INVALC, 0x4C55,INVALC,0x4C57,INVALC,0x4C5C,0x4C5B,0x4C5E,INVALC, 0x4C59,0x4C58,INVALC,INVALC,INVALC,INVALC,0x4C5A,INVALC, 0x4C60,0x4C62,INVALC,0x4C5D,0x4C56,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4C63,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5261,INVALC,INVALC,0x5263, INVALC,INVALC,INVALC,INVALC,INVALC,0x5266,INVALC,0x525E, INVALC,0x5264,INVALC,INVALC,INVALC,INVALC,0x5260,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5265,0x525F,INVALC,INVALC,0x5262,INVALC, INVALC,INVALC,INVALC,INVALC,0x592C,0x5927,INVALC,INVALC, 0x5931,INVALC,0x5929,INVALC,0x592F,0x5926,0x5923,0x5932, INVALC,INVALC,0x592E,0x5924,INVALC,0x5928,INVALC,0x5925, 0x592A,INVALC,0x592D,0x5930,INVALC,INVALC,INVALC,INVALC, 0x5E38,0x5E39,0x5E29,0x5E30,0x5E2E,INVALC,INVALC,INVALC, 0x5E35,0x592B,INVALC,0x5E2C,INVALC,0x5E36,INVALC,0x5E2B, /* Block 125, Array index 0x2F00 */ 0x5E2A,0x5E34,0x5E31,0x5E33,INVALC,0x5E27,0x5E37,INVALC, INVALC,0x5E32,0x5E3B,0x5E2F,INVALC,INVALC,0x5E2D,0x5E28, 0x5E3A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x624F,INVALC,INVALC,0x624D,0x6253,INVALC,0x6251, 0x6250,INVALC,0x6256,INVALC,INVALC,0x6257,0x6254,INVALC, 0x6255,0x624E,INVALC,INVALC,0x6635,0x6252,INVALC,INVALC, 0x6258,INVALC,INVALC,0x6632,INVALC,INVALC,INVALC,INVALC, INVALC,0x6634,INVALC,0x6636,0x6633,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6957,INVALC,0x6956, 0x6954,0x6953,0x6955,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6B73,0x6B72,INVALC,INVALC,0x6D68, INVALC,0x6D6A,0x6D6C,0x6D6B,0x6D69,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6F3C,0x6F3B, INVALC,0x712B,0x7046,0x712C,INVALC,INVALC,INVALC,0x715C, INVALC,INVALC,INVALC,INVALC,INVALC,0x2848,INVALC,INVALC, 0x2C66,0x2C67,0x2C65,INVALC,INVALC,INVALC,INVALC,0x2C68, 0x2C69,0x2C6A,INVALC,INVALC,0x316B,0x3171,INVALC,INVALC, 0x316F,INVALC,0x316D,INVALC,0x316E,0x3170,INVALC,INVALC, INVALC,0x316C,INVALC,INVALC,0x3823,INVALC,0x3825,INVALC, 0x3824,INVALC,INVALC,INVALC,INVALC,INVALC,0x3E6C,INVALC, INVALC,0x3E6E,0x3E6B,0x3826,INVALC,INVALC,INVALC,INVALC, 0x3E6D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x457B, INVALC,INVALC,0x4579,INVALC,0x457A,INVALC,INVALC,INVALC, INVALC,INVALC,0x4C68,0x4C65,0x4C67,INVALC,INVALC,0x4C66, INVALC,INVALC,INVALC,INVALC,INVALC,0x5267,INVALC,INVALC, 0x5268,INVALC,INVALC,0x526A,0x5269,INVALC,INVALC,INVALC, 0x5936,0x5937,0x5933,INVALC,0x5934,INVALC,INVALC,0x5935, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5E3C,INVALC,0x6638,INVALC,0x6637,INVALC,0x6958,INVALC, INVALC,0x6D6E,0x6B74,INVALC,0x6D6D,INVALC,0x712D,0x7172, INVALC,INVALC,INVALC,INVALC,INVALC,0x2849,INVALC,INVALC, /* Block 126, Array index 0x3000 */ INVALC,0x2C6D,INVALC,0x2C6B,INVALC,INVALC,INVALC,INVALC, 0x2C6C,INVALC,INVALC,INVALC,0x317C,INVALC,0x3175,0x317B, INVALC,0x3174,0x317A,0x3178,INVALC,INVALC,0x3177,INVALC, 0x3176,INVALC,INVALC,INVALC,INVALC,0x3173,0x3172,0x3179, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3835,0x382E,INVALC,INVALC,0x382D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3827,0x382A,INVALC, 0x3829,INVALC,0x382B,0x3834,INVALC,0x3828,0x3831,0x3832, INVALC,0x382F,INVALC,INVALC,INVALC,0x382C,INVALC,0x3830, INVALC,INVALC,0x3833,INVALC,INVALC,INVALC,0x3F21,0x3E76, INVALC,0x3E7D,0x3E7A,0x3E72,0x3E7B,INVALC,0x3E73,INVALC, 0x3E6F,INVALC,INVALC,INVALC,0x3E78,INVALC,INVALC,0x3E7E, INVALC,INVALC,INVALC,0x3E71,INVALC,INVALC,INVALC,0x3E74, INVALC,0x3E7C,0x3E75,0x3E79,INVALC,0x3E77,INVALC,0x3E70, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4624,0x4626,0x4628,0x462C,INVALC,0x4622, 0x457E,INVALC,INVALC,0x4627,0x462B,0x4623,0x457D,INVALC, 0x457C,INVALC,INVALC,INVALC,0x4629,0x4621,0x4625,INVALC, INVALC,INVALC,0x462D,INVALC,0x462A,INVALC,0x4C79,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4C71,INVALC,0x4C7B, INVALC,0x4D21,INVALC,0x4C6C,INVALC,INVALC,0x4C7C,0x4C69, INVALC,0x4C7E,0x4C6D,INVALC,INVALC,INVALC,0x4C7D,0x4C77, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4C6A, INVALC,0x4C78,INVALC,INVALC,0x4C7A,INVALC,INVALC,INVALC, 0x4C6F,0x4C6E,0x4C6B,INVALC,0x4C73,0x4C70,0x4C74,INVALC, INVALC,0x4D22,INVALC,0x4C75,0x4C76,INVALC,0x4C72,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x526F, INVALC,INVALC,INVALC,0x526C,INVALC,INVALC,INVALC,0x5278, INVALC,0x5270,INVALC,INVALC,INVALC,INVALC,0x5273,0x526E, INVALC,INVALC,0x526D,INVALC,INVALC,INVALC,0x5277,INVALC, 0x5276,0x5275,INVALC,0x503B,INVALC,INVALC,0x5274,0x526B, INVALC,INVALC,0x5272,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 127, Array index 0x3100 */ INVALC,INVALC,INVALC,0x5271,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5944,0x593B,0x5947,0x593F,0x5945, INVALC,INVALC,0x5938,0x593E,0x5948,0x5941,0x5946,0x593A, INVALC,INVALC,0x5942,INVALC,0x5940,INVALC,INVALC,0x593C, 0x593D,0x5939,0x5943,INVALC,0x594A,0x5949,INVALC,INVALC, INVALC,0x5E47,0x5E43,INVALC,INVALC,0x5E3D,INVALC,INVALC, 0x5E49,INVALC,INVALC,0x5E40,INVALC,INVALC,0x5E4B,INVALC, 0x5E42,INVALC,0x5E4D,0x5E4A,0x5E3E,INVALC,INVALC,INVALC, 0x5E45,INVALC,0x5E3F,INVALC,0x5E4C,INVALC,INVALC,0x5E46, INVALC,0x5E44,INVALC,INVALC,0x5E48,INVALC,INVALC,INVALC, 0x625A,0x6260,INVALC,0x6263,INVALC,INVALC,0x625B,0x6262, 0x625D,INVALC,INVALC,INVALC,0x6259,INVALC,INVALC,0x625F, 0x6261,INVALC,0x625E,0x625C,INVALC,INVALC,INVALC,INVALC, 0x6642,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x663E, 0x663C,INVALC,0x6640,INVALC,0x6641,0x663A,0x6639,0x663D, 0x663B,INVALC,0x663F,0x6959,INVALC,INVALC,0x695A,INVALC, 0x695C,0x695B,INVALC,INVALC,INVALC,INVALC,0x6B79,0x6B76, 0x6B77,INVALC,0x6B75,0x6B78,INVALC,0x6B7A,INVALC,INVALC, INVALC,0x6D6F,INVALC,INVALC,INVALC,0x6F3D,INVALC,0x7047, 0x712F,0x7131,0x712E,0x7130,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 128, Array index 0x3200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3052,INVALC,INVALC,INVALC,INVALC,0x3F22,0x3F23, INVALC,INVALC,INVALC,0x594B,INVALC,0x5E4E,INVALC,INVALC, INVALC,INVALC,0x6644,0x6643,INVALC,0x6B7B,INVALC,0x6D70, INVALC,0x2269,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2C6E,INVALC,INVALC,0x3224,0x317D,0x3223,0x3221,INVALC, 0x3222,0x317E,INVALC,0x3836,INVALC,0x3F24,0x3F25,0x4630, 0x4631,INVALC,INVALC,0x462F,0x4632,0x462E,INVALC,INVALC, INVALC,INVALC,INVALC,0x4D23,INVALC,INVALC,0x5279,INVALC, INVALC,INVALC,0x594E,0x594C,0x594D,0x5E51,0x5E50,0x5E4F, INVALC,INVALC,INVALC,0x6645,INVALC,INVALC,0x6646,0x6D71, INVALC,0x7048,INVALC,INVALC,INVALC,0x2C70,INVALC,INVALC, INVALC,0x2C6F,0x3226,INVALC,INVALC,0x3837,0x3225,INVALC, INVALC,INVALC,INVALC,0x383A,0x3838,0x3839,INVALC,INVALC, 0x3F27,0x3F28,0x3F26,INVALC,INVALC,0x4634,0x4633,0x4635, INVALC,INVALC,INVALC,INVALC,0x527A,0x527C,INVALC,INVALC, 0x527B,0x594F,INVALC,0x6265,INVALC,0x6264,INVALC,0x6647, INVALC,INVALC,0x695D,0x6B7C,INVALC,INVALC,0x2C71,INVALC, 0x3229,INVALC,0x3228,0x3227,INVALC,INVALC,INVALC,0x3840, INVALC,0x3842,0x383B,0x383C,INVALC,0x383D,INVALC,0x3841, 0x383E,0x383F,INVALC,INVALC,INVALC,INVALC,INVALC,0x3F29, INVALC,INVALC,INVALC,0x4636,0x4637,INVALC,0x4D27,INVALC, INVALC,INVALC,0x4D24,0x4D25,INVALC,0x4D26,0x5323,INVALC, 0x5324,INVALC,0x5321,0x527E,0x5322,0x527D,INVALC,0x5950, INVALC,INVALC,0x5E53,INVALC,0x5E52,0x6134,INVALC,0x6266, 0x6267,INVALC,INVALC,INVALC,INVALC,0x6648,0x6649,0x695E, /* Block 129, Array index 0x3300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2C72, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2C73,0x2C74, INVALC,INVALC,INVALC,INVALC,0x2C75,INVALC,0x322A,INVALC, INVALC,INVALC,INVALC,0x3845,INVALC,INVALC,0x3844,0x3843, INVALC,0x4638,INVALC,INVALC,0x4D28,INVALC,INVALC,INVALC, INVALC,0x5952,0x5951,INVALC,0x5E54,INVALC,INVALC,INVALC, 0x6B7D,INVALC,INVALC,INVALC,0x2473,0x284A,INVALC,0x2C76, INVALC,0x322C,INVALC,INVALC,INVALC,INVALC,0x322B,INVALC, INVALC,INVALC,INVALC,0x3847,INVALC,INVALC,INVALC,0x3846, 0x3848,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3F2B, 0x3F2C,0x3F2A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4D2A,0x4D29,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5325,INVALC,INVALC,0x5326, INVALC,INVALC,INVALC,INVALC,0x5953,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6268,INVALC,INVALC, 0x664A,0x695F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2F7D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2168,INVALC,INVALC,INVALC,INVALC,0x284B, 0x2476,INVALC,0x2477,INVALC,INVALC,0x2474,INVALC,INVALC, INVALC,0x2475,INVALC,INVALC,0x2478,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x284D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2850,0x284C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x284F,INVALC,INVALC, 0x284E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2C7C,INVALC,INVALC,0x2C7E,INVALC,0x2C78, 0x2C7B,0x2D26,0x2D24,INVALC,INVALC,0x2D2A,INVALC,0x2D27, 0x2C7D,0x2C7A,INVALC,INVALC,0x3F2E,0x2D25,INVALC,0x2D28, 0x2C77,0x2D22,INVALC,INVALC,0x2D23,INVALC,INVALC,INVALC, 0x2C79,INVALC,INVALC,0x2D21,INVALC,INVALC,0x2D29,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x322E,INVALC,INVALC,0x3230,INVALC,INVALC, INVALC,0x322F,0x322D,0x3232,INVALC,INVALC,0x3F2D,INVALC, /* Block 130, Array index 0x3400 */ 0x3233,0x3231,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3852,INVALC,INVALC, 0x3849,0x384B,INVALC,0x384C,INVALC,0x3854,0x3850,0x384E, INVALC,0x3851,0x3855,INVALC,INVALC,0x384A,INVALC,0x3853, INVALC,INVALC,INVALC,INVALC,0x384F,0x384D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3F36,INVALC,INVALC,0x3F34,INVALC,INVALC, INVALC,INVALC,INVALC,0x3F2F,0x4646,INVALC,INVALC,0x3F33, INVALC,INVALC,0x3F30,INVALC,INVALC,0x3F35,INVALC,0x3F32, INVALC,INVALC,0x3F31,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x463E,0x463C,INVALC,0x4642,INVALC, 0x463A,0x4647,0x463F,INVALC,0x4639,INVALC,INVALC,0x4644, INVALC,0x463D,INVALC,INVALC,INVALC,INVALC,INVALC,0x4645, INVALC,INVALC,0x4640,INVALC,INVALC,INVALC,0x4643,0x463B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4D2D,INVALC,INVALC,0x4D2C,0x4D2E, INVALC,0x4D2B,INVALC,0x4D31,0x4D30,0x4D2F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x532A,INVALC,0x532D, INVALC,0x532C,INVALC,INVALC,INVALC,INVALC,0x5329,0x5328, INVALC,INVALC,0x532B,0x5327,INVALC,INVALC,0x5955,0x595F, INVALC,INVALC,INVALC,0x5959,0x595B,INVALC,0x5956,INVALC, 0x595A,0x5954,0x595D,INVALC,0x595C,0x5958,INVALC,0x595E, INVALC,0x5957,INVALC,0x5E55,0x5E5B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5E56,0x5E59,INVALC,0x5E5A, INVALC,INVALC,0x5E58,INVALC,0x5E57,INVALC,INVALC,INVALC, 0x626B,0x6269,0x626A,INVALC,INVALC,0x664C,INVALC,0x664B, INVALC,0x6961,INVALC,0x6960,INVALC,0x6B7E,0x6D72,INVALC, 0x7132,0x7133,INVALC,INVALC,INVALC,INVALC,0x3F37,INVALC, INVALC,0x5E5C,INVALC,INVALC,INVALC,INVALC,0x3F38,INVALC, INVALC,INVALC,0x5960,INVALC,INVALC,INVALC,INVALC,0x3F39, 0x3F3A,0x3F3B,INVALC,INVALC,INVALC,INVALC,INVALC,0x2D2B, /* Block 131, Array index 0x3500 */ INVALC,0x3234,INVALC,INVALC,0x3F3C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x664D,INVALC,INVALC,INVALC,INVALC, INVALC,0x3856,INVALC,INVALC,INVALC,0x4D32,0x532E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4648,INVALC,INVALC, 0x2851,0x2D2C,INVALC,INVALC,INVALC,0x3236,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3235, INVALC,INVALC,0x385B,0x3858,0x385A,INVALC,INVALC,INVALC, 0x3857,INVALC,0x3859,INVALC,0x3F3D,0x3F3E,INVALC,0x3F3F, 0x464B,INVALC,0x464C,INVALC,0x464A,0x464D,INVALC,INVALC, INVALC,0x4649,INVALC,INVALC,INVALC,INVALC,0x5333,0x532F, 0x5332,0x5334,0x5331,0x5330,INVALC,0x5961,0x5962,0x5963, INVALC,INVALC,0x5E5E,0x5E5D,0x5E5F,INVALC,0x626D,0x626C, INVALC,0x664F,INVALC,0x6650,0x664E,INVALC,INVALC,INVALC, 0x6962,0x6963,INVALC,0x6D73,0x6F3E,0x7049,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x385C,0x3F40,INVALC,INVALC, 0x226A,INVALC,INVALC,INVALC,0x226B,0x226D,INVALC,0x226E, 0x226C,INVALC,INVALC,0x2522,0x2523,0x247B,INVALC,INVALC, INVALC,INVALC,0x2521,INVALC,INVALC,INVALC,0x247C,0x247A, 0x2479,0x247D,INVALC,0x247E,0x2D2D,INVALC,INVALC,INVALC, 0x2856,INVALC,0x2855,0x2857,INVALC,INVALC,0x285C,INVALC, 0x2852,0x2860,0x2866,INVALC,0x2863,INVALC,INVALC,0x2859, 0x285F,0x2861,INVALC,0x2854,INVALC,INVALC,0x285A,INVALC, INVALC,INVALC,INVALC,INVALC,0x285E,0x2858,0x2865,INVALC, INVALC,INVALC,0x285D,INVALC,0x285B,INVALC,INVALC,INVALC, 0x2853,INVALC,0x2862,0x2864,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2D34,0x2D37,INVALC, INVALC,0x2D2E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2D43,0x2D3A,INVALC,INVALC,0x2D42,INVALC,INVALC,INVALC, 0x2D32,INVALC,0x2D41,0x2D36,0x2D39,0x2D46,INVALC,INVALC, 0x2D40,INVALC,0x2D3B,0x2D45,0x2D38,0x2D3C,0x2D3F,INVALC, INVALC,0x2D30,0x2D44,0x2D3E,INVALC,INVALC,0x2D2F,INVALC, /* Block 132, Array index 0x3600 */ 0x2D33,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2D31, 0x3247,INVALC,INVALC,INVALC,0x2D3D,0x2942,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x324A,INVALC, INVALC,0x323A,INVALC,0x3245,0x3241,INVALC,0x3254,INVALC, 0x324C,INVALC,0x3242,INVALC,0x324B,0x323C,0x3240,0x3257, INVALC,0x324F,0x3246,INVALC,0x3255,0x3238,INVALC,0x324E, INVALC,INVALC,INVALC,0x3237,INVALC,INVALC,INVALC,0x324D, INVALC,INVALC,0x2D35,0x3F41,0x3248,INVALC,INVALC,0x323E, INVALC,0x323F,0x3243,INVALC,0x3239,0x3251,INVALC,0x3250, 0x3258,INVALC,INVALC,0x3256,0x3252,0x3249,0x3244,INVALC, INVALC,0x323B,INVALC,0x3253,INVALC,INVALC,0x323D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3862,0x3864,0x3869,0x387D,INVALC, INVALC,INVALC,0x3861,INVALC,INVALC,0x386C,0x3873,0x3879, INVALC,0x3866,INVALC,0x386D,INVALC,INVALC,INVALC,0x387B, 0x3876,INVALC,INVALC,0x3872,0x386E,0x3860,INVALC,0x3865, 0x385D,INVALC,INVALC,INVALC,0x386A,0x3867,INVALC,0x3877, INVALC,0x3868,0x3F6A,0x3870,INVALC,0x386F,INVALC,INVALC, INVALC,INVALC,INVALC,0x385E,0x3863,0x3874,0x387A,INVALC, 0x385F,0x386B,0x3871,INVALC,INVALC,INVALC,0x387C,0x3875, 0x3878,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3F51, 0x3F45,INVALC,0x3F62,0x3F6B,0x3F6E,INVALC,0x3F4D,0x3F66, 0x3F4E,0x3F5C,INVALC,0x3F58,INVALC,INVALC,0x3F59,0x3F42, INVALC,0x3F67,INVALC,INVALC,INVALC,0x3F64,0x3F5A,0x3F70, 0x3F55,0x466D,INVALC,0x3F73,INVALC,0x3F53,0x3F5F,INVALC, INVALC,0x3F57,0x3F71,0x3F50,0x3F49,0x3F54,INVALC,0x3F48, 0x3F46,INVALC,0x3F68,0x3F4F,0x3F6C,INVALC,0x3F6D,INVALC, INVALC,INVALC,INVALC,0x3F63,INVALC,0x3F5B,0x3F4B,INVALC, INVALC,0x3F43,0x3F65,0x3F6F,0x3F4A,INVALC,0x3F74,0x3F56, /* Block 133, Array index 0x3700 */ INVALC,0x3F52,INVALC,INVALC,INVALC,INVALC,0x3F61,INVALC, INVALC,0x3F5D,INVALC,INVALC,INVALC,INVALC,INVALC,0x3F5E, 0x3F4C,0x3F60,0x3F47,0x3F69,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3F72,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3F44,INVALC,INVALC,INVALC,INVALC, INVALC,0x466C,INVALC,0x4724,INVALC,0x4671,INVALC,0x466F, 0x465A,INVALC,0x466A,0x467E,0x4666,INVALC,0x467D,0x4664, INVALC,0x4674,0x4665,0x467B,INVALC,INVALC,INVALC,0x464F, 0x4657,INVALC,0x4670,0x4668,0x4723,0x466B,INVALC,0x467C, INVALC,INVALC,INVALC,0x466E,0x4676,0x465B,0x4675,INVALC, 0x4728,0x4656,0x4677,INVALC,0x4726,INVALC,0x4650,INVALC, INVALC,0x465E,0x465D,INVALC,INVALC,0x4661,0x4663,0x4672, 0x4725,INVALC,INVALC,INVALC,INVALC,0x4655,INVALC,0x4659, 0x4721,INVALC,INVALC,INVALC,INVALC,INVALC,0x4727,0x4678, 0x4673,INVALC,INVALC,0x4660,0x465F,INVALC,0x4651,INVALC, 0x4669,0x4652,0x4667,INVALC,INVALC,0x465C,0x4722,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4658,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4654,0x467A,0x4653, INVALC,0x4D5A,INVALC,INVALC,0x4D49,INVALC,INVALC,0x4D33, 0x4D51,INVALC,0x4D42,0x4D4C,INVALC,0x4D45,INVALC,0x4D36, 0x4D54,0x4D35,0x4D48,INVALC,0x4D34,INVALC,INVALC,0x4D46, 0x4D4F,0x4D4D,0x4D41,0x4D3C,0x4D3A,INVALC,0x4D3B,0x4D4E, 0x4D59,0x4D43,INVALC,INVALC,0x4D3E,INVALC,0x4D52,INVALC, INVALC,0x4D3D,0x4D37,0x4D47,INVALC,INVALC,INVALC,INVALC, INVALC,0x4D3F,0x4D39,INVALC,INVALC,0x4679,INVALC,0x4D4A, INVALC,INVALC,INVALC,INVALC,0x4D4B,0x4D40,0x4D38,0x4D53, 0x4D44,INVALC,0x4D57,INVALC,0x4D56,INVALC,0x4D50,0x4D55, INVALC,INVALC,INVALC,0x4D58,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x535C, 0x535D,0x5350,0x534F,0x534B,INVALC,INVALC,INVALC,0x535F, 0x535E,0x464E,0x5348,0x534C,0x5346,INVALC,0x5359,0x534A, INVALC,0x5360,0x5343,0x5341,0x534D,0x5357,0x5352,INVALC, /* Block 134, Array index 0x3800 */ 0x5338,INVALC,0x5356,INVALC,INVALC,INVALC,INVALC,0x4662, 0x5344,0x533B,0x533E,0x5364,0x5345,0x533C,0x533A,0x5337, INVALC,INVALC,0x534E,INVALC,INVALC,0x5349,0x5351,INVALC, 0x5361,0x5365,INVALC,INVALC,0x5340,0x5354,0x5358,0x533D, 0x5362,INVALC,INVALC,INVALC,0x5335,INVALC,0x535B,0x533F, 0x5353,0x5339,0x5347,0x5342,INVALC,INVALC,0x5355,0x5366, 0x5363,0x535A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5336,INVALC,INVALC,0x5974,INVALC, 0x596B,0x596E,INVALC,INVALC,0x5970,0x5965,0x596C,0x5972, INVALC,INVALC,INVALC,INVALC,INVALC,0x5967,0x5977,INVALC, INVALC,0x5971,INVALC,0x5968,0x5A22,0x597A,0x5964,0x5E72, 0x596A,INVALC,INVALC,0x5975,INVALC,0x5A21,INVALC,INVALC, 0x597C,0x5969,0x596F,0x5973,0x596D,0x5A23,0x597E,0x597B, INVALC,INVALC,INVALC,0x5966,0x5A24,INVALC,0x5978,INVALC, INVALC,0x5976,INVALC,INVALC,INVALC,0x5979,0x5F21,0x5E6C, 0x5E71,0x5E7E,0x5E70,0x5E68,0x5E6D,INVALC,INVALC,INVALC, 0x5E61,0x5E79,0x5E7B,0x5E60,INVALC,0x5E7D,0x5E75,INVALC, 0x5E7C,0x5E6E,INVALC,0x5E66,0x597D,0x5E76,0x5E73,0x5E62, 0x5F23,INVALC,INVALC,INVALC,INVALC,0x5E64,0x5E74,INVALC, 0x5F22,0x5E77,0x5E6A,INVALC,INVALC,0x5E78,0x5E6B,0x5F24, 0x5E65,0x5E6F,0x5E7A,0x5E67,0x5E69,INVALC,INVALC,0x5E63, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x627D,INVALC,0x6273,0x626E,0x6274,0x627E,0x6324, 0x6323,INVALC,INVALC,INVALC,INVALC,0x6275,0x6325,0x6278, 0x6270,INVALC,0x6272,0x6271,0x6277,0x627C,0x626F,0x6276, 0x627B,INVALC,INVALC,0x6279,INVALC,INVALC,0x627A,INVALC, INVALC,0x6660,0x6321,INVALC,INVALC,INVALC,INVALC,0x6658, 0x665C,0x6654,0x6657,INVALC,0x665F,INVALC,0x6664,0x665D, INVALC,0x6655,0x6665,0x665E,INVALC,INVALC,0x6662,INVALC, 0x6656,INVALC,INVALC,0x6651,0x6659,0x6653,INVALC,0x6663, 0x6661,0x6652,0x665A,INVALC,INVALC,INVALC,0x696A,INVALC, 0x665B,INVALC,INVALC,INVALC,INVALC,0x696F,0x6967,0x6965, /* Block 135, Array index 0x3900 */ 0x6969,0x6966,INVALC,INVALC,0x696B,0x696D,INVALC,INVALC, INVALC,0x696C,INVALC,INVALC,0x696E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6C21,0x6C27,INVALC,0x6968,0x6C26,INVALC,0x6C2D,0x6C24, 0x6C2B,0x6C2A,0x6964,0x6C25,0x6322,0x6C2E,0x6C23,0x6C28, INVALC,0x6C2C,0x6C22,INVALC,0x6D77,INVALC,0x6C29,INVALC, INVALC,0x6F43,0x6D78,0x6D76,0x6D74,0x6D75,0x6D79,INVALC, INVALC,0x6F41,0x6F3F,0x6F44,0x6F42,INVALC,0x6F45,INVALC, 0x6F40,INVALC,INVALC,0x704A,INVALC,INVALC,0x7134,0x7135, 0x7136,INVALC,INVALC,0x7235,0x722D,0x226F,INVALC,INVALC, INVALC,INVALC,0x325A,0x3259,INVALC,INVALC,0x3921,INVALC, INVALC,0x387E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4D5B,0x5367,0x5A25,0x5A27,0x5A26,INVALC,INVALC, 0x5F25,0x6326,0x7173,INVALC,INVALC,0x2869,0x286A,0x2868, 0x2867,INVALC,INVALC,0x2D4A,0x2D48,INVALC,INVALC,0x2D47, INVALC,INVALC,INVALC,INVALC,0x2D49,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3266,0x3263,0x3261, INVALC,INVALC,INVALC,0x3264,INVALC,0x325E,0x326D,INVALC, 0x326F,0x325F,INVALC,INVALC,0x3270,0x326B,0x325D,0x3262, 0x326C,0x3268,0x3265,INVALC,INVALC,0x326E,0x3260,INVALC, INVALC,0x3269,0x325B,INVALC,INVALC,0x3267,INVALC,0x326A, 0x325C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3928,INVALC,INVALC,0x392B,0x392E,INVALC,INVALC,0x3923, 0x392C,0x392A,0x3927,0x392F,0x3930,0x3932,0x3933,0x3922, INVALC,0x3925,0x3924,0x3931,INVALC,0x3926,INVALC,INVALC, 0x3929,INVALC,INVALC,INVALC,0x392D,INVALC,INVALC,INVALC, INVALC,0x4025,INVALC,0x3F78,INVALC,INVALC,0x472E,0x4023, 0x3F75,INVALC,0x3F7A,INVALC,0x3F7E,0x3F7C,INVALC,INVALC, INVALC,INVALC,0x3F76,0x3F79,INVALC,INVALC,0x3F77,INVALC, 0x4024,0x4022,0x3F7B,0x3F7D,0x4021,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x472F,0x4735,0x472B, 0x4731,INVALC,0x472D,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 136, Array index 0x3A00 */ INVALC,0x4734,INVALC,INVALC,0x472A,0x4737,INVALC,INVALC, INVALC,0x4733,INVALC,0x4729,0x472C,0x4736,0x4732,INVALC, INVALC,0x4D7B,0x4D70,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4D64,0x4D79,0x4D65,INVALC,INVALC,0x4D62,INVALC, 0x4D6B,0x4D63,INVALC,0x4D5D,0x4D78,INVALC,0x4D75,0x4D76, 0x4D5E,INVALC,0x4D6D,INVALC,0x4D67,0x4D6E,0x4D61,INVALC, 0x4D7A,0x4D72,0x4D6C,0x4D5C,INVALC,0x4D73,INVALC,INVALC, 0x4D77,INVALC,0x4D71,INVALC,0x4D6F,INVALC,0x4D69,INVALC, 0x4D60,0x4D68,0x4D74,0x4D66,INVALC,INVALC,0x4D6A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4730,0x5379,0x5424, 0x5378,0x5374,0x5371,INVALC,0x536F,INVALC,0x5368,INVALC, 0x536E,INVALC,0x5373,0x5370,0x5422,0x537B,0x5375,0x537A, INVALC,0x5372,0x5427,0x5369,0x536A,0x5423,INVALC,0x5428, INVALC,0x5429,0x5377,0x4D5F,0x537D,0x5376,0x5421,0x537C, INVALC,INVALC,INVALC,0x536D,INVALC,0x5426,INVALC,0x536B, INVALC,0x5A32,0x537E,0x5425,INVALC,INVALC,INVALC,INVALC, INVALC,0x5A2F,INVALC,INVALC,0x5A39,0x5A35,INVALC,0x5A33, 0x5A2E,0x5A3D,INVALC,INVALC,INVALC,INVALC,INVALC,0x5A2A, 0x5A36,0x5A37,0x5A2D,0x5A2C,0x5A3A,INVALC,0x5A30,0x5A2B, 0x5A31,INVALC,0x5A3C,0x5A29,0x5A3B,0x5A38,INVALC,INVALC, INVALC,INVALC,INVALC,0x5A34,0x5A28,INVALC,INVALC,INVALC, INVALC,INVALC,0x5F27,INVALC,0x5F2B,0x5F28,0x5F2F,0x5F35, 0x5F2A,INVALC,0x5F3E,INVALC,0x5F38,0x5F2D,0x5F39,0x5F34, 0x5F3B,0x5F2C,INVALC,INVALC,0x5F2E,0x5F3C,0x5F26,0x5F3A, INVALC,INVALC,0x5F32,0x5F31,0x5F36,0x5F29,INVALC,INVALC, INVALC,0x5F30,0x5F37,INVALC,0x5F33,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6333,0x6331,INVALC,INVALC,0x6337, 0x6335,0x6338,INVALC,0x632A,0x6332,0x633C,0x5F3D,0x632E, INVALC,0x536C,0x6329,0x6336,0x6330,0x632D,0x6328,0x6327, 0x633B,INVALC,0x632C,0x632B,INVALC,0x6334,INVALC,INVALC, INVALC,INVALC,INVALC,0x632F,0x633A,INVALC,0x6669,0x666A, INVALC,INVALC,0x6667,INVALC,0x666F,INVALC,INVALC,0x6671, /* Block 137, Array index 0x3B00 */ 0x6666,0x6339,0x6673,0x6668,INVALC,INVALC,0x666E,INVALC, 0x6670,0x666B,0x6672,0x666D,0x666C,INVALC,INVALC,INVALC, 0x6971,0x6972,INVALC,0x6974,INVALC,INVALC,0x6975,0x6973, INVALC,0x6970,INVALC,0x6C31,0x6C34,0x6C30,INVALC,INVALC, 0x6C32,INVALC,INVALC,INVALC,0x6C33,0x6D7E,0x6D7C,INVALC, 0x6D7B,0x6C2F,0x6D7D,0x6C35,0x6D7A,INVALC,0x6F48,0x6F26, 0x6F46,INVALC,0x6F47,0x6F49,INVALC,0x704D,INVALC,0x704C, 0x704B,INVALC,INVALC,INVALC,0x715D,0x7175,0x7174,0x7176, INVALC,0x2D4B,INVALC,0x3271,0x3272,INVALC,INVALC,INVALC, 0x4026,INVALC,0x6C36,0x704E,INVALC,INVALC,0x2D4C,INVALC, INVALC,INVALC,0x3934,INVALC,INVALC,0x4028,0x4027,INVALC, INVALC,INVALC,0x542A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2D4D, INVALC,0x2D4F,0x2D4E,INVALC,INVALC,0x3273,INVALC,0x327A, INVALC,0x3278,0x3276,INVALC,0x327D,0x3274,0x3275,INVALC, INVALC,INVALC,INVALC,INVALC,0x327E,INVALC,0x327C,0x3279, 0x3277,INVALC,INVALC,0x327B,INVALC,INVALC,INVALC,INVALC, INVALC,0x3935,INVALC,INVALC,0x3945,INVALC,0x3947,INVALC, INVALC,0x393B,INVALC,0x3946,INVALC,0x3936,INVALC,0x3942, 0x393E,0x3940,0x393A,0x3941,INVALC,INVALC,INVALC,0x393D, INVALC,0x393C,0x3938,INVALC,0x3943,INVALC,INVALC,0x393F, 0x3937,INVALC,0x3939,INVALC,0x3944,INVALC,INVALC,INVALC, INVALC,INVALC,0x4033,INVALC,INVALC,INVALC,0x402F,0x4031, 0x402C,0x402B,0x4029,INVALC,0x4030,0x4032,0x402E,INVALC, 0x402D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4035,INVALC,0x4739,0x473F,0x473A,0x473B,INVALC, 0x4740,INVALC,INVALC,INVALC,INVALC,INVALC,0x4738,0x402A, INVALC,INVALC,0x473E,0x473D,INVALC,INVALC,0x473C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4D7D, INVALC,INVALC,INVALC,0x4E2A,0x4E29,INVALC,0x4E24,INVALC, 0x4E28,0x4D7E,0x4E21,INVALC,INVALC,INVALC,0x4E26,0x4D7C, INVALC,INVALC,0x4E22,0x4E27,0x4E25,INVALC,0x4E23,INVALC, /* Block 138, Array index 0x3C00 */ INVALC,0x4034,INVALC,INVALC,INVALC,0x542B,0x5432,INVALC, INVALC,0x5436,INVALC,0x542E,0x542C,INVALC,0x5435,INVALC, INVALC,0x5434,INVALC,INVALC,0x542D,INVALC,0x5433,0x542F, 0x5430,0x5431,INVALC,INVALC,INVALC,INVALC,0x5A3E,0x5A4A, INVALC,INVALC,0x5A45,0x5A47,INVALC,INVALC,0x5A3F,0x5A43, INVALC,0x5A46,INVALC,INVALC,0x5A49,0x5A41,0x5A42,0x5A48, 0x5A40,0x5A44,INVALC,0x5F40,INVALC,0x5F3F,INVALC,0x5F45, INVALC,INVALC,INVALC,INVALC,0x5F41,INVALC,0x5F42,INVALC, INVALC,0x5F43,0x5F46,INVALC,INVALC,INVALC,0x6341,INVALC, INVALC,0x6344,INVALC,0x633E,0x6340,INVALC,INVALC,0x633F, 0x6342,0x6343,0x5F44,0x633D,INVALC,INVALC,INVALC,0x6677, 0x667A,0x667C,0x6675,0x6676,0x6679,0x667B,INVALC,INVALC, INVALC,0x6678,0x6674,0x6976,INVALC,INVALC,0x6977,INVALC, INVALC,0x6C38,INVALC,0x6C3A,INVALC,0x6C37,0x6C39,INVALC, INVALC,0x6E21,INVALC,0x6F4C,0x6F4B,INVALC,0x6F4A,INVALC, INVALC,0x7137,0x7138,0x713A,0x7139,INVALC,0x2270,INVALC, INVALC,INVALC,0x3948,INVALC,INVALC,0x4741,INVALC,INVALC, 0x667D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4036,INVALC,0x4038, 0x4037,INVALC,INVALC,0x4742,INVALC,0x4E2B,0x4E2E,0x4E2D, INVALC,0x4E2C,0x5437,0x5439,0x5438,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5F47,0x5F49,0x5F48, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6721,0x667E, INVALC,0x6978,INVALC,INVALC,INVALC,INVALC,0x6E23,0x6E22, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2D50,INVALC,0x394B,0x3949,INVALC, INVALC,0x394A,0x403A,0x403B,0x4749,0x4039,INVALC,0x4743, 0x4747,0x4746,0x4748,INVALC,0x4745,0x4744,0x474A,INVALC, 0x4E31,0x4E2F,INVALC,0x4E30,0x543C,0x543A,INVALC,INVALC, 0x543B,0x5A4B,0x5F4A,0x5F4B,INVALC,INVALC,0x6722,0x6979, INVALC,INVALC,0x6C3B,0x6E24,INVALC,INVALC,0x6F4D,0x713B, /* Block 139, Array index 0x3D00 */ INVALC,INVALC,INVALC,INVALC,0x2D51,INVALC,INVALC,0x2D52, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3321,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x394F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x394D, INVALC,INVALC,INVALC,INVALC,0x394E,INVALC,INVALC,INVALC, 0x394C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x403E,INVALC,INVALC,INVALC,INVALC,INVALC,0x474F, 0x4040,INVALC,INVALC,INVALC,0x4043,0x4044,INVALC,INVALC, 0x4046,INVALC,0x4048,INVALC,0x4049,0x403D,0x403C,0x404A, INVALC,0x4047,0x4045,INVALC,INVALC,INVALC,INVALC,0x4041, 0x4042,0x403F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x474E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4756,0x4753,0x474B,0x4750, INVALC,INVALC,0x4757,INVALC,INVALC,INVALC,INVALC,0x474D, INVALC,0x4755,0x4751,0x4754,0x4752,INVALC,0x474C,INVALC, INVALC,INVALC,INVALC,0x4E34,INVALC,INVALC,INVALC,0x4E36, INVALC,INVALC,0x4E35,INVALC,INVALC,INVALC,0x4E37,INVALC, INVALC,0x4E33,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4E32,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x543F,INVALC,0x544B,0x5444,INVALC,0x544C,0x5446,INVALC, 0x5447,INVALC,INVALC,0x544A,INVALC,0x5448,0x543E,INVALC, 0x5A56,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x543D, INVALC,0x5441,INVALC,0x5440,0x5442,0x5443,INVALC,0x5445, 0x5449,0x544D,INVALC,INVALC,INVALC,0x5A51,0x5A57,0x5A54, 0x5A4C,0x5A58,0x5A4D,INVALC,0x5A53,INVALC,INVALC,INVALC, 0x5A59,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5A5B, 0x5A55,INVALC,0x5A4E,INVALC,0x5A4F,0x5A50,INVALC,INVALC, INVALC,INVALC,INVALC,0x5A5C,INVALC,INVALC,INVALC,0x5A5A, /* Block 140, Array index 0x3E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,0x5F50,0x5F59,0x5F56, 0x5F58,INVALC,INVALC,0x5F51,INVALC,0x5F57,INVALC,0x5F53, INVALC,0x5F4F,0x5F54,0x5F5B,0x5A52,0x5F55,0x5F4E,INVALC, 0x5F4D,INVALC,0x5F5C,INVALC,0x5F5A,INVALC,0x5F4C,INVALC, INVALC,INVALC,0x5F52,0x6347,0x6355,0x6350,0x6352,0x6346, INVALC,INVALC,0x6345,INVALC,INVALC,INVALC,0x6354,0x634C, 0x6349,0x634F,INVALC,0x6348,INVALC,0x634A,0x6353,0x6351, INVALC,INVALC,0x6358,0x6356,0x634D,0x6357,0x634E,INVALC, 0x6726,INVALC,0x672D,INVALC,INVALC,0x6C3E,INVALC,0x634B, 0x6724,INVALC,0x6725,0x672A,INVALC,INVALC,INVALC,INVALC, 0x6723,0x672C,0x672E,0x6727,0x6729,0x672B,0x6728,0x672F, INVALC,INVALC,INVALC,INVALC,INVALC,0x697C,INVALC,INVALC, 0x697A,INVALC,INVALC,0x697E,INVALC,0x6A21,INVALC,0x6A22, 0x697D,INVALC,0x697B,INVALC,INVALC,0x6A23,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6C3D,0x6C3C,0x6C3F,0x6C40,INVALC,INVALC,0x6E25,0x6E2A, INVALC,INVALC,0x6E27,INVALC,0x6E26,0x6E29,0x6E28,INVALC, 0x6F51,INVALC,INVALC,0x6F50,0x6F4E,INVALC,0x6F4F,INVALC, INVALC,INVALC,INVALC,INVALC,0x704F,0x7050,INVALC,INVALC, 0x713C,0x713D,INVALC,INVALC,INVALC,INVALC,0x7177,0x7236, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 141, Array index 0x3F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3950,INVALC,0x3951,0x4758,0x4E38,0x544E,INVALC, INVALC,INVALC,0x6359,0x6730,INVALC,0x6F52,INVALC,0x3322, INVALC,INVALC,0x475A,0x4759,INVALC,0x544F,INVALC,0x5F5D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x286B,0x3323, INVALC,INVALC,INVALC,INVALC,0x3952,0x3953,INVALC,0x404B, INVALC,INVALC,INVALC,INVALC,0x475C,0x475B,0x475D,INVALC, 0x4E39,0x4E3A,INVALC,INVALC,INVALC,INVALC,INVALC,0x5F61, 0x5F5E,0x5F60,0x5F5F,INVALC,INVALC,0x635A,0x6732,0x6731, 0x2524,INVALC,INVALC,0x3324,INVALC,0x3954,INVALC,INVALC, 0x404D,0x404C,INVALC,INVALC,0x475F,0x4760,0x475E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5450, 0x5A5F,0x5A5D,0x5A5E,INVALC,0x5F63,0x5F62,INVALC,0x635D, 0x635C,0x635B,0x6733,INVALC,0x7178,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3326,0x3325,0x3955,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4050,INVALC,INVALC,INVALC,INVALC,0x4052,INVALC,INVALC, INVALC,0x4051,0x404E,INVALC,INVALC,INVALC,0x404F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4761,INVALC,INVALC,0x4E3C, INVALC,INVALC,INVALC,INVALC,INVALC,0x4E3B,INVALC,0x4E3D, INVALC,0x5453,0x5455,INVALC,INVALC,0x5456,INVALC,0x5452, INVALC,INVALC,INVALC,INVALC,INVALC,0x5451,INVALC,0x5457, 0x5454,INVALC,INVALC,INVALC,INVALC,INVALC,0x5A61,INVALC, 0x5A63,0x5A62,INVALC,0x5A64,INVALC,0x5A60,INVALC,INVALC, INVALC,0x5F64,INVALC,INVALC,INVALC,INVALC,0x635E,INVALC, /* Block 142, Array index 0x4000 */ 0x6361,INVALC,0x6360,INVALC,0x635F,INVALC,0x6734,0x6735, INVALC,0x6736,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6C41,INVALC,INVALC,INVALC,0x6C42,0x6E2B,INVALC,INVALC, INVALC,0x6F53,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4762,0x4763,INVALC,INVALC,0x5A65,INVALC,0x5A66,0x5F65, INVALC,INVALC,0x2D53,INVALC,INVALC,INVALC,0x3327,INVALC, 0x3328,0x3958,INVALC,0x3957,INVALC,0x3956,INVALC,INVALC, 0x4054,INVALC,INVALC,INVALC,0x4053,INVALC,INVALC,INVALC, INVALC,0x4055,INVALC,INVALC,0x4765,0x4768,0x4766,0x4767, 0x476B,0x4764,0x476C,0x4769,0x476A,INVALC,0x4E3E,INVALC, INVALC,INVALC,INVALC,0x545B,0x5459,INVALC,INVALC,INVALC, 0x5458,0x545A,INVALC,INVALC,INVALC,0x5A67,INVALC,0x5A68, INVALC,INVALC,0x6738,0x673A,0x6737,0x6739,0x6A24,0x6C43, INVALC,INVALC,0x715E,INVALC,INVALC,0x3329,0x332B,0x332A, INVALC,0x395B,INVALC,INVALC,0x3959,INVALC,INVALC,0x395C, INVALC,0x395D,0x395A,INVALC,INVALC,0x4061,INVALC,0x4059, 0x405F,INVALC,INVALC,INVALC,INVALC,0x4058,INVALC,0x405C, 0x4772,INVALC,INVALC,0x4057,INVALC,0x405D,0x405A,0x4060, 0x4056,0x405E,INVALC,INVALC,0x405B,INVALC,INVALC,INVALC, 0x476E,INVALC,0x4775,0x4774,INVALC,INVALC,INVALC,0x4776, INVALC,0x4773,INVALC,0x4778,0x476F,INVALC,0x4771,INVALC, 0x476D,0x4770,0x4777,INVALC,0x4779,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4E43,0x4E49,0x4E41, /* Block 143, Array index 0x4100 */ 0x4E4A,INVALC,0x4E40,0x4E45,0x4E4B,0x4E48,0x4E47,0x4E46, INVALC,0x4E3F,0x4E44,INVALC,INVALC,0x4E42,INVALC,INVALC, INVALC,0x5464,0x5469,0x546B,0x5468,0x5461,0x5463,0x546D, 0x546A,0x5465,0x546E,0x5462,0x546C,INVALC,INVALC,INVALC, 0x545C,INVALC,INVALC,0x545D,0x545F,0x545E,0x5466,0x5467, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5460,INVALC, 0x5A72,INVALC,INVALC,0x5A69,INVALC,INVALC,0x5A6E,INVALC, 0x5A6B,INVALC,INVALC,INVALC,0x5A6F,0x5A70,0x5A6A,0x5A73, 0x5A6C,0x5A71,INVALC,INVALC,INVALC,0x5A6D,INVALC,0x5F6B, INVALC,INVALC,INVALC,INVALC,0x5F6A,0x5F67,0x5F66,INVALC, 0x5F69,INVALC,INVALC,0x5F68,0x636F,INVALC,0x6366,0x6365, INVALC,INVALC,0x636B,0x636A,0x6362,0x636D,0x6367,INVALC, 0x6364,0x636C,0x6363,INVALC,INVALC,0x6368,INVALC,0x6369, INVALC,0x636E,0x673E,INVALC,INVALC,0x673B,INVALC,0x673F, INVALC,INVALC,INVALC,0x673D,INVALC,INVALC,INVALC,INVALC, 0x673C,INVALC,INVALC,0x6740,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6A27,INVALC,0x6A25,INVALC, 0x6A26,INVALC,INVALC,INVALC,0x6C45,INVALC,0x6C44,INVALC, 0x6E30,INVALC,0x6E2F,INVALC,0x6E2D,0x6E2C,0x6E31,0x6E32, 0x6F54,INVALC,0x6E2E,INVALC,INVALC,0x7054,0x7051,0x7052, 0x7053,INVALC,INVALC,0x7140,0x713F,0x713E,0x715F,INVALC, 0x722E,0x7179,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5A74,INVALC,INVALC, INVALC,INVALC,0x6741,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x717A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x332C,INVALC,0x332D,INVALC,INVALC,INVALC,0x3962, 0x395E,INVALC,INVALC,INVALC,0x3961,0x3960,0x395F,INVALC, 0x3963,0x3964,INVALC,INVALC,INVALC,0x4068,0x4066,0x406A, 0x406B,0x4071,INVALC,0x406D,0x406F,INVALC,0x4067,0x4062, INVALC,0x406E,INVALC,INVALC,0x4070,0x4069,0x406C,0x4063, INVALC,0x4065,0x4064,INVALC,INVALC,INVALC,INVALC,0x477B, /* Block 144, Array index 0x4200 */ 0x477D,0x477C,0x4823,INVALC,INVALC,0x477E,0x477A,0x4821, 0x4822,INVALC,INVALC,0x4824,INVALC,0x4E4F,0x4E4E,INVALC, 0x4E4C,0x4E4D,INVALC,INVALC,INVALC,INVALC,0x5475,0x5476, 0x5471,INVALC,0x5472,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5473,INVALC,INVALC,0x5474,0x5470,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x546F,INVALC,0x5A76,INVALC, INVALC,INVALC,0x5A78,INVALC,0x5A7B,0x5A77,0x5A75,0x5A7A, INVALC,0x5A79,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5F6D,INVALC,INVALC,0x5F6C,INVALC,INVALC,0x6370,0x6371, 0x6372,INVALC,INVALC,0x6373,INVALC,INVALC,INVALC,0x6744, 0x6745,0x6743,0x6742,0x6746,INVALC,0x6A2B,0x6A29,0x6A2A, 0x6A2C,0x6A28,0x6A2D,0x6C47,INVALC,0x6C48,0x6C46,INVALC, 0x6E33,INVALC,0x6E34,0x6F56,0x6F55,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6747,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2526, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2525,INVALC,0x286D,INVALC,0x286F,INVALC,INVALC, INVALC,INVALC,0x286C,0x286E,INVALC,0x2871,0x2870,0x2872, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2D57,0x2D55,INVALC,0x2D54,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2D56,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x332F,0x3335,INVALC, INVALC,INVALC,INVALC,0x3332,0x3334,INVALC,0x332E,0x3331, /* Block 145, Array index 0x4300 */ INVALC,INVALC,0x3330,INVALC,0x3333,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3966,0x3969,INVALC,INVALC,INVALC, INVALC,0x3967,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3968,INVALC,INVALC,INVALC, INVALC,0x396A,INVALC,INVALC,0x3965,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4072,INVALC,0x4074, INVALC,INVALC,INVALC,INVALC,0x4073,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4829,INVALC,0x4826, INVALC,INVALC,INVALC,INVALC,0x4827,INVALC,INVALC,INVALC, INVALC,0x4828,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4825,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x547A, INVALC,INVALC,INVALC,0x547B,INVALC,INVALC,INVALC,0x5479, 0x5478,INVALC,INVALC,0x5477,INVALC,INVALC,0x5A7C,INVALC, INVALC,0x5A7D,INVALC,0x5A7E,INVALC,INVALC,0x5F6F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5F6E,0x5B21,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6A2E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2275,INVALC,INVALC,0x2272, 0x2273,0x2271,INVALC,0x2274,INVALC,INVALC,0x252A,0x2527, 0x252C,0x2528,INVALC,INVALC,INVALC,0x2529,INVALC,0x252B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2875, 0x2877,INVALC,0x2873,0x2876,0x2874,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2D59,0x2D5D,0x2D5A, INVALC,INVALC,INVALC,INVALC,INVALC,0x2D5C,INVALC,0x2D5E, 0x2D60,INVALC,INVALC,0x2D5F,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3971,0x2D5B,0x3336,0x333F, 0x333D,0x3338,0x3339,0x333E,0x3340,INVALC,INVALC,0x333B, 0x3337,INVALC,INVALC,0x333A,0x3341,0x333C,INVALC,INVALC, INVALC,0x3974,0x396C,0x3972,0x3973,INVALC,INVALC,0x396B, 0x396D,0x2D58,0x396F,0x3970,0x396E,INVALC,INVALC,INVALC, INVALC,0x407B,0x5B22,0x407C,0x4079,INVALC,INVALC,0x4078, /* Block 146, Array index 0x4400 */ 0x407E,0x407D,INVALC,0x4123,0x4077,0x4122,0x4075,0x4121, 0x407A,INVALC,INVALC,0x4830,INVALC,0x482B,0x4831,0x482C, 0x482A,0x482D,INVALC,INVALC,0x482F,INVALC,0x482E,INVALC, INVALC,INVALC,0x4E56,0x4E59,0x4E51,0x4E55,INVALC,0x4E54, 0x4E52,0x4E58,0x4E53,0x4E50,0x4E57,INVALC,0x5523,INVALC, 0x6374,0x547E,0x5521,0x547D,0x4076,INVALC,0x5524,0x547C, INVALC,INVALC,0x5522,0x5B23,INVALC,0x5B24,0x5B25,INVALC, 0x5F70,INVALC,0x6375,0x6376,INVALC,INVALC,0x6377,0x6749, 0x6748,0x6A30,INVALC,0x6A2F,0x6C4A,0x6C4B,0x6C49,0x6E35, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3343,0x3344, 0x3342,INVALC,INVALC,0x3978,INVALC,0x3979,0x3975,INVALC, 0x3976,INVALC,0x3977,INVALC,INVALC,INVALC,INVALC,0x4126, 0x4128,0x4124,0x4127,INVALC,0x4125,INVALC,INVALC,INVALC, 0x4279,INVALC,INVALC,INVALC,INVALC,INVALC,0x4832,0x4833, INVALC,INVALC,0x4E5B,0x4E5D,INVALC,INVALC,INVALC,INVALC, INVALC,0x4E5C,0x4E5A,INVALC,INVALC,INVALC,INVALC,INVALC, 0x552B,0x5528,0x5529,INVALC,0x552A,0x5525,0x5526,INVALC, INVALC,INVALC,0x5527,INVALC,INVALC,0x5B29,INVALC,0x5B2A, 0x5B27,0x5B28,INVALC,0x5B26,INVALC,INVALC,INVALC,INVALC, INVALC,0x5F74,0x5F71,0x5F73,INVALC,0x5F77,INVALC,0x5F75, 0x5F78,0x5F76,0x5F72,INVALC,INVALC,0x6379,INVALC,0x637A, 0x6378,INVALC,0x637C,INVALC,INVALC,0x674B,INVALC,0x637B, 0x674A,INVALC,0x6A33,0x6A34,INVALC,0x6A32,INVALC,0x6A31, INVALC,0x6C4C,INVALC,INVALC,0x6F57,0x7056,0x7055,INVALC, INVALC,INVALC,0x7057,0x7160,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2D62,0x2D61,0x3345,INVALC,INVALC, INVALC,INVALC,0x3347,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3346,INVALC,0x3A21,INVALC,INVALC,INVALC, 0x3A26,INVALC,0x3A23,0x3A24,0x397A,INVALC,0x3A27,INVALC, INVALC,0x397C,INVALC,0x397D,0x397B,INVALC,INVALC,0x3A25, 0x397E,0x3A22,INVALC,INVALC,INVALC,0x4134,INVALC,0x4133, /* Block 147, Array index 0x4500 */ 0x4131,0x4129,0x4138,0x412C,0x4136,0x413D,0x4135,INVALC, INVALC,INVALC,0x412A,INVALC,0x4130,INVALC,INVALC,0x412F, INVALC,INVALC,0x4132,INVALC,INVALC,INVALC,0x413E,0x413C, INVALC,0x413B,0x412D,INVALC,0x4139,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x413A,0x412B,0x412E,0x4137, INVALC,INVALC,INVALC,INVALC,INVALC,0x4F22,0x483D,INVALC, 0x4836,0x4849,0x4852,0x4839,INVALC,INVALC,0x4846,INVALC, INVALC,INVALC,0x4837,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x483F,INVALC, 0x4834,INVALC,0x483E,INVALC,0x4850,INVALC,0x484E,0x4842, 0x484C,INVALC,0x4835,0x484F,0x484A,INVALC,0x4851,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x483B,INVALC, 0x4843,0x4847,INVALC,0x484B,INVALC,0x483A,0x4838,0x4844, INVALC,INVALC,INVALC,INVALC,0x4841,0x4840,INVALC,0x4845, 0x4848,INVALC,0x484D,INVALC,INVALC,INVALC,0x4E60,INVALC, INVALC,0x4E6A,0x4E62,INVALC,INVALC,0x4E73,0x4E7B,0x4E6C, INVALC,INVALC,0x4E70,0x483C,INVALC,INVALC,0x4E77,0x4E7C, 0x4E74,INVALC,0x4E76,0x4F21,0x4E78,0x4E66,0x4E6F,INVALC, INVALC,INVALC,INVALC,INVALC,0x4E64,0x4E71,INVALC,0x4E6B, INVALC,0x4E79,0x4E68,0x4E61,INVALC,0x4E7E,INVALC,INVALC, 0x4E63,0x4E75,0x4E72,0x4E6D,0x4E5F,0x4E5E,0x4E67,0x4E7A, INVALC,0x4E7D,0x4E65,0x4E69,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x554D,0x5549,0x5531,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x552F,INVALC,0x553B,0x552D,0x552E,INVALC,0x554C,INVALC, 0x553E,0x5543,0x553D,0x5B3C,0x5539,0x5541,0x553F,0x5532, 0x552C,0x5547,INVALC,0x5548,INVALC,0x5542,INVALC,0x5537, 0x5535,0x5530,INVALC,INVALC,INVALC,0x5538,0x5545,0x5534, 0x5544,0x554A,INVALC,INVALC,INVALC,INVALC,0x5540,0x5546, 0x553C,0x5536,INVALC,INVALC,INVALC,INVALC,0x4E6E,0x553A, INVALC,0x5533,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B41, INVALC,0x5B40,0x5B3E,0x5B50,INVALC,INVALC,0x5B4D,0x5B45, /* Block 148, Array index 0x4600 */ 0x5B4F,0x5B37,0x5B43,INVALC,INVALC,INVALC,0x5B2F,INVALC, 0x5B2D,0x5B4E,INVALC,0x5B4C,0x5B4B,0x5B3B,0x5B3A,0x5B30, INVALC,INVALC,0x5B36,0x5B3F,0x5B4A,INVALC,0x5B51,INVALC, INVALC,INVALC,INVALC,0x5B34,INVALC,0x5B3D,0x5B2C,0x5B2E, INVALC,INVALC,INVALC,0x5B35,0x5B44,0x554B,INVALC,0x5B2B, INVALC,0x5B46,0x5B49,INVALC,INVALC,0x5B39,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5B42,0x5B48,INVALC,INVALC, 0x5B32,0x5B47,INVALC,INVALC,0x5B33,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B38,0x5F7E, INVALC,0x6025,INVALC,INVALC,0x602B,INVALC,0x6039,0x6031, 0x6026,0x6027,0x6030,INVALC,INVALC,0x602F,0x5F7D,0x602E, 0x6022,0x603A,INVALC,INVALC,0x6023,INVALC,0x6036,INVALC, 0x6028,0x6035,INVALC,0x6037,0x5F7C,INVALC,INVALC,0x6038, INVALC,INVALC,0x602C,INVALC,INVALC,0x6029,INVALC,INVALC, INVALC,0x6032,INVALC,INVALC,INVALC,INVALC,0x6024,0x6033, INVALC,0x602D,0x5B31,0x6034,0x6021,INVALC,INVALC,INVALC, 0x642F,INVALC,INVALC,0x5F7A,INVALC,INVALC,INVALC,INVALC, 0x642C,0x6425,INVALC,INVALC,0x637E,0x6430,0x6427,0x602A, INVALC,0x6432,0x6421,INVALC,INVALC,0x642B,INVALC,INVALC, INVALC,0x642D,INVALC,0x6423,INVALC,0x6424,0x6429,0x642E, INVALC,0x5F79,INVALC,0x6437,0x6434,0x6761,0x642A,0x6426, 0x6435,0x6756,0x6428,INVALC,INVALC,INVALC,INVALC,0x5F7B, INVALC,0x6431,0x6433,INVALC,0x6436,0x637D,INVALC,0x6422, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x675F,INVALC,0x674F,INVALC,0x675D,INVALC,INVALC,0x674D, INVALC,INVALC,0x6758,INVALC,0x6754,INVALC,0x675E,0x674E, 0x6751,INVALC,0x6760,INVALC,0x6759,0x675C,INVALC,INVALC, INVALC,0x6755,0x6750,INVALC,INVALC,INVALC,0x674C,INVALC, INVALC,INVALC,INVALC,0x675B,INVALC,INVALC,0x6757,0x6762, INVALC,INVALC,INVALC,INVALC,0x6753,INVALC,0x675A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6A41,0x6A50,0x6A43, 0x6A4A,0x6752,0x6A48,0x6A37,0x6A4E,INVALC,0x6A3B,0x6A4D, /* Block 149, Array index 0x4700 */ 0x6A42,INVALC,INVALC,INVALC,INVALC,INVALC,0x6A52,0x6A44, INVALC,0x6A49,0x6A4C,0x6A35,0x6A4F,0x6A40,0x6A45,0x6A39, 0x6A3D,0x6A51,0x6A47,0x6A36,0x6A3A,0x6A3C,0x6A46,INVALC, INVALC,0x6A3F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6A38,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6A3E,0x6C50,0x6C54,INVALC,0x6C56,INVALC,INVALC,INVALC, 0x6C52,0x6C58,INVALC,INVALC,INVALC,INVALC,0x6C4F,0x6C55, INVALC,0x6C53,INVALC,0x6C4E,0x6A4B,0x6C51,INVALC,0x6C4D, 0x6C57,INVALC,INVALC,INVALC,INVALC,0x6E3C,0x6E3F,0x6E3B, 0x6E3D,0x6E3E,0x6E38,0x6E39,0x6E36,INVALC,INVALC,0x6E3A, 0x6E37,INVALC,INVALC,INVALC,INVALC,0x6F59,INVALC,0x6F5B, INVALC,INVALC,INVALC,INVALC,INVALC,0x6F5A,0x6F5C,INVALC, INVALC,INVALC,0x6F58,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7059,0x705A,INVALC,0x7058,INVALC,0x7142,0x7141,0x7143, INVALC,0x7144,INVALC,0x7145,0x7161,0x7164,0x7163,INVALC, 0x7162,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7230,0x7231,0x722F,0x7237,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 150, Array index 0x4800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3A28,0x413F,0x554E,0x6763,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3A29,INVALC, 0x3A2A,INVALC,INVALC,INVALC,0x4141,0x4140,INVALC,INVALC, 0x4142,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4856,0x4854,INVALC,0x4855,0x4853, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5550,0x554F,INVALC,0x5551,INVALC, 0x5552,INVALC,INVALC,INVALC,INVALC,0x5B59,0x5B57,0x6040, INVALC,0x5B55,0x5B56,INVALC,0x5B52,0x5B5A,0x5B54,0x5B58, 0x603C,INVALC,INVALC,0x603E,INVALC,0x603F,INVALC,0x603B, INVALC,0x603D,INVALC,INVALC,INVALC,0x5B53,INVALC,INVALC, INVALC,0x643A,0x6438,0x6439,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6764,0x6765,INVALC,INVALC,0x6A53,0x6A55, 0x6A54,INVALC,INVALC,0x6C5B,0x6C5A,0x6C59,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 151, Array index 0x4900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2169,INVALC, 0x2278,INVALC,0x2276,0x2279,0x2277,INVALC,INVALC,INVALC, 0x252E,INVALC,INVALC,INVALC,INVALC,0x2530,INVALC,0x252F, 0x252D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2878,0x287B,INVALC,0x287A,0x2879,INVALC,INVALC, INVALC,INVALC,INVALC,0x287C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2D67,INVALC,INVALC,INVALC,0x2D68,0x2D64, INVALC,0x2D65,INVALC,0x2D66,0x2D63,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3348,INVALC,INVALC,0x3349, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3A2D,INVALC,0x3A2C,INVALC,0x3A2F, INVALC,0x3A2E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3A2B,INVALC,0x4144,INVALC, 0x4148,INVALC,INVALC,0x4147,INVALC,INVALC,INVALC,0x4143, 0x4145,0x4146,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4859,0x4857,0x4858,INVALC,INVALC,INVALC,0x485A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4F23,INVALC, INVALC,0x4F24,0x5554,INVALC,0x5553,INVALC,INVALC,INVALC, INVALC,0x5B5B,INVALC,INVALC,0x6043,INVALC,0x6041,INVALC, 0x6042,INVALC,INVALC,0x643B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x334A,INVALC,INVALC,0x3A30, INVALC,INVALC,0x4149,0x414B,INVALC,INVALC,INVALC,INVALC, 0x414A,INVALC,INVALC,INVALC,INVALC,INVALC,0x485B,INVALC, INVALC,INVALC,INVALC,0x5555,0x5B5C,INVALC,INVALC,0x643C, 0x6440,INVALC,0x643D,INVALC,INVALC,0x6441,INVALC,0x643F, INVALC,0x6766,INVALC,INVALC,INVALC,0x705B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x414D,0x414C,INVALC,INVALC,INVALC,0x485F,INVALC,INVALC, 0x485E,INVALC,0x485C,INVALC,INVALC,0x485D,INVALC,0x4F25, /* Block 152, Array index 0x4A00 */ INVALC,INVALC,0x5558,INVALC,INVALC,0x5556,INVALC,INVALC, 0x5557,INVALC,INVALC,0x5B5D,INVALC,INVALC,INVALC,INVALC, 0x5B5F,INVALC,0x5B5E,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6046,0x6048,INVALC,INVALC,INVALC,0x6047,INVALC,0x6045, 0x6044,INVALC,0x6443,0x6442,INVALC,0x6444,0x676B,INVALC, 0x676A,0x6767,INVALC,0x6768,0x6769,INVALC,0x6A56,0x6A57, INVALC,INVALC,INVALC,INVALC,INVALC,0x6C5C,INVALC,INVALC, INVALC,INVALC,0x6C5D,INVALC,INVALC,INVALC,INVALC,0x6E40, INVALC,INVALC,INVALC,0x705D,INVALC,INVALC,0x705C,0x705E, INVALC,0x7146,INVALC,0x717B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4F26,INVALC,0x5559,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3A31,INVALC,0x414E,INVALC,0x4150,INVALC, 0x414F,INVALC,0x4863,0x4860,INVALC,INVALC,INVALC,0x4861, 0x4862,INVALC,0x4F28,0x4F2D,INVALC,0x4F27,0x4F29,0x4F30, 0x4F2B,0x4F2F,0x4F2C,0x4F2A,0x4F2E,INVALC,INVALC,INVALC, 0x555C,INVALC,0x555A,INVALC,INVALC,INVALC,0x555B,INVALC, INVALC,INVALC,INVALC,INVALC,0x5B62,INVALC,INVALC,0x5B61, INVALC,0x5B60,0x6049,INVALC,0x604B,0x604D,0x604C,INVALC, INVALC,0x604A,0x644B,INVALC,0x6449,0x644C,INVALC,INVALC, 0x6447,INVALC,0x644A,0x6448,0x6445,INVALC,0x6446,INVALC, INVALC,INVALC,INVALC,0x676C,INVALC,INVALC,0x676E,0x676D, INVALC,0x6A58,INVALC,0x6A59,INVALC,INVALC,INVALC,0x6C5E, INVALC,INVALC,INVALC,INVALC,0x6F5D,0x6F5E,INVALC,0x705F, INVALC,INVALC,INVALC,INVALC,INVALC,0x4F32,0x4F31,0x555E, 0x555D,INVALC,INVALC,INVALC,0x604F,0x604E,0x644F,0x644D, 0x6450,0x644E,INVALC,INVALC,INVALC,0x676F,0x6770,0x6771, INVALC,0x6C5F,INVALC,0x6E41,INVALC,0x7060,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5B63,0x6050,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5B64,INVALC,0x6451,INVALC,INVALC,0x6A5A,0x6A5B,INVALC, /* Block 153, Array index 0x4B00 */ 0x6F5F,INVALC,INVALC,INVALC,0x3A32,INVALC,INVALC,0x4151, INVALC,INVALC,INVALC,INVALC,INVALC,0x4865,0x4866,0x4864, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4F33,INVALC, INVALC,INVALC,INVALC,0x5565,INVALC,0x5560,0x555F,INVALC, 0x5564,INVALC,INVALC,INVALC,INVALC,INVALC,0x5561,0x5566, 0x5563,0x5562,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B66, INVALC,INVALC,0x5B67,INVALC,INVALC,0x5B65,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6051,INVALC,0x6056,0x6052,0x6055,INVALC,INVALC, 0x5E41,0x6054,0x6053,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6452,0x6453,0x6454,INVALC,INVALC,INVALC,INVALC,0x6775, INVALC,0x6773,INVALC,INVALC,0x6772,0x6774,INVALC,0x6A5F, 0x6A5C,INVALC,0x6A5D,0x6A5E,0x6C60,INVALC,INVALC,INVALC, INVALC,0x6E43,0x6E42,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7147,0x717C,0x717D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4152,INVALC,INVALC,0x4867,0x4F34,0x4F35,INVALC, INVALC,INVALC,0x5567,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6455,INVALC,INVALC,0x6778,INVALC,0x6777,0x6779,0x6776, 0x6C63,0x6A60,0x6A61,INVALC,INVALC,INVALC,0x6C62,INVALC, INVALC,0x6C61,INVALC,0x6E44,0x717E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x334B,INVALC,0x3A33,INVALC,INVALC, INVALC,INVALC,INVALC,0x4153,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4868,INVALC, INVALC,0x4869,0x5569,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 154, Array index 0x4C00 */ 0x4F37,INVALC,0x4F36,INVALC,INVALC,INVALC,INVALC,0x4F38, 0x5568,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x556A,INVALC,INVALC,0x556B,0x556E,0x556C,0x556D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B69, INVALC,INVALC,INVALC,INVALC,0x5B68,0x6057,INVALC,0x5B6A, INVALC,0x5B6B,0x605A,0x6058,0x6059,0x605E,INVALC,0x605D, 0x6060,0x605F,0x605C,0x605B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6458,INVALC,0x6457,INVALC,INVALC,INVALC, INVALC,0x6456,INVALC,0x677C,INVALC,INVALC,INVALC,0x677B, 0x677A,INVALC,INVALC,0x6A66,0x6A65,INVALC,0x6A63,INVALC, 0x6A62,INVALC,INVALC,0x6A67,0x6E45,INVALC,0x6C65,INVALC, 0x6C64,0x6A64,INVALC,0x6E46,INVALC,INVALC,INVALC,0x7148, INVALC,0x7221,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3A34, 0x6061,INVALC,INVALC,INVALC,0x4F3A,0x4F39,0x5B6C,INVALC, INVALC,0x6063,INVALC,0x6062,INVALC,INVALC,0x677D,0x677E, INVALC,INVALC,INVALC,0x7222,INVALC,INVALC,INVALC,0x486A, 0x486C,INVALC,0x486B,INVALC,INVALC,0x486D,INVALC,INVALC, INVALC,0x4F3C,0x4F3E,0x4F3D,INVALC,0x4F40,INVALC,INVALC, INVALC,INVALC,0x4F3F,0x4F3B,INVALC,INVALC,INVALC,0x4F41, INVALC,0x5575,INVALC,0x5578,0x557A,0x5570,0x5574,0x5571, INVALC,INVALC,INVALC,0x5572,0x5573,INVALC,0x5576,0x5579, 0x5577,INVALC,INVALC,INVALC,0x556F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5B72,0x5B70,0x5B6F,INVALC,0x5B75, INVALC,0x5B74,0x5B73,INVALC,0x5B6E,INVALC,0x5B6D,INVALC, 0x5B71,INVALC,INVALC,INVALC,0x6066,INVALC,0x606A,0x6067, 0x6069,0x6068,0x6065,0x606B,0x606E,0x606C,0x606D,INVALC, /* Block 155, Array index 0x4D00 */ INVALC,INVALC,0x6064,0x606F,0x645D,0x6460,0x6462,0x6461, INVALC,0x645B,0x645F,0x645A,INVALC,0x645C,INVALC,0x6459, INVALC,0x645E,INVALC,INVALC,0x682D,0x6822,INVALC,INVALC, INVALC,INVALC,0x6821,0x6826,0x682C,0x6824,0x682B,INVALC, 0x6828,INVALC,0x6827,0x682A,0x6825,0x6823,INVALC,0x6829, INVALC,0x6A6E,0x6A6C,INVALC,0x6A6B,0x6A71,0x6A6F,INVALC, INVALC,0x6A6A,0x6A68,INVALC,0x6A69,INVALC,0x6A6D,INVALC, 0x6A70,0x6C66,0x6C6C,INVALC,INVALC,0x6C67,INVALC,0x6C6D, INVALC,0x6C6B,0x6C6A,INVALC,0x6C69,INVALC,0x6C68,INVALC, 0x6E4C,0x6E4E,0x6E4D,INVALC,0x6E4A,INVALC,0x6E47,0x6E4B, 0x6E50,INVALC,0x6E4F,0x6E48,0x6E49,INVALC,0x6F60,INVALC, INVALC,0x6F61,INVALC,INVALC,INVALC,INVALC,0x7061,INVALC, 0x7165,INVALC,INVALC,INVALC,0x7223,INVALC,0x7224,0x7225, 0x7233,0x7232,INVALC,0x723B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x486F,INVALC,0x486E,INVALC,INVALC, INVALC,0x4F42,INVALC,0x557B,0x5B78,INVALC,INVALC,INVALC, INVALC,0x5B76,INVALC,0x5B79,INVALC,INVALC,0x6070,0x5B77, 0x6463,INVALC,0x682E,INVALC,INVALC,INVALC,0x6A74,0x6A72, INVALC,INVALC,0x6A73,INVALC,INVALC,0x6C6E,INVALC,INVALC, 0x6E51,INVALC,INVALC,INVALC,INVALC,0x7062,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6464,INVALC,INVALC,0x334C, INVALC,INVALC,INVALC,0x4F43,INVALC,INVALC,INVALC,0x4F44, INVALC,INVALC,INVALC,0x557D,0x557C,INVALC,INVALC,INVALC, INVALC,0x5622,0x5621,0x557E,INVALC,INVALC,0x5B7A,0x5B7D, INVALC,0x5B7C,0x5B7B,INVALC,0x6074,0x6072,0x6071,INVALC, /* Block 156, Array index 0x4E00 */ INVALC,0x6073,INVALC,INVALC,0x6466,0x6467,INVALC,INVALC, 0x6465,INVALC,0x6830,0x682F,0x6832,INVALC,0x6831,INVALC, 0x6A75,0x6A77,0x6A76,INVALC,INVALC,0x6C6F,0x6C72,0x6C70, 0x6C71,0x6E52,INVALC,INVALC,INVALC,INVALC,0x6F62,0x6F63, 0x6F64,INVALC,INVALC,INVALC,0x7226,INVALC,INVALC,INVALC, INVALC,0x6468,INVALC,0x6E53,INVALC,INVALC,0x7166,0x334D, INVALC,INVALC,INVALC,0x5B7E,INVALC,0x6469,INVALC,0x6833, INVALC,INVALC,0x6C73,0x6E54,INVALC,INVALC,0x4F45,0x4F46, INVALC,INVALC,INVALC,0x5624,INVALC,INVALC,0x5623,INVALC, 0x6075,INVALC,0x646A,0x646C,0x646B,INVALC,INVALC,INVALC, INVALC,INVALC,0x6C74,INVALC,INVALC,0x6E56,0x6E55,INVALC, INVALC,0x7063,INVALC,0x4870,INVALC,INVALC,INVALC,0x4F49, 0x4F47,0x4F48,INVALC,INVALC,0x562D,INVALC,0x5628,0x5625, 0x562C,INVALC,INVALC,INVALC,0x562E,INVALC,INVALC,INVALC, 0x562B,0x5627,INVALC,INVALC,0x5626,0x562A,0x5629,INVALC, INVALC,INVALC,0x5C2B,0x5C26,0x5C24,0x5C2D,0x5C25,INVALC, 0x5C21,INVALC,0x5C27,INVALC,INVALC,0x5C22,0x607E,0x5C23, 0x5C2E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5C2A,INVALC,0x5C29,0x5C28,INVALC,0x5C2C,INVALC,INVALC, INVALC,INVALC,0x6076,0x6079,INVALC,INVALC,0x6078,INVALC, 0x6122,0x607B,0x6121,INVALC,0x607D,0x607C,0x607A,INVALC, 0x6077,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6123, INVALC,INVALC,INVALC,INVALC,INVALC,0x6472,0x6475,INVALC, 0x6473,0x6477,INVALC,INVALC,INVALC,0x6478,INVALC,0x6470, INVALC,0x6471,INVALC,0x646F,0x6476,INVALC,0x646E,0x646D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6474,0x683C,0x6842,INVALC,0x683D, INVALC,0x6840,0x6844,INVALC,0x683F,INVALC,0x6837,INVALC, 0x6836,0x6843,0x683A,INVALC,0x6838,0x6841,0x6839,INVALC, INVALC,INVALC,0x6834,0x6835,0x683E,INVALC,INVALC,INVALC, 0x683B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6A7A, 0x6A7D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 157, Array index 0x4F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,0x6A7B,0x6B23,0x6B21, 0x6A79,0x6B26,INVALC,0x6A78,INVALC,INVALC,0x6B22,INVALC, INVALC,INVALC,0x6A7C,INVALC,0x6B25,INVALC,INVALC,0x6B24, INVALC,INVALC,INVALC,INVALC,0x6C77,0x6C76,INVALC,INVALC, INVALC,0x6C7D,INVALC,0x6C79,0x6C7C,INVALC,INVALC,INVALC, 0x6C7A,0x6C7B,INVALC,0x6C75,0x6C78,INVALC,INVALC,INVALC, INVALC,INVALC,0x6E61,0x6E5C,0x6E60,INVALC,0x6E63,0x6E5F, INVALC,0x6E5B,INVALC,INVALC,0x6E5E,0x6E62,INVALC,0x6E59, 0x6A7E,0x6E5D,INVALC,INVALC,0x6E5A,INVALC,0x6E57,INVALC, 0x6E58,INVALC,0x6F68,0x6F6A,0x6F6D,0x6F69,0x6F6E,INVALC, 0x6F67,INVALC,0x6F65,INVALC,INVALC,0x6F6B,INVALC,INVALC, 0x6F66,0x6F6C,INVALC,INVALC,INVALC,INVALC,0x7068,INVALC, 0x7069,INVALC,0x7067,0x7064,INVALC,INVALC,0x7066,0x7065, 0x7149,INVALC,INVALC,INVALC,INVALC,0x714B,0x714A,INVALC, INVALC,0x7169,INVALC,0x7168,0x7167,0x716A,INVALC,INVALC, INVALC,0x7238,0x723C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4154,0x4873, INVALC,INVALC,0x4871,INVALC,INVALC,0x4872,INVALC,INVALC, INVALC,0x4F4A,0x4F4B,INVALC,INVALC,0x4F4C,INVALC,0x5633, INVALC,0x5636,0x5630,0x5637,0x562F,0x5631,INVALC,0x5632, /* Block 158, Array index 0x5000 */ 0x5635,INVALC,INVALC,INVALC,0x563A,0x5639,INVALC,0x5634, 0x5638,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5C38,INVALC,INVALC,INVALC,0x5C33,INVALC,INVALC,0x5C30, 0x5C36,0x5C39,INVALC,INVALC,INVALC,0x5C35,0x5C32,0x5C3A, 0x5C31,INVALC,0x5C37,INVALC,INVALC,0x5C2F,INVALC,INVALC, INVALC,0x5C34,INVALC,INVALC,INVALC,0x6135,0x6128,0x6129, 0x612C,0x612A,INVALC,0x6124,INVALC,INVALC,0x6127,0x6131, 0x612B,INVALC,INVALC,INVALC,INVALC,0x6133,0x6130,INVALC, 0x6132,0x6125,0x612E,0x612F,INVALC,0x612D,INVALC,INVALC, INVALC,INVALC,0x647C,0x647E,0x6523,INVALC,INVALC,0x647B, INVALC,INVALC,0x6525,0x647A,0x6526,INVALC,0x6522,0x6524, 0x6528,0x6521,0x6529,0x647D,0x6479,INVALC,INVALC,0x6527, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6126, 0x685E,0x6855,INVALC,0x6851,INVALC,INVALC,INVALC,0x685A, 0x6854,0x684A,INVALC,0x6857,0x6852,0x6853,INVALC,0x6845, 0x684C,0x685B,INVALC,0x6858,INVALC,0x6850,INVALC,0x685C, 0x684B,0x6846,0x6859,INVALC,0x6848,0x6856,0x684D,0x685D, 0x6849,INVALC,0x6847,0x684E,0x684F,INVALC,INVALC,INVALC, 0x6B2D,INVALC,0x6B2B,INVALC,0x6B30,INVALC,0x6B3C,0x6B33, 0x6B2C,0x6B28,0x6B35,0x6B2E,0x6B31,0x6B2A,0x6B38,0x6B27, 0x6B2F,0x6B34,0x6B36,0x6B39,0x6B29,INVALC,0x6B3D,0x6B3E, 0x6B37,0x6B3B,0x6B32,INVALC,0x6D2F,0x6D32,INVALC,INVALC, INVALC,0x6D31,0x6D36,0x6D34,INVALC,0x6D2B,0x6D21,0x6C7E, INVALC,0x6D2D,0x6D2E,0x6D2A,0x6D22,INVALC,0x6D27,0x6B3A, INVALC,0x6D23,INVALC,0x6D29,INVALC,0x6D28,INVALC,0x6D24, 0x6D30,INVALC,0x6D25,0x6E68,0x6D33,0x6D35,0x6D2C,0x6D26, 0x6E69,0x6E6B,0x6E65,INVALC,INVALC,0x6E72,0x6E70,INVALC, 0x6E6F,0x6E6E,0x6E67,0x6E64,0x6E6A,0x6E73,0x6E66,0x6E6C, INVALC,0x6F77,0x6F7C,0x6F72,0x6F75,INVALC,0x6F79,INVALC, 0x7022,0x6E6D,INVALC,0x6F73,0x6F7D,0x7023,0x6F78,0x6F71, 0x6F7B,INVALC,0x6F7A,0x7021,0x6F7E,0x6E71,0x6F76,0x6F70, 0x6F74,INVALC,INVALC,0x6F6F,INVALC,0x7074,0x706B,0x7073, /* Block 159, Array index 0x5100 */ 0x7070,0x7071,0x706A,0x706D,0x7075,0x706F,0x706E,0x706C, INVALC,0x7072,INVALC,0x714C,INVALC,0x714D,INVALC,0x714F, 0x714E,0x7151,0x7150,0x716C,0x716B,0x7227,INVALC,0x7228, INVALC,0x7234,INVALC,INVALC,INVALC,0x723D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6D37,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4874,INVALC,INVALC,0x563B,INVALC,INVALC,0x5C3C,0x5C3D, 0x5C3B,0x6137,0x6136,INVALC,0x652B,0x6138,0x652A,INVALC, INVALC,0x6860,INVALC,INVALC,0x685F,INVALC,INVALC,INVALC, INVALC,0x6B3F,0x6B41,0x6B40,0x6D38,INVALC,INVALC,INVALC, 0x7076,0x7152,INVALC,INVALC,0x7241,INVALC,INVALC,0x4F4D, INVALC,INVALC,INVALC,INVALC,INVALC,0x5C3F,0x5C3E,INVALC, 0x6139,INVALC,INVALC,INVALC,INVALC,INVALC,0x6E74,0x7239, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6861,INVALC,0x7024,INVALC,INVALC,INVALC,INVALC,INVALC, 0x613A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7025,INVALC,INVALC,0x563C,INVALC,0x5C40,0x5C41,INVALC, INVALC,INVALC,0x613B,INVALC,INVALC,INVALC,INVALC,0x652C, INVALC,INVALC,INVALC,INVALC,0x6B43,0x6B42,0x6B45,0x6B44, INVALC,INVALC,INVALC,0x6D39,INVALC,0x6D3B,0x6D3A,INVALC, 0x6E75,INVALC,0x7026,0x7027,INVALC,0x7153,0x716D,INVALC, INVALC,0x4155,0x5C42,0x613C,0x6862,0x4875,INVALC,0x613D, /* Block 160, Array index 0x5200 */ 0x652E,0x652D,INVALC,INVALC,INVALC,INVALC,0x7028,INVALC, INVALC,0x7154,0x716E,INVALC,INVALC,INVALC,INVALC,0x563D, 0x563E,INVALC,0x5C43,INVALC,INVALC,INVALC,0x652F,INVALC, 0x6D3D,INVALC,0x6D3E,0x6D3C,0x7029,INVALC,0x7077,INVALC, INVALC,INVALC,0x6140,0x613F,0x613E,0x6530,INVALC,INVALC, 0x6534,0x6533,0x6532,0x6531,INVALC,0x6863,0x6B47,INVALC, 0x6B46,0x6D3F,0x6E78,0x6E77,INVALC,0x6E76,0x702C,0x702B, 0x702A,INVALC,INVALC,INVALC,INVALC,0x5C44,INVALC,INVALC, 0x6864,0x6865,0x6E79,0x702D,INVALC,INVALC,0x7078,0x7155, 0x7229,0x7243,INVALC,INVALC,0x6535,0x6866,0x6D40,0x702E, INVALC,INVALC,INVALC,INVALC,0x6141,0x6536,0x6867,0x6868, 0x6869,0x6B4C,INVALC,0x6B48,INVALC,0x6B4B,0x6B4A,INVALC, 0x6B49,INVALC,INVALC,INVALC,0x6D42,0x6D41,INVALC,INVALC, INVALC,INVALC,INVALC,0x6E7A,INVALC,INVALC,0x7031,0x7032, 0x7030,0x702F,INVALC,INVALC,0x7079,0x707A,0x707B,INVALC, 0x7156,0x7159,0x7158,0x7157,INVALC,INVALC,0x7242,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6B4D,0x6D43,INVALC,INVALC,0x6E7B,INVALC,INVALC, 0x7244,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6142,INVALC,0x6E7C,INVALC,0x716F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, }; #endif /* ICONV_FROM_UCS_CCS_CNS11643_PLANE2 && !defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * 16-bit UCS -> cns11643_plane2 size-optimized table (27768 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_CNS11643_PLANE2) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t from_ucs_size_cns11643_plane2[] = { 0x027E, /* Ranges number */ 0x0B48, /* Unranged codes number */ 0x1FAC, /* First unranged code index */ /* Ranges list: first code, last Code, array index. */ /* Array index: 0x0003 */ 0x4F12, 0x4F14, 0x077D, /* Array index: 0x0006 */ 0x4F74, 0x4F89, 0x0780, /* Array index: 0x0009 */ 0x4F94, 0x4F9E, 0x0796, /* Array index: 0x000C */ 0x4FB9, 0x4FBB, 0x07A1, /* Array index: 0x000F */ 0x4FF4, 0x4FF7, 0x07A4, /* Array index: 0x0012 */ 0x502F, 0x5037, 0x07A8, /* Array index: 0x0015 */ 0x505B, 0x506B, 0x07B1, /* Array index: 0x0018 */ 0x509B, 0x509E, 0x07C2, /* Array index: 0x001B */ 0x50C6, 0x50CB, 0x07C6, /* Array index: 0x001E */ 0x50FD, 0x50FF, 0x07CC, /* Array index: 0x0021 */ 0x5106, 0x510C, 0x07CF, /* Array index: 0x0024 */ 0x5122, 0x5126, 0x07D6, /* Array index: 0x0027 */ 0x512D, 0x5135, 0x07DB, /* Array index: 0x002A */ 0x5231, 0x5235, 0x07E4, /* Array index: 0x002D */ 0x525E, 0x5262, 0x07E9, /* Array index: 0x0030 */ 0x526B, 0x526E, 0x07EE, /* Array index: 0x0033 */ 0x5278, 0x527C, 0x07F2, /* Array index: 0x0036 */ 0x5296, 0x5299, 0x07F7, /* Array index: 0x0039 */ 0x5309, 0x530B, 0x07FB, /* Array index: 0x003C */ 0x5394, 0x5399, 0x07FE, /* Array index: 0x003F */ 0x5460, 0x5467, 0x0804, /* Array index: 0x0042 */ 0x547E, 0x5482, 0x080C, /* Array index: 0x0045 */ 0x54A0, 0x54A2, 0x0811, /* Array index: 0x0048 */ 0x5503, 0x5505, 0x0814, /* Array index: 0x004B */ 0x5508, 0x5512, 0x0817, /* Array index: 0x004E */ 0x5532, 0x5536, 0x0822, /* Array index: 0x0051 */ 0x554D, 0x5552, 0x0827, /* Array index: 0x0054 */ 0x5575, 0x5577, 0x082D, /* Array index: 0x0057 */ 0x558C, 0x5595, 0x0830, /* Array index: 0x005A */ 0x55A1, 0x55A8, 0x083A, /* Array index: 0x005D */ 0x55BF, 0x55C4, 0x0842, /* Array index: 0x0060 */ 0x55C8, 0x55D6, 0x0848, /* Array index: 0x0063 */ 0x563D, 0x564C, 0x0857, /* Array index: 0x0066 */ 0x567E, 0x5686, 0x0867, /* Array index: 0x0069 */ 0x5697, 0x569D, 0x0870, /* Array index: 0x006C */ 0x56A6, 0x56AD, 0x0877, /* Array index: 0x006F */ 0x571A, 0x5723, 0x087F, /* Array index: 0x0072 */ 0x576D, 0x5776, 0x0889, /* Array index: 0x0075 */ 0x5794, 0x579F, 0x0893, /* Array index: 0x0078 */ 0x57B5, 0x57C1, 0x089F, /* Array index: 0x007B */ 0x57E1, 0x5801, 0x08AC, /* Array index: 0x007E */ 0x5807, 0x5810, 0x08CD, /* Array index: 0x0081 */ 0x5825, 0x582E, 0x08D7, /* Array index: 0x0084 */ 0x5832, 0x583F, 0x08E1, /* Array index: 0x0087 */ 0x584D, 0x584F, 0x08EF, /* Array index: 0x008A */ 0x5863, 0x5865, 0x08F2, /* Array index: 0x008D */ 0x587A, 0x587C, 0x08F5, /* Array index: 0x0090 */ 0x5886, 0x5891, 0x08F8, /* Array index: 0x0093 */ 0x590C, 0x590E, 0x0904, /* Array index: 0x0096 */ 0x5970, 0x5972, 0x0907, /* Array index: 0x0099 */ 0x597B, 0x5980, 0x090A, /* Array index: 0x009C */ 0x598E, 0x5990, 0x0910, /* Array index: 0x009F */ 0x59A0, 0x59A2, 0x0913, /* Array index: 0x00A2 */ 0x59B1, 0x59B6, 0x0916, /* Array index: 0x00A5 */ 0x59DD, 0x59E1, 0x091C, /* Array index: 0x00A8 */ 0x59ED, 0x59F7, 0x0921, /* Array index: 0x00AB */ 0x59FA, 0x5A00, 0x092C, /* Array index: 0x00AE */ 0x5A15, 0x5A19, 0x0933, /* Array index: 0x00B1 */ 0x5A35, 0x5A39, 0x0938, /* Array index: 0x00B4 */ 0x5A42, 0x5A48, 0x093D, /* Array index: 0x00B7 */ 0x5A4C, 0x5A60, 0x0944, /* Array index: 0x00BA */ 0x5A78, 0x5A7D, 0x0959, /* Array index: 0x00BD */ 0x5A8A, 0x5A97, 0x095F, /* Array index: 0x00C0 */ 0x5A9C, 0x5A9F, 0x096D, /* Array index: 0x00C3 */ 0x5AAC, 0x5ABB, 0x0971, /* Array index: 0x00C6 */ 0x5AC4, 0x5ACD, 0x0981, /* Array index: 0x00C9 */ 0x5AD9, 0x5AE2, 0x098B, /* Array index: 0x00CC */ 0x5AE8, 0x5AEE, 0x0995, /* Array index: 0x00CF */ 0x5AF3, 0x5AF9, 0x099C, /* Array index: 0x00D2 */ 0x5AFF, 0x5B07, 0x09A3, /* Array index: 0x00D5 */ 0x5B13, 0x5B1B, 0x09AC, /* Array index: 0x00D8 */ 0x5B23, 0x5B2F, 0x09B5, /* Array index: 0x00DB */ 0x5B3C, 0x5B3F, 0x09C2, /* Array index: 0x00DE */ 0x5B47, 0x5B4E, 0x09C6, /* Array index: 0x00E1 */ 0x5BCA, 0x5BCE, 0x09CE, /* Array index: 0x00E4 */ 0x5C7A, 0x5C7E, 0x09D3, /* Array index: 0x00E7 */ 0x5C86, 0x5C95, 0x09D8, /* Array index: 0x00EA */ 0x5C9F, 0x5CB0, 0x09E8, /* Array index: 0x00ED */ 0x5CC6, 0x5CDF, 0x09FA, /* Array index: 0x00F0 */ 0x5CF7, 0x5CF9, 0x0A14, /* Array index: 0x00F3 */ 0x5D0B, 0x5D0F, 0x0A17, /* Array index: 0x00F6 */ 0x5D1D, 0x5D20, 0x0A1C, /* Array index: 0x00F9 */ 0x5D2E, 0x5D4B, 0x0A20, /* Array index: 0x00FC */ 0x5D79, 0x5D82, 0x0A3E, /* Array index: 0x00FF */ 0x5D86, 0x5D8A, 0x0A48, /* Array index: 0x0102 */ 0x5D9C, 0x5DA2, 0x0A4D, /* Array index: 0x0105 */ 0x5DA7, 0x5DB7, 0x0A54, /* Array index: 0x0108 */ 0x5E20, 0x5E24, 0x0A65, /* Array index: 0x010B */ 0x5E4A, 0x5E4F, 0x0A6A, /* Array index: 0x010E */ 0x5E66, 0x5E70, 0x0A70, /* Array index: 0x0111 */ 0x5E88, 0x5E8D, 0x0A7B, /* Array index: 0x0114 */ 0x5EA2, 0x5EA5, 0x0A81, /* Array index: 0x0117 */ 0x5EAE, 0x5EB4, 0x0A85, /* Array index: 0x011A */ 0x5EC5, 0x5EC7, 0x0A8C, /* Array index: 0x011D */ 0x5ED1, 0x5EDE, 0x0A8F, /* Array index: 0x0120 */ 0x5EE5, 0x5EE9, 0x0A9D, /* Array index: 0x0123 */ 0x5EEE, 0x5EF2, 0x0AA2, /* Array index: 0x0126 */ 0x5F22, 0x5F24, 0x0AA7, /* Array index: 0x0129 */ 0x5FBB, 0x5FC1, 0x0AAA, /* Array index: 0x012C */ 0x5FCF, 0x5FD5, 0x0AB1, /* Array index: 0x012F */ 0x5FE1, 0x5FE5, 0x0AB8, /* Array index: 0x0132 */ 0x5FED, 0x5FEF, 0x0ABD, /* Array index: 0x0135 */ 0x6009, 0x6013, 0x0AC0, /* Array index: 0x0138 */ 0x602C, 0x6034, 0x0ACB, /* Array index: 0x013B */ 0x6040, 0x6049, 0x0AD4, /* Array index: 0x013E */ 0x605A, 0x605F, 0x0ADE, /* Array index: 0x0141 */ 0x6086, 0x608A, 0x0AE4, /* Array index: 0x0144 */ 0x609B, 0x609D, 0x0AE9, /* Array index: 0x0147 */ 0x60BE, 0x60CF, 0x0AEC, /* Array index: 0x014A */ 0x6103, 0x6105, 0x0AFE, /* Array index: 0x014D */ 0x6128, 0x612F, 0x0B01, /* Array index: 0x0150 */ 0x6152, 0x6156, 0x0B09, /* Array index: 0x0153 */ 0x6171, 0x6174, 0x0B0E, /* Array index: 0x0156 */ 0x6189, 0x618D, 0x0B12, /* Array index: 0x0159 */ 0x61AD, 0x61B5, 0x0B17, /* Array index: 0x015C */ 0x61DE, 0x61E0, 0x0B20, /* Array index: 0x015F */ 0x61E4, 0x61F1, 0x0B23, /* Array index: 0x0162 */ 0x6223, 0x622D, 0x0B31, /* Array index: 0x0165 */ 0x625E, 0x6266, 0x0B3C, /* Array index: 0x0168 */ 0x6270, 0x6274, 0x0B45, /* Array index: 0x016B */ 0x62A9, 0x62B8, 0x0B4A, /* Array index: 0x016E */ 0x62F5, 0x62FB, 0x0B5A, /* Array index: 0x0171 */ 0x630B, 0x6315, 0x0B61, /* Array index: 0x0174 */ 0x6332, 0x633C, 0x0B6C, /* Array index: 0x0177 */ 0x6340, 0x634B, 0x0B77, /* Array index: 0x017A */ 0x6354, 0x635A, 0x0B83, /* Array index: 0x017D */ 0x636D, 0x6370, 0x0B8A, /* Array index: 0x0180 */ 0x638D, 0x6391, 0x0B8E, /* Array index: 0x0183 */ 0x639C, 0x639F, 0x0B93, /* Array index: 0x0186 */ 0x63AB, 0x63B1, 0x0B97, /* Array index: 0x0189 */ 0x63C2, 0x63CE, 0x0B9E, /* Array index: 0x018C */ 0x63D5, 0x63E0, 0x0BAB, /* Array index: 0x018F */ 0x63E4, 0x63E8, 0x0BB7, /* Array index: 0x0192 */ 0x63EF, 0x63F6, 0x0BBC, /* Array index: 0x0195 */ 0x6409, 0x6412, 0x0BC4, /* Array index: 0x0198 */ 0x641F, 0x6428, 0x0BCE, /* Array index: 0x019B */ 0x642E, 0x6430, 0x0BD8, /* Array index: 0x019E */ 0x643F, 0x6443, 0x0BDB, /* Array index: 0x01A1 */ 0x6459, 0x6461, 0x0BE0, /* Array index: 0x01A4 */ 0x6470, 0x6477, 0x0BE9, /* Array index: 0x01A7 */ 0x6489, 0x648C, 0x0BF1, /* Array index: 0x01AA */ 0x6496, 0x6498, 0x0BF5, /* Array index: 0x01AD */ 0x649C, 0x64A0, 0x0BF8, /* Array index: 0x01B0 */ 0x650C, 0x6510, 0x0BFD, /* Array index: 0x01B3 */ 0x6513, 0x6517, 0x0C02, /* Array index: 0x01B6 */ 0x6520, 0x6526, 0x0C07, /* Array index: 0x01B9 */ 0x6564, 0x656A, 0x0C0E, /* Array index: 0x01BC */ 0x6579, 0x6581, 0x0C15, /* Array index: 0x01BF */ 0x65C2, 0x65C6, 0x0C1E, /* Array index: 0x01C2 */ 0x65DA, 0x65E1, 0x0C23, /* Array index: 0x01C5 */ 0x65EE, 0x65F5, 0x0C2B, /* Array index: 0x01C8 */ 0x65FB, 0x65FD, 0x0C33, /* Array index: 0x01CB */ 0x6603, 0x6612, 0x0C36, /* Array index: 0x01CE */ 0x6632, 0x663A, 0x0C46, /* Array index: 0x01D1 */ 0x6678, 0x667C, 0x0C4F, /* Array index: 0x01D4 */ 0x668A, 0x668C, 0x0C54, /* Array index: 0x01D7 */ 0x669F, 0x66A1, 0x0C57, /* Array index: 0x01DA */ 0x66BA, 0x66C0, 0x0C5A, /* Array index: 0x01DD */ 0x66C8, 0x66CC, 0x0C61, /* Array index: 0x01E0 */ 0x670F, 0x6713, 0x0C66, /* Array index: 0x01E3 */ 0x6720, 0x6723, 0x0C6B, /* Array index: 0x01E6 */ 0x6738, 0x673F, 0x0C6F, /* Array index: 0x01E9 */ 0x6747, 0x674D, 0x0C77, /* Array index: 0x01EC */ 0x6776, 0x677D, 0x0C7E, /* Array index: 0x01EF */ 0x6781, 0x6786, 0x0C86, /* Array index: 0x01F2 */ 0x678C, 0x6794, 0x0C8C, /* Array index: 0x01F5 */ 0x67B7, 0x67BB, 0x0C95, /* Array index: 0x01F8 */ 0x67C0, 0x67CE, 0x0C9A, /* Array index: 0x01FB */ 0x67E3, 0x67FC, 0x0CA9, /* Array index: 0x01FE */ 0x681C, 0x6820, 0x0CC3, /* Array index: 0x0201 */ 0x682B, 0x6835, 0x0CC8, /* Array index: 0x0204 */ 0x684B, 0x684F, 0x0CD3, /* Array index: 0x0207 */ 0x686B, 0x6880, 0x0CD8, /* Array index: 0x020A */ 0x6887, 0x6892, 0x0CEE, /* Array index: 0x020D */ 0x68A9, 0x68AE, 0x0CFA, /* Array index: 0x0210 */ 0x68C6, 0x68C8, 0x0D00, /* Array index: 0x0213 */ 0x68D0, 0x68D6, 0x0D03, /* Array index: 0x0216 */ 0x68DC, 0x68DE, 0x0D0A, /* Array index: 0x0219 */ 0x68E6, 0x68F8, 0x0D0D, /* Array index: 0x021C */ 0x6904, 0x6917, 0x0D20, /* Array index: 0x021F */ 0x6932, 0x6959, 0x0D34, /* Array index: 0x0222 */ 0x696F, 0x6971, 0x0D5C, /* Array index: 0x0225 */ 0x698D, 0x699A, 0x0D5F, /* Array index: 0x0228 */ 0x69AF, 0x69B6, 0x0D6D, /* Array index: 0x022B */ 0x69BC, 0x69BF, 0x0D75, /* Array index: 0x022E */ 0x69E2, 0x69E7, 0x0D79, /* Array index: 0x0231 */ 0x69F4, 0x6A00, 0x0D7F, /* Array index: 0x0234 */ 0x6A04, 0x6A09, 0x0D8C, /* Array index: 0x0237 */ 0x6A14, 0x6A18, 0x0D92, /* Array index: 0x023A */ 0x6A25, 0x6A28, 0x0D97, /* Array index: 0x023D */ 0x6A3B, 0x6A41, 0x0D9B, /* Array index: 0x0240 */ 0x6A4D, 0x6A56, 0x0DA2, /* Array index: 0x0243 */ 0x6A5A, 0x6A60, 0x0DAC, /* Array index: 0x0246 */ 0x6A64, 0x6A6A, 0x0DB3, /* Array index: 0x0249 */ 0x6A8C, 0x6A96, 0x0DBA, /* Array index: 0x024C */ 0x6AA4, 0x6AA8, 0x0DC5, /* Array index: 0x024F */ 0x6AB6, 0x6ABA, 0x0DCA, /* Array index: 0x0252 */ 0x6AC5, 0x6AD1, 0x0DCF, /* Array index: 0x0255 */ 0x6ADC, 0x6AE1, 0x0DDC, /* Array index: 0x0258 */ 0x6AE7, 0x6AF3, 0x0DE2, /* Array index: 0x025B */ 0x6B0F, 0x6B1A, 0x0DEF, /* Array index: 0x025E */ 0x6B33, 0x6B3C, 0x0DFB, /* Array index: 0x0261 */ 0x6B3F, 0x6B4D, 0x0E05, /* Array index: 0x0264 */ 0x6B54, 0x6B56, 0x0E14, /* Array index: 0x0267 */ 0x6B8C, 0x6BAD, 0x0E17, /* Array index: 0x026A */ 0x6BC3, 0x6BCC, 0x0E39, /* Array index: 0x026D */ 0x6BE0, 0x6BE8, 0x0E43, /* Array index: 0x0270 */ 0x6BF7, 0x6C06, 0x0E4C, /* Array index: 0x0273 */ 0x6C09, 0x6C0D, 0x0E5C, /* Array index: 0x0276 */ 0x6C14, 0x6C1A, 0x0E61, /* Array index: 0x0279 */ 0x6C4A, 0x6C4C, 0x0E68, /* Array index: 0x027C */ 0x6C65, 0x6C73, 0x0E6B, /* Array index: 0x027F */ 0x6CCD, 0x6CD4, 0x0E7A, /* Array index: 0x0282 */ 0x6CE9, 0x6CEE, 0x0E82, /* Array index: 0x0285 */ 0x6D00, 0x6D0A, 0x0E88, /* Array index: 0x0288 */ 0x6D0D, 0x6D12, 0x0E93, /* Array index: 0x028B */ 0x6D16, 0x6D1A, 0x0E99, /* Array index: 0x028E */ 0x6D2C, 0x6D34, 0x0E9E, /* Array index: 0x0291 */ 0x6D5E, 0x6D68, 0x0EA7, /* Array index: 0x0294 */ 0x6D7A, 0x6D86, 0x0EB2, /* Array index: 0x0297 */ 0x6D90, 0x6D92, 0x0EBF, /* Array index: 0x029A */ 0x6DBA, 0x6DC2, 0x0EC2, /* Array index: 0x029D */ 0x6DC8, 0x6DCA, 0x0ECB, /* Array index: 0x02A0 */ 0x6DCF, 0x6DE5, 0x0ECE, /* Array index: 0x02A3 */ 0x6E39, 0x6E4B, 0x0EE5, /* Array index: 0x02A6 */ 0x6E51, 0x6E55, 0x0EF8, /* Array index: 0x02A9 */ 0x6E5A, 0x6E68, 0x0EFD, /* Array index: 0x02AC */ 0x6E73, 0x6E79, 0x0F0C, /* Array index: 0x02AF */ 0x6E8D, 0x6E94, 0x0F13, /* Array index: 0x02B2 */ 0x6E9E, 0x6EA6, 0x0F1B, /* Array index: 0x02B5 */ 0x6EAE, 0x6EB3, 0x0F24, /* Array index: 0x02B8 */ 0x6EBD, 0x6EC3, 0x0F2A, /* Array index: 0x02BB */ 0x6EC6, 0x6ED2, 0x0F31, /* Array index: 0x02BE */ 0x6EF5, 0x6EFD, 0x0F3E, /* Array index: 0x02C1 */ 0x6F05, 0x6F0E, 0x0F47, /* Array index: 0x02C4 */ 0x6F18, 0x6F27, 0x0F51, /* Array index: 0x02C7 */ 0x6F35, 0x6F3C, 0x0F61, /* Array index: 0x02CA */ 0x6F4E, 0x6F57, 0x0F69, /* Array index: 0x02CD */ 0x6F5D, 0x6F63, 0x0F73, /* Array index: 0x02D0 */ 0x6F67, 0x6F6C, 0x0F7A, /* Array index: 0x02D3 */ 0x6F7B, 0x6F7F, 0x0F80, /* Array index: 0x02D6 */ 0x6F89, 0x6F8D, 0x0F85, /* Array index: 0x02D9 */ 0x6F90, 0x6F96, 0x0F8A, /* Array index: 0x02DC */ 0x6FA8, 0x6FB2, 0x0F91, /* Array index: 0x02DF */ 0x6FC4, 0x6FCF, 0x0F9C, /* Array index: 0x02E2 */ 0x6FDC, 0x6FDE, 0x0FA8, /* Array index: 0x02E5 */ 0x6FE2, 0x6FE8, 0x0FAB, /* Array index: 0x02E8 */ 0x6FFB, 0x7007, 0x0FB2, /* Array index: 0x02EB */ 0x700A, 0x700E, 0x0FBF, /* Array index: 0x02EE */ 0x7020, 0x702B, 0x0FC4, /* Array index: 0x02F1 */ 0x7031, 0x704A, 0x0FD0, /* Array index: 0x02F4 */ 0x7055, 0x706A, 0x0FEA, /* Array index: 0x02F7 */ 0x7082, 0x7086, 0x1000, /* Array index: 0x02FA */ 0x70C5, 0x70C7, 0x1005, /* Array index: 0x02FD */ 0x70CD, 0x70D4, 0x1008, /* Array index: 0x0300 */ 0x70DA, 0x70E2, 0x1010, /* Array index: 0x0303 */ 0x70F3, 0x7106, 0x1019, /* Array index: 0x0306 */ 0x710B, 0x7110, 0x102D, /* Array index: 0x0309 */ 0x711E, 0x7125, 0x1033, /* Array index: 0x030C */ 0x712E, 0x7132, 0x103B, /* Array index: 0x030F */ 0x7141, 0x7144, 0x1040, /* Array index: 0x0312 */ 0x7150, 0x7154, 0x1044, /* Array index: 0x0315 */ 0x715D, 0x7163, 0x1049, /* Array index: 0x0318 */ 0x7180, 0x7189, 0x1050, /* Array index: 0x031B */ 0x719A, 0x71AA, 0x105A, /* Array index: 0x031E */ 0x71AF, 0x71B5, 0x106B, /* Array index: 0x0321 */ 0x71BC, 0x71CB, 0x1072, /* Array index: 0x0324 */ 0x71F0, 0x71F2, 0x1082, /* Array index: 0x0327 */ 0x71FF, 0x7207, 0x1085, /* Array index: 0x032A */ 0x7219, 0x7229, 0x108E, /* Array index: 0x032D */ 0x7249, 0x724B, 0x109F, /* Array index: 0x0330 */ 0x7276, 0x727F, 0x10A2, /* Array index: 0x0333 */ 0x7285, 0x729E, 0x10AC, /* Array index: 0x0336 */ 0x72A1, 0x72AA, 0x10C6, /* Array index: 0x0339 */ 0x72C5, 0x72CC, 0x10D0, /* Array index: 0x033C */ 0x72FA, 0x7301, 0x10D8, /* Array index: 0x033F */ 0x7307, 0x730C, 0x10E0, /* Array index: 0x0342 */ 0x7330, 0x7335, 0x10E6, /* Array index: 0x0345 */ 0x733A, 0x733C, 0x10EC, /* Array index: 0x0348 */ 0x7349, 0x734D, 0x10EF, /* Array index: 0x034B */ 0x7358, 0x736F, 0x10F4, /* Array index: 0x034E */ 0x737C, 0x7385, 0x110C, /* Array index: 0x0351 */ 0x7392, 0x7397, 0x1116, /* Array index: 0x0354 */ 0x73A0, 0x73A6, 0x111C, /* Array index: 0x0357 */ 0x73B4, 0x73B9, 0x1123, /* Array index: 0x035A */ 0x73C2, 0x73CC, 0x1129, /* Array index: 0x035D */ 0x73D2, 0x73DD, 0x1134, /* Array index: 0x0360 */ 0x73E5, 0x73EB, 0x1140, /* Array index: 0x0363 */ 0x73F4, 0x7401, 0x1147, /* Array index: 0x0366 */ 0x7420, 0x7424, 0x1155, /* Array index: 0x0369 */ 0x7429, 0x7432, 0x115A, /* Array index: 0x036C */ 0x744A, 0x7454, 0x1164, /* Array index: 0x036F */ 0x7471, 0x7475, 0x116F, /* Array index: 0x0372 */ 0x7485, 0x748A, 0x1174, /* Array index: 0x0375 */ 0x74B1, 0x74BB, 0x117A, /* Array index: 0x0378 */ 0x74BE, 0x74C5, 0x1185, /* Array index: 0x037B */ 0x74D5, 0x74E1, 0x118D, /* Array index: 0x037E */ 0x74FB, 0x7503, 0x119A, /* Array index: 0x0381 */ 0x750F, 0x7517, 0x11A3, /* Array index: 0x0384 */ 0x753E, 0x7540, 0x11AC, /* Array index: 0x0387 */ 0x75BF, 0x75C1, 0x11AF, /* Array index: 0x038A */ 0x75CB, 0x75D2, 0x11B2, /* Array index: 0x038D */ 0x75F5, 0x75FE, 0x11BA, /* Array index: 0x0390 */ 0x760F, 0x761E, 0x11C4, /* Array index: 0x0393 */ 0x762D, 0x7635, 0x11D4, /* Array index: 0x0396 */ 0x7647, 0x7649, 0x11DD, /* Array index: 0x0399 */ 0x7699, 0x769E, 0x11E0, /* Array index: 0x039C */ 0x7703, 0x7705, 0x11E6, /* Array index: 0x039F */ 0x7710, 0x771D, 0x11E9, /* Array index: 0x03A2 */ 0x772F, 0x7735, 0x11F7, /* Array index: 0x03A5 */ 0x7744, 0x774E, 0x11FE, /* Array index: 0x03A8 */ 0x7752, 0x775A, 0x1209, /* Array index: 0x03AB */ 0x776D, 0x776F, 0x1212, /* Array index: 0x03AE */ 0x777E, 0x7789, 0x1215, /* Array index: 0x03B1 */ 0x7797, 0x77A3, 0x1221, /* Array index: 0x03B4 */ 0x77B1, 0x77B7, 0x122E, /* Array index: 0x03B7 */ 0x77C9, 0x77D0, 0x1235, /* Array index: 0x03BA */ 0x77F0, 0x77F2, 0x123D, /* Array index: 0x03BD */ 0x77F7, 0x77FC, 0x1240, /* Array index: 0x03C0 */ 0x780E, 0x7813, 0x1246, /* Array index: 0x03C3 */ 0x7821, 0x7823, 0x124C, /* Array index: 0x03C6 */ 0x7826, 0x7835, 0x124F, /* Array index: 0x03C9 */ 0x7848, 0x784D, 0x125F, /* Array index: 0x03CC */ 0x7864, 0x7871, 0x1265, /* Array index: 0x03CF */ 0x7883, 0x7887, 0x1273, /* Array index: 0x03D2 */ 0x7894, 0x789A, 0x1278, /* Array index: 0x03D5 */ 0x789E, 0x78A5, 0x127F, /* Array index: 0x03D8 */ 0x78A8, 0x78AD, 0x1287, /* Array index: 0x03DB */ 0x78C8, 0x78D1, 0x128D, /* Array index: 0x03DE */ 0x78DB, 0x78E5, 0x1297, /* Array index: 0x03E1 */ 0x78F9, 0x78FF, 0x12A2, /* Array index: 0x03E4 */ 0x7910, 0x7914, 0x12A9, /* Array index: 0x03E7 */ 0x791B, 0x791E, 0x12AE, /* Array index: 0x03EA */ 0x7921, 0x7929, 0x12B2, /* Array index: 0x03ED */ 0x794A, 0x794C, 0x12BB, /* Array index: 0x03F0 */ 0x794F, 0x7954, 0x12BE, /* Array index: 0x03F3 */ 0x7967, 0x796B, 0x12C4, /* Array index: 0x03F6 */ 0x7970, 0x7974, 0x12C9, /* Array index: 0x03F9 */ 0x7990, 0x79A4, 0x12CE, /* Array index: 0x03FC */ 0x79AB, 0x79AD, 0x12E3, /* Array index: 0x03FF */ 0x79B4, 0x79B8, 0x12E6, /* Array index: 0x0402 */ 0x79CD, 0x79CF, 0x12EB, /* Array index: 0x0405 */ 0x79DC, 0x79E0, 0x12EE, /* Array index: 0x0408 */ 0x79EA, 0x79EE, 0x12F3, /* Array index: 0x040B */ 0x79F6, 0x79FA, 0x12F8, /* Array index: 0x040E */ 0x7A02, 0x7A04, 0x12FD, /* Array index: 0x0411 */ 0x7A10, 0x7A1B, 0x1300, /* Array index: 0x0414 */ 0x7A58, 0x7A5C, 0x130C, /* Array index: 0x0417 */ 0x7A6C, 0x7A71, 0x1311, /* Array index: 0x041A */ 0x7A85, 0x7A90, 0x1317, /* Array index: 0x041D */ 0x7AB1, 0x7AB8, 0x1323, /* Array index: 0x0420 */ 0x7B04, 0x7B13, 0x132B, /* Array index: 0x0423 */ 0x7B22, 0x7B25, 0x133B, /* Array index: 0x0426 */ 0x7B2D, 0x7B35, 0x133F, /* Array index: 0x0429 */ 0x7B44, 0x7B4E, 0x1348, /* Array index: 0x042C */ 0x7B61, 0x7B66, 0x1353, /* Array index: 0x042F */ 0x7B70, 0x7B78, 0x1359, /* Array index: 0x0432 */ 0x7B8A, 0x7B91, 0x1362, /* Array index: 0x0435 */ 0x7B98, 0x7B9C, 0x136A, /* Array index: 0x0438 */ 0x7BDA, 0x7BEB, 0x136F, /* Array index: 0x043B */ 0x7BF0, 0x7BF4, 0x1381, /* Array index: 0x043E */ 0x7BFD, 0x7C10, 0x1386, /* Array index: 0x0441 */ 0x7C1C, 0x7C2D, 0x139A, /* Array index: 0x0444 */ 0x7C45, 0x7C4A, 0x13AC, /* Array index: 0x0447 */ 0x7C57, 0x7C5C, 0x13B2, /* Array index: 0x044A */ 0x7C66, 0x7C6B, 0x13B8, /* Array index: 0x044D */ 0x7C78, 0x7C7A, 0x13BE, /* Array index: 0x0450 */ 0x7C7F, 0x7C85, 0x13C1, /* Array index: 0x0453 */ 0x7CA1, 0x7CA3, 0x13C8, /* Array index: 0x0456 */ 0x7CBA, 0x7CBC, 0x13CB, /* Array index: 0x0459 */ 0x7CD0, 0x7CD4, 0x13CE, /* Array index: 0x045C */ 0x7D0E, 0x7D13, 0x13D3, /* Array index: 0x045F */ 0x7D1D, 0x7D1F, 0x13D9, /* Array index: 0x0462 */ 0x7D3A, 0x7D41, 0x13DC, /* Array index: 0x0465 */ 0x7D4E, 0x7D58, 0x13E4, /* Array index: 0x0468 */ 0x7D67, 0x7D6F, 0x13EF, /* Array index: 0x046B */ 0x7D7A, 0x7D8E, 0x13F8, /* Array index: 0x046E */ 0x7DA6, 0x7DAA, 0x140D, /* Array index: 0x0471 */ 0x7DC0, 0x7DC6, 0x1412, /* Array index: 0x0474 */ 0x7E0B, 0x7E17, 0x1419, /* Array index: 0x0477 */ 0x7E1F, 0x7E25, 0x1426, /* Array index: 0x047A */ 0x7E38, 0x7E3C, 0x142D, /* Array index: 0x047D */ 0x7E56, 0x7E58, 0x1432, /* Array index: 0x0480 */ 0x7E5F, 0x7E63, 0x1435, /* Array index: 0x0483 */ 0x7E72, 0x7E7B, 0x143A, /* Array index: 0x0486 */ 0x7E86, 0x7E8D, 0x1444, /* Array index: 0x0489 */ 0x7E95, 0x7E9B, 0x144C, /* Array index: 0x048C */ 0x7F5B, 0x7F6D, 0x1453, /* Array index: 0x048F */ 0x7F7A, 0x7F7F, 0x1466, /* Array index: 0x0492 */ 0x7F9B, 0x7FA7, 0x146C, /* Array index: 0x0495 */ 0x7FC7, 0x7FD1, 0x1479, /* Array index: 0x0498 */ 0x7FE2, 0x7FEF, 0x1484, /* Array index: 0x049B */ 0x7FF4, 0x7FF8, 0x1492, /* Array index: 0x049E */ 0x7FFD, 0x7FFF, 0x1497, /* Array index: 0x04A1 */ 0x804F, 0x8051, 0x149A, /* Array index: 0x04A4 */ 0x80C5, 0x80CA, 0x149D, /* Array index: 0x04A7 */ 0x80CD, 0x80D9, 0x14A3, /* Array index: 0x04AA */ 0x80F9, 0x80FB, 0x14B0, /* Array index: 0x04AD */ 0x811B, 0x8122, 0x14B3, /* Array index: 0x04B0 */ 0x815E, 0x8164, 0x14BB, /* Array index: 0x04B3 */ 0x8189, 0x818D, 0x14C2, /* Array index: 0x04B6 */ 0x81AE, 0x81BC, 0x14C7, /* Array index: 0x04B9 */ 0x81D0, 0x81D2, 0x14D6, /* Array index: 0x04BC */ 0x81DD, 0x81E1, 0x14D9, /* Array index: 0x04BF */ 0x81F7, 0x81F9, 0x14DE, /* Array index: 0x04C2 */ 0x8232, 0x8234, 0x14E1, /* Array index: 0x04C5 */ 0x823C, 0x8245, 0x14E4, /* Array index: 0x04C8 */ 0x824E, 0x8264, 0x14EE, /* Array index: 0x04CB */ 0x8268, 0x826D, 0x1505, /* Array index: 0x04CE */ 0x827C, 0x8285, 0x150B, /* Array index: 0x04D1 */ 0x828E, 0x8294, 0x1515, /* Array index: 0x04D4 */ 0x829E, 0x82AB, 0x151C, /* Array index: 0x04D7 */ 0x82B4, 0x82B6, 0x152A, /* Array index: 0x04DA */ 0x82E8, 0x82ED, 0x152D, /* Array index: 0x04DD */ 0x82F0, 0x82FB, 0x1533, /* Array index: 0x04E0 */ 0x8322, 0x832F, 0x153F, /* Array index: 0x04E3 */ 0x833A, 0x833C, 0x154D, /* Array index: 0x04E6 */ 0x8341, 0x834E, 0x1550, /* Array index: 0x04E9 */ 0x8373, 0x8376, 0x155E, /* Array index: 0x04EC */ 0x837D, 0x8383, 0x1562, /* Array index: 0x04EF */ 0x8387, 0x8390, 0x1569, /* Array index: 0x04F2 */ 0x8397, 0x839D, 0x1573, /* Array index: 0x04F5 */ 0x83A3, 0x83B0, 0x157A, /* Array index: 0x04F8 */ 0x83BF, 0x83EE, 0x1588, /* Array index: 0x04FB */ 0x83F5, 0x8401, 0x15B8, /* Array index: 0x04FE */ 0x840F, 0x8413, 0x15C5, /* Array index: 0x0501 */ 0x842F, 0x843B, 0x15CA, /* Array index: 0x0504 */ 0x843F, 0x8460, 0x15D7, /* Array index: 0x0507 */ 0x846E, 0x847E, 0x15F9, /* Array index: 0x050A */ 0x848D, 0x8491, 0x160A, /* Array index: 0x050D */ 0x8497, 0x84B1, 0x160F, /* Array index: 0x0510 */ 0x84B9, 0x84BB, 0x162A, /* Array index: 0x0513 */ 0x84CC, 0x84D7, 0x162D, /* Array index: 0x0516 */ 0x84E7, 0x8502, 0x1639, /* Array index: 0x0519 */ 0x8507, 0x850F, 0x1655, /* Array index: 0x051C */ 0x8515, 0x8520, 0x165E, /* Array index: 0x051F */ 0x8524, 0x8531, 0x166A, /* Array index: 0x0522 */ 0x8540, 0x8547, 0x1678, /* Array index: 0x0525 */ 0x8551, 0x8558, 0x1680, /* Array index: 0x0528 */ 0x8560, 0x8567, 0x1688, /* Array index: 0x052B */ 0x8575, 0x8590, 0x1690, /* Array index: 0x052E */ 0x8595, 0x85A4, 0x16AC, /* Array index: 0x0531 */ 0x85B1, 0x85B8, 0x16BC, /* Array index: 0x0534 */ 0x85BD, 0x85C8, 0x16C4, /* Array index: 0x0537 */ 0x85D7, 0x85E3, 0x16D0, /* Array index: 0x053A */ 0x85EB, 0x85F2, 0x16DD, /* Array index: 0x053D */ 0x85FD, 0x8605, 0x16E5, /* Array index: 0x0540 */ 0x8618, 0x8640, 0x16EE, /* Array index: 0x0543 */ 0x8646, 0x864D, 0x1717, /* Array index: 0x0546 */ 0x8661, 0x8674, 0x171F, /* Array index: 0x0549 */ 0x8685, 0x8687, 0x1733, /* Array index: 0x054C */ 0x868D, 0x86A2, 0x1736, /* Array index: 0x054F */ 0x86B3, 0x86C5, 0x174C, /* Array index: 0x0552 */ 0x86D6, 0x86DD, 0x175F, /* Array index: 0x0555 */ 0x86E6, 0x86EC, 0x1767, /* Array index: 0x0558 */ 0x86F5, 0x86FA, 0x176E, /* Array index: 0x055B */ 0x8709, 0x8712, 0x1774, /* Array index: 0x055E */ 0x8719, 0x871B, 0x177E, /* Array index: 0x0561 */ 0x8720, 0x8735, 0x1781, /* Array index: 0x0564 */ 0x873E, 0x8743, 0x1797, /* Array index: 0x0567 */ 0x874D, 0x876F, 0x179D, /* Array index: 0x056A */ 0x8777, 0x877B, 0x17C0, /* Array index: 0x056D */ 0x8784, 0x8789, 0x17C5, /* Array index: 0x0570 */ 0x878F, 0x879D, 0x17CB, /* Array index: 0x0573 */ 0x87AA, 0x87C5, 0x17DA, /* Array index: 0x0576 */ 0x87D3, 0x87ED, 0x17F6, /* Array index: 0x0579 */ 0x87F3, 0x87F7, 0x1811, /* Array index: 0x057C */ 0x87FF, 0x8803, 0x1816, /* Array index: 0x057F */ 0x8806, 0x880C, 0x181B, /* Array index: 0x0582 */ 0x8819, 0x881D, 0x1822, /* Array index: 0x0585 */ 0x8824, 0x8844, 0x1827, /* Array index: 0x0588 */ 0x8871, 0x8876, 0x1848, /* Array index: 0x058B */ 0x887C, 0x8880, 0x184E, /* Array index: 0x058E */ 0x8895, 0x889B, 0x1853, /* Array index: 0x0591 */ 0x88B6, 0x88C0, 0x185A, /* Array index: 0x0594 */ 0x88C9, 0x88D0, 0x1865, /* Array index: 0x0597 */ 0x88EE, 0x88F2, 0x186D, /* Array index: 0x059A */ 0x88F6, 0x88FE, 0x1872, /* Array index: 0x059D */ 0x8914, 0x8919, 0x187B, /* Array index: 0x05A0 */ 0x892C, 0x8937, 0x1881, /* Array index: 0x05A3 */ 0x894B, 0x8963, 0x188D, /* Array index: 0x05A6 */ 0x8979, 0x897E, 0x18A6, /* Array index: 0x05A9 */ 0x899B, 0x89A4, 0x18AC, /* Array index: 0x05AC */ 0x89AD, 0x89AF, 0x18B6, /* Array index: 0x05AF */ 0x89D5, 0x89FF, 0x18B9, /* Array index: 0x05B2 */ 0x8A4A, 0x8A52, 0x18E4, /* Array index: 0x05B5 */ 0x8A57, 0x8A59, 0x18ED, /* Array index: 0x05B8 */ 0x8A74, 0x8A77, 0x18F0, /* Array index: 0x05BB */ 0x8A7F, 0x8A86, 0x18F4, /* Array index: 0x05BE */ 0x8ABA, 0x8AC0, 0x18FC, /* Array index: 0x05C1 */ 0x8AD1, 0x8AE4, 0x1903, /* Array index: 0x05C4 */ 0x8B05, 0x8B08, 0x1917, /* Array index: 0x05C7 */ 0x8B0F, 0x8B27, 0x191B, /* Array index: 0x05CA */ 0x8B2E, 0x8B42, 0x1934, /* Array index: 0x05CD */ 0x8B47, 0x8B4B, 0x1949, /* Array index: 0x05D0 */ 0x8B50, 0x8B57, 0x194E, /* Array index: 0x05D3 */ 0x8B78, 0x8B7F, 0x1956, /* Array index: 0x05D6 */ 0x8B82, 0x8B8E, 0x195E, /* Array index: 0x05D9 */ 0x8C39, 0x8C3E, 0x196B, /* Array index: 0x05DC */ 0x8C64, 0x8C69, 0x1971, /* Array index: 0x05DF */ 0x8C6F, 0x8C78, 0x1977, /* Array index: 0x05E2 */ 0x8C80, 0x8C86, 0x1981, /* Array index: 0x05E5 */ 0x8C8F, 0x8C9C, 0x1988, /* Array index: 0x05E8 */ 0x8CA3, 0x8CA5, 0x1996, /* Array index: 0x05EB */ 0x8D8C, 0x8D96, 0x1999, /* Array index: 0x05EE */ 0x8DAA, 0x8DAF, 0x19A4, /* Array index: 0x05F1 */ 0x8DB5, 0x8DB9, 0x19AA, /* Array index: 0x05F4 */ 0x8DD3, 0x8DD9, 0x19AF, /* Array index: 0x05F7 */ 0x8DEE, 0x8DF4, 0x19B6, /* Array index: 0x05FA */ 0x8DFD, 0x8E0A, 0x19BD, /* Array index: 0x05FD */ 0x8E11, 0x8E1C, 0x19CB, /* Array index: 0x0600 */ 0x8E23, 0x8E27, 0x19D7, /* Array index: 0x0603 */ 0x8E3C, 0x8E41, 0x19DC, /* Array index: 0x0606 */ 0x8E4C, 0x8E62, 0x19E2, /* Array index: 0x0609 */ 0x8E92, 0x8EA9, 0x19F9, /* Array index: 0x060C */ 0x8EDC, 0x8EFA, 0x1A11, /* Array index: 0x060F */ 0x8EFF, 0x8F08, 0x1A30, /* Array index: 0x0612 */ 0x8F0D, 0x8F11, 0x1A3A, /* Array index: 0x0615 */ 0x8F16, 0x8F1A, 0x1A3F, /* Array index: 0x0618 */ 0x8F32, 0x8F39, 0x1A44, /* Array index: 0x061B */ 0x8F46, 0x8F48, 0x1A4C, /* Array index: 0x061E */ 0x8F4F, 0x8F64, 0x1A4F, /* Array index: 0x0621 */ 0x8FD2, 0x8FD7, 0x1A65, /* Array index: 0x0624 */ 0x8FFB, 0x8FFF, 0x1A6B, /* Array index: 0x0627 */ 0x9097, 0x90A1, 0x1A70, /* Array index: 0x062A */ 0x90AF, 0x90B4, 0x1A7B, /* Array index: 0x062D */ 0x90BD, 0x90BF, 0x1A81, /* Array index: 0x0630 */ 0x90D4, 0x90F4, 0x1A84, /* Array index: 0x0633 */ 0x90F9, 0x9108, 0x1AA5, /* Array index: 0x0636 */ 0x910B, 0x9111, 0x1AB5, /* Array index: 0x0639 */ 0x911A, 0x9147, 0x1ABC, /* Array index: 0x063C */ 0x914E, 0x9150, 0x1AEA, /* Array index: 0x063F */ 0x915F, 0x9164, 0x1AED, /* Array index: 0x0642 */ 0x9180, 0x9186, 0x1AF3, /* Array index: 0x0645 */ 0x918D, 0x9193, 0x1AFA, /* Array index: 0x0648 */ 0x9199, 0x91A2, 0x1B01, /* Array index: 0x064B */ 0x91AF, 0x91BE, 0x1B0B, /* Array index: 0x064E */ 0x91D3, 0x91D5, 0x1B1B, /* Array index: 0x0651 */ 0x91E8, 0x91EE, 0x1B1E, /* Array index: 0x0654 */ 0x91F3, 0x91F9, 0x1B25, /* Array index: 0x0657 */ 0x91FD, 0x9206, 0x1B2C, /* Array index: 0x065A */ 0x9216, 0x921C, 0x1B36, /* Array index: 0x065D */ 0x9224, 0x9227, 0x1B3D, /* Array index: 0x0660 */ 0x922D, 0x9233, 0x1B41, /* Array index: 0x0663 */ 0x924C, 0x9256, 0x1B48, /* Array index: 0x0666 */ 0x9263, 0x9267, 0x1B53, /* Array index: 0x0669 */ 0x926C, 0x9272, 0x1B58, /* Array index: 0x066C */ 0x9279, 0x928E, 0x1B5F, /* Array index: 0x066F */ 0x9297, 0x92AB, 0x1B75, /* Array index: 0x0672 */ 0x92B4, 0x92B6, 0x1B8A, /* Array index: 0x0675 */ 0x92C0, 0x92E1, 0x1B8D, /* Array index: 0x0678 */ 0x92E6, 0x92E9, 0x1BAF, /* Array index: 0x067B */ 0x92F7, 0x9302, 0x1BB3, /* Array index: 0x067E */ 0x9308, 0x9316, 0x1BBF, /* Array index: 0x0681 */ 0x931B, 0x932A, 0x1BCE, /* Array index: 0x0684 */ 0x934C, 0x9359, 0x1BDE, /* Array index: 0x0687 */ 0x9360, 0x9364, 0x1BEC, /* Array index: 0x068A */ 0x9376, 0x937C, 0x1BF1, /* Array index: 0x068D */ 0x9388, 0x9392, 0x1BF8, /* Array index: 0x0690 */ 0x939B, 0x93AA, 0x1C03, /* Array index: 0x0693 */ 0x93B1, 0x93B7, 0x1C13, /* Array index: 0x0696 */ 0x93CC, 0x93D5, 0x1C1A, /* Array index: 0x0699 */ 0x93F5, 0x9400, 0x1C24, /* Array index: 0x069C */ 0x9406, 0x9416, 0x1C30, /* Array index: 0x069F */ 0x9428, 0x942C, 0x1C41, /* Array index: 0x06A2 */ 0x9439, 0x9440, 0x1C46, /* Array index: 0x06A5 */ 0x9445, 0x9450, 0x1C4E, /* Array index: 0x06A8 */ 0x946B, 0x9478, 0x1C5A, /* Array index: 0x06AB */ 0x9480, 0x9483, 0x1C68, /* Array index: 0x06AE */ 0x957A, 0x957D, 0x1C6C, /* Array index: 0x06B1 */ 0x959B, 0x959F, 0x1C70, /* Array index: 0x06B4 */ 0x95B5, 0x95C0, 0x1C75, /* Array index: 0x06B7 */ 0x95D1, 0x95D3, 0x1C81, /* Array index: 0x06BA */ 0x95DA, 0x95E5, 0x1C84, /* Array index: 0x06BD */ 0x9620, 0x9624, 0x1C90, /* Array index: 0x06C0 */ 0x9639, 0x963D, 0x1C95, /* Array index: 0x06C3 */ 0x9687, 0x9689, 0x1C9A, /* Array index: 0x06C6 */ 0x9691, 0x9693, 0x1C9D, /* Array index: 0x06C9 */ 0x971F, 0x972F, 0x1CA0, /* Array index: 0x06CC */ 0x9777, 0x9784, 0x1CB1, /* Array index: 0x06CF */ 0x9799, 0x97A5, 0x1CBF, /* Array index: 0x06D2 */ 0x97A8, 0x97AE, 0x1CCC, /* Array index: 0x06D5 */ 0x97CD, 0x97E5, 0x1CD3, /* Array index: 0x06D8 */ 0x980D, 0x980F, 0x1CEC, /* Array index: 0x06DB */ 0x9826, 0x9829, 0x1CEF, /* Array index: 0x06DE */ 0x9841, 0x984A, 0x1CF3, /* Array index: 0x06E1 */ 0x9850, 0x9852, 0x1CFD, /* Array index: 0x06E4 */ 0x985C, 0x9864, 0x1D00, /* Array index: 0x06E7 */ 0x9872, 0x9874, 0x1D09, /* Array index: 0x06EA */ 0x98AC, 0x98AE, 0x1D0C, /* Array index: 0x06ED */ 0x98BB, 0x98C2, 0x1D0F, /* Array index: 0x06F0 */ 0x9914, 0x9917, 0x1D17, /* Array index: 0x06F3 */ 0x9927, 0x9933, 0x1D1B, /* Array index: 0x06F6 */ 0x999C, 0x999E, 0x1D28, /* Array index: 0x06F9 */ 0x99B9, 0x99BD, 0x1D2B, /* Array index: 0x06FC */ 0x99C9, 0x99CF, 0x1D30, /* Array index: 0x06FF */ 0x99D3, 0x99D8, 0x1D37, /* Array index: 0x0702 */ 0x99E3, 0x99F0, 0x1D3D, /* Array index: 0x0705 */ 0x99F4, 0x9A15, 0x1D4B, /* Array index: 0x0708 */ 0x9A1A, 0x9A3A, 0x1D6D, /* Array index: 0x070B */ 0x9A46, 0x9A56, 0x1D8E, /* Array index: 0x070E */ 0x9A64, 0x9A6B, 0x1D9F, /* Array index: 0x0711 */ 0x9ABE, 0x9AC2, 0x1DA7, /* Array index: 0x0714 */ 0x9AF1, 0x9AFE, 0x1DAC, /* Array index: 0x0717 */ 0x9B08, 0x9B19, 0x1DBA, /* Array index: 0x071A */ 0x9B1E, 0x9B20, 0x1DCC, /* Array index: 0x071D */ 0x9B48, 0x9B4C, 0x1DCF, /* Array index: 0x0720 */ 0x9B5F, 0x9B61, 0x1DD4, /* Array index: 0x0723 */ 0x9B64, 0x9B68, 0x1DD7, /* Array index: 0x0726 */ 0x9B70, 0x9B88, 0x1DDC, /* Array index: 0x0729 */ 0x9B9E, 0x9BA8, 0x1DF5, /* Array index: 0x072C */ 0x9BB5, 0x9BB9, 0x1E00, /* Array index: 0x072F */ 0x9BC3, 0x9BC7, 0x1E05, /* Array index: 0x0732 */ 0x9BD3, 0x9BEC, 0x1E0A, /* Array index: 0x0735 */ 0x9C05, 0x9C0B, 0x1E24, /* Array index: 0x0738 */ 0x9C28, 0x9C2C, 0x1E2B, /* Array index: 0x073B */ 0x9C32, 0x9C41, 0x1E30, /* Array index: 0x073E */ 0x9C48, 0x9C52, 0x1E40, /* Array index: 0x0741 */ 0x9C62, 0x9C68, 0x1E4B, /* Array index: 0x0744 */ 0x9C71, 0x9C75, 0x1E52, /* Array index: 0x0747 */ 0x9CF7, 0x9D00, 0x1E57, /* Array index: 0x074A */ 0x9D04, 0x9D08, 0x1E61, /* Array index: 0x074D */ 0x9D17, 0x9D22, 0x1E66, /* Array index: 0x0750 */ 0x9D2D, 0x9D38, 0x1E72, /* Array index: 0x0753 */ 0x9D3D, 0x9D45, 0x1E7E, /* Array index: 0x0756 */ 0x9D4A, 0x9D4C, 0x1E87, /* Array index: 0x0759 */ 0x9D52, 0x9D5C, 0x1E8A, /* Array index: 0x075C */ 0x9D67, 0x9D8C, 0x1E95, /* Array index: 0x075F */ 0x9D94, 0x9DF8, 0x1EBB, /* Array index: 0x0762 */ 0x9DFB, 0x9E19, 0x1F20, /* Array index: 0x0765 */ 0x9E86, 0x9E8E, 0x1F3F, /* Array index: 0x0768 */ 0x9E99, 0x9E9C, 0x1F48, /* Array index: 0x076B */ 0x9EE4, 0x9EE7, 0x1F4C, /* Array index: 0x076E */ 0x9EF2, 0x9F01, 0x1F50, /* Array index: 0x0771 */ 0x9F18, 0x9F38, 0x1F60, /* Array index: 0x0774 */ 0x9F40, 0x9F4F, 0x1F81, /* Array index: 0x0777 */ 0x9F54, 0x9F60, 0x1F91, /* Array index: 0x077A */ 0x9F6E, 0x9F7B, 0x1F9E, /* Ranges content */ /* Range 0x4F12 - 0x4F14, array index: 0x077D */ 0x217A,0x2177,0x216E, /* Range 0x4F74 - 0x4F89, array index: 0x0780 */ 0x2539,INVALC,0x2538,0x253C,0x2543,0x2541,INVALC,INVALC, 0x2533,0x2535,INVALC,INVALC,0x2536,0x2542,0x2549,INVALC, 0x253B,0x2534,INVALC,0x2537,INVALC,0x253A, /* Range 0x4F94 - 0x4F9E, array index: 0x0796 */ 0x2546,0x254A,INVALC,0x253E,0x2532,INVALC,0x2540,INVALC, 0x2545,INVALC,0x2547, /* Range 0x4FB9 - 0x4FBB, array index: 0x07A1 */ 0x2930,0x292E,0x2929, /* Range 0x4FF4 - 0x4FF7, array index: 0x07A4 */ 0x2D71,0x2D70,0x2D75,0x2D76, /* Range 0x502F - 0x5037, array index: 0x07A8 */ 0x2D7C,0x2D6E,0x2D7D,INVALC,0x2D72,INVALC,0x2D7B,INVALC, 0x2D73, /* Range 0x505B - 0x506B, array index: 0x07B1 */ 0x335B,INVALC,0x3356,0x3352,0x3360,0x3353,0x3351,0x335D, 0x3363,0x3364,INVALC,INVALC,INVALC,0x3A3F,0x3361,0x3350, 0x3362, /* Range 0x509B - 0x509E, array index: 0x07C2 */ 0x3A35,0x3A40,0x3A3E,0x3A38, /* Range 0x50C6 - 0x50CB, array index: 0x07C6 */ 0x415B,INVALC,0x4160,0x4167,0x415E,0x4166, /* Range 0x50FD - 0x50FF, array index: 0x07CC */ 0x4F58,0x4F55,0x4F4E, /* Range 0x5106 - 0x510C, array index: 0x07CF */ 0x4F52,0x4F53,INVALC,INVALC,0x4F59,0x4F56,0x4F57, /* Range 0x5122 - 0x5126, array index: 0x07D6 */ 0x5C47,INVALC,0x5C48,0x5C46,0x5C45, /* Range 0x512D - 0x5135, array index: 0x07DB */ 0x6144,0x6145,INVALC,0x4F50,0x6143,INVALC,INVALC,0x6537, 0x6538, /* Range 0x5231 - 0x5235, array index: 0x07E4 */ 0x2554,0x2551,0x2552,INVALC,0x2550, /* Range 0x525E - 0x5262, array index: 0x07E9 */ 0x2E2C,0x2E2D,INVALC,0x2E29,0x2E2F, /* Range 0x526B - 0x526E, array index: 0x07EE */ 0x336C,0x336E,0x336D,0x336F, /* Range 0x5278 - 0x527C, array index: 0x07F2 */ 0x416C,INVALC,0x416B,0x416D,0x416E, /* Range 0x5296 - 0x5299, array index: 0x07F7 */ 0x6539,0x6B51,0x6B50,0x6E7E, /* Range 0x5309 - 0x530B, array index: 0x07FB */ 0x2333,0x2556,0x2557, /* Range 0x5394 - 0x5399, array index: 0x07FE */ 0x255A,INVALC,0x2939,0x2938,0x293B,0x293A, /* Range 0x5460 - 0x5467, array index: 0x0804 */ 0x256B,0x256A,INVALC,0x256D,0x256F,0x2564,0x2567,0x256E, /* Range 0x547E - 0x5482, array index: 0x080C */ 0x2563,0x255C,INVALC,0x255D,0x255F, /* Range 0x54A0 - 0x54A2, array index: 0x0811 */ 0x2949,0x293D,0x294C, /* Range 0x5503 - 0x5505, array index: 0x0814 */ 0x2E48,0x2E3C,0x2E40, /* Range 0x5508 - 0x5512, array index: 0x0817 */ 0x2E3D,INVALC,0x2E42,0x2E49,0x3424,INVALC,0x2E47,INVALC, INVALC,0x2E3F,0x2E36, /* Range 0x5532 - 0x5536, array index: 0x0822 */ 0x3425,INVALC,0x3379,0x337E,0x337D, /* Range 0x554D - 0x5552, array index: 0x0827 */ 0x3377,0x3427,INVALC,0x3378,0x337B,0x3422, /* Range 0x5575 - 0x5577, array index: 0x082D */ 0x3374,0x3375,0x3A4E, /* Range 0x558C - 0x5595, array index: 0x0830 */ 0x3A5A,0x417C,0x3A5F,0x3A53,INVALC,0x3A4A,0x3A57,0x3A51, INVALC,0x3A5D, /* Range 0x55A1 - 0x55A8, array index: 0x083A */ 0x3A5E,0x3A50,0x3A56,0x3A58,0x3A4C,0x3A5B,INVALC,0x3A4B, /* Range 0x55BF - 0x55C4, array index: 0x0842 */ 0x417A,0x4176,INVALC,0x4227,0x416F,0x4178, /* Range 0x55C8 - 0x55D6, array index: 0x0848 */ 0x4223,INVALC,0x4174,0x4173,0x4171,0x4225,INVALC,0x417D, 0x4172,INVALC,0x417B,INVALC,0x4177,0x417E,0x4222, /* Range 0x563D - 0x564C, array index: 0x0857 */ 0x4F6A,0x4F6C,INVALC,0x4F68,0x4F62,0x4F5F,INVALC,INVALC, 0x3A4F,0x4F65,INVALC,0x4F5E,0x4F64,0x4F63,INVALC,0x4F60, /* Range 0x567E - 0x5686, array index: 0x0867 */ 0x5C52,0x5C54,INVALC,0x5C55,0x5C53,0x5C51,0x5C50,INVALC, 0x5C4F, /* Range 0x5697 - 0x569D, array index: 0x0870 */ 0x6148,0x6146,0x614B,0x6149,INVALC,0x6147,0x614A, /* Range 0x56A6 - 0x56AD, array index: 0x0877 */ 0x653E,0x653F,INVALC,INVALC,0x6540,0x653C,0x6541,0x653D, /* Range 0x571A - 0x5723, array index: 0x087F */ 0x4F70,0x5652,0x5651,INVALC,0x715A,INVALC,0x2139,INVALC, 0x214F,0x2150, /* Range 0x576D - 0x5776, array index: 0x0889 */ 0x2574,INVALC,0x2572,0x2577,0x2576,0x2573,0x257C,0x257D, 0x257A,0x2578, /* Range 0x5794 - 0x579F, array index: 0x0893 */ 0x2959,0x295F,INVALC,0x2956,0x295A,0x295C,0x295E,0x2958, INVALC,0x2957,0x2952,0x2953, /* Range 0x57B5 - 0x57C1, array index: 0x089F */ 0x2951,0x2E55,INVALC,0x2E54,0x2E59,0x2E50,INVALC,0x2E53, 0x2E52,INVALC,0x2E56,INVALC,0x2E5A, /* Range 0x57E1 - 0x5801, array index: 0x08AC */ 0x3444,0x3432,0x3440,INVALC,0x3442,INVALC,0x3448,INVALC, 0x344C,INVALC,INVALC,0x3443,0x3437,0x343F,INVALC,0x344D, 0x344B,0x3441,0x343C,0x3435,0x3A68,0x3433,INVALC,0x343A, INVALC,INVALC,0x3430,0x3446,0x3438,INVALC,INVALC,0x3436, 0x3449, /* Range 0x5807 - 0x5810, array index: 0x08CD */ 0x343E,0x3439,INVALC,INVALC,0x343B,0x344A,0x344E,0x3445, INVALC,0x3447, /* Range 0x5825 - 0x582E, array index: 0x08D7 */ 0x3A6A,INVALC,0x3A65,0x3A67,0x3A61,INVALC,INVALC,0x3A74, 0x3A73,0x3A70, /* Range 0x5832 - 0x583F, array index: 0x08E1 */ 0x2E4D,0x3A6D,INVALC,INVALC,0x3A6F,0x3A62,0x3A72,0x3A71, INVALC,0x3A75,INVALC,0x4236,INVALC,0x3A6E, /* Range 0x584D - 0x584F, array index: 0x08EF */ 0x422D,0x4231,0x422C, /* Range 0x5863 - 0x5865, array index: 0x08F2 */ 0x4237,0x422B,0x4234, /* Range 0x587A - 0x587C, array index: 0x08F5 */ 0x4946,0x494D,0x493E, /* Range 0x5886 - 0x5891, array index: 0x08F8 */ 0x4941,0x4947,0x494C,0x493D,INVALC,0x4945,INVALC,INVALC, 0x4949,0x494F,0x493F,0x4948, /* Range 0x590C - 0x590E, array index: 0x0904 */ 0x2623,0x2961,0x2E5B, /* Range 0x5970 - 0x5972, array index: 0x0907 */ 0x614C,0x6D48,0x6F23, /* Range 0x597B - 0x5980, array index: 0x090A */ 0x222F,0x222D,INVALC,0x2230,0x2232,0x222C, /* Range 0x598E - 0x5990, array index: 0x0910 */ 0x2356,0x2359,0x2358, /* Range 0x59A0 - 0x59A2, array index: 0x0913 */ 0x2354,0x235B,0x2357, /* Range 0x59B1 - 0x59B6, array index: 0x0916 */ 0x2630,0x2629,INVALC,0x2634,0x2625,0x262C, /* Range 0x59DD - 0x59E1, array index: 0x091C */ 0x2968,0x2964,INVALC,0x2974,0x2963, /* Range 0x59ED - 0x59F7, array index: 0x0921 */ 0x2977,0x2965,INVALC,INVALC,0x2967,0x296E,0x2972,0x2976, 0x2973,0x296C,0x296F, /* Range 0x59FA - 0x5A00, array index: 0x092C */ 0x2969,INVALC,0x296B,0x296A,0x2975,INVALC,0x2966, /* Range 0x5A15 - 0x5A19, array index: 0x0933 */ 0x2E61,0x2E5E,0x2E63,INVALC,0x2E5D, /* Range 0x5A35 - 0x5A39, array index: 0x0938 */ 0x3457,INVALC,0x3B26,0x3456,0x3469, /* Range 0x5A42 - 0x5A48, array index: 0x093D */ 0x3470,0x3460,0x3463,INVALC,INVALC,0x346D,0x3465, /* Range 0x5A4C - 0x5A60, array index: 0x0944 */ 0x346A,0x3468,INVALC,INVALC,0x3459,0x346E,0x3462,0x345D, INVALC,0x3453,0x346F,0x345F,0x3452,INVALC,INVALC,0x3464, 0x3471,0x3461,0x3455,0x345A,0x3451, /* Range 0x5A78 - 0x5A7D, array index: 0x0959 */ 0x3A7D,INVALC,0x3A7A,0x3B2D,0x3B21,0x3B2E, /* Range 0x5A8A - 0x5A97, array index: 0x095F */ 0x3B28,0x3B2B,0x3B2F,INVALC,0x3466,0x3B31,0x424D,INVALC, INVALC,0x3B32,0x3A78,0x3B24,INVALC,0x3B29, /* Range 0x5A9C - 0x5A9F, array index: 0x096D */ 0x3B30,0x3B33,0x3A7C,0x3A79, /* Range 0x5AAC - 0x5ABB, array index: 0x0971 */ 0x3B23,INVALC,0x3B25,0x3A77,0x4241,0x423F,INVALC,INVALC, 0x4249,0x4240,0x424A,0x4246,0x423E,0x424C,0x423D,0x4244, /* Range 0x5AC4 - 0x5ACD, array index: 0x0981 */ 0x423B,INVALC,0x4245,0x423A,0x4243,INVALC,0x4248,0x423C, INVALC,0x424B, /* Range 0x5AD9 - 0x5AE2, array index: 0x098B */ 0x4961,0x4957,0x495D,0x4952,0x4960,0x495F,0x4963,0x495C, INVALC,0x495B, /* Range 0x5AE8 - 0x5AEE, array index: 0x0995 */ 0x4962,INVALC,0x4956,0x4959,0x495E,0x4958,0x4953, /* Range 0x5AF3 - 0x5AF9, array index: 0x099C */ 0x495A,0x4F7C,INVALC,0x5021,0x4F7E,0x5023,0x5025, /* Range 0x5AFF - 0x5B07, array index: 0x09A3 */ 0x4F7B,INVALC,0x5026,0x5024,0x5022,INVALC,0x5028,INVALC, 0x5027, /* Range 0x5B13 - 0x5B1B, array index: 0x09AC */ 0x5660,0x565F,INVALC,0x5662,0x565B,INVALC,0x565C,0x5664, 0x565D, /* Range 0x5B23 - 0x5B2F, array index: 0x09B5 */ 0x5C5D,INVALC,0x5C5B,0x5C60,0x5C5F,0x5663,INVALC,INVALC, INVALC,0x5C5E,0x5C5A,0x5C62,0x5C61, /* Range 0x5B3C - 0x5B3F, array index: 0x09C2 */ 0x614D,0x6546,0x6547,0x6548, /* Range 0x5B47 - 0x5B4E, array index: 0x09C6 */ 0x6B56,0x6B55,INVALC,INVALC,0x6D49,0x6D4A,0x6F24,0x7035, /* Range 0x5BCA - 0x5BCE, array index: 0x09CE */ 0x3B39,0x3B36,INVALC,0x3B35,0x3B3A, /* Range 0x5C7A - 0x5C7E, array index: 0x09D3 */ 0x2237,0x2238,0x2236,INVALC,0x2239, /* Range 0x5C86 - 0x5C95, array index: 0x09D8 */ 0x2367,INVALC,0x2362,0x2364,0x2366,0x2363,INVALC,0x2360, INVALC,0x2361,INVALC,INVALC,0x2365,0x2368,INVALC,0x2369, /* Range 0x5C9F - 0x5CB0, array index: 0x09E8 */ 0x2643,0x263E,INVALC,0x2646,0x2644,0x263D,0x264A,0x264D, 0x2648,0x2641,INVALC,0x2647,INVALC,0x2642,0x2645,0x263C, 0x2640,0x264C, /* Range 0x5CC6 - 0x5CDF, array index: 0x09FA */ 0x2A2C,0x2A25,0x2A2B,0x2A24,0x2A26,0x297E,0x297C,INVALC, 0x2A2D,0x2A2A,0x297A,INVALC,INVALC,0x2A28,0x2A29,INVALC, 0x2A27,0x297D,0x297B,INVALC,0x2A23,0x2A21,INVALC,INVALC, 0x2A22,0x2A2E, /* Range 0x5CF7 - 0x5CF9, array index: 0x0A14 */ 0x2E72,0x2A2F,0x2E74, /* Range 0x5D0B - 0x5D0F, array index: 0x0A17 */ 0x3478,0x347C,0x347E,INVALC,0x3523, /* Range 0x5D1D - 0x5D20, array index: 0x0A1C */ 0x3479,0x3477,0x3527,0x347B, /* Range 0x5D2E - 0x5D4B, array index: 0x0A20 */ 0x3528,INVALC,0x3524,0x3B4B,0x3B52,0x3B47,INVALC,0x3B43, 0x3B53,0x3B3D,0x3B50,0x3B4E,0x3B48,INVALC,0x3B51,0x3B4A, INVALC,0x3B42,0x3B54,0x3B40,0x3B4D,0x3B3E,INVALC,0x3B55, INVALC,INVALC,INVALC,0x3B4F,0x4255,0x3B41, /* Range 0x5D79 - 0x5D82, array index: 0x0A3E */ 0x4975,0x496C,INVALC,0x4973,0x496A,0x4972,0x4976,0x4969, 0x496D,0x4968, /* Range 0x5D86 - 0x5D8A, array index: 0x0A48 */ 0x496B,INVALC,0x4971,0x4970,0x496F, /* Range 0x5D9C - 0x5DA2, array index: 0x0A4D */ 0x5033,INVALC,0x5036,0x502D,0x5032,0x5034,0x502F, /* Range 0x5DA7 - 0x5DB7, array index: 0x0A54 */ 0x566B,0x5670,0x566A,0x566F,INVALC,0x5668,0x5672,0x566E, 0x5673,0x566D,0x5669,0x5671,INVALC,0x5674,0x566C,INVALC, 0x5C66, /* Range 0x5E20 - 0x5E24, array index: 0x0A65 */ 0x2A34,0x2A31,0x2A32,0x2A33,0x2A35, /* Range 0x5E4A - 0x5E4F, array index: 0x0A6A */ 0x4260,0x4262,INVALC,0x4261,0x425F,0x425E, /* Range 0x5E66 - 0x5E70, array index: 0x0A70 */ 0x5677,0x5675,0x5676,0x5037,0x5C68,INVALC,0x5C67,0x6151, 0x6152,0x5678,0x654A, /* Range 0x5E88 - 0x5E8D, array index: 0x0A7B */ 0x2370,0x236E,INVALC,0x236D,0x236F,0x2371, /* Range 0x5EA2 - 0x5EA5, array index: 0x0A81 */ 0x2A38,0x2A3A,0x2A37,0x2A3B, /* Range 0x5EAE - 0x5EB4, array index: 0x0A85 */ 0x2E78,INVALC,0x2A36,0x352B,0x352E,0x352F,0x352C, /* Range 0x5EC5 - 0x5EC7, array index: 0x0A8C */ 0x4263,0x4265,0x4267, /* Range 0x5ED1 - 0x5EDE, array index: 0x0A8F */ 0x497B,0x4A23,INVALC,0x4A24,0x4A21,INVALC,0x497C,0x497A, 0x4A22,INVALC,0x503C,0x497E,INVALC,0x503D, /* Range 0x5EE5 - 0x5EE9, array index: 0x0A9D */ 0x567D,0x567B,0x567A,0x567C,0x5679, /* Range 0x5EEE - 0x5EF2, array index: 0x0AA2 */ 0x6872,0x6873,INVALC,0x6B59,0x6D4D, /* Range 0x5F22 - 0x5F24, array index: 0x0AA7 */ 0x2652,0x2653,0x2654, /* Range 0x5FBB - 0x5FC1, array index: 0x0AAA */ 0x5722,0x5721,INVALC,0x5C69,0x654B,0x6874,0x6875, /* Range 0x5FCF - 0x5FD5, array index: 0x0AB1 */ 0x2242,0x2378,0x2377,0x2376,INVALC,0x2241,0x2240, /* Range 0x5FE1 - 0x5FE5, array index: 0x0AB8 */ 0x237D,INVALC,0x2421,0x237E,0x265A, /* Range 0x5FED - 0x5FEF, array index: 0x0ABD */ 0x2379,0x237B,0x2423, /* Range 0x6009 - 0x6013, array index: 0x0AC0 */ 0x266E,0x2661,0x265F,0x266D,0x2668,INVALC,INVALC,0x2669, 0x266C,INVALC,0x266B, /* Range 0x602C - 0x6034, array index: 0x0ACB */ 0x2666,0x265B,0x266A,INVALC,INVALC,INVALC,0x265E,0x2663, 0x2660, /* Range 0x6040 - 0x6049, array index: 0x0AD4 */ 0x2A4B,0x2F23,0x2A4C,INVALC,0x2A4F,0x2A45,INVALC,0x2A47, INVALC,0x2A48, /* Range 0x605A - 0x605F, array index: 0x0ADE */ 0x2F21,0x2A49,INVALC,0x2E7E,0x2A44,0x2A4D, /* Range 0x6086 - 0x608A, array index: 0x0AE4 */ 0x3537,0x2F2E,0x2F25,INVALC,0x3535, /* Range 0x609B - 0x609D, array index: 0x0AE9 */ 0x2F2C,0x2F2F,0x2F29, /* Range 0x60BE - 0x60CF, array index: 0x0AEC */ 0x3538,0x3546,0x3549,0x3B6C,INVALC,0x3547,0x3B61,INVALC, INVALC,INVALC,0x3541,0x3B5C,0x3545,INVALC,0x3B5E,0x3548, 0x3B60,0x353D, /* Range 0x6103 - 0x6105, array index: 0x0AFE */ 0x3B6D,0x3B72,0x3B66, /* Range 0x6128 - 0x612F, array index: 0x0B01 */ 0x4A2A,0x4276,INVALC,0x426E,0x4A29,INVALC,0x4272,0x4274, /* Range 0x6152 - 0x6156, array index: 0x0B09 */ 0x4A2F,0x4A30,0x4A35,INVALC,0x4A3C, /* Range 0x6171 - 0x6174, array index: 0x0B0E */ 0x4A2D,0x4A31,0x4A2E,0x4A34, /* Range 0x6189 - 0x618D, array index: 0x0B12 */ 0x5047,INVALC,0x5041,0x572E,0x5050, /* Range 0x61AD - 0x61B5, array index: 0x0B17 */ 0x504B,INVALC,0x504A,0x5045,0x5044,INVALC,0x5052,0x5727, 0x5C6B, /* Range 0x61DE - 0x61E0, array index: 0x0B20 */ 0x5C72,0x6154,0x5C6E, /* Range 0x61E4 - 0x61F1, array index: 0x0B23 */ 0x5C70,0x5C6F,INVALC,0x5C6D,0x5C71,0x615C,0x6158,0x615A, INVALC,0x6155,0x6156,INVALC,0x6159,0x6157, /* Range 0x6223 - 0x622D, array index: 0x0B31 */ 0x427A,0x427C,0x427B,INVALC,0x4A3E,INVALC,0x4A3D,INVALC, 0x4A3F,INVALC,0x5053, /* Range 0x625E - 0x6266, array index: 0x0B3C */ 0x2244,INVALC,0x224A,0x2246,0x2248,INVALC,0x2245,0x224C, 0x2247, /* Range 0x6270 - 0x6274, array index: 0x0B45 */ 0x2432,0x242F,0x2437,INVALC,0x2438, /* Range 0x62A9 - 0x62B8, array index: 0x0B4A */ 0x267D,0x2676,INVALC,INVALC,0x2672,0x2679,0x267B,0x267E, INVALC,INVALC,0x267A,0x2673,INVALC,0x2677,INVALC,0x2721, /* Range 0x62F5 - 0x62FB, array index: 0x0B5A */ 0x2A58,0x2A60,INVALC,0x2A5F,0x2A5C,0x2A64,0x2A66, /* Range 0x630B - 0x6315, array index: 0x0B61 */ 0x2A57,0x2A5E,0x2A56,0x2A59,0x2A5D,0x2F34,INVALC,INVALC, 0x2A62,0x2A63,0x2A65, /* Range 0x6332 - 0x633C, array index: 0x0B6C */ 0x354A,0x2F48,0x2F42,INVALC,0x2F39,INVALC,0x2F4B,0x2F3C, INVALC,0x3561,0x2F3F, /* Range 0x6340 - 0x634B, array index: 0x0B77 */ 0x2F4D,0x2F41,INVALC,0x2F3A,0x2F37,0x2F38,INVALC,0x2F47, 0x2F4E,INVALC,0x2F3E,0x2F3D, /* Range 0x6354 - 0x635A, array index: 0x0B83 */ 0x2F44,INVALC,0x2F35,0x2F4C,0x2F43,0x2F45,0x2F49, /* Range 0x636D - 0x6370, array index: 0x0B8A */ 0x355D,0x3559,0x3556,0x3568, /* Range 0x638D - 0x6391, array index: 0x0B8E */ 0x3567,0x3555,INVALC,0x3558,0x3566, /* Range 0x639C - 0x639F, array index: 0x0B93 */ 0x355C,0x3552,0x3550,0x3562, /* Range 0x63AB - 0x63B1, array index: 0x0B97 */ 0x3554,INVALC,0x3551,0x355E,0x355A,0x3B77,0x3B76, /* Range 0x63C2 - 0x63CE, array index: 0x0B9E */ 0x3C2F,0x3B7C,0x3C2C,0x427D,INVALC,0x3C30,0x3C33,INVALC, 0x3C21,0x3C32,0x3C31,INVALC,0x3B78, /* Range 0x63D5 - 0x63E0, array index: 0x0BAB */ 0x3C24,INVALC,0x3C35,0x3C2D,0x3C36,INVALC,INVALC,0x3C2B, 0x3C2A,INVALC,0x3C28,0x3C22, /* Range 0x63E4 - 0x63E8, array index: 0x0BB7 */ 0x2F3B,0x3B79,INVALC,0x433D,0x3B7A, /* Range 0x63EF - 0x63F6, array index: 0x0BBC */ 0x3B7B,0x3C34,0x427E,0x3C25,0x3B7E,INVALC,0x3C26,0x3C23, /* Range 0x6409 - 0x6412, array index: 0x0BC4 */ 0x4324,0x4337,0x433C,0x4330,INVALC,0x4341,INVALC,0x4322, INVALC,0x4323, /* Range 0x641F - 0x6428, array index: 0x0BCE */ 0x4329,0x4325,0x4340,0x432E,0x432F,0x4326,0x433A,0x4331, 0x433B,0x4333, /* Range 0x642E - 0x6430, array index: 0x0BD8 */ 0x433F,0x4336,0x4332, /* Range 0x643F - 0x6443, array index: 0x0BDB */ 0x4A55,0x4339,0x4334,INVALC,0x4328, /* Range 0x6459 - 0x6461, array index: 0x0BE0 */ 0x4A58,INVALC,0x4A42,0x4A4F,0x4A43,0x4A4E,INVALC,0x4A52, 0x3C27, /* Range 0x6470 - 0x6477, array index: 0x0BE9 */ 0x5055,INVALC,0x4A46,0x4A47,0x4A44,0x4A49,0x4A45,0x4A5A, /* Range 0x6489 - 0x648C, array index: 0x0BF1 */ 0x5735,0x505D,0x505C,0x505E, /* Range 0x6496 - 0x6498, array index: 0x0BF5 */ 0x5056,0x5059,0x5063, /* Range 0x649C - 0x64A0, array index: 0x0BF8 */ 0x505A,0x3B7D,INVALC,0x5060,0x5057, /* Range 0x650C - 0x6510, array index: 0x0BFD */ 0x6551,0x654F,0x6552,INVALC,0x654E, /* Range 0x6513 - 0x6517, array index: 0x0C02 */ 0x687A,INVALC,0x6879,0x6878,0x6877, /* Range 0x6520 - 0x6526, array index: 0x0C07 */ 0x6D4F,0x6D4E,0x6D51,INVALC,INVALC,0x6F2C,0x6D50, /* Range 0x6564 - 0x656A, array index: 0x0C0E */ 0x3C3A,0x3C3D,INVALC,0x3C38,0x3C3C,INVALC,0x3C39, /* Range 0x6579 - 0x6581, array index: 0x0C15 */ 0x5066,0x5065,0x5067,0x573C,INVALC,INVALC,0x573B,0x5C7A, 0x5C79, /* Range 0x65C2 - 0x65C6, array index: 0x0C1E */ 0x2F54,0x2F52,0x2F53,INVALC,0x2F51, /* Range 0x65DA - 0x65E1, array index: 0x0C23 */ 0x5C7C,0x6165,INVALC,0x6555,0x6554,0x687B,INVALC,0x213E, /* Range 0x65EE - 0x65F5, array index: 0x0C2B */ 0x224F,0x224E,0x2439,INVALC,0x243C,0x243B,0x243A,0x243D, /* Range 0x65FB - 0x65FD, array index: 0x0C33 */ 0x272A,0x2726,0x272F, /* Range 0x6603 - 0x6612, array index: 0x0C36 */ 0x272B,0x2727,0x272E,INVALC,INVALC,0x2729,0x2725,INVALC, 0x272C,INVALC,0x272D,INVALC,INVALC,0x2731,0x2730,0x2728, /* Range 0x6632 - 0x663A, array index: 0x0C46 */ 0x2A6E,0x2A73,0x2A77,0x2A6F,0x2A6C,INVALC,INVALC,0x2A78, 0x2A75, /* Range 0x6678 - 0x667C, array index: 0x0C4F */ 0x434D,0x3C49,INVALC,0x3C46,0x3C44, /* Range 0x668A - 0x668C, array index: 0x0C54 */ 0x434A,0x4349,0x4346, /* Range 0x669F - 0x66A1, array index: 0x0C57 */ 0x4A5F,0x4A5E,0x4A5D, /* Range 0x66BA - 0x66C0, array index: 0x0C5A */ 0x5746,0x5745,INVALC,0x5744,0x573F,INVALC,0x5740, /* Range 0x66C8 - 0x66CC, array index: 0x0C61 */ 0x573E,INVALC,0x5741,0x5742,0x5747, /* Range 0x670F - 0x6713, array index: 0x0C66 */ 0x2A7A,0x2A7B,INVALC,0x2F59,0x2F5A, /* Range 0x6720 - 0x6723, array index: 0x0C6B */ 0x434E,0x4641,0x4A62,0x5748, /* Range 0x6738 - 0x673F, array index: 0x0C6F */ 0x2252,0x2251,0x2254,0x2253,0x2256,INVALC,0x2250,0x2255, /* Range 0x6747 - 0x674D, array index: 0x0C77 */ 0x243F,0x2443,INVALC,INVALC,0x2447,0x2442,0x2445, /* Range 0x6776 - 0x677D, array index: 0x0C7E */ 0x2738,INVALC,0x2747,0x2748,0x2740,0x2739,INVALC,0x2745, /* Range 0x6781 - 0x6786, array index: 0x0C86 */ 0x2746,INVALC,0x2744,0x273C,0x2734,0x273B, /* Range 0x678C - 0x6794, array index: 0x0C8C */ 0x273F,0x273E,0x2736,INVALC,INVALC,0x2742,0x2737,INVALC, 0x2749, /* Range 0x67B7 - 0x67BB, array index: 0x0C95 */ 0x2B27,INVALC,0x2B34,0x2B21,0x2B23, /* Range 0x67C0 - 0x67CE, array index: 0x0C9A */ 0x2B26,0x2A7C,0x2B33,0x2B43,INVALC,0x2B28,0x2B3A,INVALC, 0x2A7E,0x2B41,0x2B42,0x2B45,0x2B3C,0x2B2D,0x2B35, /* Range 0x67E3 - 0x67FC, array index: 0x0CA9 */ 0x2B32,0x2B2A,INVALC,0x2B3E,0x2B36,INVALC,INVALC,0x2B44, 0x2B29,INVALC,0x2B3B,0x2B31,INVALC,0x2B37,INVALC,0x2A7D, INVALC,INVALC,INVALC,0x2B30,0x2B2F,0x2B24,INVALC,0x2B40, INVALC,0x2B39, /* Range 0x681C - 0x6820, array index: 0x0CC3 */ 0x2F65,0x2F6D,INVALC,0x2F5B,0x2F76, /* Range 0x682B - 0x6835, array index: 0x0CC8 */ 0x2F67,INVALC,0x2F68,0x2F72,0x2F69,INVALC,0x2F64,0x2F5E, 0x2F5F,0x2F6C,0x2F66, /* Range 0x684B - 0x684F, array index: 0x0CD3 */ 0x2F61,INVALC,0x2F73,0x2F6A,0x2F62, /* Range 0x686B - 0x6880, array index: 0x0CD8 */ 0x3628,INVALC,0x3576,0x3577,0x357B,INVALC,0x362C,0x3629, INVALC,0x3622,0x3621,INVALC,0x3625,0x3634,0x3572,INVALC, 0x3635,0x3627,0x3639,0x362D,INVALC,0x362B, /* Range 0x6887 - 0x6892, array index: 0x0CEE */ 0x3573,INVALC,0x3632,0x3638,0x3630,0x3637,INVALC,INVALC, 0x3624,0x3574,0x3636,0x3626, /* Range 0x68A9 - 0x68AE, array index: 0x0CFA */ 0x357E,0x362A,0x3579,0x357D,INVALC,0x3578, /* Range 0x68C6 - 0x68C8, array index: 0x0D00 */ 0x3C66,0x3C7C,0x3C71, /* Range 0x68D0 - 0x68D6, array index: 0x0D03 */ 0x3C69,0x3C76,INVALC,0x3C4E,0x3C78,INVALC,0x3C56, /* Range 0x68DC - 0x68DE, array index: 0x0D0A */ 0x3C50,0x3C72,0x3C73, /* Range 0x68E6 - 0x68F8, array index: 0x0D0D */ 0x3C74,INVALC,0x3C6C,0x3C79,0x3C53,0x3C58,0x3C52,INVALC, INVALC,0x3C65,0x4364,0x3C54,INVALC,0x3C5D,0x3C75,INVALC, 0x3C5A,0x3C57,0x3C68, /* Range 0x6904 - 0x6917, array index: 0x0D20 */ 0x3C4F,INVALC,0x3C77,0x3C5F,0x3C61,INVALC,0x3C6E,0x3C6D, 0x3C4D,INVALC,INVALC,0x3C55,0x3C5C,0x3C64,INVALC,0x3C5B, 0x3C67,0x3C7A,INVALC,0x3C6F, /* Range 0x6932 - 0x6959, array index: 0x0D34 */ 0x4376,0x4361,0x4366,0x435F,INVALC,0x4372,0x4351,0x4358, INVALC,0x4370,0x437A,0x4362,INVALC,0x4355,0x4368,0x436D, 0x4359,INVALC,0x436A,0x4356,INVALC,INVALC,0x435D,0x435E, INVALC,0x4371,0x436F,INVALC,0x4352,0x4374,INVALC,0x4375, 0x4377,INVALC,INVALC,INVALC,0x357A,0x435A,0x436C,0x435B, /* Range 0x696F - 0x6971, array index: 0x0D5C */ 0x4369,0x3C62,0x4354, /* Range 0x698D - 0x699A, array index: 0x0D5F */ 0x4A70,0x4A6E,INVALC,0x4B26,0x4A6C,INVALC,0x4A7E,INVALC, INVALC,0x4A68,0x4B25,INVALC,0x4A6D,0x4A7B, /* Range 0x69AF - 0x69B6, array index: 0x0D6D */ 0x4A73,0x4A69,0x4A63,INVALC,0x4A7D,INVALC,0x4B28,0x4A64, /* Range 0x69BC - 0x69BF, array index: 0x0D75 */ 0x4A6B,0x4A76,0x4A72,0x4A74, /* Range 0x69E2 - 0x69E7, array index: 0x0D79 */ 0x507C,INVALC,0x5078,0x5074,0x512A,0x5127, /* Range 0x69F4 - 0x6A00, array index: 0x0D7F */ 0x5137,INVALC,0x5134,0x5126,0x5075,INVALC,INVALC,0x512B, 0x512D,INVALC,0x5121,0x507A,0x5071, /* Range 0x6A04 - 0x6A09, array index: 0x0D8C */ 0x5130,INVALC,0x5072,0x5136,0x5129,0x512F, /* Range 0x6A14 - 0x6A18, array index: 0x0D92 */ 0x5125,0x5076,0x5138,0x5073,0x5131, /* Range 0x6A25 - 0x6A28, array index: 0x0D97 */ 0x5132,0x5135,0x5122,0x5755, /* Range 0x6A3B - 0x6A41, array index: 0x0D9B */ 0x5757,0x5762,INVALC,0x574F,0x5758,0x5128,0x5759, /* Range 0x6A4D - 0x6A56, array index: 0x0DA2 */ 0x5766,0x5767,0x575D,0x575C,0x5754,INVALC,INVALC,0x575E, 0x5765,0x5764, /* Range 0x6A5A - 0x6A60, array index: 0x0DAC */ 0x5756,0x5753,INVALC,0x5750,0x5763,INVALC,0x5761, /* Range 0x6A64 - 0x6A6A, array index: 0x0DB3 */ 0x575B,INVALC,0x574A,0x574C,0x574E,0x5760,0x575A, /* Range 0x6A8C - 0x6A96, array index: 0x0DBA */ 0x5D35,0x5C7E,0x5D2B,INVALC,INVALC,0x5D30,0x5D36,0x5D2A, INVALC,0x5D2C,0x5D21, /* Range 0x6AA4 - 0x6AA8, array index: 0x0DC5 */ 0x5D2F,0x5D23,0x5D32,INVALC,0x5D2E, /* Range 0x6AB6 - 0x6ABA, array index: 0x0DCA */ 0x616F,0x6170,INVALC,0x616A,0x616E, /* Range 0x6AC5 - 0x6AD1, array index: 0x0DCF */ 0x6169,0x616D,0x6171,INVALC,INVALC,INVALC,0x655C,0x6559, 0x6562,INVALC,0x6561,0x655F,0x655A, /* Range 0x6ADC - 0x6AE1, array index: 0x0DDC */ 0x655E,INVALC,0x6563,0x655D,0x6558,0x616C, /* Range 0x6AE7 - 0x6AF3, array index: 0x0DE2 */ 0x6557,0x6924,INVALC,0x6923,0x6560,INVALC,INVALC,0x6927, 0x6928,0x6922,0x6926,INVALC,0x6921, /* Range 0x6B0F - 0x6B1A, array index: 0x0DEF */ 0x6F31,INVALC,0x6F2F,0x6F30,0x703A,INVALC,INVALC,INVALC, 0x7123,0x7121,0x7122,0x7124, /* Range 0x6B33 - 0x6B3C, array index: 0x0DFB */ 0x363B,0x2F7B,INVALC,0x363A,0x363C,0x363D,0x3C7D,INVALC, 0x3C7E,0x3D22, /* Range 0x6B3F - 0x6B4D, array index: 0x0E05 */ 0x3D21,INVALC,0x4422,0x437E,0x437D,INVALC,0x437C,0x437B, INVALC,0x4421,INVALC,0x4B2B,0x4B2D,INVALC,0x4B2C, /* Range 0x6B54 - 0x6B56, array index: 0x0E14 */ 0x576A,0x5769,0x576B, /* Range 0x6B8C - 0x6BAD, array index: 0x0E17 */ 0x3642,0x3640,0x3641,0x363F,INVALC,0x363E,INVALC,INVALC, 0x3D23,0x3D26,INVALC,0x3D24,INVALC,0x3D25,INVALC,0x4423, INVALC,INVALC,0x4B2E,0x4B2F,0x4B30,INVALC,0x513C,0x513B, INVALC,0x513A,0x513D,0x576C,INVALC,INVALC,0x576D,0x576E, INVALC,0x5D38, /* Range 0x6BC3 - 0x6BCC, array index: 0x0E39 */ 0x4B31,0x4B32,INVALC,INVALC,0x5770,0x576F,0x6175,0x6F32, INVALC,0x2140, /* Range 0x6BE0 - 0x6BE8, array index: 0x0E43 */ 0x2B4C,INVALC,0x3025,0x3024,0x3022,INVALC,0x3021,0x3026, 0x3023, /* Range 0x6BF7 - 0x6C06, array index: 0x0E4C */ 0x4427,0x4428,0x4426,INVALC,0x4424,0x4425,INVALC,0x4B33, 0x5140,0x513F,0x513E,0x5141,0x5772,0x5771,INVALC,0x5773, /* Range 0x6C09 - 0x6C0D, array index: 0x0E5C */ 0x5D39,INVALC,0x6176,0x6566,0x6D55, /* Range 0x6C14 - 0x6C1A, array index: 0x0E61 */ 0x2141,0x215F,INVALC,INVALC,0x2258,0x2449,0x244A, /* Range 0x6C4A - 0x6C4C, array index: 0x0E68 */ 0x225D,0x225F,0x2260, /* Range 0x6C65 - 0x6C73, array index: 0x0E6B */ 0x245B,0x2459,0x244C,INVALC,0x2453,INVALC,0x244D,INVALC, 0x2455,INVALC,0x2452,INVALC,0x2451,INVALC,0x245A, /* Range 0x6CCD - 0x6CD4, array index: 0x0E7A */ 0x2769,INVALC,0x276D,0x2759,0x276F,0x2760,INVALC,0x2755, /* Range 0x6CE9 - 0x6CEE, array index: 0x0E82 */ 0x276E,INVALC,0x2751,0x2750,0x275E,0x2752, /* Range 0x6D00 - 0x6D0A, array index: 0x0E88 */ 0x2B5E,0x2B61,INVALC,0x2B64,0x2B59,INVALC,INVALC,0x2B67, 0x2B6A,0x2B6C,0x2B56, /* Range 0x6D0D - 0x6D12, array index: 0x0E93 */ 0x302C,INVALC,0x2B65,0x2B6D,0x2B5D,0x2B55, /* Range 0x6D16 - 0x6D1A, array index: 0x0E99 */ 0x3047,INVALC,0x2B62,0x2B5A,0x2B5C, /* Range 0x6D2C - 0x6D34, array index: 0x0E9E */ 0x2B69,0x2B51,INVALC,0x3041,0x2768,INVALC,INVALC,0x2B58, 0x2B50, /* Range 0x6D5E - 0x6D68, array index: 0x0EA7 */ 0x3038,0x303E,0x303A,0x302D,0x3030,0x3029,0x302A,INVALC, INVALC,0x3039,0x3042, /* Range 0x6D7A - 0x6D86, array index: 0x0EB2 */ 0x3028,0x3049,0x303D,0x304A,0x3044,0x3036,0x3045,INVALC, 0x303F,0x3048,0x3046,INVALC,0x3037, /* Range 0x6D90 - 0x6D92, array index: 0x0EBF */ 0x304C,0x3033,0x302E, /* Range 0x6DBA - 0x6DC2, array index: 0x0EC2 */ 0x365E,0x366A,INVALC,0x365B,0x3654,INVALC,0x3644,INVALC, 0x3660, /* Range 0x6DC8 - 0x6DCA, array index: 0x0ECB */ 0x3650,0x3662,0x365A, /* Range 0x6DCF - 0x6DE5, array index: 0x0ECE */ 0x3661,0x3663,INVALC,INVALC,0x3665,0x364E,0x365F,0x3653, 0x3667,INVALC,INVALC,INVALC,0x3658,0x3656,0x3657,INVALC, 0x3652,0x3651,INVALC,0x364B,0x3669,INVALC,0x3655, /* Range 0x6E39 - 0x6E4B, array index: 0x0EE5 */ 0x3D4C,INVALC,0x3D40,0x3D32,0x3D33,INVALC,0x3D37,0x3D3E, 0x3D38,INVALC,INVALC,INVALC,0x3D34,0x3D2D,0x3D2E,INVALC, 0x3D30,INVALC,0x3D3D, /* Range 0x6E51 - 0x6E55, array index: 0x0EF8 */ 0x3D3F,0x3D57,0x3D4F,INVALC,0x3D55, /* Range 0x6E5A - 0x6E68, array index: 0x0EFD */ 0x3D5B,INVALC,0x3D45,0x3D39,0x3D43,INVALC,0x3D49,0x3D46, 0x3D35,INVALC,0x3D53,0x3D50,0x3D58,INVALC,0x3D44, /* Range 0x6E73 - 0x6E79, array index: 0x0F0C */ 0x3D3A,0x3648,INVALC,INVALC,0x3D54,0x3D52,0x3D56, /* Range 0x6E8D - 0x6E94, array index: 0x0F13 */ 0x4447,0x4446,0x442C,INVALC,INVALC,0x4445,0x442F,0x4430, /* Range 0x6E9E - 0x6EA6, array index: 0x0F1B */ 0x4438,0x442E,0x4431,0x4449,INVALC,0x4450,0x4448,INVALC, 0x443D, /* Range 0x6EAE - 0x6EB3, array index: 0x0F24 */ 0x444F,INVALC,0x443B,0x4432,0x443F,0x444B, /* Range 0x6EBD - 0x6EC3, array index: 0x0F2A */ 0x4436,0x4440,0x444A,0x442D,0x4437,INVALC,0x4441, /* Range 0x6EC6 - 0x6ED2, array index: 0x0F31 */ 0x4434,INVALC,0x442B,0x4439,0x444D,INVALC,INVALC,0x443C, 0x4B34,0x443E,0x444C,INVALC,0x4435, /* Range 0x6EF5 - 0x6EFD, array index: 0x0F3E */ 0x4B35,0x4B56,INVALC,0x4B39,0x4B49,INVALC,0x4B3B,0x4B59, 0x4B55, /* Range 0x6F05 - 0x6F0E, array index: 0x0F47 */ 0x4B54,INVALC,0x4B51,0x4B5E,0x4B3D,0x4B46,INVALC,INVALC, 0x4B5C,0x4B52, /* Range 0x6F18 - 0x6F27, array index: 0x0F51 */ 0x4B42,0x4B3F,0x4B40,INVALC,0x4B58,INVALC,0x4B5D,0x4B5B, INVALC,0x4B5F,INVALC,INVALC,INVALC,0x4B38,0x5143,0x4B41, /* Range 0x6F35 - 0x6F3C, array index: 0x0F61 */ 0x4B4F,0x4B47,0x4B3A,INVALC,0x4B57,0x4B5A,0x4B43,0x4B4E, /* Range 0x6F4E - 0x6F57, array index: 0x0F69 */ 0x4B3E,0x514C,0x5156,INVALC,0x5155,0x5161,INVALC,0x5153, INVALC,0x5157, /* Range 0x6F5D - 0x6F63, array index: 0x0F73 */ 0x515A,0x577B,INVALC,INVALC,0x515C,0x514B,0x5166, /* Range 0x6F67 - 0x6F6C, array index: 0x0F7A */ 0x515F,INVALC,0x5163,0x5168,0x515D,0x5151, /* Range 0x6F7B - 0x6F7F, array index: 0x0F80 */ 0x5169,INVALC,0x515E,0x5144,0x5164, /* Range 0x6F89 - 0x6F8D, array index: 0x0F85 */ 0x5149,INVALC,0x5162,0x514A,0x5148, /* Range 0x6F90 - 0x6F96, array index: 0x0F8A */ 0x5160,INVALC,0x5147,0x5159,0x5158,0x5165,0x514F, /* Range 0x6FA8 - 0x6FB2, array index: 0x0F91 */ 0x5822,0x5D3B,0x5828,0x582E,0x5827,0x5774,0x5825,0x5830, 0x5832,INVALC,0x5831, /* Range 0x6FC4 - 0x6FCF, array index: 0x0F9C */ 0x577C,INVALC,0x5146,0x5777,0x577A,0x582D,0x5821,0x5775, 0x5D3A,0x582F,0x5779,0x5829, /* Range 0x6FDC - 0x6FDE, array index: 0x0FA8 */ 0x5D3F,0x5D45,0x5D43, /* Range 0x6FE2 - 0x6FE8, array index: 0x0FAB */ 0x5D46,0x5D3E,INVALC,INVALC,0x5D42,0x5D41,0x5D47, /* Range 0x6FFB - 0x7007, array index: 0x0FB2 */ 0x6222,0x6224,INVALC,INVALC,0x617E,0x6221,0x617A,INVALC, INVALC,0x5823,0x617B,INVALC,0x6177, /* Range 0x700A - 0x700E, array index: 0x0FBF */ 0x6226,INVALC,0x6178,0x6179,0x617D, /* Range 0x7020 - 0x702B, array index: 0x0FC4 */ 0x6569,0x656C,0x656D,0x656E,0x6571,INVALC,0x6223,0x6568, INVALC,0x656F,0x6934,0x656B, /* Range 0x7031 - 0x704A, array index: 0x0FD0 */ 0x692E,INVALC,0x6937,0x692D,0x692A,INVALC,0x692C,0x6930, 0x6933,0x6932,0x6936,0x6929,INVALC,INVALC,0x6931,0x6935, 0x6938,0x692F,0x6B61,0x6B62,0x6B66,0x6B67,INVALC,0x6B64, 0x6B65,0x6B63, /* Range 0x7055 - 0x706A, array index: 0x0FEA */ 0x6D56,0x6D57,0x6D58,INVALC,INVALC,0x6F34,0x6F33,INVALC, 0x703D,INVALC,0x703B,0x703E,0x703C,0x7125,INVALC,INVALC, 0x7171,0x715B,INVALC,0x7170,0x723E,0x723F, /* Range 0x7082 - 0x7086, array index: 0x1000 */ 0x2778,0x277A,0x2775,0x2772,0x2774, /* Range 0x70C5 - 0x70C7, array index: 0x1005 */ 0x305A,0x305B,0x305C, /* Range 0x70CD - 0x70D4, array index: 0x1008 */ 0x3059,0x305E,INVALC,INVALC,0x304F,0x3055,0x304E,0x3058, /* Range 0x70DA - 0x70E2, array index: 0x1010 */ 0x305D,INVALC,0x304D,0x3050,0x3056,INVALC,0x3057,0x305F, 0x3053, /* Range 0x70F3 - 0x7106, array index: 0x1019 */ 0x3673,0x366F,INVALC,0x367B,0x366D,0x367A,INVALC,0x366B, 0x3D5F,0x3675,INVALC,INVALC,0x3676,0x3679,INVALC,0x367D, INVALC,0x3672,INVALC,0x3677, /* Range 0x710B - 0x7110, array index: 0x102D */ 0x367C,0x3670,0x366C,0x367E,INVALC,0x3674, /* Range 0x711E - 0x7125, array index: 0x1033 */ 0x3D5D,0x3D66,0x3D5C,INVALC,0x3D64,0x3D62,INVALC,0x3D63, /* Range 0x712E - 0x7132, array index: 0x103B */ 0x3D60,0x3D5E,INVALC,0x3D61,0x3D65, /* Range 0x7141 - 0x7144, array index: 0x1040 */ 0x4456,0x445D,0x445F,0x4465, /* Range 0x7150 - 0x7154, array index: 0x1044 */ 0x4463,INVALC,0x4453,0x4464,0x4452, /* Range 0x715D - 0x7163, array index: 0x1049 */ 0x4457,INVALC,0x4462,0x4455,0x445C,0x4458,0x4454, /* Range 0x7180 - 0x7189, array index: 0x1050 */ 0x4B63,0x4B69,0x4B65,INVALC,INVALC,0x4B64,0x4B68,0x4B60, INVALC,0x4B62, /* Range 0x719A - 0x71AA, array index: 0x105A */ 0x516F,0x516C,0x5178,0x5172,0x5174,INVALC,0x516E,0x5176, INVALC,INVALC,0x5175,0x5173,INVALC,0x5179,INVALC,0x5170, 0x5177, /* Range 0x71AF - 0x71B5, array index: 0x106B */ 0x516B,0x516D,INVALC,0x516A,0x517A,INVALC,0x5171, /* Range 0x71BC - 0x71CB, array index: 0x1072 */ 0x5841,0x583F,INVALC,0x5835,0x5838,0x5839,0x5834,INVALC, INVALC,0x5833,0x5842,0x583D,INVALC,INVALC,0x583C,0x583A, /* Range 0x71F0 - 0x71F2, array index: 0x1082 */ 0x5D4D,0x5D49,0x5D4B, /* Range 0x71FF - 0x7207, array index: 0x1085 */ 0x6228,INVALC,0x6227,0x6576,0x622A,INVALC,0x6577,INVALC, 0x6575, /* Range 0x7219 - 0x7229, array index: 0x108E */ 0x6B6A,0x6B69,INVALC,INVALC,0x6B68,0x6D5A,0x6D5B,INVALC, INVALC,0x6F35,0x703F,INVALC,INVALC,0x7126,0x722C,INVALC, 0x7240, /* Range 0x7249 - 0x724B, array index: 0x109F */ 0x2B78,0x2B79,0x3D6A, /* Range 0x7276 - 0x727F, array index: 0x10A2 */ 0x3063,0x3062,0x3061,INVALC,INVALC,0x3722,0x3723,INVALC, 0x3721,0x3724, /* Range 0x7285 - 0x729E, array index: 0x10AC */ 0x3D6F,0x3D6E,INVALC,0x3D6C,0x3D6D,INVALC,0x3D70,0x446A, 0x4469,0x446D,INVALC,0x446C,0x446B,INVALC,0x4B6F,INVALC, 0x4B6E,INVALC,0x4B6D,0x517B,INVALC,0x517C,INVALC,INVALC, 0x5845,0x5846, /* Range 0x72A1 - 0x72AA, array index: 0x10C6 */ 0x657C,INVALC,0x657B,0x657A,0x6578,0x6579,INVALC,0x693B, 0x6D5C,0x7127, /* Range 0x72C5 - 0x72CC, array index: 0x10D0 */ 0x2467,0x2464,INVALC,INVALC,0x2821,0x2B7E,0x277D,0x2826, /* Range 0x72FA - 0x7301, array index: 0x10D8 */ 0x3065,0x306A,INVALC,INVALC,0x3067,0x372C,0x3064,0x306B, /* Range 0x7307 - 0x730C, array index: 0x10E0 */ 0x3727,0x372B,INVALC,0x372A,0x3D72,0x3D7D, /* Range 0x7330 - 0x7335, array index: 0x10E6 */ 0x3D73,0x3D75,0x3D78,0x3D76,INVALC,0x3D7C, /* Range 0x733A - 0x733C, array index: 0x10EC */ 0x4471,0x4470,0x446E, /* Range 0x7349 - 0x734D, array index: 0x10EF */ 0x4474,0x4473,INVALC,0x4B73,0x4B71, /* Range 0x7358 - 0x736F, array index: 0x10F4 */ 0x517D,0x5228,0x5227,0x5225,INVALC,0x5224,0x5221,0x5222, 0x5223,0x5226,0x5229,INVALC,INVALC,0x584B,0x5848,0x5849, INVALC,0x5847,0x584D,0x584C,0x584A,INVALC,0x5D50,0x5D51, /* Range 0x737C - 0x7385, array index: 0x110C */ 0x693D,0x693C,0x6B6B,0x6D5D,INVALC,0x6F37,0x6F36,0x6F38, INVALC,0x2C28, /* Range 0x7392 - 0x7397, array index: 0x1116 */ 0x246C,0x246A,0x246B,0x2468,INVALC,0x2469, /* Range 0x73A0 - 0x73A6, array index: 0x111C */ 0x282D,0x2829,0x282C,INVALC,0x2828,INVALC,0x282B, /* Range 0x73B4 - 0x73B9, array index: 0x1123 */ 0x2C30,0x2C2F,0x2C2E,INVALC,0x2C37,0x2C2D, /* Range 0x73C2 - 0x73CC, array index: 0x1129 */ 0x2C2A,0x2C35,INVALC,0x2C2C,0x2C36,0x2C33,0x2C2B,INVALC, INVALC,0x2C38,0x2C29, /* Range 0x73D2 - 0x73DD, array index: 0x1134 */ 0x3075,0x306C,0x3077,INVALC,0x306F,0x307A,0x307B,0x306D, 0x3079,0x3076,0x3074,0x3078, /* Range 0x73E5 - 0x73EB, array index: 0x1140 */ 0x306E,INVALC,0x3071,0x307C,0x3073,INVALC,0x2C31, /* Range 0x73F4 - 0x7401, array index: 0x1147 */ 0x373D,0x3732,0x3730,INVALC,0x3731,INVALC,0x3738,INVALC, 0x3739,0x3735,INVALC,0x373A,0x3737,0x3734, /* Range 0x7420 - 0x7424, array index: 0x1155 */ 0x3E2D,0x3E26,INVALC,0x3E2A,0x3E29, /* Range 0x7429 - 0x7432, array index: 0x115A */ 0x3E2C,INVALC,0x3E23,0x3E21,0x3E27,0x3D7E,INVALC,0x3E22, 0x3E28,0x3E2E, /* Range 0x744A - 0x7454, array index: 0x1164 */ 0x4476,0x4477,INVALC,0x4523,0x447E,0x447C,0x447D,0x4479, 0x4478,INVALC,0x4524, /* Range 0x7471 - 0x7475, array index: 0x116F */ 0x4B76,0x4B78,0x4B75,INVALC,0x4B77, /* Range 0x7485 - 0x748A, array index: 0x1174 */ 0x5230,0x522D,0x522A,0x5231,0x522B,0x522C, /* Range 0x74B1 - 0x74BB, array index: 0x117A */ 0x5D58,0x5D53,INVALC,INVALC,0x622F,0x6232,0x6621,0x622D, INVALC,0x693E,0x6233, /* Range 0x74BE - 0x74C5, array index: 0x1185 */ 0x6231,INVALC,0x622E,0x6230,0x6234,0x6622,INVALC,0x657E, /* Range 0x74D5 - 0x74E1, array index: 0x118D */ 0x6D5F,INVALC,0x6D61,0x6D5E,0x6D60,INVALC,0x7040,INVALC, 0x2830,0x307D,0x307E,INVALC,0x4525, /* Range 0x74FB - 0x7503, array index: 0x119A */ 0x3E2F,INVALC,0x4528,0x4527,0x4526,0x4B7B,INVALC,0x4B7C, 0x4B7D, /* Range 0x750F - 0x7517, array index: 0x11A3 */ 0x5D5E,0x5D5B,0x5D5C,0x5D5D,0x6236,0x6235,INVALC,0x6623, 0x6B6C, /* Range 0x753E - 0x7540, array index: 0x11AC */ 0x2834,0x2832,0x2833, /* Range 0x75BF - 0x75C1, array index: 0x11AF */ 0x312B,0x312A,0x3127, /* Range 0x75CB - 0x75D2, array index: 0x11B2 */ 0x3744,0x3745,INVALC,0x3741,0x3743,0x3747,0x3746,0x3742, /* Range 0x75F5 - 0x75FE, array index: 0x11BA */ 0x4539,0x4537,0x4530,0x4534,0x4533,INVALC,0x4536,0x4532, 0x453A,0x4531, /* Range 0x760F - 0x761E, array index: 0x11C4 */ 0x452E,0x4535,0x4C26,INVALC,INVALC,0x4C28,0x4C25,0x4C22, INVALC,INVALC,0x5239,0x523D,0x523F,0x523B,0x523A,0x5238, /* Range 0x762D - 0x7635, array index: 0x11D4 */ 0x5858,INVALC,0x5857,0x585F,0x5859,0x585E,0x585B,INVALC, 0x585D, /* Range 0x7647 - 0x7649, array index: 0x11DD */ 0x5D63,0x5D61,0x5D62, /* Range 0x7699 - 0x769E, array index: 0x11E0 */ 0x453B,INVALC,0x5243,0x5240,0x5241,0x5242, /* Range 0x7703 - 0x7705, array index: 0x11E6 */ 0x2C43,0x2C44,0x2C45, /* Range 0x7710 - 0x771D, array index: 0x11E9 */ 0x3132,0x3136,0x3134,0x3133,INVALC,0x3137,INVALC,INVALC, INVALC,0x3138,0x3139,0x3131,INVALC,0x3130, /* Range 0x772F - 0x7735, array index: 0x11F7 */ 0x374C,INVALC,0x374E,0x374F,0x3751,0x3750,0x3755, /* Range 0x7744 - 0x774E, array index: 0x11FE */ 0x3E40,0x3E42,0x3E3E,0x3E3F,INVALC,INVALC,0x3E43,0x3E45, 0x3E46,0x3E41,0x3E44, /* Range 0x7752 - 0x775A, array index: 0x1209 */ 0x4541,INVALC,0x4546,0x453E,0x4542,INVALC,INVALC,0x4547, 0x4543, /* Range 0x776D - 0x776F, array index: 0x1212 */ 0x4548,0x4C2E,0x4C30, /* Range 0x777E - 0x7789, array index: 0x1215 */ 0x4C31,INVALC,0x4C2F,0x4C2A,0x4C2D,0x4C32,INVALC,0x4C2C, INVALC,INVALC,0x5247,0x5246, /* Range 0x7797 - 0x77A3, array index: 0x1221 */ 0x586B,INVALC,0x586A,0x5862,0x5866,0x5865,0x5863,INVALC, INVALC,INVALC,0x5864,0x5867,0x5868, /* Range 0x77B1 - 0x77B7, array index: 0x122E */ 0x5D6C,0x5D68,INVALC,0x5D6B,0x5D66,0x5D6A,0x5D69, /* Range 0x77C9 - 0x77D0, array index: 0x1235 */ 0x6625,0x6626,INVALC,0x6943,0x6946,0x6944,0x6945,0x6B6E, /* Range 0x77F0 - 0x77F2, array index: 0x123D */ 0x5D6E,0x6628,0x6947, /* Range 0x77F7 - 0x77FC, array index: 0x1240 */ 0x2841,0x283C,0x283E,0x2840,0x283F,0x283D, /* Range 0x780E - 0x7813, array index: 0x1246 */ 0x2C52,0x2C51,0x2C50,0x2C4D,0x2C4E,0x2C55, /* Range 0x7821 - 0x7823, array index: 0x124C */ 0x3144,0x313E,0x313C, /* Range 0x7826 - 0x7835, array index: 0x124F */ 0x375C,INVALC,0x3141,0x3145,0x3147,0x3143,0x313D,INVALC, 0x3142,0x3140,INVALC,0x3148,INVALC,0x3146,INVALC,0x313F, /* Range 0x7848 - 0x784D, array index: 0x125F */ 0x3756,0x3758,0x375A,INVALC,0x375B,0x3759, /* Range 0x7864 - 0x7871, array index: 0x1265 */ 0x3E4A,0x3E4B,INVALC,INVALC,0x3E53,0x3E52,0x3E4F,INVALC, INVALC,0x3E4D,0x3E50,INVALC,0x3E51,0x3E4E, /* Range 0x7883 - 0x7887, array index: 0x1273 */ 0x4553,0x454E,0x4550,0x4551,0x454A, /* Range 0x7894 - 0x789A, array index: 0x1278 */ 0x454C,0x454F,0x4557,INVALC,INVALC,0x4555,0x454B, /* Range 0x789E - 0x78A5, array index: 0x127F */ 0x4C3A,INVALC,0x4C3C,0x4552,0x4C3E,INVALC,0x4C3F,0x4C3B, /* Range 0x78A8 - 0x78AD, array index: 0x1287 */ 0x4C37,INVALC,0x4C34,0x4C39,0x4C3D,0x4C36, /* Range 0x78C8 - 0x78D1, array index: 0x128D */ 0x524F,0x5252,INVALC,INVALC,0x524B,0x5248,0x524D,0x524A, INVALC,0x524C, /* Range 0x78DB - 0x78E5, array index: 0x1297 */ 0x5872,INVALC,0x586C,0x5870,0x5876,0x5877,0x5873,0x5874, 0x5871,INVALC,0x586E, /* Range 0x78F9 - 0x78FF, array index: 0x12A2 */ 0x5D77,INVALC,0x5D72,0x5D73,0x5D70,0x5D78,0x5D74, /* Range 0x7910 - 0x7914, array index: 0x12A9 */ 0x6247,0x6249,0x6248,0x6244,0x6245, /* Range 0x791B - 0x791E, array index: 0x12AE */ 0x662A,0x662C,0x6629,0x662E, /* Range 0x7921 - 0x7929, array index: 0x12B2 */ 0x662B,INVALC,0x6949,0x694C,0x6948,INVALC,0x694A,0x694B, 0x694D, /* Range 0x794A - 0x794C, array index: 0x12BB */ 0x2C56,0x2C58,0x2C57, /* Range 0x794F - 0x7954, array index: 0x12BE */ 0x314B,INVALC,0x314F,0x314E,0x314D,0x3149, /* Range 0x7967 - 0x796B, array index: 0x12C4 */ 0x3760,INVALC,0x3761,0x3762,0x3764, /* Range 0x7970 - 0x7974, array index: 0x12C9 */ 0x3E59,INVALC,0x3E58,0x3E57,0x3E56, /* Range 0x7990 - 0x79A4, array index: 0x12CE */ 0x4C4A,INVALC,0x4C49,0x4C46,0x4C45,0x4C44,0x4C43,0x4C47, 0x4C40,INVALC,0x5253,0x5258,0x5256,INVALC,INVALC,INVALC, 0x5255,0x5254,0x5257,INVALC,0x5878, /* Range 0x79AB - 0x79AD, array index: 0x12E3 */ 0x5D7A,0x624B,0x624A, /* Range 0x79B4 - 0x79B8, array index: 0x12E6 */ 0x6D65,INVALC,0x7045,0x7044,0x2167, /* Range 0x79CD - 0x79CF, array index: 0x12EB */ 0x2C5C,0x2C5F,0x2C5D, /* Range 0x79DC - 0x79E0, array index: 0x12EE */ 0x3156,0x3158,0x3157,INVALC,0x3152, /* Range 0x79EA - 0x79EE, array index: 0x12F3 */ 0x3155,0x3150,0x3151,0x3154,0x3153, /* Range 0x79F6 - 0x79FA, array index: 0x12F8 */ 0x3769,0x376A,0x3768,INVALC,0x3767, /* Range 0x7A02 - 0x7A04, array index: 0x12FD */ 0x3E5A,0x3E5C,0x3E5E, /* Range 0x7A10 - 0x7A1B, array index: 0x1300 */ 0x4566,0x455D,0x4560,0x4564,INVALC,0x4562,INVALC,0x4561, 0x455E,0x455F,INVALC,0x4565, /* Range 0x7A58 - 0x7A5C, array index: 0x130C */ 0x5E21,INVALC,0x5E23,0x5D7D,0x5D7C, /* Range 0x7A6C - 0x7A71, array index: 0x1311 */ 0x6950,0x6951,0x694F,INVALC,0x6D66,0x6D67, /* Range 0x7A85 - 0x7A90, array index: 0x1317 */ 0x315B,0x3159,0x315F,INVALC,0x315A,0x315E,0x315C,0x315D, INVALC,INVALC,0x376B,0x376D, /* Range 0x7AB1 - 0x7AB8, array index: 0x1323 */ 0x5921,0x525B,0x525D,0x525C,0x587E,0x587C,0x5922,0x587D, /* Range 0x7B04 - 0x7B13, array index: 0x132B */ 0x3162,0x3164,INVALC,INVALC,0x3166,0x3169,0x3167,INVALC, INVALC,INVALC,0x3168,0x3165,0x3161,INVALC,0x316A,0x3163, /* Range 0x7B22 - 0x7B25, array index: 0x133B */ 0x3773,0x3822,0x3774,0x3771, /* Range 0x7B2D - 0x7B35, array index: 0x133F */ 0x377B,INVALC,0x377C,0x3772,0x3779,0x377D,0x3775,0x3770, 0x376E, /* Range 0x7B44 - 0x7B4E, array index: 0x1348 */ 0x3E64,0x3E6A,INVALC,0x3E63,0x3E65,INVALC,0x3E62,INVALC, 0x3E66,INVALC,0x3E67, /* Range 0x7B61 - 0x7B66, array index: 0x1353 */ 0x4575,INVALC,0x4578,0x456C,0x4571,0x456B, /* Range 0x7B70 - 0x7B78, array index: 0x1359 */ 0x4574,0x4573,0x4570,0x4572,0x456E,INVALC,0x4577,INVALC, 0x4576, /* Range 0x7B8A - 0x7B91, array index: 0x1362 */ 0x4C57,INVALC,0x4C5C,0x4C5B,0x4C5E,INVALC,0x4C59,0x4C58, /* Range 0x7B98 - 0x7B9C, array index: 0x136A */ 0x4C60,0x4C62,INVALC,0x4C5D,0x4C56, /* Range 0x7BDA - 0x7BEB, array index: 0x136F */ 0x5929,INVALC,0x592F,0x5926,0x5923,0x5932,INVALC,INVALC, 0x592E,0x5924,INVALC,0x5928,INVALC,0x5925,0x592A,INVALC, 0x592D,0x5930, /* Range 0x7BF0 - 0x7BF4, array index: 0x1381 */ 0x5E38,0x5E39,0x5E29,0x5E30,0x5E2E, /* Range 0x7BFD - 0x7C10, array index: 0x1386 */ 0x5E36,INVALC,0x5E2B,0x5E2A,0x5E34,0x5E31,0x5E33,INVALC, 0x5E27,0x5E37,INVALC,INVALC,0x5E32,0x5E3B,0x5E2F,INVALC, INVALC,0x5E2D,0x5E28,0x5E3A, /* Range 0x7C1C - 0x7C2D, array index: 0x139A */ 0x624D,0x6253,INVALC,0x6251,0x6250,INVALC,0x6256,INVALC, INVALC,0x6257,0x6254,INVALC,0x6255,0x624E,INVALC,INVALC, 0x6635,0x6252, /* Range 0x7C45 - 0x7C4A, array index: 0x13AC */ 0x6957,INVALC,0x6956,0x6954,0x6953,0x6955, /* Range 0x7C57 - 0x7C5C, array index: 0x13B2 */ 0x6D68,INVALC,0x6D6A,0x6D6C,0x6D6B,0x6D69, /* Range 0x7C66 - 0x7C6B, array index: 0x13B8 */ 0x6F3C,0x6F3B,INVALC,0x712B,0x7046,0x712C, /* Range 0x7C78 - 0x7C7A, array index: 0x13BE */ 0x2C66,0x2C67,0x2C65, /* Range 0x7C7F - 0x7C85, array index: 0x13C1 */ 0x2C68,0x2C69,0x2C6A,INVALC,INVALC,0x316B,0x3171, /* Range 0x7CA1 - 0x7CA3, array index: 0x13C8 */ 0x3E6E,0x3E6B,0x3826, /* Range 0x7CBA - 0x7CBC, array index: 0x13CB */ 0x4C68,0x4C65,0x4C67, /* Range 0x7CD0 - 0x7CD4, array index: 0x13CE */ 0x5936,0x5937,0x5933,INVALC,0x5934, /* Range 0x7D0E - 0x7D13, array index: 0x13D3 */ 0x3175,0x317B,INVALC,0x3174,0x317A,0x3178, /* Range 0x7D1D - 0x7D1F, array index: 0x13D9 */ 0x3173,0x3172,0x3179, /* Range 0x7D3A - 0x7D41, array index: 0x13DC */ 0x382B,0x3834,INVALC,0x3828,0x3831,0x3832,INVALC,0x382F, /* Range 0x7D4E - 0x7D58, array index: 0x13E4 */ 0x3F21,0x3E76,INVALC,0x3E7D,0x3E7A,0x3E72,0x3E7B,INVALC, 0x3E73,INVALC,0x3E6F, /* Range 0x7D67 - 0x7D6F, array index: 0x13EF */ 0x3E74,INVALC,0x3E7C,0x3E75,0x3E79,INVALC,0x3E77,INVALC, 0x3E70, /* Range 0x7D7A - 0x7D8E, array index: 0x13F8 */ 0x4624,0x4626,0x4628,0x462C,INVALC,0x4622,0x457E,INVALC, INVALC,0x4627,0x462B,0x4623,0x457D,INVALC,0x457C,INVALC, INVALC,INVALC,0x4629,0x4621,0x4625, /* Range 0x7DA6 - 0x7DAA, array index: 0x140D */ 0x4C7C,0x4C69,INVALC,0x4C7E,0x4C6D, /* Range 0x7DC0 - 0x7DC6, array index: 0x1412 */ 0x4C6F,0x4C6E,0x4C6B,INVALC,0x4C73,0x4C70,0x4C74, /* Range 0x7E0B - 0x7E17, array index: 0x1419 */ 0x5944,0x593B,0x5947,0x593F,0x5945,INVALC,INVALC,0x5938, 0x593E,0x5948,0x5941,0x5946,0x593A, /* Range 0x7E1F - 0x7E25, array index: 0x1426 */ 0x593C,0x593D,0x5939,0x5943,INVALC,0x594A,0x5949, /* Range 0x7E38 - 0x7E3C, array index: 0x142D */ 0x5E42,INVALC,0x5E4D,0x5E4A,0x5E3E, /* Range 0x7E56 - 0x7E58, array index: 0x1432 */ 0x625B,0x6262,0x625D, /* Range 0x7E5F - 0x7E63, array index: 0x1435 */ 0x625F,0x6261,INVALC,0x625E,0x625C, /* Range 0x7E72 - 0x7E7B, array index: 0x143A */ 0x6640,INVALC,0x6641,0x663A,0x6639,0x663D,0x663B,INVALC, 0x663F,0x6959, /* Range 0x7E86 - 0x7E8D, array index: 0x1444 */ 0x6B79,0x6B76,0x6B77,INVALC,0x6B75,0x6B78,INVALC,0x6B7A, /* Range 0x7E95 - 0x7E9B, array index: 0x144C */ 0x6F3D,INVALC,0x7047,0x712F,0x7131,0x712E,0x7130, /* Range 0x7F5B - 0x7F6D, array index: 0x1453 */ 0x3224,0x317D,0x3223,0x3221,INVALC,0x3222,0x317E,INVALC, 0x3836,INVALC,0x3F24,0x3F25,0x4630,0x4631,INVALC,INVALC, 0x462F,0x4632,0x462E, /* Range 0x7F7A - 0x7F7F, array index: 0x1466 */ 0x594E,0x594C,0x594D,0x5E51,0x5E50,0x5E4F, /* Range 0x7F9B - 0x7FA7, array index: 0x146C */ 0x383A,0x3838,0x3839,INVALC,INVALC,0x3F27,0x3F28,0x3F26, INVALC,INVALC,0x4634,0x4633,0x4635, /* Range 0x7FC7 - 0x7FD1, array index: 0x1479 */ 0x3840,INVALC,0x3842,0x383B,0x383C,INVALC,0x383D,INVALC, 0x3841,0x383E,0x383F, /* Range 0x7FE2 - 0x7FEF, array index: 0x1484 */ 0x4D24,0x4D25,INVALC,0x4D26,0x5323,INVALC,0x5324,INVALC, 0x5321,0x527E,0x5322,0x527D,INVALC,0x5950, /* Range 0x7FF4 - 0x7FF8, array index: 0x1492 */ 0x5E52,0x6134,INVALC,0x6266,0x6267, /* Range 0x7FFD - 0x7FFF, array index: 0x1497 */ 0x6648,0x6649,0x695E, /* Range 0x804F - 0x8051, array index: 0x149A */ 0x3F2B,0x3F2C,0x3F2A, /* Range 0x80C5 - 0x80CA, array index: 0x149D */ 0x2C7E,INVALC,0x2C78,0x2C7B,0x2D26,0x2D24, /* Range 0x80CD - 0x80D9, array index: 0x14A3 */ 0x2D2A,INVALC,0x2D27,0x2C7D,0x2C7A,INVALC,INVALC,0x3F2E, 0x2D25,INVALC,0x2D28,0x2C77,0x2D22, /* Range 0x80F9 - 0x80FB, array index: 0x14B0 */ 0x322F,0x322D,0x3232, /* Range 0x811B - 0x8122, array index: 0x14B3 */ 0x384C,INVALC,0x3854,0x3850,0x384E,INVALC,0x3851,0x3855, /* Range 0x815E - 0x8164, array index: 0x14BB */ 0x4642,INVALC,0x463A,0x4647,0x463F,INVALC,0x4639, /* Range 0x8189 - 0x818D, array index: 0x14C2 */ 0x4D2B,INVALC,0x4D31,0x4D30,0x4D2F, /* Range 0x81AE - 0x81BC, array index: 0x14C7 */ 0x5956,INVALC,0x595A,0x5954,0x595D,INVALC,0x595C,0x5958, INVALC,0x595E,INVALC,0x5957,INVALC,0x5E55,0x5E5B, /* Range 0x81D0 - 0x81D2, array index: 0x14D6 */ 0x626B,0x6269,0x626A, /* Range 0x81DD - 0x81E1, array index: 0x14D9 */ 0x6B7E,0x6D72,INVALC,0x7132,0x7133, /* Range 0x81F7 - 0x81F9, array index: 0x14DE */ 0x3F39,0x3F3A,0x3F3B, /* Range 0x8232 - 0x8234, array index: 0x14E1 */ 0x385B,0x3858,0x385A, /* Range 0x823C - 0x8245, array index: 0x14E4 */ 0x3F3D,0x3F3E,INVALC,0x3F3F,0x464B,INVALC,0x464C,INVALC, 0x464A,0x464D, /* Range 0x824E - 0x8264, array index: 0x14EE */ 0x5333,0x532F,0x5332,0x5334,0x5331,0x5330,INVALC,0x5961, 0x5962,0x5963,INVALC,INVALC,0x5E5E,0x5E5D,0x5E5F,INVALC, 0x626D,0x626C,INVALC,0x664F,INVALC,0x6650,0x664E, /* Range 0x8268 - 0x826D, array index: 0x1505 */ 0x6962,0x6963,INVALC,0x6D73,0x6F3E,0x7049, /* Range 0x827C - 0x8285, array index: 0x150B */ 0x226B,0x226D,INVALC,0x226E,0x226C,INVALC,INVALC,0x2522, 0x2523,0x247B, /* Range 0x828E - 0x8294, array index: 0x1515 */ 0x247C,0x247A,0x2479,0x247D,INVALC,0x247E,0x2D2D, /* Range 0x829E - 0x82AB, array index: 0x151C */ 0x285C,INVALC,0x2852,0x2860,0x2866,INVALC,0x2863,INVALC, INVALC,0x2859,0x285F,0x2861,INVALC,0x2854, /* Range 0x82B4 - 0x82B6, array index: 0x152A */ 0x285E,0x2858,0x2865, /* Range 0x82E8 - 0x82ED, array index: 0x152D */ 0x2D32,INVALC,0x2D41,0x2D36,0x2D39,0x2D46, /* Range 0x82F0 - 0x82FB, array index: 0x1533 */ 0x2D40,INVALC,0x2D3B,0x2D45,0x2D38,0x2D3C,0x2D3F,INVALC, INVALC,0x2D30,0x2D44,0x2D3E, /* Range 0x8322 - 0x832F, array index: 0x153F */ 0x3242,INVALC,0x324B,0x323C,0x3240,0x3257,INVALC,0x324F, 0x3246,INVALC,0x3255,0x3238,INVALC,0x324E, /* Range 0x833A - 0x833C, array index: 0x154D */ 0x2D35,0x3F41,0x3248, /* Range 0x8341 - 0x834E, array index: 0x1550 */ 0x323F,0x3243,INVALC,0x3239,0x3251,INVALC,0x3250,0x3258, INVALC,INVALC,0x3256,0x3252,0x3249,0x3244, /* Range 0x8373 - 0x8376, array index: 0x155E */ 0x3862,0x3864,0x3869,0x387D, /* Range 0x837D - 0x8383, array index: 0x1562 */ 0x386C,0x3873,0x3879,INVALC,0x3866,INVALC,0x386D, /* Range 0x8387 - 0x8390, array index: 0x1569 */ 0x387B,0x3876,INVALC,INVALC,0x3872,0x386E,0x3860,INVALC, 0x3865,0x385D, /* Range 0x8397 - 0x839D, array index: 0x1573 */ 0x3877,INVALC,0x3868,0x3F6A,0x3870,INVALC,0x386F, /* Range 0x83A3 - 0x83B0, array index: 0x157A */ 0x385E,0x3863,0x3874,0x387A,INVALC,0x385F,0x386B,0x3871, INVALC,INVALC,INVALC,0x387C,0x3875,0x3878, /* Range 0x83BF - 0x83EE, array index: 0x1588 */ 0x3F51,0x3F45,INVALC,0x3F62,0x3F6B,0x3F6E,INVALC,0x3F4D, 0x3F66,0x3F4E,0x3F5C,INVALC,0x3F58,INVALC,INVALC,0x3F59, 0x3F42,INVALC,0x3F67,INVALC,INVALC,INVALC,0x3F64,0x3F5A, 0x3F70,0x3F55,0x466D,INVALC,0x3F73,INVALC,0x3F53,0x3F5F, INVALC,INVALC,0x3F57,0x3F71,0x3F50,0x3F49,0x3F54,INVALC, 0x3F48,0x3F46,INVALC,0x3F68,0x3F4F,0x3F6C,INVALC,0x3F6D, /* Range 0x83F5 - 0x8401, array index: 0x15B8 */ 0x3F5B,0x3F4B,INVALC,INVALC,0x3F43,0x3F65,0x3F6F,0x3F4A, INVALC,0x3F74,0x3F56,INVALC,0x3F52, /* Range 0x840F - 0x8413, array index: 0x15C5 */ 0x3F5E,0x3F4C,0x3F60,0x3F47,0x3F69, /* Range 0x842F - 0x843B, array index: 0x15CA */ 0x466F,0x465A,INVALC,0x466A,0x467E,0x4666,INVALC,0x467D, 0x4664,INVALC,0x4674,0x4665,0x467B, /* Range 0x843F - 0x8460, array index: 0x15D7 */ 0x464F,0x4657,INVALC,0x4670,0x4668,0x4723,0x466B,INVALC, 0x467C,INVALC,INVALC,INVALC,0x466E,0x4676,0x465B,0x4675, INVALC,0x4728,0x4656,0x4677,INVALC,0x4726,INVALC,0x4650, INVALC,INVALC,0x465E,0x465D,INVALC,INVALC,0x4661,0x4663, 0x4672,0x4725, /* Range 0x846E - 0x847E, array index: 0x15F9 */ 0x4727,0x4678,0x4673,INVALC,INVALC,0x4660,0x465F,INVALC, 0x4651,INVALC,0x4669,0x4652,0x4667,INVALC,INVALC,0x465C, 0x4722, /* Range 0x848D - 0x8491, array index: 0x160A */ 0x4654,0x467A,0x4653,INVALC,0x4D5A, /* Range 0x8497 - 0x84B1, array index: 0x160F */ 0x4D33,0x4D51,INVALC,0x4D42,0x4D4C,INVALC,0x4D45,INVALC, 0x4D36,0x4D54,0x4D35,0x4D48,INVALC,0x4D34,INVALC,INVALC, 0x4D46,0x4D4F,0x4D4D,0x4D41,0x4D3C,0x4D3A,INVALC,0x4D3B, 0x4D4E,0x4D59,0x4D43, /* Range 0x84B9 - 0x84BB, array index: 0x162A */ 0x4D3D,0x4D37,0x4D47, /* Range 0x84CC - 0x84D7, array index: 0x162D */ 0x4D4B,0x4D40,0x4D38,0x4D53,0x4D44,INVALC,0x4D57,INVALC, 0x4D56,INVALC,0x4D50,0x4D55, /* Range 0x84E7 - 0x8502, array index: 0x1639 */ 0x535C,0x535D,0x5350,0x534F,0x534B,INVALC,INVALC,INVALC, 0x535F,0x535E,0x464E,0x5348,0x534C,0x5346,INVALC,0x5359, 0x534A,INVALC,0x5360,0x5343,0x5341,0x534D,0x5357,0x5352, INVALC,0x5338,INVALC,0x5356, /* Range 0x8507 - 0x850F, array index: 0x1655 */ 0x4662,0x5344,0x533B,0x533E,0x5364,0x5345,0x533C,0x533A, 0x5337, /* Range 0x8515 - 0x8520, array index: 0x165E */ 0x5349,0x5351,INVALC,0x5361,0x5365,INVALC,INVALC,0x5340, 0x5354,0x5358,0x533D,0x5362, /* Range 0x8524 - 0x8531, array index: 0x166A */ 0x5335,INVALC,0x535B,0x533F,0x5353,0x5339,0x5347,0x5342, INVALC,INVALC,0x5355,0x5366,0x5363,0x535A, /* Range 0x8540 - 0x8547, array index: 0x1678 */ 0x596B,0x596E,INVALC,INVALC,0x5970,0x5965,0x596C,0x5972, /* Range 0x8551 - 0x8558, array index: 0x1680 */ 0x5971,INVALC,0x5968,0x5A22,0x597A,0x5964,0x5E72,0x596A, /* Range 0x8560 - 0x8567, array index: 0x1688 */ 0x597C,0x5969,0x596F,0x5973,0x596D,0x5A23,0x597E,0x597B, /* Range 0x8575 - 0x8590, array index: 0x1690 */ 0x5979,0x5F21,0x5E6C,0x5E71,0x5E7E,0x5E70,0x5E68,0x5E6D, INVALC,INVALC,INVALC,0x5E61,0x5E79,0x5E7B,0x5E60,INVALC, 0x5E7D,0x5E75,INVALC,0x5E7C,0x5E6E,INVALC,0x5E66,0x597D, 0x5E76,0x5E73,0x5E62,0x5F23, /* Range 0x8595 - 0x85A4, array index: 0x16AC */ 0x5E64,0x5E74,INVALC,0x5F22,0x5E77,0x5E6A,INVALC,INVALC, 0x5E78,0x5E6B,0x5F24,0x5E65,0x5E6F,0x5E7A,0x5E67,0x5E69, /* Range 0x85B1 - 0x85B8, array index: 0x16BC */ 0x627D,INVALC,0x6273,0x626E,0x6274,0x627E,0x6324,0x6323, /* Range 0x85BD - 0x85C8, array index: 0x16C4 */ 0x6275,0x6325,0x6278,0x6270,INVALC,0x6272,0x6271,0x6277, 0x627C,0x626F,0x6276,0x627B, /* Range 0x85D7 - 0x85E3, array index: 0x16D0 */ 0x6658,0x665C,0x6654,0x6657,INVALC,0x665F,INVALC,0x6664, 0x665D,INVALC,0x6655,0x6665,0x665E, /* Range 0x85EB - 0x85F2, array index: 0x16DD */ 0x6651,0x6659,0x6653,INVALC,0x6663,0x6661,0x6652,0x665A, /* Range 0x85FD - 0x8605, array index: 0x16E5 */ 0x696F,0x6967,0x6965,0x6969,0x6966,INVALC,INVALC,0x696B, 0x696D, /* Range 0x8618 - 0x8640, array index: 0x16EE */ 0x6C21,0x6C27,INVALC,0x6968,0x6C26,INVALC,0x6C2D,0x6C24, 0x6C2B,0x6C2A,0x6964,0x6C25,0x6322,0x6C2E,0x6C23,0x6C28, INVALC,0x6C2C,0x6C22,INVALC,0x6D77,INVALC,0x6C29,INVALC, INVALC,0x6F43,0x6D78,0x6D76,0x6D74,0x6D75,0x6D79,INVALC, INVALC,0x6F41,0x6F3F,0x6F44,0x6F42,INVALC,0x6F45,INVALC, 0x6F40, /* Range 0x8646 - 0x864D, array index: 0x1717 */ 0x7134,0x7135,0x7136,INVALC,INVALC,0x7235,0x722D,0x226F, /* Range 0x8661 - 0x8674, array index: 0x171F */ 0x4D5B,0x5367,0x5A25,0x5A27,0x5A26,INVALC,INVALC,0x5F25, 0x6326,0x7173,INVALC,INVALC,0x2869,0x286A,0x2868,0x2867, INVALC,INVALC,0x2D4A,0x2D48, /* Range 0x8685 - 0x8687, array index: 0x1733 */ 0x3266,0x3263,0x3261, /* Range 0x868D - 0x86A2, array index: 0x1736 */ 0x325E,0x326D,INVALC,0x326F,0x325F,INVALC,INVALC,0x3270, 0x326B,0x325D,0x3262,0x326C,0x3268,0x3265,INVALC,INVALC, 0x326E,0x3260,INVALC,INVALC,0x3269,0x325B, /* Range 0x86B3 - 0x86C5, array index: 0x174C */ 0x392B,0x392E,INVALC,INVALC,0x3923,0x392C,0x392A,0x3927, 0x392F,0x3930,0x3932,0x3933,0x3922,INVALC,0x3925,0x3924, 0x3931,INVALC,0x3926, /* Range 0x86D6 - 0x86DD, array index: 0x175F */ 0x472E,0x4023,0x3F75,INVALC,0x3F7A,INVALC,0x3F7E,0x3F7C, /* Range 0x86E6 - 0x86EC, array index: 0x1767 */ 0x3F77,INVALC,0x4024,0x4022,0x3F7B,0x3F7D,0x4021, /* Range 0x86F5 - 0x86FA, array index: 0x176E */ 0x472F,0x4735,0x472B,0x4731,INVALC,0x472D, /* Range 0x8709 - 0x8712, array index: 0x1774 */ 0x4733,INVALC,0x4729,0x472C,0x4736,0x4732,INVALC,INVALC, 0x4D7B,0x4D70, /* Range 0x8719 - 0x871B, array index: 0x177E */ 0x4D64,0x4D79,0x4D65, /* Range 0x8720 - 0x8735, array index: 0x1781 */ 0x4D6B,0x4D63,INVALC,0x4D5D,0x4D78,INVALC,0x4D75,0x4D76, 0x4D5E,INVALC,0x4D6D,INVALC,0x4D67,0x4D6E,0x4D61,INVALC, 0x4D7A,0x4D72,0x4D6C,0x4D5C,INVALC,0x4D73, /* Range 0x873E - 0x8743, array index: 0x1797 */ 0x4D69,INVALC,0x4D60,0x4D68,0x4D74,0x4D66, /* Range 0x874D - 0x876F, array index: 0x179D */ 0x4730,0x5379,0x5424,0x5378,0x5374,0x5371,INVALC,0x536F, INVALC,0x5368,INVALC,0x536E,INVALC,0x5373,0x5370,0x5422, 0x537B,0x5375,0x537A,INVALC,0x5372,0x5427,0x5369,0x536A, 0x5423,INVALC,0x5428,INVALC,0x5429,0x5377,0x4D5F,0x537D, 0x5376,0x5421,0x537C, /* Range 0x8777 - 0x877B, array index: 0x17C0 */ 0x536B,INVALC,0x5A32,0x537E,0x5425, /* Range 0x8784 - 0x8789, array index: 0x17C5 */ 0x5A39,0x5A35,INVALC,0x5A33,0x5A2E,0x5A3D, /* Range 0x878F - 0x879D, array index: 0x17CB */ 0x5A2A,0x5A36,0x5A37,0x5A2D,0x5A2C,0x5A3A,INVALC,0x5A30, 0x5A2B,0x5A31,INVALC,0x5A3C,0x5A29,0x5A3B,0x5A38, /* Range 0x87AA - 0x87C5, array index: 0x17DA */ 0x5F27,INVALC,0x5F2B,0x5F28,0x5F2F,0x5F35,0x5F2A,INVALC, 0x5F3E,INVALC,0x5F38,0x5F2D,0x5F39,0x5F34,0x5F3B,0x5F2C, INVALC,INVALC,0x5F2E,0x5F3C,0x5F26,0x5F3A,INVALC,INVALC, 0x5F32,0x5F31,0x5F36,0x5F29, /* Range 0x87D3 - 0x87ED, array index: 0x17F6 */ 0x6333,0x6331,INVALC,INVALC,0x6337,0x6335,0x6338,INVALC, 0x632A,0x6332,0x633C,0x5F3D,0x632E,INVALC,0x536C,0x6329, 0x6336,0x6330,0x632D,0x6328,0x6327,0x633B,INVALC,0x632C, 0x632B,INVALC,0x6334, /* Range 0x87F3 - 0x87F7, array index: 0x1811 */ 0x632F,0x633A,INVALC,0x6669,0x666A, /* Range 0x87FF - 0x8803, array index: 0x1816 */ 0x6671,0x6666,0x6339,0x6673,0x6668, /* Range 0x8806 - 0x880C, array index: 0x181B */ 0x666E,INVALC,0x6670,0x666B,0x6672,0x666D,0x666C, /* Range 0x8819 - 0x881D, array index: 0x1822 */ 0x6970,INVALC,0x6C31,0x6C34,0x6C30, /* Range 0x8824 - 0x8844, array index: 0x1827 */ 0x6C33,0x6D7E,0x6D7C,INVALC,0x6D7B,0x6C2F,0x6D7D,0x6C35, 0x6D7A,INVALC,0x6F48,0x6F26,0x6F46,INVALC,0x6F47,0x6F49, INVALC,0x704D,INVALC,0x704C,0x704B,INVALC,INVALC,INVALC, 0x715D,0x7175,0x7174,0x7176,INVALC,0x2D4B,INVALC,0x3271, 0x3272, /* Range 0x8871 - 0x8876, array index: 0x1848 */ 0x3278,0x3276,INVALC,0x327D,0x3274,0x3275, /* Range 0x887C - 0x8880, array index: 0x184E */ 0x327E,INVALC,0x327C,0x3279,0x3277, /* Range 0x8895 - 0x889B, array index: 0x1853 */ 0x3936,INVALC,0x3942,0x393E,0x3940,0x393A,0x3941, /* Range 0x88B6 - 0x88C0, array index: 0x185A */ 0x402F,0x4031,0x402C,0x402B,0x4029,INVALC,0x4030,0x4032, 0x402E,INVALC,0x402D, /* Range 0x88C9 - 0x88D0, array index: 0x1865 */ 0x4035,INVALC,0x4739,0x473F,0x473A,0x473B,INVALC,0x4740, /* Range 0x88EE - 0x88F2, array index: 0x186D */ 0x4E24,INVALC,0x4E28,0x4D7E,0x4E21, /* Range 0x88F6 - 0x88FE, array index: 0x1872 */ 0x4E26,0x4D7C,INVALC,INVALC,0x4E22,0x4E27,0x4E25,INVALC, 0x4E23, /* Range 0x8914 - 0x8919, array index: 0x187B */ 0x542D,INVALC,0x5433,0x542F,0x5430,0x5431, /* Range 0x892C - 0x8937, array index: 0x1881 */ 0x5A49,0x5A41,0x5A42,0x5A48,0x5A40,0x5A44,INVALC,0x5F40, INVALC,0x5F3F,INVALC,0x5F45, /* Range 0x894B - 0x8963, array index: 0x188D */ 0x633E,0x6340,INVALC,INVALC,0x633F,0x6342,0x6343,0x5F44, 0x633D,INVALC,INVALC,INVALC,0x6677,0x667A,0x667C,0x6675, 0x6676,0x6679,0x667B,INVALC,INVALC,INVALC,0x6678,0x6674, 0x6976, /* Range 0x8979 - 0x897E, array index: 0x18A6 */ 0x7137,0x7138,0x713A,0x7139,INVALC,0x2270, /* Range 0x899B - 0x89A4, array index: 0x18AC */ 0x4742,INVALC,0x4E2B,0x4E2E,0x4E2D,INVALC,0x4E2C,0x5437, 0x5439,0x5438, /* Range 0x89AD - 0x89AF, array index: 0x18B6 */ 0x5F47,0x5F49,0x5F48, /* Range 0x89D5 - 0x89FF, array index: 0x18B9 */ 0x394B,0x3949,INVALC,INVALC,0x394A,0x403A,0x403B,0x4749, 0x4039,INVALC,0x4743,0x4747,0x4746,0x4748,INVALC,0x4745, 0x4744,0x474A,INVALC,0x4E31,0x4E2F,INVALC,0x4E30,0x543C, 0x543A,INVALC,INVALC,0x543B,0x5A4B,0x5F4A,0x5F4B,INVALC, INVALC,0x6722,0x6979,INVALC,INVALC,0x6C3B,0x6E24,INVALC, INVALC,0x6F4D,0x713B, /* Range 0x8A4A - 0x8A52, array index: 0x18E4 */ 0x4048,INVALC,0x4049,0x403D,0x403C,0x404A,INVALC,0x4047, 0x4045, /* Range 0x8A57 - 0x8A59, array index: 0x18ED */ 0x4041,0x4042,0x403F, /* Range 0x8A74 - 0x8A77, array index: 0x18F0 */ 0x4756,0x4753,0x474B,0x4750, /* Range 0x8A7F - 0x8A86, array index: 0x18F4 */ 0x474D,INVALC,0x4755,0x4751,0x4754,0x4752,INVALC,0x474C, /* Range 0x8ABA - 0x8AC0, array index: 0x18FC */ 0x544B,0x5444,INVALC,0x544C,0x5446,INVALC,0x5447, /* Range 0x8AD1 - 0x8AE4, array index: 0x1903 */ 0x5441,INVALC,0x5440,0x5442,0x5443,INVALC,0x5445,0x5449, 0x544D,INVALC,INVALC,INVALC,0x5A51,0x5A57,0x5A54,0x5A4C, 0x5A58,0x5A4D,INVALC,0x5A53, /* Range 0x8B05 - 0x8B08, array index: 0x1917 */ 0x5F50,0x5F59,0x5F56,0x5F58, /* Range 0x8B0F - 0x8B27, array index: 0x191B */ 0x5F53,INVALC,0x5F4F,0x5F54,0x5F5B,0x5A52,0x5F55,0x5F4E, INVALC,0x5F4D,INVALC,0x5F5C,INVALC,0x5F5A,INVALC,0x5F4C, INVALC,INVALC,INVALC,0x5F52,0x6347,0x6355,0x6350,0x6352, 0x6346, /* Range 0x8B2E - 0x8B42, array index: 0x1934 */ 0x6354,0x634C,0x6349,0x634F,INVALC,0x6348,INVALC,0x634A, 0x6353,0x6351,INVALC,INVALC,0x6358,0x6356,0x634D,0x6357, 0x634E,INVALC,0x6726,INVALC,0x672D, /* Range 0x8B47 - 0x8B4B, array index: 0x1949 */ 0x634B,0x6724,INVALC,0x6725,0x672A, /* Range 0x8B50 - 0x8B57, array index: 0x194E */ 0x6723,0x672C,0x672E,0x6727,0x6729,0x672B,0x6728,0x672F, /* Range 0x8B78 - 0x8B7F, array index: 0x1956 */ 0x6C3D,0x6C3C,0x6C3F,0x6C40,INVALC,INVALC,0x6E25,0x6E2A, /* Range 0x8B82 - 0x8B8E, array index: 0x195E */ 0x6E27,INVALC,0x6E26,0x6E29,0x6E28,INVALC,0x6F51,INVALC, INVALC,0x6F50,0x6F4E,INVALC,0x6F4F, /* Range 0x8C39 - 0x8C3E, array index: 0x196B */ 0x3950,INVALC,0x3951,0x4758,0x4E38,0x544E, /* Range 0x8C64 - 0x8C69, array index: 0x1971 */ 0x475C,0x475B,0x475D,INVALC,0x4E39,0x4E3A, /* Range 0x8C6F - 0x8C78, array index: 0x1977 */ 0x5F61,0x5F5E,0x5F60,0x5F5F,INVALC,INVALC,0x635A,0x6732, 0x6731,0x2524, /* Range 0x8C80 - 0x8C86, array index: 0x1981 */ 0x404D,0x404C,INVALC,INVALC,0x475F,0x4760,0x475E, /* Range 0x8C8F - 0x8C9C, array index: 0x1988 */ 0x5450,0x5A5F,0x5A5D,0x5A5E,INVALC,0x5F63,0x5F62,INVALC, 0x635D,0x635C,0x635B,0x6733,INVALC,0x7178, /* Range 0x8CA3 - 0x8CA5, array index: 0x1996 */ 0x3326,0x3325,0x3955, /* Range 0x8D8C - 0x8D96, array index: 0x1999 */ 0x4765,0x4768,0x4766,0x4767,0x476B,0x4764,0x476C,0x4769, 0x476A,INVALC,0x4E3E, /* Range 0x8DAA - 0x8DAF, array index: 0x19A4 */ 0x6738,0x673A,0x6737,0x6739,0x6A24,0x6C43, /* Range 0x8DB5 - 0x8DB9, array index: 0x19AA */ 0x3329,0x332B,0x332A,INVALC,0x395B, /* Range 0x8DD3 - 0x8DD9, array index: 0x19AF */ 0x4057,INVALC,0x405D,0x405A,0x4060,0x4056,0x405E, /* Range 0x8DEE - 0x8DF4, array index: 0x19B6 */ 0x4771,INVALC,0x476D,0x4770,0x4777,INVALC,0x4779, /* Range 0x8DFD - 0x8E0A, array index: 0x19BD */ 0x4E43,0x4E49,0x4E41,0x4E4A,INVALC,0x4E40,0x4E45,0x4E4B, 0x4E48,0x4E47,0x4E46,INVALC,0x4E3F,0x4E44, /* Range 0x8E11 - 0x8E1C, array index: 0x19CB */ 0x5464,0x5469,0x546B,0x5468,0x5461,0x5463,0x546D,0x546A, 0x5465,0x546E,0x5462,0x546C, /* Range 0x8E23 - 0x8E27, array index: 0x19D7 */ 0x545D,0x545F,0x545E,0x5466,0x5467, /* Range 0x8E3C - 0x8E41, array index: 0x19DC */ 0x5A6F,0x5A70,0x5A6A,0x5A73,0x5A6C,0x5A71, /* Range 0x8E4C - 0x8E62, array index: 0x19E2 */ 0x5F6A,0x5F67,0x5F66,INVALC,0x5F69,INVALC,INVALC,0x5F68, 0x636F,INVALC,0x6366,0x6365,INVALC,INVALC,0x636B,0x636A, 0x6362,0x636D,0x6367,INVALC,0x6364,0x636C,0x6363, /* Range 0x8E92 - 0x8EA9, array index: 0x19F9 */ 0x6E2F,INVALC,0x6E2D,0x6E2C,0x6E31,0x6E32,0x6F54,INVALC, 0x6E2E,INVALC,INVALC,0x7054,0x7051,0x7052,0x7053,INVALC, INVALC,0x7140,0x713F,0x713E,0x715F,INVALC,0x722E,0x7179, /* Range 0x8EDC - 0x8EFA, array index: 0x1A11 */ 0x3961,0x3960,0x395F,INVALC,0x3963,0x3964,INVALC,INVALC, INVALC,0x4068,0x4066,0x406A,0x406B,0x4071,INVALC,0x406D, 0x406F,INVALC,0x4067,0x4062,INVALC,0x406E,INVALC,INVALC, 0x4070,0x4069,0x406C,0x4063,INVALC,0x4065,0x4064, /* Range 0x8EFF - 0x8F08, array index: 0x1A30 */ 0x477B,0x477D,0x477C,0x4823,INVALC,INVALC,0x477E,0x477A, 0x4821,0x4822, /* Range 0x8F0D - 0x8F11, array index: 0x1A3A */ 0x4E4F,0x4E4E,INVALC,0x4E4C,0x4E4D, /* Range 0x8F16 - 0x8F1A, array index: 0x1A3F */ 0x5475,0x5476,0x5471,INVALC,0x5472, /* Range 0x8F32 - 0x8F39, array index: 0x1A44 */ 0x5A78,INVALC,0x5A7B,0x5A77,0x5A75,0x5A7A,INVALC,0x5A79, /* Range 0x8F46 - 0x8F48, array index: 0x1A4C */ 0x6370,0x6371,0x6372, /* Range 0x8F4F - 0x8F64, array index: 0x1A4F */ 0x6744,0x6745,0x6743,0x6742,0x6746,INVALC,0x6A2B,0x6A29, 0x6A2A,0x6A2C,0x6A28,0x6A2D,0x6C47,INVALC,0x6C48,0x6C46, INVALC,0x6E33,INVALC,0x6E34,0x6F56,0x6F55, /* Range 0x8FD2 - 0x8FD7, array index: 0x1A65 */ 0x286C,0x286E,INVALC,0x2871,0x2870,0x2872, /* Range 0x8FFB - 0x8FFF, array index: 0x1A6B */ 0x3332,0x3334,INVALC,0x332E,0x3331, /* Range 0x9097 - 0x90A1, array index: 0x1A70 */ 0x2272,0x2273,0x2271,INVALC,0x2274,INVALC,INVALC,0x252A, 0x2527,0x252C,0x2528, /* Range 0x90AF - 0x90B4, array index: 0x1A7B */ 0x2875,0x2877,INVALC,0x2873,0x2876,0x2874, /* Range 0x90BD - 0x90BF, array index: 0x1A81 */ 0x2D59,0x2D5D,0x2D5A, /* Range 0x90D4 - 0x90F4, array index: 0x1A84 */ 0x3971,0x2D5B,0x3336,0x333F,0x333D,0x3338,0x3339,0x333E, 0x3340,INVALC,INVALC,0x333B,0x3337,INVALC,INVALC,0x333A, 0x3341,0x333C,INVALC,INVALC,INVALC,0x3974,0x396C,0x3972, 0x3973,INVALC,INVALC,0x396B,0x396D,0x2D58,0x396F,0x3970, 0x396E, /* Range 0x90F9 - 0x9108, array index: 0x1AA5 */ 0x407B,0x5B22,0x407C,0x4079,INVALC,INVALC,0x4078,0x407E, 0x407D,INVALC,0x4123,0x4077,0x4122,0x4075,0x4121,0x407A, /* Range 0x910B - 0x9111, array index: 0x1AB5 */ 0x4830,INVALC,0x482B,0x4831,0x482C,0x482A,0x482D, /* Range 0x911A - 0x9147, array index: 0x1ABC */ 0x4E56,0x4E59,0x4E51,0x4E55,INVALC,0x4E54,0x4E52,0x4E58, 0x4E53,0x4E50,0x4E57,INVALC,0x5523,INVALC,0x6374,0x547E, 0x5521,0x547D,0x4076,INVALC,0x5524,0x547C,INVALC,INVALC, 0x5522,0x5B23,INVALC,0x5B24,0x5B25,INVALC,0x5F70,INVALC, 0x6375,0x6376,INVALC,INVALC,0x6377,0x6749,0x6748,0x6A30, INVALC,0x6A2F,0x6C4A,0x6C4B,0x6C49,0x6E35, /* Range 0x914E - 0x9150, array index: 0x1AEA */ 0x3343,0x3344,0x3342, /* Range 0x915F - 0x9164, array index: 0x1AED */ 0x4126,0x4128,0x4124,0x4127,INVALC,0x4125, /* Range 0x9180 - 0x9186, array index: 0x1AF3 */ 0x552B,0x5528,0x5529,INVALC,0x552A,0x5525,0x5526, /* Range 0x918D - 0x9193, array index: 0x1AFA */ 0x5B29,INVALC,0x5B2A,0x5B27,0x5B28,INVALC,0x5B26, /* Range 0x9199 - 0x91A2, array index: 0x1B01 */ 0x5F74,0x5F71,0x5F73,INVALC,0x5F77,INVALC,0x5F75,0x5F78, 0x5F76,0x5F72, /* Range 0x91AF - 0x91BE, array index: 0x1B0B */ 0x637B,0x674A,INVALC,0x6A33,0x6A34,INVALC,0x6A32,INVALC, 0x6A31,INVALC,0x6C4C,INVALC,INVALC,0x6F57,0x7056,0x7055, /* Range 0x91D3 - 0x91D5, array index: 0x1B1B */ 0x2D62,0x2D61,0x3345, /* Range 0x91E8 - 0x91EE, array index: 0x1B1E */ 0x3A26,INVALC,0x3A23,0x3A24,0x397A,INVALC,0x3A27, /* Range 0x91F3 - 0x91F9, array index: 0x1B25 */ 0x397D,0x397B,INVALC,INVALC,0x3A25,0x397E,0x3A22, /* Range 0x91FD - 0x9206, array index: 0x1B2C */ 0x4134,INVALC,0x4133,0x4131,0x4129,0x4138,0x412C,0x4136, 0x413D,0x4135, /* Range 0x9216 - 0x921C, array index: 0x1B36 */ 0x413E,0x413C,INVALC,0x413B,0x412D,INVALC,0x4139, /* Range 0x9224 - 0x9227, array index: 0x1B3D */ 0x413A,0x412B,0x412E,0x4137, /* Range 0x922D - 0x9233, array index: 0x1B41 */ 0x4F22,0x483D,INVALC,0x4836,0x4849,0x4852,0x4839, /* Range 0x924C - 0x9256, array index: 0x1B48 */ 0x4850,INVALC,0x484E,0x4842,0x484C,INVALC,0x4835,0x484F, 0x484A,INVALC,0x4851, /* Range 0x9263 - 0x9267, array index: 0x1B53 */ 0x484B,INVALC,0x483A,0x4838,0x4844, /* Range 0x926C - 0x9272, array index: 0x1B58 */ 0x4841,0x4840,INVALC,0x4845,0x4848,INVALC,0x484D, /* Range 0x9279 - 0x928E, array index: 0x1B5F */ 0x4E6A,0x4E62,INVALC,INVALC,0x4E73,0x4E7B,0x4E6C,INVALC, INVALC,0x4E70,0x483C,INVALC,INVALC,0x4E77,0x4E7C,0x4E74, INVALC,0x4E76,0x4F21,0x4E78,0x4E66,0x4E6F, /* Range 0x9297 - 0x92AB, array index: 0x1B75 */ 0x4E6B,INVALC,0x4E79,0x4E68,0x4E61,INVALC,0x4E7E,INVALC, INVALC,0x4E63,0x4E75,0x4E72,0x4E6D,0x4E5F,0x4E5E,0x4E67, 0x4E7A,INVALC,0x4E7D,0x4E65,0x4E69, /* Range 0x92B4 - 0x92B6, array index: 0x1B8A */ 0x554D,0x5549,0x5531, /* Range 0x92C0 - 0x92E1, array index: 0x1B8D */ 0x552F,INVALC,0x553B,0x552D,0x552E,INVALC,0x554C,INVALC, 0x553E,0x5543,0x553D,0x5B3C,0x5539,0x5541,0x553F,0x5532, 0x552C,0x5547,INVALC,0x5548,INVALC,0x5542,INVALC,0x5537, 0x5535,0x5530,INVALC,INVALC,INVALC,0x5538,0x5545,0x5534, 0x5544,0x554A, /* Range 0x92E6 - 0x92E9, array index: 0x1BAF */ 0x5540,0x5546,0x553C,0x5536, /* Range 0x92F7 - 0x9302, array index: 0x1BB3 */ 0x5B41,INVALC,0x5B40,0x5B3E,0x5B50,INVALC,INVALC,0x5B4D, 0x5B45,0x5B4F,0x5B37,0x5B43, /* Range 0x9308 - 0x9316, array index: 0x1BBF */ 0x5B2D,0x5B4E,INVALC,0x5B4C,0x5B4B,0x5B3B,0x5B3A,0x5B30, INVALC,INVALC,0x5B36,0x5B3F,0x5B4A,INVALC,0x5B51, /* Range 0x931B - 0x932A, array index: 0x1BCE */ 0x5B34,INVALC,0x5B3D,0x5B2C,0x5B2E,INVALC,INVALC,INVALC, 0x5B35,0x5B44,0x554B,INVALC,0x5B2B,INVALC,0x5B46,0x5B49, /* Range 0x934C - 0x9359, array index: 0x1BDE */ 0x602B,INVALC,0x6039,0x6031,0x6026,0x6027,0x6030,INVALC, INVALC,0x602F,0x5F7D,0x602E,0x6022,0x603A, /* Range 0x9360 - 0x9364, array index: 0x1BEC */ 0x6028,0x6035,INVALC,0x6037,0x5F7C, /* Range 0x9376 - 0x937C, array index: 0x1BF1 */ 0x6024,0x6033,INVALC,0x602D,0x5B31,0x6034,0x6021, /* Range 0x9388 - 0x9392, array index: 0x1BF8 */ 0x642C,0x6425,INVALC,INVALC,0x637E,0x6430,0x6427,0x602A, INVALC,0x6432,0x6421, /* Range 0x939B - 0x93AA, array index: 0x1C03 */ 0x6423,INVALC,0x6424,0x6429,0x642E,INVALC,0x5F79,INVALC, 0x6437,0x6434,0x6761,0x642A,0x6426,0x6435,0x6756,0x6428, /* Range 0x93B1 - 0x93B7, array index: 0x1C13 */ 0x6431,0x6433,INVALC,0x6436,0x637D,INVALC,0x6422, /* Range 0x93CC - 0x93D5, array index: 0x1C1A */ 0x6754,INVALC,0x675E,0x674E,0x6751,INVALC,0x6760,INVALC, 0x6759,0x675C, /* Range 0x93F5 - 0x9400, array index: 0x1C24 */ 0x6A41,0x6A50,0x6A43,0x6A4A,0x6752,0x6A48,0x6A37,0x6A4E, INVALC,0x6A3B,0x6A4D,0x6A42, /* Range 0x9406 - 0x9416, array index: 0x1C30 */ 0x6A52,0x6A44,INVALC,0x6A49,0x6A4C,0x6A35,0x6A4F,0x6A40, 0x6A45,0x6A39,0x6A3D,0x6A51,0x6A47,0x6A36,0x6A3A,0x6A3C, 0x6A46, /* Range 0x9428 - 0x942C, array index: 0x1C41 */ 0x6A3E,0x6C50,0x6C54,INVALC,0x6C56, /* Range 0x9439 - 0x9440, array index: 0x1C46 */ 0x6C53,INVALC,0x6C4E,0x6A4B,0x6C51,INVALC,0x6C4D,0x6C57, /* Range 0x9445 - 0x9450, array index: 0x1C4E */ 0x6E3C,0x6E3F,0x6E3B,0x6E3D,0x6E3E,0x6E38,0x6E39,0x6E36, INVALC,INVALC,0x6E3A,0x6E37, /* Range 0x946B - 0x9478, array index: 0x1C5A */ 0x7058,INVALC,0x7142,0x7141,0x7143,INVALC,0x7144,INVALC, 0x7145,0x7161,0x7164,0x7163,INVALC,0x7162, /* Range 0x9480 - 0x9483, array index: 0x1C68 */ 0x7230,0x7231,0x722F,0x7237, /* Range 0x957A - 0x957D, array index: 0x1C6C */ 0x3A28,0x413F,0x554E,0x6763, /* Range 0x959B - 0x959F, array index: 0x1C70 */ 0x4856,0x4854,INVALC,0x4855,0x4853, /* Range 0x95B5 - 0x95C0, array index: 0x1C75 */ 0x5B59,0x5B57,0x6040,INVALC,0x5B55,0x5B56,INVALC,0x5B52, 0x5B5A,0x5B54,0x5B58,0x603C, /* Range 0x95D1 - 0x95D3, array index: 0x1C81 */ 0x643A,0x6438,0x6439, /* Range 0x95DA - 0x95E5, array index: 0x1C84 */ 0x6764,0x6765,INVALC,INVALC,0x6A53,0x6A55,0x6A54,INVALC, INVALC,0x6C5B,0x6C5A,0x6C59, /* Range 0x9620 - 0x9624, array index: 0x1C90 */ 0x2278,INVALC,0x2276,0x2279,0x2277, /* Range 0x9639 - 0x963D, array index: 0x1C95 */ 0x2878,0x287B,INVALC,0x287A,0x2879, /* Range 0x9687 - 0x9689, array index: 0x1C9A */ 0x4143,0x4145,0x4146, /* Range 0x9691 - 0x9693, array index: 0x1C9D */ 0x4859,0x4857,0x4858, /* Range 0x971F - 0x972F, array index: 0x1CA0 */ 0x6045,0x6044,INVALC,0x6443,0x6442,INVALC,0x6444,0x676B, INVALC,0x676A,0x6767,INVALC,0x6768,0x6769,INVALC,0x6A56, 0x6A57, /* Range 0x9777 - 0x9784, array index: 0x1CB1 */ 0x4861,0x4862,INVALC,0x4F28,0x4F2D,INVALC,0x4F27,0x4F29, 0x4F30,0x4F2B,0x4F2F,0x4F2C,0x4F2A,0x4F2E, /* Range 0x9799 - 0x97A5, array index: 0x1CBF */ 0x5B60,0x6049,INVALC,0x604B,0x604D,0x604C,INVALC,INVALC, 0x604A,0x644B,INVALC,0x6449,0x644C, /* Range 0x97A8 - 0x97AE, array index: 0x1CCC */ 0x6447,INVALC,0x644A,0x6448,0x6445,INVALC,0x6446, /* Range 0x97CD - 0x97E5, array index: 0x1CD3 */ 0x4F32,0x4F31,0x555E,0x555D,INVALC,INVALC,INVALC,0x604F, 0x604E,0x644F,0x644D,0x6450,0x644E,INVALC,INVALC,INVALC, 0x676F,0x6770,0x6771,INVALC,0x6C5F,INVALC,0x6E41,INVALC, 0x7060, /* Range 0x980D - 0x980F, array index: 0x1CEC */ 0x4865,0x4866,0x4864, /* Range 0x9826 - 0x9829, array index: 0x1CEF */ 0x5561,0x5566,0x5563,0x5562, /* Range 0x9841 - 0x984A, array index: 0x1CF3 */ 0x6051,INVALC,0x6056,0x6052,0x6055,INVALC,INVALC,0x5E41, 0x6054,0x6053, /* Range 0x9850 - 0x9852, array index: 0x1CFD */ 0x6452,0x6453,0x6454, /* Range 0x985C - 0x9864, array index: 0x1D00 */ 0x6772,0x6774,INVALC,0x6A5F,0x6A5C,INVALC,0x6A5D,0x6A5E, 0x6C60, /* Range 0x9872 - 0x9874, array index: 0x1D09 */ 0x7147,0x717C,0x717D, /* Range 0x98AC - 0x98AE, array index: 0x1D0C */ 0x4867,0x4F34,0x4F35, /* Range 0x98BB - 0x98C2, array index: 0x1D0F */ 0x6778,INVALC,0x6777,0x6779,0x6776,0x6C63,0x6A60,0x6A61, /* Range 0x9914 - 0x9917, array index: 0x1D17 */ 0x556B,0x556E,0x556C,0x556D, /* Range 0x9927 - 0x9933, array index: 0x1D1B */ 0x5B6A,INVALC,0x5B6B,0x605A,0x6058,0x6059,0x605E,INVALC, 0x605D,0x6060,0x605F,0x605C,0x605B, /* Range 0x999C - 0x999E, array index: 0x1D28 */ 0x4F3A,0x4F39,0x5B6C, /* Range 0x99B9 - 0x99BD, array index: 0x1D2B */ 0x4F3C,0x4F3E,0x4F3D,INVALC,0x4F40, /* Range 0x99C9 - 0x99CF, array index: 0x1D30 */ 0x5575,INVALC,0x5578,0x557A,0x5570,0x5574,0x5571, /* Range 0x99D3 - 0x99D8, array index: 0x1D37 */ 0x5572,0x5573,INVALC,0x5576,0x5579,0x5577, /* Range 0x99E3 - 0x99F0, array index: 0x1D3D */ 0x5B72,0x5B70,0x5B6F,INVALC,0x5B75,INVALC,0x5B74,0x5B73, INVALC,0x5B6E,INVALC,0x5B6D,INVALC,0x5B71, /* Range 0x99F4 - 0x9A15, array index: 0x1D4B */ 0x6066,INVALC,0x606A,0x6067,0x6069,0x6068,0x6065,0x606B, 0x606E,0x606C,0x606D,INVALC,INVALC,INVALC,0x6064,0x606F, 0x645D,0x6460,0x6462,0x6461,INVALC,0x645B,0x645F,0x645A, INVALC,0x645C,INVALC,0x6459,INVALC,0x645E,INVALC,INVALC, 0x682D,0x6822, /* Range 0x9A1A - 0x9A3A, array index: 0x1D6D */ 0x6821,0x6826,0x682C,0x6824,0x682B,INVALC,0x6828,INVALC, 0x6827,0x682A,0x6825,0x6823,INVALC,0x6829,INVALC,0x6A6E, 0x6A6C,INVALC,0x6A6B,0x6A71,0x6A6F,INVALC,INVALC,0x6A6A, 0x6A68,INVALC,0x6A69,INVALC,0x6A6D,INVALC,0x6A70,0x6C66, 0x6C6C, /* Range 0x9A46 - 0x9A56, array index: 0x1D8E */ 0x6C68,INVALC,0x6E4C,0x6E4E,0x6E4D,INVALC,0x6E4A,INVALC, 0x6E47,0x6E4B,0x6E50,INVALC,0x6E4F,0x6E48,0x6E49,INVALC, 0x6F60, /* Range 0x9A64 - 0x9A6B, array index: 0x1D9F */ 0x7223,INVALC,0x7224,0x7225,0x7233,0x7232,INVALC,0x723B, /* Range 0x9ABE - 0x9AC2, array index: 0x1DA7 */ 0x6070,0x5B77,0x6463,INVALC,0x682E, /* Range 0x9AF1 - 0x9AFE, array index: 0x1DAC */ 0x5622,0x5621,0x557E,INVALC,INVALC,0x5B7A,0x5B7D,INVALC, 0x5B7C,0x5B7B,INVALC,0x6074,0x6072,0x6071, /* Range 0x9B08 - 0x9B19, array index: 0x1DBA */ 0x6465,INVALC,0x6830,0x682F,0x6832,INVALC,0x6831,INVALC, 0x6A75,0x6A77,0x6A76,INVALC,INVALC,0x6C6F,0x6C72,0x6C70, 0x6C71,0x6E52, /* Range 0x9B1E - 0x9B20, array index: 0x1DCC */ 0x6F62,0x6F63,0x6F64, /* Range 0x9B48 - 0x9B4C, array index: 0x1DCF */ 0x6075,INVALC,0x646A,0x646C,0x646B, /* Range 0x9B5F - 0x9B61, array index: 0x1DD4 */ 0x4F49,0x4F47,0x4F48, /* Range 0x9B64 - 0x9B68, array index: 0x1DD7 */ 0x562D,INVALC,0x5628,0x5625,0x562C, /* Range 0x9B70 - 0x9B88, array index: 0x1DDC */ 0x562B,0x5627,INVALC,INVALC,0x5626,0x562A,0x5629,INVALC, INVALC,INVALC,0x5C2B,0x5C26,0x5C24,0x5C2D,0x5C25,INVALC, 0x5C21,INVALC,0x5C27,INVALC,INVALC,0x5C22,0x607E,0x5C23, 0x5C2E, /* Range 0x9B9E - 0x9BA8, array index: 0x1DF5 */ 0x6078,INVALC,0x6122,0x607B,0x6121,INVALC,0x607D,0x607C, 0x607A,INVALC,0x6077, /* Range 0x9BB5 - 0x9BB9, array index: 0x1E00 */ 0x6472,0x6475,INVALC,0x6473,0x6477, /* Range 0x9BC3 - 0x9BC7, array index: 0x1E05 */ 0x646F,0x6476,INVALC,0x646E,0x646D, /* Range 0x9BD3 - 0x9BEC, array index: 0x1E0A */ 0x6474,0x683C,0x6842,INVALC,0x683D,INVALC,0x6840,0x6844, INVALC,0x683F,INVALC,0x6837,INVALC,0x6836,0x6843,0x683A, INVALC,0x6838,0x6841,0x6839,INVALC,INVALC,INVALC,0x6834, 0x6835,0x683E, /* Range 0x9C05 - 0x9C0B, array index: 0x1E24 */ 0x6A7B,0x6B23,0x6B21,0x6A79,0x6B26,INVALC,0x6A78, /* Range 0x9C28 - 0x9C2C, array index: 0x1E2B */ 0x6C7A,0x6C7B,INVALC,0x6C75,0x6C78, /* Range 0x9C32 - 0x9C41, array index: 0x1E30 */ 0x6E61,0x6E5C,0x6E60,INVALC,0x6E63,0x6E5F,INVALC,0x6E5B, INVALC,INVALC,0x6E5E,0x6E62,INVALC,0x6E59,0x6A7E,0x6E5D, /* Range 0x9C48 - 0x9C52, array index: 0x1E40 */ 0x6E58,INVALC,0x6F68,0x6F6A,0x6F6D,0x6F69,0x6F6E,INVALC, 0x6F67,INVALC,0x6F65, /* Range 0x9C62 - 0x9C68, array index: 0x1E4B */ 0x7067,0x7064,INVALC,INVALC,0x7066,0x7065,0x7149, /* Range 0x9C71 - 0x9C75, array index: 0x1E52 */ 0x7169,INVALC,0x7168,0x7167,0x716A, /* Range 0x9CF7 - 0x9D00, array index: 0x1E57 */ 0x5633,INVALC,0x5636,0x5630,0x5637,0x562F,0x5631,INVALC, 0x5632,0x5635, /* Range 0x9D04 - 0x9D08, array index: 0x1E61 */ 0x563A,0x5639,INVALC,0x5634,0x5638, /* Range 0x9D17 - 0x9D22, array index: 0x1E66 */ 0x5C30,0x5C36,0x5C39,INVALC,INVALC,INVALC,0x5C35,0x5C32, 0x5C3A,0x5C31,INVALC,0x5C37, /* Range 0x9D2D - 0x9D38, array index: 0x1E72 */ 0x6135,0x6128,0x6129,0x612C,0x612A,INVALC,0x6124,INVALC, INVALC,0x6127,0x6131,0x612B, /* Range 0x9D3D - 0x9D45, array index: 0x1E7E */ 0x6133,0x6130,INVALC,0x6132,0x6125,0x612E,0x612F,INVALC, 0x612D, /* Range 0x9D4A - 0x9D4C, array index: 0x1E87 */ 0x647C,0x647E,0x6523, /* Range 0x9D52 - 0x9D5C, array index: 0x1E8A */ 0x6525,0x647A,0x6526,INVALC,0x6522,0x6524,0x6528,0x6521, 0x6529,0x647D,0x6479, /* Range 0x9D67 - 0x9D8C, array index: 0x1E95 */ 0x6126,0x685E,0x6855,INVALC,0x6851,INVALC,INVALC,INVALC, 0x685A,0x6854,0x684A,INVALC,0x6857,0x6852,0x6853,INVALC, 0x6845,0x684C,0x685B,INVALC,0x6858,INVALC,0x6850,INVALC, 0x685C,0x684B,0x6846,0x6859,INVALC,0x6848,0x6856,0x684D, 0x685D,0x6849,INVALC,0x6847,0x684E,0x684F, /* Range 0x9D94 - 0x9DF8, array index: 0x1EBB */ 0x6B30,INVALC,0x6B3C,0x6B33,0x6B2C,0x6B28,0x6B35,0x6B2E, 0x6B31,0x6B2A,0x6B38,0x6B27,0x6B2F,0x6B34,0x6B36,0x6B39, 0x6B29,INVALC,0x6B3D,0x6B3E,0x6B37,0x6B3B,0x6B32,INVALC, 0x6D2F,0x6D32,INVALC,INVALC,INVALC,0x6D31,0x6D36,0x6D34, INVALC,0x6D2B,0x6D21,0x6C7E,INVALC,0x6D2D,0x6D2E,0x6D2A, 0x6D22,INVALC,0x6D27,0x6B3A,INVALC,0x6D23,INVALC,0x6D29, INVALC,0x6D28,INVALC,0x6D24,0x6D30,INVALC,0x6D25,0x6E68, 0x6D33,0x6D35,0x6D2C,0x6D26,0x6E69,0x6E6B,0x6E65,INVALC, INVALC,0x6E72,0x6E70,INVALC,0x6E6F,0x6E6E,0x6E67,0x6E64, 0x6E6A,0x6E73,0x6E66,0x6E6C,INVALC,0x6F77,0x6F7C,0x6F72, 0x6F75,INVALC,0x6F79,INVALC,0x7022,0x6E6D,INVALC,0x6F73, 0x6F7D,0x7023,0x6F78,0x6F71,0x6F7B,INVALC,0x6F7A,0x7021, 0x6F7E,0x6E71,0x6F76,0x6F70,0x6F74, /* Range 0x9DFB - 0x9E19, array index: 0x1F20 */ 0x6F6F,INVALC,0x7074,0x706B,0x7073,0x7070,0x7071,0x706A, 0x706D,0x7075,0x706F,0x706E,0x706C,INVALC,0x7072,INVALC, 0x714C,INVALC,0x714D,INVALC,0x714F,0x714E,0x7151,0x7150, 0x716C,0x716B,0x7227,INVALC,0x7228,INVALC,0x7234, /* Range 0x9E86 - 0x9E8E, array index: 0x1F3F */ 0x5C3C,0x5C3D,0x5C3B,0x6137,0x6136,INVALC,0x652B,0x6138, 0x652A, /* Range 0x9E99 - 0x9E9C, array index: 0x1F48 */ 0x6B3F,0x6B41,0x6B40,0x6D38, /* Range 0x9EE4 - 0x9EE7, array index: 0x1F4C */ 0x6B43,0x6B42,0x6B45,0x6B44, /* Range 0x9EF2 - 0x9F01, array index: 0x1F50 */ 0x7026,0x7027,INVALC,0x7153,0x716D,INVALC,INVALC,0x4155, 0x5C42,0x613C,0x6862,0x4875,INVALC,0x613D,0x652E,0x652D, /* Range 0x9F18 - 0x9F38, array index: 0x1F60 */ 0x6D3D,INVALC,0x6D3E,0x6D3C,0x7029,INVALC,0x7077,INVALC, INVALC,INVALC,0x6140,0x613F,0x613E,0x6530,INVALC,INVALC, 0x6534,0x6533,0x6532,0x6531,INVALC,0x6863,0x6B47,INVALC, 0x6B46,0x6D3F,0x6E78,0x6E77,INVALC,0x6E76,0x702C,0x702B, 0x702A, /* Range 0x9F40 - 0x9F4F, array index: 0x1F81 */ 0x6864,0x6865,0x6E79,0x702D,INVALC,INVALC,0x7078,0x7155, 0x7229,0x7243,INVALC,INVALC,0x6535,0x6866,0x6D40,0x702E, /* Range 0x9F54 - 0x9F60, array index: 0x1F91 */ 0x6141,0x6536,0x6867,0x6868,0x6869,0x6B4C,INVALC,0x6B48, INVALC,0x6B4B,0x6B4A,INVALC,0x6B49, /* Range 0x9F6E - 0x9F7B, array index: 0x1F9E */ 0x7031,0x7032,0x7030,0x702F,INVALC,INVALC,0x7079,0x707A, 0x707B,INVALC,0x7156,0x7159,0x7158,0x7157, /* Unranged codes (638 codes) */ /* Array index: 0x1FAC */ 0x4E07,0x2126, /* Array index: 0x1FAC */ 0x4E0C,0x2127, /* Array index: 0x1FAC */ 0x4E0E,0x212F, /* Array index: 0x1FAC */ 0x4E0F,0x212D, /* Array index: 0x1FAC */ 0x4E2E,0x2130, /* Array index: 0x1FAC */ 0x4E31,0x2143, /* Array index: 0x1FAC */ 0x4E33,0x2531, /* Array index: 0x1FAC */ 0x4E3C,0x2144, /* Array index: 0x1FAC */ 0x4E42,0x2121, /* Array index: 0x1FAC */ 0x4E47,0x2128, /* Array index: 0x1FAC */ 0x4E5C,0x2122, /* Array index: 0x1FAC */ 0x4E7F,0x334E, /* Array index: 0x1FAC */ 0x4E83,0x4156, /* Array index: 0x1FAC */ 0x4E84,0x4157, /* Array index: 0x1FAC */ 0x4E8D,0x2129, /* Array index: 0x1FAC */ 0x4E93,0x2131, /* Array index: 0x1FAC */ 0x4EB6,0x4158, /* Array index: 0x1FAC */ 0x4EB9,0x6D44, /* Array index: 0x1FAC */ 0x4EC2,0x2132, /* Array index: 0x1FAC */ 0x4EC8,0x2134, /* Array index: 0x1FAC */ 0x4EC9,0x2133, /* Array index: 0x1FAC */ 0x4EDA,0x214A, /* Array index: 0x1FAC */ 0x4EDC,0x2146, /* Array index: 0x1FAC */ 0x4EDD,0x2149, /* Array index: 0x1FAC */ 0x4EE1,0x2148, /* Array index: 0x1FAC */ 0x4EE8,0x2145, /* Array index: 0x1FAC */ 0x4EE9,0x2147, /* Array index: 0x1FAC */ 0x4EF1,0x216F, /* Array index: 0x1FAC */ 0x4EF4,0x2179, /* Array index: 0x1FAC */ 0x4EF5,0x216D, /* Array index: 0x1FAC */ 0x4EF7,0x2171, /* Array index: 0x1FAC */ 0x4F00,0x2170, /* Array index: 0x1FAC */ 0x4F02,0x2174, /* Array index: 0x1FAC */ 0x4F04,0x2178, /* Array index: 0x1FAC */ 0x4F05,0x2175, /* Array index: 0x1FAC */ 0x4F08,0x2172, /* Array index: 0x1FAC */ 0x4F0E,0x216A, /* Array index: 0x1FAC */ 0x4F18,0x216B, /* Array index: 0x1FAC */ 0x4F1D,0x2173, /* Array index: 0x1FAC */ 0x4F22,0x2176, /* Array index: 0x1FAC */ 0x4F2C,0x216C, /* Array index: 0x1FAC */ 0x4F2D,0x2328, /* Array index: 0x1FAC */ 0x4F33,0x2329, /* Array index: 0x1FAC */ 0x4F3B,0x227B, /* Array index: 0x1FAC */ 0x4F3E,0x2322, /* Array index: 0x1FAC */ 0x4F3F,0x232A, /* Array index: 0x1FAC */ 0x4F41,0x2326, /* Array index: 0x1FAC */ 0x4F49,0x227D, /* Array index: 0x1FAC */ 0x4F4C,0x253D, /* Array index: 0x1FAC */ 0x4F52,0x2324, /* Array index: 0x1FAC */ 0x4F53,0x227E, /* Array index: 0x1FAC */ 0x4F56,0x227A, /* Array index: 0x1FAC */ 0x4F58,0x2327, /* Array index: 0x1FAC */ 0x4F5F,0x2325, /* Array index: 0x1FAC */ 0x4F61,0x232B, /* Array index: 0x1FAC */ 0x4F62,0x227C, /* Array index: 0x1FAC */ 0x4F64,0x2321, /* Array index: 0x1FAC */ 0x4F67,0x2323, /* Array index: 0x1FAC */ 0x4F6A,0x253F, /* Array index: 0x1FAC */ 0x4F6B,0x254B, /* Array index: 0x1FAC */ 0x4F6E,0x254C, /* Array index: 0x1FAC */ 0x4F90,0x2544, /* Array index: 0x1FAC */ 0x4F92,0x2548, /* Array index: 0x1FAC */ 0x4FB2,0x2922, /* Array index: 0x1FAC */ 0x4FB3,0x292A, /* Array index: 0x1FAC */ 0x4FC0,0x292F, /* Array index: 0x1FAC */ 0x4FC1,0x2925, /* Array index: 0x1FAC */ 0x4FC5,0x287E, /* Array index: 0x1FAC */ 0x4FC7,0x292C, /* Array index: 0x1FAC */ 0x4FC9,0x2923, /* Array index: 0x1FAC */ 0x4FCB,0x2924, /* Array index: 0x1FAC */ 0x4FCD,0x287D, /* Array index: 0x1FAC */ 0x4FD3,0x2921, /* Array index: 0x1FAC */ 0x4FD4,0x2926, /* Array index: 0x1FAC */ 0x4FD6,0x292D, /* Array index: 0x1FAC */ 0x4FD9,0x2928, /* Array index: 0x1FAC */ 0x4FDB,0x292B, /* Array index: 0x1FAC */ 0x4FDC,0x2927, /* Array index: 0x1FAC */ 0x4FEC,0x2931, /* Array index: 0x1FAC */ 0x5005,0x2D6A, /* Array index: 0x1FAC */ 0x5007,0x2D6B, /* Array index: 0x1FAC */ 0x500E,0x2D7E, /* Array index: 0x1FAC */ 0x5013,0x2D6C, /* Array index: 0x1FAC */ 0x5015,0x335E, /* Array index: 0x1FAC */ 0x5017,0x2D77, /* Array index: 0x1FAC */ 0x501B,0x2D6F, /* Array index: 0x1FAC */ 0x501C,0x2D78, /* Array index: 0x1FAC */ 0x501E,0x2D69, /* Array index: 0x1FAC */ 0x5020,0x2D79, /* Array index: 0x1FAC */ 0x5022,0x2D6D, /* Array index: 0x1FAC */ 0x5027,0x2D7A, /* Array index: 0x1FAC */ 0x502C,0x2D74, /* Array index: 0x1FAC */ 0x5040,0x3366, /* Array index: 0x1FAC */ 0x5041,0x335A, /* Array index: 0x1FAC */ 0x5045,0x335F, /* Array index: 0x1FAC */ 0x5046,0x3365, /* Array index: 0x1FAC */ 0x5048,0x3358, /* Array index: 0x1FAC */ 0x504A,0x335C, /* Array index: 0x1FAC */ 0x504B,0x3355, /* Array index: 0x1FAC */ 0x504D,0x3359, /* Array index: 0x1FAC */ 0x5051,0x336A, /* Array index: 0x1FAC */ 0x5053,0x3354, /* Array index: 0x1FAC */ 0x5057,0x3369, /* Array index: 0x1FAC */ 0x506E,0x3367, /* Array index: 0x1FAC */ 0x5070,0x334F, /* Array index: 0x1FAC */ 0x5072,0x3357, /* Array index: 0x1FAC */ 0x5073,0x3368, /* Array index: 0x1FAC */ 0x5082,0x3A42, /* Array index: 0x1FAC */ 0x5083,0x3A3B, /* Array index: 0x1FAC */ 0x5087,0x3A43, /* Array index: 0x1FAC */ 0x508B,0x3A39, /* Array index: 0x1FAC */ 0x508C,0x3A3C, /* Array index: 0x1FAC */ 0x508E,0x3A3D, /* Array index: 0x1FAC */ 0x5092,0x3A41, /* Array index: 0x1FAC */ 0x5094,0x3A37, /* Array index: 0x1FAC */ 0x5095,0x3A36, /* Array index: 0x1FAC */ 0x50A3,0x3A3A, /* Array index: 0x1FAC */ 0x50AE,0x415C, /* Array index: 0x1FAC */ 0x50B0,0x4162, /* Array index: 0x1FAC */ 0x50B1,0x4165, /* Array index: 0x1FAC */ 0x50B4,0x415F, /* Array index: 0x1FAC */ 0x50B6,0x4168, /* Array index: 0x1FAC */ 0x50B8,0x4169, /* Array index: 0x1FAC */ 0x50BA,0x4164, /* Array index: 0x1FAC */ 0x50BD,0x4159, /* Array index: 0x1FAC */ 0x50BF,0x415A, /* Array index: 0x1FAC */ 0x50C1,0x4163, /* Array index: 0x1FAC */ 0x50C2,0x4161, /* Array index: 0x1FAC */ 0x50C4,0x415D, /* Array index: 0x1FAC */ 0x50D3,0x4921, /* Array index: 0x1FAC */ 0x50D4,0x4877, /* Array index: 0x1FAC */ 0x50D7,0x4878, /* Array index: 0x1FAC */ 0x50DB,0x487B, /* Array index: 0x1FAC */ 0x50DD,0x487D, /* Array index: 0x1FAC */ 0x50E0,0x4926, /* Array index: 0x1FAC */ 0x50E3,0x4925, /* Array index: 0x1FAC */ 0x50E4,0x487E, /* Array index: 0x1FAC */ 0x50E6,0x4876, /* Array index: 0x1FAC */ 0x50E8,0x4879, /* Array index: 0x1FAC */ 0x50EA,0x487C, /* Array index: 0x1FAC */ 0x50EC,0x4922, /* Array index: 0x1FAC */ 0x50EF,0x4924, /* Array index: 0x1FAC */ 0x50F0,0x4923, /* Array index: 0x1FAC */ 0x50F3,0x487A, /* Array index: 0x1FAC */ 0x50F6,0x4F54, /* Array index: 0x1FAC */ 0x50F8,0x4F51, /* Array index: 0x1FAC */ 0x5103,0x4F4F, /* Array index: 0x1FAC */ 0x5111,0x5643, /* Array index: 0x1FAC */ 0x5113,0x5640, /* Array index: 0x1FAC */ 0x5117,0x5641, /* Array index: 0x1FAC */ 0x511A,0x5642, /* Array index: 0x1FAC */ 0x511C,0x563F, /* Array index: 0x1FAC */ 0x5120,0x5C49, /* Array index: 0x1FAC */ 0x5129,0x5C4A, /* Array index: 0x1FAC */ 0x5139,0x6B4F, /* Array index: 0x1FAC */ 0x513A,0x6B4E, /* Array index: 0x1FAC */ 0x513D,0x6E7D, /* Array index: 0x1FAC */ 0x515A,0x2E21, /* Array index: 0x1FAC */ 0x515F,0x3A44, /* Array index: 0x1FAC */ 0x5187,0x212E, /* Array index: 0x1FAC */ 0x518F,0x232C, /* Array index: 0x1FAC */ 0x5193,0x2E23, /* Array index: 0x1FAC */ 0x5194,0x2E22, /* Array index: 0x1FAC */ 0x5198,0x2135, /* Array index: 0x1FAC */ 0x519E,0x254D, /* Array index: 0x1FAC */ 0x51B1,0x217B, /* Array index: 0x1FAC */ 0x51B9,0x232D, /* Array index: 0x1FAC */ 0x51BC,0x254E, /* Array index: 0x1FAC */ 0x51BE,0x254F, /* Array index: 0x1FAC */ 0x51C4,0x2E25, /* Array index: 0x1FAC */ 0x51C5,0x2E26, /* Array index: 0x1FAC */ 0x51C8,0x2E27, /* Array index: 0x1FAC */ 0x51CA,0x2E24, /* Array index: 0x1FAC */ 0x51CE,0x2E28, /* Array index: 0x1FAC */ 0x51D0,0x336B, /* Array index: 0x1FAC */ 0x51D4,0x3A45, /* Array index: 0x1FAC */ 0x51D7,0x416A, /* Array index: 0x1FAC */ 0x51D8,0x4927, /* Array index: 0x1FAC */ 0x51DE,0x5644, /* Array index: 0x1FAC */ 0x51F5,0x2123, /* Array index: 0x1FAC */ 0x5209,0x214C, /* Array index: 0x1FAC */ 0x520C,0x214B, /* Array index: 0x1FAC */ 0x5210,0x217D, /* Array index: 0x1FAC */ 0x5213,0x217C, /* Array index: 0x1FAC */ 0x521C,0x232E, /* Array index: 0x1FAC */ 0x521E,0x232F, /* Array index: 0x1FAC */ 0x5221,0x2330, /* Array index: 0x1FAC */ 0x5244,0x2932, /* Array index: 0x1FAC */ 0x5246,0x2553, /* Array index: 0x1FAC */ 0x5249,0x2933, /* Array index: 0x1FAC */ 0x5252,0x2E2B, /* Array index: 0x1FAC */ 0x5255,0x2E2E, /* Array index: 0x1FAC */ 0x525A,0x2E2A, /* Array index: 0x1FAC */ 0x5280,0x4928, /* Array index: 0x1FAC */ 0x5281,0x4929, /* Array index: 0x1FAC */ 0x5284,0x4C61, /* Array index: 0x1FAC */ 0x528B,0x4F5A, /* Array index: 0x1FAC */ 0x528C,0x4F5B, /* Array index: 0x1FAC */ 0x52A6,0x217E, /* Array index: 0x1FAC */ 0x52AD,0x2331, /* Array index: 0x1FAC */ 0x52AE,0x2332, /* Array index: 0x1FAC */ 0x52BC,0x2555, /* Array index: 0x1FAC */ 0x52C0,0x2934, /* Array index: 0x1FAC */ 0x52C2,0x2935, /* Array index: 0x1FAC */ 0x52CD,0x2E30, /* Array index: 0x1FAC */ 0x52D3,0x3371, /* Array index: 0x1FAC */ 0x52D6,0x3370, /* Array index: 0x1FAC */ 0x52E9,0x492A, /* Array index: 0x1FAC */ 0x52EB,0x492B, /* Array index: 0x1FAC */ 0x52EF,0x4F5D, /* Array index: 0x1FAC */ 0x52F1,0x4F5C, /* Array index: 0x1FAC */ 0x52F4,0x5C4B, /* Array index: 0x1FAC */ 0x52F7,0x653A, /* Array index: 0x1FAC */ 0x52FC,0x2136, /* Array index: 0x1FAC */ 0x530E,0x2E31, /* Array index: 0x1FAC */ 0x5311,0x3A47, /* Array index: 0x1FAC */ 0x5312,0x3A46, /* Array index: 0x1FAC */ 0x531A,0x2124, /* Array index: 0x1FAC */ 0x531C,0x214D, /* Array index: 0x1FAC */ 0x531F,0x2222, /* Array index: 0x1FAC */ 0x5322,0x2221, /* Array index: 0x1FAC */ 0x532D,0x3372, /* Array index: 0x1FAC */ 0x5330,0x492C, /* Array index: 0x1FAC */ 0x5334,0x5645, /* Array index: 0x1FAC */ 0x5337,0x686A, /* Array index: 0x1FAC */ 0x533C,0x2558, /* Array index: 0x1FAC */ 0x533D,0x2936, /* Array index: 0x1FAC */ 0x534C,0x214E, /* Array index: 0x1FAC */ 0x534D,0x2223, /* Array index: 0x1FAC */ 0x5363,0x2334, /* Array index: 0x1FAC */ 0x536C,0x2137, /* Array index: 0x1FAC */ 0x5372,0x2335, /* Array index: 0x1FAC */ 0x537C,0x2937, /* Array index: 0x1FAC */ 0x5382,0x2125, /* Array index: 0x1FAC */ 0x538A,0x2224, /* Array index: 0x1FAC */ 0x538E,0x2336, /* Array index: 0x1FAC */ 0x538F,0x2337, /* Array index: 0x1FAC */ 0x5392,0x2559, /* Array index: 0x1FAC */ 0x539C,0x3373, /* Array index: 0x1FAC */ 0x539E,0x2E32, /* Array index: 0x1FAC */ 0x53A4,0x3A48, /* Array index: 0x1FAC */ 0x53A7,0x3A49, /* Array index: 0x1FAC */ 0x53AC,0x492D, /* Array index: 0x1FAC */ 0x53B4,0x653B, /* Array index: 0x1FAC */ 0x53B9,0x2138, /* Array index: 0x1FAC */ 0x53E1,0x5646, /* Array index: 0x1FAC */ 0x5407,0x2225, /* Array index: 0x1FAC */ 0x5418,0x2340, /* Array index: 0x1FAC */ 0x5419,0x233D, /* Array index: 0x1FAC */ 0x541C,0x233E, /* Array index: 0x1FAC */ 0x5424,0x2345, /* Array index: 0x1FAC */ 0x5425,0x233F, /* Array index: 0x1FAC */ 0x5428,0x2344, /* Array index: 0x1FAC */ 0x542A,0x233A, /* Array index: 0x1FAC */ 0x5430,0x2338, /* Array index: 0x1FAC */ 0x5437,0x2339, /* Array index: 0x1FAC */ 0x543D,0x2341, /* Array index: 0x1FAC */ 0x5441,0x2343, /* Array index: 0x1FAC */ 0x5445,0x233C, /* Array index: 0x1FAC */ 0x5447,0x2346, /* Array index: 0x1FAC */ 0x544F,0x2342, /* Array index: 0x1FAC */ 0x5454,0x233B, /* Array index: 0x1FAC */ 0x546B,0x2561, /* Array index: 0x1FAC */ 0x546C,0x2565, /* Array index: 0x1FAC */ 0x546F,0x2569, /* Array index: 0x1FAC */ 0x5470,0x294A, /* Array index: 0x1FAC */ 0x5472,0x294E, /* Array index: 0x1FAC */ 0x5474,0x2566, /* Array index: 0x1FAC */ 0x547A,0x2562, /* Array index: 0x1FAC */ 0x5487,0x255B, /* Array index: 0x1FAC */ 0x5488,0x2560, /* Array index: 0x1FAC */ 0x548D,0x2568, /* Array index: 0x1FAC */ 0x5491,0x255E, /* Array index: 0x1FAC */ 0x5498,0x256C, /* Array index: 0x1FAC */ 0x54A5,0x293F, /* Array index: 0x1FAC */ 0x54AD,0x293E, /* Array index: 0x1FAC */ 0x54AE,0x2944, /* Array index: 0x1FAC */ 0x54B0,0x2950, /* Array index: 0x1FAC */ 0x54B6,0x2946, /* Array index: 0x1FAC */ 0x54B7,0x2943, /* Array index: 0x1FAC */ 0x54BA,0x293C, /* Array index: 0x1FAC */ 0x54BC,0x294B, /* Array index: 0x1FAC */ 0x54BE,0x294D, /* Array index: 0x1FAC */ 0x54C3,0x2941, /* Array index: 0x1FAC */ 0x54C5,0x2947, /* Array index: 0x1FAC */ 0x54C6,0x2948, /* Array index: 0x1FAC */ 0x54CF,0x2940, /* Array index: 0x1FAC */ 0x54D6,0x2945, /* Array index: 0x1FAC */ 0x54DE,0x294F, /* Array index: 0x1FAC */ 0x54E0,0x2E46, /* Array index: 0x1FAC */ 0x54E2,0x2E34, /* Array index: 0x1FAC */ 0x54E4,0x2E39, /* Array index: 0x1FAC */ 0x54E7,0x2E37, /* Array index: 0x1FAC */ 0x54EB,0x2E3E, /* Array index: 0x1FAC */ 0x54F1,0x2E41, /* Array index: 0x1FAC */ 0x54F3,0x2E38, /* Array index: 0x1FAC */ 0x54F7,0x2E44, /* Array index: 0x1FAC */ 0x54F8,0x2E45, /* Array index: 0x1FAC */ 0x54FB,0x2E43, /* Array index: 0x1FAC */ 0x54FF,0x2E3B, /* Array index: 0x1FAC */ 0x5517,0x2E35, /* Array index: 0x1FAC */ 0x551A,0x2E3A, /* Array index: 0x1FAC */ 0x5526,0x2E33, /* Array index: 0x1FAC */ 0x552A,0x337A, /* Array index: 0x1FAC */ 0x552D,0x342A, /* Array index: 0x1FAC */ 0x5530,0x3421, /* Array index: 0x1FAC */ 0x5539,0x3428, /* Array index: 0x1FAC */ 0x553B,0x342B, /* Array index: 0x1FAC */ 0x553C,0x3376, /* Array index: 0x1FAC */ 0x5540,0x342C, /* Array index: 0x1FAC */ 0x5545,0x3423, /* Array index: 0x1FAC */ 0x5548,0x3429, /* Array index: 0x1FAC */ 0x554B,0x342D, /* Array index: 0x1FAC */ 0x5562,0x337C, /* Array index: 0x1FAC */ 0x5565,0x3426, /* Array index: 0x1FAC */ 0x557D,0x3A59, /* Array index: 0x1FAC */ 0x557F,0x3A5C, /* Array index: 0x1FAC */ 0x5581,0x3A55, /* Array index: 0x1FAC */ 0x5588,0x3A52, /* Array index: 0x1FAC */ 0x55AD,0x3A4D, /* Array index: 0x1FAC */ 0x55B5,0x3A54, /* Array index: 0x1FAC */ 0x55D9,0x4226, /* Array index: 0x1FAC */ 0x55DB,0x4170, /* Array index: 0x1FAC */ 0x55DD,0x4175, /* Array index: 0x1FAC */ 0x55E2,0x4221, /* Array index: 0x1FAC */ 0x55E9,0x4179, /* Array index: 0x1FAC */ 0x55F2,0x4224, /* Array index: 0x1FAC */ 0x55F9,0x493C, /* Array index: 0x1FAC */ 0x55FA,0x4938, /* Array index: 0x1FAC */ 0x55FC,0x4932, /* Array index: 0x1FAC */ 0x55FF,0x493B, /* Array index: 0x1FAC */ 0x5601,0x4935, /* Array index: 0x1FAC */ 0x5602,0x4937, /* Array index: 0x1FAC */ 0x5604,0x493A, /* Array index: 0x1FAC */ 0x560C,0x4930, /* Array index: 0x1FAC */ 0x560F,0x4933, /* Array index: 0x1FAC */ 0x5612,0x4931, /* Array index: 0x1FAC */ 0x5613,0x4936, /* Array index: 0x1FAC */ 0x5615,0x492F, /* Array index: 0x1FAC */ 0x561C,0x4934, /* Array index: 0x1FAC */ 0x561D,0x4939, /* Array index: 0x1FAC */ 0x5627,0x492E, /* Array index: 0x1FAC */ 0x562A,0x4F6E, /* Array index: 0x1FAC */ 0x562C,0x4F6B, /* Array index: 0x1FAC */ 0x5633,0x4F69, /* Array index: 0x1FAC */ 0x5635,0x4F61, /* Array index: 0x1FAC */ 0x5638,0x4F6D, /* Array index: 0x1FAC */ 0x563A,0x4F6F, /* Array index: 0x1FAC */ 0x5658,0x4F66, /* Array index: 0x1FAC */ 0x565A,0x4F67, /* Array index: 0x1FAC */ 0x565E,0x564F, /* Array index: 0x1FAC */ 0x5660,0x5648, /* Array index: 0x1FAC */ 0x5663,0x564C, /* Array index: 0x1FAC */ 0x5666,0x564B, /* Array index: 0x1FAC */ 0x566D,0x564D, /* Array index: 0x1FAC */ 0x566E,0x5649, /* Array index: 0x1FAC */ 0x5670,0x5647, /* Array index: 0x1FAC */ 0x5672,0x564E, /* Array index: 0x1FAC */ 0x5673,0x564A, /* Array index: 0x1FAC */ 0x5677,0x5650, /* Array index: 0x1FAC */ 0x568C,0x5C4D, /* Array index: 0x1FAC */ 0x568D,0x5C4E, /* Array index: 0x1FAC */ 0x5693,0x5C4C, /* Array index: 0x1FAC */ 0x56B2,0x686B, /* Array index: 0x1FAC */ 0x56B3,0x686D, /* Array index: 0x1FAC */ 0x56B5,0x686C, /* Array index: 0x1FAC */ 0x56BD,0x6B53, /* Array index: 0x1FAC */ 0x56BE,0x6B54, /* Array index: 0x1FAC */ 0x56C3,0x6B52, /* Array index: 0x1FAC */ 0x56C5,0x6D46, /* Array index: 0x1FAC */ 0x56C6,0x6D45, /* Array index: 0x1FAC */ 0x56CB,0x6D47, /* Array index: 0x1FAC */ 0x56CD,0x7034, /* Array index: 0x1FAC */ 0x56D3,0x7033, /* Array index: 0x1FAC */ 0x56D4,0x707C, /* Array index: 0x1FAC */ 0x56D7,0x212A, /* Array index: 0x1FAC */ 0x56DF,0x2227, /* Array index: 0x1FAC */ 0x56E1,0x2226, /* Array index: 0x1FAC */ 0x56E5,0x2349, /* Array index: 0x1FAC */ 0x56E7,0x2348, /* Array index: 0x1FAC */ 0x56EE,0x2347, /* Array index: 0x1FAC */ 0x56F7,0x2570, /* Array index: 0x1FAC */ 0x56F9,0x2571, /* Array index: 0x1FAC */ 0x5701,0x2E4A, /* Array index: 0x1FAC */ 0x5702,0x2E4B, /* Array index: 0x1FAC */ 0x5707,0x342F, /* Array index: 0x1FAC */ 0x570A,0x342E, /* Array index: 0x1FAC */ 0x570C,0x3A60, /* Array index: 0x1FAC */ 0x5714,0x4228, /* Array index: 0x1FAC */ 0x572A,0x2229, /* Array index: 0x1FAC */ 0x572E,0x2228, /* Array index: 0x1FAC */ 0x5734,0x222A, /* Array index: 0x1FAC */ 0x5741,0x234A, /* Array index: 0x1FAC */ 0x5745,0x234B, /* Array index: 0x1FAC */ 0x5749,0x234D, /* Array index: 0x1FAC */ 0x574B,0x234E, /* Array index: 0x1FAC */ 0x574C,0x234C, /* Array index: 0x1FAC */ 0x5752,0x234F, /* Array index: 0x1FAC */ 0x5762,0x257E, /* Array index: 0x1FAC */ 0x5768,0x2621, /* Array index: 0x1FAC */ 0x576B,0x2575, /* Array index: 0x1FAC */ 0x577B,0x257B, /* Array index: 0x1FAC */ 0x577D,0x2622, /* Array index: 0x1FAC */ 0x5780,0x2579, /* Array index: 0x1FAC */ 0x578C,0x2955, /* Array index: 0x1FAC */ 0x578F,0x295B, /* Array index: 0x1FAC */ 0x57A4,0x2954, /* Array index: 0x1FAC */ 0x57A5,0x295D, /* Array index: 0x1FAC */ 0x57C6,0x2E51, /* Array index: 0x1FAC */ 0x57C7,0x2E57, /* Array index: 0x1FAC */ 0x57CC,0x2E4C, /* Array index: 0x1FAC */ 0x57CF,0x343D, /* Array index: 0x1FAC */ 0x57D0,0x2E58, /* Array index: 0x1FAC */ 0x57D2,0x2E4F, /* Array index: 0x1FAC */ 0x57D5,0x2E4E, /* Array index: 0x1FAC */ 0x57DC,0x3434, /* Array index: 0x1FAC */ 0x5804,0x344F, /* Array index: 0x1FAC */ 0x5814,0x3431, /* Array index: 0x1FAC */ 0x5819,0x3A63, /* Array index: 0x1FAC */ 0x581B,0x3A6C, /* Array index: 0x1FAC */ 0x581C,0x3A6B, /* Array index: 0x1FAC */ 0x581E,0x3A64, /* Array index: 0x1FAC */ 0x5823,0x3A66, /* Array index: 0x1FAC */ 0x5848,0x3A69, /* Array index: 0x1FAC */ 0x5849,0x422E, /* Array index: 0x1FAC */ 0x5853,0x4229, /* Array index: 0x1FAC */ 0x5855,0x4230, /* Array index: 0x1FAC */ 0x5859,0x4233, /* Array index: 0x1FAC */ 0x585B,0x4235, /* Array index: 0x1FAC */ 0x585D,0x4232, /* Array index: 0x1FAC */ 0x5868,0x422A, /* Array index: 0x1FAC */ 0x586F,0x422F, /* Array index: 0x1FAC */ 0x5871,0x4238, /* Array index: 0x1FAC */ 0x5874,0x4944, /* Array index: 0x1FAC */ 0x5876,0x494A, /* Array index: 0x1FAC */ 0x587F,0x4943, /* Array index: 0x1FAC */ 0x5881,0x4942, /* Array index: 0x1FAC */ 0x5882,0x494B, /* Array index: 0x1FAC */ 0x5894,0x494E, /* Array index: 0x1FAC */ 0x5898,0x4940, /* Array index: 0x1FAC */ 0x589D,0x4F72, /* Array index: 0x1FAC */ 0x58A0,0x4F74, /* Array index: 0x1FAC */ 0x58A1,0x4F79, /* Array index: 0x1FAC */ 0x58A3,0x4F75, /* Array index: 0x1FAC */ 0x58A5,0x4F78, /* Array index: 0x1FAC */ 0x58AB,0x4F71, /* Array index: 0x1FAC */ 0x58AC,0x4F77, /* Array index: 0x1FAC */ 0x58AF,0x4F76, /* Array index: 0x1FAC */ 0x58B1,0x4F73, /* Array index: 0x1FAC */ 0x58BA,0x5657, /* Array index: 0x1FAC */ 0x58BC,0x5659, /* Array index: 0x1FAC */ 0x58BD,0x5654, /* Array index: 0x1FAC */ 0x58BF,0x5656, /* Array index: 0x1FAC */ 0x58C2,0x5658, /* Array index: 0x1FAC */ 0x58C6,0x565A, /* Array index: 0x1FAC */ 0x58C8,0x5653, /* Array index: 0x1FAC */ 0x58C9,0x5655, /* Array index: 0x1FAC */ 0x58CF,0x5C58, /* Array index: 0x1FAC */ 0x58D2,0x5C59, /* Array index: 0x1FAC */ 0x58D4,0x5C57, /* Array index: 0x1FAC */ 0x58D6,0x5C56, /* Array index: 0x1FAC */ 0x58DA,0x6542, /* Array index: 0x1FAC */ 0x58DB,0x6544, /* Array index: 0x1FAC */ 0x58DD,0x6543, /* Array index: 0x1FAC */ 0x58E3,0x686E, /* Array index: 0x1FAC */ 0x58E7,0x6F22, /* Array index: 0x1FAC */ 0x58E8,0x6F21, /* Array index: 0x1FAC */ 0x58F4,0x2960, /* Array index: 0x1FAC */ 0x58FC,0x4239, /* Array index: 0x1FAC */ 0x58FE,0x4950, /* Array index: 0x1FAC */ 0x58FF,0x4F7A, /* Array index: 0x1FAC */ 0x5903,0x213A, /* Array index: 0x1FAC */ 0x5906,0x2350, /* Array index: 0x1FAC */ 0x5912,0x6545, /* Array index: 0x1FAC */ 0x5917,0x2151, /* Array index: 0x1FAC */ 0x592C,0x213B, /* Array index: 0x1FAC */ 0x592F,0x2152, /* Array index: 0x1FAC */ 0x593C,0x222B, /* Array index: 0x1FAC */ 0x5940,0x2351, /* Array index: 0x1FAC */ 0x5945,0x2624, /* Array index: 0x1FAC */ 0x594A,0x2E5C, /* Array index: 0x1FAC */ 0x5953,0x2962, /* Array index: 0x1FAC */ 0x595C,0x3450, /* Array index: 0x1FAC */ 0x5961,0x3A76, /* Array index: 0x1FAC */ 0x596B,0x4951, /* Array index: 0x1FAC */ 0x5977,0x2231, /* Array index: 0x1FAC */ 0x5985,0x222E, /* Array index: 0x1FAC */ 0x5997,0x2355, /* Array index: 0x1FAC */ 0x5998,0x2353, /* Array index: 0x1FAC */ 0x59A6,0x2352, /* Array index: 0x1FAC */ 0x59A7,0x235A, /* Array index: 0x1FAC */ 0x59BA,0x2626, /* Array index: 0x1FAC */ 0x59BC,0x262D, /* Array index: 0x1FAC */ 0x59BD,0x2631, /* Array index: 0x1FAC */ 0x59C0,0x2632, /* Array index: 0x1FAC */ 0x59C1,0x262B, /* Array index: 0x1FAC */ 0x59C3,0x262E, /* Array index: 0x1FAC */ 0x59C7,0x2635, /* Array index: 0x1FAC */ 0x59C8,0x2633, /* Array index: 0x1FAC */ 0x59CC,0x262A, /* Array index: 0x1FAC */ 0x59CE,0x2628, /* Array index: 0x1FAC */ 0x59CF,0x2627, /* Array index: 0x1FAC */ 0x59D6,0x262F, /* Array index: 0x1FAC */ 0x59DB,0x2970, /* Array index: 0x1FAC */ 0x59E4,0x296D, /* Array index: 0x1FAC */ 0x59E9,0x2971, /* Array index: 0x1FAC */ 0x5A0A,0x2E64, /* Array index: 0x1FAC */ 0x5A0F,0x2E62, /* Array index: 0x1FAC */ 0x5A1E,0x2E65, /* Array index: 0x1FAC */ 0x5A2D,0x2E5F, /* Array index: 0x1FAC */ 0x5A2E,0x2E60, /* Array index: 0x1FAC */ 0x5A33,0x2E66, /* Array index: 0x1FAC */ 0x5A3E,0x3467, /* Array index: 0x1FAC */ 0x5A64,0x345E, /* Array index: 0x1FAC */ 0x5A65,0x345B, /* Array index: 0x1FAC */ 0x5A67,0x3454, /* Array index: 0x1FAC */ 0x5A69,0x346C, /* Array index: 0x1FAC */ 0x5A6C,0x345C, /* Array index: 0x1FAC */ 0x5A6D,0x3458, /* Array index: 0x1FAC */ 0x5A70,0x346B, /* Array index: 0x1FAC */ 0x5A83,0x3B2A, /* Array index: 0x1FAC */ 0x5A84,0x3B27, /* Array index: 0x1FAC */ 0x5AA2,0x3A7B, /* Array index: 0x1FAC */ 0x5AA5,0x3B22, /* Array index: 0x1FAC */ 0x5AA6,0x3A7E, /* Array index: 0x1FAC */ 0x5AA9,0x3B2C, /* Array index: 0x1FAC */ 0x5ABF,0x4242, /* Array index: 0x1FAC */ 0x5AC0,0x4247, /* Array index: 0x1FAC */ 0x5AD5,0x4955, /* Array index: 0x1FAC */ 0x5AE5,0x4954, /* Array index: 0x1FAC */ 0x5AFD,0x4F7D, /* Array index: 0x1FAC */ 0x5B0F,0x5029, /* Array index: 0x1FAC */ 0x5B10,0x5661, /* Array index: 0x1FAC */ 0x5B1E,0x5666, /* Array index: 0x1FAC */ 0x5B20,0x5665, /* Array index: 0x1FAC */ 0x5B21,0x565E, /* Array index: 0x1FAC */ 0x5B32,0x5C5C, /* Array index: 0x1FAC */ 0x5B45,0x686F, /* Array index: 0x1FAC */ 0x5B56,0x2233, /* Array index: 0x1FAC */ 0x5B62,0x2636, /* Array index: 0x1FAC */ 0x5B65,0x2637, /* Array index: 0x1FAC */ 0x5B6C,0x2E67, /* Array index: 0x1FAC */ 0x5B6E,0x3473, /* Array index: 0x1FAC */ 0x5B72,0x3472, /* Array index: 0x1FAC */ 0x5B77,0x4964, /* Array index: 0x1FAC */ 0x5B7B,0x5C63, /* Array index: 0x1FAC */ 0x5B81,0x2153, /* Array index: 0x1FAC */ 0x5B84,0x2154, /* Array index: 0x1FAC */ 0x5B8E,0x235C, /* Array index: 0x1FAC */ 0x5B92,0x235D, /* Array index: 0x1FAC */ 0x5B93,0x2638, /* Array index: 0x1FAC */ 0x5B95,0x2639, /* Array index: 0x1FAC */ 0x5BA7,0x2E68, /* Array index: 0x1FAC */ 0x5BA8,0x2978, /* Array index: 0x1FAC */ 0x5BAC,0x2E6A, /* Array index: 0x1FAC */ 0x5BAD,0x2E69, /* Array index: 0x1FAC */ 0x5BC0,0x3475, /* Array index: 0x1FAC */ 0x5BC1,0x3474, /* Array index: 0x1FAC */ 0x5BD1,0x3B38, /* Array index: 0x1FAC */ 0x5BD4,0x3B37, /* Array index: 0x1FAC */ 0x5BD6,0x424E, /* Array index: 0x1FAC */ 0x5BD8,0x424F, /* Array index: 0x1FAC */ 0x5BD9,0x4250, /* Array index: 0x1FAC */ 0x5BE0,0x4965, /* Array index: 0x1FAC */ 0x5BE3,0x4966, /* Array index: 0x1FAC */ 0x5BEA,0x3B34, /* Array index: 0x1FAC */ 0x5BEF,0x5667, /* Array index: 0x1FAC */ 0x5BF1,0x5C64, /* Array index: 0x1FAC */ 0x5BF2,0x5C65, /* Array index: 0x1FAC */ 0x5C03,0x2E6B, /* Array index: 0x1FAC */ 0x5C0C,0x3B3B, /* Array index: 0x1FAC */ 0x5C10,0x213C, /* Array index: 0x1FAC */ 0x5C12,0x2155, /* Array index: 0x1FAC */ 0x5C15,0x2234, /* Array index: 0x1FAC */ 0x5C1F,0x4251, /* Array index: 0x1FAC */ 0x5C25,0x2235, /* Array index: 0x1FAC */ 0x5C28,0x235E, /* Array index: 0x1FAC */ 0x5C2A,0x235F, /* Array index: 0x1FAC */ 0x5C30,0x3B3C, /* Array index: 0x1FAC */ 0x5C33,0x4252, /* Array index: 0x1FAC */ 0x5C3B,0x2156, /* Array index: 0x1FAC */ 0x5C44,0x263A, /* Array index: 0x1FAC */ 0x5C47,0x263B, /* Array index: 0x1FAC */ 0x5C4C,0x2979, /* Array index: 0x1FAC */ 0x5C54,0x2E6D, /* Array index: 0x1FAC */ 0x5C56,0x2E6C, /* Array index: 0x1FAC */ 0x5C59,0x3476, /* Array index: 0x1FAC */ 0x5C63,0x4967, /* Array index: 0x1FAC */ 0x5C67,0x502A, /* Array index: 0x1FAC */ 0x5C69,0x614E, /* Array index: 0x1FAC */ 0x5C6A,0x614F, /* Array index: 0x1FAC */ 0x5C6D,0x7036, /* Array index: 0x1FAC */ 0x5C6E,0x212B, /* Array index: 0x1FAC */ 0x5C73,0x2158, /* Array index: 0x1FAC */ 0x5C74,0x2157, /* Array index: 0x1FAC */ 0x5C9D,0x2649, /* Array index: 0x1FAC */ 0x5CB5,0x263F, /* Array index: 0x1FAC */ 0x5CB6,0x264B, /* Array index: 0x1FAC */ 0x5CEC,0x2E6E, /* Array index: 0x1FAC */ 0x5CEE,0x2E70, /* Array index: 0x1FAC */ 0x5CF1,0x2E71, /* Array index: 0x1FAC */ 0x5CFF,0x2E6F, /* Array index: 0x1FAC */ 0x5D00,0x2E73, /* Array index: 0x1FAC */ 0x5D12,0x3525, /* Array index: 0x1FAC */ 0x5D1A,0x347A, /* Array index: 0x1FAC */ 0x5D23,0x3526, /* Array index: 0x1FAC */ 0x5D25,0x3522, /* Array index: 0x1FAC */ 0x5D26,0x3521, /* Array index: 0x1FAC */ 0x5D28,0x347D, /* Array index: 0x1FAC */ 0x5D4E,0x3B45, /* Array index: 0x1FAC */ 0x5D51,0x3B44, /* Array index: 0x1FAC */ 0x5D52,0x3B49, /* Array index: 0x1FAC */ 0x5D55,0x3B46, /* Array index: 0x1FAC */ 0x5D59,0x3B4C, /* Array index: 0x1FAC */ 0x5D5E,0x4259, /* Array index: 0x1FAC */ 0x5D62,0x425C, /* Array index: 0x1FAC */ 0x5D63,0x4254, /* Array index: 0x1FAC */ 0x5D65,0x4256, /* Array index: 0x1FAC */ 0x5D67,0x425B, /* Array index: 0x1FAC */ 0x5D68,0x425A, /* Array index: 0x1FAC */ 0x5D6B,0x3B3F, /* Array index: 0x1FAC */ 0x5D6C,0x4258, /* Array index: 0x1FAC */ 0x5D71,0x4253, /* Array index: 0x1FAC */ 0x5D72,0x4257, /* Array index: 0x1FAC */ 0x5D77,0x496E, /* Array index: 0x1FAC */ 0x5D8D,0x4974, /* Array index: 0x1FAC */ 0x5D92,0x502E, /* Array index: 0x1FAC */ 0x5D93,0x5030, /* Array index: 0x1FAC */ 0x5D95,0x5031, /* Array index: 0x1FAC */ 0x5D97,0x502C, /* Array index: 0x1FAC */ 0x5D99,0x502B, /* Array index: 0x1FAC */ 0x5D9A,0x5035, /* Array index: 0x1FAC */ 0x5DC0,0x6150, /* Array index: 0x1FAC */ 0x5DC2,0x643E, /* Array index: 0x1FAC */ 0x5DC3,0x6549, /* Array index: 0x1FAC */ 0x5DC6,0x6870, /* Array index: 0x1FAC */ 0x5DC7,0x6871, /* Array index: 0x1FAC */ 0x5DCB,0x6B57, /* Array index: 0x1FAC */ 0x5DCF,0x6B58, /* Array index: 0x1FAC */ 0x5DD1,0x6D4C, /* Array index: 0x1FAC */ 0x5DD5,0x6D4B, /* Array index: 0x1FAC */ 0x5DD8,0x6F25, /* Array index: 0x1FAC */ 0x5DDF,0x223A, /* Array index: 0x1FAC */ 0x5DE0,0x236A, /* Array index: 0x1FAC */ 0x5DF0,0x425D, /* Array index: 0x1FAC */ 0x5DF9,0x2A30, /* Array index: 0x1FAC */ 0x5DFF,0x213D, /* Array index: 0x1FAC */ 0x5E04,0x2159, /* Array index: 0x1FAC */ 0x5E0A,0x236B, /* Array index: 0x1FAC */ 0x5E0E,0x236C, /* Array index: 0x1FAC */ 0x5E14,0x264F, /* Array index: 0x1FAC */ 0x5E17,0x264E, /* Array index: 0x1FAC */ 0x5E19,0x2650, /* Array index: 0x1FAC */ 0x5E28,0x2E76, /* Array index: 0x1FAC */ 0x5E29,0x2E75, /* Array index: 0x1FAC */ 0x5E34,0x352A, /* Array index: 0x1FAC */ 0x5E3E,0x3529, /* Array index: 0x1FAC */ 0x5E41,0x3B57, /* Array index: 0x1FAC */ 0x5E44,0x3B56, /* Array index: 0x1FAC */ 0x5E53,0x4979, /* Array index: 0x1FAC */ 0x5E58,0x4977, /* Array index: 0x1FAC */ 0x5E59,0x4978, /* Array index: 0x1FAC */ 0x5E5C,0x503A, /* Array index: 0x1FAC */ 0x5E5D,0x5038, /* Array index: 0x1FAC */ 0x5E60,0x5039, /* Array index: 0x1FAC */ 0x5E75,0x223B, /* Array index: 0x1FAC */ 0x5E80,0x215A, /* Array index: 0x1FAC */ 0x5E82,0x215B, /* Array index: 0x1FAC */ 0x5E84,0x223C, /* Array index: 0x1FAC */ 0x5E9B,0x2A39, /* Array index: 0x1FAC */ 0x5EA8,0x2E77, /* Array index: 0x1FAC */ 0x5EAA,0x2E79, /* Array index: 0x1FAC */ 0x5EAC,0x2E7A, /* Array index: 0x1FAC */ 0x5EB9,0x352D, /* Array index: 0x1FAC */ 0x5ECB,0x4266, /* Array index: 0x1FAC */ 0x5ECC,0x4264, /* Array index: 0x1FAC */ 0x5ECE,0x497D, /* Array index: 0x1FAC */ 0x5EE1,0x503E, /* Array index: 0x1FAC */ 0x5F02,0x223D, /* Array index: 0x1FAC */ 0x5F05,0x2372, /* Array index: 0x1FAC */ 0x5F07,0x2A3C, /* Array index: 0x1FAC */ 0x5F1A,0x223E, /* Array index: 0x1FAC */ 0x5F1D,0x2373, /* Array index: 0x1FAC */ 0x5F28,0x2651, /* Array index: 0x1FAC */ 0x5F2E,0x2A3D, /* Array index: 0x1FAC */ 0x5F30,0x2E7C, /* Array index: 0x1FAC */ 0x5F33,0x2E7B, /* Array index: 0x1FAC */ 0x5F36,0x3530, /* Array index: 0x1FAC */ 0x5F38,0x3531, /* Array index: 0x1FAC */ 0x5F40,0x4268, /* Array index: 0x1FAC */ 0x5F43,0x4A26, /* Array index: 0x1FAC */ 0x5F44,0x4A25, /* Array index: 0x1FAC */ 0x5F49,0x503F, /* Array index: 0x1FAC */ 0x5F4B,0x567E, /* Array index: 0x1FAC */ 0x5F4F,0x6F27, /* Array index: 0x1FAC */ 0x5F54,0x2655, /* Array index: 0x1FAC */ 0x5F56,0x2A3E, /* Array index: 0x1FAC */ 0x5F58,0x3B58, /* Array index: 0x1FAC */ 0x5F67,0x2E7D, /* Array index: 0x1FAC */ 0x5F6F,0x4A27, /* Array index: 0x1FAC */ 0x5F73,0x212C, /* Array index: 0x1FAC */ 0x5F74,0x223F, /* Array index: 0x1FAC */ 0x5F76,0x2375, /* Array index: 0x1FAC */ 0x5F78,0x2374, /* Array index: 0x1FAC */ 0x5F7D,0x2658, /* Array index: 0x1FAC */ 0x5F7E,0x2657, /* Array index: 0x1FAC */ 0x5F82,0x2656, /* Array index: 0x1FAC */ 0x5F86,0x2A3F, /* Array index: 0x1FAC */ 0x5F96,0x3533, /* Array index: 0x1FAC */ 0x5F9B,0x3532, /* Array index: 0x1FAC */ 0x5F9F,0x3534, /* Array index: 0x1FAC */ 0x5FA5,0x3B5A, /* Array index: 0x1FAC */ 0x5FA6,0x3B59, /* Array index: 0x1FAC */ 0x5FAB,0x3B5B, /* Array index: 0x1FAC */ 0x5FAD,0x426A, /* Array index: 0x1FAC */ 0x5FAF,0x4269, /* Array index: 0x1FAC */ 0x5FB2,0x5040, /* Array index: 0x1FAC */ 0x5FB6,0x4A28, /* Array index: 0x1FAC */ 0x5FC9,0x215C, /* Array index: 0x1FAC */ 0x5FDE,0x2659, /* Array index: 0x1FAC */ 0x5FE8,0x237A, /* Array index: 0x1FAC */ 0x5FF3,0x237C, /* Array index: 0x1FAC */ 0x5FF4,0x2427, /* Array index: 0x1FAC */ 0x5FF7,0x2424, /* Array index: 0x1FAC */ 0x5FFA,0x2422, /* Array index: 0x1FAC */ 0x5FFB,0x2425, /* Array index: 0x1FAC */ 0x6000,0x2426, /* Array index: 0x1FAC */ 0x6017,0x2662, /* Array index: 0x1FAC */ 0x6019,0x265D, /* Array index: 0x1FAC */ 0x601A,0x2664, /* Array index: 0x1FAC */ 0x601C,0x266F, /* Array index: 0x1FAC */ 0x601E,0x2665, /* Array index: 0x1FAC */ 0x6022,0x2667, /* Array index: 0x1FAC */ 0x6024,0x2A4E, /* Array index: 0x1FAC */ 0x6026,0x265C, /* Array index: 0x1FAC */ 0x6037,0x2A40, /* Array index: 0x1FAC */ 0x6039,0x2A41, /* Array index: 0x1FAC */ 0x604C,0x2A4A, /* Array index: 0x1FAC */ 0x6053,0x2A46, /* Array index: 0x1FAC */ 0x6054,0x2A42, /* Array index: 0x1FAC */ 0x6058,0x2A50, /* Array index: 0x1FAC */ 0x6066,0x2A51, /* Array index: 0x1FAC */ 0x6067,0x2F22, /* Array index: 0x1FAC */ 0x606E,0x2A52, /* Array index: 0x1FAC */ 0x6072,0x2A43, /* Array index: 0x1FAC */ 0x6080,0x2F26, /* Array index: 0x1FAC */ 0x6081,0x2F28, /* Array index: 0x1FAC */ 0x6083,0x2F2A, /* Array index: 0x1FAC */ 0x608E,0x2F30, /* Array index: 0x1FAC */ 0x6090,0x3536, /* Array index: 0x1FAC */ 0x6092,0x2F27, /* Array index: 0x1FAC */ 0x6095,0x2F2B, /* Array index: 0x1FAC */ 0x6097,0x2F2D, /* Array index: 0x1FAC */ 0x60A2,0x2F24, /* Array index: 0x1FAC */ 0x60B0,0x3539, /* Array index: 0x1FAC */ 0x60B1,0x3542, /* Array index: 0x1FAC */ 0x60B7,0x3544, /* Array index: 0x1FAC */ 0x60B9,0x3B5D, /* Array index: 0x1FAC */ 0x60BA,0x353A, /* Array index: 0x1FAC */ 0x60D3,0x353B, /* Array index: 0x1FAC */ 0x60D4,0x353C, /* Array index: 0x1FAC */ 0x60D9,0x353F, /* Array index: 0x1FAC */ 0x60DB,0x3543, /* Array index: 0x1FAC */ 0x60DD,0x3540, /* Array index: 0x1FAC */ 0x60E2,0x3B5F, /* Array index: 0x1FAC */ 0x60E4,0x353E, /* Array index: 0x1FAC */ 0x60F2,0x3B63, /* Array index: 0x1FAC */ 0x60F5,0x3B67, /* Array index: 0x1FAC */ 0x60F7,0x426B, /* Array index: 0x1FAC */ 0x60F8,0x3B69, /* Array index: 0x1FAC */ 0x60FC,0x3B6A, /* Array index: 0x1FAC */ 0x60FE,0x3B6B, /* Array index: 0x1FAC */ 0x60FF,0x3B71, /* Array index: 0x1FAC */ 0x610A,0x3B64, /* Array index: 0x1FAC */ 0x610B,0x3B73, /* Array index: 0x1FAC */ 0x6110,0x3B70, /* Array index: 0x1FAC */ 0x6113,0x3B68, /* Array index: 0x1FAC */ 0x6114,0x3B62, /* Array index: 0x1FAC */ 0x6116,0x3B65, /* Array index: 0x1FAC */ 0x6118,0x3B6E, /* Array index: 0x1FAC */ 0x611D,0x3B6F, /* Array index: 0x1FAC */ 0x6132,0x4271, /* Array index: 0x1FAC */ 0x6136,0x4270, /* Array index: 0x1FAC */ 0x613B,0x4A39, /* Array index: 0x1FAC */ 0x6140,0x4277, /* Array index: 0x1FAC */ 0x6141,0x4A2B, /* Array index: 0x1FAC */ 0x6145,0x426F, /* Array index: 0x1FAC */ 0x6146,0x4273, /* Array index: 0x1FAC */ 0x6149,0x426C, /* Array index: 0x1FAC */ 0x614A,0x426D, /* Array index: 0x1FAC */ 0x614F,0x4275, /* Array index: 0x1FAC */ 0x615B,0x4A37, /* Array index: 0x1FAC */ 0x615E,0x4A2C, /* Array index: 0x1FAC */ 0x6161,0x4A3B, /* Array index: 0x1FAC */ 0x6165,0x4A38, /* Array index: 0x1FAC */ 0x6166,0x5051, /* Array index: 0x1FAC */ 0x616A,0x4A3A, /* Array index: 0x1FAC */ 0x616C,0x4A32, /* Array index: 0x1FAC */ 0x6179,0x5043, /* Array index: 0x1FAC */ 0x617A,0x4A36, /* Array index: 0x1FAC */ 0x6180,0x4A33, /* Array index: 0x1FAC */ 0x6183,0x5042, /* Array index: 0x1FAC */ 0x6192,0x504D, /* Array index: 0x1FAC */ 0x6193,0x5049, /* Array index: 0x1FAC */ 0x6196,0x5725, /* Array index: 0x1FAC */ 0x619B,0x5048, /* Array index: 0x1FAC */ 0x619D,0x5723, /* Array index: 0x1FAC */ 0x619F,0x504C, /* Array index: 0x1FAC */ 0x61A1,0x504F, /* Array index: 0x1FAC */ 0x61A2,0x5046, /* Array index: 0x1FAC */ 0x61A8,0x5724, /* Array index: 0x1FAC */ 0x61AA,0x504E, /* Array index: 0x1FAC */ 0x61B8,0x572D, /* Array index: 0x1FAC */ 0x61BA,0x572B, /* Array index: 0x1FAC */ 0x61BC,0x5C6C, /* Array index: 0x1FAC */ 0x61BF,0x572C, /* Array index: 0x1FAC */ 0x61C1,0x5729, /* Array index: 0x1FAC */ 0x61C3,0x5C6A, /* Array index: 0x1FAC */ 0x61C5,0x5726, /* Array index: 0x1FAC */ 0x61C6,0x5728, /* Array index: 0x1FAC */ 0x61CC,0x572A, /* Array index: 0x1FAC */ 0x61D6,0x615B, /* Array index: 0x1FAC */ 0x61D8,0x6153, /* Array index: 0x1FAC */ 0x61F9,0x6876, /* Array index: 0x1FAC */ 0x61FB,0x654C, /* Array index: 0x1FAC */ 0x61FD,0x6B5A, /* Array index: 0x1FAC */ 0x6201,0x6F28, /* Array index: 0x1FAC */ 0x6203,0x6F29, /* Array index: 0x1FAC */ 0x6204,0x6F2A, /* Array index: 0x1FAC */ 0x6207,0x722A, /* Array index: 0x1FAC */ 0x6209,0x215D, /* Array index: 0x1FAC */ 0x6214,0x2670, /* Array index: 0x1FAC */ 0x6219,0x2F31, /* Array index: 0x1FAC */ 0x6220,0x4278, /* Array index: 0x1FAC */ 0x623A,0x2428, /* Array index: 0x1FAC */ 0x623D,0x2671, /* Array index: 0x1FAC */ 0x6242,0x2A53, /* Array index: 0x1FAC */ 0x6243,0x2A54, /* Array index: 0x1FAC */ 0x6246,0x2F32, /* Array index: 0x1FAC */ 0x624A,0x3B74, /* Array index: 0x1FAC */ 0x6250,0x215E, /* Array index: 0x1FAC */ 0x6259,0x2249, /* Array index: 0x1FAC */ 0x625A,0x224B, /* Array index: 0x1FAC */ 0x625C,0x2243, /* Array index: 0x1FAC */ 0x6277,0x2435, /* Array index: 0x1FAC */ 0x627A,0x2431, /* Array index: 0x1FAC */ 0x627B,0x2430, /* Array index: 0x1FAC */ 0x627D,0x2436, /* Array index: 0x1FAC */ 0x6281,0x2433, /* Array index: 0x1FAC */ 0x6283,0x2429, /* Array index: 0x1FAC */ 0x6287,0x242E, /* Array index: 0x1FAC */ 0x6288,0x2434, /* Array index: 0x1FAC */ 0x628C,0x242A, /* Array index: 0x1FAC */ 0x628E,0x242B, /* Array index: 0x1FAC */ 0x628F,0x242C, /* Array index: 0x1FAC */ 0x6294,0x242D, /* Array index: 0x1FAC */ 0x62BB,0x267C, /* Array index: 0x1FAC */ 0x62BE,0x2675, /* Array index: 0x1FAC */ 0x62CA,0x2678, /* Array index: 0x1FAC */ 0x62CF,0x2A55, /* Array index: 0x1FAC */ 0x62D1,0x2674, /* Array index: 0x1FAC */ 0x62EB,0x2A5B, /* Array index: 0x1FAC */ 0x62F0,0x2A67, /* Array index: 0x1FAC */ 0x62F2,0x2F33, /* Array index: 0x1FAC */ 0x6300,0x2A61, /* Array index: 0x1FAC */ 0x6303,0x2A5A, /* Array index: 0x1FAC */ 0x6329,0x2F40, /* Array index: 0x1FAC */ 0x632C,0x2F36, /* Array index: 0x1FAC */ 0x632D,0x2F46, /* Array index: 0x1FAC */ 0x6351,0x2F4A, /* Array index: 0x1FAC */ 0x6365,0x354B, /* Array index: 0x1FAC */ 0x6375,0x355B, /* Array index: 0x1FAC */ 0x6378,0x3563, /* Array index: 0x1FAC */ 0x637C,0x355F, /* Array index: 0x1FAC */ 0x637D,0x354E, /* Array index: 0x1FAC */ 0x6381,0x3565, /* Array index: 0x1FAC */ 0x6382,0x354D, /* Array index: 0x1FAC */ 0x6385,0x3564, /* Array index: 0x1FAC */ 0x6387,0x3557, /* Array index: 0x1FAC */ 0x638A,0x354C, /* Array index: 0x1FAC */ 0x6394,0x3B75, /* Array index: 0x1FAC */ 0x6397,0x3553, /* Array index: 0x1FAC */ 0x63A4,0x3560, /* Array index: 0x1FAC */ 0x63BD,0x354F, /* Array index: 0x1FAC */ 0x63BE,0x3C29, /* Array index: 0x1FAC */ 0x63D3,0x3C2E, /* Array index: 0x1FAC */ 0x63EB,0x4321, /* Array index: 0x1FAC */ 0x6415,0x432A, /* Array index: 0x1FAC */ 0x6418,0x432B, /* Array index: 0x1FAC */ 0x641A,0x4338, /* Array index: 0x1FAC */ 0x641B,0x433E, /* Array index: 0x1FAC */ 0x642B,0x4A40, /* Array index: 0x1FAC */ 0x6433,0x4327, /* Array index: 0x1FAC */ 0x6435,0x4335, /* Array index: 0x1FAC */ 0x6437,0x432D, /* Array index: 0x1FAC */ 0x6439,0x432C, /* Array index: 0x1FAC */ 0x644B,0x4A50, /* Array index: 0x1FAC */ 0x644D,0x4A41, /* Array index: 0x1FAC */ 0x644E,0x4A4C, /* Array index: 0x1FAC */ 0x6450,0x4A53, /* Array index: 0x1FAC */ 0x6453,0x4A51, /* Array index: 0x1FAC */ 0x6465,0x4A59, /* Array index: 0x1FAC */ 0x6466,0x4A4A, /* Array index: 0x1FAC */ 0x6468,0x5061, /* Array index: 0x1FAC */ 0x646B,0x4A57, /* Array index: 0x1FAC */ 0x646C,0x4A56, /* Array index: 0x1FAC */ 0x646E,0x5054, /* Array index: 0x1FAC */ 0x647D,0x4A48, /* Array index: 0x1FAC */ 0x647F,0x4A54, /* Array index: 0x1FAC */ 0x6482,0x4A4D, /* Array index: 0x1FAC */ 0x6485,0x5058, /* Array index: 0x1FAC */ 0x648F,0x505B, /* Array index: 0x1FAC */ 0x64A3,0x505F, /* Array index: 0x1FAC */ 0x64A6,0x4A4B, /* Array index: 0x1FAC */ 0x64B1,0x5062, /* Array index: 0x1FAC */ 0x64BD,0x5734, /* Array index: 0x1FAC */ 0x64C3,0x5736, /* Array index: 0x1FAC */ 0x64C9,0x5733, /* Array index: 0x1FAC */ 0x64CF,0x5732, /* Array index: 0x1FAC */ 0x64D0,0x5731, /* Array index: 0x1FAC */ 0x64D6,0x5730, /* Array index: 0x1FAC */ 0x64D7,0x572F, /* Array index: 0x1FAC */ 0x64D9,0x5739, /* Array index: 0x1FAC */ 0x64DB,0x5737, /* Array index: 0x1FAC */ 0x64E3,0x5C75, /* Array index: 0x1FAC */ 0x64E4,0x5C77, /* Array index: 0x1FAC */ 0x64E8,0x5C78, /* Array index: 0x1FAC */ 0x64E9,0x5C74, /* Array index: 0x1FAC */ 0x64EB,0x5C76, /* Array index: 0x1FAC */ 0x64EF,0x5C73, /* Array index: 0x1FAC */ 0x64F3,0x5738, /* Array index: 0x1FAC */ 0x64F8,0x6160, /* Array index: 0x1FAC */ 0x64FC,0x6163, /* Array index: 0x1FAC */ 0x64FD,0x615F, /* Array index: 0x1FAC */ 0x64FF,0x615D, /* Array index: 0x1FAC */ 0x6501,0x6161, /* Array index: 0x1FAC */ 0x6503,0x6162, /* Array index: 0x1FAC */ 0x6504,0x615E, /* Array index: 0x1FAC */ 0x6507,0x654D, /* Array index: 0x1FAC */ 0x6509,0x6550, /* Array index: 0x1FAC */ 0x651B,0x6B5B, /* Array index: 0x1FAC */ 0x6529,0x6F2B, /* Array index: 0x1FAC */ 0x652D,0x7037, /* Array index: 0x1FAC */ 0x652E,0x707D, /* Array index: 0x1FAC */ 0x6532,0x3C37, /* Array index: 0x1FAC */ 0x6533,0x573A, /* Array index: 0x1FAC */ 0x6537,0x224D, /* Array index: 0x1FAC */ 0x653D,0x2722, /* Array index: 0x1FAC */ 0x6541,0x2A68, /* Array index: 0x1FAC */ 0x6543,0x2A69, /* Array index: 0x1FAC */ 0x6546,0x2F50, /* Array index: 0x1FAC */ 0x654A,0x2F4F, /* Array index: 0x1FAC */ 0x6553,0x3569, /* Array index: 0x1FAC */ 0x655C,0x3C3B, /* Array index: 0x1FAC */ 0x656F,0x4342, /* Array index: 0x1FAC */ 0x6573,0x4A5B, /* Array index: 0x1FAC */ 0x6576,0x5064, /* Array index: 0x1FAC */ 0x6584,0x6553, /* Array index: 0x1FAC */ 0x658C,0x3C3E, /* Array index: 0x1FAC */ 0x6592,0x4343, /* Array index: 0x1FAC */ 0x6594,0x6164, /* Array index: 0x1FAC */ 0x6596,0x6F2D, /* Array index: 0x1FAC */ 0x659D,0x3C3F, /* Array index: 0x1FAC */ 0x659E,0x3C40, /* Array index: 0x1FAC */ 0x65A0,0x4A5C, /* Array index: 0x1FAC */ 0x65A2,0x573D, /* Array index: 0x1FAC */ 0x65A8,0x2723, /* Array index: 0x1FAC */ 0x65AA,0x2A6A, /* Array index: 0x1FAC */ 0x65AE,0x3C41, /* Array index: 0x1FAC */ 0x65B2,0x5068, /* Array index: 0x1FAC */ 0x65B3,0x5069, /* Array index: 0x1FAC */ 0x65B6,0x5C7B, /* Array index: 0x1FAC */ 0x65B8,0x707E, /* Array index: 0x1FAC */ 0x65BB,0x2724, /* Array index: 0x1FAC */ 0x65BF,0x2A6B, /* Array index: 0x1FAC */ 0x65CD,0x356A, /* Array index: 0x1FAC */ 0x65D0,0x3C42, /* Array index: 0x1FAC */ 0x65D2,0x3C43, /* Array index: 0x1FAC */ 0x65D3,0x4344, /* Array index: 0x1FAC */ 0x661C,0x2A70, /* Array index: 0x1FAC */ 0x661D,0x2A76, /* Array index: 0x1FAC */ 0x6621,0x2A6D, /* Array index: 0x1FAC */ 0x6622,0x2A72, /* Array index: 0x1FAC */ 0x6626,0x2A71, /* Array index: 0x1FAC */ 0x662B,0x2A74, /* Array index: 0x1FAC */ 0x662E,0x2A79, /* Array index: 0x1FAC */ 0x6647,0x2F57, /* Array index: 0x1FAC */ 0x664A,0x2F55, /* Array index: 0x1FAC */ 0x6651,0x2F58, /* Array index: 0x1FAC */ 0x6659,0x356E, /* Array index: 0x1FAC */ 0x665B,0x356D, /* Array index: 0x1FAC */ 0x665C,0x356F, /* Array index: 0x1FAC */ 0x665F,0x2F56, /* Array index: 0x1FAC */ 0x6661,0x356C, /* Array index: 0x1FAC */ 0x6662,0x3570, /* Array index: 0x1FAC */ 0x6665,0x356B, /* Array index: 0x1FAC */ 0x666A,0x3C4A, /* Array index: 0x1FAC */ 0x666C,0x3C45, /* Array index: 0x1FAC */ 0x6671,0x3C48, /* Array index: 0x1FAC */ 0x6672,0x3C4B, /* Array index: 0x1FAC */ 0x6680,0x3C47, /* Array index: 0x1FAC */ 0x6686,0x4345, /* Array index: 0x1FAC */ 0x6690,0x4348, /* Array index: 0x1FAC */ 0x6694,0x434C, /* Array index: 0x1FAC */ 0x6695,0x4347, /* Array index: 0x1FAC */ 0x6699,0x434B, /* Array index: 0x1FAC */ 0x66A9,0x506C, /* Array index: 0x1FAC */ 0x66AA,0x506F, /* Array index: 0x1FAC */ 0x66AF,0x5070, /* Array index: 0x1FAC */ 0x66B0,0x506B, /* Array index: 0x1FAC */ 0x66B2,0x506D, /* Array index: 0x1FAC */ 0x66B5,0x506A, /* Array index: 0x1FAC */ 0x66B7,0x506E, /* Array index: 0x1FAC */ 0x66CF,0x5743, /* Array index: 0x1FAC */ 0x66D2,0x5C7D, /* Array index: 0x1FAC */ 0x66D8,0x6168, /* Array index: 0x1FAC */ 0x66DA,0x6166, /* Array index: 0x1FAC */ 0x66DB,0x6167, /* Array index: 0x1FAC */ 0x66DE,0x6556, /* Array index: 0x1FAC */ 0x66E3,0x687D, /* Array index: 0x1FAC */ 0x66E4,0x687E, /* Array index: 0x1FAC */ 0x66E8,0x687C, /* Array index: 0x1FAC */ 0x66EB,0x6F2E, /* Array index: 0x1FAC */ 0x66ED,0x7038, /* Array index: 0x1FAC */ 0x66EE,0x7039, /* Array index: 0x1FAC */ 0x66F6,0x2732, /* Array index: 0x1FAC */ 0x6701,0x3C4C, /* Array index: 0x1FAC */ 0x6704,0x4A61, /* Array index: 0x1FAC */ 0x6705,0x4A60, /* Array index: 0x1FAC */ 0x670A,0x2733, /* Array index: 0x1FAC */ 0x6718,0x3571, /* Array index: 0x1FAC */ 0x6733,0x2257, /* Array index: 0x1FAC */ 0x6745,0x243E, /* Array index: 0x1FAC */ 0x6755,0x2441, /* Array index: 0x1FAC */ 0x6759,0x2440, /* Array index: 0x1FAC */ 0x675A,0x2446, /* Array index: 0x1FAC */ 0x675D,0x2444, /* Array index: 0x1FAC */ 0x676C,0x2735, /* Array index: 0x1FAC */ 0x6774,0x273D, /* Array index: 0x1FAC */ 0x6798,0x273A, /* Array index: 0x1FAC */ 0x6799,0x2743, /* Array index: 0x1FAC */ 0x679F,0x2741, /* Array index: 0x1FAC */ 0x67AE,0x2B3D, /* Array index: 0x1FAC */ 0x67B2,0x2B38, /* Array index: 0x1FAC */ 0x67B3,0x2B2E, /* Array index: 0x1FAC */ 0x67B5,0x2B2C, /* Array index: 0x1FAC */ 0x67D8,0x2B25, /* Array index: 0x1FAC */ 0x67DB,0x2B3F, /* Array index: 0x1FAC */ 0x67DC,0x2B22, /* Array index: 0x1FAC */ 0x67DF,0x2B2B, /* Array index: 0x1FAC */ 0x6812,0x2F6E, /* Array index: 0x1FAC */ 0x6814,0x2F6F, /* Array index: 0x1FAC */ 0x6816,0x2F63, /* Array index: 0x1FAC */ 0x681A,0x2F5C, /* Array index: 0x1FAC */ 0x6825,0x2F75, /* Array index: 0x1FAC */ 0x6826,0x2F70, /* Array index: 0x1FAC */ 0x6828,0x2F71, /* Array index: 0x1FAC */ 0x683A,0x2F74, /* Array index: 0x1FAC */ 0x683B,0x2F60, /* Array index: 0x1FAC */ 0x6844,0x2F6B, /* Array index: 0x1FAC */ 0x6849,0x2F5D, /* Array index: 0x1FAC */ 0x6896,0x362F, /* Array index: 0x1FAC */ 0x689B,0x362E, /* Array index: 0x1FAC */ 0x689C,0x3575, /* Array index: 0x1FAC */ 0x68A0,0x3631, /* Array index: 0x1FAC */ 0x68A3,0x357C, /* Array index: 0x1FAC */ 0x68A4,0x3633, /* Array index: 0x1FAC */ 0x68B2,0x3623, /* Array index: 0x1FAC */ 0x68B4,0x3C63, /* Array index: 0x1FAC */ 0x68CC,0x3C60, /* Array index: 0x1FAC */ 0x68CE,0x3C70, /* Array index: 0x1FAC */ 0x68E1,0x3C5E, /* Array index: 0x1FAC */ 0x68E4,0x3C59, /* Array index: 0x1FAC */ 0x68FC,0x3C6B, /* Array index: 0x1FAC */ 0x68FD,0x3C6A, /* Array index: 0x1FAC */ 0x6925,0x3C7B, /* Array index: 0x1FAC */ 0x692A,0x3C51, /* Array index: 0x1FAC */ 0x692F,0x4378, /* Array index: 0x1FAC */ 0x695C,0x4373, /* Array index: 0x1FAC */ 0x695F,0x4350, /* Array index: 0x1FAC */ 0x6962,0x4353, /* Array index: 0x1FAC */ 0x6965,0x4363, /* Array index: 0x1FAC */ 0x6966,0x434F, /* Array index: 0x1FAC */ 0x6969,0x4367, /* Array index: 0x1FAC */ 0x696A,0x4357, /* Array index: 0x1FAC */ 0x696C,0x4360, /* Array index: 0x1FAC */ 0x6974,0x436E, /* Array index: 0x1FAC */ 0x6976,0x436B, /* Array index: 0x1FAC */ 0x6978,0x4365, /* Array index: 0x1FAC */ 0x697A,0x435C, /* Array index: 0x1FAC */ 0x697B,0x4379, /* Array index: 0x1FAC */ 0x6983,0x452C, /* Array index: 0x1FAC */ 0x699E,0x4B23, /* Array index: 0x1FAC */ 0x69A0,0x4A66, /* Array index: 0x1FAC */ 0x69A1,0x4B22, /* Array index: 0x1FAC */ 0x69A4,0x4A77, /* Array index: 0x1FAC */ 0x69A5,0x4B29, /* Array index: 0x1FAC */ 0x69A7,0x4A6F, /* Array index: 0x1FAC */ 0x69A9,0x4A71, /* Array index: 0x1FAC */ 0x69AA,0x4B21, /* Array index: 0x1FAC */ 0x69AC,0x4A6A, /* Array index: 0x1FAC */ 0x69B9,0x4A79, /* Array index: 0x1FAC */ 0x69C2,0x4B27, /* Array index: 0x1FAC */ 0x69C4,0x4A75, /* Array index: 0x1FAC */ 0x69C6,0x4B2A, /* Array index: 0x1FAC */ 0x69C9,0x4A65, /* Array index: 0x1FAC */ 0x69CA,0x4A7A, /* Array index: 0x1FAC */ 0x69CE,0x4A67, /* Array index: 0x1FAC */ 0x69CF,0x4A7C, /* Array index: 0x1FAC */ 0x69D4,0x4A78, /* Array index: 0x1FAC */ 0x69D9,0x4B24, /* Array index: 0x1FAC */ 0x69EB,0x512E, /* Array index: 0x1FAC */ 0x69EC,0x507B, /* Array index: 0x1FAC */ 0x69EE,0x5124, /* Array index: 0x1FAC */ 0x69F1,0x5077, /* Array index: 0x1FAC */ 0x69F2,0x5123, /* Array index: 0x1FAC */ 0x6A0D,0x512C, /* Array index: 0x1FAC */ 0x6A0F,0x5133, /* Array index: 0x1FAC */ 0x6A1B,0x507D, /* Array index: 0x1FAC */ 0x6A1D,0x507E, /* Array index: 0x1FAC */ 0x6A20,0x5079, /* Array index: 0x1FAC */ 0x6A32,0x574D, /* Array index: 0x1FAC */ 0x6A34,0x5749, /* Array index: 0x1FAC */ 0x6A46,0x5768, /* Array index: 0x1FAC */ 0x6A49,0x574B, /* Array index: 0x1FAC */ 0x6A6D,0x5751, /* Array index: 0x1FAC */ 0x6A6F,0x575F, /* Array index: 0x1FAC */ 0x6A76,0x5752, /* Array index: 0x1FAC */ 0x6A7F,0x5D31, /* Array index: 0x1FAC */ 0x6A81,0x5D22, /* Array index: 0x1FAC */ 0x6A83,0x5D2D, /* Array index: 0x1FAC */ 0x6A85,0x5D34, /* Array index: 0x1FAC */ 0x6A87,0x5D29, /* Array index: 0x1FAC */ 0x6A89,0x5D24, /* Array index: 0x1FAC */ 0x6A9A,0x5D33, /* Array index: 0x1FAC */ 0x6A9B,0x5D26, /* Array index: 0x1FAC */ 0x6A9E,0x5D28, /* Array index: 0x1FAC */ 0x6A9F,0x5D25, /* Array index: 0x1FAC */ 0x6AA1,0x5D27, /* Array index: 0x1FAC */ 0x6AAD,0x6173, /* Array index: 0x1FAC */ 0x6AB4,0x6172, /* Array index: 0x1FAC */ 0x6ABD,0x616B, /* Array index: 0x1FAC */ 0x6AD9,0x655B, /* Array index: 0x1FAC */ 0x6AF8,0x6B5F, /* Array index: 0x1FAC */ 0x6AF9,0x6925, /* Array index: 0x1FAC */ 0x6AFC,0x6B5D, /* Array index: 0x1FAC */ 0x6B00,0x6B60, /* Array index: 0x1FAC */ 0x6B02,0x6B5C, /* Array index: 0x1FAC */ 0x6B03,0x6B5E, /* Array index: 0x1FAC */ 0x6B08,0x6D53, /* Array index: 0x1FAC */ 0x6B09,0x6D54, /* Array index: 0x1FAC */ 0x6B0B,0x6D52, /* Array index: 0x1FAC */ 0x6B1E,0x722B, /* Array index: 0x1FAC */ 0x6B25,0x274A, /* Array index: 0x1FAC */ 0x6B28,0x2B46, /* Array index: 0x1FAC */ 0x6B2C,0x2F77, /* Array index: 0x1FAC */ 0x6B2D,0x2F79, /* Array index: 0x1FAC */ 0x6B2F,0x2F78, /* Array index: 0x1FAC */ 0x6B31,0x2F7A, /* Array index: 0x1FAC */ 0x6B51,0x5139, /* Array index: 0x1FAC */ 0x6B5B,0x5D37, /* Array index: 0x1FAC */ 0x6B5E,0x6174, /* Array index: 0x1FAC */ 0x6B60,0x6564, /* Array index: 0x1FAC */ 0x6B6D,0x2F7C, /* Array index: 0x1FAC */ 0x6B76,0x5259, /* Array index: 0x1FAC */ 0x6B7E,0x274C, /* Array index: 0x1FAC */ 0x6B80,0x274B, /* Array index: 0x1FAC */ 0x6B82,0x2B47, /* Array index: 0x1FAC */ 0x6B84,0x2B48, /* Array index: 0x1FAC */ 0x6B88,0x2F7E, /* Array index: 0x1FAC */ 0x6BB0,0x6565, /* Array index: 0x1FAC */ 0x6BB3,0x213F, /* Array index: 0x1FAC */ 0x6BB6,0x2B49, /* Array index: 0x1FAC */ 0x6BBD,0x3D27, /* Array index: 0x1FAC */ 0x6BD0,0x2448, /* Array index: 0x1FAC */ 0x6BD6,0x2B4A, /* Array index: 0x1FAC */ 0x6BD8,0x2B4B, /* Array index: 0x1FAC */ 0x6BDE,0x274D, /* Array index: 0x1FAC */ 0x6BF0,0x3D28, /* Array index: 0x1FAC */ 0x6BF2,0x3D29, /* Array index: 0x1FAC */ 0x6BF3,0x3D2A, /* Array index: 0x1FAC */ 0x6C1D,0x274E, /* Array index: 0x1FAC */ 0x6C20,0x2B4D, /* Array index: 0x1FAC */ 0x6C21,0x2B4E, /* Array index: 0x1FAC */ 0x6C25,0x3027, /* Array index: 0x1FAC */ 0x6C2A,0x3643, /* Array index: 0x1FAC */ 0x6C30,0x3D2B, /* Array index: 0x1FAC */ 0x6C36,0x2160, /* Array index: 0x1FAC */ 0x6C3B,0x2163, /* Array index: 0x1FAC */ 0x6C3F,0x2162, /* Array index: 0x1FAC */ 0x6C43,0x2161, /* Array index: 0x1FAC */ 0x6C46,0x2259, /* Array index: 0x1FAC */ 0x6C4F,0x225C, /* Array index: 0x1FAC */ 0x6C52,0x225A, /* Array index: 0x1FAC */ 0x6C54,0x225E, /* Array index: 0x1FAC */ 0x6C5C,0x225B, /* Array index: 0x1FAC */ 0x6C78,0x244B, /* Array index: 0x1FAC */ 0x6C7B,0x245C, /* Array index: 0x1FAC */ 0x6C80,0x2765, /* Array index: 0x1FAC */ 0x6C84,0x244E, /* Array index: 0x1FAC */ 0x6C87,0x2456, /* Array index: 0x1FAC */ 0x6C8A,0x2763, /* Array index: 0x1FAC */ 0x6C8B,0x244F, /* Array index: 0x1FAC */ 0x6C8E,0x245D, /* Array index: 0x1FAC */ 0x6C8F,0x2450, /* Array index: 0x1FAC */ 0x6C93,0x274F, /* Array index: 0x1FAC */ 0x6C95,0x2457, /* Array index: 0x1FAC */ 0x6C9A,0x2454, /* Array index: 0x1FAC */ 0x6C9C,0x2458, /* Array index: 0x1FAC */ 0x6C9D,0x2764, /* Array index: 0x1FAC */ 0x6CAD,0x2756, /* Array index: 0x1FAC */ 0x6CB0,0x276B, /* Array index: 0x1FAC */ 0x6CB4,0x2762, /* Array index: 0x1FAC */ 0x6CB6,0x2754, /* Array index: 0x1FAC */ 0x6CB7,0x2758, /* Array index: 0x1FAC */ 0x6CBA,0x275B, /* Array index: 0x1FAC */ 0x6CC0,0x2767, /* Array index: 0x1FAC */ 0x6CC2,0x275A, /* Array index: 0x1FAC */ 0x6CC3,0x275C, /* Array index: 0x1FAC */ 0x6CC6,0x275D, /* Array index: 0x1FAC */ 0x6CC7,0x276A, /* Array index: 0x1FAC */ 0x6CD9,0x2753, /* Array index: 0x1FAC */ 0x6CDA,0x2B57, /* Array index: 0x1FAC */ 0x6CDD,0x2761, /* Array index: 0x1FAC */ 0x6CDE,0x2766, /* Array index: 0x1FAC */ 0x6CE7,0x2757, /* Array index: 0x1FAC */ 0x6CF2,0x275F, /* Array index: 0x1FAC */ 0x6CF9,0x276C, /* Array index: 0x1FAC */ 0x6D1D,0x2B5F, /* Array index: 0x1FAC */ 0x6D1F,0x2B52, /* Array index: 0x1FAC */ 0x6D20,0x2B68, /* Array index: 0x1FAC */ 0x6D22,0x2B6B, /* Array index: 0x1FAC */ 0x6D28,0x2B4F, /* Array index: 0x1FAC */ 0x6D37,0x2B63, /* Array index: 0x1FAC */ 0x6D3A,0x2B5B, /* Array index: 0x1FAC */ 0x6D3C,0x2B53, /* Array index: 0x1FAC */ 0x6D3F,0x2B54, /* Array index: 0x1FAC */ 0x6D40,0x2B66, /* Array index: 0x1FAC */ 0x6D42,0x2B60, /* Array index: 0x1FAC */ 0x6D58,0x302F, /* Array index: 0x1FAC */ 0x6D6D,0x3031, /* Array index: 0x1FAC */ 0x6D6F,0x3032, /* Array index: 0x1FAC */ 0x6D70,0x303C, /* Array index: 0x1FAC */ 0x6D75,0x304B, /* Array index: 0x1FAC */ 0x6D76,0x302B, /* Array index: 0x1FAC */ 0x6D8B,0x3043, /* Array index: 0x1FAC */ 0x6D8D,0x3034, /* Array index: 0x1FAC */ 0x6D97,0x303B, /* Array index: 0x1FAC */ 0x6D98,0x3040, /* Array index: 0x1FAC */ 0x6DAB,0x3645, /* Array index: 0x1FAC */ 0x6DAC,0x3649, /* Array index: 0x1FAC */ 0x6DB3,0x3647, /* Array index: 0x1FAC */ 0x6DB4,0x3646, /* Array index: 0x1FAC */ 0x6DB7,0x364C, /* Array index: 0x1FAC */ 0x6DCD,0x3668, /* Array index: 0x1FAC */ 0x6DE9,0x364A, /* Array index: 0x1FAC */ 0x6DED,0x365C, /* Array index: 0x1FAC */ 0x6DEF,0x3035, /* Array index: 0x1FAC */ 0x6DF0,0x365D, /* Array index: 0x1FAC */ 0x6DF2,0x3664, /* Array index: 0x1FAC */ 0x6DF4,0x3659, /* Array index: 0x1FAC */ 0x6DF6,0x364D, /* Array index: 0x1FAC */ 0x6DFC,0x3D2C, /* Array index: 0x1FAC */ 0x6DFD,0x3666, /* Array index: 0x1FAC */ 0x6E00,0x364F, /* Array index: 0x1FAC */ 0x6E03,0x3D41, /* Array index: 0x1FAC */ 0x6E1C,0x3D3B, /* Array index: 0x1FAC */ 0x6E1F,0x3D2F, /* Array index: 0x1FAC */ 0x6E22,0x3D4D, /* Array index: 0x1FAC */ 0x6E27,0x3D51, /* Array index: 0x1FAC */ 0x6E28,0x3D48, /* Array index: 0x1FAC */ 0x6E2B,0x3D36, /* Array index: 0x1FAC */ 0x6E2E,0x3D42, /* Array index: 0x1FAC */ 0x6E30,0x3D4E, /* Array index: 0x1FAC */ 0x6E31,0x3D47, /* Array index: 0x1FAC */ 0x6E33,0x3D3C, /* Array index: 0x1FAC */ 0x6E35,0x3D59, /* Array index: 0x1FAC */ 0x6E36,0x3D5A, /* Array index: 0x1FAC */ 0x6E6B,0x3D4B, /* Array index: 0x1FAC */ 0x6E71,0x3D4A, /* Array index: 0x1FAC */ 0x6E88,0x3D31, /* Array index: 0x1FAC */ 0x6E97,0x444E, /* Array index: 0x1FAC */ 0x6E99,0x4444, /* Array index: 0x1FAC */ 0x6E9B,0x4429, /* Array index: 0x1FAC */ 0x6EB7,0x443A, /* Array index: 0x1FAC */ 0x6EB9,0x4433, /* Array index: 0x1FAC */ 0x6ED6,0x442A, /* Array index: 0x1FAC */ 0x6ED8,0x4443, /* Array index: 0x1FAC */ 0x6EDC,0x4442, /* Array index: 0x1FAC */ 0x6EEB,0x4B50, /* Array index: 0x1FAC */ 0x6EED,0x4B45, /* Array index: 0x1FAC */ 0x6EEE,0x4B4A, /* Array index: 0x1FAC */ 0x6EF1,0x4B36, /* Array index: 0x1FAC */ 0x6F00,0x515B, /* Array index: 0x1FAC */ 0x6F03,0x4B37, /* Array index: 0x1FAC */ 0x6F12,0x4B44, /* Array index: 0x1FAC */ 0x6F2D,0x4B4B, /* Array index: 0x1FAC */ 0x6F2E,0x4B3C, /* Array index: 0x1FAC */ 0x6F30,0x4B4D, /* Array index: 0x1FAC */ 0x6F40,0x4B4C, /* Array index: 0x1FAC */ 0x6F41,0x5142, /* Array index: 0x1FAC */ 0x6F43,0x4B53, /* Array index: 0x1FAC */ 0x6F5A,0x514E, /* Array index: 0x1FAC */ 0x6F72,0x5154, /* Array index: 0x1FAC */ 0x6F73,0x4B48, /* Array index: 0x1FAC */ 0x6F76,0x5150, /* Array index: 0x1FAC */ 0x6F77,0x5167, /* Array index: 0x1FAC */ 0x6F82,0x5152, /* Array index: 0x1FAC */ 0x6F85,0x514D, /* Array index: 0x1FAC */ 0x6F87,0x5145, /* Array index: 0x1FAC */ 0x6F9E,0x577E, /* Array index: 0x1FAC */ 0x6FA2,0x582C, /* Array index: 0x1FAC */ 0x6FA3,0x5776, /* Array index: 0x1FAC */ 0x6FA5,0x5824, /* Array index: 0x1FAC */ 0x6FB8,0x582B, /* Array index: 0x1FAC */ 0x6FBA,0x5826, /* Array index: 0x1FAC */ 0x6FBC,0x5778, /* Array index: 0x1FAC */ 0x6FBD,0x577D, /* Array index: 0x1FAC */ 0x6FBF,0x582A, /* Array index: 0x1FAC */ 0x6FD4,0x5D3D, /* Array index: 0x1FAC */ 0x6FED,0x5D40, /* Array index: 0x1FAC */ 0x6FF2,0x5D44, /* Array index: 0x1FAC */ 0x6FF4,0x5D3C, /* Array index: 0x1FAC */ 0x6FF7,0x6225, /* Array index: 0x1FAC */ 0x7014,0x617C, /* Array index: 0x1FAC */ 0x7016,0x656A, /* Array index: 0x1FAC */ 0x7017,0x6570, /* Array index: 0x1FAC */ 0x7019,0x6567, /* Array index: 0x1FAC */ 0x701C,0x6572, /* Array index: 0x1FAC */ 0x702F,0x692B, /* Array index: 0x1FAC */ 0x7052,0x6D59, /* Array index: 0x1FAC */ 0x7071,0x2261, /* Array index: 0x1FAC */ 0x7074,0x245E, /* Array index: 0x1FAC */ 0x707A,0x245F, /* Array index: 0x1FAC */ 0x7091,0x2776, /* Array index: 0x1FAC */ 0x7093,0x2773, /* Array index: 0x1FAC */ 0x7094,0x2770, /* Array index: 0x1FAC */ 0x7096,0x2777, /* Array index: 0x1FAC */ 0x7098,0x2771, /* Array index: 0x1FAC */ 0x709A,0x2779, /* Array index: 0x1FAC */ 0x709F,0x2B6F, /* Array index: 0x1FAC */ 0x70A1,0x2B73, /* Array index: 0x1FAC */ 0x70A9,0x2B76, /* Array index: 0x1FAC */ 0x70B0,0x2B72, /* Array index: 0x1FAC */ 0x70B1,0x2B71, /* Array index: 0x1FAC */ 0x70B4,0x2B74, /* Array index: 0x1FAC */ 0x70B5,0x2B75, /* Array index: 0x1FAC */ 0x70B7,0x2B6E, /* Array index: 0x1FAC */ 0x70BE,0x2B70, /* Array index: 0x1FAC */ 0x70CB,0x3051, /* Array index: 0x1FAC */ 0x70D7,0x3054, /* Array index: 0x1FAC */ 0x70F0,0x3671, /* Array index: 0x1FAC */ 0x7113,0x3678, /* Array index: 0x1FAC */ 0x7117,0x366E, /* Array index: 0x1FAC */ 0x711B,0x3D69, /* Array index: 0x1FAC */ 0x7128,0x3D67, /* Array index: 0x1FAC */ 0x713A,0x3D68, /* Array index: 0x1FAC */ 0x7147,0x4451, /* Array index: 0x1FAC */ 0x714B,0x4460, /* Array index: 0x1FAC */ 0x714D,0x4466, /* Array index: 0x1FAC */ 0x7158,0x445E, /* Array index: 0x1FAC */ 0x715A,0x4467, /* Array index: 0x1FAC */ 0x716A,0x445B, /* Array index: 0x1FAC */ 0x7170,0x4461, /* Array index: 0x1FAC */ 0x7172,0x4459, /* Array index: 0x1FAC */ 0x7178,0x445A, /* Array index: 0x1FAC */ 0x717B,0x4B67, /* Array index: 0x1FAC */ 0x718F,0x4B66, /* Array index: 0x1FAC */ 0x7190,0x4B61, /* Array index: 0x1FAC */ 0x7197,0x4B6A, /* Array index: 0x1FAC */ 0x71B8,0x5836, /* Array index: 0x1FAC */ 0x71CF,0x583E, /* Array index: 0x1FAC */ 0x71D4,0x583B, /* Array index: 0x1FAC */ 0x71D6,0x5837, /* Array index: 0x1FAC */ 0x71D8,0x5840, /* Array index: 0x1FAC */ 0x71DA,0x5843, /* Array index: 0x1FAC */ 0x71DB,0x5844, /* Array index: 0x1FAC */ 0x71E1,0x5D48, /* Array index: 0x1FAC */ 0x71E2,0x5D4E, /* Array index: 0x1FAC */ 0x71E4,0x5D4C, /* Array index: 0x1FAC */ 0x71E8,0x5D4A, /* Array index: 0x1FAC */ 0x71F9,0x6229, /* Array index: 0x1FAC */ 0x71FD,0x622B, /* Array index: 0x1FAC */ 0x720A,0x6574, /* Array index: 0x1FAC */ 0x720C,0x6573, /* Array index: 0x1FAC */ 0x7213,0x6939, /* Array index: 0x1FAC */ 0x7214,0x693A, /* Array index: 0x1FAC */ 0x723F,0x2142, /* Array index: 0x1FAC */ 0x7241,0x2B77, /* Array index: 0x1FAC */ 0x7242,0x3060, /* Array index: 0x1FAC */ 0x7244,0x4B6B, /* Array index: 0x1FAC */ 0x724F,0x4468, /* Array index: 0x1FAC */ 0x7253,0x4B6C, /* Array index: 0x1FAC */ 0x725A,0x3D6B, /* Array index: 0x1FAC */ 0x725E,0x2262, /* Array index: 0x1FAC */ 0x7263,0x2460, /* Array index: 0x1FAC */ 0x726A,0x277B, /* Array index: 0x1FAC */ 0x726C,0x2B7A, /* Array index: 0x1FAC */ 0x726E,0x2B7D, /* Array index: 0x1FAC */ 0x7270,0x2B7B, /* Array index: 0x1FAC */ 0x7273,0x2B7C, /* Array index: 0x1FAC */ 0x72AE,0x2164, /* Array index: 0x1FAC */ 0x72B0,0x2165, /* Array index: 0x1FAC */ 0x72B4,0x2263, /* Array index: 0x1FAC */ 0x72B5,0x2264, /* Array index: 0x1FAC */ 0x72BA,0x2466, /* Array index: 0x1FAC */ 0x72BD,0x2462, /* Array index: 0x1FAC */ 0x72BF,0x2461, /* Array index: 0x1FAC */ 0x72C1,0x2465, /* Array index: 0x1FAC */ 0x72C3,0x2463, /* Array index: 0x1FAC */ 0x72D1,0x2827, /* Array index: 0x1FAC */ 0x72D2,0x2823, /* Array index: 0x1FAC */ 0x72D4,0x2824, /* Array index: 0x1FAC */ 0x72D6,0x277C, /* Array index: 0x1FAC */ 0x72D8,0x277E, /* Array index: 0x1FAC */ 0x72DA,0x2825, /* Array index: 0x1FAC */ 0x72DC,0x2822, /* Array index: 0x1FAC */ 0x72DF,0x2C24, /* Array index: 0x1FAC */ 0x72E3,0x2C27, /* Array index: 0x1FAC */ 0x72E4,0x2C21, /* Array index: 0x1FAC */ 0x72E6,0x2C26, /* Array index: 0x1FAC */ 0x72E8,0x2C22, /* Array index: 0x1FAC */ 0x72EA,0x2C25, /* Array index: 0x1FAC */ 0x72EB,0x2C23, /* Array index: 0x1FAC */ 0x72F3,0x3069, /* Array index: 0x1FAC */ 0x72F4,0x3066, /* Array index: 0x1FAC */ 0x72F6,0x3068, /* Array index: 0x1FAC */ 0x730F,0x372D, /* Array index: 0x1FAC */ 0x7311,0x3728, /* Array index: 0x1FAC */ 0x7312,0x3D71, /* Array index: 0x1FAC */ 0x7317,0x3726, /* Array index: 0x1FAC */ 0x7318,0x3729, /* Array index: 0x1FAC */ 0x731D,0x3725, /* Array index: 0x1FAC */ 0x731E,0x372E, /* Array index: 0x1FAC */ 0x7322,0x3D74, /* Array index: 0x1FAC */ 0x7323,0x3D7B, /* Array index: 0x1FAC */ 0x7326,0x3D7A, /* Array index: 0x1FAC */ 0x7327,0x3D77, /* Array index: 0x1FAC */ 0x732D,0x3D79, /* Array index: 0x1FAC */ 0x7340,0x4472, /* Array index: 0x1FAC */ 0x7342,0x446F, /* Array index: 0x1FAC */ 0x7343,0x4B70, /* Array index: 0x1FAC */ 0x7351,0x4B72, /* Array index: 0x1FAC */ 0x7352,0x517E, /* Array index: 0x1FAC */ 0x7373,0x5D4F, /* Array index: 0x1FAC */ 0x7376,0x622C, /* Array index: 0x1FAC */ 0x7388,0x372F, /* Array index: 0x1FAC */ 0x738A,0x2166, /* Array index: 0x1FAC */ 0x738E,0x2265, /* Array index: 0x1FAC */ 0x739D,0x282F, /* Array index: 0x1FAC */ 0x73AC,0x282E, /* Array index: 0x1FAC */ 0x73AD,0x282A, /* Array index: 0x1FAC */ 0x73BC,0x3070, /* Array index: 0x1FAC */ 0x73BE,0x2C34, /* Array index: 0x1FAC */ 0x73BF,0x2C32, /* Array index: 0x1FAC */ 0x73E3,0x3072, /* Array index: 0x1FAC */ 0x7404,0x3733, /* Array index: 0x1FAC */ 0x7407,0x3736, /* Array index: 0x1FAC */ 0x7408,0x373E, /* Array index: 0x1FAC */ 0x740B,0x373C, /* Array index: 0x1FAC */ 0x740C,0x373B, /* Array index: 0x1FAC */ 0x7416,0x3E24, /* Array index: 0x1FAC */ 0x741A,0x3E25, /* Array index: 0x1FAC */ 0x741D,0x3E2B, /* Array index: 0x1FAC */ 0x7440,0x447B, /* Array index: 0x1FAC */ 0x7442,0x4521, /* Array index: 0x1FAC */ 0x7444,0x4475, /* Array index: 0x1FAC */ 0x7446,0x4522, /* Array index: 0x1FAC */ 0x7457,0x447A, /* Array index: 0x1FAC */ 0x7462,0x4B74, /* Array index: 0x1FAC */ 0x7467,0x4B79, /* Array index: 0x1FAC */ 0x746E,0x4B7A, /* Array index: 0x1FAC */ 0x7479,0x5233, /* Array index: 0x1FAC */ 0x747C,0x5232, /* Array index: 0x1FAC */ 0x747D,0x522F, /* Array index: 0x1FAC */ 0x747F,0x584E, /* Array index: 0x1FAC */ 0x7481,0x522E, /* Array index: 0x1FAC */ 0x7490,0x5D55, /* Array index: 0x1FAC */ 0x7492,0x5852, /* Array index: 0x1FAC */ 0x7494,0x5851, /* Array index: 0x1FAC */ 0x7495,0x5853, /* Array index: 0x1FAC */ 0x7497,0x5D52, /* Array index: 0x1FAC */ 0x749A,0x584F, /* Array index: 0x1FAC */ 0x74A0,0x5850, /* Array index: 0x1FAC */ 0x74A1,0x5854, /* Array index: 0x1FAC */ 0x74A5,0x5D59, /* Array index: 0x1FAC */ 0x74AA,0x5D56, /* Array index: 0x1FAC */ 0x74AB,0x5D54, /* Array index: 0x1FAC */ 0x74AD,0x5D57, /* Array index: 0x1FAC */ 0x74AF,0x5D5A, /* Array index: 0x1FAC */ 0x74CB,0x657D, /* Array index: 0x1FAC */ 0x74E5,0x7041, /* Array index: 0x1FAC */ 0x74E8,0x2831, /* Array index: 0x1FAC */ 0x74EC,0x2C39, /* Array index: 0x1FAC */ 0x74EE,0x2C3A, /* Array index: 0x1FAC */ 0x74F4,0x3121, /* Array index: 0x1FAC */ 0x74F5,0x3122, /* Array index: 0x1FAC */ 0x7507,0x5235, /* Array index: 0x1FAC */ 0x7508,0x5234, /* Array index: 0x1FAC */ 0x750B,0x5855, /* Array index: 0x1FAC */ 0x751D,0x4529, /* Array index: 0x1FAC */ 0x7521,0x3123, /* Array index: 0x1FAC */ 0x752A,0x2266, /* Array index: 0x1FAC */ 0x752E,0x2C3B, /* Array index: 0x1FAC */ 0x752F,0x3E30, /* Array index: 0x1FAC */ 0x7539,0x246E, /* Array index: 0x1FAC */ 0x753A,0x246D, /* Array index: 0x1FAC */ 0x7547,0x2C3C, /* Array index: 0x1FAC */ 0x7548,0x2C3D, /* Array index: 0x1FAC */ 0x755B,0x3124, /* Array index: 0x1FAC */ 0x755F,0x3125, /* Array index: 0x1FAC */ 0x7563,0x3740, /* Array index: 0x1FAC */ 0x7564,0x373F, /* Array index: 0x1FAC */ 0x756C,0x3E32, /* Array index: 0x1FAC */ 0x756F,0x3E31, /* Array index: 0x1FAC */ 0x7577,0x452B, /* Array index: 0x1FAC */ 0x7579,0x452A, /* Array index: 0x1FAC */ 0x757D,0x4B7E, /* Array index: 0x1FAC */ 0x757E,0x5236, /* Array index: 0x1FAC */ 0x7580,0x5856, /* Array index: 0x1FAC */ 0x7584,0x5D5F, /* Array index: 0x1FAC */ 0x758C,0x2835, /* Array index: 0x1FAC */ 0x7590,0x4C21, /* Array index: 0x1FAC */ 0x7594,0x246F, /* Array index: 0x1FAC */ 0x7595,0x2470, /* Array index: 0x1FAC */ 0x7598,0x2836, /* Array index: 0x1FAC */ 0x75A7,0x2C3E, /* Array index: 0x1FAC */ 0x75AA,0x2C3F, /* Array index: 0x1FAC */ 0x75B0,0x3126, /* Array index: 0x1FAC */ 0x75B6,0x312C, /* Array index: 0x1FAC */ 0x75BA,0x312D, /* Array index: 0x1FAC */ 0x75BB,0x3128, /* Array index: 0x1FAC */ 0x75C4,0x3129, /* Array index: 0x1FAC */ 0x75D7,0x3E3A, /* Array index: 0x1FAC */ 0x75DA,0x3E34, /* Array index: 0x1FAC */ 0x75DD,0x3E37, /* Array index: 0x1FAC */ 0x75DF,0x3E38, /* Array index: 0x1FAC */ 0x75E1,0x3E35, /* Array index: 0x1FAC */ 0x75E4,0x3E39, /* Array index: 0x1FAC */ 0x75E6,0x3E36, /* Array index: 0x1FAC */ 0x75E7,0x3E33, /* Array index: 0x1FAC */ 0x75ED,0x4538, /* Array index: 0x1FAC */ 0x75EF,0x452D, /* Array index: 0x1FAC */ 0x7603,0x452F, /* Array index: 0x1FAC */ 0x7608,0x4C23, /* Array index: 0x1FAC */ 0x760A,0x4C27, /* Array index: 0x1FAC */ 0x760C,0x4C24, /* Array index: 0x1FAC */ 0x7623,0x523C, /* Array index: 0x1FAC */ 0x7625,0x5237, /* Array index: 0x1FAC */ 0x7628,0x523E, /* Array index: 0x1FAC */ 0x763C,0x585C, /* Array index: 0x1FAC */ 0x763D,0x585A, /* Array index: 0x1FAC */ 0x7643,0x5D60, /* Array index: 0x1FAC */ 0x7650,0x623A, /* Array index: 0x1FAC */ 0x7653,0x623B, /* Array index: 0x1FAC */ 0x7657,0x623C, /* Array index: 0x1FAC */ 0x7659,0x6239, /* Array index: 0x1FAC */ 0x765A,0x623D, /* Array index: 0x1FAC */ 0x765C,0x6237, /* Array index: 0x1FAC */ 0x7660,0x6624, /* Array index: 0x1FAC */ 0x7664,0x6238, /* Array index: 0x1FAC */ 0x766A,0x6B6D, /* Array index: 0x1FAC */ 0x766D,0x6D62, /* Array index: 0x1FAC */ 0x7670,0x6F39, /* Array index: 0x1FAC */ 0x7675,0x723A, /* Array index: 0x1FAC */ 0x7679,0x2C40, /* Array index: 0x1FAC */ 0x767F,0x2267, /* Array index: 0x1FAC */ 0x7681,0x2471, /* Array index: 0x1FAC */ 0x7689,0x3749, /* Array index: 0x1FAC */ 0x768A,0x312E, /* Array index: 0x1FAC */ 0x768F,0x3748, /* Array index: 0x1FAC */ 0x7692,0x3E3C, /* Array index: 0x1FAC */ 0x7695,0x3E3B, /* Array index: 0x1FAC */ 0x76A4,0x5D64, /* Array index: 0x1FAC */ 0x76A6,0x623E, /* Array index: 0x1FAC */ 0x76AA,0x6940, /* Array index: 0x1FAC */ 0x76AB,0x693F, /* Array index: 0x1FAC */ 0x76AD,0x6D63, /* Array index: 0x1FAC */ 0x76AF,0x2837, /* Array index: 0x1FAC */ 0x76B5,0x453C, /* Array index: 0x1FAC */ 0x76B8,0x4C29, /* Array index: 0x1FAC */ 0x76BB,0x5860, /* Array index: 0x1FAC */ 0x76BD,0x623F, /* Array index: 0x1FAC */ 0x76BE,0x6941, /* Array index: 0x1FAC */ 0x76C4,0x2C41, /* Array index: 0x1FAC */ 0x76C9,0x312F, /* Array index: 0x1FAC */ 0x76D3,0x374A, /* Array index: 0x1FAC */ 0x76DA,0x3E3D, /* Array index: 0x1FAC */ 0x76DD,0x453D, /* Array index: 0x1FAC */ 0x76E6,0x5861, /* Array index: 0x1FAC */ 0x76E9,0x5D65, /* Array index: 0x1FAC */ 0x76EC,0x6240, /* Array index: 0x1FAC */ 0x76ED,0x6942, /* Array index: 0x1FAC */ 0x76F0,0x283A, /* Array index: 0x1FAC */ 0x76F1,0x2839, /* Array index: 0x1FAC */ 0x76F3,0x2838, /* Array index: 0x1FAC */ 0x76F5,0x283B, /* Array index: 0x1FAC */ 0x76F7,0x2C47, /* Array index: 0x1FAC */ 0x76FA,0x2C49, /* Array index: 0x1FAC */ 0x76FB,0x2C48, /* Array index: 0x1FAC */ 0x7708,0x2C42, /* Array index: 0x1FAC */ 0x770A,0x2C46, /* Array index: 0x1FAC */ 0x7722,0x313A, /* Array index: 0x1FAC */ 0x7723,0x3135, /* Array index: 0x1FAC */ 0x7725,0x3753, /* Array index: 0x1FAC */ 0x7727,0x313B, /* Array index: 0x1FAC */ 0x772D,0x374D, /* Array index: 0x1FAC */ 0x7739,0x374B, /* Array index: 0x1FAC */ 0x773B,0x3754, /* Array index: 0x1FAC */ 0x773D,0x3752, /* Array index: 0x1FAC */ 0x775F,0x453F, /* Array index: 0x1FAC */ 0x7760,0x4540, /* Array index: 0x1FAC */ 0x7767,0x4545, /* Array index: 0x1FAC */ 0x7769,0x4544, /* Array index: 0x1FAC */ 0x777C,0x4C2B, /* Array index: 0x1FAC */ 0x778D,0x5244, /* Array index: 0x1FAC */ 0x778F,0x5245, /* Array index: 0x1FAC */ 0x7795,0x5869, /* Array index: 0x1FAC */ 0x77A8,0x5D6D, /* Array index: 0x1FAC */ 0x77AB,0x5D67, /* Array index: 0x1FAC */ 0x77BA,0x6242, /* Array index: 0x1FAC */ 0x77C2,0x6241, /* Array index: 0x1FAC */ 0x77C4,0x6627, /* Array index: 0x1FAC */ 0x77D4,0x6F3A, /* Array index: 0x1FAC */ 0x77D5,0x7042, /* Array index: 0x1FAC */ 0x77D8,0x7128, /* Array index: 0x1FAC */ 0x77D9,0x7129, /* Array index: 0x1FAC */ 0x77DE,0x3E47, /* Array index: 0x1FAC */ 0x77E0,0x4549, /* Array index: 0x1FAC */ 0x77E7,0x2C4A, /* Array index: 0x1FAC */ 0x77E8,0x2C4B, /* Array index: 0x1FAC */ 0x77EC,0x3E48, /* Array index: 0x1FAC */ 0x7803,0x2C54, /* Array index: 0x1FAC */ 0x7805,0x2C4F, /* Array index: 0x1FAC */ 0x7806,0x2C4C, /* Array index: 0x1FAC */ 0x7809,0x2C53, /* Array index: 0x1FAC */ 0x7845,0x375D, /* Array index: 0x1FAC */ 0x7850,0x375E, /* Array index: 0x1FAC */ 0x7852,0x3757, /* Array index: 0x1FAC */ 0x785C,0x3E4C, /* Array index: 0x1FAC */ 0x785E,0x3E54, /* Array index: 0x1FAC */ 0x7860,0x3E49, /* Array index: 0x1FAC */ 0x7862,0x3E55, /* Array index: 0x1FAC */ 0x7879,0x4554, /* Array index: 0x1FAC */ 0x787B,0x4558, /* Array index: 0x1FAC */ 0x787E,0x4C38, /* Array index: 0x1FAC */ 0x7880,0x4556, /* Array index: 0x1FAC */ 0x788F,0x454D, /* Array index: 0x1FAC */ 0x78B2,0x4C33, /* Array index: 0x1FAC */ 0x78B4,0x4C35, /* Array index: 0x1FAC */ 0x78BB,0x5249, /* Array index: 0x1FAC */ 0x78C3,0x5250, /* Array index: 0x1FAC */ 0x78C4,0x5251, /* Array index: 0x1FAC */ 0x78D4,0x524E, /* Array index: 0x1FAC */ 0x78E9,0x586D, /* Array index: 0x1FAC */ 0x78EA,0x586F, /* Array index: 0x1FAC */ 0x78ED,0x5875, /* Array index: 0x1FAC */ 0x78F2,0x5D75, /* Array index: 0x1FAC */ 0x78F3,0x5D6F, /* Array index: 0x1FAC */ 0x7902,0x5D71, /* Array index: 0x1FAC */ 0x7904,0x5D79, /* Array index: 0x1FAC */ 0x7905,0x5D76, /* Array index: 0x1FAC */ 0x7909,0x6246, /* Array index: 0x1FAC */ 0x790C,0x6243, /* Array index: 0x1FAC */ 0x7917,0x662D, /* Array index: 0x1FAC */ 0x792D,0x6B6F, /* Array index: 0x1FAC */ 0x792F,0x6B71, /* Array index: 0x1FAC */ 0x7931,0x6B70, /* Array index: 0x1FAC */ 0x7935,0x6D64, /* Array index: 0x1FAC */ 0x7938,0x7043, /* Array index: 0x1FAC */ 0x7939,0x712A, /* Array index: 0x1FAC */ 0x793D,0x2472, /* Array index: 0x1FAC */ 0x793F,0x2843, /* Array index: 0x1FAC */ 0x7942,0x2842, /* Array index: 0x1FAC */ 0x7944,0x2C5A, /* Array index: 0x1FAC */ 0x7945,0x2C59, /* Array index: 0x1FAC */ 0x795B,0x314A, /* Array index: 0x1FAC */ 0x795C,0x314C, /* Array index: 0x1FAC */ 0x7961,0x3765, /* Array index: 0x1FAC */ 0x7963,0x3763, /* Array index: 0x1FAC */ 0x7964,0x375F, /* Array index: 0x1FAC */ 0x7979,0x455C, /* Array index: 0x1FAC */ 0x797C,0x4559, /* Array index: 0x1FAC */ 0x797D,0x455B, /* Array index: 0x1FAC */ 0x7982,0x455A, /* Array index: 0x1FAC */ 0x7988,0x4C48, /* Array index: 0x1FAC */ 0x798A,0x4C41, /* Array index: 0x1FAC */ 0x798B,0x4C42, /* Array index: 0x1FAC */ 0x79A8,0x5D7B, /* Array index: 0x1FAC */ 0x79B0,0x662F, /* Array index: 0x1FAC */ 0x79B2,0x694E, /* Array index: 0x1FAC */ 0x79BB,0x3766, /* Array index: 0x1FAC */ 0x79C5,0x2844, /* Array index: 0x1FAC */ 0x79D5,0x2C5B, /* Array index: 0x1FAC */ 0x79D6,0x2C5E, /* Array index: 0x1FAC */ 0x7A0A,0x3E5B, /* Array index: 0x1FAC */ 0x7A0C,0x3E5D, /* Array index: 0x1FAC */ 0x7A22,0x4563, /* Array index: 0x1FAC */ 0x7A26,0x4C50, /* Array index: 0x1FAC */ 0x7A28,0x4C4F, /* Array index: 0x1FAC */ 0x7A2B,0x4C4B, /* Array index: 0x1FAC */ 0x7A2F,0x4C4E, /* Array index: 0x1FAC */ 0x7A30,0x4C4D, /* Array index: 0x1FAC */ 0x7A39,0x525A, /* Array index: 0x1FAC */ 0x7A44,0x5879, /* Array index: 0x1FAC */ 0x7A47,0x587B, /* Array index: 0x1FAC */ 0x7A48,0x587A, /* Array index: 0x1FAC */ 0x7A4A,0x4C4C, /* Array index: 0x1FAC */ 0x7A54,0x5E22, /* Array index: 0x1FAC */ 0x7A56,0x5D7E, /* Array index: 0x1FAC */ 0x7A5F,0x624C, /* Array index: 0x1FAC */ 0x7A67,0x6630, /* Array index: 0x1FAC */ 0x7A68,0x6631, /* Array index: 0x1FAC */ 0x7A75,0x2268, /* Array index: 0x1FAC */ 0x7A78,0x2845, /* Array index: 0x1FAC */ 0x7A7B,0x2846, /* Array index: 0x1FAC */ 0x7A7E,0x2C61, /* Array index: 0x1FAC */ 0x7A80,0x2C60, /* Array index: 0x1FAC */ 0x7A94,0x376C, /* Array index: 0x1FAC */ 0x7A99,0x3E5F, /* Array index: 0x1FAC */ 0x7A9E,0x4569, /* Array index: 0x1FAC */ 0x7AA2,0x4568, /* Array index: 0x1FAC */ 0x7AA3,0x4567, /* Array index: 0x1FAC */ 0x7AA8,0x4C51, /* Array index: 0x1FAC */ 0x7AAB,0x4C52, /* Array index: 0x1FAC */ 0x7AAC,0x4C53, /* Array index: 0x1FAC */ 0x7ABE,0x5E24, /* Array index: 0x1FAC */ 0x7AC0,0x5E25, /* Array index: 0x1FAC */ 0x7AC1,0x5E26, /* Array index: 0x1FAC */ 0x7AD1,0x2C62, /* Array index: 0x1FAC */ 0x7AD8,0x3160, /* Array index: 0x1FAC */ 0x7AE4,0x3E61, /* Array index: 0x1FAC */ 0x7AE6,0x3E60, /* Array index: 0x1FAC */ 0x7AEB,0x456A, /* Array index: 0x1FAC */ 0x7AEE,0x4C54, /* Array index: 0x1FAC */ 0x7AF7,0x6952, /* Array index: 0x1FAC */ 0x7AFB,0x2847, /* Array index: 0x1FAC */ 0x7B00,0x2C63, /* Array index: 0x1FAC */ 0x7B01,0x2C64, /* Array index: 0x1FAC */ 0x7B18,0x3776, /* Array index: 0x1FAC */ 0x7B1A,0x3821, /* Array index: 0x1FAC */ 0x7B1D,0x3778, /* Array index: 0x1FAC */ 0x7B2A,0x3777, /* Array index: 0x1FAC */ 0x7B2B,0x377A, /* Array index: 0x1FAC */ 0x7B38,0x377E, /* Array index: 0x1FAC */ 0x7B3B,0x376F, /* Array index: 0x1FAC */ 0x7B40,0x3E68, /* Array index: 0x1FAC */ 0x7B58,0x3E69, /* Array index: 0x1FAC */ 0x7B69,0x456F, /* Array index: 0x1FAC */ 0x7B6D,0x456D, /* Array index: 0x1FAC */ 0x7B82,0x4C64, /* Array index: 0x1FAC */ 0x7B85,0x4C5F, /* Array index: 0x1FAC */ 0x7B88,0x4C55, /* Array index: 0x1FAC */ 0x7B96,0x4C5A, /* Array index: 0x1FAC */ 0x7BA4,0x4C63, /* Array index: 0x1FAC */ 0x7BAC,0x5261, /* Array index: 0x1FAC */ 0x7BAF,0x5263, /* Array index: 0x1FAC */ 0x7BB5,0x5266, /* Array index: 0x1FAC */ 0x7BB7,0x525E, /* Array index: 0x1FAC */ 0x7BB9,0x5264, /* Array index: 0x1FAC */ 0x7BBE,0x5260, /* Array index: 0x1FAC */ 0x7BCA,0x5265, /* Array index: 0x1FAC */ 0x7BCB,0x525F, /* Array index: 0x1FAC */ 0x7BCE,0x5262, /* Array index: 0x1FAC */ 0x7BD4,0x592C, /* Array index: 0x1FAC */ 0x7BD5,0x5927, /* Array index: 0x1FAC */ 0x7BD8,0x5931, /* Array index: 0x1FAC */ 0x7BF8,0x5E35, /* Array index: 0x1FAC */ 0x7BF9,0x592B, /* Array index: 0x1FAC */ 0x7BFB,0x5E2C, /* Array index: 0x1FAC */ 0x7C19,0x624F, /* Array index: 0x1FAC */ 0x7C30,0x6258, /* Array index: 0x1FAC */ 0x7C33,0x6632, /* Array index: 0x1FAC */ 0x7C39,0x6634, /* Array index: 0x1FAC */ 0x7C3B,0x6636, /* Array index: 0x1FAC */ 0x7C3C,0x6633, /* Array index: 0x1FAC */ 0x7C53,0x6B73, /* Array index: 0x1FAC */ 0x7C54,0x6B72, /* Array index: 0x1FAC */ 0x7C6F,0x715C, /* Array index: 0x1FAC */ 0x7C75,0x2848, /* Array index: 0x1FAC */ 0x7C88,0x316F, /* Array index: 0x1FAC */ 0x7C8A,0x316D, /* Array index: 0x1FAC */ 0x7C8C,0x316E, /* Array index: 0x1FAC */ 0x7C8D,0x3170, /* Array index: 0x1FAC */ 0x7C91,0x316C, /* Array index: 0x1FAC */ 0x7C94,0x3823, /* Array index: 0x1FAC */ 0x7C96,0x3825, /* Array index: 0x1FAC */ 0x7C98,0x3824, /* Array index: 0x1FAC */ 0x7C9E,0x3E6C, /* Array index: 0x1FAC */ 0x7CA8,0x3E6D, /* Array index: 0x1FAC */ 0x7CAF,0x457B, /* Array index: 0x1FAC */ 0x7CB2,0x4579, /* Array index: 0x1FAC */ 0x7CB4,0x457A, /* Array index: 0x1FAC */ 0x7CBF,0x4C66, /* Array index: 0x1FAC */ 0x7CC5,0x5267, /* Array index: 0x1FAC */ 0x7CC8,0x5268, /* Array index: 0x1FAC */ 0x7CCB,0x526A, /* Array index: 0x1FAC */ 0x7CCC,0x5269, /* Array index: 0x1FAC */ 0x7CD7,0x5935, /* Array index: 0x1FAC */ 0x7CE8,0x5E3C, /* Array index: 0x1FAC */ 0x7CEA,0x6638, /* Array index: 0x1FAC */ 0x7CEC,0x6637, /* Array index: 0x1FAC */ 0x7CEE,0x6958, /* Array index: 0x1FAC */ 0x7CF1,0x6D6E, /* Array index: 0x1FAC */ 0x7CF2,0x6B74, /* Array index: 0x1FAC */ 0x7CF4,0x6D6D, /* Array index: 0x1FAC */ 0x7CF6,0x712D, /* Array index: 0x1FAC */ 0x7CF7,0x7172, /* Array index: 0x1FAC */ 0x7CFD,0x2849, /* Array index: 0x1FAC */ 0x7D01,0x2C6D, /* Array index: 0x1FAC */ 0x7D03,0x2C6B, /* Array index: 0x1FAC */ 0x7D08,0x2C6C, /* Array index: 0x1FAC */ 0x7D0C,0x317C, /* Array index: 0x1FAC */ 0x7D16,0x3177, /* Array index: 0x1FAC */ 0x7D18,0x3176, /* Array index: 0x1FAC */ 0x7D28,0x3835, /* Array index: 0x1FAC */ 0x7D29,0x382E, /* Array index: 0x1FAC */ 0x7D2C,0x382D, /* Array index: 0x1FAC */ 0x7D35,0x3827, /* Array index: 0x1FAC */ 0x7D36,0x382A, /* Array index: 0x1FAC */ 0x7D38,0x3829, /* Array index: 0x1FAC */ 0x7D45,0x382C, /* Array index: 0x1FAC */ 0x7D47,0x3830, /* Array index: 0x1FAC */ 0x7D4A,0x3833, /* Array index: 0x1FAC */ 0x7D5C,0x3E78, /* Array index: 0x1FAC */ 0x7D5F,0x3E7E, /* Array index: 0x1FAC */ 0x7D63,0x3E71, /* Array index: 0x1FAC */ 0x7D92,0x462D, /* Array index: 0x1FAC */ 0x7D94,0x462A, /* Array index: 0x1FAC */ 0x7D96,0x4C79, /* Array index: 0x1FAC */ 0x7D9D,0x4C71, /* Array index: 0x1FAC */ 0x7D9F,0x4C7B, /* Array index: 0x1FAC */ 0x7DA1,0x4D21, /* Array index: 0x1FAC */ 0x7DA3,0x4C6C, /* Array index: 0x1FAC */ 0x7DAE,0x4C7D, /* Array index: 0x1FAC */ 0x7DAF,0x4C77, /* Array index: 0x1FAC */ 0x7DB7,0x4C6A, /* Array index: 0x1FAC */ 0x7DB9,0x4C78, /* Array index: 0x1FAC */ 0x7DBC,0x4C7A, /* Array index: 0x1FAC */ 0x7DC9,0x4D22, /* Array index: 0x1FAC */ 0x7DCB,0x4C75, /* Array index: 0x1FAC */ 0x7DCC,0x4C76, /* Array index: 0x1FAC */ 0x7DCE,0x4C72, /* Array index: 0x1FAC */ 0x7DD7,0x526F, /* Array index: 0x1FAC */ 0x7DDB,0x526C, /* Array index: 0x1FAC */ 0x7DDF,0x5278, /* Array index: 0x1FAC */ 0x7DE1,0x5270, /* Array index: 0x1FAC */ 0x7DE6,0x5273, /* Array index: 0x1FAC */ 0x7DE7,0x526E, /* Array index: 0x1FAC */ 0x7DEA,0x526D, /* Array index: 0x1FAC */ 0x7DEE,0x5277, /* Array index: 0x1FAC */ 0x7DF0,0x5276, /* Array index: 0x1FAC */ 0x7DF1,0x5275, /* Array index: 0x1FAC */ 0x7DF3,0x503B, /* Array index: 0x1FAC */ 0x7DF6,0x5274, /* Array index: 0x1FAC */ 0x7DF7,0x526B, /* Array index: 0x1FAC */ 0x7DFA,0x5272, /* Array index: 0x1FAC */ 0x7E03,0x5271, /* Array index: 0x1FAC */ 0x7E1A,0x5942, /* Array index: 0x1FAC */ 0x7E1C,0x5940, /* Array index: 0x1FAC */ 0x7E29,0x5E47, /* Array index: 0x1FAC */ 0x7E2A,0x5E43, /* Array index: 0x1FAC */ 0x7E2D,0x5E3D, /* Array index: 0x1FAC */ 0x7E30,0x5E49, /* Array index: 0x1FAC */ 0x7E33,0x5E40, /* Array index: 0x1FAC */ 0x7E36,0x5E4B, /* Array index: 0x1FAC */ 0x7E40,0x5E45, /* Array index: 0x1FAC */ 0x7E42,0x5E3F, /* Array index: 0x1FAC */ 0x7E44,0x5E4C, /* Array index: 0x1FAC */ 0x7E47,0x5E46, /* Array index: 0x1FAC */ 0x7E49,0x5E44, /* Array index: 0x1FAC */ 0x7E4C,0x5E48, /* Array index: 0x1FAC */ 0x7E50,0x625A, /* Array index: 0x1FAC */ 0x7E51,0x6260, /* Array index: 0x1FAC */ 0x7E53,0x6263, /* Array index: 0x1FAC */ 0x7E5C,0x6259, /* Array index: 0x1FAC */ 0x7E68,0x6642, /* Array index: 0x1FAC */ 0x7E6F,0x663E, /* Array index: 0x1FAC */ 0x7E70,0x663C, /* Array index: 0x1FAC */ 0x7E7E,0x695A, /* Array index: 0x1FAC */ 0x7E80,0x695C, /* Array index: 0x1FAC */ 0x7E81,0x695B, /* Array index: 0x1FAC */ 0x7E91,0x6D6F, /* Array index: 0x1FAC */ 0x7F39,0x3052, /* Array index: 0x1FAC */ 0x7F3E,0x3F22, /* Array index: 0x1FAC */ 0x7F3F,0x3F23, /* Array index: 0x1FAC */ 0x7F43,0x594B, /* Array index: 0x1FAC */ 0x7F45,0x5E4E, /* Array index: 0x1FAC */ 0x7F4A,0x6644, /* Array index: 0x1FAC */ 0x7F4B,0x6643, /* Array index: 0x1FAC */ 0x7F4D,0x6B7B, /* Array index: 0x1FAC */ 0x7F4F,0x6D70, /* Array index: 0x1FAC */ 0x7F51,0x2269, /* Array index: 0x1FAC */ 0x7F58,0x2C6E, /* Array index: 0x1FAC */ 0x7F73,0x4D23, /* Array index: 0x1FAC */ 0x7F76,0x5279, /* Array index: 0x1FAC */ 0x7F83,0x6645, /* Array index: 0x1FAC */ 0x7F86,0x6646, /* Array index: 0x1FAC */ 0x7F87,0x6D71, /* Array index: 0x1FAC */ 0x7F89,0x7048, /* Array index: 0x1FAC */ 0x7F8D,0x2C70, /* Array index: 0x1FAC */ 0x7F91,0x2C6F, /* Array index: 0x1FAC */ 0x7F92,0x3226, /* Array index: 0x1FAC */ 0x7F95,0x3837, /* Array index: 0x1FAC */ 0x7F96,0x3225, /* Array index: 0x1FAC */ 0x7FAC,0x527A, /* Array index: 0x1FAC */ 0x7FAD,0x527C, /* Array index: 0x1FAC */ 0x7FB0,0x527B, /* Array index: 0x1FAC */ 0x7FB1,0x594F, /* Array index: 0x1FAC */ 0x7FB3,0x6265, /* Array index: 0x1FAC */ 0x7FB5,0x6264, /* Array index: 0x1FAC */ 0x7FB7,0x6647, /* Array index: 0x1FAC */ 0x7FBA,0x695D, /* Array index: 0x1FAC */ 0x7FBB,0x6B7C, /* Array index: 0x1FAC */ 0x7FBE,0x2C71, /* Array index: 0x1FAC */ 0x7FC0,0x3229, /* Array index: 0x1FAC */ 0x7FC2,0x3228, /* Array index: 0x1FAC */ 0x7FC3,0x3227, /* Array index: 0x1FAC */ 0x7FD7,0x3F29, /* Array index: 0x1FAC */ 0x7FDB,0x4636, /* Array index: 0x1FAC */ 0x7FDC,0x4637, /* Array index: 0x1FAC */ 0x7FDE,0x4D27, /* Array index: 0x1FAC */ 0x7FF2,0x5E53, /* Array index: 0x1FAC */ 0x8007,0x2C72, /* Array index: 0x1FAC */ 0x800E,0x2C73, /* Array index: 0x1FAC */ 0x800F,0x2C74, /* Array index: 0x1FAC */ 0x8014,0x2C75, /* Array index: 0x1FAC */ 0x8016,0x322A, /* Array index: 0x1FAC */ 0x801B,0x3845, /* Array index: 0x1FAC */ 0x801E,0x3844, /* Array index: 0x1FAC */ 0x801F,0x3843, /* Array index: 0x1FAC */ 0x8021,0x4638, /* Array index: 0x1FAC */ 0x8024,0x4D28, /* Array index: 0x1FAC */ 0x8029,0x5952, /* Array index: 0x1FAC */ 0x802A,0x5951, /* Array index: 0x1FAC */ 0x802C,0x5E54, /* Array index: 0x1FAC */ 0x8030,0x6B7D, /* Array index: 0x1FAC */ 0x8034,0x2473, /* Array index: 0x1FAC */ 0x8035,0x284A, /* Array index: 0x1FAC */ 0x8037,0x2C76, /* Array index: 0x1FAC */ 0x8039,0x322C, /* Array index: 0x1FAC */ 0x803E,0x322B, /* Array index: 0x1FAC */ 0x8043,0x3847, /* Array index: 0x1FAC */ 0x8047,0x3846, /* Array index: 0x1FAC */ 0x8048,0x3848, /* Array index: 0x1FAC */ 0x805C,0x4D2A, /* Array index: 0x1FAC */ 0x805D,0x4D29, /* Array index: 0x1FAC */ 0x8064,0x5325, /* Array index: 0x1FAC */ 0x8067,0x5326, /* Array index: 0x1FAC */ 0x806C,0x5953, /* Array index: 0x1FAC */ 0x8075,0x6268, /* Array index: 0x1FAC */ 0x8078,0x664A, /* Array index: 0x1FAC */ 0x8079,0x695F, /* Array index: 0x1FAC */ 0x8082,0x2F7D, /* Array index: 0x1FAC */ 0x808A,0x2168, /* Array index: 0x1FAC */ 0x808F,0x284B, /* Array index: 0x1FAC */ 0x8090,0x2476, /* Array index: 0x1FAC */ 0x8092,0x2477, /* Array index: 0x1FAC */ 0x8095,0x2474, /* Array index: 0x1FAC */ 0x8099,0x2475, /* Array index: 0x1FAC */ 0x809C,0x2478, /* Array index: 0x1FAC */ 0x80A3,0x284D, /* Array index: 0x1FAC */ 0x80AD,0x2850, /* Array index: 0x1FAC */ 0x80AE,0x284C, /* Array index: 0x1FAC */ 0x80B5,0x284F, /* Array index: 0x1FAC */ 0x80B8,0x284E, /* Array index: 0x1FAC */ 0x80C2,0x2C7C, /* Array index: 0x1FAC */ 0x80DC,0x2D23, /* Array index: 0x1FAC */ 0x80E0,0x2C79, /* Array index: 0x1FAC */ 0x80E3,0x2D21, /* Array index: 0x1FAC */ 0x80E6,0x2D29, /* Array index: 0x1FAC */ 0x80F2,0x322E, /* Array index: 0x1FAC */ 0x80F5,0x3230, /* Array index: 0x1FAC */ 0x80FE,0x3F2D, /* Array index: 0x1FAC */ 0x8100,0x3233, /* Array index: 0x1FAC */ 0x8101,0x3231, /* Array index: 0x1FAC */ 0x8115,0x3852, /* Array index: 0x1FAC */ 0x8118,0x3849, /* Array index: 0x1FAC */ 0x8119,0x384B, /* Array index: 0x1FAC */ 0x8125,0x384A, /* Array index: 0x1FAC */ 0x8127,0x3853, /* Array index: 0x1FAC */ 0x812C,0x384F, /* Array index: 0x1FAC */ 0x812D,0x384D, /* Array index: 0x1FAC */ 0x813A,0x3F36, /* Array index: 0x1FAC */ 0x813D,0x3F34, /* Array index: 0x1FAC */ 0x8143,0x3F2F, /* Array index: 0x1FAC */ 0x8144,0x4646, /* Array index: 0x1FAC */ 0x8147,0x3F33, /* Array index: 0x1FAC */ 0x814A,0x3F30, /* Array index: 0x1FAC */ 0x814D,0x3F35, /* Array index: 0x1FAC */ 0x814F,0x3F32, /* Array index: 0x1FAC */ 0x8152,0x3F31, /* Array index: 0x1FAC */ 0x815B,0x463E, /* Array index: 0x1FAC */ 0x815C,0x463C, /* Array index: 0x1FAC */ 0x8167,0x4644, /* Array index: 0x1FAC */ 0x8169,0x463D, /* Array index: 0x1FAC */ 0x816F,0x4645, /* Array index: 0x1FAC */ 0x8172,0x4640, /* Array index: 0x1FAC */ 0x8176,0x4643, /* Array index: 0x1FAC */ 0x8177,0x463B, /* Array index: 0x1FAC */ 0x8183,0x4D2D, /* Array index: 0x1FAC */ 0x8186,0x4D2C, /* Array index: 0x1FAC */ 0x8187,0x4D2E, /* Array index: 0x1FAC */ 0x8195,0x532A, /* Array index: 0x1FAC */ 0x8197,0x532D, /* Array index: 0x1FAC */ 0x8199,0x532C, /* Array index: 0x1FAC */ 0x819E,0x5329, /* Array index: 0x1FAC */ 0x819F,0x5328, /* Array index: 0x1FAC */ 0x81A2,0x532B, /* Array index: 0x1FAC */ 0x81A3,0x5327, /* Array index: 0x1FAC */ 0x81A6,0x5955, /* Array index: 0x1FAC */ 0x81A7,0x595F, /* Array index: 0x1FAC */ 0x81AB,0x5959, /* Array index: 0x1FAC */ 0x81AC,0x595B, /* Array index: 0x1FAC */ 0x81C4,0x5E56, /* Array index: 0x1FAC */ 0x81C5,0x5E59, /* Array index: 0x1FAC */ 0x81C7,0x5E5A, /* Array index: 0x1FAC */ 0x81CA,0x5E58, /* Array index: 0x1FAC */ 0x81CC,0x5E57, /* Array index: 0x1FAC */ 0x81D5,0x664C, /* Array index: 0x1FAC */ 0x81D7,0x664B, /* Array index: 0x1FAC */ 0x81D9,0x6961, /* Array index: 0x1FAC */ 0x81DB,0x6960, /* Array index: 0x1FAC */ 0x81E6,0x3F37, /* Array index: 0x1FAC */ 0x81E9,0x5E5C, /* Array index: 0x1FAC */ 0x81EE,0x3F38, /* Array index: 0x1FAC */ 0x81F2,0x5960, /* Array index: 0x1FAC */ 0x81FF,0x2D2B, /* Array index: 0x1FAC */ 0x8201,0x3234, /* Array index: 0x1FAC */ 0x8204,0x3F3C, /* Array index: 0x1FAC */ 0x820B,0x664D, /* Array index: 0x1FAC */ 0x8211,0x3856, /* Array index: 0x1FAC */ 0x8215,0x4D32, /* Array index: 0x1FAC */ 0x8216,0x532E, /* Array index: 0x1FAC */ 0x821D,0x4648, /* Array index: 0x1FAC */ 0x8220,0x2851, /* Array index: 0x1FAC */ 0x8221,0x2D2C, /* Array index: 0x1FAC */ 0x8225,0x3236, /* Array index: 0x1FAC */ 0x822F,0x3235, /* Array index: 0x1FAC */ 0x8238,0x3857, /* Array index: 0x1FAC */ 0x823A,0x3859, /* Array index: 0x1FAC */ 0x8249,0x4649, /* Array index: 0x1FAC */ 0x8274,0x385C, /* Array index: 0x1FAC */ 0x8275,0x3F40, /* Array index: 0x1FAC */ 0x8278,0x226A, /* Array index: 0x1FAC */ 0x828A,0x2521, /* Array index: 0x1FAC */ 0x8298,0x2856, /* Array index: 0x1FAC */ 0x829A,0x2855, /* Array index: 0x1FAC */ 0x829B,0x2857, /* Array index: 0x1FAC */ 0x82AE,0x285A, /* Array index: 0x1FAC */ 0x82BA,0x285D, /* Array index: 0x1FAC */ 0x82BC,0x285B, /* Array index: 0x1FAC */ 0x82C0,0x2853, /* Array index: 0x1FAC */ 0x82C2,0x2862, /* Array index: 0x1FAC */ 0x82C3,0x2864, /* Array index: 0x1FAC */ 0x82D5,0x2D34, /* Array index: 0x1FAC */ 0x82D6,0x2D37, /* Array index: 0x1FAC */ 0x82D9,0x2D2E, /* Array index: 0x1FAC */ 0x82E0,0x2D43, /* Array index: 0x1FAC */ 0x82E1,0x2D3A, /* Array index: 0x1FAC */ 0x82E4,0x2D42, /* Array index: 0x1FAC */ 0x82FE,0x2D2F, /* Array index: 0x1FAC */ 0x8300,0x2D33, /* Array index: 0x1FAC */ 0x8307,0x2D31, /* Array index: 0x1FAC */ 0x8308,0x3247, /* Array index: 0x1FAC */ 0x830C,0x2D3D, /* Array index: 0x1FAC */ 0x830D,0x2942, /* Array index: 0x1FAC */ 0x8316,0x324A, /* Array index: 0x1FAC */ 0x8319,0x323A, /* Array index: 0x1FAC */ 0x831B,0x3245, /* Array index: 0x1FAC */ 0x831C,0x3241, /* Array index: 0x1FAC */ 0x831E,0x3254, /* Array index: 0x1FAC */ 0x8320,0x324C, /* Array index: 0x1FAC */ 0x8333,0x3237, /* Array index: 0x1FAC */ 0x8337,0x324D, /* Array index: 0x1FAC */ 0x833F,0x323E, /* Array index: 0x1FAC */ 0x8351,0x323B, /* Array index: 0x1FAC */ 0x8353,0x3253, /* Array index: 0x1FAC */ 0x8356,0x323D, /* Array index: 0x1FAC */ 0x837A,0x3861, /* Array index: 0x1FAC */ 0x8394,0x386A, /* Array index: 0x1FAC */ 0x8395,0x3867, /* Array index: 0x1FAC */ 0x83F3,0x3F63, /* Array index: 0x1FAC */ 0x8406,0x3F61, /* Array index: 0x1FAC */ 0x8409,0x3F5D, /* Array index: 0x1FAC */ 0x841B,0x3F72, /* Array index: 0x1FAC */ 0x8423,0x3F44, /* Array index: 0x1FAC */ 0x8429,0x466C, /* Array index: 0x1FAC */ 0x842B,0x4724, /* Array index: 0x1FAC */ 0x842D,0x4671, /* Array index: 0x1FAC */ 0x8465,0x4655, /* Array index: 0x1FAC */ 0x8467,0x4659, /* Array index: 0x1FAC */ 0x8468,0x4721, /* Array index: 0x1FAC */ 0x8486,0x4658, /* Array index: 0x1FAC */ 0x8494,0x4D49, /* Array index: 0x1FAC */ 0x84B4,0x4D3E, /* Array index: 0x1FAC */ 0x84B6,0x4D52, /* Array index: 0x1FAC */ 0x84C1,0x4D3F, /* Array index: 0x1FAC */ 0x84C2,0x4D39, /* Array index: 0x1FAC */ 0x84C5,0x4679, /* Array index: 0x1FAC */ 0x84C7,0x4D4A, /* Array index: 0x1FAC */ 0x84DB,0x4D58, /* Array index: 0x1FAC */ 0x8512,0x534E, /* Array index: 0x1FAC */ 0x853B,0x5336, /* Array index: 0x1FAC */ 0x853E,0x5974, /* Array index: 0x1FAC */ 0x854D,0x5967, /* Array index: 0x1FAC */ 0x854E,0x5977, /* Array index: 0x1FAC */ 0x855B,0x5975, /* Array index: 0x1FAC */ 0x855D,0x5A21, /* Array index: 0x1FAC */ 0x856B,0x5966, /* Array index: 0x1FAC */ 0x856C,0x5A24, /* Array index: 0x1FAC */ 0x856E,0x5978, /* Array index: 0x1FAC */ 0x8571,0x5976, /* Array index: 0x1FAC */ 0x85A7,0x5E63, /* Array index: 0x1FAC */ 0x85CB,0x6279, /* Array index: 0x1FAC */ 0x85CE,0x627A, /* Array index: 0x1FAC */ 0x85D1,0x6660, /* Array index: 0x1FAC */ 0x85D2,0x6321, /* Array index: 0x1FAC */ 0x85E6,0x6662, /* Array index: 0x1FAC */ 0x85E8,0x6656, /* Array index: 0x1FAC */ 0x85F6,0x696A, /* Array index: 0x1FAC */ 0x85F8,0x665B, /* Array index: 0x1FAC */ 0x8609,0x696C, /* Array index: 0x1FAC */ 0x860C,0x696E, /* Array index: 0x1FAC */ 0x8643,0x704A, /* Array index: 0x1FAC */ 0x8652,0x325A, /* Array index: 0x1FAC */ 0x8653,0x3259, /* Array index: 0x1FAC */ 0x8656,0x3921, /* Array index: 0x1FAC */ 0x8659,0x387E, /* Array index: 0x1FAC */ 0x8677,0x2D47, /* Array index: 0x1FAC */ 0x867C,0x2D49, /* Array index: 0x1FAC */ 0x868B,0x3264, /* Array index: 0x1FAC */ 0x86A5,0x3267, /* Array index: 0x1FAC */ 0x86A7,0x326A, /* Array index: 0x1FAC */ 0x86A8,0x325C, /* Array index: 0x1FAC */ 0x86B0,0x3928, /* Array index: 0x1FAC */ 0x86C8,0x3929, /* Array index: 0x1FAC */ 0x86CC,0x392D, /* Array index: 0x1FAC */ 0x86D1,0x4025, /* Array index: 0x1FAC */ 0x86D3,0x3F78, /* Array index: 0x1FAC */ 0x86E2,0x3F76, /* Array index: 0x1FAC */ 0x86E3,0x3F79, /* Array index: 0x1FAC */ 0x8701,0x4734, /* Array index: 0x1FAC */ 0x8704,0x472A, /* Array index: 0x1FAC */ 0x8705,0x4737, /* Array index: 0x1FAC */ 0x871E,0x4D62, /* Array index: 0x1FAC */ 0x8738,0x4D77, /* Array index: 0x1FAC */ 0x873A,0x4D71, /* Array index: 0x1FAC */ 0x873C,0x4D6F, /* Array index: 0x1FAC */ 0x8746,0x4D6A, /* Array index: 0x1FAC */ 0x8773,0x536D, /* Array index: 0x1FAC */ 0x8775,0x5426, /* Array index: 0x1FAC */ 0x8781,0x5A2F, /* Array index: 0x1FAC */ 0x87A3,0x5A34, /* Array index: 0x1FAC */ 0x87A4,0x5A28, /* Array index: 0x1FAC */ 0x87C9,0x5F30, /* Array index: 0x1FAC */ 0x87CA,0x5F37, /* Array index: 0x1FAC */ 0x87CC,0x5F33, /* Array index: 0x1FAC */ 0x87FA,0x6667, /* Array index: 0x1FAC */ 0x87FC,0x666F, /* Array index: 0x1FAC */ 0x8810,0x6971, /* Array index: 0x1FAC */ 0x8811,0x6972, /* Array index: 0x1FAC */ 0x8813,0x6974, /* Array index: 0x1FAC */ 0x8816,0x6975, /* Array index: 0x1FAC */ 0x8817,0x6973, /* Array index: 0x1FAC */ 0x8820,0x6C32, /* Array index: 0x1FAC */ 0x8848,0x4026, /* Array index: 0x1FAC */ 0x884A,0x6C36, /* Array index: 0x1FAC */ 0x884B,0x704E, /* Array index: 0x1FAC */ 0x884E,0x2D4C, /* Array index: 0x1FAC */ 0x8852,0x3934, /* Array index: 0x1FAC */ 0x8855,0x4028, /* Array index: 0x1FAC */ 0x8856,0x4027, /* Array index: 0x1FAC */ 0x885A,0x542A, /* Array index: 0x1FAC */ 0x8867,0x2D4D, /* Array index: 0x1FAC */ 0x8869,0x2D4F, /* Array index: 0x1FAC */ 0x886A,0x2D4E, /* Array index: 0x1FAC */ 0x886D,0x3273, /* Array index: 0x1FAC */ 0x886F,0x327A, /* Array index: 0x1FAC */ 0x8883,0x327B, /* Array index: 0x1FAC */ 0x8889,0x3935, /* Array index: 0x1FAC */ 0x888C,0x3945, /* Array index: 0x1FAC */ 0x888E,0x3947, /* Array index: 0x1FAC */ 0x8891,0x393B, /* Array index: 0x1FAC */ 0x8893,0x3946, /* Array index: 0x1FAC */ 0x889F,0x393D, /* Array index: 0x1FAC */ 0x88A1,0x393C, /* Array index: 0x1FAC */ 0x88A2,0x3938, /* Array index: 0x1FAC */ 0x88A4,0x3943, /* Array index: 0x1FAC */ 0x88A7,0x393F, /* Array index: 0x1FAC */ 0x88A8,0x3937, /* Array index: 0x1FAC */ 0x88AA,0x3939, /* Array index: 0x1FAC */ 0x88AC,0x3944, /* Array index: 0x1FAC */ 0x88B2,0x4033, /* Array index: 0x1FAC */ 0x88D6,0x4738, /* Array index: 0x1FAC */ 0x88D7,0x402A, /* Array index: 0x1FAC */ 0x88DA,0x473E, /* Array index: 0x1FAC */ 0x88DB,0x473D, /* Array index: 0x1FAC */ 0x88DE,0x473C, /* Array index: 0x1FAC */ 0x88E7,0x4D7D, /* Array index: 0x1FAC */ 0x88EB,0x4E2A, /* Array index: 0x1FAC */ 0x88EC,0x4E29, /* Array index: 0x1FAC */ 0x8901,0x4034, /* Array index: 0x1FAC */ 0x8905,0x542B, /* Array index: 0x1FAC */ 0x8906,0x5432, /* Array index: 0x1FAC */ 0x8909,0x5436, /* Array index: 0x1FAC */ 0x890B,0x542E, /* Array index: 0x1FAC */ 0x890C,0x542C, /* Array index: 0x1FAC */ 0x890E,0x5435, /* Array index: 0x1FAC */ 0x8911,0x5434, /* Array index: 0x1FAC */ 0x891E,0x5A3E, /* Array index: 0x1FAC */ 0x891F,0x5A4A, /* Array index: 0x1FAC */ 0x8922,0x5A45, /* Array index: 0x1FAC */ 0x8923,0x5A47, /* Array index: 0x1FAC */ 0x8926,0x5A3F, /* Array index: 0x1FAC */ 0x8927,0x5A43, /* Array index: 0x1FAC */ 0x8929,0x5A46, /* Array index: 0x1FAC */ 0x893C,0x5F41, /* Array index: 0x1FAC */ 0x893E,0x5F42, /* Array index: 0x1FAC */ 0x8941,0x5F43, /* Array index: 0x1FAC */ 0x8942,0x5F46, /* Array index: 0x1FAC */ 0x8946,0x6341, /* Array index: 0x1FAC */ 0x8949,0x6344, /* Array index: 0x1FAC */ 0x8966,0x6977, /* Array index: 0x1FAC */ 0x8969,0x6C38, /* Array index: 0x1FAC */ 0x896B,0x6C3A, /* Array index: 0x1FAC */ 0x896D,0x6C37, /* Array index: 0x1FAC */ 0x896E,0x6C39, /* Array index: 0x1FAC */ 0x8971,0x6E21, /* Array index: 0x1FAC */ 0x8973,0x6F4C, /* Array index: 0x1FAC */ 0x8974,0x6F4B, /* Array index: 0x1FAC */ 0x8976,0x6F4A, /* Array index: 0x1FAC */ 0x8982,0x3948, /* Array index: 0x1FAC */ 0x8985,0x4741, /* Array index: 0x1FAC */ 0x8988,0x667D, /* Array index: 0x1FAC */ 0x8995,0x4036, /* Array index: 0x1FAC */ 0x8997,0x4038, /* Array index: 0x1FAC */ 0x8998,0x4037, /* Array index: 0x1FAC */ 0x89B6,0x6721, /* Array index: 0x1FAC */ 0x89B7,0x667E, /* Array index: 0x1FAC */ 0x89B9,0x6978, /* Array index: 0x1FAC */ 0x89BE,0x6E23, /* Array index: 0x1FAC */ 0x89BF,0x6E22, /* Array index: 0x1FAC */ 0x89D3,0x2D50, /* Array index: 0x1FAC */ 0x8A04,0x2D51, /* Array index: 0x1FAC */ 0x8A07,0x2D52, /* Array index: 0x1FAC */ 0x8A12,0x3321, /* Array index: 0x1FAC */ 0x8A1E,0x394F, /* Array index: 0x1FAC */ 0x8A27,0x394D, /* Array index: 0x1FAC */ 0x8A2C,0x394E, /* Array index: 0x1FAC */ 0x8A30,0x394C, /* Array index: 0x1FAC */ 0x8A39,0x403E, /* Array index: 0x1FAC */ 0x8A3F,0x474F, /* Array index: 0x1FAC */ 0x8A40,0x4040, /* Array index: 0x1FAC */ 0x8A44,0x4043, /* Array index: 0x1FAC */ 0x8A45,0x4044, /* Array index: 0x1FAC */ 0x8A48,0x4046, /* Array index: 0x1FAC */ 0x8A61,0x474E, /* Array index: 0x1FAC */ 0x8A7A,0x4757, /* Array index: 0x1FAC */ 0x8A8B,0x4E34, /* Array index: 0x1FAC */ 0x8A8F,0x4E36, /* Array index: 0x1FAC */ 0x8A92,0x4E35, /* Array index: 0x1FAC */ 0x8A96,0x4E37, /* Array index: 0x1FAC */ 0x8A99,0x4E33, /* Array index: 0x1FAC */ 0x8AAB,0x4E32, /* Array index: 0x1FAC */ 0x8AB8,0x543F, /* Array index: 0x1FAC */ 0x8AC3,0x544A, /* Array index: 0x1FAC */ 0x8AC5,0x5448, /* Array index: 0x1FAC */ 0x8AC6,0x543E, /* Array index: 0x1FAC */ 0x8AC8,0x5A56, /* Array index: 0x1FAC */ 0x8ACF,0x543D, /* Array index: 0x1FAC */ 0x8AE8,0x5A59, /* Array index: 0x1FAC */ 0x8AEF,0x5A5B, /* Array index: 0x1FAC */ 0x8AF0,0x5A55, /* Array index: 0x1FAC */ 0x8AF2,0x5A4E, /* Array index: 0x1FAC */ 0x8AF4,0x5A4F, /* Array index: 0x1FAC */ 0x8AF5,0x5A50, /* Array index: 0x1FAC */ 0x8AFB,0x5A5C, /* Array index: 0x1FAC */ 0x8AFF,0x5A5A, /* Array index: 0x1FAC */ 0x8B0B,0x5F51, /* Array index: 0x1FAC */ 0x8B0D,0x5F57, /* Array index: 0x1FAC */ 0x8B2A,0x6345, /* Array index: 0x1FAC */ 0x8B45,0x6C3E, /* Array index: 0x1FAC */ 0x8B5D,0x697C, /* Array index: 0x1FAC */ 0x8B60,0x697A, /* Array index: 0x1FAC */ 0x8B63,0x697E, /* Array index: 0x1FAC */ 0x8B65,0x6A21, /* Array index: 0x1FAC */ 0x8B67,0x6A22, /* Array index: 0x1FAC */ 0x8B68,0x697D, /* Array index: 0x1FAC */ 0x8B6A,0x697B, /* Array index: 0x1FAC */ 0x8B6D,0x6A23, /* Array index: 0x1FAC */ 0x8B94,0x704F, /* Array index: 0x1FAC */ 0x8B95,0x7050, /* Array index: 0x1FAC */ 0x8B98,0x713C, /* Array index: 0x1FAC */ 0x8B99,0x713D, /* Array index: 0x1FAC */ 0x8B9E,0x7177, /* Array index: 0x1FAC */ 0x8B9F,0x7236, /* Array index: 0x1FAC */ 0x8C42,0x6359, /* Array index: 0x1FAC */ 0x8C43,0x6730, /* Array index: 0x1FAC */ 0x8C45,0x6F52, /* Array index: 0x1FAC */ 0x8C47,0x3322, /* Array index: 0x1FAC */ 0x8C4A,0x475A, /* Array index: 0x1FAC */ 0x8C4B,0x4759, /* Array index: 0x1FAC */ 0x8C4D,0x544F, /* Array index: 0x1FAC */ 0x8C4F,0x5F5D, /* Array index: 0x1FAC */ 0x8C56,0x286B, /* Array index: 0x1FAC */ 0x8C57,0x3323, /* Array index: 0x1FAC */ 0x8C5C,0x3952, /* Array index: 0x1FAC */ 0x8C5D,0x3953, /* Array index: 0x1FAC */ 0x8C5F,0x404B, /* Array index: 0x1FAC */ 0x8C7B,0x3324, /* Array index: 0x1FAC */ 0x8C7D,0x3954, /* Array index: 0x1FAC */ 0x8CB0,0x4050, /* Array index: 0x1FAC */ 0x8CB5,0x4052, /* Array index: 0x1FAC */ 0x8CB9,0x4051, /* Array index: 0x1FAC */ 0x8CBA,0x404E, /* Array index: 0x1FAC */ 0x8CBE,0x404F, /* Array index: 0x1FAC */ 0x8CCC,0x4761, /* Array index: 0x1FAC */ 0x8CCF,0x4E3C, /* Array index: 0x1FAC */ 0x8CD5,0x4E3B, /* Array index: 0x1FAC */ 0x8CD7,0x4E3D, /* Array index: 0x1FAC */ 0x8CD9,0x5453, /* Array index: 0x1FAC */ 0x8CDA,0x5455, /* Array index: 0x1FAC */ 0x8CDD,0x5456, /* Array index: 0x1FAC */ 0x8CDF,0x5452, /* Array index: 0x1FAC */ 0x8CE5,0x5451, /* Array index: 0x1FAC */ 0x8CE7,0x5457, /* Array index: 0x1FAC */ 0x8CE8,0x5454, /* Array index: 0x1FAC */ 0x8CEE,0x5A61, /* Array index: 0x1FAC */ 0x8CF0,0x5A63, /* Array index: 0x1FAC */ 0x8CF1,0x5A62, /* Array index: 0x1FAC */ 0x8CF3,0x5A64, /* Array index: 0x1FAC */ 0x8CF5,0x5A60, /* Array index: 0x1FAC */ 0x8CF9,0x5F64, /* Array index: 0x1FAC */ 0x8CFE,0x635E, /* Array index: 0x1FAC */ 0x8D00,0x6361, /* Array index: 0x1FAC */ 0x8D02,0x6360, /* Array index: 0x1FAC */ 0x8D04,0x635F, /* Array index: 0x1FAC */ 0x8D06,0x6734, /* Array index: 0x1FAC */ 0x8D07,0x6735, /* Array index: 0x1FAC */ 0x8D09,0x6736, /* Array index: 0x1FAC */ 0x8D10,0x6C41, /* Array index: 0x1FAC */ 0x8D14,0x6C42, /* Array index: 0x1FAC */ 0x8D15,0x6E2B, /* Array index: 0x1FAC */ 0x8D19,0x6F53, /* Array index: 0x1FAC */ 0x8D68,0x4762, /* Array index: 0x1FAC */ 0x8D69,0x4763, /* Array index: 0x1FAC */ 0x8D6C,0x5A65, /* Array index: 0x1FAC */ 0x8D6E,0x5A66, /* Array index: 0x1FAC */ 0x8D6F,0x5F65, /* Array index: 0x1FAC */ 0x8D72,0x2D53, /* Array index: 0x1FAC */ 0x8D76,0x3327, /* Array index: 0x1FAC */ 0x8D78,0x3328, /* Array index: 0x1FAC */ 0x8D79,0x3958, /* Array index: 0x1FAC */ 0x8D7B,0x3957, /* Array index: 0x1FAC */ 0x8D7D,0x3956, /* Array index: 0x1FAC */ 0x8D80,0x4054, /* Array index: 0x1FAC */ 0x8D84,0x4053, /* Array index: 0x1FAC */ 0x8D89,0x4055, /* Array index: 0x1FAC */ 0x8D9B,0x545B, /* Array index: 0x1FAC */ 0x8D9C,0x5459, /* Array index: 0x1FAC */ 0x8DA0,0x5458, /* Array index: 0x1FAC */ 0x8DA1,0x545A, /* Array index: 0x1FAC */ 0x8DA5,0x5A67, /* Array index: 0x1FAC */ 0x8DA7,0x5A68, /* Array index: 0x1FAC */ 0x8DB2,0x715E, /* Array index: 0x1FAC */ 0x8DBC,0x3959, /* Array index: 0x1FAC */ 0x8DBF,0x395C, /* Array index: 0x1FAC */ 0x8DC1,0x395D, /* Array index: 0x1FAC */ 0x8DC2,0x395A, /* Array index: 0x1FAC */ 0x8DC5,0x4061, /* Array index: 0x1FAC */ 0x8DC7,0x4059, /* Array index: 0x1FAC */ 0x8DC8,0x405F, /* Array index: 0x1FAC */ 0x8DCD,0x4058, /* Array index: 0x1FAC */ 0x8DCF,0x405C, /* Array index: 0x1FAC */ 0x8DD0,0x4772, /* Array index: 0x1FAC */ 0x8DDC,0x405B, /* Array index: 0x1FAC */ 0x8DE0,0x476E, /* Array index: 0x1FAC */ 0x8DE2,0x4775, /* Array index: 0x1FAC */ 0x8DE3,0x4774, /* Array index: 0x1FAC */ 0x8DE7,0x4776, /* Array index: 0x1FAC */ 0x8DE9,0x4773, /* Array index: 0x1FAC */ 0x8DEB,0x4778, /* Array index: 0x1FAC */ 0x8DEC,0x476F, /* Array index: 0x1FAC */ 0x8E0D,0x4E42, /* Array index: 0x1FAC */ 0x8E20,0x545C, /* Array index: 0x1FAC */ 0x8E2E,0x5460, /* Array index: 0x1FAC */ 0x8E30,0x5A72, /* Array index: 0x1FAC */ 0x8E33,0x5A69, /* Array index: 0x1FAC */ 0x8E36,0x5A6E, /* Array index: 0x1FAC */ 0x8E38,0x5A6B, /* Array index: 0x1FAC */ 0x8E45,0x5A6D, /* Array index: 0x1FAC */ 0x8E47,0x5F6B, /* Array index: 0x1FAC */ 0x8E65,0x6368, /* Array index: 0x1FAC */ 0x8E67,0x6369, /* Array index: 0x1FAC */ 0x8E69,0x636E, /* Array index: 0x1FAC */ 0x8E6A,0x673E, /* Array index: 0x1FAC */ 0x8E6D,0x673B, /* Array index: 0x1FAC */ 0x8E6F,0x673F, /* Array index: 0x1FAC */ 0x8E73,0x673D, /* Array index: 0x1FAC */ 0x8E78,0x673C, /* Array index: 0x1FAC */ 0x8E7B,0x6740, /* Array index: 0x1FAC */ 0x8E84,0x6A27, /* Array index: 0x1FAC */ 0x8E86,0x6A25, /* Array index: 0x1FAC */ 0x8E88,0x6A26, /* Array index: 0x1FAC */ 0x8E8C,0x6C45, /* Array index: 0x1FAC */ 0x8E8E,0x6C44, /* Array index: 0x1FAC */ 0x8E90,0x6E30, /* Array index: 0x1FAC */ 0x8EBD,0x5A74, /* Array index: 0x1FAC */ 0x8EC2,0x6741, /* Array index: 0x1FAC */ 0x8EC9,0x717A, /* Array index: 0x1FAC */ 0x8ED1,0x332C, /* Array index: 0x1FAC */ 0x8ED3,0x332D, /* Array index: 0x1FAC */ 0x8ED7,0x3962, /* Array index: 0x1FAC */ 0x8ED8,0x395E, /* Array index: 0x1FAC */ 0x8F0B,0x4824, /* Array index: 0x1FAC */ 0x8F20,0x5473, /* Array index: 0x1FAC */ 0x8F23,0x5474, /* Array index: 0x1FAC */ 0x8F24,0x5470, /* Array index: 0x1FAC */ 0x8F2C,0x546F, /* Array index: 0x1FAC */ 0x8F2E,0x5A76, /* Array index: 0x1FAC */ 0x8F40,0x5F6D, /* Array index: 0x1FAC */ 0x8F43,0x5F6C, /* Array index: 0x1FAC */ 0x8F4B,0x6373, /* Array index: 0x1FAC */ 0x8FB4,0x6747, /* Array index: 0x1FAC */ 0x8FBF,0x2526, /* Array index: 0x1FAC */ 0x8FC9,0x2525, /* Array index: 0x1FAC */ 0x8FCB,0x286D, /* Array index: 0x1FAC */ 0x8FCD,0x286F, /* Array index: 0x1FAC */ 0x8FE0,0x2D57, /* Array index: 0x1FAC */ 0x8FE1,0x2D55, /* Array index: 0x1FAC */ 0x8FE3,0x2D54, /* Array index: 0x1FAC */ 0x8FEE,0x2D56, /* Array index: 0x1FAC */ 0x8FF5,0x332F, /* Array index: 0x1FAC */ 0x8FF6,0x3335, /* Array index: 0x1FAC */ 0x9002,0x3330, /* Array index: 0x1FAC */ 0x9004,0x3333, /* Array index: 0x1FAC */ 0x900B,0x3966, /* Array index: 0x1FAC */ 0x900C,0x3969, /* Array index: 0x1FAC */ 0x9011,0x3967, /* Array index: 0x1FAC */ 0x901C,0x3968, /* Array index: 0x1FAC */ 0x9021,0x396A, /* Array index: 0x1FAC */ 0x9024,0x3965, /* Array index: 0x1FAC */ 0x902D,0x4072, /* Array index: 0x1FAC */ 0x902F,0x4074, /* Array index: 0x1FAC */ 0x9034,0x4073, /* Array index: 0x1FAC */ 0x903D,0x4829, /* Array index: 0x1FAC */ 0x903F,0x4826, /* Array index: 0x1FAC */ 0x9044,0x4827, /* Array index: 0x1FAC */ 0x9049,0x4828, /* Array index: 0x1FAC */ 0x9052,0x4825, /* Array index: 0x1FAC */ 0x9067,0x547A, /* Array index: 0x1FAC */ 0x906B,0x547B, /* Array index: 0x1FAC */ 0x906F,0x5479, /* Array index: 0x1FAC */ 0x9070,0x5478, /* Array index: 0x1FAC */ 0x9073,0x5477, /* Array index: 0x1FAC */ 0x9076,0x5A7C, /* Array index: 0x1FAC */ 0x9079,0x5A7D, /* Array index: 0x1FAC */ 0x907B,0x5A7E, /* Array index: 0x1FAC */ 0x907E,0x5F6F, /* Array index: 0x1FAC */ 0x9085,0x5F6E, /* Array index: 0x1FAC */ 0x9086,0x5B21, /* Array index: 0x1FAC */ 0x908D,0x6A2E, /* Array index: 0x1FAC */ 0x9094,0x2275, /* Array index: 0x1FAC */ 0x90A5,0x2529, /* Array index: 0x1FAC */ 0x90A7,0x252B, /* Array index: 0x1FAC */ 0x90C5,0x2D5C, /* Array index: 0x1FAC */ 0x90C7,0x2D5E, /* Array index: 0x1FAC */ 0x90C8,0x2D60, /* Array index: 0x1FAC */ 0x90CB,0x2D5F, /* Array index: 0x1FAC */ 0x9114,0x482F, /* Array index: 0x1FAC */ 0x9116,0x482E, /* Array index: 0x1FAC */ 0x9153,0x3978, /* Array index: 0x1FAC */ 0x9155,0x3979, /* Array index: 0x1FAC */ 0x9156,0x3975, /* Array index: 0x1FAC */ 0x9158,0x3976, /* Array index: 0x1FAC */ 0x915A,0x3977, /* Array index: 0x1FAC */ 0x9168,0x4279, /* Array index: 0x1FAC */ 0x916E,0x4832, /* Array index: 0x1FAC */ 0x916F,0x4833, /* Array index: 0x1FAC */ 0x9172,0x4E5B, /* Array index: 0x1FAC */ 0x9173,0x4E5D, /* Array index: 0x1FAC */ 0x9179,0x4E5C, /* Array index: 0x1FAC */ 0x917A,0x4E5A, /* Array index: 0x1FAC */ 0x918A,0x5527, /* Array index: 0x1FAC */ 0x91A5,0x6379, /* Array index: 0x1FAC */ 0x91A7,0x637A, /* Array index: 0x1FAC */ 0x91A8,0x6378, /* Array index: 0x1FAC */ 0x91AA,0x637C, /* Array index: 0x1FAC */ 0x91AD,0x674B, /* Array index: 0x1FAC */ 0x91C2,0x7057, /* Array index: 0x1FAC */ 0x91C3,0x7160, /* Array index: 0x1FAC */ 0x91DA,0x3347, /* Array index: 0x1FAC */ 0x91E2,0x3346, /* Array index: 0x1FAC */ 0x91E4,0x3A21, /* Array index: 0x1FAC */ 0x91F1,0x397C, /* Array index: 0x1FAC */ 0x920A,0x412A, /* Array index: 0x1FAC */ 0x920C,0x4130, /* Array index: 0x1FAC */ 0x920F,0x412F, /* Array index: 0x1FAC */ 0x9212,0x4132, /* Array index: 0x1FAC */ 0x9236,0x4846, /* Array index: 0x1FAC */ 0x923A,0x4837, /* Array index: 0x1FAC */ 0x9246,0x483F, /* Array index: 0x1FAC */ 0x9248,0x4834, /* Array index: 0x1FAC */ 0x924A,0x483E, /* Array index: 0x1FAC */ 0x925E,0x483B, /* Array index: 0x1FAC */ 0x9260,0x4843, /* Array index: 0x1FAC */ 0x9261,0x4847, /* Array index: 0x1FAC */ 0x9276,0x4E60, /* Array index: 0x1FAC */ 0x9294,0x4E64, /* Array index: 0x1FAC */ 0x9295,0x4E71, /* Array index: 0x1FAC */ 0x92EE,0x4E6E, /* Array index: 0x1FAC */ 0x92EF,0x553A, /* Array index: 0x1FAC */ 0x92F1,0x5533, /* Array index: 0x1FAC */ 0x9306,0x5B2F, /* Array index: 0x1FAC */ 0x932D,0x5B39, /* Array index: 0x1FAC */ 0x9334,0x5B42, /* Array index: 0x1FAC */ 0x9335,0x5B48, /* Array index: 0x1FAC */ 0x9338,0x5B32, /* Array index: 0x1FAC */ 0x9339,0x5B47, /* Array index: 0x1FAC */ 0x933C,0x5B33, /* Array index: 0x1FAC */ 0x9346,0x5B38, /* Array index: 0x1FAC */ 0x9347,0x5F7E, /* Array index: 0x1FAC */ 0x9349,0x6025, /* Array index: 0x1FAC */ 0x935C,0x6023, /* Array index: 0x1FAC */ 0x935E,0x6036, /* Array index: 0x1FAC */ 0x9367,0x6038, /* Array index: 0x1FAC */ 0x936A,0x602C, /* Array index: 0x1FAC */ 0x936D,0x6029, /* Array index: 0x1FAC */ 0x9371,0x6032, /* Array index: 0x1FAC */ 0x9380,0x642F, /* Array index: 0x1FAC */ 0x9383,0x5F7A, /* Array index: 0x1FAC */ 0x9395,0x642B, /* Array index: 0x1FAC */ 0x9399,0x642D, /* Array index: 0x1FAC */ 0x93AF,0x5F7B, /* Array index: 0x1FAC */ 0x93C0,0x675F, /* Array index: 0x1FAC */ 0x93C2,0x674F, /* Array index: 0x1FAC */ 0x93C4,0x675D, /* Array index: 0x1FAC */ 0x93C7,0x674D, /* Array index: 0x1FAC */ 0x93CA,0x6758, /* Array index: 0x1FAC */ 0x93D9,0x6755, /* Array index: 0x1FAC */ 0x93DA,0x6750, /* Array index: 0x1FAC */ 0x93DE,0x674C, /* Array index: 0x1FAC */ 0x93E3,0x675B, /* Array index: 0x1FAC */ 0x93E6,0x6757, /* Array index: 0x1FAC */ 0x93E7,0x6762, /* Array index: 0x1FAC */ 0x93EC,0x6753, /* Array index: 0x1FAC */ 0x93EE,0x675A, /* Array index: 0x1FAC */ 0x9419,0x6A3F, /* Array index: 0x1FAC */ 0x9420,0x6A38, /* Array index: 0x1FAC */ 0x9430,0x6C52, /* Array index: 0x1FAC */ 0x9431,0x6C58, /* Array index: 0x1FAC */ 0x9436,0x6C4F, /* Array index: 0x1FAC */ 0x9437,0x6C55, /* Array index: 0x1FAC */ 0x9455,0x6F59, /* Array index: 0x1FAC */ 0x9457,0x6F5B, /* Array index: 0x1FAC */ 0x945D,0x6F5A, /* Array index: 0x1FAC */ 0x945E,0x6F5C, /* Array index: 0x1FAC */ 0x9462,0x6F58, /* Array index: 0x1FAC */ 0x9468,0x7059, /* Array index: 0x1FAC */ 0x9469,0x705A, /* Array index: 0x1FAC */ 0x9586,0x3A29, /* Array index: 0x1FAC */ 0x9588,0x3A2A, /* Array index: 0x1FAC */ 0x958C,0x4141, /* Array index: 0x1FAC */ 0x958D,0x4140, /* Array index: 0x1FAC */ 0x9590,0x4142, /* Array index: 0x1FAC */ 0x95AB,0x5550, /* Array index: 0x1FAC */ 0x95AC,0x554F, /* Array index: 0x1FAC */ 0x95AE,0x5551, /* Array index: 0x1FAC */ 0x95B0,0x5552, /* Array index: 0x1FAC */ 0x95C3,0x603E, /* Array index: 0x1FAC */ 0x95C5,0x603F, /* Array index: 0x1FAC */ 0x95C7,0x603B, /* Array index: 0x1FAC */ 0x95C9,0x603D, /* Array index: 0x1FAC */ 0x95CD,0x5B53, /* Array index: 0x1FAC */ 0x961E,0x2169, /* Array index: 0x1FAC */ 0x9628,0x252E, /* Array index: 0x1FAC */ 0x962D,0x2530, /* Array index: 0x1FAC */ 0x962F,0x252F, /* Array index: 0x1FAC */ 0x9630,0x252D, /* Array index: 0x1FAC */ 0x9643,0x287C, /* Array index: 0x1FAC */ 0x964A,0x2D67, /* Array index: 0x1FAC */ 0x964E,0x2D68, /* Array index: 0x1FAC */ 0x964F,0x2D64, /* Array index: 0x1FAC */ 0x9651,0x2D65, /* Array index: 0x1FAC */ 0x9653,0x2D66, /* Array index: 0x1FAC */ 0x9654,0x2D63, /* Array index: 0x1FAC */ 0x965C,0x3348, /* Array index: 0x1FAC */ 0x965F,0x3349, /* Array index: 0x1FAC */ 0x966B,0x3A2D, /* Array index: 0x1FAC */ 0x966D,0x3A2C, /* Array index: 0x1FAC */ 0x966F,0x3A2F, /* Array index: 0x1FAC */ 0x9671,0x3A2E, /* Array index: 0x1FAC */ 0x967C,0x3A2B, /* Array index: 0x1FAC */ 0x967E,0x4144, /* Array index: 0x1FAC */ 0x9680,0x4148, /* Array index: 0x1FAC */ 0x9683,0x4147, /* Array index: 0x1FAC */ 0x9697,0x485A, /* Array index: 0x1FAC */ 0x969E,0x4F23, /* Array index: 0x1FAC */ 0x96A1,0x4F24, /* Array index: 0x1FAC */ 0x96A2,0x5554, /* Array index: 0x1FAC */ 0x96A4,0x5553, /* Array index: 0x1FAC */ 0x96A9,0x5B5B, /* Array index: 0x1FAC */ 0x96AC,0x6043, /* Array index: 0x1FAC */ 0x96AE,0x6041, /* Array index: 0x1FAC */ 0x96B0,0x6042, /* Array index: 0x1FAC */ 0x96B3,0x643B, /* Array index: 0x1FAC */ 0x96BC,0x334A, /* Array index: 0x1FAC */ 0x96BF,0x3A30, /* Array index: 0x1FAC */ 0x96C2,0x4149, /* Array index: 0x1FAC */ 0x96C3,0x414B, /* Array index: 0x1FAC */ 0x96C8,0x414A, /* Array index: 0x1FAC */ 0x96CE,0x485B, /* Array index: 0x1FAC */ 0x96D3,0x5555, /* Array index: 0x1FAC */ 0x96D4,0x5B5C, /* Array index: 0x1FAC */ 0x96D7,0x643C, /* Array index: 0x1FAC */ 0x96D8,0x6440, /* Array index: 0x1FAC */ 0x96DA,0x643D, /* Array index: 0x1FAC */ 0x96DD,0x6441, /* Array index: 0x1FAC */ 0x96DF,0x643F, /* Array index: 0x1FAC */ 0x96E1,0x6766, /* Array index: 0x1FAC */ 0x96E5,0x705B, /* Array index: 0x1FAC */ 0x96F0,0x414D, /* Array index: 0x1FAC */ 0x96F1,0x414C, /* Array index: 0x1FAC */ 0x96F5,0x485F, /* Array index: 0x1FAC */ 0x96F8,0x485E, /* Array index: 0x1FAC */ 0x96FA,0x485C, /* Array index: 0x1FAC */ 0x96FD,0x485D, /* Array index: 0x1FAC */ 0x96FF,0x4F25, /* Array index: 0x1FAC */ 0x9702,0x5558, /* Array index: 0x1FAC */ 0x9705,0x5556, /* Array index: 0x1FAC */ 0x9708,0x5557, /* Array index: 0x1FAC */ 0x970B,0x5B5D, /* Array index: 0x1FAC */ 0x9710,0x5B5F, /* Array index: 0x1FAC */ 0x9712,0x5B5E, /* Array index: 0x1FAC */ 0x9718,0x6046, /* Array index: 0x1FAC */ 0x9719,0x6048, /* Array index: 0x1FAC */ 0x971D,0x6047, /* Array index: 0x1FAC */ 0x9735,0x6C5C, /* Array index: 0x1FAC */ 0x973A,0x6C5D, /* Array index: 0x1FAC */ 0x973F,0x6E40, /* Array index: 0x1FAC */ 0x9743,0x705D, /* Array index: 0x1FAC */ 0x9746,0x705C, /* Array index: 0x1FAC */ 0x9747,0x705E, /* Array index: 0x1FAC */ 0x9749,0x7146, /* Array index: 0x1FAC */ 0x974B,0x717B, /* Array index: 0x1FAC */ 0x9758,0x4F26, /* Array index: 0x1FAC */ 0x975A,0x5559, /* Array index: 0x1FAC */ 0x976A,0x3A31, /* Array index: 0x1FAC */ 0x976C,0x414E, /* Array index: 0x1FAC */ 0x976E,0x4150, /* Array index: 0x1FAC */ 0x9770,0x414F, /* Array index: 0x1FAC */ 0x9772,0x4863, /* Array index: 0x1FAC */ 0x9773,0x4860, /* Array index: 0x1FAC */ 0x9788,0x555C, /* Array index: 0x1FAC */ 0x978A,0x555A, /* Array index: 0x1FAC */ 0x978E,0x555B, /* Array index: 0x1FAC */ 0x9794,0x5B62, /* Array index: 0x1FAC */ 0x9797,0x5B61, /* Array index: 0x1FAC */ 0x97B3,0x676C, /* Array index: 0x1FAC */ 0x97B6,0x676E, /* Array index: 0x1FAC */ 0x97B7,0x676D, /* Array index: 0x1FAC */ 0x97B9,0x6A58, /* Array index: 0x1FAC */ 0x97BB,0x6A59, /* Array index: 0x1FAC */ 0x97BF,0x6C5E, /* Array index: 0x1FAC */ 0x97C4,0x6F5D, /* Array index: 0x1FAC */ 0x97C5,0x6F5E, /* Array index: 0x1FAC */ 0x97C7,0x705F, /* Array index: 0x1FAC */ 0x97F0,0x5B63, /* Array index: 0x1FAC */ 0x97F1,0x6050, /* Array index: 0x1FAC */ 0x97F8,0x5B64, /* Array index: 0x1FAC */ 0x97FA,0x6451, /* Array index: 0x1FAC */ 0x97FD,0x6A5A, /* Array index: 0x1FAC */ 0x97FE,0x6A5B, /* Array index: 0x1FAC */ 0x9800,0x6F5F, /* Array index: 0x1FAC */ 0x9804,0x3A32, /* Array index: 0x1FAC */ 0x9807,0x4151, /* Array index: 0x1FAC */ 0x9816,0x4F33, /* Array index: 0x1FAC */ 0x981B,0x5565, /* Array index: 0x1FAC */ 0x981D,0x5560, /* Array index: 0x1FAC */ 0x981E,0x555F, /* Array index: 0x1FAC */ 0x9820,0x5564, /* Array index: 0x1FAC */ 0x982F,0x5B66, /* Array index: 0x1FAC */ 0x9832,0x5B67, /* Array index: 0x1FAC */ 0x9835,0x5B65, /* Array index: 0x1FAC */ 0x9857,0x6775, /* Array index: 0x1FAC */ 0x9859,0x6773, /* Array index: 0x1FAC */ 0x9869,0x6E43, /* Array index: 0x1FAC */ 0x986A,0x6E42, /* Array index: 0x1FAC */ 0x98A9,0x4152, /* Array index: 0x1FAC */ 0x98B2,0x5567, /* Array index: 0x1FAC */ 0x98B8,0x6455, /* Array index: 0x1FAC */ 0x98C6,0x6C62, /* Array index: 0x1FAC */ 0x98C9,0x6C61, /* Array index: 0x1FAC */ 0x98CB,0x6E44, /* Array index: 0x1FAC */ 0x98CC,0x717E, /* Array index: 0x1FAC */ 0x98E3,0x334B, /* Array index: 0x1FAC */ 0x98E5,0x3A33, /* Array index: 0x1FAC */ 0x98EB,0x4153, /* Array index: 0x1FAC */ 0x98F6,0x4868, /* Array index: 0x1FAC */ 0x98F9,0x4869, /* Array index: 0x1FAC */ 0x98FA,0x5569, /* Array index: 0x1FAC */ 0x9900,0x4F37, /* Array index: 0x1FAC */ 0x9902,0x4F36, /* Array index: 0x1FAC */ 0x9907,0x4F38, /* Array index: 0x1FAC */ 0x9908,0x5568, /* Array index: 0x1FAC */ 0x9911,0x556A, /* Array index: 0x1FAC */ 0x991F,0x5B69, /* Array index: 0x1FAC */ 0x9924,0x5B68, /* Array index: 0x1FAC */ 0x9925,0x6057, /* Array index: 0x1FAC */ 0x993A,0x6458, /* Array index: 0x1FAC */ 0x993C,0x6457, /* Array index: 0x1FAC */ 0x9941,0x6456, /* Array index: 0x1FAC */ 0x9943,0x677C, /* Array index: 0x1FAC */ 0x9947,0x677B, /* Array index: 0x1FAC */ 0x9948,0x677A, /* Array index: 0x1FAC */ 0x994B,0x6A66, /* Array index: 0x1FAC */ 0x994C,0x6A65, /* Array index: 0x1FAC */ 0x994E,0x6A63, /* Array index: 0x1FAC */ 0x9950,0x6A62, /* Array index: 0x1FAC */ 0x9953,0x6A67, /* Array index: 0x1FAC */ 0x9954,0x6E45, /* Array index: 0x1FAC */ 0x9956,0x6C65, /* Array index: 0x1FAC */ 0x9958,0x6C64, /* Array index: 0x1FAC */ 0x9959,0x6A64, /* Array index: 0x1FAC */ 0x995B,0x6E46, /* Array index: 0x1FAC */ 0x995F,0x7148, /* Array index: 0x1FAC */ 0x9961,0x7221, /* Array index: 0x1FAC */ 0x9997,0x3A34, /* Array index: 0x1FAC */ 0x9998,0x6061, /* Array index: 0x1FAC */ 0x99A1,0x6063, /* Array index: 0x1FAC */ 0x99A3,0x6062, /* Array index: 0x1FAC */ 0x99A6,0x677D, /* Array index: 0x1FAC */ 0x99A7,0x677E, /* Array index: 0x1FAC */ 0x99AB,0x7222, /* Array index: 0x1FAC */ 0x99AF,0x486A, /* Array index: 0x1FAC */ 0x99B0,0x486C, /* Array index: 0x1FAC */ 0x99B2,0x486B, /* Array index: 0x1FAC */ 0x99B5,0x486D, /* Array index: 0x1FAC */ 0x99C2,0x4F3F, /* Array index: 0x1FAC */ 0x99C3,0x4F3B, /* Array index: 0x1FAC */ 0x99C7,0x4F41, /* Array index: 0x1FAC */ 0x99DC,0x556F, /* Array index: 0x1FAC */ 0x9A3D,0x6C67, /* Array index: 0x1FAC */ 0x9A3F,0x6C6D, /* Array index: 0x1FAC */ 0x9A41,0x6C6B, /* Array index: 0x1FAC */ 0x9A42,0x6C6A, /* Array index: 0x1FAC */ 0x9A44,0x6C69, /* Array index: 0x1FAC */ 0x9A59,0x6F61, /* Array index: 0x1FAC */ 0x9A5E,0x7061, /* Array index: 0x1FAC */ 0x9A60,0x7165, /* Array index: 0x1FAC */ 0x9AAB,0x486F, /* Array index: 0x1FAC */ 0x9AAD,0x486E, /* Array index: 0x1FAC */ 0x9AB1,0x4F42, /* Array index: 0x1FAC */ 0x9AB3,0x557B, /* Array index: 0x1FAC */ 0x9AB4,0x5B78, /* Array index: 0x1FAC */ 0x9AB9,0x5B76, /* Array index: 0x1FAC */ 0x9ABB,0x5B79, /* Array index: 0x1FAC */ 0x9AC6,0x6A74, /* Array index: 0x1FAC */ 0x9AC7,0x6A72, /* Array index: 0x1FAC */ 0x9ACA,0x6A73, /* Array index: 0x1FAC */ 0x9ACD,0x6C6E, /* Array index: 0x1FAC */ 0x9AD0,0x6E51, /* Array index: 0x1FAC */ 0x9AD5,0x7062, /* Array index: 0x1FAC */ 0x9ADC,0x6464, /* Array index: 0x1FAC */ 0x9ADF,0x334C, /* Array index: 0x1FAC */ 0x9AE3,0x4F43, /* Array index: 0x1FAC */ 0x9AE7,0x4F44, /* Array index: 0x1FAC */ 0x9AEB,0x557D, /* Array index: 0x1FAC */ 0x9AEC,0x557C, /* Array index: 0x1FAC */ 0x9B01,0x6073, /* Array index: 0x1FAC */ 0x9B04,0x6466, /* Array index: 0x1FAC */ 0x9B05,0x6467, /* Array index: 0x1FAC */ 0x9B24,0x7226, /* Array index: 0x1FAC */ 0x9B29,0x6468, /* Array index: 0x1FAC */ 0x9B2B,0x6E53, /* Array index: 0x1FAC */ 0x9B2E,0x7166, /* Array index: 0x1FAC */ 0x9B2F,0x334D, /* Array index: 0x1FAC */ 0x9B33,0x5B7E, /* Array index: 0x1FAC */ 0x9B35,0x6469, /* Array index: 0x1FAC */ 0x9B37,0x6833, /* Array index: 0x1FAC */ 0x9B3A,0x6C73, /* Array index: 0x1FAC */ 0x9B3B,0x6E54, /* Array index: 0x1FAC */ 0x9B3E,0x4F45, /* Array index: 0x1FAC */ 0x9B3F,0x4F46, /* Array index: 0x1FAC */ 0x9B43,0x5624, /* Array index: 0x1FAC */ 0x9B46,0x5623, /* Array index: 0x1FAC */ 0x9B52,0x6C74, /* Array index: 0x1FAC */ 0x9B55,0x6E56, /* Array index: 0x1FAC */ 0x9B56,0x6E55, /* Array index: 0x1FAC */ 0x9B59,0x7063, /* Array index: 0x1FAC */ 0x9B5B,0x4870, /* Array index: 0x1FAC */ 0x9B6C,0x562E, /* Array index: 0x1FAC */ 0x9B90,0x5C2A, /* Array index: 0x1FAC */ 0x9B92,0x5C29, /* Array index: 0x1FAC */ 0x9B93,0x5C28, /* Array index: 0x1FAC */ 0x9B95,0x5C2C, /* Array index: 0x1FAC */ 0x9B9A,0x6076, /* Array index: 0x1FAC */ 0x9B9B,0x6079, /* Array index: 0x1FAC */ 0x9BAF,0x6123, /* Array index: 0x1FAC */ 0x9BBD,0x6478, /* Array index: 0x1FAC */ 0x9BBF,0x6470, /* Array index: 0x1FAC */ 0x9BC1,0x6471, /* Array index: 0x1FAC */ 0x9BF0,0x683B, /* Array index: 0x1FAC */ 0x9BF7,0x6A7A, /* Array index: 0x1FAC */ 0x9BF8,0x6A7D, /* Array index: 0x1FAC */ 0x9C0E,0x6B22, /* Array index: 0x1FAC */ 0x9C12,0x6A7C, /* Array index: 0x1FAC */ 0x9C14,0x6B25, /* Array index: 0x1FAC */ 0x9C17,0x6B24, /* Array index: 0x1FAC */ 0x9C1C,0x6C77, /* Array index: 0x1FAC */ 0x9C1D,0x6C76, /* Array index: 0x1FAC */ 0x9C21,0x6C7D, /* Array index: 0x1FAC */ 0x9C23,0x6C79, /* Array index: 0x1FAC */ 0x9C24,0x6C7C, /* Array index: 0x1FAC */ 0x9C44,0x6E5A, /* Array index: 0x1FAC */ 0x9C46,0x6E57, /* Array index: 0x1FAC */ 0x9C55,0x6F6B, /* Array index: 0x1FAC */ 0x9C58,0x6F66, /* Array index: 0x1FAC */ 0x9C59,0x6F6C, /* Array index: 0x1FAC */ 0x9C5E,0x7068, /* Array index: 0x1FAC */ 0x9C60,0x7069, /* Array index: 0x1FAC */ 0x9C6D,0x714B, /* Array index: 0x1FAC */ 0x9C6E,0x714A, /* Array index: 0x1FAC */ 0x9C79,0x7238, /* Array index: 0x1FAC */ 0x9C7A,0x723C, /* Array index: 0x1FAC */ 0x9CE6,0x4154, /* Array index: 0x1FAC */ 0x9CE7,0x4873, /* Array index: 0x1FAC */ 0x9CEA,0x4871, /* Array index: 0x1FAC */ 0x9CED,0x4872, /* Array index: 0x1FAC */ 0x9CF1,0x4F4A, /* Array index: 0x1FAC */ 0x9CF2,0x4F4B, /* Array index: 0x1FAC */ 0x9CF5,0x4F4C, /* Array index: 0x1FAC */ 0x9D10,0x5C38, /* Array index: 0x1FAC */ 0x9D14,0x5C33, /* Array index: 0x1FAC */ 0x9D25,0x5C2F, /* Array index: 0x1FAC */ 0x9D29,0x5C34, /* Array index: 0x1FAC */ 0x9D4F,0x647B, /* Array index: 0x1FAC */ 0x9D5F,0x6527, /* Array index: 0x1FAC */ 0x9D90,0x6B2D, /* Array index: 0x1FAC */ 0x9D92,0x6B2B, /* Array index: 0x1FAC */ 0x9E1D,0x723D, /* Array index: 0x1FAC */ 0x9E7A,0x6D37, /* Array index: 0x1FAC */ 0x9E80,0x4874, /* Array index: 0x1FAC */ 0x9E83,0x563B, /* Array index: 0x1FAC */ 0x9E91,0x6860, /* Array index: 0x1FAC */ 0x9E94,0x685F, /* Array index: 0x1FAC */ 0x9EA0,0x7076, /* Array index: 0x1FAC */ 0x9EA1,0x7152, /* Array index: 0x1FAC */ 0x9EA4,0x7241, /* Array index: 0x1FAC */ 0x9EA7,0x4F4D, /* Array index: 0x1FAC */ 0x9EAD,0x5C3F, /* Array index: 0x1FAC */ 0x9EAE,0x5C3E, /* Array index: 0x1FAC */ 0x9EB0,0x6139, /* Array index: 0x1FAC */ 0x9EB6,0x6E74, /* Array index: 0x1FAC */ 0x9EB7,0x7239, /* Array index: 0x1FAC */ 0x9EC0,0x6861, /* Array index: 0x1FAC */ 0x9EC2,0x7024, /* Array index: 0x1FAC */ 0x9EC8,0x613A, /* Array index: 0x1FAC */ 0x9ED0,0x7025, /* Array index: 0x1FAC */ 0x9ED3,0x563C, /* Array index: 0x1FAC */ 0x9ED5,0x5C40, /* Array index: 0x1FAC */ 0x9ED6,0x5C41, /* Array index: 0x1FAC */ 0x9EDA,0x613B, /* Array index: 0x1FAC */ 0x9EDF,0x652C, /* Array index: 0x1FAC */ 0x9EEB,0x6D39, /* Array index: 0x1FAC */ 0x9EED,0x6D3B, /* Array index: 0x1FAC */ 0x9EEE,0x6D3A, /* Array index: 0x1FAC */ 0x9EF0,0x6E75, /* Array index: 0x1FAC */ 0x9F06,0x7028, /* Array index: 0x1FAC */ 0x9F09,0x7154, /* Array index: 0x1FAC */ 0x9F0A,0x716E, /* Array index: 0x1FAC */ 0x9F0F,0x563D, /* Array index: 0x1FAC */ 0x9F10,0x563E, /* Array index: 0x1FAC */ 0x9F12,0x5C43, /* Array index: 0x1FAC */ 0x9F16,0x652F, /* Array index: 0x1FAC */ 0x9F3D,0x5C44, /* Array index: 0x1FAC */ 0x9F64,0x6D42, /* Array index: 0x1FAC */ 0x9F65,0x6D41, /* Array index: 0x1FAC */ 0x9F6B,0x6E7A, /* Array index: 0x1FAC */ 0x9F7E,0x7242, /* Array index: 0x1FAC */ 0x9F91,0x6B4D, /* Array index: 0x1FAC */ 0x9F92,0x6D43, /* Array index: 0x1FAC */ 0x9F95,0x6E7B, /* Array index: 0x1FAC */ 0x9F98,0x7244, /* Array index: 0x1FAC */ 0x9FA0,0x6142, /* Array index: 0x1FAC */ 0x9FA2,0x6E7C, /* Array index: 0x1FAC */ 0x9FA4,0x716F, }; #endif /* ICONV_FROM_UCS_CCS_CNS11643_PLANE2 && defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * cns11643_plane2 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_cns11643_plane2 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_CNS11643_PLANE2, /* CCS name */ TABLE_16BIT, /* Table bits */ #if defined (ICONV_FROM_UCS_CCS_CNS11643_PLANE2) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SIZE_OPTIMIZED, (__uint16_t *)&from_ucs_size_cns11643_plane2, /* UCS -> cns11643_plane2 table size-optimized table */ #elif defined (ICONV_FROM_UCS_CCS_CNS11643_PLANE2) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SPEED_OPTIMIZED, (__uint16_t *)&from_ucs_speed_cns11643_plane2, /* UCS -> cns11643_plane2 table speed-optimized table */ #else TABLE_SPEED_OPTIMIZED, (__uint16_t *)NULL, #endif #if defined (ICONV_TO_UCS_CCS_CNS11643_PLANE2) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SIZE_OPTIMIZED, (__uint16_t *)&to_ucs_size_cns11643_plane2 /* cns11643_plane2 -> UCS table speed-optimized table */ #elif defined (ICONV_TO_UCS_CCS_CNS11643_PLANE2) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SPEED_OPTIMIZED, (__uint16_t *)&to_ucs_speed_cns11643_plane2 /* cns11643_plane2 -> UCS table speed-optimized table */ #else TABLE_SPEED_OPTIMIZED, (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_CNS11643_PLANE2) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/cp775.c000066400000000000000000000316151414576234500204200ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for cp775 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_CP775) \ || defined (ICONV_FROM_UCS_CCS_CP775) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit cp775 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_CP775) static const __uint16_t to_ucs_speed_cp775[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x0106,0x00FC,0x00E9,0x0101,0x00E4,0x0123,0x00E5,0x0107, 0x0142,0x0113,0x0156,0x0157,0x012B,0x0179,0x00C4,0x00C5, 0x00C9,0x00E6,0x00C6,0x014D,0x00F6,0x0122,0x00A2,0x015A, 0x015B,0x00D6,0x00DC,0x00F8,0x00A3,0x00D8,0x00D7,0x00A4, 0x0100,0x012A,0x00F3,0x017B,0x017C,0x017A,0x201D,0x00A6, 0x00A9,0x00AE,0x00AC,0x00BD,0x00BC,0x0141,0x00AB,0x00BB, 0x2591,0x2592,0x2593,0x2502,0x2524,0x0104,0x010C,0x0118, 0x0116,0x2563,0x2551,0x2557,0x255D,0x012E,0x0160,0x2510, 0x2514,0x2534,0x252C,0x251C,0x2500,0x253C,0x0172,0x016A, 0x255A,0x2554,0x2569,0x2566,0x2560,0x2550,0x256C,0x017D, 0x0105,0x010D,0x0119,0x0117,0x012F,0x0161,0x0173,0x016B, 0x017E,0x2518,0x250C,0x2588,0x2584,0x258C,0x2590,0x2580, 0x00D3,0x00DF,0x014C,0x0143,0x00F5,0x00D5,0x00B5,0x0144, 0x0136,0x0137,0x013B,0x013C,0x0146,0x0112,0x0145,0x2019, 0x00AD,0x00B1,0x201C,0x00BE,0x00B6,0x00A7,0x00F7,0x201E, 0x00B0,0x2219,0x00B7,0x00B9,0x00B3,0x00B2,0x25A0,0x00A0, }; #endif /* ICONV_TO_UCS_CCS_CP775 */ /* * 8-bit UCS -> cp775 speed-optimized table (1794 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_CP775) static const unsigned char from_ucs_speed_cp775[] = { W(0x00A0), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(0x0302),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(0x0402),W(INVBLK),W(0x0502),W(INVBLK), W(INVBLK),W(0x0602),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x96,0x9C,0x9F,0xFF,0xA7,0xF5, 0xFF,0xA8,0xFF,0xAE,0xAA,0xF0,0xA9,0xFF, 0xF8,0xF1,0xFD,0xFC,0xFF,0xE6,0xF4,0xFA, 0xFF,0xFB,0xFF,0xAF,0xAC,0xAB,0xF3,0xFF, 0xFF,0xFF,0xFF,0xFF,0x8E,0x8F,0x92,0xFF, 0xFF,0x90,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xE0,0xFF,0xE5,0x99,0x9E, 0x9D,0xFF,0xFF,0xFF,0x9A,0xFF,0xFF,0xE1, 0xFF,0xFF,0xFF,0xFF,0x84,0x86,0x91,0xFF, 0xFF,0x82,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xA2,0xFF,0xE4,0x94,0xF6, 0x9B,0xFF,0xFF,0xFF,0x81,0xFF,0xFF,0xFF, /* Block 2, Array index 0x0302 */ 0xA0,0x83,0xFF,0xFF,0xB5,0xD0,0x80,0x87, 0xFF,0xFF,0xFF,0xFF,0xB6,0xD1,0xFF,0xFF, 0xFF,0xFF,0xED,0x89,0xFF,0xFF,0xB8,0xD3, 0xB7,0xD2,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x95,0x85,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xA1,0x8C,0xFF,0xFF,0xBD,0xD4, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE8,0xE9, 0xFF,0xFF,0xFF,0xEA,0xEB,0xFF,0xFF,0xFF, 0xFF,0xAD,0x88,0xE3,0xE7,0xEE,0xEC,0xFF, 0xFF,0xFF,0xFF,0xFF,0xE2,0x93,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x8A,0x8B, 0xFF,0xFF,0x97,0x98,0xFF,0xFF,0xFF,0xFF, 0xBE,0xD5,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xC7,0xD7,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xC6,0xD6,0xFF,0xFF,0xFF,0xFF, 0xFF,0x8D,0xA5,0xA3,0xA4,0xCF,0xD8,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 33, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xEF,0xFF,0xFF,0xF2,0xA6,0xF7,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 35, Array index 0x0502 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xF9,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 38, Array index 0x0602 */ 0xC4,0xFF,0xB3,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xDA,0xFF,0xFF,0xFF, 0xBF,0xFF,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF, 0xD9,0xFF,0xFF,0xFF,0xC3,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xB4,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xC2,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xC1,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xC5,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xCD,0xBA,0xFF,0xFF,0xC9,0xFF,0xFF,0xBB, 0xFF,0xFF,0xC8,0xFF,0xFF,0xBC,0xFF,0xFF, 0xCC,0xFF,0xFF,0xB9,0xFF,0xFF,0xCB,0xFF, 0xFF,0xCA,0xFF,0xFF,0xCE,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xDF,0xFF,0xFF,0xFF,0xDC,0xFF,0xFF,0xFF, 0xDB,0xFF,0xFF,0xFF,0xDD,0xFF,0xFF,0xFF, 0xDE,0xB0,0xB1,0xB2,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_CP775 */ /* * cp775 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_cp775 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_CP775, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_CP775) (__uint16_t *)&from_ucs_speed_cp775, /* UCS -> cp775 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_CP775) (__uint16_t *)&to_ucs_speed_cp775 /* cp775 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_CP775) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/cp850.c000066400000000000000000000270511414576234500204110ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for cp850 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_CP850) \ || defined (ICONV_FROM_UCS_CCS_CP850) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit cp850 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_CP850) static const __uint16_t to_ucs_speed_cp850[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x00C7,0x00FC,0x00E9,0x00E2,0x00E4,0x00E0,0x00E5,0x00E7, 0x00EA,0x00EB,0x00E8,0x00EF,0x00EE,0x00EC,0x00C4,0x00C5, 0x00C9,0x00E6,0x00C6,0x00F4,0x00F6,0x00F2,0x00FB,0x00F9, 0x00FF,0x00D6,0x00DC,0x00F8,0x00A3,0x00D8,0x00D7,0x0192, 0x00E1,0x00ED,0x00F3,0x00FA,0x00F1,0x00D1,0x00AA,0x00BA, 0x00BF,0x00AE,0x00AC,0x00BD,0x00BC,0x00A1,0x00AB,0x00BB, 0x2591,0x2592,0x2593,0x2502,0x2524,0x00C1,0x00C2,0x00C0, 0x00A9,0x2563,0x2551,0x2557,0x255D,0x00A2,0x00A5,0x2510, 0x2514,0x2534,0x252C,0x251C,0x2500,0x253C,0x00E3,0x00C3, 0x255A,0x2554,0x2569,0x2566,0x2560,0x2550,0x256C,0x00A4, 0x00F0,0x00D0,0x00CA,0x00CB,0x00C8,0x0131,0x00CD,0x00CE, 0x00CF,0x2518,0x250C,0x2588,0x2584,0x00A6,0x00CC,0x2580, 0x00D3,0x00DF,0x00D4,0x00D2,0x00F5,0x00D5,0x00B5,0x00FE, 0x00DE,0x00DA,0x00DB,0x00D9,0x00FD,0x00DD,0x00AF,0x00B4, 0x00AD,0x00B1,0x2017,0x00BE,0x00B6,0x00A7,0x00F7,0x00B8, 0x00B0,0x00A8,0x00B7,0x00B9,0x00B3,0x00B2,0x25A0,0x00A0, }; #endif /* ICONV_TO_UCS_CCS_CP850 */ /* * 8-bit UCS -> cp850 speed-optimized table (1538 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_CP850) static const unsigned char from_ucs_speed_cp850[] = { W(0x00A0), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(0x0302),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(0x0402),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(0x0502),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xAD,0xBD,0x9C,0xCF,0xBE,0xDD,0xF5, 0xF9,0xB8,0xA6,0xAE,0xAA,0xF0,0xA9,0xEE, 0xF8,0xF1,0xFD,0xFC,0xEF,0xE6,0xF4,0xFA, 0xF7,0xFB,0xA7,0xAF,0xAC,0xAB,0xF3,0xA8, 0xB7,0xB5,0xB6,0xC7,0x8E,0x8F,0x92,0x80, 0xD4,0x90,0xD2,0xD3,0xDE,0xD6,0xD7,0xD8, 0xD1,0xA5,0xE3,0xE0,0xE2,0xE5,0x99,0x9E, 0x9D,0xEB,0xE9,0xEA,0x9A,0xED,0xE8,0xE1, 0x85,0xA0,0x83,0xC6,0x84,0x86,0x91,0x87, 0x8A,0x82,0x88,0x89,0x8D,0xA1,0x8C,0x8B, 0xD0,0xA4,0x95,0xA2,0x93,0xE4,0x94,0xF6, 0x9B,0x97,0xA3,0x96,0x81,0xEC,0xE7,0x98, /* Block 2, Array index 0x0302 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xD5,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x9F,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 33, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF2, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 38, Array index 0x0502 */ 0xC4,0xFF,0xB3,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xDA,0xFF,0xFF,0xFF, 0xBF,0xFF,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF, 0xD9,0xFF,0xFF,0xFF,0xC3,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xB4,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xC2,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xC1,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xC5,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xCD,0xBA,0xFF,0xFF,0xC9,0xFF,0xFF,0xBB, 0xFF,0xFF,0xC8,0xFF,0xFF,0xBC,0xFF,0xFF, 0xCC,0xFF,0xFF,0xB9,0xFF,0xFF,0xCB,0xFF, 0xFF,0xCA,0xFF,0xFF,0xCE,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xDF,0xFF,0xFF,0xFF,0xDC,0xFF,0xFF,0xFF, 0xDB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xB0,0xB1,0xB2,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_CP850 */ /* * cp850 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_cp850 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_CP850, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_CP850) (__uint16_t *)&from_ucs_speed_cp850, /* UCS -> cp850 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_CP850) (__uint16_t *)&to_ucs_speed_cp850 /* cp850 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_CP850) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/cp852.c000066400000000000000000000270501414576234500204120ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for cp852 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_CP852) \ || defined (ICONV_FROM_UCS_CCS_CP852) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit cp852 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_CP852) static const __uint16_t to_ucs_speed_cp852[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x00C7,0x00FC,0x00E9,0x00E2,0x00E4,0x016F,0x0107,0x00E7, 0x0142,0x00EB,0x0150,0x0151,0x00EE,0x0179,0x00C4,0x0106, 0x00C9,0x0139,0x013A,0x00F4,0x00F6,0x013D,0x013E,0x015A, 0x015B,0x00D6,0x00DC,0x0164,0x0165,0x0141,0x00D7,0x010D, 0x00E1,0x00ED,0x00F3,0x00FA,0x0104,0x0105,0x017D,0x017E, 0x0118,0x0119,0x00AC,0x017A,0x010C,0x015F,0x00AB,0x00BB, 0x2591,0x2592,0x2593,0x2502,0x2524,0x00C1,0x00C2,0x011A, 0x015E,0x2563,0x2551,0x2557,0x255D,0x017B,0x017C,0x2510, 0x2514,0x2534,0x252C,0x251C,0x2500,0x253C,0x0102,0x0103, 0x255A,0x2554,0x2569,0x2566,0x2560,0x2550,0x256C,0x00A4, 0x0111,0x0110,0x010E,0x00CB,0x010F,0x0147,0x00CD,0x00CE, 0x011B,0x2518,0x250C,0x2588,0x2584,0x0162,0x016E,0x2580, 0x00D3,0x00DF,0x00D4,0x0143,0x0144,0x0148,0x0160,0x0161, 0x0154,0x00DA,0x0155,0x0170,0x00FD,0x00DD,0x0163,0x00B4, 0x00AD,0x02DD,0x02DB,0x02C7,0x02D8,0x00A7,0x00F7,0x00B8, 0x00B0,0x00A8,0x02D9,0x0171,0x0158,0x0159,0x25A0,0x00A0, }; #endif /* ICONV_TO_UCS_CCS_CP852 */ /* * 8-bit UCS -> cp852 speed-optimized table (1538 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_CP852) static const unsigned char from_ucs_speed_cp852[] = { W(0x00A0), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(0x0302),W(0x0402),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(0x0502),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xCF,0xFF,0xFF,0xF5, 0xF9,0xFF,0xFF,0xAE,0xAA,0xF0,0xFF,0xFF, 0xF8,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF, 0xF7,0xFF,0xFF,0xAF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xB5,0xB6,0xFF,0x8E,0xFF,0xFF,0x80, 0xFF,0x90,0xFF,0xD3,0xFF,0xD6,0xD7,0xFF, 0xFF,0xFF,0xFF,0xE0,0xE2,0xFF,0x99,0x9E, 0xFF,0xFF,0xE9,0xFF,0x9A,0xED,0xFF,0xE1, 0xFF,0xA0,0x83,0xFF,0x84,0xFF,0xFF,0x87, 0xFF,0x82,0xFF,0x89,0xFF,0xA1,0x8C,0xFF, 0xFF,0xFF,0xFF,0xA2,0x93,0xFF,0x94,0xF6, 0xFF,0xFF,0xA3,0xFF,0x81,0xEC,0xFF,0xFF, /* Block 2, Array index 0x0302 */ 0xFF,0xFF,0xC6,0xC7,0xA4,0xA5,0x8F,0x86, 0xFF,0xFF,0xFF,0xFF,0xAC,0x9F,0xD2,0xD4, 0xD1,0xD0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xA8,0xA9,0xB7,0xD8,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x91,0x92,0xFF,0xFF,0x95,0x96,0xFF, 0xFF,0x9D,0x88,0xE3,0xE4,0xFF,0xFF,0xD5, 0xE5,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x8A,0x8B,0xFF,0xFF,0xE8,0xEA,0xFF,0xFF, 0xFC,0xFD,0x97,0x98,0xFF,0xFF,0xB8,0xAD, 0xE6,0xE7,0xDD,0xEE,0x9B,0x9C,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDE,0x85, 0xEB,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x8D,0xAB,0xBD,0xBE,0xA6,0xA7,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 3, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xF4,0xFA,0xFF,0xF2,0xFF,0xF1,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 38, Array index 0x0502 */ 0xC4,0xFF,0xB3,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xDA,0xFF,0xFF,0xFF, 0xBF,0xFF,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF, 0xD9,0xFF,0xFF,0xFF,0xC3,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xB4,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xC2,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xC1,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xC5,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xCD,0xBA,0xFF,0xFF,0xC9,0xFF,0xFF,0xBB, 0xFF,0xFF,0xC8,0xFF,0xFF,0xBC,0xFF,0xFF, 0xCC,0xFF,0xFF,0xB9,0xFF,0xFF,0xCB,0xFF, 0xFF,0xCA,0xFF,0xFF,0xCE,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xDF,0xFF,0xFF,0xFF,0xDC,0xFF,0xFF,0xFF, 0xDB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xB0,0xB1,0xB2,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_CP852 */ /* * cp852 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_cp852 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_CP852, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_CP852) (__uint16_t *)&from_ucs_speed_cp852, /* UCS -> cp852 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_CP852) (__uint16_t *)&to_ucs_speed_cp852 /* cp852 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_CP852) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/cp855.c000066400000000000000000000270511414576234500204160ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for cp855 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_CP855) \ || defined (ICONV_FROM_UCS_CCS_CP855) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit cp855 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_CP855) static const __uint16_t to_ucs_speed_cp855[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x0452,0x0402,0x0453,0x0403,0x0451,0x0401,0x0454,0x0404, 0x0455,0x0405,0x0456,0x0406,0x0457,0x0407,0x0458,0x0408, 0x0459,0x0409,0x045A,0x040A,0x045B,0x040B,0x045C,0x040C, 0x045E,0x040E,0x045F,0x040F,0x044E,0x042E,0x044A,0x042A, 0x0430,0x0410,0x0431,0x0411,0x0446,0x0426,0x0434,0x0414, 0x0435,0x0415,0x0444,0x0424,0x0433,0x0413,0x00AB,0x00BB, 0x2591,0x2592,0x2593,0x2502,0x2524,0x0445,0x0425,0x0438, 0x0418,0x2563,0x2551,0x2557,0x255D,0x0439,0x0419,0x2510, 0x2514,0x2534,0x252C,0x251C,0x2500,0x253C,0x043A,0x041A, 0x255A,0x2554,0x2569,0x2566,0x2560,0x2550,0x256C,0x00A4, 0x043B,0x041B,0x043C,0x041C,0x043D,0x041D,0x043E,0x041E, 0x043F,0x2518,0x250C,0x2588,0x2584,0x041F,0x044F,0x2580, 0x042F,0x0440,0x0420,0x0441,0x0421,0x0442,0x0422,0x0443, 0x0423,0x0436,0x0416,0x0432,0x0412,0x044C,0x042C,0x2116, 0x00AD,0x044B,0x042B,0x0437,0x0417,0x0448,0x0428,0x044D, 0x042D,0x0449,0x0429,0x0447,0x0427,0x00A7,0x25A0,0x00A0, }; #endif /* ICONV_TO_UCS_CCS_CP855 */ /* * 8-bit UCS -> cp855 speed-optimized table (1538 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_CP855) static const unsigned char from_ucs_speed_cp855[] = { W(0x00A0), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(INVBLK),W(INVBLK),W(INVBLK), W(0x0302),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(0x0402),W(INVBLK),W(INVBLK), W(INVBLK),W(0x0502),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xCF,0xFF,0xFF,0xFD, 0xFF,0xFF,0xFF,0xAE,0xFF,0xF0,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xAF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 5, Array index 0x0302 */ 0xFF,0x85,0x81,0x83,0x87,0x89,0x8B,0x8D, 0x8F,0x91,0x93,0x95,0x97,0xFF,0x99,0x9B, 0xA1,0xA3,0xEC,0xAD,0xA7,0xA9,0xEA,0xF4, 0xB8,0xBE,0xC7,0xD1,0xD3,0xD5,0xD7,0xDD, 0xE2,0xE4,0xE6,0xE8,0xAB,0xB6,0xA5,0xFC, 0xF6,0xFA,0x9F,0xF2,0xEE,0xF8,0x9D,0xE0, 0xA0,0xA2,0xEB,0xAC,0xA6,0xA8,0xE9,0xF3, 0xB7,0xBD,0xC6,0xD0,0xD2,0xD4,0xD6,0xD8, 0xE1,0xE3,0xE5,0xE7,0xAA,0xB5,0xA4,0xFB, 0xF5,0xF9,0x9E,0xF1,0xED,0xF7,0x9C,0xDE, 0xFF,0x84,0x80,0x82,0x86,0x88,0x8A,0x8C, 0x8E,0x90,0x92,0x94,0x96,0xFF,0x98,0x9A, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 34, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 38, Array index 0x0502 */ 0xC4,0xFF,0xB3,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xDA,0xFF,0xFF,0xFF, 0xBF,0xFF,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF, 0xD9,0xFF,0xFF,0xFF,0xC3,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xB4,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xC2,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xC1,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xC5,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xCD,0xBA,0xFF,0xFF,0xC9,0xFF,0xFF,0xBB, 0xFF,0xFF,0xC8,0xFF,0xFF,0xBC,0xFF,0xFF, 0xCC,0xFF,0xFF,0xB9,0xFF,0xFF,0xCB,0xFF, 0xFF,0xCA,0xFF,0xFF,0xCE,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xDF,0xFF,0xFF,0xFF,0xDC,0xFF,0xFF,0xFF, 0xDB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xB0,0xB1,0xB2,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_CP855 */ /* * cp855 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_cp855 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_CP855, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_CP855) (__uint16_t *)&from_ucs_speed_cp855, /* UCS -> cp855 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_CP855) (__uint16_t *)&to_ucs_speed_cp855 /* cp855 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_CP855) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/cp866.c000066400000000000000000000316151414576234500204210ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for cp866 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_CP866) \ || defined (ICONV_FROM_UCS_CCS_CP866) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit cp866 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_CP866) static const __uint16_t to_ucs_speed_cp866[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x0410,0x0411,0x0412,0x0413,0x0414,0x0415,0x0416,0x0417, 0x0418,0x0419,0x041A,0x041B,0x041C,0x041D,0x041E,0x041F, 0x0420,0x0421,0x0422,0x0423,0x0424,0x0425,0x0426,0x0427, 0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E,0x042F, 0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,0x0437, 0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,0x043F, 0x2591,0x2592,0x2593,0x2502,0x2524,0x2561,0x2562,0x2556, 0x2555,0x2563,0x2551,0x2557,0x255D,0x255C,0x255B,0x2510, 0x2514,0x2534,0x252C,0x251C,0x2500,0x253C,0x255E,0x255F, 0x255A,0x2554,0x2569,0x2566,0x2560,0x2550,0x256C,0x2567, 0x2568,0x2564,0x2565,0x2559,0x2558,0x2552,0x2553,0x256B, 0x256A,0x2518,0x250C,0x2588,0x2584,0x258C,0x2590,0x2580, 0x0440,0x0441,0x0442,0x0443,0x0444,0x0445,0x0446,0x0447, 0x0448,0x0449,0x044A,0x044B,0x044C,0x044D,0x044E,0x044F, 0x0401,0x0451,0x0404,0x0454,0x0407,0x0457,0x040E,0x045E, 0x00B0,0x2219,0x00B7,0x221A,0x2116,0x00A4,0x25A0,0x00A0, }; #endif /* ICONV_TO_UCS_CCS_CP866 */ /* * 8-bit UCS -> cp866 speed-optimized table (1794 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_CP866) static const unsigned char from_ucs_speed_cp866[] = { W(0x00A0), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(INVBLK),W(INVBLK),W(INVBLK), W(0x0302),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(0x0402),W(0x0502),W(INVBLK), W(INVBLK),W(0x0602),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 5, Array index 0x0302 */ 0xFF,0xF0,0xFF,0xFF,0xF2,0xFF,0xFF,0xF4, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF6,0xFF, 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, 0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7, 0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7, 0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, 0xFF,0xF1,0xFF,0xFF,0xF3,0xFF,0xFF,0xF5, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 34, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 35, Array index 0x0502 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xF9,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 38, Array index 0x0602 */ 0xC4,0xFF,0xB3,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xDA,0xFF,0xFF,0xFF, 0xBF,0xFF,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF, 0xD9,0xFF,0xFF,0xFF,0xC3,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xB4,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xC2,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xC1,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xC5,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xCD,0xBA,0xD5,0xD6,0xC9,0xB8,0xB7,0xBB, 0xD4,0xD3,0xC8,0xBE,0xBD,0xBC,0xC6,0xC7, 0xCC,0xB5,0xB6,0xB9,0xD1,0xD2,0xCB,0xCF, 0xD0,0xCA,0xD8,0xD7,0xCE,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xDF,0xFF,0xFF,0xFF,0xDC,0xFF,0xFF,0xFF, 0xDB,0xFF,0xFF,0xFF,0xDD,0xFF,0xFF,0xFF, 0xDE,0xB0,0xB1,0xB2,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_CP866 */ /* * cp866 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_cp866 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_CP866, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_CP866) (__uint16_t *)&from_ucs_speed_cp866, /* UCS -> cp866 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_CP866) (__uint16_t *)&to_ucs_speed_cp866 /* cp866 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_CP866) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/iso_8859_1.c000066400000000000000000000171461414576234500212650ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for iso_8859_1 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_ISO_8859_1) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_1) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit iso_8859_1 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_1) static const __uint16_t to_ucs_speed_iso_8859_1[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087, 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F, 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097, 0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F, 0x00A0,0x00A1,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7, 0x00A8,0x00A9,0x00AA,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF, 0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7, 0x00B8,0x00B9,0x00BA,0x00BB,0x00BC,0x00BD,0x00BE,0x00BF, 0x00C0,0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x00C7, 0x00C8,0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF, 0x00D0,0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0x00D7, 0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,0x00DD,0x00DE,0x00DF, 0x00E0,0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x00E7, 0x00E8,0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF, 0x00F0,0x00F1,0x00F2,0x00F3,0x00F4,0x00F5,0x00F6,0x00F7, 0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,0x00FD,0x00FE,0x00FF, }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_1 */ /* * 8-bit UCS -> iso_8859_1 speed-optimized table (770 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_1) static const unsigned char from_ucs_speed_iso_8859_1[] = { W(0x00FF), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, 0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7, 0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7, 0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7, 0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7, 0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7, 0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7, 0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_ISO_8859_1 */ /* * iso_8859_1 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_iso_8859_1 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_ISO_8859_1, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_1) (__uint16_t *)&from_ucs_speed_iso_8859_1, /* UCS -> iso_8859_1 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_1) (__uint16_t *)&to_ucs_speed_iso_8859_1 /* iso_8859_1 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_1) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/iso_8859_10.c000066400000000000000000000245031414576234500213400ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for iso_8859_10 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_ISO_8859_10) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_10) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit iso_8859_10 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_10) static const __uint16_t to_ucs_speed_iso_8859_10[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087, 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F, 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097, 0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F, 0x00A0,0x0104,0x0112,0x0122,0x012A,0x0128,0x0136,0x00A7, 0x013B,0x0110,0x0160,0x0166,0x017D,0x00AD,0x016A,0x014A, 0x00B0,0x0105,0x0113,0x0123,0x012B,0x0129,0x0137,0x00B7, 0x013C,0x0111,0x0161,0x0167,0x017E,0x2015,0x016B,0x014B, 0x0100,0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x012E, 0x010C,0x00C9,0x0118,0x00CB,0x0116,0x00CD,0x00CE,0x00CF, 0x00D0,0x0145,0x014C,0x00D3,0x00D4,0x00D5,0x00D6,0x0168, 0x00D8,0x0172,0x00DA,0x00DB,0x00DC,0x00DD,0x00DE,0x00DF, 0x0101,0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x012F, 0x010D,0x00E9,0x0119,0x00EB,0x0117,0x00ED,0x00EE,0x00EF, 0x00F0,0x0146,0x014D,0x00F3,0x00F4,0x00F5,0x00F6,0x0169, 0x00F8,0x0173,0x00FA,0x00FB,0x00FC,0x00FD,0x00FE,0x0138, }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_10 */ /* * 8-bit UCS -> iso_8859_10 speed-optimized table (1282 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_10) static const unsigned char from_ucs_speed_iso_8859_10[] = { W(0x0138), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(0x0302),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(0x0402),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, 0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, 0xA0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xA7, 0xFF,0xFF,0xFF,0xFF,0xFF,0xAD,0xFF,0xFF, 0xB0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xB7, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xFF, 0xFF,0xC9,0xFF,0xCB,0xFF,0xCD,0xCE,0xCF, 0xD0,0xFF,0xFF,0xD3,0xD4,0xD5,0xD6,0xFF, 0xD8,0xFF,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, 0xFF,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xFF, 0xFF,0xE9,0xFF,0xEB,0xFF,0xED,0xEE,0xEF, 0xF0,0xFF,0xFF,0xF3,0xF4,0xF5,0xF6,0xFF, 0xF8,0xFF,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF, /* Block 2, Array index 0x0302 */ 0xC0,0xE0,0xFF,0xFF,0xA1,0xB1,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xC8,0xE8,0xFF,0xFF, 0xA9,0xB9,0xA2,0xB2,0xFF,0xFF,0xCC,0xEC, 0xCA,0xEA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xA3,0xB3,0xFF,0xFF,0xFF,0xFF, 0xA5,0xB5,0xA4,0xB4,0xFF,0xFF,0xC7,0xE7, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xA6,0xB6, 0xFF,0xFF,0xFF,0xA8,0xB8,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xD1,0xF1,0xFF, 0xFF,0xFF,0xAF,0xBF,0xD2,0xF2,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xAA,0xBA,0xFF,0xFF,0xFF,0xFF,0xAB,0xBB, 0xD7,0xF7,0xAE,0xBE,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xD9,0xF9,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xAC,0xBC,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 33, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xBD,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_ISO_8859_10 */ /* * iso_8859_10 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_iso_8859_10 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_ISO_8859_10, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_10) (__uint16_t *)&from_ucs_speed_iso_8859_10, /* UCS -> iso_8859_10 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_10) (__uint16_t *)&to_ucs_speed_iso_8859_10 /* iso_8859_10 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_10) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/iso_8859_11.c000066400000000000000000000217401414576234500213410ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for iso_8859_11 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_ISO_8859_11) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_11) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit iso_8859_11 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_11) static const __uint16_t to_ucs_speed_iso_8859_11[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087, 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F, 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097, 0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F, 0x00A0,0x0E01,0x0E02,0x0E03,0x0E04,0x0E05,0x0E06,0x0E07, 0x0E08,0x0E09,0x0E0A,0x0E0B,0x0E0C,0x0E0D,0x0E0E,0x0E0F, 0x0E10,0x0E11,0x0E12,0x0E13,0x0E14,0x0E15,0x0E16,0x0E17, 0x0E18,0x0E19,0x0E1A,0x0E1B,0x0E1C,0x0E1D,0x0E1E,0x0E1F, 0x0E20,0x0E21,0x0E22,0x0E23,0x0E24,0x0E25,0x0E26,0x0E27, 0x0E28,0x0E29,0x0E2A,0x0E2B,0x0E2C,0x0E2D,0x0E2E,0x0E2F, 0x0E30,0x0E31,0x0E32,0x0E33,0x0E34,0x0E35,0x0E36,0x0E37, 0x0E38,0x0E39,0x0E3A,INVALC,INVALC,INVALC,INVALC,0x0E3F, 0x0E40,0x0E41,0x0E42,0x0E43,0x0E44,0x0E45,0x0E46,0x0E47, 0x0E48,0x0E49,0x0E4A,0x0E4B,0x0E4C,0x0E4D,0x0E4E,0x0E4F, 0x0E50,0x0E51,0x0E52,0x0E53,0x0E54,0x0E55,0x0E56,0x0E57, 0x0E58,0x0E59,0x0E5A,0x0E5B,INVALC,INVALC,INVALC,INVALC, }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_11 */ /* * 8-bit UCS -> iso_8859_11 speed-optimized table (1026 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_11) static const unsigned char from_ucs_speed_iso_8859_11[] = { W(0xFFFF), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(0x0302),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, 0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, 0xA0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 15, Array index 0x0302 */ 0xFF,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7, 0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7, 0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7, 0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7, 0xD8,0xD9,0xDA,0xFF,0xFF,0xFF,0xFF,0xDF, 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7, 0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7, 0xF8,0xF9,0xFA,0xFB,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_ISO_8859_11 */ /* * iso_8859_11 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_iso_8859_11 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_ISO_8859_11, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_11) (__uint16_t *)&from_ucs_speed_iso_8859_11, /* UCS -> iso_8859_11 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_11) (__uint16_t *)&to_ucs_speed_iso_8859_11 /* iso_8859_11 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_11) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/iso_8859_13.c000066400000000000000000000245031414576234500213430ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for iso_8859_13 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_ISO_8859_13) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_13) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit iso_8859_13 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_13) static const __uint16_t to_ucs_speed_iso_8859_13[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087, 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F, 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097, 0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F, 0x00A0,0x201D,0x00A2,0x00A3,0x00A4,0x201E,0x00A6,0x00A7, 0x00D8,0x00A9,0x0156,0x00AB,0x00AC,0x00AD,0x00AE,0x00C6, 0x00B0,0x00B1,0x00B2,0x00B3,0x201C,0x00B5,0x00B6,0x00B7, 0x00F8,0x00B9,0x0157,0x00BB,0x00BC,0x00BD,0x00BE,0x00E6, 0x0104,0x012E,0x0100,0x0106,0x00C4,0x00C5,0x0118,0x0112, 0x010C,0x00C9,0x0179,0x0116,0x0122,0x0136,0x012A,0x013B, 0x0160,0x0143,0x0145,0x00D3,0x014C,0x00D5,0x00D6,0x00D7, 0x0172,0x0141,0x015A,0x016A,0x00DC,0x017B,0x017D,0x00DF, 0x0105,0x012F,0x0101,0x0107,0x00E4,0x00E5,0x0119,0x0113, 0x010D,0x00E9,0x017A,0x0117,0x0123,0x0137,0x012B,0x013C, 0x0161,0x0144,0x0146,0x00F3,0x014D,0x00F5,0x00F6,0x00F7, 0x0173,0x0142,0x015B,0x016B,0x00FC,0x017C,0x017E,0x2019, }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_13 */ /* * 8-bit UCS -> iso_8859_13 speed-optimized table (1282 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_13) static const unsigned char from_ucs_speed_iso_8859_13[] = { W(0x2019), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(0x0302),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(0x0402),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, 0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, 0xA0,0xFF,0xA2,0xA3,0xA4,0xFF,0xA6,0xA7, 0xFF,0xA9,0xFF,0xAB,0xAC,0xAD,0xAE,0xFF, 0xB0,0xB1,0xB2,0xB3,0xFF,0xB5,0xB6,0xB7, 0xFF,0xB9,0xFF,0xBB,0xBC,0xBD,0xBE,0xFF, 0xFF,0xFF,0xFF,0xFF,0xC4,0xC5,0xAF,0xFF, 0xFF,0xC9,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xD3,0xFF,0xD5,0xD6,0xD7, 0xA8,0xFF,0xFF,0xFF,0xDC,0xFF,0xFF,0xDF, 0xFF,0xFF,0xFF,0xFF,0xE4,0xE5,0xBF,0xFF, 0xFF,0xE9,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xF3,0xFF,0xF5,0xF6,0xF7, 0xB8,0xFF,0xFF,0xFF,0xFC,0xFF,0xFF,0xFF, /* Block 2, Array index 0x0302 */ 0xC2,0xE2,0xFF,0xFF,0xC0,0xE0,0xC3,0xE3, 0xFF,0xFF,0xFF,0xFF,0xC8,0xE8,0xFF,0xFF, 0xFF,0xFF,0xC7,0xE7,0xFF,0xFF,0xCB,0xEB, 0xC6,0xE6,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xCC,0xEC,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xCE,0xEE,0xFF,0xFF,0xC1,0xE1, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCD,0xED, 0xFF,0xFF,0xFF,0xCF,0xEF,0xFF,0xFF,0xFF, 0xFF,0xD9,0xF9,0xD1,0xF1,0xD2,0xF2,0xFF, 0xFF,0xFF,0xFF,0xFF,0xD4,0xF4,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xBA, 0xFF,0xFF,0xDA,0xFA,0xFF,0xFF,0xFF,0xFF, 0xD0,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xDB,0xFB,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xD8,0xF8,0xFF,0xFF,0xFF,0xFF, 0xFF,0xCA,0xEA,0xDD,0xFD,0xDE,0xFE,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 33, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xB4,0xA1,0xA5,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_ISO_8859_13 */ /* * iso_8859_13 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_iso_8859_13 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_ISO_8859_13, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_13) (__uint16_t *)&from_ucs_speed_iso_8859_13, /* UCS -> iso_8859_13 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_13) (__uint16_t *)&to_ucs_speed_iso_8859_13 /* iso_8859_13 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_13) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/iso_8859_14.c000066400000000000000000000245031414576234500213440ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for iso_8859_14 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_ISO_8859_14) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_14) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit iso_8859_14 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_14) static const __uint16_t to_ucs_speed_iso_8859_14[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087, 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F, 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097, 0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F, 0x00A0,0x1E02,0x1E03,0x00A3,0x010A,0x010B,0x1E0A,0x00A7, 0x1E80,0x00A9,0x1E82,0x1E0B,0x1EF2,0x00AD,0x00AE,0x0178, 0x1E1E,0x1E1F,0x0120,0x0121,0x1E40,0x1E41,0x00B6,0x1E56, 0x1E81,0x1E57,0x1E83,0x1E60,0x1EF3,0x1E84,0x1E85,0x1E61, 0x00C0,0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x00C7, 0x00C8,0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF, 0x0174,0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0x1E6A, 0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,0x00DD,0x0176,0x00DF, 0x00E0,0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x00E7, 0x00E8,0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF, 0x0175,0x00F1,0x00F2,0x00F3,0x00F4,0x00F5,0x00F6,0x1E6B, 0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,0x00FD,0x0177,0x00FF, }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_14 */ /* * 8-bit UCS -> iso_8859_14 speed-optimized table (1282 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_14) static const unsigned char from_ucs_speed_iso_8859_14[] = { W(0x00FF), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(0x0302),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(0x0402),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, 0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, 0xA0,0xFF,0xFF,0xA3,0xFF,0xFF,0xFF,0xA7, 0xFF,0xA9,0xFF,0xFF,0xFF,0xAD,0xAE,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xB6,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7, 0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, 0xFF,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xFF, 0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xFF,0xDF, 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7, 0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, 0xFF,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xFF, 0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFF,0xFF, /* Block 2, Array index 0x0302 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xA4,0xA5,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xB2,0xB3,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xD0,0xF0,0xDE,0xFE, 0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 31, Array index 0x0402 */ 0xFF,0xFF,0xA1,0xA2,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xA6,0xAB,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xB0,0xB1, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xB4,0xB5,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xB7,0xB9, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xBB,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xD7,0xF7,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xA8,0xB8,0xAA,0xBA,0xBD,0xBE,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xAC,0xBC,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_ISO_8859_14 */ /* * iso_8859_14 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_iso_8859_14 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_ISO_8859_14, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_14) (__uint16_t *)&from_ucs_speed_iso_8859_14, /* UCS -> iso_8859_14 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_14) (__uint16_t *)&to_ucs_speed_iso_8859_14 /* iso_8859_14 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_14) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/iso_8859_15.c000066400000000000000000000245031414576234500213450ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for iso_8859_15 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_ISO_8859_15) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_15) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit iso_8859_15 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_15) static const __uint16_t to_ucs_speed_iso_8859_15[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087, 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F, 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097, 0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F, 0x00A0,0x00A1,0x00A2,0x00A3,0x20AC,0x00A5,0x0160,0x00A7, 0x0161,0x00A9,0x00AA,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF, 0x00B0,0x00B1,0x00B2,0x00B3,0x017D,0x00B5,0x00B6,0x00B7, 0x017E,0x00B9,0x00BA,0x00BB,0x0152,0x0153,0x0178,0x00BF, 0x00C0,0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x00C7, 0x00C8,0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF, 0x00D0,0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0x00D7, 0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,0x00DD,0x00DE,0x00DF, 0x00E0,0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x00E7, 0x00E8,0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF, 0x00F0,0x00F1,0x00F2,0x00F3,0x00F4,0x00F5,0x00F6,0x00F7, 0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,0x00FD,0x00FE,0x00FF, }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_15 */ /* * 8-bit UCS -> iso_8859_15 speed-optimized table (1282 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_15) static const unsigned char from_ucs_speed_iso_8859_15[] = { W(0x00FF), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(0x0302),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(0x0402),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, 0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, 0xA0,0xA1,0xA2,0xA3,0xFF,0xA5,0xFF,0xA7, 0xFF,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, 0xB0,0xB1,0xB2,0xB3,0xFF,0xB5,0xB6,0xB7, 0xFF,0xB9,0xBA,0xBB,0xFF,0xFF,0xFF,0xBF, 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7, 0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7, 0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7, 0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7, 0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF, /* Block 2, Array index 0x0302 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xBC,0xBD,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xA6,0xA8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xBE,0xFF,0xFF,0xFF,0xFF,0xB4,0xB8,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 33, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xA4,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_ISO_8859_15 */ /* * iso_8859_15 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_iso_8859_15 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_ISO_8859_15, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_15) (__uint16_t *)&from_ucs_speed_iso_8859_15, /* UCS -> iso_8859_15 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_15) (__uint16_t *)&to_ucs_speed_iso_8859_15 /* iso_8859_15 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_15) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/iso_8859_2.c000066400000000000000000000244551414576234500212670ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for iso_8859_2 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_ISO_8859_2) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_2) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit iso_8859_2 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_2) static const __uint16_t to_ucs_speed_iso_8859_2[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087, 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F, 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097, 0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F, 0x00A0,0x0104,0x02D8,0x0141,0x00A4,0x013D,0x015A,0x00A7, 0x00A8,0x0160,0x015E,0x0164,0x0179,0x00AD,0x017D,0x017B, 0x00B0,0x0105,0x02DB,0x0142,0x00B4,0x013E,0x015B,0x02C7, 0x00B8,0x0161,0x015F,0x0165,0x017A,0x02DD,0x017E,0x017C, 0x0154,0x00C1,0x00C2,0x0102,0x00C4,0x0139,0x0106,0x00C7, 0x010C,0x00C9,0x0118,0x00CB,0x011A,0x00CD,0x00CE,0x010E, 0x0110,0x0143,0x0147,0x00D3,0x00D4,0x0150,0x00D6,0x00D7, 0x0158,0x016E,0x00DA,0x0170,0x00DC,0x00DD,0x0162,0x00DF, 0x0155,0x00E1,0x00E2,0x0103,0x00E4,0x013A,0x0107,0x00E7, 0x010D,0x00E9,0x0119,0x00EB,0x011B,0x00ED,0x00EE,0x010F, 0x0111,0x0144,0x0148,0x00F3,0x00F4,0x0151,0x00F6,0x00F7, 0x0159,0x016F,0x00FA,0x0171,0x00FC,0x00FD,0x0163,0x02D9, }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_2 */ /* * 8-bit UCS -> iso_8859_2 speed-optimized table (1282 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_2) static const unsigned char from_ucs_speed_iso_8859_2[] = { W(0x02D9), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(0x0302),W(0x0402),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, 0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, 0xA0,0xFF,0xFF,0xFF,0xA4,0xFF,0xFF,0xA7, 0xA8,0xFF,0xFF,0xFF,0xFF,0xAD,0xFF,0xFF, 0xB0,0xFF,0xFF,0xFF,0xB4,0xFF,0xFF,0xFF, 0xB8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xC1,0xC2,0xFF,0xC4,0xFF,0xFF,0xC7, 0xFF,0xC9,0xFF,0xCB,0xFF,0xCD,0xCE,0xFF, 0xFF,0xFF,0xFF,0xD3,0xD4,0xFF,0xD6,0xD7, 0xFF,0xFF,0xDA,0xFF,0xDC,0xDD,0xFF,0xDF, 0xFF,0xE1,0xE2,0xFF,0xE4,0xFF,0xFF,0xE7, 0xFF,0xE9,0xFF,0xEB,0xFF,0xED,0xEE,0xFF, 0xFF,0xFF,0xFF,0xF3,0xF4,0xFF,0xF6,0xF7, 0xFF,0xFF,0xFA,0xFF,0xFC,0xFD,0xFF,0xFF, /* Block 2, Array index 0x0302 */ 0xFF,0xFF,0xC3,0xE3,0xA1,0xB1,0xC6,0xE6, 0xFF,0xFF,0xFF,0xFF,0xC8,0xE8,0xCF,0xEF, 0xD0,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xCA,0xEA,0xCC,0xEC,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xC5,0xE5,0xFF,0xFF,0xA5,0xB5,0xFF, 0xFF,0xA3,0xB3,0xD1,0xF1,0xFF,0xFF,0xD2, 0xF2,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xD5,0xF5,0xFF,0xFF,0xC0,0xE0,0xFF,0xFF, 0xD8,0xF8,0xA6,0xB6,0xFF,0xFF,0xAA,0xBA, 0xA9,0xB9,0xDE,0xFE,0xAB,0xBB,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD9,0xF9, 0xDB,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xAC,0xBC,0xAF,0xBF,0xAE,0xBE,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 3, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xB7, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xA2,0xFF,0xFF,0xB2,0xFF,0xBD,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_ISO_8859_2 */ /* * iso_8859_2 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_iso_8859_2 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_ISO_8859_2, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_2) (__uint16_t *)&from_ucs_speed_iso_8859_2, /* UCS -> iso_8859_2 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_2) (__uint16_t *)&to_ucs_speed_iso_8859_2 /* iso_8859_2 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_2) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/iso_8859_3.c000066400000000000000000000244551414576234500212700ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for iso_8859_3 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_ISO_8859_3) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_3) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit iso_8859_3 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_3) static const __uint16_t to_ucs_speed_iso_8859_3[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087, 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F, 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097, 0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F, 0x00A0,0x0126,0x02D8,0x00A3,0x00A4,INVALC,0x0124,0x00A7, 0x00A8,0x0130,0x015E,0x011E,0x0134,0x00AD,INVALC,0x017B, 0x00B0,0x0127,0x00B2,0x00B3,0x00B4,0x00B5,0x0125,0x00B7, 0x00B8,0x0131,0x015F,0x011F,0x0135,0x00BD,INVALC,0x017C, 0x00C0,0x00C1,0x00C2,INVALC,0x00C4,0x010A,0x0108,0x00C7, 0x00C8,0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF, INVALC,0x00D1,0x00D2,0x00D3,0x00D4,0x0120,0x00D6,0x00D7, 0x011C,0x00D9,0x00DA,0x00DB,0x00DC,0x016C,0x015C,0x00DF, 0x00E0,0x00E1,0x00E2,INVALC,0x00E4,0x010B,0x0109,0x00E7, 0x00E8,0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF, INVALC,0x00F1,0x00F2,0x00F3,0x00F4,0x0121,0x00F6,0x00F7, 0x011D,0x00F9,0x00FA,0x00FB,0x00FC,0x016D,0x015D,0x02D9, }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_3 */ /* * 8-bit UCS -> iso_8859_3 speed-optimized table (1282 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_3) static const unsigned char from_ucs_speed_iso_8859_3[] = { W(0x02D9), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(0x0302),W(0x0402),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, 0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, 0xA0,0xFF,0xFF,0xA3,0xA4,0xFF,0xFF,0xA7, 0xA8,0xFF,0xFF,0xFF,0xFF,0xAD,0xFF,0xFF, 0xB0,0xFF,0xB2,0xB3,0xB4,0xB5,0xFF,0xB7, 0xB8,0xFF,0xFF,0xFF,0xFF,0xBD,0xFF,0xFF, 0xC0,0xC1,0xC2,0xFF,0xC4,0xFF,0xFF,0xC7, 0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, 0xFF,0xD1,0xD2,0xD3,0xD4,0xFF,0xD6,0xD7, 0xFF,0xD9,0xDA,0xDB,0xDC,0xFF,0xFF,0xDF, 0xE0,0xE1,0xE2,0xFF,0xE4,0xFF,0xFF,0xE7, 0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, 0xFF,0xF1,0xF2,0xF3,0xF4,0xFF,0xF6,0xF7, 0xFF,0xF9,0xFA,0xFB,0xFC,0xFF,0xFF,0xFF, /* Block 2, Array index 0x0302 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xC6,0xE6,0xC5,0xE5,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xD8,0xF8,0xAB,0xBB, 0xD5,0xF5,0xFF,0xFF,0xA6,0xB6,0xA1,0xB1, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xA9,0xB9,0xFF,0xFF,0xAC,0xBC,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xDE,0xFE,0xAA,0xBA, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xDD,0xFD,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xAF,0xBF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 3, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xA2,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_ISO_8859_3 */ /* * iso_8859_3 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_iso_8859_3 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_ISO_8859_3, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_3) (__uint16_t *)&from_ucs_speed_iso_8859_3, /* UCS -> iso_8859_3 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_3) (__uint16_t *)&to_ucs_speed_iso_8859_3 /* iso_8859_3 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_3) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/iso_8859_4.c000066400000000000000000000244551414576234500212710ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for iso_8859_4 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_ISO_8859_4) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_4) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit iso_8859_4 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_4) static const __uint16_t to_ucs_speed_iso_8859_4[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087, 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F, 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097, 0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F, 0x00A0,0x0104,0x0138,0x0156,0x00A4,0x0128,0x013B,0x00A7, 0x00A8,0x0160,0x0112,0x0122,0x0166,0x00AD,0x017D,0x00AF, 0x00B0,0x0105,0x02DB,0x0157,0x00B4,0x0129,0x013C,0x02C7, 0x00B8,0x0161,0x0113,0x0123,0x0167,0x014A,0x017E,0x014B, 0x0100,0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x012E, 0x010C,0x00C9,0x0118,0x00CB,0x0116,0x00CD,0x00CE,0x012A, 0x0110,0x0145,0x014C,0x0136,0x00D4,0x00D5,0x00D6,0x00D7, 0x00D8,0x0172,0x00DA,0x00DB,0x00DC,0x0168,0x016A,0x00DF, 0x0101,0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x012F, 0x010D,0x00E9,0x0119,0x00EB,0x0117,0x00ED,0x00EE,0x012B, 0x0111,0x0146,0x014D,0x0137,0x00F4,0x00F5,0x00F6,0x00F7, 0x00F8,0x0173,0x00FA,0x00FB,0x00FC,0x0169,0x016B,0x02D9, }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_4 */ /* * 8-bit UCS -> iso_8859_4 speed-optimized table (1282 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_4) static const unsigned char from_ucs_speed_iso_8859_4[] = { W(0x02D9), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(0x0302),W(0x0402),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, 0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, 0xA0,0xFF,0xFF,0xFF,0xA4,0xFF,0xFF,0xA7, 0xA8,0xFF,0xFF,0xFF,0xFF,0xAD,0xFF,0xAF, 0xB0,0xFF,0xFF,0xFF,0xB4,0xFF,0xFF,0xFF, 0xB8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xFF, 0xFF,0xC9,0xFF,0xCB,0xFF,0xCD,0xCE,0xFF, 0xFF,0xFF,0xFF,0xFF,0xD4,0xD5,0xD6,0xD7, 0xD8,0xFF,0xDA,0xDB,0xDC,0xFF,0xFF,0xDF, 0xFF,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xFF, 0xFF,0xE9,0xFF,0xEB,0xFF,0xED,0xEE,0xFF, 0xFF,0xFF,0xFF,0xFF,0xF4,0xF5,0xF6,0xF7, 0xF8,0xFF,0xFA,0xFB,0xFC,0xFF,0xFF,0xFF, /* Block 2, Array index 0x0302 */ 0xC0,0xE0,0xFF,0xFF,0xA1,0xB1,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xC8,0xE8,0xFF,0xFF, 0xD0,0xF0,0xAA,0xBA,0xFF,0xFF,0xCC,0xEC, 0xCA,0xEA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xAB,0xBB,0xFF,0xFF,0xFF,0xFF, 0xA5,0xB5,0xCF,0xEF,0xFF,0xFF,0xC7,0xE7, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD3,0xF3, 0xA2,0xFF,0xFF,0xA6,0xB6,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xD1,0xF1,0xFF, 0xFF,0xFF,0xBD,0xBF,0xD2,0xF2,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xA3,0xB3, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xA9,0xB9,0xFF,0xFF,0xFF,0xFF,0xAC,0xBC, 0xDD,0xFD,0xDE,0xFE,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xD9,0xF9,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xAE,0xBE,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 3, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xB7, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xB2,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_ISO_8859_4 */ /* * iso_8859_4 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_iso_8859_4 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_ISO_8859_4, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_4) (__uint16_t *)&from_ucs_speed_iso_8859_4, /* UCS -> iso_8859_4 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_4) (__uint16_t *)&to_ucs_speed_iso_8859_4 /* iso_8859_4 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_4) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/iso_8859_5.c000066400000000000000000000244561414576234500212730ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for iso_8859_5 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_ISO_8859_5) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_5) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit iso_8859_5 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_5) static const __uint16_t to_ucs_speed_iso_8859_5[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087, 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F, 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097, 0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F, 0x00A0,0x0401,0x0402,0x0403,0x0404,0x0405,0x0406,0x0407, 0x0408,0x0409,0x040A,0x040B,0x040C,0x00AD,0x040E,0x040F, 0x0410,0x0411,0x0412,0x0413,0x0414,0x0415,0x0416,0x0417, 0x0418,0x0419,0x041A,0x041B,0x041C,0x041D,0x041E,0x041F, 0x0420,0x0421,0x0422,0x0423,0x0424,0x0425,0x0426,0x0427, 0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E,0x042F, 0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,0x0437, 0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,0x043F, 0x0440,0x0441,0x0442,0x0443,0x0444,0x0445,0x0446,0x0447, 0x0448,0x0449,0x044A,0x044B,0x044C,0x044D,0x044E,0x044F, 0x2116,0x0451,0x0452,0x0453,0x0454,0x0455,0x0456,0x0457, 0x0458,0x0459,0x045A,0x045B,0x045C,0x00A7,0x045E,0x045F, }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_5 */ /* * 8-bit UCS -> iso_8859_5 speed-optimized table (1282 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_5) static const unsigned char from_ucs_speed_iso_8859_5[] = { W(0x045F), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(INVBLK),W(INVBLK),W(INVBLK), W(0x0302),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(0x0402),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, 0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, 0xA0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD, 0xFF,0xFF,0xFF,0xFF,0xFF,0xAD,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 5, Array index 0x0302 */ 0xFF,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7, 0xA8,0xA9,0xAA,0xAB,0xAC,0xFF,0xAE,0xAF, 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7, 0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7, 0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7, 0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7, 0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, 0xFF,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7, 0xF8,0xF9,0xFA,0xFB,0xFC,0xFF,0xFE,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 34, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_ISO_8859_5 */ /* * iso_8859_5 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_iso_8859_5 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_ISO_8859_5, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_5) (__uint16_t *)&from_ucs_speed_iso_8859_5, /* UCS -> iso_8859_5 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_5) (__uint16_t *)&to_ucs_speed_iso_8859_5 /* iso_8859_5 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_5) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/iso_8859_6.c000066400000000000000000000217121414576234500212640ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for iso_8859_6 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_ISO_8859_6) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_6) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit iso_8859_6 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_6) static const __uint16_t to_ucs_speed_iso_8859_6[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087, 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F, 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097, 0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F, 0x00A0,INVALC,INVALC,INVALC,0x00A4,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x060C,0x00AD,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x061B,INVALC,INVALC,INVALC,0x061F, INVALC,0x0621,0x0622,0x0623,0x0624,0x0625,0x0626,0x0627, 0x0628,0x0629,0x062A,0x062B,0x062C,0x062D,0x062E,0x062F, 0x0630,0x0631,0x0632,0x0633,0x0634,0x0635,0x0636,0x0637, 0x0638,0x0639,0x063A,INVALC,INVALC,INVALC,INVALC,INVALC, 0x0640,0x0641,0x0642,0x0643,0x0644,0x0645,0x0646,0x0647, 0x0648,0x0649,0x064A,0x064B,0x064C,0x064D,0x064E,0x064F, 0x0650,0x0651,0x0652,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_6 */ /* * 8-bit UCS -> iso_8859_6 speed-optimized table (1026 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_6) static const unsigned char from_ucs_speed_iso_8859_6[] = { W(0xFFFF), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(0x0302),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, 0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, 0xA0,0xFF,0xFF,0xFF,0xA4,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xAD,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 7, Array index 0x0302 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xAC,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xBB,0xFF,0xFF,0xFF,0xBF, 0xFF,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7, 0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7, 0xD8,0xD9,0xDA,0xFF,0xFF,0xFF,0xFF,0xFF, 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7, 0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, 0xF0,0xF1,0xF2,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_ISO_8859_6 */ /* * iso_8859_6 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_iso_8859_6 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_ISO_8859_6, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_6) (__uint16_t *)&from_ucs_speed_iso_8859_6, /* UCS -> iso_8859_6 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_6) (__uint16_t *)&to_ucs_speed_iso_8859_6 /* iso_8859_6 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_6) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/iso_8859_7.c000066400000000000000000000244561414576234500212750ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for iso_8859_7 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_ISO_8859_7) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_7) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit iso_8859_7 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_7) static const __uint16_t to_ucs_speed_iso_8859_7[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087, 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F, 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097, 0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F, 0x00A0,0x2018,0x2019,0x00A3,INVALC,INVALC,0x00A6,0x00A7, 0x00A8,0x00A9,INVALC,0x00AB,0x00AC,0x00AD,INVALC,0x2015, 0x00B0,0x00B1,0x00B2,0x00B3,0x0384,0x0385,0x0386,0x00B7, 0x0388,0x0389,0x038A,0x00BB,0x038C,0x00BD,0x038E,0x038F, 0x0390,0x0391,0x0392,0x0393,0x0394,0x0395,0x0396,0x0397, 0x0398,0x0399,0x039A,0x039B,0x039C,0x039D,0x039E,0x039F, 0x03A0,0x03A1,INVALC,0x03A3,0x03A4,0x03A5,0x03A6,0x03A7, 0x03A8,0x03A9,0x03AA,0x03AB,0x03AC,0x03AD,0x03AE,0x03AF, 0x03B0,0x03B1,0x03B2,0x03B3,0x03B4,0x03B5,0x03B6,0x03B7, 0x03B8,0x03B9,0x03BA,0x03BB,0x03BC,0x03BD,0x03BE,0x03BF, 0x03C0,0x03C1,0x03C2,0x03C3,0x03C4,0x03C5,0x03C6,0x03C7, 0x03C8,0x03C9,0x03CA,0x03CB,0x03CC,0x03CD,0x03CE,INVALC, }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_7 */ /* * 8-bit UCS -> iso_8859_7 speed-optimized table (1282 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_7) static const unsigned char from_ucs_speed_iso_8859_7[] = { W(0xFFFF), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(INVBLK),W(INVBLK),W(0x0302), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(0x0402),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, 0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, 0xA0,0xFF,0xFF,0xA3,0xFF,0xFF,0xA6,0xA7, 0xA8,0xA9,0xFF,0xAB,0xAC,0xAD,0xFF,0xFF, 0xB0,0xB1,0xB2,0xB3,0xFF,0xFF,0xFF,0xB7, 0xFF,0xFF,0xFF,0xBB,0xFF,0xBD,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 4, Array index 0x0302 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xB4,0xB5,0xB6,0xFF, 0xB8,0xB9,0xBA,0xFF,0xBC,0xFF,0xBE,0xBF, 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7, 0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, 0xD0,0xD1,0xFF,0xD3,0xD4,0xD5,0xD6,0xD7, 0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7, 0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7, 0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 33, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xAF,0xFF,0xFF, 0xA1,0xA2,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_ISO_8859_7 */ /* * iso_8859_7 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_iso_8859_7 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_ISO_8859_7, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_7) (__uint16_t *)&from_ucs_speed_iso_8859_7, /* UCS -> iso_8859_7 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_7) (__uint16_t *)&to_ucs_speed_iso_8859_7 /* iso_8859_7 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_7) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/iso_8859_8.c000066400000000000000000000244561414576234500212760ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for iso_8859_8 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_ISO_8859_8) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_8) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit iso_8859_8 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_8) static const __uint16_t to_ucs_speed_iso_8859_8[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087, 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F, 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097, 0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F, 0x00A0,INVALC,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7, 0x00A8,0x00A9,0x00D7,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF, 0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7, 0x00B8,0x00B9,0x00F7,0x00BB,0x00BC,0x00BD,0x00BE,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2017, 0x05D0,0x05D1,0x05D2,0x05D3,0x05D4,0x05D5,0x05D6,0x05D7, 0x05D8,0x05D9,0x05DA,0x05DB,0x05DC,0x05DD,0x05DE,0x05DF, 0x05E0,0x05E1,0x05E2,0x05E3,0x05E4,0x05E5,0x05E6,0x05E7, 0x05E8,0x05E9,0x05EA,INVALC,INVALC,0x200E,0x200F,INVALC, }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_8 */ /* * 8-bit UCS -> iso_8859_8 speed-optimized table (1282 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_8) static const unsigned char from_ucs_speed_iso_8859_8[] = { W(0xFFFF), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(0x0302),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(0x0402),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, 0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, 0xA0,0xFF,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7, 0xA8,0xA9,0xFF,0xAB,0xAC,0xAD,0xAE,0xAF, 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7, 0xB8,0xB9,0xFF,0xBB,0xBC,0xBD,0xBE,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBA, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 6, Array index 0x0302 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7, 0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7, 0xF8,0xF9,0xFA,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 33, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFE, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_ISO_8859_8 */ /* * iso_8859_8 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_iso_8859_8 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_ISO_8859_8, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_8) (__uint16_t *)&from_ucs_speed_iso_8859_8, /* UCS -> iso_8859_8 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_8) (__uint16_t *)&to_ucs_speed_iso_8859_8 /* iso_8859_8 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_8) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/iso_8859_9.c000066400000000000000000000217121414576234500212670ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for iso_8859_9 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_ISO_8859_9) \ || defined (ICONV_FROM_UCS_CCS_ISO_8859_9) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit iso_8859_9 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_9) static const __uint16_t to_ucs_speed_iso_8859_9[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087, 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F, 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097, 0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F, 0x00A0,0x00A1,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7, 0x00A8,0x00A9,0x00AA,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF, 0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7, 0x00B8,0x00B9,0x00BA,0x00BB,0x00BC,0x00BD,0x00BE,0x00BF, 0x00C0,0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x00C7, 0x00C8,0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF, 0x011E,0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0x00D7, 0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,0x0130,0x015E,0x00DF, 0x00E0,0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x00E7, 0x00E8,0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF, 0x011F,0x00F1,0x00F2,0x00F3,0x00F4,0x00F5,0x00F6,0x00F7, 0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,0x0131,0x015F,0x00FF, }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_9 */ /* * 8-bit UCS -> iso_8859_9 speed-optimized table (1026 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_9) static const unsigned char from_ucs_speed_iso_8859_9[] = { W(0x00FF), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(0x0302),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, 0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7, 0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7, 0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7, 0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, 0xFF,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7, 0xD8,0xD9,0xDA,0xDB,0xDC,0xFF,0xFF,0xDF, 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7, 0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, 0xFF,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7, 0xF8,0xF9,0xFA,0xFB,0xFC,0xFF,0xFF,0xFF, /* Block 2, Array index 0x0302 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD0,0xF0, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xDD,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDE,0xFE, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_ISO_8859_9 */ /* * iso_8859_9 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_iso_8859_9 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_ISO_8859_9, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_ISO_8859_9) (__uint16_t *)&from_ucs_speed_iso_8859_9, /* UCS -> iso_8859_9 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_ISO_8859_9) (__uint16_t *)&to_ucs_speed_iso_8859_9 /* iso_8859_9 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_ISO_8859_9) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/iso_ir_111.c000066400000000000000000000244561414576234500214260ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for iso_ir_111 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_ISO_IR_111) \ || defined (ICONV_FROM_UCS_CCS_ISO_IR_111) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit iso_ir_111 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_ISO_IR_111) static const __uint16_t to_ucs_speed_iso_ir_111[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087, 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F, 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097, 0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F, 0x00A0,0x0452,0x0453,0x0451,0x0454,0x0455,0x0456,0x0457, 0x0458,0x0459,0x045A,0x045B,0x045C,0x00AD,0x045E,0x045F, 0x2116,0x0402,0x0403,0x0401,0x0404,0x0405,0x0406,0x0407, 0x0408,0x0409,0x040A,0x040B,0x040C,0x00A4,0x040E,0x040F, 0x044E,0x0430,0x0431,0x0446,0x0434,0x0435,0x0444,0x0433, 0x0445,0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E, 0x043F,0x044F,0x0440,0x0441,0x0442,0x0443,0x0436,0x0432, 0x044C,0x044B,0x0437,0x0448,0x044D,0x0449,0x0447,0x044A, 0x042E,0x0410,0x0411,0x0426,0x0414,0x0415,0x0424,0x0413, 0x0425,0x0418,0x0419,0x041A,0x041B,0x041C,0x041D,0x041E, 0x041F,0x042F,0x0420,0x0421,0x0422,0x0423,0x0416,0x0412, 0x042C,0x042B,0x0417,0x0428,0x042D,0x0429,0x0427,0x042A, }; #endif /* ICONV_TO_UCS_CCS_ISO_IR_111 */ /* * 8-bit UCS -> iso_ir_111 speed-optimized table (1282 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_ISO_IR_111) static const unsigned char from_ucs_speed_iso_ir_111[] = { W(0x042A), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(INVBLK),W(INVBLK),W(INVBLK), W(0x0302),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(0x0402),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, 0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, 0xA0,0xFF,0xFF,0xFF,0xBD,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xAD,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 5, Array index 0x0302 */ 0xFF,0xB3,0xB1,0xB2,0xB4,0xB5,0xB6,0xB7, 0xB8,0xB9,0xBA,0xBB,0xBC,0xFF,0xBE,0xBF, 0xE1,0xE2,0xF7,0xE7,0xE4,0xE5,0xF6,0xFA, 0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0, 0xF2,0xF3,0xF4,0xF5,0xE6,0xE8,0xE3,0xFE, 0xFB,0xFD,0xFF,0xF9,0xF8,0xFC,0xE0,0xF1, 0xC1,0xC2,0xD7,0xC7,0xC4,0xC5,0xD6,0xDA, 0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0, 0xD2,0xD3,0xD4,0xD5,0xC6,0xC8,0xC3,0xDE, 0xDB,0xDD,0xDF,0xD9,0xD8,0xDC,0xC0,0xD1, 0xFF,0xA3,0xA1,0xA2,0xA4,0xA5,0xA6,0xA7, 0xA8,0xA9,0xAA,0xAB,0xAC,0xFF,0xAE,0xAF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 34, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xB0,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_ISO_IR_111 */ /* * iso_ir_111 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_iso_ir_111 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_ISO_IR_111, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_ISO_IR_111) (__uint16_t *)&from_ucs_speed_iso_ir_111, /* UCS -> iso_ir_111 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_ISO_IR_111) (__uint16_t *)&to_ucs_speed_iso_ir_111 /* iso_ir_111 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_ISO_IR_111) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/jis_x0201_1976.c000066400000000000000000000172741414576234500216650ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for jis_x0201_1976 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_JIS_X0201_1976) \ || defined (ICONV_FROM_UCS_CCS_JIS_X0201_1976) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit jis_x0201_1976 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_JIS_X0201_1976) static const __uint16_t to_ucs_speed_jis_x0201_1976[] = { INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xFF61,0xFF62,0xFF63,0xFF64,0xFF65,0xFF66,0xFF67, 0xFF68,0xFF69,0xFF6A,0xFF6B,0xFF6C,0xFF6D,0xFF6E,0xFF6F, 0xFF70,0xFF71,0xFF72,0xFF73,0xFF74,0xFF75,0xFF76,0xFF77, 0xFF78,0xFF79,0xFF7A,0xFF7B,0xFF7C,0xFF7D,0xFF7E,0xFF7F, 0xFF80,0xFF81,0xFF82,0xFF83,0xFF84,0xFF85,0xFF86,0xFF87, 0xFF88,0xFF89,0xFF8A,0xFF8B,0xFF8C,0xFF8D,0xFF8E,0xFF8F, 0xFF90,0xFF91,0xFF92,0xFF93,0xFF94,0xFF95,0xFF96,0xFF97, 0xFF98,0xFF99,0xFF9A,0xFF9B,0xFF9C,0xFF9D,0xFF9E,0xFF9F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, }; #endif /* ICONV_TO_UCS_CCS_JIS_X0201_1976 */ /* * 8-bit UCS -> jis_x0201_1976 speed-optimized table (770 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_JIS_X0201_1976) static const unsigned char from_ucs_speed_jis_x0201_1976[] = { W(0xFFFF), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(0x0202), /* Block 256, Array index 0x0202 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7, 0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7, 0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7, 0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7, 0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_JIS_X0201_1976 */ /* * jis_x0201_1976 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_jis_x0201_1976 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_JIS_X0201_1976, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_JIS_X0201_1976) (__uint16_t *)&from_ucs_speed_jis_x0201_1976, /* UCS -> jis_x0201_1976 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_JIS_X0201_1976) (__uint16_t *)&to_ucs_speed_jis_x0201_1976 /* jis_x0201_1976 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_JIS_X0201_1976) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/jis_x0208_1990.c000066400000000000000000022700011414576234500216570ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for jis_x0208_1990 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_JIS_X0208_1990) \ || defined (ICONV_FROM_UCS_CCS_JIS_X0208_1990) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" /* * 16-bit jis_x0208_1990 -> UCS speed-optimized table (39936 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_JIS_X0208_1990) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t to_ucs_speed_jis_x0208_1990[] = { /* Heading Block */ INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,0x0100,0x0200,0x0300,0x0400,0x0500,0x0600,0x0700, 0x0800,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, 0x0900,0x0A00,0x0B00,0x0C00,0x0D00,0x0E00,0x0F00,0x1000, 0x1100,0x1200,0x1300,0x1400,0x1500,0x1600,0x1700,0x1800, 0x1900,0x1A00,0x1B00,0x1C00,0x1D00,0x1E00,0x1F00,0x2000, 0x2100,0x2200,0x2300,0x2400,0x2500,0x2600,0x2700,0x2800, 0x2900,0x2A00,0x2B00,0x2C00,0x2D00,0x2E00,0x2F00,0x3000, 0x3100,0x3200,0x3300,0x3400,0x3500,0x3600,0x3700,0x3800, 0x3900,0x3A00,0x3B00,0x3C00,0x3D00,0x3E00,0x3F00,0x4000, 0x4100,0x4200,0x4300,0x4400,0x4500,0x4600,0x4700,0x4800, 0x4900,0x4A00,0x4B00,0x4C00,0x4D00,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, /* Block 34, Array index 0x0100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3000,0x3001,0x3002,0xFF0C,0xFF0E,0x30FB,0xFF1A, 0xFF1B,0xFF1F,0xFF01,0x309B,0x309C,0x00B4,0xFF40,0x00A8, 0xFF3E,0xFFE3,0xFF3F,0x30FD,0x30FE,0x309D,0x309E,0x3003, 0x4EDD,0x3005,0x3006,0x3007,0x30FC,0x2015,0x2010,0xFF0F, 0x005C,0x301C,0x2016,0xFF5C,0x2026,0x2025,0x2018,0x2019, 0x201C,0x201D,0xFF08,0xFF09,0x3014,0x3015,0xFF3B,0xFF3D, 0xFF5B,0xFF5D,0x3008,0x3009,0x300A,0x300B,0x300C,0x300D, 0x300E,0x300F,0x3010,0x3011,0xFF0B,0x2212,0x00B1,0x00D7, 0x00F7,0xFF1D,0x2260,0xFF1C,0xFF1E,0x2266,0x2267,0x221E, 0x2234,0x2642,0x2640,0x00B0,0x2032,0x2033,0x2103,0xFFE5, 0xFF04,0x00A2,0x00A3,0xFF05,0xFF03,0xFF06,0xFF0A,0xFF20, 0x00A7,0x2606,0x2605,0x25CB,0x25CF,0x25CE,0x25C7,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 35, Array index 0x0200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x25C6,0x25A1,0x25A0,0x25B3,0x25B2,0x25BD,0x25BC, 0x203B,0x3012,0x2192,0x2190,0x2191,0x2193,0x3013,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2208,0x220B,0x2286,0x2287,0x2282,0x2283, 0x222A,0x2229,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2227,0x2228,0x00AC,0x21D2,0x21D4,0x2200, 0x2203,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2220,0x22A5,0x2312,0x2202, 0x2207,0x2261,0x2252,0x226A,0x226B,0x221A,0x223D,0x221D, 0x2235,0x222B,0x222C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x212B,0x2030,0x266F,0x266D,0x266A,0x2020, 0x2021,0x00B6,INVALC,INVALC,INVALC,INVALC,0x25EF,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 36, Array index 0x0300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0xFF10,0xFF11,0xFF12,0xFF13,0xFF14,0xFF15,0xFF16,0xFF17, 0xFF18,0xFF19,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xFF21,0xFF22,0xFF23,0xFF24,0xFF25,0xFF26,0xFF27, 0xFF28,0xFF29,0xFF2A,0xFF2B,0xFF2C,0xFF2D,0xFF2E,0xFF2F, 0xFF30,0xFF31,0xFF32,0xFF33,0xFF34,0xFF35,0xFF36,0xFF37, 0xFF38,0xFF39,0xFF3A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xFF41,0xFF42,0xFF43,0xFF44,0xFF45,0xFF46,0xFF47, 0xFF48,0xFF49,0xFF4A,0xFF4B,0xFF4C,0xFF4D,0xFF4E,0xFF4F, 0xFF50,0xFF51,0xFF52,0xFF53,0xFF54,0xFF55,0xFF56,0xFF57, 0xFF58,0xFF59,0xFF5A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 37, Array index 0x0400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3041,0x3042,0x3043,0x3044,0x3045,0x3046,0x3047, 0x3048,0x3049,0x304A,0x304B,0x304C,0x304D,0x304E,0x304F, 0x3050,0x3051,0x3052,0x3053,0x3054,0x3055,0x3056,0x3057, 0x3058,0x3059,0x305A,0x305B,0x305C,0x305D,0x305E,0x305F, 0x3060,0x3061,0x3062,0x3063,0x3064,0x3065,0x3066,0x3067, 0x3068,0x3069,0x306A,0x306B,0x306C,0x306D,0x306E,0x306F, 0x3070,0x3071,0x3072,0x3073,0x3074,0x3075,0x3076,0x3077, 0x3078,0x3079,0x307A,0x307B,0x307C,0x307D,0x307E,0x307F, 0x3080,0x3081,0x3082,0x3083,0x3084,0x3085,0x3086,0x3087, 0x3088,0x3089,0x308A,0x308B,0x308C,0x308D,0x308E,0x308F, 0x3090,0x3091,0x3092,0x3093,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 38, Array index 0x0500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x30A1,0x30A2,0x30A3,0x30A4,0x30A5,0x30A6,0x30A7, 0x30A8,0x30A9,0x30AA,0x30AB,0x30AC,0x30AD,0x30AE,0x30AF, 0x30B0,0x30B1,0x30B2,0x30B3,0x30B4,0x30B5,0x30B6,0x30B7, 0x30B8,0x30B9,0x30BA,0x30BB,0x30BC,0x30BD,0x30BE,0x30BF, 0x30C0,0x30C1,0x30C2,0x30C3,0x30C4,0x30C5,0x30C6,0x30C7, 0x30C8,0x30C9,0x30CA,0x30CB,0x30CC,0x30CD,0x30CE,0x30CF, 0x30D0,0x30D1,0x30D2,0x30D3,0x30D4,0x30D5,0x30D6,0x30D7, 0x30D8,0x30D9,0x30DA,0x30DB,0x30DC,0x30DD,0x30DE,0x30DF, 0x30E0,0x30E1,0x30E2,0x30E3,0x30E4,0x30E5,0x30E6,0x30E7, 0x30E8,0x30E9,0x30EA,0x30EB,0x30EC,0x30ED,0x30EE,0x30EF, 0x30F0,0x30F1,0x30F2,0x30F3,0x30F4,0x30F5,0x30F6,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 39, Array index 0x0600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x0391,0x0392,0x0393,0x0394,0x0395,0x0396,0x0397, 0x0398,0x0399,0x039A,0x039B,0x039C,0x039D,0x039E,0x039F, 0x03A0,0x03A1,0x03A3,0x03A4,0x03A5,0x03A6,0x03A7,0x03A8, 0x03A9,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x03B1,0x03B2,0x03B3,0x03B4,0x03B5,0x03B6,0x03B7, 0x03B8,0x03B9,0x03BA,0x03BB,0x03BC,0x03BD,0x03BE,0x03BF, 0x03C0,0x03C1,0x03C3,0x03C4,0x03C5,0x03C6,0x03C7,0x03C8, 0x03C9,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 40, Array index 0x0700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x0410,0x0411,0x0412,0x0413,0x0414,0x0415,0x0401, 0x0416,0x0417,0x0418,0x0419,0x041A,0x041B,0x041C,0x041D, 0x041E,0x041F,0x0420,0x0421,0x0422,0x0423,0x0424,0x0425, 0x0426,0x0427,0x0428,0x0429,0x042A,0x042B,0x042C,0x042D, 0x042E,0x042F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0451, 0x0436,0x0437,0x0438,0x0439,0x043A,0x043B,0x043C,0x043D, 0x043E,0x043F,0x0440,0x0441,0x0442,0x0443,0x0444,0x0445, 0x0446,0x0447,0x0448,0x0449,0x044A,0x044B,0x044C,0x044D, 0x044E,0x044F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 41, Array index 0x0800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2500,0x2502,0x250C,0x2510,0x2518,0x2514,0x251C, 0x252C,0x2524,0x2534,0x253C,0x2501,0x2503,0x250F,0x2513, 0x251B,0x2517,0x2523,0x2533,0x252B,0x253B,0x254B,0x2520, 0x252F,0x2528,0x2537,0x253F,0x251D,0x2530,0x2525,0x2538, 0x2542,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 49, Array index 0x0900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4E9C,0x5516,0x5A03,0x963F,0x54C0,0x611B,0x6328, 0x59F6,0x9022,0x8475,0x831C,0x7A50,0x60AA,0x63E1,0x6E25, 0x65ED,0x8466,0x82A6,0x9BF5,0x6893,0x5727,0x65A1,0x6271, 0x5B9B,0x59D0,0x867B,0x98F4,0x7D62,0x7DBE,0x9B8E,0x6216, 0x7C9F,0x88B7,0x5B89,0x5EB5,0x6309,0x6697,0x6848,0x95C7, 0x978D,0x674F,0x4EE5,0x4F0A,0x4F4D,0x4F9D,0x5049,0x56F2, 0x5937,0x59D4,0x5A01,0x5C09,0x60DF,0x610F,0x6170,0x6613, 0x6905,0x70BA,0x754F,0x7570,0x79FB,0x7DAD,0x7DEF,0x80C3, 0x840E,0x8863,0x8B02,0x9055,0x907A,0x533B,0x4E95,0x4EA5, 0x57DF,0x80B2,0x90C1,0x78EF,0x4E00,0x58F1,0x6EA2,0x9038, 0x7A32,0x8328,0x828B,0x9C2F,0x5141,0x5370,0x54BD,0x54E1, 0x56E0,0x59FB,0x5F15,0x98F2,0x6DEB,0x80E4,0x852D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 50, Array index 0x0A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9662,0x9670,0x96A0,0x97FB,0x540B,0x53F3,0x5B87, 0x70CF,0x7FBD,0x8FC2,0x96E8,0x536F,0x9D5C,0x7ABA,0x4E11, 0x7893,0x81FC,0x6E26,0x5618,0x5504,0x6B1D,0x851A,0x9C3B, 0x59E5,0x53A9,0x6D66,0x74DC,0x958F,0x5642,0x4E91,0x904B, 0x96F2,0x834F,0x990C,0x53E1,0x55B6,0x5B30,0x5F71,0x6620, 0x66F3,0x6804,0x6C38,0x6CF3,0x6D29,0x745B,0x76C8,0x7A4E, 0x9834,0x82F1,0x885B,0x8A60,0x92ED,0x6DB2,0x75AB,0x76CA, 0x99C5,0x60A6,0x8B01,0x8D8A,0x95B2,0x698E,0x53AD,0x5186, 0x5712,0x5830,0x5944,0x5BB4,0x5EF6,0x6028,0x63A9,0x63F4, 0x6CBF,0x6F14,0x708E,0x7114,0x7159,0x71D5,0x733F,0x7E01, 0x8276,0x82D1,0x8597,0x9060,0x925B,0x9D1B,0x5869,0x65BC, 0x6C5A,0x7525,0x51F9,0x592E,0x5965,0x5F80,0x5FDC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 51, Array index 0x0B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x62BC,0x65FA,0x6A2A,0x6B27,0x6BB4,0x738B,0x7FC1, 0x8956,0x9D2C,0x9D0E,0x9EC4,0x5CA1,0x6C96,0x837B,0x5104, 0x5C4B,0x61B6,0x81C6,0x6876,0x7261,0x4E59,0x4FFA,0x5378, 0x6069,0x6E29,0x7A4F,0x97F3,0x4E0B,0x5316,0x4EEE,0x4F55, 0x4F3D,0x4FA1,0x4F73,0x52A0,0x53EF,0x5609,0x590F,0x5AC1, 0x5BB6,0x5BE1,0x79D1,0x6687,0x679C,0x67B6,0x6B4C,0x6CB3, 0x706B,0x73C2,0x798D,0x79BE,0x7A3C,0x7B87,0x82B1,0x82DB, 0x8304,0x8377,0x83EF,0x83D3,0x8766,0x8AB2,0x5629,0x8CA8, 0x8FE6,0x904E,0x971E,0x868A,0x4FC4,0x5CE8,0x6211,0x7259, 0x753B,0x81E5,0x82BD,0x86FE,0x8CC0,0x96C5,0x9913,0x99D5, 0x4ECB,0x4F1A,0x89E3,0x56DE,0x584A,0x58CA,0x5EFB,0x5FEB, 0x602A,0x6094,0x6062,0x61D0,0x6212,0x62D0,0x6539,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 52, Array index 0x0C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9B41,0x6666,0x68B0,0x6D77,0x7070,0x754C,0x7686, 0x7D75,0x82A5,0x87F9,0x958B,0x968E,0x8C9D,0x51F1,0x52BE, 0x5916,0x54B3,0x5BB3,0x5D16,0x6168,0x6982,0x6DAF,0x788D, 0x84CB,0x8857,0x8A72,0x93A7,0x9AB8,0x6D6C,0x99A8,0x86D9, 0x57A3,0x67FF,0x86CE,0x920E,0x5283,0x5687,0x5404,0x5ED3, 0x62E1,0x64B9,0x683C,0x6838,0x6BBB,0x7372,0x78BA,0x7A6B, 0x899A,0x89D2,0x8D6B,0x8F03,0x90ED,0x95A3,0x9694,0x9769, 0x5B66,0x5CB3,0x697D,0x984D,0x984E,0x639B,0x7B20,0x6A2B, 0x6A7F,0x68B6,0x9C0D,0x6F5F,0x5272,0x559D,0x6070,0x62EC, 0x6D3B,0x6E07,0x6ED1,0x845B,0x8910,0x8F44,0x4E14,0x9C39, 0x53F6,0x691B,0x6A3A,0x9784,0x682A,0x515C,0x7AC3,0x84B2, 0x91DC,0x938C,0x565B,0x9D28,0x6822,0x8305,0x8431,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 53, Array index 0x0D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7CA5,0x5208,0x82C5,0x74E6,0x4E7E,0x4F83,0x51A0, 0x5BD2,0x520A,0x52D8,0x52E7,0x5DFB,0x559A,0x582A,0x59E6, 0x5B8C,0x5B98,0x5BDB,0x5E72,0x5E79,0x60A3,0x611F,0x6163, 0x61BE,0x63DB,0x6562,0x67D1,0x6853,0x68FA,0x6B3E,0x6B53, 0x6C57,0x6F22,0x6F97,0x6F45,0x74B0,0x7518,0x76E3,0x770B, 0x7AFF,0x7BA1,0x7C21,0x7DE9,0x7F36,0x7FF0,0x809D,0x8266, 0x839E,0x89B3,0x8ACC,0x8CAB,0x9084,0x9451,0x9593,0x9591, 0x95A2,0x9665,0x97D3,0x9928,0x8218,0x4E38,0x542B,0x5CB8, 0x5DCC,0x73A9,0x764C,0x773C,0x5CA9,0x7FEB,0x8D0B,0x96C1, 0x9811,0x9854,0x9858,0x4F01,0x4F0E,0x5371,0x559C,0x5668, 0x57FA,0x5947,0x5B09,0x5BC4,0x5C90,0x5E0C,0x5E7E,0x5FCC, 0x63EE,0x673A,0x65D7,0x65E2,0x671F,0x68CB,0x68C4,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 54, Array index 0x0E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6A5F,0x5E30,0x6BC5,0x6C17,0x6C7D,0x757F,0x7948, 0x5B63,0x7A00,0x7D00,0x5FBD,0x898F,0x8A18,0x8CB4,0x8D77, 0x8ECC,0x8F1D,0x98E2,0x9A0E,0x9B3C,0x4E80,0x507D,0x5100, 0x5993,0x5B9C,0x622F,0x6280,0x64EC,0x6B3A,0x72A0,0x7591, 0x7947,0x7FA9,0x87FB,0x8ABC,0x8B70,0x63AC,0x83CA,0x97A0, 0x5409,0x5403,0x55AB,0x6854,0x6A58,0x8A70,0x7827,0x6775, 0x9ECD,0x5374,0x5BA2,0x811A,0x8650,0x9006,0x4E18,0x4E45, 0x4EC7,0x4F11,0x53CA,0x5438,0x5BAE,0x5F13,0x6025,0x6551, 0x673D,0x6C42,0x6C72,0x6CE3,0x7078,0x7403,0x7A76,0x7AAE, 0x7B08,0x7D1A,0x7CFE,0x7D66,0x65E7,0x725B,0x53BB,0x5C45, 0x5DE8,0x62D2,0x62E0,0x6319,0x6E20,0x865A,0x8A31,0x8DDD, 0x92F8,0x6F01,0x79A6,0x9B5A,0x4EA8,0x4EAB,0x4EAC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 55, Array index 0x0F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4F9B,0x4FA0,0x50D1,0x5147,0x7AF6,0x5171,0x51F6, 0x5354,0x5321,0x537F,0x53EB,0x55AC,0x5883,0x5CE1,0x5F37, 0x5F4A,0x602F,0x6050,0x606D,0x631F,0x6559,0x6A4B,0x6CC1, 0x72C2,0x72ED,0x77EF,0x80F8,0x8105,0x8208,0x854E,0x90F7, 0x93E1,0x97FF,0x9957,0x9A5A,0x4EF0,0x51DD,0x5C2D,0x6681, 0x696D,0x5C40,0x66F2,0x6975,0x7389,0x6850,0x7C81,0x50C5, 0x52E4,0x5747,0x5DFE,0x9326,0x65A4,0x6B23,0x6B3D,0x7434, 0x7981,0x79BD,0x7B4B,0x7DCA,0x82B9,0x83CC,0x887F,0x895F, 0x8B39,0x8FD1,0x91D1,0x541F,0x9280,0x4E5D,0x5036,0x53E5, 0x533A,0x72D7,0x7396,0x77E9,0x82E6,0x8EAF,0x99C6,0x99C8, 0x99D2,0x5177,0x611A,0x865E,0x55B0,0x7A7A,0x5076,0x5BD3, 0x9047,0x9685,0x4E32,0x6ADB,0x91E7,0x5C51,0x5C48,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 56, Array index 0x1000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6398,0x7A9F,0x6C93,0x9774,0x8F61,0x7AAA,0x718A, 0x9688,0x7C82,0x6817,0x7E70,0x6851,0x936C,0x52F2,0x541B, 0x85AB,0x8A13,0x7FA4,0x8ECD,0x90E1,0x5366,0x8888,0x7941, 0x4FC2,0x50BE,0x5211,0x5144,0x5553,0x572D,0x73EA,0x578B, 0x5951,0x5F62,0x5F84,0x6075,0x6176,0x6167,0x61A9,0x63B2, 0x643A,0x656C,0x666F,0x6842,0x6E13,0x7566,0x7A3D,0x7CFB, 0x7D4C,0x7D99,0x7E4B,0x7F6B,0x830E,0x834A,0x86CD,0x8A08, 0x8A63,0x8B66,0x8EFD,0x981A,0x9D8F,0x82B8,0x8FCE,0x9BE8, 0x5287,0x621F,0x6483,0x6FC0,0x9699,0x6841,0x5091,0x6B20, 0x6C7A,0x6F54,0x7A74,0x7D50,0x8840,0x8A23,0x6708,0x4EF6, 0x5039,0x5026,0x5065,0x517C,0x5238,0x5263,0x55A7,0x570F, 0x5805,0x5ACC,0x5EFA,0x61B2,0x61F8,0x62F3,0x6372,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 57, Array index 0x1100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x691C,0x6A29,0x727D,0x72AC,0x732E,0x7814,0x786F, 0x7D79,0x770C,0x80A9,0x898B,0x8B19,0x8CE2,0x8ED2,0x9063, 0x9375,0x967A,0x9855,0x9A13,0x9E78,0x5143,0x539F,0x53B3, 0x5E7B,0x5F26,0x6E1B,0x6E90,0x7384,0x73FE,0x7D43,0x8237, 0x8A00,0x8AFA,0x9650,0x4E4E,0x500B,0x53E4,0x547C,0x56FA, 0x59D1,0x5B64,0x5DF1,0x5EAB,0x5F27,0x6238,0x6545,0x67AF, 0x6E56,0x72D0,0x7CCA,0x88B4,0x80A1,0x80E1,0x83F0,0x864E, 0x8A87,0x8DE8,0x9237,0x96C7,0x9867,0x9F13,0x4E94,0x4E92, 0x4F0D,0x5348,0x5449,0x543E,0x5A2F,0x5F8C,0x5FA1,0x609F, 0x68A7,0x6A8E,0x745A,0x7881,0x8A9E,0x8AA4,0x8B77,0x9190, 0x4E5E,0x9BC9,0x4EA4,0x4F7C,0x4FAF,0x5019,0x5016,0x5149, 0x516C,0x529F,0x52B9,0x52FE,0x539A,0x53E3,0x5411,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 58, Array index 0x1200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x540E,0x5589,0x5751,0x57A2,0x597D,0x5B54,0x5B5D, 0x5B8F,0x5DE5,0x5DE7,0x5DF7,0x5E78,0x5E83,0x5E9A,0x5EB7, 0x5F18,0x6052,0x614C,0x6297,0x62D8,0x63A7,0x653B,0x6602, 0x6643,0x66F4,0x676D,0x6821,0x6897,0x69CB,0x6C5F,0x6D2A, 0x6D69,0x6E2F,0x6E9D,0x7532,0x7687,0x786C,0x7A3F,0x7CE0, 0x7D05,0x7D18,0x7D5E,0x7DB1,0x8015,0x8003,0x80AF,0x80B1, 0x8154,0x818F,0x822A,0x8352,0x884C,0x8861,0x8B1B,0x8CA2, 0x8CFC,0x90CA,0x9175,0x9271,0x783F,0x92FC,0x95A4,0x964D, 0x9805,0x9999,0x9AD8,0x9D3B,0x525B,0x52AB,0x53F7,0x5408, 0x58D5,0x62F7,0x6FE0,0x8C6A,0x8F5F,0x9EB9,0x514B,0x523B, 0x544A,0x56FD,0x7A40,0x9177,0x9D60,0x9ED2,0x7344,0x6F09, 0x8170,0x7511,0x5FFD,0x60DA,0x9AA8,0x72DB,0x8FBC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 59, Array index 0x1300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6B64,0x9803,0x4ECA,0x56F0,0x5764,0x58BE,0x5A5A, 0x6068,0x61C7,0x660F,0x6606,0x6839,0x68B1,0x6DF7,0x75D5, 0x7D3A,0x826E,0x9B42,0x4E9B,0x4F50,0x53C9,0x5506,0x5D6F, 0x5DE6,0x5DEE,0x67FB,0x6C99,0x7473,0x7802,0x8A50,0x9396, 0x88DF,0x5750,0x5EA7,0x632B,0x50B5,0x50AC,0x518D,0x6700, 0x54C9,0x585E,0x59BB,0x5BB0,0x5F69,0x624D,0x63A1,0x683D, 0x6B73,0x6E08,0x707D,0x91C7,0x7280,0x7815,0x7826,0x796D, 0x658E,0x7D30,0x83DC,0x88C1,0x8F09,0x969B,0x5264,0x5728, 0x6750,0x7F6A,0x8CA1,0x51B4,0x5742,0x962A,0x583A,0x698A, 0x80B4,0x54B2,0x5D0E,0x57FC,0x7895,0x9DFA,0x4F5C,0x524A, 0x548B,0x643E,0x6628,0x6714,0x67F5,0x7A84,0x7B56,0x7D22, 0x932F,0x685C,0x9BAD,0x7B39,0x5319,0x518A,0x5237,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 60, Array index 0x1400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5BDF,0x62F6,0x64AE,0x64E6,0x672D,0x6BBA,0x85A9, 0x96D1,0x7690,0x9BD6,0x634C,0x9306,0x9BAB,0x76BF,0x6652, 0x4E09,0x5098,0x53C2,0x5C71,0x60E8,0x6492,0x6563,0x685F, 0x71E6,0x73CA,0x7523,0x7B97,0x7E82,0x8695,0x8B83,0x8CDB, 0x9178,0x9910,0x65AC,0x66AB,0x6B8B,0x4ED5,0x4ED4,0x4F3A, 0x4F7F,0x523A,0x53F8,0x53F2,0x55E3,0x56DB,0x58EB,0x59CB, 0x59C9,0x59FF,0x5B50,0x5C4D,0x5E02,0x5E2B,0x5FD7,0x601D, 0x6307,0x652F,0x5B5C,0x65AF,0x65BD,0x65E8,0x679D,0x6B62, 0x6B7B,0x6C0F,0x7345,0x7949,0x79C1,0x7CF8,0x7D19,0x7D2B, 0x80A2,0x8102,0x81F3,0x8996,0x8A5E,0x8A69,0x8A66,0x8A8C, 0x8AEE,0x8CC7,0x8CDC,0x96CC,0x98FC,0x6B6F,0x4E8B,0x4F3C, 0x4F8D,0x5150,0x5B57,0x5BFA,0x6148,0x6301,0x6642,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 61, Array index 0x1500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6B21,0x6ECB,0x6CBB,0x723E,0x74BD,0x75D4,0x78C1, 0x793A,0x800C,0x8033,0x81EA,0x8494,0x8F9E,0x6C50,0x9E7F, 0x5F0F,0x8B58,0x9D2B,0x7AFA,0x8EF8,0x5B8D,0x96EB,0x4E03, 0x53F1,0x57F7,0x5931,0x5AC9,0x5BA4,0x6089,0x6E7F,0x6F06, 0x75BE,0x8CEA,0x5B9F,0x8500,0x7BE0,0x5072,0x67F4,0x829D, 0x5C61,0x854A,0x7E1E,0x820E,0x5199,0x5C04,0x6368,0x8D66, 0x659C,0x716E,0x793E,0x7D17,0x8005,0x8B1D,0x8ECA,0x906E, 0x86C7,0x90AA,0x501F,0x52FA,0x5C3A,0x6753,0x707C,0x7235, 0x914C,0x91C8,0x932B,0x82E5,0x5BC2,0x5F31,0x60F9,0x4E3B, 0x53D6,0x5B88,0x624B,0x6731,0x6B8A,0x72E9,0x73E0,0x7A2E, 0x816B,0x8DA3,0x9152,0x9996,0x5112,0x53D7,0x546A,0x5BFF, 0x6388,0x6A39,0x7DAC,0x9700,0x56DA,0x53CE,0x5468,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 62, Array index 0x1600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5B97,0x5C31,0x5DDE,0x4FEE,0x6101,0x62FE,0x6D32, 0x79C0,0x79CB,0x7D42,0x7E4D,0x7FD2,0x81ED,0x821F,0x8490, 0x8846,0x8972,0x8B90,0x8E74,0x8F2F,0x9031,0x914B,0x916C, 0x96C6,0x919C,0x4EC0,0x4F4F,0x5145,0x5341,0x5F93,0x620E, 0x67D4,0x6C41,0x6E0B,0x7363,0x7E26,0x91CD,0x9283,0x53D4, 0x5919,0x5BBF,0x6DD1,0x795D,0x7E2E,0x7C9B,0x587E,0x719F, 0x51FA,0x8853,0x8FF0,0x4FCA,0x5CFB,0x6625,0x77AC,0x7AE3, 0x821C,0x99FF,0x51C6,0x5FAA,0x65EC,0x696F,0x6B89,0x6DF3, 0x6E96,0x6F64,0x76FE,0x7D14,0x5DE1,0x9075,0x9187,0x9806, 0x51E6,0x521D,0x6240,0x6691,0x66D9,0x6E1A,0x5EB6,0x7DD2, 0x7F72,0x66F8,0x85AF,0x85F7,0x8AF8,0x52A9,0x53D9,0x5973, 0x5E8F,0x5F90,0x6055,0x92E4,0x9664,0x50B7,0x511F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 63, Array index 0x1700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x52DD,0x5320,0x5347,0x53EC,0x54E8,0x5546,0x5531, 0x5617,0x5968,0x59BE,0x5A3C,0x5BB5,0x5C06,0x5C0F,0x5C11, 0x5C1A,0x5E84,0x5E8A,0x5EE0,0x5F70,0x627F,0x6284,0x62DB, 0x638C,0x6377,0x6607,0x660C,0x662D,0x6676,0x677E,0x68A2, 0x6A1F,0x6A35,0x6CBC,0x6D88,0x6E09,0x6E58,0x713C,0x7126, 0x7167,0x75C7,0x7701,0x785D,0x7901,0x7965,0x79F0,0x7AE0, 0x7B11,0x7CA7,0x7D39,0x8096,0x83D6,0x848B,0x8549,0x885D, 0x88F3,0x8A1F,0x8A3C,0x8A54,0x8A73,0x8C61,0x8CDE,0x91A4, 0x9266,0x937E,0x9418,0x969C,0x9798,0x4E0A,0x4E08,0x4E1E, 0x4E57,0x5197,0x5270,0x57CE,0x5834,0x58CC,0x5B22,0x5E38, 0x60C5,0x64FE,0x6761,0x6756,0x6D44,0x72B6,0x7573,0x7A63, 0x84B8,0x8B72,0x91B8,0x9320,0x5631,0x57F4,0x98FE,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 64, Array index 0x1800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x62ED,0x690D,0x6B96,0x71ED,0x7E54,0x8077,0x8272, 0x89E6,0x98DF,0x8755,0x8FB1,0x5C3B,0x4F38,0x4FE1,0x4FB5, 0x5507,0x5A20,0x5BDD,0x5BE9,0x5FC3,0x614E,0x632F,0x65B0, 0x664B,0x68EE,0x699B,0x6D78,0x6DF1,0x7533,0x75B9,0x771F, 0x795E,0x79E6,0x7D33,0x81E3,0x82AF,0x85AA,0x89AA,0x8A3A, 0x8EAB,0x8F9B,0x9032,0x91DD,0x9707,0x4EBA,0x4EC1,0x5203, 0x5875,0x58EC,0x5C0B,0x751A,0x5C3D,0x814E,0x8A0A,0x8FC5, 0x9663,0x976D,0x7B25,0x8ACF,0x9808,0x9162,0x56F3,0x53A8, 0x9017,0x5439,0x5782,0x5E25,0x63A8,0x6C34,0x708A,0x7761, 0x7C8B,0x7FE0,0x8870,0x9042,0x9154,0x9310,0x9318,0x968F, 0x745E,0x9AC4,0x5D07,0x5D69,0x6570,0x67A2,0x8DA8,0x96DB, 0x636E,0x6749,0x6919,0x83C5,0x9817,0x96C0,0x88FE,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 65, Array index 0x1900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6F84,0x647A,0x5BF8,0x4E16,0x702C,0x755D,0x662F, 0x51C4,0x5236,0x52E2,0x59D3,0x5F81,0x6027,0x6210,0x653F, 0x6574,0x661F,0x6674,0x68F2,0x6816,0x6B63,0x6E05,0x7272, 0x751F,0x76DB,0x7CBE,0x8056,0x58F0,0x88FD,0x897F,0x8AA0, 0x8A93,0x8ACB,0x901D,0x9192,0x9752,0x9759,0x6589,0x7A0E, 0x8106,0x96BB,0x5E2D,0x60DC,0x621A,0x65A5,0x6614,0x6790, 0x77F3,0x7A4D,0x7C4D,0x7E3E,0x810A,0x8CAC,0x8D64,0x8DE1, 0x8E5F,0x78A9,0x5207,0x62D9,0x63A5,0x6442,0x6298,0x8A2D, 0x7A83,0x7BC0,0x8AAC,0x96EA,0x7D76,0x820C,0x8749,0x4ED9, 0x5148,0x5343,0x5360,0x5BA3,0x5C02,0x5C16,0x5DDD,0x6226, 0x6247,0x64B0,0x6813,0x6834,0x6CC9,0x6D45,0x6D17,0x67D3, 0x6F5C,0x714E,0x717D,0x65CB,0x7A7F,0x7BAD,0x7DDA,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 66, Array index 0x1A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7E4A,0x7FA8,0x817A,0x821B,0x8239,0x85A6,0x8A6E, 0x8CCE,0x8DF5,0x9078,0x9077,0x92AD,0x9291,0x9583,0x9BAE, 0x524D,0x5584,0x6F38,0x7136,0x5168,0x7985,0x7E55,0x81B3, 0x7CCE,0x564C,0x5851,0x5CA8,0x63AA,0x66FE,0x66FD,0x695A, 0x72D9,0x758F,0x758E,0x790E,0x7956,0x79DF,0x7C97,0x7D20, 0x7D44,0x8607,0x8A34,0x963B,0x9061,0x9F20,0x50E7,0x5275, 0x53CC,0x53E2,0x5009,0x55AA,0x58EE,0x594F,0x723D,0x5B8B, 0x5C64,0x531D,0x60E3,0x60F3,0x635C,0x6383,0x633F,0x63BB, 0x64CD,0x65E9,0x66F9,0x5DE3,0x69CD,0x69FD,0x6F15,0x71E5, 0x4E89,0x75E9,0x76F8,0x7A93,0x7CDF,0x7DCF,0x7D9C,0x8061, 0x8349,0x8358,0x846C,0x84BC,0x85FB,0x88C5,0x8D70,0x9001, 0x906D,0x9397,0x971C,0x9A12,0x50CF,0x5897,0x618E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 67, Array index 0x1B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x81D3,0x8535,0x8D08,0x9020,0x4FC3,0x5074,0x5247, 0x5373,0x606F,0x6349,0x675F,0x6E2C,0x8DB3,0x901F,0x4FD7, 0x5C5E,0x8CCA,0x65CF,0x7D9A,0x5352,0x8896,0x5176,0x63C3, 0x5B58,0x5B6B,0x5C0A,0x640D,0x6751,0x905C,0x4ED6,0x591A, 0x592A,0x6C70,0x8A51,0x553E,0x5815,0x59A5,0x60F0,0x6253, 0x67C1,0x8235,0x6955,0x9640,0x99C4,0x9A28,0x4F53,0x5806, 0x5BFE,0x8010,0x5CB1,0x5E2F,0x5F85,0x6020,0x614B,0x6234, 0x66FF,0x6CF0,0x6EDE,0x80CE,0x817F,0x82D4,0x888B,0x8CB8, 0x9000,0x902E,0x968A,0x9EDB,0x9BDB,0x4EE3,0x53F0,0x5927, 0x7B2C,0x918D,0x984C,0x9DF9,0x6EDD,0x7027,0x5353,0x5544, 0x5B85,0x6258,0x629E,0x62D3,0x6CA2,0x6FEF,0x7422,0x8A17, 0x9438,0x6FC1,0x8AFE,0x8338,0x51E7,0x86F8,0x53EA,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 68, Array index 0x1C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x53E9,0x4F46,0x9054,0x8FB0,0x596A,0x8131,0x5DFD, 0x7AEA,0x8FBF,0x68DA,0x8C37,0x72F8,0x9C48,0x6A3D,0x8AB0, 0x4E39,0x5358,0x5606,0x5766,0x62C5,0x63A2,0x65E6,0x6B4E, 0x6DE1,0x6E5B,0x70AD,0x77ED,0x7AEF,0x7BAA,0x7DBB,0x803D, 0x80C6,0x86CB,0x8A95,0x935B,0x56E3,0x58C7,0x5F3E,0x65AD, 0x6696,0x6A80,0x6BB5,0x7537,0x8AC7,0x5024,0x77E5,0x5730, 0x5F1B,0x6065,0x667A,0x6C60,0x75F4,0x7A1A,0x7F6E,0x81F4, 0x8718,0x9045,0x99B3,0x7BC9,0x755C,0x7AF9,0x7B51,0x84C4, 0x9010,0x79E9,0x7A92,0x8336,0x5AE1,0x7740,0x4E2D,0x4EF2, 0x5B99,0x5FE0,0x62BD,0x663C,0x67F1,0x6CE8,0x866B,0x8877, 0x8A3B,0x914E,0x92F3,0x99D0,0x6A17,0x7026,0x732A,0x82E7, 0x8457,0x8CAF,0x4E01,0x5146,0x51CB,0x558B,0x5BF5,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 69, Array index 0x1D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5E16,0x5E33,0x5E81,0x5F14,0x5F35,0x5F6B,0x5FB4, 0x61F2,0x6311,0x66A2,0x671D,0x6F6E,0x7252,0x753A,0x773A, 0x8074,0x8139,0x8178,0x8776,0x8ABF,0x8ADC,0x8D85,0x8DF3, 0x929A,0x9577,0x9802,0x9CE5,0x52C5,0x6357,0x76F4,0x6715, 0x6C88,0x73CD,0x8CC3,0x93AE,0x9673,0x6D25,0x589C,0x690E, 0x69CC,0x8FFD,0x939A,0x75DB,0x901A,0x585A,0x6802,0x63B4, 0x69FB,0x4F43,0x6F2C,0x67D8,0x8FBB,0x8526,0x7DB4,0x9354, 0x693F,0x6F70,0x576A,0x58F7,0x5B2C,0x7D2C,0x722A,0x540A, 0x91E3,0x9DB4,0x4EAD,0x4F4E,0x505C,0x5075,0x5243,0x8C9E, 0x5448,0x5824,0x5B9A,0x5E1D,0x5E95,0x5EAD,0x5EF7,0x5F1F, 0x608C,0x62B5,0x633A,0x63D0,0x68AF,0x6C40,0x7887,0x798E, 0x7A0B,0x7DE0,0x8247,0x8A02,0x8AE6,0x8E44,0x9013,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 70, Array index 0x1E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x90B8,0x912D,0x91D8,0x9F0E,0x6CE5,0x6458,0x64E2, 0x6575,0x6EF4,0x7684,0x7B1B,0x9069,0x93D1,0x6EBA,0x54F2, 0x5FB9,0x64A4,0x8F4D,0x8FED,0x9244,0x5178,0x586B,0x5929, 0x5C55,0x5E97,0x6DFB,0x7E8F,0x751C,0x8CBC,0x8EE2,0x985B, 0x70B9,0x4F1D,0x6BBF,0x6FB1,0x7530,0x96FB,0x514E,0x5410, 0x5835,0x5857,0x59AC,0x5C60,0x5F92,0x6597,0x675C,0x6E21, 0x767B,0x83DF,0x8CED,0x9014,0x90FD,0x934D,0x7825,0x783A, 0x52AA,0x5EA6,0x571F,0x5974,0x6012,0x5012,0x515A,0x51AC, 0x51CD,0x5200,0x5510,0x5854,0x5858,0x5957,0x5B95,0x5CF6, 0x5D8B,0x60BC,0x6295,0x642D,0x6771,0x6843,0x68BC,0x68DF, 0x76D7,0x6DD8,0x6E6F,0x6D9B,0x706F,0x71C8,0x5F53,0x75D8, 0x7977,0x7B49,0x7B54,0x7B52,0x7CD6,0x7D71,0x5230,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 71, Array index 0x1F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8463,0x8569,0x85E4,0x8A0E,0x8B04,0x8C46,0x8E0F, 0x9003,0x900F,0x9419,0x9676,0x982D,0x9A30,0x95D8,0x50CD, 0x52D5,0x540C,0x5802,0x5C0E,0x61A7,0x649E,0x6D1E,0x77B3, 0x7AE5,0x80F4,0x8404,0x9053,0x9285,0x5CE0,0x9D07,0x533F, 0x5F97,0x5FB3,0x6D9C,0x7279,0x7763,0x79BF,0x7BE4,0x6BD2, 0x72EC,0x8AAD,0x6803,0x6A61,0x51F8,0x7A81,0x6934,0x5C4A, 0x9CF6,0x82EB,0x5BC5,0x9149,0x701E,0x5678,0x5C6F,0x60C7, 0x6566,0x6C8C,0x8C5A,0x9041,0x9813,0x5451,0x66C7,0x920D, 0x5948,0x90A3,0x5185,0x4E4D,0x51EA,0x8599,0x8B0E,0x7058, 0x637A,0x934B,0x6962,0x99B4,0x7E04,0x7577,0x5357,0x6960, 0x8EDF,0x96E3,0x6C5D,0x4E8C,0x5C3C,0x5F10,0x8FE9,0x5302, 0x8CD1,0x8089,0x8679,0x5EFF,0x65E5,0x4E73,0x5165,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 72, Array index 0x2000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5982,0x5C3F,0x97EE,0x4EFB,0x598A,0x5FCD,0x8A8D, 0x6FE1,0x79B0,0x7962,0x5BE7,0x8471,0x732B,0x71B1,0x5E74, 0x5FF5,0x637B,0x649A,0x71C3,0x7C98,0x4E43,0x5EFC,0x4E4B, 0x57DC,0x56A2,0x60A9,0x6FC3,0x7D0D,0x80FD,0x8133,0x81BF, 0x8FB2,0x8997,0x86A4,0x5DF4,0x628A,0x64AD,0x8987,0x6777, 0x6CE2,0x6D3E,0x7436,0x7834,0x5A46,0x7F75,0x82AD,0x99AC, 0x4FF3,0x5EC3,0x62DD,0x6392,0x6557,0x676F,0x76C3,0x724C, 0x80CC,0x80BA,0x8F29,0x914D,0x500D,0x57F9,0x5A92,0x6885, 0x6973,0x7164,0x72FD,0x8CB7,0x58F2,0x8CE0,0x966A,0x9019, 0x877F,0x79E4,0x77E7,0x8429,0x4F2F,0x5265,0x535A,0x62CD, 0x67CF,0x6CCA,0x767D,0x7B94,0x7C95,0x8236,0x8584,0x8FEB, 0x66DD,0x6F20,0x7206,0x7E1B,0x83AB,0x99C1,0x9EA6,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 73, Array index 0x2100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x51FD,0x7BB1,0x7872,0x7BB8,0x8087,0x7B48,0x6AE8, 0x5E61,0x808C,0x7551,0x7560,0x516B,0x9262,0x6E8C,0x767A, 0x9197,0x9AEA,0x4F10,0x7F70,0x629C,0x7B4F,0x95A5,0x9CE9, 0x567A,0x5859,0x86E4,0x96BC,0x4F34,0x5224,0x534A,0x53CD, 0x53DB,0x5E06,0x642C,0x6591,0x677F,0x6C3E,0x6C4E,0x7248, 0x72AF,0x73ED,0x7554,0x7E41,0x822C,0x85E9,0x8CA9,0x7BC4, 0x91C6,0x7169,0x9812,0x98EF,0x633D,0x6669,0x756A,0x76E4, 0x78D0,0x8543,0x86EE,0x532A,0x5351,0x5426,0x5983,0x5E87, 0x5F7C,0x60B2,0x6249,0x6279,0x62AB,0x6590,0x6BD4,0x6CCC, 0x75B2,0x76AE,0x7891,0x79D8,0x7DCB,0x7F77,0x80A5,0x88AB, 0x8AB9,0x8CBB,0x907F,0x975E,0x98DB,0x6A0B,0x7C38,0x5099, 0x5C3E,0x5FAE,0x6787,0x6BD8,0x7435,0x7709,0x7F8E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 74, Array index 0x2200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9F3B,0x67CA,0x7A17,0x5339,0x758B,0x9AED,0x5F66, 0x819D,0x83F1,0x8098,0x5F3C,0x5FC5,0x7562,0x7B46,0x903C, 0x6867,0x59EB,0x5A9B,0x7D10,0x767E,0x8B2C,0x4FF5,0x5F6A, 0x6A19,0x6C37,0x6F02,0x74E2,0x7968,0x8868,0x8A55,0x8C79, 0x5EDF,0x63CF,0x75C5,0x79D2,0x82D7,0x9328,0x92F2,0x849C, 0x86ED,0x9C2D,0x54C1,0x5F6C,0x658C,0x6D5C,0x7015,0x8CA7, 0x8CD3,0x983B,0x654F,0x74F6,0x4E0D,0x4ED8,0x57E0,0x592B, 0x5A66,0x5BCC,0x51A8,0x5E03,0x5E9C,0x6016,0x6276,0x6577, 0x65A7,0x666E,0x6D6E,0x7236,0x7B26,0x8150,0x819A,0x8299, 0x8B5C,0x8CA0,0x8CE6,0x8D74,0x961C,0x9644,0x4FAE,0x64AB, 0x6B66,0x821E,0x8461,0x856A,0x90E8,0x5C01,0x6953,0x98A8, 0x847A,0x8557,0x4F0F,0x526F,0x5FA9,0x5E45,0x670D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 75, Array index 0x2300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x798F,0x8179,0x8907,0x8986,0x6DF5,0x5F17,0x6255, 0x6CB8,0x4ECF,0x7269,0x9B92,0x5206,0x543B,0x5674,0x58B3, 0x61A4,0x626E,0x711A,0x596E,0x7C89,0x7CDE,0x7D1B,0x96F0, 0x6587,0x805E,0x4E19,0x4F75,0x5175,0x5840,0x5E63,0x5E73, 0x5F0A,0x67C4,0x4E26,0x853D,0x9589,0x965B,0x7C73,0x9801, 0x50FB,0x58C1,0x7656,0x78A7,0x5225,0x77A5,0x8511,0x7B86, 0x504F,0x5909,0x7247,0x7BC7,0x7DE8,0x8FBA,0x8FD4,0x904D, 0x4FBF,0x52C9,0x5A29,0x5F01,0x97AD,0x4FDD,0x8217,0x92EA, 0x5703,0x6355,0x6B69,0x752B,0x88DC,0x8F14,0x7A42,0x52DF, 0x5893,0x6155,0x620A,0x66AE,0x6BCD,0x7C3F,0x83E9,0x5023, 0x4FF8,0x5305,0x5446,0x5831,0x5949,0x5B9D,0x5CF0,0x5CEF, 0x5D29,0x5E96,0x62B1,0x6367,0x653E,0x65B9,0x670B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 76, Array index 0x2400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6CD5,0x6CE1,0x70F9,0x7832,0x7E2B,0x80DE,0x82B3, 0x840C,0x84EC,0x8702,0x8912,0x8A2A,0x8C4A,0x90A6,0x92D2, 0x98FD,0x9CF3,0x9D6C,0x4E4F,0x4EA1,0x508D,0x5256,0x574A, 0x59A8,0x5E3D,0x5FD8,0x5FD9,0x623F,0x66B4,0x671B,0x67D0, 0x68D2,0x5192,0x7D21,0x80AA,0x81A8,0x8B00,0x8C8C,0x8CBF, 0x927E,0x9632,0x5420,0x982C,0x5317,0x50D5,0x535C,0x58A8, 0x64B2,0x6734,0x7267,0x7766,0x7A46,0x91E6,0x52C3,0x6CA1, 0x6B86,0x5800,0x5E4C,0x5954,0x672C,0x7FFB,0x51E1,0x76C6, 0x6469,0x78E8,0x9B54,0x9EBB,0x57CB,0x59B9,0x6627,0x679A, 0x6BCE,0x54E9,0x69D9,0x5E55,0x819C,0x6795,0x9BAA,0x67FE, 0x9C52,0x685D,0x4EA6,0x4FE3,0x53C8,0x62B9,0x672B,0x6CAB, 0x8FC4,0x4FAD,0x7E6D,0x9EBF,0x4E07,0x6162,0x6E80,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 77, Array index 0x2500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6F2B,0x8513,0x5473,0x672A,0x9B45,0x5DF3,0x7B95, 0x5CAC,0x5BC6,0x871C,0x6E4A,0x84D1,0x7A14,0x8108,0x5999, 0x7C8D,0x6C11,0x7720,0x52D9,0x5922,0x7121,0x725F,0x77DB, 0x9727,0x9D61,0x690B,0x5A7F,0x5A18,0x51A5,0x540D,0x547D, 0x660E,0x76DF,0x8FF7,0x9298,0x9CF4,0x59EA,0x725D,0x6EC5, 0x514D,0x68C9,0x7DBF,0x7DEC,0x9762,0x9EBA,0x6478,0x6A21, 0x8302,0x5984,0x5B5F,0x6BDB,0x731B,0x76F2,0x7DB2,0x8017, 0x8499,0x5132,0x6728,0x9ED9,0x76EE,0x6762,0x52FF,0x9905, 0x5C24,0x623B,0x7C7E,0x8CB0,0x554F,0x60B6,0x7D0B,0x9580, 0x5301,0x4E5F,0x51B6,0x591C,0x723A,0x8036,0x91CE,0x5F25, 0x77E2,0x5384,0x5F79,0x7D04,0x85AC,0x8A33,0x8E8D,0x9756, 0x67F3,0x85AE,0x9453,0x6109,0x6108,0x6CB9,0x7652,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 78, Array index 0x2600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8AED,0x8F38,0x552F,0x4F51,0x512A,0x52C7,0x53CB, 0x5BA5,0x5E7D,0x60A0,0x6182,0x63D6,0x6709,0x67DA,0x6E67, 0x6D8C,0x7336,0x7337,0x7531,0x7950,0x88D5,0x8A98,0x904A, 0x9091,0x90F5,0x96C4,0x878D,0x5915,0x4E88,0x4F59,0x4E0E, 0x8A89,0x8F3F,0x9810,0x50AD,0x5E7C,0x5996,0x5BB9,0x5EB8, 0x63DA,0x63FA,0x64C1,0x66DC,0x694A,0x69D8,0x6D0B,0x6EB6, 0x7194,0x7528,0x7AAF,0x7F8A,0x8000,0x8449,0x84C9,0x8981, 0x8B21,0x8E0A,0x9065,0x967D,0x990A,0x617E,0x6291,0x6B32, 0x6C83,0x6D74,0x7FCC,0x7FFC,0x6DC0,0x7F85,0x87BA,0x88F8, 0x6765,0x83B1,0x983C,0x96F7,0x6D1B,0x7D61,0x843D,0x916A, 0x4E71,0x5375,0x5D50,0x6B04,0x6FEB,0x85CD,0x862D,0x89A7, 0x5229,0x540F,0x5C65,0x674E,0x68A8,0x7406,0x7483,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 79, Array index 0x2700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x75E2,0x88CF,0x88E1,0x91CC,0x96E2,0x9678,0x5F8B, 0x7387,0x7ACB,0x844E,0x63A0,0x7565,0x5289,0x6D41,0x6E9C, 0x7409,0x7559,0x786B,0x7C92,0x9686,0x7ADC,0x9F8D,0x4FB6, 0x616E,0x65C5,0x865C,0x4E86,0x4EAE,0x50DA,0x4E21,0x51CC, 0x5BEE,0x6599,0x6881,0x6DBC,0x731F,0x7642,0x77AD,0x7A1C, 0x7CE7,0x826F,0x8AD2,0x907C,0x91CF,0x9675,0x9818,0x529B, 0x7DD1,0x502B,0x5398,0x6797,0x6DCB,0x71D0,0x7433,0x81E8, 0x8F2A,0x96A3,0x9C57,0x9E9F,0x7460,0x5841,0x6D99,0x7D2F, 0x985E,0x4EE4,0x4F36,0x4F8B,0x51B7,0x52B1,0x5DBA,0x601C, 0x73B2,0x793C,0x82D3,0x9234,0x96B7,0x96F6,0x970A,0x9E97, 0x9F62,0x66A6,0x6B74,0x5217,0x52A3,0x70C8,0x88C2,0x5EC9, 0x604B,0x6190,0x6F23,0x7149,0x7C3E,0x7DF4,0x806F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 80, Array index 0x2800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x84EE,0x9023,0x932C,0x5442,0x9B6F,0x6AD3,0x7089, 0x8CC2,0x8DEF,0x9732,0x52B4,0x5A41,0x5ECA,0x5F04,0x6717, 0x697C,0x6994,0x6D6A,0x6F0F,0x7262,0x72FC,0x7BED,0x8001, 0x807E,0x874B,0x90CE,0x516D,0x9E93,0x7984,0x808B,0x9332, 0x8AD6,0x502D,0x548C,0x8A71,0x6B6A,0x8CC4,0x8107,0x60D1, 0x67A0,0x9DF2,0x4E99,0x4E98,0x9C10,0x8A6B,0x85C1,0x8568, 0x6900,0x6E7E,0x7897,0x8155,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 81, Array index 0x2900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5F0C,0x4E10,0x4E15,0x4E2A,0x4E31,0x4E36,0x4E3C, 0x4E3F,0x4E42,0x4E56,0x4E58,0x4E82,0x4E85,0x8C6B,0x4E8A, 0x8212,0x5F0D,0x4E8E,0x4E9E,0x4E9F,0x4EA0,0x4EA2,0x4EB0, 0x4EB3,0x4EB6,0x4ECE,0x4ECD,0x4EC4,0x4EC6,0x4EC2,0x4ED7, 0x4EDE,0x4EED,0x4EDF,0x4EF7,0x4F09,0x4F5A,0x4F30,0x4F5B, 0x4F5D,0x4F57,0x4F47,0x4F76,0x4F88,0x4F8F,0x4F98,0x4F7B, 0x4F69,0x4F70,0x4F91,0x4F6F,0x4F86,0x4F96,0x5118,0x4FD4, 0x4FDF,0x4FCE,0x4FD8,0x4FDB,0x4FD1,0x4FDA,0x4FD0,0x4FE4, 0x4FE5,0x501A,0x5028,0x5014,0x502A,0x5025,0x5005,0x4F1C, 0x4FF6,0x5021,0x5029,0x502C,0x4FFE,0x4FEF,0x5011,0x5006, 0x5043,0x5047,0x6703,0x5055,0x5050,0x5048,0x505A,0x5056, 0x506C,0x5078,0x5080,0x509A,0x5085,0x50B4,0x50B2,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 82, Array index 0x2A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x50C9,0x50CA,0x50B3,0x50C2,0x50D6,0x50DE,0x50E5, 0x50ED,0x50E3,0x50EE,0x50F9,0x50F5,0x5109,0x5101,0x5102, 0x5116,0x5115,0x5114,0x511A,0x5121,0x513A,0x5137,0x513C, 0x513B,0x513F,0x5140,0x5152,0x514C,0x5154,0x5162,0x7AF8, 0x5169,0x516A,0x516E,0x5180,0x5182,0x56D8,0x518C,0x5189, 0x518F,0x5191,0x5193,0x5195,0x5196,0x51A4,0x51A6,0x51A2, 0x51A9,0x51AA,0x51AB,0x51B3,0x51B1,0x51B2,0x51B0,0x51B5, 0x51BD,0x51C5,0x51C9,0x51DB,0x51E0,0x8655,0x51E9,0x51ED, 0x51F0,0x51F5,0x51FE,0x5204,0x520B,0x5214,0x520E,0x5227, 0x522A,0x522E,0x5233,0x5239,0x524F,0x5244,0x524B,0x524C, 0x525E,0x5254,0x526A,0x5274,0x5269,0x5273,0x527F,0x527D, 0x528D,0x5294,0x5292,0x5271,0x5288,0x5291,0x8FA8,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 83, Array index 0x2B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8FA7,0x52AC,0x52AD,0x52BC,0x52B5,0x52C1,0x52CD, 0x52D7,0x52DE,0x52E3,0x52E6,0x98ED,0x52E0,0x52F3,0x52F5, 0x52F8,0x52F9,0x5306,0x5308,0x7538,0x530D,0x5310,0x530F, 0x5315,0x531A,0x5323,0x532F,0x5331,0x5333,0x5338,0x5340, 0x5346,0x5345,0x4E17,0x5349,0x534D,0x51D6,0x535E,0x5369, 0x536E,0x5918,0x537B,0x5377,0x5382,0x5396,0x53A0,0x53A6, 0x53A5,0x53AE,0x53B0,0x53B6,0x53C3,0x7C12,0x96D9,0x53DF, 0x66FC,0x71EE,0x53EE,0x53E8,0x53ED,0x53FA,0x5401,0x543D, 0x5440,0x542C,0x542D,0x543C,0x542E,0x5436,0x5429,0x541D, 0x544E,0x548F,0x5475,0x548E,0x545F,0x5471,0x5477,0x5470, 0x5492,0x547B,0x5480,0x5476,0x5484,0x5490,0x5486,0x54C7, 0x54A2,0x54B8,0x54A5,0x54AC,0x54C4,0x54C8,0x54A8,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 84, Array index 0x2C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x54AB,0x54C2,0x54A4,0x54BE,0x54BC,0x54D8,0x54E5, 0x54E6,0x550F,0x5514,0x54FD,0x54EE,0x54ED,0x54FA,0x54E2, 0x5539,0x5540,0x5563,0x554C,0x552E,0x555C,0x5545,0x5556, 0x5557,0x5538,0x5533,0x555D,0x5599,0x5580,0x54AF,0x558A, 0x559F,0x557B,0x557E,0x5598,0x559E,0x55AE,0x557C,0x5583, 0x55A9,0x5587,0x55A8,0x55DA,0x55C5,0x55DF,0x55C4,0x55DC, 0x55E4,0x55D4,0x5614,0x55F7,0x5616,0x55FE,0x55FD,0x561B, 0x55F9,0x564E,0x5650,0x71DF,0x5634,0x5636,0x5632,0x5638, 0x566B,0x5664,0x562F,0x566C,0x566A,0x5686,0x5680,0x568A, 0x56A0,0x5694,0x568F,0x56A5,0x56AE,0x56B6,0x56B4,0x56C2, 0x56BC,0x56C1,0x56C3,0x56C0,0x56C8,0x56CE,0x56D1,0x56D3, 0x56D7,0x56EE,0x56F9,0x5700,0x56FF,0x5704,0x5709,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 85, Array index 0x2D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5708,0x570B,0x570D,0x5713,0x5718,0x5716,0x55C7, 0x571C,0x5726,0x5737,0x5738,0x574E,0x573B,0x5740,0x574F, 0x5769,0x57C0,0x5788,0x5761,0x577F,0x5789,0x5793,0x57A0, 0x57B3,0x57A4,0x57AA,0x57B0,0x57C3,0x57C6,0x57D4,0x57D2, 0x57D3,0x580A,0x57D6,0x57E3,0x580B,0x5819,0x581D,0x5872, 0x5821,0x5862,0x584B,0x5870,0x6BC0,0x5852,0x583D,0x5879, 0x5885,0x58B9,0x589F,0x58AB,0x58BA,0x58DE,0x58BB,0x58B8, 0x58AE,0x58C5,0x58D3,0x58D1,0x58D7,0x58D9,0x58D8,0x58E5, 0x58DC,0x58E4,0x58DF,0x58EF,0x58FA,0x58F9,0x58FB,0x58FC, 0x58FD,0x5902,0x590A,0x5910,0x591B,0x68A6,0x5925,0x592C, 0x592D,0x5932,0x5938,0x593E,0x7AD2,0x5955,0x5950,0x594E, 0x595A,0x5958,0x5962,0x5960,0x5967,0x596C,0x5969,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 86, Array index 0x2E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5978,0x5981,0x599D,0x4F5E,0x4FAB,0x59A3,0x59B2, 0x59C6,0x59E8,0x59DC,0x598D,0x59D9,0x59DA,0x5A25,0x5A1F, 0x5A11,0x5A1C,0x5A09,0x5A1A,0x5A40,0x5A6C,0x5A49,0x5A35, 0x5A36,0x5A62,0x5A6A,0x5A9A,0x5ABC,0x5ABE,0x5ACB,0x5AC2, 0x5ABD,0x5AE3,0x5AD7,0x5AE6,0x5AE9,0x5AD6,0x5AFA,0x5AFB, 0x5B0C,0x5B0B,0x5B16,0x5B32,0x5AD0,0x5B2A,0x5B36,0x5B3E, 0x5B43,0x5B45,0x5B40,0x5B51,0x5B55,0x5B5A,0x5B5B,0x5B65, 0x5B69,0x5B70,0x5B73,0x5B75,0x5B78,0x6588,0x5B7A,0x5B80, 0x5B83,0x5BA6,0x5BB8,0x5BC3,0x5BC7,0x5BC9,0x5BD4,0x5BD0, 0x5BE4,0x5BE6,0x5BE2,0x5BDE,0x5BE5,0x5BEB,0x5BF0,0x5BF6, 0x5BF3,0x5C05,0x5C07,0x5C08,0x5C0D,0x5C13,0x5C20,0x5C22, 0x5C28,0x5C38,0x5C39,0x5C41,0x5C46,0x5C4E,0x5C53,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 87, Array index 0x2F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5C50,0x5C4F,0x5B71,0x5C6C,0x5C6E,0x4E62,0x5C76, 0x5C79,0x5C8C,0x5C91,0x5C94,0x599B,0x5CAB,0x5CBB,0x5CB6, 0x5CBC,0x5CB7,0x5CC5,0x5CBE,0x5CC7,0x5CD9,0x5CE9,0x5CFD, 0x5CFA,0x5CED,0x5D8C,0x5CEA,0x5D0B,0x5D15,0x5D17,0x5D5C, 0x5D1F,0x5D1B,0x5D11,0x5D14,0x5D22,0x5D1A,0x5D19,0x5D18, 0x5D4C,0x5D52,0x5D4E,0x5D4B,0x5D6C,0x5D73,0x5D76,0x5D87, 0x5D84,0x5D82,0x5DA2,0x5D9D,0x5DAC,0x5DAE,0x5DBD,0x5D90, 0x5DB7,0x5DBC,0x5DC9,0x5DCD,0x5DD3,0x5DD2,0x5DD6,0x5DDB, 0x5DEB,0x5DF2,0x5DF5,0x5E0B,0x5E1A,0x5E19,0x5E11,0x5E1B, 0x5E36,0x5E37,0x5E44,0x5E43,0x5E40,0x5E4E,0x5E57,0x5E54, 0x5E5F,0x5E62,0x5E64,0x5E47,0x5E75,0x5E76,0x5E7A,0x9EBC, 0x5E7F,0x5EA0,0x5EC1,0x5EC2,0x5EC8,0x5ED0,0x5ECF,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 88, Array index 0x3000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5ED6,0x5EE3,0x5EDD,0x5EDA,0x5EDB,0x5EE2,0x5EE1, 0x5EE8,0x5EE9,0x5EEC,0x5EF1,0x5EF3,0x5EF0,0x5EF4,0x5EF8, 0x5EFE,0x5F03,0x5F09,0x5F5D,0x5F5C,0x5F0B,0x5F11,0x5F16, 0x5F29,0x5F2D,0x5F38,0x5F41,0x5F48,0x5F4C,0x5F4E,0x5F2F, 0x5F51,0x5F56,0x5F57,0x5F59,0x5F61,0x5F6D,0x5F73,0x5F77, 0x5F83,0x5F82,0x5F7F,0x5F8A,0x5F88,0x5F91,0x5F87,0x5F9E, 0x5F99,0x5F98,0x5FA0,0x5FA8,0x5FAD,0x5FBC,0x5FD6,0x5FFB, 0x5FE4,0x5FF8,0x5FF1,0x5FDD,0x60B3,0x5FFF,0x6021,0x6060, 0x6019,0x6010,0x6029,0x600E,0x6031,0x601B,0x6015,0x602B, 0x6026,0x600F,0x603A,0x605A,0x6041,0x606A,0x6077,0x605F, 0x604A,0x6046,0x604D,0x6063,0x6043,0x6064,0x6042,0x606C, 0x606B,0x6059,0x6081,0x608D,0x60E7,0x6083,0x609A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 89, Array index 0x3100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6084,0x609B,0x6096,0x6097,0x6092,0x60A7,0x608B, 0x60E1,0x60B8,0x60E0,0x60D3,0x60B4,0x5FF0,0x60BD,0x60C6, 0x60B5,0x60D8,0x614D,0x6115,0x6106,0x60F6,0x60F7,0x6100, 0x60F4,0x60FA,0x6103,0x6121,0x60FB,0x60F1,0x610D,0x610E, 0x6147,0x613E,0x6128,0x6127,0x614A,0x613F,0x613C,0x612C, 0x6134,0x613D,0x6142,0x6144,0x6173,0x6177,0x6158,0x6159, 0x615A,0x616B,0x6174,0x616F,0x6165,0x6171,0x615F,0x615D, 0x6153,0x6175,0x6199,0x6196,0x6187,0x61AC,0x6194,0x619A, 0x618A,0x6191,0x61AB,0x61AE,0x61CC,0x61CA,0x61C9,0x61F7, 0x61C8,0x61C3,0x61C6,0x61BA,0x61CB,0x7F79,0x61CD,0x61E6, 0x61E3,0x61F6,0x61FA,0x61F4,0x61FF,0x61FD,0x61FC,0x61FE, 0x6200,0x6208,0x6209,0x620D,0x620C,0x6214,0x621B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 90, Array index 0x3200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x621E,0x6221,0x622A,0x622E,0x6230,0x6232,0x6233, 0x6241,0x624E,0x625E,0x6263,0x625B,0x6260,0x6268,0x627C, 0x6282,0x6289,0x627E,0x6292,0x6293,0x6296,0x62D4,0x6283, 0x6294,0x62D7,0x62D1,0x62BB,0x62CF,0x62FF,0x62C6,0x64D4, 0x62C8,0x62DC,0x62CC,0x62CA,0x62C2,0x62C7,0x629B,0x62C9, 0x630C,0x62EE,0x62F1,0x6327,0x6302,0x6308,0x62EF,0x62F5, 0x6350,0x633E,0x634D,0x641C,0x634F,0x6396,0x638E,0x6380, 0x63AB,0x6376,0x63A3,0x638F,0x6389,0x639F,0x63B5,0x636B, 0x6369,0x63BE,0x63E9,0x63C0,0x63C6,0x63E3,0x63C9,0x63D2, 0x63F6,0x63C4,0x6416,0x6434,0x6406,0x6413,0x6426,0x6436, 0x651D,0x6417,0x6428,0x640F,0x6467,0x646F,0x6476,0x644E, 0x652A,0x6495,0x6493,0x64A5,0x64A9,0x6488,0x64BC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 91, Array index 0x3300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x64DA,0x64D2,0x64C5,0x64C7,0x64BB,0x64D8,0x64C2, 0x64F1,0x64E7,0x8209,0x64E0,0x64E1,0x62AC,0x64E3,0x64EF, 0x652C,0x64F6,0x64F4,0x64F2,0x64FA,0x6500,0x64FD,0x6518, 0x651C,0x6505,0x6524,0x6523,0x652B,0x6534,0x6535,0x6537, 0x6536,0x6538,0x754B,0x6548,0x6556,0x6555,0x654D,0x6558, 0x655E,0x655D,0x6572,0x6578,0x6582,0x6583,0x8B8A,0x659B, 0x659F,0x65AB,0x65B7,0x65C3,0x65C6,0x65C1,0x65C4,0x65CC, 0x65D2,0x65DB,0x65D9,0x65E0,0x65E1,0x65F1,0x6772,0x660A, 0x6603,0x65FB,0x6773,0x6635,0x6636,0x6634,0x661C,0x664F, 0x6644,0x6649,0x6641,0x665E,0x665D,0x6664,0x6667,0x6668, 0x665F,0x6662,0x6670,0x6683,0x6688,0x668E,0x6689,0x6684, 0x6698,0x669D,0x66C1,0x66B9,0x66C9,0x66BE,0x66BC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 92, Array index 0x3400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x66C4,0x66B8,0x66D6,0x66DA,0x66E0,0x663F,0x66E6, 0x66E9,0x66F0,0x66F5,0x66F7,0x670F,0x6716,0x671E,0x6726, 0x6727,0x9738,0x672E,0x673F,0x6736,0x6741,0x6738,0x6737, 0x6746,0x675E,0x6760,0x6759,0x6763,0x6764,0x6789,0x6770, 0x67A9,0x677C,0x676A,0x678C,0x678B,0x67A6,0x67A1,0x6785, 0x67B7,0x67EF,0x67B4,0x67EC,0x67B3,0x67E9,0x67B8,0x67E4, 0x67DE,0x67DD,0x67E2,0x67EE,0x67B9,0x67CE,0x67C6,0x67E7, 0x6A9C,0x681E,0x6846,0x6829,0x6840,0x684D,0x6832,0x684E, 0x68B3,0x682B,0x6859,0x6863,0x6877,0x687F,0x689F,0x688F, 0x68AD,0x6894,0x689D,0x689B,0x6883,0x6AAE,0x68B9,0x6874, 0x68B5,0x68A0,0x68BA,0x690F,0x688D,0x687E,0x6901,0x68CA, 0x6908,0x68D8,0x6922,0x6926,0x68E1,0x690C,0x68CD,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 93, Array index 0x3500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x68D4,0x68E7,0x68D5,0x6936,0x6912,0x6904,0x68D7, 0x68E3,0x6925,0x68F9,0x68E0,0x68EF,0x6928,0x692A,0x691A, 0x6923,0x6921,0x68C6,0x6979,0x6977,0x695C,0x6978,0x696B, 0x6954,0x697E,0x696E,0x6939,0x6974,0x693D,0x6959,0x6930, 0x6961,0x695E,0x695D,0x6981,0x696A,0x69B2,0x69AE,0x69D0, 0x69BF,0x69C1,0x69D3,0x69BE,0x69CE,0x5BE8,0x69CA,0x69DD, 0x69BB,0x69C3,0x69A7,0x6A2E,0x6991,0x69A0,0x699C,0x6995, 0x69B4,0x69DE,0x69E8,0x6A02,0x6A1B,0x69FF,0x6B0A,0x69F9, 0x69F2,0x69E7,0x6A05,0x69B1,0x6A1E,0x69ED,0x6A14,0x69EB, 0x6A0A,0x6A12,0x6AC1,0x6A23,0x6A13,0x6A44,0x6A0C,0x6A72, 0x6A36,0x6A78,0x6A47,0x6A62,0x6A59,0x6A66,0x6A48,0x6A38, 0x6A22,0x6A90,0x6A8D,0x6AA0,0x6A84,0x6AA2,0x6AA3,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 94, Array index 0x3600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6A97,0x8617,0x6ABB,0x6AC3,0x6AC2,0x6AB8,0x6AB3, 0x6AAC,0x6ADE,0x6AD1,0x6ADF,0x6AAA,0x6ADA,0x6AEA,0x6AFB, 0x6B05,0x8616,0x6AFA,0x6B12,0x6B16,0x9B31,0x6B1F,0x6B38, 0x6B37,0x76DC,0x6B39,0x98EE,0x6B47,0x6B43,0x6B49,0x6B50, 0x6B59,0x6B54,0x6B5B,0x6B5F,0x6B61,0x6B78,0x6B79,0x6B7F, 0x6B80,0x6B84,0x6B83,0x6B8D,0x6B98,0x6B95,0x6B9E,0x6BA4, 0x6BAA,0x6BAB,0x6BAF,0x6BB2,0x6BB1,0x6BB3,0x6BB7,0x6BBC, 0x6BC6,0x6BCB,0x6BD3,0x6BDF,0x6BEC,0x6BEB,0x6BF3,0x6BEF, 0x9EBE,0x6C08,0x6C13,0x6C14,0x6C1B,0x6C24,0x6C23,0x6C5E, 0x6C55,0x6C62,0x6C6A,0x6C82,0x6C8D,0x6C9A,0x6C81,0x6C9B, 0x6C7E,0x6C68,0x6C73,0x6C92,0x6C90,0x6CC4,0x6CF1,0x6CD3, 0x6CBD,0x6CD7,0x6CC5,0x6CDD,0x6CAE,0x6CB1,0x6CBE,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 95, Array index 0x3700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6CBA,0x6CDB,0x6CEF,0x6CD9,0x6CEA,0x6D1F,0x884D, 0x6D36,0x6D2B,0x6D3D,0x6D38,0x6D19,0x6D35,0x6D33,0x6D12, 0x6D0C,0x6D63,0x6D93,0x6D64,0x6D5A,0x6D79,0x6D59,0x6D8E, 0x6D95,0x6FE4,0x6D85,0x6DF9,0x6E15,0x6E0A,0x6DB5,0x6DC7, 0x6DE6,0x6DB8,0x6DC6,0x6DEC,0x6DDE,0x6DCC,0x6DE8,0x6DD2, 0x6DC5,0x6DFA,0x6DD9,0x6DE4,0x6DD5,0x6DEA,0x6DEE,0x6E2D, 0x6E6E,0x6E2E,0x6E19,0x6E72,0x6E5F,0x6E3E,0x6E23,0x6E6B, 0x6E2B,0x6E76,0x6E4D,0x6E1F,0x6E43,0x6E3A,0x6E4E,0x6E24, 0x6EFF,0x6E1D,0x6E38,0x6E82,0x6EAA,0x6E98,0x6EC9,0x6EB7, 0x6ED3,0x6EBD,0x6EAF,0x6EC4,0x6EB2,0x6ED4,0x6ED5,0x6E8F, 0x6EA5,0x6EC2,0x6E9F,0x6F41,0x6F11,0x704C,0x6EEC,0x6EF8, 0x6EFE,0x6F3F,0x6EF2,0x6F31,0x6EEF,0x6F32,0x6ECC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 96, Array index 0x3800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6F3E,0x6F13,0x6EF7,0x6F86,0x6F7A,0x6F78,0x6F81, 0x6F80,0x6F6F,0x6F5B,0x6FF3,0x6F6D,0x6F82,0x6F7C,0x6F58, 0x6F8E,0x6F91,0x6FC2,0x6F66,0x6FB3,0x6FA3,0x6FA1,0x6FA4, 0x6FB9,0x6FC6,0x6FAA,0x6FDF,0x6FD5,0x6FEC,0x6FD4,0x6FD8, 0x6FF1,0x6FEE,0x6FDB,0x7009,0x700B,0x6FFA,0x7011,0x7001, 0x700F,0x6FFE,0x701B,0x701A,0x6F74,0x701D,0x7018,0x701F, 0x7030,0x703E,0x7032,0x7051,0x7063,0x7099,0x7092,0x70AF, 0x70F1,0x70AC,0x70B8,0x70B3,0x70AE,0x70DF,0x70CB,0x70DD, 0x70D9,0x7109,0x70FD,0x711C,0x7119,0x7165,0x7155,0x7188, 0x7166,0x7162,0x714C,0x7156,0x716C,0x718F,0x71FB,0x7184, 0x7195,0x71A8,0x71AC,0x71D7,0x71B9,0x71BE,0x71D2,0x71C9, 0x71D4,0x71CE,0x71E0,0x71EC,0x71E7,0x71F5,0x71FC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 97, Array index 0x3900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x71F9,0x71FF,0x720D,0x7210,0x721B,0x7228,0x722D, 0x722C,0x7230,0x7232,0x723B,0x723C,0x723F,0x7240,0x7246, 0x724B,0x7258,0x7274,0x727E,0x7282,0x7281,0x7287,0x7292, 0x7296,0x72A2,0x72A7,0x72B9,0x72B2,0x72C3,0x72C6,0x72C4, 0x72CE,0x72D2,0x72E2,0x72E0,0x72E1,0x72F9,0x72F7,0x500F, 0x7317,0x730A,0x731C,0x7316,0x731D,0x7334,0x732F,0x7329, 0x7325,0x733E,0x734E,0x734F,0x9ED8,0x7357,0x736A,0x7368, 0x7370,0x7378,0x7375,0x737B,0x737A,0x73C8,0x73B3,0x73CE, 0x73BB,0x73C0,0x73E5,0x73EE,0x73DE,0x74A2,0x7405,0x746F, 0x7425,0x73F8,0x7432,0x743A,0x7455,0x743F,0x745F,0x7459, 0x7441,0x745C,0x7469,0x7470,0x7463,0x746A,0x7476,0x747E, 0x748B,0x749E,0x74A7,0x74CA,0x74CF,0x74D4,0x73F1,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 98, Array index 0x3A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x74E0,0x74E3,0x74E7,0x74E9,0x74EE,0x74F2,0x74F0, 0x74F1,0x74F8,0x74F7,0x7504,0x7503,0x7505,0x750C,0x750E, 0x750D,0x7515,0x7513,0x751E,0x7526,0x752C,0x753C,0x7544, 0x754D,0x754A,0x7549,0x755B,0x7546,0x755A,0x7569,0x7564, 0x7567,0x756B,0x756D,0x7578,0x7576,0x7586,0x7587,0x7574, 0x758A,0x7589,0x7582,0x7594,0x759A,0x759D,0x75A5,0x75A3, 0x75C2,0x75B3,0x75C3,0x75B5,0x75BD,0x75B8,0x75BC,0x75B1, 0x75CD,0x75CA,0x75D2,0x75D9,0x75E3,0x75DE,0x75FE,0x75FF, 0x75FC,0x7601,0x75F0,0x75FA,0x75F2,0x75F3,0x760B,0x760D, 0x7609,0x761F,0x7627,0x7620,0x7621,0x7622,0x7624,0x7634, 0x7630,0x763B,0x7647,0x7648,0x7646,0x765C,0x7658,0x7661, 0x7662,0x7668,0x7669,0x766A,0x7667,0x766C,0x7670,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 99, Array index 0x3B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7672,0x7676,0x7678,0x767C,0x7680,0x7683,0x7688, 0x768B,0x768E,0x7696,0x7693,0x7699,0x769A,0x76B0,0x76B4, 0x76B8,0x76B9,0x76BA,0x76C2,0x76CD,0x76D6,0x76D2,0x76DE, 0x76E1,0x76E5,0x76E7,0x76EA,0x862F,0x76FB,0x7708,0x7707, 0x7704,0x7729,0x7724,0x771E,0x7725,0x7726,0x771B,0x7737, 0x7738,0x7747,0x775A,0x7768,0x776B,0x775B,0x7765,0x777F, 0x777E,0x7779,0x778E,0x778B,0x7791,0x77A0,0x779E,0x77B0, 0x77B6,0x77B9,0x77BF,0x77BC,0x77BD,0x77BB,0x77C7,0x77CD, 0x77D7,0x77DA,0x77DC,0x77E3,0x77EE,0x77FC,0x780C,0x7812, 0x7926,0x7820,0x792A,0x7845,0x788E,0x7874,0x7886,0x787C, 0x789A,0x788C,0x78A3,0x78B5,0x78AA,0x78AF,0x78D1,0x78C6, 0x78CB,0x78D4,0x78BE,0x78BC,0x78C5,0x78CA,0x78EC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 100, Array index 0x3C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x78E7,0x78DA,0x78FD,0x78F4,0x7907,0x7912,0x7911, 0x7919,0x792C,0x792B,0x7940,0x7960,0x7957,0x795F,0x795A, 0x7955,0x7953,0x797A,0x797F,0x798A,0x799D,0x79A7,0x9F4B, 0x79AA,0x79AE,0x79B3,0x79B9,0x79BA,0x79C9,0x79D5,0x79E7, 0x79EC,0x79E1,0x79E3,0x7A08,0x7A0D,0x7A18,0x7A19,0x7A20, 0x7A1F,0x7980,0x7A31,0x7A3B,0x7A3E,0x7A37,0x7A43,0x7A57, 0x7A49,0x7A61,0x7A62,0x7A69,0x9F9D,0x7A70,0x7A79,0x7A7D, 0x7A88,0x7A97,0x7A95,0x7A98,0x7A96,0x7AA9,0x7AC8,0x7AB0, 0x7AB6,0x7AC5,0x7AC4,0x7ABF,0x9083,0x7AC7,0x7ACA,0x7ACD, 0x7ACF,0x7AD5,0x7AD3,0x7AD9,0x7ADA,0x7ADD,0x7AE1,0x7AE2, 0x7AE6,0x7AED,0x7AF0,0x7B02,0x7B0F,0x7B0A,0x7B06,0x7B33, 0x7B18,0x7B19,0x7B1E,0x7B35,0x7B28,0x7B36,0x7B50,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 101, Array index 0x3D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7B7A,0x7B04,0x7B4D,0x7B0B,0x7B4C,0x7B45,0x7B75, 0x7B65,0x7B74,0x7B67,0x7B70,0x7B71,0x7B6C,0x7B6E,0x7B9D, 0x7B98,0x7B9F,0x7B8D,0x7B9C,0x7B9A,0x7B8B,0x7B92,0x7B8F, 0x7B5D,0x7B99,0x7BCB,0x7BC1,0x7BCC,0x7BCF,0x7BB4,0x7BC6, 0x7BDD,0x7BE9,0x7C11,0x7C14,0x7BE6,0x7BE5,0x7C60,0x7C00, 0x7C07,0x7C13,0x7BF3,0x7BF7,0x7C17,0x7C0D,0x7BF6,0x7C23, 0x7C27,0x7C2A,0x7C1F,0x7C37,0x7C2B,0x7C3D,0x7C4C,0x7C43, 0x7C54,0x7C4F,0x7C40,0x7C50,0x7C58,0x7C5F,0x7C64,0x7C56, 0x7C65,0x7C6C,0x7C75,0x7C83,0x7C90,0x7CA4,0x7CAD,0x7CA2, 0x7CAB,0x7CA1,0x7CA8,0x7CB3,0x7CB2,0x7CB1,0x7CAE,0x7CB9, 0x7CBD,0x7CC0,0x7CC5,0x7CC2,0x7CD8,0x7CD2,0x7CDC,0x7CE2, 0x9B3B,0x7CEF,0x7CF2,0x7CF4,0x7CF6,0x7CFA,0x7D06,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 102, Array index 0x3E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7D02,0x7D1C,0x7D15,0x7D0A,0x7D45,0x7D4B,0x7D2E, 0x7D32,0x7D3F,0x7D35,0x7D46,0x7D73,0x7D56,0x7D4E,0x7D72, 0x7D68,0x7D6E,0x7D4F,0x7D63,0x7D93,0x7D89,0x7D5B,0x7D8F, 0x7D7D,0x7D9B,0x7DBA,0x7DAE,0x7DA3,0x7DB5,0x7DC7,0x7DBD, 0x7DAB,0x7E3D,0x7DA2,0x7DAF,0x7DDC,0x7DB8,0x7D9F,0x7DB0, 0x7DD8,0x7DDD,0x7DE4,0x7DDE,0x7DFB,0x7DF2,0x7DE1,0x7E05, 0x7E0A,0x7E23,0x7E21,0x7E12,0x7E31,0x7E1F,0x7E09,0x7E0B, 0x7E22,0x7E46,0x7E66,0x7E3B,0x7E35,0x7E39,0x7E43,0x7E37, 0x7E32,0x7E3A,0x7E67,0x7E5D,0x7E56,0x7E5E,0x7E59,0x7E5A, 0x7E79,0x7E6A,0x7E69,0x7E7C,0x7E7B,0x7E83,0x7DD5,0x7E7D, 0x8FAE,0x7E7F,0x7E88,0x7E89,0x7E8C,0x7E92,0x7E90,0x7E93, 0x7E94,0x7E96,0x7E8E,0x7E9B,0x7E9C,0x7F38,0x7F3A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 103, Array index 0x3F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7F45,0x7F4C,0x7F4D,0x7F4E,0x7F50,0x7F51,0x7F55, 0x7F54,0x7F58,0x7F5F,0x7F60,0x7F68,0x7F69,0x7F67,0x7F78, 0x7F82,0x7F86,0x7F83,0x7F88,0x7F87,0x7F8C,0x7F94,0x7F9E, 0x7F9D,0x7F9A,0x7FA3,0x7FAF,0x7FB2,0x7FB9,0x7FAE,0x7FB6, 0x7FB8,0x8B71,0x7FC5,0x7FC6,0x7FCA,0x7FD5,0x7FD4,0x7FE1, 0x7FE6,0x7FE9,0x7FF3,0x7FF9,0x98DC,0x8006,0x8004,0x800B, 0x8012,0x8018,0x8019,0x801C,0x8021,0x8028,0x803F,0x803B, 0x804A,0x8046,0x8052,0x8058,0x805A,0x805F,0x8062,0x8068, 0x8073,0x8072,0x8070,0x8076,0x8079,0x807D,0x807F,0x8084, 0x8086,0x8085,0x809B,0x8093,0x809A,0x80AD,0x5190,0x80AC, 0x80DB,0x80E5,0x80D9,0x80DD,0x80C4,0x80DA,0x80D6,0x8109, 0x80EF,0x80F1,0x811B,0x8129,0x8123,0x812F,0x814B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 104, Array index 0x4000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x968B,0x8146,0x813E,0x8153,0x8151,0x80FC,0x8171, 0x816E,0x8165,0x8166,0x8174,0x8183,0x8188,0x818A,0x8180, 0x8182,0x81A0,0x8195,0x81A4,0x81A3,0x815F,0x8193,0x81A9, 0x81B0,0x81B5,0x81BE,0x81B8,0x81BD,0x81C0,0x81C2,0x81BA, 0x81C9,0x81CD,0x81D1,0x81D9,0x81D8,0x81C8,0x81DA,0x81DF, 0x81E0,0x81E7,0x81FA,0x81FB,0x81FE,0x8201,0x8202,0x8205, 0x8207,0x820A,0x820D,0x8210,0x8216,0x8229,0x822B,0x8238, 0x8233,0x8240,0x8259,0x8258,0x825D,0x825A,0x825F,0x8264, 0x8262,0x8268,0x826A,0x826B,0x822E,0x8271,0x8277,0x8278, 0x827E,0x828D,0x8292,0x82AB,0x829F,0x82BB,0x82AC,0x82E1, 0x82E3,0x82DF,0x82D2,0x82F4,0x82F3,0x82FA,0x8393,0x8303, 0x82FB,0x82F9,0x82DE,0x8306,0x82DC,0x8309,0x82D9,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 105, Array index 0x4100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8335,0x8334,0x8316,0x8332,0x8331,0x8340,0x8339, 0x8350,0x8345,0x832F,0x832B,0x8317,0x8318,0x8385,0x839A, 0x83AA,0x839F,0x83A2,0x8396,0x8323,0x838E,0x8387,0x838A, 0x837C,0x83B5,0x8373,0x8375,0x83A0,0x8389,0x83A8,0x83F4, 0x8413,0x83EB,0x83CE,0x83FD,0x8403,0x83D8,0x840B,0x83C1, 0x83F7,0x8407,0x83E0,0x83F2,0x840D,0x8422,0x8420,0x83BD, 0x8438,0x8506,0x83FB,0x846D,0x842A,0x843C,0x855A,0x8484, 0x8477,0x846B,0x84AD,0x846E,0x8482,0x8469,0x8446,0x842C, 0x846F,0x8479,0x8435,0x84CA,0x8462,0x84B9,0x84BF,0x849F, 0x84D9,0x84CD,0x84BB,0x84DA,0x84D0,0x84C1,0x84C6,0x84D6, 0x84A1,0x8521,0x84FF,0x84F4,0x8517,0x8518,0x852C,0x851F, 0x8515,0x8514,0x84FC,0x8540,0x8563,0x8558,0x8548,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 106, Array index 0x4200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8541,0x8602,0x854B,0x8555,0x8580,0x85A4,0x8588, 0x8591,0x858A,0x85A8,0x856D,0x8594,0x859B,0x85EA,0x8587, 0x859C,0x8577,0x857E,0x8590,0x85C9,0x85BA,0x85CF,0x85B9, 0x85D0,0x85D5,0x85DD,0x85E5,0x85DC,0x85F9,0x860A,0x8613, 0x860B,0x85FE,0x85FA,0x8606,0x8622,0x861A,0x8630,0x863F, 0x864D,0x4E55,0x8654,0x865F,0x8667,0x8671,0x8693,0x86A3, 0x86A9,0x86AA,0x868B,0x868C,0x86B6,0x86AF,0x86C4,0x86C6, 0x86B0,0x86C9,0x8823,0x86AB,0x86D4,0x86DE,0x86E9,0x86EC, 0x86DF,0x86DB,0x86EF,0x8712,0x8706,0x8708,0x8700,0x8703, 0x86FB,0x8711,0x8709,0x870D,0x86F9,0x870A,0x8734,0x873F, 0x8737,0x873B,0x8725,0x8729,0x871A,0x8760,0x875F,0x8778, 0x874C,0x874E,0x8774,0x8757,0x8768,0x876E,0x8759,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 107, Array index 0x4300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8753,0x8763,0x876A,0x8805,0x87A2,0x879F,0x8782, 0x87AF,0x87CB,0x87BD,0x87C0,0x87D0,0x96D6,0x87AB,0x87C4, 0x87B3,0x87C7,0x87C6,0x87BB,0x87EF,0x87F2,0x87E0,0x880F, 0x880D,0x87FE,0x87F6,0x87F7,0x880E,0x87D2,0x8811,0x8816, 0x8815,0x8822,0x8821,0x8831,0x8836,0x8839,0x8827,0x883B, 0x8844,0x8842,0x8852,0x8859,0x885E,0x8862,0x886B,0x8881, 0x887E,0x889E,0x8875,0x887D,0x88B5,0x8872,0x8882,0x8897, 0x8892,0x88AE,0x8899,0x88A2,0x888D,0x88A4,0x88B0,0x88BF, 0x88B1,0x88C3,0x88C4,0x88D4,0x88D8,0x88D9,0x88DD,0x88F9, 0x8902,0x88FC,0x88F4,0x88E8,0x88F2,0x8904,0x890C,0x890A, 0x8913,0x8943,0x891E,0x8925,0x892A,0x892B,0x8941,0x8944, 0x893B,0x8936,0x8938,0x894C,0x891D,0x8960,0x895E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 108, Array index 0x4400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8966,0x8964,0x896D,0x896A,0x896F,0x8974,0x8977, 0x897E,0x8983,0x8988,0x898A,0x8993,0x8998,0x89A1,0x89A9, 0x89A6,0x89AC,0x89AF,0x89B2,0x89BA,0x89BD,0x89BF,0x89C0, 0x89DA,0x89DC,0x89DD,0x89E7,0x89F4,0x89F8,0x8A03,0x8A16, 0x8A10,0x8A0C,0x8A1B,0x8A1D,0x8A25,0x8A36,0x8A41,0x8A5B, 0x8A52,0x8A46,0x8A48,0x8A7C,0x8A6D,0x8A6C,0x8A62,0x8A85, 0x8A82,0x8A84,0x8AA8,0x8AA1,0x8A91,0x8AA5,0x8AA6,0x8A9A, 0x8AA3,0x8AC4,0x8ACD,0x8AC2,0x8ADA,0x8AEB,0x8AF3,0x8AE7, 0x8AE4,0x8AF1,0x8B14,0x8AE0,0x8AE2,0x8AF7,0x8ADE,0x8ADB, 0x8B0C,0x8B07,0x8B1A,0x8AE1,0x8B16,0x8B10,0x8B17,0x8B20, 0x8B33,0x97AB,0x8B26,0x8B2B,0x8B3E,0x8B28,0x8B41,0x8B4C, 0x8B4F,0x8B4E,0x8B49,0x8B56,0x8B5B,0x8B5A,0x8B6B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 109, Array index 0x4500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8B5F,0x8B6C,0x8B6F,0x8B74,0x8B7D,0x8B80,0x8B8C, 0x8B8E,0x8B92,0x8B93,0x8B96,0x8B99,0x8B9A,0x8C3A,0x8C41, 0x8C3F,0x8C48,0x8C4C,0x8C4E,0x8C50,0x8C55,0x8C62,0x8C6C, 0x8C78,0x8C7A,0x8C82,0x8C89,0x8C85,0x8C8A,0x8C8D,0x8C8E, 0x8C94,0x8C7C,0x8C98,0x621D,0x8CAD,0x8CAA,0x8CBD,0x8CB2, 0x8CB3,0x8CAE,0x8CB6,0x8CC8,0x8CC1,0x8CE4,0x8CE3,0x8CDA, 0x8CFD,0x8CFA,0x8CFB,0x8D04,0x8D05,0x8D0A,0x8D07,0x8D0F, 0x8D0D,0x8D10,0x9F4E,0x8D13,0x8CCD,0x8D14,0x8D16,0x8D67, 0x8D6D,0x8D71,0x8D73,0x8D81,0x8D99,0x8DC2,0x8DBE,0x8DBA, 0x8DCF,0x8DDA,0x8DD6,0x8DCC,0x8DDB,0x8DCB,0x8DEA,0x8DEB, 0x8DDF,0x8DE3,0x8DFC,0x8E08,0x8E09,0x8DFF,0x8E1D,0x8E1E, 0x8E10,0x8E1F,0x8E42,0x8E35,0x8E30,0x8E34,0x8E4A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 110, Array index 0x4600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8E47,0x8E49,0x8E4C,0x8E50,0x8E48,0x8E59,0x8E64, 0x8E60,0x8E2A,0x8E63,0x8E55,0x8E76,0x8E72,0x8E7C,0x8E81, 0x8E87,0x8E85,0x8E84,0x8E8B,0x8E8A,0x8E93,0x8E91,0x8E94, 0x8E99,0x8EAA,0x8EA1,0x8EAC,0x8EB0,0x8EC6,0x8EB1,0x8EBE, 0x8EC5,0x8EC8,0x8ECB,0x8EDB,0x8EE3,0x8EFC,0x8EFB,0x8EEB, 0x8EFE,0x8F0A,0x8F05,0x8F15,0x8F12,0x8F19,0x8F13,0x8F1C, 0x8F1F,0x8F1B,0x8F0C,0x8F26,0x8F33,0x8F3B,0x8F39,0x8F45, 0x8F42,0x8F3E,0x8F4C,0x8F49,0x8F46,0x8F4E,0x8F57,0x8F5C, 0x8F62,0x8F63,0x8F64,0x8F9C,0x8F9F,0x8FA3,0x8FAD,0x8FAF, 0x8FB7,0x8FDA,0x8FE5,0x8FE2,0x8FEA,0x8FEF,0x9087,0x8FF4, 0x9005,0x8FF9,0x8FFA,0x9011,0x9015,0x9021,0x900D,0x901E, 0x9016,0x900B,0x9027,0x9036,0x9035,0x9039,0x8FF8,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 111, Array index 0x4700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x904F,0x9050,0x9051,0x9052,0x900E,0x9049,0x903E, 0x9056,0x9058,0x905E,0x9068,0x906F,0x9076,0x96A8,0x9072, 0x9082,0x907D,0x9081,0x9080,0x908A,0x9089,0x908F,0x90A8, 0x90AF,0x90B1,0x90B5,0x90E2,0x90E4,0x6248,0x90DB,0x9102, 0x9112,0x9119,0x9132,0x9130,0x914A,0x9156,0x9158,0x9163, 0x9165,0x9169,0x9173,0x9172,0x918B,0x9189,0x9182,0x91A2, 0x91AB,0x91AF,0x91AA,0x91B5,0x91B4,0x91BA,0x91C0,0x91C1, 0x91C9,0x91CB,0x91D0,0x91D6,0x91DF,0x91E1,0x91DB,0x91FC, 0x91F5,0x91F6,0x921E,0x91FF,0x9214,0x922C,0x9215,0x9211, 0x925E,0x9257,0x9245,0x9249,0x9264,0x9248,0x9295,0x923F, 0x924B,0x9250,0x929C,0x9296,0x9293,0x929B,0x925A,0x92CF, 0x92B9,0x92B7,0x92E9,0x930F,0x92FA,0x9344,0x932E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 112, Array index 0x4800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9319,0x9322,0x931A,0x9323,0x933A,0x9335,0x933B, 0x935C,0x9360,0x937C,0x936E,0x9356,0x93B0,0x93AC,0x93AD, 0x9394,0x93B9,0x93D6,0x93D7,0x93E8,0x93E5,0x93D8,0x93C3, 0x93DD,0x93D0,0x93C8,0x93E4,0x941A,0x9414,0x9413,0x9403, 0x9407,0x9410,0x9436,0x942B,0x9435,0x9421,0x943A,0x9441, 0x9452,0x9444,0x945B,0x9460,0x9462,0x945E,0x946A,0x9229, 0x9470,0x9475,0x9477,0x947D,0x945A,0x947C,0x947E,0x9481, 0x947F,0x9582,0x9587,0x958A,0x9594,0x9596,0x9598,0x9599, 0x95A0,0x95A8,0x95A7,0x95AD,0x95BC,0x95BB,0x95B9,0x95BE, 0x95CA,0x6FF6,0x95C3,0x95CD,0x95CC,0x95D5,0x95D4,0x95D6, 0x95DC,0x95E1,0x95E5,0x95E2,0x9621,0x9628,0x962E,0x962F, 0x9642,0x964C,0x964F,0x964B,0x9677,0x965C,0x965E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 113, Array index 0x4900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x965D,0x965F,0x9666,0x9672,0x966C,0x968D,0x9698, 0x9695,0x9697,0x96AA,0x96A7,0x96B1,0x96B2,0x96B0,0x96B4, 0x96B6,0x96B8,0x96B9,0x96CE,0x96CB,0x96C9,0x96CD,0x894D, 0x96DC,0x970D,0x96D5,0x96F9,0x9704,0x9706,0x9708,0x9713, 0x970E,0x9711,0x970F,0x9716,0x9719,0x9724,0x972A,0x9730, 0x9739,0x973D,0x973E,0x9744,0x9746,0x9748,0x9742,0x9749, 0x975C,0x9760,0x9764,0x9766,0x9768,0x52D2,0x976B,0x9771, 0x9779,0x9785,0x977C,0x9781,0x977A,0x9786,0x978B,0x978F, 0x9790,0x979C,0x97A8,0x97A6,0x97A3,0x97B3,0x97B4,0x97C3, 0x97C6,0x97C8,0x97CB,0x97DC,0x97ED,0x9F4F,0x97F2,0x7ADF, 0x97F6,0x97F5,0x980F,0x980C,0x9838,0x9824,0x9821,0x9837, 0x983D,0x9846,0x984F,0x984B,0x986B,0x986F,0x9870,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 114, Array index 0x4A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9871,0x9874,0x9873,0x98AA,0x98AF,0x98B1,0x98B6, 0x98C4,0x98C3,0x98C6,0x98E9,0x98EB,0x9903,0x9909,0x9912, 0x9914,0x9918,0x9921,0x991D,0x991E,0x9924,0x9920,0x992C, 0x992E,0x993D,0x993E,0x9942,0x9949,0x9945,0x9950,0x994B, 0x9951,0x9952,0x994C,0x9955,0x9997,0x9998,0x99A5,0x99AD, 0x99AE,0x99BC,0x99DF,0x99DB,0x99DD,0x99D8,0x99D1,0x99ED, 0x99EE,0x99F1,0x99F2,0x99FB,0x99F8,0x9A01,0x9A0F,0x9A05, 0x99E2,0x9A19,0x9A2B,0x9A37,0x9A45,0x9A42,0x9A40,0x9A43, 0x9A3E,0x9A55,0x9A4D,0x9A5B,0x9A57,0x9A5F,0x9A62,0x9A65, 0x9A64,0x9A69,0x9A6B,0x9A6A,0x9AAD,0x9AB0,0x9ABC,0x9AC0, 0x9ACF,0x9AD1,0x9AD3,0x9AD4,0x9ADE,0x9ADF,0x9AE2,0x9AE3, 0x9AE6,0x9AEF,0x9AEB,0x9AEE,0x9AF4,0x9AF1,0x9AF7,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 115, Array index 0x4B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9AFB,0x9B06,0x9B18,0x9B1A,0x9B1F,0x9B22,0x9B23, 0x9B25,0x9B27,0x9B28,0x9B29,0x9B2A,0x9B2E,0x9B2F,0x9B32, 0x9B44,0x9B43,0x9B4F,0x9B4D,0x9B4E,0x9B51,0x9B58,0x9B74, 0x9B93,0x9B83,0x9B91,0x9B96,0x9B97,0x9B9F,0x9BA0,0x9BA8, 0x9BB4,0x9BC0,0x9BCA,0x9BB9,0x9BC6,0x9BCF,0x9BD1,0x9BD2, 0x9BE3,0x9BE2,0x9BE4,0x9BD4,0x9BE1,0x9C3A,0x9BF2,0x9BF1, 0x9BF0,0x9C15,0x9C14,0x9C09,0x9C13,0x9C0C,0x9C06,0x9C08, 0x9C12,0x9C0A,0x9C04,0x9C2E,0x9C1B,0x9C25,0x9C24,0x9C21, 0x9C30,0x9C47,0x9C32,0x9C46,0x9C3E,0x9C5A,0x9C60,0x9C67, 0x9C76,0x9C78,0x9CE7,0x9CEC,0x9CF0,0x9D09,0x9D08,0x9CEB, 0x9D03,0x9D06,0x9D2A,0x9D26,0x9DAF,0x9D23,0x9D1F,0x9D44, 0x9D15,0x9D12,0x9D41,0x9D3F,0x9D3E,0x9D46,0x9D48,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 116, Array index 0x4C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9D5D,0x9D5E,0x9D64,0x9D51,0x9D50,0x9D59,0x9D72, 0x9D89,0x9D87,0x9DAB,0x9D6F,0x9D7A,0x9D9A,0x9DA4,0x9DA9, 0x9DB2,0x9DC4,0x9DC1,0x9DBB,0x9DB8,0x9DBA,0x9DC6,0x9DCF, 0x9DC2,0x9DD9,0x9DD3,0x9DF8,0x9DE6,0x9DED,0x9DEF,0x9DFD, 0x9E1A,0x9E1B,0x9E1E,0x9E75,0x9E79,0x9E7D,0x9E81,0x9E88, 0x9E8B,0x9E8C,0x9E92,0x9E95,0x9E91,0x9E9D,0x9EA5,0x9EA9, 0x9EB8,0x9EAA,0x9EAD,0x9761,0x9ECC,0x9ECE,0x9ECF,0x9ED0, 0x9ED4,0x9EDC,0x9EDE,0x9EDD,0x9EE0,0x9EE5,0x9EE8,0x9EEF, 0x9EF4,0x9EF6,0x9EF7,0x9EF9,0x9EFB,0x9EFC,0x9EFD,0x9F07, 0x9F08,0x76B7,0x9F15,0x9F21,0x9F2C,0x9F3E,0x9F4A,0x9F52, 0x9F54,0x9F63,0x9F5F,0x9F60,0x9F61,0x9F66,0x9F67,0x9F6C, 0x9F6A,0x9F77,0x9F72,0x9F76,0x9F95,0x9F9C,0x9FA0,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 117, Array index 0x4D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x582F,0x69C7,0x9059,0x7464,0x51DC,0x7199,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, }; #endif /* ICONV_TO_UCS_CCS_JIS_X0208_1990 && !defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * 16-bit jis_x0208_1990 -> UCS size-optimized table (14276 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_JIS_X0208_1990) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t to_ucs_size_jis_x0208_1990[] = { 0x0055, /* Ranges number */ 0x0001, /* Unranged codes number */ 0x1BE0, /* First unranged code index */ /* Ranges list: first code, last Code, array index. */ /* Array index: 0x0003 */ 0x2121, 0x217E, 0x0102, /* Array index: 0x0006 */ 0x2221, 0x222E, 0x0160, /* Array index: 0x0009 */ 0x223A, 0x2241, 0x016E, /* Array index: 0x000C */ 0x224A, 0x2250, 0x0176, /* Array index: 0x000F */ 0x225C, 0x226A, 0x017D, /* Array index: 0x0012 */ 0x2272, 0x2279, 0x018C, /* Array index: 0x0015 */ 0x2330, 0x2339, 0x0194, /* Array index: 0x0018 */ 0x2341, 0x235A, 0x019E, /* Array index: 0x001B */ 0x2361, 0x237A, 0x01B8, /* Array index: 0x001E */ 0x2421, 0x2473, 0x01D2, /* Array index: 0x0021 */ 0x2521, 0x2576, 0x0225, /* Array index: 0x0024 */ 0x2621, 0x2638, 0x027B, /* Array index: 0x0027 */ 0x2641, 0x2658, 0x0293, /* Array index: 0x002A */ 0x2721, 0x2741, 0x02AB, /* Array index: 0x002D */ 0x2751, 0x2771, 0x02CC, /* Array index: 0x0030 */ 0x2821, 0x2840, 0x02ED, /* Array index: 0x0033 */ 0x3021, 0x307E, 0x030D, /* Array index: 0x0036 */ 0x3121, 0x317E, 0x036B, /* Array index: 0x0039 */ 0x3221, 0x327E, 0x03C9, /* Array index: 0x003C */ 0x3321, 0x337E, 0x0427, /* Array index: 0x003F */ 0x3421, 0x347E, 0x0485, /* Array index: 0x0042 */ 0x3521, 0x357E, 0x04E3, /* Array index: 0x0045 */ 0x3621, 0x367E, 0x0541, /* Array index: 0x0048 */ 0x3721, 0x377E, 0x059F, /* Array index: 0x004B */ 0x3821, 0x387E, 0x05FD, /* Array index: 0x004E */ 0x3921, 0x397E, 0x065B, /* Array index: 0x0051 */ 0x3A21, 0x3A7E, 0x06B9, /* Array index: 0x0054 */ 0x3B21, 0x3B7E, 0x0717, /* Array index: 0x0057 */ 0x3C21, 0x3C7E, 0x0775, /* Array index: 0x005A */ 0x3D21, 0x3D7E, 0x07D3, /* Array index: 0x005D */ 0x3E21, 0x3E7E, 0x0831, /* Array index: 0x0060 */ 0x3F21, 0x3F7E, 0x088F, /* Array index: 0x0063 */ 0x4021, 0x407E, 0x08ED, /* Array index: 0x0066 */ 0x4121, 0x417E, 0x094B, /* Array index: 0x0069 */ 0x4221, 0x427E, 0x09A9, /* Array index: 0x006C */ 0x4321, 0x437E, 0x0A07, /* Array index: 0x006F */ 0x4421, 0x447E, 0x0A65, /* Array index: 0x0072 */ 0x4521, 0x457E, 0x0AC3, /* Array index: 0x0075 */ 0x4621, 0x467E, 0x0B21, /* Array index: 0x0078 */ 0x4721, 0x477E, 0x0B7F, /* Array index: 0x007B */ 0x4821, 0x487E, 0x0BDD, /* Array index: 0x007E */ 0x4921, 0x497E, 0x0C3B, /* Array index: 0x0081 */ 0x4A21, 0x4A7E, 0x0C99, /* Array index: 0x0084 */ 0x4B21, 0x4B7E, 0x0CF7, /* Array index: 0x0087 */ 0x4C21, 0x4C7E, 0x0D55, /* Array index: 0x008A */ 0x4D21, 0x4D7E, 0x0DB3, /* Array index: 0x008D */ 0x4E21, 0x4E7E, 0x0E11, /* Array index: 0x0090 */ 0x4F21, 0x4F53, 0x0E6F, /* Array index: 0x0093 */ 0x5021, 0x507E, 0x0EA2, /* Array index: 0x0096 */ 0x5121, 0x517E, 0x0F00, /* Array index: 0x0099 */ 0x5221, 0x527E, 0x0F5E, /* Array index: 0x009C */ 0x5321, 0x537E, 0x0FBC, /* Array index: 0x009F */ 0x5421, 0x547E, 0x101A, /* Array index: 0x00A2 */ 0x5521, 0x557E, 0x1078, /* Array index: 0x00A5 */ 0x5621, 0x567E, 0x10D6, /* Array index: 0x00A8 */ 0x5721, 0x577E, 0x1134, /* Array index: 0x00AB */ 0x5821, 0x587E, 0x1192, /* Array index: 0x00AE */ 0x5921, 0x597E, 0x11F0, /* Array index: 0x00B1 */ 0x5A21, 0x5A7E, 0x124E, /* Array index: 0x00B4 */ 0x5B21, 0x5B7E, 0x12AC, /* Array index: 0x00B7 */ 0x5C21, 0x5C7E, 0x130A, /* Array index: 0x00BA */ 0x5D21, 0x5D7E, 0x1368, /* Array index: 0x00BD */ 0x5E21, 0x5E7E, 0x13C6, /* Array index: 0x00C0 */ 0x5F21, 0x5F7E, 0x1424, /* Array index: 0x00C3 */ 0x6021, 0x607E, 0x1482, /* Array index: 0x00C6 */ 0x6121, 0x617E, 0x14E0, /* Array index: 0x00C9 */ 0x6221, 0x627E, 0x153E, /* Array index: 0x00CC */ 0x6321, 0x637E, 0x159C, /* Array index: 0x00CF */ 0x6421, 0x647E, 0x15FA, /* Array index: 0x00D2 */ 0x6521, 0x657E, 0x1658, /* Array index: 0x00D5 */ 0x6621, 0x667E, 0x16B6, /* Array index: 0x00D8 */ 0x6721, 0x677E, 0x1714, /* Array index: 0x00DB */ 0x6821, 0x687E, 0x1772, /* Array index: 0x00DE */ 0x6921, 0x697E, 0x17D0, /* Array index: 0x00E1 */ 0x6A21, 0x6A7E, 0x182E, /* Array index: 0x00E4 */ 0x6B21, 0x6B7E, 0x188C, /* Array index: 0x00E7 */ 0x6C21, 0x6C7E, 0x18EA, /* Array index: 0x00EA */ 0x6D21, 0x6D7E, 0x1948, /* Array index: 0x00ED */ 0x6E21, 0x6E7E, 0x19A6, /* Array index: 0x00F0 */ 0x6F21, 0x6F7E, 0x1A04, /* Array index: 0x00F3 */ 0x7021, 0x707E, 0x1A62, /* Array index: 0x00F6 */ 0x7121, 0x717E, 0x1AC0, /* Array index: 0x00F9 */ 0x7221, 0x727E, 0x1B1E, /* Array index: 0x00FC */ 0x7321, 0x737E, 0x1B7C, /* Array index: 0x00FF */ 0x7421, 0x7426, 0x1BDA, /* Ranges content */ /* Range 0x2121 - 0x217E, array index: 0x0102 */ 0x3000,0x3001,0x3002,0xFF0C,0xFF0E,0x30FB,0xFF1A,0xFF1B, 0xFF1F,0xFF01,0x309B,0x309C,0x00B4,0xFF40,0x00A8,0xFF3E, 0xFFE3,0xFF3F,0x30FD,0x30FE,0x309D,0x309E,0x3003,0x4EDD, 0x3005,0x3006,0x3007,0x30FC,0x2015,0x2010,0xFF0F,0x005C, 0x301C,0x2016,0xFF5C,0x2026,0x2025,0x2018,0x2019,0x201C, 0x201D,0xFF08,0xFF09,0x3014,0x3015,0xFF3B,0xFF3D,0xFF5B, 0xFF5D,0x3008,0x3009,0x300A,0x300B,0x300C,0x300D,0x300E, 0x300F,0x3010,0x3011,0xFF0B,0x2212,0x00B1,0x00D7,0x00F7, 0xFF1D,0x2260,0xFF1C,0xFF1E,0x2266,0x2267,0x221E,0x2234, 0x2642,0x2640,0x00B0,0x2032,0x2033,0x2103,0xFFE5,0xFF04, 0x00A2,0x00A3,0xFF05,0xFF03,0xFF06,0xFF0A,0xFF20,0x00A7, 0x2606,0x2605,0x25CB,0x25CF,0x25CE,0x25C7, /* Range 0x2221 - 0x222E, array index: 0x0160 */ 0x25C6,0x25A1,0x25A0,0x25B3,0x25B2,0x25BD,0x25BC,0x203B, 0x3012,0x2192,0x2190,0x2191,0x2193,0x3013, /* Range 0x223A - 0x2241, array index: 0x016E */ 0x2208,0x220B,0x2286,0x2287,0x2282,0x2283,0x222A,0x2229, /* Range 0x224A - 0x2250, array index: 0x0176 */ 0x2227,0x2228,0x00AC,0x21D2,0x21D4,0x2200,0x2203, /* Range 0x225C - 0x226A, array index: 0x017D */ 0x2220,0x22A5,0x2312,0x2202,0x2207,0x2261,0x2252,0x226A, 0x226B,0x221A,0x223D,0x221D,0x2235,0x222B,0x222C, /* Range 0x2272 - 0x2279, array index: 0x018C */ 0x212B,0x2030,0x266F,0x266D,0x266A,0x2020,0x2021,0x00B6, /* Range 0x2330 - 0x2339, array index: 0x0194 */ 0xFF10,0xFF11,0xFF12,0xFF13,0xFF14,0xFF15,0xFF16,0xFF17, 0xFF18,0xFF19, /* Range 0x2341 - 0x235A, array index: 0x019E */ 0xFF21,0xFF22,0xFF23,0xFF24,0xFF25,0xFF26,0xFF27,0xFF28, 0xFF29,0xFF2A,0xFF2B,0xFF2C,0xFF2D,0xFF2E,0xFF2F,0xFF30, 0xFF31,0xFF32,0xFF33,0xFF34,0xFF35,0xFF36,0xFF37,0xFF38, 0xFF39,0xFF3A, /* Range 0x2361 - 0x237A, array index: 0x01B8 */ 0xFF41,0xFF42,0xFF43,0xFF44,0xFF45,0xFF46,0xFF47,0xFF48, 0xFF49,0xFF4A,0xFF4B,0xFF4C,0xFF4D,0xFF4E,0xFF4F,0xFF50, 0xFF51,0xFF52,0xFF53,0xFF54,0xFF55,0xFF56,0xFF57,0xFF58, 0xFF59,0xFF5A, /* Range 0x2421 - 0x2473, array index: 0x01D2 */ 0x3041,0x3042,0x3043,0x3044,0x3045,0x3046,0x3047,0x3048, 0x3049,0x304A,0x304B,0x304C,0x304D,0x304E,0x304F,0x3050, 0x3051,0x3052,0x3053,0x3054,0x3055,0x3056,0x3057,0x3058, 0x3059,0x305A,0x305B,0x305C,0x305D,0x305E,0x305F,0x3060, 0x3061,0x3062,0x3063,0x3064,0x3065,0x3066,0x3067,0x3068, 0x3069,0x306A,0x306B,0x306C,0x306D,0x306E,0x306F,0x3070, 0x3071,0x3072,0x3073,0x3074,0x3075,0x3076,0x3077,0x3078, 0x3079,0x307A,0x307B,0x307C,0x307D,0x307E,0x307F,0x3080, 0x3081,0x3082,0x3083,0x3084,0x3085,0x3086,0x3087,0x3088, 0x3089,0x308A,0x308B,0x308C,0x308D,0x308E,0x308F,0x3090, 0x3091,0x3092,0x3093, /* Range 0x2521 - 0x2576, array index: 0x0225 */ 0x30A1,0x30A2,0x30A3,0x30A4,0x30A5,0x30A6,0x30A7,0x30A8, 0x30A9,0x30AA,0x30AB,0x30AC,0x30AD,0x30AE,0x30AF,0x30B0, 0x30B1,0x30B2,0x30B3,0x30B4,0x30B5,0x30B6,0x30B7,0x30B8, 0x30B9,0x30BA,0x30BB,0x30BC,0x30BD,0x30BE,0x30BF,0x30C0, 0x30C1,0x30C2,0x30C3,0x30C4,0x30C5,0x30C6,0x30C7,0x30C8, 0x30C9,0x30CA,0x30CB,0x30CC,0x30CD,0x30CE,0x30CF,0x30D0, 0x30D1,0x30D2,0x30D3,0x30D4,0x30D5,0x30D6,0x30D7,0x30D8, 0x30D9,0x30DA,0x30DB,0x30DC,0x30DD,0x30DE,0x30DF,0x30E0, 0x30E1,0x30E2,0x30E3,0x30E4,0x30E5,0x30E6,0x30E7,0x30E8, 0x30E9,0x30EA,0x30EB,0x30EC,0x30ED,0x30EE,0x30EF,0x30F0, 0x30F1,0x30F2,0x30F3,0x30F4,0x30F5,0x30F6, /* Range 0x2621 - 0x2638, array index: 0x027B */ 0x0391,0x0392,0x0393,0x0394,0x0395,0x0396,0x0397,0x0398, 0x0399,0x039A,0x039B,0x039C,0x039D,0x039E,0x039F,0x03A0, 0x03A1,0x03A3,0x03A4,0x03A5,0x03A6,0x03A7,0x03A8,0x03A9, /* Range 0x2641 - 0x2658, array index: 0x0293 */ 0x03B1,0x03B2,0x03B3,0x03B4,0x03B5,0x03B6,0x03B7,0x03B8, 0x03B9,0x03BA,0x03BB,0x03BC,0x03BD,0x03BE,0x03BF,0x03C0, 0x03C1,0x03C3,0x03C4,0x03C5,0x03C6,0x03C7,0x03C8,0x03C9, /* Range 0x2721 - 0x2741, array index: 0x02AB */ 0x0410,0x0411,0x0412,0x0413,0x0414,0x0415,0x0401,0x0416, 0x0417,0x0418,0x0419,0x041A,0x041B,0x041C,0x041D,0x041E, 0x041F,0x0420,0x0421,0x0422,0x0423,0x0424,0x0425,0x0426, 0x0427,0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E, 0x042F, /* Range 0x2751 - 0x2771, array index: 0x02CC */ 0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0451,0x0436, 0x0437,0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E, 0x043F,0x0440,0x0441,0x0442,0x0443,0x0444,0x0445,0x0446, 0x0447,0x0448,0x0449,0x044A,0x044B,0x044C,0x044D,0x044E, 0x044F, /* Range 0x2821 - 0x2840, array index: 0x02ED */ 0x2500,0x2502,0x250C,0x2510,0x2518,0x2514,0x251C,0x252C, 0x2524,0x2534,0x253C,0x2501,0x2503,0x250F,0x2513,0x251B, 0x2517,0x2523,0x2533,0x252B,0x253B,0x254B,0x2520,0x252F, 0x2528,0x2537,0x253F,0x251D,0x2530,0x2525,0x2538,0x2542, /* Range 0x3021 - 0x307E, array index: 0x030D */ 0x4E9C,0x5516,0x5A03,0x963F,0x54C0,0x611B,0x6328,0x59F6, 0x9022,0x8475,0x831C,0x7A50,0x60AA,0x63E1,0x6E25,0x65ED, 0x8466,0x82A6,0x9BF5,0x6893,0x5727,0x65A1,0x6271,0x5B9B, 0x59D0,0x867B,0x98F4,0x7D62,0x7DBE,0x9B8E,0x6216,0x7C9F, 0x88B7,0x5B89,0x5EB5,0x6309,0x6697,0x6848,0x95C7,0x978D, 0x674F,0x4EE5,0x4F0A,0x4F4D,0x4F9D,0x5049,0x56F2,0x5937, 0x59D4,0x5A01,0x5C09,0x60DF,0x610F,0x6170,0x6613,0x6905, 0x70BA,0x754F,0x7570,0x79FB,0x7DAD,0x7DEF,0x80C3,0x840E, 0x8863,0x8B02,0x9055,0x907A,0x533B,0x4E95,0x4EA5,0x57DF, 0x80B2,0x90C1,0x78EF,0x4E00,0x58F1,0x6EA2,0x9038,0x7A32, 0x8328,0x828B,0x9C2F,0x5141,0x5370,0x54BD,0x54E1,0x56E0, 0x59FB,0x5F15,0x98F2,0x6DEB,0x80E4,0x852D, /* Range 0x3121 - 0x317E, array index: 0x036B */ 0x9662,0x9670,0x96A0,0x97FB,0x540B,0x53F3,0x5B87,0x70CF, 0x7FBD,0x8FC2,0x96E8,0x536F,0x9D5C,0x7ABA,0x4E11,0x7893, 0x81FC,0x6E26,0x5618,0x5504,0x6B1D,0x851A,0x9C3B,0x59E5, 0x53A9,0x6D66,0x74DC,0x958F,0x5642,0x4E91,0x904B,0x96F2, 0x834F,0x990C,0x53E1,0x55B6,0x5B30,0x5F71,0x6620,0x66F3, 0x6804,0x6C38,0x6CF3,0x6D29,0x745B,0x76C8,0x7A4E,0x9834, 0x82F1,0x885B,0x8A60,0x92ED,0x6DB2,0x75AB,0x76CA,0x99C5, 0x60A6,0x8B01,0x8D8A,0x95B2,0x698E,0x53AD,0x5186,0x5712, 0x5830,0x5944,0x5BB4,0x5EF6,0x6028,0x63A9,0x63F4,0x6CBF, 0x6F14,0x708E,0x7114,0x7159,0x71D5,0x733F,0x7E01,0x8276, 0x82D1,0x8597,0x9060,0x925B,0x9D1B,0x5869,0x65BC,0x6C5A, 0x7525,0x51F9,0x592E,0x5965,0x5F80,0x5FDC, /* Range 0x3221 - 0x327E, array index: 0x03C9 */ 0x62BC,0x65FA,0x6A2A,0x6B27,0x6BB4,0x738B,0x7FC1,0x8956, 0x9D2C,0x9D0E,0x9EC4,0x5CA1,0x6C96,0x837B,0x5104,0x5C4B, 0x61B6,0x81C6,0x6876,0x7261,0x4E59,0x4FFA,0x5378,0x6069, 0x6E29,0x7A4F,0x97F3,0x4E0B,0x5316,0x4EEE,0x4F55,0x4F3D, 0x4FA1,0x4F73,0x52A0,0x53EF,0x5609,0x590F,0x5AC1,0x5BB6, 0x5BE1,0x79D1,0x6687,0x679C,0x67B6,0x6B4C,0x6CB3,0x706B, 0x73C2,0x798D,0x79BE,0x7A3C,0x7B87,0x82B1,0x82DB,0x8304, 0x8377,0x83EF,0x83D3,0x8766,0x8AB2,0x5629,0x8CA8,0x8FE6, 0x904E,0x971E,0x868A,0x4FC4,0x5CE8,0x6211,0x7259,0x753B, 0x81E5,0x82BD,0x86FE,0x8CC0,0x96C5,0x9913,0x99D5,0x4ECB, 0x4F1A,0x89E3,0x56DE,0x584A,0x58CA,0x5EFB,0x5FEB,0x602A, 0x6094,0x6062,0x61D0,0x6212,0x62D0,0x6539, /* Range 0x3321 - 0x337E, array index: 0x0427 */ 0x9B41,0x6666,0x68B0,0x6D77,0x7070,0x754C,0x7686,0x7D75, 0x82A5,0x87F9,0x958B,0x968E,0x8C9D,0x51F1,0x52BE,0x5916, 0x54B3,0x5BB3,0x5D16,0x6168,0x6982,0x6DAF,0x788D,0x84CB, 0x8857,0x8A72,0x93A7,0x9AB8,0x6D6C,0x99A8,0x86D9,0x57A3, 0x67FF,0x86CE,0x920E,0x5283,0x5687,0x5404,0x5ED3,0x62E1, 0x64B9,0x683C,0x6838,0x6BBB,0x7372,0x78BA,0x7A6B,0x899A, 0x89D2,0x8D6B,0x8F03,0x90ED,0x95A3,0x9694,0x9769,0x5B66, 0x5CB3,0x697D,0x984D,0x984E,0x639B,0x7B20,0x6A2B,0x6A7F, 0x68B6,0x9C0D,0x6F5F,0x5272,0x559D,0x6070,0x62EC,0x6D3B, 0x6E07,0x6ED1,0x845B,0x8910,0x8F44,0x4E14,0x9C39,0x53F6, 0x691B,0x6A3A,0x9784,0x682A,0x515C,0x7AC3,0x84B2,0x91DC, 0x938C,0x565B,0x9D28,0x6822,0x8305,0x8431, /* Range 0x3421 - 0x347E, array index: 0x0485 */ 0x7CA5,0x5208,0x82C5,0x74E6,0x4E7E,0x4F83,0x51A0,0x5BD2, 0x520A,0x52D8,0x52E7,0x5DFB,0x559A,0x582A,0x59E6,0x5B8C, 0x5B98,0x5BDB,0x5E72,0x5E79,0x60A3,0x611F,0x6163,0x61BE, 0x63DB,0x6562,0x67D1,0x6853,0x68FA,0x6B3E,0x6B53,0x6C57, 0x6F22,0x6F97,0x6F45,0x74B0,0x7518,0x76E3,0x770B,0x7AFF, 0x7BA1,0x7C21,0x7DE9,0x7F36,0x7FF0,0x809D,0x8266,0x839E, 0x89B3,0x8ACC,0x8CAB,0x9084,0x9451,0x9593,0x9591,0x95A2, 0x9665,0x97D3,0x9928,0x8218,0x4E38,0x542B,0x5CB8,0x5DCC, 0x73A9,0x764C,0x773C,0x5CA9,0x7FEB,0x8D0B,0x96C1,0x9811, 0x9854,0x9858,0x4F01,0x4F0E,0x5371,0x559C,0x5668,0x57FA, 0x5947,0x5B09,0x5BC4,0x5C90,0x5E0C,0x5E7E,0x5FCC,0x63EE, 0x673A,0x65D7,0x65E2,0x671F,0x68CB,0x68C4, /* Range 0x3521 - 0x357E, array index: 0x04E3 */ 0x6A5F,0x5E30,0x6BC5,0x6C17,0x6C7D,0x757F,0x7948,0x5B63, 0x7A00,0x7D00,0x5FBD,0x898F,0x8A18,0x8CB4,0x8D77,0x8ECC, 0x8F1D,0x98E2,0x9A0E,0x9B3C,0x4E80,0x507D,0x5100,0x5993, 0x5B9C,0x622F,0x6280,0x64EC,0x6B3A,0x72A0,0x7591,0x7947, 0x7FA9,0x87FB,0x8ABC,0x8B70,0x63AC,0x83CA,0x97A0,0x5409, 0x5403,0x55AB,0x6854,0x6A58,0x8A70,0x7827,0x6775,0x9ECD, 0x5374,0x5BA2,0x811A,0x8650,0x9006,0x4E18,0x4E45,0x4EC7, 0x4F11,0x53CA,0x5438,0x5BAE,0x5F13,0x6025,0x6551,0x673D, 0x6C42,0x6C72,0x6CE3,0x7078,0x7403,0x7A76,0x7AAE,0x7B08, 0x7D1A,0x7CFE,0x7D66,0x65E7,0x725B,0x53BB,0x5C45,0x5DE8, 0x62D2,0x62E0,0x6319,0x6E20,0x865A,0x8A31,0x8DDD,0x92F8, 0x6F01,0x79A6,0x9B5A,0x4EA8,0x4EAB,0x4EAC, /* Range 0x3621 - 0x367E, array index: 0x0541 */ 0x4F9B,0x4FA0,0x50D1,0x5147,0x7AF6,0x5171,0x51F6,0x5354, 0x5321,0x537F,0x53EB,0x55AC,0x5883,0x5CE1,0x5F37,0x5F4A, 0x602F,0x6050,0x606D,0x631F,0x6559,0x6A4B,0x6CC1,0x72C2, 0x72ED,0x77EF,0x80F8,0x8105,0x8208,0x854E,0x90F7,0x93E1, 0x97FF,0x9957,0x9A5A,0x4EF0,0x51DD,0x5C2D,0x6681,0x696D, 0x5C40,0x66F2,0x6975,0x7389,0x6850,0x7C81,0x50C5,0x52E4, 0x5747,0x5DFE,0x9326,0x65A4,0x6B23,0x6B3D,0x7434,0x7981, 0x79BD,0x7B4B,0x7DCA,0x82B9,0x83CC,0x887F,0x895F,0x8B39, 0x8FD1,0x91D1,0x541F,0x9280,0x4E5D,0x5036,0x53E5,0x533A, 0x72D7,0x7396,0x77E9,0x82E6,0x8EAF,0x99C6,0x99C8,0x99D2, 0x5177,0x611A,0x865E,0x55B0,0x7A7A,0x5076,0x5BD3,0x9047, 0x9685,0x4E32,0x6ADB,0x91E7,0x5C51,0x5C48, /* Range 0x3721 - 0x377E, array index: 0x059F */ 0x6398,0x7A9F,0x6C93,0x9774,0x8F61,0x7AAA,0x718A,0x9688, 0x7C82,0x6817,0x7E70,0x6851,0x936C,0x52F2,0x541B,0x85AB, 0x8A13,0x7FA4,0x8ECD,0x90E1,0x5366,0x8888,0x7941,0x4FC2, 0x50BE,0x5211,0x5144,0x5553,0x572D,0x73EA,0x578B,0x5951, 0x5F62,0x5F84,0x6075,0x6176,0x6167,0x61A9,0x63B2,0x643A, 0x656C,0x666F,0x6842,0x6E13,0x7566,0x7A3D,0x7CFB,0x7D4C, 0x7D99,0x7E4B,0x7F6B,0x830E,0x834A,0x86CD,0x8A08,0x8A63, 0x8B66,0x8EFD,0x981A,0x9D8F,0x82B8,0x8FCE,0x9BE8,0x5287, 0x621F,0x6483,0x6FC0,0x9699,0x6841,0x5091,0x6B20,0x6C7A, 0x6F54,0x7A74,0x7D50,0x8840,0x8A23,0x6708,0x4EF6,0x5039, 0x5026,0x5065,0x517C,0x5238,0x5263,0x55A7,0x570F,0x5805, 0x5ACC,0x5EFA,0x61B2,0x61F8,0x62F3,0x6372, /* Range 0x3821 - 0x387E, array index: 0x05FD */ 0x691C,0x6A29,0x727D,0x72AC,0x732E,0x7814,0x786F,0x7D79, 0x770C,0x80A9,0x898B,0x8B19,0x8CE2,0x8ED2,0x9063,0x9375, 0x967A,0x9855,0x9A13,0x9E78,0x5143,0x539F,0x53B3,0x5E7B, 0x5F26,0x6E1B,0x6E90,0x7384,0x73FE,0x7D43,0x8237,0x8A00, 0x8AFA,0x9650,0x4E4E,0x500B,0x53E4,0x547C,0x56FA,0x59D1, 0x5B64,0x5DF1,0x5EAB,0x5F27,0x6238,0x6545,0x67AF,0x6E56, 0x72D0,0x7CCA,0x88B4,0x80A1,0x80E1,0x83F0,0x864E,0x8A87, 0x8DE8,0x9237,0x96C7,0x9867,0x9F13,0x4E94,0x4E92,0x4F0D, 0x5348,0x5449,0x543E,0x5A2F,0x5F8C,0x5FA1,0x609F,0x68A7, 0x6A8E,0x745A,0x7881,0x8A9E,0x8AA4,0x8B77,0x9190,0x4E5E, 0x9BC9,0x4EA4,0x4F7C,0x4FAF,0x5019,0x5016,0x5149,0x516C, 0x529F,0x52B9,0x52FE,0x539A,0x53E3,0x5411, /* Range 0x3921 - 0x397E, array index: 0x065B */ 0x540E,0x5589,0x5751,0x57A2,0x597D,0x5B54,0x5B5D,0x5B8F, 0x5DE5,0x5DE7,0x5DF7,0x5E78,0x5E83,0x5E9A,0x5EB7,0x5F18, 0x6052,0x614C,0x6297,0x62D8,0x63A7,0x653B,0x6602,0x6643, 0x66F4,0x676D,0x6821,0x6897,0x69CB,0x6C5F,0x6D2A,0x6D69, 0x6E2F,0x6E9D,0x7532,0x7687,0x786C,0x7A3F,0x7CE0,0x7D05, 0x7D18,0x7D5E,0x7DB1,0x8015,0x8003,0x80AF,0x80B1,0x8154, 0x818F,0x822A,0x8352,0x884C,0x8861,0x8B1B,0x8CA2,0x8CFC, 0x90CA,0x9175,0x9271,0x783F,0x92FC,0x95A4,0x964D,0x9805, 0x9999,0x9AD8,0x9D3B,0x525B,0x52AB,0x53F7,0x5408,0x58D5, 0x62F7,0x6FE0,0x8C6A,0x8F5F,0x9EB9,0x514B,0x523B,0x544A, 0x56FD,0x7A40,0x9177,0x9D60,0x9ED2,0x7344,0x6F09,0x8170, 0x7511,0x5FFD,0x60DA,0x9AA8,0x72DB,0x8FBC, /* Range 0x3A21 - 0x3A7E, array index: 0x06B9 */ 0x6B64,0x9803,0x4ECA,0x56F0,0x5764,0x58BE,0x5A5A,0x6068, 0x61C7,0x660F,0x6606,0x6839,0x68B1,0x6DF7,0x75D5,0x7D3A, 0x826E,0x9B42,0x4E9B,0x4F50,0x53C9,0x5506,0x5D6F,0x5DE6, 0x5DEE,0x67FB,0x6C99,0x7473,0x7802,0x8A50,0x9396,0x88DF, 0x5750,0x5EA7,0x632B,0x50B5,0x50AC,0x518D,0x6700,0x54C9, 0x585E,0x59BB,0x5BB0,0x5F69,0x624D,0x63A1,0x683D,0x6B73, 0x6E08,0x707D,0x91C7,0x7280,0x7815,0x7826,0x796D,0x658E, 0x7D30,0x83DC,0x88C1,0x8F09,0x969B,0x5264,0x5728,0x6750, 0x7F6A,0x8CA1,0x51B4,0x5742,0x962A,0x583A,0x698A,0x80B4, 0x54B2,0x5D0E,0x57FC,0x7895,0x9DFA,0x4F5C,0x524A,0x548B, 0x643E,0x6628,0x6714,0x67F5,0x7A84,0x7B56,0x7D22,0x932F, 0x685C,0x9BAD,0x7B39,0x5319,0x518A,0x5237, /* Range 0x3B21 - 0x3B7E, array index: 0x0717 */ 0x5BDF,0x62F6,0x64AE,0x64E6,0x672D,0x6BBA,0x85A9,0x96D1, 0x7690,0x9BD6,0x634C,0x9306,0x9BAB,0x76BF,0x6652,0x4E09, 0x5098,0x53C2,0x5C71,0x60E8,0x6492,0x6563,0x685F,0x71E6, 0x73CA,0x7523,0x7B97,0x7E82,0x8695,0x8B83,0x8CDB,0x9178, 0x9910,0x65AC,0x66AB,0x6B8B,0x4ED5,0x4ED4,0x4F3A,0x4F7F, 0x523A,0x53F8,0x53F2,0x55E3,0x56DB,0x58EB,0x59CB,0x59C9, 0x59FF,0x5B50,0x5C4D,0x5E02,0x5E2B,0x5FD7,0x601D,0x6307, 0x652F,0x5B5C,0x65AF,0x65BD,0x65E8,0x679D,0x6B62,0x6B7B, 0x6C0F,0x7345,0x7949,0x79C1,0x7CF8,0x7D19,0x7D2B,0x80A2, 0x8102,0x81F3,0x8996,0x8A5E,0x8A69,0x8A66,0x8A8C,0x8AEE, 0x8CC7,0x8CDC,0x96CC,0x98FC,0x6B6F,0x4E8B,0x4F3C,0x4F8D, 0x5150,0x5B57,0x5BFA,0x6148,0x6301,0x6642, /* Range 0x3C21 - 0x3C7E, array index: 0x0775 */ 0x6B21,0x6ECB,0x6CBB,0x723E,0x74BD,0x75D4,0x78C1,0x793A, 0x800C,0x8033,0x81EA,0x8494,0x8F9E,0x6C50,0x9E7F,0x5F0F, 0x8B58,0x9D2B,0x7AFA,0x8EF8,0x5B8D,0x96EB,0x4E03,0x53F1, 0x57F7,0x5931,0x5AC9,0x5BA4,0x6089,0x6E7F,0x6F06,0x75BE, 0x8CEA,0x5B9F,0x8500,0x7BE0,0x5072,0x67F4,0x829D,0x5C61, 0x854A,0x7E1E,0x820E,0x5199,0x5C04,0x6368,0x8D66,0x659C, 0x716E,0x793E,0x7D17,0x8005,0x8B1D,0x8ECA,0x906E,0x86C7, 0x90AA,0x501F,0x52FA,0x5C3A,0x6753,0x707C,0x7235,0x914C, 0x91C8,0x932B,0x82E5,0x5BC2,0x5F31,0x60F9,0x4E3B,0x53D6, 0x5B88,0x624B,0x6731,0x6B8A,0x72E9,0x73E0,0x7A2E,0x816B, 0x8DA3,0x9152,0x9996,0x5112,0x53D7,0x546A,0x5BFF,0x6388, 0x6A39,0x7DAC,0x9700,0x56DA,0x53CE,0x5468, /* Range 0x3D21 - 0x3D7E, array index: 0x07D3 */ 0x5B97,0x5C31,0x5DDE,0x4FEE,0x6101,0x62FE,0x6D32,0x79C0, 0x79CB,0x7D42,0x7E4D,0x7FD2,0x81ED,0x821F,0x8490,0x8846, 0x8972,0x8B90,0x8E74,0x8F2F,0x9031,0x914B,0x916C,0x96C6, 0x919C,0x4EC0,0x4F4F,0x5145,0x5341,0x5F93,0x620E,0x67D4, 0x6C41,0x6E0B,0x7363,0x7E26,0x91CD,0x9283,0x53D4,0x5919, 0x5BBF,0x6DD1,0x795D,0x7E2E,0x7C9B,0x587E,0x719F,0x51FA, 0x8853,0x8FF0,0x4FCA,0x5CFB,0x6625,0x77AC,0x7AE3,0x821C, 0x99FF,0x51C6,0x5FAA,0x65EC,0x696F,0x6B89,0x6DF3,0x6E96, 0x6F64,0x76FE,0x7D14,0x5DE1,0x9075,0x9187,0x9806,0x51E6, 0x521D,0x6240,0x6691,0x66D9,0x6E1A,0x5EB6,0x7DD2,0x7F72, 0x66F8,0x85AF,0x85F7,0x8AF8,0x52A9,0x53D9,0x5973,0x5E8F, 0x5F90,0x6055,0x92E4,0x9664,0x50B7,0x511F, /* Range 0x3E21 - 0x3E7E, array index: 0x0831 */ 0x52DD,0x5320,0x5347,0x53EC,0x54E8,0x5546,0x5531,0x5617, 0x5968,0x59BE,0x5A3C,0x5BB5,0x5C06,0x5C0F,0x5C11,0x5C1A, 0x5E84,0x5E8A,0x5EE0,0x5F70,0x627F,0x6284,0x62DB,0x638C, 0x6377,0x6607,0x660C,0x662D,0x6676,0x677E,0x68A2,0x6A1F, 0x6A35,0x6CBC,0x6D88,0x6E09,0x6E58,0x713C,0x7126,0x7167, 0x75C7,0x7701,0x785D,0x7901,0x7965,0x79F0,0x7AE0,0x7B11, 0x7CA7,0x7D39,0x8096,0x83D6,0x848B,0x8549,0x885D,0x88F3, 0x8A1F,0x8A3C,0x8A54,0x8A73,0x8C61,0x8CDE,0x91A4,0x9266, 0x937E,0x9418,0x969C,0x9798,0x4E0A,0x4E08,0x4E1E,0x4E57, 0x5197,0x5270,0x57CE,0x5834,0x58CC,0x5B22,0x5E38,0x60C5, 0x64FE,0x6761,0x6756,0x6D44,0x72B6,0x7573,0x7A63,0x84B8, 0x8B72,0x91B8,0x9320,0x5631,0x57F4,0x98FE, /* Range 0x3F21 - 0x3F7E, array index: 0x088F */ 0x62ED,0x690D,0x6B96,0x71ED,0x7E54,0x8077,0x8272,0x89E6, 0x98DF,0x8755,0x8FB1,0x5C3B,0x4F38,0x4FE1,0x4FB5,0x5507, 0x5A20,0x5BDD,0x5BE9,0x5FC3,0x614E,0x632F,0x65B0,0x664B, 0x68EE,0x699B,0x6D78,0x6DF1,0x7533,0x75B9,0x771F,0x795E, 0x79E6,0x7D33,0x81E3,0x82AF,0x85AA,0x89AA,0x8A3A,0x8EAB, 0x8F9B,0x9032,0x91DD,0x9707,0x4EBA,0x4EC1,0x5203,0x5875, 0x58EC,0x5C0B,0x751A,0x5C3D,0x814E,0x8A0A,0x8FC5,0x9663, 0x976D,0x7B25,0x8ACF,0x9808,0x9162,0x56F3,0x53A8,0x9017, 0x5439,0x5782,0x5E25,0x63A8,0x6C34,0x708A,0x7761,0x7C8B, 0x7FE0,0x8870,0x9042,0x9154,0x9310,0x9318,0x968F,0x745E, 0x9AC4,0x5D07,0x5D69,0x6570,0x67A2,0x8DA8,0x96DB,0x636E, 0x6749,0x6919,0x83C5,0x9817,0x96C0,0x88FE, /* Range 0x4021 - 0x407E, array index: 0x08ED */ 0x6F84,0x647A,0x5BF8,0x4E16,0x702C,0x755D,0x662F,0x51C4, 0x5236,0x52E2,0x59D3,0x5F81,0x6027,0x6210,0x653F,0x6574, 0x661F,0x6674,0x68F2,0x6816,0x6B63,0x6E05,0x7272,0x751F, 0x76DB,0x7CBE,0x8056,0x58F0,0x88FD,0x897F,0x8AA0,0x8A93, 0x8ACB,0x901D,0x9192,0x9752,0x9759,0x6589,0x7A0E,0x8106, 0x96BB,0x5E2D,0x60DC,0x621A,0x65A5,0x6614,0x6790,0x77F3, 0x7A4D,0x7C4D,0x7E3E,0x810A,0x8CAC,0x8D64,0x8DE1,0x8E5F, 0x78A9,0x5207,0x62D9,0x63A5,0x6442,0x6298,0x8A2D,0x7A83, 0x7BC0,0x8AAC,0x96EA,0x7D76,0x820C,0x8749,0x4ED9,0x5148, 0x5343,0x5360,0x5BA3,0x5C02,0x5C16,0x5DDD,0x6226,0x6247, 0x64B0,0x6813,0x6834,0x6CC9,0x6D45,0x6D17,0x67D3,0x6F5C, 0x714E,0x717D,0x65CB,0x7A7F,0x7BAD,0x7DDA, /* Range 0x4121 - 0x417E, array index: 0x094B */ 0x7E4A,0x7FA8,0x817A,0x821B,0x8239,0x85A6,0x8A6E,0x8CCE, 0x8DF5,0x9078,0x9077,0x92AD,0x9291,0x9583,0x9BAE,0x524D, 0x5584,0x6F38,0x7136,0x5168,0x7985,0x7E55,0x81B3,0x7CCE, 0x564C,0x5851,0x5CA8,0x63AA,0x66FE,0x66FD,0x695A,0x72D9, 0x758F,0x758E,0x790E,0x7956,0x79DF,0x7C97,0x7D20,0x7D44, 0x8607,0x8A34,0x963B,0x9061,0x9F20,0x50E7,0x5275,0x53CC, 0x53E2,0x5009,0x55AA,0x58EE,0x594F,0x723D,0x5B8B,0x5C64, 0x531D,0x60E3,0x60F3,0x635C,0x6383,0x633F,0x63BB,0x64CD, 0x65E9,0x66F9,0x5DE3,0x69CD,0x69FD,0x6F15,0x71E5,0x4E89, 0x75E9,0x76F8,0x7A93,0x7CDF,0x7DCF,0x7D9C,0x8061,0x8349, 0x8358,0x846C,0x84BC,0x85FB,0x88C5,0x8D70,0x9001,0x906D, 0x9397,0x971C,0x9A12,0x50CF,0x5897,0x618E, /* Range 0x4221 - 0x427E, array index: 0x09A9 */ 0x81D3,0x8535,0x8D08,0x9020,0x4FC3,0x5074,0x5247,0x5373, 0x606F,0x6349,0x675F,0x6E2C,0x8DB3,0x901F,0x4FD7,0x5C5E, 0x8CCA,0x65CF,0x7D9A,0x5352,0x8896,0x5176,0x63C3,0x5B58, 0x5B6B,0x5C0A,0x640D,0x6751,0x905C,0x4ED6,0x591A,0x592A, 0x6C70,0x8A51,0x553E,0x5815,0x59A5,0x60F0,0x6253,0x67C1, 0x8235,0x6955,0x9640,0x99C4,0x9A28,0x4F53,0x5806,0x5BFE, 0x8010,0x5CB1,0x5E2F,0x5F85,0x6020,0x614B,0x6234,0x66FF, 0x6CF0,0x6EDE,0x80CE,0x817F,0x82D4,0x888B,0x8CB8,0x9000, 0x902E,0x968A,0x9EDB,0x9BDB,0x4EE3,0x53F0,0x5927,0x7B2C, 0x918D,0x984C,0x9DF9,0x6EDD,0x7027,0x5353,0x5544,0x5B85, 0x6258,0x629E,0x62D3,0x6CA2,0x6FEF,0x7422,0x8A17,0x9438, 0x6FC1,0x8AFE,0x8338,0x51E7,0x86F8,0x53EA, /* Range 0x4321 - 0x437E, array index: 0x0A07 */ 0x53E9,0x4F46,0x9054,0x8FB0,0x596A,0x8131,0x5DFD,0x7AEA, 0x8FBF,0x68DA,0x8C37,0x72F8,0x9C48,0x6A3D,0x8AB0,0x4E39, 0x5358,0x5606,0x5766,0x62C5,0x63A2,0x65E6,0x6B4E,0x6DE1, 0x6E5B,0x70AD,0x77ED,0x7AEF,0x7BAA,0x7DBB,0x803D,0x80C6, 0x86CB,0x8A95,0x935B,0x56E3,0x58C7,0x5F3E,0x65AD,0x6696, 0x6A80,0x6BB5,0x7537,0x8AC7,0x5024,0x77E5,0x5730,0x5F1B, 0x6065,0x667A,0x6C60,0x75F4,0x7A1A,0x7F6E,0x81F4,0x8718, 0x9045,0x99B3,0x7BC9,0x755C,0x7AF9,0x7B51,0x84C4,0x9010, 0x79E9,0x7A92,0x8336,0x5AE1,0x7740,0x4E2D,0x4EF2,0x5B99, 0x5FE0,0x62BD,0x663C,0x67F1,0x6CE8,0x866B,0x8877,0x8A3B, 0x914E,0x92F3,0x99D0,0x6A17,0x7026,0x732A,0x82E7,0x8457, 0x8CAF,0x4E01,0x5146,0x51CB,0x558B,0x5BF5, /* Range 0x4421 - 0x447E, array index: 0x0A65 */ 0x5E16,0x5E33,0x5E81,0x5F14,0x5F35,0x5F6B,0x5FB4,0x61F2, 0x6311,0x66A2,0x671D,0x6F6E,0x7252,0x753A,0x773A,0x8074, 0x8139,0x8178,0x8776,0x8ABF,0x8ADC,0x8D85,0x8DF3,0x929A, 0x9577,0x9802,0x9CE5,0x52C5,0x6357,0x76F4,0x6715,0x6C88, 0x73CD,0x8CC3,0x93AE,0x9673,0x6D25,0x589C,0x690E,0x69CC, 0x8FFD,0x939A,0x75DB,0x901A,0x585A,0x6802,0x63B4,0x69FB, 0x4F43,0x6F2C,0x67D8,0x8FBB,0x8526,0x7DB4,0x9354,0x693F, 0x6F70,0x576A,0x58F7,0x5B2C,0x7D2C,0x722A,0x540A,0x91E3, 0x9DB4,0x4EAD,0x4F4E,0x505C,0x5075,0x5243,0x8C9E,0x5448, 0x5824,0x5B9A,0x5E1D,0x5E95,0x5EAD,0x5EF7,0x5F1F,0x608C, 0x62B5,0x633A,0x63D0,0x68AF,0x6C40,0x7887,0x798E,0x7A0B, 0x7DE0,0x8247,0x8A02,0x8AE6,0x8E44,0x9013, /* Range 0x4521 - 0x457E, array index: 0x0AC3 */ 0x90B8,0x912D,0x91D8,0x9F0E,0x6CE5,0x6458,0x64E2,0x6575, 0x6EF4,0x7684,0x7B1B,0x9069,0x93D1,0x6EBA,0x54F2,0x5FB9, 0x64A4,0x8F4D,0x8FED,0x9244,0x5178,0x586B,0x5929,0x5C55, 0x5E97,0x6DFB,0x7E8F,0x751C,0x8CBC,0x8EE2,0x985B,0x70B9, 0x4F1D,0x6BBF,0x6FB1,0x7530,0x96FB,0x514E,0x5410,0x5835, 0x5857,0x59AC,0x5C60,0x5F92,0x6597,0x675C,0x6E21,0x767B, 0x83DF,0x8CED,0x9014,0x90FD,0x934D,0x7825,0x783A,0x52AA, 0x5EA6,0x571F,0x5974,0x6012,0x5012,0x515A,0x51AC,0x51CD, 0x5200,0x5510,0x5854,0x5858,0x5957,0x5B95,0x5CF6,0x5D8B, 0x60BC,0x6295,0x642D,0x6771,0x6843,0x68BC,0x68DF,0x76D7, 0x6DD8,0x6E6F,0x6D9B,0x706F,0x71C8,0x5F53,0x75D8,0x7977, 0x7B49,0x7B54,0x7B52,0x7CD6,0x7D71,0x5230, /* Range 0x4621 - 0x467E, array index: 0x0B21 */ 0x8463,0x8569,0x85E4,0x8A0E,0x8B04,0x8C46,0x8E0F,0x9003, 0x900F,0x9419,0x9676,0x982D,0x9A30,0x95D8,0x50CD,0x52D5, 0x540C,0x5802,0x5C0E,0x61A7,0x649E,0x6D1E,0x77B3,0x7AE5, 0x80F4,0x8404,0x9053,0x9285,0x5CE0,0x9D07,0x533F,0x5F97, 0x5FB3,0x6D9C,0x7279,0x7763,0x79BF,0x7BE4,0x6BD2,0x72EC, 0x8AAD,0x6803,0x6A61,0x51F8,0x7A81,0x6934,0x5C4A,0x9CF6, 0x82EB,0x5BC5,0x9149,0x701E,0x5678,0x5C6F,0x60C7,0x6566, 0x6C8C,0x8C5A,0x9041,0x9813,0x5451,0x66C7,0x920D,0x5948, 0x90A3,0x5185,0x4E4D,0x51EA,0x8599,0x8B0E,0x7058,0x637A, 0x934B,0x6962,0x99B4,0x7E04,0x7577,0x5357,0x6960,0x8EDF, 0x96E3,0x6C5D,0x4E8C,0x5C3C,0x5F10,0x8FE9,0x5302,0x8CD1, 0x8089,0x8679,0x5EFF,0x65E5,0x4E73,0x5165, /* Range 0x4721 - 0x477E, array index: 0x0B7F */ 0x5982,0x5C3F,0x97EE,0x4EFB,0x598A,0x5FCD,0x8A8D,0x6FE1, 0x79B0,0x7962,0x5BE7,0x8471,0x732B,0x71B1,0x5E74,0x5FF5, 0x637B,0x649A,0x71C3,0x7C98,0x4E43,0x5EFC,0x4E4B,0x57DC, 0x56A2,0x60A9,0x6FC3,0x7D0D,0x80FD,0x8133,0x81BF,0x8FB2, 0x8997,0x86A4,0x5DF4,0x628A,0x64AD,0x8987,0x6777,0x6CE2, 0x6D3E,0x7436,0x7834,0x5A46,0x7F75,0x82AD,0x99AC,0x4FF3, 0x5EC3,0x62DD,0x6392,0x6557,0x676F,0x76C3,0x724C,0x80CC, 0x80BA,0x8F29,0x914D,0x500D,0x57F9,0x5A92,0x6885,0x6973, 0x7164,0x72FD,0x8CB7,0x58F2,0x8CE0,0x966A,0x9019,0x877F, 0x79E4,0x77E7,0x8429,0x4F2F,0x5265,0x535A,0x62CD,0x67CF, 0x6CCA,0x767D,0x7B94,0x7C95,0x8236,0x8584,0x8FEB,0x66DD, 0x6F20,0x7206,0x7E1B,0x83AB,0x99C1,0x9EA6, /* Range 0x4821 - 0x487E, array index: 0x0BDD */ 0x51FD,0x7BB1,0x7872,0x7BB8,0x8087,0x7B48,0x6AE8,0x5E61, 0x808C,0x7551,0x7560,0x516B,0x9262,0x6E8C,0x767A,0x9197, 0x9AEA,0x4F10,0x7F70,0x629C,0x7B4F,0x95A5,0x9CE9,0x567A, 0x5859,0x86E4,0x96BC,0x4F34,0x5224,0x534A,0x53CD,0x53DB, 0x5E06,0x642C,0x6591,0x677F,0x6C3E,0x6C4E,0x7248,0x72AF, 0x73ED,0x7554,0x7E41,0x822C,0x85E9,0x8CA9,0x7BC4,0x91C6, 0x7169,0x9812,0x98EF,0x633D,0x6669,0x756A,0x76E4,0x78D0, 0x8543,0x86EE,0x532A,0x5351,0x5426,0x5983,0x5E87,0x5F7C, 0x60B2,0x6249,0x6279,0x62AB,0x6590,0x6BD4,0x6CCC,0x75B2, 0x76AE,0x7891,0x79D8,0x7DCB,0x7F77,0x80A5,0x88AB,0x8AB9, 0x8CBB,0x907F,0x975E,0x98DB,0x6A0B,0x7C38,0x5099,0x5C3E, 0x5FAE,0x6787,0x6BD8,0x7435,0x7709,0x7F8E, /* Range 0x4921 - 0x497E, array index: 0x0C3B */ 0x9F3B,0x67CA,0x7A17,0x5339,0x758B,0x9AED,0x5F66,0x819D, 0x83F1,0x8098,0x5F3C,0x5FC5,0x7562,0x7B46,0x903C,0x6867, 0x59EB,0x5A9B,0x7D10,0x767E,0x8B2C,0x4FF5,0x5F6A,0x6A19, 0x6C37,0x6F02,0x74E2,0x7968,0x8868,0x8A55,0x8C79,0x5EDF, 0x63CF,0x75C5,0x79D2,0x82D7,0x9328,0x92F2,0x849C,0x86ED, 0x9C2D,0x54C1,0x5F6C,0x658C,0x6D5C,0x7015,0x8CA7,0x8CD3, 0x983B,0x654F,0x74F6,0x4E0D,0x4ED8,0x57E0,0x592B,0x5A66, 0x5BCC,0x51A8,0x5E03,0x5E9C,0x6016,0x6276,0x6577,0x65A7, 0x666E,0x6D6E,0x7236,0x7B26,0x8150,0x819A,0x8299,0x8B5C, 0x8CA0,0x8CE6,0x8D74,0x961C,0x9644,0x4FAE,0x64AB,0x6B66, 0x821E,0x8461,0x856A,0x90E8,0x5C01,0x6953,0x98A8,0x847A, 0x8557,0x4F0F,0x526F,0x5FA9,0x5E45,0x670D, /* Range 0x4A21 - 0x4A7E, array index: 0x0C99 */ 0x798F,0x8179,0x8907,0x8986,0x6DF5,0x5F17,0x6255,0x6CB8, 0x4ECF,0x7269,0x9B92,0x5206,0x543B,0x5674,0x58B3,0x61A4, 0x626E,0x711A,0x596E,0x7C89,0x7CDE,0x7D1B,0x96F0,0x6587, 0x805E,0x4E19,0x4F75,0x5175,0x5840,0x5E63,0x5E73,0x5F0A, 0x67C4,0x4E26,0x853D,0x9589,0x965B,0x7C73,0x9801,0x50FB, 0x58C1,0x7656,0x78A7,0x5225,0x77A5,0x8511,0x7B86,0x504F, 0x5909,0x7247,0x7BC7,0x7DE8,0x8FBA,0x8FD4,0x904D,0x4FBF, 0x52C9,0x5A29,0x5F01,0x97AD,0x4FDD,0x8217,0x92EA,0x5703, 0x6355,0x6B69,0x752B,0x88DC,0x8F14,0x7A42,0x52DF,0x5893, 0x6155,0x620A,0x66AE,0x6BCD,0x7C3F,0x83E9,0x5023,0x4FF8, 0x5305,0x5446,0x5831,0x5949,0x5B9D,0x5CF0,0x5CEF,0x5D29, 0x5E96,0x62B1,0x6367,0x653E,0x65B9,0x670B, /* Range 0x4B21 - 0x4B7E, array index: 0x0CF7 */ 0x6CD5,0x6CE1,0x70F9,0x7832,0x7E2B,0x80DE,0x82B3,0x840C, 0x84EC,0x8702,0x8912,0x8A2A,0x8C4A,0x90A6,0x92D2,0x98FD, 0x9CF3,0x9D6C,0x4E4F,0x4EA1,0x508D,0x5256,0x574A,0x59A8, 0x5E3D,0x5FD8,0x5FD9,0x623F,0x66B4,0x671B,0x67D0,0x68D2, 0x5192,0x7D21,0x80AA,0x81A8,0x8B00,0x8C8C,0x8CBF,0x927E, 0x9632,0x5420,0x982C,0x5317,0x50D5,0x535C,0x58A8,0x64B2, 0x6734,0x7267,0x7766,0x7A46,0x91E6,0x52C3,0x6CA1,0x6B86, 0x5800,0x5E4C,0x5954,0x672C,0x7FFB,0x51E1,0x76C6,0x6469, 0x78E8,0x9B54,0x9EBB,0x57CB,0x59B9,0x6627,0x679A,0x6BCE, 0x54E9,0x69D9,0x5E55,0x819C,0x6795,0x9BAA,0x67FE,0x9C52, 0x685D,0x4EA6,0x4FE3,0x53C8,0x62B9,0x672B,0x6CAB,0x8FC4, 0x4FAD,0x7E6D,0x9EBF,0x4E07,0x6162,0x6E80, /* Range 0x4C21 - 0x4C7E, array index: 0x0D55 */ 0x6F2B,0x8513,0x5473,0x672A,0x9B45,0x5DF3,0x7B95,0x5CAC, 0x5BC6,0x871C,0x6E4A,0x84D1,0x7A14,0x8108,0x5999,0x7C8D, 0x6C11,0x7720,0x52D9,0x5922,0x7121,0x725F,0x77DB,0x9727, 0x9D61,0x690B,0x5A7F,0x5A18,0x51A5,0x540D,0x547D,0x660E, 0x76DF,0x8FF7,0x9298,0x9CF4,0x59EA,0x725D,0x6EC5,0x514D, 0x68C9,0x7DBF,0x7DEC,0x9762,0x9EBA,0x6478,0x6A21,0x8302, 0x5984,0x5B5F,0x6BDB,0x731B,0x76F2,0x7DB2,0x8017,0x8499, 0x5132,0x6728,0x9ED9,0x76EE,0x6762,0x52FF,0x9905,0x5C24, 0x623B,0x7C7E,0x8CB0,0x554F,0x60B6,0x7D0B,0x9580,0x5301, 0x4E5F,0x51B6,0x591C,0x723A,0x8036,0x91CE,0x5F25,0x77E2, 0x5384,0x5F79,0x7D04,0x85AC,0x8A33,0x8E8D,0x9756,0x67F3, 0x85AE,0x9453,0x6109,0x6108,0x6CB9,0x7652, /* Range 0x4D21 - 0x4D7E, array index: 0x0DB3 */ 0x8AED,0x8F38,0x552F,0x4F51,0x512A,0x52C7,0x53CB,0x5BA5, 0x5E7D,0x60A0,0x6182,0x63D6,0x6709,0x67DA,0x6E67,0x6D8C, 0x7336,0x7337,0x7531,0x7950,0x88D5,0x8A98,0x904A,0x9091, 0x90F5,0x96C4,0x878D,0x5915,0x4E88,0x4F59,0x4E0E,0x8A89, 0x8F3F,0x9810,0x50AD,0x5E7C,0x5996,0x5BB9,0x5EB8,0x63DA, 0x63FA,0x64C1,0x66DC,0x694A,0x69D8,0x6D0B,0x6EB6,0x7194, 0x7528,0x7AAF,0x7F8A,0x8000,0x8449,0x84C9,0x8981,0x8B21, 0x8E0A,0x9065,0x967D,0x990A,0x617E,0x6291,0x6B32,0x6C83, 0x6D74,0x7FCC,0x7FFC,0x6DC0,0x7F85,0x87BA,0x88F8,0x6765, 0x83B1,0x983C,0x96F7,0x6D1B,0x7D61,0x843D,0x916A,0x4E71, 0x5375,0x5D50,0x6B04,0x6FEB,0x85CD,0x862D,0x89A7,0x5229, 0x540F,0x5C65,0x674E,0x68A8,0x7406,0x7483, /* Range 0x4E21 - 0x4E7E, array index: 0x0E11 */ 0x75E2,0x88CF,0x88E1,0x91CC,0x96E2,0x9678,0x5F8B,0x7387, 0x7ACB,0x844E,0x63A0,0x7565,0x5289,0x6D41,0x6E9C,0x7409, 0x7559,0x786B,0x7C92,0x9686,0x7ADC,0x9F8D,0x4FB6,0x616E, 0x65C5,0x865C,0x4E86,0x4EAE,0x50DA,0x4E21,0x51CC,0x5BEE, 0x6599,0x6881,0x6DBC,0x731F,0x7642,0x77AD,0x7A1C,0x7CE7, 0x826F,0x8AD2,0x907C,0x91CF,0x9675,0x9818,0x529B,0x7DD1, 0x502B,0x5398,0x6797,0x6DCB,0x71D0,0x7433,0x81E8,0x8F2A, 0x96A3,0x9C57,0x9E9F,0x7460,0x5841,0x6D99,0x7D2F,0x985E, 0x4EE4,0x4F36,0x4F8B,0x51B7,0x52B1,0x5DBA,0x601C,0x73B2, 0x793C,0x82D3,0x9234,0x96B7,0x96F6,0x970A,0x9E97,0x9F62, 0x66A6,0x6B74,0x5217,0x52A3,0x70C8,0x88C2,0x5EC9,0x604B, 0x6190,0x6F23,0x7149,0x7C3E,0x7DF4,0x806F, /* Range 0x4F21 - 0x4F53, array index: 0x0E6F */ 0x84EE,0x9023,0x932C,0x5442,0x9B6F,0x6AD3,0x7089,0x8CC2, 0x8DEF,0x9732,0x52B4,0x5A41,0x5ECA,0x5F04,0x6717,0x697C, 0x6994,0x6D6A,0x6F0F,0x7262,0x72FC,0x7BED,0x8001,0x807E, 0x874B,0x90CE,0x516D,0x9E93,0x7984,0x808B,0x9332,0x8AD6, 0x502D,0x548C,0x8A71,0x6B6A,0x8CC4,0x8107,0x60D1,0x67A0, 0x9DF2,0x4E99,0x4E98,0x9C10,0x8A6B,0x85C1,0x8568,0x6900, 0x6E7E,0x7897,0x8155, /* Range 0x5021 - 0x507E, array index: 0x0EA2 */ 0x5F0C,0x4E10,0x4E15,0x4E2A,0x4E31,0x4E36,0x4E3C,0x4E3F, 0x4E42,0x4E56,0x4E58,0x4E82,0x4E85,0x8C6B,0x4E8A,0x8212, 0x5F0D,0x4E8E,0x4E9E,0x4E9F,0x4EA0,0x4EA2,0x4EB0,0x4EB3, 0x4EB6,0x4ECE,0x4ECD,0x4EC4,0x4EC6,0x4EC2,0x4ED7,0x4EDE, 0x4EED,0x4EDF,0x4EF7,0x4F09,0x4F5A,0x4F30,0x4F5B,0x4F5D, 0x4F57,0x4F47,0x4F76,0x4F88,0x4F8F,0x4F98,0x4F7B,0x4F69, 0x4F70,0x4F91,0x4F6F,0x4F86,0x4F96,0x5118,0x4FD4,0x4FDF, 0x4FCE,0x4FD8,0x4FDB,0x4FD1,0x4FDA,0x4FD0,0x4FE4,0x4FE5, 0x501A,0x5028,0x5014,0x502A,0x5025,0x5005,0x4F1C,0x4FF6, 0x5021,0x5029,0x502C,0x4FFE,0x4FEF,0x5011,0x5006,0x5043, 0x5047,0x6703,0x5055,0x5050,0x5048,0x505A,0x5056,0x506C, 0x5078,0x5080,0x509A,0x5085,0x50B4,0x50B2, /* Range 0x5121 - 0x517E, array index: 0x0F00 */ 0x50C9,0x50CA,0x50B3,0x50C2,0x50D6,0x50DE,0x50E5,0x50ED, 0x50E3,0x50EE,0x50F9,0x50F5,0x5109,0x5101,0x5102,0x5116, 0x5115,0x5114,0x511A,0x5121,0x513A,0x5137,0x513C,0x513B, 0x513F,0x5140,0x5152,0x514C,0x5154,0x5162,0x7AF8,0x5169, 0x516A,0x516E,0x5180,0x5182,0x56D8,0x518C,0x5189,0x518F, 0x5191,0x5193,0x5195,0x5196,0x51A4,0x51A6,0x51A2,0x51A9, 0x51AA,0x51AB,0x51B3,0x51B1,0x51B2,0x51B0,0x51B5,0x51BD, 0x51C5,0x51C9,0x51DB,0x51E0,0x8655,0x51E9,0x51ED,0x51F0, 0x51F5,0x51FE,0x5204,0x520B,0x5214,0x520E,0x5227,0x522A, 0x522E,0x5233,0x5239,0x524F,0x5244,0x524B,0x524C,0x525E, 0x5254,0x526A,0x5274,0x5269,0x5273,0x527F,0x527D,0x528D, 0x5294,0x5292,0x5271,0x5288,0x5291,0x8FA8, /* Range 0x5221 - 0x527E, array index: 0x0F5E */ 0x8FA7,0x52AC,0x52AD,0x52BC,0x52B5,0x52C1,0x52CD,0x52D7, 0x52DE,0x52E3,0x52E6,0x98ED,0x52E0,0x52F3,0x52F5,0x52F8, 0x52F9,0x5306,0x5308,0x7538,0x530D,0x5310,0x530F,0x5315, 0x531A,0x5323,0x532F,0x5331,0x5333,0x5338,0x5340,0x5346, 0x5345,0x4E17,0x5349,0x534D,0x51D6,0x535E,0x5369,0x536E, 0x5918,0x537B,0x5377,0x5382,0x5396,0x53A0,0x53A6,0x53A5, 0x53AE,0x53B0,0x53B6,0x53C3,0x7C12,0x96D9,0x53DF,0x66FC, 0x71EE,0x53EE,0x53E8,0x53ED,0x53FA,0x5401,0x543D,0x5440, 0x542C,0x542D,0x543C,0x542E,0x5436,0x5429,0x541D,0x544E, 0x548F,0x5475,0x548E,0x545F,0x5471,0x5477,0x5470,0x5492, 0x547B,0x5480,0x5476,0x5484,0x5490,0x5486,0x54C7,0x54A2, 0x54B8,0x54A5,0x54AC,0x54C4,0x54C8,0x54A8, /* Range 0x5321 - 0x537E, array index: 0x0FBC */ 0x54AB,0x54C2,0x54A4,0x54BE,0x54BC,0x54D8,0x54E5,0x54E6, 0x550F,0x5514,0x54FD,0x54EE,0x54ED,0x54FA,0x54E2,0x5539, 0x5540,0x5563,0x554C,0x552E,0x555C,0x5545,0x5556,0x5557, 0x5538,0x5533,0x555D,0x5599,0x5580,0x54AF,0x558A,0x559F, 0x557B,0x557E,0x5598,0x559E,0x55AE,0x557C,0x5583,0x55A9, 0x5587,0x55A8,0x55DA,0x55C5,0x55DF,0x55C4,0x55DC,0x55E4, 0x55D4,0x5614,0x55F7,0x5616,0x55FE,0x55FD,0x561B,0x55F9, 0x564E,0x5650,0x71DF,0x5634,0x5636,0x5632,0x5638,0x566B, 0x5664,0x562F,0x566C,0x566A,0x5686,0x5680,0x568A,0x56A0, 0x5694,0x568F,0x56A5,0x56AE,0x56B6,0x56B4,0x56C2,0x56BC, 0x56C1,0x56C3,0x56C0,0x56C8,0x56CE,0x56D1,0x56D3,0x56D7, 0x56EE,0x56F9,0x5700,0x56FF,0x5704,0x5709, /* Range 0x5421 - 0x547E, array index: 0x101A */ 0x5708,0x570B,0x570D,0x5713,0x5718,0x5716,0x55C7,0x571C, 0x5726,0x5737,0x5738,0x574E,0x573B,0x5740,0x574F,0x5769, 0x57C0,0x5788,0x5761,0x577F,0x5789,0x5793,0x57A0,0x57B3, 0x57A4,0x57AA,0x57B0,0x57C3,0x57C6,0x57D4,0x57D2,0x57D3, 0x580A,0x57D6,0x57E3,0x580B,0x5819,0x581D,0x5872,0x5821, 0x5862,0x584B,0x5870,0x6BC0,0x5852,0x583D,0x5879,0x5885, 0x58B9,0x589F,0x58AB,0x58BA,0x58DE,0x58BB,0x58B8,0x58AE, 0x58C5,0x58D3,0x58D1,0x58D7,0x58D9,0x58D8,0x58E5,0x58DC, 0x58E4,0x58DF,0x58EF,0x58FA,0x58F9,0x58FB,0x58FC,0x58FD, 0x5902,0x590A,0x5910,0x591B,0x68A6,0x5925,0x592C,0x592D, 0x5932,0x5938,0x593E,0x7AD2,0x5955,0x5950,0x594E,0x595A, 0x5958,0x5962,0x5960,0x5967,0x596C,0x5969, /* Range 0x5521 - 0x557E, array index: 0x1078 */ 0x5978,0x5981,0x599D,0x4F5E,0x4FAB,0x59A3,0x59B2,0x59C6, 0x59E8,0x59DC,0x598D,0x59D9,0x59DA,0x5A25,0x5A1F,0x5A11, 0x5A1C,0x5A09,0x5A1A,0x5A40,0x5A6C,0x5A49,0x5A35,0x5A36, 0x5A62,0x5A6A,0x5A9A,0x5ABC,0x5ABE,0x5ACB,0x5AC2,0x5ABD, 0x5AE3,0x5AD7,0x5AE6,0x5AE9,0x5AD6,0x5AFA,0x5AFB,0x5B0C, 0x5B0B,0x5B16,0x5B32,0x5AD0,0x5B2A,0x5B36,0x5B3E,0x5B43, 0x5B45,0x5B40,0x5B51,0x5B55,0x5B5A,0x5B5B,0x5B65,0x5B69, 0x5B70,0x5B73,0x5B75,0x5B78,0x6588,0x5B7A,0x5B80,0x5B83, 0x5BA6,0x5BB8,0x5BC3,0x5BC7,0x5BC9,0x5BD4,0x5BD0,0x5BE4, 0x5BE6,0x5BE2,0x5BDE,0x5BE5,0x5BEB,0x5BF0,0x5BF6,0x5BF3, 0x5C05,0x5C07,0x5C08,0x5C0D,0x5C13,0x5C20,0x5C22,0x5C28, 0x5C38,0x5C39,0x5C41,0x5C46,0x5C4E,0x5C53, /* Range 0x5621 - 0x567E, array index: 0x10D6 */ 0x5C50,0x5C4F,0x5B71,0x5C6C,0x5C6E,0x4E62,0x5C76,0x5C79, 0x5C8C,0x5C91,0x5C94,0x599B,0x5CAB,0x5CBB,0x5CB6,0x5CBC, 0x5CB7,0x5CC5,0x5CBE,0x5CC7,0x5CD9,0x5CE9,0x5CFD,0x5CFA, 0x5CED,0x5D8C,0x5CEA,0x5D0B,0x5D15,0x5D17,0x5D5C,0x5D1F, 0x5D1B,0x5D11,0x5D14,0x5D22,0x5D1A,0x5D19,0x5D18,0x5D4C, 0x5D52,0x5D4E,0x5D4B,0x5D6C,0x5D73,0x5D76,0x5D87,0x5D84, 0x5D82,0x5DA2,0x5D9D,0x5DAC,0x5DAE,0x5DBD,0x5D90,0x5DB7, 0x5DBC,0x5DC9,0x5DCD,0x5DD3,0x5DD2,0x5DD6,0x5DDB,0x5DEB, 0x5DF2,0x5DF5,0x5E0B,0x5E1A,0x5E19,0x5E11,0x5E1B,0x5E36, 0x5E37,0x5E44,0x5E43,0x5E40,0x5E4E,0x5E57,0x5E54,0x5E5F, 0x5E62,0x5E64,0x5E47,0x5E75,0x5E76,0x5E7A,0x9EBC,0x5E7F, 0x5EA0,0x5EC1,0x5EC2,0x5EC8,0x5ED0,0x5ECF, /* Range 0x5721 - 0x577E, array index: 0x1134 */ 0x5ED6,0x5EE3,0x5EDD,0x5EDA,0x5EDB,0x5EE2,0x5EE1,0x5EE8, 0x5EE9,0x5EEC,0x5EF1,0x5EF3,0x5EF0,0x5EF4,0x5EF8,0x5EFE, 0x5F03,0x5F09,0x5F5D,0x5F5C,0x5F0B,0x5F11,0x5F16,0x5F29, 0x5F2D,0x5F38,0x5F41,0x5F48,0x5F4C,0x5F4E,0x5F2F,0x5F51, 0x5F56,0x5F57,0x5F59,0x5F61,0x5F6D,0x5F73,0x5F77,0x5F83, 0x5F82,0x5F7F,0x5F8A,0x5F88,0x5F91,0x5F87,0x5F9E,0x5F99, 0x5F98,0x5FA0,0x5FA8,0x5FAD,0x5FBC,0x5FD6,0x5FFB,0x5FE4, 0x5FF8,0x5FF1,0x5FDD,0x60B3,0x5FFF,0x6021,0x6060,0x6019, 0x6010,0x6029,0x600E,0x6031,0x601B,0x6015,0x602B,0x6026, 0x600F,0x603A,0x605A,0x6041,0x606A,0x6077,0x605F,0x604A, 0x6046,0x604D,0x6063,0x6043,0x6064,0x6042,0x606C,0x606B, 0x6059,0x6081,0x608D,0x60E7,0x6083,0x609A, /* Range 0x5821 - 0x587E, array index: 0x1192 */ 0x6084,0x609B,0x6096,0x6097,0x6092,0x60A7,0x608B,0x60E1, 0x60B8,0x60E0,0x60D3,0x60B4,0x5FF0,0x60BD,0x60C6,0x60B5, 0x60D8,0x614D,0x6115,0x6106,0x60F6,0x60F7,0x6100,0x60F4, 0x60FA,0x6103,0x6121,0x60FB,0x60F1,0x610D,0x610E,0x6147, 0x613E,0x6128,0x6127,0x614A,0x613F,0x613C,0x612C,0x6134, 0x613D,0x6142,0x6144,0x6173,0x6177,0x6158,0x6159,0x615A, 0x616B,0x6174,0x616F,0x6165,0x6171,0x615F,0x615D,0x6153, 0x6175,0x6199,0x6196,0x6187,0x61AC,0x6194,0x619A,0x618A, 0x6191,0x61AB,0x61AE,0x61CC,0x61CA,0x61C9,0x61F7,0x61C8, 0x61C3,0x61C6,0x61BA,0x61CB,0x7F79,0x61CD,0x61E6,0x61E3, 0x61F6,0x61FA,0x61F4,0x61FF,0x61FD,0x61FC,0x61FE,0x6200, 0x6208,0x6209,0x620D,0x620C,0x6214,0x621B, /* Range 0x5921 - 0x597E, array index: 0x11F0 */ 0x621E,0x6221,0x622A,0x622E,0x6230,0x6232,0x6233,0x6241, 0x624E,0x625E,0x6263,0x625B,0x6260,0x6268,0x627C,0x6282, 0x6289,0x627E,0x6292,0x6293,0x6296,0x62D4,0x6283,0x6294, 0x62D7,0x62D1,0x62BB,0x62CF,0x62FF,0x62C6,0x64D4,0x62C8, 0x62DC,0x62CC,0x62CA,0x62C2,0x62C7,0x629B,0x62C9,0x630C, 0x62EE,0x62F1,0x6327,0x6302,0x6308,0x62EF,0x62F5,0x6350, 0x633E,0x634D,0x641C,0x634F,0x6396,0x638E,0x6380,0x63AB, 0x6376,0x63A3,0x638F,0x6389,0x639F,0x63B5,0x636B,0x6369, 0x63BE,0x63E9,0x63C0,0x63C6,0x63E3,0x63C9,0x63D2,0x63F6, 0x63C4,0x6416,0x6434,0x6406,0x6413,0x6426,0x6436,0x651D, 0x6417,0x6428,0x640F,0x6467,0x646F,0x6476,0x644E,0x652A, 0x6495,0x6493,0x64A5,0x64A9,0x6488,0x64BC, /* Range 0x5A21 - 0x5A7E, array index: 0x124E */ 0x64DA,0x64D2,0x64C5,0x64C7,0x64BB,0x64D8,0x64C2,0x64F1, 0x64E7,0x8209,0x64E0,0x64E1,0x62AC,0x64E3,0x64EF,0x652C, 0x64F6,0x64F4,0x64F2,0x64FA,0x6500,0x64FD,0x6518,0x651C, 0x6505,0x6524,0x6523,0x652B,0x6534,0x6535,0x6537,0x6536, 0x6538,0x754B,0x6548,0x6556,0x6555,0x654D,0x6558,0x655E, 0x655D,0x6572,0x6578,0x6582,0x6583,0x8B8A,0x659B,0x659F, 0x65AB,0x65B7,0x65C3,0x65C6,0x65C1,0x65C4,0x65CC,0x65D2, 0x65DB,0x65D9,0x65E0,0x65E1,0x65F1,0x6772,0x660A,0x6603, 0x65FB,0x6773,0x6635,0x6636,0x6634,0x661C,0x664F,0x6644, 0x6649,0x6641,0x665E,0x665D,0x6664,0x6667,0x6668,0x665F, 0x6662,0x6670,0x6683,0x6688,0x668E,0x6689,0x6684,0x6698, 0x669D,0x66C1,0x66B9,0x66C9,0x66BE,0x66BC, /* Range 0x5B21 - 0x5B7E, array index: 0x12AC */ 0x66C4,0x66B8,0x66D6,0x66DA,0x66E0,0x663F,0x66E6,0x66E9, 0x66F0,0x66F5,0x66F7,0x670F,0x6716,0x671E,0x6726,0x6727, 0x9738,0x672E,0x673F,0x6736,0x6741,0x6738,0x6737,0x6746, 0x675E,0x6760,0x6759,0x6763,0x6764,0x6789,0x6770,0x67A9, 0x677C,0x676A,0x678C,0x678B,0x67A6,0x67A1,0x6785,0x67B7, 0x67EF,0x67B4,0x67EC,0x67B3,0x67E9,0x67B8,0x67E4,0x67DE, 0x67DD,0x67E2,0x67EE,0x67B9,0x67CE,0x67C6,0x67E7,0x6A9C, 0x681E,0x6846,0x6829,0x6840,0x684D,0x6832,0x684E,0x68B3, 0x682B,0x6859,0x6863,0x6877,0x687F,0x689F,0x688F,0x68AD, 0x6894,0x689D,0x689B,0x6883,0x6AAE,0x68B9,0x6874,0x68B5, 0x68A0,0x68BA,0x690F,0x688D,0x687E,0x6901,0x68CA,0x6908, 0x68D8,0x6922,0x6926,0x68E1,0x690C,0x68CD, /* Range 0x5C21 - 0x5C7E, array index: 0x130A */ 0x68D4,0x68E7,0x68D5,0x6936,0x6912,0x6904,0x68D7,0x68E3, 0x6925,0x68F9,0x68E0,0x68EF,0x6928,0x692A,0x691A,0x6923, 0x6921,0x68C6,0x6979,0x6977,0x695C,0x6978,0x696B,0x6954, 0x697E,0x696E,0x6939,0x6974,0x693D,0x6959,0x6930,0x6961, 0x695E,0x695D,0x6981,0x696A,0x69B2,0x69AE,0x69D0,0x69BF, 0x69C1,0x69D3,0x69BE,0x69CE,0x5BE8,0x69CA,0x69DD,0x69BB, 0x69C3,0x69A7,0x6A2E,0x6991,0x69A0,0x699C,0x6995,0x69B4, 0x69DE,0x69E8,0x6A02,0x6A1B,0x69FF,0x6B0A,0x69F9,0x69F2, 0x69E7,0x6A05,0x69B1,0x6A1E,0x69ED,0x6A14,0x69EB,0x6A0A, 0x6A12,0x6AC1,0x6A23,0x6A13,0x6A44,0x6A0C,0x6A72,0x6A36, 0x6A78,0x6A47,0x6A62,0x6A59,0x6A66,0x6A48,0x6A38,0x6A22, 0x6A90,0x6A8D,0x6AA0,0x6A84,0x6AA2,0x6AA3, /* Range 0x5D21 - 0x5D7E, array index: 0x1368 */ 0x6A97,0x8617,0x6ABB,0x6AC3,0x6AC2,0x6AB8,0x6AB3,0x6AAC, 0x6ADE,0x6AD1,0x6ADF,0x6AAA,0x6ADA,0x6AEA,0x6AFB,0x6B05, 0x8616,0x6AFA,0x6B12,0x6B16,0x9B31,0x6B1F,0x6B38,0x6B37, 0x76DC,0x6B39,0x98EE,0x6B47,0x6B43,0x6B49,0x6B50,0x6B59, 0x6B54,0x6B5B,0x6B5F,0x6B61,0x6B78,0x6B79,0x6B7F,0x6B80, 0x6B84,0x6B83,0x6B8D,0x6B98,0x6B95,0x6B9E,0x6BA4,0x6BAA, 0x6BAB,0x6BAF,0x6BB2,0x6BB1,0x6BB3,0x6BB7,0x6BBC,0x6BC6, 0x6BCB,0x6BD3,0x6BDF,0x6BEC,0x6BEB,0x6BF3,0x6BEF,0x9EBE, 0x6C08,0x6C13,0x6C14,0x6C1B,0x6C24,0x6C23,0x6C5E,0x6C55, 0x6C62,0x6C6A,0x6C82,0x6C8D,0x6C9A,0x6C81,0x6C9B,0x6C7E, 0x6C68,0x6C73,0x6C92,0x6C90,0x6CC4,0x6CF1,0x6CD3,0x6CBD, 0x6CD7,0x6CC5,0x6CDD,0x6CAE,0x6CB1,0x6CBE, /* Range 0x5E21 - 0x5E7E, array index: 0x13C6 */ 0x6CBA,0x6CDB,0x6CEF,0x6CD9,0x6CEA,0x6D1F,0x884D,0x6D36, 0x6D2B,0x6D3D,0x6D38,0x6D19,0x6D35,0x6D33,0x6D12,0x6D0C, 0x6D63,0x6D93,0x6D64,0x6D5A,0x6D79,0x6D59,0x6D8E,0x6D95, 0x6FE4,0x6D85,0x6DF9,0x6E15,0x6E0A,0x6DB5,0x6DC7,0x6DE6, 0x6DB8,0x6DC6,0x6DEC,0x6DDE,0x6DCC,0x6DE8,0x6DD2,0x6DC5, 0x6DFA,0x6DD9,0x6DE4,0x6DD5,0x6DEA,0x6DEE,0x6E2D,0x6E6E, 0x6E2E,0x6E19,0x6E72,0x6E5F,0x6E3E,0x6E23,0x6E6B,0x6E2B, 0x6E76,0x6E4D,0x6E1F,0x6E43,0x6E3A,0x6E4E,0x6E24,0x6EFF, 0x6E1D,0x6E38,0x6E82,0x6EAA,0x6E98,0x6EC9,0x6EB7,0x6ED3, 0x6EBD,0x6EAF,0x6EC4,0x6EB2,0x6ED4,0x6ED5,0x6E8F,0x6EA5, 0x6EC2,0x6E9F,0x6F41,0x6F11,0x704C,0x6EEC,0x6EF8,0x6EFE, 0x6F3F,0x6EF2,0x6F31,0x6EEF,0x6F32,0x6ECC, /* Range 0x5F21 - 0x5F7E, array index: 0x1424 */ 0x6F3E,0x6F13,0x6EF7,0x6F86,0x6F7A,0x6F78,0x6F81,0x6F80, 0x6F6F,0x6F5B,0x6FF3,0x6F6D,0x6F82,0x6F7C,0x6F58,0x6F8E, 0x6F91,0x6FC2,0x6F66,0x6FB3,0x6FA3,0x6FA1,0x6FA4,0x6FB9, 0x6FC6,0x6FAA,0x6FDF,0x6FD5,0x6FEC,0x6FD4,0x6FD8,0x6FF1, 0x6FEE,0x6FDB,0x7009,0x700B,0x6FFA,0x7011,0x7001,0x700F, 0x6FFE,0x701B,0x701A,0x6F74,0x701D,0x7018,0x701F,0x7030, 0x703E,0x7032,0x7051,0x7063,0x7099,0x7092,0x70AF,0x70F1, 0x70AC,0x70B8,0x70B3,0x70AE,0x70DF,0x70CB,0x70DD,0x70D9, 0x7109,0x70FD,0x711C,0x7119,0x7165,0x7155,0x7188,0x7166, 0x7162,0x714C,0x7156,0x716C,0x718F,0x71FB,0x7184,0x7195, 0x71A8,0x71AC,0x71D7,0x71B9,0x71BE,0x71D2,0x71C9,0x71D4, 0x71CE,0x71E0,0x71EC,0x71E7,0x71F5,0x71FC, /* Range 0x6021 - 0x607E, array index: 0x1482 */ 0x71F9,0x71FF,0x720D,0x7210,0x721B,0x7228,0x722D,0x722C, 0x7230,0x7232,0x723B,0x723C,0x723F,0x7240,0x7246,0x724B, 0x7258,0x7274,0x727E,0x7282,0x7281,0x7287,0x7292,0x7296, 0x72A2,0x72A7,0x72B9,0x72B2,0x72C3,0x72C6,0x72C4,0x72CE, 0x72D2,0x72E2,0x72E0,0x72E1,0x72F9,0x72F7,0x500F,0x7317, 0x730A,0x731C,0x7316,0x731D,0x7334,0x732F,0x7329,0x7325, 0x733E,0x734E,0x734F,0x9ED8,0x7357,0x736A,0x7368,0x7370, 0x7378,0x7375,0x737B,0x737A,0x73C8,0x73B3,0x73CE,0x73BB, 0x73C0,0x73E5,0x73EE,0x73DE,0x74A2,0x7405,0x746F,0x7425, 0x73F8,0x7432,0x743A,0x7455,0x743F,0x745F,0x7459,0x7441, 0x745C,0x7469,0x7470,0x7463,0x746A,0x7476,0x747E,0x748B, 0x749E,0x74A7,0x74CA,0x74CF,0x74D4,0x73F1, /* Range 0x6121 - 0x617E, array index: 0x14E0 */ 0x74E0,0x74E3,0x74E7,0x74E9,0x74EE,0x74F2,0x74F0,0x74F1, 0x74F8,0x74F7,0x7504,0x7503,0x7505,0x750C,0x750E,0x750D, 0x7515,0x7513,0x751E,0x7526,0x752C,0x753C,0x7544,0x754D, 0x754A,0x7549,0x755B,0x7546,0x755A,0x7569,0x7564,0x7567, 0x756B,0x756D,0x7578,0x7576,0x7586,0x7587,0x7574,0x758A, 0x7589,0x7582,0x7594,0x759A,0x759D,0x75A5,0x75A3,0x75C2, 0x75B3,0x75C3,0x75B5,0x75BD,0x75B8,0x75BC,0x75B1,0x75CD, 0x75CA,0x75D2,0x75D9,0x75E3,0x75DE,0x75FE,0x75FF,0x75FC, 0x7601,0x75F0,0x75FA,0x75F2,0x75F3,0x760B,0x760D,0x7609, 0x761F,0x7627,0x7620,0x7621,0x7622,0x7624,0x7634,0x7630, 0x763B,0x7647,0x7648,0x7646,0x765C,0x7658,0x7661,0x7662, 0x7668,0x7669,0x766A,0x7667,0x766C,0x7670, /* Range 0x6221 - 0x627E, array index: 0x153E */ 0x7672,0x7676,0x7678,0x767C,0x7680,0x7683,0x7688,0x768B, 0x768E,0x7696,0x7693,0x7699,0x769A,0x76B0,0x76B4,0x76B8, 0x76B9,0x76BA,0x76C2,0x76CD,0x76D6,0x76D2,0x76DE,0x76E1, 0x76E5,0x76E7,0x76EA,0x862F,0x76FB,0x7708,0x7707,0x7704, 0x7729,0x7724,0x771E,0x7725,0x7726,0x771B,0x7737,0x7738, 0x7747,0x775A,0x7768,0x776B,0x775B,0x7765,0x777F,0x777E, 0x7779,0x778E,0x778B,0x7791,0x77A0,0x779E,0x77B0,0x77B6, 0x77B9,0x77BF,0x77BC,0x77BD,0x77BB,0x77C7,0x77CD,0x77D7, 0x77DA,0x77DC,0x77E3,0x77EE,0x77FC,0x780C,0x7812,0x7926, 0x7820,0x792A,0x7845,0x788E,0x7874,0x7886,0x787C,0x789A, 0x788C,0x78A3,0x78B5,0x78AA,0x78AF,0x78D1,0x78C6,0x78CB, 0x78D4,0x78BE,0x78BC,0x78C5,0x78CA,0x78EC, /* Range 0x6321 - 0x637E, array index: 0x159C */ 0x78E7,0x78DA,0x78FD,0x78F4,0x7907,0x7912,0x7911,0x7919, 0x792C,0x792B,0x7940,0x7960,0x7957,0x795F,0x795A,0x7955, 0x7953,0x797A,0x797F,0x798A,0x799D,0x79A7,0x9F4B,0x79AA, 0x79AE,0x79B3,0x79B9,0x79BA,0x79C9,0x79D5,0x79E7,0x79EC, 0x79E1,0x79E3,0x7A08,0x7A0D,0x7A18,0x7A19,0x7A20,0x7A1F, 0x7980,0x7A31,0x7A3B,0x7A3E,0x7A37,0x7A43,0x7A57,0x7A49, 0x7A61,0x7A62,0x7A69,0x9F9D,0x7A70,0x7A79,0x7A7D,0x7A88, 0x7A97,0x7A95,0x7A98,0x7A96,0x7AA9,0x7AC8,0x7AB0,0x7AB6, 0x7AC5,0x7AC4,0x7ABF,0x9083,0x7AC7,0x7ACA,0x7ACD,0x7ACF, 0x7AD5,0x7AD3,0x7AD9,0x7ADA,0x7ADD,0x7AE1,0x7AE2,0x7AE6, 0x7AED,0x7AF0,0x7B02,0x7B0F,0x7B0A,0x7B06,0x7B33,0x7B18, 0x7B19,0x7B1E,0x7B35,0x7B28,0x7B36,0x7B50, /* Range 0x6421 - 0x647E, array index: 0x15FA */ 0x7B7A,0x7B04,0x7B4D,0x7B0B,0x7B4C,0x7B45,0x7B75,0x7B65, 0x7B74,0x7B67,0x7B70,0x7B71,0x7B6C,0x7B6E,0x7B9D,0x7B98, 0x7B9F,0x7B8D,0x7B9C,0x7B9A,0x7B8B,0x7B92,0x7B8F,0x7B5D, 0x7B99,0x7BCB,0x7BC1,0x7BCC,0x7BCF,0x7BB4,0x7BC6,0x7BDD, 0x7BE9,0x7C11,0x7C14,0x7BE6,0x7BE5,0x7C60,0x7C00,0x7C07, 0x7C13,0x7BF3,0x7BF7,0x7C17,0x7C0D,0x7BF6,0x7C23,0x7C27, 0x7C2A,0x7C1F,0x7C37,0x7C2B,0x7C3D,0x7C4C,0x7C43,0x7C54, 0x7C4F,0x7C40,0x7C50,0x7C58,0x7C5F,0x7C64,0x7C56,0x7C65, 0x7C6C,0x7C75,0x7C83,0x7C90,0x7CA4,0x7CAD,0x7CA2,0x7CAB, 0x7CA1,0x7CA8,0x7CB3,0x7CB2,0x7CB1,0x7CAE,0x7CB9,0x7CBD, 0x7CC0,0x7CC5,0x7CC2,0x7CD8,0x7CD2,0x7CDC,0x7CE2,0x9B3B, 0x7CEF,0x7CF2,0x7CF4,0x7CF6,0x7CFA,0x7D06, /* Range 0x6521 - 0x657E, array index: 0x1658 */ 0x7D02,0x7D1C,0x7D15,0x7D0A,0x7D45,0x7D4B,0x7D2E,0x7D32, 0x7D3F,0x7D35,0x7D46,0x7D73,0x7D56,0x7D4E,0x7D72,0x7D68, 0x7D6E,0x7D4F,0x7D63,0x7D93,0x7D89,0x7D5B,0x7D8F,0x7D7D, 0x7D9B,0x7DBA,0x7DAE,0x7DA3,0x7DB5,0x7DC7,0x7DBD,0x7DAB, 0x7E3D,0x7DA2,0x7DAF,0x7DDC,0x7DB8,0x7D9F,0x7DB0,0x7DD8, 0x7DDD,0x7DE4,0x7DDE,0x7DFB,0x7DF2,0x7DE1,0x7E05,0x7E0A, 0x7E23,0x7E21,0x7E12,0x7E31,0x7E1F,0x7E09,0x7E0B,0x7E22, 0x7E46,0x7E66,0x7E3B,0x7E35,0x7E39,0x7E43,0x7E37,0x7E32, 0x7E3A,0x7E67,0x7E5D,0x7E56,0x7E5E,0x7E59,0x7E5A,0x7E79, 0x7E6A,0x7E69,0x7E7C,0x7E7B,0x7E83,0x7DD5,0x7E7D,0x8FAE, 0x7E7F,0x7E88,0x7E89,0x7E8C,0x7E92,0x7E90,0x7E93,0x7E94, 0x7E96,0x7E8E,0x7E9B,0x7E9C,0x7F38,0x7F3A, /* Range 0x6621 - 0x667E, array index: 0x16B6 */ 0x7F45,0x7F4C,0x7F4D,0x7F4E,0x7F50,0x7F51,0x7F55,0x7F54, 0x7F58,0x7F5F,0x7F60,0x7F68,0x7F69,0x7F67,0x7F78,0x7F82, 0x7F86,0x7F83,0x7F88,0x7F87,0x7F8C,0x7F94,0x7F9E,0x7F9D, 0x7F9A,0x7FA3,0x7FAF,0x7FB2,0x7FB9,0x7FAE,0x7FB6,0x7FB8, 0x8B71,0x7FC5,0x7FC6,0x7FCA,0x7FD5,0x7FD4,0x7FE1,0x7FE6, 0x7FE9,0x7FF3,0x7FF9,0x98DC,0x8006,0x8004,0x800B,0x8012, 0x8018,0x8019,0x801C,0x8021,0x8028,0x803F,0x803B,0x804A, 0x8046,0x8052,0x8058,0x805A,0x805F,0x8062,0x8068,0x8073, 0x8072,0x8070,0x8076,0x8079,0x807D,0x807F,0x8084,0x8086, 0x8085,0x809B,0x8093,0x809A,0x80AD,0x5190,0x80AC,0x80DB, 0x80E5,0x80D9,0x80DD,0x80C4,0x80DA,0x80D6,0x8109,0x80EF, 0x80F1,0x811B,0x8129,0x8123,0x812F,0x814B, /* Range 0x6721 - 0x677E, array index: 0x1714 */ 0x968B,0x8146,0x813E,0x8153,0x8151,0x80FC,0x8171,0x816E, 0x8165,0x8166,0x8174,0x8183,0x8188,0x818A,0x8180,0x8182, 0x81A0,0x8195,0x81A4,0x81A3,0x815F,0x8193,0x81A9,0x81B0, 0x81B5,0x81BE,0x81B8,0x81BD,0x81C0,0x81C2,0x81BA,0x81C9, 0x81CD,0x81D1,0x81D9,0x81D8,0x81C8,0x81DA,0x81DF,0x81E0, 0x81E7,0x81FA,0x81FB,0x81FE,0x8201,0x8202,0x8205,0x8207, 0x820A,0x820D,0x8210,0x8216,0x8229,0x822B,0x8238,0x8233, 0x8240,0x8259,0x8258,0x825D,0x825A,0x825F,0x8264,0x8262, 0x8268,0x826A,0x826B,0x822E,0x8271,0x8277,0x8278,0x827E, 0x828D,0x8292,0x82AB,0x829F,0x82BB,0x82AC,0x82E1,0x82E3, 0x82DF,0x82D2,0x82F4,0x82F3,0x82FA,0x8393,0x8303,0x82FB, 0x82F9,0x82DE,0x8306,0x82DC,0x8309,0x82D9, /* Range 0x6821 - 0x687E, array index: 0x1772 */ 0x8335,0x8334,0x8316,0x8332,0x8331,0x8340,0x8339,0x8350, 0x8345,0x832F,0x832B,0x8317,0x8318,0x8385,0x839A,0x83AA, 0x839F,0x83A2,0x8396,0x8323,0x838E,0x8387,0x838A,0x837C, 0x83B5,0x8373,0x8375,0x83A0,0x8389,0x83A8,0x83F4,0x8413, 0x83EB,0x83CE,0x83FD,0x8403,0x83D8,0x840B,0x83C1,0x83F7, 0x8407,0x83E0,0x83F2,0x840D,0x8422,0x8420,0x83BD,0x8438, 0x8506,0x83FB,0x846D,0x842A,0x843C,0x855A,0x8484,0x8477, 0x846B,0x84AD,0x846E,0x8482,0x8469,0x8446,0x842C,0x846F, 0x8479,0x8435,0x84CA,0x8462,0x84B9,0x84BF,0x849F,0x84D9, 0x84CD,0x84BB,0x84DA,0x84D0,0x84C1,0x84C6,0x84D6,0x84A1, 0x8521,0x84FF,0x84F4,0x8517,0x8518,0x852C,0x851F,0x8515, 0x8514,0x84FC,0x8540,0x8563,0x8558,0x8548, /* Range 0x6921 - 0x697E, array index: 0x17D0 */ 0x8541,0x8602,0x854B,0x8555,0x8580,0x85A4,0x8588,0x8591, 0x858A,0x85A8,0x856D,0x8594,0x859B,0x85EA,0x8587,0x859C, 0x8577,0x857E,0x8590,0x85C9,0x85BA,0x85CF,0x85B9,0x85D0, 0x85D5,0x85DD,0x85E5,0x85DC,0x85F9,0x860A,0x8613,0x860B, 0x85FE,0x85FA,0x8606,0x8622,0x861A,0x8630,0x863F,0x864D, 0x4E55,0x8654,0x865F,0x8667,0x8671,0x8693,0x86A3,0x86A9, 0x86AA,0x868B,0x868C,0x86B6,0x86AF,0x86C4,0x86C6,0x86B0, 0x86C9,0x8823,0x86AB,0x86D4,0x86DE,0x86E9,0x86EC,0x86DF, 0x86DB,0x86EF,0x8712,0x8706,0x8708,0x8700,0x8703,0x86FB, 0x8711,0x8709,0x870D,0x86F9,0x870A,0x8734,0x873F,0x8737, 0x873B,0x8725,0x8729,0x871A,0x8760,0x875F,0x8778,0x874C, 0x874E,0x8774,0x8757,0x8768,0x876E,0x8759, /* Range 0x6A21 - 0x6A7E, array index: 0x182E */ 0x8753,0x8763,0x876A,0x8805,0x87A2,0x879F,0x8782,0x87AF, 0x87CB,0x87BD,0x87C0,0x87D0,0x96D6,0x87AB,0x87C4,0x87B3, 0x87C7,0x87C6,0x87BB,0x87EF,0x87F2,0x87E0,0x880F,0x880D, 0x87FE,0x87F6,0x87F7,0x880E,0x87D2,0x8811,0x8816,0x8815, 0x8822,0x8821,0x8831,0x8836,0x8839,0x8827,0x883B,0x8844, 0x8842,0x8852,0x8859,0x885E,0x8862,0x886B,0x8881,0x887E, 0x889E,0x8875,0x887D,0x88B5,0x8872,0x8882,0x8897,0x8892, 0x88AE,0x8899,0x88A2,0x888D,0x88A4,0x88B0,0x88BF,0x88B1, 0x88C3,0x88C4,0x88D4,0x88D8,0x88D9,0x88DD,0x88F9,0x8902, 0x88FC,0x88F4,0x88E8,0x88F2,0x8904,0x890C,0x890A,0x8913, 0x8943,0x891E,0x8925,0x892A,0x892B,0x8941,0x8944,0x893B, 0x8936,0x8938,0x894C,0x891D,0x8960,0x895E, /* Range 0x6B21 - 0x6B7E, array index: 0x188C */ 0x8966,0x8964,0x896D,0x896A,0x896F,0x8974,0x8977,0x897E, 0x8983,0x8988,0x898A,0x8993,0x8998,0x89A1,0x89A9,0x89A6, 0x89AC,0x89AF,0x89B2,0x89BA,0x89BD,0x89BF,0x89C0,0x89DA, 0x89DC,0x89DD,0x89E7,0x89F4,0x89F8,0x8A03,0x8A16,0x8A10, 0x8A0C,0x8A1B,0x8A1D,0x8A25,0x8A36,0x8A41,0x8A5B,0x8A52, 0x8A46,0x8A48,0x8A7C,0x8A6D,0x8A6C,0x8A62,0x8A85,0x8A82, 0x8A84,0x8AA8,0x8AA1,0x8A91,0x8AA5,0x8AA6,0x8A9A,0x8AA3, 0x8AC4,0x8ACD,0x8AC2,0x8ADA,0x8AEB,0x8AF3,0x8AE7,0x8AE4, 0x8AF1,0x8B14,0x8AE0,0x8AE2,0x8AF7,0x8ADE,0x8ADB,0x8B0C, 0x8B07,0x8B1A,0x8AE1,0x8B16,0x8B10,0x8B17,0x8B20,0x8B33, 0x97AB,0x8B26,0x8B2B,0x8B3E,0x8B28,0x8B41,0x8B4C,0x8B4F, 0x8B4E,0x8B49,0x8B56,0x8B5B,0x8B5A,0x8B6B, /* Range 0x6C21 - 0x6C7E, array index: 0x18EA */ 0x8B5F,0x8B6C,0x8B6F,0x8B74,0x8B7D,0x8B80,0x8B8C,0x8B8E, 0x8B92,0x8B93,0x8B96,0x8B99,0x8B9A,0x8C3A,0x8C41,0x8C3F, 0x8C48,0x8C4C,0x8C4E,0x8C50,0x8C55,0x8C62,0x8C6C,0x8C78, 0x8C7A,0x8C82,0x8C89,0x8C85,0x8C8A,0x8C8D,0x8C8E,0x8C94, 0x8C7C,0x8C98,0x621D,0x8CAD,0x8CAA,0x8CBD,0x8CB2,0x8CB3, 0x8CAE,0x8CB6,0x8CC8,0x8CC1,0x8CE4,0x8CE3,0x8CDA,0x8CFD, 0x8CFA,0x8CFB,0x8D04,0x8D05,0x8D0A,0x8D07,0x8D0F,0x8D0D, 0x8D10,0x9F4E,0x8D13,0x8CCD,0x8D14,0x8D16,0x8D67,0x8D6D, 0x8D71,0x8D73,0x8D81,0x8D99,0x8DC2,0x8DBE,0x8DBA,0x8DCF, 0x8DDA,0x8DD6,0x8DCC,0x8DDB,0x8DCB,0x8DEA,0x8DEB,0x8DDF, 0x8DE3,0x8DFC,0x8E08,0x8E09,0x8DFF,0x8E1D,0x8E1E,0x8E10, 0x8E1F,0x8E42,0x8E35,0x8E30,0x8E34,0x8E4A, /* Range 0x6D21 - 0x6D7E, array index: 0x1948 */ 0x8E47,0x8E49,0x8E4C,0x8E50,0x8E48,0x8E59,0x8E64,0x8E60, 0x8E2A,0x8E63,0x8E55,0x8E76,0x8E72,0x8E7C,0x8E81,0x8E87, 0x8E85,0x8E84,0x8E8B,0x8E8A,0x8E93,0x8E91,0x8E94,0x8E99, 0x8EAA,0x8EA1,0x8EAC,0x8EB0,0x8EC6,0x8EB1,0x8EBE,0x8EC5, 0x8EC8,0x8ECB,0x8EDB,0x8EE3,0x8EFC,0x8EFB,0x8EEB,0x8EFE, 0x8F0A,0x8F05,0x8F15,0x8F12,0x8F19,0x8F13,0x8F1C,0x8F1F, 0x8F1B,0x8F0C,0x8F26,0x8F33,0x8F3B,0x8F39,0x8F45,0x8F42, 0x8F3E,0x8F4C,0x8F49,0x8F46,0x8F4E,0x8F57,0x8F5C,0x8F62, 0x8F63,0x8F64,0x8F9C,0x8F9F,0x8FA3,0x8FAD,0x8FAF,0x8FB7, 0x8FDA,0x8FE5,0x8FE2,0x8FEA,0x8FEF,0x9087,0x8FF4,0x9005, 0x8FF9,0x8FFA,0x9011,0x9015,0x9021,0x900D,0x901E,0x9016, 0x900B,0x9027,0x9036,0x9035,0x9039,0x8FF8, /* Range 0x6E21 - 0x6E7E, array index: 0x19A6 */ 0x904F,0x9050,0x9051,0x9052,0x900E,0x9049,0x903E,0x9056, 0x9058,0x905E,0x9068,0x906F,0x9076,0x96A8,0x9072,0x9082, 0x907D,0x9081,0x9080,0x908A,0x9089,0x908F,0x90A8,0x90AF, 0x90B1,0x90B5,0x90E2,0x90E4,0x6248,0x90DB,0x9102,0x9112, 0x9119,0x9132,0x9130,0x914A,0x9156,0x9158,0x9163,0x9165, 0x9169,0x9173,0x9172,0x918B,0x9189,0x9182,0x91A2,0x91AB, 0x91AF,0x91AA,0x91B5,0x91B4,0x91BA,0x91C0,0x91C1,0x91C9, 0x91CB,0x91D0,0x91D6,0x91DF,0x91E1,0x91DB,0x91FC,0x91F5, 0x91F6,0x921E,0x91FF,0x9214,0x922C,0x9215,0x9211,0x925E, 0x9257,0x9245,0x9249,0x9264,0x9248,0x9295,0x923F,0x924B, 0x9250,0x929C,0x9296,0x9293,0x929B,0x925A,0x92CF,0x92B9, 0x92B7,0x92E9,0x930F,0x92FA,0x9344,0x932E, /* Range 0x6F21 - 0x6F7E, array index: 0x1A04 */ 0x9319,0x9322,0x931A,0x9323,0x933A,0x9335,0x933B,0x935C, 0x9360,0x937C,0x936E,0x9356,0x93B0,0x93AC,0x93AD,0x9394, 0x93B9,0x93D6,0x93D7,0x93E8,0x93E5,0x93D8,0x93C3,0x93DD, 0x93D0,0x93C8,0x93E4,0x941A,0x9414,0x9413,0x9403,0x9407, 0x9410,0x9436,0x942B,0x9435,0x9421,0x943A,0x9441,0x9452, 0x9444,0x945B,0x9460,0x9462,0x945E,0x946A,0x9229,0x9470, 0x9475,0x9477,0x947D,0x945A,0x947C,0x947E,0x9481,0x947F, 0x9582,0x9587,0x958A,0x9594,0x9596,0x9598,0x9599,0x95A0, 0x95A8,0x95A7,0x95AD,0x95BC,0x95BB,0x95B9,0x95BE,0x95CA, 0x6FF6,0x95C3,0x95CD,0x95CC,0x95D5,0x95D4,0x95D6,0x95DC, 0x95E1,0x95E5,0x95E2,0x9621,0x9628,0x962E,0x962F,0x9642, 0x964C,0x964F,0x964B,0x9677,0x965C,0x965E, /* Range 0x7021 - 0x707E, array index: 0x1A62 */ 0x965D,0x965F,0x9666,0x9672,0x966C,0x968D,0x9698,0x9695, 0x9697,0x96AA,0x96A7,0x96B1,0x96B2,0x96B0,0x96B4,0x96B6, 0x96B8,0x96B9,0x96CE,0x96CB,0x96C9,0x96CD,0x894D,0x96DC, 0x970D,0x96D5,0x96F9,0x9704,0x9706,0x9708,0x9713,0x970E, 0x9711,0x970F,0x9716,0x9719,0x9724,0x972A,0x9730,0x9739, 0x973D,0x973E,0x9744,0x9746,0x9748,0x9742,0x9749,0x975C, 0x9760,0x9764,0x9766,0x9768,0x52D2,0x976B,0x9771,0x9779, 0x9785,0x977C,0x9781,0x977A,0x9786,0x978B,0x978F,0x9790, 0x979C,0x97A8,0x97A6,0x97A3,0x97B3,0x97B4,0x97C3,0x97C6, 0x97C8,0x97CB,0x97DC,0x97ED,0x9F4F,0x97F2,0x7ADF,0x97F6, 0x97F5,0x980F,0x980C,0x9838,0x9824,0x9821,0x9837,0x983D, 0x9846,0x984F,0x984B,0x986B,0x986F,0x9870, /* Range 0x7121 - 0x717E, array index: 0x1AC0 */ 0x9871,0x9874,0x9873,0x98AA,0x98AF,0x98B1,0x98B6,0x98C4, 0x98C3,0x98C6,0x98E9,0x98EB,0x9903,0x9909,0x9912,0x9914, 0x9918,0x9921,0x991D,0x991E,0x9924,0x9920,0x992C,0x992E, 0x993D,0x993E,0x9942,0x9949,0x9945,0x9950,0x994B,0x9951, 0x9952,0x994C,0x9955,0x9997,0x9998,0x99A5,0x99AD,0x99AE, 0x99BC,0x99DF,0x99DB,0x99DD,0x99D8,0x99D1,0x99ED,0x99EE, 0x99F1,0x99F2,0x99FB,0x99F8,0x9A01,0x9A0F,0x9A05,0x99E2, 0x9A19,0x9A2B,0x9A37,0x9A45,0x9A42,0x9A40,0x9A43,0x9A3E, 0x9A55,0x9A4D,0x9A5B,0x9A57,0x9A5F,0x9A62,0x9A65,0x9A64, 0x9A69,0x9A6B,0x9A6A,0x9AAD,0x9AB0,0x9ABC,0x9AC0,0x9ACF, 0x9AD1,0x9AD3,0x9AD4,0x9ADE,0x9ADF,0x9AE2,0x9AE3,0x9AE6, 0x9AEF,0x9AEB,0x9AEE,0x9AF4,0x9AF1,0x9AF7, /* Range 0x7221 - 0x727E, array index: 0x1B1E */ 0x9AFB,0x9B06,0x9B18,0x9B1A,0x9B1F,0x9B22,0x9B23,0x9B25, 0x9B27,0x9B28,0x9B29,0x9B2A,0x9B2E,0x9B2F,0x9B32,0x9B44, 0x9B43,0x9B4F,0x9B4D,0x9B4E,0x9B51,0x9B58,0x9B74,0x9B93, 0x9B83,0x9B91,0x9B96,0x9B97,0x9B9F,0x9BA0,0x9BA8,0x9BB4, 0x9BC0,0x9BCA,0x9BB9,0x9BC6,0x9BCF,0x9BD1,0x9BD2,0x9BE3, 0x9BE2,0x9BE4,0x9BD4,0x9BE1,0x9C3A,0x9BF2,0x9BF1,0x9BF0, 0x9C15,0x9C14,0x9C09,0x9C13,0x9C0C,0x9C06,0x9C08,0x9C12, 0x9C0A,0x9C04,0x9C2E,0x9C1B,0x9C25,0x9C24,0x9C21,0x9C30, 0x9C47,0x9C32,0x9C46,0x9C3E,0x9C5A,0x9C60,0x9C67,0x9C76, 0x9C78,0x9CE7,0x9CEC,0x9CF0,0x9D09,0x9D08,0x9CEB,0x9D03, 0x9D06,0x9D2A,0x9D26,0x9DAF,0x9D23,0x9D1F,0x9D44,0x9D15, 0x9D12,0x9D41,0x9D3F,0x9D3E,0x9D46,0x9D48, /* Range 0x7321 - 0x737E, array index: 0x1B7C */ 0x9D5D,0x9D5E,0x9D64,0x9D51,0x9D50,0x9D59,0x9D72,0x9D89, 0x9D87,0x9DAB,0x9D6F,0x9D7A,0x9D9A,0x9DA4,0x9DA9,0x9DB2, 0x9DC4,0x9DC1,0x9DBB,0x9DB8,0x9DBA,0x9DC6,0x9DCF,0x9DC2, 0x9DD9,0x9DD3,0x9DF8,0x9DE6,0x9DED,0x9DEF,0x9DFD,0x9E1A, 0x9E1B,0x9E1E,0x9E75,0x9E79,0x9E7D,0x9E81,0x9E88,0x9E8B, 0x9E8C,0x9E92,0x9E95,0x9E91,0x9E9D,0x9EA5,0x9EA9,0x9EB8, 0x9EAA,0x9EAD,0x9761,0x9ECC,0x9ECE,0x9ECF,0x9ED0,0x9ED4, 0x9EDC,0x9EDE,0x9EDD,0x9EE0,0x9EE5,0x9EE8,0x9EEF,0x9EF4, 0x9EF6,0x9EF7,0x9EF9,0x9EFB,0x9EFC,0x9EFD,0x9F07,0x9F08, 0x76B7,0x9F15,0x9F21,0x9F2C,0x9F3E,0x9F4A,0x9F52,0x9F54, 0x9F63,0x9F5F,0x9F60,0x9F61,0x9F66,0x9F67,0x9F6C,0x9F6A, 0x9F77,0x9F72,0x9F76,0x9F95,0x9F9C,0x9FA0, /* Range 0x7421 - 0x7426, array index: 0x1BDA */ 0x582F,0x69C7,0x9059,0x7464,0x51DC,0x7199, /* Unranged codes (85 codes) */ /* Array index: 0x1BE0 */ 0x227E,0x25EF, }; #endif /* ICONV_TO_UCS_CCS_JIS_X0208_1990 && defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * 16-bit UCS -> jis_x0208_1990 speed-optimized table (48128 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_JIS_X0208_1990) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t from_ucs_speed_jis_x0208_1990[] = { /* Heading Block */ 0x0100,INVBLK,INVBLK,0x0200,0x0300,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, 0x0400,0x0500,0x0600,0x0700,INVBLK,0x0800,0x0900,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, 0x0A00,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,0x0B00,0x0C00, 0x0D00,0x0E00,0x0F00,0x1000,0x1100,0x1200,0x1300,0x1400, 0x1500,0x1600,0x1700,0x1800,0x1900,0x1A00,0x1B00,0x1C00, 0x1D00,0x1E00,0x1F00,0x2000,0x2100,0x2200,0x2300,0x2400, 0x2500,0x2600,0x2700,0x2800,0x2900,0x2A00,0x2B00,0x2C00, 0x2D00,0x2E00,0x2F00,0x3000,0x3100,0x3200,0x3300,0x3400, 0x3500,0x3600,0x3700,0x3800,0x3900,0x3A00,0x3B00,0x3C00, 0x3D00,0x3E00,0x3F00,0x4000,0x4100,0x4200,0x4300,0x4400, 0x4500,0x4600,0x4700,0x4800,0x4900,0x4A00,0x4B00,0x4C00, 0x4D00,0x4E00,0x4F00,0x5000,0x5100,0x5200,0x5300,0x5400, 0x5500,0x5600,0x5700,0x5800,0x5900,0x5A00,0x5B00,0x5C00, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,0x5D00, /* Block 1, Array index 0x0100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2140,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2171,0x2172,INVALC,INVALC,INVALC,0x2178, 0x212F,INVALC,INVALC,INVALC,0x224C,INVALC,INVALC,INVALC, 0x216B,0x215E,INVALC,INVALC,0x212D,INVALC,0x2279,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x215F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2160, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 4, Array index 0x0200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2621,0x2622,0x2623,0x2624,0x2625,0x2626,0x2627, 0x2628,0x2629,0x262A,0x262B,0x262C,0x262D,0x262E,0x262F, 0x2630,0x2631,INVALC,0x2632,0x2633,0x2634,0x2635,0x2636, 0x2637,0x2638,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2641,0x2642,0x2643,0x2644,0x2645,0x2646,0x2647, 0x2648,0x2649,0x264A,0x264B,0x264C,0x264D,0x264E,0x264F, 0x2650,0x2651,INVALC,0x2652,0x2653,0x2654,0x2655,0x2656, 0x2657,0x2658,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 5, Array index 0x0300 */ INVALC,0x2727,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2721,0x2722,0x2723,0x2724,0x2725,0x2726,0x2728,0x2729, 0x272A,0x272B,0x272C,0x272D,0x272E,0x272F,0x2730,0x2731, 0x2732,0x2733,0x2734,0x2735,0x2736,0x2737,0x2738,0x2739, 0x273A,0x273B,0x273C,0x273D,0x273E,0x273F,0x2740,0x2741, 0x2751,0x2752,0x2753,0x2754,0x2755,0x2756,0x2758,0x2759, 0x275A,0x275B,0x275C,0x275D,0x275E,0x275F,0x2760,0x2761, 0x2762,0x2763,0x2764,0x2765,0x2766,0x2767,0x2768,0x2769, 0x276A,0x276B,0x276C,0x276D,0x276E,0x276F,0x2770,0x2771, INVALC,0x2757,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 33, Array index 0x0400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x213E,INVALC,INVALC,INVALC,INVALC,0x213D,0x2142,INVALC, 0x2146,0x2147,INVALC,INVALC,0x2148,0x2149,INVALC,INVALC, 0x2277,0x2278,INVALC,INVALC,INVALC,0x2145,0x2144,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2273,INVALC,0x216C,0x216D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2228,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 34, Array index 0x0500 */ INVALC,INVALC,INVALC,0x216E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2272,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x222B,0x222C,0x222A,0x222D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x224D,INVALC,0x224E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 35, Array index 0x0600 */ 0x224F,INVALC,0x225F,0x2250,INVALC,INVALC,INVALC,0x2260, 0x223A,INVALC,INVALC,0x223B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x215D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2265,INVALC,INVALC,0x2267,0x2167,INVALC, 0x225C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x224A, 0x224B,0x2241,0x2240,0x2269,0x226A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2168,0x2268,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2266,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2262,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2162,0x2261,INVALC,INVALC,INVALC,INVALC,0x2165,0x2166, INVALC,INVALC,0x2263,0x2264,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x223E,0x223F,INVALC,INVALC,0x223C,0x223D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x225D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 36, Array index 0x0700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x225E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 38, Array index 0x0800 */ 0x2821,0x282C,0x2822,0x282D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2823,INVALC,INVALC,0x282E, 0x2824,INVALC,INVALC,0x282F,0x2826,INVALC,INVALC,0x2831, 0x2825,INVALC,INVALC,0x2830,0x2827,0x283C,INVALC,INVALC, 0x2837,INVALC,INVALC,0x2832,0x2829,0x283E,INVALC,INVALC, 0x2839,INVALC,INVALC,0x2834,0x2828,INVALC,INVALC,0x2838, 0x283D,INVALC,INVALC,0x2833,0x282A,INVALC,INVALC,0x283A, 0x283F,INVALC,INVALC,0x2835,0x282B,INVALC,INVALC,0x283B, INVALC,INVALC,0x2840,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2836,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2223,0x2222,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2225,0x2224,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2227,0x2226,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2221,0x217E, INVALC,INVALC,INVALC,0x217B,INVALC,INVALC,0x217D,0x217C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x227E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 39, Array index 0x0900 */ INVALC,INVALC,INVALC,INVALC,INVALC,0x217A,0x2179,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x216A,INVALC,0x2169,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2276,INVALC,INVALC,0x2275,INVALC,0x2274, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 49, Array index 0x0A00 */ 0x2121,0x2122,0x2123,0x2137,INVALC,0x2139,0x213A,0x213B, 0x2152,0x2153,0x2154,0x2155,0x2156,0x2157,0x2158,0x2159, 0x215A,0x215B,0x2229,0x222E,0x214C,0x214D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2141,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2421,0x2422,0x2423,0x2424,0x2425,0x2426,0x2427, 0x2428,0x2429,0x242A,0x242B,0x242C,0x242D,0x242E,0x242F, 0x2430,0x2431,0x2432,0x2433,0x2434,0x2435,0x2436,0x2437, 0x2438,0x2439,0x243A,0x243B,0x243C,0x243D,0x243E,0x243F, 0x2440,0x2441,0x2442,0x2443,0x2444,0x2445,0x2446,0x2447, 0x2448,0x2449,0x244A,0x244B,0x244C,0x244D,0x244E,0x244F, 0x2450,0x2451,0x2452,0x2453,0x2454,0x2455,0x2456,0x2457, 0x2458,0x2459,0x245A,0x245B,0x245C,0x245D,0x245E,0x245F, 0x2460,0x2461,0x2462,0x2463,0x2464,0x2465,0x2466,0x2467, 0x2468,0x2469,0x246A,0x246B,0x246C,0x246D,0x246E,0x246F, 0x2470,0x2471,0x2472,0x2473,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x212B,0x212C,0x2135,0x2136,INVALC, INVALC,0x2521,0x2522,0x2523,0x2524,0x2525,0x2526,0x2527, 0x2528,0x2529,0x252A,0x252B,0x252C,0x252D,0x252E,0x252F, 0x2530,0x2531,0x2532,0x2533,0x2534,0x2535,0x2536,0x2537, 0x2538,0x2539,0x253A,0x253B,0x253C,0x253D,0x253E,0x253F, 0x2540,0x2541,0x2542,0x2543,0x2544,0x2545,0x2546,0x2547, 0x2548,0x2549,0x254A,0x254B,0x254C,0x254D,0x254E,0x254F, 0x2550,0x2551,0x2552,0x2553,0x2554,0x2555,0x2556,0x2557, 0x2558,0x2559,0x255A,0x255B,0x255C,0x255D,0x255E,0x255F, 0x2560,0x2561,0x2562,0x2563,0x2564,0x2565,0x2566,0x2567, 0x2568,0x2569,0x256A,0x256B,0x256C,0x256D,0x256E,0x256F, 0x2570,0x2571,0x2572,0x2573,0x2574,0x2575,0x2576,INVALC, INVALC,INVALC,INVALC,0x2126,0x213C,0x2133,0x2134,INVALC, /* Block 79, Array index 0x0B00 */ 0x306C,0x437A,INVALC,0x3C37,INVALC,INVALC,INVALC,0x4B7C, 0x3E66,0x3B30,0x3E65,0x323C,INVALC,0x4954,0x4D3F,INVALC, 0x5022,0x312F,INVALC,INVALC,0x336E,0x5023,0x4024,0x5242, 0x3556,0x4A3A,INVALC,INVALC,INVALC,INVALC,0x3E67,INVALC, INVALC,0x4E3E,INVALC,INVALC,INVALC,INVALC,0x4A42,INVALC, INVALC,INVALC,0x5024,INVALC,INVALC,0x4366,INVALC,INVALC, INVALC,0x5025,0x367A,INVALC,INVALC,INVALC,0x5026,INVALC, 0x345D,0x4330,INVALC,0x3C67,0x5027,INVALC,INVALC,0x5028, INVALC,INVALC,0x5029,0x4735,INVALC,0x3557,INVALC,INVALC, INVALC,INVALC,INVALC,0x4737,INVALC,0x4663,0x3843,0x4B33, INVALC,INVALC,INVALC,INVALC,INVALC,0x6949,0x502A,0x3E68, 0x502B,0x3235,INVALC,INVALC,INVALC,0x3665,0x3870,0x4C69, INVALC,INVALC,0x5626,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4D70,INVALC,0x467D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3425,INVALC, 0x3535,INVALC,0x502C,INVALC,INVALC,0x502D,0x4E3B,INVALC, 0x4D3D,0x4168,0x502F,0x3B76,0x4673,INVALC,0x5032,INVALC, INVALC,0x313E,0x385F,INVALC,0x385E,0x3066,INVALC,INVALC, 0x4F4B,0x4F4A,INVALC,0x3A33,0x3021,INVALC,0x5033,0x5034, 0x5035,0x4B34,0x5036,INVALC,0x3872,0x3067,0x4B72,INVALC, 0x357C,INVALC,INVALC,0x357D,0x357E,0x4462,0x4E3C,INVALC, 0x5037,INVALC,INVALC,0x5038,INVALC,INVALC,0x5039,INVALC, INVALC,INVALC,0x3F4D,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3D3A,0x3F4E,0x503E,INVALC,0x503C,INVALC,0x503D,0x3558, INVALC,INVALC,0x3A23,0x3270,INVALC,0x503B,0x503A,0x4A29, INVALC,INVALC,INVALC,INVALC,0x3B46,0x3B45,0x423E,0x503F, 0x4955,0x4067,INVALC,INVALC,INVALC,0x2138,0x5040,0x5042, INVALC,INVALC,INVALC,0x4265,0x4E61,0x304A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5041,0x323E,INVALC, 0x3644,INVALC,0x4367,INVALC,INVALC,INVALC,0x376F,0x5043, INVALC,INVALC,INVALC,0x4724,INVALC,INVALC,INVALC,INVALC, /* Block 80, Array index 0x0C00 */ INVALC,0x346B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5044,0x304B,INVALC,INVALC,0x3860,0x346C,0x497A, 0x4832,0x3559,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3271,INVALC,0x5067,0x4541,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x476C, 0x5046,INVALC,INVALC,INVALC,0x483C,INVALC,0x4E62,INVALC, 0x3F2D,INVALC,0x3B47,INVALC,0x3B77,0x3240,INVALC,INVALC, INVALC,INVALC,INVALC,0x4451,INVALC,INVALC,0x4322,0x504A, INVALC,INVALC,INVALC,INVALC,INVALC,0x304C,0x4463,0x3D3B, 0x3A34,0x4D24,INVALC,0x424E,INVALC,0x323F,INVALC,0x5049, INVALC,0x4D3E,0x5045,0x5047,0x3A6E,0x5048,0x5524,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5050,INVALC,INVALC,INVALC,INVALC,INVALC,0x5053, 0x5051,INVALC,INVALC,0x3242,INVALC,0x4A3B,0x504B,INVALC, INVALC,INVALC,INVALC,0x504F,0x3873,INVALC,INVALC,0x3B48, INVALC,INVALC,INVALC,0x3426,INVALC,INVALC,0x5054,INVALC, 0x504C,INVALC,INVALC,0x4E63,INVALC,0x3B78,INVALC,0x504D, INVALC,0x5052,INVALC,INVALC,INVALC,INVALC,0x5055,INVALC, 0x504E,INVALC,INVALC,0x3621,INVALC,0x304D,INVALC,INVALC, 0x3622,0x3241,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5525,INVALC,0x4B79,0x496E,0x3874, INVALC,INVALC,INVALC,INVALC,INVALC,0x3F2F,0x4E37,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A58, INVALC,INVALC,0x3738,0x4225,0x3264,INVALC,INVALC,INVALC, INVALC,INVALC,0x3D53,INVALC,INVALC,INVALC,0x5059,INVALC, 0x505E,0x505C,INVALC,INVALC,0x5057,INVALC,INVALC,0x422F, 0x505A,INVALC,0x505D,0x505B,INVALC,0x4A5D,INVALC,0x5058, INVALC,0x3F2E,INVALC,0x4B73,0x505F,0x5060,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3D24,0x506D, INVALC,INVALC,INVALC,0x4750,INVALC,0x4936,0x5068,INVALC, 0x4A70,INVALC,0x3236,INVALC,INVALC,INVALC,0x506C,INVALC, /* Block 81, Array index 0x0D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,0x5066,0x506F,INVALC, INVALC,0x4152,INVALC,0x3844,INVALC,0x475C,INVALC,0x6047, INVALC,0x506E,0x455D,INVALC,0x5063,INVALC,0x3876,INVALC, INVALC,0x3875,0x5061,INVALC,INVALC,INVALC,INVALC,0x3C5A, INVALC,0x5069,INVALC,0x4A6F,0x434D,0x5065,0x3771,INVALC, 0x5062,0x506A,0x5064,0x4E51,0x506B,0x4F41,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3666,INVALC, INVALC,0x3770,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5070,INVALC,INVALC,INVALC,0x5071, 0x5075,0x304E,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A50, 0x5074,INVALC,INVALC,INVALC,INVALC,0x5073,0x5077,INVALC, INVALC,INVALC,0x5076,INVALC,0x4464,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3772,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5078,INVALC,INVALC,INVALC, INVALC,INVALC,0x3C45,INVALC,0x4226,0x4465,0x3676,INVALC, 0x5079,INVALC,INVALC,INVALC,INVALC,0x3536,INVALC,INVALC, 0x507A,INVALC,INVALC,INVALC,INVALC,0x507C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4B35,INVALC,INVALC, INVALC,0x3766,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3B31,0x4877,0x507B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3A45,0x4D43,INVALC,INVALC, INVALC,INVALC,0x507E,0x5123,0x507D,0x3A44,INVALC,0x3D7D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3739,INVALC, INVALC,INVALC,0x5124,INVALC,INVALC,0x364F,INVALC,INVALC, INVALC,0x5121,0x5122,INVALC,INVALC,0x462F,INVALC,0x417C, INVALC,0x3623,INVALC,INVALC,INVALC,0x4B4D,0x5125,INVALC, INVALC,INVALC,0x4E3D,INVALC,INVALC,INVALC,0x5126,INVALC, INVALC,INVALC,INVALC,0x5129,INVALC,0x5127,INVALC,0x414E, INVALC,INVALC,INVALC,INVALC,INVALC,0x5128,0x512A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x512C,INVALC,INVALC, INVALC,0x512B,INVALC,0x4A48,INVALC,INVALC,INVALC,INVALC, /* Block 82, Array index 0x0E00 */ 0x3537,0x512E,0x512F,INVALC,0x322F,INVALC,INVALC,INVALC, INVALC,0x512D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3C74,INVALC,0x5132,0x5131,0x5130,INVALC, 0x5056,INVALC,0x5133,INVALC,INVALC,INVALC,INVALC,0x3D7E, INVALC,0x5134,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4D25,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4C59,INVALC,INVALC,INVALC,INVALC,0x5136, INVALC,INVALC,0x5135,0x5138,0x5137,INVALC,INVALC,0x5139, 0x513A,0x3074,INVALC,0x3835,0x373B,0x3D3C,0x437B,0x3624, 0x4068,0x3877,INVALC,0x396E,0x513C,0x4C48,0x4546,INVALC, 0x3B79,INVALC,0x513B,INVALC,0x513D,INVALC,INVALC,INVALC, INVALC,INVALC,0x455E,INVALC,0x3375,INVALC,INVALC,INVALC, INVALC,INVALC,0x513E,INVALC,INVALC,0x467E,INVALC,INVALC, 0x4134,0x5140,0x5141,0x482C,0x3878,0x4F3B,0x5142,INVALC, INVALC,0x3626,INVALC,INVALC,INVALC,0x4A3C,0x4236,0x3671, 0x4535,INVALC,INVALC,INVALC,0x3773,INVALC,INVALC,INVALC, 0x5143,INVALC,0x5144,INVALC,INVALC,0x4662,0x315F,INVALC, INVALC,0x5147,0x3A7D,INVALC,0x5146,0x3A46,INVALC,0x5148, 0x666E,0x5149,0x4B41,0x514A,INVALC,0x514B,0x514C,0x3E69, INVALC,0x3C4C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3427,INVALC,0x514F,INVALC,0x514D,0x4C3D,0x514E,INVALC, 0x495A,0x5150,0x5151,0x5152,0x455F,INVALC,INVALC,INVALC, 0x5156,0x5154,0x5155,0x5153,0x3A63,0x5157,0x4C6A,0x4E64, INVALC,INVALC,INVALC,INVALC,INVALC,0x5158,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4028,0x5159,0x3D5A,INVALC, INVALC,0x515A,INVALC,0x437C,0x4E3F,0x4560,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5245,INVALC, INVALC,INVALC,INVALC,0x515B,0x7425,0x3645,INVALC,INVALC, 0x515C,0x4B5E,INVALC,INVALC,INVALC,INVALC,0x3D68,0x427C, INVALC,0x515E,0x4664,INVALC,INVALC,0x515F,INVALC,INVALC, 0x5160,0x332E,INVALC,INVALC,INVALC,0x5161,0x3627,INVALC, 0x464C,0x317A,0x3D50,INVALC,INVALC,0x4821,0x5162,INVALC, /* Block 83, Array index 0x0F00 */ 0x4561,INVALC,INVALC,0x3F4F,0x5163,INVALC,0x4A2C,0x405A, 0x3422,INVALC,0x3429,0x5164,INVALC,INVALC,0x5166,INVALC, INVALC,0x373A,INVALC,INVALC,0x5165,INVALC,INVALC,0x4E73, INVALC,INVALC,INVALC,INVALC,INVALC,0x3D69,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x483D,0x4A4C,INVALC,0x5167, INVALC,0x4D78,0x5168,INVALC,INVALC,INVALC,0x5169,INVALC, 0x457E,INVALC,INVALC,0x516A,INVALC,INVALC,0x4029,0x3A7E, 0x3774,0x516B,0x3B49,0x396F,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4466,0x516D,INVALC,INVALC,0x4227, INVALC,INVALC,0x3A6F,0x516E,0x516F,0x4130,INVALC,0x516C, INVALC,INVALC,INVALC,INVALC,0x5171,INVALC,0x4B36,INVALC, INVALC,INVALC,INVALC,0x3964,INVALC,INVALC,0x5170,INVALC, INVALC,INVALC,INVALC,0x3775,0x3A5E,0x476D,INVALC,INVALC, INVALC,0x5174,0x5172,INVALC,INVALC,INVALC,INVALC,0x497B, 0x3E6A,0x517B,0x3364,0x5175,0x5173,0x414F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5177,INVALC,0x5176, INVALC,INVALC,INVALC,0x3344,INVALC,INVALC,INVALC,0x3760, 0x517C,0x4E2D,INVALC,INVALC,INVALC,0x5178,INVALC,INVALC, INVALC,0x517D,0x517A,INVALC,0x5179,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4E4F,INVALC,INVALC,INVALC,0x3879, 0x3243,INVALC,INVALC,0x4E74,INVALC,INVALC,INVALC,INVALC, INVALC,0x3D75,0x4558,0x3965,0x5222,0x5223,INVALC,INVALC, INVALC,0x4E65,INVALC,INVALC,0x4F2B,0x5225,INVALC,INVALC, INVALC,0x387A,INVALC,INVALC,0x5224,INVALC,0x332F,INVALC, INVALC,0x5226,INVALC,0x4B56,INVALC,0x443C,INVALC,0x4D26, INVALC,0x4A59,INVALC,INVALC,INVALC,0x5227,INVALC,INVALC, INVALC,INVALC,0x7055,INVALC,INVALC,0x4630,INVALC,0x5228, 0x342A,0x4C33,INVALC,INVALC,INVALC,0x3E21,0x5229,0x4A67, 0x522D,INVALC,0x402A,0x522A,0x3650,INVALC,0x522B,0x342B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x372E,0x522E,INVALC,0x522F,INVALC,INVALC, 0x5230,0x5231,0x3C5B,INVALC,INVALC,INVALC,0x387B,0x4C5E, /* Block 84, Array index 0x1000 */ INVALC,0x4C68,0x4677,INVALC,INVALC,0x4A71,0x5232,INVALC, 0x5233,INVALC,INVALC,INVALC,INVALC,0x5235,INVALC,0x5237, 0x5236,INVALC,INVALC,INVALC,INVALC,0x5238,0x323D,0x4B4C, INVALC,0x3A7C,0x5239,INVALC,INVALC,0x4159,INVALC,INVALC, 0x3E22,0x3629,INVALC,0x523A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x485B,INVALC,INVALC,INVALC,INVALC,0x523B, INVALC,0x523C,INVALC,0x523D,INVALC,INVALC,INVALC,INVALC, 0x523E,0x4924,0x3668,0x3065,INVALC,INVALC,INVALC,0x463F, 0x523F,0x3D3D,INVALC,0x4069,INVALC,0x5241,0x5240,0x3E23, 0x3861,0x5243,0x483E,INVALC,INVALC,0x5244,INVALC,INVALC, INVALC,0x485C,0x4234,0x426E,0x3628,INVALC,INVALC,0x466E, 0x4331,INVALC,0x476E,INVALC,0x4B4E,INVALC,0x5246,INVALC, 0x406A,INVALC,INVALC,INVALC,INVALC,INVALC,0x3735,INVALC, INVALC,0x5247,INVALC,INVALC,INVALC,INVALC,0x5248,0x312C, 0x3075,0x346D,INVALC,0x4228,0x3551,0x4D71,INVALC,0x524B, 0x3237,INVALC,INVALC,0x524A,INVALC,INVALC,INVALC,0x362A, INVALC,INVALC,0x524C,INVALC,0x4C71,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x524D,INVALC, 0x4E52,INVALC,0x387C,INVALC,INVALC,INVALC,INVALC,0x3836, 0x524E,INVALC,INVALC,INVALC,INVALC,0x5250,0x524F,INVALC, 0x3F5F,0x3139,INVALC,INVALC,INVALC,0x315E,0x5251,INVALC, 0x5252,INVALC,INVALC,0x3837,INVALC,INVALC,0x5253,INVALC, INVALC,INVALC,INVALC,0x356E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3B32,0x5254,INVALC,INVALC,INVALC,INVALC, 0x4B74,0x3A35,0x355A,0x4D27,0x4150,0x483F,0x3C7D,INVALC, INVALC,INVALC,INVALC,INVALC,0x3D47,INVALC,0x3C68,0x3C75, INVALC,0x3D76,INVALC,0x4840,INVALC,INVALC,INVALC,0x5257, INVALC,0x3143,0x4151,0x387D,0x3845,0x3667,INVALC,INVALC, 0x525B,0x4321,0x427E,0x362B,0x3E24,0x525C,0x525A,0x3244, 0x4266,0x3C38,0x3B4B,0x3126,INVALC,INVALC,0x3370,0x3966, 0x3B4A,INVALC,0x525D,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 85, Array index 0x1100 */ INVALC,0x525E,INVALC,0x3549,0x3346,INVALC,INVALC,INVALC, 0x3967,0x3548,0x445F,0x3125,0x4631,0x4C3E,0x3921,0x4D79, 0x4547,0x387E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x372F,INVALC,0x5267,INVALC,0x3663, 0x4B4A,INVALC,INVALC,INVALC,INVALC,INVALC,0x485D,INVALC, INVALC,0x5266,INVALC,0x345E,0x5261,0x5262,0x5264,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5265,INVALC, 0x355B,0x3F61,INVALC,0x4A2D,0x5263,0x525F,0x3863,INVALC, 0x5260,INVALC,0x4F24,INVALC,INVALC,INVALC,0x4A72,INVALC, 0x4468,0x3862,0x3970,INVALC,INVALC,INVALC,0x5268,INVALC, INVALC,0x465D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x526C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3C7E,INVALC,0x3C76,INVALC,INVALC,INVALC,INVALC,INVALC, 0x526F,0x526D,INVALC,0x4C23,INVALC,0x526A,0x5273,0x526E, INVALC,INVALC,INVALC,0x5271,0x3846,0x4C3F,INVALC,INVALC, 0x5272,INVALC,INVALC,INVALC,0x5274,INVALC,0x5276,INVALC, INVALC,INVALC,INVALC,0x3A70,0x4F42,INVALC,0x526B,0x5269, 0x5275,INVALC,0x5270,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5278,INVALC,0x5323,0x527A,INVALC,INVALC, 0x527E,INVALC,INVALC,0x5321,0x527B,INVALC,INVALC,0x533E, INVALC,INVALC,0x3A69,0x3331,INVALC,INVALC,INVALC,INVALC, 0x5279,INVALC,INVALC,INVALC,0x5325,0x3076,0x5324,INVALC, 0x3025,0x494A,0x5322,INVALC,0x527C,INVALC,INVALC,0x5277, 0x527D,0x3A48,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5326,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3077,0x532F,INVALC,INVALC,0x5327,0x5328,INVALC, 0x3E25,0x4B69,INVALC,INVALC,INVALC,0x532D,0x532C,INVALC, INVALC,INVALC,0x452F,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x532E,INVALC,INVALC,0x532B,INVALC,INVALC, /* Block 86, Array index 0x1200 */ INVALC,INVALC,INVALC,INVALC,0x3134,INVALC,0x3A36,0x3F30, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5329, 0x4562,INVALC,INVALC,INVALC,0x532A,INVALC,0x3022,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5334,0x4D23, INVALC,0x3E27,INVALC,0x533A,INVALC,INVALC,INVALC,INVALC, 0x5339,0x5330,INVALC,INVALC,INVALC,INVALC,0x4243,INVALC, 0x5331,INVALC,INVALC,INVALC,0x426F,0x5336,0x3E26,INVALC, INVALC,INVALC,INVALC,INVALC,0x5333,INVALC,INVALC,0x4C64, INVALC,INVALC,INVALC,0x373C,INVALC,INVALC,0x5337,0x5338, INVALC,INVALC,INVALC,INVALC,0x5335,0x533B,INVALC,INVALC, INVALC,INVALC,INVALC,0x5332,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5341,0x5346,INVALC,0x5342,INVALC, 0x533D,INVALC,INVALC,0x5347,0x4131,INVALC,INVALC,0x5349, INVALC,0x3922,0x533F,0x437D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5343,0x533C,0x342D,INVALC,0x346E,0x3365,0x5344,0x5340, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3776, 0x534A,0x5348,0x4153,0x354A,0x362C,INVALC,0x5345,INVALC, 0x3674,INVALC,INVALC,INVALC,INVALC,INVALC,0x3144,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x534E,0x534C,INVALC,0x5427, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5351,INVALC,INVALC,INVALC, INVALC,INVALC,0x534B,INVALC,0x534F,INVALC,INVALC,0x534D, INVALC,INVALC,INVALC,0x3B4C,0x5350,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5353, INVALC,0x5358,INVALC,INVALC,INVALC,0x5356,0x5355,INVALC, /* Block 87, Array index 0x1300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4332,INVALC, INVALC,0x3245,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5352,INVALC,0x5354,0x3E28, 0x3133,INVALC,INVALC,0x5357,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x325E,INVALC,INVALC,INVALC,INVALC,INVALC,0x5362, INVALC,0x3E7C,0x535E,INVALC,0x535C,INVALC,0x535D,INVALC, 0x535F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x313D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4139,INVALC,0x5359,INVALC, 0x535A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x337A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5361,INVALC,INVALC,INVALC, 0x346F,INVALC,0x5364,0x5360,0x5363,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4A2E,INVALC,INVALC,INVALC, 0x4655,INVALC,0x4838,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5366,INVALC,INVALC,INVALC,INVALC,INVALC,0x5365,0x3345, INVALC,INVALC,0x5367,INVALC,INVALC,INVALC,INVALC,0x536A, INVALC,INVALC,INVALC,INVALC,0x5369,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5368,INVALC,0x4739,INVALC,INVALC,0x536B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x536C,INVALC, INVALC,INVALC,INVALC,INVALC,0x536E,INVALC,0x536D,INVALC, INVALC,INVALC,INVALC,INVALC,0x5370,INVALC,INVALC,INVALC, 0x5373,0x5371,0x536F,0x5372,INVALC,INVALC,INVALC,INVALC, 0x5374,INVALC,INVALC,INVALC,INVALC,INVALC,0x5375,INVALC, INVALC,0x5376,INVALC,0x5377,INVALC,INVALC,INVALC,0x5378, 0x5145,INVALC,0x3C7C,0x3B4D,INVALC,INVALC,0x3273,INVALC, 0x3078,INVALC,INVALC,0x4344,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5379,INVALC, 0x3A24,INVALC,0x304F,0x3F5E,INVALC,INVALC,INVALC,INVALC, INVALC,0x537A,0x3847,INVALC,INVALC,0x3971,INVALC,0x537C, /* Block 88, Array index 0x1400 */ 0x537B,INVALC,INVALC,0x4A60,0x537D,INVALC,INVALC,INVALC, 0x5421,0x537E,INVALC,0x5422,INVALC,0x5423,INVALC,0x3777, INVALC,INVALC,0x3160,0x5424,INVALC,INVALC,0x5426,INVALC, 0x5425,INVALC,INVALC,INVALC,0x5428,INVALC,INVALC,0x455A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5429,0x3035, 0x3A5F,INVALC,INVALC,INVALC,INVALC,0x373D,INVALC,INVALC, 0x434F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x542A, 0x542B,INVALC,INVALC,0x542D,INVALC,INVALC,INVALC,INVALC, 0x542E,INVALC,0x3A64,INVALC,INVALC,INVALC,INVALC,0x3651, INVALC,INVALC,0x4B37,INVALC,INVALC,INVALC,0x542C,0x542F, 0x3A41,0x3923,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5433,INVALC,INVALC,0x3A25,INVALC,0x4333,INVALC, INVALC,0x5430,0x445A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5434, INVALC,INVALC,0x3F62,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5432,0x5435,INVALC,0x373F,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5436,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5437,INVALC,0x3924,0x3340,0x5439,INVALC,INVALC,INVALC, INVALC,INVALC,0x543A,INVALC,INVALC,INVALC,INVALC,INVALC, 0x543B,INVALC,INVALC,0x5438,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5431,INVALC,INVALC,0x543C,INVALC,INVALC,0x543D,INVALC, INVALC,INVALC,INVALC,0x4B64,INVALC,INVALC,0x3E6B,INVALC, INVALC,INVALC,0x543F,0x5440,0x543E,INVALC,0x5442,INVALC, INVALC,INVALC,INVALC,INVALC,0x4738,INVALC,INVALC,0x3068, 0x4956,INVALC,INVALC,0x5443,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3E7D,INVALC,INVALC,0x3C39, INVALC,0x475D,0x3470,INVALC,0x3A6B,INVALC,INVALC,INVALC, /* Block 89, Array index 0x1500 */ 0x4B59,INVALC,0x4632,INVALC,INVALC,0x3778,0x424F,INVALC, INVALC,INVALC,0x5441,0x5444,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4244,INVALC,INVALC, INVALC,0x5445,INVALC,INVALC,INVALC,0x5446,INVALC,INVALC, INVALC,0x5448,INVALC,INVALC,0x4469,INVALC,INVALC,INVALC, INVALC,INVALC,0x342E,INVALC,INVALC,INVALC,INVALC,0x7421, 0x3161,0x4A73,INVALC,INVALC,0x3E6C,0x4548,INVALC,INVALC, INVALC,INVALC,0x3A66,INVALC,INVALC,0x544E,INVALC,INVALC, 0x4A3D,0x4E5D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3274,0x544A,INVALC,INVALC,INVALC,INVALC, INVALC,0x413A,0x544D,INVALC,0x4563,INVALC,INVALC,0x4549, 0x4564,0x4839,0x444D,INVALC,INVALC,INVALC,0x3A49,INVALC, INVALC,INVALC,0x5449,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3176,INVALC,0x4536,INVALC,INVALC,INVALC,INVALC, 0x544B,INVALC,0x5447,INVALC,INVALC,0x3F50,INVALC,INVALC, INVALC,0x544F,INVALC,INVALC,INVALC,INVALC,0x3D4E,INVALC, INVALC,INVALC,INVALC,0x362D,INVALC,0x5450,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4A68,INVALC,INVALC,INVALC,0x417D, INVALC,INVALC,INVALC,INVALC,0x4446,INVALC,INVALC,0x5452, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4B4F,INVALC,INVALC,0x5453,INVALC,INVALC,0x5458,INVALC, INVALC,INVALC,INVALC,0x4A2F,INVALC,INVALC,INVALC,INVALC, 0x5457,0x5451,0x5454,0x5456,INVALC,INVALC,0x3A26,INVALC, INVALC,0x4A49,INVALC,INVALC,INVALC,0x5459,INVALC,0x4345, INVALC,INVALC,0x3275,INVALC,0x3E6D,INVALC,INVALC,INVALC, INVALC,0x545B,INVALC,0x545A,INVALC,0x3968,INVALC,0x545C, 0x545E,0x545D,INVALC,INVALC,0x5460,INVALC,0x5455,0x5462, INVALC,INVALC,INVALC,INVALC,0x5461,0x545F,INVALC,INVALC, INVALC,INVALC,INVALC,0x3B4E,0x3F51,INVALC,0x4154,0x5463, 0x403C,0x306D,0x4764,INVALC,INVALC,INVALC,INVALC,0x445B, INVALC,0x5465,0x5464,0x5466,0x5467,0x5468,INVALC,INVALC, /* Block 90, Array index 0x1600 */ INVALC,INVALC,0x5469,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4A51,0x546A,INVALC,INVALC,INVALC,INVALC,0x3246, 0x546B,INVALC,INVALC,INVALC,INVALC,0x4D3C,0x3330,INVALC, 0x5249,0x3D48,0x423F,0x546C,0x4C6B,INVALC,INVALC,INVALC, INVALC,INVALC,0x4C34,INVALC,INVALC,0x546E,INVALC,0x4267, INVALC,0x4537,0x4240,0x4957,0x546F,0x5470,0x317B,INVALC, INVALC,0x3C3A,0x5471,INVALC,INVALC,INVALC,INVALC,0x3050, 0x5472,INVALC,INVALC,INVALC,INVALC,INVALC,0x5473,INVALC, INVALC,INVALC,INVALC,INVALC,0x3162,INVALC,INVALC,0x3471, 0x4660,0x4A74,INVALC,INVALC,INVALC,INVALC,0x5477,0x4155, 0x5476,0x3740,INVALC,INVALC,0x4B5B,0x5475,INVALC,0x4565, 0x5479,INVALC,0x5478,INVALC,INVALC,INVALC,INVALC,INVALC, 0x547B,INVALC,0x547A,INVALC,INVALC,0x317C,INVALC,0x547C, 0x3E29,0x547E,0x4325,INVALC,0x547D,INVALC,0x4A33,INVALC, INVALC,INVALC,INVALC,0x3D77,0x455B,INVALC,INVALC,INVALC, 0x5521,INVALC,INVALC,INVALC,INVALC,0x3925,INVALC,INVALC, INVALC,0x5522,0x4721,0x485E,0x4C51,INVALC,INVALC,INVALC, INVALC,INVALC,0x4725,INVALC,INVALC,0x552B,INVALC,INVALC, INVALC,INVALC,INVALC,0x3538,INVALC,INVALC,0x4D45,INVALC, INVALC,0x4C2F,INVALC,0x562C,INVALC,0x5523,INVALC,INVALC, INVALC,INVALC,INVALC,0x5526,INVALC,0x4245,INVALC,INVALC, 0x4B38,INVALC,INVALC,INVALC,0x454A,INVALC,INVALC,INVALC, INVALC,INVALC,0x5527,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4B65,INVALC,0x3A4A,INVALC,INVALC,0x3E2A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5528,INVALC, INVALC,0x3B50,INVALC,0x3B4F,INVALC,INVALC,INVALC,INVALC, 0x3039,0x3848,INVALC,0x402B,0x3051,INVALC,INVALC,INVALC, INVALC,0x552C,0x552D,INVALC,0x552A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3138,0x342F,INVALC, 0x5529,INVALC,0x4C45,0x4931,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3028,INVALC, INVALC,INVALC,INVALC,0x3079,INVALC,INVALC,INVALC,0x3B51, /* Block 91, Array index 0x1700 */ INVALC,0x3052,INVALC,0x3023,INVALC,INVALC,INVALC,INVALC, INVALC,0x5532,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5530,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4C3C,INVALC,0x5533,INVALC,0x5531,INVALC,INVALC,0x552F, 0x3F31,INVALC,INVALC,INVALC,INVALC,0x552E,INVALC,INVALC, INVALC,0x4A5A,INVALC,INVALC,INVALC,INVALC,INVALC,0x3864, INVALC,INVALC,INVALC,INVALC,INVALC,0x5537,0x5538,INVALC, INVALC,INVALC,INVALC,INVALC,0x3E2B,INVALC,INVALC,INVALC, 0x5534,0x4F2C,INVALC,INVALC,INVALC,INVALC,0x474C,INVALC, INVALC,0x5536,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3A27,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5539,INVALC,INVALC,INVALC,0x4958,INVALC, INVALC,INVALC,0x553A,INVALC,0x5535,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4C3B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x475E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x553B,0x4932,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x553C,0x5540,0x553D,INVALC, INVALC,0x3247,0x553F,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3C3B,INVALC,0x553E,0x3779,INVALC,INVALC,INVALC, 0x554C,INVALC,INVALC,INVALC,INVALC,INVALC,0x5545,0x5542, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4364,INVALC,0x5541,INVALC,INVALC,0x5543,INVALC, INVALC,0x5544,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5546,0x5547,INVALC,INVALC,INVALC,INVALC, /* Block 92, Array index 0x1800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3472,INVALC,0x5549,0x5548,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x554A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3E6E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x554D,INVALC,0x445C,INVALC,INVALC,INVALC, 0x3145,INVALC,0x554B,INVALC,INVALC,INVALC,0x554E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x554F,INVALC, 0x5552,INVALC,INVALC,0x5550,INVALC,0x5551,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3B52,0x5553,INVALC,INVALC,0x3926,0x5554,INVALC,0x3B7A, 0x4238,INVALC,0x5555,0x5556,0x3B5A,0x3927,INVALC,0x4C52, INVALC,INVALC,INVALC,0x3528,0x3849,0x5557,0x3358,INVALC, INVALC,0x5558,INVALC,0x4239,INVALC,INVALC,INVALC,INVALC, 0x5559,0x5623,INVALC,0x555A,INVALC,0x555B,INVALC,INVALC, 0x555C,INVALC,0x555E,INVALC,INVALC,INVALC,INVALC,INVALC, 0x555F,INVALC,INVALC,0x5560,INVALC,0x4270,INVALC,0x3127, 0x3C69,0x3042,INVALC,0x4157,0x3430,0x3C35,INVALC,0x3928, INVALC,INVALC,INVALC,INVALC,INVALC,0x4566,INVALC,0x3D21, 0x3431,0x4368,0x446A,0x3038,0x3539,0x4A75,INVALC,0x3C42, INVALC,INVALC,0x3552,0x406B,0x3C3C,0x4D28,0x5561,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x355C,INVALC, 0x3A4B,INVALC,INVALC,0x3332,0x3163,0x3E2C,0x3248,INVALC, 0x5562,0x4D46,INVALC,INVALC,INVALC,INVALC,INVALC,0x3D49, INVALC,INVALC,0x3C64,0x5563,0x3473,0x4652,0x4C29,0x5564, INVALC,0x5565,INVALC,INVALC,0x4959,INVALC,INVALC,INVALC, 0x5567,INVALC,0x3428,0x3677,0x5566,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3432,INVALC,0x3F32,0x556B,0x3B21, INVALC,0x3249,0x556A,INVALC,0x5568,0x556C,0x5569,0x472B, 0x5C4D,0x3F33,INVALC,0x556D,INVALC,INVALC,0x4E40,INVALC, 0x556E,INVALC,INVALC,0x5570,INVALC,0x437E,0x556F,INVALC, 0x4023,INVALC,0x3B7B,INVALC,INVALC,INVALC,0x4250,0x3C77, /* Block 93, Array index 0x1900 */ INVALC,0x4975,0x406C,INVALC,0x3C4D,0x5571,0x3E2D,0x5572, 0x5573,0x3053,0x423A,0x3F52,INVALC,0x5574,0x4633,0x3E2E, INVALC,0x3E2F,INVALC,0x5575,INVALC,INVALC,0x406D,INVALC, INVALC,INVALC,0x3E30,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5576,INVALC,0x5577,INVALC,0x4C60,INVALC,INVALC,INVALC, 0x5578,INVALC,INVALC,INVALC,INVALC,0x3646,INVALC,INVALC, INVALC,0x3D22,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5579,0x557A,0x3C5C,0x3F2C,0x4674,0x3F54,0x4878,0x4722, 0x3649,0x557B,INVALC,INVALC,INVALC,0x356F,0x557C,INVALC, 0x367E,INVALC,0x464F,0x3230,INVALC,0x3B53,0x557D,0x5622, 0x5621,0x367D,INVALC,0x557E,INVALC,0x4538,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4230,INVALC, 0x454B,0x3C48,INVALC,INVALC,0x4158,0x4D7A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5624,INVALC,0x5625,0x4656, INVALC,0x3B33,INVALC,INVALC,INVALC,INVALC,0x5627,INVALC, INVALC,0x5628,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5629,INVALC,INVALC,INVALC, 0x3474,0x562A,INVALC,INVALC,0x562B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x322C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x413B,0x3464,INVALC,0x562D,0x4C28,INVALC,INVALC,INVALC, INVALC,0x4252,INVALC,0x3359,INVALC,INVALC,0x562F,0x5631, 0x345F,INVALC,INVALC,0x562E,0x5630,INVALC,0x5633,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5632,INVALC,0x5634, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5635,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x463D,0x362E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3265,0x5636,0x563B,INVALC,INVALC,0x5639,INVALC,0x4A77, 0x4A76,INVALC,INVALC,INVALC,INVALC,INVALC,0x4567,INVALC, INVALC,INVALC,0x5638,0x3D54,INVALC,0x5637,INVALC,INVALC, /* Block 94, Array index 0x1A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3F72, INVALC,INVALC,INVALC,0x563C,INVALC,INVALC,0x3A6A,INVALC, INVALC,0x5642,INVALC,INVALC,0x5643,0x563D,0x3333,0x563E, 0x5647,0x5646,0x5645,0x5641,INVALC,INVALC,INVALC,0x5640, INVALC,INVALC,0x5644,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4A78,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x564B,0x5648,INVALC,0x564A,INVALC, 0x4D72,INVALC,0x5649,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x563F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3F73,INVALC,INVALC,0x564C,INVALC,INVALC,0x3A37, INVALC,INVALC,INVALC,0x564D,INVALC,INVALC,0x564E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5651,INVALC,0x5650,INVALC,INVALC,0x564F, INVALC,INVALC,INVALC,0x4568,0x563A,INVALC,INVALC,INVALC, 0x5657,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5653,INVALC,INVALC, INVALC,INVALC,0x5652,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5654,INVALC,0x5655,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5658, INVALC,INVALC,0x4E66,INVALC,0x5659,0x5656,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x565A,INVALC,INVALC,0x3460,0x565B,INVALC,INVALC, INVALC,INVALC,0x565D,0x565C,INVALC,INVALC,0x565E,INVALC, INVALC,INVALC,INVALC,0x565F,INVALC,0x406E,0x3D23,INVALC, INVALC,0x3D64,INVALC,0x4163,INVALC,0x3929,0x3A38,0x392A, 0x3570,INVALC,INVALC,0x5660,INVALC,INVALC,0x3A39,INVALC, INVALC,0x384A,0x5661,0x4C26,0x4743,0x5662,INVALC,0x392B, INVALC,INVALC,INVALC,0x342C,INVALC,0x4327,0x3652,INVALC, /* Block 95, Array index 0x1B00 */ INVALC,INVALC,0x3B54,0x495B,INVALC,INVALC,0x4841,INVALC, INVALC,INVALC,INVALC,0x5663,0x3475,INVALC,INVALC,INVALC, INVALC,0x5666,INVALC,INVALC,INVALC,INVALC,0x4421,INVALC, INVALC,0x5665,0x5664,0x5667,INVALC,0x446B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3F63,INVALC,INVALC, INVALC,INVALC,INVALC,0x3B55,INVALC,0x404A,INVALC,0x4253, 0x3522,INVALC,INVALC,0x4422,INVALC,INVALC,0x5668,0x5669, 0x3E6F,INVALC,INVALC,INVALC,INVALC,0x4B39,INVALC,INVALC, 0x566C,INVALC,INVALC,0x566B,0x566A,0x497D,INVALC,0x5673, INVALC,INVALC,INVALC,INVALC,0x4B5A,INVALC,0x566D,INVALC, INVALC,INVALC,INVALC,INVALC,0x566F,0x4B6B,INVALC,0x566E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5670, INVALC,0x4828,0x5671,0x4A3E,0x5672,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3433,0x4A3F,0x472F,0x5674,0x5675,INVALC, 0x392C,0x3434,0x5676,0x3838,0x4D44,0x4D29,0x3476,0x5678, INVALC,0x4423,INVALC,0x392D,0x3E31,INVALC,INVALC,0x485F, INVALC,INVALC,0x3E32,INVALC,INVALC,INVALC,INVALC,0x3D78, INVALC,INVALC,INVALC,INVALC,INVALC,0x446C,0x4A79,0x4539, INVALC,INVALC,0x392E,INVALC,0x495C,INVALC,INVALC,INVALC, 0x5679,INVALC,INVALC,INVALC,INVALC,INVALC,0x4559,0x3A42, INVALC,INVALC,INVALC,0x384B,INVALC,0x446D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3043,0x3D6E,0x392F, 0x4D47,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x567A,0x567B,0x4751,INVALC,INVALC,INVALC,INVALC, 0x567C,0x4E77,0x4F2D,INVALC,INVALC,INVALC,INVALC,0x567E, 0x567D,INVALC,INVALC,0x3347,INVALC,INVALC,0x5721,INVALC, INVALC,INVALC,0x5724,0x5725,INVALC,0x5723,INVALC,0x4940, 0x3E33,0x5727,0x5726,0x5722,INVALC,INVALC,INVALC,INVALC, 0x5728,0x5729,INVALC,INVALC,0x572A,INVALC,INVALC,INVALC, 0x572D,0x572B,INVALC,0x572C,0x572E,INVALC,0x3164,0x446E, 0x572F,INVALC,0x377A,0x3276,0x4736,INVALC,0x5730,0x467B, /* Block 96, Array index 0x1C00 */ INVALC,0x4A5B,INVALC,0x5731,0x4F2E,INVALC,INVALC,INVALC, INVALC,0x5732,0x4A40,0x5735,0x5021,0x5031,INVALC,0x3C30, 0x4675,0x5736,INVALC,0x355D,0x4424,0x307A,0x5737,0x4A26, 0x3930,INVALC,INVALC,0x4350,INVALC,INVALC,INVALC,0x446F, INVALC,INVALC,INVALC,INVALC,INVALC,0x4C6F,0x3839,0x384C, INVALC,0x5738,INVALC,INVALC,INVALC,0x5739,INVALC,0x573F, INVALC,0x3C65,INVALC,INVALC,INVALC,0x4425,INVALC,0x362F, 0x573A,INVALC,INVALC,INVALC,0x492B,INVALC,0x4346,INVALC, INVALC,0x573B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x573C,INVALC,0x3630,INVALC,0x573D,INVALC,0x573E,INVALC, INVALC,0x5740,INVALC,0x4576,INVALC,INVALC,0x5741,0x5742, INVALC,0x5743,INVALC,INVALC,0x5734,0x5733,INVALC,INVALC, INVALC,0x5744,0x3741,INVALC,INVALC,INVALC,0x4927,INVALC, INVALC,0x3A4C,0x4937,0x4426,0x494B,0x5745,INVALC,INVALC, 0x3E34,0x3146,INVALC,0x5746,INVALC,INVALC,INVALC,0x5747, INVALC,0x4C72,INVALC,INVALC,0x4860,INVALC,INVALC,0x574A, 0x317D,0x402C,0x5749,0x5748,0x3742,0x4254,INVALC,0x574E, 0x574C,INVALC,0x574B,0x4E27,0x3865,INVALC,INVALC,INVALC, 0x3D79,0x574D,0x454C,0x3D3E,INVALC,INVALC,INVALC,0x4640, 0x5751,0x5750,INVALC,INVALC,INVALC,INVALC,0x574F,INVALC, 0x5752,0x3866,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5753,0x497C,0x3D5B,INVALC,INVALC,0x5754,0x4879,INVALC, INVALC,INVALC,INVALC,0x4641,0x4427,INVALC,INVALC,INVALC, INVALC,0x4530,INVALC,INVALC,0x5755,0x352B,INVALC,INVALC, INVALC,INVALC,INVALC,0x3F34,INVALC,0x492C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3477,0x4726,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5756,0x3B56, 0x4B3A,0x4B3B,INVALC,INVALC,0x317E,0x575B,INVALC,INVALC, 0x4369,INVALC,INVALC,INVALC,0x5758,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3277,INVALC,INVALC,INVALC,INVALC, 0x582D,0x575A,INVALC,INVALC,INVALC,0x4730,INVALC,INVALC, 0x5759,INVALC,INVALC,0x5757,INVALC,0x397A,INVALC,0x575D, /* Block 97, Array index 0x1D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5763,0x5769, 0x5761,INVALC,0x455C,INVALC,INVALC,0x5766,0x495D,INVALC, INVALC,0x5760,INVALC,0x5765,0x4E67,0x3B57,INVALC,INVALC, 0x4255,0x575E,INVALC,INVALC,INVALC,0x355E,0x5768,0x402D, 0x3165,0x5762,0x3278,0x5767,INVALC,INVALC,INVALC,0x3631, INVALC,0x5764,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x576A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x576C,0x5776,0x5774,INVALC,INVALC,0x5771,INVALC, INVALC,INVALC,0x5770,0x4E78,INVALC,0x5772,INVALC,INVALC, 0x3632,INVALC,0x3931,INVALC,INVALC,0x3D7A,INVALC,INVALC, INVALC,0x5779,0x576B,INVALC,INVALC,INVALC,INVALC,0x576F, 0x575F,INVALC,0x327A,0x5773,0x5775,0x4351,INVALC,INVALC, 0x3A28,0x3238,0x576D,0x5778,0x5777,0x3633,INVALC,0x4229, 0x3366,INVALC,INVALC,INVALC,INVALC,0x3743,INVALC,0x576E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x577A,INVALC,0x577D,0x5821,INVALC,INVALC,INVALC, INVALC,0x3C3D,INVALC,0x5827,0x4470,0x577B,INVALC,INVALC, INVALC,INVALC,0x5825,INVALC,0x3279,INVALC,0x5823,0x5824, INVALC,INVALC,0x577E,0x5822,INVALC,INVALC,INVALC,0x3867, 0x4D2A,INVALC,INVALC,0x3435,INVALC,INVALC,0x3159,0x5826, INVALC,0x473A,0x302D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4861,0x575C,0x582C,0x5830,0x4C65,INVALC, 0x5829,INVALC,INVALC,INVALC,0x4569,0x582E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3E70,0x582F,0x4657, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4F47,INVALC,0x582B,INVALC,INVALC,INVALC,INVALC, 0x5831,INVALC,0x397B,INVALC,0x404B,INVALC,INVALC,0x3054, 0x582A,0x5828,INVALC,0x415A,INVALC,INVALC,INVALC,0x577C, 0x3B34,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4246,0x583D,INVALC,0x415B,0x5838,INVALC,0x5835,0x5836, INVALC,0x3C66,0x5839,0x583C,INVALC,INVALC,INVALC,INVALC, /* Block 98, Array index 0x1E00 */ 0x5837,0x3D25,INVALC,0x583A,INVALC,INVALC,0x5834,INVALC, 0x4C7C,0x4C7B,INVALC,INVALC,INVALC,0x583E,0x583F,0x3055, INVALC,INVALC,INVALC,INVALC,INVALC,0x5833,INVALC,INVALC, INVALC,INVALC,0x3672,0x3026,INVALC,INVALC,INVALC,0x3436, INVALC,0x583B,INVALC,INVALC,INVALC,INVALC,INVALC,0x5843, 0x5842,INVALC,INVALC,INVALC,0x5847,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5848,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5846,0x5849,0x5841,0x5845, INVALC,INVALC,0x584A,INVALC,0x584B,INVALC,INVALC,0x5840, 0x3B7C,INVALC,0x5844,0x4256,0x3932,0x5832,0x3F35,INVALC, INVALC,INVALC,INVALC,0x5858,INVALC,0x4A69,INVALC,INVALC, 0x584E,0x584F,0x5850,INVALC,INVALC,0x5857,INVALC,0x5856, INVALC,INVALC,0x4B7D,0x3437,INVALC,0x5854,INVALC,0x3745, 0x3334,INVALC,INVALC,0x5851,INVALC,INVALC,0x4E38,0x5853, 0x3056,0x5855,INVALC,0x584C,0x5852,0x5859,0x3744,0x584D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4D5D,INVALC, INVALC,INVALC,0x4D2B,INVALC,INVALC,INVALC,INVALC,0x585C, INVALC,INVALC,0x5860,INVALC,INVALC,INVALC,0x417E,INVALC, 0x4E79,0x5861,INVALC,INVALC,0x585E,INVALC,0x585B,INVALC, INVALC,0x585A,0x585F,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4A30,INVALC,INVALC,0x4634, INVALC,0x3746,INVALC,0x5862,0x585D,INVALC,0x5863,INVALC, INVALC,INVALC,0x377B,INVALC,INVALC,INVALC,0x3231,INVALC, INVALC,INVALC,0x586B,INVALC,INVALC,INVALC,0x3438,INVALC, INVALC,INVALC,INVALC,0x5869,INVALC,INVALC,0x586A,0x3A29, 0x5868,0x5866,0x5865,0x586C,0x5864,0x586E,INVALC,INVALC, 0x327B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5870,INVALC,INVALC,0x586F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4428,INVALC,0x5873,INVALC,0x5871,0x5867, 0x377C,INVALC,0x5872,INVALC,0x5876,0x5875,0x5877,0x5874, /* Block 99, Array index 0x1F00 */ 0x5878,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5879,0x587A,0x4A6A,INVALC,0x587C,0x587B,0x3D3F,INVALC, 0x402E,0x3266,0x327C,INVALC,0x587D,INVALC,0x303F,INVALC, INVALC,INVALC,0x404C,0x587E,INVALC,0x6C43,0x5921,0x3761, INVALC,0x5922,INVALC,INVALC,INVALC,INVALC,0x406F,INVALC, INVALC,INVALC,0x5923,INVALC,INVALC,INVALC,0x5924,0x353A, 0x5925,INVALC,0x5926,0x5927,0x4257,INVALC,INVALC,INVALC, 0x384D,INVALC,INVALC,0x4C61,INVALC,INVALC,INVALC,0x4B3C, 0x3D6A,0x5928,INVALC,INVALC,INVALC,INVALC,INVALC,0x4070, 0x6E3D,0x4862,INVALC,0x3C6A,INVALC,0x3A4D,0x5929,INVALC, INVALC,INVALC,INVALC,0x4247,INVALC,0x4A27,INVALC,INVALC, 0x4271,INVALC,INVALC,0x592C,INVALC,INVALC,0x592A,INVALC, 0x592D,INVALC,INVALC,0x592B,INVALC,INVALC,INVALC,INVALC, 0x592E,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A31,INVALC, INVALC,0x3037,INVALC,INVALC,INVALC,INVALC,0x495E,INVALC, INVALC,0x4863,INVALC,INVALC,0x592F,INVALC,0x5932,0x3E35, 0x353B,INVALC,0x5930,0x5937,0x3E36,INVALC,INVALC,INVALC, INVALC,0x5931,0x4744,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4D5E,0x5933,0x5934,0x5938,0x456A,0x5935,0x3933, 0x405E,INVALC,INVALC,0x5946,0x4834,INVALC,0x4272,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4864,0x5A2D,INVALC,INVALC,INVALC, INVALC,0x4A7A,INVALC,INVALC,INVALC,0x4471,INVALC,INVALC, INVALC,0x4B75,INVALC,0x593B,0x3221,0x436A,INVALC,INVALC, INVALC,INVALC,0x5944,INVALC,INVALC,0x4334,0x593E,0x5945, 0x5940,0x5947,0x5943,INVALC,0x5942,0x476F,INVALC,0x593C, 0x327D,0x593A,0x3571,0x4273,0x5936,INVALC,INVALC,0x5939, 0x3934,0x405B,INVALC,0x3E37,0x5941,0x4752,INVALC,INVALC, 0x3572,0x3348,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3367,0x3F21,0x5949,0x594E, INVALC,0x594A,INVALC,0x377D,INVALC,0x594F,0x3B22,0x3969, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3D26,0x593D, /* Block 100, Array index 0x2000 */ INVALC,0x3B7D,0x594C,INVALC,INVALC,INVALC,INVALC,0x3B58, 0x594D,0x3044,INVALC,INVALC,0x5948,INVALC,INVALC,INVALC, INVALC,0x4429,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3573,INVALC,INVALC,INVALC,INVALC,INVALC,0x3634, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x594B, 0x3027,INVALC,INVALC,0x3A43,INVALC,INVALC,INVALC,0x3F36, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4472,INVALC,INVALC,0x4854,0x5951,0x415E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x422A,INVALC,INVALC,0x3B2B,0x5952,INVALC,0x5954, 0x5950,INVALC,INVALC,INVALC,INVALC,0x4A61,INVALC,0x443D, INVALC,INVALC,INVALC,INVALC,0x415C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A7B, 0x3C4E,0x5960,INVALC,0x595F,INVALC,INVALC,0x3F78,INVALC, INVALC,INVALC,0x377E,INVALC,INVALC,INVALC,0x5959,0x3E39, INVALC,INVALC,0x4668,0x4731,INVALC,INVALC,INVALC,INVALC, 0x5957,INVALC,INVALC,0x415D,INVALC,INVALC,INVALC,INVALC, 0x3C78,0x595C,INVALC,INVALC,0x3E38,INVALC,0x5956,0x595B, INVALC,INVALC,0x4753,INVALC,INVALC,INVALC,0x5955,INVALC, 0x3721,INVALC,INVALC,0x335D,INVALC,INVALC,INVALC,0x595D, 0x4E2B,0x3A4E,0x4335,0x595A,INVALC,0x405C,INVALC,0x3935, 0x3F64,0x3166,0x413C,0x5958,0x3545,INVALC,INVALC,INVALC, INVALC,INVALC,0x3747,INVALC,0x444F,0x595E,INVALC,INVALC, INVALC,INVALC,INVALC,0x415F,INVALC,INVALC,0x5961,INVALC, 0x5963,INVALC,INVALC,0x4237,0x5969,INVALC,0x5964,INVALC, INVALC,0x5966,INVALC,INVALC,INVALC,INVALC,INVALC,0x4941, 0x4473,INVALC,0x5967,INVALC,INVALC,INVALC,0x4D2C,INVALC, INVALC,INVALC,0x4D48,0x3439,INVALC,INVALC,INVALC,INVALC, INVALC,0x302E,INVALC,0x5965,INVALC,INVALC,INVALC,INVALC, INVALC,0x5962,INVALC,INVALC,INVALC,INVALC,0x3478,INVALC, INVALC,INVALC,INVALC,INVALC,0x3167,INVALC,0x5968,INVALC, INVALC,INVALC,0x4D49,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 101, Array index 0x2100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x596C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x423B,INVALC,0x5973, INVALC,INVALC,INVALC,0x596D,INVALC,INVALC,0x596A,0x5971, INVALC,INVALC,INVALC,INVALC,0x5953,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x596E,INVALC, 0x5972,INVALC,INVALC,INVALC,0x4842,0x456B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x596B,INVALC,0x596F,INVALC, INVALC,INVALC,0x3748,INVALC,INVALC,INVALC,0x3A71,INVALC, INVALC,INVALC,0x405D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5977,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4526,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5974, INVALC,0x4B60,INVALC,INVALC,INVALC,INVALC,INVALC,0x5975, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5976,INVALC, 0x4C4E,INVALC,0x4022,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3762,INVALC,INVALC,INVALC,INVALC, 0x597D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3B35,0x597A,INVALC,0x5979,INVALC,INVALC, INVALC,INVALC,0x4732,INVALC,INVALC,INVALC,0x4635,INVALC, INVALC,INVALC,INVALC,INVALC,0x4531,0x597B,INVALC,INVALC, INVALC,0x597C,INVALC,0x496F,INVALC,0x4745,0x3B23,INVALC, 0x4071,INVALC,0x4B50,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3349,INVALC,0x5A25,0x597E,INVALC,INVALC,INVALC, INVALC,0x4D4A,0x5A27,INVALC,INVALC,0x5A23,INVALC,0x5A24, INVALC,INVALC,INVALC,INVALC,INVALC,0x4160,INVALC,INVALC, INVALC,INVALC,0x5A22,INVALC,0x593F,INVALC,INVALC,INVALC, 0x5A26,INVALC,0x5A21,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5A2B,0x5A2C,0x4527,0x5A2E,INVALC,INVALC,0x3B24,0x5A29, INVALC,INVALC,INVALC,INVALC,0x353C,INVALC,INVALC,0x5A2F, INVALC,0x5A28,0x5A33,INVALC,0x5A32,INVALC,0x5A31,INVALC, INVALC,INVALC,0x5A34,INVALC,INVALC,0x5A36,0x3E71,INVALC, /* Block 102, Array index 0x2200 */ 0x5A35,INVALC,INVALC,INVALC,INVALC,0x5A39,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5A37,INVALC,INVALC,INVALC,0x5A38,0x5970,INVALC,INVALC, INVALC,INVALC,INVALC,0x5A3B,0x5A3A,INVALC,INVALC,INVALC, INVALC,INVALC,0x5978,0x5A3C,0x5A30,INVALC,INVALC,0x3B59, INVALC,INVALC,INVALC,INVALC,0x5A3D,0x5A3E,0x5A40,0x5A3F, 0x5A41,0x327E,INVALC,0x3936,INVALC,INVALC,0x4A7C,0x402F, INVALC,INVALC,INVALC,INVALC,INVALC,0x384E,INVALC,INVALC, 0x5A43,INVALC,INVALC,INVALC,INVALC,0x5A46,INVALC,0x4952, INVALC,0x355F,INVALC,INVALC,INVALC,0x5A45,0x5A44,0x4754, 0x5A47,0x3635,INVALC,INVALC,INVALC,0x5A49,0x5A48,INVALC, INVALC,INVALC,0x343A,0x3B36,INVALC,INVALC,0x4658,INVALC, INVALC,INVALC,INVALC,INVALC,0x3749,INVALC,INVALC,INVALC, 0x3F74,INVALC,0x5A4A,INVALC,0x4030,0x4528,INVALC,0x495F, 0x5A4B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5A4C,0x5A4D,INVALC,INVALC,INVALC,0x4A38, 0x555D,0x4046,INVALC,INVALC,0x494C,INVALC,0x3A58,INVALC, 0x4865,0x4843,INVALC,INVALC,INVALC,INVALC,INVALC,0x454D, INVALC,0x4E41,INVALC,0x5A4F,0x3C50,INVALC,INVALC,0x5A50, INVALC,0x3036,INVALC,INVALC,0x3654,0x404D,INVALC,0x4960, INVALC,INVALC,INVALC,0x5A51,0x3B42,0x4347,INVALC,0x3B5B, 0x3F37,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5A52, INVALC,0x4A7D,INVALC,INVALC,0x3177,0x3B5C,INVALC,INVALC, INVALC,0x5A55,INVALC,0x5A53,0x5A56,0x4E39,0x5A54,INVALC, INVALC,INVALC,INVALC,0x407B,0x5A57,INVALC,INVALC,0x4232, INVALC,INVALC,0x5A58,INVALC,INVALC,INVALC,INVALC,0x347A, INVALC,0x5A5A,INVALC,0x5A59,INVALC,INVALC,INVALC,INVALC, 0x5A5B,0x5A5C,0x347B,INVALC,INVALC,0x467C,0x4336,0x356C, 0x3B5D,0x4161,INVALC,INVALC,0x3D5C,0x3030,INVALC,INVALC, INVALC,0x5A5D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3222,0x5A61,INVALC,INVALC,INVALC,INVALC, /* Block 103, Array index 0x2300 */ INVALC,INVALC,0x3937,0x5A60,INVALC,INVALC,0x3A2B,0x3E3A, INVALC,INVALC,0x5A5F,INVALC,0x3E3B,INVALC,0x4C40,0x3A2A, INVALC,INVALC,INVALC,0x3057,0x404E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5A66,INVALC,INVALC,0x4031, 0x3147,INVALC,INVALC,INVALC,INVALC,0x3D55,INVALC,0x4B66, 0x3A72,INVALC,INVALC,INVALC,INVALC,0x3E3C,INVALC,0x4027, INVALC,INVALC,INVALC,INVALC,0x5A65,0x5A63,0x5A64,INVALC, INVALC,INVALC,INVALC,INVALC,0x436B,INVALC,INVALC,0x5B26, INVALC,0x5A6A,0x3B7E,0x3938,0x5A68,INVALC,INVALC,INVALC, INVALC,0x5A69,INVALC,0x3F38,INVALC,INVALC,INVALC,0x5A67, INVALC,INVALC,0x3B2F,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5A6C,0x5A6B,0x5A70, INVALC,INVALC,0x5A71,INVALC,0x5A6D,INVALC,0x3322,0x5A6E, 0x5A6F,0x4855,INVALC,INVALC,INVALC,INVALC,0x4961,0x374A, 0x5A72,INVALC,INVALC,INVALC,0x4032,INVALC,0x3E3D,INVALC, INVALC,INVALC,0x4352,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3647,INVALC,0x5A73,0x5A77,INVALC,INVALC,0x324B, 0x5A74,0x5A76,INVALC,INVALC,INVALC,INVALC,0x5A75,INVALC, INVALC,0x3D6B,INVALC,INVALC,INVALC,INVALC,0x4348,0x3045, 0x5A78,INVALC,INVALC,INVALC,INVALC,0x5A79,INVALC,INVALC, INVALC,INVALC,0x442A,INVALC,INVALC,INVALC,0x4E71,INVALC, INVALC,INVALC,INVALC,0x3B43,INVALC,INVALC,0x4A6B,INVALC, INVALC,INVALC,INVALC,INVALC,0x4B3D,INVALC,INVALC,INVALC, 0x5B22,0x5A7B,INVALC,INVALC,0x5A7E,INVALC,0x5A7D,INVALC, INVALC,0x5A7A,INVALC,INVALC,0x5B21,INVALC,INVALC,0x465E, INVALC,0x5A7C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B23,INVALC, INVALC,0x3D6C,0x5B24,INVALC,0x4D4B,0x4778,INVALC,INVALC, 0x5B25,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B27,INVALC, INVALC,0x5B28,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5B29,INVALC,0x364A,0x3148,0x3939,0x5B2A,INVALC,0x5B2B, 0x3D71,0x4162,INVALC,INVALC,0x5258,0x413E,0x413D,0x4258, /* Block 104, Array index 0x2400 */ 0x3A47,INVALC,INVALC,0x5072,INVALC,INVALC,INVALC,INVALC, 0x376E,0x4D2D,INVALC,0x4A7E,INVALC,0x497E,INVALC,0x5B2C, INVALC,INVALC,INVALC,INVALC,0x3A73,0x443F,0x5B2D,0x4F2F, INVALC,INVALC,INVALC,0x4B3E,INVALC,0x442B,0x5B2E,0x347C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B2F,0x5B30, 0x4C5A,INVALC,0x4C24,0x4B76,0x4B5C,0x3B25,0x5B32,INVALC, INVALC,0x3C6B,INVALC,INVALC,0x4B51,INVALC,0x5B34,0x5B37, 0x5B36,INVALC,0x3479,INVALC,INVALC,0x3560,INVALC,0x5B33, INVALC,0x5B35,INVALC,INVALC,INVALC,INVALC,0x5B38,INVALC, INVALC,0x3F79,INVALC,INVALC,INVALC,INVALC,0x4D7B,0x3049, 0x3A60,0x423C,INVALC,0x3C5D,INVALC,INVALC,0x3E73,INVALC, INVALC,0x5B3B,INVALC,INVALC,0x454E,INVALC,0x5B39,0x422B, 0x5B3A,0x3E72,0x4C5D,0x5B3C,0x5B3D,0x4D68,INVALC,INVALC, INVALC,INVALC,0x5B42,INVALC,INVALC,0x393A,INVALC,0x4755, 0x5B3F,0x456C,0x5A5E,0x5A62,INVALC,0x354F,INVALC,0x4747, INVALC,INVALC,INVALC,INVALC,0x5B41,INVALC,0x3E3E,0x4844, INVALC,INVALC,INVALC,INVALC,INVALC,0x5B47,INVALC,0x487A, INVALC,0x5B3E,INVALC,0x5B44,0x5B43,INVALC,INVALC,INVALC, 0x404F,INVALC,INVALC,INVALC,INVALC,0x4B6D,INVALC,0x4E53, INVALC,INVALC,0x4B67,INVALC,0x324C,0x3B5E,INVALC,INVALC, 0x4F48,0x5B46,0x3F75,INVALC,INVALC,INVALC,0x5B45,INVALC, INVALC,0x5B40,INVALC,INVALC,INVALC,INVALC,INVALC,0x384F, INVALC,INVALC,INVALC,0x5B4C,0x5B4A,INVALC,0x324D,0x5B48, 0x5B4E,0x5B54,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4248,INVALC,INVALC,0x4A41,INVALC,0x5B56,INVALC, INVALC,INVALC,0x4922,INVALC,INVALC,INVALC,0x5B55,0x4770, 0x4B3F,0x343B,INVALC,0x4077,0x3D40,INVALC,INVALC,INVALC, 0x4453,INVALC,0x4D2E,INVALC,INVALC,0x5B51,0x5B50,INVALC, INVALC,INVALC,0x5B52,INVALC,0x5B4F,INVALC,INVALC,0x5B57, INVALC,0x5B4D,INVALC,INVALC,0x5B4B,INVALC,0x5B53,0x5B49, INVALC,0x436C,INVALC,0x4C78,0x3C46,0x3A74,INVALC,INVALC, INVALC,INVALC,INVALC,0x3A3A,INVALC,INVALC,0x4B6F,0x3341, /* Block 105, Array index 0x2500 */ INVALC,INVALC,0x444E,0x464A,0x3149,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4072,INVALC,INVALC,0x4034,0x372A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B59,INVALC, INVALC,0x393B,0x337C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5B5B,0x3374,0x5B61,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5B5E,INVALC,0x4073,INVALC,INVALC,INVALC, 0x334B,0x3A2C,INVALC,INVALC,0x334A,0x3A4F,INVALC,INVALC, 0x5B5C,0x3765,0x374B,0x456D,INVALC,INVALC,0x5B5A,INVALC, 0x3046,INVALC,INVALC,INVALC,INVALC,0x5B5D,0x5B5F,INVALC, 0x364D,0x372C,INVALC,0x343C,0x354B,INVALC,INVALC,INVALC, INVALC,0x5B62,INVALC,INVALC,0x3A79,0x4B71,INVALC,0x3B37, INVALC,INVALC,INVALC,0x5B63,INVALC,INVALC,INVALC,0x4930, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5B6F,INVALC,0x3233,0x5B64, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B75,0x5B65, INVALC,0x4E42,INVALC,0x5B6C,INVALC,0x475F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5B74,INVALC,0x5B67, INVALC,INVALC,INVALC,0x3034,0x5B69,INVALC,INVALC,0x393C, INVALC,INVALC,INVALC,0x5B6B,INVALC,0x5B6A,INVALC,0x5B66, 0x5B71,INVALC,0x3E3F,INVALC,INVALC,INVALC,0x546D,0x3868, 0x4D7C,INVALC,INVALC,INVALC,INVALC,0x5B68,INVALC,0x4474, 0x3323,0x3A2D,INVALC,0x5B60,INVALC,0x5B70,0x3361,INVALC, INVALC,0x5B6E,0x5B72,INVALC,0x456E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x347E,INVALC,0x5C32,INVALC, INVALC,0x4C49,0x5B77,0x347D,INVALC,0x5B7E,INVALC,INVALC, INVALC,INVALC,0x4B40,INVALC,0x5C21,0x5C23,INVALC,0x5C27, 0x5B79,INVALC,0x432A,INVALC,INVALC,INVALC,INVALC,0x456F, 0x5C2B,0x5B7C,INVALC,0x5C28,INVALC,INVALC,INVALC,0x5C22, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3F39,0x5C2C, INVALC,INVALC,0x4033,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5C2A,0x343D,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 106, Array index 0x2600 */ 0x4F50,0x5B76,INVALC,INVALC,0x5C26,0x3058,INVALC,INVALC, 0x5B78,INVALC,INVALC,0x4C3A,0x5B7D,0x3F22,0x4447,0x5B73, INVALC,INVALC,0x5C25,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3F7A,0x5C2F,0x3371,0x3821,INVALC,INVALC,INVALC, INVALC,0x5C31,0x5B7A,0x5C30,INVALC,0x5C29,0x5B7B,INVALC, 0x5C2D,INVALC,0x5C2E,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5C3F,INVALC,INVALC,INVALC,0x464E,INVALC,0x5C24,INVALC, INVALC,0x5C3B,INVALC,INVALC,INVALC,0x5C3D,INVALC,0x4458, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4D4C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4976,0x5C38,0x424A,INVALC,INVALC, INVALC,0x5C3E,0x413F,INVALC,0x5C35,0x5C42,0x5C41,INVALC, 0x466F,0x5C40,0x466A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5C44,0x5C37,INVALC,0x3648,0x5C3A,0x3D5D, INVALC,INVALC,INVALC,0x4760,0x5C3C,0x364B,INVALC,0x5C34, 0x5C36,0x5C33,INVALC,INVALC,0x4F30,0x335A,0x5C39,INVALC, INVALC,0x5C43,0x3335,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3A67,INVALC,INVALC,INVALC,0x315D,INVALC, INVALC,0x5C54,INVALC,INVALC,0x4F31,0x5C57,INVALC,INVALC, INVALC,INVALC,INVALC,0x3F3A,0x5C56,INVALC,INVALC,INVALC, 0x5C55,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C52, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C46,INVALC, INVALC,0x5C63,0x5C45,INVALC,0x5C58,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5C50,INVALC,INVALC,0x5C4B,0x5C48, INVALC,0x5C49,INVALC,0x5C51,INVALC,INVALC,INVALC,0x7422, INVALC,INVALC,0x5C4E,0x393D,0x4448,0x4164,0x5C4C,INVALC, 0x5C47,INVALC,INVALC,0x5C4A,INVALC,INVALC,INVALC,INVALC, 0x4D4D,0x4B6A,INVALC,INVALC,INVALC,0x5C4F,0x5C59,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C61, 0x5C5A,INVALC,INVALC,0x5C67,INVALC,0x5C65,INVALC,INVALC, INVALC,INVALC,0x5C60,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5C5F,INVALC,0x4450,INVALC,0x4165,INVALC,0x5C5D, /* Block 107, Array index 0x2700 */ INVALC,INVALC,0x5C5B,INVALC,INVALC,0x5C62,INVALC,INVALC, INVALC,INVALC,0x5C68,0x4875,0x5C6E,INVALC,INVALC,INVALC, INVALC,INVALC,0x5C69,0x5C6C,0x5C66,INVALC,INVALC,0x4374, INVALC,0x4938,INVALC,0x5C5C,INVALC,INVALC,0x5C64,0x3E40, INVALC,0x4C4F,0x5C78,0x5C6B,INVALC,INVALC,INVALC,INVALC, INVALC,0x3822,0x3223,0x335F,INVALC,INVALC,0x5C53,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3E41,0x5C70,INVALC, 0x5C77,0x3C79,0x3372,INVALC,INVALC,0x432E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5C6D,INVALC,INVALC,0x5C72, 0x5C76,INVALC,INVALC,0x3636,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x354C,0x5C74,INVALC,INVALC,INVALC,INVALC,INVALC,0x3521, INVALC,0x464B,0x5C73,INVALC,INVALC,INVALC,0x5C75,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5C6F,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5C71,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3360, 0x4349,INVALC,INVALC,INVALC,0x5C7C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5C7A,0x3869,INVALC, 0x5C79,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5D21, INVALC,INVALC,INVALC,INVALC,0x5B58,INVALC,INVALC,INVALC, 0x5C7B,INVALC,0x5C7D,0x5C7E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5D2C,INVALC,0x5D28,INVALC,0x5B6D,INVALC, INVALC,INVALC,INVALC,0x5D27,INVALC,INVALC,INVALC,INVALC, 0x5D26,INVALC,INVALC,0x5D23,INVALC,INVALC,INVALC,INVALC, INVALC,0x5C6A,0x5D25,0x5D24,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5D2A,INVALC,0x4F26,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5D2D,0x367B,INVALC,INVALC,0x5D29,0x5D2B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4827,INVALC,0x5D2E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5D32,0x5D2F,INVALC,INVALC,INVALC,INVALC, /* Block 108, Array index 0x2800 */ INVALC,INVALC,INVALC,INVALC,0x4D73,0x5D30,INVALC,INVALC, INVALC,INVALC,0x5C5E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5D33,INVALC,INVALC,INVALC,0x5D34,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3135,INVALC,0x5D36, 0x3767,0x3C21,INVALC,0x3655,INVALC,INVALC,INVALC,0x3224, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4D5F,INVALC,INVALC,INVALC,INVALC,0x5D38, 0x5D37,0x5D3A,0x353D,INVALC,INVALC,0x3656,0x343E,INVALC, INVALC,INVALC,INVALC,0x5D3D,INVALC,INVALC,INVALC,0x5D3C, INVALC,0x5D3E,INVALC,INVALC,0x324E,INVALC,0x4337,INVALC, 0x5D3F,INVALC,INVALC,0x343F,0x5D41,INVALC,INVALC,INVALC, INVALC,0x5D40,INVALC,0x5D42,INVALC,INVALC,INVALC,0x5D43, INVALC,0x5D44,0x3B5F,0x4035,0x3A21,INVALC,0x4970,INVALC, INVALC,0x4A62,0x4F44,INVALC,INVALC,INVALC,INVALC,0x3B75, INVALC,INVALC,INVALC,0x3A50,0x4E72,INVALC,INVALC,INVALC, 0x5D45,0x5D46,INVALC,0x3B60,INVALC,INVALC,INVALC,0x5D47, 0x5D48,INVALC,INVALC,0x5D4A,0x5D49,INVALC,0x4B58,INVALC, INVALC,0x3D5E,0x3C6C,0x3B44,INVALC,0x5D4B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5D4D,0x3F23,INVALC, 0x5D4C,INVALC,INVALC,INVALC,INVALC,INVALC,0x5D4E,INVALC, INVALC,INVALC,INVALC,INVALC,0x5D4F,INVALC,INVALC,INVALC, INVALC,INVALC,0x5D50,0x5D51,INVALC,INVALC,INVALC,0x5D52, INVALC,0x5D54,0x5D53,0x5D55,0x3225,0x434A,INVALC,0x5D56, INVALC,INVALC,0x3B26,0x334C,0x5D57,INVALC,INVALC,0x4542, 0x544C,INVALC,INVALC,INVALC,INVALC,0x3523,0x5D58,INVALC, INVALC,INVALC,INVALC,0x5D59,INVALC,0x4A6C,0x4B68,INVALC, INVALC,INVALC,0x4647,0x5D5A,0x4866,INVALC,INVALC,INVALC, 0x487B,INVALC,INVALC,0x4C53,INVALC,INVALC,INVALC,0x5D5B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5D5D,0x5D5C,INVALC,INVALC,0x5D5F, INVALC,INVALC,INVALC,0x5D5E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 109, Array index 0x2900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5D61,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3B61, INVALC,0x4C31,INVALC,0x5D62,0x5D63,INVALC,INVALC,0x3524, INVALC,INVALC,INVALC,0x5D64,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5D66,0x5D65,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3F65,INVALC,INVALC,0x4939, 0x314A,INVALC,INVALC,INVALC,INVALC,INVALC,0x4845,INVALC, 0x4475,0x3D41,0x3561,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4846,INVALC, 0x3C2E,INVALC,INVALC,INVALC,INVALC,0x5D68,INVALC,0x3440, INVALC,INVALC,0x3178,INVALC,INVALC,0x4672,0x5D67,0x393E, 0x4353,INVALC,0x5D69,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5D71,INVALC,0x5D6A,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4241,INVALC,0x3562,0x5D72,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3768,INVALC,INVALC,0x3525,0x5D70,INVALC, INVALC,0x5D6E,0x5D6B,0x4D60,INVALC,INVALC,INVALC,INVALC, 0x4440,INVALC,INVALC,INVALC,0x4659,0x5D6C,INVALC,INVALC, 0x5D74,INVALC,0x5D73,0x3723,INVALC,INVALC,0x322D,INVALC, INVALC,0x3A3B,0x5D6D,0x5D6F,INVALC,INVALC,INVALC,INVALC, INVALC,0x4B57,0x4274,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4B77,INVALC,INVALC,0x5D7C,INVALC, INVALC,0x5D7D,INVALC,0x324F,INVALC,INVALC,INVALC,INVALC, 0x4A28,0x4C7D,0x5E21,0x3C23,0x3E42,0x5D78,0x5D7E,0x3168, INVALC,0x3637,INVALC,INVALC,0x5D75,0x5D7A,INVALC,INVALC, INVALC,0x4074,0x4771,INVALC,0x4867,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5D77,INVALC,0x4B21,INVALC,0x5D79, INVALC,0x5E24,INVALC,0x5E22,INVALC,0x5D7B,INVALC,INVALC, INVALC,0x4B22,0x4748,0x3563,INVALC,0x4525,INVALC,INVALC, 0x436D,INVALC,0x5E25,INVALC,INVALC,INVALC,INVALC,0x5E23, 0x4259,0x5D76,INVALC,0x314B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 110, Array index 0x2A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4D4E,0x5E30,INVALC,INVALC,INVALC, INVALC,INVALC,0x5E2F,INVALC,INVALC,INVALC,INVALC,0x4076, INVALC,0x5E2C,INVALC,0x4D6C,INVALC,INVALC,0x4636,0x5E26, INVALC,INVALC,INVALC,INVALC,INVALC,0x4445,INVALC,INVALC, INVALC,0x314C,0x393F,0x5E29,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3D27,0x5E2E,INVALC,0x5E2D,0x5E28,INVALC, 0x5E2B,INVALC,INVALC,0x3368,INVALC,0x5E2A,0x4749,INVALC, INVALC,0x4E2E,INVALC,INVALC,0x3E74,0x4075,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5E36,0x5E34,INVALC,0x494D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5E31,0x5E33,INVALC,0x313A,INVALC, INVALC,0x3940,0x4F32,INVALC,0x333D,INVALC,0x4962,INVALC, INVALC,INVALC,INVALC,INVALC,0x4D61,INVALC,INVALC,0x3324, 0x3F3B,0x5E35,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5E3A,INVALC,INVALC, 0x3E43,INVALC,INVALC,INVALC,0x4D30,INVALC,0x5E37,INVALC, INVALC,INVALC,INVALC,0x5E32,INVALC,0x5E38,INVALC,INVALC, INVALC,0x4E5E,INVALC,0x4573,0x4642,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3336, INVALC,INVALC,0x3155,INVALC,INVALC,0x5E3E,INVALC,INVALC, 0x5E41,INVALC,INVALC,INVALC,0x4E43,INVALC,INVALC,INVALC, 0x4D64,INVALC,INVALC,INVALC,INVALC,0x5E48,0x5E42,0x5E3F, INVALC,INVALC,INVALC,0x4E54,0x5E45,INVALC,INVALC,INVALC, INVALC,0x3D4A,0x5E47,INVALC,INVALC,0x5E4C,INVALC,INVALC, 0x4571,0x5E4A,INVALC,INVALC,INVALC,INVALC,0x5E44,INVALC, INVALC,0x4338,INVALC,INVALC,0x5E4B,INVALC,0x5E40,INVALC, 0x5E46,INVALC,0x5E4D,0x307C,0x5E43,INVALC,0x5E4E,INVALC, INVALC,0x3F3C,INVALC,0x3D5F,INVALC,0x4A25,INVALC,0x3A2E, INVALC,0x5E3B,0x5E49,0x453A,INVALC,INVALC,INVALC,INVALC, /* Block 111, Array index 0x2B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,0x4036,INVALC,0x3369, 0x3A51,0x3E44,0x5E3D,0x3D42,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x374C,INVALC,0x5E3C,INVALC,INVALC, INVALC,0x5E52,0x3D6D,0x383A,INVALC,0x5E61,INVALC,0x5E5B, 0x3574,0x454F,INVALC,0x5E56,0x5E5F,0x302F,0x3132,INVALC, INVALC,0x3239,INVALC,0x5E58,0x422C,0x5E4F,0x5E51,0x3941, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5E62,INVALC,0x5E5D,INVALC,INVALC,INVALC,0x5E55,INVALC, INVALC,INVALC,INVALC,0x5E5C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4C2B,INVALC,INVALC,0x5E5A,0x5E5E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3850,INVALC, 0x3E45,INVALC,INVALC,0x4339,INVALC,INVALC,INVALC,0x5E54, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4D2F, INVALC,INVALC,INVALC,0x5E57,INVALC,INVALC,0x5E50,0x4572, INVALC,INVALC,0x5E53,INVALC,INVALC,INVALC,0x5E59,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4F51,0x3C3E, 0x4B7E,INVALC,0x5E63,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x482E,INVALC,INVALC,0x5E6F, 0x383B,INVALC,INVALC,INVALC,INVALC,INVALC,0x3D60,INVALC, 0x5E65,INVALC,INVALC,INVALC,0x4E2F,0x3942,INVALC,0x5E72, INVALC,INVALC,0x306E,INVALC,INVALC,0x5E70,INVALC,INVALC, INVALC,INVALC,0x5E64,INVALC,INVALC,INVALC,INVALC,0x5E6A, INVALC,INVALC,0x5E6C,INVALC,INVALC,INVALC,0x4D4F,0x5E67, INVALC,INVALC,0x452E,INVALC,INVALC,0x5E69,INVALC,INVALC, INVALC,INVALC,0x5E71,INVALC,0x5E6B,0x4C47,INVALC,INVALC, INVALC,0x5E66,INVALC,0x3C22,0x5E7E,INVALC,INVALC,INVALC, INVALC,0x336A,INVALC,0x5E68,0x5E6D,0x5E6E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x426C,0x425A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5E76,INVALC,INVALC,0x5E7C, INVALC,INVALC,0x5E7A,INVALC,0x4529,INVALC,INVALC,0x5F23, 0x5E77,INVALC,INVALC,INVALC,INVALC,INVALC,0x5E78,0x5E60, /* Block 112, Array index 0x2C00 */ INVALC,0x3579,0x493A,INVALC,INVALC,INVALC,0x3C3F,INVALC, INVALC,0x3977,INVALC,INVALC,INVALC,INVALC,INVALC,0x4F33, INVALC,0x5E74,INVALC,0x5F22,0x3169,0x4166,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4779,INVALC,0x3441,0x4E7A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4C21,0x4452,INVALC,INVALC,INVALC, INVALC,0x5E7B,0x5E7D,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4132,INVALC,INVALC,INVALC,INVALC,INVALC,0x5F21,0x5E79, INVALC,0x5E73,INVALC,INVALC,INVALC,0x3443,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3769,INVALC,INVALC,INVALC, 0x5F2F,INVALC,INVALC,0x5F2A,0x4078,INVALC,INVALC,0x3363, INVALC,INVALC,INVALC,INVALC,0x3D61,INVALC,0x5F33,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5F2C,0x442C,0x5F29, 0x4459,INVALC,INVALC,INVALC,0x5F4C,INVALC,INVALC,INVALC, 0x5F26,INVALC,0x5F25,INVALC,0x5F2E,INVALC,INVALC,INVALC, 0x5F28,0x5F27,0x5F2D,INVALC,0x4021,INVALC,0x5F24,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5F30,INVALC, INVALC,0x5F31,INVALC,INVALC,INVALC,INVALC,INVALC,0x3442, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5F36,INVALC,0x5F35,0x5F37,INVALC,INVALC,INVALC, INVALC,INVALC,0x5F3A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4543,INVALC,0x5F34,INVALC,INVALC,INVALC,INVALC, INVALC,0x5F38,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3763,0x4279,0x5F32,0x473B,INVALC,INVALC,0x5F39,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5F3E,0x5F3C,INVALC,INVALC, 0x5F3F,INVALC,INVALC,0x5F42,INVALC,INVALC,INVALC,0x5F3B, 0x396A,0x4728,INVALC,INVALC,0x5E39,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4D74,0x5F3D,INVALC,0x5F41,0x4275, INVALC,0x5F40,INVALC,0x5F2B,INVALC,INVALC,0x6F69,INVALC, INVALC,INVALC,0x5F45,INVALC,INVALC,INVALC,0x5F49,INVALC, /* Block 113, Array index 0x2D00 */ INVALC,0x5F47,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5F43,INVALC,0x5F44,INVALC,INVALC,INVALC,0x5F48, INVALC,0x5F46,INVALC,INVALC,INVALC,0x494E,INVALC,INVALC, 0x5F4E,INVALC,0x5F4B,0x5F4A,INVALC,0x5F4D,0x4654,0x5F4F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4375,0x426D, INVALC,INVALC,INVALC,INVALC,0x4025,INVALC,INVALC,INVALC, 0x5F50,INVALC,0x5F52,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5F51,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5E75,INVALC,INVALC,INVALC, INVALC,0x5F53,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4667,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5F54,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3250,INVALC,INVALC,INVALC,0x4574, 0x3325,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3564,INVALC,INVALC,INVALC,0x3C5E,0x3A52,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4F27,0x3F66,INVALC,INVALC,INVALC,0x316A,INVALC, INVALC,INVALC,0x5F56,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5F55,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5F59,0x433A,0x5F5C,0x5F57, INVALC,INVALC,INVALC,0x5F5B,INVALC,INVALC,INVALC,INVALC, 0x5F5A,0x4540,0x3059,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4E75,INVALC,INVALC,0x5F5E,INVALC,INVALC,INVALC,0x3128, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5F60,INVALC,INVALC,INVALC,0x5F5F,INVALC,0x5F5D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5F58,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4B23,INVALC,INVALC,INVALC,0x5F62,INVALC,INVALC, /* Block 114, Array index 0x2E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5F61,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x316B,INVALC,INVALC,INVALC, INVALC,0x5F64,0x4A32,INVALC,0x5F63,INVALC,INVALC,INVALC, INVALC,0x4C35,INVALC,INVALC,INVALC,INVALC,0x3E47,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4133,INVALC, INVALC,INVALC,INVALC,INVALC,0x3E46,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4E7B,INVALC,INVALC,0x5F6A,INVALC,0x4079,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5F66,0x5F6B,INVALC, INVALC,0x316C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5F69,INVALC,0x4761,0x5F65,0x5F68,0x3E48, INVALC,0x4851,INVALC,INVALC,0x5F6C,INVALC,0x3C51,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x407A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5F6F,INVALC,INVALC,INVALC, 0x5F67,INVALC,0x3727,INVALC,INVALC,INVALC,INVALC,0x5F6D, INVALC,INVALC,INVALC,INVALC,0x4D50,0x5F70,INVALC,INVALC, INVALC,0x7426,INVALC,INVALC,INVALC,INVALC,INVALC,0x3D4F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5F71,INVALC,INVALC,INVALC,0x5F72,INVALC,INVALC,INVALC, INVALC,0x472E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5F74,INVALC,INVALC,INVALC,INVALC,0x5F75,INVALC, INVALC,INVALC,INVALC,0x4733,INVALC,INVALC,INVALC,INVALC, 0x4575,0x5F77,INVALC,INVALC,INVALC,INVALC,0x5F79,INVALC, 0x4E55,INVALC,0x5F76,INVALC,0x5F78,0x316D,INVALC,0x5F73, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x535B, 0x5F7A,INVALC,INVALC,INVALC,INVALC,0x4167,0x3B38,0x5F7C, INVALC,INVALC,INVALC,INVALC,0x5F7B,0x3F24,0x5259,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5F7D,INVALC,INVALC, INVALC,0x6021,INVALC,0x5F6E,0x5F7E,INVALC,INVALC,0x6022, /* Block 115, Array index 0x2F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x477A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6023,INVALC,INVALC, 0x6024,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6025,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6026,INVALC,0x445E,INVALC,0x6028,0x6027,INVALC,INVALC, 0x6029,INVALC,0x602A,INVALC,INVALC,0x3C5F,0x4963,INVALC, INVALC,INVALC,0x4C6C,0x602B,0x602C,0x4156,0x3C24,0x602D, 0x602E,INVALC,INVALC,INVALC,INVALC,INVALC,0x602F,0x4A52, 0x4847,INVALC,INVALC,0x6030,0x4757,INVALC,INVALC,INVALC, INVALC,INVALC,0x442D,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6031,0x3267,INVALC,0x356D,INVALC,0x4C46,INVALC,0x4C36, INVALC,0x3234,0x4F34,INVALC,INVALC,INVALC,INVALC,0x4B52, INVALC,0x4A2A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4037,INVALC,0x6032,INVALC,INVALC,INVALC, INVALC,0x4643,INVALC,INVALC,INVALC,0x3823,0x6033,INVALC, 0x3A54,0x6035,0x6034,INVALC,INVALC,INVALC,INVALC,0x6036, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6037,INVALC,INVALC,INVALC,0x6038,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x353E,INVALC,0x6039,INVALC,INVALC,INVALC,INVALC,0x603A, INVALC,INVALC,INVALC,INVALC,0x3824,INVALC,INVALC,0x4848, INVALC,INVALC,0x603C,INVALC,INVALC,INVALC,0x3E75,INVALC, INVALC,0x603B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3638,0x603D,0x603F,INVALC,0x603E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6040,INVALC, 0x3851,INVALC,0x6041,INVALC,INVALC,INVALC,INVALC,0x3669, INVALC,0x4140,INVALC,0x397D,INVALC,INVALC,INVALC,INVALC, 0x6043,0x6044,0x6042,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3C6D,INVALC,INVALC,0x4648,0x3639,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6046, 0x432C,0x6045,INVALC,INVALC,0x4F35,0x4762,INVALC,INVALC, /* Block 116, Array index 0x3000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6049,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x604B,0x6048, INVALC,INVALC,INVALC,0x4C54,0x604A,0x604C,INVALC,0x4E44, INVALC,INVALC,INVALC,INVALC,INVALC,0x6050,INVALC,INVALC, INVALC,0x604F,0x4376,0x472D,INVALC,INVALC,0x3825,0x604E, INVALC,INVALC,INVALC,INVALC,0x604D,INVALC,0x4D31,0x4D32, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6051,0x316E, INVALC,INVALC,INVALC,INVALC,0x3976,0x3B62,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6052,0x6053, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6055, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3D43,INVALC,INVALC,INVALC,INVALC, 0x6057,INVALC,0x6056,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6058,INVALC,0x334D,INVALC,INVALC,0x605A,INVALC,INVALC, 0x6059,INVALC,0x605C,0x605B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x383C,INVALC,INVALC,0x4E28, INVALC,0x364C,INVALC,0x3226,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x366A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3461,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4E68,0x605E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6060,INVALC,INVALC,INVALC,INVALC, 0x6061,INVALC,0x3251,INVALC,INVALC,INVALC,INVALC,INVALC, 0x605D,INVALC,0x3B39,INVALC,INVALC,0x4441,0x605F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6064,INVALC, 0x3C6E,INVALC,INVALC,INVALC,INVALC,0x6062,INVALC,INVALC, INVALC,INVALC,0x373E,INVALC,INVALC,0x4849,0x6063,INVALC, INVALC,0x607E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6069,INVALC,INVALC,INVALC,INVALC,INVALC,0x383D,INVALC, /* Block 117, Array index 0x3100 */ INVALC,INVALC,INVALC,0x3565,INVALC,0x6066,0x4D7D,INVALC, INVALC,0x4E30,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4276,INVALC,INVALC,0x6068,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x606A,0x4E56,0x3657,0x487C,0x474A,INVALC, INVALC,INVALC,0x606B,INVALC,INVALC,INVALC,INVALC,0x606D, INVALC,0x6070,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x606C,INVALC,INVALC, INVALC,0x606F,0x386A,0x314D,0x6071,INVALC,0x3F70,0x606E, 0x4E5C,INVALC,INVALC,0x6074,0x7424,INVALC,INVALC,INVALC, INVALC,0x6072,0x6075,INVALC,INVALC,INVALC,INVALC,0x6067, 0x6073,INVALC,INVALC,0x3A3C,INVALC,INVALC,0x6076,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6077,INVALC, INVALC,INVALC,INVALC,0x4D7E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6078,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6079,INVALC, INVALC,INVALC,0x6065,INVALC,INVALC,INVALC,INVALC,0x607A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3444,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3C25,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x607B,INVALC,INVALC,INVALC,INVALC,0x607C, INVALC,INVALC,INVALC,INVALC,0x607D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x313B,INVALC,INVALC,INVALC, 0x6121,INVALC,0x493B,0x6122,INVALC,INVALC,0x3424,0x6123, INVALC,0x6124,INVALC,INVALC,INVALC,INVALC,0x6125,INVALC, 0x6127,0x6128,0x6126,INVALC,INVALC,INVALC,0x4953,0x612A, 0x6129,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 118, Array index 0x3200 */ INVALC,INVALC,INVALC,0x612C,0x612B,0x612D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x612E,0x6130,0x612F,INVALC, INVALC,0x3979,INVALC,0x6132,INVALC,0x6131,INVALC,INVALC, 0x3445,INVALC,0x3F53,INVALC,0x453C,INVALC,0x6133,0x4038, INVALC,INVALC,INVALC,0x3B3A,INVALC,0x3179,0x6134,INVALC, 0x4D51,INVALC,INVALC,0x4A63,0x6135,INVALC,INVALC,INVALC, 0x4544,0x4D33,0x3943,0x3F3D,INVALC,INVALC,INVALC,0x434B, 0x5234,INVALC,0x442E,0x3268,0x6136,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6137,INVALC,0x613C,INVALC, INVALC,0x613A,0x6139,0x5A42,0x3326,0x6138,INVALC,0x305A, INVALC,0x482A,INVALC,INVALC,0x484A,INVALC,INVALC,INVALC, INVALC,0x4E31,0x613D,0x613B,0x435C,0x4026,INVALC,INVALC, 0x482B,INVALC,0x492D,INVALC,0x613F,0x4E2C,0x374D,0x6140, INVALC,0x613E,0x4856,0x6141,INVALC,0x6142,INVALC,INVALC, 0x305B,INVALC,INVALC,0x3E76,0x6147,INVALC,0x6144,0x466D, 0x6143,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3526, INVALC,INVALC,0x614A,INVALC,INVALC,INVALC,0x6145,0x6146, INVALC,0x6149,0x6148,0x4925,INVALC,INVALC,0x4142,0x4141, INVALC,0x353F,INVALC,INVALC,0x614B,INVALC,INVALC,INVALC, INVALC,INVALC,0x614C,INVALC,INVALC,0x614D,INVALC,INVALC, INVALC,INVALC,INVALC,0x614F,INVALC,0x614E,INVALC,INVALC, INVALC,INVALC,INVALC,0x3156,INVALC,INVALC,INVALC,INVALC, INVALC,0x6157,0x4868,0x6151,INVALC,0x6153,INVALC,INVALC, 0x6155,0x3F3E,INVALC,INVALC,0x6156,0x6154,0x3C40,INVALC, INVALC,INVALC,0x6150,0x6152,INVALC,0x4942,INVALC,0x3E49, INVALC,INVALC,0x6159,INVALC,INVALC,0x6158,INVALC,INVALC, INVALC,INVALC,0x615A,INVALC,0x3C26,0x3A2F,INVALC,INVALC, 0x4577,0x615B,INVALC,0x444B,INVALC,INVALC,0x615D,INVALC, INVALC,INVALC,0x4E21,0x615C,INVALC,INVALC,INVALC,INVALC, INVALC,0x4169,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6162,INVALC,0x6164,0x6165,0x4354,INVALC,INVALC,INVALC, INVALC,INVALC,0x6163,INVALC,0x6160,INVALC,0x615E,0x615F, /* Block 119, Array index 0x3300 */ INVALC,0x6161,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6168,INVALC,0x6166,INVALC,0x6167,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6169, 0x616B,0x616C,0x616D,INVALC,0x616E,INVALC,INVALC,0x616A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6170,INVALC,INVALC,INVALC,0x616F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6171,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4E45,INVALC,INVALC,INVALC,0x6174,0x6172, 0x6173,INVALC,INVALC,INVALC,0x3462,INVALC,INVALC,INVALC, INVALC,INVALC,0x4C7E,INVALC,INVALC,INVALC,0x4A4A,INVALC, 0x6176,INVALC,INVALC,INVALC,0x6175,INVALC,INVALC,INVALC, INVALC,0x6177,0x6178,INVALC,INVALC,INVALC,INVALC,0x617C, 0x6179,0x617A,0x617B,INVALC,0x617D,INVALC,INVALC,INVALC, 0x617E,INVALC,0x6221,INVALC,INVALC,INVALC,0x6222,INVALC, 0x6223,INVALC,0x482F,0x4550,0x6224,0x4772,0x4934,INVALC, 0x6225,INVALC,INVALC,0x6226,0x452A,INVALC,0x3327,0x3944, 0x6227,INVALC,INVALC,0x6228,INVALC,INVALC,0x6229,INVALC, 0x3B29,INVALC,INVALC,0x622B,INVALC,INVALC,0x622A,INVALC, INVALC,0x622C,0x622D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4869,INVALC, 0x622E,INVALC,INVALC,INVALC,0x622F,INVALC,INVALC,0x7369, 0x6230,0x6231,0x6232,INVALC,INVALC,INVALC,INVALC,0x3B2E, INVALC,INVALC,0x6233,0x4756,INVALC,INVALC,0x4B5F,INVALC, 0x314E,INVALC,0x3157,INVALC,INVALC,0x6234,INVALC,INVALC, INVALC,INVALC,0x6236,INVALC,INVALC,INVALC,0x6235,0x4570, INVALC,INVALC,INVALC,0x4039,0x5D39,INVALC,0x6237,0x4C41, INVALC,0x6238,INVALC,0x3446,0x4857,0x6239,INVALC,0x623A, INVALC,INVALC,0x623B,INVALC,INVALC,INVALC,0x4C5C,INVALC, INVALC,INVALC,0x4C55,INVALC,0x443E,INVALC,INVALC,INVALC, 0x416A,INVALC,INVALC,0x623D,INVALC,INVALC,0x3D62,INVALC, /* Block 120, Array index 0x3400 */ INVALC,0x3E4A,INVALC,INVALC,0x6240,INVALC,INVALC,0x623F, 0x623E,0x487D,INVALC,0x3447,0x3829,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6246,INVALC,INVALC,0x6243,0x3F3F, 0x4C32,INVALC,INVALC,INVALC,0x6242,0x6244,0x6245,INVALC, INVALC,0x6241,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6247, 0x6248,INVALC,0x442F,INVALC,0x3463,INVALC,INVALC,INVALC, 0x4365,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6249, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x624A,0x624D,INVALC,INVALC,INVALC,INVALC, INVALC,0x3F67,INVALC,0x4644,INVALC,0x624E,0x4B53,INVALC, 0x624B,INVALC,INVALC,0x624C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6251,INVALC,INVALC,INVALC,INVALC,0x6250,0x624F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6253,INVALC,INVALC,0x6252,INVALC, INVALC,0x6254,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6256,INVALC, 0x6255,INVALC,INVALC,INVALC,INVALC,0x4A4D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3D56,0x4E46,INVALC,INVALC, 0x6257,INVALC,INVALC,0x4637,INVALC,INVALC,0x6258,INVALC, INVALC,0x6259,INVALC,0x625D,0x625B,0x625C,INVALC,0x625A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x625E, INVALC,INVALC,INVALC,INVALC,INVALC,0x625F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6260, INVALC,INVALC,0x6261,0x4C37,0x6262,INVALC,INVALC,INVALC, INVALC,INVALC,0x4C70,0x6263,INVALC,0x434E,INVALC,0x476A, INVALC,0x366B,INVALC,INVALC,INVALC,0x433B,0x6264,0x363A, INVALC,INVALC,INVALC,0x4050,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6265,INVALC,INVALC,INVALC, /* Block 121, Array index 0x3500 */ INVALC,INVALC,0x3A3D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6266,INVALC,INVALC,INVALC, INVALC,INVALC,0x6267,INVALC,0x3826,0x3A55,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6269,INVALC,INVALC,INVALC,INVALC,0x4556,0x3A56,0x354E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4B24,INVALC,0x474B,INVALC,INVALC,INVALC, INVALC,INVALC,0x4557,INVALC,INVALC,INVALC,INVALC,0x395C, INVALC,INVALC,INVALC,INVALC,INVALC,0x626B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3E4B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4E32,0x3945,INVALC,INVALC,0x3827, INVALC,INVALC,0x4823,INVALC,0x626D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x626F,INVALC,INVALC,INVALC, INVALC,0x386B,INVALC,INVALC,INVALC,INVALC,0x626E,0x4476, INVALC,INVALC,INVALC,INVALC,0x6271,0x3337,0x626C,INVALC, INVALC,0x486A,INVALC,0x3130,INVALC,0x3A6C,INVALC,0x4F52, INVALC,INVALC,0x6270,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6272,INVALC,INVALC,INVALC,0x4A4B, INVALC,0x4059,0x6274,INVALC,INVALC,INVALC,INVALC,0x6275, INVALC,INVALC,INVALC,INVALC,INVALC,0x6273,INVALC,INVALC, INVALC,INVALC,0x334E,INVALC,0x627B,INVALC,0x627A,INVALC, INVALC,0x3C27,INVALC,INVALC,INVALC,0x627C,0x6277,INVALC, INVALC,INVALC,0x627D,0x6278,INVALC,INVALC,INVALC,INVALC, 0x4858,0x6276,INVALC,INVALC,0x6279,INVALC,INVALC,INVALC, INVALC,INVALC,0x6322,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6321, 0x4B61,INVALC,INVALC,INVALC,0x627E,INVALC,INVALC,0x306B, INVALC,INVALC,INVALC,INVALC,0x6324,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6323,INVALC,INVALC, /* Block 122, Array index 0x3600 */ INVALC,0x3E4C,INVALC,INVALC,INVALC,INVALC,INVALC,0x6325, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4143,INVALC, INVALC,0x6327,0x6326,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6328,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6268,INVALC, INVALC,INVALC,0x626A,0x632A,0x6329,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3C28,INVALC,0x4E69,INVALC,0x3C52,INVALC, 0x632B,0x3737,INVALC,INVALC,INVALC,INVALC,INVALC,0x3540, 0x3527,0x3B63,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4D34,INVALC,INVALC,0x6331,INVALC,0x6330,0x4144,0x632D, INVALC,INVALC,0x632F,INVALC,INVALC,0x3D4B,0x3F40,0x632E, 0x632C,INVALC,0x472A,INVALC,INVALC,0x3E4D,INVALC,INVALC, 0x493C,INVALC,INVALC,INVALC,INVALC,0x3A57,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4578, INVALC,INVALC,0x6332,INVALC,INVALC,INVALC,INVALC,0x6333, 0x6349,0x3658,INVALC,INVALC,0x4F3D,0x4135,INVALC,INVALC, INVALC,INVALC,0x6334,INVALC,INVALC,0x3252,0x4477,0x4A21, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6335,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x357A,0x6336, INVALC,INVALC,0x6338,INVALC,INVALC,INVALC,0x6339,INVALC, 0x4729,INVALC,INVALC,0x633A,INVALC,INVALC,INVALC,INVALC, INVALC,0x633B,0x633C,INVALC,INVALC,0x3659,0x3253,0x4645, 0x3D28,0x3B64,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x633D,INVALC,0x3D29,INVALC,INVALC,INVALC,INVALC, INVALC,0x324A,0x4943,INVALC,INVALC,0x633E,INVALC,INVALC, 0x486B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4145, INVALC,0x6341,INVALC,0x6342,0x4769,INVALC,0x3F41,0x633F, INVALC,0x4361,INVALC,INVALC,0x6340,INVALC,INVALC,INVALC, 0x3E4E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x305C,INVALC,INVALC,INVALC,INVALC, /* Block 123, Array index 0x3700 */ 0x3529,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6343,INVALC,INVALC,0x4478,INVALC,0x6344,0x4047,INVALC, INVALC,INVALC,INVALC,INVALC,0x4C2D,INVALC,INVALC,0x4923, 0x6345,0x6346,0x4355,INVALC,0x4E47,INVALC,INVALC,0x6348, 0x6347,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3C6F,INVALC, INVALC,0x634A,0x3070,INVALC,INVALC,INVALC,INVALC,0x634D, INVALC,INVALC,INVALC,0x634B,0x3254,0x374E,0x634C,0x3946, 0x3972,INVALC,0x4A66,0x634E,INVALC,INVALC,0x4B54,INVALC, INVALC,0x6350,INVALC,INVALC,INVALC,0x4051,0x314F,0x323A, 0x302C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x634F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6351,0x6352,0x3E77,INVALC,INVALC,INVALC,INVALC, INVALC,0x6353,INVALC,0x334F,INVALC,INVALC,INVALC,INVALC, 0x6355,INVALC,INVALC,INVALC,0x376A,INVALC,0x3566,INVALC, INVALC,0x6356,0x3675,INVALC,INVALC,0x6357,INVALC,0x407C, INVALC,0x464D,INVALC,0x4060,0x3A75,INVALC,INVALC,INVALC, 0x6358,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4362,0x416B,INVALC,0x635A,0x635C,0x6359, 0x635B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3722, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x635D,0x3726,INVALC,INVALC,INVALC,0x3567,0x4D52, 0x635F,INVALC,INVALC,INVALC,INVALC,INVALC,0x6360,INVALC, INVALC,INVALC,0x312E,INVALC,INVALC,INVALC,INVALC,0x6363, INVALC,INVALC,INVALC,0x3376,0x6362,0x6361,INVALC,0x6365, 0x635E,INVALC,0x6366,0x4E29,INVALC,0x6367,INVALC,0x6368, INVALC,INVALC,0x5474,0x636A,INVALC,0x6369,INVALC,INVALC, INVALC,0x636B,0x636C,INVALC,0x4E35,0x636D,INVALC,0x706F, 0x3E4F,0x636E,0x636F,0x3D57,INVALC,0x4638,0x6370,INVALC, INVALC,INVALC,0x4328,INVALC,INVALC,0x6371,INVALC,0x433C, 0x6372,INVALC,INVALC,INVALC,INVALC,INVALC,0x3625,INVALC, 0x513F,0x435D,0x3C33,INVALC,INVALC,INVALC,INVALC,0x3448, /* Block 124, Array index 0x3800 */ INVALC,INVALC,0x6373,INVALC,0x6422,INVALC,0x6376,INVALC, 0x3568,INVALC,0x6375,0x6424,INVALC,INVALC,INVALC,0x6374, INVALC,0x3E50,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6378,0x6379,INVALC,0x452B,INVALC,INVALC,0x637A,INVALC, 0x335E,INVALC,INVALC,INVALC,INVALC,0x3F5A,0x4964,INVALC, 0x637C,INVALC,INVALC,INVALC,0x4268,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6377,INVALC,0x637B,0x637D,INVALC, INVALC,0x3A7B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6426,0x492E,INVALC, 0x4826,0x4579,INVALC,0x365A,0x6425,0x6423,INVALC,0x4835, 0x637E,0x435E,0x457B,INVALC,0x457A,INVALC,0x3A76,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6438,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6428,INVALC,0x642A, INVALC,INVALC,INVALC,INVALC,0x642D,INVALC,0x642E,INVALC, 0x642B,0x642C,INVALC,INVALC,0x6429,0x6427,INVALC,INVALC, INVALC,INVALC,0x6421,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A4F,0x3255, INVALC,INVALC,INVALC,0x6435,INVALC,0x6432,INVALC,0x6437, INVALC,INVALC,0x6436,INVALC,0x4773,0x4C27,INVALC,0x3B3B, 0x6430,0x6439,0x6434,INVALC,0x6433,0x642F,INVALC,0x6431, INVALC,0x3449,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x433D,INVALC,INVALC,0x407D,INVALC,INVALC, INVALC,0x4822,INVALC,INVALC,0x643E,INVALC,INVALC,INVALC, 0x4824,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4061,0x643B,INVALC,INVALC,0x484F,INVALC,0x643F,0x4A53, INVALC,0x435B,INVALC,0x643A,0x643C,INVALC,INVALC,0x643D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6440,INVALC,INVALC, 0x3C44,INVALC,INVALC,INVALC,0x4646,0x6445,0x6444,INVALC, INVALC,0x6441,INVALC,INVALC,INVALC,0x4F36,INVALC,INVALC, INVALC,INVALC,INVALC,0x644A,INVALC,INVALC,0x644E,0x644B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 125, Array index 0x3900 */ 0x6447,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6448, INVALC,INVALC,INVALC,INVALC,INVALC,0x644D,INVALC,INVALC, INVALC,0x6442,0x5255,0x6449,0x6443,INVALC,INVALC,0x644C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6452, INVALC,0x344A,INVALC,0x644F,INVALC,INVALC,INVALC,0x6450, INVALC,INVALC,0x6451,0x6454,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6453, 0x4876,INVALC,INVALC,INVALC,INVALC,0x6455,0x4E7C,0x4A6D, 0x645A,INVALC,INVALC,0x6457,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6456,0x4052,INVALC,0x6459, 0x645B,INVALC,INVALC,INVALC,0x6458,INVALC,0x645F,INVALC, 0x645C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x645D, 0x6446,INVALC,INVALC,INVALC,0x645E,0x6460,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6461,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4A46,INVALC,0x6462,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4C62,INVALC, INVALC,0x364E,0x3729,0x6463,INVALC,INVALC,INVALC,INVALC, INVALC,0x4A34,INVALC,0x3F68,INVALC,0x4C30,INVALC,INVALC, 0x6464,INVALC,0x4E33,INVALC,INVALC,0x4774,INVALC,0x4146, 0x4734,INVALC,INVALC,0x3D4D,INVALC,INVALC,INVALC,0x3040, INVALC,0x6469,0x6467,INVALC,0x6465,0x3421,INVALC,0x3E51, 0x646A,INVALC,INVALC,0x6468,INVALC,0x6466,0x646E,INVALC, INVALC,0x646D,0x646C,0x646B,INVALC,INVALC,INVALC,INVALC, INVALC,0x646F,INVALC,INVALC,INVALC,0x6470,0x403A,INVALC, 0x6471,INVALC,0x6473,INVALC,INVALC,0x6472,INVALC,INVALC, INVALC,INVALC,0x3852,INVALC,INVALC,INVALC,0x4138,INVALC, INVALC,INVALC,0x6475,INVALC,INVALC,INVALC,0x457C,INVALC, 0x6474,INVALC,INVALC,INVALC,0x6476,INVALC,0x4A35,0x416C, 0x3947,INVALC,0x6477,INVALC,INVALC,INVALC,INVALC,0x4E48, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6479, INVALC,INVALC,0x647A,INVALC,0x647B,INVALC,0x647C,INVALC, 0x3B65,INVALC,0x647D,0x374F,INVALC,INVALC,0x356A,INVALC, /* Block 126, Array index 0x3A00 */ 0x352A,INVALC,0x6521,INVALC,0x4C73,0x3948,0x647E,INVALC, INVALC,INVALC,0x6524,0x4C66,INVALC,0x473C,INVALC,INVALC, 0x4933,INVALC,INVALC,INVALC,0x3D63,0x6523,INVALC,0x3C53, 0x3949,0x3B66,0x3569,0x4A36,0x6522,INVALC,INVALC,INVALC, 0x4147,0x4B42,0x3A77,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3B67,0x445D,INVALC,0x6527,0x4E5F, 0x3A59,INVALC,0x6528,0x3F42,INVALC,0x652A,INVALC,INVALC, INVALC,0x3E52,0x3A30,INVALC,INVALC,INVALC,INVALC,0x6529, INVALC,INVALC,0x3D2A,0x383E,0x4148,0x6525,0x652B,INVALC, INVALC,INVALC,INVALC,0x6526,0x3750,INVALC,0x652E,0x6532, 0x376B,INVALC,INVALC,INVALC,INVALC,INVALC,0x652D,INVALC, INVALC,INVALC,INVALC,0x6536,INVALC,INVALC,0x394A,INVALC, INVALC,0x4D6D,0x303C,0x6533,INVALC,INVALC,0x356B,INVALC, 0x6530,INVALC,INVALC,INVALC,INVALC,INVALC,0x6531,INVALC, INVALC,0x457D,0x652F,0x652C,INVALC,0x3328,0x4064,INVALC, INVALC,0x3828,INVALC,INVALC,INVALC,0x6538,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6535,INVALC,INVALC,INVALC,INVALC,INVALC,0x6537, INVALC,INVALC,INVALC,0x6534,INVALC,INVALC,INVALC,INVALC, INVALC,0x3751,0x4233,0x6539,0x416E,INVALC,INVALC,0x6546, INVALC,INVALC,0x6542,0x653C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6540,0x3C7A,0x305D,0x653B,0x6543, 0x6547,0x394B,0x4C56,INVALC,0x4456,0x653D,INVALC,INVALC, 0x6545,INVALC,0x653A,0x433E,INVALC,0x653F,0x303D,0x4C4A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x653E, INVALC,INVALC,0x365B,0x486C,INVALC,INVALC,INVALC,0x416D, INVALC,0x4E50,0x3D6F,INVALC,INVALC,0x656E,INVALC,INVALC, 0x6548,INVALC,0x407E,INVALC,0x6544,0x6549,0x654B,INVALC, 0x4479,0x654E,INVALC,INVALC,0x654A,INVALC,INVALC,INVALC, 0x4A54,0x344B,INVALC,INVALC,0x4C4B,INVALC,INVALC,0x305E, INVALC,INVALC,0x654D,INVALC,0x4E7D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x654C,INVALC,INVALC,INVALC,INVALC, /* Block 127, Array index 0x3B00 */ INVALC,0x316F,INVALC,INVALC,0x466C,0x654F,INVALC,INVALC, INVALC,0x6556,0x6550,0x6557,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6553,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x477B,INVALC,INVALC,0x3C4A,0x6555, INVALC,0x6552,0x6558,0x6551,INVALC,INVALC,0x3D44,INVALC, INVALC,INVALC,INVALC,0x4B25,INVALC,INVALC,0x3D4C,INVALC, INVALC,0x6554,0x6560,INVALC,INVALC,0x655C,INVALC,0x655F, INVALC,0x655D,0x6561,0x655B,INVALC,0x6541,0x4053,INVALC, INVALC,0x484B,INVALC,0x655E,INVALC,INVALC,0x6559,INVALC, INVALC,INVALC,0x4121,0x3752,INVALC,0x3D2B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3F25,0x4136,0x6564,INVALC, INVALC,0x6566,0x6567,INVALC,INVALC,0x6563,0x6565,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x655A,0x6562, INVALC,0x656A,0x6569,INVALC,INVALC,0x4B7A,INVALC,INVALC, 0x372B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6568,INVALC,0x656C,0x656B,0x656F,INVALC,0x6571, INVALC,INVALC,0x3B3C,0x656D,INVALC,INVALC,INVALC,INVALC, 0x6572,0x6573,INVALC,INVALC,0x6574,INVALC,0x657A,0x453B, 0x6576,INVALC,0x6575,0x6577,0x6578,INVALC,0x6579,INVALC, INVALC,INVALC,INVALC,0x657B,0x657C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 128, Array index 0x3C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x344C,INVALC, 0x657D,INVALC,0x657E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6621,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6622,0x6623,0x6624,INVALC, 0x6625,0x6626,INVALC,INVALC,0x6628,0x6627,INVALC,INVALC, 0x6629,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x662A, 0x662B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x662E, 0x662C,0x662D,0x3A61,0x3753,INVALC,INVALC,0x4356,INVALC, 0x4833,INVALC,0x3D70,INVALC,INVALC,0x474D,INVALC,0x486D, 0x662F,0x586D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6630,0x6632,INVALC,0x4D65,0x6631,0x6634, 0x6633,INVALC,0x4D53,INVALC,0x6635,INVALC,0x487E,INVALC, INVALC,INVALC,INVALC,INVALC,0x6636,INVALC,INVALC,INVALC, INVALC,INVALC,0x6639,INVALC,INVALC,0x6638,0x6637,INVALC, INVALC,INVALC,INVALC,0x663A,0x3732,INVALC,INVALC,INVALC, 0x4122,0x3541,INVALC,INVALC,INVALC,INVALC,0x663E,0x663B, INVALC,INVALC,0x663C,INVALC,INVALC,INVALC,0x663F,INVALC, 0x6640,0x663D,INVALC,INVALC,INVALC,0x3129,INVALC,INVALC, INVALC,0x3227,INVALC,INVALC,INVALC,0x6642,0x6643,INVALC, INVALC,INVALC,0x6644,INVALC,0x4D62,INVALC,INVALC,INVALC, INVALC,INVALC,0x3D2C,INVALC,0x6646,0x6645,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3F69,0x6647,INVALC,INVALC,INVALC,INVALC,0x6648,INVALC, INVALC,0x6649,INVALC,0x3465,INVALC,INVALC,INVALC,INVALC, 0x344D,INVALC,INVALC,0x664A,INVALC,INVALC,INVALC,INVALC, INVALC,0x664B,INVALC,0x4B5D,0x4D63,INVALC,INVALC,INVALC, /* Block 129, Array index 0x3D00 */ 0x4D54,0x4F37,INVALC,0x394D,0x664E,0x3C54,0x664D,INVALC, INVALC,INVALC,INVALC,0x664F,0x3C29,INVALC,INVALC,INVALC, 0x4251,INVALC,0x6650,INVALC,INVALC,0x394C,INVALC,0x4C57, 0x6651,0x6652,INVALC,INVALC,0x6653,INVALC,INVALC,INVALC, INVALC,0x6654,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6655,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3C2A,INVALC,INVALC,0x4C6D,INVALC, INVALC,INVALC,INVALC,0x6657,INVALC,0x433F,INVALC,0x6656, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6659,INVALC, INVALC,INVALC,0x6658,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x665A,INVALC,INVALC,INVALC,0x403B,INVALC, 0x665B,INVALC,0x665C,INVALC,INVALC,INVALC,0x4A39,0x665D, INVALC,0x416F,0x665E,INVALC,INVALC,INVALC,INVALC,INVALC, 0x665F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4E7E, 0x6662,INVALC,0x6661,0x6660,0x4430,INVALC,0x6663,0x3F26, INVALC,0x6664,INVALC,INVALC,INVALC,0x6665,0x4F38,0x6666, INVALC,INVALC,INVALC,INVALC,0x6667,0x6669,0x6668,0x4825, INVALC,0x4679,INVALC,0x4F3E,0x4829,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x666B,INVALC,INVALC,0x3E53,INVALC, 0x492A,INVALC,0x666C,0x666A,INVALC,0x344E,INVALC,INVALC, INVALC,0x3854,0x3B68,INVALC,INVALC,0x486E,INVALC,INVALC, INVALC,0x382A,0x4B43,INVALC,0x666F,0x666D,INVALC,0x394E, INVALC,0x394F,0x3069,INVALC,0x3A68,INVALC,INVALC,INVALC, INVALC,INVALC,0x4759,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x305F,0x6674,INVALC,0x4340,INVALC, INVALC,INVALC,INVALC,INVALC,0x4758,INVALC,0x425B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6676,INVALC, INVALC,0x6672,0x6675,0x6670,INVALC,0x6673,0x4B26,INVALC, INVALC,0x3855,INVALC,INVALC,0x307D,0x6671,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6678, INVALC,0x6679,INVALC,INVALC,0x4639,INVALC,INVALC,INVALC, 0x363B,INVALC,INVALC,INVALC,0x6726,0x473D,INVALC,INVALC, /* Block 130, Array index 0x3E00 */ INVALC,INVALC,0x3B69,INVALC,INVALC,0x363C,0x4048,0x4F46, 0x4C2E,0x6677,0x4054,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3553,0x667A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x667C,INVALC,INVALC,INVALC,INVALC, INVALC,0x667B,INVALC,INVALC,INVALC,INVALC,INVALC,0x667D, INVALC,0x4326,INVALC,0x473E,INVALC,INVALC,INVALC,INVALC, INVALC,0x4431,INVALC,INVALC,INVALC,INVALC,0x6723,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6722,INVALC, INVALC,INVALC,INVALC,0x667E,INVALC,INVALC,0x3F55,INVALC, 0x4965,0x6725,INVALC,0x6724,0x3950,0x4F53,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6735, INVALC,INVALC,INVALC,INVALC,INVALC,0x6729,0x672A,INVALC, INVALC,INVALC,INVALC,0x3C70,INVALC,INVALC,0x6728,INVALC, 0x3978,0x6727,INVALC,INVALC,0x672B,INVALC,INVALC,INVALC, 0x4432,0x4A22,0x4123,INVALC,INVALC,INVALC,INVALC,0x425C, 0x672F,INVALC,0x6730,0x672C,INVALC,INVALC,INVALC,INVALC, 0x672D,INVALC,0x672E,INVALC,INVALC,INVALC,INVALC,0x3951, INVALC,INVALC,INVALC,0x6736,INVALC,0x6732,INVALC,INVALC, INVALC,INVALC,0x4966,INVALC,0x4B6C,0x4928,INVALC,INVALC, 0x6731,INVALC,INVALC,0x6734,0x6733,INVALC,INVALC,INVALC, 0x4B44,0x6737,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6738,INVALC,INVALC,0x4137,INVALC,0x6739,INVALC,INVALC, 0x673B,INVALC,0x673F,INVALC,INVALC,0x673C,0x673A,0x473F, 0x673D,INVALC,0x673E,INVALC,INVALC,INVALC,0x3232,INVALC, 0x6745,0x6740,INVALC,INVALC,INVALC,0x6741,INVALC,INVALC, INVALC,0x6742,INVALC,0x4221,INVALC,INVALC,INVALC,INVALC, 0x6744,0x6743,0x6746,INVALC,INVALC,INVALC,INVALC,0x6747, 0x6748,INVALC,INVALC,0x3F43,INVALC,0x3269,INVALC,0x6749, 0x4E57,INVALC,0x3C2B,INVALC,INVALC,0x3D2D,INVALC,INVALC, INVALC,INVALC,INVALC,0x3B6A,0x4357,INVALC,INVALC,INVALC, INVALC,INVALC,0x674A,0x674B,0x3131,INVALC,0x674C,INVALC, /* Block 131, Array index 0x3F00 */ INVALC,0x674D,0x674E,INVALC,INVALC,0x674F,INVALC,0x6750, 0x363D,0x5A2A,0x6751,INVALC,0x4065,0x6752,0x3C4B,INVALC, 0x6753,INVALC,0x5030,INVALC,INVALC,INVALC,0x6754,0x4A5E, 0x345C,INVALC,INVALC,0x4124,0x3D58,INVALC,0x4971,0x3D2E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6755,0x3952,0x6756,0x484C,INVALC,0x6764,INVALC, INVALC,INVALC,INVALC,0x6758,INVALC,0x4249,0x4775,0x383F, 0x6757,0x4125,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6759,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x447A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x675B,0x675A,0x675D,INVALC,INVALC,0x675C,INVALC,0x675E, INVALC,INVALC,0x6760,INVALC,0x675F,INVALC,0x344F,INVALC, 0x6761,INVALC,0x6762,0x6763,INVALC,INVALC,0x3A31,0x4E49, INVALC,0x6765,0x3F27,INVALC,INVALC,INVALC,0x3170,0x6766, 0x6767,INVALC,INVALC,INVALC,INVALC,INVALC,0x6768,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3072,INVALC,0x6769,INVALC,INVALC, INVALC,INVALC,0x676A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4967,INVALC,INVALC,INVALC,0x3C47,INVALC,0x676C, INVALC,INVALC,INVALC,INVALC,INVALC,0x3329,0x3032,INVALC, INVALC,INVALC,INVALC,0x676B,0x676E,0x474E,INVALC,0x3F44, INVALC,0x3256,INVALC,0x4B27,INVALC,INVALC,INVALC,INVALC, 0x375D,0x365C,INVALC,0x676D,INVALC,0x326A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3423,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3171,0x6772,0x4E6A,0x425D,INVALC,INVALC,0x4944, INVALC,0x677E,INVALC,0x3257,0x677C,INVALC,0x677A,0x6771, INVALC,0x676F,INVALC,0x6770,INVALC,0x3C63,0x366C,0x4377, INVALC,INVALC,INVALC,0x4651,INVALC,INVALC,INVALC,INVALC, INVALC,0x3151,INVALC,0x6774,0x6773,INVALC,INVALC,INVALC, INVALC,0x6779,0x6775,0x6778,INVALC,INVALC,INVALC,INVALC, /* Block 132, Array index 0x4000 */ INVALC,INVALC,0x4C50,0x6777,0x3258,0x337D,0x677B,INVALC, INVALC,0x677D,INVALC,INVALC,INVALC,INVALC,0x3754,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6823,0x682C, 0x682D,INVALC,INVALC,INVALC,0x302B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6834,INVALC,INVALC,INVALC,INVALC, 0x3071,INVALC,INVALC,0x682B,INVALC,INVALC,INVALC,0x682A, INVALC,0x6825,0x6824,INVALC,0x6822,0x6821,0x4363,INVALC, 0x427B,0x6827,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6826,INVALC,INVALC,INVALC,INVALC,0x6829,INVALC,INVALC, INVALC,0x4170,0x3755,INVALC,INVALC,INVALC,INVALC,0x3141, 0x6828,INVALC,0x3953,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4171,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x683A,INVALC,0x683B,INVALC,0x3259, INVALC,INVALC,INVALC,0x322E,0x6838,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x682E,INVALC,0x6836, INVALC,0x683D,0x6837,INVALC,INVALC,INVALC,0x6835,INVALC, INVALC,INVALC,INVALC,0x6776,INVALC,INVALC,0x6833,INVALC, INVALC,INVALC,0x682F,INVALC,INVALC,INVALC,0x3450,0x6831, 0x683C,INVALC,0x6832,INVALC,INVALC,INVALC,INVALC,INVALC, 0x683E,INVALC,0x6830,0x477C,INVALC,INVALC,INVALC,INVALC, INVALC,0x4D69,INVALC,INVALC,INVALC,0x6839,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x684F,INVALC,INVALC, INVALC,0x6847,INVALC,INVALC,INVALC,0x3F7B,INVALC,INVALC, INVALC,INVALC,0x3546,INVALC,0x365D,INVALC,0x6842,INVALC, INVALC,INVALC,INVALC,0x325B,INVALC,INVALC,0x3E54,INVALC, 0x6845,INVALC,INVALC,INVALC,0x3A5A,INVALC,INVALC,0x4551, 0x684A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4A6E,INVALC,0x6841,INVALC,INVALC,INVALC,0x325A, 0x3856,0x4929,0x684B,INVALC,0x683F,INVALC,INVALC,0x6848, INVALC,INVALC,INVALC,0x6852,INVALC,0x6843,INVALC,INVALC, /* Block 133, Array index 0x4100 */ INVALC,INVALC,INVALC,0x6844,0x463A,INVALC,INVALC,0x6849, INVALC,INVALC,INVALC,0x6846,0x4B28,0x684C,0x3060,INVALC, INVALC,INVALC,INVALC,0x6840,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x684E,INVALC,0x684D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x476B,0x6854,INVALC,0x685F,INVALC,INVALC,INVALC, INVALC,0x337E,INVALC,INVALC,INVALC,0x6862,INVALC,INVALC, 0x6850,INVALC,INVALC,INVALC,0x6855,0x4D6E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x685E,INVALC, INVALC,0x4D55,INVALC,INVALC,INVALC,INVALC,0x4E2A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4378, INVALC,INVALC,INVALC,0x336B,INVALC,INVALC,INVALC,INVALC, INVALC,0x4972,0x6864,0x4621,INVALC,INVALC,0x3031,INVALC, INVALC,0x685D,INVALC,0x6859,0x4172,0x6853,0x685B,0x6860, INVALC,0x472C,INVALC,INVALC,INVALC,0x302A,INVALC,0x6858, INVALC,0x6861,0x4978,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x685C,INVALC,0x6857,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3E55,INVALC,INVALC,INVALC,INVALC, 0x3D2F,INVALC,INVALC,INVALC,0x3C2C,INVALC,INVALC,INVALC, INVALC,0x4C58,INVALC,INVALC,0x4947,INVALC,INVALC,0x6867, INVALC,0x6870,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x685A,INVALC,INVALC, INVALC,INVALC,0x3377,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3E78,0x6865,INVALC,0x686A,0x4173,INVALC,INVALC,0x6866, INVALC,0x686D,INVALC,INVALC,0x435F,INVALC,0x686E,INVALC, INVALC,0x4D56,0x6863,0x3338,INVALC,0x6869,INVALC,INVALC, 0x686C,0x4C2C,INVALC,INVALC,INVALC,INVALC,0x686F,INVALC, INVALC,0x6868,0x686B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4B29,INVALC,0x4F21,INVALC, INVALC,INVALC,INVALC,INVALC,0x6873,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x687A,INVALC,INVALC,0x6872, /* Block 134, Array index 0x4200 */ 0x3C43,INVALC,INVALC,INVALC,INVALC,INVALC,0x6851,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4A4E,INVALC,0x4C22,0x6879,0x6878,INVALC,0x6874, 0x6875,INVALC,0x3136,INVALC,INVALC,INVALC,INVALC,0x6877, INVALC,0x6871,INVALC,INVALC,INVALC,INVALC,0x4455,INVALC, INVALC,INVALC,INVALC,INVALC,0x6876,0x307E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4222,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4A43,INVALC,INVALC, 0x687B,0x6921,INVALC,0x4859,INVALC,INVALC,INVALC,INVALC, 0x687E,0x3E56,0x3C49,0x6923,INVALC,INVALC,0x363E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6924,INVALC,0x4979, 0x687D,INVALC,0x6856,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x687C,INVALC,INVALC,INVALC,INVALC, 0x4F4F,0x4622,0x4973,INVALC,INVALC,0x692B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6931, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6932,INVALC, 0x6925,INVALC,INVALC,INVALC,0x4776,INVALC,INVALC,0x692F, 0x6927,INVALC,0x6929,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6933,0x6928,INVALC,INVALC,0x692C,INVALC,INVALC,0x3172, INVALC,0x4665,INVALC,0x692D,0x6930,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6926,INVALC,0x4126,INVALC, 0x692A,0x3B27,0x3F45,0x3730,0x4C74,INVALC,0x4C79,0x3D72, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6937,0x6935,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4F4E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6934,INVALC,INVALC,INVALC,0x4D75,INVALC,0x6936, 0x6938,INVALC,INVALC,INVALC,INVALC,0x6939,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x693C,0x693A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4623,0x693B,INVALC,INVALC, INVALC,0x484D,0x692E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3D73, INVALC,0x693D,0x6942,0x4174,INVALC,INVALC,0x6941,INVALC, /* Block 135, Array index 0x4300 */ INVALC,INVALC,0x6922,INVALC,INVALC,INVALC,0x6943,0x4149, INVALC,INVALC,0x693E,0x6940,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x693F,INVALC,INVALC,0x5D31,0x5D22, INVALC,INVALC,0x6945,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6944,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4D76,INVALC,0x623C, 0x6946,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6947, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6948,0x3857,INVALC, 0x3554,INVALC,INVALC,INVALC,0x694A,0x515D,INVALC,INVALC, INVALC,INVALC,0x3575,INVALC,0x4E3A,INVALC,0x3673,0x694B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x694C, INVALC,INVALC,INVALC,0x436E,INVALC,INVALC,INVALC,INVALC, INVALC,0x694D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x467A,INVALC,0x303A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3263,0x6952,0x6953,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x694E,INVALC,0x3B3D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x694F,0x4742,INVALC,INVALC,INVALC, INVALC,0x6950,0x6951,0x695B,INVALC,INVALC,INVALC,0x6955, 0x6958,INVALC,INVALC,INVALC,INVALC,INVALC,0x6954,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6956,INVALC,0x6957,0x3C58, INVALC,0x6959,INVALC,0x4341,INVALC,0x3756,0x3342,INVALC, INVALC,INVALC,INVALC,INVALC,0x695C,INVALC,INVALC,INVALC, INVALC,0x333F,INVALC,0x6961,INVALC,INVALC,0x695D,0x6960, INVALC,INVALC,INVALC,INVALC,0x483A,INVALC,INVALC,INVALC, INVALC,0x695E,INVALC,INVALC,0x695F,0x4948,0x485A,0x6962, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x427D,0x696C,INVALC,0x6968,INVALC,INVALC,0x326B,INVALC, /* Block 136, Array index 0x4400 */ 0x6966,INVALC,0x4B2A,0x6967,INVALC,INVALC,0x6964,INVALC, 0x6965,0x696A,0x696D,INVALC,INVALC,0x696B,INVALC,INVALC, INVALC,0x6969,0x6963,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4358,INVALC,0x6974,INVALC,0x4C2A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6972,INVALC,INVALC, INVALC,0x6973,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x696E,INVALC,INVALC,0x6970, INVALC,INVALC,INVALC,0x6971,INVALC,INVALC,INVALC,0x696F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4066,INVALC,0x4F39,0x6978,INVALC,0x6979,INVALC, INVALC,INVALC,INVALC,0x6A21,INVALC,0x3F2A,INVALC,0x697B, INVALC,0x697E,INVALC,INVALC,INVALC,INVALC,INVALC,0x6976, 0x6975,INVALC,INVALC,0x6A22,INVALC,INVALC,0x325C,INVALC, 0x697C,INVALC,0x6A23,INVALC,INVALC,INVALC,0x697D,INVALC, INVALC,INVALC,INVALC,INVALC,0x697A,INVALC,0x4433,INVALC, 0x6977,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4768, INVALC,INVALC,0x6A27,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4D3B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6A26, INVALC,INVALC,0x6A25,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6A2E,INVALC,INVALC,INVALC,0x6A28, INVALC,INVALC,INVALC,0x6A30,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4D66,0x6A33,INVALC,0x6A2A,INVALC,INVALC, 0x6A2B,INVALC,INVALC,INVALC,0x6A2F,INVALC,0x6A32,0x6A31, INVALC,INVALC,INVALC,0x6A29,INVALC,INVALC,INVALC,INVALC, 0x6A2C,INVALC,0x6A3D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6A36,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6A34, INVALC,INVALC,0x6A35,INVALC,INVALC,INVALC,0x6A3A,0x6A3B, INVALC,0x332A,INVALC,0x3542,INVALC,INVALC,0x6A39,INVALC, /* Block 137, Array index 0x4500 */ INVALC,INVALC,INVALC,INVALC,INVALC,0x6A24,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6A38,0x6A3C,0x6A37, INVALC,0x6A3E,INVALC,INVALC,INVALC,0x6A40,0x6A3F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6A42,0x6A41,0x695A,INVALC,INVALC,INVALC,0x6A46, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6A43,INVALC,INVALC,INVALC,INVALC,0x6A44,INVALC, INVALC,0x6A45,INVALC,0x6A47,INVALC,INVALC,INVALC,INVALC, 0x376C,INVALC,0x6A49,INVALC,0x6A48,INVALC,0x3D30,INVALC, INVALC,INVALC,INVALC,INVALC,0x3954,0x5E27,INVALC,INVALC, INVALC,INVALC,0x6A4A,0x3D51,INVALC,INVALC,INVALC,0x3339, INVALC,0x6A4B,INVALC,0x3152,INVALC,0x3E57,0x6A4C,INVALC, INVALC,0x3955,0x6A4D,0x3061,INVALC,INVALC,INVALC,INVALC, 0x493D,INVALC,INVALC,0x6A4E,INVALC,INVALC,INVALC,INVALC, 0x3F6A,INVALC,0x6A55,INVALC,INVALC,0x6A52,INVALC,0x436F, INVALC,INVALC,INVALC,INVALC,INVALC,0x6A53,0x6A50,0x365E, INVALC,0x6A4F,0x6A56,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3736,INVALC,INVALC,0x425E,INVALC,0x6A5C,INVALC,INVALC, INVALC,INVALC,0x6A58,INVALC,INVALC,INVALC,0x4235,0x6A57, INVALC,0x6A5A,INVALC,INVALC,INVALC,INVALC,0x6A51,INVALC, INVALC,INVALC,0x6A5B,INVALC,0x6A5D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x486F,INVALC,INVALC,0x6A59,INVALC, 0x6A5E,0x6A60,INVALC,INVALC,0x3853,0x6A54,INVALC,0x3041, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6A5F, INVALC,0x3A5B,0x4E76,0x6A61,0x6A62,0x4175,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4E22, INVALC,INVALC,INVALC,INVALC,0x6A63,0x4D35,INVALC,INVALC, 0x6A64,0x6A65,INVALC,INVALC,0x4A64,0x6A66,INVALC,0x3A40, INVALC,0x4E23,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6A6B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6A6C,0x3E58,0x6A6A,INVALC,INVALC,INVALC, 0x4D67,0x6A67,INVALC,INVALC,0x6A69,0x403D,0x3F7E,INVALC, /* Block 138, Array index 0x4600 */ INVALC,INVALC,0x6A68,INVALC,0x6A6D,INVALC,INVALC,0x4A23, INVALC,INVALC,0x6A6F,INVALC,0x6A6E,INVALC,INVALC,INVALC, 0x336C,INVALC,0x4B2B,0x6A70,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6A7C,0x6A72,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6A73,INVALC,INVALC, INVALC,INVALC,0x6A74,0x6A75,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6A79,INVALC, 0x6A7A,INVALC,INVALC,0x6A78,INVALC,INVALC,INVALC,INVALC, INVALC,0x6A76,INVALC,0x6A71,0x6A77,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6A7B,0x7037,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3228,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6A7E,0x365F, 0x6A7D,INVALC,INVALC,INVALC,0x6B22,INVALC,0x6B21,INVALC, INVALC,INVALC,0x6B24,INVALC,INVALC,0x6B23,INVALC,0x6B25, INVALC,INVALC,0x3D31,INVALC,0x6B26,INVALC,INVALC,0x6B27, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6B28,0x403E, INVALC,0x4D57,INVALC,0x6B29,INVALC,INVALC,0x4A24,0x4746, 0x6B2A,INVALC,0x6B2B,0x382B,INVALC,INVALC,INVALC,0x352C, INVALC,INVALC,INVALC,0x6B2C,INVALC,INVALC,0x3B6B,0x4741, 0x6B2D,INVALC,0x3350,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6B2E,INVALC,INVALC,INVALC,INVALC,0x6B30,0x4D77, INVALC,0x6B2F,0x3F46,INVALC,0x6B31,INVALC,INVALC,0x6B32, INVALC,INVALC,0x6B33,0x3451,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6B34,INVALC,INVALC,0x6B35,INVALC,0x6B36, 0x6B37,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3351,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6B38,INVALC,0x6B39,0x6B3A,INVALC,INVALC, INVALC,INVALC,INVALC,0x3272,INVALC,INVALC,0x3F28,0x6B3B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6B3C,INVALC,INVALC,INVALC, 0x6B3D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 139, Array index 0x4700 */ 0x3840,INVALC,0x447B,0x6B3E,INVALC,INVALC,INVALC,INVALC, 0x3757,INVALC,0x3F56,INVALC,0x6B41,INVALC,0x4624,INVALC, 0x6B40,INVALC,INVALC,0x3731,INVALC,INVALC,0x6B3F,0x4277, 0x352D,INVALC,INVALC,0x6B42,INVALC,0x6B43,INVALC,0x3E59, INVALC,INVALC,INVALC,0x376D,INVALC,0x6B44,INVALC,INVALC, INVALC,INVALC,0x4B2C,INVALC,INVALC,0x405F,INVALC,INVALC, INVALC,0x3576,INVALC,0x4C75,0x414A,INVALC,0x6B45,INVALC, INVALC,INVALC,0x3F47,0x4370,0x3E5A,INVALC,INVALC,INVALC, INVALC,0x6B46,INVALC,INVALC,INVALC,INVALC,0x6B49,INVALC, 0x6B4A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3A3E,0x4242,0x6B48,INVALC,0x3E5B,0x493E,INVALC,INVALC, INVALC,INVALC,INVALC,0x6B47,INVALC,INVALC,0x3B6C,INVALC, 0x3153,INVALC,0x6B4E,0x3758,INVALC,INVALC,0x3B6E,INVALC, INVALC,0x3B6D,INVALC,0x4F4D,0x6B4D,0x6B4C,0x4127,INVALC, 0x354D,0x4F43,0x333A,0x3E5C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6B4B,INVALC,INVALC,INVALC, INVALC,INVALC,0x6B50,INVALC,0x6B51,0x6B4F,INVALC,0x3858, INVALC,0x4D40,INVALC,INVALC,0x3B6F,0x4727,INVALC,INVALC, INVALC,0x6B54,INVALC,0x4040,INVALC,0x4342,INVALC,INVALC, 0x4D36,INVALC,0x6B57,INVALC,INVALC,INVALC,0x386C,INVALC, 0x403F,0x6B53,INVALC,0x6B58,0x386D,0x6B55,0x6B56,INVALC, 0x6B52,INVALC,INVALC,INVALC,0x4062,0x4649,INVALC,INVALC, 0x432F,INVALC,0x325D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4870,INVALC,INVALC,0x3543,INVALC,INVALC,0x4434, INVALC,INVALC,0x6B5B,INVALC,0x6B59,INVALC,INVALC,0x434C, INVALC,INVALC,INVALC,0x4041,0x3452,0x6B5A,INVALC,0x3F5B, INVALC,INVALC,0x4E4A,INVALC,INVALC,INVALC,0x4F40,INVALC, INVALC,INVALC,0x6B5C,0x6B67,0x4435,INVALC,0x6B66,INVALC, 0x6B63,0x6B6B,0x6B64,INVALC,0x6B60,INVALC,0x447C,0x6B5F, INVALC,INVALC,INVALC,0x6B5D,INVALC,0x4D21,0x3B70,INVALC, INVALC,0x6B61,INVALC,0x6B5E,INVALC,INVALC,INVALC,0x6B65, 0x3D74,INVALC,0x3841,INVALC,INVALC,INVALC,0x427A,INVALC, /* Block 140, Array index 0x4800 */ 0x4B45,0x315A,0x3062,INVALC,0x4625,INVALC,INVALC,0x6B69, INVALC,INVALC,INVALC,INVALC,0x6B68,INVALC,0x4666,INVALC, 0x6B6D,INVALC,INVALC,INVALC,0x6B62,INVALC,0x6B6C,0x6B6E, INVALC,0x382C,0x6B6A,0x3956,INVALC,0x3C55,INVALC,INVALC, 0x6B6F,0x4D58,INVALC,INVALC,INVALC,INVALC,0x6B72,INVALC, 0x6B75,INVALC,INVALC,0x6B73,0x4935,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6B70,INVALC,INVALC,INVALC,INVALC, INVALC,0x3660,INVALC,INVALC,INVALC,INVALC,0x6B74,INVALC, INVALC,0x6B76,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6B7A,INVALC,INVALC,0x6B77,INVALC,0x6B79,0x6B78, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6B7B,INVALC, 0x3C31,INVALC,0x6B7D,0x6B7C,0x4968,INVALC,INVALC,0x6C21, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3759,INVALC, INVALC,INVALC,INVALC,0x6B7E,0x6C22,INVALC,INVALC,0x6C23, 0x3544,0x6641,0x3E79,INVALC,0x6C24,INVALC,INVALC,0x386E, INVALC,INVALC,INVALC,INVALC,INVALC,0x6C25,INVALC,INVALC, 0x6C26,INVALC,INVALC,0x3B3E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5A4E,INVALC,0x6C27,INVALC,0x6C28,INVALC, 0x3D32,INVALC,0x6C29,0x6C2A,INVALC,INVALC,0x6C2B,INVALC, INVALC,0x6C2C,0x6C2D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 141, Array index 0x4900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x432B, INVALC,INVALC,0x6C2E,INVALC,INVALC,INVALC,INVALC,0x6C30, INVALC,0x6C2F,INVALC,INVALC,INVALC,INVALC,0x4626,INVALC, 0x6C31,INVALC,0x4B2D,INVALC,0x6C32,INVALC,0x6C33,INVALC, 0x6C34,INVALC,INVALC,INVALC,INVALC,0x6C35,INVALC,INVALC, INVALC,INVALC,0x465A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3E5D,0x6C36,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x396B,0x502E,0x6C37,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6C38,0x493F,0x6C39,INVALC,0x6C41,INVALC,INVALC,INVALC, INVALC,INVALC,0x6C3A,INVALC,INVALC,0x6C3C,INVALC,INVALC, INVALC,0x6C3B,0x6C3D,INVALC,0x4B46,0x6C3E,0x6C3F,INVALC, INVALC,INVALC,INVALC,INVALC,0x6C40,INVALC,INVALC,INVALC, 0x6C42,INVALC,INVALC,INVALC,INVALC,0x332D,0x4467,INVALC, 0x4969,0x3A62,0x3957,INVALC,INVALC,INVALC,INVALC,0x494F, 0x325F,0x484E,0x6C45,0x3453,0x4055,0x6C44,0x6C49,0x4379, 0x4C63,INVALC,0x6C47,0x6C48,0x352E,INVALC,0x6C4A,0x4763, 0x425F,INVALC,INVALC,0x4871,0x453D,0x6C46,INVALC,0x4B47, 0x326C,0x6C4C,0x4F28,0x4442,0x4F45,INVALC,INVALC,0x3B71, 0x6C4B,INVALC,0x4231,INVALC,INVALC,0x6C5C,0x4128,INVALC, INVALC,0x4678,INVALC,0x4950,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6C4F,0x3B3F,0x3B72,INVALC,0x3E5E,INVALC, 0x4765,INVALC,0x382D,0x6C4E,0x6C4D,INVALC,0x496A,INVALC, INVALC,INVALC,0x3C41,INVALC,INVALC,0x4552,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6C51,0x6C52,0x3958,0x6C50,INVALC,INVALC, /* Block 142, Array index 0x4A00 */ INVALC,INVALC,INVALC,INVALC,0x6C53,0x6C54,INVALC,0x6C56, 0x4223,INVALC,0x6C55,0x3466,INVALC,0x6C58,INVALC,0x6C57, 0x6C59,INVALC,INVALC,0x6C5B,0x6C5D,INVALC,0x6C5E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4056,INVALC,0x3C4F,0x6C5F, INVALC,INVALC,INVALC,0x3352,INVALC,0x6C60,INVALC,INVALC, 0x4176,0x6C61,INVALC,0x6C62,0x496B,INVALC,INVALC,0x352F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6C63,INVALC,INVALC,INVALC,0x4436,INVALC,INVALC, INVALC,INVALC,0x315B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6C64,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3C71,INVALC,INVALC,INVALC,INVALC, 0x3F76,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x422D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6C67,INVALC,INVALC,INVALC,0x6C66,INVALC, INVALC,INVALC,0x6C65,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6C6D,0x6C6B,INVALC,INVALC,0x6C68, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6C6A,INVALC, INVALC,INVALC,0x6C69,0x6C6C,INVALC,0x3577,INVALC,0x6C70, INVALC,0x4057,INVALC,0x6C71,INVALC,INVALC,INVALC,INVALC, 0x3859,INVALC,0x6C6E,0x6C6F,INVALC,INVALC,INVALC,0x4F29, INVALC,INVALC,INVALC,0x4437,INVALC,0x4129,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6C72,INVALC,INVALC,0x6C75, /* Block 143, Array index 0x4B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6C73,0x6C74,0x4D59,INVALC,INVALC,INVALC,INVALC,0x4627, 0x6C78,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6C76,0x6C77,0x6C79, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6D29,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6C7C,INVALC,INVALC,INVALC,0x6C7D,0x6C7B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6C7A,INVALC,0x447D,INVALC,INVALC,0x6D21, 0x6D25,0x6D22,0x6C7E,INVALC,0x6D23,INVALC,INVALC,INVALC, 0x6D24,INVALC,INVALC,INVALC,INVALC,0x6D2B,INVALC,INVALC, INVALC,0x6D26,INVALC,INVALC,INVALC,INVALC,INVALC,0x4058, 0x6D28,INVALC,INVALC,0x6D2A,0x6D27,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6D2D,INVALC,0x3D33,INVALC,0x6D2C,INVALC, INVALC,INVALC,INVALC,INVALC,0x6D2E,INVALC,INVALC,INVALC, INVALC,0x6D2F,INVALC,INVALC,0x6D32,0x6D31,INVALC,0x6D30, INVALC,INVALC,0x6D34,0x6D33,INVALC,0x4C76,INVALC,INVALC, INVALC,0x6D36,INVALC,0x6D35,0x6D37,INVALC,INVALC,INVALC, INVALC,0x6D38,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6D3A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6D39,0x3F48,0x6D3B,INVALC,INVALC,0x366D, 0x6D3C,0x6D3E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6D3F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6D40,0x6D3D,INVALC, 0x6D41,INVALC,0x3C56,0x6D42,0x3530,0x3733,INVALC,INVALC, INVALC,INVALC,0x382E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6D43,INVALC,INVALC,INVALC,0x4670, INVALC,INVALC,0x453E,0x6D44,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6D47,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3C34,INVALC,INVALC,0x6D46,0x6D45,0x375A,0x6D48,INVALC, /* Block 144, Array index 0x4C00 */ INVALC,INVALC,INVALC,0x3353,INVALC,0x6D4A,INVALC,INVALC, INVALC,0x3A5C,0x6D49,INVALC,0x6D52,INVALC,INVALC,INVALC, INVALC,INVALC,0x6D4C,0x6D4E,0x4A65,0x6D4B,INVALC,INVALC, INVALC,0x6D4D,INVALC,0x6D51,0x6D4F,0x3531,INVALC,0x6D50, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6D53,INVALC, INVALC,0x475A,0x4E58,INVALC,INVALC,INVALC,INVALC,0x3D34, INVALC,INVALC,INVALC,0x6D54,INVALC,INVALC,INVALC,INVALC, 0x4D22,0x6D56,INVALC,0x6D55,INVALC,INVALC,0x6D59,0x4D41, INVALC,INVALC,0x6D58,INVALC,0x336D,0x6D57,0x6D5C,INVALC, INVALC,0x6D5B,INVALC,INVALC,0x6D5A,0x4532,0x6D5D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6D5E, INVALC,INVALC,INVALC,INVALC,0x6D5F,INVALC,INVALC,0x396C, INVALC,0x3725,0x6D60,0x6D61,0x6D62,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3F49,0x6D63,INVALC,0x3C2D,0x6D64, INVALC,INVALC,INVALC,0x6D65,INVALC,INVALC,INVALC,0x5221, 0x517E,INVALC,INVALC,INVALC,INVALC,0x6D66,0x6570,0x6D67, 0x4324,0x3F2B,0x4740,INVALC,INVALC,INVALC,INVALC,0x6D68, INVALC,INVALC,0x4A55,0x4454,0x397E,INVALC,INVALC,0x4329, INVALC,INVALC,0x312A,INVALC,0x4B78,0x3F57,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x375E,INVALC, INVALC,0x3661,INVALC,INVALC,0x4A56,INVALC,INVALC,INVALC, INVALC,INVALC,0x6D69,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6D6B,INVALC,INVALC,0x6D6A,0x3260,INVALC, INVALC,0x4676,0x6D6C,0x4777,INVALC,0x4533,INVALC,0x6D6D, 0x3D52,INVALC,INVALC,INVALC,0x6D6F,INVALC,INVALC,0x4C42, 0x6D7E,0x6D71,0x6D72,INVALC,INVALC,0x4449,INVALC,INVALC, /* Block 145, Array index 0x4D00 */ 0x4260,0x4177,INVALC,0x4628,INVALC,0x6D70,0x3555,INVALC, INVALC,INVALC,INVALC,0x6D79,INVALC,0x6D76,0x6E25,0x4629, 0x4360,0x6D73,INVALC,0x447E,0x4553,0x6D74,0x6D78,0x3F60, INVALC,0x4767,0x444C,INVALC,INVALC,0x4042,0x6D77,0x422E, 0x4224,0x6D75,0x3029,0x4F22,INVALC,INVALC,INVALC,0x6D7A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4261,INVALC, INVALC,0x3D35,0x3F4A,INVALC,INVALC,0x6D7C,0x6D7B,INVALC, 0x306F,0x6D7D,INVALC,INVALC,0x492F,INVALC,0x6E27,INVALC, INVALC,0x465B,0x3F6B,INVALC,INVALC,0x4359,INVALC,0x3678, INVALC,0x6E26,0x4D37,0x313F,INVALC,0x4A57,0x3261,0x6E21, 0x6E22,0x6E23,0x6E24,0x463B,0x4323,0x3063,0x6E28,INVALC, 0x6E29,0x7423,INVALC,INVALC,0x423D,INVALC,0x6E2A,INVALC, 0x3173,0x414C,INVALC,0x382F,INVALC,0x4D5A,INVALC,INVALC, 0x6E2B,0x452C,INVALC,INVALC,INVALC,0x4178,0x3C57,0x6E2C, INVALC,INVALC,0x6E2F,INVALC,INVALC,0x3D65,0x6E2D,0x412B, 0x412A,INVALC,0x3064,INVALC,0x4E4B,0x6E31,INVALC,0x4872, 0x6E33,0x6E32,0x6E30,0x6364,0x3454,INVALC,INVALC,0x6D6E, INVALC,0x6E35,0x6E34,INVALC,INVALC,INVALC,INVALC,0x6E36, INVALC,0x4D38,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4661,INVALC,INVALC,0x4B2E,INVALC, 0x6E37,INVALC,0x3C59,INVALC,INVALC,INVALC,INVALC,0x6E38, INVALC,0x6E39,INVALC,INVALC,INVALC,0x6E3A,INVALC,INVALC, 0x4521,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x306A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3959,INVALC,INVALC,INVALC,0x4F3A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6E3E,INVALC,INVALC,INVALC,INVALC, INVALC,0x3734,0x6E3B,INVALC,0x6E3C,INVALC,INVALC,INVALC, 0x4974,INVALC,INVALC,INVALC,INVALC,0x3354,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4D39,INVALC,0x363F, INVALC,INVALC,INVALC,INVALC,INVALC,0x4554,INVALC,INVALC, /* Block 146, Array index 0x4E00 */ INVALC,INVALC,0x6E3F,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6E40,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6E41,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4522,INVALC,INVALC, 0x6E43,INVALC,0x6E42,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4653,0x6E44,0x3D36,0x3C60,0x475B,0x4371,INVALC, INVALC,INVALC,0x3C72,INVALC,0x3F6C,INVALC,0x6E45,INVALC, 0x6E46,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3F5D,0x6E47,INVALC,0x6E48,INVALC,INVALC, INVALC,0x6E49,0x4D6F,INVALC,0x3D37,INVALC,INVALC,INVALC, INVALC,INVALC,0x6E4B,0x6E4A,INVALC,0x395A,INVALC,0x3973, 0x3B40,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6E4E,INVALC,INVALC,INVALC,INVALC,0x3D66, INVALC,0x6E4D,INVALC,0x6E4C,INVALC,0x4269,INVALC,INVALC, 0x386F,INVALC,0x4043,INVALC,INVALC,INVALC,INVALC,0x4830, INVALC,INVALC,INVALC,INVALC,0x3D39,INVALC,INVALC,INVALC, INVALC,INVALC,0x6E4F,INVALC,0x3E5F,INVALC,INVALC,INVALC, INVALC,INVALC,0x6E52,0x6E50,INVALC,INVALC,INVALC,0x6E51, INVALC,INVALC,INVALC,INVALC,0x6E54,0x6E53,INVALC,INVALC, 0x3E7A,INVALC,0x6E55,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6E56,0x6E57,INVALC,INVALC,INVALC,INVALC,0x4850,0x3A53, 0x3C61,0x6E58,INVALC,0x6E59,0x4E24,0x3D45,0x4C6E,0x4E4C, 0x6E5A,0x3662,INVALC,INVALC,INVALC,INVALC,0x6E5B,INVALC, 0x4523,INVALC,INVALC,0x6E5E,0x3378,0x3F4B,INVALC,0x6E5C, INVALC,0x6E5D,INVALC,0x4460,INVALC,INVALC,0x4B55,0x367C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6E60,0x6E61,INVALC, INVALC,INVALC,INVALC,INVALC,0x6E5F,INVALC,INVALC,0x6E63, /* Block 147, Array index 0x4F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x465F,0x3343,INVALC, INVALC,0x6E67,INVALC,INVALC,0x6E64,0x6E66,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6E62,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6F4F,INVALC,INVALC,0x6E65,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4E6B,INVALC,INVALC,0x385A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6E6F, INVALC,INVALC,INVALC,INVALC,0x4534,0x6E6A,INVALC,INVALC, 0x6E6D,0x6E6B,INVALC,0x6E70,INVALC,INVALC,INVALC,INVALC, 0x6E71,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6E69, INVALC,INVALC,0x6E76,0x3174,INVALC,INVALC,0x6E68,INVALC, INVALC,INVALC,0x482D,INVALC,0x6E6C,INVALC,0x3E60,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x395B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4B48,INVALC, 0x3664,INVALC,INVALC,0x3D46,INVALC,0x463C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x412D,INVALC,0x6E74,INVALC,0x6E6E,0x6E73,INVALC, 0x4C43,INVALC,0x4438,0x6E75,0x6E72,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x412C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6E79, INVALC,0x6E78,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6E77, INVALC,INVALC,0x4B2F,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3D7B,INVALC,INVALC,INVALC, INVALC,0x6E7A,0x4A5F,INVALC,INVALC,0x3154,INVALC,INVALC, INVALC,INVALC,0x4946,0x4372,INVALC,INVALC,INVALC,INVALC, 0x3578,INVALC,0x6E7C,INVALC,0x395D,INVALC,INVALC,INVALC, /* Block 148, Array index 0x5000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3B2C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6E7B, 0x3F6D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3F6E,0x6F21,0x6F23,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3E7B,INVALC,0x6F22,0x6F24,INVALC,INVALC,0x3653,INVALC, 0x4945,INVALC,INVALC,0x3C62,0x4F23,INVALC,0x6E7E,0x3A78, INVALC,INVALC,0x4F3F,INVALC,INVALC,0x6F26,INVALC,INVALC, INVALC,INVALC,0x6F25,0x6F27,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6E7D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4669,INVALC,0x4555,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4457,INVALC,0x6F2C,INVALC, INVALC,INVALC,INVALC,0x4343,0x6F28,INVALC,INVALC,INVALC, 0x6F29,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x372D,INVALC,0x6F2B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3830,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6F2A,INVALC,0x3E61,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3379,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6F30,INVALC,0x3A3F,0x4179, INVALC,INVALC,0x444A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x333B, INVALC,INVALC,INVALC,INVALC,0x6F2E,0x6F2F,0x4443,INVALC, 0x6F2D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6F31,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6F37,INVALC,INVALC,INVALC,INVALC, 0x6F3A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6F39,0x452D,INVALC,INVALC,INVALC,INVALC,0x6F32,0x6F33, 0x6F36,INVALC,INVALC,INVALC,INVALC,0x6F38,INVALC,INVALC, INVALC,0x3640,INVALC,INVALC,0x6F3B,0x6F35,INVALC,INVALC, 0x6F34,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 149, Array index 0x5100 */ INVALC,INVALC,INVALC,0x6F3F,INVALC,INVALC,INVALC,0x6F40, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6F41,INVALC,INVALC,0x6F3E,0x6F3D,INVALC,INVALC,INVALC, 0x3E62,0x462A,0x6F3C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6F45,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6F43,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6F44,0x6F42,INVALC, 0x4278,INVALC,0x6F46,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6F47,INVALC,INVALC,0x6F49,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3455,0x6F48,0x4C7A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6F54,0x6F4A,INVALC,INVALC,0x6F4D,INVALC, 0x6F4B,INVALC,0x6F4C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6F4E,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6F50,INVALC,INVALC,INVALC,INVALC,0x6F51,INVALC,0x6F52, INVALC,INVALC,INVALC,INVALC,0x6F55,0x6F53,0x6F56,0x6F58, INVALC,0x6F57,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 150, Array index 0x5200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4439, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4C67,INVALC,0x6F59,0x412E,INVALC,INVALC,INVALC,0x6F5A, INVALC,0x4A44,0x6F5B,0x332B,INVALC,INVALC,INVALC,0x313C, INVALC,0x3457,INVALC,0x3456,0x6F5C,INVALC,0x6F5D,INVALC, 0x6F5E,0x6F5F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6F60,INVALC,0x3458,0x3355,0x395E,0x4836,INVALC,0x6F62, 0x6F61,INVALC,INVALC,INVALC,INVALC,0x6F63,INVALC,INVALC, INVALC,INVALC,0x315C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6F66,INVALC,0x6F65,0x6F64,INVALC,0x6F67,INVALC, INVALC,INVALC,INVALC,0x6F6A,INVALC,INVALC,INVALC,0x3047, INVALC,INVALC,0x6F68,INVALC,0x6F6C,0x6F6B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6F6E,0x6F6D,0x6F6F,INVALC, 0x462E,INVALC,INVALC,INVALC,0x6F70,INVALC,INVALC,INVALC, INVALC,0x6F71,0x6F73,INVALC,INVALC,0x6F72,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 151, Array index 0x5300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x496C,INVALC,INVALC,INVALC, INVALC,0x6F74,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6F75,INVALC,0x3A65,INVALC,INVALC,INVALC,0x6F76,0x6F77, INVALC,INVALC,0x4B49,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x414B,INVALC,INVALC,INVALC,0x3024, 0x424B,INVALC,0x6F78,INVALC,0x496D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6F7B,0x6F79,0x395F,INVALC,0x6F7A, 0x3842,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4A45,0x6F7D,0x7021,0x6F7E,0x7022, INVALC,INVALC,0x3121,0x3F58,0x3D7C,0x3459,0x7023,INVALC, INVALC,INVALC,0x4766,INVALC,0x7025,INVALC,INVALC,INVALC, 0x3122,INVALC,0x7024,0x4444,INVALC,0x4E4D,0x462B,0x6F7C, 0x4E26,INVALC,0x3831,INVALC,INVALC,0x4D5B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3679,0x4E34,INVALC, 0x3728,INVALC,0x4262,0x6721,INVALC,0x7026,0x332C,0x3F6F, INVALC,INVALC,INVALC,INVALC,0x3356,0x7028,INVALC,0x7029, 0x7027,0x3764,INVALC,0x3A5D,0x3E63,INVALC,INVALC,INVALC, 0x3123,INVALC,INVALC,0x4E59,INVALC,INVALC,INVALC,0x702B, 0x6E2E,INVALC,0x702A,INVALC,INVALC,INVALC,INVALC,INVALC, 0x702E,0x702C,0x702D,INVALC,0x702F,INVALC,0x7030,0x4E6C, 0x7031,0x7032,INVALC,0x4049,0x483B,INVALC,INVALC,INVALC, 0x3F7D,0x3467,INVALC,INVALC,0x4D3A,0x326D,0x3D38,0x385B, INVALC,0x7035,INVALC,0x7034,0x3B73,0x7036,0x7033,INVALC, INVALC,0x3B28,INVALC,INVALC,INVALC,0x703A,0x6A2D,INVALC, INVALC,0x5256,INVALC,0x3F77,0x7038,INVALC,INVALC,INVALC, INVALC,INVALC,0x4E25,0x4671,INVALC,INVALC,INVALC,INVALC, 0x312B,INVALC,0x4063,0x3C36,INVALC,INVALC,INVALC,INVALC, 0x4A37,INVALC,0x3140,INVALC,INVALC,INVALC,0x4E6D,0x4D6B, INVALC,0x703B,INVALC,0x4545,INVALC,INVALC,INVALC,INVALC, /* Block 152, Array index 0x5400 */ 0x3C7B,INVALC,INVALC,INVALC,0x703C,INVALC,0x703D,0x3F4C, 0x703E,INVALC,0x4E6E,INVALC,INVALC,0x7039,0x7040,0x7042, INVALC,0x7041,INVALC,0x703F,INVALC,INVALC,0x7043,INVALC, INVALC,0x7044,INVALC,INVALC,0x417A,INVALC,0x3262,INVALC, INVALC,INVALC,INVALC,INVALC,0x7045,INVALC,INVALC,0x4C38, INVALC,INVALC,0x7046,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7047,INVALC,0x4F2A,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5B31,0x7048,INVALC,INVALC,INVALC,0x7049,0x704A,INVALC, INVALC,INVALC,0x704E,INVALC,0x704B,INVALC,0x704C,INVALC, 0x704D,0x704F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4044,INVALC,INVALC,INVALC,0x4C77,INVALC, INVALC,0x4045,INVALC,INVALC,0x7050,INVALC,0x4873,INVALC, 0x7051,0x7353,0x4C4C,INVALC,0x7052,INVALC,0x7053,INVALC, 0x7054,0x3357,INVALC,0x7056,INVALC,0x3F59,INVALC,INVALC, INVALC,0x7057,INVALC,INVALC,0x3724,INVALC,INVALC,INVALC, INVALC,0x7058,0x705C,INVALC,0x705A,INVALC,INVALC,INVALC, INVALC,0x705B,INVALC,INVALC,0x3373,0x7059,0x705D,INVALC, INVALC,INVALC,INVALC,0x705E,INVALC,0x3048,INVALC,0x705F, 0x7060,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3E64,INVALC,INVALC,INVALC,0x7061,INVALC,INVALC,INVALC, 0x3547,INVALC,INVALC,0x7064,INVALC,INVALC,0x7063,INVALC, 0x7062,INVALC,INVALC,0x6B71,INVALC,0x4A5C,INVALC,INVALC, INVALC,INVALC,INVALC,0x7065,0x7066,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7067,INVALC,INVALC,0x7068,INVALC, 0x7069,INVALC,INVALC,0x706A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x345A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x706B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x706C,0x4723,INVALC, INVALC,INVALC,0x706E,0x323B,INVALC,0x7071,0x7070,INVALC, INVALC,INVALC,INVALC,0x3124,INVALC,INVALC,INVALC,0x3641, /* Block 153, Array index 0x5500 */ INVALC,0x4A47,0x443A,0x3A22,INVALC,0x3960,0x3D67,INVALC, 0x3F5C,INVALC,INVALC,INVALC,0x7073,INVALC,INVALC,0x7072, 0x4D42,0x3468,0x4852,0x465C,INVALC,INVALC,INVALC,0x3F7C, 0x4E4E,INVALC,0x375B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7076,INVALC,INVALC,0x7075,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4B4B,0x462C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3150,INVALC,INVALC,0x7077, 0x7074,INVALC,INVALC,0x4951,0x4D6A,0x7078,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7079,INVALC, INVALC,INVALC,INVALC,0x707B,0x426A,0x335B,0x335C,0x707A, INVALC,INVALC,INVALC,INVALC,0x3469,0x3832,INVALC,INVALC, 0x346A,INVALC,INVALC,0x453F,INVALC,INVALC,0x4E60,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x385C, INVALC,INVALC,INVALC,0x707C,INVALC,INVALC,INVALC,0x707D, 0x707E,0x7121,INVALC,0x7123,0x7122,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4977,INVALC,0x7124,INVALC,INVALC,INVALC,INVALC,0x7125, INVALC,0x7126,INVALC,INVALC,INVALC,INVALC,0x7127,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7129,0x7128,INVALC,0x712A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4874,0x664C,INVALC,INVALC,0x3F29, INVALC,INVALC,0x3532,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x712B,INVALC,0x712C,INVALC,0x522C,0x5D3B,0x4853, INVALC,INVALC,0x307B,INVALC,0x303B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3B74,0x4B30,0x3E7E,INVALC, /* Block 154, Array index 0x5600 */ INVALC,INVALC,INVALC,0x712D,INVALC,0x4C5F,INVALC,INVALC, INVALC,0x712E,0x4D5C,INVALC,0x3142,INVALC,INVALC,INVALC, 0x3B41,INVALC,0x712F,0x326E,0x7130,INVALC,INVALC,INVALC, 0x7131,INVALC,INVALC,INVALC,INVALC,0x7133,0x7134,INVALC, 0x7136,0x7132,INVALC,INVALC,0x7135,INVALC,INVALC,INVALC, 0x345B,INVALC,INVALC,INVALC,0x7137,INVALC,0x7138,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7139,0x713A,INVALC, INVALC,INVALC,0x713B,INVALC,INVALC,0x713D,INVALC,INVALC, INVALC,0x713C,INVALC,0x713F,0x7142,INVALC,INVALC,INVALC, 0x713E,0x7140,0x7141,INVALC,INVALC,0x7143,INVALC,0x3642, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3C73,0x7144, 0x7145,0x3961,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7146,INVALC,INVALC, 0x333E,INVALC,INVALC,INVALC,0x474F,0x7147,0x7148,INVALC, INVALC,INVALC,INVALC,0x435A,0x466B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7149,INVALC,INVALC,INVALC, INVALC,0x477D,INVALC,INVALC,0x424C,0x3158,0x366E,INVALC, 0x366F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4373,0x714E,0x3670,INVALC,INVALC,0x326F,INVALC,INVALC, 0x714D,INVALC,INVALC,0x714B,INVALC,0x714C,INVALC,0x714A, INVALC,INVALC,0x7158,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x714F,0x7150,INVALC, INVALC,0x7151,0x7152,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7154,INVALC,INVALC,0x7153,INVALC,INVALC,INVALC,0x3D59, /* Block 155, Array index 0x5700 */ INVALC,0x7155,INVALC,INVALC,INVALC,0x7157,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3533,0x7156, INVALC,INVALC,0x417B,0x3833,INVALC,INVALC,INVALC,INVALC, INVALC,0x7159,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x424D,INVALC,INVALC,0x715A,INVALC,INVALC,INVALC,INVALC, 0x462D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x715B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7160,INVALC, 0x715E,INVALC,0x715D,0x715F,INVALC,0x715C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7162,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7161,INVALC,0x7164, INVALC,INVALC,0x3643,0x7163,INVALC,INVALC,INVALC,0x7165, INVALC,INVALC,0x7166,INVALC,0x7168,0x7167,INVALC,INVALC, INVALC,0x7169,0x716B,0x716A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x397C,INVALC,INVALC,INVALC,INVALC,0x716C,INVALC,INVALC, 0x716D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x333C,INVALC,INVALC,INVALC,0x716E,INVALC,INVALC,INVALC, 0x716F,INVALC,INVALC,INVALC,0x3F71,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7170, INVALC,0x7171,INVALC,0x7172,0x7173,INVALC,INVALC,INVALC, 0x3962,INVALC,INVALC,INVALC,INVALC,INVALC,0x7174,0x7175, INVALC,INVALC,0x7176,0x7177,INVALC,INVALC,0x7178,INVALC, INVALC,INVALC,0x4831,0x717A,INVALC,0x4926,0x717B,0x7179, INVALC,0x717D,INVALC,INVALC,0x717C,INVALC,INVALC,0x717E, INVALC,INVALC,INVALC,0x7221,INVALC,INVALC,INVALC,INVALC, /* Block 156, Array index 0x5800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7222,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7223,INVALC,0x7224,INVALC,INVALC,INVALC,INVALC,0x7225, INVALC,INVALC,0x7226,0x7227,INVALC,0x7228,INVALC,0x7229, 0x722A,0x722B,0x722C,INVALC,INVALC,INVALC,0x722D,0x722E, INVALC,0x5D35,0x722F,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6478,0x3534,INVALC,INVALC,INVALC, INVALC,0x3321,0x3A32,0x7231,0x7230,0x4C25,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7233,0x7234,0x7232, INVALC,0x7235,INVALC,INVALC,0x4B62,INVALC,INVALC,INVALC, 0x7236,INVALC,0x357B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4F25, INVALC,INVALC,INVALC,INVALC,0x7237,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7239,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x303E,INVALC, INVALC,0x723A,0x4A2B,0x7238,INVALC,INVALC,0x723B,0x723C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x723D, 0x723E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x723F,INVALC,0x4B6E,0x3B2D,INVALC,0x3A7A,0x412F,INVALC, INVALC,INVALC,INVALC,INVALC,0x7240,INVALC,INVALC,INVALC, INVALC,0x7243,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7241,INVALC,INVALC,INVALC,INVALC,INVALC,0x7244,INVALC, INVALC,0x3871,0x7242,INVALC,INVALC,INVALC,INVALC,0x7245, INVALC,0x7246,0x7247,INVALC,0x724B,INVALC,0x3B2A,INVALC, INVALC,INVALC,INVALC,0x4264,INVALC,INVALC,INVALC,INVALC, INVALC,0x724C,0x7249,0x7248,0x724A,INVALC,INVALC,INVALC, 0x375F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7250,0x724F,0x724E,INVALC,INVALC,0x3033,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 157, Array index 0x5900 */ INVALC,INVALC,INVALC,INVALC,0x725A,INVALC,0x7256,INVALC, 0x7257,0x7253,0x7259,INVALC,0x7255,0x3362,INVALC,INVALC, 0x4F4C,INVALC,0x7258,0x7254,0x7252,0x7251,INVALC,INVALC, INVALC,INVALC,INVALC,0x725C,INVALC,INVALC,INVALC,INVALC, INVALC,0x725F,INVALC,INVALC,0x725E,0x725D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4949,0x725B,0x3073, 0x7260,INVALC,0x7262,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x336F,0x724D,0x3137,INVALC,INVALC,0x7264,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7263,0x7261, 0x432D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4B70,INVALC,INVALC,INVALC,INVALC,0x4E5A, INVALC,INVALC,0x7265,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7266,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7267, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7268,INVALC, 0x7269,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x443B,INVALC,0x726A, INVALC,0x4837,INVALC,0x726F,0x726B,INVALC,INVALC,INVALC, 0x726C,INVALC,INVALC,0x4B31,0x4C44,INVALC,0x4650,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 158, Array index 0x5A00 */ INVALC,INVALC,INVALC,0x7270,INVALC,INVALC,0x7271,0x463E, 0x726E,0x726D,INVALC,INVALC,INVALC,INVALC,0x322A,INVALC, INVALC,INVALC,0x7279,INVALC,INVALC,0x7278,INVALC,INVALC, INVALC,INVALC,INVALC,0x3175,INVALC,INVALC,INVALC,0x7276, INVALC,INVALC,INVALC,0x7275,INVALC,INVALC,0x7273,INVALC, 0x337B,INVALC,0x7272,0x3C32,0x3229,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3963,INVALC,INVALC,0x727C,0x727B, INVALC,0x727A,INVALC,INVALC,0x7277,INVALC,0x727D,INVALC, 0x727E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7325,0x7324,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7326,INVALC,INVALC,0x312D,0x7321,0x7322,INVALC, 0x3974,0x4C39,INVALC,INVALC,0x7323,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4B32,INVALC,INVALC,0x732B, INVALC,INVALC,0x7327,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x732C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7329, INVALC,0x7328,INVALC,INVALC,INVALC,INVALC,INVALC,0x375C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x732D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x732E,INVALC,INVALC,INVALC, INVALC,0x732F,INVALC,0x732A,INVALC,INVALC,INVALC,0x7274, INVALC,INVALC,0x7330,INVALC,0x4461,INVALC,INVALC,INVALC, 0x7334,INVALC,0x7335,0x7333,INVALC,INVALC,INVALC,INVALC, INVALC,0x7332,0x7338,INVALC,0x7331,INVALC,0x7336,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7337, INVALC,INVALC,INVALC,0x733A,INVALC,INVALC,INVALC,INVALC, INVALC,0x7339,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x733C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x733D,INVALC,0x733E, INVALC,INVALC,0x4F49,INVALC,INVALC,INVALC,INVALC,INVALC, 0x733B,0x426B,0x3A6D,INVALC,INVALC,0x733F,INVALC,INVALC, /* Block 159, Array index 0x5B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7340,0x7341,INVALC,INVALC,0x7342,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7343,INVALC,INVALC, 0x3834,0x7344,INVALC,INVALC,INVALC,0x7345,INVALC,0x3C2F, INVALC,0x7346,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7347,INVALC,INVALC,0x7348,0x7349,INVALC,INVALC,INVALC, INVALC,0x734C,0x734A,0x4F3C,INVALC,0x734B,INVALC,0x4E6F, INVALC,INVALC,INVALC,INVALC,INVALC,0x734D,INVALC,0x4E5B, INVALC,INVALC,INVALC,INVALC,INVALC,0x734E,0x477E,INVALC, INVALC,0x734F,0x7351,INVALC,INVALC,0x7352,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7350,0x396D,0x4C4D,0x4B63,0x5677,INVALC,0x5D60,0x4B7B, INVALC,INVALC,INVALC,INVALC,0x322B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7354,0x3550,0x7355,0x7356, 0x7357,INVALC,0x3975,INVALC,0x7358,INVALC,INVALC,INVALC, 0x6054,0x4C5B,INVALC,0x4263,0x7359,0x735B,0x735A,INVALC, 0x735C,INVALC,INVALC,INVALC,INVALC,0x735D,INVALC,INVALC, 0x735E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x735F, INVALC,INVALC,INVALC,INVALC,0x7360,INVALC,0x7361,0x7362, INVALC,0x7363,INVALC,0x7364,0x7365,0x7366,INVALC,INVALC, /* Block 160, Array index 0x5C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7367, 0x7368,INVALC,INVALC,INVALC,INVALC,INVALC,0x4524,INVALC, INVALC,INVALC,INVALC,0x385D,INVALC,0x736A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x414D,0x736B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x736C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4921,INVALC,INVALC,0x736D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x736E,0x6337,INVALC,INVALC,0x6C5A,0x706D, INVALC,INVALC,0x736F,INVALC,0x7370,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7372, 0x7373,0x7374,0x4E70,0x7371,INVALC,INVALC,0x7375,0x7376, INVALC,INVALC,0x7378,INVALC,0x7377,INVALC,INVALC,INVALC, INVALC,INVALC,0x737A,INVALC,INVALC,INVALC,0x737B,0x7379, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4E36,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x737C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x737D,0x6354,INVALC,INVALC, 0x737E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 256, Array index 0x5D00 */ INVALC,0x212A,INVALC,0x2174,0x2170,0x2173,0x2175,INVALC, 0x214A,0x214B,0x2176,0x215C,0x2124,INVALC,0x2125,0x213F, 0x2330,0x2331,0x2332,0x2333,0x2334,0x2335,0x2336,0x2337, 0x2338,0x2339,0x2127,0x2128,0x2163,0x2161,0x2164,0x2129, 0x2177,0x2341,0x2342,0x2343,0x2344,0x2345,0x2346,0x2347, 0x2348,0x2349,0x234A,0x234B,0x234C,0x234D,0x234E,0x234F, 0x2350,0x2351,0x2352,0x2353,0x2354,0x2355,0x2356,0x2357, 0x2358,0x2359,0x235A,0x214E,INVALC,0x214F,0x2130,0x2132, 0x212E,0x2361,0x2362,0x2363,0x2364,0x2365,0x2366,0x2367, 0x2368,0x2369,0x236A,0x236B,0x236C,0x236D,0x236E,0x236F, 0x2370,0x2371,0x2372,0x2373,0x2374,0x2375,0x2376,0x2377, 0x2378,0x2379,0x237A,0x2150,0x2143,0x2151,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2131,INVALC,0x216F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, }; #endif /* ICONV_FROM_UCS_CCS_JIS_X0208_1990 && !defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * 16-bit UCS -> jis_x0208_1990 size-optimized table (25440 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_JIS_X0208_1990) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t from_ucs_size_jis_x0208_1990[] = { 0x01E9, /* Ranges number */ 0x0E1F, /* Unranged codes number */ 0x1572, /* First unranged code index */ /* Ranges list: first code, last Code, array index. */ /* Array index: 0x0003 */ 0x0391, 0x03A9, 0x05BE, /* Array index: 0x0006 */ 0x03B1, 0x03C9, 0x05D7, /* Array index: 0x0009 */ 0x0410, 0x0451, 0x05F0, /* Array index: 0x000C */ 0x2015, 0x2021, 0x0632, /* Array index: 0x000F */ 0x2190, 0x2193, 0x063F, /* Array index: 0x0012 */ 0x2227, 0x222C, 0x0643, /* Array index: 0x0015 */ 0x2500, 0x2503, 0x0649, /* Array index: 0x0018 */ 0x2517, 0x251D, 0x064D, /* Array index: 0x001B */ 0x2523, 0x2525, 0x0654, /* Array index: 0x001E */ 0x3000, 0x3015, 0x0657, /* Array index: 0x0021 */ 0x3041, 0x3093, 0x066D, /* Array index: 0x0024 */ 0x309B, 0x30F6, 0x06C0, /* Array index: 0x0027 */ 0x30FB, 0x30FE, 0x071C, /* Array index: 0x002A */ 0x4E07, 0x4E19, 0x0720, /* Array index: 0x002D */ 0x4E38, 0x4E3C, 0x0733, /* Array index: 0x0030 */ 0x4E4B, 0x4E4F, 0x0738, /* Array index: 0x0033 */ 0x4E55, 0x4E5F, 0x073D, /* Array index: 0x0036 */ 0x4E85, 0x4EB0, 0x0748, /* Array index: 0x0039 */ 0x4EC0, 0x4ECF, 0x0774, /* Array index: 0x003C */ 0x4ED4, 0x4EE5, 0x0784, /* Array index: 0x003F */ 0x4F09, 0x4F11, 0x0796, /* Array index: 0x0042 */ 0x4F4D, 0x4F5E, 0x079F, /* Array index: 0x0045 */ 0x4FAB, 0x4FAF, 0x07B1, /* Array index: 0x0048 */ 0x4FC2, 0x4FC4, 0x07B6, /* Array index: 0x004B */ 0x4FD7, 0x4FE5, 0x07B9, /* Array index: 0x004E */ 0x5021, 0x502D, 0x07C8, /* Array index: 0x0051 */ 0x5047, 0x5049, 0x07D5, /* Array index: 0x0054 */ 0x5072, 0x5078, 0x07D8, /* Array index: 0x0057 */ 0x5098, 0x509A, 0x07DF, /* Array index: 0x005A */ 0x50B2, 0x50B7, 0x07E2, /* Array index: 0x005D */ 0x5100, 0x5104, 0x07E8, /* Array index: 0x0060 */ 0x5112, 0x511A, 0x07ED, /* Array index: 0x0063 */ 0x513A, 0x5154, 0x07F6, /* Array index: 0x0066 */ 0x5168, 0x516E, 0x0811, /* Array index: 0x0069 */ 0x5175, 0x5178, 0x0818, /* Array index: 0x006C */ 0x5189, 0x5199, 0x081C, /* Array index: 0x006F */ 0x51A2, 0x51B7, 0x082D, /* Array index: 0x0072 */ 0x51C4, 0x51C6, 0x0843, /* Array index: 0x0075 */ 0x51C9, 0x51CD, 0x0846, /* Array index: 0x0078 */ 0x51DB, 0x51E1, 0x084B, /* Array index: 0x007B */ 0x51E6, 0x51EA, 0x0852, /* Array index: 0x007E */ 0x51F5, 0x520B, 0x0857, /* Array index: 0x0081 */ 0x5236, 0x523B, 0x086E, /* Array index: 0x0084 */ 0x524A, 0x524F, 0x0874, /* Array index: 0x0087 */ 0x5263, 0x5265, 0x087A, /* Array index: 0x008A */ 0x526F, 0x5275, 0x087D, /* Array index: 0x008D */ 0x5287, 0x5289, 0x0884, /* Array index: 0x0090 */ 0x52A9, 0x52AD, 0x0887, /* Array index: 0x0093 */ 0x52D5, 0x52E7, 0x088C, /* Array index: 0x0096 */ 0x52F8, 0x52FA, 0x089F, /* Array index: 0x0099 */ 0x52FE, 0x5308, 0x08A2, /* Array index: 0x009C */ 0x5315, 0x531A, 0x08AD, /* Array index: 0x009F */ 0x5338, 0x534A, 0x08B3, /* Array index: 0x00A2 */ 0x5351, 0x5360, 0x08C6, /* Array index: 0x00A5 */ 0x536E, 0x5378, 0x08D6, /* Array index: 0x00A8 */ 0x53A5, 0x53A9, 0x08E1, /* Array index: 0x00AB */ 0x53C8, 0x53CE, 0x08E6, /* Array index: 0x00AE */ 0x53DF, 0x53FA, 0x08ED, /* Array index: 0x00B1 */ 0x5408, 0x5411, 0x0909, /* Array index: 0x00B4 */ 0x5429, 0x542E, 0x0913, /* Array index: 0x00B7 */ 0x5438, 0x5442, 0x0919, /* Array index: 0x00BA */ 0x5446, 0x544A, 0x0924, /* Array index: 0x00BD */ 0x5473, 0x547D, 0x0929, /* Array index: 0x00C0 */ 0x548B, 0x5492, 0x0934, /* Array index: 0x00C3 */ 0x54BC, 0x54C9, 0x093C, /* Array index: 0x00C6 */ 0x54E5, 0x54E9, 0x094A, /* Array index: 0x00C9 */ 0x5544, 0x5546, 0x094F, /* Array index: 0x00CC */ 0x5587, 0x558B, 0x0952, /* Array index: 0x00CF */ 0x5598, 0x559F, 0x0957, /* Array index: 0x00D2 */ 0x55A7, 0x55B0, 0x095F, /* Array index: 0x00D5 */ 0x5614, 0x5618, 0x0969, /* Array index: 0x00D8 */ 0x5668, 0x566C, 0x096E, /* Array index: 0x00DB */ 0x56C0, 0x56C3, 0x0973, /* Array index: 0x00DE */ 0x56D7, 0x56DB, 0x0977, /* Array index: 0x00E1 */ 0x5726, 0x5728, 0x097C, /* Array index: 0x00E4 */ 0x574E, 0x5751, 0x097F, /* Array index: 0x00E7 */ 0x57A0, 0x57A4, 0x0983, /* Array index: 0x00EA */ 0x57D2, 0x57D6, 0x0988, /* Array index: 0x00ED */ 0x582F, 0x5835, 0x098D, /* Array index: 0x00F0 */ 0x5857, 0x585A, 0x0994, /* Array index: 0x00F3 */ 0x58B8, 0x58BB, 0x0998, /* Array index: 0x00F6 */ 0x58D5, 0x58D9, 0x099C, /* Array index: 0x00F9 */ 0x58EB, 0x58F2, 0x09A1, /* Array index: 0x00FC */ 0x58F7, 0x58FD, 0x09A9, /* Array index: 0x00FF */ 0x5915, 0x591C, 0x09B0, /* Array index: 0x0102 */ 0x5927, 0x5932, 0x09B8, /* Array index: 0x0105 */ 0x5947, 0x5949, 0x09C4, /* Array index: 0x0108 */ 0x594E, 0x595A, 0x09C7, /* Array index: 0x010B */ 0x5965, 0x596E, 0x09D4, /* Array index: 0x010E */ 0x5981, 0x5984, 0x09DE, /* Array index: 0x0111 */ 0x59D0, 0x59D4, 0x09E2, /* Array index: 0x0114 */ 0x5ABC, 0x5AC2, 0x09E7, /* Array index: 0x0117 */ 0x5B54, 0x5B66, 0x09EE, /* Array index: 0x011A */ 0x5B85, 0x5B8F, 0x0A01, /* Array index: 0x011D */ 0x5B95, 0x5BA6, 0x0A0C, /* Array index: 0x0120 */ 0x5BB3, 0x5BB9, 0x0A1E, /* Array index: 0x0123 */ 0x5BC2, 0x5BC9, 0x0A25, /* Array index: 0x0126 */ 0x5BD0, 0x5BD4, 0x0A2D, /* Array index: 0x0129 */ 0x5BDB, 0x5BEB, 0x0A32, /* Array index: 0x012C */ 0x5BFE, 0x5C13, 0x0A43, /* Array index: 0x012F */ 0x5C38, 0x5C41, 0x0A59, /* Array index: 0x0132 */ 0x5C4A, 0x5C55, 0x0A63, /* Array index: 0x0135 */ 0x5CA8, 0x5CAC, 0x0A6F, /* Array index: 0x0138 */ 0x5CB6, 0x5CBE, 0x0A74, /* Array index: 0x013B */ 0x5CE8, 0x5CEA, 0x0A7D, /* Array index: 0x013E */ 0x5D14, 0x5D1B, 0x0A80, /* Array index: 0x0141 */ 0x5DE3, 0x5DE8, 0x0A88, /* Array index: 0x0144 */ 0x5DF1, 0x5DF7, 0x0A8E, /* Array index: 0x0147 */ 0x5E19, 0x5E1D, 0x0A95, /* Array index: 0x014A */ 0x5E36, 0x5E38, 0x0A9A, /* Array index: 0x014D */ 0x5E43, 0x5E47, 0x0A9D, /* Array index: 0x0150 */ 0x5E5F, 0x5E64, 0x0AA2, /* Array index: 0x0153 */ 0x5E72, 0x5E84, 0x0AA8, /* Array index: 0x0156 */ 0x5E95, 0x5E97, 0x0ABB, /* Array index: 0x0159 */ 0x5EB5, 0x5EB8, 0x0ABE, /* Array index: 0x015C */ 0x5EC1, 0x5EC3, 0x0AC2, /* Array index: 0x015F */ 0x5EC8, 0x5ECA, 0x0AC5, /* Array index: 0x0162 */ 0x5EDD, 0x5EE3, 0x0AC8, /* Array index: 0x0165 */ 0x5EF0, 0x5F04, 0x0ACF, /* Array index: 0x0168 */ 0x5F09, 0x5F18, 0x0AE4, /* Array index: 0x016B */ 0x5F25, 0x5F29, 0x0AF4, /* Array index: 0x016E */ 0x5F69, 0x5F73, 0x0AF9, /* Array index: 0x0171 */ 0x5F7F, 0x5F99, 0x0B04, /* Array index: 0x0174 */ 0x5FA8, 0x5FAE, 0x0B1F, /* Array index: 0x0177 */ 0x5FD6, 0x5FDD, 0x0B26, /* Array index: 0x017A */ 0x600E, 0x6016, 0x0B2E, /* Array index: 0x017D */ 0x6019, 0x602B, 0x0B37, /* Array index: 0x0180 */ 0x6041, 0x6043, 0x0B4A, /* Array index: 0x0183 */ 0x605F, 0x6070, 0x0B4D, /* Array index: 0x0186 */ 0x6089, 0x608D, 0x0B5F, /* Array index: 0x0189 */ 0x60A6, 0x60AA, 0x0B64, /* Array index: 0x018C */ 0x60B2, 0x60B8, 0x0B69, /* Array index: 0x018F */ 0x60C5, 0x60C7, 0x0B70, /* Array index: 0x0192 */ 0x60DF, 0x60E3, 0x0B73, /* Array index: 0x0195 */ 0x60F0, 0x60FB, 0x0B78, /* Array index: 0x0198 */ 0x610D, 0x610F, 0x0B84, /* Array index: 0x019B */ 0x613C, 0x613F, 0x0B87, /* Array index: 0x019E */ 0x6147, 0x614E, 0x0B8B, /* Array index: 0x01A1 */ 0x6158, 0x615A, 0x0B93, /* Array index: 0x01A4 */ 0x616E, 0x6177, 0x0B96, /* Array index: 0x01A7 */ 0x61C6, 0x61CD, 0x0BA0, /* Array index: 0x01AA */ 0x61F4, 0x6200, 0x0BA8, /* Array index: 0x01AD */ 0x6208, 0x6216, 0x0BB5, /* Array index: 0x01B0 */ 0x621A, 0x6221, 0x0BC4, /* Array index: 0x01B3 */ 0x622E, 0x6234, 0x0BCC, /* Array index: 0x01B6 */ 0x623F, 0x6241, 0x0BD3, /* Array index: 0x01B9 */ 0x6247, 0x624E, 0x0BD6, /* Array index: 0x01BC */ 0x627C, 0x6284, 0x0BDE, /* Array index: 0x01BF */ 0x6291, 0x629E, 0x0BE7, /* Array index: 0x01C2 */ 0x62B9, 0x62BD, 0x0BF5, /* Array index: 0x01C5 */ 0x62C5, 0x62E1, 0x0BFA, /* Array index: 0x01C8 */ 0x62EC, 0x62F7, 0x0C17, /* Array index: 0x01CB */ 0x62FE, 0x6302, 0x0C23, /* Array index: 0x01CE */ 0x6307, 0x6309, 0x0C28, /* Array index: 0x01D1 */ 0x633D, 0x633F, 0x0C2B, /* Array index: 0x01D4 */ 0x634C, 0x6350, 0x0C2E, /* Array index: 0x01D7 */ 0x6367, 0x636B, 0x0C33, /* Array index: 0x01DA */ 0x639F, 0x63AC, 0x0C38, /* Array index: 0x01DD */ 0x64E0, 0x64E7, 0x0C46, /* Array index: 0x01E0 */ 0x652A, 0x652C, 0x0C4E, /* Array index: 0x01E3 */ 0x6534, 0x653F, 0x0C51, /* Array index: 0x01E6 */ 0x6555, 0x6559, 0x0C5D, /* Array index: 0x01E9 */ 0x6574, 0x6578, 0x0C62, /* Array index: 0x01EC */ 0x6587, 0x6589, 0x0C67, /* Array index: 0x01EF */ 0x65AB, 0x65B0, 0x0C6A, /* Array index: 0x01F2 */ 0x65C1, 0x65C6, 0x0C70, /* Array index: 0x01F5 */ 0x65E0, 0x65ED, 0x0C76, /* Array index: 0x01F8 */ 0x6634, 0x6636, 0x0C84, /* Array index: 0x01FB */ 0x663F, 0x6644, 0x0C87, /* Array index: 0x01FE */ 0x665D, 0x665F, 0x0C8D, /* Array index: 0x0201 */ 0x6664, 0x6669, 0x0C90, /* Array index: 0x0204 */ 0x666E, 0x6670, 0x0C96, /* Array index: 0x0207 */ 0x6683, 0x6689, 0x0C99, /* Array index: 0x020A */ 0x6696, 0x6698, 0x0CA0, /* Array index: 0x020D */ 0x66D9, 0x66DD, 0x0CA3, /* Array index: 0x0210 */ 0x66F0, 0x6700, 0x0CA8, /* Array index: 0x0213 */ 0x6714, 0x6717, 0x0CB9, /* Array index: 0x0216 */ 0x671B, 0x671F, 0x0CBD, /* Array index: 0x0219 */ 0x6726, 0x672E, 0x0CC2, /* Array index: 0x021C */ 0x6734, 0x673A, 0x0CCB, /* Array index: 0x021F */ 0x674E, 0x6753, 0x0CD2, /* Array index: 0x0222 */ 0x675C, 0x6765, 0x0CD8, /* Array index: 0x0225 */ 0x676D, 0x6777, 0x0CE2, /* Array index: 0x0228 */ 0x679C, 0x67A2, 0x0CED, /* Array index: 0x022B */ 0x67B3, 0x67B9, 0x0CF4, /* Array index: 0x022E */ 0x67CE, 0x67D4, 0x0CFB, /* Array index: 0x0231 */ 0x67F1, 0x67F5, 0x0D02, /* Array index: 0x0234 */ 0x67FE, 0x6804, 0x0D07, /* Array index: 0x0237 */ 0x6829, 0x682B, 0x0D0E, /* Array index: 0x023A */ 0x683C, 0x6843, 0x0D11, /* Array index: 0x023D */ 0x684D, 0x6854, 0x0D19, /* Array index: 0x0240 */ 0x68A6, 0x68A8, 0x0D21, /* Array index: 0x0243 */ 0x68AD, 0x68BC, 0x0D24, /* Array index: 0x0246 */ 0x68C9, 0x68CD, 0x0D34, /* Array index: 0x0249 */ 0x68D4, 0x68DA, 0x0D39, /* Array index: 0x024C */ 0x68DF, 0x68E3, 0x0D40, /* Array index: 0x024F */ 0x690B, 0x690F, 0x0D45, /* Array index: 0x0252 */ 0x6919, 0x691C, 0x0D4A, /* Array index: 0x0255 */ 0x6921, 0x692A, 0x0D4E, /* Array index: 0x0258 */ 0x6953, 0x6955, 0x0D58, /* Array index: 0x025B */ 0x6959, 0x6962, 0x0D5B, /* Array index: 0x025E */ 0x696A, 0x6982, 0x0D65, /* Array index: 0x0261 */ 0x69CA, 0x69D0, 0x0D7E, /* Array index: 0x0264 */ 0x6A0A, 0x6A0C, 0x0D85, /* Array index: 0x0267 */ 0x6A12, 0x6A14, 0x0D88, /* Array index: 0x026A */ 0x6A1E, 0x6A23, 0x0D8B, /* Array index: 0x026D */ 0x6A29, 0x6A2B, 0x0D91, /* Array index: 0x0270 */ 0x6A35, 0x6A3A, 0x0D94, /* Array index: 0x0273 */ 0x6AC1, 0x6AC3, 0x0D9A, /* Array index: 0x0276 */ 0x6B1D, 0x6B23, 0x0D9D, /* Array index: 0x0279 */ 0x6B37, 0x6B3E, 0x0DA4, /* Array index: 0x027C */ 0x6B5F, 0x6B6A, 0x0DAC, /* Array index: 0x027F */ 0x6B89, 0x6B8D, 0x0DB8, /* Array index: 0x0282 */ 0x6BAF, 0x6BC0, 0x0DBD, /* Array index: 0x0285 */ 0x6BD2, 0x6BD4, 0x0DCF, /* Array index: 0x0288 */ 0x6C3E, 0x6C42, 0x0DD2, /* Array index: 0x028B */ 0x6C5D, 0x6C62, 0x0DD7, /* Array index: 0x028E */ 0x6C7D, 0x6C83, 0x0DDD, /* Array index: 0x0291 */ 0x6C99, 0x6C9B, 0x0DE4, /* Array index: 0x0294 */ 0x6CB8, 0x6CC5, 0x0DE7, /* Array index: 0x0297 */ 0x6CE1, 0x6CE5, 0x0DF5, /* Array index: 0x029A */ 0x6CEF, 0x6CF3, 0x0DFA, /* Array index: 0x029D */ 0x6D29, 0x6D2B, 0x0DFF, /* Array index: 0x02A0 */ 0x6D32, 0x6D38, 0x0E02, /* Array index: 0x02A3 */ 0x6D77, 0x6D79, 0x0E09, /* Array index: 0x02A6 */ 0x6DC5, 0x6DC7, 0x0E0C, /* Array index: 0x02A9 */ 0x6DE8, 0x6DEE, 0x0E0F, /* Array index: 0x02AC */ 0x6DF7, 0x6DFB, 0x0E16, /* Array index: 0x02AF */ 0x6E05, 0x6E0B, 0x0E1B, /* Array index: 0x02B2 */ 0x6E19, 0x6E26, 0x0E22, /* Array index: 0x02B5 */ 0x6E29, 0x6E2F, 0x0E30, /* Array index: 0x02B8 */ 0x6E7E, 0x6E82, 0x0E37, /* Array index: 0x02BB */ 0x6ED1, 0x6ED5, 0x0E3C, /* Array index: 0x02BE */ 0x6EFE, 0x6F02, 0x0E41, /* Array index: 0x02C1 */ 0x6F11, 0x6F15, 0x0E46, /* Array index: 0x02C4 */ 0x6F6D, 0x6F70, 0x0E4B, /* Array index: 0x02C7 */ 0x6F80, 0x6F86, 0x0E4F, /* Array index: 0x02CA */ 0x6FC0, 0x6FC3, 0x0E56, /* Array index: 0x02CD */ 0x6FDF, 0x6FE1, 0x0E5A, /* Array index: 0x02D0 */ 0x6FEB, 0x6FF3, 0x0E5D, /* Array index: 0x02D3 */ 0x701A, 0x701F, 0x0E66, /* Array index: 0x02D6 */ 0x70AC, 0x70AF, 0x0E6C, /* Array index: 0x02D9 */ 0x70B8, 0x70BA, 0x0E70, /* Array index: 0x02DC */ 0x7162, 0x7169, 0x0E73, /* Array index: 0x02DF */ 0x71E5, 0x71E7, 0x0E7B, /* Array index: 0x02E2 */ 0x71EC, 0x71EE, 0x0E7E, /* Array index: 0x02E5 */ 0x723A, 0x7240, 0x0E81, /* Array index: 0x02E8 */ 0x7246, 0x724C, 0x0E88, /* Array index: 0x02EB */ 0x727D, 0x7282, 0x0E8F, /* Array index: 0x02EE */ 0x72C2, 0x72C6, 0x0E95, /* Array index: 0x02F1 */ 0x72E0, 0x72E2, 0x0E9A, /* Array index: 0x02F4 */ 0x72F7, 0x72FD, 0x0E9D, /* Array index: 0x02F7 */ 0x731B, 0x731F, 0x0EA4, /* Array index: 0x02FA */ 0x7329, 0x732F, 0x0EA9, /* Array index: 0x02FD */ 0x7432, 0x7436, 0x0EB0, /* Array index: 0x0300 */ 0x7459, 0x7464, 0x0EB5, /* Array index: 0x0303 */ 0x74EE, 0x74F8, 0x0EC1, /* Array index: 0x0306 */ 0x7503, 0x7505, 0x0ECC, /* Array index: 0x0309 */ 0x750C, 0x750E, 0x0ECF, /* Array index: 0x030C */ 0x7530, 0x7533, 0x0ED2, /* Array index: 0x030F */ 0x7537, 0x753C, 0x0ED6, /* Array index: 0x0312 */ 0x7549, 0x7551, 0x0EDC, /* Array index: 0x0315 */ 0x7559, 0x755D, 0x0EE5, /* Array index: 0x0318 */ 0x7562, 0x756D, 0x0EEA, /* Array index: 0x031B */ 0x7573, 0x7578, 0x0EF6, /* Array index: 0x031E */ 0x7586, 0x7591, 0x0EFC, /* Array index: 0x0321 */ 0x75B1, 0x75BE, 0x0F08, /* Array index: 0x0324 */ 0x75F0, 0x75F4, 0x0F16, /* Array index: 0x0327 */ 0x761F, 0x7624, 0x0F1B, /* Array index: 0x032A */ 0x7646, 0x7648, 0x0F21, /* Array index: 0x032D */ 0x7667, 0x766C, 0x0F24, /* Array index: 0x0330 */ 0x7678, 0x7688, 0x0F2A, /* Array index: 0x0333 */ 0x76B7, 0x76BA, 0x0F3B, /* Array index: 0x0336 */ 0x76DB, 0x76E7, 0x0F3F, /* Array index: 0x0339 */ 0x7707, 0x770C, 0x0F4C, /* Array index: 0x033C */ 0x771E, 0x7726, 0x0F52, /* Array index: 0x033F */ 0x77B9, 0x77BF, 0x0F5B, /* Array index: 0x0342 */ 0x77DA, 0x77DC, 0x0F62, /* Array index: 0x0345 */ 0x77ED, 0x77EF, 0x0F65, /* Array index: 0x0348 */ 0x7825, 0x7827, 0x0F68, /* Array index: 0x034B */ 0x788C, 0x788E, 0x0F6B, /* Array index: 0x034E */ 0x792A, 0x792C, 0x0F6E, /* Array index: 0x0351 */ 0x7947, 0x7949, 0x0F71, /* Array index: 0x0354 */ 0x7953, 0x7957, 0x0F74, /* Array index: 0x0357 */ 0x795D, 0x7962, 0x0F79, /* Array index: 0x035A */ 0x797F, 0x7985, 0x0F7F, /* Array index: 0x035D */ 0x798D, 0x798F, 0x0F86, /* Array index: 0x0360 */ 0x79B9, 0x79C1, 0x0F89, /* Array index: 0x0363 */ 0x79E3, 0x79E9, 0x0F92, /* Array index: 0x0366 */ 0x7A17, 0x7A20, 0x0F99, /* Array index: 0x0369 */ 0x7A3B, 0x7A43, 0x0FA3, /* Array index: 0x036C */ 0x7A4D, 0x7A50, 0x0FAC, /* Array index: 0x036F */ 0x7A61, 0x7A63, 0x0FB0, /* Array index: 0x0372 */ 0x7A92, 0x7A98, 0x0FB3, /* Array index: 0x0375 */ 0x7AAE, 0x7AB0, 0x0FBA, /* Array index: 0x0378 */ 0x7AC3, 0x7AD5, 0x0FBD, /* Array index: 0x037B */ 0x7AD9, 0x7AE6, 0x0FD0, /* Array index: 0x037E */ 0x7AF6, 0x7AFA, 0x0FDE, /* Array index: 0x0381 */ 0x7B45, 0x7B56, 0x0FE3, /* Array index: 0x0384 */ 0x7B94, 0x7BA1, 0x0FF5, /* Array index: 0x0387 */ 0x7BE4, 0x7BE6, 0x1003, /* Array index: 0x038A */ 0x7C11, 0x7C14, 0x1006, /* Array index: 0x038D */ 0x7C3D, 0x7C40, 0x100A, /* Array index: 0x0390 */ 0x7C4C, 0x7C50, 0x100E, /* Array index: 0x0393 */ 0x7C81, 0x7C83, 0x1013, /* Array index: 0x0396 */ 0x7CA1, 0x7CA8, 0x1016, /* Array index: 0x0399 */ 0x7CAD, 0x7CB3, 0x101E, /* Array index: 0x039C */ 0x7CDC, 0x7CE2, 0x1025, /* Array index: 0x039F */ 0x7D02, 0x7D06, 0x102C, /* Array index: 0x03A2 */ 0x7D14, 0x7D22, 0x1031, /* Array index: 0x03A5 */ 0x7D2B, 0x7D35, 0x1040, /* Array index: 0x03A8 */ 0x7D42, 0x7D46, 0x104B, /* Array index: 0x03AB */ 0x7D4B, 0x7D50, 0x1050, /* Array index: 0x03AE */ 0x7D61, 0x7D63, 0x1056, /* Array index: 0x03B1 */ 0x7D71, 0x7D76, 0x1059, /* Array index: 0x03B4 */ 0x7D99, 0x7D9C, 0x105F, /* Array index: 0x03B7 */ 0x7DAB, 0x7DB5, 0x1063, /* Array index: 0x03BA */ 0x7DBA, 0x7DBF, 0x106E, /* Array index: 0x03BD */ 0x7DDA, 0x7DE1, 0x1074, /* Array index: 0x03C0 */ 0x7E09, 0x7E0B, 0x107C, /* Array index: 0x03C3 */ 0x7E1E, 0x7E23, 0x107F, /* Array index: 0x03C6 */ 0x7E37, 0x7E3E, 0x1085, /* Array index: 0x03C9 */ 0x7E54, 0x7E5E, 0x108D, /* Array index: 0x03CC */ 0x7E66, 0x7E6A, 0x1098, /* Array index: 0x03CF */ 0x7E79, 0x7E83, 0x109D, /* Array index: 0x03D2 */ 0x7E8C, 0x7E96, 0x10A8, /* Array index: 0x03D5 */ 0x7F4C, 0x7F55, 0x10B3, /* Array index: 0x03D8 */ 0x7F67, 0x7F6B, 0x10BD, /* Array index: 0x03DB */ 0x7F75, 0x7F79, 0x10C2, /* Array index: 0x03DE */ 0x7F82, 0x7F8E, 0x10C7, /* Array index: 0x03E1 */ 0x8000, 0x8006, 0x10D4, /* Array index: 0x03E4 */ 0x8015, 0x8019, 0x10DB, /* Array index: 0x03E7 */ 0x805E, 0x8062, 0x10E0, /* Array index: 0x03EA */ 0x806F, 0x807F, 0x10E5, /* Array index: 0x03ED */ 0x8084, 0x808C, 0x10F6, /* Array index: 0x03F0 */ 0x80A9, 0x80B4, 0x10FF, /* Array index: 0x03F3 */ 0x80D9, 0x80DE, 0x110B, /* Array index: 0x03F6 */ 0x8105, 0x810A, 0x1111, /* Array index: 0x03F9 */ 0x8150, 0x8155, 0x1117, /* Array index: 0x03FC */ 0x8178, 0x817A, 0x111D, /* Array index: 0x03FF */ 0x817F, 0x8183, 0x1120, /* Array index: 0x0402 */ 0x81BD, 0x81C2, 0x1125, /* Array index: 0x0405 */ 0x81D8, 0x81DA, 0x112B, /* Array index: 0x0408 */ 0x81FA, 0x8202, 0x112E, /* Array index: 0x040B */ 0x8205, 0x821F, 0x1137, /* Array index: 0x040E */ 0x8229, 0x822E, 0x1152, /* Array index: 0x0411 */ 0x8233, 0x8239, 0x1158, /* Array index: 0x0414 */ 0x8258, 0x825A, 0x115F, /* Array index: 0x0417 */ 0x826E, 0x8278, 0x1162, /* Array index: 0x041A */ 0x82AB, 0x82B3, 0x116D, /* Array index: 0x041D */ 0x82D1, 0x82D4, 0x1176, /* Array index: 0x0420 */ 0x82DB, 0x82E7, 0x117A, /* Array index: 0x0423 */ 0x82F9, 0x82FB, 0x1187, /* Array index: 0x0426 */ 0x8302, 0x8306, 0x118A, /* Array index: 0x0429 */ 0x8316, 0x8318, 0x118F, /* Array index: 0x042C */ 0x8331, 0x8339, 0x1192, /* Array index: 0x042F */ 0x839E, 0x83A2, 0x119B, /* Array index: 0x0432 */ 0x83EF, 0x83F4, 0x11A0, /* Array index: 0x0435 */ 0x840B, 0x840E, 0x11A6, /* Array index: 0x0438 */ 0x8461, 0x8463, 0x11AA, /* Array index: 0x043B */ 0x8469, 0x8471, 0x11AD, /* Array index: 0x043E */ 0x84B8, 0x84BC, 0x11B6, /* Array index: 0x0441 */ 0x84C9, 0x84D1, 0x11BB, /* Array index: 0x0444 */ 0x8511, 0x851A, 0x11C4, /* Array index: 0x0447 */ 0x8548, 0x854B, 0x11CE, /* Array index: 0x044A */ 0x8568, 0x856A, 0x11D2, /* Array index: 0x044D */ 0x85A6, 0x85AF, 0x11D5, /* Array index: 0x0450 */ 0x85F7, 0x85FB, 0x11DF, /* Array index: 0x0453 */ 0x868A, 0x868C, 0x11E4, /* Array index: 0x0456 */ 0x86A9, 0x86AB, 0x11E7, /* Array index: 0x0459 */ 0x86EC, 0x86EF, 0x11EA, /* Array index: 0x045C */ 0x8706, 0x870A, 0x11EE, /* Array index: 0x045F */ 0x880D, 0x8811, 0x11F3, /* Array index: 0x0462 */ 0x8821, 0x8823, 0x11F8, /* Array index: 0x0465 */ 0x885D, 0x8863, 0x11FB, /* Array index: 0x0468 */ 0x887D, 0x8882, 0x1202, /* Array index: 0x046B */ 0x88BF, 0x88C5, 0x1208, /* Array index: 0x046E */ 0x88F2, 0x88F4, 0x120F, /* Array index: 0x0471 */ 0x88F8, 0x88FE, 0x1212, /* Array index: 0x0474 */ 0x895E, 0x8960, 0x1219, /* Array index: 0x0477 */ 0x8986, 0x898B, 0x121C, /* Array index: 0x047A */ 0x8996, 0x899A, 0x1222, /* Array index: 0x047D */ 0x89A6, 0x89AC, 0x1227, /* Array index: 0x0480 */ 0x8A16, 0x8A18, 0x122E, /* Array index: 0x0483 */ 0x8A3A, 0x8A3C, 0x1231, /* Array index: 0x0486 */ 0x8A50, 0x8A55, 0x1234, /* Array index: 0x0489 */ 0x8A69, 0x8A73, 0x123A, /* Array index: 0x048C */ 0x8AA0, 0x8AA8, 0x1245, /* Array index: 0x048F */ 0x8ACB, 0x8ACF, 0x124E, /* Array index: 0x0492 */ 0x8ADA, 0x8AE7, 0x1253, /* Array index: 0x0495 */ 0x8AFE, 0x8B04, 0x1261, /* Array index: 0x0498 */ 0x8B16, 0x8B21, 0x1268, /* Array index: 0x049B */ 0x8B58, 0x8B5C, 0x1274, /* Array index: 0x049E */ 0x8B6B, 0x8B74, 0x1279, /* Array index: 0x04A1 */ 0x8C6A, 0x8C6C, 0x1283, /* Array index: 0x04A4 */ 0x8C78, 0x8C7C, 0x1286, /* Array index: 0x04A7 */ 0x8C89, 0x8C8E, 0x128B, /* Array index: 0x04AA */ 0x8C9D, 0x8CA2, 0x1291, /* Array index: 0x04AD */ 0x8CA7, 0x8CCE, 0x1297, /* Array index: 0x04B0 */ 0x8CDA, 0x8CE6, 0x12BF, /* Array index: 0x04B3 */ 0x8CFA, 0x8CFD, 0x12CC, /* Array index: 0x04B6 */ 0x8D04, 0x8D16, 0x12D0, /* Array index: 0x04B9 */ 0x8D70, 0x8D74, 0x12E3, /* Array index: 0x04BC */ 0x8E08, 0x8E0A, 0x12E8, /* Array index: 0x04BF */ 0x8E1D, 0x8E1F, 0x12EB, /* Array index: 0x04C2 */ 0x8E47, 0x8E4C, 0x12EE, /* Array index: 0x04C5 */ 0x8EAA, 0x8EB1, 0x12F4, /* Array index: 0x04C8 */ 0x8EC8, 0x8ECD, 0x12FC, /* Array index: 0x04CB */ 0x8EFB, 0x8EFE, 0x1302, /* Array index: 0x04CE */ 0x8F12, 0x8F15, 0x1306, /* Array index: 0x04D1 */ 0x8F19, 0x8F1F, 0x130A, /* Array index: 0x04D4 */ 0x8F42, 0x8F46, 0x1311, /* Array index: 0x04D7 */ 0x8F4C, 0x8F4E, 0x1316, /* Array index: 0x04DA */ 0x8F5F, 0x8F64, 0x1319, /* Array index: 0x04DD */ 0x8F9B, 0x8F9F, 0x131F, /* Array index: 0x04E0 */ 0x8FAD, 0x8FB2, 0x1324, /* Array index: 0x04E3 */ 0x8FBA, 0x8FBC, 0x132A, /* Array index: 0x04E6 */ 0x8FE5, 0x8FF0, 0x132D, /* Array index: 0x04E9 */ 0x8FF7, 0x8FFA, 0x1339, /* Array index: 0x04EC */ 0x900B, 0x9023, 0x133D, /* Array index: 0x04EF */ 0x9035, 0x9039, 0x1356, /* Array index: 0x04F2 */ 0x9047, 0x9059, 0x135B, /* Array index: 0x04F5 */ 0x906D, 0x906F, 0x136E, /* Array index: 0x04F8 */ 0x9075, 0x9084, 0x1371, /* Array index: 0x04FB */ 0x9149, 0x914E, 0x1381, /* Array index: 0x04FE */ 0x91C6, 0x91D1, 0x1387, /* Array index: 0x0501 */ 0x91DB, 0x91E7, 0x1393, /* Array index: 0x0504 */ 0x9298, 0x929C, 0x13A0, /* Array index: 0x0507 */ 0x9318, 0x931A, 0x13A5, /* Array index: 0x050A */ 0x932B, 0x932F, 0x13A8, /* Array index: 0x050D */ 0x93AC, 0x93B0, 0x13AD, /* Array index: 0x0510 */ 0x93D6, 0x93D8, 0x13B2, /* Array index: 0x0513 */ 0x9418, 0x941A, 0x13B5, /* Array index: 0x0516 */ 0x9451, 0x9453, 0x13B8, /* Array index: 0x0519 */ 0x947C, 0x9481, 0x13BB, /* Array index: 0x051C */ 0x9587, 0x958B, 0x13C1, /* Array index: 0x051F */ 0x95A0, 0x95A8, 0x13C6, /* Array index: 0x0522 */ 0x95D4, 0x95D8, 0x13CF, /* Array index: 0x0525 */ 0x964B, 0x9650, 0x13D4, /* Array index: 0x0528 */ 0x965B, 0x9666, 0x13DA, /* Array index: 0x052B */ 0x9672, 0x967A, 0x13E6, /* Array index: 0x052E */ 0x968A, 0x968F, 0x13EF, /* Array index: 0x0531 */ 0x9694, 0x969C, 0x13F5, /* Array index: 0x0534 */ 0x96B0, 0x96BC, 0x13FE, /* Array index: 0x0537 */ 0x96C0, 0x96CE, 0x140B, /* Array index: 0x053A */ 0x9704, 0x9713, 0x141A, /* Array index: 0x053D */ 0x975E, 0x976D, 0x142A, /* Array index: 0x0540 */ 0x9784, 0x9786, 0x143A, /* Array index: 0x0543 */ 0x97F2, 0x97F6, 0x143D, /* Array index: 0x0546 */ 0x97FF, 0x9808, 0x1442, /* Array index: 0x0549 */ 0x980F, 0x9813, 0x144C, /* Array index: 0x054C */ 0x9837, 0x983D, 0x1451, /* Array index: 0x054F */ 0x984B, 0x984F, 0x1458, /* Array index: 0x0552 */ 0x986F, 0x9874, 0x145D, /* Array index: 0x0555 */ 0x98EB, 0x98EF, 0x1463, /* Array index: 0x0558 */ 0x98FC, 0x98FE, 0x1468, /* Array index: 0x055B */ 0x9910, 0x9914, 0x146B, /* Array index: 0x055E */ 0x991D, 0x9921, 0x1470, /* Array index: 0x0561 */ 0x9950, 0x9952, 0x1475, /* Array index: 0x0564 */ 0x9996, 0x9999, 0x1478, /* Array index: 0x0567 */ 0x99AC, 0x99AE, 0x147C, /* Array index: 0x056A */ 0x99C4, 0x99C8, 0x147F, /* Array index: 0x056D */ 0x99D0, 0x99D2, 0x1484, /* Array index: 0x0570 */ 0x9A69, 0x9A6B, 0x1487, /* Array index: 0x0573 */ 0x9AEA, 0x9AF1, 0x148A, /* Array index: 0x0576 */ 0x9B25, 0x9B2A, 0x1492, /* Array index: 0x0579 */ 0x9B2E, 0x9B32, 0x1498, /* Array index: 0x057C */ 0x9B41, 0x9B45, 0x149D, /* Array index: 0x057F */ 0x9B4D, 0x9B51, 0x14A2, /* Array index: 0x0582 */ 0x9B91, 0x9B97, 0x14A7, /* Array index: 0x0585 */ 0x9BAA, 0x9BAE, 0x14AE, /* Array index: 0x0588 */ 0x9BE1, 0x9BE4, 0x14B3, /* Array index: 0x058B */ 0x9BF0, 0x9BF2, 0x14B7, /* Array index: 0x058E */ 0x9C06, 0x9C0D, 0x14BA, /* Array index: 0x0591 */ 0x9C10, 0x9C15, 0x14C2, /* Array index: 0x0594 */ 0x9C2D, 0x9C32, 0x14C8, /* Array index: 0x0597 */ 0x9C39, 0x9C3B, 0x14CE, /* Array index: 0x059A */ 0x9C46, 0x9C48, 0x14D1, /* Array index: 0x059D */ 0x9D06, 0x9D09, 0x14D4, /* Array index: 0x05A0 */ 0x9D28, 0x9D2C, 0x14D8, /* Array index: 0x05A3 */ 0x9D5C, 0x9D61, 0x14DD, /* Array index: 0x05A6 */ 0x9DF8, 0x9DFA, 0x14E3, /* Array index: 0x05A9 */ 0x9E91, 0x9E97, 0x14E6, /* Array index: 0x05AC */ 0x9EB8, 0x9EBF, 0x14ED, /* Array index: 0x05AF */ 0x9ECC, 0x9ED4, 0x14F5, /* Array index: 0x05B2 */ 0x9ED8, 0x9EE0, 0x14FE, /* Array index: 0x05B5 */ 0x9EF9, 0x9EFD, 0x1507, /* Array index: 0x05B8 */ 0x9F5F, 0x9F67, 0x150C, /* Array index: 0x05BB */ 0xFF01, 0xFF5D, 0x1515, /* Ranges content */ /* Range 0x0391 - 0x03A9, array index: 0x05BE */ 0x2621,0x2622,0x2623,0x2624,0x2625,0x2626,0x2627,0x2628, 0x2629,0x262A,0x262B,0x262C,0x262D,0x262E,0x262F,0x2630, 0x2631,INVALC,0x2632,0x2633,0x2634,0x2635,0x2636,0x2637, 0x2638, /* Range 0x03B1 - 0x03C9, array index: 0x05D7 */ 0x2641,0x2642,0x2643,0x2644,0x2645,0x2646,0x2647,0x2648, 0x2649,0x264A,0x264B,0x264C,0x264D,0x264E,0x264F,0x2650, 0x2651,INVALC,0x2652,0x2653,0x2654,0x2655,0x2656,0x2657, 0x2658, /* Range 0x0410 - 0x0451, array index: 0x05F0 */ 0x2721,0x2722,0x2723,0x2724,0x2725,0x2726,0x2728,0x2729, 0x272A,0x272B,0x272C,0x272D,0x272E,0x272F,0x2730,0x2731, 0x2732,0x2733,0x2734,0x2735,0x2736,0x2737,0x2738,0x2739, 0x273A,0x273B,0x273C,0x273D,0x273E,0x273F,0x2740,0x2741, 0x2751,0x2752,0x2753,0x2754,0x2755,0x2756,0x2758,0x2759, 0x275A,0x275B,0x275C,0x275D,0x275E,0x275F,0x2760,0x2761, 0x2762,0x2763,0x2764,0x2765,0x2766,0x2767,0x2768,0x2769, 0x276A,0x276B,0x276C,0x276D,0x276E,0x276F,0x2770,0x2771, INVALC,0x2757, /* Range 0x2015 - 0x2021, array index: 0x0632 */ 0x213D,0x2142,INVALC,0x2146,0x2147,INVALC,INVALC,0x2148, 0x2149,INVALC,INVALC,0x2277,0x2278, /* Range 0x2190 - 0x2193, array index: 0x063F */ 0x222B,0x222C,0x222A,0x222D, /* Range 0x2227 - 0x222C, array index: 0x0643 */ 0x224A,0x224B,0x2241,0x2240,0x2269,0x226A, /* Range 0x2500 - 0x2503, array index: 0x0649 */ 0x2821,0x282C,0x2822,0x282D, /* Range 0x2517 - 0x251D, array index: 0x064D */ 0x2831,0x2825,INVALC,INVALC,0x2830,0x2827,0x283C, /* Range 0x2523 - 0x2525, array index: 0x0654 */ 0x2832,0x2829,0x283E, /* Range 0x3000 - 0x3015, array index: 0x0657 */ 0x2121,0x2122,0x2123,0x2137,INVALC,0x2139,0x213A,0x213B, 0x2152,0x2153,0x2154,0x2155,0x2156,0x2157,0x2158,0x2159, 0x215A,0x215B,0x2229,0x222E,0x214C,0x214D, /* Range 0x3041 - 0x3093, array index: 0x066D */ 0x2421,0x2422,0x2423,0x2424,0x2425,0x2426,0x2427,0x2428, 0x2429,0x242A,0x242B,0x242C,0x242D,0x242E,0x242F,0x2430, 0x2431,0x2432,0x2433,0x2434,0x2435,0x2436,0x2437,0x2438, 0x2439,0x243A,0x243B,0x243C,0x243D,0x243E,0x243F,0x2440, 0x2441,0x2442,0x2443,0x2444,0x2445,0x2446,0x2447,0x2448, 0x2449,0x244A,0x244B,0x244C,0x244D,0x244E,0x244F,0x2450, 0x2451,0x2452,0x2453,0x2454,0x2455,0x2456,0x2457,0x2458, 0x2459,0x245A,0x245B,0x245C,0x245D,0x245E,0x245F,0x2460, 0x2461,0x2462,0x2463,0x2464,0x2465,0x2466,0x2467,0x2468, 0x2469,0x246A,0x246B,0x246C,0x246D,0x246E,0x246F,0x2470, 0x2471,0x2472,0x2473, /* Range 0x309B - 0x30F6, array index: 0x06C0 */ 0x212B,0x212C,0x2135,0x2136,INVALC,INVALC,0x2521,0x2522, 0x2523,0x2524,0x2525,0x2526,0x2527,0x2528,0x2529,0x252A, 0x252B,0x252C,0x252D,0x252E,0x252F,0x2530,0x2531,0x2532, 0x2533,0x2534,0x2535,0x2536,0x2537,0x2538,0x2539,0x253A, 0x253B,0x253C,0x253D,0x253E,0x253F,0x2540,0x2541,0x2542, 0x2543,0x2544,0x2545,0x2546,0x2547,0x2548,0x2549,0x254A, 0x254B,0x254C,0x254D,0x254E,0x254F,0x2550,0x2551,0x2552, 0x2553,0x2554,0x2555,0x2556,0x2557,0x2558,0x2559,0x255A, 0x255B,0x255C,0x255D,0x255E,0x255F,0x2560,0x2561,0x2562, 0x2563,0x2564,0x2565,0x2566,0x2567,0x2568,0x2569,0x256A, 0x256B,0x256C,0x256D,0x256E,0x256F,0x2570,0x2571,0x2572, 0x2573,0x2574,0x2575,0x2576, /* Range 0x30FB - 0x30FE, array index: 0x071C */ 0x2126,0x213C,0x2133,0x2134, /* Range 0x4E07 - 0x4E19, array index: 0x0720 */ 0x4B7C,0x3E66,0x3B30,0x3E65,0x323C,INVALC,0x4954,0x4D3F, INVALC,0x5022,0x312F,INVALC,INVALC,0x336E,0x5023,0x4024, 0x5242,0x3556,0x4A3A, /* Range 0x4E38 - 0x4E3C, array index: 0x0733 */ 0x345D,0x4330,INVALC,0x3C67,0x5027, /* Range 0x4E4B - 0x4E4F, array index: 0x0738 */ 0x4737,INVALC,0x4663,0x3843,0x4B33, /* Range 0x4E55 - 0x4E5F, array index: 0x073D */ 0x6949,0x502A,0x3E68,0x502B,0x3235,INVALC,INVALC,INVALC, 0x3665,0x3870,0x4C69, /* Range 0x4E85 - 0x4EB0, array index: 0x0748 */ 0x502D,0x4E3B,INVALC,0x4D3D,0x4168,0x502F,0x3B76,0x4673, INVALC,0x5032,INVALC,INVALC,0x313E,0x385F,INVALC,0x385E, 0x3066,INVALC,INVALC,0x4F4B,0x4F4A,INVALC,0x3A33,0x3021, INVALC,0x5033,0x5034,0x5035,0x4B34,0x5036,INVALC,0x3872, 0x3067,0x4B72,INVALC,0x357C,INVALC,INVALC,0x357D,0x357E, 0x4462,0x4E3C,INVALC,0x5037, /* Range 0x4EC0 - 0x4ECF, array index: 0x0774 */ 0x3D3A,0x3F4E,0x503E,INVALC,0x503C,INVALC,0x503D,0x3558, INVALC,INVALC,0x3A23,0x3270,INVALC,0x503B,0x503A,0x4A29, /* Range 0x4ED4 - 0x4EE5, array index: 0x0784 */ 0x3B46,0x3B45,0x423E,0x503F,0x4955,0x4067,INVALC,INVALC, INVALC,0x2138,0x5040,0x5042,INVALC,INVALC,INVALC,0x4265, 0x4E61,0x304A, /* Range 0x4F09 - 0x4F11, array index: 0x0796 */ 0x5044,0x304B,INVALC,INVALC,0x3860,0x346C,0x497A,0x4832, 0x3559, /* Range 0x4F4D - 0x4F5E, array index: 0x079F */ 0x304C,0x4463,0x3D3B,0x3A34,0x4D24,INVALC,0x424E,INVALC, 0x323F,INVALC,0x5049,INVALC,0x4D3E,0x5045,0x5047,0x3A6E, 0x5048,0x5524, /* Range 0x4FAB - 0x4FAF, array index: 0x07B1 */ 0x5525,INVALC,0x4B79,0x496E,0x3874, /* Range 0x4FC2 - 0x4FC4, array index: 0x07B6 */ 0x3738,0x4225,0x3264, /* Range 0x4FD7 - 0x4FE5, array index: 0x07B9 */ 0x422F,0x505A,INVALC,0x505D,0x505B,INVALC,0x4A5D,INVALC, 0x5058,INVALC,0x3F2E,INVALC,0x4B73,0x505F,0x5060, /* Range 0x5021 - 0x502D, array index: 0x07C8 */ 0x5069,INVALC,0x4A6F,0x434D,0x5065,0x3771,INVALC,0x5062, 0x506A,0x5064,0x4E51,0x506B,0x4F41, /* Range 0x5047 - 0x5049, array index: 0x07D5 */ 0x5071,0x5075,0x304E, /* Range 0x5072 - 0x5078, array index: 0x07D8 */ 0x3C45,INVALC,0x4226,0x4465,0x3676,INVALC,0x5079, /* Range 0x5098 - 0x509A, array index: 0x07DF */ 0x3B31,0x4877,0x507B, /* Range 0x50B2 - 0x50B7, array index: 0x07E2 */ 0x507E,0x5123,0x507D,0x3A44,INVALC,0x3D7D, /* Range 0x5100 - 0x5104, array index: 0x07E8 */ 0x3537,0x512E,0x512F,INVALC,0x322F, /* Range 0x5112 - 0x511A, array index: 0x07ED */ 0x3C74,INVALC,0x5132,0x5131,0x5130,INVALC,0x5056,INVALC, 0x5133, /* Range 0x513A - 0x5154, array index: 0x07F6 */ 0x5135,0x5138,0x5137,INVALC,INVALC,0x5139,0x513A,0x3074, INVALC,0x3835,0x373B,0x3D3C,0x437B,0x3624,0x4068,0x3877, INVALC,0x396E,0x513C,0x4C48,0x4546,INVALC,0x3B79,INVALC, 0x513B,INVALC,0x513D, /* Range 0x5168 - 0x516E, array index: 0x0811 */ 0x4134,0x5140,0x5141,0x482C,0x3878,0x4F3B,0x5142, /* Range 0x5175 - 0x5178, array index: 0x0818 */ 0x4A3C,0x4236,0x3671,0x4535, /* Range 0x5189 - 0x5199, array index: 0x081C */ 0x5147,0x3A7D,INVALC,0x5146,0x3A46,INVALC,0x5148,0x666E, 0x5149,0x4B41,0x514A,INVALC,0x514B,0x514C,0x3E69,INVALC, 0x3C4C, /* Range 0x51A2 - 0x51B7, array index: 0x082D */ 0x514F,INVALC,0x514D,0x4C3D,0x514E,INVALC,0x495A,0x5150, 0x5151,0x5152,0x455F,INVALC,INVALC,INVALC,0x5156,0x5154, 0x5155,0x5153,0x3A63,0x5157,0x4C6A,0x4E64, /* Range 0x51C4 - 0x51C6, array index: 0x0843 */ 0x4028,0x5159,0x3D5A, /* Range 0x51C9 - 0x51CD, array index: 0x0846 */ 0x515A,INVALC,0x437C,0x4E3F,0x4560, /* Range 0x51DB - 0x51E1, array index: 0x084B */ 0x515B,0x7425,0x3645,INVALC,INVALC,0x515C,0x4B5E, /* Range 0x51E6 - 0x51EA, array index: 0x0852 */ 0x3D68,0x427C,INVALC,0x515E,0x4664, /* Range 0x51F5 - 0x520B, array index: 0x0857 */ 0x5161,0x3627,INVALC,0x464C,0x317A,0x3D50,INVALC,INVALC, 0x4821,0x5162,INVALC,0x4561,INVALC,INVALC,0x3F4F,0x5163, INVALC,0x4A2C,0x405A,0x3422,INVALC,0x3429,0x5164, /* Range 0x5236 - 0x523B, array index: 0x086E */ 0x4029,0x3A7E,0x3774,0x516B,0x3B49,0x396F, /* Range 0x524A - 0x524F, array index: 0x0874 */ 0x3A6F,0x516E,0x516F,0x4130,INVALC,0x516C, /* Range 0x5263 - 0x5265, array index: 0x087A */ 0x3775,0x3A5E,0x476D, /* Range 0x526F - 0x5275, array index: 0x087D */ 0x497B,0x3E6A,0x517B,0x3364,0x5175,0x5173,0x414F, /* Range 0x5287 - 0x5289, array index: 0x0884 */ 0x3760,0x517C,0x4E2D, /* Range 0x52A9 - 0x52AD, array index: 0x0887 */ 0x3D75,0x4558,0x3965,0x5222,0x5223, /* Range 0x52D5 - 0x52E7, array index: 0x088C */ 0x4630,INVALC,0x5228,0x342A,0x4C33,INVALC,INVALC,INVALC, 0x3E21,0x5229,0x4A67,0x522D,INVALC,0x402A,0x522A,0x3650, INVALC,0x522B,0x342B, /* Range 0x52F8 - 0x52FA, array index: 0x089F */ 0x5230,0x5231,0x3C5B, /* Range 0x52FE - 0x5308, array index: 0x08A2 */ 0x387B,0x4C5E,INVALC,0x4C68,0x4677,INVALC,INVALC,0x4A71, 0x5232,INVALC,0x5233, /* Range 0x5315 - 0x531A, array index: 0x08AD */ 0x5238,0x323D,0x4B4C,INVALC,0x3A7C,0x5239, /* Range 0x5338 - 0x534A, array index: 0x08B3 */ 0x523E,0x4924,0x3668,0x3065,INVALC,INVALC,INVALC,0x463F, 0x523F,0x3D3D,INVALC,0x4069,INVALC,0x5241,0x5240,0x3E23, 0x3861,0x5243,0x483E, /* Range 0x5351 - 0x5360, array index: 0x08C6 */ 0x485C,0x4234,0x426E,0x3628,INVALC,INVALC,0x466E,0x4331, INVALC,0x476E,INVALC,0x4B4E,INVALC,0x5246,INVALC,0x406A, /* Range 0x536E - 0x5378, array index: 0x08D6 */ 0x5248,0x312C,0x3075,0x346D,INVALC,0x4228,0x3551,0x4D71, INVALC,0x524B,0x3237, /* Range 0x53A5 - 0x53A9, array index: 0x08E1 */ 0x5250,0x524F,INVALC,0x3F5F,0x3139, /* Range 0x53C8 - 0x53CE, array index: 0x08E6 */ 0x4B74,0x3A35,0x355A,0x4D27,0x4150,0x483F,0x3C7D, /* Range 0x53DF - 0x53FA, array index: 0x08ED */ 0x5257,INVALC,0x3143,0x4151,0x387D,0x3845,0x3667,INVALC, INVALC,0x525B,0x4321,0x427E,0x362B,0x3E24,0x525C,0x525A, 0x3244,0x4266,0x3C38,0x3B4B,0x3126,INVALC,INVALC,0x3370, 0x3966,0x3B4A,INVALC,0x525D, /* Range 0x5408 - 0x5411, array index: 0x0909 */ 0x3967,0x3548,0x445F,0x3125,0x4631,0x4C3E,0x3921,0x4D79, 0x4547,0x387E, /* Range 0x5429 - 0x542E, array index: 0x0913 */ 0x5266,INVALC,0x345E,0x5261,0x5262,0x5264, /* Range 0x5438 - 0x5442, array index: 0x0919 */ 0x355B,0x3F61,INVALC,0x4A2D,0x5263,0x525F,0x3863,INVALC, 0x5260,INVALC,0x4F24, /* Range 0x5446 - 0x544A, array index: 0x0924 */ 0x4A72,INVALC,0x4468,0x3862,0x3970, /* Range 0x5473 - 0x547D, array index: 0x0929 */ 0x4C23,INVALC,0x526A,0x5273,0x526E,INVALC,INVALC,INVALC, 0x5271,0x3846,0x4C3F, /* Range 0x548B - 0x5492, array index: 0x0934 */ 0x3A70,0x4F42,INVALC,0x526B,0x5269,0x5275,INVALC,0x5270, /* Range 0x54BC - 0x54C9, array index: 0x093C */ 0x5325,0x3076,0x5324,INVALC,0x3025,0x494A,0x5322,INVALC, 0x527C,INVALC,INVALC,0x5277,0x527D,0x3A48, /* Range 0x54E5 - 0x54E9, array index: 0x094A */ 0x5327,0x5328,INVALC,0x3E25,0x4B69, /* Range 0x5544 - 0x5546, array index: 0x094F */ 0x426F,0x5336,0x3E26, /* Range 0x5587 - 0x558B, array index: 0x0952 */ 0x5349,INVALC,0x3922,0x533F,0x437D, /* Range 0x5598 - 0x559F, array index: 0x0957 */ 0x5343,0x533C,0x342D,INVALC,0x346E,0x3365,0x5344,0x5340, /* Range 0x55A7 - 0x55B0, array index: 0x095F */ 0x3776,0x534A,0x5348,0x4153,0x354A,0x362C,INVALC,0x5345, INVALC,0x3674, /* Range 0x5614 - 0x5618, array index: 0x0969 */ 0x5352,INVALC,0x5354,0x3E28,0x3133, /* Range 0x5668 - 0x566C, array index: 0x096E */ 0x346F,INVALC,0x5364,0x5360,0x5363, /* Range 0x56C0 - 0x56C3, array index: 0x0973 */ 0x5373,0x5371,0x536F,0x5372, /* Range 0x56D7 - 0x56DB, array index: 0x0977 */ 0x5378,0x5145,INVALC,0x3C7C,0x3B4D, /* Range 0x5726 - 0x5728, array index: 0x097C */ 0x5429,0x3035,0x3A5F, /* Range 0x574E - 0x5751, array index: 0x097F */ 0x542C,0x542F,0x3A41,0x3923, /* Range 0x57A0 - 0x57A4, array index: 0x0983 */ 0x5437,INVALC,0x3924,0x3340,0x5439, /* Range 0x57D2 - 0x57D6, array index: 0x0988 */ 0x543F,0x5440,0x543E,INVALC,0x5442, /* Range 0x582F - 0x5835, array index: 0x098D */ 0x7421,0x3161,0x4A73,INVALC,INVALC,0x3E6C,0x4548, /* Range 0x5857 - 0x585A, array index: 0x0994 */ 0x4549,0x4564,0x4839,0x444D, /* Range 0x58B8 - 0x58BB, array index: 0x0998 */ 0x5457,0x5451,0x5454,0x5456, /* Range 0x58D5 - 0x58D9, array index: 0x099C */ 0x3968,INVALC,0x545C,0x545E,0x545D, /* Range 0x58EB - 0x58F2, array index: 0x09A1 */ 0x3B4E,0x3F51,INVALC,0x4154,0x5463,0x403C,0x306D,0x4764, /* Range 0x58F7 - 0x58FD, array index: 0x09A9 */ 0x445B,INVALC,0x5465,0x5464,0x5466,0x5467,0x5468, /* Range 0x5915 - 0x591C, array index: 0x09B0 */ 0x4D3C,0x3330,INVALC,0x5249,0x3D48,0x423F,0x546C,0x4C6B, /* Range 0x5927 - 0x5932, array index: 0x09B8 */ 0x4267,INVALC,0x4537,0x4240,0x4957,0x546F,0x5470,0x317B, INVALC,INVALC,0x3C3A,0x5471, /* Range 0x5947 - 0x5949, array index: 0x09C4 */ 0x3471,0x4660,0x4A74, /* Range 0x594E - 0x595A, array index: 0x09C7 */ 0x5477,0x4155,0x5476,0x3740,INVALC,INVALC,0x4B5B,0x5475, INVALC,0x4565,0x5479,INVALC,0x5478, /* Range 0x5965 - 0x596E, array index: 0x09D4 */ 0x317C,INVALC,0x547C,0x3E29,0x547E,0x4325,INVALC,0x547D, INVALC,0x4A33, /* Range 0x5981 - 0x5984, array index: 0x09DE */ 0x5522,0x4721,0x485E,0x4C51, /* Range 0x59D0 - 0x59D4, array index: 0x09E2 */ 0x3039,0x3848,INVALC,0x402B,0x3051, /* Range 0x5ABC - 0x5AC2, array index: 0x09E7 */ 0x553C,0x5540,0x553D,INVALC,INVALC,0x3247,0x553F, /* Range 0x5B54 - 0x5B66, array index: 0x09EE */ 0x3926,0x5554,INVALC,0x3B7A,0x4238,INVALC,0x5555,0x5556, 0x3B5A,0x3927,INVALC,0x4C52,INVALC,INVALC,INVALC,0x3528, 0x3849,0x5557,0x3358, /* Range 0x5B85 - 0x5B8F, array index: 0x0A01 */ 0x4270,INVALC,0x3127,0x3C69,0x3042,INVALC,0x4157,0x3430, 0x3C35,INVALC,0x3928, /* Range 0x5B95 - 0x5BA6, array index: 0x0A0C */ 0x4566,INVALC,0x3D21,0x3431,0x4368,0x446A,0x3038,0x3539, 0x4A75,INVALC,0x3C42,INVALC,INVALC,0x3552,0x406B,0x3C3C, 0x4D28,0x5561, /* Range 0x5BB3 - 0x5BB9, array index: 0x0A1E */ 0x3332,0x3163,0x3E2C,0x3248,INVALC,0x5562,0x4D46, /* Range 0x5BC2 - 0x5BC9, array index: 0x0A25 */ 0x3C64,0x5563,0x3473,0x4652,0x4C29,0x5564,INVALC,0x5565, /* Range 0x5BD0 - 0x5BD4, array index: 0x0A2D */ 0x5567,INVALC,0x3428,0x3677,0x5566, /* Range 0x5BDB - 0x5BEB, array index: 0x0A32 */ 0x3432,INVALC,0x3F32,0x556B,0x3B21,INVALC,0x3249,0x556A, INVALC,0x5568,0x556C,0x5569,0x472B,0x5C4D,0x3F33,INVALC, 0x556D, /* Range 0x5BFE - 0x5C13, array index: 0x0A43 */ 0x4250,0x3C77,INVALC,0x4975,0x406C,INVALC,0x3C4D,0x5571, 0x3E2D,0x5572,0x5573,0x3053,0x423A,0x3F52,INVALC,0x5574, 0x4633,0x3E2E,INVALC,0x3E2F,INVALC,0x5575, /* Range 0x5C38 - 0x5C41, array index: 0x0A59 */ 0x5579,0x557A,0x3C5C,0x3F2C,0x4674,0x3F54,0x4878,0x4722, 0x3649,0x557B, /* Range 0x5C4A - 0x5C55, array index: 0x0A63 */ 0x464F,0x3230,INVALC,0x3B53,0x557D,0x5622,0x5621,0x367D, INVALC,0x557E,INVALC,0x4538, /* Range 0x5CA8 - 0x5CAC, array index: 0x0A6F */ 0x413B,0x3464,INVALC,0x562D,0x4C28, /* Range 0x5CB6 - 0x5CBE, array index: 0x0A74 */ 0x562F,0x5631,0x345F,INVALC,INVALC,0x562E,0x5630,INVALC, 0x5633, /* Range 0x5CE8 - 0x5CEA, array index: 0x0A7D */ 0x3265,0x5636,0x563B, /* Range 0x5D14 - 0x5D1B, array index: 0x0A80 */ 0x5643,0x563D,0x3333,0x563E,0x5647,0x5646,0x5645,0x5641, /* Range 0x5DE3 - 0x5DE8, array index: 0x0A88 */ 0x4163,INVALC,0x3929,0x3A38,0x392A,0x3570, /* Range 0x5DF1 - 0x5DF7, array index: 0x0A8E */ 0x384A,0x5661,0x4C26,0x4743,0x5662,INVALC,0x392B, /* Range 0x5E19 - 0x5E1D, array index: 0x0A95 */ 0x5665,0x5664,0x5667,INVALC,0x446B, /* Range 0x5E36 - 0x5E38, array index: 0x0A9A */ 0x5668,0x5669,0x3E6F, /* Range 0x5E43 - 0x5E47, array index: 0x0A9D */ 0x566B,0x566A,0x497D,INVALC,0x5673, /* Range 0x5E5F - 0x5E64, array index: 0x0AA2 */ 0x5670,INVALC,0x4828,0x5671,0x4A3E,0x5672, /* Range 0x5E72 - 0x5E84, array index: 0x0AA8 */ 0x3433,0x4A3F,0x472F,0x5674,0x5675,INVALC,0x392C,0x3434, 0x5676,0x3838,0x4D44,0x4D29,0x3476,0x5678,INVALC,0x4423, INVALC,0x392D,0x3E31, /* Range 0x5E95 - 0x5E97, array index: 0x0ABB */ 0x446C,0x4A79,0x4539, /* Range 0x5EB5 - 0x5EB8, array index: 0x0ABE */ 0x3043,0x3D6E,0x392F,0x4D47, /* Range 0x5EC1 - 0x5EC3, array index: 0x0AC2 */ 0x567A,0x567B,0x4751, /* Range 0x5EC8 - 0x5ECA, array index: 0x0AC5 */ 0x567C,0x4E77,0x4F2D, /* Range 0x5EDD - 0x5EE3, array index: 0x0AC8 */ 0x5723,INVALC,0x4940,0x3E33,0x5727,0x5726,0x5722, /* Range 0x5EF0 - 0x5F04, array index: 0x0ACF */ 0x572D,0x572B,INVALC,0x572C,0x572E,INVALC,0x3164,0x446E, 0x572F,INVALC,0x377A,0x3276,0x4736,INVALC,0x5730,0x467B, INVALC,0x4A5B,INVALC,0x5731,0x4F2E, /* Range 0x5F09 - 0x5F18, array index: 0x0AE4 */ 0x5732,0x4A40,0x5735,0x5021,0x5031,INVALC,0x3C30,0x4675, 0x5736,INVALC,0x355D,0x4424,0x307A,0x5737,0x4A26,0x3930, /* Range 0x5F25 - 0x5F29, array index: 0x0AF4 */ 0x4C6F,0x3839,0x384C,INVALC,0x5738, /* Range 0x5F69 - 0x5F73, array index: 0x0AF9 */ 0x3A4C,0x4937,0x4426,0x494B,0x5745,INVALC,INVALC,0x3E34, 0x3146,INVALC,0x5746, /* Range 0x5F7F - 0x5F99, array index: 0x0B04 */ 0x574A,0x317D,0x402C,0x5749,0x5748,0x3742,0x4254,INVALC, 0x574E,0x574C,INVALC,0x574B,0x4E27,0x3865,INVALC,INVALC, INVALC,0x3D79,0x574D,0x454C,0x3D3E,INVALC,INVALC,INVALC, 0x4640,0x5751,0x5750, /* Range 0x5FA8 - 0x5FAE, array index: 0x0B1F */ 0x5753,0x497C,0x3D5B,INVALC,INVALC,0x5754,0x4879, /* Range 0x5FD6 - 0x5FDD, array index: 0x0B26 */ 0x5756,0x3B56,0x4B3A,0x4B3B,INVALC,INVALC,0x317E,0x575B, /* Range 0x600E - 0x6016, array index: 0x0B2E */ 0x5763,0x5769,0x5761,INVALC,0x455C,INVALC,INVALC,0x5766, 0x495D, /* Range 0x6019 - 0x602B, array index: 0x0B37 */ 0x5760,INVALC,0x5765,0x4E67,0x3B57,INVALC,INVALC,0x4255, 0x575E,INVALC,INVALC,INVALC,0x355E,0x5768,0x402D,0x3165, 0x5762,0x3278,0x5767, /* Range 0x6041 - 0x6043, array index: 0x0B4A */ 0x576C,0x5776,0x5774, /* Range 0x605F - 0x6070, array index: 0x0B4D */ 0x576F,0x575F,INVALC,0x327A,0x5773,0x5775,0x4351,INVALC, INVALC,0x3A28,0x3238,0x576D,0x5778,0x5777,0x3633,INVALC, 0x4229,0x3366, /* Range 0x6089 - 0x608D, array index: 0x0B5F */ 0x3C3D,INVALC,0x5827,0x4470,0x577B, /* Range 0x60A6 - 0x60AA, array index: 0x0B64 */ 0x3159,0x5826,INVALC,0x473A,0x302D, /* Range 0x60B2 - 0x60B8, array index: 0x0B69 */ 0x4861,0x575C,0x582C,0x5830,0x4C65,INVALC,0x5829, /* Range 0x60C5 - 0x60C7, array index: 0x0B70 */ 0x3E70,0x582F,0x4657, /* Range 0x60DF - 0x60E3, array index: 0x0B73 */ 0x3054,0x582A,0x5828,INVALC,0x415A, /* Range 0x60F0 - 0x60FB, array index: 0x0B78 */ 0x4246,0x583D,INVALC,0x415B,0x5838,INVALC,0x5835,0x5836, INVALC,0x3C66,0x5839,0x583C, /* Range 0x610D - 0x610F, array index: 0x0B84 */ 0x583E,0x583F,0x3055, /* Range 0x613C - 0x613F, array index: 0x0B87 */ 0x5846,0x5849,0x5841,0x5845, /* Range 0x6147 - 0x614E, array index: 0x0B8B */ 0x5840,0x3B7C,INVALC,0x5844,0x4256,0x3932,0x5832,0x3F35, /* Range 0x6158 - 0x615A, array index: 0x0B93 */ 0x584E,0x584F,0x5850, /* Range 0x616E - 0x6177, array index: 0x0B96 */ 0x4E38,0x5853,0x3056,0x5855,INVALC,0x584C,0x5852,0x5859, 0x3744,0x584D, /* Range 0x61C6 - 0x61CD, array index: 0x0BA0 */ 0x586A,0x3A29,0x5868,0x5866,0x5865,0x586C,0x5864,0x586E, /* Range 0x61F4 - 0x6200, array index: 0x0BA8 */ 0x5873,INVALC,0x5871,0x5867,0x377C,INVALC,0x5872,INVALC, 0x5876,0x5875,0x5877,0x5874,0x5878, /* Range 0x6208 - 0x6216, array index: 0x0BB5 */ 0x5879,0x587A,0x4A6A,INVALC,0x587C,0x587B,0x3D3F,INVALC, 0x402E,0x3266,0x327C,INVALC,0x587D,INVALC,0x303F, /* Range 0x621A - 0x6221, array index: 0x0BC4 */ 0x404C,0x587E,INVALC,0x6C43,0x5921,0x3761,INVALC,0x5922, /* Range 0x622E - 0x6234, array index: 0x0BCC */ 0x5924,0x353A,0x5925,INVALC,0x5926,0x5927,0x4257, /* Range 0x623F - 0x6241, array index: 0x0BD3 */ 0x4B3C,0x3D6A,0x5928, /* Range 0x6247 - 0x624E, array index: 0x0BD6 */ 0x4070,0x6E3D,0x4862,INVALC,0x3C6A,INVALC,0x3A4D,0x5929, /* Range 0x627C - 0x6284, array index: 0x0BDE */ 0x592F,INVALC,0x5932,0x3E35,0x353B,INVALC,0x5930,0x5937, 0x3E36, /* Range 0x6291 - 0x629E, array index: 0x0BE7 */ 0x4D5E,0x5933,0x5934,0x5938,0x456A,0x5935,0x3933,0x405E, INVALC,INVALC,0x5946,0x4834,INVALC,0x4272, /* Range 0x62B9 - 0x62BD, array index: 0x0BF5 */ 0x4B75,INVALC,0x593B,0x3221,0x436A, /* Range 0x62C5 - 0x62E1, array index: 0x0BFA */ 0x4334,0x593E,0x5945,0x5940,0x5947,0x5943,INVALC,0x5942, 0x476F,INVALC,0x593C,0x327D,0x593A,0x3571,0x4273,0x5936, INVALC,INVALC,0x5939,0x3934,0x405B,INVALC,0x3E37,0x5941, 0x4752,INVALC,INVALC,0x3572,0x3348, /* Range 0x62EC - 0x62F7, array index: 0x0C17 */ 0x3367,0x3F21,0x5949,0x594E,INVALC,0x594A,INVALC,0x377D, INVALC,0x594F,0x3B22,0x3969, /* Range 0x62FE - 0x6302, array index: 0x0C23 */ 0x3D26,0x593D,INVALC,0x3B7D,0x594C, /* Range 0x6307 - 0x6309, array index: 0x0C28 */ 0x3B58,0x594D,0x3044, /* Range 0x633D - 0x633F, array index: 0x0C2B */ 0x4854,0x5951,0x415E, /* Range 0x634C - 0x6350, array index: 0x0C2E */ 0x3B2B,0x5952,INVALC,0x5954,0x5950, /* Range 0x6367 - 0x636B, array index: 0x0C33 */ 0x4A7B,0x3C4E,0x5960,INVALC,0x595F, /* Range 0x639F - 0x63AC, array index: 0x0C38 */ 0x595D,0x4E2B,0x3A4E,0x4335,0x595A,INVALC,0x405C,INVALC, 0x3935,0x3F64,0x3166,0x413C,0x5958,0x3545, /* Range 0x64E0 - 0x64E7, array index: 0x0C46 */ 0x5A2B,0x5A2C,0x4527,0x5A2E,INVALC,INVALC,0x3B24,0x5A29, /* Range 0x652A - 0x652C, array index: 0x0C4E */ 0x5978,0x5A3C,0x5A30, /* Range 0x6534 - 0x653F, array index: 0x0C51 */ 0x5A3D,0x5A3E,0x5A40,0x5A3F,0x5A41,0x327E,INVALC,0x3936, INVALC,INVALC,0x4A7C,0x402F, /* Range 0x6555 - 0x6559, array index: 0x0C5D */ 0x5A45,0x5A44,0x4754,0x5A47,0x3635, /* Range 0x6574 - 0x6578, array index: 0x0C62 */ 0x4030,0x4528,INVALC,0x495F,0x5A4B, /* Range 0x6587 - 0x6589, array index: 0x0C67 */ 0x4A38,0x555D,0x4046, /* Range 0x65AB - 0x65B0, array index: 0x0C6A */ 0x5A51,0x3B42,0x4347,INVALC,0x3B5B,0x3F37, /* Range 0x65C1 - 0x65C6, array index: 0x0C70 */ 0x5A55,INVALC,0x5A53,0x5A56,0x4E39,0x5A54, /* Range 0x65E0 - 0x65ED, array index: 0x0C76 */ 0x5A5B,0x5A5C,0x347B,INVALC,INVALC,0x467C,0x4336,0x356C, 0x3B5D,0x4161,INVALC,INVALC,0x3D5C,0x3030, /* Range 0x6634 - 0x6636, array index: 0x0C84 */ 0x5A65,0x5A63,0x5A64, /* Range 0x663F - 0x6644, array index: 0x0C87 */ 0x5B26,INVALC,0x5A6A,0x3B7E,0x3938,0x5A68, /* Range 0x665D - 0x665F, array index: 0x0C8D */ 0x5A6C,0x5A6B,0x5A70, /* Range 0x6664 - 0x6669, array index: 0x0C90 */ 0x5A6D,INVALC,0x3322,0x5A6E,0x5A6F,0x4855, /* Range 0x666E - 0x6670, array index: 0x0C96 */ 0x4961,0x374A,0x5A72, /* Range 0x6683 - 0x6689, array index: 0x0C99 */ 0x5A73,0x5A77,INVALC,INVALC,0x324B,0x5A74,0x5A76, /* Range 0x6696 - 0x6698, array index: 0x0CA0 */ 0x4348,0x3045,0x5A78, /* Range 0x66D9 - 0x66DD, array index: 0x0CA3 */ 0x3D6C,0x5B24,INVALC,0x4D4B,0x4778, /* Range 0x66F0 - 0x6700, array index: 0x0CA8 */ 0x5B29,INVALC,0x364A,0x3148,0x3939,0x5B2A,INVALC,0x5B2B, 0x3D71,0x4162,INVALC,INVALC,0x5258,0x413E,0x413D,0x4258, 0x3A47, /* Range 0x6714 - 0x6717, array index: 0x0CB9 */ 0x3A73,0x443F,0x5B2D,0x4F2F, /* Range 0x671B - 0x671F, array index: 0x0CBD */ 0x4B3E,INVALC,0x442B,0x5B2E,0x347C, /* Range 0x6726 - 0x672E, array index: 0x0CC2 */ 0x5B2F,0x5B30,0x4C5A,INVALC,0x4C24,0x4B76,0x4B5C,0x3B25, 0x5B32, /* Range 0x6734 - 0x673A, array index: 0x0CCB */ 0x4B51,INVALC,0x5B34,0x5B37,0x5B36,INVALC,0x3479, /* Range 0x674E - 0x6753, array index: 0x0CD2 */ 0x4D7B,0x3049,0x3A60,0x423C,INVALC,0x3C5D, /* Range 0x675C - 0x6765, array index: 0x0CD8 */ 0x454E,INVALC,0x5B39,0x422B,0x5B3A,0x3E72,0x4C5D,0x5B3C, 0x5B3D,0x4D68, /* Range 0x676D - 0x6777, array index: 0x0CE2 */ 0x393A,INVALC,0x4755,0x5B3F,0x456C,0x5A5E,0x5A62,INVALC, 0x354F,INVALC,0x4747, /* Range 0x679C - 0x67A2, array index: 0x0CED */ 0x324C,0x3B5E,INVALC,INVALC,0x4F48,0x5B46,0x3F75, /* Range 0x67B3 - 0x67B9, array index: 0x0CF4 */ 0x5B4C,0x5B4A,INVALC,0x324D,0x5B48,0x5B4E,0x5B54, /* Range 0x67CE - 0x67D4, array index: 0x0CFB */ 0x5B55,0x4770,0x4B3F,0x343B,INVALC,0x4077,0x3D40, /* Range 0x67F1 - 0x67F5, array index: 0x0D02 */ 0x436C,INVALC,0x4C78,0x3C46,0x3A74, /* Range 0x67FE - 0x6804, array index: 0x0D07 */ 0x4B6F,0x3341,INVALC,INVALC,0x444E,0x464A,0x3149, /* Range 0x6829 - 0x682B, array index: 0x0D0E */ 0x5B5B,0x3374,0x5B61, /* Range 0x683C - 0x6843, array index: 0x0D11 */ 0x334A,0x3A4F,INVALC,INVALC,0x5B5C,0x3765,0x374B,0x456D, /* Range 0x684D - 0x6854, array index: 0x0D19 */ 0x5B5D,0x5B5F,INVALC,0x364D,0x372C,INVALC,0x343C,0x354B, /* Range 0x68A6 - 0x68A8, array index: 0x0D21 */ 0x546D,0x3868,0x4D7C, /* Range 0x68AD - 0x68BC, array index: 0x0D24 */ 0x5B68,INVALC,0x4474,0x3323,0x3A2D,INVALC,0x5B60,INVALC, 0x5B70,0x3361,INVALC,INVALC,0x5B6E,0x5B72,INVALC,0x456E, /* Range 0x68C9 - 0x68CD, array index: 0x0D34 */ 0x4C49,0x5B77,0x347D,INVALC,0x5B7E, /* Range 0x68D4 - 0x68DA, array index: 0x0D39 */ 0x5C21,0x5C23,INVALC,0x5C27,0x5B79,INVALC,0x432A, /* Range 0x68DF - 0x68E3, array index: 0x0D40 */ 0x456F,0x5C2B,0x5B7C,INVALC,0x5C28, /* Range 0x690B - 0x690F, array index: 0x0D45 */ 0x4C3A,0x5B7D,0x3F22,0x4447,0x5B73, /* Range 0x6919 - 0x691C, array index: 0x0D4A */ 0x3F7A,0x5C2F,0x3371,0x3821, /* Range 0x6921 - 0x692A, array index: 0x0D4E */ 0x5C31,0x5B7A,0x5C30,INVALC,0x5C29,0x5B7B,INVALC,0x5C2D, INVALC,0x5C2E, /* Range 0x6953 - 0x6955, array index: 0x0D58 */ 0x4976,0x5C38,0x424A, /* Range 0x6959 - 0x6962, array index: 0x0D5B */ 0x5C3E,0x413F,INVALC,0x5C35,0x5C42,0x5C41,INVALC,0x466F, 0x5C40,0x466A, /* Range 0x696A - 0x6982, array index: 0x0D65 */ 0x5C44,0x5C37,INVALC,0x3648,0x5C3A,0x3D5D,INVALC,INVALC, INVALC,0x4760,0x5C3C,0x364B,INVALC,0x5C34,0x5C36,0x5C33, INVALC,INVALC,0x4F30,0x335A,0x5C39,INVALC,INVALC,0x5C43, 0x3335, /* Range 0x69CA - 0x69D0, array index: 0x0D7E */ 0x5C4E,0x393D,0x4448,0x4164,0x5C4C,INVALC,0x5C47, /* Range 0x6A0A - 0x6A0C, array index: 0x0D85 */ 0x5C68,0x4875,0x5C6E, /* Range 0x6A12 - 0x6A14, array index: 0x0D88 */ 0x5C69,0x5C6C,0x5C66, /* Range 0x6A1E - 0x6A23, array index: 0x0D8B */ 0x5C64,0x3E40,INVALC,0x4C4F,0x5C78,0x5C6B, /* Range 0x6A29 - 0x6A2B, array index: 0x0D91 */ 0x3822,0x3223,0x335F, /* Range 0x6A35 - 0x6A3A, array index: 0x0D94 */ 0x3E41,0x5C70,INVALC,0x5C77,0x3C79,0x3372, /* Range 0x6AC1 - 0x6AC3, array index: 0x0D9A */ 0x5C6A,0x5D25,0x5D24, /* Range 0x6B1D - 0x6B23, array index: 0x0D9D */ 0x3135,INVALC,0x5D36,0x3767,0x3C21,INVALC,0x3655, /* Range 0x6B37 - 0x6B3E, array index: 0x0DA4 */ 0x5D38,0x5D37,0x5D3A,0x353D,INVALC,INVALC,0x3656,0x343E, /* Range 0x6B5F - 0x6B6A, array index: 0x0DAC */ 0x5D43,INVALC,0x5D44,0x3B5F,0x4035,0x3A21,INVALC,0x4970, INVALC,INVALC,0x4A62,0x4F44, /* Range 0x6B89 - 0x6B8D, array index: 0x0DB8 */ 0x3D5E,0x3C6C,0x3B44,INVALC,0x5D4B, /* Range 0x6BAF - 0x6BC0, array index: 0x0DBD */ 0x5D52,INVALC,0x5D54,0x5D53,0x5D55,0x3225,0x434A,INVALC, 0x5D56,INVALC,INVALC,0x3B26,0x334C,0x5D57,INVALC,INVALC, 0x4542,0x544C, /* Range 0x6BD2 - 0x6BD4, array index: 0x0DCF */ 0x4647,0x5D5A,0x4866, /* Range 0x6C3E - 0x6C42, array index: 0x0DD2 */ 0x4845,INVALC,0x4475,0x3D41,0x3561, /* Range 0x6C5D - 0x6C62, array index: 0x0DD7 */ 0x4672,0x5D67,0x393E,0x4353,INVALC,0x5D69, /* Range 0x6C7D - 0x6C83, array index: 0x0DDD */ 0x3525,0x5D70,INVALC,INVALC,0x5D6E,0x5D6B,0x4D60, /* Range 0x6C99 - 0x6C9B, array index: 0x0DE4 */ 0x3A3B,0x5D6D,0x5D6F, /* Range 0x6CB8 - 0x6CC5, array index: 0x0DE7 */ 0x4A28,0x4C7D,0x5E21,0x3C23,0x3E42,0x5D78,0x5D7E,0x3168, INVALC,0x3637,INVALC,INVALC,0x5D75,0x5D7A, /* Range 0x6CE1 - 0x6CE5, array index: 0x0DF5 */ 0x4B22,0x4748,0x3563,INVALC,0x4525, /* Range 0x6CEF - 0x6CF3, array index: 0x0DFA */ 0x5E23,0x4259,0x5D76,INVALC,0x314B, /* Range 0x6D29 - 0x6D2B, array index: 0x0DFF */ 0x314C,0x393F,0x5E29, /* Range 0x6D32 - 0x6D38, array index: 0x0E02 */ 0x3D27,0x5E2E,INVALC,0x5E2D,0x5E28,INVALC,0x5E2B, /* Range 0x6D77 - 0x6D79, array index: 0x0E09 */ 0x3324,0x3F3B,0x5E35, /* Range 0x6DC5 - 0x6DC7, array index: 0x0E0C */ 0x5E48,0x5E42,0x5E3F, /* Range 0x6DE8 - 0x6DEE, array index: 0x0E0F */ 0x5E46,INVALC,0x5E4D,0x307C,0x5E43,INVALC,0x5E4E, /* Range 0x6DF7 - 0x6DFB, array index: 0x0E16 */ 0x3A2E,INVALC,0x5E3B,0x5E49,0x453A, /* Range 0x6E05 - 0x6E0B, array index: 0x0E1B */ 0x4036,INVALC,0x3369,0x3A51,0x3E44,0x5E3D,0x3D42, /* Range 0x6E19 - 0x6E26, array index: 0x0E22 */ 0x5E52,0x3D6D,0x383A,INVALC,0x5E61,INVALC,0x5E5B,0x3574, 0x454F,INVALC,0x5E56,0x5E5F,0x302F,0x3132, /* Range 0x6E29 - 0x6E2F, array index: 0x0E30 */ 0x3239,INVALC,0x5E58,0x422C,0x5E4F,0x5E51,0x3941, /* Range 0x6E7E - 0x6E82, array index: 0x0E37 */ 0x4F51,0x3C3E,0x4B7E,INVALC,0x5E63, /* Range 0x6ED1 - 0x6ED5, array index: 0x0E3C */ 0x336A,INVALC,0x5E68,0x5E6D,0x5E6E, /* Range 0x6EFE - 0x6F02, array index: 0x0E41 */ 0x5E78,0x5E60,INVALC,0x3579,0x493A, /* Range 0x6F11 - 0x6F15, array index: 0x0E46 */ 0x5E74,INVALC,0x5F22,0x3169,0x4166, /* Range 0x6F6D - 0x6F70, array index: 0x0E4B */ 0x5F2C,0x442C,0x5F29,0x4459, /* Range 0x6F80 - 0x6F86, array index: 0x0E4F */ 0x5F28,0x5F27,0x5F2D,INVALC,0x4021,INVALC,0x5F24, /* Range 0x6FC0 - 0x6FC3, array index: 0x0E56 */ 0x3763,0x4279,0x5F32,0x473B, /* Range 0x6FDF - 0x6FE1, array index: 0x0E5A */ 0x5F3B,0x396A,0x4728, /* Range 0x6FEB - 0x6FF3, array index: 0x0E5D */ 0x4D74,0x5F3D,INVALC,0x5F41,0x4275,INVALC,0x5F40,INVALC, 0x5F2B, /* Range 0x701A - 0x701F, array index: 0x0E66 */ 0x5F4B,0x5F4A,INVALC,0x5F4D,0x4654,0x5F4F, /* Range 0x70AC - 0x70AF, array index: 0x0E6C */ 0x5F59,0x433A,0x5F5C,0x5F57, /* Range 0x70B8 - 0x70BA, array index: 0x0E70 */ 0x5F5A,0x4540,0x3059, /* Range 0x7162 - 0x7169, array index: 0x0E73 */ 0x5F69,INVALC,0x4761,0x5F65,0x5F68,0x3E48,INVALC,0x4851, /* Range 0x71E5 - 0x71E7, array index: 0x0E7B */ 0x4167,0x3B38,0x5F7C, /* Range 0x71EC - 0x71EE, array index: 0x0E7E */ 0x5F7B,0x3F24,0x5259, /* Range 0x723A - 0x7240, array index: 0x0E81 */ 0x4C6C,0x602B,0x602C,0x4156,0x3C24,0x602D,0x602E, /* Range 0x7246 - 0x724C, array index: 0x0E88 */ 0x602F,0x4A52,0x4847,INVALC,INVALC,0x6030,0x4757, /* Range 0x727D - 0x7282, array index: 0x0E8F */ 0x3823,0x6033,INVALC,0x3A54,0x6035,0x6034, /* Range 0x72C2 - 0x72C6, array index: 0x0E95 */ 0x3638,0x603D,0x603F,INVALC,0x603E, /* Range 0x72E0 - 0x72E2, array index: 0x0E9A */ 0x6043,0x6044,0x6042, /* Range 0x72F7 - 0x72FD, array index: 0x0E9D */ 0x6046,0x432C,0x6045,INVALC,INVALC,0x4F35,0x4762, /* Range 0x731B - 0x731F, array index: 0x0EA4 */ 0x4C54,0x604A,0x604C,INVALC,0x4E44, /* Range 0x7329 - 0x732F, array index: 0x0EA9 */ 0x604F,0x4376,0x472D,INVALC,INVALC,0x3825,0x604E, /* Range 0x7432 - 0x7436, array index: 0x0EB0 */ 0x606A,0x4E56,0x3657,0x487C,0x474A, /* Range 0x7459 - 0x7464, array index: 0x0EB5 */ 0x606F,0x386A,0x314D,0x6071,INVALC,0x3F70,0x606E,0x4E5C, INVALC,INVALC,0x6074,0x7424, /* Range 0x74EE - 0x74F8, array index: 0x0EC1 */ 0x6125,INVALC,0x6127,0x6128,0x6126,INVALC,INVALC,INVALC, 0x4953,0x612A,0x6129, /* Range 0x7503 - 0x7505, array index: 0x0ECC */ 0x612C,0x612B,0x612D, /* Range 0x750C - 0x750E, array index: 0x0ECF */ 0x612E,0x6130,0x612F, /* Range 0x7530 - 0x7533, array index: 0x0ED2 */ 0x4544,0x4D33,0x3943,0x3F3D, /* Range 0x7537 - 0x753C, array index: 0x0ED6 */ 0x434B,0x5234,INVALC,0x442E,0x3268,0x6136, /* Range 0x7549 - 0x7551, array index: 0x0EDC */ 0x613A,0x6139,0x5A42,0x3326,0x6138,INVALC,0x305A,INVALC, 0x482A, /* Range 0x7559 - 0x755D, array index: 0x0EE5 */ 0x4E31,0x613D,0x613B,0x435C,0x4026, /* Range 0x7562 - 0x756D, array index: 0x0EEA */ 0x492D,INVALC,0x613F,0x4E2C,0x374D,0x6140,INVALC,0x613E, 0x4856,0x6141,INVALC,0x6142, /* Range 0x7573 - 0x7578, array index: 0x0EF6 */ 0x3E76,0x6147,INVALC,0x6144,0x466D,0x6143, /* Range 0x7586 - 0x7591, array index: 0x0EFC */ 0x6145,0x6146,INVALC,0x6149,0x6148,0x4925,INVALC,INVALC, 0x4142,0x4141,INVALC,0x353F, /* Range 0x75B1 - 0x75BE, array index: 0x0F08 */ 0x6157,0x4868,0x6151,INVALC,0x6153,INVALC,INVALC,0x6155, 0x3F3E,INVALC,INVALC,0x6156,0x6154,0x3C40, /* Range 0x75F0 - 0x75F4, array index: 0x0F16 */ 0x6162,INVALC,0x6164,0x6165,0x4354, /* Range 0x761F - 0x7624, array index: 0x0F1B */ 0x6169,0x616B,0x616C,0x616D,INVALC,0x616E, /* Range 0x7646 - 0x7648, array index: 0x0F21 */ 0x6174,0x6172,0x6173, /* Range 0x7667 - 0x766C, array index: 0x0F24 */ 0x617C,0x6179,0x617A,0x617B,INVALC,0x617D, /* Range 0x7678 - 0x7688, array index: 0x0F2A */ 0x6223,INVALC,0x482F,0x4550,0x6224,0x4772,0x4934,INVALC, 0x6225,INVALC,INVALC,0x6226,0x452A,INVALC,0x3327,0x3944, 0x6227, /* Range 0x76B7 - 0x76BA, array index: 0x0F3B */ 0x7369,0x6230,0x6231,0x6232, /* Range 0x76DB - 0x76E7, array index: 0x0F3F */ 0x4039,0x5D39,INVALC,0x6237,0x4C41,INVALC,0x6238,INVALC, 0x3446,0x4857,0x6239,INVALC,0x623A, /* Range 0x7707 - 0x770C, array index: 0x0F4C */ 0x623F,0x623E,0x487D,INVALC,0x3447,0x3829, /* Range 0x771E - 0x7726, array index: 0x0F52 */ 0x6243,0x3F3F,0x4C32,INVALC,INVALC,INVALC,0x6242,0x6244, 0x6245, /* Range 0x77B9 - 0x77BF, array index: 0x0F5B */ 0x6259,INVALC,0x625D,0x625B,0x625C,INVALC,0x625A, /* Range 0x77DA - 0x77DC, array index: 0x0F62 */ 0x6261,0x4C37,0x6262, /* Range 0x77ED - 0x77EF, array index: 0x0F65 */ 0x433B,0x6264,0x363A, /* Range 0x7825 - 0x7827, array index: 0x0F68 */ 0x4556,0x3A56,0x354E, /* Range 0x788C - 0x788E, array index: 0x0F6B */ 0x6271,0x3337,0x626C, /* Range 0x792A - 0x792C, array index: 0x0F6E */ 0x626A,0x632A,0x6329, /* Range 0x7947 - 0x7949, array index: 0x0F71 */ 0x3540,0x3527,0x3B63, /* Range 0x7953 - 0x7957, array index: 0x0F74 */ 0x6331,INVALC,0x6330,0x4144,0x632D, /* Range 0x795D - 0x7962, array index: 0x0F79 */ 0x3D4B,0x3F40,0x632E,0x632C,INVALC,0x472A, /* Range 0x797F - 0x7985, array index: 0x0F7F */ 0x6333,0x6349,0x3658,INVALC,INVALC,0x4F3D,0x4135, /* Range 0x798D - 0x798F, array index: 0x0F86 */ 0x3252,0x4477,0x4A21, /* Range 0x79B9 - 0x79C1, array index: 0x0F89 */ 0x633B,0x633C,INVALC,INVALC,0x3659,0x3253,0x4645,0x3D28, 0x3B64, /* Range 0x79E3 - 0x79E9, array index: 0x0F92 */ 0x6342,0x4769,INVALC,0x3F41,0x633F,INVALC,0x4361, /* Range 0x7A17 - 0x7A20, array index: 0x0F99 */ 0x4923,0x6345,0x6346,0x4355,INVALC,0x4E47,INVALC,INVALC, 0x6348,0x6347, /* Range 0x7A3B - 0x7A43, array index: 0x0FA3 */ 0x634B,0x3254,0x374E,0x634C,0x3946,0x3972,INVALC,0x4A66, 0x634E, /* Range 0x7A4D - 0x7A50, array index: 0x0FAC */ 0x4051,0x314F,0x323A,0x302C, /* Range 0x7A61 - 0x7A63, array index: 0x0FB0 */ 0x6351,0x6352,0x3E77, /* Range 0x7A92 - 0x7A98, array index: 0x0FB3 */ 0x4362,0x416B,INVALC,0x635A,0x635C,0x6359,0x635B, /* Range 0x7AAE - 0x7AB0, array index: 0x0FBA */ 0x3567,0x4D52,0x635F, /* Range 0x7AC3 - 0x7AD5, array index: 0x0FBD */ 0x3376,0x6362,0x6361,INVALC,0x6365,0x635E,INVALC,0x6366, 0x4E29,INVALC,0x6367,INVALC,0x6368,INVALC,INVALC,0x5474, 0x636A,INVALC,0x6369, /* Range 0x7AD9 - 0x7AE6, array index: 0x0FD0 */ 0x636B,0x636C,INVALC,0x4E35,0x636D,INVALC,0x706F,0x3E4F, 0x636E,0x636F,0x3D57,INVALC,0x4638,0x6370, /* Range 0x7AF6 - 0x7AFA, array index: 0x0FDE */ 0x3625,INVALC,0x513F,0x435D,0x3C33, /* Range 0x7B45 - 0x7B56, array index: 0x0FE3 */ 0x6426,0x492E,INVALC,0x4826,0x4579,INVALC,0x365A,0x6425, 0x6423,INVALC,0x4835,0x637E,0x435E,0x457B,INVALC,0x457A, INVALC,0x3A76, /* Range 0x7B94 - 0x7BA1, array index: 0x0FF5 */ 0x4773,0x4C27,INVALC,0x3B3B,0x6430,0x6439,0x6434,INVALC, 0x6433,0x642F,INVALC,0x6431,INVALC,0x3449, /* Range 0x7BE4 - 0x7BE6, array index: 0x1003 */ 0x4646,0x6445,0x6444, /* Range 0x7C11 - 0x7C14, array index: 0x1006 */ 0x6442,0x5255,0x6449,0x6443, /* Range 0x7C3D - 0x7C40, array index: 0x100A */ 0x6455,0x4E7C,0x4A6D,0x645A, /* Range 0x7C4C - 0x7C50, array index: 0x100E */ 0x6456,0x4052,INVALC,0x6459,0x645B, /* Range 0x7C81 - 0x7C83, array index: 0x1013 */ 0x364E,0x3729,0x6463, /* Range 0x7CA1 - 0x7CA8, array index: 0x1016 */ 0x6469,0x6467,INVALC,0x6465,0x3421,INVALC,0x3E51,0x646A, /* Range 0x7CAD - 0x7CB3, array index: 0x101E */ 0x6466,0x646E,INVALC,INVALC,0x646D,0x646C,0x646B, /* Range 0x7CDC - 0x7CE2, array index: 0x1025 */ 0x6476,INVALC,0x4A35,0x416C,0x3947,INVALC,0x6477, /* Range 0x7D02 - 0x7D06, array index: 0x102C */ 0x6521,INVALC,0x4C73,0x3948,0x647E, /* Range 0x7D14 - 0x7D22, array index: 0x1031 */ 0x3D63,0x6523,INVALC,0x3C53,0x3949,0x3B66,0x3569,0x4A36, 0x6522,INVALC,INVALC,INVALC,0x4147,0x4B42,0x3A77, /* Range 0x7D2B - 0x7D35, array index: 0x1040 */ 0x3B67,0x445D,INVALC,0x6527,0x4E5F,0x3A59,INVALC,0x6528, 0x3F42,INVALC,0x652A, /* Range 0x7D42 - 0x7D46, array index: 0x104B */ 0x3D2A,0x383E,0x4148,0x6525,0x652B, /* Range 0x7D4B - 0x7D50, array index: 0x1050 */ 0x6526,0x3750,INVALC,0x652E,0x6532,0x376B, /* Range 0x7D61 - 0x7D63, array index: 0x1056 */ 0x4D6D,0x303C,0x6533, /* Range 0x7D71 - 0x7D76, array index: 0x1059 */ 0x457D,0x652F,0x652C,INVALC,0x3328,0x4064, /* Range 0x7D99 - 0x7D9C, array index: 0x105F */ 0x3751,0x4233,0x6539,0x416E, /* Range 0x7DAB - 0x7DB5, array index: 0x1063 */ 0x6540,0x3C7A,0x305D,0x653B,0x6543,0x6547,0x394B,0x4C56, INVALC,0x4456,0x653D, /* Range 0x7DBA - 0x7DBF, array index: 0x106E */ 0x653A,0x433E,INVALC,0x653F,0x303D,0x4C4A, /* Range 0x7DDA - 0x7DE1, array index: 0x1074 */ 0x407E,INVALC,0x6544,0x6549,0x654B,INVALC,0x4479,0x654E, /* Range 0x7E09 - 0x7E0B, array index: 0x107C */ 0x6556,0x6550,0x6557, /* Range 0x7E1E - 0x7E23, array index: 0x107F */ 0x3C4A,0x6555,INVALC,0x6552,0x6558,0x6551, /* Range 0x7E37 - 0x7E3E, array index: 0x1085 */ 0x655F,INVALC,0x655D,0x6561,0x655B,INVALC,0x6541,0x4053, /* Range 0x7E54 - 0x7E5E, array index: 0x108D */ 0x3F25,0x4136,0x6564,INVALC,INVALC,0x6566,0x6567,INVALC, INVALC,0x6563,0x6565, /* Range 0x7E66 - 0x7E6A, array index: 0x1098 */ 0x655A,0x6562,INVALC,0x656A,0x6569, /* Range 0x7E79 - 0x7E83, array index: 0x109D */ 0x6568,INVALC,0x656C,0x656B,0x656F,INVALC,0x6571,INVALC, INVALC,0x3B3C,0x656D, /* Range 0x7E8C - 0x7E96, array index: 0x10A8 */ 0x6574,INVALC,0x657A,0x453B,0x6576,INVALC,0x6575,0x6577, 0x6578,INVALC,0x6579, /* Range 0x7F4C - 0x7F55, array index: 0x10B3 */ 0x6622,0x6623,0x6624,INVALC,0x6625,0x6626,INVALC,INVALC, 0x6628,0x6627, /* Range 0x7F67 - 0x7F6B, array index: 0x10BD */ 0x662E,0x662C,0x662D,0x3A61,0x3753, /* Range 0x7F75 - 0x7F79, array index: 0x10C2 */ 0x474D,INVALC,0x486D,0x662F,0x586D, /* Range 0x7F82 - 0x7F8E, array index: 0x10C7 */ 0x6630,0x6632,INVALC,0x4D65,0x6631,0x6634,0x6633,INVALC, 0x4D53,INVALC,0x6635,INVALC,0x487E, /* Range 0x8000 - 0x8006, array index: 0x10D4 */ 0x4D54,0x4F37,INVALC,0x394D,0x664E,0x3C54,0x664D, /* Range 0x8015 - 0x8019, array index: 0x10DB */ 0x394C,INVALC,0x4C57,0x6651,0x6652, /* Range 0x805E - 0x8062, array index: 0x10E0 */ 0x4A39,0x665D,INVALC,0x416F,0x665E, /* Range 0x806F - 0x807F, array index: 0x10E5 */ 0x4E7E,0x6662,INVALC,0x6661,0x6660,0x4430,INVALC,0x6663, 0x3F26,INVALC,0x6664,INVALC,INVALC,INVALC,0x6665,0x4F38, 0x6666, /* Range 0x8084 - 0x808C, array index: 0x10F6 */ 0x6667,0x6669,0x6668,0x4825,INVALC,0x4679,INVALC,0x4F3E, 0x4829, /* Range 0x80A9 - 0x80B4, array index: 0x10FF */ 0x382A,0x4B43,INVALC,0x666F,0x666D,INVALC,0x394E,INVALC, 0x394F,0x3069,INVALC,0x3A68, /* Range 0x80D9 - 0x80DE, array index: 0x110B */ 0x6672,0x6675,0x6670,INVALC,0x6673,0x4B26, /* Range 0x8105 - 0x810A, array index: 0x1111 */ 0x363C,0x4048,0x4F46,0x4C2E,0x6677,0x4054, /* Range 0x8150 - 0x8155, array index: 0x1117 */ 0x4965,0x6725,INVALC,0x6724,0x3950,0x4F53, /* Range 0x8178 - 0x817A, array index: 0x111D */ 0x4432,0x4A22,0x4123, /* Range 0x817F - 0x8183, array index: 0x1120 */ 0x425C,0x672F,INVALC,0x6730,0x672C, /* Range 0x81BD - 0x81C2, array index: 0x1125 */ 0x673C,0x673A,0x473F,0x673D,INVALC,0x673E, /* Range 0x81D8 - 0x81DA, array index: 0x112B */ 0x6744,0x6743,0x6746, /* Range 0x81FA - 0x8202, array index: 0x112E */ 0x674A,0x674B,0x3131,INVALC,0x674C,INVALC,INVALC,0x674D, 0x674E, /* Range 0x8205 - 0x821F, array index: 0x1137 */ 0x674F,INVALC,0x6750,0x363D,0x5A2A,0x6751,INVALC,0x4065, 0x6752,0x3C4B,INVALC,0x6753,INVALC,0x5030,INVALC,INVALC, INVALC,0x6754,0x4A5E,0x345C,INVALC,INVALC,0x4124,0x3D58, INVALC,0x4971,0x3D2E, /* Range 0x8229 - 0x822E, array index: 0x1152 */ 0x6755,0x3952,0x6756,0x484C,INVALC,0x6764, /* Range 0x8233 - 0x8239, array index: 0x1158 */ 0x6758,INVALC,0x4249,0x4775,0x383F,0x6757,0x4125, /* Range 0x8258 - 0x825A, array index: 0x115F */ 0x675B,0x675A,0x675D, /* Range 0x826E - 0x8278, array index: 0x1162 */ 0x3A31,0x4E49,INVALC,0x6765,0x3F27,INVALC,INVALC,INVALC, 0x3170,0x6766,0x6767, /* Range 0x82AB - 0x82B3, array index: 0x116D */ 0x676B,0x676E,0x474E,INVALC,0x3F44,INVALC,0x3256,INVALC, 0x4B27, /* Range 0x82D1 - 0x82D4, array index: 0x1176 */ 0x3171,0x6772,0x4E6A,0x425D, /* Range 0x82DB - 0x82E7, array index: 0x117A */ 0x3257,0x677C,INVALC,0x677A,0x6771,INVALC,0x676F,INVALC, 0x6770,INVALC,0x3C63,0x366C,0x4377, /* Range 0x82F9 - 0x82FB, array index: 0x1187 */ 0x6779,0x6775,0x6778, /* Range 0x8302 - 0x8306, array index: 0x118A */ 0x4C50,0x6777,0x3258,0x337D,0x677B, /* Range 0x8316 - 0x8318, array index: 0x118F */ 0x6823,0x682C,0x682D, /* Range 0x8331 - 0x8339, array index: 0x1192 */ 0x6825,0x6824,INVALC,0x6822,0x6821,0x4363,INVALC,0x427B, 0x6827, /* Range 0x839E - 0x83A2, array index: 0x119B */ 0x3450,0x6831,0x683C,INVALC,0x6832, /* Range 0x83EF - 0x83F4, array index: 0x11A0 */ 0x325A,0x3856,0x4929,0x684B,INVALC,0x683F, /* Range 0x840B - 0x840E, array index: 0x11A6 */ 0x6846,0x4B28,0x684C,0x3060, /* Range 0x8461 - 0x8463, array index: 0x11AA */ 0x4972,0x6864,0x4621, /* Range 0x8469 - 0x8471, array index: 0x11AD */ 0x685D,INVALC,0x6859,0x4172,0x6853,0x685B,0x6860,INVALC, 0x472C, /* Range 0x84B8 - 0x84BC, array index: 0x11B6 */ 0x3E78,0x6865,INVALC,0x686A,0x4173, /* Range 0x84C9 - 0x84D1, array index: 0x11BB */ 0x4D56,0x6863,0x3338,INVALC,0x6869,INVALC,INVALC,0x686C, 0x4C2C, /* Range 0x8511 - 0x851A, array index: 0x11C4 */ 0x4A4E,INVALC,0x4C22,0x6879,0x6878,INVALC,0x6874,0x6875, INVALC,0x3136, /* Range 0x8548 - 0x854B, array index: 0x11CE */ 0x687E,0x3E56,0x3C49,0x6923, /* Range 0x8568 - 0x856A, array index: 0x11D2 */ 0x4F4F,0x4622,0x4973, /* Range 0x85A6 - 0x85AF, array index: 0x11D5 */ 0x4126,INVALC,0x692A,0x3B27,0x3F45,0x3730,0x4C74,INVALC, 0x4C79,0x3D72, /* Range 0x85F7 - 0x85FB, array index: 0x11DF */ 0x3D73,INVALC,0x693D,0x6942,0x4174, /* Range 0x868A - 0x868C, array index: 0x11E4 */ 0x3263,0x6952,0x6953, /* Range 0x86A9 - 0x86AB, array index: 0x11E7 */ 0x6950,0x6951,0x695B, /* Range 0x86EC - 0x86EF, array index: 0x11EA */ 0x695F,0x4948,0x485A,0x6962, /* Range 0x8706 - 0x870A, array index: 0x11EE */ 0x6964,INVALC,0x6965,0x696A,0x696D, /* Range 0x880D - 0x8811, array index: 0x11F3 */ 0x6A38,0x6A3C,0x6A37,INVALC,0x6A3E, /* Range 0x8821 - 0x8823, array index: 0x11F8 */ 0x6A42,0x6A41,0x695A, /* Range 0x885D - 0x8863, array index: 0x11FB */ 0x3E57,0x6A4C,INVALC,INVALC,0x3955,0x6A4D,0x3061, /* Range 0x887D - 0x8882, array index: 0x1202 */ 0x6A53,0x6A50,0x365E,INVALC,0x6A4F,0x6A56, /* Range 0x88BF - 0x88C5, array index: 0x1208 */ 0x6A5F,INVALC,0x3A5B,0x4E76,0x6A61,0x6A62,0x4175, /* Range 0x88F2 - 0x88F4, array index: 0x120F */ 0x6A6C,0x3E58,0x6A6A, /* Range 0x88F8 - 0x88FE, array index: 0x1212 */ 0x4D67,0x6A67,INVALC,INVALC,0x6A69,0x403D,0x3F7E, /* Range 0x895E - 0x8960, array index: 0x1219 */ 0x6A7E,0x365F,0x6A7D, /* Range 0x8986 - 0x898B, array index: 0x121C */ 0x4A24,0x4746,0x6B2A,INVALC,0x6B2B,0x382B, /* Range 0x8996 - 0x899A, array index: 0x1222 */ 0x3B6B,0x4741,0x6B2D,INVALC,0x3350, /* Range 0x89A6 - 0x89AC, array index: 0x1227 */ 0x6B30,0x4D77,INVALC,0x6B2F,0x3F46,INVALC,0x6B31, /* Range 0x8A16 - 0x8A18, array index: 0x122E */ 0x6B3F,0x4277,0x352D, /* Range 0x8A3A - 0x8A3C, array index: 0x1231 */ 0x3F47,0x4370,0x3E5A, /* Range 0x8A50 - 0x8A55, array index: 0x1234 */ 0x3A3E,0x4242,0x6B48,INVALC,0x3E5B,0x493E, /* Range 0x8A69 - 0x8A73, array index: 0x123A */ 0x3B6D,INVALC,0x4F4D,0x6B4D,0x6B4C,0x4127,INVALC,0x354D, 0x4F43,0x333A,0x3E5C, /* Range 0x8AA0 - 0x8AA8, array index: 0x1245 */ 0x403F,0x6B53,INVALC,0x6B58,0x386D,0x6B55,0x6B56,INVALC, 0x6B52, /* Range 0x8ACB - 0x8ACF, array index: 0x124E */ 0x4041,0x3452,0x6B5A,INVALC,0x3F5B, /* Range 0x8ADA - 0x8AE7, array index: 0x1253 */ 0x6B5C,0x6B67,0x4435,INVALC,0x6B66,INVALC,0x6B63,0x6B6B, 0x6B64,INVALC,0x6B60,INVALC,0x447C,0x6B5F, /* Range 0x8AFE - 0x8B04, array index: 0x1261 */ 0x427A,INVALC,0x4B45,0x315A,0x3062,INVALC,0x4625, /* Range 0x8B16 - 0x8B21, array index: 0x1268 */ 0x6B6C,0x6B6E,INVALC,0x382C,0x6B6A,0x3956,INVALC,0x3C55, INVALC,INVALC,0x6B6F,0x4D58, /* Range 0x8B58 - 0x8B5C, array index: 0x1274 */ 0x3C31,INVALC,0x6B7D,0x6B7C,0x4968, /* Range 0x8B6B - 0x8B74, array index: 0x1279 */ 0x6B7E,0x6C22,INVALC,INVALC,0x6C23,0x3544,0x6641,0x3E79, INVALC,0x6C24, /* Range 0x8C6A - 0x8C6C, array index: 0x1283 */ 0x396B,0x502E,0x6C37, /* Range 0x8C78 - 0x8C7C, array index: 0x1286 */ 0x6C38,0x493F,0x6C39,INVALC,0x6C41, /* Range 0x8C89 - 0x8C8E, array index: 0x128B */ 0x6C3B,0x6C3D,INVALC,0x4B46,0x6C3E,0x6C3F, /* Range 0x8C9D - 0x8CA2, array index: 0x1291 */ 0x332D,0x4467,INVALC,0x4969,0x3A62,0x3957, /* Range 0x8CA7 - 0x8CCE, array index: 0x1297 */ 0x494F,0x325F,0x484E,0x6C45,0x3453,0x4055,0x6C44,0x6C49, 0x4379,0x4C63,INVALC,0x6C47,0x6C48,0x352E,INVALC,0x6C4A, 0x4763,0x425F,INVALC,INVALC,0x4871,0x453D,0x6C46,INVALC, 0x4B47,0x326C,0x6C4C,0x4F28,0x4442,0x4F45,INVALC,INVALC, 0x3B71,0x6C4B,INVALC,0x4231,INVALC,INVALC,0x6C5C,0x4128, /* Range 0x8CDA - 0x8CE6, array index: 0x12BF */ 0x6C4F,0x3B3F,0x3B72,INVALC,0x3E5E,INVALC,0x4765,INVALC, 0x382D,0x6C4E,0x6C4D,INVALC,0x496A, /* Range 0x8CFA - 0x8CFD, array index: 0x12CC */ 0x6C51,0x6C52,0x3958,0x6C50, /* Range 0x8D04 - 0x8D16, array index: 0x12D0 */ 0x6C53,0x6C54,INVALC,0x6C56,0x4223,INVALC,0x6C55,0x3466, INVALC,0x6C58,INVALC,0x6C57,0x6C59,INVALC,INVALC,0x6C5B, 0x6C5D,INVALC,0x6C5E, /* Range 0x8D70 - 0x8D74, array index: 0x12E3 */ 0x4176,0x6C61,INVALC,0x6C62,0x496B, /* Range 0x8E08 - 0x8E0A, array index: 0x12E8 */ 0x6C73,0x6C74,0x4D59, /* Range 0x8E1D - 0x8E1F, array index: 0x12EB */ 0x6C76,0x6C77,0x6C79, /* Range 0x8E47 - 0x8E4C, array index: 0x12EE */ 0x6D21,0x6D25,0x6D22,0x6C7E,INVALC,0x6D23, /* Range 0x8EAA - 0x8EB1, array index: 0x12F4 */ 0x6D39,0x3F48,0x6D3B,INVALC,INVALC,0x366D,0x6D3C,0x6D3E, /* Range 0x8EC8 - 0x8ECD, array index: 0x12FC */ 0x6D41,INVALC,0x3C56,0x6D42,0x3530,0x3733, /* Range 0x8EFB - 0x8EFE, array index: 0x1302 */ 0x6D46,0x6D45,0x375A,0x6D48, /* Range 0x8F12 - 0x8F15, array index: 0x1306 */ 0x6D4C,0x6D4E,0x4A65,0x6D4B, /* Range 0x8F19 - 0x8F1F, array index: 0x130A */ 0x6D4D,INVALC,0x6D51,0x6D4F,0x3531,INVALC,0x6D50, /* Range 0x8F42 - 0x8F46, array index: 0x1311 */ 0x6D58,INVALC,0x336D,0x6D57,0x6D5C, /* Range 0x8F4C - 0x8F4E, array index: 0x1316 */ 0x6D5A,0x4532,0x6D5D, /* Range 0x8F5F - 0x8F64, array index: 0x1319 */ 0x396C,INVALC,0x3725,0x6D60,0x6D61,0x6D62, /* Range 0x8F9B - 0x8F9F, array index: 0x131F */ 0x3F49,0x6D63,INVALC,0x3C2D,0x6D64, /* Range 0x8FAD - 0x8FB2, array index: 0x1324 */ 0x6D66,0x6570,0x6D67,0x4324,0x3F2B,0x4740, /* Range 0x8FBA - 0x8FBC, array index: 0x132A */ 0x4A55,0x4454,0x397E, /* Range 0x8FE5 - 0x8FF0, array index: 0x132D */ 0x6D6A,0x3260,INVALC,INVALC,0x4676,0x6D6C,0x4777,INVALC, 0x4533,INVALC,0x6D6D,0x3D52, /* Range 0x8FF7 - 0x8FFA, array index: 0x1339 */ 0x4C42,0x6D7E,0x6D71,0x6D72, /* Range 0x900B - 0x9023, array index: 0x133D */ 0x6D79,INVALC,0x6D76,0x6E25,0x4629,0x4360,0x6D73,INVALC, 0x447E,0x4553,0x6D74,0x6D78,0x3F60,INVALC,0x4767,0x444C, INVALC,INVALC,0x4042,0x6D77,0x422E,0x4224,0x6D75,0x3029, 0x4F22, /* Range 0x9035 - 0x9039, array index: 0x1356 */ 0x6D7C,0x6D7B,INVALC,0x306F,0x6D7D, /* Range 0x9047 - 0x9059, array index: 0x135B */ 0x3678,INVALC,0x6E26,0x4D37,0x313F,INVALC,0x4A57,0x3261, 0x6E21,0x6E22,0x6E23,0x6E24,0x463B,0x4323,0x3063,0x6E28, INVALC,0x6E29,0x7423, /* Range 0x906D - 0x906F, array index: 0x136E */ 0x4178,0x3C57,0x6E2C, /* Range 0x9075 - 0x9084, array index: 0x1371 */ 0x3D65,0x6E2D,0x412B,0x412A,INVALC,0x3064,INVALC,0x4E4B, 0x6E31,INVALC,0x4872,0x6E33,0x6E32,0x6E30,0x6364,0x3454, /* Range 0x9149 - 0x914E, array index: 0x1381 */ 0x4653,0x6E44,0x3D36,0x3C60,0x475B,0x4371, /* Range 0x91C6 - 0x91D1, array index: 0x1387 */ 0x4850,0x3A53,0x3C61,0x6E58,INVALC,0x6E59,0x4E24,0x3D45, 0x4C6E,0x4E4C,0x6E5A,0x3662, /* Range 0x91DB - 0x91E7, array index: 0x1393 */ 0x6E5E,0x3378,0x3F4B,INVALC,0x6E5C,INVALC,0x6E5D,INVALC, 0x4460,INVALC,INVALC,0x4B55,0x367C, /* Range 0x9298 - 0x929C, array index: 0x13A0 */ 0x4C43,INVALC,0x4438,0x6E75,0x6E72, /* Range 0x9318 - 0x931A, array index: 0x13A5 */ 0x3F6E,0x6F21,0x6F23, /* Range 0x932B - 0x932F, array index: 0x13A8 */ 0x3C62,0x4F23,INVALC,0x6E7E,0x3A78, /* Range 0x93AC - 0x93B0, array index: 0x13AD */ 0x6F2E,0x6F2F,0x4443,INVALC,0x6F2D, /* Range 0x93D6 - 0x93D8, array index: 0x13B2 */ 0x6F32,0x6F33,0x6F36, /* Range 0x9418 - 0x941A, array index: 0x13B5 */ 0x3E62,0x462A,0x6F3C, /* Range 0x9451 - 0x9453, array index: 0x13B8 */ 0x3455,0x6F48,0x4C7A, /* Range 0x947C - 0x9481, array index: 0x13BB */ 0x6F55,0x6F53,0x6F56,0x6F58,INVALC,0x6F57, /* Range 0x9587 - 0x958B, array index: 0x13C1 */ 0x6F5A,INVALC,0x4A44,0x6F5B,0x332B, /* Range 0x95A0 - 0x95A8, array index: 0x13C6 */ 0x6F60,INVALC,0x3458,0x3355,0x395E,0x4836,INVALC,0x6F62, 0x6F61, /* Range 0x95D4 - 0x95D8, array index: 0x13CF */ 0x6F6E,0x6F6D,0x6F6F,INVALC,0x462E, /* Range 0x964B - 0x9650, array index: 0x13D4 */ 0x6F7B,0x6F79,0x395F,INVALC,0x6F7A,0x3842, /* Range 0x965B - 0x9666, array index: 0x13DA */ 0x4A45,0x6F7D,0x7021,0x6F7E,0x7022,INVALC,INVALC,0x3121, 0x3F58,0x3D7C,0x3459,0x7023, /* Range 0x9672 - 0x967A, array index: 0x13E6 */ 0x7024,0x4444,INVALC,0x4E4D,0x462B,0x6F7C,0x4E26,INVALC, 0x3831, /* Range 0x968A - 0x968F, array index: 0x13EF */ 0x4262,0x6721,INVALC,0x7026,0x332C,0x3F6F, /* Range 0x9694 - 0x969C, array index: 0x13F5 */ 0x3356,0x7028,INVALC,0x7029,0x7027,0x3764,INVALC,0x3A5D, 0x3E63, /* Range 0x96B0 - 0x96BC, array index: 0x13FE */ 0x702E,0x702C,0x702D,INVALC,0x702F,INVALC,0x7030,0x4E6C, 0x7031,0x7032,INVALC,0x4049,0x483B, /* Range 0x96C0 - 0x96CE, array index: 0x140B */ 0x3F7D,0x3467,INVALC,INVALC,0x4D3A,0x326D,0x3D38,0x385B, INVALC,0x7035,INVALC,0x7034,0x3B73,0x7036,0x7033, /* Range 0x9704 - 0x9713, array index: 0x141A */ 0x703C,INVALC,0x703D,0x3F4C,0x703E,INVALC,0x4E6E,INVALC, INVALC,0x7039,0x7040,0x7042,INVALC,0x7041,INVALC,0x703F, /* Range 0x975E - 0x976D, array index: 0x142A */ 0x4873,INVALC,0x7051,0x7353,0x4C4C,INVALC,0x7052,INVALC, 0x7053,INVALC,0x7054,0x3357,INVALC,0x7056,INVALC,0x3F59, /* Range 0x9784 - 0x9786, array index: 0x143A */ 0x3373,0x7059,0x705D, /* Range 0x97F2 - 0x97F6, array index: 0x143D */ 0x706E,0x323B,INVALC,0x7071,0x7070, /* Range 0x97FF - 0x9808, array index: 0x1442 */ 0x3641,INVALC,0x4A47,0x443A,0x3A22,INVALC,0x3960,0x3D67, INVALC,0x3F5C, /* Range 0x980F - 0x9813, array index: 0x144C */ 0x7072,0x4D42,0x3468,0x4852,0x465C, /* Range 0x9837 - 0x983D, array index: 0x1451 */ 0x7077,0x7074,INVALC,INVALC,0x4951,0x4D6A,0x7078, /* Range 0x984B - 0x984F, array index: 0x1458 */ 0x707B,0x426A,0x335B,0x335C,0x707A, /* Range 0x986F - 0x9874, array index: 0x145D */ 0x707D,0x707E,0x7121,INVALC,0x7123,0x7122, /* Range 0x98EB - 0x98EF, array index: 0x1463 */ 0x712C,INVALC,0x522C,0x5D3B,0x4853, /* Range 0x98FC - 0x98FE, array index: 0x1468 */ 0x3B74,0x4B30,0x3E7E, /* Range 0x9910 - 0x9914, array index: 0x146B */ 0x3B41,INVALC,0x712F,0x326E,0x7130, /* Range 0x991D - 0x9921, array index: 0x1470 */ 0x7133,0x7134,INVALC,0x7136,0x7132, /* Range 0x9950 - 0x9952, array index: 0x1475 */ 0x713E,0x7140,0x7141, /* Range 0x9996 - 0x9999, array index: 0x1478 */ 0x3C73,0x7144,0x7145,0x3961, /* Range 0x99AC - 0x99AE, array index: 0x147C */ 0x474F,0x7147,0x7148, /* Range 0x99C4 - 0x99C8, array index: 0x147F */ 0x424C,0x3158,0x366E,INVALC,0x366F, /* Range 0x99D0 - 0x99D2, array index: 0x1484 */ 0x4373,0x714E,0x3670, /* Range 0x9A69 - 0x9A6B, array index: 0x1487 */ 0x7169,0x716B,0x716A, /* Range 0x9AEA - 0x9AF1, array index: 0x148A */ 0x4831,0x717A,INVALC,0x4926,0x717B,0x7179,INVALC,0x717D, /* Range 0x9B25 - 0x9B2A, array index: 0x1492 */ 0x7228,INVALC,0x7229,0x722A,0x722B,0x722C, /* Range 0x9B2E - 0x9B32, array index: 0x1498 */ 0x722D,0x722E,INVALC,0x5D35,0x722F, /* Range 0x9B41 - 0x9B45, array index: 0x149D */ 0x3321,0x3A32,0x7231,0x7230,0x4C25, /* Range 0x9B4D - 0x9B51, array index: 0x14A2 */ 0x7233,0x7234,0x7232,INVALC,0x7235, /* Range 0x9B91 - 0x9B97, array index: 0x14A7 */ 0x723A,0x4A2B,0x7238,INVALC,INVALC,0x723B,0x723C, /* Range 0x9BAA - 0x9BAE, array index: 0x14AE */ 0x4B6E,0x3B2D,INVALC,0x3A7A,0x412F, /* Range 0x9BE1 - 0x9BE4, array index: 0x14B3 */ 0x724C,0x7249,0x7248,0x724A, /* Range 0x9BF0 - 0x9BF2, array index: 0x14B7 */ 0x7250,0x724F,0x724E, /* Range 0x9C06 - 0x9C0D, array index: 0x14BA */ 0x7256,INVALC,0x7257,0x7253,0x7259,INVALC,0x7255,0x3362, /* Range 0x9C10 - 0x9C15, array index: 0x14C2 */ 0x4F4C,INVALC,0x7258,0x7254,0x7252,0x7251, /* Range 0x9C2D - 0x9C32, array index: 0x14C8 */ 0x4949,0x725B,0x3073,0x7260,INVALC,0x7262, /* Range 0x9C39 - 0x9C3B, array index: 0x14CE */ 0x336F,0x724D,0x3137, /* Range 0x9C46 - 0x9C48, array index: 0x14D1 */ 0x7263,0x7261,0x432D, /* Range 0x9D06 - 0x9D09, array index: 0x14D4 */ 0x7271,0x463E,0x726E,0x726D, /* Range 0x9D28 - 0x9D2C, array index: 0x14D8 */ 0x337B,INVALC,0x7272,0x3C32,0x3229, /* Range 0x9D5C - 0x9D61, array index: 0x14DD */ 0x312D,0x7321,0x7322,INVALC,0x3974,0x4C39, /* Range 0x9DF8 - 0x9DFA, array index: 0x14E3 */ 0x733B,0x426B,0x3A6D, /* Range 0x9E91 - 0x9E97, array index: 0x14E6 */ 0x734C,0x734A,0x4F3C,INVALC,0x734B,INVALC,0x4E6F, /* Range 0x9EB8 - 0x9EBF, array index: 0x14ED */ 0x7350,0x396D,0x4C4D,0x4B63,0x5677,INVALC,0x5D60,0x4B7B, /* Range 0x9ECC - 0x9ED4, array index: 0x14F5 */ 0x7354,0x3550,0x7355,0x7356,0x7357,INVALC,0x3975,INVALC, 0x7358, /* Range 0x9ED8 - 0x9EE0, array index: 0x14FE */ 0x6054,0x4C5B,INVALC,0x4263,0x7359,0x735B,0x735A,INVALC, 0x735C, /* Range 0x9EF9 - 0x9EFD, array index: 0x1507 */ 0x7363,INVALC,0x7364,0x7365,0x7366, /* Range 0x9F5F - 0x9F67, array index: 0x150C */ 0x7372,0x7373,0x7374,0x4E70,0x7371,INVALC,INVALC,0x7375, 0x7376, /* Range 0xFF01 - 0xFF5D, array index: 0x1515 */ 0x212A,INVALC,0x2174,0x2170,0x2173,0x2175,INVALC,0x214A, 0x214B,0x2176,0x215C,0x2124,INVALC,0x2125,0x213F,0x2330, 0x2331,0x2332,0x2333,0x2334,0x2335,0x2336,0x2337,0x2338, 0x2339,0x2127,0x2128,0x2163,0x2161,0x2164,0x2129,0x2177, 0x2341,0x2342,0x2343,0x2344,0x2345,0x2346,0x2347,0x2348, 0x2349,0x234A,0x234B,0x234C,0x234D,0x234E,0x234F,0x2350, 0x2351,0x2352,0x2353,0x2354,0x2355,0x2356,0x2357,0x2358, 0x2359,0x235A,0x214E,INVALC,0x214F,0x2130,0x2132,0x212E, 0x2361,0x2362,0x2363,0x2364,0x2365,0x2366,0x2367,0x2368, 0x2369,0x236A,0x236B,0x236C,0x236D,0x236E,0x236F,0x2370, 0x2371,0x2372,0x2373,0x2374,0x2375,0x2376,0x2377,0x2378, 0x2379,0x237A,0x2150,0x2143,0x2151, /* Unranged codes (489 codes) */ /* Array index: 0x1572 */ 0x005C,0x2140, /* Array index: 0x1572 */ 0x00A2,0x2171, /* Array index: 0x1572 */ 0x00A3,0x2172, /* Array index: 0x1572 */ 0x00A7,0x2178, /* Array index: 0x1572 */ 0x00A8,0x212F, /* Array index: 0x1572 */ 0x00AC,0x224C, /* Array index: 0x1572 */ 0x00B0,0x216B, /* Array index: 0x1572 */ 0x00B1,0x215E, /* Array index: 0x1572 */ 0x00B4,0x212D, /* Array index: 0x1572 */ 0x00B6,0x2279, /* Array index: 0x1572 */ 0x00D7,0x215F, /* Array index: 0x1572 */ 0x00F7,0x2160, /* Array index: 0x1572 */ 0x0401,0x2727, /* Array index: 0x1572 */ 0x2010,0x213E, /* Array index: 0x1572 */ 0x2025,0x2145, /* Array index: 0x1572 */ 0x2026,0x2144, /* Array index: 0x1572 */ 0x2030,0x2273, /* Array index: 0x1572 */ 0x2032,0x216C, /* Array index: 0x1572 */ 0x2033,0x216D, /* Array index: 0x1572 */ 0x203B,0x2228, /* Array index: 0x1572 */ 0x2103,0x216E, /* Array index: 0x1572 */ 0x212B,0x2272, /* Array index: 0x1572 */ 0x21D2,0x224D, /* Array index: 0x1572 */ 0x21D4,0x224E, /* Array index: 0x1572 */ 0x2200,0x224F, /* Array index: 0x1572 */ 0x2202,0x225F, /* Array index: 0x1572 */ 0x2203,0x2250, /* Array index: 0x1572 */ 0x2207,0x2260, /* Array index: 0x1572 */ 0x2208,0x223A, /* Array index: 0x1572 */ 0x220B,0x223B, /* Array index: 0x1572 */ 0x2212,0x215D, /* Array index: 0x1572 */ 0x221A,0x2265, /* Array index: 0x1572 */ 0x221D,0x2267, /* Array index: 0x1572 */ 0x221E,0x2167, /* Array index: 0x1572 */ 0x2220,0x225C, /* Array index: 0x1572 */ 0x2234,0x2168, /* Array index: 0x1572 */ 0x2235,0x2268, /* Array index: 0x1572 */ 0x223D,0x2266, /* Array index: 0x1572 */ 0x2252,0x2262, /* Array index: 0x1572 */ 0x2260,0x2162, /* Array index: 0x1572 */ 0x2261,0x2261, /* Array index: 0x1572 */ 0x2266,0x2165, /* Array index: 0x1572 */ 0x2267,0x2166, /* Array index: 0x1572 */ 0x226A,0x2263, /* Array index: 0x1572 */ 0x226B,0x2264, /* Array index: 0x1572 */ 0x2282,0x223E, /* Array index: 0x1572 */ 0x2283,0x223F, /* Array index: 0x1572 */ 0x2286,0x223C, /* Array index: 0x1572 */ 0x2287,0x223D, /* Array index: 0x1572 */ 0x22A5,0x225D, /* Array index: 0x1572 */ 0x2312,0x225E, /* Array index: 0x1572 */ 0x250C,0x2823, /* Array index: 0x1572 */ 0x250F,0x282E, /* Array index: 0x1572 */ 0x2510,0x2824, /* Array index: 0x1572 */ 0x2513,0x282F, /* Array index: 0x1572 */ 0x2514,0x2826, /* Array index: 0x1572 */ 0x2520,0x2837, /* Array index: 0x1572 */ 0x2528,0x2839, /* Array index: 0x1572 */ 0x252B,0x2834, /* Array index: 0x1572 */ 0x252C,0x2828, /* Array index: 0x1572 */ 0x252F,0x2838, /* Array index: 0x1572 */ 0x2530,0x283D, /* Array index: 0x1572 */ 0x2533,0x2833, /* Array index: 0x1572 */ 0x2534,0x282A, /* Array index: 0x1572 */ 0x2537,0x283A, /* Array index: 0x1572 */ 0x2538,0x283F, /* Array index: 0x1572 */ 0x253B,0x2835, /* Array index: 0x1572 */ 0x253C,0x282B, /* Array index: 0x1572 */ 0x253F,0x283B, /* Array index: 0x1572 */ 0x2542,0x2840, /* Array index: 0x1572 */ 0x254B,0x2836, /* Array index: 0x1572 */ 0x25A0,0x2223, /* Array index: 0x1572 */ 0x25A1,0x2222, /* Array index: 0x1572 */ 0x25B2,0x2225, /* Array index: 0x1572 */ 0x25B3,0x2224, /* Array index: 0x1572 */ 0x25BC,0x2227, /* Array index: 0x1572 */ 0x25BD,0x2226, /* Array index: 0x1572 */ 0x25C6,0x2221, /* Array index: 0x1572 */ 0x25C7,0x217E, /* Array index: 0x1572 */ 0x25CB,0x217B, /* Array index: 0x1572 */ 0x25CE,0x217D, /* Array index: 0x1572 */ 0x25CF,0x217C, /* Array index: 0x1572 */ 0x25EF,0x227E, /* Array index: 0x1572 */ 0x2605,0x217A, /* Array index: 0x1572 */ 0x2606,0x2179, /* Array index: 0x1572 */ 0x2640,0x216A, /* Array index: 0x1572 */ 0x2642,0x2169, /* Array index: 0x1572 */ 0x266A,0x2276, /* Array index: 0x1572 */ 0x266D,0x2275, /* Array index: 0x1572 */ 0x266F,0x2274, /* Array index: 0x1572 */ 0x301C,0x2141, /* Array index: 0x1572 */ 0x4E00,0x306C, /* Array index: 0x1572 */ 0x4E01,0x437A, /* Array index: 0x1572 */ 0x4E03,0x3C37, /* Array index: 0x1572 */ 0x4E1E,0x3E67, /* Array index: 0x1572 */ 0x4E21,0x4E3E, /* Array index: 0x1572 */ 0x4E26,0x4A42, /* Array index: 0x1572 */ 0x4E2A,0x5024, /* Array index: 0x1572 */ 0x4E2D,0x4366, /* Array index: 0x1572 */ 0x4E31,0x5025, /* Array index: 0x1572 */ 0x4E32,0x367A, /* Array index: 0x1572 */ 0x4E36,0x5026, /* Array index: 0x1572 */ 0x4E3F,0x5028, /* Array index: 0x1572 */ 0x4E42,0x5029, /* Array index: 0x1572 */ 0x4E43,0x4735, /* Array index: 0x1572 */ 0x4E45,0x3557, /* Array index: 0x1572 */ 0x4E62,0x5626, /* Array index: 0x1572 */ 0x4E71,0x4D70, /* Array index: 0x1572 */ 0x4E73,0x467D, /* Array index: 0x1572 */ 0x4E7E,0x3425, /* Array index: 0x1572 */ 0x4E80,0x3535, /* Array index: 0x1572 */ 0x4E82,0x502C, /* Array index: 0x1572 */ 0x4EB3,0x5038, /* Array index: 0x1572 */ 0x4EB6,0x5039, /* Array index: 0x1572 */ 0x4EBA,0x3F4D, /* Array index: 0x1572 */ 0x4EED,0x5041, /* Array index: 0x1572 */ 0x4EEE,0x323E, /* Array index: 0x1572 */ 0x4EF0,0x3644, /* Array index: 0x1572 */ 0x4EF2,0x4367, /* Array index: 0x1572 */ 0x4EF6,0x376F, /* Array index: 0x1572 */ 0x4EF7,0x5043, /* Array index: 0x1572 */ 0x4EFB,0x4724, /* Array index: 0x1572 */ 0x4F01,0x346B, /* Array index: 0x1572 */ 0x4F1A,0x3271, /* Array index: 0x1572 */ 0x4F1C,0x5067, /* Array index: 0x1572 */ 0x4F1D,0x4541, /* Array index: 0x1572 */ 0x4F2F,0x476C, /* Array index: 0x1572 */ 0x4F30,0x5046, /* Array index: 0x1572 */ 0x4F34,0x483C, /* Array index: 0x1572 */ 0x4F36,0x4E62, /* Array index: 0x1572 */ 0x4F38,0x3F2D, /* Array index: 0x1572 */ 0x4F3A,0x3B47, /* Array index: 0x1572 */ 0x4F3C,0x3B77, /* Array index: 0x1572 */ 0x4F3D,0x3240, /* Array index: 0x1572 */ 0x4F43,0x4451, /* Array index: 0x1572 */ 0x4F46,0x4322, /* Array index: 0x1572 */ 0x4F47,0x504A, /* Array index: 0x1572 */ 0x4F69,0x5050, /* Array index: 0x1572 */ 0x4F6F,0x5053, /* Array index: 0x1572 */ 0x4F70,0x5051, /* Array index: 0x1572 */ 0x4F73,0x3242, /* Array index: 0x1572 */ 0x4F75,0x4A3B, /* Array index: 0x1572 */ 0x4F76,0x504B, /* Array index: 0x1572 */ 0x4F7B,0x504F, /* Array index: 0x1572 */ 0x4F7C,0x3873, /* Array index: 0x1572 */ 0x4F7F,0x3B48, /* Array index: 0x1572 */ 0x4F83,0x3426, /* Array index: 0x1572 */ 0x4F86,0x5054, /* Array index: 0x1572 */ 0x4F88,0x504C, /* Array index: 0x1572 */ 0x4F8B,0x4E63, /* Array index: 0x1572 */ 0x4F8D,0x3B78, /* Array index: 0x1572 */ 0x4F8F,0x504D, /* Array index: 0x1572 */ 0x4F91,0x5052, /* Array index: 0x1572 */ 0x4F96,0x5055, /* Array index: 0x1572 */ 0x4F98,0x504E, /* Array index: 0x1572 */ 0x4F9B,0x3621, /* Array index: 0x1572 */ 0x4F9D,0x304D, /* Array index: 0x1572 */ 0x4FA0,0x3622, /* Array index: 0x1572 */ 0x4FA1,0x3241, /* Array index: 0x1572 */ 0x4FB5,0x3F2F, /* Array index: 0x1572 */ 0x4FB6,0x4E37, /* Array index: 0x1572 */ 0x4FBF,0x4A58, /* Array index: 0x1572 */ 0x4FCA,0x3D53, /* Array index: 0x1572 */ 0x4FCE,0x5059, /* Array index: 0x1572 */ 0x4FD0,0x505E, /* Array index: 0x1572 */ 0x4FD1,0x505C, /* Array index: 0x1572 */ 0x4FD4,0x5057, /* Array index: 0x1572 */ 0x4FEE,0x3D24, /* Array index: 0x1572 */ 0x4FEF,0x506D, /* Array index: 0x1572 */ 0x4FF3,0x4750, /* Array index: 0x1572 */ 0x4FF5,0x4936, /* Array index: 0x1572 */ 0x4FF6,0x5068, /* Array index: 0x1572 */ 0x4FF8,0x4A70, /* Array index: 0x1572 */ 0x4FFA,0x3236, /* Array index: 0x1572 */ 0x4FFE,0x506C, /* Array index: 0x1572 */ 0x5005,0x5066, /* Array index: 0x1572 */ 0x5006,0x506F, /* Array index: 0x1572 */ 0x5009,0x4152, /* Array index: 0x1572 */ 0x500B,0x3844, /* Array index: 0x1572 */ 0x500D,0x475C, /* Array index: 0x1572 */ 0x500F,0x6047, /* Array index: 0x1572 */ 0x5011,0x506E, /* Array index: 0x1572 */ 0x5012,0x455D, /* Array index: 0x1572 */ 0x5014,0x5063, /* Array index: 0x1572 */ 0x5016,0x3876, /* Array index: 0x1572 */ 0x5019,0x3875, /* Array index: 0x1572 */ 0x501A,0x5061, /* Array index: 0x1572 */ 0x501F,0x3C5A, /* Array index: 0x1572 */ 0x5036,0x3666, /* Array index: 0x1572 */ 0x5039,0x3770, /* Array index: 0x1572 */ 0x5043,0x5070, /* Array index: 0x1572 */ 0x504F,0x4A50, /* Array index: 0x1572 */ 0x5050,0x5074, /* Array index: 0x1572 */ 0x5055,0x5073, /* Array index: 0x1572 */ 0x5056,0x5077, /* Array index: 0x1572 */ 0x505A,0x5076, /* Array index: 0x1572 */ 0x505C,0x4464, /* Array index: 0x1572 */ 0x5065,0x3772, /* Array index: 0x1572 */ 0x506C,0x5078, /* Array index: 0x1572 */ 0x507D,0x3536, /* Array index: 0x1572 */ 0x5080,0x507A, /* Array index: 0x1572 */ 0x5085,0x507C, /* Array index: 0x1572 */ 0x508D,0x4B35, /* Array index: 0x1572 */ 0x5091,0x3766, /* Array index: 0x1572 */ 0x50AC,0x3A45, /* Array index: 0x1572 */ 0x50AD,0x4D43, /* Array index: 0x1572 */ 0x50BE,0x3739, /* Array index: 0x1572 */ 0x50C2,0x5124, /* Array index: 0x1572 */ 0x50C5,0x364F, /* Array index: 0x1572 */ 0x50C9,0x5121, /* Array index: 0x1572 */ 0x50CA,0x5122, /* Array index: 0x1572 */ 0x50CD,0x462F, /* Array index: 0x1572 */ 0x50CF,0x417C, /* Array index: 0x1572 */ 0x50D1,0x3623, /* Array index: 0x1572 */ 0x50D5,0x4B4D, /* Array index: 0x1572 */ 0x50D6,0x5125, /* Array index: 0x1572 */ 0x50DA,0x4E3D, /* Array index: 0x1572 */ 0x50DE,0x5126, /* Array index: 0x1572 */ 0x50E3,0x5129, /* Array index: 0x1572 */ 0x50E5,0x5127, /* Array index: 0x1572 */ 0x50E7,0x414E, /* Array index: 0x1572 */ 0x50ED,0x5128, /* Array index: 0x1572 */ 0x50EE,0x512A, /* Array index: 0x1572 */ 0x50F5,0x512C, /* Array index: 0x1572 */ 0x50F9,0x512B, /* Array index: 0x1572 */ 0x50FB,0x4A48, /* Array index: 0x1572 */ 0x5109,0x512D, /* Array index: 0x1572 */ 0x511F,0x3D7E, /* Array index: 0x1572 */ 0x5121,0x5134, /* Array index: 0x1572 */ 0x512A,0x4D25, /* Array index: 0x1572 */ 0x5132,0x4C59, /* Array index: 0x1572 */ 0x5137,0x5136, /* Array index: 0x1572 */ 0x515A,0x455E, /* Array index: 0x1572 */ 0x515C,0x3375, /* Array index: 0x1572 */ 0x5162,0x513E, /* Array index: 0x1572 */ 0x5165,0x467E, /* Array index: 0x1572 */ 0x5171,0x3626, /* Array index: 0x1572 */ 0x517C,0x3773, /* Array index: 0x1572 */ 0x5180,0x5143, /* Array index: 0x1572 */ 0x5182,0x5144, /* Array index: 0x1572 */ 0x5185,0x4662, /* Array index: 0x1572 */ 0x5186,0x315F, /* Array index: 0x1572 */ 0x51A0,0x3427, /* Array index: 0x1572 */ 0x51BD,0x5158, /* Array index: 0x1572 */ 0x51D6,0x5245, /* Array index: 0x1572 */ 0x51ED,0x515F, /* Array index: 0x1572 */ 0x51F0,0x5160, /* Array index: 0x1572 */ 0x51F1,0x332E, /* Array index: 0x1572 */ 0x520E,0x5166, /* Array index: 0x1572 */ 0x5211,0x373A, /* Array index: 0x1572 */ 0x5214,0x5165, /* Array index: 0x1572 */ 0x5217,0x4E73, /* Array index: 0x1572 */ 0x521D,0x3D69, /* Array index: 0x1572 */ 0x5224,0x483D, /* Array index: 0x1572 */ 0x5225,0x4A4C, /* Array index: 0x1572 */ 0x5227,0x5167, /* Array index: 0x1572 */ 0x5229,0x4D78, /* Array index: 0x1572 */ 0x522A,0x5168, /* Array index: 0x1572 */ 0x522E,0x5169, /* Array index: 0x1572 */ 0x5230,0x457E, /* Array index: 0x1572 */ 0x5233,0x516A, /* Array index: 0x1572 */ 0x5243,0x4466, /* Array index: 0x1572 */ 0x5244,0x516D, /* Array index: 0x1572 */ 0x5247,0x4227, /* Array index: 0x1572 */ 0x5254,0x5171, /* Array index: 0x1572 */ 0x5256,0x4B36, /* Array index: 0x1572 */ 0x525B,0x3964, /* Array index: 0x1572 */ 0x525E,0x5170, /* Array index: 0x1572 */ 0x5269,0x5174, /* Array index: 0x1572 */ 0x526A,0x5172, /* Array index: 0x1572 */ 0x527D,0x5177, /* Array index: 0x1572 */ 0x527F,0x5176, /* Array index: 0x1572 */ 0x5283,0x3344, /* Array index: 0x1572 */ 0x528D,0x5178, /* Array index: 0x1572 */ 0x5291,0x517D, /* Array index: 0x1572 */ 0x5292,0x517A, /* Array index: 0x1572 */ 0x5294,0x5179, /* Array index: 0x1572 */ 0x529B,0x4E4F, /* Array index: 0x1572 */ 0x529F,0x3879, /* Array index: 0x1572 */ 0x52A0,0x3243, /* Array index: 0x1572 */ 0x52A3,0x4E74, /* Array index: 0x1572 */ 0x52B1,0x4E65, /* Array index: 0x1572 */ 0x52B4,0x4F2B, /* Array index: 0x1572 */ 0x52B5,0x5225, /* Array index: 0x1572 */ 0x52B9,0x387A, /* Array index: 0x1572 */ 0x52BC,0x5224, /* Array index: 0x1572 */ 0x52BE,0x332F, /* Array index: 0x1572 */ 0x52C1,0x5226, /* Array index: 0x1572 */ 0x52C3,0x4B56, /* Array index: 0x1572 */ 0x52C5,0x443C, /* Array index: 0x1572 */ 0x52C7,0x4D26, /* Array index: 0x1572 */ 0x52C9,0x4A59, /* Array index: 0x1572 */ 0x52CD,0x5227, /* Array index: 0x1572 */ 0x52D2,0x7055, /* Array index: 0x1572 */ 0x52F2,0x372E, /* Array index: 0x1572 */ 0x52F3,0x522E, /* Array index: 0x1572 */ 0x52F5,0x522F, /* Array index: 0x1572 */ 0x530D,0x5235, /* Array index: 0x1572 */ 0x530F,0x5237, /* Array index: 0x1572 */ 0x5310,0x5236, /* Array index: 0x1572 */ 0x531D,0x4159, /* Array index: 0x1572 */ 0x5320,0x3E22, /* Array index: 0x1572 */ 0x5321,0x3629, /* Array index: 0x1572 */ 0x5323,0x523A, /* Array index: 0x1572 */ 0x532A,0x485B, /* Array index: 0x1572 */ 0x532F,0x523B, /* Array index: 0x1572 */ 0x5331,0x523C, /* Array index: 0x1572 */ 0x5333,0x523D, /* Array index: 0x1572 */ 0x534D,0x5244, /* Array index: 0x1572 */ 0x5366,0x3735, /* Array index: 0x1572 */ 0x5369,0x5247, /* Array index: 0x1572 */ 0x537B,0x524A, /* Array index: 0x1572 */ 0x537F,0x362A, /* Array index: 0x1572 */ 0x5382,0x524C, /* Array index: 0x1572 */ 0x5384,0x4C71, /* Array index: 0x1572 */ 0x5396,0x524D, /* Array index: 0x1572 */ 0x5398,0x4E52, /* Array index: 0x1572 */ 0x539A,0x387C, /* Array index: 0x1572 */ 0x539F,0x3836, /* Array index: 0x1572 */ 0x53A0,0x524E, /* Array index: 0x1572 */ 0x53AD,0x315E, /* Array index: 0x1572 */ 0x53AE,0x5251, /* Array index: 0x1572 */ 0x53B0,0x5252, /* Array index: 0x1572 */ 0x53B3,0x3837, /* Array index: 0x1572 */ 0x53B6,0x5253, /* Array index: 0x1572 */ 0x53BB,0x356E, /* Array index: 0x1572 */ 0x53C2,0x3B32, /* Array index: 0x1572 */ 0x53C3,0x5254, /* Array index: 0x1572 */ 0x53D4,0x3D47, /* Array index: 0x1572 */ 0x53D6,0x3C68, /* Array index: 0x1572 */ 0x53D7,0x3C75, /* Array index: 0x1572 */ 0x53D9,0x3D76, /* Array index: 0x1572 */ 0x53DB,0x4840, /* Array index: 0x1572 */ 0x5401,0x525E, /* Array index: 0x1572 */ 0x5403,0x3549, /* Array index: 0x1572 */ 0x5404,0x3346, /* Array index: 0x1572 */ 0x541B,0x372F, /* Array index: 0x1572 */ 0x541D,0x5267, /* Array index: 0x1572 */ 0x541F,0x3663, /* Array index: 0x1572 */ 0x5420,0x4B4A, /* Array index: 0x1572 */ 0x5426,0x485D, /* Array index: 0x1572 */ 0x5436,0x5265, /* Array index: 0x1572 */ 0x544E,0x5268, /* Array index: 0x1572 */ 0x5451,0x465D, /* Array index: 0x1572 */ 0x545F,0x526C, /* Array index: 0x1572 */ 0x5468,0x3C7E, /* Array index: 0x1572 */ 0x546A,0x3C76, /* Array index: 0x1572 */ 0x5470,0x526F, /* Array index: 0x1572 */ 0x5471,0x526D, /* Array index: 0x1572 */ 0x5480,0x5272, /* Array index: 0x1572 */ 0x5484,0x5274, /* Array index: 0x1572 */ 0x5486,0x5276, /* Array index: 0x1572 */ 0x54A2,0x5278, /* Array index: 0x1572 */ 0x54A4,0x5323, /* Array index: 0x1572 */ 0x54A5,0x527A, /* Array index: 0x1572 */ 0x54A8,0x527E, /* Array index: 0x1572 */ 0x54AB,0x5321, /* Array index: 0x1572 */ 0x54AC,0x527B, /* Array index: 0x1572 */ 0x54AF,0x533E, /* Array index: 0x1572 */ 0x54B2,0x3A69, /* Array index: 0x1572 */ 0x54B3,0x3331, /* Array index: 0x1572 */ 0x54B8,0x5279, /* Array index: 0x1572 */ 0x54D8,0x5326, /* Array index: 0x1572 */ 0x54E1,0x3077, /* Array index: 0x1572 */ 0x54E2,0x532F, /* Array index: 0x1572 */ 0x54ED,0x532D, /* Array index: 0x1572 */ 0x54EE,0x532C, /* Array index: 0x1572 */ 0x54F2,0x452F, /* Array index: 0x1572 */ 0x54FA,0x532E, /* Array index: 0x1572 */ 0x54FD,0x532B, /* Array index: 0x1572 */ 0x5504,0x3134, /* Array index: 0x1572 */ 0x5506,0x3A36, /* Array index: 0x1572 */ 0x5507,0x3F30, /* Array index: 0x1572 */ 0x550F,0x5329, /* Array index: 0x1572 */ 0x5510,0x4562, /* Array index: 0x1572 */ 0x5514,0x532A, /* Array index: 0x1572 */ 0x5516,0x3022, /* Array index: 0x1572 */ 0x552E,0x5334, /* Array index: 0x1572 */ 0x552F,0x4D23, /* Array index: 0x1572 */ 0x5531,0x3E27, /* Array index: 0x1572 */ 0x5533,0x533A, /* Array index: 0x1572 */ 0x5538,0x5339, /* Array index: 0x1572 */ 0x5539,0x5330, /* Array index: 0x1572 */ 0x553E,0x4243, /* Array index: 0x1572 */ 0x5540,0x5331, /* Array index: 0x1572 */ 0x554C,0x5333, /* Array index: 0x1572 */ 0x554F,0x4C64, /* Array index: 0x1572 */ 0x5553,0x373C, /* Array index: 0x1572 */ 0x5556,0x5337, /* Array index: 0x1572 */ 0x5557,0x5338, /* Array index: 0x1572 */ 0x555C,0x5335, /* Array index: 0x1572 */ 0x555D,0x533B, /* Array index: 0x1572 */ 0x5563,0x5332, /* Array index: 0x1572 */ 0x557B,0x5341, /* Array index: 0x1572 */ 0x557C,0x5346, /* Array index: 0x1572 */ 0x557E,0x5342, /* Array index: 0x1572 */ 0x5580,0x533D, /* Array index: 0x1572 */ 0x5583,0x5347, /* Array index: 0x1572 */ 0x5584,0x4131, /* Array index: 0x1572 */ 0x55B6,0x3144, /* Array index: 0x1572 */ 0x55C4,0x534E, /* Array index: 0x1572 */ 0x55C5,0x534C, /* Array index: 0x1572 */ 0x55C7,0x5427, /* Array index: 0x1572 */ 0x55D4,0x5351, /* Array index: 0x1572 */ 0x55DA,0x534B, /* Array index: 0x1572 */ 0x55DC,0x534F, /* Array index: 0x1572 */ 0x55DF,0x534D, /* Array index: 0x1572 */ 0x55E3,0x3B4C, /* Array index: 0x1572 */ 0x55E4,0x5350, /* Array index: 0x1572 */ 0x55F7,0x5353, /* Array index: 0x1572 */ 0x55F9,0x5358, /* Array index: 0x1572 */ 0x55FD,0x5356, /* Array index: 0x1572 */ 0x55FE,0x5355, /* Array index: 0x1572 */ 0x5606,0x4332, /* Array index: 0x1572 */ 0x5609,0x3245, /* Array index: 0x1572 */ 0x561B,0x5357, /* Array index: 0x1572 */ 0x5629,0x325E, /* Array index: 0x1572 */ 0x562F,0x5362, /* Array index: 0x1572 */ 0x5631,0x3E7C, /* Array index: 0x1572 */ 0x5632,0x535E, /* Array index: 0x1572 */ 0x5634,0x535C, /* Array index: 0x1572 */ 0x5636,0x535D, /* Array index: 0x1572 */ 0x5638,0x535F, /* Array index: 0x1572 */ 0x5642,0x313D, /* Array index: 0x1572 */ 0x564C,0x4139, /* Array index: 0x1572 */ 0x564E,0x5359, /* Array index: 0x1572 */ 0x5650,0x535A, /* Array index: 0x1572 */ 0x565B,0x337A, /* Array index: 0x1572 */ 0x5664,0x5361, /* Array index: 0x1572 */ 0x5674,0x4A2E, /* Array index: 0x1572 */ 0x5678,0x4655, /* Array index: 0x1572 */ 0x567A,0x4838, /* Array index: 0x1572 */ 0x5680,0x5366, /* Array index: 0x1572 */ 0x5686,0x5365, /* Array index: 0x1572 */ 0x5687,0x3345, /* Array index: 0x1572 */ 0x568A,0x5367, /* Array index: 0x1572 */ 0x568F,0x536A, /* Array index: 0x1572 */ 0x5694,0x5369, /* Array index: 0x1572 */ 0x56A0,0x5368, /* Array index: 0x1572 */ 0x56A2,0x4739, /* Array index: 0x1572 */ 0x56A5,0x536B, /* Array index: 0x1572 */ 0x56AE,0x536C, /* Array index: 0x1572 */ 0x56B4,0x536E, /* Array index: 0x1572 */ 0x56B6,0x536D, /* Array index: 0x1572 */ 0x56BC,0x5370, /* Array index: 0x1572 */ 0x56C8,0x5374, /* Array index: 0x1572 */ 0x56CE,0x5375, /* Array index: 0x1572 */ 0x56D1,0x5376, /* Array index: 0x1572 */ 0x56D3,0x5377, /* Array index: 0x1572 */ 0x56DE,0x3273, /* Array index: 0x1572 */ 0x56E0,0x3078, /* Array index: 0x1572 */ 0x56E3,0x4344, /* Array index: 0x1572 */ 0x56EE,0x5379, /* Array index: 0x1572 */ 0x56F0,0x3A24, /* Array index: 0x1572 */ 0x56F2,0x304F, /* Array index: 0x1572 */ 0x56F3,0x3F5E, /* Array index: 0x1572 */ 0x56F9,0x537A, /* Array index: 0x1572 */ 0x56FA,0x3847, /* Array index: 0x1572 */ 0x56FD,0x3971, /* Array index: 0x1572 */ 0x56FF,0x537C, /* Array index: 0x1572 */ 0x5700,0x537B, /* Array index: 0x1572 */ 0x5703,0x4A60, /* Array index: 0x1572 */ 0x5704,0x537D, /* Array index: 0x1572 */ 0x5708,0x5421, /* Array index: 0x1572 */ 0x5709,0x537E, /* Array index: 0x1572 */ 0x570B,0x5422, /* Array index: 0x1572 */ 0x570D,0x5423, /* Array index: 0x1572 */ 0x570F,0x3777, /* Array index: 0x1572 */ 0x5712,0x3160, /* Array index: 0x1572 */ 0x5713,0x5424, /* Array index: 0x1572 */ 0x5716,0x5426, /* Array index: 0x1572 */ 0x5718,0x5425, /* Array index: 0x1572 */ 0x571C,0x5428, /* Array index: 0x1572 */ 0x571F,0x455A, /* Array index: 0x1572 */ 0x572D,0x373D, /* Array index: 0x1572 */ 0x5730,0x434F, /* Array index: 0x1572 */ 0x5737,0x542A, /* Array index: 0x1572 */ 0x5738,0x542B, /* Array index: 0x1572 */ 0x573B,0x542D, /* Array index: 0x1572 */ 0x5740,0x542E, /* Array index: 0x1572 */ 0x5742,0x3A64, /* Array index: 0x1572 */ 0x5747,0x3651, /* Array index: 0x1572 */ 0x574A,0x4B37, /* Array index: 0x1572 */ 0x5761,0x5433, /* Array index: 0x1572 */ 0x5764,0x3A25, /* Array index: 0x1572 */ 0x5766,0x4333, /* Array index: 0x1572 */ 0x5769,0x5430, /* Array index: 0x1572 */ 0x576A,0x445A, /* Array index: 0x1572 */ 0x577F,0x5434, /* Array index: 0x1572 */ 0x5782,0x3F62, /* Array index: 0x1572 */ 0x5788,0x5432, /* Array index: 0x1572 */ 0x5789,0x5435, /* Array index: 0x1572 */ 0x578B,0x373F, /* Array index: 0x1572 */ 0x5793,0x5436, /* Array index: 0x1572 */ 0x57AA,0x543A, /* Array index: 0x1572 */ 0x57B0,0x543B, /* Array index: 0x1572 */ 0x57B3,0x5438, /* Array index: 0x1572 */ 0x57C0,0x5431, /* Array index: 0x1572 */ 0x57C3,0x543C, /* Array index: 0x1572 */ 0x57C6,0x543D, /* Array index: 0x1572 */ 0x57CB,0x4B64, /* Array index: 0x1572 */ 0x57CE,0x3E6B, /* Array index: 0x1572 */ 0x57DC,0x4738, /* Array index: 0x1572 */ 0x57DF,0x3068, /* Array index: 0x1572 */ 0x57E0,0x4956, /* Array index: 0x1572 */ 0x57E3,0x5443, /* Array index: 0x1572 */ 0x57F4,0x3E7D, /* Array index: 0x1572 */ 0x57F7,0x3C39, /* Array index: 0x1572 */ 0x57F9,0x475D, /* Array index: 0x1572 */ 0x57FA,0x3470, /* Array index: 0x1572 */ 0x57FC,0x3A6B, /* Array index: 0x1572 */ 0x5800,0x4B59, /* Array index: 0x1572 */ 0x5802,0x4632, /* Array index: 0x1572 */ 0x5805,0x3778, /* Array index: 0x1572 */ 0x5806,0x424F, /* Array index: 0x1572 */ 0x580A,0x5441, /* Array index: 0x1572 */ 0x580B,0x5444, /* Array index: 0x1572 */ 0x5815,0x4244, /* Array index: 0x1572 */ 0x5819,0x5445, /* Array index: 0x1572 */ 0x581D,0x5446, /* Array index: 0x1572 */ 0x5821,0x5448, /* Array index: 0x1572 */ 0x5824,0x4469, /* Array index: 0x1572 */ 0x582A,0x342E, /* Array index: 0x1572 */ 0x583A,0x3A66, /* Array index: 0x1572 */ 0x583D,0x544E, /* Array index: 0x1572 */ 0x5840,0x4A3D, /* Array index: 0x1572 */ 0x5841,0x4E5D, /* Array index: 0x1572 */ 0x584A,0x3274, /* Array index: 0x1572 */ 0x584B,0x544A, /* Array index: 0x1572 */ 0x5851,0x413A, /* Array index: 0x1572 */ 0x5852,0x544D, /* Array index: 0x1572 */ 0x5854,0x4563, /* Array index: 0x1572 */ 0x585E,0x3A49, /* Array index: 0x1572 */ 0x5862,0x5449, /* Array index: 0x1572 */ 0x5869,0x3176, /* Array index: 0x1572 */ 0x586B,0x4536, /* Array index: 0x1572 */ 0x5870,0x544B, /* Array index: 0x1572 */ 0x5872,0x5447, /* Array index: 0x1572 */ 0x5875,0x3F50, /* Array index: 0x1572 */ 0x5879,0x544F, /* Array index: 0x1572 */ 0x587E,0x3D4E, /* Array index: 0x1572 */ 0x5883,0x362D, /* Array index: 0x1572 */ 0x5885,0x5450, /* Array index: 0x1572 */ 0x5893,0x4A68, /* Array index: 0x1572 */ 0x5897,0x417D, /* Array index: 0x1572 */ 0x589C,0x4446, /* Array index: 0x1572 */ 0x589F,0x5452, /* Array index: 0x1572 */ 0x58A8,0x4B4F, /* Array index: 0x1572 */ 0x58AB,0x5453, /* Array index: 0x1572 */ 0x58AE,0x5458, /* Array index: 0x1572 */ 0x58B3,0x4A2F, /* Array index: 0x1572 */ 0x58BE,0x3A26, /* Array index: 0x1572 */ 0x58C1,0x4A49, /* Array index: 0x1572 */ 0x58C5,0x5459, /* Array index: 0x1572 */ 0x58C7,0x4345, /* Array index: 0x1572 */ 0x58CA,0x3275, /* Array index: 0x1572 */ 0x58CC,0x3E6D, /* Array index: 0x1572 */ 0x58D1,0x545B, /* Array index: 0x1572 */ 0x58D3,0x545A, /* Array index: 0x1572 */ 0x58DC,0x5460, /* Array index: 0x1572 */ 0x58DE,0x5455, /* Array index: 0x1572 */ 0x58DF,0x5462, /* Array index: 0x1572 */ 0x58E4,0x5461, /* Array index: 0x1572 */ 0x58E5,0x545F, /* Array index: 0x1572 */ 0x5902,0x5469, /* Array index: 0x1572 */ 0x5909,0x4A51, /* Array index: 0x1572 */ 0x590A,0x546A, /* Array index: 0x1572 */ 0x590F,0x3246, /* Array index: 0x1572 */ 0x5910,0x546B, /* Array index: 0x1572 */ 0x5922,0x4C34, /* Array index: 0x1572 */ 0x5925,0x546E, /* Array index: 0x1572 */ 0x5937,0x3050, /* Array index: 0x1572 */ 0x5938,0x5472, /* Array index: 0x1572 */ 0x593E,0x5473, /* Array index: 0x1572 */ 0x5944,0x3162, /* Array index: 0x1572 */ 0x5960,0x547B, /* Array index: 0x1572 */ 0x5962,0x547A, /* Array index: 0x1572 */ 0x5973,0x3D77, /* Array index: 0x1572 */ 0x5974,0x455B, /* Array index: 0x1572 */ 0x5978,0x5521, /* Array index: 0x1572 */ 0x597D,0x3925, /* Array index: 0x1572 */ 0x598A,0x4725, /* Array index: 0x1572 */ 0x598D,0x552B, /* Array index: 0x1572 */ 0x5993,0x3538, /* Array index: 0x1572 */ 0x5996,0x4D45, /* Array index: 0x1572 */ 0x5999,0x4C2F, /* Array index: 0x1572 */ 0x599B,0x562C, /* Array index: 0x1572 */ 0x599D,0x5523, /* Array index: 0x1572 */ 0x59A3,0x5526, /* Array index: 0x1572 */ 0x59A5,0x4245, /* Array index: 0x1572 */ 0x59A8,0x4B38, /* Array index: 0x1572 */ 0x59AC,0x454A, /* Array index: 0x1572 */ 0x59B2,0x5527, /* Array index: 0x1572 */ 0x59B9,0x4B65, /* Array index: 0x1572 */ 0x59BB,0x3A4A, /* Array index: 0x1572 */ 0x59BE,0x3E2A, /* Array index: 0x1572 */ 0x59C6,0x5528, /* Array index: 0x1572 */ 0x59C9,0x3B50, /* Array index: 0x1572 */ 0x59CB,0x3B4F, /* Array index: 0x1572 */ 0x59D9,0x552C, /* Array index: 0x1572 */ 0x59DA,0x552D, /* Array index: 0x1572 */ 0x59DC,0x552A, /* Array index: 0x1572 */ 0x59E5,0x3138, /* Array index: 0x1572 */ 0x59E6,0x342F, /* Array index: 0x1572 */ 0x59E8,0x5529, /* Array index: 0x1572 */ 0x59EA,0x4C45, /* Array index: 0x1572 */ 0x59EB,0x4931, /* Array index: 0x1572 */ 0x59F6,0x3028, /* Array index: 0x1572 */ 0x59FB,0x3079, /* Array index: 0x1572 */ 0x59FF,0x3B51, /* Array index: 0x1572 */ 0x5A01,0x3052, /* Array index: 0x1572 */ 0x5A03,0x3023, /* Array index: 0x1572 */ 0x5A09,0x5532, /* Array index: 0x1572 */ 0x5A11,0x5530, /* Array index: 0x1572 */ 0x5A18,0x4C3C, /* Array index: 0x1572 */ 0x5A1A,0x5533, /* Array index: 0x1572 */ 0x5A1C,0x5531, /* Array index: 0x1572 */ 0x5A1F,0x552F, /* Array index: 0x1572 */ 0x5A20,0x3F31, /* Array index: 0x1572 */ 0x5A25,0x552E, /* Array index: 0x1572 */ 0x5A29,0x4A5A, /* Array index: 0x1572 */ 0x5A2F,0x3864, /* Array index: 0x1572 */ 0x5A35,0x5537, /* Array index: 0x1572 */ 0x5A36,0x5538, /* Array index: 0x1572 */ 0x5A3C,0x3E2B, /* Array index: 0x1572 */ 0x5A40,0x5534, /* Array index: 0x1572 */ 0x5A41,0x4F2C, /* Array index: 0x1572 */ 0x5A46,0x474C, /* Array index: 0x1572 */ 0x5A49,0x5536, /* Array index: 0x1572 */ 0x5A5A,0x3A27, /* Array index: 0x1572 */ 0x5A62,0x5539, /* Array index: 0x1572 */ 0x5A66,0x4958, /* Array index: 0x1572 */ 0x5A6A,0x553A, /* Array index: 0x1572 */ 0x5A6C,0x5535, /* Array index: 0x1572 */ 0x5A7F,0x4C3B, /* Array index: 0x1572 */ 0x5A92,0x475E, /* Array index: 0x1572 */ 0x5A9A,0x553B, /* Array index: 0x1572 */ 0x5A9B,0x4932, /* Array index: 0x1572 */ 0x5AC9,0x3C3B, /* Array index: 0x1572 */ 0x5ACB,0x553E, /* Array index: 0x1572 */ 0x5ACC,0x3779, /* Array index: 0x1572 */ 0x5AD0,0x554C, /* Array index: 0x1572 */ 0x5AD6,0x5545, /* Array index: 0x1572 */ 0x5AD7,0x5542, /* Array index: 0x1572 */ 0x5AE1,0x4364, /* Array index: 0x1572 */ 0x5AE3,0x5541, /* Array index: 0x1572 */ 0x5AE6,0x5543, /* Array index: 0x1572 */ 0x5AE9,0x5544, /* Array index: 0x1572 */ 0x5AFA,0x5546, /* Array index: 0x1572 */ 0x5AFB,0x5547, /* Array index: 0x1572 */ 0x5B09,0x3472, /* Array index: 0x1572 */ 0x5B0B,0x5549, /* Array index: 0x1572 */ 0x5B0C,0x5548, /* Array index: 0x1572 */ 0x5B16,0x554A, /* Array index: 0x1572 */ 0x5B22,0x3E6E, /* Array index: 0x1572 */ 0x5B2A,0x554D, /* Array index: 0x1572 */ 0x5B2C,0x445C, /* Array index: 0x1572 */ 0x5B30,0x3145, /* Array index: 0x1572 */ 0x5B32,0x554B, /* Array index: 0x1572 */ 0x5B36,0x554E, /* Array index: 0x1572 */ 0x5B3E,0x554F, /* Array index: 0x1572 */ 0x5B40,0x5552, /* Array index: 0x1572 */ 0x5B43,0x5550, /* Array index: 0x1572 */ 0x5B45,0x5551, /* Array index: 0x1572 */ 0x5B50,0x3B52, /* Array index: 0x1572 */ 0x5B51,0x5553, /* Array index: 0x1572 */ 0x5B69,0x5558, /* Array index: 0x1572 */ 0x5B6B,0x4239, /* Array index: 0x1572 */ 0x5B70,0x5559, /* Array index: 0x1572 */ 0x5B71,0x5623, /* Array index: 0x1572 */ 0x5B73,0x555A, /* Array index: 0x1572 */ 0x5B75,0x555B, /* Array index: 0x1572 */ 0x5B78,0x555C, /* Array index: 0x1572 */ 0x5B7A,0x555E, /* Array index: 0x1572 */ 0x5B80,0x555F, /* Array index: 0x1572 */ 0x5B83,0x5560, /* Array index: 0x1572 */ 0x5BAE,0x355C, /* Array index: 0x1572 */ 0x5BB0,0x3A4B, /* Array index: 0x1572 */ 0x5BBF,0x3D49, /* Array index: 0x1572 */ 0x5BCC,0x4959, /* Array index: 0x1572 */ 0x5BEE,0x4E40, /* Array index: 0x1572 */ 0x5BF0,0x556E, /* Array index: 0x1572 */ 0x5BF3,0x5570, /* Array index: 0x1572 */ 0x5BF5,0x437E, /* Array index: 0x1572 */ 0x5BF6,0x556F, /* Array index: 0x1572 */ 0x5BF8,0x4023, /* Array index: 0x1572 */ 0x5BFA,0x3B7B, /* Array index: 0x1572 */ 0x5C16,0x406D, /* Array index: 0x1572 */ 0x5C1A,0x3E30, /* Array index: 0x1572 */ 0x5C20,0x5576, /* Array index: 0x1572 */ 0x5C22,0x5577, /* Array index: 0x1572 */ 0x5C24,0x4C60, /* Array index: 0x1572 */ 0x5C28,0x5578, /* Array index: 0x1572 */ 0x5C2D,0x3646, /* Array index: 0x1572 */ 0x5C31,0x3D22, /* Array index: 0x1572 */ 0x5C45,0x356F, /* Array index: 0x1572 */ 0x5C46,0x557C, /* Array index: 0x1572 */ 0x5C48,0x367E, /* Array index: 0x1572 */ 0x5C5E,0x4230, /* Array index: 0x1572 */ 0x5C60,0x454B, /* Array index: 0x1572 */ 0x5C61,0x3C48, /* Array index: 0x1572 */ 0x5C64,0x4158, /* Array index: 0x1572 */ 0x5C65,0x4D7A, /* Array index: 0x1572 */ 0x5C6C,0x5624, /* Array index: 0x1572 */ 0x5C6E,0x5625, /* Array index: 0x1572 */ 0x5C6F,0x4656, /* Array index: 0x1572 */ 0x5C71,0x3B33, /* Array index: 0x1572 */ 0x5C76,0x5627, /* Array index: 0x1572 */ 0x5C79,0x5628, /* Array index: 0x1572 */ 0x5C8C,0x5629, /* Array index: 0x1572 */ 0x5C90,0x3474, /* Array index: 0x1572 */ 0x5C91,0x562A, /* Array index: 0x1572 */ 0x5C94,0x562B, /* Array index: 0x1572 */ 0x5CA1,0x322C, /* Array index: 0x1572 */ 0x5CB1,0x4252, /* Array index: 0x1572 */ 0x5CB3,0x3359, /* Array index: 0x1572 */ 0x5CC5,0x5632, /* Array index: 0x1572 */ 0x5CC7,0x5634, /* Array index: 0x1572 */ 0x5CD9,0x5635, /* Array index: 0x1572 */ 0x5CE0,0x463D, /* Array index: 0x1572 */ 0x5CE1,0x362E, /* Array index: 0x1572 */ 0x5CED,0x5639, /* Array index: 0x1572 */ 0x5CEF,0x4A77, /* Array index: 0x1572 */ 0x5CF0,0x4A76, /* Array index: 0x1572 */ 0x5CF6,0x4567, /* Array index: 0x1572 */ 0x5CFA,0x5638, /* Array index: 0x1572 */ 0x5CFB,0x3D54, /* Array index: 0x1572 */ 0x5CFD,0x5637, /* Array index: 0x1572 */ 0x5D07,0x3F72, /* Array index: 0x1572 */ 0x5D0B,0x563C, /* Array index: 0x1572 */ 0x5D0E,0x3A6A, /* Array index: 0x1572 */ 0x5D11,0x5642, /* Array index: 0x1572 */ 0x5D1F,0x5640, /* Array index: 0x1572 */ 0x5D22,0x5644, /* Array index: 0x1572 */ 0x5D29,0x4A78, /* Array index: 0x1572 */ 0x5D4B,0x564B, /* Array index: 0x1572 */ 0x5D4C,0x5648, /* Array index: 0x1572 */ 0x5D4E,0x564A, /* Array index: 0x1572 */ 0x5D50,0x4D72, /* Array index: 0x1572 */ 0x5D52,0x5649, /* Array index: 0x1572 */ 0x5D5C,0x563F, /* Array index: 0x1572 */ 0x5D69,0x3F73, /* Array index: 0x1572 */ 0x5D6C,0x564C, /* Array index: 0x1572 */ 0x5D6F,0x3A37, /* Array index: 0x1572 */ 0x5D73,0x564D, /* Array index: 0x1572 */ 0x5D76,0x564E, /* Array index: 0x1572 */ 0x5D82,0x5651, /* Array index: 0x1572 */ 0x5D84,0x5650, /* Array index: 0x1572 */ 0x5D87,0x564F, /* Array index: 0x1572 */ 0x5D8B,0x4568, /* Array index: 0x1572 */ 0x5D8C,0x563A, /* Array index: 0x1572 */ 0x5D90,0x5657, /* Array index: 0x1572 */ 0x5D9D,0x5653, /* Array index: 0x1572 */ 0x5DA2,0x5652, /* Array index: 0x1572 */ 0x5DAC,0x5654, /* Array index: 0x1572 */ 0x5DAE,0x5655, /* Array index: 0x1572 */ 0x5DB7,0x5658, /* Array index: 0x1572 */ 0x5DBA,0x4E66, /* Array index: 0x1572 */ 0x5DBC,0x5659, /* Array index: 0x1572 */ 0x5DBD,0x5656, /* Array index: 0x1572 */ 0x5DC9,0x565A, /* Array index: 0x1572 */ 0x5DCC,0x3460, /* Array index: 0x1572 */ 0x5DCD,0x565B, /* Array index: 0x1572 */ 0x5DD2,0x565D, /* Array index: 0x1572 */ 0x5DD3,0x565C, /* Array index: 0x1572 */ 0x5DD6,0x565E, /* Array index: 0x1572 */ 0x5DDB,0x565F, /* Array index: 0x1572 */ 0x5DDD,0x406E, /* Array index: 0x1572 */ 0x5DDE,0x3D23, /* Array index: 0x1572 */ 0x5DE1,0x3D64, /* Array index: 0x1572 */ 0x5DEB,0x5660, /* Array index: 0x1572 */ 0x5DEE,0x3A39, /* Array index: 0x1572 */ 0x5DFB,0x342C, /* Array index: 0x1572 */ 0x5DFD,0x4327, /* Array index: 0x1572 */ 0x5DFE,0x3652, /* Array index: 0x1572 */ 0x5E02,0x3B54, /* Array index: 0x1572 */ 0x5E03,0x495B, /* Array index: 0x1572 */ 0x5E06,0x4841, /* Array index: 0x1572 */ 0x5E0B,0x5663, /* Array index: 0x1572 */ 0x5E0C,0x3475, /* Array index: 0x1572 */ 0x5E11,0x5666, /* Array index: 0x1572 */ 0x5E16,0x4421, /* Array index: 0x1572 */ 0x5E25,0x3F63, /* Array index: 0x1572 */ 0x5E2B,0x3B55, /* Array index: 0x1572 */ 0x5E2D,0x404A, /* Array index: 0x1572 */ 0x5E2F,0x4253, /* Array index: 0x1572 */ 0x5E30,0x3522, /* Array index: 0x1572 */ 0x5E33,0x4422, /* Array index: 0x1572 */ 0x5E3D,0x4B39, /* Array index: 0x1572 */ 0x5E40,0x566C, /* Array index: 0x1572 */ 0x5E4C,0x4B5A, /* Array index: 0x1572 */ 0x5E4E,0x566D, /* Array index: 0x1572 */ 0x5E54,0x566F, /* Array index: 0x1572 */ 0x5E55,0x4B6B, /* Array index: 0x1572 */ 0x5E57,0x566E, /* Array index: 0x1572 */ 0x5E87,0x485F, /* Array index: 0x1572 */ 0x5E8A,0x3E32, /* Array index: 0x1572 */ 0x5E8F,0x3D78, /* Array index: 0x1572 */ 0x5E9A,0x392E, /* Array index: 0x1572 */ 0x5E9C,0x495C, /* Array index: 0x1572 */ 0x5EA0,0x5679, /* Array index: 0x1572 */ 0x5EA6,0x4559, /* Array index: 0x1572 */ 0x5EA7,0x3A42, /* Array index: 0x1572 */ 0x5EAB,0x384B, /* Array index: 0x1572 */ 0x5EAD,0x446D, /* Array index: 0x1572 */ 0x5ECF,0x567E, /* Array index: 0x1572 */ 0x5ED0,0x567D, /* Array index: 0x1572 */ 0x5ED3,0x3347, /* Array index: 0x1572 */ 0x5ED6,0x5721, /* Array index: 0x1572 */ 0x5EDA,0x5724, /* Array index: 0x1572 */ 0x5EDB,0x5725, /* Array index: 0x1572 */ 0x5EE8,0x5728, /* Array index: 0x1572 */ 0x5EE9,0x5729, /* Array index: 0x1572 */ 0x5EEC,0x572A, /* Array index: 0x1572 */ 0x5F1B,0x4350, /* Array index: 0x1572 */ 0x5F1F,0x446F, /* Array index: 0x1572 */ 0x5F2D,0x5739, /* Array index: 0x1572 */ 0x5F2F,0x573F, /* Array index: 0x1572 */ 0x5F31,0x3C65, /* Array index: 0x1572 */ 0x5F35,0x4425, /* Array index: 0x1572 */ 0x5F37,0x362F, /* Array index: 0x1572 */ 0x5F38,0x573A, /* Array index: 0x1572 */ 0x5F3C,0x492B, /* Array index: 0x1572 */ 0x5F3E,0x4346, /* Array index: 0x1572 */ 0x5F41,0x573B, /* Array index: 0x1572 */ 0x5F48,0x573C, /* Array index: 0x1572 */ 0x5F4A,0x3630, /* Array index: 0x1572 */ 0x5F4C,0x573D, /* Array index: 0x1572 */ 0x5F4E,0x573E, /* Array index: 0x1572 */ 0x5F51,0x5740, /* Array index: 0x1572 */ 0x5F53,0x4576, /* Array index: 0x1572 */ 0x5F56,0x5741, /* Array index: 0x1572 */ 0x5F57,0x5742, /* Array index: 0x1572 */ 0x5F59,0x5743, /* Array index: 0x1572 */ 0x5F5C,0x5734, /* Array index: 0x1572 */ 0x5F5D,0x5733, /* Array index: 0x1572 */ 0x5F61,0x5744, /* Array index: 0x1572 */ 0x5F62,0x3741, /* Array index: 0x1572 */ 0x5F66,0x4927, /* Array index: 0x1572 */ 0x5F77,0x5747, /* Array index: 0x1572 */ 0x5F79,0x4C72, /* Array index: 0x1572 */ 0x5F7C,0x4860, /* Array index: 0x1572 */ 0x5F9E,0x574F, /* Array index: 0x1572 */ 0x5FA0,0x5752, /* Array index: 0x1572 */ 0x5FA1,0x3866, /* Array index: 0x1572 */ 0x5FB3,0x4641, /* Array index: 0x1572 */ 0x5FB4,0x4427, /* Array index: 0x1572 */ 0x5FB9,0x4530, /* Array index: 0x1572 */ 0x5FBC,0x5755, /* Array index: 0x1572 */ 0x5FBD,0x352B, /* Array index: 0x1572 */ 0x5FC3,0x3F34, /* Array index: 0x1572 */ 0x5FC5,0x492C, /* Array index: 0x1572 */ 0x5FCC,0x3477, /* Array index: 0x1572 */ 0x5FCD,0x4726, /* Array index: 0x1572 */ 0x5FE0,0x4369, /* Array index: 0x1572 */ 0x5FE4,0x5758, /* Array index: 0x1572 */ 0x5FEB,0x3277, /* Array index: 0x1572 */ 0x5FF0,0x582D, /* Array index: 0x1572 */ 0x5FF1,0x575A, /* Array index: 0x1572 */ 0x5FF5,0x4730, /* Array index: 0x1572 */ 0x5FF8,0x5759, /* Array index: 0x1572 */ 0x5FFB,0x5757, /* Array index: 0x1572 */ 0x5FFD,0x397A, /* Array index: 0x1572 */ 0x5FFF,0x575D, /* Array index: 0x1572 */ 0x602F,0x3631, /* Array index: 0x1572 */ 0x6031,0x5764, /* Array index: 0x1572 */ 0x603A,0x576A, /* Array index: 0x1572 */ 0x6046,0x5771, /* Array index: 0x1572 */ 0x604A,0x5770, /* Array index: 0x1572 */ 0x604B,0x4E78, /* Array index: 0x1572 */ 0x604D,0x5772, /* Array index: 0x1572 */ 0x6050,0x3632, /* Array index: 0x1572 */ 0x6052,0x3931, /* Array index: 0x1572 */ 0x6055,0x3D7A, /* Array index: 0x1572 */ 0x6059,0x5779, /* Array index: 0x1572 */ 0x605A,0x576B, /* Array index: 0x1572 */ 0x6075,0x3743, /* Array index: 0x1572 */ 0x6077,0x576E, /* Array index: 0x1572 */ 0x6081,0x577A, /* Array index: 0x1572 */ 0x6083,0x577D, /* Array index: 0x1572 */ 0x6084,0x5821, /* Array index: 0x1572 */ 0x6092,0x5825, /* Array index: 0x1572 */ 0x6094,0x3279, /* Array index: 0x1572 */ 0x6096,0x5823, /* Array index: 0x1572 */ 0x6097,0x5824, /* Array index: 0x1572 */ 0x609A,0x577E, /* Array index: 0x1572 */ 0x609B,0x5822, /* Array index: 0x1572 */ 0x609F,0x3867, /* Array index: 0x1572 */ 0x60A0,0x4D2A, /* Array index: 0x1572 */ 0x60A3,0x3435, /* Array index: 0x1572 */ 0x60BC,0x4569, /* Array index: 0x1572 */ 0x60BD,0x582E, /* Array index: 0x1572 */ 0x60D1,0x4F47, /* Array index: 0x1572 */ 0x60D3,0x582B, /* Array index: 0x1572 */ 0x60D8,0x5831, /* Array index: 0x1572 */ 0x60DA,0x397B, /* Array index: 0x1572 */ 0x60DC,0x404B, /* Array index: 0x1572 */ 0x60E7,0x577C, /* Array index: 0x1572 */ 0x60E8,0x3B34, /* Array index: 0x1572 */ 0x6100,0x5837, /* Array index: 0x1572 */ 0x6101,0x3D25, /* Array index: 0x1572 */ 0x6103,0x583A, /* Array index: 0x1572 */ 0x6106,0x5834, /* Array index: 0x1572 */ 0x6108,0x4C7C, /* Array index: 0x1572 */ 0x6109,0x4C7B, /* Array index: 0x1572 */ 0x6115,0x5833, /* Array index: 0x1572 */ 0x611A,0x3672, /* Array index: 0x1572 */ 0x611B,0x3026, /* Array index: 0x1572 */ 0x611F,0x3436, /* Array index: 0x1572 */ 0x6121,0x583B, /* Array index: 0x1572 */ 0x6127,0x5843, /* Array index: 0x1572 */ 0x6128,0x5842, /* Array index: 0x1572 */ 0x612C,0x5847, /* Array index: 0x1572 */ 0x6134,0x5848, /* Array index: 0x1572 */ 0x6142,0x584A, /* Array index: 0x1572 */ 0x6144,0x584B, /* Array index: 0x1572 */ 0x6153,0x5858, /* Array index: 0x1572 */ 0x6155,0x4A69, /* Array index: 0x1572 */ 0x615D,0x5857, /* Array index: 0x1572 */ 0x615F,0x5856, /* Array index: 0x1572 */ 0x6162,0x4B7D, /* Array index: 0x1572 */ 0x6163,0x3437, /* Array index: 0x1572 */ 0x6165,0x5854, /* Array index: 0x1572 */ 0x6167,0x3745, /* Array index: 0x1572 */ 0x6168,0x3334, /* Array index: 0x1572 */ 0x616B,0x5851, /* Array index: 0x1572 */ 0x617E,0x4D5D, /* Array index: 0x1572 */ 0x6182,0x4D2B, /* Array index: 0x1572 */ 0x6187,0x585C, /* Array index: 0x1572 */ 0x618A,0x5860, /* Array index: 0x1572 */ 0x618E,0x417E, /* Array index: 0x1572 */ 0x6190,0x4E79, /* Array index: 0x1572 */ 0x6191,0x5861, /* Array index: 0x1572 */ 0x6194,0x585E, /* Array index: 0x1572 */ 0x6196,0x585B, /* Array index: 0x1572 */ 0x6199,0x585A, /* Array index: 0x1572 */ 0x619A,0x585F, /* Array index: 0x1572 */ 0x61A4,0x4A30, /* Array index: 0x1572 */ 0x61A7,0x4634, /* Array index: 0x1572 */ 0x61A9,0x3746, /* Array index: 0x1572 */ 0x61AB,0x5862, /* Array index: 0x1572 */ 0x61AC,0x585D, /* Array index: 0x1572 */ 0x61AE,0x5863, /* Array index: 0x1572 */ 0x61B2,0x377B, /* Array index: 0x1572 */ 0x61B6,0x3231, /* Array index: 0x1572 */ 0x61BA,0x586B, /* Array index: 0x1572 */ 0x61BE,0x3438, /* Array index: 0x1572 */ 0x61C3,0x5869, /* Array index: 0x1572 */ 0x61D0,0x327B, /* Array index: 0x1572 */ 0x61E3,0x5870, /* Array index: 0x1572 */ 0x61E6,0x586F, /* Array index: 0x1572 */ 0x61F2,0x4428, /* Array index: 0x1572 */ 0x6226,0x406F, /* Array index: 0x1572 */ 0x622A,0x5923, /* Array index: 0x1572 */ 0x6238,0x384D, /* Array index: 0x1572 */ 0x623B,0x4C61, /* Array index: 0x1572 */ 0x6253,0x4247, /* Array index: 0x1572 */ 0x6255,0x4A27, /* Array index: 0x1572 */ 0x6258,0x4271, /* Array index: 0x1572 */ 0x625B,0x592C, /* Array index: 0x1572 */ 0x625E,0x592A, /* Array index: 0x1572 */ 0x6260,0x592D, /* Array index: 0x1572 */ 0x6263,0x592B, /* Array index: 0x1572 */ 0x6268,0x592E, /* Array index: 0x1572 */ 0x626E,0x4A31, /* Array index: 0x1572 */ 0x6271,0x3037, /* Array index: 0x1572 */ 0x6276,0x495E, /* Array index: 0x1572 */ 0x6279,0x4863, /* Array index: 0x1572 */ 0x6289,0x5931, /* Array index: 0x1572 */ 0x628A,0x4744, /* Array index: 0x1572 */ 0x62AB,0x4864, /* Array index: 0x1572 */ 0x62AC,0x5A2D, /* Array index: 0x1572 */ 0x62B1,0x4A7A, /* Array index: 0x1572 */ 0x62B5,0x4471, /* Array index: 0x1572 */ 0x62C2,0x5944, /* Array index: 0x1572 */ 0x630C,0x5948, /* Array index: 0x1572 */ 0x6311,0x4429, /* Array index: 0x1572 */ 0x6319,0x3573, /* Array index: 0x1572 */ 0x631F,0x3634, /* Array index: 0x1572 */ 0x6327,0x594B, /* Array index: 0x1572 */ 0x6328,0x3027, /* Array index: 0x1572 */ 0x632B,0x3A43, /* Array index: 0x1572 */ 0x632F,0x3F36, /* Array index: 0x1572 */ 0x633A,0x4472, /* Array index: 0x1572 */ 0x6349,0x422A, /* Array index: 0x1572 */ 0x6355,0x4A61, /* Array index: 0x1572 */ 0x6357,0x443D, /* Array index: 0x1572 */ 0x635C,0x415C, /* Array index: 0x1572 */ 0x636E,0x3F78, /* Array index: 0x1572 */ 0x6372,0x377E, /* Array index: 0x1572 */ 0x6376,0x5959, /* Array index: 0x1572 */ 0x6377,0x3E39, /* Array index: 0x1572 */ 0x637A,0x4668, /* Array index: 0x1572 */ 0x637B,0x4731, /* Array index: 0x1572 */ 0x6380,0x5957, /* Array index: 0x1572 */ 0x6383,0x415D, /* Array index: 0x1572 */ 0x6388,0x3C78, /* Array index: 0x1572 */ 0x6389,0x595C, /* Array index: 0x1572 */ 0x638C,0x3E38, /* Array index: 0x1572 */ 0x638E,0x5956, /* Array index: 0x1572 */ 0x638F,0x595B, /* Array index: 0x1572 */ 0x6392,0x4753, /* Array index: 0x1572 */ 0x6396,0x5955, /* Array index: 0x1572 */ 0x6398,0x3721, /* Array index: 0x1572 */ 0x639B,0x335D, /* Array index: 0x1572 */ 0x63B2,0x3747, /* Array index: 0x1572 */ 0x63B4,0x444F, /* Array index: 0x1572 */ 0x63B5,0x595E, /* Array index: 0x1572 */ 0x63BB,0x415F, /* Array index: 0x1572 */ 0x63BE,0x5961, /* Array index: 0x1572 */ 0x63C0,0x5963, /* Array index: 0x1572 */ 0x63C3,0x4237, /* Array index: 0x1572 */ 0x63C4,0x5969, /* Array index: 0x1572 */ 0x63C6,0x5964, /* Array index: 0x1572 */ 0x63C9,0x5966, /* Array index: 0x1572 */ 0x63CF,0x4941, /* Array index: 0x1572 */ 0x63D0,0x4473, /* Array index: 0x1572 */ 0x63D2,0x5967, /* Array index: 0x1572 */ 0x63D6,0x4D2C, /* Array index: 0x1572 */ 0x63DA,0x4D48, /* Array index: 0x1572 */ 0x63DB,0x3439, /* Array index: 0x1572 */ 0x63E1,0x302E, /* Array index: 0x1572 */ 0x63E3,0x5965, /* Array index: 0x1572 */ 0x63E9,0x5962, /* Array index: 0x1572 */ 0x63EE,0x3478, /* Array index: 0x1572 */ 0x63F4,0x3167, /* Array index: 0x1572 */ 0x63F6,0x5968, /* Array index: 0x1572 */ 0x63FA,0x4D49, /* Array index: 0x1572 */ 0x6406,0x596C, /* Array index: 0x1572 */ 0x640D,0x423B, /* Array index: 0x1572 */ 0x640F,0x5973, /* Array index: 0x1572 */ 0x6413,0x596D, /* Array index: 0x1572 */ 0x6416,0x596A, /* Array index: 0x1572 */ 0x6417,0x5971, /* Array index: 0x1572 */ 0x641C,0x5953, /* Array index: 0x1572 */ 0x6426,0x596E, /* Array index: 0x1572 */ 0x6428,0x5972, /* Array index: 0x1572 */ 0x642C,0x4842, /* Array index: 0x1572 */ 0x642D,0x456B, /* Array index: 0x1572 */ 0x6434,0x596B, /* Array index: 0x1572 */ 0x6436,0x596F, /* Array index: 0x1572 */ 0x643A,0x3748, /* Array index: 0x1572 */ 0x643E,0x3A71, /* Array index: 0x1572 */ 0x6442,0x405D, /* Array index: 0x1572 */ 0x644E,0x5977, /* Array index: 0x1572 */ 0x6458,0x4526, /* Array index: 0x1572 */ 0x6467,0x5974, /* Array index: 0x1572 */ 0x6469,0x4B60, /* Array index: 0x1572 */ 0x646F,0x5975, /* Array index: 0x1572 */ 0x6476,0x5976, /* Array index: 0x1572 */ 0x6478,0x4C4E, /* Array index: 0x1572 */ 0x647A,0x4022, /* Array index: 0x1572 */ 0x6483,0x3762, /* Array index: 0x1572 */ 0x6488,0x597D, /* Array index: 0x1572 */ 0x6492,0x3B35, /* Array index: 0x1572 */ 0x6493,0x597A, /* Array index: 0x1572 */ 0x6495,0x5979, /* Array index: 0x1572 */ 0x649A,0x4732, /* Array index: 0x1572 */ 0x649E,0x4635, /* Array index: 0x1572 */ 0x64A4,0x4531, /* Array index: 0x1572 */ 0x64A5,0x597B, /* Array index: 0x1572 */ 0x64A9,0x597C, /* Array index: 0x1572 */ 0x64AB,0x496F, /* Array index: 0x1572 */ 0x64AD,0x4745, /* Array index: 0x1572 */ 0x64AE,0x3B23, /* Array index: 0x1572 */ 0x64B0,0x4071, /* Array index: 0x1572 */ 0x64B2,0x4B50, /* Array index: 0x1572 */ 0x64B9,0x3349, /* Array index: 0x1572 */ 0x64BB,0x5A25, /* Array index: 0x1572 */ 0x64BC,0x597E, /* Array index: 0x1572 */ 0x64C1,0x4D4A, /* Array index: 0x1572 */ 0x64C2,0x5A27, /* Array index: 0x1572 */ 0x64C5,0x5A23, /* Array index: 0x1572 */ 0x64C7,0x5A24, /* Array index: 0x1572 */ 0x64CD,0x4160, /* Array index: 0x1572 */ 0x64D2,0x5A22, /* Array index: 0x1572 */ 0x64D4,0x593F, /* Array index: 0x1572 */ 0x64D8,0x5A26, /* Array index: 0x1572 */ 0x64DA,0x5A21, /* Array index: 0x1572 */ 0x64EC,0x353C, /* Array index: 0x1572 */ 0x64EF,0x5A2F, /* Array index: 0x1572 */ 0x64F1,0x5A28, /* Array index: 0x1572 */ 0x64F2,0x5A33, /* Array index: 0x1572 */ 0x64F4,0x5A32, /* Array index: 0x1572 */ 0x64F6,0x5A31, /* Array index: 0x1572 */ 0x64FA,0x5A34, /* Array index: 0x1572 */ 0x64FD,0x5A36, /* Array index: 0x1572 */ 0x64FE,0x3E71, /* Array index: 0x1572 */ 0x6500,0x5A35, /* Array index: 0x1572 */ 0x6505,0x5A39, /* Array index: 0x1572 */ 0x6518,0x5A37, /* Array index: 0x1572 */ 0x651C,0x5A38, /* Array index: 0x1572 */ 0x651D,0x5970, /* Array index: 0x1572 */ 0x6523,0x5A3B, /* Array index: 0x1572 */ 0x6524,0x5A3A, /* Array index: 0x1572 */ 0x652F,0x3B59, /* Array index: 0x1572 */ 0x6545,0x384E, /* Array index: 0x1572 */ 0x6548,0x5A43, /* Array index: 0x1572 */ 0x654D,0x5A46, /* Array index: 0x1572 */ 0x654F,0x4952, /* Array index: 0x1572 */ 0x6551,0x355F, /* Array index: 0x1572 */ 0x655D,0x5A49, /* Array index: 0x1572 */ 0x655E,0x5A48, /* Array index: 0x1572 */ 0x6562,0x343A, /* Array index: 0x1572 */ 0x6563,0x3B36, /* Array index: 0x1572 */ 0x6566,0x4658, /* Array index: 0x1572 */ 0x656C,0x3749, /* Array index: 0x1572 */ 0x6570,0x3F74, /* Array index: 0x1572 */ 0x6572,0x5A4A, /* Array index: 0x1572 */ 0x6582,0x5A4C, /* Array index: 0x1572 */ 0x6583,0x5A4D, /* Array index: 0x1572 */ 0x658C,0x494C, /* Array index: 0x1572 */ 0x658E,0x3A58, /* Array index: 0x1572 */ 0x6590,0x4865, /* Array index: 0x1572 */ 0x6591,0x4843, /* Array index: 0x1572 */ 0x6597,0x454D, /* Array index: 0x1572 */ 0x6599,0x4E41, /* Array index: 0x1572 */ 0x659B,0x5A4F, /* Array index: 0x1572 */ 0x659C,0x3C50, /* Array index: 0x1572 */ 0x659F,0x5A50, /* Array index: 0x1572 */ 0x65A1,0x3036, /* Array index: 0x1572 */ 0x65A4,0x3654, /* Array index: 0x1572 */ 0x65A5,0x404D, /* Array index: 0x1572 */ 0x65A7,0x4960, /* Array index: 0x1572 */ 0x65B7,0x5A52, /* Array index: 0x1572 */ 0x65B9,0x4A7D, /* Array index: 0x1572 */ 0x65BC,0x3177, /* Array index: 0x1572 */ 0x65BD,0x3B5C, /* Array index: 0x1572 */ 0x65CB,0x407B, /* Array index: 0x1572 */ 0x65CC,0x5A57, /* Array index: 0x1572 */ 0x65CF,0x4232, /* Array index: 0x1572 */ 0x65D2,0x5A58, /* Array index: 0x1572 */ 0x65D7,0x347A, /* Array index: 0x1572 */ 0x65D9,0x5A5A, /* Array index: 0x1572 */ 0x65DB,0x5A59, /* Array index: 0x1572 */ 0x65F1,0x5A5D, /* Array index: 0x1572 */ 0x65FA,0x3222, /* Array index: 0x1572 */ 0x65FB,0x5A61, /* Array index: 0x1572 */ 0x6602,0x3937, /* Array index: 0x1572 */ 0x6603,0x5A60, /* Array index: 0x1572 */ 0x6606,0x3A2B, /* Array index: 0x1572 */ 0x6607,0x3E3A, /* Array index: 0x1572 */ 0x660A,0x5A5F, /* Array index: 0x1572 */ 0x660C,0x3E3B, /* Array index: 0x1572 */ 0x660E,0x4C40, /* Array index: 0x1572 */ 0x660F,0x3A2A, /* Array index: 0x1572 */ 0x6613,0x3057, /* Array index: 0x1572 */ 0x6614,0x404E, /* Array index: 0x1572 */ 0x661C,0x5A66, /* Array index: 0x1572 */ 0x661F,0x4031, /* Array index: 0x1572 */ 0x6620,0x3147, /* Array index: 0x1572 */ 0x6625,0x3D55, /* Array index: 0x1572 */ 0x6627,0x4B66, /* Array index: 0x1572 */ 0x6628,0x3A72, /* Array index: 0x1572 */ 0x662D,0x3E3C, /* Array index: 0x1572 */ 0x662F,0x4027, /* Array index: 0x1572 */ 0x663C,0x436B, /* Array index: 0x1572 */ 0x6649,0x5A69, /* Array index: 0x1572 */ 0x664B,0x3F38, /* Array index: 0x1572 */ 0x664F,0x5A67, /* Array index: 0x1572 */ 0x6652,0x3B2F, /* Array index: 0x1572 */ 0x6662,0x5A71, /* Array index: 0x1572 */ 0x6674,0x4032, /* Array index: 0x1572 */ 0x6676,0x3E3D, /* Array index: 0x1572 */ 0x667A,0x4352, /* Array index: 0x1572 */ 0x6681,0x3647, /* Array index: 0x1572 */ 0x668E,0x5A75, /* Array index: 0x1572 */ 0x6691,0x3D6B, /* Array index: 0x1572 */ 0x669D,0x5A79, /* Array index: 0x1572 */ 0x66A2,0x442A, /* Array index: 0x1572 */ 0x66A6,0x4E71, /* Array index: 0x1572 */ 0x66AB,0x3B43, /* Array index: 0x1572 */ 0x66AE,0x4A6B, /* Array index: 0x1572 */ 0x66B4,0x4B3D, /* Array index: 0x1572 */ 0x66B8,0x5B22, /* Array index: 0x1572 */ 0x66B9,0x5A7B, /* Array index: 0x1572 */ 0x66BC,0x5A7E, /* Array index: 0x1572 */ 0x66BE,0x5A7D, /* Array index: 0x1572 */ 0x66C1,0x5A7A, /* Array index: 0x1572 */ 0x66C4,0x5B21, /* Array index: 0x1572 */ 0x66C7,0x465E, /* Array index: 0x1572 */ 0x66C9,0x5A7C, /* Array index: 0x1572 */ 0x66D6,0x5B23, /* Array index: 0x1572 */ 0x66E0,0x5B25, /* Array index: 0x1572 */ 0x66E6,0x5B27, /* Array index: 0x1572 */ 0x66E9,0x5B28, /* Array index: 0x1572 */ 0x6703,0x5072, /* Array index: 0x1572 */ 0x6708,0x376E, /* Array index: 0x1572 */ 0x6709,0x4D2D, /* Array index: 0x1572 */ 0x670B,0x4A7E, /* Array index: 0x1572 */ 0x670D,0x497E, /* Array index: 0x1572 */ 0x670F,0x5B2C, /* Array index: 0x1572 */ 0x6731,0x3C6B, /* Array index: 0x1572 */ 0x673D,0x3560, /* Array index: 0x1572 */ 0x673F,0x5B33, /* Array index: 0x1572 */ 0x6741,0x5B35, /* Array index: 0x1572 */ 0x6746,0x5B38, /* Array index: 0x1572 */ 0x6749,0x3F79, /* Array index: 0x1572 */ 0x6756,0x3E73, /* Array index: 0x1572 */ 0x6759,0x5B3B, /* Array index: 0x1572 */ 0x676A,0x5B42, /* Array index: 0x1572 */ 0x677C,0x5B41, /* Array index: 0x1572 */ 0x677E,0x3E3E, /* Array index: 0x1572 */ 0x677F,0x4844, /* Array index: 0x1572 */ 0x6785,0x5B47, /* Array index: 0x1572 */ 0x6787,0x487A, /* Array index: 0x1572 */ 0x6789,0x5B3E, /* Array index: 0x1572 */ 0x678B,0x5B44, /* Array index: 0x1572 */ 0x678C,0x5B43, /* Array index: 0x1572 */ 0x6790,0x404F, /* Array index: 0x1572 */ 0x6795,0x4B6D, /* Array index: 0x1572 */ 0x6797,0x4E53, /* Array index: 0x1572 */ 0x679A,0x4B67, /* Array index: 0x1572 */ 0x67A6,0x5B45, /* Array index: 0x1572 */ 0x67A9,0x5B40, /* Array index: 0x1572 */ 0x67AF,0x384F, /* Array index: 0x1572 */ 0x67C1,0x4248, /* Array index: 0x1572 */ 0x67C4,0x4A41, /* Array index: 0x1572 */ 0x67C6,0x5B56, /* Array index: 0x1572 */ 0x67CA,0x4922, /* Array index: 0x1572 */ 0x67D8,0x4453, /* Array index: 0x1572 */ 0x67DA,0x4D2E, /* Array index: 0x1572 */ 0x67DD,0x5B51, /* Array index: 0x1572 */ 0x67DE,0x5B50, /* Array index: 0x1572 */ 0x67E2,0x5B52, /* Array index: 0x1572 */ 0x67E4,0x5B4F, /* Array index: 0x1572 */ 0x67E7,0x5B57, /* Array index: 0x1572 */ 0x67E9,0x5B4D, /* Array index: 0x1572 */ 0x67EC,0x5B4B, /* Array index: 0x1572 */ 0x67EE,0x5B53, /* Array index: 0x1572 */ 0x67EF,0x5B49, /* Array index: 0x1572 */ 0x67FB,0x3A3A, /* Array index: 0x1572 */ 0x6813,0x4072, /* Array index: 0x1572 */ 0x6816,0x4034, /* Array index: 0x1572 */ 0x6817,0x372A, /* Array index: 0x1572 */ 0x681E,0x5B59, /* Array index: 0x1572 */ 0x6821,0x393B, /* Array index: 0x1572 */ 0x6822,0x337C, /* Array index: 0x1572 */ 0x6832,0x5B5E, /* Array index: 0x1572 */ 0x6834,0x4073, /* Array index: 0x1572 */ 0x6838,0x334B, /* Array index: 0x1572 */ 0x6839,0x3A2C, /* Array index: 0x1572 */ 0x6846,0x5B5A, /* Array index: 0x1572 */ 0x6848,0x3046, /* Array index: 0x1572 */ 0x6859,0x5B62, /* Array index: 0x1572 */ 0x685C,0x3A79, /* Array index: 0x1572 */ 0x685D,0x4B71, /* Array index: 0x1572 */ 0x685F,0x3B37, /* Array index: 0x1572 */ 0x6863,0x5B63, /* Array index: 0x1572 */ 0x6867,0x4930, /* Array index: 0x1572 */ 0x6874,0x5B6F, /* Array index: 0x1572 */ 0x6876,0x3233, /* Array index: 0x1572 */ 0x6877,0x5B64, /* Array index: 0x1572 */ 0x687E,0x5B75, /* Array index: 0x1572 */ 0x687F,0x5B65, /* Array index: 0x1572 */ 0x6881,0x4E42, /* Array index: 0x1572 */ 0x6883,0x5B6C, /* Array index: 0x1572 */ 0x6885,0x475F, /* Array index: 0x1572 */ 0x688D,0x5B74, /* Array index: 0x1572 */ 0x688F,0x5B67, /* Array index: 0x1572 */ 0x6893,0x3034, /* Array index: 0x1572 */ 0x6894,0x5B69, /* Array index: 0x1572 */ 0x6897,0x393C, /* Array index: 0x1572 */ 0x689B,0x5B6B, /* Array index: 0x1572 */ 0x689D,0x5B6A, /* Array index: 0x1572 */ 0x689F,0x5B66, /* Array index: 0x1572 */ 0x68A0,0x5B71, /* Array index: 0x1572 */ 0x68A2,0x3E3F, /* Array index: 0x1572 */ 0x68C4,0x347E, /* Array index: 0x1572 */ 0x68C6,0x5C32, /* Array index: 0x1572 */ 0x68D2,0x4B40, /* Array index: 0x1572 */ 0x68E7,0x5C22, /* Array index: 0x1572 */ 0x68EE,0x3F39, /* Array index: 0x1572 */ 0x68EF,0x5C2C, /* Array index: 0x1572 */ 0x68F2,0x4033, /* Array index: 0x1572 */ 0x68F9,0x5C2A, /* Array index: 0x1572 */ 0x68FA,0x343D, /* Array index: 0x1572 */ 0x6900,0x4F50, /* Array index: 0x1572 */ 0x6901,0x5B76, /* Array index: 0x1572 */ 0x6904,0x5C26, /* Array index: 0x1572 */ 0x6905,0x3058, /* Array index: 0x1572 */ 0x6908,0x5B78, /* Array index: 0x1572 */ 0x6912,0x5C25, /* Array index: 0x1572 */ 0x6930,0x5C3F, /* Array index: 0x1572 */ 0x6934,0x464E, /* Array index: 0x1572 */ 0x6936,0x5C24, /* Array index: 0x1572 */ 0x6939,0x5C3B, /* Array index: 0x1572 */ 0x693D,0x5C3D, /* Array index: 0x1572 */ 0x693F,0x4458, /* Array index: 0x1572 */ 0x694A,0x4D4C, /* Array index: 0x1572 */ 0x698A,0x3A67, /* Array index: 0x1572 */ 0x698E,0x315D, /* Array index: 0x1572 */ 0x6991,0x5C54, /* Array index: 0x1572 */ 0x6994,0x4F31, /* Array index: 0x1572 */ 0x6995,0x5C57, /* Array index: 0x1572 */ 0x699B,0x3F3A, /* Array index: 0x1572 */ 0x699C,0x5C56, /* Array index: 0x1572 */ 0x69A0,0x5C55, /* Array index: 0x1572 */ 0x69A7,0x5C52, /* Array index: 0x1572 */ 0x69AE,0x5C46, /* Array index: 0x1572 */ 0x69B1,0x5C63, /* Array index: 0x1572 */ 0x69B2,0x5C45, /* Array index: 0x1572 */ 0x69B4,0x5C58, /* Array index: 0x1572 */ 0x69BB,0x5C50, /* Array index: 0x1572 */ 0x69BE,0x5C4B, /* Array index: 0x1572 */ 0x69BF,0x5C48, /* Array index: 0x1572 */ 0x69C1,0x5C49, /* Array index: 0x1572 */ 0x69C3,0x5C51, /* Array index: 0x1572 */ 0x69C7,0x7422, /* Array index: 0x1572 */ 0x69D3,0x5C4A, /* Array index: 0x1572 */ 0x69D8,0x4D4D, /* Array index: 0x1572 */ 0x69D9,0x4B6A, /* Array index: 0x1572 */ 0x69DD,0x5C4F, /* Array index: 0x1572 */ 0x69DE,0x5C59, /* Array index: 0x1572 */ 0x69E7,0x5C61, /* Array index: 0x1572 */ 0x69E8,0x5C5A, /* Array index: 0x1572 */ 0x69EB,0x5C67, /* Array index: 0x1572 */ 0x69ED,0x5C65, /* Array index: 0x1572 */ 0x69F2,0x5C60, /* Array index: 0x1572 */ 0x69F9,0x5C5F, /* Array index: 0x1572 */ 0x69FB,0x4450, /* Array index: 0x1572 */ 0x69FD,0x4165, /* Array index: 0x1572 */ 0x69FF,0x5C5D, /* Array index: 0x1572 */ 0x6A02,0x5C5B, /* Array index: 0x1572 */ 0x6A05,0x5C62, /* Array index: 0x1572 */ 0x6A17,0x4374, /* Array index: 0x1572 */ 0x6A19,0x4938, /* Array index: 0x1572 */ 0x6A1B,0x5C5C, /* Array index: 0x1572 */ 0x6A2E,0x5C53, /* Array index: 0x1572 */ 0x6A3D,0x432E, /* Array index: 0x1572 */ 0x6A44,0x5C6D, /* Array index: 0x1572 */ 0x6A47,0x5C72, /* Array index: 0x1572 */ 0x6A48,0x5C76, /* Array index: 0x1572 */ 0x6A4B,0x3636, /* Array index: 0x1572 */ 0x6A58,0x354C, /* Array index: 0x1572 */ 0x6A59,0x5C74, /* Array index: 0x1572 */ 0x6A5F,0x3521, /* Array index: 0x1572 */ 0x6A61,0x464B, /* Array index: 0x1572 */ 0x6A62,0x5C73, /* Array index: 0x1572 */ 0x6A66,0x5C75, /* Array index: 0x1572 */ 0x6A72,0x5C6F, /* Array index: 0x1572 */ 0x6A78,0x5C71, /* Array index: 0x1572 */ 0x6A7F,0x3360, /* Array index: 0x1572 */ 0x6A80,0x4349, /* Array index: 0x1572 */ 0x6A84,0x5C7C, /* Array index: 0x1572 */ 0x6A8D,0x5C7A, /* Array index: 0x1572 */ 0x6A8E,0x3869, /* Array index: 0x1572 */ 0x6A90,0x5C79, /* Array index: 0x1572 */ 0x6A97,0x5D21, /* Array index: 0x1572 */ 0x6A9C,0x5B58, /* Array index: 0x1572 */ 0x6AA0,0x5C7B, /* Array index: 0x1572 */ 0x6AA2,0x5C7D, /* Array index: 0x1572 */ 0x6AA3,0x5C7E, /* Array index: 0x1572 */ 0x6AAA,0x5D2C, /* Array index: 0x1572 */ 0x6AAC,0x5D28, /* Array index: 0x1572 */ 0x6AAE,0x5B6D, /* Array index: 0x1572 */ 0x6AB3,0x5D27, /* Array index: 0x1572 */ 0x6AB8,0x5D26, /* Array index: 0x1572 */ 0x6ABB,0x5D23, /* Array index: 0x1572 */ 0x6AD1,0x5D2A, /* Array index: 0x1572 */ 0x6AD3,0x4F26, /* Array index: 0x1572 */ 0x6ADA,0x5D2D, /* Array index: 0x1572 */ 0x6ADB,0x367B, /* Array index: 0x1572 */ 0x6ADE,0x5D29, /* Array index: 0x1572 */ 0x6ADF,0x5D2B, /* Array index: 0x1572 */ 0x6AE8,0x4827, /* Array index: 0x1572 */ 0x6AEA,0x5D2E, /* Array index: 0x1572 */ 0x6AFA,0x5D32, /* Array index: 0x1572 */ 0x6AFB,0x5D2F, /* Array index: 0x1572 */ 0x6B04,0x4D73, /* Array index: 0x1572 */ 0x6B05,0x5D30, /* Array index: 0x1572 */ 0x6B0A,0x5C5E, /* Array index: 0x1572 */ 0x6B12,0x5D33, /* Array index: 0x1572 */ 0x6B16,0x5D34, /* Array index: 0x1572 */ 0x6B27,0x3224, /* Array index: 0x1572 */ 0x6B32,0x4D5F, /* Array index: 0x1572 */ 0x6B43,0x5D3D, /* Array index: 0x1572 */ 0x6B47,0x5D3C, /* Array index: 0x1572 */ 0x6B49,0x5D3E, /* Array index: 0x1572 */ 0x6B4C,0x324E, /* Array index: 0x1572 */ 0x6B4E,0x4337, /* Array index: 0x1572 */ 0x6B50,0x5D3F, /* Array index: 0x1572 */ 0x6B53,0x343F, /* Array index: 0x1572 */ 0x6B54,0x5D41, /* Array index: 0x1572 */ 0x6B59,0x5D40, /* Array index: 0x1572 */ 0x6B5B,0x5D42, /* Array index: 0x1572 */ 0x6B6F,0x3B75, /* Array index: 0x1572 */ 0x6B73,0x3A50, /* Array index: 0x1572 */ 0x6B74,0x4E72, /* Array index: 0x1572 */ 0x6B78,0x5D45, /* Array index: 0x1572 */ 0x6B79,0x5D46, /* Array index: 0x1572 */ 0x6B7B,0x3B60, /* Array index: 0x1572 */ 0x6B7F,0x5D47, /* Array index: 0x1572 */ 0x6B80,0x5D48, /* Array index: 0x1572 */ 0x6B83,0x5D4A, /* Array index: 0x1572 */ 0x6B84,0x5D49, /* Array index: 0x1572 */ 0x6B86,0x4B58, /* Array index: 0x1572 */ 0x6B95,0x5D4D, /* Array index: 0x1572 */ 0x6B96,0x3F23, /* Array index: 0x1572 */ 0x6B98,0x5D4C, /* Array index: 0x1572 */ 0x6B9E,0x5D4E, /* Array index: 0x1572 */ 0x6BA4,0x5D4F, /* Array index: 0x1572 */ 0x6BAA,0x5D50, /* Array index: 0x1572 */ 0x6BAB,0x5D51, /* Array index: 0x1572 */ 0x6BC5,0x3523, /* Array index: 0x1572 */ 0x6BC6,0x5D58, /* Array index: 0x1572 */ 0x6BCB,0x5D59, /* Array index: 0x1572 */ 0x6BCD,0x4A6C, /* Array index: 0x1572 */ 0x6BCE,0x4B68, /* Array index: 0x1572 */ 0x6BD8,0x487B, /* Array index: 0x1572 */ 0x6BDB,0x4C53, /* Array index: 0x1572 */ 0x6BDF,0x5D5B, /* Array index: 0x1572 */ 0x6BEB,0x5D5D, /* Array index: 0x1572 */ 0x6BEC,0x5D5C, /* Array index: 0x1572 */ 0x6BEF,0x5D5F, /* Array index: 0x1572 */ 0x6BF3,0x5D5E, /* Array index: 0x1572 */ 0x6C08,0x5D61, /* Array index: 0x1572 */ 0x6C0F,0x3B61, /* Array index: 0x1572 */ 0x6C11,0x4C31, /* Array index: 0x1572 */ 0x6C13,0x5D62, /* Array index: 0x1572 */ 0x6C14,0x5D63, /* Array index: 0x1572 */ 0x6C17,0x3524, /* Array index: 0x1572 */ 0x6C1B,0x5D64, /* Array index: 0x1572 */ 0x6C23,0x5D66, /* Array index: 0x1572 */ 0x6C24,0x5D65, /* Array index: 0x1572 */ 0x6C34,0x3F65, /* Array index: 0x1572 */ 0x6C37,0x4939, /* Array index: 0x1572 */ 0x6C38,0x314A, /* Array index: 0x1572 */ 0x6C4E,0x4846, /* Array index: 0x1572 */ 0x6C50,0x3C2E, /* Array index: 0x1572 */ 0x6C55,0x5D68, /* Array index: 0x1572 */ 0x6C57,0x3440, /* Array index: 0x1572 */ 0x6C5A,0x3178, /* Array index: 0x1572 */ 0x6C68,0x5D71, /* Array index: 0x1572 */ 0x6C6A,0x5D6A, /* Array index: 0x1572 */ 0x6C70,0x4241, /* Array index: 0x1572 */ 0x6C72,0x3562, /* Array index: 0x1572 */ 0x6C73,0x5D72, /* Array index: 0x1572 */ 0x6C7A,0x3768, /* Array index: 0x1572 */ 0x6C88,0x4440, /* Array index: 0x1572 */ 0x6C8C,0x4659, /* Array index: 0x1572 */ 0x6C8D,0x5D6C, /* Array index: 0x1572 */ 0x6C90,0x5D74, /* Array index: 0x1572 */ 0x6C92,0x5D73, /* Array index: 0x1572 */ 0x6C93,0x3723, /* Array index: 0x1572 */ 0x6C96,0x322D, /* Array index: 0x1572 */ 0x6CA1,0x4B57, /* Array index: 0x1572 */ 0x6CA2,0x4274, /* Array index: 0x1572 */ 0x6CAB,0x4B77, /* Array index: 0x1572 */ 0x6CAE,0x5D7C, /* Array index: 0x1572 */ 0x6CB1,0x5D7D, /* Array index: 0x1572 */ 0x6CB3,0x324F, /* Array index: 0x1572 */ 0x6CC9,0x4074, /* Array index: 0x1572 */ 0x6CCA,0x4771, /* Array index: 0x1572 */ 0x6CCC,0x4867, /* Array index: 0x1572 */ 0x6CD3,0x5D77, /* Array index: 0x1572 */ 0x6CD5,0x4B21, /* Array index: 0x1572 */ 0x6CD7,0x5D79, /* Array index: 0x1572 */ 0x6CD9,0x5E24, /* Array index: 0x1572 */ 0x6CDB,0x5E22, /* Array index: 0x1572 */ 0x6CDD,0x5D7B, /* Array index: 0x1572 */ 0x6CE8,0x436D, /* Array index: 0x1572 */ 0x6CEA,0x5E25, /* Array index: 0x1572 */ 0x6D0B,0x4D4E, /* Array index: 0x1572 */ 0x6D0C,0x5E30, /* Array index: 0x1572 */ 0x6D12,0x5E2F, /* Array index: 0x1572 */ 0x6D17,0x4076, /* Array index: 0x1572 */ 0x6D19,0x5E2C, /* Array index: 0x1572 */ 0x6D1B,0x4D6C, /* Array index: 0x1572 */ 0x6D1E,0x4636, /* Array index: 0x1572 */ 0x6D1F,0x5E26, /* Array index: 0x1572 */ 0x6D25,0x4445, /* Array index: 0x1572 */ 0x6D3B,0x3368, /* Array index: 0x1572 */ 0x6D3D,0x5E2A, /* Array index: 0x1572 */ 0x6D3E,0x4749, /* Array index: 0x1572 */ 0x6D41,0x4E2E, /* Array index: 0x1572 */ 0x6D44,0x3E74, /* Array index: 0x1572 */ 0x6D45,0x4075, /* Array index: 0x1572 */ 0x6D59,0x5E36, /* Array index: 0x1572 */ 0x6D5A,0x5E34, /* Array index: 0x1572 */ 0x6D5C,0x494D, /* Array index: 0x1572 */ 0x6D63,0x5E31, /* Array index: 0x1572 */ 0x6D64,0x5E33, /* Array index: 0x1572 */ 0x6D66,0x313A, /* Array index: 0x1572 */ 0x6D69,0x3940, /* Array index: 0x1572 */ 0x6D6A,0x4F32, /* Array index: 0x1572 */ 0x6D6C,0x333D, /* Array index: 0x1572 */ 0x6D6E,0x4962, /* Array index: 0x1572 */ 0x6D74,0x4D61, /* Array index: 0x1572 */ 0x6D85,0x5E3A, /* Array index: 0x1572 */ 0x6D88,0x3E43, /* Array index: 0x1572 */ 0x6D8C,0x4D30, /* Array index: 0x1572 */ 0x6D8E,0x5E37, /* Array index: 0x1572 */ 0x6D93,0x5E32, /* Array index: 0x1572 */ 0x6D95,0x5E38, /* Array index: 0x1572 */ 0x6D99,0x4E5E, /* Array index: 0x1572 */ 0x6D9B,0x4573, /* Array index: 0x1572 */ 0x6D9C,0x4642, /* Array index: 0x1572 */ 0x6DAF,0x3336, /* Array index: 0x1572 */ 0x6DB2,0x3155, /* Array index: 0x1572 */ 0x6DB5,0x5E3E, /* Array index: 0x1572 */ 0x6DB8,0x5E41, /* Array index: 0x1572 */ 0x6DBC,0x4E43, /* Array index: 0x1572 */ 0x6DC0,0x4D64, /* Array index: 0x1572 */ 0x6DCB,0x4E54, /* Array index: 0x1572 */ 0x6DCC,0x5E45, /* Array index: 0x1572 */ 0x6DD1,0x3D4A, /* Array index: 0x1572 */ 0x6DD2,0x5E47, /* Array index: 0x1572 */ 0x6DD5,0x5E4C, /* Array index: 0x1572 */ 0x6DD8,0x4571, /* Array index: 0x1572 */ 0x6DD9,0x5E4A, /* Array index: 0x1572 */ 0x6DDE,0x5E44, /* Array index: 0x1572 */ 0x6DE1,0x4338, /* Array index: 0x1572 */ 0x6DE4,0x5E4B, /* Array index: 0x1572 */ 0x6DE6,0x5E40, /* Array index: 0x1572 */ 0x6DF1,0x3F3C, /* Array index: 0x1572 */ 0x6DF3,0x3D5F, /* Array index: 0x1572 */ 0x6DF5,0x4A25, /* Array index: 0x1572 */ 0x6E13,0x374C, /* Array index: 0x1572 */ 0x6E15,0x5E3C, /* Array index: 0x1572 */ 0x6E38,0x5E62, /* Array index: 0x1572 */ 0x6E3A,0x5E5D, /* Array index: 0x1572 */ 0x6E3E,0x5E55, /* Array index: 0x1572 */ 0x6E43,0x5E5C, /* Array index: 0x1572 */ 0x6E4A,0x4C2B, /* Array index: 0x1572 */ 0x6E4D,0x5E5A, /* Array index: 0x1572 */ 0x6E4E,0x5E5E, /* Array index: 0x1572 */ 0x6E56,0x3850, /* Array index: 0x1572 */ 0x6E58,0x3E45, /* Array index: 0x1572 */ 0x6E5B,0x4339, /* Array index: 0x1572 */ 0x6E5F,0x5E54, /* Array index: 0x1572 */ 0x6E67,0x4D2F, /* Array index: 0x1572 */ 0x6E6B,0x5E57, /* Array index: 0x1572 */ 0x6E6E,0x5E50, /* Array index: 0x1572 */ 0x6E6F,0x4572, /* Array index: 0x1572 */ 0x6E72,0x5E53, /* Array index: 0x1572 */ 0x6E76,0x5E59, /* Array index: 0x1572 */ 0x6E8C,0x482E, /* Array index: 0x1572 */ 0x6E8F,0x5E6F, /* Array index: 0x1572 */ 0x6E90,0x383B, /* Array index: 0x1572 */ 0x6E96,0x3D60, /* Array index: 0x1572 */ 0x6E98,0x5E65, /* Array index: 0x1572 */ 0x6E9C,0x4E2F, /* Array index: 0x1572 */ 0x6E9D,0x3942, /* Array index: 0x1572 */ 0x6E9F,0x5E72, /* Array index: 0x1572 */ 0x6EA2,0x306E, /* Array index: 0x1572 */ 0x6EA5,0x5E70, /* Array index: 0x1572 */ 0x6EAA,0x5E64, /* Array index: 0x1572 */ 0x6EAF,0x5E6A, /* Array index: 0x1572 */ 0x6EB2,0x5E6C, /* Array index: 0x1572 */ 0x6EB6,0x4D4F, /* Array index: 0x1572 */ 0x6EB7,0x5E67, /* Array index: 0x1572 */ 0x6EBA,0x452E, /* Array index: 0x1572 */ 0x6EBD,0x5E69, /* Array index: 0x1572 */ 0x6EC2,0x5E71, /* Array index: 0x1572 */ 0x6EC4,0x5E6B, /* Array index: 0x1572 */ 0x6EC5,0x4C47, /* Array index: 0x1572 */ 0x6EC9,0x5E66, /* Array index: 0x1572 */ 0x6ECB,0x3C22, /* Array index: 0x1572 */ 0x6ECC,0x5E7E, /* Array index: 0x1572 */ 0x6EDD,0x426C, /* Array index: 0x1572 */ 0x6EDE,0x425A, /* Array index: 0x1572 */ 0x6EEC,0x5E76, /* Array index: 0x1572 */ 0x6EEF,0x5E7C, /* Array index: 0x1572 */ 0x6EF2,0x5E7A, /* Array index: 0x1572 */ 0x6EF4,0x4529, /* Array index: 0x1572 */ 0x6EF7,0x5F23, /* Array index: 0x1572 */ 0x6EF8,0x5E77, /* Array index: 0x1572 */ 0x6F06,0x3C3F, /* Array index: 0x1572 */ 0x6F09,0x3977, /* Array index: 0x1572 */ 0x6F0F,0x4F33, /* Array index: 0x1572 */ 0x6F20,0x4779, /* Array index: 0x1572 */ 0x6F22,0x3441, /* Array index: 0x1572 */ 0x6F23,0x4E7A, /* Array index: 0x1572 */ 0x6F2B,0x4C21, /* Array index: 0x1572 */ 0x6F2C,0x4452, /* Array index: 0x1572 */ 0x6F31,0x5E7B, /* Array index: 0x1572 */ 0x6F32,0x5E7D, /* Array index: 0x1572 */ 0x6F38,0x4132, /* Array index: 0x1572 */ 0x6F3E,0x5F21, /* Array index: 0x1572 */ 0x6F3F,0x5E79, /* Array index: 0x1572 */ 0x6F41,0x5E73, /* Array index: 0x1572 */ 0x6F45,0x3443, /* Array index: 0x1572 */ 0x6F54,0x3769, /* Array index: 0x1572 */ 0x6F58,0x5F2F, /* Array index: 0x1572 */ 0x6F5B,0x5F2A, /* Array index: 0x1572 */ 0x6F5C,0x4078, /* Array index: 0x1572 */ 0x6F5F,0x3363, /* Array index: 0x1572 */ 0x6F64,0x3D61, /* Array index: 0x1572 */ 0x6F66,0x5F33, /* Array index: 0x1572 */ 0x6F74,0x5F4C, /* Array index: 0x1572 */ 0x6F78,0x5F26, /* Array index: 0x1572 */ 0x6F7A,0x5F25, /* Array index: 0x1572 */ 0x6F7C,0x5F2E, /* Array index: 0x1572 */ 0x6F8E,0x5F30, /* Array index: 0x1572 */ 0x6F91,0x5F31, /* Array index: 0x1572 */ 0x6F97,0x3442, /* Array index: 0x1572 */ 0x6FA1,0x5F36, /* Array index: 0x1572 */ 0x6FA3,0x5F35, /* Array index: 0x1572 */ 0x6FA4,0x5F37, /* Array index: 0x1572 */ 0x6FAA,0x5F3A, /* Array index: 0x1572 */ 0x6FB1,0x4543, /* Array index: 0x1572 */ 0x6FB3,0x5F34, /* Array index: 0x1572 */ 0x6FB9,0x5F38, /* Array index: 0x1572 */ 0x6FC6,0x5F39, /* Array index: 0x1572 */ 0x6FD4,0x5F3E, /* Array index: 0x1572 */ 0x6FD5,0x5F3C, /* Array index: 0x1572 */ 0x6FD8,0x5F3F, /* Array index: 0x1572 */ 0x6FDB,0x5F42, /* Array index: 0x1572 */ 0x6FE4,0x5E39, /* Array index: 0x1572 */ 0x6FF6,0x6F69, /* Array index: 0x1572 */ 0x6FFA,0x5F45, /* Array index: 0x1572 */ 0x6FFE,0x5F49, /* Array index: 0x1572 */ 0x7001,0x5F47, /* Array index: 0x1572 */ 0x7009,0x5F43, /* Array index: 0x1572 */ 0x700B,0x5F44, /* Array index: 0x1572 */ 0x700F,0x5F48, /* Array index: 0x1572 */ 0x7011,0x5F46, /* Array index: 0x1572 */ 0x7015,0x494E, /* Array index: 0x1572 */ 0x7018,0x5F4E, /* Array index: 0x1572 */ 0x7026,0x4375, /* Array index: 0x1572 */ 0x7027,0x426D, /* Array index: 0x1572 */ 0x702C,0x4025, /* Array index: 0x1572 */ 0x7030,0x5F50, /* Array index: 0x1572 */ 0x7032,0x5F52, /* Array index: 0x1572 */ 0x703E,0x5F51, /* Array index: 0x1572 */ 0x704C,0x5E75, /* Array index: 0x1572 */ 0x7051,0x5F53, /* Array index: 0x1572 */ 0x7058,0x4667, /* Array index: 0x1572 */ 0x7063,0x5F54, /* Array index: 0x1572 */ 0x706B,0x3250, /* Array index: 0x1572 */ 0x706F,0x4574, /* Array index: 0x1572 */ 0x7070,0x3325, /* Array index: 0x1572 */ 0x7078,0x3564, /* Array index: 0x1572 */ 0x707C,0x3C5E, /* Array index: 0x1572 */ 0x707D,0x3A52, /* Array index: 0x1572 */ 0x7089,0x4F27, /* Array index: 0x1572 */ 0x708A,0x3F66, /* Array index: 0x1572 */ 0x708E,0x316A, /* Array index: 0x1572 */ 0x7092,0x5F56, /* Array index: 0x1572 */ 0x7099,0x5F55, /* Array index: 0x1572 */ 0x70B3,0x5F5B, /* Array index: 0x1572 */ 0x70C8,0x4E75, /* Array index: 0x1572 */ 0x70CB,0x5F5E, /* Array index: 0x1572 */ 0x70CF,0x3128, /* Array index: 0x1572 */ 0x70D9,0x5F60, /* Array index: 0x1572 */ 0x70DD,0x5F5F, /* Array index: 0x1572 */ 0x70DF,0x5F5D, /* Array index: 0x1572 */ 0x70F1,0x5F58, /* Array index: 0x1572 */ 0x70F9,0x4B23, /* Array index: 0x1572 */ 0x70FD,0x5F62, /* Array index: 0x1572 */ 0x7109,0x5F61, /* Array index: 0x1572 */ 0x7114,0x316B, /* Array index: 0x1572 */ 0x7119,0x5F64, /* Array index: 0x1572 */ 0x711A,0x4A32, /* Array index: 0x1572 */ 0x711C,0x5F63, /* Array index: 0x1572 */ 0x7121,0x4C35, /* Array index: 0x1572 */ 0x7126,0x3E47, /* Array index: 0x1572 */ 0x7136,0x4133, /* Array index: 0x1572 */ 0x713C,0x3E46, /* Array index: 0x1572 */ 0x7149,0x4E7B, /* Array index: 0x1572 */ 0x714C,0x5F6A, /* Array index: 0x1572 */ 0x714E,0x4079, /* Array index: 0x1572 */ 0x7155,0x5F66, /* Array index: 0x1572 */ 0x7156,0x5F6B, /* Array index: 0x1572 */ 0x7159,0x316C, /* Array index: 0x1572 */ 0x716C,0x5F6C, /* Array index: 0x1572 */ 0x716E,0x3C51, /* Array index: 0x1572 */ 0x717D,0x407A, /* Array index: 0x1572 */ 0x7184,0x5F6F, /* Array index: 0x1572 */ 0x7188,0x5F67, /* Array index: 0x1572 */ 0x718A,0x3727, /* Array index: 0x1572 */ 0x718F,0x5F6D, /* Array index: 0x1572 */ 0x7194,0x4D50, /* Array index: 0x1572 */ 0x7195,0x5F70, /* Array index: 0x1572 */ 0x7199,0x7426, /* Array index: 0x1572 */ 0x719F,0x3D4F, /* Array index: 0x1572 */ 0x71A8,0x5F71, /* Array index: 0x1572 */ 0x71AC,0x5F72, /* Array index: 0x1572 */ 0x71B1,0x472E, /* Array index: 0x1572 */ 0x71B9,0x5F74, /* Array index: 0x1572 */ 0x71BE,0x5F75, /* Array index: 0x1572 */ 0x71C3,0x4733, /* Array index: 0x1572 */ 0x71C8,0x4575, /* Array index: 0x1572 */ 0x71C9,0x5F77, /* Array index: 0x1572 */ 0x71CE,0x5F79, /* Array index: 0x1572 */ 0x71D0,0x4E55, /* Array index: 0x1572 */ 0x71D2,0x5F76, /* Array index: 0x1572 */ 0x71D4,0x5F78, /* Array index: 0x1572 */ 0x71D5,0x316D, /* Array index: 0x1572 */ 0x71D7,0x5F73, /* Array index: 0x1572 */ 0x71DF,0x535B, /* Array index: 0x1572 */ 0x71E0,0x5F7A, /* Array index: 0x1572 */ 0x71F5,0x5F7D, /* Array index: 0x1572 */ 0x71F9,0x6021, /* Array index: 0x1572 */ 0x71FB,0x5F6E, /* Array index: 0x1572 */ 0x71FC,0x5F7E, /* Array index: 0x1572 */ 0x71FF,0x6022, /* Array index: 0x1572 */ 0x7206,0x477A, /* Array index: 0x1572 */ 0x720D,0x6023, /* Array index: 0x1572 */ 0x7210,0x6024, /* Array index: 0x1572 */ 0x721B,0x6025, /* Array index: 0x1572 */ 0x7228,0x6026, /* Array index: 0x1572 */ 0x722A,0x445E, /* Array index: 0x1572 */ 0x722C,0x6028, /* Array index: 0x1572 */ 0x722D,0x6027, /* Array index: 0x1572 */ 0x7230,0x6029, /* Array index: 0x1572 */ 0x7232,0x602A, /* Array index: 0x1572 */ 0x7235,0x3C5F, /* Array index: 0x1572 */ 0x7236,0x4963, /* Array index: 0x1572 */ 0x7252,0x442D, /* Array index: 0x1572 */ 0x7258,0x6031, /* Array index: 0x1572 */ 0x7259,0x3267, /* Array index: 0x1572 */ 0x725B,0x356D, /* Array index: 0x1572 */ 0x725D,0x4C46, /* Array index: 0x1572 */ 0x725F,0x4C36, /* Array index: 0x1572 */ 0x7261,0x3234, /* Array index: 0x1572 */ 0x7262,0x4F34, /* Array index: 0x1572 */ 0x7267,0x4B52, /* Array index: 0x1572 */ 0x7269,0x4A2A, /* Array index: 0x1572 */ 0x7272,0x4037, /* Array index: 0x1572 */ 0x7274,0x6032, /* Array index: 0x1572 */ 0x7279,0x4643, /* Array index: 0x1572 */ 0x7287,0x6036, /* Array index: 0x1572 */ 0x7292,0x6037, /* Array index: 0x1572 */ 0x7296,0x6038, /* Array index: 0x1572 */ 0x72A0,0x353E, /* Array index: 0x1572 */ 0x72A2,0x6039, /* Array index: 0x1572 */ 0x72A7,0x603A, /* Array index: 0x1572 */ 0x72AC,0x3824, /* Array index: 0x1572 */ 0x72AF,0x4848, /* Array index: 0x1572 */ 0x72B2,0x603C, /* Array index: 0x1572 */ 0x72B6,0x3E75, /* Array index: 0x1572 */ 0x72B9,0x603B, /* Array index: 0x1572 */ 0x72CE,0x6040, /* Array index: 0x1572 */ 0x72D0,0x3851, /* Array index: 0x1572 */ 0x72D2,0x6041, /* Array index: 0x1572 */ 0x72D7,0x3669, /* Array index: 0x1572 */ 0x72D9,0x4140, /* Array index: 0x1572 */ 0x72DB,0x397D, /* Array index: 0x1572 */ 0x72E9,0x3C6D, /* Array index: 0x1572 */ 0x72EC,0x4648, /* Array index: 0x1572 */ 0x72ED,0x3639, /* Array index: 0x1572 */ 0x730A,0x6049, /* Array index: 0x1572 */ 0x7316,0x604B, /* Array index: 0x1572 */ 0x7317,0x6048, /* Array index: 0x1572 */ 0x7325,0x6050, /* Array index: 0x1572 */ 0x7334,0x604D, /* Array index: 0x1572 */ 0x7336,0x4D31, /* Array index: 0x1572 */ 0x7337,0x4D32, /* Array index: 0x1572 */ 0x733E,0x6051, /* Array index: 0x1572 */ 0x733F,0x316E, /* Array index: 0x1572 */ 0x7344,0x3976, /* Array index: 0x1572 */ 0x7345,0x3B62, /* Array index: 0x1572 */ 0x734E,0x6052, /* Array index: 0x1572 */ 0x734F,0x6053, /* Array index: 0x1572 */ 0x7357,0x6055, /* Array index: 0x1572 */ 0x7363,0x3D43, /* Array index: 0x1572 */ 0x7368,0x6057, /* Array index: 0x1572 */ 0x736A,0x6056, /* Array index: 0x1572 */ 0x7370,0x6058, /* Array index: 0x1572 */ 0x7372,0x334D, /* Array index: 0x1572 */ 0x7375,0x605A, /* Array index: 0x1572 */ 0x7378,0x6059, /* Array index: 0x1572 */ 0x737A,0x605C, /* Array index: 0x1572 */ 0x737B,0x605B, /* Array index: 0x1572 */ 0x7384,0x383C, /* Array index: 0x1572 */ 0x7387,0x4E28, /* Array index: 0x1572 */ 0x7389,0x364C, /* Array index: 0x1572 */ 0x738B,0x3226, /* Array index: 0x1572 */ 0x7396,0x366A, /* Array index: 0x1572 */ 0x73A9,0x3461, /* Array index: 0x1572 */ 0x73B2,0x4E68, /* Array index: 0x1572 */ 0x73B3,0x605E, /* Array index: 0x1572 */ 0x73BB,0x6060, /* Array index: 0x1572 */ 0x73C0,0x6061, /* Array index: 0x1572 */ 0x73C2,0x3251, /* Array index: 0x1572 */ 0x73C8,0x605D, /* Array index: 0x1572 */ 0x73CA,0x3B39, /* Array index: 0x1572 */ 0x73CD,0x4441, /* Array index: 0x1572 */ 0x73CE,0x605F, /* Array index: 0x1572 */ 0x73DE,0x6064, /* Array index: 0x1572 */ 0x73E0,0x3C6E, /* Array index: 0x1572 */ 0x73E5,0x6062, /* Array index: 0x1572 */ 0x73EA,0x373E, /* Array index: 0x1572 */ 0x73ED,0x4849, /* Array index: 0x1572 */ 0x73EE,0x6063, /* Array index: 0x1572 */ 0x73F1,0x607E, /* Array index: 0x1572 */ 0x73F8,0x6069, /* Array index: 0x1572 */ 0x73FE,0x383D, /* Array index: 0x1572 */ 0x7403,0x3565, /* Array index: 0x1572 */ 0x7405,0x6066, /* Array index: 0x1572 */ 0x7406,0x4D7D, /* Array index: 0x1572 */ 0x7409,0x4E30, /* Array index: 0x1572 */ 0x7422,0x4276, /* Array index: 0x1572 */ 0x7425,0x6068, /* Array index: 0x1572 */ 0x743A,0x606B, /* Array index: 0x1572 */ 0x743F,0x606D, /* Array index: 0x1572 */ 0x7441,0x6070, /* Array index: 0x1572 */ 0x7455,0x606C, /* Array index: 0x1572 */ 0x7469,0x6072, /* Array index: 0x1572 */ 0x746A,0x6075, /* Array index: 0x1572 */ 0x746F,0x6067, /* Array index: 0x1572 */ 0x7470,0x6073, /* Array index: 0x1572 */ 0x7473,0x3A3C, /* Array index: 0x1572 */ 0x7476,0x6076, /* Array index: 0x1572 */ 0x747E,0x6077, /* Array index: 0x1572 */ 0x7483,0x4D7E, /* Array index: 0x1572 */ 0x748B,0x6078, /* Array index: 0x1572 */ 0x749E,0x6079, /* Array index: 0x1572 */ 0x74A2,0x6065, /* Array index: 0x1572 */ 0x74A7,0x607A, /* Array index: 0x1572 */ 0x74B0,0x3444, /* Array index: 0x1572 */ 0x74BD,0x3C25, /* Array index: 0x1572 */ 0x74CA,0x607B, /* Array index: 0x1572 */ 0x74CF,0x607C, /* Array index: 0x1572 */ 0x74D4,0x607D, /* Array index: 0x1572 */ 0x74DC,0x313B, /* Array index: 0x1572 */ 0x74E0,0x6121, /* Array index: 0x1572 */ 0x74E2,0x493B, /* Array index: 0x1572 */ 0x74E3,0x6122, /* Array index: 0x1572 */ 0x74E6,0x3424, /* Array index: 0x1572 */ 0x74E7,0x6123, /* Array index: 0x1572 */ 0x74E9,0x6124, /* Array index: 0x1572 */ 0x7511,0x3979, /* Array index: 0x1572 */ 0x7513,0x6132, /* Array index: 0x1572 */ 0x7515,0x6131, /* Array index: 0x1572 */ 0x7518,0x3445, /* Array index: 0x1572 */ 0x751A,0x3F53, /* Array index: 0x1572 */ 0x751C,0x453C, /* Array index: 0x1572 */ 0x751E,0x6133, /* Array index: 0x1572 */ 0x751F,0x4038, /* Array index: 0x1572 */ 0x7523,0x3B3A, /* Array index: 0x1572 */ 0x7525,0x3179, /* Array index: 0x1572 */ 0x7526,0x6134, /* Array index: 0x1572 */ 0x7528,0x4D51, /* Array index: 0x1572 */ 0x752B,0x4A63, /* Array index: 0x1572 */ 0x752C,0x6135, /* Array index: 0x1572 */ 0x7544,0x6137, /* Array index: 0x1572 */ 0x7546,0x613C, /* Array index: 0x1572 */ 0x7554,0x484A, /* Array index: 0x1572 */ 0x7560,0x482B, /* Array index: 0x1572 */ 0x7570,0x305B, /* Array index: 0x1572 */ 0x757F,0x3526, /* Array index: 0x1572 */ 0x7582,0x614A, /* Array index: 0x1572 */ 0x7594,0x614B, /* Array index: 0x1572 */ 0x759A,0x614C, /* Array index: 0x1572 */ 0x759D,0x614D, /* Array index: 0x1572 */ 0x75A3,0x614F, /* Array index: 0x1572 */ 0x75A5,0x614E, /* Array index: 0x1572 */ 0x75AB,0x3156, /* Array index: 0x1572 */ 0x75C2,0x6150, /* Array index: 0x1572 */ 0x75C3,0x6152, /* Array index: 0x1572 */ 0x75C5,0x4942, /* Array index: 0x1572 */ 0x75C7,0x3E49, /* Array index: 0x1572 */ 0x75CA,0x6159, /* Array index: 0x1572 */ 0x75CD,0x6158, /* Array index: 0x1572 */ 0x75D2,0x615A, /* Array index: 0x1572 */ 0x75D4,0x3C26, /* Array index: 0x1572 */ 0x75D5,0x3A2F, /* Array index: 0x1572 */ 0x75D8,0x4577, /* Array index: 0x1572 */ 0x75D9,0x615B, /* Array index: 0x1572 */ 0x75DB,0x444B, /* Array index: 0x1572 */ 0x75DE,0x615D, /* Array index: 0x1572 */ 0x75E2,0x4E21, /* Array index: 0x1572 */ 0x75E3,0x615C, /* Array index: 0x1572 */ 0x75E9,0x4169, /* Array index: 0x1572 */ 0x75FA,0x6163, /* Array index: 0x1572 */ 0x75FC,0x6160, /* Array index: 0x1572 */ 0x75FE,0x615E, /* Array index: 0x1572 */ 0x75FF,0x615F, /* Array index: 0x1572 */ 0x7601,0x6161, /* Array index: 0x1572 */ 0x7609,0x6168, /* Array index: 0x1572 */ 0x760B,0x6166, /* Array index: 0x1572 */ 0x760D,0x6167, /* Array index: 0x1572 */ 0x7627,0x616A, /* Array index: 0x1572 */ 0x7630,0x6170, /* Array index: 0x1572 */ 0x7634,0x616F, /* Array index: 0x1572 */ 0x763B,0x6171, /* Array index: 0x1572 */ 0x7642,0x4E45, /* Array index: 0x1572 */ 0x764C,0x3462, /* Array index: 0x1572 */ 0x7652,0x4C7E, /* Array index: 0x1572 */ 0x7656,0x4A4A, /* Array index: 0x1572 */ 0x7658,0x6176, /* Array index: 0x1572 */ 0x765C,0x6175, /* Array index: 0x1572 */ 0x7661,0x6177, /* Array index: 0x1572 */ 0x7662,0x6178, /* Array index: 0x1572 */ 0x7670,0x617E, /* Array index: 0x1572 */ 0x7672,0x6221, /* Array index: 0x1572 */ 0x7676,0x6222, /* Array index: 0x1572 */ 0x768B,0x6228, /* Array index: 0x1572 */ 0x768E,0x6229, /* Array index: 0x1572 */ 0x7690,0x3B29, /* Array index: 0x1572 */ 0x7693,0x622B, /* Array index: 0x1572 */ 0x7696,0x622A, /* Array index: 0x1572 */ 0x7699,0x622C, /* Array index: 0x1572 */ 0x769A,0x622D, /* Array index: 0x1572 */ 0x76AE,0x4869, /* Array index: 0x1572 */ 0x76B0,0x622E, /* Array index: 0x1572 */ 0x76B4,0x622F, /* Array index: 0x1572 */ 0x76BF,0x3B2E, /* Array index: 0x1572 */ 0x76C2,0x6233, /* Array index: 0x1572 */ 0x76C3,0x4756, /* Array index: 0x1572 */ 0x76C6,0x4B5F, /* Array index: 0x1572 */ 0x76C8,0x314E, /* Array index: 0x1572 */ 0x76CA,0x3157, /* Array index: 0x1572 */ 0x76CD,0x6234, /* Array index: 0x1572 */ 0x76D2,0x6236, /* Array index: 0x1572 */ 0x76D6,0x6235, /* Array index: 0x1572 */ 0x76D7,0x4570, /* Array index: 0x1572 */ 0x76EA,0x623B, /* Array index: 0x1572 */ 0x76EE,0x4C5C, /* Array index: 0x1572 */ 0x76F2,0x4C55, /* Array index: 0x1572 */ 0x76F4,0x443E, /* Array index: 0x1572 */ 0x76F8,0x416A, /* Array index: 0x1572 */ 0x76FB,0x623D, /* Array index: 0x1572 */ 0x76FE,0x3D62, /* Array index: 0x1572 */ 0x7701,0x3E4A, /* Array index: 0x1572 */ 0x7704,0x6240, /* Array index: 0x1572 */ 0x771B,0x6246, /* Array index: 0x1572 */ 0x7729,0x6241, /* Array index: 0x1572 */ 0x7737,0x6247, /* Array index: 0x1572 */ 0x7738,0x6248, /* Array index: 0x1572 */ 0x773A,0x442F, /* Array index: 0x1572 */ 0x773C,0x3463, /* Array index: 0x1572 */ 0x7740,0x4365, /* Array index: 0x1572 */ 0x7747,0x6249, /* Array index: 0x1572 */ 0x775A,0x624A, /* Array index: 0x1572 */ 0x775B,0x624D, /* Array index: 0x1572 */ 0x7761,0x3F67, /* Array index: 0x1572 */ 0x7763,0x4644, /* Array index: 0x1572 */ 0x7765,0x624E, /* Array index: 0x1572 */ 0x7766,0x4B53, /* Array index: 0x1572 */ 0x7768,0x624B, /* Array index: 0x1572 */ 0x776B,0x624C, /* Array index: 0x1572 */ 0x7779,0x6251, /* Array index: 0x1572 */ 0x777E,0x6250, /* Array index: 0x1572 */ 0x777F,0x624F, /* Array index: 0x1572 */ 0x778B,0x6253, /* Array index: 0x1572 */ 0x778E,0x6252, /* Array index: 0x1572 */ 0x7791,0x6254, /* Array index: 0x1572 */ 0x779E,0x6256, /* Array index: 0x1572 */ 0x77A0,0x6255, /* Array index: 0x1572 */ 0x77A5,0x4A4D, /* Array index: 0x1572 */ 0x77AC,0x3D56, /* Array index: 0x1572 */ 0x77AD,0x4E46, /* Array index: 0x1572 */ 0x77B0,0x6257, /* Array index: 0x1572 */ 0x77B3,0x4637, /* Array index: 0x1572 */ 0x77B6,0x6258, /* Array index: 0x1572 */ 0x77C7,0x625E, /* Array index: 0x1572 */ 0x77CD,0x625F, /* Array index: 0x1572 */ 0x77D7,0x6260, /* Array index: 0x1572 */ 0x77E2,0x4C70, /* Array index: 0x1572 */ 0x77E3,0x6263, /* Array index: 0x1572 */ 0x77E5,0x434E, /* Array index: 0x1572 */ 0x77E7,0x476A, /* Array index: 0x1572 */ 0x77E9,0x366B, /* Array index: 0x1572 */ 0x77F3,0x4050, /* Array index: 0x1572 */ 0x77FC,0x6265, /* Array index: 0x1572 */ 0x7802,0x3A3D, /* Array index: 0x1572 */ 0x780C,0x6266, /* Array index: 0x1572 */ 0x7812,0x6267, /* Array index: 0x1572 */ 0x7814,0x3826, /* Array index: 0x1572 */ 0x7815,0x3A55, /* Array index: 0x1572 */ 0x7820,0x6269, /* Array index: 0x1572 */ 0x7832,0x4B24, /* Array index: 0x1572 */ 0x7834,0x474B, /* Array index: 0x1572 */ 0x783A,0x4557, /* Array index: 0x1572 */ 0x783F,0x395C, /* Array index: 0x1572 */ 0x7845,0x626B, /* Array index: 0x1572 */ 0x785D,0x3E4B, /* Array index: 0x1572 */ 0x786B,0x4E32, /* Array index: 0x1572 */ 0x786C,0x3945, /* Array index: 0x1572 */ 0x786F,0x3827, /* Array index: 0x1572 */ 0x7872,0x4823, /* Array index: 0x1572 */ 0x7874,0x626D, /* Array index: 0x1572 */ 0x787C,0x626F, /* Array index: 0x1572 */ 0x7881,0x386B, /* Array index: 0x1572 */ 0x7886,0x626E, /* Array index: 0x1572 */ 0x7887,0x4476, /* Array index: 0x1572 */ 0x7891,0x486A, /* Array index: 0x1572 */ 0x7893,0x3130, /* Array index: 0x1572 */ 0x7895,0x3A6C, /* Array index: 0x1572 */ 0x7897,0x4F52, /* Array index: 0x1572 */ 0x789A,0x6270, /* Array index: 0x1572 */ 0x78A3,0x6272, /* Array index: 0x1572 */ 0x78A7,0x4A4B, /* Array index: 0x1572 */ 0x78A9,0x4059, /* Array index: 0x1572 */ 0x78AA,0x6274, /* Array index: 0x1572 */ 0x78AF,0x6275, /* Array index: 0x1572 */ 0x78B5,0x6273, /* Array index: 0x1572 */ 0x78BA,0x334E, /* Array index: 0x1572 */ 0x78BC,0x627B, /* Array index: 0x1572 */ 0x78BE,0x627A, /* Array index: 0x1572 */ 0x78C1,0x3C27, /* Array index: 0x1572 */ 0x78C5,0x627C, /* Array index: 0x1572 */ 0x78C6,0x6277, /* Array index: 0x1572 */ 0x78CA,0x627D, /* Array index: 0x1572 */ 0x78CB,0x6278, /* Array index: 0x1572 */ 0x78D0,0x4858, /* Array index: 0x1572 */ 0x78D1,0x6276, /* Array index: 0x1572 */ 0x78D4,0x6279, /* Array index: 0x1572 */ 0x78DA,0x6322, /* Array index: 0x1572 */ 0x78E7,0x6321, /* Array index: 0x1572 */ 0x78E8,0x4B61, /* Array index: 0x1572 */ 0x78EC,0x627E, /* Array index: 0x1572 */ 0x78EF,0x306B, /* Array index: 0x1572 */ 0x78F4,0x6324, /* Array index: 0x1572 */ 0x78FD,0x6323, /* Array index: 0x1572 */ 0x7901,0x3E4C, /* Array index: 0x1572 */ 0x7907,0x6325, /* Array index: 0x1572 */ 0x790E,0x4143, /* Array index: 0x1572 */ 0x7911,0x6327, /* Array index: 0x1572 */ 0x7912,0x6326, /* Array index: 0x1572 */ 0x7919,0x6328, /* Array index: 0x1572 */ 0x7926,0x6268, /* Array index: 0x1572 */ 0x793A,0x3C28, /* Array index: 0x1572 */ 0x793C,0x4E69, /* Array index: 0x1572 */ 0x793E,0x3C52, /* Array index: 0x1572 */ 0x7940,0x632B, /* Array index: 0x1572 */ 0x7941,0x3737, /* Array index: 0x1572 */ 0x7950,0x4D34, /* Array index: 0x1572 */ 0x795A,0x632F, /* Array index: 0x1572 */ 0x7965,0x3E4D, /* Array index: 0x1572 */ 0x7968,0x493C, /* Array index: 0x1572 */ 0x796D,0x3A57, /* Array index: 0x1572 */ 0x7977,0x4578, /* Array index: 0x1572 */ 0x797A,0x6332, /* Array index: 0x1572 */ 0x798A,0x6334, /* Array index: 0x1572 */ 0x799D,0x6335, /* Array index: 0x1572 */ 0x79A6,0x357A, /* Array index: 0x1572 */ 0x79A7,0x6336, /* Array index: 0x1572 */ 0x79AA,0x6338, /* Array index: 0x1572 */ 0x79AE,0x6339, /* Array index: 0x1572 */ 0x79B0,0x4729, /* Array index: 0x1572 */ 0x79B3,0x633A, /* Array index: 0x1572 */ 0x79C9,0x633D, /* Array index: 0x1572 */ 0x79CB,0x3D29, /* Array index: 0x1572 */ 0x79D1,0x324A, /* Array index: 0x1572 */ 0x79D2,0x4943, /* Array index: 0x1572 */ 0x79D5,0x633E, /* Array index: 0x1572 */ 0x79D8,0x486B, /* Array index: 0x1572 */ 0x79DF,0x4145, /* Array index: 0x1572 */ 0x79E1,0x6341, /* Array index: 0x1572 */ 0x79EC,0x6340, /* Array index: 0x1572 */ 0x79F0,0x3E4E, /* Array index: 0x1572 */ 0x79FB,0x305C, /* Array index: 0x1572 */ 0x7A00,0x3529, /* Array index: 0x1572 */ 0x7A08,0x6343, /* Array index: 0x1572 */ 0x7A0B,0x4478, /* Array index: 0x1572 */ 0x7A0D,0x6344, /* Array index: 0x1572 */ 0x7A0E,0x4047, /* Array index: 0x1572 */ 0x7A14,0x4C2D, /* Array index: 0x1572 */ 0x7A2E,0x3C6F, /* Array index: 0x1572 */ 0x7A31,0x634A, /* Array index: 0x1572 */ 0x7A32,0x3070, /* Array index: 0x1572 */ 0x7A37,0x634D, /* Array index: 0x1572 */ 0x7A46,0x4B54, /* Array index: 0x1572 */ 0x7A49,0x6350, /* Array index: 0x1572 */ 0x7A57,0x634F, /* Array index: 0x1572 */ 0x7A69,0x6353, /* Array index: 0x1572 */ 0x7A6B,0x334F, /* Array index: 0x1572 */ 0x7A70,0x6355, /* Array index: 0x1572 */ 0x7A74,0x376A, /* Array index: 0x1572 */ 0x7A76,0x3566, /* Array index: 0x1572 */ 0x7A79,0x6356, /* Array index: 0x1572 */ 0x7A7A,0x3675, /* Array index: 0x1572 */ 0x7A7D,0x6357, /* Array index: 0x1572 */ 0x7A7F,0x407C, /* Array index: 0x1572 */ 0x7A81,0x464D, /* Array index: 0x1572 */ 0x7A83,0x4060, /* Array index: 0x1572 */ 0x7A84,0x3A75, /* Array index: 0x1572 */ 0x7A88,0x6358, /* Array index: 0x1572 */ 0x7A9F,0x3722, /* Array index: 0x1572 */ 0x7AA9,0x635D, /* Array index: 0x1572 */ 0x7AAA,0x3726, /* Array index: 0x1572 */ 0x7AB6,0x6360, /* Array index: 0x1572 */ 0x7ABA,0x312E, /* Array index: 0x1572 */ 0x7ABF,0x6363, /* Array index: 0x1572 */ 0x7AEA,0x4328, /* Array index: 0x1572 */ 0x7AED,0x6371, /* Array index: 0x1572 */ 0x7AEF,0x433C, /* Array index: 0x1572 */ 0x7AF0,0x6372, /* Array index: 0x1572 */ 0x7AFF,0x3448, /* Array index: 0x1572 */ 0x7B02,0x6373, /* Array index: 0x1572 */ 0x7B04,0x6422, /* Array index: 0x1572 */ 0x7B06,0x6376, /* Array index: 0x1572 */ 0x7B08,0x3568, /* Array index: 0x1572 */ 0x7B0A,0x6375, /* Array index: 0x1572 */ 0x7B0B,0x6424, /* Array index: 0x1572 */ 0x7B0F,0x6374, /* Array index: 0x1572 */ 0x7B11,0x3E50, /* Array index: 0x1572 */ 0x7B18,0x6378, /* Array index: 0x1572 */ 0x7B19,0x6379, /* Array index: 0x1572 */ 0x7B1B,0x452B, /* Array index: 0x1572 */ 0x7B1E,0x637A, /* Array index: 0x1572 */ 0x7B20,0x335E, /* Array index: 0x1572 */ 0x7B25,0x3F5A, /* Array index: 0x1572 */ 0x7B26,0x4964, /* Array index: 0x1572 */ 0x7B28,0x637C, /* Array index: 0x1572 */ 0x7B2C,0x4268, /* Array index: 0x1572 */ 0x7B33,0x6377, /* Array index: 0x1572 */ 0x7B35,0x637B, /* Array index: 0x1572 */ 0x7B36,0x637D, /* Array index: 0x1572 */ 0x7B39,0x3A7B, /* Array index: 0x1572 */ 0x7B5D,0x6438, /* Array index: 0x1572 */ 0x7B65,0x6428, /* Array index: 0x1572 */ 0x7B67,0x642A, /* Array index: 0x1572 */ 0x7B6C,0x642D, /* Array index: 0x1572 */ 0x7B6E,0x642E, /* Array index: 0x1572 */ 0x7B70,0x642B, /* Array index: 0x1572 */ 0x7B71,0x642C, /* Array index: 0x1572 */ 0x7B74,0x6429, /* Array index: 0x1572 */ 0x7B75,0x6427, /* Array index: 0x1572 */ 0x7B7A,0x6421, /* Array index: 0x1572 */ 0x7B86,0x4A4F, /* Array index: 0x1572 */ 0x7B87,0x3255, /* Array index: 0x1572 */ 0x7B8B,0x6435, /* Array index: 0x1572 */ 0x7B8D,0x6432, /* Array index: 0x1572 */ 0x7B8F,0x6437, /* Array index: 0x1572 */ 0x7B92,0x6436, /* Array index: 0x1572 */ 0x7BAA,0x433D, /* Array index: 0x1572 */ 0x7BAD,0x407D, /* Array index: 0x1572 */ 0x7BB1,0x4822, /* Array index: 0x1572 */ 0x7BB4,0x643E, /* Array index: 0x1572 */ 0x7BB8,0x4824, /* Array index: 0x1572 */ 0x7BC0,0x4061, /* Array index: 0x1572 */ 0x7BC1,0x643B, /* Array index: 0x1572 */ 0x7BC4,0x484F, /* Array index: 0x1572 */ 0x7BC6,0x643F, /* Array index: 0x1572 */ 0x7BC7,0x4A53, /* Array index: 0x1572 */ 0x7BC9,0x435B, /* Array index: 0x1572 */ 0x7BCB,0x643A, /* Array index: 0x1572 */ 0x7BCC,0x643C, /* Array index: 0x1572 */ 0x7BCF,0x643D, /* Array index: 0x1572 */ 0x7BDD,0x6440, /* Array index: 0x1572 */ 0x7BE0,0x3C44, /* Array index: 0x1572 */ 0x7BE9,0x6441, /* Array index: 0x1572 */ 0x7BED,0x4F36, /* Array index: 0x1572 */ 0x7BF3,0x644A, /* Array index: 0x1572 */ 0x7BF6,0x644E, /* Array index: 0x1572 */ 0x7BF7,0x644B, /* Array index: 0x1572 */ 0x7C00,0x6447, /* Array index: 0x1572 */ 0x7C07,0x6448, /* Array index: 0x1572 */ 0x7C0D,0x644D, /* Array index: 0x1572 */ 0x7C17,0x644C, /* Array index: 0x1572 */ 0x7C1F,0x6452, /* Array index: 0x1572 */ 0x7C21,0x344A, /* Array index: 0x1572 */ 0x7C23,0x644F, /* Array index: 0x1572 */ 0x7C27,0x6450, /* Array index: 0x1572 */ 0x7C2A,0x6451, /* Array index: 0x1572 */ 0x7C2B,0x6454, /* Array index: 0x1572 */ 0x7C37,0x6453, /* Array index: 0x1572 */ 0x7C38,0x4876, /* Array index: 0x1572 */ 0x7C43,0x6457, /* Array index: 0x1572 */ 0x7C54,0x6458, /* Array index: 0x1572 */ 0x7C56,0x645F, /* Array index: 0x1572 */ 0x7C58,0x645C, /* Array index: 0x1572 */ 0x7C5F,0x645D, /* Array index: 0x1572 */ 0x7C60,0x6446, /* Array index: 0x1572 */ 0x7C64,0x645E, /* Array index: 0x1572 */ 0x7C65,0x6460, /* Array index: 0x1572 */ 0x7C6C,0x6461, /* Array index: 0x1572 */ 0x7C73,0x4A46, /* Array index: 0x1572 */ 0x7C75,0x6462, /* Array index: 0x1572 */ 0x7C7E,0x4C62, /* Array index: 0x1572 */ 0x7C89,0x4A34, /* Array index: 0x1572 */ 0x7C8B,0x3F68, /* Array index: 0x1572 */ 0x7C8D,0x4C30, /* Array index: 0x1572 */ 0x7C90,0x6464, /* Array index: 0x1572 */ 0x7C92,0x4E33, /* Array index: 0x1572 */ 0x7C95,0x4774, /* Array index: 0x1572 */ 0x7C97,0x4146, /* Array index: 0x1572 */ 0x7C98,0x4734, /* Array index: 0x1572 */ 0x7C9B,0x3D4D, /* Array index: 0x1572 */ 0x7C9F,0x3040, /* Array index: 0x1572 */ 0x7CAB,0x6468, /* Array index: 0x1572 */ 0x7CB9,0x646F, /* Array index: 0x1572 */ 0x7CBD,0x6470, /* Array index: 0x1572 */ 0x7CBE,0x403A, /* Array index: 0x1572 */ 0x7CC0,0x6471, /* Array index: 0x1572 */ 0x7CC2,0x6473, /* Array index: 0x1572 */ 0x7CC5,0x6472, /* Array index: 0x1572 */ 0x7CCA,0x3852, /* Array index: 0x1572 */ 0x7CCE,0x4138, /* Array index: 0x1572 */ 0x7CD2,0x6475, /* Array index: 0x1572 */ 0x7CD6,0x457C, /* Array index: 0x1572 */ 0x7CD8,0x6474, /* Array index: 0x1572 */ 0x7CE7,0x4E48, /* Array index: 0x1572 */ 0x7CEF,0x6479, /* Array index: 0x1572 */ 0x7CF2,0x647A, /* Array index: 0x1572 */ 0x7CF4,0x647B, /* Array index: 0x1572 */ 0x7CF6,0x647C, /* Array index: 0x1572 */ 0x7CF8,0x3B65, /* Array index: 0x1572 */ 0x7CFA,0x647D, /* Array index: 0x1572 */ 0x7CFB,0x374F, /* Array index: 0x1572 */ 0x7CFE,0x356A, /* Array index: 0x1572 */ 0x7D00,0x352A, /* Array index: 0x1572 */ 0x7D0A,0x6524, /* Array index: 0x1572 */ 0x7D0B,0x4C66, /* Array index: 0x1572 */ 0x7D0D,0x473C, /* Array index: 0x1572 */ 0x7D10,0x4933, /* Array index: 0x1572 */ 0x7D39,0x3E52, /* Array index: 0x1572 */ 0x7D3A,0x3A30, /* Array index: 0x1572 */ 0x7D3F,0x6529, /* Array index: 0x1572 */ 0x7D56,0x652D, /* Array index: 0x1572 */ 0x7D5B,0x6536, /* Array index: 0x1572 */ 0x7D5E,0x394A, /* Array index: 0x1572 */ 0x7D66,0x356B, /* Array index: 0x1572 */ 0x7D68,0x6530, /* Array index: 0x1572 */ 0x7D6E,0x6531, /* Array index: 0x1572 */ 0x7D79,0x3828, /* Array index: 0x1572 */ 0x7D7D,0x6538, /* Array index: 0x1572 */ 0x7D89,0x6535, /* Array index: 0x1572 */ 0x7D8F,0x6537, /* Array index: 0x1572 */ 0x7D93,0x6534, /* Array index: 0x1572 */ 0x7D9F,0x6546, /* Array index: 0x1572 */ 0x7DA2,0x6542, /* Array index: 0x1572 */ 0x7DA3,0x653C, /* Array index: 0x1572 */ 0x7DB8,0x6545, /* Array index: 0x1572 */ 0x7DC7,0x653E, /* Array index: 0x1572 */ 0x7DCA,0x365B, /* Array index: 0x1572 */ 0x7DCB,0x486C, /* Array index: 0x1572 */ 0x7DCF,0x416D, /* Array index: 0x1572 */ 0x7DD1,0x4E50, /* Array index: 0x1572 */ 0x7DD2,0x3D6F, /* Array index: 0x1572 */ 0x7DD5,0x656E, /* Array index: 0x1572 */ 0x7DD8,0x6548, /* Array index: 0x1572 */ 0x7DE4,0x654A, /* Array index: 0x1572 */ 0x7DE8,0x4A54, /* Array index: 0x1572 */ 0x7DE9,0x344B, /* Array index: 0x1572 */ 0x7DEC,0x4C4B, /* Array index: 0x1572 */ 0x7DEF,0x305E, /* Array index: 0x1572 */ 0x7DF2,0x654D, /* Array index: 0x1572 */ 0x7DF4,0x4E7D, /* Array index: 0x1572 */ 0x7DFB,0x654C, /* Array index: 0x1572 */ 0x7E01,0x316F, /* Array index: 0x1572 */ 0x7E04,0x466C, /* Array index: 0x1572 */ 0x7E05,0x654F, /* Array index: 0x1572 */ 0x7E12,0x6553, /* Array index: 0x1572 */ 0x7E1B,0x477B, /* Array index: 0x1572 */ 0x7E26,0x3D44, /* Array index: 0x1572 */ 0x7E2B,0x4B25, /* Array index: 0x1572 */ 0x7E2E,0x3D4C, /* Array index: 0x1572 */ 0x7E31,0x6554, /* Array index: 0x1572 */ 0x7E32,0x6560, /* Array index: 0x1572 */ 0x7E35,0x655C, /* Array index: 0x1572 */ 0x7E41,0x484B, /* Array index: 0x1572 */ 0x7E43,0x655E, /* Array index: 0x1572 */ 0x7E46,0x6559, /* Array index: 0x1572 */ 0x7E4A,0x4121, /* Array index: 0x1572 */ 0x7E4B,0x3752, /* Array index: 0x1572 */ 0x7E4D,0x3D2B, /* Array index: 0x1572 */ 0x7E6D,0x4B7A, /* Array index: 0x1572 */ 0x7E70,0x372B, /* Array index: 0x1572 */ 0x7E88,0x6572, /* Array index: 0x1572 */ 0x7E89,0x6573, /* Array index: 0x1572 */ 0x7E9B,0x657B, /* Array index: 0x1572 */ 0x7E9C,0x657C, /* Array index: 0x1572 */ 0x7F36,0x344C, /* Array index: 0x1572 */ 0x7F38,0x657D, /* Array index: 0x1572 */ 0x7F3A,0x657E, /* Array index: 0x1572 */ 0x7F45,0x6621, /* Array index: 0x1572 */ 0x7F58,0x6629, /* Array index: 0x1572 */ 0x7F5F,0x662A, /* Array index: 0x1572 */ 0x7F60,0x662B, /* Array index: 0x1572 */ 0x7F6E,0x4356, /* Array index: 0x1572 */ 0x7F70,0x4833, /* Array index: 0x1572 */ 0x7F72,0x3D70, /* Array index: 0x1572 */ 0x7F94,0x6636, /* Array index: 0x1572 */ 0x7F9A,0x6639, /* Array index: 0x1572 */ 0x7F9D,0x6638, /* Array index: 0x1572 */ 0x7F9E,0x6637, /* Array index: 0x1572 */ 0x7FA3,0x663A, /* Array index: 0x1572 */ 0x7FA4,0x3732, /* Array index: 0x1572 */ 0x7FA8,0x4122, /* Array index: 0x1572 */ 0x7FA9,0x3541, /* Array index: 0x1572 */ 0x7FAE,0x663E, /* Array index: 0x1572 */ 0x7FAF,0x663B, /* Array index: 0x1572 */ 0x7FB2,0x663C, /* Array index: 0x1572 */ 0x7FB6,0x663F, /* Array index: 0x1572 */ 0x7FB8,0x6640, /* Array index: 0x1572 */ 0x7FB9,0x663D, /* Array index: 0x1572 */ 0x7FBD,0x3129, /* Array index: 0x1572 */ 0x7FC1,0x3227, /* Array index: 0x1572 */ 0x7FC5,0x6642, /* Array index: 0x1572 */ 0x7FC6,0x6643, /* Array index: 0x1572 */ 0x7FCA,0x6644, /* Array index: 0x1572 */ 0x7FCC,0x4D62, /* Array index: 0x1572 */ 0x7FD2,0x3D2C, /* Array index: 0x1572 */ 0x7FD4,0x6646, /* Array index: 0x1572 */ 0x7FD5,0x6645, /* Array index: 0x1572 */ 0x7FE0,0x3F69, /* Array index: 0x1572 */ 0x7FE1,0x6647, /* Array index: 0x1572 */ 0x7FE6,0x6648, /* Array index: 0x1572 */ 0x7FE9,0x6649, /* Array index: 0x1572 */ 0x7FEB,0x3465, /* Array index: 0x1572 */ 0x7FF0,0x344D, /* Array index: 0x1572 */ 0x7FF3,0x664A, /* Array index: 0x1572 */ 0x7FF9,0x664B, /* Array index: 0x1572 */ 0x7FFB,0x4B5D, /* Array index: 0x1572 */ 0x7FFC,0x4D63, /* Array index: 0x1572 */ 0x800B,0x664F, /* Array index: 0x1572 */ 0x800C,0x3C29, /* Array index: 0x1572 */ 0x8010,0x4251, /* Array index: 0x1572 */ 0x8012,0x6650, /* Array index: 0x1572 */ 0x801C,0x6653, /* Array index: 0x1572 */ 0x8021,0x6654, /* Array index: 0x1572 */ 0x8028,0x6655, /* Array index: 0x1572 */ 0x8033,0x3C2A, /* Array index: 0x1572 */ 0x8036,0x4C6D, /* Array index: 0x1572 */ 0x803B,0x6657, /* Array index: 0x1572 */ 0x803D,0x433F, /* Array index: 0x1572 */ 0x803F,0x6656, /* Array index: 0x1572 */ 0x8046,0x6659, /* Array index: 0x1572 */ 0x804A,0x6658, /* Array index: 0x1572 */ 0x8052,0x665A, /* Array index: 0x1572 */ 0x8056,0x403B, /* Array index: 0x1572 */ 0x8058,0x665B, /* Array index: 0x1572 */ 0x805A,0x665C, /* Array index: 0x1572 */ 0x8068,0x665F, /* Array index: 0x1572 */ 0x8093,0x666B, /* Array index: 0x1572 */ 0x8096,0x3E53, /* Array index: 0x1572 */ 0x8098,0x492A, /* Array index: 0x1572 */ 0x809A,0x666C, /* Array index: 0x1572 */ 0x809B,0x666A, /* Array index: 0x1572 */ 0x809D,0x344E, /* Array index: 0x1572 */ 0x80A1,0x3854, /* Array index: 0x1572 */ 0x80A2,0x3B68, /* Array index: 0x1572 */ 0x80A5,0x486E, /* Array index: 0x1572 */ 0x80BA,0x4759, /* Array index: 0x1572 */ 0x80C3,0x305F, /* Array index: 0x1572 */ 0x80C4,0x6674, /* Array index: 0x1572 */ 0x80C6,0x4340, /* Array index: 0x1572 */ 0x80CC,0x4758, /* Array index: 0x1572 */ 0x80CE,0x425B, /* Array index: 0x1572 */ 0x80D6,0x6676, /* Array index: 0x1572 */ 0x80E1,0x3855, /* Array index: 0x1572 */ 0x80E4,0x307D, /* Array index: 0x1572 */ 0x80E5,0x6671, /* Array index: 0x1572 */ 0x80EF,0x6678, /* Array index: 0x1572 */ 0x80F1,0x6679, /* Array index: 0x1572 */ 0x80F4,0x4639, /* Array index: 0x1572 */ 0x80F8,0x363B, /* Array index: 0x1572 */ 0x80FC,0x6726, /* Array index: 0x1572 */ 0x80FD,0x473D, /* Array index: 0x1572 */ 0x8102,0x3B69, /* Array index: 0x1572 */ 0x811A,0x3553, /* Array index: 0x1572 */ 0x811B,0x667A, /* Array index: 0x1572 */ 0x8123,0x667C, /* Array index: 0x1572 */ 0x8129,0x667B, /* Array index: 0x1572 */ 0x812F,0x667D, /* Array index: 0x1572 */ 0x8131,0x4326, /* Array index: 0x1572 */ 0x8133,0x473E, /* Array index: 0x1572 */ 0x8139,0x4431, /* Array index: 0x1572 */ 0x813E,0x6723, /* Array index: 0x1572 */ 0x8146,0x6722, /* Array index: 0x1572 */ 0x814B,0x667E, /* Array index: 0x1572 */ 0x814E,0x3F55, /* Array index: 0x1572 */ 0x815F,0x6735, /* Array index: 0x1572 */ 0x8165,0x6729, /* Array index: 0x1572 */ 0x8166,0x672A, /* Array index: 0x1572 */ 0x816B,0x3C70, /* Array index: 0x1572 */ 0x816E,0x6728, /* Array index: 0x1572 */ 0x8170,0x3978, /* Array index: 0x1572 */ 0x8171,0x6727, /* Array index: 0x1572 */ 0x8174,0x672B, /* Array index: 0x1572 */ 0x8188,0x672D, /* Array index: 0x1572 */ 0x818A,0x672E, /* Array index: 0x1572 */ 0x818F,0x3951, /* Array index: 0x1572 */ 0x8193,0x6736, /* Array index: 0x1572 */ 0x8195,0x6732, /* Array index: 0x1572 */ 0x819A,0x4966, /* Array index: 0x1572 */ 0x819C,0x4B6C, /* Array index: 0x1572 */ 0x819D,0x4928, /* Array index: 0x1572 */ 0x81A0,0x6731, /* Array index: 0x1572 */ 0x81A3,0x6734, /* Array index: 0x1572 */ 0x81A4,0x6733, /* Array index: 0x1572 */ 0x81A8,0x4B44, /* Array index: 0x1572 */ 0x81A9,0x6737, /* Array index: 0x1572 */ 0x81B0,0x6738, /* Array index: 0x1572 */ 0x81B3,0x4137, /* Array index: 0x1572 */ 0x81B5,0x6739, /* Array index: 0x1572 */ 0x81B8,0x673B, /* Array index: 0x1572 */ 0x81BA,0x673F, /* Array index: 0x1572 */ 0x81C6,0x3232, /* Array index: 0x1572 */ 0x81C8,0x6745, /* Array index: 0x1572 */ 0x81C9,0x6740, /* Array index: 0x1572 */ 0x81CD,0x6741, /* Array index: 0x1572 */ 0x81D1,0x6742, /* Array index: 0x1572 */ 0x81D3,0x4221, /* Array index: 0x1572 */ 0x81DF,0x6747, /* Array index: 0x1572 */ 0x81E0,0x6748, /* Array index: 0x1572 */ 0x81E3,0x3F43, /* Array index: 0x1572 */ 0x81E5,0x3269, /* Array index: 0x1572 */ 0x81E7,0x6749, /* Array index: 0x1572 */ 0x81E8,0x4E57, /* Array index: 0x1572 */ 0x81EA,0x3C2B, /* Array index: 0x1572 */ 0x81ED,0x3D2D, /* Array index: 0x1572 */ 0x81F3,0x3B6A, /* Array index: 0x1572 */ 0x81F4,0x4357, /* Array index: 0x1572 */ 0x8240,0x6759, /* Array index: 0x1572 */ 0x8247,0x447A, /* Array index: 0x1572 */ 0x825D,0x675C, /* Array index: 0x1572 */ 0x825F,0x675E, /* Array index: 0x1572 */ 0x8262,0x6760, /* Array index: 0x1572 */ 0x8264,0x675F, /* Array index: 0x1572 */ 0x8266,0x344F, /* Array index: 0x1572 */ 0x8268,0x6761, /* Array index: 0x1572 */ 0x826A,0x6762, /* Array index: 0x1572 */ 0x826B,0x6763, /* Array index: 0x1572 */ 0x827E,0x6768, /* Array index: 0x1572 */ 0x828B,0x3072, /* Array index: 0x1572 */ 0x828D,0x6769, /* Array index: 0x1572 */ 0x8292,0x676A, /* Array index: 0x1572 */ 0x8299,0x4967, /* Array index: 0x1572 */ 0x829D,0x3C47, /* Array index: 0x1572 */ 0x829F,0x676C, /* Array index: 0x1572 */ 0x82A5,0x3329, /* Array index: 0x1572 */ 0x82A6,0x3032, /* Array index: 0x1572 */ 0x82B8,0x375D, /* Array index: 0x1572 */ 0x82B9,0x365C, /* Array index: 0x1572 */ 0x82BB,0x676D, /* Array index: 0x1572 */ 0x82BD,0x326A, /* Array index: 0x1572 */ 0x82C5,0x3423, /* Array index: 0x1572 */ 0x82D7,0x4944, /* Array index: 0x1572 */ 0x82D9,0x677E, /* Array index: 0x1572 */ 0x82EB,0x4651, /* Array index: 0x1572 */ 0x82F1,0x3151, /* Array index: 0x1572 */ 0x82F3,0x6774, /* Array index: 0x1572 */ 0x82F4,0x6773, /* Array index: 0x1572 */ 0x8309,0x677D, /* Array index: 0x1572 */ 0x830E,0x3754, /* Array index: 0x1572 */ 0x831C,0x302B, /* Array index: 0x1572 */ 0x8323,0x6834, /* Array index: 0x1572 */ 0x8328,0x3071, /* Array index: 0x1572 */ 0x832B,0x682B, /* Array index: 0x1572 */ 0x832F,0x682A, /* Array index: 0x1572 */ 0x8340,0x6826, /* Array index: 0x1572 */ 0x8345,0x6829, /* Array index: 0x1572 */ 0x8349,0x4170, /* Array index: 0x1572 */ 0x834A,0x3755, /* Array index: 0x1572 */ 0x834F,0x3141, /* Array index: 0x1572 */ 0x8350,0x6828, /* Array index: 0x1572 */ 0x8352,0x3953, /* Array index: 0x1572 */ 0x8358,0x4171, /* Array index: 0x1572 */ 0x8373,0x683A, /* Array index: 0x1572 */ 0x8375,0x683B, /* Array index: 0x1572 */ 0x8377,0x3259, /* Array index: 0x1572 */ 0x837B,0x322E, /* Array index: 0x1572 */ 0x837C,0x6838, /* Array index: 0x1572 */ 0x8385,0x682E, /* Array index: 0x1572 */ 0x8387,0x6836, /* Array index: 0x1572 */ 0x8389,0x683D, /* Array index: 0x1572 */ 0x838A,0x6837, /* Array index: 0x1572 */ 0x838E,0x6835, /* Array index: 0x1572 */ 0x8393,0x6776, /* Array index: 0x1572 */ 0x8396,0x6833, /* Array index: 0x1572 */ 0x839A,0x682F, /* Array index: 0x1572 */ 0x83A8,0x683E, /* Array index: 0x1572 */ 0x83AA,0x6830, /* Array index: 0x1572 */ 0x83AB,0x477C, /* Array index: 0x1572 */ 0x83B1,0x4D69, /* Array index: 0x1572 */ 0x83B5,0x6839, /* Array index: 0x1572 */ 0x83BD,0x684F, /* Array index: 0x1572 */ 0x83C1,0x6847, /* Array index: 0x1572 */ 0x83C5,0x3F7B, /* Array index: 0x1572 */ 0x83CA,0x3546, /* Array index: 0x1572 */ 0x83CC,0x365D, /* Array index: 0x1572 */ 0x83CE,0x6842, /* Array index: 0x1572 */ 0x83D3,0x325B, /* Array index: 0x1572 */ 0x83D6,0x3E54, /* Array index: 0x1572 */ 0x83D8,0x6845, /* Array index: 0x1572 */ 0x83DC,0x3A5A, /* Array index: 0x1572 */ 0x83DF,0x4551, /* Array index: 0x1572 */ 0x83E0,0x684A, /* Array index: 0x1572 */ 0x83E9,0x4A6E, /* Array index: 0x1572 */ 0x83EB,0x6841, /* Array index: 0x1572 */ 0x83F7,0x6848, /* Array index: 0x1572 */ 0x83FB,0x6852, /* Array index: 0x1572 */ 0x83FD,0x6843, /* Array index: 0x1572 */ 0x8403,0x6844, /* Array index: 0x1572 */ 0x8404,0x463A, /* Array index: 0x1572 */ 0x8407,0x6849, /* Array index: 0x1572 */ 0x8413,0x6840, /* Array index: 0x1572 */ 0x8420,0x684E, /* Array index: 0x1572 */ 0x8422,0x684D, /* Array index: 0x1572 */ 0x8429,0x476B, /* Array index: 0x1572 */ 0x842A,0x6854, /* Array index: 0x1572 */ 0x842C,0x685F, /* Array index: 0x1572 */ 0x8431,0x337E, /* Array index: 0x1572 */ 0x8435,0x6862, /* Array index: 0x1572 */ 0x8438,0x6850, /* Array index: 0x1572 */ 0x843C,0x6855, /* Array index: 0x1572 */ 0x843D,0x4D6E, /* Array index: 0x1572 */ 0x8446,0x685E, /* Array index: 0x1572 */ 0x8449,0x4D55, /* Array index: 0x1572 */ 0x844E,0x4E2A, /* Array index: 0x1572 */ 0x8457,0x4378, /* Array index: 0x1572 */ 0x845B,0x336B, /* Array index: 0x1572 */ 0x8466,0x3031, /* Array index: 0x1572 */ 0x8475,0x302A, /* Array index: 0x1572 */ 0x8477,0x6858, /* Array index: 0x1572 */ 0x8479,0x6861, /* Array index: 0x1572 */ 0x847A,0x4978, /* Array index: 0x1572 */ 0x8482,0x685C, /* Array index: 0x1572 */ 0x8484,0x6857, /* Array index: 0x1572 */ 0x848B,0x3E55, /* Array index: 0x1572 */ 0x8490,0x3D2F, /* Array index: 0x1572 */ 0x8494,0x3C2C, /* Array index: 0x1572 */ 0x8499,0x4C58, /* Array index: 0x1572 */ 0x849C,0x4947, /* Array index: 0x1572 */ 0x849F,0x6867, /* Array index: 0x1572 */ 0x84A1,0x6870, /* Array index: 0x1572 */ 0x84AD,0x685A, /* Array index: 0x1572 */ 0x84B2,0x3377, /* Array index: 0x1572 */ 0x84BF,0x6866, /* Array index: 0x1572 */ 0x84C1,0x686D, /* Array index: 0x1572 */ 0x84C4,0x435F, /* Array index: 0x1572 */ 0x84C6,0x686E, /* Array index: 0x1572 */ 0x84D6,0x686F, /* Array index: 0x1572 */ 0x84D9,0x6868, /* Array index: 0x1572 */ 0x84DA,0x686B, /* Array index: 0x1572 */ 0x84EC,0x4B29, /* Array index: 0x1572 */ 0x84EE,0x4F21, /* Array index: 0x1572 */ 0x84F4,0x6873, /* Array index: 0x1572 */ 0x84FC,0x687A, /* Array index: 0x1572 */ 0x84FF,0x6872, /* Array index: 0x1572 */ 0x8500,0x3C43, /* Array index: 0x1572 */ 0x8506,0x6851, /* Array index: 0x1572 */ 0x851F,0x6877, /* Array index: 0x1572 */ 0x8521,0x6871, /* Array index: 0x1572 */ 0x8526,0x4455, /* Array index: 0x1572 */ 0x852C,0x6876, /* Array index: 0x1572 */ 0x852D,0x307E, /* Array index: 0x1572 */ 0x8535,0x4222, /* Array index: 0x1572 */ 0x853D,0x4A43, /* Array index: 0x1572 */ 0x8540,0x687B, /* Array index: 0x1572 */ 0x8541,0x6921, /* Array index: 0x1572 */ 0x8543,0x4859, /* Array index: 0x1572 */ 0x854E,0x363E, /* Array index: 0x1572 */ 0x8555,0x6924, /* Array index: 0x1572 */ 0x8557,0x4979, /* Array index: 0x1572 */ 0x8558,0x687D, /* Array index: 0x1572 */ 0x855A,0x6856, /* Array index: 0x1572 */ 0x8563,0x687C, /* Array index: 0x1572 */ 0x856D,0x692B, /* Array index: 0x1572 */ 0x8577,0x6931, /* Array index: 0x1572 */ 0x857E,0x6932, /* Array index: 0x1572 */ 0x8580,0x6925, /* Array index: 0x1572 */ 0x8584,0x4776, /* Array index: 0x1572 */ 0x8587,0x692F, /* Array index: 0x1572 */ 0x8588,0x6927, /* Array index: 0x1572 */ 0x858A,0x6929, /* Array index: 0x1572 */ 0x8590,0x6933, /* Array index: 0x1572 */ 0x8591,0x6928, /* Array index: 0x1572 */ 0x8594,0x692C, /* Array index: 0x1572 */ 0x8597,0x3172, /* Array index: 0x1572 */ 0x8599,0x4665, /* Array index: 0x1572 */ 0x859B,0x692D, /* Array index: 0x1572 */ 0x859C,0x6930, /* Array index: 0x1572 */ 0x85A4,0x6926, /* Array index: 0x1572 */ 0x85B9,0x6937, /* Array index: 0x1572 */ 0x85BA,0x6935, /* Array index: 0x1572 */ 0x85C1,0x4F4E, /* Array index: 0x1572 */ 0x85C9,0x6934, /* Array index: 0x1572 */ 0x85CD,0x4D75, /* Array index: 0x1572 */ 0x85CF,0x6936, /* Array index: 0x1572 */ 0x85D0,0x6938, /* Array index: 0x1572 */ 0x85D5,0x6939, /* Array index: 0x1572 */ 0x85DC,0x693C, /* Array index: 0x1572 */ 0x85DD,0x693A, /* Array index: 0x1572 */ 0x85E4,0x4623, /* Array index: 0x1572 */ 0x85E5,0x693B, /* Array index: 0x1572 */ 0x85E9,0x484D, /* Array index: 0x1572 */ 0x85EA,0x692E, /* Array index: 0x1572 */ 0x85FE,0x6941, /* Array index: 0x1572 */ 0x8602,0x6922, /* Array index: 0x1572 */ 0x8606,0x6943, /* Array index: 0x1572 */ 0x8607,0x4149, /* Array index: 0x1572 */ 0x860A,0x693E, /* Array index: 0x1572 */ 0x860B,0x6940, /* Array index: 0x1572 */ 0x8613,0x693F, /* Array index: 0x1572 */ 0x8616,0x5D31, /* Array index: 0x1572 */ 0x8617,0x5D22, /* Array index: 0x1572 */ 0x861A,0x6945, /* Array index: 0x1572 */ 0x8622,0x6944, /* Array index: 0x1572 */ 0x862D,0x4D76, /* Array index: 0x1572 */ 0x862F,0x623C, /* Array index: 0x1572 */ 0x8630,0x6946, /* Array index: 0x1572 */ 0x863F,0x6947, /* Array index: 0x1572 */ 0x864D,0x6948, /* Array index: 0x1572 */ 0x864E,0x3857, /* Array index: 0x1572 */ 0x8650,0x3554, /* Array index: 0x1572 */ 0x8654,0x694A, /* Array index: 0x1572 */ 0x8655,0x515D, /* Array index: 0x1572 */ 0x865A,0x3575, /* Array index: 0x1572 */ 0x865C,0x4E3A, /* Array index: 0x1572 */ 0x865E,0x3673, /* Array index: 0x1572 */ 0x865F,0x694B, /* Array index: 0x1572 */ 0x8667,0x694C, /* Array index: 0x1572 */ 0x866B,0x436E, /* Array index: 0x1572 */ 0x8671,0x694D, /* Array index: 0x1572 */ 0x8679,0x467A, /* Array index: 0x1572 */ 0x867B,0x303A, /* Array index: 0x1572 */ 0x8693,0x694E, /* Array index: 0x1572 */ 0x8695,0x3B3D, /* Array index: 0x1572 */ 0x86A3,0x694F, /* Array index: 0x1572 */ 0x86A4,0x4742, /* Array index: 0x1572 */ 0x86AF,0x6955, /* Array index: 0x1572 */ 0x86B0,0x6958, /* Array index: 0x1572 */ 0x86B6,0x6954, /* Array index: 0x1572 */ 0x86C4,0x6956, /* Array index: 0x1572 */ 0x86C6,0x6957, /* Array index: 0x1572 */ 0x86C7,0x3C58, /* Array index: 0x1572 */ 0x86C9,0x6959, /* Array index: 0x1572 */ 0x86CB,0x4341, /* Array index: 0x1572 */ 0x86CD,0x3756, /* Array index: 0x1572 */ 0x86CE,0x3342, /* Array index: 0x1572 */ 0x86D4,0x695C, /* Array index: 0x1572 */ 0x86D9,0x333F, /* Array index: 0x1572 */ 0x86DB,0x6961, /* Array index: 0x1572 */ 0x86DE,0x695D, /* Array index: 0x1572 */ 0x86DF,0x6960, /* Array index: 0x1572 */ 0x86E4,0x483A, /* Array index: 0x1572 */ 0x86E9,0x695E, /* Array index: 0x1572 */ 0x86F8,0x427D, /* Array index: 0x1572 */ 0x86F9,0x696C, /* Array index: 0x1572 */ 0x86FB,0x6968, /* Array index: 0x1572 */ 0x86FE,0x326B, /* Array index: 0x1572 */ 0x8700,0x6966, /* Array index: 0x1572 */ 0x8702,0x4B2A, /* Array index: 0x1572 */ 0x8703,0x6967, /* Array index: 0x1572 */ 0x870D,0x696B, /* Array index: 0x1572 */ 0x8711,0x6969, /* Array index: 0x1572 */ 0x8712,0x6963, /* Array index: 0x1572 */ 0x8718,0x4358, /* Array index: 0x1572 */ 0x871A,0x6974, /* Array index: 0x1572 */ 0x871C,0x4C2A, /* Array index: 0x1572 */ 0x8725,0x6972, /* Array index: 0x1572 */ 0x8729,0x6973, /* Array index: 0x1572 */ 0x8734,0x696E, /* Array index: 0x1572 */ 0x8737,0x6970, /* Array index: 0x1572 */ 0x873B,0x6971, /* Array index: 0x1572 */ 0x873F,0x696F, /* Array index: 0x1572 */ 0x8749,0x4066, /* Array index: 0x1572 */ 0x874B,0x4F39, /* Array index: 0x1572 */ 0x874C,0x6978, /* Array index: 0x1572 */ 0x874E,0x6979, /* Array index: 0x1572 */ 0x8753,0x6A21, /* Array index: 0x1572 */ 0x8755,0x3F2A, /* Array index: 0x1572 */ 0x8757,0x697B, /* Array index: 0x1572 */ 0x8759,0x697E, /* Array index: 0x1572 */ 0x875F,0x6976, /* Array index: 0x1572 */ 0x8760,0x6975, /* Array index: 0x1572 */ 0x8763,0x6A22, /* Array index: 0x1572 */ 0x8766,0x325C, /* Array index: 0x1572 */ 0x8768,0x697C, /* Array index: 0x1572 */ 0x876A,0x6A23, /* Array index: 0x1572 */ 0x876E,0x697D, /* Array index: 0x1572 */ 0x8774,0x697A, /* Array index: 0x1572 */ 0x8776,0x4433, /* Array index: 0x1572 */ 0x8778,0x6977, /* Array index: 0x1572 */ 0x877F,0x4768, /* Array index: 0x1572 */ 0x8782,0x6A27, /* Array index: 0x1572 */ 0x878D,0x4D3B, /* Array index: 0x1572 */ 0x879F,0x6A26, /* Array index: 0x1572 */ 0x87A2,0x6A25, /* Array index: 0x1572 */ 0x87AB,0x6A2E, /* Array index: 0x1572 */ 0x87AF,0x6A28, /* Array index: 0x1572 */ 0x87B3,0x6A30, /* Array index: 0x1572 */ 0x87BA,0x4D66, /* Array index: 0x1572 */ 0x87BB,0x6A33, /* Array index: 0x1572 */ 0x87BD,0x6A2A, /* Array index: 0x1572 */ 0x87C0,0x6A2B, /* Array index: 0x1572 */ 0x87C4,0x6A2F, /* Array index: 0x1572 */ 0x87C6,0x6A32, /* Array index: 0x1572 */ 0x87C7,0x6A31, /* Array index: 0x1572 */ 0x87CB,0x6A29, /* Array index: 0x1572 */ 0x87D0,0x6A2C, /* Array index: 0x1572 */ 0x87D2,0x6A3D, /* Array index: 0x1572 */ 0x87E0,0x6A36, /* Array index: 0x1572 */ 0x87EF,0x6A34, /* Array index: 0x1572 */ 0x87F2,0x6A35, /* Array index: 0x1572 */ 0x87F6,0x6A3A, /* Array index: 0x1572 */ 0x87F7,0x6A3B, /* Array index: 0x1572 */ 0x87F9,0x332A, /* Array index: 0x1572 */ 0x87FB,0x3542, /* Array index: 0x1572 */ 0x87FE,0x6A39, /* Array index: 0x1572 */ 0x8805,0x6A24, /* Array index: 0x1572 */ 0x8815,0x6A40, /* Array index: 0x1572 */ 0x8816,0x6A3F, /* Array index: 0x1572 */ 0x8827,0x6A46, /* Array index: 0x1572 */ 0x8831,0x6A43, /* Array index: 0x1572 */ 0x8836,0x6A44, /* Array index: 0x1572 */ 0x8839,0x6A45, /* Array index: 0x1572 */ 0x883B,0x6A47, /* Array index: 0x1572 */ 0x8840,0x376C, /* Array index: 0x1572 */ 0x8842,0x6A49, /* Array index: 0x1572 */ 0x8844,0x6A48, /* Array index: 0x1572 */ 0x8846,0x3D30, /* Array index: 0x1572 */ 0x884C,0x3954, /* Array index: 0x1572 */ 0x884D,0x5E27, /* Array index: 0x1572 */ 0x8852,0x6A4A, /* Array index: 0x1572 */ 0x8853,0x3D51, /* Array index: 0x1572 */ 0x8857,0x3339, /* Array index: 0x1572 */ 0x8859,0x6A4B, /* Array index: 0x1572 */ 0x885B,0x3152, /* Array index: 0x1572 */ 0x8868,0x493D, /* Array index: 0x1572 */ 0x886B,0x6A4E, /* Array index: 0x1572 */ 0x8870,0x3F6A, /* Array index: 0x1572 */ 0x8872,0x6A55, /* Array index: 0x1572 */ 0x8875,0x6A52, /* Array index: 0x1572 */ 0x8877,0x436F, /* Array index: 0x1572 */ 0x8888,0x3736, /* Array index: 0x1572 */ 0x888B,0x425E, /* Array index: 0x1572 */ 0x888D,0x6A5C, /* Array index: 0x1572 */ 0x8892,0x6A58, /* Array index: 0x1572 */ 0x8896,0x4235, /* Array index: 0x1572 */ 0x8897,0x6A57, /* Array index: 0x1572 */ 0x8899,0x6A5A, /* Array index: 0x1572 */ 0x889E,0x6A51, /* Array index: 0x1572 */ 0x88A2,0x6A5B, /* Array index: 0x1572 */ 0x88A4,0x6A5D, /* Array index: 0x1572 */ 0x88AB,0x486F, /* Array index: 0x1572 */ 0x88AE,0x6A59, /* Array index: 0x1572 */ 0x88B0,0x6A5E, /* Array index: 0x1572 */ 0x88B1,0x6A60, /* Array index: 0x1572 */ 0x88B4,0x3853, /* Array index: 0x1572 */ 0x88B5,0x6A54, /* Array index: 0x1572 */ 0x88B7,0x3041, /* Array index: 0x1572 */ 0x88CF,0x4E22, /* Array index: 0x1572 */ 0x88D4,0x6A63, /* Array index: 0x1572 */ 0x88D5,0x4D35, /* Array index: 0x1572 */ 0x88D8,0x6A64, /* Array index: 0x1572 */ 0x88D9,0x6A65, /* Array index: 0x1572 */ 0x88DC,0x4A64, /* Array index: 0x1572 */ 0x88DD,0x6A66, /* Array index: 0x1572 */ 0x88DF,0x3A40, /* Array index: 0x1572 */ 0x88E1,0x4E23, /* Array index: 0x1572 */ 0x88E8,0x6A6B, /* Array index: 0x1572 */ 0x8902,0x6A68, /* Array index: 0x1572 */ 0x8904,0x6A6D, /* Array index: 0x1572 */ 0x8907,0x4A23, /* Array index: 0x1572 */ 0x890A,0x6A6F, /* Array index: 0x1572 */ 0x890C,0x6A6E, /* Array index: 0x1572 */ 0x8910,0x336C, /* Array index: 0x1572 */ 0x8912,0x4B2B, /* Array index: 0x1572 */ 0x8913,0x6A70, /* Array index: 0x1572 */ 0x891D,0x6A7C, /* Array index: 0x1572 */ 0x891E,0x6A72, /* Array index: 0x1572 */ 0x8925,0x6A73, /* Array index: 0x1572 */ 0x892A,0x6A74, /* Array index: 0x1572 */ 0x892B,0x6A75, /* Array index: 0x1572 */ 0x8936,0x6A79, /* Array index: 0x1572 */ 0x8938,0x6A7A, /* Array index: 0x1572 */ 0x893B,0x6A78, /* Array index: 0x1572 */ 0x8941,0x6A76, /* Array index: 0x1572 */ 0x8943,0x6A71, /* Array index: 0x1572 */ 0x8944,0x6A77, /* Array index: 0x1572 */ 0x894C,0x6A7B, /* Array index: 0x1572 */ 0x894D,0x7037, /* Array index: 0x1572 */ 0x8956,0x3228, /* Array index: 0x1572 */ 0x8964,0x6B22, /* Array index: 0x1572 */ 0x8966,0x6B21, /* Array index: 0x1572 */ 0x896A,0x6B24, /* Array index: 0x1572 */ 0x896D,0x6B23, /* Array index: 0x1572 */ 0x896F,0x6B25, /* Array index: 0x1572 */ 0x8972,0x3D31, /* Array index: 0x1572 */ 0x8974,0x6B26, /* Array index: 0x1572 */ 0x8977,0x6B27, /* Array index: 0x1572 */ 0x897E,0x6B28, /* Array index: 0x1572 */ 0x897F,0x403E, /* Array index: 0x1572 */ 0x8981,0x4D57, /* Array index: 0x1572 */ 0x8983,0x6B29, /* Array index: 0x1572 */ 0x898F,0x352C, /* Array index: 0x1572 */ 0x8993,0x6B2C, /* Array index: 0x1572 */ 0x89A1,0x6B2E, /* Array index: 0x1572 */ 0x89AF,0x6B32, /* Array index: 0x1572 */ 0x89B2,0x6B33, /* Array index: 0x1572 */ 0x89B3,0x3451, /* Array index: 0x1572 */ 0x89BA,0x6B34, /* Array index: 0x1572 */ 0x89BD,0x6B35, /* Array index: 0x1572 */ 0x89BF,0x6B36, /* Array index: 0x1572 */ 0x89C0,0x6B37, /* Array index: 0x1572 */ 0x89D2,0x3351, /* Array index: 0x1572 */ 0x89DA,0x6B38, /* Array index: 0x1572 */ 0x89DC,0x6B39, /* Array index: 0x1572 */ 0x89DD,0x6B3A, /* Array index: 0x1572 */ 0x89E3,0x3272, /* Array index: 0x1572 */ 0x89E6,0x3F28, /* Array index: 0x1572 */ 0x89E7,0x6B3B, /* Array index: 0x1572 */ 0x89F4,0x6B3C, /* Array index: 0x1572 */ 0x89F8,0x6B3D, /* Array index: 0x1572 */ 0x8A00,0x3840, /* Array index: 0x1572 */ 0x8A02,0x447B, /* Array index: 0x1572 */ 0x8A03,0x6B3E, /* Array index: 0x1572 */ 0x8A08,0x3757, /* Array index: 0x1572 */ 0x8A0A,0x3F56, /* Array index: 0x1572 */ 0x8A0C,0x6B41, /* Array index: 0x1572 */ 0x8A0E,0x4624, /* Array index: 0x1572 */ 0x8A10,0x6B40, /* Array index: 0x1572 */ 0x8A13,0x3731, /* Array index: 0x1572 */ 0x8A1B,0x6B42, /* Array index: 0x1572 */ 0x8A1D,0x6B43, /* Array index: 0x1572 */ 0x8A1F,0x3E59, /* Array index: 0x1572 */ 0x8A23,0x376D, /* Array index: 0x1572 */ 0x8A25,0x6B44, /* Array index: 0x1572 */ 0x8A2A,0x4B2C, /* Array index: 0x1572 */ 0x8A2D,0x405F, /* Array index: 0x1572 */ 0x8A31,0x3576, /* Array index: 0x1572 */ 0x8A33,0x4C75, /* Array index: 0x1572 */ 0x8A34,0x414A, /* Array index: 0x1572 */ 0x8A36,0x6B45, /* Array index: 0x1572 */ 0x8A41,0x6B46, /* Array index: 0x1572 */ 0x8A46,0x6B49, /* Array index: 0x1572 */ 0x8A48,0x6B4A, /* Array index: 0x1572 */ 0x8A5B,0x6B47, /* Array index: 0x1572 */ 0x8A5E,0x3B6C, /* Array index: 0x1572 */ 0x8A60,0x3153, /* Array index: 0x1572 */ 0x8A62,0x6B4E, /* Array index: 0x1572 */ 0x8A63,0x3758, /* Array index: 0x1572 */ 0x8A66,0x3B6E, /* Array index: 0x1572 */ 0x8A7C,0x6B4B, /* Array index: 0x1572 */ 0x8A82,0x6B50, /* Array index: 0x1572 */ 0x8A84,0x6B51, /* Array index: 0x1572 */ 0x8A85,0x6B4F, /* Array index: 0x1572 */ 0x8A87,0x3858, /* Array index: 0x1572 */ 0x8A89,0x4D40, /* Array index: 0x1572 */ 0x8A8C,0x3B6F, /* Array index: 0x1572 */ 0x8A8D,0x4727, /* Array index: 0x1572 */ 0x8A91,0x6B54, /* Array index: 0x1572 */ 0x8A93,0x4040, /* Array index: 0x1572 */ 0x8A95,0x4342, /* Array index: 0x1572 */ 0x8A98,0x4D36, /* Array index: 0x1572 */ 0x8A9A,0x6B57, /* Array index: 0x1572 */ 0x8A9E,0x386C, /* Array index: 0x1572 */ 0x8AAC,0x4062, /* Array index: 0x1572 */ 0x8AAD,0x4649, /* Array index: 0x1572 */ 0x8AB0,0x432F, /* Array index: 0x1572 */ 0x8AB2,0x325D, /* Array index: 0x1572 */ 0x8AB9,0x4870, /* Array index: 0x1572 */ 0x8ABC,0x3543, /* Array index: 0x1572 */ 0x8ABF,0x4434, /* Array index: 0x1572 */ 0x8AC2,0x6B5B, /* Array index: 0x1572 */ 0x8AC4,0x6B59, /* Array index: 0x1572 */ 0x8AC7,0x434C, /* Array index: 0x1572 */ 0x8AD2,0x4E4A, /* Array index: 0x1572 */ 0x8AD6,0x4F40, /* Array index: 0x1572 */ 0x8AEB,0x6B5D, /* Array index: 0x1572 */ 0x8AED,0x4D21, /* Array index: 0x1572 */ 0x8AEE,0x3B70, /* Array index: 0x1572 */ 0x8AF1,0x6B61, /* Array index: 0x1572 */ 0x8AF3,0x6B5E, /* Array index: 0x1572 */ 0x8AF7,0x6B65, /* Array index: 0x1572 */ 0x8AF8,0x3D74, /* Array index: 0x1572 */ 0x8AFA,0x3841, /* Array index: 0x1572 */ 0x8B07,0x6B69, /* Array index: 0x1572 */ 0x8B0C,0x6B68, /* Array index: 0x1572 */ 0x8B0E,0x4666, /* Array index: 0x1572 */ 0x8B10,0x6B6D, /* Array index: 0x1572 */ 0x8B14,0x6B62, /* Array index: 0x1572 */ 0x8B26,0x6B72, /* Array index: 0x1572 */ 0x8B28,0x6B75, /* Array index: 0x1572 */ 0x8B2B,0x6B73, /* Array index: 0x1572 */ 0x8B2C,0x4935, /* Array index: 0x1572 */ 0x8B33,0x6B70, /* Array index: 0x1572 */ 0x8B39,0x3660, /* Array index: 0x1572 */ 0x8B3E,0x6B74, /* Array index: 0x1572 */ 0x8B41,0x6B76, /* Array index: 0x1572 */ 0x8B49,0x6B7A, /* Array index: 0x1572 */ 0x8B4C,0x6B77, /* Array index: 0x1572 */ 0x8B4E,0x6B79, /* Array index: 0x1572 */ 0x8B4F,0x6B78, /* Array index: 0x1572 */ 0x8B56,0x6B7B, /* Array index: 0x1572 */ 0x8B5F,0x6C21, /* Array index: 0x1572 */ 0x8B66,0x3759, /* Array index: 0x1572 */ 0x8B77,0x386E, /* Array index: 0x1572 */ 0x8B7D,0x6C25, /* Array index: 0x1572 */ 0x8B80,0x6C26, /* Array index: 0x1572 */ 0x8B83,0x3B3E, /* Array index: 0x1572 */ 0x8B8A,0x5A4E, /* Array index: 0x1572 */ 0x8B8C,0x6C27, /* Array index: 0x1572 */ 0x8B8E,0x6C28, /* Array index: 0x1572 */ 0x8B90,0x3D32, /* Array index: 0x1572 */ 0x8B92,0x6C29, /* Array index: 0x1572 */ 0x8B93,0x6C2A, /* Array index: 0x1572 */ 0x8B96,0x6C2B, /* Array index: 0x1572 */ 0x8B99,0x6C2C, /* Array index: 0x1572 */ 0x8B9A,0x6C2D, /* Array index: 0x1572 */ 0x8C37,0x432B, /* Array index: 0x1572 */ 0x8C3A,0x6C2E, /* Array index: 0x1572 */ 0x8C3F,0x6C30, /* Array index: 0x1572 */ 0x8C41,0x6C2F, /* Array index: 0x1572 */ 0x8C46,0x4626, /* Array index: 0x1572 */ 0x8C48,0x6C31, /* Array index: 0x1572 */ 0x8C4A,0x4B2D, /* Array index: 0x1572 */ 0x8C4C,0x6C32, /* Array index: 0x1572 */ 0x8C4E,0x6C33, /* Array index: 0x1572 */ 0x8C50,0x6C34, /* Array index: 0x1572 */ 0x8C55,0x6C35, /* Array index: 0x1572 */ 0x8C5A,0x465A, /* Array index: 0x1572 */ 0x8C61,0x3E5D, /* Array index: 0x1572 */ 0x8C62,0x6C36, /* Array index: 0x1572 */ 0x8C82,0x6C3A, /* Array index: 0x1572 */ 0x8C85,0x6C3C, /* Array index: 0x1572 */ 0x8C94,0x6C40, /* Array index: 0x1572 */ 0x8C98,0x6C42, /* Array index: 0x1572 */ 0x8CD1,0x4678, /* Array index: 0x1572 */ 0x8CD3,0x4950, /* Array index: 0x1572 */ 0x8CEA,0x3C41, /* Array index: 0x1572 */ 0x8CED,0x4552, /* Array index: 0x1572 */ 0x8D64,0x4056, /* Array index: 0x1572 */ 0x8D66,0x3C4F, /* Array index: 0x1572 */ 0x8D67,0x6C5F, /* Array index: 0x1572 */ 0x8D6B,0x3352, /* Array index: 0x1572 */ 0x8D6D,0x6C60, /* Array index: 0x1572 */ 0x8D77,0x352F, /* Array index: 0x1572 */ 0x8D81,0x6C63, /* Array index: 0x1572 */ 0x8D85,0x4436, /* Array index: 0x1572 */ 0x8D8A,0x315B, /* Array index: 0x1572 */ 0x8D99,0x6C64, /* Array index: 0x1572 */ 0x8DA3,0x3C71, /* Array index: 0x1572 */ 0x8DA8,0x3F76, /* Array index: 0x1572 */ 0x8DB3,0x422D, /* Array index: 0x1572 */ 0x8DBA,0x6C67, /* Array index: 0x1572 */ 0x8DBE,0x6C66, /* Array index: 0x1572 */ 0x8DC2,0x6C65, /* Array index: 0x1572 */ 0x8DCB,0x6C6D, /* Array index: 0x1572 */ 0x8DCC,0x6C6B, /* Array index: 0x1572 */ 0x8DCF,0x6C68, /* Array index: 0x1572 */ 0x8DD6,0x6C6A, /* Array index: 0x1572 */ 0x8DDA,0x6C69, /* Array index: 0x1572 */ 0x8DDB,0x6C6C, /* Array index: 0x1572 */ 0x8DDD,0x3577, /* Array index: 0x1572 */ 0x8DDF,0x6C70, /* Array index: 0x1572 */ 0x8DE1,0x4057, /* Array index: 0x1572 */ 0x8DE3,0x6C71, /* Array index: 0x1572 */ 0x8DE8,0x3859, /* Array index: 0x1572 */ 0x8DEA,0x6C6E, /* Array index: 0x1572 */ 0x8DEB,0x6C6F, /* Array index: 0x1572 */ 0x8DEF,0x4F29, /* Array index: 0x1572 */ 0x8DF3,0x4437, /* Array index: 0x1572 */ 0x8DF5,0x4129, /* Array index: 0x1572 */ 0x8DFC,0x6C72, /* Array index: 0x1572 */ 0x8DFF,0x6C75, /* Array index: 0x1572 */ 0x8E0F,0x4627, /* Array index: 0x1572 */ 0x8E10,0x6C78, /* Array index: 0x1572 */ 0x8E2A,0x6D29, /* Array index: 0x1572 */ 0x8E30,0x6C7C, /* Array index: 0x1572 */ 0x8E34,0x6C7D, /* Array index: 0x1572 */ 0x8E35,0x6C7B, /* Array index: 0x1572 */ 0x8E42,0x6C7A, /* Array index: 0x1572 */ 0x8E44,0x447D, /* Array index: 0x1572 */ 0x8E50,0x6D24, /* Array index: 0x1572 */ 0x8E55,0x6D2B, /* Array index: 0x1572 */ 0x8E59,0x6D26, /* Array index: 0x1572 */ 0x8E5F,0x4058, /* Array index: 0x1572 */ 0x8E60,0x6D28, /* Array index: 0x1572 */ 0x8E63,0x6D2A, /* Array index: 0x1572 */ 0x8E64,0x6D27, /* Array index: 0x1572 */ 0x8E72,0x6D2D, /* Array index: 0x1572 */ 0x8E74,0x3D33, /* Array index: 0x1572 */ 0x8E76,0x6D2C, /* Array index: 0x1572 */ 0x8E7C,0x6D2E, /* Array index: 0x1572 */ 0x8E81,0x6D2F, /* Array index: 0x1572 */ 0x8E84,0x6D32, /* Array index: 0x1572 */ 0x8E85,0x6D31, /* Array index: 0x1572 */ 0x8E87,0x6D30, /* Array index: 0x1572 */ 0x8E8A,0x6D34, /* Array index: 0x1572 */ 0x8E8B,0x6D33, /* Array index: 0x1572 */ 0x8E8D,0x4C76, /* Array index: 0x1572 */ 0x8E91,0x6D36, /* Array index: 0x1572 */ 0x8E93,0x6D35, /* Array index: 0x1572 */ 0x8E94,0x6D37, /* Array index: 0x1572 */ 0x8E99,0x6D38, /* Array index: 0x1572 */ 0x8EA1,0x6D3A, /* Array index: 0x1572 */ 0x8EBE,0x6D3F, /* Array index: 0x1572 */ 0x8EC5,0x6D40, /* Array index: 0x1572 */ 0x8EC6,0x6D3D, /* Array index: 0x1572 */ 0x8ED2,0x382E, /* Array index: 0x1572 */ 0x8EDB,0x6D43, /* Array index: 0x1572 */ 0x8EDF,0x4670, /* Array index: 0x1572 */ 0x8EE2,0x453E, /* Array index: 0x1572 */ 0x8EE3,0x6D44, /* Array index: 0x1572 */ 0x8EEB,0x6D47, /* Array index: 0x1572 */ 0x8EF8,0x3C34, /* Array index: 0x1572 */ 0x8F03,0x3353, /* Array index: 0x1572 */ 0x8F05,0x6D4A, /* Array index: 0x1572 */ 0x8F09,0x3A5C, /* Array index: 0x1572 */ 0x8F0A,0x6D49, /* Array index: 0x1572 */ 0x8F0C,0x6D52, /* Array index: 0x1572 */ 0x8F26,0x6D53, /* Array index: 0x1572 */ 0x8F29,0x475A, /* Array index: 0x1572 */ 0x8F2A,0x4E58, /* Array index: 0x1572 */ 0x8F2F,0x3D34, /* Array index: 0x1572 */ 0x8F33,0x6D54, /* Array index: 0x1572 */ 0x8F38,0x4D22, /* Array index: 0x1572 */ 0x8F39,0x6D56, /* Array index: 0x1572 */ 0x8F3B,0x6D55, /* Array index: 0x1572 */ 0x8F3E,0x6D59, /* Array index: 0x1572 */ 0x8F3F,0x4D41, /* Array index: 0x1572 */ 0x8F49,0x6D5B, /* Array index: 0x1572 */ 0x8F57,0x6D5E, /* Array index: 0x1572 */ 0x8F5C,0x6D5F, /* Array index: 0x1572 */ 0x8FA3,0x6D65, /* Array index: 0x1572 */ 0x8FA7,0x5221, /* Array index: 0x1572 */ 0x8FA8,0x517E, /* Array index: 0x1572 */ 0x8FB7,0x6D68, /* Array index: 0x1572 */ 0x8FBF,0x4329, /* Array index: 0x1572 */ 0x8FC2,0x312A, /* Array index: 0x1572 */ 0x8FC4,0x4B78, /* Array index: 0x1572 */ 0x8FC5,0x3F57, /* Array index: 0x1572 */ 0x8FCE,0x375E, /* Array index: 0x1572 */ 0x8FD1,0x3661, /* Array index: 0x1572 */ 0x8FD4,0x4A56, /* Array index: 0x1572 */ 0x8FDA,0x6D69, /* Array index: 0x1572 */ 0x8FE2,0x6D6B, /* Array index: 0x1572 */ 0x8FF4,0x6D6F, /* Array index: 0x1572 */ 0x8FFD,0x4449, /* Array index: 0x1572 */ 0x9000,0x4260, /* Array index: 0x1572 */ 0x9001,0x4177, /* Array index: 0x1572 */ 0x9003,0x4628, /* Array index: 0x1572 */ 0x9005,0x6D70, /* Array index: 0x1572 */ 0x9006,0x3555, /* Array index: 0x1572 */ 0x9027,0x6D7A, /* Array index: 0x1572 */ 0x902E,0x4261, /* Array index: 0x1572 */ 0x9031,0x3D35, /* Array index: 0x1572 */ 0x9032,0x3F4A, /* Array index: 0x1572 */ 0x903C,0x492F, /* Array index: 0x1572 */ 0x903E,0x6E27, /* Array index: 0x1572 */ 0x9041,0x465B, /* Array index: 0x1572 */ 0x9042,0x3F6B, /* Array index: 0x1572 */ 0x9045,0x4359, /* Array index: 0x1572 */ 0x905C,0x423D, /* Array index: 0x1572 */ 0x905E,0x6E2A, /* Array index: 0x1572 */ 0x9060,0x3173, /* Array index: 0x1572 */ 0x9061,0x414C, /* Array index: 0x1572 */ 0x9063,0x382F, /* Array index: 0x1572 */ 0x9065,0x4D5A, /* Array index: 0x1572 */ 0x9068,0x6E2B, /* Array index: 0x1572 */ 0x9069,0x452C, /* Array index: 0x1572 */ 0x9072,0x6E2F, /* Array index: 0x1572 */ 0x9087,0x6D6E, /* Array index: 0x1572 */ 0x9089,0x6E35, /* Array index: 0x1572 */ 0x908A,0x6E34, /* Array index: 0x1572 */ 0x908F,0x6E36, /* Array index: 0x1572 */ 0x9091,0x4D38, /* Array index: 0x1572 */ 0x90A3,0x4661, /* Array index: 0x1572 */ 0x90A6,0x4B2E, /* Array index: 0x1572 */ 0x90A8,0x6E37, /* Array index: 0x1572 */ 0x90AA,0x3C59, /* Array index: 0x1572 */ 0x90AF,0x6E38, /* Array index: 0x1572 */ 0x90B1,0x6E39, /* Array index: 0x1572 */ 0x90B5,0x6E3A, /* Array index: 0x1572 */ 0x90B8,0x4521, /* Array index: 0x1572 */ 0x90C1,0x306A, /* Array index: 0x1572 */ 0x90CA,0x3959, /* Array index: 0x1572 */ 0x90CE,0x4F3A, /* Array index: 0x1572 */ 0x90DB,0x6E3E, /* Array index: 0x1572 */ 0x90E1,0x3734, /* Array index: 0x1572 */ 0x90E2,0x6E3B, /* Array index: 0x1572 */ 0x90E4,0x6E3C, /* Array index: 0x1572 */ 0x90E8,0x4974, /* Array index: 0x1572 */ 0x90ED,0x3354, /* Array index: 0x1572 */ 0x90F5,0x4D39, /* Array index: 0x1572 */ 0x90F7,0x363F, /* Array index: 0x1572 */ 0x90FD,0x4554, /* Array index: 0x1572 */ 0x9102,0x6E3F, /* Array index: 0x1572 */ 0x9112,0x6E40, /* Array index: 0x1572 */ 0x9119,0x6E41, /* Array index: 0x1572 */ 0x912D,0x4522, /* Array index: 0x1572 */ 0x9130,0x6E43, /* Array index: 0x1572 */ 0x9132,0x6E42, /* Array index: 0x1572 */ 0x9152,0x3C72, /* Array index: 0x1572 */ 0x9154,0x3F6C, /* Array index: 0x1572 */ 0x9156,0x6E45, /* Array index: 0x1572 */ 0x9158,0x6E46, /* Array index: 0x1572 */ 0x9162,0x3F5D, /* Array index: 0x1572 */ 0x9163,0x6E47, /* Array index: 0x1572 */ 0x9165,0x6E48, /* Array index: 0x1572 */ 0x9169,0x6E49, /* Array index: 0x1572 */ 0x916A,0x4D6F, /* Array index: 0x1572 */ 0x916C,0x3D37, /* Array index: 0x1572 */ 0x9172,0x6E4B, /* Array index: 0x1572 */ 0x9173,0x6E4A, /* Array index: 0x1572 */ 0x9175,0x395A, /* Array index: 0x1572 */ 0x9177,0x3973, /* Array index: 0x1572 */ 0x9178,0x3B40, /* Array index: 0x1572 */ 0x9182,0x6E4E, /* Array index: 0x1572 */ 0x9187,0x3D66, /* Array index: 0x1572 */ 0x9189,0x6E4D, /* Array index: 0x1572 */ 0x918B,0x6E4C, /* Array index: 0x1572 */ 0x918D,0x4269, /* Array index: 0x1572 */ 0x9190,0x386F, /* Array index: 0x1572 */ 0x9192,0x4043, /* Array index: 0x1572 */ 0x9197,0x4830, /* Array index: 0x1572 */ 0x919C,0x3D39, /* Array index: 0x1572 */ 0x91A2,0x6E4F, /* Array index: 0x1572 */ 0x91A4,0x3E5F, /* Array index: 0x1572 */ 0x91AA,0x6E52, /* Array index: 0x1572 */ 0x91AB,0x6E50, /* Array index: 0x1572 */ 0x91AF,0x6E51, /* Array index: 0x1572 */ 0x91B4,0x6E54, /* Array index: 0x1572 */ 0x91B5,0x6E53, /* Array index: 0x1572 */ 0x91B8,0x3E7A, /* Array index: 0x1572 */ 0x91BA,0x6E55, /* Array index: 0x1572 */ 0x91C0,0x6E56, /* Array index: 0x1572 */ 0x91C1,0x6E57, /* Array index: 0x1572 */ 0x91D6,0x6E5B, /* Array index: 0x1572 */ 0x91D8,0x4523, /* Array index: 0x1572 */ 0x91F5,0x6E60, /* Array index: 0x1572 */ 0x91F6,0x6E61, /* Array index: 0x1572 */ 0x91FC,0x6E5F, /* Array index: 0x1572 */ 0x91FF,0x6E63, /* Array index: 0x1572 */ 0x920D,0x465F, /* Array index: 0x1572 */ 0x920E,0x3343, /* Array index: 0x1572 */ 0x9211,0x6E67, /* Array index: 0x1572 */ 0x9214,0x6E64, /* Array index: 0x1572 */ 0x9215,0x6E66, /* Array index: 0x1572 */ 0x921E,0x6E62, /* Array index: 0x1572 */ 0x9229,0x6F4F, /* Array index: 0x1572 */ 0x922C,0x6E65, /* Array index: 0x1572 */ 0x9234,0x4E6B, /* Array index: 0x1572 */ 0x9237,0x385A, /* Array index: 0x1572 */ 0x923F,0x6E6F, /* Array index: 0x1572 */ 0x9244,0x4534, /* Array index: 0x1572 */ 0x9245,0x6E6A, /* Array index: 0x1572 */ 0x9248,0x6E6D, /* Array index: 0x1572 */ 0x9249,0x6E6B, /* Array index: 0x1572 */ 0x924B,0x6E70, /* Array index: 0x1572 */ 0x9250,0x6E71, /* Array index: 0x1572 */ 0x9257,0x6E69, /* Array index: 0x1572 */ 0x925A,0x6E76, /* Array index: 0x1572 */ 0x925B,0x3174, /* Array index: 0x1572 */ 0x925E,0x6E68, /* Array index: 0x1572 */ 0x9262,0x482D, /* Array index: 0x1572 */ 0x9264,0x6E6C, /* Array index: 0x1572 */ 0x9266,0x3E60, /* Array index: 0x1572 */ 0x9271,0x395B, /* Array index: 0x1572 */ 0x927E,0x4B48, /* Array index: 0x1572 */ 0x9280,0x3664, /* Array index: 0x1572 */ 0x9283,0x3D46, /* Array index: 0x1572 */ 0x9285,0x463C, /* Array index: 0x1572 */ 0x9291,0x412D, /* Array index: 0x1572 */ 0x9293,0x6E74, /* Array index: 0x1572 */ 0x9295,0x6E6E, /* Array index: 0x1572 */ 0x9296,0x6E73, /* Array index: 0x1572 */ 0x92AD,0x412C, /* Array index: 0x1572 */ 0x92B7,0x6E79, /* Array index: 0x1572 */ 0x92B9,0x6E78, /* Array index: 0x1572 */ 0x92CF,0x6E77, /* Array index: 0x1572 */ 0x92D2,0x4B2F, /* Array index: 0x1572 */ 0x92E4,0x3D7B, /* Array index: 0x1572 */ 0x92E9,0x6E7A, /* Array index: 0x1572 */ 0x92EA,0x4A5F, /* Array index: 0x1572 */ 0x92ED,0x3154, /* Array index: 0x1572 */ 0x92F2,0x4946, /* Array index: 0x1572 */ 0x92F3,0x4372, /* Array index: 0x1572 */ 0x92F8,0x3578, /* Array index: 0x1572 */ 0x92FA,0x6E7C, /* Array index: 0x1572 */ 0x92FC,0x395D, /* Array index: 0x1572 */ 0x9306,0x3B2C, /* Array index: 0x1572 */ 0x930F,0x6E7B, /* Array index: 0x1572 */ 0x9310,0x3F6D, /* Array index: 0x1572 */ 0x9320,0x3E7B, /* Array index: 0x1572 */ 0x9322,0x6F22, /* Array index: 0x1572 */ 0x9323,0x6F24, /* Array index: 0x1572 */ 0x9326,0x3653, /* Array index: 0x1572 */ 0x9328,0x4945, /* Array index: 0x1572 */ 0x9332,0x4F3F, /* Array index: 0x1572 */ 0x9335,0x6F26, /* Array index: 0x1572 */ 0x933A,0x6F25, /* Array index: 0x1572 */ 0x933B,0x6F27, /* Array index: 0x1572 */ 0x9344,0x6E7D, /* Array index: 0x1572 */ 0x934B,0x4669, /* Array index: 0x1572 */ 0x934D,0x4555, /* Array index: 0x1572 */ 0x9354,0x4457, /* Array index: 0x1572 */ 0x9356,0x6F2C, /* Array index: 0x1572 */ 0x935B,0x4343, /* Array index: 0x1572 */ 0x935C,0x6F28, /* Array index: 0x1572 */ 0x9360,0x6F29, /* Array index: 0x1572 */ 0x936C,0x372D, /* Array index: 0x1572 */ 0x936E,0x6F2B, /* Array index: 0x1572 */ 0x9375,0x3830, /* Array index: 0x1572 */ 0x937C,0x6F2A, /* Array index: 0x1572 */ 0x937E,0x3E61, /* Array index: 0x1572 */ 0x938C,0x3379, /* Array index: 0x1572 */ 0x9394,0x6F30, /* Array index: 0x1572 */ 0x9396,0x3A3F, /* Array index: 0x1572 */ 0x9397,0x4179, /* Array index: 0x1572 */ 0x939A,0x444A, /* Array index: 0x1572 */ 0x93A7,0x333B, /* Array index: 0x1572 */ 0x93B9,0x6F31, /* Array index: 0x1572 */ 0x93C3,0x6F37, /* Array index: 0x1572 */ 0x93C8,0x6F3A, /* Array index: 0x1572 */ 0x93D0,0x6F39, /* Array index: 0x1572 */ 0x93D1,0x452D, /* Array index: 0x1572 */ 0x93DD,0x6F38, /* Array index: 0x1572 */ 0x93E1,0x3640, /* Array index: 0x1572 */ 0x93E4,0x6F3B, /* Array index: 0x1572 */ 0x93E5,0x6F35, /* Array index: 0x1572 */ 0x93E8,0x6F34, /* Array index: 0x1572 */ 0x9403,0x6F3F, /* Array index: 0x1572 */ 0x9407,0x6F40, /* Array index: 0x1572 */ 0x9410,0x6F41, /* Array index: 0x1572 */ 0x9413,0x6F3E, /* Array index: 0x1572 */ 0x9414,0x6F3D, /* Array index: 0x1572 */ 0x9421,0x6F45, /* Array index: 0x1572 */ 0x942B,0x6F43, /* Array index: 0x1572 */ 0x9435,0x6F44, /* Array index: 0x1572 */ 0x9436,0x6F42, /* Array index: 0x1572 */ 0x9438,0x4278, /* Array index: 0x1572 */ 0x943A,0x6F46, /* Array index: 0x1572 */ 0x9441,0x6F47, /* Array index: 0x1572 */ 0x9444,0x6F49, /* Array index: 0x1572 */ 0x945A,0x6F54, /* Array index: 0x1572 */ 0x945B,0x6F4A, /* Array index: 0x1572 */ 0x945E,0x6F4D, /* Array index: 0x1572 */ 0x9460,0x6F4B, /* Array index: 0x1572 */ 0x9462,0x6F4C, /* Array index: 0x1572 */ 0x946A,0x6F4E, /* Array index: 0x1572 */ 0x9470,0x6F50, /* Array index: 0x1572 */ 0x9475,0x6F51, /* Array index: 0x1572 */ 0x9477,0x6F52, /* Array index: 0x1572 */ 0x9577,0x4439, /* Array index: 0x1572 */ 0x9580,0x4C67, /* Array index: 0x1572 */ 0x9582,0x6F59, /* Array index: 0x1572 */ 0x9583,0x412E, /* Array index: 0x1572 */ 0x958F,0x313C, /* Array index: 0x1572 */ 0x9591,0x3457, /* Array index: 0x1572 */ 0x9593,0x3456, /* Array index: 0x1572 */ 0x9594,0x6F5C, /* Array index: 0x1572 */ 0x9596,0x6F5D, /* Array index: 0x1572 */ 0x9598,0x6F5E, /* Array index: 0x1572 */ 0x9599,0x6F5F, /* Array index: 0x1572 */ 0x95AD,0x6F63, /* Array index: 0x1572 */ 0x95B2,0x315C, /* Array index: 0x1572 */ 0x95B9,0x6F66, /* Array index: 0x1572 */ 0x95BB,0x6F65, /* Array index: 0x1572 */ 0x95BC,0x6F64, /* Array index: 0x1572 */ 0x95BE,0x6F67, /* Array index: 0x1572 */ 0x95C3,0x6F6A, /* Array index: 0x1572 */ 0x95C7,0x3047, /* Array index: 0x1572 */ 0x95CA,0x6F68, /* Array index: 0x1572 */ 0x95CC,0x6F6C, /* Array index: 0x1572 */ 0x95CD,0x6F6B, /* Array index: 0x1572 */ 0x95DC,0x6F70, /* Array index: 0x1572 */ 0x95E1,0x6F71, /* Array index: 0x1572 */ 0x95E2,0x6F73, /* Array index: 0x1572 */ 0x95E5,0x6F72, /* Array index: 0x1572 */ 0x961C,0x496C, /* Array index: 0x1572 */ 0x9621,0x6F74, /* Array index: 0x1572 */ 0x9628,0x6F75, /* Array index: 0x1572 */ 0x962A,0x3A65, /* Array index: 0x1572 */ 0x962E,0x6F76, /* Array index: 0x1572 */ 0x962F,0x6F77, /* Array index: 0x1572 */ 0x9632,0x4B49, /* Array index: 0x1572 */ 0x963B,0x414B, /* Array index: 0x1572 */ 0x963F,0x3024, /* Array index: 0x1572 */ 0x9640,0x424B, /* Array index: 0x1572 */ 0x9642,0x6F78, /* Array index: 0x1572 */ 0x9644,0x496D, /* Array index: 0x1572 */ 0x966A,0x4766, /* Array index: 0x1572 */ 0x966C,0x7025, /* Array index: 0x1572 */ 0x9670,0x3122, /* Array index: 0x1572 */ 0x967D,0x4D5B, /* Array index: 0x1572 */ 0x9685,0x3679, /* Array index: 0x1572 */ 0x9686,0x4E34, /* Array index: 0x1572 */ 0x9688,0x3728, /* Array index: 0x1572 */ 0x96A0,0x3123, /* Array index: 0x1572 */ 0x96A3,0x4E59, /* Array index: 0x1572 */ 0x96A7,0x702B, /* Array index: 0x1572 */ 0x96A8,0x6E2E, /* Array index: 0x1572 */ 0x96AA,0x702A, /* Array index: 0x1572 */ 0x96D1,0x3B28, /* Array index: 0x1572 */ 0x96D5,0x703A, /* Array index: 0x1572 */ 0x96D6,0x6A2D, /* Array index: 0x1572 */ 0x96D9,0x5256, /* Array index: 0x1572 */ 0x96DB,0x3F77, /* Array index: 0x1572 */ 0x96DC,0x7038, /* Array index: 0x1572 */ 0x96E2,0x4E25, /* Array index: 0x1572 */ 0x96E3,0x4671, /* Array index: 0x1572 */ 0x96E8,0x312B, /* Array index: 0x1572 */ 0x96EA,0x4063, /* Array index: 0x1572 */ 0x96EB,0x3C36, /* Array index: 0x1572 */ 0x96F0,0x4A37, /* Array index: 0x1572 */ 0x96F2,0x3140, /* Array index: 0x1572 */ 0x96F6,0x4E6D, /* Array index: 0x1572 */ 0x96F7,0x4D6B, /* Array index: 0x1572 */ 0x96F9,0x703B, /* Array index: 0x1572 */ 0x96FB,0x4545, /* Array index: 0x1572 */ 0x9700,0x3C7B, /* Array index: 0x1572 */ 0x9716,0x7043, /* Array index: 0x1572 */ 0x9719,0x7044, /* Array index: 0x1572 */ 0x971C,0x417A, /* Array index: 0x1572 */ 0x971E,0x3262, /* Array index: 0x1572 */ 0x9724,0x7045, /* Array index: 0x1572 */ 0x9727,0x4C38, /* Array index: 0x1572 */ 0x972A,0x7046, /* Array index: 0x1572 */ 0x9730,0x7047, /* Array index: 0x1572 */ 0x9732,0x4F2A, /* Array index: 0x1572 */ 0x9738,0x5B31, /* Array index: 0x1572 */ 0x9739,0x7048, /* Array index: 0x1572 */ 0x973D,0x7049, /* Array index: 0x1572 */ 0x973E,0x704A, /* Array index: 0x1572 */ 0x9742,0x704E, /* Array index: 0x1572 */ 0x9744,0x704B, /* Array index: 0x1572 */ 0x9746,0x704C, /* Array index: 0x1572 */ 0x9748,0x704D, /* Array index: 0x1572 */ 0x9749,0x704F, /* Array index: 0x1572 */ 0x9752,0x4044, /* Array index: 0x1572 */ 0x9756,0x4C77, /* Array index: 0x1572 */ 0x9759,0x4045, /* Array index: 0x1572 */ 0x975C,0x7050, /* Array index: 0x1572 */ 0x9771,0x7057, /* Array index: 0x1572 */ 0x9774,0x3724, /* Array index: 0x1572 */ 0x9779,0x7058, /* Array index: 0x1572 */ 0x977A,0x705C, /* Array index: 0x1572 */ 0x977C,0x705A, /* Array index: 0x1572 */ 0x9781,0x705B, /* Array index: 0x1572 */ 0x978B,0x705E, /* Array index: 0x1572 */ 0x978D,0x3048, /* Array index: 0x1572 */ 0x978F,0x705F, /* Array index: 0x1572 */ 0x9790,0x7060, /* Array index: 0x1572 */ 0x9798,0x3E64, /* Array index: 0x1572 */ 0x979C,0x7061, /* Array index: 0x1572 */ 0x97A0,0x3547, /* Array index: 0x1572 */ 0x97A3,0x7064, /* Array index: 0x1572 */ 0x97A6,0x7063, /* Array index: 0x1572 */ 0x97A8,0x7062, /* Array index: 0x1572 */ 0x97AB,0x6B71, /* Array index: 0x1572 */ 0x97AD,0x4A5C, /* Array index: 0x1572 */ 0x97B3,0x7065, /* Array index: 0x1572 */ 0x97B4,0x7066, /* Array index: 0x1572 */ 0x97C3,0x7067, /* Array index: 0x1572 */ 0x97C6,0x7068, /* Array index: 0x1572 */ 0x97C8,0x7069, /* Array index: 0x1572 */ 0x97CB,0x706A, /* Array index: 0x1572 */ 0x97D3,0x345A, /* Array index: 0x1572 */ 0x97DC,0x706B, /* Array index: 0x1572 */ 0x97ED,0x706C, /* Array index: 0x1572 */ 0x97EE,0x4723, /* Array index: 0x1572 */ 0x97FB,0x3124, /* Array index: 0x1572 */ 0x980C,0x7073, /* Array index: 0x1572 */ 0x9817,0x3F7C, /* Array index: 0x1572 */ 0x9818,0x4E4E, /* Array index: 0x1572 */ 0x981A,0x375B, /* Array index: 0x1572 */ 0x9821,0x7076, /* Array index: 0x1572 */ 0x9824,0x7075, /* Array index: 0x1572 */ 0x982C,0x4B4B, /* Array index: 0x1572 */ 0x982D,0x462C, /* Array index: 0x1572 */ 0x9834,0x3150, /* Array index: 0x1572 */ 0x9846,0x7079, /* Array index: 0x1572 */ 0x9854,0x3469, /* Array index: 0x1572 */ 0x9855,0x3832, /* Array index: 0x1572 */ 0x9858,0x346A, /* Array index: 0x1572 */ 0x985B,0x453F, /* Array index: 0x1572 */ 0x985E,0x4E60, /* Array index: 0x1572 */ 0x9867,0x385C, /* Array index: 0x1572 */ 0x986B,0x707C, /* Array index: 0x1572 */ 0x98A8,0x4977, /* Array index: 0x1572 */ 0x98AA,0x7124, /* Array index: 0x1572 */ 0x98AF,0x7125, /* Array index: 0x1572 */ 0x98B1,0x7126, /* Array index: 0x1572 */ 0x98B6,0x7127, /* Array index: 0x1572 */ 0x98C3,0x7129, /* Array index: 0x1572 */ 0x98C4,0x7128, /* Array index: 0x1572 */ 0x98C6,0x712A, /* Array index: 0x1572 */ 0x98DB,0x4874, /* Array index: 0x1572 */ 0x98DC,0x664C, /* Array index: 0x1572 */ 0x98DF,0x3F29, /* Array index: 0x1572 */ 0x98E2,0x3532, /* Array index: 0x1572 */ 0x98E9,0x712B, /* Array index: 0x1572 */ 0x98F2,0x307B, /* Array index: 0x1572 */ 0x98F4,0x303B, /* Array index: 0x1572 */ 0x9903,0x712D, /* Array index: 0x1572 */ 0x9905,0x4C5F, /* Array index: 0x1572 */ 0x9909,0x712E, /* Array index: 0x1572 */ 0x990A,0x4D5C, /* Array index: 0x1572 */ 0x990C,0x3142, /* Array index: 0x1572 */ 0x9918,0x7131, /* Array index: 0x1572 */ 0x9924,0x7135, /* Array index: 0x1572 */ 0x9928,0x345B, /* Array index: 0x1572 */ 0x992C,0x7137, /* Array index: 0x1572 */ 0x992E,0x7138, /* Array index: 0x1572 */ 0x993D,0x7139, /* Array index: 0x1572 */ 0x993E,0x713A, /* Array index: 0x1572 */ 0x9942,0x713B, /* Array index: 0x1572 */ 0x9945,0x713D, /* Array index: 0x1572 */ 0x9949,0x713C, /* Array index: 0x1572 */ 0x994B,0x713F, /* Array index: 0x1572 */ 0x994C,0x7142, /* Array index: 0x1572 */ 0x9955,0x7143, /* Array index: 0x1572 */ 0x9957,0x3642, /* Array index: 0x1572 */ 0x99A5,0x7146, /* Array index: 0x1572 */ 0x99A8,0x333E, /* Array index: 0x1572 */ 0x99B3,0x435A, /* Array index: 0x1572 */ 0x99B4,0x466B, /* Array index: 0x1572 */ 0x99BC,0x7149, /* Array index: 0x1572 */ 0x99C1,0x477D, /* Array index: 0x1572 */ 0x99D5,0x326F, /* Array index: 0x1572 */ 0x99D8,0x714D, /* Array index: 0x1572 */ 0x99DB,0x714B, /* Array index: 0x1572 */ 0x99DD,0x714C, /* Array index: 0x1572 */ 0x99DF,0x714A, /* Array index: 0x1572 */ 0x99E2,0x7158, /* Array index: 0x1572 */ 0x99ED,0x714F, /* Array index: 0x1572 */ 0x99EE,0x7150, /* Array index: 0x1572 */ 0x99F1,0x7151, /* Array index: 0x1572 */ 0x99F2,0x7152, /* Array index: 0x1572 */ 0x99F8,0x7154, /* Array index: 0x1572 */ 0x99FB,0x7153, /* Array index: 0x1572 */ 0x99FF,0x3D59, /* Array index: 0x1572 */ 0x9A01,0x7155, /* Array index: 0x1572 */ 0x9A05,0x7157, /* Array index: 0x1572 */ 0x9A0E,0x3533, /* Array index: 0x1572 */ 0x9A0F,0x7156, /* Array index: 0x1572 */ 0x9A12,0x417B, /* Array index: 0x1572 */ 0x9A13,0x3833, /* Array index: 0x1572 */ 0x9A19,0x7159, /* Array index: 0x1572 */ 0x9A28,0x424D, /* Array index: 0x1572 */ 0x9A2B,0x715A, /* Array index: 0x1572 */ 0x9A30,0x462D, /* Array index: 0x1572 */ 0x9A37,0x715B, /* Array index: 0x1572 */ 0x9A3E,0x7160, /* Array index: 0x1572 */ 0x9A40,0x715E, /* Array index: 0x1572 */ 0x9A42,0x715D, /* Array index: 0x1572 */ 0x9A43,0x715F, /* Array index: 0x1572 */ 0x9A45,0x715C, /* Array index: 0x1572 */ 0x9A4D,0x7162, /* Array index: 0x1572 */ 0x9A55,0x7161, /* Array index: 0x1572 */ 0x9A57,0x7164, /* Array index: 0x1572 */ 0x9A5A,0x3643, /* Array index: 0x1572 */ 0x9A5B,0x7163, /* Array index: 0x1572 */ 0x9A5F,0x7165, /* Array index: 0x1572 */ 0x9A62,0x7166, /* Array index: 0x1572 */ 0x9A64,0x7168, /* Array index: 0x1572 */ 0x9A65,0x7167, /* Array index: 0x1572 */ 0x9AA8,0x397C, /* Array index: 0x1572 */ 0x9AAD,0x716C, /* Array index: 0x1572 */ 0x9AB0,0x716D, /* Array index: 0x1572 */ 0x9AB8,0x333C, /* Array index: 0x1572 */ 0x9ABC,0x716E, /* Array index: 0x1572 */ 0x9AC0,0x716F, /* Array index: 0x1572 */ 0x9AC4,0x3F71, /* Array index: 0x1572 */ 0x9ACF,0x7170, /* Array index: 0x1572 */ 0x9AD1,0x7171, /* Array index: 0x1572 */ 0x9AD3,0x7172, /* Array index: 0x1572 */ 0x9AD4,0x7173, /* Array index: 0x1572 */ 0x9AD8,0x3962, /* Array index: 0x1572 */ 0x9ADE,0x7174, /* Array index: 0x1572 */ 0x9ADF,0x7175, /* Array index: 0x1572 */ 0x9AE2,0x7176, /* Array index: 0x1572 */ 0x9AE3,0x7177, /* Array index: 0x1572 */ 0x9AE6,0x7178, /* Array index: 0x1572 */ 0x9AF4,0x717C, /* Array index: 0x1572 */ 0x9AF7,0x717E, /* Array index: 0x1572 */ 0x9AFB,0x7221, /* Array index: 0x1572 */ 0x9B06,0x7222, /* Array index: 0x1572 */ 0x9B18,0x7223, /* Array index: 0x1572 */ 0x9B1A,0x7224, /* Array index: 0x1572 */ 0x9B1F,0x7225, /* Array index: 0x1572 */ 0x9B22,0x7226, /* Array index: 0x1572 */ 0x9B23,0x7227, /* Array index: 0x1572 */ 0x9B3B,0x6478, /* Array index: 0x1572 */ 0x9B3C,0x3534, /* Array index: 0x1572 */ 0x9B54,0x4B62, /* Array index: 0x1572 */ 0x9B58,0x7236, /* Array index: 0x1572 */ 0x9B5A,0x357B, /* Array index: 0x1572 */ 0x9B6F,0x4F25, /* Array index: 0x1572 */ 0x9B74,0x7237, /* Array index: 0x1572 */ 0x9B83,0x7239, /* Array index: 0x1572 */ 0x9B8E,0x303E, /* Array index: 0x1572 */ 0x9B9F,0x723D, /* Array index: 0x1572 */ 0x9BA0,0x723E, /* Array index: 0x1572 */ 0x9BA8,0x723F, /* Array index: 0x1572 */ 0x9BB4,0x7240, /* Array index: 0x1572 */ 0x9BB9,0x7243, /* Array index: 0x1572 */ 0x9BC0,0x7241, /* Array index: 0x1572 */ 0x9BC6,0x7244, /* Array index: 0x1572 */ 0x9BC9,0x3871, /* Array index: 0x1572 */ 0x9BCA,0x7242, /* Array index: 0x1572 */ 0x9BCF,0x7245, /* Array index: 0x1572 */ 0x9BD1,0x7246, /* Array index: 0x1572 */ 0x9BD2,0x7247, /* Array index: 0x1572 */ 0x9BD4,0x724B, /* Array index: 0x1572 */ 0x9BD6,0x3B2A, /* Array index: 0x1572 */ 0x9BDB,0x4264, /* Array index: 0x1572 */ 0x9BE8,0x375F, /* Array index: 0x1572 */ 0x9BF5,0x3033, /* Array index: 0x1572 */ 0x9C04,0x725A, /* Array index: 0x1572 */ 0x9C1B,0x725C, /* Array index: 0x1572 */ 0x9C21,0x725F, /* Array index: 0x1572 */ 0x9C24,0x725E, /* Array index: 0x1572 */ 0x9C25,0x725D, /* Array index: 0x1572 */ 0x9C3E,0x7264, /* Array index: 0x1572 */ 0x9C52,0x4B70, /* Array index: 0x1572 */ 0x9C57,0x4E5A, /* Array index: 0x1572 */ 0x9C5A,0x7265, /* Array index: 0x1572 */ 0x9C60,0x7266, /* Array index: 0x1572 */ 0x9C67,0x7267, /* Array index: 0x1572 */ 0x9C76,0x7268, /* Array index: 0x1572 */ 0x9C78,0x7269, /* Array index: 0x1572 */ 0x9CE5,0x443B, /* Array index: 0x1572 */ 0x9CE7,0x726A, /* Array index: 0x1572 */ 0x9CE9,0x4837, /* Array index: 0x1572 */ 0x9CEB,0x726F, /* Array index: 0x1572 */ 0x9CEC,0x726B, /* Array index: 0x1572 */ 0x9CF0,0x726C, /* Array index: 0x1572 */ 0x9CF3,0x4B31, /* Array index: 0x1572 */ 0x9CF4,0x4C44, /* Array index: 0x1572 */ 0x9CF6,0x4650, /* Array index: 0x1572 */ 0x9D03,0x7270, /* Array index: 0x1572 */ 0x9D0E,0x322A, /* Array index: 0x1572 */ 0x9D12,0x7279, /* Array index: 0x1572 */ 0x9D15,0x7278, /* Array index: 0x1572 */ 0x9D1B,0x3175, /* Array index: 0x1572 */ 0x9D1F,0x7276, /* Array index: 0x1572 */ 0x9D23,0x7275, /* Array index: 0x1572 */ 0x9D26,0x7273, /* Array index: 0x1572 */ 0x9D3B,0x3963, /* Array index: 0x1572 */ 0x9D3E,0x727C, /* Array index: 0x1572 */ 0x9D3F,0x727B, /* Array index: 0x1572 */ 0x9D41,0x727A, /* Array index: 0x1572 */ 0x9D44,0x7277, /* Array index: 0x1572 */ 0x9D46,0x727D, /* Array index: 0x1572 */ 0x9D48,0x727E, /* Array index: 0x1572 */ 0x9D50,0x7325, /* Array index: 0x1572 */ 0x9D51,0x7324, /* Array index: 0x1572 */ 0x9D59,0x7326, /* Array index: 0x1572 */ 0x9D64,0x7323, /* Array index: 0x1572 */ 0x9D6C,0x4B32, /* Array index: 0x1572 */ 0x9D6F,0x732B, /* Array index: 0x1572 */ 0x9D72,0x7327, /* Array index: 0x1572 */ 0x9D7A,0x732C, /* Array index: 0x1572 */ 0x9D87,0x7329, /* Array index: 0x1572 */ 0x9D89,0x7328, /* Array index: 0x1572 */ 0x9D8F,0x375C, /* Array index: 0x1572 */ 0x9D9A,0x732D, /* Array index: 0x1572 */ 0x9DA4,0x732E, /* Array index: 0x1572 */ 0x9DA9,0x732F, /* Array index: 0x1572 */ 0x9DAB,0x732A, /* Array index: 0x1572 */ 0x9DAF,0x7274, /* Array index: 0x1572 */ 0x9DB2,0x7330, /* Array index: 0x1572 */ 0x9DB4,0x4461, /* Array index: 0x1572 */ 0x9DB8,0x7334, /* Array index: 0x1572 */ 0x9DBA,0x7335, /* Array index: 0x1572 */ 0x9DBB,0x7333, /* Array index: 0x1572 */ 0x9DC1,0x7332, /* Array index: 0x1572 */ 0x9DC2,0x7338, /* Array index: 0x1572 */ 0x9DC4,0x7331, /* Array index: 0x1572 */ 0x9DC6,0x7336, /* Array index: 0x1572 */ 0x9DCF,0x7337, /* Array index: 0x1572 */ 0x9DD3,0x733A, /* Array index: 0x1572 */ 0x9DD9,0x7339, /* Array index: 0x1572 */ 0x9DE6,0x733C, /* Array index: 0x1572 */ 0x9DED,0x733D, /* Array index: 0x1572 */ 0x9DEF,0x733E, /* Array index: 0x1572 */ 0x9DF2,0x4F49, /* Array index: 0x1572 */ 0x9DFD,0x733F, /* Array index: 0x1572 */ 0x9E1A,0x7340, /* Array index: 0x1572 */ 0x9E1B,0x7341, /* Array index: 0x1572 */ 0x9E1E,0x7342, /* Array index: 0x1572 */ 0x9E75,0x7343, /* Array index: 0x1572 */ 0x9E78,0x3834, /* Array index: 0x1572 */ 0x9E79,0x7344, /* Array index: 0x1572 */ 0x9E7D,0x7345, /* Array index: 0x1572 */ 0x9E7F,0x3C2F, /* Array index: 0x1572 */ 0x9E81,0x7346, /* Array index: 0x1572 */ 0x9E88,0x7347, /* Array index: 0x1572 */ 0x9E8B,0x7348, /* Array index: 0x1572 */ 0x9E8C,0x7349, /* Array index: 0x1572 */ 0x9E9D,0x734D, /* Array index: 0x1572 */ 0x9E9F,0x4E5B, /* Array index: 0x1572 */ 0x9EA5,0x734E, /* Array index: 0x1572 */ 0x9EA6,0x477E, /* Array index: 0x1572 */ 0x9EA9,0x734F, /* Array index: 0x1572 */ 0x9EAA,0x7351, /* Array index: 0x1572 */ 0x9EAD,0x7352, /* Array index: 0x1572 */ 0x9EC4,0x322B, /* Array index: 0x1572 */ 0x9EE5,0x735D, /* Array index: 0x1572 */ 0x9EE8,0x735E, /* Array index: 0x1572 */ 0x9EEF,0x735F, /* Array index: 0x1572 */ 0x9EF4,0x7360, /* Array index: 0x1572 */ 0x9EF6,0x7361, /* Array index: 0x1572 */ 0x9EF7,0x7362, /* Array index: 0x1572 */ 0x9F07,0x7367, /* Array index: 0x1572 */ 0x9F08,0x7368, /* Array index: 0x1572 */ 0x9F0E,0x4524, /* Array index: 0x1572 */ 0x9F13,0x385D, /* Array index: 0x1572 */ 0x9F15,0x736A, /* Array index: 0x1572 */ 0x9F20,0x414D, /* Array index: 0x1572 */ 0x9F21,0x736B, /* Array index: 0x1572 */ 0x9F2C,0x736C, /* Array index: 0x1572 */ 0x9F3B,0x4921, /* Array index: 0x1572 */ 0x9F3E,0x736D, /* Array index: 0x1572 */ 0x9F4A,0x736E, /* Array index: 0x1572 */ 0x9F4B,0x6337, /* Array index: 0x1572 */ 0x9F4E,0x6C5A, /* Array index: 0x1572 */ 0x9F4F,0x706D, /* Array index: 0x1572 */ 0x9F52,0x736F, /* Array index: 0x1572 */ 0x9F54,0x7370, /* Array index: 0x1572 */ 0x9F6A,0x7378, /* Array index: 0x1572 */ 0x9F6C,0x7377, /* Array index: 0x1572 */ 0x9F72,0x737A, /* Array index: 0x1572 */ 0x9F76,0x737B, /* Array index: 0x1572 */ 0x9F77,0x7379, /* Array index: 0x1572 */ 0x9F8D,0x4E36, /* Array index: 0x1572 */ 0x9F95,0x737C, /* Array index: 0x1572 */ 0x9F9C,0x737D, /* Array index: 0x1572 */ 0x9F9D,0x6354, /* Array index: 0x1572 */ 0x9FA0,0x737E, /* Array index: 0x1572 */ 0xFFE3,0x2131, /* Array index: 0x1572 */ 0xFFE5,0x216F, }; #endif /* ICONV_FROM_UCS_CCS_JIS_X0208_1990 && defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * jis_x0208_1990 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_jis_x0208_1990 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_JIS_X0208_1990, /* CCS name */ TABLE_16BIT, /* Table bits */ #if defined (ICONV_FROM_UCS_CCS_JIS_X0208_1990) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SIZE_OPTIMIZED, (__uint16_t *)&from_ucs_size_jis_x0208_1990, /* UCS -> jis_x0208_1990 table size-optimized table */ #elif defined (ICONV_FROM_UCS_CCS_JIS_X0208_1990) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SPEED_OPTIMIZED, (__uint16_t *)&from_ucs_speed_jis_x0208_1990, /* UCS -> jis_x0208_1990 table speed-optimized table */ #else TABLE_SPEED_OPTIMIZED, (__uint16_t *)NULL, #endif #if defined (ICONV_TO_UCS_CCS_JIS_X0208_1990) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SIZE_OPTIMIZED, (__uint16_t *)&to_ucs_size_jis_x0208_1990 /* jis_x0208_1990 -> UCS table speed-optimized table */ #elif defined (ICONV_TO_UCS_CCS_JIS_X0208_1990) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SPEED_OPTIMIZED, (__uint16_t *)&to_ucs_speed_jis_x0208_1990 /* jis_x0208_1990 -> UCS table speed-optimized table */ #else TABLE_SPEED_OPTIMIZED, (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_JIS_X0208_1990) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/jis_x0212_1990.c000066400000000000000000021422451414576234500216620ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for jis_x0212_1990 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_JIS_X0212_1990) \ || defined (ICONV_FROM_UCS_CCS_JIS_X0212_1990) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" /* * 16-bit jis_x0212_1990 -> UCS speed-optimized table (35328 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_JIS_X0212_1990) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t to_ucs_speed_jis_x0212_1990[] = { /* Heading Block */ INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,0x0100,INVBLK,INVBLK,INVBLK,0x0200,0x0300, INVBLK,0x0400,0x0500,0x0600,INVBLK,INVBLK,INVBLK,INVBLK, 0x0700,0x0800,0x0900,0x0A00,0x0B00,0x0C00,0x0D00,0x0E00, 0x0F00,0x1000,0x1100,0x1200,0x1300,0x1400,0x1500,0x1600, 0x1700,0x1800,0x1900,0x1A00,0x1B00,0x1C00,0x1D00,0x1E00, 0x1F00,0x2000,0x2100,0x2200,0x2300,0x2400,0x2500,0x2600, 0x2700,0x2800,0x2900,0x2A00,0x2B00,0x2C00,0x2D00,0x2E00, 0x2F00,0x3000,0x3100,0x3200,0x3300,0x3400,0x3500,0x3600, 0x3700,0x3800,0x3900,0x3A00,0x3B00,0x3C00,0x3D00,0x3E00, 0x3F00,0x4000,0x4100,0x4200,0x4300,0x4400,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, /* Block 35, Array index 0x0100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x02D8, 0x02C7,0x00B8,0x02D9,0x02DD,0x00AF,0x02DB,0x02DA,0x007E, 0x0384,0x0385,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x00A1,0x00A6,0x00BF,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x00BA,0x00AA,0x00A9,0x00AE,0x2122, 0x00A4,0x2116,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 39, Array index 0x0200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x0386,0x0388,0x0389,0x038A,0x03AA,INVALC,0x038C, INVALC,0x038E,0x03AB,INVALC,0x038F,INVALC,INVALC,INVALC, INVALC,0x03AC,0x03AD,0x03AE,0x03AF,0x03CA,0x0390,0x03CC, 0x03C2,0x03CD,0x03CB,0x03B0,0x03CE,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 40, Array index 0x0300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x0402,0x0403,0x0404,0x0405,0x0406,0x0407, 0x0408,0x0409,0x040A,0x040B,0x040C,0x040E,0x040F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x0452,0x0453,0x0454,0x0455,0x0456,0x0457, 0x0458,0x0459,0x045A,0x045B,0x045C,0x045E,0x045F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 42, Array index 0x0400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x00C6,0x0110,INVALC,0x0126,INVALC,0x0132,INVALC, 0x0141,0x013F,INVALC,0x014A,0x00D8,0x0152,INVALC,0x0166, 0x00DE,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x00E6,0x0111,0x00F0,0x0127,0x0131,0x0133,0x0138, 0x0142,0x0140,0x0149,0x014B,0x00F8,0x0153,0x00DF,0x0167, 0x00FE,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 43, Array index 0x0500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x00C1,0x00C0,0x00C4,0x00C2,0x0102,0x01CD,0x0100, 0x0104,0x00C5,0x00C3,0x0106,0x0108,0x010C,0x00C7,0x010A, 0x010E,0x00C9,0x00C8,0x00CB,0x00CA,0x011A,0x0116,0x0112, 0x0118,INVALC,0x011C,0x011E,0x0122,0x0120,0x0124,0x00CD, 0x00CC,0x00CF,0x00CE,0x01CF,0x0130,0x012A,0x012E,0x0128, 0x0134,0x0136,0x0139,0x013D,0x013B,0x0143,0x0147,0x0145, 0x00D1,0x00D3,0x00D2,0x00D6,0x00D4,0x01D1,0x0150,0x014C, 0x00D5,0x0154,0x0158,0x0156,0x015A,0x015C,0x0160,0x015E, 0x0164,0x0162,0x00DA,0x00D9,0x00DC,0x00DB,0x016C,0x01D3, 0x0170,0x016A,0x0172,0x016E,0x0168,0x01D7,0x01DB,0x01D9, 0x01D5,0x0174,0x00DD,0x0178,0x0176,0x0179,0x017D,0x017B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 44, Array index 0x0600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x00E1,0x00E0,0x00E4,0x00E2,0x0103,0x01CE,0x0101, 0x0105,0x00E5,0x00E3,0x0107,0x0109,0x010D,0x00E7,0x010B, 0x010F,0x00E9,0x00E8,0x00EB,0x00EA,0x011B,0x0117,0x0113, 0x0119,0x01F5,0x011D,0x011F,INVALC,0x0121,0x0125,0x00ED, 0x00EC,0x00EF,0x00EE,0x01D0,INVALC,0x012B,0x012F,0x0129, 0x0135,0x0137,0x013A,0x013E,0x013C,0x0144,0x0148,0x0146, 0x00F1,0x00F3,0x00F2,0x00F6,0x00F4,0x01D2,0x0151,0x014D, 0x00F5,0x0155,0x0159,0x0157,0x015B,0x015D,0x0161,0x015F, 0x0165,0x0163,0x00FA,0x00F9,0x00FC,0x00FB,0x016D,0x01D4, 0x0171,0x016B,0x0173,0x016F,0x0169,0x01D8,0x01DC,0x01DA, 0x01D6,0x0175,0x00FD,0x00FF,0x0177,0x017A,0x017E,0x017C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 49, Array index 0x0700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4E02,0x4E04,0x4E05,0x4E0C,0x4E12,0x4E1F,0x4E23, 0x4E24,0x4E28,0x4E2B,0x4E2E,0x4E2F,0x4E30,0x4E35,0x4E40, 0x4E41,0x4E44,0x4E47,0x4E51,0x4E5A,0x4E5C,0x4E63,0x4E68, 0x4E69,0x4E74,0x4E75,0x4E79,0x4E7F,0x4E8D,0x4E96,0x4E97, 0x4E9D,0x4EAF,0x4EB9,0x4EC3,0x4ED0,0x4EDA,0x4EDB,0x4EE0, 0x4EE1,0x4EE2,0x4EE8,0x4EEF,0x4EF1,0x4EF3,0x4EF5,0x4EFD, 0x4EFE,0x4EFF,0x4F00,0x4F02,0x4F03,0x4F08,0x4F0B,0x4F0C, 0x4F12,0x4F15,0x4F16,0x4F17,0x4F19,0x4F2E,0x4F31,0x4F60, 0x4F33,0x4F35,0x4F37,0x4F39,0x4F3B,0x4F3E,0x4F40,0x4F42, 0x4F48,0x4F49,0x4F4B,0x4F4C,0x4F52,0x4F54,0x4F56,0x4F58, 0x4F5F,0x4F63,0x4F6A,0x4F6C,0x4F6E,0x4F71,0x4F77,0x4F78, 0x4F79,0x4F7A,0x4F7D,0x4F7E,0x4F81,0x4F82,0x4F84,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 50, Array index 0x0800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4F85,0x4F89,0x4F8A,0x4F8C,0x4F8E,0x4F90,0x4F92, 0x4F93,0x4F94,0x4F97,0x4F99,0x4F9A,0x4F9E,0x4F9F,0x4FB2, 0x4FB7,0x4FB9,0x4FBB,0x4FBC,0x4FBD,0x4FBE,0x4FC0,0x4FC1, 0x4FC5,0x4FC6,0x4FC8,0x4FC9,0x4FCB,0x4FCC,0x4FCD,0x4FCF, 0x4FD2,0x4FDC,0x4FE0,0x4FE2,0x4FF0,0x4FF2,0x4FFC,0x4FFD, 0x4FFF,0x5000,0x5001,0x5004,0x5007,0x500A,0x500C,0x500E, 0x5010,0x5013,0x5017,0x5018,0x501B,0x501C,0x501D,0x501E, 0x5022,0x5027,0x502E,0x5030,0x5032,0x5033,0x5035,0x5040, 0x5041,0x5042,0x5045,0x5046,0x504A,0x504C,0x504E,0x5051, 0x5052,0x5053,0x5057,0x5059,0x505F,0x5060,0x5062,0x5063, 0x5066,0x5067,0x506A,0x506D,0x5070,0x5071,0x503B,0x5081, 0x5083,0x5084,0x5086,0x508A,0x508E,0x508F,0x5090,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 51, Array index 0x0900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5092,0x5093,0x5094,0x5096,0x509B,0x509C,0x509E, 0x509F,0x50A0,0x50A1,0x50A2,0x50AA,0x50AF,0x50B0,0x50B9, 0x50BA,0x50BD,0x50C0,0x50C3,0x50C4,0x50C7,0x50CC,0x50CE, 0x50D0,0x50D3,0x50D4,0x50D8,0x50DC,0x50DD,0x50DF,0x50E2, 0x50E4,0x50E6,0x50E8,0x50E9,0x50EF,0x50F1,0x50F6,0x50FA, 0x50FE,0x5103,0x5106,0x5107,0x5108,0x510B,0x510C,0x510D, 0x510E,0x50F2,0x5110,0x5117,0x5119,0x511B,0x511C,0x511D, 0x511E,0x5123,0x5127,0x5128,0x512C,0x512D,0x512F,0x5131, 0x5133,0x5134,0x5135,0x5138,0x5139,0x5142,0x514A,0x514F, 0x5153,0x5155,0x5157,0x5158,0x515F,0x5164,0x5166,0x517E, 0x5183,0x5184,0x518B,0x518E,0x5198,0x519D,0x51A1,0x51A3, 0x51AD,0x51B8,0x51BA,0x51BC,0x51BE,0x51BF,0x51C2,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 52, Array index 0x0A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x51C8,0x51CF,0x51D1,0x51D2,0x51D3,0x51D5,0x51D8, 0x51DE,0x51E2,0x51E5,0x51EE,0x51F2,0x51F3,0x51F4,0x51F7, 0x5201,0x5202,0x5205,0x5212,0x5213,0x5215,0x5216,0x5218, 0x5222,0x5228,0x5231,0x5232,0x5235,0x523C,0x5245,0x5249, 0x5255,0x5257,0x5258,0x525A,0x525C,0x525F,0x5260,0x5261, 0x5266,0x526E,0x5277,0x5278,0x5279,0x5280,0x5282,0x5285, 0x528A,0x528C,0x5293,0x5295,0x5296,0x5297,0x5298,0x529A, 0x529C,0x52A4,0x52A5,0x52A6,0x52A7,0x52AF,0x52B0,0x52B6, 0x52B7,0x52B8,0x52BA,0x52BB,0x52BD,0x52C0,0x52C4,0x52C6, 0x52C8,0x52CC,0x52CF,0x52D1,0x52D4,0x52D6,0x52DB,0x52DC, 0x52E1,0x52E5,0x52E8,0x52E9,0x52EA,0x52EC,0x52F0,0x52F1, 0x52F4,0x52F6,0x52F7,0x5300,0x5303,0x530A,0x530B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 53, Array index 0x0B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x530C,0x5311,0x5313,0x5318,0x531B,0x531C,0x531E, 0x531F,0x5325,0x5327,0x5328,0x5329,0x532B,0x532C,0x532D, 0x5330,0x5332,0x5335,0x533C,0x533D,0x533E,0x5342,0x534C, 0x534B,0x5359,0x535B,0x5361,0x5363,0x5365,0x536C,0x536D, 0x5372,0x5379,0x537E,0x5383,0x5387,0x5388,0x538E,0x5393, 0x5394,0x5399,0x539D,0x53A1,0x53A4,0x53AA,0x53AB,0x53AF, 0x53B2,0x53B4,0x53B5,0x53B7,0x53B8,0x53BA,0x53BD,0x53C0, 0x53C5,0x53CF,0x53D2,0x53D3,0x53D5,0x53DA,0x53DD,0x53DE, 0x53E0,0x53E6,0x53E7,0x53F5,0x5402,0x5413,0x541A,0x5421, 0x5427,0x5428,0x542A,0x542F,0x5431,0x5434,0x5435,0x5443, 0x5444,0x5447,0x544D,0x544F,0x545E,0x5462,0x5464,0x5466, 0x5467,0x5469,0x546B,0x546D,0x546E,0x5474,0x547F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 54, Array index 0x0C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5481,0x5483,0x5485,0x5488,0x5489,0x548D,0x5491, 0x5495,0x5496,0x549C,0x549F,0x54A1,0x54A6,0x54A7,0x54A9, 0x54AA,0x54AD,0x54AE,0x54B1,0x54B7,0x54B9,0x54BA,0x54BB, 0x54BF,0x54C6,0x54CA,0x54CD,0x54CE,0x54E0,0x54EA,0x54EC, 0x54EF,0x54F6,0x54FC,0x54FE,0x54FF,0x5500,0x5501,0x5505, 0x5508,0x5509,0x550C,0x550D,0x550E,0x5515,0x552A,0x552B, 0x5532,0x5535,0x5536,0x553B,0x553C,0x553D,0x5541,0x5547, 0x5549,0x554A,0x554D,0x5550,0x5551,0x5558,0x555A,0x555B, 0x555E,0x5560,0x5561,0x5564,0x5566,0x557F,0x5581,0x5582, 0x5586,0x5588,0x558E,0x558F,0x5591,0x5592,0x5593,0x5594, 0x5597,0x55A3,0x55A4,0x55AD,0x55B2,0x55BF,0x55C1,0x55C3, 0x55C6,0x55C9,0x55CB,0x55CC,0x55CE,0x55D1,0x55D2,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 55, Array index 0x0D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x55D3,0x55D7,0x55D8,0x55DB,0x55DE,0x55E2,0x55E9, 0x55F6,0x55FF,0x5605,0x5608,0x560A,0x560D,0x560E,0x560F, 0x5610,0x5611,0x5612,0x5619,0x562C,0x5630,0x5633,0x5635, 0x5637,0x5639,0x563B,0x563C,0x563D,0x563F,0x5640,0x5641, 0x5643,0x5644,0x5646,0x5649,0x564B,0x564D,0x564F,0x5654, 0x565E,0x5660,0x5661,0x5662,0x5663,0x5666,0x5669,0x566D, 0x566F,0x5671,0x5672,0x5675,0x5684,0x5685,0x5688,0x568B, 0x568C,0x5695,0x5699,0x569A,0x569D,0x569E,0x569F,0x56A6, 0x56A7,0x56A8,0x56A9,0x56AB,0x56AC,0x56AD,0x56B1,0x56B3, 0x56B7,0x56BE,0x56C5,0x56C9,0x56CA,0x56CB,0x56CF,0x56D0, 0x56CC,0x56CD,0x56D9,0x56DC,0x56DD,0x56DF,0x56E1,0x56E4, 0x56E5,0x56E6,0x56E7,0x56E8,0x56F1,0x56EB,0x56ED,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 56, Array index 0x0E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x56F6,0x56F7,0x5701,0x5702,0x5707,0x570A,0x570C, 0x5711,0x5715,0x571A,0x571B,0x571D,0x5720,0x5722,0x5723, 0x5724,0x5725,0x5729,0x572A,0x572C,0x572E,0x572F,0x5733, 0x5734,0x573D,0x573E,0x573F,0x5745,0x5746,0x574C,0x574D, 0x5752,0x5762,0x5765,0x5767,0x5768,0x576B,0x576D,0x576E, 0x576F,0x5770,0x5771,0x5773,0x5774,0x5775,0x5777,0x5779, 0x577A,0x577B,0x577C,0x577E,0x5781,0x5783,0x578C,0x5794, 0x5797,0x5799,0x579A,0x579C,0x579D,0x579E,0x579F,0x57A1, 0x5795,0x57A7,0x57A8,0x57A9,0x57AC,0x57B8,0x57BD,0x57C7, 0x57C8,0x57CC,0x57CF,0x57D5,0x57DD,0x57DE,0x57E4,0x57E6, 0x57E7,0x57E9,0x57ED,0x57F0,0x57F5,0x57F6,0x57F8,0x57FD, 0x57FE,0x57FF,0x5803,0x5804,0x5808,0x5809,0x57E1,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 57, Array index 0x0F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x580C,0x580D,0x581B,0x581E,0x581F,0x5820,0x5826, 0x5827,0x582D,0x5832,0x5839,0x583F,0x5849,0x584C,0x584D, 0x584F,0x5850,0x5855,0x585F,0x5861,0x5864,0x5867,0x5868, 0x5878,0x587C,0x587F,0x5880,0x5881,0x5887,0x5888,0x5889, 0x588A,0x588C,0x588D,0x588F,0x5890,0x5894,0x5896,0x589D, 0x58A0,0x58A1,0x58A2,0x58A6,0x58A9,0x58B1,0x58B2,0x58C4, 0x58BC,0x58C2,0x58C8,0x58CD,0x58CE,0x58D0,0x58D2,0x58D4, 0x58D6,0x58DA,0x58DD,0x58E1,0x58E2,0x58E9,0x58F3,0x5905, 0x5906,0x590B,0x590C,0x5912,0x5913,0x5914,0x8641,0x591D, 0x5921,0x5923,0x5924,0x5928,0x592F,0x5930,0x5933,0x5935, 0x5936,0x593F,0x5943,0x5946,0x5952,0x5953,0x5959,0x595B, 0x595D,0x595E,0x595F,0x5961,0x5963,0x596B,0x596D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 58, Array index 0x1000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x596F,0x5972,0x5975,0x5976,0x5979,0x597B,0x597C, 0x598B,0x598C,0x598E,0x5992,0x5995,0x5997,0x599F,0x59A4, 0x59A7,0x59AD,0x59AE,0x59AF,0x59B0,0x59B3,0x59B7,0x59BA, 0x59BC,0x59C1,0x59C3,0x59C4,0x59C8,0x59CA,0x59CD,0x59D2, 0x59DD,0x59DE,0x59DF,0x59E3,0x59E4,0x59E7,0x59EE,0x59EF, 0x59F1,0x59F2,0x59F4,0x59F7,0x5A00,0x5A04,0x5A0C,0x5A0D, 0x5A0E,0x5A12,0x5A13,0x5A1E,0x5A23,0x5A24,0x5A27,0x5A28, 0x5A2A,0x5A2D,0x5A30,0x5A44,0x5A45,0x5A47,0x5A48,0x5A4C, 0x5A50,0x5A55,0x5A5E,0x5A63,0x5A65,0x5A67,0x5A6D,0x5A77, 0x5A7A,0x5A7B,0x5A7E,0x5A8B,0x5A90,0x5A93,0x5A96,0x5A99, 0x5A9C,0x5A9E,0x5A9F,0x5AA0,0x5AA2,0x5AA7,0x5AAC,0x5AB1, 0x5AB2,0x5AB3,0x5AB5,0x5AB8,0x5ABA,0x5ABB,0x5ABF,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 59, Array index 0x1100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5AC4,0x5AC6,0x5AC8,0x5ACF,0x5ADA,0x5ADC,0x5AE0, 0x5AE5,0x5AEA,0x5AEE,0x5AF5,0x5AF6,0x5AFD,0x5B00,0x5B01, 0x5B08,0x5B17,0x5B34,0x5B19,0x5B1B,0x5B1D,0x5B21,0x5B25, 0x5B2D,0x5B38,0x5B41,0x5B4B,0x5B4C,0x5B52,0x5B56,0x5B5E, 0x5B68,0x5B6E,0x5B6F,0x5B7C,0x5B7D,0x5B7E,0x5B7F,0x5B81, 0x5B84,0x5B86,0x5B8A,0x5B8E,0x5B90,0x5B91,0x5B93,0x5B94, 0x5B96,0x5BA8,0x5BA9,0x5BAC,0x5BAD,0x5BAF,0x5BB1,0x5BB2, 0x5BB7,0x5BBA,0x5BBC,0x5BC0,0x5BC1,0x5BCD,0x5BCF,0x5BD6, 0x5BD7,0x5BD8,0x5BD9,0x5BDA,0x5BE0,0x5BEF,0x5BF1,0x5BF4, 0x5BFD,0x5C0C,0x5C17,0x5C1E,0x5C1F,0x5C23,0x5C26,0x5C29, 0x5C2B,0x5C2C,0x5C2E,0x5C30,0x5C32,0x5C35,0x5C36,0x5C59, 0x5C5A,0x5C5C,0x5C62,0x5C63,0x5C67,0x5C68,0x5C69,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 60, Array index 0x1200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5C6D,0x5C70,0x5C74,0x5C75,0x5C7A,0x5C7B,0x5C7C, 0x5C7D,0x5C87,0x5C88,0x5C8A,0x5C8F,0x5C92,0x5C9D,0x5C9F, 0x5CA0,0x5CA2,0x5CA3,0x5CA6,0x5CAA,0x5CB2,0x5CB4,0x5CB5, 0x5CBA,0x5CC9,0x5CCB,0x5CD2,0x5CDD,0x5CD7,0x5CEE,0x5CF1, 0x5CF2,0x5CF4,0x5D01,0x5D06,0x5D0D,0x5D12,0x5D2B,0x5D23, 0x5D24,0x5D26,0x5D27,0x5D31,0x5D34,0x5D39,0x5D3D,0x5D3F, 0x5D42,0x5D43,0x5D46,0x5D48,0x5D55,0x5D51,0x5D59,0x5D4A, 0x5D5F,0x5D60,0x5D61,0x5D62,0x5D64,0x5D6A,0x5D6D,0x5D70, 0x5D79,0x5D7A,0x5D7E,0x5D7F,0x5D81,0x5D83,0x5D88,0x5D8A, 0x5D92,0x5D93,0x5D94,0x5D95,0x5D99,0x5D9B,0x5D9F,0x5DA0, 0x5DA7,0x5DAB,0x5DB0,0x5DB4,0x5DB8,0x5DB9,0x5DC3,0x5DC7, 0x5DCB,0x5DD0,0x5DCE,0x5DD8,0x5DD9,0x5DE0,0x5DE4,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 61, Array index 0x1300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5DE9,0x5DF8,0x5DF9,0x5E00,0x5E07,0x5E0D,0x5E12, 0x5E14,0x5E15,0x5E18,0x5E1F,0x5E20,0x5E2E,0x5E28,0x5E32, 0x5E35,0x5E3E,0x5E4B,0x5E50,0x5E49,0x5E51,0x5E56,0x5E58, 0x5E5B,0x5E5C,0x5E5E,0x5E68,0x5E6A,0x5E6B,0x5E6C,0x5E6D, 0x5E6E,0x5E70,0x5E80,0x5E8B,0x5E8E,0x5EA2,0x5EA4,0x5EA5, 0x5EA8,0x5EAA,0x5EAC,0x5EB1,0x5EB3,0x5EBD,0x5EBE,0x5EBF, 0x5EC6,0x5ECC,0x5ECB,0x5ECE,0x5ED1,0x5ED2,0x5ED4,0x5ED5, 0x5EDC,0x5EDE,0x5EE5,0x5EEB,0x5F02,0x5F06,0x5F07,0x5F08, 0x5F0E,0x5F19,0x5F1C,0x5F1D,0x5F21,0x5F22,0x5F23,0x5F24, 0x5F28,0x5F2B,0x5F2C,0x5F2E,0x5F30,0x5F34,0x5F36,0x5F3B, 0x5F3D,0x5F3F,0x5F40,0x5F44,0x5F45,0x5F47,0x5F4D,0x5F50, 0x5F54,0x5F58,0x5F5B,0x5F60,0x5F63,0x5F64,0x5F67,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 62, Array index 0x1400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5F6F,0x5F72,0x5F74,0x5F75,0x5F78,0x5F7A,0x5F7D, 0x5F7E,0x5F89,0x5F8D,0x5F8F,0x5F96,0x5F9C,0x5F9D,0x5FA2, 0x5FA7,0x5FAB,0x5FA4,0x5FAC,0x5FAF,0x5FB0,0x5FB1,0x5FB8, 0x5FC4,0x5FC7,0x5FC8,0x5FC9,0x5FCB,0x5FD0,0x5FD1,0x5FD2, 0x5FD3,0x5FD4,0x5FDE,0x5FE1,0x5FE2,0x5FE8,0x5FE9,0x5FEA, 0x5FEC,0x5FED,0x5FEE,0x5FEF,0x5FF2,0x5FF3,0x5FF6,0x5FFA, 0x5FFC,0x6007,0x600A,0x600D,0x6013,0x6014,0x6017,0x6018, 0x601A,0x601F,0x6024,0x602D,0x6033,0x6035,0x6040,0x6047, 0x6048,0x6049,0x604C,0x6051,0x6054,0x6056,0x6057,0x605D, 0x6061,0x6067,0x6071,0x607E,0x607F,0x6082,0x6086,0x6088, 0x608A,0x608E,0x6091,0x6093,0x6095,0x6098,0x609D,0x609E, 0x60A2,0x60A4,0x60A5,0x60A8,0x60B0,0x60B1,0x60B7,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 63, Array index 0x1500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x60BB,0x60BE,0x60C2,0x60C4,0x60C8,0x60C9,0x60CA, 0x60CB,0x60CE,0x60CF,0x60D4,0x60D5,0x60D9,0x60DB,0x60DD, 0x60DE,0x60E2,0x60E5,0x60F2,0x60F5,0x60F8,0x60FC,0x60FD, 0x6102,0x6107,0x610A,0x610C,0x6110,0x6111,0x6112,0x6113, 0x6114,0x6116,0x6117,0x6119,0x611C,0x611E,0x6122,0x612A, 0x612B,0x6130,0x6131,0x6135,0x6136,0x6137,0x6139,0x6141, 0x6145,0x6146,0x6149,0x615E,0x6160,0x616C,0x6172,0x6178, 0x617B,0x617C,0x617F,0x6180,0x6181,0x6183,0x6184,0x618B, 0x618D,0x6192,0x6193,0x6197,0x6198,0x619C,0x619D,0x619F, 0x61A0,0x61A5,0x61A8,0x61AA,0x61AD,0x61B8,0x61B9,0x61BC, 0x61C0,0x61C1,0x61C2,0x61CE,0x61CF,0x61D5,0x61DC,0x61DD, 0x61DE,0x61DF,0x61E1,0x61E2,0x61E7,0x61E9,0x61E5,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 64, Array index 0x1600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x61EC,0x61ED,0x61EF,0x6201,0x6203,0x6204,0x6207, 0x6213,0x6215,0x621C,0x6220,0x6222,0x6223,0x6227,0x6229, 0x622B,0x6239,0x623D,0x6242,0x6243,0x6244,0x6246,0x624C, 0x6250,0x6251,0x6252,0x6254,0x6256,0x625A,0x625C,0x6264, 0x626D,0x626F,0x6273,0x627A,0x627D,0x628D,0x628E,0x628F, 0x6290,0x62A6,0x62A8,0x62B3,0x62B6,0x62B7,0x62BA,0x62BE, 0x62BF,0x62C4,0x62CE,0x62D5,0x62D6,0x62DA,0x62EA,0x62F2, 0x62F4,0x62FC,0x62FD,0x6303,0x6304,0x630A,0x630B,0x630D, 0x6310,0x6313,0x6316,0x6318,0x6329,0x632A,0x632D,0x6335, 0x6336,0x6339,0x633C,0x6341,0x6342,0x6343,0x6344,0x6346, 0x634A,0x634B,0x634E,0x6352,0x6353,0x6354,0x6358,0x635B, 0x6365,0x6366,0x636C,0x636D,0x6371,0x6374,0x6375,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 65, Array index 0x1700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6378,0x637C,0x637D,0x637F,0x6382,0x6384,0x6387, 0x638A,0x6390,0x6394,0x6395,0x6399,0x639A,0x639E,0x63A4, 0x63A6,0x63AD,0x63AE,0x63AF,0x63BD,0x63C1,0x63C5,0x63C8, 0x63CE,0x63D1,0x63D3,0x63D4,0x63D5,0x63DC,0x63E0,0x63E5, 0x63EA,0x63EC,0x63F2,0x63F3,0x63F5,0x63F8,0x63F9,0x6409, 0x640A,0x6410,0x6412,0x6414,0x6418,0x641E,0x6420,0x6422, 0x6424,0x6425,0x6429,0x642A,0x642F,0x6430,0x6435,0x643D, 0x643F,0x644B,0x644F,0x6451,0x6452,0x6453,0x6454,0x645A, 0x645B,0x645C,0x645D,0x645F,0x6460,0x6461,0x6463,0x646D, 0x6473,0x6474,0x647B,0x647D,0x6485,0x6487,0x648F,0x6490, 0x6491,0x6498,0x6499,0x649B,0x649D,0x649F,0x64A1,0x64A3, 0x64A6,0x64A8,0x64AC,0x64B3,0x64BD,0x64BE,0x64BF,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 66, Array index 0x1800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x64C4,0x64C9,0x64CA,0x64CB,0x64CC,0x64CE,0x64D0, 0x64D1,0x64D5,0x64D7,0x64E4,0x64E5,0x64E9,0x64EA,0x64ED, 0x64F0,0x64F5,0x64F7,0x64FB,0x64FF,0x6501,0x6504,0x6508, 0x6509,0x650A,0x650F,0x6513,0x6514,0x6516,0x6519,0x651B, 0x651E,0x651F,0x6522,0x6526,0x6529,0x652E,0x6531,0x653A, 0x653C,0x653D,0x6543,0x6547,0x6549,0x6550,0x6552,0x6554, 0x655F,0x6560,0x6567,0x656B,0x657A,0x657D,0x6581,0x6585, 0x658A,0x6592,0x6595,0x6598,0x659D,0x65A0,0x65A3,0x65A6, 0x65AE,0x65B2,0x65B3,0x65B4,0x65BF,0x65C2,0x65C8,0x65C9, 0x65CE,0x65D0,0x65D4,0x65D6,0x65D8,0x65DF,0x65F0,0x65F2, 0x65F4,0x65F5,0x65F9,0x65FE,0x65FF,0x6600,0x6604,0x6608, 0x6609,0x660D,0x6611,0x6612,0x6615,0x6616,0x661D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 67, Array index 0x1900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x661E,0x6621,0x6622,0x6623,0x6624,0x6626,0x6629, 0x662A,0x662B,0x662C,0x662E,0x6630,0x6631,0x6633,0x6639, 0x6637,0x6640,0x6645,0x6646,0x664A,0x664C,0x6651,0x664E, 0x6657,0x6658,0x6659,0x665B,0x665C,0x6660,0x6661,0x66FB, 0x666A,0x666B,0x666C,0x667E,0x6673,0x6675,0x667F,0x6677, 0x6678,0x6679,0x667B,0x6680,0x667C,0x668B,0x668C,0x668D, 0x6690,0x6692,0x6699,0x669A,0x669B,0x669C,0x669F,0x66A0, 0x66A4,0x66AD,0x66B1,0x66B2,0x66B5,0x66BB,0x66BF,0x66C0, 0x66C2,0x66C3,0x66C8,0x66CC,0x66CE,0x66CF,0x66D4,0x66DB, 0x66DF,0x66E8,0x66EB,0x66EC,0x66EE,0x66FA,0x6705,0x6707, 0x670E,0x6713,0x6719,0x671C,0x6720,0x6722,0x6733,0x673E, 0x6745,0x6747,0x6748,0x674C,0x6754,0x6755,0x675D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 68, Array index 0x1A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6766,0x676C,0x676E,0x6774,0x6776,0x677B,0x6781, 0x6784,0x678E,0x678F,0x6791,0x6793,0x6796,0x6798,0x6799, 0x679B,0x67B0,0x67B1,0x67B2,0x67B5,0x67BB,0x67BC,0x67BD, 0x67F9,0x67C0,0x67C2,0x67C3,0x67C5,0x67C8,0x67C9,0x67D2, 0x67D7,0x67D9,0x67DC,0x67E1,0x67E6,0x67F0,0x67F2,0x67F6, 0x67F7,0x6852,0x6814,0x6819,0x681D,0x681F,0x6828,0x6827, 0x682C,0x682D,0x682F,0x6830,0x6831,0x6833,0x683B,0x683F, 0x6844,0x6845,0x684A,0x684C,0x6855,0x6857,0x6858,0x685B, 0x686B,0x686E,0x686F,0x6870,0x6871,0x6872,0x6875,0x6879, 0x687A,0x687B,0x687C,0x6882,0x6884,0x6886,0x6888,0x6896, 0x6898,0x689A,0x689C,0x68A1,0x68A3,0x68A5,0x68A9,0x68AA, 0x68AE,0x68B2,0x68BB,0x68C5,0x68C8,0x68CC,0x68CF,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 69, Array index 0x1B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x68D0,0x68D1,0x68D3,0x68D6,0x68D9,0x68DC,0x68DD, 0x68E5,0x68E8,0x68EA,0x68EB,0x68EC,0x68ED,0x68F0,0x68F1, 0x68F5,0x68F6,0x68FB,0x68FC,0x68FD,0x6906,0x6909,0x690A, 0x6910,0x6911,0x6913,0x6916,0x6917,0x6931,0x6933,0x6935, 0x6938,0x693B,0x6942,0x6945,0x6949,0x694E,0x6957,0x695B, 0x6963,0x6964,0x6965,0x6966,0x6968,0x6969,0x696C,0x6970, 0x6971,0x6972,0x697A,0x697B,0x697F,0x6980,0x698D,0x6992, 0x6996,0x6998,0x69A1,0x69A5,0x69A6,0x69A8,0x69AB,0x69AD, 0x69AF,0x69B7,0x69B8,0x69BA,0x69BC,0x69C5,0x69C8,0x69D1, 0x69D6,0x69D7,0x69E2,0x69E5,0x69EE,0x69EF,0x69F1,0x69F3, 0x69F5,0x69FE,0x6A00,0x6A01,0x6A03,0x6A0F,0x6A11,0x6A15, 0x6A1A,0x6A1D,0x6A20,0x6A24,0x6A28,0x6A30,0x6A32,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 70, Array index 0x1C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6A34,0x6A37,0x6A3B,0x6A3E,0x6A3F,0x6A45,0x6A46, 0x6A49,0x6A4A,0x6A4E,0x6A50,0x6A51,0x6A52,0x6A55,0x6A56, 0x6A5B,0x6A64,0x6A67,0x6A6A,0x6A71,0x6A73,0x6A7E,0x6A81, 0x6A83,0x6A86,0x6A87,0x6A89,0x6A8B,0x6A91,0x6A9B,0x6A9D, 0x6A9E,0x6A9F,0x6AA5,0x6AAB,0x6AAF,0x6AB0,0x6AB1,0x6AB4, 0x6ABD,0x6ABE,0x6ABF,0x6AC6,0x6AC9,0x6AC8,0x6ACC,0x6AD0, 0x6AD4,0x6AD5,0x6AD6,0x6ADC,0x6ADD,0x6AE4,0x6AE7,0x6AEC, 0x6AF0,0x6AF1,0x6AF2,0x6AFC,0x6AFD,0x6B02,0x6B03,0x6B06, 0x6B07,0x6B09,0x6B0F,0x6B10,0x6B11,0x6B17,0x6B1B,0x6B1E, 0x6B24,0x6B28,0x6B2B,0x6B2C,0x6B2F,0x6B35,0x6B36,0x6B3B, 0x6B3F,0x6B46,0x6B4A,0x6B4D,0x6B52,0x6B56,0x6B58,0x6B5D, 0x6B60,0x6B67,0x6B6B,0x6B6E,0x6B70,0x6B75,0x6B7D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 71, Array index 0x1D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6B7E,0x6B82,0x6B85,0x6B97,0x6B9B,0x6B9F,0x6BA0, 0x6BA2,0x6BA3,0x6BA8,0x6BA9,0x6BAC,0x6BAD,0x6BAE,0x6BB0, 0x6BB8,0x6BB9,0x6BBD,0x6BBE,0x6BC3,0x6BC4,0x6BC9,0x6BCC, 0x6BD6,0x6BDA,0x6BE1,0x6BE3,0x6BE6,0x6BE7,0x6BEE,0x6BF1, 0x6BF7,0x6BF9,0x6BFF,0x6C02,0x6C04,0x6C05,0x6C09,0x6C0D, 0x6C0E,0x6C10,0x6C12,0x6C19,0x6C1F,0x6C26,0x6C27,0x6C28, 0x6C2C,0x6C2E,0x6C33,0x6C35,0x6C36,0x6C3A,0x6C3B,0x6C3F, 0x6C4A,0x6C4B,0x6C4D,0x6C4F,0x6C52,0x6C54,0x6C59,0x6C5B, 0x6C5C,0x6C6B,0x6C6D,0x6C6F,0x6C74,0x6C76,0x6C78,0x6C79, 0x6C7B,0x6C85,0x6C86,0x6C87,0x6C89,0x6C94,0x6C95,0x6C97, 0x6C98,0x6C9C,0x6C9F,0x6CB0,0x6CB2,0x6CB4,0x6CC2,0x6CC6, 0x6CCD,0x6CCF,0x6CD0,0x6CD1,0x6CD2,0x6CD4,0x6CD6,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 72, Array index 0x1E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6CDA,0x6CDC,0x6CE0,0x6CE7,0x6CE9,0x6CEB,0x6CEC, 0x6CEE,0x6CF2,0x6CF4,0x6D04,0x6D07,0x6D0A,0x6D0E,0x6D0F, 0x6D11,0x6D13,0x6D1A,0x6D26,0x6D27,0x6D28,0x6C67,0x6D2E, 0x6D2F,0x6D31,0x6D39,0x6D3C,0x6D3F,0x6D57,0x6D5E,0x6D5F, 0x6D61,0x6D65,0x6D67,0x6D6F,0x6D70,0x6D7C,0x6D82,0x6D87, 0x6D91,0x6D92,0x6D94,0x6D96,0x6D97,0x6D98,0x6DAA,0x6DAC, 0x6DB4,0x6DB7,0x6DB9,0x6DBD,0x6DBF,0x6DC4,0x6DC8,0x6DCA, 0x6DCE,0x6DCF,0x6DD6,0x6DDB,0x6DDD,0x6DDF,0x6DE0,0x6DE2, 0x6DE5,0x6DE9,0x6DEF,0x6DF0,0x6DF4,0x6DF6,0x6DFC,0x6E00, 0x6E04,0x6E1E,0x6E22,0x6E27,0x6E32,0x6E36,0x6E39,0x6E3B, 0x6E3C,0x6E44,0x6E45,0x6E48,0x6E49,0x6E4B,0x6E4F,0x6E51, 0x6E52,0x6E53,0x6E54,0x6E57,0x6E5C,0x6E5D,0x6E5E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 73, Array index 0x1F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6E62,0x6E63,0x6E68,0x6E73,0x6E7B,0x6E7D,0x6E8D, 0x6E93,0x6E99,0x6EA0,0x6EA7,0x6EAD,0x6EAE,0x6EB1,0x6EB3, 0x6EBB,0x6EBF,0x6EC0,0x6EC1,0x6EC3,0x6EC7,0x6EC8,0x6ECA, 0x6ECD,0x6ECE,0x6ECF,0x6EEB,0x6EED,0x6EEE,0x6EF9,0x6EFB, 0x6EFD,0x6F04,0x6F08,0x6F0A,0x6F0C,0x6F0D,0x6F16,0x6F18, 0x6F1A,0x6F1B,0x6F26,0x6F29,0x6F2A,0x6F2F,0x6F30,0x6F33, 0x6F36,0x6F3B,0x6F3C,0x6F2D,0x6F4F,0x6F51,0x6F52,0x6F53, 0x6F57,0x6F59,0x6F5A,0x6F5D,0x6F5E,0x6F61,0x6F62,0x6F68, 0x6F6C,0x6F7D,0x6F7E,0x6F83,0x6F87,0x6F88,0x6F8B,0x6F8C, 0x6F8D,0x6F90,0x6F92,0x6F93,0x6F94,0x6F96,0x6F9A,0x6F9F, 0x6FA0,0x6FA5,0x6FA6,0x6FA7,0x6FA8,0x6FAE,0x6FAF,0x6FB0, 0x6FB5,0x6FB6,0x6FBC,0x6FC5,0x6FC7,0x6FC8,0x6FCA,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 74, Array index 0x2000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6FDA,0x6FDE,0x6FE8,0x6FE9,0x6FF0,0x6FF5,0x6FF9, 0x6FFC,0x6FFD,0x7000,0x7005,0x7006,0x7007,0x700D,0x7017, 0x7020,0x7023,0x702F,0x7034,0x7037,0x7039,0x703C,0x7043, 0x7044,0x7048,0x7049,0x704A,0x704B,0x7054,0x7055,0x705D, 0x705E,0x704E,0x7064,0x7065,0x706C,0x706E,0x7075,0x7076, 0x707E,0x7081,0x7085,0x7086,0x7094,0x7095,0x7096,0x7097, 0x7098,0x709B,0x70A4,0x70AB,0x70B0,0x70B1,0x70B4,0x70B7, 0x70CA,0x70D1,0x70D3,0x70D4,0x70D5,0x70D6,0x70D8,0x70DC, 0x70E4,0x70FA,0x7103,0x7104,0x7105,0x7106,0x7107,0x710B, 0x710C,0x710F,0x711E,0x7120,0x712B,0x712D,0x712F,0x7130, 0x7131,0x7138,0x7141,0x7145,0x7146,0x7147,0x714A,0x714B, 0x7150,0x7152,0x7157,0x715A,0x715C,0x715E,0x7160,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 75, Array index 0x2100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7168,0x7179,0x7180,0x7185,0x7187,0x718C,0x7192, 0x719A,0x719B,0x71A0,0x71A2,0x71AF,0x71B0,0x71B2,0x71B3, 0x71BA,0x71BF,0x71C0,0x71C1,0x71C4,0x71CB,0x71CC,0x71D3, 0x71D6,0x71D9,0x71DA,0x71DC,0x71F8,0x71FE,0x7200,0x7207, 0x7208,0x7209,0x7213,0x7217,0x721A,0x721D,0x721F,0x7224, 0x722B,0x722F,0x7234,0x7238,0x7239,0x7241,0x7242,0x7243, 0x7245,0x724E,0x724F,0x7250,0x7253,0x7255,0x7256,0x725A, 0x725C,0x725E,0x7260,0x7263,0x7268,0x726B,0x726E,0x726F, 0x7271,0x7277,0x7278,0x727B,0x727C,0x727F,0x7284,0x7289, 0x728D,0x728E,0x7293,0x729B,0x72A8,0x72AD,0x72AE,0x72B1, 0x72B4,0x72BE,0x72C1,0x72C7,0x72C9,0x72CC,0x72D5,0x72D6, 0x72D8,0x72DF,0x72E5,0x72F3,0x72F4,0x72FA,0x72FB,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 76, Array index 0x2200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x72FE,0x7302,0x7304,0x7305,0x7307,0x730B,0x730D, 0x7312,0x7313,0x7318,0x7319,0x731E,0x7322,0x7324,0x7327, 0x7328,0x732C,0x7331,0x7332,0x7335,0x733A,0x733B,0x733D, 0x7343,0x734D,0x7350,0x7352,0x7356,0x7358,0x735D,0x735E, 0x735F,0x7360,0x7366,0x7367,0x7369,0x736B,0x736C,0x736E, 0x736F,0x7371,0x7377,0x7379,0x737C,0x7380,0x7381,0x7383, 0x7385,0x7386,0x738E,0x7390,0x7393,0x7395,0x7397,0x7398, 0x739C,0x739E,0x739F,0x73A0,0x73A2,0x73A5,0x73A6,0x73AA, 0x73AB,0x73AD,0x73B5,0x73B7,0x73B9,0x73BC,0x73BD,0x73BF, 0x73C5,0x73C6,0x73C9,0x73CB,0x73CC,0x73CF,0x73D2,0x73D3, 0x73D6,0x73D9,0x73DD,0x73E1,0x73E3,0x73E6,0x73E7,0x73E9, 0x73F4,0x73F5,0x73F7,0x73F9,0x73FA,0x73FB,0x73FD,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 77, Array index 0x2300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x73FF,0x7400,0x7401,0x7404,0x7407,0x740A,0x7411, 0x741A,0x741B,0x7424,0x7426,0x7428,0x7429,0x742A,0x742B, 0x742C,0x742D,0x742E,0x742F,0x7430,0x7431,0x7439,0x7440, 0x7443,0x7444,0x7446,0x7447,0x744B,0x744D,0x7451,0x7452, 0x7457,0x745D,0x7462,0x7466,0x7467,0x7468,0x746B,0x746D, 0x746E,0x7471,0x7472,0x7480,0x7481,0x7485,0x7486,0x7487, 0x7489,0x748F,0x7490,0x7491,0x7492,0x7498,0x7499,0x749A, 0x749C,0x749F,0x74A0,0x74A1,0x74A3,0x74A6,0x74A8,0x74A9, 0x74AA,0x74AB,0x74AE,0x74AF,0x74B1,0x74B2,0x74B5,0x74B9, 0x74BB,0x74BF,0x74C8,0x74C9,0x74CC,0x74D0,0x74D3,0x74D8, 0x74DA,0x74DB,0x74DE,0x74DF,0x74E4,0x74E8,0x74EA,0x74EB, 0x74EF,0x74F4,0x74FA,0x74FB,0x74FC,0x74FF,0x7506,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 78, Array index 0x2400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7512,0x7516,0x7517,0x7520,0x7521,0x7524,0x7527, 0x7529,0x752A,0x752F,0x7536,0x7539,0x753D,0x753E,0x753F, 0x7540,0x7543,0x7547,0x7548,0x754E,0x7550,0x7552,0x7557, 0x755E,0x755F,0x7561,0x756F,0x7571,0x7579,0x757A,0x757B, 0x757C,0x757D,0x757E,0x7581,0x7585,0x7590,0x7592,0x7593, 0x7595,0x7599,0x759C,0x75A2,0x75A4,0x75B4,0x75BA,0x75BF, 0x75C0,0x75C1,0x75C4,0x75C6,0x75CC,0x75CE,0x75CF,0x75D7, 0x75DC,0x75DF,0x75E0,0x75E1,0x75E4,0x75E7,0x75EC,0x75EE, 0x75EF,0x75F1,0x75F9,0x7600,0x7602,0x7603,0x7604,0x7607, 0x7608,0x760A,0x760C,0x760F,0x7612,0x7613,0x7615,0x7616, 0x7619,0x761B,0x761C,0x761D,0x761E,0x7623,0x7625,0x7626, 0x7629,0x762D,0x7632,0x7633,0x7635,0x7638,0x7639,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 79, Array index 0x2500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x763A,0x763C,0x764A,0x7640,0x7641,0x7643,0x7644, 0x7645,0x7649,0x764B,0x7655,0x7659,0x765F,0x7664,0x7665, 0x766D,0x766E,0x766F,0x7671,0x7674,0x7681,0x7685,0x768C, 0x768D,0x7695,0x769B,0x769C,0x769D,0x769F,0x76A0,0x76A2, 0x76A3,0x76A4,0x76A5,0x76A6,0x76A7,0x76A8,0x76AA,0x76AD, 0x76BD,0x76C1,0x76C5,0x76C9,0x76CB,0x76CC,0x76CE,0x76D4, 0x76D9,0x76E0,0x76E6,0x76E8,0x76EC,0x76F0,0x76F1,0x76F6, 0x76F9,0x76FC,0x7700,0x7706,0x770A,0x770E,0x7712,0x7714, 0x7715,0x7717,0x7719,0x771A,0x771C,0x7722,0x7728,0x772D, 0x772E,0x772F,0x7734,0x7735,0x7736,0x7739,0x773D,0x773E, 0x7742,0x7745,0x7746,0x774A,0x774D,0x774E,0x774F,0x7752, 0x7756,0x7757,0x775C,0x775E,0x775F,0x7760,0x7762,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 80, Array index 0x2600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7764,0x7767,0x776A,0x776C,0x7770,0x7772,0x7773, 0x7774,0x777A,0x777D,0x7780,0x7784,0x778C,0x778D,0x7794, 0x7795,0x7796,0x779A,0x779F,0x77A2,0x77A7,0x77AA,0x77AE, 0x77AF,0x77B1,0x77B5,0x77BE,0x77C3,0x77C9,0x77D1,0x77D2, 0x77D5,0x77D9,0x77DE,0x77DF,0x77E0,0x77E4,0x77E6,0x77EA, 0x77EC,0x77F0,0x77F1,0x77F4,0x77F8,0x77FB,0x7805,0x7806, 0x7809,0x780D,0x780E,0x7811,0x781D,0x7821,0x7822,0x7823, 0x782D,0x782E,0x7830,0x7835,0x7837,0x7843,0x7844,0x7847, 0x7848,0x784C,0x784E,0x7852,0x785C,0x785E,0x7860,0x7861, 0x7863,0x7864,0x7868,0x786A,0x786E,0x787A,0x787E,0x788A, 0x788F,0x7894,0x7898,0x78A1,0x789D,0x789E,0x789F,0x78A4, 0x78A8,0x78AC,0x78AD,0x78B0,0x78B1,0x78B2,0x78B3,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 81, Array index 0x2700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x78BB,0x78BD,0x78BF,0x78C7,0x78C8,0x78C9,0x78CC, 0x78CE,0x78D2,0x78D3,0x78D5,0x78D6,0x78E4,0x78DB,0x78DF, 0x78E0,0x78E1,0x78E6,0x78EA,0x78F2,0x78F3,0x7900,0x78F6, 0x78F7,0x78FA,0x78FB,0x78FF,0x7906,0x790C,0x7910,0x791A, 0x791C,0x791E,0x791F,0x7920,0x7925,0x7927,0x7929,0x792D, 0x7931,0x7934,0x7935,0x793B,0x793D,0x793F,0x7944,0x7945, 0x7946,0x794A,0x794B,0x794F,0x7951,0x7954,0x7958,0x795B, 0x795C,0x7967,0x7969,0x796B,0x7972,0x7979,0x797B,0x797C, 0x797E,0x798B,0x798C,0x7991,0x7993,0x7994,0x7995,0x7996, 0x7998,0x799B,0x799C,0x79A1,0x79A8,0x79A9,0x79AB,0x79AF, 0x79B1,0x79B4,0x79B8,0x79BB,0x79C2,0x79C4,0x79C7,0x79C8, 0x79CA,0x79CF,0x79D4,0x79D6,0x79DA,0x79DD,0x79DE,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 82, Array index 0x2800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x79E0,0x79E2,0x79E5,0x79EA,0x79EB,0x79ED,0x79F1, 0x79F8,0x79FC,0x7A02,0x7A03,0x7A07,0x7A09,0x7A0A,0x7A0C, 0x7A11,0x7A15,0x7A1B,0x7A1E,0x7A21,0x7A27,0x7A2B,0x7A2D, 0x7A2F,0x7A30,0x7A34,0x7A35,0x7A38,0x7A39,0x7A3A,0x7A44, 0x7A45,0x7A47,0x7A48,0x7A4C,0x7A55,0x7A56,0x7A59,0x7A5C, 0x7A5D,0x7A5F,0x7A60,0x7A65,0x7A67,0x7A6A,0x7A6D,0x7A75, 0x7A78,0x7A7E,0x7A80,0x7A82,0x7A85,0x7A86,0x7A8A,0x7A8B, 0x7A90,0x7A91,0x7A94,0x7A9E,0x7AA0,0x7AA3,0x7AAC,0x7AB3, 0x7AB5,0x7AB9,0x7ABB,0x7ABC,0x7AC6,0x7AC9,0x7ACC,0x7ACE, 0x7AD1,0x7ADB,0x7AE8,0x7AE9,0x7AEB,0x7AEC,0x7AF1,0x7AF4, 0x7AFB,0x7AFD,0x7AFE,0x7B07,0x7B14,0x7B1F,0x7B23,0x7B27, 0x7B29,0x7B2A,0x7B2B,0x7B2D,0x7B2E,0x7B2F,0x7B30,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 83, Array index 0x2900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7B31,0x7B34,0x7B3D,0x7B3F,0x7B40,0x7B41,0x7B47, 0x7B4E,0x7B55,0x7B60,0x7B64,0x7B66,0x7B69,0x7B6A,0x7B6D, 0x7B6F,0x7B72,0x7B73,0x7B77,0x7B84,0x7B89,0x7B8E,0x7B90, 0x7B91,0x7B96,0x7B9B,0x7B9E,0x7BA0,0x7BA5,0x7BAC,0x7BAF, 0x7BB0,0x7BB2,0x7BB5,0x7BB6,0x7BBA,0x7BBB,0x7BBC,0x7BBD, 0x7BC2,0x7BC5,0x7BC8,0x7BCA,0x7BD4,0x7BD6,0x7BD7,0x7BD9, 0x7BDA,0x7BDB,0x7BE8,0x7BEA,0x7BF2,0x7BF4,0x7BF5,0x7BF8, 0x7BF9,0x7BFA,0x7BFC,0x7BFE,0x7C01,0x7C02,0x7C03,0x7C04, 0x7C06,0x7C09,0x7C0B,0x7C0C,0x7C0E,0x7C0F,0x7C19,0x7C1B, 0x7C20,0x7C25,0x7C26,0x7C28,0x7C2C,0x7C31,0x7C33,0x7C34, 0x7C36,0x7C39,0x7C3A,0x7C46,0x7C4A,0x7C55,0x7C51,0x7C52, 0x7C53,0x7C59,0x7C5A,0x7C5B,0x7C5C,0x7C5D,0x7C5E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 84, Array index 0x2A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7C61,0x7C63,0x7C67,0x7C69,0x7C6D,0x7C6E,0x7C70, 0x7C72,0x7C79,0x7C7C,0x7C7D,0x7C86,0x7C87,0x7C8F,0x7C94, 0x7C9E,0x7CA0,0x7CA6,0x7CB0,0x7CB6,0x7CB7,0x7CBA,0x7CBB, 0x7CBC,0x7CBF,0x7CC4,0x7CC7,0x7CC8,0x7CC9,0x7CCD,0x7CCF, 0x7CD3,0x7CD4,0x7CD5,0x7CD7,0x7CD9,0x7CDA,0x7CDD,0x7CE6, 0x7CE9,0x7CEB,0x7CF5,0x7D03,0x7D07,0x7D08,0x7D09,0x7D0F, 0x7D11,0x7D12,0x7D13,0x7D16,0x7D1D,0x7D1E,0x7D23,0x7D26, 0x7D2A,0x7D2D,0x7D31,0x7D3C,0x7D3D,0x7D3E,0x7D40,0x7D41, 0x7D47,0x7D48,0x7D4D,0x7D51,0x7D53,0x7D57,0x7D59,0x7D5A, 0x7D5C,0x7D5D,0x7D65,0x7D67,0x7D6A,0x7D70,0x7D78,0x7D7A, 0x7D7B,0x7D7F,0x7D81,0x7D82,0x7D83,0x7D85,0x7D86,0x7D88, 0x7D8B,0x7D8C,0x7D8D,0x7D91,0x7D96,0x7D97,0x7D9D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 85, Array index 0x2B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7D9E,0x7DA6,0x7DA7,0x7DAA,0x7DB3,0x7DB6,0x7DB7, 0x7DB9,0x7DC2,0x7DC3,0x7DC4,0x7DC5,0x7DC6,0x7DCC,0x7DCD, 0x7DCE,0x7DD7,0x7DD9,0x7E00,0x7DE2,0x7DE5,0x7DE6,0x7DEA, 0x7DEB,0x7DED,0x7DF1,0x7DF5,0x7DF6,0x7DF9,0x7DFA,0x7E08, 0x7E10,0x7E11,0x7E15,0x7E17,0x7E1C,0x7E1D,0x7E20,0x7E27, 0x7E28,0x7E2C,0x7E2D,0x7E2F,0x7E33,0x7E36,0x7E3F,0x7E44, 0x7E45,0x7E47,0x7E4E,0x7E50,0x7E52,0x7E58,0x7E5F,0x7E61, 0x7E62,0x7E65,0x7E6B,0x7E6E,0x7E6F,0x7E73,0x7E78,0x7E7E, 0x7E81,0x7E86,0x7E87,0x7E8A,0x7E8D,0x7E91,0x7E95,0x7E98, 0x7E9A,0x7E9D,0x7E9E,0x7F3C,0x7F3B,0x7F3D,0x7F3E,0x7F3F, 0x7F43,0x7F44,0x7F47,0x7F4F,0x7F52,0x7F53,0x7F5B,0x7F5C, 0x7F5D,0x7F61,0x7F63,0x7F64,0x7F65,0x7F66,0x7F6D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 86, Array index 0x2C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7F71,0x7F7D,0x7F7E,0x7F7F,0x7F80,0x7F8B,0x7F8D, 0x7F8F,0x7F90,0x7F91,0x7F96,0x7F97,0x7F9C,0x7FA1,0x7FA2, 0x7FA6,0x7FAA,0x7FAD,0x7FB4,0x7FBC,0x7FBF,0x7FC0,0x7FC3, 0x7FC8,0x7FCE,0x7FCF,0x7FDB,0x7FDF,0x7FE3,0x7FE5,0x7FE8, 0x7FEC,0x7FEE,0x7FEF,0x7FF2,0x7FFA,0x7FFD,0x7FFE,0x7FFF, 0x8007,0x8008,0x800A,0x800D,0x800E,0x800F,0x8011,0x8013, 0x8014,0x8016,0x801D,0x801E,0x801F,0x8020,0x8024,0x8026, 0x802C,0x802E,0x8030,0x8034,0x8035,0x8037,0x8039,0x803A, 0x803C,0x803E,0x8040,0x8044,0x8060,0x8064,0x8066,0x806D, 0x8071,0x8075,0x8081,0x8088,0x808E,0x809C,0x809E,0x80A6, 0x80A7,0x80AB,0x80B8,0x80B9,0x80C8,0x80CD,0x80CF,0x80D2, 0x80D4,0x80D5,0x80D7,0x80D8,0x80E0,0x80ED,0x80EE,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 87, Array index 0x2D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x80F0,0x80F2,0x80F3,0x80F6,0x80F9,0x80FA,0x80FE, 0x8103,0x810B,0x8116,0x8117,0x8118,0x811C,0x811E,0x8120, 0x8124,0x8127,0x812C,0x8130,0x8135,0x813A,0x813C,0x8145, 0x8147,0x814A,0x814C,0x8152,0x8157,0x8160,0x8161,0x8167, 0x8168,0x8169,0x816D,0x816F,0x8177,0x8181,0x8190,0x8184, 0x8185,0x8186,0x818B,0x818E,0x8196,0x8198,0x819B,0x819E, 0x81A2,0x81AE,0x81B2,0x81B4,0x81BB,0x81CB,0x81C3,0x81C5, 0x81CA,0x81CE,0x81CF,0x81D5,0x81D7,0x81DB,0x81DD,0x81DE, 0x81E1,0x81E4,0x81EB,0x81EC,0x81F0,0x81F1,0x81F2,0x81F5, 0x81F6,0x81F8,0x81F9,0x81FD,0x81FF,0x8200,0x8203,0x820F, 0x8213,0x8214,0x8219,0x821A,0x821D,0x8221,0x8222,0x8228, 0x8232,0x8234,0x823A,0x8243,0x8244,0x8245,0x8246,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 88, Array index 0x2E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x824B,0x824E,0x824F,0x8251,0x8256,0x825C,0x8260, 0x8263,0x8267,0x826D,0x8274,0x827B,0x827D,0x827F,0x8280, 0x8281,0x8283,0x8284,0x8287,0x8289,0x828A,0x828E,0x8291, 0x8294,0x8296,0x8298,0x829A,0x829B,0x82A0,0x82A1,0x82A3, 0x82A4,0x82A7,0x82A8,0x82A9,0x82AA,0x82AE,0x82B0,0x82B2, 0x82B4,0x82B7,0x82BA,0x82BC,0x82BE,0x82BF,0x82C6,0x82D0, 0x82D5,0x82DA,0x82E0,0x82E2,0x82E4,0x82E8,0x82EA,0x82ED, 0x82EF,0x82F6,0x82F7,0x82FD,0x82FE,0x8300,0x8301,0x8307, 0x8308,0x830A,0x830B,0x8354,0x831B,0x831D,0x831E,0x831F, 0x8321,0x8322,0x832C,0x832D,0x832E,0x8330,0x8333,0x8337, 0x833A,0x833C,0x833D,0x8342,0x8343,0x8344,0x8347,0x834D, 0x834E,0x8351,0x8355,0x8356,0x8357,0x8370,0x8378,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 89, Array index 0x2F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x837D,0x837F,0x8380,0x8382,0x8384,0x8386,0x838D, 0x8392,0x8394,0x8395,0x8398,0x8399,0x839B,0x839C,0x839D, 0x83A6,0x83A7,0x83A9,0x83AC,0x83BE,0x83BF,0x83C0,0x83C7, 0x83C9,0x83CF,0x83D0,0x83D1,0x83D4,0x83DD,0x8353,0x83E8, 0x83EA,0x83F6,0x83F8,0x83F9,0x83FC,0x8401,0x8406,0x840A, 0x840F,0x8411,0x8415,0x8419,0x83AD,0x842F,0x8439,0x8445, 0x8447,0x8448,0x844A,0x844D,0x844F,0x8451,0x8452,0x8456, 0x8458,0x8459,0x845A,0x845C,0x8460,0x8464,0x8465,0x8467, 0x846A,0x8470,0x8473,0x8474,0x8476,0x8478,0x847C,0x847D, 0x8481,0x8485,0x8492,0x8493,0x8495,0x849E,0x84A6,0x84A8, 0x84A9,0x84AA,0x84AF,0x84B1,0x84B4,0x84BA,0x84BD,0x84BE, 0x84C0,0x84C2,0x84C7,0x84C8,0x84CC,0x84CF,0x84D3,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 90, Array index 0x3000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x84DC,0x84E7,0x84EA,0x84EF,0x84F0,0x84F1,0x84F2, 0x84F7,0x8532,0x84FA,0x84FB,0x84FD,0x8502,0x8503,0x8507, 0x850C,0x850E,0x8510,0x851C,0x851E,0x8522,0x8523,0x8524, 0x8525,0x8527,0x852A,0x852B,0x852F,0x8533,0x8534,0x8536, 0x853F,0x8546,0x854F,0x8550,0x8551,0x8552,0x8553,0x8556, 0x8559,0x855C,0x855D,0x855E,0x855F,0x8560,0x8561,0x8562, 0x8564,0x856B,0x856F,0x8579,0x857A,0x857B,0x857D,0x857F, 0x8581,0x8585,0x8586,0x8589,0x858B,0x858C,0x858F,0x8593, 0x8598,0x859D,0x859F,0x85A0,0x85A2,0x85A5,0x85A7,0x85B4, 0x85B6,0x85B7,0x85B8,0x85BC,0x85BD,0x85BE,0x85BF,0x85C2, 0x85C7,0x85CA,0x85CB,0x85CE,0x85AD,0x85D8,0x85DA,0x85DF, 0x85E0,0x85E6,0x85E8,0x85ED,0x85F3,0x85F6,0x85FC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 91, Array index 0x3100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x85FF,0x8600,0x8604,0x8605,0x860D,0x860E,0x8610, 0x8611,0x8612,0x8618,0x8619,0x861B,0x861E,0x8621,0x8627, 0x8629,0x8636,0x8638,0x863A,0x863C,0x863D,0x8640,0x8642, 0x8646,0x8652,0x8653,0x8656,0x8657,0x8658,0x8659,0x865D, 0x8660,0x8661,0x8662,0x8663,0x8664,0x8669,0x866C,0x866F, 0x8675,0x8676,0x8677,0x867A,0x868D,0x8691,0x8696,0x8698, 0x869A,0x869C,0x86A1,0x86A6,0x86A7,0x86A8,0x86AD,0x86B1, 0x86B3,0x86B4,0x86B5,0x86B7,0x86B8,0x86B9,0x86BF,0x86C0, 0x86C1,0x86C3,0x86C5,0x86D1,0x86D2,0x86D5,0x86D7,0x86DA, 0x86DC,0x86E0,0x86E3,0x86E5,0x86E7,0x8688,0x86FA,0x86FC, 0x86FD,0x8704,0x8705,0x8707,0x870B,0x870E,0x870F,0x8710, 0x8713,0x8714,0x8719,0x871E,0x871F,0x8721,0x8723,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 92, Array index 0x3200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8728,0x872E,0x872F,0x8731,0x8732,0x8739,0x873A, 0x873C,0x873D,0x873E,0x8740,0x8743,0x8745,0x874D,0x8758, 0x875D,0x8761,0x8764,0x8765,0x876F,0x8771,0x8772,0x877B, 0x8783,0x8784,0x8785,0x8786,0x8787,0x8788,0x8789,0x878B, 0x878C,0x8790,0x8793,0x8795,0x8797,0x8798,0x8799,0x879E, 0x87A0,0x87A3,0x87A7,0x87AC,0x87AD,0x87AE,0x87B1,0x87B5, 0x87BE,0x87BF,0x87C1,0x87C8,0x87C9,0x87CA,0x87CE,0x87D5, 0x87D6,0x87D9,0x87DA,0x87DC,0x87DF,0x87E2,0x87E3,0x87E4, 0x87EA,0x87EB,0x87ED,0x87F1,0x87F3,0x87F8,0x87FA,0x87FF, 0x8801,0x8803,0x8806,0x8809,0x880A,0x880B,0x8810,0x8819, 0x8812,0x8813,0x8814,0x8818,0x881A,0x881B,0x881C,0x881E, 0x881F,0x8828,0x882D,0x882E,0x8830,0x8832,0x8835,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 93, Array index 0x3300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x883A,0x883C,0x8841,0x8843,0x8845,0x8848,0x8849, 0x884A,0x884B,0x884E,0x8851,0x8855,0x8856,0x8858,0x885A, 0x885C,0x885F,0x8860,0x8864,0x8869,0x8871,0x8879,0x887B, 0x8880,0x8898,0x889A,0x889B,0x889C,0x889F,0x88A0,0x88A8, 0x88AA,0x88BA,0x88BD,0x88BE,0x88C0,0x88CA,0x88CB,0x88CC, 0x88CD,0x88CE,0x88D1,0x88D2,0x88D3,0x88DB,0x88DE,0x88E7, 0x88EF,0x88F0,0x88F1,0x88F5,0x88F7,0x8901,0x8906,0x890D, 0x890E,0x890F,0x8915,0x8916,0x8918,0x8919,0x891A,0x891C, 0x8920,0x8926,0x8927,0x8928,0x8930,0x8931,0x8932,0x8935, 0x8939,0x893A,0x893E,0x8940,0x8942,0x8945,0x8946,0x8949, 0x894F,0x8952,0x8957,0x895A,0x895B,0x895C,0x8961,0x8962, 0x8963,0x896B,0x896E,0x8970,0x8973,0x8975,0x897A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 94, Array index 0x3400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x897B,0x897C,0x897D,0x8989,0x898D,0x8990,0x8994, 0x8995,0x899B,0x899C,0x899F,0x89A0,0x89A5,0x89B0,0x89B4, 0x89B5,0x89B6,0x89B7,0x89BC,0x89D4,0x89D5,0x89D6,0x89D7, 0x89D8,0x89E5,0x89E9,0x89EB,0x89ED,0x89F1,0x89F3,0x89F6, 0x89F9,0x89FD,0x89FF,0x8A04,0x8A05,0x8A07,0x8A0F,0x8A11, 0x8A12,0x8A14,0x8A15,0x8A1E,0x8A20,0x8A22,0x8A24,0x8A26, 0x8A2B,0x8A2C,0x8A2F,0x8A35,0x8A37,0x8A3D,0x8A3E,0x8A40, 0x8A43,0x8A45,0x8A47,0x8A49,0x8A4D,0x8A4E,0x8A53,0x8A56, 0x8A57,0x8A58,0x8A5C,0x8A5D,0x8A61,0x8A65,0x8A67,0x8A75, 0x8A76,0x8A77,0x8A79,0x8A7A,0x8A7B,0x8A7E,0x8A7F,0x8A80, 0x8A83,0x8A86,0x8A8B,0x8A8F,0x8A90,0x8A92,0x8A96,0x8A97, 0x8A99,0x8A9F,0x8AA7,0x8AA9,0x8AAE,0x8AAF,0x8AB3,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 95, Array index 0x3500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8AB6,0x8AB7,0x8ABB,0x8ABE,0x8AC3,0x8AC6,0x8AC8, 0x8AC9,0x8ACA,0x8AD1,0x8AD3,0x8AD4,0x8AD5,0x8AD7,0x8ADD, 0x8ADF,0x8AEC,0x8AF0,0x8AF4,0x8AF5,0x8AF6,0x8AFC,0x8AFF, 0x8B05,0x8B06,0x8B0B,0x8B11,0x8B1C,0x8B1E,0x8B1F,0x8B0A, 0x8B2D,0x8B30,0x8B37,0x8B3C,0x8B42,0x8B43,0x8B44,0x8B45, 0x8B46,0x8B48,0x8B52,0x8B53,0x8B54,0x8B59,0x8B4D,0x8B5E, 0x8B63,0x8B6D,0x8B76,0x8B78,0x8B79,0x8B7C,0x8B7E,0x8B81, 0x8B84,0x8B85,0x8B8B,0x8B8D,0x8B8F,0x8B94,0x8B95,0x8B9C, 0x8B9E,0x8B9F,0x8C38,0x8C39,0x8C3D,0x8C3E,0x8C45,0x8C47, 0x8C49,0x8C4B,0x8C4F,0x8C51,0x8C53,0x8C54,0x8C57,0x8C58, 0x8C5B,0x8C5D,0x8C59,0x8C63,0x8C64,0x8C66,0x8C68,0x8C69, 0x8C6D,0x8C73,0x8C75,0x8C76,0x8C7B,0x8C7E,0x8C86,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 96, Array index 0x3600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8C87,0x8C8B,0x8C90,0x8C92,0x8C93,0x8C99,0x8C9B, 0x8C9C,0x8CA4,0x8CB9,0x8CBA,0x8CC5,0x8CC6,0x8CC9,0x8CCB, 0x8CCF,0x8CD6,0x8CD5,0x8CD9,0x8CDD,0x8CE1,0x8CE8,0x8CEC, 0x8CEF,0x8CF0,0x8CF2,0x8CF5,0x8CF7,0x8CF8,0x8CFE,0x8CFF, 0x8D01,0x8D03,0x8D09,0x8D12,0x8D17,0x8D1B,0x8D65,0x8D69, 0x8D6C,0x8D6E,0x8D7F,0x8D82,0x8D84,0x8D88,0x8D8D,0x8D90, 0x8D91,0x8D95,0x8D9E,0x8D9F,0x8DA0,0x8DA6,0x8DAB,0x8DAC, 0x8DAF,0x8DB2,0x8DB5,0x8DB7,0x8DB9,0x8DBB,0x8DC0,0x8DC5, 0x8DC6,0x8DC7,0x8DC8,0x8DCA,0x8DCE,0x8DD1,0x8DD4,0x8DD5, 0x8DD7,0x8DD9,0x8DE4,0x8DE5,0x8DE7,0x8DEC,0x8DF0,0x8DBC, 0x8DF1,0x8DF2,0x8DF4,0x8DFD,0x8E01,0x8E04,0x8E05,0x8E06, 0x8E0B,0x8E11,0x8E14,0x8E16,0x8E20,0x8E21,0x8E22,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 97, Array index 0x3700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8E23,0x8E26,0x8E27,0x8E31,0x8E33,0x8E36,0x8E37, 0x8E38,0x8E39,0x8E3D,0x8E40,0x8E41,0x8E4B,0x8E4D,0x8E4E, 0x8E4F,0x8E54,0x8E5B,0x8E5C,0x8E5D,0x8E5E,0x8E61,0x8E62, 0x8E69,0x8E6C,0x8E6D,0x8E6F,0x8E70,0x8E71,0x8E79,0x8E7A, 0x8E7B,0x8E82,0x8E83,0x8E89,0x8E90,0x8E92,0x8E95,0x8E9A, 0x8E9B,0x8E9D,0x8E9E,0x8EA2,0x8EA7,0x8EA9,0x8EAD,0x8EAE, 0x8EB3,0x8EB5,0x8EBA,0x8EBB,0x8EC0,0x8EC1,0x8EC3,0x8EC4, 0x8EC7,0x8ECF,0x8ED1,0x8ED4,0x8EDC,0x8EE8,0x8EEE,0x8EF0, 0x8EF1,0x8EF7,0x8EF9,0x8EFA,0x8EED,0x8F00,0x8F02,0x8F07, 0x8F08,0x8F0F,0x8F10,0x8F16,0x8F17,0x8F18,0x8F1E,0x8F20, 0x8F21,0x8F23,0x8F25,0x8F27,0x8F28,0x8F2C,0x8F2D,0x8F2E, 0x8F34,0x8F35,0x8F36,0x8F37,0x8F3A,0x8F40,0x8F41,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 98, Array index 0x3800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8F43,0x8F47,0x8F4F,0x8F51,0x8F52,0x8F53,0x8F54, 0x8F55,0x8F58,0x8F5D,0x8F5E,0x8F65,0x8F9D,0x8FA0,0x8FA1, 0x8FA4,0x8FA5,0x8FA6,0x8FB5,0x8FB6,0x8FB8,0x8FBE,0x8FC0, 0x8FC1,0x8FC6,0x8FCA,0x8FCB,0x8FCD,0x8FD0,0x8FD2,0x8FD3, 0x8FD5,0x8FE0,0x8FE3,0x8FE4,0x8FE8,0x8FEE,0x8FF1,0x8FF5, 0x8FF6,0x8FFB,0x8FFE,0x9002,0x9004,0x9008,0x900C,0x9018, 0x901B,0x9028,0x9029,0x902F,0x902A,0x902C,0x902D,0x9033, 0x9034,0x9037,0x903F,0x9043,0x9044,0x904C,0x905B,0x905D, 0x9062,0x9066,0x9067,0x906C,0x9070,0x9074,0x9079,0x9085, 0x9088,0x908B,0x908C,0x908E,0x9090,0x9095,0x9097,0x9098, 0x9099,0x909B,0x90A0,0x90A1,0x90A2,0x90A5,0x90B0,0x90B2, 0x90B3,0x90B4,0x90B6,0x90BD,0x90CC,0x90BE,0x90C3,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 99, Array index 0x3900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x90C4,0x90C5,0x90C7,0x90C8,0x90D5,0x90D7,0x90D8, 0x90D9,0x90DC,0x90DD,0x90DF,0x90E5,0x90D2,0x90F6,0x90EB, 0x90EF,0x90F0,0x90F4,0x90FE,0x90FF,0x9100,0x9104,0x9105, 0x9106,0x9108,0x910D,0x9110,0x9114,0x9116,0x9117,0x9118, 0x911A,0x911C,0x911E,0x9120,0x9125,0x9122,0x9123,0x9127, 0x9129,0x912E,0x912F,0x9131,0x9134,0x9136,0x9137,0x9139, 0x913A,0x913C,0x913D,0x9143,0x9147,0x9148,0x914F,0x9153, 0x9157,0x9159,0x915A,0x915B,0x9161,0x9164,0x9167,0x916D, 0x9174,0x9179,0x917A,0x917B,0x9181,0x9183,0x9185,0x9186, 0x918A,0x918E,0x9191,0x9193,0x9194,0x9195,0x9198,0x919E, 0x91A1,0x91A6,0x91A8,0x91AC,0x91AD,0x91AE,0x91B0,0x91B1, 0x91B2,0x91B3,0x91B6,0x91BB,0x91BC,0x91BD,0x91BF,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 100, Array index 0x3A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x91C2,0x91C3,0x91C5,0x91D3,0x91D4,0x91D7,0x91D9, 0x91DA,0x91DE,0x91E4,0x91E5,0x91E9,0x91EA,0x91EC,0x91ED, 0x91EE,0x91EF,0x91F0,0x91F1,0x91F7,0x91F9,0x91FB,0x91FD, 0x9200,0x9201,0x9204,0x9205,0x9206,0x9207,0x9209,0x920A, 0x920C,0x9210,0x9212,0x9213,0x9216,0x9218,0x921C,0x921D, 0x9223,0x9224,0x9225,0x9226,0x9228,0x922E,0x922F,0x9230, 0x9233,0x9235,0x9236,0x9238,0x9239,0x923A,0x923C,0x923E, 0x9240,0x9242,0x9243,0x9246,0x9247,0x924A,0x924D,0x924E, 0x924F,0x9251,0x9258,0x9259,0x925C,0x925D,0x9260,0x9261, 0x9265,0x9267,0x9268,0x9269,0x926E,0x926F,0x9270,0x9275, 0x9276,0x9277,0x9278,0x9279,0x927B,0x927C,0x927D,0x927F, 0x9288,0x9289,0x928A,0x928D,0x928E,0x9292,0x9297,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 101, Array index 0x3B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9299,0x929F,0x92A0,0x92A4,0x92A5,0x92A7,0x92A8, 0x92AB,0x92AF,0x92B2,0x92B6,0x92B8,0x92BA,0x92BB,0x92BC, 0x92BD,0x92BF,0x92C0,0x92C1,0x92C2,0x92C3,0x92C5,0x92C6, 0x92C7,0x92C8,0x92CB,0x92CC,0x92CD,0x92CE,0x92D0,0x92D3, 0x92D5,0x92D7,0x92D8,0x92D9,0x92DC,0x92DD,0x92DF,0x92E0, 0x92E1,0x92E3,0x92E5,0x92E7,0x92E8,0x92EC,0x92EE,0x92F0, 0x92F9,0x92FB,0x92FF,0x9300,0x9302,0x9308,0x930D,0x9311, 0x9314,0x9315,0x931C,0x931D,0x931E,0x931F,0x9321,0x9324, 0x9325,0x9327,0x9329,0x932A,0x9333,0x9334,0x9336,0x9337, 0x9347,0x9348,0x9349,0x9350,0x9351,0x9352,0x9355,0x9357, 0x9358,0x935A,0x935E,0x9364,0x9365,0x9367,0x9369,0x936A, 0x936D,0x936F,0x9370,0x9371,0x9373,0x9374,0x9376,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 102, Array index 0x3C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x937A,0x937D,0x937F,0x9380,0x9381,0x9382,0x9388, 0x938A,0x938B,0x938D,0x938F,0x9392,0x9395,0x9398,0x939B, 0x939E,0x93A1,0x93A3,0x93A4,0x93A6,0x93A8,0x93AB,0x93B4, 0x93B5,0x93B6,0x93BA,0x93A9,0x93C1,0x93C4,0x93C5,0x93C6, 0x93C7,0x93C9,0x93CA,0x93CB,0x93CC,0x93CD,0x93D3,0x93D9, 0x93DC,0x93DE,0x93DF,0x93E2,0x93E6,0x93E7,0x93F9,0x93F7, 0x93F8,0x93FA,0x93FB,0x93FD,0x9401,0x9402,0x9404,0x9408, 0x9409,0x940D,0x940E,0x940F,0x9415,0x9416,0x9417,0x941F, 0x942E,0x942F,0x9431,0x9432,0x9433,0x9434,0x943B,0x943F, 0x943D,0x9443,0x9445,0x9448,0x944A,0x944C,0x9455,0x9459, 0x945C,0x945F,0x9461,0x9463,0x9468,0x946B,0x946D,0x946E, 0x946F,0x9471,0x9472,0x9484,0x9483,0x9578,0x9579,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 103, Array index 0x3D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x957E,0x9584,0x9588,0x958C,0x958D,0x958E,0x959D, 0x959E,0x959F,0x95A1,0x95A6,0x95A9,0x95AB,0x95AC,0x95B4, 0x95B6,0x95BA,0x95BD,0x95BF,0x95C6,0x95C8,0x95C9,0x95CB, 0x95D0,0x95D1,0x95D2,0x95D3,0x95D9,0x95DA,0x95DD,0x95DE, 0x95DF,0x95E0,0x95E4,0x95E6,0x961D,0x961E,0x9622,0x9624, 0x9625,0x9626,0x962C,0x9631,0x9633,0x9637,0x9638,0x9639, 0x963A,0x963C,0x963D,0x9641,0x9652,0x9654,0x9656,0x9657, 0x9658,0x9661,0x966E,0x9674,0x967B,0x967C,0x967E,0x967F, 0x9681,0x9682,0x9683,0x9684,0x9689,0x9691,0x9696,0x969A, 0x969D,0x969F,0x96A4,0x96A5,0x96A6,0x96A9,0x96AE,0x96AF, 0x96B3,0x96BA,0x96CA,0x96D2,0x5DB2,0x96D8,0x96DA,0x96DD, 0x96DE,0x96DF,0x96E9,0x96EF,0x96F1,0x96FA,0x9702,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 104, Array index 0x3E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9703,0x9705,0x9709,0x971A,0x971B,0x971D,0x9721, 0x9722,0x9723,0x9728,0x9731,0x9733,0x9741,0x9743,0x974A, 0x974E,0x974F,0x9755,0x9757,0x9758,0x975A,0x975B,0x9763, 0x9767,0x976A,0x976E,0x9773,0x9776,0x9777,0x9778,0x977B, 0x977D,0x977F,0x9780,0x9789,0x9795,0x9796,0x9797,0x9799, 0x979A,0x979E,0x979F,0x97A2,0x97AC,0x97AE,0x97B1,0x97B2, 0x97B5,0x97B6,0x97B8,0x97B9,0x97BA,0x97BC,0x97BE,0x97BF, 0x97C1,0x97C4,0x97C5,0x97C7,0x97C9,0x97CA,0x97CC,0x97CD, 0x97CE,0x97D0,0x97D1,0x97D4,0x97D7,0x97D8,0x97D9,0x97DD, 0x97DE,0x97E0,0x97DB,0x97E1,0x97E4,0x97EF,0x97F1,0x97F4, 0x97F7,0x97F8,0x97FA,0x9807,0x980A,0x9819,0x980D,0x980E, 0x9814,0x9816,0x981C,0x981E,0x9820,0x9823,0x9826,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 105, Array index 0x3F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x982B,0x982E,0x982F,0x9830,0x9832,0x9833,0x9835, 0x9825,0x983E,0x9844,0x9847,0x984A,0x9851,0x9852,0x9853, 0x9856,0x9857,0x9859,0x985A,0x9862,0x9863,0x9865,0x9866, 0x986A,0x986C,0x98AB,0x98AD,0x98AE,0x98B0,0x98B4,0x98B7, 0x98B8,0x98BA,0x98BB,0x98BF,0x98C2,0x98C5,0x98C8,0x98CC, 0x98E1,0x98E3,0x98E5,0x98E6,0x98E7,0x98EA,0x98F3,0x98F6, 0x9902,0x9907,0x9908,0x9911,0x9915,0x9916,0x9917,0x991A, 0x991B,0x991C,0x991F,0x9922,0x9926,0x9927,0x992B,0x9931, 0x9932,0x9933,0x9934,0x9935,0x9939,0x993A,0x993B,0x993C, 0x9940,0x9941,0x9946,0x9947,0x9948,0x994D,0x994E,0x9954, 0x9958,0x9959,0x995B,0x995C,0x995E,0x995F,0x9960,0x999B, 0x999D,0x999F,0x99A6,0x99B0,0x99B1,0x99B2,0x99B5,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 106, Array index 0x4000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x99B9,0x99BA,0x99BD,0x99BF,0x99C3,0x99C9,0x99D3, 0x99D4,0x99D9,0x99DA,0x99DC,0x99DE,0x99E7,0x99EA,0x99EB, 0x99EC,0x99F0,0x99F4,0x99F5,0x99F9,0x99FD,0x99FE,0x9A02, 0x9A03,0x9A04,0x9A0B,0x9A0C,0x9A10,0x9A11,0x9A16,0x9A1E, 0x9A20,0x9A22,0x9A23,0x9A24,0x9A27,0x9A2D,0x9A2E,0x9A33, 0x9A35,0x9A36,0x9A38,0x9A47,0x9A41,0x9A44,0x9A4A,0x9A4B, 0x9A4C,0x9A4E,0x9A51,0x9A54,0x9A56,0x9A5D,0x9AAA,0x9AAC, 0x9AAE,0x9AAF,0x9AB2,0x9AB4,0x9AB5,0x9AB6,0x9AB9,0x9ABB, 0x9ABE,0x9ABF,0x9AC1,0x9AC3,0x9AC6,0x9AC8,0x9ACE,0x9AD0, 0x9AD2,0x9AD5,0x9AD6,0x9AD7,0x9ADB,0x9ADC,0x9AE0,0x9AE4, 0x9AE5,0x9AE7,0x9AE9,0x9AEC,0x9AF2,0x9AF3,0x9AF5,0x9AF9, 0x9AFA,0x9AFD,0x9AFF,0x9B00,0x9B01,0x9B02,0x9B03,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 107, Array index 0x4100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9B04,0x9B05,0x9B08,0x9B09,0x9B0B,0x9B0C,0x9B0D, 0x9B0E,0x9B10,0x9B12,0x9B16,0x9B19,0x9B1B,0x9B1C,0x9B20, 0x9B26,0x9B2B,0x9B2D,0x9B33,0x9B34,0x9B35,0x9B37,0x9B39, 0x9B3A,0x9B3D,0x9B48,0x9B4B,0x9B4C,0x9B55,0x9B56,0x9B57, 0x9B5B,0x9B5E,0x9B61,0x9B63,0x9B65,0x9B66,0x9B68,0x9B6A, 0x9B6B,0x9B6C,0x9B6D,0x9B6E,0x9B73,0x9B75,0x9B77,0x9B78, 0x9B79,0x9B7F,0x9B80,0x9B84,0x9B85,0x9B86,0x9B87,0x9B89, 0x9B8A,0x9B8B,0x9B8D,0x9B8F,0x9B90,0x9B94,0x9B9A,0x9B9D, 0x9B9E,0x9BA6,0x9BA7,0x9BA9,0x9BAC,0x9BB0,0x9BB1,0x9BB2, 0x9BB7,0x9BB8,0x9BBB,0x9BBC,0x9BBE,0x9BBF,0x9BC1,0x9BC7, 0x9BC8,0x9BCE,0x9BD0,0x9BD7,0x9BD8,0x9BDD,0x9BDF,0x9BE5, 0x9BE7,0x9BEA,0x9BEB,0x9BEF,0x9BF3,0x9BF7,0x9BF8,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 108, Array index 0x4200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9BF9,0x9BFA,0x9BFD,0x9BFF,0x9C00,0x9C02,0x9C0B, 0x9C0F,0x9C11,0x9C16,0x9C18,0x9C19,0x9C1A,0x9C1C,0x9C1E, 0x9C22,0x9C23,0x9C26,0x9C27,0x9C28,0x9C29,0x9C2A,0x9C31, 0x9C35,0x9C36,0x9C37,0x9C3D,0x9C41,0x9C43,0x9C44,0x9C45, 0x9C49,0x9C4A,0x9C4E,0x9C4F,0x9C50,0x9C53,0x9C54,0x9C56, 0x9C58,0x9C5B,0x9C5D,0x9C5E,0x9C5F,0x9C63,0x9C69,0x9C6A, 0x9C5C,0x9C6B,0x9C68,0x9C6E,0x9C70,0x9C72,0x9C75,0x9C77, 0x9C7B,0x9CE6,0x9CF2,0x9CF7,0x9CF9,0x9D0B,0x9D02,0x9D11, 0x9D17,0x9D18,0x9D1C,0x9D1D,0x9D1E,0x9D2F,0x9D30,0x9D32, 0x9D33,0x9D34,0x9D3A,0x9D3C,0x9D45,0x9D3D,0x9D42,0x9D43, 0x9D47,0x9D4A,0x9D53,0x9D54,0x9D5F,0x9D63,0x9D62,0x9D65, 0x9D69,0x9D6A,0x9D6B,0x9D70,0x9D76,0x9D77,0x9D7B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 109, Array index 0x4300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9D7C,0x9D7E,0x9D83,0x9D84,0x9D86,0x9D8A,0x9D8D, 0x9D8E,0x9D92,0x9D93,0x9D95,0x9D96,0x9D97,0x9D98,0x9DA1, 0x9DAA,0x9DAC,0x9DAE,0x9DB1,0x9DB5,0x9DB9,0x9DBC,0x9DBF, 0x9DC3,0x9DC7,0x9DC9,0x9DCA,0x9DD4,0x9DD5,0x9DD6,0x9DD7, 0x9DDA,0x9DDE,0x9DDF,0x9DE0,0x9DE5,0x9DE7,0x9DE9,0x9DEB, 0x9DEE,0x9DF0,0x9DF3,0x9DF4,0x9DFE,0x9E0A,0x9E02,0x9E07, 0x9E0E,0x9E10,0x9E11,0x9E12,0x9E15,0x9E16,0x9E19,0x9E1C, 0x9E1D,0x9E7A,0x9E7B,0x9E7C,0x9E80,0x9E82,0x9E83,0x9E84, 0x9E85,0x9E87,0x9E8E,0x9E8F,0x9E96,0x9E98,0x9E9B,0x9E9E, 0x9EA4,0x9EA8,0x9EAC,0x9EAE,0x9EAF,0x9EB0,0x9EB3,0x9EB4, 0x9EB5,0x9EC6,0x9EC8,0x9ECB,0x9ED5,0x9EDF,0x9EE4,0x9EE7, 0x9EEC,0x9EED,0x9EEE,0x9EF0,0x9EF1,0x9EF2,0x9EF5,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 110, Array index 0x4400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9EF8,0x9EFF,0x9F02,0x9F03,0x9F09,0x9F0F,0x9F10, 0x9F11,0x9F12,0x9F14,0x9F16,0x9F17,0x9F19,0x9F1A,0x9F1B, 0x9F1F,0x9F22,0x9F26,0x9F2A,0x9F2B,0x9F2F,0x9F31,0x9F32, 0x9F34,0x9F37,0x9F39,0x9F3A,0x9F3C,0x9F3D,0x9F3F,0x9F41, 0x9F43,0x9F44,0x9F45,0x9F46,0x9F47,0x9F53,0x9F55,0x9F56, 0x9F57,0x9F58,0x9F5A,0x9F5D,0x9F5E,0x9F68,0x9F69,0x9F6D, 0x9F6E,0x9F6F,0x9F70,0x9F71,0x9F73,0x9F75,0x9F7A,0x9F7D, 0x9F8F,0x9F90,0x9F91,0x9F92,0x9F94,0x9F96,0x9F97,0x9F9E, 0x9FA1,0x9FA2,0x9FA3,0x9FA5,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, }; #endif /* ICONV_TO_UCS_CCS_JIS_X0212_1990 && !defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * 16-bit jis_x0212_1990 -> UCS size-optimized table (12602 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_JIS_X0212_1990) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t to_ucs_size_jis_x0212_1990[] = { 0x0049, /* Ranges number */ 0x0004, /* Unranged codes number */ 0x1895, /* First unranged code index */ /* Ranges list: first code, last Code, array index. */ /* Array index: 0x0003 */ 0x222F, 0x2239, 0x00DE, /* Array index: 0x0006 */ 0x2242, 0x2244, 0x00E9, /* Array index: 0x0009 */ 0x226B, 0x2271, 0x00EC, /* Array index: 0x000C */ 0x2661, 0x266C, 0x00F3, /* Array index: 0x000F */ 0x2671, 0x267C, 0x00FF, /* Array index: 0x0012 */ 0x2742, 0x274E, 0x010B, /* Array index: 0x0015 */ 0x2772, 0x277E, 0x0118, /* Array index: 0x0018 */ 0x2928, 0x2930, 0x0125, /* Array index: 0x001B */ 0x2941, 0x2950, 0x012E, /* Array index: 0x001E */ 0x2A21, 0x2A77, 0x013E, /* Array index: 0x0021 */ 0x2B21, 0x2B77, 0x0195, /* Array index: 0x0024 */ 0x3021, 0x307E, 0x01EC, /* Array index: 0x0027 */ 0x3121, 0x317E, 0x024A, /* Array index: 0x002A */ 0x3221, 0x327E, 0x02A8, /* Array index: 0x002D */ 0x3321, 0x337E, 0x0306, /* Array index: 0x0030 */ 0x3421, 0x347E, 0x0364, /* Array index: 0x0033 */ 0x3521, 0x357E, 0x03C2, /* Array index: 0x0036 */ 0x3621, 0x367E, 0x0420, /* Array index: 0x0039 */ 0x3721, 0x377E, 0x047E, /* Array index: 0x003C */ 0x3821, 0x387E, 0x04DC, /* Array index: 0x003F */ 0x3921, 0x397E, 0x053A, /* Array index: 0x0042 */ 0x3A21, 0x3A7E, 0x0598, /* Array index: 0x0045 */ 0x3B21, 0x3B7E, 0x05F6, /* Array index: 0x0048 */ 0x3C21, 0x3C7E, 0x0654, /* Array index: 0x004B */ 0x3D21, 0x3D7E, 0x06B2, /* Array index: 0x004E */ 0x3E21, 0x3E7E, 0x0710, /* Array index: 0x0051 */ 0x3F21, 0x3F7E, 0x076E, /* Array index: 0x0054 */ 0x4021, 0x407E, 0x07CC, /* Array index: 0x0057 */ 0x4121, 0x417E, 0x082A, /* Array index: 0x005A */ 0x4221, 0x427E, 0x0888, /* Array index: 0x005D */ 0x4321, 0x437E, 0x08E6, /* Array index: 0x0060 */ 0x4421, 0x447E, 0x0944, /* Array index: 0x0063 */ 0x4521, 0x457E, 0x09A2, /* Array index: 0x0066 */ 0x4621, 0x467E, 0x0A00, /* Array index: 0x0069 */ 0x4721, 0x477E, 0x0A5E, /* Array index: 0x006C */ 0x4821, 0x487E, 0x0ABC, /* Array index: 0x006F */ 0x4921, 0x497E, 0x0B1A, /* Array index: 0x0072 */ 0x4A21, 0x4A7E, 0x0B78, /* Array index: 0x0075 */ 0x4B21, 0x4B7E, 0x0BD6, /* Array index: 0x0078 */ 0x4C21, 0x4C7E, 0x0C34, /* Array index: 0x007B */ 0x4D21, 0x4D7E, 0x0C92, /* Array index: 0x007E */ 0x4E21, 0x4E7E, 0x0CF0, /* Array index: 0x0081 */ 0x4F21, 0x4F7E, 0x0D4E, /* Array index: 0x0084 */ 0x5021, 0x507E, 0x0DAC, /* Array index: 0x0087 */ 0x5121, 0x517E, 0x0E0A, /* Array index: 0x008A */ 0x5221, 0x527E, 0x0E68, /* Array index: 0x008D */ 0x5321, 0x537E, 0x0EC6, /* Array index: 0x0090 */ 0x5421, 0x547E, 0x0F24, /* Array index: 0x0093 */ 0x5521, 0x557E, 0x0F82, /* Array index: 0x0096 */ 0x5621, 0x567E, 0x0FE0, /* Array index: 0x0099 */ 0x5721, 0x577E, 0x103E, /* Array index: 0x009C */ 0x5821, 0x587E, 0x109C, /* Array index: 0x009F */ 0x5921, 0x597E, 0x10FA, /* Array index: 0x00A2 */ 0x5A21, 0x5A7E, 0x1158, /* Array index: 0x00A5 */ 0x5B21, 0x5B7E, 0x11B6, /* Array index: 0x00A8 */ 0x5C21, 0x5C7E, 0x1214, /* Array index: 0x00AB */ 0x5D21, 0x5D7E, 0x1272, /* Array index: 0x00AE */ 0x5E21, 0x5E7E, 0x12D0, /* Array index: 0x00B1 */ 0x5F21, 0x5F7E, 0x132E, /* Array index: 0x00B4 */ 0x6021, 0x607E, 0x138C, /* Array index: 0x00B7 */ 0x6121, 0x617E, 0x13EA, /* Array index: 0x00BA */ 0x6221, 0x627E, 0x1448, /* Array index: 0x00BD */ 0x6321, 0x637E, 0x14A6, /* Array index: 0x00C0 */ 0x6421, 0x647E, 0x1504, /* Array index: 0x00C3 */ 0x6521, 0x657E, 0x1562, /* Array index: 0x00C6 */ 0x6621, 0x667E, 0x15C0, /* Array index: 0x00C9 */ 0x6721, 0x677E, 0x161E, /* Array index: 0x00CC */ 0x6821, 0x687E, 0x167C, /* Array index: 0x00CF */ 0x6921, 0x697E, 0x16DA, /* Array index: 0x00D2 */ 0x6A21, 0x6A7E, 0x1738, /* Array index: 0x00D5 */ 0x6B21, 0x6B7E, 0x1796, /* Array index: 0x00D8 */ 0x6C21, 0x6C7E, 0x17F4, /* Array index: 0x00DB */ 0x6D21, 0x6D63, 0x1852, /* Ranges content */ /* Range 0x222F - 0x2239, array index: 0x00DE */ 0x02D8,0x02C7,0x00B8,0x02D9,0x02DD,0x00AF,0x02DB,0x02DA, 0x007E,0x0384,0x0385, /* Range 0x2242 - 0x2244, array index: 0x00E9 */ 0x00A1,0x00A6,0x00BF, /* Range 0x226B - 0x2271, array index: 0x00EC */ 0x00BA,0x00AA,0x00A9,0x00AE,0x2122,0x00A4,0x2116, /* Range 0x2661 - 0x266C, array index: 0x00F3 */ 0x0386,0x0388,0x0389,0x038A,0x03AA,INVALC,0x038C,INVALC, 0x038E,0x03AB,INVALC,0x038F, /* Range 0x2671 - 0x267C, array index: 0x00FF */ 0x03AC,0x03AD,0x03AE,0x03AF,0x03CA,0x0390,0x03CC,0x03C2, 0x03CD,0x03CB,0x03B0,0x03CE, /* Range 0x2742 - 0x274E, array index: 0x010B */ 0x0402,0x0403,0x0404,0x0405,0x0406,0x0407,0x0408,0x0409, 0x040A,0x040B,0x040C,0x040E,0x040F, /* Range 0x2772 - 0x277E, array index: 0x0118 */ 0x0452,0x0453,0x0454,0x0455,0x0456,0x0457,0x0458,0x0459, 0x045A,0x045B,0x045C,0x045E,0x045F, /* Range 0x2928 - 0x2930, array index: 0x0125 */ 0x0141,0x013F,INVALC,0x014A,0x00D8,0x0152,INVALC,0x0166, 0x00DE, /* Range 0x2941 - 0x2950, array index: 0x012E */ 0x00E6,0x0111,0x00F0,0x0127,0x0131,0x0133,0x0138,0x0142, 0x0140,0x0149,0x014B,0x00F8,0x0153,0x00DF,0x0167,0x00FE, /* Range 0x2A21 - 0x2A77, array index: 0x013E */ 0x00C1,0x00C0,0x00C4,0x00C2,0x0102,0x01CD,0x0100,0x0104, 0x00C5,0x00C3,0x0106,0x0108,0x010C,0x00C7,0x010A,0x010E, 0x00C9,0x00C8,0x00CB,0x00CA,0x011A,0x0116,0x0112,0x0118, INVALC,0x011C,0x011E,0x0122,0x0120,0x0124,0x00CD,0x00CC, 0x00CF,0x00CE,0x01CF,0x0130,0x012A,0x012E,0x0128,0x0134, 0x0136,0x0139,0x013D,0x013B,0x0143,0x0147,0x0145,0x00D1, 0x00D3,0x00D2,0x00D6,0x00D4,0x01D1,0x0150,0x014C,0x00D5, 0x0154,0x0158,0x0156,0x015A,0x015C,0x0160,0x015E,0x0164, 0x0162,0x00DA,0x00D9,0x00DC,0x00DB,0x016C,0x01D3,0x0170, 0x016A,0x0172,0x016E,0x0168,0x01D7,0x01DB,0x01D9,0x01D5, 0x0174,0x00DD,0x0178,0x0176,0x0179,0x017D,0x017B, /* Range 0x2B21 - 0x2B77, array index: 0x0195 */ 0x00E1,0x00E0,0x00E4,0x00E2,0x0103,0x01CE,0x0101,0x0105, 0x00E5,0x00E3,0x0107,0x0109,0x010D,0x00E7,0x010B,0x010F, 0x00E9,0x00E8,0x00EB,0x00EA,0x011B,0x0117,0x0113,0x0119, 0x01F5,0x011D,0x011F,INVALC,0x0121,0x0125,0x00ED,0x00EC, 0x00EF,0x00EE,0x01D0,INVALC,0x012B,0x012F,0x0129,0x0135, 0x0137,0x013A,0x013E,0x013C,0x0144,0x0148,0x0146,0x00F1, 0x00F3,0x00F2,0x00F6,0x00F4,0x01D2,0x0151,0x014D,0x00F5, 0x0155,0x0159,0x0157,0x015B,0x015D,0x0161,0x015F,0x0165, 0x0163,0x00FA,0x00F9,0x00FC,0x00FB,0x016D,0x01D4,0x0171, 0x016B,0x0173,0x016F,0x0169,0x01D8,0x01DC,0x01DA,0x01D6, 0x0175,0x00FD,0x00FF,0x0177,0x017A,0x017E,0x017C, /* Range 0x3021 - 0x307E, array index: 0x01EC */ 0x4E02,0x4E04,0x4E05,0x4E0C,0x4E12,0x4E1F,0x4E23,0x4E24, 0x4E28,0x4E2B,0x4E2E,0x4E2F,0x4E30,0x4E35,0x4E40,0x4E41, 0x4E44,0x4E47,0x4E51,0x4E5A,0x4E5C,0x4E63,0x4E68,0x4E69, 0x4E74,0x4E75,0x4E79,0x4E7F,0x4E8D,0x4E96,0x4E97,0x4E9D, 0x4EAF,0x4EB9,0x4EC3,0x4ED0,0x4EDA,0x4EDB,0x4EE0,0x4EE1, 0x4EE2,0x4EE8,0x4EEF,0x4EF1,0x4EF3,0x4EF5,0x4EFD,0x4EFE, 0x4EFF,0x4F00,0x4F02,0x4F03,0x4F08,0x4F0B,0x4F0C,0x4F12, 0x4F15,0x4F16,0x4F17,0x4F19,0x4F2E,0x4F31,0x4F60,0x4F33, 0x4F35,0x4F37,0x4F39,0x4F3B,0x4F3E,0x4F40,0x4F42,0x4F48, 0x4F49,0x4F4B,0x4F4C,0x4F52,0x4F54,0x4F56,0x4F58,0x4F5F, 0x4F63,0x4F6A,0x4F6C,0x4F6E,0x4F71,0x4F77,0x4F78,0x4F79, 0x4F7A,0x4F7D,0x4F7E,0x4F81,0x4F82,0x4F84, /* Range 0x3121 - 0x317E, array index: 0x024A */ 0x4F85,0x4F89,0x4F8A,0x4F8C,0x4F8E,0x4F90,0x4F92,0x4F93, 0x4F94,0x4F97,0x4F99,0x4F9A,0x4F9E,0x4F9F,0x4FB2,0x4FB7, 0x4FB9,0x4FBB,0x4FBC,0x4FBD,0x4FBE,0x4FC0,0x4FC1,0x4FC5, 0x4FC6,0x4FC8,0x4FC9,0x4FCB,0x4FCC,0x4FCD,0x4FCF,0x4FD2, 0x4FDC,0x4FE0,0x4FE2,0x4FF0,0x4FF2,0x4FFC,0x4FFD,0x4FFF, 0x5000,0x5001,0x5004,0x5007,0x500A,0x500C,0x500E,0x5010, 0x5013,0x5017,0x5018,0x501B,0x501C,0x501D,0x501E,0x5022, 0x5027,0x502E,0x5030,0x5032,0x5033,0x5035,0x5040,0x5041, 0x5042,0x5045,0x5046,0x504A,0x504C,0x504E,0x5051,0x5052, 0x5053,0x5057,0x5059,0x505F,0x5060,0x5062,0x5063,0x5066, 0x5067,0x506A,0x506D,0x5070,0x5071,0x503B,0x5081,0x5083, 0x5084,0x5086,0x508A,0x508E,0x508F,0x5090, /* Range 0x3221 - 0x327E, array index: 0x02A8 */ 0x5092,0x5093,0x5094,0x5096,0x509B,0x509C,0x509E,0x509F, 0x50A0,0x50A1,0x50A2,0x50AA,0x50AF,0x50B0,0x50B9,0x50BA, 0x50BD,0x50C0,0x50C3,0x50C4,0x50C7,0x50CC,0x50CE,0x50D0, 0x50D3,0x50D4,0x50D8,0x50DC,0x50DD,0x50DF,0x50E2,0x50E4, 0x50E6,0x50E8,0x50E9,0x50EF,0x50F1,0x50F6,0x50FA,0x50FE, 0x5103,0x5106,0x5107,0x5108,0x510B,0x510C,0x510D,0x510E, 0x50F2,0x5110,0x5117,0x5119,0x511B,0x511C,0x511D,0x511E, 0x5123,0x5127,0x5128,0x512C,0x512D,0x512F,0x5131,0x5133, 0x5134,0x5135,0x5138,0x5139,0x5142,0x514A,0x514F,0x5153, 0x5155,0x5157,0x5158,0x515F,0x5164,0x5166,0x517E,0x5183, 0x5184,0x518B,0x518E,0x5198,0x519D,0x51A1,0x51A3,0x51AD, 0x51B8,0x51BA,0x51BC,0x51BE,0x51BF,0x51C2, /* Range 0x3321 - 0x337E, array index: 0x0306 */ 0x51C8,0x51CF,0x51D1,0x51D2,0x51D3,0x51D5,0x51D8,0x51DE, 0x51E2,0x51E5,0x51EE,0x51F2,0x51F3,0x51F4,0x51F7,0x5201, 0x5202,0x5205,0x5212,0x5213,0x5215,0x5216,0x5218,0x5222, 0x5228,0x5231,0x5232,0x5235,0x523C,0x5245,0x5249,0x5255, 0x5257,0x5258,0x525A,0x525C,0x525F,0x5260,0x5261,0x5266, 0x526E,0x5277,0x5278,0x5279,0x5280,0x5282,0x5285,0x528A, 0x528C,0x5293,0x5295,0x5296,0x5297,0x5298,0x529A,0x529C, 0x52A4,0x52A5,0x52A6,0x52A7,0x52AF,0x52B0,0x52B6,0x52B7, 0x52B8,0x52BA,0x52BB,0x52BD,0x52C0,0x52C4,0x52C6,0x52C8, 0x52CC,0x52CF,0x52D1,0x52D4,0x52D6,0x52DB,0x52DC,0x52E1, 0x52E5,0x52E8,0x52E9,0x52EA,0x52EC,0x52F0,0x52F1,0x52F4, 0x52F6,0x52F7,0x5300,0x5303,0x530A,0x530B, /* Range 0x3421 - 0x347E, array index: 0x0364 */ 0x530C,0x5311,0x5313,0x5318,0x531B,0x531C,0x531E,0x531F, 0x5325,0x5327,0x5328,0x5329,0x532B,0x532C,0x532D,0x5330, 0x5332,0x5335,0x533C,0x533D,0x533E,0x5342,0x534C,0x534B, 0x5359,0x535B,0x5361,0x5363,0x5365,0x536C,0x536D,0x5372, 0x5379,0x537E,0x5383,0x5387,0x5388,0x538E,0x5393,0x5394, 0x5399,0x539D,0x53A1,0x53A4,0x53AA,0x53AB,0x53AF,0x53B2, 0x53B4,0x53B5,0x53B7,0x53B8,0x53BA,0x53BD,0x53C0,0x53C5, 0x53CF,0x53D2,0x53D3,0x53D5,0x53DA,0x53DD,0x53DE,0x53E0, 0x53E6,0x53E7,0x53F5,0x5402,0x5413,0x541A,0x5421,0x5427, 0x5428,0x542A,0x542F,0x5431,0x5434,0x5435,0x5443,0x5444, 0x5447,0x544D,0x544F,0x545E,0x5462,0x5464,0x5466,0x5467, 0x5469,0x546B,0x546D,0x546E,0x5474,0x547F, /* Range 0x3521 - 0x357E, array index: 0x03C2 */ 0x5481,0x5483,0x5485,0x5488,0x5489,0x548D,0x5491,0x5495, 0x5496,0x549C,0x549F,0x54A1,0x54A6,0x54A7,0x54A9,0x54AA, 0x54AD,0x54AE,0x54B1,0x54B7,0x54B9,0x54BA,0x54BB,0x54BF, 0x54C6,0x54CA,0x54CD,0x54CE,0x54E0,0x54EA,0x54EC,0x54EF, 0x54F6,0x54FC,0x54FE,0x54FF,0x5500,0x5501,0x5505,0x5508, 0x5509,0x550C,0x550D,0x550E,0x5515,0x552A,0x552B,0x5532, 0x5535,0x5536,0x553B,0x553C,0x553D,0x5541,0x5547,0x5549, 0x554A,0x554D,0x5550,0x5551,0x5558,0x555A,0x555B,0x555E, 0x5560,0x5561,0x5564,0x5566,0x557F,0x5581,0x5582,0x5586, 0x5588,0x558E,0x558F,0x5591,0x5592,0x5593,0x5594,0x5597, 0x55A3,0x55A4,0x55AD,0x55B2,0x55BF,0x55C1,0x55C3,0x55C6, 0x55C9,0x55CB,0x55CC,0x55CE,0x55D1,0x55D2, /* Range 0x3621 - 0x367E, array index: 0x0420 */ 0x55D3,0x55D7,0x55D8,0x55DB,0x55DE,0x55E2,0x55E9,0x55F6, 0x55FF,0x5605,0x5608,0x560A,0x560D,0x560E,0x560F,0x5610, 0x5611,0x5612,0x5619,0x562C,0x5630,0x5633,0x5635,0x5637, 0x5639,0x563B,0x563C,0x563D,0x563F,0x5640,0x5641,0x5643, 0x5644,0x5646,0x5649,0x564B,0x564D,0x564F,0x5654,0x565E, 0x5660,0x5661,0x5662,0x5663,0x5666,0x5669,0x566D,0x566F, 0x5671,0x5672,0x5675,0x5684,0x5685,0x5688,0x568B,0x568C, 0x5695,0x5699,0x569A,0x569D,0x569E,0x569F,0x56A6,0x56A7, 0x56A8,0x56A9,0x56AB,0x56AC,0x56AD,0x56B1,0x56B3,0x56B7, 0x56BE,0x56C5,0x56C9,0x56CA,0x56CB,0x56CF,0x56D0,0x56CC, 0x56CD,0x56D9,0x56DC,0x56DD,0x56DF,0x56E1,0x56E4,0x56E5, 0x56E6,0x56E7,0x56E8,0x56F1,0x56EB,0x56ED, /* Range 0x3721 - 0x377E, array index: 0x047E */ 0x56F6,0x56F7,0x5701,0x5702,0x5707,0x570A,0x570C,0x5711, 0x5715,0x571A,0x571B,0x571D,0x5720,0x5722,0x5723,0x5724, 0x5725,0x5729,0x572A,0x572C,0x572E,0x572F,0x5733,0x5734, 0x573D,0x573E,0x573F,0x5745,0x5746,0x574C,0x574D,0x5752, 0x5762,0x5765,0x5767,0x5768,0x576B,0x576D,0x576E,0x576F, 0x5770,0x5771,0x5773,0x5774,0x5775,0x5777,0x5779,0x577A, 0x577B,0x577C,0x577E,0x5781,0x5783,0x578C,0x5794,0x5797, 0x5799,0x579A,0x579C,0x579D,0x579E,0x579F,0x57A1,0x5795, 0x57A7,0x57A8,0x57A9,0x57AC,0x57B8,0x57BD,0x57C7,0x57C8, 0x57CC,0x57CF,0x57D5,0x57DD,0x57DE,0x57E4,0x57E6,0x57E7, 0x57E9,0x57ED,0x57F0,0x57F5,0x57F6,0x57F8,0x57FD,0x57FE, 0x57FF,0x5803,0x5804,0x5808,0x5809,0x57E1, /* Range 0x3821 - 0x387E, array index: 0x04DC */ 0x580C,0x580D,0x581B,0x581E,0x581F,0x5820,0x5826,0x5827, 0x582D,0x5832,0x5839,0x583F,0x5849,0x584C,0x584D,0x584F, 0x5850,0x5855,0x585F,0x5861,0x5864,0x5867,0x5868,0x5878, 0x587C,0x587F,0x5880,0x5881,0x5887,0x5888,0x5889,0x588A, 0x588C,0x588D,0x588F,0x5890,0x5894,0x5896,0x589D,0x58A0, 0x58A1,0x58A2,0x58A6,0x58A9,0x58B1,0x58B2,0x58C4,0x58BC, 0x58C2,0x58C8,0x58CD,0x58CE,0x58D0,0x58D2,0x58D4,0x58D6, 0x58DA,0x58DD,0x58E1,0x58E2,0x58E9,0x58F3,0x5905,0x5906, 0x590B,0x590C,0x5912,0x5913,0x5914,0x8641,0x591D,0x5921, 0x5923,0x5924,0x5928,0x592F,0x5930,0x5933,0x5935,0x5936, 0x593F,0x5943,0x5946,0x5952,0x5953,0x5959,0x595B,0x595D, 0x595E,0x595F,0x5961,0x5963,0x596B,0x596D, /* Range 0x3921 - 0x397E, array index: 0x053A */ 0x596F,0x5972,0x5975,0x5976,0x5979,0x597B,0x597C,0x598B, 0x598C,0x598E,0x5992,0x5995,0x5997,0x599F,0x59A4,0x59A7, 0x59AD,0x59AE,0x59AF,0x59B0,0x59B3,0x59B7,0x59BA,0x59BC, 0x59C1,0x59C3,0x59C4,0x59C8,0x59CA,0x59CD,0x59D2,0x59DD, 0x59DE,0x59DF,0x59E3,0x59E4,0x59E7,0x59EE,0x59EF,0x59F1, 0x59F2,0x59F4,0x59F7,0x5A00,0x5A04,0x5A0C,0x5A0D,0x5A0E, 0x5A12,0x5A13,0x5A1E,0x5A23,0x5A24,0x5A27,0x5A28,0x5A2A, 0x5A2D,0x5A30,0x5A44,0x5A45,0x5A47,0x5A48,0x5A4C,0x5A50, 0x5A55,0x5A5E,0x5A63,0x5A65,0x5A67,0x5A6D,0x5A77,0x5A7A, 0x5A7B,0x5A7E,0x5A8B,0x5A90,0x5A93,0x5A96,0x5A99,0x5A9C, 0x5A9E,0x5A9F,0x5AA0,0x5AA2,0x5AA7,0x5AAC,0x5AB1,0x5AB2, 0x5AB3,0x5AB5,0x5AB8,0x5ABA,0x5ABB,0x5ABF, /* Range 0x3A21 - 0x3A7E, array index: 0x0598 */ 0x5AC4,0x5AC6,0x5AC8,0x5ACF,0x5ADA,0x5ADC,0x5AE0,0x5AE5, 0x5AEA,0x5AEE,0x5AF5,0x5AF6,0x5AFD,0x5B00,0x5B01,0x5B08, 0x5B17,0x5B34,0x5B19,0x5B1B,0x5B1D,0x5B21,0x5B25,0x5B2D, 0x5B38,0x5B41,0x5B4B,0x5B4C,0x5B52,0x5B56,0x5B5E,0x5B68, 0x5B6E,0x5B6F,0x5B7C,0x5B7D,0x5B7E,0x5B7F,0x5B81,0x5B84, 0x5B86,0x5B8A,0x5B8E,0x5B90,0x5B91,0x5B93,0x5B94,0x5B96, 0x5BA8,0x5BA9,0x5BAC,0x5BAD,0x5BAF,0x5BB1,0x5BB2,0x5BB7, 0x5BBA,0x5BBC,0x5BC0,0x5BC1,0x5BCD,0x5BCF,0x5BD6,0x5BD7, 0x5BD8,0x5BD9,0x5BDA,0x5BE0,0x5BEF,0x5BF1,0x5BF4,0x5BFD, 0x5C0C,0x5C17,0x5C1E,0x5C1F,0x5C23,0x5C26,0x5C29,0x5C2B, 0x5C2C,0x5C2E,0x5C30,0x5C32,0x5C35,0x5C36,0x5C59,0x5C5A, 0x5C5C,0x5C62,0x5C63,0x5C67,0x5C68,0x5C69, /* Range 0x3B21 - 0x3B7E, array index: 0x05F6 */ 0x5C6D,0x5C70,0x5C74,0x5C75,0x5C7A,0x5C7B,0x5C7C,0x5C7D, 0x5C87,0x5C88,0x5C8A,0x5C8F,0x5C92,0x5C9D,0x5C9F,0x5CA0, 0x5CA2,0x5CA3,0x5CA6,0x5CAA,0x5CB2,0x5CB4,0x5CB5,0x5CBA, 0x5CC9,0x5CCB,0x5CD2,0x5CDD,0x5CD7,0x5CEE,0x5CF1,0x5CF2, 0x5CF4,0x5D01,0x5D06,0x5D0D,0x5D12,0x5D2B,0x5D23,0x5D24, 0x5D26,0x5D27,0x5D31,0x5D34,0x5D39,0x5D3D,0x5D3F,0x5D42, 0x5D43,0x5D46,0x5D48,0x5D55,0x5D51,0x5D59,0x5D4A,0x5D5F, 0x5D60,0x5D61,0x5D62,0x5D64,0x5D6A,0x5D6D,0x5D70,0x5D79, 0x5D7A,0x5D7E,0x5D7F,0x5D81,0x5D83,0x5D88,0x5D8A,0x5D92, 0x5D93,0x5D94,0x5D95,0x5D99,0x5D9B,0x5D9F,0x5DA0,0x5DA7, 0x5DAB,0x5DB0,0x5DB4,0x5DB8,0x5DB9,0x5DC3,0x5DC7,0x5DCB, 0x5DD0,0x5DCE,0x5DD8,0x5DD9,0x5DE0,0x5DE4, /* Range 0x3C21 - 0x3C7E, array index: 0x0654 */ 0x5DE9,0x5DF8,0x5DF9,0x5E00,0x5E07,0x5E0D,0x5E12,0x5E14, 0x5E15,0x5E18,0x5E1F,0x5E20,0x5E2E,0x5E28,0x5E32,0x5E35, 0x5E3E,0x5E4B,0x5E50,0x5E49,0x5E51,0x5E56,0x5E58,0x5E5B, 0x5E5C,0x5E5E,0x5E68,0x5E6A,0x5E6B,0x5E6C,0x5E6D,0x5E6E, 0x5E70,0x5E80,0x5E8B,0x5E8E,0x5EA2,0x5EA4,0x5EA5,0x5EA8, 0x5EAA,0x5EAC,0x5EB1,0x5EB3,0x5EBD,0x5EBE,0x5EBF,0x5EC6, 0x5ECC,0x5ECB,0x5ECE,0x5ED1,0x5ED2,0x5ED4,0x5ED5,0x5EDC, 0x5EDE,0x5EE5,0x5EEB,0x5F02,0x5F06,0x5F07,0x5F08,0x5F0E, 0x5F19,0x5F1C,0x5F1D,0x5F21,0x5F22,0x5F23,0x5F24,0x5F28, 0x5F2B,0x5F2C,0x5F2E,0x5F30,0x5F34,0x5F36,0x5F3B,0x5F3D, 0x5F3F,0x5F40,0x5F44,0x5F45,0x5F47,0x5F4D,0x5F50,0x5F54, 0x5F58,0x5F5B,0x5F60,0x5F63,0x5F64,0x5F67, /* Range 0x3D21 - 0x3D7E, array index: 0x06B2 */ 0x5F6F,0x5F72,0x5F74,0x5F75,0x5F78,0x5F7A,0x5F7D,0x5F7E, 0x5F89,0x5F8D,0x5F8F,0x5F96,0x5F9C,0x5F9D,0x5FA2,0x5FA7, 0x5FAB,0x5FA4,0x5FAC,0x5FAF,0x5FB0,0x5FB1,0x5FB8,0x5FC4, 0x5FC7,0x5FC8,0x5FC9,0x5FCB,0x5FD0,0x5FD1,0x5FD2,0x5FD3, 0x5FD4,0x5FDE,0x5FE1,0x5FE2,0x5FE8,0x5FE9,0x5FEA,0x5FEC, 0x5FED,0x5FEE,0x5FEF,0x5FF2,0x5FF3,0x5FF6,0x5FFA,0x5FFC, 0x6007,0x600A,0x600D,0x6013,0x6014,0x6017,0x6018,0x601A, 0x601F,0x6024,0x602D,0x6033,0x6035,0x6040,0x6047,0x6048, 0x6049,0x604C,0x6051,0x6054,0x6056,0x6057,0x605D,0x6061, 0x6067,0x6071,0x607E,0x607F,0x6082,0x6086,0x6088,0x608A, 0x608E,0x6091,0x6093,0x6095,0x6098,0x609D,0x609E,0x60A2, 0x60A4,0x60A5,0x60A8,0x60B0,0x60B1,0x60B7, /* Range 0x3E21 - 0x3E7E, array index: 0x0710 */ 0x60BB,0x60BE,0x60C2,0x60C4,0x60C8,0x60C9,0x60CA,0x60CB, 0x60CE,0x60CF,0x60D4,0x60D5,0x60D9,0x60DB,0x60DD,0x60DE, 0x60E2,0x60E5,0x60F2,0x60F5,0x60F8,0x60FC,0x60FD,0x6102, 0x6107,0x610A,0x610C,0x6110,0x6111,0x6112,0x6113,0x6114, 0x6116,0x6117,0x6119,0x611C,0x611E,0x6122,0x612A,0x612B, 0x6130,0x6131,0x6135,0x6136,0x6137,0x6139,0x6141,0x6145, 0x6146,0x6149,0x615E,0x6160,0x616C,0x6172,0x6178,0x617B, 0x617C,0x617F,0x6180,0x6181,0x6183,0x6184,0x618B,0x618D, 0x6192,0x6193,0x6197,0x6198,0x619C,0x619D,0x619F,0x61A0, 0x61A5,0x61A8,0x61AA,0x61AD,0x61B8,0x61B9,0x61BC,0x61C0, 0x61C1,0x61C2,0x61CE,0x61CF,0x61D5,0x61DC,0x61DD,0x61DE, 0x61DF,0x61E1,0x61E2,0x61E7,0x61E9,0x61E5, /* Range 0x3F21 - 0x3F7E, array index: 0x076E */ 0x61EC,0x61ED,0x61EF,0x6201,0x6203,0x6204,0x6207,0x6213, 0x6215,0x621C,0x6220,0x6222,0x6223,0x6227,0x6229,0x622B, 0x6239,0x623D,0x6242,0x6243,0x6244,0x6246,0x624C,0x6250, 0x6251,0x6252,0x6254,0x6256,0x625A,0x625C,0x6264,0x626D, 0x626F,0x6273,0x627A,0x627D,0x628D,0x628E,0x628F,0x6290, 0x62A6,0x62A8,0x62B3,0x62B6,0x62B7,0x62BA,0x62BE,0x62BF, 0x62C4,0x62CE,0x62D5,0x62D6,0x62DA,0x62EA,0x62F2,0x62F4, 0x62FC,0x62FD,0x6303,0x6304,0x630A,0x630B,0x630D,0x6310, 0x6313,0x6316,0x6318,0x6329,0x632A,0x632D,0x6335,0x6336, 0x6339,0x633C,0x6341,0x6342,0x6343,0x6344,0x6346,0x634A, 0x634B,0x634E,0x6352,0x6353,0x6354,0x6358,0x635B,0x6365, 0x6366,0x636C,0x636D,0x6371,0x6374,0x6375, /* Range 0x4021 - 0x407E, array index: 0x07CC */ 0x6378,0x637C,0x637D,0x637F,0x6382,0x6384,0x6387,0x638A, 0x6390,0x6394,0x6395,0x6399,0x639A,0x639E,0x63A4,0x63A6, 0x63AD,0x63AE,0x63AF,0x63BD,0x63C1,0x63C5,0x63C8,0x63CE, 0x63D1,0x63D3,0x63D4,0x63D5,0x63DC,0x63E0,0x63E5,0x63EA, 0x63EC,0x63F2,0x63F3,0x63F5,0x63F8,0x63F9,0x6409,0x640A, 0x6410,0x6412,0x6414,0x6418,0x641E,0x6420,0x6422,0x6424, 0x6425,0x6429,0x642A,0x642F,0x6430,0x6435,0x643D,0x643F, 0x644B,0x644F,0x6451,0x6452,0x6453,0x6454,0x645A,0x645B, 0x645C,0x645D,0x645F,0x6460,0x6461,0x6463,0x646D,0x6473, 0x6474,0x647B,0x647D,0x6485,0x6487,0x648F,0x6490,0x6491, 0x6498,0x6499,0x649B,0x649D,0x649F,0x64A1,0x64A3,0x64A6, 0x64A8,0x64AC,0x64B3,0x64BD,0x64BE,0x64BF, /* Range 0x4121 - 0x417E, array index: 0x082A */ 0x64C4,0x64C9,0x64CA,0x64CB,0x64CC,0x64CE,0x64D0,0x64D1, 0x64D5,0x64D7,0x64E4,0x64E5,0x64E9,0x64EA,0x64ED,0x64F0, 0x64F5,0x64F7,0x64FB,0x64FF,0x6501,0x6504,0x6508,0x6509, 0x650A,0x650F,0x6513,0x6514,0x6516,0x6519,0x651B,0x651E, 0x651F,0x6522,0x6526,0x6529,0x652E,0x6531,0x653A,0x653C, 0x653D,0x6543,0x6547,0x6549,0x6550,0x6552,0x6554,0x655F, 0x6560,0x6567,0x656B,0x657A,0x657D,0x6581,0x6585,0x658A, 0x6592,0x6595,0x6598,0x659D,0x65A0,0x65A3,0x65A6,0x65AE, 0x65B2,0x65B3,0x65B4,0x65BF,0x65C2,0x65C8,0x65C9,0x65CE, 0x65D0,0x65D4,0x65D6,0x65D8,0x65DF,0x65F0,0x65F2,0x65F4, 0x65F5,0x65F9,0x65FE,0x65FF,0x6600,0x6604,0x6608,0x6609, 0x660D,0x6611,0x6612,0x6615,0x6616,0x661D, /* Range 0x4221 - 0x427E, array index: 0x0888 */ 0x661E,0x6621,0x6622,0x6623,0x6624,0x6626,0x6629,0x662A, 0x662B,0x662C,0x662E,0x6630,0x6631,0x6633,0x6639,0x6637, 0x6640,0x6645,0x6646,0x664A,0x664C,0x6651,0x664E,0x6657, 0x6658,0x6659,0x665B,0x665C,0x6660,0x6661,0x66FB,0x666A, 0x666B,0x666C,0x667E,0x6673,0x6675,0x667F,0x6677,0x6678, 0x6679,0x667B,0x6680,0x667C,0x668B,0x668C,0x668D,0x6690, 0x6692,0x6699,0x669A,0x669B,0x669C,0x669F,0x66A0,0x66A4, 0x66AD,0x66B1,0x66B2,0x66B5,0x66BB,0x66BF,0x66C0,0x66C2, 0x66C3,0x66C8,0x66CC,0x66CE,0x66CF,0x66D4,0x66DB,0x66DF, 0x66E8,0x66EB,0x66EC,0x66EE,0x66FA,0x6705,0x6707,0x670E, 0x6713,0x6719,0x671C,0x6720,0x6722,0x6733,0x673E,0x6745, 0x6747,0x6748,0x674C,0x6754,0x6755,0x675D, /* Range 0x4321 - 0x437E, array index: 0x08E6 */ 0x6766,0x676C,0x676E,0x6774,0x6776,0x677B,0x6781,0x6784, 0x678E,0x678F,0x6791,0x6793,0x6796,0x6798,0x6799,0x679B, 0x67B0,0x67B1,0x67B2,0x67B5,0x67BB,0x67BC,0x67BD,0x67F9, 0x67C0,0x67C2,0x67C3,0x67C5,0x67C8,0x67C9,0x67D2,0x67D7, 0x67D9,0x67DC,0x67E1,0x67E6,0x67F0,0x67F2,0x67F6,0x67F7, 0x6852,0x6814,0x6819,0x681D,0x681F,0x6828,0x6827,0x682C, 0x682D,0x682F,0x6830,0x6831,0x6833,0x683B,0x683F,0x6844, 0x6845,0x684A,0x684C,0x6855,0x6857,0x6858,0x685B,0x686B, 0x686E,0x686F,0x6870,0x6871,0x6872,0x6875,0x6879,0x687A, 0x687B,0x687C,0x6882,0x6884,0x6886,0x6888,0x6896,0x6898, 0x689A,0x689C,0x68A1,0x68A3,0x68A5,0x68A9,0x68AA,0x68AE, 0x68B2,0x68BB,0x68C5,0x68C8,0x68CC,0x68CF, /* Range 0x4421 - 0x447E, array index: 0x0944 */ 0x68D0,0x68D1,0x68D3,0x68D6,0x68D9,0x68DC,0x68DD,0x68E5, 0x68E8,0x68EA,0x68EB,0x68EC,0x68ED,0x68F0,0x68F1,0x68F5, 0x68F6,0x68FB,0x68FC,0x68FD,0x6906,0x6909,0x690A,0x6910, 0x6911,0x6913,0x6916,0x6917,0x6931,0x6933,0x6935,0x6938, 0x693B,0x6942,0x6945,0x6949,0x694E,0x6957,0x695B,0x6963, 0x6964,0x6965,0x6966,0x6968,0x6969,0x696C,0x6970,0x6971, 0x6972,0x697A,0x697B,0x697F,0x6980,0x698D,0x6992,0x6996, 0x6998,0x69A1,0x69A5,0x69A6,0x69A8,0x69AB,0x69AD,0x69AF, 0x69B7,0x69B8,0x69BA,0x69BC,0x69C5,0x69C8,0x69D1,0x69D6, 0x69D7,0x69E2,0x69E5,0x69EE,0x69EF,0x69F1,0x69F3,0x69F5, 0x69FE,0x6A00,0x6A01,0x6A03,0x6A0F,0x6A11,0x6A15,0x6A1A, 0x6A1D,0x6A20,0x6A24,0x6A28,0x6A30,0x6A32, /* Range 0x4521 - 0x457E, array index: 0x09A2 */ 0x6A34,0x6A37,0x6A3B,0x6A3E,0x6A3F,0x6A45,0x6A46,0x6A49, 0x6A4A,0x6A4E,0x6A50,0x6A51,0x6A52,0x6A55,0x6A56,0x6A5B, 0x6A64,0x6A67,0x6A6A,0x6A71,0x6A73,0x6A7E,0x6A81,0x6A83, 0x6A86,0x6A87,0x6A89,0x6A8B,0x6A91,0x6A9B,0x6A9D,0x6A9E, 0x6A9F,0x6AA5,0x6AAB,0x6AAF,0x6AB0,0x6AB1,0x6AB4,0x6ABD, 0x6ABE,0x6ABF,0x6AC6,0x6AC9,0x6AC8,0x6ACC,0x6AD0,0x6AD4, 0x6AD5,0x6AD6,0x6ADC,0x6ADD,0x6AE4,0x6AE7,0x6AEC,0x6AF0, 0x6AF1,0x6AF2,0x6AFC,0x6AFD,0x6B02,0x6B03,0x6B06,0x6B07, 0x6B09,0x6B0F,0x6B10,0x6B11,0x6B17,0x6B1B,0x6B1E,0x6B24, 0x6B28,0x6B2B,0x6B2C,0x6B2F,0x6B35,0x6B36,0x6B3B,0x6B3F, 0x6B46,0x6B4A,0x6B4D,0x6B52,0x6B56,0x6B58,0x6B5D,0x6B60, 0x6B67,0x6B6B,0x6B6E,0x6B70,0x6B75,0x6B7D, /* Range 0x4621 - 0x467E, array index: 0x0A00 */ 0x6B7E,0x6B82,0x6B85,0x6B97,0x6B9B,0x6B9F,0x6BA0,0x6BA2, 0x6BA3,0x6BA8,0x6BA9,0x6BAC,0x6BAD,0x6BAE,0x6BB0,0x6BB8, 0x6BB9,0x6BBD,0x6BBE,0x6BC3,0x6BC4,0x6BC9,0x6BCC,0x6BD6, 0x6BDA,0x6BE1,0x6BE3,0x6BE6,0x6BE7,0x6BEE,0x6BF1,0x6BF7, 0x6BF9,0x6BFF,0x6C02,0x6C04,0x6C05,0x6C09,0x6C0D,0x6C0E, 0x6C10,0x6C12,0x6C19,0x6C1F,0x6C26,0x6C27,0x6C28,0x6C2C, 0x6C2E,0x6C33,0x6C35,0x6C36,0x6C3A,0x6C3B,0x6C3F,0x6C4A, 0x6C4B,0x6C4D,0x6C4F,0x6C52,0x6C54,0x6C59,0x6C5B,0x6C5C, 0x6C6B,0x6C6D,0x6C6F,0x6C74,0x6C76,0x6C78,0x6C79,0x6C7B, 0x6C85,0x6C86,0x6C87,0x6C89,0x6C94,0x6C95,0x6C97,0x6C98, 0x6C9C,0x6C9F,0x6CB0,0x6CB2,0x6CB4,0x6CC2,0x6CC6,0x6CCD, 0x6CCF,0x6CD0,0x6CD1,0x6CD2,0x6CD4,0x6CD6, /* Range 0x4721 - 0x477E, array index: 0x0A5E */ 0x6CDA,0x6CDC,0x6CE0,0x6CE7,0x6CE9,0x6CEB,0x6CEC,0x6CEE, 0x6CF2,0x6CF4,0x6D04,0x6D07,0x6D0A,0x6D0E,0x6D0F,0x6D11, 0x6D13,0x6D1A,0x6D26,0x6D27,0x6D28,0x6C67,0x6D2E,0x6D2F, 0x6D31,0x6D39,0x6D3C,0x6D3F,0x6D57,0x6D5E,0x6D5F,0x6D61, 0x6D65,0x6D67,0x6D6F,0x6D70,0x6D7C,0x6D82,0x6D87,0x6D91, 0x6D92,0x6D94,0x6D96,0x6D97,0x6D98,0x6DAA,0x6DAC,0x6DB4, 0x6DB7,0x6DB9,0x6DBD,0x6DBF,0x6DC4,0x6DC8,0x6DCA,0x6DCE, 0x6DCF,0x6DD6,0x6DDB,0x6DDD,0x6DDF,0x6DE0,0x6DE2,0x6DE5, 0x6DE9,0x6DEF,0x6DF0,0x6DF4,0x6DF6,0x6DFC,0x6E00,0x6E04, 0x6E1E,0x6E22,0x6E27,0x6E32,0x6E36,0x6E39,0x6E3B,0x6E3C, 0x6E44,0x6E45,0x6E48,0x6E49,0x6E4B,0x6E4F,0x6E51,0x6E52, 0x6E53,0x6E54,0x6E57,0x6E5C,0x6E5D,0x6E5E, /* Range 0x4821 - 0x487E, array index: 0x0ABC */ 0x6E62,0x6E63,0x6E68,0x6E73,0x6E7B,0x6E7D,0x6E8D,0x6E93, 0x6E99,0x6EA0,0x6EA7,0x6EAD,0x6EAE,0x6EB1,0x6EB3,0x6EBB, 0x6EBF,0x6EC0,0x6EC1,0x6EC3,0x6EC7,0x6EC8,0x6ECA,0x6ECD, 0x6ECE,0x6ECF,0x6EEB,0x6EED,0x6EEE,0x6EF9,0x6EFB,0x6EFD, 0x6F04,0x6F08,0x6F0A,0x6F0C,0x6F0D,0x6F16,0x6F18,0x6F1A, 0x6F1B,0x6F26,0x6F29,0x6F2A,0x6F2F,0x6F30,0x6F33,0x6F36, 0x6F3B,0x6F3C,0x6F2D,0x6F4F,0x6F51,0x6F52,0x6F53,0x6F57, 0x6F59,0x6F5A,0x6F5D,0x6F5E,0x6F61,0x6F62,0x6F68,0x6F6C, 0x6F7D,0x6F7E,0x6F83,0x6F87,0x6F88,0x6F8B,0x6F8C,0x6F8D, 0x6F90,0x6F92,0x6F93,0x6F94,0x6F96,0x6F9A,0x6F9F,0x6FA0, 0x6FA5,0x6FA6,0x6FA7,0x6FA8,0x6FAE,0x6FAF,0x6FB0,0x6FB5, 0x6FB6,0x6FBC,0x6FC5,0x6FC7,0x6FC8,0x6FCA, /* Range 0x4921 - 0x497E, array index: 0x0B1A */ 0x6FDA,0x6FDE,0x6FE8,0x6FE9,0x6FF0,0x6FF5,0x6FF9,0x6FFC, 0x6FFD,0x7000,0x7005,0x7006,0x7007,0x700D,0x7017,0x7020, 0x7023,0x702F,0x7034,0x7037,0x7039,0x703C,0x7043,0x7044, 0x7048,0x7049,0x704A,0x704B,0x7054,0x7055,0x705D,0x705E, 0x704E,0x7064,0x7065,0x706C,0x706E,0x7075,0x7076,0x707E, 0x7081,0x7085,0x7086,0x7094,0x7095,0x7096,0x7097,0x7098, 0x709B,0x70A4,0x70AB,0x70B0,0x70B1,0x70B4,0x70B7,0x70CA, 0x70D1,0x70D3,0x70D4,0x70D5,0x70D6,0x70D8,0x70DC,0x70E4, 0x70FA,0x7103,0x7104,0x7105,0x7106,0x7107,0x710B,0x710C, 0x710F,0x711E,0x7120,0x712B,0x712D,0x712F,0x7130,0x7131, 0x7138,0x7141,0x7145,0x7146,0x7147,0x714A,0x714B,0x7150, 0x7152,0x7157,0x715A,0x715C,0x715E,0x7160, /* Range 0x4A21 - 0x4A7E, array index: 0x0B78 */ 0x7168,0x7179,0x7180,0x7185,0x7187,0x718C,0x7192,0x719A, 0x719B,0x71A0,0x71A2,0x71AF,0x71B0,0x71B2,0x71B3,0x71BA, 0x71BF,0x71C0,0x71C1,0x71C4,0x71CB,0x71CC,0x71D3,0x71D6, 0x71D9,0x71DA,0x71DC,0x71F8,0x71FE,0x7200,0x7207,0x7208, 0x7209,0x7213,0x7217,0x721A,0x721D,0x721F,0x7224,0x722B, 0x722F,0x7234,0x7238,0x7239,0x7241,0x7242,0x7243,0x7245, 0x724E,0x724F,0x7250,0x7253,0x7255,0x7256,0x725A,0x725C, 0x725E,0x7260,0x7263,0x7268,0x726B,0x726E,0x726F,0x7271, 0x7277,0x7278,0x727B,0x727C,0x727F,0x7284,0x7289,0x728D, 0x728E,0x7293,0x729B,0x72A8,0x72AD,0x72AE,0x72B1,0x72B4, 0x72BE,0x72C1,0x72C7,0x72C9,0x72CC,0x72D5,0x72D6,0x72D8, 0x72DF,0x72E5,0x72F3,0x72F4,0x72FA,0x72FB, /* Range 0x4B21 - 0x4B7E, array index: 0x0BD6 */ 0x72FE,0x7302,0x7304,0x7305,0x7307,0x730B,0x730D,0x7312, 0x7313,0x7318,0x7319,0x731E,0x7322,0x7324,0x7327,0x7328, 0x732C,0x7331,0x7332,0x7335,0x733A,0x733B,0x733D,0x7343, 0x734D,0x7350,0x7352,0x7356,0x7358,0x735D,0x735E,0x735F, 0x7360,0x7366,0x7367,0x7369,0x736B,0x736C,0x736E,0x736F, 0x7371,0x7377,0x7379,0x737C,0x7380,0x7381,0x7383,0x7385, 0x7386,0x738E,0x7390,0x7393,0x7395,0x7397,0x7398,0x739C, 0x739E,0x739F,0x73A0,0x73A2,0x73A5,0x73A6,0x73AA,0x73AB, 0x73AD,0x73B5,0x73B7,0x73B9,0x73BC,0x73BD,0x73BF,0x73C5, 0x73C6,0x73C9,0x73CB,0x73CC,0x73CF,0x73D2,0x73D3,0x73D6, 0x73D9,0x73DD,0x73E1,0x73E3,0x73E6,0x73E7,0x73E9,0x73F4, 0x73F5,0x73F7,0x73F9,0x73FA,0x73FB,0x73FD, /* Range 0x4C21 - 0x4C7E, array index: 0x0C34 */ 0x73FF,0x7400,0x7401,0x7404,0x7407,0x740A,0x7411,0x741A, 0x741B,0x7424,0x7426,0x7428,0x7429,0x742A,0x742B,0x742C, 0x742D,0x742E,0x742F,0x7430,0x7431,0x7439,0x7440,0x7443, 0x7444,0x7446,0x7447,0x744B,0x744D,0x7451,0x7452,0x7457, 0x745D,0x7462,0x7466,0x7467,0x7468,0x746B,0x746D,0x746E, 0x7471,0x7472,0x7480,0x7481,0x7485,0x7486,0x7487,0x7489, 0x748F,0x7490,0x7491,0x7492,0x7498,0x7499,0x749A,0x749C, 0x749F,0x74A0,0x74A1,0x74A3,0x74A6,0x74A8,0x74A9,0x74AA, 0x74AB,0x74AE,0x74AF,0x74B1,0x74B2,0x74B5,0x74B9,0x74BB, 0x74BF,0x74C8,0x74C9,0x74CC,0x74D0,0x74D3,0x74D8,0x74DA, 0x74DB,0x74DE,0x74DF,0x74E4,0x74E8,0x74EA,0x74EB,0x74EF, 0x74F4,0x74FA,0x74FB,0x74FC,0x74FF,0x7506, /* Range 0x4D21 - 0x4D7E, array index: 0x0C92 */ 0x7512,0x7516,0x7517,0x7520,0x7521,0x7524,0x7527,0x7529, 0x752A,0x752F,0x7536,0x7539,0x753D,0x753E,0x753F,0x7540, 0x7543,0x7547,0x7548,0x754E,0x7550,0x7552,0x7557,0x755E, 0x755F,0x7561,0x756F,0x7571,0x7579,0x757A,0x757B,0x757C, 0x757D,0x757E,0x7581,0x7585,0x7590,0x7592,0x7593,0x7595, 0x7599,0x759C,0x75A2,0x75A4,0x75B4,0x75BA,0x75BF,0x75C0, 0x75C1,0x75C4,0x75C6,0x75CC,0x75CE,0x75CF,0x75D7,0x75DC, 0x75DF,0x75E0,0x75E1,0x75E4,0x75E7,0x75EC,0x75EE,0x75EF, 0x75F1,0x75F9,0x7600,0x7602,0x7603,0x7604,0x7607,0x7608, 0x760A,0x760C,0x760F,0x7612,0x7613,0x7615,0x7616,0x7619, 0x761B,0x761C,0x761D,0x761E,0x7623,0x7625,0x7626,0x7629, 0x762D,0x7632,0x7633,0x7635,0x7638,0x7639, /* Range 0x4E21 - 0x4E7E, array index: 0x0CF0 */ 0x763A,0x763C,0x764A,0x7640,0x7641,0x7643,0x7644,0x7645, 0x7649,0x764B,0x7655,0x7659,0x765F,0x7664,0x7665,0x766D, 0x766E,0x766F,0x7671,0x7674,0x7681,0x7685,0x768C,0x768D, 0x7695,0x769B,0x769C,0x769D,0x769F,0x76A0,0x76A2,0x76A3, 0x76A4,0x76A5,0x76A6,0x76A7,0x76A8,0x76AA,0x76AD,0x76BD, 0x76C1,0x76C5,0x76C9,0x76CB,0x76CC,0x76CE,0x76D4,0x76D9, 0x76E0,0x76E6,0x76E8,0x76EC,0x76F0,0x76F1,0x76F6,0x76F9, 0x76FC,0x7700,0x7706,0x770A,0x770E,0x7712,0x7714,0x7715, 0x7717,0x7719,0x771A,0x771C,0x7722,0x7728,0x772D,0x772E, 0x772F,0x7734,0x7735,0x7736,0x7739,0x773D,0x773E,0x7742, 0x7745,0x7746,0x774A,0x774D,0x774E,0x774F,0x7752,0x7756, 0x7757,0x775C,0x775E,0x775F,0x7760,0x7762, /* Range 0x4F21 - 0x4F7E, array index: 0x0D4E */ 0x7764,0x7767,0x776A,0x776C,0x7770,0x7772,0x7773,0x7774, 0x777A,0x777D,0x7780,0x7784,0x778C,0x778D,0x7794,0x7795, 0x7796,0x779A,0x779F,0x77A2,0x77A7,0x77AA,0x77AE,0x77AF, 0x77B1,0x77B5,0x77BE,0x77C3,0x77C9,0x77D1,0x77D2,0x77D5, 0x77D9,0x77DE,0x77DF,0x77E0,0x77E4,0x77E6,0x77EA,0x77EC, 0x77F0,0x77F1,0x77F4,0x77F8,0x77FB,0x7805,0x7806,0x7809, 0x780D,0x780E,0x7811,0x781D,0x7821,0x7822,0x7823,0x782D, 0x782E,0x7830,0x7835,0x7837,0x7843,0x7844,0x7847,0x7848, 0x784C,0x784E,0x7852,0x785C,0x785E,0x7860,0x7861,0x7863, 0x7864,0x7868,0x786A,0x786E,0x787A,0x787E,0x788A,0x788F, 0x7894,0x7898,0x78A1,0x789D,0x789E,0x789F,0x78A4,0x78A8, 0x78AC,0x78AD,0x78B0,0x78B1,0x78B2,0x78B3, /* Range 0x5021 - 0x507E, array index: 0x0DAC */ 0x78BB,0x78BD,0x78BF,0x78C7,0x78C8,0x78C9,0x78CC,0x78CE, 0x78D2,0x78D3,0x78D5,0x78D6,0x78E4,0x78DB,0x78DF,0x78E0, 0x78E1,0x78E6,0x78EA,0x78F2,0x78F3,0x7900,0x78F6,0x78F7, 0x78FA,0x78FB,0x78FF,0x7906,0x790C,0x7910,0x791A,0x791C, 0x791E,0x791F,0x7920,0x7925,0x7927,0x7929,0x792D,0x7931, 0x7934,0x7935,0x793B,0x793D,0x793F,0x7944,0x7945,0x7946, 0x794A,0x794B,0x794F,0x7951,0x7954,0x7958,0x795B,0x795C, 0x7967,0x7969,0x796B,0x7972,0x7979,0x797B,0x797C,0x797E, 0x798B,0x798C,0x7991,0x7993,0x7994,0x7995,0x7996,0x7998, 0x799B,0x799C,0x79A1,0x79A8,0x79A9,0x79AB,0x79AF,0x79B1, 0x79B4,0x79B8,0x79BB,0x79C2,0x79C4,0x79C7,0x79C8,0x79CA, 0x79CF,0x79D4,0x79D6,0x79DA,0x79DD,0x79DE, /* Range 0x5121 - 0x517E, array index: 0x0E0A */ 0x79E0,0x79E2,0x79E5,0x79EA,0x79EB,0x79ED,0x79F1,0x79F8, 0x79FC,0x7A02,0x7A03,0x7A07,0x7A09,0x7A0A,0x7A0C,0x7A11, 0x7A15,0x7A1B,0x7A1E,0x7A21,0x7A27,0x7A2B,0x7A2D,0x7A2F, 0x7A30,0x7A34,0x7A35,0x7A38,0x7A39,0x7A3A,0x7A44,0x7A45, 0x7A47,0x7A48,0x7A4C,0x7A55,0x7A56,0x7A59,0x7A5C,0x7A5D, 0x7A5F,0x7A60,0x7A65,0x7A67,0x7A6A,0x7A6D,0x7A75,0x7A78, 0x7A7E,0x7A80,0x7A82,0x7A85,0x7A86,0x7A8A,0x7A8B,0x7A90, 0x7A91,0x7A94,0x7A9E,0x7AA0,0x7AA3,0x7AAC,0x7AB3,0x7AB5, 0x7AB9,0x7ABB,0x7ABC,0x7AC6,0x7AC9,0x7ACC,0x7ACE,0x7AD1, 0x7ADB,0x7AE8,0x7AE9,0x7AEB,0x7AEC,0x7AF1,0x7AF4,0x7AFB, 0x7AFD,0x7AFE,0x7B07,0x7B14,0x7B1F,0x7B23,0x7B27,0x7B29, 0x7B2A,0x7B2B,0x7B2D,0x7B2E,0x7B2F,0x7B30, /* Range 0x5221 - 0x527E, array index: 0x0E68 */ 0x7B31,0x7B34,0x7B3D,0x7B3F,0x7B40,0x7B41,0x7B47,0x7B4E, 0x7B55,0x7B60,0x7B64,0x7B66,0x7B69,0x7B6A,0x7B6D,0x7B6F, 0x7B72,0x7B73,0x7B77,0x7B84,0x7B89,0x7B8E,0x7B90,0x7B91, 0x7B96,0x7B9B,0x7B9E,0x7BA0,0x7BA5,0x7BAC,0x7BAF,0x7BB0, 0x7BB2,0x7BB5,0x7BB6,0x7BBA,0x7BBB,0x7BBC,0x7BBD,0x7BC2, 0x7BC5,0x7BC8,0x7BCA,0x7BD4,0x7BD6,0x7BD7,0x7BD9,0x7BDA, 0x7BDB,0x7BE8,0x7BEA,0x7BF2,0x7BF4,0x7BF5,0x7BF8,0x7BF9, 0x7BFA,0x7BFC,0x7BFE,0x7C01,0x7C02,0x7C03,0x7C04,0x7C06, 0x7C09,0x7C0B,0x7C0C,0x7C0E,0x7C0F,0x7C19,0x7C1B,0x7C20, 0x7C25,0x7C26,0x7C28,0x7C2C,0x7C31,0x7C33,0x7C34,0x7C36, 0x7C39,0x7C3A,0x7C46,0x7C4A,0x7C55,0x7C51,0x7C52,0x7C53, 0x7C59,0x7C5A,0x7C5B,0x7C5C,0x7C5D,0x7C5E, /* Range 0x5321 - 0x537E, array index: 0x0EC6 */ 0x7C61,0x7C63,0x7C67,0x7C69,0x7C6D,0x7C6E,0x7C70,0x7C72, 0x7C79,0x7C7C,0x7C7D,0x7C86,0x7C87,0x7C8F,0x7C94,0x7C9E, 0x7CA0,0x7CA6,0x7CB0,0x7CB6,0x7CB7,0x7CBA,0x7CBB,0x7CBC, 0x7CBF,0x7CC4,0x7CC7,0x7CC8,0x7CC9,0x7CCD,0x7CCF,0x7CD3, 0x7CD4,0x7CD5,0x7CD7,0x7CD9,0x7CDA,0x7CDD,0x7CE6,0x7CE9, 0x7CEB,0x7CF5,0x7D03,0x7D07,0x7D08,0x7D09,0x7D0F,0x7D11, 0x7D12,0x7D13,0x7D16,0x7D1D,0x7D1E,0x7D23,0x7D26,0x7D2A, 0x7D2D,0x7D31,0x7D3C,0x7D3D,0x7D3E,0x7D40,0x7D41,0x7D47, 0x7D48,0x7D4D,0x7D51,0x7D53,0x7D57,0x7D59,0x7D5A,0x7D5C, 0x7D5D,0x7D65,0x7D67,0x7D6A,0x7D70,0x7D78,0x7D7A,0x7D7B, 0x7D7F,0x7D81,0x7D82,0x7D83,0x7D85,0x7D86,0x7D88,0x7D8B, 0x7D8C,0x7D8D,0x7D91,0x7D96,0x7D97,0x7D9D, /* Range 0x5421 - 0x547E, array index: 0x0F24 */ 0x7D9E,0x7DA6,0x7DA7,0x7DAA,0x7DB3,0x7DB6,0x7DB7,0x7DB9, 0x7DC2,0x7DC3,0x7DC4,0x7DC5,0x7DC6,0x7DCC,0x7DCD,0x7DCE, 0x7DD7,0x7DD9,0x7E00,0x7DE2,0x7DE5,0x7DE6,0x7DEA,0x7DEB, 0x7DED,0x7DF1,0x7DF5,0x7DF6,0x7DF9,0x7DFA,0x7E08,0x7E10, 0x7E11,0x7E15,0x7E17,0x7E1C,0x7E1D,0x7E20,0x7E27,0x7E28, 0x7E2C,0x7E2D,0x7E2F,0x7E33,0x7E36,0x7E3F,0x7E44,0x7E45, 0x7E47,0x7E4E,0x7E50,0x7E52,0x7E58,0x7E5F,0x7E61,0x7E62, 0x7E65,0x7E6B,0x7E6E,0x7E6F,0x7E73,0x7E78,0x7E7E,0x7E81, 0x7E86,0x7E87,0x7E8A,0x7E8D,0x7E91,0x7E95,0x7E98,0x7E9A, 0x7E9D,0x7E9E,0x7F3C,0x7F3B,0x7F3D,0x7F3E,0x7F3F,0x7F43, 0x7F44,0x7F47,0x7F4F,0x7F52,0x7F53,0x7F5B,0x7F5C,0x7F5D, 0x7F61,0x7F63,0x7F64,0x7F65,0x7F66,0x7F6D, /* Range 0x5521 - 0x557E, array index: 0x0F82 */ 0x7F71,0x7F7D,0x7F7E,0x7F7F,0x7F80,0x7F8B,0x7F8D,0x7F8F, 0x7F90,0x7F91,0x7F96,0x7F97,0x7F9C,0x7FA1,0x7FA2,0x7FA6, 0x7FAA,0x7FAD,0x7FB4,0x7FBC,0x7FBF,0x7FC0,0x7FC3,0x7FC8, 0x7FCE,0x7FCF,0x7FDB,0x7FDF,0x7FE3,0x7FE5,0x7FE8,0x7FEC, 0x7FEE,0x7FEF,0x7FF2,0x7FFA,0x7FFD,0x7FFE,0x7FFF,0x8007, 0x8008,0x800A,0x800D,0x800E,0x800F,0x8011,0x8013,0x8014, 0x8016,0x801D,0x801E,0x801F,0x8020,0x8024,0x8026,0x802C, 0x802E,0x8030,0x8034,0x8035,0x8037,0x8039,0x803A,0x803C, 0x803E,0x8040,0x8044,0x8060,0x8064,0x8066,0x806D,0x8071, 0x8075,0x8081,0x8088,0x808E,0x809C,0x809E,0x80A6,0x80A7, 0x80AB,0x80B8,0x80B9,0x80C8,0x80CD,0x80CF,0x80D2,0x80D4, 0x80D5,0x80D7,0x80D8,0x80E0,0x80ED,0x80EE, /* Range 0x5621 - 0x567E, array index: 0x0FE0 */ 0x80F0,0x80F2,0x80F3,0x80F6,0x80F9,0x80FA,0x80FE,0x8103, 0x810B,0x8116,0x8117,0x8118,0x811C,0x811E,0x8120,0x8124, 0x8127,0x812C,0x8130,0x8135,0x813A,0x813C,0x8145,0x8147, 0x814A,0x814C,0x8152,0x8157,0x8160,0x8161,0x8167,0x8168, 0x8169,0x816D,0x816F,0x8177,0x8181,0x8190,0x8184,0x8185, 0x8186,0x818B,0x818E,0x8196,0x8198,0x819B,0x819E,0x81A2, 0x81AE,0x81B2,0x81B4,0x81BB,0x81CB,0x81C3,0x81C5,0x81CA, 0x81CE,0x81CF,0x81D5,0x81D7,0x81DB,0x81DD,0x81DE,0x81E1, 0x81E4,0x81EB,0x81EC,0x81F0,0x81F1,0x81F2,0x81F5,0x81F6, 0x81F8,0x81F9,0x81FD,0x81FF,0x8200,0x8203,0x820F,0x8213, 0x8214,0x8219,0x821A,0x821D,0x8221,0x8222,0x8228,0x8232, 0x8234,0x823A,0x8243,0x8244,0x8245,0x8246, /* Range 0x5721 - 0x577E, array index: 0x103E */ 0x824B,0x824E,0x824F,0x8251,0x8256,0x825C,0x8260,0x8263, 0x8267,0x826D,0x8274,0x827B,0x827D,0x827F,0x8280,0x8281, 0x8283,0x8284,0x8287,0x8289,0x828A,0x828E,0x8291,0x8294, 0x8296,0x8298,0x829A,0x829B,0x82A0,0x82A1,0x82A3,0x82A4, 0x82A7,0x82A8,0x82A9,0x82AA,0x82AE,0x82B0,0x82B2,0x82B4, 0x82B7,0x82BA,0x82BC,0x82BE,0x82BF,0x82C6,0x82D0,0x82D5, 0x82DA,0x82E0,0x82E2,0x82E4,0x82E8,0x82EA,0x82ED,0x82EF, 0x82F6,0x82F7,0x82FD,0x82FE,0x8300,0x8301,0x8307,0x8308, 0x830A,0x830B,0x8354,0x831B,0x831D,0x831E,0x831F,0x8321, 0x8322,0x832C,0x832D,0x832E,0x8330,0x8333,0x8337,0x833A, 0x833C,0x833D,0x8342,0x8343,0x8344,0x8347,0x834D,0x834E, 0x8351,0x8355,0x8356,0x8357,0x8370,0x8378, /* Range 0x5821 - 0x587E, array index: 0x109C */ 0x837D,0x837F,0x8380,0x8382,0x8384,0x8386,0x838D,0x8392, 0x8394,0x8395,0x8398,0x8399,0x839B,0x839C,0x839D,0x83A6, 0x83A7,0x83A9,0x83AC,0x83BE,0x83BF,0x83C0,0x83C7,0x83C9, 0x83CF,0x83D0,0x83D1,0x83D4,0x83DD,0x8353,0x83E8,0x83EA, 0x83F6,0x83F8,0x83F9,0x83FC,0x8401,0x8406,0x840A,0x840F, 0x8411,0x8415,0x8419,0x83AD,0x842F,0x8439,0x8445,0x8447, 0x8448,0x844A,0x844D,0x844F,0x8451,0x8452,0x8456,0x8458, 0x8459,0x845A,0x845C,0x8460,0x8464,0x8465,0x8467,0x846A, 0x8470,0x8473,0x8474,0x8476,0x8478,0x847C,0x847D,0x8481, 0x8485,0x8492,0x8493,0x8495,0x849E,0x84A6,0x84A8,0x84A9, 0x84AA,0x84AF,0x84B1,0x84B4,0x84BA,0x84BD,0x84BE,0x84C0, 0x84C2,0x84C7,0x84C8,0x84CC,0x84CF,0x84D3, /* Range 0x5921 - 0x597E, array index: 0x10FA */ 0x84DC,0x84E7,0x84EA,0x84EF,0x84F0,0x84F1,0x84F2,0x84F7, 0x8532,0x84FA,0x84FB,0x84FD,0x8502,0x8503,0x8507,0x850C, 0x850E,0x8510,0x851C,0x851E,0x8522,0x8523,0x8524,0x8525, 0x8527,0x852A,0x852B,0x852F,0x8533,0x8534,0x8536,0x853F, 0x8546,0x854F,0x8550,0x8551,0x8552,0x8553,0x8556,0x8559, 0x855C,0x855D,0x855E,0x855F,0x8560,0x8561,0x8562,0x8564, 0x856B,0x856F,0x8579,0x857A,0x857B,0x857D,0x857F,0x8581, 0x8585,0x8586,0x8589,0x858B,0x858C,0x858F,0x8593,0x8598, 0x859D,0x859F,0x85A0,0x85A2,0x85A5,0x85A7,0x85B4,0x85B6, 0x85B7,0x85B8,0x85BC,0x85BD,0x85BE,0x85BF,0x85C2,0x85C7, 0x85CA,0x85CB,0x85CE,0x85AD,0x85D8,0x85DA,0x85DF,0x85E0, 0x85E6,0x85E8,0x85ED,0x85F3,0x85F6,0x85FC, /* Range 0x5A21 - 0x5A7E, array index: 0x1158 */ 0x85FF,0x8600,0x8604,0x8605,0x860D,0x860E,0x8610,0x8611, 0x8612,0x8618,0x8619,0x861B,0x861E,0x8621,0x8627,0x8629, 0x8636,0x8638,0x863A,0x863C,0x863D,0x8640,0x8642,0x8646, 0x8652,0x8653,0x8656,0x8657,0x8658,0x8659,0x865D,0x8660, 0x8661,0x8662,0x8663,0x8664,0x8669,0x866C,0x866F,0x8675, 0x8676,0x8677,0x867A,0x868D,0x8691,0x8696,0x8698,0x869A, 0x869C,0x86A1,0x86A6,0x86A7,0x86A8,0x86AD,0x86B1,0x86B3, 0x86B4,0x86B5,0x86B7,0x86B8,0x86B9,0x86BF,0x86C0,0x86C1, 0x86C3,0x86C5,0x86D1,0x86D2,0x86D5,0x86D7,0x86DA,0x86DC, 0x86E0,0x86E3,0x86E5,0x86E7,0x8688,0x86FA,0x86FC,0x86FD, 0x8704,0x8705,0x8707,0x870B,0x870E,0x870F,0x8710,0x8713, 0x8714,0x8719,0x871E,0x871F,0x8721,0x8723, /* Range 0x5B21 - 0x5B7E, array index: 0x11B6 */ 0x8728,0x872E,0x872F,0x8731,0x8732,0x8739,0x873A,0x873C, 0x873D,0x873E,0x8740,0x8743,0x8745,0x874D,0x8758,0x875D, 0x8761,0x8764,0x8765,0x876F,0x8771,0x8772,0x877B,0x8783, 0x8784,0x8785,0x8786,0x8787,0x8788,0x8789,0x878B,0x878C, 0x8790,0x8793,0x8795,0x8797,0x8798,0x8799,0x879E,0x87A0, 0x87A3,0x87A7,0x87AC,0x87AD,0x87AE,0x87B1,0x87B5,0x87BE, 0x87BF,0x87C1,0x87C8,0x87C9,0x87CA,0x87CE,0x87D5,0x87D6, 0x87D9,0x87DA,0x87DC,0x87DF,0x87E2,0x87E3,0x87E4,0x87EA, 0x87EB,0x87ED,0x87F1,0x87F3,0x87F8,0x87FA,0x87FF,0x8801, 0x8803,0x8806,0x8809,0x880A,0x880B,0x8810,0x8819,0x8812, 0x8813,0x8814,0x8818,0x881A,0x881B,0x881C,0x881E,0x881F, 0x8828,0x882D,0x882E,0x8830,0x8832,0x8835, /* Range 0x5C21 - 0x5C7E, array index: 0x1214 */ 0x883A,0x883C,0x8841,0x8843,0x8845,0x8848,0x8849,0x884A, 0x884B,0x884E,0x8851,0x8855,0x8856,0x8858,0x885A,0x885C, 0x885F,0x8860,0x8864,0x8869,0x8871,0x8879,0x887B,0x8880, 0x8898,0x889A,0x889B,0x889C,0x889F,0x88A0,0x88A8,0x88AA, 0x88BA,0x88BD,0x88BE,0x88C0,0x88CA,0x88CB,0x88CC,0x88CD, 0x88CE,0x88D1,0x88D2,0x88D3,0x88DB,0x88DE,0x88E7,0x88EF, 0x88F0,0x88F1,0x88F5,0x88F7,0x8901,0x8906,0x890D,0x890E, 0x890F,0x8915,0x8916,0x8918,0x8919,0x891A,0x891C,0x8920, 0x8926,0x8927,0x8928,0x8930,0x8931,0x8932,0x8935,0x8939, 0x893A,0x893E,0x8940,0x8942,0x8945,0x8946,0x8949,0x894F, 0x8952,0x8957,0x895A,0x895B,0x895C,0x8961,0x8962,0x8963, 0x896B,0x896E,0x8970,0x8973,0x8975,0x897A, /* Range 0x5D21 - 0x5D7E, array index: 0x1272 */ 0x897B,0x897C,0x897D,0x8989,0x898D,0x8990,0x8994,0x8995, 0x899B,0x899C,0x899F,0x89A0,0x89A5,0x89B0,0x89B4,0x89B5, 0x89B6,0x89B7,0x89BC,0x89D4,0x89D5,0x89D6,0x89D7,0x89D8, 0x89E5,0x89E9,0x89EB,0x89ED,0x89F1,0x89F3,0x89F6,0x89F9, 0x89FD,0x89FF,0x8A04,0x8A05,0x8A07,0x8A0F,0x8A11,0x8A12, 0x8A14,0x8A15,0x8A1E,0x8A20,0x8A22,0x8A24,0x8A26,0x8A2B, 0x8A2C,0x8A2F,0x8A35,0x8A37,0x8A3D,0x8A3E,0x8A40,0x8A43, 0x8A45,0x8A47,0x8A49,0x8A4D,0x8A4E,0x8A53,0x8A56,0x8A57, 0x8A58,0x8A5C,0x8A5D,0x8A61,0x8A65,0x8A67,0x8A75,0x8A76, 0x8A77,0x8A79,0x8A7A,0x8A7B,0x8A7E,0x8A7F,0x8A80,0x8A83, 0x8A86,0x8A8B,0x8A8F,0x8A90,0x8A92,0x8A96,0x8A97,0x8A99, 0x8A9F,0x8AA7,0x8AA9,0x8AAE,0x8AAF,0x8AB3, /* Range 0x5E21 - 0x5E7E, array index: 0x12D0 */ 0x8AB6,0x8AB7,0x8ABB,0x8ABE,0x8AC3,0x8AC6,0x8AC8,0x8AC9, 0x8ACA,0x8AD1,0x8AD3,0x8AD4,0x8AD5,0x8AD7,0x8ADD,0x8ADF, 0x8AEC,0x8AF0,0x8AF4,0x8AF5,0x8AF6,0x8AFC,0x8AFF,0x8B05, 0x8B06,0x8B0B,0x8B11,0x8B1C,0x8B1E,0x8B1F,0x8B0A,0x8B2D, 0x8B30,0x8B37,0x8B3C,0x8B42,0x8B43,0x8B44,0x8B45,0x8B46, 0x8B48,0x8B52,0x8B53,0x8B54,0x8B59,0x8B4D,0x8B5E,0x8B63, 0x8B6D,0x8B76,0x8B78,0x8B79,0x8B7C,0x8B7E,0x8B81,0x8B84, 0x8B85,0x8B8B,0x8B8D,0x8B8F,0x8B94,0x8B95,0x8B9C,0x8B9E, 0x8B9F,0x8C38,0x8C39,0x8C3D,0x8C3E,0x8C45,0x8C47,0x8C49, 0x8C4B,0x8C4F,0x8C51,0x8C53,0x8C54,0x8C57,0x8C58,0x8C5B, 0x8C5D,0x8C59,0x8C63,0x8C64,0x8C66,0x8C68,0x8C69,0x8C6D, 0x8C73,0x8C75,0x8C76,0x8C7B,0x8C7E,0x8C86, /* Range 0x5F21 - 0x5F7E, array index: 0x132E */ 0x8C87,0x8C8B,0x8C90,0x8C92,0x8C93,0x8C99,0x8C9B,0x8C9C, 0x8CA4,0x8CB9,0x8CBA,0x8CC5,0x8CC6,0x8CC9,0x8CCB,0x8CCF, 0x8CD6,0x8CD5,0x8CD9,0x8CDD,0x8CE1,0x8CE8,0x8CEC,0x8CEF, 0x8CF0,0x8CF2,0x8CF5,0x8CF7,0x8CF8,0x8CFE,0x8CFF,0x8D01, 0x8D03,0x8D09,0x8D12,0x8D17,0x8D1B,0x8D65,0x8D69,0x8D6C, 0x8D6E,0x8D7F,0x8D82,0x8D84,0x8D88,0x8D8D,0x8D90,0x8D91, 0x8D95,0x8D9E,0x8D9F,0x8DA0,0x8DA6,0x8DAB,0x8DAC,0x8DAF, 0x8DB2,0x8DB5,0x8DB7,0x8DB9,0x8DBB,0x8DC0,0x8DC5,0x8DC6, 0x8DC7,0x8DC8,0x8DCA,0x8DCE,0x8DD1,0x8DD4,0x8DD5,0x8DD7, 0x8DD9,0x8DE4,0x8DE5,0x8DE7,0x8DEC,0x8DF0,0x8DBC,0x8DF1, 0x8DF2,0x8DF4,0x8DFD,0x8E01,0x8E04,0x8E05,0x8E06,0x8E0B, 0x8E11,0x8E14,0x8E16,0x8E20,0x8E21,0x8E22, /* Range 0x6021 - 0x607E, array index: 0x138C */ 0x8E23,0x8E26,0x8E27,0x8E31,0x8E33,0x8E36,0x8E37,0x8E38, 0x8E39,0x8E3D,0x8E40,0x8E41,0x8E4B,0x8E4D,0x8E4E,0x8E4F, 0x8E54,0x8E5B,0x8E5C,0x8E5D,0x8E5E,0x8E61,0x8E62,0x8E69, 0x8E6C,0x8E6D,0x8E6F,0x8E70,0x8E71,0x8E79,0x8E7A,0x8E7B, 0x8E82,0x8E83,0x8E89,0x8E90,0x8E92,0x8E95,0x8E9A,0x8E9B, 0x8E9D,0x8E9E,0x8EA2,0x8EA7,0x8EA9,0x8EAD,0x8EAE,0x8EB3, 0x8EB5,0x8EBA,0x8EBB,0x8EC0,0x8EC1,0x8EC3,0x8EC4,0x8EC7, 0x8ECF,0x8ED1,0x8ED4,0x8EDC,0x8EE8,0x8EEE,0x8EF0,0x8EF1, 0x8EF7,0x8EF9,0x8EFA,0x8EED,0x8F00,0x8F02,0x8F07,0x8F08, 0x8F0F,0x8F10,0x8F16,0x8F17,0x8F18,0x8F1E,0x8F20,0x8F21, 0x8F23,0x8F25,0x8F27,0x8F28,0x8F2C,0x8F2D,0x8F2E,0x8F34, 0x8F35,0x8F36,0x8F37,0x8F3A,0x8F40,0x8F41, /* Range 0x6121 - 0x617E, array index: 0x13EA */ 0x8F43,0x8F47,0x8F4F,0x8F51,0x8F52,0x8F53,0x8F54,0x8F55, 0x8F58,0x8F5D,0x8F5E,0x8F65,0x8F9D,0x8FA0,0x8FA1,0x8FA4, 0x8FA5,0x8FA6,0x8FB5,0x8FB6,0x8FB8,0x8FBE,0x8FC0,0x8FC1, 0x8FC6,0x8FCA,0x8FCB,0x8FCD,0x8FD0,0x8FD2,0x8FD3,0x8FD5, 0x8FE0,0x8FE3,0x8FE4,0x8FE8,0x8FEE,0x8FF1,0x8FF5,0x8FF6, 0x8FFB,0x8FFE,0x9002,0x9004,0x9008,0x900C,0x9018,0x901B, 0x9028,0x9029,0x902F,0x902A,0x902C,0x902D,0x9033,0x9034, 0x9037,0x903F,0x9043,0x9044,0x904C,0x905B,0x905D,0x9062, 0x9066,0x9067,0x906C,0x9070,0x9074,0x9079,0x9085,0x9088, 0x908B,0x908C,0x908E,0x9090,0x9095,0x9097,0x9098,0x9099, 0x909B,0x90A0,0x90A1,0x90A2,0x90A5,0x90B0,0x90B2,0x90B3, 0x90B4,0x90B6,0x90BD,0x90CC,0x90BE,0x90C3, /* Range 0x6221 - 0x627E, array index: 0x1448 */ 0x90C4,0x90C5,0x90C7,0x90C8,0x90D5,0x90D7,0x90D8,0x90D9, 0x90DC,0x90DD,0x90DF,0x90E5,0x90D2,0x90F6,0x90EB,0x90EF, 0x90F0,0x90F4,0x90FE,0x90FF,0x9100,0x9104,0x9105,0x9106, 0x9108,0x910D,0x9110,0x9114,0x9116,0x9117,0x9118,0x911A, 0x911C,0x911E,0x9120,0x9125,0x9122,0x9123,0x9127,0x9129, 0x912E,0x912F,0x9131,0x9134,0x9136,0x9137,0x9139,0x913A, 0x913C,0x913D,0x9143,0x9147,0x9148,0x914F,0x9153,0x9157, 0x9159,0x915A,0x915B,0x9161,0x9164,0x9167,0x916D,0x9174, 0x9179,0x917A,0x917B,0x9181,0x9183,0x9185,0x9186,0x918A, 0x918E,0x9191,0x9193,0x9194,0x9195,0x9198,0x919E,0x91A1, 0x91A6,0x91A8,0x91AC,0x91AD,0x91AE,0x91B0,0x91B1,0x91B2, 0x91B3,0x91B6,0x91BB,0x91BC,0x91BD,0x91BF, /* Range 0x6321 - 0x637E, array index: 0x14A6 */ 0x91C2,0x91C3,0x91C5,0x91D3,0x91D4,0x91D7,0x91D9,0x91DA, 0x91DE,0x91E4,0x91E5,0x91E9,0x91EA,0x91EC,0x91ED,0x91EE, 0x91EF,0x91F0,0x91F1,0x91F7,0x91F9,0x91FB,0x91FD,0x9200, 0x9201,0x9204,0x9205,0x9206,0x9207,0x9209,0x920A,0x920C, 0x9210,0x9212,0x9213,0x9216,0x9218,0x921C,0x921D,0x9223, 0x9224,0x9225,0x9226,0x9228,0x922E,0x922F,0x9230,0x9233, 0x9235,0x9236,0x9238,0x9239,0x923A,0x923C,0x923E,0x9240, 0x9242,0x9243,0x9246,0x9247,0x924A,0x924D,0x924E,0x924F, 0x9251,0x9258,0x9259,0x925C,0x925D,0x9260,0x9261,0x9265, 0x9267,0x9268,0x9269,0x926E,0x926F,0x9270,0x9275,0x9276, 0x9277,0x9278,0x9279,0x927B,0x927C,0x927D,0x927F,0x9288, 0x9289,0x928A,0x928D,0x928E,0x9292,0x9297, /* Range 0x6421 - 0x647E, array index: 0x1504 */ 0x9299,0x929F,0x92A0,0x92A4,0x92A5,0x92A7,0x92A8,0x92AB, 0x92AF,0x92B2,0x92B6,0x92B8,0x92BA,0x92BB,0x92BC,0x92BD, 0x92BF,0x92C0,0x92C1,0x92C2,0x92C3,0x92C5,0x92C6,0x92C7, 0x92C8,0x92CB,0x92CC,0x92CD,0x92CE,0x92D0,0x92D3,0x92D5, 0x92D7,0x92D8,0x92D9,0x92DC,0x92DD,0x92DF,0x92E0,0x92E1, 0x92E3,0x92E5,0x92E7,0x92E8,0x92EC,0x92EE,0x92F0,0x92F9, 0x92FB,0x92FF,0x9300,0x9302,0x9308,0x930D,0x9311,0x9314, 0x9315,0x931C,0x931D,0x931E,0x931F,0x9321,0x9324,0x9325, 0x9327,0x9329,0x932A,0x9333,0x9334,0x9336,0x9337,0x9347, 0x9348,0x9349,0x9350,0x9351,0x9352,0x9355,0x9357,0x9358, 0x935A,0x935E,0x9364,0x9365,0x9367,0x9369,0x936A,0x936D, 0x936F,0x9370,0x9371,0x9373,0x9374,0x9376, /* Range 0x6521 - 0x657E, array index: 0x1562 */ 0x937A,0x937D,0x937F,0x9380,0x9381,0x9382,0x9388,0x938A, 0x938B,0x938D,0x938F,0x9392,0x9395,0x9398,0x939B,0x939E, 0x93A1,0x93A3,0x93A4,0x93A6,0x93A8,0x93AB,0x93B4,0x93B5, 0x93B6,0x93BA,0x93A9,0x93C1,0x93C4,0x93C5,0x93C6,0x93C7, 0x93C9,0x93CA,0x93CB,0x93CC,0x93CD,0x93D3,0x93D9,0x93DC, 0x93DE,0x93DF,0x93E2,0x93E6,0x93E7,0x93F9,0x93F7,0x93F8, 0x93FA,0x93FB,0x93FD,0x9401,0x9402,0x9404,0x9408,0x9409, 0x940D,0x940E,0x940F,0x9415,0x9416,0x9417,0x941F,0x942E, 0x942F,0x9431,0x9432,0x9433,0x9434,0x943B,0x943F,0x943D, 0x9443,0x9445,0x9448,0x944A,0x944C,0x9455,0x9459,0x945C, 0x945F,0x9461,0x9463,0x9468,0x946B,0x946D,0x946E,0x946F, 0x9471,0x9472,0x9484,0x9483,0x9578,0x9579, /* Range 0x6621 - 0x667E, array index: 0x15C0 */ 0x957E,0x9584,0x9588,0x958C,0x958D,0x958E,0x959D,0x959E, 0x959F,0x95A1,0x95A6,0x95A9,0x95AB,0x95AC,0x95B4,0x95B6, 0x95BA,0x95BD,0x95BF,0x95C6,0x95C8,0x95C9,0x95CB,0x95D0, 0x95D1,0x95D2,0x95D3,0x95D9,0x95DA,0x95DD,0x95DE,0x95DF, 0x95E0,0x95E4,0x95E6,0x961D,0x961E,0x9622,0x9624,0x9625, 0x9626,0x962C,0x9631,0x9633,0x9637,0x9638,0x9639,0x963A, 0x963C,0x963D,0x9641,0x9652,0x9654,0x9656,0x9657,0x9658, 0x9661,0x966E,0x9674,0x967B,0x967C,0x967E,0x967F,0x9681, 0x9682,0x9683,0x9684,0x9689,0x9691,0x9696,0x969A,0x969D, 0x969F,0x96A4,0x96A5,0x96A6,0x96A9,0x96AE,0x96AF,0x96B3, 0x96BA,0x96CA,0x96D2,0x5DB2,0x96D8,0x96DA,0x96DD,0x96DE, 0x96DF,0x96E9,0x96EF,0x96F1,0x96FA,0x9702, /* Range 0x6721 - 0x677E, array index: 0x161E */ 0x9703,0x9705,0x9709,0x971A,0x971B,0x971D,0x9721,0x9722, 0x9723,0x9728,0x9731,0x9733,0x9741,0x9743,0x974A,0x974E, 0x974F,0x9755,0x9757,0x9758,0x975A,0x975B,0x9763,0x9767, 0x976A,0x976E,0x9773,0x9776,0x9777,0x9778,0x977B,0x977D, 0x977F,0x9780,0x9789,0x9795,0x9796,0x9797,0x9799,0x979A, 0x979E,0x979F,0x97A2,0x97AC,0x97AE,0x97B1,0x97B2,0x97B5, 0x97B6,0x97B8,0x97B9,0x97BA,0x97BC,0x97BE,0x97BF,0x97C1, 0x97C4,0x97C5,0x97C7,0x97C9,0x97CA,0x97CC,0x97CD,0x97CE, 0x97D0,0x97D1,0x97D4,0x97D7,0x97D8,0x97D9,0x97DD,0x97DE, 0x97E0,0x97DB,0x97E1,0x97E4,0x97EF,0x97F1,0x97F4,0x97F7, 0x97F8,0x97FA,0x9807,0x980A,0x9819,0x980D,0x980E,0x9814, 0x9816,0x981C,0x981E,0x9820,0x9823,0x9826, /* Range 0x6821 - 0x687E, array index: 0x167C */ 0x982B,0x982E,0x982F,0x9830,0x9832,0x9833,0x9835,0x9825, 0x983E,0x9844,0x9847,0x984A,0x9851,0x9852,0x9853,0x9856, 0x9857,0x9859,0x985A,0x9862,0x9863,0x9865,0x9866,0x986A, 0x986C,0x98AB,0x98AD,0x98AE,0x98B0,0x98B4,0x98B7,0x98B8, 0x98BA,0x98BB,0x98BF,0x98C2,0x98C5,0x98C8,0x98CC,0x98E1, 0x98E3,0x98E5,0x98E6,0x98E7,0x98EA,0x98F3,0x98F6,0x9902, 0x9907,0x9908,0x9911,0x9915,0x9916,0x9917,0x991A,0x991B, 0x991C,0x991F,0x9922,0x9926,0x9927,0x992B,0x9931,0x9932, 0x9933,0x9934,0x9935,0x9939,0x993A,0x993B,0x993C,0x9940, 0x9941,0x9946,0x9947,0x9948,0x994D,0x994E,0x9954,0x9958, 0x9959,0x995B,0x995C,0x995E,0x995F,0x9960,0x999B,0x999D, 0x999F,0x99A6,0x99B0,0x99B1,0x99B2,0x99B5, /* Range 0x6921 - 0x697E, array index: 0x16DA */ 0x99B9,0x99BA,0x99BD,0x99BF,0x99C3,0x99C9,0x99D3,0x99D4, 0x99D9,0x99DA,0x99DC,0x99DE,0x99E7,0x99EA,0x99EB,0x99EC, 0x99F0,0x99F4,0x99F5,0x99F9,0x99FD,0x99FE,0x9A02,0x9A03, 0x9A04,0x9A0B,0x9A0C,0x9A10,0x9A11,0x9A16,0x9A1E,0x9A20, 0x9A22,0x9A23,0x9A24,0x9A27,0x9A2D,0x9A2E,0x9A33,0x9A35, 0x9A36,0x9A38,0x9A47,0x9A41,0x9A44,0x9A4A,0x9A4B,0x9A4C, 0x9A4E,0x9A51,0x9A54,0x9A56,0x9A5D,0x9AAA,0x9AAC,0x9AAE, 0x9AAF,0x9AB2,0x9AB4,0x9AB5,0x9AB6,0x9AB9,0x9ABB,0x9ABE, 0x9ABF,0x9AC1,0x9AC3,0x9AC6,0x9AC8,0x9ACE,0x9AD0,0x9AD2, 0x9AD5,0x9AD6,0x9AD7,0x9ADB,0x9ADC,0x9AE0,0x9AE4,0x9AE5, 0x9AE7,0x9AE9,0x9AEC,0x9AF2,0x9AF3,0x9AF5,0x9AF9,0x9AFA, 0x9AFD,0x9AFF,0x9B00,0x9B01,0x9B02,0x9B03, /* Range 0x6A21 - 0x6A7E, array index: 0x1738 */ 0x9B04,0x9B05,0x9B08,0x9B09,0x9B0B,0x9B0C,0x9B0D,0x9B0E, 0x9B10,0x9B12,0x9B16,0x9B19,0x9B1B,0x9B1C,0x9B20,0x9B26, 0x9B2B,0x9B2D,0x9B33,0x9B34,0x9B35,0x9B37,0x9B39,0x9B3A, 0x9B3D,0x9B48,0x9B4B,0x9B4C,0x9B55,0x9B56,0x9B57,0x9B5B, 0x9B5E,0x9B61,0x9B63,0x9B65,0x9B66,0x9B68,0x9B6A,0x9B6B, 0x9B6C,0x9B6D,0x9B6E,0x9B73,0x9B75,0x9B77,0x9B78,0x9B79, 0x9B7F,0x9B80,0x9B84,0x9B85,0x9B86,0x9B87,0x9B89,0x9B8A, 0x9B8B,0x9B8D,0x9B8F,0x9B90,0x9B94,0x9B9A,0x9B9D,0x9B9E, 0x9BA6,0x9BA7,0x9BA9,0x9BAC,0x9BB0,0x9BB1,0x9BB2,0x9BB7, 0x9BB8,0x9BBB,0x9BBC,0x9BBE,0x9BBF,0x9BC1,0x9BC7,0x9BC8, 0x9BCE,0x9BD0,0x9BD7,0x9BD8,0x9BDD,0x9BDF,0x9BE5,0x9BE7, 0x9BEA,0x9BEB,0x9BEF,0x9BF3,0x9BF7,0x9BF8, /* Range 0x6B21 - 0x6B7E, array index: 0x1796 */ 0x9BF9,0x9BFA,0x9BFD,0x9BFF,0x9C00,0x9C02,0x9C0B,0x9C0F, 0x9C11,0x9C16,0x9C18,0x9C19,0x9C1A,0x9C1C,0x9C1E,0x9C22, 0x9C23,0x9C26,0x9C27,0x9C28,0x9C29,0x9C2A,0x9C31,0x9C35, 0x9C36,0x9C37,0x9C3D,0x9C41,0x9C43,0x9C44,0x9C45,0x9C49, 0x9C4A,0x9C4E,0x9C4F,0x9C50,0x9C53,0x9C54,0x9C56,0x9C58, 0x9C5B,0x9C5D,0x9C5E,0x9C5F,0x9C63,0x9C69,0x9C6A,0x9C5C, 0x9C6B,0x9C68,0x9C6E,0x9C70,0x9C72,0x9C75,0x9C77,0x9C7B, 0x9CE6,0x9CF2,0x9CF7,0x9CF9,0x9D0B,0x9D02,0x9D11,0x9D17, 0x9D18,0x9D1C,0x9D1D,0x9D1E,0x9D2F,0x9D30,0x9D32,0x9D33, 0x9D34,0x9D3A,0x9D3C,0x9D45,0x9D3D,0x9D42,0x9D43,0x9D47, 0x9D4A,0x9D53,0x9D54,0x9D5F,0x9D63,0x9D62,0x9D65,0x9D69, 0x9D6A,0x9D6B,0x9D70,0x9D76,0x9D77,0x9D7B, /* Range 0x6C21 - 0x6C7E, array index: 0x17F4 */ 0x9D7C,0x9D7E,0x9D83,0x9D84,0x9D86,0x9D8A,0x9D8D,0x9D8E, 0x9D92,0x9D93,0x9D95,0x9D96,0x9D97,0x9D98,0x9DA1,0x9DAA, 0x9DAC,0x9DAE,0x9DB1,0x9DB5,0x9DB9,0x9DBC,0x9DBF,0x9DC3, 0x9DC7,0x9DC9,0x9DCA,0x9DD4,0x9DD5,0x9DD6,0x9DD7,0x9DDA, 0x9DDE,0x9DDF,0x9DE0,0x9DE5,0x9DE7,0x9DE9,0x9DEB,0x9DEE, 0x9DF0,0x9DF3,0x9DF4,0x9DFE,0x9E0A,0x9E02,0x9E07,0x9E0E, 0x9E10,0x9E11,0x9E12,0x9E15,0x9E16,0x9E19,0x9E1C,0x9E1D, 0x9E7A,0x9E7B,0x9E7C,0x9E80,0x9E82,0x9E83,0x9E84,0x9E85, 0x9E87,0x9E8E,0x9E8F,0x9E96,0x9E98,0x9E9B,0x9E9E,0x9EA4, 0x9EA8,0x9EAC,0x9EAE,0x9EAF,0x9EB0,0x9EB3,0x9EB4,0x9EB5, 0x9EC6,0x9EC8,0x9ECB,0x9ED5,0x9EDF,0x9EE4,0x9EE7,0x9EEC, 0x9EED,0x9EEE,0x9EF0,0x9EF1,0x9EF2,0x9EF5, /* Range 0x6D21 - 0x6D63, array index: 0x1852 */ 0x9EF8,0x9EFF,0x9F02,0x9F03,0x9F09,0x9F0F,0x9F10,0x9F11, 0x9F12,0x9F14,0x9F16,0x9F17,0x9F19,0x9F1A,0x9F1B,0x9F1F, 0x9F22,0x9F26,0x9F2A,0x9F2B,0x9F2F,0x9F31,0x9F32,0x9F34, 0x9F37,0x9F39,0x9F3A,0x9F3C,0x9F3D,0x9F3F,0x9F41,0x9F43, 0x9F44,0x9F45,0x9F46,0x9F47,0x9F53,0x9F55,0x9F56,0x9F57, 0x9F58,0x9F5A,0x9F5D,0x9F5E,0x9F68,0x9F69,0x9F6D,0x9F6E, 0x9F6F,0x9F70,0x9F71,0x9F73,0x9F75,0x9F7A,0x9F7D,0x9F8F, 0x9F90,0x9F91,0x9F92,0x9F94,0x9F96,0x9F97,0x9F9E,0x9FA1, 0x9FA2,0x9FA3,0x9FA5, /* Unranged codes (73 codes) */ /* Array index: 0x1895 */ 0x2921,0x00C6, /* Array index: 0x1895 */ 0x2922,0x0110, /* Array index: 0x1895 */ 0x2924,0x0126, /* Array index: 0x1895 */ 0x2926,0x0132, }; #endif /* ICONV_TO_UCS_CCS_JIS_X0212_1990 && defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * 16-bit UCS -> jis_x0212_1990 speed-optimized table (45568 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_JIS_X0212_1990) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t from_ucs_speed_jis_x0212_1990[] = { /* Heading Block */ 0x0100,0x0200,0x0300,0x0400,0x0500,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,0x0600,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,0x0700,0x0800, 0x0900,0x0A00,0x0B00,0x0C00,0x0D00,0x0E00,0x0F00,0x1000, 0x1100,0x1200,0x1300,0x1400,0x1500,0x1600,0x1700,0x1800, 0x1900,0x1A00,0x1B00,0x1C00,0x1D00,0x1E00,0x1F00,0x2000, 0x2100,0x2200,0x2300,0x2400,0x2500,0x2600,0x2700,0x2800, 0x2900,0x2A00,0x2B00,0x2C00,0x2D00,0x2E00,0x2F00,0x3000, 0x3100,0x3200,0x3300,0x3400,0x3500,0x3600,0x3700,0x3800, 0x3900,0x3A00,0x3B00,0x3C00,0x3D00,0x3E00,0x3F00,0x4000, 0x4100,0x4200,0x4300,0x4400,0x4500,0x4600,0x4700,0x4800, 0x4900,0x4A00,0x4B00,0x4C00,0x4D00,0x4E00,0x4F00,0x5000, 0x5100,0x5200,0x5300,0x5400,0x5500,0x5600,0x5700,0x5800, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, /* Block 1, Array index 0x0100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2237,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2242,INVALC,INVALC,0x2270,INVALC,0x2243,INVALC, INVALC,0x226D,0x226C,INVALC,INVALC,INVALC,0x226E,0x2234, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2231,INVALC,0x226B,INVALC,INVALC,INVALC,INVALC,0x2244, 0x2A22,0x2A21,0x2A24,0x2A2A,0x2A23,0x2A29,0x2921,0x2A2E, 0x2A32,0x2A31,0x2A34,0x2A33,0x2A40,0x2A3F,0x2A42,0x2A41, INVALC,0x2A50,0x2A52,0x2A51,0x2A54,0x2A58,0x2A53,INVALC, 0x292C,0x2A63,0x2A62,0x2A65,0x2A64,0x2A72,0x2930,0x294E, 0x2B22,0x2B21,0x2B24,0x2B2A,0x2B23,0x2B29,0x2941,0x2B2E, 0x2B32,0x2B31,0x2B34,0x2B33,0x2B40,0x2B3F,0x2B42,0x2B41, 0x2943,0x2B50,0x2B52,0x2B51,0x2B54,0x2B58,0x2B53,INVALC, 0x294C,0x2B63,0x2B62,0x2B65,0x2B64,0x2B72,0x2950,0x2B73, /* Block 2, Array index 0x0200 */ 0x2A27,0x2B27,0x2A25,0x2B25,0x2A28,0x2B28,0x2A2B,0x2B2B, 0x2A2C,0x2B2C,0x2A2F,0x2B2F,0x2A2D,0x2B2D,0x2A30,0x2B30, 0x2922,0x2942,0x2A37,0x2B37,INVALC,INVALC,0x2A36,0x2B36, 0x2A38,0x2B38,0x2A35,0x2B35,0x2A3A,0x2B3A,0x2A3B,0x2B3B, 0x2A3D,0x2B3D,0x2A3C,INVALC,0x2A3E,0x2B3E,0x2924,0x2944, 0x2A47,0x2B47,0x2A45,0x2B45,INVALC,INVALC,0x2A46,0x2B46, 0x2A44,0x2945,0x2926,0x2946,0x2A48,0x2B48,0x2A49,0x2B49, 0x2947,0x2A4A,0x2B4A,0x2A4C,0x2B4C,0x2A4B,0x2B4B,0x2929, 0x2949,0x2928,0x2948,0x2A4D,0x2B4D,0x2A4F,0x2B4F,0x2A4E, 0x2B4E,0x294A,0x292B,0x294B,0x2A57,0x2B57,INVALC,INVALC, 0x2A56,0x2B56,0x292D,0x294D,0x2A59,0x2B59,0x2A5B,0x2B5B, 0x2A5A,0x2B5A,0x2A5C,0x2B5C,0x2A5D,0x2B5D,0x2A5F,0x2B5F, 0x2A5E,0x2B5E,0x2A61,0x2B61,0x2A60,0x2B60,0x292F,0x294F, 0x2A6C,0x2B6C,0x2A69,0x2B69,0x2A66,0x2B66,0x2A6B,0x2B6B, 0x2A68,0x2B68,0x2A6A,0x2B6A,0x2A71,0x2B71,0x2A74,0x2B74, 0x2A73,0x2A75,0x2B75,0x2A77,0x2B77,0x2A76,0x2B76,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2A26,0x2B26,0x2A43, 0x2B43,0x2A55,0x2B55,0x2A67,0x2B67,0x2A70,0x2B70,0x2A6D, 0x2B6D,0x2A6F,0x2B6F,0x2A6E,0x2B6E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2B39,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 3, Array index 0x0300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2230, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x222F,0x2232,0x2236,0x2235,INVALC,0x2233,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 4, Array index 0x0400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2238,0x2239,0x2661,INVALC, 0x2662,0x2663,0x2664,INVALC,0x2667,INVALC,0x2669,0x266C, 0x2676,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2665,0x266A,0x2671,0x2672,0x2673,0x2674, 0x267B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2678,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2675,0x267A,0x2677,0x2679,0x267C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 5, Array index 0x0500 */ INVALC,INVALC,0x2742,0x2743,0x2744,0x2745,0x2746,0x2747, 0x2748,0x2749,0x274A,0x274B,0x274C,INVALC,0x274D,0x274E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2772,0x2773,0x2774,0x2775,0x2776,0x2777, 0x2778,0x2779,0x277A,0x277B,0x277C,INVALC,0x277D,0x277E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 34, Array index 0x0600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2271,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x226F,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 79, Array index 0x0700 */ INVALC,INVALC,0x3021,INVALC,0x3022,0x3023,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3024,INVALC,INVALC,INVALC, INVALC,INVALC,0x3025,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3026, INVALC,INVALC,INVALC,0x3027,0x3028,INVALC,INVALC,INVALC, 0x3029,INVALC,INVALC,0x302A,INVALC,INVALC,0x302B,0x302C, 0x302D,INVALC,INVALC,INVALC,INVALC,0x302E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x302F,0x3030,INVALC,INVALC,0x3031,INVALC,INVALC,0x3032, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3033,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3034,INVALC,0x3035,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3036,INVALC,INVALC,INVALC,INVALC, 0x3037,0x3038,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3039,0x303A,INVALC,INVALC, INVALC,0x303B,INVALC,INVALC,INVALC,INVALC,INVALC,0x303C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x303D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x303E,0x303F, INVALC,INVALC,INVALC,INVALC,INVALC,0x3040,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3041, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3042,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3043,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3044,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3045,0x3046,INVALC,INVALC,INVALC,INVALC, 0x3047,0x3048,0x3049,INVALC,INVALC,INVALC,INVALC,INVALC, 0x304A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x304B, INVALC,0x304C,INVALC,0x304D,INVALC,0x304E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x304F,0x3050,0x3051, /* Block 80, Array index 0x0800 */ 0x3052,INVALC,0x3053,0x3054,INVALC,INVALC,INVALC,INVALC, 0x3055,INVALC,INVALC,0x3056,0x3057,INVALC,INVALC,INVALC, INVALC,INVALC,0x3058,INVALC,INVALC,0x3059,0x305A,0x305B, INVALC,0x305C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x305D,INVALC, INVALC,0x305E,INVALC,0x3060,INVALC,0x3061,INVALC,0x3062, INVALC,0x3063,INVALC,0x3064,INVALC,INVALC,0x3065,INVALC, 0x3066,INVALC,0x3067,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3068,0x3069,INVALC,0x306A,0x306B,INVALC,INVALC,INVALC, INVALC,INVALC,0x306C,INVALC,0x306D,INVALC,0x306E,INVALC, 0x306F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3070, 0x305F,INVALC,INVALC,0x3071,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3072,INVALC,0x3073,INVALC,0x3074,INVALC, INVALC,0x3075,INVALC,INVALC,INVALC,INVALC,INVALC,0x3076, 0x3077,0x3078,0x3079,INVALC,INVALC,0x307A,0x307B,INVALC, INVALC,0x307C,0x307D,INVALC,0x307E,0x3121,INVALC,INVALC, INVALC,0x3122,0x3123,INVALC,0x3124,INVALC,0x3125,INVALC, 0x3126,INVALC,0x3127,0x3128,0x3129,INVALC,INVALC,0x312A, INVALC,0x312B,0x312C,INVALC,INVALC,INVALC,0x312D,0x312E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x312F,INVALC,INVALC,INVALC,INVALC,0x3130, INVALC,0x3131,INVALC,0x3132,0x3133,0x3134,0x3135,INVALC, 0x3136,0x3137,INVALC,INVALC,INVALC,0x3138,0x3139,INVALC, 0x313A,0x313B,INVALC,0x313C,0x313D,0x313E,INVALC,0x313F, INVALC,INVALC,0x3140,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3141,INVALC,INVALC,INVALC, 0x3142,INVALC,0x3143,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3144,INVALC,0x3145,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3146,0x3147,INVALC,0x3148, /* Block 81, Array index 0x0900 */ 0x3149,0x314A,INVALC,INVALC,0x314B,INVALC,INVALC,0x314C, INVALC,INVALC,0x314D,INVALC,0x314E,INVALC,0x314F,INVALC, 0x3150,INVALC,INVALC,0x3151,INVALC,INVALC,INVALC,0x3152, 0x3153,INVALC,INVALC,0x3154,0x3155,0x3156,0x3157,INVALC, INVALC,INVALC,0x3158,INVALC,INVALC,INVALC,INVALC,0x3159, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x315A,INVALC, 0x315B,INVALC,0x315C,0x315D,INVALC,0x315E,INVALC,INVALC, INVALC,INVALC,INVALC,0x3176,INVALC,INVALC,INVALC,INVALC, 0x315F,0x3160,0x3161,INVALC,INVALC,0x3162,0x3163,INVALC, INVALC,INVALC,0x3164,INVALC,0x3165,INVALC,0x3166,INVALC, INVALC,0x3167,0x3168,0x3169,INVALC,INVALC,INVALC,0x316A, INVALC,0x316B,INVALC,INVALC,INVALC,INVALC,INVALC,0x316C, 0x316D,INVALC,0x316E,0x316F,INVALC,INVALC,0x3170,0x3171, INVALC,INVALC,0x3172,INVALC,INVALC,0x3173,INVALC,INVALC, 0x3174,0x3175,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3177,INVALC,0x3178,0x3179,INVALC,0x317A,INVALC, INVALC,INVALC,0x317B,INVALC,INVALC,INVALC,0x317C,0x317D, 0x317E,INVALC,0x3221,0x3222,0x3223,INVALC,0x3224,INVALC, INVALC,INVALC,INVALC,0x3225,0x3226,INVALC,0x3227,0x3228, 0x3229,0x322A,0x322B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x322C,INVALC,INVALC,INVALC,INVALC,0x322D, 0x322E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x322F,0x3230,INVALC,INVALC,0x3231,INVALC,INVALC, 0x3232,INVALC,INVALC,0x3233,0x3234,INVALC,INVALC,0x3235, INVALC,INVALC,INVALC,INVALC,0x3236,INVALC,0x3237,INVALC, 0x3238,INVALC,INVALC,0x3239,0x323A,INVALC,INVALC,INVALC, 0x323B,INVALC,INVALC,INVALC,0x323C,0x323D,INVALC,0x323E, INVALC,INVALC,0x323F,INVALC,0x3240,INVALC,0x3241,INVALC, 0x3242,0x3243,INVALC,INVALC,INVALC,INVALC,INVALC,0x3244, INVALC,0x3245,0x3251,INVALC,INVALC,INVALC,0x3246,INVALC, INVALC,INVALC,0x3247,INVALC,INVALC,INVALC,0x3248,INVALC, /* Block 82, Array index 0x0A00 */ INVALC,INVALC,INVALC,0x3249,INVALC,INVALC,0x324A,0x324B, 0x324C,INVALC,INVALC,0x324D,0x324E,0x324F,0x3250,INVALC, 0x3252,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3253, INVALC,0x3254,INVALC,0x3255,0x3256,0x3257,0x3258,INVALC, INVALC,INVALC,INVALC,0x3259,INVALC,INVALC,INVALC,0x325A, 0x325B,INVALC,INVALC,INVALC,0x325C,0x325D,INVALC,0x325E, INVALC,0x325F,INVALC,0x3260,0x3261,0x3262,INVALC,INVALC, 0x3263,0x3264,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3265,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3266,INVALC,INVALC,INVALC,INVALC,0x3267, INVALC,INVALC,INVALC,0x3268,INVALC,0x3269,INVALC,0x326A, 0x326B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x326C, INVALC,INVALC,INVALC,INVALC,0x326D,INVALC,0x326E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x326F,INVALC, INVALC,INVALC,INVALC,0x3270,0x3271,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3272,INVALC,INVALC,0x3273,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3274,INVALC,INVALC,INVALC,INVALC,0x3275,INVALC,INVALC, INVALC,0x3276,INVALC,0x3277,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3278,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3279,INVALC,0x327A,INVALC,0x327B,INVALC,0x327C,0x327D, INVALC,INVALC,0x327E,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3321,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3322, INVALC,0x3323,0x3324,0x3325,INVALC,0x3326,INVALC,INVALC, 0x3327,INVALC,INVALC,INVALC,INVALC,INVALC,0x3328,INVALC, INVALC,INVALC,0x3329,INVALC,INVALC,0x332A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x332B,INVALC, INVALC,INVALC,0x332C,0x332D,0x332E,INVALC,INVALC,0x332F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 83, Array index 0x0B00 */ INVALC,0x3330,0x3331,INVALC,INVALC,0x3332,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3333,0x3334,INVALC,0x3335,0x3336,INVALC, 0x3337,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3338,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3339,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x333A,0x333B,INVALC,INVALC,0x333C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x333D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x333E,INVALC,INVALC, INVALC,0x333F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3340,INVALC,0x3341, 0x3342,INVALC,0x3343,INVALC,0x3344,INVALC,INVALC,0x3345, 0x3346,0x3347,INVALC,INVALC,INVALC,INVALC,0x3348,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3349,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x334A, 0x334B,0x334C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x334D,INVALC,0x334E,INVALC,INVALC,0x334F,INVALC,INVALC, INVALC,INVALC,0x3350,INVALC,0x3351,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3352,INVALC,0x3353,0x3354,0x3355, 0x3356,INVALC,0x3357,INVALC,0x3358,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3359,0x335A,0x335B,0x335C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x335D, 0x335E,INVALC,INVALC,INVALC,INVALC,INVALC,0x335F,0x3360, 0x3361,INVALC,0x3362,0x3363,INVALC,0x3364,INVALC,INVALC, 0x3365,INVALC,INVALC,INVALC,0x3366,INVALC,0x3367,INVALC, 0x3368,INVALC,INVALC,INVALC,0x3369,INVALC,INVALC,0x336A, INVALC,0x336B,INVALC,INVALC,0x336C,INVALC,0x336D,INVALC, INVALC,INVALC,INVALC,0x336E,0x336F,INVALC,INVALC,INVALC, INVALC,0x3370,INVALC,INVALC,INVALC,0x3371,INVALC,INVALC, 0x3372,0x3373,0x3374,INVALC,0x3375,INVALC,INVALC,INVALC, 0x3376,0x3377,INVALC,INVALC,0x3378,INVALC,0x3379,0x337A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 84, Array index 0x0C00 */ 0x337B,INVALC,INVALC,0x337C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x337D,0x337E,0x3421,INVALC,INVALC,INVALC, INVALC,0x3422,INVALC,0x3423,INVALC,INVALC,INVALC,INVALC, 0x3424,INVALC,INVALC,0x3425,0x3426,INVALC,0x3427,0x3428, INVALC,INVALC,INVALC,INVALC,INVALC,0x3429,INVALC,0x342A, 0x342B,0x342C,INVALC,0x342D,0x342E,0x342F,INVALC,INVALC, 0x3430,INVALC,0x3431,INVALC,INVALC,0x3432,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3433,0x3434,0x3435,INVALC, INVALC,INVALC,0x3436,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3438,0x3437,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3439,INVALC,0x343A,INVALC,INVALC,INVALC,INVALC, INVALC,0x343B,INVALC,0x343C,INVALC,0x343D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x343E,0x343F,INVALC,INVALC, INVALC,INVALC,0x3440,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3441,INVALC,INVALC,INVALC,INVALC,0x3442,INVALC, INVALC,INVALC,INVALC,0x3443,INVALC,INVALC,INVALC,0x3444, 0x3445,INVALC,INVALC,INVALC,INVALC,INVALC,0x3446,INVALC, INVALC,INVALC,INVALC,0x3447,0x3448,INVALC,INVALC,INVALC, INVALC,0x3449,INVALC,INVALC,INVALC,0x344A,INVALC,INVALC, INVALC,0x344B,INVALC,INVALC,0x344C,INVALC,INVALC,INVALC, INVALC,INVALC,0x344D,0x344E,INVALC,INVALC,INVALC,0x344F, INVALC,INVALC,0x3450,INVALC,0x3451,0x3452,INVALC,0x3453, 0x3454,INVALC,0x3455,INVALC,INVALC,0x3456,INVALC,INVALC, 0x3457,INVALC,INVALC,INVALC,INVALC,0x3458,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3459, INVALC,INVALC,0x345A,0x345B,INVALC,0x345C,INVALC,INVALC, INVALC,INVALC,0x345D,INVALC,INVALC,0x345E,0x345F,INVALC, 0x3460,INVALC,INVALC,INVALC,INVALC,INVALC,0x3461,0x3462, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3463,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 85, Array index 0x0D00 */ INVALC,INVALC,0x3464,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3465,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3466,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3467,INVALC,INVALC,INVALC,INVALC,INVALC,0x3468, 0x3469,INVALC,0x346A,INVALC,INVALC,INVALC,INVALC,0x346B, INVALC,0x346C,INVALC,INVALC,0x346D,0x346E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x346F,0x3470,INVALC,INVALC,0x3471, INVALC,INVALC,INVALC,INVALC,INVALC,0x3472,INVALC,0x3473, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3474,INVALC, INVALC,INVALC,0x3475,INVALC,0x3476,INVALC,0x3477,0x3478, INVALC,0x3479,INVALC,0x347A,INVALC,0x347B,0x347C,INVALC, INVALC,INVALC,INVALC,INVALC,0x347D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x347E, INVALC,0x3521,INVALC,0x3522,INVALC,0x3523,INVALC,INVALC, 0x3524,0x3525,INVALC,INVALC,INVALC,0x3526,INVALC,INVALC, INVALC,0x3527,INVALC,INVALC,INVALC,0x3528,0x3529,INVALC, INVALC,INVALC,INVALC,INVALC,0x352A,INVALC,INVALC,0x352B, INVALC,0x352C,INVALC,INVALC,INVALC,INVALC,0x352D,0x352E, INVALC,0x352F,0x3530,INVALC,INVALC,0x3531,0x3532,INVALC, INVALC,0x3533,INVALC,INVALC,INVALC,INVALC,INVALC,0x3534, INVALC,0x3535,0x3536,0x3537,INVALC,INVALC,INVALC,0x3538, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3539,INVALC, INVALC,INVALC,0x353A,INVALC,INVALC,0x353B,0x353C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x353D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x353E,INVALC,0x353F,INVALC,INVALC,0x3540, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3541,INVALC, INVALC,INVALC,INVALC,INVALC,0x3542,INVALC,0x3543,0x3544, /* Block 86, Array index 0x0E00 */ 0x3545,0x3546,INVALC,INVALC,INVALC,0x3547,INVALC,INVALC, 0x3548,0x3549,INVALC,INVALC,0x354A,0x354B,0x354C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x354D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x354E,0x354F,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3550,INVALC,INVALC,0x3551,0x3552,INVALC, INVALC,INVALC,INVALC,0x3553,0x3554,0x3555,INVALC,INVALC, INVALC,0x3556,INVALC,INVALC,INVALC,INVALC,INVALC,0x3557, INVALC,0x3558,0x3559,INVALC,INVALC,0x355A,INVALC,INVALC, 0x355B,0x355C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x355D,INVALC,0x355E,0x355F,INVALC,INVALC,0x3560,INVALC, 0x3561,0x3562,INVALC,INVALC,0x3563,INVALC,0x3564,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3565, INVALC,0x3566,0x3567,INVALC,INVALC,INVALC,0x3568,INVALC, 0x3569,INVALC,INVALC,INVALC,INVALC,INVALC,0x356A,0x356B, INVALC,0x356C,0x356D,0x356E,0x356F,INVALC,INVALC,0x3570, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3571,0x3572,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3573,INVALC,INVALC, INVALC,INVALC,0x3574,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3575, INVALC,0x3576,INVALC,0x3577,INVALC,INVALC,0x3578,INVALC, INVALC,0x3579,INVALC,0x357A,0x357B,INVALC,0x357C,INVALC, INVALC,0x357D,0x357E,0x3621,INVALC,INVALC,INVALC,0x3622, 0x3623,INVALC,INVALC,0x3624,INVALC,INVALC,0x3625,INVALC, INVALC,INVALC,0x3626,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3627,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3628,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3629, /* Block 87, Array index 0x0F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,0x362A,INVALC,INVALC, 0x362B,INVALC,0x362C,INVALC,INVALC,0x362D,0x362E,0x362F, 0x3630,0x3631,0x3632,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3633,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3634,INVALC,INVALC,INVALC, 0x3635,INVALC,INVALC,0x3636,INVALC,0x3637,INVALC,0x3638, INVALC,0x3639,INVALC,0x363A,0x363B,0x363C,INVALC,0x363D, 0x363E,0x363F,INVALC,0x3640,0x3641,INVALC,0x3642,INVALC, INVALC,0x3643,INVALC,0x3644,INVALC,0x3645,INVALC,0x3646, INVALC,INVALC,INVALC,INVALC,0x3647,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3648,INVALC, 0x3649,0x364A,0x364B,0x364C,INVALC,INVALC,0x364D,INVALC, INVALC,0x364E,INVALC,INVALC,INVALC,0x364F,INVALC,0x3650, INVALC,0x3651,0x3652,INVALC,INVALC,0x3653,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3654,0x3655,INVALC,INVALC, 0x3656,INVALC,INVALC,0x3657,0x3658,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3659,INVALC,INVALC, INVALC,0x365A,0x365B,INVALC,INVALC,0x365C,0x365D,0x365E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x365F,0x3660, 0x3661,0x3662,INVALC,0x3663,0x3664,0x3665,INVALC,INVALC, INVALC,0x3666,INVALC,0x3667,INVALC,INVALC,INVALC,0x3668, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3669,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x366A,INVALC,INVALC, INVALC,0x366B,0x366C,0x366D,0x3670,0x3671,INVALC,0x366E, 0x366F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3672,INVALC,INVALC,0x3673,0x3674,INVALC,0x3675, INVALC,0x3676,INVALC,INVALC,0x3677,0x3678,0x3679,0x367A, 0x367B,INVALC,INVALC,0x367D,INVALC,0x367E,INVALC,INVALC, INVALC,0x367C,INVALC,INVALC,INVALC,INVALC,0x3721,0x3722, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 88, Array index 0x1000 */ INVALC,0x3723,0x3724,INVALC,INVALC,INVALC,INVALC,0x3725, INVALC,INVALC,0x3726,INVALC,0x3727,INVALC,INVALC,INVALC, INVALC,0x3728,INVALC,INVALC,INVALC,0x3729,INVALC,INVALC, INVALC,INVALC,0x372A,0x372B,INVALC,0x372C,INVALC,INVALC, 0x372D,INVALC,0x372E,0x372F,0x3730,0x3731,INVALC,INVALC, INVALC,0x3732,0x3733,INVALC,0x3734,INVALC,0x3735,0x3736, INVALC,INVALC,INVALC,0x3737,0x3738,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3739,0x373A,0x373B, INVALC,INVALC,INVALC,INVALC,INVALC,0x373C,0x373D,INVALC, INVALC,INVALC,INVALC,INVALC,0x373E,0x373F,INVALC,INVALC, INVALC,INVALC,0x3740,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3741,INVALC,INVALC,0x3742,INVALC,0x3743, 0x3744,INVALC,INVALC,0x3745,INVALC,0x3746,0x3747,0x3748, 0x3749,0x374A,INVALC,0x374B,0x374C,0x374D,INVALC,0x374E, INVALC,0x374F,0x3750,0x3751,0x3752,INVALC,0x3753,INVALC, INVALC,0x3754,INVALC,0x3755,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3756,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3757,0x3760,INVALC,0x3758, INVALC,0x3759,0x375A,INVALC,0x375B,0x375C,0x375D,0x375E, INVALC,0x375F,INVALC,INVALC,INVALC,INVALC,INVALC,0x3761, 0x3762,0x3763,INVALC,INVALC,0x3764,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3765,INVALC,INVALC,INVALC,INVALC,0x3766,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3767, 0x3768,INVALC,INVALC,INVALC,0x3769,INVALC,INVALC,0x376A, INVALC,INVALC,INVALC,INVALC,INVALC,0x376B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x376C,0x376D,INVALC, INVALC,0x377E,INVALC,INVALC,0x376E,INVALC,0x376F,0x3770, INVALC,0x3771,INVALC,INVALC,INVALC,0x3772,INVALC,INVALC, 0x3773,INVALC,INVALC,INVALC,INVALC,0x3774,0x3775,INVALC, 0x3776,INVALC,INVALC,INVALC,INVALC,0x3777,0x3778,0x3779, /* Block 89, Array index 0x1100 */ INVALC,INVALC,INVALC,0x377A,0x377B,INVALC,INVALC,INVALC, 0x377C,0x377D,INVALC,INVALC,0x3821,0x3822,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3823,INVALC,INVALC,0x3824,0x3825, 0x3826,INVALC,INVALC,INVALC,INVALC,INVALC,0x3827,0x3828, INVALC,INVALC,INVALC,INVALC,INVALC,0x3829,INVALC,INVALC, INVALC,INVALC,0x382A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x382B,INVALC,INVALC,INVALC,INVALC,INVALC,0x382C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x382D,INVALC,INVALC,0x382E,0x382F,INVALC,0x3830, 0x3831,INVALC,INVALC,INVALC,INVALC,0x3832,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3833, INVALC,0x3834,INVALC,INVALC,0x3835,INVALC,INVALC,0x3836, 0x3837,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3838,INVALC,INVALC,INVALC,0x3839,INVALC,INVALC,0x383A, 0x383B,0x383C,INVALC,INVALC,INVALC,INVALC,INVALC,0x383D, 0x383E,0x383F,0x3840,INVALC,0x3841,0x3842,INVALC,0x3843, 0x3844,INVALC,INVALC,INVALC,0x3845,INVALC,0x3846,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3847,INVALC,INVALC, 0x3848,0x3849,0x384A,INVALC,INVALC,INVALC,0x384B,INVALC, INVALC,0x384C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x384D,0x384E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3850,INVALC,INVALC,INVALC, INVALC,INVALC,0x3851,INVALC,0x384F,INVALC,INVALC,INVALC, 0x3852,INVALC,INVALC,INVALC,INVALC,0x3853,0x3854,INVALC, 0x3855,INVALC,0x3856,INVALC,0x3857,INVALC,0x3858,INVALC, INVALC,INVALC,0x3859,INVALC,INVALC,0x385A,INVALC,INVALC, INVALC,0x385B,0x385C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x385D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x385E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 90, Array index 0x1200 */ INVALC,INVALC,INVALC,INVALC,INVALC,0x385F,0x3860,INVALC, INVALC,INVALC,INVALC,0x3861,0x3862,INVALC,INVALC,INVALC, INVALC,INVALC,0x3863,0x3864,0x3865,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3867,INVALC,INVALC, INVALC,0x3868,INVALC,0x3869,0x386A,INVALC,INVALC,INVALC, 0x386B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x386C, 0x386D,INVALC,INVALC,0x386E,INVALC,0x386F,0x3870,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3871, INVALC,INVALC,INVALC,0x3872,INVALC,INVALC,0x3873,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3874,0x3875,INVALC,INVALC,INVALC,INVALC, INVALC,0x3876,INVALC,0x3877,INVALC,0x3878,0x3879,0x387A, INVALC,0x387B,INVALC,0x387C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x387D,INVALC,0x387E,INVALC,0x3921, INVALC,INVALC,0x3922,INVALC,INVALC,0x3923,0x3924,INVALC, INVALC,0x3925,INVALC,0x3926,0x3927,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3928,0x3929,INVALC,0x392A,INVALC, INVALC,INVALC,0x392B,INVALC,INVALC,0x392C,INVALC,0x392D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x392E, INVALC,INVALC,INVALC,INVALC,0x392F,INVALC,INVALC,0x3930, INVALC,INVALC,INVALC,INVALC,INVALC,0x3931,0x3932,0x3933, 0x3934,INVALC,INVALC,0x3935,INVALC,INVALC,INVALC,0x3936, INVALC,INVALC,0x3937,INVALC,0x3938,INVALC,INVALC,INVALC, INVALC,0x3939,INVALC,0x393A,0x393B,INVALC,INVALC,INVALC, 0x393C,INVALC,0x393D,INVALC,INVALC,0x393E,INVALC,INVALC, INVALC,INVALC,0x393F,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3940,0x3941,0x3942, INVALC,INVALC,INVALC,0x3943,0x3944,INVALC,INVALC,0x3945, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3946,0x3947, INVALC,0x3948,0x3949,INVALC,0x394A,INVALC,INVALC,0x394B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 91, Array index 0x1300 */ 0x394C,INVALC,INVALC,INVALC,0x394D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x394E,0x394F,0x3950,INVALC, INVALC,INVALC,0x3951,0x3952,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3953,INVALC, INVALC,INVALC,INVALC,0x3954,0x3955,INVALC,INVALC,0x3956, 0x3957,INVALC,0x3958,INVALC,INVALC,0x3959,INVALC,INVALC, 0x395A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x395B,0x395C,INVALC,0x395D, 0x395E,INVALC,INVALC,INVALC,0x395F,INVALC,INVALC,INVALC, 0x3960,INVALC,INVALC,INVALC,INVALC,0x3961,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3962,INVALC, INVALC,INVALC,INVALC,0x3963,INVALC,0x3964,INVALC,0x3965, INVALC,INVALC,INVALC,INVALC,INVALC,0x3966,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3967, INVALC,INVALC,0x3968,0x3969,INVALC,INVALC,0x396A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x396B,INVALC,INVALC,INVALC,INVALC, 0x396C,INVALC,INVALC,0x396D,INVALC,INVALC,0x396E,INVALC, INVALC,0x396F,INVALC,INVALC,0x3970,INVALC,0x3971,0x3972, 0x3973,INVALC,0x3974,INVALC,INVALC,INVALC,INVALC,0x3975, INVALC,INVALC,INVALC,INVALC,0x3976,INVALC,INVALC,INVALC, INVALC,0x3977,0x3978,0x3979,INVALC,0x397A,INVALC,INVALC, 0x397B,INVALC,0x397C,0x397D,INVALC,INVALC,INVALC,0x397E, INVALC,INVALC,INVALC,INVALC,0x3A21,INVALC,0x3A22,INVALC, 0x3A23,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3A24, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3A25,INVALC,0x3A26,INVALC,INVALC,INVALC, 0x3A27,INVALC,INVALC,INVALC,INVALC,0x3A28,INVALC,INVALC, INVALC,INVALC,0x3A29,INVALC,INVALC,INVALC,0x3A2A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3A2B,0x3A2C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3A2D,INVALC,INVALC, /* Block 92, Array index 0x1400 */ 0x3A2E,0x3A2F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3A30,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3A31, INVALC,0x3A33,INVALC,0x3A34,INVALC,0x3A35,INVALC,INVALC, INVALC,0x3A36,INVALC,INVALC,INVALC,0x3A37,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3A38,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3A32,INVALC,INVALC,INVALC, 0x3A39,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3A3A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3A3B,0x3A3C,INVALC,INVALC,INVALC, INVALC,INVALC,0x3A3D,INVALC,INVALC,INVALC,0x3A3E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3A3F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3A40,INVALC,INVALC,INVALC,INVALC,INVALC,0x3A41,0x3A42, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3A43,0x3A44,0x3A45,0x3A46, INVALC,0x3A47,INVALC,INVALC,0x3A48,INVALC,0x3A49,INVALC, INVALC,INVALC,0x3A4A,INVALC,INVALC,INVALC,0x3A4B,INVALC, 0x3A4C,0x3A4D,INVALC,0x3A4E,0x3A4F,INVALC,0x3A50,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3A51,0x3A52,INVALC,INVALC,0x3A53,0x3A54,INVALC,0x3A55, INVALC,0x3A56,0x3A57,INVALC,INVALC,INVALC,INVALC,0x3A58, INVALC,INVALC,0x3A59,INVALC,0x3A5A,INVALC,INVALC,INVALC, 0x3A5B,0x3A5C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3A5D,INVALC,0x3A5E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3A5F,0x3A60, 0x3A61,0x3A62,0x3A63,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3A64,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3A65, INVALC,0x3A66,INVALC,INVALC,0x3A67,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3A68,INVALC,INVALC, /* Block 93, Array index 0x1500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3A69,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3A6A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3A6B,0x3A6C, INVALC,INVALC,INVALC,0x3A6D,INVALC,INVALC,0x3A6E,INVALC, INVALC,0x3A6F,INVALC,0x3A70,0x3A71,INVALC,0x3A72,INVALC, 0x3A73,INVALC,0x3A74,INVALC,INVALC,0x3A75,0x3A76,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3A77,0x3A78,INVALC,0x3A79,INVALC,INVALC,INVALC, INVALC,INVALC,0x3A7A,0x3A7B,INVALC,INVALC,INVALC,0x3A7C, 0x3A7D,0x3A7E,INVALC,INVALC,INVALC,0x3B21,INVALC,INVALC, 0x3B22,INVALC,INVALC,INVALC,0x3B23,0x3B24,INVALC,INVALC, INVALC,INVALC,0x3B25,0x3B26,0x3B27,0x3B28,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3B29, 0x3B2A,INVALC,0x3B2B,INVALC,INVALC,INVALC,INVALC,0x3B2C, INVALC,INVALC,0x3B2D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3B2E,INVALC,0x3B2F, 0x3B30,INVALC,0x3B31,0x3B32,INVALC,INVALC,0x3B33,INVALC, INVALC,INVALC,0x3B34,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3B35,INVALC,0x3B36,0x3B37,INVALC,INVALC, INVALC,INVALC,0x3B38,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3B39,INVALC,0x3B3A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3B3B,INVALC,INVALC,INVALC,INVALC,0x3B3D, INVALC,INVALC,INVALC,INVALC,INVALC,0x3B3C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3B3E,INVALC, INVALC,0x3B3F,0x3B40,INVALC,0x3B41,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 94, Array index 0x1600 */ INVALC,0x3B42,INVALC,INVALC,INVALC,INVALC,0x3B43,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3B44,INVALC,INVALC, INVALC,INVALC,0x3B45,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3B47,0x3B48,INVALC,0x3B49,0x3B4A, INVALC,INVALC,INVALC,0x3B46,INVALC,INVALC,INVALC,INVALC, INVALC,0x3B4B,INVALC,INVALC,0x3B4C,INVALC,INVALC,INVALC, INVALC,0x3B4D,INVALC,INVALC,INVALC,0x3B4E,INVALC,0x3B4F, INVALC,INVALC,0x3B50,0x3B51,INVALC,INVALC,0x3B52,INVALC, 0x3B53,INVALC,0x3B57,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3B55,INVALC,INVALC,INVALC,0x3B54,INVALC,INVALC, INVALC,0x3B56,INVALC,INVALC,INVALC,INVALC,INVALC,0x3B58, 0x3B59,0x3B5A,0x3B5B,INVALC,0x3B5C,INVALC,INVALC,INVALC, INVALC,INVALC,0x3B5D,INVALC,INVALC,0x3B5E,INVALC,INVALC, 0x3B5F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3B60,0x3B61,INVALC,INVALC,INVALC,0x3B62,0x3B63, INVALC,0x3B64,INVALC,0x3B65,INVALC,INVALC,INVALC,INVALC, 0x3B66,INVALC,0x3B67,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3B68,0x3B69,0x3B6A,0x3B6B,INVALC,INVALC, INVALC,0x3B6C,INVALC,0x3B6D,INVALC,INVALC,INVALC,0x3B6E, 0x3B6F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3B70, INVALC,INVALC,INVALC,0x3B71,INVALC,INVALC,INVALC,INVALC, 0x3B72,INVALC,0x6674,INVALC,0x3B73,INVALC,INVALC,INVALC, 0x3B74,0x3B75,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3B76,INVALC,INVALC,INVALC,0x3B77, INVALC,INVALC,INVALC,0x3B78,INVALC,INVALC,0x3B7A,INVALC, 0x3B79,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3B7B,0x3B7C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3B7D,INVALC,INVALC,INVALC,0x3B7E,INVALC,INVALC,INVALC, INVALC,0x3C21,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3C22,0x3C23,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 95, Array index 0x1700 */ 0x3C24,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3C25, INVALC,INVALC,INVALC,INVALC,INVALC,0x3C26,INVALC,INVALC, INVALC,INVALC,0x3C27,INVALC,0x3C28,0x3C29,INVALC,INVALC, 0x3C2A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3C2B, 0x3C2C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3C2E,INVALC,INVALC,INVALC,INVALC,INVALC,0x3C2D,INVALC, INVALC,INVALC,0x3C2F,INVALC,INVALC,0x3C30,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3C31,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3C34,INVALC,0x3C32,INVALC,INVALC,INVALC,INVALC, 0x3C33,0x3C35,INVALC,INVALC,INVALC,INVALC,0x3C36,INVALC, 0x3C37,INVALC,INVALC,0x3C38,0x3C39,INVALC,0x3C3A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3C3B,INVALC,0x3C3C,0x3C3D,0x3C3E,0x3C3F,0x3C40,INVALC, 0x3C41,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3C42,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3C43,INVALC,INVALC,0x3C44,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3C45,INVALC,0x3C46,0x3C47,INVALC,INVALC, 0x3C48,INVALC,0x3C49,INVALC,0x3C4A,INVALC,INVALC,INVALC, INVALC,0x3C4B,INVALC,0x3C4C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3C4D,0x3C4E,0x3C4F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3C50,INVALC, INVALC,INVALC,INVALC,0x3C52,0x3C51,INVALC,0x3C53,INVALC, INVALC,0x3C54,0x3C55,INVALC,0x3C56,0x3C57,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3C58,INVALC,0x3C59,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3C5A,INVALC,INVALC, INVALC,INVALC,INVALC,0x3C5B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 96, Array index 0x1800 */ INVALC,INVALC,0x3C5C,INVALC,INVALC,INVALC,0x3C5D,0x3C5E, 0x3C5F,INVALC,INVALC,INVALC,INVALC,INVALC,0x3C60,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3C61,INVALC,INVALC,0x3C62,0x3C63,INVALC,INVALC, INVALC,0x3C64,0x3C65,0x3C66,0x3C67,INVALC,INVALC,INVALC, 0x3C68,INVALC,INVALC,0x3C69,0x3C6A,INVALC,0x3C6B,INVALC, 0x3C6C,INVALC,INVALC,INVALC,0x3C6D,INVALC,0x3C6E,INVALC, INVALC,INVALC,INVALC,0x3C6F,INVALC,0x3C70,INVALC,0x3C71, 0x3C72,INVALC,INVALC,INVALC,0x3C73,0x3C74,INVALC,0x3C75, INVALC,INVALC,INVALC,INVALC,INVALC,0x3C76,INVALC,INVALC, 0x3C77,INVALC,INVALC,INVALC,0x3C78,INVALC,INVALC,INVALC, 0x3C79,INVALC,INVALC,0x3C7A,INVALC,INVALC,INVALC,INVALC, 0x3C7B,INVALC,INVALC,0x3C7C,0x3C7D,INVALC,INVALC,0x3C7E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3D21, INVALC,INVALC,0x3D22,INVALC,0x3D23,0x3D24,INVALC,INVALC, 0x3D25,INVALC,0x3D26,INVALC,INVALC,0x3D27,0x3D28,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3D29,INVALC,INVALC,INVALC,0x3D2A,INVALC,0x3D2B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3D2C,INVALC, INVALC,INVALC,INVALC,INVALC,0x3D2D,0x3D2E,INVALC,INVALC, INVALC,INVALC,0x3D2F,INVALC,0x3D32,INVALC,INVALC,0x3D30, INVALC,INVALC,INVALC,0x3D31,0x3D33,INVALC,INVALC,0x3D34, 0x3D35,0x3D36,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3D37,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3D38,INVALC,INVALC,0x3D39, 0x3D3A,0x3D3B,INVALC,0x3D3C,INVALC,INVALC,INVALC,INVALC, 0x3D3D,0x3D3E,0x3D3F,0x3D40,0x3D41,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3D42,INVALC, INVALC,0x3D43,0x3D44,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3D45,0x3D46,0x3D47,INVALC,0x3D48,0x3D49,0x3D4A,0x3D4B, INVALC,INVALC,0x3D4C,0x3D4D,INVALC,INVALC,0x3D4E,INVALC, INVALC,INVALC,0x3D4F,INVALC,0x3D50,INVALC,INVALC,INVALC, /* Block 97, Array index 0x1900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3D51, INVALC,INVALC,0x3D52,INVALC,INVALC,0x3D53,INVALC,INVALC, INVALC,INVALC,INVALC,0x3D54,0x3D55,INVALC,INVALC,0x3D56, 0x3D57,INVALC,0x3D58,INVALC,INVALC,INVALC,INVALC,0x3D59, INVALC,INVALC,INVALC,INVALC,0x3D5A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3D5B,INVALC,INVALC, INVALC,INVALC,INVALC,0x3D5C,INVALC,0x3D5D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3D5E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3D5F, 0x3D60,0x3D61,INVALC,INVALC,0x3D62,INVALC,INVALC,INVALC, INVALC,0x3D63,INVALC,INVALC,0x3D64,INVALC,0x3D65,0x3D66, INVALC,INVALC,INVALC,INVALC,INVALC,0x3D67,INVALC,INVALC, INVALC,0x3D68,INVALC,INVALC,INVALC,INVALC,INVALC,0x3D69, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3D6A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3D6B,0x3D6C, INVALC,INVALC,0x3D6D,INVALC,INVALC,INVALC,0x3D6E,INVALC, 0x3D6F,INVALC,0x3D70,INVALC,INVALC,INVALC,0x3D71,INVALC, INVALC,0x3D72,INVALC,0x3D73,INVALC,0x3D74,INVALC,INVALC, 0x3D75,INVALC,INVALC,INVALC,INVALC,0x3D76,0x3D77,INVALC, INVALC,INVALC,0x3D78,INVALC,0x3D79,0x3D7A,INVALC,INVALC, 0x3D7B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3D7C,0x3D7D,INVALC,INVALC,INVALC,INVALC,INVALC,0x3D7E, INVALC,INVALC,INVALC,0x3E21,INVALC,INVALC,0x3E22,INVALC, INVALC,INVALC,0x3E23,INVALC,0x3E24,INVALC,INVALC,INVALC, 0x3E25,0x3E26,0x3E27,0x3E28,INVALC,INVALC,0x3E29,0x3E2A, INVALC,INVALC,INVALC,INVALC,0x3E2B,0x3E2C,INVALC,INVALC, INVALC,0x3E2D,INVALC,0x3E2E,INVALC,0x3E2F,0x3E30,INVALC, INVALC,INVALC,0x3E31,INVALC,INVALC,0x3E32,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3E33,INVALC,INVALC,0x3E34,INVALC,INVALC, 0x3E35,INVALC,INVALC,INVALC,0x3E36,0x3E37,INVALC,INVALC, /* Block 98, Array index 0x1A00 */ INVALC,INVALC,0x3E38,INVALC,INVALC,INVALC,INVALC,0x3E39, INVALC,INVALC,0x3E3A,INVALC,0x3E3B,INVALC,INVALC,INVALC, 0x3E3C,0x3E3D,0x3E3E,0x3E3F,0x3E40,INVALC,0x3E41,0x3E42, INVALC,0x3E43,INVALC,INVALC,0x3E44,INVALC,0x3E45,INVALC, INVALC,INVALC,0x3E46,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3E47,0x3E48,INVALC,INVALC,INVALC,INVALC, 0x3E49,0x3E4A,INVALC,INVALC,INVALC,0x3E4B,0x3E4C,0x3E4D, INVALC,0x3E4E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3E4F,INVALC,INVALC,INVALC,0x3E50,0x3E51,INVALC, INVALC,0x3E52,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3E53,INVALC, 0x3E54,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3E55,INVALC,INVALC,INVALC, INVALC,INVALC,0x3E56,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3E57,INVALC,INVALC,0x3E58,0x3E59,INVALC,INVALC,0x3E5A, 0x3E5B,0x3E5C,INVALC,0x3E5D,0x3E5E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3E5F,INVALC,0x3E60,INVALC,INVALC, INVALC,INVALC,0x3E61,0x3E62,INVALC,INVALC,INVALC,0x3E63, 0x3E64,INVALC,INVALC,INVALC,0x3E65,0x3E66,INVALC,0x3E67, 0x3E68,INVALC,INVALC,INVALC,INVALC,0x3E69,INVALC,INVALC, 0x3E6A,INVALC,0x3E6B,INVALC,INVALC,0x3E6C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3E6D,0x3E6E,INVALC,INVALC,0x3E6F,INVALC,INVALC,INVALC, 0x3E70,0x3E71,0x3E72,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3E73,0x3E74, INVALC,INVALC,INVALC,INVALC,INVALC,0x3E75,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3E76,0x3E77,0x3E78,0x3E79, INVALC,0x3E7A,0x3E7B,INVALC,INVALC,0x3E7E,INVALC,0x3E7C, INVALC,0x3E7D,INVALC,INVALC,0x3F21,0x3F22,INVALC,0x3F23, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 99, Array index 0x1B00 */ INVALC,0x3F24,INVALC,0x3F25,0x3F26,INVALC,INVALC,0x3F27, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3F28,INVALC,0x3F29,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3F2A,INVALC,INVALC,INVALC, 0x3F2B,INVALC,0x3F2C,0x3F2D,INVALC,INVALC,INVALC,0x3F2E, INVALC,0x3F2F,INVALC,0x3F30,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3F31,INVALC,INVALC,INVALC,0x3F32,INVALC,INVALC, INVALC,INVALC,0x3F33,0x3F34,0x3F35,INVALC,0x3F36,INVALC, INVALC,INVALC,INVALC,INVALC,0x3F37,INVALC,INVALC,INVALC, 0x3F38,0x3F39,0x3F3A,INVALC,0x3F3B,INVALC,0x3F3C,INVALC, INVALC,INVALC,0x3F3D,INVALC,0x3F3E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3F3F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3F40,INVALC,0x3F41, INVALC,INVALC,INVALC,0x3F42,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3F43,INVALC,INVALC,0x3F44,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3F45,0x3F46,0x3F47, 0x3F48,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3F49,INVALC, 0x3F4A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3F4B,INVALC,INVALC,0x3F4C,0x3F4D, INVALC,INVALC,0x3F4E,INVALC,INVALC,INVALC,0x3F4F,0x3F50, INVALC,INVALC,INVALC,INVALC,0x3F51,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x3F52,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3F53,0x3F54,INVALC, INVALC,INVALC,0x3F55,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3F56,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x3F57,INVALC,0x3F58,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3F59,0x3F5A,INVALC,INVALC, /* Block 100, Array index 0x1C00 */ INVALC,INVALC,INVALC,0x3F5B,0x3F5C,INVALC,INVALC,INVALC, INVALC,INVALC,0x3F5D,0x3F5E,INVALC,0x3F5F,INVALC,INVALC, 0x3F60,INVALC,INVALC,0x3F61,INVALC,INVALC,0x3F62,INVALC, 0x3F63,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3F64,0x3F65,INVALC,INVALC,0x3F66,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3F67,0x3F68,INVALC, INVALC,0x3F69,INVALC,INVALC,0x3F6A,INVALC,INVALC,INVALC, INVALC,0x3F6B,0x3F6C,0x3F6D,0x3F6E,INVALC,0x3F6F,INVALC, INVALC,INVALC,0x3F70,0x3F71,INVALC,INVALC,0x3F72,INVALC, INVALC,INVALC,0x3F73,0x3F74,0x3F75,INVALC,INVALC,INVALC, 0x3F76,INVALC,INVALC,0x3F77,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3F78,0x3F79,INVALC, INVALC,INVALC,INVALC,INVALC,0x3F7A,0x3F7B,INVALC,INVALC, INVALC,0x3F7C,INVALC,INVALC,0x3F7D,0x3F7E,INVALC,INVALC, 0x4021,INVALC,INVALC,INVALC,0x4022,0x4023,INVALC,0x4024, INVALC,INVALC,0x4025,INVALC,0x4026,INVALC,INVALC,0x4027, INVALC,INVALC,0x4028,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4029,INVALC,INVALC,INVALC,0x402A,0x402B,INVALC,INVALC, INVALC,0x402C,0x402D,INVALC,INVALC,INVALC,0x402E,INVALC, INVALC,INVALC,INVALC,INVALC,0x402F,INVALC,0x4030,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4031,0x4032,0x4033, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4034,INVALC,INVALC, INVALC,0x4035,INVALC,INVALC,INVALC,0x4036,INVALC,INVALC, 0x4037,INVALC,INVALC,INVALC,INVALC,INVALC,0x4038,INVALC, INVALC,0x4039,INVALC,0x403A,0x403B,0x403C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x403D,INVALC,INVALC,INVALC, 0x403E,INVALC,INVALC,INVALC,INVALC,0x403F,INVALC,INVALC, INVALC,INVALC,0x4040,INVALC,0x4041,INVALC,INVALC,INVALC, INVALC,INVALC,0x4042,0x4043,INVALC,0x4044,INVALC,INVALC, 0x4045,0x4046,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 101, Array index 0x1D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4047,0x4048,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4049,INVALC,0x404A,INVALC,0x404B,INVALC,INVALC,INVALC, 0x404C,INVALC,INVALC,INVALC,INVALC,INVALC,0x404D,INVALC, 0x404E,INVALC,0x404F,INVALC,0x4050,0x4051,INVALC,INVALC, INVALC,0x4052,0x4053,INVALC,INVALC,INVALC,INVALC,0x4054, 0x4055,INVALC,INVALC,INVALC,INVALC,0x4056,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4057,INVALC,0x4058, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4059,INVALC,INVALC,INVALC,0x405A, INVALC,0x405B,0x405C,0x405D,0x405E,INVALC,INVALC,INVALC, INVALC,INVALC,0x405F,0x4060,0x4061,0x4062,INVALC,0x4063, 0x4064,0x4065,INVALC,0x4066,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4067,INVALC,INVALC, INVALC,INVALC,INVALC,0x4068,0x4069,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x406A,INVALC,0x406B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x406C,INVALC,0x406D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x406E, 0x406F,0x4070,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4071,0x4072,INVALC,0x4073,INVALC,0x4074,INVALC,0x4075, INVALC,0x4076,INVALC,0x4077,INVALC,INVALC,0x4078,INVALC, 0x4079,INVALC,INVALC,INVALC,0x407A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x407B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x407C,0x407D,0x407E, INVALC,INVALC,INVALC,INVALC,0x4121,INVALC,INVALC,INVALC, INVALC,0x4122,0x4123,0x4124,0x4125,INVALC,0x4126,INVALC, 0x4127,0x4128,INVALC,INVALC,INVALC,0x4129,INVALC,0x412A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x412B,0x412C,INVALC,INVALC, INVALC,0x412D,0x412E,INVALC,INVALC,0x412F,INVALC,INVALC, 0x4130,INVALC,INVALC,INVALC,INVALC,0x4131,INVALC,0x4132, INVALC,INVALC,INVALC,0x4133,INVALC,INVALC,INVALC,0x4134, /* Block 102, Array index 0x1E00 */ INVALC,0x4135,INVALC,INVALC,0x4136,INVALC,INVALC,INVALC, 0x4137,0x4138,0x4139,INVALC,INVALC,INVALC,INVALC,0x413A, INVALC,INVALC,INVALC,0x413B,0x413C,INVALC,0x413D,INVALC, INVALC,0x413E,INVALC,0x413F,INVALC,INVALC,0x4140,0x4141, INVALC,INVALC,0x4142,INVALC,INVALC,INVALC,0x4143,INVALC, INVALC,0x4144,INVALC,INVALC,INVALC,INVALC,0x4145,INVALC, INVALC,0x4146,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4147,INVALC,0x4148,0x4149,INVALC,INVALC, INVALC,INVALC,INVALC,0x414A,INVALC,INVALC,INVALC,0x414B, INVALC,0x414C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x414D,INVALC,0x414E,INVALC,0x414F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4150, 0x4151,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4152, INVALC,INVALC,INVALC,0x4153,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4154,INVALC,INVALC,0x4155,INVALC,INVALC, INVALC,0x4156,INVALC,INVALC,INVALC,0x4157,INVALC,INVALC, INVALC,INVALC,0x4158,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4159,INVALC,INVALC,0x415A,INVALC,INVALC, 0x415B,INVALC,INVALC,INVALC,INVALC,0x415C,INVALC,INVALC, 0x415D,INVALC,INVALC,0x415E,INVALC,INVALC,0x415F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4160,INVALC, INVALC,INVALC,0x4161,0x4162,0x4163,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4164, INVALC,INVALC,0x4165,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4166,0x4167,INVALC,INVALC,INVALC,INVALC,0x4168,INVALC, 0x4169,INVALC,INVALC,INVALC,0x416A,INVALC,0x416B,INVALC, 0x416C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x416D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x416E,INVALC,0x416F,INVALC,0x4170,0x4171,INVALC,INVALC, INVALC,0x4172,INVALC,INVALC,INVALC,INVALC,0x4173,0x4174, /* Block 103, Array index 0x1F00 */ 0x4175,INVALC,INVALC,INVALC,0x4176,INVALC,INVALC,INVALC, 0x4177,0x4178,INVALC,INVALC,INVALC,0x4179,INVALC,INVALC, INVALC,0x417A,0x417B,INVALC,INVALC,0x417C,0x417D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x417E,0x4221,INVALC, INVALC,0x4222,0x4223,0x4224,0x4225,INVALC,0x4226,INVALC, INVALC,0x4227,0x4228,0x4229,0x422A,INVALC,0x422B,INVALC, 0x422C,0x422D,INVALC,0x422E,INVALC,INVALC,INVALC,0x4230, INVALC,0x422F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4231,INVALC,INVALC,INVALC,INVALC,0x4232,0x4233,INVALC, INVALC,INVALC,0x4234,INVALC,0x4235,INVALC,0x4237,INVALC, INVALC,0x4236,INVALC,INVALC,INVALC,INVALC,INVALC,0x4238, 0x4239,0x423A,INVALC,0x423B,0x423C,INVALC,INVALC,INVALC, 0x423D,0x423E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4240,0x4241,0x4242,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4244,INVALC,0x4245,INVALC,0x4247, 0x4248,0x4249,INVALC,0x424A,0x424C,INVALC,0x4243,0x4246, 0x424B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x424D,0x424E,0x424F,INVALC,INVALC, 0x4250,INVALC,0x4251,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4252,0x4253,0x4254,0x4255,INVALC,INVALC,0x4256, 0x4257,INVALC,INVALC,INVALC,0x4258,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4259,INVALC,INVALC, INVALC,0x425A,0x425B,INVALC,INVALC,0x425C,INVALC,INVALC, INVALC,INVALC,INVALC,0x425D,INVALC,INVALC,INVALC,0x425E, 0x425F,INVALC,0x4260,0x4261,INVALC,INVALC,INVALC,INVALC, 0x4262,INVALC,INVALC,INVALC,0x4263,INVALC,0x4264,0x4265, INVALC,INVALC,INVALC,INVALC,0x4266,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4267,INVALC,INVALC,INVALC,0x4268, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4269,INVALC,INVALC,0x426A,0x426B,INVALC,0x426C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x426D,0x423F,INVALC,INVALC,INVALC,INVALC, /* Block 104, Array index 0x2000 */ INVALC,INVALC,INVALC,INVALC,INVALC,0x426E,INVALC,0x426F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4270,INVALC, INVALC,INVALC,INVALC,0x4271,INVALC,INVALC,INVALC,INVALC, INVALC,0x4272,INVALC,INVALC,0x4273,INVALC,INVALC,INVALC, 0x4274,INVALC,0x4275,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4276,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4277,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4278,INVALC,0x4279, 0x427A,INVALC,INVALC,INVALC,0x427B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x427C,0x427D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x427E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4321,INVALC, INVALC,INVALC,INVALC,INVALC,0x4322,INVALC,0x4323,INVALC, INVALC,INVALC,INVALC,INVALC,0x4324,INVALC,0x4325,INVALC, INVALC,INVALC,INVALC,0x4326,INVALC,INVALC,INVALC,INVALC, INVALC,0x4327,INVALC,INVALC,0x4328,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4329,0x432A, INVALC,0x432B,INVALC,0x432C,INVALC,INVALC,0x432D,INVALC, 0x432E,0x432F,INVALC,0x4330,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4331,0x4332,0x4333,INVALC,INVALC,0x4334,INVALC,INVALC, INVALC,INVALC,INVALC,0x4335,0x4336,0x4337,INVALC,INVALC, 0x4339,INVALC,0x433A,0x433B,INVALC,0x433C,INVALC,INVALC, 0x433D,0x433E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x433F,INVALC,INVALC,INVALC,INVALC,0x4340, INVALC,0x4341,INVALC,INVALC,0x4342,INVALC,INVALC,INVALC, INVALC,0x4343,INVALC,INVALC,INVALC,INVALC,0x4344,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4345,INVALC,0x4346,INVALC,INVALC,INVALC,0x4347,0x4348, INVALC,0x4338,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 105, Array index 0x2100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x434A,INVALC,INVALC,INVALC, INVALC,0x434B,INVALC,INVALC,INVALC,0x434C,INVALC,0x434D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x434F, 0x434E,INVALC,INVALC,INVALC,0x4350,0x4351,INVALC,0x4352, 0x4353,0x4354,INVALC,0x4355,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4356,INVALC,INVALC,INVALC,0x4357, INVALC,INVALC,INVALC,INVALC,0x4358,0x4359,INVALC,INVALC, INVALC,INVALC,0x435A,INVALC,0x435B,INVALC,INVALC,INVALC, INVALC,INVALC,0x4349,INVALC,INVALC,0x435C,INVALC,0x435D, 0x435E,INVALC,INVALC,0x435F,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4360,INVALC,INVALC,0x4361,0x4362, 0x4363,0x4364,0x4365,INVALC,INVALC,0x4366,INVALC,INVALC, INVALC,0x4367,0x4368,0x4369,0x436A,INVALC,INVALC,INVALC, INVALC,INVALC,0x436B,INVALC,0x436C,INVALC,0x436D,INVALC, 0x436E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x436F,INVALC, 0x4370,INVALC,0x4371,INVALC,0x4372,INVALC,INVALC,INVALC, INVALC,0x4373,INVALC,0x4374,INVALC,0x4375,INVALC,INVALC, INVALC,0x4376,0x4377,INVALC,INVALC,INVALC,0x4378,INVALC, INVALC,INVALC,0x4379,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x437A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x437B,INVALC,INVALC, 0x437C,INVALC,INVALC,INVALC,0x437D,INVALC,INVALC,0x437E, 0x4421,0x4422,INVALC,0x4423,INVALC,INVALC,0x4424,INVALC, INVALC,0x4425,INVALC,INVALC,0x4426,0x4427,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4428,INVALC,INVALC, 0x4429,INVALC,0x442A,0x442B,0x442C,0x442D,INVALC,INVALC, 0x442E,0x442F,INVALC,INVALC,INVALC,0x4430,0x4431,INVALC, INVALC,INVALC,INVALC,0x4432,0x4433,0x4434,INVALC,INVALC, /* Block 106, Array index 0x2200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4435,INVALC, INVALC,0x4436,0x4437,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4438,0x4439,INVALC,0x443A,INVALC,INVALC,0x443B,0x443C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x443D,INVALC,0x443E,INVALC,0x443F,INVALC,INVALC, 0x4440,INVALC,INVALC,0x4441,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4442,INVALC,INVALC,0x4443,INVALC,INVALC, INVALC,0x4444,INVALC,INVALC,INVALC,INVALC,0x4445,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4446, INVALC,INVALC,INVALC,0x4447,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4448,0x4449,0x444A,0x444B,INVALC, 0x444C,0x444D,INVALC,INVALC,0x444E,INVALC,INVALC,INVALC, 0x444F,0x4450,0x4451,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4452,0x4453,INVALC,INVALC,INVALC,0x4454, 0x4455,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4456,INVALC,INVALC, INVALC,INVALC,0x4457,INVALC,INVALC,INVALC,0x4458,INVALC, 0x4459,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x445A,INVALC,INVALC,INVALC,0x445B,0x445C,INVALC, 0x445D,INVALC,INVALC,0x445E,INVALC,0x445F,INVALC,0x4460, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4461, 0x4462,INVALC,0x4463,INVALC,0x4464,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4465,INVALC,INVALC, 0x4466,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4467,INVALC,INVALC,INVALC,INVALC,0x4468,0x4469, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x446A,INVALC,INVALC,0x446B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x446C,0x446D, INVALC,0x446E,INVALC,0x446F,INVALC,0x4470,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4471,INVALC, /* Block 107, Array index 0x2300 */ 0x4472,0x4473,INVALC,0x4474,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4475, INVALC,0x4476,INVALC,INVALC,INVALC,0x4477,INVALC,INVALC, INVALC,INVALC,0x4478,INVALC,INVALC,0x4479,INVALC,INVALC, 0x447A,INVALC,INVALC,INVALC,0x447B,INVALC,INVALC,INVALC, 0x447C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x447D,INVALC,0x447E,INVALC,0x4521,INVALC,INVALC,0x4522, INVALC,INVALC,INVALC,0x4523,INVALC,INVALC,0x4524,0x4525, INVALC,INVALC,INVALC,INVALC,INVALC,0x4526,0x4527,INVALC, INVALC,0x4528,0x4529,INVALC,INVALC,INVALC,0x452A,INVALC, 0x452B,0x452C,0x452D,INVALC,INVALC,0x452E,0x452F,INVALC, INVALC,INVALC,INVALC,0x4530,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4531,INVALC,INVALC,0x4532, INVALC,INVALC,0x4533,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4534,INVALC,0x4535,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4536,INVALC, INVALC,0x4537,INVALC,0x4538,INVALC,INVALC,0x4539,0x453A, INVALC,0x453B,INVALC,0x453C,INVALC,INVALC,INVALC,INVALC, INVALC,0x453D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x453E,INVALC,0x453F,0x4540,0x4541, INVALC,INVALC,INVALC,INVALC,INVALC,0x4542,INVALC,INVALC, INVALC,INVALC,INVALC,0x4543,INVALC,INVALC,INVALC,0x4544, 0x4545,0x4546,INVALC,INVALC,0x4547,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4548,0x4549,0x454A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x454B,INVALC, 0x454D,0x454C,INVALC,INVALC,0x454E,INVALC,INVALC,INVALC, 0x454F,INVALC,INVALC,INVALC,0x4550,0x4551,0x4552,INVALC, INVALC,INVALC,INVALC,INVALC,0x4553,0x4554,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4555,INVALC,INVALC,0x4556, INVALC,INVALC,INVALC,INVALC,0x4557,INVALC,INVALC,INVALC, 0x4558,0x4559,0x455A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x455B,0x455C,INVALC,INVALC, /* Block 108, Array index 0x2400 */ INVALC,INVALC,0x455D,0x455E,INVALC,INVALC,0x455F,0x4560, INVALC,0x4561,INVALC,INVALC,INVALC,INVALC,INVALC,0x4562, 0x4563,0x4564,INVALC,INVALC,INVALC,INVALC,INVALC,0x4565, INVALC,INVALC,INVALC,0x4566,INVALC,INVALC,0x4567,INVALC, INVALC,INVALC,INVALC,INVALC,0x4568,INVALC,INVALC,INVALC, 0x4569,INVALC,INVALC,0x456A,0x456B,INVALC,INVALC,0x456C, INVALC,INVALC,INVALC,INVALC,INVALC,0x456D,0x456E,INVALC, INVALC,INVALC,INVALC,0x456F,INVALC,INVALC,INVALC,0x4570, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4571,INVALC, INVALC,INVALC,0x4572,INVALC,INVALC,0x4573,INVALC,INVALC, INVALC,INVALC,0x4574,INVALC,INVALC,INVALC,0x4575,INVALC, 0x4576,INVALC,INVALC,INVALC,INVALC,0x4577,INVALC,INVALC, 0x4578,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4579, INVALC,INVALC,INVALC,0x457A,INVALC,INVALC,0x457B,INVALC, 0x457C,INVALC,INVALC,INVALC,INVALC,0x457D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x457E,0x4621,INVALC, INVALC,INVALC,0x4622,INVALC,INVALC,0x4623,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4624, INVALC,INVALC,INVALC,0x4625,INVALC,INVALC,INVALC,0x4626, 0x4627,INVALC,0x4628,0x4629,INVALC,INVALC,INVALC,INVALC, 0x462A,0x462B,INVALC,INVALC,0x462C,0x462D,0x462E,INVALC, 0x462F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4630,0x4631,INVALC,INVALC,INVALC,0x4632,0x4633,INVALC, INVALC,INVALC,INVALC,0x4634,0x4635,INVALC,INVALC,INVALC, INVALC,0x4636,INVALC,INVALC,0x4637,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4638,INVALC, INVALC,INVALC,0x4639,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x463A,INVALC,0x463B,INVALC,INVALC,0x463C,0x463D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x463E,INVALC, INVALC,0x463F,INVALC,INVALC,INVALC,INVALC,INVALC,0x4640, INVALC,0x4641,INVALC,INVALC,INVALC,INVALC,INVALC,0x4642, /* Block 109, Array index 0x2500 */ INVALC,INVALC,0x4643,INVALC,0x4644,0x4645,INVALC,INVALC, INVALC,0x4646,INVALC,INVALC,INVALC,0x4647,0x4648,INVALC, 0x4649,INVALC,0x464A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x464B,INVALC,INVALC,INVALC,INVALC,INVALC,0x464C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x464D,0x464E, 0x464F,INVALC,INVALC,INVALC,0x4650,INVALC,0x4651,INVALC, INVALC,INVALC,INVALC,0x4652,INVALC,0x4653,0x4654,INVALC, INVALC,INVALC,0x4655,0x4656,INVALC,INVALC,INVALC,0x4657, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4658,0x4659,INVALC,0x465A,INVALC,0x465B, INVALC,INVALC,0x465C,INVALC,0x465D,INVALC,INVALC,INVALC, INVALC,0x465E,INVALC,0x465F,0x4660,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4736, INVALC,INVALC,INVALC,0x4661,INVALC,0x4662,INVALC,0x4663, INVALC,INVALC,INVALC,INVALC,0x4664,INVALC,0x4665,INVALC, 0x4666,0x4667,INVALC,0x4668,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4669,0x466A,0x466B, INVALC,0x466C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x466D,0x466E,INVALC,0x466F, 0x4670,INVALC,INVALC,INVALC,0x4671,INVALC,INVALC,0x4672, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4673,INVALC,0x4674,INVALC,0x4675,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4676,INVALC,INVALC,INVALC,0x4677,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4678,INVALC,0x4679, 0x467A,0x467B,0x467C,INVALC,0x467D,INVALC,0x467E,INVALC, INVALC,INVALC,0x4721,INVALC,0x4722,INVALC,INVALC,INVALC, 0x4723,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4724, INVALC,0x4725,INVALC,0x4726,0x4727,INVALC,0x4728,INVALC, INVALC,INVALC,0x4729,INVALC,0x472A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 110, Array index 0x2600 */ INVALC,INVALC,INVALC,INVALC,0x472B,INVALC,INVALC,0x472C, INVALC,INVALC,0x472D,INVALC,INVALC,INVALC,0x472E,0x472F, INVALC,0x4730,INVALC,0x4731,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4732,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4733,0x4734, 0x4735,INVALC,INVALC,INVALC,INVALC,INVALC,0x4737,0x4738, INVALC,0x4739,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x473A,INVALC,INVALC,0x473B,INVALC,INVALC,0x473C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x473D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x473E,0x473F, INVALC,0x4740,INVALC,INVALC,INVALC,0x4741,INVALC,0x4742, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4743, 0x4744,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4745,INVALC,INVALC,INVALC, INVALC,INVALC,0x4746,INVALC,INVALC,INVALC,INVALC,0x4747, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4748,0x4749,INVALC,0x474A,INVALC,0x474B,0x474C, 0x474D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x474E,INVALC,0x474F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4750,INVALC,INVALC,0x4751, INVALC,0x4752,INVALC,INVALC,INVALC,0x4753,INVALC,0x4754, INVALC,INVALC,INVALC,INVALC,0x4755,INVALC,INVALC,INVALC, 0x4756,INVALC,0x4757,INVALC,INVALC,INVALC,0x4758,0x4759, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x475A,INVALC, INVALC,INVALC,INVALC,0x475B,INVALC,0x475C,INVALC,0x475D, 0x475E,INVALC,0x475F,INVALC,INVALC,0x4760,INVALC,INVALC, INVALC,0x4761,INVALC,INVALC,INVALC,INVALC,INVALC,0x4762, 0x4763,INVALC,INVALC,INVALC,0x4764,INVALC,0x4765,INVALC, INVALC,INVALC,INVALC,INVALC,0x4766,INVALC,INVALC,INVALC, /* Block 111, Array index 0x2700 */ 0x4767,INVALC,INVALC,INVALC,0x4768,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4769,INVALC, INVALC,INVALC,0x476A,INVALC,INVALC,INVALC,INVALC,0x476B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x476C,INVALC,INVALC,INVALC,0x476D,INVALC, INVALC,0x476E,INVALC,0x476F,0x4770,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4771,0x4772,INVALC,INVALC, 0x4773,0x4774,INVALC,0x4775,INVALC,INVALC,INVALC,0x4776, INVALC,0x4777,0x4778,0x4779,0x477A,INVALC,INVALC,0x477B, INVALC,INVALC,INVALC,INVALC,0x477C,0x477D,0x477E,INVALC, INVALC,INVALC,0x4821,0x4822,INVALC,INVALC,INVALC,INVALC, 0x4823,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4824,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4825,INVALC,0x4826,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4827,INVALC,INVALC, INVALC,INVALC,INVALC,0x4828,INVALC,INVALC,INVALC,INVALC, INVALC,0x4829,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x482A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x482B, INVALC,INVALC,INVALC,INVALC,INVALC,0x482C,0x482D,INVALC, INVALC,0x482E,INVALC,0x482F,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4830,INVALC,INVALC,INVALC,0x4831, 0x4832,0x4833,INVALC,0x4834,INVALC,INVALC,INVALC,0x4835, 0x4836,INVALC,0x4837,INVALC,INVALC,0x4838,0x4839,0x483A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x483B,INVALC,0x483C,0x483D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x483E,INVALC,0x483F,INVALC,0x4840,INVALC,INVALC, /* Block 112, Array index 0x2800 */ INVALC,INVALC,INVALC,INVALC,0x4841,INVALC,INVALC,INVALC, 0x4842,INVALC,0x4843,INVALC,0x4844,0x4845,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4846,INVALC, 0x4847,INVALC,0x4848,0x4849,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x484A,INVALC, INVALC,0x484B,0x484C,INVALC,INVALC,0x4853,INVALC,0x484D, 0x484E,INVALC,INVALC,0x484F,INVALC,INVALC,0x4850,INVALC, INVALC,INVALC,INVALC,0x4851,0x4852,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4854, INVALC,0x4855,0x4856,0x4857,INVALC,INVALC,INVALC,0x4858, INVALC,0x4859,0x485A,INVALC,INVALC,0x485B,0x485C,INVALC, INVALC,0x485D,0x485E,INVALC,INVALC,INVALC,INVALC,INVALC, 0x485F,INVALC,INVALC,INVALC,0x4860,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4861,0x4862,INVALC, INVALC,INVALC,INVALC,0x4863,INVALC,INVALC,INVALC,0x4864, 0x4865,INVALC,INVALC,0x4866,0x4867,0x4868,INVALC,INVALC, 0x4869,INVALC,0x486A,0x486B,0x486C,INVALC,0x486D,INVALC, INVALC,INVALC,0x486E,INVALC,INVALC,INVALC,INVALC,0x486F, 0x4870,INVALC,INVALC,INVALC,INVALC,0x4871,0x4872,0x4873, 0x4874,INVALC,INVALC,INVALC,INVALC,INVALC,0x4875,0x4876, 0x4877,INVALC,INVALC,INVALC,INVALC,0x4878,0x4879,INVALC, INVALC,INVALC,INVALC,INVALC,0x487A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x487B,INVALC,0x487C, 0x487D,INVALC,0x487E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4921,INVALC,INVALC,INVALC,0x4922,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4923,0x4924,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4925,INVALC,INVALC,INVALC,INVALC,0x4926,INVALC,INVALC, INVALC,0x4927,INVALC,INVALC,0x4928,0x4929,INVALC,INVALC, /* Block 113, Array index 0x2900 */ 0x492A,INVALC,INVALC,INVALC,INVALC,0x492B,0x492C,0x492D, INVALC,INVALC,INVALC,INVALC,INVALC,0x492E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x492F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4930,INVALC,INVALC,0x4931,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4932, INVALC,INVALC,INVALC,INVALC,0x4933,INVALC,INVALC,0x4934, INVALC,0x4935,INVALC,INVALC,0x4936,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4937,0x4938,INVALC,INVALC,INVALC, 0x4939,0x493A,0x493B,0x493C,INVALC,INVALC,0x4941,INVALC, INVALC,INVALC,INVALC,INVALC,0x493D,0x493E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x493F,0x4940,INVALC, INVALC,INVALC,INVALC,INVALC,0x4942,0x4943,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4944,INVALC,0x4945,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4946,0x4947,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4948,INVALC, INVALC,0x4949,INVALC,INVALC,INVALC,0x494A,0x494B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x494C,0x494D,0x494E,0x494F, 0x4950,INVALC,INVALC,0x4951,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4952,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4953,INVALC,INVALC,INVALC,INVALC, 0x4954,0x4955,INVALC,INVALC,0x4956,INVALC,INVALC,0x4957, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4958,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4959,INVALC,0x495A,0x495B,0x495C,0x495D,INVALC, 0x495E,INVALC,INVALC,INVALC,0x495F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4960,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4961,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 114, Array index 0x2A00 */ INVALC,INVALC,INVALC,0x4962,0x4963,0x4964,0x4965,0x4966, INVALC,INVALC,INVALC,0x4967,0x4968,INVALC,INVALC,0x4969, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x496A,INVALC, 0x496B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x496C,INVALC,0x496D,INVALC,0x496E, 0x496F,0x4970,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4971,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4972,INVALC,INVALC,INVALC,0x4973,0x4974,0x4975, INVALC,INVALC,0x4976,0x4977,INVALC,INVALC,INVALC,INVALC, 0x4978,INVALC,0x4979,INVALC,INVALC,INVALC,INVALC,0x497A, INVALC,INVALC,0x497B,INVALC,0x497C,INVALC,0x497D,INVALC, 0x497E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4A21,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4A22,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4A23,INVALC,INVALC,INVALC,INVALC,0x4A24,INVALC,0x4A25, INVALC,INVALC,INVALC,INVALC,0x4A26,INVALC,INVALC,INVALC, INVALC,INVALC,0x4A27,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4A28,0x4A29,INVALC,INVALC,INVALC,INVALC, 0x4A2A,INVALC,0x4A2B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A2C, 0x4A2D,INVALC,0x4A2E,0x4A2F,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4A30,INVALC,INVALC,INVALC,INVALC,0x4A31, 0x4A32,0x4A33,INVALC,INVALC,0x4A34,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4A35,0x4A36,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4A37,INVALC,INVALC,0x4A38,INVALC, INVALC,0x4A39,0x4A3A,INVALC,0x4A3B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4A3C,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A3D,INVALC, /* Block 115, Array index 0x2B00 */ 0x4A3E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A3F, 0x4A40,0x4A41,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4A42,INVALC,INVALC,INVALC,0x4A43, INVALC,INVALC,0x4A44,INVALC,INVALC,0x4A45,INVALC,0x4A46, INVALC,INVALC,INVALC,INVALC,0x4A47,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4A48,INVALC,INVALC,INVALC,0x4A49, INVALC,INVALC,INVALC,INVALC,0x4A4A,INVALC,INVALC,INVALC, 0x4A4B,0x4A4C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4A4D,0x4A4E,0x4A4F,INVALC,0x4A50,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A51,0x4A52, 0x4A53,INVALC,INVALC,0x4A54,INVALC,0x4A55,0x4A56,INVALC, INVALC,INVALC,0x4A57,INVALC,0x4A58,INVALC,0x4A59,INVALC, 0x4A5A,INVALC,INVALC,0x4A5B,INVALC,INVALC,INVALC,INVALC, 0x4A5C,INVALC,INVALC,0x4A5D,INVALC,INVALC,0x4A5E,0x4A5F, INVALC,0x4A60,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A61, 0x4A62,INVALC,INVALC,0x4A63,0x4A64,INVALC,INVALC,0x4A65, INVALC,INVALC,INVALC,INVALC,0x4A66,INVALC,INVALC,INVALC, INVALC,0x4A67,INVALC,INVALC,INVALC,0x4A68,0x4A69,INVALC, INVALC,INVALC,INVALC,0x4A6A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4A6B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4A6C,INVALC,INVALC,INVALC,INVALC,0x4A6D,0x4A6E,INVALC, INVALC,0x4A6F,INVALC,INVALC,0x4A70,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A71,INVALC, INVALC,0x4A72,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A73, INVALC,0x4A74,INVALC,INVALC,0x4A75,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4A76,0x4A77,INVALC, 0x4A78,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A79, INVALC,INVALC,INVALC,INVALC,INVALC,0x4A7A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4A7B,0x4A7C,INVALC,INVALC,INVALC, INVALC,INVALC,0x4A7D,0x4A7E,INVALC,INVALC,0x4B21,INVALC, /* Block 116, Array index 0x2C00 */ INVALC,INVALC,0x4B22,INVALC,0x4B23,0x4B24,INVALC,0x4B25, INVALC,INVALC,INVALC,0x4B26,INVALC,0x4B27,INVALC,INVALC, INVALC,INVALC,0x4B28,0x4B29,INVALC,INVALC,INVALC,INVALC, 0x4B2A,0x4B2B,INVALC,INVALC,INVALC,INVALC,0x4B2C,INVALC, INVALC,INVALC,0x4B2D,INVALC,0x4B2E,INVALC,INVALC,0x4B2F, 0x4B30,INVALC,INVALC,INVALC,0x4B31,INVALC,INVALC,INVALC, INVALC,0x4B32,0x4B33,INVALC,INVALC,0x4B34,INVALC,INVALC, INVALC,INVALC,0x4B35,0x4B36,INVALC,0x4B37,INVALC,INVALC, INVALC,INVALC,INVALC,0x4B38,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4B39,INVALC,INVALC, 0x4B3A,INVALC,0x4B3B,INVALC,INVALC,INVALC,0x4B3C,INVALC, 0x4B3D,INVALC,INVALC,INVALC,INVALC,0x4B3E,0x4B3F,0x4B40, 0x4B41,INVALC,INVALC,INVALC,INVALC,INVALC,0x4B42,0x4B43, INVALC,0x4B44,INVALC,0x4B45,0x4B46,INVALC,0x4B47,0x4B48, INVALC,0x4B49,INVALC,INVALC,INVALC,INVALC,INVALC,0x4B4A, INVALC,0x4B4B,INVALC,INVALC,0x4B4C,INVALC,INVALC,INVALC, 0x4B4D,0x4B4E,INVALC,0x4B4F,INVALC,0x4B50,0x4B51,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4B52,INVALC, 0x4B53,INVALC,INVALC,0x4B54,INVALC,0x4B55,INVALC,0x4B56, 0x4B57,INVALC,INVALC,INVALC,0x4B58,INVALC,0x4B59,0x4B5A, 0x4B5B,INVALC,0x4B5C,INVALC,INVALC,0x4B5D,0x4B5E,INVALC, INVALC,INVALC,0x4B5F,0x4B60,INVALC,0x4B61,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4B62,INVALC,0x4B63, INVALC,0x4B64,INVALC,INVALC,0x4B65,0x4B66,INVALC,0x4B67, INVALC,INVALC,INVALC,INVALC,INVALC,0x4B68,0x4B69,INVALC, INVALC,0x4B6A,INVALC,0x4B6B,0x4B6C,INVALC,INVALC,0x4B6D, INVALC,INVALC,0x4B6E,0x4B6F,INVALC,INVALC,0x4B70,INVALC, INVALC,0x4B71,INVALC,INVALC,INVALC,0x4B72,INVALC,INVALC, INVALC,0x4B73,INVALC,0x4B74,INVALC,INVALC,0x4B75,0x4B76, INVALC,0x4B77,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4B78,0x4B79,INVALC,0x4B7A, INVALC,0x4B7B,0x4B7C,0x4B7D,INVALC,0x4B7E,INVALC,0x4C21, /* Block 117, Array index 0x2D00 */ 0x4C22,0x4C23,INVALC,INVALC,0x4C24,INVALC,INVALC,0x4C25, INVALC,INVALC,0x4C26,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4C27,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4C28,0x4C29,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4C2A,INVALC,0x4C2B,INVALC, 0x4C2C,0x4C2D,0x4C2E,0x4C2F,0x4C30,0x4C31,0x4C32,0x4C33, 0x4C34,0x4C35,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4C36,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4C37,INVALC,INVALC,0x4C38,0x4C39,INVALC,0x4C3A,0x4C3B, INVALC,INVALC,INVALC,0x4C3C,INVALC,0x4C3D,INVALC,INVALC, INVALC,0x4C3E,0x4C3F,INVALC,INVALC,INVALC,INVALC,0x4C40, INVALC,INVALC,INVALC,INVALC,INVALC,0x4C41,INVALC,INVALC, INVALC,INVALC,0x4C42,INVALC,INVALC,INVALC,0x4C43,0x4C44, 0x4C45,INVALC,INVALC,0x4C46,INVALC,0x4C47,0x4C48,INVALC, INVALC,0x4C49,0x4C4A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4C4B,0x4C4C,INVALC,INVALC,INVALC,0x4C4D,0x4C4E,0x4C4F, INVALC,0x4C50,INVALC,INVALC,INVALC,INVALC,INVALC,0x4C51, 0x4C52,0x4C53,0x4C54,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4C55,0x4C56,0x4C57,INVALC,0x4C58,INVALC,INVALC,0x4C59, 0x4C5A,0x4C5B,INVALC,0x4C5C,INVALC,INVALC,0x4C5D,INVALC, 0x4C5E,0x4C5F,0x4C60,0x4C61,INVALC,INVALC,0x4C62,0x4C63, INVALC,0x4C64,0x4C65,INVALC,INVALC,0x4C66,INVALC,INVALC, INVALC,0x4C67,INVALC,0x4C68,INVALC,INVALC,INVALC,0x4C69, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4C6A,0x4C6B,INVALC,INVALC,0x4C6C,INVALC,INVALC,INVALC, 0x4C6D,INVALC,INVALC,0x4C6E,INVALC,INVALC,INVALC,INVALC, 0x4C6F,INVALC,0x4C70,0x4C71,INVALC,INVALC,0x4C72,0x4C73, INVALC,INVALC,INVALC,INVALC,0x4C74,INVALC,INVALC,INVALC, 0x4C75,INVALC,0x4C76,0x4C77,INVALC,INVALC,INVALC,0x4C78, INVALC,INVALC,INVALC,INVALC,0x4C79,INVALC,INVALC,INVALC, INVALC,INVALC,0x4C7A,0x4C7B,0x4C7C,INVALC,INVALC,0x4C7D, /* Block 118, Array index 0x2E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4C7E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4D21,INVALC,INVALC,INVALC,0x4D22,0x4D23, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4D24,0x4D25,INVALC,INVALC,0x4D26,INVALC,INVALC,0x4D27, INVALC,0x4D28,0x4D29,INVALC,INVALC,INVALC,INVALC,0x4D2A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4D2B,INVALC, INVALC,0x4D2C,INVALC,INVALC,INVALC,0x4D2D,0x4D2E,0x4D2F, 0x4D30,INVALC,INVALC,0x4D31,INVALC,INVALC,INVALC,0x4D32, 0x4D33,INVALC,INVALC,INVALC,INVALC,INVALC,0x4D34,INVALC, 0x4D35,INVALC,0x4D36,INVALC,INVALC,INVALC,INVALC,0x4D37, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4D38,0x4D39, INVALC,0x4D3A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4D3B, INVALC,0x4D3C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4D3D,0x4D3E,0x4D3F,0x4D40,0x4D41,0x4D42,INVALC, INVALC,0x4D43,INVALC,INVALC,INVALC,0x4D44,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4D45,INVALC,0x4D46,0x4D47,INVALC,0x4D48,INVALC,INVALC, INVALC,0x4D49,INVALC,INVALC,0x4D4A,INVALC,INVALC,INVALC, INVALC,INVALC,0x4D4B,INVALC,0x4D4C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4D4D,INVALC,INVALC,INVALC, INVALC,INVALC,0x4D4E,INVALC,INVALC,INVALC,INVALC,0x4D4F, 0x4D50,0x4D51,INVALC,INVALC,0x4D52,INVALC,0x4D53,INVALC, INVALC,INVALC,INVALC,INVALC,0x4D54,INVALC,0x4D55,0x4D56, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4D57, INVALC,INVALC,INVALC,INVALC,0x4D58,INVALC,INVALC,0x4D59, 0x4D5A,0x4D5B,INVALC,INVALC,0x4D5C,INVALC,INVALC,0x4D5D, INVALC,INVALC,INVALC,INVALC,0x4D5E,INVALC,0x4D5F,0x4D60, INVALC,0x4D61,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4D62,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 119, Array index 0x2F00 */ 0x4D63,INVALC,0x4D64,0x4D65,0x4D66,INVALC,INVALC,0x4D67, 0x4D68,INVALC,0x4D69,INVALC,0x4D6A,INVALC,INVALC,0x4D6B, INVALC,INVALC,0x4D6C,0x4D6D,INVALC,0x4D6E,0x4D6F,INVALC, INVALC,0x4D70,INVALC,0x4D71,0x4D72,0x4D73,0x4D74,INVALC, INVALC,INVALC,INVALC,0x4D75,INVALC,0x4D76,0x4D77,INVALC, INVALC,0x4D78,INVALC,INVALC,INVALC,0x4D79,INVALC,INVALC, INVALC,INVALC,0x4D7A,0x4D7B,INVALC,0x4D7C,INVALC,INVALC, 0x4D7D,0x4D7E,0x4E21,INVALC,0x4E22,INVALC,INVALC,INVALC, 0x4E24,0x4E25,INVALC,0x4E26,0x4E27,0x4E28,INVALC,INVALC, INVALC,0x4E29,0x4E23,0x4E2A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4E2B,INVALC,INVALC, INVALC,0x4E2C,INVALC,INVALC,INVALC,INVALC,INVALC,0x4E2D, INVALC,INVALC,INVALC,INVALC,0x4E2E,0x4E2F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4E30,0x4E31,0x4E32, INVALC,0x4E33,INVALC,INVALC,0x4E34,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4E35,INVALC,INVALC,INVALC,0x4E36,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4E37,0x4E38,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4E39,INVALC,INVALC, INVALC,INVALC,INVALC,0x4E3A,0x4E3B,0x4E3C,INVALC,0x4E3D, 0x4E3E,INVALC,0x4E3F,0x4E40,0x4E41,0x4E42,0x4E43,0x4E44, 0x4E45,INVALC,0x4E46,INVALC,INVALC,0x4E47,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4E48,INVALC,INVALC, INVALC,0x4E49,INVALC,INVALC,INVALC,0x4E4A,INVALC,INVALC, INVALC,0x4E4B,INVALC,0x4E4C,0x4E4D,INVALC,0x4E4E,INVALC, INVALC,INVALC,INVALC,INVALC,0x4E4F,INVALC,INVALC,INVALC, INVALC,0x4E50,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4E51,INVALC,INVALC,INVALC,INVALC,INVALC,0x4E52,INVALC, 0x4E53,INVALC,INVALC,INVALC,0x4E54,INVALC,INVALC,INVALC, 0x4E55,0x4E56,INVALC,INVALC,INVALC,INVALC,0x4E57,INVALC, INVALC,0x4E58,INVALC,INVALC,0x4E59,INVALC,INVALC,INVALC, /* Block 120, Array index 0x3000 */ 0x4E5A,INVALC,INVALC,INVALC,INVALC,INVALC,0x4E5B,INVALC, INVALC,INVALC,0x4E5C,INVALC,INVALC,INVALC,0x4E5D,INVALC, INVALC,INVALC,0x4E5E,INVALC,0x4E5F,0x4E60,INVALC,0x4E61, INVALC,0x4E62,0x4E63,INVALC,0x4E64,INVALC,INVALC,INVALC, INVALC,INVALC,0x4E65,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4E66,INVALC,INVALC,INVALC,INVALC,0x4E67,0x4E68,0x4E69, INVALC,INVALC,INVALC,INVALC,0x4E6A,0x4E6B,0x4E6C,INVALC, INVALC,0x4E6D,INVALC,INVALC,INVALC,0x4E6E,0x4E6F,INVALC, INVALC,INVALC,0x4E70,INVALC,INVALC,0x4E71,0x4E72,INVALC, INVALC,INVALC,0x4E73,INVALC,INVALC,0x4E74,0x4E75,0x4E76, INVALC,INVALC,0x4E77,INVALC,INVALC,INVALC,0x4E78,0x4E79, INVALC,INVALC,INVALC,INVALC,0x4E7A,INVALC,0x4E7B,0x4E7C, 0x4E7D,INVALC,0x4E7E,INVALC,0x4F21,INVALC,INVALC,0x4F22, INVALC,INVALC,0x4F23,INVALC,0x4F24,INVALC,INVALC,INVALC, 0x4F25,INVALC,0x4F26,0x4F27,0x4F28,INVALC,INVALC,INVALC, INVALC,INVALC,0x4F29,INVALC,INVALC,0x4F2A,INVALC,INVALC, 0x4F2B,INVALC,INVALC,INVALC,0x4F2C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4F2D,0x4F2E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4F2F,0x4F30,0x4F31,INVALC, INVALC,INVALC,0x4F32,INVALC,INVALC,INVALC,INVALC,0x4F33, INVALC,INVALC,0x4F34,INVALC,INVALC,INVALC,INVALC,0x4F35, INVALC,INVALC,0x4F36,INVALC,INVALC,INVALC,0x4F37,0x4F38, INVALC,0x4F39,INVALC,INVALC,INVALC,0x4F3A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4F3B,INVALC, INVALC,INVALC,INVALC,0x4F3C,INVALC,INVALC,INVALC,INVALC, INVALC,0x4F3D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4F3E,0x4F3F,INVALC,INVALC,0x4F40,INVALC,INVALC, INVALC,0x4F41,INVALC,INVALC,INVALC,INVALC,0x4F42,0x4F43, 0x4F44,INVALC,INVALC,INVALC,0x4F45,INVALC,0x4F46,INVALC, INVALC,INVALC,0x4F47,INVALC,0x4F48,INVALC,INVALC,INVALC, 0x4F49,0x4F4A,INVALC,INVALC,0x4F4B,INVALC,INVALC,INVALC, 0x4F4C,INVALC,INVALC,0x4F4D,INVALC,INVALC,INVALC,INVALC, /* Block 121, Array index 0x3100 */ INVALC,INVALC,INVALC,INVALC,INVALC,0x4F4E,0x4F4F,INVALC, INVALC,0x4F50,INVALC,INVALC,INVALC,0x4F51,0x4F52,INVALC, INVALC,0x4F53,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4F54,INVALC,INVALC, INVALC,0x4F55,0x4F56,0x4F57,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4F58,0x4F59,INVALC, 0x4F5A,INVALC,INVALC,INVALC,INVALC,0x4F5B,INVALC,0x4F5C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4F5D,0x4F5E,INVALC,INVALC,0x4F5F, 0x4F60,INVALC,INVALC,INVALC,0x4F61,INVALC,0x4F62,INVALC, INVALC,INVALC,0x4F63,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4F64,INVALC,0x4F65,INVALC, 0x4F66,0x4F67,INVALC,0x4F68,0x4F69,INVALC,INVALC,INVALC, 0x4F6A,INVALC,0x4F6B,INVALC,INVALC,INVALC,0x4F6C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4F6D,INVALC,INVALC,INVALC,0x4F6E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4F6F,INVALC,INVALC,INVALC,INVALC,0x4F70, INVALC,INVALC,INVALC,INVALC,0x4F71,INVALC,INVALC,INVALC, 0x4F72,INVALC,INVALC,INVALC,INVALC,0x4F74,0x4F75,0x4F76, INVALC,0x4F73,INVALC,INVALC,0x4F77,INVALC,INVALC,INVALC, 0x4F78,INVALC,INVALC,INVALC,0x4F79,0x4F7A,INVALC,INVALC, 0x4F7B,0x4F7C,0x4F7D,0x4F7E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5021,INVALC,0x5022,INVALC,0x5023, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5024, 0x5025,0x5026,INVALC,INVALC,0x5027,INVALC,0x5028,INVALC, INVALC,INVALC,0x5029,0x502A,INVALC,0x502B,0x502C,INVALC, INVALC,INVALC,INVALC,0x502E,INVALC,INVALC,INVALC,0x502F, 0x5030,0x5031,INVALC,INVALC,0x502D,INVALC,0x5032,INVALC, INVALC,INVALC,0x5033,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5034,0x5035,INVALC,INVALC,0x5037,0x5038, INVALC,INVALC,0x5039,0x503A,INVALC,INVALC,INVALC,0x503B, /* Block 122, Array index 0x3200 */ 0x5036,INVALC,INVALC,INVALC,INVALC,INVALC,0x503C,INVALC, INVALC,INVALC,INVALC,INVALC,0x503D,INVALC,INVALC,INVALC, 0x503E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x503F,INVALC,0x5040,INVALC,0x5041,0x5042, 0x5043,INVALC,INVALC,INVALC,INVALC,0x5044,INVALC,0x5045, INVALC,0x5046,INVALC,INVALC,INVALC,0x5047,INVALC,INVALC, INVALC,0x5048,INVALC,INVALC,0x5049,0x504A,INVALC,INVALC, INVALC,INVALC,INVALC,0x504B,INVALC,0x504C,INVALC,0x504D, INVALC,INVALC,INVALC,INVALC,0x504E,0x504F,0x5050,INVALC, INVALC,INVALC,0x5051,0x5052,INVALC,INVALC,INVALC,0x5053, INVALC,0x5054,INVALC,INVALC,0x5055,INVALC,INVALC,INVALC, 0x5056,INVALC,INVALC,0x5057,0x5058,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5059, INVALC,0x505A,INVALC,0x505B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x505C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x505D,INVALC,0x505E,0x505F,INVALC,0x5060,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5061,0x5062,INVALC,INVALC,INVALC, INVALC,0x5063,INVALC,0x5064,0x5065,0x5066,0x5067,INVALC, 0x5068,INVALC,INVALC,0x5069,0x506A,INVALC,INVALC,INVALC, INVALC,0x506B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x506C,0x506D,INVALC,0x506E,INVALC,INVALC,INVALC,0x506F, INVALC,0x5070,INVALC,INVALC,0x5071,INVALC,INVALC,INVALC, 0x5072,INVALC,INVALC,0x5073,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5074,INVALC,0x5075,INVALC,INVALC,0x5076, 0x5077,INVALC,0x5078,INVALC,INVALC,INVALC,INVALC,0x5079, INVALC,INVALC,INVALC,INVALC,0x507A,INVALC,0x507B,INVALC, INVALC,INVALC,0x507C,INVALC,INVALC,0x507D,0x507E,INVALC, 0x5121,INVALC,0x5122,INVALC,INVALC,0x5123,INVALC,INVALC, INVALC,INVALC,0x5124,0x5125,INVALC,0x5126,INVALC,INVALC, INVALC,0x5127,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5128,INVALC,INVALC,INVALC,0x5129,INVALC,INVALC,INVALC, /* Block 123, Array index 0x3300 */ INVALC,INVALC,0x512A,0x512B,INVALC,INVALC,INVALC,0x512C, INVALC,0x512D,0x512E,INVALC,0x512F,INVALC,INVALC,INVALC, INVALC,0x5130,INVALC,INVALC,INVALC,0x5131,INVALC,INVALC, INVALC,INVALC,INVALC,0x5132,INVALC,INVALC,0x5133,INVALC, INVALC,0x5134,INVALC,INVALC,INVALC,INVALC,INVALC,0x5135, INVALC,INVALC,INVALC,0x5136,INVALC,0x5137,INVALC,0x5138, 0x5139,INVALC,INVALC,INVALC,0x513A,0x513B,INVALC,INVALC, 0x513C,0x513D,0x513E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x513F,0x5140,INVALC,0x5141, 0x5142,INVALC,INVALC,INVALC,0x5143,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5144,0x5145,INVALC, INVALC,0x5146,INVALC,INVALC,0x5147,0x5148,INVALC,0x5149, 0x514A,INVALC,INVALC,INVALC,INVALC,0x514B,INVALC,0x514C, INVALC,INVALC,0x514D,INVALC,INVALC,0x514E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x514F,INVALC,INVALC, 0x5150,INVALC,INVALC,INVALC,INVALC,INVALC,0x5151,INVALC, 0x5152,INVALC,0x5153,INVALC,INVALC,0x5154,0x5155,INVALC, INVALC,INVALC,0x5156,0x5157,INVALC,INVALC,INVALC,INVALC, 0x5158,0x5159,INVALC,INVALC,0x515A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x515B,INVALC, 0x515C,INVALC,INVALC,0x515D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x515E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x515F,INVALC,0x5160,INVALC,INVALC, INVALC,0x5161,INVALC,0x5162,0x5163,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5164,INVALC, INVALC,0x5165,INVALC,INVALC,0x5166,INVALC,0x5167,INVALC, INVALC,0x5168,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5169,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x516A,0x516B,INVALC,0x516C,0x516D,INVALC,INVALC,INVALC, INVALC,0x516E,INVALC,INVALC,0x516F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5170,INVALC,0x5171,0x5172,INVALC, /* Block 124, Array index 0x3400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5173, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5174,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5175, INVALC,INVALC,INVALC,0x5176,INVALC,INVALC,INVALC,0x5177, INVALC,0x5178,0x5179,0x517A,INVALC,0x517B,0x517C,0x517D, 0x517E,0x5221,INVALC,INVALC,0x5222,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5223,INVALC,0x5224, 0x5225,0x5226,INVALC,INVALC,INVALC,INVALC,INVALC,0x5227, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5228,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5229,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x522A,INVALC,INVALC,INVALC,0x522B,INVALC,0x522C,INVALC, INVALC,0x522D,0x522E,INVALC,INVALC,0x522F,INVALC,0x5230, INVALC,INVALC,0x5231,0x5232,INVALC,INVALC,INVALC,0x5233, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5234,INVALC,INVALC,INVALC, INVALC,0x5235,INVALC,INVALC,INVALC,INVALC,0x5236,INVALC, 0x5237,0x5238,INVALC,INVALC,INVALC,INVALC,0x5239,INVALC, INVALC,INVALC,INVALC,0x523A,INVALC,INVALC,0x523B,INVALC, 0x523C,INVALC,INVALC,INVALC,INVALC,0x523D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x523E,INVALC,INVALC,0x523F, 0x5240,INVALC,0x5241,INVALC,INVALC,0x5242,0x5243,INVALC, INVALC,INVALC,0x5244,0x5245,0x5246,0x5247,INVALC,INVALC, INVALC,INVALC,0x5248,INVALC,INVALC,0x5249,INVALC,INVALC, 0x524A,INVALC,0x524B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x524C,INVALC,0x524D,0x524E, INVALC,0x524F,0x5250,0x5251,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5252,INVALC,0x5253,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5254,INVALC,0x5255,0x5256,INVALC,INVALC, 0x5257,0x5258,0x5259,INVALC,0x525A,INVALC,0x525B,INVALC, /* Block 125, Array index 0x3500 */ INVALC,0x525C,0x525D,0x525E,0x525F,INVALC,0x5260,INVALC, INVALC,0x5261,INVALC,0x5262,0x5263,INVALC,0x5264,0x5265, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5266,INVALC,0x5267,INVALC,INVALC,INVALC,INVALC, 0x5268,INVALC,INVALC,INVALC,INVALC,0x5269,0x526A,INVALC, 0x526B,INVALC,INVALC,INVALC,0x526C,INVALC,INVALC,INVALC, INVALC,0x526D,INVALC,0x526E,0x526F,INVALC,0x5270,INVALC, INVALC,0x5271,0x5272,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5273,INVALC, INVALC,INVALC,0x5274,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5276,0x5277,0x5278,INVALC,0x5275,INVALC,INVALC, INVALC,0x5279,0x527A,0x527B,0x527C,0x527D,0x527E,INVALC, INVALC,0x5321,INVALC,0x5322,INVALC,INVALC,INVALC,0x5323, INVALC,0x5324,INVALC,INVALC,INVALC,0x5325,0x5326,INVALC, 0x5327,INVALC,0x5328,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5329,INVALC,INVALC,0x532A,0x532B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x532C,0x532D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x532E, INVALC,INVALC,INVALC,INVALC,0x532F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5330,INVALC, 0x5331,INVALC,INVALC,INVALC,INVALC,INVALC,0x5332,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5333,INVALC,INVALC,INVALC,INVALC,INVALC,0x5334,0x5335, INVALC,INVALC,0x5336,0x5337,0x5338,INVALC,INVALC,0x5339, INVALC,INVALC,INVALC,INVALC,0x533A,INVALC,INVALC,0x533B, 0x533C,0x533D,INVALC,INVALC,INVALC,0x533E,INVALC,0x533F, INVALC,INVALC,INVALC,0x5340,0x5341,0x5342,INVALC,0x5343, INVALC,0x5344,0x5345,INVALC,INVALC,0x5346,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5347,INVALC, INVALC,0x5348,INVALC,0x5349,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x534A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 126, Array index 0x3600 */ INVALC,INVALC,INVALC,0x534B,INVALC,INVALC,INVALC,0x534C, 0x534D,0x534E,INVALC,INVALC,INVALC,INVALC,INVALC,0x534F, INVALC,0x5350,0x5351,0x5352,INVALC,INVALC,0x5353,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5354,0x5355,INVALC, INVALC,INVALC,INVALC,0x5356,INVALC,INVALC,0x5357,INVALC, INVALC,INVALC,0x5358,INVALC,INVALC,0x5359,INVALC,INVALC, INVALC,0x535A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x535B,0x535C,0x535D,INVALC, 0x535E,0x535F,INVALC,INVALC,INVALC,INVALC,INVALC,0x5360, 0x5361,INVALC,INVALC,INVALC,INVALC,0x5362,INVALC,INVALC, INVALC,0x5363,INVALC,0x5364,INVALC,INVALC,INVALC,0x5365, INVALC,0x5366,0x5367,INVALC,0x5368,0x5369,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x536A,INVALC,0x536B, INVALC,INVALC,0x536C,INVALC,INVALC,INVALC,INVALC,INVALC, 0x536D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x536E,INVALC,0x536F,0x5370,INVALC,INVALC,INVALC,0x5371, INVALC,0x5372,0x5373,0x5374,INVALC,0x5375,0x5376,INVALC, 0x5377,INVALC,INVALC,0x5378,0x5379,0x537A,INVALC,INVALC, INVALC,0x537B,INVALC,INVALC,INVALC,INVALC,0x537C,0x537D, INVALC,INVALC,INVALC,INVALC,INVALC,0x537E,0x5421,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5422,0x5423, INVALC,INVALC,0x5424,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5425,INVALC,INVALC,0x5426,0x5427, INVALC,0x5428,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5429,0x542A,0x542B,0x542C,0x542D,INVALC, INVALC,INVALC,INVALC,INVALC,0x542E,0x542F,0x5430,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5431, INVALC,0x5432,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5434,INVALC,INVALC,0x5435,0x5436,INVALC, INVALC,INVALC,0x5437,0x5438,INVALC,0x5439,INVALC,INVALC, INVALC,0x543A,INVALC,INVALC,INVALC,0x543B,0x543C,INVALC, INVALC,0x543D,0x543E,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 127, Array index 0x3700 */ 0x5433,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x543F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5440,0x5441,INVALC,INVALC,INVALC,0x5442,INVALC,0x5443, INVALC,INVALC,INVALC,INVALC,0x5444,0x5445,INVALC,INVALC, 0x5446,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5447, 0x5448,INVALC,INVALC,INVALC,0x5449,0x544A,INVALC,0x544B, INVALC,INVALC,INVALC,0x544C,INVALC,INVALC,0x544D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x544E, INVALC,INVALC,INVALC,INVALC,0x544F,0x5450,INVALC,0x5451, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5452,INVALC, 0x5453,INVALC,0x5454,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5455,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5456, INVALC,0x5457,0x5458,INVALC,INVALC,0x5459,INVALC,INVALC, INVALC,INVALC,INVALC,0x545A,INVALC,INVALC,0x545B,0x545C, INVALC,INVALC,INVALC,0x545D,INVALC,INVALC,INVALC,INVALC, 0x545E,INVALC,INVALC,INVALC,INVALC,INVALC,0x545F,INVALC, INVALC,0x5460,INVALC,INVALC,INVALC,INVALC,0x5461,0x5462, INVALC,INVALC,0x5463,INVALC,INVALC,0x5464,INVALC,INVALC, INVALC,0x5465,INVALC,INVALC,INVALC,0x5466,INVALC,INVALC, 0x5467,INVALC,0x5468,INVALC,INVALC,0x5469,0x546A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 128, Array index 0x3800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x546C,0x546B,0x546D,0x546E,0x546F, INVALC,INVALC,INVALC,0x5470,0x5471,INVALC,INVALC,0x5472, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5473, INVALC,INVALC,0x5474,0x5475,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5476,0x5477,0x5478,INVALC,INVALC, INVALC,0x5479,INVALC,0x547A,0x547B,0x547C,0x547D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x547E,INVALC,INVALC, INVALC,0x5521,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5522,0x5523,0x5524, 0x5525,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5526,INVALC,0x5527,INVALC,0x5528, 0x5529,0x552A,INVALC,INVALC,INVALC,INVALC,0x552B,0x552C, INVALC,INVALC,INVALC,INVALC,0x552D,INVALC,INVALC,INVALC, INVALC,0x552E,0x552F,INVALC,INVALC,INVALC,0x5530,INVALC, INVALC,INVALC,0x5531,INVALC,INVALC,0x5532,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5533,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5534,INVALC,INVALC,0x5535, 0x5536,INVALC,INVALC,0x5537,INVALC,INVALC,INVALC,INVALC, 0x5538,INVALC,INVALC,INVALC,INVALC,INVALC,0x5539,0x553A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x553B,INVALC,INVALC,INVALC,0x553C, INVALC,INVALC,INVALC,0x553D,INVALC,0x553E,INVALC,INVALC, 0x553F,INVALC,INVALC,INVALC,0x5540,INVALC,0x5541,0x5542, INVALC,INVALC,0x5543,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5544,INVALC,INVALC,0x5545,0x5546,0x5547, /* Block 129, Array index 0x3900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5548, 0x5549,INVALC,0x554A,INVALC,INVALC,0x554B,0x554C,0x554D, INVALC,0x554E,INVALC,0x554F,0x5550,INVALC,0x5551,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5552,0x5553,0x5554, 0x5555,INVALC,INVALC,INVALC,0x5556,INVALC,0x5557,INVALC, INVALC,INVALC,INVALC,INVALC,0x5558,INVALC,0x5559,INVALC, 0x555A,INVALC,INVALC,INVALC,0x555B,0x555C,INVALC,0x555D, INVALC,0x555E,0x555F,INVALC,0x5560,INVALC,0x5561,INVALC, 0x5562,INVALC,INVALC,INVALC,0x5563,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5564,INVALC,INVALC,INVALC,0x5565,INVALC,0x5566,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5567,INVALC,INVALC, INVALC,0x5568,INVALC,INVALC,INVALC,0x5569,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x556A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x556B,INVALC,INVALC,INVALC,INVALC,INVALC,0x556C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x556D,INVALC,0x556E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x556F,0x5570, INVALC,INVALC,INVALC,0x5571,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5572,0x5573,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5574,INVALC,INVALC,INVALC,INVALC,0x5575,INVALC,0x5576, INVALC,INVALC,0x5577,INVALC,0x5578,0x5579,INVALC,0x557A, 0x557B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x557C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x557D,0x557E,INVALC, 0x5621,INVALC,0x5622,0x5623,INVALC,INVALC,0x5624,INVALC, INVALC,0x5625,0x5626,INVALC,INVALC,INVALC,0x5627,INVALC, /* Block 130, Array index 0x3A00 */ INVALC,INVALC,INVALC,0x5628,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5629,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x562A,0x562B, 0x562C,INVALC,INVALC,INVALC,0x562D,INVALC,0x562E,INVALC, 0x562F,INVALC,INVALC,INVALC,0x5630,INVALC,INVALC,0x5631, INVALC,INVALC,INVALC,INVALC,0x5632,INVALC,INVALC,INVALC, 0x5633,INVALC,INVALC,INVALC,INVALC,0x5634,INVALC,INVALC, INVALC,INVALC,0x5635,INVALC,0x5636,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5637,INVALC,0x5638, INVALC,INVALC,0x5639,INVALC,0x563A,INVALC,INVALC,INVALC, INVALC,INVALC,0x563B,INVALC,INVALC,INVALC,INVALC,0x563C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x563D,0x563E,INVALC,INVALC,INVALC,INVALC,INVALC,0x563F, 0x5640,0x5641,INVALC,INVALC,INVALC,0x5642,INVALC,0x5643, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5644, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5645,INVALC,INVALC,0x5647,0x5648,0x5649,INVALC, INVALC,INVALC,INVALC,0x564A,INVALC,INVALC,0x564B,INVALC, 0x5646,INVALC,INVALC,INVALC,INVALC,INVALC,0x564C,INVALC, 0x564D,INVALC,INVALC,0x564E,INVALC,INVALC,0x564F,INVALC, INVALC,INVALC,0x5650,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5651,INVALC, INVALC,INVALC,0x5652,INVALC,0x5653,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5654,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5656,INVALC,0x5657,INVALC,INVALC, INVALC,INVALC,0x5658,0x5655,INVALC,INVALC,0x5659,0x565A, INVALC,INVALC,INVALC,INVALC,INVALC,0x565B,INVALC,0x565C, INVALC,INVALC,INVALC,0x565D,INVALC,0x565E,0x565F,INVALC, INVALC,0x5660,INVALC,INVALC,0x5661,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5662,0x5663,INVALC,INVALC,INVALC, 0x5664,0x5665,0x5666,INVALC,INVALC,0x5667,0x5668,INVALC, 0x5669,0x566A,INVALC,INVALC,INVALC,0x566B,INVALC,0x566C, /* Block 131, Array index 0x3B00 */ 0x566D,INVALC,INVALC,0x566E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x566F, INVALC,INVALC,INVALC,0x5670,0x5671,INVALC,INVALC,INVALC, INVALC,0x5672,0x5673,INVALC,INVALC,0x5674,INVALC,INVALC, INVALC,0x5675,0x5676,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5677,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5678,INVALC,0x5679,INVALC,INVALC,INVALC, INVALC,INVALC,0x567A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x567B,0x567C,0x567D,0x567E,INVALC, INVALC,INVALC,INVALC,0x5721,INVALC,INVALC,0x5722,0x5723, INVALC,0x5724,INVALC,INVALC,INVALC,INVALC,0x5725,INVALC, INVALC,INVALC,INVALC,INVALC,0x5726,INVALC,INVALC,INVALC, 0x5727,INVALC,INVALC,0x5728,INVALC,INVALC,INVALC,0x5729, INVALC,INVALC,INVALC,INVALC,INVALC,0x572A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x572B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x572C,INVALC,0x572D,INVALC,0x572E, 0x572F,0x5730,INVALC,0x5731,0x5732,INVALC,INVALC,0x5733, INVALC,0x5734,0x5735,INVALC,INVALC,INVALC,0x5736,INVALC, INVALC,0x5737,INVALC,INVALC,0x5738,INVALC,0x5739,INVALC, 0x573A,INVALC,0x573B,0x573C,INVALC,INVALC,INVALC,INVALC, 0x573D,0x573E,INVALC,0x573F,0x5740,INVALC,INVALC,0x5741, 0x5742,0x5743,0x5744,INVALC,INVALC,INVALC,0x5745,INVALC, 0x5746,INVALC,0x5747,INVALC,0x5748,INVALC,INVALC,0x5749, INVALC,INVALC,0x574A,INVALC,0x574B,INVALC,0x574C,0x574D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x574E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x574F,INVALC,INVALC,INVALC,INVALC,0x5750,INVALC,INVALC, INVALC,INVALC,0x5751,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5752,INVALC,0x5753,INVALC,0x5754,INVALC,INVALC,INVALC, 0x5755,INVALC,0x5756,INVALC,INVALC,0x5757,INVALC,0x5758, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5759,0x575A, INVALC,INVALC,INVALC,INVALC,INVALC,0x575B,0x575C,INVALC, /* Block 132, Array index 0x3C00 */ 0x575D,0x575E,INVALC,INVALC,INVALC,INVALC,INVALC,0x575F, 0x5760,INVALC,0x5761,0x5762,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5764,INVALC,0x5765,0x5766,0x5767, INVALC,0x5768,0x5769,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x576A,0x576B,0x576C,INVALC, 0x576D,INVALC,INVALC,0x576E,INVALC,INVALC,INVALC,0x576F, INVALC,INVALC,0x5770,INVALC,0x5771,0x5772,INVALC,INVALC, INVALC,INVALC,0x5773,0x5774,0x5775,INVALC,INVALC,0x5776, INVALC,INVALC,INVALC,INVALC,INVALC,0x5777,0x5778,INVALC, INVALC,0x5779,INVALC,0x583E,0x5763,0x577A,0x577B,0x577C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x577D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x577E,INVALC,INVALC,INVALC,INVALC,0x5821,INVALC,0x5822, 0x5823,INVALC,0x5824,INVALC,0x5825,INVALC,0x5826,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5827,INVALC,INVALC, INVALC,INVALC,0x5828,INVALC,0x5829,0x582A,INVALC,INVALC, 0x582B,0x582C,INVALC,0x582D,0x582E,0x582F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5830,0x5831, INVALC,0x5832,INVALC,INVALC,0x5833,0x584C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5834,0x5835, 0x5836,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5837, INVALC,0x5838,INVALC,INVALC,INVALC,INVALC,INVALC,0x5839, 0x583A,0x583B,INVALC,INVALC,0x583C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x583D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x583F,INVALC,0x5840,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5841,INVALC, 0x5842,0x5843,INVALC,INVALC,0x5844,INVALC,INVALC,INVALC, /* Block 133, Array index 0x3D00 */ INVALC,0x5845,INVALC,INVALC,INVALC,INVALC,0x5846,INVALC, INVALC,INVALC,0x5847,INVALC,INVALC,INVALC,INVALC,0x5848, INVALC,0x5849,INVALC,INVALC,INVALC,0x584A,INVALC,INVALC, INVALC,0x584B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x584D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x584E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x584F,INVALC,0x5850, 0x5851,INVALC,0x5852,INVALC,INVALC,0x5853,INVALC,0x5854, INVALC,0x5855,0x5856,INVALC,INVALC,INVALC,0x5857,INVALC, 0x5858,0x5859,0x585A,INVALC,0x585B,INVALC,INVALC,INVALC, 0x585C,INVALC,INVALC,INVALC,0x585D,0x585E,INVALC,0x585F, INVALC,INVALC,0x5860,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5861,INVALC,INVALC,0x5862,0x5863,INVALC,0x5864,INVALC, 0x5865,INVALC,INVALC,INVALC,0x5866,0x5867,INVALC,INVALC, INVALC,0x5868,INVALC,INVALC,INVALC,0x5869,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x586A,0x586B,INVALC,0x586C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x586D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x586E,INVALC, 0x586F,0x5870,0x5871,INVALC,INVALC,INVALC,INVALC,0x5872, INVALC,0x5873,INVALC,INVALC,0x5874,INVALC,INVALC,INVALC, INVALC,INVALC,0x5875,INVALC,INVALC,0x5876,0x5877,INVALC, 0x5878,INVALC,0x5879,INVALC,INVALC,INVALC,INVALC,0x587A, 0x587B,INVALC,INVALC,INVALC,0x587C,INVALC,INVALC,0x587D, INVALC,INVALC,INVALC,0x587E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5921,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5922, INVALC,INVALC,0x5923,INVALC,INVALC,INVALC,INVALC,0x5924, 0x5925,0x5926,0x5927,INVALC,INVALC,INVALC,INVALC,0x5928, INVALC,INVALC,0x592A,0x592B,INVALC,0x592C,INVALC,INVALC, /* Block 134, Array index 0x3E00 */ INVALC,INVALC,0x592D,0x592E,INVALC,INVALC,INVALC,0x592F, INVALC,INVALC,INVALC,INVALC,0x5930,INVALC,0x5931,INVALC, 0x5932,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5933,INVALC,0x5934,INVALC, INVALC,INVALC,0x5935,0x5936,0x5937,0x5938,INVALC,0x5939, INVALC,INVALC,0x593A,0x593B,INVALC,INVALC,INVALC,0x593C, INVALC,INVALC,0x5929,0x593D,0x593E,INVALC,0x593F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5940, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5941,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5942, 0x5943,0x5944,0x5945,0x5946,INVALC,INVALC,0x5947,INVALC, INVALC,0x5948,INVALC,INVALC,0x5949,0x594A,0x594B,0x594C, 0x594D,0x594E,0x594F,INVALC,0x5950,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5951,INVALC,INVALC,INVALC,0x5952, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5953,0x5954,0x5955,INVALC,0x5956,INVALC,0x5957, INVALC,0x5958,INVALC,INVALC,INVALC,0x5959,0x595A,INVALC, INVALC,0x595B,INVALC,0x595C,0x595D,INVALC,INVALC,0x595E, INVALC,INVALC,INVALC,0x595F,INVALC,INVALC,INVALC,INVALC, 0x5960,INVALC,INVALC,INVALC,INVALC,0x5961,INVALC,0x5962, 0x5963,INVALC,0x5964,INVALC,INVALC,0x5965,INVALC,0x5966, INVALC,INVALC,INVALC,INVALC,INVALC,0x5974,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5967,INVALC,0x5968,0x5969, 0x596A,INVALC,INVALC,INVALC,0x596B,0x596C,0x596D,0x596E, INVALC,INVALC,0x596F,INVALC,INVALC,INVALC,INVALC,0x5970, INVALC,INVALC,0x5971,0x5972,INVALC,INVALC,0x5973,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5975,INVALC,0x5976,INVALC,INVALC,INVALC,INVALC,0x5977, 0x5978,INVALC,INVALC,INVALC,INVALC,INVALC,0x5979,INVALC, 0x597A,INVALC,INVALC,INVALC,INVALC,0x597B,INVALC,INVALC, INVALC,INVALC,INVALC,0x597C,INVALC,INVALC,0x597D,INVALC, INVALC,INVALC,INVALC,INVALC,0x597E,INVALC,INVALC,0x5A21, /* Block 135, Array index 0x3F00 */ 0x5A22,INVALC,INVALC,INVALC,0x5A23,0x5A24,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5A25,0x5A26,INVALC, 0x5A27,0x5A28,0x5A29,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5A2A,0x5A2B,INVALC,0x5A2C,INVALC,INVALC,0x5A2D,INVALC, INVALC,0x5A2E,INVALC,INVALC,INVALC,INVALC,INVALC,0x5A2F, INVALC,0x5A30,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5A31,INVALC, 0x5A32,INVALC,0x5A33,INVALC,0x5A34,0x5A35,INVALC,INVALC, 0x5A36,0x3866,0x5A37,INVALC,INVALC,INVALC,0x5A38,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5A39,0x5A3A,INVALC,INVALC,0x5A3B,0x5A3C, 0x5A3D,0x5A3E,INVALC,INVALC,INVALC,0x5A3F,INVALC,INVALC, 0x5A40,0x5A41,0x5A42,0x5A43,0x5A44,INVALC,INVALC,INVALC, INVALC,0x5A45,INVALC,INVALC,0x5A46,INVALC,INVALC,0x5A47, INVALC,INVALC,INVALC,INVALC,INVALC,0x5A48,0x5A49,0x5A4A, INVALC,INVALC,0x5A4B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5A6D,INVALC,INVALC,INVALC,INVALC,0x5A4C,INVALC,INVALC, INVALC,0x5A4D,INVALC,INVALC,INVALC,INVALC,0x5A4E,INVALC, 0x5A4F,INVALC,0x5A50,INVALC,0x5A51,INVALC,INVALC,INVALC, INVALC,0x5A52,INVALC,INVALC,INVALC,INVALC,0x5A53,0x5A54, 0x5A55,INVALC,INVALC,INVALC,INVALC,0x5A56,INVALC,INVALC, INVALC,0x5A57,INVALC,0x5A58,0x5A59,0x5A5A,INVALC,0x5A5B, 0x5A5C,0x5A5D,INVALC,INVALC,INVALC,INVALC,INVALC,0x5A5E, 0x5A5F,0x5A60,INVALC,0x5A61,INVALC,0x5A62,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5A63,0x5A64,INVALC,INVALC,0x5A65,INVALC,0x5A66, INVALC,INVALC,0x5A67,INVALC,0x5A68,INVALC,INVALC,INVALC, 0x5A69,INVALC,INVALC,0x5A6A,INVALC,0x5A6B,INVALC,0x5A6C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5A6E,INVALC,0x5A6F,0x5A70,INVALC,INVALC, /* Block 136, Array index 0x4000 */ INVALC,INVALC,INVALC,INVALC,0x5A71,0x5A72,INVALC,0x5A73, INVALC,INVALC,INVALC,0x5A74,INVALC,INVALC,0x5A75,0x5A76, 0x5A77,INVALC,INVALC,0x5A78,0x5A79,INVALC,INVALC,INVALC, INVALC,0x5A7A,INVALC,INVALC,INVALC,INVALC,0x5A7B,0x5A7C, INVALC,0x5A7D,INVALC,0x5A7E,INVALC,INVALC,INVALC,INVALC, 0x5B21,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B22,0x5B23, INVALC,0x5B24,0x5B25,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5B26,0x5B27,INVALC,0x5B28,0x5B29,0x5B2A,INVALC, 0x5B2B,INVALC,INVALC,0x5B2C,INVALC,0x5B2D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5B2E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5B2F,INVALC,INVALC,INVALC,INVALC,0x5B30,INVALC,INVALC, INVALC,0x5B31,INVALC,INVALC,0x5B32,0x5B33,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B34, INVALC,0x5B35,0x5B36,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5B37,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5B38,0x5B39,0x5B3A,0x5B3B,0x5B3C, 0x5B3D,0x5B3E,INVALC,0x5B3F,0x5B40,INVALC,INVALC,INVALC, 0x5B41,INVALC,INVALC,0x5B42,INVALC,0x5B43,INVALC,0x5B44, 0x5B45,0x5B46,INVALC,INVALC,INVALC,INVALC,0x5B47,INVALC, 0x5B48,INVALC,INVALC,0x5B49,INVALC,INVALC,INVALC,0x5B4A, INVALC,INVALC,INVALC,INVALC,0x5B4B,0x5B4C,0x5B4D,INVALC, INVALC,0x5B4E,INVALC,INVALC,INVALC,0x5B4F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B50,0x5B51, INVALC,0x5B52,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5B53,0x5B54,0x5B55,INVALC,INVALC,INVALC,0x5B56,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5B57,0x5B58,INVALC, INVALC,0x5B59,0x5B5A,INVALC,0x5B5B,INVALC,INVALC,0x5B5C, INVALC,INVALC,0x5B5D,0x5B5E,0x5B5F,INVALC,INVALC,INVALC, INVALC,INVALC,0x5B60,0x5B61,INVALC,0x5B62,INVALC,INVALC, INVALC,0x5B63,INVALC,0x5B64,INVALC,INVALC,INVALC,INVALC, 0x5B65,INVALC,0x5B66,INVALC,INVALC,INVALC,INVALC,0x5B67, /* Block 137, Array index 0x4100 */ INVALC,0x5B68,INVALC,0x5B69,INVALC,INVALC,0x5B6A,INVALC, INVALC,0x5B6B,0x5B6C,0x5B6D,INVALC,INVALC,INVALC,INVALC, 0x5B6E,INVALC,0x5B70,0x5B71,0x5B72,INVALC,INVALC,INVALC, 0x5B73,0x5B6F,0x5B74,0x5B75,0x5B76,INVALC,0x5B77,0x5B78, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5B79,INVALC,INVALC,INVALC,INVALC,0x5B7A,0x5B7B,INVALC, 0x5B7C,INVALC,0x5B7D,INVALC,INVALC,0x5B7E,INVALC,INVALC, INVALC,INVALC,0x5C21,INVALC,0x5C22,INVALC,INVALC,INVALC, INVALC,0x5C23,INVALC,0x5C24,INVALC,0x5C25,INVALC,INVALC, 0x5C26,0x5C27,0x5C28,0x5C29,INVALC,INVALC,0x5C2A,INVALC, INVALC,0x5C2B,INVALC,INVALC,INVALC,0x5C2C,0x5C2D,INVALC, 0x5C2E,INVALC,0x5C2F,INVALC,0x5C30,INVALC,INVALC,0x5C31, 0x5C32,INVALC,INVALC,INVALC,0x5C33,INVALC,INVALC,INVALC, INVALC,0x5C34,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5C35,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5C36,INVALC,0x5C37,INVALC,INVALC,INVALC,INVALC, 0x5C38,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5C39,INVALC,0x5C3A,0x5C3B,0x5C3C,INVALC,INVALC,0x5C3D, 0x5C3E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5C3F,INVALC,0x5C40,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5C41,INVALC,INVALC,0x5C42,0x5C43,INVALC, 0x5C44,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5C45,0x5C46,0x5C47,0x5C48,0x5C49,INVALC, INVALC,0x5C4A,0x5C4B,0x5C4C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5C4D,INVALC,INVALC,0x5C4E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C4F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C50, 0x5C51,0x5C52,INVALC,INVALC,INVALC,0x5C53,INVALC,0x5C54, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 138, Array index 0x4200 */ INVALC,0x5C55,INVALC,INVALC,INVALC,INVALC,0x5C56,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5C57,0x5C58,0x5C59, INVALC,INVALC,INVALC,INVALC,INVALC,0x5C5A,0x5C5B,INVALC, 0x5C5C,0x5C5D,0x5C5E,INVALC,0x5C5F,INVALC,INVALC,INVALC, 0x5C60,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C61,0x5C62, 0x5C63,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5C64,0x5C65,0x5C66,INVALC,INVALC,0x5C67,INVALC,INVALC, INVALC,0x5C68,0x5C69,INVALC,INVALC,INVALC,0x5C6A,INVALC, 0x5C6B,INVALC,0x5C6C,INVALC,INVALC,0x5C6D,0x5C6E,INVALC, INVALC,0x5C6F,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C70, INVALC,INVALC,0x5C71,INVALC,INVALC,INVALC,INVALC,0x5C72, INVALC,INVALC,0x5C73,0x5C74,0x5C75,INVALC,INVALC,INVALC, INVALC,0x5C76,0x5C77,0x5C78,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5C79,INVALC,INVALC,0x5C7A,INVALC, 0x5C7B,INVALC,INVALC,0x5C7C,INVALC,0x5C7D,INVALC,INVALC, INVALC,INVALC,0x5C7E,0x5D21,0x5D22,0x5D23,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5D24,INVALC,INVALC,INVALC,0x5D25,INVALC,INVALC, 0x5D26,INVALC,INVALC,INVALC,0x5D27,0x5D28,INVALC,INVALC, INVALC,INVALC,INVALC,0x5D29,0x5D2A,INVALC,INVALC,0x5D2B, 0x5D2C,INVALC,INVALC,INVALC,INVALC,0x5D2D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5D2E,INVALC,INVALC,INVALC,0x5D2F,0x5D30,0x5D31,0x5D32, INVALC,INVALC,INVALC,INVALC,0x5D33,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5D34,0x5D35,0x5D36,0x5D37, 0x5D38,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5D39,INVALC,INVALC, INVALC,0x5D3A,INVALC,0x5D3B,INVALC,0x5D3C,INVALC,INVALC, INVALC,0x5D3D,INVALC,0x5D3E,INVALC,INVALC,0x5D3F,INVALC, INVALC,0x5D40,INVALC,INVALC,INVALC,0x5D41,INVALC,0x5D42, /* Block 139, Array index 0x4300 */ INVALC,INVALC,INVALC,INVALC,0x5D43,0x5D44,INVALC,0x5D45, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5D46, INVALC,0x5D47,0x5D48,INVALC,0x5D49,0x5D4A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5D4B,INVALC, 0x5D4C,INVALC,0x5D4D,INVALC,0x5D4E,INVALC,0x5D4F,INVALC, INVALC,INVALC,INVALC,0x5D50,0x5D51,INVALC,INVALC,0x5D52, INVALC,INVALC,INVALC,INVALC,INVALC,0x5D53,INVALC,0x5D54, INVALC,INVALC,INVALC,INVALC,INVALC,0x5D55,0x5D56,INVALC, 0x5D57,INVALC,INVALC,0x5D58,INVALC,0x5D59,INVALC,0x5D5A, INVALC,0x5D5B,INVALC,INVALC,INVALC,0x5D5C,0x5D5D,INVALC, INVALC,INVALC,INVALC,0x5D5E,INVALC,INVALC,0x5D5F,0x5D60, 0x5D61,INVALC,INVALC,INVALC,0x5D62,0x5D63,INVALC,INVALC, INVALC,0x5D64,INVALC,INVALC,INVALC,0x5D65,INVALC,0x5D66, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5D67,0x5D68,0x5D69, INVALC,0x5D6A,0x5D6B,0x5D6C,INVALC,INVALC,0x5D6D,0x5D6E, 0x5D6F,INVALC,INVALC,0x5D70,INVALC,INVALC,0x5D71,INVALC, INVALC,INVALC,INVALC,0x5D72,INVALC,INVALC,INVALC,0x5D73, 0x5D74,INVALC,0x5D75,INVALC,INVALC,INVALC,0x5D76,0x5D77, INVALC,0x5D78,INVALC,INVALC,INVALC,INVALC,INVALC,0x5D79, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5D7A, INVALC,0x5D7B,INVALC,INVALC,INVALC,INVALC,0x5D7C,0x5D7D, INVALC,INVALC,INVALC,0x5D7E,INVALC,INVALC,0x5E21,0x5E22, INVALC,INVALC,INVALC,0x5E23,INVALC,INVALC,0x5E24,INVALC, INVALC,INVALC,INVALC,0x5E25,INVALC,INVALC,0x5E26,INVALC, 0x5E27,0x5E28,0x5E29,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5E2A,INVALC,0x5E2B,0x5E2C,0x5E2D,INVALC,0x5E2E, INVALC,INVALC,INVALC,INVALC,INVALC,0x5E2F,INVALC,0x5E30, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5E31,INVALC,INVALC,INVALC, 0x5E32,INVALC,INVALC,INVALC,0x5E33,0x5E34,0x5E35,INVALC, INVALC,INVALC,INVALC,INVALC,0x5E36,INVALC,INVALC,0x5E37, /* Block 140, Array index 0x4400 */ INVALC,INVALC,INVALC,INVALC,INVALC,0x5E38,0x5E39,INVALC, INVALC,INVALC,0x5E3F,0x5E3A,INVALC,INVALC,INVALC,INVALC, INVALC,0x5E3B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5E3C,INVALC,0x5E3D,0x5E3E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5E40,INVALC,INVALC, 0x5E41,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5E42, INVALC,INVALC,INVALC,INVALC,0x5E43,INVALC,INVALC,INVALC, INVALC,INVALC,0x5E44,0x5E45,0x5E46,0x5E47,0x5E48,INVALC, 0x5E49,INVALC,INVALC,INVALC,INVALC,0x5E4E,INVALC,INVALC, INVALC,INVALC,0x5E4A,0x5E4B,0x5E4C,INVALC,INVALC,INVALC, INVALC,0x5E4D,INVALC,INVALC,INVALC,INVALC,0x5E4F,INVALC, INVALC,INVALC,INVALC,0x5E50,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5E51,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5E52,INVALC, 0x5E53,0x5E54,INVALC,INVALC,0x5E55,INVALC,0x5E56,INVALC, INVALC,0x5E57,INVALC,INVALC,0x5E58,0x5E59,INVALC,INVALC, INVALC,INVALC,INVALC,0x5E5A,INVALC,0x5E5B,INVALC,0x5E5C, INVALC,INVALC,INVALC,INVALC,0x5E5D,0x5E5E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5E5F,INVALC,0x5E60,0x5E61, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 141, Array index 0x4500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5E62,0x5E63,INVALC,INVALC,INVALC,0x5E64,0x5E65,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5E66,INVALC,0x5E67, INVALC,0x5E68,INVALC,0x5E69,INVALC,INVALC,INVALC,0x5E6A, INVALC,0x5E6B,INVALC,0x5E6C,0x5E6D,INVALC,INVALC,0x5E6E, 0x5E6F,0x5E72,INVALC,0x5E70,INVALC,0x5E71,INVALC,INVALC, INVALC,INVALC,INVALC,0x5E73,0x5E74,INVALC,0x5E75,INVALC, 0x5E76,0x5E77,INVALC,INVALC,INVALC,0x5E78,INVALC,INVALC, INVALC,INVALC,INVALC,0x5E79,INVALC,0x5E7A,0x5E7B,INVALC, INVALC,INVALC,INVALC,0x5E7C,INVALC,INVALC,0x5E7D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5E7E,0x5F21, INVALC,INVALC,INVALC,0x5F22,INVALC,INVALC,INVALC,INVALC, 0x5F23,INVALC,0x5F24,0x5F25,INVALC,INVALC,INVALC,INVALC, INVALC,0x5F26,INVALC,0x5F27,0x5F28,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5F29,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5F2A,0x5F2B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5F2C,0x5F2D,INVALC, INVALC,0x5F2E,INVALC,0x5F2F,INVALC,INVALC,INVALC,0x5F30, INVALC,INVALC,INVALC,INVALC,INVALC,0x5F32,0x5F31,INVALC, INVALC,0x5F33,INVALC,INVALC,INVALC,0x5F34,INVALC,INVALC, INVALC,0x5F35,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5F36,INVALC,INVALC,INVALC,0x5F37,INVALC,INVALC,0x5F38, 0x5F39,INVALC,0x5F3A,INVALC,INVALC,0x5F3B,INVALC,0x5F3C, 0x5F3D,INVALC,INVALC,INVALC,INVALC,INVALC,0x5F3E,0x5F3F, /* Block 142, Array index 0x4600 */ INVALC,0x5F40,INVALC,0x5F41,INVALC,INVALC,INVALC,INVALC, INVALC,0x5F42,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5F43,INVALC,INVALC,INVALC,INVALC,0x5F44, INVALC,INVALC,INVALC,0x5F45,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5F46,INVALC,INVALC, INVALC,0x5F47,INVALC,INVALC,0x5F48,INVALC,0x5F49,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5F4A, INVALC,INVALC,0x5F4B,INVALC,0x5F4C,INVALC,INVALC,INVALC, 0x5F4D,INVALC,INVALC,INVALC,INVALC,0x5F4E,INVALC,INVALC, 0x5F4F,0x5F50,INVALC,INVALC,INVALC,0x5F51,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5F52,0x5F53, 0x5F54,INVALC,INVALC,INVALC,INVALC,INVALC,0x5F55,INVALC, INVALC,INVALC,INVALC,0x5F56,0x5F57,INVALC,INVALC,0x5F58, INVALC,INVALC,0x5F59,INVALC,INVALC,0x5F5A,INVALC,0x5F5B, INVALC,0x5F5C,INVALC,0x5F5D,0x5F6F,INVALC,INVALC,INVALC, 0x5F5E,INVALC,INVALC,INVALC,INVALC,0x5F5F,0x5F60,0x5F61, 0x5F62,INVALC,0x5F63,INVALC,INVALC,INVALC,0x5F64,INVALC, INVALC,0x5F65,INVALC,INVALC,0x5F66,0x5F67,INVALC,0x5F68, INVALC,0x5F69,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5F6A,0x5F6B,INVALC,0x5F6C, INVALC,INVALC,INVALC,INVALC,0x5F6D,INVALC,INVALC,INVALC, 0x5F6E,0x5F70,0x5F71,INVALC,0x5F72,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5F73,INVALC,INVALC, /* Block 143, Array index 0x4700 */ INVALC,0x5F74,INVALC,INVALC,0x5F75,0x5F76,0x5F77,INVALC, INVALC,INVALC,INVALC,0x5F78,INVALC,INVALC,INVALC,INVALC, INVALC,0x5F79,INVALC,INVALC,0x5F7A,INVALC,0x5F7B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5F7C,0x5F7D,0x5F7E,0x6021,INVALC,INVALC,0x6022,0x6023, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6024,INVALC,0x6025,INVALC,INVALC,0x6026,0x6027, 0x6028,0x6029,INVALC,INVALC,INVALC,0x602A,INVALC,INVALC, 0x602B,0x602C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x602D,INVALC,0x602E,0x602F,0x6030, INVALC,INVALC,INVALC,INVALC,0x6031,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6032,0x6033,0x6034,0x6035,INVALC, INVALC,0x6036,0x6037,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6038,INVALC,INVALC,0x6039,0x603A,INVALC,0x603B, 0x603C,0x603D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x603E,0x603F,0x6040,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6041,0x6042,INVALC,INVALC,INVALC,INVALC, INVALC,0x6043,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6044,INVALC,0x6045,INVALC,INVALC,0x6046,INVALC,INVALC, INVALC,INVALC,0x6047,0x6048,INVALC,0x6049,0x604A,INVALC, INVALC,INVALC,0x604B,INVALC,INVALC,INVALC,INVALC,0x604C, INVALC,0x604D,INVALC,INVALC,INVALC,0x604E,0x604F,INVALC, INVALC,INVALC,INVALC,0x6050,INVALC,0x6051,INVALC,INVALC, INVALC,INVALC,0x6052,0x6053,INVALC,INVALC,INVALC,INVALC, 0x6054,0x6055,INVALC,0x6056,0x6057,INVALC,INVALC,0x6058, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6059, INVALC,0x605A,INVALC,INVALC,0x605B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x605C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x605D,INVALC,INVALC,INVALC,INVALC,0x6064,0x605E,INVALC, 0x605F,0x6060,INVALC,INVALC,INVALC,INVALC,INVALC,0x6061, INVALC,0x6062,0x6063,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 144, Array index 0x4800 */ 0x6065,INVALC,0x6066,INVALC,INVALC,INVALC,INVALC,0x6067, 0x6068,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6069, 0x606A,INVALC,INVALC,INVALC,INVALC,INVALC,0x606B,0x606C, 0x606D,INVALC,INVALC,INVALC,INVALC,INVALC,0x606E,INVALC, 0x606F,0x6070,INVALC,0x6071,INVALC,0x6072,INVALC,0x6073, 0x6074,INVALC,INVALC,INVALC,0x6075,0x6076,0x6077,INVALC, INVALC,INVALC,INVALC,INVALC,0x6078,0x6079,0x607A,0x607B, INVALC,INVALC,0x607C,INVALC,INVALC,INVALC,INVALC,INVALC, 0x607D,0x607E,INVALC,0x6121,INVALC,INVALC,INVALC,0x6122, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6123, INVALC,0x6124,0x6125,0x6126,0x6127,0x6128,INVALC,INVALC, 0x6129,INVALC,INVALC,INVALC,INVALC,0x612A,0x612B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x612C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x612D,INVALC,INVALC, 0x612E,0x612F,INVALC,INVALC,0x6130,0x6131,0x6132,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6133,0x6134,INVALC, 0x6135,INVALC,INVALC,INVALC,INVALC,INVALC,0x6136,INVALC, 0x6137,0x6138,INVALC,INVALC,INVALC,INVALC,0x6139,INVALC, INVALC,INVALC,0x613A,0x613B,INVALC,0x613C,INVALC,INVALC, 0x613D,INVALC,0x613E,0x613F,INVALC,0x6140,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6141,INVALC,INVALC,0x6142,0x6143,INVALC,INVALC,INVALC, 0x6144,INVALC,INVALC,INVALC,INVALC,INVALC,0x6145,INVALC, INVALC,0x6146,INVALC,INVALC,INVALC,0x6147,0x6148,INVALC, INVALC,INVALC,INVALC,0x6149,INVALC,INVALC,0x614A,INVALC, /* Block 145, Array index 0x4900 */ INVALC,INVALC,0x614B,INVALC,0x614C,INVALC,INVALC,INVALC, 0x614D,INVALC,INVALC,INVALC,0x614E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x614F,INVALC,INVALC,0x6150,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6151,0x6152,0x6154,INVALC,0x6155,0x6156,INVALC,0x6153, INVALC,INVALC,INVALC,0x6157,0x6158,INVALC,INVALC,0x6159, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x615A, INVALC,INVALC,INVALC,0x615B,0x615C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x615D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x615E,INVALC,0x615F,INVALC,INVALC, INVALC,INVALC,0x6160,INVALC,INVALC,INVALC,0x6161,0x6162, INVALC,INVALC,INVALC,INVALC,0x6163,INVALC,INVALC,INVALC, 0x6164,INVALC,INVALC,INVALC,0x6165,INVALC,INVALC,INVALC, INVALC,0x6166,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6167,INVALC,INVALC, 0x6168,INVALC,INVALC,0x6169,0x616A,INVALC,0x616B,INVALC, 0x616C,INVALC,INVALC,INVALC,INVALC,0x616D,INVALC,0x616E, 0x616F,0x6170,INVALC,0x6171,INVALC,INVALC,INVALC,INVALC, 0x6172,0x6173,0x6174,INVALC,INVALC,0x6175,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6176,INVALC,0x6177,0x6178,0x6179,INVALC,0x617A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x617B,0x617D,INVALC, INVALC,INVALC,INVALC,0x617E,0x6221,0x6222,INVALC,0x6223, 0x6224,INVALC,INVALC,INVALC,0x617C,INVALC,INVALC,INVALC, INVALC,INVALC,0x622D,INVALC,INVALC,0x6225,INVALC,0x6226, 0x6227,0x6228,INVALC,INVALC,0x6229,0x622A,INVALC,0x622B, INVALC,INVALC,INVALC,INVALC,INVALC,0x622C,INVALC,INVALC, INVALC,INVALC,INVALC,0x622F,INVALC,INVALC,INVALC,0x6230, 0x6231,INVALC,INVALC,INVALC,0x6232,INVALC,0x622E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6233,0x6234, /* Block 146, Array index 0x4A00 */ 0x6235,INVALC,INVALC,INVALC,0x6236,0x6237,0x6238,INVALC, 0x6239,INVALC,INVALC,INVALC,INVALC,0x623A,INVALC,INVALC, 0x623B,INVALC,INVALC,INVALC,0x623C,INVALC,0x623D,0x623E, 0x623F,INVALC,0x6240,INVALC,0x6241,INVALC,0x6242,INVALC, 0x6243,INVALC,0x6245,0x6246,INVALC,0x6244,INVALC,0x6247, INVALC,0x6248,INVALC,INVALC,INVALC,INVALC,0x6249,0x624A, INVALC,0x624B,INVALC,INVALC,0x624C,INVALC,0x624D,0x624E, INVALC,0x624F,0x6250,INVALC,0x6251,0x6252,INVALC,INVALC, INVALC,INVALC,INVALC,0x6253,INVALC,INVALC,INVALC,0x6254, 0x6255,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6256, INVALC,INVALC,INVALC,0x6257,INVALC,INVALC,INVALC,0x6258, INVALC,0x6259,0x625A,0x625B,INVALC,INVALC,INVALC,INVALC, INVALC,0x625C,INVALC,INVALC,0x625D,INVALC,INVALC,0x625E, INVALC,INVALC,INVALC,INVALC,INVALC,0x625F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6260,INVALC,INVALC,INVALC, INVALC,0x6261,0x6262,0x6263,INVALC,INVALC,INVALC,INVALC, INVALC,0x6264,INVALC,0x6265,INVALC,0x6266,0x6267,INVALC, INVALC,INVALC,0x6268,INVALC,INVALC,INVALC,0x6269,INVALC, INVALC,0x626A,INVALC,0x626B,0x626C,0x626D,INVALC,INVALC, 0x626E,INVALC,INVALC,INVALC,INVALC,INVALC,0x626F,INVALC, INVALC,0x6270,INVALC,INVALC,INVALC,INVALC,0x6271,INVALC, 0x6272,INVALC,INVALC,INVALC,0x6273,0x6274,0x6275,INVALC, 0x6276,0x6277,0x6278,0x6279,INVALC,INVALC,0x627A,INVALC, INVALC,INVALC,INVALC,0x627B,0x627C,0x627D,INVALC,0x627E, INVALC,INVALC,0x6321,0x6322,INVALC,0x6323,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6324,0x6325,INVALC,INVALC,0x6326, INVALC,0x6327,0x6328,INVALC,INVALC,INVALC,0x6329,INVALC, INVALC,INVALC,INVALC,INVALC,0x632A,0x632B,INVALC,INVALC, INVALC,0x632C,0x632D,INVALC,0x632E,0x632F,0x6330,0x6331, 0x6332,0x6333,INVALC,INVALC,INVALC,INVALC,INVALC,0x6334, INVALC,0x6335,INVALC,0x6336,INVALC,0x6337,INVALC,INVALC, /* Block 147, Array index 0x4B00 */ 0x6338,0x6339,INVALC,INVALC,0x633A,0x633B,0x633C,0x633D, INVALC,0x633E,0x633F,INVALC,0x6340,INVALC,INVALC,INVALC, 0x6341,INVALC,0x6342,0x6343,INVALC,INVALC,0x6344,INVALC, 0x6345,INVALC,INVALC,INVALC,0x6346,0x6347,INVALC,INVALC, INVALC,INVALC,INVALC,0x6348,0x6349,0x634A,0x634B,INVALC, 0x634C,INVALC,INVALC,INVALC,INVALC,INVALC,0x634D,0x634E, 0x634F,INVALC,INVALC,0x6350,INVALC,0x6351,0x6352,INVALC, 0x6353,0x6354,0x6355,INVALC,0x6356,INVALC,0x6357,INVALC, 0x6358,INVALC,0x6359,0x635A,INVALC,INVALC,0x635B,0x635C, INVALC,INVALC,0x635D,INVALC,INVALC,0x635E,0x635F,0x6360, INVALC,0x6361,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6362,0x6363,INVALC,INVALC,0x6364,0x6365,INVALC,INVALC, 0x6366,0x6367,INVALC,INVALC,INVALC,0x6368,INVALC,0x6369, 0x636A,0x636B,INVALC,INVALC,INVALC,INVALC,0x636C,0x636D, 0x636E,INVALC,INVALC,INVALC,INVALC,0x636F,0x6370,0x6371, 0x6372,0x6373,INVALC,0x6374,0x6375,0x6376,INVALC,0x6377, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6378,0x6379,0x637A,INVALC,INVALC,0x637B,0x637C,INVALC, INVALC,INVALC,0x637D,INVALC,INVALC,INVALC,INVALC,0x637E, INVALC,0x6421,INVALC,INVALC,INVALC,INVALC,INVALC,0x6422, 0x6423,INVALC,INVALC,INVALC,0x6424,0x6425,INVALC,0x6426, 0x6427,INVALC,INVALC,0x6428,INVALC,INVALC,INVALC,0x6429, INVALC,INVALC,0x642A,INVALC,INVALC,INVALC,0x642B,INVALC, 0x642C,INVALC,0x642D,0x642E,0x642F,0x6430,INVALC,0x6431, 0x6432,0x6433,0x6434,0x6435,INVALC,0x6436,0x6437,0x6438, 0x6439,INVALC,INVALC,0x643A,0x643B,0x643C,0x643D,INVALC, 0x643E,INVALC,INVALC,0x643F,INVALC,0x6440,INVALC,0x6441, 0x6442,0x6443,INVALC,INVALC,0x6444,0x6445,INVALC,0x6446, 0x6447,0x6448,INVALC,0x6449,INVALC,0x644A,INVALC,0x644B, 0x644C,INVALC,INVALC,INVALC,0x644D,INVALC,0x644E,INVALC, 0x644F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6450,INVALC,0x6451,INVALC,INVALC,INVALC,0x6452, /* Block 148, Array index 0x4C00 */ 0x6453,INVALC,0x6454,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6455,INVALC,INVALC,INVALC,INVALC,0x6456,INVALC,INVALC, INVALC,0x6457,INVALC,INVALC,0x6458,0x6459,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x645A,0x645B,0x645C,0x645D, INVALC,0x645E,INVALC,INVALC,0x645F,0x6460,INVALC,0x6461, INVALC,0x6462,0x6463,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6464,0x6465,INVALC,0x6466,0x6467, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6468, 0x6469,0x646A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x646B,0x646C,0x646D,INVALC,INVALC,0x646E,INVALC,0x646F, 0x6470,INVALC,0x6471,INVALC,INVALC,INVALC,0x6472,INVALC, INVALC,INVALC,INVALC,INVALC,0x6473,0x6474,INVALC,0x6475, INVALC,0x6476,0x6477,INVALC,INVALC,0x6478,INVALC,0x6479, 0x647A,0x647B,INVALC,0x647C,0x647D,INVALC,0x647E,INVALC, INVALC,INVALC,0x6521,INVALC,INVALC,0x6522,INVALC,0x6523, 0x6524,0x6525,0x6526,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6527,INVALC,0x6528,0x6529,INVALC,0x652A,INVALC,0x652B, INVALC,INVALC,0x652C,INVALC,INVALC,0x652D,INVALC,INVALC, 0x652E,INVALC,INVALC,0x652F,INVALC,INVALC,0x6530,INVALC, INVALC,0x6531,INVALC,0x6532,0x6533,INVALC,0x6534,INVALC, 0x6535,0x653B,INVALC,0x6536,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6537,0x6538,0x6539,INVALC, INVALC,INVALC,0x653A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x653C,INVALC,INVALC,0x653D,0x653E,0x653F,0x6540, INVALC,0x6541,0x6542,0x6543,0x6544,0x6545,INVALC,INVALC, INVALC,INVALC,INVALC,0x6546,INVALC,INVALC,INVALC,INVALC, INVALC,0x6547,INVALC,INVALC,0x6548,INVALC,0x6549,0x654A, INVALC,INVALC,0x654B,INVALC,INVALC,INVALC,0x654C,0x654D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x654F, 0x6550,0x654E,0x6551,0x6552,INVALC,0x6553,INVALC,INVALC, /* Block 149, Array index 0x4D00 */ INVALC,0x6554,0x6555,INVALC,0x6556,INVALC,INVALC,INVALC, 0x6557,0x6558,INVALC,INVALC,INVALC,0x6559,0x655A,0x655B, INVALC,INVALC,INVALC,INVALC,INVALC,0x655C,0x655D,0x655E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x655F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6560,0x6561, INVALC,0x6562,0x6563,0x6564,0x6565,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6566,INVALC,0x6568,INVALC,0x6567, INVALC,INVALC,INVALC,0x6569,INVALC,0x656A,INVALC,INVALC, 0x656B,INVALC,0x656C,INVALC,0x656D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x656E,INVALC,INVALC, INVALC,0x656F,INVALC,INVALC,0x6570,INVALC,INVALC,0x6571, INVALC,0x6572,INVALC,0x6573,INVALC,INVALC,INVALC,INVALC, 0x6574,INVALC,INVALC,0x6575,INVALC,0x6576,0x6577,0x6578, INVALC,0x6579,0x657A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x657C,0x657B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 150, Array index 0x4E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x657D,0x657E,INVALC,INVALC,INVALC,INVALC,0x6621,INVALC, INVALC,INVALC,INVALC,INVALC,0x6622,INVALC,INVALC,INVALC, 0x6623,INVALC,INVALC,INVALC,0x6624,0x6625,0x6626,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6627,0x6628,0x6629, INVALC,0x662A,INVALC,INVALC,INVALC,INVALC,0x662B,INVALC, INVALC,0x662C,INVALC,0x662D,0x662E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x662F,INVALC,0x6630,INVALC, INVALC,INVALC,0x6631,INVALC,INVALC,0x6632,INVALC,0x6633, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6634,INVALC, 0x6635,0x6636,INVALC,0x6637,INVALC,INVALC,INVALC,INVALC, 0x6638,0x6639,0x663A,0x663B,INVALC,INVALC,INVALC,INVALC, INVALC,0x663C,0x663D,INVALC,INVALC,0x663E,0x663F,0x6640, 0x6641,INVALC,INVALC,INVALC,0x6642,INVALC,0x6643,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 151, Array index 0x4F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6644,0x6645,INVALC, INVALC,INVALC,0x6646,INVALC,0x6647,0x6648,0x6649,INVALC, INVALC,INVALC,INVALC,INVALC,0x664A,INVALC,INVALC,INVALC, INVALC,0x664B,INVALC,0x664C,INVALC,INVALC,INVALC,0x664D, 0x664E,0x664F,0x6650,INVALC,0x6651,0x6652,INVALC,INVALC, INVALC,0x6653,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6654,INVALC,0x6655,INVALC,0x6656,0x6657, 0x6658,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6659,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x665A,INVALC, INVALC,INVALC,INVALC,INVALC,0x665B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x665C,0x665D,INVALC,0x665E,0x665F, INVALC,0x6660,0x6661,0x6662,0x6663,INVALC,INVALC,INVALC, INVALC,0x6664,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6665,INVALC,INVALC,INVALC,INVALC,0x6666,INVALC, INVALC,INVALC,0x6667,INVALC,INVALC,0x6668,INVALC,0x6669, INVALC,INVALC,INVALC,INVALC,0x666A,0x666B,0x666C,INVALC, INVALC,0x666D,INVALC,INVALC,INVALC,INVALC,0x666E,0x666F, INVALC,INVALC,INVALC,0x6670,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6671,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6672,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6673,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6675,INVALC,0x6676,INVALC,INVALC,0x6677,0x6678,0x6679, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x667A,INVALC,INVALC,INVALC,INVALC,INVALC,0x667B, INVALC,0x667C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x667D,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 152, Array index 0x5000 */ INVALC,INVALC,0x667E,0x6721,INVALC,0x6722,INVALC,INVALC, INVALC,0x6723,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6724,0x6725,INVALC,0x6726,INVALC,INVALC, INVALC,0x6727,0x6728,0x6729,INVALC,INVALC,INVALC,INVALC, 0x672A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x672B,INVALC,0x672C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x672D,INVALC,0x672E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x672F,INVALC,INVALC,INVALC,0x6730,0x6731, INVALC,INVALC,INVALC,INVALC,INVALC,0x6732,INVALC,0x6733, 0x6734,INVALC,0x6735,0x6736,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6737,INVALC,INVALC,INVALC,0x6738, INVALC,INVALC,0x6739,INVALC,INVALC,INVALC,0x673A,INVALC, INVALC,INVALC,INVALC,0x673B,INVALC,INVALC,0x673C,0x673D, 0x673E,INVALC,INVALC,0x673F,INVALC,0x6740,INVALC,0x6741, 0x6742,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6743,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6744,0x6745,0x6746, INVALC,0x6747,0x6748,INVALC,INVALC,INVALC,0x6749,0x674A, INVALC,INVALC,0x674B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x674C,INVALC,0x674D,INVALC, INVALC,0x674E,0x674F,INVALC,INVALC,0x6750,0x6751,INVALC, 0x6752,0x6753,0x6754,INVALC,0x6755,INVALC,0x6756,0x6757, INVALC,0x6758,INVALC,INVALC,0x6759,0x675A,INVALC,0x675B, INVALC,0x675C,0x675D,INVALC,0x675E,0x675F,0x6760,INVALC, 0x6761,0x6762,INVALC,INVALC,0x6763,INVALC,INVALC,0x6764, 0x6765,0x6766,INVALC,0x676A,INVALC,0x6767,0x6768,INVALC, 0x6769,0x676B,INVALC,INVALC,0x676C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x676D, INVALC,0x676E,INVALC,INVALC,0x676F,INVALC,INVALC,0x6770, 0x6771,INVALC,0x6772,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 153, Array index 0x5100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6773, INVALC,INVALC,0x6774,INVALC,INVALC,0x6776,0x6777,INVALC, INVALC,INVALC,INVALC,INVALC,0x6778,INVALC,0x6779,INVALC, INVALC,0x6775,INVALC,INVALC,0x677A,INVALC,0x677B,INVALC, 0x677C,INVALC,INVALC,0x677D,INVALC,0x6828,0x677E,INVALC, INVALC,INVALC,INVALC,0x6821,INVALC,INVALC,0x6822,0x6823, 0x6824,INVALC,0x6825,0x6826,INVALC,0x6827,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6829,INVALC, INVALC,INVALC,INVALC,INVALC,0x682A,INVALC,INVALC,0x682B, INVALC,INVALC,0x682C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x682D,0x682E,0x682F,INVALC,INVALC,0x6830,0x6831, INVALC,0x6832,0x6833,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6834,0x6835,INVALC,0x6836,0x6837,INVALC, INVALC,INVALC,0x6838,INVALC,0x6839,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x683A,INVALC,0x683B,0x683C,INVALC, 0x683D,INVALC,INVALC,INVALC,0x683E,INVALC,INVALC,0x683F, 0x6840,INVALC,0x6841,0x6842,INVALC,INVALC,INVALC,0x6843, INVALC,INVALC,0x6844,INVALC,INVALC,0x6845,INVALC,INVALC, 0x6846,INVALC,INVALC,INVALC,0x6847,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6848,INVALC,0x6849,INVALC,0x684A,0x684B,0x684C, INVALC,INVALC,0x684D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x684E,INVALC,INVALC,0x684F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 154, Array index 0x5200 */ INVALC,INVALC,0x6850,INVALC,INVALC,INVALC,INVALC,0x6851, 0x6852,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6853,INVALC,INVALC,INVALC,0x6854,0x6855,0x6856, INVALC,INVALC,0x6857,0x6858,0x6859,INVALC,INVALC,0x685A, INVALC,INVALC,0x685B,INVALC,INVALC,INVALC,0x685C,0x685D, INVALC,INVALC,INVALC,0x685E,INVALC,INVALC,INVALC,INVALC, INVALC,0x685F,0x6860,0x6861,0x6862,0x6863,INVALC,INVALC, INVALC,0x6864,0x6865,0x6866,0x6867,INVALC,INVALC,INVALC, 0x6868,0x6869,INVALC,INVALC,INVALC,INVALC,0x686A,0x686B, 0x686C,INVALC,INVALC,INVALC,INVALC,0x686D,0x686E,INVALC, INVALC,INVALC,INVALC,INVALC,0x686F,INVALC,INVALC,INVALC, 0x6870,0x6871,INVALC,0x6872,0x6873,INVALC,0x6874,0x6875, 0x6876,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6877,INVALC,0x6878,INVALC,0x6879, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x687A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x687B,0x687C,0x687D,INVALC,INVALC,0x687E,INVALC,INVALC, INVALC,0x6921,0x6922,INVALC,INVALC,0x6923,INVALC,0x6924, INVALC,INVALC,INVALC,0x6925,INVALC,INVALC,INVALC,INVALC, INVALC,0x6926,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6927,0x6928,INVALC,INVALC,INVALC, INVALC,0x6929,0x692A,INVALC,0x692B,INVALC,0x692C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x692D, INVALC,INVALC,0x692E,0x692F,0x6930,INVALC,INVALC,INVALC, 0x6931,INVALC,INVALC,INVALC,0x6932,0x6933,INVALC,INVALC, INVALC,0x6934,INVALC,INVALC,INVALC,0x6935,0x6936,INVALC, /* Block 155, Array index 0x5300 */ INVALC,INVALC,0x6937,0x6938,0x6939,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x693A,0x693B,INVALC,INVALC,INVALC, 0x693C,0x693D,INVALC,INVALC,INVALC,INVALC,0x693E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x693F,INVALC, 0x6940,INVALC,0x6941,0x6942,0x6943,INVALC,INVALC,0x6944, INVALC,INVALC,INVALC,INVALC,INVALC,0x6945,0x6946,INVALC, INVALC,INVALC,INVALC,0x6947,INVALC,0x6948,0x6949,INVALC, 0x694A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x694C,INVALC,INVALC,0x694D,INVALC,INVALC,0x694B, INVALC,INVALC,0x694E,0x694F,0x6950,INVALC,0x6951,INVALC, INVALC,0x6952,INVALC,INVALC,0x6953,INVALC,0x6954,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6955,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6956,INVALC,0x6957,INVALC,0x6958,0x6959, INVALC,INVALC,0x695A,INVALC,0x695B,0x695C,0x695D,INVALC, INVALC,0x695E,INVALC,0x695F,INVALC,INVALC,0x6960,0x6961, INVALC,0x6962,INVALC,0x6963,INVALC,INVALC,0x6964,INVALC, 0x6965,INVALC,INVALC,INVALC,INVALC,INVALC,0x6966,INVALC, 0x6967,INVALC,0x6968,INVALC,INVALC,0x6969,0x696A,0x696B, INVALC,INVALC,INVALC,0x696C,0x696D,INVALC,INVALC,INVALC, 0x696E,INVALC,INVALC,INVALC,0x696F,0x6970,INVALC,0x6971, INVALC,0x6972,INVALC,INVALC,0x6973,INVALC,INVALC,INVALC, INVALC,INVALC,0x6974,0x6975,INVALC,0x6976,INVALC,INVALC, INVALC,0x6977,0x6978,INVALC,INVALC,0x6979,INVALC,0x697A, /* Block 156, Array index 0x5400 */ 0x697B,0x697C,0x697D,0x697E,0x6A21,0x6A22,INVALC,INVALC, 0x6A23,0x6A24,INVALC,0x6A25,0x6A26,0x6A27,0x6A28,INVALC, 0x6A29,INVALC,0x6A2A,INVALC,INVALC,INVALC,0x6A2B,INVALC, INVALC,0x6A2C,INVALC,0x6A2D,0x6A2E,INVALC,INVALC,INVALC, 0x6A2F,INVALC,INVALC,INVALC,INVALC,INVALC,0x6A30,INVALC, INVALC,INVALC,INVALC,0x6A31,INVALC,0x6A32,INVALC,INVALC, INVALC,INVALC,INVALC,0x6A33,0x6A34,0x6A35,INVALC,0x6A36, INVALC,0x6A37,0x6A38,INVALC,INVALC,0x6A39,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6A3A,INVALC,INVALC,0x6A3B,0x6A3C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6A3D,0x6A3E,0x6A3F, INVALC,INVALC,INVALC,0x6A40,INVALC,INVALC,0x6A41,INVALC, INVALC,0x6A42,INVALC,0x6A43,INVALC,0x6A44,0x6A45,INVALC, 0x6A46,INVALC,0x6A47,0x6A48,0x6A49,0x6A4A,0x6A4B,INVALC, INVALC,INVALC,INVALC,0x6A4C,INVALC,0x6A4D,INVALC,0x6A4E, 0x6A4F,0x6A50,INVALC,INVALC,INVALC,INVALC,INVALC,0x6A51, 0x6A52,INVALC,INVALC,INVALC,0x6A53,0x6A54,0x6A55,0x6A56, INVALC,0x6A57,0x6A58,0x6A59,INVALC,0x6A5A,INVALC,0x6A5B, 0x6A5C,INVALC,INVALC,INVALC,0x6A5D,INVALC,INVALC,INVALC, INVALC,INVALC,0x6A5E,INVALC,INVALC,0x6A5F,0x6A60,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6A61,0x6A62, INVALC,0x6A63,INVALC,INVALC,0x6A64,INVALC,INVALC,INVALC, 0x6A65,0x6A66,0x6A67,INVALC,INVALC,INVALC,INVALC,0x6A68, 0x6A69,INVALC,INVALC,0x6A6A,0x6A6B,INVALC,0x6A6C,0x6A6D, INVALC,0x6A6E,INVALC,INVALC,INVALC,INVALC,INVALC,0x6A6F, 0x6A70,INVALC,INVALC,INVALC,INVALC,INVALC,0x6A71,INVALC, 0x6A72,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6A73, 0x6A74,INVALC,INVALC,INVALC,INVALC,0x6A75,INVALC,0x6A76, INVALC,INVALC,INVALC,INVALC,INVALC,0x6A77,INVALC,0x6A78, INVALC,INVALC,0x6A79,0x6A7A,INVALC,INVALC,INVALC,0x6A7B, INVALC,INVALC,INVALC,0x6A7C,INVALC,INVALC,INVALC,0x6A7D, 0x6A7E,0x6B21,0x6B22,INVALC,INVALC,0x6B23,INVALC,0x6B24, /* Block 157, Array index 0x5500 */ 0x6B25,INVALC,0x6B26,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6B27,INVALC,INVALC,INVALC,0x6B28, INVALC,0x6B29,INVALC,INVALC,INVALC,INVALC,0x6B2A,INVALC, 0x6B2B,0x6B2C,0x6B2D,INVALC,0x6B2E,INVALC,0x6B2F,INVALC, INVALC,INVALC,0x6B30,0x6B31,INVALC,INVALC,0x6B32,0x6B33, 0x6B34,0x6B35,0x6B36,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6B37,INVALC,INVALC,INVALC,0x6B38,0x6B39,0x6B3A, INVALC,INVALC,INVALC,INVALC,INVALC,0x6B3B,INVALC,INVALC, INVALC,0x6B3C,INVALC,0x6B3D,0x6B3E,0x6B3F,INVALC,INVALC, INVALC,0x6B40,0x6B41,INVALC,INVALC,INVALC,0x6B42,0x6B43, 0x6B44,INVALC,INVALC,0x6B45,0x6B46,INVALC,0x6B47,INVALC, 0x6B48,INVALC,INVALC,0x6B49,0x6B50,0x6B4A,0x6B4B,0x6B4C, INVALC,INVALC,INVALC,0x6B4D,INVALC,INVALC,INVALC,INVALC, 0x6B52,0x6B4E,0x6B4F,0x6B51,INVALC,INVALC,0x6B53,INVALC, 0x6B54,INVALC,0x6B55,INVALC,INVALC,0x6B56,INVALC,0x6B57, INVALC,INVALC,INVALC,0x6B58,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6B59,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6B5A,INVALC,INVALC,INVALC,INVALC,0x6B5B, INVALC,0x6B5C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 158, Array index 0x5600 */ INVALC,INVALC,0x6B5E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6B5D,INVALC,INVALC,INVALC,INVALC, INVALC,0x6B5F,INVALC,INVALC,INVALC,INVALC,INVALC,0x6B60, 0x6B61,INVALC,INVALC,INVALC,0x6B62,0x6B63,0x6B64,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6B65, 0x6B66,INVALC,0x6B67,0x6B68,0x6B69,INVALC,INVALC,INVALC, INVALC,INVALC,0x6B6A,INVALC,0x6B6B,0x6B6D,INVALC,INVALC, INVALC,INVALC,0x6B6E,0x6B6F,INVALC,0x6B6C,INVALC,0x6B70, INVALC,INVALC,0x6B71,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6B72,0x6B73,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6B74, INVALC,INVALC,0x6B76,0x6B75,INVALC,0x6B77,INVALC,INVALC, INVALC,0x6B78,0x6B79,0x6B7A,INVALC,INVALC,INVALC,INVALC, 0x6B7B,INVALC,INVALC,INVALC,INVALC,INVALC,0x6B7C,0x6B7D, INVALC,INVALC,INVALC,0x6B7E,0x6C21,INVALC,0x6C22,INVALC, INVALC,INVALC,INVALC,0x6C23,0x6C24,INVALC,0x6C25,INVALC, INVALC,INVALC,0x6C26,INVALC,INVALC,0x6C27,0x6C28,INVALC, INVALC,INVALC,0x6C29,0x6C2A,INVALC,0x6C2B,0x6C2C,0x6C2D, 0x6C2E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6C2F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6C30,INVALC,0x6C31,INVALC,0x6C32,INVALC, INVALC,0x6C33,INVALC,INVALC,INVALC,0x6C34,INVALC,INVALC, INVALC,0x6C35,INVALC,INVALC,0x6C36,INVALC,INVALC,0x6C37, INVALC,INVALC,INVALC,0x6C38,INVALC,INVALC,INVALC,0x6C39, INVALC,0x6C3A,0x6C3B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6C3C,0x6C3D,0x6C3E,0x6C3F, INVALC,INVALC,0x6C40,INVALC,INVALC,INVALC,0x6C41,0x6C42, 0x6C43,INVALC,INVALC,INVALC,INVALC,0x6C44,INVALC,0x6C45, INVALC,0x6C46,INVALC,0x6C47,INVALC,INVALC,0x6C48,INVALC, 0x6C49,INVALC,INVALC,0x6C4A,0x6C4B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6C4C,INVALC, /* Block 159, Array index 0x5700 */ INVALC,INVALC,0x6C4E,INVALC,INVALC,INVALC,INVALC,0x6C4F, INVALC,INVALC,0x6C4D,INVALC,INVALC,INVALC,0x6C50,INVALC, 0x6C51,0x6C52,0x6C53,INVALC,INVALC,0x6C54,0x6C55,INVALC, INVALC,0x6C56,INVALC,INVALC,0x6C57,0x6C58,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6C59,0x6C5A,0x6C5B,INVALC,INVALC,INVALC, 0x6C5C,INVALC,0x6C5D,0x6C5E,0x6C5F,0x6C60,INVALC,0x6C61, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6C62,0x6C63, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6C64,INVALC, 0x6C65,INVALC,INVALC,0x6C66,INVALC,INVALC,0x6C67,INVALC, INVALC,INVALC,INVALC,INVALC,0x6C68,INVALC,INVALC,INVALC, 0x6C69,INVALC,INVALC,INVALC,0x6C6A,INVALC,0x6C6B,0x6C6C, 0x6C6D,INVALC,INVALC,0x6C6E,0x6C6F,0x6C70,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6C71,INVALC, 0x6C72,INVALC,INVALC,0x6C73,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6C74,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6C75, INVALC,INVALC,INVALC,INVALC,0x6C76,INVALC,INVALC,0x6C77, INVALC,INVALC,INVALC,INVALC,0x6C78,0x6C79,0x6C7A,INVALC, 0x6C7B,0x6C7C,0x6C7D,INVALC,INVALC,0x6C7E,INVALC,INVALC, 0x6D21,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6D22, /* Block 160, Array index 0x5800 */ INVALC,INVALC,0x6D23,0x6D24,INVALC,INVALC,INVALC,INVALC, INVALC,0x6D25,INVALC,INVALC,INVALC,INVALC,INVALC,0x6D26, 0x6D27,0x6D28,0x6D29,INVALC,0x6D2A,INVALC,0x6D2B,0x6D2C, INVALC,0x6D2D,0x6D2E,0x6D2F,INVALC,INVALC,INVALC,0x6D30, INVALC,INVALC,0x6D31,INVALC,INVALC,INVALC,0x6D32,INVALC, INVALC,INVALC,0x6D33,0x6D34,INVALC,INVALC,INVALC,0x6D35, INVALC,0x6D36,0x6D37,INVALC,0x6D38,INVALC,INVALC,0x6D39, INVALC,0x6D3A,0x6D3B,INVALC,0x6D3C,0x6D3D,INVALC,0x6D3E, INVALC,0x6D3F,INVALC,0x6D40,0x6D41,0x6D42,0x6D43,0x6D44, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6D45,INVALC,0x6D46,0x6D47,0x6D48, 0x6D49,INVALC,0x6D4A,INVALC,INVALC,0x6D4B,0x6D4C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6D4D,0x6D4E,INVALC,INVALC,INVALC,0x6D4F,0x6D50,0x6D51, 0x6D52,0x6D53,INVALC,0x6D54,INVALC,0x6D55,INVALC,INVALC, INVALC,INVALC,0x6D56,INVALC,INVALC,0x6D57,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6D58, 0x6D59,0x6D5A,0x6D5B,INVALC,0x6D5C,INVALC,0x6D5D,0x6D5E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6D5F,INVALC, INVALC,0x6D60,0x6D61,0x6D62,INVALC,0x6D63,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, }; #endif /* ICONV_FROM_UCS_CCS_JIS_X0212_1990 && !defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * 16-bit UCS -> jis_x0212_1990 size-optimized table (23194 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_JIS_X0212_1990) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t from_ucs_size_jis_x0212_1990[] = { 0x01AA, /* Ranges number */ 0x0E83, /* Unranged codes number */ 0x1047, /* First unranged code index */ /* Ranges list: first code, last Code, array index. */ /* Array index: 0x0003 */ 0x00BF, 0x017E, 0x0501, /* Array index: 0x0006 */ 0x01CD, 0x01DC, 0x05C1, /* Array index: 0x0009 */ 0x02D8, 0x02DD, 0x05D1, /* Array index: 0x000C */ 0x0384, 0x0390, 0x05D7, /* Array index: 0x000F */ 0x03AA, 0x03B0, 0x05E4, /* Array index: 0x0012 */ 0x03CA, 0x03CE, 0x05EB, /* Array index: 0x0015 */ 0x0402, 0x040F, 0x05F0, /* Array index: 0x0018 */ 0x0452, 0x045F, 0x05FE, /* Array index: 0x001B */ 0x4E2E, 0x4E30, 0x060C, /* Array index: 0x001E */ 0x4EE0, 0x4EE2, 0x060F, /* Array index: 0x0021 */ 0x4EFD, 0x4F03, 0x0612, /* Array index: 0x0024 */ 0x4F15, 0x4F19, 0x0619, /* Array index: 0x0027 */ 0x4F48, 0x4F4C, 0x061E, /* Array index: 0x002A */ 0x4F77, 0x4F85, 0x0623, /* Array index: 0x002D */ 0x4F90, 0x4F94, 0x0632, /* Array index: 0x0030 */ 0x4FB9, 0x4FC1, 0x0637, /* Array index: 0x0033 */ 0x4FC5, 0x4FCF, 0x0640, /* Array index: 0x0036 */ 0x4FFC, 0x5001, 0x064B, /* Array index: 0x0039 */ 0x5017, 0x501E, 0x0651, /* Array index: 0x003C */ 0x5040, 0x5046, 0x0659, /* Array index: 0x003F */ 0x5051, 0x5053, 0x0660, /* Array index: 0x0042 */ 0x505F, 0x5067, 0x0663, /* Array index: 0x0045 */ 0x508E, 0x5096, 0x066C, /* Array index: 0x0048 */ 0x509B, 0x50A2, 0x0675, /* Array index: 0x004B */ 0x5106, 0x5110, 0x067D, /* Array index: 0x004E */ 0x5119, 0x511E, 0x0688, /* Array index: 0x0051 */ 0x5131, 0x5139, 0x068E, /* Array index: 0x0054 */ 0x51CF, 0x51D5, 0x0697, /* Array index: 0x0057 */ 0x51F2, 0x51F4, 0x069E, /* Array index: 0x005A */ 0x5212, 0x5218, 0x06A1, /* Array index: 0x005D */ 0x525F, 0x5261, 0x06A8, /* Array index: 0x0060 */ 0x5277, 0x5279, 0x06AB, /* Array index: 0x0063 */ 0x5293, 0x529C, 0x06AE, /* Array index: 0x0066 */ 0x52A4, 0x52A7, 0x06B8, /* Array index: 0x0069 */ 0x52B6, 0x52BD, 0x06BC, /* Array index: 0x006C */ 0x52E8, 0x52EC, 0x06C4, /* Array index: 0x006F */ 0x530A, 0x530C, 0x06C9, /* Array index: 0x0072 */ 0x531B, 0x531F, 0x06CC, /* Array index: 0x0075 */ 0x5325, 0x532D, 0x06D1, /* Array index: 0x0078 */ 0x533C, 0x533E, 0x06DA, /* Array index: 0x007B */ 0x53B4, 0x53BA, 0x06DD, /* Array index: 0x007E */ 0x54A6, 0x54AE, 0x06E4, /* Array index: 0x0081 */ 0x54B7, 0x54BB, 0x06ED, /* Array index: 0x0084 */ 0x54FC, 0x5501, 0x06F2, /* Array index: 0x0087 */ 0x5508, 0x550E, 0x06F8, /* Array index: 0x008A */ 0x553B, 0x553D, 0x06FF, /* Array index: 0x008D */ 0x558E, 0x5594, 0x0702, /* Array index: 0x0090 */ 0x55D1, 0x55D3, 0x0709, /* Array index: 0x0093 */ 0x560D, 0x5612, 0x070C, /* Array index: 0x0096 */ 0x5639, 0x5646, 0x0712, /* Array index: 0x0099 */ 0x565E, 0x5663, 0x0720, /* Array index: 0x009C */ 0x5699, 0x569F, 0x0726, /* Array index: 0x009F */ 0x56A6, 0x56AD, 0x072D, /* Array index: 0x00A2 */ 0x56C9, 0x56D0, 0x0735, /* Array index: 0x00A5 */ 0x56E4, 0x56E8, 0x073D, /* Array index: 0x00A8 */ 0x5720, 0x5725, 0x0742, /* Array index: 0x00AB */ 0x573D, 0x573F, 0x0748, /* Array index: 0x00AE */ 0x576B, 0x577E, 0x074B, /* Array index: 0x00B1 */ 0x5799, 0x57A1, 0x075F, /* Array index: 0x00B4 */ 0x57A7, 0x57A9, 0x0768, /* Array index: 0x00B7 */ 0x57FD, 0x57FF, 0x076B, /* Array index: 0x00BA */ 0x581E, 0x5820, 0x076E, /* Array index: 0x00BD */ 0x584C, 0x5850, 0x0771, /* Array index: 0x00C0 */ 0x587F, 0x5881, 0x0776, /* Array index: 0x00C3 */ 0x5887, 0x5890, 0x0779, /* Array index: 0x00C6 */ 0x58A0, 0x58A2, 0x0783, /* Array index: 0x00C9 */ 0x5912, 0x5914, 0x0786, /* Array index: 0x00CC */ 0x595B, 0x5963, 0x0789, /* Array index: 0x00CF */ 0x59AD, 0x59B0, 0x0792, /* Array index: 0x00D2 */ 0x59DD, 0x59DF, 0x0796, /* Array index: 0x00D5 */ 0x59EE, 0x59F4, 0x0799, /* Array index: 0x00D8 */ 0x5A0C, 0x5A0E, 0x07A0, /* Array index: 0x00DB */ 0x5A44, 0x5A48, 0x07A3, /* Array index: 0x00DE */ 0x5A9C, 0x5AA2, 0x07A8, /* Array index: 0x00E1 */ 0x5AB1, 0x5AB5, 0x07AF, /* Array index: 0x00E4 */ 0x5B7C, 0x5B81, 0x07B4, /* Array index: 0x00E7 */ 0x5B90, 0x5B96, 0x07BA, /* Array index: 0x00EA */ 0x5BD6, 0x5BDA, 0x07C1, /* Array index: 0x00ED */ 0x5C67, 0x5C69, 0x07C6, /* Array index: 0x00F0 */ 0x5C7A, 0x5C7D, 0x07C9, /* Array index: 0x00F3 */ 0x5C9F, 0x5CA3, 0x07CD, /* Array index: 0x00F6 */ 0x5D23, 0x5D27, 0x07D2, /* Array index: 0x00F9 */ 0x5D5F, 0x5D64, 0x07D7, /* Array index: 0x00FC */ 0x5D92, 0x5D95, 0x07DD, /* Array index: 0x00FF */ 0x5E68, 0x5E70, 0x07E1, /* Array index: 0x0102 */ 0x5EBD, 0x5EBF, 0x07EA, /* Array index: 0x0105 */ 0x5ED1, 0x5ED5, 0x07ED, /* Array index: 0x0108 */ 0x5F06, 0x5F08, 0x07F2, /* Array index: 0x010B */ 0x5F21, 0x5F24, 0x07F5, /* Array index: 0x010E */ 0x5FAB, 0x5FB1, 0x07F9, /* Array index: 0x0111 */ 0x5FC7, 0x5FCB, 0x0800, /* Array index: 0x0114 */ 0x5FD0, 0x5FD4, 0x0805, /* Array index: 0x0117 */ 0x5FE8, 0x5FF3, 0x080A, /* Array index: 0x011A */ 0x6047, 0x6049, 0x0816, /* Array index: 0x011D */ 0x60C8, 0x60CF, 0x0819, /* Array index: 0x0120 */ 0x6110, 0x6119, 0x0821, /* Array index: 0x0123 */ 0x6135, 0x6139, 0x082B, /* Array index: 0x0126 */ 0x617B, 0x6184, 0x0830, /* Array index: 0x0129 */ 0x619C, 0x61A0, 0x083A, /* Array index: 0x012C */ 0x61C0, 0x61C2, 0x083F, /* Array index: 0x012F */ 0x61DC, 0x61E2, 0x0842, /* Array index: 0x0132 */ 0x6242, 0x6246, 0x0849, /* Array index: 0x0135 */ 0x6250, 0x6256, 0x084E, /* Array index: 0x0138 */ 0x628D, 0x6290, 0x0855, /* Array index: 0x013B */ 0x6341, 0x6346, 0x0859, /* Array index: 0x013E */ 0x6352, 0x6354, 0x085F, /* Array index: 0x0141 */ 0x63AD, 0x63AF, 0x0862, /* Array index: 0x0144 */ 0x63D1, 0x63D5, 0x0865, /* Array index: 0x0147 */ 0x644F, 0x6454, 0x086A, /* Array index: 0x014A */ 0x645A, 0x6463, 0x0870, /* Array index: 0x014D */ 0x648F, 0x6491, 0x087A, /* Array index: 0x0150 */ 0x64BD, 0x64BF, 0x087D, /* Array index: 0x0153 */ 0x64C9, 0x64D1, 0x0880, /* Array index: 0x0156 */ 0x6508, 0x650A, 0x0889, /* Array index: 0x0159 */ 0x65B2, 0x65B4, 0x088C, /* Array index: 0x015C */ 0x65FE, 0x6600, 0x088F, /* Array index: 0x015F */ 0x661D, 0x6633, 0x0892, /* Array index: 0x0162 */ 0x6657, 0x665C, 0x08A9, /* Array index: 0x0165 */ 0x666A, 0x666C, 0x08AF, /* Array index: 0x0168 */ 0x6675, 0x6680, 0x08B2, /* Array index: 0x016B */ 0x668B, 0x668D, 0x08BE, /* Array index: 0x016E */ 0x6699, 0x66A0, 0x08C1, /* Array index: 0x0171 */ 0x66BF, 0x66C3, 0x08C9, /* Array index: 0x0174 */ 0x67B0, 0x67B2, 0x08CE, /* Array index: 0x0177 */ 0x67BB, 0x67BD, 0x08D1, /* Array index: 0x017A */ 0x682C, 0x6833, 0x08D4, /* Array index: 0x017D */ 0x686E, 0x6872, 0x08DC, /* Array index: 0x0180 */ 0x6879, 0x687C, 0x08E1, /* Array index: 0x0183 */ 0x68CF, 0x68D3, 0x08E5, /* Array index: 0x0186 */ 0x68E8, 0x68F1, 0x08EA, /* Array index: 0x0189 */ 0x68FB, 0x68FD, 0x08F4, /* Array index: 0x018C */ 0x6963, 0x6969, 0x08F7, /* Array index: 0x018F */ 0x6970, 0x6972, 0x08FE, /* Array index: 0x0192 */ 0x6A4E, 0x6A56, 0x0901, /* Array index: 0x0195 */ 0x6A9B, 0x6A9F, 0x090A, /* Array index: 0x0198 */ 0x6AAF, 0x6AB1, 0x090F, /* Array index: 0x019B */ 0x6ABD, 0x6ABF, 0x0912, /* Array index: 0x019E */ 0x6AD4, 0x6AD6, 0x0915, /* Array index: 0x01A1 */ 0x6AF0, 0x6AF2, 0x0918, /* Array index: 0x01A4 */ 0x6B0F, 0x6B11, 0x091B, /* Array index: 0x01A7 */ 0x6B9F, 0x6BA3, 0x091E, /* Array index: 0x01AA */ 0x6BA8, 0x6BB0, 0x0923, /* Array index: 0x01AD */ 0x6C26, 0x6C28, 0x092C, /* Array index: 0x01B0 */ 0x6C85, 0x6C89, 0x092F, /* Array index: 0x01B3 */ 0x6C94, 0x6C98, 0x0934, /* Array index: 0x01B6 */ 0x6CCD, 0x6CD6, 0x0939, /* Array index: 0x01B9 */ 0x6D26, 0x6D28, 0x0943, /* Array index: 0x01BC */ 0x6D94, 0x6D98, 0x0946, /* Array index: 0x01BF */ 0x6E4F, 0x6E54, 0x094B, /* Array index: 0x01C2 */ 0x6E5C, 0x6E5E, 0x0951, /* Array index: 0x01C5 */ 0x6EBF, 0x6EC3, 0x0954, /* Array index: 0x01C8 */ 0x6ECD, 0x6ECF, 0x0959, /* Array index: 0x01CB */ 0x6F4F, 0x6F53, 0x095C, /* Array index: 0x01CE */ 0x6F87, 0x6F8D, 0x0961, /* Array index: 0x01D1 */ 0x6F90, 0x6F96, 0x0968, /* Array index: 0x01D4 */ 0x6FA5, 0x6FA8, 0x096F, /* Array index: 0x01D7 */ 0x6FAE, 0x6FB0, 0x0973, /* Array index: 0x01DA */ 0x7005, 0x7007, 0x0976, /* Array index: 0x01DD */ 0x7048, 0x704B, 0x0979, /* Array index: 0x01E0 */ 0x7094, 0x7098, 0x097D, /* Array index: 0x01E3 */ 0x70D1, 0x70D8, 0x0982, /* Array index: 0x01E6 */ 0x7103, 0x7107, 0x098A, /* Array index: 0x01E9 */ 0x712D, 0x7131, 0x098F, /* Array index: 0x01EC */ 0x7145, 0x714B, 0x0994, /* Array index: 0x01EF */ 0x71AF, 0x71B3, 0x099B, /* Array index: 0x01F2 */ 0x71BF, 0x71C1, 0x09A0, /* Array index: 0x01F5 */ 0x7207, 0x7209, 0x09A3, /* Array index: 0x01F8 */ 0x7241, 0x7245, 0x09A6, /* Array index: 0x01FB */ 0x724E, 0x7250, 0x09AB, /* Array index: 0x01FE */ 0x735D, 0x7360, 0x09AE, /* Array index: 0x0201 */ 0x736B, 0x7371, 0x09B2, /* Array index: 0x0204 */ 0x739C, 0x73A6, 0x09B9, /* Array index: 0x0207 */ 0x73F7, 0x7401, 0x09C4, /* Array index: 0x020A */ 0x7426, 0x7431, 0x09CF, /* Array index: 0x020D */ 0x7443, 0x7447, 0x09DB, /* Array index: 0x0210 */ 0x7466, 0x7468, 0x09E0, /* Array index: 0x0213 */ 0x7485, 0x7489, 0x09E3, /* Array index: 0x0216 */ 0x748F, 0x7492, 0x09E8, /* Array index: 0x0219 */ 0x7498, 0x74A3, 0x09EC, /* Array index: 0x021C */ 0x74A6, 0x74B2, 0x09F8, /* Array index: 0x021F */ 0x74FA, 0x74FC, 0x0A05, /* Array index: 0x0222 */ 0x753D, 0x7540, 0x0A08, /* Array index: 0x0225 */ 0x7579, 0x757E, 0x0A0C, /* Array index: 0x0228 */ 0x75BF, 0x75C1, 0x0A12, /* Array index: 0x022B */ 0x75DF, 0x75E1, 0x0A15, /* Array index: 0x022E */ 0x7600, 0x760C, 0x0A18, /* Array index: 0x0231 */ 0x7612, 0x7616, 0x0A25, /* Array index: 0x0234 */ 0x7619, 0x761E, 0x0A2A, /* Array index: 0x0237 */ 0x7638, 0x763C, 0x0A30, /* Array index: 0x023A */ 0x7640, 0x764B, 0x0A35, /* Array index: 0x023D */ 0x766D, 0x7671, 0x0A41, /* Array index: 0x0240 */ 0x769B, 0x76AA, 0x0A46, /* Array index: 0x0243 */ 0x772D, 0x772F, 0x0A56, /* Array index: 0x0246 */ 0x7734, 0x7736, 0x0A59, /* Array index: 0x0249 */ 0x774D, 0x774F, 0x0A5C, /* Array index: 0x024C */ 0x775C, 0x7764, 0x0A5F, /* Array index: 0x024F */ 0x7770, 0x7774, 0x0A68, /* Array index: 0x0252 */ 0x7794, 0x7796, 0x0A6D, /* Array index: 0x0255 */ 0x77DE, 0x77E0, 0x0A70, /* Array index: 0x0258 */ 0x7821, 0x7823, 0x0A73, /* Array index: 0x025B */ 0x7860, 0x7864, 0x0A76, /* Array index: 0x025E */ 0x789D, 0x78A1, 0x0A7B, /* Array index: 0x0261 */ 0x78AC, 0x78B3, 0x0A80, /* Array index: 0x0264 */ 0x78C7, 0x78C9, 0x0A88, /* Array index: 0x0267 */ 0x78D2, 0x78D6, 0x0A8B, /* Array index: 0x026A */ 0x78DF, 0x78E1, 0x0A90, /* Array index: 0x026D */ 0x791C, 0x7920, 0x0A93, /* Array index: 0x0270 */ 0x7944, 0x7946, 0x0A98, /* Array index: 0x0273 */ 0x7991, 0x799C, 0x0A9B, /* Array index: 0x0276 */ 0x7A34, 0x7A3A, 0x0AA7, /* Array index: 0x0279 */ 0x7A44, 0x7A48, 0x0AAE, /* Array index: 0x027C */ 0x7A5C, 0x7A60, 0x0AB3, /* Array index: 0x027F */ 0x7AE8, 0x7AEC, 0x0AB8, /* Array index: 0x0282 */ 0x7B27, 0x7B31, 0x0ABD, /* Array index: 0x0285 */ 0x7B3D, 0x7B41, 0x0AC8, /* Array index: 0x0288 */ 0x7BBA, 0x7BBD, 0x0ACD, /* Array index: 0x028B */ 0x7BD6, 0x7BDB, 0x0AD1, /* Array index: 0x028E */ 0x7BF4, 0x7C06, 0x0AD7, /* Array index: 0x0291 */ 0x7C0B, 0x7C0F, 0x0AEA, /* Array index: 0x0294 */ 0x7C51, 0x7C5E, 0x0AEF, /* Array index: 0x0297 */ 0x7CB6, 0x7CBC, 0x0AFD, /* Array index: 0x029A */ 0x7CC7, 0x7CC9, 0x0B04, /* Array index: 0x029D */ 0x7CD3, 0x7CDA, 0x0B07, /* Array index: 0x02A0 */ 0x7D07, 0x7D09, 0x0B0F, /* Array index: 0x02A3 */ 0x7D0F, 0x7D13, 0x0B12, /* Array index: 0x02A6 */ 0x7D3C, 0x7D41, 0x0B17, /* Array index: 0x02A9 */ 0x7D59, 0x7D5D, 0x0B1D, /* Array index: 0x02AC */ 0x7D7F, 0x7D8D, 0x0B22, /* Array index: 0x02AF */ 0x7DC2, 0x7DC6, 0x0B31, /* Array index: 0x02B2 */ 0x7DCC, 0x7DCE, 0x0B36, /* Array index: 0x02B5 */ 0x7F3B, 0x7F3F, 0x0B39, /* Array index: 0x02B8 */ 0x7F5B, 0x7F5D, 0x0B3E, /* Array index: 0x02BB */ 0x7F61, 0x7F66, 0x0B41, /* Array index: 0x02BE */ 0x7F7D, 0x7F80, 0x0B47, /* Array index: 0x02C1 */ 0x7F8D, 0x7F91, 0x0B4B, /* Array index: 0x02C4 */ 0x7FFD, 0x7FFF, 0x0B50, /* Array index: 0x02C7 */ 0x800D, 0x8016, 0x0B53, /* Array index: 0x02CA */ 0x801D, 0x8020, 0x0B5D, /* Array index: 0x02CD */ 0x80D4, 0x80D8, 0x0B61, /* Array index: 0x02D0 */ 0x8116, 0x8118, 0x0B66, /* Array index: 0x02D3 */ 0x8167, 0x8169, 0x0B69, /* Array index: 0x02D6 */ 0x8184, 0x8186, 0x0B6C, /* Array index: 0x02D9 */ 0x81F0, 0x81F9, 0x0B6F, /* Array index: 0x02DC */ 0x8243, 0x8246, 0x0B79, /* Array index: 0x02DF */ 0x827D, 0x8284, 0x0B7D, /* Array index: 0x02E2 */ 0x82A0, 0x82AA, 0x0B85, /* Array index: 0x02E5 */ 0x82FD, 0x8301, 0x0B90, /* Array index: 0x02E8 */ 0x8307, 0x830B, 0x0B95, /* Array index: 0x02EB */ 0x831B, 0x8322, 0x0B9A, /* Array index: 0x02EE */ 0x832C, 0x8330, 0x0BA2, /* Array index: 0x02F1 */ 0x8342, 0x8344, 0x0BA7, /* Array index: 0x02F4 */ 0x8351, 0x8357, 0x0BAA, /* Array index: 0x02F7 */ 0x8398, 0x839D, 0x0BB1, /* Array index: 0x02FA */ 0x83BE, 0x83C0, 0x0BB7, /* Array index: 0x02FD */ 0x83CF, 0x83D1, 0x0BBA, /* Array index: 0x0300 */ 0x8456, 0x845C, 0x0BBD, /* Array index: 0x0303 */ 0x84A6, 0x84AA, 0x0BC4, /* Array index: 0x0306 */ 0x84EF, 0x84F2, 0x0BC9, /* Array index: 0x0309 */ 0x8522, 0x852B, 0x0BCD, /* Array index: 0x030C */ 0x8532, 0x8536, 0x0BD7, /* Array index: 0x030F */ 0x854F, 0x8553, 0x0BDC, /* Array index: 0x0312 */ 0x855C, 0x8564, 0x0BE1, /* Array index: 0x0315 */ 0x8579, 0x8581, 0x0BEA, /* Array index: 0x0318 */ 0x85B4, 0x85BF, 0x0BF3, /* Array index: 0x031B */ 0x860D, 0x8612, 0x0BFF, /* Array index: 0x031E */ 0x863C, 0x8642, 0x0C05, /* Array index: 0x0321 */ 0x8652, 0x8659, 0x0C0C, /* Array index: 0x0324 */ 0x8660, 0x8664, 0x0C14, /* Array index: 0x0327 */ 0x8675, 0x8677, 0x0C19, /* Array index: 0x032A */ 0x86A6, 0x86A8, 0x0C1C, /* Array index: 0x032D */ 0x86B1, 0x86B9, 0x0C1F, /* Array index: 0x0330 */ 0x86BF, 0x86C5, 0x0C28, /* Array index: 0x0333 */ 0x870E, 0x8714, 0x0C2F, /* Array index: 0x0336 */ 0x872E, 0x8732, 0x0C36, /* Array index: 0x0339 */ 0x8739, 0x8740, 0x0C3B, /* Array index: 0x033C */ 0x8783, 0x878C, 0x0C43, /* Array index: 0x033F */ 0x8795, 0x8799, 0x0C4D, /* Array index: 0x0342 */ 0x87AC, 0x87AE, 0x0C52, /* Array index: 0x0345 */ 0x87C8, 0x87CA, 0x0C55, /* Array index: 0x0348 */ 0x87E2, 0x87E4, 0x0C58, /* Array index: 0x034B */ 0x8809, 0x880B, 0x0C5B, /* Array index: 0x034E */ 0x8810, 0x881F, 0x0C5E, /* Array index: 0x0351 */ 0x8848, 0x884B, 0x0C6E, /* Array index: 0x0354 */ 0x8898, 0x88A0, 0x0C72, /* Array index: 0x0357 */ 0x88CA, 0x88D3, 0x0C7B, /* Array index: 0x035A */ 0x88EF, 0x88F1, 0x0C85, /* Array index: 0x035D */ 0x890D, 0x890F, 0x0C88, /* Array index: 0x0360 */ 0x8915, 0x891C, 0x0C8B, /* Array index: 0x0363 */ 0x8926, 0x8928, 0x0C93, /* Array index: 0x0366 */ 0x8930, 0x8932, 0x0C96, /* Array index: 0x0369 */ 0x895A, 0x895C, 0x0C99, /* Array index: 0x036C */ 0x8961, 0x8963, 0x0C9C, /* Array index: 0x036F */ 0x897A, 0x897D, 0x0C9F, /* Array index: 0x0372 */ 0x89B4, 0x89B7, 0x0CA3, /* Array index: 0x0375 */ 0x89D4, 0x89D8, 0x0CA7, /* Array index: 0x0378 */ 0x8A11, 0x8A15, 0x0CAC, /* Array index: 0x037B */ 0x8A56, 0x8A58, 0x0CB1, /* Array index: 0x037E */ 0x8A75, 0x8A80, 0x0CB4, /* Array index: 0x0381 */ 0x8AC6, 0x8ACA, 0x0CC0, /* Array index: 0x0384 */ 0x8AD1, 0x8AD7, 0x0CC5, /* Array index: 0x0387 */ 0x8AF4, 0x8AF6, 0x0CCC, /* Array index: 0x038A */ 0x8B42, 0x8B48, 0x0CCF, /* Array index: 0x038D */ 0x8B52, 0x8B54, 0x0CD6, /* Array index: 0x0390 */ 0x8C53, 0x8C5D, 0x0CD9, /* Array index: 0x0393 */ 0x8D9E, 0x8DA0, 0x0CE4, /* Array index: 0x0396 */ 0x8DC5, 0x8DCA, 0x0CE7, /* Array index: 0x0399 */ 0x8DF0, 0x8DF4, 0x0CED, /* Array index: 0x039C */ 0x8E04, 0x8E06, 0x0CF2, /* Array index: 0x039F */ 0x8E20, 0x8E27, 0x0CF5, /* Array index: 0x03A2 */ 0x8E36, 0x8E39, 0x0CFD, /* Array index: 0x03A5 */ 0x8E4B, 0x8E4F, 0x0D01, /* Array index: 0x03A8 */ 0x8E5B, 0x8E62, 0x0D06, /* Array index: 0x03AB */ 0x8E6C, 0x8E71, 0x0D0E, /* Array index: 0x03AE */ 0x8E79, 0x8E7B, 0x0D14, /* Array index: 0x03B1 */ 0x8E9A, 0x8E9E, 0x0D17, /* Array index: 0x03B4 */ 0x8EC0, 0x8EC4, 0x0D1C, /* Array index: 0x03B7 */ 0x8EED, 0x8EF1, 0x0D21, /* Array index: 0x03BA */ 0x8F16, 0x8F18, 0x0D26, /* Array index: 0x03BD */ 0x8F2C, 0x8F2E, 0x0D29, /* Array index: 0x03C0 */ 0x8F34, 0x8F37, 0x0D2C, /* Array index: 0x03C3 */ 0x8F4F, 0x8F55, 0x0D30, /* Array index: 0x03C6 */ 0x8FA0, 0x8FA6, 0x0D37, /* Array index: 0x03C9 */ 0x9028, 0x902F, 0x0D3E, /* Array index: 0x03CC */ 0x9095, 0x909B, 0x0D46, /* Array index: 0x03CF */ 0x90A0, 0x90A2, 0x0D4D, /* Array index: 0x03D2 */ 0x90B0, 0x90B6, 0x0D50, /* Array index: 0x03D5 */ 0x90C3, 0x90C8, 0x0D57, /* Array index: 0x03D8 */ 0x90D5, 0x90DF, 0x0D5D, /* Array index: 0x03DB */ 0x90FE, 0x9108, 0x0D68, /* Array index: 0x03DE */ 0x9114, 0x9129, 0x0D73, /* Array index: 0x03E1 */ 0x9136, 0x913D, 0x0D89, /* Array index: 0x03E4 */ 0x9157, 0x915B, 0x0D91, /* Array index: 0x03E7 */ 0x9179, 0x917B, 0x0D96, /* Array index: 0x03EA */ 0x9191, 0x9195, 0x0D99, /* Array index: 0x03ED */ 0x91AC, 0x91B3, 0x0D9E, /* Array index: 0x03F0 */ 0x91BB, 0x91C5, 0x0DA6, /* Array index: 0x03F3 */ 0x91E9, 0x91F1, 0x0DB1, /* Array index: 0x03F6 */ 0x9200, 0x920C, 0x0DBA, /* Array index: 0x03F9 */ 0x9223, 0x9228, 0x0DC7, /* Array index: 0x03FC */ 0x922E, 0x9230, 0x0DCD, /* Array index: 0x03FF */ 0x9235, 0x9247, 0x0DD0, /* Array index: 0x0402 */ 0x924D, 0x9251, 0x0DE3, /* Array index: 0x0405 */ 0x9265, 0x9269, 0x0DE8, /* Array index: 0x0408 */ 0x926E, 0x9270, 0x0DED, /* Array index: 0x040B */ 0x9275, 0x927F, 0x0DF0, /* Array index: 0x040E */ 0x9288, 0x928E, 0x0DFB, /* Array index: 0x0411 */ 0x92A4, 0x92A8, 0x0E02, /* Array index: 0x0414 */ 0x92B8, 0x92D0, 0x0E07, /* Array index: 0x0417 */ 0x92D5, 0x92E8, 0x0E20, /* Array index: 0x041A */ 0x931C, 0x932A, 0x0E34, /* Array index: 0x041D */ 0x9333, 0x9337, 0x0E43, /* Array index: 0x0420 */ 0x9347, 0x9349, 0x0E48, /* Array index: 0x0423 */ 0x9350, 0x9352, 0x0E4B, /* Array index: 0x0426 */ 0x936D, 0x9376, 0x0E4E, /* Array index: 0x0429 */ 0x937D, 0x9382, 0x0E58, /* Array index: 0x042C */ 0x93B4, 0x93B6, 0x0E5E, /* Array index: 0x042F */ 0x93C4, 0x93CD, 0x0E61, /* Array index: 0x0432 */ 0x93F7, 0x93FD, 0x0E6B, /* Array index: 0x0435 */ 0x940D, 0x940F, 0x0E72, /* Array index: 0x0438 */ 0x9415, 0x9417, 0x0E75, /* Array index: 0x043B */ 0x942E, 0x9434, 0x0E78, /* Array index: 0x043E */ 0x946B, 0x9472, 0x0E7F, /* Array index: 0x0441 */ 0x958C, 0x958E, 0x0E87, /* Array index: 0x0444 */ 0x959D, 0x95A1, 0x0E8A, /* Array index: 0x0447 */ 0x95D0, 0x95D3, 0x0E8F, /* Array index: 0x044A */ 0x95D9, 0x95E0, 0x0E93, /* Array index: 0x044D */ 0x9622, 0x9626, 0x0E9B, /* Array index: 0x0450 */ 0x9637, 0x963D, 0x0EA0, /* Array index: 0x0453 */ 0x9654, 0x9658, 0x0EA7, /* Array index: 0x0456 */ 0x967B, 0x9684, 0x0EAC, /* Array index: 0x0459 */ 0x96A4, 0x96A6, 0x0EB6, /* Array index: 0x045C */ 0x96DD, 0x96DF, 0x0EB9, /* Array index: 0x045F */ 0x9721, 0x9723, 0x0EBC, /* Array index: 0x0462 */ 0x9757, 0x975B, 0x0EBF, /* Array index: 0x0465 */ 0x9776, 0x9778, 0x0EC4, /* Array index: 0x0468 */ 0x9795, 0x979A, 0x0EC7, /* Array index: 0x046B */ 0x97B5, 0x97D1, 0x0ECD, /* Array index: 0x046E */ 0x97D7, 0x97E1, 0x0EEA, /* Array index: 0x0471 */ 0x982E, 0x9835, 0x0EF5, /* Array index: 0x0474 */ 0x9851, 0x985A, 0x0EFD, /* Array index: 0x0477 */ 0x9862, 0x9866, 0x0F07, /* Array index: 0x047A */ 0x98B7, 0x98BB, 0x0F0C, /* Array index: 0x047D */ 0x98E3, 0x98E7, 0x0F11, /* Array index: 0x0480 */ 0x9915, 0x991C, 0x0F16, /* Array index: 0x0483 */ 0x9931, 0x993C, 0x0F1E, /* Array index: 0x0486 */ 0x9946, 0x9948, 0x0F2A, /* Array index: 0x0489 */ 0x9958, 0x9960, 0x0F2D, /* Array index: 0x048C */ 0x99B0, 0x99B2, 0x0F36, /* Array index: 0x048F */ 0x99EA, 0x99EC, 0x0F39, /* Array index: 0x0492 */ 0x9A02, 0x9A04, 0x0F3C, /* Array index: 0x0495 */ 0x9A20, 0x9A24, 0x0F3F, /* Array index: 0x0498 */ 0x9A4A, 0x9A4E, 0x0F44, /* Array index: 0x049B */ 0x9AB2, 0x9AB6, 0x0F49, /* Array index: 0x049E */ 0x9AD5, 0x9AD7, 0x0F4E, /* Array index: 0x04A1 */ 0x9AFD, 0x9B12, 0x0F51, /* Array index: 0x04A4 */ 0x9B33, 0x9B3A, 0x0F67, /* Array index: 0x04A7 */ 0x9B55, 0x9B57, 0x0F6F, /* Array index: 0x04AA */ 0x9B68, 0x9B6E, 0x0F72, /* Array index: 0x04AD */ 0x9B75, 0x9B79, 0x0F79, /* Array index: 0x04B0 */ 0x9B84, 0x9B90, 0x0F7E, /* Array index: 0x04B3 */ 0x9BB0, 0x9BB2, 0x0F8B, /* Array index: 0x04B6 */ 0x9BBB, 0x9BC1, 0x0F8E, /* Array index: 0x04B9 */ 0x9BF7, 0x9BFA, 0x0F95, /* Array index: 0x04BC */ 0x9C16, 0x9C1E, 0x0F99, /* Array index: 0x04BF */ 0x9C22, 0x9C2A, 0x0FA2, /* Array index: 0x04C2 */ 0x9C35, 0x9C37, 0x0FAB, /* Array index: 0x04C5 */ 0x9C41, 0x9C45, 0x0FAE, /* Array index: 0x04C8 */ 0x9C4E, 0x9C5F, 0x0FB3, /* Array index: 0x04CB */ 0x9C68, 0x9C6B, 0x0FC5, /* Array index: 0x04CE */ 0x9D1C, 0x9D1E, 0x0FC9, /* Array index: 0x04D1 */ 0x9D2F, 0x9D34, 0x0FCC, /* Array index: 0x04D4 */ 0x9D69, 0x9D6B, 0x0FD2, /* Array index: 0x04D7 */ 0x9D92, 0x9D98, 0x0FD5, /* Array index: 0x04DA */ 0x9DD4, 0x9DD7, 0x0FDC, /* Array index: 0x04DD */ 0x9DDE, 0x9DE0, 0x0FE0, /* Array index: 0x04E0 */ 0x9E0E, 0x9E16, 0x0FE3, /* Array index: 0x04E3 */ 0x9E7A, 0x9E7C, 0x0FEC, /* Array index: 0x04E6 */ 0x9E80, 0x9E87, 0x0FEF, /* Array index: 0x04E9 */ 0x9EAC, 0x9EB5, 0x0FF7, /* Array index: 0x04EC */ 0x9EEC, 0x9EF2, 0x1001, /* Array index: 0x04EF */ 0x9F0F, 0x9F1B, 0x1008, /* Array index: 0x04F2 */ 0x9F39, 0x9F47, 0x1015, /* Array index: 0x04F5 */ 0x9F53, 0x9F5E, 0x1024, /* Array index: 0x04F8 */ 0x9F6D, 0x9F75, 0x1030, /* Array index: 0x04FB */ 0x9F8F, 0x9F97, 0x1039, /* Array index: 0x04FE */ 0x9FA1, 0x9FA5, 0x1042, /* Ranges content */ /* Range 0x00BF - 0x017E, array index: 0x0501 */ 0x2244,0x2A22,0x2A21,0x2A24,0x2A2A,0x2A23,0x2A29,0x2921, 0x2A2E,0x2A32,0x2A31,0x2A34,0x2A33,0x2A40,0x2A3F,0x2A42, 0x2A41,INVALC,0x2A50,0x2A52,0x2A51,0x2A54,0x2A58,0x2A53, INVALC,0x292C,0x2A63,0x2A62,0x2A65,0x2A64,0x2A72,0x2930, 0x294E,0x2B22,0x2B21,0x2B24,0x2B2A,0x2B23,0x2B29,0x2941, 0x2B2E,0x2B32,0x2B31,0x2B34,0x2B33,0x2B40,0x2B3F,0x2B42, 0x2B41,0x2943,0x2B50,0x2B52,0x2B51,0x2B54,0x2B58,0x2B53, INVALC,0x294C,0x2B63,0x2B62,0x2B65,0x2B64,0x2B72,0x2950, 0x2B73,0x2A27,0x2B27,0x2A25,0x2B25,0x2A28,0x2B28,0x2A2B, 0x2B2B,0x2A2C,0x2B2C,0x2A2F,0x2B2F,0x2A2D,0x2B2D,0x2A30, 0x2B30,0x2922,0x2942,0x2A37,0x2B37,INVALC,INVALC,0x2A36, 0x2B36,0x2A38,0x2B38,0x2A35,0x2B35,0x2A3A,0x2B3A,0x2A3B, 0x2B3B,0x2A3D,0x2B3D,0x2A3C,INVALC,0x2A3E,0x2B3E,0x2924, 0x2944,0x2A47,0x2B47,0x2A45,0x2B45,INVALC,INVALC,0x2A46, 0x2B46,0x2A44,0x2945,0x2926,0x2946,0x2A48,0x2B48,0x2A49, 0x2B49,0x2947,0x2A4A,0x2B4A,0x2A4C,0x2B4C,0x2A4B,0x2B4B, 0x2929,0x2949,0x2928,0x2948,0x2A4D,0x2B4D,0x2A4F,0x2B4F, 0x2A4E,0x2B4E,0x294A,0x292B,0x294B,0x2A57,0x2B57,INVALC, INVALC,0x2A56,0x2B56,0x292D,0x294D,0x2A59,0x2B59,0x2A5B, 0x2B5B,0x2A5A,0x2B5A,0x2A5C,0x2B5C,0x2A5D,0x2B5D,0x2A5F, 0x2B5F,0x2A5E,0x2B5E,0x2A61,0x2B61,0x2A60,0x2B60,0x292F, 0x294F,0x2A6C,0x2B6C,0x2A69,0x2B69,0x2A66,0x2B66,0x2A6B, 0x2B6B,0x2A68,0x2B68,0x2A6A,0x2B6A,0x2A71,0x2B71,0x2A74, 0x2B74,0x2A73,0x2A75,0x2B75,0x2A77,0x2B77,0x2A76,0x2B76, /* Range 0x01CD - 0x01DC, array index: 0x05C1 */ 0x2A26,0x2B26,0x2A43,0x2B43,0x2A55,0x2B55,0x2A67,0x2B67, 0x2A70,0x2B70,0x2A6D,0x2B6D,0x2A6F,0x2B6F,0x2A6E,0x2B6E, /* Range 0x02D8 - 0x02DD, array index: 0x05D1 */ 0x222F,0x2232,0x2236,0x2235,INVALC,0x2233, /* Range 0x0384 - 0x0390, array index: 0x05D7 */ 0x2238,0x2239,0x2661,INVALC,0x2662,0x2663,0x2664,INVALC, 0x2667,INVALC,0x2669,0x266C,0x2676, /* Range 0x03AA - 0x03B0, array index: 0x05E4 */ 0x2665,0x266A,0x2671,0x2672,0x2673,0x2674,0x267B, /* Range 0x03CA - 0x03CE, array index: 0x05EB */ 0x2675,0x267A,0x2677,0x2679,0x267C, /* Range 0x0402 - 0x040F, array index: 0x05F0 */ 0x2742,0x2743,0x2744,0x2745,0x2746,0x2747,0x2748,0x2749, 0x274A,0x274B,0x274C,INVALC,0x274D,0x274E, /* Range 0x0452 - 0x045F, array index: 0x05FE */ 0x2772,0x2773,0x2774,0x2775,0x2776,0x2777,0x2778,0x2779, 0x277A,0x277B,0x277C,INVALC,0x277D,0x277E, /* Range 0x4E2E - 0x4E30, array index: 0x060C */ 0x302B,0x302C,0x302D, /* Range 0x4EE0 - 0x4EE2, array index: 0x060F */ 0x3047,0x3048,0x3049, /* Range 0x4EFD - 0x4F03, array index: 0x0612 */ 0x304F,0x3050,0x3051,0x3052,INVALC,0x3053,0x3054, /* Range 0x4F15 - 0x4F19, array index: 0x0619 */ 0x3059,0x305A,0x305B,INVALC,0x305C, /* Range 0x4F48 - 0x4F4C, array index: 0x061E */ 0x3068,0x3069,INVALC,0x306A,0x306B, /* Range 0x4F77 - 0x4F85, array index: 0x0623 */ 0x3076,0x3077,0x3078,0x3079,INVALC,INVALC,0x307A,0x307B, INVALC,INVALC,0x307C,0x307D,INVALC,0x307E,0x3121, /* Range 0x4F90 - 0x4F94, array index: 0x0632 */ 0x3126,INVALC,0x3127,0x3128,0x3129, /* Range 0x4FB9 - 0x4FC1, array index: 0x0637 */ 0x3131,INVALC,0x3132,0x3133,0x3134,0x3135,INVALC,0x3136, 0x3137, /* Range 0x4FC5 - 0x4FCF, array index: 0x0640 */ 0x3138,0x3139,INVALC,0x313A,0x313B,INVALC,0x313C,0x313D, 0x313E,INVALC,0x313F, /* Range 0x4FFC - 0x5001, array index: 0x064B */ 0x3146,0x3147,INVALC,0x3148,0x3149,0x314A, /* Range 0x5017 - 0x501E, array index: 0x0651 */ 0x3152,0x3153,INVALC,INVALC,0x3154,0x3155,0x3156,0x3157, /* Range 0x5040 - 0x5046, array index: 0x0659 */ 0x315F,0x3160,0x3161,INVALC,INVALC,0x3162,0x3163, /* Range 0x5051 - 0x5053, array index: 0x0660 */ 0x3167,0x3168,0x3169, /* Range 0x505F - 0x5067, array index: 0x0663 */ 0x316C,0x316D,INVALC,0x316E,0x316F,INVALC,INVALC,0x3170, 0x3171, /* Range 0x508E - 0x5096, array index: 0x066C */ 0x317C,0x317D,0x317E,INVALC,0x3221,0x3222,0x3223,INVALC, 0x3224, /* Range 0x509B - 0x50A2, array index: 0x0675 */ 0x3225,0x3226,INVALC,0x3227,0x3228,0x3229,0x322A,0x322B, /* Range 0x5106 - 0x5110, array index: 0x067D */ 0x324A,0x324B,0x324C,INVALC,INVALC,0x324D,0x324E,0x324F, 0x3250,INVALC,0x3252, /* Range 0x5119 - 0x511E, array index: 0x0688 */ 0x3254,INVALC,0x3255,0x3256,0x3257,0x3258, /* Range 0x5131 - 0x5139, array index: 0x068E */ 0x325F,INVALC,0x3260,0x3261,0x3262,INVALC,INVALC,0x3263, 0x3264, /* Range 0x51CF - 0x51D5, array index: 0x0697 */ 0x3322,INVALC,0x3323,0x3324,0x3325,INVALC,0x3326, /* Range 0x51F2 - 0x51F4, array index: 0x069E */ 0x332C,0x332D,0x332E, /* Range 0x5212 - 0x5218, array index: 0x06A1 */ 0x3333,0x3334,INVALC,0x3335,0x3336,INVALC,0x3337, /* Range 0x525F - 0x5261, array index: 0x06A8 */ 0x3345,0x3346,0x3347, /* Range 0x5277 - 0x5279, array index: 0x06AB */ 0x334A,0x334B,0x334C, /* Range 0x5293 - 0x529C, array index: 0x06AE */ 0x3352,INVALC,0x3353,0x3354,0x3355,0x3356,INVALC,0x3357, INVALC,0x3358, /* Range 0x52A4 - 0x52A7, array index: 0x06B8 */ 0x3359,0x335A,0x335B,0x335C, /* Range 0x52B6 - 0x52BD, array index: 0x06BC */ 0x335F,0x3360,0x3361,INVALC,0x3362,0x3363,INVALC,0x3364, /* Range 0x52E8 - 0x52EC, array index: 0x06C4 */ 0x3372,0x3373,0x3374,INVALC,0x3375, /* Range 0x530A - 0x530C, array index: 0x06C9 */ 0x337D,0x337E,0x3421, /* Range 0x531B - 0x531F, array index: 0x06CC */ 0x3425,0x3426,INVALC,0x3427,0x3428, /* Range 0x5325 - 0x532D, array index: 0x06D1 */ 0x3429,INVALC,0x342A,0x342B,0x342C,INVALC,0x342D,0x342E, 0x342F, /* Range 0x533C - 0x533E, array index: 0x06DA */ 0x3433,0x3434,0x3435, /* Range 0x53B4 - 0x53BA, array index: 0x06DD */ 0x3451,0x3452,INVALC,0x3453,0x3454,INVALC,0x3455, /* Range 0x54A6 - 0x54AE, array index: 0x06E4 */ 0x352D,0x352E,INVALC,0x352F,0x3530,INVALC,INVALC,0x3531, 0x3532, /* Range 0x54B7 - 0x54BB, array index: 0x06ED */ 0x3534,INVALC,0x3535,0x3536,0x3537, /* Range 0x54FC - 0x5501, array index: 0x06F2 */ 0x3542,INVALC,0x3543,0x3544,0x3545,0x3546, /* Range 0x5508 - 0x550E, array index: 0x06F8 */ 0x3548,0x3549,INVALC,INVALC,0x354A,0x354B,0x354C, /* Range 0x553B - 0x553D, array index: 0x06FF */ 0x3553,0x3554,0x3555, /* Range 0x558E - 0x5594, array index: 0x0702 */ 0x356A,0x356B,INVALC,0x356C,0x356D,0x356E,0x356F, /* Range 0x55D1 - 0x55D3, array index: 0x0709 */ 0x357D,0x357E,0x3621, /* Range 0x560D - 0x5612, array index: 0x070C */ 0x362D,0x362E,0x362F,0x3630,0x3631,0x3632, /* Range 0x5639 - 0x5646, array index: 0x0712 */ 0x3639,INVALC,0x363A,0x363B,0x363C,INVALC,0x363D,0x363E, 0x363F,INVALC,0x3640,0x3641,INVALC,0x3642, /* Range 0x565E - 0x5663, array index: 0x0720 */ 0x3648,INVALC,0x3649,0x364A,0x364B,0x364C, /* Range 0x5699 - 0x569F, array index: 0x0726 */ 0x365A,0x365B,INVALC,INVALC,0x365C,0x365D,0x365E, /* Range 0x56A6 - 0x56AD, array index: 0x072D */ 0x365F,0x3660,0x3661,0x3662,INVALC,0x3663,0x3664,0x3665, /* Range 0x56C9 - 0x56D0, array index: 0x0735 */ 0x366B,0x366C,0x366D,0x3670,0x3671,INVALC,0x366E,0x366F, /* Range 0x56E4 - 0x56E8, array index: 0x073D */ 0x3677,0x3678,0x3679,0x367A,0x367B, /* Range 0x5720 - 0x5725, array index: 0x0742 */ 0x372D,INVALC,0x372E,0x372F,0x3730,0x3731, /* Range 0x573D - 0x573F, array index: 0x0748 */ 0x3739,0x373A,0x373B, /* Range 0x576B - 0x577E, array index: 0x074B */ 0x3745,INVALC,0x3746,0x3747,0x3748,0x3749,0x374A,INVALC, 0x374B,0x374C,0x374D,INVALC,0x374E,INVALC,0x374F,0x3750, 0x3751,0x3752,INVALC,0x3753, /* Range 0x5799 - 0x57A1, array index: 0x075F */ 0x3759,0x375A,INVALC,0x375B,0x375C,0x375D,0x375E,INVALC, 0x375F, /* Range 0x57A7 - 0x57A9, array index: 0x0768 */ 0x3761,0x3762,0x3763, /* Range 0x57FD - 0x57FF, array index: 0x076B */ 0x3777,0x3778,0x3779, /* Range 0x581E - 0x5820, array index: 0x076E */ 0x3824,0x3825,0x3826, /* Range 0x584C - 0x5850, array index: 0x0771 */ 0x382E,0x382F,INVALC,0x3830,0x3831, /* Range 0x587F - 0x5881, array index: 0x0776 */ 0x383A,0x383B,0x383C, /* Range 0x5887 - 0x5890, array index: 0x0779 */ 0x383D,0x383E,0x383F,0x3840,INVALC,0x3841,0x3842,INVALC, 0x3843,0x3844, /* Range 0x58A0 - 0x58A2, array index: 0x0783 */ 0x3848,0x3849,0x384A, /* Range 0x5912 - 0x5914, array index: 0x0786 */ 0x3863,0x3864,0x3865, /* Range 0x595B - 0x5963, array index: 0x0789 */ 0x3877,INVALC,0x3878,0x3879,0x387A,INVALC,0x387B,INVALC, 0x387C, /* Range 0x59AD - 0x59B0, array index: 0x0792 */ 0x3931,0x3932,0x3933,0x3934, /* Range 0x59DD - 0x59DF, array index: 0x0796 */ 0x3940,0x3941,0x3942, /* Range 0x59EE - 0x59F4, array index: 0x0799 */ 0x3946,0x3947,INVALC,0x3948,0x3949,INVALC,0x394A, /* Range 0x5A0C - 0x5A0E, array index: 0x07A0 */ 0x394E,0x394F,0x3950, /* Range 0x5A44 - 0x5A48, array index: 0x07A3 */ 0x395B,0x395C,INVALC,0x395D,0x395E, /* Range 0x5A9C - 0x5AA2, array index: 0x07A8 */ 0x3970,INVALC,0x3971,0x3972,0x3973,INVALC,0x3974, /* Range 0x5AB1 - 0x5AB5, array index: 0x07AF */ 0x3977,0x3978,0x3979,INVALC,0x397A, /* Range 0x5B7C - 0x5B81, array index: 0x07B4 */ 0x3A43,0x3A44,0x3A45,0x3A46,INVALC,0x3A47, /* Range 0x5B90 - 0x5B96, array index: 0x07BA */ 0x3A4C,0x3A4D,INVALC,0x3A4E,0x3A4F,INVALC,0x3A50, /* Range 0x5BD6 - 0x5BDA, array index: 0x07C1 */ 0x3A5F,0x3A60,0x3A61,0x3A62,0x3A63, /* Range 0x5C67 - 0x5C69, array index: 0x07C6 */ 0x3A7C,0x3A7D,0x3A7E, /* Range 0x5C7A - 0x5C7D, array index: 0x07C9 */ 0x3B25,0x3B26,0x3B27,0x3B28, /* Range 0x5C9F - 0x5CA3, array index: 0x07CD */ 0x3B2F,0x3B30,INVALC,0x3B31,0x3B32, /* Range 0x5D23 - 0x5D27, array index: 0x07D2 */ 0x3B47,0x3B48,INVALC,0x3B49,0x3B4A, /* Range 0x5D5F - 0x5D64, array index: 0x07D7 */ 0x3B58,0x3B59,0x3B5A,0x3B5B,INVALC,0x3B5C, /* Range 0x5D92 - 0x5D95, array index: 0x07DD */ 0x3B68,0x3B69,0x3B6A,0x3B6B, /* Range 0x5E68 - 0x5E70, array index: 0x07E1 */ 0x3C3B,INVALC,0x3C3C,0x3C3D,0x3C3E,0x3C3F,0x3C40,INVALC, 0x3C41, /* Range 0x5EBD - 0x5EBF, array index: 0x07EA */ 0x3C4D,0x3C4E,0x3C4F, /* Range 0x5ED1 - 0x5ED5, array index: 0x07ED */ 0x3C54,0x3C55,INVALC,0x3C56,0x3C57, /* Range 0x5F06 - 0x5F08, array index: 0x07F2 */ 0x3C5D,0x3C5E,0x3C5F, /* Range 0x5F21 - 0x5F24, array index: 0x07F5 */ 0x3C64,0x3C65,0x3C66,0x3C67, /* Range 0x5FAB - 0x5FB1, array index: 0x07F9 */ 0x3D31,0x3D33,INVALC,INVALC,0x3D34,0x3D35,0x3D36, /* Range 0x5FC7 - 0x5FCB, array index: 0x0800 */ 0x3D39,0x3D3A,0x3D3B,INVALC,0x3D3C, /* Range 0x5FD0 - 0x5FD4, array index: 0x0805 */ 0x3D3D,0x3D3E,0x3D3F,0x3D40,0x3D41, /* Range 0x5FE8 - 0x5FF3, array index: 0x080A */ 0x3D45,0x3D46,0x3D47,INVALC,0x3D48,0x3D49,0x3D4A,0x3D4B, INVALC,INVALC,0x3D4C,0x3D4D, /* Range 0x6047 - 0x6049, array index: 0x0816 */ 0x3D5F,0x3D60,0x3D61, /* Range 0x60C8 - 0x60CF, array index: 0x0819 */ 0x3E25,0x3E26,0x3E27,0x3E28,INVALC,INVALC,0x3E29,0x3E2A, /* Range 0x6110 - 0x6119, array index: 0x0821 */ 0x3E3C,0x3E3D,0x3E3E,0x3E3F,0x3E40,INVALC,0x3E41,0x3E42, INVALC,0x3E43, /* Range 0x6135 - 0x6139, array index: 0x082B */ 0x3E4B,0x3E4C,0x3E4D,INVALC,0x3E4E, /* Range 0x617B - 0x6184, array index: 0x0830 */ 0x3E58,0x3E59,INVALC,INVALC,0x3E5A,0x3E5B,0x3E5C,INVALC, 0x3E5D,0x3E5E, /* Range 0x619C - 0x61A0, array index: 0x083A */ 0x3E65,0x3E66,INVALC,0x3E67,0x3E68, /* Range 0x61C0 - 0x61C2, array index: 0x083F */ 0x3E70,0x3E71,0x3E72, /* Range 0x61DC - 0x61E2, array index: 0x0842 */ 0x3E76,0x3E77,0x3E78,0x3E79,INVALC,0x3E7A,0x3E7B, /* Range 0x6242 - 0x6246, array index: 0x0849 */ 0x3F33,0x3F34,0x3F35,INVALC,0x3F36, /* Range 0x6250 - 0x6256, array index: 0x084E */ 0x3F38,0x3F39,0x3F3A,INVALC,0x3F3B,INVALC,0x3F3C, /* Range 0x628D - 0x6290, array index: 0x0855 */ 0x3F45,0x3F46,0x3F47,0x3F48, /* Range 0x6341 - 0x6346, array index: 0x0859 */ 0x3F6B,0x3F6C,0x3F6D,0x3F6E,INVALC,0x3F6F, /* Range 0x6352 - 0x6354, array index: 0x085F */ 0x3F73,0x3F74,0x3F75, /* Range 0x63AD - 0x63AF, array index: 0x0862 */ 0x4031,0x4032,0x4033, /* Range 0x63D1 - 0x63D5, array index: 0x0865 */ 0x4039,INVALC,0x403A,0x403B,0x403C, /* Range 0x644F - 0x6454, array index: 0x086A */ 0x405A,INVALC,0x405B,0x405C,0x405D,0x405E, /* Range 0x645A - 0x6463, array index: 0x0870 */ 0x405F,0x4060,0x4061,0x4062,INVALC,0x4063,0x4064,0x4065, INVALC,0x4066, /* Range 0x648F - 0x6491, array index: 0x087A */ 0x406E,0x406F,0x4070, /* Range 0x64BD - 0x64BF, array index: 0x087D */ 0x407C,0x407D,0x407E, /* Range 0x64C9 - 0x64D1, array index: 0x0880 */ 0x4122,0x4123,0x4124,0x4125,INVALC,0x4126,INVALC,0x4127, 0x4128, /* Range 0x6508 - 0x650A, array index: 0x0889 */ 0x4137,0x4138,0x4139, /* Range 0x65B2 - 0x65B4, array index: 0x088C */ 0x4161,0x4162,0x4163, /* Range 0x65FE - 0x6600, array index: 0x088F */ 0x4173,0x4174,0x4175, /* Range 0x661D - 0x6633, array index: 0x0892 */ 0x417E,0x4221,INVALC,INVALC,0x4222,0x4223,0x4224,0x4225, INVALC,0x4226,INVALC,INVALC,0x4227,0x4228,0x4229,0x422A, INVALC,0x422B,INVALC,0x422C,0x422D,INVALC,0x422E, /* Range 0x6657 - 0x665C, array index: 0x08A9 */ 0x4238,0x4239,0x423A,INVALC,0x423B,0x423C, /* Range 0x666A - 0x666C, array index: 0x08AF */ 0x4240,0x4241,0x4242, /* Range 0x6675 - 0x6680, array index: 0x08B2 */ 0x4245,INVALC,0x4247,0x4248,0x4249,INVALC,0x424A,0x424C, INVALC,0x4243,0x4246,0x424B, /* Range 0x668B - 0x668D, array index: 0x08BE */ 0x424D,0x424E,0x424F, /* Range 0x6699 - 0x66A0, array index: 0x08C1 */ 0x4252,0x4253,0x4254,0x4255,INVALC,INVALC,0x4256,0x4257, /* Range 0x66BF - 0x66C3, array index: 0x08C9 */ 0x425E,0x425F,INVALC,0x4260,0x4261, /* Range 0x67B0 - 0x67B2, array index: 0x08CE */ 0x4331,0x4332,0x4333, /* Range 0x67BB - 0x67BD, array index: 0x08D1 */ 0x4335,0x4336,0x4337, /* Range 0x682C - 0x6833, array index: 0x08D4 */ 0x4350,0x4351,INVALC,0x4352,0x4353,0x4354,INVALC,0x4355, /* Range 0x686E - 0x6872, array index: 0x08DC */ 0x4361,0x4362,0x4363,0x4364,0x4365, /* Range 0x6879 - 0x687C, array index: 0x08E1 */ 0x4367,0x4368,0x4369,0x436A, /* Range 0x68CF - 0x68D3, array index: 0x08E5 */ 0x437E,0x4421,0x4422,INVALC,0x4423, /* Range 0x68E8 - 0x68F1, array index: 0x08EA */ 0x4429,INVALC,0x442A,0x442B,0x442C,0x442D,INVALC,INVALC, 0x442E,0x442F, /* Range 0x68FB - 0x68FD, array index: 0x08F4 */ 0x4432,0x4433,0x4434, /* Range 0x6963 - 0x6969, array index: 0x08F7 */ 0x4448,0x4449,0x444A,0x444B,INVALC,0x444C,0x444D, /* Range 0x6970 - 0x6972, array index: 0x08FE */ 0x444F,0x4450,0x4451, /* Range 0x6A4E - 0x6A56, array index: 0x0901 */ 0x452A,INVALC,0x452B,0x452C,0x452D,INVALC,INVALC,0x452E, 0x452F, /* Range 0x6A9B - 0x6A9F, array index: 0x090A */ 0x453E,INVALC,0x453F,0x4540,0x4541, /* Range 0x6AAF - 0x6AB1, array index: 0x090F */ 0x4544,0x4545,0x4546, /* Range 0x6ABD - 0x6ABF, array index: 0x0912 */ 0x4548,0x4549,0x454A, /* Range 0x6AD4 - 0x6AD6, array index: 0x0915 */ 0x4550,0x4551,0x4552, /* Range 0x6AF0 - 0x6AF2, array index: 0x0918 */ 0x4558,0x4559,0x455A, /* Range 0x6B0F - 0x6B11, array index: 0x091B */ 0x4562,0x4563,0x4564, /* Range 0x6B9F - 0x6BA3, array index: 0x091E */ 0x4626,0x4627,INVALC,0x4628,0x4629, /* Range 0x6BA8 - 0x6BB0, array index: 0x0923 */ 0x462A,0x462B,INVALC,INVALC,0x462C,0x462D,0x462E,INVALC, 0x462F, /* Range 0x6C26 - 0x6C28, array index: 0x092C */ 0x464D,0x464E,0x464F, /* Range 0x6C85 - 0x6C89, array index: 0x092F */ 0x4669,0x466A,0x466B,INVALC,0x466C, /* Range 0x6C94 - 0x6C98, array index: 0x0934 */ 0x466D,0x466E,INVALC,0x466F,0x4670, /* Range 0x6CCD - 0x6CD6, array index: 0x0939 */ 0x4678,INVALC,0x4679,0x467A,0x467B,0x467C,INVALC,0x467D, INVALC,0x467E, /* Range 0x6D26 - 0x6D28, array index: 0x0943 */ 0x4733,0x4734,0x4735, /* Range 0x6D94 - 0x6D98, array index: 0x0946 */ 0x474A,INVALC,0x474B,0x474C,0x474D, /* Range 0x6E4F - 0x6E54, array index: 0x094B */ 0x4776,INVALC,0x4777,0x4778,0x4779,0x477A, /* Range 0x6E5C - 0x6E5E, array index: 0x0951 */ 0x477C,0x477D,0x477E, /* Range 0x6EBF - 0x6EC3, array index: 0x0954 */ 0x4831,0x4832,0x4833,INVALC,0x4834, /* Range 0x6ECD - 0x6ECF, array index: 0x0959 */ 0x4838,0x4839,0x483A, /* Range 0x6F4F - 0x6F53, array index: 0x095C */ 0x4854,INVALC,0x4855,0x4856,0x4857, /* Range 0x6F87 - 0x6F8D, array index: 0x0961 */ 0x4864,0x4865,INVALC,INVALC,0x4866,0x4867,0x4868, /* Range 0x6F90 - 0x6F96, array index: 0x0968 */ 0x4869,INVALC,0x486A,0x486B,0x486C,INVALC,0x486D, /* Range 0x6FA5 - 0x6FA8, array index: 0x096F */ 0x4871,0x4872,0x4873,0x4874, /* Range 0x6FAE - 0x6FB0, array index: 0x0973 */ 0x4875,0x4876,0x4877, /* Range 0x7005 - 0x7007, array index: 0x0976 */ 0x492B,0x492C,0x492D, /* Range 0x7048 - 0x704B, array index: 0x0979 */ 0x4939,0x493A,0x493B,0x493C, /* Range 0x7094 - 0x7098, array index: 0x097D */ 0x494C,0x494D,0x494E,0x494F,0x4950, /* Range 0x70D1 - 0x70D8, array index: 0x0982 */ 0x4959,INVALC,0x495A,0x495B,0x495C,0x495D,INVALC,0x495E, /* Range 0x7103 - 0x7107, array index: 0x098A */ 0x4962,0x4963,0x4964,0x4965,0x4966, /* Range 0x712D - 0x7131, array index: 0x098F */ 0x496D,INVALC,0x496E,0x496F,0x4970, /* Range 0x7145 - 0x714B, array index: 0x0994 */ 0x4973,0x4974,0x4975,INVALC,INVALC,0x4976,0x4977, /* Range 0x71AF - 0x71B3, array index: 0x099B */ 0x4A2C,0x4A2D,INVALC,0x4A2E,0x4A2F, /* Range 0x71BF - 0x71C1, array index: 0x09A0 */ 0x4A31,0x4A32,0x4A33, /* Range 0x7207 - 0x7209, array index: 0x09A3 */ 0x4A3F,0x4A40,0x4A41, /* Range 0x7241 - 0x7245, array index: 0x09A6 */ 0x4A4D,0x4A4E,0x4A4F,INVALC,0x4A50, /* Range 0x724E - 0x7250, array index: 0x09AB */ 0x4A51,0x4A52,0x4A53, /* Range 0x735D - 0x7360, array index: 0x09AE */ 0x4B3E,0x4B3F,0x4B40,0x4B41, /* Range 0x736B - 0x7371, array index: 0x09B2 */ 0x4B45,0x4B46,INVALC,0x4B47,0x4B48,INVALC,0x4B49, /* Range 0x739C - 0x73A6, array index: 0x09B9 */ 0x4B58,INVALC,0x4B59,0x4B5A,0x4B5B,INVALC,0x4B5C,INVALC, INVALC,0x4B5D,0x4B5E, /* Range 0x73F7 - 0x7401, array index: 0x09C4 */ 0x4B7A,INVALC,0x4B7B,0x4B7C,0x4B7D,INVALC,0x4B7E,INVALC, 0x4C21,0x4C22,0x4C23, /* Range 0x7426 - 0x7431, array index: 0x09CF */ 0x4C2B,INVALC,0x4C2C,0x4C2D,0x4C2E,0x4C2F,0x4C30,0x4C31, 0x4C32,0x4C33,0x4C34,0x4C35, /* Range 0x7443 - 0x7447, array index: 0x09DB */ 0x4C38,0x4C39,INVALC,0x4C3A,0x4C3B, /* Range 0x7466 - 0x7468, array index: 0x09E0 */ 0x4C43,0x4C44,0x4C45, /* Range 0x7485 - 0x7489, array index: 0x09E3 */ 0x4C4D,0x4C4E,0x4C4F,INVALC,0x4C50, /* Range 0x748F - 0x7492, array index: 0x09E8 */ 0x4C51,0x4C52,0x4C53,0x4C54, /* Range 0x7498 - 0x74A3, array index: 0x09EC */ 0x4C55,0x4C56,0x4C57,INVALC,0x4C58,INVALC,INVALC,0x4C59, 0x4C5A,0x4C5B,INVALC,0x4C5C, /* Range 0x74A6 - 0x74B2, array index: 0x09F8 */ 0x4C5D,INVALC,0x4C5E,0x4C5F,0x4C60,0x4C61,INVALC,INVALC, 0x4C62,0x4C63,INVALC,0x4C64,0x4C65, /* Range 0x74FA - 0x74FC, array index: 0x0A05 */ 0x4C7A,0x4C7B,0x4C7C, /* Range 0x753D - 0x7540, array index: 0x0A08 */ 0x4D2D,0x4D2E,0x4D2F,0x4D30, /* Range 0x7579 - 0x757E, array index: 0x0A0C */ 0x4D3D,0x4D3E,0x4D3F,0x4D40,0x4D41,0x4D42, /* Range 0x75BF - 0x75C1, array index: 0x0A12 */ 0x4D4F,0x4D50,0x4D51, /* Range 0x75DF - 0x75E1, array index: 0x0A15 */ 0x4D59,0x4D5A,0x4D5B, /* Range 0x7600 - 0x760C, array index: 0x0A18 */ 0x4D63,INVALC,0x4D64,0x4D65,0x4D66,INVALC,INVALC,0x4D67, 0x4D68,INVALC,0x4D69,INVALC,0x4D6A, /* Range 0x7612 - 0x7616, array index: 0x0A25 */ 0x4D6C,0x4D6D,INVALC,0x4D6E,0x4D6F, /* Range 0x7619 - 0x761E, array index: 0x0A2A */ 0x4D70,INVALC,0x4D71,0x4D72,0x4D73,0x4D74, /* Range 0x7638 - 0x763C, array index: 0x0A30 */ 0x4D7D,0x4D7E,0x4E21,INVALC,0x4E22, /* Range 0x7640 - 0x764B, array index: 0x0A35 */ 0x4E24,0x4E25,INVALC,0x4E26,0x4E27,0x4E28,INVALC,INVALC, INVALC,0x4E29,0x4E23,0x4E2A, /* Range 0x766D - 0x7671, array index: 0x0A41 */ 0x4E30,0x4E31,0x4E32,INVALC,0x4E33, /* Range 0x769B - 0x76AA, array index: 0x0A46 */ 0x4E3A,0x4E3B,0x4E3C,INVALC,0x4E3D,0x4E3E,INVALC,0x4E3F, 0x4E40,0x4E41,0x4E42,0x4E43,0x4E44,0x4E45,INVALC,0x4E46, /* Range 0x772D - 0x772F, array index: 0x0A56 */ 0x4E67,0x4E68,0x4E69, /* Range 0x7734 - 0x7736, array index: 0x0A59 */ 0x4E6A,0x4E6B,0x4E6C, /* Range 0x774D - 0x774F, array index: 0x0A5C */ 0x4E74,0x4E75,0x4E76, /* Range 0x775C - 0x7764, array index: 0x0A5F */ 0x4E7A,INVALC,0x4E7B,0x4E7C,0x4E7D,INVALC,0x4E7E,INVALC, 0x4F21, /* Range 0x7770 - 0x7774, array index: 0x0A68 */ 0x4F25,INVALC,0x4F26,0x4F27,0x4F28, /* Range 0x7794 - 0x7796, array index: 0x0A6D */ 0x4F2F,0x4F30,0x4F31, /* Range 0x77DE - 0x77E0, array index: 0x0A70 */ 0x4F42,0x4F43,0x4F44, /* Range 0x7821 - 0x7823, array index: 0x0A73 */ 0x4F55,0x4F56,0x4F57, /* Range 0x7860 - 0x7864, array index: 0x0A76 */ 0x4F66,0x4F67,INVALC,0x4F68,0x4F69, /* Range 0x789D - 0x78A1, array index: 0x0A7B */ 0x4F74,0x4F75,0x4F76,INVALC,0x4F73, /* Range 0x78AC - 0x78B3, array index: 0x0A80 */ 0x4F79,0x4F7A,INVALC,INVALC,0x4F7B,0x4F7C,0x4F7D,0x4F7E, /* Range 0x78C7 - 0x78C9, array index: 0x0A88 */ 0x5024,0x5025,0x5026, /* Range 0x78D2 - 0x78D6, array index: 0x0A8B */ 0x5029,0x502A,INVALC,0x502B,0x502C, /* Range 0x78DF - 0x78E1, array index: 0x0A90 */ 0x502F,0x5030,0x5031, /* Range 0x791C - 0x7920, array index: 0x0A93 */ 0x5040,INVALC,0x5041,0x5042,0x5043, /* Range 0x7944 - 0x7946, array index: 0x0A98 */ 0x504E,0x504F,0x5050, /* Range 0x7991 - 0x799C, array index: 0x0A9B */ 0x5063,INVALC,0x5064,0x5065,0x5066,0x5067,INVALC,0x5068, INVALC,INVALC,0x5069,0x506A, /* Range 0x7A34 - 0x7A3A, array index: 0x0AA7 */ 0x513A,0x513B,INVALC,INVALC,0x513C,0x513D,0x513E, /* Range 0x7A44 - 0x7A48, array index: 0x0AAE */ 0x513F,0x5140,INVALC,0x5141,0x5142, /* Range 0x7A5C - 0x7A60, array index: 0x0AB3 */ 0x5147,0x5148,INVALC,0x5149,0x514A, /* Range 0x7AE8 - 0x7AEC, array index: 0x0AB8 */ 0x516A,0x516B,INVALC,0x516C,0x516D, /* Range 0x7B27 - 0x7B31, array index: 0x0ABD */ 0x5177,INVALC,0x5178,0x5179,0x517A,INVALC,0x517B,0x517C, 0x517D,0x517E,0x5221, /* Range 0x7B3D - 0x7B41, array index: 0x0AC8 */ 0x5223,INVALC,0x5224,0x5225,0x5226, /* Range 0x7BBA - 0x7BBD, array index: 0x0ACD */ 0x5244,0x5245,0x5246,0x5247, /* Range 0x7BD6 - 0x7BDB, array index: 0x0AD1 */ 0x524D,0x524E,INVALC,0x524F,0x5250,0x5251, /* Range 0x7BF4 - 0x7C06, array index: 0x0AD7 */ 0x5255,0x5256,INVALC,INVALC,0x5257,0x5258,0x5259,INVALC, 0x525A,INVALC,0x525B,INVALC,INVALC,0x525C,0x525D,0x525E, 0x525F,INVALC,0x5260, /* Range 0x7C0B - 0x7C0F, array index: 0x0AEA */ 0x5262,0x5263,INVALC,0x5264,0x5265, /* Range 0x7C51 - 0x7C5E, array index: 0x0AEF */ 0x5276,0x5277,0x5278,INVALC,0x5275,INVALC,INVALC,INVALC, 0x5279,0x527A,0x527B,0x527C,0x527D,0x527E, /* Range 0x7CB6 - 0x7CBC, array index: 0x0AFD */ 0x5334,0x5335,INVALC,INVALC,0x5336,0x5337,0x5338, /* Range 0x7CC7 - 0x7CC9, array index: 0x0B04 */ 0x533B,0x533C,0x533D, /* Range 0x7CD3 - 0x7CDA, array index: 0x0B07 */ 0x5340,0x5341,0x5342,INVALC,0x5343,INVALC,0x5344,0x5345, /* Range 0x7D07 - 0x7D09, array index: 0x0B0F */ 0x534C,0x534D,0x534E, /* Range 0x7D0F - 0x7D13, array index: 0x0B12 */ 0x534F,INVALC,0x5350,0x5351,0x5352, /* Range 0x7D3C - 0x7D41, array index: 0x0B17 */ 0x535B,0x535C,0x535D,INVALC,0x535E,0x535F, /* Range 0x7D59 - 0x7D5D, array index: 0x0B1D */ 0x5366,0x5367,INVALC,0x5368,0x5369, /* Range 0x7D7F - 0x7D8D, array index: 0x0B22 */ 0x5371,INVALC,0x5372,0x5373,0x5374,INVALC,0x5375,0x5376, INVALC,0x5377,INVALC,INVALC,0x5378,0x5379,0x537A, /* Range 0x7DC2 - 0x7DC6, array index: 0x0B31 */ 0x5429,0x542A,0x542B,0x542C,0x542D, /* Range 0x7DCC - 0x7DCE, array index: 0x0B36 */ 0x542E,0x542F,0x5430, /* Range 0x7F3B - 0x7F3F, array index: 0x0B39 */ 0x546C,0x546B,0x546D,0x546E,0x546F, /* Range 0x7F5B - 0x7F5D, array index: 0x0B3E */ 0x5476,0x5477,0x5478, /* Range 0x7F61 - 0x7F66, array index: 0x0B41 */ 0x5479,INVALC,0x547A,0x547B,0x547C,0x547D, /* Range 0x7F7D - 0x7F80, array index: 0x0B47 */ 0x5522,0x5523,0x5524,0x5525, /* Range 0x7F8D - 0x7F91, array index: 0x0B4B */ 0x5527,INVALC,0x5528,0x5529,0x552A, /* Range 0x7FFD - 0x7FFF, array index: 0x0B50 */ 0x5545,0x5546,0x5547, /* Range 0x800D - 0x8016, array index: 0x0B53 */ 0x554B,0x554C,0x554D,INVALC,0x554E,INVALC,0x554F,0x5550, INVALC,0x5551, /* Range 0x801D - 0x8020, array index: 0x0B5D */ 0x5552,0x5553,0x5554,0x5555, /* Range 0x80D4 - 0x80D8, array index: 0x0B61 */ 0x5578,0x5579,INVALC,0x557A,0x557B, /* Range 0x8116 - 0x8118, array index: 0x0B66 */ 0x562A,0x562B,0x562C, /* Range 0x8167 - 0x8169, array index: 0x0B69 */ 0x563F,0x5640,0x5641, /* Range 0x8184 - 0x8186, array index: 0x0B6C */ 0x5647,0x5648,0x5649, /* Range 0x81F0 - 0x81F9, array index: 0x0B6F */ 0x5664,0x5665,0x5666,INVALC,INVALC,0x5667,0x5668,INVALC, 0x5669,0x566A, /* Range 0x8243 - 0x8246, array index: 0x0B79 */ 0x567B,0x567C,0x567D,0x567E, /* Range 0x827D - 0x8284, array index: 0x0B7D */ 0x572D,INVALC,0x572E,0x572F,0x5730,INVALC,0x5731,0x5732, /* Range 0x82A0 - 0x82AA, array index: 0x0B85 */ 0x573D,0x573E,INVALC,0x573F,0x5740,INVALC,INVALC,0x5741, 0x5742,0x5743,0x5744, /* Range 0x82FD - 0x8301, array index: 0x0B90 */ 0x575B,0x575C,INVALC,0x575D,0x575E, /* Range 0x8307 - 0x830B, array index: 0x0B95 */ 0x575F,0x5760,INVALC,0x5761,0x5762, /* Range 0x831B - 0x8322, array index: 0x0B9A */ 0x5764,INVALC,0x5765,0x5766,0x5767,INVALC,0x5768,0x5769, /* Range 0x832C - 0x8330, array index: 0x0BA2 */ 0x576A,0x576B,0x576C,INVALC,0x576D, /* Range 0x8342 - 0x8344, array index: 0x0BA7 */ 0x5773,0x5774,0x5775, /* Range 0x8351 - 0x8357, array index: 0x0BAA */ 0x5779,INVALC,0x583E,0x5763,0x577A,0x577B,0x577C, /* Range 0x8398 - 0x839D, array index: 0x0BB1 */ 0x582B,0x582C,INVALC,0x582D,0x582E,0x582F, /* Range 0x83BE - 0x83C0, array index: 0x0BB7 */ 0x5834,0x5835,0x5836, /* Range 0x83CF - 0x83D1, array index: 0x0BBA */ 0x5839,0x583A,0x583B, /* Range 0x8456 - 0x845C, array index: 0x0BBD */ 0x5857,INVALC,0x5858,0x5859,0x585A,INVALC,0x585B, /* Range 0x84A6 - 0x84AA, array index: 0x0BC4 */ 0x586E,INVALC,0x586F,0x5870,0x5871, /* Range 0x84EF - 0x84F2, array index: 0x0BC9 */ 0x5924,0x5925,0x5926,0x5927, /* Range 0x8522 - 0x852B, array index: 0x0BCD */ 0x5935,0x5936,0x5937,0x5938,INVALC,0x5939,INVALC,INVALC, 0x593A,0x593B, /* Range 0x8532 - 0x8536, array index: 0x0BD7 */ 0x5929,0x593D,0x593E,INVALC,0x593F, /* Range 0x854F - 0x8553, array index: 0x0BDC */ 0x5942,0x5943,0x5944,0x5945,0x5946, /* Range 0x855C - 0x8564, array index: 0x0BE1 */ 0x5949,0x594A,0x594B,0x594C,0x594D,0x594E,0x594F,INVALC, 0x5950, /* Range 0x8579 - 0x8581, array index: 0x0BEA */ 0x5953,0x5954,0x5955,INVALC,0x5956,INVALC,0x5957,INVALC, 0x5958, /* Range 0x85B4 - 0x85BF, array index: 0x0BF3 */ 0x5967,INVALC,0x5968,0x5969,0x596A,INVALC,INVALC,INVALC, 0x596B,0x596C,0x596D,0x596E, /* Range 0x860D - 0x8612, array index: 0x0BFF */ 0x5A25,0x5A26,INVALC,0x5A27,0x5A28,0x5A29, /* Range 0x863C - 0x8642, array index: 0x0C05 */ 0x5A34,0x5A35,INVALC,INVALC,0x5A36,0x3866,0x5A37, /* Range 0x8652 - 0x8659, array index: 0x0C0C */ 0x5A39,0x5A3A,INVALC,INVALC,0x5A3B,0x5A3C,0x5A3D,0x5A3E, /* Range 0x8660 - 0x8664, array index: 0x0C14 */ 0x5A40,0x5A41,0x5A42,0x5A43,0x5A44, /* Range 0x8675 - 0x8677, array index: 0x0C19 */ 0x5A48,0x5A49,0x5A4A, /* Range 0x86A6 - 0x86A8, array index: 0x0C1C */ 0x5A53,0x5A54,0x5A55, /* Range 0x86B1 - 0x86B9, array index: 0x0C1F */ 0x5A57,INVALC,0x5A58,0x5A59,0x5A5A,INVALC,0x5A5B,0x5A5C, 0x5A5D, /* Range 0x86BF - 0x86C5, array index: 0x0C28 */ 0x5A5E,0x5A5F,0x5A60,INVALC,0x5A61,INVALC,0x5A62, /* Range 0x870E - 0x8714, array index: 0x0C2F */ 0x5A75,0x5A76,0x5A77,INVALC,INVALC,0x5A78,0x5A79, /* Range 0x872E - 0x8732, array index: 0x0C36 */ 0x5B22,0x5B23,INVALC,0x5B24,0x5B25, /* Range 0x8739 - 0x8740, array index: 0x0C3B */ 0x5B26,0x5B27,INVALC,0x5B28,0x5B29,0x5B2A,INVALC,0x5B2B, /* Range 0x8783 - 0x878C, array index: 0x0C43 */ 0x5B38,0x5B39,0x5B3A,0x5B3B,0x5B3C,0x5B3D,0x5B3E,INVALC, 0x5B3F,0x5B40, /* Range 0x8795 - 0x8799, array index: 0x0C4D */ 0x5B43,INVALC,0x5B44,0x5B45,0x5B46, /* Range 0x87AC - 0x87AE, array index: 0x0C52 */ 0x5B4B,0x5B4C,0x5B4D, /* Range 0x87C8 - 0x87CA, array index: 0x0C55 */ 0x5B53,0x5B54,0x5B55, /* Range 0x87E2 - 0x87E4, array index: 0x0C58 */ 0x5B5D,0x5B5E,0x5B5F, /* Range 0x8809 - 0x880B, array index: 0x0C5B */ 0x5B6B,0x5B6C,0x5B6D, /* Range 0x8810 - 0x881F, array index: 0x0C5E */ 0x5B6E,INVALC,0x5B70,0x5B71,0x5B72,INVALC,INVALC,INVALC, 0x5B73,0x5B6F,0x5B74,0x5B75,0x5B76,INVALC,0x5B77,0x5B78, /* Range 0x8848 - 0x884B, array index: 0x0C6E */ 0x5C26,0x5C27,0x5C28,0x5C29, /* Range 0x8898 - 0x88A0, array index: 0x0C72 */ 0x5C39,INVALC,0x5C3A,0x5C3B,0x5C3C,INVALC,INVALC,0x5C3D, 0x5C3E, /* Range 0x88CA - 0x88D3, array index: 0x0C7B */ 0x5C45,0x5C46,0x5C47,0x5C48,0x5C49,INVALC,INVALC,0x5C4A, 0x5C4B,0x5C4C, /* Range 0x88EF - 0x88F1, array index: 0x0C85 */ 0x5C50,0x5C51,0x5C52, /* Range 0x890D - 0x890F, array index: 0x0C88 */ 0x5C57,0x5C58,0x5C59, /* Range 0x8915 - 0x891C, array index: 0x0C8B */ 0x5C5A,0x5C5B,INVALC,0x5C5C,0x5C5D,0x5C5E,INVALC,0x5C5F, /* Range 0x8926 - 0x8928, array index: 0x0C93 */ 0x5C61,0x5C62,0x5C63, /* Range 0x8930 - 0x8932, array index: 0x0C96 */ 0x5C64,0x5C65,0x5C66, /* Range 0x895A - 0x895C, array index: 0x0C99 */ 0x5C73,0x5C74,0x5C75, /* Range 0x8961 - 0x8963, array index: 0x0C9C */ 0x5C76,0x5C77,0x5C78, /* Range 0x897A - 0x897D, array index: 0x0C9F */ 0x5C7E,0x5D21,0x5D22,0x5D23, /* Range 0x89B4 - 0x89B7, array index: 0x0CA3 */ 0x5D2F,0x5D30,0x5D31,0x5D32, /* Range 0x89D4 - 0x89D8, array index: 0x0CA7 */ 0x5D34,0x5D35,0x5D36,0x5D37,0x5D38, /* Range 0x8A11 - 0x8A15, array index: 0x0CAC */ 0x5D47,0x5D48,INVALC,0x5D49,0x5D4A, /* Range 0x8A56 - 0x8A58, array index: 0x0CB1 */ 0x5D5F,0x5D60,0x5D61, /* Range 0x8A75 - 0x8A80, array index: 0x0CB4 */ 0x5D67,0x5D68,0x5D69,INVALC,0x5D6A,0x5D6B,0x5D6C,INVALC, INVALC,0x5D6D,0x5D6E,0x5D6F, /* Range 0x8AC6 - 0x8ACA, array index: 0x0CC0 */ 0x5E26,INVALC,0x5E27,0x5E28,0x5E29, /* Range 0x8AD1 - 0x8AD7, array index: 0x0CC5 */ 0x5E2A,INVALC,0x5E2B,0x5E2C,0x5E2D,INVALC,0x5E2E, /* Range 0x8AF4 - 0x8AF6, array index: 0x0CCC */ 0x5E33,0x5E34,0x5E35, /* Range 0x8B42 - 0x8B48, array index: 0x0CCF */ 0x5E44,0x5E45,0x5E46,0x5E47,0x5E48,INVALC,0x5E49, /* Range 0x8B52 - 0x8B54, array index: 0x0CD6 */ 0x5E4A,0x5E4B,0x5E4C, /* Range 0x8C53 - 0x8C5D, array index: 0x0CD9 */ 0x5E6C,0x5E6D,INVALC,INVALC,0x5E6E,0x5E6F,0x5E72,INVALC, 0x5E70,INVALC,0x5E71, /* Range 0x8D9E - 0x8DA0, array index: 0x0CE4 */ 0x5F52,0x5F53,0x5F54, /* Range 0x8DC5 - 0x8DCA, array index: 0x0CE7 */ 0x5F5F,0x5F60,0x5F61,0x5F62,INVALC,0x5F63, /* Range 0x8DF0 - 0x8DF4, array index: 0x0CED */ 0x5F6E,0x5F70,0x5F71,INVALC,0x5F72, /* Range 0x8E04 - 0x8E06, array index: 0x0CF2 */ 0x5F75,0x5F76,0x5F77, /* Range 0x8E20 - 0x8E27, array index: 0x0CF5 */ 0x5F7C,0x5F7D,0x5F7E,0x6021,INVALC,INVALC,0x6022,0x6023, /* Range 0x8E36 - 0x8E39, array index: 0x0CFD */ 0x6026,0x6027,0x6028,0x6029, /* Range 0x8E4B - 0x8E4F, array index: 0x0D01 */ 0x602D,INVALC,0x602E,0x602F,0x6030, /* Range 0x8E5B - 0x8E62, array index: 0x0D06 */ 0x6032,0x6033,0x6034,0x6035,INVALC,INVALC,0x6036,0x6037, /* Range 0x8E6C - 0x8E71, array index: 0x0D0E */ 0x6039,0x603A,INVALC,0x603B,0x603C,0x603D, /* Range 0x8E79 - 0x8E7B, array index: 0x0D14 */ 0x603E,0x603F,0x6040, /* Range 0x8E9A - 0x8E9E, array index: 0x0D17 */ 0x6047,0x6048,INVALC,0x6049,0x604A, /* Range 0x8EC0 - 0x8EC4, array index: 0x0D1C */ 0x6054,0x6055,INVALC,0x6056,0x6057, /* Range 0x8EED - 0x8EF1, array index: 0x0D21 */ 0x6064,0x605E,INVALC,0x605F,0x6060, /* Range 0x8F16 - 0x8F18, array index: 0x0D26 */ 0x606B,0x606C,0x606D, /* Range 0x8F2C - 0x8F2E, array index: 0x0D29 */ 0x6075,0x6076,0x6077, /* Range 0x8F34 - 0x8F37, array index: 0x0D2C */ 0x6078,0x6079,0x607A,0x607B, /* Range 0x8F4F - 0x8F55, array index: 0x0D30 */ 0x6123,INVALC,0x6124,0x6125,0x6126,0x6127,0x6128, /* Range 0x8FA0 - 0x8FA6, array index: 0x0D37 */ 0x612E,0x612F,INVALC,INVALC,0x6130,0x6131,0x6132, /* Range 0x9028 - 0x902F, array index: 0x0D3E */ 0x6151,0x6152,0x6154,INVALC,0x6155,0x6156,INVALC,0x6153, /* Range 0x9095 - 0x909B, array index: 0x0D46 */ 0x616D,INVALC,0x616E,0x616F,0x6170,INVALC,0x6171, /* Range 0x90A0 - 0x90A2, array index: 0x0D4D */ 0x6172,0x6173,0x6174, /* Range 0x90B0 - 0x90B6, array index: 0x0D50 */ 0x6176,INVALC,0x6177,0x6178,0x6179,INVALC,0x617A, /* Range 0x90C3 - 0x90C8, array index: 0x0D57 */ 0x617E,0x6221,0x6222,INVALC,0x6223,0x6224, /* Range 0x90D5 - 0x90DF, array index: 0x0D5D */ 0x6225,INVALC,0x6226,0x6227,0x6228,INVALC,INVALC,0x6229, 0x622A,INVALC,0x622B, /* Range 0x90FE - 0x9108, array index: 0x0D68 */ 0x6233,0x6234,0x6235,INVALC,INVALC,INVALC,0x6236,0x6237, 0x6238,INVALC,0x6239, /* Range 0x9114 - 0x9129, array index: 0x0D73 */ 0x623C,INVALC,0x623D,0x623E,0x623F,INVALC,0x6240,INVALC, 0x6241,INVALC,0x6242,INVALC,0x6243,INVALC,0x6245,0x6246, INVALC,0x6244,INVALC,0x6247,INVALC,0x6248, /* Range 0x9136 - 0x913D, array index: 0x0D89 */ 0x624D,0x624E,INVALC,0x624F,0x6250,INVALC,0x6251,0x6252, /* Range 0x9157 - 0x915B, array index: 0x0D91 */ 0x6258,INVALC,0x6259,0x625A,0x625B, /* Range 0x9179 - 0x917B, array index: 0x0D96 */ 0x6261,0x6262,0x6263, /* Range 0x9191 - 0x9195, array index: 0x0D99 */ 0x626A,INVALC,0x626B,0x626C,0x626D, /* Range 0x91AC - 0x91B3, array index: 0x0D9E */ 0x6273,0x6274,0x6275,INVALC,0x6276,0x6277,0x6278,0x6279, /* Range 0x91BB - 0x91C5, array index: 0x0DA6 */ 0x627B,0x627C,0x627D,INVALC,0x627E,INVALC,INVALC,0x6321, 0x6322,INVALC,0x6323, /* Range 0x91E9 - 0x91F1, array index: 0x0DB1 */ 0x632C,0x632D,INVALC,0x632E,0x632F,0x6330,0x6331,0x6332, 0x6333, /* Range 0x9200 - 0x920C, array index: 0x0DBA */ 0x6338,0x6339,INVALC,INVALC,0x633A,0x633B,0x633C,0x633D, INVALC,0x633E,0x633F,INVALC,0x6340, /* Range 0x9223 - 0x9228, array index: 0x0DC7 */ 0x6348,0x6349,0x634A,0x634B,INVALC,0x634C, /* Range 0x922E - 0x9230, array index: 0x0DCD */ 0x634D,0x634E,0x634F, /* Range 0x9235 - 0x9247, array index: 0x0DD0 */ 0x6351,0x6352,INVALC,0x6353,0x6354,0x6355,INVALC,0x6356, INVALC,0x6357,INVALC,0x6358,INVALC,0x6359,0x635A,INVALC, INVALC,0x635B,0x635C, /* Range 0x924D - 0x9251, array index: 0x0DE3 */ 0x635E,0x635F,0x6360,INVALC,0x6361, /* Range 0x9265 - 0x9269, array index: 0x0DE8 */ 0x6368,INVALC,0x6369,0x636A,0x636B, /* Range 0x926E - 0x9270, array index: 0x0DED */ 0x636C,0x636D,0x636E, /* Range 0x9275 - 0x927F, array index: 0x0DF0 */ 0x636F,0x6370,0x6371,0x6372,0x6373,INVALC,0x6374,0x6375, 0x6376,INVALC,0x6377, /* Range 0x9288 - 0x928E, array index: 0x0DFB */ 0x6378,0x6379,0x637A,INVALC,INVALC,0x637B,0x637C, /* Range 0x92A4 - 0x92A8, array index: 0x0E02 */ 0x6424,0x6425,INVALC,0x6426,0x6427, /* Range 0x92B8 - 0x92D0, array index: 0x0E07 */ 0x642C,INVALC,0x642D,0x642E,0x642F,0x6430,INVALC,0x6431, 0x6432,0x6433,0x6434,0x6435,INVALC,0x6436,0x6437,0x6438, 0x6439,INVALC,INVALC,0x643A,0x643B,0x643C,0x643D,INVALC, 0x643E, /* Range 0x92D5 - 0x92E8, array index: 0x0E20 */ 0x6440,INVALC,0x6441,0x6442,0x6443,INVALC,INVALC,0x6444, 0x6445,INVALC,0x6446,0x6447,0x6448,INVALC,0x6449,INVALC, 0x644A,INVALC,0x644B,0x644C, /* Range 0x931C - 0x932A, array index: 0x0E34 */ 0x645A,0x645B,0x645C,0x645D,INVALC,0x645E,INVALC,INVALC, 0x645F,0x6460,INVALC,0x6461,INVALC,0x6462,0x6463, /* Range 0x9333 - 0x9337, array index: 0x0E43 */ 0x6464,0x6465,INVALC,0x6466,0x6467, /* Range 0x9347 - 0x9349, array index: 0x0E48 */ 0x6468,0x6469,0x646A, /* Range 0x9350 - 0x9352, array index: 0x0E4B */ 0x646B,0x646C,0x646D, /* Range 0x936D - 0x9376, array index: 0x0E4E */ 0x6478,INVALC,0x6479,0x647A,0x647B,INVALC,0x647C,0x647D, INVALC,0x647E, /* Range 0x937D - 0x9382, array index: 0x0E58 */ 0x6522,INVALC,0x6523,0x6524,0x6525,0x6526, /* Range 0x93B4 - 0x93B6, array index: 0x0E5E */ 0x6537,0x6538,0x6539, /* Range 0x93C4 - 0x93CD, array index: 0x0E61 */ 0x653D,0x653E,0x653F,0x6540,INVALC,0x6541,0x6542,0x6543, 0x6544,0x6545, /* Range 0x93F7 - 0x93FD, array index: 0x0E6B */ 0x654F,0x6550,0x654E,0x6551,0x6552,INVALC,0x6553, /* Range 0x940D - 0x940F, array index: 0x0E72 */ 0x6559,0x655A,0x655B, /* Range 0x9415 - 0x9417, array index: 0x0E75 */ 0x655C,0x655D,0x655E, /* Range 0x942E - 0x9434, array index: 0x0E78 */ 0x6560,0x6561,INVALC,0x6562,0x6563,0x6564,0x6565, /* Range 0x946B - 0x9472, array index: 0x0E7F */ 0x6575,INVALC,0x6576,0x6577,0x6578,INVALC,0x6579,0x657A, /* Range 0x958C - 0x958E, array index: 0x0E87 */ 0x6624,0x6625,0x6626, /* Range 0x959D - 0x95A1, array index: 0x0E8A */ 0x6627,0x6628,0x6629,INVALC,0x662A, /* Range 0x95D0 - 0x95D3, array index: 0x0E8F */ 0x6638,0x6639,0x663A,0x663B, /* Range 0x95D9 - 0x95E0, array index: 0x0E93 */ 0x663C,0x663D,INVALC,INVALC,0x663E,0x663F,0x6640,0x6641, /* Range 0x9622 - 0x9626, array index: 0x0E9B */ 0x6646,INVALC,0x6647,0x6648,0x6649, /* Range 0x9637 - 0x963D, array index: 0x0EA0 */ 0x664D,0x664E,0x664F,0x6650,INVALC,0x6651,0x6652, /* Range 0x9654 - 0x9658, array index: 0x0EA7 */ 0x6655,INVALC,0x6656,0x6657,0x6658, /* Range 0x967B - 0x9684, array index: 0x0EAC */ 0x665C,0x665D,INVALC,0x665E,0x665F,INVALC,0x6660,0x6661, 0x6662,0x6663, /* Range 0x96A4 - 0x96A6, array index: 0x0EB6 */ 0x666A,0x666B,0x666C, /* Range 0x96DD - 0x96DF, array index: 0x0EB9 */ 0x6677,0x6678,0x6679, /* Range 0x9721 - 0x9723, array index: 0x0EBC */ 0x6727,0x6728,0x6729, /* Range 0x9757 - 0x975B, array index: 0x0EBF */ 0x6733,0x6734,INVALC,0x6735,0x6736, /* Range 0x9776 - 0x9778, array index: 0x0EC4 */ 0x673C,0x673D,0x673E, /* Range 0x9795 - 0x979A, array index: 0x0EC7 */ 0x6744,0x6745,0x6746,INVALC,0x6747,0x6748, /* Range 0x97B5 - 0x97D1, array index: 0x0ECD */ 0x6750,0x6751,INVALC,0x6752,0x6753,0x6754,INVALC,0x6755, INVALC,0x6756,0x6757,INVALC,0x6758,INVALC,INVALC,0x6759, 0x675A,INVALC,0x675B,INVALC,0x675C,0x675D,INVALC,0x675E, 0x675F,0x6760,INVALC,0x6761,0x6762, /* Range 0x97D7 - 0x97E1, array index: 0x0EEA */ 0x6764,0x6765,0x6766,INVALC,0x676A,INVALC,0x6767,0x6768, INVALC,0x6769,0x676B, /* Range 0x982E - 0x9835, array index: 0x0EF5 */ 0x6822,0x6823,0x6824,INVALC,0x6825,0x6826,INVALC,0x6827, /* Range 0x9851 - 0x985A, array index: 0x0EFD */ 0x682D,0x682E,0x682F,INVALC,INVALC,0x6830,0x6831,INVALC, 0x6832,0x6833, /* Range 0x9862 - 0x9866, array index: 0x0F07 */ 0x6834,0x6835,INVALC,0x6836,0x6837, /* Range 0x98B7 - 0x98BB, array index: 0x0F0C */ 0x683F,0x6840,INVALC,0x6841,0x6842, /* Range 0x98E3 - 0x98E7, array index: 0x0F11 */ 0x6849,INVALC,0x684A,0x684B,0x684C, /* Range 0x9915 - 0x991C, array index: 0x0F16 */ 0x6854,0x6855,0x6856,INVALC,INVALC,0x6857,0x6858,0x6859, /* Range 0x9931 - 0x993C, array index: 0x0F1E */ 0x685F,0x6860,0x6861,0x6862,0x6863,INVALC,INVALC,INVALC, 0x6864,0x6865,0x6866,0x6867, /* Range 0x9946 - 0x9948, array index: 0x0F2A */ 0x686A,0x686B,0x686C, /* Range 0x9958 - 0x9960, array index: 0x0F2D */ 0x6870,0x6871,INVALC,0x6872,0x6873,INVALC,0x6874,0x6875, 0x6876, /* Range 0x99B0 - 0x99B2, array index: 0x0F36 */ 0x687B,0x687C,0x687D, /* Range 0x99EA - 0x99EC, array index: 0x0F39 */ 0x692E,0x692F,0x6930, /* Range 0x9A02 - 0x9A04, array index: 0x0F3C */ 0x6937,0x6938,0x6939, /* Range 0x9A20 - 0x9A24, array index: 0x0F3F */ 0x6940,INVALC,0x6941,0x6942,0x6943, /* Range 0x9A4A - 0x9A4E, array index: 0x0F44 */ 0x694E,0x694F,0x6950,INVALC,0x6951, /* Range 0x9AB2 - 0x9AB6, array index: 0x0F49 */ 0x695A,INVALC,0x695B,0x695C,0x695D, /* Range 0x9AD5 - 0x9AD7, array index: 0x0F4E */ 0x6969,0x696A,0x696B, /* Range 0x9AFD - 0x9B12, array index: 0x0F51 */ 0x6979,INVALC,0x697A,0x697B,0x697C,0x697D,0x697E,0x6A21, 0x6A22,INVALC,INVALC,0x6A23,0x6A24,INVALC,0x6A25,0x6A26, 0x6A27,0x6A28,INVALC,0x6A29,INVALC,0x6A2A, /* Range 0x9B33 - 0x9B3A, array index: 0x0F67 */ 0x6A33,0x6A34,0x6A35,INVALC,0x6A36,INVALC,0x6A37,0x6A38, /* Range 0x9B55 - 0x9B57, array index: 0x0F6F */ 0x6A3D,0x6A3E,0x6A3F, /* Range 0x9B68 - 0x9B6E, array index: 0x0F72 */ 0x6A46,INVALC,0x6A47,0x6A48,0x6A49,0x6A4A,0x6A4B, /* Range 0x9B75 - 0x9B79, array index: 0x0F79 */ 0x6A4D,INVALC,0x6A4E,0x6A4F,0x6A50, /* Range 0x9B84 - 0x9B90, array index: 0x0F7E */ 0x6A53,0x6A54,0x6A55,0x6A56,INVALC,0x6A57,0x6A58,0x6A59, INVALC,0x6A5A,INVALC,0x6A5B,0x6A5C, /* Range 0x9BB0 - 0x9BB2, array index: 0x0F8B */ 0x6A65,0x6A66,0x6A67, /* Range 0x9BBB - 0x9BC1, array index: 0x0F8E */ 0x6A6A,0x6A6B,INVALC,0x6A6C,0x6A6D,INVALC,0x6A6E, /* Range 0x9BF7 - 0x9BFA, array index: 0x0F95 */ 0x6A7D,0x6A7E,0x6B21,0x6B22, /* Range 0x9C16 - 0x9C1E, array index: 0x0F99 */ 0x6B2A,INVALC,0x6B2B,0x6B2C,0x6B2D,INVALC,0x6B2E,INVALC, 0x6B2F, /* Range 0x9C22 - 0x9C2A, array index: 0x0FA2 */ 0x6B30,0x6B31,INVALC,INVALC,0x6B32,0x6B33,0x6B34,0x6B35, 0x6B36, /* Range 0x9C35 - 0x9C37, array index: 0x0FAB */ 0x6B38,0x6B39,0x6B3A, /* Range 0x9C41 - 0x9C45, array index: 0x0FAE */ 0x6B3C,INVALC,0x6B3D,0x6B3E,0x6B3F, /* Range 0x9C4E - 0x9C5F, array index: 0x0FB3 */ 0x6B42,0x6B43,0x6B44,INVALC,INVALC,0x6B45,0x6B46,INVALC, 0x6B47,INVALC,0x6B48,INVALC,INVALC,0x6B49,0x6B50,0x6B4A, 0x6B4B,0x6B4C, /* Range 0x9C68 - 0x9C6B, array index: 0x0FC5 */ 0x6B52,0x6B4E,0x6B4F,0x6B51, /* Range 0x9D1C - 0x9D1E, array index: 0x0FC9 */ 0x6B62,0x6B63,0x6B64, /* Range 0x9D2F - 0x9D34, array index: 0x0FCC */ 0x6B65,0x6B66,INVALC,0x6B67,0x6B68,0x6B69, /* Range 0x9D69 - 0x9D6B, array index: 0x0FD2 */ 0x6B78,0x6B79,0x6B7A, /* Range 0x9D92 - 0x9D98, array index: 0x0FD5 */ 0x6C29,0x6C2A,INVALC,0x6C2B,0x6C2C,0x6C2D,0x6C2E, /* Range 0x9DD4 - 0x9DD7, array index: 0x0FDC */ 0x6C3C,0x6C3D,0x6C3E,0x6C3F, /* Range 0x9DDE - 0x9DE0, array index: 0x0FE0 */ 0x6C41,0x6C42,0x6C43, /* Range 0x9E0E - 0x9E16, array index: 0x0FE3 */ 0x6C50,INVALC,0x6C51,0x6C52,0x6C53,INVALC,INVALC,0x6C54, 0x6C55, /* Range 0x9E7A - 0x9E7C, array index: 0x0FEC */ 0x6C59,0x6C5A,0x6C5B, /* Range 0x9E80 - 0x9E87, array index: 0x0FEF */ 0x6C5C,INVALC,0x6C5D,0x6C5E,0x6C5F,0x6C60,INVALC,0x6C61, /* Range 0x9EAC - 0x9EB5, array index: 0x0FF7 */ 0x6C6A,INVALC,0x6C6B,0x6C6C,0x6C6D,INVALC,INVALC,0x6C6E, 0x6C6F,0x6C70, /* Range 0x9EEC - 0x9EF2, array index: 0x1001 */ 0x6C78,0x6C79,0x6C7A,INVALC,0x6C7B,0x6C7C,0x6C7D, /* Range 0x9F0F - 0x9F1B, array index: 0x1008 */ 0x6D26,0x6D27,0x6D28,0x6D29,INVALC,0x6D2A,INVALC,0x6D2B, 0x6D2C,INVALC,0x6D2D,0x6D2E,0x6D2F, /* Range 0x9F39 - 0x9F47, array index: 0x1015 */ 0x6D3A,0x6D3B,INVALC,0x6D3C,0x6D3D,INVALC,0x6D3E,INVALC, 0x6D3F,INVALC,0x6D40,0x6D41,0x6D42,0x6D43,0x6D44, /* Range 0x9F53 - 0x9F5E, array index: 0x1024 */ 0x6D45,INVALC,0x6D46,0x6D47,0x6D48,0x6D49,INVALC,0x6D4A, INVALC,INVALC,0x6D4B,0x6D4C, /* Range 0x9F6D - 0x9F75, array index: 0x1030 */ 0x6D4F,0x6D50,0x6D51,0x6D52,0x6D53,INVALC,0x6D54,INVALC, 0x6D55, /* Range 0x9F8F - 0x9F97, array index: 0x1039 */ 0x6D58,0x6D59,0x6D5A,0x6D5B,INVALC,0x6D5C,INVALC,0x6D5D, 0x6D5E, /* Range 0x9FA1 - 0x9FA5, array index: 0x1042 */ 0x6D60,0x6D61,0x6D62,INVALC,0x6D63, /* Unranged codes (426 codes) */ /* Array index: 0x1047 */ 0x007E,0x2237, /* Array index: 0x1047 */ 0x00A1,0x2242, /* Array index: 0x1047 */ 0x00A4,0x2270, /* Array index: 0x1047 */ 0x00A6,0x2243, /* Array index: 0x1047 */ 0x00A9,0x226D, /* Array index: 0x1047 */ 0x00AA,0x226C, /* Array index: 0x1047 */ 0x00AE,0x226E, /* Array index: 0x1047 */ 0x00AF,0x2234, /* Array index: 0x1047 */ 0x00B8,0x2231, /* Array index: 0x1047 */ 0x00BA,0x226B, /* Array index: 0x1047 */ 0x01F5,0x2B39, /* Array index: 0x1047 */ 0x02C7,0x2230, /* Array index: 0x1047 */ 0x03C2,0x2678, /* Array index: 0x1047 */ 0x2116,0x2271, /* Array index: 0x1047 */ 0x2122,0x226F, /* Array index: 0x1047 */ 0x4E02,0x3021, /* Array index: 0x1047 */ 0x4E04,0x3022, /* Array index: 0x1047 */ 0x4E05,0x3023, /* Array index: 0x1047 */ 0x4E0C,0x3024, /* Array index: 0x1047 */ 0x4E12,0x3025, /* Array index: 0x1047 */ 0x4E1F,0x3026, /* Array index: 0x1047 */ 0x4E23,0x3027, /* Array index: 0x1047 */ 0x4E24,0x3028, /* Array index: 0x1047 */ 0x4E28,0x3029, /* Array index: 0x1047 */ 0x4E2B,0x302A, /* Array index: 0x1047 */ 0x4E35,0x302E, /* Array index: 0x1047 */ 0x4E40,0x302F, /* Array index: 0x1047 */ 0x4E41,0x3030, /* Array index: 0x1047 */ 0x4E44,0x3031, /* Array index: 0x1047 */ 0x4E47,0x3032, /* Array index: 0x1047 */ 0x4E51,0x3033, /* Array index: 0x1047 */ 0x4E5A,0x3034, /* Array index: 0x1047 */ 0x4E5C,0x3035, /* Array index: 0x1047 */ 0x4E63,0x3036, /* Array index: 0x1047 */ 0x4E68,0x3037, /* Array index: 0x1047 */ 0x4E69,0x3038, /* Array index: 0x1047 */ 0x4E74,0x3039, /* Array index: 0x1047 */ 0x4E75,0x303A, /* Array index: 0x1047 */ 0x4E79,0x303B, /* Array index: 0x1047 */ 0x4E7F,0x303C, /* Array index: 0x1047 */ 0x4E8D,0x303D, /* Array index: 0x1047 */ 0x4E96,0x303E, /* Array index: 0x1047 */ 0x4E97,0x303F, /* Array index: 0x1047 */ 0x4E9D,0x3040, /* Array index: 0x1047 */ 0x4EAF,0x3041, /* Array index: 0x1047 */ 0x4EB9,0x3042, /* Array index: 0x1047 */ 0x4EC3,0x3043, /* Array index: 0x1047 */ 0x4ED0,0x3044, /* Array index: 0x1047 */ 0x4EDA,0x3045, /* Array index: 0x1047 */ 0x4EDB,0x3046, /* Array index: 0x1047 */ 0x4EE8,0x304A, /* Array index: 0x1047 */ 0x4EEF,0x304B, /* Array index: 0x1047 */ 0x4EF1,0x304C, /* Array index: 0x1047 */ 0x4EF3,0x304D, /* Array index: 0x1047 */ 0x4EF5,0x304E, /* Array index: 0x1047 */ 0x4F08,0x3055, /* Array index: 0x1047 */ 0x4F0B,0x3056, /* Array index: 0x1047 */ 0x4F0C,0x3057, /* Array index: 0x1047 */ 0x4F12,0x3058, /* Array index: 0x1047 */ 0x4F2E,0x305D, /* Array index: 0x1047 */ 0x4F31,0x305E, /* Array index: 0x1047 */ 0x4F33,0x3060, /* Array index: 0x1047 */ 0x4F35,0x3061, /* Array index: 0x1047 */ 0x4F37,0x3062, /* Array index: 0x1047 */ 0x4F39,0x3063, /* Array index: 0x1047 */ 0x4F3B,0x3064, /* Array index: 0x1047 */ 0x4F3E,0x3065, /* Array index: 0x1047 */ 0x4F40,0x3066, /* Array index: 0x1047 */ 0x4F42,0x3067, /* Array index: 0x1047 */ 0x4F52,0x306C, /* Array index: 0x1047 */ 0x4F54,0x306D, /* Array index: 0x1047 */ 0x4F56,0x306E, /* Array index: 0x1047 */ 0x4F58,0x306F, /* Array index: 0x1047 */ 0x4F5F,0x3070, /* Array index: 0x1047 */ 0x4F60,0x305F, /* Array index: 0x1047 */ 0x4F63,0x3071, /* Array index: 0x1047 */ 0x4F6A,0x3072, /* Array index: 0x1047 */ 0x4F6C,0x3073, /* Array index: 0x1047 */ 0x4F6E,0x3074, /* Array index: 0x1047 */ 0x4F71,0x3075, /* Array index: 0x1047 */ 0x4F89,0x3122, /* Array index: 0x1047 */ 0x4F8A,0x3123, /* Array index: 0x1047 */ 0x4F8C,0x3124, /* Array index: 0x1047 */ 0x4F8E,0x3125, /* Array index: 0x1047 */ 0x4F97,0x312A, /* Array index: 0x1047 */ 0x4F99,0x312B, /* Array index: 0x1047 */ 0x4F9A,0x312C, /* Array index: 0x1047 */ 0x4F9E,0x312D, /* Array index: 0x1047 */ 0x4F9F,0x312E, /* Array index: 0x1047 */ 0x4FB2,0x312F, /* Array index: 0x1047 */ 0x4FB7,0x3130, /* Array index: 0x1047 */ 0x4FD2,0x3140, /* Array index: 0x1047 */ 0x4FDC,0x3141, /* Array index: 0x1047 */ 0x4FE0,0x3142, /* Array index: 0x1047 */ 0x4FE2,0x3143, /* Array index: 0x1047 */ 0x4FF0,0x3144, /* Array index: 0x1047 */ 0x4FF2,0x3145, /* Array index: 0x1047 */ 0x5004,0x314B, /* Array index: 0x1047 */ 0x5007,0x314C, /* Array index: 0x1047 */ 0x500A,0x314D, /* Array index: 0x1047 */ 0x500C,0x314E, /* Array index: 0x1047 */ 0x500E,0x314F, /* Array index: 0x1047 */ 0x5010,0x3150, /* Array index: 0x1047 */ 0x5013,0x3151, /* Array index: 0x1047 */ 0x5022,0x3158, /* Array index: 0x1047 */ 0x5027,0x3159, /* Array index: 0x1047 */ 0x502E,0x315A, /* Array index: 0x1047 */ 0x5030,0x315B, /* Array index: 0x1047 */ 0x5032,0x315C, /* Array index: 0x1047 */ 0x5033,0x315D, /* Array index: 0x1047 */ 0x5035,0x315E, /* Array index: 0x1047 */ 0x503B,0x3176, /* Array index: 0x1047 */ 0x504A,0x3164, /* Array index: 0x1047 */ 0x504C,0x3165, /* Array index: 0x1047 */ 0x504E,0x3166, /* Array index: 0x1047 */ 0x5057,0x316A, /* Array index: 0x1047 */ 0x5059,0x316B, /* Array index: 0x1047 */ 0x506A,0x3172, /* Array index: 0x1047 */ 0x506D,0x3173, /* Array index: 0x1047 */ 0x5070,0x3174, /* Array index: 0x1047 */ 0x5071,0x3175, /* Array index: 0x1047 */ 0x5081,0x3177, /* Array index: 0x1047 */ 0x5083,0x3178, /* Array index: 0x1047 */ 0x5084,0x3179, /* Array index: 0x1047 */ 0x5086,0x317A, /* Array index: 0x1047 */ 0x508A,0x317B, /* Array index: 0x1047 */ 0x50AA,0x322C, /* Array index: 0x1047 */ 0x50AF,0x322D, /* Array index: 0x1047 */ 0x50B0,0x322E, /* Array index: 0x1047 */ 0x50B9,0x322F, /* Array index: 0x1047 */ 0x50BA,0x3230, /* Array index: 0x1047 */ 0x50BD,0x3231, /* Array index: 0x1047 */ 0x50C0,0x3232, /* Array index: 0x1047 */ 0x50C3,0x3233, /* Array index: 0x1047 */ 0x50C4,0x3234, /* Array index: 0x1047 */ 0x50C7,0x3235, /* Array index: 0x1047 */ 0x50CC,0x3236, /* Array index: 0x1047 */ 0x50CE,0x3237, /* Array index: 0x1047 */ 0x50D0,0x3238, /* Array index: 0x1047 */ 0x50D3,0x3239, /* Array index: 0x1047 */ 0x50D4,0x323A, /* Array index: 0x1047 */ 0x50D8,0x323B, /* Array index: 0x1047 */ 0x50DC,0x323C, /* Array index: 0x1047 */ 0x50DD,0x323D, /* Array index: 0x1047 */ 0x50DF,0x323E, /* Array index: 0x1047 */ 0x50E2,0x323F, /* Array index: 0x1047 */ 0x50E4,0x3240, /* Array index: 0x1047 */ 0x50E6,0x3241, /* Array index: 0x1047 */ 0x50E8,0x3242, /* Array index: 0x1047 */ 0x50E9,0x3243, /* Array index: 0x1047 */ 0x50EF,0x3244, /* Array index: 0x1047 */ 0x50F1,0x3245, /* Array index: 0x1047 */ 0x50F2,0x3251, /* Array index: 0x1047 */ 0x50F6,0x3246, /* Array index: 0x1047 */ 0x50FA,0x3247, /* Array index: 0x1047 */ 0x50FE,0x3248, /* Array index: 0x1047 */ 0x5103,0x3249, /* Array index: 0x1047 */ 0x5117,0x3253, /* Array index: 0x1047 */ 0x5123,0x3259, /* Array index: 0x1047 */ 0x5127,0x325A, /* Array index: 0x1047 */ 0x5128,0x325B, /* Array index: 0x1047 */ 0x512C,0x325C, /* Array index: 0x1047 */ 0x512D,0x325D, /* Array index: 0x1047 */ 0x512F,0x325E, /* Array index: 0x1047 */ 0x5142,0x3265, /* Array index: 0x1047 */ 0x514A,0x3266, /* Array index: 0x1047 */ 0x514F,0x3267, /* Array index: 0x1047 */ 0x5153,0x3268, /* Array index: 0x1047 */ 0x5155,0x3269, /* Array index: 0x1047 */ 0x5157,0x326A, /* Array index: 0x1047 */ 0x5158,0x326B, /* Array index: 0x1047 */ 0x515F,0x326C, /* Array index: 0x1047 */ 0x5164,0x326D, /* Array index: 0x1047 */ 0x5166,0x326E, /* Array index: 0x1047 */ 0x517E,0x326F, /* Array index: 0x1047 */ 0x5183,0x3270, /* Array index: 0x1047 */ 0x5184,0x3271, /* Array index: 0x1047 */ 0x518B,0x3272, /* Array index: 0x1047 */ 0x518E,0x3273, /* Array index: 0x1047 */ 0x5198,0x3274, /* Array index: 0x1047 */ 0x519D,0x3275, /* Array index: 0x1047 */ 0x51A1,0x3276, /* Array index: 0x1047 */ 0x51A3,0x3277, /* Array index: 0x1047 */ 0x51AD,0x3278, /* Array index: 0x1047 */ 0x51B8,0x3279, /* Array index: 0x1047 */ 0x51BA,0x327A, /* Array index: 0x1047 */ 0x51BC,0x327B, /* Array index: 0x1047 */ 0x51BE,0x327C, /* Array index: 0x1047 */ 0x51BF,0x327D, /* Array index: 0x1047 */ 0x51C2,0x327E, /* Array index: 0x1047 */ 0x51C8,0x3321, /* Array index: 0x1047 */ 0x51D8,0x3327, /* Array index: 0x1047 */ 0x51DE,0x3328, /* Array index: 0x1047 */ 0x51E2,0x3329, /* Array index: 0x1047 */ 0x51E5,0x332A, /* Array index: 0x1047 */ 0x51EE,0x332B, /* Array index: 0x1047 */ 0x51F7,0x332F, /* Array index: 0x1047 */ 0x5201,0x3330, /* Array index: 0x1047 */ 0x5202,0x3331, /* Array index: 0x1047 */ 0x5205,0x3332, /* Array index: 0x1047 */ 0x5222,0x3338, /* Array index: 0x1047 */ 0x5228,0x3339, /* Array index: 0x1047 */ 0x5231,0x333A, /* Array index: 0x1047 */ 0x5232,0x333B, /* Array index: 0x1047 */ 0x5235,0x333C, /* Array index: 0x1047 */ 0x523C,0x333D, /* Array index: 0x1047 */ 0x5245,0x333E, /* Array index: 0x1047 */ 0x5249,0x333F, /* Array index: 0x1047 */ 0x5255,0x3340, /* Array index: 0x1047 */ 0x5257,0x3341, /* Array index: 0x1047 */ 0x5258,0x3342, /* Array index: 0x1047 */ 0x525A,0x3343, /* Array index: 0x1047 */ 0x525C,0x3344, /* Array index: 0x1047 */ 0x5266,0x3348, /* Array index: 0x1047 */ 0x526E,0x3349, /* Array index: 0x1047 */ 0x5280,0x334D, /* Array index: 0x1047 */ 0x5282,0x334E, /* Array index: 0x1047 */ 0x5285,0x334F, /* Array index: 0x1047 */ 0x528A,0x3350, /* Array index: 0x1047 */ 0x528C,0x3351, /* Array index: 0x1047 */ 0x52AF,0x335D, /* Array index: 0x1047 */ 0x52B0,0x335E, /* Array index: 0x1047 */ 0x52C0,0x3365, /* Array index: 0x1047 */ 0x52C4,0x3366, /* Array index: 0x1047 */ 0x52C6,0x3367, /* Array index: 0x1047 */ 0x52C8,0x3368, /* Array index: 0x1047 */ 0x52CC,0x3369, /* Array index: 0x1047 */ 0x52CF,0x336A, /* Array index: 0x1047 */ 0x52D1,0x336B, /* Array index: 0x1047 */ 0x52D4,0x336C, /* Array index: 0x1047 */ 0x52D6,0x336D, /* Array index: 0x1047 */ 0x52DB,0x336E, /* Array index: 0x1047 */ 0x52DC,0x336F, /* Array index: 0x1047 */ 0x52E1,0x3370, /* Array index: 0x1047 */ 0x52E5,0x3371, /* Array index: 0x1047 */ 0x52F0,0x3376, /* Array index: 0x1047 */ 0x52F1,0x3377, /* Array index: 0x1047 */ 0x52F4,0x3378, /* Array index: 0x1047 */ 0x52F6,0x3379, /* Array index: 0x1047 */ 0x52F7,0x337A, /* Array index: 0x1047 */ 0x5300,0x337B, /* Array index: 0x1047 */ 0x5303,0x337C, /* Array index: 0x1047 */ 0x5311,0x3422, /* Array index: 0x1047 */ 0x5313,0x3423, /* Array index: 0x1047 */ 0x5318,0x3424, /* Array index: 0x1047 */ 0x5330,0x3430, /* Array index: 0x1047 */ 0x5332,0x3431, /* Array index: 0x1047 */ 0x5335,0x3432, /* Array index: 0x1047 */ 0x5342,0x3436, /* Array index: 0x1047 */ 0x534B,0x3438, /* Array index: 0x1047 */ 0x534C,0x3437, /* Array index: 0x1047 */ 0x5359,0x3439, /* Array index: 0x1047 */ 0x535B,0x343A, /* Array index: 0x1047 */ 0x5361,0x343B, /* Array index: 0x1047 */ 0x5363,0x343C, /* Array index: 0x1047 */ 0x5365,0x343D, /* Array index: 0x1047 */ 0x536C,0x343E, /* Array index: 0x1047 */ 0x536D,0x343F, /* Array index: 0x1047 */ 0x5372,0x3440, /* Array index: 0x1047 */ 0x5379,0x3441, /* Array index: 0x1047 */ 0x537E,0x3442, /* Array index: 0x1047 */ 0x5383,0x3443, /* Array index: 0x1047 */ 0x5387,0x3444, /* Array index: 0x1047 */ 0x5388,0x3445, /* Array index: 0x1047 */ 0x538E,0x3446, /* Array index: 0x1047 */ 0x5393,0x3447, /* Array index: 0x1047 */ 0x5394,0x3448, /* Array index: 0x1047 */ 0x5399,0x3449, /* Array index: 0x1047 */ 0x539D,0x344A, /* Array index: 0x1047 */ 0x53A1,0x344B, /* Array index: 0x1047 */ 0x53A4,0x344C, /* Array index: 0x1047 */ 0x53AA,0x344D, /* Array index: 0x1047 */ 0x53AB,0x344E, /* Array index: 0x1047 */ 0x53AF,0x344F, /* Array index: 0x1047 */ 0x53B2,0x3450, /* Array index: 0x1047 */ 0x53BD,0x3456, /* Array index: 0x1047 */ 0x53C0,0x3457, /* Array index: 0x1047 */ 0x53C5,0x3458, /* Array index: 0x1047 */ 0x53CF,0x3459, /* Array index: 0x1047 */ 0x53D2,0x345A, /* Array index: 0x1047 */ 0x53D3,0x345B, /* Array index: 0x1047 */ 0x53D5,0x345C, /* Array index: 0x1047 */ 0x53DA,0x345D, /* Array index: 0x1047 */ 0x53DD,0x345E, /* Array index: 0x1047 */ 0x53DE,0x345F, /* Array index: 0x1047 */ 0x53E0,0x3460, /* Array index: 0x1047 */ 0x53E6,0x3461, /* Array index: 0x1047 */ 0x53E7,0x3462, /* Array index: 0x1047 */ 0x53F5,0x3463, /* Array index: 0x1047 */ 0x5402,0x3464, /* Array index: 0x1047 */ 0x5413,0x3465, /* Array index: 0x1047 */ 0x541A,0x3466, /* Array index: 0x1047 */ 0x5421,0x3467, /* Array index: 0x1047 */ 0x5427,0x3468, /* Array index: 0x1047 */ 0x5428,0x3469, /* Array index: 0x1047 */ 0x542A,0x346A, /* Array index: 0x1047 */ 0x542F,0x346B, /* Array index: 0x1047 */ 0x5431,0x346C, /* Array index: 0x1047 */ 0x5434,0x346D, /* Array index: 0x1047 */ 0x5435,0x346E, /* Array index: 0x1047 */ 0x5443,0x346F, /* Array index: 0x1047 */ 0x5444,0x3470, /* Array index: 0x1047 */ 0x5447,0x3471, /* Array index: 0x1047 */ 0x544D,0x3472, /* Array index: 0x1047 */ 0x544F,0x3473, /* Array index: 0x1047 */ 0x545E,0x3474, /* Array index: 0x1047 */ 0x5462,0x3475, /* Array index: 0x1047 */ 0x5464,0x3476, /* Array index: 0x1047 */ 0x5466,0x3477, /* Array index: 0x1047 */ 0x5467,0x3478, /* Array index: 0x1047 */ 0x5469,0x3479, /* Array index: 0x1047 */ 0x546B,0x347A, /* Array index: 0x1047 */ 0x546D,0x347B, /* Array index: 0x1047 */ 0x546E,0x347C, /* Array index: 0x1047 */ 0x5474,0x347D, /* Array index: 0x1047 */ 0x547F,0x347E, /* Array index: 0x1047 */ 0x5481,0x3521, /* Array index: 0x1047 */ 0x5483,0x3522, /* Array index: 0x1047 */ 0x5485,0x3523, /* Array index: 0x1047 */ 0x5488,0x3524, /* Array index: 0x1047 */ 0x5489,0x3525, /* Array index: 0x1047 */ 0x548D,0x3526, /* Array index: 0x1047 */ 0x5491,0x3527, /* Array index: 0x1047 */ 0x5495,0x3528, /* Array index: 0x1047 */ 0x5496,0x3529, /* Array index: 0x1047 */ 0x549C,0x352A, /* Array index: 0x1047 */ 0x549F,0x352B, /* Array index: 0x1047 */ 0x54A1,0x352C, /* Array index: 0x1047 */ 0x54B1,0x3533, /* Array index: 0x1047 */ 0x54BF,0x3538, /* Array index: 0x1047 */ 0x54C6,0x3539, /* Array index: 0x1047 */ 0x54CA,0x353A, /* Array index: 0x1047 */ 0x54CD,0x353B, /* Array index: 0x1047 */ 0x54CE,0x353C, /* Array index: 0x1047 */ 0x54E0,0x353D, /* Array index: 0x1047 */ 0x54EA,0x353E, /* Array index: 0x1047 */ 0x54EC,0x353F, /* Array index: 0x1047 */ 0x54EF,0x3540, /* Array index: 0x1047 */ 0x54F6,0x3541, /* Array index: 0x1047 */ 0x5505,0x3547, /* Array index: 0x1047 */ 0x5515,0x354D, /* Array index: 0x1047 */ 0x552A,0x354E, /* Array index: 0x1047 */ 0x552B,0x354F, /* Array index: 0x1047 */ 0x5532,0x3550, /* Array index: 0x1047 */ 0x5535,0x3551, /* Array index: 0x1047 */ 0x5536,0x3552, /* Array index: 0x1047 */ 0x5541,0x3556, /* Array index: 0x1047 */ 0x5547,0x3557, /* Array index: 0x1047 */ 0x5549,0x3558, /* Array index: 0x1047 */ 0x554A,0x3559, /* Array index: 0x1047 */ 0x554D,0x355A, /* Array index: 0x1047 */ 0x5550,0x355B, /* Array index: 0x1047 */ 0x5551,0x355C, /* Array index: 0x1047 */ 0x5558,0x355D, /* Array index: 0x1047 */ 0x555A,0x355E, /* Array index: 0x1047 */ 0x555B,0x355F, /* Array index: 0x1047 */ 0x555E,0x3560, /* Array index: 0x1047 */ 0x5560,0x3561, /* Array index: 0x1047 */ 0x5561,0x3562, /* Array index: 0x1047 */ 0x5564,0x3563, /* Array index: 0x1047 */ 0x5566,0x3564, /* Array index: 0x1047 */ 0x557F,0x3565, /* Array index: 0x1047 */ 0x5581,0x3566, /* Array index: 0x1047 */ 0x5582,0x3567, /* Array index: 0x1047 */ 0x5586,0x3568, /* Array index: 0x1047 */ 0x5588,0x3569, /* Array index: 0x1047 */ 0x5597,0x3570, /* Array index: 0x1047 */ 0x55A3,0x3571, /* Array index: 0x1047 */ 0x55A4,0x3572, /* Array index: 0x1047 */ 0x55AD,0x3573, /* Array index: 0x1047 */ 0x55B2,0x3574, /* Array index: 0x1047 */ 0x55BF,0x3575, /* Array index: 0x1047 */ 0x55C1,0x3576, /* Array index: 0x1047 */ 0x55C3,0x3577, /* Array index: 0x1047 */ 0x55C6,0x3578, /* Array index: 0x1047 */ 0x55C9,0x3579, /* Array index: 0x1047 */ 0x55CB,0x357A, /* Array index: 0x1047 */ 0x55CC,0x357B, /* Array index: 0x1047 */ 0x55CE,0x357C, /* Array index: 0x1047 */ 0x55D7,0x3622, /* Array index: 0x1047 */ 0x55D8,0x3623, /* Array index: 0x1047 */ 0x55DB,0x3624, /* Array index: 0x1047 */ 0x55DE,0x3625, /* Array index: 0x1047 */ 0x55E2,0x3626, /* Array index: 0x1047 */ 0x55E9,0x3627, /* Array index: 0x1047 */ 0x55F6,0x3628, /* Array index: 0x1047 */ 0x55FF,0x3629, /* Array index: 0x1047 */ 0x5605,0x362A, /* Array index: 0x1047 */ 0x5608,0x362B, /* Array index: 0x1047 */ 0x560A,0x362C, /* Array index: 0x1047 */ 0x5619,0x3633, /* Array index: 0x1047 */ 0x562C,0x3634, /* Array index: 0x1047 */ 0x5630,0x3635, /* Array index: 0x1047 */ 0x5633,0x3636, /* Array index: 0x1047 */ 0x5635,0x3637, /* Array index: 0x1047 */ 0x5637,0x3638, /* Array index: 0x1047 */ 0x5649,0x3643, /* Array index: 0x1047 */ 0x564B,0x3644, /* Array index: 0x1047 */ 0x564D,0x3645, /* Array index: 0x1047 */ 0x564F,0x3646, /* Array index: 0x1047 */ 0x5654,0x3647, /* Array index: 0x1047 */ 0x5666,0x364D, /* Array index: 0x1047 */ 0x5669,0x364E, /* Array index: 0x1047 */ 0x566D,0x364F, /* Array index: 0x1047 */ 0x566F,0x3650, /* Array index: 0x1047 */ 0x5671,0x3651, /* Array index: 0x1047 */ 0x5672,0x3652, /* Array index: 0x1047 */ 0x5675,0x3653, /* Array index: 0x1047 */ 0x5684,0x3654, /* Array index: 0x1047 */ 0x5685,0x3655, /* Array index: 0x1047 */ 0x5688,0x3656, /* Array index: 0x1047 */ 0x568B,0x3657, /* Array index: 0x1047 */ 0x568C,0x3658, /* Array index: 0x1047 */ 0x5695,0x3659, /* Array index: 0x1047 */ 0x56B1,0x3666, /* Array index: 0x1047 */ 0x56B3,0x3667, /* Array index: 0x1047 */ 0x56B7,0x3668, /* Array index: 0x1047 */ 0x56BE,0x3669, /* Array index: 0x1047 */ 0x56C5,0x366A, /* Array index: 0x1047 */ 0x56D9,0x3672, /* Array index: 0x1047 */ 0x56DC,0x3673, /* Array index: 0x1047 */ 0x56DD,0x3674, /* Array index: 0x1047 */ 0x56DF,0x3675, /* Array index: 0x1047 */ 0x56E1,0x3676, /* Array index: 0x1047 */ 0x56EB,0x367D, /* Array index: 0x1047 */ 0x56ED,0x367E, /* Array index: 0x1047 */ 0x56F1,0x367C, /* Array index: 0x1047 */ 0x56F6,0x3721, /* Array index: 0x1047 */ 0x56F7,0x3722, /* Array index: 0x1047 */ 0x5701,0x3723, /* Array index: 0x1047 */ 0x5702,0x3724, /* Array index: 0x1047 */ 0x5707,0x3725, /* Array index: 0x1047 */ 0x570A,0x3726, /* Array index: 0x1047 */ 0x570C,0x3727, /* Array index: 0x1047 */ 0x5711,0x3728, /* Array index: 0x1047 */ 0x5715,0x3729, /* Array index: 0x1047 */ 0x571A,0x372A, /* Array index: 0x1047 */ 0x571B,0x372B, /* Array index: 0x1047 */ 0x571D,0x372C, /* Array index: 0x1047 */ 0x5729,0x3732, /* Array index: 0x1047 */ 0x572A,0x3733, /* Array index: 0x1047 */ 0x572C,0x3734, /* Array index: 0x1047 */ 0x572E,0x3735, /* Array index: 0x1047 */ 0x572F,0x3736, /* Array index: 0x1047 */ 0x5733,0x3737, /* Array index: 0x1047 */ 0x5734,0x3738, /* Array index: 0x1047 */ 0x5745,0x373C, /* Array index: 0x1047 */ 0x5746,0x373D, /* Array index: 0x1047 */ 0x574C,0x373E, /* Array index: 0x1047 */ 0x574D,0x373F, /* Array index: 0x1047 */ 0x5752,0x3740, /* Array index: 0x1047 */ 0x5762,0x3741, /* Array index: 0x1047 */ 0x5765,0x3742, /* Array index: 0x1047 */ 0x5767,0x3743, /* Array index: 0x1047 */ 0x5768,0x3744, /* Array index: 0x1047 */ 0x5781,0x3754, /* Array index: 0x1047 */ 0x5783,0x3755, /* Array index: 0x1047 */ 0x578C,0x3756, /* Array index: 0x1047 */ 0x5794,0x3757, /* Array index: 0x1047 */ 0x5795,0x3760, /* Array index: 0x1047 */ 0x5797,0x3758, /* Array index: 0x1047 */ 0x57AC,0x3764, /* Array index: 0x1047 */ 0x57B8,0x3765, /* Array index: 0x1047 */ 0x57BD,0x3766, /* Array index: 0x1047 */ 0x57C7,0x3767, /* Array index: 0x1047 */ 0x57C8,0x3768, /* Array index: 0x1047 */ 0x57CC,0x3769, /* Array index: 0x1047 */ 0x57CF,0x376A, /* Array index: 0x1047 */ 0x57D5,0x376B, /* Array index: 0x1047 */ 0x57DD,0x376C, /* Array index: 0x1047 */ 0x57DE,0x376D, /* Array index: 0x1047 */ 0x57E1,0x377E, /* Array index: 0x1047 */ 0x57E4,0x376E, /* Array index: 0x1047 */ 0x57E6,0x376F, /* Array index: 0x1047 */ 0x57E7,0x3770, /* Array index: 0x1047 */ 0x57E9,0x3771, /* Array index: 0x1047 */ 0x57ED,0x3772, /* Array index: 0x1047 */ 0x57F0,0x3773, /* Array index: 0x1047 */ 0x57F5,0x3774, /* Array index: 0x1047 */ 0x57F6,0x3775, /* Array index: 0x1047 */ 0x57F8,0x3776, /* Array index: 0x1047 */ 0x5803,0x377A, /* Array index: 0x1047 */ 0x5804,0x377B, /* Array index: 0x1047 */ 0x5808,0x377C, /* Array index: 0x1047 */ 0x5809,0x377D, /* Array index: 0x1047 */ 0x580C,0x3821, /* Array index: 0x1047 */ 0x580D,0x3822, /* Array index: 0x1047 */ 0x581B,0x3823, /* Array index: 0x1047 */ 0x5826,0x3827, /* Array index: 0x1047 */ 0x5827,0x3828, /* Array index: 0x1047 */ 0x582D,0x3829, /* Array index: 0x1047 */ 0x5832,0x382A, /* Array index: 0x1047 */ 0x5839,0x382B, /* Array index: 0x1047 */ 0x583F,0x382C, /* Array index: 0x1047 */ 0x5849,0x382D, /* Array index: 0x1047 */ 0x5855,0x3832, /* Array index: 0x1047 */ 0x585F,0x3833, /* Array index: 0x1047 */ 0x5861,0x3834, /* Array index: 0x1047 */ 0x5864,0x3835, /* Array index: 0x1047 */ 0x5867,0x3836, /* Array index: 0x1047 */ 0x5868,0x3837, /* Array index: 0x1047 */ 0x5878,0x3838, /* Array index: 0x1047 */ 0x587C,0x3839, /* Array index: 0x1047 */ 0x5894,0x3845, /* Array index: 0x1047 */ 0x5896,0x3846, /* Array index: 0x1047 */ 0x589D,0x3847, /* Array index: 0x1047 */ 0x58A6,0x384B, /* Array index: 0x1047 */ 0x58A9,0x384C, /* Array index: 0x1047 */ 0x58B1,0x384D, /* Array index: 0x1047 */ 0x58B2,0x384E, /* Array index: 0x1047 */ 0x58BC,0x3850, /* Array index: 0x1047 */ 0x58C2,0x3851, /* Array index: 0x1047 */ 0x58C4,0x384F, /* Array index: 0x1047 */ 0x58C8,0x3852, /* Array index: 0x1047 */ 0x58CD,0x3853, /* Array index: 0x1047 */ 0x58CE,0x3854, /* Array index: 0x1047 */ 0x58D0,0x3855, /* Array index: 0x1047 */ 0x58D2,0x3856, /* Array index: 0x1047 */ 0x58D4,0x3857, /* Array index: 0x1047 */ 0x58D6,0x3858, /* Array index: 0x1047 */ 0x58DA,0x3859, /* Array index: 0x1047 */ 0x58DD,0x385A, /* Array index: 0x1047 */ 0x58E1,0x385B, /* Array index: 0x1047 */ 0x58E2,0x385C, /* Array index: 0x1047 */ 0x58E9,0x385D, /* Array index: 0x1047 */ 0x58F3,0x385E, /* Array index: 0x1047 */ 0x5905,0x385F, /* Array index: 0x1047 */ 0x5906,0x3860, /* Array index: 0x1047 */ 0x590B,0x3861, /* Array index: 0x1047 */ 0x590C,0x3862, /* Array index: 0x1047 */ 0x591D,0x3867, /* Array index: 0x1047 */ 0x5921,0x3868, /* Array index: 0x1047 */ 0x5923,0x3869, /* Array index: 0x1047 */ 0x5924,0x386A, /* Array index: 0x1047 */ 0x5928,0x386B, /* Array index: 0x1047 */ 0x592F,0x386C, /* Array index: 0x1047 */ 0x5930,0x386D, /* Array index: 0x1047 */ 0x5933,0x386E, /* Array index: 0x1047 */ 0x5935,0x386F, /* Array index: 0x1047 */ 0x5936,0x3870, /* Array index: 0x1047 */ 0x593F,0x3871, /* Array index: 0x1047 */ 0x5943,0x3872, /* Array index: 0x1047 */ 0x5946,0x3873, /* Array index: 0x1047 */ 0x5952,0x3874, /* Array index: 0x1047 */ 0x5953,0x3875, /* Array index: 0x1047 */ 0x5959,0x3876, /* Array index: 0x1047 */ 0x596B,0x387D, /* Array index: 0x1047 */ 0x596D,0x387E, /* Array index: 0x1047 */ 0x596F,0x3921, /* Array index: 0x1047 */ 0x5972,0x3922, /* Array index: 0x1047 */ 0x5975,0x3923, /* Array index: 0x1047 */ 0x5976,0x3924, /* Array index: 0x1047 */ 0x5979,0x3925, /* Array index: 0x1047 */ 0x597B,0x3926, /* Array index: 0x1047 */ 0x597C,0x3927, /* Array index: 0x1047 */ 0x598B,0x3928, /* Array index: 0x1047 */ 0x598C,0x3929, /* Array index: 0x1047 */ 0x598E,0x392A, /* Array index: 0x1047 */ 0x5992,0x392B, /* Array index: 0x1047 */ 0x5995,0x392C, /* Array index: 0x1047 */ 0x5997,0x392D, /* Array index: 0x1047 */ 0x599F,0x392E, /* Array index: 0x1047 */ 0x59A4,0x392F, /* Array index: 0x1047 */ 0x59A7,0x3930, /* Array index: 0x1047 */ 0x59B3,0x3935, /* Array index: 0x1047 */ 0x59B7,0x3936, /* Array index: 0x1047 */ 0x59BA,0x3937, /* Array index: 0x1047 */ 0x59BC,0x3938, /* Array index: 0x1047 */ 0x59C1,0x3939, /* Array index: 0x1047 */ 0x59C3,0x393A, /* Array index: 0x1047 */ 0x59C4,0x393B, /* Array index: 0x1047 */ 0x59C8,0x393C, /* Array index: 0x1047 */ 0x59CA,0x393D, /* Array index: 0x1047 */ 0x59CD,0x393E, /* Array index: 0x1047 */ 0x59D2,0x393F, /* Array index: 0x1047 */ 0x59E3,0x3943, /* Array index: 0x1047 */ 0x59E4,0x3944, /* Array index: 0x1047 */ 0x59E7,0x3945, /* Array index: 0x1047 */ 0x59F7,0x394B, /* Array index: 0x1047 */ 0x5A00,0x394C, /* Array index: 0x1047 */ 0x5A04,0x394D, /* Array index: 0x1047 */ 0x5A12,0x3951, /* Array index: 0x1047 */ 0x5A13,0x3952, /* Array index: 0x1047 */ 0x5A1E,0x3953, /* Array index: 0x1047 */ 0x5A23,0x3954, /* Array index: 0x1047 */ 0x5A24,0x3955, /* Array index: 0x1047 */ 0x5A27,0x3956, /* Array index: 0x1047 */ 0x5A28,0x3957, /* Array index: 0x1047 */ 0x5A2A,0x3958, /* Array index: 0x1047 */ 0x5A2D,0x3959, /* Array index: 0x1047 */ 0x5A30,0x395A, /* Array index: 0x1047 */ 0x5A4C,0x395F, /* Array index: 0x1047 */ 0x5A50,0x3960, /* Array index: 0x1047 */ 0x5A55,0x3961, /* Array index: 0x1047 */ 0x5A5E,0x3962, /* Array index: 0x1047 */ 0x5A63,0x3963, /* Array index: 0x1047 */ 0x5A65,0x3964, /* Array index: 0x1047 */ 0x5A67,0x3965, /* Array index: 0x1047 */ 0x5A6D,0x3966, /* Array index: 0x1047 */ 0x5A77,0x3967, /* Array index: 0x1047 */ 0x5A7A,0x3968, /* Array index: 0x1047 */ 0x5A7B,0x3969, /* Array index: 0x1047 */ 0x5A7E,0x396A, /* Array index: 0x1047 */ 0x5A8B,0x396B, /* Array index: 0x1047 */ 0x5A90,0x396C, /* Array index: 0x1047 */ 0x5A93,0x396D, /* Array index: 0x1047 */ 0x5A96,0x396E, /* Array index: 0x1047 */ 0x5A99,0x396F, /* Array index: 0x1047 */ 0x5AA7,0x3975, /* Array index: 0x1047 */ 0x5AAC,0x3976, /* Array index: 0x1047 */ 0x5AB8,0x397B, /* Array index: 0x1047 */ 0x5ABA,0x397C, /* Array index: 0x1047 */ 0x5ABB,0x397D, /* Array index: 0x1047 */ 0x5ABF,0x397E, /* Array index: 0x1047 */ 0x5AC4,0x3A21, /* Array index: 0x1047 */ 0x5AC6,0x3A22, /* Array index: 0x1047 */ 0x5AC8,0x3A23, /* Array index: 0x1047 */ 0x5ACF,0x3A24, /* Array index: 0x1047 */ 0x5ADA,0x3A25, /* Array index: 0x1047 */ 0x5ADC,0x3A26, /* Array index: 0x1047 */ 0x5AE0,0x3A27, /* Array index: 0x1047 */ 0x5AE5,0x3A28, /* Array index: 0x1047 */ 0x5AEA,0x3A29, /* Array index: 0x1047 */ 0x5AEE,0x3A2A, /* Array index: 0x1047 */ 0x5AF5,0x3A2B, /* Array index: 0x1047 */ 0x5AF6,0x3A2C, /* Array index: 0x1047 */ 0x5AFD,0x3A2D, /* Array index: 0x1047 */ 0x5B00,0x3A2E, /* Array index: 0x1047 */ 0x5B01,0x3A2F, /* Array index: 0x1047 */ 0x5B08,0x3A30, /* Array index: 0x1047 */ 0x5B17,0x3A31, /* Array index: 0x1047 */ 0x5B19,0x3A33, /* Array index: 0x1047 */ 0x5B1B,0x3A34, /* Array index: 0x1047 */ 0x5B1D,0x3A35, /* Array index: 0x1047 */ 0x5B21,0x3A36, /* Array index: 0x1047 */ 0x5B25,0x3A37, /* Array index: 0x1047 */ 0x5B2D,0x3A38, /* Array index: 0x1047 */ 0x5B34,0x3A32, /* Array index: 0x1047 */ 0x5B38,0x3A39, /* Array index: 0x1047 */ 0x5B41,0x3A3A, /* Array index: 0x1047 */ 0x5B4B,0x3A3B, /* Array index: 0x1047 */ 0x5B4C,0x3A3C, /* Array index: 0x1047 */ 0x5B52,0x3A3D, /* Array index: 0x1047 */ 0x5B56,0x3A3E, /* Array index: 0x1047 */ 0x5B5E,0x3A3F, /* Array index: 0x1047 */ 0x5B68,0x3A40, /* Array index: 0x1047 */ 0x5B6E,0x3A41, /* Array index: 0x1047 */ 0x5B6F,0x3A42, /* Array index: 0x1047 */ 0x5B84,0x3A48, /* Array index: 0x1047 */ 0x5B86,0x3A49, /* Array index: 0x1047 */ 0x5B8A,0x3A4A, /* Array index: 0x1047 */ 0x5B8E,0x3A4B, /* Array index: 0x1047 */ 0x5BA8,0x3A51, /* Array index: 0x1047 */ 0x5BA9,0x3A52, /* Array index: 0x1047 */ 0x5BAC,0x3A53, /* Array index: 0x1047 */ 0x5BAD,0x3A54, /* Array index: 0x1047 */ 0x5BAF,0x3A55, /* Array index: 0x1047 */ 0x5BB1,0x3A56, /* Array index: 0x1047 */ 0x5BB2,0x3A57, /* Array index: 0x1047 */ 0x5BB7,0x3A58, /* Array index: 0x1047 */ 0x5BBA,0x3A59, /* Array index: 0x1047 */ 0x5BBC,0x3A5A, /* Array index: 0x1047 */ 0x5BC0,0x3A5B, /* Array index: 0x1047 */ 0x5BC1,0x3A5C, /* Array index: 0x1047 */ 0x5BCD,0x3A5D, /* Array index: 0x1047 */ 0x5BCF,0x3A5E, /* Array index: 0x1047 */ 0x5BE0,0x3A64, /* Array index: 0x1047 */ 0x5BEF,0x3A65, /* Array index: 0x1047 */ 0x5BF1,0x3A66, /* Array index: 0x1047 */ 0x5BF4,0x3A67, /* Array index: 0x1047 */ 0x5BFD,0x3A68, /* Array index: 0x1047 */ 0x5C0C,0x3A69, /* Array index: 0x1047 */ 0x5C17,0x3A6A, /* Array index: 0x1047 */ 0x5C1E,0x3A6B, /* Array index: 0x1047 */ 0x5C1F,0x3A6C, /* Array index: 0x1047 */ 0x5C23,0x3A6D, /* Array index: 0x1047 */ 0x5C26,0x3A6E, /* Array index: 0x1047 */ 0x5C29,0x3A6F, /* Array index: 0x1047 */ 0x5C2B,0x3A70, /* Array index: 0x1047 */ 0x5C2C,0x3A71, /* Array index: 0x1047 */ 0x5C2E,0x3A72, /* Array index: 0x1047 */ 0x5C30,0x3A73, /* Array index: 0x1047 */ 0x5C32,0x3A74, /* Array index: 0x1047 */ 0x5C35,0x3A75, /* Array index: 0x1047 */ 0x5C36,0x3A76, /* Array index: 0x1047 */ 0x5C59,0x3A77, /* Array index: 0x1047 */ 0x5C5A,0x3A78, /* Array index: 0x1047 */ 0x5C5C,0x3A79, /* Array index: 0x1047 */ 0x5C62,0x3A7A, /* Array index: 0x1047 */ 0x5C63,0x3A7B, /* Array index: 0x1047 */ 0x5C6D,0x3B21, /* Array index: 0x1047 */ 0x5C70,0x3B22, /* Array index: 0x1047 */ 0x5C74,0x3B23, /* Array index: 0x1047 */ 0x5C75,0x3B24, /* Array index: 0x1047 */ 0x5C87,0x3B29, /* Array index: 0x1047 */ 0x5C88,0x3B2A, /* Array index: 0x1047 */ 0x5C8A,0x3B2B, /* Array index: 0x1047 */ 0x5C8F,0x3B2C, /* Array index: 0x1047 */ 0x5C92,0x3B2D, /* Array index: 0x1047 */ 0x5C9D,0x3B2E, /* Array index: 0x1047 */ 0x5CA6,0x3B33, /* Array index: 0x1047 */ 0x5CAA,0x3B34, /* Array index: 0x1047 */ 0x5CB2,0x3B35, /* Array index: 0x1047 */ 0x5CB4,0x3B36, /* Array index: 0x1047 */ 0x5CB5,0x3B37, /* Array index: 0x1047 */ 0x5CBA,0x3B38, /* Array index: 0x1047 */ 0x5CC9,0x3B39, /* Array index: 0x1047 */ 0x5CCB,0x3B3A, /* Array index: 0x1047 */ 0x5CD2,0x3B3B, /* Array index: 0x1047 */ 0x5CD7,0x3B3D, /* Array index: 0x1047 */ 0x5CDD,0x3B3C, /* Array index: 0x1047 */ 0x5CEE,0x3B3E, /* Array index: 0x1047 */ 0x5CF1,0x3B3F, /* Array index: 0x1047 */ 0x5CF2,0x3B40, /* Array index: 0x1047 */ 0x5CF4,0x3B41, /* Array index: 0x1047 */ 0x5D01,0x3B42, /* Array index: 0x1047 */ 0x5D06,0x3B43, /* Array index: 0x1047 */ 0x5D0D,0x3B44, /* Array index: 0x1047 */ 0x5D12,0x3B45, /* Array index: 0x1047 */ 0x5D2B,0x3B46, /* Array index: 0x1047 */ 0x5D31,0x3B4B, /* Array index: 0x1047 */ 0x5D34,0x3B4C, /* Array index: 0x1047 */ 0x5D39,0x3B4D, /* Array index: 0x1047 */ 0x5D3D,0x3B4E, /* Array index: 0x1047 */ 0x5D3F,0x3B4F, /* Array index: 0x1047 */ 0x5D42,0x3B50, /* Array index: 0x1047 */ 0x5D43,0x3B51, /* Array index: 0x1047 */ 0x5D46,0x3B52, /* Array index: 0x1047 */ 0x5D48,0x3B53, /* Array index: 0x1047 */ 0x5D4A,0x3B57, /* Array index: 0x1047 */ 0x5D51,0x3B55, /* Array index: 0x1047 */ 0x5D55,0x3B54, /* Array index: 0x1047 */ 0x5D59,0x3B56, /* Array index: 0x1047 */ 0x5D6A,0x3B5D, /* Array index: 0x1047 */ 0x5D6D,0x3B5E, /* Array index: 0x1047 */ 0x5D70,0x3B5F, /* Array index: 0x1047 */ 0x5D79,0x3B60, /* Array index: 0x1047 */ 0x5D7A,0x3B61, /* Array index: 0x1047 */ 0x5D7E,0x3B62, /* Array index: 0x1047 */ 0x5D7F,0x3B63, /* Array index: 0x1047 */ 0x5D81,0x3B64, /* Array index: 0x1047 */ 0x5D83,0x3B65, /* Array index: 0x1047 */ 0x5D88,0x3B66, /* Array index: 0x1047 */ 0x5D8A,0x3B67, /* Array index: 0x1047 */ 0x5D99,0x3B6C, /* Array index: 0x1047 */ 0x5D9B,0x3B6D, /* Array index: 0x1047 */ 0x5D9F,0x3B6E, /* Array index: 0x1047 */ 0x5DA0,0x3B6F, /* Array index: 0x1047 */ 0x5DA7,0x3B70, /* Array index: 0x1047 */ 0x5DAB,0x3B71, /* Array index: 0x1047 */ 0x5DB0,0x3B72, /* Array index: 0x1047 */ 0x5DB2,0x6674, /* Array index: 0x1047 */ 0x5DB4,0x3B73, /* Array index: 0x1047 */ 0x5DB8,0x3B74, /* Array index: 0x1047 */ 0x5DB9,0x3B75, /* Array index: 0x1047 */ 0x5DC3,0x3B76, /* Array index: 0x1047 */ 0x5DC7,0x3B77, /* Array index: 0x1047 */ 0x5DCB,0x3B78, /* Array index: 0x1047 */ 0x5DCE,0x3B7A, /* Array index: 0x1047 */ 0x5DD0,0x3B79, /* Array index: 0x1047 */ 0x5DD8,0x3B7B, /* Array index: 0x1047 */ 0x5DD9,0x3B7C, /* Array index: 0x1047 */ 0x5DE0,0x3B7D, /* Array index: 0x1047 */ 0x5DE4,0x3B7E, /* Array index: 0x1047 */ 0x5DE9,0x3C21, /* Array index: 0x1047 */ 0x5DF8,0x3C22, /* Array index: 0x1047 */ 0x5DF9,0x3C23, /* Array index: 0x1047 */ 0x5E00,0x3C24, /* Array index: 0x1047 */ 0x5E07,0x3C25, /* Array index: 0x1047 */ 0x5E0D,0x3C26, /* Array index: 0x1047 */ 0x5E12,0x3C27, /* Array index: 0x1047 */ 0x5E14,0x3C28, /* Array index: 0x1047 */ 0x5E15,0x3C29, /* Array index: 0x1047 */ 0x5E18,0x3C2A, /* Array index: 0x1047 */ 0x5E1F,0x3C2B, /* Array index: 0x1047 */ 0x5E20,0x3C2C, /* Array index: 0x1047 */ 0x5E28,0x3C2E, /* Array index: 0x1047 */ 0x5E2E,0x3C2D, /* Array index: 0x1047 */ 0x5E32,0x3C2F, /* Array index: 0x1047 */ 0x5E35,0x3C30, /* Array index: 0x1047 */ 0x5E3E,0x3C31, /* Array index: 0x1047 */ 0x5E49,0x3C34, /* Array index: 0x1047 */ 0x5E4B,0x3C32, /* Array index: 0x1047 */ 0x5E50,0x3C33, /* Array index: 0x1047 */ 0x5E51,0x3C35, /* Array index: 0x1047 */ 0x5E56,0x3C36, /* Array index: 0x1047 */ 0x5E58,0x3C37, /* Array index: 0x1047 */ 0x5E5B,0x3C38, /* Array index: 0x1047 */ 0x5E5C,0x3C39, /* Array index: 0x1047 */ 0x5E5E,0x3C3A, /* Array index: 0x1047 */ 0x5E80,0x3C42, /* Array index: 0x1047 */ 0x5E8B,0x3C43, /* Array index: 0x1047 */ 0x5E8E,0x3C44, /* Array index: 0x1047 */ 0x5EA2,0x3C45, /* Array index: 0x1047 */ 0x5EA4,0x3C46, /* Array index: 0x1047 */ 0x5EA5,0x3C47, /* Array index: 0x1047 */ 0x5EA8,0x3C48, /* Array index: 0x1047 */ 0x5EAA,0x3C49, /* Array index: 0x1047 */ 0x5EAC,0x3C4A, /* Array index: 0x1047 */ 0x5EB1,0x3C4B, /* Array index: 0x1047 */ 0x5EB3,0x3C4C, /* Array index: 0x1047 */ 0x5EC6,0x3C50, /* Array index: 0x1047 */ 0x5ECB,0x3C52, /* Array index: 0x1047 */ 0x5ECC,0x3C51, /* Array index: 0x1047 */ 0x5ECE,0x3C53, /* Array index: 0x1047 */ 0x5EDC,0x3C58, /* Array index: 0x1047 */ 0x5EDE,0x3C59, /* Array index: 0x1047 */ 0x5EE5,0x3C5A, /* Array index: 0x1047 */ 0x5EEB,0x3C5B, /* Array index: 0x1047 */ 0x5F02,0x3C5C, /* Array index: 0x1047 */ 0x5F0E,0x3C60, /* Array index: 0x1047 */ 0x5F19,0x3C61, /* Array index: 0x1047 */ 0x5F1C,0x3C62, /* Array index: 0x1047 */ 0x5F1D,0x3C63, /* Array index: 0x1047 */ 0x5F28,0x3C68, /* Array index: 0x1047 */ 0x5F2B,0x3C69, /* Array index: 0x1047 */ 0x5F2C,0x3C6A, /* Array index: 0x1047 */ 0x5F2E,0x3C6B, /* Array index: 0x1047 */ 0x5F30,0x3C6C, /* Array index: 0x1047 */ 0x5F34,0x3C6D, /* Array index: 0x1047 */ 0x5F36,0x3C6E, /* Array index: 0x1047 */ 0x5F3B,0x3C6F, /* Array index: 0x1047 */ 0x5F3D,0x3C70, /* Array index: 0x1047 */ 0x5F3F,0x3C71, /* Array index: 0x1047 */ 0x5F40,0x3C72, /* Array index: 0x1047 */ 0x5F44,0x3C73, /* Array index: 0x1047 */ 0x5F45,0x3C74, /* Array index: 0x1047 */ 0x5F47,0x3C75, /* Array index: 0x1047 */ 0x5F4D,0x3C76, /* Array index: 0x1047 */ 0x5F50,0x3C77, /* Array index: 0x1047 */ 0x5F54,0x3C78, /* Array index: 0x1047 */ 0x5F58,0x3C79, /* Array index: 0x1047 */ 0x5F5B,0x3C7A, /* Array index: 0x1047 */ 0x5F60,0x3C7B, /* Array index: 0x1047 */ 0x5F63,0x3C7C, /* Array index: 0x1047 */ 0x5F64,0x3C7D, /* Array index: 0x1047 */ 0x5F67,0x3C7E, /* Array index: 0x1047 */ 0x5F6F,0x3D21, /* Array index: 0x1047 */ 0x5F72,0x3D22, /* Array index: 0x1047 */ 0x5F74,0x3D23, /* Array index: 0x1047 */ 0x5F75,0x3D24, /* Array index: 0x1047 */ 0x5F78,0x3D25, /* Array index: 0x1047 */ 0x5F7A,0x3D26, /* Array index: 0x1047 */ 0x5F7D,0x3D27, /* Array index: 0x1047 */ 0x5F7E,0x3D28, /* Array index: 0x1047 */ 0x5F89,0x3D29, /* Array index: 0x1047 */ 0x5F8D,0x3D2A, /* Array index: 0x1047 */ 0x5F8F,0x3D2B, /* Array index: 0x1047 */ 0x5F96,0x3D2C, /* Array index: 0x1047 */ 0x5F9C,0x3D2D, /* Array index: 0x1047 */ 0x5F9D,0x3D2E, /* Array index: 0x1047 */ 0x5FA2,0x3D2F, /* Array index: 0x1047 */ 0x5FA4,0x3D32, /* Array index: 0x1047 */ 0x5FA7,0x3D30, /* Array index: 0x1047 */ 0x5FB8,0x3D37, /* Array index: 0x1047 */ 0x5FC4,0x3D38, /* Array index: 0x1047 */ 0x5FDE,0x3D42, /* Array index: 0x1047 */ 0x5FE1,0x3D43, /* Array index: 0x1047 */ 0x5FE2,0x3D44, /* Array index: 0x1047 */ 0x5FF6,0x3D4E, /* Array index: 0x1047 */ 0x5FFA,0x3D4F, /* Array index: 0x1047 */ 0x5FFC,0x3D50, /* Array index: 0x1047 */ 0x6007,0x3D51, /* Array index: 0x1047 */ 0x600A,0x3D52, /* Array index: 0x1047 */ 0x600D,0x3D53, /* Array index: 0x1047 */ 0x6013,0x3D54, /* Array index: 0x1047 */ 0x6014,0x3D55, /* Array index: 0x1047 */ 0x6017,0x3D56, /* Array index: 0x1047 */ 0x6018,0x3D57, /* Array index: 0x1047 */ 0x601A,0x3D58, /* Array index: 0x1047 */ 0x601F,0x3D59, /* Array index: 0x1047 */ 0x6024,0x3D5A, /* Array index: 0x1047 */ 0x602D,0x3D5B, /* Array index: 0x1047 */ 0x6033,0x3D5C, /* Array index: 0x1047 */ 0x6035,0x3D5D, /* Array index: 0x1047 */ 0x6040,0x3D5E, /* Array index: 0x1047 */ 0x604C,0x3D62, /* Array index: 0x1047 */ 0x6051,0x3D63, /* Array index: 0x1047 */ 0x6054,0x3D64, /* Array index: 0x1047 */ 0x6056,0x3D65, /* Array index: 0x1047 */ 0x6057,0x3D66, /* Array index: 0x1047 */ 0x605D,0x3D67, /* Array index: 0x1047 */ 0x6061,0x3D68, /* Array index: 0x1047 */ 0x6067,0x3D69, /* Array index: 0x1047 */ 0x6071,0x3D6A, /* Array index: 0x1047 */ 0x607E,0x3D6B, /* Array index: 0x1047 */ 0x607F,0x3D6C, /* Array index: 0x1047 */ 0x6082,0x3D6D, /* Array index: 0x1047 */ 0x6086,0x3D6E, /* Array index: 0x1047 */ 0x6088,0x3D6F, /* Array index: 0x1047 */ 0x608A,0x3D70, /* Array index: 0x1047 */ 0x608E,0x3D71, /* Array index: 0x1047 */ 0x6091,0x3D72, /* Array index: 0x1047 */ 0x6093,0x3D73, /* Array index: 0x1047 */ 0x6095,0x3D74, /* Array index: 0x1047 */ 0x6098,0x3D75, /* Array index: 0x1047 */ 0x609D,0x3D76, /* Array index: 0x1047 */ 0x609E,0x3D77, /* Array index: 0x1047 */ 0x60A2,0x3D78, /* Array index: 0x1047 */ 0x60A4,0x3D79, /* Array index: 0x1047 */ 0x60A5,0x3D7A, /* Array index: 0x1047 */ 0x60A8,0x3D7B, /* Array index: 0x1047 */ 0x60B0,0x3D7C, /* Array index: 0x1047 */ 0x60B1,0x3D7D, /* Array index: 0x1047 */ 0x60B7,0x3D7E, /* Array index: 0x1047 */ 0x60BB,0x3E21, /* Array index: 0x1047 */ 0x60BE,0x3E22, /* Array index: 0x1047 */ 0x60C2,0x3E23, /* Array index: 0x1047 */ 0x60C4,0x3E24, /* Array index: 0x1047 */ 0x60D4,0x3E2B, /* Array index: 0x1047 */ 0x60D5,0x3E2C, /* Array index: 0x1047 */ 0x60D9,0x3E2D, /* Array index: 0x1047 */ 0x60DB,0x3E2E, /* Array index: 0x1047 */ 0x60DD,0x3E2F, /* Array index: 0x1047 */ 0x60DE,0x3E30, /* Array index: 0x1047 */ 0x60E2,0x3E31, /* Array index: 0x1047 */ 0x60E5,0x3E32, /* Array index: 0x1047 */ 0x60F2,0x3E33, /* Array index: 0x1047 */ 0x60F5,0x3E34, /* Array index: 0x1047 */ 0x60F8,0x3E35, /* Array index: 0x1047 */ 0x60FC,0x3E36, /* Array index: 0x1047 */ 0x60FD,0x3E37, /* Array index: 0x1047 */ 0x6102,0x3E38, /* Array index: 0x1047 */ 0x6107,0x3E39, /* Array index: 0x1047 */ 0x610A,0x3E3A, /* Array index: 0x1047 */ 0x610C,0x3E3B, /* Array index: 0x1047 */ 0x611C,0x3E44, /* Array index: 0x1047 */ 0x611E,0x3E45, /* Array index: 0x1047 */ 0x6122,0x3E46, /* Array index: 0x1047 */ 0x612A,0x3E47, /* Array index: 0x1047 */ 0x612B,0x3E48, /* Array index: 0x1047 */ 0x6130,0x3E49, /* Array index: 0x1047 */ 0x6131,0x3E4A, /* Array index: 0x1047 */ 0x6141,0x3E4F, /* Array index: 0x1047 */ 0x6145,0x3E50, /* Array index: 0x1047 */ 0x6146,0x3E51, /* Array index: 0x1047 */ 0x6149,0x3E52, /* Array index: 0x1047 */ 0x615E,0x3E53, /* Array index: 0x1047 */ 0x6160,0x3E54, /* Array index: 0x1047 */ 0x616C,0x3E55, /* Array index: 0x1047 */ 0x6172,0x3E56, /* Array index: 0x1047 */ 0x6178,0x3E57, /* Array index: 0x1047 */ 0x618B,0x3E5F, /* Array index: 0x1047 */ 0x618D,0x3E60, /* Array index: 0x1047 */ 0x6192,0x3E61, /* Array index: 0x1047 */ 0x6193,0x3E62, /* Array index: 0x1047 */ 0x6197,0x3E63, /* Array index: 0x1047 */ 0x6198,0x3E64, /* Array index: 0x1047 */ 0x61A5,0x3E69, /* Array index: 0x1047 */ 0x61A8,0x3E6A, /* Array index: 0x1047 */ 0x61AA,0x3E6B, /* Array index: 0x1047 */ 0x61AD,0x3E6C, /* Array index: 0x1047 */ 0x61B8,0x3E6D, /* Array index: 0x1047 */ 0x61B9,0x3E6E, /* Array index: 0x1047 */ 0x61BC,0x3E6F, /* Array index: 0x1047 */ 0x61CE,0x3E73, /* Array index: 0x1047 */ 0x61CF,0x3E74, /* Array index: 0x1047 */ 0x61D5,0x3E75, /* Array index: 0x1047 */ 0x61E5,0x3E7E, /* Array index: 0x1047 */ 0x61E7,0x3E7C, /* Array index: 0x1047 */ 0x61E9,0x3E7D, /* Array index: 0x1047 */ 0x61EC,0x3F21, /* Array index: 0x1047 */ 0x61ED,0x3F22, /* Array index: 0x1047 */ 0x61EF,0x3F23, /* Array index: 0x1047 */ 0x6201,0x3F24, /* Array index: 0x1047 */ 0x6203,0x3F25, /* Array index: 0x1047 */ 0x6204,0x3F26, /* Array index: 0x1047 */ 0x6207,0x3F27, /* Array index: 0x1047 */ 0x6213,0x3F28, /* Array index: 0x1047 */ 0x6215,0x3F29, /* Array index: 0x1047 */ 0x621C,0x3F2A, /* Array index: 0x1047 */ 0x6220,0x3F2B, /* Array index: 0x1047 */ 0x6222,0x3F2C, /* Array index: 0x1047 */ 0x6223,0x3F2D, /* Array index: 0x1047 */ 0x6227,0x3F2E, /* Array index: 0x1047 */ 0x6229,0x3F2F, /* Array index: 0x1047 */ 0x622B,0x3F30, /* Array index: 0x1047 */ 0x6239,0x3F31, /* Array index: 0x1047 */ 0x623D,0x3F32, /* Array index: 0x1047 */ 0x624C,0x3F37, /* Array index: 0x1047 */ 0x625A,0x3F3D, /* Array index: 0x1047 */ 0x625C,0x3F3E, /* Array index: 0x1047 */ 0x6264,0x3F3F, /* Array index: 0x1047 */ 0x626D,0x3F40, /* Array index: 0x1047 */ 0x626F,0x3F41, /* Array index: 0x1047 */ 0x6273,0x3F42, /* Array index: 0x1047 */ 0x627A,0x3F43, /* Array index: 0x1047 */ 0x627D,0x3F44, /* Array index: 0x1047 */ 0x62A6,0x3F49, /* Array index: 0x1047 */ 0x62A8,0x3F4A, /* Array index: 0x1047 */ 0x62B3,0x3F4B, /* Array index: 0x1047 */ 0x62B6,0x3F4C, /* Array index: 0x1047 */ 0x62B7,0x3F4D, /* Array index: 0x1047 */ 0x62BA,0x3F4E, /* Array index: 0x1047 */ 0x62BE,0x3F4F, /* Array index: 0x1047 */ 0x62BF,0x3F50, /* Array index: 0x1047 */ 0x62C4,0x3F51, /* Array index: 0x1047 */ 0x62CE,0x3F52, /* Array index: 0x1047 */ 0x62D5,0x3F53, /* Array index: 0x1047 */ 0x62D6,0x3F54, /* Array index: 0x1047 */ 0x62DA,0x3F55, /* Array index: 0x1047 */ 0x62EA,0x3F56, /* Array index: 0x1047 */ 0x62F2,0x3F57, /* Array index: 0x1047 */ 0x62F4,0x3F58, /* Array index: 0x1047 */ 0x62FC,0x3F59, /* Array index: 0x1047 */ 0x62FD,0x3F5A, /* Array index: 0x1047 */ 0x6303,0x3F5B, /* Array index: 0x1047 */ 0x6304,0x3F5C, /* Array index: 0x1047 */ 0x630A,0x3F5D, /* Array index: 0x1047 */ 0x630B,0x3F5E, /* Array index: 0x1047 */ 0x630D,0x3F5F, /* Array index: 0x1047 */ 0x6310,0x3F60, /* Array index: 0x1047 */ 0x6313,0x3F61, /* Array index: 0x1047 */ 0x6316,0x3F62, /* Array index: 0x1047 */ 0x6318,0x3F63, /* Array index: 0x1047 */ 0x6329,0x3F64, /* Array index: 0x1047 */ 0x632A,0x3F65, /* Array index: 0x1047 */ 0x632D,0x3F66, /* Array index: 0x1047 */ 0x6335,0x3F67, /* Array index: 0x1047 */ 0x6336,0x3F68, /* Array index: 0x1047 */ 0x6339,0x3F69, /* Array index: 0x1047 */ 0x633C,0x3F6A, /* Array index: 0x1047 */ 0x634A,0x3F70, /* Array index: 0x1047 */ 0x634B,0x3F71, /* Array index: 0x1047 */ 0x634E,0x3F72, /* Array index: 0x1047 */ 0x6358,0x3F76, /* Array index: 0x1047 */ 0x635B,0x3F77, /* Array index: 0x1047 */ 0x6365,0x3F78, /* Array index: 0x1047 */ 0x6366,0x3F79, /* Array index: 0x1047 */ 0x636C,0x3F7A, /* Array index: 0x1047 */ 0x636D,0x3F7B, /* Array index: 0x1047 */ 0x6371,0x3F7C, /* Array index: 0x1047 */ 0x6374,0x3F7D, /* Array index: 0x1047 */ 0x6375,0x3F7E, /* Array index: 0x1047 */ 0x6378,0x4021, /* Array index: 0x1047 */ 0x637C,0x4022, /* Array index: 0x1047 */ 0x637D,0x4023, /* Array index: 0x1047 */ 0x637F,0x4024, /* Array index: 0x1047 */ 0x6382,0x4025, /* Array index: 0x1047 */ 0x6384,0x4026, /* Array index: 0x1047 */ 0x6387,0x4027, /* Array index: 0x1047 */ 0x638A,0x4028, /* Array index: 0x1047 */ 0x6390,0x4029, /* Array index: 0x1047 */ 0x6394,0x402A, /* Array index: 0x1047 */ 0x6395,0x402B, /* Array index: 0x1047 */ 0x6399,0x402C, /* Array index: 0x1047 */ 0x639A,0x402D, /* Array index: 0x1047 */ 0x639E,0x402E, /* Array index: 0x1047 */ 0x63A4,0x402F, /* Array index: 0x1047 */ 0x63A6,0x4030, /* Array index: 0x1047 */ 0x63BD,0x4034, /* Array index: 0x1047 */ 0x63C1,0x4035, /* Array index: 0x1047 */ 0x63C5,0x4036, /* Array index: 0x1047 */ 0x63C8,0x4037, /* Array index: 0x1047 */ 0x63CE,0x4038, /* Array index: 0x1047 */ 0x63DC,0x403D, /* Array index: 0x1047 */ 0x63E0,0x403E, /* Array index: 0x1047 */ 0x63E5,0x403F, /* Array index: 0x1047 */ 0x63EA,0x4040, /* Array index: 0x1047 */ 0x63EC,0x4041, /* Array index: 0x1047 */ 0x63F2,0x4042, /* Array index: 0x1047 */ 0x63F3,0x4043, /* Array index: 0x1047 */ 0x63F5,0x4044, /* Array index: 0x1047 */ 0x63F8,0x4045, /* Array index: 0x1047 */ 0x63F9,0x4046, /* Array index: 0x1047 */ 0x6409,0x4047, /* Array index: 0x1047 */ 0x640A,0x4048, /* Array index: 0x1047 */ 0x6410,0x4049, /* Array index: 0x1047 */ 0x6412,0x404A, /* Array index: 0x1047 */ 0x6414,0x404B, /* Array index: 0x1047 */ 0x6418,0x404C, /* Array index: 0x1047 */ 0x641E,0x404D, /* Array index: 0x1047 */ 0x6420,0x404E, /* Array index: 0x1047 */ 0x6422,0x404F, /* Array index: 0x1047 */ 0x6424,0x4050, /* Array index: 0x1047 */ 0x6425,0x4051, /* Array index: 0x1047 */ 0x6429,0x4052, /* Array index: 0x1047 */ 0x642A,0x4053, /* Array index: 0x1047 */ 0x642F,0x4054, /* Array index: 0x1047 */ 0x6430,0x4055, /* Array index: 0x1047 */ 0x6435,0x4056, /* Array index: 0x1047 */ 0x643D,0x4057, /* Array index: 0x1047 */ 0x643F,0x4058, /* Array index: 0x1047 */ 0x644B,0x4059, /* Array index: 0x1047 */ 0x646D,0x4067, /* Array index: 0x1047 */ 0x6473,0x4068, /* Array index: 0x1047 */ 0x6474,0x4069, /* Array index: 0x1047 */ 0x647B,0x406A, /* Array index: 0x1047 */ 0x647D,0x406B, /* Array index: 0x1047 */ 0x6485,0x406C, /* Array index: 0x1047 */ 0x6487,0x406D, /* Array index: 0x1047 */ 0x6498,0x4071, /* Array index: 0x1047 */ 0x6499,0x4072, /* Array index: 0x1047 */ 0x649B,0x4073, /* Array index: 0x1047 */ 0x649D,0x4074, /* Array index: 0x1047 */ 0x649F,0x4075, /* Array index: 0x1047 */ 0x64A1,0x4076, /* Array index: 0x1047 */ 0x64A3,0x4077, /* Array index: 0x1047 */ 0x64A6,0x4078, /* Array index: 0x1047 */ 0x64A8,0x4079, /* Array index: 0x1047 */ 0x64AC,0x407A, /* Array index: 0x1047 */ 0x64B3,0x407B, /* Array index: 0x1047 */ 0x64C4,0x4121, /* Array index: 0x1047 */ 0x64D5,0x4129, /* Array index: 0x1047 */ 0x64D7,0x412A, /* Array index: 0x1047 */ 0x64E4,0x412B, /* Array index: 0x1047 */ 0x64E5,0x412C, /* Array index: 0x1047 */ 0x64E9,0x412D, /* Array index: 0x1047 */ 0x64EA,0x412E, /* Array index: 0x1047 */ 0x64ED,0x412F, /* Array index: 0x1047 */ 0x64F0,0x4130, /* Array index: 0x1047 */ 0x64F5,0x4131, /* Array index: 0x1047 */ 0x64F7,0x4132, /* Array index: 0x1047 */ 0x64FB,0x4133, /* Array index: 0x1047 */ 0x64FF,0x4134, /* Array index: 0x1047 */ 0x6501,0x4135, /* Array index: 0x1047 */ 0x6504,0x4136, /* Array index: 0x1047 */ 0x650F,0x413A, /* Array index: 0x1047 */ 0x6513,0x413B, /* Array index: 0x1047 */ 0x6514,0x413C, /* Array index: 0x1047 */ 0x6516,0x413D, /* Array index: 0x1047 */ 0x6519,0x413E, /* Array index: 0x1047 */ 0x651B,0x413F, /* Array index: 0x1047 */ 0x651E,0x4140, /* Array index: 0x1047 */ 0x651F,0x4141, /* Array index: 0x1047 */ 0x6522,0x4142, /* Array index: 0x1047 */ 0x6526,0x4143, /* Array index: 0x1047 */ 0x6529,0x4144, /* Array index: 0x1047 */ 0x652E,0x4145, /* Array index: 0x1047 */ 0x6531,0x4146, /* Array index: 0x1047 */ 0x653A,0x4147, /* Array index: 0x1047 */ 0x653C,0x4148, /* Array index: 0x1047 */ 0x653D,0x4149, /* Array index: 0x1047 */ 0x6543,0x414A, /* Array index: 0x1047 */ 0x6547,0x414B, /* Array index: 0x1047 */ 0x6549,0x414C, /* Array index: 0x1047 */ 0x6550,0x414D, /* Array index: 0x1047 */ 0x6552,0x414E, /* Array index: 0x1047 */ 0x6554,0x414F, /* Array index: 0x1047 */ 0x655F,0x4150, /* Array index: 0x1047 */ 0x6560,0x4151, /* Array index: 0x1047 */ 0x6567,0x4152, /* Array index: 0x1047 */ 0x656B,0x4153, /* Array index: 0x1047 */ 0x657A,0x4154, /* Array index: 0x1047 */ 0x657D,0x4155, /* Array index: 0x1047 */ 0x6581,0x4156, /* Array index: 0x1047 */ 0x6585,0x4157, /* Array index: 0x1047 */ 0x658A,0x4158, /* Array index: 0x1047 */ 0x6592,0x4159, /* Array index: 0x1047 */ 0x6595,0x415A, /* Array index: 0x1047 */ 0x6598,0x415B, /* Array index: 0x1047 */ 0x659D,0x415C, /* Array index: 0x1047 */ 0x65A0,0x415D, /* Array index: 0x1047 */ 0x65A3,0x415E, /* Array index: 0x1047 */ 0x65A6,0x415F, /* Array index: 0x1047 */ 0x65AE,0x4160, /* Array index: 0x1047 */ 0x65BF,0x4164, /* Array index: 0x1047 */ 0x65C2,0x4165, /* Array index: 0x1047 */ 0x65C8,0x4166, /* Array index: 0x1047 */ 0x65C9,0x4167, /* Array index: 0x1047 */ 0x65CE,0x4168, /* Array index: 0x1047 */ 0x65D0,0x4169, /* Array index: 0x1047 */ 0x65D4,0x416A, /* Array index: 0x1047 */ 0x65D6,0x416B, /* Array index: 0x1047 */ 0x65D8,0x416C, /* Array index: 0x1047 */ 0x65DF,0x416D, /* Array index: 0x1047 */ 0x65F0,0x416E, /* Array index: 0x1047 */ 0x65F2,0x416F, /* Array index: 0x1047 */ 0x65F4,0x4170, /* Array index: 0x1047 */ 0x65F5,0x4171, /* Array index: 0x1047 */ 0x65F9,0x4172, /* Array index: 0x1047 */ 0x6604,0x4176, /* Array index: 0x1047 */ 0x6608,0x4177, /* Array index: 0x1047 */ 0x6609,0x4178, /* Array index: 0x1047 */ 0x660D,0x4179, /* Array index: 0x1047 */ 0x6611,0x417A, /* Array index: 0x1047 */ 0x6612,0x417B, /* Array index: 0x1047 */ 0x6615,0x417C, /* Array index: 0x1047 */ 0x6616,0x417D, /* Array index: 0x1047 */ 0x6637,0x4230, /* Array index: 0x1047 */ 0x6639,0x422F, /* Array index: 0x1047 */ 0x6640,0x4231, /* Array index: 0x1047 */ 0x6645,0x4232, /* Array index: 0x1047 */ 0x6646,0x4233, /* Array index: 0x1047 */ 0x664A,0x4234, /* Array index: 0x1047 */ 0x664C,0x4235, /* Array index: 0x1047 */ 0x664E,0x4237, /* Array index: 0x1047 */ 0x6651,0x4236, /* Array index: 0x1047 */ 0x6660,0x423D, /* Array index: 0x1047 */ 0x6661,0x423E, /* Array index: 0x1047 */ 0x6673,0x4244, /* Array index: 0x1047 */ 0x6690,0x4250, /* Array index: 0x1047 */ 0x6692,0x4251, /* Array index: 0x1047 */ 0x66A4,0x4258, /* Array index: 0x1047 */ 0x66AD,0x4259, /* Array index: 0x1047 */ 0x66B1,0x425A, /* Array index: 0x1047 */ 0x66B2,0x425B, /* Array index: 0x1047 */ 0x66B5,0x425C, /* Array index: 0x1047 */ 0x66BB,0x425D, /* Array index: 0x1047 */ 0x66C8,0x4262, /* Array index: 0x1047 */ 0x66CC,0x4263, /* Array index: 0x1047 */ 0x66CE,0x4264, /* Array index: 0x1047 */ 0x66CF,0x4265, /* Array index: 0x1047 */ 0x66D4,0x4266, /* Array index: 0x1047 */ 0x66DB,0x4267, /* Array index: 0x1047 */ 0x66DF,0x4268, /* Array index: 0x1047 */ 0x66E8,0x4269, /* Array index: 0x1047 */ 0x66EB,0x426A, /* Array index: 0x1047 */ 0x66EC,0x426B, /* Array index: 0x1047 */ 0x66EE,0x426C, /* Array index: 0x1047 */ 0x66FA,0x426D, /* Array index: 0x1047 */ 0x66FB,0x423F, /* Array index: 0x1047 */ 0x6705,0x426E, /* Array index: 0x1047 */ 0x6707,0x426F, /* Array index: 0x1047 */ 0x670E,0x4270, /* Array index: 0x1047 */ 0x6713,0x4271, /* Array index: 0x1047 */ 0x6719,0x4272, /* Array index: 0x1047 */ 0x671C,0x4273, /* Array index: 0x1047 */ 0x6720,0x4274, /* Array index: 0x1047 */ 0x6722,0x4275, /* Array index: 0x1047 */ 0x6733,0x4276, /* Array index: 0x1047 */ 0x673E,0x4277, /* Array index: 0x1047 */ 0x6745,0x4278, /* Array index: 0x1047 */ 0x6747,0x4279, /* Array index: 0x1047 */ 0x6748,0x427A, /* Array index: 0x1047 */ 0x674C,0x427B, /* Array index: 0x1047 */ 0x6754,0x427C, /* Array index: 0x1047 */ 0x6755,0x427D, /* Array index: 0x1047 */ 0x675D,0x427E, /* Array index: 0x1047 */ 0x6766,0x4321, /* Array index: 0x1047 */ 0x676C,0x4322, /* Array index: 0x1047 */ 0x676E,0x4323, /* Array index: 0x1047 */ 0x6774,0x4324, /* Array index: 0x1047 */ 0x6776,0x4325, /* Array index: 0x1047 */ 0x677B,0x4326, /* Array index: 0x1047 */ 0x6781,0x4327, /* Array index: 0x1047 */ 0x6784,0x4328, /* Array index: 0x1047 */ 0x678E,0x4329, /* Array index: 0x1047 */ 0x678F,0x432A, /* Array index: 0x1047 */ 0x6791,0x432B, /* Array index: 0x1047 */ 0x6793,0x432C, /* Array index: 0x1047 */ 0x6796,0x432D, /* Array index: 0x1047 */ 0x6798,0x432E, /* Array index: 0x1047 */ 0x6799,0x432F, /* Array index: 0x1047 */ 0x679B,0x4330, /* Array index: 0x1047 */ 0x67B5,0x4334, /* Array index: 0x1047 */ 0x67C0,0x4339, /* Array index: 0x1047 */ 0x67C2,0x433A, /* Array index: 0x1047 */ 0x67C3,0x433B, /* Array index: 0x1047 */ 0x67C5,0x433C, /* Array index: 0x1047 */ 0x67C8,0x433D, /* Array index: 0x1047 */ 0x67C9,0x433E, /* Array index: 0x1047 */ 0x67D2,0x433F, /* Array index: 0x1047 */ 0x67D7,0x4340, /* Array index: 0x1047 */ 0x67D9,0x4341, /* Array index: 0x1047 */ 0x67DC,0x4342, /* Array index: 0x1047 */ 0x67E1,0x4343, /* Array index: 0x1047 */ 0x67E6,0x4344, /* Array index: 0x1047 */ 0x67F0,0x4345, /* Array index: 0x1047 */ 0x67F2,0x4346, /* Array index: 0x1047 */ 0x67F6,0x4347, /* Array index: 0x1047 */ 0x67F7,0x4348, /* Array index: 0x1047 */ 0x67F9,0x4338, /* Array index: 0x1047 */ 0x6814,0x434A, /* Array index: 0x1047 */ 0x6819,0x434B, /* Array index: 0x1047 */ 0x681D,0x434C, /* Array index: 0x1047 */ 0x681F,0x434D, /* Array index: 0x1047 */ 0x6827,0x434F, /* Array index: 0x1047 */ 0x6828,0x434E, /* Array index: 0x1047 */ 0x683B,0x4356, /* Array index: 0x1047 */ 0x683F,0x4357, /* Array index: 0x1047 */ 0x6844,0x4358, /* Array index: 0x1047 */ 0x6845,0x4359, /* Array index: 0x1047 */ 0x684A,0x435A, /* Array index: 0x1047 */ 0x684C,0x435B, /* Array index: 0x1047 */ 0x6852,0x4349, /* Array index: 0x1047 */ 0x6855,0x435C, /* Array index: 0x1047 */ 0x6857,0x435D, /* Array index: 0x1047 */ 0x6858,0x435E, /* Array index: 0x1047 */ 0x685B,0x435F, /* Array index: 0x1047 */ 0x686B,0x4360, /* Array index: 0x1047 */ 0x6875,0x4366, /* Array index: 0x1047 */ 0x6882,0x436B, /* Array index: 0x1047 */ 0x6884,0x436C, /* Array index: 0x1047 */ 0x6886,0x436D, /* Array index: 0x1047 */ 0x6888,0x436E, /* Array index: 0x1047 */ 0x6896,0x436F, /* Array index: 0x1047 */ 0x6898,0x4370, /* Array index: 0x1047 */ 0x689A,0x4371, /* Array index: 0x1047 */ 0x689C,0x4372, /* Array index: 0x1047 */ 0x68A1,0x4373, /* Array index: 0x1047 */ 0x68A3,0x4374, /* Array index: 0x1047 */ 0x68A5,0x4375, /* Array index: 0x1047 */ 0x68A9,0x4376, /* Array index: 0x1047 */ 0x68AA,0x4377, /* Array index: 0x1047 */ 0x68AE,0x4378, /* Array index: 0x1047 */ 0x68B2,0x4379, /* Array index: 0x1047 */ 0x68BB,0x437A, /* Array index: 0x1047 */ 0x68C5,0x437B, /* Array index: 0x1047 */ 0x68C8,0x437C, /* Array index: 0x1047 */ 0x68CC,0x437D, /* Array index: 0x1047 */ 0x68D6,0x4424, /* Array index: 0x1047 */ 0x68D9,0x4425, /* Array index: 0x1047 */ 0x68DC,0x4426, /* Array index: 0x1047 */ 0x68DD,0x4427, /* Array index: 0x1047 */ 0x68E5,0x4428, /* Array index: 0x1047 */ 0x68F5,0x4430, /* Array index: 0x1047 */ 0x68F6,0x4431, /* Array index: 0x1047 */ 0x6906,0x4435, /* Array index: 0x1047 */ 0x6909,0x4436, /* Array index: 0x1047 */ 0x690A,0x4437, /* Array index: 0x1047 */ 0x6910,0x4438, /* Array index: 0x1047 */ 0x6911,0x4439, /* Array index: 0x1047 */ 0x6913,0x443A, /* Array index: 0x1047 */ 0x6916,0x443B, /* Array index: 0x1047 */ 0x6917,0x443C, /* Array index: 0x1047 */ 0x6931,0x443D, /* Array index: 0x1047 */ 0x6933,0x443E, /* Array index: 0x1047 */ 0x6935,0x443F, /* Array index: 0x1047 */ 0x6938,0x4440, /* Array index: 0x1047 */ 0x693B,0x4441, /* Array index: 0x1047 */ 0x6942,0x4442, /* Array index: 0x1047 */ 0x6945,0x4443, /* Array index: 0x1047 */ 0x6949,0x4444, /* Array index: 0x1047 */ 0x694E,0x4445, /* Array index: 0x1047 */ 0x6957,0x4446, /* Array index: 0x1047 */ 0x695B,0x4447, /* Array index: 0x1047 */ 0x696C,0x444E, /* Array index: 0x1047 */ 0x697A,0x4452, /* Array index: 0x1047 */ 0x697B,0x4453, /* Array index: 0x1047 */ 0x697F,0x4454, /* Array index: 0x1047 */ 0x6980,0x4455, /* Array index: 0x1047 */ 0x698D,0x4456, /* Array index: 0x1047 */ 0x6992,0x4457, /* Array index: 0x1047 */ 0x6996,0x4458, /* Array index: 0x1047 */ 0x6998,0x4459, /* Array index: 0x1047 */ 0x69A1,0x445A, /* Array index: 0x1047 */ 0x69A5,0x445B, /* Array index: 0x1047 */ 0x69A6,0x445C, /* Array index: 0x1047 */ 0x69A8,0x445D, /* Array index: 0x1047 */ 0x69AB,0x445E, /* Array index: 0x1047 */ 0x69AD,0x445F, /* Array index: 0x1047 */ 0x69AF,0x4460, /* Array index: 0x1047 */ 0x69B7,0x4461, /* Array index: 0x1047 */ 0x69B8,0x4462, /* Array index: 0x1047 */ 0x69BA,0x4463, /* Array index: 0x1047 */ 0x69BC,0x4464, /* Array index: 0x1047 */ 0x69C5,0x4465, /* Array index: 0x1047 */ 0x69C8,0x4466, /* Array index: 0x1047 */ 0x69D1,0x4467, /* Array index: 0x1047 */ 0x69D6,0x4468, /* Array index: 0x1047 */ 0x69D7,0x4469, /* Array index: 0x1047 */ 0x69E2,0x446A, /* Array index: 0x1047 */ 0x69E5,0x446B, /* Array index: 0x1047 */ 0x69EE,0x446C, /* Array index: 0x1047 */ 0x69EF,0x446D, /* Array index: 0x1047 */ 0x69F1,0x446E, /* Array index: 0x1047 */ 0x69F3,0x446F, /* Array index: 0x1047 */ 0x69F5,0x4470, /* Array index: 0x1047 */ 0x69FE,0x4471, /* Array index: 0x1047 */ 0x6A00,0x4472, /* Array index: 0x1047 */ 0x6A01,0x4473, /* Array index: 0x1047 */ 0x6A03,0x4474, /* Array index: 0x1047 */ 0x6A0F,0x4475, /* Array index: 0x1047 */ 0x6A11,0x4476, /* Array index: 0x1047 */ 0x6A15,0x4477, /* Array index: 0x1047 */ 0x6A1A,0x4478, /* Array index: 0x1047 */ 0x6A1D,0x4479, /* Array index: 0x1047 */ 0x6A20,0x447A, /* Array index: 0x1047 */ 0x6A24,0x447B, /* Array index: 0x1047 */ 0x6A28,0x447C, /* Array index: 0x1047 */ 0x6A30,0x447D, /* Array index: 0x1047 */ 0x6A32,0x447E, /* Array index: 0x1047 */ 0x6A34,0x4521, /* Array index: 0x1047 */ 0x6A37,0x4522, /* Array index: 0x1047 */ 0x6A3B,0x4523, /* Array index: 0x1047 */ 0x6A3E,0x4524, /* Array index: 0x1047 */ 0x6A3F,0x4525, /* Array index: 0x1047 */ 0x6A45,0x4526, /* Array index: 0x1047 */ 0x6A46,0x4527, /* Array index: 0x1047 */ 0x6A49,0x4528, /* Array index: 0x1047 */ 0x6A4A,0x4529, /* Array index: 0x1047 */ 0x6A5B,0x4530, /* Array index: 0x1047 */ 0x6A64,0x4531, /* Array index: 0x1047 */ 0x6A67,0x4532, /* Array index: 0x1047 */ 0x6A6A,0x4533, /* Array index: 0x1047 */ 0x6A71,0x4534, /* Array index: 0x1047 */ 0x6A73,0x4535, /* Array index: 0x1047 */ 0x6A7E,0x4536, /* Array index: 0x1047 */ 0x6A81,0x4537, /* Array index: 0x1047 */ 0x6A83,0x4538, /* Array index: 0x1047 */ 0x6A86,0x4539, /* Array index: 0x1047 */ 0x6A87,0x453A, /* Array index: 0x1047 */ 0x6A89,0x453B, /* Array index: 0x1047 */ 0x6A8B,0x453C, /* Array index: 0x1047 */ 0x6A91,0x453D, /* Array index: 0x1047 */ 0x6AA5,0x4542, /* Array index: 0x1047 */ 0x6AAB,0x4543, /* Array index: 0x1047 */ 0x6AB4,0x4547, /* Array index: 0x1047 */ 0x6AC6,0x454B, /* Array index: 0x1047 */ 0x6AC8,0x454D, /* Array index: 0x1047 */ 0x6AC9,0x454C, /* Array index: 0x1047 */ 0x6ACC,0x454E, /* Array index: 0x1047 */ 0x6AD0,0x454F, /* Array index: 0x1047 */ 0x6ADC,0x4553, /* Array index: 0x1047 */ 0x6ADD,0x4554, /* Array index: 0x1047 */ 0x6AE4,0x4555, /* Array index: 0x1047 */ 0x6AE7,0x4556, /* Array index: 0x1047 */ 0x6AEC,0x4557, /* Array index: 0x1047 */ 0x6AFC,0x455B, /* Array index: 0x1047 */ 0x6AFD,0x455C, /* Array index: 0x1047 */ 0x6B02,0x455D, /* Array index: 0x1047 */ 0x6B03,0x455E, /* Array index: 0x1047 */ 0x6B06,0x455F, /* Array index: 0x1047 */ 0x6B07,0x4560, /* Array index: 0x1047 */ 0x6B09,0x4561, /* Array index: 0x1047 */ 0x6B17,0x4565, /* Array index: 0x1047 */ 0x6B1B,0x4566, /* Array index: 0x1047 */ 0x6B1E,0x4567, /* Array index: 0x1047 */ 0x6B24,0x4568, /* Array index: 0x1047 */ 0x6B28,0x4569, /* Array index: 0x1047 */ 0x6B2B,0x456A, /* Array index: 0x1047 */ 0x6B2C,0x456B, /* Array index: 0x1047 */ 0x6B2F,0x456C, /* Array index: 0x1047 */ 0x6B35,0x456D, /* Array index: 0x1047 */ 0x6B36,0x456E, /* Array index: 0x1047 */ 0x6B3B,0x456F, /* Array index: 0x1047 */ 0x6B3F,0x4570, /* Array index: 0x1047 */ 0x6B46,0x4571, /* Array index: 0x1047 */ 0x6B4A,0x4572, /* Array index: 0x1047 */ 0x6B4D,0x4573, /* Array index: 0x1047 */ 0x6B52,0x4574, /* Array index: 0x1047 */ 0x6B56,0x4575, /* Array index: 0x1047 */ 0x6B58,0x4576, /* Array index: 0x1047 */ 0x6B5D,0x4577, /* Array index: 0x1047 */ 0x6B60,0x4578, /* Array index: 0x1047 */ 0x6B67,0x4579, /* Array index: 0x1047 */ 0x6B6B,0x457A, /* Array index: 0x1047 */ 0x6B6E,0x457B, /* Array index: 0x1047 */ 0x6B70,0x457C, /* Array index: 0x1047 */ 0x6B75,0x457D, /* Array index: 0x1047 */ 0x6B7D,0x457E, /* Array index: 0x1047 */ 0x6B7E,0x4621, /* Array index: 0x1047 */ 0x6B82,0x4622, /* Array index: 0x1047 */ 0x6B85,0x4623, /* Array index: 0x1047 */ 0x6B97,0x4624, /* Array index: 0x1047 */ 0x6B9B,0x4625, /* Array index: 0x1047 */ 0x6BB8,0x4630, /* Array index: 0x1047 */ 0x6BB9,0x4631, /* Array index: 0x1047 */ 0x6BBD,0x4632, /* Array index: 0x1047 */ 0x6BBE,0x4633, /* Array index: 0x1047 */ 0x6BC3,0x4634, /* Array index: 0x1047 */ 0x6BC4,0x4635, /* Array index: 0x1047 */ 0x6BC9,0x4636, /* Array index: 0x1047 */ 0x6BCC,0x4637, /* Array index: 0x1047 */ 0x6BD6,0x4638, /* Array index: 0x1047 */ 0x6BDA,0x4639, /* Array index: 0x1047 */ 0x6BE1,0x463A, /* Array index: 0x1047 */ 0x6BE3,0x463B, /* Array index: 0x1047 */ 0x6BE6,0x463C, /* Array index: 0x1047 */ 0x6BE7,0x463D, /* Array index: 0x1047 */ 0x6BEE,0x463E, /* Array index: 0x1047 */ 0x6BF1,0x463F, /* Array index: 0x1047 */ 0x6BF7,0x4640, /* Array index: 0x1047 */ 0x6BF9,0x4641, /* Array index: 0x1047 */ 0x6BFF,0x4642, /* Array index: 0x1047 */ 0x6C02,0x4643, /* Array index: 0x1047 */ 0x6C04,0x4644, /* Array index: 0x1047 */ 0x6C05,0x4645, /* Array index: 0x1047 */ 0x6C09,0x4646, /* Array index: 0x1047 */ 0x6C0D,0x4647, /* Array index: 0x1047 */ 0x6C0E,0x4648, /* Array index: 0x1047 */ 0x6C10,0x4649, /* Array index: 0x1047 */ 0x6C12,0x464A, /* Array index: 0x1047 */ 0x6C19,0x464B, /* Array index: 0x1047 */ 0x6C1F,0x464C, /* Array index: 0x1047 */ 0x6C2C,0x4650, /* Array index: 0x1047 */ 0x6C2E,0x4651, /* Array index: 0x1047 */ 0x6C33,0x4652, /* Array index: 0x1047 */ 0x6C35,0x4653, /* Array index: 0x1047 */ 0x6C36,0x4654, /* Array index: 0x1047 */ 0x6C3A,0x4655, /* Array index: 0x1047 */ 0x6C3B,0x4656, /* Array index: 0x1047 */ 0x6C3F,0x4657, /* Array index: 0x1047 */ 0x6C4A,0x4658, /* Array index: 0x1047 */ 0x6C4B,0x4659, /* Array index: 0x1047 */ 0x6C4D,0x465A, /* Array index: 0x1047 */ 0x6C4F,0x465B, /* Array index: 0x1047 */ 0x6C52,0x465C, /* Array index: 0x1047 */ 0x6C54,0x465D, /* Array index: 0x1047 */ 0x6C59,0x465E, /* Array index: 0x1047 */ 0x6C5B,0x465F, /* Array index: 0x1047 */ 0x6C5C,0x4660, /* Array index: 0x1047 */ 0x6C67,0x4736, /* Array index: 0x1047 */ 0x6C6B,0x4661, /* Array index: 0x1047 */ 0x6C6D,0x4662, /* Array index: 0x1047 */ 0x6C6F,0x4663, /* Array index: 0x1047 */ 0x6C74,0x4664, /* Array index: 0x1047 */ 0x6C76,0x4665, /* Array index: 0x1047 */ 0x6C78,0x4666, /* Array index: 0x1047 */ 0x6C79,0x4667, /* Array index: 0x1047 */ 0x6C7B,0x4668, /* Array index: 0x1047 */ 0x6C9C,0x4671, /* Array index: 0x1047 */ 0x6C9F,0x4672, /* Array index: 0x1047 */ 0x6CB0,0x4673, /* Array index: 0x1047 */ 0x6CB2,0x4674, /* Array index: 0x1047 */ 0x6CB4,0x4675, /* Array index: 0x1047 */ 0x6CC2,0x4676, /* Array index: 0x1047 */ 0x6CC6,0x4677, /* Array index: 0x1047 */ 0x6CDA,0x4721, /* Array index: 0x1047 */ 0x6CDC,0x4722, /* Array index: 0x1047 */ 0x6CE0,0x4723, /* Array index: 0x1047 */ 0x6CE7,0x4724, /* Array index: 0x1047 */ 0x6CE9,0x4725, /* Array index: 0x1047 */ 0x6CEB,0x4726, /* Array index: 0x1047 */ 0x6CEC,0x4727, /* Array index: 0x1047 */ 0x6CEE,0x4728, /* Array index: 0x1047 */ 0x6CF2,0x4729, /* Array index: 0x1047 */ 0x6CF4,0x472A, /* Array index: 0x1047 */ 0x6D04,0x472B, /* Array index: 0x1047 */ 0x6D07,0x472C, /* Array index: 0x1047 */ 0x6D0A,0x472D, /* Array index: 0x1047 */ 0x6D0E,0x472E, /* Array index: 0x1047 */ 0x6D0F,0x472F, /* Array index: 0x1047 */ 0x6D11,0x4730, /* Array index: 0x1047 */ 0x6D13,0x4731, /* Array index: 0x1047 */ 0x6D1A,0x4732, /* Array index: 0x1047 */ 0x6D2E,0x4737, /* Array index: 0x1047 */ 0x6D2F,0x4738, /* Array index: 0x1047 */ 0x6D31,0x4739, /* Array index: 0x1047 */ 0x6D39,0x473A, /* Array index: 0x1047 */ 0x6D3C,0x473B, /* Array index: 0x1047 */ 0x6D3F,0x473C, /* Array index: 0x1047 */ 0x6D57,0x473D, /* Array index: 0x1047 */ 0x6D5E,0x473E, /* Array index: 0x1047 */ 0x6D5F,0x473F, /* Array index: 0x1047 */ 0x6D61,0x4740, /* Array index: 0x1047 */ 0x6D65,0x4741, /* Array index: 0x1047 */ 0x6D67,0x4742, /* Array index: 0x1047 */ 0x6D6F,0x4743, /* Array index: 0x1047 */ 0x6D70,0x4744, /* Array index: 0x1047 */ 0x6D7C,0x4745, /* Array index: 0x1047 */ 0x6D82,0x4746, /* Array index: 0x1047 */ 0x6D87,0x4747, /* Array index: 0x1047 */ 0x6D91,0x4748, /* Array index: 0x1047 */ 0x6D92,0x4749, /* Array index: 0x1047 */ 0x6DAA,0x474E, /* Array index: 0x1047 */ 0x6DAC,0x474F, /* Array index: 0x1047 */ 0x6DB4,0x4750, /* Array index: 0x1047 */ 0x6DB7,0x4751, /* Array index: 0x1047 */ 0x6DB9,0x4752, /* Array index: 0x1047 */ 0x6DBD,0x4753, /* Array index: 0x1047 */ 0x6DBF,0x4754, /* Array index: 0x1047 */ 0x6DC4,0x4755, /* Array index: 0x1047 */ 0x6DC8,0x4756, /* Array index: 0x1047 */ 0x6DCA,0x4757, /* Array index: 0x1047 */ 0x6DCE,0x4758, /* Array index: 0x1047 */ 0x6DCF,0x4759, /* Array index: 0x1047 */ 0x6DD6,0x475A, /* Array index: 0x1047 */ 0x6DDB,0x475B, /* Array index: 0x1047 */ 0x6DDD,0x475C, /* Array index: 0x1047 */ 0x6DDF,0x475D, /* Array index: 0x1047 */ 0x6DE0,0x475E, /* Array index: 0x1047 */ 0x6DE2,0x475F, /* Array index: 0x1047 */ 0x6DE5,0x4760, /* Array index: 0x1047 */ 0x6DE9,0x4761, /* Array index: 0x1047 */ 0x6DEF,0x4762, /* Array index: 0x1047 */ 0x6DF0,0x4763, /* Array index: 0x1047 */ 0x6DF4,0x4764, /* Array index: 0x1047 */ 0x6DF6,0x4765, /* Array index: 0x1047 */ 0x6DFC,0x4766, /* Array index: 0x1047 */ 0x6E00,0x4767, /* Array index: 0x1047 */ 0x6E04,0x4768, /* Array index: 0x1047 */ 0x6E1E,0x4769, /* Array index: 0x1047 */ 0x6E22,0x476A, /* Array index: 0x1047 */ 0x6E27,0x476B, /* Array index: 0x1047 */ 0x6E32,0x476C, /* Array index: 0x1047 */ 0x6E36,0x476D, /* Array index: 0x1047 */ 0x6E39,0x476E, /* Array index: 0x1047 */ 0x6E3B,0x476F, /* Array index: 0x1047 */ 0x6E3C,0x4770, /* Array index: 0x1047 */ 0x6E44,0x4771, /* Array index: 0x1047 */ 0x6E45,0x4772, /* Array index: 0x1047 */ 0x6E48,0x4773, /* Array index: 0x1047 */ 0x6E49,0x4774, /* Array index: 0x1047 */ 0x6E4B,0x4775, /* Array index: 0x1047 */ 0x6E57,0x477B, /* Array index: 0x1047 */ 0x6E62,0x4821, /* Array index: 0x1047 */ 0x6E63,0x4822, /* Array index: 0x1047 */ 0x6E68,0x4823, /* Array index: 0x1047 */ 0x6E73,0x4824, /* Array index: 0x1047 */ 0x6E7B,0x4825, /* Array index: 0x1047 */ 0x6E7D,0x4826, /* Array index: 0x1047 */ 0x6E8D,0x4827, /* Array index: 0x1047 */ 0x6E93,0x4828, /* Array index: 0x1047 */ 0x6E99,0x4829, /* Array index: 0x1047 */ 0x6EA0,0x482A, /* Array index: 0x1047 */ 0x6EA7,0x482B, /* Array index: 0x1047 */ 0x6EAD,0x482C, /* Array index: 0x1047 */ 0x6EAE,0x482D, /* Array index: 0x1047 */ 0x6EB1,0x482E, /* Array index: 0x1047 */ 0x6EB3,0x482F, /* Array index: 0x1047 */ 0x6EBB,0x4830, /* Array index: 0x1047 */ 0x6EC7,0x4835, /* Array index: 0x1047 */ 0x6EC8,0x4836, /* Array index: 0x1047 */ 0x6ECA,0x4837, /* Array index: 0x1047 */ 0x6EEB,0x483B, /* Array index: 0x1047 */ 0x6EED,0x483C, /* Array index: 0x1047 */ 0x6EEE,0x483D, /* Array index: 0x1047 */ 0x6EF9,0x483E, /* Array index: 0x1047 */ 0x6EFB,0x483F, /* Array index: 0x1047 */ 0x6EFD,0x4840, /* Array index: 0x1047 */ 0x6F04,0x4841, /* Array index: 0x1047 */ 0x6F08,0x4842, /* Array index: 0x1047 */ 0x6F0A,0x4843, /* Array index: 0x1047 */ 0x6F0C,0x4844, /* Array index: 0x1047 */ 0x6F0D,0x4845, /* Array index: 0x1047 */ 0x6F16,0x4846, /* Array index: 0x1047 */ 0x6F18,0x4847, /* Array index: 0x1047 */ 0x6F1A,0x4848, /* Array index: 0x1047 */ 0x6F1B,0x4849, /* Array index: 0x1047 */ 0x6F26,0x484A, /* Array index: 0x1047 */ 0x6F29,0x484B, /* Array index: 0x1047 */ 0x6F2A,0x484C, /* Array index: 0x1047 */ 0x6F2D,0x4853, /* Array index: 0x1047 */ 0x6F2F,0x484D, /* Array index: 0x1047 */ 0x6F30,0x484E, /* Array index: 0x1047 */ 0x6F33,0x484F, /* Array index: 0x1047 */ 0x6F36,0x4850, /* Array index: 0x1047 */ 0x6F3B,0x4851, /* Array index: 0x1047 */ 0x6F3C,0x4852, /* Array index: 0x1047 */ 0x6F57,0x4858, /* Array index: 0x1047 */ 0x6F59,0x4859, /* Array index: 0x1047 */ 0x6F5A,0x485A, /* Array index: 0x1047 */ 0x6F5D,0x485B, /* Array index: 0x1047 */ 0x6F5E,0x485C, /* Array index: 0x1047 */ 0x6F61,0x485D, /* Array index: 0x1047 */ 0x6F62,0x485E, /* Array index: 0x1047 */ 0x6F68,0x485F, /* Array index: 0x1047 */ 0x6F6C,0x4860, /* Array index: 0x1047 */ 0x6F7D,0x4861, /* Array index: 0x1047 */ 0x6F7E,0x4862, /* Array index: 0x1047 */ 0x6F83,0x4863, /* Array index: 0x1047 */ 0x6F9A,0x486E, /* Array index: 0x1047 */ 0x6F9F,0x486F, /* Array index: 0x1047 */ 0x6FA0,0x4870, /* Array index: 0x1047 */ 0x6FB5,0x4878, /* Array index: 0x1047 */ 0x6FB6,0x4879, /* Array index: 0x1047 */ 0x6FBC,0x487A, /* Array index: 0x1047 */ 0x6FC5,0x487B, /* Array index: 0x1047 */ 0x6FC7,0x487C, /* Array index: 0x1047 */ 0x6FC8,0x487D, /* Array index: 0x1047 */ 0x6FCA,0x487E, /* Array index: 0x1047 */ 0x6FDA,0x4921, /* Array index: 0x1047 */ 0x6FDE,0x4922, /* Array index: 0x1047 */ 0x6FE8,0x4923, /* Array index: 0x1047 */ 0x6FE9,0x4924, /* Array index: 0x1047 */ 0x6FF0,0x4925, /* Array index: 0x1047 */ 0x6FF5,0x4926, /* Array index: 0x1047 */ 0x6FF9,0x4927, /* Array index: 0x1047 */ 0x6FFC,0x4928, /* Array index: 0x1047 */ 0x6FFD,0x4929, /* Array index: 0x1047 */ 0x7000,0x492A, /* Array index: 0x1047 */ 0x700D,0x492E, /* Array index: 0x1047 */ 0x7017,0x492F, /* Array index: 0x1047 */ 0x7020,0x4930, /* Array index: 0x1047 */ 0x7023,0x4931, /* Array index: 0x1047 */ 0x702F,0x4932, /* Array index: 0x1047 */ 0x7034,0x4933, /* Array index: 0x1047 */ 0x7037,0x4934, /* Array index: 0x1047 */ 0x7039,0x4935, /* Array index: 0x1047 */ 0x703C,0x4936, /* Array index: 0x1047 */ 0x7043,0x4937, /* Array index: 0x1047 */ 0x7044,0x4938, /* Array index: 0x1047 */ 0x704E,0x4941, /* Array index: 0x1047 */ 0x7054,0x493D, /* Array index: 0x1047 */ 0x7055,0x493E, /* Array index: 0x1047 */ 0x705D,0x493F, /* Array index: 0x1047 */ 0x705E,0x4940, /* Array index: 0x1047 */ 0x7064,0x4942, /* Array index: 0x1047 */ 0x7065,0x4943, /* Array index: 0x1047 */ 0x706C,0x4944, /* Array index: 0x1047 */ 0x706E,0x4945, /* Array index: 0x1047 */ 0x7075,0x4946, /* Array index: 0x1047 */ 0x7076,0x4947, /* Array index: 0x1047 */ 0x707E,0x4948, /* Array index: 0x1047 */ 0x7081,0x4949, /* Array index: 0x1047 */ 0x7085,0x494A, /* Array index: 0x1047 */ 0x7086,0x494B, /* Array index: 0x1047 */ 0x709B,0x4951, /* Array index: 0x1047 */ 0x70A4,0x4952, /* Array index: 0x1047 */ 0x70AB,0x4953, /* Array index: 0x1047 */ 0x70B0,0x4954, /* Array index: 0x1047 */ 0x70B1,0x4955, /* Array index: 0x1047 */ 0x70B4,0x4956, /* Array index: 0x1047 */ 0x70B7,0x4957, /* Array index: 0x1047 */ 0x70CA,0x4958, /* Array index: 0x1047 */ 0x70DC,0x495F, /* Array index: 0x1047 */ 0x70E4,0x4960, /* Array index: 0x1047 */ 0x70FA,0x4961, /* Array index: 0x1047 */ 0x710B,0x4967, /* Array index: 0x1047 */ 0x710C,0x4968, /* Array index: 0x1047 */ 0x710F,0x4969, /* Array index: 0x1047 */ 0x711E,0x496A, /* Array index: 0x1047 */ 0x7120,0x496B, /* Array index: 0x1047 */ 0x712B,0x496C, /* Array index: 0x1047 */ 0x7138,0x4971, /* Array index: 0x1047 */ 0x7141,0x4972, /* Array index: 0x1047 */ 0x7150,0x4978, /* Array index: 0x1047 */ 0x7152,0x4979, /* Array index: 0x1047 */ 0x7157,0x497A, /* Array index: 0x1047 */ 0x715A,0x497B, /* Array index: 0x1047 */ 0x715C,0x497C, /* Array index: 0x1047 */ 0x715E,0x497D, /* Array index: 0x1047 */ 0x7160,0x497E, /* Array index: 0x1047 */ 0x7168,0x4A21, /* Array index: 0x1047 */ 0x7179,0x4A22, /* Array index: 0x1047 */ 0x7180,0x4A23, /* Array index: 0x1047 */ 0x7185,0x4A24, /* Array index: 0x1047 */ 0x7187,0x4A25, /* Array index: 0x1047 */ 0x718C,0x4A26, /* Array index: 0x1047 */ 0x7192,0x4A27, /* Array index: 0x1047 */ 0x719A,0x4A28, /* Array index: 0x1047 */ 0x719B,0x4A29, /* Array index: 0x1047 */ 0x71A0,0x4A2A, /* Array index: 0x1047 */ 0x71A2,0x4A2B, /* Array index: 0x1047 */ 0x71BA,0x4A30, /* Array index: 0x1047 */ 0x71C4,0x4A34, /* Array index: 0x1047 */ 0x71CB,0x4A35, /* Array index: 0x1047 */ 0x71CC,0x4A36, /* Array index: 0x1047 */ 0x71D3,0x4A37, /* Array index: 0x1047 */ 0x71D6,0x4A38, /* Array index: 0x1047 */ 0x71D9,0x4A39, /* Array index: 0x1047 */ 0x71DA,0x4A3A, /* Array index: 0x1047 */ 0x71DC,0x4A3B, /* Array index: 0x1047 */ 0x71F8,0x4A3C, /* Array index: 0x1047 */ 0x71FE,0x4A3D, /* Array index: 0x1047 */ 0x7200,0x4A3E, /* Array index: 0x1047 */ 0x7213,0x4A42, /* Array index: 0x1047 */ 0x7217,0x4A43, /* Array index: 0x1047 */ 0x721A,0x4A44, /* Array index: 0x1047 */ 0x721D,0x4A45, /* Array index: 0x1047 */ 0x721F,0x4A46, /* Array index: 0x1047 */ 0x7224,0x4A47, /* Array index: 0x1047 */ 0x722B,0x4A48, /* Array index: 0x1047 */ 0x722F,0x4A49, /* Array index: 0x1047 */ 0x7234,0x4A4A, /* Array index: 0x1047 */ 0x7238,0x4A4B, /* Array index: 0x1047 */ 0x7239,0x4A4C, /* Array index: 0x1047 */ 0x7253,0x4A54, /* Array index: 0x1047 */ 0x7255,0x4A55, /* Array index: 0x1047 */ 0x7256,0x4A56, /* Array index: 0x1047 */ 0x725A,0x4A57, /* Array index: 0x1047 */ 0x725C,0x4A58, /* Array index: 0x1047 */ 0x725E,0x4A59, /* Array index: 0x1047 */ 0x7260,0x4A5A, /* Array index: 0x1047 */ 0x7263,0x4A5B, /* Array index: 0x1047 */ 0x7268,0x4A5C, /* Array index: 0x1047 */ 0x726B,0x4A5D, /* Array index: 0x1047 */ 0x726E,0x4A5E, /* Array index: 0x1047 */ 0x726F,0x4A5F, /* Array index: 0x1047 */ 0x7271,0x4A60, /* Array index: 0x1047 */ 0x7277,0x4A61, /* Array index: 0x1047 */ 0x7278,0x4A62, /* Array index: 0x1047 */ 0x727B,0x4A63, /* Array index: 0x1047 */ 0x727C,0x4A64, /* Array index: 0x1047 */ 0x727F,0x4A65, /* Array index: 0x1047 */ 0x7284,0x4A66, /* Array index: 0x1047 */ 0x7289,0x4A67, /* Array index: 0x1047 */ 0x728D,0x4A68, /* Array index: 0x1047 */ 0x728E,0x4A69, /* Array index: 0x1047 */ 0x7293,0x4A6A, /* Array index: 0x1047 */ 0x729B,0x4A6B, /* Array index: 0x1047 */ 0x72A8,0x4A6C, /* Array index: 0x1047 */ 0x72AD,0x4A6D, /* Array index: 0x1047 */ 0x72AE,0x4A6E, /* Array index: 0x1047 */ 0x72B1,0x4A6F, /* Array index: 0x1047 */ 0x72B4,0x4A70, /* Array index: 0x1047 */ 0x72BE,0x4A71, /* Array index: 0x1047 */ 0x72C1,0x4A72, /* Array index: 0x1047 */ 0x72C7,0x4A73, /* Array index: 0x1047 */ 0x72C9,0x4A74, /* Array index: 0x1047 */ 0x72CC,0x4A75, /* Array index: 0x1047 */ 0x72D5,0x4A76, /* Array index: 0x1047 */ 0x72D6,0x4A77, /* Array index: 0x1047 */ 0x72D8,0x4A78, /* Array index: 0x1047 */ 0x72DF,0x4A79, /* Array index: 0x1047 */ 0x72E5,0x4A7A, /* Array index: 0x1047 */ 0x72F3,0x4A7B, /* Array index: 0x1047 */ 0x72F4,0x4A7C, /* Array index: 0x1047 */ 0x72FA,0x4A7D, /* Array index: 0x1047 */ 0x72FB,0x4A7E, /* Array index: 0x1047 */ 0x72FE,0x4B21, /* Array index: 0x1047 */ 0x7302,0x4B22, /* Array index: 0x1047 */ 0x7304,0x4B23, /* Array index: 0x1047 */ 0x7305,0x4B24, /* Array index: 0x1047 */ 0x7307,0x4B25, /* Array index: 0x1047 */ 0x730B,0x4B26, /* Array index: 0x1047 */ 0x730D,0x4B27, /* Array index: 0x1047 */ 0x7312,0x4B28, /* Array index: 0x1047 */ 0x7313,0x4B29, /* Array index: 0x1047 */ 0x7318,0x4B2A, /* Array index: 0x1047 */ 0x7319,0x4B2B, /* Array index: 0x1047 */ 0x731E,0x4B2C, /* Array index: 0x1047 */ 0x7322,0x4B2D, /* Array index: 0x1047 */ 0x7324,0x4B2E, /* Array index: 0x1047 */ 0x7327,0x4B2F, /* Array index: 0x1047 */ 0x7328,0x4B30, /* Array index: 0x1047 */ 0x732C,0x4B31, /* Array index: 0x1047 */ 0x7331,0x4B32, /* Array index: 0x1047 */ 0x7332,0x4B33, /* Array index: 0x1047 */ 0x7335,0x4B34, /* Array index: 0x1047 */ 0x733A,0x4B35, /* Array index: 0x1047 */ 0x733B,0x4B36, /* Array index: 0x1047 */ 0x733D,0x4B37, /* Array index: 0x1047 */ 0x7343,0x4B38, /* Array index: 0x1047 */ 0x734D,0x4B39, /* Array index: 0x1047 */ 0x7350,0x4B3A, /* Array index: 0x1047 */ 0x7352,0x4B3B, /* Array index: 0x1047 */ 0x7356,0x4B3C, /* Array index: 0x1047 */ 0x7358,0x4B3D, /* Array index: 0x1047 */ 0x7366,0x4B42, /* Array index: 0x1047 */ 0x7367,0x4B43, /* Array index: 0x1047 */ 0x7369,0x4B44, /* Array index: 0x1047 */ 0x7377,0x4B4A, /* Array index: 0x1047 */ 0x7379,0x4B4B, /* Array index: 0x1047 */ 0x737C,0x4B4C, /* Array index: 0x1047 */ 0x7380,0x4B4D, /* Array index: 0x1047 */ 0x7381,0x4B4E, /* Array index: 0x1047 */ 0x7383,0x4B4F, /* Array index: 0x1047 */ 0x7385,0x4B50, /* Array index: 0x1047 */ 0x7386,0x4B51, /* Array index: 0x1047 */ 0x738E,0x4B52, /* Array index: 0x1047 */ 0x7390,0x4B53, /* Array index: 0x1047 */ 0x7393,0x4B54, /* Array index: 0x1047 */ 0x7395,0x4B55, /* Array index: 0x1047 */ 0x7397,0x4B56, /* Array index: 0x1047 */ 0x7398,0x4B57, /* Array index: 0x1047 */ 0x73AA,0x4B5F, /* Array index: 0x1047 */ 0x73AB,0x4B60, /* Array index: 0x1047 */ 0x73AD,0x4B61, /* Array index: 0x1047 */ 0x73B5,0x4B62, /* Array index: 0x1047 */ 0x73B7,0x4B63, /* Array index: 0x1047 */ 0x73B9,0x4B64, /* Array index: 0x1047 */ 0x73BC,0x4B65, /* Array index: 0x1047 */ 0x73BD,0x4B66, /* Array index: 0x1047 */ 0x73BF,0x4B67, /* Array index: 0x1047 */ 0x73C5,0x4B68, /* Array index: 0x1047 */ 0x73C6,0x4B69, /* Array index: 0x1047 */ 0x73C9,0x4B6A, /* Array index: 0x1047 */ 0x73CB,0x4B6B, /* Array index: 0x1047 */ 0x73CC,0x4B6C, /* Array index: 0x1047 */ 0x73CF,0x4B6D, /* Array index: 0x1047 */ 0x73D2,0x4B6E, /* Array index: 0x1047 */ 0x73D3,0x4B6F, /* Array index: 0x1047 */ 0x73D6,0x4B70, /* Array index: 0x1047 */ 0x73D9,0x4B71, /* Array index: 0x1047 */ 0x73DD,0x4B72, /* Array index: 0x1047 */ 0x73E1,0x4B73, /* Array index: 0x1047 */ 0x73E3,0x4B74, /* Array index: 0x1047 */ 0x73E6,0x4B75, /* Array index: 0x1047 */ 0x73E7,0x4B76, /* Array index: 0x1047 */ 0x73E9,0x4B77, /* Array index: 0x1047 */ 0x73F4,0x4B78, /* Array index: 0x1047 */ 0x73F5,0x4B79, /* Array index: 0x1047 */ 0x7404,0x4C24, /* Array index: 0x1047 */ 0x7407,0x4C25, /* Array index: 0x1047 */ 0x740A,0x4C26, /* Array index: 0x1047 */ 0x7411,0x4C27, /* Array index: 0x1047 */ 0x741A,0x4C28, /* Array index: 0x1047 */ 0x741B,0x4C29, /* Array index: 0x1047 */ 0x7424,0x4C2A, /* Array index: 0x1047 */ 0x7439,0x4C36, /* Array index: 0x1047 */ 0x7440,0x4C37, /* Array index: 0x1047 */ 0x744B,0x4C3C, /* Array index: 0x1047 */ 0x744D,0x4C3D, /* Array index: 0x1047 */ 0x7451,0x4C3E, /* Array index: 0x1047 */ 0x7452,0x4C3F, /* Array index: 0x1047 */ 0x7457,0x4C40, /* Array index: 0x1047 */ 0x745D,0x4C41, /* Array index: 0x1047 */ 0x7462,0x4C42, /* Array index: 0x1047 */ 0x746B,0x4C46, /* Array index: 0x1047 */ 0x746D,0x4C47, /* Array index: 0x1047 */ 0x746E,0x4C48, /* Array index: 0x1047 */ 0x7471,0x4C49, /* Array index: 0x1047 */ 0x7472,0x4C4A, /* Array index: 0x1047 */ 0x7480,0x4C4B, /* Array index: 0x1047 */ 0x7481,0x4C4C, /* Array index: 0x1047 */ 0x74B5,0x4C66, /* Array index: 0x1047 */ 0x74B9,0x4C67, /* Array index: 0x1047 */ 0x74BB,0x4C68, /* Array index: 0x1047 */ 0x74BF,0x4C69, /* Array index: 0x1047 */ 0x74C8,0x4C6A, /* Array index: 0x1047 */ 0x74C9,0x4C6B, /* Array index: 0x1047 */ 0x74CC,0x4C6C, /* Array index: 0x1047 */ 0x74D0,0x4C6D, /* Array index: 0x1047 */ 0x74D3,0x4C6E, /* Array index: 0x1047 */ 0x74D8,0x4C6F, /* Array index: 0x1047 */ 0x74DA,0x4C70, /* Array index: 0x1047 */ 0x74DB,0x4C71, /* Array index: 0x1047 */ 0x74DE,0x4C72, /* Array index: 0x1047 */ 0x74DF,0x4C73, /* Array index: 0x1047 */ 0x74E4,0x4C74, /* Array index: 0x1047 */ 0x74E8,0x4C75, /* Array index: 0x1047 */ 0x74EA,0x4C76, /* Array index: 0x1047 */ 0x74EB,0x4C77, /* Array index: 0x1047 */ 0x74EF,0x4C78, /* Array index: 0x1047 */ 0x74F4,0x4C79, /* Array index: 0x1047 */ 0x74FF,0x4C7D, /* Array index: 0x1047 */ 0x7506,0x4C7E, /* Array index: 0x1047 */ 0x7512,0x4D21, /* Array index: 0x1047 */ 0x7516,0x4D22, /* Array index: 0x1047 */ 0x7517,0x4D23, /* Array index: 0x1047 */ 0x7520,0x4D24, /* Array index: 0x1047 */ 0x7521,0x4D25, /* Array index: 0x1047 */ 0x7524,0x4D26, /* Array index: 0x1047 */ 0x7527,0x4D27, /* Array index: 0x1047 */ 0x7529,0x4D28, /* Array index: 0x1047 */ 0x752A,0x4D29, /* Array index: 0x1047 */ 0x752F,0x4D2A, /* Array index: 0x1047 */ 0x7536,0x4D2B, /* Array index: 0x1047 */ 0x7539,0x4D2C, /* Array index: 0x1047 */ 0x7543,0x4D31, /* Array index: 0x1047 */ 0x7547,0x4D32, /* Array index: 0x1047 */ 0x7548,0x4D33, /* Array index: 0x1047 */ 0x754E,0x4D34, /* Array index: 0x1047 */ 0x7550,0x4D35, /* Array index: 0x1047 */ 0x7552,0x4D36, /* Array index: 0x1047 */ 0x7557,0x4D37, /* Array index: 0x1047 */ 0x755E,0x4D38, /* Array index: 0x1047 */ 0x755F,0x4D39, /* Array index: 0x1047 */ 0x7561,0x4D3A, /* Array index: 0x1047 */ 0x756F,0x4D3B, /* Array index: 0x1047 */ 0x7571,0x4D3C, /* Array index: 0x1047 */ 0x7581,0x4D43, /* Array index: 0x1047 */ 0x7585,0x4D44, /* Array index: 0x1047 */ 0x7590,0x4D45, /* Array index: 0x1047 */ 0x7592,0x4D46, /* Array index: 0x1047 */ 0x7593,0x4D47, /* Array index: 0x1047 */ 0x7595,0x4D48, /* Array index: 0x1047 */ 0x7599,0x4D49, /* Array index: 0x1047 */ 0x759C,0x4D4A, /* Array index: 0x1047 */ 0x75A2,0x4D4B, /* Array index: 0x1047 */ 0x75A4,0x4D4C, /* Array index: 0x1047 */ 0x75B4,0x4D4D, /* Array index: 0x1047 */ 0x75BA,0x4D4E, /* Array index: 0x1047 */ 0x75C4,0x4D52, /* Array index: 0x1047 */ 0x75C6,0x4D53, /* Array index: 0x1047 */ 0x75CC,0x4D54, /* Array index: 0x1047 */ 0x75CE,0x4D55, /* Array index: 0x1047 */ 0x75CF,0x4D56, /* Array index: 0x1047 */ 0x75D7,0x4D57, /* Array index: 0x1047 */ 0x75DC,0x4D58, /* Array index: 0x1047 */ 0x75E4,0x4D5C, /* Array index: 0x1047 */ 0x75E7,0x4D5D, /* Array index: 0x1047 */ 0x75EC,0x4D5E, /* Array index: 0x1047 */ 0x75EE,0x4D5F, /* Array index: 0x1047 */ 0x75EF,0x4D60, /* Array index: 0x1047 */ 0x75F1,0x4D61, /* Array index: 0x1047 */ 0x75F9,0x4D62, /* Array index: 0x1047 */ 0x760F,0x4D6B, /* Array index: 0x1047 */ 0x7623,0x4D75, /* Array index: 0x1047 */ 0x7625,0x4D76, /* Array index: 0x1047 */ 0x7626,0x4D77, /* Array index: 0x1047 */ 0x7629,0x4D78, /* Array index: 0x1047 */ 0x762D,0x4D79, /* Array index: 0x1047 */ 0x7632,0x4D7A, /* Array index: 0x1047 */ 0x7633,0x4D7B, /* Array index: 0x1047 */ 0x7635,0x4D7C, /* Array index: 0x1047 */ 0x7655,0x4E2B, /* Array index: 0x1047 */ 0x7659,0x4E2C, /* Array index: 0x1047 */ 0x765F,0x4E2D, /* Array index: 0x1047 */ 0x7664,0x4E2E, /* Array index: 0x1047 */ 0x7665,0x4E2F, /* Array index: 0x1047 */ 0x7674,0x4E34, /* Array index: 0x1047 */ 0x7681,0x4E35, /* Array index: 0x1047 */ 0x7685,0x4E36, /* Array index: 0x1047 */ 0x768C,0x4E37, /* Array index: 0x1047 */ 0x768D,0x4E38, /* Array index: 0x1047 */ 0x7695,0x4E39, /* Array index: 0x1047 */ 0x76AD,0x4E47, /* Array index: 0x1047 */ 0x76BD,0x4E48, /* Array index: 0x1047 */ 0x76C1,0x4E49, /* Array index: 0x1047 */ 0x76C5,0x4E4A, /* Array index: 0x1047 */ 0x76C9,0x4E4B, /* Array index: 0x1047 */ 0x76CB,0x4E4C, /* Array index: 0x1047 */ 0x76CC,0x4E4D, /* Array index: 0x1047 */ 0x76CE,0x4E4E, /* Array index: 0x1047 */ 0x76D4,0x4E4F, /* Array index: 0x1047 */ 0x76D9,0x4E50, /* Array index: 0x1047 */ 0x76E0,0x4E51, /* Array index: 0x1047 */ 0x76E6,0x4E52, /* Array index: 0x1047 */ 0x76E8,0x4E53, /* Array index: 0x1047 */ 0x76EC,0x4E54, /* Array index: 0x1047 */ 0x76F0,0x4E55, /* Array index: 0x1047 */ 0x76F1,0x4E56, /* Array index: 0x1047 */ 0x76F6,0x4E57, /* Array index: 0x1047 */ 0x76F9,0x4E58, /* Array index: 0x1047 */ 0x76FC,0x4E59, /* Array index: 0x1047 */ 0x7700,0x4E5A, /* Array index: 0x1047 */ 0x7706,0x4E5B, /* Array index: 0x1047 */ 0x770A,0x4E5C, /* Array index: 0x1047 */ 0x770E,0x4E5D, /* Array index: 0x1047 */ 0x7712,0x4E5E, /* Array index: 0x1047 */ 0x7714,0x4E5F, /* Array index: 0x1047 */ 0x7715,0x4E60, /* Array index: 0x1047 */ 0x7717,0x4E61, /* Array index: 0x1047 */ 0x7719,0x4E62, /* Array index: 0x1047 */ 0x771A,0x4E63, /* Array index: 0x1047 */ 0x771C,0x4E64, /* Array index: 0x1047 */ 0x7722,0x4E65, /* Array index: 0x1047 */ 0x7728,0x4E66, /* Array index: 0x1047 */ 0x7739,0x4E6D, /* Array index: 0x1047 */ 0x773D,0x4E6E, /* Array index: 0x1047 */ 0x773E,0x4E6F, /* Array index: 0x1047 */ 0x7742,0x4E70, /* Array index: 0x1047 */ 0x7745,0x4E71, /* Array index: 0x1047 */ 0x7746,0x4E72, /* Array index: 0x1047 */ 0x774A,0x4E73, /* Array index: 0x1047 */ 0x7752,0x4E77, /* Array index: 0x1047 */ 0x7756,0x4E78, /* Array index: 0x1047 */ 0x7757,0x4E79, /* Array index: 0x1047 */ 0x7767,0x4F22, /* Array index: 0x1047 */ 0x776A,0x4F23, /* Array index: 0x1047 */ 0x776C,0x4F24, /* Array index: 0x1047 */ 0x777A,0x4F29, /* Array index: 0x1047 */ 0x777D,0x4F2A, /* Array index: 0x1047 */ 0x7780,0x4F2B, /* Array index: 0x1047 */ 0x7784,0x4F2C, /* Array index: 0x1047 */ 0x778C,0x4F2D, /* Array index: 0x1047 */ 0x778D,0x4F2E, /* Array index: 0x1047 */ 0x779A,0x4F32, /* Array index: 0x1047 */ 0x779F,0x4F33, /* Array index: 0x1047 */ 0x77A2,0x4F34, /* Array index: 0x1047 */ 0x77A7,0x4F35, /* Array index: 0x1047 */ 0x77AA,0x4F36, /* Array index: 0x1047 */ 0x77AE,0x4F37, /* Array index: 0x1047 */ 0x77AF,0x4F38, /* Array index: 0x1047 */ 0x77B1,0x4F39, /* Array index: 0x1047 */ 0x77B5,0x4F3A, /* Array index: 0x1047 */ 0x77BE,0x4F3B, /* Array index: 0x1047 */ 0x77C3,0x4F3C, /* Array index: 0x1047 */ 0x77C9,0x4F3D, /* Array index: 0x1047 */ 0x77D1,0x4F3E, /* Array index: 0x1047 */ 0x77D2,0x4F3F, /* Array index: 0x1047 */ 0x77D5,0x4F40, /* Array index: 0x1047 */ 0x77D9,0x4F41, /* Array index: 0x1047 */ 0x77E4,0x4F45, /* Array index: 0x1047 */ 0x77E6,0x4F46, /* Array index: 0x1047 */ 0x77EA,0x4F47, /* Array index: 0x1047 */ 0x77EC,0x4F48, /* Array index: 0x1047 */ 0x77F0,0x4F49, /* Array index: 0x1047 */ 0x77F1,0x4F4A, /* Array index: 0x1047 */ 0x77F4,0x4F4B, /* Array index: 0x1047 */ 0x77F8,0x4F4C, /* Array index: 0x1047 */ 0x77FB,0x4F4D, /* Array index: 0x1047 */ 0x7805,0x4F4E, /* Array index: 0x1047 */ 0x7806,0x4F4F, /* Array index: 0x1047 */ 0x7809,0x4F50, /* Array index: 0x1047 */ 0x780D,0x4F51, /* Array index: 0x1047 */ 0x780E,0x4F52, /* Array index: 0x1047 */ 0x7811,0x4F53, /* Array index: 0x1047 */ 0x781D,0x4F54, /* Array index: 0x1047 */ 0x782D,0x4F58, /* Array index: 0x1047 */ 0x782E,0x4F59, /* Array index: 0x1047 */ 0x7830,0x4F5A, /* Array index: 0x1047 */ 0x7835,0x4F5B, /* Array index: 0x1047 */ 0x7837,0x4F5C, /* Array index: 0x1047 */ 0x7843,0x4F5D, /* Array index: 0x1047 */ 0x7844,0x4F5E, /* Array index: 0x1047 */ 0x7847,0x4F5F, /* Array index: 0x1047 */ 0x7848,0x4F60, /* Array index: 0x1047 */ 0x784C,0x4F61, /* Array index: 0x1047 */ 0x784E,0x4F62, /* Array index: 0x1047 */ 0x7852,0x4F63, /* Array index: 0x1047 */ 0x785C,0x4F64, /* Array index: 0x1047 */ 0x785E,0x4F65, /* Array index: 0x1047 */ 0x7868,0x4F6A, /* Array index: 0x1047 */ 0x786A,0x4F6B, /* Array index: 0x1047 */ 0x786E,0x4F6C, /* Array index: 0x1047 */ 0x787A,0x4F6D, /* Array index: 0x1047 */ 0x787E,0x4F6E, /* Array index: 0x1047 */ 0x788A,0x4F6F, /* Array index: 0x1047 */ 0x788F,0x4F70, /* Array index: 0x1047 */ 0x7894,0x4F71, /* Array index: 0x1047 */ 0x7898,0x4F72, /* Array index: 0x1047 */ 0x78A4,0x4F77, /* Array index: 0x1047 */ 0x78A8,0x4F78, /* Array index: 0x1047 */ 0x78BB,0x5021, /* Array index: 0x1047 */ 0x78BD,0x5022, /* Array index: 0x1047 */ 0x78BF,0x5023, /* Array index: 0x1047 */ 0x78CC,0x5027, /* Array index: 0x1047 */ 0x78CE,0x5028, /* Array index: 0x1047 */ 0x78DB,0x502E, /* Array index: 0x1047 */ 0x78E4,0x502D, /* Array index: 0x1047 */ 0x78E6,0x5032, /* Array index: 0x1047 */ 0x78EA,0x5033, /* Array index: 0x1047 */ 0x78F2,0x5034, /* Array index: 0x1047 */ 0x78F3,0x5035, /* Array index: 0x1047 */ 0x78F6,0x5037, /* Array index: 0x1047 */ 0x78F7,0x5038, /* Array index: 0x1047 */ 0x78FA,0x5039, /* Array index: 0x1047 */ 0x78FB,0x503A, /* Array index: 0x1047 */ 0x78FF,0x503B, /* Array index: 0x1047 */ 0x7900,0x5036, /* Array index: 0x1047 */ 0x7906,0x503C, /* Array index: 0x1047 */ 0x790C,0x503D, /* Array index: 0x1047 */ 0x7910,0x503E, /* Array index: 0x1047 */ 0x791A,0x503F, /* Array index: 0x1047 */ 0x7925,0x5044, /* Array index: 0x1047 */ 0x7927,0x5045, /* Array index: 0x1047 */ 0x7929,0x5046, /* Array index: 0x1047 */ 0x792D,0x5047, /* Array index: 0x1047 */ 0x7931,0x5048, /* Array index: 0x1047 */ 0x7934,0x5049, /* Array index: 0x1047 */ 0x7935,0x504A, /* Array index: 0x1047 */ 0x793B,0x504B, /* Array index: 0x1047 */ 0x793D,0x504C, /* Array index: 0x1047 */ 0x793F,0x504D, /* Array index: 0x1047 */ 0x794A,0x5051, /* Array index: 0x1047 */ 0x794B,0x5052, /* Array index: 0x1047 */ 0x794F,0x5053, /* Array index: 0x1047 */ 0x7951,0x5054, /* Array index: 0x1047 */ 0x7954,0x5055, /* Array index: 0x1047 */ 0x7958,0x5056, /* Array index: 0x1047 */ 0x795B,0x5057, /* Array index: 0x1047 */ 0x795C,0x5058, /* Array index: 0x1047 */ 0x7967,0x5059, /* Array index: 0x1047 */ 0x7969,0x505A, /* Array index: 0x1047 */ 0x796B,0x505B, /* Array index: 0x1047 */ 0x7972,0x505C, /* Array index: 0x1047 */ 0x7979,0x505D, /* Array index: 0x1047 */ 0x797B,0x505E, /* Array index: 0x1047 */ 0x797C,0x505F, /* Array index: 0x1047 */ 0x797E,0x5060, /* Array index: 0x1047 */ 0x798B,0x5061, /* Array index: 0x1047 */ 0x798C,0x5062, /* Array index: 0x1047 */ 0x79A1,0x506B, /* Array index: 0x1047 */ 0x79A8,0x506C, /* Array index: 0x1047 */ 0x79A9,0x506D, /* Array index: 0x1047 */ 0x79AB,0x506E, /* Array index: 0x1047 */ 0x79AF,0x506F, /* Array index: 0x1047 */ 0x79B1,0x5070, /* Array index: 0x1047 */ 0x79B4,0x5071, /* Array index: 0x1047 */ 0x79B8,0x5072, /* Array index: 0x1047 */ 0x79BB,0x5073, /* Array index: 0x1047 */ 0x79C2,0x5074, /* Array index: 0x1047 */ 0x79C4,0x5075, /* Array index: 0x1047 */ 0x79C7,0x5076, /* Array index: 0x1047 */ 0x79C8,0x5077, /* Array index: 0x1047 */ 0x79CA,0x5078, /* Array index: 0x1047 */ 0x79CF,0x5079, /* Array index: 0x1047 */ 0x79D4,0x507A, /* Array index: 0x1047 */ 0x79D6,0x507B, /* Array index: 0x1047 */ 0x79DA,0x507C, /* Array index: 0x1047 */ 0x79DD,0x507D, /* Array index: 0x1047 */ 0x79DE,0x507E, /* Array index: 0x1047 */ 0x79E0,0x5121, /* Array index: 0x1047 */ 0x79E2,0x5122, /* Array index: 0x1047 */ 0x79E5,0x5123, /* Array index: 0x1047 */ 0x79EA,0x5124, /* Array index: 0x1047 */ 0x79EB,0x5125, /* Array index: 0x1047 */ 0x79ED,0x5126, /* Array index: 0x1047 */ 0x79F1,0x5127, /* Array index: 0x1047 */ 0x79F8,0x5128, /* Array index: 0x1047 */ 0x79FC,0x5129, /* Array index: 0x1047 */ 0x7A02,0x512A, /* Array index: 0x1047 */ 0x7A03,0x512B, /* Array index: 0x1047 */ 0x7A07,0x512C, /* Array index: 0x1047 */ 0x7A09,0x512D, /* Array index: 0x1047 */ 0x7A0A,0x512E, /* Array index: 0x1047 */ 0x7A0C,0x512F, /* Array index: 0x1047 */ 0x7A11,0x5130, /* Array index: 0x1047 */ 0x7A15,0x5131, /* Array index: 0x1047 */ 0x7A1B,0x5132, /* Array index: 0x1047 */ 0x7A1E,0x5133, /* Array index: 0x1047 */ 0x7A21,0x5134, /* Array index: 0x1047 */ 0x7A27,0x5135, /* Array index: 0x1047 */ 0x7A2B,0x5136, /* Array index: 0x1047 */ 0x7A2D,0x5137, /* Array index: 0x1047 */ 0x7A2F,0x5138, /* Array index: 0x1047 */ 0x7A30,0x5139, /* Array index: 0x1047 */ 0x7A4C,0x5143, /* Array index: 0x1047 */ 0x7A55,0x5144, /* Array index: 0x1047 */ 0x7A56,0x5145, /* Array index: 0x1047 */ 0x7A59,0x5146, /* Array index: 0x1047 */ 0x7A65,0x514B, /* Array index: 0x1047 */ 0x7A67,0x514C, /* Array index: 0x1047 */ 0x7A6A,0x514D, /* Array index: 0x1047 */ 0x7A6D,0x514E, /* Array index: 0x1047 */ 0x7A75,0x514F, /* Array index: 0x1047 */ 0x7A78,0x5150, /* Array index: 0x1047 */ 0x7A7E,0x5151, /* Array index: 0x1047 */ 0x7A80,0x5152, /* Array index: 0x1047 */ 0x7A82,0x5153, /* Array index: 0x1047 */ 0x7A85,0x5154, /* Array index: 0x1047 */ 0x7A86,0x5155, /* Array index: 0x1047 */ 0x7A8A,0x5156, /* Array index: 0x1047 */ 0x7A8B,0x5157, /* Array index: 0x1047 */ 0x7A90,0x5158, /* Array index: 0x1047 */ 0x7A91,0x5159, /* Array index: 0x1047 */ 0x7A94,0x515A, /* Array index: 0x1047 */ 0x7A9E,0x515B, /* Array index: 0x1047 */ 0x7AA0,0x515C, /* Array index: 0x1047 */ 0x7AA3,0x515D, /* Array index: 0x1047 */ 0x7AAC,0x515E, /* Array index: 0x1047 */ 0x7AB3,0x515F, /* Array index: 0x1047 */ 0x7AB5,0x5160, /* Array index: 0x1047 */ 0x7AB9,0x5161, /* Array index: 0x1047 */ 0x7ABB,0x5162, /* Array index: 0x1047 */ 0x7ABC,0x5163, /* Array index: 0x1047 */ 0x7AC6,0x5164, /* Array index: 0x1047 */ 0x7AC9,0x5165, /* Array index: 0x1047 */ 0x7ACC,0x5166, /* Array index: 0x1047 */ 0x7ACE,0x5167, /* Array index: 0x1047 */ 0x7AD1,0x5168, /* Array index: 0x1047 */ 0x7ADB,0x5169, /* Array index: 0x1047 */ 0x7AF1,0x516E, /* Array index: 0x1047 */ 0x7AF4,0x516F, /* Array index: 0x1047 */ 0x7AFB,0x5170, /* Array index: 0x1047 */ 0x7AFD,0x5171, /* Array index: 0x1047 */ 0x7AFE,0x5172, /* Array index: 0x1047 */ 0x7B07,0x5173, /* Array index: 0x1047 */ 0x7B14,0x5174, /* Array index: 0x1047 */ 0x7B1F,0x5175, /* Array index: 0x1047 */ 0x7B23,0x5176, /* Array index: 0x1047 */ 0x7B34,0x5222, /* Array index: 0x1047 */ 0x7B47,0x5227, /* Array index: 0x1047 */ 0x7B4E,0x5228, /* Array index: 0x1047 */ 0x7B55,0x5229, /* Array index: 0x1047 */ 0x7B60,0x522A, /* Array index: 0x1047 */ 0x7B64,0x522B, /* Array index: 0x1047 */ 0x7B66,0x522C, /* Array index: 0x1047 */ 0x7B69,0x522D, /* Array index: 0x1047 */ 0x7B6A,0x522E, /* Array index: 0x1047 */ 0x7B6D,0x522F, /* Array index: 0x1047 */ 0x7B6F,0x5230, /* Array index: 0x1047 */ 0x7B72,0x5231, /* Array index: 0x1047 */ 0x7B73,0x5232, /* Array index: 0x1047 */ 0x7B77,0x5233, /* Array index: 0x1047 */ 0x7B84,0x5234, /* Array index: 0x1047 */ 0x7B89,0x5235, /* Array index: 0x1047 */ 0x7B8E,0x5236, /* Array index: 0x1047 */ 0x7B90,0x5237, /* Array index: 0x1047 */ 0x7B91,0x5238, /* Array index: 0x1047 */ 0x7B96,0x5239, /* Array index: 0x1047 */ 0x7B9B,0x523A, /* Array index: 0x1047 */ 0x7B9E,0x523B, /* Array index: 0x1047 */ 0x7BA0,0x523C, /* Array index: 0x1047 */ 0x7BA5,0x523D, /* Array index: 0x1047 */ 0x7BAC,0x523E, /* Array index: 0x1047 */ 0x7BAF,0x523F, /* Array index: 0x1047 */ 0x7BB0,0x5240, /* Array index: 0x1047 */ 0x7BB2,0x5241, /* Array index: 0x1047 */ 0x7BB5,0x5242, /* Array index: 0x1047 */ 0x7BB6,0x5243, /* Array index: 0x1047 */ 0x7BC2,0x5248, /* Array index: 0x1047 */ 0x7BC5,0x5249, /* Array index: 0x1047 */ 0x7BC8,0x524A, /* Array index: 0x1047 */ 0x7BCA,0x524B, /* Array index: 0x1047 */ 0x7BD4,0x524C, /* Array index: 0x1047 */ 0x7BE8,0x5252, /* Array index: 0x1047 */ 0x7BEA,0x5253, /* Array index: 0x1047 */ 0x7BF2,0x5254, /* Array index: 0x1047 */ 0x7C09,0x5261, /* Array index: 0x1047 */ 0x7C19,0x5266, /* Array index: 0x1047 */ 0x7C1B,0x5267, /* Array index: 0x1047 */ 0x7C20,0x5268, /* Array index: 0x1047 */ 0x7C25,0x5269, /* Array index: 0x1047 */ 0x7C26,0x526A, /* Array index: 0x1047 */ 0x7C28,0x526B, /* Array index: 0x1047 */ 0x7C2C,0x526C, /* Array index: 0x1047 */ 0x7C31,0x526D, /* Array index: 0x1047 */ 0x7C33,0x526E, /* Array index: 0x1047 */ 0x7C34,0x526F, /* Array index: 0x1047 */ 0x7C36,0x5270, /* Array index: 0x1047 */ 0x7C39,0x5271, /* Array index: 0x1047 */ 0x7C3A,0x5272, /* Array index: 0x1047 */ 0x7C46,0x5273, /* Array index: 0x1047 */ 0x7C4A,0x5274, /* Array index: 0x1047 */ 0x7C61,0x5321, /* Array index: 0x1047 */ 0x7C63,0x5322, /* Array index: 0x1047 */ 0x7C67,0x5323, /* Array index: 0x1047 */ 0x7C69,0x5324, /* Array index: 0x1047 */ 0x7C6D,0x5325, /* Array index: 0x1047 */ 0x7C6E,0x5326, /* Array index: 0x1047 */ 0x7C70,0x5327, /* Array index: 0x1047 */ 0x7C72,0x5328, /* Array index: 0x1047 */ 0x7C79,0x5329, /* Array index: 0x1047 */ 0x7C7C,0x532A, /* Array index: 0x1047 */ 0x7C7D,0x532B, /* Array index: 0x1047 */ 0x7C86,0x532C, /* Array index: 0x1047 */ 0x7C87,0x532D, /* Array index: 0x1047 */ 0x7C8F,0x532E, /* Array index: 0x1047 */ 0x7C94,0x532F, /* Array index: 0x1047 */ 0x7C9E,0x5330, /* Array index: 0x1047 */ 0x7CA0,0x5331, /* Array index: 0x1047 */ 0x7CA6,0x5332, /* Array index: 0x1047 */ 0x7CB0,0x5333, /* Array index: 0x1047 */ 0x7CBF,0x5339, /* Array index: 0x1047 */ 0x7CC4,0x533A, /* Array index: 0x1047 */ 0x7CCD,0x533E, /* Array index: 0x1047 */ 0x7CCF,0x533F, /* Array index: 0x1047 */ 0x7CDD,0x5346, /* Array index: 0x1047 */ 0x7CE6,0x5347, /* Array index: 0x1047 */ 0x7CE9,0x5348, /* Array index: 0x1047 */ 0x7CEB,0x5349, /* Array index: 0x1047 */ 0x7CF5,0x534A, /* Array index: 0x1047 */ 0x7D03,0x534B, /* Array index: 0x1047 */ 0x7D16,0x5353, /* Array index: 0x1047 */ 0x7D1D,0x5354, /* Array index: 0x1047 */ 0x7D1E,0x5355, /* Array index: 0x1047 */ 0x7D23,0x5356, /* Array index: 0x1047 */ 0x7D26,0x5357, /* Array index: 0x1047 */ 0x7D2A,0x5358, /* Array index: 0x1047 */ 0x7D2D,0x5359, /* Array index: 0x1047 */ 0x7D31,0x535A, /* Array index: 0x1047 */ 0x7D47,0x5360, /* Array index: 0x1047 */ 0x7D48,0x5361, /* Array index: 0x1047 */ 0x7D4D,0x5362, /* Array index: 0x1047 */ 0x7D51,0x5363, /* Array index: 0x1047 */ 0x7D53,0x5364, /* Array index: 0x1047 */ 0x7D57,0x5365, /* Array index: 0x1047 */ 0x7D65,0x536A, /* Array index: 0x1047 */ 0x7D67,0x536B, /* Array index: 0x1047 */ 0x7D6A,0x536C, /* Array index: 0x1047 */ 0x7D70,0x536D, /* Array index: 0x1047 */ 0x7D78,0x536E, /* Array index: 0x1047 */ 0x7D7A,0x536F, /* Array index: 0x1047 */ 0x7D7B,0x5370, /* Array index: 0x1047 */ 0x7D91,0x537B, /* Array index: 0x1047 */ 0x7D96,0x537C, /* Array index: 0x1047 */ 0x7D97,0x537D, /* Array index: 0x1047 */ 0x7D9D,0x537E, /* Array index: 0x1047 */ 0x7D9E,0x5421, /* Array index: 0x1047 */ 0x7DA6,0x5422, /* Array index: 0x1047 */ 0x7DA7,0x5423, /* Array index: 0x1047 */ 0x7DAA,0x5424, /* Array index: 0x1047 */ 0x7DB3,0x5425, /* Array index: 0x1047 */ 0x7DB6,0x5426, /* Array index: 0x1047 */ 0x7DB7,0x5427, /* Array index: 0x1047 */ 0x7DB9,0x5428, /* Array index: 0x1047 */ 0x7DD7,0x5431, /* Array index: 0x1047 */ 0x7DD9,0x5432, /* Array index: 0x1047 */ 0x7DE2,0x5434, /* Array index: 0x1047 */ 0x7DE5,0x5435, /* Array index: 0x1047 */ 0x7DE6,0x5436, /* Array index: 0x1047 */ 0x7DEA,0x5437, /* Array index: 0x1047 */ 0x7DEB,0x5438, /* Array index: 0x1047 */ 0x7DED,0x5439, /* Array index: 0x1047 */ 0x7DF1,0x543A, /* Array index: 0x1047 */ 0x7DF5,0x543B, /* Array index: 0x1047 */ 0x7DF6,0x543C, /* Array index: 0x1047 */ 0x7DF9,0x543D, /* Array index: 0x1047 */ 0x7DFA,0x543E, /* Array index: 0x1047 */ 0x7E00,0x5433, /* Array index: 0x1047 */ 0x7E08,0x543F, /* Array index: 0x1047 */ 0x7E10,0x5440, /* Array index: 0x1047 */ 0x7E11,0x5441, /* Array index: 0x1047 */ 0x7E15,0x5442, /* Array index: 0x1047 */ 0x7E17,0x5443, /* Array index: 0x1047 */ 0x7E1C,0x5444, /* Array index: 0x1047 */ 0x7E1D,0x5445, /* Array index: 0x1047 */ 0x7E20,0x5446, /* Array index: 0x1047 */ 0x7E27,0x5447, /* Array index: 0x1047 */ 0x7E28,0x5448, /* Array index: 0x1047 */ 0x7E2C,0x5449, /* Array index: 0x1047 */ 0x7E2D,0x544A, /* Array index: 0x1047 */ 0x7E2F,0x544B, /* Array index: 0x1047 */ 0x7E33,0x544C, /* Array index: 0x1047 */ 0x7E36,0x544D, /* Array index: 0x1047 */ 0x7E3F,0x544E, /* Array index: 0x1047 */ 0x7E44,0x544F, /* Array index: 0x1047 */ 0x7E45,0x5450, /* Array index: 0x1047 */ 0x7E47,0x5451, /* Array index: 0x1047 */ 0x7E4E,0x5452, /* Array index: 0x1047 */ 0x7E50,0x5453, /* Array index: 0x1047 */ 0x7E52,0x5454, /* Array index: 0x1047 */ 0x7E58,0x5455, /* Array index: 0x1047 */ 0x7E5F,0x5456, /* Array index: 0x1047 */ 0x7E61,0x5457, /* Array index: 0x1047 */ 0x7E62,0x5458, /* Array index: 0x1047 */ 0x7E65,0x5459, /* Array index: 0x1047 */ 0x7E6B,0x545A, /* Array index: 0x1047 */ 0x7E6E,0x545B, /* Array index: 0x1047 */ 0x7E6F,0x545C, /* Array index: 0x1047 */ 0x7E73,0x545D, /* Array index: 0x1047 */ 0x7E78,0x545E, /* Array index: 0x1047 */ 0x7E7E,0x545F, /* Array index: 0x1047 */ 0x7E81,0x5460, /* Array index: 0x1047 */ 0x7E86,0x5461, /* Array index: 0x1047 */ 0x7E87,0x5462, /* Array index: 0x1047 */ 0x7E8A,0x5463, /* Array index: 0x1047 */ 0x7E8D,0x5464, /* Array index: 0x1047 */ 0x7E91,0x5465, /* Array index: 0x1047 */ 0x7E95,0x5466, /* Array index: 0x1047 */ 0x7E98,0x5467, /* Array index: 0x1047 */ 0x7E9A,0x5468, /* Array index: 0x1047 */ 0x7E9D,0x5469, /* Array index: 0x1047 */ 0x7E9E,0x546A, /* Array index: 0x1047 */ 0x7F43,0x5470, /* Array index: 0x1047 */ 0x7F44,0x5471, /* Array index: 0x1047 */ 0x7F47,0x5472, /* Array index: 0x1047 */ 0x7F4F,0x5473, /* Array index: 0x1047 */ 0x7F52,0x5474, /* Array index: 0x1047 */ 0x7F53,0x5475, /* Array index: 0x1047 */ 0x7F6D,0x547E, /* Array index: 0x1047 */ 0x7F71,0x5521, /* Array index: 0x1047 */ 0x7F8B,0x5526, /* Array index: 0x1047 */ 0x7F96,0x552B, /* Array index: 0x1047 */ 0x7F97,0x552C, /* Array index: 0x1047 */ 0x7F9C,0x552D, /* Array index: 0x1047 */ 0x7FA1,0x552E, /* Array index: 0x1047 */ 0x7FA2,0x552F, /* Array index: 0x1047 */ 0x7FA6,0x5530, /* Array index: 0x1047 */ 0x7FAA,0x5531, /* Array index: 0x1047 */ 0x7FAD,0x5532, /* Array index: 0x1047 */ 0x7FB4,0x5533, /* Array index: 0x1047 */ 0x7FBC,0x5534, /* Array index: 0x1047 */ 0x7FBF,0x5535, /* Array index: 0x1047 */ 0x7FC0,0x5536, /* Array index: 0x1047 */ 0x7FC3,0x5537, /* Array index: 0x1047 */ 0x7FC8,0x5538, /* Array index: 0x1047 */ 0x7FCE,0x5539, /* Array index: 0x1047 */ 0x7FCF,0x553A, /* Array index: 0x1047 */ 0x7FDB,0x553B, /* Array index: 0x1047 */ 0x7FDF,0x553C, /* Array index: 0x1047 */ 0x7FE3,0x553D, /* Array index: 0x1047 */ 0x7FE5,0x553E, /* Array index: 0x1047 */ 0x7FE8,0x553F, /* Array index: 0x1047 */ 0x7FEC,0x5540, /* Array index: 0x1047 */ 0x7FEE,0x5541, /* Array index: 0x1047 */ 0x7FEF,0x5542, /* Array index: 0x1047 */ 0x7FF2,0x5543, /* Array index: 0x1047 */ 0x7FFA,0x5544, /* Array index: 0x1047 */ 0x8007,0x5548, /* Array index: 0x1047 */ 0x8008,0x5549, /* Array index: 0x1047 */ 0x800A,0x554A, /* Array index: 0x1047 */ 0x8024,0x5556, /* Array index: 0x1047 */ 0x8026,0x5557, /* Array index: 0x1047 */ 0x802C,0x5558, /* Array index: 0x1047 */ 0x802E,0x5559, /* Array index: 0x1047 */ 0x8030,0x555A, /* Array index: 0x1047 */ 0x8034,0x555B, /* Array index: 0x1047 */ 0x8035,0x555C, /* Array index: 0x1047 */ 0x8037,0x555D, /* Array index: 0x1047 */ 0x8039,0x555E, /* Array index: 0x1047 */ 0x803A,0x555F, /* Array index: 0x1047 */ 0x803C,0x5560, /* Array index: 0x1047 */ 0x803E,0x5561, /* Array index: 0x1047 */ 0x8040,0x5562, /* Array index: 0x1047 */ 0x8044,0x5563, /* Array index: 0x1047 */ 0x8060,0x5564, /* Array index: 0x1047 */ 0x8064,0x5565, /* Array index: 0x1047 */ 0x8066,0x5566, /* Array index: 0x1047 */ 0x806D,0x5567, /* Array index: 0x1047 */ 0x8071,0x5568, /* Array index: 0x1047 */ 0x8075,0x5569, /* Array index: 0x1047 */ 0x8081,0x556A, /* Array index: 0x1047 */ 0x8088,0x556B, /* Array index: 0x1047 */ 0x808E,0x556C, /* Array index: 0x1047 */ 0x809C,0x556D, /* Array index: 0x1047 */ 0x809E,0x556E, /* Array index: 0x1047 */ 0x80A6,0x556F, /* Array index: 0x1047 */ 0x80A7,0x5570, /* Array index: 0x1047 */ 0x80AB,0x5571, /* Array index: 0x1047 */ 0x80B8,0x5572, /* Array index: 0x1047 */ 0x80B9,0x5573, /* Array index: 0x1047 */ 0x80C8,0x5574, /* Array index: 0x1047 */ 0x80CD,0x5575, /* Array index: 0x1047 */ 0x80CF,0x5576, /* Array index: 0x1047 */ 0x80D2,0x5577, /* Array index: 0x1047 */ 0x80E0,0x557C, /* Array index: 0x1047 */ 0x80ED,0x557D, /* Array index: 0x1047 */ 0x80EE,0x557E, /* Array index: 0x1047 */ 0x80F0,0x5621, /* Array index: 0x1047 */ 0x80F2,0x5622, /* Array index: 0x1047 */ 0x80F3,0x5623, /* Array index: 0x1047 */ 0x80F6,0x5624, /* Array index: 0x1047 */ 0x80F9,0x5625, /* Array index: 0x1047 */ 0x80FA,0x5626, /* Array index: 0x1047 */ 0x80FE,0x5627, /* Array index: 0x1047 */ 0x8103,0x5628, /* Array index: 0x1047 */ 0x810B,0x5629, /* Array index: 0x1047 */ 0x811C,0x562D, /* Array index: 0x1047 */ 0x811E,0x562E, /* Array index: 0x1047 */ 0x8120,0x562F, /* Array index: 0x1047 */ 0x8124,0x5630, /* Array index: 0x1047 */ 0x8127,0x5631, /* Array index: 0x1047 */ 0x812C,0x5632, /* Array index: 0x1047 */ 0x8130,0x5633, /* Array index: 0x1047 */ 0x8135,0x5634, /* Array index: 0x1047 */ 0x813A,0x5635, /* Array index: 0x1047 */ 0x813C,0x5636, /* Array index: 0x1047 */ 0x8145,0x5637, /* Array index: 0x1047 */ 0x8147,0x5638, /* Array index: 0x1047 */ 0x814A,0x5639, /* Array index: 0x1047 */ 0x814C,0x563A, /* Array index: 0x1047 */ 0x8152,0x563B, /* Array index: 0x1047 */ 0x8157,0x563C, /* Array index: 0x1047 */ 0x8160,0x563D, /* Array index: 0x1047 */ 0x8161,0x563E, /* Array index: 0x1047 */ 0x816D,0x5642, /* Array index: 0x1047 */ 0x816F,0x5643, /* Array index: 0x1047 */ 0x8177,0x5644, /* Array index: 0x1047 */ 0x8181,0x5645, /* Array index: 0x1047 */ 0x818B,0x564A, /* Array index: 0x1047 */ 0x818E,0x564B, /* Array index: 0x1047 */ 0x8190,0x5646, /* Array index: 0x1047 */ 0x8196,0x564C, /* Array index: 0x1047 */ 0x8198,0x564D, /* Array index: 0x1047 */ 0x819B,0x564E, /* Array index: 0x1047 */ 0x819E,0x564F, /* Array index: 0x1047 */ 0x81A2,0x5650, /* Array index: 0x1047 */ 0x81AE,0x5651, /* Array index: 0x1047 */ 0x81B2,0x5652, /* Array index: 0x1047 */ 0x81B4,0x5653, /* Array index: 0x1047 */ 0x81BB,0x5654, /* Array index: 0x1047 */ 0x81C3,0x5656, /* Array index: 0x1047 */ 0x81C5,0x5657, /* Array index: 0x1047 */ 0x81CA,0x5658, /* Array index: 0x1047 */ 0x81CB,0x5655, /* Array index: 0x1047 */ 0x81CE,0x5659, /* Array index: 0x1047 */ 0x81CF,0x565A, /* Array index: 0x1047 */ 0x81D5,0x565B, /* Array index: 0x1047 */ 0x81D7,0x565C, /* Array index: 0x1047 */ 0x81DB,0x565D, /* Array index: 0x1047 */ 0x81DD,0x565E, /* Array index: 0x1047 */ 0x81DE,0x565F, /* Array index: 0x1047 */ 0x81E1,0x5660, /* Array index: 0x1047 */ 0x81E4,0x5661, /* Array index: 0x1047 */ 0x81EB,0x5662, /* Array index: 0x1047 */ 0x81EC,0x5663, /* Array index: 0x1047 */ 0x81FD,0x566B, /* Array index: 0x1047 */ 0x81FF,0x566C, /* Array index: 0x1047 */ 0x8200,0x566D, /* Array index: 0x1047 */ 0x8203,0x566E, /* Array index: 0x1047 */ 0x820F,0x566F, /* Array index: 0x1047 */ 0x8213,0x5670, /* Array index: 0x1047 */ 0x8214,0x5671, /* Array index: 0x1047 */ 0x8219,0x5672, /* Array index: 0x1047 */ 0x821A,0x5673, /* Array index: 0x1047 */ 0x821D,0x5674, /* Array index: 0x1047 */ 0x8221,0x5675, /* Array index: 0x1047 */ 0x8222,0x5676, /* Array index: 0x1047 */ 0x8228,0x5677, /* Array index: 0x1047 */ 0x8232,0x5678, /* Array index: 0x1047 */ 0x8234,0x5679, /* Array index: 0x1047 */ 0x823A,0x567A, /* Array index: 0x1047 */ 0x824B,0x5721, /* Array index: 0x1047 */ 0x824E,0x5722, /* Array index: 0x1047 */ 0x824F,0x5723, /* Array index: 0x1047 */ 0x8251,0x5724, /* Array index: 0x1047 */ 0x8256,0x5725, /* Array index: 0x1047 */ 0x825C,0x5726, /* Array index: 0x1047 */ 0x8260,0x5727, /* Array index: 0x1047 */ 0x8263,0x5728, /* Array index: 0x1047 */ 0x8267,0x5729, /* Array index: 0x1047 */ 0x826D,0x572A, /* Array index: 0x1047 */ 0x8274,0x572B, /* Array index: 0x1047 */ 0x827B,0x572C, /* Array index: 0x1047 */ 0x8287,0x5733, /* Array index: 0x1047 */ 0x8289,0x5734, /* Array index: 0x1047 */ 0x828A,0x5735, /* Array index: 0x1047 */ 0x828E,0x5736, /* Array index: 0x1047 */ 0x8291,0x5737, /* Array index: 0x1047 */ 0x8294,0x5738, /* Array index: 0x1047 */ 0x8296,0x5739, /* Array index: 0x1047 */ 0x8298,0x573A, /* Array index: 0x1047 */ 0x829A,0x573B, /* Array index: 0x1047 */ 0x829B,0x573C, /* Array index: 0x1047 */ 0x82AE,0x5745, /* Array index: 0x1047 */ 0x82B0,0x5746, /* Array index: 0x1047 */ 0x82B2,0x5747, /* Array index: 0x1047 */ 0x82B4,0x5748, /* Array index: 0x1047 */ 0x82B7,0x5749, /* Array index: 0x1047 */ 0x82BA,0x574A, /* Array index: 0x1047 */ 0x82BC,0x574B, /* Array index: 0x1047 */ 0x82BE,0x574C, /* Array index: 0x1047 */ 0x82BF,0x574D, /* Array index: 0x1047 */ 0x82C6,0x574E, /* Array index: 0x1047 */ 0x82D0,0x574F, /* Array index: 0x1047 */ 0x82D5,0x5750, /* Array index: 0x1047 */ 0x82DA,0x5751, /* Array index: 0x1047 */ 0x82E0,0x5752, /* Array index: 0x1047 */ 0x82E2,0x5753, /* Array index: 0x1047 */ 0x82E4,0x5754, /* Array index: 0x1047 */ 0x82E8,0x5755, /* Array index: 0x1047 */ 0x82EA,0x5756, /* Array index: 0x1047 */ 0x82ED,0x5757, /* Array index: 0x1047 */ 0x82EF,0x5758, /* Array index: 0x1047 */ 0x82F6,0x5759, /* Array index: 0x1047 */ 0x82F7,0x575A, /* Array index: 0x1047 */ 0x8333,0x576E, /* Array index: 0x1047 */ 0x8337,0x576F, /* Array index: 0x1047 */ 0x833A,0x5770, /* Array index: 0x1047 */ 0x833C,0x5771, /* Array index: 0x1047 */ 0x833D,0x5772, /* Array index: 0x1047 */ 0x8347,0x5776, /* Array index: 0x1047 */ 0x834D,0x5777, /* Array index: 0x1047 */ 0x834E,0x5778, /* Array index: 0x1047 */ 0x8370,0x577D, /* Array index: 0x1047 */ 0x8378,0x577E, /* Array index: 0x1047 */ 0x837D,0x5821, /* Array index: 0x1047 */ 0x837F,0x5822, /* Array index: 0x1047 */ 0x8380,0x5823, /* Array index: 0x1047 */ 0x8382,0x5824, /* Array index: 0x1047 */ 0x8384,0x5825, /* Array index: 0x1047 */ 0x8386,0x5826, /* Array index: 0x1047 */ 0x838D,0x5827, /* Array index: 0x1047 */ 0x8392,0x5828, /* Array index: 0x1047 */ 0x8394,0x5829, /* Array index: 0x1047 */ 0x8395,0x582A, /* Array index: 0x1047 */ 0x83A6,0x5830, /* Array index: 0x1047 */ 0x83A7,0x5831, /* Array index: 0x1047 */ 0x83A9,0x5832, /* Array index: 0x1047 */ 0x83AC,0x5833, /* Array index: 0x1047 */ 0x83AD,0x584C, /* Array index: 0x1047 */ 0x83C7,0x5837, /* Array index: 0x1047 */ 0x83C9,0x5838, /* Array index: 0x1047 */ 0x83D4,0x583C, /* Array index: 0x1047 */ 0x83DD,0x583D, /* Array index: 0x1047 */ 0x83E8,0x583F, /* Array index: 0x1047 */ 0x83EA,0x5840, /* Array index: 0x1047 */ 0x83F6,0x5841, /* Array index: 0x1047 */ 0x83F8,0x5842, /* Array index: 0x1047 */ 0x83F9,0x5843, /* Array index: 0x1047 */ 0x83FC,0x5844, /* Array index: 0x1047 */ 0x8401,0x5845, /* Array index: 0x1047 */ 0x8406,0x5846, /* Array index: 0x1047 */ 0x840A,0x5847, /* Array index: 0x1047 */ 0x840F,0x5848, /* Array index: 0x1047 */ 0x8411,0x5849, /* Array index: 0x1047 */ 0x8415,0x584A, /* Array index: 0x1047 */ 0x8419,0x584B, /* Array index: 0x1047 */ 0x842F,0x584D, /* Array index: 0x1047 */ 0x8439,0x584E, /* Array index: 0x1047 */ 0x8445,0x584F, /* Array index: 0x1047 */ 0x8447,0x5850, /* Array index: 0x1047 */ 0x8448,0x5851, /* Array index: 0x1047 */ 0x844A,0x5852, /* Array index: 0x1047 */ 0x844D,0x5853, /* Array index: 0x1047 */ 0x844F,0x5854, /* Array index: 0x1047 */ 0x8451,0x5855, /* Array index: 0x1047 */ 0x8452,0x5856, /* Array index: 0x1047 */ 0x8460,0x585C, /* Array index: 0x1047 */ 0x8464,0x585D, /* Array index: 0x1047 */ 0x8465,0x585E, /* Array index: 0x1047 */ 0x8467,0x585F, /* Array index: 0x1047 */ 0x846A,0x5860, /* Array index: 0x1047 */ 0x8470,0x5861, /* Array index: 0x1047 */ 0x8473,0x5862, /* Array index: 0x1047 */ 0x8474,0x5863, /* Array index: 0x1047 */ 0x8476,0x5864, /* Array index: 0x1047 */ 0x8478,0x5865, /* Array index: 0x1047 */ 0x847C,0x5866, /* Array index: 0x1047 */ 0x847D,0x5867, /* Array index: 0x1047 */ 0x8481,0x5868, /* Array index: 0x1047 */ 0x8485,0x5869, /* Array index: 0x1047 */ 0x8492,0x586A, /* Array index: 0x1047 */ 0x8493,0x586B, /* Array index: 0x1047 */ 0x8495,0x586C, /* Array index: 0x1047 */ 0x849E,0x586D, /* Array index: 0x1047 */ 0x84AF,0x5872, /* Array index: 0x1047 */ 0x84B1,0x5873, /* Array index: 0x1047 */ 0x84B4,0x5874, /* Array index: 0x1047 */ 0x84BA,0x5875, /* Array index: 0x1047 */ 0x84BD,0x5876, /* Array index: 0x1047 */ 0x84BE,0x5877, /* Array index: 0x1047 */ 0x84C0,0x5878, /* Array index: 0x1047 */ 0x84C2,0x5879, /* Array index: 0x1047 */ 0x84C7,0x587A, /* Array index: 0x1047 */ 0x84C8,0x587B, /* Array index: 0x1047 */ 0x84CC,0x587C, /* Array index: 0x1047 */ 0x84CF,0x587D, /* Array index: 0x1047 */ 0x84D3,0x587E, /* Array index: 0x1047 */ 0x84DC,0x5921, /* Array index: 0x1047 */ 0x84E7,0x5922, /* Array index: 0x1047 */ 0x84EA,0x5923, /* Array index: 0x1047 */ 0x84F7,0x5928, /* Array index: 0x1047 */ 0x84FA,0x592A, /* Array index: 0x1047 */ 0x84FB,0x592B, /* Array index: 0x1047 */ 0x84FD,0x592C, /* Array index: 0x1047 */ 0x8502,0x592D, /* Array index: 0x1047 */ 0x8503,0x592E, /* Array index: 0x1047 */ 0x8507,0x592F, /* Array index: 0x1047 */ 0x850C,0x5930, /* Array index: 0x1047 */ 0x850E,0x5931, /* Array index: 0x1047 */ 0x8510,0x5932, /* Array index: 0x1047 */ 0x851C,0x5933, /* Array index: 0x1047 */ 0x851E,0x5934, /* Array index: 0x1047 */ 0x852F,0x593C, /* Array index: 0x1047 */ 0x853F,0x5940, /* Array index: 0x1047 */ 0x8546,0x5941, /* Array index: 0x1047 */ 0x8556,0x5947, /* Array index: 0x1047 */ 0x8559,0x5948, /* Array index: 0x1047 */ 0x856B,0x5951, /* Array index: 0x1047 */ 0x856F,0x5952, /* Array index: 0x1047 */ 0x8585,0x5959, /* Array index: 0x1047 */ 0x8586,0x595A, /* Array index: 0x1047 */ 0x8589,0x595B, /* Array index: 0x1047 */ 0x858B,0x595C, /* Array index: 0x1047 */ 0x858C,0x595D, /* Array index: 0x1047 */ 0x858F,0x595E, /* Array index: 0x1047 */ 0x8593,0x595F, /* Array index: 0x1047 */ 0x8598,0x5960, /* Array index: 0x1047 */ 0x859D,0x5961, /* Array index: 0x1047 */ 0x859F,0x5962, /* Array index: 0x1047 */ 0x85A0,0x5963, /* Array index: 0x1047 */ 0x85A2,0x5964, /* Array index: 0x1047 */ 0x85A5,0x5965, /* Array index: 0x1047 */ 0x85A7,0x5966, /* Array index: 0x1047 */ 0x85AD,0x5974, /* Array index: 0x1047 */ 0x85C2,0x596F, /* Array index: 0x1047 */ 0x85C7,0x5970, /* Array index: 0x1047 */ 0x85CA,0x5971, /* Array index: 0x1047 */ 0x85CB,0x5972, /* Array index: 0x1047 */ 0x85CE,0x5973, /* Array index: 0x1047 */ 0x85D8,0x5975, /* Array index: 0x1047 */ 0x85DA,0x5976, /* Array index: 0x1047 */ 0x85DF,0x5977, /* Array index: 0x1047 */ 0x85E0,0x5978, /* Array index: 0x1047 */ 0x85E6,0x5979, /* Array index: 0x1047 */ 0x85E8,0x597A, /* Array index: 0x1047 */ 0x85ED,0x597B, /* Array index: 0x1047 */ 0x85F3,0x597C, /* Array index: 0x1047 */ 0x85F6,0x597D, /* Array index: 0x1047 */ 0x85FC,0x597E, /* Array index: 0x1047 */ 0x85FF,0x5A21, /* Array index: 0x1047 */ 0x8600,0x5A22, /* Array index: 0x1047 */ 0x8604,0x5A23, /* Array index: 0x1047 */ 0x8605,0x5A24, /* Array index: 0x1047 */ 0x8618,0x5A2A, /* Array index: 0x1047 */ 0x8619,0x5A2B, /* Array index: 0x1047 */ 0x861B,0x5A2C, /* Array index: 0x1047 */ 0x861E,0x5A2D, /* Array index: 0x1047 */ 0x8621,0x5A2E, /* Array index: 0x1047 */ 0x8627,0x5A2F, /* Array index: 0x1047 */ 0x8629,0x5A30, /* Array index: 0x1047 */ 0x8636,0x5A31, /* Array index: 0x1047 */ 0x8638,0x5A32, /* Array index: 0x1047 */ 0x863A,0x5A33, /* Array index: 0x1047 */ 0x8646,0x5A38, /* Array index: 0x1047 */ 0x865D,0x5A3F, /* Array index: 0x1047 */ 0x8669,0x5A45, /* Array index: 0x1047 */ 0x866C,0x5A46, /* Array index: 0x1047 */ 0x866F,0x5A47, /* Array index: 0x1047 */ 0x867A,0x5A4B, /* Array index: 0x1047 */ 0x8688,0x5A6D, /* Array index: 0x1047 */ 0x868D,0x5A4C, /* Array index: 0x1047 */ 0x8691,0x5A4D, /* Array index: 0x1047 */ 0x8696,0x5A4E, /* Array index: 0x1047 */ 0x8698,0x5A4F, /* Array index: 0x1047 */ 0x869A,0x5A50, /* Array index: 0x1047 */ 0x869C,0x5A51, /* Array index: 0x1047 */ 0x86A1,0x5A52, /* Array index: 0x1047 */ 0x86AD,0x5A56, /* Array index: 0x1047 */ 0x86D1,0x5A63, /* Array index: 0x1047 */ 0x86D2,0x5A64, /* Array index: 0x1047 */ 0x86D5,0x5A65, /* Array index: 0x1047 */ 0x86D7,0x5A66, /* Array index: 0x1047 */ 0x86DA,0x5A67, /* Array index: 0x1047 */ 0x86DC,0x5A68, /* Array index: 0x1047 */ 0x86E0,0x5A69, /* Array index: 0x1047 */ 0x86E3,0x5A6A, /* Array index: 0x1047 */ 0x86E5,0x5A6B, /* Array index: 0x1047 */ 0x86E7,0x5A6C, /* Array index: 0x1047 */ 0x86FA,0x5A6E, /* Array index: 0x1047 */ 0x86FC,0x5A6F, /* Array index: 0x1047 */ 0x86FD,0x5A70, /* Array index: 0x1047 */ 0x8704,0x5A71, /* Array index: 0x1047 */ 0x8705,0x5A72, /* Array index: 0x1047 */ 0x8707,0x5A73, /* Array index: 0x1047 */ 0x870B,0x5A74, /* Array index: 0x1047 */ 0x8719,0x5A7A, /* Array index: 0x1047 */ 0x871E,0x5A7B, /* Array index: 0x1047 */ 0x871F,0x5A7C, /* Array index: 0x1047 */ 0x8721,0x5A7D, /* Array index: 0x1047 */ 0x8723,0x5A7E, /* Array index: 0x1047 */ 0x8728,0x5B21, /* Array index: 0x1047 */ 0x8743,0x5B2C, /* Array index: 0x1047 */ 0x8745,0x5B2D, /* Array index: 0x1047 */ 0x874D,0x5B2E, /* Array index: 0x1047 */ 0x8758,0x5B2F, /* Array index: 0x1047 */ 0x875D,0x5B30, /* Array index: 0x1047 */ 0x8761,0x5B31, /* Array index: 0x1047 */ 0x8764,0x5B32, /* Array index: 0x1047 */ 0x8765,0x5B33, /* Array index: 0x1047 */ 0x876F,0x5B34, /* Array index: 0x1047 */ 0x8771,0x5B35, /* Array index: 0x1047 */ 0x8772,0x5B36, /* Array index: 0x1047 */ 0x877B,0x5B37, /* Array index: 0x1047 */ 0x8790,0x5B41, /* Array index: 0x1047 */ 0x8793,0x5B42, /* Array index: 0x1047 */ 0x879E,0x5B47, /* Array index: 0x1047 */ 0x87A0,0x5B48, /* Array index: 0x1047 */ 0x87A3,0x5B49, /* Array index: 0x1047 */ 0x87A7,0x5B4A, /* Array index: 0x1047 */ 0x87B1,0x5B4E, /* Array index: 0x1047 */ 0x87B5,0x5B4F, /* Array index: 0x1047 */ 0x87BE,0x5B50, /* Array index: 0x1047 */ 0x87BF,0x5B51, /* Array index: 0x1047 */ 0x87C1,0x5B52, /* Array index: 0x1047 */ 0x87CE,0x5B56, /* Array index: 0x1047 */ 0x87D5,0x5B57, /* Array index: 0x1047 */ 0x87D6,0x5B58, /* Array index: 0x1047 */ 0x87D9,0x5B59, /* Array index: 0x1047 */ 0x87DA,0x5B5A, /* Array index: 0x1047 */ 0x87DC,0x5B5B, /* Array index: 0x1047 */ 0x87DF,0x5B5C, /* Array index: 0x1047 */ 0x87EA,0x5B60, /* Array index: 0x1047 */ 0x87EB,0x5B61, /* Array index: 0x1047 */ 0x87ED,0x5B62, /* Array index: 0x1047 */ 0x87F1,0x5B63, /* Array index: 0x1047 */ 0x87F3,0x5B64, /* Array index: 0x1047 */ 0x87F8,0x5B65, /* Array index: 0x1047 */ 0x87FA,0x5B66, /* Array index: 0x1047 */ 0x87FF,0x5B67, /* Array index: 0x1047 */ 0x8801,0x5B68, /* Array index: 0x1047 */ 0x8803,0x5B69, /* Array index: 0x1047 */ 0x8806,0x5B6A, /* Array index: 0x1047 */ 0x8828,0x5B79, /* Array index: 0x1047 */ 0x882D,0x5B7A, /* Array index: 0x1047 */ 0x882E,0x5B7B, /* Array index: 0x1047 */ 0x8830,0x5B7C, /* Array index: 0x1047 */ 0x8832,0x5B7D, /* Array index: 0x1047 */ 0x8835,0x5B7E, /* Array index: 0x1047 */ 0x883A,0x5C21, /* Array index: 0x1047 */ 0x883C,0x5C22, /* Array index: 0x1047 */ 0x8841,0x5C23, /* Array index: 0x1047 */ 0x8843,0x5C24, /* Array index: 0x1047 */ 0x8845,0x5C25, /* Array index: 0x1047 */ 0x884E,0x5C2A, /* Array index: 0x1047 */ 0x8851,0x5C2B, /* Array index: 0x1047 */ 0x8855,0x5C2C, /* Array index: 0x1047 */ 0x8856,0x5C2D, /* Array index: 0x1047 */ 0x8858,0x5C2E, /* Array index: 0x1047 */ 0x885A,0x5C2F, /* Array index: 0x1047 */ 0x885C,0x5C30, /* Array index: 0x1047 */ 0x885F,0x5C31, /* Array index: 0x1047 */ 0x8860,0x5C32, /* Array index: 0x1047 */ 0x8864,0x5C33, /* Array index: 0x1047 */ 0x8869,0x5C34, /* Array index: 0x1047 */ 0x8871,0x5C35, /* Array index: 0x1047 */ 0x8879,0x5C36, /* Array index: 0x1047 */ 0x887B,0x5C37, /* Array index: 0x1047 */ 0x8880,0x5C38, /* Array index: 0x1047 */ 0x88A8,0x5C3F, /* Array index: 0x1047 */ 0x88AA,0x5C40, /* Array index: 0x1047 */ 0x88BA,0x5C41, /* Array index: 0x1047 */ 0x88BD,0x5C42, /* Array index: 0x1047 */ 0x88BE,0x5C43, /* Array index: 0x1047 */ 0x88C0,0x5C44, /* Array index: 0x1047 */ 0x88DB,0x5C4D, /* Array index: 0x1047 */ 0x88DE,0x5C4E, /* Array index: 0x1047 */ 0x88E7,0x5C4F, /* Array index: 0x1047 */ 0x88F5,0x5C53, /* Array index: 0x1047 */ 0x88F7,0x5C54, /* Array index: 0x1047 */ 0x8901,0x5C55, /* Array index: 0x1047 */ 0x8906,0x5C56, /* Array index: 0x1047 */ 0x8920,0x5C60, /* Array index: 0x1047 */ 0x8935,0x5C67, /* Array index: 0x1047 */ 0x8939,0x5C68, /* Array index: 0x1047 */ 0x893A,0x5C69, /* Array index: 0x1047 */ 0x893E,0x5C6A, /* Array index: 0x1047 */ 0x8940,0x5C6B, /* Array index: 0x1047 */ 0x8942,0x5C6C, /* Array index: 0x1047 */ 0x8945,0x5C6D, /* Array index: 0x1047 */ 0x8946,0x5C6E, /* Array index: 0x1047 */ 0x8949,0x5C6F, /* Array index: 0x1047 */ 0x894F,0x5C70, /* Array index: 0x1047 */ 0x8952,0x5C71, /* Array index: 0x1047 */ 0x8957,0x5C72, /* Array index: 0x1047 */ 0x896B,0x5C79, /* Array index: 0x1047 */ 0x896E,0x5C7A, /* Array index: 0x1047 */ 0x8970,0x5C7B, /* Array index: 0x1047 */ 0x8973,0x5C7C, /* Array index: 0x1047 */ 0x8975,0x5C7D, /* Array index: 0x1047 */ 0x8989,0x5D24, /* Array index: 0x1047 */ 0x898D,0x5D25, /* Array index: 0x1047 */ 0x8990,0x5D26, /* Array index: 0x1047 */ 0x8994,0x5D27, /* Array index: 0x1047 */ 0x8995,0x5D28, /* Array index: 0x1047 */ 0x899B,0x5D29, /* Array index: 0x1047 */ 0x899C,0x5D2A, /* Array index: 0x1047 */ 0x899F,0x5D2B, /* Array index: 0x1047 */ 0x89A0,0x5D2C, /* Array index: 0x1047 */ 0x89A5,0x5D2D, /* Array index: 0x1047 */ 0x89B0,0x5D2E, /* Array index: 0x1047 */ 0x89BC,0x5D33, /* Array index: 0x1047 */ 0x89E5,0x5D39, /* Array index: 0x1047 */ 0x89E9,0x5D3A, /* Array index: 0x1047 */ 0x89EB,0x5D3B, /* Array index: 0x1047 */ 0x89ED,0x5D3C, /* Array index: 0x1047 */ 0x89F1,0x5D3D, /* Array index: 0x1047 */ 0x89F3,0x5D3E, /* Array index: 0x1047 */ 0x89F6,0x5D3F, /* Array index: 0x1047 */ 0x89F9,0x5D40, /* Array index: 0x1047 */ 0x89FD,0x5D41, /* Array index: 0x1047 */ 0x89FF,0x5D42, /* Array index: 0x1047 */ 0x8A04,0x5D43, /* Array index: 0x1047 */ 0x8A05,0x5D44, /* Array index: 0x1047 */ 0x8A07,0x5D45, /* Array index: 0x1047 */ 0x8A0F,0x5D46, /* Array index: 0x1047 */ 0x8A1E,0x5D4B, /* Array index: 0x1047 */ 0x8A20,0x5D4C, /* Array index: 0x1047 */ 0x8A22,0x5D4D, /* Array index: 0x1047 */ 0x8A24,0x5D4E, /* Array index: 0x1047 */ 0x8A26,0x5D4F, /* Array index: 0x1047 */ 0x8A2B,0x5D50, /* Array index: 0x1047 */ 0x8A2C,0x5D51, /* Array index: 0x1047 */ 0x8A2F,0x5D52, /* Array index: 0x1047 */ 0x8A35,0x5D53, /* Array index: 0x1047 */ 0x8A37,0x5D54, /* Array index: 0x1047 */ 0x8A3D,0x5D55, /* Array index: 0x1047 */ 0x8A3E,0x5D56, /* Array index: 0x1047 */ 0x8A40,0x5D57, /* Array index: 0x1047 */ 0x8A43,0x5D58, /* Array index: 0x1047 */ 0x8A45,0x5D59, /* Array index: 0x1047 */ 0x8A47,0x5D5A, /* Array index: 0x1047 */ 0x8A49,0x5D5B, /* Array index: 0x1047 */ 0x8A4D,0x5D5C, /* Array index: 0x1047 */ 0x8A4E,0x5D5D, /* Array index: 0x1047 */ 0x8A53,0x5D5E, /* Array index: 0x1047 */ 0x8A5C,0x5D62, /* Array index: 0x1047 */ 0x8A5D,0x5D63, /* Array index: 0x1047 */ 0x8A61,0x5D64, /* Array index: 0x1047 */ 0x8A65,0x5D65, /* Array index: 0x1047 */ 0x8A67,0x5D66, /* Array index: 0x1047 */ 0x8A83,0x5D70, /* Array index: 0x1047 */ 0x8A86,0x5D71, /* Array index: 0x1047 */ 0x8A8B,0x5D72, /* Array index: 0x1047 */ 0x8A8F,0x5D73, /* Array index: 0x1047 */ 0x8A90,0x5D74, /* Array index: 0x1047 */ 0x8A92,0x5D75, /* Array index: 0x1047 */ 0x8A96,0x5D76, /* Array index: 0x1047 */ 0x8A97,0x5D77, /* Array index: 0x1047 */ 0x8A99,0x5D78, /* Array index: 0x1047 */ 0x8A9F,0x5D79, /* Array index: 0x1047 */ 0x8AA7,0x5D7A, /* Array index: 0x1047 */ 0x8AA9,0x5D7B, /* Array index: 0x1047 */ 0x8AAE,0x5D7C, /* Array index: 0x1047 */ 0x8AAF,0x5D7D, /* Array index: 0x1047 */ 0x8AB3,0x5D7E, /* Array index: 0x1047 */ 0x8AB6,0x5E21, /* Array index: 0x1047 */ 0x8AB7,0x5E22, /* Array index: 0x1047 */ 0x8ABB,0x5E23, /* Array index: 0x1047 */ 0x8ABE,0x5E24, /* Array index: 0x1047 */ 0x8AC3,0x5E25, /* Array index: 0x1047 */ 0x8ADD,0x5E2F, /* Array index: 0x1047 */ 0x8ADF,0x5E30, /* Array index: 0x1047 */ 0x8AEC,0x5E31, /* Array index: 0x1047 */ 0x8AF0,0x5E32, /* Array index: 0x1047 */ 0x8AFC,0x5E36, /* Array index: 0x1047 */ 0x8AFF,0x5E37, /* Array index: 0x1047 */ 0x8B05,0x5E38, /* Array index: 0x1047 */ 0x8B06,0x5E39, /* Array index: 0x1047 */ 0x8B0A,0x5E3F, /* Array index: 0x1047 */ 0x8B0B,0x5E3A, /* Array index: 0x1047 */ 0x8B11,0x5E3B, /* Array index: 0x1047 */ 0x8B1C,0x5E3C, /* Array index: 0x1047 */ 0x8B1E,0x5E3D, /* Array index: 0x1047 */ 0x8B1F,0x5E3E, /* Array index: 0x1047 */ 0x8B2D,0x5E40, /* Array index: 0x1047 */ 0x8B30,0x5E41, /* Array index: 0x1047 */ 0x8B37,0x5E42, /* Array index: 0x1047 */ 0x8B3C,0x5E43, /* Array index: 0x1047 */ 0x8B4D,0x5E4E, /* Array index: 0x1047 */ 0x8B59,0x5E4D, /* Array index: 0x1047 */ 0x8B5E,0x5E4F, /* Array index: 0x1047 */ 0x8B63,0x5E50, /* Array index: 0x1047 */ 0x8B6D,0x5E51, /* Array index: 0x1047 */ 0x8B76,0x5E52, /* Array index: 0x1047 */ 0x8B78,0x5E53, /* Array index: 0x1047 */ 0x8B79,0x5E54, /* Array index: 0x1047 */ 0x8B7C,0x5E55, /* Array index: 0x1047 */ 0x8B7E,0x5E56, /* Array index: 0x1047 */ 0x8B81,0x5E57, /* Array index: 0x1047 */ 0x8B84,0x5E58, /* Array index: 0x1047 */ 0x8B85,0x5E59, /* Array index: 0x1047 */ 0x8B8B,0x5E5A, /* Array index: 0x1047 */ 0x8B8D,0x5E5B, /* Array index: 0x1047 */ 0x8B8F,0x5E5C, /* Array index: 0x1047 */ 0x8B94,0x5E5D, /* Array index: 0x1047 */ 0x8B95,0x5E5E, /* Array index: 0x1047 */ 0x8B9C,0x5E5F, /* Array index: 0x1047 */ 0x8B9E,0x5E60, /* Array index: 0x1047 */ 0x8B9F,0x5E61, /* Array index: 0x1047 */ 0x8C38,0x5E62, /* Array index: 0x1047 */ 0x8C39,0x5E63, /* Array index: 0x1047 */ 0x8C3D,0x5E64, /* Array index: 0x1047 */ 0x8C3E,0x5E65, /* Array index: 0x1047 */ 0x8C45,0x5E66, /* Array index: 0x1047 */ 0x8C47,0x5E67, /* Array index: 0x1047 */ 0x8C49,0x5E68, /* Array index: 0x1047 */ 0x8C4B,0x5E69, /* Array index: 0x1047 */ 0x8C4F,0x5E6A, /* Array index: 0x1047 */ 0x8C51,0x5E6B, /* Array index: 0x1047 */ 0x8C63,0x5E73, /* Array index: 0x1047 */ 0x8C64,0x5E74, /* Array index: 0x1047 */ 0x8C66,0x5E75, /* Array index: 0x1047 */ 0x8C68,0x5E76, /* Array index: 0x1047 */ 0x8C69,0x5E77, /* Array index: 0x1047 */ 0x8C6D,0x5E78, /* Array index: 0x1047 */ 0x8C73,0x5E79, /* Array index: 0x1047 */ 0x8C75,0x5E7A, /* Array index: 0x1047 */ 0x8C76,0x5E7B, /* Array index: 0x1047 */ 0x8C7B,0x5E7C, /* Array index: 0x1047 */ 0x8C7E,0x5E7D, /* Array index: 0x1047 */ 0x8C86,0x5E7E, /* Array index: 0x1047 */ 0x8C87,0x5F21, /* Array index: 0x1047 */ 0x8C8B,0x5F22, /* Array index: 0x1047 */ 0x8C90,0x5F23, /* Array index: 0x1047 */ 0x8C92,0x5F24, /* Array index: 0x1047 */ 0x8C93,0x5F25, /* Array index: 0x1047 */ 0x8C99,0x5F26, /* Array index: 0x1047 */ 0x8C9B,0x5F27, /* Array index: 0x1047 */ 0x8C9C,0x5F28, /* Array index: 0x1047 */ 0x8CA4,0x5F29, /* Array index: 0x1047 */ 0x8CB9,0x5F2A, /* Array index: 0x1047 */ 0x8CBA,0x5F2B, /* Array index: 0x1047 */ 0x8CC5,0x5F2C, /* Array index: 0x1047 */ 0x8CC6,0x5F2D, /* Array index: 0x1047 */ 0x8CC9,0x5F2E, /* Array index: 0x1047 */ 0x8CCB,0x5F2F, /* Array index: 0x1047 */ 0x8CCF,0x5F30, /* Array index: 0x1047 */ 0x8CD5,0x5F32, /* Array index: 0x1047 */ 0x8CD6,0x5F31, /* Array index: 0x1047 */ 0x8CD9,0x5F33, /* Array index: 0x1047 */ 0x8CDD,0x5F34, /* Array index: 0x1047 */ 0x8CE1,0x5F35, /* Array index: 0x1047 */ 0x8CE8,0x5F36, /* Array index: 0x1047 */ 0x8CEC,0x5F37, /* Array index: 0x1047 */ 0x8CEF,0x5F38, /* Array index: 0x1047 */ 0x8CF0,0x5F39, /* Array index: 0x1047 */ 0x8CF2,0x5F3A, /* Array index: 0x1047 */ 0x8CF5,0x5F3B, /* Array index: 0x1047 */ 0x8CF7,0x5F3C, /* Array index: 0x1047 */ 0x8CF8,0x5F3D, /* Array index: 0x1047 */ 0x8CFE,0x5F3E, /* Array index: 0x1047 */ 0x8CFF,0x5F3F, /* Array index: 0x1047 */ 0x8D01,0x5F40, /* Array index: 0x1047 */ 0x8D03,0x5F41, /* Array index: 0x1047 */ 0x8D09,0x5F42, /* Array index: 0x1047 */ 0x8D12,0x5F43, /* Array index: 0x1047 */ 0x8D17,0x5F44, /* Array index: 0x1047 */ 0x8D1B,0x5F45, /* Array index: 0x1047 */ 0x8D65,0x5F46, /* Array index: 0x1047 */ 0x8D69,0x5F47, /* Array index: 0x1047 */ 0x8D6C,0x5F48, /* Array index: 0x1047 */ 0x8D6E,0x5F49, /* Array index: 0x1047 */ 0x8D7F,0x5F4A, /* Array index: 0x1047 */ 0x8D82,0x5F4B, /* Array index: 0x1047 */ 0x8D84,0x5F4C, /* Array index: 0x1047 */ 0x8D88,0x5F4D, /* Array index: 0x1047 */ 0x8D8D,0x5F4E, /* Array index: 0x1047 */ 0x8D90,0x5F4F, /* Array index: 0x1047 */ 0x8D91,0x5F50, /* Array index: 0x1047 */ 0x8D95,0x5F51, /* Array index: 0x1047 */ 0x8DA6,0x5F55, /* Array index: 0x1047 */ 0x8DAB,0x5F56, /* Array index: 0x1047 */ 0x8DAC,0x5F57, /* Array index: 0x1047 */ 0x8DAF,0x5F58, /* Array index: 0x1047 */ 0x8DB2,0x5F59, /* Array index: 0x1047 */ 0x8DB5,0x5F5A, /* Array index: 0x1047 */ 0x8DB7,0x5F5B, /* Array index: 0x1047 */ 0x8DB9,0x5F5C, /* Array index: 0x1047 */ 0x8DBB,0x5F5D, /* Array index: 0x1047 */ 0x8DBC,0x5F6F, /* Array index: 0x1047 */ 0x8DC0,0x5F5E, /* Array index: 0x1047 */ 0x8DCE,0x5F64, /* Array index: 0x1047 */ 0x8DD1,0x5F65, /* Array index: 0x1047 */ 0x8DD4,0x5F66, /* Array index: 0x1047 */ 0x8DD5,0x5F67, /* Array index: 0x1047 */ 0x8DD7,0x5F68, /* Array index: 0x1047 */ 0x8DD9,0x5F69, /* Array index: 0x1047 */ 0x8DE4,0x5F6A, /* Array index: 0x1047 */ 0x8DE5,0x5F6B, /* Array index: 0x1047 */ 0x8DE7,0x5F6C, /* Array index: 0x1047 */ 0x8DEC,0x5F6D, /* Array index: 0x1047 */ 0x8DFD,0x5F73, /* Array index: 0x1047 */ 0x8E01,0x5F74, /* Array index: 0x1047 */ 0x8E0B,0x5F78, /* Array index: 0x1047 */ 0x8E11,0x5F79, /* Array index: 0x1047 */ 0x8E14,0x5F7A, /* Array index: 0x1047 */ 0x8E16,0x5F7B, /* Array index: 0x1047 */ 0x8E31,0x6024, /* Array index: 0x1047 */ 0x8E33,0x6025, /* Array index: 0x1047 */ 0x8E3D,0x602A, /* Array index: 0x1047 */ 0x8E40,0x602B, /* Array index: 0x1047 */ 0x8E41,0x602C, /* Array index: 0x1047 */ 0x8E54,0x6031, /* Array index: 0x1047 */ 0x8E69,0x6038, /* Array index: 0x1047 */ 0x8E82,0x6041, /* Array index: 0x1047 */ 0x8E83,0x6042, /* Array index: 0x1047 */ 0x8E89,0x6043, /* Array index: 0x1047 */ 0x8E90,0x6044, /* Array index: 0x1047 */ 0x8E92,0x6045, /* Array index: 0x1047 */ 0x8E95,0x6046, /* Array index: 0x1047 */ 0x8EA2,0x604B, /* Array index: 0x1047 */ 0x8EA7,0x604C, /* Array index: 0x1047 */ 0x8EA9,0x604D, /* Array index: 0x1047 */ 0x8EAD,0x604E, /* Array index: 0x1047 */ 0x8EAE,0x604F, /* Array index: 0x1047 */ 0x8EB3,0x6050, /* Array index: 0x1047 */ 0x8EB5,0x6051, /* Array index: 0x1047 */ 0x8EBA,0x6052, /* Array index: 0x1047 */ 0x8EBB,0x6053, /* Array index: 0x1047 */ 0x8EC7,0x6058, /* Array index: 0x1047 */ 0x8ECF,0x6059, /* Array index: 0x1047 */ 0x8ED1,0x605A, /* Array index: 0x1047 */ 0x8ED4,0x605B, /* Array index: 0x1047 */ 0x8EDC,0x605C, /* Array index: 0x1047 */ 0x8EE8,0x605D, /* Array index: 0x1047 */ 0x8EF7,0x6061, /* Array index: 0x1047 */ 0x8EF9,0x6062, /* Array index: 0x1047 */ 0x8EFA,0x6063, /* Array index: 0x1047 */ 0x8F00,0x6065, /* Array index: 0x1047 */ 0x8F02,0x6066, /* Array index: 0x1047 */ 0x8F07,0x6067, /* Array index: 0x1047 */ 0x8F08,0x6068, /* Array index: 0x1047 */ 0x8F0F,0x6069, /* Array index: 0x1047 */ 0x8F10,0x606A, /* Array index: 0x1047 */ 0x8F1E,0x606E, /* Array index: 0x1047 */ 0x8F20,0x606F, /* Array index: 0x1047 */ 0x8F21,0x6070, /* Array index: 0x1047 */ 0x8F23,0x6071, /* Array index: 0x1047 */ 0x8F25,0x6072, /* Array index: 0x1047 */ 0x8F27,0x6073, /* Array index: 0x1047 */ 0x8F28,0x6074, /* Array index: 0x1047 */ 0x8F3A,0x607C, /* Array index: 0x1047 */ 0x8F40,0x607D, /* Array index: 0x1047 */ 0x8F41,0x607E, /* Array index: 0x1047 */ 0x8F43,0x6121, /* Array index: 0x1047 */ 0x8F47,0x6122, /* Array index: 0x1047 */ 0x8F58,0x6129, /* Array index: 0x1047 */ 0x8F5D,0x612A, /* Array index: 0x1047 */ 0x8F5E,0x612B, /* Array index: 0x1047 */ 0x8F65,0x612C, /* Array index: 0x1047 */ 0x8F9D,0x612D, /* Array index: 0x1047 */ 0x8FB5,0x6133, /* Array index: 0x1047 */ 0x8FB6,0x6134, /* Array index: 0x1047 */ 0x8FB8,0x6135, /* Array index: 0x1047 */ 0x8FBE,0x6136, /* Array index: 0x1047 */ 0x8FC0,0x6137, /* Array index: 0x1047 */ 0x8FC1,0x6138, /* Array index: 0x1047 */ 0x8FC6,0x6139, /* Array index: 0x1047 */ 0x8FCA,0x613A, /* Array index: 0x1047 */ 0x8FCB,0x613B, /* Array index: 0x1047 */ 0x8FCD,0x613C, /* Array index: 0x1047 */ 0x8FD0,0x613D, /* Array index: 0x1047 */ 0x8FD2,0x613E, /* Array index: 0x1047 */ 0x8FD3,0x613F, /* Array index: 0x1047 */ 0x8FD5,0x6140, /* Array index: 0x1047 */ 0x8FE0,0x6141, /* Array index: 0x1047 */ 0x8FE3,0x6142, /* Array index: 0x1047 */ 0x8FE4,0x6143, /* Array index: 0x1047 */ 0x8FE8,0x6144, /* Array index: 0x1047 */ 0x8FEE,0x6145, /* Array index: 0x1047 */ 0x8FF1,0x6146, /* Array index: 0x1047 */ 0x8FF5,0x6147, /* Array index: 0x1047 */ 0x8FF6,0x6148, /* Array index: 0x1047 */ 0x8FFB,0x6149, /* Array index: 0x1047 */ 0x8FFE,0x614A, /* Array index: 0x1047 */ 0x9002,0x614B, /* Array index: 0x1047 */ 0x9004,0x614C, /* Array index: 0x1047 */ 0x9008,0x614D, /* Array index: 0x1047 */ 0x900C,0x614E, /* Array index: 0x1047 */ 0x9018,0x614F, /* Array index: 0x1047 */ 0x901B,0x6150, /* Array index: 0x1047 */ 0x9033,0x6157, /* Array index: 0x1047 */ 0x9034,0x6158, /* Array index: 0x1047 */ 0x9037,0x6159, /* Array index: 0x1047 */ 0x903F,0x615A, /* Array index: 0x1047 */ 0x9043,0x615B, /* Array index: 0x1047 */ 0x9044,0x615C, /* Array index: 0x1047 */ 0x904C,0x615D, /* Array index: 0x1047 */ 0x905B,0x615E, /* Array index: 0x1047 */ 0x905D,0x615F, /* Array index: 0x1047 */ 0x9062,0x6160, /* Array index: 0x1047 */ 0x9066,0x6161, /* Array index: 0x1047 */ 0x9067,0x6162, /* Array index: 0x1047 */ 0x906C,0x6163, /* Array index: 0x1047 */ 0x9070,0x6164, /* Array index: 0x1047 */ 0x9074,0x6165, /* Array index: 0x1047 */ 0x9079,0x6166, /* Array index: 0x1047 */ 0x9085,0x6167, /* Array index: 0x1047 */ 0x9088,0x6168, /* Array index: 0x1047 */ 0x908B,0x6169, /* Array index: 0x1047 */ 0x908C,0x616A, /* Array index: 0x1047 */ 0x908E,0x616B, /* Array index: 0x1047 */ 0x9090,0x616C, /* Array index: 0x1047 */ 0x90A5,0x6175, /* Array index: 0x1047 */ 0x90BD,0x617B, /* Array index: 0x1047 */ 0x90BE,0x617D, /* Array index: 0x1047 */ 0x90CC,0x617C, /* Array index: 0x1047 */ 0x90D2,0x622D, /* Array index: 0x1047 */ 0x90E5,0x622C, /* Array index: 0x1047 */ 0x90EB,0x622F, /* Array index: 0x1047 */ 0x90EF,0x6230, /* Array index: 0x1047 */ 0x90F0,0x6231, /* Array index: 0x1047 */ 0x90F4,0x6232, /* Array index: 0x1047 */ 0x90F6,0x622E, /* Array index: 0x1047 */ 0x910D,0x623A, /* Array index: 0x1047 */ 0x9110,0x623B, /* Array index: 0x1047 */ 0x912E,0x6249, /* Array index: 0x1047 */ 0x912F,0x624A, /* Array index: 0x1047 */ 0x9131,0x624B, /* Array index: 0x1047 */ 0x9134,0x624C, /* Array index: 0x1047 */ 0x9143,0x6253, /* Array index: 0x1047 */ 0x9147,0x6254, /* Array index: 0x1047 */ 0x9148,0x6255, /* Array index: 0x1047 */ 0x914F,0x6256, /* Array index: 0x1047 */ 0x9153,0x6257, /* Array index: 0x1047 */ 0x9161,0x625C, /* Array index: 0x1047 */ 0x9164,0x625D, /* Array index: 0x1047 */ 0x9167,0x625E, /* Array index: 0x1047 */ 0x916D,0x625F, /* Array index: 0x1047 */ 0x9174,0x6260, /* Array index: 0x1047 */ 0x9181,0x6264, /* Array index: 0x1047 */ 0x9183,0x6265, /* Array index: 0x1047 */ 0x9185,0x6266, /* Array index: 0x1047 */ 0x9186,0x6267, /* Array index: 0x1047 */ 0x918A,0x6268, /* Array index: 0x1047 */ 0x918E,0x6269, /* Array index: 0x1047 */ 0x9198,0x626E, /* Array index: 0x1047 */ 0x919E,0x626F, /* Array index: 0x1047 */ 0x91A1,0x6270, /* Array index: 0x1047 */ 0x91A6,0x6271, /* Array index: 0x1047 */ 0x91A8,0x6272, /* Array index: 0x1047 */ 0x91B6,0x627A, /* Array index: 0x1047 */ 0x91D3,0x6324, /* Array index: 0x1047 */ 0x91D4,0x6325, /* Array index: 0x1047 */ 0x91D7,0x6326, /* Array index: 0x1047 */ 0x91D9,0x6327, /* Array index: 0x1047 */ 0x91DA,0x6328, /* Array index: 0x1047 */ 0x91DE,0x6329, /* Array index: 0x1047 */ 0x91E4,0x632A, /* Array index: 0x1047 */ 0x91E5,0x632B, /* Array index: 0x1047 */ 0x91F7,0x6334, /* Array index: 0x1047 */ 0x91F9,0x6335, /* Array index: 0x1047 */ 0x91FB,0x6336, /* Array index: 0x1047 */ 0x91FD,0x6337, /* Array index: 0x1047 */ 0x9210,0x6341, /* Array index: 0x1047 */ 0x9212,0x6342, /* Array index: 0x1047 */ 0x9213,0x6343, /* Array index: 0x1047 */ 0x9216,0x6344, /* Array index: 0x1047 */ 0x9218,0x6345, /* Array index: 0x1047 */ 0x921C,0x6346, /* Array index: 0x1047 */ 0x921D,0x6347, /* Array index: 0x1047 */ 0x9233,0x6350, /* Array index: 0x1047 */ 0x924A,0x635D, /* Array index: 0x1047 */ 0x9258,0x6362, /* Array index: 0x1047 */ 0x9259,0x6363, /* Array index: 0x1047 */ 0x925C,0x6364, /* Array index: 0x1047 */ 0x925D,0x6365, /* Array index: 0x1047 */ 0x9260,0x6366, /* Array index: 0x1047 */ 0x9261,0x6367, /* Array index: 0x1047 */ 0x9292,0x637D, /* Array index: 0x1047 */ 0x9297,0x637E, /* Array index: 0x1047 */ 0x9299,0x6421, /* Array index: 0x1047 */ 0x929F,0x6422, /* Array index: 0x1047 */ 0x92A0,0x6423, /* Array index: 0x1047 */ 0x92AB,0x6428, /* Array index: 0x1047 */ 0x92AF,0x6429, /* Array index: 0x1047 */ 0x92B2,0x642A, /* Array index: 0x1047 */ 0x92B6,0x642B, /* Array index: 0x1047 */ 0x92D3,0x643F, /* Array index: 0x1047 */ 0x92EC,0x644D, /* Array index: 0x1047 */ 0x92EE,0x644E, /* Array index: 0x1047 */ 0x92F0,0x644F, /* Array index: 0x1047 */ 0x92F9,0x6450, /* Array index: 0x1047 */ 0x92FB,0x6451, /* Array index: 0x1047 */ 0x92FF,0x6452, /* Array index: 0x1047 */ 0x9300,0x6453, /* Array index: 0x1047 */ 0x9302,0x6454, /* Array index: 0x1047 */ 0x9308,0x6455, /* Array index: 0x1047 */ 0x930D,0x6456, /* Array index: 0x1047 */ 0x9311,0x6457, /* Array index: 0x1047 */ 0x9314,0x6458, /* Array index: 0x1047 */ 0x9315,0x6459, /* Array index: 0x1047 */ 0x9355,0x646E, /* Array index: 0x1047 */ 0x9357,0x646F, /* Array index: 0x1047 */ 0x9358,0x6470, /* Array index: 0x1047 */ 0x935A,0x6471, /* Array index: 0x1047 */ 0x935E,0x6472, /* Array index: 0x1047 */ 0x9364,0x6473, /* Array index: 0x1047 */ 0x9365,0x6474, /* Array index: 0x1047 */ 0x9367,0x6475, /* Array index: 0x1047 */ 0x9369,0x6476, /* Array index: 0x1047 */ 0x936A,0x6477, /* Array index: 0x1047 */ 0x937A,0x6521, /* Array index: 0x1047 */ 0x9388,0x6527, /* Array index: 0x1047 */ 0x938A,0x6528, /* Array index: 0x1047 */ 0x938B,0x6529, /* Array index: 0x1047 */ 0x938D,0x652A, /* Array index: 0x1047 */ 0x938F,0x652B, /* Array index: 0x1047 */ 0x9392,0x652C, /* Array index: 0x1047 */ 0x9395,0x652D, /* Array index: 0x1047 */ 0x9398,0x652E, /* Array index: 0x1047 */ 0x939B,0x652F, /* Array index: 0x1047 */ 0x939E,0x6530, /* Array index: 0x1047 */ 0x93A1,0x6531, /* Array index: 0x1047 */ 0x93A3,0x6532, /* Array index: 0x1047 */ 0x93A4,0x6533, /* Array index: 0x1047 */ 0x93A6,0x6534, /* Array index: 0x1047 */ 0x93A8,0x6535, /* Array index: 0x1047 */ 0x93A9,0x653B, /* Array index: 0x1047 */ 0x93AB,0x6536, /* Array index: 0x1047 */ 0x93BA,0x653A, /* Array index: 0x1047 */ 0x93C1,0x653C, /* Array index: 0x1047 */ 0x93D3,0x6546, /* Array index: 0x1047 */ 0x93D9,0x6547, /* Array index: 0x1047 */ 0x93DC,0x6548, /* Array index: 0x1047 */ 0x93DE,0x6549, /* Array index: 0x1047 */ 0x93DF,0x654A, /* Array index: 0x1047 */ 0x93E2,0x654B, /* Array index: 0x1047 */ 0x93E6,0x654C, /* Array index: 0x1047 */ 0x93E7,0x654D, /* Array index: 0x1047 */ 0x9401,0x6554, /* Array index: 0x1047 */ 0x9402,0x6555, /* Array index: 0x1047 */ 0x9404,0x6556, /* Array index: 0x1047 */ 0x9408,0x6557, /* Array index: 0x1047 */ 0x9409,0x6558, /* Array index: 0x1047 */ 0x941F,0x655F, /* Array index: 0x1047 */ 0x943B,0x6566, /* Array index: 0x1047 */ 0x943D,0x6568, /* Array index: 0x1047 */ 0x943F,0x6567, /* Array index: 0x1047 */ 0x9443,0x6569, /* Array index: 0x1047 */ 0x9445,0x656A, /* Array index: 0x1047 */ 0x9448,0x656B, /* Array index: 0x1047 */ 0x944A,0x656C, /* Array index: 0x1047 */ 0x944C,0x656D, /* Array index: 0x1047 */ 0x9455,0x656E, /* Array index: 0x1047 */ 0x9459,0x656F, /* Array index: 0x1047 */ 0x945C,0x6570, /* Array index: 0x1047 */ 0x945F,0x6571, /* Array index: 0x1047 */ 0x9461,0x6572, /* Array index: 0x1047 */ 0x9463,0x6573, /* Array index: 0x1047 */ 0x9468,0x6574, /* Array index: 0x1047 */ 0x9483,0x657C, /* Array index: 0x1047 */ 0x9484,0x657B, /* Array index: 0x1047 */ 0x9578,0x657D, /* Array index: 0x1047 */ 0x9579,0x657E, /* Array index: 0x1047 */ 0x957E,0x6621, /* Array index: 0x1047 */ 0x9584,0x6622, /* Array index: 0x1047 */ 0x9588,0x6623, /* Array index: 0x1047 */ 0x95A6,0x662B, /* Array index: 0x1047 */ 0x95A9,0x662C, /* Array index: 0x1047 */ 0x95AB,0x662D, /* Array index: 0x1047 */ 0x95AC,0x662E, /* Array index: 0x1047 */ 0x95B4,0x662F, /* Array index: 0x1047 */ 0x95B6,0x6630, /* Array index: 0x1047 */ 0x95BA,0x6631, /* Array index: 0x1047 */ 0x95BD,0x6632, /* Array index: 0x1047 */ 0x95BF,0x6633, /* Array index: 0x1047 */ 0x95C6,0x6634, /* Array index: 0x1047 */ 0x95C8,0x6635, /* Array index: 0x1047 */ 0x95C9,0x6636, /* Array index: 0x1047 */ 0x95CB,0x6637, /* Array index: 0x1047 */ 0x95E4,0x6642, /* Array index: 0x1047 */ 0x95E6,0x6643, /* Array index: 0x1047 */ 0x961D,0x6644, /* Array index: 0x1047 */ 0x961E,0x6645, /* Array index: 0x1047 */ 0x962C,0x664A, /* Array index: 0x1047 */ 0x9631,0x664B, /* Array index: 0x1047 */ 0x9633,0x664C, /* Array index: 0x1047 */ 0x9641,0x6653, /* Array index: 0x1047 */ 0x9652,0x6654, /* Array index: 0x1047 */ 0x9661,0x6659, /* Array index: 0x1047 */ 0x966E,0x665A, /* Array index: 0x1047 */ 0x9674,0x665B, /* Array index: 0x1047 */ 0x9689,0x6664, /* Array index: 0x1047 */ 0x9691,0x6665, /* Array index: 0x1047 */ 0x9696,0x6666, /* Array index: 0x1047 */ 0x969A,0x6667, /* Array index: 0x1047 */ 0x969D,0x6668, /* Array index: 0x1047 */ 0x969F,0x6669, /* Array index: 0x1047 */ 0x96A9,0x666D, /* Array index: 0x1047 */ 0x96AE,0x666E, /* Array index: 0x1047 */ 0x96AF,0x666F, /* Array index: 0x1047 */ 0x96B3,0x6670, /* Array index: 0x1047 */ 0x96BA,0x6671, /* Array index: 0x1047 */ 0x96CA,0x6672, /* Array index: 0x1047 */ 0x96D2,0x6673, /* Array index: 0x1047 */ 0x96D8,0x6675, /* Array index: 0x1047 */ 0x96DA,0x6676, /* Array index: 0x1047 */ 0x96E9,0x667A, /* Array index: 0x1047 */ 0x96EF,0x667B, /* Array index: 0x1047 */ 0x96F1,0x667C, /* Array index: 0x1047 */ 0x96FA,0x667D, /* Array index: 0x1047 */ 0x9702,0x667E, /* Array index: 0x1047 */ 0x9703,0x6721, /* Array index: 0x1047 */ 0x9705,0x6722, /* Array index: 0x1047 */ 0x9709,0x6723, /* Array index: 0x1047 */ 0x971A,0x6724, /* Array index: 0x1047 */ 0x971B,0x6725, /* Array index: 0x1047 */ 0x971D,0x6726, /* Array index: 0x1047 */ 0x9728,0x672A, /* Array index: 0x1047 */ 0x9731,0x672B, /* Array index: 0x1047 */ 0x9733,0x672C, /* Array index: 0x1047 */ 0x9741,0x672D, /* Array index: 0x1047 */ 0x9743,0x672E, /* Array index: 0x1047 */ 0x974A,0x672F, /* Array index: 0x1047 */ 0x974E,0x6730, /* Array index: 0x1047 */ 0x974F,0x6731, /* Array index: 0x1047 */ 0x9755,0x6732, /* Array index: 0x1047 */ 0x9763,0x6737, /* Array index: 0x1047 */ 0x9767,0x6738, /* Array index: 0x1047 */ 0x976A,0x6739, /* Array index: 0x1047 */ 0x976E,0x673A, /* Array index: 0x1047 */ 0x9773,0x673B, /* Array index: 0x1047 */ 0x977B,0x673F, /* Array index: 0x1047 */ 0x977D,0x6740, /* Array index: 0x1047 */ 0x977F,0x6741, /* Array index: 0x1047 */ 0x9780,0x6742, /* Array index: 0x1047 */ 0x9789,0x6743, /* Array index: 0x1047 */ 0x979E,0x6749, /* Array index: 0x1047 */ 0x979F,0x674A, /* Array index: 0x1047 */ 0x97A2,0x674B, /* Array index: 0x1047 */ 0x97AC,0x674C, /* Array index: 0x1047 */ 0x97AE,0x674D, /* Array index: 0x1047 */ 0x97B1,0x674E, /* Array index: 0x1047 */ 0x97B2,0x674F, /* Array index: 0x1047 */ 0x97D4,0x6763, /* Array index: 0x1047 */ 0x97E4,0x676C, /* Array index: 0x1047 */ 0x97EF,0x676D, /* Array index: 0x1047 */ 0x97F1,0x676E, /* Array index: 0x1047 */ 0x97F4,0x676F, /* Array index: 0x1047 */ 0x97F7,0x6770, /* Array index: 0x1047 */ 0x97F8,0x6771, /* Array index: 0x1047 */ 0x97FA,0x6772, /* Array index: 0x1047 */ 0x9807,0x6773, /* Array index: 0x1047 */ 0x980A,0x6774, /* Array index: 0x1047 */ 0x980D,0x6776, /* Array index: 0x1047 */ 0x980E,0x6777, /* Array index: 0x1047 */ 0x9814,0x6778, /* Array index: 0x1047 */ 0x9816,0x6779, /* Array index: 0x1047 */ 0x9819,0x6775, /* Array index: 0x1047 */ 0x981C,0x677A, /* Array index: 0x1047 */ 0x981E,0x677B, /* Array index: 0x1047 */ 0x9820,0x677C, /* Array index: 0x1047 */ 0x9823,0x677D, /* Array index: 0x1047 */ 0x9825,0x6828, /* Array index: 0x1047 */ 0x9826,0x677E, /* Array index: 0x1047 */ 0x982B,0x6821, /* Array index: 0x1047 */ 0x983E,0x6829, /* Array index: 0x1047 */ 0x9844,0x682A, /* Array index: 0x1047 */ 0x9847,0x682B, /* Array index: 0x1047 */ 0x984A,0x682C, /* Array index: 0x1047 */ 0x986A,0x6838, /* Array index: 0x1047 */ 0x986C,0x6839, /* Array index: 0x1047 */ 0x98AB,0x683A, /* Array index: 0x1047 */ 0x98AD,0x683B, /* Array index: 0x1047 */ 0x98AE,0x683C, /* Array index: 0x1047 */ 0x98B0,0x683D, /* Array index: 0x1047 */ 0x98B4,0x683E, /* Array index: 0x1047 */ 0x98BF,0x6843, /* Array index: 0x1047 */ 0x98C2,0x6844, /* Array index: 0x1047 */ 0x98C5,0x6845, /* Array index: 0x1047 */ 0x98C8,0x6846, /* Array index: 0x1047 */ 0x98CC,0x6847, /* Array index: 0x1047 */ 0x98E1,0x6848, /* Array index: 0x1047 */ 0x98EA,0x684D, /* Array index: 0x1047 */ 0x98F3,0x684E, /* Array index: 0x1047 */ 0x98F6,0x684F, /* Array index: 0x1047 */ 0x9902,0x6850, /* Array index: 0x1047 */ 0x9907,0x6851, /* Array index: 0x1047 */ 0x9908,0x6852, /* Array index: 0x1047 */ 0x9911,0x6853, /* Array index: 0x1047 */ 0x991F,0x685A, /* Array index: 0x1047 */ 0x9922,0x685B, /* Array index: 0x1047 */ 0x9926,0x685C, /* Array index: 0x1047 */ 0x9927,0x685D, /* Array index: 0x1047 */ 0x992B,0x685E, /* Array index: 0x1047 */ 0x9940,0x6868, /* Array index: 0x1047 */ 0x9941,0x6869, /* Array index: 0x1047 */ 0x994D,0x686D, /* Array index: 0x1047 */ 0x994E,0x686E, /* Array index: 0x1047 */ 0x9954,0x686F, /* Array index: 0x1047 */ 0x999B,0x6877, /* Array index: 0x1047 */ 0x999D,0x6878, /* Array index: 0x1047 */ 0x999F,0x6879, /* Array index: 0x1047 */ 0x99A6,0x687A, /* Array index: 0x1047 */ 0x99B5,0x687E, /* Array index: 0x1047 */ 0x99B9,0x6921, /* Array index: 0x1047 */ 0x99BA,0x6922, /* Array index: 0x1047 */ 0x99BD,0x6923, /* Array index: 0x1047 */ 0x99BF,0x6924, /* Array index: 0x1047 */ 0x99C3,0x6925, /* Array index: 0x1047 */ 0x99C9,0x6926, /* Array index: 0x1047 */ 0x99D3,0x6927, /* Array index: 0x1047 */ 0x99D4,0x6928, /* Array index: 0x1047 */ 0x99D9,0x6929, /* Array index: 0x1047 */ 0x99DA,0x692A, /* Array index: 0x1047 */ 0x99DC,0x692B, /* Array index: 0x1047 */ 0x99DE,0x692C, /* Array index: 0x1047 */ 0x99E7,0x692D, /* Array index: 0x1047 */ 0x99F0,0x6931, /* Array index: 0x1047 */ 0x99F4,0x6932, /* Array index: 0x1047 */ 0x99F5,0x6933, /* Array index: 0x1047 */ 0x99F9,0x6934, /* Array index: 0x1047 */ 0x99FD,0x6935, /* Array index: 0x1047 */ 0x99FE,0x6936, /* Array index: 0x1047 */ 0x9A0B,0x693A, /* Array index: 0x1047 */ 0x9A0C,0x693B, /* Array index: 0x1047 */ 0x9A10,0x693C, /* Array index: 0x1047 */ 0x9A11,0x693D, /* Array index: 0x1047 */ 0x9A16,0x693E, /* Array index: 0x1047 */ 0x9A1E,0x693F, /* Array index: 0x1047 */ 0x9A27,0x6944, /* Array index: 0x1047 */ 0x9A2D,0x6945, /* Array index: 0x1047 */ 0x9A2E,0x6946, /* Array index: 0x1047 */ 0x9A33,0x6947, /* Array index: 0x1047 */ 0x9A35,0x6948, /* Array index: 0x1047 */ 0x9A36,0x6949, /* Array index: 0x1047 */ 0x9A38,0x694A, /* Array index: 0x1047 */ 0x9A41,0x694C, /* Array index: 0x1047 */ 0x9A44,0x694D, /* Array index: 0x1047 */ 0x9A47,0x694B, /* Array index: 0x1047 */ 0x9A51,0x6952, /* Array index: 0x1047 */ 0x9A54,0x6953, /* Array index: 0x1047 */ 0x9A56,0x6954, /* Array index: 0x1047 */ 0x9A5D,0x6955, /* Array index: 0x1047 */ 0x9AAA,0x6956, /* Array index: 0x1047 */ 0x9AAC,0x6957, /* Array index: 0x1047 */ 0x9AAE,0x6958, /* Array index: 0x1047 */ 0x9AAF,0x6959, /* Array index: 0x1047 */ 0x9AB9,0x695E, /* Array index: 0x1047 */ 0x9ABB,0x695F, /* Array index: 0x1047 */ 0x9ABE,0x6960, /* Array index: 0x1047 */ 0x9ABF,0x6961, /* Array index: 0x1047 */ 0x9AC1,0x6962, /* Array index: 0x1047 */ 0x9AC3,0x6963, /* Array index: 0x1047 */ 0x9AC6,0x6964, /* Array index: 0x1047 */ 0x9AC8,0x6965, /* Array index: 0x1047 */ 0x9ACE,0x6966, /* Array index: 0x1047 */ 0x9AD0,0x6967, /* Array index: 0x1047 */ 0x9AD2,0x6968, /* Array index: 0x1047 */ 0x9ADB,0x696C, /* Array index: 0x1047 */ 0x9ADC,0x696D, /* Array index: 0x1047 */ 0x9AE0,0x696E, /* Array index: 0x1047 */ 0x9AE4,0x696F, /* Array index: 0x1047 */ 0x9AE5,0x6970, /* Array index: 0x1047 */ 0x9AE7,0x6971, /* Array index: 0x1047 */ 0x9AE9,0x6972, /* Array index: 0x1047 */ 0x9AEC,0x6973, /* Array index: 0x1047 */ 0x9AF2,0x6974, /* Array index: 0x1047 */ 0x9AF3,0x6975, /* Array index: 0x1047 */ 0x9AF5,0x6976, /* Array index: 0x1047 */ 0x9AF9,0x6977, /* Array index: 0x1047 */ 0x9AFA,0x6978, /* Array index: 0x1047 */ 0x9B16,0x6A2B, /* Array index: 0x1047 */ 0x9B19,0x6A2C, /* Array index: 0x1047 */ 0x9B1B,0x6A2D, /* Array index: 0x1047 */ 0x9B1C,0x6A2E, /* Array index: 0x1047 */ 0x9B20,0x6A2F, /* Array index: 0x1047 */ 0x9B26,0x6A30, /* Array index: 0x1047 */ 0x9B2B,0x6A31, /* Array index: 0x1047 */ 0x9B2D,0x6A32, /* Array index: 0x1047 */ 0x9B3D,0x6A39, /* Array index: 0x1047 */ 0x9B48,0x6A3A, /* Array index: 0x1047 */ 0x9B4B,0x6A3B, /* Array index: 0x1047 */ 0x9B4C,0x6A3C, /* Array index: 0x1047 */ 0x9B5B,0x6A40, /* Array index: 0x1047 */ 0x9B5E,0x6A41, /* Array index: 0x1047 */ 0x9B61,0x6A42, /* Array index: 0x1047 */ 0x9B63,0x6A43, /* Array index: 0x1047 */ 0x9B65,0x6A44, /* Array index: 0x1047 */ 0x9B66,0x6A45, /* Array index: 0x1047 */ 0x9B73,0x6A4C, /* Array index: 0x1047 */ 0x9B7F,0x6A51, /* Array index: 0x1047 */ 0x9B80,0x6A52, /* Array index: 0x1047 */ 0x9B94,0x6A5D, /* Array index: 0x1047 */ 0x9B9A,0x6A5E, /* Array index: 0x1047 */ 0x9B9D,0x6A5F, /* Array index: 0x1047 */ 0x9B9E,0x6A60, /* Array index: 0x1047 */ 0x9BA6,0x6A61, /* Array index: 0x1047 */ 0x9BA7,0x6A62, /* Array index: 0x1047 */ 0x9BA9,0x6A63, /* Array index: 0x1047 */ 0x9BAC,0x6A64, /* Array index: 0x1047 */ 0x9BB7,0x6A68, /* Array index: 0x1047 */ 0x9BB8,0x6A69, /* Array index: 0x1047 */ 0x9BC7,0x6A6F, /* Array index: 0x1047 */ 0x9BC8,0x6A70, /* Array index: 0x1047 */ 0x9BCE,0x6A71, /* Array index: 0x1047 */ 0x9BD0,0x6A72, /* Array index: 0x1047 */ 0x9BD7,0x6A73, /* Array index: 0x1047 */ 0x9BD8,0x6A74, /* Array index: 0x1047 */ 0x9BDD,0x6A75, /* Array index: 0x1047 */ 0x9BDF,0x6A76, /* Array index: 0x1047 */ 0x9BE5,0x6A77, /* Array index: 0x1047 */ 0x9BE7,0x6A78, /* Array index: 0x1047 */ 0x9BEA,0x6A79, /* Array index: 0x1047 */ 0x9BEB,0x6A7A, /* Array index: 0x1047 */ 0x9BEF,0x6A7B, /* Array index: 0x1047 */ 0x9BF3,0x6A7C, /* Array index: 0x1047 */ 0x9BFD,0x6B23, /* Array index: 0x1047 */ 0x9BFF,0x6B24, /* Array index: 0x1047 */ 0x9C00,0x6B25, /* Array index: 0x1047 */ 0x9C02,0x6B26, /* Array index: 0x1047 */ 0x9C0B,0x6B27, /* Array index: 0x1047 */ 0x9C0F,0x6B28, /* Array index: 0x1047 */ 0x9C11,0x6B29, /* Array index: 0x1047 */ 0x9C31,0x6B37, /* Array index: 0x1047 */ 0x9C3D,0x6B3B, /* Array index: 0x1047 */ 0x9C49,0x6B40, /* Array index: 0x1047 */ 0x9C4A,0x6B41, /* Array index: 0x1047 */ 0x9C63,0x6B4D, /* Array index: 0x1047 */ 0x9C6E,0x6B53, /* Array index: 0x1047 */ 0x9C70,0x6B54, /* Array index: 0x1047 */ 0x9C72,0x6B55, /* Array index: 0x1047 */ 0x9C75,0x6B56, /* Array index: 0x1047 */ 0x9C77,0x6B57, /* Array index: 0x1047 */ 0x9C7B,0x6B58, /* Array index: 0x1047 */ 0x9CE6,0x6B59, /* Array index: 0x1047 */ 0x9CF2,0x6B5A, /* Array index: 0x1047 */ 0x9CF7,0x6B5B, /* Array index: 0x1047 */ 0x9CF9,0x6B5C, /* Array index: 0x1047 */ 0x9D02,0x6B5E, /* Array index: 0x1047 */ 0x9D0B,0x6B5D, /* Array index: 0x1047 */ 0x9D11,0x6B5F, /* Array index: 0x1047 */ 0x9D17,0x6B60, /* Array index: 0x1047 */ 0x9D18,0x6B61, /* Array index: 0x1047 */ 0x9D3A,0x6B6A, /* Array index: 0x1047 */ 0x9D3C,0x6B6B, /* Array index: 0x1047 */ 0x9D3D,0x6B6D, /* Array index: 0x1047 */ 0x9D42,0x6B6E, /* Array index: 0x1047 */ 0x9D43,0x6B6F, /* Array index: 0x1047 */ 0x9D45,0x6B6C, /* Array index: 0x1047 */ 0x9D47,0x6B70, /* Array index: 0x1047 */ 0x9D4A,0x6B71, /* Array index: 0x1047 */ 0x9D53,0x6B72, /* Array index: 0x1047 */ 0x9D54,0x6B73, /* Array index: 0x1047 */ 0x9D5F,0x6B74, /* Array index: 0x1047 */ 0x9D62,0x6B76, /* Array index: 0x1047 */ 0x9D63,0x6B75, /* Array index: 0x1047 */ 0x9D65,0x6B77, /* Array index: 0x1047 */ 0x9D70,0x6B7B, /* Array index: 0x1047 */ 0x9D76,0x6B7C, /* Array index: 0x1047 */ 0x9D77,0x6B7D, /* Array index: 0x1047 */ 0x9D7B,0x6B7E, /* Array index: 0x1047 */ 0x9D7C,0x6C21, /* Array index: 0x1047 */ 0x9D7E,0x6C22, /* Array index: 0x1047 */ 0x9D83,0x6C23, /* Array index: 0x1047 */ 0x9D84,0x6C24, /* Array index: 0x1047 */ 0x9D86,0x6C25, /* Array index: 0x1047 */ 0x9D8A,0x6C26, /* Array index: 0x1047 */ 0x9D8D,0x6C27, /* Array index: 0x1047 */ 0x9D8E,0x6C28, /* Array index: 0x1047 */ 0x9DA1,0x6C2F, /* Array index: 0x1047 */ 0x9DAA,0x6C30, /* Array index: 0x1047 */ 0x9DAC,0x6C31, /* Array index: 0x1047 */ 0x9DAE,0x6C32, /* Array index: 0x1047 */ 0x9DB1,0x6C33, /* Array index: 0x1047 */ 0x9DB5,0x6C34, /* Array index: 0x1047 */ 0x9DB9,0x6C35, /* Array index: 0x1047 */ 0x9DBC,0x6C36, /* Array index: 0x1047 */ 0x9DBF,0x6C37, /* Array index: 0x1047 */ 0x9DC3,0x6C38, /* Array index: 0x1047 */ 0x9DC7,0x6C39, /* Array index: 0x1047 */ 0x9DC9,0x6C3A, /* Array index: 0x1047 */ 0x9DCA,0x6C3B, /* Array index: 0x1047 */ 0x9DDA,0x6C40, /* Array index: 0x1047 */ 0x9DE5,0x6C44, /* Array index: 0x1047 */ 0x9DE7,0x6C45, /* Array index: 0x1047 */ 0x9DE9,0x6C46, /* Array index: 0x1047 */ 0x9DEB,0x6C47, /* Array index: 0x1047 */ 0x9DEE,0x6C48, /* Array index: 0x1047 */ 0x9DF0,0x6C49, /* Array index: 0x1047 */ 0x9DF3,0x6C4A, /* Array index: 0x1047 */ 0x9DF4,0x6C4B, /* Array index: 0x1047 */ 0x9DFE,0x6C4C, /* Array index: 0x1047 */ 0x9E02,0x6C4E, /* Array index: 0x1047 */ 0x9E07,0x6C4F, /* Array index: 0x1047 */ 0x9E0A,0x6C4D, /* Array index: 0x1047 */ 0x9E19,0x6C56, /* Array index: 0x1047 */ 0x9E1C,0x6C57, /* Array index: 0x1047 */ 0x9E1D,0x6C58, /* Array index: 0x1047 */ 0x9E8E,0x6C62, /* Array index: 0x1047 */ 0x9E8F,0x6C63, /* Array index: 0x1047 */ 0x9E96,0x6C64, /* Array index: 0x1047 */ 0x9E98,0x6C65, /* Array index: 0x1047 */ 0x9E9B,0x6C66, /* Array index: 0x1047 */ 0x9E9E,0x6C67, /* Array index: 0x1047 */ 0x9EA4,0x6C68, /* Array index: 0x1047 */ 0x9EA8,0x6C69, /* Array index: 0x1047 */ 0x9EC6,0x6C71, /* Array index: 0x1047 */ 0x9EC8,0x6C72, /* Array index: 0x1047 */ 0x9ECB,0x6C73, /* Array index: 0x1047 */ 0x9ED5,0x6C74, /* Array index: 0x1047 */ 0x9EDF,0x6C75, /* Array index: 0x1047 */ 0x9EE4,0x6C76, /* Array index: 0x1047 */ 0x9EE7,0x6C77, /* Array index: 0x1047 */ 0x9EF5,0x6C7E, /* Array index: 0x1047 */ 0x9EF8,0x6D21, /* Array index: 0x1047 */ 0x9EFF,0x6D22, /* Array index: 0x1047 */ 0x9F02,0x6D23, /* Array index: 0x1047 */ 0x9F03,0x6D24, /* Array index: 0x1047 */ 0x9F09,0x6D25, /* Array index: 0x1047 */ 0x9F1F,0x6D30, /* Array index: 0x1047 */ 0x9F22,0x6D31, /* Array index: 0x1047 */ 0x9F26,0x6D32, /* Array index: 0x1047 */ 0x9F2A,0x6D33, /* Array index: 0x1047 */ 0x9F2B,0x6D34, /* Array index: 0x1047 */ 0x9F2F,0x6D35, /* Array index: 0x1047 */ 0x9F31,0x6D36, /* Array index: 0x1047 */ 0x9F32,0x6D37, /* Array index: 0x1047 */ 0x9F34,0x6D38, /* Array index: 0x1047 */ 0x9F37,0x6D39, /* Array index: 0x1047 */ 0x9F68,0x6D4D, /* Array index: 0x1047 */ 0x9F69,0x6D4E, /* Array index: 0x1047 */ 0x9F7A,0x6D56, /* Array index: 0x1047 */ 0x9F7D,0x6D57, /* Array index: 0x1047 */ 0x9F9E,0x6D5F, }; #endif /* ICONV_FROM_UCS_CCS_JIS_X0212_1990 && defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * jis_x0212_1990 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_jis_x0212_1990 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_JIS_X0212_1990, /* CCS name */ TABLE_16BIT, /* Table bits */ #if defined (ICONV_FROM_UCS_CCS_JIS_X0212_1990) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SIZE_OPTIMIZED, (__uint16_t *)&from_ucs_size_jis_x0212_1990, /* UCS -> jis_x0212_1990 table size-optimized table */ #elif defined (ICONV_FROM_UCS_CCS_JIS_X0212_1990) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SPEED_OPTIMIZED, (__uint16_t *)&from_ucs_speed_jis_x0212_1990, /* UCS -> jis_x0212_1990 table speed-optimized table */ #else TABLE_SPEED_OPTIMIZED, (__uint16_t *)NULL, #endif #if defined (ICONV_TO_UCS_CCS_JIS_X0212_1990) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SIZE_OPTIMIZED, (__uint16_t *)&to_ucs_size_jis_x0212_1990 /* jis_x0212_1990 -> UCS table speed-optimized table */ #elif defined (ICONV_TO_UCS_CCS_JIS_X0212_1990) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SPEED_OPTIMIZED, (__uint16_t *)&to_ucs_speed_jis_x0212_1990 /* jis_x0212_1990 -> UCS table speed-optimized table */ #else TABLE_SPEED_OPTIMIZED, (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_JIS_X0212_1990) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/koi8_r.c000066400000000000000000000316421414576234500207460ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for koi8_r encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_KOI8_R) \ || defined (ICONV_FROM_UCS_CCS_KOI8_R) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit koi8_r -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_KOI8_R) static const __uint16_t to_ucs_speed_koi8_r[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x2500,0x2502,0x250C,0x2510,0x2514,0x2518,0x251C,0x2524, 0x252C,0x2534,0x253C,0x2580,0x2584,0x2588,0x258C,0x2590, 0x2591,0x2592,0x2593,0x2320,0x25A0,0x2219,0x221A,0x2248, 0x2264,0x2265,0x00A0,0x2321,0x00B0,0x00B2,0x00B7,0x00F7, 0x2550,0x2551,0x2552,0x0451,0x2553,0x2554,0x2555,0x2556, 0x2557,0x2558,0x2559,0x255A,0x255B,0x255C,0x255D,0x255E, 0x255F,0x2560,0x2561,0x0401,0x2562,0x2563,0x2564,0x2565, 0x2566,0x2567,0x2568,0x2569,0x256A,0x256B,0x256C,0x00A9, 0x044E,0x0430,0x0431,0x0446,0x0434,0x0435,0x0444,0x0433, 0x0445,0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E, 0x043F,0x044F,0x0440,0x0441,0x0442,0x0443,0x0436,0x0432, 0x044C,0x044B,0x0437,0x0448,0x044D,0x0449,0x0447,0x044A, 0x042E,0x0410,0x0411,0x0426,0x0414,0x0415,0x0424,0x0413, 0x0425,0x0418,0x0419,0x041A,0x041B,0x041C,0x041D,0x041E, 0x041F,0x042F,0x0420,0x0421,0x0422,0x0423,0x0416,0x0412, 0x042C,0x042B,0x0417,0x0428,0x042D,0x0429,0x0427,0x042A, }; #endif /* ICONV_TO_UCS_CCS_KOI8_R */ /* * 8-bit UCS -> koi8_r speed-optimized table (1794 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_KOI8_R) static const unsigned char from_ucs_speed_koi8_r[] = { W(0x042A), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(INVBLK),W(INVBLK),W(INVBLK), W(0x0302),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(0x0402),W(0x0502), W(INVBLK),W(0x0602),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x9A,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x9C,0xFF,0x9D,0xFF,0xFF,0xFF,0xFF,0x9E, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x9F, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 5, Array index 0x0302 */ 0xFF,0xB3,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xE1,0xE2,0xF7,0xE7,0xE4,0xE5,0xF6,0xFA, 0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0, 0xF2,0xF3,0xF4,0xF5,0xE6,0xE8,0xE3,0xFE, 0xFB,0xFD,0xFF,0xF9,0xF8,0xFC,0xE0,0xF1, 0xC1,0xC2,0xD7,0xC7,0xC4,0xC5,0xD6,0xDA, 0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0, 0xD2,0xD3,0xD4,0xD5,0xC6,0xC8,0xC3,0xDE, 0xDB,0xDD,0xDF,0xD9,0xD8,0xDC,0xC0,0xD1, 0xFF,0xA3,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 35, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x95,0x96,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x97,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x98,0x99,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 36, Array index 0x0502 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x93,0x9B,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 38, Array index 0x0602 */ 0x80,0xFF,0x81,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x82,0xFF,0xFF,0xFF, 0x83,0xFF,0xFF,0xFF,0x84,0xFF,0xFF,0xFF, 0x85,0xFF,0xFF,0xFF,0x86,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x87,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x88,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x89,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x8A,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xA0,0xA1,0xA2,0xA4,0xA5,0xA6,0xA7,0xA8, 0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0, 0xB1,0xB2,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9, 0xBA,0xBB,0xBC,0xBD,0xBE,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x8B,0xFF,0xFF,0xFF,0x8C,0xFF,0xFF,0xFF, 0x8D,0xFF,0xFF,0xFF,0x8E,0xFF,0xFF,0xFF, 0x8F,0x90,0x91,0x92,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x94,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_KOI8_R */ /* * koi8_r CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_koi8_r = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_KOI8_R, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_KOI8_R) (__uint16_t *)&from_ucs_speed_koi8_r, /* UCS -> koi8_r table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_KOI8_R) (__uint16_t *)&to_ucs_speed_koi8_r /* koi8_r -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_KOI8_R) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/koi8_ru.c000066400000000000000000000344331414576234500211340ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for koi8_ru encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_KOI8_RU) \ || defined (ICONV_FROM_UCS_CCS_KOI8_RU) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit koi8_ru -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_KOI8_RU) static const __uint16_t to_ucs_speed_koi8_ru[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x2500,0x2502,0x250C,0x2510,0x2514,0x2518,0x251C,0x2524, 0x252C,0x2534,0x253C,0x2580,0x2584,0x2588,0x258C,0x2590, 0x2591,0x2592,0x2593,0x201C,0x25A0,0x2219,0x201D,0x2014, 0x2116,0x2122,0x00A0,0x00BB,0x00AE,0x00AB,0x00B7,0x00A4, 0x2550,0x2551,0x2552,0x0451,0x0454,0x2554,0x0456,0x0457, 0x2557,0x2558,0x2559,0x255A,0x255B,0x0491,0x045E,0x255E, 0x255F,0x2560,0x2561,0x0401,0x0404,0x2563,0x0406,0x0407, 0x2566,0x2567,0x2568,0x2569,0x256A,0x0490,0x040E,0x00A9, 0x044E,0x0430,0x0431,0x0446,0x0434,0x0435,0x0444,0x0433, 0x0445,0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E, 0x043F,0x044F,0x0440,0x0441,0x0442,0x0443,0x0436,0x0432, 0x044C,0x044B,0x0437,0x0448,0x044D,0x0449,0x0447,0x044A, 0x042E,0x0410,0x0411,0x0426,0x0414,0x0415,0x0424,0x0413, 0x0425,0x0418,0x0419,0x041A,0x041B,0x041C,0x041D,0x041E, 0x041F,0x042F,0x0420,0x0421,0x0422,0x0423,0x0416,0x0412, 0x042C,0x042B,0x0417,0x0428,0x042D,0x0429,0x0427,0x042A, }; #endif /* ICONV_TO_UCS_CCS_KOI8_RU */ /* * 8-bit UCS -> koi8_ru speed-optimized table (2050 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_KOI8_RU) static const unsigned char from_ucs_speed_koi8_ru[] = { W(0x042A), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(INVBLK),W(INVBLK),W(INVBLK), W(0x0302),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(0x0402),W(0x0502),W(0x0602),W(INVBLK), W(INVBLK),W(0x0702),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x9A,0xFF,0xFF,0xFF,0x9F,0xFF,0xFF,0xFF, 0xFF,0xBF,0xFF,0x9D,0xFF,0xFF,0x9C,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x9E, 0xFF,0xFF,0xFF,0x9B,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 5, Array index 0x0302 */ 0xFF,0xB3,0xFF,0xFF,0xB4,0xFF,0xB6,0xB7, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBE,0xFF, 0xE1,0xE2,0xF7,0xE7,0xE4,0xE5,0xF6,0xFA, 0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0, 0xF2,0xF3,0xF4,0xF5,0xE6,0xE8,0xE3,0xFE, 0xFB,0xFD,0xFF,0xF9,0xF8,0xFC,0xE0,0xF1, 0xC1,0xC2,0xD7,0xC7,0xC4,0xC5,0xD6,0xDA, 0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0, 0xD2,0xD3,0xD4,0xD5,0xC6,0xC8,0xC3,0xDE, 0xDB,0xDD,0xDF,0xD9,0xD8,0xDC,0xC0,0xD1, 0xFF,0xA3,0xFF,0xFF,0xA4,0xFF,0xA6,0xA7, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAE,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xBD,0xAD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 33, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x97,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x93,0x96,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 34, Array index 0x0502 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x98,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x99,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 35, Array index 0x0602 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x95,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 38, Array index 0x0702 */ 0x80,0xFF,0x81,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x82,0xFF,0xFF,0xFF, 0x83,0xFF,0xFF,0xFF,0x84,0xFF,0xFF,0xFF, 0x85,0xFF,0xFF,0xFF,0x86,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x87,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x88,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x89,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x8A,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xA0,0xA1,0xA2,0xFF,0xA5,0xFF,0xFF,0xA8, 0xA9,0xAA,0xAB,0xAC,0xFF,0xFF,0xAF,0xB0, 0xB1,0xB2,0xFF,0xB5,0xFF,0xFF,0xB8,0xB9, 0xBA,0xBB,0xBC,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x8B,0xFF,0xFF,0xFF,0x8C,0xFF,0xFF,0xFF, 0x8D,0xFF,0xFF,0xFF,0x8E,0xFF,0xFF,0xFF, 0x8F,0x90,0x91,0x92,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x94,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_KOI8_RU */ /* * koi8_ru CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_koi8_ru = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_KOI8_RU, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_KOI8_RU) (__uint16_t *)&from_ucs_speed_koi8_ru, /* UCS -> koi8_ru table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_KOI8_RU) (__uint16_t *)&to_ucs_speed_koi8_ru /* koi8_ru -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_KOI8_RU) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/koi8_u.c000066400000000000000000000316421414576234500207510ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for koi8_u encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_KOI8_U) \ || defined (ICONV_FROM_UCS_CCS_KOI8_U) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit koi8_u -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_KOI8_U) static const __uint16_t to_ucs_speed_koi8_u[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x2500,0x2502,0x250C,0x2510,0x2514,0x2518,0x251C,0x2524, 0x252C,0x2534,0x253C,0x2580,0x2584,0x2588,0x258C,0x2590, 0x2591,0x2592,0x2593,0x2320,0x25A0,0x2219,0x221A,0x2248, 0x2264,0x2265,0x00A0,0x2321,0x00B0,0x00B2,0x00B7,0x00F7, 0x2550,0x2551,0x2552,0x0451,0x0454,0x2554,0x0456,0x0457, 0x2557,0x2558,0x2559,0x255A,0x255B,0x0491,0x255D,0x255E, 0x255F,0x2560,0x2561,0x0401,0x0404,0x2563,0x0406,0x0407, 0x2566,0x2567,0x2568,0x2569,0x256A,0x0490,0x256C,0x00A9, 0x044E,0x0430,0x0431,0x0446,0x0434,0x0435,0x0444,0x0433, 0x0445,0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E, 0x043F,0x044F,0x0440,0x0441,0x0442,0x0443,0x0436,0x0432, 0x044C,0x044B,0x0437,0x0448,0x044D,0x0449,0x0447,0x044A, 0x042E,0x0410,0x0411,0x0426,0x0414,0x0415,0x0424,0x0413, 0x0425,0x0418,0x0419,0x041A,0x041B,0x041C,0x041D,0x041E, 0x041F,0x042F,0x0420,0x0421,0x0422,0x0423,0x0416,0x0412, 0x042C,0x042B,0x0417,0x0428,0x042D,0x0429,0x0427,0x042A, }; #endif /* ICONV_TO_UCS_CCS_KOI8_U */ /* * 8-bit UCS -> koi8_u speed-optimized table (1794 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_KOI8_U) static const unsigned char from_ucs_speed_koi8_u[] = { W(0x042A), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(INVBLK),W(INVBLK),W(INVBLK), W(0x0302),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(0x0402),W(0x0502), W(INVBLK),W(0x0602),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x9A,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x9C,0xFF,0x9D,0xFF,0xFF,0xFF,0xFF,0x9E, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x9F, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 5, Array index 0x0302 */ 0xFF,0xB3,0xFF,0xFF,0xB4,0xFF,0xB6,0xB7, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xE1,0xE2,0xF7,0xE7,0xE4,0xE5,0xF6,0xFA, 0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0, 0xF2,0xF3,0xF4,0xF5,0xE6,0xE8,0xE3,0xFE, 0xFB,0xFD,0xFF,0xF9,0xF8,0xFC,0xE0,0xF1, 0xC1,0xC2,0xD7,0xC7,0xC4,0xC5,0xD6,0xDA, 0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0, 0xD2,0xD3,0xD4,0xD5,0xC6,0xC8,0xC3,0xDE, 0xDB,0xDD,0xDF,0xD9,0xD8,0xDC,0xC0,0xD1, 0xFF,0xA3,0xFF,0xFF,0xA4,0xFF,0xA6,0xA7, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xBD,0xAD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 35, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x95,0x96,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x97,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x98,0x99,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 36, Array index 0x0502 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x93,0x9B,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 38, Array index 0x0602 */ 0x80,0xFF,0x81,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x82,0xFF,0xFF,0xFF, 0x83,0xFF,0xFF,0xFF,0x84,0xFF,0xFF,0xFF, 0x85,0xFF,0xFF,0xFF,0x86,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x87,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x88,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x89,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x8A,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xA0,0xA1,0xA2,0xFF,0xA5,0xFF,0xFF,0xA8, 0xA9,0xAA,0xAB,0xAC,0xFF,0xAE,0xAF,0xB0, 0xB1,0xB2,0xFF,0xB5,0xFF,0xFF,0xB8,0xB9, 0xBA,0xBB,0xBC,0xFF,0xBE,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x8B,0xFF,0xFF,0xFF,0x8C,0xFF,0xFF,0xFF, 0x8D,0xFF,0xFF,0xFF,0x8E,0xFF,0xFF,0xFF, 0x8F,0x90,0x91,0x92,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x94,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_KOI8_U */ /* * koi8_u CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_koi8_u = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_KOI8_U, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_KOI8_U) (__uint16_t *)&from_ucs_speed_koi8_u, /* UCS -> koi8_u table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_KOI8_U) (__uint16_t *)&to_ucs_speed_koi8_u /* koi8_u -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_KOI8_U) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/koi8_uni.c000066400000000000000000000344601414576234500213010ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for koi8_uni encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_KOI8_UNI) \ || defined (ICONV_FROM_UCS_CCS_KOI8_UNI) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit koi8_uni -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_KOI8_UNI) static const __uint16_t to_ucs_speed_koi8_uni[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x2500,0x2502,0x250C,0x2510,0x2514,0x2518,0x251C,0x2524, 0x252C,0x2534,0x253C,0x2580,0x2584,0x2588,0x258C,0x2590, 0x2591,0x2018,0x2019,0x201C,0x201D,0x2219,0x2013,0x2014, 0x00A9,0x2122,0x00A0,0x00BB,0x00AE,0x00AB,0x00B7,0x00A4, 0x00A0,0x0452,0x0453,0x0451,0x0454,0x0455,0x0456,0x0457, 0x0458,0x0459,0x045A,0x045B,0x045C,0x0491,0x045E,0x045F, 0x2116,0x0402,0x0403,0x0401,0x0404,0x0405,0x0406,0x0407, 0x0408,0x0409,0x040A,0x040B,0x040C,0x0490,0x040E,0x040F, 0x044E,0x0430,0x0431,0x0446,0x0434,0x0435,0x0444,0x0433, 0x0445,0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E, 0x043F,0x044F,0x0440,0x0441,0x0442,0x0443,0x0436,0x0432, 0x044C,0x044B,0x0437,0x0448,0x044D,0x0449,0x0447,0x044A, 0x042E,0x0410,0x0411,0x0426,0x0414,0x0415,0x0424,0x0413, 0x0425,0x0418,0x0419,0x041A,0x041B,0x041C,0x041D,0x041E, 0x041F,0x042F,0x0420,0x0421,0x0422,0x0423,0x0416,0x0412, 0x042C,0x042B,0x0417,0x0428,0x042D,0x0429,0x0427,0x042A, }; #endif /* ICONV_TO_UCS_CCS_KOI8_UNI */ /* * 8-bit UCS -> koi8_uni speed-optimized table (2050 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_KOI8_UNI) static const unsigned char from_ucs_speed_koi8_uni[] = { W(0x042A), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(INVBLK),W(INVBLK),W(INVBLK), W(0x0302),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(0x0402),W(0x0502),W(0x0602),W(INVBLK), W(INVBLK),W(0x0702),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x9A,0xFF,0xFF,0xFF,0x9F,0xFF,0xFF,0xFF, 0xFF,0x98,0xFF,0x9D,0xFF,0xFF,0x9C,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x9E, 0xFF,0xFF,0xFF,0x9B,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 5, Array index 0x0302 */ 0xFF,0xB3,0xB1,0xB2,0xB4,0xB5,0xB6,0xB7, 0xB8,0xB9,0xBA,0xBB,0xBC,0xFF,0xBE,0xBF, 0xE1,0xE2,0xF7,0xE7,0xE4,0xE5,0xF6,0xFA, 0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0, 0xF2,0xF3,0xF4,0xF5,0xE6,0xE8,0xE3,0xFE, 0xFB,0xFD,0xFF,0xF9,0xF8,0xFC,0xE0,0xF1, 0xC1,0xC2,0xD7,0xC7,0xC4,0xC5,0xD6,0xDA, 0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0, 0xD2,0xD3,0xD4,0xD5,0xC6,0xC8,0xC3,0xDE, 0xDB,0xDD,0xDF,0xD9,0xD8,0xDC,0xC0,0xD1, 0xFF,0xA3,0xA1,0xA2,0xA4,0xA5,0xA6,0xA7, 0xA8,0xA9,0xAA,0xAB,0xAC,0xFF,0xAE,0xAF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xBD,0xAD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 33, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0x96,0x97,0xFF,0xFF,0xFF, 0x91,0x92,0xFF,0xFF,0x93,0x94,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 34, Array index 0x0502 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xB0,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x99,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 35, Array index 0x0602 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x95,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 38, Array index 0x0702 */ 0x80,0xFF,0x81,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x82,0xFF,0xFF,0xFF, 0x83,0xFF,0xFF,0xFF,0x84,0xFF,0xFF,0xFF, 0x85,0xFF,0xFF,0xFF,0x86,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x87,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x88,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x89,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x8A,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x8B,0xFF,0xFF,0xFF,0x8C,0xFF,0xFF,0xFF, 0x8D,0xFF,0xFF,0xFF,0x8E,0xFF,0xFF,0xFF, 0x8F,0x90,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_KOI8_UNI */ /* * koi8_uni CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_koi8_uni = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_KOI8_UNI, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_KOI8_UNI) (__uint16_t *)&from_ucs_speed_koi8_uni, /* UCS -> koi8_uni table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_KOI8_UNI) (__uint16_t *)&to_ucs_speed_koi8_uni /* koi8_uni -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_KOI8_UNI) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/ksx1001.c000066400000000000000000030270341414576234500206650ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for ksx1001 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_KSX1001) \ || defined (ICONV_FROM_UCS_CCS_KSX1001) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" /* * 16-bit ksx1001 -> UCS speed-optimized table (46080 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_KSX1001) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t to_ucs_speed_ksx1001[] = { /* Heading Block */ INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,0x0100,0x0200,0x0300,0x0400,0x0500,0x0600,0x0700, 0x0800,0x0900,0x0A00,0x0B00,0x0C00,INVBLK,INVBLK,INVBLK, 0x0D00,0x0E00,0x0F00,0x1000,0x1100,0x1200,0x1300,0x1400, 0x1500,0x1600,0x1700,0x1800,0x1900,0x1A00,0x1B00,0x1C00, 0x1D00,0x1E00,0x1F00,0x2000,0x2100,0x2200,0x2300,0x2400, 0x2500,INVBLK,0x2600,0x2700,0x2800,0x2900,0x2A00,0x2B00, 0x2C00,0x2D00,0x2E00,0x2F00,0x3000,0x3100,0x3200,0x3300, 0x3400,0x3500,0x3600,0x3700,0x3800,0x3900,0x3A00,0x3B00, 0x3C00,0x3D00,0x3E00,0x3F00,0x4000,0x4100,0x4200,0x4300, 0x4400,0x4500,0x4600,0x4700,0x4800,0x4900,0x4A00,0x4B00, 0x4C00,0x4D00,0x4E00,0x4F00,0x5000,0x5100,0x5200,0x5300, 0x5400,0x5500,0x5600,0x5700,0x5800,0x5900,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, /* Block 34, Array index 0x0100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3000,0x3001,0x3002,0x00B7,0x2025,0x2026,0x00A8, 0x3003,0x00AD,0x2015,0x2225,0xFF3C,0x223C,0x2018,0x2019, 0x201C,0x201D,0x3014,0x3015,0x3008,0x3009,0x300A,0x300B, 0x300C,0x300D,0x300E,0x300F,0x3010,0x3011,0x00B1,0x00D7, 0x00F7,0x2260,0x2264,0x2265,0x221E,0x2234,0x00B0,0x2032, 0x2033,0x2103,0x212B,0xFFE0,0xFFE1,0xFFE5,0x2642,0x2640, 0x2220,0x22A5,0x2312,0x2202,0x2207,0x2261,0x2252,0x00A7, 0x203B,0x2606,0x2605,0x25CB,0x25CF,0x25CE,0x25C7,0x25C6, 0x25A1,0x25A0,0x25B3,0x25B2,0x25BD,0x25BC,0x2192,0x2190, 0x2191,0x2193,0x2194,0x3013,0x226A,0x226B,0x221A,0x223D, 0x221D,0x2235,0x222B,0x222C,0x2208,0x220B,0x2286,0x2287, 0x2282,0x2283,0x222A,0x2229,0x2227,0x2228,0xFFE2,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 35, Array index 0x0200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x21D2,0x21D4,0x2200,0x2203,0x00B4,0xFF5E,0x02C7, 0x02D8,0x02DD,0x02DA,0x02D9,0x00B8,0x02DB,0x00A1,0x00BF, 0x02D0,0x222E,0x2211,0x220F,0x00A4,0x2109,0x2030,0x25C1, 0x25C0,0x25B7,0x25B6,0x2664,0x2660,0x2661,0x2665,0x2667, 0x2663,0x2299,0x25C8,0x25A3,0x25D0,0x25D1,0x2592,0x25A4, 0x25A5,0x25A8,0x25A7,0x25A6,0x25A9,0x2668,0x260F,0x260E, 0x261C,0x261E,0x00B6,0x2020,0x2021,0x2195,0x2197,0x2199, 0x2196,0x2198,0x266D,0x2669,0x266A,0x266C,0x327F,0x321C, 0x2116,0x33C7,0x2122,0x33C2,0x33D8,0x2121,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 36, Array index 0x0300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xFF01,0xFF02,0xFF03,0xFF04,0xFF05,0xFF06,0xFF07, 0xFF08,0xFF09,0xFF0A,0xFF0B,0xFF0C,0xFF0D,0xFF0E,0xFF0F, 0xFF10,0xFF11,0xFF12,0xFF13,0xFF14,0xFF15,0xFF16,0xFF17, 0xFF18,0xFF19,0xFF1A,0xFF1B,0xFF1C,0xFF1D,0xFF1E,0xFF1F, 0xFF20,0xFF21,0xFF22,0xFF23,0xFF24,0xFF25,0xFF26,0xFF27, 0xFF28,0xFF29,0xFF2A,0xFF2B,0xFF2C,0xFF2D,0xFF2E,0xFF2F, 0xFF30,0xFF31,0xFF32,0xFF33,0xFF34,0xFF35,0xFF36,0xFF37, 0xFF38,0xFF39,0xFF3A,0xFF3B,0xFFE6,0xFF3D,0xFF3E,0xFF3F, 0xFF40,0xFF41,0xFF42,0xFF43,0xFF44,0xFF45,0xFF46,0xFF47, 0xFF48,0xFF49,0xFF4A,0xFF4B,0xFF4C,0xFF4D,0xFF4E,0xFF4F, 0xFF50,0xFF51,0xFF52,0xFF53,0xFF54,0xFF55,0xFF56,0xFF57, 0xFF58,0xFF59,0xFF5A,0xFF5B,0xFF5C,0xFF5D,0xFFE3,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 37, Array index 0x0400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3131,0x3132,0x3133,0x3134,0x3135,0x3136,0x3137, 0x3138,0x3139,0x313A,0x313B,0x313C,0x313D,0x313E,0x313F, 0x3140,0x3141,0x3142,0x3143,0x3144,0x3145,0x3146,0x3147, 0x3148,0x3149,0x314A,0x314B,0x314C,0x314D,0x314E,0x314F, 0x3150,0x3151,0x3152,0x3153,0x3154,0x3155,0x3156,0x3157, 0x3158,0x3159,0x315A,0x315B,0x315C,0x315D,0x315E,0x315F, 0x3160,0x3161,0x3162,0x3163,0x3164,0x3165,0x3166,0x3167, 0x3168,0x3169,0x316A,0x316B,0x316C,0x316D,0x316E,0x316F, 0x3170,0x3171,0x3172,0x3173,0x3174,0x3175,0x3176,0x3177, 0x3178,0x3179,0x317A,0x317B,0x317C,0x317D,0x317E,0x317F, 0x3180,0x3181,0x3182,0x3183,0x3184,0x3185,0x3186,0x3187, 0x3188,0x3189,0x318A,0x318B,0x318C,0x318D,0x318E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 38, Array index 0x0500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2170,0x2171,0x2172,0x2173,0x2174,0x2175,0x2176, 0x2177,0x2178,0x2179,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2160,0x2161,0x2162,0x2163,0x2164,0x2165,0x2166,0x2167, 0x2168,0x2169,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x0391,0x0392,0x0393,0x0394,0x0395,0x0396,0x0397, 0x0398,0x0399,0x039A,0x039B,0x039C,0x039D,0x039E,0x039F, 0x03A0,0x03A1,0x03A3,0x03A4,0x03A5,0x03A6,0x03A7,0x03A8, 0x03A9,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x03B1,0x03B2,0x03B3,0x03B4,0x03B5,0x03B6,0x03B7, 0x03B8,0x03B9,0x03BA,0x03BB,0x03BC,0x03BD,0x03BE,0x03BF, 0x03C0,0x03C1,0x03C3,0x03C4,0x03C5,0x03C6,0x03C7,0x03C8, 0x03C9,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 39, Array index 0x0600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2500,0x2502,0x250C,0x2510,0x2518,0x2514,0x251C, 0x252C,0x2524,0x2534,0x253C,0x2501,0x2503,0x250F,0x2513, 0x251B,0x2517,0x2523,0x2533,0x252B,0x253B,0x254B,0x2520, 0x252F,0x2528,0x2537,0x253F,0x251D,0x2530,0x2525,0x2538, 0x2542,0x2512,0x2511,0x251A,0x2519,0x2516,0x2515,0x250E, 0x250D,0x251E,0x251F,0x2521,0x2522,0x2526,0x2527,0x2529, 0x252A,0x252D,0x252E,0x2531,0x2532,0x2535,0x2536,0x2539, 0x253A,0x253D,0x253E,0x2540,0x2541,0x2543,0x2544,0x2545, 0x2546,0x2547,0x2548,0x2549,0x254A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 40, Array index 0x0700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3395,0x3396,0x3397,0x2113,0x3398,0x33C4,0x33A3, 0x33A4,0x33A5,0x33A6,0x3399,0x339A,0x339B,0x339C,0x339D, 0x339E,0x339F,0x33A0,0x33A1,0x33A2,0x33CA,0x338D,0x338E, 0x338F,0x33CF,0x3388,0x3389,0x33C8,0x33A7,0x33A8,0x33B0, 0x33B1,0x33B2,0x33B3,0x33B4,0x33B5,0x33B6,0x33B7,0x33B8, 0x33B9,0x3380,0x3381,0x3382,0x3383,0x3384,0x33BA,0x33BB, 0x33BC,0x33BD,0x33BE,0x33BF,0x3390,0x3391,0x3392,0x3393, 0x3394,0x2126,0x33C0,0x33C1,0x338A,0x338B,0x338C,0x33D6, 0x33C5,0x33AD,0x33AE,0x33AF,0x33DB,0x33A9,0x33AA,0x33AB, 0x33AC,0x33DD,0x33D0,0x33D3,0x33C3,0x33C9,0x33DC,0x33C6, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 41, Array index 0x0800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x00C6,0x00D0,0x00AA,0x0126,INVALC,0x0132,INVALC, 0x013F,0x0141,0x00D8,0x0152,0x00BA,0x00DE,0x0166,0x014A, INVALC,0x3260,0x3261,0x3262,0x3263,0x3264,0x3265,0x3266, 0x3267,0x3268,0x3269,0x326A,0x326B,0x326C,0x326D,0x326E, 0x326F,0x3270,0x3271,0x3272,0x3273,0x3274,0x3275,0x3276, 0x3277,0x3278,0x3279,0x327A,0x327B,0x24D0,0x24D1,0x24D2, 0x24D3,0x24D4,0x24D5,0x24D6,0x24D7,0x24D8,0x24D9,0x24DA, 0x24DB,0x24DC,0x24DD,0x24DE,0x24DF,0x24E0,0x24E1,0x24E2, 0x24E3,0x24E4,0x24E5,0x24E6,0x24E7,0x24E8,0x24E9,0x2460, 0x2461,0x2462,0x2463,0x2464,0x2465,0x2466,0x2467,0x2468, 0x2469,0x246A,0x246B,0x246C,0x246D,0x246E,0x00BD,0x2153, 0x2154,0x00BC,0x00BE,0x215B,0x215C,0x215D,0x215E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 42, Array index 0x0900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x00E6,0x0111,0x00F0,0x0127,0x0131,0x0133,0x0138, 0x0140,0x0142,0x00F8,0x0153,0x00DF,0x00FE,0x0167,0x014B, 0x0149,0x3200,0x3201,0x3202,0x3203,0x3204,0x3205,0x3206, 0x3207,0x3208,0x3209,0x320A,0x320B,0x320C,0x320D,0x320E, 0x320F,0x3210,0x3211,0x3212,0x3213,0x3214,0x3215,0x3216, 0x3217,0x3218,0x3219,0x321A,0x321B,0x249C,0x249D,0x249E, 0x249F,0x24A0,0x24A1,0x24A2,0x24A3,0x24A4,0x24A5,0x24A6, 0x24A7,0x24A8,0x24A9,0x24AA,0x24AB,0x24AC,0x24AD,0x24AE, 0x24AF,0x24B0,0x24B1,0x24B2,0x24B3,0x24B4,0x24B5,0x2474, 0x2475,0x2476,0x2477,0x2478,0x2479,0x247A,0x247B,0x247C, 0x247D,0x247E,0x247F,0x2480,0x2481,0x2482,0x00B9,0x00B2, 0x00B3,0x2074,0x207F,0x2081,0x2082,0x2083,0x2084,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 43, Array index 0x0A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3041,0x3042,0x3043,0x3044,0x3045,0x3046,0x3047, 0x3048,0x3049,0x304A,0x304B,0x304C,0x304D,0x304E,0x304F, 0x3050,0x3051,0x3052,0x3053,0x3054,0x3055,0x3056,0x3057, 0x3058,0x3059,0x305A,0x305B,0x305C,0x305D,0x305E,0x305F, 0x3060,0x3061,0x3062,0x3063,0x3064,0x3065,0x3066,0x3067, 0x3068,0x3069,0x306A,0x306B,0x306C,0x306D,0x306E,0x306F, 0x3070,0x3071,0x3072,0x3073,0x3074,0x3075,0x3076,0x3077, 0x3078,0x3079,0x307A,0x307B,0x307C,0x307D,0x307E,0x307F, 0x3080,0x3081,0x3082,0x3083,0x3084,0x3085,0x3086,0x3087, 0x3088,0x3089,0x308A,0x308B,0x308C,0x308D,0x308E,0x308F, 0x3090,0x3091,0x3092,0x3093,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 44, Array index 0x0B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x30A1,0x30A2,0x30A3,0x30A4,0x30A5,0x30A6,0x30A7, 0x30A8,0x30A9,0x30AA,0x30AB,0x30AC,0x30AD,0x30AE,0x30AF, 0x30B0,0x30B1,0x30B2,0x30B3,0x30B4,0x30B5,0x30B6,0x30B7, 0x30B8,0x30B9,0x30BA,0x30BB,0x30BC,0x30BD,0x30BE,0x30BF, 0x30C0,0x30C1,0x30C2,0x30C3,0x30C4,0x30C5,0x30C6,0x30C7, 0x30C8,0x30C9,0x30CA,0x30CB,0x30CC,0x30CD,0x30CE,0x30CF, 0x30D0,0x30D1,0x30D2,0x30D3,0x30D4,0x30D5,0x30D6,0x30D7, 0x30D8,0x30D9,0x30DA,0x30DB,0x30DC,0x30DD,0x30DE,0x30DF, 0x30E0,0x30E1,0x30E2,0x30E3,0x30E4,0x30E5,0x30E6,0x30E7, 0x30E8,0x30E9,0x30EA,0x30EB,0x30EC,0x30ED,0x30EE,0x30EF, 0x30F0,0x30F1,0x30F2,0x30F3,0x30F4,0x30F5,0x30F6,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 45, Array index 0x0C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x0410,0x0411,0x0412,0x0413,0x0414,0x0415,0x0401, 0x0416,0x0417,0x0418,0x0419,0x041A,0x041B,0x041C,0x041D, 0x041E,0x041F,0x0420,0x0421,0x0422,0x0423,0x0424,0x0425, 0x0426,0x0427,0x0428,0x0429,0x042A,0x042B,0x042C,0x042D, 0x042E,0x042F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0451, 0x0436,0x0437,0x0438,0x0439,0x043A,0x043B,0x043C,0x043D, 0x043E,0x043F,0x0440,0x0441,0x0442,0x0443,0x0444,0x0445, 0x0446,0x0447,0x0448,0x0449,0x044A,0x044B,0x044C,0x044D, 0x044E,0x044F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 49, Array index 0x0D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xAC00,0xAC01,0xAC04,0xAC07,0xAC08,0xAC09,0xAC0A, 0xAC10,0xAC11,0xAC12,0xAC13,0xAC14,0xAC15,0xAC16,0xAC17, 0xAC19,0xAC1A,0xAC1B,0xAC1C,0xAC1D,0xAC20,0xAC24,0xAC2C, 0xAC2D,0xAC2F,0xAC30,0xAC31,0xAC38,0xAC39,0xAC3C,0xAC40, 0xAC4B,0xAC4D,0xAC54,0xAC58,0xAC5C,0xAC70,0xAC71,0xAC74, 0xAC77,0xAC78,0xAC7A,0xAC80,0xAC81,0xAC83,0xAC84,0xAC85, 0xAC86,0xAC89,0xAC8A,0xAC8B,0xAC8C,0xAC90,0xAC94,0xAC9C, 0xAC9D,0xAC9F,0xACA0,0xACA1,0xACA8,0xACA9,0xACAA,0xACAC, 0xACAF,0xACB0,0xACB8,0xACB9,0xACBB,0xACBC,0xACBD,0xACC1, 0xACC4,0xACC8,0xACCC,0xACD5,0xACD7,0xACE0,0xACE1,0xACE4, 0xACE7,0xACE8,0xACEA,0xACEC,0xACEF,0xACF0,0xACF1,0xACF3, 0xACF5,0xACF6,0xACFC,0xACFD,0xAD00,0xAD04,0xAD06,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 50, Array index 0x0E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xAD0C,0xAD0D,0xAD0F,0xAD11,0xAD18,0xAD1C,0xAD20, 0xAD29,0xAD2C,0xAD2D,0xAD34,0xAD35,0xAD38,0xAD3C,0xAD44, 0xAD45,0xAD47,0xAD49,0xAD50,0xAD54,0xAD58,0xAD61,0xAD63, 0xAD6C,0xAD6D,0xAD70,0xAD73,0xAD74,0xAD75,0xAD76,0xAD7B, 0xAD7C,0xAD7D,0xAD7F,0xAD81,0xAD82,0xAD88,0xAD89,0xAD8C, 0xAD90,0xAD9C,0xAD9D,0xADA4,0xADB7,0xADC0,0xADC1,0xADC4, 0xADC8,0xADD0,0xADD1,0xADD3,0xADDC,0xADE0,0xADE4,0xADF8, 0xADF9,0xADFC,0xADFF,0xAE00,0xAE01,0xAE08,0xAE09,0xAE0B, 0xAE0D,0xAE14,0xAE30,0xAE31,0xAE34,0xAE37,0xAE38,0xAE3A, 0xAE40,0xAE41,0xAE43,0xAE45,0xAE46,0xAE4A,0xAE4C,0xAE4D, 0xAE4E,0xAE50,0xAE54,0xAE56,0xAE5C,0xAE5D,0xAE5F,0xAE60, 0xAE61,0xAE65,0xAE68,0xAE69,0xAE6C,0xAE70,0xAE78,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 51, Array index 0x0F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xAE79,0xAE7B,0xAE7C,0xAE7D,0xAE84,0xAE85,0xAE8C, 0xAEBC,0xAEBD,0xAEBE,0xAEC0,0xAEC4,0xAECC,0xAECD,0xAECF, 0xAED0,0xAED1,0xAED8,0xAED9,0xAEDC,0xAEE8,0xAEEB,0xAEED, 0xAEF4,0xAEF8,0xAEFC,0xAF07,0xAF08,0xAF0D,0xAF10,0xAF2C, 0xAF2D,0xAF30,0xAF32,0xAF34,0xAF3C,0xAF3D,0xAF3F,0xAF41, 0xAF42,0xAF43,0xAF48,0xAF49,0xAF50,0xAF5C,0xAF5D,0xAF64, 0xAF65,0xAF79,0xAF80,0xAF84,0xAF88,0xAF90,0xAF91,0xAF95, 0xAF9C,0xAFB8,0xAFB9,0xAFBC,0xAFC0,0xAFC7,0xAFC8,0xAFC9, 0xAFCB,0xAFCD,0xAFCE,0xAFD4,0xAFDC,0xAFE8,0xAFE9,0xAFF0, 0xAFF1,0xAFF4,0xAFF8,0xB000,0xB001,0xB004,0xB00C,0xB010, 0xB014,0xB01C,0xB01D,0xB028,0xB044,0xB045,0xB048,0xB04A, 0xB04C,0xB04E,0xB053,0xB054,0xB055,0xB057,0xB059,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 52, Array index 0x1000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xB05D,0xB07C,0xB07D,0xB080,0xB084,0xB08C,0xB08D, 0xB08F,0xB091,0xB098,0xB099,0xB09A,0xB09C,0xB09F,0xB0A0, 0xB0A1,0xB0A2,0xB0A8,0xB0A9,0xB0AB,0xB0AC,0xB0AD,0xB0AE, 0xB0AF,0xB0B1,0xB0B3,0xB0B4,0xB0B5,0xB0B8,0xB0BC,0xB0C4, 0xB0C5,0xB0C7,0xB0C8,0xB0C9,0xB0D0,0xB0D1,0xB0D4,0xB0D8, 0xB0E0,0xB0E5,0xB108,0xB109,0xB10B,0xB10C,0xB110,0xB112, 0xB113,0xB118,0xB119,0xB11B,0xB11C,0xB11D,0xB123,0xB124, 0xB125,0xB128,0xB12C,0xB134,0xB135,0xB137,0xB138,0xB139, 0xB140,0xB141,0xB144,0xB148,0xB150,0xB151,0xB154,0xB155, 0xB158,0xB15C,0xB160,0xB178,0xB179,0xB17C,0xB180,0xB182, 0xB188,0xB189,0xB18B,0xB18D,0xB192,0xB193,0xB194,0xB198, 0xB19C,0xB1A8,0xB1CC,0xB1D0,0xB1D4,0xB1DC,0xB1DD,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 53, Array index 0x1100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xB1DF,0xB1E8,0xB1E9,0xB1EC,0xB1F0,0xB1F9,0xB1FB, 0xB1FD,0xB204,0xB205,0xB208,0xB20B,0xB20C,0xB214,0xB215, 0xB217,0xB219,0xB220,0xB234,0xB23C,0xB258,0xB25C,0xB260, 0xB268,0xB269,0xB274,0xB275,0xB27C,0xB284,0xB285,0xB289, 0xB290,0xB291,0xB294,0xB298,0xB299,0xB29A,0xB2A0,0xB2A1, 0xB2A3,0xB2A5,0xB2A6,0xB2AA,0xB2AC,0xB2B0,0xB2B4,0xB2C8, 0xB2C9,0xB2CC,0xB2D0,0xB2D2,0xB2D8,0xB2D9,0xB2DB,0xB2DD, 0xB2E2,0xB2E4,0xB2E5,0xB2E6,0xB2E8,0xB2EB,0xB2EC,0xB2ED, 0xB2EE,0xB2EF,0xB2F3,0xB2F4,0xB2F5,0xB2F7,0xB2F8,0xB2F9, 0xB2FA,0xB2FB,0xB2FF,0xB300,0xB301,0xB304,0xB308,0xB310, 0xB311,0xB313,0xB314,0xB315,0xB31C,0xB354,0xB355,0xB356, 0xB358,0xB35B,0xB35C,0xB35E,0xB35F,0xB364,0xB365,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 54, Array index 0x1200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xB367,0xB369,0xB36B,0xB36E,0xB370,0xB371,0xB374, 0xB378,0xB380,0xB381,0xB383,0xB384,0xB385,0xB38C,0xB390, 0xB394,0xB3A0,0xB3A1,0xB3A8,0xB3AC,0xB3C4,0xB3C5,0xB3C8, 0xB3CB,0xB3CC,0xB3CE,0xB3D0,0xB3D4,0xB3D5,0xB3D7,0xB3D9, 0xB3DB,0xB3DD,0xB3E0,0xB3E4,0xB3E8,0xB3FC,0xB410,0xB418, 0xB41C,0xB420,0xB428,0xB429,0xB42B,0xB434,0xB450,0xB451, 0xB454,0xB458,0xB460,0xB461,0xB463,0xB465,0xB46C,0xB480, 0xB488,0xB49D,0xB4A4,0xB4A8,0xB4AC,0xB4B5,0xB4B7,0xB4B9, 0xB4C0,0xB4C4,0xB4C8,0xB4D0,0xB4D5,0xB4DC,0xB4DD,0xB4E0, 0xB4E3,0xB4E4,0xB4E6,0xB4EC,0xB4ED,0xB4EF,0xB4F1,0xB4F8, 0xB514,0xB515,0xB518,0xB51B,0xB51C,0xB524,0xB525,0xB527, 0xB528,0xB529,0xB52A,0xB530,0xB531,0xB534,0xB538,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 55, Array index 0x1300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xB540,0xB541,0xB543,0xB544,0xB545,0xB54B,0xB54C, 0xB54D,0xB550,0xB554,0xB55C,0xB55D,0xB55F,0xB560,0xB561, 0xB5A0,0xB5A1,0xB5A4,0xB5A8,0xB5AA,0xB5AB,0xB5B0,0xB5B1, 0xB5B3,0xB5B4,0xB5B5,0xB5BB,0xB5BC,0xB5BD,0xB5C0,0xB5C4, 0xB5CC,0xB5CD,0xB5CF,0xB5D0,0xB5D1,0xB5D8,0xB5EC,0xB610, 0xB611,0xB614,0xB618,0xB625,0xB62C,0xB634,0xB648,0xB664, 0xB668,0xB69C,0xB69D,0xB6A0,0xB6A4,0xB6AB,0xB6AC,0xB6B1, 0xB6D4,0xB6F0,0xB6F4,0xB6F8,0xB700,0xB701,0xB705,0xB728, 0xB729,0xB72C,0xB72F,0xB730,0xB738,0xB739,0xB73B,0xB744, 0xB748,0xB74C,0xB754,0xB755,0xB760,0xB764,0xB768,0xB770, 0xB771,0xB773,0xB775,0xB77C,0xB77D,0xB780,0xB784,0xB78C, 0xB78D,0xB78F,0xB790,0xB791,0xB792,0xB796,0xB797,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 56, Array index 0x1400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xB798,0xB799,0xB79C,0xB7A0,0xB7A8,0xB7A9,0xB7AB, 0xB7AC,0xB7AD,0xB7B4,0xB7B5,0xB7B8,0xB7C7,0xB7C9,0xB7EC, 0xB7ED,0xB7F0,0xB7F4,0xB7FC,0xB7FD,0xB7FF,0xB800,0xB801, 0xB807,0xB808,0xB809,0xB80C,0xB810,0xB818,0xB819,0xB81B, 0xB81D,0xB824,0xB825,0xB828,0xB82C,0xB834,0xB835,0xB837, 0xB838,0xB839,0xB840,0xB844,0xB851,0xB853,0xB85C,0xB85D, 0xB860,0xB864,0xB86C,0xB86D,0xB86F,0xB871,0xB878,0xB87C, 0xB88D,0xB8A8,0xB8B0,0xB8B4,0xB8B8,0xB8C0,0xB8C1,0xB8C3, 0xB8C5,0xB8CC,0xB8D0,0xB8D4,0xB8DD,0xB8DF,0xB8E1,0xB8E8, 0xB8E9,0xB8EC,0xB8F0,0xB8F8,0xB8F9,0xB8FB,0xB8FD,0xB904, 0xB918,0xB920,0xB93C,0xB93D,0xB940,0xB944,0xB94C,0xB94F, 0xB951,0xB958,0xB959,0xB95C,0xB960,0xB968,0xB969,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 57, Array index 0x1500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xB96B,0xB96D,0xB974,0xB975,0xB978,0xB97C,0xB984, 0xB985,0xB987,0xB989,0xB98A,0xB98D,0xB98E,0xB9AC,0xB9AD, 0xB9B0,0xB9B4,0xB9BC,0xB9BD,0xB9BF,0xB9C1,0xB9C8,0xB9C9, 0xB9CC,0xB9CE,0xB9CF,0xB9D0,0xB9D1,0xB9D2,0xB9D8,0xB9D9, 0xB9DB,0xB9DD,0xB9DE,0xB9E1,0xB9E3,0xB9E4,0xB9E5,0xB9E8, 0xB9EC,0xB9F4,0xB9F5,0xB9F7,0xB9F8,0xB9F9,0xB9FA,0xBA00, 0xBA01,0xBA08,0xBA15,0xBA38,0xBA39,0xBA3C,0xBA40,0xBA42, 0xBA48,0xBA49,0xBA4B,0xBA4D,0xBA4E,0xBA53,0xBA54,0xBA55, 0xBA58,0xBA5C,0xBA64,0xBA65,0xBA67,0xBA68,0xBA69,0xBA70, 0xBA71,0xBA74,0xBA78,0xBA83,0xBA84,0xBA85,0xBA87,0xBA8C, 0xBAA8,0xBAA9,0xBAAB,0xBAAC,0xBAB0,0xBAB2,0xBAB8,0xBAB9, 0xBABB,0xBABD,0xBAC4,0xBAC8,0xBAD8,0xBAD9,0xBAFC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 58, Array index 0x1600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xBB00,0xBB04,0xBB0D,0xBB0F,0xBB11,0xBB18,0xBB1C, 0xBB20,0xBB29,0xBB2B,0xBB34,0xBB35,0xBB36,0xBB38,0xBB3B, 0xBB3C,0xBB3D,0xBB3E,0xBB44,0xBB45,0xBB47,0xBB49,0xBB4D, 0xBB4F,0xBB50,0xBB54,0xBB58,0xBB61,0xBB63,0xBB6C,0xBB88, 0xBB8C,0xBB90,0xBBA4,0xBBA8,0xBBAC,0xBBB4,0xBBB7,0xBBC0, 0xBBC4,0xBBC8,0xBBD0,0xBBD3,0xBBF8,0xBBF9,0xBBFC,0xBBFF, 0xBC00,0xBC02,0xBC08,0xBC09,0xBC0B,0xBC0C,0xBC0D,0xBC0F, 0xBC11,0xBC14,0xBC15,0xBC16,0xBC17,0xBC18,0xBC1B,0xBC1C, 0xBC1D,0xBC1E,0xBC1F,0xBC24,0xBC25,0xBC27,0xBC29,0xBC2D, 0xBC30,0xBC31,0xBC34,0xBC38,0xBC40,0xBC41,0xBC43,0xBC44, 0xBC45,0xBC49,0xBC4C,0xBC4D,0xBC50,0xBC5D,0xBC84,0xBC85, 0xBC88,0xBC8B,0xBC8C,0xBC8E,0xBC94,0xBC95,0xBC97,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 59, Array index 0x1700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xBC99,0xBC9A,0xBCA0,0xBCA1,0xBCA4,0xBCA7,0xBCA8, 0xBCB0,0xBCB1,0xBCB3,0xBCB4,0xBCB5,0xBCBC,0xBCBD,0xBCC0, 0xBCC4,0xBCCD,0xBCCF,0xBCD0,0xBCD1,0xBCD5,0xBCD8,0xBCDC, 0xBCF4,0xBCF5,0xBCF6,0xBCF8,0xBCFC,0xBD04,0xBD05,0xBD07, 0xBD09,0xBD10,0xBD14,0xBD24,0xBD2C,0xBD40,0xBD48,0xBD49, 0xBD4C,0xBD50,0xBD58,0xBD59,0xBD64,0xBD68,0xBD80,0xBD81, 0xBD84,0xBD87,0xBD88,0xBD89,0xBD8A,0xBD90,0xBD91,0xBD93, 0xBD95,0xBD99,0xBD9A,0xBD9C,0xBDA4,0xBDB0,0xBDB8,0xBDD4, 0xBDD5,0xBDD8,0xBDDC,0xBDE9,0xBDF0,0xBDF4,0xBDF8,0xBE00, 0xBE03,0xBE05,0xBE0C,0xBE0D,0xBE10,0xBE14,0xBE1C,0xBE1D, 0xBE1F,0xBE44,0xBE45,0xBE48,0xBE4C,0xBE4E,0xBE54,0xBE55, 0xBE57,0xBE59,0xBE5A,0xBE5B,0xBE60,0xBE61,0xBE64,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 60, Array index 0x1800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xBE68,0xBE6A,0xBE70,0xBE71,0xBE73,0xBE74,0xBE75, 0xBE7B,0xBE7C,0xBE7D,0xBE80,0xBE84,0xBE8C,0xBE8D,0xBE8F, 0xBE90,0xBE91,0xBE98,0xBE99,0xBEA8,0xBED0,0xBED1,0xBED4, 0xBED7,0xBED8,0xBEE0,0xBEE3,0xBEE4,0xBEE5,0xBEEC,0xBF01, 0xBF08,0xBF09,0xBF18,0xBF19,0xBF1B,0xBF1C,0xBF1D,0xBF40, 0xBF41,0xBF44,0xBF48,0xBF50,0xBF51,0xBF55,0xBF94,0xBFB0, 0xBFC5,0xBFCC,0xBFCD,0xBFD0,0xBFD4,0xBFDC,0xBFDF,0xBFE1, 0xC03C,0xC051,0xC058,0xC05C,0xC060,0xC068,0xC069,0xC090, 0xC091,0xC094,0xC098,0xC0A0,0xC0A1,0xC0A3,0xC0A5,0xC0AC, 0xC0AD,0xC0AF,0xC0B0,0xC0B3,0xC0B4,0xC0B5,0xC0B6,0xC0BC, 0xC0BD,0xC0BF,0xC0C0,0xC0C1,0xC0C5,0xC0C8,0xC0C9,0xC0CC, 0xC0D0,0xC0D8,0xC0D9,0xC0DB,0xC0DC,0xC0DD,0xC0E4,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 61, Array index 0x1900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xC0E5,0xC0E8,0xC0EC,0xC0F4,0xC0F5,0xC0F7,0xC0F9, 0xC100,0xC104,0xC108,0xC110,0xC115,0xC11C,0xC11D,0xC11E, 0xC11F,0xC120,0xC123,0xC124,0xC126,0xC127,0xC12C,0xC12D, 0xC12F,0xC130,0xC131,0xC136,0xC138,0xC139,0xC13C,0xC140, 0xC148,0xC149,0xC14B,0xC14C,0xC14D,0xC154,0xC155,0xC158, 0xC15C,0xC164,0xC165,0xC167,0xC168,0xC169,0xC170,0xC174, 0xC178,0xC185,0xC18C,0xC18D,0xC18E,0xC190,0xC194,0xC196, 0xC19C,0xC19D,0xC19F,0xC1A1,0xC1A5,0xC1A8,0xC1A9,0xC1AC, 0xC1B0,0xC1BD,0xC1C4,0xC1C8,0xC1CC,0xC1D4,0xC1D7,0xC1D8, 0xC1E0,0xC1E4,0xC1E8,0xC1F0,0xC1F1,0xC1F3,0xC1FC,0xC1FD, 0xC200,0xC204,0xC20C,0xC20D,0xC20F,0xC211,0xC218,0xC219, 0xC21C,0xC21F,0xC220,0xC228,0xC229,0xC22B,0xC22D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 62, Array index 0x1A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xC22F,0xC231,0xC232,0xC234,0xC248,0xC250,0xC251, 0xC254,0xC258,0xC260,0xC265,0xC26C,0xC26D,0xC270,0xC274, 0xC27C,0xC27D,0xC27F,0xC281,0xC288,0xC289,0xC290,0xC298, 0xC29B,0xC29D,0xC2A4,0xC2A5,0xC2A8,0xC2AC,0xC2AD,0xC2B4, 0xC2B5,0xC2B7,0xC2B9,0xC2DC,0xC2DD,0xC2E0,0xC2E3,0xC2E4, 0xC2EB,0xC2EC,0xC2ED,0xC2EF,0xC2F1,0xC2F6,0xC2F8,0xC2F9, 0xC2FB,0xC2FC,0xC300,0xC308,0xC309,0xC30C,0xC30D,0xC313, 0xC314,0xC315,0xC318,0xC31C,0xC324,0xC325,0xC328,0xC329, 0xC345,0xC368,0xC369,0xC36C,0xC370,0xC372,0xC378,0xC379, 0xC37C,0xC37D,0xC384,0xC388,0xC38C,0xC3C0,0xC3D8,0xC3D9, 0xC3DC,0xC3DF,0xC3E0,0xC3E2,0xC3E8,0xC3E9,0xC3ED,0xC3F4, 0xC3F5,0xC3F8,0xC408,0xC410,0xC424,0xC42C,0xC430,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 63, Array index 0x1B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xC434,0xC43C,0xC43D,0xC448,0xC464,0xC465,0xC468, 0xC46C,0xC474,0xC475,0xC479,0xC480,0xC494,0xC49C,0xC4B8, 0xC4BC,0xC4E9,0xC4F0,0xC4F1,0xC4F4,0xC4F8,0xC4FA,0xC4FF, 0xC500,0xC501,0xC50C,0xC510,0xC514,0xC51C,0xC528,0xC529, 0xC52C,0xC530,0xC538,0xC539,0xC53B,0xC53D,0xC544,0xC545, 0xC548,0xC549,0xC54A,0xC54C,0xC54D,0xC54E,0xC553,0xC554, 0xC555,0xC557,0xC558,0xC559,0xC55D,0xC55E,0xC560,0xC561, 0xC564,0xC568,0xC570,0xC571,0xC573,0xC574,0xC575,0xC57C, 0xC57D,0xC580,0xC584,0xC587,0xC58C,0xC58D,0xC58F,0xC591, 0xC595,0xC597,0xC598,0xC59C,0xC5A0,0xC5A9,0xC5B4,0xC5B5, 0xC5B8,0xC5B9,0xC5BB,0xC5BC,0xC5BD,0xC5BE,0xC5C4,0xC5C5, 0xC5C6,0xC5C7,0xC5C8,0xC5C9,0xC5CA,0xC5CC,0xC5CE,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 64, Array index 0x1C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xC5D0,0xC5D1,0xC5D4,0xC5D8,0xC5E0,0xC5E1,0xC5E3, 0xC5E5,0xC5EC,0xC5ED,0xC5EE,0xC5F0,0xC5F4,0xC5F6,0xC5F7, 0xC5FC,0xC5FD,0xC5FE,0xC5FF,0xC600,0xC601,0xC605,0xC606, 0xC607,0xC608,0xC60C,0xC610,0xC618,0xC619,0xC61B,0xC61C, 0xC624,0xC625,0xC628,0xC62C,0xC62D,0xC62E,0xC630,0xC633, 0xC634,0xC635,0xC637,0xC639,0xC63B,0xC640,0xC641,0xC644, 0xC648,0xC650,0xC651,0xC653,0xC654,0xC655,0xC65C,0xC65D, 0xC660,0xC66C,0xC66F,0xC671,0xC678,0xC679,0xC67C,0xC680, 0xC688,0xC689,0xC68B,0xC68D,0xC694,0xC695,0xC698,0xC69C, 0xC6A4,0xC6A5,0xC6A7,0xC6A9,0xC6B0,0xC6B1,0xC6B4,0xC6B8, 0xC6B9,0xC6BA,0xC6C0,0xC6C1,0xC6C3,0xC6C5,0xC6CC,0xC6CD, 0xC6D0,0xC6D4,0xC6DC,0xC6DD,0xC6E0,0xC6E1,0xC6E8,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 65, Array index 0x1D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xC6E9,0xC6EC,0xC6F0,0xC6F8,0xC6F9,0xC6FD,0xC704, 0xC705,0xC708,0xC70C,0xC714,0xC715,0xC717,0xC719,0xC720, 0xC721,0xC724,0xC728,0xC730,0xC731,0xC733,0xC735,0xC737, 0xC73C,0xC73D,0xC740,0xC744,0xC74A,0xC74C,0xC74D,0xC74F, 0xC751,0xC752,0xC753,0xC754,0xC755,0xC756,0xC757,0xC758, 0xC75C,0xC760,0xC768,0xC76B,0xC774,0xC775,0xC778,0xC77C, 0xC77D,0xC77E,0xC783,0xC784,0xC785,0xC787,0xC788,0xC789, 0xC78A,0xC78E,0xC790,0xC791,0xC794,0xC796,0xC797,0xC798, 0xC79A,0xC7A0,0xC7A1,0xC7A3,0xC7A4,0xC7A5,0xC7A6,0xC7AC, 0xC7AD,0xC7B0,0xC7B4,0xC7BC,0xC7BD,0xC7BF,0xC7C0,0xC7C1, 0xC7C8,0xC7C9,0xC7CC,0xC7CE,0xC7D0,0xC7D8,0xC7DD,0xC7E4, 0xC7E8,0xC7EC,0xC800,0xC801,0xC804,0xC808,0xC80A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 66, Array index 0x1E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xC810,0xC811,0xC813,0xC815,0xC816,0xC81C,0xC81D, 0xC820,0xC824,0xC82C,0xC82D,0xC82F,0xC831,0xC838,0xC83C, 0xC840,0xC848,0xC849,0xC84C,0xC84D,0xC854,0xC870,0xC871, 0xC874,0xC878,0xC87A,0xC880,0xC881,0xC883,0xC885,0xC886, 0xC887,0xC88B,0xC88C,0xC88D,0xC894,0xC89D,0xC89F,0xC8A1, 0xC8A8,0xC8BC,0xC8BD,0xC8C4,0xC8C8,0xC8CC,0xC8D4,0xC8D5, 0xC8D7,0xC8D9,0xC8E0,0xC8E1,0xC8E4,0xC8F5,0xC8FC,0xC8FD, 0xC900,0xC904,0xC905,0xC906,0xC90C,0xC90D,0xC90F,0xC911, 0xC918,0xC92C,0xC934,0xC950,0xC951,0xC954,0xC958,0xC960, 0xC961,0xC963,0xC96C,0xC970,0xC974,0xC97C,0xC988,0xC989, 0xC98C,0xC990,0xC998,0xC999,0xC99B,0xC99D,0xC9C0,0xC9C1, 0xC9C4,0xC9C7,0xC9C8,0xC9CA,0xC9D0,0xC9D1,0xC9D3,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 67, Array index 0x1F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xC9D5,0xC9D6,0xC9D9,0xC9DA,0xC9DC,0xC9DD,0xC9E0, 0xC9E2,0xC9E4,0xC9E7,0xC9EC,0xC9ED,0xC9EF,0xC9F0,0xC9F1, 0xC9F8,0xC9F9,0xC9FC,0xCA00,0xCA08,0xCA09,0xCA0B,0xCA0C, 0xCA0D,0xCA14,0xCA18,0xCA29,0xCA4C,0xCA4D,0xCA50,0xCA54, 0xCA5C,0xCA5D,0xCA5F,0xCA60,0xCA61,0xCA68,0xCA7D,0xCA84, 0xCA98,0xCABC,0xCABD,0xCAC0,0xCAC4,0xCACC,0xCACD,0xCACF, 0xCAD1,0xCAD3,0xCAD8,0xCAD9,0xCAE0,0xCAEC,0xCAF4,0xCB08, 0xCB10,0xCB14,0xCB18,0xCB20,0xCB21,0xCB41,0xCB48,0xCB49, 0xCB4C,0xCB50,0xCB58,0xCB59,0xCB5D,0xCB64,0xCB78,0xCB79, 0xCB9C,0xCBB8,0xCBD4,0xCBE4,0xCBE7,0xCBE9,0xCC0C,0xCC0D, 0xCC10,0xCC14,0xCC1C,0xCC1D,0xCC21,0xCC22,0xCC27,0xCC28, 0xCC29,0xCC2C,0xCC2E,0xCC30,0xCC38,0xCC39,0xCC3B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 68, Array index 0x2000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xCC3C,0xCC3D,0xCC3E,0xCC44,0xCC45,0xCC48,0xCC4C, 0xCC54,0xCC55,0xCC57,0xCC58,0xCC59,0xCC60,0xCC64,0xCC66, 0xCC68,0xCC70,0xCC75,0xCC98,0xCC99,0xCC9C,0xCCA0,0xCCA8, 0xCCA9,0xCCAB,0xCCAC,0xCCAD,0xCCB4,0xCCB5,0xCCB8,0xCCBC, 0xCCC4,0xCCC5,0xCCC7,0xCCC9,0xCCD0,0xCCD4,0xCCE4,0xCCEC, 0xCCF0,0xCD01,0xCD08,0xCD09,0xCD0C,0xCD10,0xCD18,0xCD19, 0xCD1B,0xCD1D,0xCD24,0xCD28,0xCD2C,0xCD39,0xCD5C,0xCD60, 0xCD64,0xCD6C,0xCD6D,0xCD6F,0xCD71,0xCD78,0xCD88,0xCD94, 0xCD95,0xCD98,0xCD9C,0xCDA4,0xCDA5,0xCDA7,0xCDA9,0xCDB0, 0xCDC4,0xCDCC,0xCDD0,0xCDE8,0xCDEC,0xCDF0,0xCDF8,0xCDF9, 0xCDFB,0xCDFD,0xCE04,0xCE08,0xCE0C,0xCE14,0xCE19,0xCE20, 0xCE21,0xCE24,0xCE28,0xCE30,0xCE31,0xCE33,0xCE35,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 69, Array index 0x2100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xCE58,0xCE59,0xCE5C,0xCE5F,0xCE60,0xCE61,0xCE68, 0xCE69,0xCE6B,0xCE6D,0xCE74,0xCE75,0xCE78,0xCE7C,0xCE84, 0xCE85,0xCE87,0xCE89,0xCE90,0xCE91,0xCE94,0xCE98,0xCEA0, 0xCEA1,0xCEA3,0xCEA4,0xCEA5,0xCEAC,0xCEAD,0xCEC1,0xCEE4, 0xCEE5,0xCEE8,0xCEEB,0xCEEC,0xCEF4,0xCEF5,0xCEF7,0xCEF8, 0xCEF9,0xCF00,0xCF01,0xCF04,0xCF08,0xCF10,0xCF11,0xCF13, 0xCF15,0xCF1C,0xCF20,0xCF24,0xCF2C,0xCF2D,0xCF2F,0xCF30, 0xCF31,0xCF38,0xCF54,0xCF55,0xCF58,0xCF5C,0xCF64,0xCF65, 0xCF67,0xCF69,0xCF70,0xCF71,0xCF74,0xCF78,0xCF80,0xCF85, 0xCF8C,0xCFA1,0xCFA8,0xCFB0,0xCFC4,0xCFE0,0xCFE1,0xCFE4, 0xCFE8,0xCFF0,0xCFF1,0xCFF3,0xCFF5,0xCFFC,0xD000,0xD004, 0xD011,0xD018,0xD02D,0xD034,0xD035,0xD038,0xD03C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 70, Array index 0x2200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xD044,0xD045,0xD047,0xD049,0xD050,0xD054,0xD058, 0xD060,0xD06C,0xD06D,0xD070,0xD074,0xD07C,0xD07D,0xD081, 0xD0A4,0xD0A5,0xD0A8,0xD0AC,0xD0B4,0xD0B5,0xD0B7,0xD0B9, 0xD0C0,0xD0C1,0xD0C4,0xD0C8,0xD0C9,0xD0D0,0xD0D1,0xD0D3, 0xD0D4,0xD0D5,0xD0DC,0xD0DD,0xD0E0,0xD0E4,0xD0EC,0xD0ED, 0xD0EF,0xD0F0,0xD0F1,0xD0F8,0xD10D,0xD130,0xD131,0xD134, 0xD138,0xD13A,0xD140,0xD141,0xD143,0xD144,0xD145,0xD14C, 0xD14D,0xD150,0xD154,0xD15C,0xD15D,0xD15F,0xD161,0xD168, 0xD16C,0xD17C,0xD184,0xD188,0xD1A0,0xD1A1,0xD1A4,0xD1A8, 0xD1B0,0xD1B1,0xD1B3,0xD1B5,0xD1BA,0xD1BC,0xD1C0,0xD1D8, 0xD1F4,0xD1F8,0xD207,0xD209,0xD210,0xD22C,0xD22D,0xD230, 0xD234,0xD23C,0xD23D,0xD23F,0xD241,0xD248,0xD25C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 71, Array index 0x2300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xD264,0xD280,0xD281,0xD284,0xD288,0xD290,0xD291, 0xD295,0xD29C,0xD2A0,0xD2A4,0xD2AC,0xD2B1,0xD2B8,0xD2B9, 0xD2BC,0xD2BF,0xD2C0,0xD2C2,0xD2C8,0xD2C9,0xD2CB,0xD2D4, 0xD2D8,0xD2DC,0xD2E4,0xD2E5,0xD2F0,0xD2F1,0xD2F4,0xD2F8, 0xD300,0xD301,0xD303,0xD305,0xD30C,0xD30D,0xD30E,0xD310, 0xD314,0xD316,0xD31C,0xD31D,0xD31F,0xD320,0xD321,0xD325, 0xD328,0xD329,0xD32C,0xD330,0xD338,0xD339,0xD33B,0xD33C, 0xD33D,0xD344,0xD345,0xD37C,0xD37D,0xD380,0xD384,0xD38C, 0xD38D,0xD38F,0xD390,0xD391,0xD398,0xD399,0xD39C,0xD3A0, 0xD3A8,0xD3A9,0xD3AB,0xD3AD,0xD3B4,0xD3B8,0xD3BC,0xD3C4, 0xD3C5,0xD3C8,0xD3C9,0xD3D0,0xD3D8,0xD3E1,0xD3E3,0xD3EC, 0xD3ED,0xD3F0,0xD3F4,0xD3FC,0xD3FD,0xD3FF,0xD401,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 72, Array index 0x2400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xD408,0xD41D,0xD440,0xD444,0xD45C,0xD460,0xD464, 0xD46D,0xD46F,0xD478,0xD479,0xD47C,0xD47F,0xD480,0xD482, 0xD488,0xD489,0xD48B,0xD48D,0xD494,0xD4A9,0xD4CC,0xD4D0, 0xD4D4,0xD4DC,0xD4DF,0xD4E8,0xD4EC,0xD4F0,0xD4F8,0xD4FB, 0xD4FD,0xD504,0xD508,0xD50C,0xD514,0xD515,0xD517,0xD53C, 0xD53D,0xD540,0xD544,0xD54C,0xD54D,0xD54F,0xD551,0xD558, 0xD559,0xD55C,0xD560,0xD565,0xD568,0xD569,0xD56B,0xD56D, 0xD574,0xD575,0xD578,0xD57C,0xD584,0xD585,0xD587,0xD588, 0xD589,0xD590,0xD5A5,0xD5C8,0xD5C9,0xD5CC,0xD5D0,0xD5D2, 0xD5D8,0xD5D9,0xD5DB,0xD5DD,0xD5E4,0xD5E5,0xD5E8,0xD5EC, 0xD5F4,0xD5F5,0xD5F7,0xD5F9,0xD600,0xD601,0xD604,0xD608, 0xD610,0xD611,0xD613,0xD614,0xD615,0xD61C,0xD620,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 73, Array index 0x2500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xD624,0xD62D,0xD638,0xD639,0xD63C,0xD640,0xD645, 0xD648,0xD649,0xD64B,0xD64D,0xD651,0xD654,0xD655,0xD658, 0xD65C,0xD667,0xD669,0xD670,0xD671,0xD674,0xD683,0xD685, 0xD68C,0xD68D,0xD690,0xD694,0xD69D,0xD69F,0xD6A1,0xD6A8, 0xD6AC,0xD6B0,0xD6B9,0xD6BB,0xD6C4,0xD6C5,0xD6C8,0xD6CC, 0xD6D1,0xD6D4,0xD6D7,0xD6D9,0xD6E0,0xD6E4,0xD6E8,0xD6F0, 0xD6F5,0xD6FC,0xD6FD,0xD700,0xD704,0xD711,0xD718,0xD719, 0xD71C,0xD720,0xD728,0xD729,0xD72B,0xD72D,0xD734,0xD735, 0xD738,0xD73C,0xD744,0xD747,0xD749,0xD750,0xD751,0xD754, 0xD756,0xD757,0xD758,0xD759,0xD760,0xD761,0xD763,0xD765, 0xD769,0xD76C,0xD770,0xD774,0xD77C,0xD77D,0xD781,0xD788, 0xD789,0xD78C,0xD790,0xD798,0xD799,0xD79B,0xD79D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 75, Array index 0x2600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4F3D,0x4F73,0x5047,0x50F9,0x52A0,0x53EF,0x5475, 0x54E5,0x5609,0x5AC1,0x5BB6,0x6687,0x67B6,0x67B7,0x67EF, 0x6B4C,0x73C2,0x75C2,0x7A3C,0x82DB,0x8304,0x8857,0x8888, 0x8A36,0x8CC8,0x8DCF,0x8EFB,0x8FE6,0x99D5,0x523B,0x5374, 0x5404,0x606A,0x6164,0x6BBC,0x73CF,0x811A,0x89BA,0x89D2, 0x95A3,0x4F83,0x520A,0x58BE,0x5978,0x59E6,0x5E72,0x5E79, 0x61C7,0x63C0,0x6746,0x67EC,0x687F,0x6F97,0x764E,0x770B, 0x78F5,0x7A08,0x7AFF,0x7C21,0x809D,0x826E,0x8271,0x8AEB, 0x9593,0x4E6B,0x559D,0x66F7,0x6E34,0x78A3,0x7AED,0x845B, 0x8910,0x874E,0x97A8,0x52D8,0x574E,0x582A,0x5D4C,0x611F, 0x61BE,0x6221,0x6562,0x67D1,0x6A44,0x6E1B,0x7518,0x75B3, 0x76E3,0x77B0,0x7D3A,0x90AF,0x9451,0x9452,0x9F95,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 76, Array index 0x2700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5323,0x5CAC,0x7532,0x80DB,0x9240,0x9598,0x525B, 0x5808,0x59DC,0x5CA1,0x5D17,0x5EB7,0x5F3A,0x5F4A,0x6177, 0x6C5F,0x757A,0x7586,0x7CE0,0x7D73,0x7DB1,0x7F8C,0x8154, 0x8221,0x8591,0x8941,0x8B1B,0x92FC,0x964D,0x9C47,0x4ECB, 0x4EF7,0x500B,0x51F1,0x584F,0x6137,0x613E,0x6168,0x6539, 0x69EA,0x6F11,0x75A5,0x7686,0x76D6,0x7B87,0x82A5,0x84CB, 0xF900,0x93A7,0x958B,0x5580,0x5BA2,0x5751,0xF901,0x7CB3, 0x7FB9,0x91B5,0x5028,0x53BB,0x5C45,0x5DE8,0x62D2,0x636E, 0x64DA,0x64E7,0x6E20,0x70AC,0x795B,0x8DDD,0x8E1E,0xF902, 0x907D,0x9245,0x92F8,0x4E7E,0x4EF6,0x5065,0x5DFE,0x5EFA, 0x6106,0x6957,0x8171,0x8654,0x8E47,0x9375,0x9A2B,0x4E5E, 0x5091,0x6770,0x6840,0x5109,0x528D,0x5292,0x6AA2,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 77, Array index 0x2800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x77BC,0x9210,0x9ED4,0x52AB,0x602F,0x8FF2,0x5048, 0x61A9,0x63ED,0x64CA,0x683C,0x6A84,0x6FC0,0x8188,0x89A1, 0x9694,0x5805,0x727D,0x72AC,0x7504,0x7D79,0x7E6D,0x80A9, 0x898B,0x8B74,0x9063,0x9D51,0x6289,0x6C7A,0x6F54,0x7D50, 0x7F3A,0x8A23,0x517C,0x614A,0x7B9D,0x8B19,0x9257,0x938C, 0x4EAC,0x4FD3,0x501E,0x50BE,0x5106,0x52C1,0x52CD,0x537F, 0x5770,0x5883,0x5E9A,0x5F91,0x6176,0x61AC,0x64CE,0x656C, 0x666F,0x66BB,0x66F4,0x6897,0x6D87,0x7085,0x70F1,0x749F, 0x74A5,0x74CA,0x75D9,0x786C,0x78EC,0x7ADF,0x7AF6,0x7D45, 0x7D93,0x8015,0x803F,0x811B,0x8396,0x8B66,0x8F15,0x9015, 0x93E1,0x9803,0x9838,0x9A5A,0x9BE8,0x4FC2,0x5553,0x583A, 0x5951,0x5B63,0x5C46,0x60B8,0x6212,0x6842,0x68B0,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 78, Array index 0x2900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x68E8,0x6EAA,0x754C,0x7678,0x78CE,0x7A3D,0x7CFB, 0x7E6B,0x7E7C,0x8A08,0x8AA1,0x8C3F,0x968E,0x9DC4,0x53E4, 0x53E9,0x544A,0x5471,0x56FA,0x59D1,0x5B64,0x5C3B,0x5EAB, 0x62F7,0x6537,0x6545,0x6572,0x66A0,0x67AF,0x69C1,0x6CBD, 0x75FC,0x7690,0x777E,0x7A3F,0x7F94,0x8003,0x80A1,0x818F, 0x82E6,0x82FD,0x83F0,0x85C1,0x8831,0x88B4,0x8AA5,0xF903, 0x8F9C,0x932E,0x96C7,0x9867,0x9AD8,0x9F13,0x54ED,0x659B, 0x66F2,0x688F,0x7A40,0x8C37,0x9D60,0x56F0,0x5764,0x5D11, 0x6606,0x68B1,0x68CD,0x6EFE,0x7428,0x889E,0x9BE4,0x6C68, 0xF904,0x9AA8,0x4F9B,0x516C,0x5171,0x529F,0x5B54,0x5DE5, 0x6050,0x606D,0x62F1,0x63A7,0x653B,0x73D9,0x7A7A,0x86A3, 0x8CA2,0x978F,0x4E32,0x5BE1,0x6208,0x679C,0x74DC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 79, Array index 0x2A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x79D1,0x83D3,0x8A87,0x8AB2,0x8DE8,0x904E,0x934B, 0x9846,0x5ED3,0x69E8,0x85FF,0x90ED,0xF905,0x51A0,0x5B98, 0x5BEC,0x6163,0x68FA,0x6B3E,0x704C,0x742F,0x74D8,0x7BA1, 0x7F50,0x83C5,0x89C0,0x8CAB,0x95DC,0x9928,0x522E,0x605D, 0x62EC,0x9002,0x4F8A,0x5149,0x5321,0x58D9,0x5EE3,0x66E0, 0x6D38,0x709A,0x72C2,0x73D6,0x7B50,0x80F1,0x945B,0x5366, 0x639B,0x7F6B,0x4E56,0x5080,0x584A,0x58DE,0x602A,0x6127, 0x62D0,0x69D0,0x9B41,0x5B8F,0x7D18,0x80B1,0x8F5F,0x4EA4, 0x50D1,0x54AC,0x55AC,0x5B0C,0x5DA0,0x5DE7,0x652A,0x654E, 0x6821,0x6A4B,0x72E1,0x768E,0x77EF,0x7D5E,0x7FF9,0x81A0, 0x854E,0x86DF,0x8F03,0x8F4E,0x90CA,0x9903,0x9A55,0x9BAB, 0x4E18,0x4E45,0x4E5D,0x4EC7,0x4FF1,0x5177,0x52FE,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 80, Array index 0x2B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5340,0x53E3,0x53E5,0x548E,0x5614,0x5775,0x57A2, 0x5BC7,0x5D87,0x5ED0,0x61FC,0x62D8,0x6551,0x67B8,0x67E9, 0x69CB,0x6B50,0x6BC6,0x6BEC,0x6C42,0x6E9D,0x7078,0x72D7, 0x7396,0x7403,0x77BF,0x77E9,0x7A76,0x7D7F,0x8009,0x81FC, 0x8205,0x820A,0x82DF,0x8862,0x8B33,0x8CFC,0x8EC0,0x9011, 0x90B1,0x9264,0x92B6,0x99D2,0x9A45,0x9CE9,0x9DD7,0x9F9C, 0x570B,0x5C40,0x83CA,0x97A0,0x97AB,0x9EB4,0x541B,0x7A98, 0x7FA4,0x88D9,0x8ECD,0x90E1,0x5800,0x5C48,0x6398,0x7A9F, 0x5BAE,0x5F13,0x7A79,0x7AAE,0x828E,0x8EAC,0x5026,0x5238, 0x52F8,0x5377,0x5708,0x62F3,0x6372,0x6B0A,0x6DC3,0x7737, 0x53A5,0x7357,0x8568,0x8E76,0x95D5,0x673A,0x6AC3,0x6F70, 0x8A6D,0x8ECC,0x994B,0xF906,0x6677,0x6B78,0x8CB4,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 81, Array index 0x2C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9B3C,0xF907,0x53EB,0x572D,0x594E,0x63C6,0x69FB, 0x73EA,0x7845,0x7ABA,0x7AC5,0x7CFE,0x8475,0x898F,0x8D73, 0x9035,0x95A8,0x52FB,0x5747,0x7547,0x7B60,0x83CC,0x921E, 0xF908,0x6A58,0x514B,0x524B,0x5287,0x621F,0x68D8,0x6975, 0x9699,0x50C5,0x52A4,0x52E4,0x61C3,0x65A4,0x6839,0x69FF, 0x747E,0x7B4B,0x82B9,0x83EB,0x89B2,0x8B39,0x8FD1,0x9949, 0xF909,0x4ECA,0x5997,0x64D2,0x6611,0x6A8E,0x7434,0x7981, 0x79BD,0x82A9,0x887E,0x887F,0x895F,0xF90A,0x9326,0x4F0B, 0x53CA,0x6025,0x6271,0x6C72,0x7D1A,0x7D66,0x4E98,0x5162, 0x77DC,0x80AF,0x4F01,0x4F0E,0x5176,0x5180,0x55DC,0x5668, 0x573B,0x57FA,0x57FC,0x5914,0x5947,0x5993,0x5BC4,0x5C90, 0x5D0E,0x5DF1,0x5E7E,0x5FCC,0x6280,0x65D7,0x65E3,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 82, Array index 0x2D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x671E,0x671F,0x675E,0x68CB,0x68C4,0x6A5F,0x6B3A, 0x6C23,0x6C7D,0x6C82,0x6DC7,0x7398,0x7426,0x742A,0x7482, 0x74A3,0x7578,0x757F,0x7881,0x78EF,0x7941,0x7947,0x7948, 0x797A,0x7B95,0x7D00,0x7DBA,0x7F88,0x8006,0x802D,0x808C, 0x8A18,0x8B4F,0x8C48,0x8D77,0x9321,0x9324,0x98E2,0x9951, 0x9A0E,0x9A0F,0x9A65,0x9E92,0x7DCA,0x4F76,0x5409,0x62EE, 0x6854,0x91D1,0x55AB,0x513A,0xF90B,0xF90C,0x5A1C,0x61E6, 0xF90D,0x62CF,0x62FF,0xF90E,0xF90F,0xF910,0xF911,0xF912, 0xF913,0x90A3,0xF914,0xF915,0xF916,0xF917,0xF918,0x8AFE, 0xF919,0xF91A,0xF91B,0xF91C,0x6696,0xF91D,0x7156,0xF91E, 0xF91F,0x96E3,0xF920,0x634F,0x637A,0x5357,0xF921,0x678F, 0x6960,0x6E73,0xF922,0x7537,0xF923,0xF924,0xF925,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 83, Array index 0x2E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7D0D,0xF926,0xF927,0x8872,0x56CA,0x5A18,0xF928, 0xF929,0xF92A,0xF92B,0xF92C,0x4E43,0xF92D,0x5167,0x5948, 0x67F0,0x8010,0xF92E,0x5973,0x5E74,0x649A,0x79CA,0x5FF5, 0x606C,0x62C8,0x637B,0x5BE7,0x5BD7,0x52AA,0xF92F,0x5974, 0x5F29,0x6012,0xF930,0xF931,0xF932,0x7459,0xF933,0xF934, 0xF935,0xF936,0xF937,0xF938,0x99D1,0xF939,0xF93A,0xF93B, 0xF93C,0xF93D,0xF93E,0xF93F,0xF940,0xF941,0xF942,0xF943, 0x6FC3,0xF944,0xF945,0x81BF,0x8FB2,0x60F1,0xF946,0xF947, 0x8166,0xF948,0xF949,0x5C3F,0xF94A,0xF94B,0xF94C,0xF94D, 0xF94E,0xF94F,0xF950,0xF951,0x5AE9,0x8A25,0x677B,0x7D10, 0xF952,0xF953,0xF954,0xF955,0xF956,0xF957,0x80FD,0xF958, 0xF959,0x5C3C,0x6CE5,0x533F,0x6EBA,0x591A,0x8336,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 84, Array index 0x2F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4E39,0x4EB6,0x4F46,0x55AE,0x5718,0x58C7,0x5F56, 0x65B7,0x65E6,0x6A80,0x6BB5,0x6E4D,0x77ED,0x7AEF,0x7C1E, 0x7DDE,0x86CB,0x8892,0x9132,0x935B,0x64BB,0x6FBE,0x737A, 0x75B8,0x9054,0x5556,0x574D,0x61BA,0x64D4,0x66C7,0x6DE1, 0x6E5B,0x6F6D,0x6FB9,0x75F0,0x8043,0x81BD,0x8541,0x8983, 0x8AC7,0x8B5A,0x931F,0x6C93,0x7553,0x7B54,0x8E0F,0x905D, 0x5510,0x5802,0x5858,0x5E62,0x6207,0x649E,0x68E0,0x7576, 0x7CD6,0x87B3,0x9EE8,0x4EE3,0x5788,0x576E,0x5927,0x5C0D, 0x5CB1,0x5E36,0x5F85,0x6234,0x64E1,0x73B3,0x81FA,0x888B, 0x8CB8,0x968A,0x9EDB,0x5B85,0x5FB7,0x60B3,0x5012,0x5200, 0x5230,0x5716,0x5835,0x5857,0x5C0E,0x5C60,0x5CF6,0x5D8B, 0x5EA6,0x5F92,0x60BC,0x6311,0x6389,0x6417,0x6843,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 85, Array index 0x3000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x68F9,0x6AC2,0x6DD8,0x6E21,0x6ED4,0x6FE4,0x71FE, 0x76DC,0x7779,0x79B1,0x7A3B,0x8404,0x89A9,0x8CED,0x8DF3, 0x8E48,0x9003,0x9014,0x9053,0x90FD,0x934D,0x9676,0x97DC, 0x6BD2,0x7006,0x7258,0x72A2,0x7368,0x7763,0x79BF,0x7BE4, 0x7E9B,0x8B80,0x58A9,0x60C7,0x6566,0x65FD,0x66BE,0x6C8C, 0x711E,0x71C9,0x8C5A,0x9813,0x4E6D,0x7A81,0x4EDD,0x51AC, 0x51CD,0x52D5,0x540C,0x61A7,0x6771,0x6850,0x68DF,0x6D1E, 0x6F7C,0x75BC,0x77B3,0x7AE5,0x80F4,0x8463,0x9285,0x515C, 0x6597,0x675C,0x6793,0x75D8,0x7AC7,0x8373,0xF95A,0x8C46, 0x9017,0x982D,0x5C6F,0x81C0,0x829A,0x9041,0x906F,0x920D, 0x5F97,0x5D9D,0x6A59,0x71C8,0x767B,0x7B49,0x85E4,0x8B04, 0x9127,0x9A30,0x5587,0x61F6,0xF95B,0x7669,0x7F85,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 86, Array index 0x3100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x863F,0x87BA,0x88F8,0x908F,0xF95C,0x6D1B,0x70D9, 0x73DE,0x7D61,0x843D,0xF95D,0x916A,0x99F1,0xF95E,0x4E82, 0x5375,0x6B04,0x6B12,0x703E,0x721B,0x862D,0x9E1E,0x524C, 0x8FA3,0x5D50,0x64E5,0x652C,0x6B16,0x6FEB,0x7C43,0x7E9C, 0x85CD,0x8964,0x89BD,0x62C9,0x81D8,0x881F,0x5ECA,0x6717, 0x6D6A,0x72FC,0x7405,0x746F,0x8782,0x90DE,0x4F86,0x5D0D, 0x5FA0,0x840A,0x51B7,0x63A0,0x7565,0x4EAE,0x5006,0x5169, 0x51C9,0x6881,0x6A11,0x7CAE,0x7CB1,0x7CE7,0x826F,0x8AD2, 0x8F1B,0x91CF,0x4FB6,0x5137,0x52F5,0x5442,0x5EEC,0x616E, 0x623E,0x65C5,0x6ADA,0x6FFE,0x792A,0x85DC,0x8823,0x95AD, 0x9A62,0x9A6A,0x9E97,0x9ECE,0x529B,0x66C6,0x6B77,0x701D, 0x792B,0x8F62,0x9742,0x6190,0x6200,0x6523,0x6F23,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 87, Array index 0x3200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7149,0x7489,0x7DF4,0x806F,0x84EE,0x8F26,0x9023, 0x934A,0x51BD,0x5217,0x52A3,0x6D0C,0x70C8,0x88C2,0x5EC9, 0x6582,0x6BAE,0x6FC2,0x7C3E,0x7375,0x4EE4,0x4F36,0x56F9, 0xF95F,0x5CBA,0x5DBA,0x601C,0x73B2,0x7B2D,0x7F9A,0x7FCE, 0x8046,0x901E,0x9234,0x96F6,0x9748,0x9818,0x9F61,0x4F8B, 0x6FA7,0x79AE,0x91B4,0x96B7,0x52DE,0xF960,0x6488,0x64C4, 0x6AD3,0x6F5E,0x7018,0x7210,0x76E7,0x8001,0x8606,0x865C, 0x8DEF,0x8F05,0x9732,0x9B6F,0x9DFA,0x9E75,0x788C,0x797F, 0x7DA0,0x83C9,0x9304,0x9E7F,0x9E93,0x8AD6,0x58DF,0x5F04, 0x6727,0x7027,0x74CF,0x7C60,0x807E,0x5121,0x7028,0x7262, 0x78CA,0x8CC2,0x8CDA,0x8CF4,0x96F7,0x4E86,0x50DA,0x5BEE, 0x5ED6,0x6599,0x71CE,0x7642,0x77AD,0x804A,0x84FC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 88, Array index 0x3300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x907C,0x9B27,0x9F8D,0x58D8,0x5A41,0x5C62,0x6A13, 0x6DDA,0x6F0F,0x763B,0x7D2F,0x7E37,0x851E,0x8938,0x93E4, 0x964B,0x5289,0x65D2,0x67F3,0x69B4,0x6D41,0x6E9C,0x700F, 0x7409,0x7460,0x7559,0x7624,0x786B,0x8B2C,0x985E,0x516D, 0x622E,0x9678,0x4F96,0x502B,0x5D19,0x6DEA,0x7DB8,0x8F2A, 0x5F8B,0x6144,0x6817,0xF961,0x9686,0x52D2,0x808B,0x51DC, 0x51CC,0x695E,0x7A1C,0x7DBE,0x83F1,0x9675,0x4FDA,0x5229, 0x5398,0x540F,0x550E,0x5C65,0x60A7,0x674E,0x68A8,0x6D6C, 0x7281,0x72F8,0x7406,0x7483,0xF962,0x75E2,0x7C6C,0x7F79, 0x7FB8,0x8389,0x88CF,0x88E1,0x91CC,0x91D0,0x96E2,0x9BC9, 0x541D,0x6F7E,0x71D0,0x7498,0x85FA,0x8EAA,0x96A3,0x9C57, 0x9E9F,0x6797,0x6DCB,0x7433,0x81E8,0x9716,0x782C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 89, Array index 0x3400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7ACB,0x7B20,0x7C92,0x6469,0x746A,0x75F2,0x78BC, 0x78E8,0x99AC,0x9B54,0x9EBB,0x5BDE,0x5E55,0x6F20,0x819C, 0x83AB,0x9088,0x4E07,0x534D,0x5A29,0x5DD2,0x5F4E,0x6162, 0x633D,0x6669,0x66FC,0x6EFF,0x6F2B,0x7063,0x779E,0x842C, 0x8513,0x883B,0x8F13,0x9945,0x9C3B,0x551C,0x62B9,0x672B, 0x6CAB,0x8309,0x896A,0x977A,0x4EA1,0x5984,0x5FD8,0x5FD9, 0x671B,0x7DB2,0x7F54,0x8292,0x832B,0x83BD,0x8F1E,0x9099, 0x57CB,0x59B9,0x5A92,0x5BD0,0x6627,0x679A,0x6885,0x6BCF, 0x7164,0x7F75,0x8CB7,0x8CE3,0x9081,0x9B45,0x8108,0x8C8A, 0x964C,0x9A40,0x9EA5,0x5B5F,0x6C13,0x731B,0x76F2,0x76DF, 0x840C,0x51AA,0x8993,0x514D,0x5195,0x52C9,0x68C9,0x6C94, 0x7704,0x7720,0x7DBF,0x7DEC,0x9762,0x9EB5,0x6EC5,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 90, Array index 0x3500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8511,0x51A5,0x540D,0x547D,0x660E,0x669D,0x6927, 0x6E9F,0x76BF,0x7791,0x8317,0x84C2,0x879F,0x9169,0x9298, 0x9CF4,0x8882,0x4FAE,0x5192,0x52DF,0x59C6,0x5E3D,0x6155, 0x6478,0x6479,0x66AE,0x67D0,0x6A21,0x6BCD,0x6BDB,0x725F, 0x7261,0x7441,0x7738,0x77DB,0x8017,0x82BC,0x8305,0x8B00, 0x8B28,0x8C8C,0x6728,0x6C90,0x7267,0x76EE,0x7766,0x7A46, 0x9DA9,0x6B7F,0x6C92,0x5922,0x6726,0x8499,0x536F,0x5893, 0x5999,0x5EDF,0x63CF,0x6634,0x6773,0x6E3A,0x732B,0x7AD7, 0x82D7,0x9328,0x52D9,0x5DEB,0x61AE,0x61CB,0x620A,0x62C7, 0x64AB,0x65E0,0x6959,0x6B66,0x6BCB,0x7121,0x73F7,0x755D, 0x7E46,0x821E,0x8302,0x856A,0x8AA3,0x8CBF,0x9727,0x9D61, 0x58A8,0x9ED8,0x5011,0x520E,0x543B,0x554F,0x6587,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 91, Array index 0x3600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6C76,0x7D0A,0x7D0B,0x805E,0x868A,0x9580,0x96EF, 0x52FF,0x6C95,0x7269,0x5473,0x5A9A,0x5C3E,0x5D4B,0x5F4C, 0x5FAE,0x672A,0x68B6,0x6963,0x6E3C,0x6E44,0x7709,0x7C73, 0x7F8E,0x8587,0x8B0E,0x8FF7,0x9761,0x9EF4,0x5CB7,0x60B6, 0x610D,0x61AB,0x654F,0x65FB,0x65FC,0x6C11,0x6CEF,0x739F, 0x73C9,0x7DE1,0x9594,0x5BC6,0x871C,0x8B10,0x525D,0x535A, 0x62CD,0x640F,0x64B2,0x6734,0x6A38,0x6CCA,0x73C0,0x749E, 0x7B94,0x7C95,0x7E1B,0x818A,0x8236,0x8584,0x8FEB,0x96F9, 0x99C1,0x4F34,0x534A,0x53CD,0x53DB,0x62CC,0x642C,0x6500, 0x6591,0x69C3,0x6CEE,0x6F58,0x73ED,0x7554,0x7622,0x76E4, 0x76FC,0x78D0,0x78FB,0x792C,0x7D46,0x822C,0x87E0,0x8FD4, 0x9812,0x98EF,0x52C3,0x62D4,0x64A5,0x6E24,0x6F51,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 92, Array index 0x3700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x767C,0x8DCB,0x91B1,0x9262,0x9AEE,0x9B43,0x5023, 0x508D,0x574A,0x59A8,0x5C28,0x5E47,0x5F77,0x623F,0x653E, 0x65B9,0x65C1,0x6609,0x678B,0x699C,0x6EC2,0x78C5,0x7D21, 0x80AA,0x8180,0x822B,0x82B3,0x84A1,0x868C,0x8A2A,0x8B17, 0x90A6,0x9632,0x9F90,0x500D,0x4FF3,0xF963,0x57F9,0x5F98, 0x62DC,0x6392,0x676F,0x6E43,0x7119,0x76C3,0x80CC,0x80DA, 0x88F4,0x88F5,0x8919,0x8CE0,0x8F29,0x914D,0x966A,0x4F2F, 0x4F70,0x5E1B,0x67CF,0x6822,0x767D,0x767E,0x9B44,0x5E61, 0x6A0A,0x7169,0x71D4,0x756A,0xF964,0x7E41,0x8543,0x85E9, 0x98DC,0x4F10,0x7B4F,0x7F70,0x95A5,0x51E1,0x5E06,0x68B5, 0x6C3E,0x6C4E,0x6CDB,0x72AF,0x7BC4,0x8303,0x6CD5,0x743A, 0x50FB,0x5288,0x58C1,0x64D8,0x6A97,0x74A7,0x7656,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 93, Array index 0x3800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x78A7,0x8617,0x95E2,0x9739,0xF965,0x535E,0x5F01, 0x8B8A,0x8FA8,0x8FAF,0x908A,0x5225,0x77A5,0x9C49,0x9F08, 0x4E19,0x5002,0x5175,0x5C5B,0x5E77,0x661E,0x663A,0x67C4, 0x68C5,0x70B3,0x7501,0x75C5,0x79C9,0x7ADD,0x8F27,0x9920, 0x9A08,0x4FDD,0x5821,0x5831,0x5BF6,0x666E,0x6B65,0x6D11, 0x6E7A,0x6F7D,0x73E4,0x752B,0x83E9,0x88DC,0x8913,0x8B5C, 0x8F14,0x4F0F,0x50D5,0x5310,0x535C,0x5B93,0x5FA9,0x670D, 0x798F,0x8179,0x832F,0x8514,0x8907,0x8986,0x8F39,0x8F3B, 0x99A5,0x9C12,0x672C,0x4E76,0x4FF8,0x5949,0x5C01,0x5CEF, 0x5CF0,0x6367,0x68D2,0x70FD,0x71A2,0x742B,0x7E2B,0x84EC, 0x8702,0x9022,0x92D2,0x9CF3,0x4E0D,0x4ED8,0x4FEF,0x5085, 0x5256,0x526F,0x5426,0x5490,0x57E0,0x592B,0x5A66,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 94, Array index 0x3900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5B5A,0x5B75,0x5BCC,0x5E9C,0xF966,0x6276,0x6577, 0x65A7,0x6D6E,0x6EA5,0x7236,0x7B26,0x7C3F,0x7F36,0x8150, 0x8151,0x819A,0x8240,0x8299,0x83A9,0x8A03,0x8CA0,0x8CE6, 0x8CFB,0x8D74,0x8DBA,0x90E8,0x91DC,0x961C,0x9644,0x99D9, 0x9CE7,0x5317,0x5206,0x5429,0x5674,0x58B3,0x5954,0x596E, 0x5FFF,0x61A4,0x626E,0x6610,0x6C7E,0x711A,0x76C6,0x7C89, 0x7CDE,0x7D1B,0x82AC,0x8CC1,0x96F0,0xF967,0x4F5B,0x5F17, 0x5F7F,0x62C2,0x5D29,0x670B,0x68DA,0x787C,0x7E43,0x9D6C, 0x4E15,0x5099,0x5315,0x532A,0x5351,0x5983,0x5A62,0x5E87, 0x60B2,0x618A,0x6249,0x6279,0x6590,0x6787,0x69A7,0x6BD4, 0x6BD6,0x6BD7,0x6BD8,0x6CB8,0xF968,0x7435,0x75FA,0x7812, 0x7891,0x79D5,0x79D8,0x7C83,0x7DCB,0x7FE1,0x80A5,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 95, Array index 0x3A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x813E,0x81C2,0x83F2,0x871A,0x88E8,0x8AB9,0x8B6C, 0x8CBB,0x9119,0x975E,0x98DB,0x9F3B,0x56AC,0x5B2A,0x5F6C, 0x658C,0x6AB3,0x6BAF,0x6D5C,0x6FF1,0x7015,0x725D,0x73AD, 0x8CA7,0x8CD3,0x983B,0x6191,0x6C37,0x8058,0x9A01,0x4E4D, 0x4E8B,0x4E9B,0x4ED5,0x4F3A,0x4F3C,0x4F7F,0x4FDF,0x50FF, 0x53F2,0x53F8,0x5506,0x55E3,0x56DB,0x58EB,0x5962,0x5A11, 0x5BEB,0x5BFA,0x5C04,0x5DF3,0x5E2B,0x5F99,0x601D,0x6368, 0x659C,0x65AF,0x67F6,0x67FB,0x68AD,0x6B7B,0x6C99,0x6CD7, 0x6E23,0x7009,0x7345,0x7802,0x793E,0x7940,0x7960,0x79C1, 0x7BE9,0x7D17,0x7D72,0x8086,0x820D,0x838E,0x84D1,0x86C7, 0x88DF,0x8A50,0x8A5E,0x8B1D,0x8CDC,0x8D66,0x8FAD,0x90AA, 0x98FC,0x99DF,0x9E9D,0x524A,0xF969,0x6714,0xF96A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 96, Array index 0x3B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5098,0x522A,0x5C71,0x6563,0x6C55,0x73CA,0x7523, 0x759D,0x7B97,0x849C,0x9178,0x9730,0x4E77,0x6492,0x6BBA, 0x715E,0x85A9,0x4E09,0xF96B,0x6749,0x68EE,0x6E17,0x829F, 0x8518,0x886B,0x63F7,0x6F81,0x9212,0x98AF,0x4E0A,0x50B7, 0x50CF,0x511F,0x5546,0x55AA,0x5617,0x5B40,0x5C19,0x5CE0, 0x5E38,0x5E8A,0x5EA0,0x5EC2,0x60F3,0x6851,0x6A61,0x6E58, 0x723D,0x7240,0x72C0,0x76F8,0x7965,0x7BB1,0x7FD4,0x88F3, 0x89F4,0x8A73,0x8C61,0x8CDE,0x971C,0x585E,0x74BD,0x8CFD, 0x55C7,0xF96C,0x7A61,0x7D22,0x8272,0x7272,0x751F,0x7525, 0xF96D,0x7B19,0x5885,0x58FB,0x5DBC,0x5E8F,0x5EB6,0x5F90, 0x6055,0x6292,0x637F,0x654D,0x6691,0x66D9,0x66F8,0x6816, 0x68F2,0x7280,0x745E,0x7B6E,0x7D6E,0x7DD6,0x7F72,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 97, Array index 0x3C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x80E5,0x8212,0x85AF,0x897F,0x8A93,0x901D,0x92E4, 0x9ECD,0x9F20,0x5915,0x596D,0x5E2D,0x60DC,0x6614,0x6673, 0x6790,0x6C50,0x6DC5,0x6F5F,0x77F3,0x78A9,0x84C6,0x91CB, 0x932B,0x4ED9,0x50CA,0x5148,0x5584,0x5B0B,0x5BA3,0x6247, 0x657E,0x65CB,0x6E32,0x717D,0x7401,0x7444,0x7487,0x74BF, 0x766C,0x79AA,0x7DDA,0x7E55,0x7FA8,0x817A,0x81B3,0x8239, 0x861A,0x87EC,0x8A75,0x8DE3,0x9078,0x9291,0x9425,0x994D, 0x9BAE,0x5368,0x5C51,0x6954,0x6CC4,0x6D29,0x6E2B,0x820C, 0x859B,0x893B,0x8A2D,0x8AAA,0x96EA,0x9F67,0x5261,0x66B9, 0x6BB2,0x7E96,0x87FE,0x8D0D,0x9583,0x965D,0x651D,0x6D89, 0x71EE,0xF96E,0x57CE,0x59D3,0x5BAC,0x6027,0x60FA,0x6210, 0x661F,0x665F,0x7329,0x73F9,0x76DB,0x7701,0x7B6C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 98, Array index 0x3D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8056,0x8072,0x8165,0x8AA0,0x9192,0x4E16,0x52E2, 0x6B72,0x6D17,0x7A05,0x7B39,0x7D30,0xF96F,0x8CB0,0x53EC, 0x562F,0x5851,0x5BB5,0x5C0F,0x5C11,0x5DE2,0x6240,0x6383, 0x6414,0x662D,0x68B3,0x6CBC,0x6D88,0x6EAF,0x701F,0x70A4, 0x71D2,0x7526,0x758F,0x758E,0x7619,0x7B11,0x7BE0,0x7C2B, 0x7D20,0x7D39,0x852C,0x856D,0x8607,0x8A34,0x900D,0x9061, 0x90B5,0x92B7,0x97F6,0x9A37,0x4FD7,0x5C6C,0x675F,0x6D91, 0x7C9F,0x7E8C,0x8B16,0x8D16,0x901F,0x5B6B,0x5DFD,0x640D, 0x84C0,0x905C,0x98E1,0x7387,0x5B8B,0x609A,0x677E,0x6DDE, 0x8A1F,0x8AA6,0x9001,0x980C,0x5237,0xF970,0x7051,0x788E, 0x9396,0x8870,0x91D7,0x4FEE,0x53D7,0x55FD,0x56DA,0x5782, 0x58FD,0x5AC2,0x5B88,0x5CAB,0x5CC0,0x5E25,0x6101,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 99, Array index 0x3E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x620D,0x624B,0x6388,0x641C,0x6536,0x6578,0x6A39, 0x6B8A,0x6C34,0x6D19,0x6F31,0x71E7,0x72E9,0x7378,0x7407, 0x74B2,0x7626,0x7761,0x79C0,0x7A57,0x7AEA,0x7CB9,0x7D8F, 0x7DAC,0x7E61,0x7F9E,0x8129,0x8331,0x8490,0x84DA,0x85EA, 0x8896,0x8AB0,0x8B90,0x8F38,0x9042,0x9083,0x916C,0x9296, 0x92B9,0x968B,0x96A7,0x96A8,0x96D6,0x9700,0x9808,0x9996, 0x9AD3,0x9B1A,0x53D4,0x587E,0x5919,0x5B70,0x5BBF,0x6DD1, 0x6F5A,0x719F,0x7421,0x74B9,0x8085,0x83FD,0x5DE1,0x5F87, 0x5FAA,0x6042,0x65EC,0x6812,0x696F,0x6A53,0x6B89,0x6D35, 0x6DF3,0x73E3,0x76FE,0x77AC,0x7B4D,0x7D14,0x8123,0x821C, 0x8340,0x84F4,0x8563,0x8A62,0x8AC4,0x9187,0x931E,0x9806, 0x99B4,0x620C,0x8853,0x8FF0,0x9265,0x5D07,0x5D27,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 100, Array index 0x3F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5D69,0x745F,0x819D,0x8768,0x6FD5,0x62FE,0x7FD2, 0x8936,0x8972,0x4E1E,0x4E58,0x50E7,0x52DD,0x5347,0x627F, 0x6607,0x7E69,0x8805,0x965E,0x4F8D,0x5319,0x5636,0x59CB, 0x5AA4,0x5C38,0x5C4E,0x5C4D,0x5E02,0x5F11,0x6043,0x65BD, 0x662F,0x6642,0x67BE,0x67F4,0x731C,0x77E2,0x793A,0x7FC5, 0x8494,0x84CD,0x8996,0x8A66,0x8A69,0x8AE1,0x8C55,0x8C7A, 0x57F4,0x5BD4,0x5F0F,0x606F,0x62ED,0x690D,0x6B96,0x6E5C, 0x7184,0x7BD2,0x8755,0x8B58,0x8EFE,0x98DF,0x98FE,0x4F38, 0x4F81,0x4FE1,0x547B,0x5A20,0x5BB8,0x613C,0x65B0,0x6668, 0x71FC,0x7533,0x795E,0x7D33,0x814E,0x81E3,0x8398,0x85AA, 0x85CE,0x8703,0x8A0A,0x8EAB,0x8F9B,0xF971,0x8FC5,0x5931, 0x5BA4,0x5BE6,0x6089,0x5BE9,0x5C0B,0x5FC3,0x6C81,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 101, Array index 0x4000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xF972,0x6DF1,0x700B,0x751A,0x82AF,0x8AF6,0x4EC0, 0x5341,0xF973,0x96D9,0x6C0F,0x4E9E,0x4FC4,0x5152,0x555E, 0x5A25,0x5CE8,0x6211,0x7259,0x82BD,0x83AA,0x86FE,0x8859, 0x8A1D,0x963F,0x96C5,0x9913,0x9D09,0x9D5D,0x580A,0x5CB3, 0x5DBD,0x5E44,0x60E1,0x6115,0x63E1,0x6A02,0x6E25,0x9102, 0x9354,0x984E,0x9C10,0x9F77,0x5B89,0x5CB8,0x6309,0x664F, 0x6848,0x773C,0x96C1,0x978D,0x9854,0x9B9F,0x65A1,0x8B01, 0x8ECB,0x95BC,0x5535,0x5CA9,0x5DD6,0x5EB5,0x6697,0x764C, 0x83F4,0x95C7,0x58D3,0x62BC,0x72CE,0x9D28,0x4EF0,0x592E, 0x600F,0x663B,0x6B83,0x79E7,0x9D26,0x5393,0x54C0,0x57C3, 0x5D16,0x611B,0x66D6,0x6DAF,0x788D,0x827E,0x9698,0x9744, 0x5384,0x627C,0x6396,0x6DB2,0x7E0A,0x814B,0x984D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 102, Array index 0x4100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6AFB,0x7F4C,0x9DAF,0x9E1A,0x4E5F,0x503B,0x51B6, 0x591C,0x60F9,0x63F6,0x6930,0x723A,0x8036,0xF974,0x91CE, 0x5F31,0xF975,0xF976,0x7D04,0x82E5,0x846F,0x84BB,0x85E5, 0x8E8D,0xF977,0x4F6F,0xF978,0xF979,0x58E4,0x5B43,0x6059, 0x63DA,0x6518,0x656D,0x6698,0xF97A,0x694A,0x6A23,0x6D0B, 0x7001,0x716C,0x75D2,0x760D,0x79B3,0x7A70,0xF97B,0x7F8A, 0xF97C,0x8944,0xF97D,0x8B93,0x91C0,0x967D,0xF97E,0x990A, 0x5704,0x5FA1,0x65BC,0x6F01,0x7600,0x79A6,0x8A9E,0x99AD, 0x9B5A,0x9F6C,0x5104,0x61B6,0x6291,0x6A8D,0x81C6,0x5043, 0x5830,0x5F66,0x7109,0x8A00,0x8AFA,0x5B7C,0x8616,0x4FFA, 0x513C,0x56B4,0x5944,0x63A9,0x6DF9,0x5DAA,0x696D,0x5186, 0x4E88,0x4F59,0xF97F,0xF980,0xF981,0x5982,0xF982,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 103, Array index 0x4200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xF983,0x6B5F,0x6C5D,0xF984,0x74B5,0x7916,0xF985, 0x8207,0x8245,0x8339,0x8F3F,0x8F5D,0xF986,0x9918,0xF987, 0xF988,0xF989,0x4EA6,0xF98A,0x57DF,0x5F79,0x6613,0xF98B, 0xF98C,0x75AB,0x7E79,0x8B6F,0xF98D,0x9006,0x9A5B,0x56A5, 0x5827,0x59F8,0x5A1F,0x5BB4,0xF98E,0x5EF6,0xF98F,0xF990, 0x6350,0x633B,0xF991,0x693D,0x6C87,0x6CBF,0x6D8E,0x6D93, 0x6DF5,0x6F14,0xF992,0x70DF,0x7136,0x7159,0xF993,0x71C3, 0x71D5,0xF994,0x784F,0x786F,0xF995,0x7B75,0x7DE3,0xF996, 0x7E2F,0xF997,0x884D,0x8EDF,0xF998,0xF999,0xF99A,0x925B, 0xF99B,0x9CF6,0xF99C,0xF99D,0xF99E,0x6085,0x6D85,0xF99F, 0x71B1,0xF9A0,0xF9A1,0x95B1,0x53AD,0xF9A2,0xF9A3,0xF9A4, 0x67D3,0xF9A5,0x708E,0x7130,0x7430,0x8276,0x82D2,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 104, Array index 0x4300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xF9A6,0x95BB,0x9AE5,0x9E7D,0x66C4,0xF9A7,0x71C1, 0x8449,0xF9A8,0xF9A9,0x584B,0xF9AA,0xF9AB,0x5DB8,0x5F71, 0xF9AC,0x6620,0x668E,0x6979,0x69AE,0x6C38,0x6CF3,0x6E36, 0x6F41,0x6FDA,0x701B,0x702F,0x7150,0x71DF,0x7370,0xF9AD, 0x745B,0xF9AE,0x74D4,0x76C8,0x7A4E,0x7E93,0xF9AF,0xF9B0, 0x82F1,0x8A60,0x8FCE,0xF9B1,0x9348,0xF9B2,0x9719,0xF9B3, 0xF9B4,0x4E42,0x502A,0xF9B5,0x5208,0x53E1,0x66F3,0x6C6D, 0x6FCA,0x730A,0x777F,0x7A62,0x82AE,0x85DD,0x8602,0xF9B6, 0x88D4,0x8A63,0x8B7D,0x8C6B,0xF9B7,0x92B3,0xF9B8,0x9713, 0x9810,0x4E94,0x4F0D,0x4FC9,0x50B2,0x5348,0x543E,0x5433, 0x55DA,0x5862,0x58BA,0x5967,0x5A1B,0x5BE4,0x609F,0xF9B9, 0x61CA,0x6556,0x65FF,0x6664,0x68A7,0x6C5A,0x6FB3,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 105, Array index 0x4400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x70CF,0x71AC,0x7352,0x7B7D,0x8708,0x8AA4,0x9C32, 0x9F07,0x5C4B,0x6C83,0x7344,0x7389,0x923A,0x6EAB,0x7465, 0x761F,0x7A69,0x7E15,0x860A,0x5140,0x58C5,0x64C1,0x74EE, 0x7515,0x7670,0x7FC1,0x9095,0x96CD,0x9954,0x6E26,0x74E6, 0x7AA9,0x7AAA,0x81E5,0x86D9,0x8778,0x8A1B,0x5A49,0x5B8C, 0x5B9B,0x68A1,0x6900,0x6D63,0x73A9,0x7413,0x742C,0x7897, 0x7DE9,0x7FEB,0x8118,0x8155,0x839E,0x8C4C,0x962E,0x9811, 0x66F0,0x5F80,0x65FA,0x6789,0x6C6A,0x738B,0x502D,0x5A03, 0x6B6A,0x77EE,0x5916,0x5D6C,0x5DCD,0x7325,0x754F,0xF9BA, 0xF9BB,0x50E5,0x51F9,0x582F,0x592D,0x5996,0x59DA,0x5BE5, 0xF9BC,0xF9BD,0x5DA2,0x62D7,0x6416,0x6493,0x64FE,0xF9BE, 0x66DC,0xF9BF,0x6A48,0xF9C0,0x71FF,0x7464,0xF9C1,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 106, Array index 0x4500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7A88,0x7AAF,0x7E47,0x7E5E,0x8000,0x8170,0xF9C2, 0x87EF,0x8981,0x8B20,0x9059,0xF9C3,0x9080,0x9952,0x617E, 0x6B32,0x6D74,0x7E1F,0x8925,0x8FB1,0x4FD1,0x50AD,0x5197, 0x52C7,0x57C7,0x5889,0x5BB9,0x5EB8,0x6142,0x6995,0x6D8C, 0x6E67,0x6EB6,0x7194,0x7462,0x7528,0x752C,0x8073,0x8338, 0x84C9,0x8E0A,0x9394,0x93DE,0xF9C4,0x4E8E,0x4F51,0x5076, 0x512A,0x53C8,0x53CB,0x53F3,0x5B87,0x5BD3,0x5C24,0x611A, 0x6182,0x65F4,0x725B,0x7397,0x7440,0x76C2,0x7950,0x7991, 0x79B9,0x7D06,0x7FBD,0x828B,0x85D5,0x865E,0x8FC2,0x9047, 0x90F5,0x91EA,0x9685,0x96E8,0x96E9,0x52D6,0x5F67,0x65ED, 0x6631,0x682F,0x715C,0x7A36,0x90C1,0x980A,0x4E91,0xF9C5, 0x6A52,0x6B9E,0x6F90,0x7189,0x8018,0x82B8,0x8553,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 107, Array index 0x4600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x904B,0x9695,0x96F2,0x97FB,0x851A,0x9B31,0x4E90, 0x718A,0x96C4,0x5143,0x539F,0x54E1,0x5713,0x5712,0x57A3, 0x5A9B,0x5AC4,0x5BC3,0x6028,0x613F,0x63F4,0x6C85,0x6D39, 0x6E72,0x6E90,0x7230,0x733F,0x7457,0x82D1,0x8881,0x8F45, 0x9060,0xF9C6,0x9662,0x9858,0x9D1B,0x6708,0x8D8A,0x925E, 0x4F4D,0x5049,0x50DE,0x5371,0x570D,0x59D4,0x5A01,0x5C09, 0x6170,0x6690,0x6E2D,0x7232,0x744B,0x7DEF,0x80C3,0x840E, 0x8466,0x853F,0x875F,0x885B,0x8918,0x8B02,0x9055,0x97CB, 0x9B4F,0x4E73,0x4F91,0x5112,0x516A,0xF9C7,0x552F,0x55A9, 0x5B7A,0x5BA5,0x5E7C,0x5E7D,0x5EBE,0x60A0,0x60DF,0x6108, 0x6109,0x63C4,0x6538,0x6709,0xF9C8,0x67D4,0x67DA,0xF9C9, 0x6961,0x6962,0x6CB9,0x6D27,0xF9CA,0x6E38,0xF9CB,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 108, Array index 0x4700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6FE1,0x7336,0x7337,0xF9CC,0x745C,0x7531,0xF9CD, 0x7652,0xF9CE,0xF9CF,0x7DAD,0x81FE,0x8438,0x88D5,0x8A98, 0x8ADB,0x8AED,0x8E30,0x8E42,0x904A,0x903E,0x907A,0x9149, 0x91C9,0x936E,0xF9D0,0xF9D1,0x5809,0xF9D2,0x6BD3,0x8089, 0x80B2,0xF9D3,0xF9D4,0x5141,0x596B,0x5C39,0xF9D5,0xF9D6, 0x6F64,0x73A7,0x80E4,0x8D07,0xF9D7,0x9217,0x958F,0xF9D8, 0xF9D9,0xF9DA,0xF9DB,0x807F,0x620E,0x701C,0x7D68,0x878D, 0xF9DC,0x57A0,0x6069,0x6147,0x6BB7,0x8ABE,0x9280,0x96B1, 0x4E59,0x541F,0x6DEB,0x852D,0x9670,0x97F3,0x98EE,0x63D6, 0x6CE3,0x9091,0x51DD,0x61C9,0x81BA,0x9DF9,0x4F9D,0x501A, 0x5100,0x5B9C,0x610F,0x61FF,0x64EC,0x6905,0x6BC5,0x7591, 0x77E3,0x7FA9,0x8264,0x858F,0x87FB,0x8863,0x8ABC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 109, Array index 0x4800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8B70,0x91AB,0x4E8C,0x4EE5,0x4F0A,0xF9DD,0xF9DE, 0x5937,0x59E8,0xF9DF,0x5DF2,0x5F1B,0x5F5B,0x6021,0xF9E0, 0xF9E1,0xF9E2,0xF9E3,0x723E,0x73E5,0xF9E4,0x7570,0x75CD, 0xF9E5,0x79FB,0xF9E6,0x800C,0x8033,0x8084,0x82E1,0x8351, 0xF9E7,0xF9E8,0x8CBD,0x8CB3,0x9087,0xF9E9,0xF9EA,0x98F4, 0x990C,0xF9EB,0xF9EC,0x7037,0x76CA,0x7FCA,0x7FCC,0x7FFC, 0x8B1A,0x4EBA,0x4EC1,0x5203,0x5370,0xF9ED,0x54BD,0x56E0, 0x59FB,0x5BC5,0x5F15,0x5FCD,0x6E6E,0xF9EE,0xF9EF,0x7D6A, 0x8335,0xF9F0,0x8693,0x8A8D,0xF9F1,0x976D,0x9777,0xF9F2, 0xF9F3,0x4E00,0x4F5A,0x4F7E,0x58F9,0x65E5,0x6EA2,0x9038, 0x93B0,0x99B9,0x4EFB,0x58EC,0x598A,0x59D9,0x6041,0xF9F4, 0xF9F5,0x7A14,0xF9F6,0x834F,0x8CC3,0x5165,0x5344,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 110, Array index 0x4900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xF9F7,0xF9F8,0xF9F9,0x4ECD,0x5269,0x5B55,0x82BF, 0x4ED4,0x523A,0x54A8,0x59C9,0x59FF,0x5B50,0x5B57,0x5B5C, 0x6063,0x6148,0x6ECB,0x7099,0x716E,0x7386,0x74F7,0x75B5, 0x78C1,0x7D2B,0x8005,0x81EA,0x8328,0x8517,0x85C9,0x8AEE, 0x8CC7,0x96CC,0x4F5C,0x52FA,0x56BC,0x65AB,0x6628,0x707C, 0x70B8,0x7235,0x7DBD,0x828D,0x914C,0x96C0,0x9D72,0x5B71, 0x68E7,0x6B98,0x6F7A,0x76DE,0x5C91,0x66AB,0x6F5B,0x7BB4, 0x7C2A,0x8836,0x96DC,0x4E08,0x4ED7,0x5320,0x5834,0x58BB, 0x58EF,0x596C,0x5C07,0x5E33,0x5E84,0x5F35,0x638C,0x66B2, 0x6756,0x6A1F,0x6AA3,0x6B0C,0x6F3F,0x7246,0xF9FA,0x7350, 0x748B,0x7AE0,0x7CA7,0x8178,0x81DF,0x81E7,0x838A,0x846C, 0x8523,0x8594,0x85CF,0x88DD,0x8D13,0x91AC,0x9577,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 111, Array index 0x4A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x969C,0x518D,0x54C9,0x5728,0x5BB0,0x624D,0x6750, 0x683D,0x6893,0x6E3D,0x6ED3,0x707D,0x7E21,0x88C1,0x8CA1, 0x8F09,0x9F4B,0x9F4E,0x722D,0x7B8F,0x8ACD,0x931A,0x4F47, 0x4F4E,0x5132,0x5480,0x59D0,0x5E95,0x62B5,0x6775,0x696E, 0x6A17,0x6CAE,0x6E1A,0x72D9,0x732A,0x75BD,0x7BB8,0x7D35, 0x82E7,0x83F9,0x8457,0x85F7,0x8A5B,0x8CAF,0x8E87,0x9019, 0x90B8,0x96CE,0x9F5F,0x52E3,0x540A,0x5AE1,0x5BC2,0x6458, 0x6575,0x6EF4,0x72C4,0xF9FB,0x7684,0x7A4D,0x7B1B,0x7C4D, 0x7E3E,0x7FDF,0x837B,0x8B2B,0x8CCA,0x8D64,0x8DE1,0x8E5F, 0x8FEA,0x8FF9,0x9069,0x93D1,0x4F43,0x4F7A,0x50B3,0x5168, 0x5178,0x524D,0x526A,0x5861,0x587C,0x5960,0x5C08,0x5C55, 0x5EDB,0x609B,0x6230,0x6813,0x6BBF,0x6C08,0x6FB1,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 112, Array index 0x4B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x714E,0x7420,0x7530,0x7538,0x7551,0x7672,0x7B4C, 0x7B8B,0x7BAD,0x7BC6,0x7E8F,0x8A6E,0x8F3E,0x8F49,0x923F, 0x9293,0x9322,0x942B,0x96FB,0x985A,0x986B,0x991E,0x5207, 0x622A,0x6298,0x6D59,0x7664,0x7ACA,0x7BC0,0x7D76,0x5360, 0x5CBE,0x5E97,0x6F38,0x70B9,0x7C98,0x9711,0x9B8E,0x9EDE, 0x63A5,0x647A,0x8776,0x4E01,0x4E95,0x4EAD,0x505C,0x5075, 0x5448,0x59C3,0x5B9A,0x5E40,0x5EAD,0x5EF7,0x5F81,0x60C5, 0x633A,0x653F,0x6574,0x65CC,0x6676,0x6678,0x67FE,0x6968, 0x6A89,0x6B63,0x6C40,0x6DC0,0x6DE8,0x6E1F,0x6E5E,0x701E, 0x70A1,0x738E,0x73FD,0x753A,0x775B,0x7887,0x798E,0x7A0B, 0x7A7D,0x7CBE,0x7D8E,0x8247,0x8A02,0x8AEA,0x8C9E,0x912D, 0x914A,0x91D8,0x9266,0x92CC,0x9320,0x9706,0x9756,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 113, Array index 0x4C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x975C,0x9802,0x9F0E,0x5236,0x5291,0x557C,0x5824, 0x5E1D,0x5F1F,0x608C,0x63D0,0x68AF,0x6FDF,0x796D,0x7B2C, 0x81CD,0x85BA,0x88FD,0x8AF8,0x8E44,0x918D,0x9664,0x969B, 0x973D,0x984C,0x9F4A,0x4FCE,0x5146,0x51CB,0x52A9,0x5632, 0x5F14,0x5F6B,0x63AA,0x64CD,0x65E9,0x6641,0x66FA,0x66F9, 0x671D,0x689D,0x68D7,0x69FD,0x6F15,0x6F6E,0x7167,0x71E5, 0x722A,0x74AA,0x773A,0x7956,0x795A,0x79DF,0x7A20,0x7A95, 0x7C97,0x7CDF,0x7D44,0x7E70,0x8087,0x85FB,0x86A4,0x8A54, 0x8ABF,0x8D99,0x8E81,0x9020,0x906D,0x91E3,0x963B,0x96D5, 0x9CE5,0x65CF,0x7C07,0x8DB3,0x93C3,0x5B58,0x5C0A,0x5352, 0x62D9,0x731D,0x5027,0x5B97,0x5F9E,0x60B0,0x616B,0x68D5, 0x6DD9,0x742E,0x7A2E,0x7D42,0x7D9C,0x7E31,0x816B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 114, Array index 0x4D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8E2A,0x8E35,0x937E,0x9418,0x4F50,0x5750,0x5DE6, 0x5EA7,0x632B,0x7F6A,0x4E3B,0x4F4F,0x4F8F,0x505A,0x59DD, 0x80C4,0x546A,0x5468,0x55FE,0x594F,0x5B99,0x5DDE,0x5EDA, 0x665D,0x6731,0x67F1,0x682A,0x6CE8,0x6D32,0x6E4A,0x6F8D, 0x70B7,0x73E0,0x7587,0x7C4C,0x7D02,0x7D2C,0x7DA2,0x821F, 0x86DB,0x8A3B,0x8A85,0x8D70,0x8E8A,0x8F33,0x9031,0x914E, 0x9152,0x9444,0x99D0,0x7AF9,0x7CA5,0x4FCA,0x5101,0x51C6, 0x57C8,0x5BEF,0x5CFB,0x6659,0x6A3D,0x6D5A,0x6E96,0x6FEC, 0x710C,0x756F,0x7AE3,0x8822,0x9021,0x9075,0x96CB,0x99FF, 0x8301,0x4E2D,0x4EF2,0x8846,0x91CD,0x537D,0x6ADB,0x696B, 0x6C41,0x847A,0x589E,0x618E,0x66FE,0x62EF,0x70DD,0x7511, 0x75C7,0x7E52,0x84B8,0x8B49,0x8D08,0x4E4B,0x53EA,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 115, Array index 0x4E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x54AB,0x5730,0x5740,0x5FD7,0x6301,0x6307,0x646F, 0x652F,0x65E8,0x667A,0x679D,0x67B3,0x6B62,0x6C60,0x6C9A, 0x6F2C,0x77E5,0x7825,0x7949,0x7957,0x7D19,0x80A2,0x8102, 0x81F3,0x829D,0x82B7,0x8718,0x8A8C,0xF9FC,0x8D04,0x8DBE, 0x9072,0x76F4,0x7A19,0x7A37,0x7E54,0x8077,0x5507,0x55D4, 0x5875,0x632F,0x6422,0x6649,0x664B,0x686D,0x699B,0x6B84, 0x6D25,0x6EB1,0x73CD,0x7468,0x74A1,0x755B,0x75B9,0x76E1, 0x771E,0x778B,0x79E6,0x7E09,0x7E1D,0x81FB,0x852F,0x8897, 0x8A3A,0x8CD1,0x8EEB,0x8FB0,0x9032,0x93AD,0x9663,0x9673, 0x9707,0x4F84,0x53F1,0x59EA,0x5AC9,0x5E19,0x684E,0x74C6, 0x75BE,0x79E9,0x7A92,0x81A3,0x86ED,0x8CEA,0x8DCC,0x8FED, 0x659F,0x6715,0xF9FD,0x57F7,0x6F57,0x7DDD,0x8F2F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 116, Array index 0x4F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x93F6,0x96C6,0x5FB5,0x61F2,0x6F84,0x4E14,0x4F98, 0x501F,0x53C9,0x55DF,0x5D6F,0x5DEE,0x6B21,0x6B64,0x78CB, 0x7B9A,0xF9FE,0x8E49,0x8ECA,0x906E,0x6349,0x643E,0x7740, 0x7A84,0x932F,0x947F,0x9F6A,0x64B0,0x6FAF,0x71E6,0x74A8, 0x74DA,0x7AC4,0x7C12,0x7E82,0x7CB2,0x7E98,0x8B9A,0x8D0A, 0x947D,0x9910,0x994C,0x5239,0x5BDF,0x64E6,0x672D,0x7D2E, 0x50ED,0x53C3,0x5879,0x6158,0x6159,0x61FA,0x65AC,0x7AD9, 0x8B92,0x8B96,0x5009,0x5021,0x5275,0x5531,0x5A3C,0x5EE0, 0x5F70,0x6134,0x655E,0x660C,0x6636,0x66A2,0x69CD,0x6EC4, 0x6F32,0x7316,0x7621,0x7A93,0x8139,0x8259,0x83D6,0x84BC, 0x50B5,0x57F0,0x5BC0,0x5BE8,0x5F69,0x63A1,0x7826,0x7DB5, 0x83DC,0x8521,0x91C7,0x91F5,0x518A,0x67F5,0x7B56,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 117, Array index 0x5000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8CAC,0x51C4,0x59BB,0x60BD,0x8655,0x501C,0xF9FF, 0x5254,0x5C3A,0x617D,0x621A,0x62D3,0x64F2,0x65A5,0x6ECC, 0x7620,0x810A,0x8E60,0x965F,0x96BB,0x4EDF,0x5343,0x5598, 0x5929,0x5DDD,0x64C5,0x6CC9,0x6DFA,0x7394,0x7A7F,0x821B, 0x85A6,0x8CE4,0x8E10,0x9077,0x91E7,0x95E1,0x9621,0x97C6, 0x51F8,0x54F2,0x5586,0x5FB9,0x64A4,0x6F88,0x7DB4,0x8F1F, 0x8F4D,0x9435,0x50C9,0x5C16,0x6CBE,0x6DFB,0x751B,0x77BB, 0x7C3D,0x7C64,0x8A79,0x8AC2,0x581E,0x59BE,0x5E16,0x6377, 0x7252,0x758A,0x776B,0x8ADC,0x8CBC,0x8F12,0x5EF3,0x6674, 0x6DF8,0x807D,0x83C1,0x8ACB,0x9751,0x9BD6,0xFA00,0x5243, 0x66FF,0x6D95,0x6EEF,0x7DE0,0x8AE6,0x902E,0x905E,0x9AD4, 0x521D,0x527F,0x54E8,0x6194,0x6284,0x62DB,0x68A2,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 118, Array index 0x5100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6912,0x695A,0x6A35,0x7092,0x7126,0x785D,0x7901, 0x790E,0x79D2,0x7A0D,0x8096,0x8278,0x82D5,0x8349,0x8549, 0x8C82,0x8D85,0x9162,0x918B,0x91AE,0x4FC3,0x56D1,0x71ED, 0x77D7,0x8700,0x89F8,0x5BF8,0x5FD6,0x6751,0x90A8,0x53E2, 0x585A,0x5BF5,0x60A4,0x6181,0x6460,0x7E3D,0x8070,0x8525, 0x9283,0x64AE,0x50AC,0x5D14,0x6700,0x589C,0x62BD,0x63A8, 0x690E,0x6978,0x6A1E,0x6E6B,0x76BA,0x79CB,0x82BB,0x8429, 0x8ACF,0x8DA8,0x8FFD,0x9112,0x914B,0x919C,0x9310,0x9318, 0x939A,0x96DB,0x9A36,0x9C0D,0x4E11,0x755C,0x795D,0x7AFA, 0x7B51,0x7BC9,0x7E2E,0x84C4,0x8E59,0x8E74,0x8EF8,0x9010, 0x6625,0x693F,0x7443,0x51FA,0x672E,0x9EDC,0x5145,0x5FE0, 0x6C96,0x87F2,0x885D,0x8877,0x60B4,0x81B5,0x8403,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 119, Array index 0x5200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x8D05,0x53D6,0x5439,0x5634,0x5A36,0x5C31,0x708A, 0x7FE0,0x805A,0x8106,0x81ED,0x8DA3,0x9189,0x9A5F,0x9DF2, 0x5074,0x4EC4,0x53A0,0x60FB,0x6E2C,0x5C64,0x4F88,0x5024, 0x55E4,0x5CD9,0x5E5F,0x6065,0x6894,0x6CBB,0x6DC4,0x71BE, 0x75D4,0x75F4,0x7661,0x7A1A,0x7A49,0x7DC7,0x7DFB,0x7F6E, 0x81F4,0x86A9,0x8F1C,0x96C9,0x99B3,0x9F52,0x5247,0x52C5, 0x98ED,0x89AA,0x4E03,0x67D2,0x6F06,0x4FB5,0x5BE2,0x6795, 0x6C88,0x6D78,0x741B,0x7827,0x91DD,0x937C,0x87C4,0x79E4, 0x7A31,0x5FEB,0x4ED6,0x54A4,0x553E,0x58AE,0x59A5,0x60F0, 0x6253,0x62D6,0x6736,0x6955,0x8235,0x9640,0x99B1,0x99DD, 0x502C,0x5353,0x5544,0x577C,0xFA01,0x6258,0xFA02,0x64E2, 0x666B,0x67DD,0x6FC1,0x6FEF,0x7422,0x7438,0x8A17,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 120, Array index 0x5300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x9438,0x5451,0x5606,0x5766,0x5F48,0x619A,0x6B4E, 0x7058,0x70AD,0x7DBB,0x8A95,0x596A,0x812B,0x63A2,0x7708, 0x803D,0x8CAA,0x5854,0x642D,0x69BB,0x5B95,0x5E11,0x6E6F, 0xFA03,0x8569,0x514C,0x53F0,0x592A,0x6020,0x614B,0x6B86, 0x6C70,0x6CF0,0x7B1E,0x80CE,0x82D4,0x8DC6,0x90B0,0x98B1, 0xFA04,0x64C7,0x6FA4,0x6491,0x6504,0x514E,0x5410,0x571F, 0x8A0E,0x615F,0x6876,0xFA05,0x75DB,0x7B52,0x7D71,0x901A, 0x5806,0x69CC,0x817F,0x892A,0x9000,0x9839,0x5078,0x5957, 0x59AC,0x6295,0x900F,0x9B2A,0x615D,0x7279,0x95D6,0x5761, 0x5A46,0x5DF4,0x628A,0x64AD,0x64FA,0x6777,0x6CE2,0x6D3E, 0x722C,0x7436,0x7834,0x7F77,0x82AD,0x8DDB,0x9817,0x5224, 0x5742,0x677F,0x7248,0x74E3,0x8CA9,0x8FA6,0x9211,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 121, Array index 0x5400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x962A,0x516B,0x53ED,0x634C,0x4F69,0x5504,0x6096, 0x6557,0x6C9B,0x6D7F,0x724C,0x72FD,0x7A17,0x8987,0x8C9D, 0x5F6D,0x6F8E,0x70F9,0x81A8,0x610E,0x4FBF,0x504F,0x6241, 0x7247,0x7BC7,0x7DE8,0x7FE9,0x904D,0x97AD,0x9A19,0x8CB6, 0x576A,0x5E73,0x67B0,0x840D,0x8A55,0x5420,0x5B16,0x5E63, 0x5EE2,0x5F0A,0x6583,0x80BA,0x853D,0x9589,0x965B,0x4F48, 0x5305,0x530D,0x530F,0x5486,0x54FA,0x5703,0x5E03,0x6016, 0x629B,0x62B1,0x6355,0xFA06,0x6CE1,0x6D66,0x75B1,0x7832, 0x80DE,0x812F,0x82DE,0x8461,0x84B2,0x888D,0x8912,0x900B, 0x92EA,0x98FD,0x9B91,0x5E45,0x66B4,0x66DD,0x7011,0x7206, 0xFA07,0x4FF5,0x527D,0x5F6A,0x6153,0x6753,0x6A19,0x6F02, 0x74E2,0x7968,0x8868,0x8C79,0x98C7,0x98C4,0x9A43,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 122, Array index 0x5500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x54C1,0x7A1F,0x6953,0x8AF7,0x8C4A,0x98A8,0x99AE, 0x5F7C,0x62AB,0x75B2,0x76AE,0x88AB,0x907F,0x9642,0x5339, 0x5F3C,0x5FC5,0x6CCC,0x73CC,0x7562,0x758B,0x7B46,0x82FE, 0x999D,0x4E4F,0x903C,0x4E0B,0x4F55,0x53A6,0x590F,0x5EC8, 0x6630,0x6CB3,0x7455,0x8377,0x8766,0x8CC0,0x9050,0x971E, 0x9C15,0x58D1,0x5B78,0x8650,0x8B14,0x9DB4,0x5BD2,0x6068, 0x608D,0x65F1,0x6C57,0x6F22,0x6FA3,0x701A,0x7F55,0x7FF0, 0x9591,0x9592,0x9650,0x97D3,0x5272,0x8F44,0x51FD,0x542B, 0x54B8,0x5563,0x558A,0x6ABB,0x6DB5,0x7DD8,0x8266,0x929C, 0x9677,0x9E79,0x5408,0x54C8,0x76D2,0x86E4,0x95A4,0x95D4, 0x965C,0x4EA2,0x4F09,0x59EE,0x5AE6,0x5DF7,0x6052,0x6297, 0x676D,0x6841,0x6C86,0x6E2F,0x7F38,0x809B,0x822A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 123, Array index 0x5600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0xFA08,0xFA09,0x9805,0x4EA5,0x5055,0x54B3,0x5793, 0x595A,0x5B69,0x5BB3,0x61C8,0x6977,0x6D77,0x7023,0x87F9, 0x89E3,0x8A72,0x8AE7,0x9082,0x99ED,0x9AB8,0x52BE,0x6838, 0x5016,0x5E78,0x674F,0x8347,0x884C,0x4EAB,0x5411,0x56AE, 0x73E6,0x9115,0x97FF,0x9909,0x9957,0x9999,0x5653,0x589F, 0x865B,0x8A31,0x61B2,0x6AF6,0x737B,0x8ED2,0x6B47,0x96AA, 0x9A57,0x5955,0x7200,0x8D6B,0x9769,0x4FD4,0x5CF4,0x5F26, 0x61F8,0x665B,0x6CEB,0x70AB,0x7384,0x73B9,0x73FE,0x7729, 0x774D,0x7D43,0x7D62,0x7E23,0x8237,0x8852,0xFA0A,0x8CE2, 0x9249,0x986F,0x5B51,0x7A74,0x8840,0x9801,0x5ACC,0x4FE0, 0x5354,0x593E,0x5CFD,0x633E,0x6D79,0x72F9,0x8105,0x8107, 0x83A2,0x92CF,0x9830,0x4EA8,0x5144,0x5211,0x578B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 124, Array index 0x5700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5F62,0x6CC2,0x6ECE,0x7005,0x7050,0x70AF,0x7192, 0x73E9,0x7469,0x834A,0x87A2,0x8861,0x9008,0x90A2,0x93A3, 0x99A8,0x516E,0x5F57,0x60E0,0x6167,0x66B3,0x8559,0x8E4A, 0x91AF,0x978B,0x4E4E,0x4E92,0x547C,0x58D5,0x58FA,0x597D, 0x5CB5,0x5F27,0x6236,0x6248,0x660A,0x6667,0x6BEB,0x6D69, 0x6DCF,0x6E56,0x6EF8,0x6F94,0x6FE0,0x6FE9,0x705D,0x72D0, 0x7425,0x745A,0x74E0,0x7693,0x795C,0x7CCA,0x7E1E,0x80E1, 0x82A6,0x846B,0x84BF,0x864E,0x865F,0x8774,0x8B77,0x8C6A, 0x93AC,0x9800,0x9865,0x60D1,0x6216,0x9177,0x5A5A,0x660F, 0x6DF7,0x6E3E,0x743F,0x9B42,0x5FFD,0x60DA,0x7B0F,0x54C4, 0x5F18,0x6C5E,0x6CD3,0x6D2A,0x70D8,0x7D05,0x8679,0x8A0C, 0x9D3B,0x5316,0x548C,0x5B05,0x6A3A,0x706B,0x7575,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 125, Array index 0x5800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x798D,0x79BE,0x82B1,0x83EF,0x8A71,0x8B41,0x8CA8, 0x9774,0xFA0B,0x64F4,0x652B,0x78BA,0x78BB,0x7A6B,0x4E38, 0x559A,0x5950,0x5BA6,0x5E7B,0x60A3,0x63DB,0x6B61,0x6665, 0x6853,0x6E19,0x7165,0x74B0,0x7D08,0x9084,0x9A69,0x9C25, 0x6D3B,0x6ED1,0x733E,0x8C41,0x95CA,0x51F0,0x5E4C,0x5FA8, 0x604D,0x60F6,0x6130,0x614C,0x6643,0x6644,0x69A5,0x6CC1, 0x6E5F,0x6EC9,0x6F62,0x714C,0x749C,0x7687,0x7BC1,0x7C27, 0x8352,0x8757,0x9051,0x968D,0x9EC3,0x532F,0x56DE,0x5EFB, 0x5F8A,0x6062,0x6094,0x61F7,0x6666,0x6703,0x6A9C,0x6DEE, 0x6FAE,0x7070,0x736A,0x7E6A,0x81BE,0x8334,0x86D4,0x8AA8, 0x8CC4,0x5283,0x7372,0x5B96,0x6A6B,0x9404,0x54EE,0x5686, 0x5B5D,0x6548,0x6585,0x66C9,0x689F,0x6D8D,0x6DC6,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 126, Array index 0x5900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x723B,0x80B4,0x9175,0x9A4D,0x4FAF,0x5019,0x539A, 0x540E,0x543C,0x5589,0x55C5,0x5E3F,0x5F8C,0x673D,0x7166, 0x73DD,0x9005,0x52DB,0x52F3,0x5864,0x58CE,0x7104,0x718F, 0x71FB,0x85B0,0x8A13,0x6688,0x85A8,0x55A7,0x6684,0x714A, 0x8431,0x5349,0x5599,0x6BC1,0x5F59,0x5FBD,0x63EE,0x6689, 0x7147,0x8AF1,0x8F1D,0x9EBE,0x4F11,0x643A,0x70CB,0x7566, 0x8667,0x6064,0x8B4E,0x9DF8,0x5147,0x51F6,0x5308,0x6D36, 0x80F8,0x9ED1,0x6615,0x6B23,0x7098,0x75D5,0x5403,0x5C79, 0x7D07,0x8A16,0x6B20,0x6B3D,0x6B46,0x5438,0x6070,0x6D3D, 0x7FD5,0x8208,0x50D6,0x51DE,0x559C,0x566B,0x56CD,0x59EC, 0x5B09,0x5E0C,0x6199,0x6198,0x6231,0x665E,0x66E6,0x7199, 0x71B9,0x71BA,0x72A7,0x79A7,0x7A00,0x7FB2,0x8A70,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, }; #endif /* ICONV_TO_UCS_CCS_KSX1001 && !defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * 16-bit ksx1001 -> UCS size-optimized table (17018 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_KSX1001) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t to_ucs_size_ksx1001[] = { 0x005D, /* Ranges number */ 0x0000, /* Unranged codes number */ 0x213D, /* First unranged code index */ /* Ranges list: first code, last Code, array index. */ /* Array index: 0x0003 */ 0x2121, 0x217E, 0x011A, /* Array index: 0x0006 */ 0x2221, 0x2265, 0x0178, /* Array index: 0x0009 */ 0x2321, 0x237E, 0x01BD, /* Array index: 0x000C */ 0x2421, 0x247E, 0x021B, /* Array index: 0x000F */ 0x2521, 0x252A, 0x0279, /* Array index: 0x0012 */ 0x2530, 0x2539, 0x0283, /* Array index: 0x0015 */ 0x2541, 0x2558, 0x028D, /* Array index: 0x0018 */ 0x2561, 0x2578, 0x02A5, /* Array index: 0x001B */ 0x2621, 0x2664, 0x02BD, /* Array index: 0x001E */ 0x2721, 0x276F, 0x0301, /* Array index: 0x0021 */ 0x2821, 0x287E, 0x0350, /* Array index: 0x0024 */ 0x2921, 0x297E, 0x03AE, /* Array index: 0x0027 */ 0x2A21, 0x2A73, 0x040C, /* Array index: 0x002A */ 0x2B21, 0x2B76, 0x045F, /* Array index: 0x002D */ 0x2C21, 0x2C41, 0x04B5, /* Array index: 0x0030 */ 0x2C51, 0x2C71, 0x04D6, /* Array index: 0x0033 */ 0x3021, 0x307E, 0x04F7, /* Array index: 0x0036 */ 0x3121, 0x317E, 0x0555, /* Array index: 0x0039 */ 0x3221, 0x327E, 0x05B3, /* Array index: 0x003C */ 0x3321, 0x337E, 0x0611, /* Array index: 0x003F */ 0x3421, 0x347E, 0x066F, /* Array index: 0x0042 */ 0x3521, 0x357E, 0x06CD, /* Array index: 0x0045 */ 0x3621, 0x367E, 0x072B, /* Array index: 0x0048 */ 0x3721, 0x377E, 0x0789, /* Array index: 0x004B */ 0x3821, 0x387E, 0x07E7, /* Array index: 0x004E */ 0x3921, 0x397E, 0x0845, /* Array index: 0x0051 */ 0x3A21, 0x3A7E, 0x08A3, /* Array index: 0x0054 */ 0x3B21, 0x3B7E, 0x0901, /* Array index: 0x0057 */ 0x3C21, 0x3C7E, 0x095F, /* Array index: 0x005A */ 0x3D21, 0x3D7E, 0x09BD, /* Array index: 0x005D */ 0x3E21, 0x3E7E, 0x0A1B, /* Array index: 0x0060 */ 0x3F21, 0x3F7E, 0x0A79, /* Array index: 0x0063 */ 0x4021, 0x407E, 0x0AD7, /* Array index: 0x0066 */ 0x4121, 0x417E, 0x0B35, /* Array index: 0x0069 */ 0x4221, 0x427E, 0x0B93, /* Array index: 0x006C */ 0x4321, 0x437E, 0x0BF1, /* Array index: 0x006F */ 0x4421, 0x447E, 0x0C4F, /* Array index: 0x0072 */ 0x4521, 0x457E, 0x0CAD, /* Array index: 0x0075 */ 0x4621, 0x467E, 0x0D0B, /* Array index: 0x0078 */ 0x4721, 0x477E, 0x0D69, /* Array index: 0x007B */ 0x4821, 0x487E, 0x0DC7, /* Array index: 0x007E */ 0x4A21, 0x4A7E, 0x0E25, /* Array index: 0x0081 */ 0x4B21, 0x4B7E, 0x0E83, /* Array index: 0x0084 */ 0x4C21, 0x4C7E, 0x0EE1, /* Array index: 0x0087 */ 0x4D21, 0x4D7E, 0x0F3F, /* Array index: 0x008A */ 0x4E21, 0x4E7E, 0x0F9D, /* Array index: 0x008D */ 0x4F21, 0x4F7E, 0x0FFB, /* Array index: 0x0090 */ 0x5021, 0x507E, 0x1059, /* Array index: 0x0093 */ 0x5121, 0x517E, 0x10B7, /* Array index: 0x0096 */ 0x5221, 0x527E, 0x1115, /* Array index: 0x0099 */ 0x5321, 0x537E, 0x1173, /* Array index: 0x009C */ 0x5421, 0x547E, 0x11D1, /* Array index: 0x009F */ 0x5521, 0x557E, 0x122F, /* Array index: 0x00A2 */ 0x5621, 0x567E, 0x128D, /* Array index: 0x00A5 */ 0x5721, 0x577E, 0x12EB, /* Array index: 0x00A8 */ 0x5821, 0x587E, 0x1349, /* Array index: 0x00AB */ 0x5921, 0x597E, 0x13A7, /* Array index: 0x00AE */ 0x5A21, 0x5A7E, 0x1405, /* Array index: 0x00B1 */ 0x5B21, 0x5B7E, 0x1463, /* Array index: 0x00B4 */ 0x5C21, 0x5C7E, 0x14C1, /* Array index: 0x00B7 */ 0x5D21, 0x5D7E, 0x151F, /* Array index: 0x00BA */ 0x5E21, 0x5E7E, 0x157D, /* Array index: 0x00BD */ 0x5F21, 0x5F7E, 0x15DB, /* Array index: 0x00C0 */ 0x6021, 0x607E, 0x1639, /* Array index: 0x00C3 */ 0x6121, 0x617E, 0x1697, /* Array index: 0x00C6 */ 0x6221, 0x627E, 0x16F5, /* Array index: 0x00C9 */ 0x6321, 0x637E, 0x1753, /* Array index: 0x00CC */ 0x6421, 0x647E, 0x17B1, /* Array index: 0x00CF */ 0x6521, 0x657E, 0x180F, /* Array index: 0x00D2 */ 0x6621, 0x667E, 0x186D, /* Array index: 0x00D5 */ 0x6721, 0x677E, 0x18CB, /* Array index: 0x00D8 */ 0x6821, 0x687E, 0x1929, /* Array index: 0x00DB */ 0x6921, 0x697E, 0x1987, /* Array index: 0x00DE */ 0x6A21, 0x6A7E, 0x19E5, /* Array index: 0x00E1 */ 0x6B21, 0x6B7E, 0x1A43, /* Array index: 0x00E4 */ 0x6C21, 0x6C7E, 0x1AA1, /* Array index: 0x00E7 */ 0x6D21, 0x6D7E, 0x1AFF, /* Array index: 0x00EA */ 0x6E21, 0x6E7E, 0x1B5D, /* Array index: 0x00ED */ 0x6F21, 0x6F7E, 0x1BBB, /* Array index: 0x00F0 */ 0x7021, 0x707E, 0x1C19, /* Array index: 0x00F3 */ 0x7121, 0x717E, 0x1C77, /* Array index: 0x00F6 */ 0x7221, 0x727E, 0x1CD5, /* Array index: 0x00F9 */ 0x7321, 0x737E, 0x1D33, /* Array index: 0x00FC */ 0x7421, 0x747E, 0x1D91, /* Array index: 0x00FF */ 0x7521, 0x757E, 0x1DEF, /* Array index: 0x0102 */ 0x7621, 0x767E, 0x1E4D, /* Array index: 0x0105 */ 0x7721, 0x777E, 0x1EAB, /* Array index: 0x0108 */ 0x7821, 0x787E, 0x1F09, /* Array index: 0x010B */ 0x7921, 0x797E, 0x1F67, /* Array index: 0x010E */ 0x7A21, 0x7A7E, 0x1FC5, /* Array index: 0x0111 */ 0x7B21, 0x7B7E, 0x2023, /* Array index: 0x0114 */ 0x7C21, 0x7C7E, 0x2081, /* Array index: 0x0117 */ 0x7D21, 0x7D7E, 0x20DF, /* Ranges content */ /* Range 0x2121 - 0x217E, array index: 0x011A */ 0x3000,0x3001,0x3002,0x00B7,0x2025,0x2026,0x00A8,0x3003, 0x00AD,0x2015,0x2225,0xFF3C,0x223C,0x2018,0x2019,0x201C, 0x201D,0x3014,0x3015,0x3008,0x3009,0x300A,0x300B,0x300C, 0x300D,0x300E,0x300F,0x3010,0x3011,0x00B1,0x00D7,0x00F7, 0x2260,0x2264,0x2265,0x221E,0x2234,0x00B0,0x2032,0x2033, 0x2103,0x212B,0xFFE0,0xFFE1,0xFFE5,0x2642,0x2640,0x2220, 0x22A5,0x2312,0x2202,0x2207,0x2261,0x2252,0x00A7,0x203B, 0x2606,0x2605,0x25CB,0x25CF,0x25CE,0x25C7,0x25C6,0x25A1, 0x25A0,0x25B3,0x25B2,0x25BD,0x25BC,0x2192,0x2190,0x2191, 0x2193,0x2194,0x3013,0x226A,0x226B,0x221A,0x223D,0x221D, 0x2235,0x222B,0x222C,0x2208,0x220B,0x2286,0x2287,0x2282, 0x2283,0x222A,0x2229,0x2227,0x2228,0xFFE2, /* Range 0x2221 - 0x2265, array index: 0x0178 */ 0x21D2,0x21D4,0x2200,0x2203,0x00B4,0xFF5E,0x02C7,0x02D8, 0x02DD,0x02DA,0x02D9,0x00B8,0x02DB,0x00A1,0x00BF,0x02D0, 0x222E,0x2211,0x220F,0x00A4,0x2109,0x2030,0x25C1,0x25C0, 0x25B7,0x25B6,0x2664,0x2660,0x2661,0x2665,0x2667,0x2663, 0x2299,0x25C8,0x25A3,0x25D0,0x25D1,0x2592,0x25A4,0x25A5, 0x25A8,0x25A7,0x25A6,0x25A9,0x2668,0x260F,0x260E,0x261C, 0x261E,0x00B6,0x2020,0x2021,0x2195,0x2197,0x2199,0x2196, 0x2198,0x266D,0x2669,0x266A,0x266C,0x327F,0x321C,0x2116, 0x33C7,0x2122,0x33C2,0x33D8,0x2121, /* Range 0x2321 - 0x237E, array index: 0x01BD */ 0xFF01,0xFF02,0xFF03,0xFF04,0xFF05,0xFF06,0xFF07,0xFF08, 0xFF09,0xFF0A,0xFF0B,0xFF0C,0xFF0D,0xFF0E,0xFF0F,0xFF10, 0xFF11,0xFF12,0xFF13,0xFF14,0xFF15,0xFF16,0xFF17,0xFF18, 0xFF19,0xFF1A,0xFF1B,0xFF1C,0xFF1D,0xFF1E,0xFF1F,0xFF20, 0xFF21,0xFF22,0xFF23,0xFF24,0xFF25,0xFF26,0xFF27,0xFF28, 0xFF29,0xFF2A,0xFF2B,0xFF2C,0xFF2D,0xFF2E,0xFF2F,0xFF30, 0xFF31,0xFF32,0xFF33,0xFF34,0xFF35,0xFF36,0xFF37,0xFF38, 0xFF39,0xFF3A,0xFF3B,0xFFE6,0xFF3D,0xFF3E,0xFF3F,0xFF40, 0xFF41,0xFF42,0xFF43,0xFF44,0xFF45,0xFF46,0xFF47,0xFF48, 0xFF49,0xFF4A,0xFF4B,0xFF4C,0xFF4D,0xFF4E,0xFF4F,0xFF50, 0xFF51,0xFF52,0xFF53,0xFF54,0xFF55,0xFF56,0xFF57,0xFF58, 0xFF59,0xFF5A,0xFF5B,0xFF5C,0xFF5D,0xFFE3, /* Range 0x2421 - 0x247E, array index: 0x021B */ 0x3131,0x3132,0x3133,0x3134,0x3135,0x3136,0x3137,0x3138, 0x3139,0x313A,0x313B,0x313C,0x313D,0x313E,0x313F,0x3140, 0x3141,0x3142,0x3143,0x3144,0x3145,0x3146,0x3147,0x3148, 0x3149,0x314A,0x314B,0x314C,0x314D,0x314E,0x314F,0x3150, 0x3151,0x3152,0x3153,0x3154,0x3155,0x3156,0x3157,0x3158, 0x3159,0x315A,0x315B,0x315C,0x315D,0x315E,0x315F,0x3160, 0x3161,0x3162,0x3163,0x3164,0x3165,0x3166,0x3167,0x3168, 0x3169,0x316A,0x316B,0x316C,0x316D,0x316E,0x316F,0x3170, 0x3171,0x3172,0x3173,0x3174,0x3175,0x3176,0x3177,0x3178, 0x3179,0x317A,0x317B,0x317C,0x317D,0x317E,0x317F,0x3180, 0x3181,0x3182,0x3183,0x3184,0x3185,0x3186,0x3187,0x3188, 0x3189,0x318A,0x318B,0x318C,0x318D,0x318E, /* Range 0x2521 - 0x252A, array index: 0x0279 */ 0x2170,0x2171,0x2172,0x2173,0x2174,0x2175,0x2176,0x2177, 0x2178,0x2179, /* Range 0x2530 - 0x2539, array index: 0x0283 */ 0x2160,0x2161,0x2162,0x2163,0x2164,0x2165,0x2166,0x2167, 0x2168,0x2169, /* Range 0x2541 - 0x2558, array index: 0x028D */ 0x0391,0x0392,0x0393,0x0394,0x0395,0x0396,0x0397,0x0398, 0x0399,0x039A,0x039B,0x039C,0x039D,0x039E,0x039F,0x03A0, 0x03A1,0x03A3,0x03A4,0x03A5,0x03A6,0x03A7,0x03A8,0x03A9, /* Range 0x2561 - 0x2578, array index: 0x02A5 */ 0x03B1,0x03B2,0x03B3,0x03B4,0x03B5,0x03B6,0x03B7,0x03B8, 0x03B9,0x03BA,0x03BB,0x03BC,0x03BD,0x03BE,0x03BF,0x03C0, 0x03C1,0x03C3,0x03C4,0x03C5,0x03C6,0x03C7,0x03C8,0x03C9, /* Range 0x2621 - 0x2664, array index: 0x02BD */ 0x2500,0x2502,0x250C,0x2510,0x2518,0x2514,0x251C,0x252C, 0x2524,0x2534,0x253C,0x2501,0x2503,0x250F,0x2513,0x251B, 0x2517,0x2523,0x2533,0x252B,0x253B,0x254B,0x2520,0x252F, 0x2528,0x2537,0x253F,0x251D,0x2530,0x2525,0x2538,0x2542, 0x2512,0x2511,0x251A,0x2519,0x2516,0x2515,0x250E,0x250D, 0x251E,0x251F,0x2521,0x2522,0x2526,0x2527,0x2529,0x252A, 0x252D,0x252E,0x2531,0x2532,0x2535,0x2536,0x2539,0x253A, 0x253D,0x253E,0x2540,0x2541,0x2543,0x2544,0x2545,0x2546, 0x2547,0x2548,0x2549,0x254A, /* Range 0x2721 - 0x276F, array index: 0x0301 */ 0x3395,0x3396,0x3397,0x2113,0x3398,0x33C4,0x33A3,0x33A4, 0x33A5,0x33A6,0x3399,0x339A,0x339B,0x339C,0x339D,0x339E, 0x339F,0x33A0,0x33A1,0x33A2,0x33CA,0x338D,0x338E,0x338F, 0x33CF,0x3388,0x3389,0x33C8,0x33A7,0x33A8,0x33B0,0x33B1, 0x33B2,0x33B3,0x33B4,0x33B5,0x33B6,0x33B7,0x33B8,0x33B9, 0x3380,0x3381,0x3382,0x3383,0x3384,0x33BA,0x33BB,0x33BC, 0x33BD,0x33BE,0x33BF,0x3390,0x3391,0x3392,0x3393,0x3394, 0x2126,0x33C0,0x33C1,0x338A,0x338B,0x338C,0x33D6,0x33C5, 0x33AD,0x33AE,0x33AF,0x33DB,0x33A9,0x33AA,0x33AB,0x33AC, 0x33DD,0x33D0,0x33D3,0x33C3,0x33C9,0x33DC,0x33C6, /* Range 0x2821 - 0x287E, array index: 0x0350 */ 0x00C6,0x00D0,0x00AA,0x0126,INVALC,0x0132,INVALC,0x013F, 0x0141,0x00D8,0x0152,0x00BA,0x00DE,0x0166,0x014A,INVALC, 0x3260,0x3261,0x3262,0x3263,0x3264,0x3265,0x3266,0x3267, 0x3268,0x3269,0x326A,0x326B,0x326C,0x326D,0x326E,0x326F, 0x3270,0x3271,0x3272,0x3273,0x3274,0x3275,0x3276,0x3277, 0x3278,0x3279,0x327A,0x327B,0x24D0,0x24D1,0x24D2,0x24D3, 0x24D4,0x24D5,0x24D6,0x24D7,0x24D8,0x24D9,0x24DA,0x24DB, 0x24DC,0x24DD,0x24DE,0x24DF,0x24E0,0x24E1,0x24E2,0x24E3, 0x24E4,0x24E5,0x24E6,0x24E7,0x24E8,0x24E9,0x2460,0x2461, 0x2462,0x2463,0x2464,0x2465,0x2466,0x2467,0x2468,0x2469, 0x246A,0x246B,0x246C,0x246D,0x246E,0x00BD,0x2153,0x2154, 0x00BC,0x00BE,0x215B,0x215C,0x215D,0x215E, /* Range 0x2921 - 0x297E, array index: 0x03AE */ 0x00E6,0x0111,0x00F0,0x0127,0x0131,0x0133,0x0138,0x0140, 0x0142,0x00F8,0x0153,0x00DF,0x00FE,0x0167,0x014B,0x0149, 0x3200,0x3201,0x3202,0x3203,0x3204,0x3205,0x3206,0x3207, 0x3208,0x3209,0x320A,0x320B,0x320C,0x320D,0x320E,0x320F, 0x3210,0x3211,0x3212,0x3213,0x3214,0x3215,0x3216,0x3217, 0x3218,0x3219,0x321A,0x321B,0x249C,0x249D,0x249E,0x249F, 0x24A0,0x24A1,0x24A2,0x24A3,0x24A4,0x24A5,0x24A6,0x24A7, 0x24A8,0x24A9,0x24AA,0x24AB,0x24AC,0x24AD,0x24AE,0x24AF, 0x24B0,0x24B1,0x24B2,0x24B3,0x24B4,0x24B5,0x2474,0x2475, 0x2476,0x2477,0x2478,0x2479,0x247A,0x247B,0x247C,0x247D, 0x247E,0x247F,0x2480,0x2481,0x2482,0x00B9,0x00B2,0x00B3, 0x2074,0x207F,0x2081,0x2082,0x2083,0x2084, /* Range 0x2A21 - 0x2A73, array index: 0x040C */ 0x3041,0x3042,0x3043,0x3044,0x3045,0x3046,0x3047,0x3048, 0x3049,0x304A,0x304B,0x304C,0x304D,0x304E,0x304F,0x3050, 0x3051,0x3052,0x3053,0x3054,0x3055,0x3056,0x3057,0x3058, 0x3059,0x305A,0x305B,0x305C,0x305D,0x305E,0x305F,0x3060, 0x3061,0x3062,0x3063,0x3064,0x3065,0x3066,0x3067,0x3068, 0x3069,0x306A,0x306B,0x306C,0x306D,0x306E,0x306F,0x3070, 0x3071,0x3072,0x3073,0x3074,0x3075,0x3076,0x3077,0x3078, 0x3079,0x307A,0x307B,0x307C,0x307D,0x307E,0x307F,0x3080, 0x3081,0x3082,0x3083,0x3084,0x3085,0x3086,0x3087,0x3088, 0x3089,0x308A,0x308B,0x308C,0x308D,0x308E,0x308F,0x3090, 0x3091,0x3092,0x3093, /* Range 0x2B21 - 0x2B76, array index: 0x045F */ 0x30A1,0x30A2,0x30A3,0x30A4,0x30A5,0x30A6,0x30A7,0x30A8, 0x30A9,0x30AA,0x30AB,0x30AC,0x30AD,0x30AE,0x30AF,0x30B0, 0x30B1,0x30B2,0x30B3,0x30B4,0x30B5,0x30B6,0x30B7,0x30B8, 0x30B9,0x30BA,0x30BB,0x30BC,0x30BD,0x30BE,0x30BF,0x30C0, 0x30C1,0x30C2,0x30C3,0x30C4,0x30C5,0x30C6,0x30C7,0x30C8, 0x30C9,0x30CA,0x30CB,0x30CC,0x30CD,0x30CE,0x30CF,0x30D0, 0x30D1,0x30D2,0x30D3,0x30D4,0x30D5,0x30D6,0x30D7,0x30D8, 0x30D9,0x30DA,0x30DB,0x30DC,0x30DD,0x30DE,0x30DF,0x30E0, 0x30E1,0x30E2,0x30E3,0x30E4,0x30E5,0x30E6,0x30E7,0x30E8, 0x30E9,0x30EA,0x30EB,0x30EC,0x30ED,0x30EE,0x30EF,0x30F0, 0x30F1,0x30F2,0x30F3,0x30F4,0x30F5,0x30F6, /* Range 0x2C21 - 0x2C41, array index: 0x04B5 */ 0x0410,0x0411,0x0412,0x0413,0x0414,0x0415,0x0401,0x0416, 0x0417,0x0418,0x0419,0x041A,0x041B,0x041C,0x041D,0x041E, 0x041F,0x0420,0x0421,0x0422,0x0423,0x0424,0x0425,0x0426, 0x0427,0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E, 0x042F, /* Range 0x2C51 - 0x2C71, array index: 0x04D6 */ 0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0451,0x0436, 0x0437,0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E, 0x043F,0x0440,0x0441,0x0442,0x0443,0x0444,0x0445,0x0446, 0x0447,0x0448,0x0449,0x044A,0x044B,0x044C,0x044D,0x044E, 0x044F, /* Range 0x3021 - 0x307E, array index: 0x04F7 */ 0xAC00,0xAC01,0xAC04,0xAC07,0xAC08,0xAC09,0xAC0A,0xAC10, 0xAC11,0xAC12,0xAC13,0xAC14,0xAC15,0xAC16,0xAC17,0xAC19, 0xAC1A,0xAC1B,0xAC1C,0xAC1D,0xAC20,0xAC24,0xAC2C,0xAC2D, 0xAC2F,0xAC30,0xAC31,0xAC38,0xAC39,0xAC3C,0xAC40,0xAC4B, 0xAC4D,0xAC54,0xAC58,0xAC5C,0xAC70,0xAC71,0xAC74,0xAC77, 0xAC78,0xAC7A,0xAC80,0xAC81,0xAC83,0xAC84,0xAC85,0xAC86, 0xAC89,0xAC8A,0xAC8B,0xAC8C,0xAC90,0xAC94,0xAC9C,0xAC9D, 0xAC9F,0xACA0,0xACA1,0xACA8,0xACA9,0xACAA,0xACAC,0xACAF, 0xACB0,0xACB8,0xACB9,0xACBB,0xACBC,0xACBD,0xACC1,0xACC4, 0xACC8,0xACCC,0xACD5,0xACD7,0xACE0,0xACE1,0xACE4,0xACE7, 0xACE8,0xACEA,0xACEC,0xACEF,0xACF0,0xACF1,0xACF3,0xACF5, 0xACF6,0xACFC,0xACFD,0xAD00,0xAD04,0xAD06, /* Range 0x3121 - 0x317E, array index: 0x0555 */ 0xAD0C,0xAD0D,0xAD0F,0xAD11,0xAD18,0xAD1C,0xAD20,0xAD29, 0xAD2C,0xAD2D,0xAD34,0xAD35,0xAD38,0xAD3C,0xAD44,0xAD45, 0xAD47,0xAD49,0xAD50,0xAD54,0xAD58,0xAD61,0xAD63,0xAD6C, 0xAD6D,0xAD70,0xAD73,0xAD74,0xAD75,0xAD76,0xAD7B,0xAD7C, 0xAD7D,0xAD7F,0xAD81,0xAD82,0xAD88,0xAD89,0xAD8C,0xAD90, 0xAD9C,0xAD9D,0xADA4,0xADB7,0xADC0,0xADC1,0xADC4,0xADC8, 0xADD0,0xADD1,0xADD3,0xADDC,0xADE0,0xADE4,0xADF8,0xADF9, 0xADFC,0xADFF,0xAE00,0xAE01,0xAE08,0xAE09,0xAE0B,0xAE0D, 0xAE14,0xAE30,0xAE31,0xAE34,0xAE37,0xAE38,0xAE3A,0xAE40, 0xAE41,0xAE43,0xAE45,0xAE46,0xAE4A,0xAE4C,0xAE4D,0xAE4E, 0xAE50,0xAE54,0xAE56,0xAE5C,0xAE5D,0xAE5F,0xAE60,0xAE61, 0xAE65,0xAE68,0xAE69,0xAE6C,0xAE70,0xAE78, /* Range 0x3221 - 0x327E, array index: 0x05B3 */ 0xAE79,0xAE7B,0xAE7C,0xAE7D,0xAE84,0xAE85,0xAE8C,0xAEBC, 0xAEBD,0xAEBE,0xAEC0,0xAEC4,0xAECC,0xAECD,0xAECF,0xAED0, 0xAED1,0xAED8,0xAED9,0xAEDC,0xAEE8,0xAEEB,0xAEED,0xAEF4, 0xAEF8,0xAEFC,0xAF07,0xAF08,0xAF0D,0xAF10,0xAF2C,0xAF2D, 0xAF30,0xAF32,0xAF34,0xAF3C,0xAF3D,0xAF3F,0xAF41,0xAF42, 0xAF43,0xAF48,0xAF49,0xAF50,0xAF5C,0xAF5D,0xAF64,0xAF65, 0xAF79,0xAF80,0xAF84,0xAF88,0xAF90,0xAF91,0xAF95,0xAF9C, 0xAFB8,0xAFB9,0xAFBC,0xAFC0,0xAFC7,0xAFC8,0xAFC9,0xAFCB, 0xAFCD,0xAFCE,0xAFD4,0xAFDC,0xAFE8,0xAFE9,0xAFF0,0xAFF1, 0xAFF4,0xAFF8,0xB000,0xB001,0xB004,0xB00C,0xB010,0xB014, 0xB01C,0xB01D,0xB028,0xB044,0xB045,0xB048,0xB04A,0xB04C, 0xB04E,0xB053,0xB054,0xB055,0xB057,0xB059, /* Range 0x3321 - 0x337E, array index: 0x0611 */ 0xB05D,0xB07C,0xB07D,0xB080,0xB084,0xB08C,0xB08D,0xB08F, 0xB091,0xB098,0xB099,0xB09A,0xB09C,0xB09F,0xB0A0,0xB0A1, 0xB0A2,0xB0A8,0xB0A9,0xB0AB,0xB0AC,0xB0AD,0xB0AE,0xB0AF, 0xB0B1,0xB0B3,0xB0B4,0xB0B5,0xB0B8,0xB0BC,0xB0C4,0xB0C5, 0xB0C7,0xB0C8,0xB0C9,0xB0D0,0xB0D1,0xB0D4,0xB0D8,0xB0E0, 0xB0E5,0xB108,0xB109,0xB10B,0xB10C,0xB110,0xB112,0xB113, 0xB118,0xB119,0xB11B,0xB11C,0xB11D,0xB123,0xB124,0xB125, 0xB128,0xB12C,0xB134,0xB135,0xB137,0xB138,0xB139,0xB140, 0xB141,0xB144,0xB148,0xB150,0xB151,0xB154,0xB155,0xB158, 0xB15C,0xB160,0xB178,0xB179,0xB17C,0xB180,0xB182,0xB188, 0xB189,0xB18B,0xB18D,0xB192,0xB193,0xB194,0xB198,0xB19C, 0xB1A8,0xB1CC,0xB1D0,0xB1D4,0xB1DC,0xB1DD, /* Range 0x3421 - 0x347E, array index: 0x066F */ 0xB1DF,0xB1E8,0xB1E9,0xB1EC,0xB1F0,0xB1F9,0xB1FB,0xB1FD, 0xB204,0xB205,0xB208,0xB20B,0xB20C,0xB214,0xB215,0xB217, 0xB219,0xB220,0xB234,0xB23C,0xB258,0xB25C,0xB260,0xB268, 0xB269,0xB274,0xB275,0xB27C,0xB284,0xB285,0xB289,0xB290, 0xB291,0xB294,0xB298,0xB299,0xB29A,0xB2A0,0xB2A1,0xB2A3, 0xB2A5,0xB2A6,0xB2AA,0xB2AC,0xB2B0,0xB2B4,0xB2C8,0xB2C9, 0xB2CC,0xB2D0,0xB2D2,0xB2D8,0xB2D9,0xB2DB,0xB2DD,0xB2E2, 0xB2E4,0xB2E5,0xB2E6,0xB2E8,0xB2EB,0xB2EC,0xB2ED,0xB2EE, 0xB2EF,0xB2F3,0xB2F4,0xB2F5,0xB2F7,0xB2F8,0xB2F9,0xB2FA, 0xB2FB,0xB2FF,0xB300,0xB301,0xB304,0xB308,0xB310,0xB311, 0xB313,0xB314,0xB315,0xB31C,0xB354,0xB355,0xB356,0xB358, 0xB35B,0xB35C,0xB35E,0xB35F,0xB364,0xB365, /* Range 0x3521 - 0x357E, array index: 0x06CD */ 0xB367,0xB369,0xB36B,0xB36E,0xB370,0xB371,0xB374,0xB378, 0xB380,0xB381,0xB383,0xB384,0xB385,0xB38C,0xB390,0xB394, 0xB3A0,0xB3A1,0xB3A8,0xB3AC,0xB3C4,0xB3C5,0xB3C8,0xB3CB, 0xB3CC,0xB3CE,0xB3D0,0xB3D4,0xB3D5,0xB3D7,0xB3D9,0xB3DB, 0xB3DD,0xB3E0,0xB3E4,0xB3E8,0xB3FC,0xB410,0xB418,0xB41C, 0xB420,0xB428,0xB429,0xB42B,0xB434,0xB450,0xB451,0xB454, 0xB458,0xB460,0xB461,0xB463,0xB465,0xB46C,0xB480,0xB488, 0xB49D,0xB4A4,0xB4A8,0xB4AC,0xB4B5,0xB4B7,0xB4B9,0xB4C0, 0xB4C4,0xB4C8,0xB4D0,0xB4D5,0xB4DC,0xB4DD,0xB4E0,0xB4E3, 0xB4E4,0xB4E6,0xB4EC,0xB4ED,0xB4EF,0xB4F1,0xB4F8,0xB514, 0xB515,0xB518,0xB51B,0xB51C,0xB524,0xB525,0xB527,0xB528, 0xB529,0xB52A,0xB530,0xB531,0xB534,0xB538, /* Range 0x3621 - 0x367E, array index: 0x072B */ 0xB540,0xB541,0xB543,0xB544,0xB545,0xB54B,0xB54C,0xB54D, 0xB550,0xB554,0xB55C,0xB55D,0xB55F,0xB560,0xB561,0xB5A0, 0xB5A1,0xB5A4,0xB5A8,0xB5AA,0xB5AB,0xB5B0,0xB5B1,0xB5B3, 0xB5B4,0xB5B5,0xB5BB,0xB5BC,0xB5BD,0xB5C0,0xB5C4,0xB5CC, 0xB5CD,0xB5CF,0xB5D0,0xB5D1,0xB5D8,0xB5EC,0xB610,0xB611, 0xB614,0xB618,0xB625,0xB62C,0xB634,0xB648,0xB664,0xB668, 0xB69C,0xB69D,0xB6A0,0xB6A4,0xB6AB,0xB6AC,0xB6B1,0xB6D4, 0xB6F0,0xB6F4,0xB6F8,0xB700,0xB701,0xB705,0xB728,0xB729, 0xB72C,0xB72F,0xB730,0xB738,0xB739,0xB73B,0xB744,0xB748, 0xB74C,0xB754,0xB755,0xB760,0xB764,0xB768,0xB770,0xB771, 0xB773,0xB775,0xB77C,0xB77D,0xB780,0xB784,0xB78C,0xB78D, 0xB78F,0xB790,0xB791,0xB792,0xB796,0xB797, /* Range 0x3721 - 0x377E, array index: 0x0789 */ 0xB798,0xB799,0xB79C,0xB7A0,0xB7A8,0xB7A9,0xB7AB,0xB7AC, 0xB7AD,0xB7B4,0xB7B5,0xB7B8,0xB7C7,0xB7C9,0xB7EC,0xB7ED, 0xB7F0,0xB7F4,0xB7FC,0xB7FD,0xB7FF,0xB800,0xB801,0xB807, 0xB808,0xB809,0xB80C,0xB810,0xB818,0xB819,0xB81B,0xB81D, 0xB824,0xB825,0xB828,0xB82C,0xB834,0xB835,0xB837,0xB838, 0xB839,0xB840,0xB844,0xB851,0xB853,0xB85C,0xB85D,0xB860, 0xB864,0xB86C,0xB86D,0xB86F,0xB871,0xB878,0xB87C,0xB88D, 0xB8A8,0xB8B0,0xB8B4,0xB8B8,0xB8C0,0xB8C1,0xB8C3,0xB8C5, 0xB8CC,0xB8D0,0xB8D4,0xB8DD,0xB8DF,0xB8E1,0xB8E8,0xB8E9, 0xB8EC,0xB8F0,0xB8F8,0xB8F9,0xB8FB,0xB8FD,0xB904,0xB918, 0xB920,0xB93C,0xB93D,0xB940,0xB944,0xB94C,0xB94F,0xB951, 0xB958,0xB959,0xB95C,0xB960,0xB968,0xB969, /* Range 0x3821 - 0x387E, array index: 0x07E7 */ 0xB96B,0xB96D,0xB974,0xB975,0xB978,0xB97C,0xB984,0xB985, 0xB987,0xB989,0xB98A,0xB98D,0xB98E,0xB9AC,0xB9AD,0xB9B0, 0xB9B4,0xB9BC,0xB9BD,0xB9BF,0xB9C1,0xB9C8,0xB9C9,0xB9CC, 0xB9CE,0xB9CF,0xB9D0,0xB9D1,0xB9D2,0xB9D8,0xB9D9,0xB9DB, 0xB9DD,0xB9DE,0xB9E1,0xB9E3,0xB9E4,0xB9E5,0xB9E8,0xB9EC, 0xB9F4,0xB9F5,0xB9F7,0xB9F8,0xB9F9,0xB9FA,0xBA00,0xBA01, 0xBA08,0xBA15,0xBA38,0xBA39,0xBA3C,0xBA40,0xBA42,0xBA48, 0xBA49,0xBA4B,0xBA4D,0xBA4E,0xBA53,0xBA54,0xBA55,0xBA58, 0xBA5C,0xBA64,0xBA65,0xBA67,0xBA68,0xBA69,0xBA70,0xBA71, 0xBA74,0xBA78,0xBA83,0xBA84,0xBA85,0xBA87,0xBA8C,0xBAA8, 0xBAA9,0xBAAB,0xBAAC,0xBAB0,0xBAB2,0xBAB8,0xBAB9,0xBABB, 0xBABD,0xBAC4,0xBAC8,0xBAD8,0xBAD9,0xBAFC, /* Range 0x3921 - 0x397E, array index: 0x0845 */ 0xBB00,0xBB04,0xBB0D,0xBB0F,0xBB11,0xBB18,0xBB1C,0xBB20, 0xBB29,0xBB2B,0xBB34,0xBB35,0xBB36,0xBB38,0xBB3B,0xBB3C, 0xBB3D,0xBB3E,0xBB44,0xBB45,0xBB47,0xBB49,0xBB4D,0xBB4F, 0xBB50,0xBB54,0xBB58,0xBB61,0xBB63,0xBB6C,0xBB88,0xBB8C, 0xBB90,0xBBA4,0xBBA8,0xBBAC,0xBBB4,0xBBB7,0xBBC0,0xBBC4, 0xBBC8,0xBBD0,0xBBD3,0xBBF8,0xBBF9,0xBBFC,0xBBFF,0xBC00, 0xBC02,0xBC08,0xBC09,0xBC0B,0xBC0C,0xBC0D,0xBC0F,0xBC11, 0xBC14,0xBC15,0xBC16,0xBC17,0xBC18,0xBC1B,0xBC1C,0xBC1D, 0xBC1E,0xBC1F,0xBC24,0xBC25,0xBC27,0xBC29,0xBC2D,0xBC30, 0xBC31,0xBC34,0xBC38,0xBC40,0xBC41,0xBC43,0xBC44,0xBC45, 0xBC49,0xBC4C,0xBC4D,0xBC50,0xBC5D,0xBC84,0xBC85,0xBC88, 0xBC8B,0xBC8C,0xBC8E,0xBC94,0xBC95,0xBC97, /* Range 0x3A21 - 0x3A7E, array index: 0x08A3 */ 0xBC99,0xBC9A,0xBCA0,0xBCA1,0xBCA4,0xBCA7,0xBCA8,0xBCB0, 0xBCB1,0xBCB3,0xBCB4,0xBCB5,0xBCBC,0xBCBD,0xBCC0,0xBCC4, 0xBCCD,0xBCCF,0xBCD0,0xBCD1,0xBCD5,0xBCD8,0xBCDC,0xBCF4, 0xBCF5,0xBCF6,0xBCF8,0xBCFC,0xBD04,0xBD05,0xBD07,0xBD09, 0xBD10,0xBD14,0xBD24,0xBD2C,0xBD40,0xBD48,0xBD49,0xBD4C, 0xBD50,0xBD58,0xBD59,0xBD64,0xBD68,0xBD80,0xBD81,0xBD84, 0xBD87,0xBD88,0xBD89,0xBD8A,0xBD90,0xBD91,0xBD93,0xBD95, 0xBD99,0xBD9A,0xBD9C,0xBDA4,0xBDB0,0xBDB8,0xBDD4,0xBDD5, 0xBDD8,0xBDDC,0xBDE9,0xBDF0,0xBDF4,0xBDF8,0xBE00,0xBE03, 0xBE05,0xBE0C,0xBE0D,0xBE10,0xBE14,0xBE1C,0xBE1D,0xBE1F, 0xBE44,0xBE45,0xBE48,0xBE4C,0xBE4E,0xBE54,0xBE55,0xBE57, 0xBE59,0xBE5A,0xBE5B,0xBE60,0xBE61,0xBE64, /* Range 0x3B21 - 0x3B7E, array index: 0x0901 */ 0xBE68,0xBE6A,0xBE70,0xBE71,0xBE73,0xBE74,0xBE75,0xBE7B, 0xBE7C,0xBE7D,0xBE80,0xBE84,0xBE8C,0xBE8D,0xBE8F,0xBE90, 0xBE91,0xBE98,0xBE99,0xBEA8,0xBED0,0xBED1,0xBED4,0xBED7, 0xBED8,0xBEE0,0xBEE3,0xBEE4,0xBEE5,0xBEEC,0xBF01,0xBF08, 0xBF09,0xBF18,0xBF19,0xBF1B,0xBF1C,0xBF1D,0xBF40,0xBF41, 0xBF44,0xBF48,0xBF50,0xBF51,0xBF55,0xBF94,0xBFB0,0xBFC5, 0xBFCC,0xBFCD,0xBFD0,0xBFD4,0xBFDC,0xBFDF,0xBFE1,0xC03C, 0xC051,0xC058,0xC05C,0xC060,0xC068,0xC069,0xC090,0xC091, 0xC094,0xC098,0xC0A0,0xC0A1,0xC0A3,0xC0A5,0xC0AC,0xC0AD, 0xC0AF,0xC0B0,0xC0B3,0xC0B4,0xC0B5,0xC0B6,0xC0BC,0xC0BD, 0xC0BF,0xC0C0,0xC0C1,0xC0C5,0xC0C8,0xC0C9,0xC0CC,0xC0D0, 0xC0D8,0xC0D9,0xC0DB,0xC0DC,0xC0DD,0xC0E4, /* Range 0x3C21 - 0x3C7E, array index: 0x095F */ 0xC0E5,0xC0E8,0xC0EC,0xC0F4,0xC0F5,0xC0F7,0xC0F9,0xC100, 0xC104,0xC108,0xC110,0xC115,0xC11C,0xC11D,0xC11E,0xC11F, 0xC120,0xC123,0xC124,0xC126,0xC127,0xC12C,0xC12D,0xC12F, 0xC130,0xC131,0xC136,0xC138,0xC139,0xC13C,0xC140,0xC148, 0xC149,0xC14B,0xC14C,0xC14D,0xC154,0xC155,0xC158,0xC15C, 0xC164,0xC165,0xC167,0xC168,0xC169,0xC170,0xC174,0xC178, 0xC185,0xC18C,0xC18D,0xC18E,0xC190,0xC194,0xC196,0xC19C, 0xC19D,0xC19F,0xC1A1,0xC1A5,0xC1A8,0xC1A9,0xC1AC,0xC1B0, 0xC1BD,0xC1C4,0xC1C8,0xC1CC,0xC1D4,0xC1D7,0xC1D8,0xC1E0, 0xC1E4,0xC1E8,0xC1F0,0xC1F1,0xC1F3,0xC1FC,0xC1FD,0xC200, 0xC204,0xC20C,0xC20D,0xC20F,0xC211,0xC218,0xC219,0xC21C, 0xC21F,0xC220,0xC228,0xC229,0xC22B,0xC22D, /* Range 0x3D21 - 0x3D7E, array index: 0x09BD */ 0xC22F,0xC231,0xC232,0xC234,0xC248,0xC250,0xC251,0xC254, 0xC258,0xC260,0xC265,0xC26C,0xC26D,0xC270,0xC274,0xC27C, 0xC27D,0xC27F,0xC281,0xC288,0xC289,0xC290,0xC298,0xC29B, 0xC29D,0xC2A4,0xC2A5,0xC2A8,0xC2AC,0xC2AD,0xC2B4,0xC2B5, 0xC2B7,0xC2B9,0xC2DC,0xC2DD,0xC2E0,0xC2E3,0xC2E4,0xC2EB, 0xC2EC,0xC2ED,0xC2EF,0xC2F1,0xC2F6,0xC2F8,0xC2F9,0xC2FB, 0xC2FC,0xC300,0xC308,0xC309,0xC30C,0xC30D,0xC313,0xC314, 0xC315,0xC318,0xC31C,0xC324,0xC325,0xC328,0xC329,0xC345, 0xC368,0xC369,0xC36C,0xC370,0xC372,0xC378,0xC379,0xC37C, 0xC37D,0xC384,0xC388,0xC38C,0xC3C0,0xC3D8,0xC3D9,0xC3DC, 0xC3DF,0xC3E0,0xC3E2,0xC3E8,0xC3E9,0xC3ED,0xC3F4,0xC3F5, 0xC3F8,0xC408,0xC410,0xC424,0xC42C,0xC430, /* Range 0x3E21 - 0x3E7E, array index: 0x0A1B */ 0xC434,0xC43C,0xC43D,0xC448,0xC464,0xC465,0xC468,0xC46C, 0xC474,0xC475,0xC479,0xC480,0xC494,0xC49C,0xC4B8,0xC4BC, 0xC4E9,0xC4F0,0xC4F1,0xC4F4,0xC4F8,0xC4FA,0xC4FF,0xC500, 0xC501,0xC50C,0xC510,0xC514,0xC51C,0xC528,0xC529,0xC52C, 0xC530,0xC538,0xC539,0xC53B,0xC53D,0xC544,0xC545,0xC548, 0xC549,0xC54A,0xC54C,0xC54D,0xC54E,0xC553,0xC554,0xC555, 0xC557,0xC558,0xC559,0xC55D,0xC55E,0xC560,0xC561,0xC564, 0xC568,0xC570,0xC571,0xC573,0xC574,0xC575,0xC57C,0xC57D, 0xC580,0xC584,0xC587,0xC58C,0xC58D,0xC58F,0xC591,0xC595, 0xC597,0xC598,0xC59C,0xC5A0,0xC5A9,0xC5B4,0xC5B5,0xC5B8, 0xC5B9,0xC5BB,0xC5BC,0xC5BD,0xC5BE,0xC5C4,0xC5C5,0xC5C6, 0xC5C7,0xC5C8,0xC5C9,0xC5CA,0xC5CC,0xC5CE, /* Range 0x3F21 - 0x3F7E, array index: 0x0A79 */ 0xC5D0,0xC5D1,0xC5D4,0xC5D8,0xC5E0,0xC5E1,0xC5E3,0xC5E5, 0xC5EC,0xC5ED,0xC5EE,0xC5F0,0xC5F4,0xC5F6,0xC5F7,0xC5FC, 0xC5FD,0xC5FE,0xC5FF,0xC600,0xC601,0xC605,0xC606,0xC607, 0xC608,0xC60C,0xC610,0xC618,0xC619,0xC61B,0xC61C,0xC624, 0xC625,0xC628,0xC62C,0xC62D,0xC62E,0xC630,0xC633,0xC634, 0xC635,0xC637,0xC639,0xC63B,0xC640,0xC641,0xC644,0xC648, 0xC650,0xC651,0xC653,0xC654,0xC655,0xC65C,0xC65D,0xC660, 0xC66C,0xC66F,0xC671,0xC678,0xC679,0xC67C,0xC680,0xC688, 0xC689,0xC68B,0xC68D,0xC694,0xC695,0xC698,0xC69C,0xC6A4, 0xC6A5,0xC6A7,0xC6A9,0xC6B0,0xC6B1,0xC6B4,0xC6B8,0xC6B9, 0xC6BA,0xC6C0,0xC6C1,0xC6C3,0xC6C5,0xC6CC,0xC6CD,0xC6D0, 0xC6D4,0xC6DC,0xC6DD,0xC6E0,0xC6E1,0xC6E8, /* Range 0x4021 - 0x407E, array index: 0x0AD7 */ 0xC6E9,0xC6EC,0xC6F0,0xC6F8,0xC6F9,0xC6FD,0xC704,0xC705, 0xC708,0xC70C,0xC714,0xC715,0xC717,0xC719,0xC720,0xC721, 0xC724,0xC728,0xC730,0xC731,0xC733,0xC735,0xC737,0xC73C, 0xC73D,0xC740,0xC744,0xC74A,0xC74C,0xC74D,0xC74F,0xC751, 0xC752,0xC753,0xC754,0xC755,0xC756,0xC757,0xC758,0xC75C, 0xC760,0xC768,0xC76B,0xC774,0xC775,0xC778,0xC77C,0xC77D, 0xC77E,0xC783,0xC784,0xC785,0xC787,0xC788,0xC789,0xC78A, 0xC78E,0xC790,0xC791,0xC794,0xC796,0xC797,0xC798,0xC79A, 0xC7A0,0xC7A1,0xC7A3,0xC7A4,0xC7A5,0xC7A6,0xC7AC,0xC7AD, 0xC7B0,0xC7B4,0xC7BC,0xC7BD,0xC7BF,0xC7C0,0xC7C1,0xC7C8, 0xC7C9,0xC7CC,0xC7CE,0xC7D0,0xC7D8,0xC7DD,0xC7E4,0xC7E8, 0xC7EC,0xC800,0xC801,0xC804,0xC808,0xC80A, /* Range 0x4121 - 0x417E, array index: 0x0B35 */ 0xC810,0xC811,0xC813,0xC815,0xC816,0xC81C,0xC81D,0xC820, 0xC824,0xC82C,0xC82D,0xC82F,0xC831,0xC838,0xC83C,0xC840, 0xC848,0xC849,0xC84C,0xC84D,0xC854,0xC870,0xC871,0xC874, 0xC878,0xC87A,0xC880,0xC881,0xC883,0xC885,0xC886,0xC887, 0xC88B,0xC88C,0xC88D,0xC894,0xC89D,0xC89F,0xC8A1,0xC8A8, 0xC8BC,0xC8BD,0xC8C4,0xC8C8,0xC8CC,0xC8D4,0xC8D5,0xC8D7, 0xC8D9,0xC8E0,0xC8E1,0xC8E4,0xC8F5,0xC8FC,0xC8FD,0xC900, 0xC904,0xC905,0xC906,0xC90C,0xC90D,0xC90F,0xC911,0xC918, 0xC92C,0xC934,0xC950,0xC951,0xC954,0xC958,0xC960,0xC961, 0xC963,0xC96C,0xC970,0xC974,0xC97C,0xC988,0xC989,0xC98C, 0xC990,0xC998,0xC999,0xC99B,0xC99D,0xC9C0,0xC9C1,0xC9C4, 0xC9C7,0xC9C8,0xC9CA,0xC9D0,0xC9D1,0xC9D3, /* Range 0x4221 - 0x427E, array index: 0x0B93 */ 0xC9D5,0xC9D6,0xC9D9,0xC9DA,0xC9DC,0xC9DD,0xC9E0,0xC9E2, 0xC9E4,0xC9E7,0xC9EC,0xC9ED,0xC9EF,0xC9F0,0xC9F1,0xC9F8, 0xC9F9,0xC9FC,0xCA00,0xCA08,0xCA09,0xCA0B,0xCA0C,0xCA0D, 0xCA14,0xCA18,0xCA29,0xCA4C,0xCA4D,0xCA50,0xCA54,0xCA5C, 0xCA5D,0xCA5F,0xCA60,0xCA61,0xCA68,0xCA7D,0xCA84,0xCA98, 0xCABC,0xCABD,0xCAC0,0xCAC4,0xCACC,0xCACD,0xCACF,0xCAD1, 0xCAD3,0xCAD8,0xCAD9,0xCAE0,0xCAEC,0xCAF4,0xCB08,0xCB10, 0xCB14,0xCB18,0xCB20,0xCB21,0xCB41,0xCB48,0xCB49,0xCB4C, 0xCB50,0xCB58,0xCB59,0xCB5D,0xCB64,0xCB78,0xCB79,0xCB9C, 0xCBB8,0xCBD4,0xCBE4,0xCBE7,0xCBE9,0xCC0C,0xCC0D,0xCC10, 0xCC14,0xCC1C,0xCC1D,0xCC21,0xCC22,0xCC27,0xCC28,0xCC29, 0xCC2C,0xCC2E,0xCC30,0xCC38,0xCC39,0xCC3B, /* Range 0x4321 - 0x437E, array index: 0x0BF1 */ 0xCC3C,0xCC3D,0xCC3E,0xCC44,0xCC45,0xCC48,0xCC4C,0xCC54, 0xCC55,0xCC57,0xCC58,0xCC59,0xCC60,0xCC64,0xCC66,0xCC68, 0xCC70,0xCC75,0xCC98,0xCC99,0xCC9C,0xCCA0,0xCCA8,0xCCA9, 0xCCAB,0xCCAC,0xCCAD,0xCCB4,0xCCB5,0xCCB8,0xCCBC,0xCCC4, 0xCCC5,0xCCC7,0xCCC9,0xCCD0,0xCCD4,0xCCE4,0xCCEC,0xCCF0, 0xCD01,0xCD08,0xCD09,0xCD0C,0xCD10,0xCD18,0xCD19,0xCD1B, 0xCD1D,0xCD24,0xCD28,0xCD2C,0xCD39,0xCD5C,0xCD60,0xCD64, 0xCD6C,0xCD6D,0xCD6F,0xCD71,0xCD78,0xCD88,0xCD94,0xCD95, 0xCD98,0xCD9C,0xCDA4,0xCDA5,0xCDA7,0xCDA9,0xCDB0,0xCDC4, 0xCDCC,0xCDD0,0xCDE8,0xCDEC,0xCDF0,0xCDF8,0xCDF9,0xCDFB, 0xCDFD,0xCE04,0xCE08,0xCE0C,0xCE14,0xCE19,0xCE20,0xCE21, 0xCE24,0xCE28,0xCE30,0xCE31,0xCE33,0xCE35, /* Range 0x4421 - 0x447E, array index: 0x0C4F */ 0xCE58,0xCE59,0xCE5C,0xCE5F,0xCE60,0xCE61,0xCE68,0xCE69, 0xCE6B,0xCE6D,0xCE74,0xCE75,0xCE78,0xCE7C,0xCE84,0xCE85, 0xCE87,0xCE89,0xCE90,0xCE91,0xCE94,0xCE98,0xCEA0,0xCEA1, 0xCEA3,0xCEA4,0xCEA5,0xCEAC,0xCEAD,0xCEC1,0xCEE4,0xCEE5, 0xCEE8,0xCEEB,0xCEEC,0xCEF4,0xCEF5,0xCEF7,0xCEF8,0xCEF9, 0xCF00,0xCF01,0xCF04,0xCF08,0xCF10,0xCF11,0xCF13,0xCF15, 0xCF1C,0xCF20,0xCF24,0xCF2C,0xCF2D,0xCF2F,0xCF30,0xCF31, 0xCF38,0xCF54,0xCF55,0xCF58,0xCF5C,0xCF64,0xCF65,0xCF67, 0xCF69,0xCF70,0xCF71,0xCF74,0xCF78,0xCF80,0xCF85,0xCF8C, 0xCFA1,0xCFA8,0xCFB0,0xCFC4,0xCFE0,0xCFE1,0xCFE4,0xCFE8, 0xCFF0,0xCFF1,0xCFF3,0xCFF5,0xCFFC,0xD000,0xD004,0xD011, 0xD018,0xD02D,0xD034,0xD035,0xD038,0xD03C, /* Range 0x4521 - 0x457E, array index: 0x0CAD */ 0xD044,0xD045,0xD047,0xD049,0xD050,0xD054,0xD058,0xD060, 0xD06C,0xD06D,0xD070,0xD074,0xD07C,0xD07D,0xD081,0xD0A4, 0xD0A5,0xD0A8,0xD0AC,0xD0B4,0xD0B5,0xD0B7,0xD0B9,0xD0C0, 0xD0C1,0xD0C4,0xD0C8,0xD0C9,0xD0D0,0xD0D1,0xD0D3,0xD0D4, 0xD0D5,0xD0DC,0xD0DD,0xD0E0,0xD0E4,0xD0EC,0xD0ED,0xD0EF, 0xD0F0,0xD0F1,0xD0F8,0xD10D,0xD130,0xD131,0xD134,0xD138, 0xD13A,0xD140,0xD141,0xD143,0xD144,0xD145,0xD14C,0xD14D, 0xD150,0xD154,0xD15C,0xD15D,0xD15F,0xD161,0xD168,0xD16C, 0xD17C,0xD184,0xD188,0xD1A0,0xD1A1,0xD1A4,0xD1A8,0xD1B0, 0xD1B1,0xD1B3,0xD1B5,0xD1BA,0xD1BC,0xD1C0,0xD1D8,0xD1F4, 0xD1F8,0xD207,0xD209,0xD210,0xD22C,0xD22D,0xD230,0xD234, 0xD23C,0xD23D,0xD23F,0xD241,0xD248,0xD25C, /* Range 0x4621 - 0x467E, array index: 0x0D0B */ 0xD264,0xD280,0xD281,0xD284,0xD288,0xD290,0xD291,0xD295, 0xD29C,0xD2A0,0xD2A4,0xD2AC,0xD2B1,0xD2B8,0xD2B9,0xD2BC, 0xD2BF,0xD2C0,0xD2C2,0xD2C8,0xD2C9,0xD2CB,0xD2D4,0xD2D8, 0xD2DC,0xD2E4,0xD2E5,0xD2F0,0xD2F1,0xD2F4,0xD2F8,0xD300, 0xD301,0xD303,0xD305,0xD30C,0xD30D,0xD30E,0xD310,0xD314, 0xD316,0xD31C,0xD31D,0xD31F,0xD320,0xD321,0xD325,0xD328, 0xD329,0xD32C,0xD330,0xD338,0xD339,0xD33B,0xD33C,0xD33D, 0xD344,0xD345,0xD37C,0xD37D,0xD380,0xD384,0xD38C,0xD38D, 0xD38F,0xD390,0xD391,0xD398,0xD399,0xD39C,0xD3A0,0xD3A8, 0xD3A9,0xD3AB,0xD3AD,0xD3B4,0xD3B8,0xD3BC,0xD3C4,0xD3C5, 0xD3C8,0xD3C9,0xD3D0,0xD3D8,0xD3E1,0xD3E3,0xD3EC,0xD3ED, 0xD3F0,0xD3F4,0xD3FC,0xD3FD,0xD3FF,0xD401, /* Range 0x4721 - 0x477E, array index: 0x0D69 */ 0xD408,0xD41D,0xD440,0xD444,0xD45C,0xD460,0xD464,0xD46D, 0xD46F,0xD478,0xD479,0xD47C,0xD47F,0xD480,0xD482,0xD488, 0xD489,0xD48B,0xD48D,0xD494,0xD4A9,0xD4CC,0xD4D0,0xD4D4, 0xD4DC,0xD4DF,0xD4E8,0xD4EC,0xD4F0,0xD4F8,0xD4FB,0xD4FD, 0xD504,0xD508,0xD50C,0xD514,0xD515,0xD517,0xD53C,0xD53D, 0xD540,0xD544,0xD54C,0xD54D,0xD54F,0xD551,0xD558,0xD559, 0xD55C,0xD560,0xD565,0xD568,0xD569,0xD56B,0xD56D,0xD574, 0xD575,0xD578,0xD57C,0xD584,0xD585,0xD587,0xD588,0xD589, 0xD590,0xD5A5,0xD5C8,0xD5C9,0xD5CC,0xD5D0,0xD5D2,0xD5D8, 0xD5D9,0xD5DB,0xD5DD,0xD5E4,0xD5E5,0xD5E8,0xD5EC,0xD5F4, 0xD5F5,0xD5F7,0xD5F9,0xD600,0xD601,0xD604,0xD608,0xD610, 0xD611,0xD613,0xD614,0xD615,0xD61C,0xD620, /* Range 0x4821 - 0x487E, array index: 0x0DC7 */ 0xD624,0xD62D,0xD638,0xD639,0xD63C,0xD640,0xD645,0xD648, 0xD649,0xD64B,0xD64D,0xD651,0xD654,0xD655,0xD658,0xD65C, 0xD667,0xD669,0xD670,0xD671,0xD674,0xD683,0xD685,0xD68C, 0xD68D,0xD690,0xD694,0xD69D,0xD69F,0xD6A1,0xD6A8,0xD6AC, 0xD6B0,0xD6B9,0xD6BB,0xD6C4,0xD6C5,0xD6C8,0xD6CC,0xD6D1, 0xD6D4,0xD6D7,0xD6D9,0xD6E0,0xD6E4,0xD6E8,0xD6F0,0xD6F5, 0xD6FC,0xD6FD,0xD700,0xD704,0xD711,0xD718,0xD719,0xD71C, 0xD720,0xD728,0xD729,0xD72B,0xD72D,0xD734,0xD735,0xD738, 0xD73C,0xD744,0xD747,0xD749,0xD750,0xD751,0xD754,0xD756, 0xD757,0xD758,0xD759,0xD760,0xD761,0xD763,0xD765,0xD769, 0xD76C,0xD770,0xD774,0xD77C,0xD77D,0xD781,0xD788,0xD789, 0xD78C,0xD790,0xD798,0xD799,0xD79B,0xD79D, /* Range 0x4A21 - 0x4A7E, array index: 0x0E25 */ 0x4F3D,0x4F73,0x5047,0x50F9,0x52A0,0x53EF,0x5475,0x54E5, 0x5609,0x5AC1,0x5BB6,0x6687,0x67B6,0x67B7,0x67EF,0x6B4C, 0x73C2,0x75C2,0x7A3C,0x82DB,0x8304,0x8857,0x8888,0x8A36, 0x8CC8,0x8DCF,0x8EFB,0x8FE6,0x99D5,0x523B,0x5374,0x5404, 0x606A,0x6164,0x6BBC,0x73CF,0x811A,0x89BA,0x89D2,0x95A3, 0x4F83,0x520A,0x58BE,0x5978,0x59E6,0x5E72,0x5E79,0x61C7, 0x63C0,0x6746,0x67EC,0x687F,0x6F97,0x764E,0x770B,0x78F5, 0x7A08,0x7AFF,0x7C21,0x809D,0x826E,0x8271,0x8AEB,0x9593, 0x4E6B,0x559D,0x66F7,0x6E34,0x78A3,0x7AED,0x845B,0x8910, 0x874E,0x97A8,0x52D8,0x574E,0x582A,0x5D4C,0x611F,0x61BE, 0x6221,0x6562,0x67D1,0x6A44,0x6E1B,0x7518,0x75B3,0x76E3, 0x77B0,0x7D3A,0x90AF,0x9451,0x9452,0x9F95, /* Range 0x4B21 - 0x4B7E, array index: 0x0E83 */ 0x5323,0x5CAC,0x7532,0x80DB,0x9240,0x9598,0x525B,0x5808, 0x59DC,0x5CA1,0x5D17,0x5EB7,0x5F3A,0x5F4A,0x6177,0x6C5F, 0x757A,0x7586,0x7CE0,0x7D73,0x7DB1,0x7F8C,0x8154,0x8221, 0x8591,0x8941,0x8B1B,0x92FC,0x964D,0x9C47,0x4ECB,0x4EF7, 0x500B,0x51F1,0x584F,0x6137,0x613E,0x6168,0x6539,0x69EA, 0x6F11,0x75A5,0x7686,0x76D6,0x7B87,0x82A5,0x84CB,0xF900, 0x93A7,0x958B,0x5580,0x5BA2,0x5751,0xF901,0x7CB3,0x7FB9, 0x91B5,0x5028,0x53BB,0x5C45,0x5DE8,0x62D2,0x636E,0x64DA, 0x64E7,0x6E20,0x70AC,0x795B,0x8DDD,0x8E1E,0xF902,0x907D, 0x9245,0x92F8,0x4E7E,0x4EF6,0x5065,0x5DFE,0x5EFA,0x6106, 0x6957,0x8171,0x8654,0x8E47,0x9375,0x9A2B,0x4E5E,0x5091, 0x6770,0x6840,0x5109,0x528D,0x5292,0x6AA2, /* Range 0x4C21 - 0x4C7E, array index: 0x0EE1 */ 0x77BC,0x9210,0x9ED4,0x52AB,0x602F,0x8FF2,0x5048,0x61A9, 0x63ED,0x64CA,0x683C,0x6A84,0x6FC0,0x8188,0x89A1,0x9694, 0x5805,0x727D,0x72AC,0x7504,0x7D79,0x7E6D,0x80A9,0x898B, 0x8B74,0x9063,0x9D51,0x6289,0x6C7A,0x6F54,0x7D50,0x7F3A, 0x8A23,0x517C,0x614A,0x7B9D,0x8B19,0x9257,0x938C,0x4EAC, 0x4FD3,0x501E,0x50BE,0x5106,0x52C1,0x52CD,0x537F,0x5770, 0x5883,0x5E9A,0x5F91,0x6176,0x61AC,0x64CE,0x656C,0x666F, 0x66BB,0x66F4,0x6897,0x6D87,0x7085,0x70F1,0x749F,0x74A5, 0x74CA,0x75D9,0x786C,0x78EC,0x7ADF,0x7AF6,0x7D45,0x7D93, 0x8015,0x803F,0x811B,0x8396,0x8B66,0x8F15,0x9015,0x93E1, 0x9803,0x9838,0x9A5A,0x9BE8,0x4FC2,0x5553,0x583A,0x5951, 0x5B63,0x5C46,0x60B8,0x6212,0x6842,0x68B0, /* Range 0x4D21 - 0x4D7E, array index: 0x0F3F */ 0x68E8,0x6EAA,0x754C,0x7678,0x78CE,0x7A3D,0x7CFB,0x7E6B, 0x7E7C,0x8A08,0x8AA1,0x8C3F,0x968E,0x9DC4,0x53E4,0x53E9, 0x544A,0x5471,0x56FA,0x59D1,0x5B64,0x5C3B,0x5EAB,0x62F7, 0x6537,0x6545,0x6572,0x66A0,0x67AF,0x69C1,0x6CBD,0x75FC, 0x7690,0x777E,0x7A3F,0x7F94,0x8003,0x80A1,0x818F,0x82E6, 0x82FD,0x83F0,0x85C1,0x8831,0x88B4,0x8AA5,0xF903,0x8F9C, 0x932E,0x96C7,0x9867,0x9AD8,0x9F13,0x54ED,0x659B,0x66F2, 0x688F,0x7A40,0x8C37,0x9D60,0x56F0,0x5764,0x5D11,0x6606, 0x68B1,0x68CD,0x6EFE,0x7428,0x889E,0x9BE4,0x6C68,0xF904, 0x9AA8,0x4F9B,0x516C,0x5171,0x529F,0x5B54,0x5DE5,0x6050, 0x606D,0x62F1,0x63A7,0x653B,0x73D9,0x7A7A,0x86A3,0x8CA2, 0x978F,0x4E32,0x5BE1,0x6208,0x679C,0x74DC, /* Range 0x4E21 - 0x4E7E, array index: 0x0F9D */ 0x79D1,0x83D3,0x8A87,0x8AB2,0x8DE8,0x904E,0x934B,0x9846, 0x5ED3,0x69E8,0x85FF,0x90ED,0xF905,0x51A0,0x5B98,0x5BEC, 0x6163,0x68FA,0x6B3E,0x704C,0x742F,0x74D8,0x7BA1,0x7F50, 0x83C5,0x89C0,0x8CAB,0x95DC,0x9928,0x522E,0x605D,0x62EC, 0x9002,0x4F8A,0x5149,0x5321,0x58D9,0x5EE3,0x66E0,0x6D38, 0x709A,0x72C2,0x73D6,0x7B50,0x80F1,0x945B,0x5366,0x639B, 0x7F6B,0x4E56,0x5080,0x584A,0x58DE,0x602A,0x6127,0x62D0, 0x69D0,0x9B41,0x5B8F,0x7D18,0x80B1,0x8F5F,0x4EA4,0x50D1, 0x54AC,0x55AC,0x5B0C,0x5DA0,0x5DE7,0x652A,0x654E,0x6821, 0x6A4B,0x72E1,0x768E,0x77EF,0x7D5E,0x7FF9,0x81A0,0x854E, 0x86DF,0x8F03,0x8F4E,0x90CA,0x9903,0x9A55,0x9BAB,0x4E18, 0x4E45,0x4E5D,0x4EC7,0x4FF1,0x5177,0x52FE, /* Range 0x4F21 - 0x4F7E, array index: 0x0FFB */ 0x5340,0x53E3,0x53E5,0x548E,0x5614,0x5775,0x57A2,0x5BC7, 0x5D87,0x5ED0,0x61FC,0x62D8,0x6551,0x67B8,0x67E9,0x69CB, 0x6B50,0x6BC6,0x6BEC,0x6C42,0x6E9D,0x7078,0x72D7,0x7396, 0x7403,0x77BF,0x77E9,0x7A76,0x7D7F,0x8009,0x81FC,0x8205, 0x820A,0x82DF,0x8862,0x8B33,0x8CFC,0x8EC0,0x9011,0x90B1, 0x9264,0x92B6,0x99D2,0x9A45,0x9CE9,0x9DD7,0x9F9C,0x570B, 0x5C40,0x83CA,0x97A0,0x97AB,0x9EB4,0x541B,0x7A98,0x7FA4, 0x88D9,0x8ECD,0x90E1,0x5800,0x5C48,0x6398,0x7A9F,0x5BAE, 0x5F13,0x7A79,0x7AAE,0x828E,0x8EAC,0x5026,0x5238,0x52F8, 0x5377,0x5708,0x62F3,0x6372,0x6B0A,0x6DC3,0x7737,0x53A5, 0x7357,0x8568,0x8E76,0x95D5,0x673A,0x6AC3,0x6F70,0x8A6D, 0x8ECC,0x994B,0xF906,0x6677,0x6B78,0x8CB4, /* Range 0x5021 - 0x507E, array index: 0x1059 */ 0x9B3C,0xF907,0x53EB,0x572D,0x594E,0x63C6,0x69FB,0x73EA, 0x7845,0x7ABA,0x7AC5,0x7CFE,0x8475,0x898F,0x8D73,0x9035, 0x95A8,0x52FB,0x5747,0x7547,0x7B60,0x83CC,0x921E,0xF908, 0x6A58,0x514B,0x524B,0x5287,0x621F,0x68D8,0x6975,0x9699, 0x50C5,0x52A4,0x52E4,0x61C3,0x65A4,0x6839,0x69FF,0x747E, 0x7B4B,0x82B9,0x83EB,0x89B2,0x8B39,0x8FD1,0x9949,0xF909, 0x4ECA,0x5997,0x64D2,0x6611,0x6A8E,0x7434,0x7981,0x79BD, 0x82A9,0x887E,0x887F,0x895F,0xF90A,0x9326,0x4F0B,0x53CA, 0x6025,0x6271,0x6C72,0x7D1A,0x7D66,0x4E98,0x5162,0x77DC, 0x80AF,0x4F01,0x4F0E,0x5176,0x5180,0x55DC,0x5668,0x573B, 0x57FA,0x57FC,0x5914,0x5947,0x5993,0x5BC4,0x5C90,0x5D0E, 0x5DF1,0x5E7E,0x5FCC,0x6280,0x65D7,0x65E3, /* Range 0x5121 - 0x517E, array index: 0x10B7 */ 0x671E,0x671F,0x675E,0x68CB,0x68C4,0x6A5F,0x6B3A,0x6C23, 0x6C7D,0x6C82,0x6DC7,0x7398,0x7426,0x742A,0x7482,0x74A3, 0x7578,0x757F,0x7881,0x78EF,0x7941,0x7947,0x7948,0x797A, 0x7B95,0x7D00,0x7DBA,0x7F88,0x8006,0x802D,0x808C,0x8A18, 0x8B4F,0x8C48,0x8D77,0x9321,0x9324,0x98E2,0x9951,0x9A0E, 0x9A0F,0x9A65,0x9E92,0x7DCA,0x4F76,0x5409,0x62EE,0x6854, 0x91D1,0x55AB,0x513A,0xF90B,0xF90C,0x5A1C,0x61E6,0xF90D, 0x62CF,0x62FF,0xF90E,0xF90F,0xF910,0xF911,0xF912,0xF913, 0x90A3,0xF914,0xF915,0xF916,0xF917,0xF918,0x8AFE,0xF919, 0xF91A,0xF91B,0xF91C,0x6696,0xF91D,0x7156,0xF91E,0xF91F, 0x96E3,0xF920,0x634F,0x637A,0x5357,0xF921,0x678F,0x6960, 0x6E73,0xF922,0x7537,0xF923,0xF924,0xF925, /* Range 0x5221 - 0x527E, array index: 0x1115 */ 0x7D0D,0xF926,0xF927,0x8872,0x56CA,0x5A18,0xF928,0xF929, 0xF92A,0xF92B,0xF92C,0x4E43,0xF92D,0x5167,0x5948,0x67F0, 0x8010,0xF92E,0x5973,0x5E74,0x649A,0x79CA,0x5FF5,0x606C, 0x62C8,0x637B,0x5BE7,0x5BD7,0x52AA,0xF92F,0x5974,0x5F29, 0x6012,0xF930,0xF931,0xF932,0x7459,0xF933,0xF934,0xF935, 0xF936,0xF937,0xF938,0x99D1,0xF939,0xF93A,0xF93B,0xF93C, 0xF93D,0xF93E,0xF93F,0xF940,0xF941,0xF942,0xF943,0x6FC3, 0xF944,0xF945,0x81BF,0x8FB2,0x60F1,0xF946,0xF947,0x8166, 0xF948,0xF949,0x5C3F,0xF94A,0xF94B,0xF94C,0xF94D,0xF94E, 0xF94F,0xF950,0xF951,0x5AE9,0x8A25,0x677B,0x7D10,0xF952, 0xF953,0xF954,0xF955,0xF956,0xF957,0x80FD,0xF958,0xF959, 0x5C3C,0x6CE5,0x533F,0x6EBA,0x591A,0x8336, /* Range 0x5321 - 0x537E, array index: 0x1173 */ 0x4E39,0x4EB6,0x4F46,0x55AE,0x5718,0x58C7,0x5F56,0x65B7, 0x65E6,0x6A80,0x6BB5,0x6E4D,0x77ED,0x7AEF,0x7C1E,0x7DDE, 0x86CB,0x8892,0x9132,0x935B,0x64BB,0x6FBE,0x737A,0x75B8, 0x9054,0x5556,0x574D,0x61BA,0x64D4,0x66C7,0x6DE1,0x6E5B, 0x6F6D,0x6FB9,0x75F0,0x8043,0x81BD,0x8541,0x8983,0x8AC7, 0x8B5A,0x931F,0x6C93,0x7553,0x7B54,0x8E0F,0x905D,0x5510, 0x5802,0x5858,0x5E62,0x6207,0x649E,0x68E0,0x7576,0x7CD6, 0x87B3,0x9EE8,0x4EE3,0x5788,0x576E,0x5927,0x5C0D,0x5CB1, 0x5E36,0x5F85,0x6234,0x64E1,0x73B3,0x81FA,0x888B,0x8CB8, 0x968A,0x9EDB,0x5B85,0x5FB7,0x60B3,0x5012,0x5200,0x5230, 0x5716,0x5835,0x5857,0x5C0E,0x5C60,0x5CF6,0x5D8B,0x5EA6, 0x5F92,0x60BC,0x6311,0x6389,0x6417,0x6843, /* Range 0x5421 - 0x547E, array index: 0x11D1 */ 0x68F9,0x6AC2,0x6DD8,0x6E21,0x6ED4,0x6FE4,0x71FE,0x76DC, 0x7779,0x79B1,0x7A3B,0x8404,0x89A9,0x8CED,0x8DF3,0x8E48, 0x9003,0x9014,0x9053,0x90FD,0x934D,0x9676,0x97DC,0x6BD2, 0x7006,0x7258,0x72A2,0x7368,0x7763,0x79BF,0x7BE4,0x7E9B, 0x8B80,0x58A9,0x60C7,0x6566,0x65FD,0x66BE,0x6C8C,0x711E, 0x71C9,0x8C5A,0x9813,0x4E6D,0x7A81,0x4EDD,0x51AC,0x51CD, 0x52D5,0x540C,0x61A7,0x6771,0x6850,0x68DF,0x6D1E,0x6F7C, 0x75BC,0x77B3,0x7AE5,0x80F4,0x8463,0x9285,0x515C,0x6597, 0x675C,0x6793,0x75D8,0x7AC7,0x8373,0xF95A,0x8C46,0x9017, 0x982D,0x5C6F,0x81C0,0x829A,0x9041,0x906F,0x920D,0x5F97, 0x5D9D,0x6A59,0x71C8,0x767B,0x7B49,0x85E4,0x8B04,0x9127, 0x9A30,0x5587,0x61F6,0xF95B,0x7669,0x7F85, /* Range 0x5521 - 0x557E, array index: 0x122F */ 0x863F,0x87BA,0x88F8,0x908F,0xF95C,0x6D1B,0x70D9,0x73DE, 0x7D61,0x843D,0xF95D,0x916A,0x99F1,0xF95E,0x4E82,0x5375, 0x6B04,0x6B12,0x703E,0x721B,0x862D,0x9E1E,0x524C,0x8FA3, 0x5D50,0x64E5,0x652C,0x6B16,0x6FEB,0x7C43,0x7E9C,0x85CD, 0x8964,0x89BD,0x62C9,0x81D8,0x881F,0x5ECA,0x6717,0x6D6A, 0x72FC,0x7405,0x746F,0x8782,0x90DE,0x4F86,0x5D0D,0x5FA0, 0x840A,0x51B7,0x63A0,0x7565,0x4EAE,0x5006,0x5169,0x51C9, 0x6881,0x6A11,0x7CAE,0x7CB1,0x7CE7,0x826F,0x8AD2,0x8F1B, 0x91CF,0x4FB6,0x5137,0x52F5,0x5442,0x5EEC,0x616E,0x623E, 0x65C5,0x6ADA,0x6FFE,0x792A,0x85DC,0x8823,0x95AD,0x9A62, 0x9A6A,0x9E97,0x9ECE,0x529B,0x66C6,0x6B77,0x701D,0x792B, 0x8F62,0x9742,0x6190,0x6200,0x6523,0x6F23, /* Range 0x5621 - 0x567E, array index: 0x128D */ 0x7149,0x7489,0x7DF4,0x806F,0x84EE,0x8F26,0x9023,0x934A, 0x51BD,0x5217,0x52A3,0x6D0C,0x70C8,0x88C2,0x5EC9,0x6582, 0x6BAE,0x6FC2,0x7C3E,0x7375,0x4EE4,0x4F36,0x56F9,0xF95F, 0x5CBA,0x5DBA,0x601C,0x73B2,0x7B2D,0x7F9A,0x7FCE,0x8046, 0x901E,0x9234,0x96F6,0x9748,0x9818,0x9F61,0x4F8B,0x6FA7, 0x79AE,0x91B4,0x96B7,0x52DE,0xF960,0x6488,0x64C4,0x6AD3, 0x6F5E,0x7018,0x7210,0x76E7,0x8001,0x8606,0x865C,0x8DEF, 0x8F05,0x9732,0x9B6F,0x9DFA,0x9E75,0x788C,0x797F,0x7DA0, 0x83C9,0x9304,0x9E7F,0x9E93,0x8AD6,0x58DF,0x5F04,0x6727, 0x7027,0x74CF,0x7C60,0x807E,0x5121,0x7028,0x7262,0x78CA, 0x8CC2,0x8CDA,0x8CF4,0x96F7,0x4E86,0x50DA,0x5BEE,0x5ED6, 0x6599,0x71CE,0x7642,0x77AD,0x804A,0x84FC, /* Range 0x5721 - 0x577E, array index: 0x12EB */ 0x907C,0x9B27,0x9F8D,0x58D8,0x5A41,0x5C62,0x6A13,0x6DDA, 0x6F0F,0x763B,0x7D2F,0x7E37,0x851E,0x8938,0x93E4,0x964B, 0x5289,0x65D2,0x67F3,0x69B4,0x6D41,0x6E9C,0x700F,0x7409, 0x7460,0x7559,0x7624,0x786B,0x8B2C,0x985E,0x516D,0x622E, 0x9678,0x4F96,0x502B,0x5D19,0x6DEA,0x7DB8,0x8F2A,0x5F8B, 0x6144,0x6817,0xF961,0x9686,0x52D2,0x808B,0x51DC,0x51CC, 0x695E,0x7A1C,0x7DBE,0x83F1,0x9675,0x4FDA,0x5229,0x5398, 0x540F,0x550E,0x5C65,0x60A7,0x674E,0x68A8,0x6D6C,0x7281, 0x72F8,0x7406,0x7483,0xF962,0x75E2,0x7C6C,0x7F79,0x7FB8, 0x8389,0x88CF,0x88E1,0x91CC,0x91D0,0x96E2,0x9BC9,0x541D, 0x6F7E,0x71D0,0x7498,0x85FA,0x8EAA,0x96A3,0x9C57,0x9E9F, 0x6797,0x6DCB,0x7433,0x81E8,0x9716,0x782C, /* Range 0x5821 - 0x587E, array index: 0x1349 */ 0x7ACB,0x7B20,0x7C92,0x6469,0x746A,0x75F2,0x78BC,0x78E8, 0x99AC,0x9B54,0x9EBB,0x5BDE,0x5E55,0x6F20,0x819C,0x83AB, 0x9088,0x4E07,0x534D,0x5A29,0x5DD2,0x5F4E,0x6162,0x633D, 0x6669,0x66FC,0x6EFF,0x6F2B,0x7063,0x779E,0x842C,0x8513, 0x883B,0x8F13,0x9945,0x9C3B,0x551C,0x62B9,0x672B,0x6CAB, 0x8309,0x896A,0x977A,0x4EA1,0x5984,0x5FD8,0x5FD9,0x671B, 0x7DB2,0x7F54,0x8292,0x832B,0x83BD,0x8F1E,0x9099,0x57CB, 0x59B9,0x5A92,0x5BD0,0x6627,0x679A,0x6885,0x6BCF,0x7164, 0x7F75,0x8CB7,0x8CE3,0x9081,0x9B45,0x8108,0x8C8A,0x964C, 0x9A40,0x9EA5,0x5B5F,0x6C13,0x731B,0x76F2,0x76DF,0x840C, 0x51AA,0x8993,0x514D,0x5195,0x52C9,0x68C9,0x6C94,0x7704, 0x7720,0x7DBF,0x7DEC,0x9762,0x9EB5,0x6EC5, /* Range 0x5921 - 0x597E, array index: 0x13A7 */ 0x8511,0x51A5,0x540D,0x547D,0x660E,0x669D,0x6927,0x6E9F, 0x76BF,0x7791,0x8317,0x84C2,0x879F,0x9169,0x9298,0x9CF4, 0x8882,0x4FAE,0x5192,0x52DF,0x59C6,0x5E3D,0x6155,0x6478, 0x6479,0x66AE,0x67D0,0x6A21,0x6BCD,0x6BDB,0x725F,0x7261, 0x7441,0x7738,0x77DB,0x8017,0x82BC,0x8305,0x8B00,0x8B28, 0x8C8C,0x6728,0x6C90,0x7267,0x76EE,0x7766,0x7A46,0x9DA9, 0x6B7F,0x6C92,0x5922,0x6726,0x8499,0x536F,0x5893,0x5999, 0x5EDF,0x63CF,0x6634,0x6773,0x6E3A,0x732B,0x7AD7,0x82D7, 0x9328,0x52D9,0x5DEB,0x61AE,0x61CB,0x620A,0x62C7,0x64AB, 0x65E0,0x6959,0x6B66,0x6BCB,0x7121,0x73F7,0x755D,0x7E46, 0x821E,0x8302,0x856A,0x8AA3,0x8CBF,0x9727,0x9D61,0x58A8, 0x9ED8,0x5011,0x520E,0x543B,0x554F,0x6587, /* Range 0x5A21 - 0x5A7E, array index: 0x1405 */ 0x6C76,0x7D0A,0x7D0B,0x805E,0x868A,0x9580,0x96EF,0x52FF, 0x6C95,0x7269,0x5473,0x5A9A,0x5C3E,0x5D4B,0x5F4C,0x5FAE, 0x672A,0x68B6,0x6963,0x6E3C,0x6E44,0x7709,0x7C73,0x7F8E, 0x8587,0x8B0E,0x8FF7,0x9761,0x9EF4,0x5CB7,0x60B6,0x610D, 0x61AB,0x654F,0x65FB,0x65FC,0x6C11,0x6CEF,0x739F,0x73C9, 0x7DE1,0x9594,0x5BC6,0x871C,0x8B10,0x525D,0x535A,0x62CD, 0x640F,0x64B2,0x6734,0x6A38,0x6CCA,0x73C0,0x749E,0x7B94, 0x7C95,0x7E1B,0x818A,0x8236,0x8584,0x8FEB,0x96F9,0x99C1, 0x4F34,0x534A,0x53CD,0x53DB,0x62CC,0x642C,0x6500,0x6591, 0x69C3,0x6CEE,0x6F58,0x73ED,0x7554,0x7622,0x76E4,0x76FC, 0x78D0,0x78FB,0x792C,0x7D46,0x822C,0x87E0,0x8FD4,0x9812, 0x98EF,0x52C3,0x62D4,0x64A5,0x6E24,0x6F51, /* Range 0x5B21 - 0x5B7E, array index: 0x1463 */ 0x767C,0x8DCB,0x91B1,0x9262,0x9AEE,0x9B43,0x5023,0x508D, 0x574A,0x59A8,0x5C28,0x5E47,0x5F77,0x623F,0x653E,0x65B9, 0x65C1,0x6609,0x678B,0x699C,0x6EC2,0x78C5,0x7D21,0x80AA, 0x8180,0x822B,0x82B3,0x84A1,0x868C,0x8A2A,0x8B17,0x90A6, 0x9632,0x9F90,0x500D,0x4FF3,0xF963,0x57F9,0x5F98,0x62DC, 0x6392,0x676F,0x6E43,0x7119,0x76C3,0x80CC,0x80DA,0x88F4, 0x88F5,0x8919,0x8CE0,0x8F29,0x914D,0x966A,0x4F2F,0x4F70, 0x5E1B,0x67CF,0x6822,0x767D,0x767E,0x9B44,0x5E61,0x6A0A, 0x7169,0x71D4,0x756A,0xF964,0x7E41,0x8543,0x85E9,0x98DC, 0x4F10,0x7B4F,0x7F70,0x95A5,0x51E1,0x5E06,0x68B5,0x6C3E, 0x6C4E,0x6CDB,0x72AF,0x7BC4,0x8303,0x6CD5,0x743A,0x50FB, 0x5288,0x58C1,0x64D8,0x6A97,0x74A7,0x7656, /* Range 0x5C21 - 0x5C7E, array index: 0x14C1 */ 0x78A7,0x8617,0x95E2,0x9739,0xF965,0x535E,0x5F01,0x8B8A, 0x8FA8,0x8FAF,0x908A,0x5225,0x77A5,0x9C49,0x9F08,0x4E19, 0x5002,0x5175,0x5C5B,0x5E77,0x661E,0x663A,0x67C4,0x68C5, 0x70B3,0x7501,0x75C5,0x79C9,0x7ADD,0x8F27,0x9920,0x9A08, 0x4FDD,0x5821,0x5831,0x5BF6,0x666E,0x6B65,0x6D11,0x6E7A, 0x6F7D,0x73E4,0x752B,0x83E9,0x88DC,0x8913,0x8B5C,0x8F14, 0x4F0F,0x50D5,0x5310,0x535C,0x5B93,0x5FA9,0x670D,0x798F, 0x8179,0x832F,0x8514,0x8907,0x8986,0x8F39,0x8F3B,0x99A5, 0x9C12,0x672C,0x4E76,0x4FF8,0x5949,0x5C01,0x5CEF,0x5CF0, 0x6367,0x68D2,0x70FD,0x71A2,0x742B,0x7E2B,0x84EC,0x8702, 0x9022,0x92D2,0x9CF3,0x4E0D,0x4ED8,0x4FEF,0x5085,0x5256, 0x526F,0x5426,0x5490,0x57E0,0x592B,0x5A66, /* Range 0x5D21 - 0x5D7E, array index: 0x151F */ 0x5B5A,0x5B75,0x5BCC,0x5E9C,0xF966,0x6276,0x6577,0x65A7, 0x6D6E,0x6EA5,0x7236,0x7B26,0x7C3F,0x7F36,0x8150,0x8151, 0x819A,0x8240,0x8299,0x83A9,0x8A03,0x8CA0,0x8CE6,0x8CFB, 0x8D74,0x8DBA,0x90E8,0x91DC,0x961C,0x9644,0x99D9,0x9CE7, 0x5317,0x5206,0x5429,0x5674,0x58B3,0x5954,0x596E,0x5FFF, 0x61A4,0x626E,0x6610,0x6C7E,0x711A,0x76C6,0x7C89,0x7CDE, 0x7D1B,0x82AC,0x8CC1,0x96F0,0xF967,0x4F5B,0x5F17,0x5F7F, 0x62C2,0x5D29,0x670B,0x68DA,0x787C,0x7E43,0x9D6C,0x4E15, 0x5099,0x5315,0x532A,0x5351,0x5983,0x5A62,0x5E87,0x60B2, 0x618A,0x6249,0x6279,0x6590,0x6787,0x69A7,0x6BD4,0x6BD6, 0x6BD7,0x6BD8,0x6CB8,0xF968,0x7435,0x75FA,0x7812,0x7891, 0x79D5,0x79D8,0x7C83,0x7DCB,0x7FE1,0x80A5, /* Range 0x5E21 - 0x5E7E, array index: 0x157D */ 0x813E,0x81C2,0x83F2,0x871A,0x88E8,0x8AB9,0x8B6C,0x8CBB, 0x9119,0x975E,0x98DB,0x9F3B,0x56AC,0x5B2A,0x5F6C,0x658C, 0x6AB3,0x6BAF,0x6D5C,0x6FF1,0x7015,0x725D,0x73AD,0x8CA7, 0x8CD3,0x983B,0x6191,0x6C37,0x8058,0x9A01,0x4E4D,0x4E8B, 0x4E9B,0x4ED5,0x4F3A,0x4F3C,0x4F7F,0x4FDF,0x50FF,0x53F2, 0x53F8,0x5506,0x55E3,0x56DB,0x58EB,0x5962,0x5A11,0x5BEB, 0x5BFA,0x5C04,0x5DF3,0x5E2B,0x5F99,0x601D,0x6368,0x659C, 0x65AF,0x67F6,0x67FB,0x68AD,0x6B7B,0x6C99,0x6CD7,0x6E23, 0x7009,0x7345,0x7802,0x793E,0x7940,0x7960,0x79C1,0x7BE9, 0x7D17,0x7D72,0x8086,0x820D,0x838E,0x84D1,0x86C7,0x88DF, 0x8A50,0x8A5E,0x8B1D,0x8CDC,0x8D66,0x8FAD,0x90AA,0x98FC, 0x99DF,0x9E9D,0x524A,0xF969,0x6714,0xF96A, /* Range 0x5F21 - 0x5F7E, array index: 0x15DB */ 0x5098,0x522A,0x5C71,0x6563,0x6C55,0x73CA,0x7523,0x759D, 0x7B97,0x849C,0x9178,0x9730,0x4E77,0x6492,0x6BBA,0x715E, 0x85A9,0x4E09,0xF96B,0x6749,0x68EE,0x6E17,0x829F,0x8518, 0x886B,0x63F7,0x6F81,0x9212,0x98AF,0x4E0A,0x50B7,0x50CF, 0x511F,0x5546,0x55AA,0x5617,0x5B40,0x5C19,0x5CE0,0x5E38, 0x5E8A,0x5EA0,0x5EC2,0x60F3,0x6851,0x6A61,0x6E58,0x723D, 0x7240,0x72C0,0x76F8,0x7965,0x7BB1,0x7FD4,0x88F3,0x89F4, 0x8A73,0x8C61,0x8CDE,0x971C,0x585E,0x74BD,0x8CFD,0x55C7, 0xF96C,0x7A61,0x7D22,0x8272,0x7272,0x751F,0x7525,0xF96D, 0x7B19,0x5885,0x58FB,0x5DBC,0x5E8F,0x5EB6,0x5F90,0x6055, 0x6292,0x637F,0x654D,0x6691,0x66D9,0x66F8,0x6816,0x68F2, 0x7280,0x745E,0x7B6E,0x7D6E,0x7DD6,0x7F72, /* Range 0x6021 - 0x607E, array index: 0x1639 */ 0x80E5,0x8212,0x85AF,0x897F,0x8A93,0x901D,0x92E4,0x9ECD, 0x9F20,0x5915,0x596D,0x5E2D,0x60DC,0x6614,0x6673,0x6790, 0x6C50,0x6DC5,0x6F5F,0x77F3,0x78A9,0x84C6,0x91CB,0x932B, 0x4ED9,0x50CA,0x5148,0x5584,0x5B0B,0x5BA3,0x6247,0x657E, 0x65CB,0x6E32,0x717D,0x7401,0x7444,0x7487,0x74BF,0x766C, 0x79AA,0x7DDA,0x7E55,0x7FA8,0x817A,0x81B3,0x8239,0x861A, 0x87EC,0x8A75,0x8DE3,0x9078,0x9291,0x9425,0x994D,0x9BAE, 0x5368,0x5C51,0x6954,0x6CC4,0x6D29,0x6E2B,0x820C,0x859B, 0x893B,0x8A2D,0x8AAA,0x96EA,0x9F67,0x5261,0x66B9,0x6BB2, 0x7E96,0x87FE,0x8D0D,0x9583,0x965D,0x651D,0x6D89,0x71EE, 0xF96E,0x57CE,0x59D3,0x5BAC,0x6027,0x60FA,0x6210,0x661F, 0x665F,0x7329,0x73F9,0x76DB,0x7701,0x7B6C, /* Range 0x6121 - 0x617E, array index: 0x1697 */ 0x8056,0x8072,0x8165,0x8AA0,0x9192,0x4E16,0x52E2,0x6B72, 0x6D17,0x7A05,0x7B39,0x7D30,0xF96F,0x8CB0,0x53EC,0x562F, 0x5851,0x5BB5,0x5C0F,0x5C11,0x5DE2,0x6240,0x6383,0x6414, 0x662D,0x68B3,0x6CBC,0x6D88,0x6EAF,0x701F,0x70A4,0x71D2, 0x7526,0x758F,0x758E,0x7619,0x7B11,0x7BE0,0x7C2B,0x7D20, 0x7D39,0x852C,0x856D,0x8607,0x8A34,0x900D,0x9061,0x90B5, 0x92B7,0x97F6,0x9A37,0x4FD7,0x5C6C,0x675F,0x6D91,0x7C9F, 0x7E8C,0x8B16,0x8D16,0x901F,0x5B6B,0x5DFD,0x640D,0x84C0, 0x905C,0x98E1,0x7387,0x5B8B,0x609A,0x677E,0x6DDE,0x8A1F, 0x8AA6,0x9001,0x980C,0x5237,0xF970,0x7051,0x788E,0x9396, 0x8870,0x91D7,0x4FEE,0x53D7,0x55FD,0x56DA,0x5782,0x58FD, 0x5AC2,0x5B88,0x5CAB,0x5CC0,0x5E25,0x6101, /* Range 0x6221 - 0x627E, array index: 0x16F5 */ 0x620D,0x624B,0x6388,0x641C,0x6536,0x6578,0x6A39,0x6B8A, 0x6C34,0x6D19,0x6F31,0x71E7,0x72E9,0x7378,0x7407,0x74B2, 0x7626,0x7761,0x79C0,0x7A57,0x7AEA,0x7CB9,0x7D8F,0x7DAC, 0x7E61,0x7F9E,0x8129,0x8331,0x8490,0x84DA,0x85EA,0x8896, 0x8AB0,0x8B90,0x8F38,0x9042,0x9083,0x916C,0x9296,0x92B9, 0x968B,0x96A7,0x96A8,0x96D6,0x9700,0x9808,0x9996,0x9AD3, 0x9B1A,0x53D4,0x587E,0x5919,0x5B70,0x5BBF,0x6DD1,0x6F5A, 0x719F,0x7421,0x74B9,0x8085,0x83FD,0x5DE1,0x5F87,0x5FAA, 0x6042,0x65EC,0x6812,0x696F,0x6A53,0x6B89,0x6D35,0x6DF3, 0x73E3,0x76FE,0x77AC,0x7B4D,0x7D14,0x8123,0x821C,0x8340, 0x84F4,0x8563,0x8A62,0x8AC4,0x9187,0x931E,0x9806,0x99B4, 0x620C,0x8853,0x8FF0,0x9265,0x5D07,0x5D27, /* Range 0x6321 - 0x637E, array index: 0x1753 */ 0x5D69,0x745F,0x819D,0x8768,0x6FD5,0x62FE,0x7FD2,0x8936, 0x8972,0x4E1E,0x4E58,0x50E7,0x52DD,0x5347,0x627F,0x6607, 0x7E69,0x8805,0x965E,0x4F8D,0x5319,0x5636,0x59CB,0x5AA4, 0x5C38,0x5C4E,0x5C4D,0x5E02,0x5F11,0x6043,0x65BD,0x662F, 0x6642,0x67BE,0x67F4,0x731C,0x77E2,0x793A,0x7FC5,0x8494, 0x84CD,0x8996,0x8A66,0x8A69,0x8AE1,0x8C55,0x8C7A,0x57F4, 0x5BD4,0x5F0F,0x606F,0x62ED,0x690D,0x6B96,0x6E5C,0x7184, 0x7BD2,0x8755,0x8B58,0x8EFE,0x98DF,0x98FE,0x4F38,0x4F81, 0x4FE1,0x547B,0x5A20,0x5BB8,0x613C,0x65B0,0x6668,0x71FC, 0x7533,0x795E,0x7D33,0x814E,0x81E3,0x8398,0x85AA,0x85CE, 0x8703,0x8A0A,0x8EAB,0x8F9B,0xF971,0x8FC5,0x5931,0x5BA4, 0x5BE6,0x6089,0x5BE9,0x5C0B,0x5FC3,0x6C81, /* Range 0x6421 - 0x647E, array index: 0x17B1 */ 0xF972,0x6DF1,0x700B,0x751A,0x82AF,0x8AF6,0x4EC0,0x5341, 0xF973,0x96D9,0x6C0F,0x4E9E,0x4FC4,0x5152,0x555E,0x5A25, 0x5CE8,0x6211,0x7259,0x82BD,0x83AA,0x86FE,0x8859,0x8A1D, 0x963F,0x96C5,0x9913,0x9D09,0x9D5D,0x580A,0x5CB3,0x5DBD, 0x5E44,0x60E1,0x6115,0x63E1,0x6A02,0x6E25,0x9102,0x9354, 0x984E,0x9C10,0x9F77,0x5B89,0x5CB8,0x6309,0x664F,0x6848, 0x773C,0x96C1,0x978D,0x9854,0x9B9F,0x65A1,0x8B01,0x8ECB, 0x95BC,0x5535,0x5CA9,0x5DD6,0x5EB5,0x6697,0x764C,0x83F4, 0x95C7,0x58D3,0x62BC,0x72CE,0x9D28,0x4EF0,0x592E,0x600F, 0x663B,0x6B83,0x79E7,0x9D26,0x5393,0x54C0,0x57C3,0x5D16, 0x611B,0x66D6,0x6DAF,0x788D,0x827E,0x9698,0x9744,0x5384, 0x627C,0x6396,0x6DB2,0x7E0A,0x814B,0x984D, /* Range 0x6521 - 0x657E, array index: 0x180F */ 0x6AFB,0x7F4C,0x9DAF,0x9E1A,0x4E5F,0x503B,0x51B6,0x591C, 0x60F9,0x63F6,0x6930,0x723A,0x8036,0xF974,0x91CE,0x5F31, 0xF975,0xF976,0x7D04,0x82E5,0x846F,0x84BB,0x85E5,0x8E8D, 0xF977,0x4F6F,0xF978,0xF979,0x58E4,0x5B43,0x6059,0x63DA, 0x6518,0x656D,0x6698,0xF97A,0x694A,0x6A23,0x6D0B,0x7001, 0x716C,0x75D2,0x760D,0x79B3,0x7A70,0xF97B,0x7F8A,0xF97C, 0x8944,0xF97D,0x8B93,0x91C0,0x967D,0xF97E,0x990A,0x5704, 0x5FA1,0x65BC,0x6F01,0x7600,0x79A6,0x8A9E,0x99AD,0x9B5A, 0x9F6C,0x5104,0x61B6,0x6291,0x6A8D,0x81C6,0x5043,0x5830, 0x5F66,0x7109,0x8A00,0x8AFA,0x5B7C,0x8616,0x4FFA,0x513C, 0x56B4,0x5944,0x63A9,0x6DF9,0x5DAA,0x696D,0x5186,0x4E88, 0x4F59,0xF97F,0xF980,0xF981,0x5982,0xF982, /* Range 0x6621 - 0x667E, array index: 0x186D */ 0xF983,0x6B5F,0x6C5D,0xF984,0x74B5,0x7916,0xF985,0x8207, 0x8245,0x8339,0x8F3F,0x8F5D,0xF986,0x9918,0xF987,0xF988, 0xF989,0x4EA6,0xF98A,0x57DF,0x5F79,0x6613,0xF98B,0xF98C, 0x75AB,0x7E79,0x8B6F,0xF98D,0x9006,0x9A5B,0x56A5,0x5827, 0x59F8,0x5A1F,0x5BB4,0xF98E,0x5EF6,0xF98F,0xF990,0x6350, 0x633B,0xF991,0x693D,0x6C87,0x6CBF,0x6D8E,0x6D93,0x6DF5, 0x6F14,0xF992,0x70DF,0x7136,0x7159,0xF993,0x71C3,0x71D5, 0xF994,0x784F,0x786F,0xF995,0x7B75,0x7DE3,0xF996,0x7E2F, 0xF997,0x884D,0x8EDF,0xF998,0xF999,0xF99A,0x925B,0xF99B, 0x9CF6,0xF99C,0xF99D,0xF99E,0x6085,0x6D85,0xF99F,0x71B1, 0xF9A0,0xF9A1,0x95B1,0x53AD,0xF9A2,0xF9A3,0xF9A4,0x67D3, 0xF9A5,0x708E,0x7130,0x7430,0x8276,0x82D2, /* Range 0x6721 - 0x677E, array index: 0x18CB */ 0xF9A6,0x95BB,0x9AE5,0x9E7D,0x66C4,0xF9A7,0x71C1,0x8449, 0xF9A8,0xF9A9,0x584B,0xF9AA,0xF9AB,0x5DB8,0x5F71,0xF9AC, 0x6620,0x668E,0x6979,0x69AE,0x6C38,0x6CF3,0x6E36,0x6F41, 0x6FDA,0x701B,0x702F,0x7150,0x71DF,0x7370,0xF9AD,0x745B, 0xF9AE,0x74D4,0x76C8,0x7A4E,0x7E93,0xF9AF,0xF9B0,0x82F1, 0x8A60,0x8FCE,0xF9B1,0x9348,0xF9B2,0x9719,0xF9B3,0xF9B4, 0x4E42,0x502A,0xF9B5,0x5208,0x53E1,0x66F3,0x6C6D,0x6FCA, 0x730A,0x777F,0x7A62,0x82AE,0x85DD,0x8602,0xF9B6,0x88D4, 0x8A63,0x8B7D,0x8C6B,0xF9B7,0x92B3,0xF9B8,0x9713,0x9810, 0x4E94,0x4F0D,0x4FC9,0x50B2,0x5348,0x543E,0x5433,0x55DA, 0x5862,0x58BA,0x5967,0x5A1B,0x5BE4,0x609F,0xF9B9,0x61CA, 0x6556,0x65FF,0x6664,0x68A7,0x6C5A,0x6FB3, /* Range 0x6821 - 0x687E, array index: 0x1929 */ 0x70CF,0x71AC,0x7352,0x7B7D,0x8708,0x8AA4,0x9C32,0x9F07, 0x5C4B,0x6C83,0x7344,0x7389,0x923A,0x6EAB,0x7465,0x761F, 0x7A69,0x7E15,0x860A,0x5140,0x58C5,0x64C1,0x74EE,0x7515, 0x7670,0x7FC1,0x9095,0x96CD,0x9954,0x6E26,0x74E6,0x7AA9, 0x7AAA,0x81E5,0x86D9,0x8778,0x8A1B,0x5A49,0x5B8C,0x5B9B, 0x68A1,0x6900,0x6D63,0x73A9,0x7413,0x742C,0x7897,0x7DE9, 0x7FEB,0x8118,0x8155,0x839E,0x8C4C,0x962E,0x9811,0x66F0, 0x5F80,0x65FA,0x6789,0x6C6A,0x738B,0x502D,0x5A03,0x6B6A, 0x77EE,0x5916,0x5D6C,0x5DCD,0x7325,0x754F,0xF9BA,0xF9BB, 0x50E5,0x51F9,0x582F,0x592D,0x5996,0x59DA,0x5BE5,0xF9BC, 0xF9BD,0x5DA2,0x62D7,0x6416,0x6493,0x64FE,0xF9BE,0x66DC, 0xF9BF,0x6A48,0xF9C0,0x71FF,0x7464,0xF9C1, /* Range 0x6921 - 0x697E, array index: 0x1987 */ 0x7A88,0x7AAF,0x7E47,0x7E5E,0x8000,0x8170,0xF9C2,0x87EF, 0x8981,0x8B20,0x9059,0xF9C3,0x9080,0x9952,0x617E,0x6B32, 0x6D74,0x7E1F,0x8925,0x8FB1,0x4FD1,0x50AD,0x5197,0x52C7, 0x57C7,0x5889,0x5BB9,0x5EB8,0x6142,0x6995,0x6D8C,0x6E67, 0x6EB6,0x7194,0x7462,0x7528,0x752C,0x8073,0x8338,0x84C9, 0x8E0A,0x9394,0x93DE,0xF9C4,0x4E8E,0x4F51,0x5076,0x512A, 0x53C8,0x53CB,0x53F3,0x5B87,0x5BD3,0x5C24,0x611A,0x6182, 0x65F4,0x725B,0x7397,0x7440,0x76C2,0x7950,0x7991,0x79B9, 0x7D06,0x7FBD,0x828B,0x85D5,0x865E,0x8FC2,0x9047,0x90F5, 0x91EA,0x9685,0x96E8,0x96E9,0x52D6,0x5F67,0x65ED,0x6631, 0x682F,0x715C,0x7A36,0x90C1,0x980A,0x4E91,0xF9C5,0x6A52, 0x6B9E,0x6F90,0x7189,0x8018,0x82B8,0x8553, /* Range 0x6A21 - 0x6A7E, array index: 0x19E5 */ 0x904B,0x9695,0x96F2,0x97FB,0x851A,0x9B31,0x4E90,0x718A, 0x96C4,0x5143,0x539F,0x54E1,0x5713,0x5712,0x57A3,0x5A9B, 0x5AC4,0x5BC3,0x6028,0x613F,0x63F4,0x6C85,0x6D39,0x6E72, 0x6E90,0x7230,0x733F,0x7457,0x82D1,0x8881,0x8F45,0x9060, 0xF9C6,0x9662,0x9858,0x9D1B,0x6708,0x8D8A,0x925E,0x4F4D, 0x5049,0x50DE,0x5371,0x570D,0x59D4,0x5A01,0x5C09,0x6170, 0x6690,0x6E2D,0x7232,0x744B,0x7DEF,0x80C3,0x840E,0x8466, 0x853F,0x875F,0x885B,0x8918,0x8B02,0x9055,0x97CB,0x9B4F, 0x4E73,0x4F91,0x5112,0x516A,0xF9C7,0x552F,0x55A9,0x5B7A, 0x5BA5,0x5E7C,0x5E7D,0x5EBE,0x60A0,0x60DF,0x6108,0x6109, 0x63C4,0x6538,0x6709,0xF9C8,0x67D4,0x67DA,0xF9C9,0x6961, 0x6962,0x6CB9,0x6D27,0xF9CA,0x6E38,0xF9CB, /* Range 0x6B21 - 0x6B7E, array index: 0x1A43 */ 0x6FE1,0x7336,0x7337,0xF9CC,0x745C,0x7531,0xF9CD,0x7652, 0xF9CE,0xF9CF,0x7DAD,0x81FE,0x8438,0x88D5,0x8A98,0x8ADB, 0x8AED,0x8E30,0x8E42,0x904A,0x903E,0x907A,0x9149,0x91C9, 0x936E,0xF9D0,0xF9D1,0x5809,0xF9D2,0x6BD3,0x8089,0x80B2, 0xF9D3,0xF9D4,0x5141,0x596B,0x5C39,0xF9D5,0xF9D6,0x6F64, 0x73A7,0x80E4,0x8D07,0xF9D7,0x9217,0x958F,0xF9D8,0xF9D9, 0xF9DA,0xF9DB,0x807F,0x620E,0x701C,0x7D68,0x878D,0xF9DC, 0x57A0,0x6069,0x6147,0x6BB7,0x8ABE,0x9280,0x96B1,0x4E59, 0x541F,0x6DEB,0x852D,0x9670,0x97F3,0x98EE,0x63D6,0x6CE3, 0x9091,0x51DD,0x61C9,0x81BA,0x9DF9,0x4F9D,0x501A,0x5100, 0x5B9C,0x610F,0x61FF,0x64EC,0x6905,0x6BC5,0x7591,0x77E3, 0x7FA9,0x8264,0x858F,0x87FB,0x8863,0x8ABC, /* Range 0x6C21 - 0x6C7E, array index: 0x1AA1 */ 0x8B70,0x91AB,0x4E8C,0x4EE5,0x4F0A,0xF9DD,0xF9DE,0x5937, 0x59E8,0xF9DF,0x5DF2,0x5F1B,0x5F5B,0x6021,0xF9E0,0xF9E1, 0xF9E2,0xF9E3,0x723E,0x73E5,0xF9E4,0x7570,0x75CD,0xF9E5, 0x79FB,0xF9E6,0x800C,0x8033,0x8084,0x82E1,0x8351,0xF9E7, 0xF9E8,0x8CBD,0x8CB3,0x9087,0xF9E9,0xF9EA,0x98F4,0x990C, 0xF9EB,0xF9EC,0x7037,0x76CA,0x7FCA,0x7FCC,0x7FFC,0x8B1A, 0x4EBA,0x4EC1,0x5203,0x5370,0xF9ED,0x54BD,0x56E0,0x59FB, 0x5BC5,0x5F15,0x5FCD,0x6E6E,0xF9EE,0xF9EF,0x7D6A,0x8335, 0xF9F0,0x8693,0x8A8D,0xF9F1,0x976D,0x9777,0xF9F2,0xF9F3, 0x4E00,0x4F5A,0x4F7E,0x58F9,0x65E5,0x6EA2,0x9038,0x93B0, 0x99B9,0x4EFB,0x58EC,0x598A,0x59D9,0x6041,0xF9F4,0xF9F5, 0x7A14,0xF9F6,0x834F,0x8CC3,0x5165,0x5344, /* Range 0x6D21 - 0x6D7E, array index: 0x1AFF */ 0xF9F7,0xF9F8,0xF9F9,0x4ECD,0x5269,0x5B55,0x82BF,0x4ED4, 0x523A,0x54A8,0x59C9,0x59FF,0x5B50,0x5B57,0x5B5C,0x6063, 0x6148,0x6ECB,0x7099,0x716E,0x7386,0x74F7,0x75B5,0x78C1, 0x7D2B,0x8005,0x81EA,0x8328,0x8517,0x85C9,0x8AEE,0x8CC7, 0x96CC,0x4F5C,0x52FA,0x56BC,0x65AB,0x6628,0x707C,0x70B8, 0x7235,0x7DBD,0x828D,0x914C,0x96C0,0x9D72,0x5B71,0x68E7, 0x6B98,0x6F7A,0x76DE,0x5C91,0x66AB,0x6F5B,0x7BB4,0x7C2A, 0x8836,0x96DC,0x4E08,0x4ED7,0x5320,0x5834,0x58BB,0x58EF, 0x596C,0x5C07,0x5E33,0x5E84,0x5F35,0x638C,0x66B2,0x6756, 0x6A1F,0x6AA3,0x6B0C,0x6F3F,0x7246,0xF9FA,0x7350,0x748B, 0x7AE0,0x7CA7,0x8178,0x81DF,0x81E7,0x838A,0x846C,0x8523, 0x8594,0x85CF,0x88DD,0x8D13,0x91AC,0x9577, /* Range 0x6E21 - 0x6E7E, array index: 0x1B5D */ 0x969C,0x518D,0x54C9,0x5728,0x5BB0,0x624D,0x6750,0x683D, 0x6893,0x6E3D,0x6ED3,0x707D,0x7E21,0x88C1,0x8CA1,0x8F09, 0x9F4B,0x9F4E,0x722D,0x7B8F,0x8ACD,0x931A,0x4F47,0x4F4E, 0x5132,0x5480,0x59D0,0x5E95,0x62B5,0x6775,0x696E,0x6A17, 0x6CAE,0x6E1A,0x72D9,0x732A,0x75BD,0x7BB8,0x7D35,0x82E7, 0x83F9,0x8457,0x85F7,0x8A5B,0x8CAF,0x8E87,0x9019,0x90B8, 0x96CE,0x9F5F,0x52E3,0x540A,0x5AE1,0x5BC2,0x6458,0x6575, 0x6EF4,0x72C4,0xF9FB,0x7684,0x7A4D,0x7B1B,0x7C4D,0x7E3E, 0x7FDF,0x837B,0x8B2B,0x8CCA,0x8D64,0x8DE1,0x8E5F,0x8FEA, 0x8FF9,0x9069,0x93D1,0x4F43,0x4F7A,0x50B3,0x5168,0x5178, 0x524D,0x526A,0x5861,0x587C,0x5960,0x5C08,0x5C55,0x5EDB, 0x609B,0x6230,0x6813,0x6BBF,0x6C08,0x6FB1, /* Range 0x6F21 - 0x6F7E, array index: 0x1BBB */ 0x714E,0x7420,0x7530,0x7538,0x7551,0x7672,0x7B4C,0x7B8B, 0x7BAD,0x7BC6,0x7E8F,0x8A6E,0x8F3E,0x8F49,0x923F,0x9293, 0x9322,0x942B,0x96FB,0x985A,0x986B,0x991E,0x5207,0x622A, 0x6298,0x6D59,0x7664,0x7ACA,0x7BC0,0x7D76,0x5360,0x5CBE, 0x5E97,0x6F38,0x70B9,0x7C98,0x9711,0x9B8E,0x9EDE,0x63A5, 0x647A,0x8776,0x4E01,0x4E95,0x4EAD,0x505C,0x5075,0x5448, 0x59C3,0x5B9A,0x5E40,0x5EAD,0x5EF7,0x5F81,0x60C5,0x633A, 0x653F,0x6574,0x65CC,0x6676,0x6678,0x67FE,0x6968,0x6A89, 0x6B63,0x6C40,0x6DC0,0x6DE8,0x6E1F,0x6E5E,0x701E,0x70A1, 0x738E,0x73FD,0x753A,0x775B,0x7887,0x798E,0x7A0B,0x7A7D, 0x7CBE,0x7D8E,0x8247,0x8A02,0x8AEA,0x8C9E,0x912D,0x914A, 0x91D8,0x9266,0x92CC,0x9320,0x9706,0x9756, /* Range 0x7021 - 0x707E, array index: 0x1C19 */ 0x975C,0x9802,0x9F0E,0x5236,0x5291,0x557C,0x5824,0x5E1D, 0x5F1F,0x608C,0x63D0,0x68AF,0x6FDF,0x796D,0x7B2C,0x81CD, 0x85BA,0x88FD,0x8AF8,0x8E44,0x918D,0x9664,0x969B,0x973D, 0x984C,0x9F4A,0x4FCE,0x5146,0x51CB,0x52A9,0x5632,0x5F14, 0x5F6B,0x63AA,0x64CD,0x65E9,0x6641,0x66FA,0x66F9,0x671D, 0x689D,0x68D7,0x69FD,0x6F15,0x6F6E,0x7167,0x71E5,0x722A, 0x74AA,0x773A,0x7956,0x795A,0x79DF,0x7A20,0x7A95,0x7C97, 0x7CDF,0x7D44,0x7E70,0x8087,0x85FB,0x86A4,0x8A54,0x8ABF, 0x8D99,0x8E81,0x9020,0x906D,0x91E3,0x963B,0x96D5,0x9CE5, 0x65CF,0x7C07,0x8DB3,0x93C3,0x5B58,0x5C0A,0x5352,0x62D9, 0x731D,0x5027,0x5B97,0x5F9E,0x60B0,0x616B,0x68D5,0x6DD9, 0x742E,0x7A2E,0x7D42,0x7D9C,0x7E31,0x816B, /* Range 0x7121 - 0x717E, array index: 0x1C77 */ 0x8E2A,0x8E35,0x937E,0x9418,0x4F50,0x5750,0x5DE6,0x5EA7, 0x632B,0x7F6A,0x4E3B,0x4F4F,0x4F8F,0x505A,0x59DD,0x80C4, 0x546A,0x5468,0x55FE,0x594F,0x5B99,0x5DDE,0x5EDA,0x665D, 0x6731,0x67F1,0x682A,0x6CE8,0x6D32,0x6E4A,0x6F8D,0x70B7, 0x73E0,0x7587,0x7C4C,0x7D02,0x7D2C,0x7DA2,0x821F,0x86DB, 0x8A3B,0x8A85,0x8D70,0x8E8A,0x8F33,0x9031,0x914E,0x9152, 0x9444,0x99D0,0x7AF9,0x7CA5,0x4FCA,0x5101,0x51C6,0x57C8, 0x5BEF,0x5CFB,0x6659,0x6A3D,0x6D5A,0x6E96,0x6FEC,0x710C, 0x756F,0x7AE3,0x8822,0x9021,0x9075,0x96CB,0x99FF,0x8301, 0x4E2D,0x4EF2,0x8846,0x91CD,0x537D,0x6ADB,0x696B,0x6C41, 0x847A,0x589E,0x618E,0x66FE,0x62EF,0x70DD,0x7511,0x75C7, 0x7E52,0x84B8,0x8B49,0x8D08,0x4E4B,0x53EA, /* Range 0x7221 - 0x727E, array index: 0x1CD5 */ 0x54AB,0x5730,0x5740,0x5FD7,0x6301,0x6307,0x646F,0x652F, 0x65E8,0x667A,0x679D,0x67B3,0x6B62,0x6C60,0x6C9A,0x6F2C, 0x77E5,0x7825,0x7949,0x7957,0x7D19,0x80A2,0x8102,0x81F3, 0x829D,0x82B7,0x8718,0x8A8C,0xF9FC,0x8D04,0x8DBE,0x9072, 0x76F4,0x7A19,0x7A37,0x7E54,0x8077,0x5507,0x55D4,0x5875, 0x632F,0x6422,0x6649,0x664B,0x686D,0x699B,0x6B84,0x6D25, 0x6EB1,0x73CD,0x7468,0x74A1,0x755B,0x75B9,0x76E1,0x771E, 0x778B,0x79E6,0x7E09,0x7E1D,0x81FB,0x852F,0x8897,0x8A3A, 0x8CD1,0x8EEB,0x8FB0,0x9032,0x93AD,0x9663,0x9673,0x9707, 0x4F84,0x53F1,0x59EA,0x5AC9,0x5E19,0x684E,0x74C6,0x75BE, 0x79E9,0x7A92,0x81A3,0x86ED,0x8CEA,0x8DCC,0x8FED,0x659F, 0x6715,0xF9FD,0x57F7,0x6F57,0x7DDD,0x8F2F, /* Range 0x7321 - 0x737E, array index: 0x1D33 */ 0x93F6,0x96C6,0x5FB5,0x61F2,0x6F84,0x4E14,0x4F98,0x501F, 0x53C9,0x55DF,0x5D6F,0x5DEE,0x6B21,0x6B64,0x78CB,0x7B9A, 0xF9FE,0x8E49,0x8ECA,0x906E,0x6349,0x643E,0x7740,0x7A84, 0x932F,0x947F,0x9F6A,0x64B0,0x6FAF,0x71E6,0x74A8,0x74DA, 0x7AC4,0x7C12,0x7E82,0x7CB2,0x7E98,0x8B9A,0x8D0A,0x947D, 0x9910,0x994C,0x5239,0x5BDF,0x64E6,0x672D,0x7D2E,0x50ED, 0x53C3,0x5879,0x6158,0x6159,0x61FA,0x65AC,0x7AD9,0x8B92, 0x8B96,0x5009,0x5021,0x5275,0x5531,0x5A3C,0x5EE0,0x5F70, 0x6134,0x655E,0x660C,0x6636,0x66A2,0x69CD,0x6EC4,0x6F32, 0x7316,0x7621,0x7A93,0x8139,0x8259,0x83D6,0x84BC,0x50B5, 0x57F0,0x5BC0,0x5BE8,0x5F69,0x63A1,0x7826,0x7DB5,0x83DC, 0x8521,0x91C7,0x91F5,0x518A,0x67F5,0x7B56, /* Range 0x7421 - 0x747E, array index: 0x1D91 */ 0x8CAC,0x51C4,0x59BB,0x60BD,0x8655,0x501C,0xF9FF,0x5254, 0x5C3A,0x617D,0x621A,0x62D3,0x64F2,0x65A5,0x6ECC,0x7620, 0x810A,0x8E60,0x965F,0x96BB,0x4EDF,0x5343,0x5598,0x5929, 0x5DDD,0x64C5,0x6CC9,0x6DFA,0x7394,0x7A7F,0x821B,0x85A6, 0x8CE4,0x8E10,0x9077,0x91E7,0x95E1,0x9621,0x97C6,0x51F8, 0x54F2,0x5586,0x5FB9,0x64A4,0x6F88,0x7DB4,0x8F1F,0x8F4D, 0x9435,0x50C9,0x5C16,0x6CBE,0x6DFB,0x751B,0x77BB,0x7C3D, 0x7C64,0x8A79,0x8AC2,0x581E,0x59BE,0x5E16,0x6377,0x7252, 0x758A,0x776B,0x8ADC,0x8CBC,0x8F12,0x5EF3,0x6674,0x6DF8, 0x807D,0x83C1,0x8ACB,0x9751,0x9BD6,0xFA00,0x5243,0x66FF, 0x6D95,0x6EEF,0x7DE0,0x8AE6,0x902E,0x905E,0x9AD4,0x521D, 0x527F,0x54E8,0x6194,0x6284,0x62DB,0x68A2, /* Range 0x7521 - 0x757E, array index: 0x1DEF */ 0x6912,0x695A,0x6A35,0x7092,0x7126,0x785D,0x7901,0x790E, 0x79D2,0x7A0D,0x8096,0x8278,0x82D5,0x8349,0x8549,0x8C82, 0x8D85,0x9162,0x918B,0x91AE,0x4FC3,0x56D1,0x71ED,0x77D7, 0x8700,0x89F8,0x5BF8,0x5FD6,0x6751,0x90A8,0x53E2,0x585A, 0x5BF5,0x60A4,0x6181,0x6460,0x7E3D,0x8070,0x8525,0x9283, 0x64AE,0x50AC,0x5D14,0x6700,0x589C,0x62BD,0x63A8,0x690E, 0x6978,0x6A1E,0x6E6B,0x76BA,0x79CB,0x82BB,0x8429,0x8ACF, 0x8DA8,0x8FFD,0x9112,0x914B,0x919C,0x9310,0x9318,0x939A, 0x96DB,0x9A36,0x9C0D,0x4E11,0x755C,0x795D,0x7AFA,0x7B51, 0x7BC9,0x7E2E,0x84C4,0x8E59,0x8E74,0x8EF8,0x9010,0x6625, 0x693F,0x7443,0x51FA,0x672E,0x9EDC,0x5145,0x5FE0,0x6C96, 0x87F2,0x885D,0x8877,0x60B4,0x81B5,0x8403, /* Range 0x7621 - 0x767E, array index: 0x1E4D */ 0x8D05,0x53D6,0x5439,0x5634,0x5A36,0x5C31,0x708A,0x7FE0, 0x805A,0x8106,0x81ED,0x8DA3,0x9189,0x9A5F,0x9DF2,0x5074, 0x4EC4,0x53A0,0x60FB,0x6E2C,0x5C64,0x4F88,0x5024,0x55E4, 0x5CD9,0x5E5F,0x6065,0x6894,0x6CBB,0x6DC4,0x71BE,0x75D4, 0x75F4,0x7661,0x7A1A,0x7A49,0x7DC7,0x7DFB,0x7F6E,0x81F4, 0x86A9,0x8F1C,0x96C9,0x99B3,0x9F52,0x5247,0x52C5,0x98ED, 0x89AA,0x4E03,0x67D2,0x6F06,0x4FB5,0x5BE2,0x6795,0x6C88, 0x6D78,0x741B,0x7827,0x91DD,0x937C,0x87C4,0x79E4,0x7A31, 0x5FEB,0x4ED6,0x54A4,0x553E,0x58AE,0x59A5,0x60F0,0x6253, 0x62D6,0x6736,0x6955,0x8235,0x9640,0x99B1,0x99DD,0x502C, 0x5353,0x5544,0x577C,0xFA01,0x6258,0xFA02,0x64E2,0x666B, 0x67DD,0x6FC1,0x6FEF,0x7422,0x7438,0x8A17, /* Range 0x7721 - 0x777E, array index: 0x1EAB */ 0x9438,0x5451,0x5606,0x5766,0x5F48,0x619A,0x6B4E,0x7058, 0x70AD,0x7DBB,0x8A95,0x596A,0x812B,0x63A2,0x7708,0x803D, 0x8CAA,0x5854,0x642D,0x69BB,0x5B95,0x5E11,0x6E6F,0xFA03, 0x8569,0x514C,0x53F0,0x592A,0x6020,0x614B,0x6B86,0x6C70, 0x6CF0,0x7B1E,0x80CE,0x82D4,0x8DC6,0x90B0,0x98B1,0xFA04, 0x64C7,0x6FA4,0x6491,0x6504,0x514E,0x5410,0x571F,0x8A0E, 0x615F,0x6876,0xFA05,0x75DB,0x7B52,0x7D71,0x901A,0x5806, 0x69CC,0x817F,0x892A,0x9000,0x9839,0x5078,0x5957,0x59AC, 0x6295,0x900F,0x9B2A,0x615D,0x7279,0x95D6,0x5761,0x5A46, 0x5DF4,0x628A,0x64AD,0x64FA,0x6777,0x6CE2,0x6D3E,0x722C, 0x7436,0x7834,0x7F77,0x82AD,0x8DDB,0x9817,0x5224,0x5742, 0x677F,0x7248,0x74E3,0x8CA9,0x8FA6,0x9211, /* Range 0x7821 - 0x787E, array index: 0x1F09 */ 0x962A,0x516B,0x53ED,0x634C,0x4F69,0x5504,0x6096,0x6557, 0x6C9B,0x6D7F,0x724C,0x72FD,0x7A17,0x8987,0x8C9D,0x5F6D, 0x6F8E,0x70F9,0x81A8,0x610E,0x4FBF,0x504F,0x6241,0x7247, 0x7BC7,0x7DE8,0x7FE9,0x904D,0x97AD,0x9A19,0x8CB6,0x576A, 0x5E73,0x67B0,0x840D,0x8A55,0x5420,0x5B16,0x5E63,0x5EE2, 0x5F0A,0x6583,0x80BA,0x853D,0x9589,0x965B,0x4F48,0x5305, 0x530D,0x530F,0x5486,0x54FA,0x5703,0x5E03,0x6016,0x629B, 0x62B1,0x6355,0xFA06,0x6CE1,0x6D66,0x75B1,0x7832,0x80DE, 0x812F,0x82DE,0x8461,0x84B2,0x888D,0x8912,0x900B,0x92EA, 0x98FD,0x9B91,0x5E45,0x66B4,0x66DD,0x7011,0x7206,0xFA07, 0x4FF5,0x527D,0x5F6A,0x6153,0x6753,0x6A19,0x6F02,0x74E2, 0x7968,0x8868,0x8C79,0x98C7,0x98C4,0x9A43, /* Range 0x7921 - 0x797E, array index: 0x1F67 */ 0x54C1,0x7A1F,0x6953,0x8AF7,0x8C4A,0x98A8,0x99AE,0x5F7C, 0x62AB,0x75B2,0x76AE,0x88AB,0x907F,0x9642,0x5339,0x5F3C, 0x5FC5,0x6CCC,0x73CC,0x7562,0x758B,0x7B46,0x82FE,0x999D, 0x4E4F,0x903C,0x4E0B,0x4F55,0x53A6,0x590F,0x5EC8,0x6630, 0x6CB3,0x7455,0x8377,0x8766,0x8CC0,0x9050,0x971E,0x9C15, 0x58D1,0x5B78,0x8650,0x8B14,0x9DB4,0x5BD2,0x6068,0x608D, 0x65F1,0x6C57,0x6F22,0x6FA3,0x701A,0x7F55,0x7FF0,0x9591, 0x9592,0x9650,0x97D3,0x5272,0x8F44,0x51FD,0x542B,0x54B8, 0x5563,0x558A,0x6ABB,0x6DB5,0x7DD8,0x8266,0x929C,0x9677, 0x9E79,0x5408,0x54C8,0x76D2,0x86E4,0x95A4,0x95D4,0x965C, 0x4EA2,0x4F09,0x59EE,0x5AE6,0x5DF7,0x6052,0x6297,0x676D, 0x6841,0x6C86,0x6E2F,0x7F38,0x809B,0x822A, /* Range 0x7A21 - 0x7A7E, array index: 0x1FC5 */ 0xFA08,0xFA09,0x9805,0x4EA5,0x5055,0x54B3,0x5793,0x595A, 0x5B69,0x5BB3,0x61C8,0x6977,0x6D77,0x7023,0x87F9,0x89E3, 0x8A72,0x8AE7,0x9082,0x99ED,0x9AB8,0x52BE,0x6838,0x5016, 0x5E78,0x674F,0x8347,0x884C,0x4EAB,0x5411,0x56AE,0x73E6, 0x9115,0x97FF,0x9909,0x9957,0x9999,0x5653,0x589F,0x865B, 0x8A31,0x61B2,0x6AF6,0x737B,0x8ED2,0x6B47,0x96AA,0x9A57, 0x5955,0x7200,0x8D6B,0x9769,0x4FD4,0x5CF4,0x5F26,0x61F8, 0x665B,0x6CEB,0x70AB,0x7384,0x73B9,0x73FE,0x7729,0x774D, 0x7D43,0x7D62,0x7E23,0x8237,0x8852,0xFA0A,0x8CE2,0x9249, 0x986F,0x5B51,0x7A74,0x8840,0x9801,0x5ACC,0x4FE0,0x5354, 0x593E,0x5CFD,0x633E,0x6D79,0x72F9,0x8105,0x8107,0x83A2, 0x92CF,0x9830,0x4EA8,0x5144,0x5211,0x578B, /* Range 0x7B21 - 0x7B7E, array index: 0x2023 */ 0x5F62,0x6CC2,0x6ECE,0x7005,0x7050,0x70AF,0x7192,0x73E9, 0x7469,0x834A,0x87A2,0x8861,0x9008,0x90A2,0x93A3,0x99A8, 0x516E,0x5F57,0x60E0,0x6167,0x66B3,0x8559,0x8E4A,0x91AF, 0x978B,0x4E4E,0x4E92,0x547C,0x58D5,0x58FA,0x597D,0x5CB5, 0x5F27,0x6236,0x6248,0x660A,0x6667,0x6BEB,0x6D69,0x6DCF, 0x6E56,0x6EF8,0x6F94,0x6FE0,0x6FE9,0x705D,0x72D0,0x7425, 0x745A,0x74E0,0x7693,0x795C,0x7CCA,0x7E1E,0x80E1,0x82A6, 0x846B,0x84BF,0x864E,0x865F,0x8774,0x8B77,0x8C6A,0x93AC, 0x9800,0x9865,0x60D1,0x6216,0x9177,0x5A5A,0x660F,0x6DF7, 0x6E3E,0x743F,0x9B42,0x5FFD,0x60DA,0x7B0F,0x54C4,0x5F18, 0x6C5E,0x6CD3,0x6D2A,0x70D8,0x7D05,0x8679,0x8A0C,0x9D3B, 0x5316,0x548C,0x5B05,0x6A3A,0x706B,0x7575, /* Range 0x7C21 - 0x7C7E, array index: 0x2081 */ 0x798D,0x79BE,0x82B1,0x83EF,0x8A71,0x8B41,0x8CA8,0x9774, 0xFA0B,0x64F4,0x652B,0x78BA,0x78BB,0x7A6B,0x4E38,0x559A, 0x5950,0x5BA6,0x5E7B,0x60A3,0x63DB,0x6B61,0x6665,0x6853, 0x6E19,0x7165,0x74B0,0x7D08,0x9084,0x9A69,0x9C25,0x6D3B, 0x6ED1,0x733E,0x8C41,0x95CA,0x51F0,0x5E4C,0x5FA8,0x604D, 0x60F6,0x6130,0x614C,0x6643,0x6644,0x69A5,0x6CC1,0x6E5F, 0x6EC9,0x6F62,0x714C,0x749C,0x7687,0x7BC1,0x7C27,0x8352, 0x8757,0x9051,0x968D,0x9EC3,0x532F,0x56DE,0x5EFB,0x5F8A, 0x6062,0x6094,0x61F7,0x6666,0x6703,0x6A9C,0x6DEE,0x6FAE, 0x7070,0x736A,0x7E6A,0x81BE,0x8334,0x86D4,0x8AA8,0x8CC4, 0x5283,0x7372,0x5B96,0x6A6B,0x9404,0x54EE,0x5686,0x5B5D, 0x6548,0x6585,0x66C9,0x689F,0x6D8D,0x6DC6, /* Range 0x7D21 - 0x7D7E, array index: 0x20DF */ 0x723B,0x80B4,0x9175,0x9A4D,0x4FAF,0x5019,0x539A,0x540E, 0x543C,0x5589,0x55C5,0x5E3F,0x5F8C,0x673D,0x7166,0x73DD, 0x9005,0x52DB,0x52F3,0x5864,0x58CE,0x7104,0x718F,0x71FB, 0x85B0,0x8A13,0x6688,0x85A8,0x55A7,0x6684,0x714A,0x8431, 0x5349,0x5599,0x6BC1,0x5F59,0x5FBD,0x63EE,0x6689,0x7147, 0x8AF1,0x8F1D,0x9EBE,0x4F11,0x643A,0x70CB,0x7566,0x8667, 0x6064,0x8B4E,0x9DF8,0x5147,0x51F6,0x5308,0x6D36,0x80F8, 0x9ED1,0x6615,0x6B23,0x7098,0x75D5,0x5403,0x5C79,0x7D07, 0x8A16,0x6B20,0x6B3D,0x6B46,0x5438,0x6070,0x6D3D,0x7FD5, 0x8208,0x50D6,0x51DE,0x559C,0x566B,0x56CD,0x59EC,0x5B09, 0x5E0C,0x6199,0x6198,0x6231,0x665E,0x66E6,0x7199,0x71B9, 0x71BA,0x72A7,0x79A7,0x7A00,0x7FB2,0x8A70, /* Unranged codes (93 codes) */ }; #endif /* ICONV_TO_UCS_CCS_KSX1001 && defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * 16-bit UCS -> ksx1001 speed-optimized table (74752 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_KSX1001) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t from_ucs_speed_ksx1001[] = { /* Heading Block */ 0x0100,0x0200,0x0300,0x0400,0x0500,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, 0x0600,0x0700,0x0800,0x0900,0x0A00,0x0B00,0x0C00,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, 0x0D00,0x0E00,0x0F00,0x1000,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,0x1100,0x1200, 0x1300,0x1400,0x1500,0x1600,0x1700,0x1800,0x1900,0x1A00, 0x1B00,0x1C00,0x1D00,0x1E00,0x1F00,0x2000,0x2100,0x2200, 0x2300,0x2400,0x2500,0x2600,0x2700,0x2800,0x2900,0x2A00, 0x2B00,0x2C00,0x2D00,0x2E00,0x2F00,0x3000,0x3100,0x3200, 0x3300,0x3400,0x3500,0x3600,0x3700,0x3800,0x3900,0x3A00, 0x3B00,0x3C00,0x3D00,0x3E00,0x3F00,0x4000,0x4100,0x4200, 0x4300,0x4400,0x4500,0x4600,0x4700,0x4800,0x4900,0x4A00, 0x4B00,0x4C00,0x4D00,0x4E00,0x4F00,0x5000,0x5100,0x5200, 0x5300,0x5400,0x5500,0x5600,0x5700,0x5800,0x5900,0x5A00, 0x5B00,0x5C00,0x5D00,0x5E00,0x5F00,0x6000,0x6100,0x6200, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,0x6300,0x6400,0x6500,0x6600, 0x6700,0x6800,0x6900,0x6A00,0x6B00,0x6C00,0x6D00,0x6E00, 0x6F00,0x7000,0x7100,0x7200,0x7300,0x7400,0x7500,0x7600, 0x7700,0x7800,0x7900,0x7A00,0x7B00,0x7C00,0x7D00,0x7E00, 0x7F00,0x8000,0x8100,0x8200,0x8300,0x8400,0x8500,0x8600, 0x8700,0x8800,0x8900,0x8A00,0x8B00,0x8C00,0x8D00,0x8E00, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK,INVBLK, INVBLK,0x8F00,0x9000,INVBLK,INVBLK,INVBLK,INVBLK,0x9100, /* Block 1, Array index 0x0100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x222E,INVALC,INVALC,0x2234,INVALC,INVALC,0x2157, 0x2127,INVALC,0x2823,INVALC,INVALC,0x2129,INVALC,INVALC, 0x2146,0x213E,0x2977,0x2978,0x2225,INVALC,0x2252,0x2124, 0x222C,0x2976,0x282C,INVALC,0x2879,0x2876,0x287A,0x222F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2821,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2822,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x213F, 0x282A,INVALC,INVALC,INVALC,INVALC,INVALC,0x282D,0x292C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2921,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2923,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2140, 0x292A,INVALC,INVALC,INVALC,INVALC,INVALC,0x292D,INVALC, /* Block 2, Array index 0x0200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2922,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2824,0x2924, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2925,0x2826,0x2926,INVALC,INVALC,INVALC,INVALC, 0x2927,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2828, 0x2928,0x2829,0x2929,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2930,0x282F,0x292F,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x282B,0x292B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x282E,0x292E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 3, Array index 0x0300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x2227, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2230,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2228,0x222B,0x222A,0x222D,INVALC,0x2229,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 4, Array index 0x0400 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2541,0x2542,0x2543,0x2544,0x2545,0x2546,0x2547, 0x2548,0x2549,0x254A,0x254B,0x254C,0x254D,0x254E,0x254F, 0x2550,0x2551,INVALC,0x2552,0x2553,0x2554,0x2555,0x2556, 0x2557,0x2558,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2561,0x2562,0x2563,0x2564,0x2565,0x2566,0x2567, 0x2568,0x2569,0x256A,0x256B,0x256C,0x256D,0x256E,0x256F, 0x2570,0x2571,INVALC,0x2572,0x2573,0x2574,0x2575,0x2576, 0x2577,0x2578,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 5, Array index 0x0500 */ INVALC,0x2C27,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2C21,0x2C22,0x2C23,0x2C24,0x2C25,0x2C26,0x2C28,0x2C29, 0x2C2A,0x2C2B,0x2C2C,0x2C2D,0x2C2E,0x2C2F,0x2C30,0x2C31, 0x2C32,0x2C33,0x2C34,0x2C35,0x2C36,0x2C37,0x2C38,0x2C39, 0x2C3A,0x2C3B,0x2C3C,0x2C3D,0x2C3E,0x2C3F,0x2C40,0x2C41, 0x2C51,0x2C52,0x2C53,0x2C54,0x2C55,0x2C56,0x2C58,0x2C59, 0x2C5A,0x2C5B,0x2C5C,0x2C5D,0x2C5E,0x2C5F,0x2C60,0x2C61, 0x2C62,0x2C63,0x2C64,0x2C65,0x2C66,0x2C67,0x2C68,0x2C69, 0x2C6A,0x2C6B,0x2C6C,0x2C6D,0x2C6E,0x2C6F,0x2C70,0x2C71, INVALC,0x2C57,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 33, Array index 0x0600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x212A,INVALC,INVALC, 0x212E,0x212F,INVALC,INVALC,0x2130,0x2131,INVALC,INVALC, 0x2253,0x2254,INVALC,INVALC,INVALC,0x2125,0x2126,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2236,INVALC,0x2147,0x2148,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2158,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2979,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x297A, INVALC,0x297B,0x297C,0x297D,0x297E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 34, Array index 0x0700 */ INVALC,INVALC,INVALC,0x2149,INVALC,INVALC,INVALC,INVALC, INVALC,0x2235,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2724,INVALC,INVALC,0x2260,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2265,0x2262,INVALC,INVALC,INVALC,0x2759,INVALC, INVALC,INVALC,INVALC,0x214A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x2877,0x2878,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x287B,0x287C,0x287D,0x287E,INVALC, 0x2530,0x2531,0x2532,0x2533,0x2534,0x2535,0x2536,0x2537, 0x2538,0x2539,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2521,0x2522,0x2523,0x2524,0x2525,0x2526,0x2527,0x2528, 0x2529,0x252A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2167,0x2168,0x2166,0x2169,0x216A,0x2255,0x2258,0x2256, 0x2259,0x2257,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2221,INVALC,0x2222,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 35, Array index 0x0800 */ 0x2223,INVALC,0x2153,0x2224,INVALC,INVALC,INVALC,0x2154, 0x2174,INVALC,INVALC,0x2175,INVALC,INVALC,INVALC,0x2233, INVALC,0x2232,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x216E,INVALC,INVALC,0x2170,0x2144,INVALC, 0x2150,INVALC,INVALC,INVALC,INVALC,0x212B,INVALC,0x217C, 0x217D,0x217B,0x217A,0x2172,0x2173,INVALC,0x2231,INVALC, INVALC,INVALC,INVALC,INVALC,0x2145,0x2171,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x212D,0x216F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2156,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2141,0x2155,INVALC,INVALC,0x2142,0x2143,INVALC,INVALC, INVALC,INVALC,0x216C,0x216D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2178,0x2179,INVALC,INVALC,0x2176,0x2177, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2241,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x2151,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 36, Array index 0x0900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2152,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 37, Array index 0x0A00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2867,0x2868,0x2869,0x286A,0x286B,0x286C,0x286D,0x286E, 0x286F,0x2870,0x2871,0x2872,0x2873,0x2874,0x2875,INVALC, INVALC,INVALC,INVALC,INVALC,0x2967,0x2968,0x2969,0x296A, 0x296B,0x296C,0x296D,0x296E,0x296F,0x2970,0x2971,0x2972, 0x2973,0x2974,0x2975,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x294D,0x294E,0x294F,0x2950, 0x2951,0x2952,0x2953,0x2954,0x2955,0x2956,0x2957,0x2958, 0x2959,0x295A,0x295B,0x295C,0x295D,0x295E,0x295F,0x2960, 0x2961,0x2962,0x2963,0x2964,0x2965,0x2966,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x284D,0x284E,0x284F,0x2850,0x2851,0x2852,0x2853,0x2854, 0x2855,0x2856,0x2857,0x2858,0x2859,0x285A,0x285B,0x285C, 0x285D,0x285E,0x285F,0x2860,0x2861,0x2862,0x2863,0x2864, 0x2865,0x2866,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 38, Array index 0x0B00 */ 0x2621,0x262C,0x2622,0x262D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2623,0x2648,0x2647,0x262E, 0x2624,0x2642,0x2641,0x262F,0x2626,0x2646,0x2645,0x2631, 0x2625,0x2644,0x2643,0x2630,0x2627,0x263C,0x2649,0x264A, 0x2637,0x264B,0x264C,0x2632,0x2629,0x263E,0x264D,0x264E, 0x2639,0x264F,0x2650,0x2634,0x2628,0x2651,0x2652,0x2638, 0x263D,0x2653,0x2654,0x2633,0x262A,0x2655,0x2656,0x263A, 0x263F,0x2657,0x2658,0x2635,0x262B,0x2659,0x265A,0x263B, 0x265B,0x265C,0x2640,0x265D,0x265E,0x265F,0x2660,0x2661, 0x2662,0x2663,0x2664,0x2636,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2246,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2161,0x2160,INVALC,0x2243,0x2247,0x2248,0x224B,0x224A, 0x2249,0x224C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x2163,0x2162,INVALC,INVALC,0x223A,0x2239, INVALC,INVALC,INVALC,INVALC,0x2165,0x2164,INVALC,INVALC, 0x2238,0x2237,INVALC,INVALC,INVALC,INVALC,0x215F,0x215E, 0x2242,INVALC,INVALC,0x215B,INVALC,INVALC,0x215D,0x215C, 0x2244,0x2245,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 39, Array index 0x0C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,0x215A,0x2159,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x224F,0x224E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x2250,INVALC,0x2251,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x214F,INVALC,0x214E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x223C,0x223D,INVALC,0x2240,0x223B,0x223E,INVALC,0x223F, 0x224D,0x225B,0x225C,INVALC,0x225D,0x225A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 49, Array index 0x0D00 */ 0x2121,0x2122,0x2123,0x2128,INVALC,INVALC,INVALC,INVALC, 0x2134,0x2135,0x2136,0x2137,0x2138,0x2139,0x213A,0x213B, 0x213C,0x213D,INVALC,0x216B,0x2132,0x2133,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2A21,0x2A22,0x2A23,0x2A24,0x2A25,0x2A26,0x2A27, 0x2A28,0x2A29,0x2A2A,0x2A2B,0x2A2C,0x2A2D,0x2A2E,0x2A2F, 0x2A30,0x2A31,0x2A32,0x2A33,0x2A34,0x2A35,0x2A36,0x2A37, 0x2A38,0x2A39,0x2A3A,0x2A3B,0x2A3C,0x2A3D,0x2A3E,0x2A3F, 0x2A40,0x2A41,0x2A42,0x2A43,0x2A44,0x2A45,0x2A46,0x2A47, 0x2A48,0x2A49,0x2A4A,0x2A4B,0x2A4C,0x2A4D,0x2A4E,0x2A4F, 0x2A50,0x2A51,0x2A52,0x2A53,0x2A54,0x2A55,0x2A56,0x2A57, 0x2A58,0x2A59,0x2A5A,0x2A5B,0x2A5C,0x2A5D,0x2A5E,0x2A5F, 0x2A60,0x2A61,0x2A62,0x2A63,0x2A64,0x2A65,0x2A66,0x2A67, 0x2A68,0x2A69,0x2A6A,0x2A6B,0x2A6C,0x2A6D,0x2A6E,0x2A6F, 0x2A70,0x2A71,0x2A72,0x2A73,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2B21,0x2B22,0x2B23,0x2B24,0x2B25,0x2B26,0x2B27, 0x2B28,0x2B29,0x2B2A,0x2B2B,0x2B2C,0x2B2D,0x2B2E,0x2B2F, 0x2B30,0x2B31,0x2B32,0x2B33,0x2B34,0x2B35,0x2B36,0x2B37, 0x2B38,0x2B39,0x2B3A,0x2B3B,0x2B3C,0x2B3D,0x2B3E,0x2B3F, 0x2B40,0x2B41,0x2B42,0x2B43,0x2B44,0x2B45,0x2B46,0x2B47, 0x2B48,0x2B49,0x2B4A,0x2B4B,0x2B4C,0x2B4D,0x2B4E,0x2B4F, 0x2B50,0x2B51,0x2B52,0x2B53,0x2B54,0x2B55,0x2B56,0x2B57, 0x2B58,0x2B59,0x2B5A,0x2B5B,0x2B5C,0x2B5D,0x2B5E,0x2B5F, 0x2B60,0x2B61,0x2B62,0x2B63,0x2B64,0x2B65,0x2B66,0x2B67, 0x2B68,0x2B69,0x2B6A,0x2B6B,0x2B6C,0x2B6D,0x2B6E,0x2B6F, 0x2B70,0x2B71,0x2B72,0x2B73,0x2B74,0x2B75,0x2B76,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 50, Array index 0x0E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x2421,0x2422,0x2423,0x2424,0x2425,0x2426,0x2427, 0x2428,0x2429,0x242A,0x242B,0x242C,0x242D,0x242E,0x242F, 0x2430,0x2431,0x2432,0x2433,0x2434,0x2435,0x2436,0x2437, 0x2438,0x2439,0x243A,0x243B,0x243C,0x243D,0x243E,0x243F, 0x2440,0x2441,0x2442,0x2443,0x2444,0x2445,0x2446,0x2447, 0x2448,0x2449,0x244A,0x244B,0x244C,0x244D,0x244E,0x244F, 0x2450,0x2451,0x2452,0x2453,0x2454,0x2455,0x2456,0x2457, 0x2458,0x2459,0x245A,0x245B,0x245C,0x245D,0x245E,0x245F, 0x2460,0x2461,0x2462,0x2463,0x2464,0x2465,0x2466,0x2467, 0x2468,0x2469,0x246A,0x246B,0x246C,0x246D,0x246E,0x246F, 0x2470,0x2471,0x2472,0x2473,0x2474,0x2475,0x2476,0x2477, 0x2478,0x2479,0x247A,0x247B,0x247C,0x247D,0x247E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 51, Array index 0x0F00 */ 0x2931,0x2932,0x2933,0x2934,0x2935,0x2936,0x2937,0x2938, 0x2939,0x293A,0x293B,0x293C,0x293D,0x293E,0x293F,0x2940, 0x2941,0x2942,0x2943,0x2944,0x2945,0x2946,0x2947,0x2948, 0x2949,0x294A,0x294B,0x294C,0x225F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2831,0x2832,0x2833,0x2834,0x2835,0x2836,0x2837,0x2838, 0x2839,0x283A,0x283B,0x283C,0x283D,0x283E,0x283F,0x2840, 0x2841,0x2842,0x2843,0x2844,0x2845,0x2846,0x2847,0x2848, 0x2849,0x284A,0x284B,0x284C,INVALC,INVALC,INVALC,0x225E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 52, Array index 0x1000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x2749,0x274A,0x274B,0x274C,0x274D,INVALC,INVALC,INVALC, 0x273A,0x273B,0x275C,0x275D,0x275E,0x2736,0x2737,0x2738, 0x2754,0x2755,0x2756,0x2757,0x2758,0x2721,0x2722,0x2723, 0x2725,0x272B,0x272C,0x272D,0x272E,0x272F,0x2730,0x2731, 0x2732,0x2733,0x2734,0x2727,0x2728,0x2729,0x272A,0x273D, 0x273E,0x2765,0x2766,0x2767,0x2768,0x2761,0x2762,0x2763, 0x273F,0x2740,0x2741,0x2742,0x2743,0x2744,0x2745,0x2746, 0x2747,0x2748,0x274E,0x274F,0x2750,0x2751,0x2752,0x2753, 0x275A,0x275B,0x2263,0x276C,0x2726,0x2760,0x276F,0x2261, 0x273C,0x276D,0x2735,INVALC,INVALC,INVALC,INVALC,0x2739, 0x276A,INVALC,INVALC,0x276B,INVALC,INVALC,0x275F,INVALC, 0x2264,INVALC,INVALC,0x2764,0x276E,0x2769,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 79, Array index 0x1100 */ 0x6C69,0x6F4B,INVALC,0x7652,INVALC,INVALC,INVALC,0x5832, 0x6D5B,0x5F32,0x5F3E,0x793B,INVALC,0x5C74,INVALC,INVALC, INVALC,0x7564,INVALC,INVALC,0x7326,0x5D60,0x6126,INVALC, 0x4E78,0x5C30,INVALC,INVALC,INVALC,INVALC,0x632A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7169,INVALC,INVALC, INVALC,INVALC,0x4D7A,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7C2F,0x5321,INVALC,0x712B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6751,0x522C,INVALC,0x4E79,INVALC,INVALC, INVALC,INVALC,INVALC,0x717D,INVALC,0x5E3F,0x7B3A,0x7939, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4E52,INVALC, 0x632B,0x6B60,INVALC,INVALC,INVALC,0x4E7A,0x4B77,0x6525, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4A61,INVALC,0x544C,INVALC,INVALC, INVALC,INVALC,INVALC,0x6A61,INVALC,INVALC,0x5C63,0x5F2D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4B6B,INVALC, INVALC,INVALC,0x552F,INVALC,INVALC,INVALC,0x5675,INVALC, 0x6578,INVALC,INVALC,0x5E40,0x6C23,INVALC,0x694D,INVALC, 0x6A27,0x6976,0x7B3B,INVALC,0x6769,0x6F4C,INVALC,INVALC, 0x5066,INVALC,INVALC,0x5E41,INVALC,INVALC,0x642C,INVALC, INVALC,0x584C,0x7971,INVALC,0x4E5F,0x7A24,0x6632,INVALC, 0x7A7B,INVALC,INVALC,0x7A3D,0x4C48,0x6F4D,0x5555,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5322,INVALC, INVALC,INVALC,0x6C51,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6427,0x6C52,INVALC,INVALC,0x7631,INVALC,INVALC,0x4E7B, INVALC,INVALC,0x5051,0x4B3F,INVALC,0x6D24,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6D28,0x5E42,0x7662,0x6D5C, 0x5C75,0x6039,INVALC,INVALC,INVALC,0x544E,INVALC,0x7435, INVALC,INVALC,INVALC,0x535B,0x5635,0x6C24,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6466,INVALC,0x716A,INVALC,INVALC,INVALC,0x4B6C,0x4B40, INVALC,INVALC,INVALC,0x6C72,INVALC,INVALC,INVALC,INVALC, /* Block 80, Array index 0x1200 */ INVALC,0x506A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7972,0x6C25,0x505F,INVALC,0x676A,0x506B,0x5C51, 0x5B69,0x7D4C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B57, INVALC,INVALC,INVALC,INVALC,0x5A61,INVALC,0x5636,INVALC, 0x635F,INVALC,0x5E43,INVALC,0x5E44,0x4A21,INVALC,INVALC, INVALC,INVALC,INVALC,0x6E6C,INVALC,INVALC,0x5323,0x6E37, 0x784F,INVALC,INVALC,INVALC,INVALC,0x6A48,0x6E38,0x712C, 0x7125,0x694E,INVALC,INVALC,INVALC,0x793C,INVALC,INVALC, INVALC,0x6579,0x6C6A,0x5D56,0x6D42,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7825,INVALC,INVALC,INVALC,INVALC,INVALC,0x653A, 0x5B58,INVALC,INVALC,0x4A22,INVALC,INVALC,0x514D,INVALC, INVALC,INVALC,0x6E6D,INVALC,INVALC,INVALC,0x6C6B,0x5E45, INVALC,0x6360,INVALC,0x4A49,0x7269,INVALC,0x554E,INVALC, 0x7636,INVALC,0x4E42,0x5647,INVALC,0x6334,INVALC,0x712D, INVALC,0x6A62,INVALC,INVALC,INVALC,INVALC,0x5742,INVALC, 0x7327,INVALC,INVALC,0x4D6A,INVALC,0x6B6E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5932,0x7D25, INVALC,INVALC,INVALC,INVALC,INVALC,0x7655,0x5562,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7835, INVALC,INVALC,0x4C75,0x7535,0x642D,INVALC,INVALC,INVALC, INVALC,0x676B,0x7155,INVALC,INVALC,INVALC,0x703B,INVALC, INVALC,0x6935,INVALC,0x4C49,0x7A55,INVALC,INVALC,0x6154, INVALC,INVALC,0x5756,INVALC,INVALC,0x5C41,INVALC,0x5E46, 0x7A6F,0x6361,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6173,0x5C76, INVALC,0x4E7C,INVALC,0x5B44,INVALC,0x7871,INVALC,INVALC, 0x5C64,INVALC,0x656F,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 81, Array index 0x1300 */ INVALC,INVALC,0x5C31,INVALC,INVALC,INVALC,0x5556,INVALC, INVALC,0x735A,INVALC,0x4B41,INVALC,0x5B43,INVALC,INVALC, INVALC,0x597A,0x536E,INVALC,INVALC,INVALC,0x7A38,INVALC, INVALC,0x7D26,0x6B6F,INVALC,0x7426,INVALC,0x4C4A,0x7328, INVALC,0x735B,INVALC,0x5B27,0x7637,INVALC,0x4F66,0x7072, 0x4B5A,INVALC,0x6752,0x5743,0x7670,0x685E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6526,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6567,INVALC,INVALC,INVALC,0x4A23, 0x4C27,0x6A49,INVALC,INVALC,INVALC,INVALC,INVALC,0x7836, INVALC,INVALC,INVALC,INVALC,INVALC,0x7A25,INVALC,INVALC, INVALC,INVALC,0x712E,INVALC,0x6F4E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4B6D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7630,0x6F4F,0x694F,INVALC, 0x775E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4E53,INVALC,INVALC,INVALC,INVALC,0x5C77,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5B28,INVALC,INVALC, INVALC,0x4B78,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5F21,0x5D61,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x754A,0x6936,INVALC,INVALC, INVALC,INVALC,0x676C,0x6E6E,INVALC,0x7370,INVALC,0x5F3F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4C4B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5041,INVALC,INVALC, INVALC,0x7452,0x603A,INVALC,INVALC,INVALC,INVALC,0x5F40, INVALC,0x4E60,INVALC,INVALC,INVALC,0x5C52,0x7D6A,INVALC, INVALC,INVALC,0x5676,INVALC,INVALC,INVALC,0x6A4A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6869,INVALC,0x632C, INVALC,INVALC,INVALC,INVALC,INVALC,0x7350,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4A24,INVALC,0x5B78,INVALC,INVALC,INVALC,0x5E47, /* Block 82, Array index 0x1400 */ 0x6B70,0x7156,INVALC,INVALC,0x6562,INVALC,0x4C4C,INVALC, INVALC,0x4B7B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6A63,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5F41, INVALC,0x566D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6950,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6E39,INVALC,INVALC,INVALC,INVALC,0x5563, INVALC,INVALC,0x5153,INVALC,0x6570,INVALC,INVALC,INVALC, 0x6834,0x6B43,INVALC,0x6A2A,0x7A7C,0x7576,0x703C,0x7D54, 0x603B,0x4E43,INVALC,0x503A,0x773A,0x5873,0x774D,INVALC, INVALC,INVALC,0x642E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x545F,INVALC,INVALC,INVALC, INVALC,INVALC,0x5067,INVALC,INVALC,0x6C7D,INVALC,0x522E, 0x6E6F,0x5557,0x6A64,0x7822,0x4D6B,0x573F,0x7B31,INVALC, INVALC,0x4D6C,INVALC,INVALC,INVALC,0x5C32,0x506C,0x4E7D, 0x6E70,INVALC,INVALC,INVALC,0x4C42,INVALC,INVALC,INVALC, 0x506D,INVALC,INVALC,INVALC,INVALC,INVALC,0x6577,INVALC, INVALC,INVALC,0x737C,INVALC,INVALC,0x6E22,INVALC,INVALC, INVALC,INVALC,0x5933,INVALC,INVALC,0x5874,INVALC,0x6937, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4E2E,INVALC,INVALC,INVALC,INVALC,0x5922,INVALC,INVALC, INVALC,INVALC,0x5871,INVALC,0x544F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6527,0x5552, INVALC,INVALC,INVALC,INVALC,INVALC,0x5629,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7422,INVALC,0x7157,INVALC, INVALC,0x5558,INVALC,0x703D,0x5750,0x5450,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x574F,0x6B6A,0x7D6B,INVALC, INVALC,0x5B6D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7C45,0x4B42,INVALC,INVALC,INVALC,INVALC,0x7D55,INVALC, 0x7448,0x686A,0x7573,INVALC,INVALC,0x795E,INVALC,INVALC, /* Block 83, Array index 0x1500 */ 0x536F,INVALC,INVALC,0x6C53,INVALC,INVALC,0x5D42,0x6F37, 0x6754,INVALC,0x4A4A,INVALC,INVALC,INVALC,0x597B,INVALC, INVALC,0x7A7D,INVALC,INVALC,INVALC,INVALC,INVALC,0x562A, INVALC,INVALC,INVALC,INVALC,INVALC,0x7478,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7777,0x5C2C,INVALC,INVALC, INVALC,0x5757,0x5F22,INVALC,INVALC,INVALC,0x4E3E,INVALC, 0x5370,INVALC,INVALC,INVALC,INVALC,INVALC,0x7024,0x616C, 0x4F67,0x734B,0x6D29,0x4A3E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x746F,INVALC,INVALC,INVALC,0x764E, INVALC,INVALC,0x5E7B,0x503B,0x5537,0x6E71,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7428,INVALC,0x5C78,INVALC, INVALC,INVALC,INVALC,0x4B27,INVALC,0x5A4E,INVALC,INVALC, INVALC,0x6066,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6D25,0x6E72,INVALC,INVALC,INVALC,INVALC,0x5C79, INVALC,INVALC,0x795C,INVALC,INVALC,0x735C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7872,INVALC,0x7479, INVALC,INVALC,INVALC,0x7C71,INVALC,INVALC,INVALC,0x503C, 0x5B79,0x5731,INVALC,INVALC,INVALC,0x4B7C,INVALC,INVALC, INVALC,0x7025,0x4B7D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5574,INVALC,INVALC,INVALC,0x4D6D, 0x4A25,INVALC,INVALC,0x562B,0x5042,INVALC,INVALC,INVALC, INVALC,0x703E,0x523D,0x4C24,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7A36,INVALC, INVALC,0x4C4D,INVALC,0x5A7A,INVALC,0x764F,INVALC,0x6938, INVALC,0x5875,INVALC,INVALC,INVALC,0x4C4E,INVALC,INVALC, INVALC,INVALC,0x574D,INVALC,INVALC,0x5451,0x696D,INVALC, 0x4A6B,0x5962,INVALC,0x7D32,INVALC,0x632D,0x564C,0x5934, INVALC,INVALC,0x6127,0x6E53,0x5043,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7D33,INVALC,0x5564,INVALC,INVALC, 0x4F68,INVALC,0x6D43,0x5032,INVALC,INVALC,0x4E7E,0x5A28, /* Block 84, Array index 0x1600 */ INVALC,INVALC,INVALC,INVALC,INVALC,0x7850,INVALC,INVALC, 0x7D56,INVALC,INVALC,INVALC,INVALC,0x7851,INVALC,0x7852, 0x5C53,INVALC,INVALC,INVALC,INVALC,0x5D62,0x7B79,0x5D41, INVALC,0x6335,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6D5D,0x4E44,INVALC,0x4B21,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5D63,INVALC,INVALC,INVALC,INVALC,0x7C5D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x792F,INVALC,INVALC,INVALC,INVALC,INVALC,0x527B, 0x4F21,0x6428,INVALC,0x7436,0x6C7E,INVALC,INVALC,0x632E, 0x676D,0x7D41,0x5A62,INVALC,INVALC,0x5833,INVALC,INVALC, INVALC,0x5D64,0x706F,0x7671,0x7A70,INVALC,INVALC,0x5175, INVALC,INVALC,0x5A4F,INVALC,0x5C54,INVALC,0x5C26,INVALC, 0x6F3F,INVALC,INVALC,INVALC,INVALC,INVALC,0x4E4F,INVALC, 0x6059,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5956, 0x6C54,0x6A4B,INVALC,INVALC,0x4A3F,0x5530,INVALC,0x4F69, INVALC,INVALC,INVALC,INVALC,INVALC,0x716D,INVALC,0x4C4F, INVALC,INVALC,INVALC,INVALC,0x6478,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x646D,INVALC,INVALC,INVALC,INVALC, 0x5758,INVALC,0x7D27,INVALC,INVALC,INVALC,INVALC,0x6A2B, 0x7632,INVALC,INVALC,INVALC,INVALC,0x4F70,0x793D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6674,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4B5B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7351,INVALC,INVALC,INVALC,INVALC, 0x6951,0x7329,0x5060,0x6952,INVALC,0x5A63,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6252,INVALC,0x7622,0x6174, INVALC,INVALC,INVALC,0x5A64,INVALC,INVALC,INVALC,INVALC, INVALC,0x6755,0x753F,0x4F22,0x4D2F,0x4F23,INVALC,INVALC, INVALC,0x4D30,0x717E,0x5023,0x612F,0x7823,INVALC,0x4A26, 0x773B,0x726A,0x5E48,0x6953,INVALC,INVALC,INVALC,INVALC, 0x5E49,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 85, Array index 0x1700 */ INVALC,INVALC,INVALC,0x7D5E,0x4A40,INVALC,INVALC,INVALC, 0x796A,0x514E,0x6E54,INVALC,0x5452,0x5923,0x7D28,0x5759, 0x774E,0x7A3E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4F56,INVALC,0x5770,INVALC,0x6B61, 0x7845,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C7A,INVALC, INVALC,0x5D43,INVALC,0x795F,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x676F,INVALC,INVALC,INVALC,INVALC, 0x7D65,0x7623,INVALC,0x597C,0x7D29,INVALC,0x676E,INVALC, INVALC,INVALC,0x5565,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6F50,INVALC,0x4D31,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7722,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7132,INVALC,0x7131,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4D32,INVALC,0x5A2B,INVALC,0x4A27,INVALC,INVALC, INVALC,INVALC,INVALC,0x6362,0x7B3C,0x5924,INVALC,INVALC, 0x6E3A,INVALC,INVALC,INVALC,INVALC,INVALC,0x7853,INVALC, INVALC,INVALC,INVALC,INVALC,0x7B7A,INVALC,0x4F24,INVALC, 0x5C7B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7663,INVALC,INVALC,INVALC, 0x6D2A,INVALC,INVALC,0x7221,0x4E61,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7A26,INVALC,INVALC,INVALC,INVALC, 0x7960,INVALC,INVALC,INVALC,INVALC,0x6C56,INVALC,INVALC, 0x646E,0x7921,INVALC,INVALC,0x7B6F,INVALC,INVALC,INVALC, 0x796B,0x6E23,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6A2C,INVALC,INVALC,INVALC,0x4A28,INVALC,INVALC, 0x747A,INVALC,INVALC,INVALC,INVALC,0x4D56,0x7C76,INVALC, INVALC,INVALC,0x7449,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7854,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 86, Array index 0x1800 */ INVALC,INVALC,INVALC,INVALC,0x7826,INVALC,0x5E4A,0x7246, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x575A,INVALC, 0x5350,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5845,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6A66, INVALC,0x735D,INVALC,INVALC,INVALC,0x645A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7664,INVALC, INVALC,INVALC,INVALC,INVALC,0x7672,INVALC,0x5F42,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x597D, INVALC,INVALC,INVALC,0x4C76,INVALC,INVALC,0x533A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x642F,INVALC, INVALC,INVALC,INVALC,0x7961,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7026,INVALC,INVALC,INVALC, 0x4B53,INVALC,INVALC,INVALC,0x603C,INVALC,0x744A,0x547A, INVALC,0x7D2A,0x7962,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7437,0x7D42,0x7C30,INVALC,0x7D6C,0x4A62,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7D3D, INVALC,0x6A67,0x5F43,0x5152,0x4E62,INVALC,0x5324,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7D2B,INVALC,0x5F60, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7247,INVALC,INVALC,INVALC, INVALC,INVALC,0x6770,INVALC,0x506E,INVALC,INVALC,0x732A, INVALC,INVALC,INVALC,0x5E4B,0x7638,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6175,0x7133,INVALC, /* Block 87, Array index 0x1900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7723,INVALC, INVALC,0x4A29,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4F25,INVALC,INVALC,0x5F44, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6130, INVALC,INVALC,0x703F,INVALC,0x7624,INVALC,0x6336,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7A46,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x506F,INVALC,INVALC,0x7D6D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5D44,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7C77,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x663F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5E2D,INVALC,0x7A3F,INVALC, INVALC,INVALC,INVALC,INVALC,0x6571,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6D44,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5225,INVALC,INVALC,0x7D6E,INVALC,INVALC, INVALC,0x7536,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6176,0x5E4C,INVALC,INVALC,0x7C5E,INVALC, 0x6C57,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4D5D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5637,0x4D33,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 88, Array index 0x1A00 */ INVALC,INVALC,INVALC,0x7855,0x6558,INVALC,INVALC,INVALC, 0x4F6A,INVALC,INVALC,0x4F50,INVALC,0x6A4C,INVALC,INVALC, INVALC,INVALC,0x6A2E,0x6A2D,INVALC,INVALC,0x5371,INVALC, 0x5325,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x774F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6E24,INVALC,INVALC,INVALC,INVALC,0x5024,INVALC,INVALC, 0x7222,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5070,INVALC,INVALC,INVALC,INVALC, 0x7223,INVALC,0x7778,INVALC,INVALC,INVALC,INVALC,0x5033, INVALC,INVALC,0x5B29,INVALC,INVALC,0x533B,0x4A6C,INVALC, 0x7126,0x4B55,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7767,INVALC,INVALC,0x4D5E,INVALC,0x7724,INVALC, INVALC,INVALC,0x7840,INVALC,INVALC,INVALC,0x535D,INVALC, 0x4C50,INVALC,INVALC,INVALC,INVALC,0x4F26,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7673,INVALC,INVALC,INVALC, INVALC,INVALC,0x6177,INVALC,INVALC,INVALC,INVALC,INVALC, 0x535C,INVALC,INVALC,0x7A7E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7A27,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6B59,INVALC,0x4F27,0x6A2F,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x646F,INVALC,INVALC,INVALC,0x6939, 0x7158,INVALC,INVALC,0x5858,INVALC,INVALC,0x6072,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6634, 0x5C7C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7371,INVALC,INVALC,INVALC,0x6350,INVALC,INVALC,0x727B, INVALC,0x5B46,0x5071,INVALC,0x5072,INVALC,INVALC,INVALC, /* Block 89, Array index 0x1B00 */ 0x4F5C,INVALC,0x5351,INVALC,INVALC,0x4C31,0x7758,INVALC, 0x4B28,0x6B3C,0x643E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x745C,INVALC, INVALC,0x5C42,INVALC,INVALC,0x7027,INVALC,INVALC,0x6640, INVALC,INVALC,0x4A6D,INVALC,INVALC,INVALC,INVALC,0x686B, 0x6568,0x5C43,INVALC,INVALC,0x6D5E,0x5372,INVALC,INVALC, INVALC,INVALC,0x4C77,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4E54,0x672B,INVALC,INVALC,INVALC,0x4B43, INVALC,0x6131,INVALC,INVALC,0x7732,INVALC,INVALC,0x5373, 0x5352,INVALC,0x7540,INVALC,INVALC,INVALC,0x5F5D,INVALC, INVALC,0x6E73,0x6771,INVALC,0x7D34,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7248,INVALC,INVALC, INVALC,0x7352,INVALC,INVALC,0x6E74,INVALC,0x6253,INVALC, INVALC,INVALC,INVALC,0x4C51,INVALC,0x5F6A,INVALC,INVALC, INVALC,0x693A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5957,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x754D,INVALC,0x7172,0x7A47, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5978,0x5442,INVALC,INVALC,INVALC,INVALC,0x7665,INVALC, INVALC,INVALC,INVALC,0x5D45,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6772,0x6D5F,INVALC,INVALC,0x4A4B,INVALC, INVALC,0x5B7A,INVALC,INVALC,INVALC,0x6835,INVALC,0x5326, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7D35,INVALC, INVALC,0x7949,INVALC,0x6462,INVALC,0x7B3D,INVALC,INVALC, 0x5724,0x4E45,INVALC,INVALC,INVALC,INVALC,0x4E55,0x5666, INVALC,INVALC,INVALC,INVALC,0x653D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5E4D,0x6C73,INVALC,INVALC,0x6D60, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6C6C,0x7B3E,0x5F6B,INVALC,0x6178,INVALC,INVALC, /* Block 90, Array index 0x1C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x793E, INVALC,INVALC,INVALC,INVALC,0x5073,0x602A,0x6862,INVALC, INVALC,0x6254,0x527D,INVALC,0x6528,INVALC,INVALC,INVALC, INVALC,INVALC,0x5953,INVALC,INVALC,INVALC,INVALC,0x535E, INVALC,0x7438,0x773C,0x5C7D,INVALC,0x686C,0x6467,INVALC, INVALC,0x6377,INVALC,INVALC,INVALC,INVALC,INVALC,0x6C28, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7A71,INVALC, INVALC,INVALC,INVALC,INVALC,0x6572,INVALC,INVALC,0x5074, 0x522F,0x5C65,INVALC,INVALC,INVALC,INVALC,0x5025,0x7134, 0x7C31,0x4C78,INVALC,INVALC,0x5D46,0x7A51,INVALC,0x775F, INVALC,INVALC,0x7A28,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6E75,INVALC,0x5E4E,INVALC,INVALC,INVALC,INVALC,0x6773, INVALC,INVALC,0x772C,0x6B44,0x6D61,0x602B,0x5D47,INVALC, INVALC,INVALC,INVALC,0x5233,0x523F,INVALC,INVALC,INVALC, 0x4A4C,INVALC,INVALC,INVALC,INVALC,0x7B3F,INVALC,INVALC, INVALC,INVALC,0x657D,0x5D65,0x584D,INVALC,INVALC,INVALC, INVALC,INVALC,0x6C74,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5075,INVALC,INVALC,0x686D,0x5052, INVALC,0x5958,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7666,INVALC,INVALC, 0x5B2A,INVALC,INVALC,INVALC,0x7760,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5859,INVALC,0x7423,INVALC,INVALC,0x745D,INVALC, INVALC,INVALC,INVALC,0x6F51,INVALC,INVALC,0x5935,INVALC, INVALC,0x6D2B,INVALC,0x6337,INVALC,INVALC,INVALC,INVALC, 0x6E3B,0x4D34,INVALC,0x6073,0x6A4D,INVALC,INVALC,INVALC, INVALC,0x6C75,0x686E,INVALC,0x4B29,0x712F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A4D,INVALC, 0x6C29,INVALC,0x726B,INVALC,0x7D6F,INVALC,0x7973,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6641,INVALC,INVALC,0x6C58,INVALC,INVALC,INVALC,0x6D2C, /* Block 91, Array index 0x1D00 */ INVALC,0x6A4E,INVALC,0x685F,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5E4F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5226,INVALC,INVALC,0x6774,0x5156,INVALC,INVALC,0x6642, 0x6363,INVALC,INVALC,INVALC,INVALC,0x6430,INVALC,INVALC, INVALC,0x5834,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7625,INVALC, INVALC,INVALC,INVALC,INVALC,0x735E,INVALC,INVALC,INVALC, INVALC,0x5725,INVALC,INVALC,INVALC,INVALC,0x7768,INVALC, INVALC,0x6846,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7B66,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5D66,INVALC,INVALC,INVALC,0x5C7E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x585A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5A2C,0x6A30,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6338,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4A2A,0x6179,INVALC,0x6A31,INVALC,INVALC,INVALC, INVALC,0x726C,INVALC,INVALC,0x7A6E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6E55,INVALC,INVALC,INVALC,INVALC,0x7974,INVALC, INVALC,0x526C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 92, Array index 0x1E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,0x7B7B,INVALC,INVALC, INVALC,0x7D70,INVALC,0x603D,0x4E63,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7846,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5E2E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5F45,INVALC,INVALC,0x653E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6D2D,0x7A6A,INVALC,INVALC,0x4D6E,0x6D26,INVALC,0x6D2E, 0x706D,INVALC,0x5D21,INVALC,0x6D2F,0x7C78,INVALC,0x586B, INVALC,INVALC,INVALC,0x4C79,0x4D35,INVALC,INVALC,INVALC, INVALC,0x7A29,INVALC,0x615D,INVALC,INVALC,INVALC,INVALC, 0x6255,0x6D4F,INVALC,INVALC,INVALC,0x5D22,INVALC,INVALC, 0x794A,INVALC,0x6A68,INVALC,0x656D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x536B,INVALC,0x6954, 0x617A,0x644C,INVALC,0x6164,0x6847,INVALC,INVALC,0x4E5B, INVALC,INVALC,INVALC,0x5C55,INVALC,0x7735,0x7C73,0x7073, 0x4E2F,0x7135,0x6F52,0x6848,0x6B71,INVALC,INVALC,INVALC, INVALC,INVALC,0x4B54,0x603E,0x6378,0x6A69,0x7C32,INVALC, INVALC,INVALC,INVALC,INVALC,0x6074,INVALC,0x4F60,INVALC, 0x6E25,INVALC,INVALC,0x7A2A,0x6643,0x6132,0x4A2B,INVALC, 0x6364,0x693B,INVALC,INVALC,INVALC,INVALC,INVALC,0x6256, 0x7372,INVALC,0x6E56,0x6A32,0x5076,0x6C59,0x5A4B,0x4F28, INVALC,INVALC,INVALC,INVALC,0x5D23,INVALC,INVALC,INVALC, 0x585B,INVALC,0x794E,0x6955,0x6351,INVALC,INVALC,0x523C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x582C,0x734C, INVALC,0x4D7B,0x7656,INVALC,0x6775,0x686F,0x6379,0x523B, 0x7373,0x637B,INVALC,0x5E50,0x4E30,INVALC,0x5677,0x7159, INVALC,INVALC,INVALC,INVALC,INVALC,0x7541,0x5C44,INVALC, 0x753B,INVALC,0x5E51,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 93, Array index 0x1F00 */ INVALC,0x5C66,INVALC,INVALC,0x5E52,INVALC,INVALC,0x6D62, 0x6E76,0x6A4F,0x706E,0x637C,INVALC,0x535F,0x5374,0x6133, INVALC,0x6134,INVALC,INVALC,INVALC,INVALC,0x7453,INVALC, INVALC,0x5F46,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6956,INVALC,INVALC,INVALC, 0x5B2B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7626,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6339,0x6B45,0x7429,0x4D36,0x5279,INVALC,0x5A2D,0x5263, 0x4F51,INVALC,INVALC,INVALC,INVALC,0x4B5C,0x4C7A,INVALC, 0x4F5D,INVALC,INVALC,0x6829,INVALC,0x633B,0x633A,INVALC, INVALC,0x605A,INVALC,INVALC,INVALC,0x6E77,INVALC,INVALC, INVALC,INVALC,INVALC,0x5C33,INVALC,INVALC,INVALC,INVALC, 0x5375,INVALC,0x5726,INVALC,0x7635,0x575B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6155,INVALC,INVALC,0x546A, INVALC,0x5F23,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7D5F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5077,0x6D54,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4B2A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x645B,INVALC,0x617B,0x4B22,INVALC,INVALC,INVALC, INVALC,0x5360,INVALC,0x643F,INVALC,0x7B40,INVALC,0x5A3E, 0x644D,INVALC,0x5639,INVALC,INVALC,INVALC,0x6F40,INVALC, 0x617C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7639,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5F47,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6431,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C67, 0x5C68,INVALC,INVALC,INVALC,0x7A56,INVALC,0x5376,INVALC, INVALC,INVALC,INVALC,0x715A,INVALC,0x7A72,INVALC,INVALC, /* Block 94, Array index 0x2000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x627D, INVALC,INVALC,INVALC,INVALC,INVALC,0x554F,0x5078,INVALC, INVALC,0x4D5F,INVALC,INVALC,0x754B,INVALC,0x6470,0x4B2B, INVALC,0x5744,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x627E, INVALC,0x5D5A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5A2E,0x4A6E,INVALC,INVALC,INVALC, 0x5539,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6321,INVALC,INVALC,0x6863,INVALC,INVALC,0x732B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4F29, INVALC,INVALC,INVALC,0x5377,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5471,INVALC,INVALC, 0x4E64,INVALC,0x6872,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6575,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x672E,INVALC,0x563A,INVALC,0x5F6C,0x6440,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6864,INVALC,INVALC, INVALC,INVALC,0x5835,INVALC,INVALC,INVALC,0x645C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7439,0x7136,INVALC, INVALC,0x625E,0x6135,INVALC,INVALC,0x4D6F,0x7127,0x4E65, 0x4B5D,INVALC,INVALC,0x5963,INVALC,INVALC,0x732C,INVALC, INVALC,0x5079,0x6C2B,0x5E53,0x7769,INVALC,INVALC,0x7975, INVALC,INVALC,INVALC,INVALC,INVALC,0x615E,0x4B6E,INVALC, /* Block 95, Array index 0x2100 */ INVALC,INVALC,0x633C,0x7856,INVALC,INVALC,0x5B6E,INVALC, INVALC,INVALC,INVALC,INVALC,0x7D71,INVALC,INVALC,INVALC, INVALC,0x7736,INVALC,INVALC,INVALC,INVALC,0x745E,INVALC, INVALC,0x726D,INVALC,0x5B59,INVALC,0x7028,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x617D,INVALC,INVALC, INVALC,INVALC,INVALC,0x5E54,INVALC,0x602C,INVALC,INVALC, INVALC,INVALC,INVALC,0x6D63,INVALC,INVALC,0x5361,INVALC, 0x5F48,INVALC,INVALC,INVALC,INVALC,0x5936,INVALC,0x7D2C, 0x6F53,INVALC,INVALC,INVALC,0x6441,0x786B,INVALC,0x5B2C, INVALC,INVALC,INVALC,INVALC,0x7C46,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x582D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x763A, INVALC,0x5B5F,0x5353,0x7847,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4A4E,0x7841,0x5234,INVALC,INVALC,0x5C34, 0x7A39,0x4A4F,INVALC,0x7C33,0x6A6A,0x6A6B,0x507A,INVALC, INVALC,INVALC,INVALC,INVALC,0x6D64,INVALC,INVALC,0x5D67, INVALC,INVALC,0x5F49,INVALC,INVALC,INVALC,INVALC,0x5F6D, INVALC,INVALC,INVALC,INVALC,INVALC,0x6E3C,INVALC,0x6F41, INVALC,INVALC,0x4C52,INVALC,0x5D24,INVALC,INVALC,INVALC, 0x5F4A,INVALC,INVALC,INVALC,INVALC,INVALC,0x5378,0x7128, INVALC,INVALC,INVALC,0x4D37,INVALC,0x6F54,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x645D,0x5F6E,0x4B2C, 0x693C,INVALC,INVALC,INVALC,INVALC,INVALC,0x6A6C,INVALC, INVALC,INVALC,0x5F4B,INVALC,INVALC,INVALC,INVALC,INVALC, 0x793F,0x562F,0x5546,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4F2A,INVALC,INVALC,0x4E29,INVALC,INVALC,0x5678,INVALC, INVALC,INVALC,0x7137,0x6E78,INVALC,INVALC,INVALC,0x5959, 0x735F,INVALC,0x7848,0x4E46,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5566,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7466,INVALC,INVALC,0x6645,0x6F55, INVALC,INVALC,0x4B6F,0x7C5F,INVALC,INVALC,INVALC,INVALC, /* Block 96, Array index 0x2200 */ INVALC,0x5C27,INVALC,INVALC,0x5667,INVALC,INVALC,INVALC, INVALC,INVALC,0x7849,INVALC,INVALC,INVALC,INVALC,0x6352, INVALC,0x633D,INVALC,0x4F61,0x7040,0x6C5A,INVALC,0x5D57, 0x7B70,INVALC,INVALC,0x6C2C,INVALC,INVALC,INVALC,0x7029, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7A57,0x7B41, INVALC,0x5240,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6530,INVALC,INVALC,INVALC,0x6D65,INVALC,INVALC, INVALC,INVALC,0x4B2D,INVALC,0x7930,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7725,INVALC,0x4B2E,INVALC,0x5A2F,INVALC,0x5836,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5327,0x7B32, INVALC,0x7D44,INVALC,0x6C2D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7B21,INVALC,INVALC,INVALC,0x6569,0x696E, INVALC,0x7374,0x7873,0x7041,0x5E2F,0x7830,INVALC,INVALC, 0x7360,0x672F,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B2D, INVALC,0x6635,INVALC,INVALC,0x7928,INVALC,INVALC,0x5D58, 0x6859,0x6F56,INVALC,INVALC,INVALC,0x5362,INVALC,0x625F, INVALC,INVALC,0x7C60,0x5748,0x7D2D,INVALC,INVALC,INVALC, 0x5F6F,0x4C53,0x5379,INVALC,INVALC,INVALC,INVALC,0x5470, 0x5B47,0x5E55,INVALC,INVALC,INVALC,INVALC,0x7074,INVALC, 0x5550,0x6559,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7C47,0x5C56,0x6260,INVALC,INVALC,INVALC,0x5A30,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7323,INVALC,0x536C, INVALC,0x744B,INVALC,INVALC,INVALC,0x7D45,INVALC,INVALC, INVALC,INVALC,INVALC,0x637D,INVALC,0x7931,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x507B,0x6C5B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x753C,0x7224, 0x584E,0x584F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7577,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7661,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5237,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7B6C,INVALC,0x5D48, /* Block 97, Array index 0x2300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6468, INVALC,INVALC,0x5241,INVALC,INVALC,INVALC,0x7857,INVALC, INVALC,INVALC,INVALC,INVALC,0x563B,0x5E56,INVALC,INVALC, 0x773D,0x6C2E,INVALC,INVALC,INVALC,0x5061,INVALC,0x6075, 0x6A33,INVALC,0x4E56,INVALC,INVALC,INVALC,INVALC,0x4C25, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6C76,0x6261,0x633E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7C48,INVALC,INVALC, 0x4D70,INVALC,0x7976,INVALC,INVALC,0x5F70,INVALC,INVALC, INVALC,0x653F,INVALC,INVALC,INVALC,0x4E3F,INVALC,INVALC, INVALC,INVALC,0x7C61,0x6D30,0x7D51,0x763B,INVALC,INVALC, 0x794F,0x6B5A,0x4A41,INVALC,0x5238,0x4D71,INVALC,0x6353, 0x7D66,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x666D,INVALC,INVALC, INVALC,0x637A,INVALC,INVALC,0x702A,0x7950,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7C62,INVALC,0x7827,INVALC, INVALC,INVALC,0x6165,0x6E79,INVALC,INVALC,INVALC,0x6776, 0x6A6D,INVALC,INVALC,0x7C34,0x7542,INVALC,INVALC,0x575C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7075,INVALC,0x5D68,0x536D,0x757C,INVALC,0x5A3F,INVALC, 0x4C7B,INVALC,INVALC,INVALC,0x537A,0x7424,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6F57,INVALC,0x5443, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7B63,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7B6D,INVALC,0x602D,INVALC,INVALC,0x6A6E, 0x7B33,0x6442,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7667,0x525D,INVALC,0x5F4C,INVALC,INVALC,0x7C49,INVALC, INVALC,0x6529,0x6076,0x7633,INVALC,INVALC,INVALC,INVALC, /* Block 98, Array index 0x2400 */ INVALC,0x617E,INVALC,INVALC,INVALC,INVALC,0x4B70,INVALC, 0x6A6F,0x6A70,INVALC,INVALC,INVALC,0x5A40,0x7834,0x6B72, INVALC,INVALC,INVALC,INVALC,INVALC,0x6443,INVALC,INVALC, INVALC,INVALC,0x6957,0x6471,INVALC,INVALC,INVALC,0x4A6F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4E57, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7C4A,INVALC,INVALC,INVALC,0x7361,INVALC,INVALC,0x4B44, INVALC,INVALC,INVALC,INVALC,0x6365,INVALC,0x4B45,0x6A34, INVALC,INVALC,0x693D,INVALC,0x5749,INVALC,INVALC,0x6B5B, 0x6D31,INVALC,0x4C43,0x773E,0x7C4B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7874,INVALC,0x5937,INVALC,INVALC, 0x7353,0x7354,INVALC,INVALC,INVALC,0x7764,INVALC,0x7751, INVALC,INVALC,0x5837,0x4E31,0x4A42,INVALC,INVALC,0x7B34, 0x4B46,INVALC,INVALC,0x7076,INVALC,INVALC,0x5567,INVALC, 0x6A50,INVALC,INVALC,INVALC,INVALC,INVALC,0x4C54,0x4B2F, INVALC,INVALC,INVALC,INVALC,INVALC,0x742A,0x692F,INVALC, INVALC,0x7543,0x6958,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5D69,INVALC,INVALC,INVALC,0x7173,INVALC, 0x557B,0x5E3B,INVALC,INVALC,0x747B,INVALC,INVALC,INVALC, 0x7D73,0x7D72,0x7726,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5D49,INVALC,INVALC,0x5453, INVALC,0x4C28,INVALC,0x5A41,0x4C55,INVALC,0x5964,INVALC, INVALC,INVALC,0x7A4A,INVALC,INVALC,INVALC,0x6563,INVALC, INVALC,INVALC,0x533C,INVALC,INVALC,INVALC,0x4A70,INVALC, INVALC,INVALC,INVALC,0x5044,INVALC,INVALC,INVALC,0x4A50, 0x7A2B,0x6B6B,0x6778,0x5965,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5157,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7324,INVALC,INVALC,INVALC,0x547B,0x7C63, 0x7A58,INVALC,0x7355,INVALC,0x4F2B,INVALC,INVALC,0x6B73, /* Block 99, Array index 0x2500 */ 0x557C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5354, 0x4D7C,INVALC,0x5966,INVALC,0x6279,0x6221,0x6B54,INVALC, 0x6077,0x6432,0x4C7C,INVALC,INVALC,INVALC,0x7B64,INVALC, INVALC,INVALC,0x742B,INVALC,INVALC,INVALC,INVALC,0x503D, INVALC,0x4A71,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6F38,INVALC,INVALC,INVALC,0x5740,INVALC, 0x6E7A,0x7D74,INVALC,INVALC,0x5363,INVALC,0x7B42,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5568,0x5B2E, 0x6136,0x7837,INVALC,INVALC,INVALC,INVALC,INVALC,0x603F, 0x7B43,0x5D6A,INVALC,0x6222,INVALC,0x6E26,INVALC,INVALC, INVALC,INVALC,INVALC,0x7668,INVALC,INVALC,INVALC,INVALC, 0x7675,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5D4A,INVALC, INVALC,0x5062,INVALC,INVALC,INVALC,INVALC,0x5D26,INVALC, INVALC,0x5D6B,INVALC,INVALC,0x6479,INVALC,INVALC,0x632F, 0x507C,INVALC,INVALC,INVALC,0x747C,INVALC,INVALC,INVALC, INVALC,0x4C3C,0x776A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6564,0x5F71,INVALC,INVALC,0x7761,INVALC,0x7977, 0x6F39,INVALC,INVALC,0x7858,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7929,INVALC,INVALC,INVALC,INVALC, INVALC,0x7859,INVALC,INVALC,INVALC,0x6E3D,INVALC,INVALC, INVALC,0x5846,INVALC,INVALC,0x6463,0x754E,INVALC,INVALC, INVALC,INVALC,0x5D59,INVALC,INVALC,INVALC,INVALC,0x5967, 0x5239,0x5543,INVALC,INVALC,0x5A65,0x5A50,INVALC,0x5159, 0x4E58,INVALC,0x4B5E,0x742C,0x5A7B,INVALC,0x7669,0x6873, 0x4F2C,0x7070,INVALC,0x747D,0x5B48,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4E40,0x6354,0x514F,0x7175, INVALC,0x4D72,INVALC,0x4F6B,INVALC,INVALC,INVALC,0x4D38, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6326,0x515A, /* Block 100, Array index 0x2600 */ INVALC,0x7225,INVALC,INVALC,INVALC,INVALC,INVALC,0x7226, INVALC,0x644E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x537B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7129,INVALC,INVALC,INVALC,0x7249, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6F58,0x6649,INVALC,0x5838,0x7A73,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7335,INVALC,INVALC,0x7824,INVALC,INVALC,0x5173, 0x6648,INVALC,INVALC,INVALC,INVALC,0x785A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C69, 0x5E57,INVALC,INVALC,INVALC,INVALC,INVALC,0x4B5F,INVALC, INVALC,INVALC,0x4F6C,INVALC,INVALC,INVALC,INVALC,0x745F, INVALC,INVALC,0x5174,0x523A,INVALC,INVALC,INVALC,0x5F72, INVALC,INVALC,INVALC,0x6137,INVALC,INVALC,INVALC,INVALC, 0x6223,0x537C,INVALC,INVALC,0x6D66,INVALC,INVALC,INVALC, INVALC,INVALC,0x5B49,INVALC,INVALC,INVALC,0x647A,INVALC, 0x4F5E,INVALC,INVALC,0x4E50,INVALC,INVALC,INVALC,INVALC, 0x5553,0x7375,0x772E,INVALC,INVALC,0x6F48,INVALC,0x4D73, 0x754F,0x6573,0x7042,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4A51,INVALC,INVALC,INVALC,0x6A71,INVALC,0x5026,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x595A, 0x702B,INVALC,INVALC,INVALC,INVALC,INVALC,0x6B67,INVALC, INVALC,INVALC,0x6540,0x7C35,INVALC,INVALC,INVALC,INVALC, INVALC,0x6444,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4C29,0x7D46,INVALC, INVALC,INVALC,INVALC,INVALC,0x6A35,INVALC,0x652A,0x5F3A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 101, Array index 0x2700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x615F,INVALC,0x5A51, INVALC,INVALC,INVALC,INVALC,0x6138,INVALC,0x6874,0x537D, INVALC,INVALC,INVALC,INVALC,0x6224,INVALC,INVALC,INVALC, INVALC,INVALC,0x724A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5A66,0x7733,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7D4D,INVALC,INVALC,INVALC,0x7336,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6E57,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7544,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5824,INVALC,INVALC,INVALC,INVALC,INVALC,0x7227, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5938,0x5939,0x6F49,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x564E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x774B,0x5F2E,0x6875,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5235,INVALC,INVALC,INVALC,0x5355,INVALC, INVALC,INVALC,INVALC,INVALC,0x744C,0x5A7C,INVALC,INVALC, INVALC,INVALC,INVALC,0x5968,INVALC,0x776B,0x7549,INVALC, 0x733C,INVALC,0x5A52,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5335,INVALC,INVALC,INVALC,INVALC, INVALC,0x6836,INVALC,INVALC,0x564F,0x743A,INVALC,0x7749, INVALC,INVALC,0x4C2A,INVALC,INVALC,0x7043,0x4C56,INVALC, INVALC,INVALC,0x5053,INVALC,0x533D,INVALC,INVALC,INVALC, 0x5B7B,INVALC,0x4B60,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5364,0x7677,INVALC,INVALC,0x553A,0x734D,0x4B61, INVALC,INVALC,INVALC,INVALC,0x6B74,INVALC,INVALC,INVALC, INVALC,INVALC,0x742D,INVALC,0x7C2A,INVALC,INVALC,INVALC, INVALC,INVALC,0x776C,INVALC,INVALC,INVALC,0x6876,INVALC, /* Block 102, Array index 0x2800 */ 0x5A67,INVALC,INVALC,INVALC,0x774C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6541,INVALC,INVALC,INVALC,INVALC,0x606E,INVALC,INVALC, INVALC,INVALC,INVALC,0x557D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4E66,0x7C2B,0x553B,INVALC,INVALC,0x7228, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6225,0x4D39, 0x6A72,0x4B47,INVALC,0x4D74,INVALC,INVALC,0x5B2F,0x6F59, INVALC,INVALC,INVALC,INVALC,INVALC,0x4D3A,INVALC,INVALC, 0x7C79,INVALC,INVALC,INVALC,INVALC,0x5F73,0x4E67,0x5A42, INVALC,0x4F2D,INVALC,INVALC,INVALC,INVALC,0x6779,0x7828, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7362,INVALC, INVALC,INVALC,0x4A72,0x5F24,INVALC,INVALC,0x5444,INVALC, INVALC,INVALC,INVALC,INVALC,0x4C57,0x6542,INVALC,INVALC, INVALC,INVALC,0x4D3B,INVALC,0x6F5A,0x6E58,INVALC,0x5D27, 0x6226,INVALC,INVALC,INVALC,INVALC,INVALC,0x6040,INVALC, INVALC,INVALC,0x5630,0x784A,INVALC,0x7C7A,INVALC,0x597E, INVALC,INVALC,INVALC,INVALC,0x5E30,INVALC,INVALC,INVALC, 0x5D6C,0x5A68,INVALC,INVALC,INVALC,INVALC,INVALC,0x5460, INVALC,0x5679,INVALC,0x4D57,0x5E58,INVALC,INVALC,0x7278, INVALC,0x6456,INVALC,INVALC,0x5045,0x742E,INVALC,0x5D28, INVALC,INVALC,INVALC,0x6D45,0x7356,INVALC,INVALC,0x5E59, 0x6366,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5328, INVALC,0x5B30,INVALC,INVALC,0x655A,0x633F,INVALC,INVALC, INVALC,0x5B31,INVALC,INVALC,INVALC,0x5569,INVALC,INVALC, INVALC,INVALC,INVALC,0x6041,0x6F5B,INVALC,INVALC,0x7069, INVALC,INVALC,0x5732,INVALC,INVALC,INVALC,INVALC,0x507D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5969,INVALC,INVALC,0x507E,INVALC,0x6C6D,0x5329,INVALC, 0x7229,0x7044,INVALC,INVALC,0x6262,0x696F,INVALC,INVALC, INVALC,0x7951,INVALC,INVALC,0x6959,INVALC,INVALC,INVALC, INVALC,INVALC,0x685A,0x5A43,0x5A44,0x5445,INVALC,0x677A, /* Block 103, Array index 0x2900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4D60,0x6330, INVALC,0x5B32,0x7B44,INVALC,0x7363,INVALC,0x5925,0x7B67, 0x5D4B,0x5054,INVALC,0x6636,0x602E,0x7D5A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C35,0x6078, 0x6731,INVALC,INVALC,INVALC,INVALC,0x7570,INVALC,0x585C, 0x6D46,INVALC,INVALC,INVALC,INVALC,0x6139,INVALC,0x6340, 0x7940,0x6970,INVALC,INVALC,0x595B,INVALC,0x7364,INVALC, INVALC,INVALC,0x5C36,0x6469,INVALC,INVALC,INVALC,INVALC, INVALC,0x7045,0x6341,0x7C4C,0x7C4D,INVALC,INVALC,INVALC, INVALC,0x724B,INVALC,0x724C,INVALC,INVALC,INVALC,0x644F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x715B,INVALC,0x7A59,INVALC,0x7138,0x7D75,0x6079, INVALC,INVALC,INVALC,INVALC,0x677B,0x7C37,0x7C64,0x7B45, 0x6367,0x5839,INVALC,0x7678,INVALC,INVALC,0x5C45,0x4C58, INVALC,INVALC,INVALC,0x602F,0x7467,INVALC,0x6F5C,0x4F7C, 0x6F5D,INVALC,0x722A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7D3E,INVALC,INVALC,0x4A2C, 0x7D3B,0x7D47,INVALC,INVALC,INVALC,INVALC,0x6732,INVALC, 0x6A51,0x5F74,INVALC,INVALC,INVALC,INVALC,0x516C,0x645E, 0x6543,INVALC,INVALC,INVALC,INVALC,0x5926,INVALC,INVALC, 0x4D3C,INVALC,0x7365,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6D55,INVALC,INVALC,0x593A,INVALC, INVALC,INVALC,0x6D67,0x7B35,0x786C,INVALC,INVALC,INVALC, INVALC,0x6067,INVALC,0x4C59,INVALC,INVALC,0x5446,INVALC, INVALC,INVALC,INVALC,INVALC,0x6725,INVALC,0x5575,0x533E, INVALC,0x7C7B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6472,INVALC, INVALC,0x5F75,INVALC,INVALC,0x6878,0x786D,INVALC,INVALC, 0x4E47,INVALC,INVALC,INVALC,INVALC,INVALC,0x7D76,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6858,INVALC,0x4D58,0x6756,0x4C5A,INVALC,INVALC,0x4A63, 0x5F76,0x7047,0x7046,INVALC,0x583A,INVALC,0x7174,0x7470, /* Block 104, Array index 0x2A00 */ 0x754C,INVALC,INVALC,0x7C65,INVALC,INVALC,INVALC,INVALC, 0x6A45,0x6A73,INVALC,0x5D5B,INVALC,0x5C57,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5E7D,0x7279,INVALC,0x5547, INVALC,INVALC,INVALC,0x5850,INVALC,0x7048,0x5121,0x5122, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5954,0x5668, 0x594A,INVALC,0x5A31,0x5847,0x5C62,0x734E,0x7574,INVALC, INVALC,0x7139,INVALC,INVALC,0x5A53,INVALC,0x766A,INVALC, INVALC,INVALC,0x4F75,INVALC,INVALC,0x7D2E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A52,INVALC, INVALC,0x5F34,INVALC,INVALC,INVALC,INVALC,0x575D,0x7A3A, 0x6E27,0x753D,INVALC,0x7875,INVALC,INVALC,0x6D68,INVALC, INVALC,INVALC,INVALC,INVALC,0x5461,INVALC,0x5123,0x6156, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7978,INVALC,0x5B4A, 0x4B79,0x5454,INVALC,0x595C,INVALC,0x6E3E,INVALC,0x776D, INVALC,INVALC,INVALC,0x526E,INVALC,INVALC,0x6166,0x7779, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5D6D, INVALC,0x685B,INVALC,0x5B33,INVALC,INVALC,INVALC,0x5177, 0x6030,INVALC,INVALC,0x5462,INVALC,0x7657,INVALC,0x5779, INVALC,INVALC,0x585D,INVALC,0x4D7D,0x722B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4D3D, 0x7842,INVALC,INVALC,0x722C,INVALC,INVALC,0x4A2D,0x4A2E, 0x4F2E,INVALC,INVALC,INVALC,INVALC,INVALC,0x6342,INVALC, INVALC,INVALC,INVALC,INVALC,0x5C37,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B5A, 0x593B,0x4A73,0x7653,0x6678,0x6A75,INVALC,INVALC,INVALC, INVALC,INVALC,0x6A76,INVALC,INVALC,0x7679,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4F2F,INVALC,INVALC,0x4A53,INVALC,INVALC,0x4A2F, 0x5230,0x713A,INVALC,0x5733,0x6343,0x737D,0x5E5A,INVALC, INVALC,INVALC,INVALC,0x5E5B,INVALC,INVALC,0x6F5E,INVALC, /* Block 105, Array index 0x2B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6263,0x6E7B,INVALC,INVALC,0x5F77,0x574A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4E68,0x5B5B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x713B,INVALC,INVALC,INVALC,INVALC,0x6971, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7A37,0x5046,INVALC,INVALC,0x4C2B,0x6E28,INVALC,INVALC, 0x4B7A,0x7979,0x4C7D,0x537E,INVALC,INVALC,INVALC,INVALC, 0x6450,INVALC,INVALC,INVALC,INVALC,INVALC,0x726E,INVALC, 0x5455,0x5F4D,INVALC,0x7C38,0x5150,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x724D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7752,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A54, INVALC,0x5559,INVALC,INVALC,INVALC,0x585E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4D59, INVALC,INVALC,INVALC,0x6E29,0x763C,INVALC,INVALC,0x4C5B, INVALC,INVALC,INVALC,INVALC,INVALC,0x7049,INVALC,0x7C7C, INVALC,0x6849,0x747E,INVALC,INVALC,INVALC,INVALC,0x677C, 0x575E,INVALC,INVALC,INVALC,INVALC,0x5E5C,INVALC,0x702C, 0x4C7E,0x4D61,INVALC,0x613A,INVALC,0x5B6F,0x5A32,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5125,0x5C38,INVALC,INVALC, INVALC,0x5876,INVALC,0x5124,INVALC,0x4D62,INVALC,INVALC, INVALC,INVALC,0x5C6A,INVALC,INVALC,0x7077,INVALC,0x704A, 0x503E,INVALC,0x5D5C,INVALC,INVALC,INVALC,INVALC,0x5456, 0x5356,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6D50, 0x4D21,INVALC,INVALC,INVALC,INVALC,INVALC,0x5F35,INVALC, INVALC,INVALC,0x5F78,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5421,0x4E32,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 106, Array index 0x2C00 */ 0x684A,INVALC,INVALC,INVALC,INVALC,0x6B75,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6355,0x7550,INVALC, INVALC,INVALC,0x7521,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5927, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x652B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x664B,INVALC,0x7571, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6545,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7923,0x605B,0x766B,INVALC,0x4B71, INVALC,0x596A,0x7522,INVALC,INVALC,INVALC,0x5751,INVALC, 0x5178,0x6A78,0x6A79,0x5A33,INVALC,INVALC,INVALC,INVALC, 0x6F5F,INVALC,INVALC,0x716F,INVALC,0x6576,0x6E3F,0x6264, INVALC,INVALC,INVALC,INVALC,INVALC,0x503F,INVALC,0x7A2C, 0x7551,0x6733,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x693E,INVALC,INVALC, INVALC,INVALC,INVALC,0x724E,0x5B34,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7C4E,INVALC,0x5D6E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6734,INVALC, INVALC,INVALC,INVALC,INVALC,0x5734,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7734,INVALC,INVALC,INVALC,INVALC, INVALC,0x4D3E,INVALC,0x5A69,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4F30,0x7759,0x7366,INVALC,INVALC, 0x4E59,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4E2A,INVALC,0x4B48,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5027,INVALC,0x704B,INVALC,0x5047, /* Block 107, Array index 0x2D00 */ INVALC,INVALC,0x6445,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5B60,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x555A,INVALC,0x5727,INVALC,INVALC,INVALC,0x6E40, INVALC,0x7876,INVALC,INVALC,INVALC,INVALC,0x7552,0x6D69, INVALC,0x593C,INVALC,0x6546,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7523,INVALC,INVALC, 0x5A54,0x6227,0x7B7C,INVALC,INVALC,0x715C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4A74,INVALC,INVALC,INVALC, 0x687A,INVALC,INVALC,0x4E69,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6978,0x6265,INVALC,INVALC,INVALC,INVALC, 0x5039,0x5472,INVALC,INVALC,INVALC,INVALC,INVALC,0x5126, INVALC,0x5F4E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7C74,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x532A,INVALC,INVALC,INVALC,0x4C2C,INVALC,INVALC,INVALC, INVALC,0x6F60,INVALC,INVALC,INVALC,0x6565,0x5055,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B7C, INVALC,INVALC,INVALC,INVALC,0x7C66,INVALC,INVALC,INVALC, INVALC,INVALC,0x4B7E,0x6D6A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5E31,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7963,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5422,0x4F76,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5650,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x556A,0x716E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7A4B,INVALC, INVALC,INVALC,INVALC,0x6521,INVALC,INVALC,INVALC,INVALC, /* Block 108, Array index 0x2E00 */ INVALC,INVALC,INVALC,INVALC,0x5531,INVALC,INVALC,INVALC, INVALC,INVALC,0x4F6D,INVALC,0x6D6B,INVALC,INVALC,INVALC, INVALC,INVALC,0x5532,INVALC,INVALC,INVALC,0x553C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7D62,0x732D,INVALC,0x7D5B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6930,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5127,INVALC,INVALC,0x7D63,0x4E33,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7D64,0x7A4E, INVALC,INVALC,INVALC,INVALC,0x4A30,INVALC,0x7727,INVALC, 0x4F31,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6622, INVALC,0x7C36,0x722D,0x6F61,0x732E,0x5C46,0x596B,INVALC, INVALC,INVALC,0x6860,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6128,INVALC,INVALC,INVALC,INVALC,0x5576, 0x4F7D,INVALC,INVALC,0x5E5D,INVALC,INVALC,INVALC,0x5951, INVALC,INVALC,INVALC,0x646A,0x724F,INVALC,0x773F,INVALC, INVALC,0x6266,0x6228,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6356,INVALC, 0x6D51,INVALC,INVALC,INVALC,INVALC,INVALC,0x6979,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5631,0x5E32, INVALC,INVALC,0x6068,INVALC,INVALC,0x532B,INVALC,0x6B5C, INVALC,INVALC,0x5F2F,INVALC,0x4A43,INVALC,INVALC,0x6E7C, INVALC,0x7D43,INVALC,INVALC,INVALC,0x6B76,0x4F32,INVALC, INVALC,INVALC,INVALC,0x596C,INVALC,0x593D,INVALC,0x585F, INVALC,INVALC,0x5438,0x6B3E,0x5D6F,INVALC,0x5D70,0x5D71, 0x5D72,INVALC,INVALC,0x593E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7B46,0x4F33,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 109, Array index 0x2F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6E7D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x642B, INVALC,0x5A45,INVALC,0x586C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5128,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6229,INVALC,INVALC,0x5E3C, 0x6735,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B70,INVALC, 0x6F62,0x7170,0x4F34,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B71,INVALC, 0x6031,INVALC,INVALC,INVALC,INVALC,0x5F25,INVALC,0x7952, INVALC,INVALC,0x677D,INVALC,INVALC,0x6623,0x7B71,0x4B30, 0x722E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4D67,INVALC,0x685C,INVALC,INVALC,0x6757,INVALC,INVALC, 0x7740,INVALC,0x5063,INVALC,INVALC,INVALC,0x5A21,INVALC, INVALC,INVALC,0x4C3D,INVALC,INVALC,0x5129,0x5D4C,INVALC, INVALC,0x637E,0x512A,0x682A,INVALC,0x6A36,0x797A,0x664C, 0x7658,INVALC,INVALC,INVALC,0x5447,INVALC,INVALC,INVALC, 0x594B,INVALC,0x5952,0x534B,0x5877,0x5A29,0x7578,INVALC, INVALC,0x5E5E,0x722F,0x7829,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5848,INVALC,INVALC,0x6E41,INVALC, INVALC,INVALC,INVALC,0x7941,INVALC,INVALC,INVALC,INVALC, 0x5D73,0x6A7A,INVALC,0x763D,0x613B,0x4D3F,0x7454,0x664D, INVALC,0x7C4F,0x7B22,INVALC,0x605C,INVALC,INVALC,INVALC, INVALC,0x743B,0x5A55,INVALC,0x7932,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7B72,INVALC,0x5B76,INVALC,0x5E5F, INVALC,INVALC,INVALC,0x5B72,INVALC,INVALC,INVALC,INVALC, INVALC,0x785C,0x776E,0x6B68,INVALC,0x527A,INVALC,INVALC, 0x713C,INVALC,INVALC,0x7A5A,INVALC,INVALC,0x5A6A,0x5A46, 0x7741,INVALC,INVALC,0x6736,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 110, Array index 0x3000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6547,0x562C,INVALC,INVALC,INVALC, INVALC,0x5C47,INVALC,INVALC,INVALC,INVALC,INVALC,0x6129, INVALC,0x622A,INVALC,0x5526,INVALC,INVALC,0x5457,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7250,INVALC,0x6A7B, INVALC,0x605D,0x7B73,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x713D,INVALC,INVALC,0x6267,0x7D57,INVALC, 0x4E48,0x6A37,INVALC,0x7C40,INVALC,0x7D67,0x776F,INVALC, INVALC,0x5735,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6F3A,0x715D,INVALC,0x5E33,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x684B,INVALC,INVALC,0x785D,INVALC, INVALC,0x7B47,0x5548,INVALC,0x575F,INVALC,0x5D29,INVALC, INVALC,INVALC,INVALC,INVALC,0x6931,INVALC,INVALC,0x7A2D, 0x7659,0x7A74,INVALC,INVALC,INVALC,INVALC,INVALC,0x782A, INVALC,INVALC,INVALC,INVALC,INVALC,0x666E,INVALC,0x4C5C, 0x613C,0x606F,INVALC,INVALC,0x693F,0x7C7D,0x664E,INVALC, INVALC,0x6157,INVALC,0x664F,INVALC,0x7471,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6473, INVALC,INVALC,0x647B,INVALC,INVALC,0x7964,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6F63,INVALC,INVALC,0x4F6E,0x763E,0x6032,0x7C7E,0x512B, INVALC,INVALC,INVALC,0x577A,INVALC,INVALC,INVALC,0x7B48, INVALC,0x6257,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5423,0x7078,0x5728,INVALC,INVALC,INVALC,0x6167,INVALC, INVALC,0x533F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6F64,INVALC,0x5745,0x6B62,INVALC,INVALC,0x7C67,INVALC, INVALC,0x6422,INVALC,0x6268,INVALC,0x6650,INVALC,0x7B68, 0x7468,0x6574,0x743C,0x7455,INVALC,INVALC,INVALC,INVALC, /* Block 111, Array index 0x3100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5F36, INVALC,0x7C39,0x6E42,0x4A75,INVALC,INVALC,INVALC,0x6F65, 0x4B62,0x5424,INVALC,0x5E60,0x5A7D,0x6446,0x683E,INVALC, INVALC,INVALC,INVALC,0x605E,0x7634,0x6A52,INVALC,0x797B, INVALC,INVALC,0x6042,INVALC,0x4A64,INVALC,0x6737,INVALC, 0x6A7D,INVALC,0x595D,INVALC,0x5A34,0x6E2A,0x7B69,INVALC, INVALC,INVALC,INVALC,0x5B4B,0x5A35,INVALC,INVALC,INVALC, INVALC,INVALC,0x713E,INVALC,INVALC,0x532C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7B49,INVALC, 0x5F4F,INVALC,INVALC,0x5340,0x6357,INVALC,0x6F66,0x7C50, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6940, INVALC,INVALC,INVALC,0x7553,INVALC,INVALC,0x6C5C,0x7737, INVALC,INVALC,0x6A38,0x5179,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5C48,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6A39,INVALC,INVALC,INVALC,INVALC,INVALC,0x715E,INVALC, INVALC,INVALC,INVALC,INVALC,0x5736,0x4F35,INVALC,0x5928, INVALC,INVALC,0x6C6E,INVALC,INVALC,0x5D2A,INVALC,INVALC, INVALC,INVALC,0x4D22,0x682E,INVALC,INVALC,INVALC,0x613D, INVALC,0x7251,INVALC,INVALC,INVALC,INVALC,0x6941,INVALC, INVALC,INVALC,0x527C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5B35,INVALC,0x7367,0x587E,INVALC,INVALC, INVALC,0x7C51,INVALC,0x6D32,0x742F,INVALC,0x7B23,INVALC, INVALC,0x7C41,INVALC,0x6E2B,0x5425,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7472, INVALC,INVALC,INVALC,INVALC,0x6E59,INVALC,INVALC,INVALC, 0x7B4A,INVALC,INVALC,INVALC,INVALC,INVALC,0x4D63,0x583B, /* Block 112, Array index 0x3200 */ INVALC,0x655B,0x7877,INVALC,INVALC,INVALC,0x7654,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5729, INVALC,0x4B49,INVALC,INVALC,0x6651,0x704C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x582E,INVALC,0x7953,0x557E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x583C,0x7230,INVALC,INVALC,INVALC, INVALC,0x622B,0x7368,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6F42,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6D6C, INVALC,0x6738,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5A7E,INVALC,INVALC,0x4C3E,INVALC,INVALC,0x727C, 0x5A6B,INVALC,0x6258,0x6D56,INVALC,INVALC,0x5651,0x6033, INVALC,INVALC,0x7C52,INVALC,0x6B48,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5341,0x704D,INVALC, 0x4F77,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6D52,INVALC,0x5458,0x5C49,0x5771,INVALC, INVALC,0x5F3B,INVALC,INVALC,0x7325,INVALC,INVALC,INVALC, 0x744D,INVALC,INVALC,INVALC,INVALC,0x713F,0x7831,INVALC, 0x697A,INVALC,INVALC,INVALC,0x7B4B,INVALC,INVALC,0x4A55, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7954,0x774A,INVALC,INVALC,0x5648, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7C68,0x733D, INVALC,0x6E7E,INVALC,0x677E,INVALC,INVALC,INVALC,INVALC, INVALC,0x5342,INVALC,INVALC,INVALC,INVALC,0x5336,INVALC, 0x4C2D,0x767A,0x5632,0x5258,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6758,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6325,INVALC,INVALC, INVALC,INVALC,0x6739,INVALC,INVALC,INVALC,INVALC,0x702D, 0x7B4C,0x6B21,INVALC,INVALC,0x5426,INVALC,INVALC,INVALC, INVALC,0x7B4D,INVALC,0x553D,0x715F,INVALC,INVALC,0x767B, INVALC,0x5E34,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x556B,INVALC, /* Block 113, Array index 0x3300 */ INVALC,0x6548,INVALC,INVALC,INVALC,0x7B24,0x5439,INVALC, INVALC,0x5E61,INVALC,0x6423,INVALC,INVALC,INVALC,0x5737, INVALC,0x786E,INVALC,INVALC,INVALC,0x5E35,INVALC,INVALC, 0x5652,INVALC,0x7955,0x673A,0x6B55,0x5577,0x6F67,0x613E, INVALC,INVALC,INVALC,0x7A2E,INVALC,INVALC,INVALC,0x5669, 0x566E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x673B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6C4B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5533,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4E34,INVALC,INVALC,INVALC, 0x7B25,0x616E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7728,INVALC,INVALC,INVALC,INVALC,0x7B4E,INVALC,INVALC, INVALC,INVALC,INVALC,0x583D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7B7D,INVALC,INVALC,INVALC,INVALC, 0x7C69,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4F36,INVALC,INVALC,INVALC,0x6D47,0x6E2C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4C5D,INVALC,INVALC, INVALC,INVALC,0x7627,INVALC,INVALC,INVALC,0x667A,INVALC, INVALC,INVALC,0x7524,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7D5C,0x6D33,0x4E49,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6F68,INVALC,INVALC,0x613F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7A5B,0x4B63,0x7729,INVALC,0x7B26, INVALC,INVALC,INVALC,0x5C39,INVALC,INVALC,INVALC,0x7140, 0x6D48,0x6F43,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x562D,INVALC,INVALC,0x7D4E,INVALC,INVALC,INVALC,0x6821, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7B74,0x5527,INVALC,INVALC,INVALC,0x7176,INVALC,0x6653, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4C5E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7832,INVALC,INVALC,INVALC,0x5C6B,INVALC,INVALC, /* Block 114, Array index 0x3400 */ INVALC,INVALC,INVALC,INVALC,0x7D36,INVALC,INVALC,INVALC, INVALC,0x656A,INVALC,INVALC,0x7160,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5B4C,0x5D4D,INVALC,INVALC,INVALC,0x5448,INVALC, INVALC,0x596D,INVALC,INVALC,INVALC,INVALC,0x7525,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x667B,INVALC,INVALC,INVALC,INVALC,INVALC,0x6654,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7D48, INVALC,0x5621,0x7D3F,INVALC,0x7C53,INVALC,0x6F21,INVALC, 0x673C,INVALC,INVALC,INVALC,INVALC,INVALC,0x516E,INVALC, INVALC,0x6655,INVALC,INVALC,0x6972,INVALC,0x5F30,INVALC, INVALC,INVALC,INVALC,INVALC,0x5860,0x7C3A,0x7D2F,0x704E, INVALC,0x5B61,INVALC,INVALC,0x6549,INVALC,0x6D34,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6043,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6358,INVALC,INVALC,INVALC, INVALC,0x697B,0x6A28,INVALC,INVALC,INVALC,INVALC,0x7D37, INVALC,INVALC,0x7B27,INVALC,0x6942,INVALC,INVALC,INVALC, INVALC,0x7D77,INVALC,INVALC,INVALC,INVALC,INVALC,0x6259, INVALC,INVALC,0x5C6C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6822,INVALC,INVALC,INVALC, INVALC,0x6670,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7D78,0x7D79,INVALC,INVALC,INVALC,0x763F,INVALC, INVALC,0x6727,INVALC,0x6657,INVALC,INVALC,INVALC,INVALC, 0x5473,0x5449,INVALC,INVALC,INVALC,INVALC,0x567A,INVALC, 0x5772,INVALC,0x6140,INVALC,0x5B62,0x6658,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x673D, INVALC,INVALC,INVALC,INVALC,INVALC,0x704F,0x733E,0x622C, INVALC,INVALC,INVALC,INVALC,INVALC,0x7537,0x6070,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7D38,0x6368,INVALC,0x5427,0x687C, /* Block 115, Array index 0x3500 */ 0x7A52,INVALC,INVALC,INVALC,INVALC,INVALC,0x786F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5653,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5534,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7050,INVALC,0x7770,0x6E33,INVALC,INVALC, 0x6A3A,INVALC,0x6A53,INVALC,INVALC,0x6D49,0x5D2B,INVALC, INVALC,INVALC,0x652C,0x7D21,INVALC,0x5F50,0x6C33,INVALC, 0x5F51,INVALC,INVALC,INVALC,INVALC,INVALC,0x6D6D,0x7838, 0x777A,INVALC,INVALC,INVALC,0x782B,INVALC,INVALC,INVALC, INVALC,INVALC,0x7460,INVALC,INVALC,INVALC,INVALC,INVALC, 0x543A,0x6433,INVALC,0x695A,INVALC,0x5E36,INVALC,0x593F, INVALC,0x5940,0x566F,INVALC,INVALC,INVALC,INVALC,0x594C, INVALC,0x5A2A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5F65,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7765,INVALC,INVALC,INVALC,0x4C32,INVALC,INVALC, 0x5F79,0x5760,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x543B,INVALC,INVALC,INVALC,INVALC,0x7D7A, INVALC,INVALC,INVALC,INVALC,0x4C33,INVALC,INVALC,0x5B73, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5F52,INVALC,0x4E4A,INVALC,0x6E5A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6464,INVALC, 0x7B4F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4F37, INVALC,0x6E43,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4E6A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x622D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5761,0x7A75,INVALC,INVALC,0x5549,0x782C,INVALC,INVALC, /* Block 116, Array index 0x3600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6759,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7369,INVALC, INVALC,INVALC,INVALC,0x586D,0x6344,0x7071,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6865,INVALC,INVALC, INVALC,0x607A,0x6E44,0x595E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6B22,0x6B23, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7C42,0x6A3B, INVALC,INVALC,INVALC,INVALC,0x682B,0x5E62,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6D6F,INVALC,0x6823,INVALC,INVALC,INVALC,INVALC,0x4F71, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x543C,INVALC,0x7C6A,INVALC,INVALC,INVALC,INVALC,INVALC, 0x673E,INVALC,0x7C72,INVALC,INVALC,0x5634,INVALC,INVALC, 0x622E,INVALC,0x5337,0x7A4C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7A5C,INVALC,0x6D35,0x6163, INVALC,0x682C,INVALC,0x685D,INVALC,INVALC,0x6F69,INVALC, INVALC,INVALC,INVALC,INVALC,0x743D,INVALC,0x4F38,0x695B, 0x512C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5A47, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6B49, INVALC,0x684C,INVALC,INVALC,INVALC,0x5E37,INVALC,INVALC, INVALC,INVALC,0x563C,0x5365,INVALC,INVALC,INVALC,INVALC, INVALC,0x7A5D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5A56,INVALC,0x4A31,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5A48,0x5F26,INVALC,0x7933,0x7252,INVALC,0x4A44, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4E4B,INVALC, INVALC,0x4D75,INVALC,INVALC,INVALC,0x7D30,0x5528,INVALC, 0x7141,INVALC,INVALC,0x6269,0x5C4A,0x6C34,0x7A40,INVALC, INVALC,0x7B28,0x5028,INVALC,INVALC,0x5A6C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x596E, INVALC,0x607B,INVALC,INVALC,INVALC,0x6F6A,0x7A5E,INVALC, /* Block 117, Array index 0x3700 */ INVALC,0x6044,INVALC,0x4F39,INVALC,0x554A,0x5762,0x622F, INVALC,0x5738,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x684D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x765A,INVALC,INVALC,INVALC,INVALC, 0x6F22,0x625A,0x767C,INVALC,INVALC,0x7B50,0x512D,INVALC, 0x4D64,INVALC,0x512E,0x5C6D,0x684E,INVALC,0x7079,0x4E35, 0x667C,INVALC,INVALC,0x577B,0x5056,0x5D75,0x7771,INVALC, 0x767D,INVALC,0x5B77,INVALC,INVALC,INVALC,INVALC,0x7B6A, 0x695C,0x5941,INVALC,0x7572,0x6045,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6A54,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7942,INVALC,0x6A3C, INVALC,0x5245,0x7B51,0x6740,0x6B25,INVALC,0x5F7A,0x6322, 0x5739,INVALC,0x6943,INVALC,0x687D,0x682F,INVALC,INVALC, 0x7253,0x7B29,0x5825,INVALC,INVALC,INVALC,INVALC,0x554B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5048,INVALC, INVALC,INVALC,0x512F,0x5763,INVALC,INVALC,INVALC,0x6046, INVALC,0x5622,INVALC,0x6D70,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5773,INVALC,INVALC,INVALC,0x7C54,INVALC,0x5A57,0x4C5F, INVALC,0x7254,INVALC,0x5130,INVALC,0x4C60,INVALC,0x5B7D, 0x733F,INVALC,0x7051,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7C3B,INVALC,0x6230,INVALC,INVALC,0x6625,INVALC,INVALC, INVALC,0x625B,INVALC,INVALC,INVALC,0x5F5E,INVALC,0x6047, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x726F,INVALC, INVALC,INVALC,0x4C61,INVALC,INVALC,INVALC,INVALC,0x566A, INVALC,INVALC,INVALC,INVALC,0x6742,INVALC,INVALC,INVALC, 0x4E36,INVALC,0x7340,INVALC,0x4D7E,INVALC,INVALC,INVALC, 0x7B52,INVALC,0x7878,0x777B,INVALC,INVALC,0x683F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6837,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6D36, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 118, Array index 0x3800 */ INVALC,0x5C3A,INVALC,INVALC,0x4C34,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7177,INVALC,INVALC,INVALC,0x6838,INVALC,INVALC, 0x4A76,INVALC,0x6424,0x7456,INVALC,INVALC,INVALC,0x5F66, INVALC,INVALC,INVALC,0x5F27,INVALC,0x5F67,0x6141,INVALC, 0x6944,INVALC,INVALC,0x5C4B,0x6945,INVALC,INVALC,INVALC, 0x6F23,0x6B26,0x4B23,0x6369,INVALC,INVALC,INVALC,0x517B, 0x6F24,INVALC,0x6F6B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5034, INVALC,INVALC,INVALC,INVALC,0x4D23,INVALC,INVALC,0x6866, INVALC,0x6F25,INVALC,0x534C,0x5A6D,INVALC,INVALC,INVALC, INVALC,0x573A,INVALC,0x7255,0x7565,0x596F,INVALC,INVALC, INVALC,INVALC,0x7934,INVALC,INVALC,0x5554,0x7D4F,INVALC, INVALC,INVALC,0x5B63,INVALC,INVALC,INVALC,INVALC,0x7161, 0x6C36,INVALC,INVALC,INVALC,INVALC,0x7B7E,0x5357,INVALC, 0x5131,INVALC,0x4B31,INVALC,INVALC,INVALC,INVALC,0x5132, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4B32,0x7142, INVALC,INVALC,0x7461,0x7935,INVALC,INVALC,0x6143,0x6142, INVALC,0x6B77,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5F28,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4B4A,INVALC,INVALC, INVALC,INVALC,INVALC,0x6639,INVALC,INVALC,INVALC,INVALC, INVALC,0x785E,0x792A,0x4A77,INVALC,0x6D37,INVALC,INVALC, 0x5338,0x7256,INVALC,INVALC,0x5459,0x6E45,0x7270,INVALC, INVALC,INVALC,0x4A32,INVALC,INVALC,0x5C3B,INVALC,0x7178, INVALC,INVALC,INVALC,INVALC,INVALC,0x6C37,INVALC,INVALC, INVALC,INVALC,0x654A,INVALC,0x7640,0x7D5D,INVALC,INVALC, 0x5463,0x4C62,INVALC,0x7754,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5765,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5343,INVALC,0x5826,INVALC,0x7641,INVALC,INVALC,INVALC, INVALC,INVALC,0x5D76,INVALC,0x4D40,INVALC,INVALC,INVALC, /* Block 119, Array index 0x3900 */ 0x655C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x654B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6144,INVALC,INVALC,INVALC,INVALC,INVALC,0x6830, 0x7430,0x736A,0x5A6E,INVALC,0x573B,INVALC,0x6231,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x572A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x567B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x645F,INVALC,0x4A56,INVALC, INVALC,INVALC,0x6B28,INVALC,INVALC,INVALC,0x5B7E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7642,INVALC,INVALC,0x6F3B,INVALC,INVALC,INVALC, INVALC,0x547D,INVALC,INVALC,0x6048,INVALC,INVALC,INVALC, 0x6839,INVALC,0x6F26,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4D24,INVALC,INVALC,0x5474,0x5B21,0x5B5C,0x5B5D,INVALC, INVALC,INVALC,INVALC,INVALC,0x6E5C,INVALC,0x4B4B,0x7C55, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4E6B,INVALC, 0x4D41,INVALC,INVALC,0x7B53,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x792B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7554,INVALC,INVALC,INVALC,INVALC,0x5929, INVALC,INVALC,0x695D,0x5B4D,INVALC,INVALC,0x5D4E,INVALC, 0x6743,INVALC,0x6C4C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x796C,INVALC,INVALC,INVALC,0x4B4C,INVALC, INVALC,INVALC,INVALC,0x607C,0x5428,INVALC,0x6D53,0x586F, INVALC,0x7257,INVALC,0x4A78,0x5A6F,INVALC,INVALC,0x5654, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x594D,INVALC, INVALC,INVALC,0x586E,INVALC,0x7241,INVALC,INVALC,INVALC, 0x5F53,INVALC,INVALC,INVALC,0x5A70,INVALC,0x626A,INVALC, /* Block 120, Array index 0x3A00 */ INVALC,0x607D,INVALC,INVALC,0x5878,INVALC,INVALC,INVALC, 0x772F,0x5A36,INVALC,0x4A57,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7258,INVALC, 0x5879,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7A5F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4F6F, 0x5942,INVALC,0x7052,INVALC,0x6451,INVALC,INVALC,INVALC, 0x7337,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7A60,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6F6C,INVALC,INVALC,INVALC,INVALC, INVALC,0x6232,INVALC,0x543D,INVALC,INVALC,0x594E,INVALC, INVALC,INVALC,INVALC,0x7462,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5429,INVALC,INVALC,INVALC,INVALC,0x4D42,0x675A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7259,INVALC,INVALC,INVALC,INVALC, INVALC,0x592A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x583E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5C2D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x626B,0x567C,INVALC,INVALC, 0x4A79,INVALC,INVALC,0x545A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7457,0x4C21,INVALC,INVALC,0x4F3A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7538, INVALC,INVALC,INVALC,0x5943,0x5068,INVALC,INVALC,INVALC, INVALC,INVALC,0x6345,0x6B78,INVALC,0x7231,INVALC,INVALC, INVALC,0x4F3B,INVALC,INVALC,INVALC,0x532D,0x6861,0x4E6C, INVALC,INVALC,INVALC,0x6034,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 121, Array index 0x3B00 */ INVALC,INVALC,0x5E63,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5D77,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7232,0x7376,0x765B, INVALC,INVALC,INVALC,INVALC,0x577E,INVALC,INVALC,INVALC, INVALC,INVALC,0x785F,INVALC,0x7772,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5029,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x665A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7526,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x573C,0x4C63,INVALC,INVALC,0x665B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5D5D,INVALC,INVALC,INVALC, INVALC,0x5133,INVALC,INVALC,INVALC,INVALC,INVALC,0x6F6D, INVALC,INVALC,INVALC,INVALC,0x565E,0x6474,0x616F,INVALC, INVALC,0x5D78,INVALC,INVALC,INVALC,INVALC,INVALC,0x684F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4A65,INVALC,INVALC,INVALC,0x5C21, INVALC,0x6035,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7C2C,0x7C2D,0x5827,INVALC,INVALC,INVALC, INVALC,0x6D38,INVALC,INVALC,INVALC,0x5B36,INVALC,INVALC, INVALC,INVALC,0x5670,0x732F,INVALC,INVALC,0x4D25,INVALC, 0x5A71,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5828,INVALC,INVALC,INVALC,0x4C64,INVALC,INVALC,0x5134, INVALC,INVALC,INVALC,INVALC,INVALC,0x4A58,INVALC,INVALC, INVALC,INVALC,INVALC,0x5A72,INVALC,INVALC,INVALC,INVALC, /* Block 122, Array index 0x3C00 */ INVALC,0x7527,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7528,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6626,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x556C,0x5578,0x5A73,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6346,INVALC,INVALC,INVALC,0x5E64,INVALC, 0x5E65,0x5135,INVALC,INVALC,INVALC,INVALC,INVALC,0x5136, 0x5137,0x7233,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x695E,INVALC,INVALC,INVALC,INVALC,INVALC,0x7053,0x7234, INVALC,INVALC,0x7054,0x4B64,0x7B54,0x7566,0x636A,INVALC, 0x5E66,INVALC,INVALC,INVALC,INVALC,0x5F54,INVALC,INVALC, 0x7879,INVALC,INVALC,INVALC,INVALC,0x702E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5138,INVALC,INVALC,INVALC,INVALC,0x565F, INVALC,0x5057,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7C21,0x6F6E,0x5C58, INVALC,0x695F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x655D,0x7D7B, INVALC,INVALC,0x6049,INVALC,INVALC,INVALC,0x5649,INVALC, INVALC,0x542A,INVALC,0x654C,INVALC,INVALC,INVALC,INVALC, INVALC,0x6960,INVALC,INVALC,INVALC,0x5058,0x7C22,0x543E, 0x6233,0x5E67,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5C3C,0x5236,0x7555,INVALC,INVALC,INVALC,INVALC, INVALC,0x4E21,0x7529,INVALC,INVALC,0x5D79,INVALC,INVALC, 0x5D7A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7055, INVALC,INVALC,INVALC,INVALC,0x765F,INVALC,0x725A,0x646B, INVALC,0x7271,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6C39,INVALC,INVALC,INVALC,INVALC, /* Block 123, Array index 0x3D00 */ 0x7D7C,INVALC,INVALC,INVALC,INVALC,0x612A,INVALC,INVALC, 0x4A59,INVALC,INVALC,0x6F6F,INVALC,0x752A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6C79,INVALC,INVALC,0x782D, INVALC,0x7242,0x7643,INVALC,0x5752,INVALC,INVALC,0x7922, 0x7056,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x707A,INVALC, INVALC,0x7660,INVALC,INVALC,INVALC,INVALC,0x6973,0x7243, INVALC,INVALC,INVALC,0x542B,0x4A33,0x4D26,INVALC,0x4D43, 0x4D5A,INVALC,INVALC,INVALC,INVALC,INVALC,0x594F,INVALC, INVALC,0x7644,INVALC,INVALC,INVALC,0x6E5D,0x6744,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6234, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5F62,0x675B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6831,INVALC,0x7C2E,INVALC,INVALC,INVALC,INVALC, 0x654D,INVALC,INVALC,INVALC,0x7A6B,INVALC,0x4F3C,INVALC, INVALC,0x4F62,0x4D76,INVALC,INVALC,0x6F70,INVALC,0x743E, INVALC,0x544D,INVALC,INVALC,0x7338,INVALC,INVALC,INVALC, 0x6921,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7272,0x736B,INVALC,0x7057,INVALC,INVALC, 0x4F57,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4F5F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6840,0x6841,INVALC,INVALC,INVALC,0x4F63,0x6922, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x502A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7341,0x502B,INVALC,0x5464, INVALC,INVALC,0x6F3C,0x5821,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x595F, INVALC,0x7357,INVALC,INVALC,INVALC,0x5C3D,INVALC,0x4C65, 0x6D71,INVALC,INVALC,0x7162,INVALC,0x545B,INVALC,INVALC, INVALC,INVALC,0x6235,INVALC,INVALC,0x4A66,INVALC,0x532E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4C66,INVALC, INVALC,0x7153,0x7567,INVALC,INVALC,INVALC,INVALC,0x4A5A, /* Block 124, Array index 0x3E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7B6E, INVALC,0x6145,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5F69,INVALC,0x6E5E,INVALC,INVALC,0x7742,INVALC, 0x5822,INVALC,INVALC,INVALC,INVALC,INVALC,0x5D2C,INVALC, INVALC,INVALC,INVALC,INVALC,0x702F,0x563D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x612B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7936,INVALC, INVALC,0x5475,INVALC,0x5049,0x6F27,0x626C,INVALC,0x5B6A, 0x4E4C,0x7568,0x7755,INVALC,0x534D,INVALC,0x737E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5035,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x607E,INVALC,0x5F7B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x665D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6824,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4B4D, INVALC,INVALC,INVALC,0x6F28,INVALC,INVALC,INVALC,0x6E34, INVALC,INVALC,INVALC,INVALC,0x5A58,0x5139,INVALC,0x5F29, INVALC,INVALC,0x7330,INVALC,INVALC,0x4C44,INVALC,INVALC, INVALC,0x4E37,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6F29,INVALC,INVALC, INVALC,0x5F55,INVALC,INVALC,0x6D57,INVALC,INVALC,INVALC, 0x6E46,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6F3D,0x7C56,INVALC,INVALC,0x5B74,INVALC,0x6F2A,0x7839, INVALC,0x7569,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6359,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6146,INVALC,INVALC,INVALC,0x543F,INVALC,INVALC,INVALC, INVALC,0x5E68,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 125, Array index 0x3F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x706A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7342,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x532F,INVALC, INVALC,0x4A5B,INVALC,INVALC,INVALC,INVALC,INVALC,0x7C57, INVALC,INVALC,0x6D58,0x6147,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7458,0x5633,0x5D2D, INVALC,INVALC,INVALC,0x553E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7143,0x6E5F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x566B,INVALC,INVALC,INVALC,0x7459,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5766,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5A37,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5D7B,INVALC,INVALC,INVALC,INVALC, INVALC,0x5D4F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5823,INVALC,INVALC,0x5A59,INVALC,0x7058, 0x6F44,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6158, INVALC,INVALC,INVALC,INVALC,INVALC,0x7154,INVALC,0x6D72, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x555B,INVALC, INVALC,0x555C,0x7344,0x4B57,INVALC,INVALC,INVALC,INVALC, INVALC,0x6236,INVALC,INVALC,INVALC,INVALC,0x6F71,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7B55,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5358,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5D50,0x7059, 0x4B33,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x555D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4D27,INVALC,INVALC,0x502C,INVALC, /* Block 126, Array index 0x4000 */ 0x513A,INVALC,0x7144,INVALC,0x6533,0x7B75,0x6961,0x7D60, 0x7C3C,INVALC,0x5A22,0x5A23,INVALC,0x5221,INVALC,INVALC, 0x526F,INVALC,INVALC,INVALC,0x626D,INVALC,INVALC,0x5E69, 0x4E5C,0x7235,0x5064,0x5D51,INVALC,INVALC,INVALC,INVALC, 0x6148,0x5B37,0x5F63,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6D39,0x7145,INVALC,0x734F,0x572B, 0x612C,INVALC,INVALC,0x636B,INVALC,0x6E47,INVALC,INVALC, INVALC,0x6149,0x4A7A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x707B,0x7A61,0x705A,0x4C67,0x5A74,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4C3F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4E6D,INVALC, INVALC,0x5529,0x7A62,INVALC,INVALC,INVALC,0x5065,INVALC, 0x6B56,INVALC,0x6C5F,INVALC,INVALC,INVALC,0x5F7C,INVALC, INVALC,0x7756,0x5E6A,0x4B34,INVALC,INVALC,0x6F3E,INVALC, INVALC,0x4C35,INVALC,INVALC,INVALC,INVALC,INVALC,0x4F3D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6F72,0x6237, INVALC,INVALC,INVALC,0x4C68,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x707C,INVALC,INVALC,INVALC, 0x5660,INVALC,0x7146,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6238,0x6B2B,INVALC,INVALC, INVALC,0x4B35,0x5851,INVALC,0x744E,0x7377,INVALC,INVALC, 0x5746,INVALC,0x513B,0x772A,INVALC,0x6D4A,0x5753,0x587A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7645, INVALC,INVALC,0x514C,0x5D7C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5F7D,INVALC, 0x7965,INVALC,0x604A,INVALC,INVALC,0x727D,0x5330,INVALC, 0x7473,0x5A49,INVALC,0x665E,INVALC,INVALC,INVALC,INVALC, 0x783A,0x6850,INVALC,INVALC,0x587B,INVALC,INVALC,0x6A55, INVALC,INVALC,INVALC,INVALC,0x5623,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7646,INVALC,INVALC,INVALC,INVALC, /* Block 127, Array index 0x4100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x725B,0x647C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6832,INVALC,INVALC, INVALC,INVALC,INVALC,0x5A5A,INVALC,0x725C,0x7B56,0x6932, INVALC,0x6E2D,INVALC,0x7A63,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5C6E,INVALC,INVALC,0x756A,0x6660, INVALC,0x707D,INVALC,INVALC,INVALC,INVALC,INVALC,0x572C, INVALC,INVALC,INVALC,INVALC,INVALC,0x7545,0x6E60,INVALC, INVALC,0x5B65,INVALC,0x5D5E,INVALC,INVALC,0x5970,0x6923, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7179,INVALC,0x7244,0x604B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6924,INVALC, INVALC,0x6239,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6331,0x7C6B,0x4D28,INVALC,0x4C36,INVALC,INVALC, 0x705B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x663A,INVALC,INVALC,0x4D29,INVALC,INVALC,INVALC, INVALC,INVALC,0x7343,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6159,INVALC,INVALC,0x6F2B, INVALC,INVALC,INVALC,0x6745,INVALC,INVALC,0x6069,INVALC, 0x7345,INVALC,INVALC,0x5440,0x553F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 128, Array index 0x4200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5D2E,INVALC, 0x797C,INVALC,0x4C40,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6522,INVALC,INVALC,INVALC, 0x4E38,INVALC,INVALC,INVALC,0x5852,0x7956,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x712A,0x4E51,INVALC,INVALC,0x7647,INVALC, 0x5B6B,INVALC,0x5F7E,INVALC,INVALC,0x5861,INVALC,0x7773, INVALC,0x5767,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x547E,INVALC,INVALC, 0x513C,INVALC,0x654F,INVALC,0x4B36,INVALC,0x5A38,INVALC, INVALC,INVALC,INVALC,INVALC,0x4D44,INVALC,INVALC,INVALC, INVALC,INVALC,0x563E,INVALC,INVALC,INVALC,0x623A,INVALC, INVALC,INVALC,INVALC,INVALC,0x4F58,INVALC,INVALC,INVALC, 0x604C,0x6B79,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7D7D,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5768,0x4B58,INVALC,INVALC,INVALC,0x6962,INVALC,INVALC, INVALC,0x683A,INVALC,INVALC,INVALC,0x6347,INVALC,INVALC, INVALC,INVALC,0x6C4D,INVALC,0x6C4E,INVALC,0x563F,INVALC, INVALC,INVALC,0x6327,INVALC,0x5F56,0x7D68,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6E61, 0x7628,0x5D7D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x783B,INVALC,0x6851,INVALC,INVALC,INVALC,INVALC, 0x7957,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4E6E,INVALC,INVALC,0x6C4F,INVALC,INVALC,INVALC, /* Block 129, Array index 0x4300 */ 0x6925,0x5655,INVALC,0x4D45,INVALC,0x6D3A,0x513D,INVALC, INVALC,0x4F3E,INVALC,INVALC,0x6C3B,INVALC,INVALC,INVALC, 0x5231,INVALC,INVALC,INVALC,INVALC,0x4C69,INVALC,0x5944, 0x697C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x513E,INVALC,INVALC, INVALC,INVALC,INVALC,0x6C3C,INVALC,INVALC,0x652D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7730,INVALC,0x4C6A, INVALC,INVALC,INVALC,0x5344,INVALC,INVALC,0x5640,INVALC, INVALC,INVALC,0x567D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6121,INVALC, 0x5E3D,INVALC,0x7629,INVALC,INVALC,INVALC,0x5A24,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5624, 0x7546,INVALC,0x6122,0x6946,INVALC,INVALC,INVALC,0x7245, INVALC,INVALC,INVALC,INVALC,INVALC,0x7469,0x566C,0x6B53, INVALC,INVALC,INVALC,INVALC,0x6C3D,0x625C,0x5E6B,0x705C, INVALC,0x6B3F,INVALC,0x574E,0x513F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x752B,INVALC, INVALC,INVALC,INVALC,0x797D,INVALC,0x4A5C,INVALC,INVALC, INVALC,0x4D46,0x7236,INVALC,INVALC,0x5D7E,INVALC,INVALC, INVALC,0x4C37,0x5B38,INVALC,INVALC,INVALC,INVALC,0x5069, INVALC,0x4E5D,0x6B40,INVALC,0x7D22,INVALC,INVALC,INVALC, INVALC,INVALC,0x784B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6A56,0x7130,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5B4E,INVALC,0x7743,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5B4F,0x4B24,INVALC,INVALC,0x7860,INVALC, INVALC,0x7B57,INVALC,INVALC,0x6B4A,0x6021,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4E4D,INVALC,INVALC,0x545C,INVALC,INVALC,INVALC, 0x7D58,INVALC,INVALC,INVALC,INVALC,0x5276,INVALC,INVALC, /* Block 130, Array index 0x4400 */ INVALC,INVALC,0x7237,INVALC,INVALC,0x7A76,0x762A,0x7A77, 0x5866,INVALC,0x7431,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6852,INVALC,0x4A45,0x4C6B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x626E,INVALC,INVALC,INVALC,INVALC, INVALC,0x623B,INVALC,0x772D,INVALC,INVALC,INVALC,0x7861, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x736C,INVALC,INVALC,INVALC,INVALC,0x5E21,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x647D,INVALC,INVALC,0x636C,INVALC, 0x5D2F,0x5D30,INVALC,INVALC,0x4B37,0x6853,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6123,0x5260,INVALC, INVALC,INVALC,INVALC,0x707E,INVALC,INVALC,INVALC,INVALC, 0x6926,0x4B72,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6D73,0x5C59,0x604D,INVALC,INVALC,INVALC,INVALC,0x775A, 0x5B39,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4C2E,INVALC,0x5A5B,INVALC,INVALC,INVALC,INVALC,0x4D47, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5D31,INVALC,0x582F,0x6323,INVALC,INVALC, 0x4E6F,INVALC,INVALC,0x7273,INVALC,INVALC,INVALC,INVALC, 0x7833,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x604E,INVALC,0x757D,INVALC,INVALC, INVALC,INVALC,0x6B6C,INVALC,INVALC,0x5345,0x7C6C,0x525B, 0x546B,INVALC,0x5E22,INVALC,INVALC,INVALC,0x6566,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7030,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5544,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6D74, INVALC,INVALC,INVALC,0x636D,INVALC,0x6842,INVALC,0x6D75, 0x577C,INVALC,0x6D3B,INVALC,INVALC,0x762B,INVALC,INVALC, INVALC,INVALC,INVALC,0x7238,0x7648,INVALC,INVALC,INVALC, INVALC,INVALC,0x5366,0x725D,0x4F3F,INVALC,0x6B2C,INVALC, /* Block 131, Array index 0x4500 */ INVALC,INVALC,INVALC,INVALC,INVALC,0x4F40,INVALC,0x6628, 0x7D69,INVALC,0x4F41,INVALC,0x605F,0x5E6C,INVALC,INVALC, INVALC,INVALC,0x6022,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x743F,0x626F,INVALC,0x5971,0x7147, INVALC,0x4B38,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x797E,0x5B3A,0x5A75,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x766C,0x5A5C,0x7A64, INVALC,0x604F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5D32,INVALC,INVALC,INVALC,INVALC,0x6629,INVALC,0x6F73, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x736D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6B7A,INVALC,0x7966,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A5D,0x555E, INVALC,0x4A5E,0x5F64,INVALC,INVALC,INVALC,0x667D,INVALC, 0x752C,INVALC,INVALC,INVALC,INVALC,INVALC,0x6475,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6963,INVALC,0x6D4B,0x4F64,INVALC, INVALC,INVALC,0x5853,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5D33,0x546C,INVALC,INVALC,0x7239,INVALC,0x5F37, INVALC,INVALC,INVALC,INVALC,INVALC,0x4B4E,0x7B58,INVALC, INVALC,0x5059,INVALC,INVALC,0x5D52,0x7774,0x675C,0x6425, INVALC,0x7C23,INVALC,0x5B3B,INVALC,INVALC,INVALC,0x723A, 0x697D,0x504A,INVALC,0x7556,0x5945,0x6434,INVALC,0x6D27, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6A3D,0x667E,INVALC,0x7744,0x752D,INVALC,0x5960, INVALC,INVALC,INVALC,0x4A34,INVALC,INVALC,0x7862,0x4F42, INVALC,0x6C3E,INVALC,INVALC,INVALC,0x6534,0x4D48,0x6E48, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6748,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4D49,0x7937,INVALC, /* Block 132, Array index 0x4600 */ INVALC,0x7168,0x5972,0x5B75,0x4A35,0x5946,INVALC,INVALC, INVALC,0x5849,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x592B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6D3C,INVALC,INVALC,0x5854,INVALC,INVALC,INVALC,0x5C5A, INVALC,0x623C,INVALC,INVALC,0x7C6D,0x6C60,0x527E,INVALC, 0x6947,0x662A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6270,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7A3B, INVALC,0x752E,0x7B2A,INVALC,INVALC,INVALC,INVALC,0x6C7B, INVALC,0x6C3F,0x7C58,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5465,INVALC,INVALC,INVALC,0x7943, INVALC,INVALC,INVALC,0x6E62,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5769,0x6D76,INVALC,INVALC,INVALC,0x5E6D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4C6C,INVALC, 0x636E,INVALC,INVALC,INVALC,INVALC,INVALC,0x6854,INVALC, INVALC,INVALC,0x7A78,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5D34,0x6435,0x5830,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5855,INVALC,INVALC, INVALC,0x746A,INVALC,INVALC,INVALC,0x4E39,INVALC,INVALC, INVALC,0x5661,0x4F52,INVALC,0x5036,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4E22,INVALC,INVALC,0x736E,INVALC, INVALC,INVALC,INVALC,INVALC,0x7378,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5C4C,INVALC,0x504B,INVALC,INVALC,INVALC,0x7C24, 0x4D4A,0x5754,0x5E23,INVALC,0x6460,INVALC,INVALC,INVALC, INVALC,0x6E49,INVALC,INVALC,INVALC,0x625D,INVALC,INVALC, /* Block 133, Array index 0x4700 */ INVALC,INVALC,INVALC,0x757E,0x542C,INVALC,INVALC,INVALC, INVALC,INVALC,0x5551,INVALC,0x5870,0x7843,0x6A57,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7557,INVALC,INVALC,0x583F,INVALC,INVALC,INVALC, INVALC,0x7D40,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6B2D,INVALC,INVALC,INVALC,INVALC,0x552A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6728,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6E4A, INVALC,INVALC,INVALC,0x4A67,INVALC,INVALC,INVALC,INVALC, INVALC,0x7863,INVALC,0x545D,INVALC,INVALC,0x6A58,INVALC, INVALC,INVALC,INVALC,0x7B59,0x6D77,INVALC,INVALC,0x6535, INVALC,INVALC,INVALC,INVALC,INVALC,0x502D,INVALC,INVALC, INVALC,INVALC,0x7171,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x623D,INVALC,INVALC,INVALC,0x6348,INVALC,INVALC,INVALC, INVALC,0x5955,INVALC,INVALC,0x5F2A,INVALC,INVALC,INVALC, INVALC,0x5B3C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7864,INVALC,INVALC,INVALC,INVALC,INVALC, 0x717A,INVALC,INVALC,0x6536,0x736F,INVALC,INVALC,0x7B5A, 0x6160,INVALC,0x592C,INVALC,0x756B,INVALC,0x6036,INVALC, INVALC,0x6948,INVALC,0x4B4F,INVALC,0x6349,INVALC,INVALC, INVALC,0x5E6E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x623E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5C6F,INVALC,0x5625,INVALC, INVALC,INVALC,INVALC,INVALC,0x6271,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x567E,INVALC,INVALC,INVALC, /* Block 134, Array index 0x4800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5921,INVALC,0x5840,0x5C5B,INVALC,INVALC,0x6D3D, 0x5F38,INVALC,0x6A25,INVALC,INVALC,INVALC,0x572D,INVALC, INVALC,0x7379,INVALC,0x6D78,INVALC,0x7547,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x614A,0x6B63,INVALC,0x725E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x784C,INVALC,0x6A59, INVALC,0x5346,INVALC,0x5B66,INVALC,INVALC,INVALC,INVALC, INVALC,0x752F,INVALC,INVALC,INVALC,INVALC,0x4E70,INVALC, INVALC,INVALC,INVALC,0x697E,INVALC,INVALC,INVALC,INVALC, INVALC,0x7B36,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6272,INVALC,INVALC,INVALC,INVALC, 0x4F72,0x7739,0x5973,INVALC,INVALC,0x614B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5A5D,INVALC,INVALC,0x5A39, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6B7B, INVALC,0x4B39,INVALC,INVALC,0x6D79,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6060,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7440,INVALC, 0x7D3C,0x5F31,0x636F,INVALC,INVALC,INVALC,INVALC,0x6023, 0x7D39,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7031,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4D4B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6D3E,INVALC,INVALC,INVALC,0x5540,0x6370,0x6D7A, INVALC,INVALC,INVALC,INVALC,INVALC,0x6964,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x556D,0x675D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5476,0x6537,INVALC,INVALC, INVALC,0x5B67,0x623F,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6E4B, INVALC,INVALC,0x5774,0x705D,INVALC,INVALC,INVALC,0x4E2B, /* Block 135, Array index 0x4900 */ INVALC,INVALC,0x675E,INVALC,INVALC,INVALC,0x5656,0x614C, INVALC,INVALC,0x6833,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x656E,0x5C22, INVALC,INVALC,0x6050,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5535,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5521, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7B5B,INVALC, 0x794B,INVALC,INVALC,INVALC,0x4B73,0x7425,INVALC,INVALC, INVALC,INVALC,INVALC,0x7A48,0x5657,INVALC,0x6965,0x7B5C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7D50, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7B76,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5A25,INVALC,0x5B3D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6C62,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4D77,0x705E,INVALC,INVALC,INVALC, INVALC,0x7649,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5E6F, INVALC,INVALC,INVALC,0x5331,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7C6E,INVALC,INVALC,INVALC, INVALC,0x6843,INVALC,0x7148,INVALC,INVALC,INVALC,0x4E71, INVALC,INVALC,INVALC,INVALC,0x796D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7274,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6436,INVALC, /* Block 136, Array index 0x4A00 */ 0x7539,INVALC,0x5C70,0x6371,INVALC,INVALC,INVALC,INVALC, 0x6825,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x723B,INVALC,0x5E24,INVALC,0x5A4C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A69,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x635A,INVALC,0x7C59, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6A5A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7944,INVALC, 0x6324,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7B5D,INVALC,0x6F4A,INVALC, 0x6844,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x554C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6B57,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x592D, INVALC,INVALC,0x7B2B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5359,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5522,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x765E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5A76,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6051,INVALC,INVALC,0x6928, INVALC,INVALC,0x7579,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7A2F,INVALC,0x6B7C,INVALC,INVALC,0x606A,INVALC, /* Block 137, Array index 0x4B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,0x6332,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5545, INVALC,INVALC,0x7163,0x556E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4D4C,INVALC,INVALC,INVALC,INVALC,0x6D59,INVALC, INVALC,INVALC,INVALC,0x5841,INVALC,INVALC,INVALC,INVALC, 0x7A6C,INVALC,INVALC,INVALC,INVALC,INVALC,0x716B,INVALC, INVALC,INVALC,INVALC,INVALC,0x7A3C,0x6662,INVALC,INVALC, INVALC,INVALC,0x7A65,0x627A,INVALC,INVALC,INVALC,0x4A36, INVALC,0x6437,INVALC,0x6A5B,INVALC,0x757A,INVALC,INVALC, INVALC,0x7B2C,0x4F43,0x6B7D,INVALC,INVALC,INVALC,INVALC, 0x787A,INVALC,INVALC,0x5F39,INVALC,INVALC,INVALC,INVALC, 0x6171,INVALC,0x5224,INVALC,INVALC,INVALC,INVALC,0x757B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x505A,0x505B, INVALC,0x6A3E,0x5931,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4A37,INVALC,INVALC,0x5367,INVALC,0x7865,INVALC,INVALC, INVALC,INVALC,0x5332,INVALC,INVALC,INVALC,0x6240,0x725F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4D65,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x792C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4D4D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6E2E,0x562E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x576A, INVALC,INVALC,INVALC,INVALC,0x6760,0x6B2E,INVALC,INVALC, INVALC,0x4F59,INVALC,INVALC,0x5C4D,0x6D7B,INVALC,0x5E70, INVALC,0x576B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5E25,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5F57,0x5B50,0x5B51,INVALC,INVALC, 0x5523,INVALC,INVALC,INVALC,INVALC,0x7032,INVALC,INVALC, /* Block 138, Array index 0x4C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5C5C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4A68,INVALC,0x7866,0x5C4E,INVALC,INVALC,INVALC,INVALC, 0x6A5C,0x5B52,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6933,INVALC,INVALC, INVALC,INVALC,0x775B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6328,INVALC, 0x572E,INVALC,INVALC,0x6061,INVALC,INVALC,INVALC,INVALC, INVALC,0x4B3A,INVALC,INVALC,0x6551,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x505C, INVALC,INVALC,INVALC,INVALC,0x5541,INVALC,INVALC,INVALC, INVALC,INVALC,0x584A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6329,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6024, INVALC,0x6929,INVALC,0x5347,INVALC,INVALC,0x5C5D,0x782E, INVALC,INVALC,INVALC,0x4C38,INVALC,INVALC,INVALC,0x502E, INVALC,INVALC,INVALC,0x5872,INVALC,INVALC,0x634A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4C2F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x542D,0x7651,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x504C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4A46,INVALC,INVALC,0x5542,INVALC,INVALC, 0x4E3A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4A47,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7A30,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5F58,INVALC,INVALC,INVALC, 0x753A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 139, Array index 0x4D00 */ 0x656B,INVALC,0x6F74,0x5D35,INVALC,INVALC,INVALC,INVALC, 0x4D2A,INVALC,0x6372,INVALC,0x7B77,INVALC,0x7750,INVALC, INVALC,INVALC,INVALC,0x7D3A,INVALC,INVALC,0x7D61,0x767E, 0x5140,INVALC,INVALC,0x6845,INVALC,0x6438,INVALC,0x6168, INVALC,INVALC,INVALC,0x4C41,INVALC,0x526D,INVALC,INVALC, INVALC,INVALC,0x5B3E,INVALC,INVALC,0x6062,INVALC,INVALC, INVALC,0x7A49,INVALC,INVALC,0x614D,INVALC,0x4A38,INVALC, INVALC,INVALC,0x7260,0x7149,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5E71,INVALC,INVALC,INVALC,0x705F,0x7844,INVALC,INVALC, INVALC,INVALC,INVALC,0x6E4C,INVALC,INVALC,0x5E72,INVALC, 0x6749,INVALC,0x6273,0x6761,INVALC,INVALC,0x634B,INVALC, INVALC,0x634C,INVALC,INVALC,INVALC,0x4F78,0x6F2C,INVALC, 0x7D7E,0x7C25,0x7A31,0x5F59,INVALC,0x6052,INVALC,INVALC, INVALC,0x745A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x714A,INVALC,0x4E23, INVALC,INVALC,INVALC,INVALC,0x723C,0x6C63,INVALC,INVALC, INVALC,INVALC,INVALC,0x6025,INVALC,0x772B,INVALC,INVALC, 0x6B2F,INVALC,INVALC,INVALC,INVALC,INVALC,0x655E,INVALC, 0x6124,0x4D2B,INVALC,0x5974,0x6826,0x4D4E,0x6169,INVALC, 0x7C6F,INVALC,0x6063,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6241,INVALC,0x4E24,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5E26,INVALC,INVALC,0x6B7E,INVALC,0x6B5D,0x7060, INVALC,INVALC,0x745B,INVALC,0x6274,INVALC,INVALC,0x5348, INVALC,INVALC,INVALC,0x746B,INVALC,0x6E35,INVALC,0x7558, INVALC,INVALC,0x555F,INVALC,INVALC,INVALC,0x5665,INVALC, INVALC,INVALC,INVALC,0x6B30,0x7463,INVALC,INVALC,INVALC, INVALC,0x634D,INVALC,INVALC,INVALC,INVALC,0x7474,0x7A32, INVALC,INVALC,0x6F75,0x4A5F,INVALC,0x6B31,0x6D3F,INVALC, INVALC,0x7D49,INVALC,INVALC,INVALC,INVALC,0x6426,0x7924, 0x7033,INVALC,0x656C,INVALC,INVALC,INVALC,0x5167,INVALC, /* Block 140, Array index 0x4E00 */ 0x5947,0x6457,0x6A5D,INVALC,0x5477,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5A3A,INVALC, 0x5A4D,INVALC,INVALC,INVALC,0x794C,INVALC,0x615A,0x5B3F, INVALC,0x4C45,0x6C50,0x4B3B,INVALC,0x5E73,INVALC,INVALC, 0x692A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5948,INVALC,INVALC,0x6E63,0x573D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4F44,INVALC,INVALC,INVALC,INVALC, INVALC,0x504D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7C26,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x717B,INVALC,INVALC,INVALC,INVALC,0x7D52,0x5141, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x635B,INVALC,0x5349,INVALC,0x5C4F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4C6D,INVALC, INVALC,INVALC,INVALC,INVALC,0x5E27,INVALC,INVALC,0x663B, 0x6C21,INVALC,INVALC,INVALC,0x4C39,INVALC,INVALC,0x7B5E, INVALC,INVALC,INVALC,INVALC,INVALC,0x6762,INVALC,INVALC, 0x5441,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5C28,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6242,INVALC,0x7358,0x6553,INVALC,INVALC,0x7359,INVALC, INVALC,INVALC,0x7346,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 141, Array index 0x4F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4D5B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4D2C, INVALC,0x7C43,INVALC,INVALC,INVALC,INVALC,0x5467,INVALC, 0x5142,INVALC,0x7925,INVALC,0x6855,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x634E,INVALC,INVALC, INVALC,INVALC,0x544A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5F5A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7B5F,0x6763,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x787B,0x634F,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7530,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5867,INVALC,0x5949,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x782F,0x6F76,INVALC, 0x5D36,0x6E2F,0x4D78,INVALC,INVALC,INVALC,INVALC,0x5E38, 0x7C27,0x777C,0x7731,0x4E3B,0x7421,INVALC,INVALC,0x6E4D, 0x612E,INVALC,INVALC,0x6C43,0x4F7E,INVALC,0x783F,0x5862, 0x5368,INVALC,INVALC,0x5E28,0x7464,0x6C42,INVALC,0x5975, 0x7945,0x5D53,0x5671,0x6C7C,0x7C70,INVALC,INVALC,0x6D40, 0x4A39,INVALC,0x6E64,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7261,INVALC,0x5E39,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5672,INVALC,0x5E74,INVALC,0x5F5B,INVALC, 0x5B53,INVALC,0x7A67,0x5863,0x7441,INVALC,0x5D37,INVALC, INVALC,INVALC,0x7275,INVALC,INVALC,0x542E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5673,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5D38,0x4F45,0x5F5F,INVALC,INVALC, /* Block 142, Array index 0x5000 */ INVALC,INVALC,INVALC,INVALC,0x723E,0x7621,INVALC,0x6B4B, 0x717C,INVALC,0x7347,INVALC,INVALC,0x606B,INVALC,INVALC, INVALC,INVALC,INVALC,0x6D7C,INVALC,INVALC,0x615B,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6E65,INVALC,0x5E75,INVALC, INVALC,INVALC,INVALC,0x7A53,INVALC,INVALC,INVALC,INVALC, 0x714B,INVALC,INVALC,0x502F,0x5D39,INVALC,INVALC,0x5143, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7531,INVALC,INVALC, INVALC,INVALC,0x6A46,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7061,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x762C,INVALC,INVALC,INVALC,INVALC, 0x7559,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x706B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5D3A,INVALC,INVALC,INVALC,0x723F,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7745,INVALC, INVALC,INVALC,INVALC,0x5B22,0x7276,INVALC,INVALC,0x4A3A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7775,INVALC,0x4B65,INVALC,INVALC, INVALC,0x6E66,INVALC,0x6053,INVALC,INVALC,INVALC,INVALC, 0x4E25,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5658, INVALC,INVALC,INVALC,0x542F,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 143, Array index 0x5100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6949,INVALC,INVALC,INVALC,INVALC,0x534E, 0x7442,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4B66,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7121,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6B32,INVALC,INVALC,INVALC,INVALC,0x7122,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6B33,INVALC,0x7034,INVALC,INVALC,0x4B74, 0x5430,0x7332,0x7B37,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x756C,INVALC,INVALC,INVALC,INVALC,INVALC,0x6E67, 0x7432,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x756D,INVALC,0x4F73,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7062,INVALC,INVALC,INVALC,INVALC,INVALC,0x6E4E, INVALC,INVALC,0x714C,INVALC,INVALC,0x6538,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x5775,0x6373,0x4F65,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4F46,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7333,0x6458,0x4F79,0x4F5A,INVALC,INVALC, INVALC,INVALC,0x7A4D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6663, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7262,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x756E,INVALC,INVALC,0x4A3B,INVALC,INVALC,0x635C,INVALC, /* Block 144, Array index 0x5200 */ INVALC,INVALC,INVALC,0x4E72,INVALC,0x5659,INVALC,INVALC, INVALC,0x6E30,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7465,0x5842,0x5C50,0x4C6E,INVALC,INVALC, INVALC,INVALC,INVALC,0x5560,0x764A,0x7D4A,0x5856,0x744F, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5626,0x5C3E, INVALC,0x5B54,0x5747,INVALC,INVALC,INVALC,INVALC,0x727E, INVALC,INVALC,INVALC,0x714D,INVALC,INVALC,INVALC,INVALC, 0x6243,0x5C5E,INVALC,0x5C5F,INVALC,INVALC,0x6F2D,0x662B, INVALC,INVALC,INVALC,INVALC,0x795D,0x6A3F,INVALC,INVALC, INVALC,0x6F2E,INVALC,INVALC,INVALC,0x7450,0x4E73,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x662C,INVALC,0x4E5E, INVALC,INVALC,0x5579,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6374,0x4D50,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5538,INVALC,INVALC,0x777D,INVALC, 0x5C29,INVALC,INVALC,INVALC,INVALC,0x5E76,INVALC,0x5C2A, 0x7263,0x6934,0x525C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6966,INVALC,INVALC,0x6376,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x674A,INVALC, INVALC,0x504E,INVALC,INVALC,0x5A77,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4A3C,INVALC, INVALC,INVALC,0x6E68,0x5A5E,INVALC,0x7277,INVALC,INVALC, 0x627B,INVALC,0x4C26,INVALC,INVALC,INVALC,INVALC,0x5A3B, INVALC,0x6E69,INVALC,INVALC,INVALC,0x755A,INVALC,INVALC, /* Block 145, Array index 0x5300 */ 0x775C,0x616A,0x4E41,0x5431,INVALC,0x7D31,0x663D,INVALC, 0x7B2D,INVALC,INVALC,0x7867,INVALC,0x614E,INVALC,0x7762, 0x756F,0x4F47,INVALC,INVALC,0x5432,0x4C6F,INVALC,0x5468, INVALC,0x6E4F,0x7757,INVALC,INVALC,0x6026,0x5641,0x615C, 0x7063,0x7164,0x5C71,0x5627,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7475,INVALC, INVALC,0x714E,0x7264,INVALC,INVALC,0x5030,INVALC,INVALC, 0x6C6F,INVALC,INVALC,INVALC,0x793A,INVALC,0x6B35,INVALC, INVALC,0x546D,0x6244,INVALC,INVALC,INVALC,INVALC,0x6967, INVALC,INVALC,0x6B34,0x6A21,INVALC,0x783C,0x4E26,INVALC, 0x7946,0x7C5A,INVALC,0x5433,0x5339,0x6A5E,INVALC,INVALC, INVALC,0x692B,INVALC,INVALC,0x6161,0x534F,0x7476,INVALC, 0x6A40,0x614F,INVALC,0x4C3A,INVALC,INVALC,INVALC,INVALC, INVALC,0x6E6A,INVALC,INVALC,INVALC,0x7064,0x7334,0x546E, INVALC,INVALC,0x7240,INVALC,INVALC,0x7165,INVALC,0x7443, 0x6054,INVALC,0x6B36,INVALC,0x5721,0x4B68,INVALC,0x792D, 0x692D,0x5864,0x7A33,0x6245,0x7C3D,INVALC,INVALC,0x6C44, 0x5831,INVALC,0x5C2B,INVALC,INVALC,INVALC,INVALC,0x5524, INVALC,0x6B69,INVALC,INVALC,INVALC,0x683B,INVALC,INVALC, INVALC,0x5857,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7B2E,0x5161,INVALC,INVALC,0x5B40,INVALC, 0x753E,INVALC,0x5E77,INVALC,INVALC,INVALC,INVALC,0x4A7B, 0x7746,0x4F48,INVALC,INVALC,INVALC,0x6150,INVALC,INVALC, 0x6E50,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6974,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x4E74,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x554D,INVALC, INVALC,0x4F5B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5D3B,INVALC,INVALC,INVALC,INVALC,0x4E2C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6968,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5434,INVALC,INVALC, /* Block 146, Array index 0x5400 */ INVALC,INVALC,0x6447,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x755B,INVALC,INVALC,0x7A41,INVALC,INVALC, INVALC,0x5E29,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5478, INVALC,INVALC,INVALC,INVALC,INVALC,0x6F77,INVALC,INVALC, INVALC,INVALC,0x5333,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6B37,0x6F78,0x755C,0x6D4C,0x5B55,0x714F,INVALC, INVALC,INVALC,0x7150,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7532,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x592E,0x552C,INVALC,0x6246,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7D23,INVALC,0x7B65, 0x5F2B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6275, INVALC,0x762D,INVALC,0x7533,INVALC,0x7035,INVALC,INVALC, INVALC,INVALC,0x6125,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x755D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6C22,0x6D7D,INVALC,0x7534,0x7B38, INVALC,0x5B23,INVALC,INVALC,0x564A,0x4B59,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6554,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x737A, INVALC,0x6B38,INVALC,0x6037,0x576C,0x716C,0x652F,0x5561, 0x576D,0x5151,INVALC,INVALC,INVALC,INVALC,INVALC,0x6172, 0x6F79,INVALC,INVALC,INVALC,0x5D3C,0x765C,INVALC,INVALC, INVALC,INVALC,INVALC,0x7065,INVALC,INVALC,INVALC,0x7444, INVALC,INVALC,0x6969,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x737B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 147, Array index 0x5500 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x546F,INVALC,INVALC, 0x4C22,0x777E,0x5F3C,INVALC,INVALC,INVALC,INVALC,0x6B4D, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5037,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5642,INVALC,INVALC,INVALC, INVALC,INVALC,0x682D,INVALC,INVALC,INVALC,INVALC,0x6F2F, 0x4B25,INVALC,INVALC,INVALC,INVALC,0x4B69,INVALC,INVALC, INVALC,0x7A68,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4C46, INVALC,INVALC,INVALC,0x6667,INVALC,INVALC,0x6A47,INVALC, INVALC,INVALC,0x5B24,INVALC,0x4F49,0x627C,0x6F7A,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6B5E,INVALC,INVALC,0x7548,INVALC,0x545E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6055,INVALC,0x6F30,INVALC,INVALC,0x6247,INVALC, 0x592F,INVALC,INVALC,INVALC,0x7967,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6765,INVALC,INVALC,0x4F4A,0x6151, INVALC,0x6248,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6F7B,INVALC,INVALC,0x7A79, INVALC,INVALC,0x5C72,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6027,INVALC,INVALC,INVALC, INVALC,INVALC,0x7868,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4B6A,INVALC,INVALC,INVALC,0x4B3C,INVALC,INVALC,INVALC, /* Block 148, Array index 0x5600 */ INVALC,INVALC,INVALC,INVALC,0x5662,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x755E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x755F,INVALC,0x6E36,INVALC,INVALC,INVALC,0x6276,0x534A, 0x6F7C,0x5144,0x6F31,INVALC,0x5145,INVALC,0x505E,INVALC, 0x5961,INVALC,INVALC,0x6038,INVALC,INVALC,0x4D51,0x7339, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x674C,INVALC,0x5628,0x4E27,INVALC,0x5435,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x6448,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5334,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6B39,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4B75,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x765D,INVALC,0x7123,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4C47,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x694A,INVALC,0x6170,INVALC, INVALC,INVALC,0x7560,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7B2F,INVALC,INVALC,INVALC,0x4B51, INVALC,INVALC,INVALC,INVALC,0x7B60,0x7265,INVALC,INVALC, 0x6C70,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x706C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6E6B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x694B,INVALC, INVALC,0x4C70,INVALC,INVALC,0x572F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7321,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 149, Array index 0x5700 */ INVALC,INVALC,INVALC,INVALC,0x7C75,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7124,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6056,INVALC,INVALC, INVALC,INVALC,INVALC,0x6F32,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7451,INVALC,INVALC, 0x7721,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7151,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4A7C,0x4A7D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4E4E,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7348,INVALC,0x733A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 150, Array index 0x5800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6D7E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5A26,INVALC,INVALC,0x606C,INVALC,INVALC,INVALC,INVALC, INVALC,0x784D,INVALC,0x4B52,INVALC,INVALC,INVALC,0x6B4E, INVALC,0x7958,0x7959,0x4A60,0x5A4A,INVALC,INVALC,INVALC, 0x4B26,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4A48,0x796E,0x5B6C,INVALC,INVALC, 0x5031,INVALC,INVALC,INVALC,INVALC,0x556F,INVALC,INVALC, INVALC,0x6673,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6722,0x6459,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6461, INVALC,INVALC,0x7C44,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x796F,0x4F74,0x7766,INVALC, INVALC,INVALC,INVALC,INVALC,0x4E3C,INVALC,INVALC,INVALC, INVALC,0x7445,0x5C23,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 151, Array index 0x5900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5D3D,INVALC,INVALC,INVALC, INVALC,0x7446,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x7821,INVALC,INVALC,INVALC,0x6856,INVALC, INVALC,INVALC,0x5B41,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7066,INVALC,INVALC,INVALC,0x6439, 0x766D,INVALC,0x792E,INVALC,0x5D3E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5730,0x5868,0x4B3D,INVALC,INVALC, 0x795A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x784E,0x7970,0x606D,0x6333,0x7433, INVALC,INVALC,0x6A42,0x7266,0x7036,INVALC,INVALC,INVALC, INVALC,INVALC,0x5B56,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6B64,INVALC,INVALC,0x7267,INVALC,0x5755,0x5436,0x7968, 0x5741,INVALC,INVALC,INVALC,INVALC,0x6555,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x696A,0x574C,INVALC, INVALC,INVALC,0x5369,0x6249,INVALC,0x7C5B,0x4D2D,INVALC, INVALC,INVALC,INVALC,INVALC,0x4C30,0x6A22,INVALC,INVALC, 0x6476,0x5040,INVALC,0x7037,0x6E21,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5776,INVALC,INVALC,INVALC,0x624A, 0x624B,INVALC,0x7A4F,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6B5F,INVALC,INVALC,INVALC,INVALC,INVALC,0x564B, INVALC,INVALC,INVALC,0x7434,INVALC,INVALC,INVALC,INVALC, 0x6D4D,0x6452,INVALC,INVALC,0x6A29,0x643A,0x7322,0x4D52, INVALC,0x764B,INVALC,0x7166,0x6D41,0x683C,0x6E51,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7067,0x624C,INVALC, INVALC,0x642A,INVALC,0x7561,0x6D5A,INVALC,INVALC,INVALC, INVALC,INVALC,0x576E,0x5171,INVALC,INVALC,INVALC,INVALC, 0x696B,0x696C,0x6064,INVALC,INVALC,INVALC,INVALC,0x5A27, 0x5D54,INVALC,0x6A23,INVALC,INVALC,INVALC,0x5643,0x5674, INVALC,0x5A5F,INVALC,0x6F33,INVALC,INVALC,INVALC,INVALC, /* Block 152, Array index 0x5A00 */ 0x624D,INVALC,INVALC,INVALC,INVALC,INVALC,0x6F7D,0x7268, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6F45,INVALC,0x6767,INVALC,INVALC,0x577D,INVALC, INVALC,0x674E,INVALC,INVALC,0x5F5C,INVALC,0x7947,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5976, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5F2C,INVALC,0x565A,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5C24,INVALC,INVALC,INVALC,0x7038,INVALC,INVALC, INVALC,INVALC,0x557A,INVALC,0x6477,INVALC,INVALC,INVALC, 0x5644,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x746C,INVALC,INVALC,INVALC,INVALC,0x6F7E,INVALC, INVALC,INVALC,INVALC,INVALC,0x7021,INVALC,0x5E2A,INVALC, INVALC,0x5A3C,0x587C,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x7A54,INVALC,INVALC,INVALC,0x6C65,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x7C28,INVALC,INVALC,0x6C66, INVALC,INVALC,0x584B,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7B39,INVALC,0x6453,INVALC,0x4D79, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4F53,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4A6A,INVALC,INVALC,0x4F54,INVALC,0x783D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7447,INVALC, INVALC,INVALC,INVALC,0x6A5F,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x795B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5437,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6B65,INVALC,INVALC,0x6152,INVALC, INVALC,INVALC,INVALC,0x6A24,INVALC,INVALC,INVALC,0x7A42, /* Block 153, Array index 0x5B00 */ 0x7B61,0x7A6D,0x7022,0x4C71,INVALC,0x7A23,0x6277,INVALC, 0x624E,INVALC,0x6975,INVALC,0x616B,INVALC,INVALC,INVALC, 0x6768,0x6857,0x5A78,0x544B,INVALC,INVALC,INVALC,0x7776, 0x5645,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5469,INVALC,INVALC, 0x7A7A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4C72,0x775D,INVALC,0x5E3A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4E28,INVALC, INVALC,INVALC,INVALC,INVALC,0x7039,0x647E,0x6449,INVALC, INVALC,INVALC,INVALC,INVALC,0x6454,INVALC,INVALC,INVALC, 0x6A43,INVALC,0x6F34,INVALC,INVALC,INVALC,0x573E,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7B62,INVALC,0x4D53, INVALC,INVALC,INVALC,0x6F35,INVALC,INVALC,INVALC,0x7A69, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7926,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5F3D, INVALC,0x7747,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x787D,INVALC,INVALC,0x787C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5E2B,0x5B68,INVALC,INVALC,0x635D, INVALC,0x6162,0x5146,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7650,0x6B66,0x5A79, INVALC,INVALC,INVALC,INVALC,0x6C47,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5E78,0x7869,0x635E,INVALC, /* Block 154, Array index 0x5C00 */ INVALC,INVALC,INVALC,0x4E75,INVALC,INVALC,INVALC,INVALC, INVALC,0x7A43,0x6557,INVALC,0x6C48,INVALC,INVALC,INVALC, 0x7349,INVALC,INVALC,0x643B,INVALC,INVALC,INVALC,INVALC, 0x662E,INVALC,INVALC,INVALC,INVALC,INVALC,0x6F36,INVALC, 0x5C3F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4E3D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5843,INVALC,INVALC, INVALC,0x504F,INVALC,0x4F7A,0x734A,0x6057,INVALC,INVALC, INVALC,0x5147,0x692E,INVALC,0x683D,INVALC,INVALC,0x7A44, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x624F,INVALC, INVALC,0x7A45,INVALC,INVALC,INVALC,0x7938,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5C60,INVALC,INVALC, 0x7B30,INVALC,INVALC,INVALC,0x5829,0x655F,0x7927,INVALC, INVALC,0x766E,INVALC,0x764C,0x6278,INVALC,INVALC,INVALC, INVALC,0x6C71,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5A60,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7152,0x524C,0x4F4B,INVALC,INVALC,0x4A3D,INVALC,INVALC, INVALC,0x5D3F,INVALC,INVALC,INVALC,0x766F,INVALC,0x5E79, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7A34,INVALC,INVALC, INVALC,0x552D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x7167, /* Block 155, Array index 0x5D00 */ INVALC,0x5E3E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5C40,INVALC,INVALC,INVALC,INVALC,INVALC,0x5148,0x5149, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x783E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4B76,INVALC,INVALC,INVALC,INVALC, 0x5479,INVALC,INVALC,INVALC,INVALC,INVALC,0x7562,0x6153, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x5869,INVALC,INVALC,0x787E,INVALC,0x4F4C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7D24,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4E76,INVALC,0x7A50, INVALC,INVALC,0x4C73,0x663E,INVALC,INVALC,INVALC,0x762E, INVALC,INVALC,0x5570,INVALC,INVALC,0x514A,INVALC,INVALC, INVALC,0x7C3E,0x5571,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4D69,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7A35,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6250,0x7477,INVALC,INVALC,INVALC, 0x4D54,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6723,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5B25,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 156, Array index 0x5E00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6251,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5722, INVALC,INVALC,0x7763,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x6A26,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5021,INVALC,INVALC,INVALC, INVALC,0x4E5A,0x7B6B,0x5B26,0x5B5E,0x5865,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6A60, INVALC,INVALC,INVALC,INVALC,0x582A,INVALC,INVALC,INVALC, INVALC,INVALC,0x6560,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x565B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6F46,INVALC, INVALC,0x786A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6455, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4E77,INVALC,INVALC,0x6058,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x576F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x746D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4D66,INVALC,INVALC,INVALC, 0x4C74,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 157, Array index 0x5F00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7563,INVALC,INVALC, 0x644A,INVALC,0x5C61,INVALC,INVALC,0x7948,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7C3F,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6827,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5844,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4B3E, INVALC,0x5C2E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x5777, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x7068,INVALC,0x5D40, INVALC,0x4F4D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5C73,0x5930,INVALC,0x6669,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 158, Array index 0x6000 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x643C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x6A44,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x646C,INVALC, 0x6465,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x7B78,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4C3B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x643D,INVALC,INVALC, 0x4D5C,0x5977,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5D5F,INVALC,INVALC,INVALC, INVALC,INVALC,0x6D4E,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x5950,INVALC,INVALC,INVALC,INVALC,INVALC,0x6523, INVALC,INVALC,INVALC,INVALC,0x794D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4D2E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4F4E, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x762F,INVALC,INVALC,INVALC,INVALC,INVALC, 0x7D53,0x6B6D,0x565C,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 159, Array index 0x6100 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x6524,INVALC,INVALC,INVALC,0x5536,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x565D,INVALC,INVALC, INVALC,0x7969,INVALC,INVALC,INVALC,0x6724,INVALC,0x5663, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x514B,0x5664,INVALC,INVALC,INVALC,0x5572, INVALC,INVALC,INVALC,INVALC,INVALC,0x5E7A,INVALC,0x5778, INVALC,INVALC,INVALC,INVALC,INVALC,0x586A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4F55,0x587D,INVALC,INVALC, INVALC,INVALC,INVALC,0x582B,INVALC,INVALC,0x7D4B,INVALC, INVALC,INVALC,INVALC,0x7C5C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x6028,0x5573,INVALC, INVALC,0x7D59,INVALC,INVALC,0x4C23,INVALC,INVALC,INVALC, 0x5979,INVALC,INVALC,0x536A,0x7575,INVALC,0x6F47,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x535A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x5A3D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 160, Array index 0x6200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6828, 0x5C2F,INVALC,INVALC,INVALC,INVALC,INVALC,0x7023,INVALC, INVALC,INVALC,INVALC,0x4D55,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x6029,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x5E2C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,0x703A,0x6E31,INVALC,INVALC,0x6E32,INVALC, INVALC,INVALC,0x764D,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x6E52, INVALC,0x5646,INVALC,INVALC,INVALC,INVALC,INVALC,0x6065, INVALC,INVALC,0x733B,INVALC,0x6561,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x644B, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x5723,INVALC,INVALC, 0x5B42,INVALC,INVALC,INVALC,INVALC,0x4A7E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4F4F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 173, Array index 0x6300 */ 0x3021,0x3022,INVALC,INVALC,0x3023,INVALC,INVALC,0x3024, 0x3025,0x3026,0x3027,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3028,0x3029,0x302A,0x302B,0x302C,0x302D,0x302E,0x302F, INVALC,0x3030,0x3031,0x3032,0x3033,0x3034,INVALC,INVALC, 0x3035,INVALC,INVALC,INVALC,0x3036,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3037,0x3038,INVALC,0x3039, 0x303A,0x303B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x303C,0x303D,INVALC,INVALC,0x303E,INVALC,INVALC,INVALC, 0x303F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3040,INVALC,0x3041,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3042,INVALC,INVALC,INVALC, 0x3043,INVALC,INVALC,INVALC,0x3044,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3045,0x3046,INVALC,INVALC,0x3047,INVALC,INVALC,0x3048, 0x3049,INVALC,0x304A,INVALC,INVALC,INVALC,INVALC,INVALC, 0x304B,0x304C,INVALC,0x304D,0x304E,0x304F,0x3050,INVALC, INVALC,0x3051,0x3052,0x3053,0x3054,INVALC,INVALC,INVALC, 0x3055,INVALC,INVALC,INVALC,0x3056,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3057,0x3058,INVALC,0x3059, 0x305A,0x305B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x305C,0x305D,0x305E,INVALC,0x305F,INVALC,INVALC,0x3060, 0x3061,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3062,0x3063,INVALC,0x3064,0x3065,0x3066,INVALC,INVALC, INVALC,0x3067,INVALC,INVALC,0x3068,INVALC,INVALC,INVALC, 0x3069,INVALC,INVALC,INVALC,0x306A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x306B,INVALC,0x306C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x306D,0x306E,INVALC,INVALC,0x306F,INVALC,INVALC,0x3070, 0x3071,INVALC,0x3072,INVALC,0x3073,INVALC,INVALC,0x3074, 0x3075,0x3076,INVALC,0x3077,INVALC,0x3078,0x3079,INVALC, INVALC,INVALC,INVALC,INVALC,0x307A,0x307B,INVALC,INVALC, /* Block 174, Array index 0x6400 */ 0x307C,INVALC,INVALC,INVALC,0x307D,INVALC,0x307E,INVALC, INVALC,INVALC,INVALC,INVALC,0x3121,0x3122,INVALC,0x3123, INVALC,0x3124,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3125,INVALC,INVALC,INVALC,0x3126,INVALC,INVALC,INVALC, 0x3127,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3128,INVALC,INVALC,0x3129,0x312A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x312B,0x312C,INVALC,INVALC, 0x312D,INVALC,INVALC,INVALC,0x312E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x312F,0x3130,INVALC,0x3131, INVALC,0x3132,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3133,INVALC,INVALC,INVALC,0x3134,INVALC,INVALC,INVALC, 0x3135,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3136,INVALC,0x3137,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3138,0x3139,INVALC,INVALC, 0x313A,INVALC,INVALC,0x313B,0x313C,0x313D,0x313E,INVALC, INVALC,INVALC,INVALC,0x313F,0x3140,0x3141,INVALC,0x3142, INVALC,0x3143,0x3144,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3145,0x3146,INVALC,INVALC,0x3147,INVALC,INVALC,INVALC, 0x3148,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3149,0x314A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x314B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x314C, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x314D,0x314E,INVALC,INVALC,0x314F,INVALC,INVALC,INVALC, 0x3150,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3151,0x3152,INVALC,0x3153,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3154,INVALC,INVALC,INVALC, 0x3155,INVALC,INVALC,INVALC,0x3156,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3157,0x3158,INVALC,INVALC,0x3159,INVALC,INVALC,0x315A, /* Block 175, Array index 0x6500 */ 0x315B,0x315C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x315D,0x315E,INVALC,0x315F,INVALC,0x3160,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3161,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3162,0x3163,INVALC,INVALC,0x3164,INVALC,INVALC,0x3165, 0x3166,INVALC,0x3167,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3168,0x3169,INVALC,0x316A,INVALC,0x316B,0x316C,INVALC, INVALC,INVALC,0x316D,INVALC,0x316E,0x316F,0x3170,INVALC, 0x3171,INVALC,INVALC,INVALC,0x3172,INVALC,0x3173,INVALC, INVALC,INVALC,INVALC,INVALC,0x3174,0x3175,INVALC,0x3176, 0x3177,0x3178,INVALC,INVALC,INVALC,0x3179,INVALC,INVALC, 0x317A,0x317B,INVALC,INVALC,0x317C,INVALC,INVALC,INVALC, 0x317D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x317E,0x3221,INVALC,0x3222,0x3223,0x3224,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3225,0x3226,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3227,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3228,0x3229,0x322A,INVALC, 0x322B,INVALC,INVALC,INVALC,0x322C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x322D,0x322E,INVALC,0x322F, 0x3230,0x3231,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3232,0x3233,INVALC,INVALC,0x3234,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3235,INVALC,INVALC,0x3236,INVALC,0x3237,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3238,INVALC,INVALC,INVALC, 0x3239,INVALC,INVALC,INVALC,0x323A,INVALC,INVALC,INVALC, /* Block 176, Array index 0x6600 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x323B, 0x323C,INVALC,INVALC,INVALC,INVALC,0x323D,INVALC,INVALC, 0x323E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x323F,0x3240,INVALC,INVALC, 0x3241,INVALC,0x3242,INVALC,0x3243,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3244,0x3245,INVALC,0x3246, INVALC,0x3247,0x3248,0x3249,INVALC,INVALC,INVALC,INVALC, 0x324A,0x324B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x324C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x324D,0x324E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x324F,0x3250,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3251,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3252,INVALC,INVALC,INVALC,0x3253,INVALC,INVALC,INVALC, 0x3254,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3255,0x3256,INVALC,INVALC,INVALC,0x3257,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3258,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3259,0x325A,INVALC,INVALC,0x325B,INVALC,INVALC,INVALC, 0x325C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x325D, 0x325E,0x325F,INVALC,0x3260,INVALC,0x3261,0x3262,INVALC, INVALC,INVALC,INVALC,INVALC,0x3263,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3264,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3265,0x3266,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3267,0x3268,INVALC,INVALC,0x3269,INVALC,INVALC,INVALC, 0x326A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 177, Array index 0x6700 */ 0x326B,0x326C,INVALC,INVALC,0x326D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x326E,INVALC,INVALC,INVALC, 0x326F,INVALC,INVALC,INVALC,0x3270,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3271,0x3272,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3273,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3274,0x3275,INVALC,INVALC, 0x3276,INVALC,0x3277,INVALC,0x3278,INVALC,0x3279,INVALC, INVALC,INVALC,INVALC,0x327A,0x327B,0x327C,INVALC,0x327D, INVALC,0x327E,INVALC,INVALC,INVALC,0x3321,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3322,0x3323,INVALC,INVALC, 0x3324,INVALC,INVALC,INVALC,0x3325,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3326,0x3327,INVALC,0x3328, INVALC,0x3329,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x332A,0x332B,0x332C,INVALC,0x332D,INVALC,INVALC,0x332E, 0x332F,0x3330,0x3331,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3332,0x3333,INVALC,0x3334,0x3335,0x3336,0x3337,0x3338, INVALC,0x3339,INVALC,0x333A,0x333B,0x333C,INVALC,INVALC, 0x333D,INVALC,INVALC,INVALC,0x333E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x333F,0x3340,INVALC,0x3341, 0x3342,0x3343,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3344,0x3345,INVALC,INVALC,0x3346,INVALC,INVALC,INVALC, 0x3347,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3348,INVALC,INVALC,INVALC,INVALC,0x3349,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 178, Array index 0x6800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x334A,0x334B,INVALC,0x334C,0x334D,INVALC,INVALC,INVALC, 0x334E,INVALC,0x334F,0x3350,INVALC,INVALC,INVALC,INVALC, 0x3351,0x3352,INVALC,0x3353,0x3354,0x3355,INVALC,INVALC, INVALC,INVALC,INVALC,0x3356,0x3357,0x3358,INVALC,INVALC, 0x3359,INVALC,INVALC,INVALC,0x335A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x335B,0x335C,INVALC,0x335D, 0x335E,0x335F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3360,0x3361,INVALC,INVALC,0x3362,INVALC,INVALC,INVALC, 0x3363,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3364,0x3365,INVALC,INVALC,0x3366,0x3367,INVALC,INVALC, 0x3368,INVALC,INVALC,INVALC,0x3369,INVALC,INVALC,INVALC, 0x336A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x336B,0x336C,INVALC,INVALC,0x336D,INVALC,INVALC,INVALC, 0x336E,INVALC,0x336F,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3370,0x3371,INVALC,0x3372,INVALC,0x3373,INVALC,INVALC, INVALC,INVALC,0x3374,0x3375,0x3376,INVALC,INVALC,INVALC, 0x3377,INVALC,INVALC,INVALC,0x3378,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3379,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x337A,INVALC,INVALC,INVALC, 0x337B,INVALC,INVALC,INVALC,0x337C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x337D,0x337E,INVALC,0x3421, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3422,0x3423,INVALC,INVALC,0x3424,INVALC,INVALC,INVALC, 0x3425,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3426,INVALC,0x3427,INVALC,0x3428,INVALC,INVALC, /* Block 179, Array index 0x6900 */ INVALC,INVALC,INVALC,INVALC,0x3429,0x342A,INVALC,INVALC, 0x342B,INVALC,INVALC,0x342C,0x342D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x342E,0x342F,INVALC,0x3430, INVALC,0x3431,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3432,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3433,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3434,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3435,INVALC,INVALC,INVALC,0x3436,INVALC,INVALC,INVALC, 0x3437,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3438,0x3439,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x343A,0x343B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x343C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x343D,0x343E,INVALC,INVALC, INVALC,0x343F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3440,0x3441,INVALC,INVALC,0x3442,INVALC,INVALC,INVALC, 0x3443,0x3444,0x3445,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3446,0x3447,INVALC,0x3448,INVALC,0x3449,0x344A,INVALC, INVALC,INVALC,0x344B,INVALC,0x344C,INVALC,INVALC,INVALC, 0x344D,INVALC,INVALC,INVALC,0x344E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x344F,0x3450,INVALC,INVALC,0x3451,INVALC,INVALC,INVALC, 0x3452,INVALC,0x3453,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3454,0x3455,INVALC,0x3456,INVALC,0x3457,INVALC,INVALC, INVALC,INVALC,0x3458,INVALC,0x3459,0x345A,0x345B,INVALC, 0x345C,INVALC,INVALC,0x345D,0x345E,0x345F,0x3460,0x3461, INVALC,INVALC,INVALC,0x3462,0x3463,0x3464,INVALC,0x3465, 0x3466,0x3467,0x3468,0x3469,INVALC,INVALC,INVALC,0x346A, /* Block 180, Array index 0x6A00 */ 0x346B,0x346C,INVALC,INVALC,0x346D,INVALC,INVALC,INVALC, 0x346E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x346F,0x3470,INVALC,0x3471,0x3472,0x3473,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3474,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3475,0x3476,0x3477,INVALC, 0x3478,INVALC,INVALC,0x3479,0x347A,INVALC,0x347B,0x347C, INVALC,INVALC,INVALC,INVALC,0x347D,0x347E,INVALC,0x3521, INVALC,0x3522,INVALC,0x3523,INVALC,INVALC,0x3524,INVALC, 0x3525,0x3526,INVALC,INVALC,0x3527,INVALC,INVALC,INVALC, 0x3528,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3529,0x352A,INVALC,0x352B,0x352C,0x352D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x352E,INVALC,INVALC,INVALC, 0x352F,INVALC,INVALC,INVALC,0x3530,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3531,0x3532,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3533,INVALC,INVALC,INVALC,0x3534,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3535,0x3536,INVALC,INVALC, 0x3537,INVALC,INVALC,0x3538,0x3539,INVALC,0x353A,INVALC, 0x353B,INVALC,INVALC,INVALC,0x353C,0x353D,INVALC,0x353E, INVALC,0x353F,INVALC,0x3540,INVALC,0x3541,INVALC,INVALC, 0x3542,INVALC,INVALC,INVALC,0x3543,INVALC,INVALC,INVALC, 0x3544,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3545,INVALC,INVALC,INVALC, /* Block 181, Array index 0x6B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3546,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3547,INVALC,INVALC,INVALC,0x3548,INVALC,INVALC,INVALC, 0x3549,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x354A,0x354B,INVALC,0x354C,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x354D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x354E,0x354F,INVALC,INVALC,0x3550,INVALC,INVALC,INVALC, 0x3551,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3552,0x3553,INVALC,0x3554,INVALC,0x3555,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3556,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3557,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3558,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3559,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x355A,INVALC,INVALC,INVALC, 0x355B,INVALC,INVALC,INVALC,0x355C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x355D,INVALC,0x355E, INVALC,0x355F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3560,INVALC,INVALC,INVALC,0x3561,INVALC,INVALC,INVALC, 0x3562,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3563,INVALC,INVALC,INVALC,INVALC,0x3564,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3565,0x3566,INVALC,INVALC, 0x3567,INVALC,INVALC,0x3568,0x3569,INVALC,0x356A,INVALC, INVALC,INVALC,INVALC,INVALC,0x356B,0x356C,INVALC,0x356D, INVALC,0x356E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x356F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 182, Array index 0x6C00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3570,0x3571,INVALC,INVALC, 0x3572,INVALC,INVALC,0x3573,0x3574,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3575,0x3576,INVALC,0x3577, 0x3578,0x3579,0x357A,INVALC,INVALC,INVALC,INVALC,INVALC, 0x357B,0x357C,INVALC,INVALC,0x357D,INVALC,INVALC,INVALC, 0x357E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3621,0x3622,INVALC,0x3623,0x3624,0x3625,INVALC,INVALC, INVALC,INVALC,INVALC,0x3626,0x3627,0x3628,INVALC,INVALC, 0x3629,INVALC,INVALC,INVALC,0x362A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x362B,0x362C,INVALC,0x362D, 0x362E,0x362F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3630,0x3631,INVALC,INVALC,0x3632,INVALC,INVALC,INVALC, 0x3633,INVALC,0x3634,0x3635,INVALC,INVALC,INVALC,INVALC, 0x3636,0x3637,INVALC,0x3638,0x3639,0x363A,INVALC,INVALC, INVALC,INVALC,INVALC,0x363B,0x363C,0x363D,INVALC,INVALC, 0x363E,INVALC,INVALC,INVALC,0x363F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3640,0x3641,INVALC,0x3642, 0x3643,0x3644,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3645,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3646,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 183, Array index 0x6D00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3647,0x3648,INVALC,INVALC,0x3649,INVALC,INVALC,INVALC, 0x364A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x364B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x364C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x364D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x364E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x364F,INVALC,INVALC,INVALC, 0x3650,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3651,0x3652,INVALC,INVALC, 0x3653,INVALC,INVALC,INVALC,0x3654,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3655,0x3656,INVALC,INVALC,INVALC, INVALC,0x3657,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3658,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3659,INVALC,INVALC,INVALC,0x365A,INVALC,INVALC,INVALC, 0x365B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 184, Array index 0x6E00 */ 0x365C,0x365D,INVALC,INVALC,INVALC,0x365E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x365F,0x3660,INVALC,INVALC,0x3661,INVALC,INVALC,0x3662, 0x3663,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3664,0x3665,INVALC,0x3666,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3667,INVALC,INVALC,INVALC, 0x3668,INVALC,INVALC,INVALC,0x3669,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x366A,0x366B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x366C,INVALC,INVALC,INVALC,0x366D,INVALC,INVALC,INVALC, 0x366E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x366F,0x3670,INVALC,0x3671,INVALC,0x3672,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3673,0x3674,INVALC,INVALC, 0x3675,INVALC,INVALC,INVALC,0x3676,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3677,0x3678,INVALC,0x3679, 0x367A,0x367B,0x367C,INVALC,INVALC,INVALC,0x367D,0x367E, 0x3721,0x3722,INVALC,INVALC,0x3723,INVALC,INVALC,INVALC, 0x3724,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3725,0x3726,INVALC,0x3727,0x3728,0x3729,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x372A,0x372B,INVALC,INVALC, 0x372C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x372D, INVALC,0x372E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x372F,0x3730,INVALC,INVALC, 0x3731,INVALC,INVALC,INVALC,0x3732,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3733,0x3734,INVALC,0x3735, /* Block 185, Array index 0x6F00 */ 0x3736,0x3737,INVALC,INVALC,INVALC,INVALC,INVALC,0x3738, 0x3739,0x373A,INVALC,INVALC,0x373B,INVALC,INVALC,INVALC, 0x373C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x373D,0x373E,INVALC,0x373F,INVALC,0x3740,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3741,0x3742,INVALC,INVALC, 0x3743,INVALC,INVALC,INVALC,0x3744,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3745,0x3746,INVALC,0x3747, 0x3748,0x3749,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x374A,INVALC,INVALC,INVALC,0x374B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x374C,INVALC,0x374D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x374E,0x374F,INVALC,INVALC, 0x3750,INVALC,INVALC,INVALC,0x3751,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3752,0x3753,INVALC,0x3754, INVALC,0x3755,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3756,INVALC,INVALC,INVALC,0x3757,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3758,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3759,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x375A,INVALC,INVALC,INVALC,0x375B,INVALC,INVALC,INVALC, 0x375C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x375D,0x375E,INVALC,0x375F,INVALC,0x3760,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3761,INVALC,INVALC,INVALC, 0x3762,INVALC,INVALC,INVALC,0x3763,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3764,INVALC,0x3765, INVALC,0x3766,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3767,0x3768,INVALC,INVALC,0x3769,INVALC,INVALC,INVALC, 0x376A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x376B,0x376C,INVALC,0x376D,INVALC,0x376E,INVALC,INVALC, /* Block 186, Array index 0x7000 */ INVALC,INVALC,INVALC,INVALC,0x376F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3770,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3771,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3772,0x3773,INVALC,INVALC, 0x3774,INVALC,INVALC,INVALC,0x3775,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3776,INVALC,INVALC,0x3777, INVALC,0x3778,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3779,0x377A,INVALC,INVALC,0x377B,INVALC,INVALC,INVALC, 0x377C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x377D,0x377E,INVALC,0x3821,INVALC,0x3822,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3823,0x3824,INVALC,INVALC, 0x3825,INVALC,INVALC,INVALC,0x3826,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3827,0x3828,INVALC,0x3829, INVALC,0x382A,0x382B,INVALC,INVALC,0x382C,0x382D,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x382E,0x382F,INVALC,INVALC, 0x3830,INVALC,INVALC,INVALC,0x3831,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3832,0x3833,INVALC,0x3834, INVALC,0x3835,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3836,0x3837,INVALC,INVALC,0x3838,INVALC,0x3839,0x383A, 0x383B,0x383C,0x383D,INVALC,INVALC,INVALC,INVALC,INVALC, 0x383E,0x383F,INVALC,0x3840,INVALC,0x3841,0x3842,INVALC, INVALC,0x3843,INVALC,0x3844,0x3845,0x3846,INVALC,INVALC, 0x3847,INVALC,INVALC,INVALC,0x3848,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3849,0x384A,INVALC,0x384B, 0x384C,0x384D,0x384E,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 187, Array index 0x7100 */ 0x384F,0x3850,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3851,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3852,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3853,0x3854,INVALC,INVALC,0x3855,INVALC,INVALC,INVALC, 0x3856,INVALC,0x3857,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3858,0x3859,INVALC,0x385A,INVALC,0x385B,0x385C,INVALC, INVALC,INVALC,INVALC,0x385D,0x385E,0x385F,INVALC,INVALC, 0x3860,INVALC,INVALC,INVALC,0x3861,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3862,0x3863,INVALC,0x3864, 0x3865,0x3866,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3867,0x3868,INVALC,INVALC,0x3869,INVALC,INVALC,INVALC, 0x386A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x386B,0x386C,0x386D,INVALC,0x386E, INVALC,INVALC,INVALC,INVALC,0x386F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3870,0x3871,INVALC,0x3872,0x3873,INVALC,INVALC,INVALC, 0x3874,INVALC,0x3875,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3876,0x3877,INVALC,0x3878,INVALC,0x3879,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x387A,INVALC,INVALC,INVALC, 0x387B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x387C,0x387D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x387E,INVALC,INVALC,INVALC, /* Block 188, Array index 0x7200 */ 0x3921,INVALC,INVALC,INVALC,0x3922,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3923,INVALC,0x3924, INVALC,0x3925,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3926,INVALC,INVALC,INVALC,0x3927,INVALC,INVALC,INVALC, 0x3928,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3929,INVALC,0x392A,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x392B,0x392C,0x392D,INVALC, 0x392E,INVALC,INVALC,0x392F,0x3930,0x3931,0x3932,INVALC, INVALC,INVALC,INVALC,INVALC,0x3933,0x3934,INVALC,0x3935, INVALC,0x3936,INVALC,INVALC,INVALC,0x3937,INVALC,0x3938, 0x3939,INVALC,INVALC,INVALC,0x393A,INVALC,INVALC,INVALC, 0x393B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x393C,INVALC,0x393D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x393E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x393F,INVALC,INVALC,INVALC,0x3940,INVALC,INVALC,INVALC, 0x3941,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3942,INVALC,INVALC,INVALC, 0x3943,INVALC,INVALC,INVALC,0x3944,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3945,INVALC,INVALC,0x3946, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3947,INVALC,INVALC,INVALC,0x3948,INVALC,INVALC,INVALC, 0x3949,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x394A,INVALC,INVALC,0x394B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x394C,0x394D,INVALC,INVALC,0x394E,INVALC,INVALC,0x394F, /* Block 189, Array index 0x7300 */ 0x3950,INVALC,0x3951,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3952,0x3953,INVALC,0x3954,0x3955,0x3956,INVALC,0x3957, INVALC,0x3958,INVALC,INVALC,0x3959,0x395A,0x395B,0x395C, 0x395D,INVALC,INVALC,0x395E,0x395F,0x3960,0x3961,0x3962, INVALC,INVALC,INVALC,INVALC,0x3963,0x3964,INVALC,0x3965, INVALC,0x3966,INVALC,INVALC,INVALC,0x3967,INVALC,INVALC, 0x3968,0x3969,INVALC,INVALC,0x396A,INVALC,INVALC,INVALC, 0x396B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x396C,0x396D,INVALC,0x396E,0x396F,0x3970,INVALC,INVALC, INVALC,0x3971,INVALC,INVALC,0x3972,0x3973,INVALC,INVALC, 0x3974,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3975,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3976,0x3977,INVALC,INVALC, 0x3978,INVALC,INVALC,0x3979,0x397A,INVALC,0x397B,INVALC, INVALC,INVALC,INVALC,INVALC,0x397C,0x397D,INVALC,0x397E, INVALC,0x3A21,0x3A22,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3A23,0x3A24,INVALC,INVALC,0x3A25,INVALC,INVALC,0x3A26, 0x3A27,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3A28,0x3A29,INVALC,0x3A2A,0x3A2B,0x3A2C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3A2D,0x3A2E,INVALC,INVALC, 0x3A2F,INVALC,INVALC,INVALC,0x3A30,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3A31,INVALC,0x3A32, 0x3A33,0x3A34,INVALC,INVALC,INVALC,0x3A35,INVALC,INVALC, 0x3A36,INVALC,INVALC,INVALC,0x3A37,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3A38,0x3A39,0x3A3A,INVALC, 0x3A3B,INVALC,INVALC,INVALC,0x3A3C,INVALC,INVALC,INVALC, /* Block 190, Array index 0x7400 */ INVALC,INVALC,INVALC,INVALC,0x3A3D,0x3A3E,INVALC,0x3A3F, INVALC,0x3A40,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3A41,INVALC,INVALC,INVALC,0x3A42,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3A43,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3A44,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3A45,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3A46,0x3A47,INVALC,INVALC,0x3A48,INVALC,INVALC,INVALC, 0x3A49,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3A4A,0x3A4B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3A4C,INVALC,INVALC,INVALC, 0x3A4D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3A4E,0x3A4F,INVALC,INVALC,0x3A50,INVALC,INVALC,0x3A51, 0x3A52,0x3A53,0x3A54,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3A55,0x3A56,INVALC,0x3A57,INVALC,0x3A58,INVALC,INVALC, INVALC,0x3A59,0x3A5A,INVALC,0x3A5B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3A5C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3A5D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3A5E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3A5F,0x3A60,INVALC,INVALC, 0x3A61,INVALC,INVALC,INVALC,0x3A62,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3A63,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3A64,INVALC,INVALC,INVALC,0x3A65,INVALC,INVALC,INVALC, 0x3A66,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 191, Array index 0x7500 */ 0x3A67,INVALC,INVALC,0x3A68,INVALC,0x3A69,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3A6A,0x3A6B,INVALC,INVALC, 0x3A6C,INVALC,INVALC,INVALC,0x3A6D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3A6E,0x3A6F,INVALC,0x3A70, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3A71,0x3A72,INVALC,INVALC, 0x3A73,INVALC,INVALC,INVALC,0x3A74,INVALC,0x3A75,INVALC, INVALC,INVALC,INVALC,INVALC,0x3A76,0x3A77,INVALC,0x3A78, INVALC,0x3A79,0x3A7A,0x3A7B,INVALC,INVALC,INVALC,INVALC, 0x3A7C,0x3A7D,INVALC,INVALC,0x3A7E,INVALC,INVALC,INVALC, 0x3B21,INVALC,0x3B22,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3B23,0x3B24,INVALC,0x3B25,0x3B26,0x3B27,INVALC,INVALC, INVALC,INVALC,INVALC,0x3B28,0x3B29,0x3B2A,INVALC,INVALC, 0x3B2B,INVALC,INVALC,INVALC,0x3B2C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3B2D,0x3B2E,INVALC,0x3B2F, 0x3B30,0x3B31,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3B32,0x3B33,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3B34,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3B35,0x3B36,INVALC,INVALC,0x3B37,INVALC,INVALC,0x3B38, 0x3B39,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3B3A,INVALC,INVALC,0x3B3B,0x3B3C,0x3B3D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3B3E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 192, Array index 0x7600 */ INVALC,0x3B3F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3B40,0x3B41,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3B42,0x3B43,INVALC,0x3B44,0x3B45,0x3B46,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3B47,0x3B48,INVALC,INVALC,0x3B49,INVALC,INVALC,INVALC, 0x3B4A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3B4B,0x3B4C,INVALC,INVALC,INVALC,0x3B4D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3B4E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3B4F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3B50,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3B51,0x3B52,INVALC,INVALC, 0x3B53,INVALC,INVALC,INVALC,0x3B54,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3B55,INVALC,INVALC,0x3B56, INVALC,0x3B57,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 193, Array index 0x7700 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3B58,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3B59,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3B5A,INVALC,INVALC,INVALC,0x3B5B,INVALC,INVALC,INVALC, 0x3B5C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3B5D,0x3B5E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3B5F,0x3B60,INVALC,INVALC,0x3B61,INVALC,INVALC,INVALC, 0x3B62,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3B63,0x3B64,INVALC,0x3B65,INVALC,0x3B66,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3B67,0x3B68,INVALC,0x3B69, 0x3B6A,INVALC,INVALC,0x3B6B,0x3B6C,0x3B6D,0x3B6E,INVALC, INVALC,INVALC,INVALC,INVALC,0x3B6F,0x3B70,INVALC,0x3B71, 0x3B72,0x3B73,INVALC,INVALC,INVALC,0x3B74,INVALC,INVALC, 0x3B75,0x3B76,INVALC,INVALC,0x3B77,INVALC,INVALC,INVALC, 0x3B78,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3B79,0x3B7A,INVALC,0x3B7B,0x3B7C,0x3B7D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3B7E,0x3C21,INVALC,INVALC, 0x3C22,INVALC,INVALC,INVALC,0x3C23,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3C24,0x3C25,INVALC,0x3C26, INVALC,0x3C27,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 194, Array index 0x7800 */ 0x3C28,INVALC,INVALC,INVALC,0x3C29,INVALC,INVALC,INVALC, 0x3C2A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3C2B,INVALC,INVALC,INVALC,INVALC,0x3C2C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3C2D,0x3C2E,0x3C2F,0x3C30, 0x3C31,INVALC,INVALC,0x3C32,0x3C33,INVALC,0x3C34,0x3C35, INVALC,INVALC,INVALC,INVALC,0x3C36,0x3C37,INVALC,0x3C38, 0x3C39,0x3C3A,INVALC,INVALC,INVALC,INVALC,0x3C3B,INVALC, 0x3C3C,0x3C3D,INVALC,INVALC,0x3C3E,INVALC,INVALC,INVALC, 0x3C3F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3C40,0x3C41,INVALC,0x3C42,0x3C43,0x3C44,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3C45,0x3C46,INVALC,INVALC, 0x3C47,INVALC,INVALC,INVALC,0x3C48,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3C49,0x3C4A,INVALC,0x3C4B, 0x3C4C,0x3C4D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3C4E,INVALC,INVALC,INVALC,0x3C4F,INVALC,INVALC,INVALC, 0x3C50,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3C51,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3C52,0x3C53,0x3C54,INVALC, 0x3C55,INVALC,INVALC,INVALC,0x3C56,INVALC,0x3C57,INVALC, INVALC,INVALC,INVALC,INVALC,0x3C58,0x3C59,INVALC,0x3C5A, INVALC,0x3C5B,INVALC,INVALC,INVALC,0x3C5C,INVALC,INVALC, 0x3C5D,0x3C5E,INVALC,INVALC,0x3C5F,INVALC,INVALC,INVALC, 0x3C60,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3C61,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3C62,INVALC,INVALC,INVALC, 0x3C63,INVALC,INVALC,INVALC,0x3C64,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3C65,INVALC,INVALC,0x3C66, 0x3C67,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3C68,INVALC,INVALC,INVALC,0x3C69,INVALC,INVALC,INVALC, 0x3C6A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3C6B,0x3C6C,INVALC,0x3C6D,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3C6E,0x3C6F,INVALC,INVALC, /* Block 195, Array index 0x7900 */ 0x3C70,INVALC,INVALC,INVALC,0x3C71,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3C72,0x3C73,INVALC,0x3C74, INVALC,0x3C75,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3C76,0x3C77,INVALC,INVALC,0x3C78,INVALC,INVALC,0x3C79, 0x3C7A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3C7B,0x3C7C,INVALC,0x3C7D,INVALC,0x3C7E,INVALC,0x3D21, INVALC,0x3D22,0x3D23,INVALC,0x3D24,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3D25,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3D26,0x3D27,INVALC,INVALC,0x3D28,INVALC,INVALC,INVALC, 0x3D29,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3D2A,INVALC,INVALC,INVALC,INVALC,0x3D2B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3D2C,0x3D2D,INVALC,INVALC, 0x3D2E,INVALC,INVALC,INVALC,0x3D2F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3D30,0x3D31,INVALC,0x3D32, INVALC,0x3D33,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3D34,0x3D35,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3D36,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3D37,INVALC,INVALC,0x3D38,INVALC,0x3D39,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3D3A,0x3D3B,INVALC,INVALC, 0x3D3C,INVALC,INVALC,INVALC,0x3D3D,0x3D3E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3D3F,0x3D40,INVALC,0x3D41, INVALC,0x3D42,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3D43,0x3D44,INVALC,INVALC, 0x3D45,INVALC,INVALC,0x3D46,0x3D47,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x3D48,0x3D49,0x3D4A,INVALC,0x3D4B, INVALC,0x3D4C,INVALC,INVALC,INVALC,INVALC,0x3D4D,INVALC, 0x3D4E,0x3D4F,INVALC,0x3D50,0x3D51,INVALC,INVALC,INVALC, /* Block 196, Array index 0x7A00 */ 0x3D52,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3D53,0x3D54,INVALC,INVALC,0x3D55,0x3D56,INVALC,INVALC, INVALC,INVALC,INVALC,0x3D57,0x3D58,0x3D59,INVALC,INVALC, 0x3D5A,INVALC,INVALC,INVALC,0x3D5B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3D5C,0x3D5D,INVALC,INVALC, 0x3D5E,0x3D5F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x3D60,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3D61,0x3D62,INVALC,INVALC,0x3D63,INVALC,INVALC,INVALC, 0x3D64,INVALC,0x3D65,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3D66,0x3D67,INVALC,INVALC,0x3D68,0x3D69,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3D6A,INVALC,INVALC,INVALC, 0x3D6B,INVALC,INVALC,INVALC,0x3D6C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3D6D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3D6E,0x3D6F,INVALC,INVALC,0x3D70,INVALC,INVALC,0x3D71, 0x3D72,INVALC,0x3D73,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3D74,0x3D75,INVALC,INVALC,INVALC,0x3D76,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3D77,0x3D78,INVALC,INVALC, 0x3D79,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 197, Array index 0x7B00 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3D7A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3D7B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3D7C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3D7D,INVALC,INVALC,INVALC, 0x3D7E,INVALC,INVALC,INVALC,0x3E21,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3E22,0x3E23,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3E24,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3E25,0x3E26,INVALC,INVALC, 0x3E27,INVALC,INVALC,INVALC,0x3E28,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3E29,0x3E2A,INVALC,INVALC, INVALC,0x3E2B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3E2C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3E2D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3E2E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3E2F,INVALC,INVALC,INVALC,0x3E30,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3E31,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3E32,0x3E33,INVALC,INVALC,0x3E34,INVALC,INVALC,INVALC, 0x3E35,INVALC,0x3E36,INVALC,INVALC,INVALC,INVALC,0x3E37, /* Block 198, Array index 0x7C00 */ 0x3E38,0x3E39,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3E3A,INVALC,INVALC,INVALC, 0x3E3B,INVALC,INVALC,INVALC,0x3E3C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3E3D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3E3E,0x3E3F,INVALC,INVALC,0x3E40,INVALC,INVALC,INVALC, 0x3E41,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3E42,0x3E43,INVALC,0x3E44,INVALC,0x3E45,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3E46,0x3E47,INVALC,INVALC, 0x3E48,0x3E49,0x3E4A,INVALC,0x3E4B,0x3E4C,0x3E4D,INVALC, INVALC,INVALC,INVALC,0x3E4E,0x3E4F,0x3E50,INVALC,0x3E51, 0x3E52,0x3E53,INVALC,INVALC,INVALC,0x3E54,0x3E55,INVALC, 0x3E56,0x3E57,INVALC,INVALC,0x3E58,INVALC,INVALC,INVALC, 0x3E59,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3E5A,0x3E5B,INVALC,0x3E5C,0x3E5D,0x3E5E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3E5F,0x3E60,INVALC,INVALC, 0x3E61,INVALC,INVALC,INVALC,0x3E62,INVALC,INVALC,0x3E63, INVALC,INVALC,INVALC,INVALC,0x3E64,0x3E65,INVALC,0x3E66, INVALC,0x3E67,INVALC,INVALC,INVALC,0x3E68,INVALC,0x3E69, 0x3E6A,INVALC,INVALC,INVALC,0x3E6B,INVALC,INVALC,INVALC, 0x3E6C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x3E6D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3E6E,0x3E6F,INVALC,INVALC, 0x3E70,0x3E71,INVALC,0x3E72,0x3E73,0x3E74,0x3E75,INVALC, INVALC,INVALC,INVALC,INVALC,0x3E76,0x3E77,0x3E78,0x3E79, 0x3E7A,0x3E7B,0x3E7C,INVALC,0x3E7D,INVALC,0x3E7E,INVALC, 0x3F21,0x3F22,INVALC,INVALC,0x3F23,INVALC,INVALC,INVALC, 0x3F24,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3F25,0x3F26,INVALC,0x3F27,INVALC,0x3F28,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3F29,0x3F2A,0x3F2B,INVALC, 0x3F2C,INVALC,INVALC,INVALC,0x3F2D,INVALC,0x3F2E,0x3F2F, INVALC,INVALC,INVALC,INVALC,0x3F30,0x3F31,0x3F32,0x3F33, /* Block 199, Array index 0x7D00 */ 0x3F34,0x3F35,INVALC,INVALC,INVALC,0x3F36,0x3F37,0x3F38, 0x3F39,INVALC,INVALC,INVALC,0x3F3A,INVALC,INVALC,INVALC, 0x3F3B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3F3C,0x3F3D,INVALC,0x3F3E,0x3F3F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3F40,0x3F41,INVALC,INVALC, 0x3F42,INVALC,INVALC,INVALC,0x3F43,0x3F44,0x3F45,INVALC, 0x3F46,INVALC,INVALC,0x3F47,0x3F48,0x3F49,INVALC,0x3F4A, INVALC,0x3F4B,INVALC,0x3F4C,INVALC,INVALC,INVALC,INVALC, 0x3F4D,0x3F4E,INVALC,INVALC,0x3F4F,INVALC,INVALC,INVALC, 0x3F50,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3F51,0x3F52,INVALC,0x3F53,0x3F54,0x3F55,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3F56,0x3F57,INVALC,INVALC, 0x3F58,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3F59,INVALC,INVALC,0x3F5A, INVALC,0x3F5B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3F5C,0x3F5D,INVALC,INVALC,0x3F5E,INVALC,INVALC,INVALC, 0x3F5F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3F60,0x3F61,INVALC,0x3F62,INVALC,0x3F63,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3F64,0x3F65,INVALC,INVALC, 0x3F66,INVALC,INVALC,INVALC,0x3F67,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3F68,0x3F69,INVALC,0x3F6A, INVALC,0x3F6B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3F6C,0x3F6D,INVALC,INVALC,0x3F6E,INVALC,INVALC,INVALC, 0x3F6F,0x3F70,0x3F71,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3F72,0x3F73,INVALC,0x3F74,INVALC,0x3F75,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3F76,0x3F77,INVALC,INVALC, 0x3F78,INVALC,INVALC,INVALC,0x3F79,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x3F7A,0x3F7B,INVALC,INVALC, 0x3F7C,0x3F7D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x3F7E,0x4021,INVALC,INVALC,0x4022,INVALC,INVALC,INVALC, 0x4023,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4024,0x4025,INVALC,INVALC,INVALC,0x4026,INVALC,INVALC, /* Block 200, Array index 0x7E00 */ INVALC,INVALC,INVALC,INVALC,0x4027,0x4028,INVALC,INVALC, 0x4029,INVALC,INVALC,INVALC,0x402A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x402B,0x402C,INVALC,0x402D, INVALC,0x402E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x402F,0x4030,INVALC,INVALC,0x4031,INVALC,INVALC,INVALC, 0x4032,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4033,0x4034,INVALC,0x4035,INVALC,0x4036,INVALC,0x4037, INVALC,INVALC,INVALC,INVALC,0x4038,0x4039,INVALC,INVALC, 0x403A,INVALC,INVALC,INVALC,0x403B,INVALC,INVALC,INVALC, INVALC,INVALC,0x403C,INVALC,0x403D,0x403E,INVALC,0x403F, INVALC,0x4040,0x4041,0x4042,0x4043,0x4044,0x4045,0x4046, 0x4047,INVALC,INVALC,INVALC,0x4048,INVALC,INVALC,INVALC, 0x4049,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x404A,INVALC,INVALC,0x404B,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x404C,0x404D,INVALC,INVALC, 0x404E,INVALC,INVALC,INVALC,0x404F,0x4050,0x4051,INVALC, INVALC,INVALC,INVALC,0x4052,0x4053,0x4054,INVALC,0x4055, 0x4056,0x4057,0x4058,INVALC,INVALC,INVALC,0x4059,INVALC, 0x405A,0x405B,INVALC,INVALC,0x405C,INVALC,0x405D,0x405E, 0x405F,INVALC,0x4060,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4061,0x4062,INVALC,0x4063,0x4064,0x4065,0x4066,INVALC, INVALC,INVALC,INVALC,INVALC,0x4067,0x4068,INVALC,INVALC, 0x4069,INVALC,INVALC,INVALC,0x406A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x406B,0x406C,INVALC,0x406D, 0x406E,0x406F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4070,0x4071,INVALC,INVALC,0x4072,INVALC,0x4073,INVALC, 0x4074,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4075,INVALC,INVALC,INVALC,INVALC,0x4076,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4077,INVALC,INVALC,INVALC, 0x4078,INVALC,INVALC,INVALC,0x4079,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 201, Array index 0x7F00 */ 0x407A,0x407B,INVALC,INVALC,0x407C,INVALC,INVALC,INVALC, 0x407D,INVALC,0x407E,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4121,0x4122,INVALC,0x4123,INVALC,0x4124,0x4125,INVALC, INVALC,INVALC,INVALC,INVALC,0x4126,0x4127,INVALC,INVALC, 0x4128,INVALC,INVALC,INVALC,0x4129,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x412A,0x412B,INVALC,0x412C, INVALC,0x412D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x412E,INVALC,INVALC,INVALC,0x412F,INVALC,INVALC,INVALC, 0x4130,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4131,0x4132,INVALC,INVALC,0x4133,0x4134,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4135,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4136,0x4137,INVALC,INVALC,0x4138,INVALC,INVALC,INVALC, 0x4139,INVALC,0x413A,INVALC,INVALC,INVALC,INVALC,INVALC, 0x413B,0x413C,INVALC,0x413D,INVALC,0x413E,0x413F,0x4140, INVALC,INVALC,INVALC,0x4141,0x4142,0x4143,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4144,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4145,INVALC,0x4146, INVALC,0x4147,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4148,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4149,0x414A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x414B,INVALC,INVALC,INVALC, 0x414C,INVALC,INVALC,INVALC,0x414D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x414E,0x414F,INVALC,0x4150, INVALC,0x4151,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4152,0x4153,INVALC,INVALC,0x4154,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4155,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4156,0x4157,INVALC,INVALC, /* Block 202, Array index 0x8000 */ 0x4158,INVALC,INVALC,INVALC,0x4159,0x415A,0x415B,INVALC, INVALC,INVALC,INVALC,INVALC,0x415C,0x415D,INVALC,0x415E, INVALC,0x415F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4160,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4161,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4162,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4163,0x4164,INVALC,INVALC,0x4165,INVALC,INVALC,INVALC, 0x4166,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4167,0x4168,INVALC,0x4169,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x416A,INVALC,INVALC,INVALC, 0x416B,INVALC,INVALC,INVALC,0x416C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x416D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x416E,0x416F,INVALC,INVALC,0x4170,INVALC,INVALC,INVALC, 0x4171,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4172,0x4173,INVALC,0x4174,INVALC,0x4175,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4176,0x4177,INVALC,INVALC,0x4178,INVALC,INVALC,0x4179, 0x417A,INVALC,0x417B,INVALC,INVALC,INVALC,INVALC,INVALC, 0x417C,0x417D,INVALC,0x417E,INVALC,0x4221,0x4222,INVALC, INVALC,0x4223,0x4224,INVALC,0x4225,0x4226,INVALC,INVALC, 0x4227,INVALC,0x4228,INVALC,0x4229,INVALC,INVALC,0x422A, INVALC,INVALC,INVALC,INVALC,0x422B,0x422C,INVALC,0x422D, 0x422E,0x422F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4230,0x4231,INVALC,INVALC,0x4232,INVALC,INVALC,INVALC, /* Block 203, Array index 0x8100 */ 0x4233,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4234,0x4235,INVALC,0x4236,0x4237,0x4238,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4239,INVALC,INVALC,INVALC, 0x423A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x423B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x423C,0x423D,INVALC,INVALC, 0x423E,INVALC,INVALC,INVALC,0x423F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4240,0x4241,INVALC,0x4242, 0x4243,0x4244,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4245,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4246,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4247,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4248,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4249,0x424A,INVALC,INVALC, 0x424B,INVALC,INVALC,INVALC,0x424C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x424D,0x424E,INVALC,0x424F, INVALC,0x4250,INVALC,0x4251,INVALC,INVALC,INVALC,INVALC, 0x4252,0x4253,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4254,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4255,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4256,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 204, Array index 0x8200 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4257,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4258,INVALC,INVALC,INVALC,0x4259,INVALC,INVALC,INVALC, 0x425A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x425B,0x425C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x425D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x425E,0x425F,INVALC,INVALC,0x4260,INVALC,INVALC,INVALC, 0x4261,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4262,0x4263,INVALC,INVALC,INVALC,0x4264,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4265,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4266,0x4267,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4268,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4269,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x426A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x426B,INVALC,INVALC,0x426C, INVALC,0x426D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 205, Array index 0x8300 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x426E,0x426F,INVALC,INVALC, 0x4270,INVALC,INVALC,INVALC,0x4271,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4272,0x4273,INVALC,INVALC, INVALC,0x4274,0x4275,INVALC,INVALC,INVALC,INVALC,0x4276, 0x4277,0x4278,INVALC,INVALC,0x4279,INVALC,0x427A,INVALC, 0x427B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x427C,0x427D,INVALC,0x427E,0x4321,0x4322,0x4323,INVALC, INVALC,INVALC,INVALC,INVALC,0x4324,0x4325,INVALC,INVALC, 0x4326,INVALC,INVALC,INVALC,0x4327,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4328,0x4329,INVALC,0x432A, 0x432B,0x432C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x432D,INVALC,INVALC,INVALC,0x432E,INVALC,0x432F,INVALC, 0x4330,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4331,INVALC,INVALC,INVALC,INVALC,0x4332,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4333,0x4334,INVALC,INVALC,0x4335,INVALC,INVALC,INVALC, 0x4336,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4337,0x4338,INVALC,0x4339,0x433A,0x433B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x433C,0x433D,INVALC,INVALC, 0x433E,INVALC,INVALC,INVALC,0x433F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4340,0x4341,INVALC,0x4342, INVALC,0x4343,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4344,INVALC,INVALC,INVALC,0x4345,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4346,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4347,INVALC,INVALC,INVALC, 0x4348,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 206, Array index 0x8400 */ INVALC,0x4349,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x434A,0x434B,INVALC,INVALC,0x434C,INVALC,INVALC,INVALC, 0x434D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x434E,0x434F,INVALC,0x4350,INVALC,0x4351,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4352,INVALC,INVALC,INVALC, 0x4353,INVALC,INVALC,INVALC,0x4354,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4355,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4356,INVALC,INVALC,INVALC, 0x4357,INVALC,INVALC,INVALC,0x4358,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4359,0x435A,INVALC,0x435B, INVALC,0x435C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x435D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x435E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x435F,0x4360,INVALC,INVALC, 0x4361,INVALC,INVALC,INVALC,0x4362,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4363,0x4364,INVALC,0x4365, INVALC,0x4366,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4367,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4368,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4369,INVALC,INVALC,INVALC, 0x436A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x436B,INVALC,INVALC,INVALC,0x436C,INVALC,INVALC,INVALC, 0x436D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x436E,0x436F,INVALC,0x4370,INVALC,0x4371,INVALC,INVALC, /* Block 207, Array index 0x8500 */ INVALC,INVALC,INVALC,INVALC,0x4372,INVALC,INVALC,INVALC, 0x4373,INVALC,INVALC,INVALC,0x4374,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4375,INVALC,INVALC,INVALC, INVALC,0x4376,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4377,0x4378,INVALC,INVALC,0x4379,INVALC,INVALC,INVALC, 0x437A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x437B,0x437C,INVALC,0x437D,INVALC,0x437E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4421,0x4422,INVALC,INVALC,0x4423,INVALC,INVALC,0x4424, 0x4425,0x4426,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4427,0x4428,INVALC,0x4429,INVALC,0x442A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x442B,0x442C,INVALC,INVALC, 0x442D,INVALC,INVALC,INVALC,0x442E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x442F,0x4430,INVALC,0x4431, INVALC,0x4432,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4433,0x4434,INVALC,INVALC,0x4435,INVALC,INVALC,INVALC, 0x4436,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4437,0x4438,INVALC,0x4439,0x443A,0x443B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x443C,0x443D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x443E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x443F,0x4440,INVALC,INVALC, 0x4441,INVALC,INVALC,0x4442,0x4443,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4444,0x4445,INVALC,0x4446, 0x4447,0x4448,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 208, Array index 0x8600 */ 0x4449,0x444A,INVALC,INVALC,0x444B,INVALC,INVALC,INVALC, 0x444C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x444D,0x444E,INVALC,0x444F,INVALC,0x4450,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4451,INVALC,INVALC,INVALC, 0x4452,INVALC,INVALC,INVALC,0x4453,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4454,0x4455,INVALC,0x4456, 0x4457,0x4458,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4459,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x445A,0x445B,INVALC,INVALC, 0x445C,INVALC,INVALC,INVALC,0x445D,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x445E,0x445F,INVALC,0x4460, INVALC,0x4461,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4462,0x4463,INVALC,INVALC,0x4464,INVALC,INVALC,INVALC, 0x4465,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4466,INVALC,INVALC,INVALC,INVALC,0x4467,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4468,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4469,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x446A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x446B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x446C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x446D,0x446E,INVALC,INVALC,0x446F,INVALC,INVALC,INVALC, 0x4470,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4471,0x4472,INVALC,0x4473,INVALC,0x4474,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4475,INVALC,INVALC,INVALC, /* Block 209, Array index 0x8700 */ 0x4476,INVALC,INVALC,INVALC,0x4477,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4478,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4479,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x447A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x447B,0x447C,INVALC,INVALC, 0x447D,INVALC,INVALC,INVALC,0x447E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4521,0x4522,INVALC,0x4523, INVALC,0x4524,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4525,INVALC,INVALC,INVALC,0x4526,INVALC,INVALC,INVALC, 0x4527,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4528,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4529,0x452A,INVALC,INVALC, 0x452B,INVALC,INVALC,INVALC,0x452C,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x452D,0x452E,INVALC,INVALC, INVALC,0x452F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4530,0x4531,INVALC,INVALC, 0x4532,INVALC,INVALC,INVALC,0x4533,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4534,0x4535,INVALC,0x4536, INVALC,0x4537,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4538,0x4539,INVALC,INVALC,0x453A,INVALC,INVALC,INVALC, 0x453B,0x453C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x453D,0x453E,INVALC,0x453F,0x4540,0x4541,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4542,0x4543,INVALC,INVALC, 0x4544,INVALC,INVALC,INVALC,0x4545,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4546,0x4547,INVALC,0x4548, 0x4549,0x454A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x454B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 210, Array index 0x8800 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x454C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x454D,0x454E,INVALC,INVALC,0x454F,INVALC,INVALC,INVALC, 0x4550,INVALC,0x4551,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4552,0x4553,INVALC,0x4554,0x4555,0x4556,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4557,0x4558,INVALC,INVALC, 0x4559,INVALC,INVALC,INVALC,0x455A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x455B,0x455C,INVALC,0x455D, INVALC,0x455E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x455F,INVALC,INVALC,INVALC,0x4560,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4561,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4562,INVALC,INVALC,INVALC, 0x4563,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4564,0x4565,INVALC,INVALC,0x4566,INVALC,INVALC,INVALC, 0x4567,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4568,0x4569,INVALC,0x456A,INVALC,0x456B,INVALC,INVALC, INVALC,INVALC,0x456C,INVALC,0x456D,INVALC,INVALC,INVALC, 0x456E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x456F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4570,INVALC,INVALC,INVALC, 0x4571,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 211, Array index 0x8900 */ INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4572, INVALC,0x4573,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4574,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4575,0x4576,INVALC,INVALC, 0x4577,INVALC,INVALC,INVALC,0x4578,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4579,0x457A,INVALC,0x457B, INVALC,0x457C,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x457D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x457E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4621,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4622,0x4623,INVALC,INVALC,0x4624,INVALC,INVALC,INVALC, 0x4625,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4626,0x4627,INVALC,INVALC,INVALC,0x4628,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4629,INVALC,INVALC,INVALC, 0x462A,INVALC,INVALC,INVALC,0x462B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x462C,INVALC,INVALC,INVALC, INVALC,0x462D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x462E,0x462F,INVALC,INVALC,0x4630,INVALC,INVALC,0x4631, 0x4632,INVALC,0x4633,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4634,0x4635,INVALC,0x4636,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4637,INVALC,INVALC,INVALC, 0x4638,INVALC,INVALC,INVALC,0x4639,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x463A,0x463B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x463C,0x463D,INVALC,INVALC,0x463E,INVALC,INVALC,INVALC, 0x463F,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 212, Array index 0x8A00 */ 0x4640,0x4641,INVALC,0x4642,INVALC,0x4643,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4644,0x4645,0x4646,INVALC, 0x4647,INVALC,INVALC,INVALC,0x4648,INVALC,0x4649,INVALC, INVALC,INVALC,INVALC,INVALC,0x464A,0x464B,INVALC,0x464C, 0x464D,0x464E,INVALC,INVALC,INVALC,0x464F,INVALC,INVALC, 0x4650,0x4651,INVALC,INVALC,0x4652,INVALC,INVALC,INVALC, 0x4653,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4654,0x4655,INVALC,0x4656,0x4657,0x4658,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4659,0x465A,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x465B,0x465C,INVALC,INVALC, 0x465D,INVALC,INVALC,INVALC,0x465E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x465F,0x4660,INVALC,0x4661, 0x4662,0x4663,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4664,0x4665,INVALC,INVALC,0x4666,INVALC,INVALC,INVALC, 0x4667,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4668,0x4669,INVALC,0x466A,INVALC,0x466B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x466C,INVALC,INVALC,INVALC, 0x466D,INVALC,INVALC,INVALC,0x466E,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x466F,0x4670,INVALC,INVALC, 0x4671,0x4672,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4673,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4674,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4675,INVALC,0x4676,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4677,0x4678,INVALC,INVALC, 0x4679,INVALC,INVALC,INVALC,0x467A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x467B,0x467C,INVALC,0x467D, /* Block 213, Array index 0x8B00 */ INVALC,0x467E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4721,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4722,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4723,INVALC,INVALC,INVALC,0x4724,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4725,INVALC,INVALC,INVALC, 0x4726,INVALC,INVALC,INVALC,0x4727,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4728,INVALC,0x4729, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x472A,0x472B,INVALC,INVALC,0x472C,INVALC,INVALC,0x472D, 0x472E,INVALC,0x472F,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4730,0x4731,INVALC,0x4732,INVALC,0x4733,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4734,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4735,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4736,INVALC,INVALC,INVALC, 0x4737,INVALC,INVALC,INVALC,0x4738,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4739,INVALC,INVALC,0x473A, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x473B,INVALC,INVALC,INVALC,0x473C,INVALC,INVALC,INVALC, 0x473D,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x473E,INVALC,INVALC,0x473F,INVALC,0x4740,INVALC,INVALC, /* Block 214, Array index 0x8C00 */ INVALC,INVALC,INVALC,INVALC,0x4741,INVALC,INVALC,INVALC, 0x4742,INVALC,INVALC,INVALC,0x4743,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4744,0x4745,INVALC,0x4746, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4747,0x4748,INVALC,INVALC, 0x4749,INVALC,INVALC,INVALC,0x474A,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x474B,0x474C,INVALC,0x474D, INVALC,0x474E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x474F,0x4750,INVALC,INVALC,0x4751,INVALC,INVALC,INVALC, 0x4752,INVALC,INVALC,INVALC,INVALC,0x4753,INVALC,INVALC, 0x4754,0x4755,INVALC,0x4756,INVALC,0x4757,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4758,0x4759,INVALC,INVALC, 0x475A,INVALC,INVALC,INVALC,0x475B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x475C,0x475D,INVALC,0x475E, 0x475F,0x4760,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4761,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4762,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4763,0x4764,INVALC,INVALC,0x4765,INVALC,INVALC,INVALC, 0x4766,INVALC,0x4767,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4768,0x4769,INVALC,0x476A,INVALC,0x476B,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x476C,0x476D,INVALC,INVALC, 0x476E,INVALC,INVALC,INVALC,0x476F,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4770,0x4771,INVALC,0x4772, INVALC,0x4773,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 215, Array index 0x8D00 */ 0x4774,0x4775,INVALC,INVALC,0x4776,INVALC,INVALC,INVALC, 0x4777,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4778,0x4779,INVALC,0x477A,0x477B,0x477C,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x477D,INVALC,INVALC,INVALC, 0x477E,INVALC,INVALC,INVALC,0x4821,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x4822,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4823,0x4824,INVALC,INVALC,0x4825,INVALC,INVALC,INVALC, 0x4826,INVALC,INVALC,INVALC,INVALC,0x4827,INVALC,INVALC, 0x4828,0x4829,INVALC,0x482A,INVALC,0x482B,INVALC,INVALC, INVALC,0x482C,INVALC,INVALC,0x482D,0x482E,INVALC,INVALC, 0x482F,INVALC,INVALC,INVALC,0x4830,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,0x4831, INVALC,0x4832,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4833,0x4834,INVALC,INVALC,0x4835,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,0x4836,INVALC,0x4837,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4838,0x4839,INVALC,INVALC, 0x483A,INVALC,INVALC,INVALC,0x483B,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,0x483C,INVALC,0x483D, INVALC,0x483E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x483F,INVALC,INVALC,INVALC,0x4840,INVALC,INVALC,INVALC, 0x4841,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4842,INVALC,0x4843,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4844,0x4845,INVALC,INVALC, 0x4846,INVALC,INVALC,INVALC,0x4847,INVALC,INVALC,INVALC, INVALC,0x4848,INVALC,INVALC,0x4849,INVALC,INVALC,0x484A, INVALC,0x484B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x484C,INVALC,INVALC,INVALC,0x484D,INVALC,INVALC,INVALC, 0x484E,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x484F,INVALC,INVALC,INVALC,INVALC,0x4850,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4851,0x4852,INVALC,INVALC, /* Block 216, Array index 0x8E00 */ 0x4853,INVALC,INVALC,INVALC,0x4854,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,0x4855,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4856,0x4857,INVALC,INVALC,0x4858,INVALC,INVALC,INVALC, 0x4859,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x485A,0x485B,INVALC,0x485C,INVALC,0x485D,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x485E,0x485F,INVALC,INVALC, 0x4860,INVALC,INVALC,INVALC,0x4861,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4862,INVALC,INVALC,0x4863, INVALC,0x4864,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4865,0x4866,INVALC,INVALC,0x4867,INVALC,0x4868,0x4869, 0x486A,0x486B,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x486C,0x486D,INVALC,0x486E,INVALC,0x486F,INVALC,INVALC, INVALC,0x4870,INVALC,INVALC,0x4871,INVALC,INVALC,INVALC, 0x4872,INVALC,INVALC,INVALC,0x4873,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,0x4874,0x4875,INVALC,INVALC, INVALC,0x4876,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x4877,0x4878,INVALC,INVALC,0x4879,INVALC,INVALC,INVALC, 0x487A,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x487B,0x487C,INVALC,0x487D,INVALC,0x487E,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 250, Array index 0x8F00 */ 0x4B50,0x4B56,0x4B67,0x4D4F,0x4D68,0x4E2D,0x4F7B,0x5022, 0x5038,0x5050,0x505D,0x5154,0x5155,0x5158,0x515B,0x515C, 0x515D,0x515E,0x515F,0x5160,0x5162,0x5163,0x5164,0x5165, 0x5166,0x5168,0x5169,0x516A,0x516B,0x516D,0x516F,0x5170, 0x5172,0x5176,0x517A,0x517C,0x517D,0x517E,0x5222,0x5223, 0x5227,0x5228,0x5229,0x522A,0x522B,0x522D,0x5232,0x523E, 0x5242,0x5243,0x5244,0x5246,0x5247,0x5248,0x5249,0x524A, 0x524B,0x524D,0x524E,0x524F,0x5250,0x5251,0x5252,0x5253, 0x5254,0x5255,0x5256,0x5257,0x5259,0x525A,0x525E,0x525F, 0x5261,0x5262,0x5264,0x5265,0x5266,0x5267,0x5268,0x5269, 0x526A,0x526B,0x5270,0x5271,0x5272,0x5273,0x5274,0x5275, 0x5277,0x5278,0x5466,0x547C,0x5525,0x552B,0x552E,0x5638, 0x564D,0x574B,0x5764,0x5B45,0x5B64,0x5C25,0x5D25,0x5D55, 0x5D74,0x5E7C,0x5E7E,0x5F33,0x5F61,0x5F68,0x6071,0x612D, 0x616D,0x6375,0x6421,0x6429,0x652E,0x6531,0x6532,0x6539, 0x653B,0x653C,0x6544,0x654E,0x6550,0x6552,0x6556,0x657A, 0x657B,0x657C,0x657E,0x6621,0x6624,0x6627,0x662D,0x662F, 0x6630,0x6631,0x6633,0x6637,0x6638,0x663C,0x6644,0x6646, 0x6647,0x664A,0x6652,0x6656,0x6659,0x665C,0x665F,0x6661, 0x6664,0x6665,0x6666,0x6668,0x666A,0x666B,0x666C,0x666F, 0x6671,0x6672,0x6675,0x6676,0x6677,0x6679,0x6721,0x6726, 0x6729,0x672A,0x672C,0x672D,0x6730,0x673F,0x6741,0x6746, 0x6747,0x674B,0x674D,0x674F,0x6750,0x6753,0x675F,0x6764, 0x6766,0x6777,0x6867,0x6868,0x6870,0x6871,0x6877,0x6879, 0x687B,0x687E,0x6927,0x692C,0x694C,0x6977,0x6A41,0x6A65, 0x6A74,0x6A77,0x6A7C,0x6A7E,0x6B24,0x6B27,0x6B29,0x6B2A, 0x6B3A,0x6B3B,0x6B3D,0x6B41,0x6B42,0x6B46,0x6B47,0x6B4C, 0x6B4F,0x6B50,0x6B51,0x6B52,0x6B58,0x6C26,0x6C27,0x6C2A, 0x6C2F,0x6C30,0x6C31,0x6C32,0x6C35,0x6C38,0x6C3A,0x6C40, 0x6C41,0x6C45,0x6C46,0x6C49,0x6C4A,0x6C55,0x6C5D,0x6C5E, 0x6C61,0x6C64,0x6C67,0x6C68,0x6C77,0x6C78,0x6C7A,0x6D21, 0x6D22,0x6D23,0x6D6E,0x6E5B,0x723D,0x727A,0x7331,0x7427, /* Block 251, Array index 0x9000 */ 0x746E,0x7674,0x7676,0x7738,0x7748,0x7753,0x785B,0x7870, 0x7A21,0x7A22,0x7A66,0x7C29,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, /* Block 256, Array index 0x9100 */ INVALC,0x2321,0x2322,0x2323,0x2324,0x2325,0x2326,0x2327, 0x2328,0x2329,0x232A,0x232B,0x232C,0x232D,0x232E,0x232F, 0x2330,0x2331,0x2332,0x2333,0x2334,0x2335,0x2336,0x2337, 0x2338,0x2339,0x233A,0x233B,0x233C,0x233D,0x233E,0x233F, 0x2340,0x2341,0x2342,0x2343,0x2344,0x2345,0x2346,0x2347, 0x2348,0x2349,0x234A,0x234B,0x234C,0x234D,0x234E,0x234F, 0x2350,0x2351,0x2352,0x2353,0x2354,0x2355,0x2356,0x2357, 0x2358,0x2359,0x235A,0x235B,0x212C,0x235D,0x235E,0x235F, 0x2360,0x2361,0x2362,0x2363,0x2364,0x2365,0x2366,0x2367, 0x2368,0x2369,0x236A,0x236B,0x236C,0x236D,0x236E,0x236F, 0x2370,0x2371,0x2372,0x2373,0x2374,0x2375,0x2376,0x2377, 0x2378,0x2379,0x237A,0x237B,0x237C,0x237D,0x2226,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x214B,0x214C,0x217E,0x237E,INVALC,0x214D,0x235C,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, }; #endif /* ICONV_FROM_UCS_CCS_KSX1001 && !defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * 16-bit UCS -> ksx1001 size-optimized table (29992 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_KSX1001) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) static const __uint16_t from_ucs_size_ksx1001[] = { 0x01B6, /* Ranges number */ 0x1338, /* Unranged codes number */ 0x1424, /* First unranged code index */ /* Ranges list: first code, last Code, array index. */ /* Array index: 0x0003 */ 0x00B0, 0x00BF, 0x0525, /* Array index: 0x0006 */ 0x0131, 0x0133, 0x0535, /* Array index: 0x0009 */ 0x013F, 0x0142, 0x0538, /* Array index: 0x000C */ 0x0149, 0x014B, 0x053C, /* Array index: 0x000F */ 0x02D8, 0x02DD, 0x053F, /* Array index: 0x0012 */ 0x0391, 0x03A9, 0x0545, /* Array index: 0x0015 */ 0x03B1, 0x03C9, 0x055E, /* Array index: 0x0018 */ 0x0410, 0x0451, 0x0577, /* Array index: 0x001B */ 0x207F, 0x2084, 0x05B9, /* Array index: 0x001E */ 0x215B, 0x2169, 0x05BF, /* Array index: 0x0021 */ 0x2170, 0x2179, 0x05CE, /* Array index: 0x0024 */ 0x2190, 0x2199, 0x05D8, /* Array index: 0x0027 */ 0x2225, 0x222E, 0x05E2, /* Array index: 0x002A */ 0x2460, 0x246E, 0x05EC, /* Array index: 0x002D */ 0x2474, 0x2482, 0x05FB, /* Array index: 0x0030 */ 0x249C, 0x24B5, 0x060A, /* Array index: 0x0033 */ 0x24D0, 0x24E9, 0x0624, /* Array index: 0x0036 */ 0x2500, 0x2503, 0x063E, /* Array index: 0x0039 */ 0x250C, 0x254B, 0x0642, /* Array index: 0x003C */ 0x25A0, 0x25A9, 0x0682, /* Array index: 0x003F */ 0x25C6, 0x25C8, 0x068C, /* Array index: 0x0042 */ 0x25CE, 0x25D1, 0x068F, /* Array index: 0x0045 */ 0x2660, 0x266D, 0x0693, /* Array index: 0x0048 */ 0x3000, 0x3003, 0x06A1, /* Array index: 0x004B */ 0x3008, 0x3015, 0x06A5, /* Array index: 0x004E */ 0x3041, 0x3093, 0x06B3, /* Array index: 0x0051 */ 0x30A1, 0x30F6, 0x0706, /* Array index: 0x0054 */ 0x3131, 0x318E, 0x075C, /* Array index: 0x0057 */ 0x3200, 0x321C, 0x07BA, /* Array index: 0x005A */ 0x3260, 0x327B, 0x07D7, /* Array index: 0x005D */ 0x3380, 0x33CA, 0x07F3, /* Array index: 0x0060 */ 0x33DB, 0x33DD, 0x083E, /* Array index: 0x0063 */ 0x4E07, 0x4E0D, 0x0841, /* Array index: 0x0066 */ 0x4E14, 0x4E19, 0x0848, /* Array index: 0x0069 */ 0x4E4B, 0x4E4F, 0x084E, /* Array index: 0x006C */ 0x4E5D, 0x4E5F, 0x0853, /* Array index: 0x006F */ 0x4E8E, 0x4E95, 0x0856, /* Array index: 0x0072 */ 0x4EA1, 0x4EAE, 0x085E, /* Array index: 0x0075 */ 0x4ED4, 0x4ED9, 0x086C, /* Array index: 0x0078 */ 0x4EE3, 0x4EE5, 0x0872, /* Array index: 0x007B */ 0x4F09, 0x4F11, 0x0875, /* Array index: 0x007E */ 0x4F46, 0x4F48, 0x087E, /* Array index: 0x0081 */ 0x4F4D, 0x4F51, 0x0881, /* Array index: 0x0084 */ 0x4F59, 0x4F5C, 0x0886, /* Array index: 0x0087 */ 0x4FC2, 0x4FC4, 0x088A, /* Array index: 0x008A */ 0x4FDD, 0x4FE1, 0x088D, /* Array index: 0x008D */ 0x5023, 0x502D, 0x0892, /* Array index: 0x0090 */ 0x5047, 0x5049, 0x089D, /* Array index: 0x0093 */ 0x5074, 0x5078, 0x08A0, /* Array index: 0x0096 */ 0x50FF, 0x5101, 0x08A5, /* Array index: 0x0099 */ 0x5140, 0x514E, 0x08A8, /* Array index: 0x009C */ 0x5165, 0x516E, 0x08B7, /* Array index: 0x009F */ 0x5175, 0x5178, 0x08C1, /* Array index: 0x00A2 */ 0x51C9, 0x51CD, 0x08C5, /* Array index: 0x00A5 */ 0x51DC, 0x51DE, 0x08CA, /* Array index: 0x00A8 */ 0x51F6, 0x51FA, 0x08CD, /* Array index: 0x00AB */ 0x5206, 0x520A, 0x08D2, /* Array index: 0x00AE */ 0x5236, 0x523B, 0x08D7, /* Array index: 0x00B1 */ 0x524A, 0x524D, 0x08DD, /* Array index: 0x00B4 */ 0x5287, 0x5289, 0x08E1, /* Array index: 0x00B7 */ 0x52A9, 0x52AB, 0x08E4, /* Array index: 0x00BA */ 0x52D5, 0x52E4, 0x08E7, /* Array index: 0x00BD */ 0x5315, 0x5319, 0x08F7, /* Array index: 0x00C0 */ 0x533F, 0x534A, 0x08FC, /* Array index: 0x00C3 */ 0x5351, 0x5354, 0x0908, /* Array index: 0x00C6 */ 0x536F, 0x5377, 0x090C, /* Array index: 0x00C9 */ 0x53C8, 0x53CD, 0x0915, /* Array index: 0x00CC */ 0x53E1, 0x53F3, 0x091B, /* Array index: 0x00CF */ 0x5408, 0x5411, 0x092E, /* Array index: 0x00D2 */ 0x5438, 0x543E, 0x0938, /* Array index: 0x00D5 */ 0x547B, 0x547D, 0x093F, /* Array index: 0x00D8 */ 0x5586, 0x558A, 0x0942, /* Array index: 0x00DB */ 0x5598, 0x559D, 0x0947, /* Array index: 0x00DE */ 0x55A7, 0x55AE, 0x094D, /* Array index: 0x00E1 */ 0x574D, 0x5751, 0x0955, /* Array index: 0x00E4 */ 0x5805, 0x580A, 0x095A, /* Array index: 0x00E7 */ 0x582F, 0x5835, 0x0960, /* Array index: 0x00EA */ 0x58F9, 0x58FD, 0x0967, /* Array index: 0x00ED */ 0x5914, 0x591C, 0x096C, /* Array index: 0x00F0 */ 0x5927, 0x592E, 0x0975, /* Array index: 0x00F3 */ 0x5947, 0x5949, 0x097D, /* Array index: 0x00F6 */ 0x594E, 0x5957, 0x0980, /* Array index: 0x00F9 */ 0x596A, 0x596E, 0x098A, /* Array index: 0x00FC */ 0x5982, 0x5984, 0x098F, /* Array index: 0x00FF */ 0x59D0, 0x59D4, 0x0992, /* Array index: 0x0102 */ 0x59D9, 0x59DD, 0x0997, /* Array index: 0x0105 */ 0x5B54, 0x5B5F, 0x099C, /* Array index: 0x0108 */ 0x5B85, 0x5B8C, 0x09A8, /* Array index: 0x010B */ 0x5B93, 0x5B9C, 0x09B0, /* Array index: 0x010E */ 0x5BA2, 0x5BA6, 0x09BA, /* Array index: 0x0111 */ 0x5BB3, 0x5BB9, 0x09BF, /* Array index: 0x0114 */ 0x5BBF, 0x5BC7, 0x09C6, /* Array index: 0x0117 */ 0x5BD0, 0x5BD4, 0x09CF, /* Array index: 0x011A */ 0x5BDE, 0x5BEF, 0x09D4, /* Array index: 0x011D */ 0x5C07, 0x5C11, 0x09E6, /* Array index: 0x0120 */ 0x5C38, 0x5C40, 0x09F1, /* Array index: 0x0123 */ 0x5DE1, 0x5DE8, 0x09FA, /* Array index: 0x0126 */ 0x5DF1, 0x5DF4, 0x0A02, /* Array index: 0x0129 */ 0x5E5F, 0x5E63, 0x0A06, /* Array index: 0x012C */ 0x5E72, 0x5E7E, 0x0A0B, /* Array index: 0x012F */ 0x5EB5, 0x5EB8, 0x0A18, /* Array index: 0x0132 */ 0x5EC8, 0x5ECA, 0x0A1C, /* Array index: 0x0135 */ 0x5EDF, 0x5EE3, 0x0A1F, /* Array index: 0x0138 */ 0x5F11, 0x5F18, 0x0A24, /* Array index: 0x013B */ 0x5F66, 0x5F71, 0x0A2C, /* Array index: 0x013E */ 0x5F7F, 0x5F81, 0x0A38, /* Array index: 0x0141 */ 0x5F8A, 0x5F92, 0x0A3B, /* Array index: 0x0144 */ 0x5F97, 0x5F99, 0x0A44, /* Array index: 0x0147 */ 0x5FA8, 0x5FAA, 0x0A47, /* Array index: 0x014A */ 0x5FD6, 0x5FD9, 0x0A4A, /* Array index: 0x014D */ 0x6041, 0x6043, 0x0A4E, /* Array index: 0x0150 */ 0x6062, 0x6070, 0x0A51, /* Array index: 0x0153 */ 0x60B0, 0x60B8, 0x0A60, /* Array index: 0x0156 */ 0x60DF, 0x60E1, 0x0A69, /* Array index: 0x0159 */ 0x60F9, 0x60FB, 0x0A6C, /* Array index: 0x015C */ 0x610D, 0x610F, 0x0A6F, /* Array index: 0x015F */ 0x6147, 0x614C, 0x0A72, /* Array index: 0x0162 */ 0x6162, 0x6168, 0x0A78, /* Array index: 0x0165 */ 0x6198, 0x619A, 0x0A7F, /* Array index: 0x0168 */ 0x61C7, 0x61CB, 0x0A82, /* Array index: 0x016B */ 0x61F6, 0x6200, 0x0A87, /* Array index: 0x016E */ 0x620A, 0x6212, 0x0A92, /* Array index: 0x0171 */ 0x623E, 0x6241, 0x0A9B, /* Array index: 0x0174 */ 0x6247, 0x624D, 0x0A9F, /* Array index: 0x0177 */ 0x62C7, 0x62DC, 0x0AA6, /* Array index: 0x017A */ 0x62EC, 0x62F3, 0x0ABC, /* Array index: 0x017D */ 0x633A, 0x633E, 0x0AC4, /* Array index: 0x0180 */ 0x63A0, 0x63A2, 0x0AC9, /* Array index: 0x0183 */ 0x63A5, 0x63AA, 0x0ACC, /* Array index: 0x0186 */ 0x6478, 0x647A, 0x0AD2, /* Array index: 0x0189 */ 0x6491, 0x6493, 0x0AD5, /* Array index: 0x018C */ 0x64E1, 0x64E7, 0x0AD8, /* Array index: 0x018F */ 0x652A, 0x652C, 0x0ADF, /* Array index: 0x0192 */ 0x6536, 0x653F, 0x0AE2, /* Array index: 0x0195 */ 0x654D, 0x6551, 0x0AEC, /* Array index: 0x0198 */ 0x6574, 0x6578, 0x0AF1, /* Array index: 0x019B */ 0x65E5, 0x65ED, 0x0AF6, /* Array index: 0x019E */ 0x65FA, 0x65FF, 0x0AFF, /* Array index: 0x01A1 */ 0x6606, 0x6615, 0x0B05, /* Array index: 0x01A4 */ 0x661E, 0x6620, 0x0B15, /* Array index: 0x01A7 */ 0x662D, 0x6631, 0x0B18, /* Array index: 0x01AA */ 0x6641, 0x6644, 0x0B1D, /* Array index: 0x01AD */ 0x665B, 0x665F, 0x0B21, /* Array index: 0x01B0 */ 0x6664, 0x666F, 0x0B26, /* Array index: 0x01B3 */ 0x6673, 0x667A, 0x0B32, /* Array index: 0x01B6 */ 0x6687, 0x6689, 0x0B3A, /* Array index: 0x01B9 */ 0x6696, 0x6698, 0x0B3D, /* Array index: 0x01BC */ 0x66B2, 0x66B4, 0x0B40, /* Array index: 0x01BF */ 0x66F0, 0x6700, 0x0B43, /* Array index: 0x01C2 */ 0x671B, 0x671F, 0x0B54, /* Array index: 0x01C5 */ 0x6726, 0x672E, 0x0B59, /* Array index: 0x01C8 */ 0x674E, 0x6753, 0x0B62, /* Array index: 0x01CB */ 0x676D, 0x6777, 0x0B68, /* Array index: 0x01CE */ 0x67B6, 0x67B8, 0x0B73, /* Array index: 0x01D1 */ 0x67CF, 0x67D4, 0x0B76, /* Array index: 0x01D4 */ 0x67EF, 0x67F6, 0x0B7C, /* Array index: 0x01D7 */ 0x683C, 0x6843, 0x0B84, /* Array index: 0x01DA */ 0x6850, 0x6854, 0x0B8C, /* Array index: 0x01DD */ 0x68AD, 0x68B6, 0x0B91, /* Array index: 0x01E0 */ 0x6953, 0x695A, 0x0B9B, /* Array index: 0x01E3 */ 0x695E, 0x6963, 0x0BA3, /* Array index: 0x01E6 */ 0x696B, 0x696F, 0x0BA9, /* Array index: 0x01E9 */ 0x6975, 0x6979, 0x0BAE, /* Array index: 0x01EC */ 0x69CB, 0x69CD, 0x0BB3, /* Array index: 0x01EF */ 0x6A38, 0x6A3A, 0x0BB6, /* Array index: 0x01F2 */ 0x6B5F, 0x6B66, 0x0BB9, /* Array index: 0x01F5 */ 0x6BD2, 0x6BD8, 0x0BC1, /* Array index: 0x01F8 */ 0x6C3E, 0x6C42, 0x0BC8, /* Array index: 0x01FB */ 0x6C5D, 0x6C60, 0x0BCD, /* Array index: 0x01FE */ 0x6C7D, 0x6C88, 0x0BD1, /* Array index: 0x0201 */ 0x6C90, 0x6C9B, 0x0BDD, /* Array index: 0x0204 */ 0x6CB8, 0x6CC4, 0x0BE9, /* Array index: 0x0207 */ 0x6CE1, 0x6CE5, 0x0BF6, /* Array index: 0x020A */ 0x6CEE, 0x6CF0, 0x0BFB, /* Array index: 0x020D */ 0x6D35, 0x6D3E, 0x0BFE, /* Array index: 0x0210 */ 0x6D77, 0x6D79, 0x0C08, /* Array index: 0x0213 */ 0x6D85, 0x6D8E, 0x0C0B, /* Array index: 0x0216 */ 0x6DC3, 0x6DC7, 0x0C15, /* Array index: 0x0219 */ 0x6DD8, 0x6DDA, 0x0C1A, /* Array index: 0x021C */ 0x6DF5, 0x6DFB, 0x0C1D, /* Array index: 0x021F */ 0x6E17, 0x6E26, 0x0C24, /* Array index: 0x0222 */ 0x6E2B, 0x6E2F, 0x0C34, /* Array index: 0x0225 */ 0x6E3A, 0x6E3E, 0x0C39, /* Array index: 0x0228 */ 0x6E5B, 0x6E5F, 0x0C3E, /* Array index: 0x022B */ 0x6EFE, 0x6F02, 0x0C43, /* Array index: 0x022E */ 0x6F57, 0x6F5F, 0x0C48, /* Array index: 0x0231 */ 0x6F7A, 0x6F7E, 0x0C51, /* Array index: 0x0234 */ 0x6FBE, 0x6FC3, 0x0C56, /* Array index: 0x0237 */ 0x6FDF, 0x6FE1, 0x0C5C, /* Array index: 0x023A */ 0x7018, 0x701F, 0x0C5F, /* Array index: 0x023D */ 0x7098, 0x709A, 0x0C67, /* Array index: 0x0240 */ 0x70AB, 0x70AF, 0x0C6A, /* Array index: 0x0243 */ 0x70B7, 0x70B9, 0x0C6F, /* Array index: 0x0246 */ 0x7164, 0x7169, 0x0C72, /* Array index: 0x0249 */ 0x71E5, 0x71E7, 0x0C78, /* Array index: 0x024C */ 0x71FB, 0x7200, 0x0C7B, /* Array index: 0x024F */ 0x723A, 0x7240, 0x0C81, /* Array index: 0x0252 */ 0x7246, 0x7248, 0x0C88, /* Array index: 0x0255 */ 0x731B, 0x731D, 0x0C8B, /* Array index: 0x0258 */ 0x7329, 0x732B, 0x0C8E, /* Array index: 0x025B */ 0x7394, 0x7398, 0x0C91, /* Array index: 0x025E */ 0x73C9, 0x73CF, 0x0C96, /* Array index: 0x0261 */ 0x73E3, 0x73EA, 0x0C9D, /* Array index: 0x0264 */ 0x7403, 0x7409, 0x0CA5, /* Array index: 0x0267 */ 0x7420, 0x743A, 0x0CAC, /* Array index: 0x026A */ 0x743F, 0x7444, 0x0CC7, /* Array index: 0x026D */ 0x7457, 0x746A, 0x0CCD, /* Array index: 0x0270 */ 0x7530, 0x7533, 0x0CE1, /* Array index: 0x0273 */ 0x7559, 0x755D, 0x0CE5, /* Array index: 0x0276 */ 0x75B1, 0x75BE, 0x0CEA, /* Array index: 0x0279 */ 0x761F, 0x7626, 0x0CF8, /* Array index: 0x027C */ 0x767B, 0x767E, 0x0D00, /* Array index: 0x027F */ 0x76DB, 0x76E4, 0x0D04, /* Array index: 0x0282 */ 0x77ED, 0x77EF, 0x0D0E, /* Array index: 0x0285 */ 0x7825, 0x7827, 0x0D11, /* Array index: 0x0288 */ 0x788C, 0x788E, 0x0D14, /* Array index: 0x028B */ 0x78BA, 0x78BC, 0x0D17, /* Array index: 0x028E */ 0x792A, 0x792C, 0x0D1A, /* Array index: 0x0291 */ 0x7947, 0x7949, 0x0D1D, /* Array index: 0x0294 */ 0x7956, 0x7960, 0x0D20, /* Array index: 0x0297 */ 0x798D, 0x7991, 0x0D2B, /* Array index: 0x029A */ 0x79BD, 0x79C1, 0x0D30, /* Array index: 0x029D */ 0x79C9, 0x79CB, 0x0D35, /* Array index: 0x02A0 */ 0x7A3B, 0x7A40, 0x0D38, /* Array index: 0x02A3 */ 0x7B49, 0x7B56, 0x0D3E, /* Array index: 0x02A6 */ 0x7C3D, 0x7C3F, 0x0D4C, /* Array index: 0x02A9 */ 0x7CB1, 0x7CB3, 0x0D4F, /* Array index: 0x02AC */ 0x7CDE, 0x7CE0, 0x0D52, /* Array index: 0x02AF */ 0x7D02, 0x7D0D, 0x0D55, /* Array index: 0x02B2 */ 0x7D17, 0x7D1B, 0x0D61, /* Array index: 0x02B5 */ 0x7D20, 0x7D22, 0x0D66, /* Array index: 0x02B8 */ 0x7D2B, 0x7D30, 0x0D69, /* Array index: 0x02BB */ 0x7D42, 0x7D46, 0x0D6F, /* Array index: 0x02BE */ 0x7D71, 0x7D73, 0x0D74, /* Array index: 0x02C1 */ 0x7DB1, 0x7DB5, 0x0D77, /* Array index: 0x02C4 */ 0x7DBA, 0x7DBF, 0x0D7C, /* Array index: 0x02C7 */ 0x7DDD, 0x7DE3, 0x0D82, /* Array index: 0x02CA */ 0x7E1B, 0x7E23, 0x0D89, /* Array index: 0x02CD */ 0x7E69, 0x7E6D, 0x0D92, /* Array index: 0x02D0 */ 0x7FDF, 0x7FE1, 0x0D97, /* Array index: 0x02D3 */ 0x806F, 0x8073, 0x0D9A, /* Array index: 0x02D6 */ 0x807D, 0x807F, 0x0D9F, /* Array index: 0x02D9 */ 0x8084, 0x808C, 0x0DA2, /* Array index: 0x02DC */ 0x8105, 0x810A, 0x0DAB, /* Array index: 0x02DF */ 0x8178, 0x817A, 0x0DB1, /* Array index: 0x02E2 */ 0x81BD, 0x81C2, 0x0DB4, /* Array index: 0x02E5 */ 0x81FA, 0x81FE, 0x0DBA, /* Array index: 0x02E8 */ 0x821B, 0x8221, 0x0DBF, /* Array index: 0x02EB */ 0x822A, 0x822C, 0x0DC6, /* Array index: 0x02EE */ 0x8235, 0x8239, 0x0DC9, /* Array index: 0x02F1 */ 0x826E, 0x8272, 0x0DCE, /* Array index: 0x02F4 */ 0x82AC, 0x82BF, 0x0DD3, /* Array index: 0x02F7 */ 0x82D1, 0x82D7, 0x0DE7, /* Array index: 0x02FA */ 0x82E5, 0x82E7, 0x0DEE, /* Array index: 0x02FD */ 0x82FD, 0x8305, 0x0DF1, /* Array index: 0x0300 */ 0x8334, 0x8339, 0x0DFA, /* Array index: 0x0303 */ 0x83A9, 0x83AB, 0x0E00, /* Array index: 0x0306 */ 0x83EF, 0x83F4, 0x0E03, /* Array index: 0x0309 */ 0x840A, 0x840E, 0x0E09, /* Array index: 0x030C */ 0x8568, 0x856A, 0x0E0E, /* Array index: 0x030F */ 0x85A6, 0x85AA, 0x0E11, /* Array index: 0x0312 */ 0x85CD, 0x85CF, 0x0E16, /* Array index: 0x0315 */ 0x865B, 0x865F, 0x0E19, /* Array index: 0x0318 */ 0x8861, 0x8863, 0x0E1E, /* Array index: 0x031B */ 0x887E, 0x8882, 0x0E21, /* Array index: 0x031E */ 0x88F3, 0x88F5, 0x0E26, /* Array index: 0x0321 */ 0x8A16, 0x8A18, 0x0E29, /* Array index: 0x0324 */ 0x8A6D, 0x8A75, 0x0E2C, /* Array index: 0x0327 */ 0x8AA0, 0x8AAA, 0x0E35, /* Array index: 0x032A */ 0x8AEA, 0x8AEE, 0x0E40, /* Array index: 0x032D */ 0x8AF6, 0x8AFA, 0x0E45, /* Array index: 0x0330 */ 0x8AFE, 0x8B04, 0x0E4A, /* Array index: 0x0333 */ 0x8B16, 0x8B1D, 0x0E51, /* Array index: 0x0336 */ 0x8C9D, 0x8CA2, 0x0E59, /* Array index: 0x0339 */ 0x8CA7, 0x8CCA, 0x0E5F, /* Array index: 0x033C */ 0x8CE0, 0x8CE6, 0x0E83, /* Array index: 0x033F */ 0x8CFB, 0x8CFD, 0x0E8A, /* Array index: 0x0342 */ 0x8D04, 0x8D0A, 0x0E8D, /* Array index: 0x0345 */ 0x8E47, 0x8E4A, 0x0E94, /* Array index: 0x0348 */ 0x8EAA, 0x8EAC, 0x0E98, /* Array index: 0x034B */ 0x8ECA, 0x8ECD, 0x0E9B, /* Array index: 0x034E */ 0x8F12, 0x8F15, 0x0E9F, /* Array index: 0x0351 */ 0x8F1B, 0x8F1F, 0x0EA3, /* Array index: 0x0354 */ 0x8F26, 0x8F2A, 0x0EA8, /* Array index: 0x0357 */ 0x8FAD, 0x8FB2, 0x0EAD, /* Array index: 0x035A */ 0x9000, 0x9008, 0x0EB3, /* Array index: 0x035D */ 0x900D, 0x9023, 0x0EBC, /* Array index: 0x0360 */ 0x904A, 0x9055, 0x0ED3, /* Array index: 0x0363 */ 0x905C, 0x9063, 0x0EDF, /* Array index: 0x0366 */ 0x906D, 0x906F, 0x0EE7, /* Array index: 0x0369 */ 0x907C, 0x908A, 0x0EEA, /* Array index: 0x036C */ 0x90AF, 0x90B1, 0x0EF9, /* Array index: 0x036F */ 0x9149, 0x914E, 0x0EFC, /* Array index: 0x0372 */ 0x91AB, 0x91B5, 0x0F02, /* Array index: 0x0375 */ 0x91C9, 0x91D1, 0x0F0D, /* Array index: 0x0378 */ 0x9210, 0x9212, 0x0F16, /* Array index: 0x037B */ 0x9262, 0x9266, 0x0F19, /* Array index: 0x037E */ 0x931E, 0x9328, 0x0F1E, /* Array index: 0x0381 */ 0x958F, 0x9594, 0x0F29, /* Array index: 0x0384 */ 0x95A3, 0x95A5, 0x0F2F, /* Array index: 0x0387 */ 0x95D4, 0x95D6, 0x0F32, /* Array index: 0x038A */ 0x964B, 0x964D, 0x0F35, /* Array index: 0x038D */ 0x965B, 0x9664, 0x0F38, /* Array index: 0x0390 */ 0x9673, 0x9678, 0x0F42, /* Array index: 0x0393 */ 0x968A, 0x968E, 0x0F48, /* Array index: 0x0396 */ 0x9698, 0x969C, 0x0F4D, /* Array index: 0x0399 */ 0x96C0, 0x96CE, 0x0F52, /* Array index: 0x039C */ 0x96E8, 0x96EA, 0x0F61, /* Array index: 0x039F */ 0x97FF, 0x9813, 0x0F64, /* Array index: 0x03A2 */ 0x984C, 0x984E, 0x0F79, /* Array index: 0x03A5 */ 0x98ED, 0x98EF, 0x0F7C, /* Array index: 0x03A8 */ 0x98FC, 0x98FE, 0x0F7F, /* Array index: 0x03AB */ 0x9949, 0x994D, 0x0F82, /* Array index: 0x03AE */ 0x99AC, 0x99AE, 0x0F87, /* Array index: 0x03B1 */ 0x99D0, 0x99D2, 0x0F8A, /* Array index: 0x03B4 */ 0x9B41, 0x9B45, 0x0F8D, /* Array index: 0x03B7 */ 0x9DF8, 0x9DFA, 0x0F92, /* Array index: 0x03BA */ 0xAC07, 0xAC0A, 0x0F95, /* Array index: 0x03BD */ 0xAC10, 0xAC1D, 0x0F99, /* Array index: 0x03C0 */ 0xAC2C, 0xAC31, 0x0FA7, /* Array index: 0x03C3 */ 0xAC80, 0xAC8C, 0x0FAD, /* Array index: 0x03C6 */ 0xAC9C, 0xACA1, 0x0FBA, /* Array index: 0x03C9 */ 0xACA8, 0xACB0, 0x0FC0, /* Array index: 0x03CC */ 0xACB8, 0xACBD, 0x0FC9, /* Array index: 0x03CF */ 0xACEF, 0xACF6, 0x0FCF, /* Array index: 0x03D2 */ 0xAD73, 0xAD76, 0x0FD7, /* Array index: 0x03D5 */ 0xAD7B, 0xAD82, 0x0FDB, /* Array index: 0x03D8 */ 0xADFF, 0xAE01, 0x0FE3, /* Array index: 0x03DB */ 0xAE4A, 0xAE50, 0x0FE6, /* Array index: 0x03DE */ 0xAE5C, 0xAE61, 0x0FED, /* Array index: 0x03E1 */ 0xAE78, 0xAE7D, 0x0FF3, /* Array index: 0x03E4 */ 0xAEBC, 0xAEC0, 0x0FF9, /* Array index: 0x03E7 */ 0xAECC, 0xAED1, 0x0FFE, /* Array index: 0x03EA */ 0xAF3F, 0xAF43, 0x1004, /* Array index: 0x03ED */ 0xAFC7, 0xAFCE, 0x1009, /* Array index: 0x03F0 */ 0xB053, 0xB059, 0x1011, /* Array index: 0x03F3 */ 0xB098, 0xB0A2, 0x1018, /* Array index: 0x03F6 */ 0xB0A8, 0xB0B5, 0x1023, /* Array index: 0x03F9 */ 0xB0C4, 0xB0C9, 0x1031, /* Array index: 0x03FC */ 0xB108, 0xB10C, 0x1037, /* Array index: 0x03FF */ 0xB118, 0xB11D, 0x103C, /* Array index: 0x0402 */ 0xB123, 0xB125, 0x1042, /* Array index: 0x0405 */ 0xB134, 0xB139, 0x1045, /* Array index: 0x0408 */ 0xB192, 0xB194, 0x104B, /* Array index: 0x040B */ 0xB298, 0xB29A, 0x104E, /* Array index: 0x040E */ 0xB2E2, 0xB301, 0x1051, /* Array index: 0x0411 */ 0xB310, 0xB315, 0x1071, /* Array index: 0x0414 */ 0xB354, 0xB35F, 0x1077, /* Array index: 0x0417 */ 0xB380, 0xB385, 0x1083, /* Array index: 0x041A */ 0xB524, 0xB52A, 0x1089, /* Array index: 0x041D */ 0xB540, 0xB545, 0x1090, /* Array index: 0x0420 */ 0xB54B, 0xB54D, 0x1096, /* Array index: 0x0423 */ 0xB55C, 0xB561, 0x1099, /* Array index: 0x0426 */ 0xB5B0, 0xB5B5, 0x109F, /* Array index: 0x0429 */ 0xB5BB, 0xB5BD, 0x10A5, /* Array index: 0x042C */ 0xB5CC, 0xB5D1, 0x10A8, /* Array index: 0x042F */ 0xB78C, 0xB799, 0x10AE, /* Array index: 0x0432 */ 0xB7A8, 0xB7AD, 0x10BC, /* Array index: 0x0435 */ 0xB7FC, 0xB801, 0x10C2, /* Array index: 0x0438 */ 0xB807, 0xB809, 0x10C8, /* Array index: 0x043B */ 0xB834, 0xB839, 0x10CB, /* Array index: 0x043E */ 0xB9CC, 0xB9D2, 0x10D1, /* Array index: 0x0441 */ 0xB9E1, 0xB9E5, 0x10D8, /* Array index: 0x0444 */ 0xB9F4, 0xB9FA, 0x10DD, /* Array index: 0x0447 */ 0xBA53, 0xBA55, 0x10E4, /* Array index: 0x044A */ 0xBA64, 0xBA69, 0x10E7, /* Array index: 0x044D */ 0xBA83, 0xBA87, 0x10ED, /* Array index: 0x0450 */ 0xBAA8, 0xBAAC, 0x10F2, /* Array index: 0x0453 */ 0xBB34, 0xBB3E, 0x10F7, /* Array index: 0x0456 */ 0xBC08, 0xBC1F, 0x1102, /* Array index: 0x0459 */ 0xBC40, 0xBC45, 0x111A, /* Array index: 0x045C */ 0xBCB0, 0xBCB5, 0x1120, /* Array index: 0x045F */ 0xBCCD, 0xBCD1, 0x1126, /* Array index: 0x0462 */ 0xBCF4, 0xBCF8, 0x112B, /* Array index: 0x0465 */ 0xBD87, 0xBD8A, 0x1130, /* Array index: 0x0468 */ 0xBE57, 0xBE5B, 0x1134, /* Array index: 0x046B */ 0xBE70, 0xBE75, 0x1139, /* Array index: 0x046E */ 0xBE7B, 0xBE7D, 0x113F, /* Array index: 0x0471 */ 0xBE8C, 0xBE91, 0x1142, /* Array index: 0x0474 */ 0xBEE3, 0xBEE5, 0x1148, /* Array index: 0x0477 */ 0xBF18, 0xBF1D, 0x114B, /* Array index: 0x047A */ 0xC0AC, 0xC0B6, 0x1151, /* Array index: 0x047D */ 0xC0BC, 0xC0C1, 0x115C, /* Array index: 0x0480 */ 0xC0D8, 0xC0DD, 0x1162, /* Array index: 0x0483 */ 0xC11C, 0xC127, 0x1168, /* Array index: 0x0486 */ 0xC12C, 0xC131, 0x1174, /* Array index: 0x0489 */ 0xC148, 0xC14D, 0x117A, /* Array index: 0x048C */ 0xC164, 0xC169, 0x1180, /* Array index: 0x048F */ 0xC18C, 0xC190, 0x1186, /* Array index: 0x0492 */ 0xC2EB, 0xC2F1, 0x118B, /* Array index: 0x0495 */ 0xC2F8, 0xC2FC, 0x1192, /* Array index: 0x0498 */ 0xC313, 0xC315, 0x1197, /* Array index: 0x049B */ 0xC4FF, 0xC501, 0x119A, /* Array index: 0x049E */ 0xC544, 0xC54E, 0x119D, /* Array index: 0x04A1 */ 0xC553, 0xC559, 0x11A8, /* Array index: 0x04A4 */ 0xC55D, 0xC561, 0x11AF, /* Array index: 0x04A7 */ 0xC570, 0xC575, 0x11B4, /* Array index: 0x04AA */ 0xC5B8, 0xC5BE, 0x11BA, /* Array index: 0x04AD */ 0xC5C4, 0xC5D1, 0x11C1, /* Array index: 0x04B0 */ 0xC5EC, 0xC5F0, 0x11CF, /* Array index: 0x04B3 */ 0xC5FC, 0xC608, 0x11D4, /* Array index: 0x04B6 */ 0xC618, 0xC61C, 0x11E1, /* Array index: 0x04B9 */ 0xC62C, 0xC63B, 0x11E6, /* Array index: 0x04BC */ 0xC650, 0xC655, 0x11F6, /* Array index: 0x04BF */ 0xC6B8, 0xC6BA, 0x11FC, /* Array index: 0x04C2 */ 0xC74F, 0xC758, 0x11FF, /* Array index: 0x04C5 */ 0xC77C, 0xC77E, 0x1209, /* Array index: 0x04C8 */ 0xC783, 0xC78A, 0x120C, /* Array index: 0x04CB */ 0xC794, 0xC79A, 0x1214, /* Array index: 0x04CE */ 0xC7A0, 0xC7A6, 0x121B, /* Array index: 0x04D1 */ 0xC7BC, 0xC7C1, 0x1222, /* Array index: 0x04D4 */ 0xC883, 0xC88D, 0x1228, /* Array index: 0x04D7 */ 0xC904, 0xC906, 0x1233, /* Array index: 0x04DA */ 0xC9D9, 0xC9DD, 0x1236, /* Array index: 0x04DD */ 0xC9EC, 0xC9F1, 0x123B, /* Array index: 0x04E0 */ 0xCA08, 0xCA0D, 0x1241, /* Array index: 0x04E3 */ 0xCA5C, 0xCA61, 0x1247, /* Array index: 0x04E6 */ 0xCC27, 0xCC29, 0x124D, /* Array index: 0x04E9 */ 0xCC38, 0xCC3E, 0x1250, /* Array index: 0x04EC */ 0xCC54, 0xCC59, 0x1257, /* Array index: 0x04EF */ 0xCCA8, 0xCCAD, 0x125D, /* Array index: 0x04F2 */ 0xCE5F, 0xCE61, 0x1263, /* Array index: 0x04F5 */ 0xCEA0, 0xCEA5, 0x1266, /* Array index: 0x04F8 */ 0xCEF4, 0xCEF9, 0x126C, /* Array index: 0x04FB */ 0xCF2C, 0xCF31, 0x1272, /* Array index: 0x04FE */ 0xD0D0, 0xD0D5, 0x1278, /* Array index: 0x0501 */ 0xD0EC, 0xD0F1, 0x127E, /* Array index: 0x0504 */ 0xD140, 0xD145, 0x1284, /* Array index: 0x0507 */ 0xD30C, 0xD310, 0x128A, /* Array index: 0x050A */ 0xD31C, 0xD321, 0x128F, /* Array index: 0x050D */ 0xD338, 0xD33D, 0x1295, /* Array index: 0x0510 */ 0xD38C, 0xD391, 0x129B, /* Array index: 0x0513 */ 0xD584, 0xD589, 0x12A1, /* Array index: 0x0516 */ 0xD610, 0xD615, 0x12A7, /* Array index: 0x0519 */ 0xD754, 0xD759, 0x12AD, /* Array index: 0x051C */ 0xF900, 0xFA0B, 0x12B3, /* Array index: 0x051F */ 0xFF01, 0xFF5E, 0x13BF, /* Array index: 0x0522 */ 0xFFE0, 0xFFE6, 0x141D, /* Ranges content */ /* Range 0x00B0 - 0x00BF, array index: 0x0525 */ 0x2146,0x213E,0x2977,0x2978,0x2225,INVALC,0x2252,0x2124, 0x222C,0x2976,0x282C,INVALC,0x2879,0x2876,0x287A,0x222F, /* Range 0x0131 - 0x0133, array index: 0x0535 */ 0x2925,0x2826,0x2926, /* Range 0x013F - 0x0142, array index: 0x0538 */ 0x2828,0x2928,0x2829,0x2929, /* Range 0x0149 - 0x014B, array index: 0x053C */ 0x2930,0x282F,0x292F, /* Range 0x02D8 - 0x02DD, array index: 0x053F */ 0x2228,0x222B,0x222A,0x222D,INVALC,0x2229, /* Range 0x0391 - 0x03A9, array index: 0x0545 */ 0x2541,0x2542,0x2543,0x2544,0x2545,0x2546,0x2547,0x2548, 0x2549,0x254A,0x254B,0x254C,0x254D,0x254E,0x254F,0x2550, 0x2551,INVALC,0x2552,0x2553,0x2554,0x2555,0x2556,0x2557, 0x2558, /* Range 0x03B1 - 0x03C9, array index: 0x055E */ 0x2561,0x2562,0x2563,0x2564,0x2565,0x2566,0x2567,0x2568, 0x2569,0x256A,0x256B,0x256C,0x256D,0x256E,0x256F,0x2570, 0x2571,INVALC,0x2572,0x2573,0x2574,0x2575,0x2576,0x2577, 0x2578, /* Range 0x0410 - 0x0451, array index: 0x0577 */ 0x2C21,0x2C22,0x2C23,0x2C24,0x2C25,0x2C26,0x2C28,0x2C29, 0x2C2A,0x2C2B,0x2C2C,0x2C2D,0x2C2E,0x2C2F,0x2C30,0x2C31, 0x2C32,0x2C33,0x2C34,0x2C35,0x2C36,0x2C37,0x2C38,0x2C39, 0x2C3A,0x2C3B,0x2C3C,0x2C3D,0x2C3E,0x2C3F,0x2C40,0x2C41, 0x2C51,0x2C52,0x2C53,0x2C54,0x2C55,0x2C56,0x2C58,0x2C59, 0x2C5A,0x2C5B,0x2C5C,0x2C5D,0x2C5E,0x2C5F,0x2C60,0x2C61, 0x2C62,0x2C63,0x2C64,0x2C65,0x2C66,0x2C67,0x2C68,0x2C69, 0x2C6A,0x2C6B,0x2C6C,0x2C6D,0x2C6E,0x2C6F,0x2C70,0x2C71, INVALC,0x2C57, /* Range 0x207F - 0x2084, array index: 0x05B9 */ 0x297A,INVALC,0x297B,0x297C,0x297D,0x297E, /* Range 0x215B - 0x2169, array index: 0x05BF */ 0x287B,0x287C,0x287D,0x287E,INVALC,0x2530,0x2531,0x2532, 0x2533,0x2534,0x2535,0x2536,0x2537,0x2538,0x2539, /* Range 0x2170 - 0x2179, array index: 0x05CE */ 0x2521,0x2522,0x2523,0x2524,0x2525,0x2526,0x2527,0x2528, 0x2529,0x252A, /* Range 0x2190 - 0x2199, array index: 0x05D8 */ 0x2167,0x2168,0x2166,0x2169,0x216A,0x2255,0x2258,0x2256, 0x2259,0x2257, /* Range 0x2225 - 0x222E, array index: 0x05E2 */ 0x212B,INVALC,0x217C,0x217D,0x217B,0x217A,0x2172,0x2173, INVALC,0x2231, /* Range 0x2460 - 0x246E, array index: 0x05EC */ 0x2867,0x2868,0x2869,0x286A,0x286B,0x286C,0x286D,0x286E, 0x286F,0x2870,0x2871,0x2872,0x2873,0x2874,0x2875, /* Range 0x2474 - 0x2482, array index: 0x05FB */ 0x2967,0x2968,0x2969,0x296A,0x296B,0x296C,0x296D,0x296E, 0x296F,0x2970,0x2971,0x2972,0x2973,0x2974,0x2975, /* Range 0x249C - 0x24B5, array index: 0x060A */ 0x294D,0x294E,0x294F,0x2950,0x2951,0x2952,0x2953,0x2954, 0x2955,0x2956,0x2957,0x2958,0x2959,0x295A,0x295B,0x295C, 0x295D,0x295E,0x295F,0x2960,0x2961,0x2962,0x2963,0x2964, 0x2965,0x2966, /* Range 0x24D0 - 0x24E9, array index: 0x0624 */ 0x284D,0x284E,0x284F,0x2850,0x2851,0x2852,0x2853,0x2854, 0x2855,0x2856,0x2857,0x2858,0x2859,0x285A,0x285B,0x285C, 0x285D,0x285E,0x285F,0x2860,0x2861,0x2862,0x2863,0x2864, 0x2865,0x2866, /* Range 0x2500 - 0x2503, array index: 0x063E */ 0x2621,0x262C,0x2622,0x262D, /* Range 0x250C - 0x254B, array index: 0x0642 */ 0x2623,0x2648,0x2647,0x262E,0x2624,0x2642,0x2641,0x262F, 0x2626,0x2646,0x2645,0x2631,0x2625,0x2644,0x2643,0x2630, 0x2627,0x263C,0x2649,0x264A,0x2637,0x264B,0x264C,0x2632, 0x2629,0x263E,0x264D,0x264E,0x2639,0x264F,0x2650,0x2634, 0x2628,0x2651,0x2652,0x2638,0x263D,0x2653,0x2654,0x2633, 0x262A,0x2655,0x2656,0x263A,0x263F,0x2657,0x2658,0x2635, 0x262B,0x2659,0x265A,0x263B,0x265B,0x265C,0x2640,0x265D, 0x265E,0x265F,0x2660,0x2661,0x2662,0x2663,0x2664,0x2636, /* Range 0x25A0 - 0x25A9, array index: 0x0682 */ 0x2161,0x2160,INVALC,0x2243,0x2247,0x2248,0x224B,0x224A, 0x2249,0x224C, /* Range 0x25C6 - 0x25C8, array index: 0x068C */ 0x215F,0x215E,0x2242, /* Range 0x25CE - 0x25D1, array index: 0x068F */ 0x215D,0x215C,0x2244,0x2245, /* Range 0x2660 - 0x266D, array index: 0x0693 */ 0x223C,0x223D,INVALC,0x2240,0x223B,0x223E,INVALC,0x223F, 0x224D,0x225B,0x225C,INVALC,0x225D,0x225A, /* Range 0x3000 - 0x3003, array index: 0x06A1 */ 0x2121,0x2122,0x2123,0x2128, /* Range 0x3008 - 0x3015, array index: 0x06A5 */ 0x2134,0x2135,0x2136,0x2137,0x2138,0x2139,0x213A,0x213B, 0x213C,0x213D,INVALC,0x216B,0x2132,0x2133, /* Range 0x3041 - 0x3093, array index: 0x06B3 */ 0x2A21,0x2A22,0x2A23,0x2A24,0x2A25,0x2A26,0x2A27,0x2A28, 0x2A29,0x2A2A,0x2A2B,0x2A2C,0x2A2D,0x2A2E,0x2A2F,0x2A30, 0x2A31,0x2A32,0x2A33,0x2A34,0x2A35,0x2A36,0x2A37,0x2A38, 0x2A39,0x2A3A,0x2A3B,0x2A3C,0x2A3D,0x2A3E,0x2A3F,0x2A40, 0x2A41,0x2A42,0x2A43,0x2A44,0x2A45,0x2A46,0x2A47,0x2A48, 0x2A49,0x2A4A,0x2A4B,0x2A4C,0x2A4D,0x2A4E,0x2A4F,0x2A50, 0x2A51,0x2A52,0x2A53,0x2A54,0x2A55,0x2A56,0x2A57,0x2A58, 0x2A59,0x2A5A,0x2A5B,0x2A5C,0x2A5D,0x2A5E,0x2A5F,0x2A60, 0x2A61,0x2A62,0x2A63,0x2A64,0x2A65,0x2A66,0x2A67,0x2A68, 0x2A69,0x2A6A,0x2A6B,0x2A6C,0x2A6D,0x2A6E,0x2A6F,0x2A70, 0x2A71,0x2A72,0x2A73, /* Range 0x30A1 - 0x30F6, array index: 0x0706 */ 0x2B21,0x2B22,0x2B23,0x2B24,0x2B25,0x2B26,0x2B27,0x2B28, 0x2B29,0x2B2A,0x2B2B,0x2B2C,0x2B2D,0x2B2E,0x2B2F,0x2B30, 0x2B31,0x2B32,0x2B33,0x2B34,0x2B35,0x2B36,0x2B37,0x2B38, 0x2B39,0x2B3A,0x2B3B,0x2B3C,0x2B3D,0x2B3E,0x2B3F,0x2B40, 0x2B41,0x2B42,0x2B43,0x2B44,0x2B45,0x2B46,0x2B47,0x2B48, 0x2B49,0x2B4A,0x2B4B,0x2B4C,0x2B4D,0x2B4E,0x2B4F,0x2B50, 0x2B51,0x2B52,0x2B53,0x2B54,0x2B55,0x2B56,0x2B57,0x2B58, 0x2B59,0x2B5A,0x2B5B,0x2B5C,0x2B5D,0x2B5E,0x2B5F,0x2B60, 0x2B61,0x2B62,0x2B63,0x2B64,0x2B65,0x2B66,0x2B67,0x2B68, 0x2B69,0x2B6A,0x2B6B,0x2B6C,0x2B6D,0x2B6E,0x2B6F,0x2B70, 0x2B71,0x2B72,0x2B73,0x2B74,0x2B75,0x2B76, /* Range 0x3131 - 0x318E, array index: 0x075C */ 0x2421,0x2422,0x2423,0x2424,0x2425,0x2426,0x2427,0x2428, 0x2429,0x242A,0x242B,0x242C,0x242D,0x242E,0x242F,0x2430, 0x2431,0x2432,0x2433,0x2434,0x2435,0x2436,0x2437,0x2438, 0x2439,0x243A,0x243B,0x243C,0x243D,0x243E,0x243F,0x2440, 0x2441,0x2442,0x2443,0x2444,0x2445,0x2446,0x2447,0x2448, 0x2449,0x244A,0x244B,0x244C,0x244D,0x244E,0x244F,0x2450, 0x2451,0x2452,0x2453,0x2454,0x2455,0x2456,0x2457,0x2458, 0x2459,0x245A,0x245B,0x245C,0x245D,0x245E,0x245F,0x2460, 0x2461,0x2462,0x2463,0x2464,0x2465,0x2466,0x2467,0x2468, 0x2469,0x246A,0x246B,0x246C,0x246D,0x246E,0x246F,0x2470, 0x2471,0x2472,0x2473,0x2474,0x2475,0x2476,0x2477,0x2478, 0x2479,0x247A,0x247B,0x247C,0x247D,0x247E, /* Range 0x3200 - 0x321C, array index: 0x07BA */ 0x2931,0x2932,0x2933,0x2934,0x2935,0x2936,0x2937,0x2938, 0x2939,0x293A,0x293B,0x293C,0x293D,0x293E,0x293F,0x2940, 0x2941,0x2942,0x2943,0x2944,0x2945,0x2946,0x2947,0x2948, 0x2949,0x294A,0x294B,0x294C,0x225F, /* Range 0x3260 - 0x327B, array index: 0x07D7 */ 0x2831,0x2832,0x2833,0x2834,0x2835,0x2836,0x2837,0x2838, 0x2839,0x283A,0x283B,0x283C,0x283D,0x283E,0x283F,0x2840, 0x2841,0x2842,0x2843,0x2844,0x2845,0x2846,0x2847,0x2848, 0x2849,0x284A,0x284B,0x284C, /* Range 0x3380 - 0x33CA, array index: 0x07F3 */ 0x2749,0x274A,0x274B,0x274C,0x274D,INVALC,INVALC,INVALC, 0x273A,0x273B,0x275C,0x275D,0x275E,0x2736,0x2737,0x2738, 0x2754,0x2755,0x2756,0x2757,0x2758,0x2721,0x2722,0x2723, 0x2725,0x272B,0x272C,0x272D,0x272E,0x272F,0x2730,0x2731, 0x2732,0x2733,0x2734,0x2727,0x2728,0x2729,0x272A,0x273D, 0x273E,0x2765,0x2766,0x2767,0x2768,0x2761,0x2762,0x2763, 0x273F,0x2740,0x2741,0x2742,0x2743,0x2744,0x2745,0x2746, 0x2747,0x2748,0x274E,0x274F,0x2750,0x2751,0x2752,0x2753, 0x275A,0x275B,0x2263,0x276C,0x2726,0x2760,0x276F,0x2261, 0x273C,0x276D,0x2735, /* Range 0x33DB - 0x33DD, array index: 0x083E */ 0x2764,0x276E,0x2769, /* Range 0x4E07 - 0x4E0D, array index: 0x0841 */ 0x5832,0x6D5B,0x5F32,0x5F3E,0x793B,INVALC,0x5C74, /* Range 0x4E14 - 0x4E19, array index: 0x0848 */ 0x7326,0x5D60,0x6126,INVALC,0x4E78,0x5C30, /* Range 0x4E4B - 0x4E4F, array index: 0x084E */ 0x717D,INVALC,0x5E3F,0x7B3A,0x7939, /* Range 0x4E5D - 0x4E5F, array index: 0x0853 */ 0x4E7A,0x4B77,0x6525, /* Range 0x4E8E - 0x4E95, array index: 0x0856 */ 0x694D,INVALC,0x6A27,0x6976,0x7B3B,INVALC,0x6769,0x6F4C, /* Range 0x4EA1 - 0x4EAE, array index: 0x085E */ 0x584C,0x7971,INVALC,0x4E5F,0x7A24,0x6632,INVALC,0x7A7B, INVALC,INVALC,0x7A3D,0x4C48,0x6F4D,0x5555, /* Range 0x4ED4 - 0x4ED9, array index: 0x086C */ 0x6D28,0x5E42,0x7662,0x6D5C,0x5C75,0x6039, /* Range 0x4EE3 - 0x4EE5, array index: 0x0872 */ 0x535B,0x5635,0x6C24, /* Range 0x4F09 - 0x4F11, array index: 0x0875 */ 0x7972,0x6C25,0x505F,INVALC,0x676A,0x506B,0x5C51,0x5B69, 0x7D4C, /* Range 0x4F46 - 0x4F48, array index: 0x087E */ 0x5323,0x6E37,0x784F, /* Range 0x4F4D - 0x4F51, array index: 0x0881 */ 0x6A48,0x6E38,0x712C,0x7125,0x694E, /* Range 0x4F59 - 0x4F5C, array index: 0x0886 */ 0x6579,0x6C6A,0x5D56,0x6D42, /* Range 0x4FC2 - 0x4FC4, array index: 0x088A */ 0x4C75,0x7535,0x642D, /* Range 0x4FDD - 0x4FE1, array index: 0x088D */ 0x5C41,INVALC,0x5E46,0x7A6F,0x6361, /* Range 0x5023 - 0x502D, array index: 0x0892 */ 0x5B27,0x7637,INVALC,0x4F66,0x7072,0x4B5A,INVALC,0x6752, 0x5743,0x7670,0x685E, /* Range 0x5047 - 0x5049, array index: 0x089D */ 0x4A23,0x4C27,0x6A49, /* Range 0x5074 - 0x5078, array index: 0x08A0 */ 0x7630,0x6F4F,0x694F,INVALC,0x775E, /* Range 0x50FF - 0x5101, array index: 0x08A5 */ 0x5E47,0x6B70,0x7156, /* Range 0x5140 - 0x514E, array index: 0x08A8 */ 0x6834,0x6B43,INVALC,0x6A2A,0x7A7C,0x7576,0x703C,0x7D54, 0x603B,0x4E43,INVALC,0x503A,0x773A,0x5873,0x774D, /* Range 0x5165 - 0x516E, array index: 0x08B7 */ 0x6C7D,INVALC,0x522E,0x6E6F,0x5557,0x6A64,0x7822,0x4D6B, 0x573F,0x7B31, /* Range 0x5175 - 0x5178, array index: 0x08C1 */ 0x5C32,0x506C,0x4E7D,0x6E70, /* Range 0x51C9 - 0x51CD, array index: 0x08C5 */ 0x5558,INVALC,0x703D,0x5750,0x5450, /* Range 0x51DC - 0x51DE, array index: 0x08CA */ 0x574F,0x6B6A,0x7D6B, /* Range 0x51F6 - 0x51FA, array index: 0x08CD */ 0x7D55,INVALC,0x7448,0x686A,0x7573, /* Range 0x5206 - 0x520A, array index: 0x08D2 */ 0x5D42,0x6F37,0x6754,INVALC,0x4A4A, /* Range 0x5236 - 0x523B, array index: 0x08D7 */ 0x7024,0x616C,0x4F67,0x734B,0x6D29,0x4A3E, /* Range 0x524A - 0x524D, array index: 0x08DD */ 0x5E7B,0x503B,0x5537,0x6E71, /* Range 0x5287 - 0x5289, array index: 0x08E1 */ 0x503C,0x5B79,0x5731, /* Range 0x52A9 - 0x52AB, array index: 0x08E4 */ 0x703E,0x523D,0x4C24, /* Range 0x52D5 - 0x52E4, array index: 0x08E7 */ 0x5451,0x696D,INVALC,0x4A6B,0x5962,INVALC,0x7D32,INVALC, 0x632D,0x564C,0x5934,INVALC,INVALC,0x6127,0x6E53,0x5043, /* Range 0x5315 - 0x5319, array index: 0x08F7 */ 0x5D62,0x7B79,0x5D41,INVALC,0x6335, /* Range 0x533F - 0x534A, array index: 0x08FC */ 0x527B,0x4F21,0x6428,INVALC,0x7436,0x6C7E,INVALC,INVALC, 0x632E,0x676D,0x7D41,0x5A62, /* Range 0x5351 - 0x5354, array index: 0x0908 */ 0x5D64,0x706F,0x7671,0x7A70, /* Range 0x536F - 0x5377, array index: 0x090C */ 0x5956,0x6C54,0x6A4B,INVALC,INVALC,0x4A3F,0x5530,INVALC, 0x4F69, /* Range 0x53C8 - 0x53CD, array index: 0x0915 */ 0x6951,0x7329,0x5060,0x6952,INVALC,0x5A63, /* Range 0x53E1 - 0x53F3, array index: 0x091B */ 0x6755,0x753F,0x4F22,0x4D2F,0x4F23,INVALC,INVALC,INVALC, 0x4D30,0x717E,0x5023,0x612F,0x7823,INVALC,0x4A26,0x773B, 0x726A,0x5E48,0x6953, /* Range 0x5408 - 0x5411, array index: 0x092E */ 0x796A,0x514E,0x6E54,INVALC,0x5452,0x5923,0x7D28,0x5759, 0x774E,0x7A3E, /* Range 0x5438 - 0x543E, array index: 0x0938 */ 0x7D65,0x7623,INVALC,0x597C,0x7D29,INVALC,0x676E, /* Range 0x547B - 0x547D, array index: 0x093F */ 0x6362,0x7B3C,0x5924, /* Range 0x5586 - 0x558A, array index: 0x0942 */ 0x744A,0x547A,INVALC,0x7D2A,0x7962, /* Range 0x5598 - 0x559D, array index: 0x0947 */ 0x7437,0x7D42,0x7C30,INVALC,0x7D6C,0x4A62, /* Range 0x55A7 - 0x55AE, array index: 0x094D */ 0x7D3D,INVALC,0x6A67,0x5F43,0x5152,0x4E62,INVALC,0x5324, /* Range 0x574D - 0x5751, array index: 0x0955 */ 0x533B,0x4A6C,INVALC,0x7126,0x4B55, /* Range 0x5805 - 0x580A, array index: 0x095A */ 0x4C31,0x7758,INVALC,0x4B28,0x6B3C,0x643E, /* Range 0x582F - 0x5835, array index: 0x0960 */ 0x686B,0x6568,0x5C43,INVALC,INVALC,0x6D5E,0x5372, /* Range 0x58F9 - 0x58FD, array index: 0x0967 */ 0x6C6C,0x7B3E,0x5F6B,INVALC,0x6178, /* Range 0x5914 - 0x591C, array index: 0x096C */ 0x5073,0x602A,0x6862,INVALC,INVALC,0x6254,0x527D,INVALC, 0x6528, /* Range 0x5927 - 0x592E, array index: 0x0975 */ 0x535E,INVALC,0x7438,0x773C,0x5C7D,INVALC,0x686C,0x6467, /* Range 0x5947 - 0x5949, array index: 0x097D */ 0x5074,0x522F,0x5C65, /* Range 0x594E - 0x5957, array index: 0x0980 */ 0x5025,0x7134,0x7C31,0x4C78,INVALC,INVALC,0x5D46,0x7A51, INVALC,0x775F, /* Range 0x596A - 0x596E, array index: 0x098A */ 0x772C,0x6B44,0x6D61,0x602B,0x5D47, /* Range 0x5982 - 0x5984, array index: 0x098F */ 0x657D,0x5D65,0x584D, /* Range 0x59D0 - 0x59D4, array index: 0x0992 */ 0x6E3B,0x4D34,INVALC,0x6073,0x6A4D, /* Range 0x59D9 - 0x59DD, array index: 0x0997 */ 0x6C75,0x686E,INVALC,0x4B29,0x712F, /* Range 0x5B54 - 0x5B5F, array index: 0x099C */ 0x4D6E,0x6D26,INVALC,0x6D2E,0x706D,INVALC,0x5D21,INVALC, 0x6D2F,0x7C78,INVALC,0x586B, /* Range 0x5B85 - 0x5B8C, array index: 0x09A8 */ 0x536B,INVALC,0x6954,0x617A,0x644C,INVALC,0x6164,0x6847, /* Range 0x5B93 - 0x5B9C, array index: 0x09B0 */ 0x5C55,INVALC,0x7735,0x7C73,0x7073,0x4E2F,0x7135,0x6F52, 0x6848,0x6B71, /* Range 0x5BA2 - 0x5BA6, array index: 0x09BA */ 0x4B54,0x603E,0x6378,0x6A69,0x7C32, /* Range 0x5BB3 - 0x5BB9, array index: 0x09BF */ 0x7A2A,0x6643,0x6132,0x4A2B,INVALC,0x6364,0x693B, /* Range 0x5BBF - 0x5BC7, array index: 0x09C6 */ 0x6256,0x7372,INVALC,0x6E56,0x6A32,0x5076,0x6C59,0x5A4B, 0x4F28, /* Range 0x5BD0 - 0x5BD4, array index: 0x09CF */ 0x585B,INVALC,0x794E,0x6955,0x6351, /* Range 0x5BDE - 0x5BEF, array index: 0x09D4 */ 0x582C,0x734C,INVALC,0x4D7B,0x7656,INVALC,0x6775,0x686F, 0x6379,0x523B,0x7373,0x637B,INVALC,0x5E50,0x4E30,INVALC, 0x5677,0x7159, /* Range 0x5C07 - 0x5C11, array index: 0x09E6 */ 0x6D62,0x6E76,0x6A4F,0x706E,0x637C,INVALC,0x535F,0x5374, 0x6133,INVALC,0x6134, /* Range 0x5C38 - 0x5C40, array index: 0x09F1 */ 0x6339,0x6B45,0x7429,0x4D36,0x5279,INVALC,0x5A2D,0x5263, 0x4F51, /* Range 0x5DE1 - 0x5DE8, array index: 0x09FA */ 0x625E,0x6135,INVALC,INVALC,0x4D6F,0x7127,0x4E65,0x4B5D, /* Range 0x5DF1 - 0x5DF4, array index: 0x0A02 */ 0x5079,0x6C2B,0x5E53,0x7769, /* Range 0x5E5F - 0x5E63, array index: 0x0A06 */ 0x763A,INVALC,0x5B5F,0x5353,0x7847, /* Range 0x5E72 - 0x5E7E, array index: 0x0A0B */ 0x4A4E,0x7841,0x5234,INVALC,INVALC,0x5C34,0x7A39,0x4A4F, INVALC,0x7C33,0x6A6A,0x6A6B,0x507A, /* Range 0x5EB5 - 0x5EB8, array index: 0x0A18 */ 0x645D,0x5F6E,0x4B2C,0x693C, /* Range 0x5EC8 - 0x5ECA, array index: 0x0A1C */ 0x793F,0x562F,0x5546, /* Range 0x5EDF - 0x5EE3, array index: 0x0A1F */ 0x5959,0x735F,INVALC,0x7848,0x4E46, /* Range 0x5F11 - 0x5F18, array index: 0x0A24 */ 0x633D,INVALC,0x4F61,0x7040,0x6C5A,INVALC,0x5D57,0x7B70, /* Range 0x5F66 - 0x5F71, array index: 0x0A2C */ 0x6569,0x696E,INVALC,0x7374,0x7873,0x7041,0x5E2F,0x7830, INVALC,INVALC,0x7360,0x672F, /* Range 0x5F7F - 0x5F81, array index: 0x0A38 */ 0x5D58,0x6859,0x6F56, /* Range 0x5F8A - 0x5F92, array index: 0x0A3B */ 0x7C60,0x5748,0x7D2D,INVALC,INVALC,INVALC,0x5F6F,0x4C53, 0x5379, /* Range 0x5F97 - 0x5F99, array index: 0x0A44 */ 0x5470,0x5B47,0x5E55, /* Range 0x5FA8 - 0x5FAA, array index: 0x0A47 */ 0x7C47,0x5C56,0x6260, /* Range 0x5FD6 - 0x5FD9, array index: 0x0A4A */ 0x753C,0x7224,0x584E,0x584F, /* Range 0x6041 - 0x6043, array index: 0x0A4E */ 0x6C76,0x6261,0x633E, /* Range 0x6062 - 0x6070, array index: 0x0A51 */ 0x7C61,0x6D30,0x7D51,0x763B,INVALC,INVALC,0x794F,0x6B5A, 0x4A41,INVALC,0x5238,0x4D71,INVALC,0x6353,0x7D66, /* Range 0x60B0 - 0x60B8, array index: 0x0A60 */ 0x7075,INVALC,0x5D68,0x536D,0x757C,INVALC,0x5A3F,INVALC, 0x4C7B, /* Range 0x60DF - 0x60E1, array index: 0x0A69 */ 0x6A6E,0x7B33,0x6442, /* Range 0x60F9 - 0x60FB, array index: 0x0A6C */ 0x6529,0x6076,0x7633, /* Range 0x610D - 0x610F, array index: 0x0A6F */ 0x5A40,0x7834,0x6B72, /* Range 0x6147 - 0x614C, array index: 0x0A72 */ 0x6B5B,0x6D31,INVALC,0x4C43,0x773E,0x7C4B, /* Range 0x6162 - 0x6168, array index: 0x0A78 */ 0x5837,0x4E31,0x4A42,INVALC,INVALC,0x7B34,0x4B46, /* Range 0x6198 - 0x619A, array index: 0x0A7F */ 0x7D73,0x7D72,0x7726, /* Range 0x61C7 - 0x61CB, array index: 0x0A82 */ 0x4A50,0x7A2B,0x6B6B,0x6778,0x5965, /* Range 0x61F6 - 0x6200, array index: 0x0A87 */ 0x547B,0x7C63,0x7A58,INVALC,0x7355,INVALC,0x4F2B,INVALC, INVALC,0x6B73,0x557C, /* Range 0x620A - 0x6212, array index: 0x0A92 */ 0x5966,INVALC,0x6279,0x6221,0x6B54,INVALC,0x6077,0x6432, 0x4C7C, /* Range 0x623E - 0x6241, array index: 0x0A9B */ 0x5568,0x5B2E,0x6136,0x7837, /* Range 0x6247 - 0x624D, array index: 0x0A9F */ 0x603F,0x7B43,0x5D6A,INVALC,0x6222,INVALC,0x6E26, /* Range 0x62C7 - 0x62DC, array index: 0x0AA6 */ 0x5967,0x5239,0x5543,INVALC,INVALC,0x5A65,0x5A50,INVALC, 0x5159,0x4E58,INVALC,0x4B5E,0x742C,0x5A7B,INVALC,0x7669, 0x6873,0x4F2C,0x7070,INVALC,0x747D,0x5B48, /* Range 0x62EC - 0x62F3, array index: 0x0ABC */ 0x4E40,0x6354,0x514F,0x7175,INVALC,0x4D72,INVALC,0x4F6B, /* Range 0x633A - 0x633E, array index: 0x0AC4 */ 0x6F58,0x6649,INVALC,0x5838,0x7A73, /* Range 0x63A0 - 0x63A2, array index: 0x0AC9 */ 0x5553,0x7375,0x772E, /* Range 0x63A5 - 0x63AA, array index: 0x0ACC */ 0x6F48,INVALC,0x4D73,0x754F,0x6573,0x7042, /* Range 0x6478 - 0x647A, array index: 0x0AD2 */ 0x5938,0x5939,0x6F49, /* Range 0x6491 - 0x6493, array index: 0x0AD5 */ 0x774B,0x5F2E,0x6875, /* Range 0x64E1 - 0x64E7, array index: 0x0AD8 */ 0x5364,0x7677,INVALC,INVALC,0x553A,0x734D,0x4B61, /* Range 0x652A - 0x652C, array index: 0x0ADF */ 0x4E66,0x7C2B,0x553B, /* Range 0x6536 - 0x653F, array index: 0x0AE2 */ 0x6225,0x4D39,0x6A72,0x4B47,INVALC,0x4D74,INVALC,INVALC, 0x5B2F,0x6F59, /* Range 0x654D - 0x6551, array index: 0x0AEC */ 0x5F73,0x4E67,0x5A42,INVALC,0x4F2D, /* Range 0x6574 - 0x6578, array index: 0x0AF1 */ 0x6F5A,0x6E58,INVALC,0x5D27,0x6226, /* Range 0x65E5 - 0x65ED, array index: 0x0AF6 */ 0x6C6D,0x5329,INVALC,0x7229,0x7044,INVALC,INVALC,0x6262, 0x696F, /* Range 0x65FA - 0x65FF, array index: 0x0AFF */ 0x685A,0x5A43,0x5A44,0x5445,INVALC,0x677A, /* Range 0x6606 - 0x6615, array index: 0x0B05 */ 0x4D60,0x6330,INVALC,0x5B32,0x7B44,INVALC,0x7363,INVALC, 0x5925,0x7B67,0x5D4B,0x5054,INVALC,0x6636,0x602E,0x7D5A, /* Range 0x661E - 0x6620, array index: 0x0B15 */ 0x5C35,0x6078,0x6731, /* Range 0x662D - 0x6631, array index: 0x0B18 */ 0x6139,INVALC,0x6340,0x7940,0x6970, /* Range 0x6641 - 0x6644, array index: 0x0B1D */ 0x7045,0x6341,0x7C4C,0x7C4D, /* Range 0x665B - 0x665F, array index: 0x0B21 */ 0x7A59,INVALC,0x7138,0x7D75,0x6079, /* Range 0x6664 - 0x666F, array index: 0x0B26 */ 0x677B,0x7C37,0x7C64,0x7B45,0x6367,0x5839,INVALC,0x7678, INVALC,INVALC,0x5C45,0x4C58, /* Range 0x6673 - 0x667A, array index: 0x0B32 */ 0x602F,0x7467,INVALC,0x6F5C,0x4F7C,0x6F5D,INVALC,0x722A, /* Range 0x6687 - 0x6689, array index: 0x0B3A */ 0x4A2C,0x7D3B,0x7D47, /* Range 0x6696 - 0x6698, array index: 0x0B3D */ 0x516C,0x645E,0x6543, /* Range 0x66B2 - 0x66B4, array index: 0x0B40 */ 0x6D67,0x7B35,0x786C, /* Range 0x66F0 - 0x6700, array index: 0x0B43 */ 0x6858,INVALC,0x4D58,0x6756,0x4C5A,INVALC,INVALC,0x4A63, 0x5F76,0x7047,0x7046,INVALC,0x583A,INVALC,0x7174,0x7470, 0x754C, /* Range 0x671B - 0x671F, array index: 0x0B54 */ 0x5850,INVALC,0x7048,0x5121,0x5122, /* Range 0x6726 - 0x672E, array index: 0x0B59 */ 0x5954,0x5668,0x594A,INVALC,0x5A31,0x5847,0x5C62,0x734E, 0x7574, /* Range 0x674E - 0x6753, array index: 0x0B62 */ 0x575D,0x7A3A,0x6E27,0x753D,INVALC,0x7875, /* Range 0x676D - 0x6777, array index: 0x0B68 */ 0x7978,INVALC,0x5B4A,0x4B79,0x5454,INVALC,0x595C,INVALC, 0x6E3E,INVALC,0x776D, /* Range 0x67B6 - 0x67B8, array index: 0x0B73 */ 0x4A2D,0x4A2E,0x4F2E, /* Range 0x67CF - 0x67D4, array index: 0x0B76 */ 0x5B5A,0x593B,0x4A73,0x7653,0x6678,0x6A75, /* Range 0x67EF - 0x67F6, array index: 0x0B7C */ 0x4A2F,0x5230,0x713A,INVALC,0x5733,0x6343,0x737D,0x5E5A, /* Range 0x683C - 0x6843, array index: 0x0B84 */ 0x4C2B,0x6E28,INVALC,INVALC,0x4B7A,0x7979,0x4C7D,0x537E, /* Range 0x6850 - 0x6854, array index: 0x0B8C */ 0x5455,0x5F4D,INVALC,0x7C38,0x5150, /* Range 0x68AD - 0x68B6, array index: 0x0B91 */ 0x5E5C,INVALC,0x702C,0x4C7E,0x4D61,INVALC,0x613A,INVALC, 0x5B6F,0x5A32, /* Range 0x6953 - 0x695A, array index: 0x0B9B */ 0x7923,0x605B,0x766B,INVALC,0x4B71,INVALC,0x596A,0x7522, /* Range 0x695E - 0x6963, array index: 0x0BA3 */ 0x5751,INVALC,0x5178,0x6A78,0x6A79,0x5A33, /* Range 0x696B - 0x696F, array index: 0x0BA9 */ 0x716F,INVALC,0x6576,0x6E3F,0x6264, /* Range 0x6975 - 0x6979, array index: 0x0BAE */ 0x503F,INVALC,0x7A2C,0x7551,0x6733, /* Range 0x69CB - 0x69CD, array index: 0x0BB3 */ 0x4F30,0x7759,0x7366, /* Range 0x6A38 - 0x6A3A, array index: 0x0BB6 */ 0x5A54,0x6227,0x7B7C, /* Range 0x6B5F - 0x6B66, array index: 0x0BB9 */ 0x6622,INVALC,0x7C36,0x722D,0x6F61,0x732E,0x5C46,0x596B, /* Range 0x6BD2 - 0x6BD8, array index: 0x0BC1 */ 0x5438,0x6B3E,0x5D6F,INVALC,0x5D70,0x5D71,0x5D72, /* Range 0x6C3E - 0x6C42, array index: 0x0BC8 */ 0x5B70,INVALC,0x6F62,0x7170,0x4F34, /* Range 0x6C5D - 0x6C60, array index: 0x0BCD */ 0x6623,0x7B71,0x4B30,0x722E, /* Range 0x6C7D - 0x6C88, array index: 0x0BD1 */ 0x5129,0x5D4C,INVALC,INVALC,0x637E,0x512A,0x682A,INVALC, 0x6A36,0x797A,0x664C,0x7658, /* Range 0x6C90 - 0x6C9B, array index: 0x0BDD */ 0x594B,INVALC,0x5952,0x534B,0x5877,0x5A29,0x7578,INVALC, INVALC,0x5E5E,0x722F,0x7829, /* Range 0x6CB8 - 0x6CC4, array index: 0x0BE9 */ 0x5D73,0x6A7A,INVALC,0x763D,0x613B,0x4D3F,0x7454,0x664D, INVALC,0x7C4F,0x7B22,INVALC,0x605C, /* Range 0x6CE1 - 0x6CE5, array index: 0x0BF6 */ 0x785C,0x776E,0x6B68,INVALC,0x527A, /* Range 0x6CEE - 0x6CF0, array index: 0x0BFB */ 0x5A6A,0x5A46,0x7741, /* Range 0x6D35 - 0x6D3E, array index: 0x0BFE */ 0x6267,0x7D57,INVALC,0x4E48,0x6A37,INVALC,0x7C40,INVALC, 0x7D67,0x776F, /* Range 0x6D77 - 0x6D79, array index: 0x0C08 */ 0x7A2D,0x7659,0x7A74, /* Range 0x6D85 - 0x6D8E, array index: 0x0C0B */ 0x666E,INVALC,0x4C5C,0x613C,0x606F,INVALC,INVALC,0x693F, 0x7C7D,0x664E, /* Range 0x6DC3 - 0x6DC7, array index: 0x0C15 */ 0x4F6E,0x763E,0x6032,0x7C7E,0x512B, /* Range 0x6DD8 - 0x6DDA, array index: 0x0C1A */ 0x5423,0x7078,0x5728, /* Range 0x6DF5 - 0x6DFB, array index: 0x0C1D */ 0x6650,INVALC,0x7B68,0x7468,0x6574,0x743C,0x7455, /* Range 0x6E17 - 0x6E26, array index: 0x0C24 */ 0x5F36,INVALC,0x7C39,0x6E42,0x4A75,INVALC,INVALC,INVALC, 0x6F65,0x4B62,0x5424,INVALC,0x5E60,0x5A7D,0x6446,0x683E, /* Range 0x6E2B - 0x6E2F, array index: 0x0C34 */ 0x605E,0x7634,0x6A52,INVALC,0x797B, /* Range 0x6E3A - 0x6E3E, array index: 0x0C39 */ 0x595D,INVALC,0x5A34,0x6E2A,0x7B69, /* Range 0x6E5B - 0x6E5F, array index: 0x0C3E */ 0x5340,0x6357,INVALC,0x6F66,0x7C50, /* Range 0x6EFE - 0x6F02, array index: 0x0C43 */ 0x4D63,0x583B,INVALC,0x655B,0x7877, /* Range 0x6F57 - 0x6F5F, array index: 0x0C48 */ 0x727C,0x5A6B,INVALC,0x6258,0x6D56,INVALC,INVALC,0x5651, 0x6033, /* Range 0x6F7A - 0x6F7E, array index: 0x0C51 */ 0x6D52,INVALC,0x5458,0x5C49,0x5771, /* Range 0x6FBE - 0x6FC3, array index: 0x0C56 */ 0x5336,INVALC,0x4C2D,0x767A,0x5632,0x5258, /* Range 0x6FDF - 0x6FE1, array index: 0x0C5C */ 0x702D,0x7B4C,0x6B21, /* Range 0x7018 - 0x701F, array index: 0x0C5F */ 0x5652,INVALC,0x7955,0x673A,0x6B55,0x5577,0x6F67,0x613E, /* Range 0x7098 - 0x709A, array index: 0x0C67 */ 0x7D5C,0x6D33,0x4E49, /* Range 0x70AB - 0x70AF, array index: 0x0C6A */ 0x7A5B,0x4B63,0x7729,INVALC,0x7B26, /* Range 0x70B7 - 0x70B9, array index: 0x0C6F */ 0x7140,0x6D48,0x6F43, /* Range 0x7164 - 0x7169, array index: 0x0C72 */ 0x5860,0x7C3A,0x7D2F,0x704E,INVALC,0x5B61, /* Range 0x71E5 - 0x71E7, array index: 0x0C78 */ 0x704F,0x733E,0x622C, /* Range 0x71FB - 0x7200, array index: 0x0C7B */ 0x7D38,0x6368,INVALC,0x5427,0x687C,0x7A52, /* Range 0x723A - 0x7240, array index: 0x0C81 */ 0x652C,0x7D21,INVALC,0x5F50,0x6C33,INVALC,0x5F51, /* Range 0x7246 - 0x7248, array index: 0x0C88 */ 0x6D6D,0x7838,0x777A, /* Range 0x731B - 0x731D, array index: 0x0C8B */ 0x586D,0x6344,0x7071, /* Range 0x7329 - 0x732B, array index: 0x0C8E */ 0x607A,0x6E44,0x595E, /* Range 0x7394 - 0x7398, array index: 0x0C91 */ 0x743D,INVALC,0x4F38,0x695B,0x512C, /* Range 0x73C9 - 0x73CF, array index: 0x0C96 */ 0x5A48,0x5F26,INVALC,0x7933,0x7252,INVALC,0x4A44, /* Range 0x73E3 - 0x73EA, array index: 0x0C9D */ 0x6269,0x5C4A,0x6C34,0x7A40,INVALC,INVALC,0x7B28,0x5028, /* Range 0x7403 - 0x7409, array index: 0x0CA5 */ 0x4F39,INVALC,0x554A,0x5762,0x622F,INVALC,0x5738, /* Range 0x7420 - 0x743A, array index: 0x0CAC */ 0x6F22,0x625A,0x767C,INVALC,INVALC,0x7B50,0x512D,INVALC, 0x4D64,INVALC,0x512E,0x5C6D,0x684E,INVALC,0x7079,0x4E35, 0x667C,INVALC,INVALC,0x577B,0x5056,0x5D75,0x7771,INVALC, 0x767D,INVALC,0x5B77, /* Range 0x743F - 0x7444, array index: 0x0CC7 */ 0x7B6A,0x695C,0x5941,INVALC,0x7572,0x6045, /* Range 0x7457 - 0x746A, array index: 0x0CCD */ 0x6A3C,INVALC,0x5245,0x7B51,0x6740,0x6B25,INVALC,0x5F7A, 0x6322,0x5739,INVALC,0x6943,INVALC,0x687D,0x682F,INVALC, INVALC,0x7253,0x7B29,0x5825, /* Range 0x7530 - 0x7533, array index: 0x0CE1 */ 0x6F23,0x6B26,0x4B23,0x6369, /* Range 0x7559 - 0x755D, array index: 0x0CE5 */ 0x573A,INVALC,0x7255,0x7565,0x596F, /* Range 0x75B1 - 0x75BE, array index: 0x0CEA */ 0x785E,0x792A,0x4A77,INVALC,0x6D37,INVALC,INVALC,0x5338, 0x7256,INVALC,INVALC,0x5459,0x6E45,0x7270, /* Range 0x761F - 0x7626, array index: 0x0CF8 */ 0x6830,0x7430,0x736A,0x5A6E,INVALC,0x573B,INVALC,0x6231, /* Range 0x767B - 0x767E, array index: 0x0D00 */ 0x5474,0x5B21,0x5B5C,0x5B5D, /* Range 0x76DB - 0x76E4, array index: 0x0D04 */ 0x607C,0x5428,INVALC,0x6D53,0x586F,INVALC,0x7257,INVALC, 0x4A78,0x5A6F, /* Range 0x77ED - 0x77EF, array index: 0x0D0E */ 0x532D,0x6861,0x4E6C, /* Range 0x7825 - 0x7827, array index: 0x0D11 */ 0x7232,0x7376,0x765B, /* Range 0x788C - 0x788E, array index: 0x0D14 */ 0x565E,0x6474,0x616F, /* Range 0x78BA - 0x78BC, array index: 0x0D17 */ 0x7C2C,0x7C2D,0x5827, /* Range 0x792A - 0x792C, array index: 0x0D1A */ 0x556C,0x5578,0x5A73, /* Range 0x7947 - 0x7949, array index: 0x0D1D */ 0x5136,0x5137,0x7233, /* Range 0x7956 - 0x7960, array index: 0x0D20 */ 0x7053,0x7234,INVALC,INVALC,0x7054,0x4B64,0x7B54,0x7566, 0x636A,INVALC,0x5E66, /* Range 0x798D - 0x7991, array index: 0x0D2B */ 0x7C21,0x6F6E,0x5C58,INVALC,0x695F, /* Range 0x79BD - 0x79C1, array index: 0x0D30 */ 0x5058,0x7C22,0x543E,0x6233,0x5E67, /* Range 0x79C9 - 0x79CB, array index: 0x0D35 */ 0x5C3C,0x5236,0x7555, /* Range 0x7A3B - 0x7A40, array index: 0x0D38 */ 0x542B,0x4A33,0x4D26,INVALC,0x4D43,0x4D5A, /* Range 0x7B49 - 0x7B56, array index: 0x0D3E */ 0x5475,INVALC,0x5049,0x6F27,0x626C,INVALC,0x5B6A,0x4E4C, 0x7568,0x7755,INVALC,0x534D,INVALC,0x737E, /* Range 0x7C3D - 0x7C3F, array index: 0x0D4C */ 0x7458,0x5633,0x5D2D, /* Range 0x7CB1 - 0x7CB3, array index: 0x0D4F */ 0x555C,0x7344,0x4B57, /* Range 0x7CDE - 0x7CE0, array index: 0x0D52 */ 0x5D50,0x7059,0x4B33, /* Range 0x7D02 - 0x7D0D, array index: 0x0D55 */ 0x7144,INVALC,0x6533,0x7B75,0x6961,0x7D60,0x7C3C,INVALC, 0x5A22,0x5A23,INVALC,0x5221, /* Range 0x7D17 - 0x7D1B, array index: 0x0D61 */ 0x5E69,0x4E5C,0x7235,0x5064,0x5D51, /* Range 0x7D20 - 0x7D22, array index: 0x0D66 */ 0x6148,0x5B37,0x5F63, /* Range 0x7D2B - 0x7D30, array index: 0x0D69 */ 0x6D39,0x7145,INVALC,0x734F,0x572B,0x612C, /* Range 0x7D42 - 0x7D46, array index: 0x0D6F */ 0x707B,0x7A61,0x705A,0x4C67,0x5A74, /* Range 0x7D71 - 0x7D73, array index: 0x0D74 */ 0x7756,0x5E6A,0x4B34, /* Range 0x7DB1 - 0x7DB5, array index: 0x0D77 */ 0x4B35,0x5851,INVALC,0x744E,0x7377, /* Range 0x7DBA - 0x7DBF, array index: 0x0D7C */ 0x513B,0x772A,INVALC,0x6D4A,0x5753,0x587A, /* Range 0x7DDD - 0x7DE3, array index: 0x0D82 */ 0x727D,0x5330,INVALC,0x7473,0x5A49,INVALC,0x665E, /* Range 0x7E1B - 0x7E23, array index: 0x0D89 */ 0x5A5A,INVALC,0x725C,0x7B56,0x6932,INVALC,0x6E2D,INVALC, 0x7A63, /* Range 0x7E69 - 0x7E6D, array index: 0x0D92 */ 0x6331,0x7C6B,0x4D28,INVALC,0x4C36, /* Range 0x7FDF - 0x7FE1, array index: 0x0D97 */ 0x6E61,0x7628,0x5D7D, /* Range 0x806F - 0x8073, array index: 0x0D9A */ 0x5624,0x7546,INVALC,0x6122,0x6946, /* Range 0x807D - 0x807F, array index: 0x0D9F */ 0x7469,0x566C,0x6B53, /* Range 0x8084 - 0x808C, array index: 0x0DA2 */ 0x6C3D,0x625C,0x5E6B,0x705C,INVALC,0x6B3F,INVALC,0x574E, 0x513F, /* Range 0x8105 - 0x810A, array index: 0x0DAB */ 0x7A76,0x762A,0x7A77,0x5866,INVALC,0x7431, /* Range 0x8178 - 0x817A, array index: 0x0DB1 */ 0x6D73,0x5C59,0x604D, /* Range 0x81BD - 0x81C2, array index: 0x0DB4 */ 0x5345,0x7C6C,0x525B,0x546B,INVALC,0x5E22, /* Range 0x81FA - 0x81FE, array index: 0x0DBA */ 0x5366,0x725D,0x4F3F,INVALC,0x6B2C, /* Range 0x821B - 0x8221, array index: 0x0DBF */ 0x743F,0x626F,INVALC,0x5971,0x7147,INVALC,0x4B38, /* Range 0x822A - 0x822C, array index: 0x0DC6 */ 0x797E,0x5B3A,0x5A75, /* Range 0x8235 - 0x8239, array index: 0x0DC9 */ 0x766C,0x5A5C,0x7A64,INVALC,0x604F, /* Range 0x826E - 0x8272, array index: 0x0DCE */ 0x4A5D,0x555E,INVALC,0x4A5E,0x5F64, /* Range 0x82AC - 0x82BF, array index: 0x0DD3 */ 0x5D52,0x7774,0x675C,0x6425,INVALC,0x7C23,INVALC,0x5B3B, INVALC,INVALC,INVALC,0x723A,0x697D,0x504A,INVALC,0x7556, 0x5945,0x6434,INVALC,0x6D27, /* Range 0x82D1 - 0x82D7, array index: 0x0DE7 */ 0x6A3D,0x667E,INVALC,0x7744,0x752D,INVALC,0x5960, /* Range 0x82E5 - 0x82E7, array index: 0x0DEE */ 0x6534,0x4D48,0x6E48, /* Range 0x82FD - 0x8305, array index: 0x0DF1 */ 0x4D49,0x7937,INVALC,INVALC,0x7168,0x5972,0x5B75,0x4A35, 0x5946, /* Range 0x8334 - 0x8339, array index: 0x0DFA */ 0x7C6D,0x6C60,0x527E,INVALC,0x6947,0x662A, /* Range 0x83A9 - 0x83AB, array index: 0x0E00 */ 0x5D34,0x6435,0x5830, /* Range 0x83EF - 0x83F4, array index: 0x0E03 */ 0x7C24,0x4D4A,0x5754,0x5E23,INVALC,0x6460, /* Range 0x840A - 0x840E, array index: 0x0E09 */ 0x5551,INVALC,0x5870,0x7843,0x6A57, /* Range 0x8568 - 0x856A, array index: 0x0E0E */ 0x4F72,0x7739,0x5973, /* Range 0x85A6 - 0x85AA, array index: 0x0E11 */ 0x7440,INVALC,0x7D3C,0x5F31,0x636F, /* Range 0x85CD - 0x85CF, array index: 0x0E16 */ 0x5540,0x6370,0x6D7A, /* Range 0x865B - 0x865F, array index: 0x0E19 */ 0x7A48,0x5657,INVALC,0x6965,0x7B5C, /* Range 0x8861 - 0x8863, array index: 0x0E1E */ 0x7B2C,0x4F43,0x6B7D, /* Range 0x887E - 0x8882, array index: 0x0E21 */ 0x505A,0x505B,INVALC,0x6A3E,0x5931, /* Range 0x88F3 - 0x88F5, array index: 0x0E26 */ 0x5F57,0x5B50,0x5B51, /* Range 0x8A16 - 0x8A18, array index: 0x0E29 */ 0x7D61,0x767E,0x5140, /* Range 0x8A6D - 0x8A75, array index: 0x0E2C */ 0x4F78,0x6F2C,INVALC,0x7D7E,0x7C25,0x7A31,0x5F59,INVALC, 0x6052, /* Range 0x8AA0 - 0x8AAA, array index: 0x0E35 */ 0x6124,0x4D2B,INVALC,0x5974,0x6826,0x4D4E,0x6169,INVALC, 0x7C6F,INVALC,0x6063, /* Range 0x8AEA - 0x8AEE, array index: 0x0E40 */ 0x6F75,0x4A5F,INVALC,0x6B31,0x6D3F, /* Range 0x8AF6 - 0x8AFA, array index: 0x0E45 */ 0x6426,0x7924,0x7033,INVALC,0x656C, /* Range 0x8AFE - 0x8B04, array index: 0x0E4A */ 0x5167,INVALC,0x5947,0x6457,0x6A5D,INVALC,0x5477, /* Range 0x8B16 - 0x8B1D, array index: 0x0E51 */ 0x615A,0x5B3F,INVALC,0x4C45,0x6C50,0x4B3B,INVALC,0x5E73, /* Range 0x8C9D - 0x8CA2, array index: 0x0E59 */ 0x782F,0x6F76,INVALC,0x5D36,0x6E2F,0x4D78, /* Range 0x8CA7 - 0x8CCA, array index: 0x0E5F */ 0x5E38,0x7C27,0x777C,0x7731,0x4E3B,0x7421,INVALC,INVALC, 0x6E4D,0x612E,INVALC,INVALC,0x6C43,0x4F7E,INVALC,0x783F, 0x5862,0x5368,INVALC,INVALC,0x5E28,0x7464,0x6C42,INVALC, 0x5975,0x7945,0x5D53,0x5671,0x6C7C,0x7C70,INVALC,INVALC, 0x6D40,0x4A39,INVALC,0x6E64, /* Range 0x8CE0 - 0x8CE6, array index: 0x0E83 */ 0x5B53,INVALC,0x7A67,0x5863,0x7441,INVALC,0x5D37, /* Range 0x8CFB - 0x8CFD, array index: 0x0E8A */ 0x5D38,0x4F45,0x5F5F, /* Range 0x8D04 - 0x8D0A, array index: 0x0E8D */ 0x723E,0x7621,INVALC,0x6B4B,0x717C,INVALC,0x7347, /* Range 0x8E47 - 0x8E4A, array index: 0x0E94 */ 0x4B74,0x5430,0x7332,0x7B37, /* Range 0x8EAA - 0x8EAC, array index: 0x0E98 */ 0x5775,0x6373,0x4F65, /* Range 0x8ECA - 0x8ECD, array index: 0x0E9B */ 0x7333,0x6458,0x4F79,0x4F5A, /* Range 0x8F12 - 0x8F15, array index: 0x0E9F */ 0x7465,0x5842,0x5C50,0x4C6E, /* Range 0x8F1B - 0x8F1F, array index: 0x0EA3 */ 0x5560,0x764A,0x7D4A,0x5856,0x744F, /* Range 0x8F26 - 0x8F2A, array index: 0x0EA8 */ 0x5626,0x5C3E,INVALC,0x5B54,0x5747, /* Range 0x8FAD - 0x8FB2, array index: 0x0EAD */ 0x5E76,INVALC,0x5C2A,0x7263,0x6934,0x525C, /* Range 0x9000 - 0x9008, array index: 0x0EB3 */ 0x775C,0x616A,0x4E41,0x5431,INVALC,0x7D31,0x663D,INVALC, 0x7B2D, /* Range 0x900D - 0x9023, array index: 0x0EBC */ 0x614E,INVALC,0x7762,0x756F,0x4F47,INVALC,INVALC,0x5432, 0x4C6F,INVALC,0x5468,INVALC,0x6E4F,0x7757,INVALC,INVALC, 0x6026,0x5641,0x615C,0x7063,0x7164,0x5C71,0x5627, /* Range 0x904A - 0x9055, array index: 0x0ED3 */ 0x6B34,0x6A21,INVALC,0x783C,0x4E26,INVALC,0x7946,0x7C5A, INVALC,0x5433,0x5339,0x6A5E, /* Range 0x905C - 0x9063, array index: 0x0EDF */ 0x6161,0x534F,0x7476,INVALC,0x6A40,0x614F,INVALC,0x4C3A, /* Range 0x906D - 0x906F, array index: 0x0EE7 */ 0x7064,0x7334,0x546E, /* Range 0x907C - 0x908A, array index: 0x0EEA */ 0x5721,0x4B68,INVALC,0x792D,0x692D,0x5864,0x7A33,0x6245, 0x7C3D,INVALC,INVALC,0x6C44,0x5831,INVALC,0x5C2B, /* Range 0x90AF - 0x90B1, array index: 0x0EF9 */ 0x4A7B,0x7746,0x4F48, /* Range 0x9149 - 0x914E, array index: 0x0EFC */ 0x6B37,0x6F78,0x755C,0x6D4C,0x5B55,0x714F, /* Range 0x91AB - 0x91B5, array index: 0x0F02 */ 0x6C22,0x6D7D,INVALC,0x7534,0x7B38,INVALC,0x5B23,INVALC, INVALC,0x564A,0x4B59, /* Range 0x91C9 - 0x91D1, array index: 0x0F0D */ 0x6B38,INVALC,0x6037,0x576C,0x716C,0x652F,0x5561,0x576D, 0x5151, /* Range 0x9210 - 0x9212, array index: 0x0F16 */ 0x4C22,0x777E,0x5F3C, /* Range 0x9262 - 0x9266, array index: 0x0F19 */ 0x5B24,INVALC,0x4F49,0x627C,0x6F7A, /* Range 0x931E - 0x9328, array index: 0x0F1E */ 0x6276,0x534A,0x6F7C,0x5144,0x6F31,INVALC,0x5145,INVALC, 0x505E,INVALC,0x5961, /* Range 0x958F - 0x9594, array index: 0x0F29 */ 0x6B4E,INVALC,0x7958,0x7959,0x4A60,0x5A4A, /* Range 0x95A3 - 0x95A5, array index: 0x0F2F */ 0x4A48,0x796E,0x5B6C, /* Range 0x95D4 - 0x95D6, array index: 0x0F32 */ 0x796F,0x4F74,0x7766, /* Range 0x964B - 0x964D, array index: 0x0F35 */ 0x5730,0x5868,0x4B3D, /* Range 0x965B - 0x9664, array index: 0x0F38 */ 0x784E,0x7970,0x606D,0x6333,0x7433,INVALC,INVALC,0x6A42, 0x7266,0x7036, /* Range 0x9673 - 0x9678, array index: 0x0F42 */ 0x7267,INVALC,0x5755,0x5436,0x7968,0x5741, /* Range 0x968A - 0x968E, array index: 0x0F48 */ 0x5369,0x6249,INVALC,0x7C5B,0x4D2D, /* Range 0x9698 - 0x969C, array index: 0x0F4D */ 0x6476,0x5040,INVALC,0x7037,0x6E21, /* Range 0x96C0 - 0x96CE, array index: 0x0F52 */ 0x6D4D,0x6452,INVALC,INVALC,0x6A29,0x643A,0x7322,0x4D52, INVALC,0x764B,INVALC,0x7166,0x6D41,0x683C,0x6E51, /* Range 0x96E8 - 0x96EA, array index: 0x0F61 */ 0x696B,0x696C,0x6064, /* Range 0x97FF - 0x9813, array index: 0x0F64 */ 0x7A42,0x7B61,0x7A6D,0x7022,0x4C71,INVALC,0x7A23,0x6277, INVALC,0x624E,INVALC,0x6975,INVALC,0x616B,INVALC,INVALC, INVALC,0x6768,0x6857,0x5A78,0x544B, /* Range 0x984C - 0x984E, array index: 0x0F79 */ 0x7039,0x647E,0x6449, /* Range 0x98ED - 0x98EF, array index: 0x0F7C */ 0x7650,0x6B66,0x5A79, /* Range 0x98FC - 0x98FE, array index: 0x0F7F */ 0x5E78,0x7869,0x635E, /* Range 0x9949 - 0x994D, array index: 0x0F82 */ 0x504F,INVALC,0x4F7A,0x734A,0x6057, /* Range 0x99AC - 0x99AE, array index: 0x0F87 */ 0x5829,0x655F,0x7927, /* Range 0x99D0 - 0x99D2, array index: 0x0F8A */ 0x7152,0x524C,0x4F4B, /* Range 0x9B41 - 0x9B45, array index: 0x0F8D */ 0x4E5A,0x7B6B,0x5B26,0x5B5E,0x5865, /* Range 0x9DF8 - 0x9DFA, array index: 0x0F92 */ 0x7D53,0x6B6D,0x565C, /* Range 0xAC07 - 0xAC0A, array index: 0x0F95 */ 0x3024,0x3025,0x3026,0x3027, /* Range 0xAC10 - 0xAC1D, array index: 0x0F99 */ 0x3028,0x3029,0x302A,0x302B,0x302C,0x302D,0x302E,0x302F, INVALC,0x3030,0x3031,0x3032,0x3033,0x3034, /* Range 0xAC2C - 0xAC31, array index: 0x0FA7 */ 0x3037,0x3038,INVALC,0x3039,0x303A,0x303B, /* Range 0xAC80 - 0xAC8C, array index: 0x0FAD */ 0x304B,0x304C,INVALC,0x304D,0x304E,0x304F,0x3050,INVALC, INVALC,0x3051,0x3052,0x3053,0x3054, /* Range 0xAC9C - 0xACA1, array index: 0x0FBA */ 0x3057,0x3058,INVALC,0x3059,0x305A,0x305B, /* Range 0xACA8 - 0xACB0, array index: 0x0FC0 */ 0x305C,0x305D,0x305E,INVALC,0x305F,INVALC,INVALC,0x3060, 0x3061, /* Range 0xACB8 - 0xACBD, array index: 0x0FC9 */ 0x3062,0x3063,INVALC,0x3064,0x3065,0x3066, /* Range 0xACEF - 0xACF6, array index: 0x0FCF */ 0x3074,0x3075,0x3076,INVALC,0x3077,INVALC,0x3078,0x3079, /* Range 0xAD73 - 0xAD76, array index: 0x0FD7 */ 0x313B,0x313C,0x313D,0x313E, /* Range 0xAD7B - 0xAD82, array index: 0x0FDB */ 0x313F,0x3140,0x3141,INVALC,0x3142,INVALC,0x3143,0x3144, /* Range 0xADFF - 0xAE01, array index: 0x0FE3 */ 0x315A,0x315B,0x315C, /* Range 0xAE4A - 0xAE50, array index: 0x0FE6 */ 0x316D,INVALC,0x316E,0x316F,0x3170,INVALC,0x3171, /* Range 0xAE5C - 0xAE61, array index: 0x0FED */ 0x3174,0x3175,INVALC,0x3176,0x3177,0x3178, /* Range 0xAE78 - 0xAE7D, array index: 0x0FF3 */ 0x317E,0x3221,INVALC,0x3222,0x3223,0x3224, /* Range 0xAEBC - 0xAEC0, array index: 0x0FF9 */ 0x3228,0x3229,0x322A,INVALC,0x322B, /* Range 0xAECC - 0xAED1, array index: 0x0FFE */ 0x322D,0x322E,INVALC,0x322F,0x3230,0x3231, /* Range 0xAF3F - 0xAF43, array index: 0x1004 */ 0x3246,INVALC,0x3247,0x3248,0x3249, /* Range 0xAFC7 - 0xAFCE, array index: 0x1009 */ 0x325D,0x325E,0x325F,INVALC,0x3260,INVALC,0x3261,0x3262, /* Range 0xB053 - 0xB059, array index: 0x1011 */ 0x327A,0x327B,0x327C,INVALC,0x327D,INVALC,0x327E, /* Range 0xB098 - 0xB0A2, array index: 0x1018 */ 0x332A,0x332B,0x332C,INVALC,0x332D,INVALC,INVALC,0x332E, 0x332F,0x3330,0x3331, /* Range 0xB0A8 - 0xB0B5, array index: 0x1023 */ 0x3332,0x3333,INVALC,0x3334,0x3335,0x3336,0x3337,0x3338, INVALC,0x3339,INVALC,0x333A,0x333B,0x333C, /* Range 0xB0C4 - 0xB0C9, array index: 0x1031 */ 0x333F,0x3340,INVALC,0x3341,0x3342,0x3343, /* Range 0xB108 - 0xB10C, array index: 0x1037 */ 0x334A,0x334B,INVALC,0x334C,0x334D, /* Range 0xB118 - 0xB11D, array index: 0x103C */ 0x3351,0x3352,INVALC,0x3353,0x3354,0x3355, /* Range 0xB123 - 0xB125, array index: 0x1042 */ 0x3356,0x3357,0x3358, /* Range 0xB134 - 0xB139, array index: 0x1045 */ 0x335B,0x335C,INVALC,0x335D,0x335E,0x335F, /* Range 0xB192 - 0xB194, array index: 0x104B */ 0x3374,0x3375,0x3376, /* Range 0xB298 - 0xB29A, array index: 0x104E */ 0x3443,0x3444,0x3445, /* Range 0xB2E2 - 0xB301, array index: 0x1051 */ 0x3458,INVALC,0x3459,0x345A,0x345B,INVALC,0x345C,INVALC, INVALC,0x345D,0x345E,0x345F,0x3460,0x3461,INVALC,INVALC, INVALC,0x3462,0x3463,0x3464,INVALC,0x3465,0x3466,0x3467, 0x3468,0x3469,INVALC,INVALC,INVALC,0x346A,0x346B,0x346C, /* Range 0xB310 - 0xB315, array index: 0x1071 */ 0x346F,0x3470,INVALC,0x3471,0x3472,0x3473, /* Range 0xB354 - 0xB35F, array index: 0x1077 */ 0x3475,0x3476,0x3477,INVALC,0x3478,INVALC,INVALC,0x3479, 0x347A,INVALC,0x347B,0x347C, /* Range 0xB380 - 0xB385, array index: 0x1083 */ 0x3529,0x352A,INVALC,0x352B,0x352C,0x352D, /* Range 0xB524 - 0xB52A, array index: 0x1089 */ 0x3575,0x3576,INVALC,0x3577,0x3578,0x3579,0x357A, /* Range 0xB540 - 0xB545, array index: 0x1090 */ 0x3621,0x3622,INVALC,0x3623,0x3624,0x3625, /* Range 0xB54B - 0xB54D, array index: 0x1096 */ 0x3626,0x3627,0x3628, /* Range 0xB55C - 0xB561, array index: 0x1099 */ 0x362B,0x362C,INVALC,0x362D,0x362E,0x362F, /* Range 0xB5B0 - 0xB5B5, array index: 0x109F */ 0x3636,0x3637,INVALC,0x3638,0x3639,0x363A, /* Range 0xB5BB - 0xB5BD, array index: 0x10A5 */ 0x363B,0x363C,0x363D, /* Range 0xB5CC - 0xB5D1, array index: 0x10A8 */ 0x3640,0x3641,INVALC,0x3642,0x3643,0x3644, /* Range 0xB78C - 0xB799, array index: 0x10AE */ 0x3677,0x3678,INVALC,0x3679,0x367A,0x367B,0x367C,INVALC, INVALC,INVALC,0x367D,0x367E,0x3721,0x3722, /* Range 0xB7A8 - 0xB7AD, array index: 0x10BC */ 0x3725,0x3726,INVALC,0x3727,0x3728,0x3729, /* Range 0xB7FC - 0xB801, array index: 0x10C2 */ 0x3733,0x3734,INVALC,0x3735,0x3736,0x3737, /* Range 0xB807 - 0xB809, array index: 0x10C8 */ 0x3738,0x3739,0x373A, /* Range 0xB834 - 0xB839, array index: 0x10CB */ 0x3745,0x3746,INVALC,0x3747,0x3748,0x3749, /* Range 0xB9CC - 0xB9D2, array index: 0x10D1 */ 0x3838,INVALC,0x3839,0x383A,0x383B,0x383C,0x383D, /* Range 0xB9E1 - 0xB9E5, array index: 0x10D8 */ 0x3843,INVALC,0x3844,0x3845,0x3846, /* Range 0xB9F4 - 0xB9FA, array index: 0x10DD */ 0x3849,0x384A,INVALC,0x384B,0x384C,0x384D,0x384E, /* Range 0xBA53 - 0xBA55, array index: 0x10E4 */ 0x385D,0x385E,0x385F, /* Range 0xBA64 - 0xBA69, array index: 0x10E7 */ 0x3862,0x3863,INVALC,0x3864,0x3865,0x3866, /* Range 0xBA83 - 0xBA87, array index: 0x10ED */ 0x386B,0x386C,0x386D,INVALC,0x386E, /* Range 0xBAA8 - 0xBAAC, array index: 0x10F2 */ 0x3870,0x3871,INVALC,0x3872,0x3873, /* Range 0xBB34 - 0xBB3E, array index: 0x10F7 */ 0x392B,0x392C,0x392D,INVALC,0x392E,INVALC,INVALC,0x392F, 0x3930,0x3931,0x3932, /* Range 0xBC08 - 0xBC1F, array index: 0x1102 */ 0x3952,0x3953,INVALC,0x3954,0x3955,0x3956,INVALC,0x3957, INVALC,0x3958,INVALC,INVALC,0x3959,0x395A,0x395B,0x395C, 0x395D,INVALC,INVALC,0x395E,0x395F,0x3960,0x3961,0x3962, /* Range 0xBC40 - 0xBC45, array index: 0x111A */ 0x396C,0x396D,INVALC,0x396E,0x396F,0x3970, /* Range 0xBCB0 - 0xBCB5, array index: 0x1120 */ 0x3A28,0x3A29,INVALC,0x3A2A,0x3A2B,0x3A2C, /* Range 0xBCCD - 0xBCD1, array index: 0x1126 */ 0x3A31,INVALC,0x3A32,0x3A33,0x3A34, /* Range 0xBCF4 - 0xBCF8, array index: 0x112B */ 0x3A38,0x3A39,0x3A3A,INVALC,0x3A3B, /* Range 0xBD87 - 0xBD8A, array index: 0x1130 */ 0x3A51,0x3A52,0x3A53,0x3A54, /* Range 0xBE57 - 0xBE5B, array index: 0x1134 */ 0x3A78,INVALC,0x3A79,0x3A7A,0x3A7B, /* Range 0xBE70 - 0xBE75, array index: 0x1139 */ 0x3B23,0x3B24,INVALC,0x3B25,0x3B26,0x3B27, /* Range 0xBE7B - 0xBE7D, array index: 0x113F */ 0x3B28,0x3B29,0x3B2A, /* Range 0xBE8C - 0xBE91, array index: 0x1142 */ 0x3B2D,0x3B2E,INVALC,0x3B2F,0x3B30,0x3B31, /* Range 0xBEE3 - 0xBEE5, array index: 0x1148 */ 0x3B3B,0x3B3C,0x3B3D, /* Range 0xBF18 - 0xBF1D, array index: 0x114B */ 0x3B42,0x3B43,INVALC,0x3B44,0x3B45,0x3B46, /* Range 0xC0AC - 0xC0B6, array index: 0x1151 */ 0x3B67,0x3B68,INVALC,0x3B69,0x3B6A,INVALC,INVALC,0x3B6B, 0x3B6C,0x3B6D,0x3B6E, /* Range 0xC0BC - 0xC0C1, array index: 0x115C */ 0x3B6F,0x3B70,INVALC,0x3B71,0x3B72,0x3B73, /* Range 0xC0D8 - 0xC0DD, array index: 0x1162 */ 0x3B79,0x3B7A,INVALC,0x3B7B,0x3B7C,0x3B7D, /* Range 0xC11C - 0xC127, array index: 0x1168 */ 0x3C2D,0x3C2E,0x3C2F,0x3C30,0x3C31,INVALC,INVALC,0x3C32, 0x3C33,INVALC,0x3C34,0x3C35, /* Range 0xC12C - 0xC131, array index: 0x1174 */ 0x3C36,0x3C37,INVALC,0x3C38,0x3C39,0x3C3A, /* Range 0xC148 - 0xC14D, array index: 0x117A */ 0x3C40,0x3C41,INVALC,0x3C42,0x3C43,0x3C44, /* Range 0xC164 - 0xC169, array index: 0x1180 */ 0x3C49,0x3C4A,INVALC,0x3C4B,0x3C4C,0x3C4D, /* Range 0xC18C - 0xC190, array index: 0x1186 */ 0x3C52,0x3C53,0x3C54,INVALC,0x3C55, /* Range 0xC2EB - 0xC2F1, array index: 0x118B */ 0x3D48,0x3D49,0x3D4A,INVALC,0x3D4B,INVALC,0x3D4C, /* Range 0xC2F8 - 0xC2FC, array index: 0x1192 */ 0x3D4E,0x3D4F,INVALC,0x3D50,0x3D51, /* Range 0xC313 - 0xC315, array index: 0x1197 */ 0x3D57,0x3D58,0x3D59, /* Range 0xC4FF - 0xC501, array index: 0x119A */ 0x3E37,0x3E38,0x3E39, /* Range 0xC544 - 0xC54E, array index: 0x119D */ 0x3E46,0x3E47,INVALC,INVALC,0x3E48,0x3E49,0x3E4A,INVALC, 0x3E4B,0x3E4C,0x3E4D, /* Range 0xC553 - 0xC559, array index: 0x11A8 */ 0x3E4E,0x3E4F,0x3E50,INVALC,0x3E51,0x3E52,0x3E53, /* Range 0xC55D - 0xC561, array index: 0x11AF */ 0x3E54,0x3E55,INVALC,0x3E56,0x3E57, /* Range 0xC570 - 0xC575, array index: 0x11B4 */ 0x3E5A,0x3E5B,INVALC,0x3E5C,0x3E5D,0x3E5E, /* Range 0xC5B8 - 0xC5BE, array index: 0x11BA */ 0x3E70,0x3E71,INVALC,0x3E72,0x3E73,0x3E74,0x3E75, /* Range 0xC5C4 - 0xC5D1, array index: 0x11C1 */ 0x3E76,0x3E77,0x3E78,0x3E79,0x3E7A,0x3E7B,0x3E7C,INVALC, 0x3E7D,INVALC,0x3E7E,INVALC,0x3F21,0x3F22, /* Range 0xC5EC - 0xC5F0, array index: 0x11CF */ 0x3F29,0x3F2A,0x3F2B,INVALC,0x3F2C, /* Range 0xC5FC - 0xC608, array index: 0x11D4 */ 0x3F30,0x3F31,0x3F32,0x3F33,0x3F34,0x3F35,INVALC,INVALC, INVALC,0x3F36,0x3F37,0x3F38,0x3F39, /* Range 0xC618 - 0xC61C, array index: 0x11E1 */ 0x3F3C,0x3F3D,INVALC,0x3F3E,0x3F3F, /* Range 0xC62C - 0xC63B, array index: 0x11E6 */ 0x3F43,0x3F44,0x3F45,INVALC,0x3F46,INVALC,INVALC,0x3F47, 0x3F48,0x3F49,INVALC,0x3F4A,INVALC,0x3F4B,INVALC,0x3F4C, /* Range 0xC650 - 0xC655, array index: 0x11F6 */ 0x3F51,0x3F52,INVALC,0x3F53,0x3F54,0x3F55, /* Range 0xC6B8 - 0xC6BA, array index: 0x11FC */ 0x3F6F,0x3F70,0x3F71, /* Range 0xC74F - 0xC758, array index: 0x11FF */ 0x403F,INVALC,0x4040,0x4041,0x4042,0x4043,0x4044,0x4045, 0x4046,0x4047, /* Range 0xC77C - 0xC77E, array index: 0x1209 */ 0x404F,0x4050,0x4051, /* Range 0xC783 - 0xC78A, array index: 0x120C */ 0x4052,0x4053,0x4054,INVALC,0x4055,0x4056,0x4057,0x4058, /* Range 0xC794 - 0xC79A, array index: 0x1214 */ 0x405C,INVALC,0x405D,0x405E,0x405F,INVALC,0x4060, /* Range 0xC7A0 - 0xC7A6, array index: 0x121B */ 0x4061,0x4062,INVALC,0x4063,0x4064,0x4065,0x4066, /* Range 0xC7BC - 0xC7C1, array index: 0x1222 */ 0x406B,0x406C,INVALC,0x406D,0x406E,0x406F, /* Range 0xC883 - 0xC88D, array index: 0x1228 */ 0x413D,INVALC,0x413E,0x413F,0x4140,INVALC,INVALC,INVALC, 0x4141,0x4142,0x4143, /* Range 0xC904 - 0xC906, array index: 0x1233 */ 0x4159,0x415A,0x415B, /* Range 0xC9D9 - 0xC9DD, array index: 0x1236 */ 0x4223,0x4224,INVALC,0x4225,0x4226, /* Range 0xC9EC - 0xC9F1, array index: 0x123B */ 0x422B,0x422C,INVALC,0x422D,0x422E,0x422F, /* Range 0xCA08 - 0xCA0D, array index: 0x1241 */ 0x4234,0x4235,INVALC,0x4236,0x4237,0x4238, /* Range 0xCA5C - 0xCA61, array index: 0x1247 */ 0x4240,0x4241,INVALC,0x4242,0x4243,0x4244, /* Range 0xCC27 - 0xCC29, array index: 0x124D */ 0x4276,0x4277,0x4278, /* Range 0xCC38 - 0xCC3E, array index: 0x1250 */ 0x427C,0x427D,INVALC,0x427E,0x4321,0x4322,0x4323, /* Range 0xCC54 - 0xCC59, array index: 0x1257 */ 0x4328,0x4329,INVALC,0x432A,0x432B,0x432C, /* Range 0xCCA8 - 0xCCAD, array index: 0x125D */ 0x4337,0x4338,INVALC,0x4339,0x433A,0x433B, /* Range 0xCE5F - 0xCE61, array index: 0x1263 */ 0x4424,0x4425,0x4426, /* Range 0xCEA0 - 0xCEA5, array index: 0x1266 */ 0x4437,0x4438,INVALC,0x4439,0x443A,0x443B, /* Range 0xCEF4 - 0xCEF9, array index: 0x126C */ 0x4444,0x4445,INVALC,0x4446,0x4447,0x4448, /* Range 0xCF2C - 0xCF31, array index: 0x1272 */ 0x4454,0x4455,INVALC,0x4456,0x4457,0x4458, /* Range 0xD0D0 - 0xD0D5, array index: 0x1278 */ 0x453D,0x453E,INVALC,0x453F,0x4540,0x4541, /* Range 0xD0EC - 0xD0F1, array index: 0x127E */ 0x4546,0x4547,INVALC,0x4548,0x4549,0x454A, /* Range 0xD140 - 0xD145, array index: 0x1284 */ 0x4552,0x4553,INVALC,0x4554,0x4555,0x4556, /* Range 0xD30C - 0xD310, array index: 0x128A */ 0x4644,0x4645,0x4646,INVALC,0x4647, /* Range 0xD31C - 0xD321, array index: 0x128F */ 0x464A,0x464B,INVALC,0x464C,0x464D,0x464E, /* Range 0xD338 - 0xD33D, array index: 0x1295 */ 0x4654,0x4655,INVALC,0x4656,0x4657,0x4658, /* Range 0xD38C - 0xD391, array index: 0x129B */ 0x465F,0x4660,INVALC,0x4661,0x4662,0x4663, /* Range 0xD584 - 0xD589, array index: 0x12A1 */ 0x475C,0x475D,INVALC,0x475E,0x475F,0x4760, /* Range 0xD610 - 0xD615, array index: 0x12A7 */ 0x4778,0x4779,INVALC,0x477A,0x477B,0x477C, /* Range 0xD754 - 0xD759, array index: 0x12AD */ 0x4867,INVALC,0x4868,0x4869,0x486A,0x486B, /* Range 0xF900 - 0xFA0B, array index: 0x12B3 */ 0x4B50,0x4B56,0x4B67,0x4D4F,0x4D68,0x4E2D,0x4F7B,0x5022, 0x5038,0x5050,0x505D,0x5154,0x5155,0x5158,0x515B,0x515C, 0x515D,0x515E,0x515F,0x5160,0x5162,0x5163,0x5164,0x5165, 0x5166,0x5168,0x5169,0x516A,0x516B,0x516D,0x516F,0x5170, 0x5172,0x5176,0x517A,0x517C,0x517D,0x517E,0x5222,0x5223, 0x5227,0x5228,0x5229,0x522A,0x522B,0x522D,0x5232,0x523E, 0x5242,0x5243,0x5244,0x5246,0x5247,0x5248,0x5249,0x524A, 0x524B,0x524D,0x524E,0x524F,0x5250,0x5251,0x5252,0x5253, 0x5254,0x5255,0x5256,0x5257,0x5259,0x525A,0x525E,0x525F, 0x5261,0x5262,0x5264,0x5265,0x5266,0x5267,0x5268,0x5269, 0x526A,0x526B,0x5270,0x5271,0x5272,0x5273,0x5274,0x5275, 0x5277,0x5278,0x5466,0x547C,0x5525,0x552B,0x552E,0x5638, 0x564D,0x574B,0x5764,0x5B45,0x5B64,0x5C25,0x5D25,0x5D55, 0x5D74,0x5E7C,0x5E7E,0x5F33,0x5F61,0x5F68,0x6071,0x612D, 0x616D,0x6375,0x6421,0x6429,0x652E,0x6531,0x6532,0x6539, 0x653B,0x653C,0x6544,0x654E,0x6550,0x6552,0x6556,0x657A, 0x657B,0x657C,0x657E,0x6621,0x6624,0x6627,0x662D,0x662F, 0x6630,0x6631,0x6633,0x6637,0x6638,0x663C,0x6644,0x6646, 0x6647,0x664A,0x6652,0x6656,0x6659,0x665C,0x665F,0x6661, 0x6664,0x6665,0x6666,0x6668,0x666A,0x666B,0x666C,0x666F, 0x6671,0x6672,0x6675,0x6676,0x6677,0x6679,0x6721,0x6726, 0x6729,0x672A,0x672C,0x672D,0x6730,0x673F,0x6741,0x6746, 0x6747,0x674B,0x674D,0x674F,0x6750,0x6753,0x675F,0x6764, 0x6766,0x6777,0x6867,0x6868,0x6870,0x6871,0x6877,0x6879, 0x687B,0x687E,0x6927,0x692C,0x694C,0x6977,0x6A41,0x6A65, 0x6A74,0x6A77,0x6A7C,0x6A7E,0x6B24,0x6B27,0x6B29,0x6B2A, 0x6B3A,0x6B3B,0x6B3D,0x6B41,0x6B42,0x6B46,0x6B47,0x6B4C, 0x6B4F,0x6B50,0x6B51,0x6B52,0x6B58,0x6C26,0x6C27,0x6C2A, 0x6C2F,0x6C30,0x6C31,0x6C32,0x6C35,0x6C38,0x6C3A,0x6C40, 0x6C41,0x6C45,0x6C46,0x6C49,0x6C4A,0x6C55,0x6C5D,0x6C5E, 0x6C61,0x6C64,0x6C67,0x6C68,0x6C77,0x6C78,0x6C7A,0x6D21, 0x6D22,0x6D23,0x6D6E,0x6E5B,0x723D,0x727A,0x7331,0x7427, 0x746E,0x7674,0x7676,0x7738,0x7748,0x7753,0x785B,0x7870, 0x7A21,0x7A22,0x7A66,0x7C29, /* Range 0xFF01 - 0xFF5E, array index: 0x13BF */ 0x2321,0x2322,0x2323,0x2324,0x2325,0x2326,0x2327,0x2328, 0x2329,0x232A,0x232B,0x232C,0x232D,0x232E,0x232F,0x2330, 0x2331,0x2332,0x2333,0x2334,0x2335,0x2336,0x2337,0x2338, 0x2339,0x233A,0x233B,0x233C,0x233D,0x233E,0x233F,0x2340, 0x2341,0x2342,0x2343,0x2344,0x2345,0x2346,0x2347,0x2348, 0x2349,0x234A,0x234B,0x234C,0x234D,0x234E,0x234F,0x2350, 0x2351,0x2352,0x2353,0x2354,0x2355,0x2356,0x2357,0x2358, 0x2359,0x235A,0x235B,0x212C,0x235D,0x235E,0x235F,0x2360, 0x2361,0x2362,0x2363,0x2364,0x2365,0x2366,0x2367,0x2368, 0x2369,0x236A,0x236B,0x236C,0x236D,0x236E,0x236F,0x2370, 0x2371,0x2372,0x2373,0x2374,0x2375,0x2376,0x2377,0x2378, 0x2379,0x237A,0x237B,0x237C,0x237D,0x2226, /* Range 0xFFE0 - 0xFFE6, array index: 0x141D */ 0x214B,0x214C,0x217E,0x237E,INVALC,0x214D,0x235C, /* Unranged codes (438 codes) */ /* Array index: 0x1424 */ 0x00A1,0x222E, /* Array index: 0x1424 */ 0x00A4,0x2234, /* Array index: 0x1424 */ 0x00A7,0x2157, /* Array index: 0x1424 */ 0x00A8,0x2127, /* Array index: 0x1424 */ 0x00AA,0x2823, /* Array index: 0x1424 */ 0x00AD,0x2129, /* Array index: 0x1424 */ 0x00C6,0x2821, /* Array index: 0x1424 */ 0x00D0,0x2822, /* Array index: 0x1424 */ 0x00D7,0x213F, /* Array index: 0x1424 */ 0x00D8,0x282A, /* Array index: 0x1424 */ 0x00DE,0x282D, /* Array index: 0x1424 */ 0x00DF,0x292C, /* Array index: 0x1424 */ 0x00E6,0x2921, /* Array index: 0x1424 */ 0x00F0,0x2923, /* Array index: 0x1424 */ 0x00F7,0x2140, /* Array index: 0x1424 */ 0x00F8,0x292A, /* Array index: 0x1424 */ 0x00FE,0x292D, /* Array index: 0x1424 */ 0x0111,0x2922, /* Array index: 0x1424 */ 0x0126,0x2824, /* Array index: 0x1424 */ 0x0127,0x2924, /* Array index: 0x1424 */ 0x0138,0x2927, /* Array index: 0x1424 */ 0x0152,0x282B, /* Array index: 0x1424 */ 0x0153,0x292B, /* Array index: 0x1424 */ 0x0166,0x282E, /* Array index: 0x1424 */ 0x0167,0x292E, /* Array index: 0x1424 */ 0x02C7,0x2227, /* Array index: 0x1424 */ 0x02D0,0x2230, /* Array index: 0x1424 */ 0x0401,0x2C27, /* Array index: 0x1424 */ 0x2015,0x212A, /* Array index: 0x1424 */ 0x2018,0x212E, /* Array index: 0x1424 */ 0x2019,0x212F, /* Array index: 0x1424 */ 0x201C,0x2130, /* Array index: 0x1424 */ 0x201D,0x2131, /* Array index: 0x1424 */ 0x2020,0x2253, /* Array index: 0x1424 */ 0x2021,0x2254, /* Array index: 0x1424 */ 0x2025,0x2125, /* Array index: 0x1424 */ 0x2026,0x2126, /* Array index: 0x1424 */ 0x2030,0x2236, /* Array index: 0x1424 */ 0x2032,0x2147, /* Array index: 0x1424 */ 0x2033,0x2148, /* Array index: 0x1424 */ 0x203B,0x2158, /* Array index: 0x1424 */ 0x2074,0x2979, /* Array index: 0x1424 */ 0x2103,0x2149, /* Array index: 0x1424 */ 0x2109,0x2235, /* Array index: 0x1424 */ 0x2113,0x2724, /* Array index: 0x1424 */ 0x2116,0x2260, /* Array index: 0x1424 */ 0x2121,0x2265, /* Array index: 0x1424 */ 0x2122,0x2262, /* Array index: 0x1424 */ 0x2126,0x2759, /* Array index: 0x1424 */ 0x212B,0x214A, /* Array index: 0x1424 */ 0x2153,0x2877, /* Array index: 0x1424 */ 0x2154,0x2878, /* Array index: 0x1424 */ 0x21D2,0x2221, /* Array index: 0x1424 */ 0x21D4,0x2222, /* Array index: 0x1424 */ 0x2200,0x2223, /* Array index: 0x1424 */ 0x2202,0x2153, /* Array index: 0x1424 */ 0x2203,0x2224, /* Array index: 0x1424 */ 0x2207,0x2154, /* Array index: 0x1424 */ 0x2208,0x2174, /* Array index: 0x1424 */ 0x220B,0x2175, /* Array index: 0x1424 */ 0x220F,0x2233, /* Array index: 0x1424 */ 0x2211,0x2232, /* Array index: 0x1424 */ 0x221A,0x216E, /* Array index: 0x1424 */ 0x221D,0x2170, /* Array index: 0x1424 */ 0x221E,0x2144, /* Array index: 0x1424 */ 0x2220,0x2150, /* Array index: 0x1424 */ 0x2234,0x2145, /* Array index: 0x1424 */ 0x2235,0x2171, /* Array index: 0x1424 */ 0x223C,0x212D, /* Array index: 0x1424 */ 0x223D,0x216F, /* Array index: 0x1424 */ 0x2252,0x2156, /* Array index: 0x1424 */ 0x2260,0x2141, /* Array index: 0x1424 */ 0x2261,0x2155, /* Array index: 0x1424 */ 0x2264,0x2142, /* Array index: 0x1424 */ 0x2265,0x2143, /* Array index: 0x1424 */ 0x226A,0x216C, /* Array index: 0x1424 */ 0x226B,0x216D, /* Array index: 0x1424 */ 0x2282,0x2178, /* Array index: 0x1424 */ 0x2283,0x2179, /* Array index: 0x1424 */ 0x2286,0x2176, /* Array index: 0x1424 */ 0x2287,0x2177, /* Array index: 0x1424 */ 0x2299,0x2241, /* Array index: 0x1424 */ 0x22A5,0x2151, /* Array index: 0x1424 */ 0x2312,0x2152, /* Array index: 0x1424 */ 0x2592,0x2246, /* Array index: 0x1424 */ 0x25B2,0x2163, /* Array index: 0x1424 */ 0x25B3,0x2162, /* Array index: 0x1424 */ 0x25B6,0x223A, /* Array index: 0x1424 */ 0x25B7,0x2239, /* Array index: 0x1424 */ 0x25BC,0x2165, /* Array index: 0x1424 */ 0x25BD,0x2164, /* Array index: 0x1424 */ 0x25C0,0x2238, /* Array index: 0x1424 */ 0x25C1,0x2237, /* Array index: 0x1424 */ 0x25CB,0x215B, /* Array index: 0x1424 */ 0x2605,0x215A, /* Array index: 0x1424 */ 0x2606,0x2159, /* Array index: 0x1424 */ 0x260E,0x224F, /* Array index: 0x1424 */ 0x260F,0x224E, /* Array index: 0x1424 */ 0x261C,0x2250, /* Array index: 0x1424 */ 0x261E,0x2251, /* Array index: 0x1424 */ 0x2640,0x214F, /* Array index: 0x1424 */ 0x2642,0x214E, /* Array index: 0x1424 */ 0x327F,0x225E, /* Array index: 0x1424 */ 0x33CF,0x2739, /* Array index: 0x1424 */ 0x33D0,0x276A, /* Array index: 0x1424 */ 0x33D3,0x276B, /* Array index: 0x1424 */ 0x33D6,0x275F, /* Array index: 0x1424 */ 0x33D8,0x2264, /* Array index: 0x1424 */ 0x4E00,0x6C69, /* Array index: 0x1424 */ 0x4E01,0x6F4B, /* Array index: 0x1424 */ 0x4E03,0x7652, /* Array index: 0x1424 */ 0x4E11,0x7564, /* Array index: 0x1424 */ 0x4E1E,0x632A, /* Array index: 0x1424 */ 0x4E2D,0x7169, /* Array index: 0x1424 */ 0x4E32,0x4D7A, /* Array index: 0x1424 */ 0x4E38,0x7C2F, /* Array index: 0x1424 */ 0x4E39,0x5321, /* Array index: 0x1424 */ 0x4E3B,0x712B, /* Array index: 0x1424 */ 0x4E42,0x6751, /* Array index: 0x1424 */ 0x4E43,0x522C, /* Array index: 0x1424 */ 0x4E45,0x4E79, /* Array index: 0x1424 */ 0x4E56,0x4E52, /* Array index: 0x1424 */ 0x4E58,0x632B, /* Array index: 0x1424 */ 0x4E59,0x6B60, /* Array index: 0x1424 */ 0x4E6B,0x4A61, /* Array index: 0x1424 */ 0x4E6D,0x544C, /* Array index: 0x1424 */ 0x4E73,0x6A61, /* Array index: 0x1424 */ 0x4E76,0x5C63, /* Array index: 0x1424 */ 0x4E77,0x5F2D, /* Array index: 0x1424 */ 0x4E7E,0x4B6B, /* Array index: 0x1424 */ 0x4E82,0x552F, /* Array index: 0x1424 */ 0x4E86,0x5675, /* Array index: 0x1424 */ 0x4E88,0x6578, /* Array index: 0x1424 */ 0x4E8B,0x5E40, /* Array index: 0x1424 */ 0x4E8C,0x6C23, /* Array index: 0x1424 */ 0x4E98,0x5066, /* Array index: 0x1424 */ 0x4E9B,0x5E41, /* Array index: 0x1424 */ 0x4E9E,0x642C, /* Array index: 0x1424 */ 0x4EB6,0x5322, /* Array index: 0x1424 */ 0x4EBA,0x6C51, /* Array index: 0x1424 */ 0x4EC0,0x6427, /* Array index: 0x1424 */ 0x4EC1,0x6C52, /* Array index: 0x1424 */ 0x4EC4,0x7631, /* Array index: 0x1424 */ 0x4EC7,0x4E7B, /* Array index: 0x1424 */ 0x4ECA,0x5051, /* Array index: 0x1424 */ 0x4ECB,0x4B3F, /* Array index: 0x1424 */ 0x4ECD,0x6D24, /* Array index: 0x1424 */ 0x4EDD,0x544E, /* Array index: 0x1424 */ 0x4EDF,0x7435, /* Array index: 0x1424 */ 0x4EF0,0x6466, /* Array index: 0x1424 */ 0x4EF2,0x716A, /* Array index: 0x1424 */ 0x4EF6,0x4B6C, /* Array index: 0x1424 */ 0x4EF7,0x4B40, /* Array index: 0x1424 */ 0x4EFB,0x6C72, /* Array index: 0x1424 */ 0x4F01,0x506A, /* Array index: 0x1424 */ 0x4F2F,0x5B57, /* Array index: 0x1424 */ 0x4F34,0x5A61, /* Array index: 0x1424 */ 0x4F36,0x5636, /* Array index: 0x1424 */ 0x4F38,0x635F, /* Array index: 0x1424 */ 0x4F3A,0x5E43, /* Array index: 0x1424 */ 0x4F3C,0x5E44, /* Array index: 0x1424 */ 0x4F3D,0x4A21, /* Array index: 0x1424 */ 0x4F43,0x6E6C, /* Array index: 0x1424 */ 0x4F55,0x793C, /* Array index: 0x1424 */ 0x4F69,0x7825, /* Array index: 0x1424 */ 0x4F6F,0x653A, /* Array index: 0x1424 */ 0x4F70,0x5B58, /* Array index: 0x1424 */ 0x4F73,0x4A22, /* Array index: 0x1424 */ 0x4F76,0x514D, /* Array index: 0x1424 */ 0x4F7A,0x6E6D, /* Array index: 0x1424 */ 0x4F7E,0x6C6B, /* Array index: 0x1424 */ 0x4F7F,0x5E45, /* Array index: 0x1424 */ 0x4F81,0x6360, /* Array index: 0x1424 */ 0x4F83,0x4A49, /* Array index: 0x1424 */ 0x4F84,0x7269, /* Array index: 0x1424 */ 0x4F86,0x554E, /* Array index: 0x1424 */ 0x4F88,0x7636, /* Array index: 0x1424 */ 0x4F8A,0x4E42, /* Array index: 0x1424 */ 0x4F8B,0x5647, /* Array index: 0x1424 */ 0x4F8D,0x6334, /* Array index: 0x1424 */ 0x4F8F,0x712D, /* Array index: 0x1424 */ 0x4F91,0x6A62, /* Array index: 0x1424 */ 0x4F96,0x5742, /* Array index: 0x1424 */ 0x4F98,0x7327, /* Array index: 0x1424 */ 0x4F9B,0x4D6A, /* Array index: 0x1424 */ 0x4F9D,0x6B6E, /* Array index: 0x1424 */ 0x4FAE,0x5932, /* Array index: 0x1424 */ 0x4FAF,0x7D25, /* Array index: 0x1424 */ 0x4FB5,0x7655, /* Array index: 0x1424 */ 0x4FB6,0x5562, /* Array index: 0x1424 */ 0x4FBF,0x7835, /* Array index: 0x1424 */ 0x4FC9,0x676B, /* Array index: 0x1424 */ 0x4FCA,0x7155, /* Array index: 0x1424 */ 0x4FCE,0x703B, /* Array index: 0x1424 */ 0x4FD1,0x6935, /* Array index: 0x1424 */ 0x4FD3,0x4C49, /* Array index: 0x1424 */ 0x4FD4,0x7A55, /* Array index: 0x1424 */ 0x4FD7,0x6154, /* Array index: 0x1424 */ 0x4FDA,0x5756, /* Array index: 0x1424 */ 0x4FEE,0x6173, /* Array index: 0x1424 */ 0x4FEF,0x5C76, /* Array index: 0x1424 */ 0x4FF1,0x4E7C, /* Array index: 0x1424 */ 0x4FF3,0x5B44, /* Array index: 0x1424 */ 0x4FF5,0x7871, /* Array index: 0x1424 */ 0x4FF8,0x5C64, /* Array index: 0x1424 */ 0x4FFA,0x656F, /* Array index: 0x1424 */ 0x5002,0x5C31, /* Array index: 0x1424 */ 0x5006,0x5556, /* Array index: 0x1424 */ 0x5009,0x735A, /* Array index: 0x1424 */ 0x500B,0x4B41, /* Array index: 0x1424 */ 0x500D,0x5B43, /* Array index: 0x1424 */ 0x5011,0x597A, /* Array index: 0x1424 */ 0x5012,0x536E, /* Array index: 0x1424 */ 0x5016,0x7A38, /* Array index: 0x1424 */ 0x5019,0x7D26, /* Array index: 0x1424 */ 0x501A,0x6B6F, /* Array index: 0x1424 */ 0x501C,0x7426, /* Array index: 0x1424 */ 0x501E,0x4C4A, /* Array index: 0x1424 */ 0x501F,0x7328, /* Array index: 0x1424 */ 0x5021,0x735B, /* Array index: 0x1424 */ 0x503B,0x6526, /* Array index: 0x1424 */ 0x5043,0x6567, /* Array index: 0x1424 */ 0x504F,0x7836, /* Array index: 0x1424 */ 0x5055,0x7A25, /* Array index: 0x1424 */ 0x505A,0x712E, /* Array index: 0x1424 */ 0x505C,0x6F4E, /* Array index: 0x1424 */ 0x5065,0x4B6D, /* Array index: 0x1424 */ 0x5080,0x4E53, /* Array index: 0x1424 */ 0x5085,0x5C77, /* Array index: 0x1424 */ 0x508D,0x5B28, /* Array index: 0x1424 */ 0x5091,0x4B78, /* Array index: 0x1424 */ 0x5098,0x5F21, /* Array index: 0x1424 */ 0x5099,0x5D61, /* Array index: 0x1424 */ 0x50AC,0x754A, /* Array index: 0x1424 */ 0x50AD,0x6936, /* Array index: 0x1424 */ 0x50B2,0x676C, /* Array index: 0x1424 */ 0x50B3,0x6E6E, /* Array index: 0x1424 */ 0x50B5,0x7370, /* Array index: 0x1424 */ 0x50B7,0x5F3F, /* Array index: 0x1424 */ 0x50BE,0x4C4B, /* Array index: 0x1424 */ 0x50C5,0x5041, /* Array index: 0x1424 */ 0x50C9,0x7452, /* Array index: 0x1424 */ 0x50CA,0x603A, /* Array index: 0x1424 */ 0x50CF,0x5F40, /* Array index: 0x1424 */ 0x50D1,0x4E60, /* Array index: 0x1424 */ 0x50D5,0x5C52, /* Array index: 0x1424 */ 0x50D6,0x7D6A, /* Array index: 0x1424 */ 0x50DA,0x5676, /* Array index: 0x1424 */ 0x50DE,0x6A4A, /* Array index: 0x1424 */ 0x50E5,0x6869, /* Array index: 0x1424 */ 0x50E7,0x632C, /* Array index: 0x1424 */ 0x50ED,0x7350, /* Array index: 0x1424 */ 0x50F9,0x4A24, /* Array index: 0x1424 */ 0x50FB,0x5B78, /* Array index: 0x1424 */ 0x5104,0x6562, /* Array index: 0x1424 */ 0x5106,0x4C4C, /* Array index: 0x1424 */ 0x5109,0x4B7B, /* Array index: 0x1424 */ 0x5112,0x6A63, /* Array index: 0x1424 */ 0x511F,0x5F41, /* Array index: 0x1424 */ 0x5121,0x566D, /* Array index: 0x1424 */ 0x512A,0x6950, /* Array index: 0x1424 */ 0x5132,0x6E39, /* Array index: 0x1424 */ 0x5137,0x5563, /* Array index: 0x1424 */ 0x513A,0x5153, /* Array index: 0x1424 */ 0x513C,0x6570, /* Array index: 0x1424 */ 0x5152,0x642E, /* Array index: 0x1424 */ 0x515C,0x545F, /* Array index: 0x1424 */ 0x5162,0x5067, /* Array index: 0x1424 */ 0x5171,0x4D6C, /* Array index: 0x1424 */ 0x517C,0x4C42, /* Array index: 0x1424 */ 0x5180,0x506D, /* Array index: 0x1424 */ 0x5186,0x6577, /* Array index: 0x1424 */ 0x518A,0x737C, /* Array index: 0x1424 */ 0x518D,0x6E22, /* Array index: 0x1424 */ 0x5192,0x5933, /* Array index: 0x1424 */ 0x5195,0x5874, /* Array index: 0x1424 */ 0x5197,0x6937, /* Array index: 0x1424 */ 0x51A0,0x4E2E, /* Array index: 0x1424 */ 0x51A5,0x5922, /* Array index: 0x1424 */ 0x51AA,0x5871, /* Array index: 0x1424 */ 0x51AC,0x544F, /* Array index: 0x1424 */ 0x51B6,0x6527, /* Array index: 0x1424 */ 0x51B7,0x5552, /* Array index: 0x1424 */ 0x51BD,0x5629, /* Array index: 0x1424 */ 0x51C4,0x7422, /* Array index: 0x1424 */ 0x51C6,0x7157, /* Array index: 0x1424 */ 0x51E1,0x5B6D, /* Array index: 0x1424 */ 0x51F0,0x7C45, /* Array index: 0x1424 */ 0x51F1,0x4B42, /* Array index: 0x1424 */ 0x51FD,0x795E, /* Array index: 0x1424 */ 0x5200,0x536F, /* Array index: 0x1424 */ 0x5203,0x6C53, /* Array index: 0x1424 */ 0x520E,0x597B, /* Array index: 0x1424 */ 0x5211,0x7A7D, /* Array index: 0x1424 */ 0x5217,0x562A, /* Array index: 0x1424 */ 0x521D,0x7478, /* Array index: 0x1424 */ 0x5224,0x7777, /* Array index: 0x1424 */ 0x5225,0x5C2C, /* Array index: 0x1424 */ 0x5229,0x5757, /* Array index: 0x1424 */ 0x522A,0x5F22, /* Array index: 0x1424 */ 0x522E,0x4E3E, /* Array index: 0x1424 */ 0x5230,0x5370, /* Array index: 0x1424 */ 0x5243,0x746F, /* Array index: 0x1424 */ 0x5247,0x764E, /* Array index: 0x1424 */ 0x5254,0x7428, /* Array index: 0x1424 */ 0x5256,0x5C78, /* Array index: 0x1424 */ 0x525B,0x4B27, /* Array index: 0x1424 */ 0x525D,0x5A4E, /* Array index: 0x1424 */ 0x5261,0x6066, /* Array index: 0x1424 */ 0x5269,0x6D25, /* Array index: 0x1424 */ 0x526A,0x6E72, /* Array index: 0x1424 */ 0x526F,0x5C79, /* Array index: 0x1424 */ 0x5272,0x795C, /* Array index: 0x1424 */ 0x5275,0x735C, /* Array index: 0x1424 */ 0x527D,0x7872, /* Array index: 0x1424 */ 0x527F,0x7479, /* Array index: 0x1424 */ 0x5283,0x7C71, /* Array index: 0x1424 */ 0x528D,0x4B7C, /* Array index: 0x1424 */ 0x5291,0x7025, /* Array index: 0x1424 */ 0x5292,0x4B7D, /* Array index: 0x1424 */ 0x529B,0x5574, /* Array index: 0x1424 */ 0x529F,0x4D6D, /* Array index: 0x1424 */ 0x52A0,0x4A25, /* Array index: 0x1424 */ 0x52A3,0x562B, /* Array index: 0x1424 */ 0x52A4,0x5042, /* Array index: 0x1424 */ 0x52BE,0x7A36, /* Array index: 0x1424 */ 0x52C1,0x4C4D, /* Array index: 0x1424 */ 0x52C3,0x5A7A, /* Array index: 0x1424 */ 0x52C5,0x764F, /* Array index: 0x1424 */ 0x52C7,0x6938, /* Array index: 0x1424 */ 0x52C9,0x5875, /* Array index: 0x1424 */ 0x52CD,0x4C4E, /* Array index: 0x1424 */ 0x52D2,0x574D, /* Array index: 0x1424 */ 0x52F3,0x7D33, /* Array index: 0x1424 */ 0x52F5,0x5564, /* Array index: 0x1424 */ 0x52F8,0x4F68, /* Array index: 0x1424 */ 0x52FA,0x6D43, /* Array index: 0x1424 */ 0x52FB,0x5032, /* Array index: 0x1424 */ 0x52FE,0x4E7E, /* Array index: 0x1424 */ 0x52FF,0x5A28, /* Array index: 0x1424 */ 0x5305,0x7850, /* Array index: 0x1424 */ 0x5308,0x7D56, /* Array index: 0x1424 */ 0x530D,0x7851, /* Array index: 0x1424 */ 0x530F,0x7852, /* Array index: 0x1424 */ 0x5310,0x5C53, /* Array index: 0x1424 */ 0x5320,0x6D5D, /* Array index: 0x1424 */ 0x5321,0x4E44, /* Array index: 0x1424 */ 0x5323,0x4B21, /* Array index: 0x1424 */ 0x532A,0x5D63, /* Array index: 0x1424 */ 0x532F,0x7C5D, /* Array index: 0x1424 */ 0x5339,0x792F, /* Array index: 0x1424 */ 0x534D,0x5833, /* Array index: 0x1424 */ 0x5357,0x5175, /* Array index: 0x1424 */ 0x535A,0x5A4F, /* Array index: 0x1424 */ 0x535C,0x5C54, /* Array index: 0x1424 */ 0x535E,0x5C26, /* Array index: 0x1424 */ 0x5360,0x6F3F, /* Array index: 0x1424 */ 0x5366,0x4E4F, /* Array index: 0x1424 */ 0x5368,0x6059, /* Array index: 0x1424 */ 0x537D,0x716D, /* Array index: 0x1424 */ 0x537F,0x4C4F, /* Array index: 0x1424 */ 0x5384,0x6478, /* Array index: 0x1424 */ 0x5393,0x646D, /* Array index: 0x1424 */ 0x5398,0x5758, /* Array index: 0x1424 */ 0x539A,0x7D27, /* Array index: 0x1424 */ 0x539F,0x6A2B, /* Array index: 0x1424 */ 0x53A0,0x7632, /* Array index: 0x1424 */ 0x53A5,0x4F70, /* Array index: 0x1424 */ 0x53A6,0x793D, /* Array index: 0x1424 */ 0x53AD,0x6674, /* Array index: 0x1424 */ 0x53BB,0x4B5B, /* Array index: 0x1424 */ 0x53C3,0x7351, /* Array index: 0x1424 */ 0x53D4,0x6252, /* Array index: 0x1424 */ 0x53D6,0x7622, /* Array index: 0x1424 */ 0x53D7,0x6174, /* Array index: 0x1424 */ 0x53DB,0x5A64, /* Array index: 0x1424 */ 0x53F8,0x5E49, /* Array index: 0x1424 */ 0x5403,0x7D5E, /* Array index: 0x1424 */ 0x5404,0x4A40, /* Array index: 0x1424 */ 0x541B,0x4F56, /* Array index: 0x1424 */ 0x541D,0x5770, /* Array index: 0x1424 */ 0x541F,0x6B61, /* Array index: 0x1424 */ 0x5420,0x7845, /* Array index: 0x1424 */ 0x5426,0x5C7A, /* Array index: 0x1424 */ 0x5429,0x5D43, /* Array index: 0x1424 */ 0x542B,0x795F, /* Array index: 0x1424 */ 0x5433,0x676F, /* Array index: 0x1424 */ 0x5442,0x5565, /* Array index: 0x1424 */ 0x5448,0x6F50, /* Array index: 0x1424 */ 0x544A,0x4D31, /* Array index: 0x1424 */ 0x5451,0x7722, /* Array index: 0x1424 */ 0x5468,0x7132, /* Array index: 0x1424 */ 0x546A,0x7131, /* Array index: 0x1424 */ 0x5471,0x4D32, /* Array index: 0x1424 */ 0x5473,0x5A2B, /* Array index: 0x1424 */ 0x5475,0x4A27, /* Array index: 0x1424 */ 0x5480,0x6E3A, /* Array index: 0x1424 */ 0x5486,0x7853, /* Array index: 0x1424 */ 0x548C,0x7B7A, /* Array index: 0x1424 */ 0x548E,0x4F24, /* Array index: 0x1424 */ 0x5490,0x5C7B, /* Array index: 0x1424 */ 0x54A4,0x7663, /* Array index: 0x1424 */ 0x54A8,0x6D2A, /* Array index: 0x1424 */ 0x54AB,0x7221, /* Array index: 0x1424 */ 0x54AC,0x4E61, /* Array index: 0x1424 */ 0x54B3,0x7A26, /* Array index: 0x1424 */ 0x54B8,0x7960, /* Array index: 0x1424 */ 0x54BD,0x6C56, /* Array index: 0x1424 */ 0x54C0,0x646E, /* Array index: 0x1424 */ 0x54C1,0x7921, /* Array index: 0x1424 */ 0x54C4,0x7B6F, /* Array index: 0x1424 */ 0x54C8,0x796B, /* Array index: 0x1424 */ 0x54C9,0x6E23, /* Array index: 0x1424 */ 0x54E1,0x6A2C, /* Array index: 0x1424 */ 0x54E5,0x4A28, /* Array index: 0x1424 */ 0x54E8,0x747A, /* Array index: 0x1424 */ 0x54ED,0x4D56, /* Array index: 0x1424 */ 0x54EE,0x7C76, /* Array index: 0x1424 */ 0x54F2,0x7449, /* Array index: 0x1424 */ 0x54FA,0x7854, /* Array index: 0x1424 */ 0x5504,0x7826, /* Array index: 0x1424 */ 0x5506,0x5E4A, /* Array index: 0x1424 */ 0x5507,0x7246, /* Array index: 0x1424 */ 0x550E,0x575A, /* Array index: 0x1424 */ 0x5510,0x5350, /* Array index: 0x1424 */ 0x551C,0x5845, /* Array index: 0x1424 */ 0x552F,0x6A66, /* Array index: 0x1424 */ 0x5531,0x735D, /* Array index: 0x1424 */ 0x5535,0x645A, /* Array index: 0x1424 */ 0x553E,0x7664, /* Array index: 0x1424 */ 0x5544,0x7672, /* Array index: 0x1424 */ 0x5546,0x5F42, /* Array index: 0x1424 */ 0x554F,0x597D, /* Array index: 0x1424 */ 0x5553,0x4C76, /* Array index: 0x1424 */ 0x5556,0x533A, /* Array index: 0x1424 */ 0x555E,0x642F, /* Array index: 0x1424 */ 0x5563,0x7961, /* Array index: 0x1424 */ 0x557C,0x7026, /* Array index: 0x1424 */ 0x5580,0x4B53, /* Array index: 0x1424 */ 0x5584,0x603C, /* Array index: 0x1424 */ 0x55C5,0x7D2B, /* Array index: 0x1424 */ 0x55C7,0x5F60, /* Array index: 0x1424 */ 0x55D4,0x7247, /* Array index: 0x1424 */ 0x55DA,0x6770, /* Array index: 0x1424 */ 0x55DC,0x506E, /* Array index: 0x1424 */ 0x55DF,0x732A, /* Array index: 0x1424 */ 0x55E3,0x5E4B, /* Array index: 0x1424 */ 0x55E4,0x7638, /* Array index: 0x1424 */ 0x55FD,0x6175, /* Array index: 0x1424 */ 0x55FE,0x7133, /* Array index: 0x1424 */ 0x5606,0x7723, /* Array index: 0x1424 */ 0x5609,0x4A29, /* Array index: 0x1424 */ 0x5614,0x4F25, /* Array index: 0x1424 */ 0x5617,0x5F44, /* Array index: 0x1424 */ 0x562F,0x6130, /* Array index: 0x1424 */ 0x5632,0x703F, /* Array index: 0x1424 */ 0x5634,0x7624, /* Array index: 0x1424 */ 0x5636,0x6336, /* Array index: 0x1424 */ 0x5653,0x7A46, /* Array index: 0x1424 */ 0x5668,0x506F, /* Array index: 0x1424 */ 0x566B,0x7D6D, /* Array index: 0x1424 */ 0x5674,0x5D44, /* Array index: 0x1424 */ 0x5686,0x7C77, /* Array index: 0x1424 */ 0x56A5,0x663F, /* Array index: 0x1424 */ 0x56AC,0x5E2D, /* Array index: 0x1424 */ 0x56AE,0x7A3F, /* Array index: 0x1424 */ 0x56B4,0x6571, /* Array index: 0x1424 */ 0x56BC,0x6D44, /* Array index: 0x1424 */ 0x56CA,0x5225, /* Array index: 0x1424 */ 0x56CD,0x7D6E, /* Array index: 0x1424 */ 0x56D1,0x7536, /* Array index: 0x1424 */ 0x56DA,0x6176, /* Array index: 0x1424 */ 0x56DB,0x5E4C, /* Array index: 0x1424 */ 0x56DE,0x7C5E, /* Array index: 0x1424 */ 0x56E0,0x6C57, /* Array index: 0x1424 */ 0x56F0,0x4D5D, /* Array index: 0x1424 */ 0x56F9,0x5637, /* Array index: 0x1424 */ 0x56FA,0x4D33, /* Array index: 0x1424 */ 0x5703,0x7855, /* Array index: 0x1424 */ 0x5704,0x6558, /* Array index: 0x1424 */ 0x5708,0x4F6A, /* Array index: 0x1424 */ 0x570B,0x4F50, /* Array index: 0x1424 */ 0x570D,0x6A4C, /* Array index: 0x1424 */ 0x5712,0x6A2E, /* Array index: 0x1424 */ 0x5713,0x6A2D, /* Array index: 0x1424 */ 0x5716,0x5371, /* Array index: 0x1424 */ 0x5718,0x5325, /* Array index: 0x1424 */ 0x571F,0x774F, /* Array index: 0x1424 */ 0x5728,0x6E24, /* Array index: 0x1424 */ 0x572D,0x5024, /* Array index: 0x1424 */ 0x5730,0x7222, /* Array index: 0x1424 */ 0x573B,0x5070, /* Array index: 0x1424 */ 0x5740,0x7223, /* Array index: 0x1424 */ 0x5742,0x7778, /* Array index: 0x1424 */ 0x5747,0x5033, /* Array index: 0x1424 */ 0x574A,0x5B29, /* Array index: 0x1424 */ 0x5761,0x7767, /* Array index: 0x1424 */ 0x5764,0x4D5E, /* Array index: 0x1424 */ 0x5766,0x7724, /* Array index: 0x1424 */ 0x576A,0x7840, /* Array index: 0x1424 */ 0x576E,0x535D, /* Array index: 0x1424 */ 0x5770,0x4C50, /* Array index: 0x1424 */ 0x5775,0x4F26, /* Array index: 0x1424 */ 0x577C,0x7673, /* Array index: 0x1424 */ 0x5782,0x6177, /* Array index: 0x1424 */ 0x5788,0x535C, /* Array index: 0x1424 */ 0x578B,0x7A7E, /* Array index: 0x1424 */ 0x5793,0x7A27, /* Array index: 0x1424 */ 0x57A0,0x6B59, /* Array index: 0x1424 */ 0x57A2,0x4F27, /* Array index: 0x1424 */ 0x57A3,0x6A2F, /* Array index: 0x1424 */ 0x57C3,0x646F, /* Array index: 0x1424 */ 0x57C7,0x6939, /* Array index: 0x1424 */ 0x57C8,0x7158, /* Array index: 0x1424 */ 0x57CB,0x5858, /* Array index: 0x1424 */ 0x57CE,0x6072, /* Array index: 0x1424 */ 0x57DF,0x6634, /* Array index: 0x1424 */ 0x57E0,0x5C7C, /* Array index: 0x1424 */ 0x57F0,0x7371, /* Array index: 0x1424 */ 0x57F4,0x6350, /* Array index: 0x1424 */ 0x57F7,0x727B, /* Array index: 0x1424 */ 0x57F9,0x5B46, /* Array index: 0x1424 */ 0x57FA,0x5071, /* Array index: 0x1424 */ 0x57FC,0x5072, /* Array index: 0x1424 */ 0x5800,0x4F5C, /* Array index: 0x1424 */ 0x5802,0x5351, /* Array index: 0x1424 */ 0x581E,0x745C, /* Array index: 0x1424 */ 0x5821,0x5C42, /* Array index: 0x1424 */ 0x5824,0x7027, /* Array index: 0x1424 */ 0x5827,0x6640, /* Array index: 0x1424 */ 0x582A,0x4A6D, /* Array index: 0x1424 */ 0x583A,0x4C77, /* Array index: 0x1424 */ 0x584A,0x4E54, /* Array index: 0x1424 */ 0x584B,0x672B, /* Array index: 0x1424 */ 0x584F,0x4B43, /* Array index: 0x1424 */ 0x5851,0x6131, /* Array index: 0x1424 */ 0x5854,0x7732, /* Array index: 0x1424 */ 0x5857,0x5373, /* Array index: 0x1424 */ 0x5858,0x5352, /* Array index: 0x1424 */ 0x585A,0x7540, /* Array index: 0x1424 */ 0x585E,0x5F5D, /* Array index: 0x1424 */ 0x5861,0x6E73, /* Array index: 0x1424 */ 0x5862,0x6771, /* Array index: 0x1424 */ 0x5864,0x7D34, /* Array index: 0x1424 */ 0x5875,0x7248, /* Array index: 0x1424 */ 0x5879,0x7352, /* Array index: 0x1424 */ 0x587C,0x6E74, /* Array index: 0x1424 */ 0x587E,0x6253, /* Array index: 0x1424 */ 0x5883,0x4C51, /* Array index: 0x1424 */ 0x5885,0x5F6A, /* Array index: 0x1424 */ 0x5889,0x693A, /* Array index: 0x1424 */ 0x5893,0x5957, /* Array index: 0x1424 */ 0x589C,0x754D, /* Array index: 0x1424 */ 0x589E,0x7172, /* Array index: 0x1424 */ 0x589F,0x7A47, /* Array index: 0x1424 */ 0x58A8,0x5978, /* Array index: 0x1424 */ 0x58A9,0x5442, /* Array index: 0x1424 */ 0x58AE,0x7665, /* Array index: 0x1424 */ 0x58B3,0x5D45, /* Array index: 0x1424 */ 0x58BA,0x6772, /* Array index: 0x1424 */ 0x58BB,0x6D5F, /* Array index: 0x1424 */ 0x58BE,0x4A4B, /* Array index: 0x1424 */ 0x58C1,0x5B7A, /* Array index: 0x1424 */ 0x58C5,0x6835, /* Array index: 0x1424 */ 0x58C7,0x5326, /* Array index: 0x1424 */ 0x58CE,0x7D35, /* Array index: 0x1424 */ 0x58D1,0x7949, /* Array index: 0x1424 */ 0x58D3,0x6462, /* Array index: 0x1424 */ 0x58D5,0x7B3D, /* Array index: 0x1424 */ 0x58D8,0x5724, /* Array index: 0x1424 */ 0x58D9,0x4E45, /* Array index: 0x1424 */ 0x58DE,0x4E55, /* Array index: 0x1424 */ 0x58DF,0x5666, /* Array index: 0x1424 */ 0x58E4,0x653D, /* Array index: 0x1424 */ 0x58EB,0x5E4D, /* Array index: 0x1424 */ 0x58EC,0x6C73, /* Array index: 0x1424 */ 0x58EF,0x6D60, /* Array index: 0x1424 */ 0x590F,0x793E, /* Array index: 0x1424 */ 0x5922,0x5953, /* Array index: 0x1424 */ 0x5931,0x6377, /* Array index: 0x1424 */ 0x5937,0x6C28, /* Array index: 0x1424 */ 0x593E,0x7A71, /* Array index: 0x1424 */ 0x5944,0x6572, /* Array index: 0x1424 */ 0x595A,0x7A28, /* Array index: 0x1424 */ 0x5960,0x6E75, /* Array index: 0x1424 */ 0x5962,0x5E4E, /* Array index: 0x1424 */ 0x5967,0x6773, /* Array index: 0x1424 */ 0x5973,0x5233, /* Array index: 0x1424 */ 0x5974,0x523F, /* Array index: 0x1424 */ 0x5978,0x4A4C, /* Array index: 0x1424 */ 0x597D,0x7B3F, /* Array index: 0x1424 */ 0x598A,0x6C74, /* Array index: 0x1424 */ 0x5993,0x5075, /* Array index: 0x1424 */ 0x5996,0x686D, /* Array index: 0x1424 */ 0x5997,0x5052, /* Array index: 0x1424 */ 0x5999,0x5958, /* Array index: 0x1424 */ 0x59A5,0x7666, /* Array index: 0x1424 */ 0x59A8,0x5B2A, /* Array index: 0x1424 */ 0x59AC,0x7760, /* Array index: 0x1424 */ 0x59B9,0x5859, /* Array index: 0x1424 */ 0x59BB,0x7423, /* Array index: 0x1424 */ 0x59BE,0x745D, /* Array index: 0x1424 */ 0x59C3,0x6F51, /* Array index: 0x1424 */ 0x59C6,0x5935, /* Array index: 0x1424 */ 0x59C9,0x6D2B, /* Array index: 0x1424 */ 0x59CB,0x6337, /* Array index: 0x1424 */ 0x59E6,0x4A4D, /* Array index: 0x1424 */ 0x59E8,0x6C29, /* Array index: 0x1424 */ 0x59EA,0x726B, /* Array index: 0x1424 */ 0x59EC,0x7D6F, /* Array index: 0x1424 */ 0x59EE,0x7973, /* Array index: 0x1424 */ 0x59F8,0x6641, /* Array index: 0x1424 */ 0x59FB,0x6C58, /* Array index: 0x1424 */ 0x59FF,0x6D2C, /* Array index: 0x1424 */ 0x5A01,0x6A4E, /* Array index: 0x1424 */ 0x5A03,0x685F, /* Array index: 0x1424 */ 0x5A11,0x5E4F, /* Array index: 0x1424 */ 0x5A18,0x5226, /* Array index: 0x1424 */ 0x5A1B,0x6774, /* Array index: 0x1424 */ 0x5A1C,0x5156, /* Array index: 0x1424 */ 0x5A1F,0x6642, /* Array index: 0x1424 */ 0x5A20,0x6363, /* Array index: 0x1424 */ 0x5A25,0x6430, /* Array index: 0x1424 */ 0x5A29,0x5834, /* Array index: 0x1424 */ 0x5A36,0x7625, /* Array index: 0x1424 */ 0x5A3C,0x735E, /* Array index: 0x1424 */ 0x5A41,0x5725, /* Array index: 0x1424 */ 0x5A46,0x7768, /* Array index: 0x1424 */ 0x5A49,0x6846, /* Array index: 0x1424 */ 0x5A5A,0x7B66, /* Array index: 0x1424 */ 0x5A62,0x5D66, /* Array index: 0x1424 */ 0x5A66,0x5C7E, /* Array index: 0x1424 */ 0x5A92,0x585A, /* Array index: 0x1424 */ 0x5A9A,0x5A2C, /* Array index: 0x1424 */ 0x5A9B,0x6A30, /* Array index: 0x1424 */ 0x5AA4,0x6338, /* Array index: 0x1424 */ 0x5AC1,0x4A2A, /* Array index: 0x1424 */ 0x5AC2,0x6179, /* Array index: 0x1424 */ 0x5AC4,0x6A31, /* Array index: 0x1424 */ 0x5AC9,0x726C, /* Array index: 0x1424 */ 0x5ACC,0x7A6E, /* Array index: 0x1424 */ 0x5AE1,0x6E55, /* Array index: 0x1424 */ 0x5AE6,0x7974, /* Array index: 0x1424 */ 0x5AE9,0x526C, /* Array index: 0x1424 */ 0x5B05,0x7B7B, /* Array index: 0x1424 */ 0x5B09,0x7D70, /* Array index: 0x1424 */ 0x5B0B,0x603D, /* Array index: 0x1424 */ 0x5B0C,0x4E63, /* Array index: 0x1424 */ 0x5B16,0x7846, /* Array index: 0x1424 */ 0x5B2A,0x5E2E, /* Array index: 0x1424 */ 0x5B40,0x5F45, /* Array index: 0x1424 */ 0x5B43,0x653E, /* Array index: 0x1424 */ 0x5B50,0x6D2D, /* Array index: 0x1424 */ 0x5B51,0x7A6A, /* Array index: 0x1424 */ 0x5B63,0x4C79, /* Array index: 0x1424 */ 0x5B64,0x4D35, /* Array index: 0x1424 */ 0x5B69,0x7A29, /* Array index: 0x1424 */ 0x5B6B,0x615D, /* Array index: 0x1424 */ 0x5B70,0x6255, /* Array index: 0x1424 */ 0x5B71,0x6D4F, /* Array index: 0x1424 */ 0x5B75,0x5D22, /* Array index: 0x1424 */ 0x5B78,0x794A, /* Array index: 0x1424 */ 0x5B7A,0x6A68, /* Array index: 0x1424 */ 0x5B7C,0x656D, /* Array index: 0x1424 */ 0x5B8F,0x4E5B, /* Array index: 0x1424 */ 0x5BAC,0x6074, /* Array index: 0x1424 */ 0x5BAE,0x4F60, /* Array index: 0x1424 */ 0x5BB0,0x6E25, /* Array index: 0x1424 */ 0x5BCC,0x5D23, /* Array index: 0x1424 */ 0x5BD7,0x523C, /* Array index: 0x1424 */ 0x5BF5,0x7541, /* Array index: 0x1424 */ 0x5BF6,0x5C44, /* Array index: 0x1424 */ 0x5BF8,0x753B, /* Array index: 0x1424 */ 0x5BFA,0x5E51, /* Array index: 0x1424 */ 0x5C01,0x5C66, /* Array index: 0x1424 */ 0x5C04,0x5E52, /* Array index: 0x1424 */ 0x5C16,0x7453, /* Array index: 0x1424 */ 0x5C19,0x5F46, /* Array index: 0x1424 */ 0x5C24,0x6956, /* Array index: 0x1424 */ 0x5C28,0x5B2B, /* Array index: 0x1424 */ 0x5C31,0x7626, /* Array index: 0x1424 */ 0x5C45,0x4B5C, /* Array index: 0x1424 */ 0x5C46,0x4C7A, /* Array index: 0x1424 */ 0x5C48,0x4F5D, /* Array index: 0x1424 */ 0x5C4B,0x6829, /* Array index: 0x1424 */ 0x5C4D,0x633B, /* Array index: 0x1424 */ 0x5C4E,0x633A, /* Array index: 0x1424 */ 0x5C51,0x605A, /* Array index: 0x1424 */ 0x5C55,0x6E77, /* Array index: 0x1424 */ 0x5C5B,0x5C33, /* Array index: 0x1424 */ 0x5C60,0x5375, /* Array index: 0x1424 */ 0x5C62,0x5726, /* Array index: 0x1424 */ 0x5C64,0x7635, /* Array index: 0x1424 */ 0x5C65,0x575B, /* Array index: 0x1424 */ 0x5C6C,0x6155, /* Array index: 0x1424 */ 0x5C6F,0x546A, /* Array index: 0x1424 */ 0x5C71,0x5F23, /* Array index: 0x1424 */ 0x5C79,0x7D5F, /* Array index: 0x1424 */ 0x5C90,0x5077, /* Array index: 0x1424 */ 0x5C91,0x6D54, /* Array index: 0x1424 */ 0x5CA1,0x4B2A, /* Array index: 0x1424 */ 0x5CA9,0x645B, /* Array index: 0x1424 */ 0x5CAB,0x617B, /* Array index: 0x1424 */ 0x5CAC,0x4B22, /* Array index: 0x1424 */ 0x5CB1,0x5360, /* Array index: 0x1424 */ 0x5CB3,0x643F, /* Array index: 0x1424 */ 0x5CB5,0x7B40, /* Array index: 0x1424 */ 0x5CB7,0x5A3E, /* Array index: 0x1424 */ 0x5CB8,0x644D, /* Array index: 0x1424 */ 0x5CBA,0x5639, /* Array index: 0x1424 */ 0x5CBE,0x6F40, /* Array index: 0x1424 */ 0x5CC0,0x617C, /* Array index: 0x1424 */ 0x5CD9,0x7639, /* Array index: 0x1424 */ 0x5CE0,0x5F47, /* Array index: 0x1424 */ 0x5CE8,0x6431, /* Array index: 0x1424 */ 0x5CEF,0x5C67, /* Array index: 0x1424 */ 0x5CF0,0x5C68, /* Array index: 0x1424 */ 0x5CF4,0x7A56, /* Array index: 0x1424 */ 0x5CF6,0x5376, /* Array index: 0x1424 */ 0x5CFB,0x715A, /* Array index: 0x1424 */ 0x5CFD,0x7A72, /* Array index: 0x1424 */ 0x5D07,0x627D, /* Array index: 0x1424 */ 0x5D0D,0x554F, /* Array index: 0x1424 */ 0x5D0E,0x5078, /* Array index: 0x1424 */ 0x5D11,0x4D5F, /* Array index: 0x1424 */ 0x5D14,0x754B, /* Array index: 0x1424 */ 0x5D16,0x6470, /* Array index: 0x1424 */ 0x5D17,0x4B2B, /* Array index: 0x1424 */ 0x5D19,0x5744, /* Array index: 0x1424 */ 0x5D27,0x627E, /* Array index: 0x1424 */ 0x5D29,0x5D5A, /* Array index: 0x1424 */ 0x5D4B,0x5A2E, /* Array index: 0x1424 */ 0x5D4C,0x4A6E, /* Array index: 0x1424 */ 0x5D50,0x5539, /* Array index: 0x1424 */ 0x5D69,0x6321, /* Array index: 0x1424 */ 0x5D6C,0x6863, /* Array index: 0x1424 */ 0x5D6F,0x732B, /* Array index: 0x1424 */ 0x5D87,0x4F29, /* Array index: 0x1424 */ 0x5D8B,0x5377, /* Array index: 0x1424 */ 0x5D9D,0x5471, /* Array index: 0x1424 */ 0x5DA0,0x4E64, /* Array index: 0x1424 */ 0x5DA2,0x6872, /* Array index: 0x1424 */ 0x5DAA,0x6575, /* Array index: 0x1424 */ 0x5DB8,0x672E, /* Array index: 0x1424 */ 0x5DBA,0x563A, /* Array index: 0x1424 */ 0x5DBC,0x5F6C, /* Array index: 0x1424 */ 0x5DBD,0x6440, /* Array index: 0x1424 */ 0x5DCD,0x6864, /* Array index: 0x1424 */ 0x5DD2,0x5835, /* Array index: 0x1424 */ 0x5DD6,0x645C, /* Array index: 0x1424 */ 0x5DDD,0x7439, /* Array index: 0x1424 */ 0x5DDE,0x7136, /* Array index: 0x1424 */ 0x5DEB,0x5963, /* Array index: 0x1424 */ 0x5DEE,0x732C, /* Array index: 0x1424 */ 0x5DF7,0x7975, /* Array index: 0x1424 */ 0x5DFD,0x615E, /* Array index: 0x1424 */ 0x5DFE,0x4B6E, /* Array index: 0x1424 */ 0x5E02,0x633C, /* Array index: 0x1424 */ 0x5E03,0x7856, /* Array index: 0x1424 */ 0x5E06,0x5B6E, /* Array index: 0x1424 */ 0x5E0C,0x7D71, /* Array index: 0x1424 */ 0x5E11,0x7736, /* Array index: 0x1424 */ 0x5E16,0x745E, /* Array index: 0x1424 */ 0x5E19,0x726D, /* Array index: 0x1424 */ 0x5E1B,0x5B59, /* Array index: 0x1424 */ 0x5E1D,0x7028, /* Array index: 0x1424 */ 0x5E25,0x617D, /* Array index: 0x1424 */ 0x5E2B,0x5E54, /* Array index: 0x1424 */ 0x5E2D,0x602C, /* Array index: 0x1424 */ 0x5E33,0x6D63, /* Array index: 0x1424 */ 0x5E36,0x5361, /* Array index: 0x1424 */ 0x5E38,0x5F48, /* Array index: 0x1424 */ 0x5E3D,0x5936, /* Array index: 0x1424 */ 0x5E3F,0x7D2C, /* Array index: 0x1424 */ 0x5E40,0x6F53, /* Array index: 0x1424 */ 0x5E44,0x6441, /* Array index: 0x1424 */ 0x5E45,0x786B, /* Array index: 0x1424 */ 0x5E47,0x5B2C, /* Array index: 0x1424 */ 0x5E4C,0x7C46, /* Array index: 0x1424 */ 0x5E55,0x582D, /* Array index: 0x1424 */ 0x5E84,0x6D64, /* Array index: 0x1424 */ 0x5E87,0x5D67, /* Array index: 0x1424 */ 0x5E8A,0x5F49, /* Array index: 0x1424 */ 0x5E8F,0x5F6D, /* Array index: 0x1424 */ 0x5E95,0x6E3C, /* Array index: 0x1424 */ 0x5E97,0x6F41, /* Array index: 0x1424 */ 0x5E9A,0x4C52, /* Array index: 0x1424 */ 0x5E9C,0x5D24, /* Array index: 0x1424 */ 0x5EA0,0x5F4A, /* Array index: 0x1424 */ 0x5EA6,0x5378, /* Array index: 0x1424 */ 0x5EA7,0x7128, /* Array index: 0x1424 */ 0x5EAB,0x4D37, /* Array index: 0x1424 */ 0x5EAD,0x6F54, /* Array index: 0x1424 */ 0x5EBE,0x6A6C, /* Array index: 0x1424 */ 0x5EC2,0x5F4B, /* Array index: 0x1424 */ 0x5ED0,0x4F2A, /* Array index: 0x1424 */ 0x5ED3,0x4E29, /* Array index: 0x1424 */ 0x5ED6,0x5678, /* Array index: 0x1424 */ 0x5EDA,0x7137, /* Array index: 0x1424 */ 0x5EDB,0x6E78, /* Array index: 0x1424 */ 0x5EEC,0x5566, /* Array index: 0x1424 */ 0x5EF3,0x7466, /* Array index: 0x1424 */ 0x5EF6,0x6645, /* Array index: 0x1424 */ 0x5EF7,0x6F55, /* Array index: 0x1424 */ 0x5EFA,0x4B6F, /* Array index: 0x1424 */ 0x5EFB,0x7C5F, /* Array index: 0x1424 */ 0x5F01,0x5C27, /* Array index: 0x1424 */ 0x5F04,0x5667, /* Array index: 0x1424 */ 0x5F0A,0x7849, /* Array index: 0x1424 */ 0x5F0F,0x6352, /* Array index: 0x1424 */ 0x5F1B,0x6C2C, /* Array index: 0x1424 */ 0x5F1F,0x7029, /* Array index: 0x1424 */ 0x5F26,0x7A57, /* Array index: 0x1424 */ 0x5F27,0x7B41, /* Array index: 0x1424 */ 0x5F29,0x5240, /* Array index: 0x1424 */ 0x5F31,0x6530, /* Array index: 0x1424 */ 0x5F35,0x6D65, /* Array index: 0x1424 */ 0x5F3A,0x4B2D, /* Array index: 0x1424 */ 0x5F3C,0x7930, /* Array index: 0x1424 */ 0x5F48,0x7725, /* Array index: 0x1424 */ 0x5F4A,0x4B2E, /* Array index: 0x1424 */ 0x5F4C,0x5A2F, /* Array index: 0x1424 */ 0x5F4E,0x5836, /* Array index: 0x1424 */ 0x5F56,0x5327, /* Array index: 0x1424 */ 0x5F57,0x7B32, /* Array index: 0x1424 */ 0x5F59,0x7D44, /* Array index: 0x1424 */ 0x5F5B,0x6C2D, /* Array index: 0x1424 */ 0x5F62,0x7B21, /* Array index: 0x1424 */ 0x5F77,0x5B2D, /* Array index: 0x1424 */ 0x5F79,0x6635, /* Array index: 0x1424 */ 0x5F7C,0x7928, /* Array index: 0x1424 */ 0x5F85,0x5362, /* Array index: 0x1424 */ 0x5F87,0x625F, /* Array index: 0x1424 */ 0x5F9E,0x7074, /* Array index: 0x1424 */ 0x5FA0,0x5550, /* Array index: 0x1424 */ 0x5FA1,0x6559, /* Array index: 0x1424 */ 0x5FAE,0x5A30, /* Array index: 0x1424 */ 0x5FB5,0x7323, /* Array index: 0x1424 */ 0x5FB7,0x536C, /* Array index: 0x1424 */ 0x5FB9,0x744B, /* Array index: 0x1424 */ 0x5FBD,0x7D45, /* Array index: 0x1424 */ 0x5FC3,0x637D, /* Array index: 0x1424 */ 0x5FC5,0x7931, /* Array index: 0x1424 */ 0x5FCC,0x507B, /* Array index: 0x1424 */ 0x5FCD,0x6C5B, /* Array index: 0x1424 */ 0x5FE0,0x7577, /* Array index: 0x1424 */ 0x5FEB,0x7661, /* Array index: 0x1424 */ 0x5FF5,0x5237, /* Array index: 0x1424 */ 0x5FFD,0x7B6C, /* Array index: 0x1424 */ 0x5FFF,0x5D48, /* Array index: 0x1424 */ 0x600F,0x6468, /* Array index: 0x1424 */ 0x6012,0x5241, /* Array index: 0x1424 */ 0x6016,0x7857, /* Array index: 0x1424 */ 0x601C,0x563B, /* Array index: 0x1424 */ 0x601D,0x5E56, /* Array index: 0x1424 */ 0x6020,0x773D, /* Array index: 0x1424 */ 0x6021,0x6C2E, /* Array index: 0x1424 */ 0x6025,0x5061, /* Array index: 0x1424 */ 0x6027,0x6075, /* Array index: 0x1424 */ 0x6028,0x6A33, /* Array index: 0x1424 */ 0x602A,0x4E56, /* Array index: 0x1424 */ 0x602F,0x4C25, /* Array index: 0x1424 */ 0x604D,0x7C48, /* Array index: 0x1424 */ 0x6050,0x4D70, /* Array index: 0x1424 */ 0x6052,0x7976, /* Array index: 0x1424 */ 0x6055,0x5F70, /* Array index: 0x1424 */ 0x6059,0x653F, /* Array index: 0x1424 */ 0x605D,0x4E3F, /* Array index: 0x1424 */ 0x6085,0x666D, /* Array index: 0x1424 */ 0x6089,0x637A, /* Array index: 0x1424 */ 0x608C,0x702A, /* Array index: 0x1424 */ 0x608D,0x7950, /* Array index: 0x1424 */ 0x6094,0x7C62, /* Array index: 0x1424 */ 0x6096,0x7827, /* Array index: 0x1424 */ 0x609A,0x6165, /* Array index: 0x1424 */ 0x609B,0x6E79, /* Array index: 0x1424 */ 0x609F,0x6776, /* Array index: 0x1424 */ 0x60A0,0x6A6D, /* Array index: 0x1424 */ 0x60A3,0x7C34, /* Array index: 0x1424 */ 0x60A4,0x7542, /* Array index: 0x1424 */ 0x60A7,0x575C, /* Array index: 0x1424 */ 0x60BC,0x537A, /* Array index: 0x1424 */ 0x60BD,0x7424, /* Array index: 0x1424 */ 0x60C5,0x6F57, /* Array index: 0x1424 */ 0x60C7,0x5443, /* Array index: 0x1424 */ 0x60D1,0x7B63, /* Array index: 0x1424 */ 0x60DA,0x7B6D, /* Array index: 0x1424 */ 0x60DC,0x602D, /* Array index: 0x1424 */ 0x60F0,0x7667, /* Array index: 0x1424 */ 0x60F1,0x525D, /* Array index: 0x1424 */ 0x60F3,0x5F4C, /* Array index: 0x1424 */ 0x60F6,0x7C49, /* Array index: 0x1424 */ 0x6101,0x617E, /* Array index: 0x1424 */ 0x6106,0x4B70, /* Array index: 0x1424 */ 0x6108,0x6A6F, /* Array index: 0x1424 */ 0x6109,0x6A70, /* Array index: 0x1424 */ 0x6115,0x6443, /* Array index: 0x1424 */ 0x611A,0x6957, /* Array index: 0x1424 */ 0x611B,0x6471, /* Array index: 0x1424 */ 0x611F,0x4A6F, /* Array index: 0x1424 */ 0x6127,0x4E57, /* Array index: 0x1424 */ 0x6130,0x7C4A, /* Array index: 0x1424 */ 0x6134,0x7361, /* Array index: 0x1424 */ 0x6137,0x4B44, /* Array index: 0x1424 */ 0x613C,0x6365, /* Array index: 0x1424 */ 0x613E,0x4B45, /* Array index: 0x1424 */ 0x613F,0x6A34, /* Array index: 0x1424 */ 0x6142,0x693D, /* Array index: 0x1424 */ 0x6144,0x5749, /* Array index: 0x1424 */ 0x6153,0x7874, /* Array index: 0x1424 */ 0x6155,0x5937, /* Array index: 0x1424 */ 0x6158,0x7353, /* Array index: 0x1424 */ 0x6159,0x7354, /* Array index: 0x1424 */ 0x615D,0x7764, /* Array index: 0x1424 */ 0x615F,0x7751, /* Array index: 0x1424 */ 0x616B,0x7076, /* Array index: 0x1424 */ 0x616E,0x5567, /* Array index: 0x1424 */ 0x6170,0x6A50, /* Array index: 0x1424 */ 0x6176,0x4C54, /* Array index: 0x1424 */ 0x6177,0x4B2F, /* Array index: 0x1424 */ 0x617D,0x742A, /* Array index: 0x1424 */ 0x617E,0x692F, /* Array index: 0x1424 */ 0x6181,0x7543, /* Array index: 0x1424 */ 0x6182,0x6958, /* Array index: 0x1424 */ 0x618A,0x5D69, /* Array index: 0x1424 */ 0x618E,0x7173, /* Array index: 0x1424 */ 0x6190,0x557B, /* Array index: 0x1424 */ 0x6191,0x5E3B, /* Array index: 0x1424 */ 0x6194,0x747B, /* Array index: 0x1424 */ 0x61A4,0x5D49, /* Array index: 0x1424 */ 0x61A7,0x5453, /* Array index: 0x1424 */ 0x61A9,0x4C28, /* Array index: 0x1424 */ 0x61AB,0x5A41, /* Array index: 0x1424 */ 0x61AC,0x4C55, /* Array index: 0x1424 */ 0x61AE,0x5964, /* Array index: 0x1424 */ 0x61B2,0x7A4A, /* Array index: 0x1424 */ 0x61B6,0x6563, /* Array index: 0x1424 */ 0x61BA,0x533C, /* Array index: 0x1424 */ 0x61BE,0x4A70, /* Array index: 0x1424 */ 0x61C3,0x5044, /* Array index: 0x1424 */ 0x61E6,0x5157, /* Array index: 0x1424 */ 0x61F2,0x7324, /* Array index: 0x1424 */ 0x6207,0x5354, /* Array index: 0x1424 */ 0x6208,0x4D7C, /* Array index: 0x1424 */ 0x6216,0x7B64, /* Array index: 0x1424 */ 0x621A,0x742B, /* Array index: 0x1424 */ 0x621F,0x503D, /* Array index: 0x1424 */ 0x6221,0x4A71, /* Array index: 0x1424 */ 0x622A,0x6F38, /* Array index: 0x1424 */ 0x622E,0x5740, /* Array index: 0x1424 */ 0x6230,0x6E7A, /* Array index: 0x1424 */ 0x6231,0x7D74, /* Array index: 0x1424 */ 0x6234,0x5363, /* Array index: 0x1424 */ 0x6236,0x7B42, /* Array index: 0x1424 */ 0x6253,0x7668, /* Array index: 0x1424 */ 0x6258,0x7675, /* Array index: 0x1424 */ 0x626E,0x5D4A, /* Array index: 0x1424 */ 0x6271,0x5062, /* Array index: 0x1424 */ 0x6276,0x5D26, /* Array index: 0x1424 */ 0x6279,0x5D6B, /* Array index: 0x1424 */ 0x627C,0x6479, /* Array index: 0x1424 */ 0x627F,0x632F, /* Array index: 0x1424 */ 0x6280,0x507C, /* Array index: 0x1424 */ 0x6284,0x747C, /* Array index: 0x1424 */ 0x6289,0x4C3C, /* Array index: 0x1424 */ 0x628A,0x776A, /* Array index: 0x1424 */ 0x6291,0x6564, /* Array index: 0x1424 */ 0x6292,0x5F71, /* Array index: 0x1424 */ 0x6295,0x7761, /* Array index: 0x1424 */ 0x6297,0x7977, /* Array index: 0x1424 */ 0x6298,0x6F39, /* Array index: 0x1424 */ 0x629B,0x7858, /* Array index: 0x1424 */ 0x62AB,0x7929, /* Array index: 0x1424 */ 0x62B1,0x7859, /* Array index: 0x1424 */ 0x62B5,0x6E3D, /* Array index: 0x1424 */ 0x62B9,0x5846, /* Array index: 0x1424 */ 0x62BC,0x6463, /* Array index: 0x1424 */ 0x62BD,0x754E, /* Array index: 0x1424 */ 0x62C2,0x5D59, /* Array index: 0x1424 */ 0x62F7,0x4D38, /* Array index: 0x1424 */ 0x62FE,0x6326, /* Array index: 0x1424 */ 0x62FF,0x515A, /* Array index: 0x1424 */ 0x6301,0x7225, /* Array index: 0x1424 */ 0x6307,0x7226, /* Array index: 0x1424 */ 0x6309,0x644E, /* Array index: 0x1424 */ 0x6311,0x537B, /* Array index: 0x1424 */ 0x632B,0x7129, /* Array index: 0x1424 */ 0x632F,0x7249, /* Array index: 0x1424 */ 0x6349,0x7335, /* Array index: 0x1424 */ 0x634C,0x7824, /* Array index: 0x1424 */ 0x634F,0x5173, /* Array index: 0x1424 */ 0x6350,0x6648, /* Array index: 0x1424 */ 0x6355,0x785A, /* Array index: 0x1424 */ 0x6367,0x5C69, /* Array index: 0x1424 */ 0x6368,0x5E57, /* Array index: 0x1424 */ 0x636E,0x4B5F, /* Array index: 0x1424 */ 0x6372,0x4F6C, /* Array index: 0x1424 */ 0x6377,0x745F, /* Array index: 0x1424 */ 0x637A,0x5174, /* Array index: 0x1424 */ 0x637B,0x523A, /* Array index: 0x1424 */ 0x637F,0x5F72, /* Array index: 0x1424 */ 0x6383,0x6137, /* Array index: 0x1424 */ 0x6388,0x6223, /* Array index: 0x1424 */ 0x6389,0x537C, /* Array index: 0x1424 */ 0x638C,0x6D66, /* Array index: 0x1424 */ 0x6392,0x5B49, /* Array index: 0x1424 */ 0x6396,0x647A, /* Array index: 0x1424 */ 0x6398,0x4F5E, /* Array index: 0x1424 */ 0x639B,0x4E50, /* Array index: 0x1424 */ 0x63C0,0x4A51, /* Array index: 0x1424 */ 0x63C4,0x6A71, /* Array index: 0x1424 */ 0x63C6,0x5026, /* Array index: 0x1424 */ 0x63CF,0x595A, /* Array index: 0x1424 */ 0x63D0,0x702B, /* Array index: 0x1424 */ 0x63D6,0x6B67, /* Array index: 0x1424 */ 0x63DA,0x6540, /* Array index: 0x1424 */ 0x63DB,0x7C35, /* Array index: 0x1424 */ 0x63E1,0x6444, /* Array index: 0x1424 */ 0x63ED,0x4C29, /* Array index: 0x1424 */ 0x63EE,0x7D46, /* Array index: 0x1424 */ 0x63F4,0x6A35, /* Array index: 0x1424 */ 0x63F6,0x652A, /* Array index: 0x1424 */ 0x63F7,0x5F3A, /* Array index: 0x1424 */ 0x640D,0x615F, /* Array index: 0x1424 */ 0x640F,0x5A51, /* Array index: 0x1424 */ 0x6414,0x6138, /* Array index: 0x1424 */ 0x6416,0x6874, /* Array index: 0x1424 */ 0x6417,0x537D, /* Array index: 0x1424 */ 0x641C,0x6224, /* Array index: 0x1424 */ 0x6422,0x724A, /* Array index: 0x1424 */ 0x642C,0x5A66, /* Array index: 0x1424 */ 0x642D,0x7733, /* Array index: 0x1424 */ 0x643A,0x7D4D, /* Array index: 0x1424 */ 0x643E,0x7336, /* Array index: 0x1424 */ 0x6458,0x6E57, /* Array index: 0x1424 */ 0x6460,0x7544, /* Array index: 0x1424 */ 0x6469,0x5824, /* Array index: 0x1424 */ 0x646F,0x7227, /* Array index: 0x1424 */ 0x6488,0x564E, /* Array index: 0x1424 */ 0x649A,0x5235, /* Array index: 0x1424 */ 0x649E,0x5355, /* Array index: 0x1424 */ 0x64A4,0x744C, /* Array index: 0x1424 */ 0x64A5,0x5A7C, /* Array index: 0x1424 */ 0x64AB,0x5968, /* Array index: 0x1424 */ 0x64AD,0x776B, /* Array index: 0x1424 */ 0x64AE,0x7549, /* Array index: 0x1424 */ 0x64B0,0x733C, /* Array index: 0x1424 */ 0x64B2,0x5A52, /* Array index: 0x1424 */ 0x64BB,0x5335, /* Array index: 0x1424 */ 0x64C1,0x6836, /* Array index: 0x1424 */ 0x64C4,0x564F, /* Array index: 0x1424 */ 0x64C5,0x743A, /* Array index: 0x1424 */ 0x64C7,0x7749, /* Array index: 0x1424 */ 0x64CA,0x4C2A, /* Array index: 0x1424 */ 0x64CD,0x7043, /* Array index: 0x1424 */ 0x64CE,0x4C56, /* Array index: 0x1424 */ 0x64D2,0x5053, /* Array index: 0x1424 */ 0x64D4,0x533D, /* Array index: 0x1424 */ 0x64D8,0x5B7B, /* Array index: 0x1424 */ 0x64DA,0x4B60, /* Array index: 0x1424 */ 0x64EC,0x6B74, /* Array index: 0x1424 */ 0x64F2,0x742D, /* Array index: 0x1424 */ 0x64F4,0x7C2A, /* Array index: 0x1424 */ 0x64FA,0x776C, /* Array index: 0x1424 */ 0x64FE,0x6876, /* Array index: 0x1424 */ 0x6500,0x5A67, /* Array index: 0x1424 */ 0x6504,0x774C, /* Array index: 0x1424 */ 0x6518,0x6541, /* Array index: 0x1424 */ 0x651D,0x606E, /* Array index: 0x1424 */ 0x6523,0x557D, /* Array index: 0x1424 */ 0x652F,0x7228, /* Array index: 0x1424 */ 0x6545,0x4D3A, /* Array index: 0x1424 */ 0x6548,0x7C79, /* Array index: 0x1424 */ 0x6556,0x6779, /* Array index: 0x1424 */ 0x6557,0x7828, /* Array index: 0x1424 */ 0x655E,0x7362, /* Array index: 0x1424 */ 0x6562,0x4A72, /* Array index: 0x1424 */ 0x6563,0x5F24, /* Array index: 0x1424 */ 0x6566,0x5444, /* Array index: 0x1424 */ 0x656C,0x4C57, /* Array index: 0x1424 */ 0x656D,0x6542, /* Array index: 0x1424 */ 0x6572,0x4D3B, /* Array index: 0x1424 */ 0x657E,0x6040, /* Array index: 0x1424 */ 0x6582,0x5630, /* Array index: 0x1424 */ 0x6583,0x784A, /* Array index: 0x1424 */ 0x6585,0x7C7A, /* Array index: 0x1424 */ 0x6587,0x597E, /* Array index: 0x1424 */ 0x658C,0x5E30, /* Array index: 0x1424 */ 0x6590,0x5D6C, /* Array index: 0x1424 */ 0x6591,0x5A68, /* Array index: 0x1424 */ 0x6597,0x5460, /* Array index: 0x1424 */ 0x6599,0x5679, /* Array index: 0x1424 */ 0x659B,0x4D57, /* Array index: 0x1424 */ 0x659C,0x5E58, /* Array index: 0x1424 */ 0x659F,0x7278, /* Array index: 0x1424 */ 0x65A1,0x6456, /* Array index: 0x1424 */ 0x65A4,0x5045, /* Array index: 0x1424 */ 0x65A5,0x742E, /* Array index: 0x1424 */ 0x65A7,0x5D28, /* Array index: 0x1424 */ 0x65AB,0x6D45, /* Array index: 0x1424 */ 0x65AC,0x7356, /* Array index: 0x1424 */ 0x65AF,0x5E59, /* Array index: 0x1424 */ 0x65B0,0x6366, /* Array index: 0x1424 */ 0x65B7,0x5328, /* Array index: 0x1424 */ 0x65B9,0x5B30, /* Array index: 0x1424 */ 0x65BC,0x655A, /* Array index: 0x1424 */ 0x65BD,0x633F, /* Array index: 0x1424 */ 0x65C1,0x5B31, /* Array index: 0x1424 */ 0x65C5,0x5569, /* Array index: 0x1424 */ 0x65CB,0x6041, /* Array index: 0x1424 */ 0x65CC,0x6F5B, /* Array index: 0x1424 */ 0x65CF,0x7069, /* Array index: 0x1424 */ 0x65D2,0x5732, /* Array index: 0x1424 */ 0x65D7,0x507D, /* Array index: 0x1424 */ 0x65E0,0x5969, /* Array index: 0x1424 */ 0x65E3,0x507E, /* Array index: 0x1424 */ 0x65F1,0x7951, /* Array index: 0x1424 */ 0x65F4,0x6959, /* Array index: 0x1424 */ 0x6625,0x7570, /* Array index: 0x1424 */ 0x6627,0x585C, /* Array index: 0x1424 */ 0x6628,0x6D46, /* Array index: 0x1424 */ 0x6634,0x595B, /* Array index: 0x1424 */ 0x6636,0x7364, /* Array index: 0x1424 */ 0x663A,0x5C36, /* Array index: 0x1424 */ 0x663B,0x6469, /* Array index: 0x1424 */ 0x6649,0x724B, /* Array index: 0x1424 */ 0x664B,0x724C, /* Array index: 0x1424 */ 0x664F,0x644F, /* Array index: 0x1424 */ 0x6659,0x715B, /* Array index: 0x1424 */ 0x6684,0x7D3E, /* Array index: 0x1424 */ 0x668E,0x6732, /* Array index: 0x1424 */ 0x6690,0x6A51, /* Array index: 0x1424 */ 0x6691,0x5F74, /* Array index: 0x1424 */ 0x669D,0x5926, /* Array index: 0x1424 */ 0x66A0,0x4D3C, /* Array index: 0x1424 */ 0x66A2,0x7365, /* Array index: 0x1424 */ 0x66AB,0x6D55, /* Array index: 0x1424 */ 0x66AE,0x593A, /* Array index: 0x1424 */ 0x66B9,0x6067, /* Array index: 0x1424 */ 0x66BB,0x4C59, /* Array index: 0x1424 */ 0x66BE,0x5446, /* Array index: 0x1424 */ 0x66C4,0x6725, /* Array index: 0x1424 */ 0x66C6,0x5575, /* Array index: 0x1424 */ 0x66C7,0x533E, /* Array index: 0x1424 */ 0x66C9,0x7C7B, /* Array index: 0x1424 */ 0x66D6,0x6472, /* Array index: 0x1424 */ 0x66D9,0x5F75, /* Array index: 0x1424 */ 0x66DC,0x6878, /* Array index: 0x1424 */ 0x66DD,0x786D, /* Array index: 0x1424 */ 0x66E0,0x4E47, /* Array index: 0x1424 */ 0x66E6,0x7D76, /* Array index: 0x1424 */ 0x6703,0x7C65, /* Array index: 0x1424 */ 0x6708,0x6A45, /* Array index: 0x1424 */ 0x6709,0x6A73, /* Array index: 0x1424 */ 0x670B,0x5D5B, /* Array index: 0x1424 */ 0x670D,0x5C57, /* Array index: 0x1424 */ 0x6714,0x5E7D, /* Array index: 0x1424 */ 0x6715,0x7279, /* Array index: 0x1424 */ 0x6717,0x5547, /* Array index: 0x1424 */ 0x6731,0x7139, /* Array index: 0x1424 */ 0x6734,0x5A53, /* Array index: 0x1424 */ 0x6736,0x766A, /* Array index: 0x1424 */ 0x673A,0x4F75, /* Array index: 0x1424 */ 0x673D,0x7D2E, /* Array index: 0x1424 */ 0x6746,0x4A52, /* Array index: 0x1424 */ 0x6749,0x5F34, /* Array index: 0x1424 */ 0x6756,0x6D68, /* Array index: 0x1424 */ 0x675C,0x5461, /* Array index: 0x1424 */ 0x675E,0x5123, /* Array index: 0x1424 */ 0x675F,0x6156, /* Array index: 0x1424 */ 0x677B,0x526E, /* Array index: 0x1424 */ 0x677E,0x6166, /* Array index: 0x1424 */ 0x677F,0x7779, /* Array index: 0x1424 */ 0x6787,0x5D6D, /* Array index: 0x1424 */ 0x6789,0x685B, /* Array index: 0x1424 */ 0x678B,0x5B33, /* Array index: 0x1424 */ 0x678F,0x5177, /* Array index: 0x1424 */ 0x6790,0x6030, /* Array index: 0x1424 */ 0x6793,0x5462, /* Array index: 0x1424 */ 0x6795,0x7657, /* Array index: 0x1424 */ 0x6797,0x5779, /* Array index: 0x1424 */ 0x679A,0x585D, /* Array index: 0x1424 */ 0x679C,0x4D7D, /* Array index: 0x1424 */ 0x679D,0x722B, /* Array index: 0x1424 */ 0x67AF,0x4D3D, /* Array index: 0x1424 */ 0x67B0,0x7842, /* Array index: 0x1424 */ 0x67B3,0x722C, /* Array index: 0x1424 */ 0x67BE,0x6342, /* Array index: 0x1424 */ 0x67C4,0x5C37, /* Array index: 0x1424 */ 0x67DA,0x6A76, /* Array index: 0x1424 */ 0x67DD,0x7679, /* Array index: 0x1424 */ 0x67E9,0x4F2F, /* Array index: 0x1424 */ 0x67EC,0x4A53, /* Array index: 0x1424 */ 0x67FB,0x5E5B, /* Array index: 0x1424 */ 0x67FE,0x6F5E, /* Array index: 0x1424 */ 0x6812,0x6263, /* Array index: 0x1424 */ 0x6813,0x6E7B, /* Array index: 0x1424 */ 0x6816,0x5F77, /* Array index: 0x1424 */ 0x6817,0x574A, /* Array index: 0x1424 */ 0x6821,0x4E68, /* Array index: 0x1424 */ 0x6822,0x5B5B, /* Array index: 0x1424 */ 0x682A,0x713B, /* Array index: 0x1424 */ 0x682F,0x6971, /* Array index: 0x1424 */ 0x6838,0x7A37, /* Array index: 0x1424 */ 0x6839,0x5046, /* Array index: 0x1424 */ 0x6848,0x6450, /* Array index: 0x1424 */ 0x684E,0x726E, /* Array index: 0x1424 */ 0x686D,0x724D, /* Array index: 0x1424 */ 0x6876,0x7752, /* Array index: 0x1424 */ 0x687F,0x4A54, /* Array index: 0x1424 */ 0x6881,0x5559, /* Array index: 0x1424 */ 0x6885,0x585E, /* Array index: 0x1424 */ 0x688F,0x4D59, /* Array index: 0x1424 */ 0x6893,0x6E29, /* Array index: 0x1424 */ 0x6894,0x763C, /* Array index: 0x1424 */ 0x6897,0x4C5B, /* Array index: 0x1424 */ 0x689D,0x7049, /* Array index: 0x1424 */ 0x689F,0x7C7C, /* Array index: 0x1424 */ 0x68A1,0x6849, /* Array index: 0x1424 */ 0x68A2,0x747E, /* Array index: 0x1424 */ 0x68A7,0x677C, /* Array index: 0x1424 */ 0x68A8,0x575E, /* Array index: 0x1424 */ 0x68C4,0x5125, /* Array index: 0x1424 */ 0x68C5,0x5C38, /* Array index: 0x1424 */ 0x68C9,0x5876, /* Array index: 0x1424 */ 0x68CB,0x5124, /* Array index: 0x1424 */ 0x68CD,0x4D62, /* Array index: 0x1424 */ 0x68D2,0x5C6A, /* Array index: 0x1424 */ 0x68D5,0x7077, /* Array index: 0x1424 */ 0x68D7,0x704A, /* Array index: 0x1424 */ 0x68D8,0x503E, /* Array index: 0x1424 */ 0x68DA,0x5D5C, /* Array index: 0x1424 */ 0x68DF,0x5456, /* Array index: 0x1424 */ 0x68E0,0x5356, /* Array index: 0x1424 */ 0x68E7,0x6D50, /* Array index: 0x1424 */ 0x68E8,0x4D21, /* Array index: 0x1424 */ 0x68EE,0x5F35, /* Array index: 0x1424 */ 0x68F2,0x5F78, /* Array index: 0x1424 */ 0x68F9,0x5421, /* Array index: 0x1424 */ 0x68FA,0x4E32, /* Array index: 0x1424 */ 0x6900,0x684A, /* Array index: 0x1424 */ 0x6905,0x6B75, /* Array index: 0x1424 */ 0x690D,0x6355, /* Array index: 0x1424 */ 0x690E,0x7550, /* Array index: 0x1424 */ 0x6912,0x7521, /* Array index: 0x1424 */ 0x6927,0x5927, /* Array index: 0x1424 */ 0x6930,0x652B, /* Array index: 0x1424 */ 0x693D,0x664B, /* Array index: 0x1424 */ 0x693F,0x7571, /* Array index: 0x1424 */ 0x694A,0x6545, /* Array index: 0x1424 */ 0x6968,0x6F5F, /* Array index: 0x1424 */ 0x6995,0x693E, /* Array index: 0x1424 */ 0x699B,0x724E, /* Array index: 0x1424 */ 0x699C,0x5B34, /* Array index: 0x1424 */ 0x69A5,0x7C4E, /* Array index: 0x1424 */ 0x69A7,0x5D6E, /* Array index: 0x1424 */ 0x69AE,0x6734, /* Array index: 0x1424 */ 0x69B4,0x5734, /* Array index: 0x1424 */ 0x69BB,0x7734, /* Array index: 0x1424 */ 0x69C1,0x4D3E, /* Array index: 0x1424 */ 0x69C3,0x5A69, /* Array index: 0x1424 */ 0x69D0,0x4E59, /* Array index: 0x1424 */ 0x69E8,0x4E2A, /* Array index: 0x1424 */ 0x69EA,0x4B48, /* Array index: 0x1424 */ 0x69FB,0x5027, /* Array index: 0x1424 */ 0x69FD,0x704B, /* Array index: 0x1424 */ 0x69FF,0x5047, /* Array index: 0x1424 */ 0x6A02,0x6445, /* Array index: 0x1424 */ 0x6A0A,0x5B60, /* Array index: 0x1424 */ 0x6A11,0x555A, /* Array index: 0x1424 */ 0x6A13,0x5727, /* Array index: 0x1424 */ 0x6A17,0x6E40, /* Array index: 0x1424 */ 0x6A19,0x7876, /* Array index: 0x1424 */ 0x6A1E,0x7552, /* Array index: 0x1424 */ 0x6A1F,0x6D69, /* Array index: 0x1424 */ 0x6A21,0x593C, /* Array index: 0x1424 */ 0x6A23,0x6546, /* Array index: 0x1424 */ 0x6A35,0x7523, /* Array index: 0x1424 */ 0x6A3D,0x715C, /* Array index: 0x1424 */ 0x6A44,0x4A74, /* Array index: 0x1424 */ 0x6A48,0x687A, /* Array index: 0x1424 */ 0x6A4B,0x4E69, /* Array index: 0x1424 */ 0x6A52,0x6978, /* Array index: 0x1424 */ 0x6A53,0x6265, /* Array index: 0x1424 */ 0x6A58,0x5039, /* Array index: 0x1424 */ 0x6A59,0x5472, /* Array index: 0x1424 */ 0x6A5F,0x5126, /* Array index: 0x1424 */ 0x6A61,0x5F4E, /* Array index: 0x1424 */ 0x6A6B,0x7C74, /* Array index: 0x1424 */ 0x6A80,0x532A, /* Array index: 0x1424 */ 0x6A84,0x4C2C, /* Array index: 0x1424 */ 0x6A89,0x6F60, /* Array index: 0x1424 */ 0x6A8D,0x6565, /* Array index: 0x1424 */ 0x6A8E,0x5055, /* Array index: 0x1424 */ 0x6A97,0x5B7C, /* Array index: 0x1424 */ 0x6A9C,0x7C66, /* Array index: 0x1424 */ 0x6AA2,0x4B7E, /* Array index: 0x1424 */ 0x6AA3,0x6D6A, /* Array index: 0x1424 */ 0x6AB3,0x5E31, /* Array index: 0x1424 */ 0x6ABB,0x7963, /* Array index: 0x1424 */ 0x6AC2,0x5422, /* Array index: 0x1424 */ 0x6AC3,0x4F76, /* Array index: 0x1424 */ 0x6AD3,0x5650, /* Array index: 0x1424 */ 0x6ADA,0x556A, /* Array index: 0x1424 */ 0x6ADB,0x716E, /* Array index: 0x1424 */ 0x6AF6,0x7A4B, /* Array index: 0x1424 */ 0x6AFB,0x6521, /* Array index: 0x1424 */ 0x6B04,0x5531, /* Array index: 0x1424 */ 0x6B0A,0x4F6D, /* Array index: 0x1424 */ 0x6B0C,0x6D6B, /* Array index: 0x1424 */ 0x6B12,0x5532, /* Array index: 0x1424 */ 0x6B16,0x553C, /* Array index: 0x1424 */ 0x6B20,0x7D62, /* Array index: 0x1424 */ 0x6B21,0x732D, /* Array index: 0x1424 */ 0x6B23,0x7D5B, /* Array index: 0x1424 */ 0x6B32,0x6930, /* Array index: 0x1424 */ 0x6B3A,0x5127, /* Array index: 0x1424 */ 0x6B3D,0x7D63, /* Array index: 0x1424 */ 0x6B3E,0x4E33, /* Array index: 0x1424 */ 0x6B46,0x7D64, /* Array index: 0x1424 */ 0x6B47,0x7A4E, /* Array index: 0x1424 */ 0x6B4C,0x4A30, /* Array index: 0x1424 */ 0x6B4E,0x7727, /* Array index: 0x1424 */ 0x6B50,0x4F31, /* Array index: 0x1424 */ 0x6B6A,0x6860, /* Array index: 0x1424 */ 0x6B72,0x6128, /* Array index: 0x1424 */ 0x6B77,0x5576, /* Array index: 0x1424 */ 0x6B78,0x4F7D, /* Array index: 0x1424 */ 0x6B7B,0x5E5D, /* Array index: 0x1424 */ 0x6B7F,0x5951, /* Array index: 0x1424 */ 0x6B83,0x646A, /* Array index: 0x1424 */ 0x6B84,0x724F, /* Array index: 0x1424 */ 0x6B86,0x773F, /* Array index: 0x1424 */ 0x6B89,0x6266, /* Array index: 0x1424 */ 0x6B8A,0x6228, /* Array index: 0x1424 */ 0x6B96,0x6356, /* Array index: 0x1424 */ 0x6B98,0x6D51, /* Array index: 0x1424 */ 0x6B9E,0x6979, /* Array index: 0x1424 */ 0x6BAE,0x5631, /* Array index: 0x1424 */ 0x6BAF,0x5E32, /* Array index: 0x1424 */ 0x6BB2,0x6068, /* Array index: 0x1424 */ 0x6BB5,0x532B, /* Array index: 0x1424 */ 0x6BB7,0x6B5C, /* Array index: 0x1424 */ 0x6BBA,0x5F2F, /* Array index: 0x1424 */ 0x6BBC,0x4A43, /* Array index: 0x1424 */ 0x6BBF,0x6E7C, /* Array index: 0x1424 */ 0x6BC1,0x7D43, /* Array index: 0x1424 */ 0x6BC5,0x6B76, /* Array index: 0x1424 */ 0x6BC6,0x4F32, /* Array index: 0x1424 */ 0x6BCB,0x596C, /* Array index: 0x1424 */ 0x6BCD,0x593D, /* Array index: 0x1424 */ 0x6BCF,0x585F, /* Array index: 0x1424 */ 0x6BDB,0x593E, /* Array index: 0x1424 */ 0x6BEB,0x7B46, /* Array index: 0x1424 */ 0x6BEC,0x4F33, /* Array index: 0x1424 */ 0x6C08,0x6E7D, /* Array index: 0x1424 */ 0x6C0F,0x642B, /* Array index: 0x1424 */ 0x6C11,0x5A45, /* Array index: 0x1424 */ 0x6C13,0x586C, /* Array index: 0x1424 */ 0x6C23,0x5128, /* Array index: 0x1424 */ 0x6C34,0x6229, /* Array index: 0x1424 */ 0x6C37,0x5E3C, /* Array index: 0x1424 */ 0x6C38,0x6735, /* Array index: 0x1424 */ 0x6C4E,0x5B71, /* Array index: 0x1424 */ 0x6C50,0x6031, /* Array index: 0x1424 */ 0x6C55,0x5F25, /* Array index: 0x1424 */ 0x6C57,0x7952, /* Array index: 0x1424 */ 0x6C5A,0x677D, /* Array index: 0x1424 */ 0x6C68,0x4D67, /* Array index: 0x1424 */ 0x6C6A,0x685C, /* Array index: 0x1424 */ 0x6C6D,0x6757, /* Array index: 0x1424 */ 0x6C70,0x7740, /* Array index: 0x1424 */ 0x6C72,0x5063, /* Array index: 0x1424 */ 0x6C76,0x5A21, /* Array index: 0x1424 */ 0x6C7A,0x4C3D, /* Array index: 0x1424 */ 0x6C8C,0x5447, /* Array index: 0x1424 */ 0x6CAB,0x5848, /* Array index: 0x1424 */ 0x6CAE,0x6E41, /* Array index: 0x1424 */ 0x6CB3,0x7941, /* Array index: 0x1424 */ 0x6CC9,0x743B, /* Array index: 0x1424 */ 0x6CCA,0x5A55, /* Array index: 0x1424 */ 0x6CCC,0x7932, /* Array index: 0x1424 */ 0x6CD3,0x7B72, /* Array index: 0x1424 */ 0x6CD5,0x5B76, /* Array index: 0x1424 */ 0x6CD7,0x5E5F, /* Array index: 0x1424 */ 0x6CDB,0x5B72, /* Array index: 0x1424 */ 0x6CE8,0x713C, /* Array index: 0x1424 */ 0x6CEB,0x7A5A, /* Array index: 0x1424 */ 0x6CF3,0x6736, /* Array index: 0x1424 */ 0x6D0B,0x6547, /* Array index: 0x1424 */ 0x6D0C,0x562C, /* Array index: 0x1424 */ 0x6D11,0x5C47, /* Array index: 0x1424 */ 0x6D17,0x6129, /* Array index: 0x1424 */ 0x6D19,0x622A, /* Array index: 0x1424 */ 0x6D1B,0x5526, /* Array index: 0x1424 */ 0x6D1E,0x5457, /* Array index: 0x1424 */ 0x6D25,0x7250, /* Array index: 0x1424 */ 0x6D27,0x6A7B, /* Array index: 0x1424 */ 0x6D29,0x605D, /* Array index: 0x1424 */ 0x6D2A,0x7B73, /* Array index: 0x1424 */ 0x6D32,0x713D, /* Array index: 0x1424 */ 0x6D41,0x5735, /* Array index: 0x1424 */ 0x6D59,0x6F3A, /* Array index: 0x1424 */ 0x6D5A,0x715D, /* Array index: 0x1424 */ 0x6D5C,0x5E33, /* Array index: 0x1424 */ 0x6D63,0x684B, /* Array index: 0x1424 */ 0x6D66,0x785D, /* Array index: 0x1424 */ 0x6D69,0x7B47, /* Array index: 0x1424 */ 0x6D6A,0x5548, /* Array index: 0x1424 */ 0x6D6C,0x575F, /* Array index: 0x1424 */ 0x6D6E,0x5D29, /* Array index: 0x1424 */ 0x6D74,0x6931, /* Array index: 0x1424 */ 0x6D7F,0x782A, /* Array index: 0x1424 */ 0x6D91,0x6157, /* Array index: 0x1424 */ 0x6D93,0x664F, /* Array index: 0x1424 */ 0x6D95,0x7471, /* Array index: 0x1424 */ 0x6DAF,0x6473, /* Array index: 0x1424 */ 0x6DB2,0x647B, /* Array index: 0x1424 */ 0x6DB5,0x7964, /* Array index: 0x1424 */ 0x6DC0,0x6F63, /* Array index: 0x1424 */ 0x6DCB,0x577A, /* Array index: 0x1424 */ 0x6DCF,0x7B48, /* Array index: 0x1424 */ 0x6DD1,0x6257, /* Array index: 0x1424 */ 0x6DDE,0x6167, /* Array index: 0x1424 */ 0x6DE1,0x533F, /* Array index: 0x1424 */ 0x6DE8,0x6F64, /* Array index: 0x1424 */ 0x6DEA,0x5745, /* Array index: 0x1424 */ 0x6DEB,0x6B62, /* Array index: 0x1424 */ 0x6DEE,0x7C67, /* Array index: 0x1424 */ 0x6DF1,0x6422, /* Array index: 0x1424 */ 0x6DF3,0x6268, /* Array index: 0x1424 */ 0x6E32,0x6042, /* Array index: 0x1424 */ 0x6E34,0x4A64, /* Array index: 0x1424 */ 0x6E36,0x6737, /* Array index: 0x1424 */ 0x6E38,0x6A7D, /* Array index: 0x1424 */ 0x6E43,0x5B4B, /* Array index: 0x1424 */ 0x6E44,0x5A35, /* Array index: 0x1424 */ 0x6E4A,0x713E, /* Array index: 0x1424 */ 0x6E4D,0x532C, /* Array index: 0x1424 */ 0x6E56,0x7B49, /* Array index: 0x1424 */ 0x6E58,0x5F4F, /* Array index: 0x1424 */ 0x6E67,0x6940, /* Array index: 0x1424 */ 0x6E6B,0x7553, /* Array index: 0x1424 */ 0x6E6E,0x6C5C, /* Array index: 0x1424 */ 0x6E6F,0x7737, /* Array index: 0x1424 */ 0x6E72,0x6A38, /* Array index: 0x1424 */ 0x6E73,0x5179, /* Array index: 0x1424 */ 0x6E7A,0x5C48, /* Array index: 0x1424 */ 0x6E90,0x6A39, /* Array index: 0x1424 */ 0x6E96,0x715E, /* Array index: 0x1424 */ 0x6E9C,0x5736, /* Array index: 0x1424 */ 0x6E9D,0x4F35, /* Array index: 0x1424 */ 0x6E9F,0x5928, /* Array index: 0x1424 */ 0x6EA2,0x6C6E, /* Array index: 0x1424 */ 0x6EA5,0x5D2A, /* Array index: 0x1424 */ 0x6EAA,0x4D22, /* Array index: 0x1424 */ 0x6EAB,0x682E, /* Array index: 0x1424 */ 0x6EAF,0x613D, /* Array index: 0x1424 */ 0x6EB1,0x7251, /* Array index: 0x1424 */ 0x6EB6,0x6941, /* Array index: 0x1424 */ 0x6EBA,0x527C, /* Array index: 0x1424 */ 0x6EC2,0x5B35, /* Array index: 0x1424 */ 0x6EC4,0x7367, /* Array index: 0x1424 */ 0x6EC5,0x587E, /* Array index: 0x1424 */ 0x6EC9,0x7C51, /* Array index: 0x1424 */ 0x6ECB,0x6D32, /* Array index: 0x1424 */ 0x6ECC,0x742F, /* Array index: 0x1424 */ 0x6ECE,0x7B23, /* Array index: 0x1424 */ 0x6ED1,0x7C41, /* Array index: 0x1424 */ 0x6ED3,0x6E2B, /* Array index: 0x1424 */ 0x6ED4,0x5425, /* Array index: 0x1424 */ 0x6EEF,0x7472, /* Array index: 0x1424 */ 0x6EF4,0x6E59, /* Array index: 0x1424 */ 0x6EF8,0x7B4A, /* Array index: 0x1424 */ 0x6F06,0x7654, /* Array index: 0x1424 */ 0x6F0F,0x5729, /* Array index: 0x1424 */ 0x6F11,0x4B49, /* Array index: 0x1424 */ 0x6F14,0x6651, /* Array index: 0x1424 */ 0x6F15,0x704C, /* Array index: 0x1424 */ 0x6F20,0x582E, /* Array index: 0x1424 */ 0x6F22,0x7953, /* Array index: 0x1424 */ 0x6F23,0x557E, /* Array index: 0x1424 */ 0x6F2B,0x583C, /* Array index: 0x1424 */ 0x6F2C,0x7230, /* Array index: 0x1424 */ 0x6F31,0x622B, /* Array index: 0x1424 */ 0x6F32,0x7368, /* Array index: 0x1424 */ 0x6F38,0x6F42, /* Array index: 0x1424 */ 0x6F3F,0x6D6C, /* Array index: 0x1424 */ 0x6F41,0x6738, /* Array index: 0x1424 */ 0x6F51,0x5A7E, /* Array index: 0x1424 */ 0x6F54,0x4C3E, /* Array index: 0x1424 */ 0x6F62,0x7C52, /* Array index: 0x1424 */ 0x6F64,0x6B48, /* Array index: 0x1424 */ 0x6F6D,0x5341, /* Array index: 0x1424 */ 0x6F6E,0x704D, /* Array index: 0x1424 */ 0x6F70,0x4F77, /* Array index: 0x1424 */ 0x6F81,0x5F3B, /* Array index: 0x1424 */ 0x6F84,0x7325, /* Array index: 0x1424 */ 0x6F88,0x744D, /* Array index: 0x1424 */ 0x6F8D,0x713F, /* Array index: 0x1424 */ 0x6F8E,0x7831, /* Array index: 0x1424 */ 0x6F90,0x697A, /* Array index: 0x1424 */ 0x6F94,0x7B4B, /* Array index: 0x1424 */ 0x6F97,0x4A55, /* Array index: 0x1424 */ 0x6FA3,0x7954, /* Array index: 0x1424 */ 0x6FA4,0x774A, /* Array index: 0x1424 */ 0x6FA7,0x5648, /* Array index: 0x1424 */ 0x6FAE,0x7C68, /* Array index: 0x1424 */ 0x6FAF,0x733D, /* Array index: 0x1424 */ 0x6FB1,0x6E7E, /* Array index: 0x1424 */ 0x6FB3,0x677E, /* Array index: 0x1424 */ 0x6FB9,0x5342, /* Array index: 0x1424 */ 0x6FCA,0x6758, /* Array index: 0x1424 */ 0x6FD5,0x6325, /* Array index: 0x1424 */ 0x6FDA,0x6739, /* Array index: 0x1424 */ 0x6FE4,0x5426, /* Array index: 0x1424 */ 0x6FE9,0x7B4D, /* Array index: 0x1424 */ 0x6FEB,0x553D, /* Array index: 0x1424 */ 0x6FEC,0x715F, /* Array index: 0x1424 */ 0x6FEF,0x767B, /* Array index: 0x1424 */ 0x6FF1,0x5E34, /* Array index: 0x1424 */ 0x6FFE,0x556B, /* Array index: 0x1424 */ 0x7001,0x6548, /* Array index: 0x1424 */ 0x7005,0x7B24, /* Array index: 0x1424 */ 0x7006,0x5439, /* Array index: 0x1424 */ 0x7009,0x5E61, /* Array index: 0x1424 */ 0x700B,0x6423, /* Array index: 0x1424 */ 0x700F,0x5737, /* Array index: 0x1424 */ 0x7011,0x786E, /* Array index: 0x1424 */ 0x7015,0x5E35, /* Array index: 0x1424 */ 0x7023,0x7A2E, /* Array index: 0x1424 */ 0x7027,0x5669, /* Array index: 0x1424 */ 0x7028,0x566E, /* Array index: 0x1424 */ 0x702F,0x673B, /* Array index: 0x1424 */ 0x7037,0x6C4B, /* Array index: 0x1424 */ 0x703E,0x5533, /* Array index: 0x1424 */ 0x704C,0x4E34, /* Array index: 0x1424 */ 0x7050,0x7B25, /* Array index: 0x1424 */ 0x7051,0x616E, /* Array index: 0x1424 */ 0x7058,0x7728, /* Array index: 0x1424 */ 0x705D,0x7B4E, /* Array index: 0x1424 */ 0x7063,0x583D, /* Array index: 0x1424 */ 0x706B,0x7B7D, /* Array index: 0x1424 */ 0x7070,0x7C69, /* Array index: 0x1424 */ 0x7078,0x4F36, /* Array index: 0x1424 */ 0x707C,0x6D47, /* Array index: 0x1424 */ 0x707D,0x6E2C, /* Array index: 0x1424 */ 0x7085,0x4C5D, /* Array index: 0x1424 */ 0x708A,0x7627, /* Array index: 0x1424 */ 0x708E,0x667A, /* Array index: 0x1424 */ 0x7092,0x7524, /* Array index: 0x1424 */ 0x70A1,0x6F68, /* Array index: 0x1424 */ 0x70A4,0x613F, /* Array index: 0x1424 */ 0x70B3,0x5C39, /* Array index: 0x1424 */ 0x70C8,0x562D, /* Array index: 0x1424 */ 0x70CB,0x7D4E, /* Array index: 0x1424 */ 0x70CF,0x6821, /* Array index: 0x1424 */ 0x70D8,0x7B74, /* Array index: 0x1424 */ 0x70D9,0x5527, /* Array index: 0x1424 */ 0x70DD,0x7176, /* Array index: 0x1424 */ 0x70DF,0x6653, /* Array index: 0x1424 */ 0x70F1,0x4C5E, /* Array index: 0x1424 */ 0x70F9,0x7832, /* Array index: 0x1424 */ 0x70FD,0x5C6B, /* Array index: 0x1424 */ 0x7104,0x7D36, /* Array index: 0x1424 */ 0x7109,0x656A, /* Array index: 0x1424 */ 0x710C,0x7160, /* Array index: 0x1424 */ 0x7119,0x5B4C, /* Array index: 0x1424 */ 0x711A,0x5D4D, /* Array index: 0x1424 */ 0x711E,0x5448, /* Array index: 0x1424 */ 0x7121,0x596D, /* Array index: 0x1424 */ 0x7126,0x7525, /* Array index: 0x1424 */ 0x7130,0x667B, /* Array index: 0x1424 */ 0x7136,0x6654, /* Array index: 0x1424 */ 0x7147,0x7D48, /* Array index: 0x1424 */ 0x7149,0x5621, /* Array index: 0x1424 */ 0x714A,0x7D3F, /* Array index: 0x1424 */ 0x714C,0x7C53, /* Array index: 0x1424 */ 0x714E,0x6F21, /* Array index: 0x1424 */ 0x7150,0x673C, /* Array index: 0x1424 */ 0x7156,0x516E, /* Array index: 0x1424 */ 0x7159,0x6655, /* Array index: 0x1424 */ 0x715C,0x6972, /* Array index: 0x1424 */ 0x715E,0x5F30, /* Array index: 0x1424 */ 0x716C,0x6549, /* Array index: 0x1424 */ 0x716E,0x6D34, /* Array index: 0x1424 */ 0x717D,0x6043, /* Array index: 0x1424 */ 0x7184,0x6358, /* Array index: 0x1424 */ 0x7189,0x697B, /* Array index: 0x1424 */ 0x718A,0x6A28, /* Array index: 0x1424 */ 0x718F,0x7D37, /* Array index: 0x1424 */ 0x7192,0x7B27, /* Array index: 0x1424 */ 0x7194,0x6942, /* Array index: 0x1424 */ 0x7199,0x7D77, /* Array index: 0x1424 */ 0x719F,0x6259, /* Array index: 0x1424 */ 0x71A2,0x5C6C, /* Array index: 0x1424 */ 0x71AC,0x6822, /* Array index: 0x1424 */ 0x71B1,0x6670, /* Array index: 0x1424 */ 0x71B9,0x7D78, /* Array index: 0x1424 */ 0x71BA,0x7D79, /* Array index: 0x1424 */ 0x71BE,0x763F, /* Array index: 0x1424 */ 0x71C1,0x6727, /* Array index: 0x1424 */ 0x71C3,0x6657, /* Array index: 0x1424 */ 0x71C8,0x5473, /* Array index: 0x1424 */ 0x71C9,0x5449, /* Array index: 0x1424 */ 0x71CE,0x567A, /* Array index: 0x1424 */ 0x71D0,0x5772, /* Array index: 0x1424 */ 0x71D2,0x6140, /* Array index: 0x1424 */ 0x71D4,0x5B62, /* Array index: 0x1424 */ 0x71D5,0x6658, /* Array index: 0x1424 */ 0x71DF,0x673D, /* Array index: 0x1424 */ 0x71ED,0x7537, /* Array index: 0x1424 */ 0x71EE,0x6070, /* Array index: 0x1424 */ 0x7206,0x786F, /* Array index: 0x1424 */ 0x7210,0x5653, /* Array index: 0x1424 */ 0x721B,0x5534, /* Array index: 0x1424 */ 0x722A,0x7050, /* Array index: 0x1424 */ 0x722C,0x7770, /* Array index: 0x1424 */ 0x722D,0x6E33, /* Array index: 0x1424 */ 0x7230,0x6A3A, /* Array index: 0x1424 */ 0x7232,0x6A53, /* Array index: 0x1424 */ 0x7235,0x6D49, /* Array index: 0x1424 */ 0x7236,0x5D2B, /* Array index: 0x1424 */ 0x724C,0x782B, /* Array index: 0x1424 */ 0x7252,0x7460, /* Array index: 0x1424 */ 0x7258,0x543A, /* Array index: 0x1424 */ 0x7259,0x6433, /* Array index: 0x1424 */ 0x725B,0x695A, /* Array index: 0x1424 */ 0x725D,0x5E36, /* Array index: 0x1424 */ 0x725F,0x593F, /* Array index: 0x1424 */ 0x7261,0x5940, /* Array index: 0x1424 */ 0x7262,0x566F, /* Array index: 0x1424 */ 0x7267,0x594C, /* Array index: 0x1424 */ 0x7269,0x5A2A, /* Array index: 0x1424 */ 0x7272,0x5F65, /* Array index: 0x1424 */ 0x7279,0x7765, /* Array index: 0x1424 */ 0x727D,0x4C32, /* Array index: 0x1424 */ 0x7280,0x5F79, /* Array index: 0x1424 */ 0x7281,0x5760, /* Array index: 0x1424 */ 0x72A2,0x543B, /* Array index: 0x1424 */ 0x72A7,0x7D7A, /* Array index: 0x1424 */ 0x72AC,0x4C33, /* Array index: 0x1424 */ 0x72AF,0x5B73, /* Array index: 0x1424 */ 0x72C0,0x5F52, /* Array index: 0x1424 */ 0x72C2,0x4E4A, /* Array index: 0x1424 */ 0x72C4,0x6E5A, /* Array index: 0x1424 */ 0x72CE,0x6464, /* Array index: 0x1424 */ 0x72D0,0x7B4F, /* Array index: 0x1424 */ 0x72D7,0x4F37, /* Array index: 0x1424 */ 0x72D9,0x6E43, /* Array index: 0x1424 */ 0x72E1,0x4E6A, /* Array index: 0x1424 */ 0x72E9,0x622D, /* Array index: 0x1424 */ 0x72F8,0x5761, /* Array index: 0x1424 */ 0x72F9,0x7A75, /* Array index: 0x1424 */ 0x72FC,0x5549, /* Array index: 0x1424 */ 0x72FD,0x782C, /* Array index: 0x1424 */ 0x730A,0x6759, /* Array index: 0x1424 */ 0x7316,0x7369, /* Array index: 0x1424 */ 0x7325,0x6865, /* Array index: 0x1424 */ 0x7336,0x6B22, /* Array index: 0x1424 */ 0x7337,0x6B23, /* Array index: 0x1424 */ 0x733E,0x7C42, /* Array index: 0x1424 */ 0x733F,0x6A3B, /* Array index: 0x1424 */ 0x7344,0x682B, /* Array index: 0x1424 */ 0x7345,0x5E62, /* Array index: 0x1424 */ 0x7350,0x6D6F, /* Array index: 0x1424 */ 0x7352,0x6823, /* Array index: 0x1424 */ 0x7357,0x4F71, /* Array index: 0x1424 */ 0x7368,0x543C, /* Array index: 0x1424 */ 0x736A,0x7C6A, /* Array index: 0x1424 */ 0x7370,0x673E, /* Array index: 0x1424 */ 0x7372,0x7C72, /* Array index: 0x1424 */ 0x7375,0x5634, /* Array index: 0x1424 */ 0x7378,0x622E, /* Array index: 0x1424 */ 0x737A,0x5337, /* Array index: 0x1424 */ 0x737B,0x7A4C, /* Array index: 0x1424 */ 0x7384,0x7A5C, /* Array index: 0x1424 */ 0x7386,0x6D35, /* Array index: 0x1424 */ 0x7387,0x6163, /* Array index: 0x1424 */ 0x7389,0x682C, /* Array index: 0x1424 */ 0x738B,0x685D, /* Array index: 0x1424 */ 0x738E,0x6F69, /* Array index: 0x1424 */ 0x739F,0x5A47, /* Array index: 0x1424 */ 0x73A7,0x6B49, /* Array index: 0x1424 */ 0x73A9,0x684C, /* Array index: 0x1424 */ 0x73AD,0x5E37, /* Array index: 0x1424 */ 0x73B2,0x563C, /* Array index: 0x1424 */ 0x73B3,0x5365, /* Array index: 0x1424 */ 0x73B9,0x7A5D, /* Array index: 0x1424 */ 0x73C0,0x5A56, /* Array index: 0x1424 */ 0x73C2,0x4A31, /* Array index: 0x1424 */ 0x73D6,0x4E4B, /* Array index: 0x1424 */ 0x73D9,0x4D75, /* Array index: 0x1424 */ 0x73DD,0x7D30, /* Array index: 0x1424 */ 0x73DE,0x5528, /* Array index: 0x1424 */ 0x73E0,0x7141, /* Array index: 0x1424 */ 0x73ED,0x5A6C, /* Array index: 0x1424 */ 0x73F7,0x596E, /* Array index: 0x1424 */ 0x73F9,0x607B, /* Array index: 0x1424 */ 0x73FD,0x6F6A, /* Array index: 0x1424 */ 0x73FE,0x7A5E, /* Array index: 0x1424 */ 0x7401,0x6044, /* Array index: 0x1424 */ 0x7413,0x684D, /* Array index: 0x1424 */ 0x741B,0x765A, /* Array index: 0x1424 */ 0x744B,0x6A54, /* Array index: 0x1424 */ 0x7455,0x7942, /* Array index: 0x1424 */ 0x746F,0x554B, /* Array index: 0x1424 */ 0x747E,0x5048, /* Array index: 0x1424 */ 0x7482,0x512F, /* Array index: 0x1424 */ 0x7483,0x5763, /* Array index: 0x1424 */ 0x7487,0x6046, /* Array index: 0x1424 */ 0x7489,0x5622, /* Array index: 0x1424 */ 0x748B,0x6D70, /* Array index: 0x1424 */ 0x7498,0x5773, /* Array index: 0x1424 */ 0x749C,0x7C54, /* Array index: 0x1424 */ 0x749E,0x5A57, /* Array index: 0x1424 */ 0x749F,0x4C5F, /* Array index: 0x1424 */ 0x74A1,0x7254, /* Array index: 0x1424 */ 0x74A3,0x5130, /* Array index: 0x1424 */ 0x74A5,0x4C60, /* Array index: 0x1424 */ 0x74A7,0x5B7D, /* Array index: 0x1424 */ 0x74A8,0x733F, /* Array index: 0x1424 */ 0x74AA,0x7051, /* Array index: 0x1424 */ 0x74B0,0x7C3B, /* Array index: 0x1424 */ 0x74B2,0x6230, /* Array index: 0x1424 */ 0x74B5,0x6625, /* Array index: 0x1424 */ 0x74B9,0x625B, /* Array index: 0x1424 */ 0x74BD,0x5F5E, /* Array index: 0x1424 */ 0x74BF,0x6047, /* Array index: 0x1424 */ 0x74C6,0x726F, /* Array index: 0x1424 */ 0x74CA,0x4C61, /* Array index: 0x1424 */ 0x74CF,0x566A, /* Array index: 0x1424 */ 0x74D4,0x6742, /* Array index: 0x1424 */ 0x74D8,0x4E36, /* Array index: 0x1424 */ 0x74DA,0x7340, /* Array index: 0x1424 */ 0x74DC,0x4D7E, /* Array index: 0x1424 */ 0x74E0,0x7B52, /* Array index: 0x1424 */ 0x74E2,0x7878, /* Array index: 0x1424 */ 0x74E3,0x777B, /* Array index: 0x1424 */ 0x74E6,0x683F, /* Array index: 0x1424 */ 0x74EE,0x6837, /* Array index: 0x1424 */ 0x74F7,0x6D36, /* Array index: 0x1424 */ 0x7501,0x5C3A, /* Array index: 0x1424 */ 0x7504,0x4C34, /* Array index: 0x1424 */ 0x7511,0x7177, /* Array index: 0x1424 */ 0x7515,0x6838, /* Array index: 0x1424 */ 0x7518,0x4A76, /* Array index: 0x1424 */ 0x751A,0x6424, /* Array index: 0x1424 */ 0x751B,0x7456, /* Array index: 0x1424 */ 0x751F,0x5F66, /* Array index: 0x1424 */ 0x7523,0x5F27, /* Array index: 0x1424 */ 0x7525,0x5F67, /* Array index: 0x1424 */ 0x7526,0x6141, /* Array index: 0x1424 */ 0x7528,0x6944, /* Array index: 0x1424 */ 0x752B,0x5C4B, /* Array index: 0x1424 */ 0x752C,0x6945, /* Array index: 0x1424 */ 0x7537,0x517B, /* Array index: 0x1424 */ 0x7538,0x6F24, /* Array index: 0x1424 */ 0x753A,0x6F6B, /* Array index: 0x1424 */ 0x7547,0x5034, /* Array index: 0x1424 */ 0x754C,0x4D23, /* Array index: 0x1424 */ 0x754F,0x6866, /* Array index: 0x1424 */ 0x7551,0x6F25, /* Array index: 0x1424 */ 0x7553,0x534C, /* Array index: 0x1424 */ 0x7554,0x5A6D, /* Array index: 0x1424 */ 0x7562,0x7934, /* Array index: 0x1424 */ 0x7565,0x5554, /* Array index: 0x1424 */ 0x7566,0x7D4F, /* Array index: 0x1424 */ 0x756A,0x5B63, /* Array index: 0x1424 */ 0x756F,0x7161, /* Array index: 0x1424 */ 0x7570,0x6C36, /* Array index: 0x1424 */ 0x7575,0x7B7E, /* Array index: 0x1424 */ 0x7576,0x5357, /* Array index: 0x1424 */ 0x7578,0x5131, /* Array index: 0x1424 */ 0x757A,0x4B31, /* Array index: 0x1424 */ 0x757F,0x5132, /* Array index: 0x1424 */ 0x7586,0x4B32, /* Array index: 0x1424 */ 0x7587,0x7142, /* Array index: 0x1424 */ 0x758A,0x7461, /* Array index: 0x1424 */ 0x758B,0x7935, /* Array index: 0x1424 */ 0x758E,0x6143, /* Array index: 0x1424 */ 0x758F,0x6142, /* Array index: 0x1424 */ 0x7591,0x6B77, /* Array index: 0x1424 */ 0x759D,0x5F28, /* Array index: 0x1424 */ 0x75A5,0x4B4A, /* Array index: 0x1424 */ 0x75AB,0x6639, /* Array index: 0x1424 */ 0x75C2,0x4A32, /* Array index: 0x1424 */ 0x75C5,0x5C3B, /* Array index: 0x1424 */ 0x75C7,0x7178, /* Array index: 0x1424 */ 0x75CD,0x6C37, /* Array index: 0x1424 */ 0x75D2,0x654A, /* Array index: 0x1424 */ 0x75D4,0x7640, /* Array index: 0x1424 */ 0x75D5,0x7D5D, /* Array index: 0x1424 */ 0x75D8,0x5463, /* Array index: 0x1424 */ 0x75D9,0x4C62, /* Array index: 0x1424 */ 0x75DB,0x7754, /* Array index: 0x1424 */ 0x75E2,0x5765, /* Array index: 0x1424 */ 0x75F0,0x5343, /* Array index: 0x1424 */ 0x75F2,0x5826, /* Array index: 0x1424 */ 0x75F4,0x7641, /* Array index: 0x1424 */ 0x75FA,0x5D76, /* Array index: 0x1424 */ 0x75FC,0x4D40, /* Array index: 0x1424 */ 0x7600,0x655C, /* Array index: 0x1424 */ 0x760D,0x654B, /* Array index: 0x1424 */ 0x7619,0x6144, /* Array index: 0x1424 */ 0x763B,0x572A, /* Array index: 0x1424 */ 0x7642,0x567B, /* Array index: 0x1424 */ 0x764C,0x645F, /* Array index: 0x1424 */ 0x764E,0x4A56, /* Array index: 0x1424 */ 0x7652,0x6B28, /* Array index: 0x1424 */ 0x7656,0x5B7E, /* Array index: 0x1424 */ 0x7661,0x7642, /* Array index: 0x1424 */ 0x7664,0x6F3B, /* Array index: 0x1424 */ 0x7669,0x547D, /* Array index: 0x1424 */ 0x766C,0x6048, /* Array index: 0x1424 */ 0x7670,0x6839, /* Array index: 0x1424 */ 0x7672,0x6F26, /* Array index: 0x1424 */ 0x7678,0x4D24, /* Array index: 0x1424 */ 0x7684,0x6E5C, /* Array index: 0x1424 */ 0x7686,0x4B4B, /* Array index: 0x1424 */ 0x7687,0x7C55, /* Array index: 0x1424 */ 0x768E,0x4E6B, /* Array index: 0x1424 */ 0x7690,0x4D41, /* Array index: 0x1424 */ 0x7693,0x7B53, /* Array index: 0x1424 */ 0x76AE,0x792B, /* Array index: 0x1424 */ 0x76BA,0x7554, /* Array index: 0x1424 */ 0x76BF,0x5929, /* Array index: 0x1424 */ 0x76C2,0x695D, /* Array index: 0x1424 */ 0x76C3,0x5B4D, /* Array index: 0x1424 */ 0x76C6,0x5D4E, /* Array index: 0x1424 */ 0x76C8,0x6743, /* Array index: 0x1424 */ 0x76CA,0x6C4C, /* Array index: 0x1424 */ 0x76D2,0x796C, /* Array index: 0x1424 */ 0x76D6,0x4B4C, /* Array index: 0x1424 */ 0x76E7,0x5654, /* Array index: 0x1424 */ 0x76EE,0x594D, /* Array index: 0x1424 */ 0x76F2,0x586E, /* Array index: 0x1424 */ 0x76F4,0x7241, /* Array index: 0x1424 */ 0x76F8,0x5F53, /* Array index: 0x1424 */ 0x76FC,0x5A70, /* Array index: 0x1424 */ 0x76FE,0x626A, /* Array index: 0x1424 */ 0x7701,0x607D, /* Array index: 0x1424 */ 0x7704,0x5878, /* Array index: 0x1424 */ 0x7708,0x772F, /* Array index: 0x1424 */ 0x7709,0x5A36, /* Array index: 0x1424 */ 0x770B,0x4A57, /* Array index: 0x1424 */ 0x771E,0x7258, /* Array index: 0x1424 */ 0x7720,0x5879, /* Array index: 0x1424 */ 0x7729,0x7A5F, /* Array index: 0x1424 */ 0x7737,0x4F6F, /* Array index: 0x1424 */ 0x7738,0x5942, /* Array index: 0x1424 */ 0x773A,0x7052, /* Array index: 0x1424 */ 0x773C,0x6451, /* Array index: 0x1424 */ 0x7740,0x7337, /* Array index: 0x1424 */ 0x774D,0x7A60, /* Array index: 0x1424 */ 0x775B,0x6F6C, /* Array index: 0x1424 */ 0x7761,0x6232, /* Array index: 0x1424 */ 0x7763,0x543D, /* Array index: 0x1424 */ 0x7766,0x594E, /* Array index: 0x1424 */ 0x776B,0x7462, /* Array index: 0x1424 */ 0x7779,0x5429, /* Array index: 0x1424 */ 0x777E,0x4D42, /* Array index: 0x1424 */ 0x777F,0x675A, /* Array index: 0x1424 */ 0x778B,0x7259, /* Array index: 0x1424 */ 0x7791,0x592A, /* Array index: 0x1424 */ 0x779E,0x583E, /* Array index: 0x1424 */ 0x77A5,0x5C2D, /* Array index: 0x1424 */ 0x77AC,0x626B, /* Array index: 0x1424 */ 0x77AD,0x567C, /* Array index: 0x1424 */ 0x77B0,0x4A79, /* Array index: 0x1424 */ 0x77B3,0x545A, /* Array index: 0x1424 */ 0x77BB,0x7457, /* Array index: 0x1424 */ 0x77BC,0x4C21, /* Array index: 0x1424 */ 0x77BF,0x4F3A, /* Array index: 0x1424 */ 0x77D7,0x7538, /* Array index: 0x1424 */ 0x77DB,0x5943, /* Array index: 0x1424 */ 0x77DC,0x5068, /* Array index: 0x1424 */ 0x77E2,0x6345, /* Array index: 0x1424 */ 0x77E3,0x6B78, /* Array index: 0x1424 */ 0x77E5,0x7231, /* Array index: 0x1424 */ 0x77E9,0x4F3B, /* Array index: 0x1424 */ 0x77F3,0x6034, /* Array index: 0x1424 */ 0x7802,0x5E63, /* Array index: 0x1424 */ 0x7812,0x5D77, /* Array index: 0x1424 */ 0x782C,0x577E, /* Array index: 0x1424 */ 0x7832,0x785F, /* Array index: 0x1424 */ 0x7834,0x7772, /* Array index: 0x1424 */ 0x7845,0x5029, /* Array index: 0x1424 */ 0x784F,0x665A, /* Array index: 0x1424 */ 0x785D,0x7526, /* Array index: 0x1424 */ 0x786B,0x573C, /* Array index: 0x1424 */ 0x786C,0x4C63, /* Array index: 0x1424 */ 0x786F,0x665B, /* Array index: 0x1424 */ 0x787C,0x5D5D, /* Array index: 0x1424 */ 0x7881,0x5133, /* Array index: 0x1424 */ 0x7887,0x6F6D, /* Array index: 0x1424 */ 0x7891,0x5D78, /* Array index: 0x1424 */ 0x7897,0x684F, /* Array index: 0x1424 */ 0x78A3,0x4A65, /* Array index: 0x1424 */ 0x78A7,0x5C21, /* Array index: 0x1424 */ 0x78A9,0x6035, /* Array index: 0x1424 */ 0x78C1,0x6D38, /* Array index: 0x1424 */ 0x78C5,0x5B36, /* Array index: 0x1424 */ 0x78CA,0x5670, /* Array index: 0x1424 */ 0x78CB,0x732F, /* Array index: 0x1424 */ 0x78CE,0x4D25, /* Array index: 0x1424 */ 0x78D0,0x5A71, /* Array index: 0x1424 */ 0x78E8,0x5828, /* Array index: 0x1424 */ 0x78EC,0x4C64, /* Array index: 0x1424 */ 0x78EF,0x5134, /* Array index: 0x1424 */ 0x78F5,0x4A58, /* Array index: 0x1424 */ 0x78FB,0x5A72, /* Array index: 0x1424 */ 0x7901,0x7527, /* Array index: 0x1424 */ 0x790E,0x7528, /* Array index: 0x1424 */ 0x7916,0x6626, /* Array index: 0x1424 */ 0x793A,0x6346, /* Array index: 0x1424 */ 0x793E,0x5E64, /* Array index: 0x1424 */ 0x7940,0x5E65, /* Array index: 0x1424 */ 0x7941,0x5135, /* Array index: 0x1424 */ 0x7950,0x695E, /* Array index: 0x1424 */ 0x7965,0x5F54, /* Array index: 0x1424 */ 0x7968,0x7879, /* Array index: 0x1424 */ 0x796D,0x702E, /* Array index: 0x1424 */ 0x797A,0x5138, /* Array index: 0x1424 */ 0x797F,0x565F, /* Array index: 0x1424 */ 0x7981,0x5057, /* Array index: 0x1424 */ 0x79A6,0x655D, /* Array index: 0x1424 */ 0x79A7,0x7D7B, /* Array index: 0x1424 */ 0x79AA,0x6049, /* Array index: 0x1424 */ 0x79AE,0x5649, /* Array index: 0x1424 */ 0x79B1,0x542A, /* Array index: 0x1424 */ 0x79B3,0x654C, /* Array index: 0x1424 */ 0x79B9,0x6960, /* Array index: 0x1424 */ 0x79D1,0x4E21, /* Array index: 0x1424 */ 0x79D2,0x7529, /* Array index: 0x1424 */ 0x79D5,0x5D79, /* Array index: 0x1424 */ 0x79D8,0x5D7A, /* Array index: 0x1424 */ 0x79DF,0x7055, /* Array index: 0x1424 */ 0x79E4,0x765F, /* Array index: 0x1424 */ 0x79E6,0x725A, /* Array index: 0x1424 */ 0x79E7,0x646B, /* Array index: 0x1424 */ 0x79E9,0x7271, /* Array index: 0x1424 */ 0x79FB,0x6C39, /* Array index: 0x1424 */ 0x7A00,0x7D7C, /* Array index: 0x1424 */ 0x7A05,0x612A, /* Array index: 0x1424 */ 0x7A08,0x4A59, /* Array index: 0x1424 */ 0x7A0B,0x6F6F, /* Array index: 0x1424 */ 0x7A0D,0x752A, /* Array index: 0x1424 */ 0x7A14,0x6C79, /* Array index: 0x1424 */ 0x7A17,0x782D, /* Array index: 0x1424 */ 0x7A19,0x7242, /* Array index: 0x1424 */ 0x7A1A,0x7643, /* Array index: 0x1424 */ 0x7A1C,0x5752, /* Array index: 0x1424 */ 0x7A1F,0x7922, /* Array index: 0x1424 */ 0x7A20,0x7056, /* Array index: 0x1424 */ 0x7A2E,0x707A, /* Array index: 0x1424 */ 0x7A31,0x7660, /* Array index: 0x1424 */ 0x7A36,0x6973, /* Array index: 0x1424 */ 0x7A37,0x7243, /* Array index: 0x1424 */ 0x7A46,0x594F, /* Array index: 0x1424 */ 0x7A49,0x7644, /* Array index: 0x1424 */ 0x7A4D,0x6E5D, /* Array index: 0x1424 */ 0x7A4E,0x6744, /* Array index: 0x1424 */ 0x7A57,0x6234, /* Array index: 0x1424 */ 0x7A61,0x5F62, /* Array index: 0x1424 */ 0x7A62,0x675B, /* Array index: 0x1424 */ 0x7A69,0x6831, /* Array index: 0x1424 */ 0x7A6B,0x7C2E, /* Array index: 0x1424 */ 0x7A70,0x654D, /* Array index: 0x1424 */ 0x7A74,0x7A6B, /* Array index: 0x1424 */ 0x7A76,0x4F3C, /* Array index: 0x1424 */ 0x7A79,0x4F62, /* Array index: 0x1424 */ 0x7A7A,0x4D76, /* Array index: 0x1424 */ 0x7A7D,0x6F70, /* Array index: 0x1424 */ 0x7A7F,0x743E, /* Array index: 0x1424 */ 0x7A81,0x544D, /* Array index: 0x1424 */ 0x7A84,0x7338, /* Array index: 0x1424 */ 0x7A88,0x6921, /* Array index: 0x1424 */ 0x7A92,0x7272, /* Array index: 0x1424 */ 0x7A93,0x736B, /* Array index: 0x1424 */ 0x7A95,0x7057, /* Array index: 0x1424 */ 0x7A98,0x4F57, /* Array index: 0x1424 */ 0x7A9F,0x4F5F, /* Array index: 0x1424 */ 0x7AA9,0x6840, /* Array index: 0x1424 */ 0x7AAA,0x6841, /* Array index: 0x1424 */ 0x7AAE,0x4F63, /* Array index: 0x1424 */ 0x7AAF,0x6922, /* Array index: 0x1424 */ 0x7ABA,0x502A, /* Array index: 0x1424 */ 0x7AC4,0x7341, /* Array index: 0x1424 */ 0x7AC5,0x502B, /* Array index: 0x1424 */ 0x7AC7,0x5464, /* Array index: 0x1424 */ 0x7ACA,0x6F3C, /* Array index: 0x1424 */ 0x7ACB,0x5821, /* Array index: 0x1424 */ 0x7AD7,0x595F, /* Array index: 0x1424 */ 0x7AD9,0x7357, /* Array index: 0x1424 */ 0x7ADD,0x5C3D, /* Array index: 0x1424 */ 0x7ADF,0x4C65, /* Array index: 0x1424 */ 0x7AE0,0x6D71, /* Array index: 0x1424 */ 0x7AE3,0x7162, /* Array index: 0x1424 */ 0x7AE5,0x545B, /* Array index: 0x1424 */ 0x7AEA,0x6235, /* Array index: 0x1424 */ 0x7AED,0x4A66, /* Array index: 0x1424 */ 0x7AEF,0x532E, /* Array index: 0x1424 */ 0x7AF6,0x4C66, /* Array index: 0x1424 */ 0x7AF9,0x7153, /* Array index: 0x1424 */ 0x7AFA,0x7567, /* Array index: 0x1424 */ 0x7AFF,0x4A5A, /* Array index: 0x1424 */ 0x7B0F,0x7B6E, /* Array index: 0x1424 */ 0x7B11,0x6145, /* Array index: 0x1424 */ 0x7B19,0x5F69, /* Array index: 0x1424 */ 0x7B1B,0x6E5E, /* Array index: 0x1424 */ 0x7B1E,0x7742, /* Array index: 0x1424 */ 0x7B20,0x5822, /* Array index: 0x1424 */ 0x7B26,0x5D2C, /* Array index: 0x1424 */ 0x7B2C,0x702F, /* Array index: 0x1424 */ 0x7B2D,0x563D, /* Array index: 0x1424 */ 0x7B39,0x612B, /* Array index: 0x1424 */ 0x7B46,0x7936, /* Array index: 0x1424 */ 0x7B60,0x5035, /* Array index: 0x1424 */ 0x7B6C,0x607E, /* Array index: 0x1424 */ 0x7B6E,0x5F7B, /* Array index: 0x1424 */ 0x7B75,0x665D, /* Array index: 0x1424 */ 0x7B7D,0x6824, /* Array index: 0x1424 */ 0x7B87,0x4B4D, /* Array index: 0x1424 */ 0x7B8B,0x6F28, /* Array index: 0x1424 */ 0x7B8F,0x6E34, /* Array index: 0x1424 */ 0x7B94,0x5A58, /* Array index: 0x1424 */ 0x7B95,0x5139, /* Array index: 0x1424 */ 0x7B97,0x5F29, /* Array index: 0x1424 */ 0x7B9A,0x7330, /* Array index: 0x1424 */ 0x7B9D,0x4C44, /* Array index: 0x1424 */ 0x7BA1,0x4E37, /* Array index: 0x1424 */ 0x7BAD,0x6F29, /* Array index: 0x1424 */ 0x7BB1,0x5F55, /* Array index: 0x1424 */ 0x7BB4,0x6D57, /* Array index: 0x1424 */ 0x7BB8,0x6E46, /* Array index: 0x1424 */ 0x7BC0,0x6F3D, /* Array index: 0x1424 */ 0x7BC1,0x7C56, /* Array index: 0x1424 */ 0x7BC4,0x5B74, /* Array index: 0x1424 */ 0x7BC6,0x6F2A, /* Array index: 0x1424 */ 0x7BC7,0x7839, /* Array index: 0x1424 */ 0x7BC9,0x7569, /* Array index: 0x1424 */ 0x7BD2,0x6359, /* Array index: 0x1424 */ 0x7BE0,0x6146, /* Array index: 0x1424 */ 0x7BE4,0x543F, /* Array index: 0x1424 */ 0x7BE9,0x5E68, /* Array index: 0x1424 */ 0x7C07,0x706A, /* Array index: 0x1424 */ 0x7C12,0x7342, /* Array index: 0x1424 */ 0x7C1E,0x532F, /* Array index: 0x1424 */ 0x7C21,0x4A5B, /* Array index: 0x1424 */ 0x7C27,0x7C57, /* Array index: 0x1424 */ 0x7C2A,0x6D58, /* Array index: 0x1424 */ 0x7C2B,0x6147, /* Array index: 0x1424 */ 0x7C43,0x553E, /* Array index: 0x1424 */ 0x7C4C,0x7143, /* Array index: 0x1424 */ 0x7C4D,0x6E5F, /* Array index: 0x1424 */ 0x7C60,0x566B, /* Array index: 0x1424 */ 0x7C64,0x7459, /* Array index: 0x1424 */ 0x7C6C,0x5766, /* Array index: 0x1424 */ 0x7C73,0x5A37, /* Array index: 0x1424 */ 0x7C83,0x5D7B, /* Array index: 0x1424 */ 0x7C89,0x5D4F, /* Array index: 0x1424 */ 0x7C92,0x5823, /* Array index: 0x1424 */ 0x7C95,0x5A59, /* Array index: 0x1424 */ 0x7C97,0x7058, /* Array index: 0x1424 */ 0x7C98,0x6F44, /* Array index: 0x1424 */ 0x7C9F,0x6158, /* Array index: 0x1424 */ 0x7CA5,0x7154, /* Array index: 0x1424 */ 0x7CA7,0x6D72, /* Array index: 0x1424 */ 0x7CAE,0x555B, /* Array index: 0x1424 */ 0x7CB9,0x6236, /* Array index: 0x1424 */ 0x7CBE,0x6F71, /* Array index: 0x1424 */ 0x7CCA,0x7B55, /* Array index: 0x1424 */ 0x7CD6,0x5358, /* Array index: 0x1424 */ 0x7CE7,0x555D, /* Array index: 0x1424 */ 0x7CFB,0x4D27, /* Array index: 0x1424 */ 0x7CFE,0x502C, /* Array index: 0x1424 */ 0x7D00,0x513A, /* Array index: 0x1424 */ 0x7D10,0x526F, /* Array index: 0x1424 */ 0x7D14,0x626D, /* Array index: 0x1424 */ 0x7D33,0x636B, /* Array index: 0x1424 */ 0x7D35,0x6E47, /* Array index: 0x1424 */ 0x7D39,0x6149, /* Array index: 0x1424 */ 0x7D3A,0x4A7A, /* Array index: 0x1424 */ 0x7D50,0x4C3F, /* Array index: 0x1424 */ 0x7D5E,0x4E6D, /* Array index: 0x1424 */ 0x7D61,0x5529, /* Array index: 0x1424 */ 0x7D62,0x7A62, /* Array index: 0x1424 */ 0x7D66,0x5065, /* Array index: 0x1424 */ 0x7D68,0x6B56, /* Array index: 0x1424 */ 0x7D6A,0x6C5F, /* Array index: 0x1424 */ 0x7D6E,0x5F7C, /* Array index: 0x1424 */ 0x7D76,0x6F3E, /* Array index: 0x1424 */ 0x7D79,0x4C35, /* Array index: 0x1424 */ 0x7D7F,0x4F3D, /* Array index: 0x1424 */ 0x7D8E,0x6F72, /* Array index: 0x1424 */ 0x7D8F,0x6237, /* Array index: 0x1424 */ 0x7D93,0x4C68, /* Array index: 0x1424 */ 0x7D9C,0x707C, /* Array index: 0x1424 */ 0x7DA0,0x5660, /* Array index: 0x1424 */ 0x7DA2,0x7146, /* Array index: 0x1424 */ 0x7DAC,0x6238, /* Array index: 0x1424 */ 0x7DAD,0x6B2B, /* Array index: 0x1424 */ 0x7DB8,0x5746, /* Array index: 0x1424 */ 0x7DC7,0x7645, /* Array index: 0x1424 */ 0x7DCA,0x514C, /* Array index: 0x1424 */ 0x7DCB,0x5D7C, /* Array index: 0x1424 */ 0x7DD6,0x5F7D, /* Array index: 0x1424 */ 0x7DD8,0x7965, /* Array index: 0x1424 */ 0x7DDA,0x604A, /* Array index: 0x1424 */ 0x7DE8,0x783A, /* Array index: 0x1424 */ 0x7DE9,0x6850, /* Array index: 0x1424 */ 0x7DEC,0x587B, /* Array index: 0x1424 */ 0x7DEF,0x6A55, /* Array index: 0x1424 */ 0x7DF4,0x5623, /* Array index: 0x1424 */ 0x7DFB,0x7646, /* Array index: 0x1424 */ 0x7E09,0x725B, /* Array index: 0x1424 */ 0x7E0A,0x647C, /* Array index: 0x1424 */ 0x7E15,0x6832, /* Array index: 0x1424 */ 0x7E2B,0x5C6E, /* Array index: 0x1424 */ 0x7E2E,0x756A, /* Array index: 0x1424 */ 0x7E2F,0x6660, /* Array index: 0x1424 */ 0x7E31,0x707D, /* Array index: 0x1424 */ 0x7E37,0x572C, /* Array index: 0x1424 */ 0x7E3D,0x7545, /* Array index: 0x1424 */ 0x7E3E,0x6E60, /* Array index: 0x1424 */ 0x7E41,0x5B65, /* Array index: 0x1424 */ 0x7E43,0x5D5E, /* Array index: 0x1424 */ 0x7E46,0x5970, /* Array index: 0x1424 */ 0x7E47,0x6923, /* Array index: 0x1424 */ 0x7E52,0x7179, /* Array index: 0x1424 */ 0x7E54,0x7244, /* Array index: 0x1424 */ 0x7E55,0x604B, /* Array index: 0x1424 */ 0x7E5E,0x6924, /* Array index: 0x1424 */ 0x7E61,0x6239, /* Array index: 0x1424 */ 0x7E70,0x705B, /* Array index: 0x1424 */ 0x7E79,0x663A, /* Array index: 0x1424 */ 0x7E7C,0x4D29, /* Array index: 0x1424 */ 0x7E82,0x7343, /* Array index: 0x1424 */ 0x7E8C,0x6159, /* Array index: 0x1424 */ 0x7E8F,0x6F2B, /* Array index: 0x1424 */ 0x7E93,0x6745, /* Array index: 0x1424 */ 0x7E96,0x6069, /* Array index: 0x1424 */ 0x7E98,0x7345, /* Array index: 0x1424 */ 0x7E9B,0x5440, /* Array index: 0x1424 */ 0x7E9C,0x553F, /* Array index: 0x1424 */ 0x7F36,0x5D2E, /* Array index: 0x1424 */ 0x7F38,0x797C, /* Array index: 0x1424 */ 0x7F3A,0x4C40, /* Array index: 0x1424 */ 0x7F4C,0x6522, /* Array index: 0x1424 */ 0x7F50,0x4E38, /* Array index: 0x1424 */ 0x7F54,0x5852, /* Array index: 0x1424 */ 0x7F55,0x7956, /* Array index: 0x1424 */ 0x7F6A,0x712A, /* Array index: 0x1424 */ 0x7F6B,0x4E51, /* Array index: 0x1424 */ 0x7F6E,0x7647, /* Array index: 0x1424 */ 0x7F70,0x5B6B, /* Array index: 0x1424 */ 0x7F72,0x5F7E, /* Array index: 0x1424 */ 0x7F75,0x5861, /* Array index: 0x1424 */ 0x7F77,0x7773, /* Array index: 0x1424 */ 0x7F79,0x5767, /* Array index: 0x1424 */ 0x7F85,0x547E, /* Array index: 0x1424 */ 0x7F88,0x513C, /* Array index: 0x1424 */ 0x7F8A,0x654F, /* Array index: 0x1424 */ 0x7F8C,0x4B36, /* Array index: 0x1424 */ 0x7F8E,0x5A38, /* Array index: 0x1424 */ 0x7F94,0x4D44, /* Array index: 0x1424 */ 0x7F9A,0x563E, /* Array index: 0x1424 */ 0x7F9E,0x623A, /* Array index: 0x1424 */ 0x7FA4,0x4F58, /* Array index: 0x1424 */ 0x7FA8,0x604C, /* Array index: 0x1424 */ 0x7FA9,0x6B79, /* Array index: 0x1424 */ 0x7FB2,0x7D7D, /* Array index: 0x1424 */ 0x7FB8,0x5768, /* Array index: 0x1424 */ 0x7FB9,0x4B58, /* Array index: 0x1424 */ 0x7FBD,0x6962, /* Array index: 0x1424 */ 0x7FC1,0x683A, /* Array index: 0x1424 */ 0x7FC5,0x6347, /* Array index: 0x1424 */ 0x7FCA,0x6C4D, /* Array index: 0x1424 */ 0x7FCC,0x6C4E, /* Array index: 0x1424 */ 0x7FCE,0x563F, /* Array index: 0x1424 */ 0x7FD2,0x6327, /* Array index: 0x1424 */ 0x7FD4,0x5F56, /* Array index: 0x1424 */ 0x7FD5,0x7D68, /* Array index: 0x1424 */ 0x7FE9,0x783B, /* Array index: 0x1424 */ 0x7FEB,0x6851, /* Array index: 0x1424 */ 0x7FF0,0x7957, /* Array index: 0x1424 */ 0x7FF9,0x4E6E, /* Array index: 0x1424 */ 0x7FFC,0x6C4F, /* Array index: 0x1424 */ 0x8000,0x6925, /* Array index: 0x1424 */ 0x8001,0x5655, /* Array index: 0x1424 */ 0x8003,0x4D45, /* Array index: 0x1424 */ 0x8005,0x6D3A, /* Array index: 0x1424 */ 0x8006,0x513D, /* Array index: 0x1424 */ 0x8009,0x4F3E, /* Array index: 0x1424 */ 0x800C,0x6C3B, /* Array index: 0x1424 */ 0x8010,0x5231, /* Array index: 0x1424 */ 0x8015,0x4C69, /* Array index: 0x1424 */ 0x8017,0x5944, /* Array index: 0x1424 */ 0x8018,0x697C, /* Array index: 0x1424 */ 0x802D,0x513E, /* Array index: 0x1424 */ 0x8033,0x6C3C, /* Array index: 0x1424 */ 0x8036,0x652D, /* Array index: 0x1424 */ 0x803D,0x7730, /* Array index: 0x1424 */ 0x803F,0x4C6A, /* Array index: 0x1424 */ 0x8043,0x5344, /* Array index: 0x1424 */ 0x8046,0x5640, /* Array index: 0x1424 */ 0x804A,0x567D, /* Array index: 0x1424 */ 0x8056,0x6121, /* Array index: 0x1424 */ 0x8058,0x5E3D, /* Array index: 0x1424 */ 0x805A,0x7629, /* Array index: 0x1424 */ 0x805E,0x5A24, /* Array index: 0x1424 */ 0x8077,0x7245, /* Array index: 0x1424 */ 0x8096,0x752B, /* Array index: 0x1424 */ 0x809B,0x797D, /* Array index: 0x1424 */ 0x809D,0x4A5C, /* Array index: 0x1424 */ 0x80A1,0x4D46, /* Array index: 0x1424 */ 0x80A2,0x7236, /* Array index: 0x1424 */ 0x80A5,0x5D7E, /* Array index: 0x1424 */ 0x80A9,0x4C37, /* Array index: 0x1424 */ 0x80AA,0x5B38, /* Array index: 0x1424 */ 0x80AF,0x5069, /* Array index: 0x1424 */ 0x80B1,0x4E5D, /* Array index: 0x1424 */ 0x80B2,0x6B40, /* Array index: 0x1424 */ 0x80B4,0x7D22, /* Array index: 0x1424 */ 0x80BA,0x784B, /* Array index: 0x1424 */ 0x80C3,0x6A56, /* Array index: 0x1424 */ 0x80C4,0x7130, /* Array index: 0x1424 */ 0x80CC,0x5B4E, /* Array index: 0x1424 */ 0x80CE,0x7743, /* Array index: 0x1424 */ 0x80DA,0x5B4F, /* Array index: 0x1424 */ 0x80DB,0x4B24, /* Array index: 0x1424 */ 0x80DE,0x7860, /* Array index: 0x1424 */ 0x80E1,0x7B57, /* Array index: 0x1424 */ 0x80E4,0x6B4A, /* Array index: 0x1424 */ 0x80E5,0x6021, /* Array index: 0x1424 */ 0x80F1,0x4E4D, /* Array index: 0x1424 */ 0x80F4,0x545C, /* Array index: 0x1424 */ 0x80F8,0x7D58, /* Array index: 0x1424 */ 0x80FD,0x5276, /* Array index: 0x1424 */ 0x8102,0x7237, /* Array index: 0x1424 */ 0x8118,0x6852, /* Array index: 0x1424 */ 0x811A,0x4A45, /* Array index: 0x1424 */ 0x811B,0x4C6B, /* Array index: 0x1424 */ 0x8123,0x626E, /* Array index: 0x1424 */ 0x8129,0x623B, /* Array index: 0x1424 */ 0x812B,0x772D, /* Array index: 0x1424 */ 0x812F,0x7861, /* Array index: 0x1424 */ 0x8139,0x736C, /* Array index: 0x1424 */ 0x813E,0x5E21, /* Array index: 0x1424 */ 0x814B,0x647D, /* Array index: 0x1424 */ 0x814E,0x636C, /* Array index: 0x1424 */ 0x8150,0x5D2F, /* Array index: 0x1424 */ 0x8151,0x5D30, /* Array index: 0x1424 */ 0x8154,0x4B37, /* Array index: 0x1424 */ 0x8155,0x6853, /* Array index: 0x1424 */ 0x8165,0x6123, /* Array index: 0x1424 */ 0x8166,0x5260, /* Array index: 0x1424 */ 0x816B,0x707E, /* Array index: 0x1424 */ 0x8170,0x6926, /* Array index: 0x1424 */ 0x8171,0x4B72, /* Array index: 0x1424 */ 0x817F,0x775A, /* Array index: 0x1424 */ 0x8180,0x5B39, /* Array index: 0x1424 */ 0x8188,0x4C2E, /* Array index: 0x1424 */ 0x818A,0x5A5B, /* Array index: 0x1424 */ 0x818F,0x4D47, /* Array index: 0x1424 */ 0x819A,0x5D31, /* Array index: 0x1424 */ 0x819C,0x582F, /* Array index: 0x1424 */ 0x819D,0x6323, /* Array index: 0x1424 */ 0x81A0,0x4E6F, /* Array index: 0x1424 */ 0x81A3,0x7273, /* Array index: 0x1424 */ 0x81A8,0x7833, /* Array index: 0x1424 */ 0x81B3,0x604E, /* Array index: 0x1424 */ 0x81B5,0x757D, /* Array index: 0x1424 */ 0x81BA,0x6B6C, /* Array index: 0x1424 */ 0x81C6,0x6566, /* Array index: 0x1424 */ 0x81CD,0x7030, /* Array index: 0x1424 */ 0x81D8,0x5544, /* Array index: 0x1424 */ 0x81DF,0x6D74, /* Array index: 0x1424 */ 0x81E3,0x636D, /* Array index: 0x1424 */ 0x81E5,0x6842, /* Array index: 0x1424 */ 0x81E7,0x6D75, /* Array index: 0x1424 */ 0x81E8,0x577C, /* Array index: 0x1424 */ 0x81EA,0x6D3B, /* Array index: 0x1424 */ 0x81ED,0x762B, /* Array index: 0x1424 */ 0x81F3,0x7238, /* Array index: 0x1424 */ 0x81F4,0x7648, /* Array index: 0x1424 */ 0x8205,0x4F40, /* Array index: 0x1424 */ 0x8207,0x6628, /* Array index: 0x1424 */ 0x8208,0x7D69, /* Array index: 0x1424 */ 0x820A,0x4F41, /* Array index: 0x1424 */ 0x820C,0x605F, /* Array index: 0x1424 */ 0x820D,0x5E6C, /* Array index: 0x1424 */ 0x8212,0x6022, /* Array index: 0x1424 */ 0x8240,0x5D32, /* Array index: 0x1424 */ 0x8245,0x6629, /* Array index: 0x1424 */ 0x8247,0x6F73, /* Array index: 0x1424 */ 0x8259,0x736D, /* Array index: 0x1424 */ 0x8264,0x6B7A, /* Array index: 0x1424 */ 0x8266,0x7966, /* Array index: 0x1424 */ 0x8276,0x667D, /* Array index: 0x1424 */ 0x8278,0x752C, /* Array index: 0x1424 */ 0x827E,0x6475, /* Array index: 0x1424 */ 0x828B,0x6963, /* Array index: 0x1424 */ 0x828D,0x6D4B, /* Array index: 0x1424 */ 0x828E,0x4F64, /* Array index: 0x1424 */ 0x8292,0x5853, /* Array index: 0x1424 */ 0x8299,0x5D33, /* Array index: 0x1424 */ 0x829A,0x546C, /* Array index: 0x1424 */ 0x829D,0x7239, /* Array index: 0x1424 */ 0x829F,0x5F37, /* Array index: 0x1424 */ 0x82A5,0x4B4E, /* Array index: 0x1424 */ 0x82A6,0x7B58, /* Array index: 0x1424 */ 0x82A9,0x5059, /* Array index: 0x1424 */ 0x82DB,0x4A34, /* Array index: 0x1424 */ 0x82DE,0x7862, /* Array index: 0x1424 */ 0x82DF,0x4F42, /* Array index: 0x1424 */ 0x82E1,0x6C3E, /* Array index: 0x1424 */ 0x82F1,0x6748, /* Array index: 0x1424 */ 0x8309,0x5849, /* Array index: 0x1424 */ 0x8317,0x592B, /* Array index: 0x1424 */ 0x8328,0x6D3C, /* Array index: 0x1424 */ 0x832B,0x5854, /* Array index: 0x1424 */ 0x832F,0x5C5A, /* Array index: 0x1424 */ 0x8331,0x623C, /* Array index: 0x1424 */ 0x8340,0x6270, /* Array index: 0x1424 */ 0x8347,0x7A3B, /* Array index: 0x1424 */ 0x8349,0x752E, /* Array index: 0x1424 */ 0x834A,0x7B2A, /* Array index: 0x1424 */ 0x834F,0x6C7B, /* Array index: 0x1424 */ 0x8351,0x6C3F, /* Array index: 0x1424 */ 0x8352,0x7C58, /* Array index: 0x1424 */ 0x8373,0x5465, /* Array index: 0x1424 */ 0x8377,0x7943, /* Array index: 0x1424 */ 0x837B,0x6E62, /* Array index: 0x1424 */ 0x8389,0x5769, /* Array index: 0x1424 */ 0x838A,0x6D76, /* Array index: 0x1424 */ 0x838E,0x5E6D, /* Array index: 0x1424 */ 0x8396,0x4C6C, /* Array index: 0x1424 */ 0x8398,0x636E, /* Array index: 0x1424 */ 0x839E,0x6854, /* Array index: 0x1424 */ 0x83A2,0x7A78, /* Array index: 0x1424 */ 0x83BD,0x5855, /* Array index: 0x1424 */ 0x83C1,0x746A, /* Array index: 0x1424 */ 0x83C5,0x4E39, /* Array index: 0x1424 */ 0x83C9,0x5661, /* Array index: 0x1424 */ 0x83CA,0x4F52, /* Array index: 0x1424 */ 0x83CC,0x5036, /* Array index: 0x1424 */ 0x83D3,0x4E22, /* Array index: 0x1424 */ 0x83D6,0x736E, /* Array index: 0x1424 */ 0x83DC,0x7378, /* Array index: 0x1424 */ 0x83E9,0x5C4C, /* Array index: 0x1424 */ 0x83EB,0x504B, /* Array index: 0x1424 */ 0x83F9,0x6E49, /* Array index: 0x1424 */ 0x83FD,0x625D, /* Array index: 0x1424 */ 0x8403,0x757E, /* Array index: 0x1424 */ 0x8404,0x542C, /* Array index: 0x1424 */ 0x8429,0x7557, /* Array index: 0x1424 */ 0x842C,0x583F, /* Array index: 0x1424 */ 0x8431,0x7D40, /* Array index: 0x1424 */ 0x8438,0x6B2D, /* Array index: 0x1424 */ 0x843D,0x552A, /* Array index: 0x1424 */ 0x8449,0x6728, /* Array index: 0x1424 */ 0x8457,0x6E4A, /* Array index: 0x1424 */ 0x845B,0x4A67, /* Array index: 0x1424 */ 0x8461,0x7863, /* Array index: 0x1424 */ 0x8463,0x545D, /* Array index: 0x1424 */ 0x8466,0x6A58, /* Array index: 0x1424 */ 0x846B,0x7B59, /* Array index: 0x1424 */ 0x846C,0x6D77, /* Array index: 0x1424 */ 0x846F,0x6535, /* Array index: 0x1424 */ 0x8475,0x502D, /* Array index: 0x1424 */ 0x847A,0x7171, /* Array index: 0x1424 */ 0x8490,0x623D, /* Array index: 0x1424 */ 0x8494,0x6348, /* Array index: 0x1424 */ 0x8499,0x5955, /* Array index: 0x1424 */ 0x849C,0x5F2A, /* Array index: 0x1424 */ 0x84A1,0x5B3C, /* Array index: 0x1424 */ 0x84B2,0x7864, /* Array index: 0x1424 */ 0x84B8,0x717A, /* Array index: 0x1424 */ 0x84BB,0x6536, /* Array index: 0x1424 */ 0x84BC,0x736F, /* Array index: 0x1424 */ 0x84BF,0x7B5A, /* Array index: 0x1424 */ 0x84C0,0x6160, /* Array index: 0x1424 */ 0x84C2,0x592C, /* Array index: 0x1424 */ 0x84C4,0x756B, /* Array index: 0x1424 */ 0x84C6,0x6036, /* Array index: 0x1424 */ 0x84C9,0x6948, /* Array index: 0x1424 */ 0x84CB,0x4B4F, /* Array index: 0x1424 */ 0x84CD,0x6349, /* Array index: 0x1424 */ 0x84D1,0x5E6E, /* Array index: 0x1424 */ 0x84DA,0x623E, /* Array index: 0x1424 */ 0x84EC,0x5C6F, /* Array index: 0x1424 */ 0x84EE,0x5625, /* Array index: 0x1424 */ 0x84F4,0x6271, /* Array index: 0x1424 */ 0x84FC,0x567E, /* Array index: 0x1424 */ 0x8511,0x5921, /* Array index: 0x1424 */ 0x8513,0x5840, /* Array index: 0x1424 */ 0x8514,0x5C5B, /* Array index: 0x1424 */ 0x8517,0x6D3D, /* Array index: 0x1424 */ 0x8518,0x5F38, /* Array index: 0x1424 */ 0x851A,0x6A25, /* Array index: 0x1424 */ 0x851E,0x572D, /* Array index: 0x1424 */ 0x8521,0x7379, /* Array index: 0x1424 */ 0x8523,0x6D78, /* Array index: 0x1424 */ 0x8525,0x7547, /* Array index: 0x1424 */ 0x852C,0x614A, /* Array index: 0x1424 */ 0x852D,0x6B63, /* Array index: 0x1424 */ 0x852F,0x725E, /* Array index: 0x1424 */ 0x853D,0x784C, /* Array index: 0x1424 */ 0x853F,0x6A59, /* Array index: 0x1424 */ 0x8541,0x5346, /* Array index: 0x1424 */ 0x8543,0x5B66, /* Array index: 0x1424 */ 0x8549,0x752F, /* Array index: 0x1424 */ 0x854E,0x4E70, /* Array index: 0x1424 */ 0x8553,0x697E, /* Array index: 0x1424 */ 0x8559,0x7B36, /* Array index: 0x1424 */ 0x8563,0x6272, /* Array index: 0x1424 */ 0x856D,0x614B, /* Array index: 0x1424 */ 0x8584,0x5A5D, /* Array index: 0x1424 */ 0x8587,0x5A39, /* Array index: 0x1424 */ 0x858F,0x6B7B, /* Array index: 0x1424 */ 0x8591,0x4B39, /* Array index: 0x1424 */ 0x8594,0x6D79, /* Array index: 0x1424 */ 0x859B,0x6060, /* Array index: 0x1424 */ 0x85AF,0x6023, /* Array index: 0x1424 */ 0x85B0,0x7D39, /* Array index: 0x1424 */ 0x85BA,0x7031, /* Array index: 0x1424 */ 0x85C1,0x4D4B, /* Array index: 0x1424 */ 0x85C9,0x6D3E, /* Array index: 0x1424 */ 0x85D5,0x6964, /* Array index: 0x1424 */ 0x85DC,0x556D, /* Array index: 0x1424 */ 0x85DD,0x675D, /* Array index: 0x1424 */ 0x85E4,0x5476, /* Array index: 0x1424 */ 0x85E5,0x6537, /* Array index: 0x1424 */ 0x85E9,0x5B67, /* Array index: 0x1424 */ 0x85EA,0x623F, /* Array index: 0x1424 */ 0x85F7,0x6E4B, /* Array index: 0x1424 */ 0x85FA,0x5774, /* Array index: 0x1424 */ 0x85FB,0x705D, /* Array index: 0x1424 */ 0x85FF,0x4E2B, /* Array index: 0x1424 */ 0x8602,0x675E, /* Array index: 0x1424 */ 0x8606,0x5656, /* Array index: 0x1424 */ 0x8607,0x614C, /* Array index: 0x1424 */ 0x860A,0x6833, /* Array index: 0x1424 */ 0x8616,0x656E, /* Array index: 0x1424 */ 0x8617,0x5C22, /* Array index: 0x1424 */ 0x861A,0x6050, /* Array index: 0x1424 */ 0x862D,0x5535, /* Array index: 0x1424 */ 0x863F,0x5521, /* Array index: 0x1424 */ 0x864E,0x7B5B, /* Array index: 0x1424 */ 0x8650,0x794B, /* Array index: 0x1424 */ 0x8654,0x4B73, /* Array index: 0x1424 */ 0x8655,0x7425, /* Array index: 0x1424 */ 0x8667,0x7D50, /* Array index: 0x1424 */ 0x8679,0x7B76, /* Array index: 0x1424 */ 0x868A,0x5A25, /* Array index: 0x1424 */ 0x868C,0x5B3D, /* Array index: 0x1424 */ 0x8693,0x6C62, /* Array index: 0x1424 */ 0x86A3,0x4D77, /* Array index: 0x1424 */ 0x86A4,0x705E, /* Array index: 0x1424 */ 0x86A9,0x7649, /* Array index: 0x1424 */ 0x86C7,0x5E6F, /* Array index: 0x1424 */ 0x86CB,0x5331, /* Array index: 0x1424 */ 0x86D4,0x7C6E, /* Array index: 0x1424 */ 0x86D9,0x6843, /* Array index: 0x1424 */ 0x86DB,0x7148, /* Array index: 0x1424 */ 0x86DF,0x4E71, /* Array index: 0x1424 */ 0x86E4,0x796D, /* Array index: 0x1424 */ 0x86ED,0x7274, /* Array index: 0x1424 */ 0x86FE,0x6436, /* Array index: 0x1424 */ 0x8700,0x7539, /* Array index: 0x1424 */ 0x8702,0x5C70, /* Array index: 0x1424 */ 0x8703,0x6371, /* Array index: 0x1424 */ 0x8708,0x6825, /* Array index: 0x1424 */ 0x8718,0x723B, /* Array index: 0x1424 */ 0x871A,0x5E24, /* Array index: 0x1424 */ 0x871C,0x5A4C, /* Array index: 0x1424 */ 0x874E,0x4A69, /* Array index: 0x1424 */ 0x8755,0x635A, /* Array index: 0x1424 */ 0x8757,0x7C59, /* Array index: 0x1424 */ 0x875F,0x6A5A, /* Array index: 0x1424 */ 0x8766,0x7944, /* Array index: 0x1424 */ 0x8768,0x6324, /* Array index: 0x1424 */ 0x8774,0x7B5D, /* Array index: 0x1424 */ 0x8776,0x6F4A, /* Array index: 0x1424 */ 0x8778,0x6844, /* Array index: 0x1424 */ 0x8782,0x554C, /* Array index: 0x1424 */ 0x878D,0x6B57, /* Array index: 0x1424 */ 0x879F,0x592D, /* Array index: 0x1424 */ 0x87A2,0x7B2B, /* Array index: 0x1424 */ 0x87B3,0x5359, /* Array index: 0x1424 */ 0x87BA,0x5522, /* Array index: 0x1424 */ 0x87C4,0x765E, /* Array index: 0x1424 */ 0x87E0,0x5A76, /* Array index: 0x1424 */ 0x87EC,0x6051, /* Array index: 0x1424 */ 0x87EF,0x6928, /* Array index: 0x1424 */ 0x87F2,0x7579, /* Array index: 0x1424 */ 0x87F9,0x7A2F, /* Array index: 0x1424 */ 0x87FB,0x6B7C, /* Array index: 0x1424 */ 0x87FE,0x606A, /* Array index: 0x1424 */ 0x8805,0x6332, /* Array index: 0x1424 */ 0x881F,0x5545, /* Array index: 0x1424 */ 0x8822,0x7163, /* Array index: 0x1424 */ 0x8823,0x556E, /* Array index: 0x1424 */ 0x8831,0x4D4C, /* Array index: 0x1424 */ 0x8836,0x6D59, /* Array index: 0x1424 */ 0x883B,0x5841, /* Array index: 0x1424 */ 0x8840,0x7A6C, /* Array index: 0x1424 */ 0x8846,0x716B, /* Array index: 0x1424 */ 0x884C,0x7A3C, /* Array index: 0x1424 */ 0x884D,0x6662, /* Array index: 0x1424 */ 0x8852,0x7A65, /* Array index: 0x1424 */ 0x8853,0x627A, /* Array index: 0x1424 */ 0x8857,0x4A36, /* Array index: 0x1424 */ 0x8859,0x6437, /* Array index: 0x1424 */ 0x885B,0x6A5B, /* Array index: 0x1424 */ 0x885D,0x757A, /* Array index: 0x1424 */ 0x8868,0x787A, /* Array index: 0x1424 */ 0x886B,0x5F39, /* Array index: 0x1424 */ 0x8870,0x6171, /* Array index: 0x1424 */ 0x8872,0x5224, /* Array index: 0x1424 */ 0x8877,0x757B, /* Array index: 0x1424 */ 0x8888,0x4A37, /* Array index: 0x1424 */ 0x888B,0x5367, /* Array index: 0x1424 */ 0x888D,0x7865, /* Array index: 0x1424 */ 0x8892,0x5332, /* Array index: 0x1424 */ 0x8896,0x6240, /* Array index: 0x1424 */ 0x8897,0x725F, /* Array index: 0x1424 */ 0x889E,0x4D65, /* Array index: 0x1424 */ 0x88AB,0x792C, /* Array index: 0x1424 */ 0x88B4,0x4D4D, /* Array index: 0x1424 */ 0x88C1,0x6E2E, /* Array index: 0x1424 */ 0x88C2,0x562E, /* Array index: 0x1424 */ 0x88CF,0x576A, /* Array index: 0x1424 */ 0x88D4,0x6760, /* Array index: 0x1424 */ 0x88D5,0x6B2E, /* Array index: 0x1424 */ 0x88D9,0x4F59, /* Array index: 0x1424 */ 0x88DC,0x5C4D, /* Array index: 0x1424 */ 0x88DD,0x6D7B, /* Array index: 0x1424 */ 0x88DF,0x5E70, /* Array index: 0x1424 */ 0x88E1,0x576B, /* Array index: 0x1424 */ 0x88E8,0x5E25, /* Array index: 0x1424 */ 0x88F8,0x5523, /* Array index: 0x1424 */ 0x88FD,0x7032, /* Array index: 0x1424 */ 0x8907,0x5C5C, /* Array index: 0x1424 */ 0x8910,0x4A68, /* Array index: 0x1424 */ 0x8912,0x7866, /* Array index: 0x1424 */ 0x8913,0x5C4E, /* Array index: 0x1424 */ 0x8918,0x6A5C, /* Array index: 0x1424 */ 0x8919,0x5B52, /* Array index: 0x1424 */ 0x8925,0x6933, /* Array index: 0x1424 */ 0x892A,0x775B, /* Array index: 0x1424 */ 0x8936,0x6328, /* Array index: 0x1424 */ 0x8938,0x572E, /* Array index: 0x1424 */ 0x893B,0x6061, /* Array index: 0x1424 */ 0x8941,0x4B3A, /* Array index: 0x1424 */ 0x8944,0x6551, /* Array index: 0x1424 */ 0x895F,0x505C, /* Array index: 0x1424 */ 0x8964,0x5541, /* Array index: 0x1424 */ 0x896A,0x584A, /* Array index: 0x1424 */ 0x8972,0x6329, /* Array index: 0x1424 */ 0x897F,0x6024, /* Array index: 0x1424 */ 0x8981,0x6929, /* Array index: 0x1424 */ 0x8983,0x5347, /* Array index: 0x1424 */ 0x8986,0x5C5D, /* Array index: 0x1424 */ 0x8987,0x782E, /* Array index: 0x1424 */ 0x898B,0x4C38, /* Array index: 0x1424 */ 0x898F,0x502E, /* Array index: 0x1424 */ 0x8993,0x5872, /* Array index: 0x1424 */ 0x8996,0x634A, /* Array index: 0x1424 */ 0x89A1,0x4C2F, /* Array index: 0x1424 */ 0x89A9,0x542D, /* Array index: 0x1424 */ 0x89AA,0x7651, /* Array index: 0x1424 */ 0x89B2,0x504C, /* Array index: 0x1424 */ 0x89BA,0x4A46, /* Array index: 0x1424 */ 0x89BD,0x5542, /* Array index: 0x1424 */ 0x89C0,0x4E3A, /* Array index: 0x1424 */ 0x89D2,0x4A47, /* Array index: 0x1424 */ 0x89E3,0x7A30, /* Array index: 0x1424 */ 0x89F4,0x5F58, /* Array index: 0x1424 */ 0x89F8,0x753A, /* Array index: 0x1424 */ 0x8A00,0x656B, /* Array index: 0x1424 */ 0x8A02,0x6F74, /* Array index: 0x1424 */ 0x8A03,0x5D35, /* Array index: 0x1424 */ 0x8A08,0x4D2A, /* Array index: 0x1424 */ 0x8A0A,0x6372, /* Array index: 0x1424 */ 0x8A0C,0x7B77, /* Array index: 0x1424 */ 0x8A0E,0x7750, /* Array index: 0x1424 */ 0x8A13,0x7D3A, /* Array index: 0x1424 */ 0x8A1B,0x6845, /* Array index: 0x1424 */ 0x8A1D,0x6438, /* Array index: 0x1424 */ 0x8A1F,0x6168, /* Array index: 0x1424 */ 0x8A23,0x4C41, /* Array index: 0x1424 */ 0x8A25,0x526D, /* Array index: 0x1424 */ 0x8A2A,0x5B3E, /* Array index: 0x1424 */ 0x8A2D,0x6062, /* Array index: 0x1424 */ 0x8A31,0x7A49, /* Array index: 0x1424 */ 0x8A34,0x614D, /* Array index: 0x1424 */ 0x8A36,0x4A38, /* Array index: 0x1424 */ 0x8A3A,0x7260, /* Array index: 0x1424 */ 0x8A3B,0x7149, /* Array index: 0x1424 */ 0x8A50,0x5E71, /* Array index: 0x1424 */ 0x8A54,0x705F, /* Array index: 0x1424 */ 0x8A55,0x7844, /* Array index: 0x1424 */ 0x8A5B,0x6E4C, /* Array index: 0x1424 */ 0x8A5E,0x5E72, /* Array index: 0x1424 */ 0x8A60,0x6749, /* Array index: 0x1424 */ 0x8A62,0x6273, /* Array index: 0x1424 */ 0x8A63,0x6761, /* Array index: 0x1424 */ 0x8A66,0x634B, /* Array index: 0x1424 */ 0x8A69,0x634C, /* Array index: 0x1424 */ 0x8A79,0x745A, /* Array index: 0x1424 */ 0x8A85,0x714A, /* Array index: 0x1424 */ 0x8A87,0x4E23, /* Array index: 0x1424 */ 0x8A8C,0x723C, /* Array index: 0x1424 */ 0x8A8D,0x6C63, /* Array index: 0x1424 */ 0x8A93,0x6025, /* Array index: 0x1424 */ 0x8A95,0x772B, /* Array index: 0x1424 */ 0x8A98,0x6B2F, /* Array index: 0x1424 */ 0x8A9E,0x655E, /* Array index: 0x1424 */ 0x8AB0,0x6241, /* Array index: 0x1424 */ 0x8AB2,0x4E24, /* Array index: 0x1424 */ 0x8AB9,0x5E26, /* Array index: 0x1424 */ 0x8ABC,0x6B7E, /* Array index: 0x1424 */ 0x8ABE,0x6B5D, /* Array index: 0x1424 */ 0x8ABF,0x7060, /* Array index: 0x1424 */ 0x8AC2,0x745B, /* Array index: 0x1424 */ 0x8AC4,0x6274, /* Array index: 0x1424 */ 0x8AC7,0x5348, /* Array index: 0x1424 */ 0x8ACB,0x746B, /* Array index: 0x1424 */ 0x8ACD,0x6E35, /* Array index: 0x1424 */ 0x8ACF,0x7558, /* Array index: 0x1424 */ 0x8AD2,0x555F, /* Array index: 0x1424 */ 0x8AD6,0x5665, /* Array index: 0x1424 */ 0x8ADB,0x6B30, /* Array index: 0x1424 */ 0x8ADC,0x7463, /* Array index: 0x1424 */ 0x8AE1,0x634D, /* Array index: 0x1424 */ 0x8AE6,0x7474, /* Array index: 0x1424 */ 0x8AE7,0x7A32, /* Array index: 0x1424 */ 0x8AF1,0x7D49, /* Array index: 0x1424 */ 0x8B0E,0x5A3A, /* Array index: 0x1424 */ 0x8B10,0x5A4D, /* Array index: 0x1424 */ 0x8B14,0x794C, /* Array index: 0x1424 */ 0x8B20,0x692A, /* Array index: 0x1424 */ 0x8B28,0x5948, /* Array index: 0x1424 */ 0x8B2B,0x6E63, /* Array index: 0x1424 */ 0x8B2C,0x573D, /* Array index: 0x1424 */ 0x8B33,0x4F44, /* Array index: 0x1424 */ 0x8B39,0x504D, /* Array index: 0x1424 */ 0x8B41,0x7C26, /* Array index: 0x1424 */ 0x8B49,0x717B, /* Array index: 0x1424 */ 0x8B4E,0x7D52, /* Array index: 0x1424 */ 0x8B4F,0x5141, /* Array index: 0x1424 */ 0x8B58,0x635B, /* Array index: 0x1424 */ 0x8B5A,0x5349, /* Array index: 0x1424 */ 0x8B5C,0x5C4F, /* Array index: 0x1424 */ 0x8B66,0x4C6D, /* Array index: 0x1424 */ 0x8B6C,0x5E27, /* Array index: 0x1424 */ 0x8B6F,0x663B, /* Array index: 0x1424 */ 0x8B70,0x6C21, /* Array index: 0x1424 */ 0x8B74,0x4C39, /* Array index: 0x1424 */ 0x8B77,0x7B5E, /* Array index: 0x1424 */ 0x8B7D,0x6762, /* Array index: 0x1424 */ 0x8B80,0x5441, /* Array index: 0x1424 */ 0x8B8A,0x5C28, /* Array index: 0x1424 */ 0x8B90,0x6242, /* Array index: 0x1424 */ 0x8B92,0x7358, /* Array index: 0x1424 */ 0x8B93,0x6553, /* Array index: 0x1424 */ 0x8B96,0x7359, /* Array index: 0x1424 */ 0x8B9A,0x7346, /* Array index: 0x1424 */ 0x8C37,0x4D5B, /* Array index: 0x1424 */ 0x8C3F,0x4D2C, /* Array index: 0x1424 */ 0x8C41,0x7C43, /* Array index: 0x1424 */ 0x8C46,0x5467, /* Array index: 0x1424 */ 0x8C48,0x5142, /* Array index: 0x1424 */ 0x8C4A,0x7925, /* Array index: 0x1424 */ 0x8C4C,0x6855, /* Array index: 0x1424 */ 0x8C55,0x634E, /* Array index: 0x1424 */ 0x8C5A,0x544A, /* Array index: 0x1424 */ 0x8C61,0x5F5A, /* Array index: 0x1424 */ 0x8C6A,0x7B5F, /* Array index: 0x1424 */ 0x8C6B,0x6763, /* Array index: 0x1424 */ 0x8C79,0x787B, /* Array index: 0x1424 */ 0x8C7A,0x634F, /* Array index: 0x1424 */ 0x8C82,0x7530, /* Array index: 0x1424 */ 0x8C8A,0x5867, /* Array index: 0x1424 */ 0x8C8C,0x5949, /* Array index: 0x1424 */ 0x8CD1,0x7261, /* Array index: 0x1424 */ 0x8CD3,0x5E39, /* Array index: 0x1424 */ 0x8CDA,0x5672, /* Array index: 0x1424 */ 0x8CDC,0x5E74, /* Array index: 0x1424 */ 0x8CDE,0x5F5B, /* Array index: 0x1424 */ 0x8CEA,0x7275, /* Array index: 0x1424 */ 0x8CED,0x542E, /* Array index: 0x1424 */ 0x8CF4,0x5673, /* Array index: 0x1424 */ 0x8D0D,0x606B, /* Array index: 0x1424 */ 0x8D13,0x6D7C, /* Array index: 0x1424 */ 0x8D16,0x615B, /* Array index: 0x1424 */ 0x8D64,0x6E65, /* Array index: 0x1424 */ 0x8D66,0x5E75, /* Array index: 0x1424 */ 0x8D6B,0x7A53, /* Array index: 0x1424 */ 0x8D70,0x714B, /* Array index: 0x1424 */ 0x8D73,0x502F, /* Array index: 0x1424 */ 0x8D74,0x5D39, /* Array index: 0x1424 */ 0x8D77,0x5143, /* Array index: 0x1424 */ 0x8D85,0x7531, /* Array index: 0x1424 */ 0x8D8A,0x6A46, /* Array index: 0x1424 */ 0x8D99,0x7061, /* Array index: 0x1424 */ 0x8DA3,0x762C, /* Array index: 0x1424 */ 0x8DA8,0x7559, /* Array index: 0x1424 */ 0x8DB3,0x706B, /* Array index: 0x1424 */ 0x8DBA,0x5D3A, /* Array index: 0x1424 */ 0x8DBE,0x723F, /* Array index: 0x1424 */ 0x8DC6,0x7745, /* Array index: 0x1424 */ 0x8DCB,0x5B22, /* Array index: 0x1424 */ 0x8DCC,0x7276, /* Array index: 0x1424 */ 0x8DCF,0x4A3A, /* Array index: 0x1424 */ 0x8DDB,0x7775, /* Array index: 0x1424 */ 0x8DDD,0x4B65, /* Array index: 0x1424 */ 0x8DE1,0x6E66, /* Array index: 0x1424 */ 0x8DE3,0x6053, /* Array index: 0x1424 */ 0x8DE8,0x4E25, /* Array index: 0x1424 */ 0x8DEF,0x5658, /* Array index: 0x1424 */ 0x8DF3,0x542F, /* Array index: 0x1424 */ 0x8E0A,0x6949, /* Array index: 0x1424 */ 0x8E0F,0x534E, /* Array index: 0x1424 */ 0x8E10,0x7442, /* Array index: 0x1424 */ 0x8E1E,0x4B66, /* Array index: 0x1424 */ 0x8E2A,0x7121, /* Array index: 0x1424 */ 0x8E30,0x6B32, /* Array index: 0x1424 */ 0x8E35,0x7122, /* Array index: 0x1424 */ 0x8E42,0x6B33, /* Array index: 0x1424 */ 0x8E44,0x7034, /* Array index: 0x1424 */ 0x8E59,0x756C, /* Array index: 0x1424 */ 0x8E5F,0x6E67, /* Array index: 0x1424 */ 0x8E60,0x7432, /* Array index: 0x1424 */ 0x8E74,0x756D, /* Array index: 0x1424 */ 0x8E76,0x4F73, /* Array index: 0x1424 */ 0x8E81,0x7062, /* Array index: 0x1424 */ 0x8E87,0x6E4E, /* Array index: 0x1424 */ 0x8E8A,0x714C, /* Array index: 0x1424 */ 0x8E8D,0x6538, /* Array index: 0x1424 */ 0x8EC0,0x4F46, /* Array index: 0x1424 */ 0x8ED2,0x7A4D, /* Array index: 0x1424 */ 0x8EDF,0x6663, /* Array index: 0x1424 */ 0x8EEB,0x7262, /* Array index: 0x1424 */ 0x8EF8,0x756E, /* Array index: 0x1424 */ 0x8EFB,0x4A3B, /* Array index: 0x1424 */ 0x8EFE,0x635C, /* Array index: 0x1424 */ 0x8F03,0x4E72, /* Array index: 0x1424 */ 0x8F05,0x5659, /* Array index: 0x1424 */ 0x8F09,0x6E30, /* Array index: 0x1424 */ 0x8F2F,0x727E, /* Array index: 0x1424 */ 0x8F33,0x714D, /* Array index: 0x1424 */ 0x8F38,0x6243, /* Array index: 0x1424 */ 0x8F39,0x5C5E, /* Array index: 0x1424 */ 0x8F3B,0x5C5F, /* Array index: 0x1424 */ 0x8F3E,0x6F2D, /* Array index: 0x1424 */ 0x8F3F,0x662B, /* Array index: 0x1424 */ 0x8F44,0x795D, /* Array index: 0x1424 */ 0x8F45,0x6A3F, /* Array index: 0x1424 */ 0x8F49,0x6F2E, /* Array index: 0x1424 */ 0x8F4D,0x7450, /* Array index: 0x1424 */ 0x8F4E,0x4E73, /* Array index: 0x1424 */ 0x8F5D,0x662C, /* Array index: 0x1424 */ 0x8F5F,0x4E5E, /* Array index: 0x1424 */ 0x8F62,0x5579, /* Array index: 0x1424 */ 0x8F9B,0x6374, /* Array index: 0x1424 */ 0x8F9C,0x4D50, /* Array index: 0x1424 */ 0x8FA3,0x5538, /* Array index: 0x1424 */ 0x8FA6,0x777D, /* Array index: 0x1424 */ 0x8FA8,0x5C29, /* Array index: 0x1424 */ 0x8FC2,0x6966, /* Array index: 0x1424 */ 0x8FC5,0x6376, /* Array index: 0x1424 */ 0x8FCE,0x674A, /* Array index: 0x1424 */ 0x8FD1,0x504E, /* Array index: 0x1424 */ 0x8FD4,0x5A77, /* Array index: 0x1424 */ 0x8FE6,0x4A3C, /* Array index: 0x1424 */ 0x8FEA,0x6E68, /* Array index: 0x1424 */ 0x8FEB,0x5A5E, /* Array index: 0x1424 */ 0x8FED,0x7277, /* Array index: 0x1424 */ 0x8FF0,0x627B, /* Array index: 0x1424 */ 0x8FF2,0x4C26, /* Array index: 0x1424 */ 0x8FF7,0x5A3B, /* Array index: 0x1424 */ 0x8FF9,0x6E69, /* Array index: 0x1424 */ 0x8FFD,0x755A, /* Array index: 0x1424 */ 0x900B,0x7867, /* Array index: 0x1424 */ 0x902E,0x7475, /* Array index: 0x1424 */ 0x9031,0x714E, /* Array index: 0x1424 */ 0x9032,0x7264, /* Array index: 0x1424 */ 0x9035,0x5030, /* Array index: 0x1424 */ 0x9038,0x6C6F, /* Array index: 0x1424 */ 0x903C,0x793A, /* Array index: 0x1424 */ 0x903E,0x6B35, /* Array index: 0x1424 */ 0x9041,0x546D, /* Array index: 0x1424 */ 0x9042,0x6244, /* Array index: 0x1424 */ 0x9047,0x6967, /* Array index: 0x1424 */ 0x9059,0x692B, /* Array index: 0x1424 */ 0x9069,0x6E6A, /* Array index: 0x1424 */ 0x9072,0x7240, /* Array index: 0x1424 */ 0x9075,0x7165, /* Array index: 0x1424 */ 0x9077,0x7443, /* Array index: 0x1424 */ 0x9078,0x6054, /* Array index: 0x1424 */ 0x907A,0x6B36, /* Array index: 0x1424 */ 0x908F,0x5524, /* Array index: 0x1424 */ 0x9091,0x6B69, /* Array index: 0x1424 */ 0x9095,0x683B, /* Array index: 0x1424 */ 0x9099,0x5857, /* Array index: 0x1424 */ 0x90A2,0x7B2E, /* Array index: 0x1424 */ 0x90A3,0x5161, /* Array index: 0x1424 */ 0x90A6,0x5B40, /* Array index: 0x1424 */ 0x90A8,0x753E, /* Array index: 0x1424 */ 0x90AA,0x5E77, /* Array index: 0x1424 */ 0x90B5,0x6150, /* Array index: 0x1424 */ 0x90B8,0x6E50, /* Array index: 0x1424 */ 0x90C1,0x6974, /* Array index: 0x1424 */ 0x90CA,0x4E74, /* Array index: 0x1424 */ 0x90DE,0x554D, /* Array index: 0x1424 */ 0x90E1,0x4F5B, /* Array index: 0x1424 */ 0x90E8,0x5D3B, /* Array index: 0x1424 */ 0x90ED,0x4E2C, /* Array index: 0x1424 */ 0x90F5,0x6968, /* Array index: 0x1424 */ 0x90FD,0x5434, /* Array index: 0x1424 */ 0x9102,0x6447, /* Array index: 0x1424 */ 0x9112,0x755B, /* Array index: 0x1424 */ 0x9115,0x7A41, /* Array index: 0x1424 */ 0x9119,0x5E29, /* Array index: 0x1424 */ 0x9127,0x5478, /* Array index: 0x1424 */ 0x912D,0x6F77, /* Array index: 0x1424 */ 0x9132,0x5333, /* Array index: 0x1424 */ 0x9152,0x7150, /* Array index: 0x1424 */ 0x9162,0x7532, /* Array index: 0x1424 */ 0x9169,0x592E, /* Array index: 0x1424 */ 0x916A,0x552C, /* Array index: 0x1424 */ 0x916C,0x6246, /* Array index: 0x1424 */ 0x9175,0x7D23, /* Array index: 0x1424 */ 0x9177,0x7B65, /* Array index: 0x1424 */ 0x9178,0x5F2B, /* Array index: 0x1424 */ 0x9187,0x6275, /* Array index: 0x1424 */ 0x9189,0x762D, /* Array index: 0x1424 */ 0x918B,0x7533, /* Array index: 0x1424 */ 0x918D,0x7035, /* Array index: 0x1424 */ 0x9192,0x6125, /* Array index: 0x1424 */ 0x919C,0x755D, /* Array index: 0x1424 */ 0x91C0,0x6554, /* Array index: 0x1424 */ 0x91C7,0x737A, /* Array index: 0x1424 */ 0x91D7,0x6172, /* Array index: 0x1424 */ 0x91D8,0x6F79, /* Array index: 0x1424 */ 0x91DC,0x5D3C, /* Array index: 0x1424 */ 0x91DD,0x765C, /* Array index: 0x1424 */ 0x91E3,0x7065, /* Array index: 0x1424 */ 0x91E7,0x7444, /* Array index: 0x1424 */ 0x91EA,0x6969, /* Array index: 0x1424 */ 0x91F5,0x737B, /* Array index: 0x1424 */ 0x920D,0x546F, /* Array index: 0x1424 */ 0x9217,0x6B4D, /* Array index: 0x1424 */ 0x921E,0x5037, /* Array index: 0x1424 */ 0x9234,0x5642, /* Array index: 0x1424 */ 0x923A,0x682D, /* Array index: 0x1424 */ 0x923F,0x6F2F, /* Array index: 0x1424 */ 0x9240,0x4B25, /* Array index: 0x1424 */ 0x9245,0x4B69, /* Array index: 0x1424 */ 0x9249,0x7A68, /* Array index: 0x1424 */ 0x9257,0x4C46, /* Array index: 0x1424 */ 0x925B,0x6667, /* Array index: 0x1424 */ 0x925E,0x6A47, /* Array index: 0x1424 */ 0x9280,0x6B5E, /* Array index: 0x1424 */ 0x9283,0x7548, /* Array index: 0x1424 */ 0x9285,0x545E, /* Array index: 0x1424 */ 0x9291,0x6055, /* Array index: 0x1424 */ 0x9293,0x6F30, /* Array index: 0x1424 */ 0x9296,0x6247, /* Array index: 0x1424 */ 0x9298,0x592F, /* Array index: 0x1424 */ 0x929C,0x7967, /* Array index: 0x1424 */ 0x92B3,0x6765, /* Array index: 0x1424 */ 0x92B6,0x4F4A, /* Array index: 0x1424 */ 0x92B7,0x6151, /* Array index: 0x1424 */ 0x92B9,0x6248, /* Array index: 0x1424 */ 0x92CC,0x6F7B, /* Array index: 0x1424 */ 0x92CF,0x7A79, /* Array index: 0x1424 */ 0x92D2,0x5C72, /* Array index: 0x1424 */ 0x92E4,0x6027, /* Array index: 0x1424 */ 0x92EA,0x7868, /* Array index: 0x1424 */ 0x92F8,0x4B6A, /* Array index: 0x1424 */ 0x92FC,0x4B3C, /* Array index: 0x1424 */ 0x9304,0x5662, /* Array index: 0x1424 */ 0x9310,0x755E, /* Array index: 0x1424 */ 0x9318,0x755F, /* Array index: 0x1424 */ 0x931A,0x6E36, /* Array index: 0x1424 */ 0x932B,0x6038, /* Array index: 0x1424 */ 0x932E,0x4D51, /* Array index: 0x1424 */ 0x932F,0x7339, /* Array index: 0x1424 */ 0x9348,0x674C, /* Array index: 0x1424 */ 0x934A,0x5628, /* Array index: 0x1424 */ 0x934B,0x4E27, /* Array index: 0x1424 */ 0x934D,0x5435, /* Array index: 0x1424 */ 0x9354,0x6448, /* Array index: 0x1424 */ 0x935B,0x5334, /* Array index: 0x1424 */ 0x936E,0x6B39, /* Array index: 0x1424 */ 0x9375,0x4B75, /* Array index: 0x1424 */ 0x937C,0x765D, /* Array index: 0x1424 */ 0x937E,0x7123, /* Array index: 0x1424 */ 0x938C,0x4C47, /* Array index: 0x1424 */ 0x9394,0x694A, /* Array index: 0x1424 */ 0x9396,0x6170, /* Array index: 0x1424 */ 0x939A,0x7560, /* Array index: 0x1424 */ 0x93A3,0x7B2F, /* Array index: 0x1424 */ 0x93A7,0x4B51, /* Array index: 0x1424 */ 0x93AC,0x7B60, /* Array index: 0x1424 */ 0x93AD,0x7265, /* Array index: 0x1424 */ 0x93B0,0x6C70, /* Array index: 0x1424 */ 0x93C3,0x706C, /* Array index: 0x1424 */ 0x93D1,0x6E6B, /* Array index: 0x1424 */ 0x93DE,0x694B, /* Array index: 0x1424 */ 0x93E1,0x4C70, /* Array index: 0x1424 */ 0x93E4,0x572F, /* Array index: 0x1424 */ 0x93F6,0x7321, /* Array index: 0x1424 */ 0x9404,0x7C75, /* Array index: 0x1424 */ 0x9418,0x7124, /* Array index: 0x1424 */ 0x9425,0x6056, /* Array index: 0x1424 */ 0x942B,0x6F32, /* Array index: 0x1424 */ 0x9435,0x7451, /* Array index: 0x1424 */ 0x9438,0x7721, /* Array index: 0x1424 */ 0x9444,0x7151, /* Array index: 0x1424 */ 0x9451,0x4A7C, /* Array index: 0x1424 */ 0x9452,0x4A7D, /* Array index: 0x1424 */ 0x945B,0x4E4E, /* Array index: 0x1424 */ 0x947D,0x7348, /* Array index: 0x1424 */ 0x947F,0x733A, /* Array index: 0x1424 */ 0x9577,0x6D7E, /* Array index: 0x1424 */ 0x9580,0x5A26, /* Array index: 0x1424 */ 0x9583,0x606C, /* Array index: 0x1424 */ 0x9589,0x784D, /* Array index: 0x1424 */ 0x958B,0x4B52, /* Array index: 0x1424 */ 0x9598,0x4B26, /* Array index: 0x1424 */ 0x95A8,0x5031, /* Array index: 0x1424 */ 0x95AD,0x556F, /* Array index: 0x1424 */ 0x95B1,0x6673, /* Array index: 0x1424 */ 0x95BB,0x6722, /* Array index: 0x1424 */ 0x95BC,0x6459, /* Array index: 0x1424 */ 0x95C7,0x6461, /* Array index: 0x1424 */ 0x95CA,0x7C44, /* Array index: 0x1424 */ 0x95DC,0x4E3C, /* Array index: 0x1424 */ 0x95E1,0x7445, /* Array index: 0x1424 */ 0x95E2,0x5C23, /* Array index: 0x1424 */ 0x961C,0x5D3D, /* Array index: 0x1424 */ 0x9621,0x7446, /* Array index: 0x1424 */ 0x962A,0x7821, /* Array index: 0x1424 */ 0x962E,0x6856, /* Array index: 0x1424 */ 0x9632,0x5B41, /* Array index: 0x1424 */ 0x963B,0x7066, /* Array index: 0x1424 */ 0x963F,0x6439, /* Array index: 0x1424 */ 0x9640,0x766D, /* Array index: 0x1424 */ 0x9642,0x792E, /* Array index: 0x1424 */ 0x9644,0x5D3E, /* Array index: 0x1424 */ 0x9650,0x795A, /* Array index: 0x1424 */ 0x966A,0x5B56, /* Array index: 0x1424 */ 0x9670,0x6B64, /* Array index: 0x1424 */ 0x967D,0x6555, /* Array index: 0x1424 */ 0x9685,0x696A, /* Array index: 0x1424 */ 0x9686,0x574C, /* Array index: 0x1424 */ 0x9694,0x4C30, /* Array index: 0x1424 */ 0x9695,0x6A22, /* Array index: 0x1424 */ 0x96A3,0x5776, /* Array index: 0x1424 */ 0x96A7,0x624A, /* Array index: 0x1424 */ 0x96A8,0x624B, /* Array index: 0x1424 */ 0x96AA,0x7A4F, /* Array index: 0x1424 */ 0x96B1,0x6B5F, /* Array index: 0x1424 */ 0x96B7,0x564B, /* Array index: 0x1424 */ 0x96BB,0x7434, /* Array index: 0x1424 */ 0x96D5,0x7067, /* Array index: 0x1424 */ 0x96D6,0x624C, /* Array index: 0x1424 */ 0x96D9,0x642A, /* Array index: 0x1424 */ 0x96DB,0x7561, /* Array index: 0x1424 */ 0x96DC,0x6D5A, /* Array index: 0x1424 */ 0x96E2,0x576E, /* Array index: 0x1424 */ 0x96E3,0x5171, /* Array index: 0x1424 */ 0x96EF,0x5A27, /* Array index: 0x1424 */ 0x96F0,0x5D54, /* Array index: 0x1424 */ 0x96F2,0x6A23, /* Array index: 0x1424 */ 0x96F6,0x5643, /* Array index: 0x1424 */ 0x96F7,0x5674, /* Array index: 0x1424 */ 0x96F9,0x5A5F, /* Array index: 0x1424 */ 0x96FB,0x6F33, /* Array index: 0x1424 */ 0x9700,0x624D, /* Array index: 0x1424 */ 0x9706,0x6F7D, /* Array index: 0x1424 */ 0x9707,0x7268, /* Array index: 0x1424 */ 0x9711,0x6F45, /* Array index: 0x1424 */ 0x9713,0x6767, /* Array index: 0x1424 */ 0x9716,0x577D, /* Array index: 0x1424 */ 0x9719,0x674E, /* Array index: 0x1424 */ 0x971C,0x5F5C, /* Array index: 0x1424 */ 0x971E,0x7947, /* Array index: 0x1424 */ 0x9727,0x5976, /* Array index: 0x1424 */ 0x9730,0x5F2C, /* Array index: 0x1424 */ 0x9732,0x565A, /* Array index: 0x1424 */ 0x9739,0x5C24, /* Array index: 0x1424 */ 0x973D,0x7038, /* Array index: 0x1424 */ 0x9742,0x557A, /* Array index: 0x1424 */ 0x9744,0x6477, /* Array index: 0x1424 */ 0x9748,0x5644, /* Array index: 0x1424 */ 0x9751,0x746C, /* Array index: 0x1424 */ 0x9756,0x6F7E, /* Array index: 0x1424 */ 0x975C,0x7021, /* Array index: 0x1424 */ 0x975E,0x5E2A, /* Array index: 0x1424 */ 0x9761,0x5A3C, /* Array index: 0x1424 */ 0x9762,0x587C, /* Array index: 0x1424 */ 0x9769,0x7A54, /* Array index: 0x1424 */ 0x976D,0x6C65, /* Array index: 0x1424 */ 0x9774,0x7C28, /* Array index: 0x1424 */ 0x9777,0x6C66, /* Array index: 0x1424 */ 0x977A,0x584B, /* Array index: 0x1424 */ 0x978B,0x7B39, /* Array index: 0x1424 */ 0x978D,0x6453, /* Array index: 0x1424 */ 0x978F,0x4D79, /* Array index: 0x1424 */ 0x97A0,0x4F53, /* Array index: 0x1424 */ 0x97A8,0x4A6A, /* Array index: 0x1424 */ 0x97AB,0x4F54, /* Array index: 0x1424 */ 0x97AD,0x783D, /* Array index: 0x1424 */ 0x97C6,0x7447, /* Array index: 0x1424 */ 0x97CB,0x6A5F, /* Array index: 0x1424 */ 0x97D3,0x795B, /* Array index: 0x1424 */ 0x97DC,0x5437, /* Array index: 0x1424 */ 0x97F3,0x6B65, /* Array index: 0x1424 */ 0x97F6,0x6152, /* Array index: 0x1424 */ 0x97FB,0x6A24, /* Array index: 0x1424 */ 0x9817,0x7776, /* Array index: 0x1424 */ 0x9818,0x5645, /* Array index: 0x1424 */ 0x982D,0x5469, /* Array index: 0x1424 */ 0x9830,0x7A7A, /* Array index: 0x1424 */ 0x9838,0x4C72, /* Array index: 0x1424 */ 0x9839,0x775D, /* Array index: 0x1424 */ 0x983B,0x5E3A, /* Array index: 0x1424 */ 0x9846,0x4E28, /* Array index: 0x1424 */ 0x9854,0x6454, /* Array index: 0x1424 */ 0x9858,0x6A43, /* Array index: 0x1424 */ 0x985A,0x6F34, /* Array index: 0x1424 */ 0x985E,0x573E, /* Array index: 0x1424 */ 0x9865,0x7B62, /* Array index: 0x1424 */ 0x9867,0x4D53, /* Array index: 0x1424 */ 0x986B,0x6F35, /* Array index: 0x1424 */ 0x986F,0x7A69, /* Array index: 0x1424 */ 0x98A8,0x7926, /* Array index: 0x1424 */ 0x98AF,0x5F3D, /* Array index: 0x1424 */ 0x98B1,0x7747, /* Array index: 0x1424 */ 0x98C4,0x787D, /* Array index: 0x1424 */ 0x98C7,0x787C, /* Array index: 0x1424 */ 0x98DB,0x5E2B, /* Array index: 0x1424 */ 0x98DC,0x5B68, /* Array index: 0x1424 */ 0x98DF,0x635D, /* Array index: 0x1424 */ 0x98E1,0x6162, /* Array index: 0x1424 */ 0x98E2,0x5146, /* Array index: 0x1424 */ 0x98F4,0x6C47, /* Array index: 0x1424 */ 0x9903,0x4E75, /* Array index: 0x1424 */ 0x9909,0x7A43, /* Array index: 0x1424 */ 0x990A,0x6557, /* Array index: 0x1424 */ 0x990C,0x6C48, /* Array index: 0x1424 */ 0x9910,0x7349, /* Array index: 0x1424 */ 0x9913,0x643B, /* Array index: 0x1424 */ 0x9918,0x662E, /* Array index: 0x1424 */ 0x991E,0x6F36, /* Array index: 0x1424 */ 0x9920,0x5C3F, /* Array index: 0x1424 */ 0x9928,0x4E3D, /* Array index: 0x1424 */ 0x9945,0x5843, /* Array index: 0x1424 */ 0x9951,0x5147, /* Array index: 0x1424 */ 0x9952,0x692E, /* Array index: 0x1424 */ 0x9954,0x683D, /* Array index: 0x1424 */ 0x9957,0x7A44, /* Array index: 0x1424 */ 0x9996,0x624F, /* Array index: 0x1424 */ 0x9999,0x7A45, /* Array index: 0x1424 */ 0x999D,0x7938, /* Array index: 0x1424 */ 0x99A5,0x5C60, /* Array index: 0x1424 */ 0x99A8,0x7B30, /* Array index: 0x1424 */ 0x99B1,0x766E, /* Array index: 0x1424 */ 0x99B3,0x764C, /* Array index: 0x1424 */ 0x99B4,0x6278, /* Array index: 0x1424 */ 0x99B9,0x6C71, /* Array index: 0x1424 */ 0x99C1,0x5A60, /* Array index: 0x1424 */ 0x99D5,0x4A3D, /* Array index: 0x1424 */ 0x99D9,0x5D3F, /* Array index: 0x1424 */ 0x99DD,0x766F, /* Array index: 0x1424 */ 0x99DF,0x5E79, /* Array index: 0x1424 */ 0x99ED,0x7A34, /* Array index: 0x1424 */ 0x99F1,0x552D, /* Array index: 0x1424 */ 0x99FF,0x7167, /* Array index: 0x1424 */ 0x9A01,0x5E3E, /* Array index: 0x1424 */ 0x9A08,0x5C40, /* Array index: 0x1424 */ 0x9A0E,0x5148, /* Array index: 0x1424 */ 0x9A0F,0x5149, /* Array index: 0x1424 */ 0x9A19,0x783E, /* Array index: 0x1424 */ 0x9A2B,0x4B76, /* Array index: 0x1424 */ 0x9A30,0x5479, /* Array index: 0x1424 */ 0x9A36,0x7562, /* Array index: 0x1424 */ 0x9A37,0x6153, /* Array index: 0x1424 */ 0x9A40,0x5869, /* Array index: 0x1424 */ 0x9A43,0x787E, /* Array index: 0x1424 */ 0x9A45,0x4F4C, /* Array index: 0x1424 */ 0x9A4D,0x7D24, /* Array index: 0x1424 */ 0x9A55,0x4E76, /* Array index: 0x1424 */ 0x9A57,0x7A50, /* Array index: 0x1424 */ 0x9A5A,0x4C73, /* Array index: 0x1424 */ 0x9A5B,0x663E, /* Array index: 0x1424 */ 0x9A5F,0x762E, /* Array index: 0x1424 */ 0x9A62,0x5570, /* Array index: 0x1424 */ 0x9A65,0x514A, /* Array index: 0x1424 */ 0x9A69,0x7C3E, /* Array index: 0x1424 */ 0x9A6A,0x5571, /* Array index: 0x1424 */ 0x9AA8,0x4D69, /* Array index: 0x1424 */ 0x9AB8,0x7A35, /* Array index: 0x1424 */ 0x9AD3,0x6250, /* Array index: 0x1424 */ 0x9AD4,0x7477, /* Array index: 0x1424 */ 0x9AD8,0x4D54, /* Array index: 0x1424 */ 0x9AE5,0x6723, /* Array index: 0x1424 */ 0x9AEE,0x5B25, /* Array index: 0x1424 */ 0x9B1A,0x6251, /* Array index: 0x1424 */ 0x9B27,0x5722, /* Array index: 0x1424 */ 0x9B2A,0x7763, /* Array index: 0x1424 */ 0x9B31,0x6A26, /* Array index: 0x1424 */ 0x9B3C,0x5021, /* Array index: 0x1424 */ 0x9B4F,0x6A60, /* Array index: 0x1424 */ 0x9B54,0x582A, /* Array index: 0x1424 */ 0x9B5A,0x6560, /* Array index: 0x1424 */ 0x9B6F,0x565B, /* Array index: 0x1424 */ 0x9B8E,0x6F46, /* Array index: 0x1424 */ 0x9B91,0x786A, /* Array index: 0x1424 */ 0x9B9F,0x6455, /* Array index: 0x1424 */ 0x9BAB,0x4E77, /* Array index: 0x1424 */ 0x9BAE,0x6058, /* Array index: 0x1424 */ 0x9BC9,0x576F, /* Array index: 0x1424 */ 0x9BD6,0x746D, /* Array index: 0x1424 */ 0x9BE4,0x4D66, /* Array index: 0x1424 */ 0x9BE8,0x4C74, /* Array index: 0x1424 */ 0x9C0D,0x7563, /* Array index: 0x1424 */ 0x9C10,0x644A, /* Array index: 0x1424 */ 0x9C12,0x5C61, /* Array index: 0x1424 */ 0x9C15,0x7948, /* Array index: 0x1424 */ 0x9C25,0x7C3F, /* Array index: 0x1424 */ 0x9C32,0x6827, /* Array index: 0x1424 */ 0x9C3B,0x5844, /* Array index: 0x1424 */ 0x9C47,0x4B3E, /* Array index: 0x1424 */ 0x9C49,0x5C2E, /* Array index: 0x1424 */ 0x9C57,0x5777, /* Array index: 0x1424 */ 0x9CE5,0x7068, /* Array index: 0x1424 */ 0x9CE7,0x5D40, /* Array index: 0x1424 */ 0x9CE9,0x4F4D, /* Array index: 0x1424 */ 0x9CF3,0x5C73, /* Array index: 0x1424 */ 0x9CF4,0x5930, /* Array index: 0x1424 */ 0x9CF6,0x6669, /* Array index: 0x1424 */ 0x9D09,0x643C, /* Array index: 0x1424 */ 0x9D1B,0x6A44, /* Array index: 0x1424 */ 0x9D26,0x646C, /* Array index: 0x1424 */ 0x9D28,0x6465, /* Array index: 0x1424 */ 0x9D3B,0x7B78, /* Array index: 0x1424 */ 0x9D51,0x4C3B, /* Array index: 0x1424 */ 0x9D5D,0x643D, /* Array index: 0x1424 */ 0x9D60,0x4D5C, /* Array index: 0x1424 */ 0x9D61,0x5977, /* Array index: 0x1424 */ 0x9D6C,0x5D5F, /* Array index: 0x1424 */ 0x9D72,0x6D4E, /* Array index: 0x1424 */ 0x9DA9,0x5950, /* Array index: 0x1424 */ 0x9DAF,0x6523, /* Array index: 0x1424 */ 0x9DB4,0x794D, /* Array index: 0x1424 */ 0x9DC4,0x4D2E, /* Array index: 0x1424 */ 0x9DD7,0x4F4E, /* Array index: 0x1424 */ 0x9DF2,0x762F, /* Array index: 0x1424 */ 0x9E1A,0x6524, /* Array index: 0x1424 */ 0x9E1E,0x5536, /* Array index: 0x1424 */ 0x9E75,0x565D, /* Array index: 0x1424 */ 0x9E79,0x7969, /* Array index: 0x1424 */ 0x9E7D,0x6724, /* Array index: 0x1424 */ 0x9E7F,0x5663, /* Array index: 0x1424 */ 0x9E92,0x514B, /* Array index: 0x1424 */ 0x9E93,0x5664, /* Array index: 0x1424 */ 0x9E97,0x5572, /* Array index: 0x1424 */ 0x9E9D,0x5E7A, /* Array index: 0x1424 */ 0x9E9F,0x5778, /* Array index: 0x1424 */ 0x9EA5,0x586A, /* Array index: 0x1424 */ 0x9EB4,0x4F55, /* Array index: 0x1424 */ 0x9EB5,0x587D, /* Array index: 0x1424 */ 0x9EBB,0x582B, /* Array index: 0x1424 */ 0x9EBE,0x7D4B, /* Array index: 0x1424 */ 0x9EC3,0x7C5C, /* Array index: 0x1424 */ 0x9ECD,0x6028, /* Array index: 0x1424 */ 0x9ECE,0x5573, /* Array index: 0x1424 */ 0x9ED1,0x7D59, /* Array index: 0x1424 */ 0x9ED4,0x4C23, /* Array index: 0x1424 */ 0x9ED8,0x5979, /* Array index: 0x1424 */ 0x9EDB,0x536A, /* Array index: 0x1424 */ 0x9EDC,0x7575, /* Array index: 0x1424 */ 0x9EDE,0x6F47, /* Array index: 0x1424 */ 0x9EE8,0x535A, /* Array index: 0x1424 */ 0x9EF4,0x5A3D, /* Array index: 0x1424 */ 0x9F07,0x6828, /* Array index: 0x1424 */ 0x9F08,0x5C2F, /* Array index: 0x1424 */ 0x9F0E,0x7023, /* Array index: 0x1424 */ 0x9F13,0x4D55, /* Array index: 0x1424 */ 0x9F20,0x6029, /* Array index: 0x1424 */ 0x9F3B,0x5E2C, /* Array index: 0x1424 */ 0x9F4A,0x703A, /* Array index: 0x1424 */ 0x9F4B,0x6E31, /* Array index: 0x1424 */ 0x9F4E,0x6E32, /* Array index: 0x1424 */ 0x9F52,0x764D, /* Array index: 0x1424 */ 0x9F5F,0x6E52, /* Array index: 0x1424 */ 0x9F61,0x5646, /* Array index: 0x1424 */ 0x9F67,0x6065, /* Array index: 0x1424 */ 0x9F6A,0x733B, /* Array index: 0x1424 */ 0x9F6C,0x6561, /* Array index: 0x1424 */ 0x9F77,0x644B, /* Array index: 0x1424 */ 0x9F8D,0x5723, /* Array index: 0x1424 */ 0x9F90,0x5B42, /* Array index: 0x1424 */ 0x9F95,0x4A7E, /* Array index: 0x1424 */ 0x9F9C,0x4F4F, /* Array index: 0x1424 */ 0xAC00,0x3021, /* Array index: 0x1424 */ 0xAC01,0x3022, /* Array index: 0x1424 */ 0xAC04,0x3023, /* Array index: 0x1424 */ 0xAC20,0x3035, /* Array index: 0x1424 */ 0xAC24,0x3036, /* Array index: 0x1424 */ 0xAC38,0x303C, /* Array index: 0x1424 */ 0xAC39,0x303D, /* Array index: 0x1424 */ 0xAC3C,0x303E, /* Array index: 0x1424 */ 0xAC40,0x303F, /* Array index: 0x1424 */ 0xAC4B,0x3040, /* Array index: 0x1424 */ 0xAC4D,0x3041, /* Array index: 0x1424 */ 0xAC54,0x3042, /* Array index: 0x1424 */ 0xAC58,0x3043, /* Array index: 0x1424 */ 0xAC5C,0x3044, /* Array index: 0x1424 */ 0xAC70,0x3045, /* Array index: 0x1424 */ 0xAC71,0x3046, /* Array index: 0x1424 */ 0xAC74,0x3047, /* Array index: 0x1424 */ 0xAC77,0x3048, /* Array index: 0x1424 */ 0xAC78,0x3049, /* Array index: 0x1424 */ 0xAC7A,0x304A, /* Array index: 0x1424 */ 0xAC90,0x3055, /* Array index: 0x1424 */ 0xAC94,0x3056, /* Array index: 0x1424 */ 0xACC1,0x3067, /* Array index: 0x1424 */ 0xACC4,0x3068, /* Array index: 0x1424 */ 0xACC8,0x3069, /* Array index: 0x1424 */ 0xACCC,0x306A, /* Array index: 0x1424 */ 0xACD5,0x306B, /* Array index: 0x1424 */ 0xACD7,0x306C, /* Array index: 0x1424 */ 0xACE0,0x306D, /* Array index: 0x1424 */ 0xACE1,0x306E, /* Array index: 0x1424 */ 0xACE4,0x306F, /* Array index: 0x1424 */ 0xACE7,0x3070, /* Array index: 0x1424 */ 0xACE8,0x3071, /* Array index: 0x1424 */ 0xACEA,0x3072, /* Array index: 0x1424 */ 0xACEC,0x3073, /* Array index: 0x1424 */ 0xACFC,0x307A, /* Array index: 0x1424 */ 0xACFD,0x307B, /* Array index: 0x1424 */ 0xAD00,0x307C, /* Array index: 0x1424 */ 0xAD04,0x307D, /* Array index: 0x1424 */ 0xAD06,0x307E, /* Array index: 0x1424 */ 0xAD0C,0x3121, /* Array index: 0x1424 */ 0xAD0D,0x3122, /* Array index: 0x1424 */ 0xAD0F,0x3123, /* Array index: 0x1424 */ 0xAD11,0x3124, /* Array index: 0x1424 */ 0xAD18,0x3125, /* Array index: 0x1424 */ 0xAD1C,0x3126, /* Array index: 0x1424 */ 0xAD20,0x3127, /* Array index: 0x1424 */ 0xAD29,0x3128, /* Array index: 0x1424 */ 0xAD2C,0x3129, /* Array index: 0x1424 */ 0xAD2D,0x312A, /* Array index: 0x1424 */ 0xAD34,0x312B, /* Array index: 0x1424 */ 0xAD35,0x312C, /* Array index: 0x1424 */ 0xAD38,0x312D, /* Array index: 0x1424 */ 0xAD3C,0x312E, /* Array index: 0x1424 */ 0xAD44,0x312F, /* Array index: 0x1424 */ 0xAD45,0x3130, /* Array index: 0x1424 */ 0xAD47,0x3131, /* Array index: 0x1424 */ 0xAD49,0x3132, /* Array index: 0x1424 */ 0xAD50,0x3133, /* Array index: 0x1424 */ 0xAD54,0x3134, /* Array index: 0x1424 */ 0xAD58,0x3135, /* Array index: 0x1424 */ 0xAD61,0x3136, /* Array index: 0x1424 */ 0xAD63,0x3137, /* Array index: 0x1424 */ 0xAD6C,0x3138, /* Array index: 0x1424 */ 0xAD6D,0x3139, /* Array index: 0x1424 */ 0xAD70,0x313A, /* Array index: 0x1424 */ 0xAD88,0x3145, /* Array index: 0x1424 */ 0xAD89,0x3146, /* Array index: 0x1424 */ 0xAD8C,0x3147, /* Array index: 0x1424 */ 0xAD90,0x3148, /* Array index: 0x1424 */ 0xAD9C,0x3149, /* Array index: 0x1424 */ 0xAD9D,0x314A, /* Array index: 0x1424 */ 0xADA4,0x314B, /* Array index: 0x1424 */ 0xADB7,0x314C, /* Array index: 0x1424 */ 0xADC0,0x314D, /* Array index: 0x1424 */ 0xADC1,0x314E, /* Array index: 0x1424 */ 0xADC4,0x314F, /* Array index: 0x1424 */ 0xADC8,0x3150, /* Array index: 0x1424 */ 0xADD0,0x3151, /* Array index: 0x1424 */ 0xADD1,0x3152, /* Array index: 0x1424 */ 0xADD3,0x3153, /* Array index: 0x1424 */ 0xADDC,0x3154, /* Array index: 0x1424 */ 0xADE0,0x3155, /* Array index: 0x1424 */ 0xADE4,0x3156, /* Array index: 0x1424 */ 0xADF8,0x3157, /* Array index: 0x1424 */ 0xADF9,0x3158, /* Array index: 0x1424 */ 0xADFC,0x3159, /* Array index: 0x1424 */ 0xAE08,0x315D, /* Array index: 0x1424 */ 0xAE09,0x315E, /* Array index: 0x1424 */ 0xAE0B,0x315F, /* Array index: 0x1424 */ 0xAE0D,0x3160, /* Array index: 0x1424 */ 0xAE14,0x3161, /* Array index: 0x1424 */ 0xAE30,0x3162, /* Array index: 0x1424 */ 0xAE31,0x3163, /* Array index: 0x1424 */ 0xAE34,0x3164, /* Array index: 0x1424 */ 0xAE37,0x3165, /* Array index: 0x1424 */ 0xAE38,0x3166, /* Array index: 0x1424 */ 0xAE3A,0x3167, /* Array index: 0x1424 */ 0xAE40,0x3168, /* Array index: 0x1424 */ 0xAE41,0x3169, /* Array index: 0x1424 */ 0xAE43,0x316A, /* Array index: 0x1424 */ 0xAE45,0x316B, /* Array index: 0x1424 */ 0xAE46,0x316C, /* Array index: 0x1424 */ 0xAE54,0x3172, /* Array index: 0x1424 */ 0xAE56,0x3173, /* Array index: 0x1424 */ 0xAE65,0x3179, /* Array index: 0x1424 */ 0xAE68,0x317A, /* Array index: 0x1424 */ 0xAE69,0x317B, /* Array index: 0x1424 */ 0xAE6C,0x317C, /* Array index: 0x1424 */ 0xAE70,0x317D, /* Array index: 0x1424 */ 0xAE84,0x3225, /* Array index: 0x1424 */ 0xAE85,0x3226, /* Array index: 0x1424 */ 0xAE8C,0x3227, /* Array index: 0x1424 */ 0xAEC4,0x322C, /* Array index: 0x1424 */ 0xAED8,0x3232, /* Array index: 0x1424 */ 0xAED9,0x3233, /* Array index: 0x1424 */ 0xAEDC,0x3234, /* Array index: 0x1424 */ 0xAEE8,0x3235, /* Array index: 0x1424 */ 0xAEEB,0x3236, /* Array index: 0x1424 */ 0xAEED,0x3237, /* Array index: 0x1424 */ 0xAEF4,0x3238, /* Array index: 0x1424 */ 0xAEF8,0x3239, /* Array index: 0x1424 */ 0xAEFC,0x323A, /* Array index: 0x1424 */ 0xAF07,0x323B, /* Array index: 0x1424 */ 0xAF08,0x323C, /* Array index: 0x1424 */ 0xAF0D,0x323D, /* Array index: 0x1424 */ 0xAF10,0x323E, /* Array index: 0x1424 */ 0xAF2C,0x323F, /* Array index: 0x1424 */ 0xAF2D,0x3240, /* Array index: 0x1424 */ 0xAF30,0x3241, /* Array index: 0x1424 */ 0xAF32,0x3242, /* Array index: 0x1424 */ 0xAF34,0x3243, /* Array index: 0x1424 */ 0xAF3C,0x3244, /* Array index: 0x1424 */ 0xAF3D,0x3245, /* Array index: 0x1424 */ 0xAF48,0x324A, /* Array index: 0x1424 */ 0xAF49,0x324B, /* Array index: 0x1424 */ 0xAF50,0x324C, /* Array index: 0x1424 */ 0xAF5C,0x324D, /* Array index: 0x1424 */ 0xAF5D,0x324E, /* Array index: 0x1424 */ 0xAF64,0x324F, /* Array index: 0x1424 */ 0xAF65,0x3250, /* Array index: 0x1424 */ 0xAF79,0x3251, /* Array index: 0x1424 */ 0xAF80,0x3252, /* Array index: 0x1424 */ 0xAF84,0x3253, /* Array index: 0x1424 */ 0xAF88,0x3254, /* Array index: 0x1424 */ 0xAF90,0x3255, /* Array index: 0x1424 */ 0xAF91,0x3256, /* Array index: 0x1424 */ 0xAF95,0x3257, /* Array index: 0x1424 */ 0xAF9C,0x3258, /* Array index: 0x1424 */ 0xAFB8,0x3259, /* Array index: 0x1424 */ 0xAFB9,0x325A, /* Array index: 0x1424 */ 0xAFBC,0x325B, /* Array index: 0x1424 */ 0xAFC0,0x325C, /* Array index: 0x1424 */ 0xAFD4,0x3263, /* Array index: 0x1424 */ 0xAFDC,0x3264, /* Array index: 0x1424 */ 0xAFE8,0x3265, /* Array index: 0x1424 */ 0xAFE9,0x3266, /* Array index: 0x1424 */ 0xAFF0,0x3267, /* Array index: 0x1424 */ 0xAFF1,0x3268, /* Array index: 0x1424 */ 0xAFF4,0x3269, /* Array index: 0x1424 */ 0xAFF8,0x326A, /* Array index: 0x1424 */ 0xB000,0x326B, /* Array index: 0x1424 */ 0xB001,0x326C, /* Array index: 0x1424 */ 0xB004,0x326D, /* Array index: 0x1424 */ 0xB00C,0x326E, /* Array index: 0x1424 */ 0xB010,0x326F, /* Array index: 0x1424 */ 0xB014,0x3270, /* Array index: 0x1424 */ 0xB01C,0x3271, /* Array index: 0x1424 */ 0xB01D,0x3272, /* Array index: 0x1424 */ 0xB028,0x3273, /* Array index: 0x1424 */ 0xB044,0x3274, /* Array index: 0x1424 */ 0xB045,0x3275, /* Array index: 0x1424 */ 0xB048,0x3276, /* Array index: 0x1424 */ 0xB04A,0x3277, /* Array index: 0x1424 */ 0xB04C,0x3278, /* Array index: 0x1424 */ 0xB04E,0x3279, /* Array index: 0x1424 */ 0xB05D,0x3321, /* Array index: 0x1424 */ 0xB07C,0x3322, /* Array index: 0x1424 */ 0xB07D,0x3323, /* Array index: 0x1424 */ 0xB080,0x3324, /* Array index: 0x1424 */ 0xB084,0x3325, /* Array index: 0x1424 */ 0xB08C,0x3326, /* Array index: 0x1424 */ 0xB08D,0x3327, /* Array index: 0x1424 */ 0xB08F,0x3328, /* Array index: 0x1424 */ 0xB091,0x3329, /* Array index: 0x1424 */ 0xB0B8,0x333D, /* Array index: 0x1424 */ 0xB0BC,0x333E, /* Array index: 0x1424 */ 0xB0D0,0x3344, /* Array index: 0x1424 */ 0xB0D1,0x3345, /* Array index: 0x1424 */ 0xB0D4,0x3346, /* Array index: 0x1424 */ 0xB0D8,0x3347, /* Array index: 0x1424 */ 0xB0E0,0x3348, /* Array index: 0x1424 */ 0xB0E5,0x3349, /* Array index: 0x1424 */ 0xB110,0x334E, /* Array index: 0x1424 */ 0xB112,0x334F, /* Array index: 0x1424 */ 0xB113,0x3350, /* Array index: 0x1424 */ 0xB128,0x3359, /* Array index: 0x1424 */ 0xB12C,0x335A, /* Array index: 0x1424 */ 0xB140,0x3360, /* Array index: 0x1424 */ 0xB141,0x3361, /* Array index: 0x1424 */ 0xB144,0x3362, /* Array index: 0x1424 */ 0xB148,0x3363, /* Array index: 0x1424 */ 0xB150,0x3364, /* Array index: 0x1424 */ 0xB151,0x3365, /* Array index: 0x1424 */ 0xB154,0x3366, /* Array index: 0x1424 */ 0xB155,0x3367, /* Array index: 0x1424 */ 0xB158,0x3368, /* Array index: 0x1424 */ 0xB15C,0x3369, /* Array index: 0x1424 */ 0xB160,0x336A, /* Array index: 0x1424 */ 0xB178,0x336B, /* Array index: 0x1424 */ 0xB179,0x336C, /* Array index: 0x1424 */ 0xB17C,0x336D, /* Array index: 0x1424 */ 0xB180,0x336E, /* Array index: 0x1424 */ 0xB182,0x336F, /* Array index: 0x1424 */ 0xB188,0x3370, /* Array index: 0x1424 */ 0xB189,0x3371, /* Array index: 0x1424 */ 0xB18B,0x3372, /* Array index: 0x1424 */ 0xB18D,0x3373, /* Array index: 0x1424 */ 0xB198,0x3377, /* Array index: 0x1424 */ 0xB19C,0x3378, /* Array index: 0x1424 */ 0xB1A8,0x3379, /* Array index: 0x1424 */ 0xB1CC,0x337A, /* Array index: 0x1424 */ 0xB1D0,0x337B, /* Array index: 0x1424 */ 0xB1D4,0x337C, /* Array index: 0x1424 */ 0xB1DC,0x337D, /* Array index: 0x1424 */ 0xB1DD,0x337E, /* Array index: 0x1424 */ 0xB1DF,0x3421, /* Array index: 0x1424 */ 0xB1E8,0x3422, /* Array index: 0x1424 */ 0xB1E9,0x3423, /* Array index: 0x1424 */ 0xB1EC,0x3424, /* Array index: 0x1424 */ 0xB1F0,0x3425, /* Array index: 0x1424 */ 0xB1F9,0x3426, /* Array index: 0x1424 */ 0xB1FB,0x3427, /* Array index: 0x1424 */ 0xB1FD,0x3428, /* Array index: 0x1424 */ 0xB204,0x3429, /* Array index: 0x1424 */ 0xB205,0x342A, /* Array index: 0x1424 */ 0xB208,0x342B, /* Array index: 0x1424 */ 0xB20B,0x342C, /* Array index: 0x1424 */ 0xB20C,0x342D, /* Array index: 0x1424 */ 0xB214,0x342E, /* Array index: 0x1424 */ 0xB215,0x342F, /* Array index: 0x1424 */ 0xB217,0x3430, /* Array index: 0x1424 */ 0xB219,0x3431, /* Array index: 0x1424 */ 0xB220,0x3432, /* Array index: 0x1424 */ 0xB234,0x3433, /* Array index: 0x1424 */ 0xB23C,0x3434, /* Array index: 0x1424 */ 0xB258,0x3435, /* Array index: 0x1424 */ 0xB25C,0x3436, /* Array index: 0x1424 */ 0xB260,0x3437, /* Array index: 0x1424 */ 0xB268,0x3438, /* Array index: 0x1424 */ 0xB269,0x3439, /* Array index: 0x1424 */ 0xB274,0x343A, /* Array index: 0x1424 */ 0xB275,0x343B, /* Array index: 0x1424 */ 0xB27C,0x343C, /* Array index: 0x1424 */ 0xB284,0x343D, /* Array index: 0x1424 */ 0xB285,0x343E, /* Array index: 0x1424 */ 0xB289,0x343F, /* Array index: 0x1424 */ 0xB290,0x3440, /* Array index: 0x1424 */ 0xB291,0x3441, /* Array index: 0x1424 */ 0xB294,0x3442, /* Array index: 0x1424 */ 0xB2A0,0x3446, /* Array index: 0x1424 */ 0xB2A1,0x3447, /* Array index: 0x1424 */ 0xB2A3,0x3448, /* Array index: 0x1424 */ 0xB2A5,0x3449, /* Array index: 0x1424 */ 0xB2A6,0x344A, /* Array index: 0x1424 */ 0xB2AA,0x344B, /* Array index: 0x1424 */ 0xB2AC,0x344C, /* Array index: 0x1424 */ 0xB2B0,0x344D, /* Array index: 0x1424 */ 0xB2B4,0x344E, /* Array index: 0x1424 */ 0xB2C8,0x344F, /* Array index: 0x1424 */ 0xB2C9,0x3450, /* Array index: 0x1424 */ 0xB2CC,0x3451, /* Array index: 0x1424 */ 0xB2D0,0x3452, /* Array index: 0x1424 */ 0xB2D2,0x3453, /* Array index: 0x1424 */ 0xB2D8,0x3454, /* Array index: 0x1424 */ 0xB2D9,0x3455, /* Array index: 0x1424 */ 0xB2DB,0x3456, /* Array index: 0x1424 */ 0xB2DD,0x3457, /* Array index: 0x1424 */ 0xB304,0x346D, /* Array index: 0x1424 */ 0xB308,0x346E, /* Array index: 0x1424 */ 0xB31C,0x3474, /* Array index: 0x1424 */ 0xB364,0x347D, /* Array index: 0x1424 */ 0xB365,0x347E, /* Array index: 0x1424 */ 0xB367,0x3521, /* Array index: 0x1424 */ 0xB369,0x3522, /* Array index: 0x1424 */ 0xB36B,0x3523, /* Array index: 0x1424 */ 0xB36E,0x3524, /* Array index: 0x1424 */ 0xB370,0x3525, /* Array index: 0x1424 */ 0xB371,0x3526, /* Array index: 0x1424 */ 0xB374,0x3527, /* Array index: 0x1424 */ 0xB378,0x3528, /* Array index: 0x1424 */ 0xB38C,0x352E, /* Array index: 0x1424 */ 0xB390,0x352F, /* Array index: 0x1424 */ 0xB394,0x3530, /* Array index: 0x1424 */ 0xB3A0,0x3531, /* Array index: 0x1424 */ 0xB3A1,0x3532, /* Array index: 0x1424 */ 0xB3A8,0x3533, /* Array index: 0x1424 */ 0xB3AC,0x3534, /* Array index: 0x1424 */ 0xB3C4,0x3535, /* Array index: 0x1424 */ 0xB3C5,0x3536, /* Array index: 0x1424 */ 0xB3C8,0x3537, /* Array index: 0x1424 */ 0xB3CB,0x3538, /* Array index: 0x1424 */ 0xB3CC,0x3539, /* Array index: 0x1424 */ 0xB3CE,0x353A, /* Array index: 0x1424 */ 0xB3D0,0x353B, /* Array index: 0x1424 */ 0xB3D4,0x353C, /* Array index: 0x1424 */ 0xB3D5,0x353D, /* Array index: 0x1424 */ 0xB3D7,0x353E, /* Array index: 0x1424 */ 0xB3D9,0x353F, /* Array index: 0x1424 */ 0xB3DB,0x3540, /* Array index: 0x1424 */ 0xB3DD,0x3541, /* Array index: 0x1424 */ 0xB3E0,0x3542, /* Array index: 0x1424 */ 0xB3E4,0x3543, /* Array index: 0x1424 */ 0xB3E8,0x3544, /* Array index: 0x1424 */ 0xB3FC,0x3545, /* Array index: 0x1424 */ 0xB410,0x3546, /* Array index: 0x1424 */ 0xB418,0x3547, /* Array index: 0x1424 */ 0xB41C,0x3548, /* Array index: 0x1424 */ 0xB420,0x3549, /* Array index: 0x1424 */ 0xB428,0x354A, /* Array index: 0x1424 */ 0xB429,0x354B, /* Array index: 0x1424 */ 0xB42B,0x354C, /* Array index: 0x1424 */ 0xB434,0x354D, /* Array index: 0x1424 */ 0xB450,0x354E, /* Array index: 0x1424 */ 0xB451,0x354F, /* Array index: 0x1424 */ 0xB454,0x3550, /* Array index: 0x1424 */ 0xB458,0x3551, /* Array index: 0x1424 */ 0xB460,0x3552, /* Array index: 0x1424 */ 0xB461,0x3553, /* Array index: 0x1424 */ 0xB463,0x3554, /* Array index: 0x1424 */ 0xB465,0x3555, /* Array index: 0x1424 */ 0xB46C,0x3556, /* Array index: 0x1424 */ 0xB480,0x3557, /* Array index: 0x1424 */ 0xB488,0x3558, /* Array index: 0x1424 */ 0xB49D,0x3559, /* Array index: 0x1424 */ 0xB4A4,0x355A, /* Array index: 0x1424 */ 0xB4A8,0x355B, /* Array index: 0x1424 */ 0xB4AC,0x355C, /* Array index: 0x1424 */ 0xB4B5,0x355D, /* Array index: 0x1424 */ 0xB4B7,0x355E, /* Array index: 0x1424 */ 0xB4B9,0x355F, /* Array index: 0x1424 */ 0xB4C0,0x3560, /* Array index: 0x1424 */ 0xB4C4,0x3561, /* Array index: 0x1424 */ 0xB4C8,0x3562, /* Array index: 0x1424 */ 0xB4D0,0x3563, /* Array index: 0x1424 */ 0xB4D5,0x3564, /* Array index: 0x1424 */ 0xB4DC,0x3565, /* Array index: 0x1424 */ 0xB4DD,0x3566, /* Array index: 0x1424 */ 0xB4E0,0x3567, /* Array index: 0x1424 */ 0xB4E3,0x3568, /* Array index: 0x1424 */ 0xB4E4,0x3569, /* Array index: 0x1424 */ 0xB4E6,0x356A, /* Array index: 0x1424 */ 0xB4EC,0x356B, /* Array index: 0x1424 */ 0xB4ED,0x356C, /* Array index: 0x1424 */ 0xB4EF,0x356D, /* Array index: 0x1424 */ 0xB4F1,0x356E, /* Array index: 0x1424 */ 0xB4F8,0x356F, /* Array index: 0x1424 */ 0xB514,0x3570, /* Array index: 0x1424 */ 0xB515,0x3571, /* Array index: 0x1424 */ 0xB518,0x3572, /* Array index: 0x1424 */ 0xB51B,0x3573, /* Array index: 0x1424 */ 0xB51C,0x3574, /* Array index: 0x1424 */ 0xB530,0x357B, /* Array index: 0x1424 */ 0xB531,0x357C, /* Array index: 0x1424 */ 0xB534,0x357D, /* Array index: 0x1424 */ 0xB538,0x357E, /* Array index: 0x1424 */ 0xB550,0x3629, /* Array index: 0x1424 */ 0xB554,0x362A, /* Array index: 0x1424 */ 0xB5A0,0x3630, /* Array index: 0x1424 */ 0xB5A1,0x3631, /* Array index: 0x1424 */ 0xB5A4,0x3632, /* Array index: 0x1424 */ 0xB5A8,0x3633, /* Array index: 0x1424 */ 0xB5AA,0x3634, /* Array index: 0x1424 */ 0xB5AB,0x3635, /* Array index: 0x1424 */ 0xB5C0,0x363E, /* Array index: 0x1424 */ 0xB5C4,0x363F, /* Array index: 0x1424 */ 0xB5D8,0x3645, /* Array index: 0x1424 */ 0xB5EC,0x3646, /* Array index: 0x1424 */ 0xB610,0x3647, /* Array index: 0x1424 */ 0xB611,0x3648, /* Array index: 0x1424 */ 0xB614,0x3649, /* Array index: 0x1424 */ 0xB618,0x364A, /* Array index: 0x1424 */ 0xB625,0x364B, /* Array index: 0x1424 */ 0xB62C,0x364C, /* Array index: 0x1424 */ 0xB634,0x364D, /* Array index: 0x1424 */ 0xB648,0x364E, /* Array index: 0x1424 */ 0xB664,0x364F, /* Array index: 0x1424 */ 0xB668,0x3650, /* Array index: 0x1424 */ 0xB69C,0x3651, /* Array index: 0x1424 */ 0xB69D,0x3652, /* Array index: 0x1424 */ 0xB6A0,0x3653, /* Array index: 0x1424 */ 0xB6A4,0x3654, /* Array index: 0x1424 */ 0xB6AB,0x3655, /* Array index: 0x1424 */ 0xB6AC,0x3656, /* Array index: 0x1424 */ 0xB6B1,0x3657, /* Array index: 0x1424 */ 0xB6D4,0x3658, /* Array index: 0x1424 */ 0xB6F0,0x3659, /* Array index: 0x1424 */ 0xB6F4,0x365A, /* Array index: 0x1424 */ 0xB6F8,0x365B, /* Array index: 0x1424 */ 0xB700,0x365C, /* Array index: 0x1424 */ 0xB701,0x365D, /* Array index: 0x1424 */ 0xB705,0x365E, /* Array index: 0x1424 */ 0xB728,0x365F, /* Array index: 0x1424 */ 0xB729,0x3660, /* Array index: 0x1424 */ 0xB72C,0x3661, /* Array index: 0x1424 */ 0xB72F,0x3662, /* Array index: 0x1424 */ 0xB730,0x3663, /* Array index: 0x1424 */ 0xB738,0x3664, /* Array index: 0x1424 */ 0xB739,0x3665, /* Array index: 0x1424 */ 0xB73B,0x3666, /* Array index: 0x1424 */ 0xB744,0x3667, /* Array index: 0x1424 */ 0xB748,0x3668, /* Array index: 0x1424 */ 0xB74C,0x3669, /* Array index: 0x1424 */ 0xB754,0x366A, /* Array index: 0x1424 */ 0xB755,0x366B, /* Array index: 0x1424 */ 0xB760,0x366C, /* Array index: 0x1424 */ 0xB764,0x366D, /* Array index: 0x1424 */ 0xB768,0x366E, /* Array index: 0x1424 */ 0xB770,0x366F, /* Array index: 0x1424 */ 0xB771,0x3670, /* Array index: 0x1424 */ 0xB773,0x3671, /* Array index: 0x1424 */ 0xB775,0x3672, /* Array index: 0x1424 */ 0xB77C,0x3673, /* Array index: 0x1424 */ 0xB77D,0x3674, /* Array index: 0x1424 */ 0xB780,0x3675, /* Array index: 0x1424 */ 0xB784,0x3676, /* Array index: 0x1424 */ 0xB79C,0x3723, /* Array index: 0x1424 */ 0xB7A0,0x3724, /* Array index: 0x1424 */ 0xB7B4,0x372A, /* Array index: 0x1424 */ 0xB7B5,0x372B, /* Array index: 0x1424 */ 0xB7B8,0x372C, /* Array index: 0x1424 */ 0xB7C7,0x372D, /* Array index: 0x1424 */ 0xB7C9,0x372E, /* Array index: 0x1424 */ 0xB7EC,0x372F, /* Array index: 0x1424 */ 0xB7ED,0x3730, /* Array index: 0x1424 */ 0xB7F0,0x3731, /* Array index: 0x1424 */ 0xB7F4,0x3732, /* Array index: 0x1424 */ 0xB80C,0x373B, /* Array index: 0x1424 */ 0xB810,0x373C, /* Array index: 0x1424 */ 0xB818,0x373D, /* Array index: 0x1424 */ 0xB819,0x373E, /* Array index: 0x1424 */ 0xB81B,0x373F, /* Array index: 0x1424 */ 0xB81D,0x3740, /* Array index: 0x1424 */ 0xB824,0x3741, /* Array index: 0x1424 */ 0xB825,0x3742, /* Array index: 0x1424 */ 0xB828,0x3743, /* Array index: 0x1424 */ 0xB82C,0x3744, /* Array index: 0x1424 */ 0xB840,0x374A, /* Array index: 0x1424 */ 0xB844,0x374B, /* Array index: 0x1424 */ 0xB851,0x374C, /* Array index: 0x1424 */ 0xB853,0x374D, /* Array index: 0x1424 */ 0xB85C,0x374E, /* Array index: 0x1424 */ 0xB85D,0x374F, /* Array index: 0x1424 */ 0xB860,0x3750, /* Array index: 0x1424 */ 0xB864,0x3751, /* Array index: 0x1424 */ 0xB86C,0x3752, /* Array index: 0x1424 */ 0xB86D,0x3753, /* Array index: 0x1424 */ 0xB86F,0x3754, /* Array index: 0x1424 */ 0xB871,0x3755, /* Array index: 0x1424 */ 0xB878,0x3756, /* Array index: 0x1424 */ 0xB87C,0x3757, /* Array index: 0x1424 */ 0xB88D,0x3758, /* Array index: 0x1424 */ 0xB8A8,0x3759, /* Array index: 0x1424 */ 0xB8B0,0x375A, /* Array index: 0x1424 */ 0xB8B4,0x375B, /* Array index: 0x1424 */ 0xB8B8,0x375C, /* Array index: 0x1424 */ 0xB8C0,0x375D, /* Array index: 0x1424 */ 0xB8C1,0x375E, /* Array index: 0x1424 */ 0xB8C3,0x375F, /* Array index: 0x1424 */ 0xB8C5,0x3760, /* Array index: 0x1424 */ 0xB8CC,0x3761, /* Array index: 0x1424 */ 0xB8D0,0x3762, /* Array index: 0x1424 */ 0xB8D4,0x3763, /* Array index: 0x1424 */ 0xB8DD,0x3764, /* Array index: 0x1424 */ 0xB8DF,0x3765, /* Array index: 0x1424 */ 0xB8E1,0x3766, /* Array index: 0x1424 */ 0xB8E8,0x3767, /* Array index: 0x1424 */ 0xB8E9,0x3768, /* Array index: 0x1424 */ 0xB8EC,0x3769, /* Array index: 0x1424 */ 0xB8F0,0x376A, /* Array index: 0x1424 */ 0xB8F8,0x376B, /* Array index: 0x1424 */ 0xB8F9,0x376C, /* Array index: 0x1424 */ 0xB8FB,0x376D, /* Array index: 0x1424 */ 0xB8FD,0x376E, /* Array index: 0x1424 */ 0xB904,0x376F, /* Array index: 0x1424 */ 0xB918,0x3770, /* Array index: 0x1424 */ 0xB920,0x3771, /* Array index: 0x1424 */ 0xB93C,0x3772, /* Array index: 0x1424 */ 0xB93D,0x3773, /* Array index: 0x1424 */ 0xB940,0x3774, /* Array index: 0x1424 */ 0xB944,0x3775, /* Array index: 0x1424 */ 0xB94C,0x3776, /* Array index: 0x1424 */ 0xB94F,0x3777, /* Array index: 0x1424 */ 0xB951,0x3778, /* Array index: 0x1424 */ 0xB958,0x3779, /* Array index: 0x1424 */ 0xB959,0x377A, /* Array index: 0x1424 */ 0xB95C,0x377B, /* Array index: 0x1424 */ 0xB960,0x377C, /* Array index: 0x1424 */ 0xB968,0x377D, /* Array index: 0x1424 */ 0xB969,0x377E, /* Array index: 0x1424 */ 0xB96B,0x3821, /* Array index: 0x1424 */ 0xB96D,0x3822, /* Array index: 0x1424 */ 0xB974,0x3823, /* Array index: 0x1424 */ 0xB975,0x3824, /* Array index: 0x1424 */ 0xB978,0x3825, /* Array index: 0x1424 */ 0xB97C,0x3826, /* Array index: 0x1424 */ 0xB984,0x3827, /* Array index: 0x1424 */ 0xB985,0x3828, /* Array index: 0x1424 */ 0xB987,0x3829, /* Array index: 0x1424 */ 0xB989,0x382A, /* Array index: 0x1424 */ 0xB98A,0x382B, /* Array index: 0x1424 */ 0xB98D,0x382C, /* Array index: 0x1424 */ 0xB98E,0x382D, /* Array index: 0x1424 */ 0xB9AC,0x382E, /* Array index: 0x1424 */ 0xB9AD,0x382F, /* Array index: 0x1424 */ 0xB9B0,0x3830, /* Array index: 0x1424 */ 0xB9B4,0x3831, /* Array index: 0x1424 */ 0xB9BC,0x3832, /* Array index: 0x1424 */ 0xB9BD,0x3833, /* Array index: 0x1424 */ 0xB9BF,0x3834, /* Array index: 0x1424 */ 0xB9C1,0x3835, /* Array index: 0x1424 */ 0xB9C8,0x3836, /* Array index: 0x1424 */ 0xB9C9,0x3837, /* Array index: 0x1424 */ 0xB9D8,0x383E, /* Array index: 0x1424 */ 0xB9D9,0x383F, /* Array index: 0x1424 */ 0xB9DB,0x3840, /* Array index: 0x1424 */ 0xB9DD,0x3841, /* Array index: 0x1424 */ 0xB9DE,0x3842, /* Array index: 0x1424 */ 0xB9E8,0x3847, /* Array index: 0x1424 */ 0xB9EC,0x3848, /* Array index: 0x1424 */ 0xBA00,0x384F, /* Array index: 0x1424 */ 0xBA01,0x3850, /* Array index: 0x1424 */ 0xBA08,0x3851, /* Array index: 0x1424 */ 0xBA15,0x3852, /* Array index: 0x1424 */ 0xBA38,0x3853, /* Array index: 0x1424 */ 0xBA39,0x3854, /* Array index: 0x1424 */ 0xBA3C,0x3855, /* Array index: 0x1424 */ 0xBA40,0x3856, /* Array index: 0x1424 */ 0xBA42,0x3857, /* Array index: 0x1424 */ 0xBA48,0x3858, /* Array index: 0x1424 */ 0xBA49,0x3859, /* Array index: 0x1424 */ 0xBA4B,0x385A, /* Array index: 0x1424 */ 0xBA4D,0x385B, /* Array index: 0x1424 */ 0xBA4E,0x385C, /* Array index: 0x1424 */ 0xBA58,0x3860, /* Array index: 0x1424 */ 0xBA5C,0x3861, /* Array index: 0x1424 */ 0xBA70,0x3867, /* Array index: 0x1424 */ 0xBA71,0x3868, /* Array index: 0x1424 */ 0xBA74,0x3869, /* Array index: 0x1424 */ 0xBA78,0x386A, /* Array index: 0x1424 */ 0xBA8C,0x386F, /* Array index: 0x1424 */ 0xBAB0,0x3874, /* Array index: 0x1424 */ 0xBAB2,0x3875, /* Array index: 0x1424 */ 0xBAB8,0x3876, /* Array index: 0x1424 */ 0xBAB9,0x3877, /* Array index: 0x1424 */ 0xBABB,0x3878, /* Array index: 0x1424 */ 0xBABD,0x3879, /* Array index: 0x1424 */ 0xBAC4,0x387A, /* Array index: 0x1424 */ 0xBAC8,0x387B, /* Array index: 0x1424 */ 0xBAD8,0x387C, /* Array index: 0x1424 */ 0xBAD9,0x387D, /* Array index: 0x1424 */ 0xBAFC,0x387E, /* Array index: 0x1424 */ 0xBB00,0x3921, /* Array index: 0x1424 */ 0xBB04,0x3922, /* Array index: 0x1424 */ 0xBB0D,0x3923, /* Array index: 0x1424 */ 0xBB0F,0x3924, /* Array index: 0x1424 */ 0xBB11,0x3925, /* Array index: 0x1424 */ 0xBB18,0x3926, /* Array index: 0x1424 */ 0xBB1C,0x3927, /* Array index: 0x1424 */ 0xBB20,0x3928, /* Array index: 0x1424 */ 0xBB29,0x3929, /* Array index: 0x1424 */ 0xBB2B,0x392A, /* Array index: 0x1424 */ 0xBB44,0x3933, /* Array index: 0x1424 */ 0xBB45,0x3934, /* Array index: 0x1424 */ 0xBB47,0x3935, /* Array index: 0x1424 */ 0xBB49,0x3936, /* Array index: 0x1424 */ 0xBB4D,0x3937, /* Array index: 0x1424 */ 0xBB4F,0x3938, /* Array index: 0x1424 */ 0xBB50,0x3939, /* Array index: 0x1424 */ 0xBB54,0x393A, /* Array index: 0x1424 */ 0xBB58,0x393B, /* Array index: 0x1424 */ 0xBB61,0x393C, /* Array index: 0x1424 */ 0xBB63,0x393D, /* Array index: 0x1424 */ 0xBB6C,0x393E, /* Array index: 0x1424 */ 0xBB88,0x393F, /* Array index: 0x1424 */ 0xBB8C,0x3940, /* Array index: 0x1424 */ 0xBB90,0x3941, /* Array index: 0x1424 */ 0xBBA4,0x3942, /* Array index: 0x1424 */ 0xBBA8,0x3943, /* Array index: 0x1424 */ 0xBBAC,0x3944, /* Array index: 0x1424 */ 0xBBB4,0x3945, /* Array index: 0x1424 */ 0xBBB7,0x3946, /* Array index: 0x1424 */ 0xBBC0,0x3947, /* Array index: 0x1424 */ 0xBBC4,0x3948, /* Array index: 0x1424 */ 0xBBC8,0x3949, /* Array index: 0x1424 */ 0xBBD0,0x394A, /* Array index: 0x1424 */ 0xBBD3,0x394B, /* Array index: 0x1424 */ 0xBBF8,0x394C, /* Array index: 0x1424 */ 0xBBF9,0x394D, /* Array index: 0x1424 */ 0xBBFC,0x394E, /* Array index: 0x1424 */ 0xBBFF,0x394F, /* Array index: 0x1424 */ 0xBC00,0x3950, /* Array index: 0x1424 */ 0xBC02,0x3951, /* Array index: 0x1424 */ 0xBC24,0x3963, /* Array index: 0x1424 */ 0xBC25,0x3964, /* Array index: 0x1424 */ 0xBC27,0x3965, /* Array index: 0x1424 */ 0xBC29,0x3966, /* Array index: 0x1424 */ 0xBC2D,0x3967, /* Array index: 0x1424 */ 0xBC30,0x3968, /* Array index: 0x1424 */ 0xBC31,0x3969, /* Array index: 0x1424 */ 0xBC34,0x396A, /* Array index: 0x1424 */ 0xBC38,0x396B, /* Array index: 0x1424 */ 0xBC49,0x3971, /* Array index: 0x1424 */ 0xBC4C,0x3972, /* Array index: 0x1424 */ 0xBC4D,0x3973, /* Array index: 0x1424 */ 0xBC50,0x3974, /* Array index: 0x1424 */ 0xBC5D,0x3975, /* Array index: 0x1424 */ 0xBC84,0x3976, /* Array index: 0x1424 */ 0xBC85,0x3977, /* Array index: 0x1424 */ 0xBC88,0x3978, /* Array index: 0x1424 */ 0xBC8B,0x3979, /* Array index: 0x1424 */ 0xBC8C,0x397A, /* Array index: 0x1424 */ 0xBC8E,0x397B, /* Array index: 0x1424 */ 0xBC94,0x397C, /* Array index: 0x1424 */ 0xBC95,0x397D, /* Array index: 0x1424 */ 0xBC97,0x397E, /* Array index: 0x1424 */ 0xBC99,0x3A21, /* Array index: 0x1424 */ 0xBC9A,0x3A22, /* Array index: 0x1424 */ 0xBCA0,0x3A23, /* Array index: 0x1424 */ 0xBCA1,0x3A24, /* Array index: 0x1424 */ 0xBCA4,0x3A25, /* Array index: 0x1424 */ 0xBCA7,0x3A26, /* Array index: 0x1424 */ 0xBCA8,0x3A27, /* Array index: 0x1424 */ 0xBCBC,0x3A2D, /* Array index: 0x1424 */ 0xBCBD,0x3A2E, /* Array index: 0x1424 */ 0xBCC0,0x3A2F, /* Array index: 0x1424 */ 0xBCC4,0x3A30, /* Array index: 0x1424 */ 0xBCD5,0x3A35, /* Array index: 0x1424 */ 0xBCD8,0x3A36, /* Array index: 0x1424 */ 0xBCDC,0x3A37, /* Array index: 0x1424 */ 0xBCFC,0x3A3C, /* Array index: 0x1424 */ 0xBD04,0x3A3D, /* Array index: 0x1424 */ 0xBD05,0x3A3E, /* Array index: 0x1424 */ 0xBD07,0x3A3F, /* Array index: 0x1424 */ 0xBD09,0x3A40, /* Array index: 0x1424 */ 0xBD10,0x3A41, /* Array index: 0x1424 */ 0xBD14,0x3A42, /* Array index: 0x1424 */ 0xBD24,0x3A43, /* Array index: 0x1424 */ 0xBD2C,0x3A44, /* Array index: 0x1424 */ 0xBD40,0x3A45, /* Array index: 0x1424 */ 0xBD48,0x3A46, /* Array index: 0x1424 */ 0xBD49,0x3A47, /* Array index: 0x1424 */ 0xBD4C,0x3A48, /* Array index: 0x1424 */ 0xBD50,0x3A49, /* Array index: 0x1424 */ 0xBD58,0x3A4A, /* Array index: 0x1424 */ 0xBD59,0x3A4B, /* Array index: 0x1424 */ 0xBD64,0x3A4C, /* Array index: 0x1424 */ 0xBD68,0x3A4D, /* Array index: 0x1424 */ 0xBD80,0x3A4E, /* Array index: 0x1424 */ 0xBD81,0x3A4F, /* Array index: 0x1424 */ 0xBD84,0x3A50, /* Array index: 0x1424 */ 0xBD90,0x3A55, /* Array index: 0x1424 */ 0xBD91,0x3A56, /* Array index: 0x1424 */ 0xBD93,0x3A57, /* Array index: 0x1424 */ 0xBD95,0x3A58, /* Array index: 0x1424 */ 0xBD99,0x3A59, /* Array index: 0x1424 */ 0xBD9A,0x3A5A, /* Array index: 0x1424 */ 0xBD9C,0x3A5B, /* Array index: 0x1424 */ 0xBDA4,0x3A5C, /* Array index: 0x1424 */ 0xBDB0,0x3A5D, /* Array index: 0x1424 */ 0xBDB8,0x3A5E, /* Array index: 0x1424 */ 0xBDD4,0x3A5F, /* Array index: 0x1424 */ 0xBDD5,0x3A60, /* Array index: 0x1424 */ 0xBDD8,0x3A61, /* Array index: 0x1424 */ 0xBDDC,0x3A62, /* Array index: 0x1424 */ 0xBDE9,0x3A63, /* Array index: 0x1424 */ 0xBDF0,0x3A64, /* Array index: 0x1424 */ 0xBDF4,0x3A65, /* Array index: 0x1424 */ 0xBDF8,0x3A66, /* Array index: 0x1424 */ 0xBE00,0x3A67, /* Array index: 0x1424 */ 0xBE03,0x3A68, /* Array index: 0x1424 */ 0xBE05,0x3A69, /* Array index: 0x1424 */ 0xBE0C,0x3A6A, /* Array index: 0x1424 */ 0xBE0D,0x3A6B, /* Array index: 0x1424 */ 0xBE10,0x3A6C, /* Array index: 0x1424 */ 0xBE14,0x3A6D, /* Array index: 0x1424 */ 0xBE1C,0x3A6E, /* Array index: 0x1424 */ 0xBE1D,0x3A6F, /* Array index: 0x1424 */ 0xBE1F,0x3A70, /* Array index: 0x1424 */ 0xBE44,0x3A71, /* Array index: 0x1424 */ 0xBE45,0x3A72, /* Array index: 0x1424 */ 0xBE48,0x3A73, /* Array index: 0x1424 */ 0xBE4C,0x3A74, /* Array index: 0x1424 */ 0xBE4E,0x3A75, /* Array index: 0x1424 */ 0xBE54,0x3A76, /* Array index: 0x1424 */ 0xBE55,0x3A77, /* Array index: 0x1424 */ 0xBE60,0x3A7C, /* Array index: 0x1424 */ 0xBE61,0x3A7D, /* Array index: 0x1424 */ 0xBE64,0x3A7E, /* Array index: 0x1424 */ 0xBE68,0x3B21, /* Array index: 0x1424 */ 0xBE6A,0x3B22, /* Array index: 0x1424 */ 0xBE80,0x3B2B, /* Array index: 0x1424 */ 0xBE84,0x3B2C, /* Array index: 0x1424 */ 0xBE98,0x3B32, /* Array index: 0x1424 */ 0xBE99,0x3B33, /* Array index: 0x1424 */ 0xBEA8,0x3B34, /* Array index: 0x1424 */ 0xBED0,0x3B35, /* Array index: 0x1424 */ 0xBED1,0x3B36, /* Array index: 0x1424 */ 0xBED4,0x3B37, /* Array index: 0x1424 */ 0xBED7,0x3B38, /* Array index: 0x1424 */ 0xBED8,0x3B39, /* Array index: 0x1424 */ 0xBEE0,0x3B3A, /* Array index: 0x1424 */ 0xBEEC,0x3B3E, /* Array index: 0x1424 */ 0xBF01,0x3B3F, /* Array index: 0x1424 */ 0xBF08,0x3B40, /* Array index: 0x1424 */ 0xBF09,0x3B41, /* Array index: 0x1424 */ 0xBF40,0x3B47, /* Array index: 0x1424 */ 0xBF41,0x3B48, /* Array index: 0x1424 */ 0xBF44,0x3B49, /* Array index: 0x1424 */ 0xBF48,0x3B4A, /* Array index: 0x1424 */ 0xBF50,0x3B4B, /* Array index: 0x1424 */ 0xBF51,0x3B4C, /* Array index: 0x1424 */ 0xBF55,0x3B4D, /* Array index: 0x1424 */ 0xBF94,0x3B4E, /* Array index: 0x1424 */ 0xBFB0,0x3B4F, /* Array index: 0x1424 */ 0xBFC5,0x3B50, /* Array index: 0x1424 */ 0xBFCC,0x3B51, /* Array index: 0x1424 */ 0xBFCD,0x3B52, /* Array index: 0x1424 */ 0xBFD0,0x3B53, /* Array index: 0x1424 */ 0xBFD4,0x3B54, /* Array index: 0x1424 */ 0xBFDC,0x3B55, /* Array index: 0x1424 */ 0xBFDF,0x3B56, /* Array index: 0x1424 */ 0xBFE1,0x3B57, /* Array index: 0x1424 */ 0xC03C,0x3B58, /* Array index: 0x1424 */ 0xC051,0x3B59, /* Array index: 0x1424 */ 0xC058,0x3B5A, /* Array index: 0x1424 */ 0xC05C,0x3B5B, /* Array index: 0x1424 */ 0xC060,0x3B5C, /* Array index: 0x1424 */ 0xC068,0x3B5D, /* Array index: 0x1424 */ 0xC069,0x3B5E, /* Array index: 0x1424 */ 0xC090,0x3B5F, /* Array index: 0x1424 */ 0xC091,0x3B60, /* Array index: 0x1424 */ 0xC094,0x3B61, /* Array index: 0x1424 */ 0xC098,0x3B62, /* Array index: 0x1424 */ 0xC0A0,0x3B63, /* Array index: 0x1424 */ 0xC0A1,0x3B64, /* Array index: 0x1424 */ 0xC0A3,0x3B65, /* Array index: 0x1424 */ 0xC0A5,0x3B66, /* Array index: 0x1424 */ 0xC0C5,0x3B74, /* Array index: 0x1424 */ 0xC0C8,0x3B75, /* Array index: 0x1424 */ 0xC0C9,0x3B76, /* Array index: 0x1424 */ 0xC0CC,0x3B77, /* Array index: 0x1424 */ 0xC0D0,0x3B78, /* Array index: 0x1424 */ 0xC0E4,0x3B7E, /* Array index: 0x1424 */ 0xC0E5,0x3C21, /* Array index: 0x1424 */ 0xC0E8,0x3C22, /* Array index: 0x1424 */ 0xC0EC,0x3C23, /* Array index: 0x1424 */ 0xC0F4,0x3C24, /* Array index: 0x1424 */ 0xC0F5,0x3C25, /* Array index: 0x1424 */ 0xC0F7,0x3C26, /* Array index: 0x1424 */ 0xC0F9,0x3C27, /* Array index: 0x1424 */ 0xC100,0x3C28, /* Array index: 0x1424 */ 0xC104,0x3C29, /* Array index: 0x1424 */ 0xC108,0x3C2A, /* Array index: 0x1424 */ 0xC110,0x3C2B, /* Array index: 0x1424 */ 0xC115,0x3C2C, /* Array index: 0x1424 */ 0xC136,0x3C3B, /* Array index: 0x1424 */ 0xC138,0x3C3C, /* Array index: 0x1424 */ 0xC139,0x3C3D, /* Array index: 0x1424 */ 0xC13C,0x3C3E, /* Array index: 0x1424 */ 0xC140,0x3C3F, /* Array index: 0x1424 */ 0xC154,0x3C45, /* Array index: 0x1424 */ 0xC155,0x3C46, /* Array index: 0x1424 */ 0xC158,0x3C47, /* Array index: 0x1424 */ 0xC15C,0x3C48, /* Array index: 0x1424 */ 0xC170,0x3C4E, /* Array index: 0x1424 */ 0xC174,0x3C4F, /* Array index: 0x1424 */ 0xC178,0x3C50, /* Array index: 0x1424 */ 0xC185,0x3C51, /* Array index: 0x1424 */ 0xC194,0x3C56, /* Array index: 0x1424 */ 0xC196,0x3C57, /* Array index: 0x1424 */ 0xC19C,0x3C58, /* Array index: 0x1424 */ 0xC19D,0x3C59, /* Array index: 0x1424 */ 0xC19F,0x3C5A, /* Array index: 0x1424 */ 0xC1A1,0x3C5B, /* Array index: 0x1424 */ 0xC1A5,0x3C5C, /* Array index: 0x1424 */ 0xC1A8,0x3C5D, /* Array index: 0x1424 */ 0xC1A9,0x3C5E, /* Array index: 0x1424 */ 0xC1AC,0x3C5F, /* Array index: 0x1424 */ 0xC1B0,0x3C60, /* Array index: 0x1424 */ 0xC1BD,0x3C61, /* Array index: 0x1424 */ 0xC1C4,0x3C62, /* Array index: 0x1424 */ 0xC1C8,0x3C63, /* Array index: 0x1424 */ 0xC1CC,0x3C64, /* Array index: 0x1424 */ 0xC1D4,0x3C65, /* Array index: 0x1424 */ 0xC1D7,0x3C66, /* Array index: 0x1424 */ 0xC1D8,0x3C67, /* Array index: 0x1424 */ 0xC1E0,0x3C68, /* Array index: 0x1424 */ 0xC1E4,0x3C69, /* Array index: 0x1424 */ 0xC1E8,0x3C6A, /* Array index: 0x1424 */ 0xC1F0,0x3C6B, /* Array index: 0x1424 */ 0xC1F1,0x3C6C, /* Array index: 0x1424 */ 0xC1F3,0x3C6D, /* Array index: 0x1424 */ 0xC1FC,0x3C6E, /* Array index: 0x1424 */ 0xC1FD,0x3C6F, /* Array index: 0x1424 */ 0xC200,0x3C70, /* Array index: 0x1424 */ 0xC204,0x3C71, /* Array index: 0x1424 */ 0xC20C,0x3C72, /* Array index: 0x1424 */ 0xC20D,0x3C73, /* Array index: 0x1424 */ 0xC20F,0x3C74, /* Array index: 0x1424 */ 0xC211,0x3C75, /* Array index: 0x1424 */ 0xC218,0x3C76, /* Array index: 0x1424 */ 0xC219,0x3C77, /* Array index: 0x1424 */ 0xC21C,0x3C78, /* Array index: 0x1424 */ 0xC21F,0x3C79, /* Array index: 0x1424 */ 0xC220,0x3C7A, /* Array index: 0x1424 */ 0xC228,0x3C7B, /* Array index: 0x1424 */ 0xC229,0x3C7C, /* Array index: 0x1424 */ 0xC22B,0x3C7D, /* Array index: 0x1424 */ 0xC22D,0x3C7E, /* Array index: 0x1424 */ 0xC22F,0x3D21, /* Array index: 0x1424 */ 0xC231,0x3D22, /* Array index: 0x1424 */ 0xC232,0x3D23, /* Array index: 0x1424 */ 0xC234,0x3D24, /* Array index: 0x1424 */ 0xC248,0x3D25, /* Array index: 0x1424 */ 0xC250,0x3D26, /* Array index: 0x1424 */ 0xC251,0x3D27, /* Array index: 0x1424 */ 0xC254,0x3D28, /* Array index: 0x1424 */ 0xC258,0x3D29, /* Array index: 0x1424 */ 0xC260,0x3D2A, /* Array index: 0x1424 */ 0xC265,0x3D2B, /* Array index: 0x1424 */ 0xC26C,0x3D2C, /* Array index: 0x1424 */ 0xC26D,0x3D2D, /* Array index: 0x1424 */ 0xC270,0x3D2E, /* Array index: 0x1424 */ 0xC274,0x3D2F, /* Array index: 0x1424 */ 0xC27C,0x3D30, /* Array index: 0x1424 */ 0xC27D,0x3D31, /* Array index: 0x1424 */ 0xC27F,0x3D32, /* Array index: 0x1424 */ 0xC281,0x3D33, /* Array index: 0x1424 */ 0xC288,0x3D34, /* Array index: 0x1424 */ 0xC289,0x3D35, /* Array index: 0x1424 */ 0xC290,0x3D36, /* Array index: 0x1424 */ 0xC298,0x3D37, /* Array index: 0x1424 */ 0xC29B,0x3D38, /* Array index: 0x1424 */ 0xC29D,0x3D39, /* Array index: 0x1424 */ 0xC2A4,0x3D3A, /* Array index: 0x1424 */ 0xC2A5,0x3D3B, /* Array index: 0x1424 */ 0xC2A8,0x3D3C, /* Array index: 0x1424 */ 0xC2AC,0x3D3D, /* Array index: 0x1424 */ 0xC2AD,0x3D3E, /* Array index: 0x1424 */ 0xC2B4,0x3D3F, /* Array index: 0x1424 */ 0xC2B5,0x3D40, /* Array index: 0x1424 */ 0xC2B7,0x3D41, /* Array index: 0x1424 */ 0xC2B9,0x3D42, /* Array index: 0x1424 */ 0xC2DC,0x3D43, /* Array index: 0x1424 */ 0xC2DD,0x3D44, /* Array index: 0x1424 */ 0xC2E0,0x3D45, /* Array index: 0x1424 */ 0xC2E3,0x3D46, /* Array index: 0x1424 */ 0xC2E4,0x3D47, /* Array index: 0x1424 */ 0xC2F6,0x3D4D, /* Array index: 0x1424 */ 0xC300,0x3D52, /* Array index: 0x1424 */ 0xC308,0x3D53, /* Array index: 0x1424 */ 0xC309,0x3D54, /* Array index: 0x1424 */ 0xC30C,0x3D55, /* Array index: 0x1424 */ 0xC30D,0x3D56, /* Array index: 0x1424 */ 0xC318,0x3D5A, /* Array index: 0x1424 */ 0xC31C,0x3D5B, /* Array index: 0x1424 */ 0xC324,0x3D5C, /* Array index: 0x1424 */ 0xC325,0x3D5D, /* Array index: 0x1424 */ 0xC328,0x3D5E, /* Array index: 0x1424 */ 0xC329,0x3D5F, /* Array index: 0x1424 */ 0xC345,0x3D60, /* Array index: 0x1424 */ 0xC368,0x3D61, /* Array index: 0x1424 */ 0xC369,0x3D62, /* Array index: 0x1424 */ 0xC36C,0x3D63, /* Array index: 0x1424 */ 0xC370,0x3D64, /* Array index: 0x1424 */ 0xC372,0x3D65, /* Array index: 0x1424 */ 0xC378,0x3D66, /* Array index: 0x1424 */ 0xC379,0x3D67, /* Array index: 0x1424 */ 0xC37C,0x3D68, /* Array index: 0x1424 */ 0xC37D,0x3D69, /* Array index: 0x1424 */ 0xC384,0x3D6A, /* Array index: 0x1424 */ 0xC388,0x3D6B, /* Array index: 0x1424 */ 0xC38C,0x3D6C, /* Array index: 0x1424 */ 0xC3C0,0x3D6D, /* Array index: 0x1424 */ 0xC3D8,0x3D6E, /* Array index: 0x1424 */ 0xC3D9,0x3D6F, /* Array index: 0x1424 */ 0xC3DC,0x3D70, /* Array index: 0x1424 */ 0xC3DF,0x3D71, /* Array index: 0x1424 */ 0xC3E0,0x3D72, /* Array index: 0x1424 */ 0xC3E2,0x3D73, /* Array index: 0x1424 */ 0xC3E8,0x3D74, /* Array index: 0x1424 */ 0xC3E9,0x3D75, /* Array index: 0x1424 */ 0xC3ED,0x3D76, /* Array index: 0x1424 */ 0xC3F4,0x3D77, /* Array index: 0x1424 */ 0xC3F5,0x3D78, /* Array index: 0x1424 */ 0xC3F8,0x3D79, /* Array index: 0x1424 */ 0xC408,0x3D7A, /* Array index: 0x1424 */ 0xC410,0x3D7B, /* Array index: 0x1424 */ 0xC424,0x3D7C, /* Array index: 0x1424 */ 0xC42C,0x3D7D, /* Array index: 0x1424 */ 0xC430,0x3D7E, /* Array index: 0x1424 */ 0xC434,0x3E21, /* Array index: 0x1424 */ 0xC43C,0x3E22, /* Array index: 0x1424 */ 0xC43D,0x3E23, /* Array index: 0x1424 */ 0xC448,0x3E24, /* Array index: 0x1424 */ 0xC464,0x3E25, /* Array index: 0x1424 */ 0xC465,0x3E26, /* Array index: 0x1424 */ 0xC468,0x3E27, /* Array index: 0x1424 */ 0xC46C,0x3E28, /* Array index: 0x1424 */ 0xC474,0x3E29, /* Array index: 0x1424 */ 0xC475,0x3E2A, /* Array index: 0x1424 */ 0xC479,0x3E2B, /* Array index: 0x1424 */ 0xC480,0x3E2C, /* Array index: 0x1424 */ 0xC494,0x3E2D, /* Array index: 0x1424 */ 0xC49C,0x3E2E, /* Array index: 0x1424 */ 0xC4B8,0x3E2F, /* Array index: 0x1424 */ 0xC4BC,0x3E30, /* Array index: 0x1424 */ 0xC4E9,0x3E31, /* Array index: 0x1424 */ 0xC4F0,0x3E32, /* Array index: 0x1424 */ 0xC4F1,0x3E33, /* Array index: 0x1424 */ 0xC4F4,0x3E34, /* Array index: 0x1424 */ 0xC4F8,0x3E35, /* Array index: 0x1424 */ 0xC4FA,0x3E36, /* Array index: 0x1424 */ 0xC50C,0x3E3A, /* Array index: 0x1424 */ 0xC510,0x3E3B, /* Array index: 0x1424 */ 0xC514,0x3E3C, /* Array index: 0x1424 */ 0xC51C,0x3E3D, /* Array index: 0x1424 */ 0xC528,0x3E3E, /* Array index: 0x1424 */ 0xC529,0x3E3F, /* Array index: 0x1424 */ 0xC52C,0x3E40, /* Array index: 0x1424 */ 0xC530,0x3E41, /* Array index: 0x1424 */ 0xC538,0x3E42, /* Array index: 0x1424 */ 0xC539,0x3E43, /* Array index: 0x1424 */ 0xC53B,0x3E44, /* Array index: 0x1424 */ 0xC53D,0x3E45, /* Array index: 0x1424 */ 0xC564,0x3E58, /* Array index: 0x1424 */ 0xC568,0x3E59, /* Array index: 0x1424 */ 0xC57C,0x3E5F, /* Array index: 0x1424 */ 0xC57D,0x3E60, /* Array index: 0x1424 */ 0xC580,0x3E61, /* Array index: 0x1424 */ 0xC584,0x3E62, /* Array index: 0x1424 */ 0xC587,0x3E63, /* Array index: 0x1424 */ 0xC58C,0x3E64, /* Array index: 0x1424 */ 0xC58D,0x3E65, /* Array index: 0x1424 */ 0xC58F,0x3E66, /* Array index: 0x1424 */ 0xC591,0x3E67, /* Array index: 0x1424 */ 0xC595,0x3E68, /* Array index: 0x1424 */ 0xC597,0x3E69, /* Array index: 0x1424 */ 0xC598,0x3E6A, /* Array index: 0x1424 */ 0xC59C,0x3E6B, /* Array index: 0x1424 */ 0xC5A0,0x3E6C, /* Array index: 0x1424 */ 0xC5A9,0x3E6D, /* Array index: 0x1424 */ 0xC5B4,0x3E6E, /* Array index: 0x1424 */ 0xC5B5,0x3E6F, /* Array index: 0x1424 */ 0xC5D4,0x3F23, /* Array index: 0x1424 */ 0xC5D8,0x3F24, /* Array index: 0x1424 */ 0xC5E0,0x3F25, /* Array index: 0x1424 */ 0xC5E1,0x3F26, /* Array index: 0x1424 */ 0xC5E3,0x3F27, /* Array index: 0x1424 */ 0xC5E5,0x3F28, /* Array index: 0x1424 */ 0xC5F4,0x3F2D, /* Array index: 0x1424 */ 0xC5F6,0x3F2E, /* Array index: 0x1424 */ 0xC5F7,0x3F2F, /* Array index: 0x1424 */ 0xC60C,0x3F3A, /* Array index: 0x1424 */ 0xC610,0x3F3B, /* Array index: 0x1424 */ 0xC624,0x3F40, /* Array index: 0x1424 */ 0xC625,0x3F41, /* Array index: 0x1424 */ 0xC628,0x3F42, /* Array index: 0x1424 */ 0xC640,0x3F4D, /* Array index: 0x1424 */ 0xC641,0x3F4E, /* Array index: 0x1424 */ 0xC644,0x3F4F, /* Array index: 0x1424 */ 0xC648,0x3F50, /* Array index: 0x1424 */ 0xC65C,0x3F56, /* Array index: 0x1424 */ 0xC65D,0x3F57, /* Array index: 0x1424 */ 0xC660,0x3F58, /* Array index: 0x1424 */ 0xC66C,0x3F59, /* Array index: 0x1424 */ 0xC66F,0x3F5A, /* Array index: 0x1424 */ 0xC671,0x3F5B, /* Array index: 0x1424 */ 0xC678,0x3F5C, /* Array index: 0x1424 */ 0xC679,0x3F5D, /* Array index: 0x1424 */ 0xC67C,0x3F5E, /* Array index: 0x1424 */ 0xC680,0x3F5F, /* Array index: 0x1424 */ 0xC688,0x3F60, /* Array index: 0x1424 */ 0xC689,0x3F61, /* Array index: 0x1424 */ 0xC68B,0x3F62, /* Array index: 0x1424 */ 0xC68D,0x3F63, /* Array index: 0x1424 */ 0xC694,0x3F64, /* Array index: 0x1424 */ 0xC695,0x3F65, /* Array index: 0x1424 */ 0xC698,0x3F66, /* Array index: 0x1424 */ 0xC69C,0x3F67, /* Array index: 0x1424 */ 0xC6A4,0x3F68, /* Array index: 0x1424 */ 0xC6A5,0x3F69, /* Array index: 0x1424 */ 0xC6A7,0x3F6A, /* Array index: 0x1424 */ 0xC6A9,0x3F6B, /* Array index: 0x1424 */ 0xC6B0,0x3F6C, /* Array index: 0x1424 */ 0xC6B1,0x3F6D, /* Array index: 0x1424 */ 0xC6B4,0x3F6E, /* Array index: 0x1424 */ 0xC6C0,0x3F72, /* Array index: 0x1424 */ 0xC6C1,0x3F73, /* Array index: 0x1424 */ 0xC6C3,0x3F74, /* Array index: 0x1424 */ 0xC6C5,0x3F75, /* Array index: 0x1424 */ 0xC6CC,0x3F76, /* Array index: 0x1424 */ 0xC6CD,0x3F77, /* Array index: 0x1424 */ 0xC6D0,0x3F78, /* Array index: 0x1424 */ 0xC6D4,0x3F79, /* Array index: 0x1424 */ 0xC6DC,0x3F7A, /* Array index: 0x1424 */ 0xC6DD,0x3F7B, /* Array index: 0x1424 */ 0xC6E0,0x3F7C, /* Array index: 0x1424 */ 0xC6E1,0x3F7D, /* Array index: 0x1424 */ 0xC6E8,0x3F7E, /* Array index: 0x1424 */ 0xC6E9,0x4021, /* Array index: 0x1424 */ 0xC6EC,0x4022, /* Array index: 0x1424 */ 0xC6F0,0x4023, /* Array index: 0x1424 */ 0xC6F8,0x4024, /* Array index: 0x1424 */ 0xC6F9,0x4025, /* Array index: 0x1424 */ 0xC6FD,0x4026, /* Array index: 0x1424 */ 0xC704,0x4027, /* Array index: 0x1424 */ 0xC705,0x4028, /* Array index: 0x1424 */ 0xC708,0x4029, /* Array index: 0x1424 */ 0xC70C,0x402A, /* Array index: 0x1424 */ 0xC714,0x402B, /* Array index: 0x1424 */ 0xC715,0x402C, /* Array index: 0x1424 */ 0xC717,0x402D, /* Array index: 0x1424 */ 0xC719,0x402E, /* Array index: 0x1424 */ 0xC720,0x402F, /* Array index: 0x1424 */ 0xC721,0x4030, /* Array index: 0x1424 */ 0xC724,0x4031, /* Array index: 0x1424 */ 0xC728,0x4032, /* Array index: 0x1424 */ 0xC730,0x4033, /* Array index: 0x1424 */ 0xC731,0x4034, /* Array index: 0x1424 */ 0xC733,0x4035, /* Array index: 0x1424 */ 0xC735,0x4036, /* Array index: 0x1424 */ 0xC737,0x4037, /* Array index: 0x1424 */ 0xC73C,0x4038, /* Array index: 0x1424 */ 0xC73D,0x4039, /* Array index: 0x1424 */ 0xC740,0x403A, /* Array index: 0x1424 */ 0xC744,0x403B, /* Array index: 0x1424 */ 0xC74A,0x403C, /* Array index: 0x1424 */ 0xC74C,0x403D, /* Array index: 0x1424 */ 0xC74D,0x403E, /* Array index: 0x1424 */ 0xC75C,0x4048, /* Array index: 0x1424 */ 0xC760,0x4049, /* Array index: 0x1424 */ 0xC768,0x404A, /* Array index: 0x1424 */ 0xC76B,0x404B, /* Array index: 0x1424 */ 0xC774,0x404C, /* Array index: 0x1424 */ 0xC775,0x404D, /* Array index: 0x1424 */ 0xC778,0x404E, /* Array index: 0x1424 */ 0xC78E,0x4059, /* Array index: 0x1424 */ 0xC790,0x405A, /* Array index: 0x1424 */ 0xC791,0x405B, /* Array index: 0x1424 */ 0xC7AC,0x4067, /* Array index: 0x1424 */ 0xC7AD,0x4068, /* Array index: 0x1424 */ 0xC7B0,0x4069, /* Array index: 0x1424 */ 0xC7B4,0x406A, /* Array index: 0x1424 */ 0xC7C8,0x4070, /* Array index: 0x1424 */ 0xC7C9,0x4071, /* Array index: 0x1424 */ 0xC7CC,0x4072, /* Array index: 0x1424 */ 0xC7CE,0x4073, /* Array index: 0x1424 */ 0xC7D0,0x4074, /* Array index: 0x1424 */ 0xC7D8,0x4075, /* Array index: 0x1424 */ 0xC7DD,0x4076, /* Array index: 0x1424 */ 0xC7E4,0x4077, /* Array index: 0x1424 */ 0xC7E8,0x4078, /* Array index: 0x1424 */ 0xC7EC,0x4079, /* Array index: 0x1424 */ 0xC800,0x407A, /* Array index: 0x1424 */ 0xC801,0x407B, /* Array index: 0x1424 */ 0xC804,0x407C, /* Array index: 0x1424 */ 0xC808,0x407D, /* Array index: 0x1424 */ 0xC80A,0x407E, /* Array index: 0x1424 */ 0xC810,0x4121, /* Array index: 0x1424 */ 0xC811,0x4122, /* Array index: 0x1424 */ 0xC813,0x4123, /* Array index: 0x1424 */ 0xC815,0x4124, /* Array index: 0x1424 */ 0xC816,0x4125, /* Array index: 0x1424 */ 0xC81C,0x4126, /* Array index: 0x1424 */ 0xC81D,0x4127, /* Array index: 0x1424 */ 0xC820,0x4128, /* Array index: 0x1424 */ 0xC824,0x4129, /* Array index: 0x1424 */ 0xC82C,0x412A, /* Array index: 0x1424 */ 0xC82D,0x412B, /* Array index: 0x1424 */ 0xC82F,0x412C, /* Array index: 0x1424 */ 0xC831,0x412D, /* Array index: 0x1424 */ 0xC838,0x412E, /* Array index: 0x1424 */ 0xC83C,0x412F, /* Array index: 0x1424 */ 0xC840,0x4130, /* Array index: 0x1424 */ 0xC848,0x4131, /* Array index: 0x1424 */ 0xC849,0x4132, /* Array index: 0x1424 */ 0xC84C,0x4133, /* Array index: 0x1424 */ 0xC84D,0x4134, /* Array index: 0x1424 */ 0xC854,0x4135, /* Array index: 0x1424 */ 0xC870,0x4136, /* Array index: 0x1424 */ 0xC871,0x4137, /* Array index: 0x1424 */ 0xC874,0x4138, /* Array index: 0x1424 */ 0xC878,0x4139, /* Array index: 0x1424 */ 0xC87A,0x413A, /* Array index: 0x1424 */ 0xC880,0x413B, /* Array index: 0x1424 */ 0xC881,0x413C, /* Array index: 0x1424 */ 0xC894,0x4144, /* Array index: 0x1424 */ 0xC89D,0x4145, /* Array index: 0x1424 */ 0xC89F,0x4146, /* Array index: 0x1424 */ 0xC8A1,0x4147, /* Array index: 0x1424 */ 0xC8A8,0x4148, /* Array index: 0x1424 */ 0xC8BC,0x4149, /* Array index: 0x1424 */ 0xC8BD,0x414A, /* Array index: 0x1424 */ 0xC8C4,0x414B, /* Array index: 0x1424 */ 0xC8C8,0x414C, /* Array index: 0x1424 */ 0xC8CC,0x414D, /* Array index: 0x1424 */ 0xC8D4,0x414E, /* Array index: 0x1424 */ 0xC8D5,0x414F, /* Array index: 0x1424 */ 0xC8D7,0x4150, /* Array index: 0x1424 */ 0xC8D9,0x4151, /* Array index: 0x1424 */ 0xC8E0,0x4152, /* Array index: 0x1424 */ 0xC8E1,0x4153, /* Array index: 0x1424 */ 0xC8E4,0x4154, /* Array index: 0x1424 */ 0xC8F5,0x4155, /* Array index: 0x1424 */ 0xC8FC,0x4156, /* Array index: 0x1424 */ 0xC8FD,0x4157, /* Array index: 0x1424 */ 0xC900,0x4158, /* Array index: 0x1424 */ 0xC90C,0x415C, /* Array index: 0x1424 */ 0xC90D,0x415D, /* Array index: 0x1424 */ 0xC90F,0x415E, /* Array index: 0x1424 */ 0xC911,0x415F, /* Array index: 0x1424 */ 0xC918,0x4160, /* Array index: 0x1424 */ 0xC92C,0x4161, /* Array index: 0x1424 */ 0xC934,0x4162, /* Array index: 0x1424 */ 0xC950,0x4163, /* Array index: 0x1424 */ 0xC951,0x4164, /* Array index: 0x1424 */ 0xC954,0x4165, /* Array index: 0x1424 */ 0xC958,0x4166, /* Array index: 0x1424 */ 0xC960,0x4167, /* Array index: 0x1424 */ 0xC961,0x4168, /* Array index: 0x1424 */ 0xC963,0x4169, /* Array index: 0x1424 */ 0xC96C,0x416A, /* Array index: 0x1424 */ 0xC970,0x416B, /* Array index: 0x1424 */ 0xC974,0x416C, /* Array index: 0x1424 */ 0xC97C,0x416D, /* Array index: 0x1424 */ 0xC988,0x416E, /* Array index: 0x1424 */ 0xC989,0x416F, /* Array index: 0x1424 */ 0xC98C,0x4170, /* Array index: 0x1424 */ 0xC990,0x4171, /* Array index: 0x1424 */ 0xC998,0x4172, /* Array index: 0x1424 */ 0xC999,0x4173, /* Array index: 0x1424 */ 0xC99B,0x4174, /* Array index: 0x1424 */ 0xC99D,0x4175, /* Array index: 0x1424 */ 0xC9C0,0x4176, /* Array index: 0x1424 */ 0xC9C1,0x4177, /* Array index: 0x1424 */ 0xC9C4,0x4178, /* Array index: 0x1424 */ 0xC9C7,0x4179, /* Array index: 0x1424 */ 0xC9C8,0x417A, /* Array index: 0x1424 */ 0xC9CA,0x417B, /* Array index: 0x1424 */ 0xC9D0,0x417C, /* Array index: 0x1424 */ 0xC9D1,0x417D, /* Array index: 0x1424 */ 0xC9D3,0x417E, /* Array index: 0x1424 */ 0xC9D5,0x4221, /* Array index: 0x1424 */ 0xC9D6,0x4222, /* Array index: 0x1424 */ 0xC9E0,0x4227, /* Array index: 0x1424 */ 0xC9E2,0x4228, /* Array index: 0x1424 */ 0xC9E4,0x4229, /* Array index: 0x1424 */ 0xC9E7,0x422A, /* Array index: 0x1424 */ 0xC9F8,0x4230, /* Array index: 0x1424 */ 0xC9F9,0x4231, /* Array index: 0x1424 */ 0xC9FC,0x4232, /* Array index: 0x1424 */ 0xCA00,0x4233, /* Array index: 0x1424 */ 0xCA14,0x4239, /* Array index: 0x1424 */ 0xCA18,0x423A, /* Array index: 0x1424 */ 0xCA29,0x423B, /* Array index: 0x1424 */ 0xCA4C,0x423C, /* Array index: 0x1424 */ 0xCA4D,0x423D, /* Array index: 0x1424 */ 0xCA50,0x423E, /* Array index: 0x1424 */ 0xCA54,0x423F, /* Array index: 0x1424 */ 0xCA68,0x4245, /* Array index: 0x1424 */ 0xCA7D,0x4246, /* Array index: 0x1424 */ 0xCA84,0x4247, /* Array index: 0x1424 */ 0xCA98,0x4248, /* Array index: 0x1424 */ 0xCABC,0x4249, /* Array index: 0x1424 */ 0xCABD,0x424A, /* Array index: 0x1424 */ 0xCAC0,0x424B, /* Array index: 0x1424 */ 0xCAC4,0x424C, /* Array index: 0x1424 */ 0xCACC,0x424D, /* Array index: 0x1424 */ 0xCACD,0x424E, /* Array index: 0x1424 */ 0xCACF,0x424F, /* Array index: 0x1424 */ 0xCAD1,0x4250, /* Array index: 0x1424 */ 0xCAD3,0x4251, /* Array index: 0x1424 */ 0xCAD8,0x4252, /* Array index: 0x1424 */ 0xCAD9,0x4253, /* Array index: 0x1424 */ 0xCAE0,0x4254, /* Array index: 0x1424 */ 0xCAEC,0x4255, /* Array index: 0x1424 */ 0xCAF4,0x4256, /* Array index: 0x1424 */ 0xCB08,0x4257, /* Array index: 0x1424 */ 0xCB10,0x4258, /* Array index: 0x1424 */ 0xCB14,0x4259, /* Array index: 0x1424 */ 0xCB18,0x425A, /* Array index: 0x1424 */ 0xCB20,0x425B, /* Array index: 0x1424 */ 0xCB21,0x425C, /* Array index: 0x1424 */ 0xCB41,0x425D, /* Array index: 0x1424 */ 0xCB48,0x425E, /* Array index: 0x1424 */ 0xCB49,0x425F, /* Array index: 0x1424 */ 0xCB4C,0x4260, /* Array index: 0x1424 */ 0xCB50,0x4261, /* Array index: 0x1424 */ 0xCB58,0x4262, /* Array index: 0x1424 */ 0xCB59,0x4263, /* Array index: 0x1424 */ 0xCB5D,0x4264, /* Array index: 0x1424 */ 0xCB64,0x4265, /* Array index: 0x1424 */ 0xCB78,0x4266, /* Array index: 0x1424 */ 0xCB79,0x4267, /* Array index: 0x1424 */ 0xCB9C,0x4268, /* Array index: 0x1424 */ 0xCBB8,0x4269, /* Array index: 0x1424 */ 0xCBD4,0x426A, /* Array index: 0x1424 */ 0xCBE4,0x426B, /* Array index: 0x1424 */ 0xCBE7,0x426C, /* Array index: 0x1424 */ 0xCBE9,0x426D, /* Array index: 0x1424 */ 0xCC0C,0x426E, /* Array index: 0x1424 */ 0xCC0D,0x426F, /* Array index: 0x1424 */ 0xCC10,0x4270, /* Array index: 0x1424 */ 0xCC14,0x4271, /* Array index: 0x1424 */ 0xCC1C,0x4272, /* Array index: 0x1424 */ 0xCC1D,0x4273, /* Array index: 0x1424 */ 0xCC21,0x4274, /* Array index: 0x1424 */ 0xCC22,0x4275, /* Array index: 0x1424 */ 0xCC2C,0x4279, /* Array index: 0x1424 */ 0xCC2E,0x427A, /* Array index: 0x1424 */ 0xCC30,0x427B, /* Array index: 0x1424 */ 0xCC44,0x4324, /* Array index: 0x1424 */ 0xCC45,0x4325, /* Array index: 0x1424 */ 0xCC48,0x4326, /* Array index: 0x1424 */ 0xCC4C,0x4327, /* Array index: 0x1424 */ 0xCC60,0x432D, /* Array index: 0x1424 */ 0xCC64,0x432E, /* Array index: 0x1424 */ 0xCC66,0x432F, /* Array index: 0x1424 */ 0xCC68,0x4330, /* Array index: 0x1424 */ 0xCC70,0x4331, /* Array index: 0x1424 */ 0xCC75,0x4332, /* Array index: 0x1424 */ 0xCC98,0x4333, /* Array index: 0x1424 */ 0xCC99,0x4334, /* Array index: 0x1424 */ 0xCC9C,0x4335, /* Array index: 0x1424 */ 0xCCA0,0x4336, /* Array index: 0x1424 */ 0xCCB4,0x433C, /* Array index: 0x1424 */ 0xCCB5,0x433D, /* Array index: 0x1424 */ 0xCCB8,0x433E, /* Array index: 0x1424 */ 0xCCBC,0x433F, /* Array index: 0x1424 */ 0xCCC4,0x4340, /* Array index: 0x1424 */ 0xCCC5,0x4341, /* Array index: 0x1424 */ 0xCCC7,0x4342, /* Array index: 0x1424 */ 0xCCC9,0x4343, /* Array index: 0x1424 */ 0xCCD0,0x4344, /* Array index: 0x1424 */ 0xCCD4,0x4345, /* Array index: 0x1424 */ 0xCCE4,0x4346, /* Array index: 0x1424 */ 0xCCEC,0x4347, /* Array index: 0x1424 */ 0xCCF0,0x4348, /* Array index: 0x1424 */ 0xCD01,0x4349, /* Array index: 0x1424 */ 0xCD08,0x434A, /* Array index: 0x1424 */ 0xCD09,0x434B, /* Array index: 0x1424 */ 0xCD0C,0x434C, /* Array index: 0x1424 */ 0xCD10,0x434D, /* Array index: 0x1424 */ 0xCD18,0x434E, /* Array index: 0x1424 */ 0xCD19,0x434F, /* Array index: 0x1424 */ 0xCD1B,0x4350, /* Array index: 0x1424 */ 0xCD1D,0x4351, /* Array index: 0x1424 */ 0xCD24,0x4352, /* Array index: 0x1424 */ 0xCD28,0x4353, /* Array index: 0x1424 */ 0xCD2C,0x4354, /* Array index: 0x1424 */ 0xCD39,0x4355, /* Array index: 0x1424 */ 0xCD5C,0x4356, /* Array index: 0x1424 */ 0xCD60,0x4357, /* Array index: 0x1424 */ 0xCD64,0x4358, /* Array index: 0x1424 */ 0xCD6C,0x4359, /* Array index: 0x1424 */ 0xCD6D,0x435A, /* Array index: 0x1424 */ 0xCD6F,0x435B, /* Array index: 0x1424 */ 0xCD71,0x435C, /* Array index: 0x1424 */ 0xCD78,0x435D, /* Array index: 0x1424 */ 0xCD88,0x435E, /* Array index: 0x1424 */ 0xCD94,0x435F, /* Array index: 0x1424 */ 0xCD95,0x4360, /* Array index: 0x1424 */ 0xCD98,0x4361, /* Array index: 0x1424 */ 0xCD9C,0x4362, /* Array index: 0x1424 */ 0xCDA4,0x4363, /* Array index: 0x1424 */ 0xCDA5,0x4364, /* Array index: 0x1424 */ 0xCDA7,0x4365, /* Array index: 0x1424 */ 0xCDA9,0x4366, /* Array index: 0x1424 */ 0xCDB0,0x4367, /* Array index: 0x1424 */ 0xCDC4,0x4368, /* Array index: 0x1424 */ 0xCDCC,0x4369, /* Array index: 0x1424 */ 0xCDD0,0x436A, /* Array index: 0x1424 */ 0xCDE8,0x436B, /* Array index: 0x1424 */ 0xCDEC,0x436C, /* Array index: 0x1424 */ 0xCDF0,0x436D, /* Array index: 0x1424 */ 0xCDF8,0x436E, /* Array index: 0x1424 */ 0xCDF9,0x436F, /* Array index: 0x1424 */ 0xCDFB,0x4370, /* Array index: 0x1424 */ 0xCDFD,0x4371, /* Array index: 0x1424 */ 0xCE04,0x4372, /* Array index: 0x1424 */ 0xCE08,0x4373, /* Array index: 0x1424 */ 0xCE0C,0x4374, /* Array index: 0x1424 */ 0xCE14,0x4375, /* Array index: 0x1424 */ 0xCE19,0x4376, /* Array index: 0x1424 */ 0xCE20,0x4377, /* Array index: 0x1424 */ 0xCE21,0x4378, /* Array index: 0x1424 */ 0xCE24,0x4379, /* Array index: 0x1424 */ 0xCE28,0x437A, /* Array index: 0x1424 */ 0xCE30,0x437B, /* Array index: 0x1424 */ 0xCE31,0x437C, /* Array index: 0x1424 */ 0xCE33,0x437D, /* Array index: 0x1424 */ 0xCE35,0x437E, /* Array index: 0x1424 */ 0xCE58,0x4421, /* Array index: 0x1424 */ 0xCE59,0x4422, /* Array index: 0x1424 */ 0xCE5C,0x4423, /* Array index: 0x1424 */ 0xCE68,0x4427, /* Array index: 0x1424 */ 0xCE69,0x4428, /* Array index: 0x1424 */ 0xCE6B,0x4429, /* Array index: 0x1424 */ 0xCE6D,0x442A, /* Array index: 0x1424 */ 0xCE74,0x442B, /* Array index: 0x1424 */ 0xCE75,0x442C, /* Array index: 0x1424 */ 0xCE78,0x442D, /* Array index: 0x1424 */ 0xCE7C,0x442E, /* Array index: 0x1424 */ 0xCE84,0x442F, /* Array index: 0x1424 */ 0xCE85,0x4430, /* Array index: 0x1424 */ 0xCE87,0x4431, /* Array index: 0x1424 */ 0xCE89,0x4432, /* Array index: 0x1424 */ 0xCE90,0x4433, /* Array index: 0x1424 */ 0xCE91,0x4434, /* Array index: 0x1424 */ 0xCE94,0x4435, /* Array index: 0x1424 */ 0xCE98,0x4436, /* Array index: 0x1424 */ 0xCEAC,0x443C, /* Array index: 0x1424 */ 0xCEAD,0x443D, /* Array index: 0x1424 */ 0xCEC1,0x443E, /* Array index: 0x1424 */ 0xCEE4,0x443F, /* Array index: 0x1424 */ 0xCEE5,0x4440, /* Array index: 0x1424 */ 0xCEE8,0x4441, /* Array index: 0x1424 */ 0xCEEB,0x4442, /* Array index: 0x1424 */ 0xCEEC,0x4443, /* Array index: 0x1424 */ 0xCF00,0x4449, /* Array index: 0x1424 */ 0xCF01,0x444A, /* Array index: 0x1424 */ 0xCF04,0x444B, /* Array index: 0x1424 */ 0xCF08,0x444C, /* Array index: 0x1424 */ 0xCF10,0x444D, /* Array index: 0x1424 */ 0xCF11,0x444E, /* Array index: 0x1424 */ 0xCF13,0x444F, /* Array index: 0x1424 */ 0xCF15,0x4450, /* Array index: 0x1424 */ 0xCF1C,0x4451, /* Array index: 0x1424 */ 0xCF20,0x4452, /* Array index: 0x1424 */ 0xCF24,0x4453, /* Array index: 0x1424 */ 0xCF38,0x4459, /* Array index: 0x1424 */ 0xCF54,0x445A, /* Array index: 0x1424 */ 0xCF55,0x445B, /* Array index: 0x1424 */ 0xCF58,0x445C, /* Array index: 0x1424 */ 0xCF5C,0x445D, /* Array index: 0x1424 */ 0xCF64,0x445E, /* Array index: 0x1424 */ 0xCF65,0x445F, /* Array index: 0x1424 */ 0xCF67,0x4460, /* Array index: 0x1424 */ 0xCF69,0x4461, /* Array index: 0x1424 */ 0xCF70,0x4462, /* Array index: 0x1424 */ 0xCF71,0x4463, /* Array index: 0x1424 */ 0xCF74,0x4464, /* Array index: 0x1424 */ 0xCF78,0x4465, /* Array index: 0x1424 */ 0xCF80,0x4466, /* Array index: 0x1424 */ 0xCF85,0x4467, /* Array index: 0x1424 */ 0xCF8C,0x4468, /* Array index: 0x1424 */ 0xCFA1,0x4469, /* Array index: 0x1424 */ 0xCFA8,0x446A, /* Array index: 0x1424 */ 0xCFB0,0x446B, /* Array index: 0x1424 */ 0xCFC4,0x446C, /* Array index: 0x1424 */ 0xCFE0,0x446D, /* Array index: 0x1424 */ 0xCFE1,0x446E, /* Array index: 0x1424 */ 0xCFE4,0x446F, /* Array index: 0x1424 */ 0xCFE8,0x4470, /* Array index: 0x1424 */ 0xCFF0,0x4471, /* Array index: 0x1424 */ 0xCFF1,0x4472, /* Array index: 0x1424 */ 0xCFF3,0x4473, /* Array index: 0x1424 */ 0xCFF5,0x4474, /* Array index: 0x1424 */ 0xCFFC,0x4475, /* Array index: 0x1424 */ 0xD000,0x4476, /* Array index: 0x1424 */ 0xD004,0x4477, /* Array index: 0x1424 */ 0xD011,0x4478, /* Array index: 0x1424 */ 0xD018,0x4479, /* Array index: 0x1424 */ 0xD02D,0x447A, /* Array index: 0x1424 */ 0xD034,0x447B, /* Array index: 0x1424 */ 0xD035,0x447C, /* Array index: 0x1424 */ 0xD038,0x447D, /* Array index: 0x1424 */ 0xD03C,0x447E, /* Array index: 0x1424 */ 0xD044,0x4521, /* Array index: 0x1424 */ 0xD045,0x4522, /* Array index: 0x1424 */ 0xD047,0x4523, /* Array index: 0x1424 */ 0xD049,0x4524, /* Array index: 0x1424 */ 0xD050,0x4525, /* Array index: 0x1424 */ 0xD054,0x4526, /* Array index: 0x1424 */ 0xD058,0x4527, /* Array index: 0x1424 */ 0xD060,0x4528, /* Array index: 0x1424 */ 0xD06C,0x4529, /* Array index: 0x1424 */ 0xD06D,0x452A, /* Array index: 0x1424 */ 0xD070,0x452B, /* Array index: 0x1424 */ 0xD074,0x452C, /* Array index: 0x1424 */ 0xD07C,0x452D, /* Array index: 0x1424 */ 0xD07D,0x452E, /* Array index: 0x1424 */ 0xD081,0x452F, /* Array index: 0x1424 */ 0xD0A4,0x4530, /* Array index: 0x1424 */ 0xD0A5,0x4531, /* Array index: 0x1424 */ 0xD0A8,0x4532, /* Array index: 0x1424 */ 0xD0AC,0x4533, /* Array index: 0x1424 */ 0xD0B4,0x4534, /* Array index: 0x1424 */ 0xD0B5,0x4535, /* Array index: 0x1424 */ 0xD0B7,0x4536, /* Array index: 0x1424 */ 0xD0B9,0x4537, /* Array index: 0x1424 */ 0xD0C0,0x4538, /* Array index: 0x1424 */ 0xD0C1,0x4539, /* Array index: 0x1424 */ 0xD0C4,0x453A, /* Array index: 0x1424 */ 0xD0C8,0x453B, /* Array index: 0x1424 */ 0xD0C9,0x453C, /* Array index: 0x1424 */ 0xD0DC,0x4542, /* Array index: 0x1424 */ 0xD0DD,0x4543, /* Array index: 0x1424 */ 0xD0E0,0x4544, /* Array index: 0x1424 */ 0xD0E4,0x4545, /* Array index: 0x1424 */ 0xD0F8,0x454B, /* Array index: 0x1424 */ 0xD10D,0x454C, /* Array index: 0x1424 */ 0xD130,0x454D, /* Array index: 0x1424 */ 0xD131,0x454E, /* Array index: 0x1424 */ 0xD134,0x454F, /* Array index: 0x1424 */ 0xD138,0x4550, /* Array index: 0x1424 */ 0xD13A,0x4551, /* Array index: 0x1424 */ 0xD14C,0x4557, /* Array index: 0x1424 */ 0xD14D,0x4558, /* Array index: 0x1424 */ 0xD150,0x4559, /* Array index: 0x1424 */ 0xD154,0x455A, /* Array index: 0x1424 */ 0xD15C,0x455B, /* Array index: 0x1424 */ 0xD15D,0x455C, /* Array index: 0x1424 */ 0xD15F,0x455D, /* Array index: 0x1424 */ 0xD161,0x455E, /* Array index: 0x1424 */ 0xD168,0x455F, /* Array index: 0x1424 */ 0xD16C,0x4560, /* Array index: 0x1424 */ 0xD17C,0x4561, /* Array index: 0x1424 */ 0xD184,0x4562, /* Array index: 0x1424 */ 0xD188,0x4563, /* Array index: 0x1424 */ 0xD1A0,0x4564, /* Array index: 0x1424 */ 0xD1A1,0x4565, /* Array index: 0x1424 */ 0xD1A4,0x4566, /* Array index: 0x1424 */ 0xD1A8,0x4567, /* Array index: 0x1424 */ 0xD1B0,0x4568, /* Array index: 0x1424 */ 0xD1B1,0x4569, /* Array index: 0x1424 */ 0xD1B3,0x456A, /* Array index: 0x1424 */ 0xD1B5,0x456B, /* Array index: 0x1424 */ 0xD1BA,0x456C, /* Array index: 0x1424 */ 0xD1BC,0x456D, /* Array index: 0x1424 */ 0xD1C0,0x456E, /* Array index: 0x1424 */ 0xD1D8,0x456F, /* Array index: 0x1424 */ 0xD1F4,0x4570, /* Array index: 0x1424 */ 0xD1F8,0x4571, /* Array index: 0x1424 */ 0xD207,0x4572, /* Array index: 0x1424 */ 0xD209,0x4573, /* Array index: 0x1424 */ 0xD210,0x4574, /* Array index: 0x1424 */ 0xD22C,0x4575, /* Array index: 0x1424 */ 0xD22D,0x4576, /* Array index: 0x1424 */ 0xD230,0x4577, /* Array index: 0x1424 */ 0xD234,0x4578, /* Array index: 0x1424 */ 0xD23C,0x4579, /* Array index: 0x1424 */ 0xD23D,0x457A, /* Array index: 0x1424 */ 0xD23F,0x457B, /* Array index: 0x1424 */ 0xD241,0x457C, /* Array index: 0x1424 */ 0xD248,0x457D, /* Array index: 0x1424 */ 0xD25C,0x457E, /* Array index: 0x1424 */ 0xD264,0x4621, /* Array index: 0x1424 */ 0xD280,0x4622, /* Array index: 0x1424 */ 0xD281,0x4623, /* Array index: 0x1424 */ 0xD284,0x4624, /* Array index: 0x1424 */ 0xD288,0x4625, /* Array index: 0x1424 */ 0xD290,0x4626, /* Array index: 0x1424 */ 0xD291,0x4627, /* Array index: 0x1424 */ 0xD295,0x4628, /* Array index: 0x1424 */ 0xD29C,0x4629, /* Array index: 0x1424 */ 0xD2A0,0x462A, /* Array index: 0x1424 */ 0xD2A4,0x462B, /* Array index: 0x1424 */ 0xD2AC,0x462C, /* Array index: 0x1424 */ 0xD2B1,0x462D, /* Array index: 0x1424 */ 0xD2B8,0x462E, /* Array index: 0x1424 */ 0xD2B9,0x462F, /* Array index: 0x1424 */ 0xD2BC,0x4630, /* Array index: 0x1424 */ 0xD2BF,0x4631, /* Array index: 0x1424 */ 0xD2C0,0x4632, /* Array index: 0x1424 */ 0xD2C2,0x4633, /* Array index: 0x1424 */ 0xD2C8,0x4634, /* Array index: 0x1424 */ 0xD2C9,0x4635, /* Array index: 0x1424 */ 0xD2CB,0x4636, /* Array index: 0x1424 */ 0xD2D4,0x4637, /* Array index: 0x1424 */ 0xD2D8,0x4638, /* Array index: 0x1424 */ 0xD2DC,0x4639, /* Array index: 0x1424 */ 0xD2E4,0x463A, /* Array index: 0x1424 */ 0xD2E5,0x463B, /* Array index: 0x1424 */ 0xD2F0,0x463C, /* Array index: 0x1424 */ 0xD2F1,0x463D, /* Array index: 0x1424 */ 0xD2F4,0x463E, /* Array index: 0x1424 */ 0xD2F8,0x463F, /* Array index: 0x1424 */ 0xD300,0x4640, /* Array index: 0x1424 */ 0xD301,0x4641, /* Array index: 0x1424 */ 0xD303,0x4642, /* Array index: 0x1424 */ 0xD305,0x4643, /* Array index: 0x1424 */ 0xD314,0x4648, /* Array index: 0x1424 */ 0xD316,0x4649, /* Array index: 0x1424 */ 0xD325,0x464F, /* Array index: 0x1424 */ 0xD328,0x4650, /* Array index: 0x1424 */ 0xD329,0x4651, /* Array index: 0x1424 */ 0xD32C,0x4652, /* Array index: 0x1424 */ 0xD330,0x4653, /* Array index: 0x1424 */ 0xD344,0x4659, /* Array index: 0x1424 */ 0xD345,0x465A, /* Array index: 0x1424 */ 0xD37C,0x465B, /* Array index: 0x1424 */ 0xD37D,0x465C, /* Array index: 0x1424 */ 0xD380,0x465D, /* Array index: 0x1424 */ 0xD384,0x465E, /* Array index: 0x1424 */ 0xD398,0x4664, /* Array index: 0x1424 */ 0xD399,0x4665, /* Array index: 0x1424 */ 0xD39C,0x4666, /* Array index: 0x1424 */ 0xD3A0,0x4667, /* Array index: 0x1424 */ 0xD3A8,0x4668, /* Array index: 0x1424 */ 0xD3A9,0x4669, /* Array index: 0x1424 */ 0xD3AB,0x466A, /* Array index: 0x1424 */ 0xD3AD,0x466B, /* Array index: 0x1424 */ 0xD3B4,0x466C, /* Array index: 0x1424 */ 0xD3B8,0x466D, /* Array index: 0x1424 */ 0xD3BC,0x466E, /* Array index: 0x1424 */ 0xD3C4,0x466F, /* Array index: 0x1424 */ 0xD3C5,0x4670, /* Array index: 0x1424 */ 0xD3C8,0x4671, /* Array index: 0x1424 */ 0xD3C9,0x4672, /* Array index: 0x1424 */ 0xD3D0,0x4673, /* Array index: 0x1424 */ 0xD3D8,0x4674, /* Array index: 0x1424 */ 0xD3E1,0x4675, /* Array index: 0x1424 */ 0xD3E3,0x4676, /* Array index: 0x1424 */ 0xD3EC,0x4677, /* Array index: 0x1424 */ 0xD3ED,0x4678, /* Array index: 0x1424 */ 0xD3F0,0x4679, /* Array index: 0x1424 */ 0xD3F4,0x467A, /* Array index: 0x1424 */ 0xD3FC,0x467B, /* Array index: 0x1424 */ 0xD3FD,0x467C, /* Array index: 0x1424 */ 0xD3FF,0x467D, /* Array index: 0x1424 */ 0xD401,0x467E, /* Array index: 0x1424 */ 0xD408,0x4721, /* Array index: 0x1424 */ 0xD41D,0x4722, /* Array index: 0x1424 */ 0xD440,0x4723, /* Array index: 0x1424 */ 0xD444,0x4724, /* Array index: 0x1424 */ 0xD45C,0x4725, /* Array index: 0x1424 */ 0xD460,0x4726, /* Array index: 0x1424 */ 0xD464,0x4727, /* Array index: 0x1424 */ 0xD46D,0x4728, /* Array index: 0x1424 */ 0xD46F,0x4729, /* Array index: 0x1424 */ 0xD478,0x472A, /* Array index: 0x1424 */ 0xD479,0x472B, /* Array index: 0x1424 */ 0xD47C,0x472C, /* Array index: 0x1424 */ 0xD47F,0x472D, /* Array index: 0x1424 */ 0xD480,0x472E, /* Array index: 0x1424 */ 0xD482,0x472F, /* Array index: 0x1424 */ 0xD488,0x4730, /* Array index: 0x1424 */ 0xD489,0x4731, /* Array index: 0x1424 */ 0xD48B,0x4732, /* Array index: 0x1424 */ 0xD48D,0x4733, /* Array index: 0x1424 */ 0xD494,0x4734, /* Array index: 0x1424 */ 0xD4A9,0x4735, /* Array index: 0x1424 */ 0xD4CC,0x4736, /* Array index: 0x1424 */ 0xD4D0,0x4737, /* Array index: 0x1424 */ 0xD4D4,0x4738, /* Array index: 0x1424 */ 0xD4DC,0x4739, /* Array index: 0x1424 */ 0xD4DF,0x473A, /* Array index: 0x1424 */ 0xD4E8,0x473B, /* Array index: 0x1424 */ 0xD4EC,0x473C, /* Array index: 0x1424 */ 0xD4F0,0x473D, /* Array index: 0x1424 */ 0xD4F8,0x473E, /* Array index: 0x1424 */ 0xD4FB,0x473F, /* Array index: 0x1424 */ 0xD4FD,0x4740, /* Array index: 0x1424 */ 0xD504,0x4741, /* Array index: 0x1424 */ 0xD508,0x4742, /* Array index: 0x1424 */ 0xD50C,0x4743, /* Array index: 0x1424 */ 0xD514,0x4744, /* Array index: 0x1424 */ 0xD515,0x4745, /* Array index: 0x1424 */ 0xD517,0x4746, /* Array index: 0x1424 */ 0xD53C,0x4747, /* Array index: 0x1424 */ 0xD53D,0x4748, /* Array index: 0x1424 */ 0xD540,0x4749, /* Array index: 0x1424 */ 0xD544,0x474A, /* Array index: 0x1424 */ 0xD54C,0x474B, /* Array index: 0x1424 */ 0xD54D,0x474C, /* Array index: 0x1424 */ 0xD54F,0x474D, /* Array index: 0x1424 */ 0xD551,0x474E, /* Array index: 0x1424 */ 0xD558,0x474F, /* Array index: 0x1424 */ 0xD559,0x4750, /* Array index: 0x1424 */ 0xD55C,0x4751, /* Array index: 0x1424 */ 0xD560,0x4752, /* Array index: 0x1424 */ 0xD565,0x4753, /* Array index: 0x1424 */ 0xD568,0x4754, /* Array index: 0x1424 */ 0xD569,0x4755, /* Array index: 0x1424 */ 0xD56B,0x4756, /* Array index: 0x1424 */ 0xD56D,0x4757, /* Array index: 0x1424 */ 0xD574,0x4758, /* Array index: 0x1424 */ 0xD575,0x4759, /* Array index: 0x1424 */ 0xD578,0x475A, /* Array index: 0x1424 */ 0xD57C,0x475B, /* Array index: 0x1424 */ 0xD590,0x4761, /* Array index: 0x1424 */ 0xD5A5,0x4762, /* Array index: 0x1424 */ 0xD5C8,0x4763, /* Array index: 0x1424 */ 0xD5C9,0x4764, /* Array index: 0x1424 */ 0xD5CC,0x4765, /* Array index: 0x1424 */ 0xD5D0,0x4766, /* Array index: 0x1424 */ 0xD5D2,0x4767, /* Array index: 0x1424 */ 0xD5D8,0x4768, /* Array index: 0x1424 */ 0xD5D9,0x4769, /* Array index: 0x1424 */ 0xD5DB,0x476A, /* Array index: 0x1424 */ 0xD5DD,0x476B, /* Array index: 0x1424 */ 0xD5E4,0x476C, /* Array index: 0x1424 */ 0xD5E5,0x476D, /* Array index: 0x1424 */ 0xD5E8,0x476E, /* Array index: 0x1424 */ 0xD5EC,0x476F, /* Array index: 0x1424 */ 0xD5F4,0x4770, /* Array index: 0x1424 */ 0xD5F5,0x4771, /* Array index: 0x1424 */ 0xD5F7,0x4772, /* Array index: 0x1424 */ 0xD5F9,0x4773, /* Array index: 0x1424 */ 0xD600,0x4774, /* Array index: 0x1424 */ 0xD601,0x4775, /* Array index: 0x1424 */ 0xD604,0x4776, /* Array index: 0x1424 */ 0xD608,0x4777, /* Array index: 0x1424 */ 0xD61C,0x477D, /* Array index: 0x1424 */ 0xD620,0x477E, /* Array index: 0x1424 */ 0xD624,0x4821, /* Array index: 0x1424 */ 0xD62D,0x4822, /* Array index: 0x1424 */ 0xD638,0x4823, /* Array index: 0x1424 */ 0xD639,0x4824, /* Array index: 0x1424 */ 0xD63C,0x4825, /* Array index: 0x1424 */ 0xD640,0x4826, /* Array index: 0x1424 */ 0xD645,0x4827, /* Array index: 0x1424 */ 0xD648,0x4828, /* Array index: 0x1424 */ 0xD649,0x4829, /* Array index: 0x1424 */ 0xD64B,0x482A, /* Array index: 0x1424 */ 0xD64D,0x482B, /* Array index: 0x1424 */ 0xD651,0x482C, /* Array index: 0x1424 */ 0xD654,0x482D, /* Array index: 0x1424 */ 0xD655,0x482E, /* Array index: 0x1424 */ 0xD658,0x482F, /* Array index: 0x1424 */ 0xD65C,0x4830, /* Array index: 0x1424 */ 0xD667,0x4831, /* Array index: 0x1424 */ 0xD669,0x4832, /* Array index: 0x1424 */ 0xD670,0x4833, /* Array index: 0x1424 */ 0xD671,0x4834, /* Array index: 0x1424 */ 0xD674,0x4835, /* Array index: 0x1424 */ 0xD683,0x4836, /* Array index: 0x1424 */ 0xD685,0x4837, /* Array index: 0x1424 */ 0xD68C,0x4838, /* Array index: 0x1424 */ 0xD68D,0x4839, /* Array index: 0x1424 */ 0xD690,0x483A, /* Array index: 0x1424 */ 0xD694,0x483B, /* Array index: 0x1424 */ 0xD69D,0x483C, /* Array index: 0x1424 */ 0xD69F,0x483D, /* Array index: 0x1424 */ 0xD6A1,0x483E, /* Array index: 0x1424 */ 0xD6A8,0x483F, /* Array index: 0x1424 */ 0xD6AC,0x4840, /* Array index: 0x1424 */ 0xD6B0,0x4841, /* Array index: 0x1424 */ 0xD6B9,0x4842, /* Array index: 0x1424 */ 0xD6BB,0x4843, /* Array index: 0x1424 */ 0xD6C4,0x4844, /* Array index: 0x1424 */ 0xD6C5,0x4845, /* Array index: 0x1424 */ 0xD6C8,0x4846, /* Array index: 0x1424 */ 0xD6CC,0x4847, /* Array index: 0x1424 */ 0xD6D1,0x4848, /* Array index: 0x1424 */ 0xD6D4,0x4849, /* Array index: 0x1424 */ 0xD6D7,0x484A, /* Array index: 0x1424 */ 0xD6D9,0x484B, /* Array index: 0x1424 */ 0xD6E0,0x484C, /* Array index: 0x1424 */ 0xD6E4,0x484D, /* Array index: 0x1424 */ 0xD6E8,0x484E, /* Array index: 0x1424 */ 0xD6F0,0x484F, /* Array index: 0x1424 */ 0xD6F5,0x4850, /* Array index: 0x1424 */ 0xD6FC,0x4851, /* Array index: 0x1424 */ 0xD6FD,0x4852, /* Array index: 0x1424 */ 0xD700,0x4853, /* Array index: 0x1424 */ 0xD704,0x4854, /* Array index: 0x1424 */ 0xD711,0x4855, /* Array index: 0x1424 */ 0xD718,0x4856, /* Array index: 0x1424 */ 0xD719,0x4857, /* Array index: 0x1424 */ 0xD71C,0x4858, /* Array index: 0x1424 */ 0xD720,0x4859, /* Array index: 0x1424 */ 0xD728,0x485A, /* Array index: 0x1424 */ 0xD729,0x485B, /* Array index: 0x1424 */ 0xD72B,0x485C, /* Array index: 0x1424 */ 0xD72D,0x485D, /* Array index: 0x1424 */ 0xD734,0x485E, /* Array index: 0x1424 */ 0xD735,0x485F, /* Array index: 0x1424 */ 0xD738,0x4860, /* Array index: 0x1424 */ 0xD73C,0x4861, /* Array index: 0x1424 */ 0xD744,0x4862, /* Array index: 0x1424 */ 0xD747,0x4863, /* Array index: 0x1424 */ 0xD749,0x4864, /* Array index: 0x1424 */ 0xD750,0x4865, /* Array index: 0x1424 */ 0xD751,0x4866, /* Array index: 0x1424 */ 0xD760,0x486C, /* Array index: 0x1424 */ 0xD761,0x486D, /* Array index: 0x1424 */ 0xD763,0x486E, /* Array index: 0x1424 */ 0xD765,0x486F, /* Array index: 0x1424 */ 0xD769,0x4870, /* Array index: 0x1424 */ 0xD76C,0x4871, /* Array index: 0x1424 */ 0xD770,0x4872, /* Array index: 0x1424 */ 0xD774,0x4873, /* Array index: 0x1424 */ 0xD77C,0x4874, /* Array index: 0x1424 */ 0xD77D,0x4875, /* Array index: 0x1424 */ 0xD781,0x4876, /* Array index: 0x1424 */ 0xD788,0x4877, /* Array index: 0x1424 */ 0xD789,0x4878, /* Array index: 0x1424 */ 0xD78C,0x4879, /* Array index: 0x1424 */ 0xD790,0x487A, /* Array index: 0x1424 */ 0xD798,0x487B, /* Array index: 0x1424 */ 0xD799,0x487C, /* Array index: 0x1424 */ 0xD79B,0x487D, /* Array index: 0x1424 */ 0xD79D,0x487E, }; #endif /* ICONV_FROM_UCS_CCS_KSX1001 && defined (TABLE_USE_SIZE_OPTIMIZATION) */ /* * ksx1001 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_ksx1001 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_KSX1001, /* CCS name */ TABLE_16BIT, /* Table bits */ #if defined (ICONV_FROM_UCS_CCS_KSX1001) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SIZE_OPTIMIZED, (__uint16_t *)&from_ucs_size_ksx1001, /* UCS -> ksx1001 table size-optimized table */ #elif defined (ICONV_FROM_UCS_CCS_KSX1001) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SPEED_OPTIMIZED, (__uint16_t *)&from_ucs_speed_ksx1001, /* UCS -> ksx1001 table speed-optimized table */ #else TABLE_SPEED_OPTIMIZED, (__uint16_t *)NULL, #endif #if defined (ICONV_TO_UCS_CCS_KSX1001) \ && (defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SIZE_OPTIMIZED, (__uint16_t *)&to_ucs_size_ksx1001 /* ksx1001 -> UCS table speed-optimized table */ #elif defined (ICONV_TO_UCS_CCS_KSX1001) \ && !(defined (TABLE_USE_SIZE_OPTIMIZATION)) TABLE_SPEED_OPTIMIZED, (__uint16_t *)&to_ucs_speed_ksx1001 /* ksx1001 -> UCS table speed-optimized table */ #else TABLE_SPEED_OPTIMIZED, (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_KSX1001) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/meson.build000066400000000000000000000055041414576234500215470ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # subdir('binary') srcs_iconv_ccs = [ 'big5.c', 'ccsbi.c', 'cns11643_plane14.c', 'cns11643_plane1.c', 'cns11643_plane2.c', 'cp775.c', 'cp850.c', 'cp852.c', 'cp855.c', 'cp866.c', 'iso_8859_10.c', 'iso_8859_11.c', 'iso_8859_13.c', 'iso_8859_14.c', 'iso_8859_15.c', 'iso_8859_1.c', 'iso_8859_2.c', 'iso_8859_3.c', 'iso_8859_4.c', 'iso_8859_5.c', 'iso_8859_6.c', 'iso_8859_7.c', 'iso_8859_8.c', 'iso_8859_9.c', 'iso_ir_111.c', 'jis_x0201_1976.c', 'jis_x0208_1990.c', 'jis_x0212_1990.c', 'koi8_r.c', 'koi8_ru.c', 'koi8_u.c', 'koi8_uni.c', 'ksx1001.c', 'win_1250.c', 'win_1251.c', 'win_1252.c', 'win_1253.c', 'win_1254.c', 'win_1255.c', 'win_1256.c', 'win_1257.c', 'win_1258.c', ] hdrs_iconv_ccs = [ 'ccsbi.h', 'ccs.h', 'ccsnames.h', ] srcs_iconv_ccs_use = [] foreach file : srcs_iconv_ccs s_file = fs.replace_suffix(file, '.S') if file in srcs_machine message('libc/iconv/ccs/' + file + ': machine overrides generic') elif s_file in srcs_machine message('libc/iconv/ccs/' + s_file + ': machine overrides generic') else srcs_iconv_ccs_use += file endif endforeach src_iconv_ccs = files(srcs_iconv_ccs_use) picolibc-1.7.4/newlib/libc/iconv/ccs/mktbl.pl000077500000000000000000001153471414576234500210650ustar00rootroot00000000000000#!/usr/bin/perl -w # # Copyright (c) 2003-2004, Artem B. Bityuckiy, SoftMine Corporation. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # use integer; use Getopt::Std; use IO::Seekable; use strict; # ############################################################################## # # FUNCTION PROTOTYPES AND GLOBAL DATA DECLARATION SECTION # # ############################################################################## # SUPPLEMENTARY FUNCTIONS FORWARD DECLARATIONS sub ProcessOptions(); sub Err($;$); sub Generate8bitToUCS(); sub GenerateSpeed($); sub Generate16bitSize($); sub Output8bitToUCS(;$); sub Output8bitFromUCS(;$); sub OutputSpeed($;$); sub OutputSize($;$); # VARIABLES RELATING TO COMMAND-LINE OPTIONS my $Verbose; # Be verbose if true my $Source; # Output C source code instead of binary .cct file if true my $Plane; # Use this plane if defined my $InFile; # Use this file for input my $OutFile; # Use this file for output my $CCSName; # Use this CCS name my $NoSpeed; # Don't generate speed-optimized tables (binary files only) my $NoSize; # Don't generate size-optimized tables (binary files only) my $NoBE; # Don't generate big-endian tables (binary files only) my $NoLE; # Don't generate big-endian tables (binary files only) my $NoTo; # Don't generate "to_ucs" table (binary files only) my $NoFrom; # Don't generate "from_ucs" table (binary files only) my $CCSCol; # CCS column number in source file my $UCSCol; # UCS column number in source file # DATA STRUCTURES WITH "TO_UCS" AND "FROM_UCS" SPEED/SIZE -OPTIMIZED TABLES my (@FromSpeedTbl, @ToSpeedTbl, @FromSizeTbl, @ToSizeTbl); # "TO_UCS" AND "FROM_UCS" SPEED/SIZE -OPTIMIZED TABLES SIZE IN BYTES my ($FromSpeedBytes, $ToSpeedBytes, $FromSizeBytes, $ToSizeBytes) = (0, 0, 0, 0); my (%CCSUCS, %UCSCCS); # CCS->UCS and UCS->CCS mappings my $Bits = 8; # Table bits (8 or 16); # SPECIAL MARKER CODES my $InvCode = 0xFFFF; # FFFF indicates 18 bit invalid codes my $InvBlock = 0xFFFF; # FFFF also mark empty blocks in speed-optimized tables my $LostCode = 0x3F; # ASCII '?' marks codes lost during CCS->UCS mapping # To mark invalid codes in 8bit encodings 0xFF is used CCS's 0xFF mapping is saved # separately. $FFMap variable stores real 0xFF mapping if defined. my $InvCode8bit = 0xFF; my $FFMap; # 8 Bit "From UCS" table header size (bytes) my $Hdr8bitFromUCS = 2; # Binary table header size (bytes) my $HdrBinary = 8; # At first all lost CCS codes are marked by $TmpLost to distinguish between # code which is equivalent to $LostCode and lost codes. This is done in order to # output $MacroLostCode instead of $LostCode in source file. my $TmpLost = 0x1FFFF; # VARIABLES RELATING TO C SOURCE CODE my $MacroInvCode = 'INVALC'; my $MacroInvBlock = 'INVBLK'; my $MacroLostCode = 'LOST_C'; my $MacroCCSName = 'ICONV_CCS_%s'; my $GuardSize = 'defined (TABLE_USE_SIZE_OPTIMIZATION)'; my $GuardToUCS = "ICONV_TO_UCS_CCS_%s"; my $GuardFromUCS = "ICONV_FROM_UCS_CCS_%s"; my $MacroSpeedTable = 'TABLE_SPEED_OPTIMIZED'; my $MacroSizeTable = 'TABLE_SIZE_OPTIMIZED'; my $Macro8bitTable = 'TABLE_8BIT'; my $Macro16bitTable = 'TABLE_16BIT'; my $MacroVer1Table = 'TABLE_VERSION_1'; my $TypeBICCS = 'iconv_ccs_t'; my $VarToUCSSize = "to_ucs_size_%s"; my $VarToUCSSpeed = "to_ucs_speed_%s"; my $VarFromUCSSize = "from_ucs_size_%s"; my $VarFromUCSSpeed = "from_ucs_speed_%s"; my $VarBICCS = "_iconv_ccs_%s"; # Text block that visually separates tables. my $Separator = '=' x 70; # ############################################################################## # # SCRIPT ENTRY POINT # # ############################################################################## # Parse command-line options, check them and set correspondent global variables ProcessOptions(); # Initialize global variables tat depend on CCS name. $_ = sprintf $_, $CCSName foreach +($VarToUCSSpeed, $VarToUCSSize, $VarToUCSSpeed, $VarFromUCSSpeed, $VarFromUCSSize, $VarBICCS); $_ = sprintf $_, "\U$CCSName" foreach +($GuardToUCS, $GuardFromUCS, $MacroCCSName); # Open input and output files Err "Can't open \"$InFile\" file for reading: $!.\n", 1 unless open(INFILE, '<', $InFile); Err "Can't open \"$OutFile\" file for writing: $!.\n", 1 unless open(OUTFILE, '>', $OutFile); # ============================================================================== # EXTRACT CODES MAP FROM INPUT FILE # ============================================================================== for (my $ln = 1; my $l = ; $ln += 1) { # Skip comment and empty lines, remove ending CR symbol next if $l =~ /^#.*$/ or $l =~ /^\s*$/; $l =~ s/^(.*)\n$/$1/, $l =~ s/^(.*)\r$/$1/; # Remove comment and extra spaces $l =~ s/(.*)\s*#.*/$1/; $l =~ s/\s+/ /g; $l =~ s/(.*)\s*$/$1/; # Split line into individual codes my @codes = split / /, $l; # Skip line if there is no needed columns unless (defined $codes[$CCSCol]) { print("Warning (line $ln): no CCS column, skip.\n") if $Verbose; next; } unless (defined $codes[$UCSCol]) { print("Warning (line $ln): no UCS column, skip.\n") if $Verbose; next; } # Extract codes strings from needed columns my ($ccs, $ucs) = ($codes[$CCSCol], $codes[$UCSCol]); my $patt = qr/(0[xX])?[0-9a-fA-F]{1,8}/; # HEX digit regexp pattern. # Check that CCS and UCS code strings has right format. unless ($ccs =~ m/^$patt$/) { print("Warning (line $ln): $ccs CCS code isn't recognized, skip.\n") if $Verbose; next; } unless ($ucs =~ m/^($patt(,|\+))*$patt$/) { print("Warning (line $ln): $ucs UCS code isn't recognized, skip.\n") if $Verbose; next; } # Convert code to numeric format (assume hex). $ccs = hex $ccs; if ($ucs =~ m/,/ or $ucs =~ m/\+/) { # Mark CCS codes with "one to many" mappings as lost printf "Warning (line $ln): only one to one mapping is supported, " . "mark 0x%.4X CCS code as lost.\n", hex $ccs if $Verbose; $ucs = $TmpLost; } else { # Convert code to numeric format $ucs = hex $ucs; # Check that UCS code isn't longer than 16 bits. if ($ucs > 0xFFFF) { printf("Warning (line $ln): UCS code should fit 16 bits, " . "mark 0x%.4X CCS code as lost.\n", hex $ccs) if $Verbose; $ucs = $TmpLost; } } # If CCS value > 0xFFFF user should specify plane number. if ($ccs > 0xFFFF && !defined $Plane) { print("Warning (line $ln): $ccs is > 16 bit, plane number should be specified," . " skip this mapping.\n") if $Verbose; next; } if (defined $Plane) { next if (($ccs & 0xFFFF0000) >> 16) != hex $Plane; # Skip alien plane. $ccs &= 0xFFFF; } # Check that reserved codes aren't used. if ($ccs == $InvCode or $ucs == $InvCode) { print("Warning (line $ln): $InvCode is reserved to mark invalid codes and " . "shouldn't be used in mappings, skip.\n") if $Verbose; next; } # Save mapping in UCSCCS and CCSUCS hash arrays. $UCSCCS{$ucs} = $ccs if $ucs != $TmpLost && !defined $UCSCCS{$ucs}; $CCSUCS{$ccs} = $ucs if !defined $CCSUCS{$ccs}; $Bits = 16 if $ccs > 0xFF; } if (not %CCSUCS) { Err "Error: there is no plane $Plane in \"$0\".\n" if defined $Plane; Err "Error: mapping wasn't found.\n"; } # ============================================================================== # GENERATE TABLE DATA # ============================================================================== if ($Bits == 8) { $FFMap = $CCSUCS{0xFF}; $FFMap = $InvCode if !defined $FFMap; } if ($Bits == 8) { Generate8bitToUCS() unless $NoTo; } else { GenerateSpeed("to_ucs") unless $NoTo || $NoSpeed; Generate16bitSize("to_ucs") unless $NoTo || $NoSize; } GenerateSpeed("from_ucs") unless $NoFrom || $NoSpeed; Generate16bitSize("from_ucs") unless $NoFrom || $NoSize; # ============================================================================== # OUTPUT ARRAYS # ============================================================================== if ($Source) { # OUTPUT SOURCE print OUTFILE "/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for $CCSName encoding. */ #include \"ccsbi.h\" #if defined ($GuardToUCS) \\ || defined ($GuardFromUCS) #include <_ansi.h> #include #include #include \"ccs.h\" #include \"ccsnames.h\" "; if ($Bits == 8) { print OUTFILE "#if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error \"Unknown byte order.\" #endif "; } unless ($NoTo) { if ($Bits == 8) { Output8bitToUCS(); } else { OutputSpeed("to_ucs") unless $NoSpeed; OutputSize("to_ucs") unless $NoSize; } } unless ($NoFrom) { if ($Bits == 8) { Output8bitFromUCS(); } else { OutputSpeed("from_ucs") unless $NoSpeed; OutputSize("from_ucs") unless $NoSize; } } # OUTPUT TABLE DESCRIPTION STRUCTURE print OUTFILE "/* * $CCSName CCS description table. * $Separator */ const $TypeBICCS $VarBICCS = { \t$MacroVer1Table, /* Table version */ \t$MacroCCSName, /* CCS name */ "; if ($Bits == 8) { print OUTFILE "\t$Macro8bitTable, /* Table bits */ \t0, /* Not Used */ #if defined ($GuardFromUCS) \t(__uint16_t *)&$VarFromUCSSpeed, /* UCS -> $CCSName table */ #else \t(__uint16_t *)NULL, #endif \t0, /* Not Used */ #if defined ($GuardToUCS) \t(__uint16_t *)&$VarToUCSSpeed /* $CCSName -> UCS table */ #else \t(__uint16_t *)NULL, #endif };\n"; } else { print OUTFILE "\t$Macro16bitTable, /* Table bits */ #if defined ($GuardFromUCS) \\ && ($GuardSize) \t$MacroSizeTable, \t(__uint16_t *)&$VarFromUCSSize, /* UCS -> $CCSName table size-optimized table */ #elif defined ($GuardFromUCS) \\ && !($GuardSize) \t$MacroSpeedTable, \t(__uint16_t *)&$VarFromUCSSpeed, /* UCS -> $CCSName table speed-optimized table */ #else \t$MacroSpeedTable, \t(__uint16_t *)NULL, #endif #if defined ($GuardToUCS) \\ && ($GuardSize) \t$MacroSizeTable, \t(__uint16_t *)&$VarToUCSSize /* $CCSName -> UCS table speed-optimized table */ #elif defined ($GuardToUCS) \\ && !($GuardSize) \t$MacroSpeedTable, \t(__uint16_t *)&$VarToUCSSpeed /* $CCSName -> UCS table speed-optimized table */ #else \t$MacroSpeedTable, \t(__uint16_t *)NULL, #endif };\n"; } print OUTFILE "\n#endif /* $GuardToUCS) || ... */\n\n"; } else { # OUTPUT BINARY TABLES DESCRIPTION STRUCTURE (ALWAYS BIG ENDIAN) print OUTFILE pack "n", 1; print OUTFILE pack "n", $Bits; my $len = length $CCSName; print OUTFILE pack "N", $len; print OUTFILE pack "a$len", $CCSName; my $pos = $HdrBinary + $len; if ($pos & 3) { my $l = 4 - ($pos & 3); print OUTFILE pack "a$l", 'XXX'; $pos += $l; } $pos += 16*4; my @tables; for (my $i = 0; $i < 16; $i++) { $tables[$i] = 0; } $tables[0] = $pos, $tables[1] = $FromSpeedBytes, $pos += $FromSpeedBytes unless $NoFrom || $NoSpeed || $NoBE; $tables[2] = $pos, $tables[3] = $FromSpeedBytes, $pos += $FromSpeedBytes unless $NoFrom || $NoSpeed || $NoLE; if ($Bits == 16) { $tables[4] = $pos, $tables[5] = $FromSizeBytes, $pos += $FromSizeBytes unless $NoFrom || $NoSize || $NoBE; $tables[6] = $pos, $tables[7] = $FromSizeBytes, $pos += $FromSizeBytes unless $NoFrom || $NoSize || $NoLE; } $tables[8] = $pos, $tables[9] = $ToSpeedBytes, $pos += $ToSpeedBytes unless $NoTo || $NoSpeed || $NoBE; $tables[10] = $pos, $tables[11] = $ToSpeedBytes, $pos += $ToSpeedBytes unless $NoTo || $NoSpeed || $NoLE; if ($Bits == 16) { $tables[12] = $pos, $tables[13] = $ToSizeBytes, $pos += $ToSizeBytes unless $NoTo || $NoSize || $NoBE; $tables[14] = $pos, $tables[15] = $ToSizeBytes, $pos += $ToSizeBytes unless $NoTo || $NoSize || $NoLE; } print OUTFILE pack("N", $_) foreach @tables; print "Total bytes for output: $pos.\n" if $Verbose; # OUTPUT BINARY TABLES unless ($NoFrom) { if ($Bits == 8) { Output8bitFromUCS("n") unless $NoBE; Output8bitFromUCS("v") unless $NoLE; } else { unless ($NoSpeed) { OutputSpeed("from_ucs", "n") unless $NoBE; OutputSpeed("from_ucs", "v") unless $NoLE; } unless ($NoSize) { OutputSize("from_ucs", "n") unless $NoBE; OutputSize("from_ucs", "v") unless $NoLE; } } } unless ($NoTo) { if ($Bits == 8) { Output8bitToUCS("n") unless $NoBE; Output8bitToUCS("v") unless $NoLE; } else { unless ($NoSpeed) { OutputSpeed("to_ucs", "n") unless $NoBE; OutputSpeed("to_ucs", "v") unless $NoLE; } unless ($NoSize) { OutputSize("to_ucs", "n") unless $NoBE; OutputSize("to_ucs", "v") unless $NoLE; } } } } close INFILE; close OUTFILE; exit 0; # ############################################################################## # # SUPPLEMENTARY FUNCTIONS # # ############################################################################## # ============================================================================= # # Generate 8bit "to_ucs" table. Store table data in %ToSpeedTbl hash. # Store table size in $ToSpeedBytes scalar. # # ============================================================================= sub Generate8bitToUCS() { for (my $i = 0; $i <= 255; $i++) { $ToSpeedTbl[$i] = defined $CCSUCS{$i} ? $CCSUCS{$i} : $InvCode; } $ToSpeedBytes = 256*2; } # ============================================================================= # # Generate speed-optimized table. # # Parameter 1: # "to_ucs" - generate "to_ucs" table, store table data in @ToSpeedTbl # array, store table size in $ToSpeedBytes scalar. # "from_ucs" - generate "from_ucs" table, store table data in @FromSpeedTbl # array, store table size in $FromSpeedBytes scalar. # # Data is written to @ToSpeedTbl or @FromSpeedTbl (@map) table and has the # following format: # $table[0] - 256-element array (control block); # $table[1 .. $#table] - 256-element arrays (data blocks). # # ============================================================================= sub GenerateSpeed($) { my $map; my $tbl; my $bytes; if ($_[0] eq "to_ucs") { $map = \%CCSUCS; $tbl = \@ToSpeedTbl; $bytes = \$ToSpeedBytes; } elsif ($_[0] eq "from_ucs") { $map = \%UCSCCS; $tbl = \@FromSpeedTbl; $bytes = \$FromSpeedBytes; } else { Err "Internal script error in GenerateSpeed()\n"; } # Identify unused blocks my @busy_blocks; $busy_blocks[$_ >> 8] = 1 foreach (keys %$map); # GENERATE FIRST 256-ELEMENT CONTROL BLOCK for (my $i = 0, my $idx = $Bits == 16 ? 0 : 256 + $Hdr8bitFromUCS; $i <= 0xFF; $i++) { $tbl->[0]->[$i] = $busy_blocks[$i] ? $idx += 256 : undef; } # GENERATE DATA BLOCKS $$bytes = 0; for (my $i = 0; $i <= 0xFF; $i++) { next unless $busy_blocks[$i]; $$bytes += 256; for (my $j = 0; $j <= 0xFF; $j++) { $tbl->[$i+1]->[$j] = $map->{($i << 8) | $j}; } } $$bytes *= 2 if $Bits == 16; $$bytes += $Hdr8bitFromUCS if $Bits == 8; $$bytes += 512; } # ============================================================================= # # Generate 16bit size-optimized table. # # Parameter 1: # "to_ucs" - generate "to_ucs" table, store table data in @ToSizeTbl # array, store table size in $ToSizeBytes scalar. # "from_ucs" - generate "from_ucs" table, store table data in @FromSizeTbl # array, store table size in $FromSizeBytes scalar. # # Data is written to @ToSizeTbl or @FromSizeTbl (@map) table and has the # following format: # $table[0] - number of ranges; # $table[1] - number of unranged codes; # $table[2] - unranged codes index in resulting array; # $table[3]->[0 .. $table[0]] - array of arrays of ranges: # $table[3]->[x]->[0] - first code; # $table[3]->[x]->[1] - last code; # $table[3]->[x]->[2] - range index in resulting array; # $table[4]->[0 .. $table[0]] - array of arrays of ranges content; # $table[5]->[0 .. $table[1]] - array of arrays of unranged codes; # $table[5]->[x]->[0] - CCS code; # $table[5]->[x]->[0] - UCS code; # # ============================================================================= sub Generate16bitSize($) { my $map; my $tbl; my $bytes; if ($_[0] eq "to_ucs") { $map = \%CCSUCS; $tbl = \@ToSizeTbl; $bytes = \$ToSizeBytes; } elsif ($_[0] eq "from_ucs") { $map = \%UCSCCS; $tbl = \@FromSizeTbl; $bytes = \$FromSizeBytes; } else { Err "Internal script error Generate16bitSize()\n"; } # CREATE LIST OF RANGES. my @codes = sort {$a <=> $b} keys %$map; my @ranges; # Code ranges my @range; # Current working range foreach (@codes) { if (not @range or $_ - 1 == $range[$#range]) { push @range, $_; } else { my @tmp = @range; push @ranges, \@tmp; undef @range; redo; } } # Add Last range too if (@range) { my @tmp = @range; push @ranges, \@tmp; } # OPTIMIZE LIST OF RANGES. my $r = 0; # Working range number while (1) { last if ($r == $#ranges); my @r1 = @{$ranges[$r]}; my @r2 = @{$ranges[$r + 1]}; # Calculate how many array entries two ranges need my ($s1, $s2); if ($#r1 == 0) { $s1 = 2; } elsif ($#r1 == 1) { $s1 = 4; } else { $s1 = $#r1 + 1 + 3; } if ($#r2 == 0) { $s2 = 2; } elsif ($#r2 == 1) { $s2 = 4; } else { $s2 = $#r2 + 1 + 3; } my $two = $s1 + $s2; # Calculate how many array entries will be needed if we join them my $one = $r2[$#r2] - $r1[0] + 1 + 3; $r += 1, next if ($one > $two); # Join ranges my @r; # New range. push @r, $_ foreach (@r1); for (my $i = $r1[$#r1]+1; $i < $r2[0]; $i++) { push @r, undef; } push @r, $_ foreach (@r2); $ranges[$r] = \@r; splice @ranges, $r+1, 1; } # SEPARATE RANGED AND UNRANGED CODES. SPLIT 2-CODES RANGES ON 2 UNRANGED. my @unranged; foreach (@ranges) { if ($#$_ == 0) { push @unranged, $$_[0]; undef $_; } elsif ($#$_ == 1) { push @unranged, $$_[0]; push @unranged, $$_[1]; undef $_; } } # DELETE UNUSED ELEMENTS for (my $i = 0; $i <= $#ranges; $i++) { splice @ranges, $i--, 1 unless defined $ranges[$i]; } # CALCULATE UNRANGED CODES ARRAY INDEX my $idx = 3 + ($#ranges + 1)*3; $idx += $#$_ + 1 foreach @ranges; # COMPOSE TABLE $tbl->[0] = $#ranges + 1; # Number of ranges $tbl->[1] = $#unranged + 1; # Number of unranged codes $tbl->[2] = $idx; # Array index of unranged codes # Generate ranges list $idx = 3 + ($#ranges + 1)*3; # First range data index $$bytes = $idx*2; my $num = 0; foreach (@ranges) { $tbl->[3]->[$num]->[0] = $_->[0]; $tbl->[3]->[$num]->[1] = $_->[$#$_]; $tbl->[3]->[$num]->[2] = $idx; $idx += $#$_ + 1; $num += 1; } # Generate ranges content $num = 0; foreach (@ranges) { for (my $i = 0; $i <= $#$_; $i++) { $tbl->[4]->[$num]->[$i] = defined $_->[$i] ? $map->{$_->[$i]} : undef; } $num += 1; $$bytes += ($#$_ + 1)*2; } # Generate unranged codes list $num = 0; foreach (@unranged) { $tbl->[5]->[$num]->[0] = $_; $tbl->[5]->[$num]->[1] = $map->{$_}; $num += 1; } $$bytes += ($#unranged + 1)*4; } # ============================================================================= # # Output 8bit "to UCS" table. Output table's source code if $Source # and table's binary data if !$Source. # # Parameter 1: Not used when sources are output. Output BE binary if 'n' and # LE binary if 'v'. # # ============================================================================= sub Output8bitToUCS(;$) { my $endian = $_[0]; my $br = 0; printf "Output%s 8-bit UCS -> $CCSName table ($ToSpeedBytes bytes).\n", defined $endian ? ($endian eq 'n' ? " Big Endian" : " Little Endian") : "" if $Verbose; if ($Source) { # Output heading information printf OUTFILE "/* * 8-bit $CCSName -> UCS table ($ToSpeedBytes bytes). * $Separator */ #if defined ($GuardToUCS) static const __uint16_t ${VarToUCSSpeed}\[] = {\n\t"; } if ($Source) { foreach (@ToSpeedTbl) { $br += 1; if ($_ != $InvCode) { if ($_ != $TmpLost) { printf OUTFILE "0x%.4X,", $_; } else { print OUTFILE "$MacroLostCode,"; } } else { print OUTFILE "$MacroInvCode,"; } print(OUTFILE "\n\t"), $br = 0 unless $br % 8; } print OUTFILE "\n};\n\n#endif /* $GuardToUCS */\n\n"; } else { foreach (@ToSpeedTbl) { print OUTFILE pack($endian, $_ == $TmpLost ? $LostCode : $_); } } } # ============================================================================= # # Output 8bit "from UCS" table. Output table's source code if $Source # and table's binary data if !$Source. # # Parameter 1: Not used when sources are output. Output BE binary if 'n' and # LE binary if 'v'. # # ============================================================================= sub Output8bitFromUCS(;$) { my $endian = $_[0]; printf "Output%s 8-bit $CCSName -> UCS table ($FromSpeedBytes bytes).\n", defined $endian ? ($endian eq 'n' ? " Big Endian" : " Little Endian") : "" if $Verbose; if ($Source) { print OUTFILE "/* * 8-bit UCS -> $CCSName speed-optimized table ($FromSpeedBytes bytes). * $Separator */ #if defined ($GuardFromUCS) static const unsigned char ${VarFromUCSSpeed}\[] = { "; } # SAVE 0xFF MAPPING. if ($Source) { printf OUTFILE "\tW(0x%.4X), /* Real 0xFF mapping. 0xFF is used " . "to mark invalid codes */\n", $FFMap; } else { print OUTFILE pack($endian, $FFMap); } # OUTPUT HEADING BLOCK (ALWAYS 16 BIT) if ($Source) { my $count = 0; print OUTFILE "\t/* Heading Block */"; for (my $i = 0, my $br = 0; $i < 256; $br = ++$i % 4) { print OUTFILE "\n\t" unless $br; if (defined $FromSpeedTbl[0]->[$i]) { printf OUTFILE "W(0x%.4X),", $FromSpeedTbl[0]->[$i]; } else { print OUTFILE "W($MacroInvBlock),"; } } } else { print OUTFILE pack($endian, defined $_ ? $_ : $InvBlock) foreach @{$FromSpeedTbl[0]}; } if ($Source) { my $index = 512 + $Hdr8bitFromUCS; for (my $blk = 1; $blk <= $#FromSpeedTbl; $blk++) { next unless defined $FromSpeedTbl[$blk]; printf OUTFILE "\n\t/* Block $blk, Array index 0x%.4X */", $index; $index += 256; for (my $i = 0, my $br = 0; $i < 256; $i++, $br = $i % 8) { print OUTFILE "\n\t" unless $br; my $code = $FromSpeedTbl[$blk]->[$i]; if (!defined $code) { printf OUTFILE "0x%.2X,", $InvCode8bit; } else { printf OUTFILE "0x%.2X,", $code == $TmpLost ? $LostCode : $code; } } } print OUTFILE "\n};\n\n#endif /* $GuardFromUCS */\n\n"; } else { for (my $blk = 1; $blk <= $#FromSpeedTbl; $blk++) { next unless defined $FromSpeedTbl[$blk]; for (my $i = 0, my $br = 0; $i < 256; $br = ++$i % 8) { my $code = $FromSpeedTbl[$blk]->[$i]; if (!defined $code) { printf OUTFILE pack 'C', $InvCode8bit; } else { print OUTFILE $code == $TmpLost ? pack('C', $LostCode) : pack('C', $code); } } } } } # ============================================================================= # # Output 16bit Speed-optimized table. Output table's source code if $Source # and table's binary data if !$Source. # # Parameter 1: # "to_ucs" - Output "to_ucs" table. # "from_ucs" - Output "from_ucs" table. # Parameter 2: Not used when sources are output. Output BE binary if 'n' and # LE binary if 'v'. # # ============================================================================= sub OutputSpeed($;$) { my $endian = $_[1]; my $tbl; my ($direction, $optimiz, $e, $bytes); $optimiz = $Bits == 16 ? " speed-optimized" : ""; $e = $endian ? ($endian eq 'n' ? " Big Endian" : " Little Endian") : ""; if ($_[0] eq "to_ucs") { $tbl = \@ToSpeedTbl; $direction = " $CCSName -> UCS"; $bytes = $ToSpeedBytes; if ($Source) { print OUTFILE "/* * 16-bit $CCSName -> UCS speed-optimized table ($ToSpeedBytes bytes). * $Separator */ #if defined ($GuardToUCS) \\ && !($GuardSize) static const __uint16_t ${VarToUCSSpeed}\[] = { "; } } elsif ($_[0] eq "from_ucs") { $tbl = \@FromSpeedTbl; $direction = " UCS -> $CCSName"; $bytes = $FromSpeedBytes; if ($Source) { print OUTFILE "/* * 16-bit UCS -> $CCSName speed-optimized table ($FromSpeedBytes bytes). * $Separator */ #if defined ($GuardFromUCS) \\ && !($GuardSize) static const __uint16_t ${VarFromUCSSpeed}\[] = { "; } } else { Err "Internal script error Output16bitSpeed()\n"; } printf "Output%s 16-bit%s%s table (%d bytes).\n", $e, $direction, $optimiz, $bytes if $Verbose; # OUTPUT HEADING BLOCK (ALWAYS 16 BIT) if ($Source) { my $count = 0; print OUTFILE "\t/* Heading Block */"; for (my $i = 0, my $br = 0; $i < 256; $br = ++$i % 8) { print OUTFILE "\n\t" unless $br; if (defined $tbl->[0]->[$i]) { printf OUTFILE "0x%.4X,", $tbl->[0]->[$i]; } else { print OUTFILE "$MacroInvBlock,"; } } } else { print OUTFILE pack($endian, defined $_ ? $_ : $InvBlock) foreach @{$tbl->[0]}; } # OUTPUT OTHER BLOCKS if ($Source) { my $index = 256; for (my $blk = 1; $blk <= $#$tbl; $blk++) { next unless defined $tbl->[$blk]; printf OUTFILE "\n\t/* Block $blk, Array index 0x%.4X */", $index; $index += 256; for (my $i = 0, my $br = 0; $i < 256; $br = ++$i % 8) { print OUTFILE "\n\t" unless $br; my $code = $tbl->[$blk]->[$i]; print OUTFILE defined $code ? ($code == $TmpLost ? $MacroLostCode : sprintf "0x%.4X", $code) : $MacroInvCode, ","; } } } else { for (my $blk = 1; $blk <= $#$tbl; $blk++) { next unless defined $tbl->[$blk]; for (my $i = 0, my $br = 0; $i < 256; $br = ++$i % 8) { my $code = $tbl->[$blk]->[$i]; print OUTFILE pack($endian, defined $code ? ($code == $TmpLost ? $LostCode : $code) : $InvCode); } } } if ($Source) { if ($_[0] eq "to_ucs") { print OUTFILE " }; #endif /* $GuardToUCS && !$GuardSize */ "; } else { print OUTFILE " }; #endif /* $GuardFromUCS && !$GuardSize */ "; } } } # ============================================================================= # # Output 16bit Size-optimized table. Output table's source code if $Source # and table's binary data if !$Source. # # Parameter 1: # "to_ucs" - Output "to_ucs" table. # "from_ucs" - Output "from_ucs" table. # Parameter 2: Not used when sources are output. Output BE binary if 'n' and # LE binary if 'v'. # # ============================================================================= sub OutputSize($;$) { my $endian = $_[1]; my $tbl; my ($direction, $optimiz, $e, $bytes); $optimiz = $Bits == 16 ? " size-optimized" : ""; $e = $endian ? ($endian eq 'n' ? " Big Endian" : " Little Endian") : ""; if ($_[0] eq "to_ucs") { $tbl = \@ToSizeTbl; $direction = " $CCSName -> UCS"; $bytes = $ToSizeBytes; if ($Source) { print OUTFILE "/* * 16-bit $CCSName -> UCS size-optimized table ($ToSizeBytes bytes). * $Separator */ #if defined ($GuardToUCS) \\ && ($GuardSize) static const __uint16_t ${VarToUCSSize}\[] = { "; } } elsif ($_[0] eq "from_ucs") { $tbl = \@FromSizeTbl; $direction = " UCS -> $CCSName"; $bytes = $FromSizeBytes; if ($Source) { print OUTFILE "/* * 16-bit UCS -> $CCSName size-optimized table ($FromSizeBytes bytes). * $Separator */ #if defined ($GuardFromUCS) \\ && ($GuardSize) static const __uint16_t ${VarFromUCSSize}\[] = { "; } } else { Err "Internal script error Output16bitSize()\n"; } printf "Output%s 16-bit%s%s table (%d bytes).\n", $e, $direction, $optimiz, $bytes if $Verbose; # OUTPUT FIRST 3 ELEMENTS if ($Source) { printf OUTFILE "\t0x%.4X, /* Ranges number */\n", $tbl->[0]; printf OUTFILE "\t0x%.4X, /* Unranged codes number */\n", $tbl->[1]; printf OUTFILE "\t0x%.4X, /* First unranged code index */\n", $tbl->[2]; } else { printf OUTFILE pack $endian, $tbl->[0]; printf OUTFILE pack $endian, $tbl->[1]; printf OUTFILE pack $endian, $tbl->[2]; } my $idx = 0; # OUTPUT RANGES if ($Source) { print OUTFILE "\t/* Ranges list: first code, last Code, array index. */\n"; for (my $range = 0; $range <= $#{$tbl->[3]}; $range++) { printf OUTFILE "\t/* Array index: 0x%.4X */ 0x%.4X, 0x%.4X, 0x%.4X,\n", $idx += 3, $tbl->[3]->[$range]->[0], $tbl->[3]->[$range]->[1], $tbl->[3]->[$range]->[2]; } } else { for (my $range = 0; $range <= $#{$tbl->[3]}; $range++) { print OUTFILE pack($endian, $tbl->[3]->[$range]->[0]), pack($endian, $tbl->[3]->[$range]->[1]), pack($endian, $tbl->[3]->[$range]->[2]); } } $idx += 3; # OUTPUT RANGES CONTENT if ($Source) { print OUTFILE "\t/* Ranges content */"; for (my $range = 0; $range <= $#{$tbl->[3]}; $range++) { printf OUTFILE "\n\t/* Range 0x%.4X - 0x%.4X, array index: 0x%.4X */", $tbl->[3]->[$range]->[0], $tbl->[3]->[$range]->[1], $idx; $idx += $tbl->[3]->[$range]->[1] - $tbl->[3]->[$range]->[0] + 1; for (my $elt = 0, my $br = 0; $elt <= $#{$tbl->[4]->[$range]}; $br = ++$elt % 8) { print OUTFILE "\n\t" unless $br; if (defined $tbl->[4]->[$range]->[$elt]) { if ($tbl->[4]->[$range]->[$elt] != $TmpLost) { printf OUTFILE "0x%.4X,", $tbl->[4]->[$range]->[$elt]; } else { print OUTFILE "$MacroLostCode,"; } } else { print OUTFILE "$MacroInvCode,"; } } } } else { for (my $range = 0; $range <= $#{$tbl->[3]}; $range++) { for (my $elt = 0; $elt <= $#{$tbl->[4]->[$range]}; $elt++) { if (defined $tbl->[4]->[$range]->[$elt]) { if ($tbl->[4]->[$range]->[$elt] != $TmpLost) { print OUTFILE pack $endian, $tbl->[4]->[$range]->[$elt]; } else { print OUTFILE pack $endian, $LostCode; } } else { print OUTFILE pack $endian, $InvCode; } } } } # OUTPUT UNRANGED CODES if ($Source) { printf OUTFILE "\n\t/* Unranged codes (%d codes) */", $#{$tbl->[4]} + 1; for (my $i = 0; $i <= $#{$tbl->[5]}; $i++) { printf OUTFILE "\n\t/* Array index: 0x%.4X */ 0x%.4X,0x%.4X,", $idx, $tbl->[5]->[$i]->[0], $tbl->[5]->[$i]->[1]; } } else { for (my $i = 0; $i <= $#{$tbl->[5]}; $i++) { print OUTFILE pack($endian, $tbl->[5]->[$i]->[0]), pack($endian, $tbl->[5]->[$i]->[1]); } } if ($Source) { if ($_[0] eq "to_ucs") { print OUTFILE " }; #endif /* $GuardToUCS && $GuardSize */ "; } else { print OUTFILE " }; #endif /* $GuardFromUCS && $GuardSize */ "; } } } # ============================================================================= # # Parse command line options # # ============================================================================= sub ProcessOptions() { my $help_opt = 'h'; # Print help option my $input_opt = 'i'; # Input file name option my $output_opt = 'o'; # Output file name option my $source_opt = 'S'; # Generate C source file option my $enc_opt = 'N'; # Encoding name my $plane_opt = 'p'; # Plane number my $verbose_opt = 'v'; # Verbose output my $ccscol_opt = 'x'; # Encoding's column number my $ucscol_opt = 'y'; # UCS column number my $nosize_opt = 'l'; # Don't generate size-optimized tables my $nospeed_opt = 'b'; # Don't generate speed-optimized tables my $nobe_opt = 'B'; # Don't generate big-endian tables my $nole_opt = 'L'; # Don't generate big-endian tables my $noto_opt = 't'; # Don't generate "to_ucs" table my $nofrom_opt = 'f'; # Don't generate "from_ucs" table my %args; # Command line arguments found by getopts() my $getopts_string = "$help_opt$source_opt$enc_opt:$verbose_opt$input_opt:$output_opt:$plane_opt:" . "$nosize_opt$nospeed_opt$nobe_opt$nole_opt$noto_opt$nofrom_opt$ccscol_opt:" . "$ucscol_opt:"; getopts($getopts_string, \%args) || Err "getopts() failed: $!.\n", 1; # Print usage rules and exit. if ($args{$help_opt}) { print<.c (for sources) or .cct (for binaries) is assumed. If encoding name isn't specified is assumed. is normalized (small letters, "-" are substituted by "_") input file name base (no extension). For example, for Koi8-r.txt input file, is koi8_r. END ; exit 0; } $Verbose = $args{$verbose_opt}; $Source = $args{$source_opt}; $NoSpeed = $args{$nospeed_opt}; $NoSize = $args{$nosize_opt}; $NoBE = $args{$nobe_opt}; $NoLE = $args{$nole_opt}; $NoFrom = $args{$nofrom_opt}; $NoTo = $args{$noto_opt}; $CCSCol = $args{$ccscol_opt}; $UCSCol = $args{$ucscol_opt}; $Plane = $args{$plane_opt}; $InFile = $args{$input_opt}; $OutFile = $args{$output_opt}; $CCSName = $args{$enc_opt}; Err "Error: input file isn't defined. Use -$help_opt for help.\n", 1 unless $InFile; unless ($OutFile) { # Construct output file name $OutFile = $InFile; $OutFile =~ s/(.*\/)*([0-9a-zA-Z-_]*)(\..*)$/\L$2/; $OutFile =~ tr/-/_/; if ($Source) { $OutFile = "$OutFile.c"; } else { $OutFile = "$OutFile.cct" } } unless ($CCSName) { # Construct CCS name $CCSName = $InFile; $CCSName =~ s/(.*\/)*([0-9a-zA-Z-_]*)(\..*)$/\L$2/; $CCSName =~ tr/-/_/; } Err "-$nosize_opt option can't be used with -$nospeed_opt option " . "simultaniously.\n", 1 if $NoSpeed && $NoSize; Err "-$nobe_opt option can't be used with -$nole_opt option " . "simultaniously.\n", 1 if $NoBE && $NoLE; Err "-$noto_opt option can't be used with -$nofrom_opt option" . "simultaniously.\n", 1 if $NoTo && $NoFrom; Err "-$nosize_opt, -$nospeed_opt, -$nobe_opt -$nole_opt " . "-$noto_opt and -$nofrom_opt " . "options can't be used with -$source_opt option.\n" . "Source code always contains both speed- and size-optimized " . "tables in System Endian. Use -$help_opt for help.\n", 1 if $Source and $NoSpeed || $NoSize || $NoBE || $NoLE || $NoTo || $NoFrom; if (!$CCSCol && !$UCSCol) { $CCSCol = 0; $UCSCol = 1; } elsif ($CCSCol && $UCSCol) { Err "Column number should be >= 0\n", 1 if ($CCSCol <= 0 or $UCSCol <= 0); $CCSCol -= 1; $UCSCol -= 1; } else { Err "Please, define both CCS and UCS column numbers\n", 1; } if ($Verbose) { print "Use $InFile file for input.\n", "Use $OutFile file for output.\n", "Use $CCSName as CCS name.\n"; print "Generate C source file.\n" if $Source; print "Generate binary file.\n" if !$Source; printf "Use plane N 0x%.4X.\n", hex $Plane if defined $Plane; printf "Use column N $CCSCol for $CCSName.\n"; printf "Use column N $UCSCol for UCS.\n"; print "Don't generate size-optimized tables.\n" if $NoSize; print "Don't generate speed-optimized tables.\n" if $NoSpeed; print "Don't generate big-endian tables.\n" if $NoBE; print "Don't generate little-endian tables.\n" if $NoLE; print "Don't generate \"to_ucs\" table.\n" if $NoTo; print "Don't generate \"from_ucs\" table.\n" if $NoFrom; } return; } # ============================================================================= # # Print error message, close all and exit # # Parameter 1: error message # Parameter 2: don't delete output file if > 1 # # ============================================================================= sub Err($;$) { print STDERR "$_[0]"; close INFILE; close OUTFILE; unlink $OutFile unless $_[1]; exit 1; }picolibc-1.7.4/newlib/libc/iconv/ccs/win_1250.c000066400000000000000000000317131414576234500210160ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for win_1250 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_WIN_1250) \ || defined (ICONV_FROM_UCS_CCS_WIN_1250) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit win_1250 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_WIN_1250) static const __uint16_t to_ucs_speed_win_1250[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x20AC,INVALC,0x201A,INVALC,0x201E,0x2026,0x2020,0x2021, INVALC,0x2030,0x0160,0x2039,0x015A,0x0164,0x017D,0x0179, INVALC,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014, INVALC,0x2122,0x0161,0x203A,0x015B,0x0165,0x017E,0x017A, 0x00A0,0x02C7,0x02D8,0x0141,0x00A4,0x0104,0x00A6,0x00A7, 0x00A8,0x00A9,0x015E,0x00AB,0x00AC,0x00AD,0x00AE,0x017B, 0x00B0,0x00B1,0x02DB,0x0142,0x00B4,0x00B5,0x00B6,0x00B7, 0x00B8,0x0105,0x015F,0x00BB,0x013D,0x02DD,0x013E,0x017C, 0x0154,0x00C1,0x00C2,0x0102,0x00C4,0x0139,0x0106,0x00C7, 0x010C,0x00C9,0x0118,0x00CB,0x011A,0x00CD,0x00CE,0x010E, 0x0110,0x0143,0x0147,0x00D3,0x00D4,0x0150,0x00D6,0x00D7, 0x0158,0x016E,0x00DA,0x0170,0x00DC,0x00DD,0x0162,0x00DF, 0x0155,0x00E1,0x00E2,0x0103,0x00E4,0x013A,0x0107,0x00E7, 0x010D,0x00E9,0x0119,0x00EB,0x011B,0x00ED,0x00EE,0x010F, 0x0111,0x0144,0x0148,0x00F3,0x00F4,0x0151,0x00F6,0x00F7, 0x0159,0x016F,0x00FA,0x0171,0x00FC,0x00FD,0x0163,0x02D9, }; #endif /* ICONV_TO_UCS_CCS_WIN_1250 */ /* * 8-bit UCS -> win_1250 speed-optimized table (1794 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_WIN_1250) static const unsigned char from_ucs_speed_win_1250[] = { W(0x02D9), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(0x0302),W(0x0402),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(0x0502),W(0x0602),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xA0,0xFF,0xFF,0xFF,0xA4,0xFF,0xA6,0xA7, 0xA8,0xA9,0xFF,0xAB,0xAC,0xAD,0xAE,0xFF, 0xB0,0xB1,0xFF,0xFF,0xB4,0xB5,0xB6,0xB7, 0xB8,0xFF,0xFF,0xBB,0xFF,0xFF,0xFF,0xFF, 0xFF,0xC1,0xC2,0xFF,0xC4,0xFF,0xFF,0xC7, 0xFF,0xC9,0xFF,0xCB,0xFF,0xCD,0xCE,0xFF, 0xFF,0xFF,0xFF,0xD3,0xD4,0xFF,0xD6,0xD7, 0xFF,0xFF,0xDA,0xFF,0xDC,0xDD,0xFF,0xDF, 0xFF,0xE1,0xE2,0xFF,0xE4,0xFF,0xFF,0xE7, 0xFF,0xE9,0xFF,0xEB,0xFF,0xED,0xEE,0xFF, 0xFF,0xFF,0xFF,0xF3,0xF4,0xFF,0xF6,0xF7, 0xFF,0xFF,0xFA,0xFF,0xFC,0xFD,0xFF,0xFF, /* Block 2, Array index 0x0302 */ 0xFF,0xFF,0xC3,0xE3,0xA5,0xB9,0xC6,0xE6, 0xFF,0xFF,0xFF,0xFF,0xC8,0xE8,0xCF,0xEF, 0xD0,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xCA,0xEA,0xCC,0xEC,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xC5,0xE5,0xFF,0xFF,0xBC,0xBE,0xFF, 0xFF,0xA3,0xB3,0xD1,0xF1,0xFF,0xFF,0xD2, 0xF2,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xD5,0xF5,0xFF,0xFF,0xC0,0xE0,0xFF,0xFF, 0xD8,0xF8,0x8C,0x9C,0xFF,0xFF,0xAA,0xBA, 0x8A,0x9A,0xDE,0xFE,0x8D,0x9D,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD9,0xF9, 0xDB,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x8F,0x9F,0xAF,0xBF,0x8E,0x9E,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 3, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xA1, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xA2,0xFF,0xFF,0xB2,0xFF,0xBD,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 33, Array index 0x0502 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0x96,0x97,0xFF,0xFF,0xFF, 0x91,0x92,0x82,0xFF,0x93,0x94,0x84,0xFF, 0x86,0x87,0x95,0xFF,0xFF,0xFF,0x85,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x89,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x8B,0x9B,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 34, Array index 0x0602 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x99,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_WIN_1250 */ /* * win_1250 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_win_1250 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_WIN_1250, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_WIN_1250) (__uint16_t *)&from_ucs_speed_win_1250, /* UCS -> win_1250 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_WIN_1250) (__uint16_t *)&to_ucs_speed_win_1250 /* win_1250 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_WIN_1250) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/win_1251.c000066400000000000000000000271501414576234500210170ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for win_1251 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_WIN_1251) \ || defined (ICONV_FROM_UCS_CCS_WIN_1251) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit win_1251 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_WIN_1251) static const __uint16_t to_ucs_speed_win_1251[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x0402,0x0403,0x201A,0x0453,0x201E,0x2026,0x2020,0x2021, 0x20AC,0x2030,0x0409,0x2039,0x040A,0x040C,0x040B,0x040F, 0x0452,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014, INVALC,0x2122,0x0459,0x203A,0x045A,0x045C,0x045B,0x045F, 0x00A0,0x040E,0x045E,0x0408,0x00A4,0x0490,0x00A6,0x00A7, 0x0401,0x00A9,0x0404,0x00AB,0x00AC,0x00AD,0x00AE,0x0407, 0x00B0,0x00B1,0x0406,0x0456,0x0491,0x00B5,0x00B6,0x00B7, 0x0451,0x2116,0x0454,0x00BB,0x0458,0x0405,0x0455,0x0457, 0x0410,0x0411,0x0412,0x0413,0x0414,0x0415,0x0416,0x0417, 0x0418,0x0419,0x041A,0x041B,0x041C,0x041D,0x041E,0x041F, 0x0420,0x0421,0x0422,0x0423,0x0424,0x0425,0x0426,0x0427, 0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E,0x042F, 0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,0x0437, 0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,0x043F, 0x0440,0x0441,0x0442,0x0443,0x0444,0x0445,0x0446,0x0447, 0x0448,0x0449,0x044A,0x044B,0x044C,0x044D,0x044E,0x044F, }; #endif /* ICONV_TO_UCS_CCS_WIN_1251 */ /* * 8-bit UCS -> win_1251 speed-optimized table (1538 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_WIN_1251) static const unsigned char from_ucs_speed_win_1251[] = { W(0x044F), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(INVBLK),W(INVBLK),W(INVBLK), W(0x0302),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(0x0402),W(0x0502),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xA0,0xFF,0xFF,0xFF,0xA4,0xFF,0xA6,0xA7, 0xFF,0xA9,0xFF,0xAB,0xAC,0xAD,0xAE,0xFF, 0xB0,0xB1,0xFF,0xFF,0xFF,0xB5,0xB6,0xB7, 0xFF,0xFF,0xFF,0xBB,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 5, Array index 0x0302 */ 0xFF,0xA8,0x80,0x81,0xAA,0xBD,0xB2,0xAF, 0xA3,0x8A,0x8C,0x8E,0x8D,0xFF,0xA1,0x8F, 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7, 0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7, 0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7, 0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7, 0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF, 0xFF,0xB8,0x90,0x83,0xBA,0xBE,0xB3,0xBF, 0xBC,0x9A,0x9C,0x9E,0x9D,0xFF,0xA2,0x9F, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xA5,0xB4,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 33, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0x96,0x97,0xFF,0xFF,0xFF, 0x91,0x92,0x82,0xFF,0x93,0x94,0x84,0xFF, 0x86,0x87,0x95,0xFF,0xFF,0xFF,0x85,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x89,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x8B,0x9B,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x88,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 34, Array index 0x0502 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xB9,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x99,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_WIN_1251 */ /* * win_1251 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_win_1251 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_WIN_1251, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_WIN_1251) (__uint16_t *)&from_ucs_speed_win_1251, /* UCS -> win_1251 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_WIN_1251) (__uint16_t *)&to_ucs_speed_win_1251 /* win_1251 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_WIN_1251) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/win_1252.c000066400000000000000000000317131414576234500210200ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for win_1252 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_WIN_1252) \ || defined (ICONV_FROM_UCS_CCS_WIN_1252) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit win_1252 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_WIN_1252) static const __uint16_t to_ucs_speed_win_1252[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x20AC,INVALC,0x201A,0x0192,0x201E,0x2026,0x2020,0x2021, 0x02C6,0x2030,0x0160,0x2039,0x0152,INVALC,0x017D,INVALC, INVALC,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014, 0x02DC,0x2122,0x0161,0x203A,0x0153,INVALC,0x017E,0x0178, 0x00A0,0x00A1,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7, 0x00A8,0x00A9,0x00AA,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF, 0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7, 0x00B8,0x00B9,0x00BA,0x00BB,0x00BC,0x00BD,0x00BE,0x00BF, 0x00C0,0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x00C7, 0x00C8,0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF, 0x00D0,0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0x00D7, 0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,0x00DD,0x00DE,0x00DF, 0x00E0,0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x00E7, 0x00E8,0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF, 0x00F0,0x00F1,0x00F2,0x00F3,0x00F4,0x00F5,0x00F6,0x00F7, 0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,0x00FD,0x00FE,0x00FF, }; #endif /* ICONV_TO_UCS_CCS_WIN_1252 */ /* * 8-bit UCS -> win_1252 speed-optimized table (1794 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_WIN_1252) static const unsigned char from_ucs_speed_win_1252[] = { W(0x00FF), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(0x0302),W(0x0402),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(0x0502),W(0x0602),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7, 0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7, 0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7, 0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7, 0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7, 0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7, 0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF, /* Block 2, Array index 0x0302 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x8C,0x9C,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x8A,0x9A,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x9F,0xFF,0xFF,0xFF,0xFF,0x8E,0x9E,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x83,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 3, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x88,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x98,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 33, Array index 0x0502 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0x96,0x97,0xFF,0xFF,0xFF, 0x91,0x92,0x82,0xFF,0x93,0x94,0x84,0xFF, 0x86,0x87,0x95,0xFF,0xFF,0xFF,0x85,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x89,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x8B,0x9B,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 34, Array index 0x0602 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x99,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_WIN_1252 */ /* * win_1252 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_win_1252 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_WIN_1252, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_WIN_1252) (__uint16_t *)&from_ucs_speed_win_1252, /* UCS -> win_1252 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_WIN_1252) (__uint16_t *)&to_ucs_speed_win_1252 /* win_1252 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_WIN_1252) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/win_1253.c000066400000000000000000000317131414576234500210210ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for win_1253 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_WIN_1253) \ || defined (ICONV_FROM_UCS_CCS_WIN_1253) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit win_1253 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_WIN_1253) static const __uint16_t to_ucs_speed_win_1253[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x20AC,INVALC,0x201A,0x0192,0x201E,0x2026,0x2020,0x2021, INVALC,0x2030,INVALC,0x2039,INVALC,INVALC,INVALC,INVALC, INVALC,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014, INVALC,0x2122,INVALC,0x203A,INVALC,INVALC,INVALC,INVALC, 0x00A0,0x0385,0x0386,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7, 0x00A8,0x00A9,INVALC,0x00AB,0x00AC,0x00AD,0x00AE,0x2015, 0x00B0,0x00B1,0x00B2,0x00B3,0x0384,0x00B5,0x00B6,0x00B7, 0x0388,0x0389,0x038A,0x00BB,0x038C,0x00BD,0x038E,0x038F, 0x0390,0x0391,0x0392,0x0393,0x0394,0x0395,0x0396,0x0397, 0x0398,0x0399,0x039A,0x039B,0x039C,0x039D,0x039E,0x039F, 0x03A0,0x03A1,INVALC,0x03A3,0x03A4,0x03A5,0x03A6,0x03A7, 0x03A8,0x03A9,0x03AA,0x03AB,0x03AC,0x03AD,0x03AE,0x03AF, 0x03B0,0x03B1,0x03B2,0x03B3,0x03B4,0x03B5,0x03B6,0x03B7, 0x03B8,0x03B9,0x03BA,0x03BB,0x03BC,0x03BD,0x03BE,0x03BF, 0x03C0,0x03C1,0x03C2,0x03C3,0x03C4,0x03C5,0x03C6,0x03C7, 0x03C8,0x03C9,0x03CA,0x03CB,0x03CC,0x03CD,0x03CE,INVALC, }; #endif /* ICONV_TO_UCS_CCS_WIN_1253 */ /* * 8-bit UCS -> win_1253 speed-optimized table (1794 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_WIN_1253) static const unsigned char from_ucs_speed_win_1253[] = { W(0xFFFF), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(0x0302),W(INVBLK),W(0x0402), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(0x0502),W(0x0602),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xA0,0xFF,0xFF,0xA3,0xA4,0xA5,0xA6,0xA7, 0xA8,0xA9,0xFF,0xAB,0xAC,0xAD,0xAE,0xFF, 0xB0,0xB1,0xB2,0xB3,0xFF,0xB5,0xB6,0xB7, 0xFF,0xFF,0xFF,0xBB,0xFF,0xBD,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 2, Array index 0x0302 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x83,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 4, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xB4,0xA1,0xA2,0xFF, 0xB8,0xB9,0xBA,0xFF,0xBC,0xFF,0xBE,0xBF, 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7, 0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, 0xD0,0xD1,0xFF,0xD3,0xD4,0xD5,0xD6,0xD7, 0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7, 0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7, 0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 33, Array index 0x0502 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0x96,0x97,0xAF,0xFF,0xFF, 0x91,0x92,0x82,0xFF,0x93,0x94,0x84,0xFF, 0x86,0x87,0x95,0xFF,0xFF,0xFF,0x85,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x89,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x8B,0x9B,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 34, Array index 0x0602 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x99,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_WIN_1253 */ /* * win_1253 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_win_1253 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_WIN_1253, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_WIN_1253) (__uint16_t *)&from_ucs_speed_win_1253, /* UCS -> win_1253 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_WIN_1253) (__uint16_t *)&to_ucs_speed_win_1253 /* win_1253 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_WIN_1253) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/win_1254.c000066400000000000000000000317131414576234500210220ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for win_1254 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_WIN_1254) \ || defined (ICONV_FROM_UCS_CCS_WIN_1254) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit win_1254 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_WIN_1254) static const __uint16_t to_ucs_speed_win_1254[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x20AC,INVALC,0x201A,0x0192,0x201E,0x2026,0x2020,0x2021, 0x02C6,0x2030,0x0160,0x2039,0x0152,INVALC,INVALC,INVALC, INVALC,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014, 0x02DC,0x2122,0x0161,0x203A,0x0153,INVALC,INVALC,0x0178, 0x00A0,0x00A1,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7, 0x00A8,0x00A9,0x00AA,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF, 0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7, 0x00B8,0x00B9,0x00BA,0x00BB,0x00BC,0x00BD,0x00BE,0x00BF, 0x00C0,0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x00C7, 0x00C8,0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF, 0x011E,0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0x00D7, 0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,0x0130,0x015E,0x00DF, 0x00E0,0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x00E7, 0x00E8,0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF, 0x011F,0x00F1,0x00F2,0x00F3,0x00F4,0x00F5,0x00F6,0x00F7, 0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,0x0131,0x015F,0x00FF, }; #endif /* ICONV_TO_UCS_CCS_WIN_1254 */ /* * 8-bit UCS -> win_1254 speed-optimized table (1794 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_WIN_1254) static const unsigned char from_ucs_speed_win_1254[] = { W(0x00FF), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(0x0302),W(0x0402),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(0x0502),W(0x0602),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7, 0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7, 0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7, 0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, 0xFF,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7, 0xD8,0xD9,0xDA,0xDB,0xDC,0xFF,0xFF,0xDF, 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7, 0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, 0xFF,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7, 0xF8,0xF9,0xFA,0xFB,0xFC,0xFF,0xFF,0xFF, /* Block 2, Array index 0x0302 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD0,0xF0, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xDD,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x8C,0x9C,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDE,0xFE, 0x8A,0x9A,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x9F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x83,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 3, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x88,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x98,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 33, Array index 0x0502 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0x96,0x97,0xFF,0xFF,0xFF, 0x91,0x92,0x82,0xFF,0x93,0x94,0x84,0xFF, 0x86,0x87,0x95,0xFF,0xFF,0xFF,0x85,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x89,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x8B,0x9B,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 34, Array index 0x0602 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x99,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_WIN_1254 */ /* * win_1254 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_win_1254 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_WIN_1254, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_WIN_1254) (__uint16_t *)&from_ucs_speed_win_1254, /* UCS -> win_1254 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_WIN_1254) (__uint16_t *)&to_ucs_speed_win_1254 /* win_1254 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_WIN_1254) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/win_1255.c000066400000000000000000000344561414576234500210320ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for win_1255 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_WIN_1255) \ || defined (ICONV_FROM_UCS_CCS_WIN_1255) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit win_1255 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_WIN_1255) static const __uint16_t to_ucs_speed_win_1255[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x20AC,INVALC,0x201A,0x0192,0x201E,0x2026,0x2020,0x2021, 0x02C6,0x2030,INVALC,0x2039,INVALC,INVALC,INVALC,INVALC, INVALC,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014, 0x02DC,0x2122,INVALC,0x203A,INVALC,INVALC,INVALC,INVALC, 0x00A0,0x00A1,0x00A2,0x00A3,0x20AA,0x00A5,0x00A6,0x00A7, 0x00A8,0x00A9,0x00D7,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF, 0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7, 0x00B8,0x00B9,0x00F7,0x00BB,0x00BC,0x00BD,0x00BE,0x00BF, 0x05B0,0x05B1,0x05B2,0x05B3,0x05B4,0x05B5,0x05B6,0x05B7, 0x05B8,0x05B9,INVALC,0x05BB,0x05BC,0x05BD,0x05BE,0x05BF, 0x05C0,0x05C1,0x05C2,0x05C3,0x05F0,0x05F1,0x05F2,0x05F3, 0x05F4,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC,INVALC, 0x05D0,0x05D1,0x05D2,0x05D3,0x05D4,0x05D5,0x05D6,0x05D7, 0x05D8,0x05D9,0x05DA,0x05DB,0x05DC,0x05DD,0x05DE,0x05DF, 0x05E0,0x05E1,0x05E2,0x05E3,0x05E4,0x05E5,0x05E6,0x05E7, 0x05E8,0x05E9,0x05EA,INVALC,INVALC,0x200E,0x200F,INVALC, }; #endif /* ICONV_TO_UCS_CCS_WIN_1255 */ /* * 8-bit UCS -> win_1255 speed-optimized table (2050 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_WIN_1255) static const unsigned char from_ucs_speed_win_1255[] = { W(0xFFFF), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(0x0302),W(0x0402),W(INVBLK), W(INVBLK),W(0x0502),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(0x0602),W(0x0702),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xA0,0xA1,0xA2,0xA3,0xFF,0xA5,0xA6,0xA7, 0xA8,0xA9,0xFF,0xAB,0xAC,0xAD,0xAE,0xAF, 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7, 0xB8,0xB9,0xFF,0xBB,0xBC,0xBD,0xBE,0xBF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBA, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 2, Array index 0x0302 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x83,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 3, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x88,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x98,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 6, Array index 0x0502 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7, 0xC8,0xC9,0xFF,0xCB,0xCC,0xCD,0xCE,0xCF, 0xD0,0xD1,0xD2,0xD3,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7, 0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7, 0xF8,0xF9,0xFA,0xFF,0xFF,0xFF,0xFF,0xFF, 0xD4,0xD5,0xD6,0xD7,0xD8,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 33, Array index 0x0602 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFE, 0xFF,0xFF,0xFF,0x96,0x97,0xFF,0xFF,0xFF, 0x91,0x92,0x82,0xFF,0x93,0x94,0x84,0xFF, 0x86,0x87,0x95,0xFF,0xFF,0xFF,0x85,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x89,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x8B,0x9B,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xA4,0xFF,0x80,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 34, Array index 0x0702 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x99,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_WIN_1255 */ /* * win_1255 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_win_1255 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_WIN_1255, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_WIN_1255) (__uint16_t *)&from_ucs_speed_win_1255, /* UCS -> win_1255 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_WIN_1255) (__uint16_t *)&to_ucs_speed_win_1255 /* win_1255 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_WIN_1255) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/win_1256.c000066400000000000000000000344561414576234500210330ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for win_1256 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_WIN_1256) \ || defined (ICONV_FROM_UCS_CCS_WIN_1256) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit win_1256 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_WIN_1256) static const __uint16_t to_ucs_speed_win_1256[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x20AC,0x067E,0x201A,0x0192,0x201E,0x2026,0x2020,0x2021, 0x02C6,0x2030,0x0679,0x2039,0x0152,0x0686,0x0698,0x0688, 0x06AF,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014, 0x06A9,0x2122,0x0691,0x203A,0x0153,0x200C,0x200D,0x06BA, 0x00A0,0x060C,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7, 0x00A8,0x00A9,0x06BE,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF, 0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7, 0x00B8,0x00B9,0x061B,0x00BB,0x00BC,0x00BD,0x00BE,0x061F, 0x06C1,0x0621,0x0622,0x0623,0x0624,0x0625,0x0626,0x0627, 0x0628,0x0629,0x062A,0x062B,0x062C,0x062D,0x062E,0x062F, 0x0630,0x0631,0x0632,0x0633,0x0634,0x0635,0x0636,0x00D7, 0x0637,0x0638,0x0639,0x063A,0x0640,0x0641,0x0642,0x0643, 0x00E0,0x0644,0x00E2,0x0645,0x0646,0x0647,0x0648,0x00E7, 0x00E8,0x00E9,0x00EA,0x00EB,0x0649,0x064A,0x00EE,0x00EF, 0x064B,0x064C,0x064D,0x064E,0x00F4,0x064F,0x0650,0x00F7, 0x0651,0x00F9,0x0652,0x00FB,0x00FC,0x200E,0x200F,0x06D2, }; #endif /* ICONV_TO_UCS_CCS_WIN_1256 */ /* * 8-bit UCS -> win_1256 speed-optimized table (2050 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_WIN_1256) static const unsigned char from_ucs_speed_win_1256[] = { W(0x06D2), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(0x0302),W(0x0402),W(INVBLK), W(INVBLK),W(INVBLK),W(0x0502),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(0x0602),W(0x0702),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xA0,0xFF,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7, 0xA8,0xA9,0xFF,0xAB,0xAC,0xAD,0xAE,0xAF, 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7, 0xB8,0xB9,0xFF,0xBB,0xBC,0xBD,0xBE,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD7, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xE0,0xFF,0xE2,0xFF,0xFF,0xFF,0xFF,0xE7, 0xE8,0xE9,0xEA,0xEB,0xFF,0xFF,0xEE,0xEF, 0xFF,0xFF,0xFF,0xFF,0xF4,0xFF,0xFF,0xF7, 0xFF,0xF9,0xFF,0xFB,0xFC,0xFF,0xFF,0xFF, /* Block 2, Array index 0x0302 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x8C,0x9C,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x83,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 3, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x88,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 7, Array index 0x0502 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xA1,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xBA,0xFF,0xFF,0xFF,0xBF, 0xFF,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7, 0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD8, 0xD9,0xDA,0xDB,0xFF,0xFF,0xFF,0xFF,0xFF, 0xDC,0xDD,0xDE,0xDF,0xE1,0xE3,0xE4,0xE5, 0xE6,0xEC,0xED,0xF0,0xF1,0xF2,0xF3,0xF5, 0xF6,0xF8,0xFA,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x8A,0xFF,0xFF,0xFF,0xFF,0x81,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x8D,0xFF, 0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x9A,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x8E,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x98,0xFF,0xFF,0xFF,0xFF,0xFF,0x90, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x9F,0xFF,0xFF,0xFF,0xAA,0xFF, 0xFF,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 33, Array index 0x0602 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x9D,0x9E,0xFD,0xFE, 0xFF,0xFF,0xFF,0x96,0x97,0xFF,0xFF,0xFF, 0x91,0x92,0x82,0xFF,0x93,0x94,0x84,0xFF, 0x86,0x87,0x95,0xFF,0xFF,0xFF,0x85,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x89,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x8B,0x9B,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 34, Array index 0x0702 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x99,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_WIN_1256 */ /* * win_1256 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_win_1256 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_WIN_1256, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_WIN_1256) (__uint16_t *)&from_ucs_speed_win_1256, /* UCS -> win_1256 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_WIN_1256) (__uint16_t *)&to_ucs_speed_win_1256 /* win_1256 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_WIN_1256) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/win_1257.c000066400000000000000000000317131414576234500210250ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for win_1257 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_WIN_1257) \ || defined (ICONV_FROM_UCS_CCS_WIN_1257) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit win_1257 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_WIN_1257) static const __uint16_t to_ucs_speed_win_1257[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x20AC,INVALC,0x201A,INVALC,0x201E,0x2026,0x2020,0x2021, INVALC,0x2030,INVALC,0x2039,INVALC,0x00A8,0x02C7,0x00B8, INVALC,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014, INVALC,0x2122,INVALC,0x203A,INVALC,0x00AF,0x02DB,INVALC, 0x00A0,INVALC,0x00A2,0x00A3,0x00A4,INVALC,0x00A6,0x00A7, 0x00D8,0x00A9,0x0156,0x00AB,0x00AC,0x00AD,0x00AE,0x00C6, 0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7, 0x00F8,0x00B9,0x0157,0x00BB,0x00BC,0x00BD,0x00BE,0x00E6, 0x0104,0x012E,0x0100,0x0106,0x00C4,0x00C5,0x0118,0x0112, 0x010C,0x00C9,0x0179,0x0116,0x0122,0x0136,0x012A,0x013B, 0x0160,0x0143,0x0145,0x00D3,0x014C,0x00D5,0x00D6,0x00D7, 0x0172,0x0141,0x015A,0x016A,0x00DC,0x017B,0x017D,0x00DF, 0x0105,0x012F,0x0101,0x0107,0x00E4,0x00E5,0x0119,0x0113, 0x010D,0x00E9,0x017A,0x0117,0x0123,0x0137,0x012B,0x013C, 0x0161,0x0144,0x0146,0x00F3,0x014D,0x00F5,0x00F6,0x00F7, 0x0173,0x0142,0x015B,0x016B,0x00FC,0x017C,0x017E,0x02D9, }; #endif /* ICONV_TO_UCS_CCS_WIN_1257 */ /* * 8-bit UCS -> win_1257 speed-optimized table (1794 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_WIN_1257) static const unsigned char from_ucs_speed_win_1257[] = { W(0x02D9), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(0x0302),W(0x0402),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(0x0502),W(0x0602),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xA0,0xFF,0xA2,0xA3,0xA4,0xFF,0xA6,0xA7, 0x8D,0xA9,0xFF,0xAB,0xAC,0xAD,0xAE,0x9D, 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7, 0x8F,0xB9,0xFF,0xBB,0xBC,0xBD,0xBE,0xFF, 0xFF,0xFF,0xFF,0xFF,0xC4,0xC5,0xAF,0xFF, 0xFF,0xC9,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xD3,0xFF,0xD5,0xD6,0xD7, 0xA8,0xFF,0xFF,0xFF,0xDC,0xFF,0xFF,0xDF, 0xFF,0xFF,0xFF,0xFF,0xE4,0xE5,0xBF,0xFF, 0xFF,0xE9,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xF3,0xFF,0xF5,0xF6,0xF7, 0xB8,0xFF,0xFF,0xFF,0xFC,0xFF,0xFF,0xFF, /* Block 2, Array index 0x0302 */ 0xC2,0xE2,0xFF,0xFF,0xC0,0xE0,0xC3,0xE3, 0xFF,0xFF,0xFF,0xFF,0xC8,0xE8,0xFF,0xFF, 0xFF,0xFF,0xC7,0xE7,0xFF,0xFF,0xCB,0xEB, 0xC6,0xE6,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xCC,0xEC,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xCE,0xEE,0xFF,0xFF,0xC1,0xE1, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCD,0xED, 0xFF,0xFF,0xFF,0xCF,0xEF,0xFF,0xFF,0xFF, 0xFF,0xD9,0xF9,0xD1,0xF1,0xD2,0xF2,0xFF, 0xFF,0xFF,0xFF,0xFF,0xD4,0xF4,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xBA, 0xFF,0xFF,0xDA,0xFA,0xFF,0xFF,0xFF,0xFF, 0xD0,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xDB,0xFB,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xD8,0xF8,0xFF,0xFF,0xFF,0xFF, 0xFF,0xCA,0xEA,0xDD,0xFD,0xDE,0xFE,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 3, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x8E, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0x9E,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 33, Array index 0x0502 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0x96,0x97,0xFF,0xFF,0xFF, 0x91,0x92,0x82,0xFF,0x93,0x94,0x84,0xFF, 0x86,0x87,0x95,0xFF,0xFF,0xFF,0x85,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x89,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x8B,0x9B,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 34, Array index 0x0602 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x99,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_WIN_1257 */ /* * win_1257 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_win_1257 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_WIN_1257, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_WIN_1257) (__uint16_t *)&from_ucs_speed_win_1257, /* UCS -> win_1257 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_WIN_1257) (__uint16_t *)&to_ucs_speed_win_1257 /* win_1257 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_WIN_1257) || ... */ picolibc-1.7.4/newlib/libc/iconv/ccs/win_1258.c000066400000000000000000000344561414576234500210350ustar00rootroot00000000000000/* * This file was generated automatically - don't edit it. * File contains iconv CCS tables for win_1258 encoding. */ #include "ccsbi.h" #if defined (ICONV_TO_UCS_CCS_WIN_1258) \ || defined (ICONV_FROM_UCS_CCS_WIN_1258) #include <_ansi.h> #include #include #include "ccs.h" #include "ccsnames.h" #if (BYTE_ORDER == LITTLE_ENDIAN) # define W(word) (word) & 0xFF, (word) >> 8 #elif (BYTE_ORDER == BIG_ENDIAN) # define W(word) (word) >> 8, (word) & 0xFF #else # error "Unknown byte order." #endif /* * 8-bit win_1258 -> UCS table (512 bytes). * ====================================================================== */ #if defined (ICONV_TO_UCS_CCS_WIN_1258) static const __uint16_t to_ucs_speed_win_1258[] = { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x20AC,INVALC,0x201A,0x0192,0x201E,0x2026,0x2020,0x2021, 0x02C6,0x2030,INVALC,0x2039,0x0152,INVALC,INVALC,INVALC, INVALC,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014, 0x02DC,0x2122,INVALC,0x203A,0x0153,INVALC,INVALC,0x0178, 0x00A0,0x00A1,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7, 0x00A8,0x00A9,0x00AA,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF, 0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7, 0x00B8,0x00B9,0x00BA,0x00BB,0x00BC,0x00BD,0x00BE,0x00BF, 0x00C0,0x00C1,0x00C2,0x0102,0x00C4,0x00C5,0x00C6,0x00C7, 0x00C8,0x00C9,0x00CA,0x00CB,0x0300,0x00CD,0x00CE,0x00CF, 0x0110,0x00D1,0x0309,0x00D3,0x00D4,0x01A0,0x00D6,0x00D7, 0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,0x01AF,0x0303,0x00DF, 0x00E0,0x00E1,0x00E2,0x0103,0x00E4,0x00E5,0x00E6,0x00E7, 0x00E8,0x00E9,0x00EA,0x00EB,0x0301,0x00ED,0x00EE,0x00EF, 0x0111,0x00F1,0x0323,0x00F3,0x00F4,0x01A1,0x00F6,0x00F7, 0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,0x01B0,0x20AB,0x00FF, }; #endif /* ICONV_TO_UCS_CCS_WIN_1258 */ /* * 8-bit UCS -> win_1258 speed-optimized table (2050 bytes). * ====================================================================== */ #if defined (ICONV_FROM_UCS_CCS_WIN_1258) static const unsigned char from_ucs_speed_win_1258[] = { W(0x00FF), /* Real 0xFF mapping. 0xFF is used to mark invalid codes */ /* Heading Block */ W(0x0202),W(0x0302),W(0x0402),W(0x0502), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(0x0602),W(0x0702),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), W(INVBLK),W(INVBLK),W(INVBLK),W(INVBLK), /* Block 1, Array index 0x0202 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7, 0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7, 0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, 0xC0,0xC1,0xC2,0xFF,0xC4,0xC5,0xC6,0xC7, 0xC8,0xC9,0xCA,0xCB,0xFF,0xCD,0xCE,0xCF, 0xFF,0xD1,0xFF,0xD3,0xD4,0xFF,0xD6,0xD7, 0xD8,0xD9,0xDA,0xDB,0xDC,0xFF,0xFF,0xDF, 0xE0,0xE1,0xE2,0xFF,0xE4,0xE5,0xE6,0xE7, 0xE8,0xE9,0xEA,0xEB,0xFF,0xED,0xEE,0xEF, 0xFF,0xF1,0xFF,0xF3,0xF4,0xFF,0xF6,0xF7, 0xF8,0xF9,0xFA,0xFB,0xFC,0xFF,0xFF,0xFF, /* Block 2, Array index 0x0302 */ 0xFF,0xFF,0xC3,0xE3,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xD0,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x8C,0x9C,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x9F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x83,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xD5,0xF5,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDD, 0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 3, Array index 0x0402 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x88,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x98,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 4, Array index 0x0502 */ 0xCC,0xEC,0xFF,0xDE,0xFF,0xFF,0xFF,0xFF, 0xFF,0xD2,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xF2,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 33, Array index 0x0602 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0x96,0x97,0xFF,0xFF,0xFF, 0x91,0x92,0x82,0xFF,0x93,0x94,0x84,0xFF, 0x86,0x87,0x95,0xFF,0xFF,0xFF,0x85,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x89,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x8B,0x9B,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFE,0x80,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* Block 34, Array index 0x0702 */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x99,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; #endif /* ICONV_FROM_UCS_CCS_WIN_1258 */ /* * win_1258 CCS description table. * ====================================================================== */ const iconv_ccs_t _iconv_ccs_win_1258 = { TABLE_VERSION_1, /* Table version */ ICONV_CCS_WIN_1258, /* CCS name */ TABLE_8BIT, /* Table bits */ 0, /* Not Used */ #if defined (ICONV_FROM_UCS_CCS_WIN_1258) (__uint16_t *)&from_ucs_speed_win_1258, /* UCS -> win_1258 table */ #else (__uint16_t *)NULL, #endif 0, /* Not Used */ #if defined (ICONV_TO_UCS_CCS_WIN_1258) (__uint16_t *)&to_ucs_speed_win_1258 /* win_1258 -> UCS table */ #else (__uint16_t *)NULL, #endif }; #endif /* ICONV_TO_UCS_CCS_WIN_1258) || ... */ picolibc-1.7.4/newlib/libc/iconv/ces/000077500000000000000000000000001414576234500174035ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/iconv/ces/cesbi.c000066400000000000000000000252221414576234500206370ustar00rootroot00000000000000/* * This file was automatically generated mkdeps.pl script. Don't edit. */ #include <_ansi.h> #include #include "../lib/ucsconv.h" #include "cesbi.h" /* * Each CES converter provides the list of supported encodings. */ #if defined (ICONV_TO_UCS_CES_EUC) \ || defined (ICONV_FROM_UCS_CES_EUC) static const char * iconv_ces_names_euc[] = { # if defined (_ICONV_FROM_ENCODING_EUC_JP) \ || defined (_ICONV_TO_ENCODING_EUC_JP) ICONV_ENCODING_EUC_JP, #endif # if defined (_ICONV_FROM_ENCODING_EUC_KR) \ || defined (_ICONV_TO_ENCODING_EUC_KR) ICONV_ENCODING_EUC_KR, #endif # if defined (_ICONV_FROM_ENCODING_EUC_TW) \ || defined (_ICONV_TO_ENCODING_EUC_TW) ICONV_ENCODING_EUC_TW, #endif NULL }; #endif #if defined (ICONV_TO_UCS_CES_TABLE) \ || defined (ICONV_FROM_UCS_CES_TABLE) static const char * iconv_ces_names_table[] = { # if defined (_ICONV_FROM_ENCODING_CP775) \ || defined (_ICONV_TO_ENCODING_CP775) ICONV_ENCODING_CP775, #endif # if defined (_ICONV_FROM_ENCODING_CP850) \ || defined (_ICONV_TO_ENCODING_CP850) ICONV_ENCODING_CP850, #endif # if defined (_ICONV_FROM_ENCODING_CP852) \ || defined (_ICONV_TO_ENCODING_CP852) ICONV_ENCODING_CP852, #endif # if defined (_ICONV_FROM_ENCODING_CP855) \ || defined (_ICONV_TO_ENCODING_CP855) ICONV_ENCODING_CP855, #endif # if defined (_ICONV_FROM_ENCODING_CP866) \ || defined (_ICONV_TO_ENCODING_CP866) ICONV_ENCODING_CP866, #endif # if defined (_ICONV_FROM_ENCODING_ISO_8859_1) \ || defined (_ICONV_TO_ENCODING_ISO_8859_1) ICONV_ENCODING_ISO_8859_1, #endif # if defined (_ICONV_FROM_ENCODING_ISO_8859_10) \ || defined (_ICONV_TO_ENCODING_ISO_8859_10) ICONV_ENCODING_ISO_8859_10, #endif # if defined (_ICONV_FROM_ENCODING_ISO_8859_11) \ || defined (_ICONV_TO_ENCODING_ISO_8859_11) ICONV_ENCODING_ISO_8859_11, #endif # if defined (_ICONV_FROM_ENCODING_ISO_8859_13) \ || defined (_ICONV_TO_ENCODING_ISO_8859_13) ICONV_ENCODING_ISO_8859_13, #endif # if defined (_ICONV_FROM_ENCODING_ISO_8859_14) \ || defined (_ICONV_TO_ENCODING_ISO_8859_14) ICONV_ENCODING_ISO_8859_14, #endif # if defined (_ICONV_FROM_ENCODING_ISO_8859_15) \ || defined (_ICONV_TO_ENCODING_ISO_8859_15) ICONV_ENCODING_ISO_8859_15, #endif # if defined (_ICONV_FROM_ENCODING_ISO_8859_2) \ || defined (_ICONV_TO_ENCODING_ISO_8859_2) ICONV_ENCODING_ISO_8859_2, #endif # if defined (_ICONV_FROM_ENCODING_ISO_8859_3) \ || defined (_ICONV_TO_ENCODING_ISO_8859_3) ICONV_ENCODING_ISO_8859_3, #endif # if defined (_ICONV_FROM_ENCODING_ISO_8859_4) \ || defined (_ICONV_TO_ENCODING_ISO_8859_4) ICONV_ENCODING_ISO_8859_4, #endif # if defined (_ICONV_FROM_ENCODING_ISO_8859_5) \ || defined (_ICONV_TO_ENCODING_ISO_8859_5) ICONV_ENCODING_ISO_8859_5, #endif # if defined (_ICONV_FROM_ENCODING_ISO_8859_6) \ || defined (_ICONV_TO_ENCODING_ISO_8859_6) ICONV_ENCODING_ISO_8859_6, #endif # if defined (_ICONV_FROM_ENCODING_ISO_8859_7) \ || defined (_ICONV_TO_ENCODING_ISO_8859_7) ICONV_ENCODING_ISO_8859_7, #endif # if defined (_ICONV_FROM_ENCODING_ISO_8859_8) \ || defined (_ICONV_TO_ENCODING_ISO_8859_8) ICONV_ENCODING_ISO_8859_8, #endif # if defined (_ICONV_FROM_ENCODING_ISO_8859_9) \ || defined (_ICONV_TO_ENCODING_ISO_8859_9) ICONV_ENCODING_ISO_8859_9, #endif # if defined (_ICONV_FROM_ENCODING_ISO_IR_111) \ || defined (_ICONV_TO_ENCODING_ISO_IR_111) ICONV_ENCODING_ISO_IR_111, #endif # if defined (_ICONV_FROM_ENCODING_KOI8_R) \ || defined (_ICONV_TO_ENCODING_KOI8_R) ICONV_ENCODING_KOI8_R, #endif # if defined (_ICONV_FROM_ENCODING_KOI8_RU) \ || defined (_ICONV_TO_ENCODING_KOI8_RU) ICONV_ENCODING_KOI8_RU, #endif # if defined (_ICONV_FROM_ENCODING_KOI8_U) \ || defined (_ICONV_TO_ENCODING_KOI8_U) ICONV_ENCODING_KOI8_U, #endif # if defined (_ICONV_FROM_ENCODING_KOI8_UNI) \ || defined (_ICONV_TO_ENCODING_KOI8_UNI) ICONV_ENCODING_KOI8_UNI, #endif # if defined (_ICONV_FROM_ENCODING_WIN_1250) \ || defined (_ICONV_TO_ENCODING_WIN_1250) ICONV_ENCODING_WIN_1250, #endif # if defined (_ICONV_FROM_ENCODING_WIN_1251) \ || defined (_ICONV_TO_ENCODING_WIN_1251) ICONV_ENCODING_WIN_1251, #endif # if defined (_ICONV_FROM_ENCODING_WIN_1252) \ || defined (_ICONV_TO_ENCODING_WIN_1252) ICONV_ENCODING_WIN_1252, #endif # if defined (_ICONV_FROM_ENCODING_WIN_1253) \ || defined (_ICONV_TO_ENCODING_WIN_1253) ICONV_ENCODING_WIN_1253, #endif # if defined (_ICONV_FROM_ENCODING_WIN_1254) \ || defined (_ICONV_TO_ENCODING_WIN_1254) ICONV_ENCODING_WIN_1254, #endif # if defined (_ICONV_FROM_ENCODING_WIN_1255) \ || defined (_ICONV_TO_ENCODING_WIN_1255) ICONV_ENCODING_WIN_1255, #endif # if defined (_ICONV_FROM_ENCODING_WIN_1256) \ || defined (_ICONV_TO_ENCODING_WIN_1256) ICONV_ENCODING_WIN_1256, #endif # if defined (_ICONV_FROM_ENCODING_WIN_1257) \ || defined (_ICONV_TO_ENCODING_WIN_1257) ICONV_ENCODING_WIN_1257, #endif # if defined (_ICONV_FROM_ENCODING_WIN_1258) \ || defined (_ICONV_TO_ENCODING_WIN_1258) ICONV_ENCODING_WIN_1258, #endif NULL }; #endif #if defined (ICONV_TO_UCS_CES_TABLE_PCS) \ || defined (ICONV_FROM_UCS_CES_TABLE_PCS) static const char * iconv_ces_names_table_pcs[] = { # if defined (_ICONV_FROM_ENCODING_BIG5) \ || defined (_ICONV_TO_ENCODING_BIG5) ICONV_ENCODING_BIG5, #endif NULL }; #endif #if defined (ICONV_TO_UCS_CES_UCS_2) \ || defined (ICONV_FROM_UCS_CES_UCS_2) static const char * iconv_ces_names_ucs_2[] = { # if defined (_ICONV_FROM_ENCODING_UCS_2) \ || defined (_ICONV_TO_ENCODING_UCS_2) ICONV_ENCODING_UCS_2, #endif # if defined (_ICONV_FROM_ENCODING_UCS_2BE) \ || defined (_ICONV_TO_ENCODING_UCS_2BE) ICONV_ENCODING_UCS_2BE, #endif # if defined (_ICONV_FROM_ENCODING_UCS_2LE) \ || defined (_ICONV_TO_ENCODING_UCS_2LE) ICONV_ENCODING_UCS_2LE, #endif NULL }; #endif #if defined (ICONV_TO_UCS_CES_UCS_2_INTERNAL) \ || defined (ICONV_FROM_UCS_CES_UCS_2_INTERNAL) static const char * iconv_ces_names_ucs_2_internal[] = { # if defined (_ICONV_FROM_ENCODING_UCS_2_INTERNAL) \ || defined (_ICONV_TO_ENCODING_UCS_2_INTERNAL) ICONV_ENCODING_UCS_2_INTERNAL, #endif NULL }; #endif #if defined (ICONV_TO_UCS_CES_UCS_4) \ || defined (ICONV_FROM_UCS_CES_UCS_4) static const char * iconv_ces_names_ucs_4[] = { # if defined (_ICONV_FROM_ENCODING_UCS_4) \ || defined (_ICONV_TO_ENCODING_UCS_4) ICONV_ENCODING_UCS_4, #endif # if defined (_ICONV_FROM_ENCODING_UCS_4BE) \ || defined (_ICONV_TO_ENCODING_UCS_4BE) ICONV_ENCODING_UCS_4BE, #endif # if defined (_ICONV_FROM_ENCODING_UCS_4LE) \ || defined (_ICONV_TO_ENCODING_UCS_4LE) ICONV_ENCODING_UCS_4LE, #endif NULL }; #endif #if defined (ICONV_TO_UCS_CES_UCS_4_INTERNAL) \ || defined (ICONV_FROM_UCS_CES_UCS_4_INTERNAL) static const char * iconv_ces_names_ucs_4_internal[] = { # if defined (_ICONV_FROM_ENCODING_UCS_4_INTERNAL) \ || defined (_ICONV_TO_ENCODING_UCS_4_INTERNAL) ICONV_ENCODING_UCS_4_INTERNAL, #endif NULL }; #endif #if defined (ICONV_TO_UCS_CES_US_ASCII) \ || defined (ICONV_FROM_UCS_CES_US_ASCII) static const char * iconv_ces_names_us_ascii[] = { # if defined (_ICONV_FROM_ENCODING_US_ASCII) \ || defined (_ICONV_TO_ENCODING_US_ASCII) ICONV_ENCODING_US_ASCII, #endif NULL }; #endif #if defined (ICONV_TO_UCS_CES_UTF_16) \ || defined (ICONV_FROM_UCS_CES_UTF_16) static const char * iconv_ces_names_utf_16[] = { # if defined (_ICONV_FROM_ENCODING_UTF_16) \ || defined (_ICONV_TO_ENCODING_UTF_16) ICONV_ENCODING_UTF_16, #endif # if defined (_ICONV_FROM_ENCODING_UTF_16BE) \ || defined (_ICONV_TO_ENCODING_UTF_16BE) ICONV_ENCODING_UTF_16BE, #endif # if defined (_ICONV_FROM_ENCODING_UTF_16LE) \ || defined (_ICONV_TO_ENCODING_UTF_16LE) ICONV_ENCODING_UTF_16LE, #endif NULL }; #endif #if defined (ICONV_TO_UCS_CES_UTF_8) \ || defined (ICONV_FROM_UCS_CES_UTF_8) static const char * iconv_ces_names_utf_8[] = { # if defined (_ICONV_FROM_ENCODING_UTF_8) \ || defined (_ICONV_TO_ENCODING_UTF_8) ICONV_ENCODING_UTF_8, #endif NULL }; #endif /* * The following structure contains the list of "to UCS" linked-in CES converters. */ const iconv_to_ucs_ces_t _iconv_to_ucs_ces[] = { #ifdef ICONV_TO_UCS_CES_EUC {(const char **)iconv_ces_names_euc, &_iconv_to_ucs_ces_handlers_euc}, #endif #ifdef ICONV_TO_UCS_CES_TABLE {(const char **)iconv_ces_names_table, &_iconv_to_ucs_ces_handlers_table}, #endif #ifdef ICONV_TO_UCS_CES_TABLE_PCS {(const char **)iconv_ces_names_table_pcs, &_iconv_to_ucs_ces_handlers_table_pcs}, #endif #ifdef ICONV_TO_UCS_CES_UCS_2 {(const char **)iconv_ces_names_ucs_2, &_iconv_to_ucs_ces_handlers_ucs_2}, #endif #ifdef ICONV_TO_UCS_CES_UCS_2_INTERNAL {(const char **)iconv_ces_names_ucs_2_internal, &_iconv_to_ucs_ces_handlers_ucs_2_internal}, #endif #ifdef ICONV_TO_UCS_CES_UCS_4 {(const char **)iconv_ces_names_ucs_4, &_iconv_to_ucs_ces_handlers_ucs_4}, #endif #ifdef ICONV_TO_UCS_CES_UCS_4_INTERNAL {(const char **)iconv_ces_names_ucs_4_internal, &_iconv_to_ucs_ces_handlers_ucs_4_internal}, #endif #ifdef ICONV_TO_UCS_CES_US_ASCII {(const char **)iconv_ces_names_us_ascii, &_iconv_to_ucs_ces_handlers_us_ascii}, #endif #ifdef ICONV_TO_UCS_CES_UTF_16 {(const char **)iconv_ces_names_utf_16, &_iconv_to_ucs_ces_handlers_utf_16}, #endif #ifdef ICONV_TO_UCS_CES_UTF_8 {(const char **)iconv_ces_names_utf_8, &_iconv_to_ucs_ces_handlers_utf_8}, #endif {(const char **)NULL, (iconv_to_ucs_ces_handlers_t *)NULL} }; /* * The following structure contains the list of "from UCS" linked-in CES converters. */ const iconv_from_ucs_ces_t _iconv_from_ucs_ces[] = { #ifdef ICONV_FROM_UCS_CES_EUC {(const char **)iconv_ces_names_euc, &_iconv_from_ucs_ces_handlers_euc}, #endif #ifdef ICONV_FROM_UCS_CES_TABLE {(const char **)iconv_ces_names_table, &_iconv_from_ucs_ces_handlers_table}, #endif #ifdef ICONV_FROM_UCS_CES_TABLE_PCS {(const char **)iconv_ces_names_table_pcs, &_iconv_from_ucs_ces_handlers_table_pcs}, #endif #ifdef ICONV_FROM_UCS_CES_UCS_2 {(const char **)iconv_ces_names_ucs_2, &_iconv_from_ucs_ces_handlers_ucs_2}, #endif #ifdef ICONV_FROM_UCS_CES_UCS_2_INTERNAL {(const char **)iconv_ces_names_ucs_2_internal, &_iconv_from_ucs_ces_handlers_ucs_2_internal}, #endif #ifdef ICONV_FROM_UCS_CES_UCS_4 {(const char **)iconv_ces_names_ucs_4, &_iconv_from_ucs_ces_handlers_ucs_4}, #endif #ifdef ICONV_FROM_UCS_CES_UCS_4_INTERNAL {(const char **)iconv_ces_names_ucs_4_internal, &_iconv_from_ucs_ces_handlers_ucs_4_internal}, #endif #ifdef ICONV_FROM_UCS_CES_US_ASCII {(const char **)iconv_ces_names_us_ascii, &_iconv_from_ucs_ces_handlers_us_ascii}, #endif #ifdef ICONV_FROM_UCS_CES_UTF_16 {(const char **)iconv_ces_names_utf_16, &_iconv_from_ucs_ces_handlers_utf_16}, #endif #ifdef ICONV_FROM_UCS_CES_UTF_8 {(const char **)iconv_ces_names_utf_8, &_iconv_from_ucs_ces_handlers_utf_8}, #endif {(const char **)NULL, (iconv_from_ucs_ces_handlers_t *)NULL} }; picolibc-1.7.4/newlib/libc/iconv/ces/cesbi.h000066400000000000000000000207441414576234500206500ustar00rootroot00000000000000/* * This file was automatically generated mkdeps.pl script. Don't edit. */ #ifndef __CESBI_H__ #define __CESBI_H__ #include #include <_ansi.h> #include "../lib/encnames.h" #include "../lib/ucsconv.h" /* * Enable CES converter if correspondent encoding is requested. * Defining ICONV_TO_UCS_CES_XXX macro or ICONV_FROM_UCS_CES_XXX * macro is needed to enable "XXX encoding -> UCS" or "UCS -> XXX encoding" * part of UCS-based CES converter. */ #if defined (_ICONV_FROM_ENCODING_EUC_JP) \ || defined (_ICONV_FROM_ENCODING_EUC_KR) \ || defined (_ICONV_FROM_ENCODING_EUC_TW) # define ICONV_TO_UCS_CES_EUC #endif #if defined (_ICONV_TO_ENCODING_EUC_JP) \ || defined (_ICONV_TO_ENCODING_EUC_KR) \ || defined (_ICONV_TO_ENCODING_EUC_TW) # define ICONV_FROM_UCS_CES_EUC #endif #if defined (_ICONV_FROM_ENCODING_CP775) \ || defined (_ICONV_FROM_ENCODING_CP850) \ || defined (_ICONV_FROM_ENCODING_CP852) \ || defined (_ICONV_FROM_ENCODING_CP855) \ || defined (_ICONV_FROM_ENCODING_CP866) \ || defined (_ICONV_FROM_ENCODING_ISO_8859_1) \ || defined (_ICONV_FROM_ENCODING_ISO_8859_10) \ || defined (_ICONV_FROM_ENCODING_ISO_8859_11) \ || defined (_ICONV_FROM_ENCODING_ISO_8859_13) \ || defined (_ICONV_FROM_ENCODING_ISO_8859_14) \ || defined (_ICONV_FROM_ENCODING_ISO_8859_15) \ || defined (_ICONV_FROM_ENCODING_ISO_8859_2) \ || defined (_ICONV_FROM_ENCODING_ISO_8859_3) \ || defined (_ICONV_FROM_ENCODING_ISO_8859_4) \ || defined (_ICONV_FROM_ENCODING_ISO_8859_5) \ || defined (_ICONV_FROM_ENCODING_ISO_8859_6) \ || defined (_ICONV_FROM_ENCODING_ISO_8859_7) \ || defined (_ICONV_FROM_ENCODING_ISO_8859_8) \ || defined (_ICONV_FROM_ENCODING_ISO_8859_9) \ || defined (_ICONV_FROM_ENCODING_ISO_IR_111) \ || defined (_ICONV_FROM_ENCODING_KOI8_R) \ || defined (_ICONV_FROM_ENCODING_KOI8_RU) \ || defined (_ICONV_FROM_ENCODING_KOI8_U) \ || defined (_ICONV_FROM_ENCODING_KOI8_UNI) \ || defined (_ICONV_FROM_ENCODING_WIN_1250) \ || defined (_ICONV_FROM_ENCODING_WIN_1251) \ || defined (_ICONV_FROM_ENCODING_WIN_1252) \ || defined (_ICONV_FROM_ENCODING_WIN_1253) \ || defined (_ICONV_FROM_ENCODING_WIN_1254) \ || defined (_ICONV_FROM_ENCODING_WIN_1255) \ || defined (_ICONV_FROM_ENCODING_WIN_1256) \ || defined (_ICONV_FROM_ENCODING_WIN_1257) \ || defined (_ICONV_FROM_ENCODING_WIN_1258) # define ICONV_TO_UCS_CES_TABLE #endif #if defined (_ICONV_TO_ENCODING_CP775) \ || defined (_ICONV_TO_ENCODING_CP850) \ || defined (_ICONV_TO_ENCODING_CP852) \ || defined (_ICONV_TO_ENCODING_CP855) \ || defined (_ICONV_TO_ENCODING_CP866) \ || defined (_ICONV_TO_ENCODING_ISO_8859_1) \ || defined (_ICONV_TO_ENCODING_ISO_8859_10) \ || defined (_ICONV_TO_ENCODING_ISO_8859_11) \ || defined (_ICONV_TO_ENCODING_ISO_8859_13) \ || defined (_ICONV_TO_ENCODING_ISO_8859_14) \ || defined (_ICONV_TO_ENCODING_ISO_8859_15) \ || defined (_ICONV_TO_ENCODING_ISO_8859_2) \ || defined (_ICONV_TO_ENCODING_ISO_8859_3) \ || defined (_ICONV_TO_ENCODING_ISO_8859_4) \ || defined (_ICONV_TO_ENCODING_ISO_8859_5) \ || defined (_ICONV_TO_ENCODING_ISO_8859_6) \ || defined (_ICONV_TO_ENCODING_ISO_8859_7) \ || defined (_ICONV_TO_ENCODING_ISO_8859_8) \ || defined (_ICONV_TO_ENCODING_ISO_8859_9) \ || defined (_ICONV_TO_ENCODING_ISO_IR_111) \ || defined (_ICONV_TO_ENCODING_KOI8_R) \ || defined (_ICONV_TO_ENCODING_KOI8_RU) \ || defined (_ICONV_TO_ENCODING_KOI8_U) \ || defined (_ICONV_TO_ENCODING_KOI8_UNI) \ || defined (_ICONV_TO_ENCODING_WIN_1250) \ || defined (_ICONV_TO_ENCODING_WIN_1251) \ || defined (_ICONV_TO_ENCODING_WIN_1252) \ || defined (_ICONV_TO_ENCODING_WIN_1253) \ || defined (_ICONV_TO_ENCODING_WIN_1254) \ || defined (_ICONV_TO_ENCODING_WIN_1255) \ || defined (_ICONV_TO_ENCODING_WIN_1256) \ || defined (_ICONV_TO_ENCODING_WIN_1257) \ || defined (_ICONV_TO_ENCODING_WIN_1258) # define ICONV_FROM_UCS_CES_TABLE #endif #if defined (_ICONV_FROM_ENCODING_BIG5) # define ICONV_TO_UCS_CES_TABLE_PCS #endif #if defined (_ICONV_TO_ENCODING_BIG5) # define ICONV_FROM_UCS_CES_TABLE_PCS #endif #if defined (_ICONV_FROM_ENCODING_UCS_2) \ || defined (_ICONV_FROM_ENCODING_UCS_2BE) \ || defined (_ICONV_FROM_ENCODING_UCS_2LE) # define ICONV_TO_UCS_CES_UCS_2 #endif #if defined (_ICONV_TO_ENCODING_UCS_2) \ || defined (_ICONV_TO_ENCODING_UCS_2BE) \ || defined (_ICONV_TO_ENCODING_UCS_2LE) # define ICONV_FROM_UCS_CES_UCS_2 #endif #if defined (_ICONV_FROM_ENCODING_UCS_2_INTERNAL) # define ICONV_TO_UCS_CES_UCS_2_INTERNAL #endif #if defined (_ICONV_TO_ENCODING_UCS_2_INTERNAL) # define ICONV_FROM_UCS_CES_UCS_2_INTERNAL #endif #if defined (_ICONV_FROM_ENCODING_UCS_4) \ || defined (_ICONV_FROM_ENCODING_UCS_4BE) \ || defined (_ICONV_FROM_ENCODING_UCS_4LE) # define ICONV_TO_UCS_CES_UCS_4 #endif #if defined (_ICONV_TO_ENCODING_UCS_4) \ || defined (_ICONV_TO_ENCODING_UCS_4BE) \ || defined (_ICONV_TO_ENCODING_UCS_4LE) # define ICONV_FROM_UCS_CES_UCS_4 #endif #if defined (_ICONV_FROM_ENCODING_UCS_4_INTERNAL) # define ICONV_TO_UCS_CES_UCS_4_INTERNAL #endif #if defined (_ICONV_TO_ENCODING_UCS_4_INTERNAL) # define ICONV_FROM_UCS_CES_UCS_4_INTERNAL #endif #if defined (_ICONV_FROM_ENCODING_US_ASCII) # define ICONV_TO_UCS_CES_US_ASCII #endif #if defined (_ICONV_TO_ENCODING_US_ASCII) # define ICONV_FROM_UCS_CES_US_ASCII #endif #if defined (_ICONV_FROM_ENCODING_UTF_16) \ || defined (_ICONV_FROM_ENCODING_UTF_16BE) \ || defined (_ICONV_FROM_ENCODING_UTF_16LE) # define ICONV_TO_UCS_CES_UTF_16 #endif #if defined (_ICONV_TO_ENCODING_UTF_16) \ || defined (_ICONV_TO_ENCODING_UTF_16BE) \ || defined (_ICONV_TO_ENCODING_UTF_16LE) # define ICONV_FROM_UCS_CES_UTF_16 #endif #if defined (_ICONV_FROM_ENCODING_UTF_8) # define ICONV_TO_UCS_CES_UTF_8 #endif #if defined (_ICONV_TO_ENCODING_UTF_8) # define ICONV_FROM_UCS_CES_UTF_8 #endif /* * Some encodings require another encodings to be enabled. * These dependencies are handled in cesdeps.h header file. */ #include "cesdeps.h" /* * NLS uses iconv's capabilities and require one of encodings * to be enabled for internal wchar_t representation. */ #include "../lib/iconvnls.h" /* * Forward declarations of CES converter handlers. * These handlers are actually defined in correspondent CES converter files. */ #ifdef ICONV_TO_UCS_CES_EUC extern const iconv_to_ucs_ces_handlers_t _iconv_to_ucs_ces_handlers_euc; #endif #ifdef ICONV_FROM_UCS_CES_EUC extern const iconv_from_ucs_ces_handlers_t _iconv_from_ucs_ces_handlers_euc; #endif #ifdef ICONV_TO_UCS_CES_TABLE extern const iconv_to_ucs_ces_handlers_t _iconv_to_ucs_ces_handlers_table; #endif #ifdef ICONV_FROM_UCS_CES_TABLE extern const iconv_from_ucs_ces_handlers_t _iconv_from_ucs_ces_handlers_table; #endif #ifdef ICONV_TO_UCS_CES_TABLE_PCS extern const iconv_to_ucs_ces_handlers_t _iconv_to_ucs_ces_handlers_table_pcs; #endif #ifdef ICONV_FROM_UCS_CES_TABLE_PCS extern const iconv_from_ucs_ces_handlers_t _iconv_from_ucs_ces_handlers_table_pcs; #endif #ifdef ICONV_TO_UCS_CES_UCS_2 extern const iconv_to_ucs_ces_handlers_t _iconv_to_ucs_ces_handlers_ucs_2; #endif #ifdef ICONV_FROM_UCS_CES_UCS_2 extern const iconv_from_ucs_ces_handlers_t _iconv_from_ucs_ces_handlers_ucs_2; #endif #ifdef ICONV_TO_UCS_CES_UCS_2_INTERNAL extern const iconv_to_ucs_ces_handlers_t _iconv_to_ucs_ces_handlers_ucs_2_internal; #endif #ifdef ICONV_FROM_UCS_CES_UCS_2_INTERNAL extern const iconv_from_ucs_ces_handlers_t _iconv_from_ucs_ces_handlers_ucs_2_internal; #endif #ifdef ICONV_TO_UCS_CES_UCS_4 extern const iconv_to_ucs_ces_handlers_t _iconv_to_ucs_ces_handlers_ucs_4; #endif #ifdef ICONV_FROM_UCS_CES_UCS_4 extern const iconv_from_ucs_ces_handlers_t _iconv_from_ucs_ces_handlers_ucs_4; #endif #ifdef ICONV_TO_UCS_CES_UCS_4_INTERNAL extern const iconv_to_ucs_ces_handlers_t _iconv_to_ucs_ces_handlers_ucs_4_internal; #endif #ifdef ICONV_FROM_UCS_CES_UCS_4_INTERNAL extern const iconv_from_ucs_ces_handlers_t _iconv_from_ucs_ces_handlers_ucs_4_internal; #endif #ifdef ICONV_TO_UCS_CES_US_ASCII extern const iconv_to_ucs_ces_handlers_t _iconv_to_ucs_ces_handlers_us_ascii; #endif #ifdef ICONV_FROM_UCS_CES_US_ASCII extern const iconv_from_ucs_ces_handlers_t _iconv_from_ucs_ces_handlers_us_ascii; #endif #ifdef ICONV_TO_UCS_CES_UTF_16 extern const iconv_to_ucs_ces_handlers_t _iconv_to_ucs_ces_handlers_utf_16; #endif #ifdef ICONV_FROM_UCS_CES_UTF_16 extern const iconv_from_ucs_ces_handlers_t _iconv_from_ucs_ces_handlers_utf_16; #endif #ifdef ICONV_TO_UCS_CES_UTF_8 extern const iconv_to_ucs_ces_handlers_t _iconv_to_ucs_ces_handlers_utf_8; #endif #ifdef ICONV_FROM_UCS_CES_UTF_8 extern const iconv_from_ucs_ces_handlers_t _iconv_from_ucs_ces_handlers_utf_8; #endif #endif /* !__CESBI_H__ */ picolibc-1.7.4/newlib/libc/iconv/ces/cesdeps.h000066400000000000000000000016141414576234500212040ustar00rootroot00000000000000/* * This file was automatically generated mkdeps.pl script. Don't edit. */ #ifndef __CESDEPS_H__ #define __CESDEPS_H__ /* * Some CES converters use another CES converters and the following * is such dependencies description. */ #ifdef ICONV_TO_UCS_CES_EUC # ifndef ICONV_TO_UCS_CES_TABLE # define ICONV_TO_UCS_CES_TABLE # endif # ifndef ICONV_TO_UCS_CES_US_ASCII # define ICONV_TO_UCS_CES_US_ASCII # endif #endif #ifdef ICONV_FROM_UCS_CES_EUC # ifndef ICONV_FROM_UCS_CES_TABLE # define ICONV_FROM_UCS_CES_TABLE # endif # ifndef ICONV_FROM_UCS_CES_US_ASCII # define ICONV_FROM_UCS_CES_US_ASCII # endif #endif #ifdef ICONV_TO_UCS_CES_TABLE_PCS # ifndef ICONV_TO_UCS_CES_TABLE # define ICONV_TO_UCS_CES_TABLE # endif #endif #ifdef ICONV_FROM_UCS_CES_TABLE_PCS # ifndef ICONV_FROM_UCS_CES_TABLE # define ICONV_FROM_UCS_CES_TABLE # endif #endif #endif /* !__CESDEPS_H__ */ picolibc-1.7.4/newlib/libc/iconv/ces/euc.c000066400000000000000000000310141414576234500203220ustar00rootroot00000000000000/* * Copyright (c) 2003-2004, Artem B. Bityuckiy * Copyright (c) 1999,2000, Konstantin Chuguev. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "cesbi.h" #if defined (ICONV_TO_UCS_CES_EUC) \ || defined (ICONV_FROM_UCS_CES_EUC) #include <_ansi.h> #include #include #include #include #include #include "../lib/local.h" #include "../lib/ucsconv.h" #include "../lib/encnames.h" #include "../ccs/ccsnames.h" #define TYPE_EUC_JP 0 #define TYPE_EUC_KR 1 #define TYPE_EUC_TW 2 #define MAX_CS_NUM 3 /* CS description structure */ typedef struct { char *csname; char *prefix; int bytes; int prefixbytes; int touchmsb; /* If 1, msb will be set by euc converter */ } euc_cs_desc_t; typedef struct { int type; int mb_cur_max; euc_cs_desc_t *desc; void *data[MAX_CS_NUM]; } euc_data_t; #if defined (_ICONV_TO_ENCODING_EUC_JP) \ || defined (_ICONV_FROM_ENCODING_EUC_JP) \ || defined (_ICONV_ENABLE_EXTERNAL_CCS) static euc_cs_desc_t euc_jp_cs_desc[] = { {ICONV_CCS_JIS_X0208_1990, "", 2, 0, 1}, {ICONV_CCS_JIS_X0201_1976, "\x8e", 1, 1, 0}, {ICONV_CCS_JIS_X0212_1990, "\x8f", 2, 1, 1}, {0} }; #endif #if defined (_ICONV_TO_ENCODING_EUC_TW) \ || defined (_ICONV_FROM_ENCODING_EUC_TW) \ || defined (_ICONV_ENABLE_EXTERNAL_CCS) static euc_cs_desc_t euc_tw_cs_desc [] = { {ICONV_CCS_CNS11643_PLANE1, "", 2, 0, 1}, {ICONV_CCS_CNS11643_PLANE2, "\x8e\xa2", 2, 2, 1}, {ICONV_CCS_CNS11643_PLANE14, "\x8e\xae", 2, 2, 1}, {0} }; #endif #if defined (_ICONV_TO_ENCODING_EUC_KR) \ || defined (_ICONV_FROM_ENCODING_EUC_KR) \ || defined (_ICONV_ENABLE_EXTERNAL_CCS) static euc_cs_desc_t euc_kr_cs_desc [] = { {ICONV_CCS_KSX1001, "", 2, 0, 1}, {0} }; #endif #if defined (ICONV_FROM_UCS_CES_EUC) static void * euc_from_ucs_init ( const char *encoding) { int i; euc_data_t *data; if ((data = (euc_data_t *)calloc (1, sizeof (euc_data_t))) == NULL) return 0; #if defined (_ICONV_TO_ENCODING_EUC_JP) \ || defined (_ICONV_ENABLE_EXTERNAL_CCS) if (strcmp (encoding, ICONV_ENCODING_EUC_JP) == 0) { data->type = TYPE_EUC_JP; data->mb_cur_max = 3; data->desc = &euc_jp_cs_desc[0]; goto ok; } #endif #if defined (_ICONV_TO_ENCODING_EUC_KR) \ || defined (_ICONV_ENABLE_EXTERNAL_CCS) if (strcmp (encoding, ICONV_ENCODING_EUC_KR) == 0) { data->type = TYPE_EUC_KR; data->mb_cur_max = 2; data->desc = &euc_kr_cs_desc[0]; goto ok; } #endif #if defined (_ICONV_TO_ENCODING_EUC_TW) \ || defined (_ICONV_ENABLE_EXTERNAL_CCS) if (strcmp (encoding, ICONV_ENCODING_EUC_TW) == 0) { data->type = TYPE_EUC_TW; data->mb_cur_max = 4; data->desc = &euc_tw_cs_desc[0]; goto ok; } #endif goto error1; ok: for (i = 0; data->desc[i].csname != NULL; i++) { data->data[i] = _iconv_from_ucs_ces_handlers_table.init ( data->desc[i].csname); if (data->data[i] == NULL) goto error; } return data; error: _iconv_from_ucs_ces_handlers_table.close (data); return NULL; error1: free ((void *)data); return NULL; } static size_t euc_from_ucs_close ( void *data) { int i; size_t res = 0; for (i = 0; i < MAX_CS_NUM; i++) { if (((euc_data_t *)data)->data[i] != NULL) res |= _iconv_from_ucs_ces_handlers_table.close ( ((euc_data_t *)data)->data[i]); } free(data); return res; } static size_t euc_convert_from_ucs (void *data, register ucs4_t in, unsigned char **outbuf, size_t *outbytesleft) { int i; int j; int res; unsigned char *outbuf1; size_t outbytesleft1; euc_data_t *d = (euc_data_t *)data; if (in < 0x80) /* CS0 ASCII */ return _iconv_from_ucs_ces_handlers_us_ascii.convert_from_ucs ( NULL, in, outbuf, outbytesleft); /* Try other CS */ for (i = 0; d->desc[i].csname != NULL; i++) { if (((int)*outbytesleft - d->desc[i].prefixbytes - d->desc[i].bytes) < 0) { unsigned char buf[ICONV_MB_LEN_MAX]; outbytesleft1 = ICONV_MB_LEN_MAX; outbuf1 = &buf[0]; /* See wether this is right sequence */ res = (int)_iconv_from_ucs_ces_handlers_table.convert_from_ucs ( d->data[i], in, &outbuf1, &outbytesleft1); if (res > 0) return (size_t)ICONV_CES_NOSPACE; continue; } outbuf1 = *outbuf + d->desc[i].prefixbytes; outbytesleft1 = *outbytesleft - d->desc[i].prefixbytes; res = (int)_iconv_from_ucs_ces_handlers_table.convert_from_ucs ( d->data[i], in, &outbuf1, &outbytesleft1); if (res == d->desc[i].bytes) { for (j = 0; j < d->desc[i].prefixbytes; j++) (*outbuf)[j] = d->desc[i].prefix[j]; if (d->desc[i].touchmsb) for (j = 0; j < d->desc[i].bytes; j++) { if ((*outbuf)[j + d->desc[i].prefixbytes] & 0x80) return (size_t)ICONV_CES_INVALID_CHARACTER; (*outbuf)[j + d->desc[i].prefixbytes] |= 0x80; } *outbuf = outbuf1; *outbytesleft = outbytesleft1; return (size_t)(res + d->desc[i].bytes); } } return (size_t)ICONV_CES_INVALID_CHARACTER; } #endif /* ICONV_FROM_UCS_CES_EUC */ #if defined (ICONV_TO_UCS_CES_EUC) static void * euc_to_ucs_init ( const char *encoding) { int i; euc_data_t *data; if ((data = (euc_data_t *)calloc (1, sizeof (euc_data_t))) == NULL) return 0; #if defined (_ICONV_TO_ENCODING_EUC_JP) \ || defined (_ICONV_ENABLE_EXTERNAL_CCS) if (strcmp (encoding, ICONV_ENCODING_EUC_JP) == 0) { data->type = TYPE_EUC_JP; data->mb_cur_max = 3; data->desc = &euc_jp_cs_desc[0]; goto ok; } #endif #if defined (_ICONV_TO_ENCODING_EUC_KR) \ || defined (_ICONV_ENABLE_EXTERNAL_CCS) if (strcmp (encoding, ICONV_ENCODING_EUC_KR) == 0) { data->type = TYPE_EUC_KR; data->mb_cur_max = 2; data->desc = &euc_kr_cs_desc[0]; goto ok; } #endif #if defined (_ICONV_TO_ENCODING_EUC_TW) \ || defined (_ICONV_ENABLE_EXTERNAL_CCS) if (strcmp (encoding, ICONV_ENCODING_EUC_TW) == 0) { data->type = TYPE_EUC_TW; data->mb_cur_max = 4; data->desc = &euc_tw_cs_desc[0]; goto ok; } #endif goto error1; ok: for (i = 0; data->desc[i].csname != NULL; i++) { data->data[i] = _iconv_to_ucs_ces_handlers_table.init ( data->desc[i].csname); if (data->data[i] == NULL) goto error; } return data; error: _iconv_to_ucs_ces_handlers_table.close (data); return NULL; error1: free ((void *)data); return NULL; } static size_t euc_to_ucs_close ( void *data) { int i; size_t res = 0; for (i = 0; i < MAX_CS_NUM; i++) { if (((euc_data_t *)data)->data[i] != NULL) res |= _iconv_to_ucs_ces_handlers_table.close ( ((euc_data_t *)data)->data[i]); } free(data); return res; } static ucs4_t euc_convert_to_ucs (void *data, const unsigned char **inbuf, size_t *inbytesleft) { int i; int j; ucs4_t res; unsigned char buf[ICONV_MB_LEN_MAX]; size_t inbytesleft1; euc_data_t *d = (euc_data_t *)data; unsigned char *inbuf1 = &buf[0]; if (**inbuf < 0x80) /* CS0 is always ASCII */ return _iconv_to_ucs_ces_handlers_us_ascii.convert_to_ucs ( NULL, inbuf, inbytesleft); for (i = 1; d->desc[i].csname != NULL; i++) { if (memcmp((const void *)(*inbuf), (const void *)d->desc[i].prefix, d->desc[i].prefixbytes) == 0) { if (((int)*inbytesleft - d->desc[i].prefixbytes - d->desc[i].bytes) < 0) return (ucs4_t)ICONV_CES_BAD_SEQUENCE; if (d->desc[i].touchmsb) for (j = 0; j < d->desc[i].bytes; j++) { if (!((*inbuf)[j + d->desc[i].prefixbytes] & 0x80)) return (ucs4_t)ICONV_CES_INVALID_CHARACTER; inbuf1[j] = (*inbuf)[j + d->desc[i].prefixbytes] & 0x7F; } else for (j = 0; j < d->desc[i].bytes; j++) inbuf1[j] = (*inbuf)[j + d->desc[i].prefixbytes]; inbytesleft1 = d->desc[i].bytes; res = _iconv_to_ucs_ces_handlers_table.convert_to_ucs ( d->data[i], (const unsigned char **)&inbuf1, &inbytesleft1); if (((__int32_t)res) > 0) { *inbuf += d->desc[i].bytes + d->desc[i].prefixbytes; *inbytesleft -= d->desc[i].bytes + d->desc[i].prefixbytes; } return res; } } /* Process CS1 */ if (((int)(*inbytesleft - d->desc[0].prefixbytes - d->desc[0].bytes)) < 0) return (ucs4_t)ICONV_CES_BAD_SEQUENCE; if (d->desc[0].touchmsb) for (j = 0; j < d->desc[0].bytes; j++) { if (!((*inbuf)[j + d->desc[0].prefixbytes] & 0x80)) return (ucs4_t)ICONV_CES_INVALID_CHARACTER; inbuf1[j] = (*inbuf)[j] & 0x7F; } else for (j = 0; j < d->desc[0].bytes; j++) inbuf1[j] = (*inbuf)[j]; inbytesleft1 = d->desc[0].bytes; res = _iconv_to_ucs_ces_handlers_table.convert_to_ucs ( d->data[0], (const unsigned char **)&inbuf1, &inbytesleft1); if (((__int32_t)res) > 0) { *inbuf += d->desc[0].bytes; *inbytesleft -= d->desc[0].bytes; } return res; } #endif /* ICONV_TO_UCS_CES_EUC */ static int euc_get_mb_cur_max (void *data) { return ((euc_data_t *)data)->mb_cur_max; } #if defined (ICONV_FROM_UCS_CES_EUC) const iconv_from_ucs_ces_handlers_t _iconv_from_ucs_ces_handlers_euc = { euc_from_ucs_init, euc_from_ucs_close, euc_get_mb_cur_max, NULL, NULL, NULL, euc_convert_from_ucs }; #endif #if defined (ICONV_TO_UCS_CES_EUC) const iconv_to_ucs_ces_handlers_t _iconv_to_ucs_ces_handlers_euc = { euc_to_ucs_init, euc_to_ucs_close, euc_get_mb_cur_max, NULL, NULL, NULL, euc_convert_to_ucs }; #endif #endif /* ICONV_TO_UCS_CES_EUC || ICONV_FROM_UCS_CES_EUC */ picolibc-1.7.4/newlib/libc/iconv/ces/meson.build000066400000000000000000000042751414576234500215550ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # srcs_iconv_ces = [ 'cesbi.c', 'euc.c', 'table.c', 'table-pcs.c', 'ucs-2.c', 'ucs-2-internal.c', 'ucs-4.c', 'ucs-4-internal.c', 'us-ascii.c', 'utf-16.c', 'utf-8.c', ] hdrs_iconv_ces = [ 'cesbi.h', 'cesdeps.h', ] srcs_iconv_ces_use = [] foreach file : srcs_iconv_ces s_file = fs.replace_suffix(file, '.S') if file in srcs_machine message('libc/iconv/ces/' + file + ': machine overrides generic') elif s_file in srcs_machine message('libc/iconv/ces/' + s_file + ': machine overrides generic') else srcs_iconv_ces_use += file endif endforeach src_iconv_ces = files(srcs_iconv_ces_use) picolibc-1.7.4/newlib/libc/iconv/ces/mkdeps.pl000077500000000000000000000712111414576234500212300ustar00rootroot00000000000000#!/usr/bin/perl -w # # Copyright (c) 2003-2004, Artem B. Bityuckiy, SoftMine Corporation. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # use integer; use Getopt::Std; use strict; sub err($); sub process_section_encodings($); sub process_section_cesdeps($); sub next_entry($$$); sub generate_cesbi_h($$); sub generate_encnames_h(@); sub generate_aliasesbi_c($); sub generate_encoding_aliases_c($); sub generate_cesdeps_h($); sub generate_ccsbi_h($); sub generate_cesbi_c($); sub generate_ccsnames_h($); # ============================================================================== # # GLOBAL VARIABLES # # ============================================================================== my $comment_automatic = "/* * This file was automatically generated mkdeps.pl script. Don't edit. */"; my $macro_from_enc = '_ICONV_FROM_ENCODING_'; my $macro_to_enc = '_ICONV_TO_ENCODING_'; my $macro_from_ucs_ces = 'ICONV_FROM_UCS_CES_'; my $macro_to_ucs_ces = 'ICONV_TO_UCS_CES_'; my $macro_from_ucs_ccs = 'ICONV_FROM_UCS_CCS_'; my $macro_to_ucs_ccs = 'ICONV_TO_UCS_CCS_'; my $macro_enc_name = 'ICONV_ENCODING_'; my $macro_ccs_name = 'ICONV_CCS_'; my $var_from_ucs_handlers = '_iconv_from_ucs_ces_handlers_'; my $var_to_ucs_handlers = '_iconv_to_ucs_ces_handlers_'; my $var_ccs = '_iconv_ccs_'; my $var_aliases = '_iconv_aliases'; my $var_ces_names = 'iconv_ces_names_'; # ============================================================================== # # PARSE COMMAND-LINE OPTIONS. # # ============================================================================== my %options; # SUPPORTED OPTIONS. my $help_opt = 'h'; my $infile_opt = 'i'; my $verbose_opt = 'v'; # Default input configuration file name my $default_infile = '../lib/encoding.deps'; # Real input configuration file name my $infile; # Verbose flag (be verbose if not zero) my $verbose; { getopts ("${help_opt}${verbose_opt}${infile_opt}:", \%options) or err "getopts() failed: $!."; if ($options{$help_opt}) { # Output help message and exit. print "Usage: $0 [-$infile_opt depfile] [-$help_opt]\n"; print "\t-$infile_opt - input file with configuration ($default_infile "; print "file will be used by default)\n"; print "\t-$help_opt - this help message\n"; exit 0; } # Input file name. $infile = $options{$infile_opt} ? $options{$infile_opt} : $default_infile; $verbose = $options{$verbose_opt} ? 1 : 0; print "Debug: -$verbose_opt option found.\n" if $verbose; # ============================================================================== # # Find and fetch sections from input file # # ============================================================================== # Opening input file print "Debug: open \"$infile\" input file.\n" if $verbose; open (INFILE, '<', $infile) or err "Can't open \"$infile\" file for reading.\n" . "System error message: $!.\n"; # Configuration file markers my $marker_section = 'SECTION'; my $marker_section_end = 'SECTION END'; # File sections. Hash values are references to arrays with section contents my %sections; # Extract sections from file for (my $ln = 1; my $l = ; $ln += 1) { # Skip comments and empty lines next if $l =~ m/^#.*$/ or $l =~ m/^\s*$/; # Remove last CR symbol $l =~ s/^(.*)\n$/$1/, $l =~ s/^(.*)\r$/$1/; # Generate error if line isn't section begin marker err "(input file line $ln) Unexpected marker: \"$l\". ${marker_section} " . "is expected." if $l !~ m/^$marker_section(\s+(\S*)\s*)?$/; # Generate error if there is no section name err "(input file line $ln) Section name isn't found" if !$1 or !$2; # Generate error if this is section end marker err "(input file line $ln) Unexpected \"${marker_section_end}\" marker " . "in input file." if $2 eq $marker_section_end; my $sect_name = $2; # Extract section content for (; $l = ; $ln += 1) { # Skip comments and empty lines next if $l =~ m/^#.*$/ or $l =~ m/^$/; # Remove last CR symbol $l =~ s/^(.*)\n$/$1/, $l =~ s/^(.*)\r$/$1/; last if $l =~ m/^$marker_section_end$/; push @{$sections{$sect_name}}, $l; } # Generate error if section wasn't ended err "(input file line $ln) \"No $marker_section_end\" marker found" if $l !~ m/^$marker_section_end$/; } close INFILE or err "Error while closing input file."; # ============================================================================= # # Now sections are fetched. Each section is processed by separate function. # There are only three supported sections now: ENCODINGS, CES_DEPENDENCIES # and ENCODING_CCS_DEPENDENCIES. # # ============================================================================= my $section_encodings = 'ENCODINGS'; my $section_cesdeps = 'CES_DEPENDENCIES'; my $section; err "$section_encodings not found." if !defined $sections{$section_encodings}; err "$section_cesdeps not found." if !defined $sections{$section_cesdeps}; # Process sections print "Debug: process $section_encodings section.\n" if $verbose; process_section_encodings ($sections{$section_encodings}); delete $sections{$section_encodings}; print "Debug: process $section_cesdeps section.\n" if $verbose; process_section_cesdeps ($sections{$section_cesdeps}); delete $sections{$section_cesdeps}; print STDERR "Warning: section \"$_\" was ignored!\n" foreach (keys %sections); exit 1; } # ============================================================================= # # Print error message and exit. # # Parameter 1: error message. # # ============================================================================= sub err($) { print STDERR "Error while running script.\n$_[0]\n"; exit 0; } # ============================================================================= # # Process ENCODINGS section. # # Parameter 1 (input): array reference with section content; # # ============================================================================= sub process_section_encodings($) { my $sect = $_[0]; my $lineidx = 0; my @entry; my $marker_encoding = 'ENCODING'; my $marker_ces = 'CES'; my $marker_ccs = 'CCS'; my $marker_aliases = 'ALIASES'; # Keys: CES names. Values: array reference with encodings list. my %cesenc; # Keys: encodings. Values: CES converter names. my %encces; # Keys: CCS tables names. Values: array reference with encodings. my %ccsenc; # Keys: encodings. Values: aliases list. my %encalias; while (next_entry ($sect, \@entry, \$lineidx)) { my $encoding; my $ces; my $ccs; my $aliases; foreach my $l (@entry) { if ($l =~ m/^($marker_encoding):\s*(\S*)\s*$/) { err "(process_section_encodings()) More than one $marker_encoding " . "records found ($l)" if defined $encoding; $encoding = $2; } elsif ($l =~ m/^($marker_ces):\s*(\S*)\s*$/) { err "(process_section_encodings()) More than one $marker_ces " . "records found ($l)" if defined $ces; $ces = $2; } elsif ($l =~ m/^($marker_aliases):\s*(.*)\s*$/) { err "(process_section_encodings()) More than one " . "$marker_aliases records found ($l)" if defined $aliases; $aliases = $2; } elsif ($l =~ m/^($marker_ccs):\s*(.*)\s*$/) { err "(process_section_encodings()) More than one " . "$marker_ccs records found ($l)" if defined $ccs; $ccs = $2; } else { err "(process_section_encodings()) Can't parse \"$l\""; } } err "(process_section_encodings()) $encoding is defined twice" if (defined $encces{$encoding}); err "(process_section_encodings()) ENCODING: field isn't found" if not defined $encoding; if (defined $ces) { push @{$cesenc{$ces}}, $encoding; $encces{$encoding} = $ces; } if (defined $ccs) { my @ccs = split / /, $ccs; push @{$ccsenc{$_}}, $encoding foreach (@ccs); } $encalias{$encoding} = $aliases; } # Generate cesbi.h header file generate_cesbi_h (\%cesenc, \%encces); # Generate encnames.h header file generate_encnames_h (keys %encces); # Generate aliasesbi.c file generate_aliasesbi_c (\%encalias); # Generate encoding.aliases file generate_encoding_aliases (\%encalias); # Generate ccsbi.h header file generate_ccsbi_h (\%ccsenc); # Generate cesbi.c file generate_cesbi_c (\%cesenc); # Generate ccsbi.c file my @ccs = keys %ccsenc; generate_ccsbi_c (\@ccs); # Generate ccsnames.h header file generate_ccsnames_h (\%ccsenc); } # ============================================================================== # # Process CES_DEPENDENCIES section. # # Parameter 1: array reference with section content. # # ============================================================================== sub process_section_cesdeps($) { my $sect = $_[0]; my $lineidx = 0; my @entry; my $marker_ces = 'CES'; my $marker_used_ces = 'USED_CES'; my %cesdeps; while (next_entry ($sect, \@entry, \$lineidx)) { my $ces; my $used_ces; foreach my $l (@entry) { if ($l =~ m/^($marker_ces):\s*(\S*)\s*$/) { err "(process_section_cesdeps()) More than one $marker_ces " . "records found ($l)" if $ces; $ces = $2; } elsif ($l =~ m/^($marker_used_ces):\s*(.*)\s*$/) { err "(process_section_cesdeps()) More than one $marker_used_ces " . "records found ($l)" if $used_ces; $used_ces = $2; } else { err "(process_section_cesdeps()) Can't parse \"$l\""; } } err "(process_section_esdeps()) $ces dependecties are defined twice" if (defined $cesdeps{$ces}); # Split string my @used_ces = split / /, $used_ces; $cesdeps{$ces} = \@used_ces; } # Generate cesdeps.h header file generate_cesdeps_h (\%cesdeps); } # ============================================================================== # # Extract next entry. # # Parameter 1 (input): array reference with entries; # Parameter 2 (output): array reference with entry content; # Parameter 3 (input/output): scalar reference with line index to process. # # Returns 1 is entry was found, 0 if thee is no more entries; # # ============================================================================== sub next_entry($$$) { my $entries = $_[0]; my $entry = $_[1]; my $idx = $_[2]; my $marker_entry = 'ENTRY'; my $marker_entry_end = 'ENTRY END'; my $entry_flag = 0; return 0 if not defined ${$entries}[${$idx}]; undef @{$entry}; for (; my $l = ${$entries}[${$idx}++];) { # Skip comments and empty lines next if $l =~ m/^#.*$/ or $l =~ m/^\s*$/; if ($l =~ m/^$marker_entry$/) { err "(next_entry()) $marker_entry marker appears twice" if ($entry_flag == 1); $entry_flag = 1; $l = ${$entries}[${$idx}++] } else { # Generate error if line isn't entry begin marker err "(next_entry()) Unexpected marker: \"$l\". ${marker_entry} " . "is expected." if ($entry_flag == 0) } last if $l =~ m/^$marker_entry_end$/; push @{$entry}, $l; } return 1; } # ============================================================================== # # Generate cesbi.h file. # # Parameter 1 (input): hash reference with keys = CES Converters names and # values = array references with list of supported encodings. # Parameter 2 (input): hash reference with keys = encodings names and # values = CES converter names. # # ============================================================================== sub generate_cesbi_h($$) { my %cesenc = %{$_[0]}; my %encces = %{$_[1]}; my @ces = sort keys %cesenc; print "Debug: create \"cesbi.h\" file.\n" if $verbose; open (CESBI_H, '>', "cesbi.h") or err "Can't create \"cesbi.h\" file for writing.\nSystem error message: $!.\n"; print CESBI_H "$comment_automatic\n\n"; print CESBI_H "#ifndef __CESBI_H__\n"; print CESBI_H "#define __CESBI_H__\n\n"; print CESBI_H "#include \n"; print CESBI_H "#include <_ansi.h>\n"; print CESBI_H "#include \"../lib/encnames.h\"\n"; print CESBI_H "#include \"../lib/ucsconv.h\"\n\n"; print CESBI_H "/*\n"; print CESBI_H " * Enable CES converter if correspondent encoding is requested.\n"; print CESBI_H " * Defining ${macro_to_ucs_ces}XXX macro or ${macro_from_ucs_ces}XXX\n"; print CESBI_H " * macro is needed to enable \"XXX encoding -> UCS\" or \"UCS -> XXX encoding\"\n"; print CESBI_H " * part of UCS-based CES converter.\n"; print CESBI_H " */\n"; foreach my $ces (@ces) { my @encs = sort @{$cesenc{$ces}}; foreach my $encoding (@encs) { print CESBI_H $encoding eq $encs[0] ? "#if " : " || "; print CESBI_H "defined ($macro_from_enc\U$encoding)"; print CESBI_H " \\" if $encoding ne $encs[$#encs]; print CESBI_H "\n"; } print CESBI_H "# define $macro_to_ucs_ces\U$ces\n"; print CESBI_H "#endif\n"; foreach my $encoding (@encs) { print CESBI_H $encoding eq $encs[0] ? "#if " : " || "; print CESBI_H "defined ($macro_to_enc\U$encoding)"; print CESBI_H " \\" if $encoding ne $encs[$#encs]; print CESBI_H "\n"; } print CESBI_H "# define $macro_from_ucs_ces\U$ces\n"; print CESBI_H "#endif\n\n"; } print CESBI_H "/*\n"; print CESBI_H " * Some encodings require another encodings to be enabled.\n"; print CESBI_H " * These dependencies are handled in cesdeps.h header file.\n"; print CESBI_H " */\n"; print CESBI_H "#include \"cesdeps.h\"\n\n"; print CESBI_H "/*\n"; print CESBI_H " * NLS uses iconv's capabilities and require one of encodings\n"; print CESBI_H " * to be enabled for internal wchar_t representation.\n"; print CESBI_H " */\n"; print CESBI_H "#include \"../lib/iconvnls.h\"\n\n"; print CESBI_H "/*\n"; print CESBI_H " * Forward declarations of CES converter handlers.\n"; print CESBI_H " * These handlers are actually defined in correspondent CES converter files.\n"; print CESBI_H " */\n"; foreach my $ces (@ces) { print CESBI_H "#ifdef $macro_to_ucs_ces\U$ces\n"; print CESBI_H "extern const iconv_to_ucs_ces_handlers_t\n"; print CESBI_H "$var_to_ucs_handlers$ces;\n"; print CESBI_H "#endif\n"; print CESBI_H "#ifdef $macro_from_ucs_ces\U$ces\n"; print CESBI_H "extern const iconv_from_ucs_ces_handlers_t\n"; print CESBI_H "$var_from_ucs_handlers$ces;\n"; print CESBI_H "#endif\n\n"; } print CESBI_H "#endif /* !__CESBI_H__ */\n\n"; close CESBI_H or err "Error while closing cesbi.h file."; } # ============================================================================== # # Generate encnames.h header file. # # Parameters: array of supported encodings. # # ============================================================================== sub generate_encnames_h(@) { print "Debug: create \"../lib/encnames.h\" file.\n" if $verbose; open (ENCNAMES_H, '>', "../lib/encnames.h") or err "Can't create \"../lib/encnames.h\" file for writing.\nSystem error message: $!.\n"; print ENCNAMES_H "$comment_automatic\n\n"; print ENCNAMES_H "#ifndef __ENCNAMES_H__\n"; print ENCNAMES_H "#define __ENCNAMES_H__\n\n"; print ENCNAMES_H "/*\n"; print ENCNAMES_H " * Encodings name macros.\n"; print ENCNAMES_H " */\n"; foreach my $enc (sort @_) { print ENCNAMES_H "#define $macro_enc_name\U$enc\E \"$enc\"\n"; } print ENCNAMES_H "\n#endif /* !__ENCNAMES_H__ */\n\n"; close ENCNAMES_H or err "Error while closing ../lib/encnames.h file."; } # ============================================================================== # # Generate aliasesbi.c C source file. # # Parameters: hash reference with keys = encodings and values = aliases string. # # ============================================================================== sub generate_aliasesbi_c($) { print "Debug: create \"../lib/aliasesbi.c\" file.\n" if $verbose; open (ALIASESBI_C, '>', "../lib/aliasesbi.c") or err "Can't create \"../lib/aliasesbi.c\" file for writing.\nSystem error message: $!.\n"; print ALIASESBI_C "$comment_automatic\n\n"; print ALIASESBI_C "#include <_ansi.h>\n"; print ALIASESBI_C "#include \"encnames.h\"\n\n"; print ALIASESBI_C "const char\n"; print ALIASESBI_C "$var_aliases[] =\n"; print ALIASESBI_C "{\n"; foreach my $enc (sort keys %{$_[0]}) { print ALIASESBI_C "#if defined ($macro_from_enc\U$enc) \\\n"; print ALIASESBI_C " || defined ($macro_to_enc\U$enc)\n"; print ALIASESBI_C " $macro_enc_name\U$enc\E"; print ALIASESBI_C " \" ${$_[0]}{$enc}\\n\"" if defined ${$_[0]}{$enc}; print ALIASESBI_C "\n"; print ALIASESBI_C "#endif\n"; } print ALIASESBI_C " \"\"\n"; print ALIASESBI_C "};\n\n"; close ALIASESBI_C or err "Error while closing ../lib/aliasesbi.c file."; } # ============================================================================== # # Generate encoding.aliases file. # # Parameter 1: hash reference with keys = encodings and values = aliases string. # # ============================================================================== sub generate_encoding_aliases($) { print "Debug: create \"../encoding.aliases\" file.\n" if $verbose; open (ALIASES, '>', "../encoding.aliases") or err "Can't create \"../encoding.aliases\" file for writing.\nSystem error message: $!.\n"; print ALIASES "#\n# This file was automatically generated. Don't edit.\n#\n\n"; foreach my $enc (sort keys %{$_[0]}) { print ALIASES "$enc"; print ALIASES " ${$_[0]}{$enc}" if defined ${$_[0]}{$enc}; print ALIASES "\n"; } print ALIASES "\n"; close ALIASES or err "Error while closing ./encoding.aliases file."; } # ============================================================================== # # Generate cesdeps.h header file. # # Parameter 1: hash reference with keys = CES converters and values = references # to arrays with list of CES converters which are needed by that CES converter # (defined by key). # # ============================================================================== sub generate_cesdeps_h($) { my %cesdeps = %{$_[0]}; print "Debug: create \"cesdeps.h\" file.\n" if $verbose; open (CESDEPS_H, '>', "cesdeps.h") or err "Can't create \"cesdeps.h\" file for writing.\nSystem error message: $!.\n"; print CESDEPS_H "$comment_automatic\n\n"; print CESDEPS_H "#ifndef __CESDEPS_H__\n"; print CESDEPS_H "#define __CESDEPS_H__\n\n"; print CESDEPS_H "/*\n"; print CESDEPS_H " * Some CES converters use another CES converters and the following\n"; print CESDEPS_H " * is such dependencies description.\n"; print CESDEPS_H " */\n"; foreach my $ces (sort keys %cesdeps) { my @deps = sort @{$cesdeps{$ces}}; print CESDEPS_H "#ifdef $macro_to_ucs_ces\U$ces\n"; foreach my $dep (@deps) { print CESDEPS_H "# ifndef $macro_to_ucs_ces\U$dep\n"; print CESDEPS_H "# define $macro_to_ucs_ces\U$dep\n"; print CESDEPS_H "# endif\n"; } print CESDEPS_H "#endif\n"; print CESDEPS_H "#ifdef $macro_from_ucs_ces\U$ces\n"; foreach my $dep (@deps) { print CESDEPS_H "# ifndef $macro_from_ucs_ces\U$dep\n"; print CESDEPS_H "# define $macro_from_ucs_ces\U$dep\n"; print CESDEPS_H "# endif\n"; } print CESDEPS_H "#endif\n"; } print CESDEPS_H "\n#endif /* !__CESDEPS_H__ */\n\n"; close CESDEPS_H or err "Error while closing cesdeps.h file."; } # ============================================================================== # # Generate ccsbi.h file. # # Parameter 1 (input): hash reference with keys = CCS tables names and # values = array references with list of encodings which need this CCS table. # # ============================================================================== sub generate_ccsbi_h($) { my %ccsenc = %{$_[0]}; my @ccs = sort keys %ccsenc; print "Debug: create \"../ccs/ccsbi.h\" file.\n" if $verbose; open (CCSBI_H, '>', "../ccs/ccsbi.h") or err "Can't create \"../ccs/ccsbi.h\" file for writing.\nSystem error message: $!.\n"; print CCSBI_H "$comment_automatic\n\n"; print CCSBI_H "#ifndef __CCSBI_H__\n"; print CCSBI_H "#define __CCSBI_H__\n\n"; print CCSBI_H "#include \n"; print CCSBI_H "#include <_ansi.h>\n"; print CCSBI_H "#include \"ccs.h\"\n\n"; print CCSBI_H "/*\n"; print CCSBI_H " * Enable CCS tables if encoding needs them.\n"; print CCSBI_H " * Defining ${macro_to_ucs_ccs}XXX macro or ${macro_from_ucs_ccs}XXX\n"; print CCSBI_H " * macro is needed to enable \"XXX encoding -> UCS\" or \"UCS -> XXX encoding\"\n"; print CCSBI_H " * part of CCS table.\n"; print CCSBI_H " * CCS tables aren't linked if Newlib was configuted to use external CCS tables.\n"; print CCSBI_H " */\n"; print CCSBI_H "#ifndef _ICONV_ENABLE_EXTERNAL_CCS\n\n"; foreach my $ccs (@ccs) { my @encs = sort @{$ccsenc{$ccs}}; foreach my $encoding (@encs) { print CCSBI_H $encoding eq $encs[0] ? "#if " : " || "; print CCSBI_H "defined ($macro_from_enc\U$encoding)"; print CCSBI_H " \\" if $encoding ne $encs[$#encs]; print CCSBI_H "\n"; } print CCSBI_H "# define $macro_to_ucs_ccs\U$ccs\n"; print CCSBI_H "#endif\n"; foreach my $encoding (@encs) { print CCSBI_H $encoding eq $encs[0] ? "#if " : " || "; print CCSBI_H "defined ($macro_to_enc\U$encoding)"; print CCSBI_H " \\" if $encoding ne $encs[$#encs]; print CCSBI_H "\n"; } print CCSBI_H "# define $macro_from_ucs_ccs\U$ccs\n"; print CCSBI_H "#endif\n\n"; } print CCSBI_H "/*\n"; print CCSBI_H " * CCS table description structures forward declarations.\n"; print CCSBI_H " */\n"; foreach my $ccs (@ccs) { print CCSBI_H "#if defined ($macro_to_ucs_ccs\U$ccs) \\\n"; print CCSBI_H " || defined ($macro_from_ucs_ccs\U$ccs)\n"; print CCSBI_H "extern const iconv_ccs_t\n"; print CCSBI_H "$var_ccs$ccs;\n"; print CCSBI_H "#endif\n"; } print CCSBI_H "\n#endif /* !_ICONV_ENABLE_EXTERNAL_CCS */\n\n"; print CCSBI_H "\n#endif /* __CCSBI_H__ */\n\n"; close CCSBI_H or err "Error while closing ../ccs/ccsbi.h file."; } # ============================================================================== # # Generate cesbi.c file. # # Parameter 1 (input): hash reference with keys = CES Converters names and # values = array references with list of supported encodings. # # ============================================================================== sub generate_cesbi_c($) { my %cesenc = %{$_[0]}; my @ces = sort keys %cesenc; print "Debug: create \"cesbi.c\" file.\n" if $verbose; open (CESBI_C, '>', "cesbi.c") or err "Can't create \"cesbi.c\" file for writing.\nSystem error message: $!.\n"; print CESBI_C "$comment_automatic\n\n"; print CESBI_C "#include <_ansi.h>\n"; print CESBI_C "#include \n"; print CESBI_C "#include \"../lib/ucsconv.h\"\n"; print CESBI_C "#include \"cesbi.h\"\n\n"; print CESBI_C "/*\n"; print CESBI_C " * Each CES converter provides the list of supported encodings.\n"; print CESBI_C " */\n"; foreach my $ces (@ces) { print CESBI_C "#if defined ($macro_to_ucs_ces\U$ces) \\\n"; print CESBI_C " || defined ($macro_from_ucs_ces\U$ces)\n"; print CESBI_C "static const char *\n"; print CESBI_C "$var_ces_names${ces}\[] =\n"; print CESBI_C "{\n"; my @encodings = sort @{$cesenc{$ces}}; foreach my $encoding (@encodings) { print CESBI_C "# if defined ($macro_from_enc\U$encoding) \\\n"; print CESBI_C " || defined ($macro_to_enc\U$encoding)\n"; print CESBI_C " $macro_enc_name\U$encoding,\n"; print CESBI_C "#endif\n"; } print CESBI_C " NULL\n"; print CESBI_C "};\n"; print CESBI_C "#endif\n\n"; } print CESBI_C "/*\n"; print CESBI_C " * The following structure contains the list of \"to UCS\" linked-in CES converters.\n"; print CESBI_C " */\n"; print CESBI_C "const iconv_to_ucs_ces_t\n"; print CESBI_C "_iconv_to_ucs_ces[] =\n"; print CESBI_C "{\n"; foreach my $ces (@ces) { print CESBI_C "#ifdef $macro_to_ucs_ces\U$ces\n"; print CESBI_C " {(const char **)$var_ces_names$ces,\n"; print CESBI_C " &$var_to_ucs_handlers$ces},\n"; print CESBI_C "#endif\n"; } print CESBI_C " {(const char **)NULL,\n"; print CESBI_C " (iconv_to_ucs_ces_handlers_t *)NULL}\n"; print CESBI_C "};\n\n"; print CESBI_C "/*\n"; print CESBI_C " * The following structure contains the list of \"from UCS\" linked-in CES converters.\n"; print CESBI_C " */\n"; print CESBI_C "const iconv_from_ucs_ces_t\n"; print CESBI_C "_iconv_from_ucs_ces[] =\n"; print CESBI_C "{\n"; foreach my $ces (@ces) { print CESBI_C "#ifdef $macro_from_ucs_ces\U$ces\n"; print CESBI_C " {(const char **)$var_ces_names$ces,\n"; print CESBI_C " &$var_from_ucs_handlers$ces},\n"; print CESBI_C "#endif\n"; } print CESBI_C " {(const char **)NULL,\n"; print CESBI_C " (iconv_from_ucs_ces_handlers_t *)NULL}\n"; print CESBI_C "};\n"; close CESBI_C or err "Error while closing cesbi.c file."; } # ============================================================================== # # Generate ccsbi.c file. # # Parameter 1 (input): array reference with CCS tables names # # ============================================================================== sub generate_ccsbi_c($) { my @ccs = @{$_[0]}; print "Debug: create \"../ccs/ccsbi.c\" file.\n" if $verbose; open (CESBI_C, '>', "../ccs/ccsbi.c") or err "Can't create \"../ccs/ccsbi.c\" file for writing.\nSystem error message: $!.\n"; print CESBI_C "$comment_automatic\n\n"; print CESBI_C "#include <_ansi.h>\n"; print CESBI_C "#include \"ccsbi.h\"\n\n"; print CESBI_C "/*\n"; print CESBI_C " * The following array contains the list of built-in CCS tables.\n"; print CESBI_C " */\n"; print CESBI_C "const iconv_ccs_t *\n"; print CESBI_C "_iconv_ccs[] =\n"; print CESBI_C "{\n"; foreach my $ccs (@ccs) { print CESBI_C "#if defined ($macro_to_ucs_ccs\U$ccs) \\\n"; print CESBI_C " || defined ($macro_from_ucs_ccs\U$ccs)\n"; print CESBI_C " &$var_ccs$ccs,\n"; print CESBI_C "#endif\n"; } print CESBI_C " NULL\n"; print CESBI_C "};\n"; close CESBI_C or err "Error while closing ../ccs/ccsbi.c file."; } # ============================================================================== # # Generate ccsnames.h file. # # Parameter 1 (input): hash reference with keys = CCS tables names and # values = array references with list of encodings which need this CCS table. # # ============================================================================== sub generate_ccsnames_h($) { my %ccsenc = %{$_[0]}; my @ccs = sort keys %ccsenc; print "Debug: create \"../ccs/ccsnames.h\" file.\n" if $verbose; open (CCSNAMES_H, '>', "../ccs/ccsnames.h") or err "Can't create \"../ccs/ccsnames.h\" file for writing.\nSystem error message: $!.\n"; print CCSNAMES_H "$comment_automatic\n\n"; print CCSNAMES_H "#ifndef __CCSNAMES_H__\n"; print CCSNAMES_H "#define __CCSNAMES_H__\n\n"; print CCSNAMES_H "#include \"../lib/encnames.h\"\n\n"; print CCSNAMES_H "/*\n"; print CCSNAMES_H " * CCS tables names macros.\n"; print CCSNAMES_H " */\n"; foreach my $ccs (@ccs) { my @encs = @{$ccsenc{$ccs}}; my $flag; foreach my $encoding (@encs) { print CCSNAMES_H "#define $macro_ccs_name\U$ccs "; if ($encoding eq $ccs) { $flag = 1; print CCSNAMES_H "$macro_enc_name\U$encoding\n"; last; } } print CCSNAMES_H "\"$ccs\"\n" if !$flag; } print CCSNAMES_H "\n#endif /* !__CCSNAMES_H__ */\n\n"; close CCSNAMES_H or err "Error while closing ../ccs/ccsnames.h file."; } picolibc-1.7.4/newlib/libc/iconv/ces/table-pcs.c000066400000000000000000000111001414576234500214120ustar00rootroot00000000000000/* * Copyright (c) 2003-2004, Artem B. Bityuckiy * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* * This CES converter is just an simple extension of table CES converter. * This CES converter is used for 16 bit CCSes which include 7bit * Portable Characters Set (PCS) (equivalent to ASCII) (example: BIG5). */ #include "cesbi.h" #if defined (ICONV_TO_UCS_CES_TABLE_PCS) \ || defined (ICONV_FROM_UCS_CES_TABLE_PCS) #include <_ansi.h> #include #include "../lib/local.h" #include "../lib/ucsconv.h" #if defined (ICONV_FROM_UCS_CES_TABLE_PCS) static size_t table_pcs_convert_from_ucs (void *data, ucs4_t in, unsigned char **outbuf, size_t *outbytesleft) { if (*outbytesleft < 1) return (size_t)ICONV_CES_NOSPACE; if (in < 0x80) { **outbuf = (unsigned char)in; *outbuf += 1; *outbytesleft -= 1; return 1; } return _iconv_from_ucs_ces_handlers_table.convert_from_ucs ( data, in, outbuf, outbytesleft); } static void * table_pcs_from_ucs_init ( const char *encoding) { return _iconv_from_ucs_ces_handlers_table.init (encoding); } static size_t table_pcs_from_ucs_close ( void *data) { return _iconv_from_ucs_ces_handlers_table.close (data); } static int table_pcs_from_ucs_get_mb_cur_max (void *data) { return _iconv_from_ucs_ces_handlers_table.get_mb_cur_max (data); } #endif /* ICONV_FROM_UCS_CES_TABLE_PCS */ #if defined (ICONV_TO_UCS_CES_TABLE_PCS) static ucs4_t table_pcs_convert_to_ucs (void *data, const unsigned char **inbuf, size_t *inbytesleft) { if (*inbytesleft < 1) return (ucs4_t)ICONV_CES_BAD_SEQUENCE; if (**inbuf < 0x80) { *inbytesleft -= 1; *inbuf += 1; return (ucs4_t)(*(*inbuf - 1)); } return _iconv_to_ucs_ces_handlers_table.convert_to_ucs ( data, inbuf, inbytesleft); } static void * table_pcs_to_ucs_init ( const char *encoding) { return _iconv_to_ucs_ces_handlers_table.init (encoding); } static size_t table_pcs_to_ucs_close ( void *data) { return _iconv_to_ucs_ces_handlers_table.close (data); } static int table_pcs_to_ucs_get_mb_cur_max (void *data) { return _iconv_to_ucs_ces_handlers_table.get_mb_cur_max (data); } #endif /* ICONV_TO_UCS_CES_TABLE_PCS */ #if defined (ICONV_FROM_UCS_CES_TABLE_PCS) const iconv_from_ucs_ces_handlers_t _iconv_from_ucs_ces_handlers_table_pcs = { table_pcs_from_ucs_init, table_pcs_from_ucs_close, table_pcs_from_ucs_get_mb_cur_max, NULL, NULL, NULL, table_pcs_convert_from_ucs }; #endif #if defined (ICONV_TO_UCS_CES_TABLE_PCS) const iconv_to_ucs_ces_handlers_t _iconv_to_ucs_ces_handlers_table_pcs = { table_pcs_to_ucs_init, table_pcs_to_ucs_close, table_pcs_to_ucs_get_mb_cur_max, NULL, NULL, NULL, table_pcs_convert_to_ucs }; #endif #endif /* ICONV_TO_UCS_CES_TABLE_PCS || ICONV_FROM_UCS_CES_TABLE_PCS */ picolibc-1.7.4/newlib/libc/iconv/ces/table.c000066400000000000000000000363611414576234500206470ustar00rootroot00000000000000/* * Copyright (c) 2003-2004, Artem B. Bityuckiy * Copyright (c) 1999,2000, Konstantin Chuguev. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "cesbi.h" #if defined (ICONV_TO_UCS_CES_TABLE) \ || defined (ICONV_FROM_UCS_CES_TABLE) #include <_ansi.h> #include #include #include #include #include #include #include #include "../lib/endian.h" #include "../lib/local.h" #include "../lib/ucsconv.h" #include "../ccs/ccs.h" /* * Table-based CES converter is implemented here. Table-based CES converter * deals with encodings with "null" CES, like KOI8-R. In this case it is * possible to implement one generic algorithm which works with different * CCS tables. * * Table-based CES converter deals with CCS tables placed into iconv/ccs * subdirectory. First, converter tries to find needed CCS table among * linked-in tables. If not found, it tries to load it from external file * (only if corespondent capability was enabled in Newlib configuration). * * 16 bit encodings are assumed to be Big Endian. */ static ucs2_t find_code_size (ucs2_t code, const __uint16_t *tblp); static __inline ucs2_t find_code_speed (ucs2_t code, const __uint16_t *tblp); static __inline ucs2_t find_code_speed_8bit (ucs2_t code, const unsigned char *tblp); #ifdef _ICONV_ENABLE_EXTERNAL_CCS static const iconv_ccs_desc_t * load_file (const char *name, int direction); #endif /* * Interface data and functions implementation. */ static size_t table_close ( void *data) { const iconv_ccs_desc_t *ccsp = (iconv_ccs_desc_t *)data; if (ccsp->type == TABLE_EXTERNAL) free ((void *)ccsp->tbl); free((void *)ccsp); return 0; } #if defined (ICONV_FROM_UCS_CES_TABLE) static void * table_init_from_ucs ( const char *encoding) { int i; const iconv_ccs_t *biccsp = NULL; iconv_ccs_desc_t *ccsp; for (i = 0; _iconv_ccs[i] != NULL; i++) if (strcmp (_iconv_ccs[i]->name, encoding) == 0) { biccsp = _iconv_ccs[i]; break; } if (biccsp != NULL) { if (biccsp->from_ucs == NULL || (ccsp = (iconv_ccs_desc_t *) malloc (sizeof (iconv_ccs_desc_t))) == NULL) return NULL; ccsp->type = TABLE_BUILTIN; ccsp->bits = biccsp->bits; ccsp->optimization = biccsp->from_ucs_type; ccsp->tbl = biccsp->from_ucs; return (void *)ccsp; } #ifdef _ICONV_ENABLE_EXTERNAL_CCS return (void *)load_file (encoding, 1); #else return NULL; #endif } static size_t table_convert_from_ucs (void *data, ucs4_t in, unsigned char **outbuf, size_t *outbytesleft) { const iconv_ccs_desc_t *ccsp = (iconv_ccs_desc_t *)data; ucs2_t code; if (in > 0xFFFF || in == INVALC) return (size_t)ICONV_CES_INVALID_CHARACTER; if (ccsp->bits == TABLE_8BIT) { code = find_code_speed_8bit ((ucs2_t)in, (const unsigned char *)ccsp->tbl); if (code == INVALC) return (size_t)ICONV_CES_INVALID_CHARACTER; **outbuf = (unsigned char)code; *outbuf += 1; *outbytesleft -= 1; return 1; } else if (ccsp->optimization == TABLE_SPEED_OPTIMIZED) code = find_code_speed ((ucs2_t)in, ccsp->tbl); else code = find_code_size ((ucs2_t)in, ccsp->tbl); if (code == INVALC) return (size_t)ICONV_CES_INVALID_CHARACTER; if (*outbytesleft < 2) return (size_t)ICONV_CES_NOSPACE; /* We can't store whole word since **outbuf may be not 2-byte aligned */ **outbuf = (unsigned char)((ucs2_t)code >> 8); *(*outbuf + 1) = (unsigned char)code; *outbuf += 2; *outbytesleft -= 2; return 2; } #endif /* ICONV_FROM_UCS_CES_TABLE */ #if defined (ICONV_TO_UCS_CES_TABLE) static void * table_init_to_ucs ( const char *encoding) { int i; const iconv_ccs_t *biccsp = NULL; iconv_ccs_desc_t *ccsp; for (i = 0; _iconv_ccs[i] != NULL; i++) if (strcmp (_iconv_ccs[i]->name, encoding) == 0) { biccsp = _iconv_ccs[i]; break; } if (biccsp != NULL) { if (biccsp->to_ucs == NULL || (ccsp = (iconv_ccs_desc_t *) malloc (sizeof (iconv_ccs_desc_t))) == NULL) return NULL; ccsp->type = TABLE_BUILTIN; ccsp->bits = biccsp->bits; ccsp->optimization = biccsp->to_ucs_type; ccsp->tbl = biccsp->to_ucs; return (void *)ccsp; } #ifdef _ICONV_ENABLE_EXTERNAL_CCS return (void *)load_file (encoding, 0); #else return NULL; #endif } static ucs4_t table_convert_to_ucs (void *data, const unsigned char **inbuf, size_t *inbytesleft) { const iconv_ccs_desc_t *ccsp = (iconv_ccs_desc_t *)data; ucs2_t ucs; if (ccsp->bits == TABLE_8BIT) { if (*inbytesleft < 1) return (ucs4_t)ICONV_CES_BAD_SEQUENCE; ucs = (ucs2_t)ccsp->tbl[**inbuf]; if (ucs == INVALC) return (ucs4_t)ICONV_CES_INVALID_CHARACTER; *inbytesleft -= 1; *inbuf += 1; return (ucs4_t)ucs; } if (*inbytesleft < 2) return (ucs4_t)ICONV_CES_BAD_SEQUENCE; if (ccsp->optimization == TABLE_SIZE_OPTIMIZED) ucs = find_code_size((ucs2_t)**inbuf << 8 | (ucs2_t)*(*inbuf + 1), ccsp->tbl); else ucs = find_code_speed((ucs2_t)**inbuf << 8 | (ucs2_t)*(*inbuf + 1), ccsp->tbl); if (ucs == INVALC) return (ucs4_t)ICONV_CES_INVALID_CHARACTER; *inbuf += 2; *inbytesleft -= 2; return (ucs4_t)ucs; } #endif /* ICONV_TO_UCS_CES_TABLE */ static int table_get_mb_cur_max (void *data) { return ((iconv_ccs_desc_t *)data)->bits/8; } #if defined (ICONV_TO_UCS_CES_TABLE) const iconv_to_ucs_ces_handlers_t _iconv_to_ucs_ces_handlers_table = { table_init_to_ucs, table_close, table_get_mb_cur_max, NULL, NULL, NULL, table_convert_to_ucs }; #endif /* ICONV_FROM_UCS_CES_TABLE */ #if defined (ICONV_FROM_UCS_CES_TABLE) const iconv_from_ucs_ces_handlers_t _iconv_from_ucs_ces_handlers_table = { table_init_from_ucs, table_close, table_get_mb_cur_max, NULL, NULL, NULL, table_convert_from_ucs }; #endif /* ICONV_TO_UCS_CES_TABLE */ /* * Supplementary functions. */ /* * find_code_speed - find code in 16 bit speed-optimized table. * * PARAMETERS: * ucs2_t code - code whose mapping to find. * const __uint16_t *tblp - table pointer. * * RETURN: * Code that corresponds to 'code'. */ static __inline ucs2_t find_code_speed (ucs2_t code, const __uint16_t *tblp) { int idx = tblp[code >> 8]; if (idx == INVBLK) return (ucs2_t)INVALC; return (ucs2_t)tblp[(code & 0x00FF) + idx]; } /* * find_code_speed_8bit - find code in 8 bit speed-optimized table. * * PARAMETERS: * ucs2_t code - code whose mapping to find. * const __uint16_t *tblp - table pointer. * * RETURN: * Code that corresponds to 'code'. */ static __inline ucs2_t find_code_speed_8bit (ucs2_t code, const unsigned char *tblp) { int idx; unsigned char ccs; if (code == ((ucs2_t *)tblp)[0]) return (ucs2_t)0xFF; idx = ((ucs2_t *)tblp)[1 + (code >> 8)]; if (idx == INVBLK) return (ucs2_t)INVALC; ccs = tblp[(code & 0x00FF) + idx]; return ccs == 0xFF ? (ucs2_t)INVALC : (ucs2_t)ccs; } /* Left range boundary */ #define RANGE_LEFT(n) (tblp[FIRST_RANGE_INDEX + (n)*3 + 0]) /* Right range boundary */ #define RANGE_RIGHT(n) (tblp[FIRST_RANGE_INDEX + (n)*3 + 1]) /* Range offset */ #define RANGE_INDEX(n) (tblp[FIRST_RANGE_INDEX + (n)*3 + 2]) /* Un-ranged offset */ #define UNRANGED_INDEX(n) (tblp[FIRST_UNRANGED_INDEX_INDEX] + (n)*2) /* * find_code_size - find code in 16 bit size-optimized table. * * PARAMETERS: * ucs2_t code - code whose mapping to find. * const __uint16_t *tblp - table pointer. * * RETURN: * Code that corresponds to 'code'. */ static ucs2_t find_code_size (ucs2_t code, const __uint16_t *tblp) { int first, last, cur, center; if (tblp[RANGES_NUM_INDEX] > 0) { first = 0; last = tblp[RANGES_NUM_INDEX] - 1; do { center = (last - first)/2; cur = center + first; if (code > RANGE_RIGHT (cur)) first = cur; else if (code < RANGE_LEFT (cur)) last = cur; else return (ucs2_t)tblp[RANGE_INDEX (cur) + code - RANGE_LEFT (cur)]; } while (center > 0); if (last - first == 1) { if (code >= RANGE_LEFT (first) && code <= RANGE_RIGHT (first)) return (ucs2_t)tblp[RANGE_INDEX (first) + code - RANGE_LEFT (first)]; if (code >= RANGE_LEFT (last) && code <= RANGE_RIGHT (last)) return (ucs2_t)tblp[RANGE_INDEX (last) + code - RANGE_LEFT (last)]; } } if (tblp[UNRANGED_NUM_INDEX] > 0) { first = 0; last = tblp[UNRANGED_NUM_INDEX] - 1; do { int c; center = (last - first)/2; cur = center + first; c = tblp[UNRANGED_INDEX (cur)]; if (code > c) first = cur; else if (code < c) last = cur; else return (ucs2_t)tblp[UNRANGED_INDEX (cur) + 1]; } while (center > 0); if (last - first == 1) { if (code == tblp[UNRANGED_INDEX (first)]) return (ucs2_t)tblp[UNRANGED_INDEX (first) + 1]; if (code == tblp[UNRANGED_INDEX (last)]) return (ucs2_t)tblp[UNRANGED_INDEX (last) + 1]; } } return (ucs2_t)INVALC; } #ifdef _ICONV_ENABLE_EXTERNAL_CCS #define _16BIT_ELT(offset) \ ICONV_BETOHS(*((__uint16_t *)(buf + (offset)))) #define _32BIT_ELT(offset) \ ICONV_BETOHL(*((__uint32_t *)(buf + (offset)))) /* * load_file - load conversion table from external file and initialize * iconv_ccs_desc_t object. * * PARAMETERS: * const char *name - encoding name. * int direction - conversion direction. * * DESCRIPTION: * Loads conversion table of appropriate endianess from external file * and initializes 'iconv_ccs_desc_t' table description structure. * If 'direction' is 0 - load "To UCS" table, else load "From UCS" * table. * * RETURN: * iconv_ccs_desc_t * pointer is success, NULL if failure. */ static const iconv_ccs_desc_t * load_file ( const char *name, int direction) { FILE *file; char *buf; size_t tbllen; size_t hdrlen; off_t off; off_t cur = 0; const char *fname; iconv_ccs_desc_t *ccsp = NULL; size_t nmlen = strlen(name); /* Since CCS table name length can vary - it is aligned (by adding extra * bytes to it's end) to 4-byte boundary. */ int alignment = nmlen & 3 ? 4 - (nmlen & 3) : 0; hdrlen = nmlen + EXTTABLE_HEADER_LEN + alignment; if ((fname = _iconv_nls_construct_filename (name, ICONV_SUBDIR, ICONV_DATA_EXT)) == NULL) return NULL; if ((file = fopen (fname, "rb")) == NULL) goto error1; if ((buf = malloc (hdrlen)) == NULL) goto error2; if (fread ((void *) buf, 1, hdrlen, file) != hdrlen) goto error3; cur += hdrlen; if (_16BIT_ELT (EXTTABLE_VERSION_OFF) != TABLE_VERSION_1 || _32BIT_ELT (EXTTABLE_CCSNAME_LEN_OFF) != nmlen || strncmp (buf + EXTTABLE_CCSNAME_OFF, name, nmlen) != 0) goto error3; /* Bad file */ if ((ccsp = (iconv_ccs_desc_t *) calloc (1, sizeof (iconv_ccs_desc_t))) == NULL) goto error3; ccsp->bits = _16BIT_ELT (EXTTABLE_BITS_OFF); ccsp->type = TABLE_EXTERNAL; /* Add 4-byte alignment to name length */ nmlen += alignment; if (ccsp->bits == TABLE_8BIT) { if (direction == 0) /* Load "To UCS" table */ { off = (off_t)_32BIT_ELT (nmlen + EXTTABLE_TO_SPEED_OFF); tbllen = _32BIT_ELT (nmlen + EXTTABLE_TO_SPEED_LEN_OFF); } else /* Load "From UCS" table */ { off = (off_t)_32BIT_ELT (nmlen + EXTTABLE_FROM_SPEED_OFF); tbllen = _32BIT_ELT (nmlen + EXTTABLE_FROM_SPEED_LEN_OFF); } } else if (ccsp->bits == TABLE_16BIT) { if (direction == 0) /* Load "To UCS" table */ { #ifdef TABLE_USE_SIZE_OPTIMIZATION off = (off_t)_32BIT_ELT (nmlen + EXTTABLE_TO_SIZE_OFF); tbllen = _32BIT_ELT (nmlen + EXTTABLE_TO_SIZE_LEN_OFF); #else off = (off_t)_32BIT_ELT (nmlen + EXTTABLE_TO_SPEED_OFF); tbllen = _32BIT_ELT (nmlen + EXTTABLE_TO_SPEED_LEN_OFF); #endif } else /* Load "From UCS" table */ { #ifdef TABLE_USE_SIZE_OPTIMIZATION off = (off_t)_32BIT_ELT (nmlen + EXTTABLE_FROM_SIZE_OFF); tbllen = _32BIT_ELT (nmlen + EXTTABLE_FROM_SIZE_LEN_OFF); #else off = (off_t)_32BIT_ELT (nmlen + EXTTABLE_FROM_SPEED_OFF); tbllen = _32BIT_ELT (nmlen + EXTTABLE_FROM_SPEED_LEN_OFF); #endif } #ifdef TABLE_USE_SIZE_OPTIMIZATION ccsp->optimization = TABLE_SIZE_OPTIMIZED; #else ccsp->optimization = TABLE_SPEED_OPTIMIZED; #endif } else goto error4; /* Bad file */ if (off == EXTTABLE_NO_TABLE) goto error4; /* No correspondent table in file */ if ((ccsp->tbl = (ucs2_t *)malloc (tbllen)) == NULL) goto error4; while (cur < off) { if (getc(file) == EOF) goto error5; cur++; } if (fread ((void *) ccsp->tbl, 1, tbllen, file) != tbllen) goto error5; goto normal_exit; error5: free ((void *)ccsp->tbl); ccsp->tbl = NULL; error4: free ((void *)ccsp); ccsp = NULL; error3: normal_exit: free ((void *)buf); error2: if (fclose (file) == EOF) { if (ccsp != NULL) { if (ccsp->tbl != NULL) free ((void *)ccsp->tbl); free ((void *)ccsp); } ccsp = NULL; } error1: free ((void *)fname); return ccsp; } #endif #endif /* ICONV_TO_UCS_CES_TABLE || ICONV_FROM_UCS_CES_TABLE */ picolibc-1.7.4/newlib/libc/iconv/ces/ucs-2-internal.c000066400000000000000000000071701414576234500223170ustar00rootroot00000000000000/* * Copyright (c) 2003-2004, Artem B. Bityuckiy * Copyright (c) 1999,2000, Konstantin Chuguev. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "cesbi.h" #if defined (ICONV_TO_UCS_CES_UCS_2_INTERNAL) \ || defined (ICONV_FROM_UCS_CES_UCS_2_INTERNAL) #include <_ansi.h> #include #include #include #include "../lib/local.h" #include "../lib/ucsconv.h" #include "../lib/endian.h" /* * Internal 2-byte representation of UCS-2 codes without restrictions and * without BOM support. */ #if defined (ICONV_FROM_UCS_CES_UCS_2_INTERNAL) static size_t ucs_2_internal_convert_from_ucs (void *data, register ucs4_t in, unsigned char **outbuf, size_t *outbytesleft) { (void) data; if (in > 0x0000FFFF) return (size_t)ICONV_CES_INVALID_CHARACTER; if (*outbytesleft < sizeof (ucs2_t)) return (size_t)ICONV_CES_NOSPACE; *((ucs2_t *)(*outbuf)) = (ucs2_t)in; *outbuf += sizeof (ucs2_t); *outbytesleft -= sizeof (ucs2_t); return sizeof (ucs2_t); } #endif /* ICONV_FROM_UCS_CES_UCS_2_INTERNAL */ #if defined (ICONV_TO_UCS_CES_UCS_2_INTERNAL) static ucs4_t ucs_2_internal_convert_to_ucs (void *data, const unsigned char **inbuf, size_t *inbytesleft) { register ucs4_t res; (void) data; if (*inbytesleft < sizeof (ucs2_t)) return (ucs4_t)ICONV_CES_BAD_SEQUENCE; res = (ucs4_t)*((ucs2_t *)(*inbuf)); if (res > 0x0000FFFF) return (ucs4_t)ICONV_CES_INVALID_CHARACTER; *inbuf += sizeof (ucs2_t); *inbytesleft -= sizeof (ucs2_t); return res; } #endif /* ICONV_TO_UCS_CES_UCS_2_INTERNAL */ static int ucs_2_internal_get_mb_cur_max (void *data) { (void) data; return 2; } #if defined (ICONV_TO_UCS_CES_UCS_2_INTERNAL) const iconv_to_ucs_ces_handlers_t _iconv_to_ucs_ces_handlers_ucs_2_internal = { NULL, NULL, ucs_2_internal_get_mb_cur_max, NULL, NULL, NULL, ucs_2_internal_convert_to_ucs }; #endif #if defined (ICONV_FROM_UCS_CES_UCS_2_INTERNAL) const iconv_from_ucs_ces_handlers_t _iconv_from_ucs_ces_handlers_ucs_2_internal = { NULL, NULL, ucs_2_internal_get_mb_cur_max, NULL, NULL, NULL, ucs_2_internal_convert_from_ucs }; #endif #endif /* ICONV_TO_UCS_CES_UCS_2_INTERNAL || ICONV_FROM_UCS_CES_UCS_2_INTERNAL */ picolibc-1.7.4/newlib/libc/iconv/ces/ucs-2.c000066400000000000000000000105041414576234500205000ustar00rootroot00000000000000/* * Copyright (c) 2003-2004, Artem B. Bityuckiy * Copyright (c) 1999,2000, Konstantin Chuguev. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "cesbi.h" #if defined (ICONV_TO_UCS_CES_UCS_2) \ || defined (ICONV_FROM_UCS_CES_UCS_2) #include <_ansi.h> #include #include #include #include "../lib/local.h" #include "../lib/ucsconv.h" #include "../lib/endian.h" /* * BOM isn't supported. UCS-2 is Big Endian. Bad codes are rejected. * Bad codes: 0xFFFF, 0xFFFE, 0xD800-0xDFFF. */ #define UCS_2_BIG_ENDIAN 0 #define UCS_2_LITTLE_ENDIAN 1 #define UCS_2 "ucs_2" #define UCS_2BE "ucs_2be" #define UCS_2LE "ucs_2le" static void * ucs_2_init ( const char *encoding) { int *data; if ((data = (int *) malloc(sizeof (int))) == NULL) return (void *)NULL; if (strcmp (encoding, UCS_2LE) == 0) *data = UCS_2_LITTLE_ENDIAN; else *data = UCS_2_BIG_ENDIAN; return (void *)data; } static size_t ucs_2_close ( void *data) { free (data); return 0; } #if defined (ICONV_FROM_UCS_CES_UCS_2) static size_t ucs_2_convert_from_ucs (void *data, ucs4_t in, unsigned char **outbuf, size_t *outbytesleft) { if ((in >= 0x0000D800 && in <= 0x0000DFFF) /* Surrogate character */ || in >= 0x0000FFFE) return (size_t)ICONV_CES_INVALID_CHARACTER; if (*outbytesleft < sizeof (ucs2_t)) return (size_t)ICONV_CES_NOSPACE; if (*((int *)data) == UCS_2_BIG_ENDIAN) *((ucs2_t *)(*outbuf)) = ICONV_HTOBES ((ucs2_t)in); else *((ucs2_t *)(*outbuf)) = ICONV_HTOLES ((ucs2_t)in); *outbuf += sizeof (ucs2_t); *outbytesleft -= sizeof (ucs2_t); return sizeof (ucs2_t); } #endif /* ICONV_FROM_UCS_CES_UCS_2 */ #if defined (ICONV_TO_UCS_CES_UCS_2) static ucs4_t ucs_2_convert_to_ucs (void *data, const unsigned char **inbuf, size_t *inbytesleft) { ucs4_t res; if (*inbytesleft < sizeof (ucs2_t)) return (ucs4_t)ICONV_CES_BAD_SEQUENCE; if (*((int *)data) == UCS_2_BIG_ENDIAN) res = (ucs4_t)ICONV_BETOHS (*((ucs2_t *)(*inbuf))); else res = (ucs4_t)ICONV_LETOHS (*((ucs2_t *)(*inbuf))); if ((res >= 0x0000D800 && res <= 0x0000DFFF) /* Surrogate character */ || res >= 0x0000FFFE) return (ucs4_t)ICONV_CES_INVALID_CHARACTER; *inbytesleft -= sizeof (ucs2_t); *inbuf += sizeof (ucs2_t); return res; } #endif /* ICONV_TO_UCS_CES_UCS_2 */ static int ucs_2_get_mb_cur_max (void *data) { (void) data; return 2; } #if defined (ICONV_TO_UCS_CES_UCS_2) const iconv_to_ucs_ces_handlers_t _iconv_to_ucs_ces_handlers_ucs_2 = { ucs_2_init, ucs_2_close, ucs_2_get_mb_cur_max, NULL, NULL, NULL, ucs_2_convert_to_ucs }; #endif #if defined (ICONV_FROM_UCS_CES_UCS_2) const iconv_from_ucs_ces_handlers_t _iconv_from_ucs_ces_handlers_ucs_2 = { ucs_2_init, ucs_2_close, ucs_2_get_mb_cur_max, NULL, NULL, NULL, ucs_2_convert_from_ucs }; #endif #endif /* ICONV_TO_UCS_CES_UCS_2 || ICONV_FROM_UCS_CES_UCS_2 */ picolibc-1.7.4/newlib/libc/iconv/ces/ucs-4-internal.c000066400000000000000000000071471414576234500223250ustar00rootroot00000000000000/* * Copyright (c) 2003-2004, Artem B. Bityuckiy * Copyright (c) 1999,2000, Konstantin Chuguev. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "cesbi.h" #if defined (ICONV_TO_UCS_CES_UCS_4_INTERNAL) \ || defined (ICONV_FROM_UCS_CES_UCS_4_INTERNAL) #include <_ansi.h> #include #include #include #include "../lib/local.h" #include "../lib/ucsconv.h" #include "../lib/endian.h" /* * Internal 4-byte representation of UCS-2 codes without restrictions and * without BOM support. */ #if defined (ICONV_FROM_UCS_CES_UCS_4_INTERNAL) static size_t ucs_4_internal_convert_from_ucs (void *data, register ucs4_t in, unsigned char **outbuf, size_t *outbytesleft) { (void) data; if (in > 0x7FFFFFFF) return (size_t)ICONV_CES_INVALID_CHARACTER; if (*outbytesleft < sizeof (ucs4_t)) return (size_t)ICONV_CES_NOSPACE; *((ucs4_t *)(*outbuf)) = in; *outbytesleft -= sizeof (ucs4_t); *outbuf += sizeof (ucs4_t); return sizeof (ucs4_t); } #endif /* ICONV_FROM_UCS_CES_UCS_4_INTERNAL */ #if defined (ICONV_TO_UCS_CES_UCS_4_INTERNAL) static ucs4_t ucs_4_internal_convert_to_ucs (void *data, const unsigned char **inbuf, size_t *inbytesleft) { (void) data; register ucs4_t res; if (*inbytesleft < sizeof (ucs4_t)) return (ucs4_t)ICONV_CES_BAD_SEQUENCE; res = *((ucs4_t *)(*inbuf)); if (res > 0x7FFFFFFF) return (ucs4_t)ICONV_CES_INVALID_CHARACTER; *inbytesleft -= sizeof (ucs4_t); *inbuf += sizeof (ucs4_t); return res; } #endif /* ICONV_TO_UCS_CES_UCS_4_INTERNAL */ static int ucs_4_internal_get_mb_cur_max (void *data) { (void) data; return 2; } #if defined (ICONV_TO_UCS_CES_UCS_4_INTERNAL) const iconv_to_ucs_ces_handlers_t _iconv_to_ucs_ces_handlers_ucs_4_internal = { NULL, NULL, ucs_4_internal_get_mb_cur_max, NULL, NULL, NULL, ucs_4_internal_convert_to_ucs }; #endif #if defined (ICONV_FROM_UCS_CES_UCS_4_INTERNAL) const iconv_from_ucs_ces_handlers_t _iconv_from_ucs_ces_handlers_ucs_4_internal = { NULL, NULL, ucs_4_internal_get_mb_cur_max, NULL, NULL, NULL, ucs_4_internal_convert_from_ucs }; #endif #endif /* ICONV_TO_UCS_CES_UCS_4_INTERNAL || ICONV_FROM_UCS_CES_UCS_4_INTERNAL */ picolibc-1.7.4/newlib/libc/iconv/ces/ucs-4.c000066400000000000000000000106301414576234500205020ustar00rootroot00000000000000/* * Copyright (c) 2003-2004, Artem B. Bityuckiy * Copyright (c) 1999,2000, Konstantin Chuguev. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "cesbi.h" #if defined (ICONV_TO_UCS_CES_UCS_4) \ || defined (ICONV_FROM_UCS_CES_UCS_4) #include <_ansi.h> #include #include #include #include "../lib/local.h" #include "../lib/ucsconv.h" #include "../lib/endian.h" /* * BOM isn't supported. UCS-4 is Big Endian. Bad codes are rejected. * Bad codes: 0x0000FFFF, 0x0000FFFE, 0x0000D800-0x0000DFFF, * 0x7FFFFFFF-0xFFFFFFFF. */ #define UCS_4_BIG_ENDIAN 0 #define UCS_4_LITTLE_ENDIAN 1 #define UCS_4 "ucs_4" #define UCS_4BE "ucs_4be" #define UCS_4LE "ucs_4le" static void * ucs_4_init ( const char *encoding) { int *data; if ((data = (int *)malloc (sizeof(int))) == NULL) return (void *)NULL; if (strcmp (encoding, UCS_4LE) == 0) *data = UCS_4_LITTLE_ENDIAN; else *data = UCS_4_BIG_ENDIAN; return (void *)data; } static size_t ucs_4_close ( void *data) { free(data); return 0; } #if defined (ICONV_FROM_UCS_CES_UCS_4) static size_t ucs_4_convert_from_ucs (void *data, ucs4_t in, unsigned char **outbuf, size_t *outbytesleft) { if ((in >= 0x0000D800 && in <= 0x0000DFFF) /* Surrogate character */ || in > 0x7FFFFFFF || in == 0x0000FFFF || in == 0x0000FFFE) return (size_t)ICONV_CES_INVALID_CHARACTER; if (*outbytesleft < sizeof (ucs4_t)) return (size_t)ICONV_CES_NOSPACE; if (*((int *)data) == UCS_4_BIG_ENDIAN) *((ucs4_t *)(*outbuf)) = ICONV_HTOBEL (in); else *((ucs4_t *)(*outbuf)) = ICONV_HTOLEL (in); *outbuf += sizeof (ucs4_t); *outbytesleft -= sizeof (ucs4_t); return sizeof (ucs4_t); } #endif /* ICONV_FROM_UCS_CES_UCS_4 */ #if defined (ICONV_TO_UCS_CES_UCS_4) static ucs4_t ucs_4_convert_to_ucs (void *data, const unsigned char **inbuf, size_t *inbytesleft) { ucs4_t res; if (*inbytesleft < sizeof (ucs4_t)) return (ucs4_t)ICONV_CES_BAD_SEQUENCE; if (*((int *)data) == UCS_4_BIG_ENDIAN) res = ICONV_BETOHL (*((ucs4_t *)(*inbuf))); else res = ICONV_LETOHL (*((ucs4_t *)(*inbuf))); if ((res >= 0x0000D800 && res <= 0x0000DFFF) /* Surrogate character */ || res > 0x7FFFFFFF || res == 0x0000FFFF || res == 0x0000FFFE) return (ucs4_t)ICONV_CES_INVALID_CHARACTER; *inbytesleft -= sizeof (ucs4_t); *inbuf += sizeof(ucs4_t); return res; } #endif /* ICONV_TO_UCS_CES_UCS_4 */ static int ucs_4_get_mb_cur_max (void *data) { (void) data; return 4; } #if defined (ICONV_TO_UCS_CES_UCS_4) const iconv_to_ucs_ces_handlers_t _iconv_to_ucs_ces_handlers_ucs_4 = { ucs_4_init, ucs_4_close, ucs_4_get_mb_cur_max, NULL, NULL, NULL, ucs_4_convert_to_ucs }; #endif #if defined (ICONV_FROM_UCS_CES_UCS_4) const iconv_from_ucs_ces_handlers_t _iconv_from_ucs_ces_handlers_ucs_4 = { ucs_4_init, ucs_4_close, ucs_4_get_mb_cur_max, NULL, NULL, NULL, ucs_4_convert_from_ucs }; #endif #endif /* ICONV_TO_UCS_CES_UCS_4 || ICONV_FROM_UCS_CES_UCS_4 */ picolibc-1.7.4/newlib/libc/iconv/ces/us-ascii.c000066400000000000000000000063161414576234500212720ustar00rootroot00000000000000/* * Copyright (c) 2003-2004, Artem B. Bityuckiy * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "cesbi.h" #if defined (ICONV_TO_UCS_CES_US_ASCII) \ || defined (ICONV_FROM_UCS_CES_US_ASCII) #include <_ansi.h> #include #include "../lib/local.h" #include "../lib/ucsconv.h" /* * For optimization purposes us_ascii is implemented as separate CES converter. * Another possible way is to add us_ascii CCS and use table-based CES converter. */ #if defined (ICONV_FROM_UCS_CES_US_ASCII) static size_t us_ascii_convert_from_ucs (void *data, ucs4_t in, unsigned char **outbuf, size_t *outbytesleft) { (void) data; if (in > 0x7F) return (size_t)ICONV_CES_INVALID_CHARACTER; *((char *)(*outbuf)) = (char)in; *outbuf += 1; *outbytesleft -= 1; return 1; } #endif /* ICONV_FROM_UCS_CES_US_ASCII */ #if defined (ICONV_TO_UCS_CES_US_ASCII) static ucs4_t us_ascii_convert_to_ucs (void *data, const unsigned char **inbuf, size_t *inbytesleft) { (void) data; ucs4_t res; if (*inbytesleft < 1) return (ucs4_t)ICONV_CES_BAD_SEQUENCE; res = (ucs4_t)**inbuf; if (res > 0x7F) return (ucs4_t)ICONV_CES_INVALID_CHARACTER; *inbytesleft -= 1; *inbuf += 1; return res; } #endif /* ICONV_TO_UCS_CES_US_ASCII */ static int us_ascii_get_mb_cur_max (void *data) { (void) data; return 2; } #if defined (ICONV_TO_UCS_CES_US_ASCII) const iconv_to_ucs_ces_handlers_t _iconv_to_ucs_ces_handlers_us_ascii = { NULL, NULL, us_ascii_get_mb_cur_max, NULL, NULL, NULL, us_ascii_convert_to_ucs }; #endif #if defined (ICONV_FROM_UCS_CES_US_ASCII) const iconv_from_ucs_ces_handlers_t _iconv_from_ucs_ces_handlers_us_ascii = { NULL, NULL, us_ascii_get_mb_cur_max, NULL, NULL, NULL, us_ascii_convert_from_ucs }; #endif #endif /* ICONV_TO_UCS_CES_US_ASCII || ICONV_FROM_UCS_CES_US_ASCII */ picolibc-1.7.4/newlib/libc/iconv/ces/utf-16.c000066400000000000000000000167631414576234500206060ustar00rootroot00000000000000/* * Copyright (c) 2003-2004, Artem B. Bityuckiy * Copyright (c) 1999,2000, Konstantin Chuguev. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "cesbi.h" #if defined (ICONV_TO_UCS_CES_UTF_16) \ || defined (ICONV_FROM_UCS_CES_UTF_16) #include <_ansi.h> #include #include #include #include #include "../lib/local.h" #include "../lib/ucsconv.h" #include "../lib/endian.h" /* * On input UTF-16 converter interpret BOM and uses Big Endian byte order if BOM * is absent. UTF-16 converter outputs in System Endian and adds correspondent * BOM as first code. UTF-16LE and UTF-16BE converters ignore BOM on input and * don't output BOM. */ #define UTF16_UNDEFINED 0x00 #define UTF16_BIG_ENDIAN 0x01 #define UTF16_LITTLE_ENDIAN 0x02 #define UTF16_SYSTEM_ENDIAN 0x04 #define UTF16_BOM_WRITTEN 0x08 #define UTF16_BOM 0xFEFF #define UTF_16 "utf_16" #define UTF_16BE "utf_16be" #define UTF_16LE "utf_16le" static size_t utf_16_close ( void *data) { free(data); return 0; } #if defined (ICONV_FROM_UCS_CES_UTF_16) static void * utf_16_init_from_ucs ( const char *encoding) { int *data; if ((data = (int *)malloc (sizeof (int))) == NULL) return (void *)NULL; if (strcmp (encoding, UTF_16LE) == 0) *data = UTF16_LITTLE_ENDIAN; else if (strcmp (encoding, UTF_16BE) == 0) *data = UTF16_BIG_ENDIAN; else *data = UTF16_SYSTEM_ENDIAN; return (void *)data; } static size_t utf_16_convert_from_ucs (void *data, register ucs4_t in, unsigned char **outbuf, size_t *outbytesleft) { register ucs2_t *cp; register size_t bytes; register int *state; if (in > 0x0010FFFF || (in >= 0x0000D800 && in <= 0x0000DFFF) || in == 0x0000FFFF || in == 0x0000FFFE) return (size_t)ICONV_CES_INVALID_CHARACTER; state = (int *)data; bytes = (*state == UTF16_SYSTEM_ENDIAN) ? sizeof (ucs2_t) * 2 : sizeof (ucs2_t); if (in > 0x0000FFFF) bytes += sizeof (ucs2_t); if (*outbytesleft < bytes) return (size_t)ICONV_CES_NOSPACE; cp = (ucs2_t *)*outbuf; if (*state == UTF16_SYSTEM_ENDIAN) { *cp++ = UTF16_BOM; *state |= UTF16_BOM_WRITTEN; } if (in < 0x00010000) { switch (*state) { case UTF16_LITTLE_ENDIAN: *cp = ICONV_HTOLES ((ucs2_t)in); break; case UTF16_BIG_ENDIAN: *cp = ICONV_HTOBES ((ucs2_t)in); break; case (UTF16_SYSTEM_ENDIAN | UTF16_BOM_WRITTEN): *cp = (ucs2_t)in; break; } } else { ucs2_t w1, w2; /* Process surrogate pair */ in -= 0x00010000; w1 = ((ucs2_t)((in >> 10)) & 0x03FF) | 0xD800; w2 = (ucs2_t)(in & 0x000003FF) | 0xDC00; switch (*state) { case UTF16_LITTLE_ENDIAN: *cp++ = ICONV_HTOLES (w1); *cp = ICONV_HTOLES (w2); break; case UTF16_BIG_ENDIAN: *cp++ = ICONV_HTOBES (w1); *cp = ICONV_HTOBES (w2); break; case (UTF16_SYSTEM_ENDIAN | UTF16_BOM_WRITTEN): *cp++ = w1; *cp = w2; break; } } *outbuf += bytes; *outbytesleft -= bytes; return bytes; } #endif /* ICONV_FROM_UCS_CES_UTF_16 */ #if defined (ICONV_TO_UCS_CES_UTF_16) static void * utf_16_init_to_ucs ( const char *encoding) { int *data; if ((data = (int *)malloc (sizeof (int))) == NULL) return (void *)NULL; if (strcmp (encoding, UTF_16BE) == 0) *data = UTF16_BIG_ENDIAN; else if (strcmp (encoding, UTF_16LE) == 0) *data = UTF16_LITTLE_ENDIAN; else *data = UTF16_UNDEFINED; return (void *)data; } static ucs4_t utf_16_convert_to_ucs (void *data, const unsigned char **inbuf, size_t *inbytesleft) { register ucs2_t w1; register ucs2_t w2; register ucs2_t *cp; int *state; ucs4_t res; size_t bytes = sizeof (ucs2_t); (void) data; if (*inbytesleft < bytes) return (ucs4_t)ICONV_CES_BAD_SEQUENCE; state = (int *)data; cp = ((ucs2_t *)*inbuf); if (*state == UTF16_UNDEFINED) { if (*cp == ICONV_HTOLES(UTF16_BOM)) *state = UTF16_LITTLE_ENDIAN; else *state = UTF16_BIG_ENDIAN; if ( *cp == ICONV_HTOBES (UTF16_BOM) || *cp == ICONV_HTOLES (UTF16_BOM)) { if (*inbytesleft < (bytes += sizeof (ucs2_t))) return (ucs4_t)ICONV_CES_BAD_SEQUENCE; cp += 1; } } if (*state == UTF16_LITTLE_ENDIAN) w1 = ICONV_LETOHS (*cp); else w1 = ICONV_BETOHS (*cp); if (w1 < 0xD800 || w1 > 0xDFFF) { if (w1 == 0xFFFF || w1 == 0xFFFE) return (ucs4_t)ICONV_CES_INVALID_CHARACTER; res = (ucs4_t)w1; } else { /* Process surrogate pair */ if (*inbytesleft < (bytes += 2)) return (ucs4_t)ICONV_CES_BAD_SEQUENCE; if (w1 > 0xDBFF) /* Broken surrogate character */ return (ucs4_t)ICONV_CES_INVALID_CHARACTER; cp += 1; if (*state == UTF16_LITTLE_ENDIAN) w2 = ICONV_LETOHS (*cp); else w2 = ICONV_BETOHS (*cp); if (w2 < 0xDC00 || w2 > 0xDFFF) /* Broken surrogate character */ return (ucs4_t)ICONV_CES_INVALID_CHARACTER; res = (ucs4_t)(w2 & 0x03FF) | ((ucs4_t)(w1 & 0x03FF) << 10); res += 0x00010000; } *inbuf += bytes; *inbytesleft -= bytes; return res; } #endif /* ICONV_TO_UCS_CES_UTF_16 */ static int utf_16_get_mb_cur_max (void *data) { (void) data; return 6; } #if defined (ICONV_TO_UCS_CES_UTF_16) const iconv_to_ucs_ces_handlers_t _iconv_to_ucs_ces_handlers_utf_16 = { utf_16_init_to_ucs, utf_16_close, utf_16_get_mb_cur_max, NULL, NULL, NULL, utf_16_convert_to_ucs }; #endif #if defined (ICONV_FROM_UCS_CES_UTF_16) const iconv_from_ucs_ces_handlers_t _iconv_from_ucs_ces_handlers_utf_16 = { utf_16_init_from_ucs, utf_16_close, utf_16_get_mb_cur_max, NULL, NULL, NULL, utf_16_convert_from_ucs }; #endif #endif /* ICONV_TO_UCS_CES_UTF_16 || ICONV_FROM_UCS_CES_UTF_16 */ picolibc-1.7.4/newlib/libc/iconv/ces/utf-8.c000066400000000000000000000217131414576234500205160ustar00rootroot00000000000000/* * Copyright (c) 2003-2004, Artem B. Bityuckiy * Copyright (c) 1999,2000, Konstantin Chuguev. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "cesbi.h" #if defined (ICONV_TO_UCS_CES_UTF_8) \ || defined (ICONV_FROM_UCS_CES_UTF_8) #include <_ansi.h> #include #include "../lib/local.h" #include "../lib/ucsconv.h" #define UTF8_MB_CUR_MAX 6 /* * UTF-8 CES converter doesn't interpret BOM. Reject overlong sequences, * U'FFFF, U'FFFE codes, UTF-16 surrogate codes and all codes > 0x7FFFFFFF. */ #if defined (ICONV_FROM_UCS_CES_UTF_8) static size_t convert_from_ucs (void *data, register ucs4_t in, unsigned char **outbuf, size_t *outbytesleft) { register unsigned char *cp; register size_t bytes; (void) data; if ((in >= 0x0000D800 && in <= 0x0000DFFF) || in > 0x7FFFFFFF || in == 0x0000FFFF || in == 0x0000FFFE) return (size_t)ICONV_CES_INVALID_CHARACTER; if (in < 0x80) bytes = 1; else if (in < 0x800) bytes = 2; else if (in < 0x10000) bytes = 3; else if (in < 0x200000) bytes = 4; else if (in < 0x4000000) bytes = 5; else bytes = 6; if (*outbytesleft < bytes) return (size_t)ICONV_CES_NOSPACE; cp = *outbuf; switch (bytes) { case 1: *cp = (unsigned char)in; break; case 2: *cp++ = (unsigned char)((in >> 6) | 0x000000C0); *cp++ = (unsigned char)((in & 0x0000003F) | 0x00000080); break; case 3: *cp++ = (unsigned char)((in >> 12) | 0x000000E0); *cp++ = (unsigned char)(((in >> 6) & 0x0000003F) | 0x00000080); *cp++ = (unsigned char)((in & 0x0000003F) | 0x00000080); break; case 4: *cp++ = (unsigned char)((in >> 18) | 0x000000F0); *cp++ = (unsigned char)(((in >> 12) & 0x0000003F) | 0x00000080); *cp++ = (unsigned char)(((in >> 6) & 0x0000003F) | 0x00000080); *cp++ = (unsigned char)((in & 0x0000003F) | 0x00000080); break; case 5: *cp++ = (unsigned char)((in >> 24) | 0x000000F8); *cp++ = (unsigned char)(((in >> 18) & 0x0000003F) | 0x00000080); *cp++ = (unsigned char)(((in >> 12) & 0x0000003F) | 0x00000080); *cp++ = (unsigned char)(((in >> 6) & 0x0000003F) | 0x00000080); *cp++ = (unsigned char)((in & 0x0000003F) | 0x00000080); break; case 6: *cp++ = (unsigned char)((in >> 30) | 0x000000FC); *cp++ = (unsigned char)(((in >> 24) & 0x0000003F) | 0x00000080); *cp++ = (unsigned char)(((in >> 18) & 0x0000003F) | 0x00000080); *cp++ = (unsigned char)(((in >> 12) & 0x0000003F) | 0x00000080); *cp++ = (unsigned char)(((in >> 6) & 0x0000003F) | 0x00000080); *cp++ = (unsigned char)((in & 0x0000003F) | 0x00000080); break; } *outbytesleft -= bytes; *outbuf += bytes; return bytes; } #endif /* ICONV_FROM_UCS_CES_UTF_8 */ #if defined (ICONV_TO_UCS_CES_UTF_8) static ucs4_t convert_to_ucs (void *data, const unsigned char **inbuf, size_t *inbytesleft) { register const unsigned char *in = *inbuf; register size_t bytes; ucs4_t res; (void) data; if (in[0] >= 0xC0) { if (in[0] < 0xE0) { if (*inbytesleft < (bytes = 2)) return (ucs4_t)ICONV_CES_BAD_SEQUENCE; if ( ((in[0] & ~0x1F) == 0xC0) && ((in[1] & 0xC0) == 0x80)) res = ((ucs4_t)(in[0] & 0x1F) << 6) | ((ucs4_t)(in[1] & 0x3F)); else return (ucs4_t)ICONV_CES_INVALID_CHARACTER; if (res < 0x00000080) /* Overlong sequence */ return (ucs4_t)ICONV_CES_INVALID_CHARACTER; } else if (in[0] < 0xF0) { if (*inbytesleft < (bytes = 3)) return (ucs4_t)ICONV_CES_BAD_SEQUENCE; if ( ((in[0] & ~0x0F) == 0xE0) && ((in[1] & 0xC0) == 0x80) && ((in[2] & 0xC0) == 0x80)) res = ((ucs4_t)(in[0] & 0x0F) << 12) | ((ucs4_t)(in[1] & 0x3F) << 6) | ((ucs4_t)(in[2] & 0x3F)); else return (ucs4_t)ICONV_CES_INVALID_CHARACTER; if (res < 0x00000800) /* Overlong sequence */ return (ucs4_t)ICONV_CES_INVALID_CHARACTER; } else if (in[0] < 0xF8) { if (*inbytesleft < (bytes = 4)) return (ucs4_t)ICONV_CES_BAD_SEQUENCE; if ( ((in[0] & ~0x07) == 0xF0) && ((in[1] & 0xC0) == 0x80) && ((in[2] & 0xC0) == 0x80) && ((in[3] & 0xC0) == 0x80)) res = ((ucs4_t)(in[0] & 0x07) << 18) | ((ucs4_t)(in[1] & 0x3F) << 12) | ((ucs4_t)(in[2] & 0x3F) << 6) | ((ucs4_t)(in[3] & 0x3F)); else return (ucs4_t)ICONV_CES_INVALID_CHARACTER; if (res < 0x00010000) /* Overlong sequence */ return (ucs4_t)ICONV_CES_INVALID_CHARACTER; } else if (in[0] < 0xFC) { if (*inbytesleft < (bytes = 5)) return (ucs4_t)ICONV_CES_BAD_SEQUENCE; if ( ((in[0] & ~0x03) == 0xF8) && ((in[1] & 0xC0) == 0x80) && ((in[2] & 0xC0) == 0x80) && ((in[3] & 0xC0) == 0x80) && ((in[4] & 0xC0) == 0x80)) res = ((ucs4_t)(in[0] & 0x03) << 24) | ((ucs4_t)(in[1] & 0x3F) << 18) | ((ucs4_t)(in[2] & 0x3F) << 12) | ((ucs4_t)(in[3] & 0x3F) << 6) | ((ucs4_t)(in[4] & 0x3F)); else return (ucs4_t)ICONV_CES_INVALID_CHARACTER; if (res < 0x00200000) /* Overlong sequence */ return (ucs4_t)ICONV_CES_INVALID_CHARACTER; } else if (in[0] <= 0xFD) { if (*inbytesleft < (bytes = 6)) return (ucs4_t)ICONV_CES_BAD_SEQUENCE; if ( ((in[0] & ~0x01) == 0xFC) && ((in[1] & 0xC0) == 0x80) && ((in[2] & 0xC0) == 0x80) && ((in[3] & 0xC0) == 0x80) && ((in[4] & 0xC0) == 0x80) && ((in[5] & 0xC0) == 0x80)) res = ((ucs4_t)(in[0] & 0x1) << 30) | ((ucs4_t)(in[1] & 0x3F) << 24) | ((ucs4_t)(in[2] & 0x3F) << 18) | ((ucs4_t)(in[3] & 0x3F) << 12) | ((ucs4_t)(in[4] & 0x3F) << 6) | ((ucs4_t)(in[5] & 0x3F)); else return (ucs4_t)ICONV_CES_INVALID_CHARACTER; if (res < 0x04000000) /* Overlong sequence */ return (ucs4_t)ICONV_CES_INVALID_CHARACTER; } else return (ucs4_t)ICONV_CES_INVALID_CHARACTER; } else if (in[0] & 0x80) return (ucs4_t)ICONV_CES_INVALID_CHARACTER; else { res = (ucs4_t)in[0]; bytes = 1; } if ( (res >= 0x0000D800 && res <= 0x0000DFFF) || res > 0x7FFFFFFF || res == 0x0000FFFF || res == 0x0000FFFE) return (ucs4_t)ICONV_CES_INVALID_CHARACTER; *inbytesleft -= bytes; *inbuf += bytes; return res; } #endif /* ICONV_TO_UCS_CES_UTF_8 */ static int get_mb_cur_max (void *data) { (void) data; return UTF8_MB_CUR_MAX; } #if defined (ICONV_TO_UCS_CES_UTF_8) const iconv_to_ucs_ces_handlers_t _iconv_to_ucs_ces_handlers_utf_8 = { NULL, NULL, get_mb_cur_max, NULL, NULL, NULL, convert_to_ucs }; #endif #if defined (ICONV_FROM_UCS_CES_UTF_8) const iconv_from_ucs_ces_handlers_t _iconv_from_ucs_ces_handlers_utf_8 = { NULL, NULL, get_mb_cur_max, NULL, NULL, NULL, convert_from_ucs }; #endif #endif /* ICONV_TO_UCS_CES_UTF_8 || ICONV_FROM_UCS_CES_UTF_8 */ picolibc-1.7.4/newlib/libc/iconv/encoding.aliases000066400000000000000000000040721414576234500217650ustar00rootroot00000000000000# # This file was automatically generated. Don't edit. # big5 csbig5 big_five bigfive cn_big5 cp950 cp775 ibm775 cspc775baltic cp850 ibm850 850 cspc850multilingual cp852 ibm852 852 cspcp852 cp855 ibm855 855 csibm855 cp866 866 IBM866 CSIBM866 euc_jp eucjp euc_kr euckr euc_tw euctw iso_8859_1 iso8859_1 iso88591 iso_8859_1:1987 iso_ir_100 latin1 l1 ibm819 cp819 csisolatin1 iso_8859_10 iso_8859_10:1992 iso_ir_157 iso885910 latin6 l6 csisolatin6 iso8859_10 iso_8859_11 iso8859_11 iso885911 iso_8859_13 iso_8859_13:1998 iso8859_13 iso885913 iso_8859_14 iso_8859_14:1998 iso885914 iso8859_14 iso_8859_15 iso885915 iso_8859_15:1998 iso8859_15 iso_8859_2 iso8859_2 iso88592 iso_8859_2:1987 iso_ir_101 latin2 l2 csisolatin2 iso_8859_3 iso_8859_3:1988 iso_ir_109 iso8859_3 latin3 l3 csisolatin3 iso88593 iso_8859_4 iso8859_4 iso88594 iso_8859_4:1988 iso_ir_110 latin4 l4 csisolatin4 iso_8859_5 iso8859_5 iso88595 iso_8859_5:1988 iso_ir_144 cyrillic csisolatincyrillic iso_8859_6 iso_8859_6:1987 iso_ir_127 iso8859_6 ecma_114 asmo_708 arabic csisolatinarabic iso88596 iso_8859_7 iso_8859_7:1987 iso_ir_126 iso8859_7 elot_928 ecma_118 greek greek8 csisolatingreek iso88597 iso_8859_8 iso_8859_8:1988 iso_ir_138 iso8859_8 hebrew csisolatinhebrew iso88598 iso_8859_9 iso_8859_9:1989 iso_ir_148 iso8859_9 latin5 l5 csisolatin5 iso88599 iso_ir_111 ecma_cyrillic koi8_e koi8e csiso111ecmacyrillic koi8_r cskoi8r koi8r koi8 koi8_ru koi8ru koi8_u koi8u koi8_uni koi8uni ucs_2 ucs2 iso_10646_ucs_2 iso10646_ucs_2 iso_10646_ucs2 iso10646_ucs2 iso10646ucs2 csUnicode ucs_2_internal ucs2_internal ucs_2internal ucs2internal ucs_2be ucs2be ucs_2le ucs2le ucs_4 ucs4 iso_10646_ucs_4 iso10646_ucs_4 iso_10646_ucs4 iso10646_ucs4 iso10646ucs4 ucs_4_internal ucs4_internal ucs_4internal ucs4internal ucs_4be ucs4be ucs_4le ucs4le us_ascii ansi_x3.4_1968 ansi_x3.4_1986 iso_646.irv:1991 ascii iso646_us us ibm367 cp367 csascii utf_16 utf16 utf_16be utf16be utf_16le utf16le utf_8 utf8 win_1250 cp1250 win_1251 cp1251 win_1252 cp1252 win_1253 cp1253 win_1254 cp1254 win_1255 cp1255 win_1256 cp1256 win_1257 cp1257 win_1258 cp1258 picolibc-1.7.4/newlib/libc/iconv/iconv.tex000066400000000000000000001310451414576234500204750ustar00rootroot00000000000000@node Iconv @chapter Encoding conversions (@file{iconv.h}) This chapter describes the Newlib iconv library. The iconv functions declarations are in @file{iconv.h}. @menu * iconv:: Encoding conversion routines * Introduction to iconv:: Introduction to iconv and encodings * Supported encodings:: The list of currently supported encodings * iconv design decisions:: General iconv library design issues * iconv configuration:: iconv-related configure script options * Encoding names:: How encodings are named. * CCS tables:: CCS tables format and 'mktbl.pl' Perl script * CES converters:: CES converters description * The encodings description file:: The 'encoding.deps' file and 'mkdeps.pl' * How to add new encoding:: The steps to add new encoding support * The locale support interfaces:: Locale-related iconv interfaces * Contact:: The author contact @end menu @page @include iconv/iconv.def @page @node Introduction to iconv @section Introduction to iconv @findex encoding @findex character set @findex charset @findex CES @findex CCS @* The iconv library is intended to convert characters from one encoding to another. It implements iconv(), iconv_open() and iconv_close() calls, which are defined by the Single Unix Specification. @* In addition to these user-level interfaces, the iconv library also has several useful interfaces which are needed to support coding capabilities of the Newlib Locale infrastructure. Since Locale support also needs to convert various character sets to and from the @emph{wide characters set}, the iconv library shares it's capabilities with the Newlib Locale subsystem. Moreover, the iconv library supports several features which are only needed for the Locale infrastructure (for example, the MB_CUR_MAX value). @* The Newlib iconv library was created using concepts from another iconv library implemented by Konstantin Chuguev (ver 2.0). The Newlib iconv library was rewritten from scratch and contains a lot of improvements with respect to the original iconv library. @* Terms like @dfn{encoding} or @dfn{character set} aren't well defined and are often used with various meanings. The following are the definitions of terms which are used in this documentation as well as in the iconv library implementation: @itemize @bullet @item @dfn{encoding} - a machine representation of characters by means of bits; @item @dfn{Character Set} or @dfn{Charset} - just a collection of characters, i.e. the encoding is the machine representation of the character set; @item @dfn{CCS} (@dfn{Coded Character Set}) - a mapping from an character set to a set of integers @dfn{character codes}; @item @dfn{CES} (@dfn{Character Encoding Scheme}) - a mapping from a set of character codes to a sequence of bytes; @end itemize @* Users usually deal with encodings, for example, KOI8-R, Unicode, UTF-8, ASCII, etc. Encodings are formed by the following chain of steps: @enumerate @item User has a set of characters which are specific to his or her language (character set). @item Each character from this set is uniquely numbered, resulting in an CCS. @item Each number from the CCS is converted to a sequence of bits or bytes by means of a CES and form some encoding. Thus, CES may be considered as a function of CCS which produces some encoding. Note, that CES may be applied to more than one CCS. @end enumerate @* Thus, an encoding may be considered as one or more CCS + CES. @* Sometimes, there is no CES and in such cases encoding is equivalent to CCS, e.g. KOI8-R or ASCII. @* An example of a more complicated encoding is UTF-8 which is the UCS (or Unicode) CCS plus the UTF-8 CES. @* The following is a brief list of iconv library features: @itemize @item Generic architecture; @item Locale infrastructure support; @item Automatic generation of the program code which handles CES/CCS/Encoding/Names/Aliases dependencies; @item The ability to choose size- or speed-optimazed configuration; @item The ability to exclude a lot of unneeded code and data from the linking step. @end itemize @page @node Supported encodings @section Supported encodings @findex big5 @findex cp775 @findex cp850 @findex cp852 @findex cp855 @findex cp866 @findex euc_jp @findex euc_kr @findex euc_tw @findex iso_8859_1 @findex iso_8859_10 @findex iso_8859_11 @findex iso_8859_13 @findex iso_8859_14 @findex iso_8859_15 @findex iso_8859_2 @findex iso_8859_3 @findex iso_8859_4 @findex iso_8859_5 @findex iso_8859_6 @findex iso_8859_7 @findex iso_8859_8 @findex iso_8859_9 @findex iso_ir_111 @findex koi8_r @findex koi8_ru @findex koi8_u @findex koi8_uni @findex ucs_2 @findex ucs_2_internal @findex ucs_2be @findex ucs_2le @findex ucs_4 @findex ucs_4_internal @findex ucs_4be @findex ucs_4le @findex us_ascii @findex utf_16 @findex utf_16be @findex utf_16le @findex utf_8 @findex win_1250 @findex win_1251 @findex win_1252 @findex win_1253 @findex win_1254 @findex win_1255 @findex win_1256 @findex win_1257 @findex win_1258 @* The following is the list of currently supported encodings. The first column corresponds to the encoding name, the second column is the list of aliases, the third column is its CES and CCS components names, and the fourth column is a short description. @multitable @columnfractions .20 .26 .24 .30 @item Name @tab Aliases @tab CES/CCS @tab Short description @item @tab @tab @tab @item big5 @tab csbig5, big_five, bigfive, cn_big5, cp950 @tab table_pcs / big5, us_ascii @tab The encoding for the Traditional Chinese. @item cp775 @tab ibm775, cspc775baltic @tab table / cp775 @tab The updated version of CP 437 that supports the balitic languages. @item cp850 @tab ibm850, 850, cspc850multilingual @tab table / cp850 @tab IBM 850 - the updated version of CP 437 where several Latin 1 characters have been added instead of some less-often used characters like the line-drawing and the greek ones. @item cp852 @tab ibm852, 852, cspcp852 @tab @tab IBM 852 - the updated version of CP 437 where several Latin 2 characters have been added instead of some less-often used characters like the line-drawing and the greek ones. @item cp855 @tab ibm855, 855, csibm855 @tab table / cp855 @tab IBM 855 - the updated version of CP 437 that supports Cyrillic. @item cp866 @tab 866, IBM866, CSIBM866 @tab table / cp866 @tab IBM 866 - the updated version of CP 855 which follows more the logical Russian alphabet ordering of the alternative variant that is preferred by many Russian users. @item euc_jp @tab eucjp @tab euc / jis_x0208_1990, jis_x0201_1976, jis_x0212_1990 @tab EUC-JP - The EUC for Japanese. @item euc_kr @tab euckr @tab euc / ksx1001 @tab EUC-KR - The EUC for Korean. @item euc_tw @tab euctw @tab euc / cns11643_plane1, cns11643_plane2, cns11643_plane14 @tab EUC-TW - The EUC for Traditional Chinese. @item iso_8859_1 @tab iso8859_1, iso88591, iso_8859_1:1987, iso_ir_100, latin1, l1, ibm819, cp819, csisolatin1 @tab table / iso_8859_1 @tab ISO 8859-1:1987 - Latin 1, West European. @item iso_8859_10 @tab iso_8859_10:1992, iso_ir_157, iso885910, latin6, l6, csisolatin6, iso8859_10 @tab table / iso_8859_10 @tab ISO 8859-10:1992 - Latin 6, Nordic. @item iso_8859_11 @tab iso8859_11, iso885911 @tab table / iso_8859_11 @tab ISO 8859-11 - Thai. @item iso_8859_13 @tab iso_8859_13:1998, iso8859_13, iso885913 @tab table / iso_8859_13 @tab ISO 8859-13:1998 - Latin 7, Baltic Rim. @item iso_8859_14 @tab iso_8859_14:1998, iso885914, iso8859_14 @tab table / iso_8859_14 @tab ISO 8859-14:1998 - Latin 8, Celtic. @item iso_8859_15 @tab iso885915, iso_8859_15:1998, iso8859_15, @tab table / iso_8859_15 @tab ISO 8859-15:1998 - Latin 9, West Europe, successor of Latin 1. @item iso_8859_2 @tab iso8859_2, iso88592, iso_8859_2:1987, iso_ir_101, latin2, l2, csisolatin2 @tab table / iso_8859_2 @tab ISO 8859-2:1987 - Latin 2, East European. @item iso_8859_3 @tab iso_8859_3:1988, iso_ir_109, iso8859_3, latin3, l3, csisolatin3, iso88593 @tab table / iso_8859_3 @tab ISO 8859-3:1988 - Latin 3, South European. @item iso_8859_4 @tab iso8859_4, iso88594, iso_8859_4:1988, iso_ir_110, latin4, l4, csisolatin4 @tab table / iso_8859_4 @tab ISO 8859-4:1988 - Latin 4, North European. @item iso_8859_5 @tab iso8859_5, iso88595, iso_8859_5:1988, iso_ir_144, cyrillic, csisolatincyrillic @tab table / iso_8859_5 @tab ISO 8859-5:1988 - Cyrillic. @item iso_8859_6 @tab iso_8859_6:1987, iso_ir_127, iso8859_6, ecma_114, asmo_708, arabic, csisolatinarabic, iso88596 @tab table / iso_8859_6 @tab ISO i8859-6:1987 - Arabic. @item iso_8859_7 @tab iso_8859_7:1987, iso_ir_126, iso8859_7, elot_928, ecma_118, greek, greek8, csisolatingreek, iso88597 @tab table / iso_8859_7 @tab ISO 8859-7:1987 - Greek. @item iso_8859_8 @tab iso_8859_8:1988, iso_ir_138, iso8859_8, hebrew, csisolatinhebrew, iso88598 @tab table / iso_8859_8 @tab ISO 8859-8:1988 - Hebrew. @item iso_8859_9 @tab iso_8859_9:1989, iso_ir_148, iso8859_9, latin5, l5, csisolatin5, iso88599 @tab table / iso_8859_9 @tab ISO 8859-9:1989 - Latin 5, Turkish. @item iso_ir_111 @tab ecma_cyrillic, koi8_e, koi8e, csiso111ecmacyrillic @tab table / iso_ir_111 @tab ISO IR 111/ECMA Cyrillic. @item koi8_r @tab cskoi8r, koi8r, koi8 @tab table / koi8_r @tab RFC 1489 Cyrillic. @item koi8_ru @tab koi8ru @tab table / koi8_ru @tab The obsolete Ukrainian. @item koi8_u @tab koi8u @tab table / koi8_u @tab RFC 2319 Ukrainian. @item koi8_uni @tab koi8uni @tab table / koi8_uni @tab KOI8 Unified. @item ucs_2 @tab ucs2, iso_10646_ucs_2, iso10646_ucs_2, iso_10646_ucs2, iso10646_ucs2, iso10646ucs2, csUnicode @tab ucs_2 / (UCS) @tab ISO-10646-UCS-2. Big Endian, NBSP is always interpreted as NBSP (BOM isn't supported). @item ucs_2_internal @tab ucs2_internal, ucs_2internal, ucs2internal @tab ucs_2_internal / (UCS) @tab ISO-10646-UCS-2 in system byte order. NBSP is always interpreted as NBSP (BOM isn't supported). @item ucs_2be @tab ucs2be @tab ucs_2 / (UCS) @tab Big Endian version of ISO-10646-UCS-2 (in fact, equivalent to ucs_2). Big Endian, NBSP is always interpreted as NBSP (BOM isn't supported). @item ucs_2le @tab ucs2le @tab ucs_2 / (UCS) @tab Little Endian version of ISO-10646-UCS-2. Little Endian, NBSP is always interpreted as NBSP (BOM isn't supported). @item ucs_4 @tab ucs4, iso_10646_ucs_4, iso10646_ucs_4, iso_10646_ucs4, iso10646_ucs4, iso10646ucs4 @tab ucs_4 / (UCS) @tab ISO-10646-UCS-4. Big Endian, NBSP is always interpreted as NBSP (BOM isn't supported). @item ucs_4_internal @tab ucs4_internal, ucs_4internal, ucs4internal @tab ucs_4_internal / (UCS) @tab ISO-10646-UCS-4 in system byte order. NBSP is always interpreted as NBSP (BOM isn't supported). @item ucs_4be @tab ucs4be @tab ucs_4 / (UCS) @tab Big Endian version of ISO-10646-UCS-4 (in fact, equivalent to ucs_4). Big Endian, NBSP is always interpreted as NBSP (BOM isn't supported). @item ucs_4le @tab ucs4le @tab ucs_4 / (UCS) @tab Little Endian version of ISO-10646-UCS-4. Little Endian, NBSP is always interpreted as NBSP (BOM isn't supported). @item us_ascii @tab ansi_x3.4_1968, ansi_x3.4_1986, iso_646.irv:1991, ascii, iso646_us, us, ibm367, cp367, csascii @tab us_ascii / (ASCII) @tab 7-bit ASCII. @item utf_16 @tab utf16 @tab utf_16 / (UCS) @tab RFC 2781 UTF-16. The very first NBSP code in stream is interpreted as BOM. @item utf_16be @tab utf16be @tab utf_16 / (UCS) @tab Big Endian version of RFC 2781 UTF-16. NBSP is always interpreted as NBSP (BOM isn't supported). @item utf_16le @tab utf16le @tab utf_16 / (UCS) @tab Little Endian version of RFC 2781 UTF-16. NBSP is always interpreted as NBSP (BOM isn't supported). @item utf_8 @tab utf8 @tab utf_8 / (UCS) @tab RFC 3629 UTF-8. @item win_1250 @tab cp1250 @tab @tab Win-1250 Croatian. @item win_1251 @tab cp1251 @tab table / win_1251 @tab Win-1251 - Cyrillic. @item win_1252 @tab cp1252 @tab table / win_1252 @tab Win-1252 - Latin 1. @item win_1253 @tab cp1253 @tab table / win_1253 @tab Win-1253 - Greek. @item win_1254 @tab cp1254 @tab table / win_1254 @tab Win-1254 - Turkish. @item win_1255 @tab cp1255 @tab table / win_1255 @tab Win-1255 - Hebrew. @item win_1256 @tab cp1256 @tab table / win_1256 @tab Win-1256 - Arabic. @item win_1257 @tab cp1257 @tab table / win_1257 @tab Win-1257 - Baltic. @item win_1258 @tab cp1258 @tab table / win_1258 @tab Win-1258 - Vietnamese7 that supports Cyrillic. @end multitable @page @node iconv design decisions @section iconv design decisions @findex CCS table @findex CES converter @findex Speed-optimized tables @findex Size-optimized tables @* The first iconv library design issue arises when considering the following two design approaches: @enumerate @item Have modules which implement conversion from the encoding A to the encoding B and vice versa i.e., one conversion module relates to any two encodings. @item Have modules which implement conversion from the encoding A to the fixed encoding C and vice versa i.e., one conversion module relates to any one encoding A and one fixed encoding C. In this case, to convert from the encoding A to the encoding B, two modules are needed (in order to convert from A to C and then from C to B). @end enumerate @* It's obvious, that we have tradeoff between commonality/flexibility and efficiency: the first method is more efficient since it converts directly; however, it isn't so flexible since for each encoding pair a distinct module is needed. @* The Newlib iconv model uses the second method and always converts through the 32-bit UCS but its design also allows one to write specialized conversion modules if the conversion speed is critical. @* The second design issue is how to break down (decompose) encodings. The Newlib iconv library uses the fact that any encoding may be considered as one or more CCS plus a CES. It also decomposes its conversion modules on @dfn{CES converter} plus one or more @dfn{CCS tables}. CCS tables map CCS to UCS and vice versa; the CES converters map CCS to the encoding and vice versa. @* As the example, let's consider the conversion from the big5 encoding to the EUC-TW encoding. The big5 encoding may be decomposed to the ASCII and BIG5 CCS-es plus the BIG5 CES. EUC-TW may be decomposed on the CNS11643_PLANE1, CNS11643_PLANE2, and CNS11643_PLANE14 CCS-es plus the EUC CES. @* The euc_jp -> big5 conversion is performed as follows: @enumerate @item The EUC converter performs the EUC-TW encoding to the corresponding CCS-es transformation (CNS11643_PLANE1, CNS11643_PLANE2 and CNS11643_PLANE14 CCS-es); @item The obtained CCS codes are transformed to the UCS codes using the CNS11643_PLANE1, CNS11643_PLANE2 and CNS11643_PLANE14 CCS tables; @item The resulting UCS codes are transformed to the ASCII and BIG5 codes using the corresponding CCS tables; @item The obtained CCS codes are transformed to the big5 encoding using the corresponding CES converter. @end enumerate @* Analogously, the backward conversion is performed as follows: @enumerate @item The BIG5 converter performs the big5 encoding to the corresponding CCS-es transformation (the ASCII and BIG5 CCS-es); @item The obtained CCS codes are transformed to the UCS codes using the ASCII and BIG5 CCS tables; @item The resulting UCS codes are transformed to the ASCII and BIG5 codes using the corresponding CCS tables; @item The obtained CCS codes are transformed to the EUC-TW encoding using the corresponding CES converter. @end enumerate @* Note, the above is just an example and real names (which are implemented in the Newlib iconv) of the CES converters and the CCS tables are slightly different. @* The third design issue also relates to flexibility. Obviously, it isn't desirable to always link all the CES converters and the CCS tables to the library but instead, we want to be able to load the needed converters and tables dynamically on demand. This isn't a problem on "big" machines such as a PC, but it may be very problematical within "small" embedded systems. @* Since the CCS tables are just data, it is possible to load them dynamically from external files. The CES converters, on the other hand are algorithms with some code so a dynamic library loading capability is required. @* Apart from possible restrictions applied by embedded systems (small RAM for example), Newlib itself has no dynamic library support and therefore, all the CES converters which will ever be used must be linked into the library. However, loading of the dynamic CCS tables is possible and is implemented in the Newlib iconv library. It may be enabled via the Newlib configure script options. @* The next design issue is fine-tuning the iconv library configuration. One important ability is for iconv to not link all it's converters and tables (if dynamic loading is not enabled) but instead, enable only those encodings which are specified at configuration time (see the section about the configure script options). @* In addition, the Newlib iconv library configure options distinguish between conversion directions. This means that not only are supported encodings selectable, the conversion direction is as well. For example, if user wants the configuration which allows conversions from UTF-8 to UTF-16 and doesn't plan using the "UTF-16 to UTF-8" conversions, he or she can enable only this conversion direction (i.e., no "UTF-16 -> UTF-8"-related code will be included) thus, saving some memory (note, that such technique allows to exclude one half of a CCS table from linking which may be big enough). @* One more design aspect are the speed- and size- optimized tables. Users can select between them using configure script options. The speed-optimized CCS tables are the same as the size-optimized ones in case of 8-bit CCS (e.g.m KOI8-R), but for 16-bit CCS-es the size-optimized CCS tables may be 1.5 to 2 times less then the speed-optimized ones. On the other hand, conversion with speed tables is several times faster. @* Its worth to stress that the new encoding support can't be dynamically added into an already compiled Newlib library, even if it needs only an additional CCS table and iconv is configured to use the external files with CCS tables (this isn't the fundamental restriction and the possibility to add new Table-based encoding support dynamically, by means of just adding new .cct file, may be easily added). @* Theoretically, the compiled-in CCS tables should be more appropriate for embedded systems than dynamically loaded CCS tables. This is because the compiled-in tables are read-only and can be placed in ROM whereas dynamic loading requires RAM. Moreover, in the current iconv implementation, a distinct copy of the dynamic CCS file is loaded for each opened iconv descriptor even in case of the same encoding. This means, for example, that if two iconv descriptors for "KOI8-R -> UCS-4BE" and "KOI8-R -> UTF-16BE" are opened, two copies of koi8-r .cct file will be loaded (actually, iconv loads only the needed part of these files). On the other hand, in the case of compiled-in CCS tables, there will always be only one copy. @page @node iconv configuration @section iconv configuration @findex iconv configuration @findex --enable-newlib-iconv-encodings @findex --enable-newlib-iconv-from-encodings @findex --enable-newlib-iconv-to-encodings @findex --enable-newlib-iconv-external-ccs @findex NLSPATH @* To enable an encoding, the @emph{--enable-newlib-iconv-encodings} configure script option should be used. This option accepts a comma-separated list of @emph{encodings} that should be enabled. The option enables each encoding in both ("to" and "from") directions. @* The @option{--enable-newlib-iconv-from-encodings} configure script option enables "from" support for each encoding that was passed to it. @* The @option{--enable-newlib-iconv-to-encodings} configure script option enables "to" support for each encoding that was passed to it. @* Example: if user plans only the "KOI8-R -> UTF-8", "UTF-8 -> ISO-8859-5" and "KOI8-R -> UCS-2" conversions, the most optimal way (minimal iconv code and data will be linked) is to configure Newlib with the following options: @* @code{--enable-newlib-iconv-encodings=UTF-8 --enable-newlib-iconv-from-encodings=KOI8-R --enable-newlib-iconv-to-encodings=UCS-2,ISO-8859-5} @* which is the same as @* @code{--enable-newlib-iconv-from-encodings=KOI8-R,UTF-8 --enable-newlib-iconv-to-encodings=UCS-2,ISO-8859-5,UTF-8} @* User may also just use the @* @code{--enable-newlib-iconv-encodings=KOI8-R,ISO-8859-5,UTF-8,UCS-2} @* configure script option, but it isn't so optimal since there will be some unneeded data and code. @* The @option{--enable-newlib-iconv-external-ccs} option enables iconv's capabilities to work with the external CCS files. @* The @option{--enable-target-optspace} Newlib configure script option also affects the iconv library. If this option is present, the library uses the size optimized CCS tables. This means, that only the size-optimized CCS tables will be linked or, if the @option{--enable-newlib-iconv-external-ccs} configure script option was used, the iconv library will load the size-optimized tables. If the @option{--enable-target-optspace}configure script option is disabled, the speed-optimized CCS tables are used. @* Note: .cct files are searched by iconv_open in the $NLSPATH/iconv_data/ directory. Thus, the NLSPATH environment variable should be set. @page @node Encoding names @section Encoding names @findex encoding name @findex encoding alias @findex normalized name @* Each encoding has one @dfn{name} and a number of @dfn{aliases}. When user works with the iconv library (i.e., when the @code{iconv_open} call is used) both name or aliases may be used. The same is when encoding names are used in configure script options. @* Names and aliases may be specified in any case (small or capital letters) and the @kbd{-} symbol is equivalent to the @kbd{_} symbol. @* Internally the Newlib iconv library always converts aliases to names. It also converts names and aliases in the @dfn{normalized} form which means that all capital letters are converted to small letters and the @kbd{-} symbols are converted to @kbd{_} symbols. @page @node CCS tables @section CCS tables @findex Size-optimized CCS table @findex Speed-optimized CCS table @findex mktbl.pl Perl script @findex .cct files @findex The CCT tables source files @findex CCS source files @* The iconv library stores files with CCS tables in the the @emph{ccs/} subdirectory. The CCS tables for any CCS may be kept in two forms - in the binary form (@dfn{.cct files}, see the @emph{ccs/binary/} subdirectory) and in form of compilable .c source files. The .cct files are only used when the @option{--enable-newlib-iconv-external-ccs} configure script option is enabled. The .c files are linked to the Newlib library if the corresponding encoding is enabled. @* As stated earlier, the Newlib iconv library performs all conversions through the 32-bit UCS, but the codes which are used in most CCS-es, fit into the first 16-bit subset of the 32-bit UCS set. Thus, in order to make the CCS tables more compact, the 16-bit UCS-2 is used instead of the 32-bit UCS-4. @* CCS tables may be 8- or 16-bit wide. 8-bit CCS tables map 8-bit CCS to 16-bit UCS-2 and vice versa while 16-bit CCS tables map 16-bit CCS to 16-bit UCS-2 and vice versa. 8-bit tables are small (in size) while 16-bit tables may be big enough. Because of this, 16-bit CCS tables may be either speed- or size-optimized. Size-optimized CCS tables are smaller then speed-optimized ones, but the conversion process is slower if the size-optimized CCS tables are used. 8-bit CCS tables have only size-optimized variant. Each CCS table (both speed- and size-optimized) consists of @dfn{from_ucs} and @dfn{to_ucs} subtables. "from_ucs" subtable maps UCS-2 codes to CCS codes, while "to_ucs" subtable maps CCS codes to UCS-2 codes. @* Almost all 16-bit CCS tables contain less then 0xFFFF codes and a lot of gaps exist. @subsection Speed-optimized tables format @* In case of 8-bit speed-optimized CCS tables the "to_ucs" subtables format is trivial - it is just the array of 256 16-bit UCS codes. Therefore, an UCS-2 code @emph{Y} corresponding to a @emph{X} CCS code is calculates as @emph{Y = to_ucs[X]}. @* Obviously, the simplest way to create the "from_ucs" table or the 16-bit "to_ucs" table is to use the huge 16-bit array like in case of the 8-bit "to_ucs" table. But almost all the 16-bit CCS tables contain less then 0xFFFF code maps and this fact may be exploited to reduce the size of the CCS tables. @* In this chapter the "UCS-2 -> CCS" 8-bit CCS table format is described. The 16-bit "CCS -> UCS-2" CCS table format is the same, except the mapping direction and the CCS bits number. @* In case of the 8-bit speed-optimized table the "from_ucs" subtable corresponds the "from_ucs" array and has the following layout: @* from_ucs array: @* ------------------------------------- @* 0xFF mapping (2 bytes) (only for 8-bit table). @* ------------------------------------- @* Heading block @* ------------------------------------- @* Block 1 @* ------------------------------------- @* Block 2 @* ------------------------------------- @* ... @* ------------------------------------- @* Block N @* ------------------------------------- @* The 0x0000-0xFFFF 16-bit code range is divided to 256 code subranges. Each subrange is represented by an 256-element @dfn{block} (256 1-byte elements or 256 2-byte element in case of 16-bit CCS table) with elements which are equivalent to the CCS codes of this subrange. If the "UCS-2 -> CCS" mapping has big enough gaps, some blocks will be absent and there will be less then 256 blocks. @* Any element number @emph{m} of @dfn{the heading block} (which contains 256 2-byte elements) corresponds to the @emph{m}-th 256-element subrange. If the subrange contains some codes, the value of the @emph{m}-th element of the heading block contains the offset of the corresponding block in the "from_ucs" array. If there is no codes in the subrange, the heading block element contains 0xFFFF. @* If there are some gaps in a block, the corresponding block elements have the 0xFF value. If there is an 0xFF code present in the CCS, it's mapping is defined in the first 2-byte element of the "from_ucs" array. @* Having such a table format, the algorithm of searching the CCS code @emph{X} which corresponds to the UCS-2 code @emph{Y} is as follows. @* @enumerate @item If @emph{Y} is equivalent to the value of the first 2-byte element of the "from_ucs" array, @emph{X} is 0xFF. Else, continue to search. @item Calculate the block number: @emph{BlkN = (Y & 0xFF00) >> 8}. @item If the heading block element with number @emph{BlkN} is 0xFFFF, there is no corresponding CCS code (error, wrong input data). Else, fetch the "flom_ucs" array index of the @emph{BlkN}-th block. @item Calculate the offset of the @emph{X} code in its block: @emph{Xindex = Y & 0xFF} @item If the @emph{Xindex}-th element of the block (which is equivalent to @emph{from_ucs[BlkN+Xindex]}) value is 0xFF, there is no corresponding CCS code (error, wrong input data). Else, @emph{X = from_ucs[BlkN+Xindex]}. @end enumerate @subsection Size-optimized tables format @* As it is stated above, size-optimized tables exist only for 16-bit CCS-es. This is because there is too small difference between the speed-optimized and the size-optimized table sizes in case of 8-bit CCS-es. @* Formats of the "to_ucs" and "from_ucs" subtables are equivalent in case of size-optimized tables. This sections describes the format of the "UCS-2 -> CCS" size-optimized CCS table. The format of "CCS -> UCS-2" table is the same. The idea of the size-optimized tables is to split the UCS-2 codes ("from" codes) on @dfn{ranges} (@dfn{range} is a number of consecutive UCS-2 codes). Then CCS codes ("to" codes) are stored only for the codes from these ranges. Distinct "from" codes, which have no range (@dfn{unranged codes}, are stored together with the corresponding "to" codes. @* The following is the layout of the size-optimized table array: @* size_arr array: @* ------------------------------------- @* Ranges number (2 bytes) @* ------------------------------------- @* Unranged codes number (2 bytes) @* ------------------------------------- @* Unranged codes array index (2 bytes) @* ------------------------------------- @* Ranges indexes (triads) @* ------------------------------------- @* Ranges @* ------------------------------------- @* Unranged codes array @* ------------------------------------- @* The @dfn{Unranged codes array index} @emph{size_arr} section helps to find the offset of the needed range in the @emph{size_arr} and has the following format (triads): @* the first code in range, the last code in range, range offset. @* The array of these triads is sorted by the firs element, therefore it is possible to quickly find the needed range index. @* Each range has the corresponding sub-array containing the "to" codes. These sub-arrays are stored in the place marked as "Ranges" in the layout diagram. @* The "Unranged codes array" contains pairs ("from" code, "to" code") for each unranged code. The array of these pairs is sorted by "from" code values, therefore it is possible to find the needed pair quickly. @* Note, that each range requires 6 bytes to form its index. If, for example, there are two ranges (1 - 5 and 9 - 10), and one unranged code (7), 12 bytes are needed for two range indexes and 4 bytes for the unranged code (total 16). But it is better to join both ranges as 1 - 10 and mark codes 6 and 8 as absent. In this case, only 6 additional bytes for the range index and 4 bytes to mark codes 6 and 8 as absent are needed (total 10 bytes). This optimization is done in the size-optimized tables. Thus, ranges may contain small gaps. The absent codes in ranges are marked as 0xFFFF. @* Note, a pair of "from" codes is stored by means of unranged codes since the number of bytes which are needed to form the range is greater than the number of bytes to store two unranged codes (5 against 4). @* The algorithm of searching of the CCS code @emph{X} which corresponds to the UCS-2 code @emph{Y} (input) in the "UCS-2 -> CCS" size-optimized table is as follows. @* @enumerate @item Try to find the corresponding triad in the "Unranged codes array index". Since we are searching in the sorted array, we can do it quickly (divide by 2, compare, etc). @item If the triad is found, fetch the @emph{X} code from the corresponding range array. If it is 0xFFFF, return an error. @item If there is no corresponding triad, search the @emph{X} code among the sorted unranged codes. Return error, if noting was found. @end enumerate @subsection .cct ant .c CCS Table files @* The .c source files for 8-bit CCS tables have "to_ucs" and "from_ucs" speed-optimized tables. The .c source files for 16-bit CCS tables have "to_ucs_speed", "to_ucs_size", "from_ucs_speed" and "from_ucs_size" tables. @* When .c files are compiled and used, all the 16-bit and 32-bit values have the native endian format (Big Endian for the BE systems and Little Endian for the LE systems) since they are compile for the system before they are used. @* In case of .cct files, which are intended for dynamic CCS tables loading, the CCS tables are stored either in LE or BE format. Since the .cct files are generated by the 'mktbl.pl' Perl script, it is possible to choose the endianess of the tables. It is also possible to store two copies (both LE and BE) of the CCS tables in one .cct file. The default .cct files (which come with the Newlib sources) have both LE and BE CCS tables. The Newlib iconv library automatically chooses the needed CCS tables (with appropriate endianess). @* Note, the .cct files are only used when the @option{--enable-newlib-iconv-external-ccs} is used. @subsection The 'mktbl.pl' Perl script @* The 'mktbl.pl' script is intended to generate .cct and .c CCS table files from the @dfn{CCS source files}. @* The CCS source files are just text files which has one or more colons with CCS <-> UCS-2 codes mapping. To see an example of the CCS table source files see one of them using URL-s which will be given bellow. @* The following table describes where the source files for CCS table files provided by the Newlib distribution are located. @multitable @columnfractions .25 .75 @item Name @tab URL @item @tab @item big5 @tab http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT @item cns11643_plane1 cns11643_plane14 cns11643_plane2 @tab http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/CNS11643.TXT @item cp775 cp850 cp852 cp855 cp866 @tab http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/ @item iso_8859_1 iso_8859_2 iso_8859_3 iso_8859_4 iso_8859_5 iso_8859_6 iso_8859_7 iso_8859_8 iso_8859_9 iso_8859_10 iso_8859_11 iso_8859_13 iso_8859_14 iso_8859_15 @tab http://www.unicode.org/Public/MAPPINGS/ISO8859/ @item iso_ir_111 @tab http://crl.nmsu.edu/~mleisher/csets/ISOIR111.TXT @item jis_x0201_1976 jis_x0208_1990 jis_x0212_1990 @tab http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0201.TXT @item koi8_r @tab http://www.unicode.org/Public/MAPPINGS/VENDORS/MISC/KOI8-R.TXT @item koi8_ru @tab http://crl.nmsu.edu/~mleisher/csets/KOI8RU.TXT @item koi8_u @tab http://crl.nmsu.edu/~mleisher/csets/KOI8U.TXT @item koi8_uni @tab http://crl.nmsu.edu/~mleisher/csets/KOI8UNI.TXT @item ksx1001 @tab http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/KSX1001.TXT @item win_1250 win_1251 win_1252 win_1253 win_1254 win_1255 win_1256 win_1257 win_1258 @tab http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/ @end multitable The CCS source files aren't distributed with Newlib because of License restrictions in most Unicode.org's files. The following are 'mktbl.pl' options which were used to generate .cct files. Note, to generate CCS tables source files @option{-s} option should be added. @enumerate @item For the iso_8859_10.cct, iso_8859_13.cct, iso_8859_14.cct, iso_8859_15.cct, iso_8859_1.cct, iso_8859_2.cct, iso_8859_3.cct, iso_8859_4.cct, iso_8859_5.cct, iso_8859_6.cct, iso_8859_7.cct, iso_8859_8.cct, iso_8859_9.cct, iso_8859_11.cct, win_1250.cct, win_1252.cct, win_1254.cct win_1256.cct, win_1258.cct, win_1251.cct, win_1253.cct, win_1255.cct, win_1257.cct, koi8_r.cct, koi8_ru.cct, koi8_u.cct, koi8_uni.cct, iso_ir_111.cct, big5.cct, cp775.cct, cp850.cct, cp852.cct, cp855.cct, cp866.cct, cns11643.cct files, only the @option{-i } option were used. @item To generate the jis_x0208_1990.cct file, the @option{-i jis_x0208_1990.txt -x 2 -y 3} options were used. @item To generate the cns11643_plane1.cct file, the @option{-i cns11643.txt -p1 -N cns11643_plane1 -o cns11643_plane1.cct} options were used. @item To generate the cns11643_plane2.cct file, the @option{-i cns11643.txt -p2 -N cns11643_plane2 -o cns11643_plane2.cct} options were used. @item To generate the cns11643_plane14.cct file, the @option{-i cns11643.txt -p0xE -N cns11643_plane14 -o cns11643_plane14.cct} options were used. @end enumerate @* For more info about the 'mktbl.pl' options, see the 'mktbl.pl -h' output. @* It is assumed that CCS codes are 16 or less bits wide. If there are wider CCS codes in the CCS source file, the bits which are higher then 16 defines plane (see the cns11643.txt CCS source file). @* Sometimes, it is impossible to map some CCS codes to the 16-bit UCS if, for example, several different CCS codes are mapped to one UCS-2 code or one CCS code is mapped to the pair of UCS-2 codes. In these cases, such CCS codes (@dfn{lost codes}) aren't just rejected but instead, they are mapped to the default UCS-2 code (which is currently the @kbd{?} character's code). @page @node CES converters @section CES converters @findex PCS @* Similar to the CCS tables, CES converters are also split into "from UCS" and "to UCS" parts. Depending on the iconv library configuration, these parts are enabled or disabled. @* The following it the list of CES converters which are currently present in the Newlib iconv library. @itemize @bullet @item @emph{euc} - supports the @emph{euc_jp}, @emph{euc_kr} and @emph{euc_tw} encodings. The @emph{euc} CES converter uses the @emph{table} and the @emph{us_ascii} CES converters. @item @emph{table} - this CES converter corresponds to "null" and just performs tables-based conversion using 8- and 16-bit CCS tables. This converter is also used by any other CES converter which needs the CCS table-based conversions. The @emph{table} converter is also responsible for .cct files loading. @item @emph{table_pcs} - this is the wrapper over the @emph{table} converter which is intended for 16-bit encodings which also use the @dfn{Portable Character Set} (@dfn{PCS}) which is the same as the @emph{US-ASCII}. This means, that if the first byte the CCS code is in range of [0x00-0x7f], this is the 7-bit PCS code. Else, this is the 16-bit CCS code. Of course, the 16-bit codes must not contain bytes in the range of [0x00-0x7f]. The @emph{big5} encoding uses the @emph{table_pcs} CES converter and the @emph{table_pcs} CES converter depends on the @emph{table} CES converter. @item @emph{ucs_2} - intended for the @emph{ucs_2}, @emph{ucs_2be} and @emph{ucs_2le} encodings support. @item @emph{ucs_4} - intended for the @emph{ucs_4}, @emph{ucs_4be} and @emph{ucs_4le} encodings support. @item @emph{ucs_2_internal} - intended for the @emph{ucs_2_internal} encoding support. @item @emph{ucs_4_internal} - intended for the @emph{ucs_4_internal} encoding support. @item @emph{us_ascii} - intended for the @emph{us_ascii} encoding support. In principle, the most natural way to support the @emph{us_ascii} encoding is to define the @emph{us_ascii} CCS and use the @emph{table} CES converter. But for the optimization purposes, the specialized @emph{us_ascii} CES converter was created. @item @emph{utf_16} - intended for the @emph{utf_16}, @emph{utf_16be} and @emph{utf_16le} encodings support. @item @emph{utf_8} - intended for the @emph{utf_8} encoding support. @end itemize @page @node The encodings description file @section The encodings description file @findex encoding.deps description file @findex mkdeps.pl Perl script @* To simplify the process of adding new encodings support allowing to automatically generate a lot of "glue" files. @* There is the 'encoding.deps' file in the @emph{lib/} subdirectory which is used to describe encoding's properties. The 'mkdeps.pl' Perl script uses 'encoding.deps' to generates the "glue" files. @* The 'encoding.deps' file is composed of sections, each section consists of entries, each entry contains some encoding/CES/CCS description. @* The 'encoding.deps' file's syntax is very simple. Currently only two sections are defined: @emph{ENCODINGS} and @emph{CES_DEPENDENCIES}. @* Each @emph{ENCODINGS} section's entry describes one encoding and contains the following information. @itemize @bullet @item Encoding name (the @emph{ENCODING} field). The name should be unique and only one name is possible. @item The encoding's CES converter name (the @emph{CES} field). Only one CES converter is allowed. @item The whitespace-separated list of CCS table names which are used by the encoding (the @emph{CCS} field). @item The whitespace-separated list of aliases names (the @emph{ENCODING} field). @end itemize @* Note all names in the 'encoding.deps' file have to have the normalized form. @* Each @emph{CES_DEPENDENCIES} section's entry describes dependencies of one CES converted. For example, the @emph{euc} CES converter depends on the @emph{table} and the @emph{us_ascii} CES converter since the @emph{euc} CES converter uses them. This means, that both @emph{table} and @emph{us_ascii} CES converters should be linked if the @emph{euc} CES converter is enabled. @* The @emph{CES_DEPENDENCIES} section defines the following: @itemize @bullet @item the CES converter name for which the dependencies are defined in this entry (the @emph{CES} field); @item the whitespace-separated list of CES converters which are needed for this CES converter (the @emph{USED_CES} field). @end itemize @* The 'mktbl.pl' Perl script automatically solves the following tasks. @itemize @bullet @item User works with the iconv library in terms of encodings and doesn't know anything about CES converters and CCS tables. The script automatically generates code which enables all needed CES converters and CCS tables for all encodings, which were enabled by the user. @item The CES converters may have dependencies and the script automatically generates the code which handles these dependencies. @item The list of encoding's aliases is also automatically generated. @item The script uses a lot of macros in order to enable only the minimum set of code/data which is needed to support the requested encodings in the requested directions. @end itemize @* The 'mktbl.pl' Perl script is intended to interpret the 'encoding.deps' file and generates the following files. @itemize @bullet @item @emph{lib/encnames.h} - this header files contains macro definitions for all encoding names @item @emph{lib/aliasesbi.c} - the array of encoding names and aliases. The array is used to find the name of requested encoding by it's alias. @item @emph{ces/cesbi.c} - this file defines two arrays (@code{_iconv_from_ucs_ces} and @code{_iconv_to_ucs_ces}) which contain description of enabled "to UCS" and "from UCS" CES converters and the names of encodings which are supported by these CES converters. @item @emph{ces/cesbi.h} - this file contains the set of macros which defines the set of CES converters which should be enabled if only the set of enabled encodings is given (through macros defined in the @emph{newlib.h} file). Note, that one CES converter may handle several encodings. @item @emph{ces/cesdeps.h} - the CES converters dependencies are handled in this file. @item @emph{ccs/ccsdeps.h} - the array of linked-in CCS tables is defined here. @item @emph{ccs/ccsnames.h} - this header files contains macro definitions for all CCS names. @item @emph{encoding.aliases} - the list of supported encodings and their aliases which is intended for the Newlib configure scripts in order to handle the iconv-related configure script options. @end itemize @page @node How to add new encoding @section How to add new encoding @* At first, the new encoding should be broken down to CCS and CES. Then, the process of adding new encoding is split to the following activities. @enumerate @item Generate the .cct CCS file and the .c source file for the new encoding's CCS (if it isn't already present). To do this, the CCS source file should be had and the 'mktbl.pl' script should be used. @item Write the corresponding CES converter (if it isn't already present). Use the existing CES converters as an example. @item Add the corresponding entries to the 'encoding.deps' file and regenerate the autogenerated "glue" files using the 'mkdeps.pl' script. @item Don't forget to add entries to the newlib/newlib.hin file. @item Of course, the 'Makefile.am'-s should also be updated (if new files were added) and the 'Makefile.in'-s should be regenerated using the correct version of 'automake'. @item Don't forget to update the documentation (the list of supported encodings and CES converters). @end enumerate In case a new encoding doesn't fit to the CES/CCS decomposition model or it is desired to add the specialized (non UCS-based) conversion support, the Newlib iconv library code should be upgraded. @page @node The locale support interfaces @section The locale support interfaces @* The newlib iconv library also has some interface functions (besides the @code{iconv}, @code{iconv_open} and @code{iconv_close} interfaces) which are intended for the Locale subsystem. All the locale-related code is placed in the @emph{lib/iconvnls.c} file. @* The following is the description of the locale-related interfaces: @itemize @bullet @item @code{_iconv_nls_open} - opens two iconv descriptors for "CCS -> wchar_t" and "wchar_t -> CCS" conversions. The normalized CCS name is passed in the function parameters. The @emph{wchar_t} characters encoding is either ucs_2_internal or ucs_4_internal depending on size of @emph{wchar_t}. @item @code{_iconv_nls_conv} - the function is similar to the @code{iconv} functions, but if there is no character in the output encoding which corresponds to the character in the input encoding, the default conversion isn't performed (the @code{iconv} function sets such output characters to the @kbd{?} symbol and this is the behavior, which is specified in SUSv3). @item @code{_iconv_nls_get_state} - returns the current encoding's shift state (the @code{mbstate_t} object). @item @code{_iconv_nls_set_state} sets the current encoding's shift state (the @code{mbstate_t} object). @item @code{_iconv_nls_is_stateful} - checks whether the encoding is stateful or stateless. @item @code{_iconv_nls_get_mb_cur_max} - returns the maximum length (the maximum bytes number) of the encoding's characters. @end itemize @page @node Contact @section Contact @* The author of the original BSD iconv library (Alexander Chuguev) no longer supports that code. @* Any questions regarding the iconv library may be forwarded to Artem B. Bityuckiy (dedekind@@oktetlabs.ru or dedekind@@mail.ru) as well as to the public Newlib mailing list. picolibc-1.7.4/newlib/libc/iconv/lib/000077500000000000000000000000001414576234500173775ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/iconv/lib/aliasesbi.c000066400000000000000000000175761414576234500215170ustar00rootroot00000000000000/* * This file was automatically generated mkdeps.pl script. Don't edit. */ #include <_ansi.h> #include "encnames.h" const char _iconv_aliases[] = { #if defined (_ICONV_FROM_ENCODING_BIG5) \ || defined (_ICONV_TO_ENCODING_BIG5) ICONV_ENCODING_BIG5 " csbig5 big_five bigfive cn_big5 cp950\n" #endif #if defined (_ICONV_FROM_ENCODING_CP775) \ || defined (_ICONV_TO_ENCODING_CP775) ICONV_ENCODING_CP775 " ibm775 cspc775baltic\n" #endif #if defined (_ICONV_FROM_ENCODING_CP850) \ || defined (_ICONV_TO_ENCODING_CP850) ICONV_ENCODING_CP850 " ibm850 850 cspc850multilingual\n" #endif #if defined (_ICONV_FROM_ENCODING_CP852) \ || defined (_ICONV_TO_ENCODING_CP852) ICONV_ENCODING_CP852 " ibm852 852 cspcp852\n" #endif #if defined (_ICONV_FROM_ENCODING_CP855) \ || defined (_ICONV_TO_ENCODING_CP855) ICONV_ENCODING_CP855 " ibm855 855 csibm855\n" #endif #if defined (_ICONV_FROM_ENCODING_CP866) \ || defined (_ICONV_TO_ENCODING_CP866) ICONV_ENCODING_CP866 " 866 IBM866 CSIBM866\n" #endif #if defined (_ICONV_FROM_ENCODING_EUC_JP) \ || defined (_ICONV_TO_ENCODING_EUC_JP) ICONV_ENCODING_EUC_JP " eucjp\n" #endif #if defined (_ICONV_FROM_ENCODING_EUC_KR) \ || defined (_ICONV_TO_ENCODING_EUC_KR) ICONV_ENCODING_EUC_KR " euckr\n" #endif #if defined (_ICONV_FROM_ENCODING_EUC_TW) \ || defined (_ICONV_TO_ENCODING_EUC_TW) ICONV_ENCODING_EUC_TW " euctw\n" #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_1) \ || defined (_ICONV_TO_ENCODING_ISO_8859_1) ICONV_ENCODING_ISO_8859_1 " iso8859_1 iso88591 iso_8859_1:1987 iso_ir_100 latin1 l1 ibm819 cp819 csisolatin1\n" #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_10) \ || defined (_ICONV_TO_ENCODING_ISO_8859_10) ICONV_ENCODING_ISO_8859_10 " iso_8859_10:1992 iso_ir_157 iso885910 latin6 l6 csisolatin6 iso8859_10\n" #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_11) \ || defined (_ICONV_TO_ENCODING_ISO_8859_11) ICONV_ENCODING_ISO_8859_11 " iso8859_11 iso885911\n" #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_13) \ || defined (_ICONV_TO_ENCODING_ISO_8859_13) ICONV_ENCODING_ISO_8859_13 " iso_8859_13:1998 iso8859_13 iso885913\n" #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_14) \ || defined (_ICONV_TO_ENCODING_ISO_8859_14) ICONV_ENCODING_ISO_8859_14 " iso_8859_14:1998 iso885914 iso8859_14\n" #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_15) \ || defined (_ICONV_TO_ENCODING_ISO_8859_15) ICONV_ENCODING_ISO_8859_15 " iso885915 iso_8859_15:1998 iso8859_15 \n" #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_2) \ || defined (_ICONV_TO_ENCODING_ISO_8859_2) ICONV_ENCODING_ISO_8859_2 " iso8859_2 iso88592 iso_8859_2:1987 iso_ir_101 latin2 l2 csisolatin2\n" #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_3) \ || defined (_ICONV_TO_ENCODING_ISO_8859_3) ICONV_ENCODING_ISO_8859_3 " iso_8859_3:1988 iso_ir_109 iso8859_3 latin3 l3 csisolatin3 iso88593\n" #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_4) \ || defined (_ICONV_TO_ENCODING_ISO_8859_4) ICONV_ENCODING_ISO_8859_4 " iso8859_4 iso88594 iso_8859_4:1988 iso_ir_110 latin4 l4 csisolatin4\n" #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_5) \ || defined (_ICONV_TO_ENCODING_ISO_8859_5) ICONV_ENCODING_ISO_8859_5 " iso8859_5 iso88595 iso_8859_5:1988 iso_ir_144 cyrillic csisolatincyrillic\n" #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_6) \ || defined (_ICONV_TO_ENCODING_ISO_8859_6) ICONV_ENCODING_ISO_8859_6 " iso_8859_6:1987 iso_ir_127 iso8859_6 ecma_114 asmo_708 arabic csisolatinarabic iso88596\n" #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_7) \ || defined (_ICONV_TO_ENCODING_ISO_8859_7) ICONV_ENCODING_ISO_8859_7 " iso_8859_7:1987 iso_ir_126 iso8859_7 elot_928 ecma_118 greek greek8 csisolatingreek iso88597\n" #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_8) \ || defined (_ICONV_TO_ENCODING_ISO_8859_8) ICONV_ENCODING_ISO_8859_8 " iso_8859_8:1988 iso_ir_138 iso8859_8 hebrew csisolatinhebrew iso88598\n" #endif #if defined (_ICONV_FROM_ENCODING_ISO_8859_9) \ || defined (_ICONV_TO_ENCODING_ISO_8859_9) ICONV_ENCODING_ISO_8859_9 " iso_8859_9:1989 iso_ir_148 iso8859_9 latin5 l5 csisolatin5 iso88599\n" #endif #if defined (_ICONV_FROM_ENCODING_ISO_IR_111) \ || defined (_ICONV_TO_ENCODING_ISO_IR_111) ICONV_ENCODING_ISO_IR_111 " ecma_cyrillic koi8_e koi8e csiso111ecmacyrillic\n" #endif #if defined (_ICONV_FROM_ENCODING_KOI8_R) \ || defined (_ICONV_TO_ENCODING_KOI8_R) ICONV_ENCODING_KOI8_R " cskoi8r koi8r koi8\n" #endif #if defined (_ICONV_FROM_ENCODING_KOI8_RU) \ || defined (_ICONV_TO_ENCODING_KOI8_RU) ICONV_ENCODING_KOI8_RU " koi8ru\n" #endif #if defined (_ICONV_FROM_ENCODING_KOI8_U) \ || defined (_ICONV_TO_ENCODING_KOI8_U) ICONV_ENCODING_KOI8_U " koi8u\n" #endif #if defined (_ICONV_FROM_ENCODING_KOI8_UNI) \ || defined (_ICONV_TO_ENCODING_KOI8_UNI) ICONV_ENCODING_KOI8_UNI " koi8uni\n" #endif #if defined (_ICONV_FROM_ENCODING_UCS_2) \ || defined (_ICONV_TO_ENCODING_UCS_2) ICONV_ENCODING_UCS_2 " ucs2 iso_10646_ucs_2 iso10646_ucs_2 iso_10646_ucs2 iso10646_ucs2 iso10646ucs2 csUnicode\n" #endif #if defined (_ICONV_FROM_ENCODING_UCS_2_INTERNAL) \ || defined (_ICONV_TO_ENCODING_UCS_2_INTERNAL) ICONV_ENCODING_UCS_2_INTERNAL " ucs2_internal ucs_2internal ucs2internal\n" #endif #if defined (_ICONV_FROM_ENCODING_UCS_2BE) \ || defined (_ICONV_TO_ENCODING_UCS_2BE) ICONV_ENCODING_UCS_2BE " ucs2be\n" #endif #if defined (_ICONV_FROM_ENCODING_UCS_2LE) \ || defined (_ICONV_TO_ENCODING_UCS_2LE) ICONV_ENCODING_UCS_2LE " ucs2le\n" #endif #if defined (_ICONV_FROM_ENCODING_UCS_4) \ || defined (_ICONV_TO_ENCODING_UCS_4) ICONV_ENCODING_UCS_4 " ucs4 iso_10646_ucs_4 iso10646_ucs_4 iso_10646_ucs4 iso10646_ucs4 iso10646ucs4\n" #endif #if defined (_ICONV_FROM_ENCODING_UCS_4_INTERNAL) \ || defined (_ICONV_TO_ENCODING_UCS_4_INTERNAL) ICONV_ENCODING_UCS_4_INTERNAL " ucs4_internal ucs_4internal ucs4internal\n" #endif #if defined (_ICONV_FROM_ENCODING_UCS_4BE) \ || defined (_ICONV_TO_ENCODING_UCS_4BE) ICONV_ENCODING_UCS_4BE " ucs4be\n" #endif #if defined (_ICONV_FROM_ENCODING_UCS_4LE) \ || defined (_ICONV_TO_ENCODING_UCS_4LE) ICONV_ENCODING_UCS_4LE " ucs4le\n" #endif #if defined (_ICONV_FROM_ENCODING_US_ASCII) \ || defined (_ICONV_TO_ENCODING_US_ASCII) ICONV_ENCODING_US_ASCII " ansi_x3.4_1968 ansi_x3.4_1986 iso_646.irv:1991 ascii iso646_us us ibm367 cp367 csascii \n" #endif #if defined (_ICONV_FROM_ENCODING_UTF_16) \ || defined (_ICONV_TO_ENCODING_UTF_16) ICONV_ENCODING_UTF_16 " utf16\n" #endif #if defined (_ICONV_FROM_ENCODING_UTF_16BE) \ || defined (_ICONV_TO_ENCODING_UTF_16BE) ICONV_ENCODING_UTF_16BE " utf16be\n" #endif #if defined (_ICONV_FROM_ENCODING_UTF_16LE) \ || defined (_ICONV_TO_ENCODING_UTF_16LE) ICONV_ENCODING_UTF_16LE " utf16le\n" #endif #if defined (_ICONV_FROM_ENCODING_UTF_8) \ || defined (_ICONV_TO_ENCODING_UTF_8) ICONV_ENCODING_UTF_8 " utf8\n" #endif #if defined (_ICONV_FROM_ENCODING_WIN_1250) \ || defined (_ICONV_TO_ENCODING_WIN_1250) ICONV_ENCODING_WIN_1250 " cp1250\n" #endif #if defined (_ICONV_FROM_ENCODING_WIN_1251) \ || defined (_ICONV_TO_ENCODING_WIN_1251) ICONV_ENCODING_WIN_1251 " cp1251\n" #endif #if defined (_ICONV_FROM_ENCODING_WIN_1252) \ || defined (_ICONV_TO_ENCODING_WIN_1252) ICONV_ENCODING_WIN_1252 " cp1252\n" #endif #if defined (_ICONV_FROM_ENCODING_WIN_1253) \ || defined (_ICONV_TO_ENCODING_WIN_1253) ICONV_ENCODING_WIN_1253 " cp1253\n" #endif #if defined (_ICONV_FROM_ENCODING_WIN_1254) \ || defined (_ICONV_TO_ENCODING_WIN_1254) ICONV_ENCODING_WIN_1254 " cp1254\n" #endif #if defined (_ICONV_FROM_ENCODING_WIN_1255) \ || defined (_ICONV_TO_ENCODING_WIN_1255) ICONV_ENCODING_WIN_1255 " cp1255\n" #endif #if defined (_ICONV_FROM_ENCODING_WIN_1256) \ || defined (_ICONV_TO_ENCODING_WIN_1256) ICONV_ENCODING_WIN_1256 " cp1256\n" #endif #if defined (_ICONV_FROM_ENCODING_WIN_1257) \ || defined (_ICONV_TO_ENCODING_WIN_1257) ICONV_ENCODING_WIN_1257 " cp1257\n" #endif #if defined (_ICONV_FROM_ENCODING_WIN_1258) \ || defined (_ICONV_TO_ENCODING_WIN_1258) ICONV_ENCODING_WIN_1258 " cp1258\n" #endif "" }; picolibc-1.7.4/newlib/libc/iconv/lib/aliasesi.c000066400000000000000000000110561414576234500213400ustar00rootroot00000000000000/* * Copyright (c) 2003-2004, Artem B. Bityuckiy * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include #include #include #include "local.h" /* * canonical_form - canonize 'str'. * * PARAMETERS: * const char *str - string to canonize. * * DESCRIPTION: * Converts all letters to small and substitute all '-' characters by '_' * characters. * * RETURN: * Returns canonical form of 'str' if success, NULL if failure. */ static const char * canonical_form ( const char *str) { char *p, *p1; if (str == NULL || (p = p1 = strdup (str)) == NULL) return (const char *)NULL; for (; *str; str++, p++) { if (*str == '-') *p = '_'; else *p = tolower (*str); } return (const char *)p1; } /* * find_alias - find encoding name name by it's alias. * * PARAMETERS: * const char *alias - alias by which "official" name should be found. * const char *table - aliases table. * int len - aliases table length. * * DESCRIPTION: * 'table' contains the list of encoding names and aliases. * Names go first, e.g.: * * name1 alias11 alias12 alias1N * name2 alias21 alias22 alias2N * nameM aliasM1 aliasM2 aliasMN * * If line begins with backspace it is considered as the continuation of * previous line. * * RETURN: * Returns pointer to name found if success. In case of error returns NULL * and sets current thread's/process's errno. */ static char * find_alias ( const char *alias, const char *table, int len) { const char *end; const char *p; int l = strlen (alias); const char *ptable = table; const char *table_end = table + len; if (table == NULL || alias == NULL || *table == '\0' || *alias == '\0') return NULL; search_again: if (len < l || (p = strnstr (ptable, alias, len)) == NULL) return NULL; /* Check that substring is segregated by '\n', '\t' or ' ' */ if (!((p == table || isspace (*(p-1)) || *(p-1) == '\n') && (p+l == table_end || isspace (*(p+l)) || *(p+l) == '\n'))) { ptable = p + l; len = table_end - ptable; goto search_again; } while(--p > table && *p != '\n'); if (*(++p) == '#') return NULL; for (end = p + 1; !isspace (*end) && *end != '\n' && *end != '\0'; end++); return strndup (p, (size_t)(end - p)); } /* * _iconv_resolve_encoding_name - resolves encoding's name by given alias. * * PARAMETERS: * const char *ca - encoding alias to resolve. * * DESCRIPTION: * First, tries to find 'ca' among built-in aliases. If not found, tries to * find it external file. * * RETURN: * Encoding name if found. In case of error returns NULL * and sets current thread's/process's errno. */ char * _iconv_resolve_encoding_name ( const char *ca) { char *p = (char *)ca; /* Alias shouldn't contain white spaces, '\n' and '\r' symbols */ while (*p) if (*p == ' ' || *p == '\r' || *p++ == '\n') return NULL; if ((ca = canonical_form (ca)) == NULL) return NULL; p = find_alias (ca, _iconv_aliases, strlen (_iconv_aliases)); free ((void *)ca); return p; } picolibc-1.7.4/newlib/libc/iconv/lib/conv.h000066400000000000000000000166121414576234500205230ustar00rootroot00000000000000/* * Copyright (c) 2003-2004, Artem B. Bityuckiy * Copyright (c) 1999,2000, Konstantin Chuguev. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifndef __ICONV_CONVERSION_H__ #define __ICONV_CONVERSION_H__ #include <_ansi.h> #include #include /* Bits for 'flags' parameter of 'convert' call */ #define ICONV_DONT_SAVE_BIT 1 #define ICONV_FAIL_BIT 2 /* * iconv_conversion_handlers_t - keeps iconv conversion handlers. * * Keeps 6 interface function handlers: * open(), close(), convert(), get_mb_cur_max(), get_state(), set_state(), * get_mb_cur_max() and is_stateful(). Last 5 interface functions are needed to * support locale subsystem. * * ============================================================================ */ typedef struct { /* * open - open and initialize conversion. * * PARAMETERS: * const char *to - output encoding's normalized name; * const char *from - input encoding's normalized name. * * DESCRIPTION: * This function is called from iconv_open() to open conversion. Returns * a pointer to conversion-specific data. * * RETURN: * Pointer to conversion-specific data if success. In case of error * returns NULL and sets current thread's/process's errno. */ void *(*open) ( const char *to, const char *from); /* * close - close conversion. * * PARAMETRS: * void *data - conversion-specific data. * * DESCRIPTION: * This function is called from iconv_close() to close conversion. * * RETURN: * When successful, returns (size_t)0. In case of error, sets current * thread's/process's errno and returns (size_t)-1 (same as iconv_open()). */ size_t (*close) ( void *data); /* convert - perform encoding conversion. * * PARAMETERS: * void *data - conversion-specific data; * const unsigned char **inbuf - input data buffer; * size_t *inbytesleft - input buffer's length; * unsigned char **outbuf - output data buffer; * size_t *outbytesleft - output buffer free space; * int flags - conversion options. * * DESCRIPTION: * This function is called from iconv() to perform conversion and, if 'flags' * is 0, behaves similarly to iconv(). 'inbuf', 'inbytesleft', 'outbuf' and * 'outbytesleft' are same as in case of iconv() function. * * When flags & 1 isn't 0, 'outbuf' value is ignored and result isn't saved. * Another conversion aspects aren't changed. * * When flags & 2 isn't 0, function changes it's behavior in situations, * when there is no character in "to" encoding that corresponds to valid * character from "from" encoding. iconv() specification stands to perform * implimentation-spacific default conversion. If flag & 2 isn't 0, * function generates error. * * RETURN: * Returns the number of characters converted in a non-reversible way. * Reversible conversions are not counted. In case of error, sets current * thread's/process's errno and returns (size_t)-1 (same as iconv()). */ size_t (*convert) ( void *data, const unsigned char **inbuf, size_t *inbytesleft, unsigned char **outbuf, size_t *outbytesleft, int flags); /* * get_state - get current shift state. * * PARAMETERS: * void *data - conversion-specific data; * mbstate_t *state - mbstate_t object where shift state will be written; * int direction - 0-"from", 1-"to". * * DESCRIPTION: * Returns encoding's current shift sequence. * If 'direction' is 0, "from" encoding is tested, else * "to" encoding is tested. */ void (*get_state) (void *data, mbstate_t *state, int direction); /* * set_state - set shift state. * * PARAMETERS: * void *data - conversion-specific data; * mbstate_t *state - mbstate_t object to which shift state will be set. * int direction - 0-"from", 1-"to". * * DESCRIPTION: * Sets encoding's current shift state to 'state'. if 'state' * object is zero-object - reset current shift state. * If 'direction' is 0, "from" encoding is set, else * "to" encoding is set. * Returns 0 if '*state' object has right format, -1 else. */ int (*set_state) (void *data, mbstate_t *state, int direction); /* * get_mb_cur_max - get maximum character length in bytes. * * PARAMETERS: * void *data - conversion-specific data; * int direction - 0-"from", 1-"to". * * DESCRIPTION: * Returns encoding's maximum character length. * If 'direction' is 0, "from" encoding is tested, else * "to" encoding is tested. */ int (*get_mb_cur_max) (void *data, int direction); /* * is_stateful - is encoding stateful or stateless. * * PARAMETERS: * void *data - conversion-specific data; * int direction - 0-"from", 1-"to". * * DESCRIPTION: * Returns 0 if encoding is stateless and 1 if stateful. * If 'direction' is 0, "from" encoding is tested, else * "to" encoding is tested. */ int (*is_stateful) (void *data, int direction); } iconv_conversion_handlers_t; /* * iconv_conversion_t - iconv conversion definition structure. * * ============================================================================ */ typedef struct { /* Iconv conversion handlers. */ const iconv_conversion_handlers_t *handlers; /* * Conversion-specific data (e.g., points to iconv_ucs_conversion_t * object if UCS-based conversion is used). */ void *data; } iconv_conversion_t; /* UCS-based conversion handlers */ extern const iconv_conversion_handlers_t _iconv_ucs_conversion_handlers; /* Null conversion handlers */ extern const iconv_conversion_handlers_t _iconv_null_conversion_handlers; #endif /* !__ICONV_CONVERSION_H__ */ picolibc-1.7.4/newlib/libc/iconv/lib/encnames.h000066400000000000000000000044501414576234500213440ustar00rootroot00000000000000/* * This file was automatically generated mkdeps.pl script. Don't edit. */ #ifndef __ENCNAMES_H__ #define __ENCNAMES_H__ /* * Encodings name macros. */ #define ICONV_ENCODING_BIG5 "big5" #define ICONV_ENCODING_CP775 "cp775" #define ICONV_ENCODING_CP850 "cp850" #define ICONV_ENCODING_CP852 "cp852" #define ICONV_ENCODING_CP855 "cp855" #define ICONV_ENCODING_CP866 "cp866" #define ICONV_ENCODING_EUC_JP "euc_jp" #define ICONV_ENCODING_EUC_KR "euc_kr" #define ICONV_ENCODING_EUC_TW "euc_tw" #define ICONV_ENCODING_ISO_8859_1 "iso_8859_1" #define ICONV_ENCODING_ISO_8859_10 "iso_8859_10" #define ICONV_ENCODING_ISO_8859_11 "iso_8859_11" #define ICONV_ENCODING_ISO_8859_13 "iso_8859_13" #define ICONV_ENCODING_ISO_8859_14 "iso_8859_14" #define ICONV_ENCODING_ISO_8859_15 "iso_8859_15" #define ICONV_ENCODING_ISO_8859_2 "iso_8859_2" #define ICONV_ENCODING_ISO_8859_3 "iso_8859_3" #define ICONV_ENCODING_ISO_8859_4 "iso_8859_4" #define ICONV_ENCODING_ISO_8859_5 "iso_8859_5" #define ICONV_ENCODING_ISO_8859_6 "iso_8859_6" #define ICONV_ENCODING_ISO_8859_7 "iso_8859_7" #define ICONV_ENCODING_ISO_8859_8 "iso_8859_8" #define ICONV_ENCODING_ISO_8859_9 "iso_8859_9" #define ICONV_ENCODING_ISO_IR_111 "iso_ir_111" #define ICONV_ENCODING_KOI8_R "koi8_r" #define ICONV_ENCODING_KOI8_RU "koi8_ru" #define ICONV_ENCODING_KOI8_U "koi8_u" #define ICONV_ENCODING_KOI8_UNI "koi8_uni" #define ICONV_ENCODING_UCS_2 "ucs_2" #define ICONV_ENCODING_UCS_2_INTERNAL "ucs_2_internal" #define ICONV_ENCODING_UCS_2BE "ucs_2be" #define ICONV_ENCODING_UCS_2LE "ucs_2le" #define ICONV_ENCODING_UCS_4 "ucs_4" #define ICONV_ENCODING_UCS_4_INTERNAL "ucs_4_internal" #define ICONV_ENCODING_UCS_4BE "ucs_4be" #define ICONV_ENCODING_UCS_4LE "ucs_4le" #define ICONV_ENCODING_US_ASCII "us_ascii" #define ICONV_ENCODING_UTF_16 "utf_16" #define ICONV_ENCODING_UTF_16BE "utf_16be" #define ICONV_ENCODING_UTF_16LE "utf_16le" #define ICONV_ENCODING_UTF_8 "utf_8" #define ICONV_ENCODING_WIN_1250 "win_1250" #define ICONV_ENCODING_WIN_1251 "win_1251" #define ICONV_ENCODING_WIN_1252 "win_1252" #define ICONV_ENCODING_WIN_1253 "win_1253" #define ICONV_ENCODING_WIN_1254 "win_1254" #define ICONV_ENCODING_WIN_1255 "win_1255" #define ICONV_ENCODING_WIN_1256 "win_1256" #define ICONV_ENCODING_WIN_1257 "win_1257" #define ICONV_ENCODING_WIN_1258 "win_1258" #endif /* !__ENCNAMES_H__ */ picolibc-1.7.4/newlib/libc/iconv/lib/encoding.deps000066400000000000000000000237101414576234500220450ustar00rootroot00000000000000# #Copyright (c) 2003-2004, Artem B. Bityuckiy # #Redistribution and use in source and binary forms, with or without #modification, are permitted provided that the following conditions #are met: #1. Redistributions of source code must retain the above copyright #notice, this list of conditions and the following disclaimer. #2. Redistributions in binary form must reproduce the above copyright #notice, this list of conditions and the following disclaimer in the #documentation and/or other materials provided with the distribution. # #THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND #ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE #IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE #ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE #FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL #DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS #OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) #HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT #LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY #OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF #SUCH DAMAGE. # # # This file describes dependencies between encodings, CES, CCS, etc. # File relates only to UCS-based conversions and is needed for automatic # generation of C source files and C header files. # # This configuration file consists of sections, each section consists of # entries. # # Use only normalized names. # # # The first section named "ENCODINGS" describes: # 1. CES converter corresponding for each enoding; # 2. Each encoding's aliases; # 3. CCS tables corresponding for each enoding. # SECTION ENCODINGS # ISO-10646-UCS-2. Big Endian, NBSP is always interpreted as NBSP (BOM isn't supported). ENTRY ENCODING: ucs_2 CES: ucs_2 ALIASES: ucs2 iso_10646_ucs_2 iso10646_ucs_2 iso_10646_ucs2 iso10646_ucs2 iso10646ucs2 csUnicode ENTRY END # Big Endian version of ISO-10646-UCS-2 (in fact, equivalent to ucs_2). # Big Endian, NBSP is always interpreted as NBSP (BOM isn't supported). ENTRY ENCODING: ucs_2be CES: ucs_2 ALIASES: ucs2be ENTRY END # Little Endian version of ISO-10646-UCS-2. # Little Endian, NBSP is always interpreted as NBSP (BOM isn't supported). ENTRY ENCODING: ucs_2le CES: ucs_2 ALIASES: ucs2le ENTRY END # ISO-10646-UCS-2 in system byte order. # NBSP is always interpreted as NBSP (BOM isn't supported). # NOTE: Dont delete and rename this since it is used as widechar's # encoding when sizeof(wchar_t) == 2 ENTRY ENCODING: ucs_2_internal CES: ucs_2_internal ALIASES: ucs2_internal ucs_2internal ucs2internal ENTRY END # ISO-10646-UCS-4. Big Endian, NBSP is always interpreted as NBSP (BOM isn't supported). ENTRY ENCODING: ucs_4 CES: ucs_4 ALIASES: ucs4 iso_10646_ucs_4 iso10646_ucs_4 iso_10646_ucs4 iso10646_ucs4 iso10646ucs4 ENTRY END # Big Endian version of ISO-10646-UCS-4 (in fact, equivalent to ucs_4). # Big Endian, NBSP is always interpreted as NBSP (BOM isn't supported). ENTRY ENCODING: ucs_4be CES: ucs_4 ALIASES: ucs4be ENTRY END # Little Endian version of ISO-10646-UCS-4. # Little Endian, NBSP is always interpreted as NBSP (BOM isn't supported). ENTRY ENCODING: ucs_4le CES: ucs_4 ALIASES: ucs4le ENTRY END # ISO-10646-UCS-4 in system byte order. # NBSP is always interpreted as NBSP (BOM isn't supported). # NOTE: Dont delete and rename this since it is used as widechar's # encoding when sizeof(wchar_t) == 4 ENTRY ENCODING: ucs_4_internal CES: ucs_4_internal ALIASES: ucs4_internal ucs_4internal ucs4internal ENTRY END # RFC 3629 UTF-8 ENTRY ENCODING: utf_8 CES: utf_8 ALIASES: utf8 ENTRY END # RFC 2781 UTF-16. The very first NBSP code in stream is interpreted as BOM. ENTRY ENCODING: utf_16 CES: utf_16 ALIASES: utf16 ENTRY END # Big Endian version of RFC 2781 UTF-16. # NBSP is always interpreted as NBSP (BOM isn't supported). ENTRY ENCODING: utf_16be CES: utf_16 ALIASES: utf16be ENTRY END # Little Endian version of RFC 2781 UTF-16. # NBSP is always interpreted as NBSP (BOM isn't supported). ENTRY ENCODING: utf_16le CES: utf_16 ALIASES: utf16le ENTRY END # 7-bit ASCII. ENTRY ENCODING: us_ascii CES: us_ascii ALIASES: ansi_x3.4_1968 ansi_x3.4_1986 iso_646.irv:1991 ascii iso646_us us ibm367 cp367 csascii ENTRY END # RFC 1489 Cyrillic ENTRY ENCODING: koi8_r CES: table CCS: koi8_r ALIASES: cskoi8r koi8r koi8 ENTRY END # Obsoleted Ukrainian ENTRY ENCODING: koi8_ru CES: table CCS: koi8_ru ALIASES: koi8ru ENTRY END # RFC 2319 Ukrainian ENTRY ENCODING: koi8_u CES: table CCS: koi8_u ALIASES: koi8u ENTRY END # KOI8 Unified ENTRY ENCODING: koi8_uni CES: table CCS: koi8_uni ALIASES: koi8uni ENTRY END # ISO IR 111/ECMA Cyrillic. ENTRY ENCODING: iso_ir_111 CES: table CCS: iso_ir_111 ALIASES: ecma_cyrillic koi8_e koi8e csiso111ecmacyrillic ENTRY END # ISO 8859-1:1987 - Latin 1, West European ENTRY ENCODING: iso_8859_1 CES: table CCS: iso_8859_1 ALIASES: iso8859_1 iso88591 iso_8859_1:1987 iso_ir_100 latin1 l1 ibm819 cp819 csisolatin1 ENTRY END # ISO 8859-2:1987 - Latin 2, East European ENTRY ENCODING: iso_8859_2 CES: table CCS: iso_8859_2 ALIASES: iso8859_2 iso88592 iso_8859_2:1987 iso_ir_101 latin2 l2 csisolatin2 ENTRY END # ISO 8859-3:1988 - Latin 3, South European ENTRY ENCODING: iso_8859_3 CES: table CCS: iso_8859_3 ALIASES: iso_8859_3:1988 iso_ir_109 iso8859_3 latin3 l3 csisolatin3 iso88593 ENTRY END # ISO 8859-4:1988 - Latin 4, North European ENTRY ENCODING: iso_8859_4 CES: table CCS: iso_8859_4 ALIASES: iso8859_4 iso88594 iso_8859_4:1988 iso_ir_110 latin4 l4 csisolatin4 ENTRY END # ISO 8859-5:1988 - Cyrillic ENTRY ENCODING: iso_8859_5 CES: table CCS: iso_8859_5 ALIASES: iso8859_5 iso88595 iso_8859_5:1988 iso_ir_144 cyrillic csisolatincyrillic ENTRY END # ISO i8859-6:1987 - Arabic ENTRY ENCODING: iso_8859_6 CES: table CCS: iso_8859_6 ALIASES: iso_8859_6:1987 iso_ir_127 iso8859_6 ecma_114 asmo_708 arabic csisolatinarabic iso88596 ENTRY END # ISO 8859-7:1987 - Greek ENTRY ENCODING: iso_8859_7 CES: table CCS: iso_8859_7 ALIASES: iso_8859_7:1987 iso_ir_126 iso8859_7 elot_928 ecma_118 greek greek8 csisolatingreek iso88597 ENTRY END # ISO 8859-8:1988 - Hebrew ENTRY ENCODING: iso_8859_8 CES: table CCS: iso_8859_8 ALIASES: iso_8859_8:1988 iso_ir_138 iso8859_8 hebrew csisolatinhebrew iso88598 ENTRY END # ISO 8859-9:1989 - Latin 5, Turkish ENTRY ENCODING: iso_8859_9 CES: table CCS: iso_8859_9 ALIASES: iso_8859_9:1989 iso_ir_148 iso8859_9 latin5 l5 csisolatin5 iso88599 ENTRY END # ISO 8859-10:1992 - Latin 6, Nordic ENTRY ENCODING: iso_8859_10 CES: table CCS: iso_8859_10 ALIASES: iso_8859_10:1992 iso_ir_157 iso885910 latin6 l6 csisolatin6 iso8859_10 ENTRY END # ISO 8859-11 - Thai ENTRY ENCODING: iso_8859_11 CES: table CCS: iso_8859_11 ALIASES: iso8859_11 iso885911 ENTRY END # ISO 8859-13:1998 - Latin 7, Baltic Rim ENTRY ENCODING: iso_8859_13 CES: table CCS: iso_8859_13 ALIASES: iso_8859_13:1998 iso8859_13 iso885913 ENTRY END # ISO 8859-14:1998 - Latin 8, Celtic ENTRY ENCODING: iso_8859_14 CES: table CCS: iso_8859_14 ALIASES: iso_8859_14:1998 iso885914 iso8859_14 ENTRY END # ISO 8859-15:1998 - Latin 9, West Europe, successor of Latin 1 ENTRY ENCODING: iso_8859_15 CES: table CCS: iso_8859_15 ALIASES: iso885915 iso_8859_15:1998 iso8859_15 ENTRY END # Win-1250 ENTRY ENCODING: win_1250 CES: table CCS: win_1250 ALIASES: cp1250 ENTRY END # Win-1251 - Cyrillic ENTRY ENCODING: win_1251 CES: table CCS: win_1251 ALIASES: cp1251 ENTRY END # Win-1252 - Latin 1 ENTRY ENCODING: win_1252 CES: table CCS: win_1252 ALIASES: cp1252 ENTRY END # Win-1253 - Greek ENTRY ENCODING: win_1253 CES: table CCS: win_1253 ALIASES: cp1253 ENTRY END # Win-1254 - Turkish ENTRY ENCODING: win_1254 CES: table CCS: win_1254 ALIASES: cp1254 ENTRY END # Win-1255 - Hebrew ENTRY ENCODING: win_1255 CES: table CCS: win_1255 ALIASES: cp1255 ENTRY END # Win-1256 - Arabic ENTRY ENCODING: win_1256 CES: table CCS: win_1256 ALIASES: cp1256 ENTRY END # Win-1257 - Baltic ENTRY ENCODING: win_1257 CES: table CCS: win_1257 ALIASES: cp1257 ENTRY END # Win-1258 - Vietnamese7 that supports Cyrillic ENTRY ENCODING: win_1258 CES: table CCS: win_1258 ALIASES: cp1258 ENTRY END # big5 - an encoding for Traditional Chinese ENTRY ENCODING: big5 CES: table_pcs CCS: big5 ALIASES: csbig5 big_five bigfive cn_big5 cp950 ENTRY END # IBM 775 - an updated version of CP 437 that supports balitic languages. ENTRY ENCODING: cp775 CES: table CCS: cp775 ALIASES: ibm775 cspc775baltic ENTRY END # IBM 850 - an updated version of CP 437 where several Latin 1 characters have been # added instead of some less-often used characters like line-drawing and greek ones. ENTRY ENCODING: cp850 CES: table CCS: cp850 ALIASES: ibm850 850 cspc850multilingual ENTRY END # IBM 852 - an updated version of CP 437 where several Latin 2 characters have been added # instead of some less-often used characters like line-drawing and greek ones. ENTRY ENCODING: cp852 CES: table CCS: cp852 ALIASES: ibm852 852 cspcp852 ENTRY END # IBM 855 - an updated version of CP 437 that supports Cyrillic. ENTRY ENCODING: cp855 CES: table CCS: cp855 ALIASES: ibm855 855 csibm855 ENTRY END # IBM 866 - an updated version of CP 855 which followes the more logical Russian alphabet # ordering of the alternativny variant that is preferred by many Russian users. ENTRY ENCODING: cp866 CES: table CCS: cp866 ALIASES: 866 IBM866 CSIBM866 ENTRY END # EUC-JP - The EUC for Japanese ENTRY ENCODING: euc_jp CES: euc CCS: jis_x0208_1990 jis_x0201_1976 jis_x0212_1990 ALIASES: eucjp ENTRY END # EUC-KR - The EUC for Korean ENTRY ENCODING: euc_kr CES: euc CCS: ksx1001 ALIASES: euckr ENTRY END # EUC-TW - The EUC for Traditional Chinese ENTRY ENCODING: euc_tw CES: euc CCS: cns11643_plane1 cns11643_plane2 cns11643_plane14 ALIASES: euctw ENTRY END SECTION END # # This section is named "CES_DEPENDENCIES" and describes dependencies # between CES converters (some CES converters may use another CES converters). # SECTION CES_DEPENDENCIES ENTRY CES: table_pcs USED_CES: table ENTRY END ENTRY CES: euc USED_CES: table us_ascii ENTRY END SECTION END picolibc-1.7.4/newlib/libc/iconv/lib/endian.h000066400000000000000000000050021414576234500210030ustar00rootroot00000000000000/* * Copyright (c) 2003-2004, Artem B. Bityuckiy * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifndef __ICONV_CES_ENDIAN_H__ #define __ICONV_CES_ENDIAN_H__ #include #if (BYTE_ORDER == LITTLE_ENDIAN) # define ICONV_BETOHS(s) \ ((((s) << 8) & 0xFF00) | (((s) >> 8) & 0x00FF)) # define ICONV_BETOHL(l) \ ((((l) << 24) & 0xFF000000) | \ (((l) << 8) & 0x00FF0000) | \ (((l) >> 8) & 0x0000FF00) | \ (((l) >> 24) & 0x000000FF)) # define ICONV_LETOHS(s) (s) # define ICONV_LETOHL(l) (l) # define ICONV_HTOLES(s) ICONV_LETOHS (s) # define ICONV_HTOLEL(l) ICONV_LETOHL (l) # define ICONV_HTOBES(s) ICONV_BETOHS (s) # define ICONV_HTOBEL(l) ICONV_BETOHL (l) #elif (BYTE_ORDER == BIG_ENDIAN) # define ICONV_BETOHS(s) (s) # define ICONV_BETOHL(l) (l) # define ICONV_LETOHS(s) \ ((((s) << 8) & 0xFF00) | (((s) >> 8) & 0x00FF)) # define ICONV_LETOHL(l) \ ((((l) << 24) & 0xFF000000) | \ (((l) << 8) & 0x00FF0000) | \ (((l) >> 8) & 0x0000FF00) | \ (((l) >> 24) & 0x000000FF)) # define ICONV_HTOBES(s) ICONV_BETOHS (s) # define ICONV_HTOBEL(l) ICONV_BETOHL (l) # define ICONV_HTOLES(s) ICONV_LETOHS (s) # define ICONV_HTOLEL(l) ICONV_LETOHL (l) #else # error "Unknown byte order." #endif #endif /* !__ICONV_CES_ENDIAN_H__ */ picolibc-1.7.4/newlib/libc/iconv/lib/iconv.c000066400000000000000000000172501414576234500206660ustar00rootroot00000000000000/* * Copyright (c) 2003-2004, Artem B. Bityuckiy * Copyright (c) 1999,2000, Konstantin Chuguev. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* FUNCTION <>, <>, <>---charset conversion routines INDEX iconv INDEX iconv_open INDEX iconv_close SYNOPSIS #include iconv_t iconv_open (const char *<[to]>, const char *<[from]>); int iconv_close (iconv_t <[cd]>); size_t iconv (iconv_t <[cd]>, char **restrict <[inbuf]>, size_t *restrict <[inbytesleft]>, char **restrict <[outbuf]>, size_t *restrict <[outbytesleft]>); DESCRIPTION The function <> converts characters from <[in]> which are in one encoding to characters of another encoding, outputting them to <[out]>. The value <[inleft]> specifies the number of input bytes to convert whereas the value <[outleft]> specifies the size remaining in the <[out]> buffer. The conversion descriptor <[cd]> specifies the conversion being performed and is created via <>. An <> conversion stops if: the input bytes are exhausted, the output buffer is full, an invalid input character sequence occurs, or the conversion specifier is invalid. The function <> is used to specify a conversion from one encoding: <[from]> to another: <[to]>. The result of the call is to create a conversion specifier that can be used with <>. The function <> is used to close a conversion specifier after it is no longer needed. RETURNS The <> function returns the number of non-identical conversions performed. If an error occurs, (size_t)-1 is returned and <> is set appropriately. The values of <[inleft]>, <[in]>, <[out]>, and <[outleft]> are modified to indicate how much input was processed and how much output was created. The <> function returns either a valid conversion specifier or (iconv_t)-1 to indicate failure. If failure occurs, <> is set appropriately. The <> function returns 0 on success or -1 on failure. If failure occurs <> is set appropriately. PORTABILITY <>, <>, and <> are non-ANSI and are specified by the Single Unix specification. No supporting OS subroutine calls are required. */ #include <_ansi.h> #include #include #include #include #include #include #include #include "local.h" #include "conv.h" #include "ucsconv.h" /* * iconv interface functions as specified by Single Unix specification. */ #ifndef _REENT_ONLY iconv_t iconv_open ( const char *to, const char *from) { iconv_conversion_t *ic; if (to == NULL || from == NULL || *to == '\0' || *from == '\0') return (iconv_t)-1; if ((to = (const char *)_iconv_resolve_encoding_name (to)) == NULL) return (iconv_t)-1; if ((from = (const char *)_iconv_resolve_encoding_name (from)) == NULL) { free ((void *)to); return (iconv_t)-1; } ic = (iconv_conversion_t *)malloc (sizeof (iconv_conversion_t)); if (ic == NULL) return (iconv_t)-1; /* Select which conversion type to use */ if (strcmp (from, to) == 0) { /* Use null conversion */ ic->handlers = &_iconv_null_conversion_handlers; ic->data = ic->handlers->open (to, from); } else { /* Use UCS-based conversion */ ic->handlers = &_iconv_ucs_conversion_handlers; ic->data = ic->handlers->open (to, from); } free ((void *)to); free ((void *)from); if (ic->data == NULL) { free ((void *)ic); return (iconv_t)-1; } return (void *)ic; } size_t iconv (iconv_t cd, const char **__restrict inbuf, size_t *__restrict inbytesleft, char **__restrict outbuf, size_t *__restrict outbytesleft) { iconv_conversion_t *ic = (iconv_conversion_t *)cd; if ((void *)cd == NULL || cd == (iconv_t)-1 || ic->data == NULL || (ic->handlers != &_iconv_null_conversion_handlers && ic->handlers != &_iconv_ucs_conversion_handlers)) { errno = EBADF; return (size_t)-1; } if (inbuf == NULL || *inbuf == NULL) { mbstate_t state_null = ICONV_ZERO_MB_STATE_T; if (!ic->handlers->is_stateful(ic->data, 1)) return (size_t)0; if (outbuf == NULL || *outbuf == NULL) { /* Reset shift state */ ic->handlers->set_state (ic->data, &state_null, 1); return (size_t)0; } if (outbytesleft != NULL) { mbstate_t state_save = ICONV_ZERO_MB_STATE_T; /* Save current shift state */ ic->handlers->get_state (ic->data, &state_save, 1); /* Reset shift state */ ic->handlers->set_state (ic->data, &state_null, 1); /* Get initial shift state sequence and it's length */ ic->handlers->get_state (ic->data, &state_null, 1); if (*outbytesleft >= (size_t) state_null.__count) { memcpy ((void *)(*outbuf), (void *)&state_null, state_null.__count); *outbuf += state_null.__count; *outbytesleft -= state_null.__count; return (size_t)0; } /* Restore shift state if output buffer is too small */ ic->handlers->set_state (ic->data, &state_save, 1); } errno = E2BIG; return (size_t)-1; } if (*inbytesleft == 0) { errno = EINVAL; return (size_t)-1; } if (*outbytesleft == 0 || *outbuf == NULL) { errno = E2BIG; return (size_t)-1; } return ic->handlers->convert ( ic->data, (const unsigned char**)inbuf, inbytesleft, (unsigned char**)outbuf, outbytesleft, 0); } int iconv_close (iconv_t cd) { int res; iconv_conversion_t *ic = (iconv_conversion_t *)cd; if ((void *)cd == NULL || cd == (iconv_t)-1 || ic->data == NULL || (ic->handlers != &_iconv_null_conversion_handlers && ic->handlers != &_iconv_ucs_conversion_handlers)) { errno = EBADF; return -1; } res = (int)ic->handlers->close (ic->data); free ((void *)cd); return res; } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/iconv/lib/iconvnls.c000066400000000000000000000233611414576234500214030ustar00rootroot00000000000000/* * Copyright (c) 2003-2004, Artem B. Bityuckiy * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include <_ansi.h> #include #include #include #include #include #ifdef _MB_CAPABLE #include #include #include #include #include #include "local.h" #include "conv.h" #include "ucsconv.h" #include "iconvnls.h" #endif /* * _iconv_nls_construct_filename -- constructs full file name. * * PARAMETERS: * const char *file - the name of file. * const char *dir - the name of subdirectory; * const char *ext - file extension. * * DESCRIPTION: * Function constructs patch to icionv-related file. * 'file' shouldn't be NULL. Doesn't use extension if 'ext' is NULL. * * RETURN: * The pointer to file name if success, In case of error returns NULL * and sets current thread's/process's errno. */ const char * _iconv_nls_construct_filename ( const char *file, const char *dir, const char *ext) { int len1, len2, len3; char *path; char *p; int dirlen = strlen (dir); if ((path = getenv (NLS_ENVVAR_NAME)) == NULL || *path == '\0') path = ICONV_DEFAULT_NLSPATH; len1 = strlen (path); len2 = strlen (file); len3 = strlen (ext); if ((p = malloc (len1 + dirlen + len2 + len3 + 3)) == NULL) return (const char *)NULL; memcpy (p, path, len1); if (p[len1 - 1] != '/') p[len1++] = '/'; memcpy (p + len1, dir, dirlen); len1 += dirlen; p[len1++] = '/'; memcpy (p + len1, file, len2); len1 += len2; if (ext != NULL) { memcpy (p + len1, ext, len3); len1 += len3; } p[len1] = '\0'; return (const char *)p; } #ifdef _MB_CAPABLE /* * _iconv_nls_get_mb_cur_max -- return encoding's maximum length * of a multi-byte character. * * PARAMETERS: * iconv_t cd - opened iconv conversion descriptor; * int direction - "from encoding" or "to encoding" direction. * * DESCRIPTION: * Return maximum length of a multi-byte character in one of 'cd's * encoding. Return "from" encoding's value if 'direction' is 0 and * "to" encoding's value if 'direction' isn't 0. */ int _iconv_nls_get_mb_cur_max (iconv_t cd, int direction) { iconv_conversion_t *ic = (iconv_conversion_t *)cd; return ic->handlers->get_mb_cur_max (ic->data, direction); } /* * _iconv_nls_is_stateful -- is encoding stateful? * * PARAMETERS: * iconv_t cd - opened iconv conversion descriptor; * int direction - "from encoding" or "to encoding" direction. * * DESCRIPTION: * Returns 0 if encoding is stateless or 1 if stateful. * Tests "from" encoding if 'direction' is 0 and * "to" encoding's value if 'direction' isn't 0. */ int _iconv_nls_is_stateful (iconv_t cd, int direction) { iconv_conversion_t *ic = (iconv_conversion_t *)cd; return ic->handlers->is_stateful (ic->data, direction); } /* * _iconv_nls_conv - special version of iconv for NLS. * * PARAMETERS: * Same as _iconv_r. * * DESCRIPTION: * Function behaves as _iconv_r but: * 1. Don't handle reset/return shift states queries * (like iconv does when 'inbuf' == NULL, etc); * 2. Don't save result if 'outbuf' == NULL or * '*outbuf' == NULL; * 3. Don't perform default conversion if there is no character * in "to" encoding that corresponds to character from "from" * encoding. * * RETURN: * Same as _iconv_r. */ size_t _iconv_nls_conv ( iconv_t cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) { iconv_conversion_t *ic = (iconv_conversion_t *)cd; int flags = ICONV_FAIL_BIT; if ((void *)cd == NULL || cd == (iconv_t)-1 || ic->data == NULL || (ic->handlers != &_iconv_null_conversion_handlers && ic->handlers != &_iconv_ucs_conversion_handlers)) { errno = EBADF; return (size_t)-1; } if (inbytesleft == NULL || *inbytesleft == 0) return (size_t)0; if (outbuf == NULL || *outbuf == NULL) flags |= ICONV_DONT_SAVE_BIT; if (outbytesleft == NULL || *outbytesleft == 0) { errno = E2BIG; return (size_t)-1; } return ic->handlers->convert ( ic->data, (const unsigned char**)inbuf, inbytesleft, (unsigned char**)outbuf, outbytesleft, flags); } /* * _iconv_nls_get_state -- get encoding's current shift state value. * * PARAMETERS: * iconv_t cd - iconv descriptor; * mbstate_t *ps - where to save shift state; * int direction - "from" encoding if 0, "to" encoding if 1. * * DESCRIPTION: * Save encoding's current shift state to 'ps'. Save "from" encoding's * shift state if 'direction' is 0 and "to" encodings's shift state * if 'direction' isn't 0. */ void _iconv_nls_get_state (iconv_t cd, mbstate_t *ps, int direction) { iconv_conversion_t *ic = (iconv_conversion_t *)cd; ic->handlers->get_state (ic->data, ps, direction); return; } /* * _iconv_nls_set_state -- set encoding's current shift state value. * * PARAMETERS: * iconv_t cd - iconv descriptor; * mbstate_t *ps - where to save shift state. * int direction - "from" encoding if 0, "to" encoding if 1. * * DESCRIPTION: * Set encoding's current shift state. * * RETURN: * 0 if success, -1 if failure. */ int _iconv_nls_set_state (iconv_t cd, mbstate_t *ps, int direction) { iconv_conversion_t *ic = (iconv_conversion_t *)cd; return ic->handlers->set_state (ic->data, ps, direction); } /* Same as iconv_open() but don't perform name resolving */ static iconv_t iconv_open1 ( const char *to, const char *from) { iconv_conversion_t *ic; if (to == NULL || from == NULL || *to == '\0' || *from == '\0') return (iconv_t)-1; ic = (iconv_conversion_t *)malloc (sizeof (iconv_conversion_t)); if (ic == NULL) return (iconv_t)-1; /* Select which conversion type to use */ if (strcmp (from, to) == 0) { /* Use null conversion */ ic->handlers = &_iconv_null_conversion_handlers; ic->data = ic->handlers->open (to, from); } else { /* Use UCS-based conversion */ ic->handlers = &_iconv_ucs_conversion_handlers; ic->data = ic->handlers->open (to, from); } if (ic->data == NULL) { free ((void *)ic); return (iconv_t)-1; } return (void *)ic; } /* * _iconv_nls_open - open iconv descriptors for NLS. * * PARAMETERS: * const char *encoding - encoding name; * iconv_t *tomb - wchar -> encoding iconv descriptor pointer; * iconv_t *towc - encoding -> wchar iconv descriptor pointer; * int flag - perform encoding name resolving flag. * * DESCRIPTION: * Opens two iconv descriptors for 'encoding' -> wchar and * wchar -> 'encoding' iconv conversions. Function is used when locale or * wide-oriented stream is opened. If 'flag' is 0, don't perform encoding * name resolving ('encoding' must not be alias in this case). * * RETURN: * If successful - return 0, else set errno and return -1. */ int _iconv_nls_open ( const char *encoding, iconv_t *tomb, iconv_t *towc, int flag) { const char *wchar_encoding; if (sizeof (wchar_t) > 2 && WCHAR_MAX > 0xFFFF) wchar_encoding = "ucs_4_internal"; else if (sizeof (wchar_t) > 1 && WCHAR_MAX > 0xFF) wchar_encoding = "ucs_2_internal"; else wchar_encoding = ""; /* This shuldn't happen */ if (flag) { if ((*towc = iconv_open (wchar_encoding, encoding)) == (iconv_t)-1) return -1; if ((*tomb = iconv_open (encoding, wchar_encoding)) == (iconv_t)-1) { iconv_close (*towc); return -1; } } else { if ((*towc = iconv_open1 (wchar_encoding, encoding)) == (iconv_t)-1) return -1; if ((*tomb = iconv_open1 (encoding, wchar_encoding)) == (iconv_t)-1) { iconv_close (*towc); return -1; } } return 0; } #endif /* _MB_CAPABLE */ picolibc-1.7.4/newlib/libc/iconv/lib/iconvnls.h000066400000000000000000000044151414576234500214070ustar00rootroot00000000000000/* Copyright (c) 2003-2004, Artem B. Bityuckiy Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef __ICONV_ICONVNLS_H__ #define __ICONV_ICONVNLS_H__ #include /* * Include ucs-2-internal or ucs-4-internal if Newlib is configured as * "multibyte-capable". * ============================================================================ */ #ifdef _MB_CAPABLE /* * Determine size of wchar_t. If size of wchar_t is 2, UCS-2-INTERNAL is used * as widechar's encoding. If size of wchar_t is 4, UCS-4-INTERNAL is used as * widechar's encoding. */ # if WCHAR_MAX > 0xFFFF # ifndef _ICONV_FROM_ENCODING_UCS_4_INTERNAL # define _ICONV_FROM_ENCODING_UCS_4_INTERNAL # endif # ifndef _ICONV_TO_ENCODING_UCS_4_INTERNAL # define _ICONV_TO_ENCODING_UCS_4_INTERNAL # endif # elif WCHAR_MAX > 0xFF # ifndef _ICONV_FROM_ENCODING_UCS_2_INTERNAL # define _ICONV_FROM_ENCODING_UCS_2_INTERNAL # endif # ifndef _ICONV_TO_ENCODING_UCS_2_INTERNAL # define _ICONV_TO_ENCODING_UCS_2_INTERNAL # endif # else # error Do not know how to work with 1 byte widechars. # endif #endif /* _MB_CAPABLE */ #endif /* !__ICONV_ICONVNLS_H__ */ picolibc-1.7.4/newlib/libc/iconv/lib/local.h000066400000000000000000000043251414576234500206460ustar00rootroot00000000000000/* * Copyright (c) 2003-2004, Artem B. Bityuckiy * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifndef __ICONV_LIB_LOCAL_H__ #define __ICONV_LIB_LOCAL_H__ #include <_ansi.h> #include #include /* Encodings aliases file */ #define ICONV_ALIASES_FNAME "encoding.aliases" /* iconv CCS data path */ #define ICONV_SUBDIR "iconv_data" /* iconv data files extension */ #define ICONV_DATA_EXT ".cct" /* This macro is used to zero mbstate_t objects */ #ifdef __GNUC__ #define ICONV_ZERO_MB_STATE_T ((mbstate_t){0, {0}}) #else #define ICONV_ZERO_MB_STATE_T {0} #endif /* Define the maximum multi-byte character length produced by iconv library */ #if MB_LEN_MAX < 6 # define ICONV_MB_LEN_MAX 6 #else # define ICONV_MB_LEN_MAX MB_LEN_MAX #endif /* 16-bit UCS-2 type */ typedef __uint16_t ucs2_t; /* 32-bit UCS-4 type */ typedef __uint32_t ucs4_t; /* The list of built-in encoding names and aliases */ extern const char _iconv_aliases[]; #endif /* !__ICONV_LIB_LOCAL_H__ */ picolibc-1.7.4/newlib/libc/iconv/lib/meson.build000066400000000000000000000042531414576234500215450ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # srcs_iconv_lib = [ 'aliasesbi.c', 'aliasesi.c', 'iconv.c', 'iconvnls.c', 'nullconv.c', 'ucsconv.c', ] hdrs_iconv_lib = [ 'conv.h', 'encnames.h', 'endian.h', 'iconvnls.h', 'local.h', 'ucsconv.h', ] srcs_iconv_lib_use = [] foreach file : srcs_iconv_lib s_file = fs.replace_suffix(file, '.S') if file in srcs_machine message('libc/iconv/lib/' + file + ': machine overrides generic') elif s_file in srcs_machine message('libc/iconv/lib/' + s_file + ': machine overrides generic') else srcs_iconv_lib_use += file endif endforeach src_iconv_lib = files(srcs_iconv_lib_use) picolibc-1.7.4/newlib/libc/iconv/lib/nullconv.c000066400000000000000000000071611414576234500214100ustar00rootroot00000000000000/* * Copyright (c) 2003-2004, Artem B. Bityuckiy * Copyright (c) 1999,2000, Konstantin Chuguev. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include <_ansi.h> #include #include #include #include #include "local.h" #include "conv.h" static int null_conversion_dummy_data; static void * null_conversion_open ( const char *to, const char *from) { (void) to; (void) from; return (void *)&null_conversion_dummy_data; } static size_t null_conversion_close ( void *data) { (void) data; return 0; } static size_t null_conversion_convert ( void *data, const unsigned char **inbuf, size_t *inbytesleft, unsigned char **outbuf, size_t *outbytesleft, int flags) { size_t result; size_t len; (void) data; if (*inbytesleft < *outbytesleft) { result = 0; len = *inbytesleft; } else { result = (size_t)-1; len = *outbytesleft; errno = E2BIG; } if ((flags & 1) == 0) memcpy (*outbuf, *inbuf, len); *inbuf += len; *outbuf += len; *inbytesleft -= len; *outbytesleft -= len; return result; } static int null_conversion_get_mb_cur_max (void *data, int direction) { (void) data; (void) direction; return ICONV_MB_LEN_MAX; } static void null_conversion_get_state (void *data, mbstate_t *state, int direction) { (void) data; (void) state; (void) direction; return; } static int null_conversion_set_state (void *data, mbstate_t *state, int direction) { (void) data; (void) state; (void) direction; return 0; } static int null_conversion_is_stateful (void *data, int direction) { (void) data; (void) direction; return 0; } /* Null conversion definition object */ const iconv_conversion_handlers_t _iconv_null_conversion_handlers = { null_conversion_open, null_conversion_close, null_conversion_convert, null_conversion_get_state, null_conversion_set_state, null_conversion_get_mb_cur_max, null_conversion_is_stateful }; picolibc-1.7.4/newlib/libc/iconv/lib/ucsconv.c000066400000000000000000000225321414576234500212270ustar00rootroot00000000000000/* * Copyright (c) 2003-2004, Artem B. Bityuckiy * Copyright (c) 1999,2000, Konstantin Chuguev. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include <_ansi.h> #include #include #include #include #include "local.h" #include "conv.h" #include "ucsconv.h" static int fake_data; static int find_encoding_name (const char *searchee, const char **names); /* * UCS-based conversion interface functions implementation. */ static void * ucs_based_conversion_open ( const char *to, const char *from) { iconv_ucs_conversion_t *uc; const iconv_to_ucs_ces_t *to_ucs_bices; const iconv_from_ucs_ces_t *from_ucs_bices; uc = (iconv_ucs_conversion_t *) calloc (1, sizeof (iconv_ucs_conversion_t)); if (uc == NULL) return NULL; /* * Find CES converter for "from" encoding ("from" source encoding corresponds * to "to_ucs" CES converter). */ for (to_ucs_bices = &_iconv_to_ucs_ces[0]; to_ucs_bices->names != NULL; to_ucs_bices++) { if (find_encoding_name (from, to_ucs_bices->names) == 0) break; } /* * Find CES converter for "to" encoding ("to" source encoding corresponds * to "from_ucs" CES converter). */ for (from_ucs_bices = &_iconv_from_ucs_ces[0]; from_ucs_bices->names != NULL; from_ucs_bices++) { if (find_encoding_name (to, from_ucs_bices->names) == 0) break; } if (to_ucs_bices->names == NULL || from_ucs_bices->names == NULL) goto error; uc->to_ucs.handlers = to_ucs_bices->handlers; uc->from_ucs.handlers = from_ucs_bices->handlers; /* Initialize "to UCS" CES converter */ if (to_ucs_bices->handlers->init != NULL) { uc->to_ucs.data = to_ucs_bices->handlers->init (from); if (uc->to_ucs.data == NULL) goto error; } else uc->to_ucs.data = (void *)&fake_data; /* Initialize "from UCS" CES converter */ if (from_ucs_bices->handlers->init != NULL) { uc->from_ucs.data = from_ucs_bices->handlers->init (to); if (uc->from_ucs.data == NULL) goto error; } else uc->from_ucs.data = (void *)&fake_data; return uc; error: if (uc->to_ucs.data != NULL && uc->to_ucs.handlers->close != NULL) uc->to_ucs.handlers->close (uc->to_ucs.data); free ((void *)uc); return NULL; } static size_t ucs_based_conversion_close ( void *data) { iconv_ucs_conversion_t *uc; size_t res = 0; uc = (iconv_ucs_conversion_t *)data; if (uc->from_ucs.handlers->close != NULL) res = uc->from_ucs.handlers->close (uc->from_ucs.data); if (uc->to_ucs.handlers->close != NULL) res |= uc->to_ucs.handlers->close (uc->to_ucs.data); free ((void *)data); return res; } static size_t ucs_based_conversion_convert ( void *data, const unsigned char **inbuf, size_t *inbytesleft, unsigned char **outbuf, size_t *outbytesleft, int flags) { unsigned char outbuf1[ICONV_MB_LEN_MAX]; unsigned char *poutbuf1; size_t res = 0; iconv_ucs_conversion_t *uc = (iconv_ucs_conversion_t *)data; while (*inbytesleft > 0) { register size_t bytes; register ucs4_t ch; const unsigned char *inbuf_save = *inbuf; size_t inbyteslef_save = *inbytesleft; if (*outbytesleft == 0) { errno = E2BIG; return (size_t)-1; } ch = uc->to_ucs.handlers->convert_to_ucs (uc->to_ucs.data, inbuf, inbytesleft); if (ch == (ucs4_t)ICONV_CES_BAD_SEQUENCE) { errno = EINVAL; return (size_t)-1; } if (ch == (ucs4_t)ICONV_CES_INVALID_CHARACTER) { errno = EILSEQ; return (size_t)-1; } if (flags & ICONV_DONT_SAVE_BIT) { poutbuf1 = &outbuf1[0]; outbuf = &poutbuf1; } bytes = uc->from_ucs.handlers->convert_from_ucs (uc->from_ucs.data, ch, outbuf, outbytesleft); if (bytes == (size_t)ICONV_CES_NOSPACE) { *inbuf = inbuf_save; *inbytesleft = inbyteslef_save; errno = E2BIG; return (size_t)-1; } else if (bytes == (size_t)ICONV_CES_INVALID_CHARACTER) { if (flags & ICONV_FAIL_BIT) { /* Generate error */ errno = EILSEQ; return (size_t)-1; } /* * For this case SUSv3 stands: "if iconv() encounters a character in the * input buffer that is valid, but for which an identical character does * not exist in the target encoding, iconv() shall perform an * implementation-defined conversion on this character". * Don't generate error, just write default character. */ bytes = uc->from_ucs.handlers->convert_from_ucs ( uc->from_ucs.data, (ucs4_t)DEFAULT_CHARACTER, outbuf, outbytesleft); if ((__int32_t)bytes < 0) { errno = E2BIG; return (size_t)-1; } res += 1; } } return res; } static int ucs_based_conversion_get_mb_cur_max (void *data, int direction) { iconv_ucs_conversion_t *uc = (iconv_ucs_conversion_t *)data; if (direction == 0) return uc->to_ucs.handlers->get_mb_cur_max (uc->to_ucs.data); else return uc->from_ucs.handlers->get_mb_cur_max (uc->from_ucs.data); } static void ucs_based_conversion_get_state (void *data, mbstate_t *state, int direction) { iconv_ucs_conversion_t *uc = (iconv_ucs_conversion_t *)data; mbstate_t nullstate = ICONV_ZERO_MB_STATE_T; if (direction == 0) { if (uc->to_ucs.handlers->get_state != NULL) uc->to_ucs.handlers->get_state (uc->to_ucs.data, state); else *state = nullstate; /* internal copy */ } else { if (uc->from_ucs.handlers->get_state != NULL) uc->from_ucs.handlers->get_state (uc->from_ucs.data, state); else *state = nullstate; /* internal copy */ } return; } static int ucs_based_conversion_set_state (void *data, mbstate_t *state, int direction) { iconv_ucs_conversion_t *uc = (iconv_ucs_conversion_t *)data; if (direction == 0) { if (uc->to_ucs.handlers->set_state != NULL) return uc->to_ucs.handlers->set_state (uc->to_ucs.data, state); } else { if (uc->from_ucs.handlers->set_state != NULL) return uc->from_ucs.handlers->set_state (uc->from_ucs.data, state); } return 0; } static int ucs_based_conversion_is_stateful (void *data, int direction) { iconv_ucs_conversion_t *uc = (iconv_ucs_conversion_t *)data; if (direction == 0) { if (uc->to_ucs.handlers->is_stateful != NULL) return uc->to_ucs.handlers->is_stateful (uc->to_ucs.data); } else { if (uc->from_ucs.handlers->is_stateful != NULL) return uc->from_ucs.handlers->is_stateful (uc->from_ucs.data); } return 0; } /* UCS-based conversion definition object */ const iconv_conversion_handlers_t _iconv_ucs_conversion_handlers = { ucs_based_conversion_open, ucs_based_conversion_close, ucs_based_conversion_convert, ucs_based_conversion_get_state, ucs_based_conversion_set_state, ucs_based_conversion_get_mb_cur_max, ucs_based_conversion_is_stateful }; /* * Supplementary functions. */ static int find_encoding_name (const char *searchee, const char **names) { const char *p; for (p = *names; p != NULL; p = *(names++)) if (strcmp (p, searchee) == 0) return 0; return -1; } picolibc-1.7.4/newlib/libc/iconv/lib/ucsconv.h000066400000000000000000000242551414576234500212400ustar00rootroot00000000000000/* * Copyright (c) 2003-2004, Artem B. Bityuckiy * Copyright (c) 1999,2000, Konstantin Chuguev. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifndef __ICONV_UCS_CONVERSION_H__ #define __ICONV_UCS_CONVERSION_H__ #include <_ansi.h> #include #include #include "local.h" /* No enough space in output buffer */ #define ICONV_CES_NOSPACE 0 /* Invalid input character */ #define ICONV_CES_INVALID_CHARACTER -1 /* No corespondent character in destination encoding */ #define ICONV_CES_BAD_SEQUENCE -2 /* All unknown characters are marked by this code */ #define DEFAULT_CHARACTER 0x3f /* ASCII '?' */ /* * iconv_to_ucs_ces_handlers_t - "to UCS" CES converter handlers. * * Structure contains function pointers which should be provided by * "to_ucs" CES converter. * * ============================================================================ */ typedef struct { /* * init - initialize CES converter. * * PARAMETERS: * const char *encoding - encoding name. * * DESCRIPTION: * Initializes CES converter. CES converter may deal with a series of * encodings, such as Table or EUC CES converters. 'encoding' parameter * indicates which encoding CES converter should use. * * RETURN: * Returns CES-specific data pointer if success. In case of error returns * NULL and sets current thread's/process's errno. */ void *(*init) ( const char *encoding); /* * close - close CES converter. * * PARAMETERS: * void *data - CES converter-specific data. * * DESCRIPTION: * Preforms CES converter closing. * * RETURN: * Returns (size_t)0 if success. In case of error returns (size_t)-1 and * sets current thread's/process's errno. */ size_t (*close) ( void *data); /* * get_mb_cur_max - get maximum character length in bytes. * * PARAMETERS: * void *data - conversion-specific data; * * DESCRIPTION: * Returns encoding's maximum character length. */ int (*get_mb_cur_max) (void *data); /* * get_state - get current shift state. * * PARAMETERS: * void *data - conversion-specific data; * mbstate_t *state - mbstate_t object where shift state will be stored; * * DESCRIPTION: * Returns encoding's current shift sequence. */ void (*get_state) (void *data, mbstate_t *state); /* * set_state - set shift state. * * PARAMETERS: * void *data - conversion-specific data; * mbstate_t *state - mbstate_t value to which shift state will be set. * * DESCRIPTION: * Sets encoding's current shift state to 'state'. if 'state' * object is zero-object - reset current shift state. * Returns 0 if '*state' object has right format, -1 else. */ int (*set_state) (void *data, mbstate_t *state); /* * is_stateful - is encoding stateful state. * * PARAMETERS: * void *data - conversion-specific data; * * DESCRIPTION: * Returns 0 if encoding is stateless, else returns 1. */ int (*is_stateful) (void *data); /* * convert_to_ucs - convert character to UCS. * * PARAMETERS: * void *data - CES converter-specific data; * const unsigned char **inbuf - buffer with input character byte sequence; * size_t *inbytesleft - output buffer bytes count. * * DESCRIPTION: * Converts input characters into UCS encoding. 'inbuf' is * incremented accordingly. 'bytesleft' is decremented accordingly. Should * be provided by correspondent CES module. * * RETURN: * Returns resulting UCS code if success. If input character is invalid, * returns ICONV_CES_INVALID_CHARACTER. If invalid or incomplete bytes * sequence was met, returns ICONV_CES_BAD_SEQUENCE. */ ucs4_t (*convert_to_ucs) (void *data, const unsigned char **inbuf, size_t *inbytesleft); } iconv_to_ucs_ces_handlers_t; /* * iconv_from_ucs_ces_handlers_t - "from UCS" CES converter handlers. * * Structure contains function pointers which should be provided by * "from_ucs" CES converter. * * ============================================================================ */ typedef struct { /* Same as in iconv_to_ucs_ces_handlers_t */ void *(*init) ( const char *encoding); /* Same as in iconv_to_ucs_ces_handlers_t */ size_t (*close) ( void *data); /* Same as in iconv_to_ucs_ces_handlers_t */ int (*get_mb_cur_max) (void *data); /* Same as in iconv_to_ucs_ces_handlers_t */ void (*get_state) (void *data, mbstate_t *state); /* Same as in iconv_to_ucs_ces_handlers_t */ int (*set_state) (void *data, mbstate_t *state); /* Same as in iconv_to_ucs_ces_handlers_t */ int (*is_stateful) (void *data); /* * convert_from_ucs - convert UCS character to destination encoding. * * PARAMETERS: * void *data - CES converter-specific data; * ucs4_t in - input UCS-4 character; * unsigned char **outbuf - output buffer for the result; * size_t *outbytesleft - output buffer bytes count. * * DESCRIPTION: * Converts input UCS characters to destination encoding and stores result * in 'outbuf' if there is sufficient free space present. 'outbuf' is * incremented accordingly. 'outbytesleft' is decremented accordingly. Should * be provided by correspondent CES module. * Output buffer always has at least 1 byte. * * RETURN: * Returns number of bytes that was written into output buffer if success. * If there is no enough space in output buffer, returns ICONV_CES_NOSPACE. * If there is no corresponding character in destination encoding, returns * ICONV_CES_INVALID_CHARACTER. */ size_t (*convert_from_ucs) (void *data, ucs4_t in, unsigned char **outbuf, size_t *outbytesleft); } iconv_from_ucs_ces_handlers_t; /* * iconv_to_ucs_ces_desc_t - "to UCS" CES converter definition structure for * usage in iconv_ucs_conversion_t conversion description structure. * * ============================================================================ */ typedef struct { /* CES converter handlers */ const iconv_to_ucs_ces_handlers_t *handlers; /* "to_ucs" CES converter-specific data. */ void *data; } iconv_to_ucs_ces_desc_t; /* * iconv_from_ucs_ces_desc_t - "from UCS" CES converter definition structure for * usage in iconv_ucs_conversion_t conversion description structure. * * ============================================================================ */ typedef struct { /* CES converter handlers */ const iconv_from_ucs_ces_handlers_t *handlers; /* "from_ucs" CES converter-specific data. */ void *data; } iconv_from_ucs_ces_desc_t; /* * iconv_ucs_conversion_t - UCS-based conversion definition structure. * * Defines special type of conversion where every character is first * converted into UCS-4 (UCS-2 for table-driven), and after this the * resulting UCS character is converted to destination encoding. * UCS-based conversion is composed of two *converters*, defined by * iconv_ces_t structure. The iconv_ucs_conversion_t object is referred * from iconv_conversion_t object using 'data' field. * * Structure contains two objects - 'to_ucs' and 'from_ucs' which define * "source encoding to UCS" and "UCS to destination encoding" converters. * * ============================================================================ */ typedef struct { /* Source encoding -> CES converter. */ iconv_to_ucs_ces_desc_t to_ucs; /* UCS -> destination encoding CES converter. */ iconv_from_ucs_ces_desc_t from_ucs; } iconv_ucs_conversion_t; /* * iconv_to_ucs_ces_t - defines "to UCS" CES converter. * * ============================================================================ */ typedef struct { /* * An array of encodings names, supported by CES converter. * The end of array should be marked by NULL pointer. */ const char **names; /* CES converter description structure */ const iconv_to_ucs_ces_handlers_t *handlers; } iconv_to_ucs_ces_t; /* * iconv_from_ucs_ces_t - defines "from UCS" CES converter. * * ============================================================================ */ typedef struct { /* * An array of encodings names, supported by CES converter. * The end of array should be marked by NULL pointer. */ const char **names; /* CES converter description structure */ const iconv_from_ucs_ces_handlers_t *handlers; } iconv_from_ucs_ces_t; /* List of "to UCS" linked-in CES converters. */ extern const iconv_to_ucs_ces_t _iconv_to_ucs_ces[]; /* List of "from UCS" linked-in CES converters. */ extern const iconv_from_ucs_ces_t _iconv_from_ucs_ces[]; #endif /* !__ICONV_UCS_CONVERSION_H__ */ picolibc-1.7.4/newlib/libc/iconv/meson.build000066400000000000000000000033331414576234500207750ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # libdirs = ['ces', 'ccs', 'lib'] libsrcs = [] foreach libdir : libdirs subdir(libdir) libsrcs += get_variable('src_iconv_' + libdir, []) endforeach src_iconv = libsrcs picolibc-1.7.4/newlib/libc/include/000077500000000000000000000000001414576234500171365ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/include/_ansi.h000066400000000000000000000105011414576234500203750ustar00rootroot00000000000000/* Copyright (c) 1991, 1993 The Regents of the University of California. All rights reserved. c) UNIX System Laboratories, Inc. All or some portions of this file are derived from material licensed to the University of California by American Telephone and Telegraph Co. or Unix System Laboratories, Inc. and are reproduced herein with the permission of UNIX System Laboratories, Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Provide support for both ANSI and non-ANSI environments. */ /* To get a strict ANSI C environment, define macro __STRICT_ANSI__. This will "comment out" the non-ANSI parts of the ANSI header files (non-ANSI header files aren't affected). */ #ifndef _ANSIDECL_H_ #define _ANSIDECL_H_ #include #include /* ISO C++. */ #ifdef __cplusplus #if !(defined(_BEGIN_STD_C) && defined(_END_STD_C)) #ifdef _HAVE_STD_CXX #define _BEGIN_STD_C namespace std { extern "C" { #define _END_STD_C } } #else #define _BEGIN_STD_C extern "C" { #define _END_STD_C } #endif #if __GNUC_PREREQ (3, 3) #define _NOTHROW __attribute__ ((__nothrow__)) #else #define _NOTHROW throw() #endif #endif #else #define _BEGIN_STD_C #define _END_STD_C #define _NOTHROW #endif #ifndef _LONG_DOUBLE #define _LONG_DOUBLE long double #endif /* Support gcc's __attribute__ facility. */ #ifdef __GNUC__ #define _ATTRIBUTE(attrs) __attribute__ (attrs) #else #define _ATTRIBUTE(attrs) #endif /* The traditional meaning of 'extern inline' for GCC is not to emit the function body unless the address is explicitly taken. However this behaviour is changing to match the C99 standard, which uses 'extern inline' to indicate that the function body *must* be emitted. Likewise, a function declared without either 'extern' or 'static' defaults to extern linkage (C99 6.2.2p5), and the compiler may choose whether to use the inline version or call the extern linkage version (6.7.4p6). If we are using GCC, but do not have the new behaviour, we need to use extern inline; if we are using a new GCC with the C99-compatible behaviour, or a non-GCC compiler (which we will have to hope is C99, since there is no other way to achieve the effect of omitting the function if it isn't referenced) we use 'static inline', which c99 defines to mean more-or-less the same as the Gnu C 'extern inline'. */ #if defined(__GNUC__) && !defined(__GNUC_STDC_INLINE__) /* We're using GCC, but without the new C99-compatible behaviour. */ #define _ELIDABLE_INLINE extern __inline__ _ATTRIBUTE ((__always_inline__)) #else /* We're using GCC in C99 mode, or an unknown compiler which we just have to hope obeys the C99 semantics of inline. */ #define _ELIDABLE_INLINE static __inline__ #endif #if __GNUC_PREREQ (3, 1) #define _NOINLINE __attribute__ ((__noinline__)) #define _NOINLINE_STATIC _NOINLINE static #else /* On non-GNU compilers and GCC prior to version 3.1 the compiler can't be trusted not to inline if it is static. */ #define _NOINLINE #define _NOINLINE_STATIC #endif #endif /* _ANSIDECL_H_ */ picolibc-1.7.4/newlib/libc/include/_newlib_version.h000066400000000000000000000002341414576234500224720ustar00rootroot00000000000000/* Copyright (c) 2016 Jeff Johnston */ /* dummy file for external tools to use. Real file is created by newlib configuration. */ picolibc-1.7.4/newlib/libc/include/_syslist.h000066400000000000000000000056221414576234500211650ustar00rootroot00000000000000/* Copyright (c) 1991, 1993 The Regents of the University of California. All rights reserved. c) UNIX System Laboratories, Inc. All or some portions of this file are derived from material licensed to the University of California by American Telephone and Telegraph Co. or Unix System Laboratories, Inc. and are reproduced herein with the permission of UNIX System Laboratories, Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* internal use only -- mapping of "system calls" for libraries that lose and only provide C names, so that we end up in violation of ANSI */ #ifndef __SYSLIST_H #define __SYSLIST_H #ifdef MISSING_SYSCALL_NAMES #define _close close #define _execve execve #define _fcntl fcntl #define _fork fork #define _fstat fstat #define _getpid getpid #define _gettimeofday gettimeofday #define _isatty isatty #define _kill kill #define _link link #define _lseek lseek #define _mkdir mkdir #define _open open #define _read read #define _sbrk sbrk #define _stat stat #define _times times #define _unlink unlink #define _wait wait #define _write write #endif /* MISSING_SYSCALL_NAMES */ #if defined MISSING_SYSCALL_NAMES || !defined HAVE_OPENDIR /* If the system call interface is missing opendir, readdir, and closedir, there is an implementation of these functions in libc/posix that is implemented using open, getdents, and close. Note, these functions are currently not in the libc/syscalls directory. */ #define _opendir opendir #define _readdir readdir #define _closedir closedir #endif /* MISSING_SYSCALL_NAMES || !HAVE_OPENDIR */ #endif /* !__SYSLIST_H_ */ picolibc-1.7.4/newlib/libc/include/alloca.h000066400000000000000000000006231414576234500205430ustar00rootroot00000000000000/* libc/include/alloca.h - Allocate memory on stack */ /* Copyright (c) 2000 Werner Almesberger */ /* Rearranged for general inclusion by stdlib.h. 2001, Corinna Vinschen */ #ifndef _NEWLIB_ALLOCA_H #define _NEWLIB_ALLOCA_H #include "_ansi.h" #undef alloca #ifdef HAVE_BUILTIN_ALLOCA #define alloca(size) __builtin_alloca(size) #else void * alloca (size_t); #endif #endif picolibc-1.7.4/newlib/libc/include/ar.h000066400000000000000000000052411414576234500177130ustar00rootroot00000000000000/* $NetBSD: ar.h,v 1.4 1994/10/26 00:55:43 cgd Exp $ */ /*- * Copyright (c) 1991, 1993 * The Regents of the University of California. All rights reserved. * (c) UNIX System Laboratories, Inc. * All or some portions of this file are derived from material licensed * to the University of California by American Telephone and Telegraph * Co. or Unix System Laboratories, Inc. and are reproduced herein with * the permission of UNIX System Laboratories, Inc. * * This code is derived from software contributed to Berkeley by * Hugh Smith at The University of Guelph. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)ar.h 8.2 (Berkeley) 1/21/94 */ #ifndef _AR_H_ #define _AR_H_ /* Pre-4BSD archives had these magic numbers in them. */ #define OARMAG1 0177555 #define OARMAG2 0177545 #define ARMAG "!\n" /* ar "magic number" */ #define SARMAG 8 /* strlen(ARMAG); */ #define AR_EFMT1 "#1/" /* extended format #1 */ struct ar_hdr { char ar_name[16]; /* name */ char ar_date[12]; /* modification time */ char ar_uid[6]; /* user id */ char ar_gid[6]; /* group id */ char ar_mode[8]; /* octal file permissions */ char ar_size[10]; /* size in bytes */ #define ARFMAG "`\n" char ar_fmag[2]; /* consistency check */ }; #endif /* !_AR_H_ */ picolibc-1.7.4/newlib/libc/include/argz.h000066400000000000000000000024711414576234500202560ustar00rootroot00000000000000/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #ifndef _ARGZ_H_ #define _ARGZ_H_ #include #include #include "_ansi.h" _BEGIN_STD_C /* The newlib implementation of these functions assumes that sizeof(char) == 1. */ error_t argz_create (char *const argv[], char **argz, size_t *argz_len); error_t argz_create_sep (const char *string, int sep, char **argz, size_t *argz_len); size_t argz_count (const char *argz, size_t argz_len); void argz_extract (char *argz, size_t argz_len, char **argv); void argz_stringify (char *argz, size_t argz_len, int sep); error_t argz_add (char **argz, size_t *argz_len, const char *str); error_t argz_add_sep (char **argz, size_t *argz_len, const char *str, int sep); error_t argz_append (char **argz, size_t *argz_len, const char *buf, size_t buf_len); error_t argz_delete (char **argz, size_t *argz_len, char *entry); error_t argz_insert (char **argz, size_t *argz_len, char *before, const char *entry); char * argz_next (char *argz, size_t argz_len, const char *entry); error_t argz_replace (char **argz, size_t *argz_len, const char *str, const char *with, unsigned *replace_count); _END_STD_C #endif /* _ARGZ_H_ */ picolibc-1.7.4/newlib/libc/include/assert.h000066400000000000000000000056241414576234500206170ustar00rootroot00000000000000/* Copyright (c) 1991, 1993 The Regents of the University of California. All rights reserved. c) UNIX System Laboratories, Inc. All or some portions of this file are derived from material licensed to the University of California by American Telephone and Telegraph Co. or Unix System Laboratories, Inc. and are reproduced herein with the permission of UNIX System Laboratories, Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* assert.h */ #ifdef __cplusplus extern "C" { #endif #include "_ansi.h" #undef assert #ifdef NDEBUG /* required by ANSI standard */ # define assert(__e) ((void)0) #else # define assert(__e) ((__e) ? (void)0 : __assert_func (__FILE__, __LINE__, \ __ASSERT_FUNC, #__e)) # ifndef __ASSERT_FUNC /* Use g++'s demangled names in C++. */ # if defined __cplusplus && defined __GNUC__ # define __ASSERT_FUNC __PRETTY_FUNCTION__ /* C99 requires the use of __func__. */ # elif __STDC_VERSION__ >= 199901L # define __ASSERT_FUNC __func__ /* Older versions of gcc don't have __func__ but can use __FUNCTION__. */ # elif __GNUC__ >= 2 # define __ASSERT_FUNC __FUNCTION__ /* failed to detect __func__ support. */ # else # define __ASSERT_FUNC ((char *) 0) # endif # endif /* !__ASSERT_FUNC */ #endif /* !NDEBUG */ void __assert (const char *, const char *, int) _ATTRIBUTE ((__noreturn__)); void __assert_func (const char *, int, const char *, const char *) _ATTRIBUTE ((__noreturn__)); #if __STDC_VERSION__ >= 201112L && !defined __cplusplus # define static_assert _Static_assert #endif #ifdef __cplusplus } #endif picolibc-1.7.4/newlib/libc/include/complex.h000066400000000000000000000105011414576234500207530ustar00rootroot00000000000000/* $NetBSD: complex.h,v 1.3 2010/09/15 16:11:30 christos Exp $ */ /* * Copyright (c) 2010 Matthias Drochner. * Public domain. */ #ifndef _COMPLEX_H #define _COMPLEX_H #define complex _Complex #define _Complex_I 1.0fi #define I _Complex_I #include __BEGIN_DECLS /* 7.3.5 Trigonometric functions */ /* 7.3.5.1 The cacos functions */ double complex cacos(double complex); float complex cacosf(float complex); /* 7.3.5.2 The casin functions */ double complex casin(double complex); float complex casinf(float complex); long double complex casinl(long double complex); /* 7.3.5.1 The catan functions */ double complex catan(double complex); float complex catanf(float complex); long double complex catanl(long double complex); /* 7.3.5.1 The ccos functions */ double complex ccos(double complex); float complex ccosf(float complex); /* 7.3.5.1 The csin functions */ double complex csin(double complex); float complex csinf(float complex); /* 7.3.5.1 The ctan functions */ double complex ctan(double complex); float complex ctanf(float complex); /* 7.3.6 Hyperbolic functions */ /* 7.3.6.1 The cacosh functions */ double complex cacosh(double complex); float complex cacoshf(float complex); /* 7.3.6.2 The casinh functions */ double complex casinh(double complex); float complex casinhf(float complex); /* 7.3.6.3 The catanh functions */ double complex catanh(double complex); float complex catanhf(float complex); /* 7.3.6.4 The ccosh functions */ double complex ccosh(double complex); float complex ccoshf(float complex); /* 7.3.6.5 The csinh functions */ double complex csinh(double complex); float complex csinhf(float complex); /* 7.3.6.6 The ctanh functions */ double complex ctanh(double complex); float complex ctanhf(float complex); /* 7.3.7 Exponential and logarithmic functions */ /* 7.3.7.1 The cexp functions */ double complex cexp(double complex); float complex cexpf(float complex); /* 7.3.7.2 The clog functions */ double complex clog(double complex); float complex clogf(float complex); long double complex clogl(long double complex); /* 7.3.8 Power and absolute-value functions */ /* 7.3.8.1 The cabs functions */ /*#ifndef __LIBM0_SOURCE__ */ /* avoid conflict with historical cabs(struct complex) */ /* double cabs(double complex) __RENAME(__c99_cabs); float cabsf(float complex) __RENAME(__c99_cabsf); #endif */ long double cabsl(long double complex) ; double cabs(double complex) ; float cabsf(float complex) ; /* 7.3.8.2 The cpow functions */ double complex cpow(double complex, double complex); float complex cpowf(float complex, float complex); /* 7.3.8.3 The csqrt functions */ double complex csqrt(double complex); float complex csqrtf(float complex); long double complex csqrtl(long double complex); /* 7.3.9 Manipulation functions */ /* 7.3.9.1 The carg functions */ double carg(double complex); float cargf(float complex); long double cargl(long double complex); /* 7.3.9.2 The cimag functions */ double cimag(double complex); float cimagf(float complex); long double cimagl(long double complex); /* 7.3.9.3 The conj functions */ double complex conj(double complex); float complex conjf(float complex); long double complex conjl(long double complex); /* 7.3.9.4 The cproj functions */ double complex cproj(double complex); float complex cprojf(float complex); long double complex cprojl(long double complex); /* 7.3.9.5 The creal functions */ double creal(double complex); float crealf(float complex); long double creall(long double complex); #if __GNU_VISIBLE double complex clog10(double complex); float complex clog10f(float complex); #endif #if defined(__CYGWIN__) || defined(_LDBL_EQ_DBL) long double complex cacosl(long double complex); long double complex ccosl(long double complex); long double complex csinl(long double complex); long double complex ctanl(long double complex); long double complex cacoshl(long double complex); long double complex casinhl(long double complex); long double complex catanhl(long double complex); long double complex ccoshl(long double complex); long double complex csinhl(long double complex); long double complex ctanhl(long double complex); long double complex cexpl(long double complex); long double complex cpowl(long double complex, long double complex); #if __GNU_VISIBLE long double complex clog10l(long double complex); #endif #endif /* __CYGWIN__ */ __END_DECLS #endif /* ! _COMPLEX_H */ picolibc-1.7.4/newlib/libc/include/cpio.h000066400000000000000000000021601414576234500202400ustar00rootroot00000000000000/* Copyright (c) 2016 Yaakov Selkowitz */ /* POSIX.1 symbolic constants for c_mode field of cpio archive format */ #ifndef _CPIO_H #define _CPIO_H #define C_IRUSR 0000400 /* Read by owner */ #define C_IWUSR 0000200 /* Write by owner */ #define C_IXUSR 0000100 /* Execute by owner */ #define C_IRGRP 0000040 /* Read by group */ #define C_IWGRP 0000020 /* Write by group */ #define C_IXGRP 0000010 /* Execute by group */ #define C_IROTH 0000004 /* Read by others */ #define C_IWOTH 0000002 /* Write by others */ #define C_IXOTH 0000001 /* Execute by others */ #define C_ISUID 0004000 /* Set user ID */ #define C_ISGID 0002000 /* Set group ID */ #define C_ISVTX 0001000 /* On directories, restricted deletion flag */ #define C_ISDIR 0040000 /* Directory */ #define C_ISFIFO 0010000 /* FIFO */ #define C_ISREG 0100000 /* Regular file */ #define C_ISBLK 0060000 /* Block special */ #define C_ISCHR 0020000 /* Character special */ #define C_ISCTG 0110000 /* Reserved */ #define C_ISLNK 0120000 /* Symbolic link */ #define C_ISSOCK 0140000 /* Socket */ #define MAGIC "070707" #endif /* _CPIO_H */ picolibc-1.7.4/newlib/libc/include/ctype.h000066400000000000000000000162421414576234500204400ustar00rootroot00000000000000/* Copyright (c) 1991, 1993 The Regents of the University of California. All rights reserved. c) UNIX System Laboratories, Inc. All or some portions of this file are derived from material licensed to the University of California by American Telephone and Telegraph Co. or Unix System Laboratories, Inc. and are reproduced herein with the permission of UNIX System Laboratories, Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _CTYPE_H_ #define _CTYPE_H_ #include "_ansi.h" #include #include #if __POSIX_VISIBLE >= 200809 || __MISC_VISIBLE || defined (_COMPILING_NEWLIB) #include #endif _BEGIN_STD_C int isalnum (int __c); int isalpha (int __c); int iscntrl (int __c); int isdigit (int __c); int isgraph (int __c); int islower (int __c); int isprint (int __c); int ispunct (int __c); int isspace (int __c); int isupper (int __c); int isxdigit (int __c); int tolower (int __c); int toupper (int __c); #if __ISO_C_VISIBLE >= 1999 #ifdef _DEFINING_ISBLANK int isblank(int c); #else static __inline int isblank(int c) { return c == ' ' || c == '\t'; } #endif #endif #if __MISC_VISIBLE || __XSI_VISIBLE int isascii (int __c); int toascii (int __c); #define _tolower(__c) ((unsigned char)(__c) - 'A' + 'a') #define _toupper(__c) ((unsigned char)(__c) - 'a' + 'A') #endif #if __POSIX_VISIBLE >= 200809 extern int isalnum_l (int __c, locale_t __l); extern int isalpha_l (int __c, locale_t __l); extern int isblank_l (int __c, locale_t __l); extern int iscntrl_l (int __c, locale_t __l); extern int isdigit_l (int __c, locale_t __l); extern int isgraph_l (int __c, locale_t __l); extern int islower_l (int __c, locale_t __l); extern int isprint_l (int __c, locale_t __l); extern int ispunct_l (int __c, locale_t __l); extern int isspace_l (int __c, locale_t __l); extern int isupper_l (int __c, locale_t __l); extern int isxdigit_l(int __c, locale_t __l); extern int tolower_l (int __c, locale_t __l); extern int toupper_l (int __c, locale_t __l); #endif #if __MISC_VISIBLE extern int isascii_l (int __c, locale_t __l); extern int toascii_l (int __c, locale_t __l); #endif #define _U 01 #define _L 02 #define _N 04 #define _S 010 #define _P 020 #define _C 040 #define _X 0100 #define _B 0200 #if CHAR_MIN == SCHAR_MIN #define ALLOW_NEGATIVE_CTYPE_INDEX #endif #if defined(ALLOW_NEGATIVE_CTYPE_INDEX) extern __IMPORT const char _ctype_b[]; #define _ctype_ (_ctype_b + 127) #else extern __IMPORT const char _ctype_[]; #endif #ifdef __HAVE_LOCALE_INFO__ const char *__locale_ctype_ptr (void); #else #define __locale_ctype_ptr() _ctype_ #endif # define __CTYPE_PTR (__locale_ctype_ptr ()) #ifndef __cplusplus static __inline char __ctype_lookup(int c) { return (__CTYPE_PTR + 1)[c]; } #define isalpha(__c) (__ctype_lookup(__c)&(_U|_L)) #define isupper(__c) ((__ctype_lookup(__c)&(_U|_L))==_U) #define islower(__c) ((__ctype_lookup(__c)&(_U|_L))==_L) #define isdigit(__c) (__ctype_lookup(__c)&_N) #define isxdigit(__c) (__ctype_lookup(__c)&(_X|_N)) #define isspace(__c) (__ctype_lookup(__c)&_S) #define ispunct(__c) (__ctype_lookup(__c)&_P) #define isalnum(__c) (__ctype_lookup(__c)&(_U|_L|_N)) #define isprint(__c) (__ctype_lookup(__c)&(_P|_U|_L|_N|_B)) #define isgraph(__c) (__ctype_lookup(__c)&(_P|_U|_L|_N)) #define iscntrl(__c) (__ctype_lookup(__c)&_C) #if __POSIX_VISIBLE >= 200809 #ifdef __HAVE_LOCALE_INFO__ const char *__locale_ctype_ptr_l (locale_t); #else static __inline const char * __locale_ctype_ptr_l(locale_t _l) { (void)_l; return __locale_ctype_ptr(); } #endif static __inline char __ctype_lookup_l(int c, locale_t l) { return (__locale_ctype_ptr_l(l)+1)[(int)(c)]; } #define isalpha_l(__c,__l) (__ctype_lookup_l(__c,__l)&(_U|_L)) #define isupper_l(__c,__l) ((__ctype_lookup_l(__c,__l)&(_U|_L))==_U) #define islower_l(__c,__l) ((__ctype_lookup_l(__c,__l)&(_U|_L))==_L) #define isdigit_l(__c,__l) (__ctype_lookup_l(__c,__l)&_N) #define isxdigit_l(__c,__l) (__ctype_lookup_l(__c,__l)&(_X|_N)) #define isspace_l(__c,__l) (__ctype_lookup_l(__c,__l)&_S) #define ispunct_l(__c,__l) (__ctype_lookup_l(__c,__l)&_P) #define isalnum_l(__c,__l) (__ctype_lookup_l(__c,__l)&(_U|_L|_N)) #define isprint_l(__c,__l) (__ctype_lookup_l(__c,__l)&(_P|_U|_L|_N|_B)) #define isgraph_l(__c,__l) (__ctype_lookup_l(__c,__l)&(_P|_U|_L|_N)) #define iscntrl_l(__c,__l) (__ctype_lookup_l(__c,__l)&_C) #if defined(__GNUC__) #define isblank_l(__c, __l) \ __extension__ ({ __typeof__ (__c) __x = (__c); \ (__ctype_lookup_l(__x,__l)&_B) || (int) (__x) == '\t';}) #endif #endif /* __POSIX_VISIBLE >= 200809 */ #if __MISC_VISIBLE || __XSI_VISIBLE #define isascii(__c) ((unsigned)(__c)<=0177) #define toascii(__c) ((__c)&0177) #endif #if __MISC_VISIBLE #define isascii_l(__c,__l) ((__l),(unsigned)(__c)<=0177) #define toascii_l(__c,__l) ((__l),(__c)&0177) #endif /* Non-gcc versions will get the library versions, and will be slightly slower. These macros are not NLS-aware so they are disabled if the system supports the extended character sets. */ # if defined(__GNUC__) # if !defined (_MB_EXTENDED_CHARSETS_ISO) && !defined (_MB_EXTENDED_CHARSETS_WINDOWS) # define toupper(__c) \ __extension__ ({ __typeof__ (__c) __x = (__c); \ islower (__x) ? (int) __x - 'a' + 'A' : (int) __x;}) # define tolower(__c) \ __extension__ ({ __typeof__ (__c) __x = (__c); \ isupper (__x) ? (int) __x - 'A' + 'a' : (int) __x;}) # else /* _MB_EXTENDED_CHARSETS* */ /* Allow a gcc warning if the user passed 'char', but defer to the function. */ # define toupper(__c) \ __extension__ ({ __typeof__ (__c) __x = (__c); \ (void) __CTYPE_PTR[__x]; (toupper) (__x);}) # define tolower(__c) \ __extension__ ({ __typeof__ (__c) __x = (__c); \ (void) __CTYPE_PTR[__x]; (tolower) (__x);}) # endif /* _MB_EXTENDED_CHARSETS* */ # endif /* __GNUC__ */ #if __POSIX_VISIBLE >= 200809 #endif /* __POSIX_VISIBLE >= 200809 */ #endif /* !__cplusplus */ _END_STD_C #endif /* _CTYPE_H_ */ picolibc-1.7.4/newlib/libc/include/devctl.h000066400000000000000000000050611414576234500205720ustar00rootroot00000000000000/* * Copyright (c) 2016,2019 Joel Sherrill . * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifndef _POSIX_DEVCTL_h_ #define _POSIX_DEVCTL_h_ /* * Nothing in this file should be visible unless _POSIX_26_C_SOURCE is * defined. */ #ifdef _POSIX_26_C_SOURCE #include #ifdef __cplusplus extern "C" { #endif #if defined(__rtems__) /* * The FACE Technical Standard, Edition 3.0 and later require the * definition of the subcommand SOCKCLOSE in . * * Reference: https://www.opengroup.org/face * * Using 'D' should avoid the letters used by other users of */ #include #define SOCKCLOSE _IO('D', 1) /* socket close */ #endif /* * The posix_devctl() method is defined by POSIX 1003.26-2003. Aside * from the single method, it adds the following requirements: * * + define _POSIX_26_VERSION to 200312L * + add _SC_POSIX_26_VERSION in . Return _POSIX_26_VERSION * + application must define _POSIX_26_C_SOURCE to use posix_devctl(). * + posix_devctl() is prototyped in */ int posix_devctl( int fd, int dcmd, void *__restrict dev_data_ptr, size_t nbyte, int *__restrict dev_info_ptr ); #ifdef __cplusplus } #endif #endif /* _POSIX_26_C_SOURCE */ #endif /*_POSIX_DEVCTL_h_ */ picolibc-1.7.4/newlib/libc/include/dirent.h000066400000000000000000000060471414576234500206030ustar00rootroot00000000000000/*- * SPDX-License-Identifier: BSD-3-Clause * * Copyright (c) 1989, 1993 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)dirent.h 8.3 (Berkeley) 8/10/94 * $FreeBSD: head/include/dirent.h 326024 2017-11-20 19:45:28Z pfg $ */ #ifndef _DIRENT_H_ #define _DIRENT_H_ #include #include #if !defined(MAXNAMLEN) && __BSD_VISIBLE #define MAXNAMLEN 1024 #endif __BEGIN_DECLS #if __MISC_VISIBLE || __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE >= 700 int alphasort(const struct dirent **, const struct dirent **); int dirfd(DIR *); #endif #if __BSD_VISIBLE int fdclosedir(DIR *); #endif DIR *opendir(const char *); DIR *fdopendir(int); struct dirent * readdir(DIR *); #if __POSIX_VISIBLE >= 199506 || __XSI_VISIBLE >= 500 int readdir_r(DIR *__restrict, struct dirent *__restrict, struct dirent **__restrict); #endif void rewinddir(DIR *); #if __MISC_VISIBLE || __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE >= 700 int scandir(const char *, struct dirent ***, int (*)(const struct dirent *), int (*)(const struct dirent **, const struct dirent **)); #endif #ifdef _COMPILING_NEWLIB void _seekdir(DIR *, long); #endif #if __MISC_VISIBLE || __XSI_VISIBLE #ifndef __INSIDE_CYGWIN__ void seekdir(DIR *, long); long telldir(DIR *); #endif #endif int closedir(DIR *); #if __GNU_VISIBLE int scandirat(int, const char *, struct dirent ***, int (*) (const struct dirent *), int (*) (const struct dirent **, const struct dirent **)); int versionsort(const struct dirent **, const struct dirent **); #endif __END_DECLS #endif /*_DIRENT_H_*/ picolibc-1.7.4/newlib/libc/include/elf.h000066400000000000000000002241771414576234500200720ustar00rootroot00000000000000/* From musl include/elf.h Copyright © 2005-2014 Rich Felker, et al. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef _ELF_H #define _ELF_H #ifdef __cplusplus extern "C" { #endif #include typedef uint16_t Elf32_Half; typedef uint16_t Elf64_Half; typedef uint32_t Elf32_Word; typedef int32_t Elf32_Sword; typedef uint32_t Elf64_Word; typedef int32_t Elf64_Sword; typedef uint64_t Elf32_Xword; typedef int64_t Elf32_Sxword; typedef uint64_t Elf64_Xword; typedef int64_t Elf64_Sxword; typedef uint32_t Elf32_Addr; typedef uint64_t Elf64_Addr; typedef uint32_t Elf32_Off; typedef uint64_t Elf64_Off; typedef uint16_t Elf32_Section; typedef uint16_t Elf64_Section; typedef Elf32_Half Elf32_Versym; typedef Elf64_Half Elf64_Versym; #define EI_NIDENT (16) typedef struct { unsigned char e_ident[EI_NIDENT]; Elf32_Half e_type; Elf32_Half e_machine; Elf32_Word e_version; Elf32_Addr e_entry; Elf32_Off e_phoff; Elf32_Off e_shoff; Elf32_Word e_flags; Elf32_Half e_ehsize; Elf32_Half e_phentsize; Elf32_Half e_phnum; Elf32_Half e_shentsize; Elf32_Half e_shnum; Elf32_Half e_shstrndx; } Elf32_Ehdr; typedef struct { unsigned char e_ident[EI_NIDENT]; Elf64_Half e_type; Elf64_Half e_machine; Elf64_Word e_version; Elf64_Addr e_entry; Elf64_Off e_phoff; Elf64_Off e_shoff; Elf64_Word e_flags; Elf64_Half e_ehsize; Elf64_Half e_phentsize; Elf64_Half e_phnum; Elf64_Half e_shentsize; Elf64_Half e_shnum; Elf64_Half e_shstrndx; } Elf64_Ehdr; #define EI_MAG0 0 #define ELFMAG0 0x7f #define EI_MAG1 1 #define ELFMAG1 'E' #define EI_MAG2 2 #define ELFMAG2 'L' #define EI_MAG3 3 #define ELFMAG3 'F' #define ELFMAG "\177ELF" #define SELFMAG 4 #define EI_CLASS 4 #define ELFCLASSNONE 0 #define ELFCLASS32 1 #define ELFCLASS64 2 #define ELFCLASSNUM 3 #define EI_DATA 5 #define ELFDATANONE 0 #define ELFDATA2LSB 1 #define ELFDATA2MSB 2 #define ELFDATANUM 3 #define EI_VERSION 6 #define EI_OSABI 7 #define ELFOSABI_NONE 0 #define ELFOSABI_SYSV 0 #define ELFOSABI_HPUX 1 #define ELFOSABI_NETBSD 2 #define ELFOSABI_LINUX 3 #define ELFOSABI_GNU 3 #define ELFOSABI_SOLARIS 6 #define ELFOSABI_AIX 7 #define ELFOSABI_IRIX 8 #define ELFOSABI_FREEBSD 9 #define ELFOSABI_TRU64 10 #define ELFOSABI_MODESTO 11 #define ELFOSABI_OPENBSD 12 #define ELFOSABI_ARM 97 #define ELFOSABI_STANDALONE 255 #define EI_ABIVERSION 8 #define EI_PAD 9 #define ET_NONE 0 #define ET_REL 1 #define ET_EXEC 2 #define ET_DYN 3 #define ET_CORE 4 #define ET_NUM 5 #define ET_LOOS 0xfe00 #define ET_HIOS 0xfeff #define ET_LOPROC 0xff00 #define ET_HIPROC 0xffff #define EM_NONE 0 #define EM_M32 1 #define EM_SPARC 2 #define EM_386 3 #define EM_68K 4 #define EM_88K 5 #define EM_860 7 #define EM_MIPS 8 #define EM_S370 9 #define EM_MIPS_RS3_LE 10 #define EM_PARISC 15 #define EM_VPP500 17 #define EM_SPARC32PLUS 18 #define EM_960 19 #define EM_PPC 20 #define EM_PPC64 21 #define EM_S390 22 #define EM_V800 36 #define EM_FR20 37 #define EM_RH32 38 #define EM_RCE 39 #define EM_ARM 40 #define EM_FAKE_ALPHA 41 #define EM_SH 42 #define EM_SPARCV9 43 #define EM_TRICORE 44 #define EM_ARC 45 #define EM_H8_300 46 #define EM_H8_300H 47 #define EM_H8S 48 #define EM_H8_500 49 #define EM_IA_64 50 #define EM_MIPS_X 51 #define EM_COLDFIRE 52 #define EM_68HC12 53 #define EM_MMA 54 #define EM_PCP 55 #define EM_NCPU 56 #define EM_NDR1 57 #define EM_STARCORE 58 #define EM_ME16 59 #define EM_ST100 60 #define EM_TINYJ 61 #define EM_X86_64 62 #define EM_PDSP 63 #define EM_FX66 66 #define EM_ST9PLUS 67 #define EM_ST7 68 #define EM_68HC16 69 #define EM_68HC11 70 #define EM_68HC08 71 #define EM_68HC05 72 #define EM_SVX 73 #define EM_ST19 74 #define EM_VAX 75 #define EM_CRIS 76 #define EM_JAVELIN 77 #define EM_FIREPATH 78 #define EM_ZSP 79 #define EM_MMIX 80 #define EM_HUANY 81 #define EM_PRISM 82 #define EM_AVR 83 #define EM_FR30 84 #define EM_D10V 85 #define EM_D30V 86 #define EM_V850 87 #define EM_M32R 88 #define EM_MN10300 89 #define EM_MN10200 90 #define EM_PJ 91 #define EM_OR1K 92 #define EM_OPENRISC 92 #define EM_ARC_A5 93 #define EM_ARC_COMPACT 93 #define EM_XTENSA 94 #define EM_VIDEOCORE 95 #define EM_TMM_GPP 96 #define EM_NS32K 97 #define EM_TPC 98 #define EM_SNP1K 99 #define EM_ST200 100 #define EM_IP2K 101 #define EM_MAX 102 #define EM_CR 103 #define EM_F2MC16 104 #define EM_MSP430 105 #define EM_BLACKFIN 106 #define EM_SE_C33 107 #define EM_SEP 108 #define EM_ARCA 109 #define EM_UNICORE 110 #define EM_EXCESS 111 #define EM_DXP 112 #define EM_ALTERA_NIOS2 113 #define EM_CRX 114 #define EM_XGATE 115 #define EM_C166 116 #define EM_M16C 117 #define EM_DSPIC30F 118 #define EM_CE 119 #define EM_M32C 120 #define EM_TSK3000 131 #define EM_RS08 132 #define EM_SHARC 133 #define EM_ECOG2 134 #define EM_SCORE7 135 #define EM_DSP24 136 #define EM_VIDEOCORE3 137 #define EM_LATTICEMICO32 138 #define EM_SE_C17 139 #define EM_TI_C6000 140 #define EM_TI_C2000 141 #define EM_TI_C5500 142 #define EM_TI_ARP32 143 #define EM_TI_PRU 144 #define EM_MMDSP_PLUS 160 #define EM_CYPRESS_M8C 161 #define EM_R32C 162 #define EM_TRIMEDIA 163 #define EM_QDSP6 164 #define EM_8051 165 #define EM_STXP7X 166 #define EM_NDS32 167 #define EM_ECOG1X 168 #define EM_MAXQ30 169 #define EM_XIMO16 170 #define EM_MANIK 171 #define EM_CRAYNV2 172 #define EM_RX 173 #define EM_METAG 174 #define EM_MCST_ELBRUS 175 #define EM_ECOG16 176 #define EM_CR16 177 #define EM_ETPU 178 #define EM_SLE9X 179 #define EM_L10M 180 #define EM_K10M 181 #define EM_AARCH64 183 #define EM_AVR32 185 #define EM_STM8 186 #define EM_TILE64 187 #define EM_TILEPRO 188 #define EM_MICROBLAZE 189 #define EM_CUDA 190 #define EM_TILEGX 191 #define EM_CLOUDSHIELD 192 #define EM_COREA_1ST 193 #define EM_COREA_2ND 194 #define EM_ARC_COMPACT2 195 #define EM_OPEN8 196 #define EM_RL78 197 #define EM_VIDEOCORE5 198 #define EM_78KOR 199 #define EM_56800EX 200 #define EM_BA1 201 #define EM_BA2 202 #define EM_XCORE 203 #define EM_MCHP_PIC 204 #define EM_KM32 210 #define EM_KMX32 211 #define EM_EMX16 212 #define EM_EMX8 213 #define EM_KVARC 214 #define EM_CDP 215 #define EM_COGE 216 #define EM_COOL 217 #define EM_NORC 218 #define EM_CSR_KALIMBA 219 #define EM_Z80 220 #define EM_VISIUM 221 #define EM_FT32 222 #define EM_MOXIE 223 #define EM_AMDGPU 224 #define EM_RISCV 243 #define EM_BPF 247 #define EM_NUM 248 #define EM_ALPHA 0x9026 #define EV_NONE 0 #define EV_CURRENT 1 #define EV_NUM 2 typedef struct { Elf32_Word sh_name; Elf32_Word sh_type; Elf32_Word sh_flags; Elf32_Addr sh_addr; Elf32_Off sh_offset; Elf32_Word sh_size; Elf32_Word sh_link; Elf32_Word sh_info; Elf32_Word sh_addralign; Elf32_Word sh_entsize; } Elf32_Shdr; typedef struct { Elf64_Word sh_name; Elf64_Word sh_type; Elf64_Xword sh_flags; Elf64_Addr sh_addr; Elf64_Off sh_offset; Elf64_Xword sh_size; Elf64_Word sh_link; Elf64_Word sh_info; Elf64_Xword sh_addralign; Elf64_Xword sh_entsize; } Elf64_Shdr; #define SHN_UNDEF 0 #define SHN_LORESERVE 0xff00 #define SHN_LOPROC 0xff00 #define SHN_BEFORE 0xff00 #define SHN_AFTER 0xff01 #define SHN_HIPROC 0xff1f #define SHN_LOOS 0xff20 #define SHN_HIOS 0xff3f #define SHN_ABS 0xfff1 #define SHN_COMMON 0xfff2 #define SHN_XINDEX 0xffff #define SHN_HIRESERVE 0xffff #define SHT_NULL 0 #define SHT_PROGBITS 1 #define SHT_SYMTAB 2 #define SHT_STRTAB 3 #define SHT_RELA 4 #define SHT_HASH 5 #define SHT_DYNAMIC 6 #define SHT_NOTE 7 #define SHT_NOBITS 8 #define SHT_REL 9 #define SHT_SHLIB 10 #define SHT_DYNSYM 11 #define SHT_INIT_ARRAY 14 #define SHT_FINI_ARRAY 15 #define SHT_PREINIT_ARRAY 16 #define SHT_GROUP 17 #define SHT_SYMTAB_SHNDX 18 #define SHT_NUM 19 #define SHT_LOOS 0x60000000 #define SHT_GNU_ATTRIBUTES 0x6ffffff5 #define SHT_GNU_HASH 0x6ffffff6 #define SHT_GNU_LIBLIST 0x6ffffff7 #define SHT_CHECKSUM 0x6ffffff8 #define SHT_LOSUNW 0x6ffffffa #define SHT_SUNW_move 0x6ffffffa #define SHT_SUNW_COMDAT 0x6ffffffb #define SHT_SUNW_syminfo 0x6ffffffc #define SHT_GNU_verdef 0x6ffffffd #define SHT_GNU_verneed 0x6ffffffe #define SHT_GNU_versym 0x6fffffff #define SHT_HISUNW 0x6fffffff #define SHT_HIOS 0x6fffffff #define SHT_LOPROC 0x70000000 #define SHT_HIPROC 0x7fffffff #define SHT_LOUSER 0x80000000 #define SHT_HIUSER 0x8fffffff #define SHF_WRITE (1 << 0) #define SHF_ALLOC (1 << 1) #define SHF_EXECINSTR (1 << 2) #define SHF_MERGE (1 << 4) #define SHF_STRINGS (1 << 5) #define SHF_INFO_LINK (1 << 6) #define SHF_LINK_ORDER (1 << 7) #define SHF_OS_NONCONFORMING (1 << 8) #define SHF_GROUP (1 << 9) #define SHF_TLS (1 << 10) #define SHF_COMPRESSED (1 << 11) #define SHF_MASKOS 0x0ff00000 #define SHF_MASKPROC 0xf0000000 #define SHF_ORDERED (1 << 30) #define SHF_EXCLUDE (1U << 31) typedef struct { Elf32_Word ch_type; Elf32_Word ch_size; Elf32_Word ch_addralign; } Elf32_Chdr; typedef struct { Elf64_Word ch_type; Elf64_Word ch_reserved; Elf64_Xword ch_size; Elf64_Xword ch_addralign; } Elf64_Chdr; #define ELFCOMPRESS_ZLIB 1 #define ELFCOMPRESS_LOOS 0x60000000 #define ELFCOMPRESS_HIOS 0x6fffffff #define ELFCOMPRESS_LOPROC 0x70000000 #define ELFCOMPRESS_HIPROC 0x7fffffff #define GRP_COMDAT 0x1 typedef struct { Elf32_Word st_name; Elf32_Addr st_value; Elf32_Word st_size; unsigned char st_info; unsigned char st_other; Elf32_Section st_shndx; } Elf32_Sym; typedef struct { Elf64_Word st_name; unsigned char st_info; unsigned char st_other; Elf64_Section st_shndx; Elf64_Addr st_value; Elf64_Xword st_size; } Elf64_Sym; typedef struct { Elf32_Half si_boundto; Elf32_Half si_flags; } Elf32_Syminfo; typedef struct { Elf64_Half si_boundto; Elf64_Half si_flags; } Elf64_Syminfo; #define SYMINFO_BT_SELF 0xffff #define SYMINFO_BT_PARENT 0xfffe #define SYMINFO_BT_LOWRESERVE 0xff00 #define SYMINFO_FLG_DIRECT 0x0001 #define SYMINFO_FLG_PASSTHRU 0x0002 #define SYMINFO_FLG_COPY 0x0004 #define SYMINFO_FLG_LAZYLOAD 0x0008 #define SYMINFO_NONE 0 #define SYMINFO_CURRENT 1 #define SYMINFO_NUM 2 #define ELF32_ST_BIND(val) (((unsigned char) (val)) >> 4) #define ELF32_ST_TYPE(val) ((val) & 0xf) #define ELF32_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf)) #define ELF64_ST_BIND(val) ELF32_ST_BIND (val) #define ELF64_ST_TYPE(val) ELF32_ST_TYPE (val) #define ELF64_ST_INFO(bind, type) ELF32_ST_INFO ((bind), (type)) #define STB_LOCAL 0 #define STB_GLOBAL 1 #define STB_WEAK 2 #define STB_NUM 3 #define STB_LOOS 10 #define STB_GNU_UNIQUE 10 #define STB_HIOS 12 #define STB_LOPROC 13 #define STB_HIPROC 15 #define STT_NOTYPE 0 #define STT_OBJECT 1 #define STT_FUNC 2 #define STT_SECTION 3 #define STT_FILE 4 #define STT_COMMON 5 #define STT_TLS 6 #define STT_NUM 7 #define STT_LOOS 10 #define STT_GNU_IFUNC 10 #define STT_HIOS 12 #define STT_LOPROC 13 #define STT_HIPROC 15 #define STN_UNDEF 0 #define ELF32_ST_VISIBILITY(o) ((o) & 0x03) #define ELF64_ST_VISIBILITY(o) ELF32_ST_VISIBILITY (o) #define STV_DEFAULT 0 #define STV_INTERNAL 1 #define STV_HIDDEN 2 #define STV_PROTECTED 3 typedef struct { Elf32_Addr r_offset; Elf32_Word r_info; } Elf32_Rel; typedef struct { Elf64_Addr r_offset; Elf64_Xword r_info; } Elf64_Rel; typedef struct { Elf32_Addr r_offset; Elf32_Word r_info; Elf32_Sword r_addend; } Elf32_Rela; typedef struct { Elf64_Addr r_offset; Elf64_Xword r_info; Elf64_Sxword r_addend; } Elf64_Rela; #define ELF32_R_SYM(val) ((val) >> 8) #define ELF32_R_TYPE(val) ((val) & 0xff) #define ELF32_R_INFO(sym, type) (((sym) << 8) + ((type) & 0xff)) #define ELF64_R_SYM(i) ((i) >> 32) #define ELF64_R_TYPE(i) ((i) & 0xffffffff) #define ELF64_R_INFO(sym,type) ((((Elf64_Xword) (sym)) << 32) + (type)) typedef struct { Elf32_Word p_type; Elf32_Off p_offset; Elf32_Addr p_vaddr; Elf32_Addr p_paddr; Elf32_Word p_filesz; Elf32_Word p_memsz; Elf32_Word p_flags; Elf32_Word p_align; } Elf32_Phdr; typedef struct { Elf64_Word p_type; Elf64_Word p_flags; Elf64_Off p_offset; Elf64_Addr p_vaddr; Elf64_Addr p_paddr; Elf64_Xword p_filesz; Elf64_Xword p_memsz; Elf64_Xword p_align; } Elf64_Phdr; #define PT_NULL 0 #define PT_LOAD 1 #define PT_DYNAMIC 2 #define PT_INTERP 3 #define PT_NOTE 4 #define PT_SHLIB 5 #define PT_PHDR 6 #define PT_TLS 7 #define PT_NUM 8 #define PT_LOOS 0x60000000 #define PT_GNU_EH_FRAME 0x6474e550 #define PT_GNU_STACK 0x6474e551 #define PT_GNU_RELRO 0x6474e552 #define PT_LOSUNW 0x6ffffffa #define PT_SUNWBSS 0x6ffffffa #define PT_SUNWSTACK 0x6ffffffb #define PT_HISUNW 0x6fffffff #define PT_HIOS 0x6fffffff #define PT_LOPROC 0x70000000 #define PT_HIPROC 0x7fffffff #define PN_XNUM 0xffff #define PF_X (1 << 0) #define PF_W (1 << 1) #define PF_R (1 << 2) #define PF_MASKOS 0x0ff00000 #define PF_MASKPROC 0xf0000000 #define NT_PRSTATUS 1 #define NT_FPREGSET 2 #define NT_PRPSINFO 3 #define NT_PRXREG 4 #define NT_TASKSTRUCT 4 #define NT_PLATFORM 5 #define NT_AUXV 6 #define NT_GWINDOWS 7 #define NT_ASRS 8 #define NT_PSTATUS 10 #define NT_PSINFO 13 #define NT_PRCRED 14 #define NT_UTSNAME 15 #define NT_LWPSTATUS 16 #define NT_LWPSINFO 17 #define NT_PRFPXREG 20 #define NT_SIGINFO 0x53494749 #define NT_FILE 0x46494c45 #define NT_PRXFPREG 0x46e62b7f #define NT_PPC_VMX 0x100 #define NT_PPC_SPE 0x101 #define NT_PPC_VSX 0x102 #define NT_386_TLS 0x200 #define NT_386_IOPERM 0x201 #define NT_X86_XSTATE 0x202 #define NT_S390_HIGH_GPRS 0x300 #define NT_S390_TIMER 0x301 #define NT_S390_TODCMP 0x302 #define NT_S390_TODPREG 0x303 #define NT_S390_CTRS 0x304 #define NT_S390_PREFIX 0x305 #define NT_S390_LAST_BREAK 0x306 #define NT_S390_SYSTEM_CALL 0x307 #define NT_S390_TDB 0x308 #define NT_ARM_VFP 0x400 #define NT_ARM_TLS 0x401 #define NT_ARM_HW_BREAK 0x402 #define NT_ARM_HW_WATCH 0x403 #define NT_ARM_SYSTEM_CALL 0x404 #define NT_ARM_SVE 0x405 #define NT_METAG_CBUF 0x500 #define NT_METAG_RPIPE 0x501 #define NT_METAG_TLS 0x502 #define NT_VERSION 1 typedef struct { Elf32_Sword d_tag; union { Elf32_Word d_val; Elf32_Addr d_ptr; } d_un; } Elf32_Dyn; typedef struct { Elf64_Sxword d_tag; union { Elf64_Xword d_val; Elf64_Addr d_ptr; } d_un; } Elf64_Dyn; #define DT_NULL 0 #define DT_NEEDED 1 #define DT_PLTRELSZ 2 #define DT_PLTGOT 3 #define DT_HASH 4 #define DT_STRTAB 5 #define DT_SYMTAB 6 #define DT_RELA 7 #define DT_RELASZ 8 #define DT_RELAENT 9 #define DT_STRSZ 10 #define DT_SYMENT 11 #define DT_INIT 12 #define DT_FINI 13 #define DT_SONAME 14 #define DT_RPATH 15 #define DT_SYMBOLIC 16 #define DT_REL 17 #define DT_RELSZ 18 #define DT_RELENT 19 #define DT_PLTREL 20 #define DT_DEBUG 21 #define DT_TEXTREL 22 #define DT_JMPREL 23 #define DT_BIND_NOW 24 #define DT_INIT_ARRAY 25 #define DT_FINI_ARRAY 26 #define DT_INIT_ARRAYSZ 27 #define DT_FINI_ARRAYSZ 28 #define DT_RUNPATH 29 #define DT_FLAGS 30 #define DT_ENCODING 32 #define DT_PREINIT_ARRAY 32 #define DT_PREINIT_ARRAYSZ 33 #define DT_NUM 34 #define DT_LOOS 0x6000000d #define DT_HIOS 0x6ffff000 #define DT_LOPROC 0x70000000 #define DT_HIPROC 0x7fffffff #define DT_PROCNUM DT_MIPS_NUM #define DT_VALRNGLO 0x6ffffd00 #define DT_GNU_PRELINKED 0x6ffffdf5 #define DT_GNU_CONFLICTSZ 0x6ffffdf6 #define DT_GNU_LIBLISTSZ 0x6ffffdf7 #define DT_CHECKSUM 0x6ffffdf8 #define DT_PLTPADSZ 0x6ffffdf9 #define DT_MOVEENT 0x6ffffdfa #define DT_MOVESZ 0x6ffffdfb #define DT_FEATURE_1 0x6ffffdfc #define DT_POSFLAG_1 0x6ffffdfd #define DT_SYMINSZ 0x6ffffdfe #define DT_SYMINENT 0x6ffffdff #define DT_VALRNGHI 0x6ffffdff #define DT_VALTAGIDX(tag) (DT_VALRNGHI - (tag)) #define DT_VALNUM 12 #define DT_ADDRRNGLO 0x6ffffe00 #define DT_GNU_HASH 0x6ffffef5 #define DT_TLSDESC_PLT 0x6ffffef6 #define DT_TLSDESC_GOT 0x6ffffef7 #define DT_GNU_CONFLICT 0x6ffffef8 #define DT_GNU_LIBLIST 0x6ffffef9 #define DT_CONFIG 0x6ffffefa #define DT_DEPAUDIT 0x6ffffefb #define DT_AUDIT 0x6ffffefc #define DT_PLTPAD 0x6ffffefd #define DT_MOVETAB 0x6ffffefe #define DT_SYMINFO 0x6ffffeff #define DT_ADDRRNGHI 0x6ffffeff #define DT_ADDRTAGIDX(tag) (DT_ADDRRNGHI - (tag)) #define DT_ADDRNUM 11 #define DT_VERSYM 0x6ffffff0 #define DT_RELACOUNT 0x6ffffff9 #define DT_RELCOUNT 0x6ffffffa #define DT_FLAGS_1 0x6ffffffb #define DT_VERDEF 0x6ffffffc #define DT_VERDEFNUM 0x6ffffffd #define DT_VERNEED 0x6ffffffe #define DT_VERNEEDNUM 0x6fffffff #define DT_VERSIONTAGIDX(tag) (DT_VERNEEDNUM - (tag)) #define DT_VERSIONTAGNUM 16 #define DT_AUXILIARY 0x7ffffffd #define DT_FILTER 0x7fffffff #define DT_EXTRATAGIDX(tag) ((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1) #define DT_EXTRANUM 3 #define DF_ORIGIN 0x00000001 #define DF_SYMBOLIC 0x00000002 #define DF_TEXTREL 0x00000004 #define DF_BIND_NOW 0x00000008 #define DF_STATIC_TLS 0x00000010 #define DF_1_NOW 0x00000001 #define DF_1_GLOBAL 0x00000002 #define DF_1_GROUP 0x00000004 #define DF_1_NODELETE 0x00000008 #define DF_1_LOADFLTR 0x00000010 #define DF_1_INITFIRST 0x00000020 #define DF_1_NOOPEN 0x00000040 #define DF_1_ORIGIN 0x00000080 #define DF_1_DIRECT 0x00000100 #define DF_1_TRANS 0x00000200 #define DF_1_INTERPOSE 0x00000400 #define DF_1_NODEFLIB 0x00000800 #define DF_1_NODUMP 0x00001000 #define DF_1_CONFALT 0x00002000 #define DF_1_ENDFILTEE 0x00004000 #define DF_1_DISPRELDNE 0x00008000 #define DF_1_DISPRELPND 0x00010000 #define DF_1_NODIRECT 0x00020000 #define DF_1_IGNMULDEF 0x00040000 #define DF_1_NOKSYMS 0x00080000 #define DF_1_NOHDR 0x00100000 #define DF_1_EDITED 0x00200000 #define DF_1_NORELOC 0x00400000 #define DF_1_SYMINTPOSE 0x00800000 #define DF_1_GLOBAUDIT 0x01000000 #define DF_1_SINGLETON 0x02000000 #define DTF_1_PARINIT 0x00000001 #define DTF_1_CONFEXP 0x00000002 #define DF_P1_LAZYLOAD 0x00000001 #define DF_P1_GROUPPERM 0x00000002 typedef struct { Elf32_Half vd_version; Elf32_Half vd_flags; Elf32_Half vd_ndx; Elf32_Half vd_cnt; Elf32_Word vd_hash; Elf32_Word vd_aux; Elf32_Word vd_next; } Elf32_Verdef; typedef struct { Elf64_Half vd_version; Elf64_Half vd_flags; Elf64_Half vd_ndx; Elf64_Half vd_cnt; Elf64_Word vd_hash; Elf64_Word vd_aux; Elf64_Word vd_next; } Elf64_Verdef; #define VER_DEF_NONE 0 #define VER_DEF_CURRENT 1 #define VER_DEF_NUM 2 #define VER_FLG_BASE 0x1 #define VER_FLG_WEAK 0x2 #define VER_NDX_LOCAL 0 #define VER_NDX_GLOBAL 1 #define VER_NDX_LORESERVE 0xff00 #define VER_NDX_ELIMINATE 0xff01 typedef struct { Elf32_Word vda_name; Elf32_Word vda_next; } Elf32_Verdaux; typedef struct { Elf64_Word vda_name; Elf64_Word vda_next; } Elf64_Verdaux; typedef struct { Elf32_Half vn_version; Elf32_Half vn_cnt; Elf32_Word vn_file; Elf32_Word vn_aux; Elf32_Word vn_next; } Elf32_Verneed; typedef struct { Elf64_Half vn_version; Elf64_Half vn_cnt; Elf64_Word vn_file; Elf64_Word vn_aux; Elf64_Word vn_next; } Elf64_Verneed; #define VER_NEED_NONE 0 #define VER_NEED_CURRENT 1 #define VER_NEED_NUM 2 typedef struct { Elf32_Word vna_hash; Elf32_Half vna_flags; Elf32_Half vna_other; Elf32_Word vna_name; Elf32_Word vna_next; } Elf32_Vernaux; typedef struct { Elf64_Word vna_hash; Elf64_Half vna_flags; Elf64_Half vna_other; Elf64_Word vna_name; Elf64_Word vna_next; } Elf64_Vernaux; #define VER_FLG_WEAK 0x2 typedef struct { uint32_t a_type; union { uint32_t a_val; } a_un; } Elf32_auxv_t; typedef struct { uint64_t a_type; union { uint64_t a_val; } a_un; } Elf64_auxv_t; #define AT_NULL 0 #define AT_IGNORE 1 #define AT_EXECFD 2 #define AT_PHDR 3 #define AT_PHENT 4 #define AT_PHNUM 5 #define AT_PAGESZ 6 #define AT_BASE 7 #define AT_FLAGS 8 #define AT_ENTRY 9 #define AT_NOTELF 10 #define AT_UID 11 #define AT_EUID 12 #define AT_GID 13 #define AT_EGID 14 #define AT_CLKTCK 17 #define AT_PLATFORM 15 #define AT_HWCAP 16 #define AT_FPUCW 18 #define AT_DCACHEBSIZE 19 #define AT_ICACHEBSIZE 20 #define AT_UCACHEBSIZE 21 #define AT_IGNOREPPC 22 #define AT_SECURE 23 #define AT_BASE_PLATFORM 24 #define AT_RANDOM 25 #define AT_HWCAP2 26 #define AT_EXECFN 31 #define AT_SYSINFO 32 #define AT_SYSINFO_EHDR 33 #define AT_L1I_CACHESHAPE 34 #define AT_L1D_CACHESHAPE 35 #define AT_L2_CACHESHAPE 36 #define AT_L3_CACHESHAPE 37 typedef struct { Elf32_Word n_namesz; Elf32_Word n_descsz; Elf32_Word n_type; } Elf32_Nhdr; typedef struct { Elf64_Word n_namesz; Elf64_Word n_descsz; Elf64_Word n_type; } Elf64_Nhdr; #define ELF_NOTE_SOLARIS "SUNW Solaris" #define ELF_NOTE_GNU "GNU" #define ELF_NOTE_PAGESIZE_HINT 1 #define NT_GNU_ABI_TAG 1 #define ELF_NOTE_ABI NT_GNU_ABI_TAG #define ELF_NOTE_OS_LINUX 0 #define ELF_NOTE_OS_GNU 1 #define ELF_NOTE_OS_SOLARIS2 2 #define ELF_NOTE_OS_FREEBSD 3 #define NT_GNU_BUILD_ID 3 #define NT_GNU_GOLD_VERSION 4 typedef struct { Elf32_Xword m_value; Elf32_Word m_info; Elf32_Word m_poffset; Elf32_Half m_repeat; Elf32_Half m_stride; } Elf32_Move; typedef struct { Elf64_Xword m_value; Elf64_Xword m_info; Elf64_Xword m_poffset; Elf64_Half m_repeat; Elf64_Half m_stride; } Elf64_Move; #define ELF32_M_SYM(info) ((info) >> 8) #define ELF32_M_SIZE(info) ((unsigned char) (info)) #define ELF32_M_INFO(sym, size) (((sym) << 8) + (unsigned char) (size)) #define ELF64_M_SYM(info) ELF32_M_SYM (info) #define ELF64_M_SIZE(info) ELF32_M_SIZE (info) #define ELF64_M_INFO(sym, size) ELF32_M_INFO (sym, size) #define EF_CPU32 0x00810000 #define R_68K_NONE 0 #define R_68K_32 1 #define R_68K_16 2 #define R_68K_8 3 #define R_68K_PC32 4 #define R_68K_PC16 5 #define R_68K_PC8 6 #define R_68K_GOT32 7 #define R_68K_GOT16 8 #define R_68K_GOT8 9 #define R_68K_GOT32O 10 #define R_68K_GOT16O 11 #define R_68K_GOT8O 12 #define R_68K_PLT32 13 #define R_68K_PLT16 14 #define R_68K_PLT8 15 #define R_68K_PLT32O 16 #define R_68K_PLT16O 17 #define R_68K_PLT8O 18 #define R_68K_COPY 19 #define R_68K_GLOB_DAT 20 #define R_68K_JMP_SLOT 21 #define R_68K_RELATIVE 22 #define R_68K_NUM 23 #define R_386_NONE 0 #define R_386_32 1 #define R_386_PC32 2 #define R_386_GOT32 3 #define R_386_PLT32 4 #define R_386_COPY 5 #define R_386_GLOB_DAT 6 #define R_386_JMP_SLOT 7 #define R_386_RELATIVE 8 #define R_386_GOTOFF 9 #define R_386_GOTPC 10 #define R_386_32PLT 11 #define R_386_TLS_TPOFF 14 #define R_386_TLS_IE 15 #define R_386_TLS_GOTIE 16 #define R_386_TLS_LE 17 #define R_386_TLS_GD 18 #define R_386_TLS_LDM 19 #define R_386_16 20 #define R_386_PC16 21 #define R_386_8 22 #define R_386_PC8 23 #define R_386_TLS_GD_32 24 #define R_386_TLS_GD_PUSH 25 #define R_386_TLS_GD_CALL 26 #define R_386_TLS_GD_POP 27 #define R_386_TLS_LDM_32 28 #define R_386_TLS_LDM_PUSH 29 #define R_386_TLS_LDM_CALL 30 #define R_386_TLS_LDM_POP 31 #define R_386_TLS_LDO_32 32 #define R_386_TLS_IE_32 33 #define R_386_TLS_LE_32 34 #define R_386_TLS_DTPMOD32 35 #define R_386_TLS_DTPOFF32 36 #define R_386_TLS_TPOFF32 37 #define R_386_SIZE32 38 #define R_386_TLS_GOTDESC 39 #define R_386_TLS_DESC_CALL 40 #define R_386_TLS_DESC 41 #define R_386_IRELATIVE 42 #define R_386_GOT32X 43 #define R_386_NUM 44 #define STT_SPARC_REGISTER 13 #define EF_SPARCV9_MM 3 #define EF_SPARCV9_TSO 0 #define EF_SPARCV9_PSO 1 #define EF_SPARCV9_RMO 2 #define EF_SPARC_LEDATA 0x800000 #define EF_SPARC_EXT_MASK 0xFFFF00 #define EF_SPARC_32PLUS 0x000100 #define EF_SPARC_SUN_US1 0x000200 #define EF_SPARC_HAL_R1 0x000400 #define EF_SPARC_SUN_US3 0x000800 #define R_SPARC_NONE 0 #define R_SPARC_8 1 #define R_SPARC_16 2 #define R_SPARC_32 3 #define R_SPARC_DISP8 4 #define R_SPARC_DISP16 5 #define R_SPARC_DISP32 6 #define R_SPARC_WDISP30 7 #define R_SPARC_WDISP22 8 #define R_SPARC_HI22 9 #define R_SPARC_22 10 #define R_SPARC_13 11 #define R_SPARC_LO10 12 #define R_SPARC_GOT10 13 #define R_SPARC_GOT13 14 #define R_SPARC_GOT22 15 #define R_SPARC_PC10 16 #define R_SPARC_PC22 17 #define R_SPARC_WPLT30 18 #define R_SPARC_COPY 19 #define R_SPARC_GLOB_DAT 20 #define R_SPARC_JMP_SLOT 21 #define R_SPARC_RELATIVE 22 #define R_SPARC_UA32 23 #define R_SPARC_PLT32 24 #define R_SPARC_HIPLT22 25 #define R_SPARC_LOPLT10 26 #define R_SPARC_PCPLT32 27 #define R_SPARC_PCPLT22 28 #define R_SPARC_PCPLT10 29 #define R_SPARC_10 30 #define R_SPARC_11 31 #define R_SPARC_64 32 #define R_SPARC_OLO10 33 #define R_SPARC_HH22 34 #define R_SPARC_HM10 35 #define R_SPARC_LM22 36 #define R_SPARC_PC_HH22 37 #define R_SPARC_PC_HM10 38 #define R_SPARC_PC_LM22 39 #define R_SPARC_WDISP16 40 #define R_SPARC_WDISP19 41 #define R_SPARC_GLOB_JMP 42 #define R_SPARC_7 43 #define R_SPARC_5 44 #define R_SPARC_6 45 #define R_SPARC_DISP64 46 #define R_SPARC_PLT64 47 #define R_SPARC_HIX22 48 #define R_SPARC_LOX10 49 #define R_SPARC_H44 50 #define R_SPARC_M44 51 #define R_SPARC_L44 52 #define R_SPARC_REGISTER 53 #define R_SPARC_UA64 54 #define R_SPARC_UA16 55 #define R_SPARC_TLS_GD_HI22 56 #define R_SPARC_TLS_GD_LO10 57 #define R_SPARC_TLS_GD_ADD 58 #define R_SPARC_TLS_GD_CALL 59 #define R_SPARC_TLS_LDM_HI22 60 #define R_SPARC_TLS_LDM_LO10 61 #define R_SPARC_TLS_LDM_ADD 62 #define R_SPARC_TLS_LDM_CALL 63 #define R_SPARC_TLS_LDO_HIX22 64 #define R_SPARC_TLS_LDO_LOX10 65 #define R_SPARC_TLS_LDO_ADD 66 #define R_SPARC_TLS_IE_HI22 67 #define R_SPARC_TLS_IE_LO10 68 #define R_SPARC_TLS_IE_LD 69 #define R_SPARC_TLS_IE_LDX 70 #define R_SPARC_TLS_IE_ADD 71 #define R_SPARC_TLS_LE_HIX22 72 #define R_SPARC_TLS_LE_LOX10 73 #define R_SPARC_TLS_DTPMOD32 74 #define R_SPARC_TLS_DTPMOD64 75 #define R_SPARC_TLS_DTPOFF32 76 #define R_SPARC_TLS_DTPOFF64 77 #define R_SPARC_TLS_TPOFF32 78 #define R_SPARC_TLS_TPOFF64 79 #define R_SPARC_GOTDATA_HIX22 80 #define R_SPARC_GOTDATA_LOX10 81 #define R_SPARC_GOTDATA_OP_HIX22 82 #define R_SPARC_GOTDATA_OP_LOX10 83 #define R_SPARC_GOTDATA_OP 84 #define R_SPARC_H34 85 #define R_SPARC_SIZE32 86 #define R_SPARC_SIZE64 87 #define R_SPARC_GNU_VTINHERIT 250 #define R_SPARC_GNU_VTENTRY 251 #define R_SPARC_REV32 252 #define R_SPARC_NUM 253 #define DT_SPARC_REGISTER 0x70000001 #define DT_SPARC_NUM 2 #define EF_MIPS_NOREORDER 1 #define EF_MIPS_PIC 2 #define EF_MIPS_CPIC 4 #define EF_MIPS_XGOT 8 #define EF_MIPS_64BIT_WHIRL 16 #define EF_MIPS_ABI2 32 #define EF_MIPS_ABI_ON32 64 #define EF_MIPS_FP64 512 #define EF_MIPS_NAN2008 1024 #define EF_MIPS_ARCH 0xf0000000 #define EF_MIPS_ARCH_1 0x00000000 #define EF_MIPS_ARCH_2 0x10000000 #define EF_MIPS_ARCH_3 0x20000000 #define EF_MIPS_ARCH_4 0x30000000 #define EF_MIPS_ARCH_5 0x40000000 #define EF_MIPS_ARCH_32 0x50000000 #define EF_MIPS_ARCH_64 0x60000000 #define EF_MIPS_ARCH_32R2 0x70000000 #define EF_MIPS_ARCH_64R2 0x80000000 #define E_MIPS_ARCH_1 0x00000000 #define E_MIPS_ARCH_2 0x10000000 #define E_MIPS_ARCH_3 0x20000000 #define E_MIPS_ARCH_4 0x30000000 #define E_MIPS_ARCH_5 0x40000000 #define E_MIPS_ARCH_32 0x50000000 #define E_MIPS_ARCH_64 0x60000000 #define SHN_MIPS_ACOMMON 0xff00 #define SHN_MIPS_TEXT 0xff01 #define SHN_MIPS_DATA 0xff02 #define SHN_MIPS_SCOMMON 0xff03 #define SHN_MIPS_SUNDEFINED 0xff04 #define SHT_MIPS_LIBLIST 0x70000000 #define SHT_MIPS_MSYM 0x70000001 #define SHT_MIPS_CONFLICT 0x70000002 #define SHT_MIPS_GPTAB 0x70000003 #define SHT_MIPS_UCODE 0x70000004 #define SHT_MIPS_DEBUG 0x70000005 #define SHT_MIPS_REGINFO 0x70000006 #define SHT_MIPS_PACKAGE 0x70000007 #define SHT_MIPS_PACKSYM 0x70000008 #define SHT_MIPS_RELD 0x70000009 #define SHT_MIPS_IFACE 0x7000000b #define SHT_MIPS_CONTENT 0x7000000c #define SHT_MIPS_OPTIONS 0x7000000d #define SHT_MIPS_SHDR 0x70000010 #define SHT_MIPS_FDESC 0x70000011 #define SHT_MIPS_EXTSYM 0x70000012 #define SHT_MIPS_DENSE 0x70000013 #define SHT_MIPS_PDESC 0x70000014 #define SHT_MIPS_LOCSYM 0x70000015 #define SHT_MIPS_AUXSYM 0x70000016 #define SHT_MIPS_OPTSYM 0x70000017 #define SHT_MIPS_LOCSTR 0x70000018 #define SHT_MIPS_LINE 0x70000019 #define SHT_MIPS_RFDESC 0x7000001a #define SHT_MIPS_DELTASYM 0x7000001b #define SHT_MIPS_DELTAINST 0x7000001c #define SHT_MIPS_DELTACLASS 0x7000001d #define SHT_MIPS_DWARF 0x7000001e #define SHT_MIPS_DELTADECL 0x7000001f #define SHT_MIPS_SYMBOL_LIB 0x70000020 #define SHT_MIPS_EVENTS 0x70000021 #define SHT_MIPS_TRANSLATE 0x70000022 #define SHT_MIPS_PIXIE 0x70000023 #define SHT_MIPS_XLATE 0x70000024 #define SHT_MIPS_XLATE_DEBUG 0x70000025 #define SHT_MIPS_WHIRL 0x70000026 #define SHT_MIPS_EH_REGION 0x70000027 #define SHT_MIPS_XLATE_OLD 0x70000028 #define SHT_MIPS_PDR_EXCEPTION 0x70000029 #define SHF_MIPS_GPREL 0x10000000 #define SHF_MIPS_MERGE 0x20000000 #define SHF_MIPS_ADDR 0x40000000 #define SHF_MIPS_STRINGS 0x80000000 #define SHF_MIPS_NOSTRIP 0x08000000 #define SHF_MIPS_LOCAL 0x04000000 #define SHF_MIPS_NAMES 0x02000000 #define SHF_MIPS_NODUPE 0x01000000 #define STO_MIPS_DEFAULT 0x0 #define STO_MIPS_INTERNAL 0x1 #define STO_MIPS_HIDDEN 0x2 #define STO_MIPS_PROTECTED 0x3 #define STO_MIPS_PLT 0x8 #define STO_MIPS_SC_ALIGN_UNUSED 0xff #define STB_MIPS_SPLIT_COMMON 13 typedef union { struct { Elf32_Word gt_current_g_value; Elf32_Word gt_unused; } gt_header; struct { Elf32_Word gt_g_value; Elf32_Word gt_bytes; } gt_entry; } Elf32_gptab; typedef struct { Elf32_Word ri_gprmask; Elf32_Word ri_cprmask[4]; Elf32_Sword ri_gp_value; } Elf32_RegInfo; typedef struct { unsigned char kind; unsigned char size; Elf32_Section section; Elf32_Word info; } Elf_Options; #define ODK_NULL 0 #define ODK_REGINFO 1 #define ODK_EXCEPTIONS 2 #define ODK_PAD 3 #define ODK_HWPATCH 4 #define ODK_FILL 5 #define ODK_TAGS 6 #define ODK_HWAND 7 #define ODK_HWOR 8 #define OEX_FPU_MIN 0x1f #define OEX_FPU_MAX 0x1f00 #define OEX_PAGE0 0x10000 #define OEX_SMM 0x20000 #define OEX_FPDBUG 0x40000 #define OEX_PRECISEFP OEX_FPDBUG #define OEX_DISMISS 0x80000 #define OEX_FPU_INVAL 0x10 #define OEX_FPU_DIV0 0x08 #define OEX_FPU_OFLO 0x04 #define OEX_FPU_UFLO 0x02 #define OEX_FPU_INEX 0x01 #define OHW_R4KEOP 0x1 #define OHW_R8KPFETCH 0x2 #define OHW_R5KEOP 0x4 #define OHW_R5KCVTL 0x8 #define OPAD_PREFIX 0x1 #define OPAD_POSTFIX 0x2 #define OPAD_SYMBOL 0x4 typedef struct { Elf32_Word hwp_flags1; Elf32_Word hwp_flags2; } Elf_Options_Hw; #define OHWA0_R4KEOP_CHECKED 0x00000001 #define OHWA1_R4KEOP_CLEAN 0x00000002 #define R_MIPS_NONE 0 #define R_MIPS_16 1 #define R_MIPS_32 2 #define R_MIPS_REL32 3 #define R_MIPS_26 4 #define R_MIPS_HI16 5 #define R_MIPS_LO16 6 #define R_MIPS_GPREL16 7 #define R_MIPS_LITERAL 8 #define R_MIPS_GOT16 9 #define R_MIPS_PC16 10 #define R_MIPS_CALL16 11 #define R_MIPS_GPREL32 12 #define R_MIPS_SHIFT5 16 #define R_MIPS_SHIFT6 17 #define R_MIPS_64 18 #define R_MIPS_GOT_DISP 19 #define R_MIPS_GOT_PAGE 20 #define R_MIPS_GOT_OFST 21 #define R_MIPS_GOT_HI16 22 #define R_MIPS_GOT_LO16 23 #define R_MIPS_SUB 24 #define R_MIPS_INSERT_A 25 #define R_MIPS_INSERT_B 26 #define R_MIPS_DELETE 27 #define R_MIPS_HIGHER 28 #define R_MIPS_HIGHEST 29 #define R_MIPS_CALL_HI16 30 #define R_MIPS_CALL_LO16 31 #define R_MIPS_SCN_DISP 32 #define R_MIPS_REL16 33 #define R_MIPS_ADD_IMMEDIATE 34 #define R_MIPS_PJUMP 35 #define R_MIPS_RELGOT 36 #define R_MIPS_JALR 37 #define R_MIPS_TLS_DTPMOD32 38 #define R_MIPS_TLS_DTPREL32 39 #define R_MIPS_TLS_DTPMOD64 40 #define R_MIPS_TLS_DTPREL64 41 #define R_MIPS_TLS_GD 42 #define R_MIPS_TLS_LDM 43 #define R_MIPS_TLS_DTPREL_HI16 44 #define R_MIPS_TLS_DTPREL_LO16 45 #define R_MIPS_TLS_GOTTPREL 46 #define R_MIPS_TLS_TPREL32 47 #define R_MIPS_TLS_TPREL64 48 #define R_MIPS_TLS_TPREL_HI16 49 #define R_MIPS_TLS_TPREL_LO16 50 #define R_MIPS_GLOB_DAT 51 #define R_MIPS_COPY 126 #define R_MIPS_JUMP_SLOT 127 #define R_MIPS_NUM 128 #define PT_MIPS_REGINFO 0x70000000 #define PT_MIPS_RTPROC 0x70000001 #define PT_MIPS_OPTIONS 0x70000002 #define PT_MIPS_ABIFLAGS 0x70000003 #define PF_MIPS_LOCAL 0x10000000 #define DT_MIPS_RLD_VERSION 0x70000001 #define DT_MIPS_TIME_STAMP 0x70000002 #define DT_MIPS_ICHECKSUM 0x70000003 #define DT_MIPS_IVERSION 0x70000004 #define DT_MIPS_FLAGS 0x70000005 #define DT_MIPS_BASE_ADDRESS 0x70000006 #define DT_MIPS_MSYM 0x70000007 #define DT_MIPS_CONFLICT 0x70000008 #define DT_MIPS_LIBLIST 0x70000009 #define DT_MIPS_LOCAL_GOTNO 0x7000000a #define DT_MIPS_CONFLICTNO 0x7000000b #define DT_MIPS_LIBLISTNO 0x70000010 #define DT_MIPS_SYMTABNO 0x70000011 #define DT_MIPS_UNREFEXTNO 0x70000012 #define DT_MIPS_GOTSYM 0x70000013 #define DT_MIPS_HIPAGENO 0x70000014 #define DT_MIPS_RLD_MAP 0x70000016 #define DT_MIPS_DELTA_CLASS 0x70000017 #define DT_MIPS_DELTA_CLASS_NO 0x70000018 #define DT_MIPS_DELTA_INSTANCE 0x70000019 #define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a #define DT_MIPS_DELTA_RELOC 0x7000001b #define DT_MIPS_DELTA_RELOC_NO 0x7000001c #define DT_MIPS_DELTA_SYM 0x7000001d #define DT_MIPS_DELTA_SYM_NO 0x7000001e #define DT_MIPS_DELTA_CLASSSYM 0x70000020 #define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021 #define DT_MIPS_CXX_FLAGS 0x70000022 #define DT_MIPS_PIXIE_INIT 0x70000023 #define DT_MIPS_SYMBOL_LIB 0x70000024 #define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025 #define DT_MIPS_LOCAL_GOTIDX 0x70000026 #define DT_MIPS_HIDDEN_GOTIDX 0x70000027 #define DT_MIPS_PROTECTED_GOTIDX 0x70000028 #define DT_MIPS_OPTIONS 0x70000029 #define DT_MIPS_INTERFACE 0x7000002a #define DT_MIPS_DYNSTR_ALIGN 0x7000002b #define DT_MIPS_INTERFACE_SIZE 0x7000002c #define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d #define DT_MIPS_PERF_SUFFIX 0x7000002e #define DT_MIPS_COMPACT_SIZE 0x7000002f #define DT_MIPS_GP_VALUE 0x70000030 #define DT_MIPS_AUX_DYNAMIC 0x70000031 #define DT_MIPS_PLTGOT 0x70000032 #define DT_MIPS_RWPLT 0x70000034 #define DT_MIPS_RLD_MAP_REL 0x70000035 #define DT_MIPS_NUM 0x36 #define RHF_NONE 0 #define RHF_QUICKSTART (1 << 0) #define RHF_NOTPOT (1 << 1) #define RHF_NO_LIBRARY_REPLACEMENT (1 << 2) #define RHF_NO_MOVE (1 << 3) #define RHF_SGI_ONLY (1 << 4) #define RHF_GUARANTEE_INIT (1 << 5) #define RHF_DELTA_C_PLUS_PLUS (1 << 6) #define RHF_GUARANTEE_START_INIT (1 << 7) #define RHF_PIXIE (1 << 8) #define RHF_DEFAULT_DELAY_LOAD (1 << 9) #define RHF_REQUICKSTART (1 << 10) #define RHF_REQUICKSTARTED (1 << 11) #define RHF_CORD (1 << 12) #define RHF_NO_UNRES_UNDEF (1 << 13) #define RHF_RLD_ORDER_SAFE (1 << 14) typedef struct { Elf32_Word l_name; Elf32_Word l_time_stamp; Elf32_Word l_checksum; Elf32_Word l_version; Elf32_Word l_flags; } Elf32_Lib; typedef struct { Elf64_Word l_name; Elf64_Word l_time_stamp; Elf64_Word l_checksum; Elf64_Word l_version; Elf64_Word l_flags; } Elf64_Lib; #define LL_NONE 0 #define LL_EXACT_MATCH (1 << 0) #define LL_IGNORE_INT_VER (1 << 1) #define LL_REQUIRE_MINOR (1 << 2) #define LL_EXPORTS (1 << 3) #define LL_DELAY_LOAD (1 << 4) #define LL_DELTA (1 << 5) typedef Elf32_Addr Elf32_Conflict; typedef struct { Elf32_Half version; unsigned char isa_level; unsigned char isa_rev; unsigned char gpr_size; unsigned char cpr1_size; unsigned char cpr2_size; unsigned char fp_abi; Elf32_Word isa_ext; Elf32_Word ases; Elf32_Word flags1; Elf32_Word flags2; } Elf_MIPS_ABIFlags_v0; #define MIPS_AFL_REG_NONE 0x00 #define MIPS_AFL_REG_32 0x01 #define MIPS_AFL_REG_64 0x02 #define MIPS_AFL_REG_128 0x03 #define MIPS_AFL_ASE_DSP 0x00000001 #define MIPS_AFL_ASE_DSPR2 0x00000002 #define MIPS_AFL_ASE_EVA 0x00000004 #define MIPS_AFL_ASE_MCU 0x00000008 #define MIPS_AFL_ASE_MDMX 0x00000010 #define MIPS_AFL_ASE_MIPS3D 0x00000020 #define MIPS_AFL_ASE_MT 0x00000040 #define MIPS_AFL_ASE_SMARTMIPS 0x00000080 #define MIPS_AFL_ASE_VIRT 0x00000100 #define MIPS_AFL_ASE_MSA 0x00000200 #define MIPS_AFL_ASE_MIPS16 0x00000400 #define MIPS_AFL_ASE_MICROMIPS 0x00000800 #define MIPS_AFL_ASE_XPA 0x00001000 #define MIPS_AFL_ASE_MASK 0x00001fff #define MIPS_AFL_EXT_XLR 1 #define MIPS_AFL_EXT_OCTEON2 2 #define MIPS_AFL_EXT_OCTEONP 3 #define MIPS_AFL_EXT_LOONGSON_3A 4 #define MIPS_AFL_EXT_OCTEON 5 #define MIPS_AFL_EXT_5900 6 #define MIPS_AFL_EXT_4650 7 #define MIPS_AFL_EXT_4010 8 #define MIPS_AFL_EXT_4100 9 #define MIPS_AFL_EXT_3900 10 #define MIPS_AFL_EXT_10000 11 #define MIPS_AFL_EXT_SB1 12 #define MIPS_AFL_EXT_4111 13 #define MIPS_AFL_EXT_4120 14 #define MIPS_AFL_EXT_5400 15 #define MIPS_AFL_EXT_5500 16 #define MIPS_AFL_EXT_LOONGSON_2E 17 #define MIPS_AFL_EXT_LOONGSON_2F 18 #define MIPS_AFL_FLAGS1_ODDSPREG 1 enum { Val_GNU_MIPS_ABI_FP_ANY = 0, Val_GNU_MIPS_ABI_FP_DOUBLE = 1, Val_GNU_MIPS_ABI_FP_SINGLE = 2, Val_GNU_MIPS_ABI_FP_SOFT = 3, Val_GNU_MIPS_ABI_FP_OLD_64 = 4, Val_GNU_MIPS_ABI_FP_XX = 5, Val_GNU_MIPS_ABI_FP_64 = 6, Val_GNU_MIPS_ABI_FP_64A = 7, Val_GNU_MIPS_ABI_FP_MAX = 7 }; #define EF_PARISC_TRAPNIL 0x00010000 #define EF_PARISC_EXT 0x00020000 #define EF_PARISC_LSB 0x00040000 #define EF_PARISC_WIDE 0x00080000 #define EF_PARISC_NO_KABP 0x00100000 #define EF_PARISC_LAZYSWAP 0x00400000 #define EF_PARISC_ARCH 0x0000ffff #define EFA_PARISC_1_0 0x020b #define EFA_PARISC_1_1 0x0210 #define EFA_PARISC_2_0 0x0214 #define SHN_PARISC_ANSI_COMMON 0xff00 #define SHN_PARISC_HUGE_COMMON 0xff01 #define SHT_PARISC_EXT 0x70000000 #define SHT_PARISC_UNWIND 0x70000001 #define SHT_PARISC_DOC 0x70000002 #define SHF_PARISC_SHORT 0x20000000 #define SHF_PARISC_HUGE 0x40000000 #define SHF_PARISC_SBP 0x80000000 #define STT_PARISC_MILLICODE 13 #define STT_HP_OPAQUE (STT_LOOS + 0x1) #define STT_HP_STUB (STT_LOOS + 0x2) #define R_PARISC_NONE 0 #define R_PARISC_DIR32 1 #define R_PARISC_DIR21L 2 #define R_PARISC_DIR17R 3 #define R_PARISC_DIR17F 4 #define R_PARISC_DIR14R 6 #define R_PARISC_PCREL32 9 #define R_PARISC_PCREL21L 10 #define R_PARISC_PCREL17R 11 #define R_PARISC_PCREL17F 12 #define R_PARISC_PCREL14R 14 #define R_PARISC_DPREL21L 18 #define R_PARISC_DPREL14R 22 #define R_PARISC_GPREL21L 26 #define R_PARISC_GPREL14R 30 #define R_PARISC_LTOFF21L 34 #define R_PARISC_LTOFF14R 38 #define R_PARISC_SECREL32 41 #define R_PARISC_SEGBASE 48 #define R_PARISC_SEGREL32 49 #define R_PARISC_PLTOFF21L 50 #define R_PARISC_PLTOFF14R 54 #define R_PARISC_LTOFF_FPTR32 57 #define R_PARISC_LTOFF_FPTR21L 58 #define R_PARISC_LTOFF_FPTR14R 62 #define R_PARISC_FPTR64 64 #define R_PARISC_PLABEL32 65 #define R_PARISC_PLABEL21L 66 #define R_PARISC_PLABEL14R 70 #define R_PARISC_PCREL64 72 #define R_PARISC_PCREL22F 74 #define R_PARISC_PCREL14WR 75 #define R_PARISC_PCREL14DR 76 #define R_PARISC_PCREL16F 77 #define R_PARISC_PCREL16WF 78 #define R_PARISC_PCREL16DF 79 #define R_PARISC_DIR64 80 #define R_PARISC_DIR14WR 83 #define R_PARISC_DIR14DR 84 #define R_PARISC_DIR16F 85 #define R_PARISC_DIR16WF 86 #define R_PARISC_DIR16DF 87 #define R_PARISC_GPREL64 88 #define R_PARISC_GPREL14WR 91 #define R_PARISC_GPREL14DR 92 #define R_PARISC_GPREL16F 93 #define R_PARISC_GPREL16WF 94 #define R_PARISC_GPREL16DF 95 #define R_PARISC_LTOFF64 96 #define R_PARISC_LTOFF14WR 99 #define R_PARISC_LTOFF14DR 100 #define R_PARISC_LTOFF16F 101 #define R_PARISC_LTOFF16WF 102 #define R_PARISC_LTOFF16DF 103 #define R_PARISC_SECREL64 104 #define R_PARISC_SEGREL64 112 #define R_PARISC_PLTOFF14WR 115 #define R_PARISC_PLTOFF14DR 116 #define R_PARISC_PLTOFF16F 117 #define R_PARISC_PLTOFF16WF 118 #define R_PARISC_PLTOFF16DF 119 #define R_PARISC_LTOFF_FPTR64 120 #define R_PARISC_LTOFF_FPTR14WR 123 #define R_PARISC_LTOFF_FPTR14DR 124 #define R_PARISC_LTOFF_FPTR16F 125 #define R_PARISC_LTOFF_FPTR16WF 126 #define R_PARISC_LTOFF_FPTR16DF 127 #define R_PARISC_LORESERVE 128 #define R_PARISC_COPY 128 #define R_PARISC_IPLT 129 #define R_PARISC_EPLT 130 #define R_PARISC_TPREL32 153 #define R_PARISC_TPREL21L 154 #define R_PARISC_TPREL14R 158 #define R_PARISC_LTOFF_TP21L 162 #define R_PARISC_LTOFF_TP14R 166 #define R_PARISC_LTOFF_TP14F 167 #define R_PARISC_TPREL64 216 #define R_PARISC_TPREL14WR 219 #define R_PARISC_TPREL14DR 220 #define R_PARISC_TPREL16F 221 #define R_PARISC_TPREL16WF 222 #define R_PARISC_TPREL16DF 223 #define R_PARISC_LTOFF_TP64 224 #define R_PARISC_LTOFF_TP14WR 227 #define R_PARISC_LTOFF_TP14DR 228 #define R_PARISC_LTOFF_TP16F 229 #define R_PARISC_LTOFF_TP16WF 230 #define R_PARISC_LTOFF_TP16DF 231 #define R_PARISC_GNU_VTENTRY 232 #define R_PARISC_GNU_VTINHERIT 233 #define R_PARISC_TLS_GD21L 234 #define R_PARISC_TLS_GD14R 235 #define R_PARISC_TLS_GDCALL 236 #define R_PARISC_TLS_LDM21L 237 #define R_PARISC_TLS_LDM14R 238 #define R_PARISC_TLS_LDMCALL 239 #define R_PARISC_TLS_LDO21L 240 #define R_PARISC_TLS_LDO14R 241 #define R_PARISC_TLS_DTPMOD32 242 #define R_PARISC_TLS_DTPMOD64 243 #define R_PARISC_TLS_DTPOFF32 244 #define R_PARISC_TLS_DTPOFF64 245 #define R_PARISC_TLS_LE21L R_PARISC_TPREL21L #define R_PARISC_TLS_LE14R R_PARISC_TPREL14R #define R_PARISC_TLS_IE21L R_PARISC_LTOFF_TP21L #define R_PARISC_TLS_IE14R R_PARISC_LTOFF_TP14R #define R_PARISC_TLS_TPREL32 R_PARISC_TPREL32 #define R_PARISC_TLS_TPREL64 R_PARISC_TPREL64 #define R_PARISC_HIRESERVE 255 #define PT_HP_TLS (PT_LOOS + 0x0) #define PT_HP_CORE_NONE (PT_LOOS + 0x1) #define PT_HP_CORE_VERSION (PT_LOOS + 0x2) #define PT_HP_CORE_KERNEL (PT_LOOS + 0x3) #define PT_HP_CORE_COMM (PT_LOOS + 0x4) #define PT_HP_CORE_PROC (PT_LOOS + 0x5) #define PT_HP_CORE_LOADABLE (PT_LOOS + 0x6) #define PT_HP_CORE_STACK (PT_LOOS + 0x7) #define PT_HP_CORE_SHM (PT_LOOS + 0x8) #define PT_HP_CORE_MMF (PT_LOOS + 0x9) #define PT_HP_PARALLEL (PT_LOOS + 0x10) #define PT_HP_FASTBIND (PT_LOOS + 0x11) #define PT_HP_OPT_ANNOT (PT_LOOS + 0x12) #define PT_HP_HSL_ANNOT (PT_LOOS + 0x13) #define PT_HP_STACK (PT_LOOS + 0x14) #define PT_PARISC_ARCHEXT 0x70000000 #define PT_PARISC_UNWIND 0x70000001 #define PF_PARISC_SBP 0x08000000 #define PF_HP_PAGE_SIZE 0x00100000 #define PF_HP_FAR_SHARED 0x00200000 #define PF_HP_NEAR_SHARED 0x00400000 #define PF_HP_CODE 0x01000000 #define PF_HP_MODIFY 0x02000000 #define PF_HP_LAZYSWAP 0x04000000 #define PF_HP_SBP 0x08000000 #define EF_ALPHA_32BIT 1 #define EF_ALPHA_CANRELAX 2 #define SHT_ALPHA_DEBUG 0x70000001 #define SHT_ALPHA_REGINFO 0x70000002 #define SHF_ALPHA_GPREL 0x10000000 #define STO_ALPHA_NOPV 0x80 #define STO_ALPHA_STD_GPLOAD 0x88 #define R_ALPHA_NONE 0 #define R_ALPHA_REFLONG 1 #define R_ALPHA_REFQUAD 2 #define R_ALPHA_GPREL32 3 #define R_ALPHA_LITERAL 4 #define R_ALPHA_LITUSE 5 #define R_ALPHA_GPDISP 6 #define R_ALPHA_BRADDR 7 #define R_ALPHA_HINT 8 #define R_ALPHA_SREL16 9 #define R_ALPHA_SREL32 10 #define R_ALPHA_SREL64 11 #define R_ALPHA_GPRELHIGH 17 #define R_ALPHA_GPRELLOW 18 #define R_ALPHA_GPREL16 19 #define R_ALPHA_COPY 24 #define R_ALPHA_GLOB_DAT 25 #define R_ALPHA_JMP_SLOT 26 #define R_ALPHA_RELATIVE 27 #define R_ALPHA_TLS_GD_HI 28 #define R_ALPHA_TLSGD 29 #define R_ALPHA_TLS_LDM 30 #define R_ALPHA_DTPMOD64 31 #define R_ALPHA_GOTDTPREL 32 #define R_ALPHA_DTPREL64 33 #define R_ALPHA_DTPRELHI 34 #define R_ALPHA_DTPRELLO 35 #define R_ALPHA_DTPREL16 36 #define R_ALPHA_GOTTPREL 37 #define R_ALPHA_TPREL64 38 #define R_ALPHA_TPRELHI 39 #define R_ALPHA_TPRELLO 40 #define R_ALPHA_TPREL16 41 #define R_ALPHA_NUM 46 #define LITUSE_ALPHA_ADDR 0 #define LITUSE_ALPHA_BASE 1 #define LITUSE_ALPHA_BYTOFF 2 #define LITUSE_ALPHA_JSR 3 #define LITUSE_ALPHA_TLS_GD 4 #define LITUSE_ALPHA_TLS_LDM 5 #define DT_ALPHA_PLTRO (DT_LOPROC + 0) #define DT_ALPHA_NUM 1 #define EF_PPC_EMB 0x80000000 #define EF_PPC_RELOCATABLE 0x00010000 #define EF_PPC_RELOCATABLE_LIB 0x00008000 #define R_PPC_NONE 0 #define R_PPC_ADDR32 1 #define R_PPC_ADDR24 2 #define R_PPC_ADDR16 3 #define R_PPC_ADDR16_LO 4 #define R_PPC_ADDR16_HI 5 #define R_PPC_ADDR16_HA 6 #define R_PPC_ADDR14 7 #define R_PPC_ADDR14_BRTAKEN 8 #define R_PPC_ADDR14_BRNTAKEN 9 #define R_PPC_REL24 10 #define R_PPC_REL14 11 #define R_PPC_REL14_BRTAKEN 12 #define R_PPC_REL14_BRNTAKEN 13 #define R_PPC_GOT16 14 #define R_PPC_GOT16_LO 15 #define R_PPC_GOT16_HI 16 #define R_PPC_GOT16_HA 17 #define R_PPC_PLTREL24 18 #define R_PPC_COPY 19 #define R_PPC_GLOB_DAT 20 #define R_PPC_JMP_SLOT 21 #define R_PPC_RELATIVE 22 #define R_PPC_LOCAL24PC 23 #define R_PPC_UADDR32 24 #define R_PPC_UADDR16 25 #define R_PPC_REL32 26 #define R_PPC_PLT32 27 #define R_PPC_PLTREL32 28 #define R_PPC_PLT16_LO 29 #define R_PPC_PLT16_HI 30 #define R_PPC_PLT16_HA 31 #define R_PPC_SDAREL16 32 #define R_PPC_SECTOFF 33 #define R_PPC_SECTOFF_LO 34 #define R_PPC_SECTOFF_HI 35 #define R_PPC_SECTOFF_HA 36 #define R_PPC_TLS 67 #define R_PPC_DTPMOD32 68 #define R_PPC_TPREL16 69 #define R_PPC_TPREL16_LO 70 #define R_PPC_TPREL16_HI 71 #define R_PPC_TPREL16_HA 72 #define R_PPC_TPREL32 73 #define R_PPC_DTPREL16 74 #define R_PPC_DTPREL16_LO 75 #define R_PPC_DTPREL16_HI 76 #define R_PPC_DTPREL16_HA 77 #define R_PPC_DTPREL32 78 #define R_PPC_GOT_TLSGD16 79 #define R_PPC_GOT_TLSGD16_LO 80 #define R_PPC_GOT_TLSGD16_HI 81 #define R_PPC_GOT_TLSGD16_HA 82 #define R_PPC_GOT_TLSLD16 83 #define R_PPC_GOT_TLSLD16_LO 84 #define R_PPC_GOT_TLSLD16_HI 85 #define R_PPC_GOT_TLSLD16_HA 86 #define R_PPC_GOT_TPREL16 87 #define R_PPC_GOT_TPREL16_LO 88 #define R_PPC_GOT_TPREL16_HI 89 #define R_PPC_GOT_TPREL16_HA 90 #define R_PPC_GOT_DTPREL16 91 #define R_PPC_GOT_DTPREL16_LO 92 #define R_PPC_GOT_DTPREL16_HI 93 #define R_PPC_GOT_DTPREL16_HA 94 #define R_PPC_TLSGD 95 #define R_PPC_TLSLD 96 #define R_PPC_EMB_NADDR32 101 #define R_PPC_EMB_NADDR16 102 #define R_PPC_EMB_NADDR16_LO 103 #define R_PPC_EMB_NADDR16_HI 104 #define R_PPC_EMB_NADDR16_HA 105 #define R_PPC_EMB_SDAI16 106 #define R_PPC_EMB_SDA2I16 107 #define R_PPC_EMB_SDA2REL 108 #define R_PPC_EMB_SDA21 109 #define R_PPC_EMB_MRKREF 110 #define R_PPC_EMB_RELSEC16 111 #define R_PPC_EMB_RELST_LO 112 #define R_PPC_EMB_RELST_HI 113 #define R_PPC_EMB_RELST_HA 114 #define R_PPC_EMB_BIT_FLD 115 #define R_PPC_EMB_RELSDA 116 #define R_PPC_DIAB_SDA21_LO 180 #define R_PPC_DIAB_SDA21_HI 181 #define R_PPC_DIAB_SDA21_HA 182 #define R_PPC_DIAB_RELSDA_LO 183 #define R_PPC_DIAB_RELSDA_HI 184 #define R_PPC_DIAB_RELSDA_HA 185 #define R_PPC_IRELATIVE 248 #define R_PPC_REL16 249 #define R_PPC_REL16_LO 250 #define R_PPC_REL16_HI 251 #define R_PPC_REL16_HA 252 #define R_PPC_TOC16 255 #define DT_PPC_GOT (DT_LOPROC + 0) #define DT_PPC_OPT (DT_LOPROC + 1) #define DT_PPC_NUM 2 #define PPC_OPT_TLS 1 #define R_PPC64_NONE R_PPC_NONE #define R_PPC64_ADDR32 R_PPC_ADDR32 #define R_PPC64_ADDR24 R_PPC_ADDR24 #define R_PPC64_ADDR16 R_PPC_ADDR16 #define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO #define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI #define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA #define R_PPC64_ADDR14 R_PPC_ADDR14 #define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN #define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN #define R_PPC64_REL24 R_PPC_REL24 #define R_PPC64_REL14 R_PPC_REL14 #define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN #define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN #define R_PPC64_GOT16 R_PPC_GOT16 #define R_PPC64_GOT16_LO R_PPC_GOT16_LO #define R_PPC64_GOT16_HI R_PPC_GOT16_HI #define R_PPC64_GOT16_HA R_PPC_GOT16_HA #define R_PPC64_COPY R_PPC_COPY #define R_PPC64_GLOB_DAT R_PPC_GLOB_DAT #define R_PPC64_JMP_SLOT R_PPC_JMP_SLOT #define R_PPC64_RELATIVE R_PPC_RELATIVE #define R_PPC64_UADDR32 R_PPC_UADDR32 #define R_PPC64_UADDR16 R_PPC_UADDR16 #define R_PPC64_REL32 R_PPC_REL32 #define R_PPC64_PLT32 R_PPC_PLT32 #define R_PPC64_PLTREL32 R_PPC_PLTREL32 #define R_PPC64_PLT16_LO R_PPC_PLT16_LO #define R_PPC64_PLT16_HI R_PPC_PLT16_HI #define R_PPC64_PLT16_HA R_PPC_PLT16_HA #define R_PPC64_SECTOFF R_PPC_SECTOFF #define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO #define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI #define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA #define R_PPC64_ADDR30 37 #define R_PPC64_ADDR64 38 #define R_PPC64_ADDR16_HIGHER 39 #define R_PPC64_ADDR16_HIGHERA 40 #define R_PPC64_ADDR16_HIGHEST 41 #define R_PPC64_ADDR16_HIGHESTA 42 #define R_PPC64_UADDR64 43 #define R_PPC64_REL64 44 #define R_PPC64_PLT64 45 #define R_PPC64_PLTREL64 46 #define R_PPC64_TOC16 47 #define R_PPC64_TOC16_LO 48 #define R_PPC64_TOC16_HI 49 #define R_PPC64_TOC16_HA 50 #define R_PPC64_TOC 51 #define R_PPC64_PLTGOT16 52 #define R_PPC64_PLTGOT16_LO 53 #define R_PPC64_PLTGOT16_HI 54 #define R_PPC64_PLTGOT16_HA 55 #define R_PPC64_ADDR16_DS 56 #define R_PPC64_ADDR16_LO_DS 57 #define R_PPC64_GOT16_DS 58 #define R_PPC64_GOT16_LO_DS 59 #define R_PPC64_PLT16_LO_DS 60 #define R_PPC64_SECTOFF_DS 61 #define R_PPC64_SECTOFF_LO_DS 62 #define R_PPC64_TOC16_DS 63 #define R_PPC64_TOC16_LO_DS 64 #define R_PPC64_PLTGOT16_DS 65 #define R_PPC64_PLTGOT16_LO_DS 66 #define R_PPC64_TLS 67 #define R_PPC64_DTPMOD64 68 #define R_PPC64_TPREL16 69 #define R_PPC64_TPREL16_LO 70 #define R_PPC64_TPREL16_HI 71 #define R_PPC64_TPREL16_HA 72 #define R_PPC64_TPREL64 73 #define R_PPC64_DTPREL16 74 #define R_PPC64_DTPREL16_LO 75 #define R_PPC64_DTPREL16_HI 76 #define R_PPC64_DTPREL16_HA 77 #define R_PPC64_DTPREL64 78 #define R_PPC64_GOT_TLSGD16 79 #define R_PPC64_GOT_TLSGD16_LO 80 #define R_PPC64_GOT_TLSGD16_HI 81 #define R_PPC64_GOT_TLSGD16_HA 82 #define R_PPC64_GOT_TLSLD16 83 #define R_PPC64_GOT_TLSLD16_LO 84 #define R_PPC64_GOT_TLSLD16_HI 85 #define R_PPC64_GOT_TLSLD16_HA 86 #define R_PPC64_GOT_TPREL16_DS 87 #define R_PPC64_GOT_TPREL16_LO_DS 88 #define R_PPC64_GOT_TPREL16_HI 89 #define R_PPC64_GOT_TPREL16_HA 90 #define R_PPC64_GOT_DTPREL16_DS 91 #define R_PPC64_GOT_DTPREL16_LO_DS 92 #define R_PPC64_GOT_DTPREL16_HI 93 #define R_PPC64_GOT_DTPREL16_HA 94 #define R_PPC64_TPREL16_DS 95 #define R_PPC64_TPREL16_LO_DS 96 #define R_PPC64_TPREL16_HIGHER 97 #define R_PPC64_TPREL16_HIGHERA 98 #define R_PPC64_TPREL16_HIGHEST 99 #define R_PPC64_TPREL16_HIGHESTA 100 #define R_PPC64_DTPREL16_DS 101 #define R_PPC64_DTPREL16_LO_DS 102 #define R_PPC64_DTPREL16_HIGHER 103 #define R_PPC64_DTPREL16_HIGHERA 104 #define R_PPC64_DTPREL16_HIGHEST 105 #define R_PPC64_DTPREL16_HIGHESTA 106 #define R_PPC64_TLSGD 107 #define R_PPC64_TLSLD 108 #define R_PPC64_TOCSAVE 109 #define R_PPC64_ADDR16_HIGH 110 #define R_PPC64_ADDR16_HIGHA 111 #define R_PPC64_TPREL16_HIGH 112 #define R_PPC64_TPREL16_HIGHA 113 #define R_PPC64_DTPREL16_HIGH 114 #define R_PPC64_DTPREL16_HIGHA 115 #define R_PPC64_JMP_IREL 247 #define R_PPC64_IRELATIVE 248 #define R_PPC64_REL16 249 #define R_PPC64_REL16_LO 250 #define R_PPC64_REL16_HI 251 #define R_PPC64_REL16_HA 252 #define EF_PPC64_ABI 3 #define DT_PPC64_GLINK (DT_LOPROC + 0) #define DT_PPC64_OPD (DT_LOPROC + 1) #define DT_PPC64_OPDSZ (DT_LOPROC + 2) #define DT_PPC64_OPT (DT_LOPROC + 3) #define DT_PPC64_NUM 4 #define PPC64_OPT_TLS 1 #define PPC64_OPT_MULTI_TOC 2 #define STO_PPC64_LOCAL_BIT 5 #define STO_PPC64_LOCAL_MASK 0xe0 #define PPC64_LOCAL_ENTRY_OFFSET(x) (1 << (((x)&0xe0)>>5) & 0xfc) #define EF_ARM_RELEXEC 0x01 #define EF_ARM_HASENTRY 0x02 #define EF_ARM_INTERWORK 0x04 #define EF_ARM_APCS_26 0x08 #define EF_ARM_APCS_FLOAT 0x10 #define EF_ARM_PIC 0x20 #define EF_ARM_ALIGN8 0x40 #define EF_ARM_NEW_ABI 0x80 #define EF_ARM_OLD_ABI 0x100 #define EF_ARM_SOFT_FLOAT 0x200 #define EF_ARM_VFP_FLOAT 0x400 #define EF_ARM_MAVERICK_FLOAT 0x800 #define EF_ARM_ABI_FLOAT_SOFT 0x200 #define EF_ARM_ABI_FLOAT_HARD 0x400 #define EF_ARM_SYMSARESORTED 0x04 #define EF_ARM_DYNSYMSUSESEGIDX 0x08 #define EF_ARM_MAPSYMSFIRST 0x10 #define EF_ARM_EABIMASK 0XFF000000 #define EF_ARM_BE8 0x00800000 #define EF_ARM_LE8 0x00400000 #define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK) #define EF_ARM_EABI_UNKNOWN 0x00000000 #define EF_ARM_EABI_VER1 0x01000000 #define EF_ARM_EABI_VER2 0x02000000 #define EF_ARM_EABI_VER3 0x03000000 #define EF_ARM_EABI_VER4 0x04000000 #define EF_ARM_EABI_VER5 0x05000000 #define STT_ARM_TFUNC STT_LOPROC #define STT_ARM_16BIT STT_HIPROC #define SHF_ARM_ENTRYSECT 0x10000000 #define SHF_ARM_COMDEF 0x80000000 #define PF_ARM_SB 0x10000000 #define PF_ARM_PI 0x20000000 #define PF_ARM_ABS 0x40000000 #define PT_ARM_EXIDX (PT_LOPROC + 1) #define SHT_ARM_EXIDX (SHT_LOPROC + 1) #define SHT_ARM_PREEMPTMAP (SHT_LOPROC + 2) #define SHT_ARM_ATTRIBUTES (SHT_LOPROC + 3) #define R_AARCH64_NONE 0 #define R_AARCH64_P32_ABS32 1 #define R_AARCH64_P32_COPY 180 #define R_AARCH64_P32_GLOB_DAT 181 #define R_AARCH64_P32_JUMP_SLOT 182 #define R_AARCH64_P32_RELATIVE 183 #define R_AARCH64_P32_TLS_DTPMOD 184 #define R_AARCH64_P32_TLS_DTPREL 185 #define R_AARCH64_P32_TLS_TPREL 186 #define R_AARCH64_P32_TLSDESC 187 #define R_AARCH64_P32_IRELATIVE 188 #define R_AARCH64_ABS64 257 #define R_AARCH64_ABS32 258 #define R_AARCH64_ABS16 259 #define R_AARCH64_PREL64 260 #define R_AARCH64_PREL32 261 #define R_AARCH64_PREL16 262 #define R_AARCH64_MOVW_UABS_G0 263 #define R_AARCH64_MOVW_UABS_G0_NC 264 #define R_AARCH64_MOVW_UABS_G1 265 #define R_AARCH64_MOVW_UABS_G1_NC 266 #define R_AARCH64_MOVW_UABS_G2 267 #define R_AARCH64_MOVW_UABS_G2_NC 268 #define R_AARCH64_MOVW_UABS_G3 269 #define R_AARCH64_MOVW_SABS_G0 270 #define R_AARCH64_MOVW_SABS_G1 271 #define R_AARCH64_MOVW_SABS_G2 272 #define R_AARCH64_LD_PREL_LO19 273 #define R_AARCH64_ADR_PREL_LO21 274 #define R_AARCH64_ADR_PREL_PG_HI21 275 #define R_AARCH64_ADR_PREL_PG_HI21_NC 276 #define R_AARCH64_ADD_ABS_LO12_NC 277 #define R_AARCH64_LDST8_ABS_LO12_NC 278 #define R_AARCH64_TSTBR14 279 #define R_AARCH64_CONDBR19 280 #define R_AARCH64_JUMP26 282 #define R_AARCH64_CALL26 283 #define R_AARCH64_LDST16_ABS_LO12_NC 284 #define R_AARCH64_LDST32_ABS_LO12_NC 285 #define R_AARCH64_LDST64_ABS_LO12_NC 286 #define R_AARCH64_MOVW_PREL_G0 287 #define R_AARCH64_MOVW_PREL_G0_NC 288 #define R_AARCH64_MOVW_PREL_G1 289 #define R_AARCH64_MOVW_PREL_G1_NC 290 #define R_AARCH64_MOVW_PREL_G2 291 #define R_AARCH64_MOVW_PREL_G2_NC 292 #define R_AARCH64_MOVW_PREL_G3 293 #define R_AARCH64_LDST128_ABS_LO12_NC 299 #define R_AARCH64_MOVW_GOTOFF_G0 300 #define R_AARCH64_MOVW_GOTOFF_G0_NC 301 #define R_AARCH64_MOVW_GOTOFF_G1 302 #define R_AARCH64_MOVW_GOTOFF_G1_NC 303 #define R_AARCH64_MOVW_GOTOFF_G2 304 #define R_AARCH64_MOVW_GOTOFF_G2_NC 305 #define R_AARCH64_MOVW_GOTOFF_G3 306 #define R_AARCH64_GOTREL64 307 #define R_AARCH64_GOTREL32 308 #define R_AARCH64_GOT_LD_PREL19 309 #define R_AARCH64_LD64_GOTOFF_LO15 310 #define R_AARCH64_ADR_GOT_PAGE 311 #define R_AARCH64_LD64_GOT_LO12_NC 312 #define R_AARCH64_LD64_GOTPAGE_LO15 313 #define R_AARCH64_TLSGD_ADR_PREL21 512 #define R_AARCH64_TLSGD_ADR_PAGE21 513 #define R_AARCH64_TLSGD_ADD_LO12_NC 514 #define R_AARCH64_TLSGD_MOVW_G1 515 #define R_AARCH64_TLSGD_MOVW_G0_NC 516 #define R_AARCH64_TLSLD_ADR_PREL21 517 #define R_AARCH64_TLSLD_ADR_PAGE21 518 #define R_AARCH64_TLSLD_ADD_LO12_NC 519 #define R_AARCH64_TLSLD_MOVW_G1 520 #define R_AARCH64_TLSLD_MOVW_G0_NC 521 #define R_AARCH64_TLSLD_LD_PREL19 522 #define R_AARCH64_TLSLD_MOVW_DTPREL_G2 523 #define R_AARCH64_TLSLD_MOVW_DTPREL_G1 524 #define R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC 525 #define R_AARCH64_TLSLD_MOVW_DTPREL_G0 526 #define R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC 527 #define R_AARCH64_TLSLD_ADD_DTPREL_HI12 528 #define R_AARCH64_TLSLD_ADD_DTPREL_LO12 529 #define R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC 530 #define R_AARCH64_TLSLD_LDST8_DTPREL_LO12 531 #define R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC 532 #define R_AARCH64_TLSLD_LDST16_DTPREL_LO12 533 #define R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC 534 #define R_AARCH64_TLSLD_LDST32_DTPREL_LO12 535 #define R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC 536 #define R_AARCH64_TLSLD_LDST64_DTPREL_LO12 537 #define R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC 538 #define R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 539 #define R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC 540 #define R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 541 #define R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC 542 #define R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 543 #define R_AARCH64_TLSLE_MOVW_TPREL_G2 544 #define R_AARCH64_TLSLE_MOVW_TPREL_G1 545 #define R_AARCH64_TLSLE_MOVW_TPREL_G1_NC 546 #define R_AARCH64_TLSLE_MOVW_TPREL_G0 547 #define R_AARCH64_TLSLE_MOVW_TPREL_G0_NC 548 #define R_AARCH64_TLSLE_ADD_TPREL_HI12 549 #define R_AARCH64_TLSLE_ADD_TPREL_LO12 550 #define R_AARCH64_TLSLE_ADD_TPREL_LO12_NC 551 #define R_AARCH64_TLSLE_LDST8_TPREL_LO12 552 #define R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC 553 #define R_AARCH64_TLSLE_LDST16_TPREL_LO12 554 #define R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC 555 #define R_AARCH64_TLSLE_LDST32_TPREL_LO12 556 #define R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC 557 #define R_AARCH64_TLSLE_LDST64_TPREL_LO12 558 #define R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC 559 #define R_AARCH64_TLSDESC_LD_PREL19 560 #define R_AARCH64_TLSDESC_ADR_PREL21 561 #define R_AARCH64_TLSDESC_ADR_PAGE21 562 #define R_AARCH64_TLSDESC_LD64_LO12 563 #define R_AARCH64_TLSDESC_ADD_LO12 564 #define R_AARCH64_TLSDESC_OFF_G1 565 #define R_AARCH64_TLSDESC_OFF_G0_NC 566 #define R_AARCH64_TLSDESC_LDR 567 #define R_AARCH64_TLSDESC_ADD 568 #define R_AARCH64_TLSDESC_CALL 569 #define R_AARCH64_TLSLE_LDST128_TPREL_LO12 570 #define R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC 571 #define R_AARCH64_TLSLD_LDST128_DTPREL_LO12 572 #define R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC 573 #define R_AARCH64_COPY 1024 #define R_AARCH64_GLOB_DAT 1025 #define R_AARCH64_JUMP_SLOT 1026 #define R_AARCH64_RELATIVE 1027 #define R_AARCH64_TLS_DTPMOD 1028 #define R_AARCH64_TLS_DTPMOD64 1028 #define R_AARCH64_TLS_DTPREL 1029 #define R_AARCH64_TLS_DTPREL64 1029 #define R_AARCH64_TLS_TPREL 1030 #define R_AARCH64_TLS_TPREL64 1030 #define R_AARCH64_TLSDESC 1031 #define R_ARM_NONE 0 #define R_ARM_PC24 1 #define R_ARM_ABS32 2 #define R_ARM_REL32 3 #define R_ARM_PC13 4 #define R_ARM_ABS16 5 #define R_ARM_ABS12 6 #define R_ARM_THM_ABS5 7 #define R_ARM_ABS8 8 #define R_ARM_SBREL32 9 #define R_ARM_THM_PC22 10 #define R_ARM_THM_PC8 11 #define R_ARM_AMP_VCALL9 12 #define R_ARM_TLS_DESC 13 #define R_ARM_THM_SWI8 14 #define R_ARM_XPC25 15 #define R_ARM_THM_XPC22 16 #define R_ARM_TLS_DTPMOD32 17 #define R_ARM_TLS_DTPOFF32 18 #define R_ARM_TLS_TPOFF32 19 #define R_ARM_COPY 20 #define R_ARM_GLOB_DAT 21 #define R_ARM_JUMP_SLOT 22 #define R_ARM_RELATIVE 23 #define R_ARM_GOTOFF 24 #define R_ARM_GOTPC 25 #define R_ARM_GOT32 26 #define R_ARM_PLT32 27 #define R_ARM_CALL 28 #define R_ARM_JUMP24 29 #define R_ARM_THM_JUMP24 30 #define R_ARM_BASE_ABS 31 #define R_ARM_ALU_PCREL_7_0 32 #define R_ARM_ALU_PCREL_15_8 33 #define R_ARM_ALU_PCREL_23_15 34 #define R_ARM_LDR_SBREL_11_0 35 #define R_ARM_ALU_SBREL_19_12 36 #define R_ARM_ALU_SBREL_27_20 37 #define R_ARM_TARGET1 38 #define R_ARM_SBREL31 39 #define R_ARM_V4BX 40 #define R_ARM_TARGET2 41 #define R_ARM_PREL31 42 #define R_ARM_MOVW_ABS_NC 43 #define R_ARM_MOVT_ABS 44 #define R_ARM_MOVW_PREL_NC 45 #define R_ARM_MOVT_PREL 46 #define R_ARM_THM_MOVW_ABS_NC 47 #define R_ARM_THM_MOVT_ABS 48 #define R_ARM_THM_MOVW_PREL_NC 49 #define R_ARM_THM_MOVT_PREL 50 #define R_ARM_THM_JUMP19 51 #define R_ARM_THM_JUMP6 52 #define R_ARM_THM_ALU_PREL_11_0 53 #define R_ARM_THM_PC12 54 #define R_ARM_ABS32_NOI 55 #define R_ARM_REL32_NOI 56 #define R_ARM_ALU_PC_G0_NC 57 #define R_ARM_ALU_PC_G0 58 #define R_ARM_ALU_PC_G1_NC 59 #define R_ARM_ALU_PC_G1 60 #define R_ARM_ALU_PC_G2 61 #define R_ARM_LDR_PC_G1 62 #define R_ARM_LDR_PC_G2 63 #define R_ARM_LDRS_PC_G0 64 #define R_ARM_LDRS_PC_G1 65 #define R_ARM_LDRS_PC_G2 66 #define R_ARM_LDC_PC_G0 67 #define R_ARM_LDC_PC_G1 68 #define R_ARM_LDC_PC_G2 69 #define R_ARM_ALU_SB_G0_NC 70 #define R_ARM_ALU_SB_G0 71 #define R_ARM_ALU_SB_G1_NC 72 #define R_ARM_ALU_SB_G1 73 #define R_ARM_ALU_SB_G2 74 #define R_ARM_LDR_SB_G0 75 #define R_ARM_LDR_SB_G1 76 #define R_ARM_LDR_SB_G2 77 #define R_ARM_LDRS_SB_G0 78 #define R_ARM_LDRS_SB_G1 79 #define R_ARM_LDRS_SB_G2 80 #define R_ARM_LDC_SB_G0 81 #define R_ARM_LDC_SB_G1 82 #define R_ARM_LDC_SB_G2 83 #define R_ARM_MOVW_BREL_NC 84 #define R_ARM_MOVT_BREL 85 #define R_ARM_MOVW_BREL 86 #define R_ARM_THM_MOVW_BREL_NC 87 #define R_ARM_THM_MOVT_BREL 88 #define R_ARM_THM_MOVW_BREL 89 #define R_ARM_TLS_GOTDESC 90 #define R_ARM_TLS_CALL 91 #define R_ARM_TLS_DESCSEQ 92 #define R_ARM_THM_TLS_CALL 93 #define R_ARM_PLT32_ABS 94 #define R_ARM_GOT_ABS 95 #define R_ARM_GOT_PREL 96 #define R_ARM_GOT_BREL12 97 #define R_ARM_GOTOFF12 98 #define R_ARM_GOTRELAX 99 #define R_ARM_GNU_VTENTRY 100 #define R_ARM_GNU_VTINHERIT 101 #define R_ARM_THM_PC11 102 #define R_ARM_THM_PC9 103 #define R_ARM_TLS_GD32 104 #define R_ARM_TLS_LDM32 105 #define R_ARM_TLS_LDO32 106 #define R_ARM_TLS_IE32 107 #define R_ARM_TLS_LE32 108 #define R_ARM_TLS_LDO12 109 #define R_ARM_TLS_LE12 110 #define R_ARM_TLS_IE12GP 111 #define R_ARM_ME_TOO 128 #define R_ARM_THM_TLS_DESCSEQ 129 #define R_ARM_THM_TLS_DESCSEQ16 129 #define R_ARM_THM_TLS_DESCSEQ32 130 #define R_ARM_THM_GOT_BREL12 131 #define R_ARM_IRELATIVE 160 #define R_ARM_RXPC25 249 #define R_ARM_RSBREL32 250 #define R_ARM_THM_RPC22 251 #define R_ARM_RREL32 252 #define R_ARM_RABS22 253 #define R_ARM_RPC24 254 #define R_ARM_RBASE 255 #define R_ARM_NUM 256 #define EF_IA_64_MASKOS 0x0000000f #define EF_IA_64_ABI64 0x00000010 #define EF_IA_64_ARCH 0xff000000 #define PT_IA_64_ARCHEXT (PT_LOPROC + 0) #define PT_IA_64_UNWIND (PT_LOPROC + 1) #define PT_IA_64_HP_OPT_ANOT (PT_LOOS + 0x12) #define PT_IA_64_HP_HSL_ANOT (PT_LOOS + 0x13) #define PT_IA_64_HP_STACK (PT_LOOS + 0x14) #define PF_IA_64_NORECOV 0x80000000 #define SHT_IA_64_EXT (SHT_LOPROC + 0) #define SHT_IA_64_UNWIND (SHT_LOPROC + 1) #define SHF_IA_64_SHORT 0x10000000 #define SHF_IA_64_NORECOV 0x20000000 #define DT_IA_64_PLT_RESERVE (DT_LOPROC + 0) #define DT_IA_64_NUM 1 #define R_IA64_NONE 0x00 #define R_IA64_IMM14 0x21 #define R_IA64_IMM22 0x22 #define R_IA64_IMM64 0x23 #define R_IA64_DIR32MSB 0x24 #define R_IA64_DIR32LSB 0x25 #define R_IA64_DIR64MSB 0x26 #define R_IA64_DIR64LSB 0x27 #define R_IA64_GPREL22 0x2a #define R_IA64_GPREL64I 0x2b #define R_IA64_GPREL32MSB 0x2c #define R_IA64_GPREL32LSB 0x2d #define R_IA64_GPREL64MSB 0x2e #define R_IA64_GPREL64LSB 0x2f #define R_IA64_LTOFF22 0x32 #define R_IA64_LTOFF64I 0x33 #define R_IA64_PLTOFF22 0x3a #define R_IA64_PLTOFF64I 0x3b #define R_IA64_PLTOFF64MSB 0x3e #define R_IA64_PLTOFF64LSB 0x3f #define R_IA64_FPTR64I 0x43 #define R_IA64_FPTR32MSB 0x44 #define R_IA64_FPTR32LSB 0x45 #define R_IA64_FPTR64MSB 0x46 #define R_IA64_FPTR64LSB 0x47 #define R_IA64_PCREL60B 0x48 #define R_IA64_PCREL21B 0x49 #define R_IA64_PCREL21M 0x4a #define R_IA64_PCREL21F 0x4b #define R_IA64_PCREL32MSB 0x4c #define R_IA64_PCREL32LSB 0x4d #define R_IA64_PCREL64MSB 0x4e #define R_IA64_PCREL64LSB 0x4f #define R_IA64_LTOFF_FPTR22 0x52 #define R_IA64_LTOFF_FPTR64I 0x53 #define R_IA64_LTOFF_FPTR32MSB 0x54 #define R_IA64_LTOFF_FPTR32LSB 0x55 #define R_IA64_LTOFF_FPTR64MSB 0x56 #define R_IA64_LTOFF_FPTR64LSB 0x57 #define R_IA64_SEGREL32MSB 0x5c #define R_IA64_SEGREL32LSB 0x5d #define R_IA64_SEGREL64MSB 0x5e #define R_IA64_SEGREL64LSB 0x5f #define R_IA64_SECREL32MSB 0x64 #define R_IA64_SECREL32LSB 0x65 #define R_IA64_SECREL64MSB 0x66 #define R_IA64_SECREL64LSB 0x67 #define R_IA64_REL32MSB 0x6c #define R_IA64_REL32LSB 0x6d #define R_IA64_REL64MSB 0x6e #define R_IA64_REL64LSB 0x6f #define R_IA64_LTV32MSB 0x74 #define R_IA64_LTV32LSB 0x75 #define R_IA64_LTV64MSB 0x76 #define R_IA64_LTV64LSB 0x77 #define R_IA64_PCREL21BI 0x79 #define R_IA64_PCREL22 0x7a #define R_IA64_PCREL64I 0x7b #define R_IA64_IPLTMSB 0x80 #define R_IA64_IPLTLSB 0x81 #define R_IA64_COPY 0x84 #define R_IA64_SUB 0x85 #define R_IA64_LTOFF22X 0x86 #define R_IA64_LDXMOV 0x87 #define R_IA64_TPREL14 0x91 #define R_IA64_TPREL22 0x92 #define R_IA64_TPREL64I 0x93 #define R_IA64_TPREL64MSB 0x96 #define R_IA64_TPREL64LSB 0x97 #define R_IA64_LTOFF_TPREL22 0x9a #define R_IA64_DTPMOD64MSB 0xa6 #define R_IA64_DTPMOD64LSB 0xa7 #define R_IA64_LTOFF_DTPMOD22 0xaa #define R_IA64_DTPREL14 0xb1 #define R_IA64_DTPREL22 0xb2 #define R_IA64_DTPREL64I 0xb3 #define R_IA64_DTPREL32MSB 0xb4 #define R_IA64_DTPREL32LSB 0xb5 #define R_IA64_DTPREL64MSB 0xb6 #define R_IA64_DTPREL64LSB 0xb7 #define R_IA64_LTOFF_DTPREL22 0xba #define EF_SH_MACH_MASK 0x1f #define EF_SH_UNKNOWN 0x0 #define EF_SH1 0x1 #define EF_SH2 0x2 #define EF_SH3 0x3 #define EF_SH_DSP 0x4 #define EF_SH3_DSP 0x5 #define EF_SH4AL_DSP 0x6 #define EF_SH3E 0x8 #define EF_SH4 0x9 #define EF_SH2E 0xb #define EF_SH4A 0xc #define EF_SH2A 0xd #define EF_SH4_NOFPU 0x10 #define EF_SH4A_NOFPU 0x11 #define EF_SH4_NOMMU_NOFPU 0x12 #define EF_SH2A_NOFPU 0x13 #define EF_SH3_NOMMU 0x14 #define EF_SH2A_SH4_NOFPU 0x15 #define EF_SH2A_SH3_NOFPU 0x16 #define EF_SH2A_SH4 0x17 #define EF_SH2A_SH3E 0x18 #define R_SH_NONE 0 #define R_SH_DIR32 1 #define R_SH_REL32 2 #define R_SH_DIR8WPN 3 #define R_SH_IND12W 4 #define R_SH_DIR8WPL 5 #define R_SH_DIR8WPZ 6 #define R_SH_DIR8BP 7 #define R_SH_DIR8W 8 #define R_SH_DIR8L 9 #define R_SH_SWITCH16 25 #define R_SH_SWITCH32 26 #define R_SH_USES 27 #define R_SH_COUNT 28 #define R_SH_ALIGN 29 #define R_SH_CODE 30 #define R_SH_DATA 31 #define R_SH_LABEL 32 #define R_SH_SWITCH8 33 #define R_SH_GNU_VTINHERIT 34 #define R_SH_GNU_VTENTRY 35 #define R_SH_TLS_GD_32 144 #define R_SH_TLS_LD_32 145 #define R_SH_TLS_LDO_32 146 #define R_SH_TLS_IE_32 147 #define R_SH_TLS_LE_32 148 #define R_SH_TLS_DTPMOD32 149 #define R_SH_TLS_DTPOFF32 150 #define R_SH_TLS_TPOFF32 151 #define R_SH_GOT32 160 #define R_SH_PLT32 161 #define R_SH_COPY 162 #define R_SH_GLOB_DAT 163 #define R_SH_JMP_SLOT 164 #define R_SH_RELATIVE 165 #define R_SH_GOTOFF 166 #define R_SH_GOTPC 167 #define R_SH_GOT20 201 #define R_SH_GOTOFF20 202 #define R_SH_GOTFUNCDESC 203 #define R_SH_GOTFUNCDEST20 204 #define R_SH_GOTOFFFUNCDESC 205 #define R_SH_GOTOFFFUNCDEST20 206 #define R_SH_FUNCDESC 207 #define R_SH_FUNCDESC_VALUE 208 #define R_SH_NUM 256 #define R_390_NONE 0 #define R_390_8 1 #define R_390_12 2 #define R_390_16 3 #define R_390_32 4 #define R_390_PC32 5 #define R_390_GOT12 6 #define R_390_GOT32 7 #define R_390_PLT32 8 #define R_390_COPY 9 #define R_390_GLOB_DAT 10 #define R_390_JMP_SLOT 11 #define R_390_RELATIVE 12 #define R_390_GOTOFF32 13 #define R_390_GOTPC 14 #define R_390_GOT16 15 #define R_390_PC16 16 #define R_390_PC16DBL 17 #define R_390_PLT16DBL 18 #define R_390_PC32DBL 19 #define R_390_PLT32DBL 20 #define R_390_GOTPCDBL 21 #define R_390_64 22 #define R_390_PC64 23 #define R_390_GOT64 24 #define R_390_PLT64 25 #define R_390_GOTENT 26 #define R_390_GOTOFF16 27 #define R_390_GOTOFF64 28 #define R_390_GOTPLT12 29 #define R_390_GOTPLT16 30 #define R_390_GOTPLT32 31 #define R_390_GOTPLT64 32 #define R_390_GOTPLTENT 33 #define R_390_PLTOFF16 34 #define R_390_PLTOFF32 35 #define R_390_PLTOFF64 36 #define R_390_TLS_LOAD 37 #define R_390_TLS_GDCALL 38 #define R_390_TLS_LDCALL 39 #define R_390_TLS_GD32 40 #define R_390_TLS_GD64 41 #define R_390_TLS_GOTIE12 42 #define R_390_TLS_GOTIE32 43 #define R_390_TLS_GOTIE64 44 #define R_390_TLS_LDM32 45 #define R_390_TLS_LDM64 46 #define R_390_TLS_IE32 47 #define R_390_TLS_IE64 48 #define R_390_TLS_IEENT 49 #define R_390_TLS_LE32 50 #define R_390_TLS_LE64 51 #define R_390_TLS_LDO32 52 #define R_390_TLS_LDO64 53 #define R_390_TLS_DTPMOD 54 #define R_390_TLS_DTPOFF 55 #define R_390_TLS_TPOFF 56 #define R_390_20 57 #define R_390_GOT20 58 #define R_390_GOTPLT20 59 #define R_390_TLS_GOTIE20 60 #define R_390_NUM 61 #define R_CRIS_NONE 0 #define R_CRIS_8 1 #define R_CRIS_16 2 #define R_CRIS_32 3 #define R_CRIS_8_PCREL 4 #define R_CRIS_16_PCREL 5 #define R_CRIS_32_PCREL 6 #define R_CRIS_GNU_VTINHERIT 7 #define R_CRIS_GNU_VTENTRY 8 #define R_CRIS_COPY 9 #define R_CRIS_GLOB_DAT 10 #define R_CRIS_JUMP_SLOT 11 #define R_CRIS_RELATIVE 12 #define R_CRIS_16_GOT 13 #define R_CRIS_32_GOT 14 #define R_CRIS_16_GOTPLT 15 #define R_CRIS_32_GOTPLT 16 #define R_CRIS_32_GOTREL 17 #define R_CRIS_32_PLT_GOTREL 18 #define R_CRIS_32_PLT_PCREL 19 #define R_CRIS_NUM 20 #define R_X86_64_NONE 0 #define R_X86_64_64 1 #define R_X86_64_PC32 2 #define R_X86_64_GOT32 3 #define R_X86_64_PLT32 4 #define R_X86_64_COPY 5 #define R_X86_64_GLOB_DAT 6 #define R_X86_64_JUMP_SLOT 7 #define R_X86_64_RELATIVE 8 #define R_X86_64_GOTPCREL 9 #define R_X86_64_32 10 #define R_X86_64_32S 11 #define R_X86_64_16 12 #define R_X86_64_PC16 13 #define R_X86_64_8 14 #define R_X86_64_PC8 15 #define R_X86_64_DTPMOD64 16 #define R_X86_64_DTPOFF64 17 #define R_X86_64_TPOFF64 18 #define R_X86_64_TLSGD 19 #define R_X86_64_TLSLD 20 #define R_X86_64_DTPOFF32 21 #define R_X86_64_GOTTPOFF 22 #define R_X86_64_TPOFF32 23 #define R_X86_64_PC64 24 #define R_X86_64_GOTOFF64 25 #define R_X86_64_GOTPC32 26 #define R_X86_64_GOT64 27 #define R_X86_64_GOTPCREL64 28 #define R_X86_64_GOTPC64 29 #define R_X86_64_GOTPLT64 30 #define R_X86_64_PLTOFF64 31 #define R_X86_64_SIZE32 32 #define R_X86_64_SIZE64 33 #define R_X86_64_GOTPC32_TLSDESC 34 #define R_X86_64_TLSDESC_CALL 35 #define R_X86_64_TLSDESC 36 #define R_X86_64_IRELATIVE 37 #define R_X86_64_RELATIVE64 38 #define R_X86_64_GOTPCRELX 41 #define R_X86_64_REX_GOTPCRELX 42 #define R_X86_64_NUM 43 #define R_MN10300_NONE 0 #define R_MN10300_32 1 #define R_MN10300_16 2 #define R_MN10300_8 3 #define R_MN10300_PCREL32 4 #define R_MN10300_PCREL16 5 #define R_MN10300_PCREL8 6 #define R_MN10300_GNU_VTINHERIT 7 #define R_MN10300_GNU_VTENTRY 8 #define R_MN10300_24 9 #define R_MN10300_GOTPC32 10 #define R_MN10300_GOTPC16 11 #define R_MN10300_GOTOFF32 12 #define R_MN10300_GOTOFF24 13 #define R_MN10300_GOTOFF16 14 #define R_MN10300_PLT32 15 #define R_MN10300_PLT16 16 #define R_MN10300_GOT32 17 #define R_MN10300_GOT24 18 #define R_MN10300_GOT16 19 #define R_MN10300_COPY 20 #define R_MN10300_GLOB_DAT 21 #define R_MN10300_JMP_SLOT 22 #define R_MN10300_RELATIVE 23 #define R_MN10300_NUM 24 #define R_M32R_NONE 0 #define R_M32R_16 1 #define R_M32R_32 2 #define R_M32R_24 3 #define R_M32R_10_PCREL 4 #define R_M32R_18_PCREL 5 #define R_M32R_26_PCREL 6 #define R_M32R_HI16_ULO 7 #define R_M32R_HI16_SLO 8 #define R_M32R_LO16 9 #define R_M32R_SDA16 10 #define R_M32R_GNU_VTINHERIT 11 #define R_M32R_GNU_VTENTRY 12 #define R_M32R_16_RELA 33 #define R_M32R_32_RELA 34 #define R_M32R_24_RELA 35 #define R_M32R_10_PCREL_RELA 36 #define R_M32R_18_PCREL_RELA 37 #define R_M32R_26_PCREL_RELA 38 #define R_M32R_HI16_ULO_RELA 39 #define R_M32R_HI16_SLO_RELA 40 #define R_M32R_LO16_RELA 41 #define R_M32R_SDA16_RELA 42 #define R_M32R_RELA_GNU_VTINHERIT 43 #define R_M32R_RELA_GNU_VTENTRY 44 #define R_M32R_REL32 45 #define R_M32R_GOT24 48 #define R_M32R_26_PLTREL 49 #define R_M32R_COPY 50 #define R_M32R_GLOB_DAT 51 #define R_M32R_JMP_SLOT 52 #define R_M32R_RELATIVE 53 #define R_M32R_GOTOFF 54 #define R_M32R_GOTPC24 55 #define R_M32R_GOT16_HI_ULO 56 #define R_M32R_GOT16_HI_SLO 57 #define R_M32R_GOT16_LO 58 #define R_M32R_GOTPC_HI_ULO 59 #define R_M32R_GOTPC_HI_SLO 60 #define R_M32R_GOTPC_LO 61 #define R_M32R_GOTOFF_HI_ULO 62 #define R_M32R_GOTOFF_HI_SLO 63 #define R_M32R_GOTOFF_LO 64 #define R_M32R_NUM 256 #define R_MICROBLAZE_NONE 0 #define R_MICROBLAZE_32 1 #define R_MICROBLAZE_32_PCREL 2 #define R_MICROBLAZE_64_PCREL 3 #define R_MICROBLAZE_32_PCREL_LO 4 #define R_MICROBLAZE_64 5 #define R_MICROBLAZE_32_LO 6 #define R_MICROBLAZE_SRO32 7 #define R_MICROBLAZE_SRW32 8 #define R_MICROBLAZE_64_NONE 9 #define R_MICROBLAZE_32_SYM_OP_SYM 10 #define R_MICROBLAZE_GNU_VTINHERIT 11 #define R_MICROBLAZE_GNU_VTENTRY 12 #define R_MICROBLAZE_GOTPC_64 13 #define R_MICROBLAZE_GOT_64 14 #define R_MICROBLAZE_PLT_64 15 #define R_MICROBLAZE_REL 16 #define R_MICROBLAZE_JUMP_SLOT 17 #define R_MICROBLAZE_GLOB_DAT 18 #define R_MICROBLAZE_GOTOFF_64 19 #define R_MICROBLAZE_GOTOFF_32 20 #define R_MICROBLAZE_COPY 21 #define R_MICROBLAZE_TLS 22 #define R_MICROBLAZE_TLSGD 23 #define R_MICROBLAZE_TLSLD 24 #define R_MICROBLAZE_TLSDTPMOD32 25 #define R_MICROBLAZE_TLSDTPREL32 26 #define R_MICROBLAZE_TLSDTPREL64 27 #define R_MICROBLAZE_TLSGOTTPREL32 28 #define R_MICROBLAZE_TLSTPREL32 29 #define DT_NIOS2_GP 0x70000002 #define R_NIOS2_NONE 0 #define R_NIOS2_S16 1 #define R_NIOS2_U16 2 #define R_NIOS2_PCREL16 3 #define R_NIOS2_CALL26 4 #define R_NIOS2_IMM5 5 #define R_NIOS2_CACHE_OPX 6 #define R_NIOS2_IMM6 7 #define R_NIOS2_IMM8 8 #define R_NIOS2_HI16 9 #define R_NIOS2_LO16 10 #define R_NIOS2_HIADJ16 11 #define R_NIOS2_BFD_RELOC_32 12 #define R_NIOS2_BFD_RELOC_16 13 #define R_NIOS2_BFD_RELOC_8 14 #define R_NIOS2_GPREL 15 #define R_NIOS2_GNU_VTINHERIT 16 #define R_NIOS2_GNU_VTENTRY 17 #define R_NIOS2_UJMP 18 #define R_NIOS2_CJMP 19 #define R_NIOS2_CALLR 20 #define R_NIOS2_ALIGN 21 #define R_NIOS2_GOT16 22 #define R_NIOS2_CALL16 23 #define R_NIOS2_GOTOFF_LO 24 #define R_NIOS2_GOTOFF_HA 25 #define R_NIOS2_PCREL_LO 26 #define R_NIOS2_PCREL_HA 27 #define R_NIOS2_TLS_GD16 28 #define R_NIOS2_TLS_LDM16 29 #define R_NIOS2_TLS_LDO16 30 #define R_NIOS2_TLS_IE16 31 #define R_NIOS2_TLS_LE16 32 #define R_NIOS2_TLS_DTPMOD 33 #define R_NIOS2_TLS_DTPREL 34 #define R_NIOS2_TLS_TPREL 35 #define R_NIOS2_COPY 36 #define R_NIOS2_GLOB_DAT 37 #define R_NIOS2_JUMP_SLOT 38 #define R_NIOS2_RELATIVE 39 #define R_NIOS2_GOTOFF 40 #define R_NIOS2_CALL26_NOAT 41 #define R_NIOS2_GOT_LO 42 #define R_NIOS2_GOT_HA 43 #define R_NIOS2_CALL_LO 44 #define R_NIOS2_CALL_HA 45 #define R_OR1K_NONE 0 #define R_OR1K_32 1 #define R_OR1K_16 2 #define R_OR1K_8 3 #define R_OR1K_LO_16_IN_INSN 4 #define R_OR1K_HI_16_IN_INSN 5 #define R_OR1K_INSN_REL_26 6 #define R_OR1K_GNU_VTENTRY 7 #define R_OR1K_GNU_VTINHERIT 8 #define R_OR1K_32_PCREL 9 #define R_OR1K_16_PCREL 10 #define R_OR1K_8_PCREL 11 #define R_OR1K_GOTPC_HI16 12 #define R_OR1K_GOTPC_LO16 13 #define R_OR1K_GOT16 14 #define R_OR1K_PLT26 15 #define R_OR1K_GOTOFF_HI16 16 #define R_OR1K_GOTOFF_LO16 17 #define R_OR1K_COPY 18 #define R_OR1K_GLOB_DAT 19 #define R_OR1K_JMP_SLOT 20 #define R_OR1K_RELATIVE 21 #define R_OR1K_TLS_GD_HI16 22 #define R_OR1K_TLS_GD_LO16 23 #define R_OR1K_TLS_LDM_HI16 24 #define R_OR1K_TLS_LDM_LO16 25 #define R_OR1K_TLS_LDO_HI16 26 #define R_OR1K_TLS_LDO_LO16 27 #define R_OR1K_TLS_IE_HI16 28 #define R_OR1K_TLS_IE_LO16 29 #define R_OR1K_TLS_LE_HI16 30 #define R_OR1K_TLS_LE_LO16 31 #define R_OR1K_TLS_TPOFF 32 #define R_OR1K_TLS_DTPOFF 33 #define R_OR1K_TLS_DTPMOD 34 #define R_BPF_NONE 0 #define R_BPF_MAP_FD 1 #ifdef __cplusplus } #endif #endif picolibc-1.7.4/newlib/libc/include/endian.h000066400000000000000000000034011414576234500205430ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2019 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ /** * This is just a link to the real endian.h which is located in machine. * To be compatible with linux that has endian.h in include/endian.h */ #include picolibc-1.7.4/newlib/libc/include/envlock.h000066400000000000000000000033311414576234500207500ustar00rootroot00000000000000/* Copyright (c) 1992, 1993 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 4. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* envlock.h -- header file for env routines. */ #ifndef _INCLUDE_ENVLOCK_H_ #define _INCLUDE_ENVLOCK_H_ #include <_ansi.h> #include #define ENV_LOCK __LIBC_LOCK() #define ENV_UNLOCK __LIBC_UNLOCK() #endif /* _INCLUDE_ENVLOCK_H_ */ picolibc-1.7.4/newlib/libc/include/envz.h000066400000000000000000000014151414576234500202720ustar00rootroot00000000000000/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #include #include /* The newlib implementation of these functions assumes that sizeof(char) == 1. */ char * envz_entry (const char *envz, size_t envz_len, const char *name); char * envz_get (const char *envz, size_t envz_len, const char *name); error_t envz_add (char **envz, size_t *envz_len, const char *name, const char *value); error_t envz_merge (char **envz, size_t *envz_len, const char *envz2, size_t envz2_len, int override); void envz_remove(char **envz, size_t *envz_len, const char *name); void envz_strip (char **envz, size_t *envz_len); picolibc-1.7.4/newlib/libc/include/errno.h000066400000000000000000000036561414576234500204460ustar00rootroot00000000000000/* Copyright (c) 1991, 1993 The Regents of the University of California. All rights reserved. c) UNIX System Laboratories, Inc. All or some portions of this file are derived from material licensed to the University of California by American Telephone and Telegraph Co. or Unix System Laboratories, Inc. and are reproduced herein with the permission of UNIX System Laboratories, Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef __ERRNO_H__ #define __ERRNO_H__ #ifndef __error_t_defined typedef int error_t; #define __error_t_defined 1 #endif #include #endif /* !__ERRNO_H__ */ picolibc-1.7.4/newlib/libc/include/fastmath.h000066400000000000000000000036711414576234500211250ustar00rootroot00000000000000/* Copyright (c) 1991, 1993 The Regents of the University of California. All rights reserved. c) UNIX System Laboratories, Inc. All or some portions of this file are derived from material licensed to the University of California by American Telephone and Telegraph Co. or Unix System Laboratories, Inc. and are reproduced herein with the permission of UNIX System Laboratories, Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _FASTMATH_H_ #ifdef __cplusplus extern "C" { #endif #define _FASTMATH_H_ #include #include #ifdef __cplusplus } #endif #endif /* _FASTMATH_H_ */ picolibc-1.7.4/newlib/libc/include/fcntl.h000066400000000000000000000034271414576234500204230ustar00rootroot00000000000000/* Copyright (c) 1991, 1993 The Regents of the University of California. All rights reserved. c) UNIX System Laboratories, Inc. All or some portions of this file are derived from material licensed to the University of California by American Telephone and Telegraph Co. or Unix System Laboratories, Inc. and are reproduced herein with the permission of UNIX System Laboratories, Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include picolibc-1.7.4/newlib/libc/include/fenv.h000066400000000000000000000034151414576234500202500ustar00rootroot00000000000000/* Copyright (c) 2017 SiFive Inc. All rights reserved. This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the FreeBSD License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. A copy of this license is available at http://www.opensource.org/licenses. */ #ifndef _FENV_H #define _FENV_H #include #ifndef FE_TONEAREST #define FE_TONEAREST 0 #endif #ifndef FE_ALL_EXCEPT #define FE_ALL_EXCEPT 0 #endif #ifdef __cplusplus extern "C" { #endif /* Exception */ int feclearexcept(int excepts); int fegetexceptflag(fexcept_t *flagp, int excepts); int feraiseexcept(int excepts); int fesetexceptflag(const fexcept_t *flagp, int excepts); int fetestexcept(int excepts); /* Rounding mode */ int fegetround(void); int fesetround(int rounding_mode); /* Float environment */ int fegetenv(fenv_t *envp); int feholdexcept(fenv_t *envp); int fesetenv(const fenv_t *envp); int feupdateenv(const fenv_t *envp); int feenableexcept(int); int fedisableexcept(int); int fegetexcept(void); /* * Lastly, a FE_DFL_ENV macro must be defined, representing a pointer * to const fenv_t that contains the value of the default floating point * environment. * * NOTE: The extern'ed variable fe_default_env_p is an implementation * detail of this stub. FE_DFL_ENV must point to an instance of * fenv_t with the default fenv_t. The format of fenv_t and where * FE_DFL_ENV is are implementation specific. */ extern fenv_t _fe_dfl_env; #define FE_DFL_ENV ((const fenv_t *) &_fe_dfl_env) #ifdef __cplusplus } #endif #endif picolibc-1.7.4/newlib/libc/include/fnmatch.h000066400000000000000000000044251414576234500207340ustar00rootroot00000000000000/*- * Copyright (c) 1992, 1993 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $FreeBSD: src/include/fnmatch.h,v 1.10 2002/03/23 17:24:53 imp Exp $ * @(#)fnmatch.h 8.1 (Berkeley) 6/2/93 */ #ifndef _FNMATCH_H_ #define _FNMATCH_H_ #include #define FNM_NOMATCH 1 /* Match failed. */ #define FNM_NOESCAPE 0x01 /* Disable backslash escaping. */ #define FNM_PATHNAME 0x02 /* Slash must be matched by slash. */ #define FNM_PERIOD 0x04 /* Period must be matched by period. */ #if __GNU_VISIBLE #define FNM_LEADING_DIR 0x08 /* Ignore / after Imatch. */ #define FNM_CASEFOLD 0x10 /* Case insensitive search. */ #define FNM_IGNORECASE FNM_CASEFOLD #define FNM_FILE_NAME FNM_PATHNAME #endif __BEGIN_DECLS int fnmatch(const char *, const char *, int); __END_DECLS #endif /* !_FNMATCH_H_ */ picolibc-1.7.4/newlib/libc/include/ftw.h000066400000000000000000000044471414576234500201200ustar00rootroot00000000000000/* * Copyright © 2005-2020 Rich Felker, et al. * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef _FTW_H #define _FTW_H #ifdef __cplusplus extern "C" { #endif #include #include /* * Valid flags for the 3rd argument to the function that is passed as the * second argument to ftw(3) and nftw(3). Say it three times fast! */ #define FTW_F 0 /* File. */ #define FTW_D 1 /* Directory. */ #define FTW_DNR 2 /* Directory without read permission. */ #define FTW_DP 3 /* Directory with subdirectories visited. */ #define FTW_NS 4 /* Unknown type; stat() failed. */ #define FTW_SL 5 /* Symbolic link. */ #define FTW_SLN 6 /* Sym link that names a nonexistent file. */ /* * Flags for use as the 4th argument to nftw(3). These may be ORed together. */ #define FTW_PHYS 0x01 /* Physical walk, don't follow sym links. */ #define FTW_MOUNT 0x02 /* The walk does not cross a mount point. */ #define FTW_DEPTH 0x04 /* Subdirs visited before the dir itself. */ #define FTW_CHDIR 0x08 /* Change to a directory before reading it. */ struct FTW { int base; int level; }; int ftw(const char *, int (*)(const char *, const struct stat *, int), int); int nftw(const char *, int (*)(const char *, const struct stat *, int, struct FTW *), int, int); #ifdef __cplusplus } #endif #endif picolibc-1.7.4/newlib/libc/include/getopt.h000066400000000000000000000146441414576234500206220ustar00rootroot00000000000000/**************************************************************************** getopt.h - Read command line options AUTHOR: Gregory Pietsch CREATED Thu Jan 09 22:37:00 1997 DESCRIPTION: The getopt() function parses the command line arguments. Its arguments argc and argv are the argument count and array as passed to the main() function on program invocation. The argument optstring is a list of available option characters. If such a character is followed by a colon (`:'), the option takes an argument, which is placed in optarg. If such a character is followed by two colons, the option takes an optional argument, which is placed in optarg. If the option does not take an argument, optarg is NULL. The external variable optind is the index of the next array element of argv to be processed; it communicates from one call to the next which element to process. The getopt_long() function works like getopt() except that it also accepts long options started by two dashes `--'. If these take values, it is either in the form --arg=value or --arg value It takes the additional arguments longopts which is a pointer to the first element of an array of type GETOPT_LONG_OPTION_T, defined below. The last element of the array has to be filled with NULL for the name field. The longind pointer points to the index of the current long option relative to longopts if it is non-NULL. The getopt() function returns the option character if the option was found successfully, `:' if there was a missing parameter for one of the options, `?' for an unknown option character, and EOF for the end of the option list. The getopt_long() function's return value is described below. The function getopt_long_only() is identical to getopt_long(), except that a plus sign `+' can introduce long options as well as `--'. Describe how to deal with options that follow non-option ARGV-elements. If the caller did not specify anything, the default is REQUIRE_ORDER if the environment variable POSIXLY_CORRECT is defined, PERMUTE otherwise. REQUIRE_ORDER means don't recognize them as options; stop option processing when the first non-option is seen. This is what Unix does. This mode of operation is selected by either setting the environment variable POSIXLY_CORRECT, or using `+' as the first character of the optstring parameter. PERMUTE is the default. We permute the contents of ARGV as we scan, so that eventually all the non-options are at the end. This allows options to be given in any order, even with programs that were not written to expect this. RETURN_IN_ORDER is an option available to programs that were written to expect options and other ARGV-elements in any order and that care about the ordering of the two. We describe each non-option ARGV-element as if it were the argument of an option with character code 1. Using `-' as the first character of the optstring parameter selects this mode of operation. The special argument `--' forces an end of option-scanning regardless of the value of `ordering'. In the case of RETURN_IN_ORDER, only `--' can cause getopt() and friends to return EOF with optind != argc. COPYRIGHT NOTICE AND DISCLAIMER: Copyright (C) 1997 Gregory Pietsch This file and the accompanying getopt.c implementation file are hereby placed in the public domain without restrictions. Just give the author credit, don't claim you wrote it or prevent anyone else from using it. Gregory Pietsch's current e-mail address: gpietsch@comcast.net ****************************************************************************/ /* This is a glibc-extension header file. */ #ifndef GETOPT_H #define GETOPT_H #include <_ansi.h> /* include files needed by this include file */ #define no_argument 0 #define required_argument 1 #define optional_argument 2 #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* types defined by this include file */ struct option { const char *name; /* the name of the long option */ int has_arg; /* one of the above macros */ int *flag; /* determines if getopt_long() returns a * value for a long option; if it is * non-NULL, 0 is returned as a function * value and the value of val is stored in * the area pointed to by flag. Otherwise, * val is returned. */ int val; /* determines the value to return if flag is * NULL. */ }; /* While getopt.h is a glibc extension, the following are newlib extensions. * They are optionally included via the __need_getopt_newlib flag. */ #ifdef __need_getopt_newlib /* macros defined by this include file */ #define NO_ARG no_argument #define REQUIRED_ARG required_argument #define OPTIONAL_ARG optional_argument /* The GETOPT_DATA_INITIALIZER macro is used to initialize a statically- allocated variable of type struct getopt_data. */ #define GETOPT_DATA_INITIALIZER {0,0,0,0,0,0,0} /* These #defines are to make accessing the reentrant functions easier. */ #define getopt_r __getopt_r #define getopt_long_r __getopt_long_r #define getopt_long_only_r __getopt_long_only_r /* The getopt_data structure is for reentrancy. Its members are similar to the externally-defined variables. */ typedef struct getopt_data { char *optarg; int optind, opterr, optopt, optwhere; int permute_from, num_nonopts; } getopt_data; #endif /* __need_getopt_newlib */ /* externally-defined variables */ extern char *optarg; extern int optind; extern int opterr; extern int optopt; /* function prototypes */ int getopt (int __argc, char *const __argv[], const char *__optstring); int getopt_long (int __argc, char *const __argv[], const char *__shortopts, const struct option * __longopts, int *__longind); int getopt_long_only (int __argc, char *const __argv[], const char *__shortopts, const struct option * __longopts, int *__longind); #ifdef __need_getopt_newlib int __getopt_r (int __argc, char *const __argv[], const char *__optstring, struct getopt_data * __data); int __getopt_long_r (int __argc, char *const __argv[], const char *__shortopts, const struct option * __longopts, int *__longind, struct getopt_data * __data); int __getopt_long_only_r (int __argc, char *const __argv[], const char *__shortopts, const struct option * __longopts, int *__longind, struct getopt_data * __data); #endif /* __need_getopt_newlib */ #ifdef __cplusplus }; #endif /* __cplusplus */ #endif /* GETOPT_H */ /* END OF FILE getopt.h */ picolibc-1.7.4/newlib/libc/include/glob.h000066400000000000000000000073131414576234500202360ustar00rootroot00000000000000/* * Copyright (c) 1989, 1993 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Guido van Rossum. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)glob.h 8.1 (Berkeley) 6/2/93 * $FreeBSD: src/include/glob.h,v 1.6 2002/03/23 17:24:53 imp Exp $ */ #ifndef _GLOB_H_ #define _GLOB_H_ #include struct stat; typedef struct { int gl_pathc; /* Count of total paths so far. */ int gl_matchc; /* Count of paths matching pattern. */ int gl_offs; /* Reserved at beginning of gl_pathv. */ int gl_flags; /* Copy of flags parameter to glob. */ char **gl_pathv; /* List of paths matching pattern. */ /* Copy of errfunc parameter to glob. */ int (*gl_errfunc)(const char *, int); /* * Alternate filesystem access methods for glob; replacement * versions of closedir(3), readdir(3), opendir(3), stat(2) * and lstat(2). */ void (*gl_closedir)(void *); struct dirent *(*gl_readdir)(void *); void *(*gl_opendir)(const char *); int (*gl_lstat)(const char *, struct stat *); int (*gl_stat)(const char *, struct stat *); } glob_t; #define GLOB_APPEND 0x0001 /* Append to output from previous call. */ #define GLOB_DOOFFS 0x0002 /* Use gl_offs. */ #define GLOB_ERR 0x0004 /* Return on error. */ #define GLOB_MARK 0x0008 /* Append / to matching directories. */ #define GLOB_NOCHECK 0x0010 /* Return pattern itself if nothing matches. */ #define GLOB_NOSORT 0x0020 /* Don't sort. */ #define GLOB_ALTDIRFUNC 0x0040 /* Use alternately specified directory funcs. */ #define GLOB_BRACE 0x0080 /* Expand braces ala csh. */ #define GLOB_MAGCHAR 0x0100 /* Pattern had globbing characters. */ #define GLOB_NOMAGIC 0x0200 /* GLOB_NOCHECK without magic chars (csh). */ #define GLOB_QUOTE 0x0400 /* Quote special chars with \. */ #define GLOB_TILDE 0x0800 /* Expand tilde names from the passwd file. */ #define GLOB_LIMIT 0x1000 /* limit number of returned paths */ /* backwards compatibility, this is the old name for this option */ #define GLOB_MAXPATH GLOB_LIMIT #define GLOB_NOSPACE (-1) /* Malloc call failed. */ #define GLOB_ABEND (-2) /* Unignored error. */ __BEGIN_DECLS int glob(const char *__restrict, int, int (*)(const char *, int), glob_t *__restrict); void globfree(glob_t *); __END_DECLS #endif /* !_GLOB_H_ */ picolibc-1.7.4/newlib/libc/include/grp.h000066400000000000000000000060011414576234500200740ustar00rootroot00000000000000/* $NetBSD: grp.h,v 1.7 1995/04/29 05:30:40 cgd Exp $ */ /*- * Copyright (c) 1989, 1993 * The Regents of the University of California. All rights reserved. * (c) UNIX System Laboratories, Inc. * All or some portions of this file are derived from material licensed * to the University of California by American Telephone and Telegraph * Co. or Unix System Laboratories, Inc. and are reproduced herein with * the permission of UNIX System Laboratories, Inc. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)grp.h 8.2 (Berkeley) 1/21/94 */ #ifndef _GRP_H_ #define _GRP_H_ #include #include #ifdef __CYGWIN__ #include #endif #if __BSD_VISIBLE #define _PATH_GROUP "/etc/group" #endif struct group { char *gr_name; /* group name */ char *gr_passwd; /* group password */ gid_t gr_gid; /* group id */ char **gr_mem; /* group members */ }; #ifdef __cplusplus extern "C" { #endif #ifndef __INSIDE_CYGWIN__ struct group *getgrgid (gid_t); struct group *getgrnam (const char *); #if __MISC_VISIBLE || __POSIX_VISIBLE int getgrnam_r (const char *, struct group *, char *, size_t, struct group **); int getgrgid_r (gid_t, struct group *, char *, size_t, struct group **); #endif /* __MISC_VISIBLE || __POSIX_VISIBLE */ #if __MISC_VISIBLE || __XSI_VISIBLE >= 4 struct group *getgrent (void); void setgrent (void); void endgrent (void); #endif /* __MISC_VISIBLE || __XSI_VISIBLE >= 4 */ #if __BSD_VISIBLE int initgroups (const char *, gid_t); #endif /* __BSD_VISIBLE */ #endif /* !__INSIDE_CYGWIN__ */ #ifdef __cplusplus } #endif #endif /* !_GRP_H_ */ picolibc-1.7.4/newlib/libc/include/iconv.h000066400000000000000000000035411414576234500204300ustar00rootroot00000000000000/* * Copyright (c) 2003-2004, Artem B. Bityuckiy, SoftMine Corporation. * Rights transferred to Franklin Electronic Publishers. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifndef _ICONV_H_ #define _ICONV_H_ #include <_ansi.h> #include #include /* iconv_t: charset conversion descriptor type */ typedef _iconv_t iconv_t; _BEGIN_STD_C #ifndef _REENT_ONLY iconv_t iconv_open (const char *, const char *); size_t iconv (iconv_t, const char **__restrict, size_t *__restrict, char **__restrict, size_t *__restrict); int iconv_close (iconv_t); #endif _END_STD_C #endif /* #ifndef _ICONV_H_ */ picolibc-1.7.4/newlib/libc/include/ieeefp.h000066400000000000000000000134071414576234500205510ustar00rootroot00000000000000/* Copyright (c) 1991, 1993 The Regents of the University of California. All rights reserved. c) UNIX System Laboratories, Inc. All or some portions of this file are derived from material licensed to the University of California by American Telephone and Telegraph Co. or Unix System Laboratories, Inc. and are reproduced herein with the permission of UNIX System Laboratories, Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _IEEE_FP_H_ #define _IEEE_FP_H_ #include "_ansi.h" #include #include #include _BEGIN_STD_C #ifndef _LDBL_EQ_DBL #ifndef LDBL_MANT_DIG #error "LDBL_MANT_DIG not defined - should be found in float.h" #elif LDBL_MANT_DIG == DBL_MANT_DIG #error "double and long double are the same size but LDBL_EQ_DBL is not defined" #elif LDBL_MANT_DIG == 53 /* This happens when doubles are 32-bits and long doubles are 64-bits. */ #define EXT_EXPBITS 11 #define EXT_FRACHBITS 20 #define EXT_FRACLBITS 32 #define __ieee_ext_field_type unsigned long #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 65) && LDBL_MAX_EXP == 16384 /* 80-bit floats, as on x86 */ #define EXT_EXPBITS 15 #define EXT_FRACHBITS 32 #define EXT_FRACLBITS 32 #define __ieee_ext_field_type unsigned int #elif (LDBL_MANT_DIG == 113 || LDBL_MANT_DIG == 112) && LDBL_MAX_EXP == 16384 /* 128-bit IEEE floats, as on risc-v */ #define EXT_EXPBITS 15 #define EXT_FRACHBITS 48 #define EXT_FRACLBITS 64 #define __ieee_ext_field_type unsigned long long #elif LDBL_MANT_DIG == 106 && DBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 /* 128-bit double-double, as on powerpc */ #define EXT_EXPBITS 11 #define EXT_FRACHBITS DBL_MANT_DIG #define EXT_FRACLBITS DBL_MANT_DIG #define EXT_FRACGAP EXT_EXPBITS #define __ieee_ext_field_type unsigned long long #else #error Unsupported value for LDBL_MANT_DIG #endif #define EXT_EXP_INFNAN ((1 << EXT_EXPBITS) - 1) /* 32767 */ #define EXT_EXP_BIAS ((1 << (EXT_EXPBITS - 1)) - 1) /* 16383 */ #define EXT_FRACBITS (EXT_FRACLBITS + EXT_FRACHBITS) typedef struct ieee_ext { __ieee_ext_field_type ext_fracl : EXT_FRACLBITS; #ifdef EXT_FRACGAP __ieee_ext_field_type ext_gap : EXT_FRACGAP; #endif __ieee_ext_field_type ext_frach : EXT_FRACHBITS; __ieee_ext_field_type ext_exp : EXT_EXPBITS; __ieee_ext_field_type ext_sign : 1; } ieee_ext; typedef union ieee_ext_u { long double extu_ld; struct ieee_ext extu_ext; } ieee_ext_u; #endif /* ! _LDBL_EQ_DBL */ /* FLOATING ROUNDING */ typedef int fp_rnd; #define FP_RN 0 /* Round to nearest */ #define FP_RM 1 /* Round down */ #define FP_RP 2 /* Round up */ #define FP_RZ 3 /* Round to zero (trunate) */ fp_rnd fpgetround (void); fp_rnd fpsetround (fp_rnd); /* EXCEPTIONS */ typedef int fp_except; #define FP_X_INV 0x10 /* Invalid operation */ #define FP_X_DX 0x80 /* Divide by zero */ #define FP_X_OFL 0x04 /* Overflow exception */ #define FP_X_UFL 0x02 /* Underflow exception */ #define FP_X_IMP 0x01 /* imprecise exception */ fp_except fpgetmask (void); fp_except fpsetmask (fp_except); fp_except fpgetsticky (void); fp_except fpsetsticky (fp_except); /* INTEGER ROUNDING */ typedef int fp_rdi; #define FP_RDI_TOZ 0 /* Round to Zero */ #define FP_RDI_RD 1 /* Follow float mode */ fp_rdi fpgetroundtoi (void); fp_rdi fpsetroundtoi (fp_rdi); #define __IEEE_DBL_EXPBIAS 1023 #define __IEEE_FLT_EXPBIAS 127 #define __IEEE_DBL_EXPLEN 11 #define __IEEE_FLT_EXPLEN 8 #define __IEEE_DBL_FRACLEN (64 - (__IEEE_DBL_EXPLEN + 1)) #define __IEEE_FLT_FRACLEN (32 - (__IEEE_FLT_EXPLEN + 1)) #define __IEEE_DBL_MAXPOWTWO ((double)(1L << 32 - 2) * (1L << (32-11) - 32 + 1)) #define __IEEE_FLT_MAXPOWTWO ((float)(1L << (32-8) - 1)) #define __IEEE_DBL_NAN_EXP 0x7ff #define __IEEE_FLT_NAN_EXP 0xff #ifdef __ieeefp_isnanf #define isnanf(x) __ieeefp_isnanf(x) #endif #ifdef __ieeefp_isinff #define isinff(x) __ieeefp_isinff(x) #endif #ifdef __ieeefp_finitef #define finitef(x) __ieeefp_finitef(x) #endif #ifdef _DOUBLE_IS_32BITS #undef __IEEE_DBL_EXPBIAS #define __IEEE_DBL_EXPBIAS __IEEE_FLT_EXPBIAS #undef __IEEE_DBL_EXPLEN #define __IEEE_DBL_EXPLEN __IEEE_FLT_EXPLEN #undef __IEEE_DBL_FRACLEN #define __IEEE_DBL_FRACLEN __IEEE_FLT_FRACLEN #undef __IEEE_DBL_MAXPOWTWO #define __IEEE_DBL_MAXPOWTWO __IEEE_FLT_MAXPOWTWO #undef __IEEE_DBL_NAN_EXP #define __IEEE_DBL_NAN_EXP __IEEE_FLT_NAN_EXP #undef __ieee_double_shape_type #define __ieee_double_shape_type __ieee_float_shape_type #endif /* _DOUBLE_IS_32BITS */ _END_STD_C #endif /* _IEEE_FP_H_ */ picolibc-1.7.4/newlib/libc/include/inttypes.h000066400000000000000000000221421414576234500211670ustar00rootroot00000000000000/* * Copyright (c) 2004, 2005 by * Ralf Corsepius, Ulm/Germany. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ /** * @file inttypes.h */ #ifndef _INTTYPES_H #define _INTTYPES_H #include #include #include #include "_ansi.h" #include #define __need_wchar_t #include #if __BSD_VISIBLE #include #endif #define __STRINGIFY(a) #a /* 8-bit types */ #define __PRI8(x) __INT8 __STRINGIFY(x) #define __PRI8LEAST(x) __LEAST8 __STRINGIFY(x) #define __PRI8FAST(x) __FAST8 __STRINGIFY(x) /* NOTICE: scanning 8-bit types requires use of the hh specifier * which is only supported on newlib platforms that * are built with C99 I/O format support enabled. If the flag in * newlib.h hasn't been set during configuration to indicate this, the 8-bit * scanning format macros are disabled here as they result in undefined * behaviour which can include memory overwrite. Overriding the flag after the * library has been built is not recommended as it will expose the underlying * undefined behaviour. */ #if defined(_WANT_IO_C99_FORMATS) #define __SCN8(x) __INT8 __STRINGIFY(x) #define __SCN8LEAST(x) __LEAST8 __STRINGIFY(x) #define __SCN8FAST(x) __FAST8 __STRINGIFY(x) #endif /* _WANT_IO_C99_FORMATS */ #define PRId8 __PRI8(d) #define PRIi8 __PRI8(i) #define PRIo8 __PRI8(o) #define PRIu8 __PRI8(u) #define PRIx8 __PRI8(x) #define PRIX8 __PRI8(X) /* Macros below are only enabled for a newlib built with C99 I/O format support. */ #if defined(_WANT_IO_C99_FORMATS) #define SCNd8 __SCN8(d) #define SCNi8 __SCN8(i) #define SCNo8 __SCN8(o) #define SCNu8 __SCN8(u) #define SCNx8 __SCN8(x) #endif /* _WANT_IO_C99_FORMATS */ #define PRIdLEAST8 __PRI8LEAST(d) #define PRIiLEAST8 __PRI8LEAST(i) #define PRIoLEAST8 __PRI8LEAST(o) #define PRIuLEAST8 __PRI8LEAST(u) #define PRIxLEAST8 __PRI8LEAST(x) #define PRIXLEAST8 __PRI8LEAST(X) /* Macros below are only enabled for a newlib built with C99 I/O format support. */ #if defined(_WANT_IO_C99_FORMATS) #define SCNdLEAST8 __SCN8LEAST(d) #define SCNiLEAST8 __SCN8LEAST(i) #define SCNoLEAST8 __SCN8LEAST(o) #define SCNuLEAST8 __SCN8LEAST(u) #define SCNxLEAST8 __SCN8LEAST(x) #endif /* _WANT_IO_C99_FORMATS */ #define PRIdFAST8 __PRI8FAST(d) #define PRIiFAST8 __PRI8FAST(i) #define PRIoFAST8 __PRI8FAST(o) #define PRIuFAST8 __PRI8FAST(u) #define PRIxFAST8 __PRI8FAST(x) #define PRIXFAST8 __PRI8FAST(X) /* Macros below are only enabled for a newlib built with C99 I/O format support. */ #if defined(_WANT_IO_C99_FORMATS) #define SCNdFAST8 __SCN8FAST(d) #define SCNiFAST8 __SCN8FAST(i) #define SCNoFAST8 __SCN8FAST(o) #define SCNuFAST8 __SCN8FAST(u) #define SCNxFAST8 __SCN8FAST(x) #endif /* _WANT_IO_C99_FORMATS */ /* 16-bit types */ #define __PRI16(x) __INT16 __STRINGIFY(x) #define __PRI16LEAST(x) __LEAST16 __STRINGIFY(x) #define __PRI16FAST(x) __FAST16 __STRINGIFY(x) #define __SCN16(x) __INT16 __STRINGIFY(x) #define __SCN16LEAST(x) __LEAST16 __STRINGIFY(x) #define __SCN16FAST(x) __FAST16 __STRINGIFY(x) #define PRId16 __PRI16(d) #define PRIi16 __PRI16(i) #define PRIo16 __PRI16(o) #define PRIu16 __PRI16(u) #define PRIx16 __PRI16(x) #define PRIX16 __PRI16(X) #define SCNd16 __SCN16(d) #define SCNi16 __SCN16(i) #define SCNo16 __SCN16(o) #define SCNu16 __SCN16(u) #define SCNx16 __SCN16(x) #define PRIdLEAST16 __PRI16LEAST(d) #define PRIiLEAST16 __PRI16LEAST(i) #define PRIoLEAST16 __PRI16LEAST(o) #define PRIuLEAST16 __PRI16LEAST(u) #define PRIxLEAST16 __PRI16LEAST(x) #define PRIXLEAST16 __PRI16LEAST(X) #define SCNdLEAST16 __SCN16LEAST(d) #define SCNiLEAST16 __SCN16LEAST(i) #define SCNoLEAST16 __SCN16LEAST(o) #define SCNuLEAST16 __SCN16LEAST(u) #define SCNxLEAST16 __SCN16LEAST(x) #define PRIdFAST16 __PRI16FAST(d) #define PRIiFAST16 __PRI16FAST(i) #define PRIoFAST16 __PRI16FAST(o) #define PRIuFAST16 __PRI16FAST(u) #define PRIxFAST16 __PRI16FAST(x) #define PRIXFAST16 __PRI16FAST(X) #define SCNdFAST16 __SCN16FAST(d) #define SCNiFAST16 __SCN16FAST(i) #define SCNoFAST16 __SCN16FAST(o) #define SCNuFAST16 __SCN16FAST(u) #define SCNxFAST16 __SCN16FAST(x) /* 32-bit types */ #define __PRI32(x) __INT32 __STRINGIFY(x) #define __SCN32(x) __INT32 __STRINGIFY(x) #define __PRI32LEAST(x) __LEAST32 __STRINGIFY(x) #define __SCN32LEAST(x) __LEAST32 __STRINGIFY(x) #define __PRI32FAST(x) __FAST32 __STRINGIFY(x) #define __SCN32FAST(x) __FAST32 __STRINGIFY(x) #define PRId32 __PRI32(d) #define PRIi32 __PRI32(i) #define PRIo32 __PRI32(o) #define PRIu32 __PRI32(u) #define PRIx32 __PRI32(x) #define PRIX32 __PRI32(X) #define SCNd32 __SCN32(d) #define SCNi32 __SCN32(i) #define SCNo32 __SCN32(o) #define SCNu32 __SCN32(u) #define SCNx32 __SCN32(x) #define PRIdLEAST32 __PRI32LEAST(d) #define PRIiLEAST32 __PRI32LEAST(i) #define PRIoLEAST32 __PRI32LEAST(o) #define PRIuLEAST32 __PRI32LEAST(u) #define PRIxLEAST32 __PRI32LEAST(x) #define PRIXLEAST32 __PRI32LEAST(X) #define SCNdLEAST32 __SCN32LEAST(d) #define SCNiLEAST32 __SCN32LEAST(i) #define SCNoLEAST32 __SCN32LEAST(o) #define SCNuLEAST32 __SCN32LEAST(u) #define SCNxLEAST32 __SCN32LEAST(x) #define PRIdFAST32 __PRI32FAST(d) #define PRIiFAST32 __PRI32FAST(i) #define PRIoFAST32 __PRI32FAST(o) #define PRIuFAST32 __PRI32FAST(u) #define PRIxFAST32 __PRI32FAST(x) #define PRIXFAST32 __PRI32FAST(X) #define SCNdFAST32 __SCN32FAST(d) #define SCNiFAST32 __SCN32FAST(i) #define SCNoFAST32 __SCN32FAST(o) #define SCNuFAST32 __SCN32FAST(u) #define SCNxFAST32 __SCN32FAST(x) /* 64-bit types */ #define __PRI64(x) __INT64 __STRINGIFY(x) #define __SCN64(x) __INT64 __STRINGIFY(x) #define __PRI64LEAST(x) __LEAST64 __STRINGIFY(x) #define __SCN64LEAST(x) __LEAST64 __STRINGIFY(x) #define __PRI64FAST(x) __FAST64 __STRINGIFY(x) #define __SCN64FAST(x) __FAST64 __STRINGIFY(x) #if __int64_t_defined #define PRId64 __PRI64(d) #define PRIi64 __PRI64(i) #define PRIo64 __PRI64(o) #define PRIu64 __PRI64(u) #define PRIx64 __PRI64(x) #define PRIX64 __PRI64(X) #define SCNd64 __SCN64(d) #define SCNi64 __SCN64(i) #define SCNo64 __SCN64(o) #define SCNu64 __SCN64(u) #define SCNx64 __SCN64(x) #endif #if __int_least64_t_defined #define PRIdLEAST64 __PRI64LEAST(d) #define PRIiLEAST64 __PRI64LEAST(i) #define PRIoLEAST64 __PRI64LEAST(o) #define PRIuLEAST64 __PRI64LEAST(u) #define PRIxLEAST64 __PRI64LEAST(x) #define PRIXLEAST64 __PRI64LEAST(X) #define SCNdLEAST64 __SCN64LEAST(d) #define SCNiLEAST64 __SCN64LEAST(i) #define SCNoLEAST64 __SCN64LEAST(o) #define SCNuLEAST64 __SCN64LEAST(u) #define SCNxLEAST64 __SCN64LEAST(x) #endif #if __int_fast64_t_defined #define PRIdFAST64 __PRI64FAST(d) #define PRIiFAST64 __PRI64FAST(i) #define PRIoFAST64 __PRI64FAST(o) #define PRIuFAST64 __PRI64FAST(u) #define PRIxFAST64 __PRI64FAST(x) #define PRIXFAST64 __PRI64FAST(X) #define SCNdFAST64 __SCN64FAST(d) #define SCNiFAST64 __SCN64FAST(i) #define SCNoFAST64 __SCN64FAST(o) #define SCNuFAST64 __SCN64FAST(u) #define SCNxFAST64 __SCN64FAST(x) #endif /* max-bit types */ #if __have_long64 #define __PRIMAX(x) __STRINGIFY(l##x) #define __SCNMAX(x) __STRINGIFY(l##x) #elif __have_longlong64 #define __PRIMAX(x) __STRINGIFY(ll##x) #define __SCNMAX(x) __STRINGIFY(ll##x) #else #define __PRIMAX(x) __STRINGIFY(x) #define __SCNMAX(x) __STRINGIFY(x) #endif #define PRIdMAX __PRIMAX(d) #define PRIiMAX __PRIMAX(i) #define PRIoMAX __PRIMAX(o) #define PRIuMAX __PRIMAX(u) #define PRIxMAX __PRIMAX(x) #define PRIXMAX __PRIMAX(X) #define SCNdMAX __SCNMAX(d) #define SCNiMAX __SCNMAX(i) #define SCNoMAX __SCNMAX(o) #define SCNuMAX __SCNMAX(u) #define SCNxMAX __SCNMAX(x) /* ptr types */ #if defined (_INTPTR_EQ_LONGLONG) # define __PRIPTR(x) __STRINGIFY(ll##x) # define __SCNPTR(x) __STRINGIFY(ll##x) #elif defined (_INTPTR_EQ_LONG) # define __PRIPTR(x) __STRINGIFY(l##x) # define __SCNPTR(x) __STRINGIFY(l##x) #else # define __PRIPTR(x) __STRINGIFY(x) # define __SCNPTR(x) __STRINGIFY(x) #endif #define PRIdPTR __PRIPTR(d) #define PRIiPTR __PRIPTR(i) #define PRIoPTR __PRIPTR(o) #define PRIuPTR __PRIPTR(u) #define PRIxPTR __PRIPTR(x) #define PRIXPTR __PRIPTR(X) #define SCNdPTR __SCNPTR(d) #define SCNiPTR __SCNPTR(i) #define SCNoPTR __SCNPTR(o) #define SCNuPTR __SCNPTR(u) #define SCNxPTR __SCNPTR(x) typedef struct { intmax_t quot; intmax_t rem; } imaxdiv_t; #ifdef __cplusplus extern "C" { #endif extern intmax_t imaxabs(intmax_t); extern imaxdiv_t imaxdiv(intmax_t __numer, intmax_t __denomer); extern intmax_t strtoimax(const char *__restrict, char **__restrict, int); extern uintmax_t strtoumax(const char *__restrict, char **__restrict, int); extern intmax_t wcstoimax(const wchar_t *__restrict, wchar_t **__restrict, int); extern uintmax_t wcstoumax(const wchar_t *__restrict, wchar_t **__restrict, int); #if __BSD_VISIBLE extern intmax_t strtoimax_l(const char *__restrict, char **_restrict, int, locale_t); extern uintmax_t strtoumax_l(const char *__restrict, char **_restrict, int, locale_t); extern intmax_t wcstoimax_l(const wchar_t *__restrict, wchar_t **_restrict, int, locale_t); extern uintmax_t wcstoumax_l(const wchar_t *__restrict, wchar_t **_restrict, int, locale_t); #endif #ifdef __cplusplus } #endif #endif picolibc-1.7.4/newlib/libc/include/langinfo.h000066400000000000000000000204371414576234500211120ustar00rootroot00000000000000/*- * Copyright (c) 2001 Alexey Zelkin * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $FreeBSD: src/include/langinfo.h,v 1.5 2002/03/23 17:24:53 imp Exp $ */ #ifndef _LANGINFO_H_ #define _LANGINFO_H_ #include #include #if __POSIX_VISIBLE >= 200809 #include #endif #ifndef _NL_ITEM_DECLARED typedef __nl_item nl_item; #define _NL_ITEM_DECLARED #endif enum { /* POSIX and BSD defined items have to stick to the original values to maintain backward compatibility. */ _NL_CTYPE_CODESET_NAME = 0, /* codeset name */ #define CODESET _NL_CTYPE_CODESET_NAME D_T_FMT, /* string for formatting date and time */ #define D_T_FMT D_T_FMT D_FMT, /* date format string */ #define D_FMT D_FMT T_FMT, /* time format string */ #define T_FMT T_FMT T_FMT_AMPM, /* a.m. or p.m. time formatting string */ #define T_FMT_AMPM T_FMT_AMPM AM_STR, /* Ante Meridian affix */ #define AM_STR AM_STR PM_STR, /* Post Meridian affix */ #define PM_STR PM_STR /* week day names */ DAY_1, #define DAY_1 DAY_1 DAY_2, #define DAY_2 DAY_2 DAY_3, #define DAY_3 DAY_3 DAY_4, #define DAY_4 DAY_4 DAY_5, #define DAY_5 DAY_5 DAY_6, #define DAY_6 DAY_6 DAY_7, #define DAY_7 DAY_7 /* abbreviated week day names */ ABDAY_1, #define ABDAY_1 ABDAY_1 ABDAY_2, #define ABDAY_2 ABDAY_2 ABDAY_3, #define ABDAY_3 ABDAY_3 ABDAY_4, #define ABDAY_4 ABDAY_4 ABDAY_5, #define ABDAY_5 ABDAY_5 ABDAY_6, #define ABDAY_6 ABDAY_6 ABDAY_7, #define ABDAY_7 ABDAY_7 /* month names */ MON_1, #define MON_1 MON_1 MON_2, #define MON_2 MON_2 MON_3, #define MON_3 MON_3 MON_4, #define MON_4 MON_4 MON_5, #define MON_5 MON_5 MON_6, #define MON_6 MON_6 MON_7, #define MON_7 MON_7 MON_8, #define MON_8 MON_8 MON_9, #define MON_9 MON_9 MON_10, #define MON_10 MON_10 MON_11, #define MON_11 MON_11 MON_12, #define MON_12 MON_12 /* abbreviated month names */ ABMON_1, #define ABMON_1 ABMON_1 ABMON_2, #define ABMON_2 ABMON_2 ABMON_3, #define ABMON_3 ABMON_3 ABMON_4, #define ABMON_4 ABMON_4 ABMON_5, #define ABMON_5 ABMON_5 ABMON_6, #define ABMON_6 ABMON_6 ABMON_7, #define ABMON_7 ABMON_7 ABMON_8, #define ABMON_8 ABMON_8 ABMON_9, #define ABMON_9 ABMON_9 ABMON_10, #define ABMON_10 ABMON_10 ABMON_11, #define ABMON_11 ABMON_11 ABMON_12, #define ABMON_12 ABMON_12 ERA, /* era description segments */ #define ERA ERA ERA_D_FMT, /* era date format string */ #define ERA_D_FMT ERA_D_FMT ERA_D_T_FMT, /* era date and time format string */ #define ERA_D_T_FMT ERA_D_T_FMT ERA_T_FMT, /* era time format string */ #define ERA_T_FMT ERA_T_FMT ALT_DIGITS, /* alternative symbols for digits */ #define ALT_DIGITS ALT_DIGITS RADIXCHAR, /* radix char */ #define RADIXCHAR RADIXCHAR THOUSEP, /* separator for thousands */ #define THOUSEP THOUSEP YESEXPR, /* affirmative response expression */ #define YESEXPR YESEXPR NOEXPR, /* negative response expression */ #define NOEXPR NOEXPR YESSTR, /* affirmative response for yes/no queries */ #define YESSTR YESSTR NOSTR, /* negative response for yes/no queries */ #define NOSTR NOSTR CRNCYSTR, /* currency symbol */ #define CRNCYSTR CRNCYSTR D_MD_ORDER, /* month/day order (BSD extension) */ #define D_MD_ORDER D_MD_ORDER _NL_TIME_DATE_FMT = 84, /* date fmt used by date(1) (GNU extension) */ #define _DATE_FMT _NL_TIME_DATE_FMT #ifdef __HAVE_LOCALE_INFO__ _NL_CTYPE_MB_CUR_MAX, _NL_MESSAGES_CODESET, #ifdef __HAVE_LOCALE_INFO_EXTENDED__ /* NOTE: Always maintain the order and position of existing entries! Always append new entry to the list, prior to the definition of _NL_LOCALE_EXTENDED_LAST_ENTRY. */ _NL_LOCALE_EXTENDED_FIRST_ENTRY, _NL_CTYPE_OUTDIGITS0_MB, _NL_CTYPE_OUTDIGITS1_MB, _NL_CTYPE_OUTDIGITS2_MB, _NL_CTYPE_OUTDIGITS3_MB, _NL_CTYPE_OUTDIGITS4_MB, _NL_CTYPE_OUTDIGITS5_MB, _NL_CTYPE_OUTDIGITS6_MB, _NL_CTYPE_OUTDIGITS7_MB, _NL_CTYPE_OUTDIGITS8_MB, _NL_CTYPE_OUTDIGITS9_MB, _NL_CTYPE_OUTDIGITS0_WC, _NL_CTYPE_OUTDIGITS1_WC, _NL_CTYPE_OUTDIGITS2_WC, _NL_CTYPE_OUTDIGITS3_WC, _NL_CTYPE_OUTDIGITS4_WC, _NL_CTYPE_OUTDIGITS5_WC, _NL_CTYPE_OUTDIGITS6_WC, _NL_CTYPE_OUTDIGITS7_WC, _NL_CTYPE_OUTDIGITS8_WC, _NL_CTYPE_OUTDIGITS9_WC, _NL_TIME_CODESET, _NL_TIME_WMON_1, _NL_TIME_WMON_2, _NL_TIME_WMON_3, _NL_TIME_WMON_4, _NL_TIME_WMON_5, _NL_TIME_WMON_6, _NL_TIME_WMON_7, _NL_TIME_WMON_8, _NL_TIME_WMON_9, _NL_TIME_WMON_10, _NL_TIME_WMON_11, _NL_TIME_WMON_12, _NL_TIME_WMONTH_1, _NL_TIME_WMONTH_2, _NL_TIME_WMONTH_3, _NL_TIME_WMONTH_4, _NL_TIME_WMONTH_5, _NL_TIME_WMONTH_6, _NL_TIME_WMONTH_7, _NL_TIME_WMONTH_8, _NL_TIME_WMONTH_9, _NL_TIME_WMONTH_10, _NL_TIME_WMONTH_11, _NL_TIME_WMONTH_12, _NL_TIME_WWDAY_1, _NL_TIME_WWDAY_2, _NL_TIME_WWDAY_3, _NL_TIME_WWDAY_4, _NL_TIME_WWDAY_5, _NL_TIME_WWDAY_6, _NL_TIME_WWDAY_7, _NL_TIME_WWEEKDAY_1, _NL_TIME_WWEEKDAY_2, _NL_TIME_WWEEKDAY_3, _NL_TIME_WWEEKDAY_4, _NL_TIME_WWEEKDAY_5, _NL_TIME_WWEEKDAY_6, _NL_TIME_WWEEKDAY_7, _NL_TIME_WT_FMT, _NL_TIME_WD_FMT, _NL_TIME_WD_T_FMT, _NL_TIME_WAM_STR, _NL_TIME_WPM_STR, _NL_TIME_WDATE_FMT, _NL_TIME_WT_FMT_AMPM, _NL_TIME_WERA, _NL_TIME_WERA_D_FMT, _NL_TIME_WERA_D_T_FMT, _NL_TIME_WERA_T_FMT, _NL_TIME_WALT_DIGITS, _NL_NUMERIC_CODESET, _NL_NUMERIC_GROUPING, _NL_NUMERIC_DECIMAL_POINT_WC, _NL_NUMERIC_THOUSANDS_SEP_WC, _NL_MONETARY_INT_CURR_SYMBOL, _NL_MONETARY_CURRENCY_SYMBOL, _NL_MONETARY_MON_DECIMAL_POINT, _NL_MONETARY_MON_THOUSANDS_SEP, _NL_MONETARY_MON_GROUPING, _NL_MONETARY_POSITIVE_SIGN, _NL_MONETARY_NEGATIVE_SIGN, _NL_MONETARY_INT_FRAC_DIGITS, _NL_MONETARY_FRAC_DIGITS, _NL_MONETARY_P_CS_PRECEDES, _NL_MONETARY_P_SEP_BY_SPACE, _NL_MONETARY_N_CS_PRECEDES, _NL_MONETARY_N_SEP_BY_SPACE, _NL_MONETARY_P_SIGN_POSN, _NL_MONETARY_N_SIGN_POSN, _NL_MONETARY_INT_P_CS_PRECEDES, _NL_MONETARY_INT_P_SEP_BY_SPACE, _NL_MONETARY_INT_N_CS_PRECEDES, _NL_MONETARY_INT_N_SEP_BY_SPACE, _NL_MONETARY_INT_P_SIGN_POSN, _NL_MONETARY_INT_N_SIGN_POSN, _NL_MONETARY_CODESET, _NL_MONETARY_WINT_CURR_SYMBOL, _NL_MONETARY_WCURRENCY_SYMBOL, _NL_MONETARY_WMON_DECIMAL_POINT, _NL_MONETARY_WMON_THOUSANDS_SEP, _NL_MONETARY_WPOSITIVE_SIGN, _NL_MONETARY_WNEGATIVE_SIGN, _NL_MESSAGES_WYESEXPR, _NL_MESSAGES_WNOEXPR, _NL_MESSAGES_WYESSTR, _NL_MESSAGES_WNOSTR, _NL_COLLATE_CODESET, /* This MUST be the last entry since it's used to check for an array index in nl_langinfo(). It also must not exceed _NL_LOCALE_NAME_BASE. */ _NL_LOCALE_EXTENDED_LAST_ENTRY #endif /* __HAVE_LOCALE_INFO_EXTENDED__ */ #endif /* __HAVE_LOCALE_INFO__ */ }; /* As an extension, nl_langinfo can retrive the name of a locale category, with this mapping from setlocale() category (other than LC_ALL) to nl_item. */ #define _NL_LOCALE_NAME_BASE 100000 #if __GNU_VISIBLE #define NL_LOCALE_NAME(category) (_NL_LOCALE_NAME_BASE + (category)) #endif __BEGIN_DECLS char *nl_langinfo (nl_item); #if __POSIX_VISIBLE >= 200809 char *nl_langinfo_l (nl_item, locale_t); #endif __END_DECLS #endif /* !_LANGINFO_H_ */ picolibc-1.7.4/newlib/libc/include/libgen.h000066400000000000000000000015751414576234500205570ustar00rootroot00000000000000/* Copyright (c) 2005 Jeff Johnston */ /* * libgen.h - defined by XPG4 */ #ifndef _LIBGEN_H_ #define _LIBGEN_H_ #include "_ansi.h" #include #ifdef __cplusplus extern "C" { #endif /* There are two common basename variants. If you do NOT #include and you do #define _GNU_SOURCE #include you get the GNU version. Otherwise you get the POSIX versionfor which you should #include i for the function prototype. POSIX requires that #undef basename will still let you invoke the underlying function. However, this also implies that the POSIX version is used in this case. That's made sure here. */ #undef basename #define basename __xpg_basename char *basename (char *) __asm__(__ASMNAME("basename")); char *dirname (char *); #ifdef __cplusplus } #endif #endif /* _LIBGEN_H_ */ picolibc-1.7.4/newlib/libc/include/limits.h000066400000000000000000000076721414576234500206240ustar00rootroot00000000000000/* Copyright (c) 2002 Jeff Johnston */ #ifndef _LIBC_LIMITS_H_ # define _LIBC_LIMITS_H_ 1 #include #include #include # ifdef _MB_LEN_MAX # define MB_LEN_MAX _MB_LEN_MAX # else # define MB_LEN_MAX 1 # endif /* Maximum number of positional arguments, if _WANT_IO_POS_ARGS. */ # ifndef NL_ARGMAX # define NL_ARGMAX 32 # endif /* if do not have #include_next support, then we have to define the limits here. */ # if !defined __GNUC__ || __GNUC__ < 2 # ifndef _LIMITS_H # define _LIMITS_H 1 # include /* Number of bits in a `char'. */ # undef CHAR_BIT # define CHAR_BIT 8 /* Minimum and maximum values a `signed char' can hold. */ # undef SCHAR_MIN # define SCHAR_MIN (-128) # undef SCHAR_MAX # define SCHAR_MAX 127 /* Maximum value an `unsigned char' can hold. (Minimum is 0). */ # undef UCHAR_MAX # define UCHAR_MAX 255 /* Minimum and maximum values a `char' can hold. */ # ifdef __CHAR_UNSIGNED__ # undef CHAR_MIN # define CHAR_MIN 0 # undef CHAR_MAX # define CHAR_MAX 255 # else # undef CHAR_MIN # define CHAR_MIN (-128) # undef CHAR_MAX # define CHAR_MAX 127 # endif /* Minimum and maximum values a `signed short int' can hold. */ # undef SHRT_MIN /* For the sake of 16 bit hosts, we may not use -32768 */ # define SHRT_MIN (-32767-1) # undef SHRT_MAX # define SHRT_MAX 32767 /* Maximum value an `unsigned short int' can hold. (Minimum is 0). */ # undef USHRT_MAX # define USHRT_MAX 65535 /* Minimum and maximum values a `signed int' can hold. */ # ifndef __INT_MAX__ # define __INT_MAX__ 2147483647 # endif # undef INT_MIN # define INT_MIN (-INT_MAX-1) # undef INT_MAX # define INT_MAX __INT_MAX__ /* Maximum value an `unsigned int' can hold. (Minimum is 0). */ # undef UINT_MAX # define UINT_MAX (INT_MAX * 2U + 1) /* Minimum and maximum values a `signed long int' can hold. (Same as `int'). */ # ifndef __LONG_MAX__ # if defined (__alpha__) || (defined (__sparc__) && defined(__arch64__)) || defined (__sparcv9) # define __LONG_MAX__ 9223372036854775807L # else # define __LONG_MAX__ 2147483647L # endif /* __alpha__ || sparc64 */ # endif # undef LONG_MIN # define LONG_MIN (-LONG_MAX-1) # undef LONG_MAX # define LONG_MAX __LONG_MAX__ /* Maximum value an `unsigned long int' can hold. (Minimum is 0). */ # undef ULONG_MAX # define ULONG_MAX (LONG_MAX * 2UL + 1) # ifndef __LONG_LONG_MAX__ # define __LONG_LONG_MAX__ 9223372036854775807LL # endif # if __ISO_C_VISIBLE >= 1999 /* Minimum and maximum values a `signed long long int' can hold. */ # undef LLONG_MIN # define LLONG_MIN (-LLONG_MAX-1) # undef LLONG_MAX # define LLONG_MAX __LONG_LONG_MAX__ /* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */ # undef ULLONG_MAX # define ULLONG_MAX (LLONG_MAX * 2ULL + 1) # endif # if __GNU_VISIBLE /* Minimum and maximum values a `signed long long int' can hold. */ # undef LONG_LONG_MIN # define LONG_LONG_MIN (-LONG_LONG_MAX-1) # undef LONG_LONG_MAX # define LONG_LONG_MAX __LONG_LONG_MAX__ /* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */ # undef ULONG_LONG_MAX # define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1) # endif # endif /* _LIMITS_H */ # endif /* GCC 2. */ #endif /* !_LIBC_LIMITS_H_ */ #if defined __GNUC__ && !defined _GCC_LIMITS_H_ /* `_GCC_LIMITS_H_' is what GCC's file defines. */ #ifdef __clang__ #ifndef __GLIBC_USE #define __GLIBC_USE(x) 1 #endif #endif # include_next #endif /* __GNUC__ && !_GCC_LIMITS_H_ */ #ifndef _POSIX2_RE_DUP_MAX /* The maximum number of repeated occurrences of a regular expression * permitted when using the interval notation `\{M,N\}'. */ #define _POSIX2_RE_DUP_MAX 255 #endif /* _POSIX2_RE_DUP_MAX */ #ifndef ARG_MAX #define ARG_MAX 4096 #endif #ifndef PATH_MAX #define PATH_MAX 4096 #endif picolibc-1.7.4/newlib/libc/include/locale.h000066400000000000000000000070151414576234500205510ustar00rootroot00000000000000/* Copyright (c) 1991, 1993 The Regents of the University of California. All rights reserved. c) UNIX System Laboratories, Inc. All or some portions of this file are derived from material licensed to the University of California by American Telephone and Telegraph Co. or Unix System Laboratories, Inc. and are reproduced herein with the permission of UNIX System Laboratories, Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* locale.h Values appropriate for the formatting of monetary and other numberic quantities. */ #ifndef _LOCALE_H_ #define _LOCALE_H_ #include "_ansi.h" #include #define __need_NULL #include #define LC_ALL 0 #define LC_COLLATE 1 #define LC_CTYPE 2 #define LC_MONETARY 3 #define LC_NUMERIC 4 #define LC_TIME 5 #define LC_MESSAGES 6 #if __POSIX_VISIBLE >= 200809 || defined (_COMPILING_NEWLIB) #include #define LC_ALL_MASK (1 << LC_ALL) #define LC_COLLATE_MASK (1 << LC_COLLATE) #define LC_CTYPE_MASK (1 << LC_CTYPE) #define LC_MONETARY_MASK (1 << LC_MONETARY) #define LC_NUMERIC_MASK (1 << LC_NUMERIC) #define LC_TIME_MASK (1 << LC_TIME) #define LC_MESSAGES_MASK (1 << LC_MESSAGES) #define LC_GLOBAL_LOCALE ((struct __locale_t *) -1) #endif /* __POSIX_VISIBLE >= 200809 */ _BEGIN_STD_C struct lconv { char *decimal_point; char *thousands_sep; char *grouping; char *int_curr_symbol; char *currency_symbol; char *mon_decimal_point; char *mon_thousands_sep; char *mon_grouping; char *positive_sign; char *negative_sign; char int_frac_digits; char frac_digits; char p_cs_precedes; char p_sep_by_space; char n_cs_precedes; char n_sep_by_space; char p_sign_posn; char n_sign_posn; char int_n_cs_precedes; char int_n_sep_by_space; char int_n_sign_posn; char int_p_cs_precedes; char int_p_sep_by_space; char int_p_sign_posn; }; #ifndef _REENT_ONLY char *setlocale (int, const char *); struct lconv *localeconv (void); #if __POSIX_VISIBLE >= 200809 locale_t newlocale (int, const char *, locale_t); void freelocale (locale_t); locale_t duplocale (locale_t); locale_t uselocale (locale_t); #endif /* __POSIX_VISIBLE >= 200809 */ #endif /* _REENT_ONLY */ _END_STD_C #endif /* _LOCALE_H_ */ picolibc-1.7.4/newlib/libc/include/machine/000077500000000000000000000000001414576234500205425ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/include/machine/_arc4random.h000066400000000000000000000020731414576234500231060ustar00rootroot00000000000000/* $OpenBSD: arc4random.c,v 1.52 2015/01/16 16:48:51 deraadt Exp $ */ /* * Copyright (c) 1996, David Mazieres * Copyright (c) 2008, Damien Miller * Copyright (c) 2013, Markus Friedl * Copyright (c) 2014, Theo de Raadt * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* Use default implementation, see arc4random.h */ picolibc-1.7.4/newlib/libc/include/machine/_default_types.h000066400000000000000000000151751414576234500237330ustar00rootroot00000000000000/* * Copyright (c) 2007 Patrick Mansfield */ #ifndef _MACHINE__DEFAULT_TYPES_H #define _MACHINE__DEFAULT_TYPES_H #include /* * Guess on types by examining *_MIN / *_MAX defines. */ #if defined(__INT_MAX__) && defined(__LONG_MAX__) && defined (__SCHAR_MAX__) && defined (__SHRT_MAX__) /* GCC >= 3.3.0 has ____ implicitly defined. */ #define __EXP(x) __##x##__ #else /* Fall back to POSIX versions from */ #define __EXP(x) x #include #endif /* Check if "long long" is 64bit wide */ /* Modern GCCs provide __LONG_LONG_MAX__, SUSv3 wants LLONG_MAX */ #if ( defined(__LONG_LONG_MAX__) && (__LONG_LONG_MAX__ > 0x7fffffff) ) \ || ( defined(LLONG_MAX) && (LLONG_MAX > 0x7fffffff) ) #define __have_longlong64 1 #endif /* Check if "long" is 64bit or 32bit wide */ #if __EXP(LONG_MAX) > 0x7fffffff #define __have_long64 1 #elif __EXP(LONG_MAX) == 0x7fffffff && !defined(__SPU__) #define __have_long32 1 #endif #ifdef __cplusplus extern "C" { #endif #ifdef __INT8_TYPE__ typedef __INT8_TYPE__ __int8_t; #ifdef __UINT8_TYPE__ typedef __UINT8_TYPE__ __uint8_t; #else typedef unsigned __INT8_TYPE__ __uint8_t; #endif #define ___int8_t_defined 1 #elif __EXP(SCHAR_MAX) == 0x7f typedef signed char __int8_t ; typedef unsigned char __uint8_t ; #define ___int8_t_defined 1 #endif #ifdef __INT16_TYPE__ typedef __INT16_TYPE__ __int16_t; #ifdef __UINT16_TYPE__ typedef __UINT16_TYPE__ __uint16_t; #else typedef unsigned __INT16_TYPE__ __uint16_t; #endif #define ___int16_t_defined 1 #elif __EXP(INT_MAX) == 0x7fff typedef signed int __int16_t; typedef unsigned int __uint16_t; #define ___int16_t_defined 1 #elif __EXP(SHRT_MAX) == 0x7fff typedef signed short __int16_t; typedef unsigned short __uint16_t; #define ___int16_t_defined 1 #elif __EXP(SCHAR_MAX) == 0x7fff typedef signed char __int16_t; typedef unsigned char __uint16_t; #define ___int16_t_defined 1 #endif #ifdef __INT32_TYPE__ typedef __INT32_TYPE__ __int32_t; #ifdef __UINT32_TYPE__ typedef __UINT32_TYPE__ __uint32_t; #else typedef unsigned __INT32_TYPE__ __uint32_t; #endif #define ___int32_t_defined 1 #elif __EXP(INT_MAX) == 0x7fffffffL typedef signed int __int32_t; typedef unsigned int __uint32_t; #define ___int32_t_defined 1 #elif __EXP(LONG_MAX) == 0x7fffffffL typedef signed long __int32_t; typedef unsigned long __uint32_t; #define ___int32_t_defined 1 #elif __EXP(SHRT_MAX) == 0x7fffffffL typedef signed short __int32_t; typedef unsigned short __uint32_t; #define ___int32_t_defined 1 #elif __EXP(SCHAR_MAX) == 0x7fffffffL typedef signed char __int32_t; typedef unsigned char __uint32_t; #define ___int32_t_defined 1 #endif #ifdef __INT64_TYPE__ typedef __INT64_TYPE__ __int64_t; #ifdef __UINT64_TYPE__ typedef __UINT64_TYPE__ __uint64_t; #else typedef unsigned __INT64_TYPE__ __uint64_t; #endif #define ___int64_t_defined 1 #elif __EXP(LONG_MAX) > 0x7fffffff typedef signed long __int64_t; typedef unsigned long __uint64_t; #define ___int64_t_defined 1 /* GCC has __LONG_LONG_MAX__ */ #elif defined(__LONG_LONG_MAX__) && (__LONG_LONG_MAX__ > 0x7fffffff) typedef signed long long __int64_t; typedef unsigned long long __uint64_t; #define ___int64_t_defined 1 /* POSIX mandates LLONG_MAX in */ #elif defined(LLONG_MAX) && (LLONG_MAX > 0x7fffffff) typedef signed long long __int64_t; typedef unsigned long long __uint64_t; #define ___int64_t_defined 1 #elif __EXP(INT_MAX) > 0x7fffffff typedef signed int __int64_t; typedef unsigned int __uint64_t; #define ___int64_t_defined 1 #endif #ifdef __INT_LEAST8_TYPE__ typedef __INT_LEAST8_TYPE__ __int_least8_t; #ifdef __UINT_LEAST8_TYPE__ typedef __UINT_LEAST8_TYPE__ __uint_least8_t; #else typedef unsigned __INT_LEAST8_TYPE__ __uint_least8_t; #endif #define ___int_least8_t_defined 1 #elif defined(___int8_t_defined) typedef __int8_t __int_least8_t; typedef __uint8_t __uint_least8_t; #define ___int_least8_t_defined 1 #elif defined(___int16_t_defined) typedef __int16_t __int_least8_t; typedef __uint16_t __uint_least8_t; #define ___int_least8_t_defined 1 #elif defined(___int32_t_defined) typedef __int32_t __int_least8_t; typedef __uint32_t __uint_least8_t; #define ___int_least8_t_defined 1 #elif defined(___int64_t_defined) typedef __int64_t __int_least8_t; typedef __uint64_t __uint_least8_t; #define ___int_least8_t_defined 1 #endif #ifdef __INT_LEAST16_TYPE__ typedef __INT_LEAST16_TYPE__ __int_least16_t; #ifdef __UINT_LEAST16_TYPE__ typedef __UINT_LEAST16_TYPE__ __uint_least16_t; #else typedef unsigned __INT_LEAST16_TYPE__ __uint_least16_t; #endif #define ___int_least16_t_defined 1 #elif defined(___int16_t_defined) typedef __int16_t __int_least16_t; typedef __uint16_t __uint_least16_t; #define ___int_least16_t_defined 1 #elif defined(___int32_t_defined) typedef __int32_t __int_least16_t; typedef __uint32_t __uint_least16_t; #define ___int_least16_t_defined 1 #elif defined(___int64_t_defined) typedef __int64_t __int_least16_t; typedef __uint64_t __uint_least16_t; #define ___int_least16_t_defined 1 #endif #ifdef __INT_LEAST32_TYPE__ typedef __INT_LEAST32_TYPE__ __int_least32_t; #ifdef __UINT_LEAST32_TYPE__ typedef __UINT_LEAST32_TYPE__ __uint_least32_t; #else typedef unsigned __INT_LEAST32_TYPE__ __uint_least32_t; #endif #define ___int_least32_t_defined 1 #elif defined(___int32_t_defined) typedef __int32_t __int_least32_t; typedef __uint32_t __uint_least32_t; #define ___int_least32_t_defined 1 #elif defined(___int64_t_defined) typedef __int64_t __int_least32_t; typedef __uint64_t __uint_least32_t; #define ___int_least32_t_defined 1 #endif #ifdef __INT_LEAST64_TYPE__ typedef __INT_LEAST64_TYPE__ __int_least64_t; #ifdef __UINT_LEAST64_TYPE__ typedef __UINT_LEAST64_TYPE__ __uint_least64_t; #else typedef unsigned __INT_LEAST64_TYPE__ __uint_least64_t; #endif #define ___int_least64_t_defined 1 #elif defined(___int64_t_defined) typedef __int64_t __int_least64_t; typedef __uint64_t __uint_least64_t; #define ___int_least64_t_defined 1 #endif #if defined(__INTMAX_TYPE__) typedef __INTMAX_TYPE__ __intmax_t; #elif __have_longlong64 typedef signed long long __intmax_t; #else typedef signed long __intmax_t; #endif #if defined(__UINTMAX_TYPE__) typedef __UINTMAX_TYPE__ __uintmax_t; #elif __have_longlong64 typedef unsigned long long __uintmax_t; #else typedef unsigned long __uintmax_t; #endif #ifdef __INTPTR_TYPE__ typedef __INTPTR_TYPE__ __intptr_t; #ifdef __UINTPTR_TYPE__ typedef __UINTPTR_TYPE__ __uintptr_t; #else typedef unsigned __INTPTR_TYPE__ __uintptr_t; #endif #elif defined(__PTRDIFF_TYPE__) typedef __PTRDIFF_TYPE__ __intptr_t; typedef unsigned __PTRDIFF_TYPE__ __uintptr_t; #else typedef long __intptr_t; typedef unsigned long __uintptr_t; #endif #undef __EXP #ifdef __cplusplus } #endif #endif /* _MACHINE__DEFAULT_TYPES_H */ picolibc-1.7.4/newlib/libc/include/machine/_endian.h000066400000000000000000000013471414576234500223150ustar00rootroot00000000000000/* Copyright (c) 2016 Sebastian Huber */ #ifndef __MACHINE_ENDIAN_H__ #error "must be included via " #endif /* !__MACHINE_ENDIAN_H__ */ #include #ifdef __PPC__ /* Get rid of GCC builtin defines on PowerPC */ #ifdef _BIG_ENDIAN #undef _BIG_ENDIAN #endif #ifdef _LITTLE_ENDIAN #undef _LITTLE_ENDIAN #endif #endif /* __PPC__ */ #ifndef _LITTLE_ENDIAN #define _LITTLE_ENDIAN 1234 #endif #ifndef _BIG_ENDIAN #define _BIG_ENDIAN 4321 #endif #ifndef _PDP_ENDIAN #define _PDP_ENDIAN 3412 #endif #ifndef _BYTE_ORDER #if defined(__IEEE_LITTLE_ENDIAN) || defined(__IEEE_BYTES_LITTLE_ENDIAN) #define _BYTE_ORDER _LITTLE_ENDIAN #else #define _BYTE_ORDER _BIG_ENDIAN #endif #endif picolibc-1.7.4/newlib/libc/include/machine/_time.h000066400000000000000000000002511414576234500220060ustar00rootroot00000000000000/* Copyright (c) 2016 Sebastian Huber */ #ifndef _SYS_TIME_H_ #error "must be included via " #endif /* !_SYS_TIME_H_ */ picolibc-1.7.4/newlib/libc/include/machine/_types.h000066400000000000000000000002521414576234500222150ustar00rootroot00000000000000/* * Copyright (c) 2005 Ralf Corsepious */ #ifndef _MACHINE__TYPES_H #define _MACHINE__TYPES_H #include #endif picolibc-1.7.4/newlib/libc/include/machine/ansi.h000066400000000000000000000001561414576234500216470ustar00rootroot00000000000000/* Copyright (c) 2001 Jeff Johnston */ /* dummy header file to support BSD compiler */ picolibc-1.7.4/newlib/libc/include/machine/endian.h000066400000000000000000000057601414576234500221610ustar00rootroot00000000000000/* Copyright (c) 2004 Jeff Johnston */ #ifndef __MACHINE_ENDIAN_H__ #define __MACHINE_ENDIAN_H__ #include #include #include #if _BYTE_ORDER == _LITTLE_ENDIAN #define _QUAD_HIGHWORD 1 #define _QUAD_LOWWORD 0 #else #define _QUAD_HIGHWORD 0 #define _QUAD_LOWWORD 1 #endif #if __BSD_VISIBLE #define LITTLE_ENDIAN _LITTLE_ENDIAN #define BIG_ENDIAN _BIG_ENDIAN #define PDP_ENDIAN _PDP_ENDIAN #define BYTE_ORDER _BYTE_ORDER #endif #ifdef __GNUC__ #define __bswap16(_x) __builtin_bswap16(_x) #define __bswap32(_x) __builtin_bswap32(_x) #define __bswap64(_x) __builtin_bswap64(_x) #else /* __GNUC__ */ static __inline __uint16_t __bswap16(__uint16_t _x) { return ((__uint16_t)((_x >> 8) | ((_x << 8) & 0xff00))); } static __inline __uint32_t __bswap32(__uint32_t _x) { return ((__uint32_t)((_x >> 24) | ((_x >> 8) & 0xff00) | ((_x << 8) & 0xff0000) | ((_x << 24) & 0xff000000))); } static __inline __uint64_t __bswap64(__uint64_t _x) { return ((__uint64_t)((_x >> 56) | ((_x >> 40) & 0xff00) | ((_x >> 24) & 0xff0000) | ((_x >> 8) & 0xff000000) | ((_x << 8) & ((__uint64_t)0xff << 32)) | ((_x << 24) & ((__uint64_t)0xff << 40)) | ((_x << 40) & ((__uint64_t)0xff << 48)) | ((_x << 56)))); } #endif /* !__GNUC__ */ /* byteorder(3) - simimlar to linux */ #ifndef __machine_host_to_from_network_defined #if _BYTE_ORDER == _LITTLE_ENDIAN #define __htonl(_x) __bswap32(_x) #define __htons(_x) __bswap16(_x) #define __ntohl(_x) __bswap32(_x) #define __ntohs(_x) __bswap16(_x) #define htonl(_x) __htonl(_x) #define htons(_x) __htons(_x) #define ntohl(_x) __htonl(_x) #define ntohs(_x) __htons(_x) #else #define __htonl(_x) ((__uint32_t)(_x)) #define __htons(_x) ((__uint16_t)(_x)) #define __ntohl(_x) ((__uint32_t)(_x)) #define __ntohs(_x) ((__uint16_t)(_x)) #define htonl(_x) __htonl(_x)) #define htons(_x) __htons(_x)) #define ntohl(_x) __ntohl(_x)) #define ntohs(_x) __ntohs(_x)) #endif #endif /* __machine_host_to_from_network_defined */ /* endian(3) - similar to linux */ #if __BYTE_ORDER == __LITTLE_ENDIAN #define htobe16(_x) __bswap16(_x) #define htole16(_x) ((__uint16_t)(_x)) #define be16toh(_x) __bswap16(_x) #define le16toh(_x) ((__uint16_t)(_x)) #define htobe32(_x) __bswap32(_x) #define htole32(_x) ((__uint32_t)(_x)) #define be32toh(_x) __bswap32(_x) #define le32toh(_x) ((__uint32_t)(_x)) #define htobe64(_x) __bswap64(_x) #define htole64(_x) ((__uint64_t)(_x)) #define be64toh(_x) __bswap64(_x) #define le64toh(_x) ((__uint64_t)(_x)) #else #define htobe16(_x) ((__uint16_t)(_x)) #define htole16(_x) __bswap16(_x) #define be16toh(_x) ((__uint16_t)(_x)) #define le16toh(_x) __bswap16(_x) #define htobe32(_x) ((__uint32_t)(_x)) #define htole32(_x) __bswap32(_x) #define be32toh(_x) ((__uint32_t)(_x)) #define le32toh(_x) __bswap32(_x) #define htobe64(_x) ((__uint64_t)(_x)) #define htole64(_x) __bswap64(_x) #define be64toh(_x) ((__uint64_t)(_x)) #define le64toh(_x) __bswap64(_x) #endif #endif /* __MACHINE_ENDIAN_H__ */ picolibc-1.7.4/newlib/libc/include/machine/fastmath.h000066400000000000000000000061521414576234500225260ustar00rootroot00000000000000/* Copyright (C) 1991 DJ Delorie All rights reserved. Redistribution, modification, and use in source and binary forms is permitted provided that the above copyright notice and following paragraph are duplicated in all such forms. This file is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ #ifdef __sysvnecv70_target double EXFUN(fast_sin,(double)); double EXFUN(fast_cos,(double)); double EXFUN(fast_tan,(double)); double EXFUN(fast_asin,(double)); double EXFUN(fast_acos,(double)); double EXFUN(fast_atan,(double)); double EXFUN(fast_sinh,(double)); double EXFUN(fast_cosh,(double)); double EXFUN(fast_tanh,(double)); double EXFUN(fast_asinh,(double)); double EXFUN(fast_acosh,(double)); double EXFUN(fast_atanh,(double)); double EXFUN(fast_abs,(double)); double EXFUN(fast_sqrt,(double)); double EXFUN(fast_exp2,(double)); double EXFUN(fast_exp10,(double)); double EXFUN(fast_expe,(double)); double EXFUN(fast_log10,(double)); double EXFUN(fast_log2,(double)); double EXFUN(fast_loge,(double)); #define sin(x) fast_sin(x) #define cos(x) fast_cos(x) #define tan(x) fast_tan(x) #define asin(x) fast_asin(x) #define acos(x) fast_acos(x) #define atan(x) fast_atan(x) #define sinh(x) fast_sinh(x) #define cosh(x) fast_cosh(x) #define tanh(x) fast_tanh(x) #define asinh(x) fast_asinh(x) #define acosh(x) fast_acosh(x) #define atanh(x) fast_atanh(x) #define abs(x) fast_abs(x) #define sqrt(x) fast_sqrt(x) #define exp2(x) fast_exp2(x) #define exp10(x) fast_exp10(x) #define expe(x) fast_expe(x) #define log10(x) fast_log10(x) #define log2(x) fast_log2(x) #define loge(x) fast_loge(x) /* These functions are in assembler, they really do take floats. This can only be used with a real ANSI compiler */ float EXFUN(fast_sinf,(float)); float EXFUN(fast_cosf,(float)); float EXFUN(fast_tanf,(float)); float EXFUN(fast_asinf,(float)); float EXFUN(fast_acosf,(float)); float EXFUN(fast_atanf,(float)); float EXFUN(fast_sinhf,(float)); float EXFUN(fast_coshf,(float)); float EXFUN(fast_tanhf,(float)); float EXFUN(fast_asinhf,(float)); float EXFUN(fast_acoshf,(float)); float EXFUN(fast_atanhf,(float)); float EXFUN(fast_absf,(float)); float EXFUN(fast_sqrtf,(float)); float EXFUN(fast_exp2f,(float)); float EXFUN(fast_exp10f,(float)); float EXFUN(fast_expef,(float)); float EXFUN(fast_log10f,(float)); float EXFUN(fast_log2f,(float)); float EXFUN(fast_logef,(float)); #define sinf(x) fast_sinf(x) #define cosf(x) fast_cosf(x) #define tanf(x) fast_tanf(x) #define asinf(x) fast_asinf(x) #define acosf(x) fast_acosf(x) #define atanf(x) fast_atanf(x) #define sinhf(x) fast_sinhf(x) #define coshf(x) fast_coshf(x) #define tanhf(x) fast_tanhf(x) #define asinhf(x) fast_asinhf(x) #define acoshf(x) fast_acoshf(x) #define atanhf(x) fast_atanhf(x) #define absf(x) fast_absf(x) #define sqrtf(x) fast_sqrtf(x) #define exp2f(x) fast_exp2f(x) #define exp10f(x) fast_exp10f(x) #define expef(x) fast_expef(x) #define log10f(x) fast_log10f(x) #define log2f(x) fast_log2f(x) #define logef(x) fast_logef(x) /* Override the functions defined in math.h */ #endif /* __sysvnecv70_target */ picolibc-1.7.4/newlib/libc/include/machine/ieeefp.h000066400000000000000000000274341414576234500221620ustar00rootroot00000000000000/* Copyright (C) 1991 DJ Delorie All rights reserved. Redistribution, modification, and use in source and binary forms is permitted provided that the above copyright notice and following paragraph are duplicated in all such forms. This file is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef __IEEE_BIG_ENDIAN #include #ifndef __IEEE_LITTLE_ENDIAN /* This file can define macros to choose variations of the IEEE float format: _FLT_LARGEST_EXPONENT_IS_NORMAL Defined if the float format uses the largest exponent for finite numbers rather than NaN and infinity representations. Such a format cannot represent NaNs or infinities at all, but it's FLT_MAX is twice the IEEE value. _FLT_NO_DENORMALS Defined if the float format does not support IEEE denormals. Every float with a zero exponent is taken to be a zero representation. ??? At the moment, there are no equivalent macros above for doubles and the macros are not fully supported by --enable-newlib-hw-fp. __IEEE_BIG_ENDIAN Defined if the float format is big endian. This is mutually exclusive with __IEEE_LITTLE_ENDIAN. __IEEE_LITTLE_ENDIAN Defined if the float format is little endian. This is mutually exclusive with __IEEE_BIG_ENDIAN. Note that one of __IEEE_BIG_ENDIAN or __IEEE_LITTLE_ENDIAN must be specified for a platform or error will occur. __IEEE_BYTES_LITTLE_ENDIAN This flag is used in conjunction with __IEEE_BIG_ENDIAN to describe a situation whereby multiple words of an IEEE floating point are in big endian order, but the words themselves are little endian with respect to the bytes. _DOUBLE_IS_32BITS This is used on platforms that support double by using the 32-bit IEEE float type. _FLOAT_ARG This represents what type a float arg is passed as. It is used when the type is not promoted to double. __OBSOLETE_MATH_DEFAULT Default value for __OBSOLETE_MATH if that's not set by the user. It should be set here based on predefined feature macros. __OBSOLETE_MATH If set to 1 then some new math code will be disabled and older libm code will be used instead. This is necessary because the new math code does not support all targets, it assumes that the toolchain has ISO C99 support (hexfloat literals, standard fenv semantics), the target has IEEE-754 conforming binary32 float and binary64 double (not mixed endian) representation, standard SNaN representation, double and single precision arithmetics has similar latency and it has no legacy SVID matherr support, only POSIX errno and fenv exception based error handling. */ #if (defined(__arm__) || defined(__thumb__)) && !defined(__MAVERICK__) /* ARM traditionally used big-endian words; and within those words the byte ordering was big or little endian depending upon the target. Modern floating-point formats are naturally ordered; in this case __VFP_FP__ will be defined, even if soft-float. */ #if defined(__VFP_FP__) || defined(__SOFTFP__) # ifdef __ARMEL__ # define __IEEE_LITTLE_ENDIAN # else # define __IEEE_BIG_ENDIAN # endif # if __ARM_FP & 0x8 # define __OBSOLETE_MATH_DEFAULT_FLOAT 0 # else # define __OBSOLETE_MATH_DEFAULT_FLOAT 1 # endif #else # define __IEEE_BIG_ENDIAN # ifdef __ARMEL__ # define __IEEE_BYTES_LITTLE_ENDIAN # endif #endif #ifndef __SOFTFP__ # define _SUPPORTS_ERREXCEPT #endif #endif #if defined (__aarch64__) #if defined (__AARCH64EL__) #define __IEEE_LITTLE_ENDIAN #else #define __IEEE_BIG_ENDIAN #endif #define __OBSOLETE_MATH_DEFAULT_FLOAT 0 #ifdef __ARM_FP # define _SUPPORTS_ERREXCEPT #endif #endif #ifdef __epiphany__ #define __IEEE_LITTLE_ENDIAN #define Sudden_Underflow 1 #endif #ifdef __hppa__ #define __IEEE_BIG_ENDIAN #endif #ifdef __nds32__ #ifdef __big_endian__ #define __IEEE_BIG_ENDIAN #else #define __IEEE_LITTLE_ENDIAN #endif #endif #ifdef __SPU__ #define __IEEE_BIG_ENDIAN #define isfinite(__y) \ (__extension__ ({int __cy; \ (sizeof (__y) == sizeof (float)) ? (1) : \ (__cy = fpclassify(__y)) != FP_INFINITE && __cy != FP_NAN;})) #define isinf(__x) ((sizeof (__x) == sizeof (float)) ? (0) : __isinfd(__x)) #define isnan(__x) ((sizeof (__x) == sizeof (float)) ? (0) : __isnand(__x)) /* * Macros for use in ieeefp.h. We can't just define the real ones here * (like those above) as we have name space issues when this is *not* * included via generic the ieeefp.h. */ #define __ieeefp_isnanf(x) 0 #define __ieeefp_isinff(x) 0 #define __ieeefp_finitef(x) 1 #endif #ifdef __sparc__ #ifdef __LITTLE_ENDIAN_DATA__ #define __IEEE_LITTLE_ENDIAN #else #define __IEEE_BIG_ENDIAN #endif #endif #if defined(__m68k__) || defined(__mc68000__) #define __IEEE_BIG_ENDIAN #endif #if defined(__mc68hc11__) || defined(__mc68hc12__) || defined(__mc68hc1x__) #define __IEEE_BIG_ENDIAN #ifdef __HAVE_SHORT_DOUBLE__ # define _DOUBLE_IS_32BITS #endif #endif #if defined (__H8300__) || defined (__H8300H__) || defined (__H8300S__) || defined (__H8500__) || defined (__H8300SX__) #define __IEEE_BIG_ENDIAN #define _FLOAT_ARG float #define _DOUBLE_IS_32BITS #endif #if defined (__xc16x__) || defined (__xc16xL__) || defined (__xc16xS__) #define __IEEE_LITTLE_ENDIAN #define _FLOAT_ARG float #define _DOUBLE_IS_32BITS #endif #ifdef __sh__ #ifdef __LITTLE_ENDIAN__ #define __IEEE_LITTLE_ENDIAN #else #define __IEEE_BIG_ENDIAN #endif #if defined(__SH2E__) || defined(__SH3E__) || defined(__SH4_SINGLE_ONLY__) || defined(__SH2A_SINGLE_ONLY__) #define _DOUBLE_IS_32BITS #endif #endif #ifdef _AM29K #define __IEEE_BIG_ENDIAN #endif #ifdef _WIN32 #define __IEEE_LITTLE_ENDIAN #endif #ifdef __i386__ #define __IEEE_LITTLE_ENDIAN # define _SUPPORTS_ERREXCEPT #endif #ifdef __riscv #if defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) #define __IEEE_BIG_ENDIAN #else #define __IEEE_LITTLE_ENDIAN #endif #ifdef __riscv_flen # define _SUPPORTS_ERREXCEPT #endif #if __riscv_flen >= 64 # define __OBSOLETE_MATH_DEFAULT_FLOAT 0 #else # define __OBSOLETE_MATH_DEFAULT_FLOAT 1 #endif #endif #ifdef __powerpc__ #ifdef __LITTLE_ENDIAN__ #define __IEEE_LITTLE_ENDIAN #else #define __IEEE_BIG_ENDIAN #endif #ifndef _SOFT_FLOAT # define _SUPPORTS_ERREXCEPT #endif #endif #ifdef __i960__ #define __IEEE_LITTLE_ENDIAN #endif #ifdef __lm32__ #define __IEEE_BIG_ENDIAN #endif #ifdef __M32R__ #define __IEEE_BIG_ENDIAN #endif #ifdef __nvptx__ #define __IEEE_LITTLE_ENDIAN #endif #if defined(_C4x) || defined(_C3x) #define __IEEE_BIG_ENDIAN #define _DOUBLE_IS_32BITS #endif #ifdef __TMS320C6X__ #ifdef _BIG_ENDIAN #define __IEEE_BIG_ENDIAN #else #define __IEEE_LITTLE_ENDIAN #endif #endif #ifdef __TIC80__ #define __IEEE_LITTLE_ENDIAN #endif #ifdef __MIPSEL__ #define __IEEE_LITTLE_ENDIAN #endif #ifdef __MIPSEB__ #define __IEEE_BIG_ENDIAN #endif #ifdef __MMIX__ #define __IEEE_BIG_ENDIAN #endif #ifdef __D30V__ #define __IEEE_BIG_ENDIAN #endif /* necv70 was __IEEE_LITTLE_ENDIAN. */ #ifdef __W65__ #define __IEEE_LITTLE_ENDIAN #define _DOUBLE_IS_32BITS #endif #if defined(__Z8001__) || defined(__Z8002__) #define __IEEE_BIG_ENDIAN #endif #ifdef __m88k__ #define __IEEE_BIG_ENDIAN #endif #ifdef __mn10300__ #define __IEEE_LITTLE_ENDIAN #endif #ifdef __mn10200__ #define __IEEE_LITTLE_ENDIAN #define _DOUBLE_IS_32BITS #endif #ifdef __v800 #define __IEEE_LITTLE_ENDIAN #endif #ifdef __v850 #define __IEEE_LITTLE_ENDIAN #endif #ifdef __D10V__ #define __IEEE_BIG_ENDIAN #if __DOUBLE__ == 32 #define _DOUBLE_IS_32BITS #endif #endif #ifdef __PPC__ #if (defined(_BIG_ENDIAN) && _BIG_ENDIAN) || (defined(_AIX) && _AIX) #define __IEEE_BIG_ENDIAN #else #if (defined(_LITTLE_ENDIAN) && _LITTLE_ENDIAN) || (defined(__sun__) && __sun__) || (defined(_WIN32) && _WIN32) #define __IEEE_LITTLE_ENDIAN #endif #endif #endif #ifdef __xstormy16__ #define __IEEE_LITTLE_ENDIAN #endif #ifdef __arc__ #ifdef __big_endian__ #define __IEEE_BIG_ENDIAN #else #define __IEEE_LITTLE_ENDIAN #endif #endif #ifdef __CRX__ #define __IEEE_LITTLE_ENDIAN #endif #ifdef __CSKY__ #ifdef __CSKYBE__ #define __IEEE_BIG_ENDIAN #else #define __IEEE_LITTLE_ENDIAN #endif #endif #ifdef __fr30__ #define __IEEE_BIG_ENDIAN #endif #ifdef __FT32__ #define __IEEE_LITTLE_ENDIAN #endif #ifdef __mcore__ #define __IEEE_BIG_ENDIAN #endif #ifdef __mt__ #define __IEEE_BIG_ENDIAN #endif #ifdef __frv__ #define __IEEE_BIG_ENDIAN #endif #ifdef __moxie__ #ifdef __MOXIE_BIG_ENDIAN__ #define __IEEE_BIG_ENDIAN #else #define __IEEE_LITTLE_ENDIAN #endif #endif #ifdef __ia64__ #ifdef __BIG_ENDIAN__ #define __IEEE_BIG_ENDIAN #else #define __IEEE_LITTLE_ENDIAN #endif #endif #ifdef __AVR__ #define __IEEE_LITTLE_ENDIAN #define _DOUBLE_IS_32BITS #endif #if defined(__or1k__) || defined(__OR1K__) || defined(__OR1KND__) #define __IEEE_BIG_ENDIAN #endif #ifdef __IP2K__ #define __IEEE_BIG_ENDIAN #define __SMALL_BITFIELDS #define _DOUBLE_IS_32BITS #endif #ifdef __iq2000__ #define __IEEE_BIG_ENDIAN #endif #ifdef __MAVERICK__ #ifdef __ARMEL__ # define __IEEE_LITTLE_ENDIAN #else /* must be __ARMEB__ */ # define __IEEE_BIG_ENDIAN #endif /* __ARMEL__ */ #endif /* __MAVERICK__ */ #ifdef __m32c__ #define __IEEE_LITTLE_ENDIAN #define __SMALL_BITFIELDS #endif #ifdef __CRIS__ #define __IEEE_LITTLE_ENDIAN #endif #ifdef __BFIN__ #define __IEEE_LITTLE_ENDIAN #endif #ifdef __x86_64__ #define __IEEE_LITTLE_ENDIAN # define _SUPPORTS_ERREXCEPT #endif #ifdef __mep__ #ifdef __LITTLE_ENDIAN__ #define __IEEE_LITTLE_ENDIAN #else #define __IEEE_BIG_ENDIAN #endif #endif #ifdef __MICROBLAZE__ #ifndef __MICROBLAZEEL__ #define __IEEE_BIG_ENDIAN #else #define __IEEE_LITTLE_ENDIAN #endif #endif #ifdef __MSP430__ #define __IEEE_LITTLE_ENDIAN #define __SMALL_BITFIELDS /* 16 Bit INT */ #endif #ifdef __PRU__ #define __IEEE_LITTLE_ENDIAN #endif #ifdef __RL78__ #define __IEEE_LITTLE_ENDIAN #define __SMALL_BITFIELDS /* 16 Bit INT */ #ifndef __RL78_64BIT_DOUBLES__ #define _DOUBLE_IS_32BITS #endif #endif #ifdef __RX__ #ifdef __RX_BIG_ENDIAN__ #define __IEEE_BIG_ENDIAN #else #define __IEEE_LITTLE_ENDIAN #endif #ifndef __RX_64BIT_DOUBLES__ #define _DOUBLE_IS_32BITS #endif #ifdef __RX_16BIT_INTS__ #define __SMALL_BITFIELDS #endif #endif #if (defined(__CR16__) || defined(__CR16C__) ||defined(__CR16CP__)) #define __IEEE_LITTLE_ENDIAN #define __SMALL_BITFIELDS /* 16 Bit INT */ #endif #ifdef __NIOS2__ # ifdef __nios2_big_endian__ # define __IEEE_BIG_ENDIAN # else # define __IEEE_LITTLE_ENDIAN # endif #endif #ifdef __VISIUM__ #define __IEEE_BIG_ENDIAN #endif #if (defined(__XTENSA__)) #ifdef __XTENSA_EB__ #define __IEEE_BIG_ENDIAN #else #define __IEEE_LITTLE_ENDIAN #endif #endif #ifdef __AMDGCN__ #define __IEEE_LITTLE_ENDIAN #endif #ifdef __XTENSA_EL__ #define __IEEE_LITTLE_ENDIAN #endif #ifdef __CYGWIN__ #define __OBSOLETE_MATH_DEFAULT 0 #endif #ifndef __OBSOLETE_MATH_DEFAULT_FLOAT # ifdef __OBSOLETE_MATH_DEFAULT # define __OBSOLETE_MATH_DEFAULT_FLOAT __OBSOLETE_MATH_DEFAULT # else /* Use old math code by default for single-precision functions. */ # define __OBSOLETE_MATH_DEFAULT_FLOAT 1 # endif #endif #ifndef __OBSOLETETE_MATH_DEFAULT_DOUBLE # ifdef __OBSOLETE_MATH_DEFAULT # define __OBSOLETE_MATH_DEFAULT_DOUBLE __OBSOLETE_MATH_DEFAULT # else /* Use new math code by default for double-precision functions. */ # define __OBSOLETE_MATH_DEFAULT_DOUBLE 0 # endif #endif #ifndef __OBSOLETE_MATH_DEFAULT /* Use old math code by default. */ #define __OBSOLETE_MATH_DEFAULT 1 #endif #ifndef __OBSOLETE_MATH #define __OBSOLETE_MATH __OBSOLETE_MATH_DEFAULT #endif #ifndef __OBSOLETE_MATH_FLOAT #define __OBSOLETE_MATH_FLOAT __OBSOLETE_MATH_DEFAULT_FLOAT #endif #ifndef __OBSOLETE_MATH_DOUBLE #define __OBSOLETE_MATH_DOUBLE __OBSOLETE_MATH_DEFAULT_DOUBLE #endif #ifndef __IEEE_BIG_ENDIAN #ifndef __IEEE_LITTLE_ENDIAN #error Endianess not declared!! #endif /* not __IEEE_LITTLE_ENDIAN */ #endif /* not __IEEE_BIG_ENDIAN */ #endif /* not __IEEE_LITTLE_ENDIAN */ #endif /* not __IEEE_BIG_ENDIAN */ picolibc-1.7.4/newlib/libc/include/machine/malloc.h000066400000000000000000000003101414576234500221540ustar00rootroot00000000000000/* Copyright (c) 2002 Jeff Johnston */ #ifndef _MACHMALLOC_H_ #define _MACHMALLOC_H_ /* place holder so platforms may add malloc.h extensions */ #endif /* _MACHMALLOC_H_ */ picolibc-1.7.4/newlib/libc/include/machine/math.h000066400000000000000000000032161414576234500216460ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2020 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ /* placeholder so that platforms may add math.h extensions */ picolibc-1.7.4/newlib/libc/include/machine/meson.build000066400000000000000000000042051414576234500227050ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # inc_machine_headers_all = [ 'ansi.h', '_arc4random.h', '_default_types.h', '_endian.h', 'endian.h', 'fastmath.h', 'ieeefp.h', 'malloc.h', 'math.h', 'param.h', 'setjmp-dj.h', 'setjmp.h', 'stdlib.h', 'termios.h', '_time.h', 'time.h', '_types.h', 'types.h', ] inc_machine_headers = [] foreach file : inc_machine_headers_all if not (file in inc_machine_headers_machine) inc_machine_headers += file else message('libc/include/machine/' + file + ': machine overrides generic') endif endforeach install_headers( inc_machine_headers, subdir:'machine' ) picolibc-1.7.4/newlib/libc/include/machine/param.h000066400000000000000000000001601414576234500220100ustar00rootroot00000000000000/* Copyright (c) 2004 Jeff Johnston */ /* Place holder for machine-specific param.h. */ picolibc-1.7.4/newlib/libc/include/machine/setjmp-dj.h000066400000000000000000000016631414576234500226160ustar00rootroot00000000000000/* * Copyright (C) 1991 DJ Delorie * All rights reserved. * * Redistribution, modification, and use in source and binary forms is permitted * provided that the above copyright notice and following paragraph are * duplicated in all such forms. * * This file is distributed WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ /* Modified to use SETJMP_DJ_H rather than SETJMP_H to avoid conflicting with setjmp.h. Ian Taylor, Cygnus support, April, 1993. */ #ifndef _SETJMP_DJ_H_ #define _SETJMP_DJ_H_ #ifdef __cplusplus extern "C" { #endif typedef struct { unsigned long eax; unsigned long ebx; unsigned long ecx; unsigned long edx; unsigned long esi; unsigned long edi; unsigned long ebp; unsigned long esp; unsigned long eip; } jmp_buf[1]; extern int setjmp(jmp_buf); extern void longjmp(jmp_buf, int); #ifdef __cplusplus } #endif #endif picolibc-1.7.4/newlib/libc/include/machine/setjmp.h000066400000000000000000000237171414576234500222270ustar00rootroot00000000000000/* Copyright (C) 1991 DJ Delorie All rights reserved. Redistribution, modification, and use in source and binary forms is permitted provided that the above copyright notice and following paragraph are duplicated in all such forms. This file is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ _BEGIN_STD_C #if defined(__or1k__) || defined(__or1knd__) /* * r1, r2, r9, r14, r16 .. r30, SR. */ #define _JBLEN 13 #define _JBTYPE unsigned long #endif #if defined(__arm__) || defined(__thumb__) /* * All callee preserved registers: * v1 - v7, fp, ip, sp, lr, f4, f5, f6, f7 */ #define _JBLEN 23 #endif #if defined(__aarch64__) #define _JBLEN 22 #define _JBTYPE long long #endif #if defined(__AVR__) #define _JBLEN 24 #endif #ifdef __sparc__ /* * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext). * All else recovered by under/over(flow) handling. */ #define _JBLEN 13 #endif #ifdef __BFIN__ #define _JBLEN 40 #endif #ifdef __epiphany__ /* All callee preserved registers: r4-r10,fp, sp, lr,r15, r32-r39 */ #define _JBTYPE long long #define _JBLEN 10 #endif /* necv70 was 9 as well. */ #if defined(__m68k__) || defined(__mc68000__) /* * onsstack,sigmask,sp,pc,psl,d2-d7,a2-a6, * fp2-fp7 for 68881. * All else recovered by under/over(flow) handling. */ #define _JBLEN 34 #endif #if defined(__mc68hc11__) || defined(__mc68hc12__) || defined(__mc68hc1x__) /* * D, X, Y are not saved. * Only take into account the pseudo soft registers (max 32). */ #define _JBLEN 32 #endif #ifdef __nds32__ /* 17 words for GPRs, 1 word for $fpcfg.freg and 30 words for FPUs Reserved 2 words for aligement-adjustment. When storeing double-precision floating-point register into memory, the address has to be double-word-aligned. Check libc/machine/nds32/setjmp.S for more information. */ #if __NDS32_EXT_FPU_SP__ || __NDS32_EXT_FPU_DP__ #define _JBLEN 50 #else #define _JBLEN 18 #endif #endif #if defined(__Z8001__) || defined(__Z8002__) /* 16 regs + pc */ #define _JBLEN 20 #endif #ifdef _AM29K /* * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext). * All else recovered by under/over(flow) handling. */ #define _JBLEN 9 #endif #ifdef __i386__ # if defined(__CYGWIN__) && !defined (_JBLEN) # define _JBLEN (13 * 4) # elif defined(__unix__) || defined(__rtems__) # define _JBLEN 9 # elif defined(__iamcu__) /* Intel MCU jmp_buf only covers callee-saved registers. */ # define _JBLEN 6 # else # include "setjmp-dj.h" # endif #endif #ifdef __x86_64__ # ifdef __CYGWIN__ # define _JBTYPE long # define _JBLEN 32 # else # define _JBTYPE long long # define _JBLEN 8 # endif #endif #ifdef __i960__ #define _JBLEN 35 #endif #ifdef __M32R__ /* Only 8 words are currently needed. 10 gives us some slop if we need to expand. */ #define _JBLEN 10 #endif #ifdef __mips__ # if defined(__mips64) # define _JBTYPE long long # endif # ifdef __mips_soft_float # define _JBLEN 11 # else # define _JBLEN 23 # endif #endif #ifdef __m88000__ #define _JBLEN 21 #endif #ifdef __H8300__ #define _JBLEN 5 #define _JBTYPE int #endif #ifdef __H8300H__ /* same as H8/300 but registers are twice as big */ #define _JBLEN 5 #define _JBTYPE long #endif #if defined (__H8300S__) || defined (__H8300SX__) /* same as H8/300 but registers are twice as big */ #define _JBLEN 5 #define _JBTYPE long #endif #ifdef __H8500__ #define _JBLEN 4 #endif #ifdef __sh__ #if __SH5__ #define _JBLEN 50 #define _JBTYPE long long #else #define _JBLEN 20 #endif /* __SH5__ */ #endif #ifdef __v800 #define _JBLEN 28 #endif #ifdef __PPC__ #ifdef __ALTIVEC__ #ifdef _LP64 #define _JBLEN 96 #else #define _JBLEN 64 #endif #else #ifdef _LP64 #define _JBLEN 64 #else #define _JBLEN 32 #endif #endif #define _JBTYPE double #endif #ifdef __MICROBLAZE__ #define _JBLEN 20 #define _JBTYPE unsigned int #endif #ifdef __hppa__ /* %r30, %r2-%r18, %r27, pad, %fr12-%fr15. Note space exists for the FP registers, but they are not saved. */ #define _JBLEN 28 #endif #if defined(__mn10300__) || defined(__mn10200__) #ifdef __AM33_2__ #define _JBLEN 26 #else /* A guess */ #define _JBLEN 10 #endif #endif #ifdef __v850 /* I think our setjmp is saving 15 regs at the moment. Gives us one word slop if we need to expand. */ #define _JBLEN 16 #endif #if defined(_C4x) #define _JBLEN 10 #endif #if defined(_C3x) #define _JBLEN 9 #endif #ifdef __TMS320C6X__ #define _JBLEN 13 #endif #ifdef __TIC80__ #define _JBLEN 13 #endif #ifdef __D10V__ #define _JBLEN 8 #endif #ifdef __D30V__ #define _JBLEN ((64 /* GPR */ + (2*2) /* ACs */ + 18 /* CRs */) / 2) #define _JBTYPE double #endif #ifdef __frv__ #define _JBLEN (68/2) /* room for 68 32-bit regs */ #define _JBTYPE double #endif #ifdef __moxie__ #define _JBLEN 10 #endif #ifdef __CRX__ #define _JBLEN 9 #endif #if (defined(__CR16__) || defined(__CR16C__) ||defined(__CR16CP__)) /* r6, r7, r8, r9, r10, r11, r12 (r12L, r12H), * r13 (r13L, r13H), ra(raL, raH), sp(spL, spH) */ #define _JBLEN 14 #define _JBTYPE unsigned short #endif #ifdef __fr30__ #define _JBLEN 10 #endif #ifdef __FT32__ #define _JBLEN 27 #endif #ifdef __iq2000__ #define _JBLEN 32 #endif #ifdef __mcore__ #define _JBLEN 16 #endif #ifdef __arc__ #define _JBLEN 25 /* r13-r30,blink,lp_count,lp_start,lp_end,mlo,mhi,status32 */ #endif #ifdef __MMIX__ /* Using a layout compatible with GCC's built-in. */ #define _JBLEN 5 #define _JBTYPE unsigned long #endif #ifdef __mt__ #define _JBLEN 16 #endif #ifdef __SPU__ #define _JBLEN 50 #define _JBTYPE __vector signed int #endif #ifdef __xstormy16__ /* 4 GPRs plus SP plus PC. */ #define _JBLEN 8 #endif #ifdef __mep__ /* 16 GPRs, pc, hi, lo */ #define _JBLEN 19 #endif #ifdef __CRIS__ #define _JBLEN 18 #endif #ifdef __ia64 #define _JBLEN 64 #endif #ifdef __lm32__ #define _JBLEN 19 #endif #ifdef __m32c__ #if defined(__r8c_cpu__) || defined(__m16c_cpu__) #define _JBLEN (22/2) #else #define _JBLEN (34/2) #endif #define _JBTYPE unsigned short #endif /* __m32c__ */ #ifdef __MSP430__ #define _JBLEN 9 #ifdef __MSP430X_LARGE__ #define _JBTYPE unsigned long #else #define _JBTYPE unsigned short #endif #endif #ifdef __RL78__ /* Three banks of registers, SP, CS, ES, PC */ #define _JBLEN (8*3+8) #define _JBTYPE unsigned char #endif /* * There are two versions of setjmp()/longjmp(): * 1) Compiler (gcc) built-in versions. * 2) Function-call versions. * * The built-in versions are used most of the time. When used, gcc replaces * calls to setjmp()/longjmp() with inline assembly code. The built-in * versions save/restore a variable number of registers. * _JBLEN is set to 40 to be ultra-safe with the built-in versions. * It only needs to be 12 for the function-call versions * but this data structure is used by both versions. */ #ifdef __NIOS2__ #define _JBLEN 40 #define _JBTYPE unsigned long #endif #ifdef __PRU__ #define _JBLEN 48 #define _JBTYPE unsigned int #endif #ifdef __RX__ #define _JBLEN 0x44 #endif #ifdef __VISIUM__ /* All call-saved GP registers: r11-r19,r21,r22,r23. */ #define _JBLEN 12 #endif #ifdef __riscv /* _JBTYPE using long long to make sure the alignment is align to 8 byte, otherwise in rv32imafd, store/restore FPR may mis-align. */ #define _JBTYPE long long #ifdef __riscv_32e #define _JBLEN ((4*sizeof(long))/sizeof(long)) #else #define _JBLEN ((14*sizeof(long) + 12*sizeof(double))/sizeof(long)) #endif #endif #ifdef __CSKYABIV2__ #define _JBTYPE unsigned long #if defined(__CK801__) #define _JBLEN 7 #elif defined(__CK802__) #define _JBLEN 10 #else #define _JBLEN 18 #endif #endif #ifdef _JBLEN #ifdef _JBTYPE typedef _JBTYPE jmp_buf[_JBLEN]; #else typedef int jmp_buf[_JBLEN]; #endif #endif _END_STD_C #if (defined(__CYGWIN__) || defined(__rtems__)) && __POSIX_VISIBLE #include #ifdef __cplusplus extern "C" { #endif /* POSIX sigsetjmp/siglongjmp macros */ #ifdef _JBTYPE typedef _JBTYPE sigjmp_buf[_JBLEN+1+((sizeof (_JBTYPE) + sizeof (sigset_t) - 1) /sizeof (_JBTYPE))]; #else typedef int sigjmp_buf[_JBLEN+1+(sizeof (sigset_t)/sizeof (int))]; #endif #define _SAVEMASK _JBLEN #define _SIGMASK (_JBLEN+1) #ifdef __CYGWIN__ # define _CYGWIN_WORKING_SIGSETJMP #endif #ifdef _POSIX_THREADS #define __SIGMASK_FUNC pthread_sigmask #else #define __SIGMASK_FUNC sigprocmask #endif #ifdef __CYGWIN__ /* Per POSIX, siglongjmp has to be implemented as function. Cygwin provides functions for both, siglongjmp and sigsetjmp since 2.2.0. */ extern void siglongjmp (sigjmp_buf, int) __attribute__ ((__noreturn__)); extern int sigsetjmp (sigjmp_buf, int); #endif #if defined(__GNUC__) #define sigsetjmp(env, savemask) \ __extension__ \ ({ \ sigjmp_buf *_sjbuf = &(env); \ ((*_sjbuf)[_SAVEMASK] = savemask,\ __SIGMASK_FUNC (SIG_SETMASK, 0, (sigset_t *)((*_sjbuf) + _SIGMASK)),\ setjmp (*_sjbuf)); \ }) #define siglongjmp(env, val) \ __extension__ \ ({ \ sigjmp_buf *_sjbuf = &(env); \ ((((*_sjbuf)[_SAVEMASK]) ? \ __SIGMASK_FUNC (SIG_SETMASK, (sigset_t *)((*_sjbuf) + _SIGMASK), 0)\ : 0), \ longjmp (*_sjbuf, val)); \ }) #else /* !__GNUC__ */ #define sigsetjmp(env, savemask) ((env)[_SAVEMASK] = savemask,\ __SIGMASK_FUNC (SIG_SETMASK, 0, (sigset_t *) ((env) + _SIGMASK)),\ setjmp (env)) #define siglongjmp(env, val) ((((env)[_SAVEMASK])?\ __SIGMASK_FUNC (SIG_SETMASK, (sigset_t *) ((env) + _SIGMASK), 0):0),\ longjmp (env, val)) #endif /* POSIX _setjmp/_longjmp, maintained for XSI compatibility. These are equivalent to sigsetjmp/siglongjmp when not saving the signal mask. New applications should use sigsetjmp/siglongjmp instead. */ #ifdef __CYGWIN__ extern void _longjmp (jmp_buf, int) __attribute__ ((__noreturn__)); extern int _setjmp (jmp_buf); #else #define _setjmp(env) sigsetjmp ((env), 0) #define _longjmp(env, val) siglongjmp ((env), (val)) #endif #ifdef __cplusplus } #endif #endif /* (__CYGWIN__ or __rtems__) and __POSIX_VISIBLE */ picolibc-1.7.4/newlib/libc/include/machine/stdlib.h000066400000000000000000000003101414576234500221660ustar00rootroot00000000000000/* Copyright (c) 2002 Jeff Johnston */ #ifndef _MACHSTDLIB_H_ #define _MACHSTDLIB_H_ /* place holder so platforms may add stdlib.h extensions */ #endif /* _MACHSTDLIB_H_ */ picolibc-1.7.4/newlib/libc/include/machine/termios.h000066400000000000000000000001331414576234500223720ustar00rootroot00000000000000/* Copyright (c) 2002 Jeff Johnston */ #define __MAX_BAUD B4000000 picolibc-1.7.4/newlib/libc/include/machine/time.h000066400000000000000000000013661414576234500216570ustar00rootroot00000000000000/* Copyright (C) 1991 DJ Delorie All rights reserved. Redistribution, modification, and use in source and binary forms is permitted provided that the above copyright notice and following paragraph are duplicated in all such forms. This file is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef _MACHTIME_H_ #define _MACHTIME_H_ #if defined(__rtems__) || defined(__VISIUM__) || defined(__riscv) #define _CLOCKS_PER_SEC_ 1000000 #elif defined(__aarch64__) || defined(__arm__) || defined(__thumb__) #define _CLOCKS_PER_SEC_ 100 #endif #ifdef __SPU__ #include int nanosleep (const struct timespec *, struct timespec *); #endif #endif /* _MACHTIME_H_ */ picolibc-1.7.4/newlib/libc/include/machine/types.h000066400000000000000000000013521414576234500220600ustar00rootroot00000000000000/* Copyright (C) 1991 DJ Delorie All rights reserved. Redistribution, modification, and use in source and binary forms is permitted provided that the above copyright notice and following paragraph are duplicated in all such forms. This file is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ /* * Newlib targets may provide an own version of this file in their machine * directory to add custom user types for . */ #ifndef _SYS_TYPES_H #error "must be included via " #endif /* !_SYS_TYPES_H */ #if defined(__XMK__) && defined(___int64_t_defined) typedef __uint64_t u_quad_t; typedef __int64_t quad_t; typedef quad_t * qaddr_t; #endif picolibc-1.7.4/newlib/libc/include/malloc.h000066400000000000000000000076621414576234500205710ustar00rootroot00000000000000/* Copyright (c) 1991, 1993 The Regents of the University of California. All rights reserved. c) UNIX System Laboratories, Inc. All or some portions of this file are derived from material licensed to the University of California by American Telephone and Telegraph Co. or Unix System Laboratories, Inc. and are reproduced herein with the permission of UNIX System Laboratories, Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* malloc.h -- header file for memory routines. */ #ifndef _INCLUDE_MALLOC_H_ #define _INCLUDE_MALLOC_H_ #include <_ansi.h> #define __need_size_t #include /* include any machine-specific extensions */ #include #ifdef __cplusplus extern "C" { #endif /* This version of struct mallinfo must match the one in libc/stdlib/mallocr.c. */ struct mallinfo { size_t arena; /* total space allocated from system */ size_t ordblks; /* number of non-inuse chunks */ size_t smblks; /* unused -- always zero */ size_t hblks; /* number of mmapped regions */ size_t hblkhd; /* total space in mmapped regions */ size_t usmblks; /* unused -- always zero */ size_t fsmblks; /* unused -- always zero */ size_t uordblks; /* total allocated space */ size_t fordblks; /* total non-inuse space */ size_t keepcost; /* top-most, releasable (via malloc_trim) space */ }; /* The routines. */ extern void *malloc (size_t); extern void free (void *); extern void *realloc (void *, size_t); extern void *calloc (size_t, size_t); extern void *memalign (size_t, size_t); extern struct mallinfo mallinfo (void); extern void malloc_stats (void); extern int mallopt (int, int); extern size_t malloc_usable_size (void *); /* These aren't too useful on an embedded system, but we define them anyhow. */ extern void *valloc (size_t); extern void *pvalloc (size_t); extern int malloc_trim (size_t); extern void __malloc_lock(void); extern void __malloc_unlock(void); /* A compatibility routine for an earlier version of the allocator. */ extern void mstats (char *); /* SVID2/XPG mallopt options */ #define M_MXFAST 1 /* UNUSED in this malloc */ #define M_NLBLKS 2 /* UNUSED in this malloc */ #define M_GRAIN 3 /* UNUSED in this malloc */ #define M_KEEP 4 /* UNUSED in this malloc */ /* mallopt options that actually do something */ #define M_TRIM_THRESHOLD -1 #define M_TOP_PAD -2 #define M_MMAP_THRESHOLD -3 #define M_MMAP_MAX -4 #ifndef __CYGWIN__ /* Some systems provide this, so do too for compatibility. */ extern void cfree (void *); #endif /* __CYGWIN__ */ #ifdef __cplusplus } #endif #endif /* _INCLUDE_MALLOC_H_ */ picolibc-1.7.4/newlib/libc/include/math.h000066400000000000000000000537361414576234500202560ustar00rootroot00000000000000/* Copyright (c) 1991, 1993 The Regents of the University of California. All rights reserved. c) UNIX System Laboratories, Inc. All or some portions of this file are derived from material licensed to the University of California by American Telephone and Telegraph Co. or Unix System Laboratories, Inc. and are reproduced herein with the permission of UNIX System Laboratories, Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _MATH_H_ #define _MATH_H_ #include #include #include "_ansi.h" _BEGIN_STD_C /* Natural log of 2 */ #define _M_LN2 0.693147180559945309417 #if __GNUC_PREREQ (3, 3) || defined(__clang__) || defined(__COMPCERT__) /* gcc >= 3.3 implicitly defines builtins for HUGE_VALx values. */ # ifndef HUGE_VAL # define HUGE_VAL (__builtin_huge_val()) # endif # ifndef HUGE_VALF # define HUGE_VALF (__builtin_huge_valf()) # endif # ifndef HUGE_VALL # define HUGE_VALL (__builtin_huge_vall()) # endif # ifndef INFINITY # define INFINITY (__builtin_inff()) # endif # ifndef NAN # define NAN (__builtin_nanf("")) # endif #else /* !gcc >= 3.3 */ /* No builtins. Use fixed defines instead. (All 3 HUGE plus the INFINITY * and NAN macros are required to be constant expressions. Using a variable-- * even a static const--does not meet this requirement, as it cannot be * evaluated at translation time.) * The infinities are done using numbers that are far in excess of * something that would be expected to be encountered in a floating-point * implementation. (A more certain way uses values from float.h, but that is * avoided because system includes are not supposed to include each other.) * This method might produce warnings from some compilers. (It does in * newer GCCs, but not for ones that would hit this #else.) If this happens, * please report details to the Newlib mailing list. */ #ifndef HUGE_VAL #define HUGE_VAL (1.0e999999999) #endif #ifndef HUGE_VALF #define HUGE_VALF (1.0e999999999F) #endif #if !defined(HUGE_VALL) && defined(_HAVE_LONG_DOUBLE) #define HUGE_VALL (1.0e999999999L) #endif #if !defined(INFINITY) #define INFINITY (HUGE_VALF) #endif #if !defined(NAN) #if defined(__GNUC__) && defined(__cplusplus) /* Exception: older g++ versions warn about the divide by 0 used in the * normal case (even though older gccs do not). This trick suppresses the * warning, but causes errors for plain gcc, so is only used in the one * special case. */ static const union { __ULong __i[1]; float __d; } __Nanf = {0x7FC00000}; #define NAN (__Nanf.__d) #else #define NAN (0.0F/0.0F) #endif #endif #endif /* !gcc >= 3.3 */ /* Reentrant ANSI C functions. */ #ifndef __math_68881 extern double atan (double); extern double cos (double); extern double sin (double); extern double tan (double); extern double tanh (double); extern double frexp (double, int *); extern double modf (double, double *); extern double ceil (double); extern double fabs (double); extern double floor (double); #endif /* ! defined (__math_68881) */ /* Non reentrant ANSI C functions. */ #ifndef _REENT_ONLY #ifndef __math_68881 extern double acos (double); extern double asin (double); extern double atan2 (double, double); extern double cosh (double); extern double sinh (double); extern double exp (double); extern double ldexp (double, int); extern double log (double); extern double log10 (double); extern double pow (double, double); extern double sqrt (double); extern double fmod (double, double); #endif /* ! defined (__math_68881) */ #endif /* ! defined (_REENT_ONLY) */ #if __MISC_VISIBLE extern int finite (double); extern int finitef (float); extern int isinff (float); extern int isnanf (float); #if defined(_HAVE_LONG_DOUBLE) extern int finitel (long double); extern int isinfl (long double); extern int isnanl (long double); #endif #if !defined(__cplusplus) || __cplusplus < 201103L extern int isinf (double); #endif #endif /* __MISC_VISIBLE */ #if (__MISC_VISIBLE || (__XSI_VISIBLE && __XSI_VISIBLE < 600)) \ && (!defined(__cplusplus) || __cplusplus < 201103L) extern int isnan (double); #endif #if __ISO_C_VISIBLE >= 1999 /* ISO C99 types and macros. */ /* FIXME: FLT_EVAL_METHOD should somehow be gotten from float.h (which is hard, * considering that the standard says the includes it defines should not * include other includes that it defines) and that value used. (This can be * solved, but autoconf has a bug which makes the solution more difficult, so * it has been skipped for now.) */ #if !defined(FLT_EVAL_METHOD) && defined(__FLT_EVAL_METHOD__) #define FLT_EVAL_METHOD __FLT_EVAL_METHOD__ #define __TMP_FLT_EVAL_METHOD #endif /* FLT_EVAL_METHOD */ #if defined FLT_EVAL_METHOD /* FLT_EVAL_METHOD == 16 has meaning as defined in ISO/IEC TS 18661-3, * which provides non-compliant extensions to C and POSIX (by adding * additional positive values for FLT_EVAL_METHOD). It effectively has * same meaning as the C99 and C11 definitions for value 0, while also * serving as a flag that the _Float16 (float16_t) type exists. * * FLT_EVAL_METHOD could be any number of bits of supported floating point * format (e.g. 32, 64, 128), but currently only AArch64 and few other targets * might define that as 16. */ #if (FLT_EVAL_METHOD == 0) \ || (FLT_EVAL_METHOD == 16) typedef float float_t; typedef double double_t; #elif FLT_EVAL_METHOD == 1 typedef double float_t; typedef double double_t; #elif FLT_EVAL_METHOD == 2 typedef long double float_t; typedef long double double_t; #else /* Implementation-defined. Assume float_t and double_t have been * defined previously for this configuration (e.g. config.h). */ #endif #else /* Assume basic definitions. */ typedef float float_t; typedef double double_t; #endif #if defined(__TMP_FLT_EVAL_METHOD) #undef FLT_EVAL_METHOD #endif #define FP_NAN 0 #define FP_INFINITE 1 #define FP_ZERO 2 #define FP_SUBNORMAL 3 #define FP_NORMAL 4 #ifndef FP_ILOGB0 # define FP_ILOGB0 (-__INT_MAX__) #endif #ifndef FP_ILOGBNAN # define FP_ILOGBNAN __INT_MAX__ #endif #ifndef MATH_ERRNO # define MATH_ERRNO 1 #endif #ifndef MATH_ERREXCEPT # define MATH_ERREXCEPT 2 #endif #ifndef math_errhandling # ifdef _IEEE_LIBM # define _MATH_ERRHANDLING_ERRNO 0 # else # define _MATH_ERRHANDLING_ERRNO MATH_ERRNO # endif # ifdef _SUPPORTS_ERREXCEPT # define _MATH_ERRHANDLING_ERREXCEPT MATH_ERREXCEPT # else # define _MATH_ERRHANDLING_ERREXCEPT 0 # endif # define math_errhandling (_MATH_ERRHANDLING_ERRNO | _MATH_ERRHANDLING_ERREXCEPT) #endif extern int __isinff (float); extern int __isinfd (double); extern int __isnanf (float); extern int __isnand (double); extern int __fpclassifyf (float); extern int __fpclassifyd (double); extern int __signbitf (float); extern int __signbitd (double); /* Note: isinf and isnan were once functions in newlib that took double * arguments. C99 specifies that these names are reserved for macros * supporting multiple floating point types. Thus, they are * now defined as macros. Implementations of the old functions * taking double arguments still exist for compatibility purposes * (prototypes for them are earlier in this header). */ #if __GNUC_PREREQ (4, 4) || defined(__clang__) #define fpclassify(__x) (__builtin_fpclassify (FP_NAN, FP_INFINITE, \ FP_NORMAL, FP_SUBNORMAL, \ FP_ZERO, __x)) #ifndef isfinite #define isfinite(__x) (__builtin_isfinite (__x)) #endif #ifndef isinf #define isinf(__x) (__builtin_isinf_sign (__x)) #endif #ifndef isnan #define isnan(__x) (__builtin_isnan (__x)) #endif #define isnormal(__x) (__builtin_isnormal (__x)) #else #define fpclassify(__x) \ ((sizeof(__x) == sizeof(float)) ? __fpclassifyf(__x) : \ __fpclassifyd((double) (__x))) #ifndef isfinite #define isfinite(__y) \ (__extension__ ({int __cy = fpclassify(__y); \ __cy != FP_INFINITE && __cy != FP_NAN;})) #endif #ifndef isinf #define isinf(__x) (fpclassify(__x) == FP_INFINITE) #endif #ifndef isnan #define isnan(__x) (fpclassify(__x) == FP_NAN) #endif #define isnormal(__x) (fpclassify(__x) == FP_NORMAL) #endif #ifndef issignaling int __issignalingf(float f); int __issignaling(double d); #if defined(_HAVE_LONG_DOUBLE) int __issignalingl(long double d); #define issignaling(__x) \ ((sizeof(__x) == sizeof(float)) ? __issignalingf(__x) : \ (sizeof(__x) == sizeof(double)) ? __issignaling ((double) (__x)) : \ __issignalingl((long double) (__x))) #else #ifdef _DOUBLE_IS_32BITS #define issignaling(__x) __issignalingf((float) (__x)) #else #define issignaling(__x) \ ((sizeof(__x) == sizeof(float)) ? __issignalingf(__x) : \ __issignaling ((double) (__x))) #endif /* _DOUBLE_IS_32BITS */ #endif /* _HAVE_LONG_DOUBLE */ #endif #if __GNUC_PREREQ (4, 0) #if defined(_HAVE_LONG_DOUBLE) #define signbit(__x) \ ((sizeof(__x) == sizeof(float)) ? __builtin_signbitf(__x) : \ ((sizeof(__x) == sizeof(double)) ? __builtin_signbit ((double)(__x)) : \ __builtin_signbitl((long double)(__x)))) #else #define signbit(__x) \ ((sizeof(__x) == sizeof(float)) ? __builtin_signbitf(__x) : \ __builtin_signbit ((double) (__x))) #endif #else #define signbit(__x) \ ((sizeof(__x) == sizeof(float)) ? __signbitf(__x) : \ __signbitd((double) (__x))) #endif #if __GNUC_PREREQ (2, 97) #define isgreater(__x,__y) (__builtin_isgreater (__x, __y)) #define isgreaterequal(__x,__y) (__builtin_isgreaterequal (__x, __y)) #define isless(__x,__y) (__builtin_isless (__x, __y)) #define islessequal(__x,__y) (__builtin_islessequal (__x, __y)) #define islessgreater(__x,__y) (__builtin_islessgreater (__x, __y)) #define isunordered(__x,__y) (__builtin_isunordered (__x, __y)) #else #define isgreater(x,y) \ (__extension__ ({__typeof__(x) __x = (x); __typeof__(y) __y = (y); \ !isunordered(__x,__y) && (__x > __y);})) #define isgreaterequal(x,y) \ (__extension__ ({__typeof__(x) __x = (x); __typeof__(y) __y = (y); \ !isunordered(__x,__y) && (__x >= __y);})) #define isless(x,y) \ (__extension__ ({__typeof__(x) __x = (x); __typeof__(y) __y = (y); \ !isunordered(__x,__y) && (__x < __y);})) #define islessequal(x,y) \ (__extension__ ({__typeof__(x) __x = (x); __typeof__(y) __y = (y); \ !isunordered(__x,__y) && (__x <= __y);})) #define islessgreater(x,y) \ (__extension__ ({__typeof__(x) __x = (x); __typeof__(y) __y = (y); \ !isunordered(__x,__y) && (__x < __y || __x > __y);})) #define isunordered(a,b) \ (__extension__ ({__typeof__(a) __a = (a); __typeof__(b) __b = (b); \ fpclassify(__a) == FP_NAN || fpclassify(__b) == FP_NAN;})) #endif /* Non ANSI double precision functions. */ extern double infinity (void); extern double nan (const char *); extern double copysign (double, double); extern double logb (double); extern int ilogb (double); extern double asinh (double); extern double cbrt (double); extern double nextafter (double, double); extern double rint (double); extern double scalbn (double, int); extern double exp2 (double); extern double scalbln (double, long int); extern double tgamma (double); extern double nearbyint (double); extern long int lrint (double); extern long long int llrint (double); extern double round (double); extern long int lround (double); extern long long int llround (double); extern double trunc (double); extern double remquo (double, double, int *); extern double fdim (double, double); extern double fmax (double, double); extern double fmin (double, double); extern double fma (double, double, double); #ifndef __math_68881 extern double log1p (double); extern double expm1 (double); #endif /* ! defined (__math_68881) */ #ifndef _REENT_ONLY extern double acosh (double); extern double atanh (double); extern double remainder (double, double); extern double gamma (double); extern double lgamma (double); extern double erf (double); extern double erfc (double); extern double log2 (double); #if !defined(__cplusplus) #define log2(x) (log (x) / _M_LN2) #endif #ifndef __math_68881 extern double hypot (double, double); #endif #endif /* ! defined (_REENT_ONLY) */ /* Single precision versions of ANSI functions. */ extern float atanf (float); extern float cosf (float); extern float sinf (float); extern float tanf (float); extern float tanhf (float); extern float frexpf (float, int *); extern float modff (float, float *); extern float ceilf (float); extern float fabsf (float); extern float floorf (float); #ifndef _REENT_ONLY extern float acosf (float); extern float asinf (float); extern float atan2f (float, float); extern float coshf (float); extern float sinhf (float); extern float expf (float); extern float ldexpf (float, int); extern float logf (float); extern float log10f (float); extern float powf (float, float); extern float sqrtf (float); extern float fmodf (float, float); #endif /* ! defined (_REENT_ONLY) */ /* Other single precision functions. */ extern float exp2f (float); extern float scalblnf (float, long int); extern float tgammaf (float); extern float nearbyintf (float); extern long int lrintf (float); extern long long int llrintf (float); extern float roundf (float); extern long int lroundf (float); extern long long int llroundf (float); extern float truncf (float); extern float remquof (float, float, int *); extern float fdimf (float, float); extern float fmaxf (float, float); extern float fminf (float, float); extern float fmaf (float, float, float); extern float infinityf (void); extern float nanf (const char *); extern float copysignf (float, float); extern float logbf (float); extern int ilogbf (float); extern float asinhf (float); extern float cbrtf (float); extern float nextafterf (float, float); extern float rintf (float); extern float scalbnf (float, int); extern float log1pf (float); extern float expm1f (float); #ifndef _REENT_ONLY extern float acoshf (float); extern float atanhf (float); extern float remainderf (float, float); extern float gammaf (float); extern float lgammaf (float); extern float erff (float); extern float erfcf (float); extern float log2f (float); extern float hypotf (float, float); #endif /* ! defined (_REENT_ONLY) */ /* Newlib doesn't fully support long double math functions so far. On platforms where long double equals double the long double functions simply call the double functions. On Cygwin the long double functions are implemented independently from newlib to be able to use optimized assembler functions despite using the Microsoft x86_64 ABI. */ #if defined (_LDBL_EQ_DBL) || defined (__CYGWIN__) /* Reentrant ANSI C functions. */ #ifndef __math_68881 extern long double atanl (long double); extern long double cosl (long double); extern long double sinl (long double); extern long double tanl (long double); extern long double tanhl (long double); extern long double frexpl (long double, int *); extern long double modfl (long double, long double *); extern long double ceill (long double); extern long double floorl (long double); extern long double log1pl (long double); extern long double expm1l (long double); #endif /* ! defined (__math_68881) */ /* Non reentrant ANSI C functions. */ #ifndef _REENT_ONLY #ifndef __math_68881 extern long double acosl (long double); extern long double asinl (long double); extern long double atan2l (long double, long double); extern long double coshl (long double); extern long double sinhl (long double); extern long double expl (long double); extern long double ldexpl (long double, int); extern long double logl (long double); extern long double log10l (long double); extern long double powl (long double, long double); extern long double sqrtl (long double); extern long double fmodl (long double, long double); extern long double hypotl (long double, long double); #endif /* ! defined (__math_68881) */ #endif /* ! defined (_REENT_ONLY) */ extern long double nanl (const char *); extern int ilogbl (long double); extern long double asinhl (long double); extern long double cbrtl (long double); extern long double nextafterl (long double, long double); extern float nexttowardf (float, long double); extern double nexttoward (double, long double); extern long double nexttowardl (long double, long double); extern long double logbl (long double); extern long double log2l (long double); extern long double rintl (long double); extern long double scalbnl (long double, int); extern long double exp2l (long double); extern long double scalblnl (long double, long); extern long double tgammal (long double); extern long double nearbyintl (long double); extern long int lrintl (long double); extern long long int llrintl (long double); extern long double roundl (long double); extern long lroundl (long double); extern long long int llroundl (long double); extern long double truncl (long double); extern long double remquol (long double, long double, int *); extern long double fdiml (long double, long double); extern long double fmaxl (long double, long double); extern long double fminl (long double, long double); extern long double fmal (long double, long double, long double); #ifndef _REENT_ONLY extern long double acoshl (long double); extern long double atanhl (long double); extern long double remainderl (long double, long double); extern long double lgammal (long double); extern long double erfl (long double); extern long double erfcl (long double); #endif /* ! defined (_REENT_ONLY) */ #else /* !_LDBL_EQ_DBL && !__CYGWIN__ */ extern long double hypotl (long double, long double); extern long double sqrtl (long double); #ifdef __i386__ /* Other long double precision functions. */ extern _LONG_DOUBLE rintl (_LONG_DOUBLE); extern long int lrintl (_LONG_DOUBLE); extern long long int llrintl (_LONG_DOUBLE); #endif /* __i386__ */ #endif /* !_LDBL_EQ_DBL && !__CYGWIN__ */ #endif /* __ISO_C_VISIBLE >= 1999 */ #ifdef _HAVE_LONG_DOUBLE /* Compiler provides these */ extern long double fabsl (long double); extern long double copysignl (long double, long double); #endif #if __MISC_VISIBLE extern double drem (double, double); extern float dremf (float, float); #if defined(_LDBL_EQ_DBL) || defined(__CYGWIN__) extern long double dreml (long double, long double); #endif extern double lgamma_r (double, int *); extern float lgammaf_r (float, int *); #endif #if __MISC_VISIBLE || __XSI_VISIBLE extern double y0 (double); extern double y1 (double); extern double yn (int, double); extern double j0 (double); extern double j1 (double); extern double jn (int, double); #endif #if __MISC_VISIBLE || __XSI_VISIBLE >= 600 extern float y0f (float); extern float y1f (float); extern float ynf (int, float); extern float j0f (float); extern float j1f (float); extern float jnf (int, float); #endif /* GNU extensions */ #if __GNU_VISIBLE extern void sincos (double, double *, double *); extern void sincosf (float, float *, float *); #if defined (_LDBL_EQ_DBL) || defined (__CYGWIN__) extern void sincosl (long double, long double *, long double *); #endif # ifndef exp10 extern double exp10 (double); # endif # ifndef pow10 extern double pow10 (double); # endif # ifndef exp10f extern float exp10f (float); # endif # ifndef pow10f extern float pow10f (float); # endif #if defined (_LDBL_EQ_DBL) || defined (__CYGWIN__) # ifndef exp10l extern long double exp10l (long double); # endif # ifndef pow10l extern long double pow10l (long double); # endif #endif #endif /* __GNU_VISIBLE */ #if __MISC_VISIBLE || __XSI_VISIBLE extern NEWLIB_THREAD_LOCAL int signgam; #endif /* __MISC_VISIBLE || __XSI_VISIBLE */ /* Useful constants. */ #if __BSD_VISIBLE || __XSI_VISIBLE #define MAXFLOAT 3.40282347e+38F #define M_E 2.7182818284590452354 #define M_LOG2E 1.4426950408889634074 #define M_LOG10E 0.43429448190325182765 #define M_LN2 _M_LN2 #define M_LN10 2.30258509299404568402 #define M_PI 3.14159265358979323846 #define M_PI_2 1.57079632679489661923 #define M_PI_4 0.78539816339744830962 #define M_1_PI 0.31830988618379067154 #define M_2_PI 0.63661977236758134308 #define M_2_SQRTPI 1.12837916709551257390 #define M_SQRT2 1.41421356237309504880 #define M_SQRT1_2 0.70710678118654752440 #endif #if __BSD_VISIBLE #define M_TWOPI (M_PI * 2.0) #define M_3PI_4 2.3561944901923448370E0 #define M_SQRTPI 1.77245385090551602792981 #define M_LN2LO 1.9082149292705877000E-10 #define M_LN2HI 6.9314718036912381649E-1 #define M_SQRT3 1.73205080756887719000 #define M_IVLN10 0.43429448190325182765 /* 1 / log(10) */ #define M_LOG2_E _M_LN2 #define M_INVLN2 1.4426950408889633870E0 /* 1 / log(2) */ #endif /* __BSD_VISIBLE */ #include _END_STD_C #ifdef __FAST_MATH__ #include #endif #endif /* _MATH_H_ */ picolibc-1.7.4/newlib/libc/include/memory.h000066400000000000000000000002361414576234500206200ustar00rootroot00000000000000/* Copyright (c) 2016 Sebastian Huber */ #ifndef _MEMORY_H #define _MEMORY_H #include #endif /* !_MEMORY_H */ picolibc-1.7.4/newlib/libc/include/meson.build000066400000000000000000000050061414576234500213010ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # subdir('sys') subdir('machine') subdir('ssp') inc_headers = [ 'alloca.h', '_ansi.h', 'argz.h', 'ar.h', 'assert.h', 'cpio.h', 'ctype.h', 'devctl.h', 'dirent.h', 'elf.h', 'envlock.h', 'envz.h', 'errno.h', 'fastmath.h', 'fcntl.h', 'fenv.h', 'fnmatch.h', 'getopt.h', 'glob.h', 'grp.h', 'iconv.h', 'ieeefp.h', 'inttypes.h', 'langinfo.h', 'libgen.h', 'limits.h', 'locale.h', 'malloc.h', 'math.h', 'memory.h', 'newlib.h', 'paths.h', 'pwd.h', 'regdef.h', 'regex.h', 'sched.h', 'search.h', 'setjmp.h', 'signal.h', 'spawn.h', 'stdint.h', 'stdlib.h', 'string.h', 'strings.h', '_syslist.h', 'tar.h', 'termios.h', 'threads.h', 'time.h', 'unctrl.h', 'unistd.h', 'utime.h', 'utmp.h', 'wchar.h', 'wctype.h', 'wordexp.h' ] if have_complex inc_headers += ['complex.h'] endif inc_headers += ['picotls.h'] if not tinystdio inc_headers += ['reent.h'] endif install_headers(inc_headers) picolibc-1.7.4/newlib/libc/include/ndbm.h000066400000000000000000000061371414576234500202360ustar00rootroot00000000000000/*- * SPDX-License-Identifier: BSD-3-Clause * * Copyright (c) 1990, 1993 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Margo Seltzer. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)ndbm.h 8.1 (Berkeley) 6/2/93 * $FreeBSD$ : src/include/ndbm.h * Nov 20 19:45:28 2017 UTC by pfg * SVN Revision 326024 */ #ifndef _NDBM_H_ #define _NDBM_H_ /* #include */ /* * The above header-file is directly included in `newlib/libc/search/ndbm.c` * as `db.h` is present in form of `db_local.h`, inside `newlib/libc/search` * directory and not in `newlib/libc/include`. * Necessary data-types are mentioned in form of forward-declarations */ /* Map dbm interface onto db(3). */ #define DBM_RDONLY O_RDONLY /* Flags to dbm_store(). */ #define DBM_INSERT 0 #define DBM_REPLACE 1 /* * The db(3) support for ndbm always appends this suffix to the * file name to avoid overwriting the user's original database. */ #define DBM_SUFFIX ".db" typedef struct { void *dptr; int dsize; /* XXX Should be size_t according to 1003.1-2008. */ } datum; struct __db; /* Forward-declaration */ typedef struct __db DB; /* Forward-declaration */ typedef DB DBM; #define dbm_pagfno(a) DBM_PAGFNO_NOT_AVAILABLE __BEGIN_DECLS int dbm_clearerr(DBM *); void dbm_close(DBM *); int dbm_delete(DBM *, datum); int dbm_error(DBM *); datum dbm_fetch(DBM *, datum); datum dbm_firstkey(DBM *); datum dbm_nextkey(DBM *); DBM *dbm_open(const char *, int, mode_t); int dbm_store(DBM *, datum, datum, int); #if __BSD_VISIBLE int dbm_dirfno(DBM *); #endif __END_DECLS #endif /* !_NDBM_H_ */ picolibc-1.7.4/newlib/libc/include/newlib.h000066400000000000000000000031451414576234500205720ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2019 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #include picolibc-1.7.4/newlib/libc/include/paths.h000066400000000000000000000037011414576234500204270ustar00rootroot00000000000000/* Copyright (c) 1991, 1993 The Regents of the University of California. All rights reserved. c) UNIX System Laboratories, Inc. All or some portions of this file are derived from material licensed to the University of California by American Telephone and Telegraph Co. or Unix System Laboratories, Inc. and are reproduced herein with the permission of UNIX System Laboratories, Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _PATHS_H_ #define _PATHS_H_ #define _PATH_DEV "/dev/" #define _PATH_DEVNULL "/dev/null" #define _PATH_DEVZERO "/dev/zero" #define _PATH_BSHELL "/bin/sh" #endif /* _PATHS_H_ */ picolibc-1.7.4/newlib/libc/include/picotls.h000066400000000000000000000040001414576234500207560ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2019 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _PICOTLS_H_ #define _PICOTLS_H_ #ifdef PICOLIBC_TLS #include extern char __tls_size[]; static inline size_t _tls_size(void) { return (size_t) (uintptr_t) __tls_size; } /* * Initialize a TLS block, copying the data segment from flash and * zeroing the BSS segment. */ void _init_tls(void *tls); /* Set the TLS pointer to the specific block */ void _set_tls(void *tls); #endif #endif /* _PICOTLS_H_ */ picolibc-1.7.4/newlib/libc/include/pwd.h000066400000000000000000000053121414576234500201020ustar00rootroot00000000000000/*- * Copyright (c) 1989 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)pwd.h 5.13 (Berkeley) 5/28/91 */ #ifndef _PWD_H_ #ifdef __cplusplus extern "C" { #endif #define _PWD_H_ #include #include #if __BSD_VISIBLE #define _PATH_PASSWD "/etc/passwd" #define _PASSWORD_LEN 128 /* max length, not counting NULL */ #endif struct passwd { char *pw_name; /* user name */ char *pw_passwd; /* encrypted password */ uid_t pw_uid; /* user uid */ gid_t pw_gid; /* user gid */ char *pw_comment; /* comment */ char *pw_gecos; /* Honeywell login info */ char *pw_dir; /* home directory */ char *pw_shell; /* default shell */ }; #ifndef __INSIDE_CYGWIN__ struct passwd *getpwuid (uid_t); struct passwd *getpwnam (const char *); #if __MISC_VISIBLE || __POSIX_VISIBLE int getpwnam_r (const char *, struct passwd *, char *, size_t , struct passwd **); int getpwuid_r (uid_t, struct passwd *, char *, size_t, struct passwd **); #endif #if __MISC_VISIBLE || __XSI_VISIBLE >= 4 struct passwd *getpwent (void); void setpwent (void); void endpwent (void); #endif #if __BSD_VISIBLE int setpassent (int); #endif #endif /*!__INSIDE_CYGWIN__*/ #ifdef __cplusplus } #endif #endif /* _PWD_H_ */ picolibc-1.7.4/newlib/libc/include/reent.h000066400000000000000000000150221414576234500204240ustar00rootroot00000000000000/* Copyright (c) 1991, 1993 The Regents of the University of California. All rights reserved. c) UNIX System Laboratories, Inc. All or some portions of this file are derived from material licensed to the University of California by American Telephone and Telegraph Co. or Unix System Laboratories, Inc. and are reproduced herein with the permission of UNIX System Laboratories, Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This header file provides the reentrancy. */ /* The reentrant system calls here serve two purposes: 1) Provide reentrant versions of the system calls the ANSI C library requires. 2) Provide these system calls in a namespace clean way. It is intended that *all* system calls that the ANSI C library needs be declared here. It documents them all in one place. All library access to the system is via some form of these functions. The target may provide the needed syscalls by any of the following: 1) Define the reentrant versions of the syscalls directly. (eg: _open_r, _close_r, etc.). Please keep the namespace clean. When you do this, set "syscall_dir" to "syscalls" and add -DREENTRANT_SYSCALLS_PROVIDED to newlib_cflags in configure.host. 2) Define namespace clean versions of the system calls by prefixing them with '_' (eg: _open, _close, etc.). Technically, there won't be true reentrancy at the syscall level, but the library will be namespace clean. When you do this, set "syscall_dir" to "syscalls" in configure.host. 3) Define or otherwise provide the regular versions of the syscalls (eg: open, close, etc.). The library won't be reentrant nor namespace clean, but at least it will work. When you do this, add -DMISSING_SYSCALL_NAMES to newlib_cflags in configure.host. 4) Define or otherwise provide the regular versions of the syscalls, and do not supply functional interfaces for any of the reentrant calls. With this method, the reentrant syscalls are redefined to directly call the regular system call without the reentrancy argument. When you do this, specify both -DREENTRANT_SYSCALLS_PROVIDED and -DMISSING_SYSCALL_NAMES via newlib_cflags in configure.host and do not specify "syscall_dir". Stubs of the reentrant versions of the syscalls exist in the libc/reent source directory and are provided if REENTRANT_SYSCALLS_PROVIDED isn't defined. These stubs call the native system calls: _open, _close, etc. if MISSING_SYSCALL_NAMES is *not* defined, otherwise they call the non-underscored versions: open, close, etc. when MISSING_SYSCALL_NAMES *is* defined. By default, newlib functions call the reentrant syscalls internally, passing a reentrancy structure as an argument. This reentrancy structure contains data that is thread-specific. For example, the errno value is kept in the reentrancy structure. If multiple threads exist, each will keep a separate errno value which is intuitive since the application flow cannot check for failure reliably otherwise. The reentrant syscalls are either provided by the platform, by the libc/reent stubs, or in the case of both MISSING_SYSCALL_NAMES and REENTRANT_SYSCALLS_PROVIDED being defined, the calls are redefined to simply call the regular syscalls with no reentrancy struct argument. A single-threaded application does not need to worry about the reentrancy structure. It is used internally. A multi-threaded application needs either to manually manage reentrancy structures or use dynamic reentrancy. Manually managing reentrancy structures entails calling special reentrant versions of newlib functions that have an additional reentrancy argument. For example, _printf_r. By convention, the first argument is the reentrancy structure. By default, the normal version of the function uses the default reentrancy structure: _REENT. The reentrancy structure is passed internally, eventually to the reentrant syscalls themselves. How the structures are stored and accessed in this model is up to the application. Dynamic reentrancy is specified by the __DYNAMIC_REENT__ flag. This flag denotes setting up a macro to replace _REENT with a function call to __getreent(). This function needs to be implemented by the platform and it is meant to return the reentrancy structure for the current thread. When the regular C functions (e.g. printf) go to call internal routines with the default _REENT structure, they end up calling with the reentrancy structure for the thread. Thus, application code does not need to call the _r routines nor worry about reentrancy structures. */ /* WARNING: All identifiers here must begin with an underscore. This file is included by stdio.h and others and we therefore must only use identifiers in the namespace allotted to us. */ #ifndef _REENT_H_ #ifdef __cplusplus extern "C" { #endif #define _REENT_H_ #include #include #define __need_size_t #define __need_ptrdiff_t #include /* FIXME: not namespace clean */ struct stat; struct tms; struct timeval; struct timezone; struct _reent; #ifdef __cplusplus } #endif #endif /* _REENT_H_ */ picolibc-1.7.4/newlib/libc/include/regdef.h000066400000000000000000000037341414576234500205520ustar00rootroot00000000000000/* Copyright (c) 1991, 1993 The Regents of the University of California. All rights reserved. c) UNIX System Laboratories, Inc. All or some portions of this file are derived from material licensed to the University of California by American Telephone and Telegraph Co. or Unix System Laboratories, Inc. and are reproduced herein with the permission of UNIX System Laboratories, Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* regdef.h -- define register names. */ /* This is a standard include file for MIPS targets. Other target probably don't define it, and attempts to include this file will fail. */ #include picolibc-1.7.4/newlib/libc/include/regex.h000066400000000000000000000067561414576234500204370ustar00rootroot00000000000000/*- * Copyright (c) 1992 Henry Spencer. * Copyright (c) 1992, 1993 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Henry Spencer of the University of Toronto. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)regex.h 8.2 (Berkeley) 1/3/94 * $FreeBSD: src/include/regex.h,v 1.4 2002/03/23 17:24:53 imp Exp $ */ #ifndef _REGEX_H_ #define _REGEX_H_ #include /* types */ typedef ptrdiff_t regoff_t; typedef struct { int re_magic; size_t re_nsub; /* number of parenthesized subexpressions */ __const char *re_endp; /* end pointer for REG_PEND */ struct re_guts *re_g; /* none of your business :-) */ } regex_t; typedef struct { regoff_t rm_so; /* start of match */ regoff_t rm_eo; /* end of match */ } regmatch_t; /* regcomp() flags */ #define REG_BASIC 0000 #define REG_EXTENDED 0001 #define REG_ICASE 0002 #define REG_NOSUB 0004 #define REG_NEWLINE 0010 #define REG_NOSPEC 0020 #define REG_PEND 0040 #define REG_DUMP 0200 /* regerror() flags */ #define REG_NOMATCH 1 #define REG_BADPAT 2 #define REG_ECOLLATE 3 #define REG_ECTYPE 4 #define REG_EESCAPE 5 #define REG_ESUBREG 6 #define REG_EBRACK 7 #define REG_EPAREN 8 #define REG_EBRACE 9 #define REG_BADBR 10 #define REG_ERANGE 11 #define REG_ESPACE 12 #define REG_BADRPT 13 #define REG_EMPTY 14 #define REG_ASSERT 15 #define REG_INVARG 16 #define REG_ATOI 255 /* convert name to number (!) */ #define REG_ITOA 0400 /* convert number to name (!) */ /* regexec() flags */ #define REG_NOTBOL 00001 #define REG_NOTEOL 00002 #define REG_STARTEND 00004 #define REG_TRACE 00400 /* tracing of execution */ #define REG_LARGE 01000 /* force large representation */ #define REG_BACKR 02000 /* force use of backref code */ __BEGIN_DECLS int regcomp(regex_t *__restrict, const char *__restrict, int); size_t regerror(int, const regex_t *__restrict, char *__restrict, size_t); int regexec(const regex_t *__restrict, const char *__restrict, size_t, regmatch_t [__restrict], int); void regfree(regex_t *); __END_DECLS #endif /* !_REGEX_H_ */ picolibc-1.7.4/newlib/libc/include/rpc/000077500000000000000000000000001414576234500177225ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/include/rpc/types.h000066400000000000000000000052131414576234500212400ustar00rootroot00000000000000 /* * Copyright (c) 2009, Sun Microsystems, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * - Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * - Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * - Neither the name of Sun Microsystems, Inc. nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * from: @(#)types.h 1.18 87/07/24 SMI * from: @(#)types.h 2.3 88/08/15 4.0 RPCSRC * $FreeBSD: src/include/rpc/types.h,v 1.10.6.1 2003/12/18 00:59:50 peter Exp $ * $NetBSD: types.h,v 1.13 2000/06/13 01:02:44 thorpej Exp $ */ /* * Rpc additions to */ #ifndef _RPC_TYPES_H #define _RPC_TYPES_H #include #include #define __need_NULL #include #ifdef __cplusplus extern "C" { #endif #if defined(___int64_t_defined) typedef u_int64_t u_quad_t; typedef int64_t quad_t; #endif /* ___int64_t_defined */ typedef int32_t bool_t; typedef int32_t enum_t; typedef u_int32_t rpcprog_t; typedef u_int32_t rpcvers_t; typedef u_int32_t rpcproc_t; typedef u_int32_t rpcprot_t; typedef u_int32_t rpcport_t; typedef int32_t rpc_inline_t; #define __dontcare__ -1 #ifndef FALSE # define FALSE 0 #endif #ifndef TRUE # define TRUE 1 #endif #ifndef mem_alloc #define mem_alloc(bsize) calloc(1, bsize) #endif #ifndef mem_free #define mem_free(ptr, bsize) free(ptr) #endif #ifdef __cplusplus } #endif #endif /* !_RPC_TYPES_H */ picolibc-1.7.4/newlib/libc/include/rpc/xdr.h000066400000000000000000000347321414576234500207010ustar00rootroot00000000000000 /* * Copyright (c) 2009, Sun Microsystems, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * - Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * - Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * - Neither the name of Sun Microsystems, Inc. nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * from: @(#)xdr.h 1.19 87/04/22 SMI * from: @(#)xdr.h 2.2 88/07/29 4.0 RPCSRC * $FreeBSD: src/include/rpc/xdr.h,v 1.23 2003/03/07 13:19:40 nectar Exp $ * $NetBSD: xdr.h,v 1.19 2000/07/17 05:00:45 matt Exp $ */ /* * xdr.h, External Data Representation Serialization Routines. * * Copyright (C) 1984, Sun Microsystems, Inc. */ #ifndef _RPC_XDR_H #define _RPC_XDR_H #include <_ansi.h> #include #ifdef __cplusplus extern "C" { #endif /* * XDR provides a conventional way for converting between C data * types and an external bit-string representation. Library supplied * routines provide for the conversion on built-in C data types. These * routines and utility routines defined here are used to help implement * a type encode/decode routine for each user-defined type. * * Each data type provides a single procedure which takes two arguments: * * bool_t * xdrproc(XDR *xdrs, *argresp) * * xdrs is an instance of a XDR handle, to which or from which the data * type is to be converted. argresp is a pointer to the structure to be * converted. The XDR handle contains an operation field which indicates * which of the operations (ENCODE, DECODE * or FREE) is to be performed. * * XDR_DECODE may allocate space if the pointer argresp is null. This * data can be freed with the XDR_FREE operation. * * We write only one procedure per data type to make it easy * to keep the encode and decode procedures for a data type consistent. * In many cases the same code performs all operations on a user defined type, * because all the hard work is done in the component type routines. * decode as a series of calls on the nested data types. */ /* * Xdr operations. XDR_ENCODE causes the type to be encoded into the * stream. XDR_DECODE causes the type to be extracted from the stream. * XDR_FREE can be used to release the space allocated by an XDR_DECODE * request. */ enum xdr_op { XDR_ENCODE = 0, XDR_DECODE = 1, XDR_FREE = 2 }; /* * This is the number of bytes per unit of external data. */ #define BYTES_PER_XDR_UNIT (4) #if 1 /* faster version when BYTES_PER_XDR_UNIT is a power of two */ # define RNDUP(x) (((x) + BYTES_PER_XDR_UNIT - 1) & ~(BYTES_PER_XDR_UNIT - 1)) #else /* old version */ #define RNDUP(x) ((((x) + BYTES_PER_XDR_UNIT - 1) / BYTES_PER_XDR_UNIT) \ * BYTES_PER_XDR_UNIT) #endif /* * The XDR handle. * Contains operation which is being applied to the stream, * an operations vector for the particular implementation (e.g. see xdr_mem.c), * and two private fields for the use of the particular implementation. */ typedef struct __rpc_xdr { enum xdr_op x_op; /* operation; fast additional param */ const struct xdr_ops { /* get a long from underlying stream */ bool_t (*x_getlong) (struct __rpc_xdr *, long *); /* put a long to " */ bool_t (*x_putlong) (struct __rpc_xdr *, const long *); /* get some bytes from " */ bool_t (*x_getbytes) (struct __rpc_xdr *, char *, u_int); /* put some bytes to " */ bool_t (*x_putbytes) (struct __rpc_xdr *, const char *, u_int); /* returns bytes off from beginning */ u_int (*x_getpostn) (struct __rpc_xdr *); /* lets you reposition the stream */ bool_t (*x_setpostn) (struct __rpc_xdr *, u_int); /* buf quick ptr to buffered data */ int32_t * (*x_inline) (struct __rpc_xdr *, u_int); /* free privates of this xdr_stream */ void (*x_destroy) (struct __rpc_xdr *); /* get an int32 from this xdr_stream */ bool_t (*x_getint32) (struct __rpc_xdr *, int32_t *); /* put an int32 to the underlying stream */ bool_t (*x_putint32) (struct __rpc_xdr *, const int32_t *); } *x_ops; char *x_public; /* users' data */ void *x_private; /* pointer to private data */ char *x_base; /* private used for position info */ u_int x_handy; /* extra private word */ } XDR; /* * A xdrproc_t exists for each data type which is to be encoded or decoded. * * The second argument to the xdrproc_t is a pointer to an opaque pointer. * The opaque pointer generally points to a structure of the data type * to be decoded. If this pointer is 0, then the type routines should * allocate dynamic storage of the appropriate size and return it. * bool_t (*xdrproc_t)(XDR *, some_type *) */ typedef bool_t (*xdrproc_t) (XDR *, ...); /* * Operations defined on a XDR handle * * XDR *xdrs; * long *longp; * char *addr; * u_int len; * u_int pos; */ #define XDR_GETINT32(xdrs, int32p) \ (*(xdrs)->x_ops->x_getint32)(xdrs, int32p) #define xdr_getint32(xdrs, int32p) \ (*(xdrs)->x_ops->x_getint32)(xdrs, int32p) #define XDR_PUTINT32(xdrs, int32p) \ (*(xdrs)->x_ops->x_putint32)(xdrs, int32p) #define xdr_putint32(xdrs, int32p) \ (*(xdrs)->x_ops->x_putint32)(xdrs, int32p) #define XDR_GETLONG(xdrs, longp) \ (*(xdrs)->x_ops->x_getlong)(xdrs, longp) #define xdr_getlong(xdrs, longp) \ (*(xdrs)->x_ops->x_getlong)(xdrs, longp) #define XDR_PUTLONG(xdrs, longp) \ (*(xdrs)->x_ops->x_putlong)(xdrs, longp) #define xdr_putlong(xdrs, longp) \ (*(xdrs)->x_ops->x_putlong)(xdrs, longp) #define XDR_GETBYTES(xdrs, addr, len) \ (*(xdrs)->x_ops->x_getbytes)(xdrs, addr, len) #define xdr_getbytes(xdrs, addr, len) \ (*(xdrs)->x_ops->x_getbytes)(xdrs, addr, len) #define XDR_PUTBYTES(xdrs, addr, len) \ (*(xdrs)->x_ops->x_putbytes)(xdrs, addr, len) #define xdr_putbytes(xdrs, addr, len) \ (*(xdrs)->x_ops->x_putbytes)(xdrs, addr, len) #define XDR_GETPOS(xdrs) \ (*(xdrs)->x_ops->x_getpostn)(xdrs) #define xdr_getpos(xdrs) \ (*(xdrs)->x_ops->x_getpostn)(xdrs) #define XDR_SETPOS(xdrs, pos) \ (*(xdrs)->x_ops->x_setpostn)(xdrs, pos) #define xdr_setpos(xdrs, pos) \ (*(xdrs)->x_ops->x_setpostn)(xdrs, pos) #define XDR_INLINE(xdrs, len) \ (*(xdrs)->x_ops->x_inline)(xdrs, len) #define xdr_inline(xdrs, len) \ (*(xdrs)->x_ops->x_inline)(xdrs, len) #define XDR_DESTROY(xdrs) \ do { \ if ((xdrs)->x_ops->x_destroy) \ (*(xdrs)->x_ops->x_destroy)(xdrs); \ } while (0) #define xdr_destroy(xdrs) \ do { \ if ((xdrs)->x_ops->x_destroy) \ (*(xdrs)->x_ops->x_destroy)(xdrs); \ } while (0) /* * Solaris strips the '_t' from these types -- not sure why. * But, let's be compatible. */ #define xdr_rpcvers(xdrs, versp) xdr_u_int32(xdrs, versp) #define xdr_rpcprog(xdrs, progp) xdr_u_int32(xdrs, progp) #define xdr_rpcproc(xdrs, procp) xdr_u_int32(xdrs, procp) #define xdr_rpcprot(xdrs, protp) xdr_u_int32(xdrs, protp) #define xdr_rpcport(xdrs, portp) xdr_u_int32(xdrs, portp) /* * Support struct for discriminated unions. * You create an array of xdrdiscrim structures, terminated with * an entry with a null procedure pointer. The xdr_union routine gets * the discriminant value and then searches the array of structures * for a matching value. If a match is found the associated xdr routine * is called to handle that part of the union. If there is * no match, then a default routine may be called. * If there is no match and no default routine it is an error. */ #define NULL_xdrproc_t ((xdrproc_t)0) struct xdr_discrim { int value; xdrproc_t proc; }; /* * In-line routines for fast encode/decode of primitive data types. * Caveat emptor: these use single memory cycles to get the * data from the underlying buffer, and will fail to operate * properly if the data is not aligned. The standard way to use these * is to say: * if ((buf = XDR_INLINE(xdrs, count)) == NULL) * return (FALSE); * <<< macro calls >>> * where ``count'' is the number of bytes of data occupied * by the primitive data types. * * N.B. and frozen for all time: each data type here uses 4 bytes * of external representation. */ #define IXDR_GET_INT32(buf) ((int32_t)ntohl((u_int32_t)*(buf)++)) #define IXDR_PUT_INT32(buf, v) (*(buf)++ =(int32_t)htonl((u_int32_t)v)) #define IXDR_GET_U_INT32(buf) ((uint32_t)IXDR_GET_INT32(buf)) #define IXDR_PUT_U_INT32(buf, v) IXDR_PUT_INT32((buf), ((int32_t)(v))) /* Warning: inline long routines are broken for 64 bit platforms. * Because the other inline routines below are implemented in terms * of them, they are all also broken for 64 bit platforms. */ #define IXDR_GET_LONG(buf) ((long)ntohl((u_int32_t)*(buf)++)) #define IXDR_PUT_LONG(buf, v) (*(buf)++ =(int32_t)htonl((u_int32_t)v)) #define IXDR_GET_U_LONG(buf) ((u_long)IXDR_GET_LONG(buf)) #define IXDR_PUT_U_LONG(buf, v) IXDR_PUT_LONG((buf), (v)) #define IXDR_GET_BOOL(buf) ((bool_t)IXDR_GET_LONG(buf)) #define IXDR_GET_ENUM(buf, t) ((t)IXDR_GET_LONG(buf)) #define IXDR_GET_SHORT(buf) ((short)IXDR_GET_LONG(buf)) #define IXDR_GET_U_SHORT(buf) ((u_short)IXDR_GET_LONG(buf)) #define IXDR_PUT_BOOL(buf, v) IXDR_PUT_LONG((buf), (v)) #define IXDR_PUT_ENUM(buf, v) IXDR_PUT_LONG((buf), (v)) #define IXDR_PUT_SHORT(buf, v) IXDR_PUT_LONG((buf), (v)) #define IXDR_PUT_U_SHORT(buf, v) IXDR_PUT_LONG((buf), (v)) /* * These are the "generic" xdr routines. */ extern bool_t xdr_void (void); extern bool_t xdr_short (XDR *, short *); extern bool_t xdr_u_short (XDR *, u_short *); extern bool_t xdr_int (XDR *, int *); extern bool_t xdr_u_int (XDR *, u_int *); extern bool_t xdr_long (XDR *, long *); extern bool_t xdr_u_long (XDR *, u_long *); extern bool_t xdr_int8_t (XDR *, int8_t *); extern bool_t xdr_uint8_t (XDR *, uint8_t *); extern bool_t xdr_u_int8_t (XDR *, u_int8_t *); extern bool_t xdr_int16_t (XDR *, int16_t *); extern bool_t xdr_uint16_t (XDR *, uint16_t *); extern bool_t xdr_u_int16_t (XDR *, u_int16_t *); extern bool_t xdr_int32_t (XDR *, int32_t *); extern bool_t xdr_uint32_t (XDR *, uint32_t *); extern bool_t xdr_u_int32_t (XDR *, u_int32_t *); #if defined(___int64_t_defined) extern bool_t xdr_int64_t (XDR *, int64_t *); extern bool_t xdr_uint64_t (XDR *, uint64_t *); extern bool_t xdr_u_int64_t (XDR *, u_int64_t *); #endif /* ___int64_t_defined */ extern bool_t xdr_bool (XDR *, bool_t *); extern bool_t xdr_enum (XDR *, enum_t *); extern bool_t xdr_array (XDR *, char **, u_int *, u_int, u_int, xdrproc_t); extern bool_t xdr_bytes (XDR *, char **, u_int *, u_int); extern bool_t xdr_opaque (XDR *, char *, u_int); extern bool_t xdr_string (XDR *, char **, u_int); extern bool_t xdr_union (XDR *, enum_t *, char *, const struct xdr_discrim *, xdrproc_t); extern bool_t xdr_char (XDR *, char *); extern bool_t xdr_u_char (XDR *, u_char *); extern bool_t xdr_vector (XDR *, char *, u_int, u_int, xdrproc_t); extern bool_t xdr_float (XDR *, float *); extern bool_t xdr_double (XDR *, double *); /* extern bool_t xdr_quadruple (XDR *, long double *); */ extern bool_t xdr_reference (XDR *, char **, u_int, xdrproc_t); extern bool_t xdr_pointer (XDR *, char **, u_int, xdrproc_t); extern bool_t xdr_wrapstring (XDR *, char **); #if defined(___int64_t_defined) extern bool_t xdr_hyper (XDR *, quad_t *); extern bool_t xdr_u_hyper (XDR *, u_quad_t *); extern bool_t xdr_longlong_t (XDR *, quad_t *); extern bool_t xdr_u_longlong_t (XDR *, u_quad_t *); #endif /* ___int64_t_defined */ extern u_long xdr_sizeof (xdrproc_t, void *); /* * Common opaque bytes objects used by many rpc protocols; * declared here due to commonality. */ #define MAX_NETOBJ_SZ 1024 struct netobj { u_int n_len; char *n_bytes; }; typedef struct netobj netobj; extern bool_t xdr_netobj (XDR *, struct netobj *); /* * These are the public routines for the various implementations of * xdr streams. */ /* XDR using memory buffers */ extern void xdrmem_create (XDR *, char *, u_int, enum xdr_op); /* XDR using stdio library */ #if defined(_STDIO_H_) extern void xdrstdio_create (XDR *, FILE *, enum xdr_op); #endif /* XDR pseudo records for tcp */ extern void xdrrec_create (XDR *, u_int, u_int, void *, int (*) (void *, void *, int), int (*) (void *, void *, int)); /* make end of xdr record */ extern bool_t xdrrec_endofrecord (XDR *, bool_t); /* move to beginning of next record */ extern bool_t xdrrec_skiprecord (XDR *); /* true if no more input */ extern bool_t xdrrec_eof (XDR *); extern u_int xdrrec_readbytes (XDR *, caddr_t, u_int); /* free memory buffers for xdr */ extern void xdr_free (xdrproc_t, void *); #ifdef __cplusplus } #endif #endif /* !_RPC_XDR_H */ picolibc-1.7.4/newlib/libc/include/sched.h000066400000000000000000000052131414576234500203760ustar00rootroot00000000000000/* * Written by Joel Sherrill . * * COPYRIGHT (c) 1989-2010. * On-Line Applications Research Corporation (OAR). * * Permission to use, copy, modify, and distribute this software for any * purpose without fee is hereby granted, provided that this entire notice * is included in all copies of any software which is or includes a copy * or modification of this software. * * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED * WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION * OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS * SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. * * $Id$ */ #ifndef _SCHED_H_ #define _SCHED_H_ #include #include #ifdef __cplusplus extern "C" { #endif #if defined(_POSIX_PRIORITY_SCHEDULING) /* * XBD 13 - Set Scheduling Parameters, P1003.1b-2008, p. 1803 */ int sched_setparam( pid_t __pid, const struct sched_param *__param ); /* * XBD 13 - Set Scheduling Parameters, P1003.1b-2008, p. 1800 */ int sched_getparam( pid_t __pid, struct sched_param *__param ); /* * XBD 13 - Set Scheduling Policy and Scheduling Parameters, * P1003.1b-2008, p. 1805 */ int sched_setscheduler( pid_t __pid, int __policy, const struct sched_param *__param ); /* * XBD 13 - Get Scheduling Policy, P1003.1b-2008, p. 1801 */ int sched_getscheduler( pid_t __pid ); /* * XBD 13 - Get Scheduling Parameter Limits, P1003.1b-2008, p. 1799 */ int sched_get_priority_max( int __policy ); int sched_get_priority_min( int __policy ); /* * XBD 13 - Get Scheduling Parameter Limits, P1003.1b-2008, p. 1802 */ int sched_rr_get_interval( pid_t __pid, struct timespec *__interval ); #endif /* _POSIX_PRIORITY_SCHEDULING */ #if defined(_POSIX_THREADS) || defined(_POSIX_PRIORITY_SCHEDULING) /* * XBD 13 - Yield Processor, P1003.1b-2008, p. 1807 */ int sched_yield( void ); #endif /* _POSIX_THREADS or _POSIX_PRIORITY_SCHEDULING */ #if __GNU_VISIBLE int sched_getcpu(void); /* The following functions should only be declared if the type cpu_set_t is defined through indirect inclusion of sys/cpuset.h, only available on some targets. */ #ifdef _SYS_CPUSET_H_ int sched_getaffinity (pid_t, size_t, cpu_set_t *); int sched_get_thread_affinity (void *, size_t, cpu_set_t *); int sched_setaffinity (pid_t, size_t, const cpu_set_t *); int sched_set_thread_affinity (void *, size_t, const cpu_set_t *); #endif /* _SYS_CPUSET_H_ */ #endif #ifdef __cplusplus } #endif #endif /* _SCHED_H_ */ picolibc-1.7.4/newlib/libc/include/search.h000066400000000000000000000054661414576234500205670ustar00rootroot00000000000000/* Copyright (c) 1990, 1993 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* $NetBSD: search.h,v 1.12 1999/02/22 10:34:28 christos Exp $ */ /* $FreeBSD: src/include/search.h,v 1.4 2002/03/23 17:24:53 imp Exp $ */ /* * Written by J.T. Conklin * Public domain. */ #ifndef _SEARCH_H_ #define _SEARCH_H_ #include #include #include typedef struct entry { char *key; void *data; } ENTRY; typedef enum { FIND, ENTER } ACTION; typedef enum { preorder, postorder, endorder, leaf } VISIT; #ifdef _SEARCH_PRIVATE typedef struct node { char *key; struct node *llink, *rlink; } node_t; #endif struct hsearch_data { struct internal_head *htable; size_t htablesize; }; #ifndef __compar_fn_t_defined #define __compar_fn_t_defined typedef int (*__compar_fn_t) (const void *, const void *); #endif __BEGIN_DECLS int hcreate(size_t); void hdestroy(void); ENTRY *hsearch(ENTRY, ACTION); int hcreate_r(size_t, struct hsearch_data *); void hdestroy_r(struct hsearch_data *); int hsearch_r(ENTRY, ACTION, ENTRY **, struct hsearch_data *); void *tdelete(const void *__restrict, void **__restrict, __compar_fn_t); void tdestroy (void *, void (*)(void *)); void *tfind(const void *, void **, __compar_fn_t); void *tsearch(const void *, void **, __compar_fn_t); void twalk(const void *, void (*)(const void *, VISIT, int)); __END_DECLS #endif /* !_SEARCH_H_ */ picolibc-1.7.4/newlib/libc/include/setjmp.h000066400000000000000000000041511414576234500206120ustar00rootroot00000000000000/* Copyright (c) 1991, 1993 The Regents of the University of California. All rights reserved. c) UNIX System Laboratories, Inc. All or some portions of this file are derived from material licensed to the University of California by American Telephone and Telegraph Co. or Unix System Laboratories, Inc. and are reproduced herein with the permission of UNIX System Laboratories, Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* setjmp.h stubs for future use. */ #ifndef _SETJMP_H_ #define _SETJMP_H_ #include "_ansi.h" #include _BEGIN_STD_C #ifdef __GNUC__ void longjmp (jmp_buf __jmpb, int __retval) __attribute__ ((__noreturn__)); #else void longjmp (jmp_buf __jmpb, int __retval); #endif int setjmp (jmp_buf __jmpb); _END_STD_C #endif /* _SETJMP_H_ */ picolibc-1.7.4/newlib/libc/include/signal.h000066400000000000000000000046211414576234500205670ustar00rootroot00000000000000/* Copyright (c) 1991, 1993 The Regents of the University of California. All rights reserved. c) UNIX System Laboratories, Inc. All or some portions of this file are derived from material licensed to the University of California by American Telephone and Telegraph Co. or Unix System Laboratories, Inc. and are reproduced herein with the permission of UNIX System Laboratories, Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _SIGNAL_H_ #define _SIGNAL_H_ #include "_ansi.h" #include #include _BEGIN_STD_C typedef int sig_atomic_t; /* Atomic entity type (ANSI) */ #if __BSD_VISIBLE typedef _sig_func_ptr sig_t; /* BSD naming */ #endif #if __GNU_VISIBLE typedef _sig_func_ptr sighandler_t; /* glibc naming */ #endif #define SIG_DFL ((_sig_func_ptr)0) /* Default action */ #define SIG_IGN ((_sig_func_ptr)1) /* Ignore action */ #define SIG_ERR ((_sig_func_ptr)-1) /* Error return */ #ifndef _REENT_ONLY _sig_func_ptr signal (int, _sig_func_ptr); int raise (int); void psignal (int, const char *); #endif _END_STD_C #endif /* _SIGNAL_H_ */ picolibc-1.7.4/newlib/libc/include/spawn.h000066400000000000000000000100521414576234500204350ustar00rootroot00000000000000/*- * Copyright (c) 2008 Ed Schouten * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifndef _SPAWN_H_ #define _SPAWN_H_ #include <_ansi.h> #include #include #include #define __need_sigset_t #include struct sched_param; typedef struct __posix_spawnattr *posix_spawnattr_t; typedef struct __posix_spawn_file_actions *posix_spawn_file_actions_t; #define POSIX_SPAWN_RESETIDS 0x01 #define POSIX_SPAWN_SETPGROUP 0x02 #define POSIX_SPAWN_SETSCHEDPARAM 0x04 #define POSIX_SPAWN_SETSCHEDULER 0x08 #define POSIX_SPAWN_SETSIGDEF 0x10 #define POSIX_SPAWN_SETSIGMASK 0x20 _BEGIN_STD_C /* * Spawn routines * * XXX both arrays should be __restrict, but this does not work when GCC * is invoked with -std=c99. */ int posix_spawn (pid_t * __restrict, const char * __restrict, const posix_spawn_file_actions_t *, const posix_spawnattr_t * __restrict, char * const [], char * const []); int posix_spawnp (pid_t * __restrict, const char * __restrict, const posix_spawn_file_actions_t *, const posix_spawnattr_t * __restrict, char * const [], char * const []); /* * File descriptor actions */ int posix_spawn_file_actions_init (posix_spawn_file_actions_t *); int posix_spawn_file_actions_destroy (posix_spawn_file_actions_t *); int posix_spawn_file_actions_addopen (posix_spawn_file_actions_t * __restrict, int, const char * __restrict, int, mode_t); int posix_spawn_file_actions_adddup2 (posix_spawn_file_actions_t *, int, int); int posix_spawn_file_actions_addclose (posix_spawn_file_actions_t *, int); /* * Spawn attributes */ int posix_spawnattr_init (posix_spawnattr_t *); int posix_spawnattr_destroy (posix_spawnattr_t *); int posix_spawnattr_getflags (const posix_spawnattr_t * __restrict, short * __restrict); int posix_spawnattr_getpgroup (const posix_spawnattr_t * __restrict, pid_t * __restrict); int posix_spawnattr_getschedparam (const posix_spawnattr_t * __restrict, struct sched_param * __restrict); int posix_spawnattr_getschedpolicy (const posix_spawnattr_t * __restrict, int * __restrict); int posix_spawnattr_getsigdefault (const posix_spawnattr_t * __restrict, sigset_t * __restrict); int posix_spawnattr_getsigmask (const posix_spawnattr_t * __restrict, sigset_t * __restrict); int posix_spawnattr_setflags (posix_spawnattr_t *, short); int posix_spawnattr_setpgroup (posix_spawnattr_t *, pid_t); int posix_spawnattr_setschedparam (posix_spawnattr_t * __restrict, const struct sched_param * __restrict); int posix_spawnattr_setschedpolicy (posix_spawnattr_t *, int); int posix_spawnattr_setsigdefault (posix_spawnattr_t * __restrict, const sigset_t * __restrict); int posix_spawnattr_setsigmask (posix_spawnattr_t * __restrict, const sigset_t * __restrict); _END_STD_C #endif /* !_SPAWN_H_ */ picolibc-1.7.4/newlib/libc/include/ssp/000077500000000000000000000000001414576234500177435ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/include/ssp/meson.build000066400000000000000000000033411414576234500221060ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2020 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # inc_ssp_headers = [ 'ssp.h', 'stdio.h', 'stdlib.h', 'string.h', 'strings.h', 'unistd.h', 'wchar.h', ] install_headers(inc_ssp_headers, subdir:'ssp') picolibc-1.7.4/newlib/libc/include/ssp/ssp.h000066400000000000000000000055441414576234500207310ustar00rootroot00000000000000/* $NetBSD: ssp.h,v 1.13 2015/09/03 20:43:47 plunky Exp $ */ /*- * Copyright (c) 2006, 2011 The NetBSD Foundation, Inc. * All rights reserved. * * This code is derived from software contributed to The NetBSD Foundation * by Christos Zoulas. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #ifndef _SSP_SSP_H_ #define _SSP_SSP_H_ #include /* __ssp_real is used by the implementation in libc */ #if __SSP_FORTIFY_LEVEL == 0 #define __ssp_real_(fun) fun #else #define __ssp_real_(fun) __ssp_real_ ## fun #endif #define __ssp_real(fun) __ssp_real_(fun) #define __ssp_inline extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) #define __ssp_bos(ptr) __builtin_object_size(ptr, __SSP_FORTIFY_LEVEL > 1) #define __ssp_bos0(ptr) __builtin_object_size(ptr, 0) #define __ssp_check(buf, len, bos) \ if (bos(buf) != (size_t)-1 && len > bos(buf)) \ __chk_fail() #define __ssp_decl(rtype, fun, args) \ rtype __ssp_real_(fun) args __asm__(__ASMNAME(#fun)); \ __ssp_inline rtype fun args #define __ssp_redirect_raw(rtype, fun, args, call, cond, bos) \ __ssp_decl(rtype, fun, args) \ { \ if (cond) \ __ssp_check(__buf, __len, bos); \ return __ssp_real_(fun) call; \ } #define __ssp_redirect(rtype, fun, args, call) \ __ssp_redirect_raw(rtype, fun, args, call, 1, __ssp_bos) #define __ssp_redirect0(rtype, fun, args, call) \ __ssp_redirect_raw(rtype, fun, args, call, 1, __ssp_bos0) #define __ssp_overlap(a, b, l) \ (((a) <= (b) && (b) < (a) + (l)) || ((b) <= (a) && (a) < (b) + (l))) __BEGIN_DECLS void __stack_chk_fail(void) __dead2; void __chk_fail(void) __dead2; __END_DECLS #endif /* _SSP_SSP_H_ */ picolibc-1.7.4/newlib/libc/include/ssp/stdio.h000066400000000000000000000070421414576234500212410ustar00rootroot00000000000000/* $NetBSD: stdio.h,v 1.5 2011/07/17 20:54:34 joerg Exp $ */ /*- * Copyright (c) 2006 The NetBSD Foundation, Inc. * All rights reserved. * * This code is derived from software contributed to The NetBSD Foundation * by Christos Zoulas. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #ifndef _SSP_STDIO_H_ #define _SSP_STDIO_H_ #include __BEGIN_DECLS int __sprintf_chk(char *__restrict, int, size_t, const char *__restrict, ...) __printflike(4, 5); int __vsprintf_chk(char *__restrict, int, size_t, const char *__restrict, va_list) __printflike(4, 0); int __snprintf_chk(char *__restrict, size_t, int, size_t, const char *__restrict, ...) __printflike(5, 6); int __vsnprintf_chk(char *__restrict, size_t, int, size_t, const char *__restrict, va_list) __printflike(5, 0); char *__gets_chk(char *, size_t); __END_DECLS #if __SSP_FORTIFY_LEVEL > 0 #define sprintf(str, ...) \ __builtin___sprintf_chk(str, 0, __ssp_bos(str), __VA_ARGS__) #define vsprintf(str, fmt, ap) \ __builtin___vsprintf_chk(str, 0, __ssp_bos(str), fmt, ap) #define snprintf(str, len, ...) \ __builtin___snprintf_chk(str, len, 0, __ssp_bos(str), __VA_ARGS__) #define vsnprintf(str, len, fmt, ap) \ __builtin___vsnprintf_chk(str, len, 0, __ssp_bos(str), fmt, ap) #define gets(str) \ __gets_chk(str, __ssp_bos(str)) __ssp_decl(char *, fgets, (char *__restrict __buf, int __len, FILE *__fp)) { if (__len > 0) __ssp_check(__buf, (size_t)__len, __ssp_bos); return __ssp_real_fgets(__buf, __len, __fp); } #if __GNU_VISIBLE __ssp_decl(char *, fgets_unlocked, (char *__restrict __buf, int __len, FILE *__fp)) { if (__len > 0) __ssp_check(__buf, (size_t)__len, __ssp_bos); return __ssp_real_fgets_unlocked(__buf, __len, __fp); } #endif /* __GNU_VISIBLE */ __ssp_decl(size_t, fread, (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __fp)) { __ssp_check(__ptr, __size * __n, __ssp_bos0); return __ssp_real_fread(__ptr, __size, __n, __fp); } #if __MISC_VISIBLE __ssp_decl(size_t, fread_unlocked, (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __fp)) { __ssp_check(__ptr, __size * __n, __ssp_bos0); return __ssp_real_fread_unlocked(__ptr, __size, __n, __fp); } #endif /* __MISC_VISIBLE */ #endif /* __SSP_FORTIFY_LEVEL > 0 */ #endif /* _SSP_STDIO_H_ */ picolibc-1.7.4/newlib/libc/include/ssp/stdlib.h000066400000000000000000000014211414576234500213730ustar00rootroot00000000000000/* Copyright (c) 2017 Yaakov Selkowitz */ #ifndef _SSP_STDLIB_H_ #define _SSP_STDLIB_H_ #include #if __SSP_FORTIFY_LEVEL > 0 __BEGIN_DECLS __ssp_decl(size_t, mbstowcs, (wchar_t *__buf, const char *__src, size_t __n)) { if (__buf != NULL) __ssp_check(__buf, __n * sizeof(wchar_t), __ssp_bos); return __ssp_real_mbstowcs (__buf, __src, __n); } __ssp_redirect_raw(size_t, wcstombs, \ (char *__buf, const wchar_t *__src, size_t __len), \ (__buf, __src, __len), __buf != NULL, __ssp_bos); __ssp_decl(int, wctomb, (char *__buf, wchar_t __wc)) { if (__buf != NULL) __ssp_check(__buf, MB_CUR_MAX, __ssp_bos); return __ssp_real_wctomb (__buf, __wc); } __END_DECLS #endif /* __SSP_FORTIFY_LEVEL > 0 */ #endif /* _SSP_STDLIB_H_ */ picolibc-1.7.4/newlib/libc/include/ssp/string.h000066400000000000000000000114551414576234500214300ustar00rootroot00000000000000/* $NetBSD: string.h,v 1.13 2014/11/29 13:23:48 pooka Exp $ */ /*- * Copyright (c) 2006 The NetBSD Foundation, Inc. * All rights reserved. * * This code is derived from software contributed to The NetBSD Foundation * by Christos Zoulas. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #ifndef _SSP_STRING_H_ #define _SSP_STRING_H_ #include #include __BEGIN_DECLS void *__memcpy_chk(void *, const void *, size_t, size_t); void *__memmove_chk(void *, const void *, size_t, size_t); void *__mempcpy_chk(void *, const void *, size_t, size_t); void *__memset_chk(void *, int, size_t, size_t); char *__stpcpy_chk(char *, const char *, size_t); char *__strcat_chk(char *, const char *, size_t); char *__strcpy_chk(char *, const char *, size_t); char *__strncat_chk(char *, const char *, size_t, size_t); char *__strncpy_chk(char *, const char *, size_t, size_t); __END_DECLS #if __SSP_FORTIFY_LEVEL > 0 #define __ssp_bos_check3(fun, dst, src, len) \ ((__ssp_bos0(dst) != (size_t)-1) ? \ __builtin___ ## fun ## _chk(dst, src, len, __ssp_bos0(dst)) : \ __ ## fun ## _ichk(dst, src, len)) #define __ssp_bos_check2(fun, dst, src) \ ((__ssp_bos0(dst) != (size_t)-1) ? \ __builtin___ ## fun ## _chk(dst, src, __ssp_bos0(dst)) : \ __ ## fun ## _ichk(dst, src)) #define __ssp_bos_icheck3_restrict(fun, type1, type2) \ __ssp_inline type1 __ ## fun ## _ichk(type1 __restrict, type2 __restrict, size_t); \ __ssp_inline type1 \ __ ## fun ## _ichk(type1 __restrict dst, type2 __restrict src, size_t len) { \ return __builtin___ ## fun ## _chk(dst, src, len, __ssp_bos0(dst)); \ } #define __ssp_bos_icheck3(fun, type1, type2) \ __ssp_inline type1 __ ## fun ## _ichk(type1, type2, size_t); \ __ssp_inline type1 \ __ ## fun ## _ichk(type1 dst, type2 src, size_t len) { \ return __builtin___ ## fun ## _chk(dst, src, len, __ssp_bos0(dst)); \ } #define __ssp_bos_icheck2_restrict(fun, type1, type2) \ __ssp_inline type1 __ ## fun ## _ichk(type1, type2); \ __ssp_inline type1 \ __ ## fun ## _ichk(type1 __restrict dst, type2 __restrict src) { \ return __builtin___ ## fun ## _chk(dst, src, __ssp_bos0(dst)); \ } __BEGIN_DECLS __ssp_bos_icheck3_restrict(memcpy, void *, const void *) __ssp_bos_icheck3(memmove, void *, const void *) __ssp_bos_icheck3_restrict(mempcpy, void *, const void *) __ssp_bos_icheck3(memset, void *, int) __ssp_bos_icheck2_restrict(stpcpy, char *, const char *) #if __GNUC_PREREQ__(4,8) || defined(__clang__) __ssp_bos_icheck3_restrict(stpncpy, char *, const char *) #endif __ssp_bos_icheck2_restrict(strcpy, char *, const char *) __ssp_bos_icheck2_restrict(strcat, char *, const char *) __ssp_bos_icheck3_restrict(strncpy, char *, const char *) __ssp_bos_icheck3_restrict(strncat, char *, const char *) __END_DECLS #define memcpy(dst, src, len) __ssp_bos_check3(memcpy, dst, src, len) #define memmove(dst, src, len) __ssp_bos_check3(memmove, dst, src, len) #if __GNU_VISIBLE #define mempcpy(dst, src, len) __ssp_bos_check3(mempcpy, dst, src, len) #endif #define memset(dst, val, len) __ssp_bos_check3(memset, dst, val, len) #if __POSIX_VISIBLE >= 200809 #define stpcpy(dst, src) __ssp_bos_check2(stpcpy, dst, src) #if __GNUC_PREREQ__(4,8) || defined(__clang__) #define stpncpy(dst, src, len) __ssp_bos_check3(stpncpy, dst, src, len) #endif #endif #define strcpy(dst, src) __ssp_bos_check2(strcpy, dst, src) #define strcat(dst, src) __ssp_bos_check2(strcat, dst, src) #define strncpy(dst, src, len) __ssp_bos_check3(strncpy, dst, src, len) #define strncat(dst, src, len) __ssp_bos_check3(strncat, dst, src, len) #endif /* __SSP_FORTIFY_LEVEL > 0 */ #endif /* _SSP_STRING_H_ */ picolibc-1.7.4/newlib/libc/include/ssp/strings.h000066400000000000000000000042601414576234500216070ustar00rootroot00000000000000/* $NetBSD: strings.h,v 1.3 2008/04/28 20:22:54 martin Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. * All rights reserved. * * This code is derived from software contributed to The NetBSD Foundation * by Christos Zoulas. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #ifndef _SSP_STRINGS_H_ #define _SSP_STRINGS_H_ #include #if __SSP_FORTIFY_LEVEL > 0 #if __BSD_VISIBLE || __POSIX_VISIBLE <= 200112 #define bcopy(src, dst, len) \ ((__ssp_bos0(dst) != (size_t)-1) ? \ __builtin___memmove_chk(dst, src, len, __ssp_bos0(dst)) : \ __memmove_ichk(dst, src, len)) #define bzero(dst, len) \ ((__ssp_bos0(dst) != (size_t)-1) ? \ __builtin___memset_chk(dst, 0, len, __ssp_bos0(dst)) : \ __memset_ichk(dst, 0, len)) #endif #if __BSD_VISIBLE __ssp_redirect0(void, explicit_bzero, (void *__buf, size_t __len), \ (__buf, __len)); #endif #endif /* __SSP_FORTIFY_LEVEL > 0 */ #endif /* _SSP_STRINGS_H_ */ picolibc-1.7.4/newlib/libc/include/ssp/unistd.h000066400000000000000000000066001414576234500214240ustar00rootroot00000000000000/* $NetBSD: unistd.h,v 1.7 2015/06/25 18:41:03 joerg Exp $ */ /*- * Copyright (c) 2006 The NetBSD Foundation, Inc. * All rights reserved. * * This code is derived from software contributed to The NetBSD Foundation * by Christos Zoulas. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #ifndef _SSP_UNISTD_H_ #define _SSP_UNISTD_H_ #include #if __SSP_FORTIFY_LEVEL > 0 __BEGIN_DECLS #if __POSIX_VISIBLE >= 199209 __ssp_redirect(size_t, confstr, (int __name, char *__buf, size_t __len), \ (__name, __buf, __len)); #endif __ssp_redirect_raw(char *, getcwd, (char *__buf, size_t __len), (__buf, __len), __buf != 0, __ssp_bos); #if __BSD_VISIBLE || (__XSI_VISIBLE && __XSI_VISIBLE < 500) __ssp_redirect(int, getdomainname, (char *__buf, size_t __len), \ (__buf, __len)); #endif __ssp_decl(int, getgroups, (int __n, gid_t __buf[])) { __ssp_check(__buf, __n * sizeof(gid_t), __ssp_bos); return __ssp_real_getgroups (__n, __buf); } #if __BSD_VISIBLE || __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE >= 500 #if !(defined (_WINSOCK_H) || defined (_WINSOCKAPI_) || defined (__USE_W32_SOCKETS)) __ssp_redirect(int, gethostname, (char *__buf, size_t __len), \ (__buf, __len)); #endif #endif __ssp_redirect(int, getlogin_r, (char *__buf, size_t __len), \ (__buf, __len)); #if __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE >= 500 __ssp_redirect0(ssize_t, pread, (int __fd, void *__buf, size_t __len, off_t __off), \ (__fd, __buf, __len, __off)); #endif __ssp_redirect0(_READ_WRITE_RETURN_TYPE, read, \ (int __fd, void *__buf, size_t __len), (__fd, __buf, __len)); #if __BSD_VISIBLE || __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE >= 4 __ssp_redirect(ssize_t, readlink, (const char *__restrict __path, \ char *__restrict __buf, size_t __len), (__path, __buf, __len)); #endif #if __ATFILE_VISIBLE __ssp_redirect(ssize_t, readlinkat, \ (int __dirfd1, const char *__restrict __path, char *__restrict __buf, size_t __len), \ (__dirfd1, __path, __buf, __len)); #endif __ssp_redirect(int, ttyname_r, (int __fd, char *__buf, size_t __len), \ (__fd, __buf, __len)); __END_DECLS #endif /* __SSP_FORTIFY_LEVEL > 0 */ #endif /* _SSP_UNISTD_H_ */ picolibc-1.7.4/newlib/libc/include/ssp/wchar.h000066400000000000000000000062231414576234500212230ustar00rootroot00000000000000/* Copyright (c) 2017 Yaakov Selkowitz */ #ifndef _SSP_WCHAR_H_ #define _SSP_WCHAR_H_ #include #include #if __SSP_FORTIFY_LEVEL > 0 /* wide character variant, __wlen is number of wchar_t */ #define __ssp_redirect_wc(rtype, fun, args, call, cond, bos) \ __ssp_decl(rtype, fun, args) \ { \ if (cond) \ __ssp_check(__buf, __wlen * sizeof(wchar_t), bos); \ return __ssp_real_(fun) call; \ } #define __ssp_bos_wicheck3(fun) \ __ssp_redirect_wc(wchar_t *, fun, \ (wchar_t *__buf, const wchar_t *__src, size_t __wlen), \ (__buf, __src, __wlen), 1, __ssp_bos0) #define __ssp_bos_wicheck3_restrict(fun) \ __ssp_redirect_wc(wchar_t *, fun, \ (wchar_t *__restrict __buf, const wchar_t *__restrict __src, size_t __wlen), \ (__buf, __src, __wlen), 1, __ssp_bos0) #define __ssp_bos_wicheck2_restrict(fun) \ __ssp_decl(wchar_t *, fun, (wchar_t *__restrict __buf, const wchar_t *__restrict __src)) \ { \ __ssp_check(__buf, (wcslen(__src) + 1) * sizeof(wchar_t), __ssp_bos0); \ return __ssp_real_(fun) (__buf, __src); \ } __BEGIN_DECLS #if __POSIX_VISIBLE >= 200809 __ssp_bos_wicheck2_restrict(wcpcpy) __ssp_bos_wicheck3_restrict(wcpncpy) #endif __ssp_bos_wicheck2_restrict(wcscpy) __ssp_bos_wicheck2_restrict(wcscat) __ssp_bos_wicheck3_restrict(wcsncpy) __ssp_bos_wicheck3_restrict(wcsncat) __ssp_bos_wicheck3_restrict(wmemcpy) __ssp_bos_wicheck3(wmemmove) #if __GNU_VISIBLE __ssp_bos_wicheck3_restrict(wmempcpy) #endif __ssp_redirect_wc(wchar_t *, wmemset, \ (wchar_t *__buf, wchar_t __src, size_t __wlen), \ (__buf, __src, __wlen), 1, __ssp_bos0) __ssp_decl(size_t, wcrtomb, (char *__buf, wchar_t __src, mbstate_t *__ps)) { if (__buf != NULL && __src != L'\0') __ssp_check(__buf, sizeof(wchar_t), __ssp_bos); return __ssp_real_wcrtomb (__buf, __src, __ps); } __ssp_redirect_wc(size_t, mbsrtowcs, \ (wchar_t *__buf, const char **__src, size_t __wlen, mbstate_t *__ps), \ (__buf, __src, __wlen, __ps), __buf != NULL, __ssp_bos) __ssp_redirect_raw(size_t, wcsrtombs, \ (char *__buf, const wchar_t **__src, size_t __len, mbstate_t *__ps), \ (__buf, __src, __len, __ps), __buf != NULL, __ssp_bos) #if __POSIX_VISIBLE >= 200809 __ssp_redirect_wc(size_t, mbsnrtowcs, \ (wchar_t *__buf, const char **__src, size_t __nms, size_t __wlen, mbstate_t *__ps), \ (__buf, __src, __nms, __wlen, __ps), __buf != NULL, __ssp_bos) __ssp_redirect_raw(size_t, wcsnrtombs, \ (char *__buf, const wchar_t **__src, size_t __nwc, size_t __len, mbstate_t *__ps), \ (__buf, __src, __nwc, __len, __ps), __buf != NULL, __ssp_bos) #endif __ssp_decl(wchar_t *, fgetws, (wchar_t *__restrict __buf, int __wlen, __FILE *__restrict __fp)) { if (__wlen > 0) __ssp_check(__buf, (size_t)__wlen * sizeof(wchar_t) , __ssp_bos); return __ssp_real_fgetws(__buf, __wlen, __fp); } #if __GNU_VISIBLE __ssp_decl(wchar_t *, fgetws_unlocked, (wchar_t *__buf, int __wlen, __FILE *__fp)) { if (__wlen > 0) __ssp_check(__buf, (size_t)__wlen * sizeof(wchar_t) , __ssp_bos); return __ssp_real_fgetws_unlocked(__buf, __wlen, __fp); } #endif /* __GNU_VISIBLE */ __END_DECLS #endif /* __SSP_FORTIFY_LEVEL > 0 */ #endif /* _SSP_WCHAR_H_ */ picolibc-1.7.4/newlib/libc/include/stdint.h000066400000000000000000000302201414576234500206110ustar00rootroot00000000000000/* * Copyright (c) 2004, 2005 by * Ralf Corsepius, Ulm/Germany. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #ifndef _STDINT_H #define _STDINT_H #include #include #include #ifdef __cplusplus extern "C" { #endif #ifdef ___int_least8_t_defined typedef __int_least8_t int_least8_t; typedef __uint_least8_t uint_least8_t; #define __int_least8_t_defined 1 #endif #ifdef ___int_least16_t_defined typedef __int_least16_t int_least16_t; typedef __uint_least16_t uint_least16_t; #define __int_least16_t_defined 1 #endif #ifdef ___int_least32_t_defined typedef __int_least32_t int_least32_t; typedef __uint_least32_t uint_least32_t; #define __int_least32_t_defined 1 #endif #ifdef ___int_least64_t_defined typedef __int_least64_t int_least64_t; typedef __uint_least64_t uint_least64_t; #define __int_least64_t_defined 1 #endif /* * Fastest minimum-width integer types * * Assume int to be the fastest type for all types with a width * less than __INT_MAX__ rsp. INT_MAX */ #ifdef __INT_FAST8_TYPE__ typedef __INT_FAST8_TYPE__ int_fast8_t; typedef __UINT_FAST8_TYPE__ uint_fast8_t; #define __int_fast8_t_defined 1 #elif __STDINT_EXP(INT_MAX) >= 0x7f typedef signed int int_fast8_t; typedef unsigned int uint_fast8_t; #define __int_fast8_t_defined 1 #endif #ifdef __INT_FAST16_TYPE__ typedef __INT_FAST16_TYPE__ int_fast16_t; typedef __UINT_FAST16_TYPE__ uint_fast16_t; #define __int_fast16_t_defined 1 #elif __STDINT_EXP(INT_MAX) >= 0x7fff typedef signed int int_fast16_t; typedef unsigned int uint_fast16_t; #define __int_fast16_t_defined 1 #endif #ifdef __INT_FAST32_TYPE__ typedef __INT_FAST32_TYPE__ int_fast32_t; typedef __UINT_FAST32_TYPE__ uint_fast32_t; #define __int_fast32_t_defined 1 #elif __STDINT_EXP(INT_MAX) >= 0x7fffffff typedef signed int int_fast32_t; typedef unsigned int uint_fast32_t; #define __int_fast32_t_defined 1 #endif #ifdef __INT_FAST64_TYPE__ typedef __INT_FAST64_TYPE__ int_fast64_t; typedef __UINT_FAST64_TYPE__ uint_fast64_t; #define __int_fast64_t_defined 1 #elif __STDINT_EXP(INT_MAX) > 0x7fffffff typedef signed int int_fast64_t; typedef unsigned int uint_fast64_t; #define __int_fast64_t_defined 1 #endif /* * Fall back to [u]int_least_t for [u]int_fast_t types * not having been defined, yet. * Leave undefined, if [u]int_least_t should not be available. */ #if !__int_fast8_t_defined #if __int_least8_t_defined typedef int_least8_t int_fast8_t; typedef uint_least8_t uint_fast8_t; #define __int_fast8_t_defined 1 #endif #endif #if !__int_fast16_t_defined #if __int_least16_t_defined typedef int_least16_t int_fast16_t; typedef uint_least16_t uint_fast16_t; #define __int_fast16_t_defined 1 #endif #endif #if !__int_fast32_t_defined #if __int_least32_t_defined typedef int_least32_t int_fast32_t; typedef uint_least32_t uint_fast32_t; #define __int_fast32_t_defined 1 #endif #endif #if !__int_fast64_t_defined #if __int_least64_t_defined typedef int_least64_t int_fast64_t; typedef uint_least64_t uint_fast64_t; #define __int_fast64_t_defined 1 #endif #endif #ifdef __INTPTR_TYPE__ #define INTPTR_MIN (-__INTPTR_MAX__ - 1) #define INTPTR_MAX (__INTPTR_MAX__) #define UINTPTR_MAX (__UINTPTR_MAX__) #elif defined(__PTRDIFF_TYPE__) #define INTPTR_MAX PTRDIFF_MAX #define INTPTR_MIN PTRDIFF_MIN #ifdef __UINTPTR_MAX__ #define UINTPTR_MAX (__UINTPTR_MAX__) #else #define UINTPTR_MAX (2UL * PTRDIFF_MAX + 1) #endif #else /* * Fallback to hardcoded values, * should be valid on cpu's with 32bit int/32bit void* */ #define INTPTR_MAX (__STDINT_EXP(LONG_MAX)) #define INTPTR_MIN (-__STDINT_EXP(LONG_MAX) - 1) #define UINTPTR_MAX (__STDINT_EXP(LONG_MAX) * 2UL + 1) #endif /* Limits of Specified-Width Integer Types */ #ifdef __INT8_MAX__ #define INT8_MIN (-__INT8_MAX__ - 1) #define INT8_MAX (__INT8_MAX__) #define UINT8_MAX (__UINT8_MAX__) #elif defined(__int8_t_defined) #define INT8_MIN (-128) #define INT8_MAX (127) #define UINT8_MAX (255) #endif #ifdef __INT_LEAST8_MAX__ #define INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1) #define INT_LEAST8_MAX (__INT_LEAST8_MAX__) #define UINT_LEAST8_MAX (__UINT_LEAST8_MAX__) #elif defined(__int_least8_t_defined) #define INT_LEAST8_MIN (-128) #define INT_LEAST8_MAX (127) #define UINT_LEAST8_MAX (255) #else #error required type int_least8_t missing #endif #ifdef __INT16_MAX__ #define INT16_MIN (-__INT16_MAX__ - 1) #define INT16_MAX (__INT16_MAX__) #define UINT16_MAX (__UINT16_MAX__) #elif defined(__int16_t_defined) #define INT16_MIN (-32768) #define INT16_MAX (32767) #define UINT16_MAX (65535) #endif #ifdef __INT_LEAST16_MAX__ #define INT_LEAST16_MIN (-__INT_LEAST16_MAX__ - 1) #define INT_LEAST16_MAX (__INT_LEAST16_MAX__) #define UINT_LEAST16_MAX (__UINT_LEAST16_MAX__) #elif defined(__int_least16_t_defined) #define INT_LEAST16_MIN (-32768) #define INT_LEAST16_MAX (32767) #define UINT_LEAST16_MAX (65535) #else #error required type int_least16_t missing #endif #ifdef __INT32_MAX__ #define INT32_MIN (-__INT32_MAX__ - 1) #define INT32_MAX (__INT32_MAX__) #define UINT32_MAX (__UINT32_MAX__) #elif defined(__int32_t_defined) #if defined (_INT32_EQ_LONG) #define INT32_MIN (-2147483647L-1) #define INT32_MAX (2147483647L) #define UINT32_MAX (4294967295UL) #else #define INT32_MIN (-2147483647-1) #define INT32_MAX (2147483647) #define UINT32_MAX (4294967295U) #endif #endif #ifdef __INT_LEAST32_MAX__ #define INT_LEAST32_MIN (-__INT_LEAST32_MAX__ - 1) #define INT_LEAST32_MAX (__INT_LEAST32_MAX__) #define UINT_LEAST32_MAX (__UINT_LEAST32_MAX__) #elif defined(__int_least32_t_defined) #if defined (_INT32_EQ_LONG) #define INT_LEAST32_MIN (-2147483647L-1) #define INT_LEAST32_MAX (2147483647L) #define UINT_LEAST32_MAX (4294967295UL) #else #define INT_LEAST32_MIN (-2147483647-1) #define INT_LEAST32_MAX (2147483647) #define UINT_LEAST32_MAX (4294967295U) #endif #else #error required type int_least32_t missing #endif #ifdef __INT64_MAX__ #define INT64_MIN (-__INT64_MAX__ - 1) #define INT64_MAX (__INT64_MAX__) #define UINT64_MAX (__UINT64_MAX__) #elif defined(__int64_t_defined) #if __have_long64 #define INT64_MIN (-9223372036854775807L-1L) #define INT64_MAX (9223372036854775807L) #define UINT64_MAX (18446744073709551615U) #elif __have_longlong64 #define INT64_MIN (-9223372036854775807LL-1LL) #define INT64_MAX (9223372036854775807LL) #define UINT64_MAX (18446744073709551615ULL) #endif #endif #ifdef __INT_LEAST64_MAX__ #define INT_LEAST64_MIN (-__INT_LEAST64_MAX__ - 1) #define INT_LEAST64_MAX (__INT_LEAST64_MAX__) #define UINT_LEAST64_MAX (__UINT_LEAST64_MAX__) #elif defined(__int_least64_t_defined) #if __have_long64 #define INT_LEAST64_MIN (-9223372036854775807L-1L) #define INT_LEAST64_MAX (9223372036854775807L) #define UINT_LEAST64_MAX (18446744073709551615U) #elif __have_longlong64 #define INT_LEAST64_MIN (-9223372036854775807LL-1LL) #define INT_LEAST64_MAX (9223372036854775807LL) #define UINT_LEAST64_MAX (18446744073709551615ULL) #endif #endif #ifdef __INT_FAST8_MAX__ #define INT_FAST8_MIN (-__INT_FAST8_MAX__ - 1) #define INT_FAST8_MAX (__INT_FAST8_MAX__) #define UINT_FAST8_MAX (__UINT_FAST8_MAX__) #elif defined(__int_fast8_t_defined) #if __STDINT_EXP(INT_MAX) >= 0x7f #define INT_FAST8_MIN (-__STDINT_EXP(INT_MAX)-1) #define INT_FAST8_MAX (__STDINT_EXP(INT_MAX)) #define UINT_FAST8_MAX (__STDINT_EXP(INT_MAX)*2U+1U) #else #define INT_FAST8_MIN INT_LEAST8_MIN #define INT_FAST8_MAX INT_LEAST8_MAX #define UINT_FAST8_MAX UINT_LEAST8_MAX #endif #endif #ifdef __INT_FAST16_MAX__ #define INT_FAST16_MIN (-__INT_FAST16_MAX__ - 1) #define INT_FAST16_MAX (__INT_FAST16_MAX__) #define UINT_FAST16_MAX (__UINT_FAST16_MAX__) #elif defined(__int_fast16_t_defined) #if __STDINT_EXP(INT_MAX) >= 0x7fff #define INT_FAST16_MIN (-__STDINT_EXP(INT_MAX)-1) #define INT_FAST16_MAX (__STDINT_EXP(INT_MAX)) #define UINT_FAST16_MAX (__STDINT_EXP(INT_MAX)*2U+1U) #else #define INT_FAST16_MIN INT_LEAST16_MIN #define INT_FAST16_MAX INT_LEAST16_MAX #define UINT_FAST16_MAX UINT_LEAST16_MAX #endif #endif #ifdef __INT_FAST32_MAX__ #define INT_FAST32_MIN (-__INT_FAST32_MAX__ - 1) #define INT_FAST32_MAX (__INT_FAST32_MAX__) #define UINT_FAST32_MAX (__UINT_FAST32_MAX__) #elif defined(__int_fast32_t_defined) #if __STDINT_EXP(INT_MAX) >= 0x7fffffff #define INT_FAST32_MIN (-__STDINT_EXP(INT_MAX)-1) #define INT_FAST32_MAX (__STDINT_EXP(INT_MAX)) #define UINT_FAST32_MAX (__STDINT_EXP(INT_MAX)*2U+1U) #else #define INT_FAST32_MIN INT_LEAST32_MIN #define INT_FAST32_MAX INT_LEAST32_MAX #define UINT_FAST32_MAX UINT_LEAST32_MAX #endif #endif #ifdef __INT_FAST64_MAX__ #define INT_FAST64_MIN (-__INT_FAST64_MAX__ - 1) #define INT_FAST64_MAX (__INT_FAST64_MAX__) #define UINT_FAST64_MAX (__UINT_FAST64_MAX__) #elif defined(__int_fast64_t_defined) #if __STDINT_EXP(INT_MAX) > 0x7fffffff #define INT_FAST64_MIN (-__STDINT_EXP(INT_MAX)-1) #define INT_FAST64_MAX (__STDINT_EXP(INT_MAX)) #define UINT_FAST64_MAX (__STDINT_EXP(INT_MAX)*2U+1U) #else #define INT_FAST64_MIN INT_LEAST64_MIN #define INT_FAST64_MAX INT_LEAST64_MAX #define UINT_FAST64_MAX UINT_LEAST64_MAX #endif #endif #ifdef __INTMAX_MAX__ #define INTMAX_MAX (__INTMAX_MAX__) #define INTMAX_MIN (-INTMAX_MAX - 1) #elif defined(__INTMAX_TYPE__) /* All relevant GCC versions prefer long to long long for intmax_t. */ #define INTMAX_MAX INT64_MAX #define INTMAX_MIN INT64_MIN #endif #ifdef __UINTMAX_MAX__ #define UINTMAX_MAX (__UINTMAX_MAX__) #elif defined(__UINTMAX_TYPE__) /* All relevant GCC versions prefer long to long long for intmax_t. */ #define UINTMAX_MAX UINT64_MAX #endif /* This must match size_t in stddef.h, currently long unsigned int */ #ifdef __SIZE_MAX__ #define SIZE_MAX (__SIZE_MAX__) #else #define SIZE_MAX (__STDINT_EXP(LONG_MAX) * 2UL + 1) #endif /* This must match sig_atomic_t in (currently int) */ #define SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1) #define SIG_ATOMIC_MAX (__STDINT_EXP(INT_MAX)) /* This must match ptrdiff_t in (currently long int) */ #ifdef __PTRDIFF_MAX__ #define PTRDIFF_MAX (__PTRDIFF_MAX__) #else #define PTRDIFF_MAX (__STDINT_EXP(LONG_MAX)) #endif #define PTRDIFF_MIN (-PTRDIFF_MAX - 1) /* This must match definition in */ #ifndef WCHAR_MIN #ifdef __WCHAR_MIN__ #define WCHAR_MIN (__WCHAR_MIN__) #elif defined(__WCHAR_UNSIGNED__) || (L'\0' - 1 > 0) #define WCHAR_MIN (0 + L'\0') #else #define WCHAR_MIN (-0x7fffffff - 1 + L'\0') #endif #endif /* This must match definition in */ #ifndef WCHAR_MAX #ifdef __WCHAR_MAX__ #define WCHAR_MAX (__WCHAR_MAX__) #elif defined(__WCHAR_UNSIGNED__) || (L'\0' - 1 > 0) #define WCHAR_MAX (0xffffffffu + L'\0') #else #define WCHAR_MAX (0x7fffffff + L'\0') #endif #endif /* wint_t is unsigned int on almost all GCC targets. */ #ifdef __WINT_MAX__ #define WINT_MAX (__WINT_MAX__) #else #define WINT_MAX (__STDINT_EXP(INT_MAX) * 2U + 1U) #endif #ifdef __WINT_MIN__ #define WINT_MIN (__WINT_MIN__) #else #define WINT_MIN (0U) #endif /** Macros for minimum-width integer constant expressions */ #ifdef __INT8_C #define INT8_C(x) __INT8_C(x) #define UINT8_C(x) __UINT8_C(x) #else #define INT8_C(x) x #if __STDINT_EXP(INT_MAX) > 0x7f #define UINT8_C(x) x #else #define UINT8_C(x) x##U #endif #endif #ifdef __INT16_C #define INT16_C(x) __INT16_C(x) #define UINT16_C(x) __UINT16_C(x) #else #define INT16_C(x) x #if __STDINT_EXP(INT_MAX) > 0x7fff #define UINT16_C(x) x #else #define UINT16_C(x) x##U #endif #endif #ifdef __INT32_C #define INT32_C(x) __INT32_C(x) #define UINT32_C(x) __UINT32_C(x) #else #if defined (_INT32_EQ_LONG) #define INT32_C(x) x##L #define UINT32_C(x) x##UL #else #define INT32_C(x) x #define UINT32_C(x) x##U #endif #endif #ifdef __INT64_C #define INT64_C(x) __INT64_C(x) #define UINT64_C(x) __UINT64_C(x) #else #if __int64_t_defined #if __have_long64 #define INT64_C(x) x##L #define UINT64_C(x) x##UL #else #define INT64_C(x) x##LL #define UINT64_C(x) x##ULL #endif #endif #endif /** Macros for greatest-width integer constant expression */ #ifdef __INTMAX_C #define INTMAX_C(x) __INTMAX_C(x) #define UINTMAX_C(x) __UINTMAX_C(x) #else #if __have_long64 #define INTMAX_C(x) x##L #define UINTMAX_C(x) x##UL #else #define INTMAX_C(x) x##LL #define UINTMAX_C(x) x##ULL #endif #endif #ifdef __cplusplus } #endif #endif /* _STDINT_H */ picolibc-1.7.4/newlib/libc/include/stdlib.h000066400000000000000000000261351414576234500205770ustar00rootroot00000000000000/* Copyright (c) 1991, 1993 The Regents of the University of California. All rights reserved. c) UNIX System Laboratories, Inc. All or some portions of this file are derived from material licensed to the University of California by American Telephone and Telegraph Co. or Unix System Laboratories, Inc. and are reproduced herein with the permission of UNIX System Laboratories, Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * stdlib.h * * Definitions for common types, variables, and functions. */ #ifndef _STDLIB_H_ #define _STDLIB_H_ #include #include "_ansi.h" #define __need_size_t #define __need_wchar_t #define __need_NULL #include #include #include #ifndef __STRICT_ANSI__ #include #endif #ifdef __CYGWIN__ #include #endif #if __GNU_VISIBLE #include #endif _BEGIN_STD_C typedef struct { int quot; /* quotient */ int rem; /* remainder */ } div_t; typedef struct { long quot; /* quotient */ long rem; /* remainder */ } ldiv_t; #if __ISO_C_VISIBLE >= 1999 typedef struct { long long int quot; /* quotient */ long long int rem; /* remainder */ } lldiv_t; #endif #ifndef __compar_fn_t_defined #define __compar_fn_t_defined typedef int (*__compar_fn_t) (const void *, const void *); #endif #define EXIT_FAILURE 1 #define EXIT_SUCCESS 0 #define RAND_MAX __RAND_MAX size_t __locale_mb_cur_max (void); #define MB_CUR_MAX __locale_mb_cur_max() void abort (void) _ATTRIBUTE ((__noreturn__)); int abs (int); #if __BSD_VISIBLE __uint32_t arc4random (void); __uint32_t arc4random_uniform (__uint32_t); void arc4random_buf (void *, size_t); #endif #define ATEXIT_MAX 32 int atexit (void (*__func)(void)); double atof (const char *__nptr); #if __MISC_VISIBLE float atoff (const char *__nptr); #endif int atoi (const char *__nptr); long atol (const char *__nptr); void * bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size, __compar_fn_t _compar); void *calloc(size_t, size_t) __malloc_like __result_use_check __alloc_size2(1, 2) _NOTHROW; div_t div (int __numer, int __denom); void exit (int __status) _ATTRIBUTE ((__noreturn__)); void free (void *) _NOTHROW; char * getenv (const char *__string); #if __GNU_VISIBLE char * secure_getenv (const char *__string); #endif char * _findenv (const char *, int *); #if __POSIX_VISIBLE >= 200809 extern char *suboptarg; /* getsubopt(3) external variable */ int getsubopt (char **, char * const *, char **); #endif long labs (long); ldiv_t ldiv (long __numer, long __denom); void *malloc(size_t) __malloc_like __result_use_check __alloc_size(1) _NOTHROW; int mblen (const char *, size_t); int mbtowc (wchar_t *__restrict, const char *__restrict, size_t); int wctomb (char *, wchar_t); size_t mbstowcs (wchar_t *__restrict, const char *__restrict, size_t); size_t wcstombs (char *__restrict, const wchar_t *__restrict, size_t); #if __BSD_VISIBLE || __POSIX_VISIBLE >= 200809 char * mkdtemp (char *); #endif #if __GNU_VISIBLE int mkostemp (char *, int); int mkostemps (char *, int, int); #endif #if __MISC_VISIBLE || __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE >= 4 int mkstemp (char *); #endif #if __MISC_VISIBLE int mkstemps (char *, int); #endif #if __BSD_VISIBLE || (__XSI_VISIBLE >= 4 && __POSIX_VISIBLE < 200112) char * mktemp (char *) _ATTRIBUTE ((__deprecated__("the use of `mktemp' is dangerous; use `mkstemp' instead"))); #endif void qsort (void *__base, size_t __nmemb, size_t __size, __compar_fn_t _compar); int rand (void); void *realloc(void *, size_t) __result_use_check __alloc_size(2) _NOTHROW; #if __BSD_VISIBLE void *reallocarray(void *, size_t, size_t) __result_use_check __alloc_size2(2, 3); void *reallocf(void *, size_t) __result_use_check __alloc_size(2); #endif #if __BSD_VISIBLE || __XSI_VISIBLE >= 4 char * realpath (const char *__restrict path, char *__restrict resolved_path); #endif #if __BSD_VISIBLE int rpmatch (const char *response); #endif #if __XSI_VISIBLE void setkey (const char *__key); #endif void srand (unsigned __seed); double strtod (const char *__restrict __n, char **__restrict __end_PTR); #ifdef TINY_STDIO int strfromd(char *__restrict str, size_t n, const char *__restrict format, double fp); #endif #if __ISO_C_VISIBLE >= 1999 float strtof (const char *__restrict __n, char **__restrict __end_PTR); #ifdef TINY_STDIO int strfromf(char *__restrict str, size_t n, const char *__restrict format, float fp); #endif #endif #if __MISC_VISIBLE /* the following strtodf interface is deprecated...use strtof instead */ # ifndef strtodf # define strtodf strtof # endif #endif long strtol (const char *__restrict __n, char **__restrict __end_PTR, int __base); unsigned long strtoul (const char *__restrict __n, char **__restrict __end_PTR, int __base); #if __GNU_VISIBLE double strtod_l (const char *__restrict, char **__restrict, locale_t); float strtof_l (const char *__restrict, char **__restrict, locale_t); #ifdef _HAVE_LONG_DOUBLE extern long double strtold_l (const char *__restrict, char **__restrict, locale_t); #endif /* _HAVE_LONG_DOUBLE */ long strtol_l (const char *__restrict, char **__restrict, int, locale_t); unsigned long strtoul_l (const char *__restrict, char **__restrict, int, locale_t __loc); long long strtoll_l (const char *__restrict, char **__restrict, int, locale_t); unsigned long long strtoull_l (const char *__restrict, char **__restrict, int, locale_t __loc); #endif int system (const char *__string); #if __SVID_VISIBLE || __XSI_VISIBLE >= 4 long a64l (const char *__input); char * l64a (long __input); #endif #if __MISC_VISIBLE int on_exit (void (*__func)(int, void *),void *__arg); #endif #if __ISO_C_VISIBLE >= 1999 void _Exit (int __status) _ATTRIBUTE ((__noreturn__)); #endif #if __SVID_VISIBLE || __XSI_VISIBLE int putenv (char *__string); #endif #if __BSD_VISIBLE || __POSIX_VISIBLE >= 200112 int setenv (const char *__string, const char *__value, int __overwrite); #endif #if __XSI_VISIBLE >= 4 char * gcvt (double,int,char *); char * gcvtf (float,int,char *); char * fcvt (double,int,int *,int *); char * fcvtf (float,int,int *,int *); char * ecvt (double,int,int *,int *); char * ecvtbuf (double, int, int*, int*, char *); char * fcvtbuf (double, int, int*, int*, char *); char * ecvtf (float,int,int *,int *); #endif char * __itoa (int, char *, int); char * __utoa (unsigned, char *, int); #if __MISC_VISIBLE char * itoa (int, char *, int); char * utoa (unsigned, char *, int); #endif #if __POSIX_VISIBLE int rand_r (unsigned *__seed); #endif #if __SVID_VISIBLE || __XSI_VISIBLE struct _rand48; double drand48 (void); double _drand48_r (struct _rand48 *); double erand48 (unsigned short [3]); double _erand48_r (struct _rand48 *, unsigned short [3]); long jrand48 (unsigned short [3]); long _jrand48_r (struct _rand48 *, unsigned short [3]); void lcong48 (unsigned short [7]); void _lcong48_r (struct _rand48 *, unsigned short [7]); long lrand48 (void); long _lrand48_r (struct _rand48 *); long mrand48 (void); long _mrand48_r (struct _rand48 *); long nrand48 (unsigned short [3]); long _nrand48_r (struct _rand48 *, unsigned short [3]); unsigned short * seed48 (unsigned short [3]); unsigned short * _seed48_r (struct _rand48 *, unsigned short [3]); void srand48 (long); void _srand48_r (struct _rand48 *, long); #endif /* __SVID_VISIBLE || __XSI_VISIBLE */ #if __SVID_VISIBLE || __XSI_VISIBLE >= 4 || __BSD_VISIBLE char * initstate (unsigned, char *, size_t); long random (void); char * setstate (char *); void srandom (unsigned); #endif #if __ISO_C_VISIBLE >= 1999 long long atoll (const char *__nptr); #endif #if __ISO_C_VISIBLE >= 1999 long long llabs (long long); lldiv_t lldiv (long long __numer, long long __denom); long long strtoll (const char *__restrict __n, char **__restrict __end_PTR, int __base); #endif #if __ISO_C_VISIBLE >= 1999 unsigned long long strtoull (const char *__restrict __n, char **__restrict __end_PTR, int __base); #endif #ifndef __CYGWIN__ #if __MISC_VISIBLE void cfree (void *); #endif #if __BSD_VISIBLE || __POSIX_VISIBLE >= 200112 int unsetenv (const char *__string); #endif #endif /* !__CYGWIN__ */ #if __POSIX_VISIBLE >= 200112 int posix_memalign (void **, size_t, size_t) __nonnull((1)) __result_use_check; #endif char * __dtoa (double, int, int, int *, int*, char**); char * __ldtoa (long double, int, int, int *, int *, char **); void __eprintf (const char *, const char *, unsigned int, const char *); /* There are two common qsort_r variants. If you request _BSD_SOURCE, you get the BSD version; otherwise you get the GNU version. We want that #undef qsort_r will still let you invoke the underlying function, but that requires gcc support. */ #if __GNU_VISIBLE void qsort_r (void *__base, size_t __nmemb, size_t __size, int (*_compar)(const void *, const void *, void *), void *__thunk); #elif __BSD_VISIBLE # ifdef __GNUC__ void qsort_r (void *__base, size_t __nmemb, size_t __size, void *__thunk, int (*_compar)(void *, const void *, const void *)) __asm__ (__ASMNAME ("__bsd_qsort_r")); # else void __bsd_qsort_r (void *__base, size_t __nmemb, size_t __size, void *__thunk, int (*_compar)(void *, const void *, const void *)); # define qsort_r __bsd_qsort_r # endif #endif /* On platforms where long double equals double. */ #ifdef _HAVE_LONG_DOUBLE #if __ISO_C_VISIBLE >= 1999 extern long double strtold (const char *__restrict, char **__restrict); #endif #endif /* _HAVE_LONG_DOUBLE */ /* * If we're in a mode greater than C99, expose C11 functions. */ #if __ISO_C_VISIBLE >= 2011 void * aligned_alloc(size_t, size_t) __malloc_like __alloc_align(1) __alloc_size(2) __result_use_check; int at_quick_exit(void (*)(void)); _Noreturn void quick_exit(int); #endif /* __ISO_C_VISIBLE >= 2011 */ _END_STD_C #if __SSP_FORTIFY_LEVEL > 0 #include #endif #endif /* _STDLIB_H_ */ picolibc-1.7.4/newlib/libc/include/string.h000066400000000000000000000162201414576234500206160ustar00rootroot00000000000000/* Copyright (c) 1991, 1993 The Regents of the University of California. All rights reserved. c) UNIX System Laboratories, Inc. All or some portions of this file are derived from material licensed to the University of California by American Telephone and Telegraph Co. or Unix System Laboratories, Inc. and are reproduced herein with the permission of UNIX System Laboratories, Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * string.h * * Definitions for memory and string functions. */ #ifndef _STRING_H_ #define _STRING_H_ #include "_ansi.h" #include #include #define __need_size_t #define __need_NULL #include #if __POSIX_VISIBLE >= 200809 #include #endif #if __BSD_VISIBLE #include #endif _BEGIN_STD_C void * memchr (const void *, int, size_t); int memcmp (const void *, const void *, size_t); void * memcpy (void *__restrict, const void *__restrict, size_t); void * memmove (void *, const void *, size_t); void * memset (void *, int, size_t); char *strcat (char *__restrict, const char *__restrict); char *strchr (const char *, int); int strcmp (const char *, const char *); int strcoll (const char *, const char *); char *strcpy (char *__restrict, const char *__restrict); size_t strcspn (const char *, const char *); char *strerror (int); size_t strlen (const char *); char *strncat (char *__restrict, const char *__restrict, size_t); int strncmp (const char *, const char *, size_t); char *strncpy (char *__restrict, const char *__restrict, size_t); char *strpbrk (const char *, const char *); char *strrchr (const char *, int); size_t strspn (const char *, const char *); char *strstr (const char *, const char *); #ifndef _REENT_ONLY char *strtok (char *__restrict, const char *__restrict); #endif size_t strxfrm (char *__restrict, const char *__restrict, size_t); #if __POSIX_VISIBLE >= 200809 int strcoll_l (const char *, const char *, locale_t); char *strerror_l (int, locale_t); size_t strxfrm_l (char *__restrict, const char *__restrict, size_t, locale_t); #endif #if __MISC_VISIBLE || __POSIX_VISIBLE char *strtok_r (char *__restrict, const char *__restrict, char **__restrict); #endif #if __BSD_VISIBLE int timingsafe_bcmp (const void *, const void *, size_t); int timingsafe_memcmp (const void *, const void *, size_t); #endif #if __MISC_VISIBLE || __POSIX_VISIBLE void * memccpy (void *__restrict, const void *__restrict, int, size_t); #endif #if __GNU_VISIBLE void * mempcpy (void *, const void *, size_t); void * memmem (const void *, size_t, const void *, size_t); void * memrchr (const void *, int, size_t); void * rawmemchr (const void *, int); #endif #if __POSIX_VISIBLE >= 200809 char *stpcpy (char *__restrict, const char *__restrict); char *stpncpy (char *__restrict, const char *__restrict, size_t); #endif #if __GNU_VISIBLE char *strcasestr (const char *, const char *); char *strchrnul (const char *, int); #endif #if __MISC_VISIBLE || __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE >= 4 char *strdup (const char *) __malloc_like __result_use_check; #endif #if __POSIX_VISIBLE >= 200809 char *strndup (const char *, size_t) __malloc_like __result_use_check; #endif /* There are two common strerror_r variants. If you request _GNU_SOURCE, you get the GNU version; otherwise you get the POSIX version. POSIX requires that #undef strerror_r will still let you invoke the underlying function, but that requires gcc support. */ #if __GNU_VISIBLE char *strerror_r (int, char *, size_t); #elif __POSIX_VISIBLE >= 200112 # ifdef __GNUC__ int strerror_r (int, char *, size_t) #ifdef __ASMNAME __asm__ (__ASMNAME ("__xpg_strerror_r")) #endif ; # else int __xpg_strerror_r (int, char *, size_t); # define strerror_r __xpg_strerror_r # endif #endif /* Reentrant version of strerror. */ char * _strerror_r (int, int, int *); #if __BSD_VISIBLE size_t strlcat (char *, const char *, size_t); size_t strlcpy (char *, const char *, size_t); #endif #if __POSIX_VISIBLE >= 200809 size_t strnlen (const char *, size_t); #endif #if __BSD_VISIBLE char *strsep (char **, const char *); #endif #if __BSD_VISIBLE char *strnstr(const char *, const char *, size_t) __pure; #endif #if __MISC_VISIBLE char *strlwr (char *); char *strupr (char *); #endif #ifndef DEFS_H /* Kludge to work around problem compiling in gdb */ char *strsignal (int __signo); #endif #ifdef __CYGWIN__ int strtosigno (const char *__name); #endif #if __GNU_VISIBLE int strverscmp (const char *, const char *); #endif #if __GNU_VISIBLE && defined(__GNUC__) #define strdupa(__s) \ (__extension__ ({const char *__sin = (__s); \ size_t __len = strlen (__sin) + 1; \ char * __sout = (char *) __builtin_alloca (__len); \ (char *) memcpy (__sout, __sin, __len);})) #define strndupa(__s, __n) \ (__extension__ ({const char *__sin = (__s); \ size_t __len = strnlen (__sin, (__n)) + 1; \ char *__sout = (char *) __builtin_alloca (__len); \ __sout[__len-1] = '\0'; \ (char *) memcpy (__sout, __sin, __len-1);})) #endif /* __GNU_VISIBLE && __GNUC__ */ /* There are two common basename variants. If you do NOT #include and you do #define _GNU_SOURCE #include you get the GNU version. Otherwise you get the POSIX versionfor which you should #include i for the function prototype. POSIX requires that #undef basename will still let you invoke the underlying function. However, this also implies that the POSIX version is used in this case. That's made sure here. */ #if __GNU_VISIBLE && !defined(basename) # ifdef __ASMNAME # define basename basename char *__nonnull ((1)) basename (const char *) __asm__(__ASMNAME("__gnu_basename")); # else # define basename(s) (__gnu_basename(s)) # endif #endif #include _END_STD_C #if __SSP_FORTIFY_LEVEL > 0 #include #endif #endif /* _STRING_H_ */ picolibc-1.7.4/newlib/libc/include/strings.h000066400000000000000000000056351414576234500210110ustar00rootroot00000000000000/*- * Copyright (c) 2002 Mike Barcroft * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $FreeBSD: head/include/strings.h 272673 2014-10-07 04:54:11Z delphij $ */ #ifndef _STRINGS_H_ #define _STRINGS_H_ #include #include #if __POSIX_VISIBLE >= 200809 #include #endif // As per the GCC source, _SIZE_T_DECLARD is FreeBSD 5 // So: Also check for _SIZE_T #if !defined(_SIZE_T_DECLARED) && !defined(_SIZE_T) typedef __size_t size_t; #endif #ifndef _SIZE_T_DECLARED #define _SIZE_T_DECLARED #endif #ifndef _SIZE_T #define _SIZE_T #endif __BEGIN_DECLS #if __BSD_VISIBLE || __POSIX_VISIBLE <= 200112 int bcmp(const void *, const void *, size_t) __pure; /* LEGACY */ void bcopy(const void *, void *, size_t); /* LEGACY */ void bzero(void *, size_t); /* LEGACY */ #endif #if __BSD_VISIBLE void explicit_bzero(void *, size_t); #endif #if __MISC_VISIBLE || __POSIX_VISIBLE < 200809 || __XSI_VISIBLE >= 700 int ffs(int) __pure2; #endif #if __BSD_VISIBLE int ffsl(long) __pure2; int ffsll(long long) __pure2; int fls(int) __pure2; int flsl(long) __pure2; int flsll(long long) __pure2; #endif #if __BSD_VISIBLE || __POSIX_VISIBLE <= 200112 char *index(const char *, int) __pure; /* LEGACY */ char *rindex(const char *, int) __pure; /* LEGACY */ #endif int strcasecmp(const char *, const char *) __pure; int strncasecmp(const char *, const char *, size_t) __pure; #if __POSIX_VISIBLE >= 200809 int strcasecmp_l (const char *, const char *, locale_t); int strncasecmp_l (const char *, const char *, size_t, locale_t); #endif __END_DECLS #if __SSP_FORTIFY_LEVEL > 0 #include #endif #endif /* _STRINGS_H_ */ picolibc-1.7.4/newlib/libc/include/sys/000077500000000000000000000000001414576234500177545ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/include/sys/_default_fcntl.h000066400000000000000000000162321414576234500231020ustar00rootroot00000000000000/* Copyright (c) 2007 Jeff Johnston */ #ifndef _SYS__DEFAULT_FCNTL_H_ #ifdef __cplusplus extern "C" { #endif #define _SYS__DEFAULT_FCNTL_H_ #include <_ansi.h> #include #define _FOPEN (-1) /* from sys/file.h, kernel use only */ #define _FREAD 0x0001 /* read enabled */ #define _FWRITE 0x0002 /* write enabled */ #define _FAPPEND 0x0400 /* append (writes guaranteed at the end) */ #define _FMARK 0x0010 /* internal; mark during gc() */ #define _FDEFER 0x0020 /* internal; defer for next gc pass */ #define _FASYNC 0x0008 /* signal pgrp when data ready */ #define _FSHLOCK 0x0080 /* BSD flock() shared lock present */ #define _FEXLOCK 0x0100 /* BSD flock() exclusive lock present */ #define _FCREAT 0x0040 /* open with file create */ #define _FTRUNC 0x0200 /* open with truncation */ #define _FEXCL 0x0800 /* error on open if file exists */ #define _FNBIO 0x1000 /* non blocking I/O (sys5 style) */ #define _FSYNC 0x2000 /* do all writes synchronously */ #define _FNONBLOCK 0x4000 /* non blocking I/O (POSIX style) */ #define _FNDELAY _FNONBLOCK /* non blocking I/O (4.2 style) */ #define _FNOCTTY 0x8000 /* don't assign a ctty on this open */ #if defined (__CYGWIN__) #define _FBINARY 0x10000 #define _FTEXT 0x20000 #endif #define _FNOINHERIT 0x40000 #define _FDIRECT 0x80000 #define _FNOFOLLOW 0x100000 #define _FDIRECTORY 0x200000 #define _FEXECSRCH 0x400000 #if defined (__CYGWIN__) #define _FTMPFILE 0x800000 #define _FNOATIME 0x1000000 #define _FPATH 0x2000000 #endif #define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR) /* * Flag values for open(2) and fcntl(2) * The kernel adds 1 to the open modes to turn it into some * combination of FREAD and FWRITE. */ #define O_RDONLY 0 /* +1 == FREAD */ #define O_WRONLY 1 /* +1 == FWRITE */ #define O_RDWR 2 /* +1 == FREAD|FWRITE */ #define O_APPEND _FAPPEND #define O_CREAT _FCREAT #define O_TRUNC _FTRUNC #define O_EXCL _FEXCL #define O_SYNC _FSYNC /* O_NDELAY _FNDELAY set in include/fcntl.h */ /* O_NDELAY _FNBIO set in include/fcntl.h */ #define O_NONBLOCK _FNONBLOCK #define O_NOCTTY _FNOCTTY /* POSIX-1.2008 specific flags */ #if __POSIX_VISIBLE >= 200809 #define O_CLOEXEC _FNOINHERIT #define O_NOFOLLOW _FNOFOLLOW #define O_DIRECTORY _FDIRECTORY #define O_EXEC _FEXECSRCH #define O_SEARCH _FEXECSRCH #endif #if __BSD_VISIBLE #define O_DIRECT _FDIRECT #endif #if defined (__CYGWIN__) #define O_BINARY _FBINARY #define O_TEXT _FTEXT #define O_DSYNC _FSYNC #define O_RSYNC _FSYNC /* Linux-specific flags */ #if __GNU_VISIBLE #define O_TMPFILE _FTMPFILE #define O_NOATIME _FNOATIME #define O_PATH _FPATH #endif #endif #if __MISC_VISIBLE /* * Flags that work for fcntl(fd, F_SETFL, FXXXX) */ #define FAPPEND _FAPPEND #define FSYNC _FSYNC #define FASYNC _FASYNC #define FNBIO _FNBIO #define FNONBIO _FNONBLOCK /* XXX fix to be NONBLOCK everywhere */ #define FNDELAY _FNDELAY /* * Flags that are disallowed for fcntl's (FCNTLCANT); * used for opens, internal state, or locking. */ #define FREAD _FREAD #define FWRITE _FWRITE #define FMARK _FMARK #define FDEFER _FDEFER #define FSHLOCK _FSHLOCK #define FEXLOCK _FEXLOCK /* * The rest of the flags, used only for opens */ #define FOPEN _FOPEN #define FCREAT _FCREAT #define FTRUNC _FTRUNC #define FEXCL _FEXCL #define FNOCTTY _FNOCTTY #endif /* __MISC_VISIBLE */ #if __BSD_VISIBLE #define FNONBLOCK _FNONBLOCK #endif /* __BSD_VISIBLE */ /* XXX close on exec request; must match UF_EXCLOSE in user.h */ #define FD_CLOEXEC 1 /* posix */ /* fcntl(2) requests */ #define F_DUPFD 0 /* Duplicate fildes */ #define F_GETFD 1 /* Get fildes flags (close on exec) */ #define F_SETFD 2 /* Set fildes flags (close on exec) */ #define F_GETFL 3 /* Get file flags */ #define F_SETFL 4 /* Set file flags */ #if __BSD_VISIBLE || __POSIX_VISIBLE >= 200112 #define F_GETOWN 5 /* Get owner - for ASYNC */ #define F_SETOWN 6 /* Set owner - for ASYNC */ #endif /* __BSD_VISIBLE || __POSIX_VISIBLE >= 200112 */ #define F_GETLK 7 /* Get record-locking information */ #define F_SETLK 8 /* Set or Clear a record-lock (Non-Blocking) */ #define F_SETLKW 9 /* Set or Clear a record-lock (Blocking) */ #if __MISC_VISIBLE #define F_RGETLK 10 /* Test a remote lock to see if it is blocked */ #define F_RSETLK 11 /* Set or unlock a remote lock */ #define F_CNVT 12 /* Convert a fhandle to an open fd */ #define F_RSETLKW 13 /* Set or Clear remote record-lock(Blocking) */ #endif /* __MISC_VISIBLE */ #if __POSIX_VISIBLE >= 200809 #define F_DUPFD_CLOEXEC 14 /* As F_DUPFD, but set close-on-exec flag */ #endif /* fcntl(2) flags (l_type field of flock structure) */ #define F_RDLCK 1 /* read lock */ #define F_WRLCK 2 /* write lock */ #define F_UNLCK 3 /* remove lock(s) */ #if __MISC_VISIBLE #define F_UNLKSYS 4 /* remove remote locks for a given system */ #endif /* __MISC_VISIBLE */ #if __BSD_VISIBLE || __POSIX_VISIBLE >= 200809 /* Special descriptor value to denote the cwd in calls to openat(2) etc. */ #define AT_FDCWD -2 /* Flag values for faccessat2) et al. */ #define AT_EACCESS 1 #define AT_SYMLINK_NOFOLLOW 2 #define AT_SYMLINK_FOLLOW 4 #define AT_REMOVEDIR 8 #if __GNU_VISIBLE #define AT_EMPTY_PATH 16 #endif #endif #if __BSD_VISIBLE /* lock operations for flock(2) */ #define LOCK_SH 0x01 /* shared file lock */ #define LOCK_EX 0x02 /* exclusive file lock */ #define LOCK_NB 0x04 /* don't block when locking */ #define LOCK_UN 0x08 /* unlock file */ #endif /*#include */ #ifndef __CYGWIN__ /* file segment locking set data type - information passed to system by user */ struct flock { short l_type; /* F_RDLCK, F_WRLCK, or F_UNLCK */ short l_whence; /* flag to choose starting offset */ long l_start; /* relative offset, in bytes */ long l_len; /* length, in bytes; 0 means lock to EOF */ short l_pid; /* returned with F_GETLK */ short l_xxx; /* reserved for future use */ }; #endif /* __CYGWIN__ */ #if __MISC_VISIBLE /* extended file segment locking set data type */ struct eflock { short l_type; /* F_RDLCK, F_WRLCK, or F_UNLCK */ short l_whence; /* flag to choose starting offset */ long l_start; /* relative offset, in bytes */ long l_len; /* length, in bytes; 0 means lock to EOF */ short l_pid; /* returned with F_GETLK */ short l_xxx; /* reserved for future use */ long l_rpid; /* Remote process id wanting this lock */ long l_rsys; /* Remote system id wanting this lock */ }; #endif /* __MISC_VISIBLE */ #include #include /* sigh. for the mode bits for open/creat */ extern int open (const char *, int, ...); #if __ATFILE_VISIBLE extern int openat (int, const char *, int, ...); #endif extern int creat (const char *, mode_t); extern int fcntl (int, int, ...); #if __BSD_VISIBLE extern int flock (int, int); #endif #if __GNU_VISIBLE #include extern int futimesat (int, const char *, const struct timeval [2]); #endif /* Provide _ prototypes for functions provided by some versions of newlib. */ #ifdef _COMPILING_NEWLIB extern int open (const char *, int, ...); extern int fcntl (int, int, ...); #ifdef __LARGE64_FILES extern int open64 (const char *, int, ...); #endif #endif #ifdef __cplusplus } #endif #endif /* !_SYS__DEFAULT_FCNTL_H_ */ picolibc-1.7.4/newlib/libc/include/sys/_intsup.h000066400000000000000000000131551414576234500216130ustar00rootroot00000000000000/* * Copyright (c) 2004, 2005 by * Ralf Corsepius, Ulm/Germany. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #ifndef _SYS__INTSUP_H #define _SYS__INTSUP_H #include #if __GNUC_PREREQ (3, 2) /* gcc > 3.2 implicitly defines the values we are interested */ #define __STDINT_EXP(x) __##x##__ #else #define __STDINT_EXP(x) x #include #endif /* Determine how intptr_t and intN_t fastN_t and leastN_t are defined by gcc for this target. This is used to determine the correct printf() constant in inttypes.h and other constants in stdint.h. So we end up with ?(signed|unsigned) char == 0 ?(signed|unsigned) short == 1 ?(signed|unsigned) int == 2 ?(signed|unsigned) short int == 3 ?(signed|unsigned) long == 4 ?(signed|unsigned) long int == 6 ?(signed|unsigned) long long == 8 ?(signed|unsigned) long long int == 10 */ #pragma push_macro("signed") #pragma push_macro("unsigned") #pragma push_macro("char") #pragma push_macro("short") #pragma push_macro("__int20") #pragma push_macro("__int20__") #pragma push_macro("int") #pragma push_macro("long") #undef signed #undef unsigned #undef char #undef short #undef int #undef __int20 #undef __int20__ #undef long #define signed +0 #define unsigned +0 #define char +0 #define short +1 #define __int20 +2 #define __int20__ +2 #define int +2 #define long +4 #if (__INTPTR_TYPE__ == 8 || __INTPTR_TYPE__ == 10) #define _INTPTR_EQ_LONGLONG #elif (__INTPTR_TYPE__ == 4 || __INTPTR_TYPE__ == 6) #define _INTPTR_EQ_LONG /* Note - the tests for _INTPTR_EQ_INT and _INTPTR_EQ_SHORT are currently redundant as the values are not used. But one day they may be needed and so the tests remain. */ #elif __INTPTR_TYPE__ == 2 #define _INTPTR_EQ_INT #elif (__INTPTR_TYPE__ == 1 || __INTPTR_TYPE__ == 3) #define _INTPTR_EQ_SHORT #else #error "Unable to determine type definition of intptr_t" #endif #if (__INT32_TYPE__ == 4 || __INT32_TYPE__ == 6) #define _INT32_EQ_LONG #elif __INT32_TYPE__ == 2 /* Nothing to define because int32_t is safe to print as an int. */ #else #error "Unable to determine type definition of int32_t" #endif #if (__INT8_TYPE__ == 0) #define __INT8 "hh" #elif (__INT8_TYPE__ == 1 || __INT8_TYPE__ == 3) #define __INT8 "h" #elif (__INT8_TYPE__ == 2) #define __INT8 #elif (__INT8_TYPE__ == 4 || __INT8_TYPE__ == 6) #define __INT8 "l" #elif (__INT8_TYPE__ == 8 || __INT8_TYPE__ == 10) #define __INT8 "ll" #endif #if (__INT16_TYPE__ == 1 || __INT16_TYPE__ == 3) #define __INT16 "h" #elif (__INT16_TYPE__ == 2) #define __INT16 #elif (__INT16_TYPE__ == 4 || __INT16_TYPE__ == 6) #define __INT16 "l" #elif (__INT16_TYPE__ == 8 || __INT16_TYPE__ == 10) #define __INT16 "ll" #endif #if (__INT32_TYPE__ == 2) #define __INT32 #elif (__INT32_TYPE__ == 4 || __INT32_TYPE__ == 6) #define __INT32 "l" #elif (__INT32_TYPE__ == 8 || __INT32_TYPE__ == 10) #define __INT32 "ll" #endif #if (__INT64_TYPE__ == 2) #define __INT64 #elif (__INT64_TYPE__ == 4 || __INT64_TYPE__ == 6) #define __INT64 "l" #elif (__INT64_TYPE__ == 8 || __INT64_TYPE__ == 10) #define __INT64 "ll" #endif #if (__INT_FAST8_TYPE__ == 0) #define __FAST8 "hh" #elif (__INT_FAST8_TYPE__ == 1 || __INT_FAST8_TYPE__ == 3) #define __FAST8 "h" #elif (__INT_FAST8_TYPE__ == 2) #define __FAST8 #elif (__INT_FAST8_TYPE__ == 4 || __INT_FAST8_TYPE__ == 6) #define __FAST8 "l" #elif (__INT_FAST8_TYPE__ == 8 || __INT_FAST8_TYPE__ == 10) #define __FAST8 "ll" #endif #if (__INT_FAST16_TYPE__ == 1 || __INT_FAST16_TYPE__ == 3) #define __FAST16 "h" #elif (__INT_FAST16_TYPE__ == 2) #define __FAST16 #elif (__INT_FAST16_TYPE__ == 4 || __INT_FAST16_TYPE__ == 6) #define __FAST16 "l" #elif (__INT_FAST16_TYPE__ == 8 || __INT_FAST16_TYPE__ == 10) #define __FAST16 "ll" #endif #if (__INT_FAST32_TYPE__ == 2) #define __FAST32 #elif (__INT_FAST32_TYPE__ == 4 || __INT_FAST32_TYPE__ == 6) #define __FAST32 "l" #elif (__INT_FAST32_TYPE__ == 8 || __INT_FAST32_TYPE__ == 10) #define __FAST32 "ll" #endif #if (__INT_FAST64_TYPE__ == 2) #define __FAST64 #elif (__INT_FAST64_TYPE__ == 4 || __INT_FAST64_TYPE__ == 6) #define __FAST64 "l" #elif (__INT_FAST64_TYPE__ == 8 || __INT_FAST64_TYPE__ == 10) #define __FAST64 "ll" #endif #if (__INT_LEAST8_TYPE__ == 0) #define __LEAST8 "hh" #elif (__INT_LEAST8_TYPE__ == 1 || __INT_LEAST8_TYPE__ == 3) #define __LEAST8 "h" #elif (__INT_LEAST8_TYPE__ == 2) #define __LEAST8 #elif (__INT_LEAST8_TYPE__ == 4 || __INT_LEAST8_TYPE__ == 6) #define __LEAST8 "l" #elif (__INT_LEAST8_TYPE__ == 8 || __INT_LEAST8_TYPE__ == 10) #define __LEAST8 "ll" #endif #if (__INT_LEAST16_TYPE__ == 1 || __INT_LEAST16_TYPE__ == 3) #define __LEAST16 "h" #elif (__INT_LEAST16_TYPE__ == 2) #define __LEAST16 #elif (__INT_LEAST16_TYPE__ == 4 || __INT_LEAST16_TYPE__ == 6) #define __LEAST16 "l" #elif (__INT_LEAST16_TYPE__ == 8 || __INT_LEAST16_TYPE__ == 10) #define __LEAST16 "ll" #endif #if (__INT_LEAST32_TYPE__ == 2) #define __LEAST32 #elif (__INT_LEAST32_TYPE__ == 4 || __INT_LEAST32_TYPE__ == 6) #define __LEAST32 "l" #elif (__INT_LEAST32_TYPE__ == 8 || __INT_LEAST32_TYPE__ == 10) #define __LEAST32 "ll" #endif #if (__INT_LEAST64_TYPE__ == 2) #define __LEAST64 #elif (__INT_LEAST64_TYPE__ == 4 || __INT_LEAST64_TYPE__ == 6) #define __LEAST64 "l" #elif (__INT_LEAST64_TYPE__ == 8 || __INT_LEAST64_TYPE__ == 10) #define __LEAST64 "ll" #endif #undef signed #undef unsigned #undef char #undef short #undef int #undef long #pragma pop_macro("signed") #pragma pop_macro("unsigned") #pragma pop_macro("char") #pragma pop_macro("short") #pragma pop_macro("__int20") #pragma pop_macro("__int20__") #pragma pop_macro("int") #pragma pop_macro("long") #endif /* _SYS__INTSUP_H */ picolibc-1.7.4/newlib/libc/include/sys/_locale.h000066400000000000000000000004671414576234500215320ustar00rootroot00000000000000/* Copyright (c) 2016 Corinna Vinschen */ /* Definition of opaque POSIX-1.2008 type locale_t for userspace. */ #ifndef _SYS__LOCALE_H #define _SYS__LOCALE_H #include #include struct __locale_t; typedef struct __locale_t *locale_t; #endif /* _SYS__LOCALE_H */ picolibc-1.7.4/newlib/libc/include/sys/_sigset.h000066400000000000000000000040471414576234500215670ustar00rootroot00000000000000/*- * Copyright (c) 1982, 1986, 1989, 1991, 1993 * The Regents of the University of California. All rights reserved. * (c) UNIX System Laboratories, Inc. * All or some portions of this file are derived from material licensed * to the University of California by American Telephone and Telegraph * Co. or Unix System Laboratories, Inc. and are reproduced herein with * the permission of UNIX System Laboratories, Inc. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)signal.h 8.4 (Berkeley) 5/4/95 * $FreeBSD$ */ #ifndef _SYS__SIGSET_H_ #define _SYS__SIGSET_H_ typedef unsigned long __sigset_t; #endif /* !_SYS__SIGSET_H_ */ picolibc-1.7.4/newlib/libc/include/sys/_stdint.h000066400000000000000000000034401414576234500215720ustar00rootroot00000000000000/* * Copyright (c) 2004, 2005 by * Ralf Corsepius, Ulm/Germany. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #ifndef _SYS__STDINT_H #define _SYS__STDINT_H #include #ifdef __cplusplus extern "C" { #endif #ifdef ___int8_t_defined #ifndef _INT8_T_DECLARED typedef __int8_t int8_t ; #define _INT8_T_DECLARED #endif #ifndef _UINT8_T_DECLARED typedef __uint8_t uint8_t ; #define _UINT8_T_DECLARED #endif #define __int8_t_defined 1 #endif /* ___int8_t_defined */ #ifdef ___int16_t_defined #ifndef _INT16_T_DECLARED typedef __int16_t int16_t ; #define _INT16_T_DECLARED #endif #ifndef _UINT16_T_DECLARED typedef __uint16_t uint16_t ; #define _UINT16_T_DECLARED #endif #define __int16_t_defined 1 #endif /* ___int16_t_defined */ #ifdef ___int32_t_defined #ifndef _INT32_T_DECLARED typedef __int32_t int32_t ; #define _INT32_T_DECLARED #endif #ifndef _UINT32_T_DECLARED typedef __uint32_t uint32_t ; #define _UINT32_T_DECLARED #endif #define __int32_t_defined 1 #endif /* ___int32_t_defined */ #ifdef ___int64_t_defined #ifndef _INT64_T_DECLARED typedef __int64_t int64_t ; #define _INT64_T_DECLARED #endif #ifndef _UINT64_T_DECLARED typedef __uint64_t uint64_t ; #define _UINT64_T_DECLARED #endif #define __int64_t_defined 1 #endif /* ___int64_t_defined */ #ifndef _INTMAX_T_DECLARED typedef __intmax_t intmax_t; #define _INTMAX_T_DECLARED #endif #ifndef _UINTMAX_T_DECLARED typedef __uintmax_t uintmax_t; #define _UINTMAX_T_DECLARED #endif #ifndef _INTPTR_T_DECLARED typedef __intptr_t intptr_t; #define _INTPTR_T_DECLARED #endif #ifndef _UINTPTR_T_DECLARED typedef __uintptr_t uintptr_t; #define _UINTPTR_T_DECLARED #endif #ifdef __cplusplus } #endif #endif /* _SYS__STDINT_H */ picolibc-1.7.4/newlib/libc/include/sys/_timespec.h000066400000000000000000000041751414576234500221040ustar00rootroot00000000000000/*- * SPDX-License-Identifier: BSD-3-Clause * * Copyright (c) 1982, 1986, 1993 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)time.h 8.5 (Berkeley) 5/4/95 * from: FreeBSD: src/sys/sys/time.h,v 1.43 2000/03/20 14:09:05 phk Exp * $FreeBSD: head/sys/sys/_timespec.h 326023 2017-11-20 19:43:44Z pfg $ */ #ifndef _SYS__TIMESPEC_H_ #define _SYS__TIMESPEC_H_ #include #if !defined(__time_t_defined) && !defined(_TIME_T_DECLARED) typedef _TIME_T_ time_t; #define __time_t_defined #define _TIME_T_DECLARED #endif struct timespec { time_t tv_sec; /* seconds */ long tv_nsec; /* and nanoseconds */ }; #endif /* !_SYS__TIMESPEC_H_ */ picolibc-1.7.4/newlib/libc/include/sys/_timeval.h000066400000000000000000000042141414576234500217260ustar00rootroot00000000000000/*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright (c) 2002 Mike Barcroft * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $FreeBSD: head/sys/sys/_timeval.h 326256 2017-11-27 15:01:59Z pfg $ */ #ifndef _SYS__TIMEVAL_H_ #define _SYS__TIMEVAL_H_ #include #ifndef _SUSECONDS_T_DECLARED typedef __suseconds_t suseconds_t; #define _SUSECONDS_T_DECLARED #endif #if !defined(__time_t_defined) && !defined(_TIME_T_DECLARED) typedef _TIME_T_ time_t; #define __time_t_defined #define _TIME_T_DECLARED #endif /* This define is also used outside of Newlib, e.g. in MinGW-w64 */ #ifndef _TIMEVAL_DEFINED #define _TIMEVAL_DEFINED /* * Structure returned by gettimeofday(2) system call, and used in other calls. */ struct timeval { time_t tv_sec; /* seconds */ suseconds_t tv_usec; /* and microseconds */ }; #endif /* _TIMEVAL_DEFINED */ #endif /* !_SYS__TIMEVAL_H_ */ picolibc-1.7.4/newlib/libc/include/sys/_types.h000066400000000000000000000144261414576234500214370ustar00rootroot00000000000000/* Copyright (c) 1982, 1986, 1993 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* ANSI C namespace clean utility typedefs */ /* This file defines various typedefs needed by the system calls that support the C library. Basically, they're just the POSIX versions with an '_' prepended. Targets shall use to define their own internal types if desired. There are three define patterns used for type definitions. Lets assume xyz_t is a user type. The internal type definition uses __machine_xyz_t_defined. It is defined by to disable a default definition in . It must not be used in other files. User type definitions are guarded by __xyz_t_defined in glibc and _XYZ_T_DECLARED in BSD compatible systems. */ #ifndef _SYS__TYPES_H #define _SYS__TYPES_H #define __need_size_t #define __need_wint_t #include #include #include #include #ifndef __machine_blkcnt_t_defined typedef long __blkcnt_t; #endif #ifndef __machine_blksize_t_defined typedef long __blksize_t; #endif #ifndef __machine_fsblkcnt_t_defined typedef __uint64_t __fsblkcnt_t; #endif #ifndef __machine_fsfilcnt_t_defined typedef __uint32_t __fsfilcnt_t; #endif #ifndef __machine_off_t_defined typedef long _off_t; #endif #if defined(__XMK__) typedef signed char __pid_t; #else typedef int __pid_t; #endif #ifndef __machine_dev_t_defined #ifdef __linux typedef __uint64_t __dev_t; #else typedef short __dev_t; #endif #endif #ifndef __machine_uid_t_defined #ifdef __linux typedef __uint32_t __uid_t; #else typedef unsigned short __uid_t; #endif #endif #ifndef __machine_gid_t_defined #ifdef __linux typedef __uint32_t __gid_t; #else typedef unsigned short __gid_t; #endif #endif #ifndef __machine_id_t_defined typedef __uint32_t __id_t; #endif #ifndef __machine_ino_t_defined #if (defined(__i386__) && (defined(GO32) || defined(__MSDOS__))) || \ defined(__sparc__) || defined(__SPU__) || defined(__linux) typedef unsigned long __ino_t; #else typedef unsigned short __ino_t; #endif #endif #ifndef __machine_mode_t_defined #if defined(__i386__) && (defined(GO32) || defined(__MSDOS__)) typedef int __mode_t; #else #if defined(__sparc__) && !defined(__sparc_v9__) #ifdef __svr4__ typedef unsigned long __mode_t; #else typedef unsigned short __mode_t; #endif #else typedef __uint32_t __mode_t; #endif #endif #endif #ifndef __machine_off64_t_defined __extension__ typedef long long _off64_t; #endif #if defined(__CYGWIN__) && !defined(__LP64__) typedef _off64_t __off_t; #else typedef _off_t __off_t; #endif typedef _off64_t __loff_t; #ifndef __machine_key_t_defined typedef long __key_t; #endif /* * We need fpos_t for the following, but it doesn't have a leading "_", * so we use _fpos_t instead. */ #ifndef __machine_fpos_t_defined typedef long _fpos_t; /* XXX must match off_t in */ /* (and must be `long' for now) */ #endif #ifdef __LARGE64_FILES #ifndef __machine_fpos64_t_defined typedef _off64_t _fpos64_t; #endif #endif /* Defined by GCC provided */ #undef __size_t #ifndef __machine_size_t_defined #ifdef __SIZE_TYPE__ typedef __SIZE_TYPE__ __size_t; #else #if defined(__INT_MAX__) && __INT_MAX__ == 2147483647 typedef unsigned int __size_t; #else typedef unsigned long __size_t; #endif #endif #endif #ifndef __machine_ssize_t_defined #ifdef __SIZE_TYPE__ /* If __SIZE_TYPE__ is defined (gcc) we define ssize_t based on size_t. We simply change "unsigned" to "signed" for this single definition to make sure ssize_t and size_t only differ by their signedness. */ #define unsigned signed typedef __SIZE_TYPE__ _ssize_t; #undef unsigned #else #if defined(__INT_MAX__) && __INT_MAX__ == 2147483647 typedef int _ssize_t; #else typedef long _ssize_t; #endif #endif #endif typedef _ssize_t __ssize_t; #ifndef __machine_mbstate_t_defined /* Conversion state information. */ typedef struct { int __count; union { wint_t __wch; unsigned char __wchb[4]; } __value; /* Value so far. */ } _mbstate_t; #endif #ifndef __machine_iconv_t_defined /* Iconv descriptor type */ typedef void *_iconv_t; #endif #ifndef __machine_clock_t_defined #define _CLOCK_T_ unsigned long /* clock() */ #endif typedef _CLOCK_T_ __clock_t; #if defined(_USE_LONG_TIME_T) || __LONG_MAX__ > 0x7fffffffL #define _TIME_T_ long #else #define _TIME_T_ __int_least64_t #endif typedef _TIME_T_ __time_t; #ifndef __machine_clockid_t_defined #define _CLOCKID_T_ unsigned long #endif typedef _CLOCKID_T_ __clockid_t; #define _TIMER_T_ unsigned long typedef _TIMER_T_ __timer_t; #ifndef __machine_sa_family_t_defined typedef __uint8_t __sa_family_t; #endif #ifndef __machine_socklen_t_defined typedef __uint32_t __socklen_t; #endif typedef int __nl_item; typedef unsigned short __nlink_t; typedef long __suseconds_t; /* microseconds (signed) */ typedef unsigned long __useconds_t; /* microseconds (unsigned) */ #endif /* _SYS__TYPES_H */ picolibc-1.7.4/newlib/libc/include/sys/_tz_structs.h000066400000000000000000000010341414576234500225060ustar00rootroot00000000000000#ifndef _SYS__TZ_STRUCTS_H_ #define _SYS__TZ_STRUCTS_H_ typedef struct __tzrule_struct { char ch; int m; /* Month of year if ch=M */ int n; /* Week of month if ch=M */ int d; /* Day of week if ch=M, day of year if ch=J or ch=D */ int s; /* Time of day in seconds */ time_t change; long offset; /* Match type of _timezone. */ } __tzrule_type; typedef struct __tzinfo_struct { int __tznorth; int __tzyear; __tzrule_type __tzrule[2]; } __tzinfo_type; __tzinfo_type *__gettzinfo (void); #endif /* _SYS__TZ_STRUCTS_H_ */ picolibc-1.7.4/newlib/libc/include/sys/auxv.h000066400000000000000000000033521414576234500211130ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2020 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _SYS_AUXV_H #define _SYS_AUXV_H unsigned long getauxval(unsigned long type); #define AT_HWCAP 16 #define AT_HWCAP2 26 #endif /* _SYS_AUXV_H */ picolibc-1.7.4/newlib/libc/include/sys/cdefs.h000066400000000000000000000632531414576234500212220ustar00rootroot00000000000000/* libc/sys/linux/sys/cdefs.h - Helper macros for K&R vs. ANSI C compat. */ /* Written 2000 by Werner Almesberger */ /*- * SPDX-License-Identifier: BSD-3-Clause * * Copyright (c) 1991, 1993 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Berkeley Software Design, Inc. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)cdefs.h 8.8 (Berkeley) 1/9/95 * $FreeBSD$ */ #ifndef _SYS_CDEFS_H_ #define _SYS_CDEFS_H_ #include #include #include #define __PMT(args) args #define __DOTS , ... #define __THROW #ifdef __GNUC__ # define __ASMNAME(cname) __XSTRING (__USER_LABEL_PREFIX__) cname #endif #define __ptr_t void * #define __long_double_t long double #define __attribute_malloc__ #define __attribute_pure__ #define __attribute_format_strfmon__(a,b) #define __flexarr [0] #ifndef __BOUNDED_POINTERS__ # define __bounded /* nothing */ # define __unbounded /* nothing */ # define __ptrvalue /* nothing */ #endif /* * Testing against Clang-specific extensions. */ #ifndef __has_attribute #define __has_attribute(x) 0 #endif #ifndef __has_extension #define __has_extension __has_feature #endif #ifndef __has_feature #define __has_feature(x) 0 #endif #ifndef __has_include #define __has_include(x) 0 #endif #ifndef __has_builtin #define __has_builtin(x) 0 #endif #if defined(__cplusplus) #define __BEGIN_DECLS extern "C" { #define __END_DECLS } #else #define __BEGIN_DECLS #define __END_DECLS #endif /** * Not all compilers offer __builtin_expect (e.g. CompCert does * not have it). In that case, transparently replace all * occurences of that builtin with just the condition: */ #ifndef HAVE_BUILTIN_EXPECT #define __builtin_expect(cond, exp) (cond) #endif /* * This code has been put in place to help reduce the addition of * compiler specific defines in FreeBSD code. It helps to aid in * having a compiler-agnostic source tree. */ #if defined(__GNUC__) || defined(__INTEL_COMPILER) #if __GNUC__ >= 3 || defined(__INTEL_COMPILER) #define __GNUCLIKE_ASM 3 #define __GNUCLIKE_MATH_BUILTIN_CONSTANTS #else #define __GNUCLIKE_ASM 2 #endif #define __GNUCLIKE___TYPEOF 1 #define __GNUCLIKE___OFFSETOF 1 #define __GNUCLIKE___SECTION 1 #ifndef __INTEL_COMPILER #define __GNUCLIKE_CTOR_SECTION_HANDLING 1 #endif #define __GNUCLIKE_BUILTIN_CONSTANT_P 1 #if defined(__INTEL_COMPILER) && defined(__cplusplus) && \ __INTEL_COMPILER < 800 #undef __GNUCLIKE_BUILTIN_CONSTANT_P #endif #if (__GNUC_MINOR__ > 95 || __GNUC__ >= 3) #define __GNUCLIKE_BUILTIN_VARARGS 1 #define __GNUCLIKE_BUILTIN_STDARG 1 #define __GNUCLIKE_BUILTIN_VAALIST 1 #endif #if defined(__GNUC__) #define __GNUC_VA_LIST_COMPATIBILITY 1 #endif /* * Compiler memory barriers, specific to gcc and clang. */ #if defined(__GNUC__) #define __compiler_membar() __asm __volatile(" " : : : "memory") #endif #ifndef __INTEL_COMPILER #define __GNUCLIKE_BUILTIN_NEXT_ARG 1 #define __GNUCLIKE_MATH_BUILTIN_RELOPS #endif #define __GNUCLIKE_BUILTIN_MEMCPY 1 /* XXX: if __GNUC__ >= 2: not tested everywhere originally, where replaced */ #define __CC_SUPPORTS_INLINE 1 #define __CC_SUPPORTS___INLINE 1 #define __CC_SUPPORTS___INLINE__ 1 #define __CC_SUPPORTS___FUNC__ 1 #define __CC_SUPPORTS_WARNING 1 #define __CC_SUPPORTS_VARADIC_XXX 1 /* see varargs.h */ #define __CC_SUPPORTS_DYNAMIC_ARRAY_INIT 1 #endif /* __GNUC__ || __INTEL_COMPILER */ /* * The __CONCAT macro is used to concatenate parts of symbol names, e.g. * with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo. * The __CONCAT macro is a bit tricky to use if it must work in non-ANSI * mode -- there must be no spaces between its arguments, and for nested * __CONCAT's, all the __CONCAT's must be at the left. __CONCAT can also * concatenate double-quoted strings produced by the __STRING macro, but * this only works with ANSI C. * * __XSTRING is like __STRING, but it expands any macros in its argument * first. It is only available with ANSI C. */ #if defined(__STDC__) || defined(__cplusplus) #define __P(protos) protos /* full-blown ANSI C */ #define __CONCAT1(x,y) x ## y #define __CONCAT(x,y) __CONCAT1(x,y) #define __STRING(x) #x /* stringify without expanding x */ #define __XSTRING(x) __STRING(x) /* expand x, then stringify */ #define __const const /* define reserved names to standard */ #define __signed signed #define __volatile volatile #if defined(__cplusplus) #define __inline inline /* convert to C++ keyword */ #else #if !(defined(__CC_SUPPORTS___INLINE)) #define __inline /* delete GCC keyword */ #endif /* ! __CC_SUPPORTS___INLINE */ #endif /* !__cplusplus */ #else /* !(__STDC__ || __cplusplus) */ #define __P(protos) () /* traditional C preprocessor */ #define __CONCAT(x,y) x/**/y #define __STRING(x) "x" #if !defined(__CC_SUPPORTS___INLINE) #define __const /* delete pseudo-ANSI C keywords */ #define __inline #define __signed #define __volatile /* * In non-ANSI C environments, new programs will want ANSI-only C keywords * deleted from the program and old programs will want them left alone. * When using a compiler other than gcc, programs using the ANSI C keywords * const, inline etc. as normal identifiers should define -DNO_ANSI_KEYWORDS. * When using "gcc -traditional", we assume that this is the intent; if * __GNUC__ is defined but __STDC__ is not, we leave the new keywords alone. */ #ifndef NO_ANSI_KEYWORDS #define const /* delete ANSI C keywords */ #define inline #define signed #define volatile #endif /* !NO_ANSI_KEYWORDS */ #endif /* !__CC_SUPPORTS___INLINE */ #endif /* !(__STDC__ || __cplusplus) */ /* * Compiler-dependent macros to help declare dead (non-returning) and * pure (no side effects) functions, and unused variables. They are * null except for versions of gcc that are known to support the features * properly (old versions of gcc-2 supported the dead and pure features * in a different (wrong) way). If we do not provide an implementation * for a given compiler, let the compile fail if it is told to use * a feature that we cannot live without. */ #define __weak_symbol __attribute__((__weak__)) #if !__GNUC_PREREQ__(2, 5) && !defined(__INTEL_COMPILER) #define __dead2 #define __pure2 #define __unused #endif #if __GNUC__ == 2 && __GNUC_MINOR__ >= 5 && __GNUC_MINOR__ < 7 && !defined(__INTEL_COMPILER) #define __dead2 __attribute__((__noreturn__)) #define __pure2 __attribute__((__const__)) #define __unused /* XXX Find out what to do for __packed, __aligned and __section */ #endif #if __GNUC_PREREQ__(2, 7) || defined(__INTEL_COMPILER) #define __dead2 __attribute__((__noreturn__)) #define __pure2 __attribute__((__const__)) #define __unused __attribute__((__unused__)) #define __used __attribute__((__used__)) #define __packed __attribute__((__packed__)) #define __aligned(x) __attribute__((__aligned__(x))) #define __section(x) __attribute__((__section__(x))) #endif #ifdef HAVE_ALLOC_SIZE #define __alloc_size(x) __attribute__((__alloc_size__(x))) #define __alloc_size2(n, x) __attribute__((__alloc_size__(n, x))) #else #define __alloc_size(x) #define __alloc_size2(n, x) #endif #if __GNUC_PREREQ__(4, 9) || __has_attribute(__alloc_align__) #define __alloc_align(x) __attribute__((__alloc_align__(x))) #else #define __alloc_align(x) #endif #if !__GNUC_PREREQ__(2, 95) #define __alignof(x) __offsetof(struct { char __a; x __b; }, __b) #endif /* * Keywords added in C11. */ #if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 201112L #if !__has_extension(c_alignas) #if (defined(__cplusplus) && __cplusplus >= 201103L) || \ __has_extension(cxx_alignas) #define _Alignas(x) alignas(x) #else /* XXX: Only emulates _Alignas(constant-expression); not _Alignas(type-name). */ #define _Alignas(x) __aligned(x) #endif #endif #if defined(__cplusplus) && __cplusplus >= 201103L #define _Alignof(x) alignof(x) #else #define _Alignof(x) __alignof(x) #endif #if !defined(__cplusplus) && !__has_extension(c_atomic) && \ !__has_extension(cxx_atomic) && !__GNUC_PREREQ__(4, 7) /* * No native support for _Atomic(). Place object in structure to prevent * most forms of direct non-atomic access. */ #define _Atomic(T) struct { T volatile __val; } #endif #if defined(__cplusplus) && __cplusplus >= 201103L #define _Noreturn [[noreturn]] #else #define _Noreturn __dead2 #endif #if !__has_extension(c_static_assert) #if (defined(__cplusplus) && __cplusplus >= 201103L) || \ __has_extension(cxx_static_assert) #define _Static_assert(x, y) static_assert(x, y) #elif __GNUC_PREREQ__(4,6) && !defined(__cplusplus) /* Nothing, gcc 4.6 and higher has _Static_assert built-in */ #elif defined(__COUNTER__) #define _Static_assert(x, y) __Static_assert(x, __COUNTER__) #define __Static_assert(x, y) ___Static_assert(x, y) #define ___Static_assert(x, y) typedef char __assert_ ## y[(x) ? 1 : -1] \ __unused #else #define _Static_assert(x, y) struct __hack #endif #endif #if !__has_extension(c_thread_local) /* * XXX: Some compilers (Clang 3.3, GCC 4.7) falsely announce C++11 mode * without actually supporting the thread_local keyword. Don't check for * the presence of C++11 when defining _Thread_local. */ #if /* (defined(__cplusplus) && __cplusplus >= 201103L) || */ \ __has_extension(cxx_thread_local) #define _Thread_local thread_local #else #define _Thread_local __thread #endif #endif #endif /* __STDC_VERSION__ || __STDC_VERSION__ < 201112L */ /* * Emulation of C11 _Generic(). Unlike the previously defined C11 * keywords, it is not possible to implement this using exactly the same * syntax. Therefore implement something similar under the name * __generic(). Unlike _Generic(), this macro can only distinguish * between a single type, so it requires nested invocations to * distinguish multiple cases. */ #if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || \ __has_extension(c_generic_selections) #define __generic(expr, t, yes, no) \ _Generic(expr, t: yes, default: no) #elif __GNUC_PREREQ__(3, 1) && !defined(__cplusplus) #define __generic(expr, t, yes, no) \ __builtin_choose_expr( \ __builtin_types_compatible_p(__typeof(expr), t), yes, no) #endif /* * C99 Static array indices in function parameter declarations. Syntax such as: * void bar(int myArray[static 10]); * is allowed in C99 but not in C++. Define __min_size appropriately so * headers using it can be compiled in either language. Use like this: * void bar(int myArray[__min_size(10)]); */ #if !defined(__cplusplus) && \ (defined(__clang__) || __GNUC_PREREQ__(4, 6)) && \ (!defined(__STDC_VERSION__) || (__STDC_VERSION__ >= 199901)) #define __min_size(x) static (x) #else #define __min_size(x) (x) #endif #if __GNUC_PREREQ__(2, 96) #define __malloc_like __attribute__((__malloc__)) #define __pure __attribute__((__pure__)) #else #define __malloc_like #define __pure #endif #if __GNUC_PREREQ__(3, 1) || (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 800) #define __always_inline __inline__ __attribute__((__always_inline__)) #else #define __always_inline #endif #if __GNUC_PREREQ__(3, 1) #define __noinline __attribute__ ((__noinline__)) #else #define __noinline #endif #if defined(__clang__) && defined(__nonnull) /* Clang has a builtin macro __nonnull for the _Nonnull qualifier */ #undef __nonnull #endif #if __GNUC_PREREQ__(3, 3) #define __nonnull(x) __attribute__((__nonnull__ x)) #define __nonnull_all __attribute__((__nonnull__)) #else #define __nonnull(x) #define __nonnull_all #endif #if __GNUC_PREREQ__(3, 4) #define __fastcall __attribute__((__fastcall__)) #define __result_use_check __attribute__((__warn_unused_result__)) #else #define __fastcall #define __result_use_check #endif #if __GNUC_PREREQ__(4, 1) #define __returns_twice __attribute__((__returns_twice__)) #else #define __returns_twice #endif #if __GNUC_PREREQ__(4, 6) || __has_builtin(__builtin_unreachable) #define __unreachable() __builtin_unreachable() #else #define __unreachable() ((void)0) #endif /* XXX: should use `#if __STDC_VERSION__ < 199901'. */ #if !__GNUC_PREREQ__(2, 7) && !defined(__INTEL_COMPILER) && !defined(__COMPCERT__) #define __func__ NULL #endif /* * GCC 2.95 provides `__restrict' as an extension to C90 to support the * C99-specific `restrict' type qualifier. We happen to use `__restrict' as * a way to define the `restrict' type qualifier without disturbing older * software that is unaware of C99 keywords. */ #if !(__GNUC__ == 2 && __GNUC_MINOR__ == 95) #if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901 #define __restrict #else #define __restrict restrict #endif #endif /* * GNU C version 2.96 adds explicit branch prediction so that * the CPU back-end can hint the processor and also so that * code blocks can be reordered such that the predicted path * sees a more linear flow, thus improving cache behavior, etc. * * The following two macros provide us with a way to utilize this * compiler feature. Use __predict_true() if you expect the expression * to evaluate to true, and __predict_false() if you expect the * expression to evaluate to false. * * A few notes about usage: * * * Generally, __predict_false() error condition checks (unless * you have some _strong_ reason to do otherwise, in which case * document it), and/or __predict_true() `no-error' condition * checks, assuming you want to optimize for the no-error case. * * * Other than that, if you don't know the likelihood of a test * succeeding from empirical or other `hard' evidence, don't * make predictions. * * * These are meant to be used in places that are run `a lot'. * It is wasteful to make predictions in code that is run * seldomly (e.g. at subsystem initialization time) as the * basic block reordering that this affects can often generate * larger code. */ #if __GNUC_PREREQ__(2, 96) #define __predict_true(exp) __builtin_expect((exp), 1) #define __predict_false(exp) __builtin_expect((exp), 0) #else #define __predict_true(exp) (exp) #define __predict_false(exp) (exp) #endif #if __GNUC_PREREQ__(4, 0) #define __null_sentinel __attribute__((__sentinel__)) #define __exported __attribute__((__visibility__("default"))) /* Only default visibility is supported on PE/COFF targets. */ #ifndef __CYGWIN__ #define __hidden __attribute__((__visibility__("hidden"))) #else #define __hidden #endif #else #define __null_sentinel #define __exported #define __hidden #endif #define __offsetof(type, field) offsetof(type, field) #define __rangeof(type, start, end) \ (__offsetof(type, end) - __offsetof(type, start)) /* * Given the pointer x to the member m of the struct s, return * a pointer to the containing structure. When using GCC, we first * assign pointer x to a local variable, to check that its type is * compatible with member m. */ #if __GNUC_PREREQ__(3, 1) #define __containerof(x, s, m) ({ \ const volatile __typeof(((s *)0)->m) *__x = (x); \ __DEQUALIFY(s *, (const volatile char *)__x - __offsetof(s, m));\ }) #else #define __containerof(x, s, m) \ __DEQUALIFY(s *, (const volatile char *)(x) - __offsetof(s, m)) #endif /* * Compiler-dependent macros to declare that functions take printf-like * or scanf-like arguments. They are null except for versions of gcc * that are known to support the features properly (old versions of gcc-2 * didn't permit keeping the keywords out of the application namespace). */ #if !__GNUC_PREREQ__(2, 7) && !defined(__INTEL_COMPILER) #define __printflike(fmtarg, firstvararg) #define __scanflike(fmtarg, firstvararg) #define __format_arg(fmtarg) #define __strfmonlike(fmtarg, firstvararg) #define __strftimelike(fmtarg, firstvararg) #else #define __printflike(fmtarg, firstvararg) \ __attribute__((__format__ (__printf__, fmtarg, firstvararg))) #define __scanflike(fmtarg, firstvararg) \ __attribute__((__format__ (__scanf__, fmtarg, firstvararg))) #define __format_arg(fmtarg) __attribute__((__format_arg__ (fmtarg))) #define __strfmonlike(fmtarg, firstvararg) \ __attribute__((__format__ (__strfmon__, fmtarg, firstvararg))) #define __strftimelike(fmtarg, firstvararg) \ __attribute__((__format__ (__strftime__, fmtarg, firstvararg))) #endif /* Compiler-dependent macros that rely on FreeBSD-specific extensions. */ #if defined(__FreeBSD_cc_version) && __FreeBSD_cc_version >= 300001 && \ defined(__GNUC__) && !defined(__INTEL_COMPILER) #define __printf0like(fmtarg, firstvararg) \ __attribute__((__format__ (__printf0__, fmtarg, firstvararg))) #else #define __printf0like(fmtarg, firstvararg) #endif #if defined(__GNUC__) || defined(__INTEL_COMPILER) #if !defined(__INTEL_COMPILER) && defined(HAVE_ALIAS_ATTRIBUTE) #define __strong_reference(sym,aliassym) \ extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym))) #endif /* Taken from glibc: Add the compiler optimization to inhibit loop transformation to library calls. This is used to avoid recursive calls in memset and memmove default implementations. */ #if defined(_HAVE_CC_INHIBIT_LOOP_TO_LIBCALL) # define __inhibit_loop_to_libcall \ __attribute__ ((__optimize__ ("-fno-tree-loop-distribute-patterns"))) #elif defined(_HAVE_NO_BUILTIN_ATTRIBUTE) # define __inhibit_loop_to_libcall \ __attribute__((no_builtin)) #else # define __inhibit_loop_to_libcall #endif /* * Tell optimizer to not add new builtin calls when optimizing a * function body. */ #if defined(_HAVE_NO_BUILTIN_ATTRIBUTE) # define __inhibit_new_builtin_calls \ __attribute__((no_builtin)) #else #define __inhibit_new_builtin_calls #endif #ifdef __ELF__ #ifdef __STDC__ #define __weak_reference(sym,alias) \ __asm__(".weak " #alias); \ __asm__(".equ " #alias ", " #sym) #else #define __weak_reference(sym,alias) \ __asm__(".weak alias"); \ __asm__(".equ alias, sym") #endif #elif __clang__ #ifdef __MACH__ /* Macos prefixes all C symbols with an underscore, this needs to be done manually in asm */ /* So far I have not been able to create on Macos an exported symbol that itself * is weak but aliases a strong symbol. A workaround is to make the original * symbol weak and the alias symbol will automatically become weak too. */ /* Hint: use `nm -m obj.o` to check the symbols weak/strong on Mac */ #define __weak_reference(sym,alias) \ __asm__(".weak_definition _" #sym); \ __asm__(".globl _" #alias); \ __asm__(".set _" #alias ", _" #sym) #elif defined(__STDC__) #define __weak_reference(sym,alias) \ __asm__(".weak_reference " #alias); \ __asm__(".globl " #alias); \ __asm__(".set " #alias ", " #sym) #else #define __weak_reference(sym,alias) \ __asm__(".weak_reference alias");\ __asm__(".set alias, sym") #endif #else /* !__ELF__ && !__clang__ */ #ifdef __STDC__ #define __weak_reference(sym,alias) \ __asm__(".stabs \"_" #alias "\",11,0,0,0"); \ __asm__(".stabs \"_" #sym "\",1,0,0,0") #else #define __weak_reference(sym,alias) \ __asm__(".stabs \"_/**/alias\",11,0,0,0"); \ __asm__(".stabs \"_/**/sym\",1,0,0,0") #endif #endif #if defined(__ELF__) #ifdef __STDC__ #define __warn_references(sym,msg) \ __asm__(".section .gnu.warning." #sym); \ __asm__(".asciz \"" msg "\""); \ __asm__(".previous") #define __sym_compat(sym,impl,verid) \ __asm__(".symver " #impl ", " #sym "@" #verid) #define __sym_default(sym,impl,verid) \ __asm__(".symver " #impl ", " #sym "@@" #verid) #else #define __warn_references(sym,msg) \ __asm__(".section .gnu.warning.sym"); \ __asm__(".asciz \"msg\""); \ __asm__(".previous") #define __sym_compat(sym,impl,verid) \ __asm__(".symver impl, sym@verid") #define __sym_default(impl,sym,verid) \ __asm__(".symver impl, sym@@verid") #endif /* __STDC__ */ #else /* !__ELF__ */ #ifdef __STDC__ #define __warn_references(sym,msg) \ __asm__(".stabs \"" msg "\",30,0,0,0"); \ __asm__(".stabs \"_" #sym "\",1,0,0,0") #else #define __warn_references(sym,msg) \ __asm__(".stabs msg,30,0,0,0"); \ __asm__(".stabs \"_/**/sym\",1,0,0,0") #endif /* __STDC__ */ #endif /* __ELF__ */ #endif /* __GNUC__ || __INTEL_COMPILER */ #ifndef __FBSDID #define __FBSDID(s) struct __hack #endif #ifndef __RCSID #define __RCSID(s) struct __hack #endif #ifndef __RCSID_SOURCE #define __RCSID_SOURCE(s) struct __hack #endif #ifndef __SCCSID #define __SCCSID(s) struct __hack #endif #ifndef __COPYRIGHT #define __COPYRIGHT(s) struct __hack #endif #ifndef __DECONST #define __DECONST(type, var) ((type)(__uintptr_t)(const void *)(var)) #endif #ifndef __DEVOLATILE #define __DEVOLATILE(type, var) ((type)(__uintptr_t)(volatile void *)(var)) #endif #ifndef __DEQUALIFY #define __DEQUALIFY(type, var) ((type)(__uintptr_t)(const volatile void *)(var)) #endif /* * Nullability qualifiers: currently only supported by Clang. */ #if !(defined(__clang__) && __has_feature(nullability)) #define _Nonnull #define _Nullable #define _Null_unspecified #define __NULLABILITY_PRAGMA_PUSH #define __NULLABILITY_PRAGMA_POP #else #define __NULLABILITY_PRAGMA_PUSH _Pragma("clang diagnostic push") \ _Pragma("clang diagnostic ignored \"-Wnullability-completeness\"") #define __NULLABILITY_PRAGMA_POP _Pragma("clang diagnostic pop") #endif /* * Type Safety Checking * * Clang provides additional attributes to enable checking type safety * properties that cannot be enforced by the C type system. */ #if __has_attribute(__argument_with_type_tag__) && \ __has_attribute(__type_tag_for_datatype__) #define __arg_type_tag(arg_kind, arg_idx, type_tag_idx) \ __attribute__((__argument_with_type_tag__(arg_kind, arg_idx, type_tag_idx))) #define __datatype_type_tag(kind, type) \ __attribute__((__type_tag_for_datatype__(kind, type))) #else #define __arg_type_tag(arg_kind, arg_idx, type_tag_idx) #define __datatype_type_tag(kind, type) #endif /* * Lock annotations. * * Clang provides support for doing basic thread-safety tests at * compile-time, by marking which locks will/should be held when * entering/leaving a functions. * * Furthermore, it is also possible to annotate variables and structure * members to enforce that they are only accessed when certain locks are * held. */ #if __has_extension(c_thread_safety_attributes) #define __lock_annotate(x) __attribute__((x)) #else #define __lock_annotate(x) #endif /* Structure implements a lock. */ /* FIXME: Use __lockable__, etc. to avoid colliding with user namespace macros, * once clang is fixed: https://bugs.llvm.org/show_bug.cgi?id=34319 */ #define __lockable __lock_annotate(lockable) /* Function acquires an exclusive or shared lock. */ #define __locks_exclusive(...) \ __lock_annotate(exclusive_lock_function(__VA_ARGS__)) #define __locks_shared(...) \ __lock_annotate(shared_lock_function(__VA_ARGS__)) /* Function attempts to acquire an exclusive or shared lock. */ #define __trylocks_exclusive(...) \ __lock_annotate(exclusive_trylock_function(__VA_ARGS__)) #define __trylocks_shared(...) \ __lock_annotate(shared_trylock_function(__VA_ARGS__)) /* Function releases a lock. */ #define __unlocks(...) __lock_annotate(unlock_function(__VA_ARGS__)) /* Function asserts that an exclusive or shared lock is held. */ #define __asserts_exclusive(...) \ __lock_annotate(assert_exclusive_lock(__VA_ARGS__)) #define __asserts_shared(...) \ __lock_annotate(assert_shared_lock(__VA_ARGS__)) /* Function requires that an exclusive or shared lock is or is not held. */ #define __requires_exclusive(...) \ __lock_annotate(exclusive_locks_required(__VA_ARGS__)) #define __requires_shared(...) \ __lock_annotate(shared_locks_required(__VA_ARGS__)) #define __requires_unlocked(...) \ __lock_annotate(locks_excluded(__VA_ARGS__)) /* Function should not be analyzed. */ #define __no_lock_analysis __lock_annotate(no_thread_safety_analysis) /* * Function or variable should not be sanitized, i.e. by AddressSanitizer. * GCC has the nosanitize attribute, but as a function attribute only, and * warns on use as a variable attribute. */ #if __has_attribute(no_sanitize) && defined(__clang__) #define __nosanitizeaddress __attribute__((no_sanitize("address"))) #define __nosanitizethread __attribute__((no_sanitize("thread"))) #else #define __nosanitizeaddress #define __nosanitizethread #endif /* * fall-through case statement annotations */ #if __cplusplus >= 201703L || __STDC_VERSION__ > 201710L /* Standard C++17/C23 attribute */ #define FALLTHROUGH [[fallthrough]] #elif __has_attribute(fallthrough) /* Non-standard but supported by at least gcc and clang */ #define FALLTHROUGH __attribute__((fallthrough)) #else #define FALLTHROUGH do { } while(0) #endif /* Guard variables and structure members by lock. */ #define __guarded_by(x) __lock_annotate(guarded_by(x)) #define __pt_guarded_by(x) __lock_annotate(pt_guarded_by(x)) #endif /* !_SYS_CDEFS_H_ */ picolibc-1.7.4/newlib/libc/include/sys/config.h000066400000000000000000000220101414576234500213650ustar00rootroot00000000000000/* Copyright (c) 1982, 1986, 1993 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef __SYS_CONFIG_H__ #define __SYS_CONFIG_H__ #include /* floating point macros */ #include /* POSIX defs */ #include #include #ifdef __aarch64__ #define MALLOC_ALIGNMENT 16 #endif #ifdef __AMDGCN__ #define __DYNAMIC_REENT__ #endif /* exceptions first */ #if defined(__H8500__) || defined(__W65__) #define __SMALL_BITFIELDS /* ??? This conditional is true for the h8500 and the w65, defining H8300 in those cases probably isn't the right thing to do. */ #define H8300 1 #endif /* 16 bit integer machines */ #if defined(__Z8001__) || defined(__Z8002__) || defined(__H8500__) || defined(__W65__) || defined (__mn10200__) || defined (__AVR__) || defined (__MSP430__) #undef INT_MAX #undef UINT_MAX #define INT_MAX 32767 #define UINT_MAX 65535 #endif #if defined (__H8300__) || defined (__H8300H__) || defined(__H8300S__) || defined (__H8300SX__) #define __SMALL_BITFIELDS #define H8300 1 #undef INT_MAX #undef UINT_MAX #define INT_MAX __INT_MAX__ #define UINT_MAX (__INT_MAX__ * 2U + 1) #endif #if (defined(__CR16__) || defined(__CR16C__) ||defined(__CR16CP__)) #ifndef __INT32__ #define __SMALL_BITFIELDS #undef INT_MAX #undef UINT_MAX #define INT_MAX 32767 #define UINT_MAX (__INT_MAX__ * 2U + 1) #else /* INT32 */ #undef INT_MAX #undef UINT_MAX #define INT_MAX 2147483647 #define UINT_MAX (__INT_MAX__ * 2U + 1) #endif /* INT32 */ #endif /* CR16C */ #if defined (__xc16x__) || defined (__xc16xL__) || defined (__xc16xS__) #define __SMALL_BITFIELDS #endif #ifdef __W65__ #define __SMALL_BITFIELDS #endif #if defined(__D10V__) #define __SMALL_BITFIELDS #undef INT_MAX #undef UINT_MAX #define INT_MAX __INT_MAX__ #define UINT_MAX (__INT_MAX__ * 2U + 1) #define _POINTER_INT short #endif #if defined(__mc68hc11__) || defined(__mc68hc12__) || defined(__mc68hc1x__) #undef INT_MAX #undef UINT_MAX #define INT_MAX __INT_MAX__ #define UINT_MAX (__INT_MAX__ * 2U + 1) #define _POINTER_INT short #endif #if defined(__m68k__) || defined(__mc68000__) || defined(__riscv) #define _READ_WRITE_RETURN_TYPE _ssize_t #endif #ifdef ___AM29K__ #define _FLOAT_RET double #endif #ifdef __i386__ #ifndef __unix__ /* in other words, go32 */ #define _FLOAT_RET double #endif #if defined(__linux__) || defined(__RDOS__) /* we want the reentrancy structure to be returned by a function */ #define __DYNAMIC_REENT__ #define HAVE_GETDATE #define _READ_WRITE_RETURN_TYPE _ssize_t #ifndef __LARGE64_FILES #define __LARGE64_FILES 1 #endif /* we use some glibc header files so turn on glibc large file feature */ #define _LARGEFILE64_SOURCE 1 #endif #endif #ifdef __mn10200__ #define __SMALL_BITFIELDS #endif #ifdef __AVR__ #define __SMALL_BITFIELDS #define _POINTER_INT short #endif #if defined(__v850) && !defined(__rtems__) #define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__sda__)) #endif /* For the PowerPC eabi, force the _impure_ptr to be in .sdata */ #if defined(__PPC__) #if defined(_CALL_SYSV) #define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__section__(".sdata"))) #endif #ifdef __SPE__ #define _LONG_DOUBLE double #endif #endif /* Configure small REENT structure for Xilinx MicroBlaze platforms */ #if defined (__MICROBLAZE__) && !defined(__rtems__) #ifndef _REENT_SMALL #define _REENT_SMALL #endif /* Xilinx XMK uses Unix98 mutex */ #ifdef __XMK__ #define _UNIX98_THREAD_MUTEX_ATTRIBUTES #endif #endif #if defined(__mips__) && !defined(__rtems__) #define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__section__(".sdata"))) #endif #ifdef __xstormy16__ #define __SMALL_BITFIELDS #undef INT_MAX #undef UINT_MAX #define INT_MAX __INT_MAX__ #define UINT_MAX (__INT_MAX__ * 2U + 1) #define MALLOC_ALIGNMENT 8 #define _POINTER_INT short #define __BUFSIZ__ 16 #define _REENT_SMALL #endif #if defined __MSP430__ #ifndef _REENT_SMALL #define _REENT_SMALL #endif #define __BUFSIZ__ 256 #define __SMALL_BITFIELDS #ifdef __MSP430X_LARGE__ #define _POINTER_INT __int20 #else #define _POINTER_INT int #endif #endif #ifdef __m32c__ #define __SMALL_BITFIELDS #undef INT_MAX #undef UINT_MAX #define INT_MAX __INT_MAX__ #define UINT_MAX (__INT_MAX__ * 2U + 1) #define MALLOC_ALIGNMENT 8 #if defined(__r8c_cpu__) || defined(__m16c_cpu__) #define _POINTER_INT short #else #define _POINTER_INT long #endif #define __BUFSIZ__ 16 #define _REENT_SMALL #endif /* __m32c__ */ #ifdef __SPU__ #define MALLOC_ALIGNMENT 16 #define __CUSTOM_FILE_IO__ #endif #if defined(__or1k__) || defined(__or1knd__) #define __DYNAMIC_REENT__ #endif /* This block should be kept in sync with GCC's limits.h. The point of having these definitions here is to not include limits.h, which would pollute the user namespace, while still using types of the the correct widths when deciding how to define __int32_t and __int64_t. */ #ifndef __INT_MAX__ # ifdef INT_MAX # define __INT_MAX__ INT_MAX # else # define __INT_MAX__ 2147483647 # endif #endif #ifndef __LONG_MAX__ # ifdef LONG_MAX # define __LONG_MAX__ LONG_MAX # else # if defined (__alpha__) || (defined (__sparc__) && defined(__arch64__)) \ || defined (__sparcv9) # define __LONG_MAX__ 9223372036854775807L # else # define __LONG_MAX__ 2147483647L # endif /* __alpha__ || sparc64 */ # endif #endif /* End of block that should be kept in sync with GCC's limits.h. */ #ifndef _POINTER_INT #define _POINTER_INT long #endif #ifdef __frv__ #define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__section__(".sdata"))) #endif #undef __RAND_MAX #if __INT_MAX__ == 32767 #define __RAND_MAX 32767 #else #define __RAND_MAX 0x7fffffff #endif #if defined(__CYGWIN__) #include #endif #if defined(__rtems__) #define __FILENAME_MAX__ 255 #define _READ_WRITE_RETURN_TYPE _ssize_t #define __DYNAMIC_REENT__ #define _REENT_GLOBAL_ATEXIT #define _REENT_GLOBAL_STDIO_STREAMS #endif #ifndef __EXPORT #define __EXPORT #endif #ifndef __IMPORT #define __IMPORT #endif /* Define return type of read/write routines. In POSIX, the return type for read()/write() is "ssize_t" but legacy newlib code has been using "int" for some time. If not specified, "int" is defaulted. */ #ifndef _READ_WRITE_RETURN_TYPE #define _READ_WRITE_RETURN_TYPE int #endif /* Define `count' parameter of read/write routines. In POSIX, the `count' parameter is "size_t" but legacy newlib code has been using "int" for some time. If not specified, "int" is defaulted. */ #ifndef _READ_WRITE_BUFSIZE_TYPE #define _READ_WRITE_BUFSIZE_TYPE int #endif #ifndef __WCHAR_MAX__ #if __INT_MAX__ == 32767 || defined (_WIN32) #define __WCHAR_MAX__ 0xffffu #endif #endif #ifdef PICOLIBC_TLS #define NEWLIB_THREAD_LOCAL __thread #else #define NEWLIB_THREAD_LOCAL #endif /* See if small reent asked for at configuration time and is not chosen by the platform by default. */ #ifdef _WANT_REENT_SMALL #ifndef _REENT_SMALL #define _REENT_SMALL #endif #endif #ifdef _WANT_REENT_GLOBAL_STDIO_STREAMS #ifndef _REENT_GLOBAL_STDIO_STREAMS #define _REENT_GLOBAL_STDIO_STREAMS #endif #endif #ifdef _WANT_USE_LONG_TIME_T #ifndef _USE_LONG_TIME_T #define _USE_LONG_TIME_T #endif #endif /* If _MB_EXTENDED_CHARSETS_ALL is set, we want all of the extended charsets. The extended charsets add a few functions and a couple of tables of a few K each. */ #ifdef _MB_EXTENDED_CHARSETS_ALL #define _MB_EXTENDED_CHARSETS_ISO 1 #define _MB_EXTENDED_CHARSETS_WINDOWS 1 #endif /* Figure out if long double is the same size as double. If the system * doesn't provide long double, then those values will be undefined * and cpp will substitute 0 for them in the test */ #if LDBL_MANT_DIG == DBL_MANT_DIG && LDBL_MIN_EXP == DBL_MIN_EXP && \ LDBL_MAX_EXP == DBL_MAX_EXP #define _LDBL_EQ_DBL #endif #endif /* __SYS_CONFIG_H__ */ picolibc-1.7.4/newlib/libc/include/sys/custom_file.h000066400000000000000000000001601414576234500224330ustar00rootroot00000000000000/* Copyright (c) 2007 Jeff Johnston */ #error System-specific custom_file.h is missing. picolibc-1.7.4/newlib/libc/include/sys/dir.h000066400000000000000000000003531414576234500207040ustar00rootroot00000000000000/* Copyright (c) 2010 Yaakov Selkowitz */ /* BSD predecessor of POSIX.1 and struct dirent */ #ifndef _SYS_DIR_H_ #define _SYS_DIR_H_ #include #define direct dirent #endif /*_SYS_DIR_H_*/ picolibc-1.7.4/newlib/libc/include/sys/dirent.h000066400000000000000000000035601414576234500214160ustar00rootroot00000000000000/* Copyright (c) 1982, 1986, 1993 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* includes , which is this file. On a system which supports , this file is overridden by dirent.h in the libc/sys/.../sys directory. On a system which does not support , we will get this file which uses #error to force an error. */ #ifdef __cplusplus extern "C" { #endif #error " not supported" #ifdef __cplusplus } #endif picolibc-1.7.4/newlib/libc/include/sys/errno.h000066400000000000000000000217571414576234500212660ustar00rootroot00000000000000/* Copyright (c) 1982, 1986, 1993 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* errno is not a global variable, because that would make using it non-reentrant. Instead, its address is returned by the function __errno. */ #ifndef _SYS_ERRNO_H_ #ifdef __cplusplus extern "C" { #endif #define _SYS_ERRNO_H_ #include /* Please don't use these variables directly. Use strerror instead. */ extern __IMPORT const char * const _sys_errlist[]; extern __IMPORT int _sys_nerr; #ifdef __CYGWIN__ extern __IMPORT const char * const sys_errlist[]; extern __IMPORT int sys_nerr; extern __IMPORT char *program_invocation_name; extern __IMPORT char *program_invocation_short_name; #endif #ifdef NEWLIB_GLOBAL_ERRNO #define NEWLIB_THREAD_LOCAL_ERRNO #else #define NEWLIB_THREAD_LOCAL_ERRNO NEWLIB_THREAD_LOCAL #endif extern NEWLIB_THREAD_LOCAL_ERRNO int errno; #define __errno_r(ptr) (errno) #define __errno() (&errno) /* * This lets applications check for #ifdef errno without requiring * that errno be a parameter-less macro */ #define errno() (errno) #define EPERM 1 /* Not owner */ #define ENOENT 2 /* No such file or directory */ #define ESRCH 3 /* No such process */ #define EINTR 4 /* Interrupted system call */ #define EIO 5 /* I/O error */ #define ENXIO 6 /* No such device or address */ #define E2BIG 7 /* Arg list too long */ #define ENOEXEC 8 /* Exec format error */ #define EBADF 9 /* Bad file number */ #define ECHILD 10 /* No children */ #define EAGAIN 11 /* No more processes */ #define ENOMEM 12 /* Not enough space */ #define EACCES 13 /* Permission denied */ #define EFAULT 14 /* Bad address */ #ifdef __LINUX_ERRNO_EXTENSIONS__ #define ENOTBLK 15 /* Block device required */ #endif #define EBUSY 16 /* Device or resource busy */ #define EEXIST 17 /* File exists */ #define EXDEV 18 /* Cross-device link */ #define ENODEV 19 /* No such device */ #define ENOTDIR 20 /* Not a directory */ #define EISDIR 21 /* Is a directory */ #define EINVAL 22 /* Invalid argument */ #define ENFILE 23 /* Too many open files in system */ #define EMFILE 24 /* File descriptor value too large */ #define ENOTTY 25 /* Not a character device */ #define ETXTBSY 26 /* Text file busy */ #define EFBIG 27 /* File too large */ #define ENOSPC 28 /* No space left on device */ #define ESPIPE 29 /* Illegal seek */ #define EROFS 30 /* Read-only file system */ #define EMLINK 31 /* Too many links */ #define EPIPE 32 /* Broken pipe */ #define EDOM 33 /* Mathematics argument out of domain of function */ #define ERANGE 34 /* Result too large */ #define ENOMSG 35 /* No message of desired type */ #define EIDRM 36 /* Identifier removed */ #ifdef __LINUX_ERRNO_EXTENSIONS__ #define ECHRNG 37 /* Channel number out of range */ #define EL2NSYNC 38 /* Level 2 not synchronized */ #define EL3HLT 39 /* Level 3 halted */ #define EL3RST 40 /* Level 3 reset */ #define ELNRNG 41 /* Link number out of range */ #define EUNATCH 42 /* Protocol driver not attached */ #define ENOCSI 43 /* No CSI structure available */ #define EL2HLT 44 /* Level 2 halted */ #endif #define EDEADLK 45 /* Deadlock */ #define ENOLCK 46 /* No lock */ #ifdef __LINUX_ERRNO_EXTENSIONS__ #define EBADE 50 /* Invalid exchange */ #define EBADR 51 /* Invalid request descriptor */ #define EXFULL 52 /* Exchange full */ #define ENOANO 53 /* No anode */ #define EBADRQC 54 /* Invalid request code */ #define EBADSLT 55 /* Invalid slot */ #define EDEADLOCK 56 /* File locking deadlock error */ #define EBFONT 57 /* Bad font file fmt */ #endif #define ENOSTR 60 /* Not a stream */ #define ENODATA 61 /* No data (for no delay io) */ #define ETIME 62 /* Stream ioctl timeout */ #define ENOSR 63 /* No stream resources */ #ifdef __LINUX_ERRNO_EXTENSIONS__ #define ENONET 64 /* Machine is not on the network */ #define ENOPKG 65 /* Package not installed */ #define EREMOTE 66 /* The object is remote */ #endif #define ENOLINK 67 /* Virtual circuit is gone */ #ifdef __LINUX_ERRNO_EXTENSIONS__ #define EADV 68 /* Advertise error */ #define ESRMNT 69 /* Srmount error */ #define ECOMM 70 /* Communication error on send */ #endif #define EPROTO 71 /* Protocol error */ #define EMULTIHOP 74 /* Multihop attempted */ #ifdef __LINUX_ERRNO_EXTENSIONS__ #define ELBIN 75 /* Inode is remote (not really error) */ #define EDOTDOT 76 /* Cross mount point (not really error) */ #endif #define EBADMSG 77 /* Bad message */ #define EFTYPE 79 /* Inappropriate file type or format */ #ifdef __LINUX_ERRNO_EXTENSIONS__ #define ENOTUNIQ 80 /* Given log. name not unique */ #define EBADFD 81 /* f.d. invalid for this operation */ #define EREMCHG 82 /* Remote address changed */ #define ELIBACC 83 /* Can't access a needed shared lib */ #define ELIBBAD 84 /* Accessing a corrupted shared lib */ #define ELIBSCN 85 /* .lib section in a.out corrupted */ #define ELIBMAX 86 /* Attempting to link in too many libs */ #define ELIBEXEC 87 /* Attempting to exec a shared library */ #endif #define ENOSYS 88 /* Function not implemented */ #ifdef __CYGWIN__ #define ENMFILE 89 /* No more files */ #endif #define ENOTEMPTY 90 /* Directory not empty */ #define ENAMETOOLONG 91 /* File or path name too long */ #define ELOOP 92 /* Too many symbolic links */ #define EOPNOTSUPP 95 /* Operation not supported on socket */ #define EPFNOSUPPORT 96 /* Protocol family not supported */ #define ECONNRESET 104 /* Connection reset by peer */ #define ENOBUFS 105 /* No buffer space available */ #define EAFNOSUPPORT 106 /* Address family not supported by protocol family */ #define EPROTOTYPE 107 /* Protocol wrong type for socket */ #define ENOTSOCK 108 /* Socket operation on non-socket */ #define ENOPROTOOPT 109 /* Protocol not available */ #ifdef __LINUX_ERRNO_EXTENSIONS__ #define ESHUTDOWN 110 /* Can't send after socket shutdown */ #endif #define ECONNREFUSED 111 /* Connection refused */ #define EADDRINUSE 112 /* Address already in use */ #define ECONNABORTED 113 /* Software caused connection abort */ #define ENETUNREACH 114 /* Network is unreachable */ #define ENETDOWN 115 /* Network interface is not configured */ #define ETIMEDOUT 116 /* Connection timed out */ #define EHOSTDOWN 117 /* Host is down */ #define EHOSTUNREACH 118 /* Host is unreachable */ #define EINPROGRESS 119 /* Connection already in progress */ #define EALREADY 120 /* Socket already connected */ #define EDESTADDRREQ 121 /* Destination address required */ #define EMSGSIZE 122 /* Message too long */ #define EPROTONOSUPPORT 123 /* Unknown protocol */ #ifdef __LINUX_ERRNO_EXTENSIONS__ #define ESOCKTNOSUPPORT 124 /* Socket type not supported */ #endif #define EADDRNOTAVAIL 125 /* Address not available */ #define ENETRESET 126 /* Connection aborted by network */ #define EISCONN 127 /* Socket is already connected */ #define ENOTCONN 128 /* Socket is not connected */ #define ETOOMANYREFS 129 #ifdef __LINUX_ERRNO_EXTENSIONS__ #define EPROCLIM 130 #define EUSERS 131 #endif #define EDQUOT 132 #define ESTALE 133 #define ENOTSUP 134 /* Not supported */ #ifdef __LINUX_ERRNO_EXTENSIONS__ #define ENOMEDIUM 135 /* No medium (in tape drive) */ #endif #ifdef __CYGWIN__ #define ENOSHARE 136 /* No such host or network path */ #define ECASECLASH 137 /* Filename exists with different case */ #endif #define EILSEQ 138 /* Illegal byte sequence */ #define EOVERFLOW 139 /* Value too large for defined data type */ #define ECANCELED 140 /* Operation canceled */ #define ENOTRECOVERABLE 141 /* State not recoverable */ #define EOWNERDEAD 142 /* Previous owner died */ #ifdef __LINUX_ERRNO_EXTENSIONS__ #define ESTRPIPE 143 /* Streams pipe error */ #endif #define EWOULDBLOCK EAGAIN /* Operation would block */ #define __ELASTERROR 2000 /* Users can add values starting here */ #ifdef __cplusplus } #endif #endif /* _SYS_ERRNO_H */ picolibc-1.7.4/newlib/libc/include/sys/fcntl.h000066400000000000000000000030701414576234500212330ustar00rootroot00000000000000/* Copyright (c) 1982, 1986, 1993 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _SYS_FCNTL_H_ #define _SYS_FCNTL_H_ #include #endif picolibc-1.7.4/newlib/libc/include/sys/features.h000066400000000000000000000367141414576234500217560ustar00rootroot00000000000000/* * Written by Joel Sherrill . * * COPYRIGHT (c) 1989-2014. * * On-Line Applications Research Corporation (OAR). * * Permission to use, copy, modify, and distribute this software for any * purpose without fee is hereby granted, provided that this entire notice * is included in all copies of any software which is or includes a copy * or modification of this software. * * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED * WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION * OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS * SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. * * $Id$ */ #ifndef _SYS_FEATURES_H #define _SYS_FEATURES_H #ifdef __cplusplus extern "C" { #endif #include /* Macro to test version of GCC. Returns 0 for non-GCC or too old GCC. */ #ifndef __GNUC_PREREQ # if defined __GNUC__ && defined __GNUC_MINOR__ # define __GNUC_PREREQ(maj, min) \ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) # else # define __GNUC_PREREQ(maj, min) 0 # endif #endif /* __GNUC_PREREQ */ /* Version with trailing underscores for BSD compatibility. */ #define __GNUC_PREREQ__(ma, mi) __GNUC_PREREQ(ma, mi) /* * Feature test macros control which symbols are exposed by the system * headers. Any of these must be defined before including any headers. * * __STRICT_ANSI__ (defined by gcc -ansi, -std=c90, -std=c99, or -std=c11) * ISO C * * _POSIX_SOURCE (deprecated by _POSIX_C_SOURCE=1) * _POSIX_C_SOURCE >= 1 * POSIX.1-1990 * * _POSIX_C_SOURCE >= 2 * POSIX.2-1992 * * _POSIX_C_SOURCE >= 199309L * POSIX.1b-1993 Real-time extensions * * _POSIX_C_SOURCE >= 199506L * POSIX.1c-1995 Threads extensions * * _POSIX_C_SOURCE >= 200112L * POSIX.1-2001 and C99 * * _POSIX_C_SOURCE >= 200809L * POSIX.1-2008 * * _XOPEN_SOURCE * POSIX.1-1990 and XPG4 * * _XOPEN_SOURCE_EXTENDED * SUSv1 (POSIX.2-1992 plus XPG4v2) * * _XOPEN_SOURCE >= 500 * SUSv2 (POSIX.1c-1995 plus XSI) * * _XOPEN_SOURCE >= 600 * SUSv3 (POSIX.1-2001 plus XSI) and C99 * * _XOPEN_SOURCE >= 700 * SUSv4 (POSIX.1-2008 plus XSI) * * _ISOC99_SOURCE or gcc -std=c99 or g++ * ISO C99 * * _ISOC11_SOURCE or gcc -std=c11 or g++ -std=c++11 * ISO C11 * * _ATFILE_SOURCE (implied by _POSIX_C_SOURCE >= 200809L) * "at" functions * * _LARGEFILE_SOURCE (deprecated by _XOPEN_SOURCE >= 500) * fseeko, ftello * * _GNU_SOURCE * All of the above plus GNU extensions * * _BSD_SOURCE (deprecated by _DEFAULT_SOURCE) * _SVID_SOURCE (deprecated by _DEFAULT_SOURCE) * _DEFAULT_SOURCE (or none of the above) * POSIX-1.2008 with BSD and SVr4 extensions * * _FORTIFY_SOURCE = 1 or 2 * Object Size Checking function wrappers */ #ifdef _GNU_SOURCE #undef _ATFILE_SOURCE #define _ATFILE_SOURCE 1 #undef _DEFAULT_SOURCE #define _DEFAULT_SOURCE 1 #undef _ISOC99_SOURCE #define _ISOC99_SOURCE 1 #undef _ISOC11_SOURCE #define _ISOC11_SOURCE 1 #undef _POSIX_SOURCE #define _POSIX_SOURCE 1 #undef _POSIX_C_SOURCE #define _POSIX_C_SOURCE 200809L #undef _XOPEN_SOURCE #define _XOPEN_SOURCE 700 #undef _XOPEN_SOURCE_EXTENDED #define _XOPEN_SOURCE_EXTENDED 1 #endif /* _GNU_SOURCE */ #if defined(_BSD_SOURCE) || defined(_SVID_SOURCE) || \ (!defined(__STRICT_ANSI__) && !defined(_ANSI_SOURCE) && \ !defined(_ISOC99_SOURCE) && !defined(_POSIX_SOURCE) && \ !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) #undef _DEFAULT_SOURCE #define _DEFAULT_SOURCE 1 #endif #if defined(_DEFAULT_SOURCE) #undef _POSIX_SOURCE #define _POSIX_SOURCE 1 #undef _POSIX_C_SOURCE #define _POSIX_C_SOURCE 200809L #endif #if !defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE) && \ ((!defined(__STRICT_ANSI__) && !defined(_ANSI_SOURCE)) || \ (_XOPEN_SOURCE - 0) >= 500) #define _POSIX_SOURCE 1 #if !defined(_XOPEN_SOURCE) || (_XOPEN_SOURCE - 0) >= 700 #define _POSIX_C_SOURCE 200809L #elif (_XOPEN_SOURCE - 0) >= 600 #define _POSIX_C_SOURCE 200112L #elif (_XOPEN_SOURCE - 0) >= 500 #define _POSIX_C_SOURCE 199506L #elif (_XOPEN_SOURCE - 0) < 500 #define _POSIX_C_SOURCE 2 #endif #endif #if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200809 #undef _ATFILE_SOURCE #define _ATFILE_SOURCE 1 #endif /* * The following private macros are used throughout the headers to control * which symbols should be exposed. They are for internal use only, as * indicated by the leading double underscore, and must never be used outside * of these headers. * * __POSIX_VISIBLE * any version of POSIX.1; enabled by default, or with _POSIX_SOURCE, * any value of _POSIX_C_SOURCE, or _XOPEN_SOURCE >= 500. * * __POSIX_VISIBLE >= 2 * POSIX.2-1992; enabled by default, with _POSIX_C_SOURCE >= 2, * or _XOPEN_SOURCE >= 500. * * __POSIX_VISIBLE >= 199309 * POSIX.1b-1993; enabled by default, with _POSIX_C_SOURCE >= 199309L, * or _XOPEN_SOURCE >= 500. * * __POSIX_VISIBLE >= 199506 * POSIX.1c-1995; enabled by default, with _POSIX_C_SOURCE >= 199506L, * or _XOPEN_SOURCE >= 500. * * __POSIX_VISIBLE >= 200112 * POSIX.1-2001; enabled by default, with _POSIX_C_SOURCE >= 200112L, * or _XOPEN_SOURCE >= 600. * * __POSIX_VISIBLE >= 200809 * POSIX.1-2008; enabled by default, with _POSIX_C_SOURCE >= 200809L, * or _XOPEN_SOURCE >= 700. * * __XSI_VISIBLE * XPG4 XSI extensions; enabled with any version of _XOPEN_SOURCE. * * __XSI_VISIBLE >= 4 * SUSv1 XSI extensions; enabled with both _XOPEN_SOURCE and * _XOPEN_SOURCE_EXTENDED together. * * __XSI_VISIBLE >= 500 * SUSv2 XSI extensions; enabled with _XOPEN_SOURCE >= 500. * * __XSI_VISIBLE >= 600 * SUSv3 XSI extensions; enabled with _XOPEN_SOURCE >= 600. * * __XSI_VISIBLE >= 700 * SUSv4 XSI extensions; enabled with _XOPEN_SOURCE >= 700. * * __ISO_C_VISIBLE >= 1999 * ISO C99; enabled with gcc -std=c99 or newer (on by default since GCC 5), * any version of C++, or with _ISOC99_SOURCE, _POSIX_C_SOURCE >= 200112L, * or _XOPEN_SOURCE >= 600. * * __ISO_C_VISIBLE >= 2011 * ISO C11; enabled with gcc -std=c11 or newer (on by default since GCC 5), * g++ -std=c++11 or newer (on by default since GCC 6), or with * _ISOC11_SOURCE. * * __ATFILE_VISIBLE * "at" functions; enabled by default, with _ATFILE_SOURCE, * _POSIX_C_SOURCE >= 200809L, or _XOPEN_SOURCE >= 700. * * __LARGEFILE_VISIBLE * fseeko, ftello; enabled with _LARGEFILE_SOURCE or _XOPEN_SOURCE >= 500. * * __BSD_VISIBLE * BSD extensions; enabled by default, or with _BSD_SOURCE. * * __SVID_VISIBLE * SVr4 extensions; enabled by default, or with _SVID_SOURCE. * * __MISC_VISIBLE * Extensions found in both BSD and SVr4 (shorthand for * (__BSD_VISIBLE || __SVID_VISIBLE)), or newlib-specific * extensions; enabled by default. * * __GNU_VISIBLE * GNU extensions; enabled with _GNU_SOURCE. * * __SSP_FORTIFY_LEVEL * Object Size Checking; defined to 0 (off), 1, or 2. * * In all cases above, "enabled by default" means either by defining * _DEFAULT_SOURCE, or by not defining any of the public feature test macros. */ #ifdef _ATFILE_SOURCE #define __ATFILE_VISIBLE 1 #else #define __ATFILE_VISIBLE 0 #endif #ifdef _DEFAULT_SOURCE #define __BSD_VISIBLE 1 #else #define __BSD_VISIBLE 0 #endif #ifdef _GNU_SOURCE #define __GNU_VISIBLE 1 #else #define __GNU_VISIBLE 0 #endif #if defined(_ISOC11_SOURCE) || \ (__STDC_VERSION__ - 0) >= 201112L || (__cplusplus - 0) >= 201103L #define __ISO_C_VISIBLE 2011 #elif defined(_ISOC99_SOURCE) || (_POSIX_C_SOURCE - 0) >= 200112L || \ (__STDC_VERSION__ - 0) >= 199901L || defined(__cplusplus) #define __ISO_C_VISIBLE 1999 #else #define __ISO_C_VISIBLE 1990 #endif #if defined(_LARGEFILE_SOURCE) || (_XOPEN_SOURCE - 0) >= 500 #define __LARGEFILE_VISIBLE 1 #else #define __LARGEFILE_VISIBLE 0 #endif #ifdef _DEFAULT_SOURCE #define __MISC_VISIBLE 1 #else #define __MISC_VISIBLE 0 #endif #if (_POSIX_C_SOURCE - 0) >= 200809L #define __POSIX_VISIBLE 200809 #elif (_POSIX_C_SOURCE - 0) >= 200112L #define __POSIX_VISIBLE 200112 #elif (_POSIX_C_SOURCE - 0) >= 199506L #define __POSIX_VISIBLE 199506 #elif (_POSIX_C_SOURCE - 0) >= 199309L #define __POSIX_VISIBLE 199309 #elif (_POSIX_C_SOURCE - 0) >= 2 || defined(_XOPEN_SOURCE) #define __POSIX_VISIBLE 199209 #elif defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) #define __POSIX_VISIBLE 199009 #else #define __POSIX_VISIBLE 0 #endif #ifdef _DEFAULT_SOURCE #define __SVID_VISIBLE 1 #else #define __SVID_VISIBLE 0 #endif #if (_XOPEN_SOURCE - 0) >= 700 #define __XSI_VISIBLE 700 #elif (_XOPEN_SOURCE - 0) >= 600 #define __XSI_VISIBLE 600 #elif (_XOPEN_SOURCE - 0) >= 500 #define __XSI_VISIBLE 500 #elif defined(_XOPEN_SOURCE) && defined(_XOPEN_SOURCE_EXTENDED) #define __XSI_VISIBLE 4 #elif defined(_XOPEN_SOURCE) #define __XSI_VISIBLE 1 #else #define __XSI_VISIBLE 0 #endif #if _FORTIFY_SOURCE > 0 && !defined(__cplusplus) && !defined(__lint__) && \ (__OPTIMIZE__ > 0 || defined(__clang__)) && __GNUC_PREREQ__(4, 1) # if _FORTIFY_SOURCE > 1 # define __SSP_FORTIFY_LEVEL 2 # else # define __SSP_FORTIFY_LEVEL 1 # endif #else # define __SSP_FORTIFY_LEVEL 0 #endif /* RTEMS adheres to POSIX -- 1003.1b with some features from annexes. */ #ifdef __rtems__ #define _POSIX_JOB_CONTROL 1 #define _POSIX_SAVED_IDS 1 #define _POSIX_VERSION 199309L #define _POSIX_ASYNCHRONOUS_IO 1 #define _POSIX_FSYNC 1 #define _POSIX_MAPPED_FILES 1 #define _POSIX_MEMLOCK 1 #define _POSIX_MEMLOCK_RANGE 1 #define _POSIX_MEMORY_PROTECTION 1 #define _POSIX_MESSAGE_PASSING 1 #define _POSIX_MONOTONIC_CLOCK 200112L #define _POSIX_CLOCK_SELECTION 200112L #define _POSIX_PRIORITIZED_IO 1 #define _POSIX_PRIORITY_SCHEDULING 1 #define _POSIX_REALTIME_SIGNALS 1 #define _POSIX_SEMAPHORES 1 #define _POSIX_SHARED_MEMORY_OBJECTS 1 #define _POSIX_SYNCHRONIZED_IO 1 #define _POSIX_TIMERS 1 #define _POSIX_BARRIERS 200112L #define _POSIX_READER_WRITER_LOCKS 200112L #define _POSIX_SPIN_LOCKS 200112L /* In P1003.1b but defined by drafts at least as early as P1003.1c/D10 */ #define _POSIX_THREADS 1 #define _POSIX_THREAD_ATTR_STACKADDR 1 #define _POSIX_THREAD_ATTR_STACKSIZE 1 #define _POSIX_THREAD_PRIORITY_SCHEDULING 1 #define _POSIX_THREAD_PRIO_INHERIT 1 #define _POSIX_THREAD_PRIO_PROTECT 1 #define _POSIX_THREAD_PROCESS_SHARED 1 #define _POSIX_THREAD_SAFE_FUNCTIONS 1 /* P1003.4b/D8 defines the constants below this comment. */ #define _POSIX_SPAWN 1 #define _POSIX_TIMEOUTS 1 #define _POSIX_CPUTIME 1 #define _POSIX_THREAD_CPUTIME 1 #define _POSIX_SPORADIC_SERVER 1 #define _POSIX_THREAD_SPORADIC_SERVER 1 #define _POSIX_DEVICE_CONTROL 1 #define _POSIX_DEVCTL_DIRECTION 1 #define _POSIX_INTERRUPT_CONTROL 1 #define _POSIX_ADVISORY_INFO 1 /* UNIX98 added some new pthread mutex attributes */ #define _UNIX98_THREAD_MUTEX_ATTRIBUTES 1 /* POSIX 1003.26-2003 defined device control method */ #define _POSIX_26_VERSION 200312L #endif /* XMK loosely adheres to POSIX -- 1003.1 */ #ifdef __XMK__ #define _POSIX_THREADS 1 #define _POSIX_THREAD_PRIORITY_SCHEDULING 1 #endif #ifdef __svr4__ # define _POSIX_JOB_CONTROL 1 # define _POSIX_SAVED_IDS 1 # define _POSIX_VERSION 199009L #endif #ifdef __CYGWIN__ #if __POSIX_VISIBLE >= 200809 #define _POSIX_VERSION 200809L #define _POSIX2_VERSION 200809L #elif __POSIX_VISIBLE >= 200112 #define _POSIX_VERSION 200112L #define _POSIX2_VERSION 200112L #elif __POSIX_VISIBLE >= 199506 #define _POSIX_VERSION 199506L #define _POSIX2_VERSION 199506L #elif __POSIX_VISIBLE >= 199309 #define _POSIX_VERSION 199309L #define _POSIX2_VERSION 199209L #elif __POSIX_VISIBLE >= 199209 #define _POSIX_VERSION 199009L #define _POSIX2_VERSION 199209L #elif __POSIX_VISIBLE #define _POSIX_VERSION 199009L #endif #if __XSI_VISIBLE >= 4 #define _XOPEN_VERSION __XSI_VISIBLE #endif #define _POSIX_ADVISORY_INFO 200809L #define _POSIX_ASYNCHRONOUS_IO 200809L #define _POSIX_BARRIERS 200809L #define _POSIX_CHOWN_RESTRICTED 1 #define _POSIX_CLOCK_SELECTION 200809L #define _POSIX_CPUTIME 200809L #define _POSIX_FSYNC 200809L #define _POSIX_IPV6 200809L #define _POSIX_JOB_CONTROL 1 #define _POSIX_MAPPED_FILES 200809L /* #define _POSIX_MEMLOCK -1 */ #define _POSIX_MEMLOCK_RANGE 200809L #define _POSIX_MEMORY_PROTECTION 200809L #define _POSIX_MESSAGE_PASSING 200809L #define _POSIX_MONOTONIC_CLOCK 200809L #define _POSIX_NO_TRUNC 1 /* #define _POSIX_PRIORITIZED_IO -1 */ #define _POSIX_PRIORITY_SCHEDULING 200809L #define _POSIX_RAW_SOCKETS 200809L #define _POSIX_READER_WRITER_LOCKS 200809L #define _POSIX_REALTIME_SIGNALS 200809L #define _POSIX_REGEXP 1 #define _POSIX_SAVED_IDS 1 #define _POSIX_SEMAPHORES 200809L #define _POSIX_SHARED_MEMORY_OBJECTS 200809L #define _POSIX_SHELL 1 #define _POSIX_SPAWN 200809L #define _POSIX_SPIN_LOCKS 200809L /* #define _POSIX_SPORADIC_SERVER -1 */ #define _POSIX_SYNCHRONIZED_IO 200809L #define _POSIX_THREAD_ATTR_STACKADDR 200809L #define _POSIX_THREAD_ATTR_STACKSIZE 200809L #define _POSIX_THREAD_CPUTIME 200809L /* #define _POSIX_THREAD_PRIO_INHERIT -1 */ /* #define _POSIX_THREAD_PRIO_PROTECT -1 */ #define _POSIX_THREAD_PRIORITY_SCHEDULING 200809L #define _POSIX_THREAD_PROCESS_SHARED 200809L #define _POSIX_THREAD_SAFE_FUNCTIONS 200809L /* #define _POSIX_THREAD_SPORADIC_SERVER -1 */ #define _POSIX_THREADS 200809L #define _POSIX_TIMEOUTS 200809L #define _POSIX_TIMERS 200809L /* #define _POSIX_TRACE -1 */ /* #define _POSIX_TRACE_EVENT_FILTER -1 */ /* #define _POSIX_TRACE_INHERIT -1 */ /* #define _POSIX_TRACE_LOG -1 */ /* #define _POSIX_TYPED_MEMORY_OBJECTS -1 */ #define _POSIX_VDISABLE '\0' #if __POSIX_VISIBLE >= 2 #define _POSIX2_C_VERSION _POSIX2_VERSION #define _POSIX2_C_BIND _POSIX2_VERSION #define _POSIX2_C_DEV _POSIX2_VERSION #define _POSIX2_CHAR_TERM _POSIX2_VERSION /* #define _POSIX2_FORT_DEV -1 */ /* #define _POSIX2_FORT_RUN -1 */ /* #define _POSIX2_LOCALEDEF -1 */ /* #define _POSIX2_PBS -1 */ /* #define _POSIX2_PBS_ACCOUNTING -1 */ /* #define _POSIX2_PBS_CHECKPOINT -1 */ /* #define _POSIX2_PBS_LOCATE -1 */ /* #define _POSIX2_PBS_MESSAGE -1 */ /* #define _POSIX2_PBS_TRACK -1 */ #define _POSIX2_SW_DEV _POSIX2_VERSION #define _POSIX2_UPE _POSIX2_VERSION #endif /* __POSIX_VISIBLE >= 2 */ #define _POSIX_V6_ILP32_OFF32 -1 #ifdef __LP64__ #define _POSIX_V6_ILP32_OFFBIG -1 #define _POSIX_V6_LP64_OFF64 1 #define _POSIX_V6_LPBIG_OFFBIG 1 #else #define _POSIX_V6_ILP32_OFFBIG 1 #define _POSIX_V6_LP64_OFF64 -1 #define _POSIX_V6_LPBIG_OFFBIG -1 #endif #define _POSIX_V7_ILP32_OFF32 _POSIX_V6_ILP32_OFF32 #define _POSIX_V7_ILP32_OFFBIG _POSIX_V6_ILP32_OFFBIG #define _POSIX_V7_LP64_OFF64 _POSIX_V6_LP64_OFF64 #define _POSIX_V7_LPBIG_OFFBIG _POSIX_V6_LPBIG_OFFBIG #define _XBS5_ILP32_OFF32 _POSIX_V6_ILP32_OFF32 #define _XBS5_ILP32_OFFBIG _POSIX_V6_ILP32_OFFBIG #define _XBS5_LP64_OFF64 _POSIX_V6_LP64_OFF64 #define _XBS5_LPBIG_OFFBIG _POSIX_V6_LPBIG_OFFBIG #if __XSI_VISIBLE #define _XOPEN_CRYPT 1 #define _XOPEN_ENH_I18N 1 /* #define _XOPEN_LEGACY -1 */ /* #define _XOPEN_REALTIME -1 */ /* #define _XOPEN_REALTIME_THREADS -1 */ #define _XOPEN_SHM 1 /* #define _XOPEN_STREAMS -1 */ /* #define _XOPEN_UNIX -1 */ #endif /* __XSI_VISIBLE */ /* * newlib's wide char conversion functions were updated on * 2019-01-12 * to UNICODE version: * 11.0.0 released 2018-06-05 */ #define __STDC_ISO_10646__ 201806L #endif /* __CYGWIN__ */ #ifdef __cplusplus } #endif #endif /* _SYS_FEATURES_H */ picolibc-1.7.4/newlib/libc/include/sys/fenv.h000066400000000000000000000073031414576234500210660ustar00rootroot00000000000000/* (c) Copyright 2019 Joel Sherrill All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _SYS_FENV_H_ #define _SYS_FENV_H_ /******************************************************************************* * THIS FILE IS A TEMPLATE, INTENDED TO BE USED AS A STARTING POINT FOR * TARGET-SPECIFIC FLOATING-POINT IMPLEMENTATIONS. NOTES BELOW HIGHLIGHT THE * BASICS OF WHAT NEEDS TO BE DEFINED. THE DEFAULT IMPLEMTATION IS * DEGENERATE, WITH ALL FUNCTIONS RETURNING ERROR AND NO EXCEPTIONS AND NO * ROUNDING MODES DEFINED (SINCE NONE ARE SUPPORTED). * THE MACRO VALUES ARE EXAMPLES ONLY, ALTHOUGH TAKEN FROM A WORKING * IMPLEMENTATION. * REMOVE THIS NOTICE WHEN COPYING TO A REAL IMPLEMENTATION, REPLACING IT WITH * ANY TARGET-SPECIFIC NOTES OF INTEREST. THE FENV FUNCTION MAN PAGES POINT TO * THIS FILE AS A MEANS OF DETERMINING A FUNCTIONAL VS. NON-FUNCTIONAL * IMPLEMENTATION. ******************************************************************************/ /* * The following macros are to be defined if the respective exception is * supported by the implementation, each with a unique bit mask: * * FE_DIVBYZERO * FE_INEXACT * FE_INVALID * FE_OVERFLOW * FE_UNDERFLOW * * Other implementation-specific exceptions may be defined, and must start * with FE_ followed by a capital letter. * * FE_ALL_EXCEPT must be defined as the logical OR of all exceptions. */ /* #define FE_DIVBYZERO 0x00000001 #define FE_INEXACT 0x00000002 #define FE_INVALID 0x00000004 #define FE_OVERFLOW 0x00000008 #define FE_UNDERFLOW 0x00000010 #define FE_ALL_EXCEPT \ (FE_DIVBYZERO|FE_INEXACT|FE_INVALID|FE_OVERFLOW|FE_UNDERFLOW) */ /* * The following macros are to be defined if the respective rounding * direction is supported by the implementation via the fegetround() and * fesetround() functions, each with a unique positive value. * * FE_DOWNWARD * FE_TONEAREST * FE_TOWARDZERO * FE_UPWARD * * Other implementation-specific rounding modes may be defined, and must start * with FE_ followed by a capital letter. */ /* #define FE_DOWNWARD 1 #define FE_TONEAREST 2 #define FE_TOWARDZERO 3 #define FE_UPWARD 4 */ /* * The following typedefs are required. These should be defined properly * to support the architecture specific implementation. See the C and * POSIX standards for details: * * fenv_t * fexcept_t */ typedef int fenv_t; typedef int fexcept_t; #endif /* _SYS_FENV_H_ */ picolibc-1.7.4/newlib/libc/include/sys/file.h000066400000000000000000000027751414576234500210570ustar00rootroot00000000000000/* Copyright (c) 1982, 1986, 1993 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include picolibc-1.7.4/newlib/libc/include/sys/iconvnls.h000066400000000000000000000051301414576234500217570ustar00rootroot00000000000000/* * Copyright (c) 2003-2004, Artem B. Bityuckiy. * Rights transferred to Franklin Electronic Publishers. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* * Funtions, macros, etc implimented in iconv library but used by other * NLS-related subsystems too. */ #ifndef __SYS_ICONVNLS_H__ #define __SYS_ICONVNLS_H__ #include <_ansi.h> #include #include /* Iconv data path environment variable name */ #define NLS_ENVVAR_NAME "NLSPATH" /* Default NLSPATH value */ #ifndef ICONV_DEFAULT_NLSPATH #define ICONV_DEFAULT_NLSPATH "/usr/locale" #endif /* Direction markers */ #define ICONV_NLS_FROM 0 #define ICONV_NLS_TO 1 void _iconv_nls_get_state (iconv_t cd, mbstate_t *ps, int direction); int _iconv_nls_set_state (iconv_t cd, mbstate_t *ps, int direction); int _iconv_nls_is_stateful (iconv_t cd, int direction); int _iconv_nls_get_mb_cur_max (iconv_t cd, int direction); size_t _iconv_nls_conv (iconv_t cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); const char * _iconv_nls_construct_filename (const char *file, const char *dir, const char *ext); int _iconv_nls_open (const char *encoding, iconv_t *towc, iconv_t *fromwc, int flag); char * _iconv_resolve_encoding_name (const char *ca); #endif /* __SYS_ICONVNLS_H__ */ picolibc-1.7.4/newlib/libc/include/sys/lock.h000066400000000000000000000050631414576234500210610ustar00rootroot00000000000000/* Copyright (c) 2002 Jeff Johnston */ #ifndef __SYS_LOCK_H__ #define __SYS_LOCK_H__ /* dummy lock routines for single-threaded aps */ #include #include <_ansi.h> #if !defined(_RETARGETABLE_LOCKING) typedef int _LOCK_T; typedef int _LOCK_RECURSIVE_T; #define __LOCK_INIT(lock) #define __LOCK_INIT_RECURSIVE(lock) #define __lock_init(lock) ((void) 0) #define __lock_init_recursive(lock) ((void) 0) #define __lock_close(lock) ((void) 0) #define __lock_close_recursive(lock) ((void) 0) #define __lock_acquire(lock) ((void) 0) #define __lock_acquire_recursive(lock) ((void) 0) #define __lock_try_acquire(lock) ((void) 0) #define __lock_try_acquire_recursive(lock) ((void) 0) #define __lock_release(lock) ((void) 0) #define __lock_release_recursive(lock) ((void) 0) #else #ifdef __cplusplus extern "C" { #endif struct __lock; typedef struct __lock * _LOCK_T; #define _LOCK_RECURSIVE_T _LOCK_T #define __LOCK_INIT(lock) extern struct __lock __lock_ ## lock; #define __LOCK_INIT_RECURSIVE(lock) __LOCK_INIT(lock) extern void __retarget_lock_init(_LOCK_T *lock); #define __lock_init(lock) __retarget_lock_init(&lock) extern void __retarget_lock_init_recursive(_LOCK_T *lock); #define __lock_init_recursive(lock) __retarget_lock_init_recursive(&lock) extern void __retarget_lock_close(_LOCK_T lock); #define __lock_close(lock) __retarget_lock_close(lock) extern void __retarget_lock_close_recursive(_LOCK_T lock); #define __lock_close_recursive(lock) __retarget_lock_close_recursive(lock) extern void __retarget_lock_acquire(_LOCK_T lock); #define __lock_acquire(lock) __retarget_lock_acquire(lock) extern void __retarget_lock_acquire_recursive(_LOCK_T lock); #define __lock_acquire_recursive(lock) __retarget_lock_acquire_recursive(lock) extern int __retarget_lock_try_acquire(_LOCK_T lock); #define __lock_try_acquire(lock) __retarget_lock_try_acquire(lock) extern int __retarget_lock_try_acquire_recursive(_LOCK_T lock); #define __lock_try_acquire_recursive(lock) \ __retarget_lock_try_acquire_recursive(lock) extern void __retarget_lock_release(_LOCK_T lock); #define __lock_release(lock) __retarget_lock_release(lock) extern void __retarget_lock_release_recursive(_LOCK_T lock); #define __lock_release_recursive(lock) __retarget_lock_release_recursive(lock) #ifdef __cplusplus } #endif #endif /* !defined(_RETARGETABLE_LOCKING) */ #define __LIBC_LOCK() __lock_acquire_recursive(&__lock___libc_recursive_mutex) #define __LIBC_UNLOCK() __lock_release_recursive(&__lock___libc_recursive_mutex) __LOCK_INIT_RECURSIVE(__libc_recursive_mutex) #endif /* __SYS_LOCK_H__ */ picolibc-1.7.4/newlib/libc/include/sys/meson.build000066400000000000000000000046711414576234500221260ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # inc_sys_headers_all = [ 'cdefs.h', 'config.h', 'custom_file.h', '_default_fcntl.h', 'dirent.h', 'dir.h', 'errno.h', 'fcntl.h', 'features.h', 'fenv.h', 'file.h', 'iconvnls.h', '_intsup.h', '_locale.h', 'lock.h', 'param.h', 'queue.h', 'resource.h', 'sched.h', 'select.h', 'signal.h', '_sigset.h', 'stat.h', '_stdint.h', 'string.h', 'syslimits.h', 'timeb.h', 'time.h', 'times.h', '_timespec.h', 'timespec.h', '_timeval.h', 'tree.h', '_types.h', 'types.h', 'unistd.h', 'utime.h', 'wait.h' ] if not tinystdio inc_sys_headers_all += ['reent.h'] endif inc_sys_headers = [] foreach file : inc_sys_headers_all if not (file in inc_sys_headers_machine) inc_sys_headers += file else message('libc/include/sys/' + file + ': machine overrides generic') endif endforeach install_headers(inc_sys_headers, subdir:'sys' ) picolibc-1.7.4/newlib/libc/include/sys/param.h000066400000000000000000000042441414576234500212310ustar00rootroot00000000000000/* Copyright (c) 1982, 1986, 1993 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This is a dummy file, not customized for any particular system. If there is a param.h in libc/sys/SYSDIR/sys, it will override this one. */ #ifndef _SYS_PARAM_H # define _SYS_PARAM_H #include #include #include #include #ifndef NBBY # define NBBY 8 /* number of bits in a byte */ #endif #ifndef HZ # define HZ (60) #endif #ifndef NOFILE # define NOFILE (60) #endif #ifndef PATHSIZE # define PATHSIZE (1024) #endif #define MAXPATHLEN PATH_MAX #define MAX(a,b) ((a) > (b) ? (a) : (b)) #define MIN(a,b) ((a) < (b) ? (a) : (b)) #ifndef howmany #define howmany(x, y) (((x)+((y)-1))/(y)) #endif #endif picolibc-1.7.4/newlib/libc/include/sys/queue.h000066400000000000000000000731201414576234500212540ustar00rootroot00000000000000/*- * Copyright (c) 1991, 1993 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)queue.h 8.5 (Berkeley) 8/20/94 * $FreeBSD$ */ #ifndef _SYS_QUEUE_H_ #define _SYS_QUEUE_H_ #include /* * This file defines four types of data structures: singly-linked lists, * singly-linked tail queues, lists and tail queues. * * A singly-linked list is headed by a single forward pointer. The elements * are singly linked for minimum space and pointer manipulation overhead at * the expense of O(n) removal for arbitrary elements. New elements can be * added to the list after an existing element or at the head of the list. * Elements being removed from the head of the list should use the explicit * macro for this purpose for optimum efficiency. A singly-linked list may * only be traversed in the forward direction. Singly-linked lists are ideal * for applications with large datasets and few or no removals or for * implementing a LIFO queue. * * A singly-linked tail queue is headed by a pair of pointers, one to the * head of the list and the other to the tail of the list. The elements are * singly linked for minimum space and pointer manipulation overhead at the * expense of O(n) removal for arbitrary elements. New elements can be added * to the list after an existing element, at the head of the list, or at the * end of the list. Elements being removed from the head of the tail queue * should use the explicit macro for this purpose for optimum efficiency. * A singly-linked tail queue may only be traversed in the forward direction. * Singly-linked tail queues are ideal for applications with large datasets * and few or no removals or for implementing a FIFO queue. * * A list is headed by a single forward pointer (or an array of forward * pointers for a hash table header). The elements are doubly linked * so that an arbitrary element can be removed without a need to * traverse the list. New elements can be added to the list before * or after an existing element or at the head of the list. A list * may be traversed in either direction. * * A tail queue is headed by a pair of pointers, one to the head of the * list and the other to the tail of the list. The elements are doubly * linked so that an arbitrary element can be removed without a need to * traverse the list. New elements can be added to the list before or * after an existing element, at the head of the list, or at the end of * the list. A tail queue may be traversed in either direction. * * For details on the use of these macros, see the queue(3) manual page. * * Below is a summary of implemented functions where: * + means the macro is available * - means the macro is not available * s means the macro is available but is slow (runs in O(n) time) * * SLIST LIST STAILQ TAILQ * _HEAD + + + + * _CLASS_HEAD + + + + * _HEAD_INITIALIZER + + + + * _ENTRY + + + + * _CLASS_ENTRY + + + + * _INIT + + + + * _EMPTY + + + + * _FIRST + + + + * _NEXT + + + + * _PREV - + - + * _LAST - - + + * _LAST_FAST - - - + * _FOREACH + + + + * _FOREACH_FROM + + + + * _FOREACH_SAFE + + + + * _FOREACH_FROM_SAFE + + + + * _FOREACH_REVERSE - - - + * _FOREACH_REVERSE_FROM - - - + * _FOREACH_REVERSE_SAFE - - - + * _FOREACH_REVERSE_FROM_SAFE - - - + * _INSERT_HEAD + + + + * _INSERT_BEFORE - + - + * _INSERT_AFTER + + + + * _INSERT_TAIL - - + + * _CONCAT s s + + * _REMOVE_AFTER + - + - * _REMOVE_HEAD + - + - * _REMOVE s + s + * _SWAP + + + + * */ #ifdef QUEUE_MACRO_DEBUG #warn Use QUEUE_MACRO_DEBUG_TRACE and/or QUEUE_MACRO_DEBUG_TRASH #define QUEUE_MACRO_DEBUG_TRACE #define QUEUE_MACRO_DEBUG_TRASH #endif #ifdef QUEUE_MACRO_DEBUG_TRACE /* Store the last 2 places the queue element or head was altered */ struct qm_trace { unsigned long lastline; unsigned long prevline; const char *lastfile; const char *prevfile; }; #define TRACEBUF struct qm_trace trace; #define TRACEBUF_INITIALIZER { __LINE__, 0, __FILE__, NULL } , #define QMD_TRACE_HEAD(head) do { \ (head)->trace.prevline = (head)->trace.lastline; \ (head)->trace.prevfile = (head)->trace.lastfile; \ (head)->trace.lastline = __LINE__; \ (head)->trace.lastfile = __FILE__; \ } while (0) #define QMD_TRACE_ELEM(elem) do { \ (elem)->trace.prevline = (elem)->trace.lastline; \ (elem)->trace.prevfile = (elem)->trace.lastfile; \ (elem)->trace.lastline = __LINE__; \ (elem)->trace.lastfile = __FILE__; \ } while (0) #else /* !QUEUE_MACRO_DEBUG_TRACE */ #define QMD_TRACE_ELEM(elem) #define QMD_TRACE_HEAD(head) #define TRACEBUF #define TRACEBUF_INITIALIZER #endif /* QUEUE_MACRO_DEBUG_TRACE */ #ifdef QUEUE_MACRO_DEBUG_TRASH #define TRASHIT(x) do {(x) = (void *)-1;} while (0) #define QMD_IS_TRASHED(x) ((x) == (void *)(intptr_t)-1) #else /* !QUEUE_MACRO_DEBUG_TRASH */ #define TRASHIT(x) #define QMD_IS_TRASHED(x) 0 #endif /* QUEUE_MACRO_DEBUG_TRASH */ #if defined(QUEUE_MACRO_DEBUG_TRACE) || defined(QUEUE_MACRO_DEBUG_TRASH) #define QMD_SAVELINK(name, link) void **name = (void *)&(link) #else /* !QUEUE_MACRO_DEBUG_TRACE && !QUEUE_MACRO_DEBUG_TRASH */ #define QMD_SAVELINK(name, link) #endif /* QUEUE_MACRO_DEBUG_TRACE || QUEUE_MACRO_DEBUG_TRASH */ #ifdef __cplusplus /* * In C++ there can be structure lists and class lists: */ #define QUEUE_TYPEOF(type) type #else #define QUEUE_TYPEOF(type) struct type #endif /* * Singly-linked List declarations. */ #define SLIST_HEAD(name, type) \ struct name { \ struct type *slh_first; /* first element */ \ } #define SLIST_CLASS_HEAD(name, type) \ struct name { \ class type *slh_first; /* first element */ \ } #define SLIST_HEAD_INITIALIZER(head) \ { NULL } #define SLIST_ENTRY(type) \ struct { \ struct type *sle_next; /* next element */ \ } #define SLIST_CLASS_ENTRY(type) \ struct { \ class type *sle_next; /* next element */ \ } /* * Singly-linked List functions. */ #if (defined(_KERNEL) && defined(INVARIANTS)) #define QMD_SLIST_CHECK_PREVPTR(prevp, elm) do { \ if (*(prevp) != (elm)) \ panic("Bad prevptr *(%p) == %p != %p", \ (prevp), *(prevp), (elm)); \ } while (0) #else #define QMD_SLIST_CHECK_PREVPTR(prevp, elm) #endif #define SLIST_CONCAT(head1, head2, type, field) do { \ QUEUE_TYPEOF(type) *curelm = SLIST_FIRST(head1); \ if (curelm == NULL) { \ if ((SLIST_FIRST(head1) = SLIST_FIRST(head2)) != NULL) \ SLIST_INIT(head2); \ } else if (SLIST_FIRST(head2) != NULL) { \ while (SLIST_NEXT(curelm, field) != NULL) \ curelm = SLIST_NEXT(curelm, field); \ SLIST_NEXT(curelm, field) = SLIST_FIRST(head2); \ SLIST_INIT(head2); \ } \ } while (0) #define SLIST_EMPTY(head) ((head)->slh_first == NULL) #define SLIST_FIRST(head) ((head)->slh_first) #define SLIST_FOREACH(var, head, field) \ for ((var) = SLIST_FIRST((head)); \ (var); \ (var) = SLIST_NEXT((var), field)) #define SLIST_FOREACH_FROM(var, head, field) \ for ((var) = ((var) ? (var) : SLIST_FIRST((head))); \ (var); \ (var) = SLIST_NEXT((var), field)) #define SLIST_FOREACH_SAFE(var, head, field, tvar) \ for ((var) = SLIST_FIRST((head)); \ (var) && ((tvar) = SLIST_NEXT((var), field), 1); \ (var) = (tvar)) #define SLIST_FOREACH_FROM_SAFE(var, head, field, tvar) \ for ((var) = ((var) ? (var) : SLIST_FIRST((head))); \ (var) && ((tvar) = SLIST_NEXT((var), field), 1); \ (var) = (tvar)) #define SLIST_FOREACH_PREVPTR(var, varp, head, field) \ for ((varp) = &SLIST_FIRST((head)); \ ((var) = *(varp)) != NULL; \ (varp) = &SLIST_NEXT((var), field)) #define SLIST_INIT(head) do { \ SLIST_FIRST((head)) = NULL; \ } while (0) #define SLIST_INSERT_AFTER(slistelm, elm, field) do { \ SLIST_NEXT((elm), field) = SLIST_NEXT((slistelm), field); \ SLIST_NEXT((slistelm), field) = (elm); \ } while (0) #define SLIST_INSERT_HEAD(head, elm, field) do { \ SLIST_NEXT((elm), field) = SLIST_FIRST((head)); \ SLIST_FIRST((head)) = (elm); \ } while (0) #define SLIST_NEXT(elm, field) ((elm)->field.sle_next) #define SLIST_REMOVE(head, elm, type, field) do { \ QMD_SAVELINK(oldnext, (elm)->field.sle_next); \ if (SLIST_FIRST((head)) == (elm)) { \ SLIST_REMOVE_HEAD((head), field); \ } \ else { \ QUEUE_TYPEOF(type) *curelm = SLIST_FIRST(head); \ while (SLIST_NEXT(curelm, field) != (elm)) \ curelm = SLIST_NEXT(curelm, field); \ SLIST_REMOVE_AFTER(curelm, field); \ } \ TRASHIT(*oldnext); \ } while (0) #define SLIST_REMOVE_AFTER(elm, field) do { \ SLIST_NEXT(elm, field) = \ SLIST_NEXT(SLIST_NEXT(elm, field), field); \ } while (0) #define SLIST_REMOVE_HEAD(head, field) do { \ SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \ } while (0) #define SLIST_REMOVE_PREVPTR(prevp, elm, field) do { \ QMD_SLIST_CHECK_PREVPTR(prevp, elm); \ *(prevp) = SLIST_NEXT(elm, field); \ TRASHIT((elm)->field.sle_next); \ } while (0) #define SLIST_SWAP(head1, head2, type) do { \ QUEUE_TYPEOF(type) *swap_first = SLIST_FIRST(head1); \ SLIST_FIRST(head1) = SLIST_FIRST(head2); \ SLIST_FIRST(head2) = swap_first; \ } while (0) /* * Singly-linked Tail queue declarations. */ #define STAILQ_HEAD(name, type) \ struct name { \ struct type *stqh_first;/* first element */ \ struct type **stqh_last;/* addr of last next element */ \ } #define STAILQ_CLASS_HEAD(name, type) \ struct name { \ class type *stqh_first; /* first element */ \ class type **stqh_last; /* addr of last next element */ \ } #define STAILQ_HEAD_INITIALIZER(head) \ { NULL, &(head).stqh_first } #define STAILQ_ENTRY(type) \ struct { \ struct type *stqe_next; /* next element */ \ } #define STAILQ_CLASS_ENTRY(type) \ struct { \ class type *stqe_next; /* next element */ \ } /* * Singly-linked Tail queue functions. */ #define STAILQ_CONCAT(head1, head2) do { \ if (!STAILQ_EMPTY((head2))) { \ *(head1)->stqh_last = (head2)->stqh_first; \ (head1)->stqh_last = (head2)->stqh_last; \ STAILQ_INIT((head2)); \ } \ } while (0) #define STAILQ_EMPTY(head) ((head)->stqh_first == NULL) #define STAILQ_FIRST(head) ((head)->stqh_first) #define STAILQ_FOREACH(var, head, field) \ for((var) = STAILQ_FIRST((head)); \ (var); \ (var) = STAILQ_NEXT((var), field)) #define STAILQ_FOREACH_FROM(var, head, field) \ for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \ (var); \ (var) = STAILQ_NEXT((var), field)) #define STAILQ_FOREACH_SAFE(var, head, field, tvar) \ for ((var) = STAILQ_FIRST((head)); \ (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ (var) = (tvar)) #define STAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \ for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \ (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ (var) = (tvar)) #define STAILQ_INIT(head) do { \ STAILQ_FIRST((head)) = NULL; \ (head)->stqh_last = &STAILQ_FIRST((head)); \ } while (0) #define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \ if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL)\ (head)->stqh_last = &STAILQ_NEXT((elm), field); \ STAILQ_NEXT((tqelm), field) = (elm); \ } while (0) #define STAILQ_INSERT_HEAD(head, elm, field) do { \ if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL) \ (head)->stqh_last = &STAILQ_NEXT((elm), field); \ STAILQ_FIRST((head)) = (elm); \ } while (0) #define STAILQ_INSERT_TAIL(head, elm, field) do { \ STAILQ_NEXT((elm), field) = NULL; \ *(head)->stqh_last = (elm); \ (head)->stqh_last = &STAILQ_NEXT((elm), field); \ } while (0) #define STAILQ_LAST(head, type, field) \ (STAILQ_EMPTY((head)) ? NULL : \ __containerof((head)->stqh_last, \ QUEUE_TYPEOF(type), field.stqe_next)) #define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next) #define STAILQ_REMOVE(head, elm, type, field) do { \ QMD_SAVELINK(oldnext, (elm)->field.stqe_next); \ if (STAILQ_FIRST((head)) == (elm)) { \ STAILQ_REMOVE_HEAD((head), field); \ } \ else { \ QUEUE_TYPEOF(type) *curelm = STAILQ_FIRST(head); \ while (STAILQ_NEXT(curelm, field) != (elm)) \ curelm = STAILQ_NEXT(curelm, field); \ STAILQ_REMOVE_AFTER(head, curelm, field); \ } \ TRASHIT(*oldnext); \ } while (0) #define STAILQ_REMOVE_AFTER(head, elm, field) do { \ if ((STAILQ_NEXT(elm, field) = \ STAILQ_NEXT(STAILQ_NEXT(elm, field), field)) == NULL) \ (head)->stqh_last = &STAILQ_NEXT((elm), field); \ } while (0) #define STAILQ_REMOVE_HEAD(head, field) do { \ if ((STAILQ_FIRST((head)) = \ STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL) \ (head)->stqh_last = &STAILQ_FIRST((head)); \ } while (0) #define STAILQ_REMOVE_HEAD_UNTIL(head, elm, field) do { \ if ((STAILQ_FIRST((head)) = STAILQ_NEXT((elm), field)) == NULL) \ (head)->stqh_last = &STAILQ_FIRST((head)); \ } while (0) #define STAILQ_SWAP(head1, head2, type) do { \ QUEUE_TYPEOF(type) *swap_first = STAILQ_FIRST(head1); \ QUEUE_TYPEOF(type) **swap_last = (head1)->stqh_last; \ STAILQ_FIRST(head1) = STAILQ_FIRST(head2); \ (head1)->stqh_last = (head2)->stqh_last; \ STAILQ_FIRST(head2) = swap_first; \ (head2)->stqh_last = swap_last; \ if (STAILQ_EMPTY(head1)) \ (head1)->stqh_last = &STAILQ_FIRST(head1); \ if (STAILQ_EMPTY(head2)) \ (head2)->stqh_last = &STAILQ_FIRST(head2); \ } while (0) /* * List declarations. */ #define LIST_HEAD(name, type) \ struct name { \ struct type *lh_first; /* first element */ \ } #define LIST_CLASS_HEAD(name, type) \ struct name { \ class type *lh_first; /* first element */ \ } #define LIST_HEAD_INITIALIZER(head) \ { NULL } #define LIST_ENTRY(type) \ struct { \ struct type *le_next; /* next element */ \ struct type **le_prev; /* address of previous next element */ \ } #define LIST_CLASS_ENTRY(type) \ struct { \ class type *le_next; /* next element */ \ class type **le_prev; /* address of previous next element */ \ } /* * List functions. */ #if (defined(_KERNEL) && defined(INVARIANTS)) /* * QMD_LIST_CHECK_HEAD(LIST_HEAD *head, LIST_ENTRY NAME) * * If the list is non-empty, validates that the first element of the list * points back at 'head.' */ #define QMD_LIST_CHECK_HEAD(head, field) do { \ if (LIST_FIRST((head)) != NULL && \ LIST_FIRST((head))->field.le_prev != \ &LIST_FIRST((head))) \ panic("Bad list head %p first->prev != head", (head)); \ } while (0) /* * QMD_LIST_CHECK_NEXT(TYPE *elm, LIST_ENTRY NAME) * * If an element follows 'elm' in the list, validates that the next element * points back at 'elm.' */ #define QMD_LIST_CHECK_NEXT(elm, field) do { \ if (LIST_NEXT((elm), field) != NULL && \ LIST_NEXT((elm), field)->field.le_prev != \ &((elm)->field.le_next)) \ panic("Bad link elm %p next->prev != elm", (elm)); \ } while (0) /* * QMD_LIST_CHECK_PREV(TYPE *elm, LIST_ENTRY NAME) * * Validates that the previous element (or head of the list) points to 'elm.' */ #define QMD_LIST_CHECK_PREV(elm, field) do { \ if (*(elm)->field.le_prev != (elm)) \ panic("Bad link elm %p prev->next != elm", (elm)); \ } while (0) #else #define QMD_LIST_CHECK_HEAD(head, field) #define QMD_LIST_CHECK_NEXT(elm, field) #define QMD_LIST_CHECK_PREV(elm, field) #endif /* (_KERNEL && INVARIANTS) */ #define LIST_CONCAT(head1, head2, type, field) do { \ QUEUE_TYPEOF(type) *curelm = LIST_FIRST(head1); \ if (curelm == NULL) { \ if ((LIST_FIRST(head1) = LIST_FIRST(head2)) != NULL) { \ LIST_FIRST(head2)->field.le_prev = \ &LIST_FIRST((head1)); \ LIST_INIT(head2); \ } \ } else if (LIST_FIRST(head2) != NULL) { \ while (LIST_NEXT(curelm, field) != NULL) \ curelm = LIST_NEXT(curelm, field); \ LIST_NEXT(curelm, field) = LIST_FIRST(head2); \ LIST_FIRST(head2)->field.le_prev = &LIST_NEXT(curelm, field); \ LIST_INIT(head2); \ } \ } while (0) #define LIST_EMPTY(head) ((head)->lh_first == NULL) #define LIST_FIRST(head) ((head)->lh_first) #define LIST_FOREACH(var, head, field) \ for ((var) = LIST_FIRST((head)); \ (var); \ (var) = LIST_NEXT((var), field)) #define LIST_FOREACH_FROM(var, head, field) \ for ((var) = ((var) ? (var) : LIST_FIRST((head))); \ (var); \ (var) = LIST_NEXT((var), field)) #define LIST_FOREACH_SAFE(var, head, field, tvar) \ for ((var) = LIST_FIRST((head)); \ (var) && ((tvar) = LIST_NEXT((var), field), 1); \ (var) = (tvar)) #define LIST_FOREACH_FROM_SAFE(var, head, field, tvar) \ for ((var) = ((var) ? (var) : LIST_FIRST((head))); \ (var) && ((tvar) = LIST_NEXT((var), field), 1); \ (var) = (tvar)) #define LIST_INIT(head) do { \ LIST_FIRST((head)) = NULL; \ } while (0) #define LIST_INSERT_AFTER(listelm, elm, field) do { \ QMD_LIST_CHECK_NEXT(listelm, field); \ if ((LIST_NEXT((elm), field) = LIST_NEXT((listelm), field)) != NULL)\ LIST_NEXT((listelm), field)->field.le_prev = \ &LIST_NEXT((elm), field); \ LIST_NEXT((listelm), field) = (elm); \ (elm)->field.le_prev = &LIST_NEXT((listelm), field); \ } while (0) #define LIST_INSERT_BEFORE(listelm, elm, field) do { \ QMD_LIST_CHECK_PREV(listelm, field); \ (elm)->field.le_prev = (listelm)->field.le_prev; \ LIST_NEXT((elm), field) = (listelm); \ *(listelm)->field.le_prev = (elm); \ (listelm)->field.le_prev = &LIST_NEXT((elm), field); \ } while (0) #define LIST_INSERT_HEAD(head, elm, field) do { \ QMD_LIST_CHECK_HEAD((head), field); \ if ((LIST_NEXT((elm), field) = LIST_FIRST((head))) != NULL) \ LIST_FIRST((head))->field.le_prev = &LIST_NEXT((elm), field);\ LIST_FIRST((head)) = (elm); \ (elm)->field.le_prev = &LIST_FIRST((head)); \ } while (0) #define LIST_NEXT(elm, field) ((elm)->field.le_next) #define LIST_PREV(elm, head, type, field) \ ((elm)->field.le_prev == &LIST_FIRST((head)) ? NULL : \ __containerof((elm)->field.le_prev, \ QUEUE_TYPEOF(type), field.le_next)) #define LIST_REMOVE(elm, field) do { \ QMD_SAVELINK(oldnext, (elm)->field.le_next); \ QMD_SAVELINK(oldprev, (elm)->field.le_prev); \ QMD_LIST_CHECK_NEXT(elm, field); \ QMD_LIST_CHECK_PREV(elm, field); \ if (LIST_NEXT((elm), field) != NULL) \ LIST_NEXT((elm), field)->field.le_prev = \ (elm)->field.le_prev; \ *(elm)->field.le_prev = LIST_NEXT((elm), field); \ TRASHIT(*oldnext); \ TRASHIT(*oldprev); \ } while (0) #define LIST_SWAP(head1, head2, type, field) do { \ QUEUE_TYPEOF(type) *swap_tmp = LIST_FIRST(head1); \ LIST_FIRST((head1)) = LIST_FIRST((head2)); \ LIST_FIRST((head2)) = swap_tmp; \ if ((swap_tmp = LIST_FIRST((head1))) != NULL) \ swap_tmp->field.le_prev = &LIST_FIRST((head1)); \ if ((swap_tmp = LIST_FIRST((head2))) != NULL) \ swap_tmp->field.le_prev = &LIST_FIRST((head2)); \ } while (0) /* * Tail queue declarations. */ #define TAILQ_HEAD(name, type) \ struct name { \ struct type *tqh_first; /* first element */ \ struct type **tqh_last; /* addr of last next element */ \ TRACEBUF \ } #define TAILQ_CLASS_HEAD(name, type) \ struct name { \ class type *tqh_first; /* first element */ \ class type **tqh_last; /* addr of last next element */ \ TRACEBUF \ } #define TAILQ_HEAD_INITIALIZER(head) \ { NULL, &(head).tqh_first, TRACEBUF_INITIALIZER } #define TAILQ_ENTRY(type) \ struct { \ struct type *tqe_next; /* next element */ \ struct type **tqe_prev; /* address of previous next element */ \ TRACEBUF \ } #define TAILQ_CLASS_ENTRY(type) \ struct { \ class type *tqe_next; /* next element */ \ class type **tqe_prev; /* address of previous next element */ \ TRACEBUF \ } /* * Tail queue functions. */ #if (defined(_KERNEL) && defined(INVARIANTS)) /* * QMD_TAILQ_CHECK_HEAD(TAILQ_HEAD *head, TAILQ_ENTRY NAME) * * If the tailq is non-empty, validates that the first element of the tailq * points back at 'head.' */ #define QMD_TAILQ_CHECK_HEAD(head, field) do { \ if (!TAILQ_EMPTY(head) && \ TAILQ_FIRST((head))->field.tqe_prev != \ &TAILQ_FIRST((head))) \ panic("Bad tailq head %p first->prev != head", (head)); \ } while (0) /* * QMD_TAILQ_CHECK_TAIL(TAILQ_HEAD *head, TAILQ_ENTRY NAME) * * Validates that the tail of the tailq is a pointer to pointer to NULL. */ #define QMD_TAILQ_CHECK_TAIL(head, field) do { \ if (*(head)->tqh_last != NULL) \ panic("Bad tailq NEXT(%p->tqh_last) != NULL", (head)); \ } while (0) /* * QMD_TAILQ_CHECK_NEXT(TYPE *elm, TAILQ_ENTRY NAME) * * If an element follows 'elm' in the tailq, validates that the next element * points back at 'elm.' */ #define QMD_TAILQ_CHECK_NEXT(elm, field) do { \ if (TAILQ_NEXT((elm), field) != NULL && \ TAILQ_NEXT((elm), field)->field.tqe_prev != \ &((elm)->field.tqe_next)) \ panic("Bad link elm %p next->prev != elm", (elm)); \ } while (0) /* * QMD_TAILQ_CHECK_PREV(TYPE *elm, TAILQ_ENTRY NAME) * * Validates that the previous element (or head of the tailq) points to 'elm.' */ #define QMD_TAILQ_CHECK_PREV(elm, field) do { \ if (*(elm)->field.tqe_prev != (elm)) \ panic("Bad link elm %p prev->next != elm", (elm)); \ } while (0) #else #define QMD_TAILQ_CHECK_HEAD(head, field) #define QMD_TAILQ_CHECK_TAIL(head, headname) #define QMD_TAILQ_CHECK_NEXT(elm, field) #define QMD_TAILQ_CHECK_PREV(elm, field) #endif /* (_KERNEL && INVARIANTS) */ #define TAILQ_CONCAT(head1, head2, field) do { \ if (!TAILQ_EMPTY(head2)) { \ *(head1)->tqh_last = (head2)->tqh_first; \ (head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \ (head1)->tqh_last = (head2)->tqh_last; \ TAILQ_INIT((head2)); \ QMD_TRACE_HEAD(head1); \ QMD_TRACE_HEAD(head2); \ } \ } while (0) #define TAILQ_EMPTY(head) ((head)->tqh_first == NULL) #define TAILQ_FIRST(head) ((head)->tqh_first) #define TAILQ_FOREACH(var, head, field) \ for ((var) = TAILQ_FIRST((head)); \ (var); \ (var) = TAILQ_NEXT((var), field)) #define TAILQ_FOREACH_FROM(var, head, field) \ for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \ (var); \ (var) = TAILQ_NEXT((var), field)) #define TAILQ_FOREACH_SAFE(var, head, field, tvar) \ for ((var) = TAILQ_FIRST((head)); \ (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ (var) = (tvar)) #define TAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \ for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \ (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ (var) = (tvar)) #define TAILQ_FOREACH_REVERSE(var, head, headname, field) \ for ((var) = TAILQ_LAST((head), headname); \ (var); \ (var) = TAILQ_PREV((var), headname, field)) #define TAILQ_FOREACH_REVERSE_FROM(var, head, headname, field) \ for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \ (var); \ (var) = TAILQ_PREV((var), headname, field)) #define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \ for ((var) = TAILQ_LAST((head), headname); \ (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \ (var) = (tvar)) #define TAILQ_FOREACH_REVERSE_FROM_SAFE(var, head, headname, field, tvar) \ for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \ (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \ (var) = (tvar)) #define TAILQ_INIT(head) do { \ TAILQ_FIRST((head)) = NULL; \ (head)->tqh_last = &TAILQ_FIRST((head)); \ QMD_TRACE_HEAD(head); \ } while (0) #define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \ QMD_TAILQ_CHECK_NEXT(listelm, field); \ if ((TAILQ_NEXT((elm), field) = TAILQ_NEXT((listelm), field)) != NULL)\ TAILQ_NEXT((elm), field)->field.tqe_prev = \ &TAILQ_NEXT((elm), field); \ else { \ (head)->tqh_last = &TAILQ_NEXT((elm), field); \ QMD_TRACE_HEAD(head); \ } \ TAILQ_NEXT((listelm), field) = (elm); \ (elm)->field.tqe_prev = &TAILQ_NEXT((listelm), field); \ QMD_TRACE_ELEM(&(elm)->field); \ QMD_TRACE_ELEM(&(listelm)->field); \ } while (0) #define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \ QMD_TAILQ_CHECK_PREV(listelm, field); \ (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \ TAILQ_NEXT((elm), field) = (listelm); \ *(listelm)->field.tqe_prev = (elm); \ (listelm)->field.tqe_prev = &TAILQ_NEXT((elm), field); \ QMD_TRACE_ELEM(&(elm)->field); \ QMD_TRACE_ELEM(&(listelm)->field); \ } while (0) #define TAILQ_INSERT_HEAD(head, elm, field) do { \ QMD_TAILQ_CHECK_HEAD(head, field); \ if ((TAILQ_NEXT((elm), field) = TAILQ_FIRST((head))) != NULL) \ TAILQ_FIRST((head))->field.tqe_prev = \ &TAILQ_NEXT((elm), field); \ else \ (head)->tqh_last = &TAILQ_NEXT((elm), field); \ TAILQ_FIRST((head)) = (elm); \ (elm)->field.tqe_prev = &TAILQ_FIRST((head)); \ QMD_TRACE_HEAD(head); \ QMD_TRACE_ELEM(&(elm)->field); \ } while (0) #define TAILQ_INSERT_TAIL(head, elm, field) do { \ QMD_TAILQ_CHECK_TAIL(head, field); \ TAILQ_NEXT((elm), field) = NULL; \ (elm)->field.tqe_prev = (head)->tqh_last; \ *(head)->tqh_last = (elm); \ (head)->tqh_last = &TAILQ_NEXT((elm), field); \ QMD_TRACE_HEAD(head); \ QMD_TRACE_ELEM(&(elm)->field); \ } while (0) #define TAILQ_LAST(head, headname) \ (*(((struct headname *)((head)->tqh_last))->tqh_last)) /* * The FAST function is fast in that it causes no data access other * then the access to the head. The standard LAST function above * will cause a data access of both the element you want and * the previous element. FAST is very useful for instances when * you may want to prefetch the last data element. */ #define TAILQ_LAST_FAST(head, type, field) \ (TAILQ_EMPTY(head) ? NULL : __containerof((head)->tqh_last, QUEUE_TYPEOF(type), field.tqe_next)) #define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next) #define TAILQ_PREV(elm, headname, field) \ (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last)) #define TAILQ_REMOVE(head, elm, field) do { \ QMD_SAVELINK(oldnext, (elm)->field.tqe_next); \ QMD_SAVELINK(oldprev, (elm)->field.tqe_prev); \ QMD_TAILQ_CHECK_NEXT(elm, field); \ QMD_TAILQ_CHECK_PREV(elm, field); \ if ((TAILQ_NEXT((elm), field)) != NULL) \ TAILQ_NEXT((elm), field)->field.tqe_prev = \ (elm)->field.tqe_prev; \ else { \ (head)->tqh_last = (elm)->field.tqe_prev; \ QMD_TRACE_HEAD(head); \ } \ *(elm)->field.tqe_prev = TAILQ_NEXT((elm), field); \ TRASHIT(*oldnext); \ TRASHIT(*oldprev); \ QMD_TRACE_ELEM(&(elm)->field); \ } while (0) #define TAILQ_SWAP(head1, head2, type, field) do { \ QUEUE_TYPEOF(type) *swap_first = (head1)->tqh_first; \ QUEUE_TYPEOF(type) **swap_last = (head1)->tqh_last; \ (head1)->tqh_first = (head2)->tqh_first; \ (head1)->tqh_last = (head2)->tqh_last; \ (head2)->tqh_first = swap_first; \ (head2)->tqh_last = swap_last; \ if ((swap_first = (head1)->tqh_first) != NULL) \ swap_first->field.tqe_prev = &(head1)->tqh_first; \ else \ (head1)->tqh_last = &(head1)->tqh_first; \ if ((swap_first = (head2)->tqh_first) != NULL) \ swap_first->field.tqe_prev = &(head2)->tqh_first; \ else \ (head2)->tqh_last = &(head2)->tqh_first; \ } while (0) #ifdef _KERNEL /* * XXX insque() and remque() are an old way of handling certain queues. * They bogusly assumes that all queue heads look alike. */ struct quehead { struct quehead *qh_link; struct quehead *qh_rlink; }; #ifdef __GNUC__ static __inline void insque(void *a, void *b) { struct quehead *element = (struct quehead *)a, *head = (struct quehead *)b; element->qh_link = head->qh_link; element->qh_rlink = head; head->qh_link = element; element->qh_link->qh_rlink = element; } static __inline void remque(void *a) { struct quehead *element = (struct quehead *)a; element->qh_link->qh_rlink = element->qh_rlink; element->qh_rlink->qh_link = element->qh_link; element->qh_rlink = 0; } #else /* !__GNUC__ */ void insque(void *a, void *b); void remque(void *a); #endif /* __GNUC__ */ #endif /* _KERNEL */ #endif /* !_SYS_QUEUE_H_ */ picolibc-1.7.4/newlib/libc/include/sys/reent.h000066400000000000000000000333601414576234500212470ustar00rootroot00000000000000/* Copyright (c) 1982, 1986, 1993 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This header file provides the reentrancy. */ /* WARNING: All identifiers here must begin with an underscore. This file is included by stdio.h and others and we therefore must only use identifiers in the namespace allotted to us. */ #ifndef _SYS_REENT_H_ #ifdef __cplusplus extern "C" { #endif #define _SYS_REENT_H_ #include <_ansi.h> #include #include #include #define _NULL 0 #ifndef __machine_flock_t_defined #include typedef _LOCK_RECURSIVE_T _flock_t; #endif struct _reent; /* * If _REENT_SMALL is defined, we make struct _reent as small as possible, * by having nearly everything possible allocated at first use. */ /* * Stdio buffers. * * This and __FILE are defined here because we need them for struct _reent, * but we don't want stdio.h included when stdlib.h is. */ struct __sbuf { unsigned char *_base; int _size; }; /* * Stdio state variables. * * The following always hold: * * if (_flags&(__SLBF|__SWR)) == (__SLBF|__SWR), * _lbfsize is -_bf._size, else _lbfsize is 0 * if _flags&__SRD, _w is 0 * if _flags&__SWR, _r is 0 * * This ensures that the getc and putc macros (or inline functions) never * try to write or read from a file that is in `read' or `write' mode. * (Moreover, they can, and do, automatically switch from read mode to * write mode, and back, on "r+" and "w+" files.) * * _lbfsize is used only to make the inline line-buffered output stream * code as compact as possible. * * _ub, _up, and _ur are used when ungetc() pushes back more characters * than fit in the current _bf, or when ungetc() pushes back a character * that does not match the previous one in _bf. When this happens, * _ub._base becomes non-nil (i.e., a stream has ungetc() data iff * _ub._base!=NULL) and _up and _ur save the current values of _p and _r. */ #if defined(_REENT_SMALL) && !defined(_REENT_GLOBAL_STDIO_STREAMS) && !defined(__CUSTOM_FILE_IO__) /* * struct __sFILE_fake is the start of a struct __sFILE, with only the * minimal fields allocated. In __sinit() we really allocate the 3 * standard streams, etc., and point away from this fake. */ struct __sFILE_fake { unsigned char *_p; /* current position in (some) buffer */ int _r; /* read space left for getc() */ int _w; /* write space left for putc() */ short _flags; /* flags, below; this FILE is free if 0 */ short _file; /* fileno, if Unix descriptor, else -1 */ struct __sbuf _bf; /* the buffer (at least 1 byte, if !NULL) */ int _lbfsize; /* 0 or -_bf._size, for inline putc */ struct _reent *_data; }; /* Following is needed both in libc/stdio and libc/stdlib so we put it * here instead of libc/stdio/local.h where it was previously. */ extern void __sinit (struct _reent *); # define _REENT_SMALL_CHECK_INIT(ptr) \ do \ { \ if ((ptr) && !(ptr)->__sdidinit) \ __sinit (ptr); \ } \ while (0) #else /* _REENT_SMALL && !_REENT_GLOBAL_STDIO_STREAMS */ # define _REENT_SMALL_CHECK_INIT(ptr) /* nothing */ #endif /* _REENT_SMALL && !_REENT_GLOBAL_STDIO_STREAMS */ struct __sFILE { unsigned char *_p; /* current position in (some) buffer */ int _r; /* read space left for getc() */ int _w; /* write space left for putc() */ short _flags; /* flags, below; this FILE is free if 0 */ short _file; /* fileno, if Unix descriptor, else -1 */ struct __sbuf _bf; /* the buffer (at least 1 byte, if !NULL) */ int _lbfsize; /* 0 or -_bf._size, for inline putc */ #ifdef _REENT_SMALL struct _reent *_data; #endif /* operations */ void * _cookie; /* cookie passed to io functions */ _READ_WRITE_RETURN_TYPE (*_read) (struct _reent *, void *, char *, _READ_WRITE_BUFSIZE_TYPE); _READ_WRITE_RETURN_TYPE (*_write) (struct _reent *, void *, const char *, _READ_WRITE_BUFSIZE_TYPE); _fpos_t (*_seek) (struct _reent *, void *, _fpos_t, int); int (*_close) (struct _reent *, void *); /* separate buffer for long sequences of ungetc() */ struct __sbuf _ub; /* ungetc buffer */ unsigned char *_up; /* saved _p when _p is doing ungetc data */ int _ur; /* saved _r when _r is counting ungetc data */ /* tricks to meet minimum requirements even when malloc() fails */ unsigned char _ubuf[3]; /* guarantee an ungetc() buffer */ unsigned char _nbuf[1]; /* guarantee a getc() buffer */ /* separate buffer for fgetline() when line crosses buffer boundary */ struct __sbuf _lb; /* buffer for fgetline() */ /* Unix stdio files get aligned to block boundaries on fseek() */ int _blksize; /* stat.st_blksize (may be != _bf._size) */ _off_t _offset; /* current lseek offset */ #ifndef _REENT_SMALL struct _reent *_data; /* Here for binary compatibility? Remove? */ #endif #ifndef __SINGLE_THREAD__ _flock_t _lock; /* for thread-safety locking */ #endif _mbstate_t _mbstate; /* for wide char stdio functions. */ int _flags2; /* for future use */ }; #ifdef __CUSTOM_FILE_IO__ /* Get custom _FILE definition. */ #include #else /* !__CUSTOM_FILE_IO__ */ #ifdef __LARGE64_FILES struct __sFILE64 { unsigned char *_p; /* current position in (some) buffer */ int _r; /* read space left for getc() */ int _w; /* write space left for putc() */ short _flags; /* flags, below; this FILE is free if 0 */ short _file; /* fileno, if Unix descriptor, else -1 */ struct __sbuf _bf; /* the buffer (at least 1 byte, if !NULL) */ int _lbfsize; /* 0 or -_bf._size, for inline putc */ struct _reent *_data; /* operations */ void * _cookie; /* cookie passed to io functions */ _READ_WRITE_RETURN_TYPE (*_read) (struct _reent *, void *, char *, _READ_WRITE_BUFSIZE_TYPE); _READ_WRITE_RETURN_TYPE (*_write) (struct _reent *, void *, const char *, _READ_WRITE_BUFSIZE_TYPE); _fpos_t (*_seek) (struct _reent *, void *, _fpos_t, int); int (*_close) (struct _reent *, void *); /* separate buffer for long sequences of ungetc() */ struct __sbuf _ub; /* ungetc buffer */ unsigned char *_up; /* saved _p when _p is doing ungetc data */ int _ur; /* saved _r when _r is counting ungetc data */ /* tricks to meet minimum requirements even when malloc() fails */ unsigned char _ubuf[3]; /* guarantee an ungetc() buffer */ unsigned char _nbuf[1]; /* guarantee a getc() buffer */ /* separate buffer for fgetline() when line crosses buffer boundary */ struct __sbuf _lb; /* buffer for fgetline() */ /* Unix stdio files get aligned to block boundaries on fseek() */ int _blksize; /* stat.st_blksize (may be != _bf._size) */ int _flags2; /* for future use */ _off64_t _offset; /* current lseek offset */ _fpos64_t (*_seek64) (struct _reent *, void *, _fpos64_t, int); #ifndef __SINGLE_THREAD__ _flock_t _lock; /* for thread-safety locking */ #endif _mbstate_t _mbstate; /* for wide char stdio functions. */ }; typedef struct __sFILE64 __FILE; #else typedef struct __sFILE __FILE; #endif /* __LARGE64_FILES */ #endif /* !__CUSTOM_FILE_IO__ */ struct _glue { struct _glue *_next; int _niobs; __FILE *_iobs; }; #define _GLUE_INIT { _NULL, 0, _NULL } /* How big the some arrays are. */ #define _REENT_SIGNAL_SIZE 24 /* * struct _reent * * This structure contains *all* globals needed by the library. * It's raison d'etre is to facilitate threads by making all library routines * reentrant. IE: All state information is contained here. */ #ifdef _REENT_GLOBAL_STDIO_STREAMS extern __FILE __sf[3]; #define _REENT_STDIO_STREAM(var, index) &__sf[index] #else #define _REENT_STDIO_STREAM(var, index) &(var)->__sf[index] #endif #ifdef TINY_STDIO #define _REENT_INIT_STDIO(var) #else #define _REENT_INIT_STDIO(var) \ ._stdin = _REENT_STDIO_STREAM(&(var), 0), \ ._stdout = _REENT_STDIO_STREAM(&(var), 1), \ ._stderr = _REENT_STDIO_STREAM(&(var), 2), \ ._inc = 0, \ .__sdidinit = 0, #endif #ifdef _REENT_SMALL /* This version of _reent is laid out with "int"s in pairs, to help * ports with 16-bit int's but 32-bit pointers, align nicely. */ struct _reent { # ifndef TINY_STDIO /* FILE is a big struct and may change over time. To try to achieve binary compatibility with future versions, put stdin,stdout,stderr here. These are pointers into member __sf defined below. */ __FILE *_stdin, *_stdout, *_stderr; /* XXX */ int _inc; /* used by tmpnam */ int __sdidinit; /* 1 means stdio has been init'd */ # endif void (*__cleanup) (struct _reent *); struct _glue __sglue; /* root of glue chain */ __FILE *__sf; /* file descriptors */ }; # define _REENT_INIT(var) \ { _REENT_INIT_STDIO(var) \ .__cleanup = NULL, \ .__sglue = _GLUE_INIT, \ .__sf = _NULL, \ } #ifdef _REENT_GLOBAL_STDIO_STREAMS extern __FILE __sf[3]; #define _REENT_INIT_PTR_ZEROED(var) \ { (var)->_stdin = &__sf[0]; \ (var)->_stdout = &__sf[1]; \ (var)->_stderr = &__sf[2]; \ } #else /* _REENT_GLOBAL_STDIO_STREAMS */ extern const struct __sFILE_fake __sf_fake_stdin; extern const struct __sFILE_fake __sf_fake_stdout; extern const struct __sFILE_fake __sf_fake_stderr; #define _REENT_INIT_PTR_ZEROED(var) \ { (var)->_stdin = (__FILE *)&__sf_fake_stdin; \ (var)->_stdout = (__FILE *)&__sf_fake_stdout; \ (var)->_stderr = (__FILE *)&__sf_fake_stderr; \ } #endif /* _REENT_GLOBAL_STDIO_STREAMS */ /* Specify how to handle reent_check malloc failures. */ #ifdef _REENT_CHECK_VERIFY #include #define __reent_assert(x) ((x) ? (void)0 : __assert_func(__FILE__, __LINE__, (char *)0, "REENT malloc succeeded")) #else #define __reent_assert(x) ((void)0) #endif #if defined(__CUSTOM_FILE_IO__) && !defined(TINY_STDIO) #error Custom FILE I/O and _REENT_SMALL not currently supported without TINY_STDIO #endif /* Generic _REENT check macro. */ #define _REENT_CHECK(var, what, type, size, init) do { \ struct _reent *_r = (var); \ if (_r->what == NULL) { \ _r->what = (type)malloc(size); \ __reent_assert(_r->what); \ init; \ } \ } while (0) #else /* !_REENT_SMALL */ struct _reent { /* FILE is a big struct and may change over time. To try to achieve binary compatibility with future versions, put stdin,stdout,stderr here. These are pointers into member __sf defined below. */ __FILE *_stdin, *_stdout, *_stderr; int _inc; /* used by tmpnam */ int __sdidinit; /* 1 means stdio has been init'd */ void (*__cleanup) (struct _reent *); /* These are here last so that __FILE can grow without changing the offsets of the above members (on the off chance that future binary compatibility would be broken otherwise). */ struct _glue __sglue; /* root of glue chain */ # ifndef _REENT_GLOBAL_STDIO_STREAMS __FILE __sf[3]; /* first three file descriptors */ # endif }; #ifdef _REENT_GLOBAL_STDIO_STREAMS extern __FILE __sf[3]; #define _REENT_STDIO_STREAM(var, index) &__sf[index] #else #define _REENT_STDIO_STREAM(var, index) &(var)->__sf[index] #endif #define _REENT_INIT(var) \ { _REENT_INIT_STDIO(var) \ .__cleanup = _NULL, \ .__sglue = _GLUE_INIT \ } #define _REENT_INIT_PTR_ZEROED(var) \ { (var)->_stdin = _REENT_STDIO_STREAM(var, 0); \ (var)->_stdout = _REENT_STDIO_STREAM(var, 1); \ (var)->_stderr = _REENT_STDIO_STREAM(var, 2); \ } #endif /* !_REENT_SMALL */ #define _REENT_INIT_PTR(var) \ { memset((var), 0, sizeof(*(var))); \ _REENT_INIT_PTR_ZEROED(var); \ } /* This value is used in stdlib/misc.c. reent/reent.c has to know it as well to make sure the freelist is correctly free'd. Therefore we define it here, rather than in stdlib/misc.c, as before. */ #define _Kmax (sizeof (size_t) << 3) /* * All references to struct _reent are via this pointer. * Internally, newlib routines that need to reference it should use _REENT. */ #ifndef __ATTRIBUTE_IMPURE_PTR__ #define __ATTRIBUTE_IMPURE_PTR__ #endif extern struct _reent *_impure_ptr __ATTRIBUTE_IMPURE_PTR__; extern struct _reent *const _global_impure_ptr __ATTRIBUTE_IMPURE_PTR__; void _reclaim_reent (struct _reent *); /* #define _REENT_ONLY define this to get only reentrant routines */ #if defined(__DYNAMIC_REENT__) && !defined(__SINGLE_THREAD__) #ifndef __getreent struct _reent * __getreent (void); #endif # define _REENT (__getreent()) #else /* __SINGLE_THREAD__ || !__DYNAMIC_REENT__ */ # define _REENT _impure_ptr #endif /* __SINGLE_THREAD__ || !__DYNAMIC_REENT__ */ #define _GLOBAL_REENT _global_impure_ptr #ifdef __cplusplus } #endif #endif /* _SYS_REENT_H_ */ picolibc-1.7.4/newlib/libc/include/sys/resource.h000066400000000000000000000034761414576234500217660ustar00rootroot00000000000000/* Copyright (c) 1982, 1986, 1993 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _SYS_RESOURCE_H_ #define _SYS_RESOURCE_H_ #include #define RUSAGE_SELF 0 /* calling process */ #define RUSAGE_CHILDREN -1 /* terminated child processes */ struct rusage { struct timeval ru_utime; /* user time used */ struct timeval ru_stime; /* system time used */ }; int getrusage (int, struct rusage*); #endif picolibc-1.7.4/newlib/libc/include/sys/sched.h000066400000000000000000000035201414576234500212130ustar00rootroot00000000000000/* * Written by Joel Sherrill . * * COPYRIGHT (c) 1989-2010. * On-Line Applications Research Corporation (OAR). * * Permission to use, copy, modify, and distribute this software for any * purpose without fee is hereby granted, provided that this entire notice * is included in all copies of any software which is or includes a copy * or modification of this software. * * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED * WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION * OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS * SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. * * $Id$ */ #ifndef _SYS_SCHED_H_ #define _SYS_SCHED_H_ #include #ifdef __cplusplus extern "C" { #endif /* Scheduling Policies */ /* Open Group Specifications Issue 6 */ #if defined(__CYGWIN__) #define SCHED_OTHER 3 #else #define SCHED_OTHER 0 #endif #define SCHED_FIFO 1 #define SCHED_RR 2 #if defined(_POSIX_SPORADIC_SERVER) #define SCHED_SPORADIC 4 #endif /* Scheduling Parameters */ /* Open Group Specifications Issue 6 */ struct sched_param { int sched_priority; /* Process execution scheduling priority */ #if defined(_POSIX_SPORADIC_SERVER) || defined(_POSIX_THREAD_SPORADIC_SERVER) int sched_ss_low_priority; /* Low scheduling priority for sporadic */ /* server */ struct timespec sched_ss_repl_period; /* Replenishment period for sporadic server */ struct timespec sched_ss_init_budget; /* Initial budget for sporadic server */ int sched_ss_max_repl; /* Maximum pending replenishments for */ /* sporadic server */ #endif }; #ifdef __cplusplus } #endif #endif /* end of include file */ picolibc-1.7.4/newlib/libc/include/sys/select.h000066400000000000000000000077301414576234500214130ustar00rootroot00000000000000/* Copyright (c) 1982, 1986, 1993 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _SYS_SELECT_H #define _SYS_SELECT_H /* We don't define fd_set and friends if we are compiling POSIX source, or if we have included (or may include as indicated by __USE_W32_SOCKETS) the W32api winsock[2].h header which defines Windows versions of them. Note that a program which includes the W32api winsock[2].h header must know what it is doing; it must not call the Cygwin select function. */ # if !(defined (_WINSOCK_H) || defined (_WINSOCKAPI_) || defined (__USE_W32_SOCKETS)) #include #include #include #include #if !defined(_SIGSET_T_DECLARED) #define _SIGSET_T_DECLARED typedef __sigset_t sigset_t; #endif # define _SYS_TYPES_FD_SET /* * Select uses bit masks of file descriptors in longs. * These macros manipulate such bit fields (the filesystem macros use chars). * FD_SETSIZE may be defined by the user, but the default here * should be >= NOFILE (param.h). */ #ifndef FD_SETSIZE #define FD_SETSIZE 64 #endif typedef unsigned long __fd_mask; #if __BSD_VISIBLE typedef __fd_mask fd_mask; #endif #define _NFDBITS ((int)sizeof(__fd_mask) * 8) /* bits per mask */ #if __BSD_VISIBLE #define NFDBITS _NFDBITS #endif #ifndef _howmany #define _howmany(x,y) (((x) + ((y) - 1)) / (y)) #endif typedef struct fd_set { __fd_mask __fds_bits[_howmany(FD_SETSIZE, _NFDBITS)]; } fd_set; #if __BSD_VISIBLE #define fds_bits __fds_bits #endif #define __fdset_mask(n) ((__fd_mask)1 << ((n) % _NFDBITS)) #define FD_CLR(n, p) ((p)->__fds_bits[(n)/_NFDBITS] &= ~__fdset_mask(n)) #if __BSD_VISIBLE #define FD_COPY(f, t) (void)(*(t) = *(f)) #endif #define FD_ISSET(n, p) (((p)->__fds_bits[(n)/_NFDBITS] & __fdset_mask(n)) != 0) #define FD_SET(n, p) ((p)->__fds_bits[(n)/_NFDBITS] |= __fdset_mask(n)) #define FD_ZERO(p) do { \ fd_set *_p; \ __size_t _n; \ \ _p = (p); \ _n = _howmany(FD_SETSIZE, _NFDBITS); \ while (_n > 0) \ _p->__fds_bits[--_n] = 0; \ } while (0) #if !defined (__INSIDE_CYGWIN_NET__) __BEGIN_DECLS int select __P ((int __n, fd_set *__readfds, fd_set *__writefds, fd_set *__exceptfds, struct timeval *__timeout)); #if __POSIX_VISIBLE >= 200112 int pselect __P ((int __n, fd_set *__readfds, fd_set *__writefds, fd_set *__exceptfds, const struct timespec *__timeout, const sigset_t *__set)); #endif __END_DECLS #endif /* !__INSIDE_CYGWIN_NET__ */ #endif /* !(_WINSOCK_H || _WINSOCKAPI_ || __USE_W32_SOCKETS) */ #endif /* sys/select.h */ picolibc-1.7.4/newlib/libc/include/sys/signal.h000066400000000000000000000323251414576234500214070ustar00rootroot00000000000000/* Copyright (c) 1982, 1986, 1993 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* sys/signal.h */ #ifndef _SYS_SIGNAL_H #define _SYS_SIGNAL_H #ifdef __cplusplus extern "C" { #endif #include "_ansi.h" #include #include #include #include #include #include #if !defined(_SIGSET_T_DECLARED) #define _SIGSET_T_DECLARED typedef __sigset_t sigset_t; #endif #if defined(__CYGWIN__) #include #else #if defined(_POSIX_REALTIME_SIGNALS) || __POSIX_VISIBLE >= 199309 /* sigev_notify values NOTE: P1003.1c/D10, p. 34 adds SIGEV_THREAD. */ #define SIGEV_NONE 1 /* No asynchronous notification shall be delivered */ /* when the event of interest occurs. */ #define SIGEV_SIGNAL 2 /* A queued signal, with an application defined */ /* value, shall be delivered when the event of */ /* interest occurs. */ #define SIGEV_THREAD 3 /* A notification function shall be called to */ /* perform notification. */ /* Signal Generation and Delivery, P1003.1b-1993, p. 63 NOTE: P1003.1c/D10, p. 34 adds sigev_notify_function and sigev_notify_attributes to the sigevent structure. */ union sigval { int sival_int; /* Integer signal value */ void *sival_ptr; /* Pointer signal value */ }; struct sigevent { int sigev_notify; /* Notification type */ int sigev_signo; /* Signal number */ union sigval sigev_value; /* Signal value */ }; /* Signal Actions, P1003.1b-1993, p. 64 */ /* si_code values, p. 66 */ #define SI_USER 1 /* Sent by a user. kill(), abort(), etc */ #define SI_QUEUE 2 /* Sent by sigqueue() */ #define SI_TIMER 3 /* Sent by expiration of a timer_settime() timer */ #define SI_ASYNCIO 4 /* Indicates completion of asycnhronous IO */ #define SI_MESGQ 5 /* Indicates arrival of a message at an empty queue */ typedef struct { int si_signo; /* Signal number */ int si_code; /* Cause of the signal */ union sigval si_value; /* Signal value */ } siginfo_t; #endif /* defined(_POSIX_REALTIME_SIGNALS) || __POSIX_VISIBLE >= 199309 */ #if defined(__rtems__) /* 3.3.8 Synchronously Accept a Signal, P1003.1b-1993, p. 76 */ #define SA_NOCLDSTOP 0x1 /* Do not generate SIGCHLD when children stop */ #define SA_SIGINFO 0x2 /* Invoke the signal catching function with */ /* three arguments instead of one. */ #if __BSD_VISIBLE || __XSI_VISIBLE >= 4 || __POSIX_VISIBLE >= 200809 #define SA_ONSTACK 0x4 /* Signal delivery will be on a separate stack. */ #endif /* struct sigaction notes from POSIX: * * (1) Routines stored in sa_handler should take a single int as * their argument although the POSIX standard does not require this. * This is not longer true since at least POSIX.1-2008 * (2) The fields sa_handler and sa_sigaction may overlap, and a conforming * application should not use both simultaneously. */ typedef void (*_sig_func_ptr)(int); struct sigaction { int sa_flags; /* Special flags to affect behavior of signal */ sigset_t sa_mask; /* Additional set of signals to be blocked */ /* during execution of signal-catching */ /* function. */ union { _sig_func_ptr _handler; /* SIG_DFL, SIG_IGN, or pointer to a function */ #if defined(_POSIX_REALTIME_SIGNALS) void (*_sigaction)( int, siginfo_t *, void * ); #endif } _signal_handlers; }; #define sa_handler _signal_handlers._handler #if defined(_POSIX_REALTIME_SIGNALS) #define sa_sigaction _signal_handlers._sigaction #endif #else /* defined(__rtems__) */ #define SA_NOCLDSTOP 1 /* only value supported now for sa_flags */ typedef void (*_sig_func_ptr)(int); struct sigaction { _sig_func_ptr sa_handler; sigset_t sa_mask; int sa_flags; }; #endif /* defined(__rtems__) */ #endif /* defined(__CYGWIN__) */ #if __BSD_VISIBLE || __XSI_VISIBLE >= 4 || __POSIX_VISIBLE >= 200809 /* * Minimum and default signal stack constants. Allow for target overrides * from . */ #ifndef MINSIGSTKSZ #define MINSIGSTKSZ 2048 #endif #ifndef SIGSTKSZ #define SIGSTKSZ 8192 #endif /* * Possible values for ss_flags in stack_t below. */ #define SS_ONSTACK 0x1 #define SS_DISABLE 0x2 #endif /* * Structure used in sigaltstack call. */ typedef struct sigaltstack { void *ss_sp; /* Stack base or pointer. */ int ss_flags; /* Flags. */ size_t ss_size; /* Stack size. */ } stack_t; #if __POSIX_VISIBLE #define SIG_SETMASK 0 /* set mask with sigprocmask() */ #define SIG_BLOCK 1 /* set of signals to block */ #define SIG_UNBLOCK 2 /* set of signals to, well, unblock */ int sigprocmask (int, const sigset_t *, sigset_t *); #endif #ifdef _COMPILING_NEWLIB int _kill (pid_t, int); #endif /* _COMPILING_NEWLIB */ #if __POSIX_VISIBLE int kill (pid_t, int); #endif #if __BSD_VISIBLE || __XSI_VISIBLE >= 4 int killpg (pid_t, int); #endif #if __POSIX_VISIBLE int sigaction (int, const struct sigaction *, struct sigaction *); int sigaddset (sigset_t *, const int); int sigdelset (sigset_t *, const int); int sigismember (const sigset_t *, int); int sigfillset (sigset_t *); int sigemptyset (sigset_t *); int sigpending (sigset_t *); int sigsuspend (const sigset_t *); int sigwait (const sigset_t *, int *); #if !defined(__CYGWIN__) && !defined(__rtems__) /* These depend upon the type of sigset_t, which right now is always a long.. They're in the POSIX namespace, but are not ANSI. */ #define sigaddset(what,sig) (*(what) |= (1<<(sig)), 0) #define sigdelset(what,sig) (*(what) &= ~(1<<(sig)), 0) #define sigemptyset(what) (*(what) = 0, 0) #define sigfillset(what) (*(what) = ~(0), 0) #define sigismember(what,sig) (((*(what)) & (1<<(sig))) != 0) #endif /* !__CYGWIN__ && !__rtems__ */ #endif /* __POSIX_VISIBLE */ /* There are two common sigpause variants, both of which take an int argument. If you request _XOPEN_SOURCE or _GNU_SOURCE, you get the System V version, which removes the given signal from the process's signal mask; otherwise you get the BSD version, which sets the process's signal mask to the given value. */ #if __XSI_VISIBLE && !defined(__INSIDE_CYGWIN__) # ifdef __GNUC__ int sigpause (int) __asm__ (__ASMNAME ("__xpg_sigpause")); # else int __xpg_sigpause (int); # define sigpause __xpg_sigpause # endif #elif __BSD_VISIBLE int sigpause (int); #endif #if __BSD_VISIBLE || __XSI_VISIBLE >= 4 || __POSIX_VISIBLE >= 200809 int sigaltstack (const stack_t *__restrict, stack_t *__restrict); #endif #if __POSIX_VISIBLE >= 199309 /* 3.3.8 Synchronously Accept a Signal, P1003.1b-1993, p. 76 NOTE: P1003.1c/D10, p. 39 adds sigwait(). */ int sigwaitinfo (const sigset_t *, siginfo_t *); int sigtimedwait (const sigset_t *, siginfo_t *, const struct timespec *); /* 3.3.9 Queue a Signal to a Process, P1003.1b-1993, p. 78 */ int sigqueue (pid_t, int, const union sigval); #endif /* __POSIX_VISIBLE >= 199309 */ /* Using __MISC_VISIBLE until POSIX Issue 8 is officially released */ #if __MISC_VISIBLE /* POSIX Issue 8 adds sig2str() and str2sig() */ #if __SIZEOF_INT__ >= 4 #define SIG2STR_MAX (sizeof("RTMAX+") + sizeof("4294967295") - 1) #else #define SIG2STR_MAX (sizeof("RTMAX+") + sizeof("65535") - 1) #endif int sig2str(int, char *); int str2sig(const char *__restrict, int *__restrict); #endif /* __MISC_VISIBLE */ #if defined(___AM29K__) /* These all need to be defined for ANSI C, but I don't think they are meaningful. */ #define SIGABRT 1 #define SIGFPE 1 #define SIGILL 1 #define SIGINT 1 #define SIGSEGV 1 #define SIGTERM 1 /* These need to be defined for POSIX, and some others do too. */ #define SIGHUP 1 #define SIGQUIT 1 #define NSIG 2 #elif defined(__GO32__) #define SIGINT 1 #define SIGKILL 2 #define SIGPIPE 3 #define SIGFPE 4 #define SIGHUP 5 #define SIGTERM 6 #define SIGSEGV 7 #define SIGTSTP 8 #define SIGQUIT 9 #define SIGTRAP 10 #define SIGILL 11 #define SIGEMT 12 #define SIGALRM 13 #define SIGBUS 14 #define SIGLOST 15 #define SIGSTOP 16 #define SIGABRT 17 #define SIGUSR1 18 #define SIGUSR2 19 #define NSIG 20 #elif !defined(SIGTRAP) #define SIGHUP 1 /* hangup */ #define SIGINT 2 /* interrupt */ #define SIGQUIT 3 /* quit */ #define SIGILL 4 /* illegal instruction (not reset when caught) */ #define SIGTRAP 5 /* trace trap (not reset when caught) */ #define SIGIOT 6 /* IOT instruction */ #define SIGABRT 6 /* used by abort, replace SIGIOT in the future */ #define SIGEMT 7 /* EMT instruction */ #define SIGFPE 8 /* floating point exception */ #define SIGKILL 9 /* kill (cannot be caught or ignored) */ #define SIGBUS 10 /* bus error */ #define SIGSEGV 11 /* segmentation violation */ #define SIGSYS 12 /* bad argument to system call */ #define SIGPIPE 13 /* write on a pipe with no one to read it */ #define SIGALRM 14 /* alarm clock */ #define SIGTERM 15 /* software termination signal from kill */ #if defined(__rtems__) #define SIGURG 16 /* urgent condition on IO channel */ #define SIGSTOP 17 /* sendable stop signal not from tty */ #define SIGTSTP 18 /* stop signal from tty */ #define SIGCONT 19 /* continue a stopped process */ #define SIGCHLD 20 /* to parent on child stop or exit */ #define SIGCLD 20 /* System V name for SIGCHLD */ #define SIGTTIN 21 /* to readers pgrp upon background tty read */ #define SIGTTOU 22 /* like TTIN for output if (tp->t_local<OSTOP) */ #define SIGIO 23 /* input/output possible signal */ #define SIGPOLL SIGIO /* System V name for SIGIO */ #define SIGWINCH 24 /* window changed */ #define SIGUSR1 25 /* user defined signal 1 */ #define SIGUSR2 26 /* user defined signal 2 */ /* Real-Time Signals Range, P1003.1b-1993, p. 61 NOTE: By P1003.1b-1993, this should be at least RTSIG_MAX (which is a minimum of 8) signals. */ #define SIGRTMIN 27 #define SIGRTMAX 31 #define __SIGFIRSTNOTRT SIGHUP #define __SIGLASTNOTRT SIGUSR2 #define NSIG 32 /* signal 0 implied */ #elif defined(__svr4__) /* svr4 specifics. different signals above 15, and sigaction. */ #define SIGUSR1 16 #define SIGUSR2 17 #define SIGCLD 18 #define SIGPWR 19 #define SIGWINCH 20 #define SIGPOLL 22 /* 20 for x.out binaries!!!! */ #define SIGSTOP 23 /* sendable stop signal not from tty */ #define SIGTSTP 24 /* stop signal from tty */ #define SIGCONT 25 /* continue a stopped process */ #define SIGTTIN 26 /* to readers pgrp upon background tty read */ #define SIGTTOU 27 /* like TTIN for output if (tp->t_local<OSTOP) */ #define NSIG 28 #else #define SIGURG 16 /* urgent condition on IO channel */ #define SIGSTOP 17 /* sendable stop signal not from tty */ #define SIGTSTP 18 /* stop signal from tty */ #define SIGCONT 19 /* continue a stopped process */ #define SIGCHLD 20 /* to parent on child stop or exit */ #define SIGCLD 20 /* System V name for SIGCHLD */ #define SIGTTIN 21 /* to readers pgrp upon background tty read */ #define SIGTTOU 22 /* like TTIN for output if (tp->t_local<OSTOP) */ #define SIGIO 23 /* input/output possible signal */ #define SIGPOLL SIGIO /* System V name for SIGIO */ #define SIGXCPU 24 /* exceeded CPU time limit */ #define SIGXFSZ 25 /* exceeded file size limit */ #define SIGVTALRM 26 /* virtual time alarm */ #define SIGPROF 27 /* profiling time alarm */ #define SIGWINCH 28 /* window changed */ #define SIGLOST 29 /* resource lost (eg, record-lock lost) */ #define SIGUSR1 30 /* user defined signal 1 */ #define SIGUSR2 31 /* user defined signal 2 */ #define NSIG 32 /* signal 0 implied */ #endif #endif #ifdef __cplusplus } #endif #if defined(__CYGWIN__) #if __XSI_VISIBLE >= 4 || __POSIX_VISIBLE >= 200809 #include #endif #endif #ifndef _SIGNAL_H_ /* Some applications take advantage of the fact that * and are equivalent in glibc. Allow for that here. */ #include #endif #endif /* _SYS_SIGNAL_H */ picolibc-1.7.4/newlib/libc/include/sys/stat.h000066400000000000000000000172101414576234500211010ustar00rootroot00000000000000/* Copyright (c) 1982, 1986, 1993 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _SYS_STAT_H #define _SYS_STAT_H #ifdef __cplusplus extern "C" { #endif #include <_ansi.h> #include #include #include #include /* dj's stat defines _STAT_H_ */ #ifndef _STAT_H_ /* It is intended that the layout of this structure not change when the sizes of any of the basic types change (short, int, long) [via a compile time option]. */ #ifdef __CYGWIN__ #include #ifdef _COMPILING_NEWLIB #define stat64 stat #endif #else struct stat { dev_t st_dev; ino_t st_ino; mode_t st_mode; nlink_t st_nlink; uid_t st_uid; gid_t st_gid; #if defined(__linux) && defined(__x86_64__) int __pad0; #endif dev_t st_rdev; #if defined(__linux) && !defined(__x86_64__) unsigned short int __pad2; #endif off_t st_size; #if defined(__linux) blksize_t st_blksize; blkcnt_t st_blocks; struct timespec st_atim; struct timespec st_mtim; struct timespec st_ctim; #define st_atime st_atim.tv_sec /* Backward compatibility */ #define st_mtime st_mtim.tv_sec #define st_ctime st_ctim.tv_sec #if defined(__linux) && defined(__x86_64__) __uint64_t __glibc_reserved[3]; #endif #else #if defined(__rtems__) struct timespec st_atim; struct timespec st_mtim; struct timespec st_ctim; blksize_t st_blksize; blkcnt_t st_blocks; #else /* SysV/sco doesn't have the rest... But Solaris, eabi does. */ #if defined(__svr4__) && !defined(__PPC__) && !defined(__sun__) time_t st_atime; time_t st_mtime; time_t st_ctime; #else struct timespec st_atim; struct timespec st_mtim; struct timespec st_ctim; blksize_t st_blksize; blkcnt_t st_blocks; #if !defined(__rtems__) long st_spare4[2]; #endif #endif #endif #endif }; #if !(defined(__svr4__) && !defined(__PPC__) && !defined(__sun__)) #define st_atime st_atim.tv_sec #define st_ctime st_ctim.tv_sec #define st_mtime st_mtim.tv_sec #endif #endif #define _IFMT 0170000 /* type of file */ #define _IFDIR 0040000 /* directory */ #define _IFCHR 0020000 /* character special */ #define _IFBLK 0060000 /* block special */ #define _IFREG 0100000 /* regular */ #define _IFLNK 0120000 /* symbolic link */ #define _IFSOCK 0140000 /* socket */ #define _IFIFO 0010000 /* fifo */ #define S_BLKSIZE 1024 /* size of a block */ #define S_ISUID 0004000 /* set user id on execution */ #define S_ISGID 0002000 /* set group id on execution */ #define S_ISVTX 0001000 /* save swapped text even after use */ #if __BSD_VISIBLE #define S_IREAD 0000400 /* read permission, owner */ #define S_IWRITE 0000200 /* write permission, owner */ #define S_IEXEC 0000100 /* execute/search permission, owner */ #define S_ENFMT 0002000 /* enforcement-mode locking */ #endif /* !_BSD_VISIBLE */ #define S_IFMT _IFMT #define S_IFDIR _IFDIR #define S_IFCHR _IFCHR #define S_IFBLK _IFBLK #define S_IFREG _IFREG #define S_IFLNK _IFLNK #define S_IFSOCK _IFSOCK #define S_IFIFO _IFIFO #ifdef _WIN32 /* The Windows header files define _S_ forms of these, so we do too for easier portability. */ #define _S_IFMT _IFMT #define _S_IFDIR _IFDIR #define _S_IFCHR _IFCHR #define _S_IFIFO _IFIFO #define _S_IFREG _IFREG #define _S_IREAD 0000400 #define _S_IWRITE 0000200 #define _S_IEXEC 0000100 #endif #define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR) #define S_IRUSR 0000400 /* read permission, owner */ #define S_IWUSR 0000200 /* write permission, owner */ #define S_IXUSR 0000100/* execute/search permission, owner */ #define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP) #define S_IRGRP 0000040 /* read permission, group */ #define S_IWGRP 0000020 /* write permission, grougroup */ #define S_IXGRP 0000010/* execute/search permission, group */ #define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH) #define S_IROTH 0000004 /* read permission, other */ #define S_IWOTH 0000002 /* write permission, other */ #define S_IXOTH 0000001/* execute/search permission, other */ #if __BSD_VISIBLE #define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO) /* 0777 */ #define ALLPERMS (S_ISUID | S_ISGID | S_ISVTX | S_IRWXU | S_IRWXG | S_IRWXO) /* 07777 */ #define DEFFILEMODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH) /* 0666 */ #endif #define S_ISBLK(m) (((m)&_IFMT) == _IFBLK) #define S_ISCHR(m) (((m)&_IFMT) == _IFCHR) #define S_ISDIR(m) (((m)&_IFMT) == _IFDIR) #define S_ISFIFO(m) (((m)&_IFMT) == _IFIFO) #define S_ISREG(m) (((m)&_IFMT) == _IFREG) #define S_ISLNK(m) (((m)&_IFMT) == _IFLNK) #define S_ISSOCK(m) (((m)&_IFMT) == _IFSOCK) #if defined(__CYGWIN__) || defined(__rtems__) /* Special tv_nsec values for futimens(2) and utimensat(2). */ #define UTIME_NOW -2L #define UTIME_OMIT -1L #endif int chmod (const char *__path, mode_t __mode ); int fchmod (int __fd, mode_t __mode); int fstat (int __fd, struct stat *__sbuf ); int mkdir (const char *_path, mode_t __mode ); int mkfifo (const char *__path, mode_t __mode ); int stat (const char *__restrict __path, struct stat *__restrict __sbuf ); mode_t umask (mode_t __mask ); #if defined (__SPU__) || defined(__rtems__) || defined(__CYGWIN__) && !defined(__INSIDE_CYGWIN__) int lstat (const char *__restrict __path, struct stat *__restrict __buf ); int mknod (const char *__path, mode_t __mode, dev_t __dev ); #endif #if __ATFILE_VISIBLE && !defined(__INSIDE_CYGWIN__) int fchmodat (int, const char *, mode_t, int); int fstatat (int, const char *__restrict , struct stat *__restrict, int); int mkdirat (int, const char *, mode_t); int mkfifoat (int, const char *, mode_t); int mknodat (int, const char *, mode_t, dev_t); int utimensat (int, const char *, const struct timespec [2], int); #endif #if __POSIX_VISIBLE >= 200809 && !defined(__INSIDE_CYGWIN__) int futimens (int, const struct timespec [2]); #endif /* Provide prototypes for most of the _ names that are provided in newlib for some compilers. */ #ifdef _COMPILING_NEWLIB int _fstat (int __fd, struct stat *__sbuf ); int _stat (const char *__restrict __path, struct stat *__restrict __sbuf ); int _mkdir (const char *_path, mode_t __mode ); #ifdef __LARGE64_FILES struct stat64; int _stat64 (const char *__restrict __path, struct stat64 *__restrict __sbuf ); int _fstat64 (int __fd, struct stat64 *__sbuf ); #endif #endif #endif /* !_STAT_H_ */ #ifdef __cplusplus } #endif #endif /* _SYS_STAT_H */ picolibc-1.7.4/newlib/libc/include/sys/string.h000066400000000000000000000002621414576234500214330ustar00rootroot00000000000000/* Copyright (c) 2005 Jeff Johnston */ /* This is a dummy used as a placeholder for systems that need to have a special header file. */ picolibc-1.7.4/newlib/libc/include/sys/syslimits.h000066400000000000000000000056361414576234500221770ustar00rootroot00000000000000/* * Copyright (c) 1988, 1993 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)syslimits.h 8.1 (Berkeley) 6/2/93 * $FreeBSD: src/sys/sys/syslimits.h,v 1.10 2001/06/18 20:24:54 wollman Exp $ */ #ifndef _SYS_SYSLIMITS_H_ #define _SYS_SYSLIMITS_H_ #define ARG_MAX 65536 /* max bytes for an exec function */ #ifndef CHILD_MAX #define CHILD_MAX 40 /* max simultaneous processes */ #endif #define LINK_MAX 32767 /* max file link count */ #define MAX_CANON 255 /* max bytes in term canon input line */ #define MAX_INPUT 255 /* max bytes in terminal input */ #define NAME_MAX 255 /* max bytes in a file name */ #define NGROUPS_MAX 16 /* max supplemental group id's */ #ifndef OPEN_MAX #define OPEN_MAX 64 /* max open files per process */ #endif #define PATH_MAX 1024 /* max bytes in pathname */ #define PIPE_BUF 512 /* max bytes for atomic pipe writes */ #define IOV_MAX 1024 /* max elements in i/o vector */ #define BC_BASE_MAX 99 /* max ibase/obase values in bc(1) */ #define BC_DIM_MAX 2048 /* max array elements in bc(1) */ #define BC_SCALE_MAX 99 /* max scale value in bc(1) */ #define BC_STRING_MAX 1000 /* max const string length in bc(1) */ #define COLL_WEIGHTS_MAX 0 /* max weights for order keyword */ #define EXPR_NEST_MAX 32 /* max expressions nested in expr(1) */ #define LINE_MAX 2048 /* max bytes in an input line */ #define RE_DUP_MAX 255 /* max RE's in interval notation */ #endif picolibc-1.7.4/newlib/libc/include/sys/time.h000066400000000000000000000266431414576234500210760ustar00rootroot00000000000000/* time.h -- An implementation of the standard Unix file. Written by Geoffrey Noer Public domain; no rights reserved. */ /*- * SPDX-License-Identifier: BSD-3-Clause * * Copyright (c) 1982, 1986, 1993 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)time.h 8.5 (Berkeley) 5/4/95 * $FreeBSD: head/sys/sys/time.h 346176 2019-04-13 04:46:35Z imp $ */ #ifndef _SYS_TIME_H_ #define _SYS_TIME_H_ #include <_ansi.h> #include #include #include #include #if __BSD_VISIBLE || __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE #include #endif struct timezone { int tz_minuteswest; /* minutes west of Greenwich */ int tz_dsttime; /* type of dst correction */ }; #define DST_NONE 0 /* not on dst */ #define DST_USA 1 /* USA style dst */ #define DST_AUST 2 /* Australian style dst */ #define DST_WET 3 /* Western European dst */ #define DST_MET 4 /* Middle European dst */ #define DST_EET 5 /* Eastern European dst */ #define DST_CAN 6 /* Canada */ #if __BSD_VISIBLE struct bintime { time_t sec; uint64_t frac; }; static __inline void bintime_addx(struct bintime *_bt, uint64_t _x) { uint64_t _u; _u = _bt->frac; _bt->frac += _x; if (_u > _bt->frac) _bt->sec++; } static __inline void bintime_add(struct bintime *_bt, const struct bintime *_bt2) { uint64_t _u; _u = _bt->frac; _bt->frac += _bt2->frac; if (_u > _bt->frac) _bt->sec++; _bt->sec += _bt2->sec; } static __inline void bintime_sub(struct bintime *_bt, const struct bintime *_bt2) { uint64_t _u; _u = _bt->frac; _bt->frac -= _bt2->frac; if (_u < _bt->frac) _bt->sec--; _bt->sec -= _bt2->sec; } static __inline void bintime_mul(struct bintime *_bt, u_int _x) { uint64_t _p1, _p2; _p1 = (_bt->frac & 0xffffffffull) * _x; _p2 = (_bt->frac >> 32) * _x + (_p1 >> 32); _bt->sec *= _x; _bt->sec += (_p2 >> 32); _bt->frac = (_p2 << 32) | (_p1 & 0xffffffffull); } static __inline void bintime_shift(struct bintime *_bt, int _exp) { if (_exp > 0) { _bt->sec <<= _exp; _bt->sec |= _bt->frac >> (64 - _exp); _bt->frac <<= _exp; } else if (_exp < 0) { _bt->frac >>= -_exp; _bt->frac |= (uint64_t)_bt->sec << (64 + _exp); _bt->sec >>= -_exp; } } #define bintime_clear(a) ((a)->sec = (a)->frac = 0) #define bintime_isset(a) ((a)->sec || (a)->frac) #define bintime_cmp(a, b, cmp) \ (((a)->sec == (b)->sec) ? \ ((a)->frac cmp (b)->frac) : \ ((a)->sec cmp (b)->sec)) #define SBT_1S ((sbintime_t)1 << 32) #define SBT_1M (SBT_1S * 60) #define SBT_1MS (SBT_1S / 1000) #define SBT_1US (SBT_1S / 1000000) #define SBT_1NS (SBT_1S / 1000000000) /* beware rounding, see nstosbt() */ #define SBT_MAX 0x7fffffffffffffffLL static __inline int sbintime_getsec(sbintime_t _sbt) { return (_sbt >> 32); } static __inline sbintime_t bttosbt(const struct bintime _bt) { return (((sbintime_t)_bt.sec << 32) + (_bt.frac >> 32)); } static __inline struct bintime sbttobt(sbintime_t _sbt) { struct bintime _bt; _bt.sec = _sbt >> 32; _bt.frac = _sbt << 32; return (_bt); } /* * Decimal<->sbt conversions. Multiplying or dividing by SBT_1NS results in * large roundoff errors which sbttons() and nstosbt() avoid. Millisecond and * microsecond functions are also provided for completeness. * * These functions return the smallest sbt larger or equal to the * number of seconds requested so that sbttoX(Xtosbt(y)) == y. Unlike * top of second computations below, which require that we tick at the * top of second, these need to be rounded up so we do whatever for at * least as long as requested. * * The naive computation we'd do is this * ((unit * 2^64 / SIFACTOR) + 2^32-1) >> 32 * However, that overflows. Instead, we compute * ((unit * 2^63 / SIFACTOR) + 2^31-1) >> 32 * and use pre-computed constants that are the ceil of the 2^63 / SIFACTOR * term to ensure we are using exactly the right constant. We use the lesser * evil of ull rather than a uint64_t cast to ensure we have well defined * right shift semantics. With these changes, we get all the ns, us and ms * conversions back and forth right. */ static __inline int64_t sbttons(sbintime_t _sbt) { uint64_t ns; ns = _sbt; if (ns >= SBT_1S) ns = (ns >> 32) * 1000000000; else ns = 0; return (ns + (1000000000 * (_sbt & 0xffffffffu) >> 32)); } static __inline sbintime_t nstosbt(int64_t _ns) { sbintime_t sb = 0; if (_ns >= SBT_1S) { sb = (_ns / 1000000000) * SBT_1S; _ns = _ns % 1000000000; } /* 9223372037 = ceil(2^63 / 1000000000) */ sb += ((_ns * 9223372037ull) + 0x7fffffff) >> 31; return (sb); } static __inline int64_t sbttous(sbintime_t _sbt) { return ((1000000 * _sbt) >> 32); } static __inline sbintime_t ustosbt(int64_t _us) { sbintime_t sb = 0; if (_us >= SBT_1S) { sb = (_us / 1000000) * SBT_1S; _us = _us % 1000000; } /* 9223372036855 = ceil(2^63 / 1000000) */ sb += ((_us * 9223372036855ull) + 0x7fffffff) >> 31; return (sb); } static __inline int64_t sbttoms(sbintime_t _sbt) { return ((1000 * _sbt) >> 32); } static __inline sbintime_t mstosbt(int64_t _ms) { sbintime_t sb = 0; if (_ms >= SBT_1S) { sb = (_ms / 1000) * SBT_1S; _ms = _ms % 1000; } /* 9223372036854776 = ceil(2^63 / 1000) */ sb += ((_ms * 9223372036854776ull) + 0x7fffffff) >> 31; return (sb); } /*- * Background information: * * When converting between timestamps on parallel timescales of differing * resolutions it is historical and scientific practice to round down rather * than doing 4/5 rounding. * * The date changes at midnight, not at noon. * * Even at 15:59:59.999999999 it's not four'o'clock. * * time_second ticks after N.999999999 not after N.4999999999 */ static __inline void bintime2timespec(const struct bintime *_bt, struct timespec *_ts) { _ts->tv_sec = _bt->sec; _ts->tv_nsec = ((uint64_t)1000000000 * (uint32_t)(_bt->frac >> 32)) >> 32; } static __inline void timespec2bintime(const struct timespec *_ts, struct bintime *_bt) { _bt->sec = _ts->tv_sec; /* 18446744073 = int(2^64 / 1000000000) */ _bt->frac = _ts->tv_nsec * (uint64_t)18446744073LL; } static __inline void bintime2timeval(const struct bintime *_bt, struct timeval *_tv) { _tv->tv_sec = _bt->sec; _tv->tv_usec = ((uint64_t)1000000 * (uint32_t)(_bt->frac >> 32)) >> 32; } static __inline void timeval2bintime(const struct timeval *_tv, struct bintime *_bt) { _bt->sec = _tv->tv_sec; /* 18446744073709 = int(2^64 / 1000000) */ _bt->frac = _tv->tv_usec * (uint64_t)18446744073709LL; } static __inline struct timespec sbttots(sbintime_t _sbt) { struct timespec _ts; _ts.tv_sec = _sbt >> 32; _ts.tv_nsec = sbttons((uint32_t)_sbt); return (_ts); } static __inline sbintime_t tstosbt(struct timespec _ts) { return (((sbintime_t)_ts.tv_sec << 32) + nstosbt(_ts.tv_nsec)); } static __inline struct timeval sbttotv(sbintime_t _sbt) { struct timeval _tv; _tv.tv_sec = _sbt >> 32; _tv.tv_usec = sbttous((uint32_t)_sbt); return (_tv); } static __inline sbintime_t tvtosbt(struct timeval _tv) { return (((sbintime_t)_tv.tv_sec << 32) + ustosbt(_tv.tv_usec)); } /* Operations on timespecs */ #define timespecclear(tvp) ((tvp)->tv_sec = (tvp)->tv_nsec = 0) #define timespecisset(tvp) ((tvp)->tv_sec || (tvp)->tv_nsec) #define timespeccmp(tvp, uvp, cmp) \ (((tvp)->tv_sec == (uvp)->tv_sec) ? \ ((tvp)->tv_nsec cmp (uvp)->tv_nsec) : \ ((tvp)->tv_sec cmp (uvp)->tv_sec)) #define timespecadd(tsp, usp, vsp) \ do { \ (vsp)->tv_sec = (tsp)->tv_sec + (usp)->tv_sec; \ (vsp)->tv_nsec = (tsp)->tv_nsec + (usp)->tv_nsec; \ if ((vsp)->tv_nsec >= 1000000000L) { \ (vsp)->tv_sec++; \ (vsp)->tv_nsec -= 1000000000L; \ } \ } while (0) #define timespecsub(tsp, usp, vsp) \ do { \ (vsp)->tv_sec = (tsp)->tv_sec - (usp)->tv_sec; \ (vsp)->tv_nsec = (tsp)->tv_nsec - (usp)->tv_nsec; \ if ((vsp)->tv_nsec < 0) { \ (vsp)->tv_sec--; \ (vsp)->tv_nsec += 1000000000L; \ } \ } while (0) #ifndef _KERNEL /* NetBSD/OpenBSD compatible interfaces */ #define timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0) #define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) #define timercmp(tvp, uvp, cmp) \ (((tvp)->tv_sec == (uvp)->tv_sec) ? \ ((tvp)->tv_usec cmp (uvp)->tv_usec) : \ ((tvp)->tv_sec cmp (uvp)->tv_sec)) #define timeradd(tvp, uvp, vvp) \ do { \ (vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec; \ (vvp)->tv_usec = (tvp)->tv_usec + (uvp)->tv_usec; \ if ((vvp)->tv_usec >= 1000000) { \ (vvp)->tv_sec++; \ (vvp)->tv_usec -= 1000000; \ } \ } while (0) #define timersub(tvp, uvp, vvp) \ do { \ (vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \ (vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \ if ((vvp)->tv_usec < 0) { \ (vvp)->tv_sec--; \ (vvp)->tv_usec += 1000000; \ } \ } while (0) #endif #endif /* __BSD_VISIBLE */ /* * Names of the interval timers, and structure * defining a timer setting. */ #define ITIMER_REAL 0 #define ITIMER_VIRTUAL 1 #define ITIMER_PROF 2 struct itimerval { struct timeval it_interval; /* timer interval */ struct timeval it_value; /* current value */ }; #ifndef _KERNEL #include __BEGIN_DECLS int utimes (const char *, const struct timeval [2]); #if __BSD_VISIBLE int adjtime (const struct timeval *, struct timeval *); int futimes (int, const struct timeval [2]); int lutimes (const char *, const struct timeval [2]); int settimeofday (const struct timeval *, const struct timezone *); #endif #if __MISC_VISIBLE || __XSI_VISIBLE int getitimer (int __which, struct itimerval *__value); int setitimer (int __which, const struct itimerval *__restrict __value, struct itimerval *__restrict __ovalue); #endif int gettimeofday (struct timeval *__restrict __p, void *__restrict __tz); #if __GNU_VISIBLE int futimesat (int, const char *, const struct timeval [2]); #endif #ifdef _COMPILING_NEWLIB int _gettimeofday (struct timeval *__p, void *__tz); #endif __END_DECLS #endif /* !_KERNEL */ #include #endif /* !_SYS_TIME_H_ */ picolibc-1.7.4/newlib/libc/include/sys/timeb.h000066400000000000000000000044051414576234500212300ustar00rootroot00000000000000/* Copyright (c) 1982, 1986, 1993 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* timeb.h -- An implementation of the standard Unix file. Written by Ian Lance Taylor Public domain; no rights reserved. declares the structure used by the ftime function, as well as the ftime function itself. Newlib does not provide an implementation of ftime. */ #ifndef _SYS_TIMEB_H #ifdef __cplusplus extern "C" { #endif #define _SYS_TIMEB_H #include <_ansi.h> #include #if !defined(__time_t_defined) && !defined(_TIME_T_DECLARED) typedef _TIME_T_ time_t; #define __time_t_defined #define _TIME_T_DECLARED #endif struct timeb { time_t time; unsigned short millitm; short timezone; short dstflag; }; extern int ftime (struct timeb *); #ifdef __cplusplus } #endif #endif /* ! defined (_SYS_TIMEB_H) */ picolibc-1.7.4/newlib/libc/include/sys/times.h000066400000000000000000000041741414576234500212540ustar00rootroot00000000000000/* Copyright (c) 1982, 1986, 1993 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _SYS_TIMES_H #ifdef __cplusplus extern "C" { #endif #define _SYS_TIMES_H #include <_ansi.h> #include #if !defined(__clock_t_defined) && !defined(_CLOCK_T_DECLARED) typedef _CLOCK_T_ clock_t; #define __clock_t_defined #define _CLOCK_T_DECLARED #endif /* Get Process Times, P1003.1b-1993, p. 92 */ struct tms { clock_t tms_utime; /* user time */ clock_t tms_stime; /* system time */ clock_t tms_cutime; /* user time, children */ clock_t tms_cstime; /* system time, children */ }; clock_t times (struct tms *); #ifdef _COMPILING_NEWLIB clock_t _times (struct tms *); #endif #ifdef __cplusplus } #endif #endif /* !_SYS_TIMES_H */ picolibc-1.7.4/newlib/libc/include/sys/timespec.h000066400000000000000000000045531414576234500217450ustar00rootroot00000000000000/*- * Copyright (c) 1982, 1986, 1993 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)time.h 8.5 (Berkeley) 5/4/95 * from: FreeBSD: src/sys/sys/time.h,v 1.43 2000/03/20 14:09:05 phk Exp * $FreeBSD$ */ #ifndef _SYS_TIMESPEC_H_ #define _SYS_TIMESPEC_H_ #include #include #if __BSD_VISIBLE #define TIMEVAL_TO_TIMESPEC(tv, ts) \ do { \ (ts)->tv_sec = (tv)->tv_sec; \ (ts)->tv_nsec = (tv)->tv_usec * 1000; \ } while (0) #define TIMESPEC_TO_TIMEVAL(tv, ts) \ do { \ (tv)->tv_sec = (ts)->tv_sec; \ (tv)->tv_usec = (ts)->tv_nsec / 1000; \ } while (0) #endif /* __BSD_VISIBLE */ /* * Structure defined by POSIX.1b to be like a itimerval, but with * timespecs. Used in the timer_*() system calls. */ struct itimerspec { struct timespec it_interval; struct timespec it_value; }; #endif /* _SYS_TIMESPEC_H_ */ picolibc-1.7.4/newlib/libc/include/sys/tree.h000066400000000000000000000647221414576234500210770ustar00rootroot00000000000000/* $NetBSD: tree.h,v 1.8 2004/03/28 19:38:30 provos Exp $ */ /* $OpenBSD: tree.h,v 1.7 2002/10/17 21:51:54 art Exp $ */ /* $FreeBSD: head/sys/sys/tree.h 347360 2019-05-08 18:47:00Z trasz $ */ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright 2002 Niels Provos * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _SYS_TREE_H_ #define _SYS_TREE_H_ #include /* * This file defines data structures for different types of trees: * splay trees and red-black trees. * * A splay tree is a self-organizing data structure. Every operation * on the tree causes a splay to happen. The splay moves the requested * node to the root of the tree and partly rebalances it. * * This has the benefit that request locality causes faster lookups as * the requested nodes move to the top of the tree. On the other hand, * every lookup causes memory writes. * * The Balance Theorem bounds the total access time for m operations * and n inserts on an initially empty tree as O((m + n)lg n). The * amortized cost for a sequence of m accesses to a splay tree is O(lg n); * * A red-black tree is a binary search tree with the node color as an * extra attribute. It fulfills a set of conditions: * - every search path from the root to a leaf consists of the * same number of black nodes, * - each red node (except for the root) has a black parent, * - each leaf node is black. * * Every operation on a red-black tree is bounded as O(lg n). * The maximum height of a red-black tree is 2lg (n+1). */ #define SPLAY_HEAD(name, type) \ struct name { \ struct type *sph_root; /* root of the tree */ \ } #define SPLAY_INITIALIZER(root) \ { NULL } #define SPLAY_INIT(root) do { \ (root)->sph_root = NULL; \ } while (/*CONSTCOND*/ 0) #define SPLAY_ENTRY(type) \ struct { \ struct type *spe_left; /* left element */ \ struct type *spe_right; /* right element */ \ } #define SPLAY_LEFT(elm, field) (elm)->field.spe_left #define SPLAY_RIGHT(elm, field) (elm)->field.spe_right #define SPLAY_ROOT(head) (head)->sph_root #define SPLAY_EMPTY(head) (SPLAY_ROOT(head) == NULL) /* SPLAY_ROTATE_{LEFT,RIGHT} expect that tmp hold SPLAY_{RIGHT,LEFT} */ #define SPLAY_ROTATE_RIGHT(head, tmp, field) do { \ SPLAY_LEFT((head)->sph_root, field) = SPLAY_RIGHT(tmp, field); \ SPLAY_RIGHT(tmp, field) = (head)->sph_root; \ (head)->sph_root = tmp; \ } while (/*CONSTCOND*/ 0) #define SPLAY_ROTATE_LEFT(head, tmp, field) do { \ SPLAY_RIGHT((head)->sph_root, field) = SPLAY_LEFT(tmp, field); \ SPLAY_LEFT(tmp, field) = (head)->sph_root; \ (head)->sph_root = tmp; \ } while (/*CONSTCOND*/ 0) #define SPLAY_LINKLEFT(head, tmp, field) do { \ SPLAY_LEFT(tmp, field) = (head)->sph_root; \ tmp = (head)->sph_root; \ (head)->sph_root = SPLAY_LEFT((head)->sph_root, field); \ } while (/*CONSTCOND*/ 0) #define SPLAY_LINKRIGHT(head, tmp, field) do { \ SPLAY_RIGHT(tmp, field) = (head)->sph_root; \ tmp = (head)->sph_root; \ (head)->sph_root = SPLAY_RIGHT((head)->sph_root, field); \ } while (/*CONSTCOND*/ 0) #define SPLAY_ASSEMBLE(head, node, left, right, field) do { \ SPLAY_RIGHT(left, field) = SPLAY_LEFT((head)->sph_root, field); \ SPLAY_LEFT(right, field) = SPLAY_RIGHT((head)->sph_root, field);\ SPLAY_LEFT((head)->sph_root, field) = SPLAY_RIGHT(node, field); \ SPLAY_RIGHT((head)->sph_root, field) = SPLAY_LEFT(node, field); \ } while (/*CONSTCOND*/ 0) /* Generates prototypes and inline functions */ #define SPLAY_PROTOTYPE(name, type, field, cmp) \ void name##_SPLAY(struct name *, struct type *); \ void name##_SPLAY_MINMAX(struct name *, int); \ struct type *name##_SPLAY_INSERT(struct name *, struct type *); \ struct type *name##_SPLAY_REMOVE(struct name *, struct type *); \ \ /* Finds the node with the same key as elm */ \ static __unused __inline struct type * \ name##_SPLAY_FIND(struct name *head, struct type *elm) \ { \ if (SPLAY_EMPTY(head)) \ return(NULL); \ name##_SPLAY(head, elm); \ if ((cmp)(elm, (head)->sph_root) == 0) \ return (head->sph_root); \ return (NULL); \ } \ \ static __unused __inline struct type * \ name##_SPLAY_NEXT(struct name *head, struct type *elm) \ { \ name##_SPLAY(head, elm); \ if (SPLAY_RIGHT(elm, field) != NULL) { \ elm = SPLAY_RIGHT(elm, field); \ while (SPLAY_LEFT(elm, field) != NULL) { \ elm = SPLAY_LEFT(elm, field); \ } \ } else \ elm = NULL; \ return (elm); \ } \ \ static __unused __inline struct type * \ name##_SPLAY_MIN_MAX(struct name *head, int val) \ { \ name##_SPLAY_MINMAX(head, val); \ return (SPLAY_ROOT(head)); \ } /* Main splay operation. * Moves node close to the key of elm to top */ #define SPLAY_GENERATE(name, type, field, cmp) \ struct type * \ name##_SPLAY_INSERT(struct name *head, struct type *elm) \ { \ if (SPLAY_EMPTY(head)) { \ SPLAY_LEFT(elm, field) = SPLAY_RIGHT(elm, field) = NULL; \ } else { \ int __comp; \ name##_SPLAY(head, elm); \ __comp = (cmp)(elm, (head)->sph_root); \ if(__comp < 0) { \ SPLAY_LEFT(elm, field) = SPLAY_LEFT((head)->sph_root, field);\ SPLAY_RIGHT(elm, field) = (head)->sph_root; \ SPLAY_LEFT((head)->sph_root, field) = NULL; \ } else if (__comp > 0) { \ SPLAY_RIGHT(elm, field) = SPLAY_RIGHT((head)->sph_root, field);\ SPLAY_LEFT(elm, field) = (head)->sph_root; \ SPLAY_RIGHT((head)->sph_root, field) = NULL; \ } else \ return ((head)->sph_root); \ } \ (head)->sph_root = (elm); \ return (NULL); \ } \ \ struct type * \ name##_SPLAY_REMOVE(struct name *head, struct type *elm) \ { \ struct type *__tmp; \ if (SPLAY_EMPTY(head)) \ return (NULL); \ name##_SPLAY(head, elm); \ if ((cmp)(elm, (head)->sph_root) == 0) { \ if (SPLAY_LEFT((head)->sph_root, field) == NULL) { \ (head)->sph_root = SPLAY_RIGHT((head)->sph_root, field);\ } else { \ __tmp = SPLAY_RIGHT((head)->sph_root, field); \ (head)->sph_root = SPLAY_LEFT((head)->sph_root, field);\ name##_SPLAY(head, elm); \ SPLAY_RIGHT((head)->sph_root, field) = __tmp; \ } \ return (elm); \ } \ return (NULL); \ } \ \ void \ name##_SPLAY(struct name *head, struct type *elm) \ { \ struct type __node, *__left, *__right, *__tmp; \ int __comp; \ \ SPLAY_LEFT(&__node, field) = SPLAY_RIGHT(&__node, field) = NULL;\ __left = __right = &__node; \ \ while ((__comp = (cmp)(elm, (head)->sph_root)) != 0) { \ if (__comp < 0) { \ __tmp = SPLAY_LEFT((head)->sph_root, field); \ if (__tmp == NULL) \ break; \ if ((cmp)(elm, __tmp) < 0){ \ SPLAY_ROTATE_RIGHT(head, __tmp, field); \ if (SPLAY_LEFT((head)->sph_root, field) == NULL)\ break; \ } \ SPLAY_LINKLEFT(head, __right, field); \ } else if (__comp > 0) { \ __tmp = SPLAY_RIGHT((head)->sph_root, field); \ if (__tmp == NULL) \ break; \ if ((cmp)(elm, __tmp) > 0){ \ SPLAY_ROTATE_LEFT(head, __tmp, field); \ if (SPLAY_RIGHT((head)->sph_root, field) == NULL)\ break; \ } \ SPLAY_LINKRIGHT(head, __left, field); \ } \ } \ SPLAY_ASSEMBLE(head, &__node, __left, __right, field); \ } \ \ /* Splay with either the minimum or the maximum element \ * Used to find minimum or maximum element in tree. \ */ \ void name##_SPLAY_MINMAX(struct name *head, int __comp) \ { \ struct type __node, *__left, *__right, *__tmp; \ \ SPLAY_LEFT(&__node, field) = SPLAY_RIGHT(&__node, field) = NULL;\ __left = __right = &__node; \ \ while (1) { \ if (__comp < 0) { \ __tmp = SPLAY_LEFT((head)->sph_root, field); \ if (__tmp == NULL) \ break; \ if (__comp < 0){ \ SPLAY_ROTATE_RIGHT(head, __tmp, field); \ if (SPLAY_LEFT((head)->sph_root, field) == NULL)\ break; \ } \ SPLAY_LINKLEFT(head, __right, field); \ } else if (__comp > 0) { \ __tmp = SPLAY_RIGHT((head)->sph_root, field); \ if (__tmp == NULL) \ break; \ if (__comp > 0) { \ SPLAY_ROTATE_LEFT(head, __tmp, field); \ if (SPLAY_RIGHT((head)->sph_root, field) == NULL)\ break; \ } \ SPLAY_LINKRIGHT(head, __left, field); \ } \ } \ SPLAY_ASSEMBLE(head, &__node, __left, __right, field); \ } #define SPLAY_NEGINF -1 #define SPLAY_INF 1 #define SPLAY_INSERT(name, x, y) name##_SPLAY_INSERT(x, y) #define SPLAY_REMOVE(name, x, y) name##_SPLAY_REMOVE(x, y) #define SPLAY_FIND(name, x, y) name##_SPLAY_FIND(x, y) #define SPLAY_NEXT(name, x, y) name##_SPLAY_NEXT(x, y) #define SPLAY_MIN(name, x) (SPLAY_EMPTY(x) ? NULL \ : name##_SPLAY_MIN_MAX(x, SPLAY_NEGINF)) #define SPLAY_MAX(name, x) (SPLAY_EMPTY(x) ? NULL \ : name##_SPLAY_MIN_MAX(x, SPLAY_INF)) #define SPLAY_FOREACH(x, name, head) \ for ((x) = SPLAY_MIN(name, head); \ (x) != NULL; \ (x) = SPLAY_NEXT(name, head, x)) /* Macros that define a red-black tree */ #define RB_HEAD(name, type) \ struct name { \ struct type *rbh_root; /* root of the tree */ \ } #define RB_INITIALIZER(root) \ { NULL } #define RB_INIT(root) do { \ (root)->rbh_root = NULL; \ } while (/*CONSTCOND*/ 0) #define RB_BLACK 0 #define RB_RED 1 #define RB_ENTRY(type) \ struct { \ struct type *rbe_left; /* left element */ \ struct type *rbe_right; /* right element */ \ struct type *rbe_parent; /* parent element */ \ int rbe_color; /* node color */ \ } #define RB_LEFT(elm, field) (elm)->field.rbe_left #define RB_RIGHT(elm, field) (elm)->field.rbe_right #define RB_PARENT(elm, field) (elm)->field.rbe_parent #define RB_COLOR(elm, field) (elm)->field.rbe_color #define RB_ISRED(elm, field) ((elm) != NULL && RB_COLOR(elm, field) == RB_RED) #define RB_ROOT(head) (head)->rbh_root #define RB_EMPTY(head) (RB_ROOT(head) == NULL) #define RB_SET_PARENT(dst, src, field) do { \ RB_PARENT(dst, field) = src; \ } while (/*CONSTCOND*/ 0) #define RB_SET(elm, parent, field) do { \ RB_SET_PARENT(elm, parent, field); \ RB_LEFT(elm, field) = RB_RIGHT(elm, field) = NULL; \ RB_COLOR(elm, field) = RB_RED; \ } while (/*CONSTCOND*/ 0) #define RB_SET_BLACKRED(black, red, field) do { \ RB_COLOR(black, field) = RB_BLACK; \ RB_COLOR(red, field) = RB_RED; \ } while (/*CONSTCOND*/ 0) /* * Something to be invoked in a loop at the root of every modified subtree, * from the bottom up to the root, to update augmented node data. */ #ifndef RB_AUGMENT #define RB_AUGMENT(x) break #endif #define RB_SWAP_CHILD(head, out, in, field) do { \ if (RB_PARENT(out, field) == NULL) \ RB_ROOT(head) = (in); \ else if ((out) == RB_LEFT(RB_PARENT(out, field), field)) \ RB_LEFT(RB_PARENT(out, field), field) = (in); \ else \ RB_RIGHT(RB_PARENT(out, field), field) = (in); \ } while (/*CONSTCOND*/ 0) #define RB_ROTATE_LEFT(head, elm, tmp, field) do { \ (tmp) = RB_RIGHT(elm, field); \ if ((RB_RIGHT(elm, field) = RB_LEFT(tmp, field)) != NULL) { \ RB_SET_PARENT(RB_RIGHT(elm, field), elm, field); \ } \ RB_SET_PARENT(tmp, RB_PARENT(elm, field), field); \ RB_SWAP_CHILD(head, elm, tmp, field); \ RB_LEFT(tmp, field) = (elm); \ RB_SET_PARENT(elm, tmp, field); \ RB_AUGMENT(elm); \ } while (/*CONSTCOND*/ 0) #define RB_ROTATE_RIGHT(head, elm, tmp, field) do { \ (tmp) = RB_LEFT(elm, field); \ if ((RB_LEFT(elm, field) = RB_RIGHT(tmp, field)) != NULL) { \ RB_SET_PARENT(RB_LEFT(elm, field), elm, field); \ } \ RB_SET_PARENT(tmp, RB_PARENT(elm, field), field); \ RB_SWAP_CHILD(head, elm, tmp, field); \ RB_RIGHT(tmp, field) = (elm); \ RB_SET_PARENT(elm, tmp, field); \ RB_AUGMENT(elm); \ } while (/*CONSTCOND*/ 0) /* Generates prototypes and inline functions */ #define RB_PROTOTYPE(name, type, field, cmp) \ RB_PROTOTYPE_INTERNAL(name, type, field, cmp,) #define RB_PROTOTYPE_STATIC(name, type, field, cmp) \ RB_PROTOTYPE_INTERNAL(name, type, field, cmp, __unused static) #define RB_PROTOTYPE_INTERNAL(name, type, field, cmp, attr) \ RB_PROTOTYPE_INSERT_COLOR(name, type, attr); \ RB_PROTOTYPE_REMOVE_COLOR(name, type, attr); \ RB_PROTOTYPE_INSERT(name, type, attr); \ RB_PROTOTYPE_REMOVE(name, type, attr); \ RB_PROTOTYPE_FIND(name, type, attr); \ RB_PROTOTYPE_NFIND(name, type, attr); \ RB_PROTOTYPE_NEXT(name, type, attr); \ RB_PROTOTYPE_PREV(name, type, attr); \ RB_PROTOTYPE_MINMAX(name, type, attr); \ RB_PROTOTYPE_REINSERT(name, type, attr); #define RB_PROTOTYPE_INSERT_COLOR(name, type, attr) \ attr void name##_RB_INSERT_COLOR(struct name *, struct type *) #define RB_PROTOTYPE_REMOVE_COLOR(name, type, attr) \ attr void name##_RB_REMOVE_COLOR(struct name *, struct type *) #define RB_PROTOTYPE_REMOVE(name, type, attr) \ attr struct type *name##_RB_REMOVE(struct name *, struct type *) #define RB_PROTOTYPE_INSERT(name, type, attr) \ attr struct type *name##_RB_INSERT(struct name *, struct type *) #define RB_PROTOTYPE_FIND(name, type, attr) \ attr struct type *name##_RB_FIND(struct name *, struct type *) #define RB_PROTOTYPE_NFIND(name, type, attr) \ attr struct type *name##_RB_NFIND(struct name *, struct type *) #define RB_PROTOTYPE_NEXT(name, type, attr) \ attr struct type *name##_RB_NEXT(struct type *) #define RB_PROTOTYPE_PREV(name, type, attr) \ attr struct type *name##_RB_PREV(struct type *) #define RB_PROTOTYPE_MINMAX(name, type, attr) \ attr struct type *name##_RB_MINMAX(struct name *, int) #define RB_PROTOTYPE_REINSERT(name, type, attr) \ attr struct type *name##_RB_REINSERT(struct name *, struct type *) /* Main rb operation. * Moves node close to the key of elm to top */ #define RB_GENERATE(name, type, field, cmp) \ RB_GENERATE_INTERNAL(name, type, field, cmp,) #define RB_GENERATE_STATIC(name, type, field, cmp) \ RB_GENERATE_INTERNAL(name, type, field, cmp, __unused static) #define RB_GENERATE_INTERNAL(name, type, field, cmp, attr) \ RB_GENERATE_INSERT_COLOR(name, type, field, attr) \ RB_GENERATE_REMOVE_COLOR(name, type, field, attr) \ RB_GENERATE_INSERT(name, type, field, cmp, attr) \ RB_GENERATE_REMOVE(name, type, field, attr) \ RB_GENERATE_FIND(name, type, field, cmp, attr) \ RB_GENERATE_NFIND(name, type, field, cmp, attr) \ RB_GENERATE_NEXT(name, type, field, attr) \ RB_GENERATE_PREV(name, type, field, attr) \ RB_GENERATE_MINMAX(name, type, field, attr) \ RB_GENERATE_REINSERT(name, type, field, cmp, attr) #define RB_GENERATE_INSERT_COLOR(name, type, field, attr) \ attr void \ name##_RB_INSERT_COLOR(struct name *head, struct type *elm) \ { \ struct type *parent, *gparent, *tmp; \ while (RB_ISRED((parent = RB_PARENT(elm, field)), field)) { \ gparent = RB_PARENT(parent, field); \ if (parent == RB_LEFT(gparent, field)) { \ tmp = RB_RIGHT(gparent, field); \ if (RB_ISRED(tmp, field)) { \ RB_COLOR(tmp, field) = RB_BLACK; \ RB_SET_BLACKRED(parent, gparent, field);\ elm = gparent; \ continue; \ } \ if (RB_RIGHT(parent, field) == elm) { \ RB_ROTATE_LEFT(head, parent, tmp, field);\ tmp = parent; \ parent = elm; \ elm = tmp; \ } \ RB_SET_BLACKRED(parent, gparent, field); \ RB_ROTATE_RIGHT(head, gparent, tmp, field); \ } else { \ tmp = RB_LEFT(gparent, field); \ if (RB_ISRED(tmp, field)) { \ RB_COLOR(tmp, field) = RB_BLACK; \ RB_SET_BLACKRED(parent, gparent, field);\ elm = gparent; \ continue; \ } \ if (RB_LEFT(parent, field) == elm) { \ RB_ROTATE_RIGHT(head, parent, tmp, field);\ tmp = parent; \ parent = elm; \ elm = tmp; \ } \ RB_SET_BLACKRED(parent, gparent, field); \ RB_ROTATE_LEFT(head, gparent, tmp, field); \ } \ } \ RB_COLOR(head->rbh_root, field) = RB_BLACK; \ } #define RB_GENERATE_REMOVE_COLOR(name, type, field, attr) \ attr void \ name##_RB_REMOVE_COLOR(struct name *head, struct type *parent) \ { \ struct type *elm, *tmp; \ elm = NULL; \ do { \ if (RB_LEFT(parent, field) == elm) { \ tmp = RB_RIGHT(parent, field); \ if (RB_COLOR(tmp, field) == RB_RED) { \ RB_SET_BLACKRED(tmp, parent, field); \ RB_ROTATE_LEFT(head, parent, tmp, field);\ tmp = RB_RIGHT(parent, field); \ } \ if (RB_ISRED(RB_RIGHT(tmp, field), field)) \ RB_COLOR(RB_RIGHT(tmp, field), field) = RB_BLACK; \ else if (RB_ISRED(RB_LEFT(tmp, field), field)) { \ struct type *oleft; \ RB_ROTATE_RIGHT(head, tmp, oleft, field); \ RB_COLOR(oleft, field) = RB_BLACK; \ tmp = oleft; \ } else { \ RB_COLOR(tmp, field) = RB_RED; \ elm = parent; \ parent = RB_PARENT(elm, field); \ continue; \ } \ RB_COLOR(tmp, field) = RB_COLOR(parent, field); \ RB_COLOR(parent, field) = RB_BLACK; \ RB_ROTATE_LEFT(head, parent, tmp, field); \ elm = RB_ROOT(head); \ break; \ } else { \ tmp = RB_LEFT(parent, field); \ if (RB_COLOR(tmp, field) == RB_RED) { \ RB_SET_BLACKRED(tmp, parent, field); \ RB_ROTATE_RIGHT(head, parent, tmp, field);\ tmp = RB_LEFT(parent, field); \ } \ if (RB_ISRED(RB_LEFT(tmp, field), field)) \ RB_COLOR(RB_LEFT(tmp, field), field) = RB_BLACK; \ else if (RB_ISRED(RB_RIGHT(tmp, field), field)) { \ struct type *oright; \ RB_ROTATE_LEFT(head, tmp, oright, field); \ RB_COLOR(oright, field) = RB_BLACK; \ tmp = oright; \ } else if (!RB_ISRED(RB_LEFT(tmp, field), field)) { \ RB_COLOR(tmp, field) = RB_RED; \ elm = parent; \ parent = RB_PARENT(elm, field); \ continue; \ } \ RB_COLOR(tmp, field) = RB_COLOR(parent, field); \ RB_COLOR(parent, field) = RB_BLACK; \ RB_ROTATE_RIGHT(head, parent, tmp, field); \ elm = RB_ROOT(head); \ break; \ } \ } while (!RB_ISRED(elm, field) && parent != NULL); \ RB_COLOR(elm, field) = RB_BLACK; \ } #define RB_GENERATE_REMOVE(name, type, field, attr) \ attr struct type * \ name##_RB_REMOVE(struct name *head, struct type *elm) \ { \ struct type *child, *old, *parent, *right; \ int color; \ \ old = elm; \ parent = RB_PARENT(elm, field); \ right = RB_RIGHT(elm, field); \ color = RB_COLOR(elm, field); \ if (RB_LEFT(elm, field) == NULL) \ elm = child = right; \ else if (right == NULL) \ elm = child = RB_LEFT(elm, field); \ else { \ if ((child = RB_LEFT(right, field)) == NULL) { \ child = RB_RIGHT(right, field); \ RB_RIGHT(old, field) = child; \ parent = elm = right; \ } else { \ do \ elm = child; \ while ((child = RB_LEFT(elm, field)) != NULL); \ child = RB_RIGHT(elm, field); \ parent = RB_PARENT(elm, field); \ RB_LEFT(parent, field) = child; \ RB_SET_PARENT(RB_RIGHT(old, field), elm, field); \ } \ RB_SET_PARENT(RB_LEFT(old, field), elm, field); \ color = RB_COLOR(elm, field); \ elm->field = old->field; \ } \ RB_SWAP_CHILD(head, old, elm, field); \ if (child != NULL) { \ RB_SET_PARENT(child, parent, field); \ RB_COLOR(child, field) = RB_BLACK; \ } else if (color != RB_RED && parent != NULL) \ name##_RB_REMOVE_COLOR(head, parent); \ while (parent != NULL) { \ RB_AUGMENT(parent); \ parent = RB_PARENT(parent, field); \ } \ return (old); \ } #define RB_GENERATE_INSERT(name, type, field, cmp, attr) \ /* Inserts a node into the RB tree */ \ attr struct type * \ name##_RB_INSERT(struct name *head, struct type *elm) \ { \ struct type *tmp; \ struct type *parent = NULL; \ int comp = 0; \ tmp = RB_ROOT(head); \ while (tmp) { \ parent = tmp; \ comp = (cmp)(elm, parent); \ if (comp < 0) \ tmp = RB_LEFT(tmp, field); \ else if (comp > 0) \ tmp = RB_RIGHT(tmp, field); \ else \ return (tmp); \ } \ RB_SET(elm, parent, field); \ if (parent != NULL) { \ if (comp < 0) \ RB_LEFT(parent, field) = elm; \ else \ RB_RIGHT(parent, field) = elm; \ } else \ RB_ROOT(head) = elm; \ name##_RB_INSERT_COLOR(head, elm); \ while (elm != NULL) { \ RB_AUGMENT(elm); \ elm = RB_PARENT(elm, field); \ } \ return (NULL); \ } #define RB_GENERATE_FIND(name, type, field, cmp, attr) \ /* Finds the node with the same key as elm */ \ attr struct type * \ name##_RB_FIND(struct name *head, struct type *elm) \ { \ struct type *tmp = RB_ROOT(head); \ int comp; \ while (tmp) { \ comp = cmp(elm, tmp); \ if (comp < 0) \ tmp = RB_LEFT(tmp, field); \ else if (comp > 0) \ tmp = RB_RIGHT(tmp, field); \ else \ return (tmp); \ } \ return (NULL); \ } #define RB_GENERATE_NFIND(name, type, field, cmp, attr) \ /* Finds the first node greater than or equal to the search key */ \ attr struct type * \ name##_RB_NFIND(struct name *head, struct type *elm) \ { \ struct type *tmp = RB_ROOT(head); \ struct type *res = NULL; \ int comp; \ while (tmp) { \ comp = cmp(elm, tmp); \ if (comp < 0) { \ res = tmp; \ tmp = RB_LEFT(tmp, field); \ } \ else if (comp > 0) \ tmp = RB_RIGHT(tmp, field); \ else \ return (tmp); \ } \ return (res); \ } #define RB_GENERATE_NEXT(name, type, field, attr) \ /* ARGSUSED */ \ attr struct type * \ name##_RB_NEXT(struct type *elm) \ { \ if (RB_RIGHT(elm, field)) { \ elm = RB_RIGHT(elm, field); \ while (RB_LEFT(elm, field)) \ elm = RB_LEFT(elm, field); \ } else { \ if (RB_PARENT(elm, field) && \ (elm == RB_LEFT(RB_PARENT(elm, field), field))) \ elm = RB_PARENT(elm, field); \ else { \ while (RB_PARENT(elm, field) && \ (elm == RB_RIGHT(RB_PARENT(elm, field), field)))\ elm = RB_PARENT(elm, field); \ elm = RB_PARENT(elm, field); \ } \ } \ return (elm); \ } #define RB_GENERATE_PREV(name, type, field, attr) \ /* ARGSUSED */ \ attr struct type * \ name##_RB_PREV(struct type *elm) \ { \ if (RB_LEFT(elm, field)) { \ elm = RB_LEFT(elm, field); \ while (RB_RIGHT(elm, field)) \ elm = RB_RIGHT(elm, field); \ } else { \ if (RB_PARENT(elm, field) && \ (elm == RB_RIGHT(RB_PARENT(elm, field), field))) \ elm = RB_PARENT(elm, field); \ else { \ while (RB_PARENT(elm, field) && \ (elm == RB_LEFT(RB_PARENT(elm, field), field)))\ elm = RB_PARENT(elm, field); \ elm = RB_PARENT(elm, field); \ } \ } \ return (elm); \ } #define RB_GENERATE_MINMAX(name, type, field, attr) \ attr struct type * \ name##_RB_MINMAX(struct name *head, int val) \ { \ struct type *tmp = RB_ROOT(head); \ struct type *parent = NULL; \ while (tmp) { \ parent = tmp; \ if (val < 0) \ tmp = RB_LEFT(tmp, field); \ else \ tmp = RB_RIGHT(tmp, field); \ } \ return (parent); \ } #define RB_GENERATE_REINSERT(name, type, field, cmp, attr) \ attr struct type * \ name##_RB_REINSERT(struct name *head, struct type *elm) \ { \ struct type *cmpelm; \ if (((cmpelm = RB_PREV(name, head, elm)) != NULL && \ cmp(cmpelm, elm) >= 0) || \ ((cmpelm = RB_NEXT(name, head, elm)) != NULL && \ cmp(elm, cmpelm) >= 0)) { \ /* XXXLAS: Remove/insert is heavy handed. */ \ RB_REMOVE(name, head, elm); \ return (RB_INSERT(name, head, elm)); \ } \ return (NULL); \ } \ #define RB_NEGINF -1 #define RB_INF 1 #define RB_INSERT(name, x, y) name##_RB_INSERT(x, y) #define RB_REMOVE(name, x, y) name##_RB_REMOVE(x, y) #define RB_FIND(name, x, y) name##_RB_FIND(x, y) #define RB_NFIND(name, x, y) name##_RB_NFIND(x, y) #define RB_NEXT(name, x, y) name##_RB_NEXT(y) #define RB_PREV(name, x, y) name##_RB_PREV(y) #define RB_MIN(name, x) name##_RB_MINMAX(x, RB_NEGINF) #define RB_MAX(name, x) name##_RB_MINMAX(x, RB_INF) #define RB_REINSERT(name, x, y) name##_RB_REINSERT(x, y) #define RB_FOREACH(x, name, head) \ for ((x) = RB_MIN(name, head); \ (x) != NULL; \ (x) = name##_RB_NEXT(x)) #define RB_FOREACH_FROM(x, name, y) \ for ((x) = (y); \ ((x) != NULL) && ((y) = name##_RB_NEXT(x), (x) != NULL); \ (x) = (y)) #define RB_FOREACH_SAFE(x, name, head, y) \ for ((x) = RB_MIN(name, head); \ ((x) != NULL) && ((y) = name##_RB_NEXT(x), (x) != NULL); \ (x) = (y)) #define RB_FOREACH_REVERSE(x, name, head) \ for ((x) = RB_MAX(name, head); \ (x) != NULL; \ (x) = name##_RB_PREV(x)) #define RB_FOREACH_REVERSE_FROM(x, name, y) \ for ((x) = (y); \ ((x) != NULL) && ((y) = name##_RB_PREV(x), (x) != NULL); \ (x) = (y)) #define RB_FOREACH_REVERSE_SAFE(x, name, head, y) \ for ((x) = RB_MAX(name, head); \ ((x) != NULL) && ((y) = name##_RB_PREV(x), (x) != NULL); \ (x) = (y)) #endif /* _SYS_TREE_H_ */ picolibc-1.7.4/newlib/libc/include/sys/types.h000066400000000000000000000155161414576234500213010ustar00rootroot00000000000000/* Copyright (c) 1982, 1986, 1993 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* unified sys/types.h: start with sef's sysvi386 version. merge go32 version -- a few ifdefs. h8300hms, h8300xray, and sysvnecv70 disagree on the following types: typedef int gid_t; typedef int uid_t; typedef int dev_t; typedef int ino_t; typedef int mode_t; typedef int caddr_t; however, these aren't "reasonable" values, the sysvi386 ones make far more sense, and should work sufficiently well (in particular, h8300 doesn't have a stat, and the necv70 doesn't matter.) -- eichin */ #ifndef _SYS_TYPES_H #include <_ansi.h> #include #include /* BSD types permitted by POSIX and always exposed as in Glibc. Only provided for backward compatibility with BSD code. The uintN_t standard types should be preferred in new code. */ #if ___int8_t_defined typedef __uint8_t u_int8_t; #endif #if ___int16_t_defined typedef __uint16_t u_int16_t; #endif #if ___int32_t_defined typedef __uint32_t u_int32_t; #endif #if ___int64_t_defined typedef __uint64_t u_int64_t; #endif typedef __intptr_t register_t; #define __BIT_TYPES_DEFINED__ 1 #ifndef __need_inttypes #define _SYS_TYPES_H #include #include #if __BSD_VISIBLE #include # define physadr physadr_t # define quad quad_t #ifndef _IN_ADDR_T_DECLARED typedef __uint32_t in_addr_t; /* base type for internet address */ #define _IN_ADDR_T_DECLARED #endif #ifndef _IN_PORT_T_DECLARED typedef __uint16_t in_port_t; #define _IN_PORT_T_DECLARED #endif typedef __uintptr_t u_register_t; #endif /* __BSD_VISIBLE */ #if __MISC_VISIBLE #ifndef _BSDTYPES_DEFINED /* also defined in mingw/gmon.h and in w32api/winsock[2].h */ #ifndef __u_char_defined typedef unsigned char u_char; #define __u_char_defined #endif #ifndef __u_short_defined typedef unsigned short u_short; #define __u_short_defined #endif #ifndef __u_int_defined typedef unsigned int u_int; #define __u_int_defined #endif #ifndef __u_long_defined typedef unsigned long u_long; #define __u_long_defined #endif #define _BSDTYPES_DEFINED #endif #endif /* __MISC_VISIBLE */ #if __MISC_VISIBLE typedef unsigned short ushort; /* System V compatibility */ typedef unsigned int uint; /* System V compatibility */ typedef unsigned long ulong; /* System V compatibility */ #endif #ifndef _BLKCNT_T_DECLARED typedef __blkcnt_t blkcnt_t; #define _BLKCNT_T_DECLARED #endif #ifndef _BLKSIZE_T_DECLARED typedef __blksize_t blksize_t; #define _BLKSIZE_T_DECLARED #endif #if !defined(__clock_t_defined) && !defined(_CLOCK_T_DECLARED) typedef _CLOCK_T_ clock_t; #define __clock_t_defined #define _CLOCK_T_DECLARED #endif #if !defined(__time_t_defined) && !defined(_TIME_T_DECLARED) typedef _TIME_T_ time_t; #define __time_t_defined #define _TIME_T_DECLARED #endif #ifndef __daddr_t_defined typedef long daddr_t; #define __daddr_t_defined #endif #ifndef __caddr_t_defined typedef char * caddr_t; #define __caddr_t_defined #endif #ifndef _FSBLKCNT_T_DECLARED /* for statvfs() */ typedef __fsblkcnt_t fsblkcnt_t; typedef __fsfilcnt_t fsfilcnt_t; #define _FSBLKCNT_T_DECLARED #endif #ifndef _ID_T_DECLARED typedef __id_t id_t; /* can hold a uid_t or pid_t */ #define _ID_T_DECLARED #endif #ifndef _INO_T_DECLARED typedef __ino_t ino_t; /* inode number */ #define _INO_T_DECLARED #endif #if defined(__i386__) && (defined(GO32) || defined(__MSDOS__)) typedef char * addr_t; typedef unsigned long vm_offset_t; typedef unsigned long vm_size_t; #endif /* __i386__ && (GO32 || __MSDOS__) */ /* * All these should be machine specific - right now they are all broken. * However, for all of Cygnus' embedded targets, we want them to all be * the same. Otherwise things like sizeof (struct stat) might depend on * how the file was compiled (e.g. -mint16 vs -mint32, etc.). */ #ifndef _OFF_T_DECLARED typedef __off_t off_t; /* file offset */ #define _OFF_T_DECLARED #endif #ifndef _DEV_T_DECLARED typedef __dev_t dev_t; /* device number or struct cdev */ #define _DEV_T_DECLARED #endif #ifndef _UID_T_DECLARED typedef __uid_t uid_t; /* user id */ #define _UID_T_DECLARED #endif #ifndef _GID_T_DECLARED typedef __gid_t gid_t; /* group id */ #define _GID_T_DECLARED #endif #ifndef _PID_T_DECLARED typedef __pid_t pid_t; /* process id */ #define _PID_T_DECLARED #endif #ifndef _KEY_T_DECLARED typedef __key_t key_t; /* IPC key */ #define _KEY_T_DECLARED #endif #ifndef _SSIZE_T_DECLARED typedef _ssize_t ssize_t; #define _SSIZE_T_DECLARED #endif #ifndef _MODE_T_DECLARED typedef __mode_t mode_t; /* permissions */ #define _MODE_T_DECLARED #endif #ifndef _NLINK_T_DECLARED typedef __nlink_t nlink_t; /* link count */ #define _NLINK_T_DECLARED #endif #if !defined(__clockid_t_defined) && !defined(_CLOCKID_T_DECLARED) typedef __clockid_t clockid_t; #define __clockid_t_defined #define _CLOCKID_T_DECLARED #endif #if !defined(__timer_t_defined) && !defined(_TIMER_T_DECLARED) typedef __timer_t timer_t; #define __timer_t_defined #define _TIMER_T_DECLARED #endif #ifndef _USECONDS_T_DECLARED typedef __useconds_t useconds_t; /* microseconds (unsigned) */ #define _USECONDS_T_DECLARED #endif #ifndef _SUSECONDS_T_DECLARED typedef __suseconds_t suseconds_t; #define _SUSECONDS_T_DECLARED #endif typedef __int64_t sbintime_t; #include #include #endif /* !__need_inttypes */ #undef __need_inttypes #include #define __Long int32_t #define __ULong uint32_t #endif /* _SYS_TYPES_H */ picolibc-1.7.4/newlib/libc/include/sys/unistd.h000066400000000000000000000567111414576234500214450ustar00rootroot00000000000000/* Copyright (c) 1982, 1986, 1993 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _SYS_UNISTD_H #define _SYS_UNISTD_H #ifdef __cplusplus extern "C" { #endif #include <_ansi.h> #define __need_size_t #define __need_ptrdiff_t #include #include #include #include extern char **environ; void _exit (int __status) _ATTRIBUTE ((__noreturn__)); int access (const char *__path, int __amode); unsigned alarm (unsigned __secs); int chdir (const char *__path); int chmod (const char *__path, mode_t __mode); #if !defined(__INSIDE_CYGWIN__) int chown (const char *__path, uid_t __owner, gid_t __group); #endif #if __BSD_VISIBLE || (__XSI_VISIBLE >= 4 && __POSIX_VISIBLE < 200112) int chroot (const char *__path); #endif int close (int __fildes); #if __POSIX_VISIBLE >= 199209 size_t confstr (int __name, char *__buf, size_t __len); #endif #if __XSI_VISIBLE char * crypt (const char *__key, const char *__salt); #endif #if __XSI_VISIBLE && __XSI_VISIBLE < 700 char * ctermid (char *__s); #endif #if __XSI_VISIBLE && __XSI_VISIBLE < 600 char * cuserid (char *__s); #endif #if __BSD_VISIBLE || (__XSI_VISIBLE && __XSI_VISIBLE < 500) int daemon (int nochdir, int noclose); #endif int dup (int __fildes); int dup2 (int __fildes, int __fildes2); #if __GNU_VISIBLE int dup3 (int __fildes, int __fildes2, int flags); int eaccess (const char *__path, int __mode); #endif #if __XSI_VISIBLE void encrypt (char *, int); #endif #if __BSD_VISIBLE || (__XSI_VISIBLE && __XSI_VISIBLE < 500) void endusershell (void); #endif #if __GNU_VISIBLE int euidaccess (const char *__path, int __mode); #endif int execl (const char *__path, const char *, ...); int execle (const char *__path, const char *, ...); int execlp (const char *__file, const char *, ...); #if __MISC_VISIBLE int execlpe (const char *__file, const char *, ...); #endif int execv (const char *__path, char * const __argv[]); int execve (const char *__path, char * const __argv[], char * const __envp[]); int execvp (const char *__file, char * const __argv[]); #if __GNU_VISIBLE int execvpe (const char *__file, char * const __argv[], char * const __envp[]); #endif #if __ATFILE_VISIBLE int faccessat (int __dirfd, const char *__path, int __mode, int __flags); #endif #if __BSD_VISIBLE || __XSI_VISIBLE >= 4 || __POSIX_VISIBLE >= 200809 int fchdir (int __fildes); #endif #if __POSIX_VISIBLE >= 199309 int fchmod (int __fildes, mode_t __mode); #endif #if !defined(__INSIDE_CYGWIN__) #if __BSD_VISIBLE || __XSI_VISIBLE >= 4 || __POSIX_VISIBLE >= 200809 int fchown (int __fildes, uid_t __owner, gid_t __group); #endif #endif #if __ATFILE_VISIBLE int fchownat (int __dirfd, const char *__path, uid_t __owner, gid_t __group, int __flags); #endif #if __POSIX_VISIBLE >= 200809 int fexecve (int __fd, char * const __argv[], char * const __envp[]); #endif pid_t fork (void); long fpathconf (int __fd, int __name); int fsync (int __fd); #if __POSIX_VISIBLE >= 199309 int fdatasync (int __fd); #endif #if __GNU_VISIBLE char * get_current_dir_name (void); #endif char * getcwd (char *__buf, size_t __size); #if __BSD_VISIBLE || (__XSI_VISIBLE && __XSI_VISIBLE < 500) int getdomainname (char *__name, size_t __len); #endif #if __BSD_VISIBLE int getentropy (void *, size_t); #endif #if !defined(__INSIDE_CYGWIN__) gid_t getegid (void); uid_t geteuid (void); gid_t getgid (void); #endif int getgroups (int __gidsetsize, gid_t __grouplist[]); #if __BSD_VISIBLE || __XSI_VISIBLE >= 4 long gethostid (void); #endif char * getlogin (void); #if defined(_POSIX_THREAD_SAFE_FUNCTIONS) int getlogin_r (char *name, size_t namesize) ; #endif #if __BSD_VISIBLE || (__XSI_VISIBLE && __POSIX_VISIBLE < 200112) char * getpass (const char *__prompt); int getpagesize (void); #endif #if __BSD_VISIBLE int getpeereid (int, uid_t *, gid_t *); #endif #if __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE >= 4 pid_t getpgid (pid_t); #endif pid_t getpgrp (void); pid_t getpid (void); pid_t getppid (void); #if __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE >= 4 pid_t getsid (pid_t); #endif #if !defined(__INSIDE_CYGWIN__) uid_t getuid (void); #endif #if __BSD_VISIBLE || (__XSI_VISIBLE && __XSI_VISIBLE < 500) char * getusershell (void); #endif #if __BSD_VISIBLE || (__XSI_VISIBLE >= 4 && __POSIX_VISIBLE < 200809) char * getwd (char *__buf); #endif #if __BSD_VISIBLE int iruserok (unsigned long raddr, int superuser, const char *ruser, const char *luser); #endif int isatty (int __fildes); #if __BSD_VISIBLE int issetugid (void); #endif #if !defined(__INSIDE_CYGWIN__) #if __BSD_VISIBLE || __XSI_VISIBLE >= 4 || __POSIX_VISIBLE >= 200809 int lchown (const char *__path, uid_t __owner, gid_t __group); #endif #endif int link (const char *__path1, const char *__path2); #if __ATFILE_VISIBLE int linkat (int __dirfd1, const char *__path1, int __dirfd2, const char *__path2, int __flags); #endif #if __MISC_VISIBLE || __XSI_VISIBLE int nice (int __nice_value); #endif #if !defined(__INSIDE_CYGWIN__) off_t lseek (int __fildes, off_t __offset, int __whence); #endif #if __MISC_VISIBLE || __XSI_VISIBLE >= 4 #define F_ULOCK 0 #define F_LOCK 1 #define F_TLOCK 2 #define F_TEST 3 int lockf (int __fd, int __cmd, off_t __len); #endif long pathconf (const char *__path, int __name); int pause (void); #if __POSIX_VISIBLE >= 199506 int pthread_atfork (void (*)(void), void (*)(void), void (*)(void)); #endif int pipe (int __fildes[2]); #if __GNU_VISIBLE int pipe2 (int __fildes[2], int flags); #endif #if __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE >= 500 ssize_t pread (int __fd, void *__buf, size_t __nbytes, off_t __offset); ssize_t pwrite (int __fd, const void *__buf, size_t __nbytes, off_t __offset); #endif _READ_WRITE_RETURN_TYPE read (int __fd, void *__buf, size_t __nbyte); #if __BSD_VISIBLE int rresvport (int *__alport); int revoke (char *__path); #endif int rmdir (const char *__path); #if __BSD_VISIBLE int ruserok (const char *rhost, int superuser, const char *ruser, const char *luser); #endif #if __BSD_VISIBLE || (__XSI_VISIBLE >= 4 && __POSIX_VISIBLE < 200112) void * sbrk (ptrdiff_t __incr); #endif #if !defined(__INSIDE_CYGWIN__) #if __BSD_VISIBLE || __POSIX_VISIBLE >= 200112 int setegid (gid_t __gid); int seteuid (uid_t __uid); #endif int setgid (gid_t __gid); #endif #if __BSD_VISIBLE int setgroups (int ngroups, const gid_t *grouplist); #endif #if __BSD_VISIBLE || (__XSI_VISIBLE && __XSI_VISIBLE < 500) int sethostname (const char *, size_t); #endif int setpgid (pid_t __pid, pid_t __pgid); #if __SVID_VISIBLE || __XSI_VISIBLE >= 500 int setpgrp (void); #endif #if (__BSD_VISIBLE || __XSI_VISIBLE >= 4) && !defined(__INSIDE_CYGWIN__) int setregid (gid_t __rgid, gid_t __egid); int setreuid (uid_t __ruid, uid_t __euid); #endif pid_t setsid (void); #if !defined(__INSIDE_CYGWIN__) int setuid (uid_t __uid); #endif #if __BSD_VISIBLE || (__XSI_VISIBLE && __XSI_VISIBLE < 500) void setusershell (void); #endif unsigned sleep (unsigned int __seconds); #if __XSI_VISIBLE void swab (const void *__restrict, void *__restrict, ssize_t); #endif long sysconf (int __name); pid_t tcgetpgrp (int __fildes); int tcsetpgrp (int __fildes, pid_t __pgrp_id); char * ttyname (int __fildes); int ttyname_r (int, char *, size_t); int unlink (const char *__path); #if __XSI_VISIBLE >= 500 && __POSIX_VISIBLE < 200809 || __BSD_VISIBLE int usleep (useconds_t __useconds); #endif #if __BSD_VISIBLE int vhangup (void); #endif _READ_WRITE_RETURN_TYPE write (int __fd, const void *__buf, size_t __nbyte); #ifdef __CYGWIN__ # define __UNISTD_GETOPT__ # include # undef __UNISTD_GETOPT__ #else extern char *optarg; /* getopt(3) external variables */ extern int optind, opterr, optopt; int getopt(int, char * const [], const char *); extern int optreset; /* getopt(3) external variable */ #endif #if __BSD_VISIBLE || (__XSI_VISIBLE >= 4 && __POSIX_VISIBLE < 200809) pid_t vfork (void); #endif #ifdef _COMPILING_NEWLIB /* Provide prototypes for most of the _ names that are provided in newlib for some compilers. */ int close (int __fildes); pid_t fork (void); pid_t getpid (void); int isatty (int __fildes); int link (const char *__path1, const char *__path2); _off_t lseek (int __fildes, _off_t __offset, int __whence); #ifdef __LARGE64_FILES _off64_t lseek64 (int __filedes, _off64_t __offset, int __whence); #endif _READ_WRITE_RETURN_TYPE _read (int __fd, void *__buf, size_t __nbyte); void * sbrk (ptrdiff_t __incr); int unlink (const char *__path); _READ_WRITE_RETURN_TYPE _write (int __fd, const void *__buf, size_t __nbyte); int execve (const char *__path, char * const __argv[], char * const __envp[]); #endif #if !defined(__INSIDE_CYGWIN__) #if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE >= 500 int ftruncate (int __fd, off_t __length); #endif #if __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE >= 500 int truncate (const char *, off_t __length); #endif #endif #if __BSD_VISIBLE || __POSIX_VISIBLE < 200112 int getdtablesize (void); #endif #if __BSD_VISIBLE || __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE >= 500 useconds_t ualarm (useconds_t __useconds, useconds_t __interval); #endif #if __BSD_VISIBLE || __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE >= 500 #if !(defined (_WINSOCK_H) || defined (_WINSOCKAPI_) || defined (__USE_W32_SOCKETS)) /* winsock[2].h defines as __stdcall, and with int as 2nd arg */ int gethostname (char *__name, size_t __len); #endif #endif #if __MISC_VISIBLE int setdtablesize (int); #endif #if __BSD_VISIBLE || __XSI_VISIBLE >= 500 void sync (void); #endif #if __BSD_VISIBLE || __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE >= 4 ssize_t readlink (const char *__restrict __path, char *__restrict __buf, size_t __buflen); int symlink (const char *__name1, const char *__name2); #endif #if __ATFILE_VISIBLE ssize_t readlinkat (int __dirfd1, const char *__restrict __path, char *__restrict __buf, size_t __buflen); int symlinkat (const char *, int, const char *); int unlinkat (int, const char *, int); #endif #define F_OK 0 #define R_OK 4 #define W_OK 2 #define X_OK 1 # define SEEK_SET 0 # define SEEK_CUR 1 # define SEEK_END 2 #include #define STDIN_FILENO 0 /* standard input file descriptor */ #define STDOUT_FILENO 1 /* standard output file descriptor */ #define STDERR_FILENO 2 /* standard error file descriptor */ /* * sysconf values per IEEE Std 1003.1, 2008 Edition */ #define _SC_ARG_MAX 0 #define _SC_CHILD_MAX 1 #define _SC_CLK_TCK 2 #define _SC_NGROUPS_MAX 3 #define _SC_OPEN_MAX 4 #define _SC_JOB_CONTROL 5 #define _SC_SAVED_IDS 6 #define _SC_VERSION 7 #define _SC_PAGESIZE 8 #define _SC_PAGE_SIZE _SC_PAGESIZE /* These are non-POSIX values we accidentally introduced in 2000 without guarding them. Keeping them unguarded for backward compatibility. */ #define _SC_NPROCESSORS_CONF 9 #define _SC_NPROCESSORS_ONLN 10 #define _SC_PHYS_PAGES 11 #define _SC_AVPHYS_PAGES 12 /* End of non-POSIX values. */ #define _SC_MQ_OPEN_MAX 13 #define _SC_MQ_PRIO_MAX 14 #define _SC_RTSIG_MAX 15 #define _SC_SEM_NSEMS_MAX 16 #define _SC_SEM_VALUE_MAX 17 #define _SC_SIGQUEUE_MAX 18 #define _SC_TIMER_MAX 19 #define _SC_TZNAME_MAX 20 #define _SC_ASYNCHRONOUS_IO 21 #define _SC_FSYNC 22 #define _SC_MAPPED_FILES 23 #define _SC_MEMLOCK 24 #define _SC_MEMLOCK_RANGE 25 #define _SC_MEMORY_PROTECTION 26 #define _SC_MESSAGE_PASSING 27 #define _SC_PRIORITIZED_IO 28 #define _SC_REALTIME_SIGNALS 29 #define _SC_SEMAPHORES 30 #define _SC_SHARED_MEMORY_OBJECTS 31 #define _SC_SYNCHRONIZED_IO 32 #define _SC_TIMERS 33 #define _SC_AIO_LISTIO_MAX 34 #define _SC_AIO_MAX 35 #define _SC_AIO_PRIO_DELTA_MAX 36 #define _SC_DELAYTIMER_MAX 37 #define _SC_THREAD_KEYS_MAX 38 #define _SC_THREAD_STACK_MIN 39 #define _SC_THREAD_THREADS_MAX 40 #define _SC_TTY_NAME_MAX 41 #define _SC_THREADS 42 #define _SC_THREAD_ATTR_STACKADDR 43 #define _SC_THREAD_ATTR_STACKSIZE 44 #define _SC_THREAD_PRIORITY_SCHEDULING 45 #define _SC_THREAD_PRIO_INHERIT 46 /* _SC_THREAD_PRIO_PROTECT was _SC_THREAD_PRIO_CEILING in early drafts */ #define _SC_THREAD_PRIO_PROTECT 47 #define _SC_THREAD_PRIO_CEILING _SC_THREAD_PRIO_PROTECT #define _SC_THREAD_PROCESS_SHARED 48 #define _SC_THREAD_SAFE_FUNCTIONS 49 #define _SC_GETGR_R_SIZE_MAX 50 #define _SC_GETPW_R_SIZE_MAX 51 #define _SC_LOGIN_NAME_MAX 52 #define _SC_THREAD_DESTRUCTOR_ITERATIONS 53 #define _SC_ADVISORY_INFO 54 #define _SC_ATEXIT_MAX 55 #define _SC_BARRIERS 56 #define _SC_BC_BASE_MAX 57 #define _SC_BC_DIM_MAX 58 #define _SC_BC_SCALE_MAX 59 #define _SC_BC_STRING_MAX 60 #define _SC_CLOCK_SELECTION 61 #define _SC_COLL_WEIGHTS_MAX 62 #define _SC_CPUTIME 63 #define _SC_EXPR_NEST_MAX 64 #define _SC_HOST_NAME_MAX 65 #define _SC_IOV_MAX 66 #define _SC_IPV6 67 #define _SC_LINE_MAX 68 #define _SC_MONOTONIC_CLOCK 69 #define _SC_RAW_SOCKETS 70 #define _SC_READER_WRITER_LOCKS 71 #define _SC_REGEXP 72 #define _SC_RE_DUP_MAX 73 #define _SC_SHELL 74 #define _SC_SPAWN 75 #define _SC_SPIN_LOCKS 76 #define _SC_SPORADIC_SERVER 77 #define _SC_SS_REPL_MAX 78 #define _SC_SYMLOOP_MAX 79 #define _SC_THREAD_CPUTIME 80 #define _SC_THREAD_SPORADIC_SERVER 81 #define _SC_TIMEOUTS 82 #define _SC_TRACE 83 #define _SC_TRACE_EVENT_FILTER 84 #define _SC_TRACE_EVENT_NAME_MAX 85 #define _SC_TRACE_INHERIT 86 #define _SC_TRACE_LOG 87 #define _SC_TRACE_NAME_MAX 88 #define _SC_TRACE_SYS_MAX 89 #define _SC_TRACE_USER_EVENT_MAX 90 #define _SC_TYPED_MEMORY_OBJECTS 91 #define _SC_V7_ILP32_OFF32 92 #define _SC_V6_ILP32_OFF32 _SC_V7_ILP32_OFF32 #define _SC_XBS5_ILP32_OFF32 _SC_V7_ILP32_OFF32 #define _SC_V7_ILP32_OFFBIG 93 #define _SC_V6_ILP32_OFFBIG _SC_V7_ILP32_OFFBIG #define _SC_XBS5_ILP32_OFFBIG _SC_V7_ILP32_OFFBIG #define _SC_V7_LP64_OFF64 94 #define _SC_V6_LP64_OFF64 _SC_V7_LP64_OFF64 #define _SC_XBS5_LP64_OFF64 _SC_V7_LP64_OFF64 #define _SC_V7_LPBIG_OFFBIG 95 #define _SC_V6_LPBIG_OFFBIG _SC_V7_LPBIG_OFFBIG #define _SC_XBS5_LPBIG_OFFBIG _SC_V7_LPBIG_OFFBIG #define _SC_XOPEN_CRYPT 96 #define _SC_XOPEN_ENH_I18N 97 #define _SC_XOPEN_LEGACY 98 #define _SC_XOPEN_REALTIME 99 #define _SC_STREAM_MAX 100 #define _SC_PRIORITY_SCHEDULING 101 #define _SC_XOPEN_REALTIME_THREADS 102 #define _SC_XOPEN_SHM 103 #define _SC_XOPEN_STREAMS 104 #define _SC_XOPEN_UNIX 105 #define _SC_XOPEN_VERSION 106 #define _SC_2_CHAR_TERM 107 #define _SC_2_C_BIND 108 #define _SC_2_C_DEV 109 #define _SC_2_FORT_DEV 110 #define _SC_2_FORT_RUN 111 #define _SC_2_LOCALEDEF 112 #define _SC_2_PBS 113 #define _SC_2_PBS_ACCOUNTING 114 #define _SC_2_PBS_CHECKPOINT 115 #define _SC_2_PBS_LOCATE 116 #define _SC_2_PBS_MESSAGE 117 #define _SC_2_PBS_TRACK 118 #define _SC_2_SW_DEV 119 #define _SC_2_UPE 120 #define _SC_2_VERSION 121 #define _SC_THREAD_ROBUST_PRIO_INHERIT 122 #define _SC_THREAD_ROBUST_PRIO_PROTECT 123 #define _SC_XOPEN_UUCP 124 #define _SC_LEVEL1_ICACHE_SIZE 125 #define _SC_LEVEL1_ICACHE_ASSOC 126 #define _SC_LEVEL1_ICACHE_LINESIZE 127 #define _SC_LEVEL1_DCACHE_SIZE 128 #define _SC_LEVEL1_DCACHE_ASSOC 129 #define _SC_LEVEL1_DCACHE_LINESIZE 130 #define _SC_LEVEL2_CACHE_SIZE 131 #define _SC_LEVEL2_CACHE_ASSOC 132 #define _SC_LEVEL2_CACHE_LINESIZE 133 #define _SC_LEVEL3_CACHE_SIZE 134 #define _SC_LEVEL3_CACHE_ASSOC 135 #define _SC_LEVEL3_CACHE_LINESIZE 136 #define _SC_LEVEL4_CACHE_SIZE 137 #define _SC_LEVEL4_CACHE_ASSOC 138 #define _SC_LEVEL4_CACHE_LINESIZE 139 #define _SC_POSIX_26_VERSION 140 /* * pathconf values per IEEE Std 1003.1, 2008 Edition */ #define _PC_LINK_MAX 0 #define _PC_MAX_CANON 1 #define _PC_MAX_INPUT 2 #define _PC_NAME_MAX 3 #define _PC_PATH_MAX 4 #define _PC_PIPE_BUF 5 #define _PC_CHOWN_RESTRICTED 6 #define _PC_NO_TRUNC 7 #define _PC_VDISABLE 8 #define _PC_ASYNC_IO 9 #define _PC_PRIO_IO 10 #define _PC_SYNC_IO 11 #define _PC_FILESIZEBITS 12 #define _PC_2_SYMLINKS 13 #define _PC_SYMLINK_MAX 14 #define _PC_ALLOC_SIZE_MIN 15 #define _PC_REC_INCR_XFER_SIZE 16 #define _PC_REC_MAX_XFER_SIZE 17 #define _PC_REC_MIN_XFER_SIZE 18 #define _PC_REC_XFER_ALIGN 19 #define _PC_TIMESTAMP_RESOLUTION 20 #ifdef __CYGWIN__ /* Ask for POSIX permission bits support. */ #define _PC_POSIX_PERMISSIONS 90 /* Ask for full POSIX permission support including uid/gid settings. */ #define _PC_POSIX_SECURITY 91 #define _PC_CASE_INSENSITIVE 92 #endif /* * confstr values per IEEE Std 1003.1, 2004 Edition */ /* Only defined on Cygwin and RTEMS for now. */ #if defined (__CYGWIN__) || defined(__rtems__) #define _CS_PATH 0 #define _CS_POSIX_V7_ILP32_OFF32_CFLAGS 1 #define _CS_POSIX_V6_ILP32_OFF32_CFLAGS _CS_POSIX_V7_ILP32_OFF32_CFLAGS #define _CS_XBS5_ILP32_OFF32_CFLAGS _CS_POSIX_V7_ILP32_OFF32_CFLAGS #define _CS_POSIX_V7_ILP32_OFF32_LDFLAGS 2 #define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS _CS_POSIX_V7_ILP32_OFF32_LDFLAGS #define _CS_XBS5_ILP32_OFF32_LDFLAGS _CS_POSIX_V7_ILP32_OFF32_LDFLAGS #define _CS_POSIX_V7_ILP32_OFF32_LIBS 3 #define _CS_POSIX_V6_ILP32_OFF32_LIBS _CS_POSIX_V7_ILP32_OFF32_LIBS #define _CS_XBS5_ILP32_OFF32_LIBS _CS_POSIX_V7_ILP32_OFF32_LIBS #define _CS_XBS5_ILP32_OFF32_LINTFLAGS 4 #define _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS 5 #define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS #define _CS_XBS5_ILP32_OFFBIG_CFLAGS _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS #define _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS 6 #define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS #define _CS_XBS5_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS #define _CS_POSIX_V7_ILP32_OFFBIG_LIBS 7 #define _CS_POSIX_V6_ILP32_OFFBIG_LIBS _CS_POSIX_V7_ILP32_OFFBIG_LIBS #define _CS_XBS5_ILP32_OFFBIG_LIBS _CS_POSIX_V7_ILP32_OFFBIG_LIBS #define _CS_XBS5_ILP32_OFFBIG_LINTFLAGS 8 #define _CS_POSIX_V7_LP64_OFF64_CFLAGS 9 #define _CS_POSIX_V6_LP64_OFF64_CFLAGS _CS_POSIX_V7_LP64_OFF64_CFLAGS #define _CS_XBS5_LP64_OFF64_CFLAGS _CS_POSIX_V7_LP64_OFF64_CFLAGS #define _CS_POSIX_V7_LP64_OFF64_LDFLAGS 10 #define _CS_POSIX_V6_LP64_OFF64_LDFLAGS _CS_POSIX_V7_LP64_OFF64_LDFLAGS #define _CS_XBS5_LP64_OFF64_LDFLAGS _CS_POSIX_V7_LP64_OFF64_LDFLAGS #define _CS_POSIX_V7_LP64_OFF64_LIBS 11 #define _CS_POSIX_V6_LP64_OFF64_LIBS _CS_POSIX_V7_LP64_OFF64_LIBS #define _CS_XBS5_LP64_OFF64_LIBS _CS_POSIX_V7_LP64_OFF64_LIBS #define _CS_XBS5_LP64_OFF64_LINTFLAGS 12 #define _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS 13 #define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS #define _CS_XBS5_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS #define _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS 14 #define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS #define _CS_XBS5_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS #define _CS_POSIX_V7_LPBIG_OFFBIG_LIBS 15 #define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS _CS_POSIX_V7_LPBIG_OFFBIG_LIBS #define _CS_XBS5_LPBIG_OFFBIG_LIBS _CS_POSIX_V7_LPBIG_OFFBIG_LIBS #define _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS 16 #define _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS 17 #define _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS #define _CS_XBS5_WIDTH_RESTRICTED_ENVS _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS #define _CS_POSIX_V7_THREADS_CFLAGS 18 #define _CS_POSIX_V7_THREADS_LDFLAGS 19 #define _CS_V7_ENV 20 #define _CS_V6_ENV _CS_V7_ENV #define _CS_LFS_CFLAGS 21 #define _CS_LFS_LDFLAGS 22 #define _CS_LFS_LIBS 23 #define _CS_LFS_LINTFLAGS 24 #endif #ifdef __cplusplus } #endif #if __SSP_FORTIFY_LEVEL > 0 #include #endif #endif /* _SYS_UNISTD_H */ picolibc-1.7.4/newlib/libc/include/sys/utime.h000066400000000000000000000035201414576234500212500ustar00rootroot00000000000000/* Copyright (c) 1982, 1986, 1993 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _SYS_UTIME_H #define _SYS_UTIME_H /* This is a dummy file, not customized for any particular system. If there is a utime.h in libc/sys/SYSDIR/sys, it will override this one. */ #ifdef __cplusplus extern "C" { #endif struct utimbuf { time_t actime; time_t modtime; }; #ifdef __cplusplus }; #endif #endif /* _SYS_UTIME_H */ picolibc-1.7.4/newlib/libc/include/sys/wait.h000066400000000000000000000047021414576234500210740ustar00rootroot00000000000000/* Copyright (c) 1982, 1986, 1993 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _SYS_WAIT_H #define _SYS_WAIT_H #ifdef __cplusplus extern "C" { #endif #include #define WNOHANG 1 #define WUNTRACED 2 /* A status looks like: <1 byte info> <1 byte code> == 0, child has exited, info is the exit value == 1..7e, child has exited, info is the signal number. == 7f, child has stopped, info was the signal number. == 80, there was a core dump. */ #define WIFEXITED(w) (((w) & 0xff) == 0) #define WIFSIGNALED(w) (((w) & 0x7f) > 0 && (((w) & 0x7f) < 0x7f)) #define WIFSTOPPED(w) (((w) & 0xff) == 0x7f) #define WEXITSTATUS(w) (((w) >> 8) & 0xff) #define WTERMSIG(w) ((w) & 0x7f) #define WSTOPSIG WEXITSTATUS pid_t wait (int *); pid_t waitpid (pid_t, int *, int); #ifdef _COMPILING_NEWLIB pid_t _wait (int *); #endif /* Provide prototypes for most of the _ names that are provided in newlib for some compilers. */ pid_t _wait (int *); #ifdef __cplusplus }; #endif #endif picolibc-1.7.4/newlib/libc/include/tar.h000066400000000000000000000026601414576234500201010ustar00rootroot00000000000000/* Copyright (c) 2007 Ralf Corsepius */ /* * tar.h */ #ifndef _TAR_H #define _TAR_H #include /* General definitions */ #define TMAGIC "ustar" /* ustar plus null byte. */ #define TMAGLEN 6 /* Length of the above. */ #define TVERSION "00" /* 00 without a null byte. */ #define TVERSLEN 2 /* Length of the above. */ /* Typeflag field definitions */ #define REGTYPE '0' /* Regular file. */ #define AREGTYPE '\0' /* Regular file. */ #define LNKTYPE '1' /* Link. */ #define SYMTYPE '2' /* Symbolic link. */ #define CHRTYPE '3' /* Character special. */ #define BLKTYPE '4' /* Block special. */ #define DIRTYPE '5' /* Directory. */ #define FIFOTYPE '6' /* FIFO special. */ #define CONTTYPE '7' /* Reserved. */ /* Mode field bit definitions (octal) */ #define TSUID 04000 /* Set UID on execution. */ #define TSGID 02000 /* Set GID on execution. */ #if __XSI_VISIBLE || __POSIX_VISIBLE < 200112 #define TSVTX 01000 /* On directories, restricted deletion flag. */ #endif #define TUREAD 00400 /* Read by owner. */ #define TUWRITE 00200 /* Write by owner. */ #define TUEXEC 00100 /* Execute/search by owner. */ #define TGREAD 00040 /* Read by group. */ #define TGWRITE 00020 /* Write by group. */ #define TGEXEC 00010 /* Execute/search by group. */ #define TOREAD 00004 /* Read by other. */ #define TOWRITE 00002 /* Write by other. */ #define TOEXEC 00001 /* Execute/search by other. */ #endif picolibc-1.7.4/newlib/libc/include/termios.h000066400000000000000000000035341414576234500207760ustar00rootroot00000000000000/* Copyright (c) 1991, 1993 The Regents of the University of California. All rights reserved. c) UNIX System Laboratories, Inc. All or some portions of this file are derived from material licensed to the University of California by American Telephone and Telegraph Co. or Unix System Laboratories, Inc. and are reproduced herein with the permission of UNIX System Laboratories, Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifdef __cplusplus extern "C" { #endif #include #ifdef __cplusplus } #endif picolibc-1.7.4/newlib/libc/include/threads.h000066400000000000000000000057401414576234500207470ustar00rootroot00000000000000/*- * Copyright (c) 2011 Ed Schouten * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifndef _THREADS_H_ #define _THREADS_H_ #include #include typedef void (*tss_dtor_t)(void *); typedef int (*thrd_start_t)(void *); enum { mtx_plain = 0x1, mtx_recursive = 0x2, mtx_timed = 0x4 }; enum { thrd_busy = 1, thrd_error = 2, thrd_nomem = 3, thrd_success = 4, thrd_timedout = 5 }; #if !defined(__cplusplus) || __cplusplus < 201103L #define thread_local _Thread_local #endif __BEGIN_DECLS void call_once(once_flag *, void (*)(void)); int cnd_broadcast(cnd_t *); void cnd_destroy(cnd_t *); int cnd_init(cnd_t *); int cnd_signal(cnd_t *); int cnd_timedwait(cnd_t *__restrict, mtx_t *__restrict __mtx, const struct timespec *__restrict) __requires_exclusive(*__mtx); int cnd_wait(cnd_t *, mtx_t *__mtx) __requires_exclusive(*__mtx); void mtx_destroy(mtx_t *__mtx) __requires_unlocked(*__mtx); int mtx_init(mtx_t *__mtx, int) __requires_unlocked(*__mtx); int mtx_lock(mtx_t *__mtx) __locks_exclusive(*__mtx); int mtx_timedlock(mtx_t *__restrict __mtx, const struct timespec *__restrict) __trylocks_exclusive(thrd_success, *__mtx); int mtx_trylock(mtx_t *__mtx) __trylocks_exclusive(thrd_success, *__mtx); int mtx_unlock(mtx_t *__mtx) __unlocks(*__mtx); int thrd_create(thrd_t *, thrd_start_t, void *); thrd_t thrd_current(void); int thrd_detach(thrd_t); int thrd_equal(thrd_t, thrd_t); _Noreturn void thrd_exit(int); int thrd_join(thrd_t, int *); int thrd_sleep(const struct timespec *, struct timespec *); void thrd_yield(void); int tss_create(tss_t *, tss_dtor_t); void tss_delete(tss_t); void * tss_get(tss_t); int tss_set(tss_t, void *); __END_DECLS #endif /* !_THREADS_H_ */ picolibc-1.7.4/newlib/libc/include/time.h000066400000000000000000000224751414576234500202570ustar00rootroot00000000000000/* Copyright (c) 1991, 1993 The Regents of the University of California. All rights reserved. c) UNIX System Laboratories, Inc. All or some portions of this file are derived from material licensed to the University of California by American Telephone and Telegraph Co. or Unix System Laboratories, Inc. and are reproduced herein with the permission of UNIX System Laboratories, Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * time.h * * Struct and function declarations for dealing with time. */ #ifndef _TIME_H_ #define _TIME_H_ #include "_ansi.h" #include #define __need_size_t #define __need_NULL #include /* Get _CLOCKS_PER_SEC_ */ #include #ifndef _CLOCKS_PER_SEC_ #ifdef CLK_TCK #define _CLOCKS_PER_SEC_ CLK_TCK #else #ifdef CLOCKS_PER_SEC #define _CLOCKS_PER_SEC_ CLOCKS_PER_SEC #else #define _CLOCKS_PER_SEC_ 1000 #endif #endif #endif #ifndef CLOCKS_PER_SEC #define CLOCKS_PER_SEC _CLOCKS_PER_SEC_ #endif #ifndef CLK_TCK #define CLK_TCK CLOCKS_PER_SEC #endif #include #include #if __POSIX_VISIBLE >= 200809 #include #endif _BEGIN_STD_C struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; #ifdef __TM_GMTOFF long __TM_GMTOFF; #endif #ifdef __TM_ZONE const char *__TM_ZONE; #endif }; clock_t clock (void); double difftime (time_t _time2, time_t _time1); time_t mktime (struct tm *_timeptr); #if __BSD_VISIBLE || __SVID_VISIBLE || __GNU_VISIBLE time_t timegm (struct tm *_timeptr); #endif time_t time (time_t *_timer); #ifndef _REENT_ONLY char *asctime (const struct tm *_tblock); char *ctime (const time_t *_time); struct tm *gmtime (const time_t *_timer); struct tm *localtime (const time_t *_timer); #endif size_t strftime (char *__restrict _s, size_t _maxsize, const char *__restrict _fmt, const struct tm *__restrict _t); #if __POSIX_VISIBLE >= 200809 extern size_t strftime_l (char *__restrict _s, size_t _maxsize, const char *__restrict _fmt, const struct tm *__restrict _t, locale_t _l); #endif char *asctime_r (const struct tm *__restrict, char *__restrict); char *ctime_r (const time_t *, char *); struct tm *gmtime_r (const time_t *__restrict, struct tm *__restrict); struct tm *localtime_r (const time_t *__restrict, struct tm *__restrict); _END_STD_C #ifdef __cplusplus extern "C" { #endif #if __XSI_VISIBLE char *strptime (const char *__restrict, const char *__restrict, struct tm *__restrict); #endif #if __GNU_VISIBLE char *strptime_l (const char *__restrict, const char *__restrict, struct tm *__restrict, locale_t); #endif #if __POSIX_VISIBLE void tzset (void); #endif /* getdate functions */ #ifdef HAVE_GETDATE #if __XSI_VISIBLE >= 4 #ifndef _REENT_ONLY extern NEWLIB_THREAD_LOCAL int getdate_err; struct tm * getdate (const char *); /* getdate_err is set to one of the following values to indicate the error. 1 the DATEMSK environment variable is null or undefined, 2 the template file cannot be opened for reading, 3 failed to get file status information, 4 the template file is not a regular file, 5 an error is encountered while reading the template file, 6 memory allication failed (not enough memory available), 7 there is no line in the template that matches the input, 8 invalid input specification */ #endif /* !_REENT_ONLY */ #endif /* __XSI_VISIBLE >= 4 */ #if __GNU_VISIBLE /* getdate_r returns the error code as above */ int getdate_r (const char *, struct tm *); #endif /* __GNU_VISIBLE */ #endif /* HAVE_GETDATE */ /* defines for the opengroup specifications Derived from Issue 1 of the SVID. */ #if __SVID_VISIBLE || __XSI_VISIBLE extern __IMPORT long _timezone; extern __IMPORT int _daylight; #endif #if __POSIX_VISIBLE extern __IMPORT char *_tzname[2]; /* POSIX defines the external tzname being defined in time.h */ #ifndef tzname #define tzname _tzname #endif #endif /* __POSIX_VISIBLE */ #ifdef __cplusplus } #endif #include #ifdef __CYGWIN__ #include #endif /*__CYGWIN__*/ #if defined(_POSIX_TIMERS) #include #ifdef __cplusplus extern "C" { #endif /* Clocks, P1003.1b-1993, p. 263 */ int clock_settime (clockid_t clock_id, const struct timespec *tp); int clock_gettime (clockid_t clock_id, struct timespec *tp); int clock_getres (clockid_t clock_id, struct timespec *res); /* Create a Per-Process Timer, P1003.1b-1993, p. 264 */ int timer_create (clockid_t clock_id, struct sigevent *__restrict evp, timer_t *__restrict timerid); /* Delete a Per_process Timer, P1003.1b-1993, p. 266 */ int timer_delete (timer_t timerid); /* Per-Process Timers, P1003.1b-1993, p. 267 */ int timer_settime (timer_t timerid, int flags, const struct itimerspec *__restrict value, struct itimerspec *__restrict ovalue); int timer_gettime (timer_t timerid, struct itimerspec *value); int timer_getoverrun (timer_t timerid); /* High Resolution Sleep, P1003.1b-1993, p. 269 */ int nanosleep (const struct timespec *rqtp, struct timespec *rmtp); #ifdef __cplusplus } #endif #endif /* _POSIX_TIMERS */ #if defined(_POSIX_CLOCK_SELECTION) #ifdef __cplusplus extern "C" { #endif int clock_nanosleep (clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); #ifdef __cplusplus } #endif #endif /* _POSIX_CLOCK_SELECTION */ #ifdef __cplusplus extern "C" { #endif /* CPU-time Clock Attributes, P1003.4b/D8, p. 54 */ /* values for the clock enable attribute */ #define CLOCK_ENABLED 1 /* clock is enabled, i.e. counting execution time */ #define CLOCK_DISABLED 0 /* clock is disabled */ /* values for the pthread cputime_clock_allowed attribute */ #define CLOCK_ALLOWED 1 /* If a thread is created with this value a */ /* CPU-time clock attached to that thread */ /* shall be accessible. */ #define CLOCK_DISALLOWED 0 /* If a thread is created with this value, the */ /* thread shall not have a CPU-time clock */ /* accessible. */ /* Flag indicating time is "absolute" with respect to the clock associated with a time. Value 4 is historic. */ #define TIMER_ABSTIME 4 /* Manifest Constants, P1003.1b-1993, p. 262 */ #if __GNU_VISIBLE #define CLOCK_REALTIME_COARSE ((clockid_t) 0) #endif #define CLOCK_REALTIME ((clockid_t) 1) /* Manifest Constants, P1003.4b/D8, p. 55 */ #if defined(_POSIX_CPUTIME) /* When used in a clock or timer function call, this is interpreted as the identifier of the CPU_time clock associated with the PROCESS making the function call. */ #define CLOCK_PROCESS_CPUTIME_ID ((clockid_t) 2) #endif #if defined(_POSIX_THREAD_CPUTIME) /* When used in a clock or timer function call, this is interpreted as the identifier of the CPU_time clock associated with the THREAD making the function call. */ #define CLOCK_THREAD_CPUTIME_ID ((clockid_t) 3) #endif #if defined(_POSIX_MONOTONIC_CLOCK) /* The identifier for the system-wide monotonic clock, which is defined * as a clock whose value cannot be set via clock_settime() and which * cannot have backward clock jumps. */ #define CLOCK_MONOTONIC ((clockid_t) 4) #endif #if __GNU_VISIBLE #define CLOCK_MONOTONIC_RAW ((clockid_t) 5) #define CLOCK_MONOTONIC_COARSE ((clockid_t) 6) #define CLOCK_BOOTTIME ((clockid_t) 7) #define CLOCK_REALTIME_ALARM ((clockid_t) 8) #define CLOCK_BOOTTIME_ALARM ((clockid_t) 9) #endif #if defined(_POSIX_CPUTIME) /* Accessing a Process CPU-time CLock, P1003.4b/D8, p. 55 */ int clock_getcpuclockid (pid_t pid, clockid_t *clock_id); #endif /* _POSIX_CPUTIME */ #if defined(_POSIX_CPUTIME) || defined(_POSIX_THREAD_CPUTIME) /* CPU-time Clock Attribute Access, P1003.4b/D8, p. 56 */ int clock_setenable_attr (clockid_t clock_id, int attr); int clock_getenable_attr (clockid_t clock_id, int *attr); #endif /* _POSIX_CPUTIME or _POSIX_THREAD_CPUTIME */ #ifdef __cplusplus } #endif #endif /* _TIME_H_ */ picolibc-1.7.4/newlib/libc/include/unctrl.h000066400000000000000000000036221414576234500206210ustar00rootroot00000000000000/* From curses.h. */ /* * Copyright (c) 1981, 1993 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifndef _UNCTRL_H_ #define _UNCTRL_H_ #include <_ansi.h> #define unctrl(c) __unctrl[(c) & 0xff] #define unctrllen(ch) __unctrllen[(ch) & 0xff] extern __IMPORT const char * const __unctrl[256]; /* Control strings. */ extern __IMPORT const char __unctrllen[256]; /* Control strings length. */ #endif /* _UNCTRL_H_ */ picolibc-1.7.4/newlib/libc/include/unistd.h000066400000000000000000000035311414576234500206170ustar00rootroot00000000000000/* Copyright (c) 1991, 1993 The Regents of the University of California. All rights reserved. c) UNIX System Laboratories, Inc. All or some portions of this file are derived from material licensed to the University of California by American Telephone and Telegraph Co. or Unix System Laboratories, Inc. and are reproduced herein with the permission of UNIX System Laboratories, Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _UNISTD_H_ #define _UNISTD_H_ # include #endif /* _UNISTD_H_ */ picolibc-1.7.4/newlib/libc/include/utime.h000066400000000000000000000036711414576234500204410ustar00rootroot00000000000000/* Copyright (c) 1991, 1993 The Regents of the University of California. All rights reserved. c) UNIX System Laboratories, Inc. All or some portions of this file are derived from material licensed to the University of California by American Telephone and Telegraph Co. or Unix System Laboratories, Inc. and are reproduced herein with the permission of UNIX System Laboratories, Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifdef __cplusplus extern "C" { #endif #include <_ansi.h> /* The utime function is defined in libc/sys//sys if it exists. */ #include #ifdef __cplusplus } #endif picolibc-1.7.4/newlib/libc/include/utmp.h000066400000000000000000000035321414576234500202770ustar00rootroot00000000000000/* Copyright (c) 1991, 1993 The Regents of the University of California. All rights reserved. c) UNIX System Laboratories, Inc. All or some portions of this file are derived from material licensed to the University of California by American Telephone and Telegraph Co. or Unix System Laboratories, Inc. and are reproduced herein with the permission of UNIX System Laboratories, Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifdef __cplusplus extern "C" { #endif #include #ifdef __cplusplus } #endif picolibc-1.7.4/newlib/libc/include/wchar.h000066400000000000000000000266711414576234500204270ustar00rootroot00000000000000/* Copyright (c) 2001 Alexey Zelkin All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _WCHAR_H_ #define _WCHAR_H_ #include <_ansi.h> #include #define __need_size_t #define __need_wchar_t #define __need_wint_t #define __need_NULL #include /* For _mbstate_t definition. */ #include #include /* For __STDC_ISO_10646__ */ #include #include #if __XSI_VISIBLE /* && __XSI_VISIBLE < 800 */ && !__GNU_VISIBLE #include #endif #ifndef WEOF # define WEOF ((wint_t)-1) #endif /* This must match definition in */ #ifndef WCHAR_MIN #ifdef __WCHAR_MIN__ #define WCHAR_MIN __WCHAR_MIN__ #elif defined(__WCHAR_UNSIGNED__) || (L'\0' - 1 > 0) #define WCHAR_MIN (0 + L'\0') #else #define WCHAR_MIN (-0x7fffffff - 1 + L'\0') #endif #endif /* This must match definition in */ #ifndef WCHAR_MAX #ifdef __WCHAR_MAX__ #define WCHAR_MAX __WCHAR_MAX__ #elif defined(__WCHAR_UNSIGNED__) || (L'\0' - 1 > 0) #define WCHAR_MAX (0xffffffffu + L'\0') #else #define WCHAR_MAX (0x7fffffff + L'\0') #endif #endif #if __POSIX_VISIBLE >= 200809 #include #endif _BEGIN_STD_C #if __POSIX_VISIBLE >= 200809 || _XSI_VISIBLE #if !defined(__FILE_defined) typedef __FILE FILE; # define __FILE_defined #endif #endif /* As required by POSIX.1-2008, declare tm as incomplete type. The actual definition is in time.h. */ struct tm; #ifndef _MBSTATE_T #define _MBSTATE_T typedef _mbstate_t mbstate_t; #endif /* _MBSTATE_T */ wint_t btowc (int); int wctob (wint_t); size_t mbrlen (const char *__restrict, size_t, mbstate_t *__restrict); size_t mbrtowc (wchar_t *__restrict, const char *__restrict, size_t, mbstate_t *__restrict); int mbsinit (const mbstate_t *); #if __POSIX_VISIBLE >= 200809 size_t mbsnrtowcs (wchar_t *__restrict, const char **__restrict, size_t, size_t, mbstate_t *__restrict); #endif size_t mbsrtowcs (wchar_t *__restrict, const char **__restrict, size_t, mbstate_t *__restrict); size_t wcrtomb (char *__restrict, wchar_t, mbstate_t *__restrict); #if __POSIX_VISIBLE >= 200809 size_t wcsnrtombs (char *__restrict, const wchar_t **__restrict, size_t, size_t, mbstate_t *__restrict); #endif size_t wcsrtombs (char *__restrict, const wchar_t **__restrict, size_t, mbstate_t *__restrict); #if __POSIX_VISIBLE >= 200809 int wcscasecmp (const wchar_t *, const wchar_t *); #endif wchar_t *wcscat (wchar_t *__restrict, const wchar_t *__restrict); wchar_t *wcschr (const wchar_t *, wchar_t); int wcscmp (const wchar_t *, const wchar_t *); int wcscoll (const wchar_t *, const wchar_t *); wchar_t *wcscpy (wchar_t *__restrict, const wchar_t *__restrict); #if __POSIX_VISIBLE >= 200809 wchar_t *wcpcpy (wchar_t *__restrict, const wchar_t *__restrict); wchar_t *wcsdup (const wchar_t *) __malloc_like __result_use_check; #endif size_t wcscspn (const wchar_t *, const wchar_t *); size_t wcsftime (wchar_t *__restrict, size_t, const wchar_t *__restrict, const struct tm *__restrict); #if __GNU_VISIBLE size_t wcsftime_l (wchar_t *__restrict, size_t, const wchar_t *__restrict, const struct tm *__restrict, locale_t); #endif size_t wcslcat (wchar_t *, const wchar_t *, size_t); size_t wcslcpy (wchar_t *, const wchar_t *, size_t); size_t wcslen (const wchar_t *); #if __POSIX_VISIBLE >= 200809 int wcsncasecmp (const wchar_t *, const wchar_t *, size_t); #endif wchar_t *wcsncat (wchar_t *__restrict, const wchar_t *__restrict, size_t); int wcsncmp (const wchar_t *, const wchar_t *, size_t); wchar_t *wcsncpy (wchar_t *__restrict, const wchar_t *__restrict, size_t); #if __POSIX_VISIBLE >= 200809 wchar_t *wcpncpy (wchar_t *__restrict, const wchar_t *__restrict, size_t); size_t wcsnlen (const wchar_t *, size_t); #endif wchar_t *wcspbrk (const wchar_t *, const wchar_t *); wchar_t *wcsrchr (const wchar_t *, wchar_t); size_t wcsspn (const wchar_t *, const wchar_t *); wchar_t *wcsstr (const wchar_t *__restrict, const wchar_t *__restrict); wchar_t *wcstok (wchar_t *__restrict, const wchar_t *__restrict, wchar_t **__restrict); double wcstod (const wchar_t *__restrict, wchar_t **__restrict); #if __ISO_C_VISIBLE >= 1999 float wcstof (const wchar_t *__restrict, wchar_t **__restrict); #endif #if __XSI_VISIBLE int wcswidth (const wchar_t *, size_t); #endif size_t wcsxfrm (wchar_t *__restrict, const wchar_t *__restrict, size_t); #if __POSIX_VISIBLE >= 200809 extern int wcscasecmp_l (const wchar_t *, const wchar_t *, locale_t); extern int wcsncasecmp_l (const wchar_t *, const wchar_t *, size_t, locale_t); extern int wcscoll_l (const wchar_t *, const wchar_t *, locale_t); extern size_t wcsxfrm_l (wchar_t *__restrict, const wchar_t *__restrict, size_t, locale_t); #endif #if __XSI_VISIBLE int wcwidth (const wchar_t); #endif wchar_t *wmemchr (const wchar_t *, wchar_t, size_t); int wmemcmp (const wchar_t *, const wchar_t *, size_t); wchar_t *wmemcpy (wchar_t *__restrict, const wchar_t *__restrict, size_t); wchar_t *wmemmove (wchar_t *, const wchar_t *, size_t); #if __GNU_VISIBLE wchar_t *wmempcpy (wchar_t *__restrict, const wchar_t *__restrict, size_t); #endif wchar_t *wmemset (wchar_t *, wchar_t, size_t); long wcstol (const wchar_t *__restrict, wchar_t **__restrict, int); #if __ISO_C_VISIBLE >= 1999 long long wcstoll (const wchar_t *__restrict, wchar_t **__restrict, int); #endif unsigned long wcstoul (const wchar_t *__restrict, wchar_t **__restrict, int); #if __ISO_C_VISIBLE >= 1999 unsigned long long wcstoull (const wchar_t *__restrict, wchar_t **__restrict, int); #endif #if __ISO_C_VISIBLE >= 1999 long double wcstold (const wchar_t *, wchar_t **); #endif #if __GNU_VISIBLE long wcstol_l (const wchar_t *__restrict, wchar_t **__restrict, int, locale_t); long long wcstoll_l (const wchar_t *__restrict, wchar_t **__restrict, int, locale_t); unsigned long wcstoul_l (const wchar_t *__restrict, wchar_t **__restrict, int, locale_t); unsigned long long wcstoull_l (const wchar_t *__restrict, wchar_t **__restrict, int, locale_t); double wcstod_l (const wchar_t *, wchar_t **, locale_t); float wcstof_l (const wchar_t *, wchar_t **, locale_t); long double wcstold_l (const wchar_t *, wchar_t **, locale_t); #endif wint_t fgetwc (__FILE *); wchar_t *fgetws (wchar_t *__restrict, int, __FILE *__restrict); wint_t fputwc (wchar_t, __FILE *); int fputws (const wchar_t *__restrict, __FILE *__restrict); #if __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE >= 500 int fwide (__FILE *, int); #endif wint_t getwc (__FILE *); wint_t getwchar (void); wint_t putwc (wchar_t, __FILE *); wint_t putwchar (wchar_t); wint_t ungetwc (wint_t wc, __FILE *); #ifndef TINY_STDIO struct _reent; wint_t _fgetwc_r (struct _reent *, __FILE *); wint_t _fgetwc_unlocked_r (struct _reent *, __FILE *); wchar_t *_fgetws_r (struct _reent *, wchar_t *, int, __FILE *); wchar_t *_fgetws_unlocked_r (struct _reent *, wchar_t *, int, __FILE *); wint_t _fputwc_r (struct _reent *, wchar_t, __FILE *); wint_t _fputwc_unlocked_r (struct _reent *, wchar_t, __FILE *); int _fputws_r (struct _reent *, const wchar_t *, __FILE *); int _fputws_unlocked_r (struct _reent *, const wchar_t *, __FILE *); int _fwide_r (struct _reent *, __FILE *, int); wint_t _getwc_r (struct _reent *, __FILE *); wint_t _getwc_unlocked_r (struct _reent *, __FILE *); wint_t _getwchar_r (struct _reent *); wint_t _getwchar_unlocked_r (struct _reent *); wint_t _putwc_r (struct _reent *, wchar_t, __FILE *); wint_t _putwc_unlocked_r (struct _reent *, wchar_t, __FILE *); wint_t _putwchar_r (struct _reent *, wchar_t); wint_t _putwchar_unlocked_r (struct _reent *, wchar_t); wint_t _ungetwc_r (struct _reent *, wint_t wc, __FILE *); int _fwprintf_r (struct _reent *, __FILE *, const wchar_t *, ...); int _swprintf_r (struct _reent *, wchar_t *, size_t, const wchar_t *, ...); int _vfwprintf_r (struct _reent *, __FILE *, const wchar_t *, va_list); int _vswprintf_r (struct _reent *, wchar_t *, size_t, const wchar_t *, va_list); int _vwprintf_r (struct _reent *, const wchar_t *, va_list); int _wprintf_r (struct _reent *, const wchar_t *, ...); int _fwscanf_r (struct _reent *, __FILE *, const wchar_t *, ...); int _swscanf_r (struct _reent *, const wchar_t *, const wchar_t *, ...); int _vfwscanf_r (struct _reent *, __FILE *, const wchar_t *, va_list); int _vswscanf_r (struct _reent *, const wchar_t *, const wchar_t *, va_list); int _vwscanf_r (struct _reent *, const wchar_t *, va_list); int _wscanf_r (struct _reent *, const wchar_t *, ...); __FILE *_open_wmemstream_r (struct _reent *, wchar_t **, size_t *); #endif #if __GNU_VISIBLE wint_t fgetwc_unlocked (__FILE *); wchar_t *fgetws_unlocked (wchar_t *__restrict, int, __FILE *__restrict); wint_t fputwc_unlocked (wchar_t, __FILE *); int fputws_unlocked (const wchar_t *__restrict, __FILE *__restrict); wint_t getwc_unlocked (__FILE *); wint_t getwchar_unlocked (void); wint_t putwc_unlocked (wchar_t, __FILE *); wint_t putwchar_unlocked (wchar_t); #endif #if __POSIX_VISIBLE >= 200809 __FILE *open_wmemstream (wchar_t **, size_t *); #endif #if __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE >= 500 int fwprintf (__FILE *__restrict, const wchar_t *__restrict, ...); int swprintf (wchar_t *__restrict, size_t, const wchar_t *__restrict, ...); int vfwprintf (__FILE *__restrict, const wchar_t *__restrict, va_list); int vswprintf (wchar_t *__restrict, size_t, const wchar_t *__restrict, va_list); int vwprintf (const wchar_t *__restrict, va_list); int wprintf (const wchar_t *__restrict, ...); #endif #if __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE >= 500 int fwscanf (__FILE *__restrict, const wchar_t *__restrict, ...); int swscanf (const wchar_t *__restrict, const wchar_t *__restrict, ...); int vfwscanf (__FILE *__restrict, const wchar_t *__restrict, va_list); int vswscanf (const wchar_t *__restrict, const wchar_t *__restrict, va_list); int vwscanf (const wchar_t *__restrict, va_list); int wscanf (const wchar_t *__restrict, ...); #endif #define getwc(fp) fgetwc(fp) #define putwc(wc,fp) fputwc((wc), (fp)) #define getwchar() fgetwc(stdin) #define putwchar(wc) fputwc((wc), stdout) #if __GNU_VISIBLE #define getwc_unlocked(fp) fgetwc_unlocked(fp) #define putwc_unlocked(wc,fp) fputwc_unlocked((wc), (fp)) #define getwchar_unlocked() fgetwc_unlocked(stdin) #define putwchar_unlocked(wc) fputwc_unlocked((wc), stdout) #endif _END_STD_C #if __SSP_FORTIFY_LEVEL > 0 #include #endif #endif /* _WCHAR_H_ */ picolibc-1.7.4/newlib/libc/include/wctype.h000066400000000000000000000034501414576234500206240ustar00rootroot00000000000000/* Copyright (c) 2002 Jeff Johnston */ #ifndef _WCTYPE_H_ #define _WCTYPE_H_ #include <_ansi.h> #include #define __need_wint_t #include #if __POSIX_VISIBLE >= 200809 #include #endif #ifndef WEOF # define WEOF ((wint_t)-1) #endif _BEGIN_STD_C #ifndef _WCTYPE_T #define _WCTYPE_T typedef int wctype_t; #endif #ifndef _WCTRANS_T #define _WCTRANS_T typedef int wctrans_t; #endif int iswalpha (wint_t); int iswalnum (wint_t); #if __ISO_C_VISIBLE >= 1999 int iswblank (wint_t); #endif int iswcntrl (wint_t); int iswctype (wint_t, wctype_t); int iswdigit (wint_t); int iswgraph (wint_t); int iswlower (wint_t); int iswprint (wint_t); int iswpunct (wint_t); int iswspace (wint_t); int iswupper (wint_t); int iswxdigit (wint_t); wint_t towctrans (wint_t, wctrans_t); wint_t towupper (wint_t); wint_t towlower (wint_t); wctrans_t wctrans (const char *); wctype_t wctype (const char *); #if __POSIX_VISIBLE >= 200809 extern int iswalpha_l (wint_t, locale_t); extern int iswalnum_l (wint_t, locale_t); extern int iswblank_l (wint_t, locale_t); extern int iswcntrl_l (wint_t, locale_t); extern int iswctype_l (wint_t, wctype_t, locale_t); extern int iswdigit_l (wint_t, locale_t); extern int iswgraph_l (wint_t, locale_t); extern int iswlower_l (wint_t, locale_t); extern int iswprint_l (wint_t, locale_t); extern int iswpunct_l (wint_t, locale_t); extern int iswspace_l (wint_t, locale_t); extern int iswupper_l (wint_t, locale_t); extern int iswxdigit_l (wint_t, locale_t); extern wint_t towctrans_l (wint_t, wctrans_t, locale_t); extern wint_t towupper_l (wint_t, locale_t); extern wint_t towlower_l (wint_t, locale_t); extern wctrans_t wctrans_l (const char *, locale_t); extern wctype_t wctype_l (const char *, locale_t); #endif _END_STD_C #endif /* _WCTYPE_H_ */ picolibc-1.7.4/newlib/libc/include/wordexp.h000066400000000000000000000027661414576234500210120ustar00rootroot00000000000000/* Copyright (C) 2002, 2010 by Red Hat, Incorporated. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #ifndef _WORDEXP_H_ #define _WORDEXP_H_ #include #ifdef __cplusplus extern "C" { #endif struct _wordexp_t { size_t we_wordc; /* Count of words matched by words. */ char **we_wordv; /* Pointer to list of expanded words. */ size_t we_offs; /* Slots to reserve at the beginning of we_wordv. */ }; typedef struct _wordexp_t wordexp_t; #define WRDE_DOOFFS 0x0001 /* Use we_offs. */ #define WRDE_APPEND 0x0002 /* Append to output from previous call. */ #define WRDE_NOCMD 0x0004 /* Don't perform command substitution. */ #define WRDE_REUSE 0x0008 /* pwordexp points to a wordexp_t struct returned from a previous successful call to wordexp. */ #define WRDE_SHOWERR 0x0010 /* Print error messages to stderr. */ #define WRDE_UNDEF 0x0020 /* Report attempt to expand undefined shell variable. */ enum { WRDE_SUCCESS, WRDE_NOSPACE, WRDE_BADCHAR, WRDE_BADVAL, WRDE_CMDSUB, WRDE_SYNTAX, WRDE_NOSYS }; /* Note: This implementation of wordexp requires a version of bash that supports the --wordexp and --protected arguments to be present on the system. It does not support the WRDE_UNDEF flag. */ int wordexp(const char *__restrict, wordexp_t *__restrict, int); void wordfree(wordexp_t *); #ifdef __cplusplus } #endif #endif /* _WORDEXP_H_ */ picolibc-1.7.4/newlib/libc/libc.in.xml000066400000000000000000000023171414576234500175560ustar00rootroot00000000000000 newlib picolibc-1.7.4/newlib/libc/locale/000077500000000000000000000000001414576234500167525ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/locale/duplocale.c000066400000000000000000000105031414576234500210650ustar00rootroot00000000000000/* Parts of this code are originally taken from FreeBSD. */ /* * Copyright (c) 1996 - 2002 FreeBSD Project * Copyright (c) 1991, 1993 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Paul Borman at Krystal Technologies. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* FUNCTION <>---duplicate a locale object INDEX duplocale INDEX _duplocale_r SYNOPSIS #include locale_t duplocale(locale_t <[locobj]>); locale_t _duplocale_r(void *<[reent]>, locale_t <[locobj]>); DESCRIPTION The <> function shall create a duplicate copy of the locale object referenced by the <[locobj]> argument. If the <[locobj]> argument is LC_GLOBAL_LOCALE, duplocale() shall create a new locale object containing a copy of the global locale determined by the setlocale() function. The behavior is undefined if the <[locobj]> argument is not a valid locale object handle. RETURNS Upon successful completion, the <> function shall return a handle for a new locale object. Otherwise <> shall return (locale_t) <<0>> and set errno to indicate the error. PORTABILITY <> is POSIX-1.2008. */ #define _DEFAULT_SOURCE #include #include #include "setlocale.h" struct __locale_t * duplocale (struct __locale_t *locobj) { struct __locale_t tmp_locale, *new_locale; int i; (void) locobj; (void) i; (void) new_locale; (void) tmp_locale; #ifndef _MB_CAPABLE return __get_C_locale (); #else /* _MB_CAPABLE */ /* LC_GLOBAL_LOCALE denotes the global locale. */ if (locobj == LC_GLOBAL_LOCALE) locobj = __get_global_locale (); /* The "C" locale is used statically, never copied. */ else if (locobj == __get_C_locale ()) return __get_C_locale (); /* Copy locale content. */ tmp_locale = *locobj; #ifdef __HAVE_LOCALE_INFO__ for (i = 1; i < _LC_LAST; ++i) if (locobj->lc_cat[i].buf) { /* If the object is not a "C" locale category, copy it. Just call __loadlocale. It knows what to do to replicate the category. */ tmp_locale.lc_cat[i].ptr = NULL; tmp_locale.lc_cat[i].buf = NULL; tmp_locale.categories[i][0] = '\0'; /* __loadlocale tests this! */ if (!__loadlocale (&tmp_locale, i, locobj->categories[i])) goto error; } #endif /* __HAVE_LOCALE_INFO__ */ /* Allocate new locale_t. */ new_locale = (struct __locale_t *) calloc (1, sizeof *new_locale); if (!new_locale) goto error; *new_locale = tmp_locale; return new_locale; error: /* An error occured while we had already (potentially) allocated memory. Free memory and return NULL. errno is supposed to be set already. */ #ifdef __HAVE_LOCALE_INFO__ while (--i > 0) if (tmp_locale.lc_cat[i].buf) { free ((void *) tmp_locale.lc_cat[i].ptr); free (tmp_locale.lc_cat[i].buf); } #endif /* __HAVE_LOCALE_INFO__ */ return NULL; #endif /* _MB_CAPABLE */ } picolibc-1.7.4/newlib/libc/locale/freelocale.c000066400000000000000000000055231414576234500212240ustar00rootroot00000000000000/* Copyright (c) 1996 - 2002 FreeBSD Project Copyright (c) 1991, 1993 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 4. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>---free resources allocated for a locale object INDEX freelocale INDEX _freelocale_r SYNOPSIS #include locale_t freelocale(locale_t <[locobj]>); locale_t _freelocale_r(void *<[reent]>, locale_t <[locobj]>); DESCRIPTION The <> function shall cause the resources allocated for a locale object returned by a call to the <> or <> functions to be released. The behavior is undefined if the <[locobj]> argument is the special locale object LC_GLOBAL_LOCALE or is not a valid locale object handle. Any use of a locale object that has been freed results in undefined behavior. RETURNS None. PORTABILITY <> is POSIX-1.2008. */ #define _DEFAULT_SOURCE #include #include #include "setlocale.h" void freelocale (struct __locale_t *locobj) { (void) locobj; /* Nothing to do on !_MB_CAPABLE targets. */ #ifdef _MB_CAPABLE /* Sanity check. The "C" locale is static, don't try to free it. */ if (!locobj || locobj == __get_C_locale () || locobj == LC_GLOBAL_LOCALE) return; #ifdef __HAVE_LOCALE_INFO__ for (int i = 1; i < _LC_LAST; ++i) if (locobj->lc_cat[i].buf) { free ((void *) locobj->lc_cat[i].ptr); free (locobj->lc_cat[i].buf); } #endif /* __HAVE_LOCALE_INFO__ */ free (locobj); #endif /* _MB_CAPABLE */ } picolibc-1.7.4/newlib/libc/locale/lctype.c000066400000000000000000000056201414576234500204210ustar00rootroot00000000000000/* * Copyright (c) 2010 Corinna Vinschen * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "setlocale.h" #define LCCTYPE_SIZE (sizeof(struct lc_ctype_T) / sizeof(char *)) static char numone[] = { '\1', '\0'}; const struct lc_ctype_T _C_ctype_locale = { "ASCII", /* codeset */ numone /* mb_cur_max */ #ifdef __HAVE_LOCALE_INFO_EXTENDED__ , { "0", "1", "2", "3", "4", /* outdigits */ "5", "6", "7", "8", "9" }, { L"0", L"1", L"2", L"3", L"4", /* woutdigits */ L"5", L"6", L"7", L"8", L"9" } #endif }; #ifdef __CYGWIN__ /* NULL locale indicates global locale (called from setlocale) */ int __ctype_load_locale (struct __locale_t *locale, const char *name, void *f_wctomb, const char *charset, int mb_cur_max) { int ret; struct lc_ctype_T ct; char *bufp = NULL; extern int __set_lc_ctype_from_win (const char *, const struct lc_ctype_T *, struct lc_ctype_T *, char **, void *, const char *, int); ret = __set_lc_ctype_from_win (name, &_C_ctype_locale, &ct, &bufp, f_wctomb, charset, mb_cur_max); /* ret == -1: error, ret == 0: C/POSIX, ret > 0: valid */ if (ret >= 0) { struct lc_ctype_T *ctp = NULL; if (ret > 0) { ctp = (struct lc_ctype_T *) calloc (1, sizeof *ctp); if (!ctp) { free (bufp); return -1; } *ctp = ct; } struct __lc_cats tmp = locale->lc_cat[LC_CTYPE]; locale->lc_cat[LC_CTYPE].ptr = ret == 0 ? &_C_ctype_locale : ctp; locale->lc_cat[LC_CTYPE].buf = bufp; /* If buf is not NULL, both pointers have been alloc'ed */ if (tmp.buf) { free ((void *) tmp.ptr); free (tmp.buf); } ret = 0; } return ret; } #endif picolibc-1.7.4/newlib/libc/locale/lmessages.c000066400000000000000000000057311414576234500211070ustar00rootroot00000000000000/* * Copyright (c) 2001 Alexey Zelkin * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include #include #include "setlocale.h" #define LCMESSAGES_SIZE_FULL (sizeof(struct lc_messages_T) / sizeof(char *)) #define LCMESSAGES_SIZE_MIN \ (offsetof(struct lc_messages_T, yesstr) / sizeof(char *)) const struct lc_messages_T _C_messages_locale = { "^[yY]" , /* yesexpr */ "^[nN]" , /* noexpr */ "yes" , /* yesstr */ "no" /* nostr */ #ifdef __HAVE_LOCALE_INFO_EXTENDED__ , "ASCII" , /* codeset */ L"^[yY]" , /* wyesexpr */ L"^[nN]" , /* wnoexpr */ L"yes" , /* wyesstr */ L"no" /* wnostr */ #endif }; #ifdef __CYGWIN__ int __messages_load_locale (struct __locale_t *locale, const char *name, void *f_wctomb, const char *charset) { int ret; struct lc_messages_T me; char *bufp = NULL; extern int __set_lc_messages_from_win (const char *, const struct lc_messages_T *, struct lc_messages_T *, char **, void *, const char *); ret = __set_lc_messages_from_win (name, &_C_messages_locale, &me, &bufp, f_wctomb, charset); /* ret == -1: error, ret == 0: C/POSIX, ret > 0: valid */ if (ret >= 0) { struct lc_messages_T *mep = NULL; if (ret > 0) { mep = (struct lc_messages_T *) calloc (1, sizeof *mep); if (!mep) { free (bufp); return -1; } *mep = me; } struct __lc_cats tmp = locale->lc_cat[LC_MESSAGES]; locale->lc_cat[LC_MESSAGES].ptr = ret == 0 ? &_C_messages_locale : mep; locale->lc_cat[LC_MESSAGES].buf = bufp; /* If buf is not NULL, both pointers have been alloc'ed */ if (tmp.buf) { free ((void *) tmp.ptr); free (tmp.buf); } ret = 0; } return ret; } #endif picolibc-1.7.4/newlib/libc/locale/lmonetary.c000066400000000000000000000073561414576234500211430ustar00rootroot00000000000000/* * Copyright (c) 2000, 2001 Alexey Zelkin * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include #include #include #include "setlocale.h" #define LCMONETARY_SIZE (sizeof(struct lc_monetary_T) / sizeof(char *)) static char empty[] = ""; static char numempty[] = { CHAR_MAX, '\0'}; #ifdef __HAVE_LOCALE_INFO_EXTENDED__ static wchar_t wempty[] = L""; #endif const struct lc_monetary_T _C_monetary_locale = { empty, /* int_curr_symbol */ empty, /* currency_symbol */ empty, /* mon_decimal_point */ empty, /* mon_thousands_sep */ numempty, /* mon_grouping */ empty, /* positive_sign */ empty, /* negative_sign */ numempty, /* int_frac_digits */ numempty, /* frac_digits */ numempty, /* p_cs_precedes */ numempty, /* p_sep_by_space */ numempty, /* n_cs_precedes */ numempty, /* n_sep_by_space */ numempty, /* p_sign_posn */ numempty /* n_sign_posn */ #ifdef __HAVE_LOCALE_INFO_EXTENDED__ , numempty, /* int_p_cs_precedes */ numempty, /* int_p_sep_by_space */ numempty, /* int_n_cs_precedes */ numempty, /* int_n_sep_by_space */ numempty, /* int_p_sign_posn */ numempty, /* int_n_sign_posn */ "ASCII", /* codeset */ wempty, /* wint_curr_symbol */ wempty, /* wcurrency_symbol */ wempty, /* wmon_decimal_point */ wempty, /* wmon_thousands_sep */ wempty, /* wpositive_sign */ wempty /* wnegative_sign */ #endif }; #ifdef __HAVE_LOCALE_INFO__ #ifdef __CYGWIN__ int __monetary_load_locale (struct __locale_t *locale, const char *name , void *f_wctomb, const char *charset) { int ret; struct lc_monetary_T mo; char *bufp = NULL; extern int __set_lc_monetary_from_win (const char *, const struct lc_monetary_T *, struct lc_monetary_T *, char **, void *, const char *); ret = __set_lc_monetary_from_win (name, &_C_monetary_locale, &mo, &bufp, f_wctomb, charset); /* ret == -1: error, ret == 0: C/POSIX, ret > 0: valid */ if (ret >= 0) { struct lc_monetary_T *mop = NULL; if (ret > 0) { mop = (struct lc_monetary_T *) calloc (1, sizeof *mop); if (!mop) { free (bufp); return -1; } *mop = mo; } struct __lc_cats tmp = locale->lc_cat[LC_MONETARY]; locale->lc_cat[LC_MONETARY].ptr = ret == 0 ? &_C_monetary_locale : mop; locale->lc_cat[LC_MONETARY].buf = bufp; /* If buf is not NULL, both pointers have been alloc'ed */ if (tmp.buf) { free ((void *) tmp.ptr); free (tmp.buf); } ret = 0; } return ret; } #endif #endif picolibc-1.7.4/newlib/libc/locale/lnumeric.c000066400000000000000000000055661414576234500207500ustar00rootroot00000000000000/* * Copyright (c) 2000, 2001 Alexey Zelkin * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "setlocale.h" #define LCNUMERIC_SIZE (sizeof(struct lc_numeric_T) / sizeof(char *)) static char numempty[] = { CHAR_MAX, '\0' }; const struct lc_numeric_T _C_numeric_locale = { ".", /* decimal_point */ "", /* thousands_sep */ numempty /* grouping */ #ifdef __HAVE_LOCALE_INFO_EXTENDED__ , "ASCII", /* codeset */ L".", /* wdecimal_point */ L"", /* wthousands_sep */ #endif }; #ifdef __HAVE_LOCALE_INFO__ #ifdef __CYGWIN__ int __numeric_load_locale (struct __locale_t *locale, const char *name , void *f_wctomb, const char *charset) { int ret= -1; struct lc_numeric_T nm; char *bufp = NULL; extern int __set_lc_numeric_from_win (const char *, const struct lc_numeric_T *, struct lc_numeric_T *, char **, void *, const char *); ret = __set_lc_numeric_from_win (name, &_C_numeric_locale, &nm, &bufp, f_wctomb, charset); /* ret == -1: error, ret == 0: C/POSIX, ret > 0: valid */ if (ret >= 0) { struct lc_numeric_T *nmp = NULL; if (ret > 0) { nmp = (struct lc_numeric_T *) calloc (1, sizeof *nmp); if (!nmp) { free (bufp); return -1; } *nmp = nm; } struct __lc_cats tmp = locale->lc_cat[LC_NUMERIC]; locale->lc_cat[LC_NUMERIC].ptr = ret == 0 ? &_C_numeric_locale : nmp; locale->lc_cat[LC_NUMERIC].buf = bufp; /* If buf is not NULL, both pointers have been alloc'ed */ if (tmp.buf) { free ((void *) tmp.ptr); free (tmp.buf); } ret = 0; } return ret; } #endif #endif picolibc-1.7.4/newlib/libc/locale/locale.c000066400000000000000000000667651414576234500204010ustar00rootroot00000000000000/* FUNCTION <>, <>---select or query locale INDEX setlocale INDEX localeconv SYNOPSIS #include char *setlocale(int <[category]>, const char *<[locale]>); lconv *localeconv(void); DESCRIPTION <> is the facility defined by ANSI C to condition the execution environment for international collating and formatting information; <> reports on the settings of the current locale. This is a minimal implementation, supporting only the required <<"POSIX">> and <<"C">> values for <[locale]>; strings representing other locales are not honored unless _MB_CAPABLE is defined. If _MB_CAPABLE is defined, POSIX locale strings are allowed, following the form language[_TERRITORY][.charset][@@modifier] <<"language">> is a two character string per ISO 639, or, if not available for a given language, a three character string per ISO 639-3. <<"TERRITORY">> is a country code per ISO 3166. For <<"charset">> and <<"modifier">> see below. Additionally to the POSIX specifier, the following extension is supported for backward compatibility with older implementations using newlib: <<"C-charset">>. Instead of <<"C-">>, you can also specify <<"C.">>. Both variations allow to specify language neutral locales while using other charsets than ASCII, for instance <<"C.UTF-8">>, which keeps all settings as in the C locale, but uses the UTF-8 charset. The following charsets are recognized: <<"UTF-8">>, <<"JIS">>, <<"EUCJP">>, <<"SJIS">>, <<"KOI8-R">>, <<"KOI8-U">>, <<"GEORGIAN-PS">>, <<"PT154">>, <<"TIS-620">>, <<"ISO-8859-x">> with 1 <= x <= 16, or <<"CPxxx">> with xxx in [437, 720, 737, 775, 850, 852, 855, 857, 858, 862, 866, 874, 932, 1125, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258]. Charsets are case insensitive. For instance, <<"EUCJP">> and <<"eucJP">> are equivalent. Charset names with dashes can also be written without dashes, as in <<"UTF8">>, <<"iso88591">> or <<"koi8r">>. <<"EUCJP">> and <<"EUCKR">> are also recognized with dash, <<"EUC-JP">> and <<"EUC-KR">>. Full support for all of the above charsets requires that newlib has been build with multibyte support and support for all ISO and Windows Codepage. Otherwise all singlebyte charsets are simply mapped to ASCII. Right now, only newlib for Cygwin is built with full charset support by default. Under Cygwin, this implementation additionally supports the charsets <<"GBK">>, <<"GB2312">>, <<"eucCN">>, <<"eucKR">>, and <<"Big5">>. Cygwin does not support <<"JIS">>. Cygwin additionally supports locales from the file /usr/share/locale/locale.alias. (<<"">> is also accepted; if given, the settings are read from the corresponding LC_* environment variables and $LANG according to POSIX rules.) This implementation also supports the modifiers <<"cjknarrow">> and <<"cjkwide">>, which affect how the functions <> and <> handle characters from the "CJK Ambiguous Width" category of characters described at http://www.unicode.org/reports/tr11/#Ambiguous. These characters have a width of 1 for singlebyte charsets and UTF-8, and a width of 2 for multibyte charsets other than UTF-8. Specifying <<"cjknarrow">> or <<"cjkwide">> forces a width of 1 or 2, respectively. This implementation also supports the modifier <<"cjksingle">> to enforce single-width character properties. If you use <> as the <[locale]> argument, <> returns a pointer to the string representing the current locale. The acceptable values for <[category]> are defined in `<>' as macros beginning with <<"LC_">>. <> returns a pointer to a structure (also defined in `<>') describing the locale-specific conventions currently in effect. RETURNS A successful call to <> returns a pointer to a string associated with the specified category for the new locale. The string returned by <> is such that a subsequent call using that string will restore that category (or all categories in case of LC_ALL), to that state. The application shall not modify the string returned which may be overwritten by a subsequent call to <>. On error, <> returns <>. <> returns a pointer to a structure of type <>, which describes the formatting and collating conventions in effect (in this implementation, always those of the C locale). PORTABILITY ANSI C requires <>, but the only locale required across all implementations is the C locale. NOTES There is no ISO-8859-12 codepage. It's also refused by this implementation. No supporting OS subroutines are required. */ /* Parts of this code are originally taken from FreeBSD. */ /* * Copyright (c) 1996 - 2002 FreeBSD Project * Copyright (c) 1991, 1993 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Paul Borman at Krystal Technologies. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _DEFAULT_SOURCE #include #include #include #include #include #include #include "setlocale.h" #include "../ctype/ctype_.h" #include "../stdlib/local.h" #ifdef __CYGWIN__ /* Has to be kept available as exported symbol for backward compatibility. Set it in setlocale, but otherwise ignore it. Applications compiled after 2010 don't use it anymore. */ int __EXPORT __mb_cur_max = 6; #endif NEWLIB_THREAD_LOCAL_LOCALE struct __locale_t *_locale = &__global_locale; char *_PathLocale = NULL; #ifdef _MB_CAPABLE /* * Category names for getenv() */ static char *categories[_LC_LAST] = { "LC_ALL", "LC_COLLATE", "LC_CTYPE", "LC_MONETARY", "LC_NUMERIC", "LC_TIME", "LC_MESSAGES", }; #endif /* _MB_CAPABLE */ /* * Default locale per POSIX. Can be overridden on a per-target base. */ #ifndef DEFAULT_LOCALE #define DEFAULT_LOCALE "C" #endif #ifdef _MB_CAPABLE /* * This variable can be changed by any outside mechanism. This allows, * for instance, to load the default locale from a file. */ char __default_locale[ENCODING_LEN + 1] = DEFAULT_LOCALE; const struct __locale_t __C_locale = { { "C", "C", "C", "C", "C", "C", "C", }, __ascii_wctomb, __ascii_mbtowc, 0, DEFAULT_CTYPE_PTR, { ".", "", "", "", "", "", "", "", "", "", CHAR_MAX, CHAR_MAX, CHAR_MAX, CHAR_MAX, CHAR_MAX, CHAR_MAX, CHAR_MAX, CHAR_MAX, CHAR_MAX, CHAR_MAX, CHAR_MAX, CHAR_MAX, CHAR_MAX, CHAR_MAX }, #ifndef __HAVE_LOCALE_INFO__ "\1", "ASCII", "ASCII", #else /* __HAVE_LOCALE_INFO__ */ { { NULL, NULL }, /* LC_ALL */ #ifdef __CYGWIN__ { &_C_collate_locale, NULL }, /* LC_COLLATE */ #else { NULL, NULL }, /* LC_COLLATE */ #endif { &_C_ctype_locale, NULL }, /* LC_CTYPE */ { &_C_monetary_locale, NULL }, /* LC_MONETARY */ { &_C_numeric_locale, NULL }, /* LC_NUMERIC */ { &_C_time_locale, NULL }, /* LC_TIME */ { &_C_messages_locale, NULL }, /* LC_MESSAGES */ }, #endif /* __HAVE_LOCALE_INFO__ */ }; #endif /* _MB_CAPABLE */ struct __locale_t __global_locale = { { "C", "C", DEFAULT_LOCALE, "C", "C", "C", "C", }, #ifdef __CYGWIN__ __utf8_wctomb, __utf8_mbtowc, #else __ascii_wctomb, __ascii_mbtowc, #endif 0, DEFAULT_CTYPE_PTR, { ".", "", "", "", "", "", "", "", "", "", CHAR_MAX, CHAR_MAX, CHAR_MAX, CHAR_MAX, CHAR_MAX, CHAR_MAX, CHAR_MAX, CHAR_MAX, CHAR_MAX, CHAR_MAX, CHAR_MAX, CHAR_MAX, CHAR_MAX, CHAR_MAX }, #ifndef __HAVE_LOCALE_INFO__ "\1", "ASCII", "ASCII", #else /* __HAVE_LOCALE_INFO__ */ { { NULL, NULL }, /* LC_ALL */ #ifdef __CYGWIN__ { &_C_collate_locale, NULL }, /* LC_COLLATE */ #else { NULL, NULL }, /* LC_COLLATE */ #endif { &_C_ctype_locale, NULL }, /* LC_CTYPE */ { &_C_monetary_locale, NULL }, /* LC_MONETARY */ { &_C_numeric_locale, NULL }, /* LC_NUMERIC */ { &_C_time_locale, NULL }, /* LC_TIME */ { &_C_messages_locale, NULL }, /* LC_MESSAGES */ }, #endif /* __HAVE_LOCALE_INFO__ */ }; #ifdef _MB_CAPABLE /* Renamed from current_locale_string to make clear this is only the *global* string for setlocale (LC_ALL, NULL). There's no equivalent functionality for uselocale. */ static char global_locale_string[_LC_LAST * (ENCODING_LEN + 1/*"/"*/ + 1)]; static char *currentlocale (void); #endif /* _MB_CAPABLE */ char * setlocale ( int category, const char *locale) { (void) category; #ifndef _MB_CAPABLE if (locale) { if (strcmp (locale, "POSIX") && strcmp (locale, "C") && strcmp (locale, "")) return NULL; } return "C"; #else /* _MB_CAPABLE */ static char new_categories[_LC_LAST][ENCODING_LEN + 1]; static char saved_categories[_LC_LAST][ENCODING_LEN + 1]; int i, j, len, saverr; const char *env, *r; if (category < LC_ALL || category >= _LC_LAST) { __errno_r(p) = EINVAL; return NULL; } if (locale == NULL) return category != LC_ALL ? __get_global_locale ()->categories[category] : currentlocale(); /* * Default to the current locale for everything. */ for (i = 1; i < _LC_LAST; ++i) strcpy (new_categories[i], __get_global_locale ()->categories[i]); /* * Now go fill up new_categories from the locale argument */ if (!*locale) { if (category == LC_ALL) { for (i = 1; i < _LC_LAST; ++i) { env = __get_locale_env (i); if (strlen (env) > ENCODING_LEN) { __errno_r(p) = EINVAL; return NULL; } strcpy (new_categories[i], env); } } else { env = __get_locale_env (category); if (strlen (env) > ENCODING_LEN) { __errno_r(p) = EINVAL; return NULL; } strcpy (new_categories[category], env); } } else if (category != LC_ALL) { if (strlen (locale) > ENCODING_LEN) { __errno_r(p) = EINVAL; return NULL; } strcpy (new_categories[category], locale); } else { if ((r = strchr (locale, '/')) == NULL) { if (strlen (locale) > ENCODING_LEN) { __errno_r(p) = EINVAL; return NULL; } for (i = 1; i < _LC_LAST; ++i) strcpy (new_categories[i], locale); } else { for (i = 1; r[1] == '/'; ++r) ; if (!r[1]) { __errno_r(p) = EINVAL; return NULL; /* Hmm, just slashes... */ } do { if (i == _LC_LAST) break; /* Too many slashes... */ if ((len = r - locale) > ENCODING_LEN) { __errno_r(p) = EINVAL; return NULL; } strlcpy (new_categories[i], locale, len + 1); i++; while (*r == '/') r++; locale = r; while (*r && *r != '/') r++; } while (*locale); while (i < _LC_LAST) { strcpy (new_categories[i], new_categories[i-1]); i++; } } } if (category != LC_ALL) return __loadlocale (__get_global_locale (), category, new_categories[category]); for (i = 1; i < _LC_LAST; ++i) { strcpy (saved_categories[i], __get_global_locale ()->categories[i]); if (__loadlocale (__get_global_locale (), i, new_categories[i]) == NULL) { saverr = __errno_r(p); for (j = 1; j < i; j++) { strcpy (new_categories[j], saved_categories[j]); if (__loadlocale (__get_global_locale (), j, new_categories[j]) == NULL) { strcpy (new_categories[j], "C"); __loadlocale (__get_global_locale (), j, new_categories[j]); } } __errno_r(p) = saverr; return NULL; } } return currentlocale (); #endif /* _MB_CAPABLE */ } #ifdef _MB_CAPABLE static char * currentlocale (void) { int i; strcpy (global_locale_string, __get_global_locale ()->categories[1]); for (i = 2; i < _LC_LAST; ++i) if (strcmp (__get_global_locale ()->categories[1], __get_global_locale ()->categories[i])) { for (i = 2; i < _LC_LAST; ++i) { (void)strcat(global_locale_string, "/"); (void)strcat(global_locale_string, __get_global_locale ()->categories[i]); } break; } return global_locale_string; } extern void __set_ctype (struct __locale_t *, const char *charset); char * __loadlocale (struct __locale_t *loc, int category, char *new_locale) { /* At this point a full-featured system would just load the locale specific data from the locale files. What we do here for now is to check the incoming string for correctness. The string must be in one of the allowed locale strings, either one in POSIX-style, or one in the old newlib style to maintain backward compatibility. If the local string is correct, the charset is extracted and stored in ctype_codeset or message_charset dependent on the cateogry. */ char *locale = NULL; char charset[ENCODING_LEN + 1]; long val = 0; char *end, *c = NULL; int mbc_max; wctomb_p l_wctomb; mbtowc_p l_mbtowc; int cjksingle = 0; int cjknarrow = 0; int cjkwide = 0; /* Avoid doing everything twice if nothing has changed. duplocale relies on this test to go wrong so the locale is actually duplicated when required. Any change here has to be synced with a matching change in duplocale. */ if (!strcmp (new_locale, loc->categories[category])) return loc->categories[category]; int ret = 0; #ifdef __CYGWIN__ /* This additional code handles the case that the incoming locale string is not valid. If so, it calls the function __set_locale_from_locale_alias, which is only available on Cygwin right now. The function reads the file /usr/share/locale/locale.alias. The file contains locale aliases and their replacement locale. For instance, the alias "french" is translated to "fr_FR.ISO-8859-1", the alias "thai" is translated to "th_TH.TIS-620". If successful, the function returns with a pointer to the second argument, which is a buffer in which the replacement locale gets stored. Otherwise the function returns NULL. */ char tmp_locale[ENCODING_LEN + 1]; restart: if (!locale) locale = new_locale; else if (locale != tmp_locale) { locale = __set_locale_from_locale_alias (locale, tmp_locale); if (!locale) return NULL; } # define FAIL goto restart #else locale = new_locale; # define FAIL return NULL #endif /* "POSIX" is translated to "C", as on Linux. */ if (!strcmp (locale, "POSIX")) strcpy (locale, "C"); if (!strcmp (locale, "C")) /* Default "C" locale */ strcpy (charset, "ASCII"); else if (locale[0] == 'C' && (locale[1] == '-' /* Old newlib style */ || locale[1] == '.')) /* Extension for the C locale to allow specifying different charsets while sticking to the C locale in terms of sort order, etc. Proposed in the Debian project. */ { char *chp; c = locale + 2; strcpy (charset, c); if ((chp = strchr (charset, '@'))) /* Strip off modifier */ *chp = '\0'; c += strlen (charset); } else /* POSIX style */ { c = locale; /* Don't use ctype macros here, they might be localized. */ /* Language */ if (c[0] < 'a' || c[0] > 'z' || c[1] < 'a' || c[1] > 'z') FAIL; c += 2; /* Allow three character Language per ISO 639-3 */ if (c[0] >= 'a' && c[0] <= 'z') ++c; if (c[0] == '_') { /* Territory */ ++c; if (c[0] < 'A' || c[0] > 'Z' || c[1] < 'A' || c[1] > 'Z') FAIL; c += 2; } if (c[0] == '.') { /* Charset */ char *chp; ++c; strcpy (charset, c); if ((chp = strchr (charset, '@'))) /* Strip off modifier */ *chp = '\0'; c += strlen (charset); } else if (c[0] == '\0' || c[0] == '@') /* End of string or just a modifier */ #ifdef __CYGWIN__ /* The Cygwin-only function __set_charset_from_locale checks for the default charset which is connected to the given locale. The function uses Windows functions in turn so it can't be easily adapted to other targets. However, if any other target provides equivalent functionality, preferrably using the same function name it would be sufficient to change the guarding #ifdef. */ __set_charset_from_locale (locale, charset); #else strcpy (charset, "ISO-8859-1"); #endif else /* Invalid string */ FAIL; } if (c && c[0] == '@') { /* Modifier "cjksingle" is recognized to enforce single-width mode. */ /* Modifiers "cjknarrow" or "cjkwide" are recognized to modify the behaviour of wcwidth() and wcswidth() for East Asian languages. For details see the comment at the end of this function. */ if (!strcmp (c + 1, "cjksingle")) cjksingle = 1; else if (!strcmp (c + 1, "cjknarrow")) cjknarrow = 1; else if (!strcmp (c + 1, "cjkwide")) cjkwide = 1; } /* We only support this subset of charsets. */ switch (charset[0]) { case 'U': case 'u': if (strcasecmp (charset, "UTF-8") && strcasecmp (charset, "UTF8")) FAIL; strcpy (charset, "UTF-8"); mbc_max = 6; l_wctomb = __utf8_wctomb; l_mbtowc = __utf8_mbtowc; break; #ifndef __CYGWIN__ /* Cygwin does not support JIS at all. */ case 'J': case 'j': if (strcasecmp (charset, "JIS")) FAIL; strcpy (charset, "JIS"); mbc_max = 8; l_wctomb = __jis_wctomb; l_mbtowc = __jis_mbtowc; break; #endif /* !__CYGWIN__ */ case 'E': case 'e': if (strncasecmp (charset, "EUC", 3)) FAIL; c = charset + 3; if (*c == '-') ++c; if (!strcasecmp (c, "JP")) { strcpy (charset, "EUCJP"); mbc_max = 3; l_wctomb = __eucjp_wctomb; l_mbtowc = __eucjp_mbtowc; } #ifdef __CYGWIN__ /* Newlib does neither provide EUC-KR nor EUC-CN, and Cygwin's implementation requires Windows support. */ else if (!strcasecmp (c, "KR")) { strcpy (charset, "EUCKR"); mbc_max = 2; l_wctomb = __kr_wctomb; l_mbtowc = __kr_mbtowc; } else if (!strcasecmp (c, "CN")) { strcpy (charset, "EUCCN"); mbc_max = 2; l_wctomb = __gbk_wctomb; l_mbtowc = __gbk_mbtowc; } #endif /* __CYGWIN__ */ else FAIL; break; case 'S': case 's': if (strcasecmp (charset, "SJIS")) FAIL; strcpy (charset, "SJIS"); mbc_max = 2; l_wctomb = __sjis_wctomb; l_mbtowc = __sjis_mbtowc; break; case 'I': case 'i': /* Must be exactly one of ISO-8859-1, [...] ISO-8859-16, except for ISO-8859-12. This code also recognizes the aliases without dashes. */ if (strncasecmp (charset, "ISO", 3)) FAIL; c = charset + 3; if (*c == '-') ++c; if (strncasecmp (c, "8859", 4)) FAIL; c += 4; if (*c == '-') ++c; val = strtol (c, &end, 10); if (val < 1 || val > 16 || val == 12 || *end) FAIL; strcpy (charset, "ISO-8859-"); c = charset + 9; if (val > 10) *c++ = '1'; *c++ = val % 10 + '0'; *c = '\0'; mbc_max = 1; #ifdef _MB_EXTENDED_CHARSETS_ISO l_wctomb = __iso_wctomb (val); l_mbtowc = __iso_mbtowc (val); #else /* !_MB_EXTENDED_CHARSETS_ISO */ l_wctomb = __ascii_wctomb; l_mbtowc = __ascii_mbtowc; #endif /* _MB_EXTENDED_CHARSETS_ISO */ break; case 'C': case 'c': if (charset[1] != 'P' && charset[1] != 'p') FAIL; memcpy (charset, "CP", 2); val = strtol (charset + 2, &end, 10); if (*end) FAIL; switch (val) { case 437: case 720: case 737: case 775: case 850: case 852: case 855: case 857: case 858: case 862: case 866: case 874: case 1125: case 1250: case 1251: case 1252: case 1253: case 1254: case 1255: case 1256: case 1257: case 1258: mbc_max = 1; #ifdef _MB_EXTENDED_CHARSETS_WINDOWS l_wctomb = __cp_wctomb (val); l_mbtowc = __cp_mbtowc (val); #else /* !_MB_EXTENDED_CHARSETS_WINDOWS */ l_wctomb = __ascii_wctomb; l_mbtowc = __ascii_mbtowc; #endif /* _MB_EXTENDED_CHARSETS_WINDOWS */ break; case 932: mbc_max = 2; l_wctomb = __sjis_wctomb; l_mbtowc = __sjis_mbtowc; break; default: FAIL; } break; case 'K': case 'k': /* KOI8-R, KOI8-U and the aliases without dash */ if (strncasecmp (charset, "KOI8", 4)) FAIL; c = charset + 4; if (*c == '-') ++c; if (*c == 'R' || *c == 'r') { val = 20866; strcpy (charset, "CP20866"); } else if (*c == 'U' || *c == 'u') { val = 21866; strcpy (charset, "CP21866"); } else FAIL; mbc_max = 1; #ifdef _MB_EXTENDED_CHARSETS_WINDOWS l_wctomb = __cp_wctomb (val); l_mbtowc = __cp_mbtowc (val); #else /* !_MB_EXTENDED_CHARSETS_WINDOWS */ l_wctomb = __ascii_wctomb; l_mbtowc = __ascii_mbtowc; #endif /* _MB_EXTENDED_CHARSETS_WINDOWS */ break; case 'A': case 'a': if (strcasecmp (charset, "ASCII")) FAIL; strcpy (charset, "ASCII"); mbc_max = 1; l_wctomb = __ascii_wctomb; l_mbtowc = __ascii_mbtowc; break; case 'G': case 'g': #ifdef __CYGWIN__ /* Newlib does not provide GBK/GB2312 and Cygwin's implementation requires Windows support. */ if (!strcasecmp (charset, "GBK") || !strcasecmp (charset, "GB2312")) { strcpy (charset, charset[2] == '2' ? "GB2312" : "GBK"); mbc_max = 2; l_wctomb = __gbk_wctomb; l_mbtowc = __gbk_mbtowc; } else #endif /* __CYGWIN__ */ /* GEORGIAN-PS and the alias without dash */ if (!strncasecmp (charset, "GEORGIAN", 8)) { c = charset + 8; if (*c == '-') ++c; if (strcasecmp (c, "PS")) FAIL; val = 101; strcpy (charset, "CP101"); mbc_max = 1; #ifdef _MB_EXTENDED_CHARSETS_WINDOWS l_wctomb = __cp_wctomb (val); l_mbtowc = __cp_mbtowc (val); #else /* !_MB_EXTENDED_CHARSETS_WINDOWS */ l_wctomb = __ascii_wctomb; l_mbtowc = __ascii_mbtowc; #endif /* _MB_EXTENDED_CHARSETS_WINDOWS */ } else FAIL; break; case 'P': case 'p': /* PT154 */ if (strcasecmp (charset, "PT154")) FAIL; val = 102; strcpy (charset, "CP102"); mbc_max = 1; #ifdef _MB_EXTENDED_CHARSETS_WINDOWS l_wctomb = __cp_wctomb (val); l_mbtowc = __cp_mbtowc (val); #else /* !_MB_EXTENDED_CHARSETS_WINDOWS */ l_wctomb = __ascii_wctomb; l_mbtowc = __ascii_mbtowc; #endif /* _MB_EXTENDED_CHARSETS_WINDOWS */ break; case 'T': case 't': if (strncasecmp (charset, "TIS", 3)) FAIL; c = charset + 3; if (*c == '-') ++c; if (strcmp (c, "620")) FAIL; val = 874; strcpy (charset, "CP874"); mbc_max = 1; #ifdef _MB_EXTENDED_CHARSETS_WINDOWS l_wctomb = __cp_wctomb (val); l_mbtowc = __cp_mbtowc (val); #else /* !_MB_EXTENDED_CHARSETS_WINDOWS */ l_wctomb = __ascii_wctomb; l_mbtowc = __ascii_mbtowc; #endif /* _MB_EXTENDED_CHARSETS_WINDOWS */ break; #ifdef __CYGWIN__ /* Newlib does not provide Big5 and Cygwin's implementation requires Windows support. */ case 'B': case 'b': if (strcasecmp (charset, "BIG5")) FAIL; strcpy (charset, "BIG5"); mbc_max = 2; l_wctomb = __big5_wctomb; l_mbtowc = __big5_mbtowc; break; #endif /* __CYGWIN__ */ default: FAIL; } switch (category) { case LC_CTYPE: #ifndef __HAVE_LOCALE_INFO__ strcpy (loc->ctype_codeset, charset); loc->mb_cur_max[0] = mbc_max; #endif #ifdef __CYGWIN__ __mb_cur_max = mbc_max; /* Only for backward compat */ #endif loc->wctomb = l_wctomb; loc->mbtowc = l_mbtowc; __set_ctype (loc, charset); /* Set CJK width mode (1: ambiguous-wide, 0: normal, -1: disabled). */ /* Determine the width for the "CJK Ambiguous Width" category of characters. This is used in wcwidth(). Assume single width for single-byte charsets, and double width for multi-byte charsets other than UTF-8. For UTF-8, use single width. Single width can also be forced with the "@cjknarrow" modifier. Double width can also be forced with the "@cjkwide" modifier. */ loc->cjk_lang = cjkwide || (!cjknarrow && mbc_max > 1 && charset[0] != 'U'); if (cjksingle) loc->cjk_lang = -1; /* Disable CJK dual-width */ #ifdef __CYGWIN__ ret = __ctype_load_locale (loc, locale, (void *) l_wctomb, charset, mbc_max); #endif /* __CYGWIN__ */ break; #ifdef __CYGWIN__ /* Right now only Cygwin supports a __messages_load_locale function at all. */ case LC_MESSAGES: #ifdef __HAVE_LOCALE_INFO__ ret = __messages_load_locale (loc, locale, (void *) l_wctomb, charset); if (!ret) #else strcpy (loc->message_codeset, charset); #endif /* __HAVE_LOCALE_INFO__ */ break; #endif #ifdef __HAVE_LOCALE_INFO__ #ifdef __CYGWIN__ /* Right now only Cygwin supports a __collate_load_locale function at all. */ case LC_COLLATE: ret = __collate_load_locale (loc, locale, (void *) l_mbtowc, charset); break; /* Right now only Cygwin supports a __monetary_load_locale function at all. */ case LC_MONETARY: ret = __monetary_load_locale (loc, locale, (void *) l_wctomb, charset); break; /* Right now only Cygwin supports a __numeric_load_locale function at all. */ case LC_NUMERIC: ret = __numeric_load_locale (loc, locale, (void *) l_wctomb, charset); break; /* Right now only Cygwin supports a __time_load_locale function at all. */ case LC_TIME: ret = __time_load_locale (loc, locale, (void *) l_wctomb, charset); break; #endif #endif /* __HAVE_LOCALE_INFO__ */ default: break; } #ifdef __HAVE_LOCALE_INFO__ if (ret) FAIL; #endif /* __HAVE_LOCALE_INFO__ */ return strcpy(loc->categories[category], new_locale); } const char * __get_locale_env (int category) { const char *env; /* 1. check LC_ALL. */ env = getenv (categories[0]); /* 2. check LC_* */ if (env == NULL || !*env) env = getenv (categories[category]); /* 3. check LANG */ if (env == NULL || !*env) env = getenv ("LANG"); /* 4. if none is set, fall to default locale */ if (env == NULL || !*env) env = __default_locale; return env; } #endif /* _MB_CAPABLE */ size_t __locale_mb_cur_max (void) { #ifdef __HAVE_LOCALE_INFO__ return __get_current_ctype_locale ()->mb_cur_max[0]; #else return __get_current_locale ()->mb_cur_max[0]; #endif } #ifdef __HAVE_LOCALE_INFO__ const char * __locale_ctype_ptr_l (struct __locale_t *locale) { return locale->ctype_ptr; } const char * __locale_ctype_ptr (void) { return __get_current_locale ()->ctype_ptr; } #endif /* __HAVE_LOCALE_INFO__ */ picolibc-1.7.4/newlib/libc/locale/locale.tex000066400000000000000000000135431414576234500207410ustar00rootroot00000000000000# #Copyright (c) 1996 - 2002 FreeBSD Project #Copyright (c) 1991, 1993 #The Regents of the University of California. All rights reserved. # #Redistribution and use in source and binary forms, with or without #modification, are permitted provided that the following conditions #are met: #1. Redistributions of source code must retain the above copyright #notice, this list of conditions and the following disclaimer. #2. Redistributions in binary form must reproduce the above copyright #notice, this list of conditions and the following disclaimer in the #documentation and/or other materials provided with the distribution. #4. Neither the name of the University nor the names of its contributors #may be used to endorse or promote products derived from this software #without specific prior written permission. # #THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND #ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE #IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE #ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE #FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL #DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS #OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) #HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT #LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY #OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF #SUCH DAMAGE. # @node Locale @chapter Locale (@file{locale.h}) A @dfn{locale} is the name for a collection of parameters (affecting collating sequences and formatting conventions) that may be different depending on location or culture. The @code{"C"} locale is the only one defined in the ANSI C standard. This is a minimal implementation, supporting only the required @code{"C"} value for locale; strings representing other locales are not honored. (@code{""} is also accepted; it represents the default locale for an implementation, here equivalent to @code{"C"}). @file{locale.h} defines the structure @code{lconv} to collect the information on a locale, with the following fields: @table @code @item char *decimal_point The decimal point character used to format ``ordinary'' numbers (all numbers except those referring to amounts of money). @code{"."} in the C locale. @item char *thousands_sep The character (if any) used to separate groups of digits, when formatting ordinary numbers. @code{""} in the C locale. @item char *grouping Specifications for how many digits to group (if any grouping is done at all) when formatting ordinary numbers. The @emph{numeric value} of each character in the string represents the number of digits for the next group, and a value of @code{0} (that is, the string's trailing @code{NULL}) means to continue grouping digits using the last value specified. Use @code{CHAR_MAX} to indicate that no further grouping is desired. @code{""} in the C locale. @item char *int_curr_symbol The international currency symbol (first three characters), if any, and the character used to separate it from numbers. @code{""} in the C locale. @item char *currency_symbol The local currency symbol, if any. @code{""} in the C locale. @item char *mon_decimal_point The symbol used to delimit fractions in amounts of money. @code{""} in the C locale. @item char *mon_thousands_sep Similar to @code{thousands_sep}, but used for amounts of money. @code{""} in the C locale. @item char *mon_grouping Similar to @code{grouping}, but used for amounts of money. @code{""} in the C locale. @item char *positive_sign A string to flag positive amounts of money when formatting. @code{""} in the C locale. @item char *negative_sign A string to flag negative amounts of money when formatting. @code{""} in the C locale. @item char int_frac_digits The number of digits to display when formatting amounts of money to international conventions. @code{CHAR_MAX} (the largest number representable as a @code{char}) in the C locale. @item char frac_digits The number of digits to display when formatting amounts of money to local conventions. @code{CHAR_MAX} in the C locale. @item char p_cs_precedes @code{1} indicates the local currency symbol is used before a @emph{positive or zero} formatted amount of money; @code{0} indicates the currency symbol is placed after the formatted number. @code{CHAR_MAX} in the C locale. @item char p_sep_by_space @code{1} indicates the local currency symbol must be separated from @emph{positive or zero} numbers by a space; @code{0} indicates that it is immediately adjacent to numbers. @code{CHAR_MAX} in the C locale. @item char n_cs_precedes @code{1} indicates the local currency symbol is used before a @emph{negative} formatted amount of money; @code{0} indicates the currency symbol is placed after the formatted number. @code{CHAR_MAX} in the C locale. @item char n_sep_by_space @code{1} indicates the local currency symbol must be separated from @emph{negative} numbers by a space; @code{0} indicates that it is immediately adjacent to numbers. @code{CHAR_MAX} in the C locale. @item char p_sign_posn Controls the position of the @emph{positive} sign for numbers representing money. @code{0} means parentheses surround the number; @code{1} means the sign is placed before both the number and the currency symbol; @code{2} means the sign is placed after both the number and the currency symbol; @code{3} means the sign is placed just before the currency symbol; and @code{4} means the sign is placed just after the currency symbol. @code{CHAR_MAX} in the C locale. @item char n_sign_posn Controls the position of the @emph{negative} sign for numbers representing money, using the same rules as @code{p_sign_posn}. @code{CHAR_MAX} in the C locale. @end table @menu * setlocale:: Select or query locale @end menu @page @include locale/locale.def picolibc-1.7.4/newlib/libc/locale/localeconv.c000066400000000000000000000074421414576234500212520ustar00rootroot00000000000000/* Copyright (c) 1996 - 2002 FreeBSD Project Copyright (c) 1991, 1993 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 4. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "newlib.h" #include "setlocale.h" struct lconv * __localeconv_l (struct __locale_t *locale) { struct lconv *lconv = &locale->lconv; if (locale == __get_C_locale ()) return lconv; #ifdef __HAVE_LOCALE_INFO__ const struct lc_numeric_T *n = __get_numeric_locale (locale); const struct lc_monetary_T *m = __get_monetary_locale (locale); lconv->decimal_point = (char *) n->decimal_point; lconv->thousands_sep = (char *) n->thousands_sep; lconv->grouping = (char *) n->grouping; lconv->int_curr_symbol = (char *) m->int_curr_symbol; lconv->currency_symbol = (char *) m->currency_symbol; lconv->mon_decimal_point = (char *) m->mon_decimal_point; lconv->mon_thousands_sep = (char *) m->mon_thousands_sep; lconv->mon_grouping = (char *) m->mon_grouping; lconv->positive_sign = (char *) m->positive_sign; lconv->negative_sign = (char *) m->negative_sign; lconv->int_frac_digits = m->int_frac_digits[0]; lconv->frac_digits = m->frac_digits[0]; lconv->p_cs_precedes = m->p_cs_precedes[0]; lconv->p_sep_by_space = m->p_sep_by_space[0]; lconv->n_cs_precedes = m->n_cs_precedes[0]; lconv->n_sep_by_space = m->n_sep_by_space[0]; lconv->p_sign_posn = m->p_sign_posn[0]; lconv->n_sign_posn = m->n_sign_posn[0]; #ifdef __HAVE_LOCALE_INFO_EXTENDED__ lconv->int_p_cs_precedes = m->int_p_cs_precedes[0]; lconv->int_p_sep_by_space = m->int_p_sep_by_space[0]; lconv->int_n_cs_precedes = m->int_n_cs_precedes[0]; lconv->int_n_sep_by_space = m->int_n_sep_by_space[0]; lconv->int_n_sign_posn = m->int_n_sign_posn[0]; lconv->int_p_sign_posn = m->int_p_sign_posn[0]; #else /* !__HAVE_LOCALE_INFO_EXTENDED__ */ lconv->int_p_cs_precedes = m->p_cs_precedes[0]; lconv->int_p_sep_by_space = m->p_sep_by_space[0]; lconv->int_n_cs_precedes = m->n_cs_precedes[0]; lconv->int_n_sep_by_space = m->n_sep_by_space[0]; lconv->int_n_sign_posn = m->n_sign_posn[0]; lconv->int_p_sign_posn = m->p_sign_posn[0]; #endif /* !__HAVE_LOCALE_INFO_EXTENDED__ */ #endif /* __HAVE_LOCALE_INFO__ */ return lconv; } struct lconv * localeconv (void) { /* Note that we always fall back to the global locale, even in case of specifying a reent. Otherwise a call to _localeconv_r would just crash if the reent locale pointer is NULL. */ return __localeconv_l (__get_current_locale ()); } picolibc-1.7.4/newlib/libc/locale/meson.build000066400000000000000000000044211414576234500211150ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # srcs_locale = [ 'locale.c', 'localeconv.c', 'lnumeric.c', 'timelocal.c', ] srcs_locale_info = [ 'duplocale.c', 'freelocale.c', 'lctype.c', 'lmessages.c', 'lmonetary.c', 'newlocale.c', 'nl_langinfo.c', 'uselocale.c', ] if newlib_locale_info srcs_locale += srcs_locale_info endif hdrs_locale = [ 'setlocale.h', ] srcs_locale_use = [] foreach file : srcs_locale s_file = fs.replace_suffix(file, '.S') if file in srcs_machine message('libc/locale/' + file + ': machine overrides generic') elif s_file in srcs_machine message('libc/locale/' + s_file + ': machine overrides generic') else srcs_locale_use += file endif endforeach src_locale = files(srcs_locale_use) picolibc-1.7.4/newlib/libc/locale/newlocale.c000066400000000000000000000214101414576234500210650ustar00rootroot00000000000000/* Copyright (c) 1996 - 2002 FreeBSD Project Copyright (c) 1991, 1993 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 4. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>---create or modify a locale object INDEX newlocale INDEX _newlocale_r SYNOPSIS #include locale_t newlocale(int <[category_mask]>, const char *<[locale]>, locale_t <[locobj]>); locale_t _newlocale_r(void *<[reent]>, int <[category_mask]>, const char *<[locale]>, locale_t <[locobj]>); DESCRIPTION The <> function shall create a new locale object or modify an existing one. If the base argument is (locale_t) <<0>>, a new locale object shall be created. It is unspecified whether the locale object pointed to by base shall be modified, or freed and a new locale object created. The category_mask argument specifies the locale categories to be set or modified. Values for category_mask shall be constructed by a bitwise-inclusive OR of the symbolic constants LC_CTYPE_MASK, LC_NUMERIC_MASK, LC_TIME_MASK, LC_COLLATE_MASK, LC_MONETARY_MASK, and LC_MESSAGES_MASK, or any of the other implementation-defined LC_*_MASK values defined in . For each category with the corresponding bit set in category_mask the data from the locale named by locale shall be used. In the case of modifying an existing locale object, the data from the locale named by locale shall replace the existing data within the locale object. If a completely new locale object is created, the data for all sections not requested by category_mask shall be taken from the default locale. The following preset values of locale are defined for all settings of category_mask: "POSIX" Specifies the minimal environment for C-language translation called the POSIX locale. "C" Equivalent to "POSIX". "" Specifies an implementation-defined native environment. This corresponds to the value of the associated environment variables, LC_* and LANG; see the Base Definitions volume of POSIX.1‐2008, Chapter 7, Locale and Chapter 8, Environment Variables. If the base argument is not (locale_t) <<0>> and the <> function call succeeds, the contents of base are unspecified. Applications shall ensure that they stop using base as a locale object before calling <>. If the function call fails and the base argument is not (locale_t) <<0>>, the contents of base shall remain valid and unchanged. The behavior is undefined if the base argument is the special locale object LC_GLOBAL_LOCALE, or is not a valid locale object handle and is not (locale_t) <<0>>. RETURNS Upon successful completion, the <> function shall return a handle which the caller may use on subsequent calls to <>, <>, and other functions taking a locale_t argument. Upon failure, the <> function shall return (locale_t) <<0>> and set errno to indicate the error. PORTABILITY <> is POSIX-1.2008. */ #define _DEFAULT_SOURCE #include #include #include #include "setlocale.h" #define LC_VALID_MASK (LC_COLLATE_MASK | LC_CTYPE_MASK | LC_MONETARY_MASK \ | LC_NUMERIC_MASK | LC_TIME_MASK | LC_MESSAGES_MASK) struct __locale_t * newlocale (int category_mask, const char *locale, struct __locale_t *base) { (void) category_mask; (void) locale; (void) base; #ifndef _MB_CAPABLE return __get_C_locale (); #else /* _MB_CAPABLE */ char new_categories[_LC_LAST][ENCODING_LEN + 1]; struct __locale_t tmp_locale, *new_locale; int i; /* Convert LC_ALL_MASK to a mask containing all valid MASK values. This simplifies the code below. */ if (category_mask & LC_ALL_MASK) { category_mask &= ~LC_ALL_MASK; category_mask |= LC_VALID_MASK; } /* Check for invalid mask values and valid locale ptr. */ if ((category_mask & ~LC_VALID_MASK) || !locale) { __errno_r(p) = EINVAL; return NULL; } /* If the new locale is supposed to be all default locale, just return a pointer to the default locale. */ if ((!base && category_mask == 0) || (category_mask == LC_VALID_MASK && (!strcmp (locale, "C") || !strcmp (locale, "POSIX")))) return __get_C_locale (); /* Start with setting all values to the default locale values. */ tmp_locale = *__get_C_locale (); /* Fill out new category strings. */ for (i = 1; i < _LC_LAST; ++i) { if (((1 << i) & category_mask) != 0) { /* If locale is "", fetch from environment. Otherwise use locale name verbatim. */ const char *cat = (locale[0] == '\0') ? __get_locale_env (i) : locale; if (strlen (cat) > ENCODING_LEN) { __errno_r(p) = EINVAL; return NULL; } strcpy (new_categories[i], cat); } else strcpy (new_categories[i], base ? base->categories[i] : "C"); } /* Now go over all categories and set them. */ for (i = 1; i < _LC_LAST; ++i) { /* If we have a base locale, and the category is not in category_mask or the new category is the base categroy, just copy over. */ if (base && (((1 << i) & category_mask) == 0 || !strcmp (base->categories[i], new_categories[i]))) { strcpy (tmp_locale.categories[i], new_categories[i]); if (i == LC_CTYPE) { tmp_locale.wctomb = base->wctomb; tmp_locale.mbtowc = base->mbtowc; tmp_locale.cjk_lang = base->cjk_lang; tmp_locale.ctype_ptr = base->ctype_ptr; } #ifdef __HAVE_LOCALE_INFO__ /* Mark the values as "has still to be copied". We do this in two steps to simplify freeing new locale types in case of a subsequent error. */ tmp_locale.lc_cat[i].ptr = base->lc_cat[i].ptr; tmp_locale.lc_cat[i].buf = (void *) -1; #else /* !__HAVE_LOCALE_INFO__ */ if (i == LC_CTYPE) strcpy (tmp_locale.ctype_codeset, base->ctype_codeset); else if (i == LC_MESSAGES) strcpy (tmp_locale.message_codeset, base->message_codeset); #endif /* !__HAVE_LOCALE_INFO__ */ } /* Otherwise, if the category is in category_mask, create entry. */ else if (((1 << i) & category_mask) != 0) { /* Nothing to do for "C"/"POSIX" locale. */ if (!strcmp (new_categories[i], "C") || !strcmp (new_categories[i], "POSIX")) continue; /* Otherwise load locale data. */ else if (!__loadlocale (&tmp_locale, i, new_categories[i])) goto error; } } /* Allocate new locale_t. */ new_locale = (struct __locale_t *) calloc (1, sizeof *new_locale); if (!new_locale) goto error; if (base) { #ifdef __HAVE_LOCALE_INFO__ /* Step 2 of copying over.. Make sure to invalidate the copied buffer pointers in base, so the subsequent _freelocale_r (base) doesn't free the buffers now used in the new locale. */ for (i = 1; i < _LC_LAST; ++i) if (tmp_locale.lc_cat[i].buf == (const void *) -1) { tmp_locale.lc_cat[i].buf = base->lc_cat[i].buf; base->lc_cat[i].ptr = base->lc_cat[i].buf = NULL; } #endif /* __HAVE_LOCALE_INFO__ */ freelocale (base); } *new_locale = tmp_locale; return new_locale; error: /* An error occured while we had already (potentially) allocated memory. Free memory and return NULL. errno is supposed to be set already. */ #ifdef __HAVE_LOCALE_INFO__ for (i = 1; i < _LC_LAST; ++i) if (((1 << i) & category_mask) != 0 && tmp_locale.lc_cat[i].buf && tmp_locale.lc_cat[i].buf != (const void *) -1) { free ((void *) tmp_locale.lc_cat[i].ptr); free (tmp_locale.lc_cat[i].buf); } #endif /* __HAVE_LOCALE_INFO__ */ return NULL; #endif /* _MB_CAPABLE */ } picolibc-1.7.4/newlib/libc/locale/nl_langinfo.3000066400000000000000000000052601414576234500213270ustar00rootroot00000000000000.\" Copyright (c) 2001 Alexey Zelkin .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" $FreeBSD: src/lib/libc/locale/nl_langinfo.3,v 1.4 2002/04/13 04:25:56 dd Exp $ .\" .Dd May 3, 2001 .Dt NL_LANGINFO 3 .Os .Sh NAME .Nm nl_langinfo .Nd language information .Sh LIBRARY .Lb libc .Sh SYNOPSIS .In langinfo.h .Ft char * .Fn nl_langinfo "nl_item item" .Sh DESCRIPTION The .Fn nl_langinfo function returns a pointer to a string containing information relevant to the particular language or cultural area defined in the program's locale. The manifest constant names and values of .Fa item are defined in .Aq Pa langinfo.h . .Pp Calls to .Fn setlocale with a category corresponding to the category of .Fa item , or to the category .Dv LC_ALL , may overwrite buffer pointed by the return value. .Sh EXAMPLES For example: .Pp .Dl nl_langinfo(ABDAY_1) .Pp would return a pointer to the string .Qq Li Dom if the identified language was Portuguese, and .Qq Li Sun if the identified language was English. .Sh RETURN VALUES In a locale where langinfo data is not defined, .Fn nl_langinfo returns a pointer to the corresponding string in the .Tn POSIX locale. In all locales, .Fn nl_langinfo returns a pointer to an empty string if .Fa item contains an invalid setting. .Sh SEE ALSO .Xr setlocale 3 .Sh STANDARDS The .Fn nl_langinfo function conforms to .St -susv2 . .Sh HISTORY The .Fn nl_langinfo function first appeared in .Fx 4.6 . picolibc-1.7.4/newlib/libc/locale/nl_langinfo.c000066400000000000000000000303551414576234500214120ustar00rootroot00000000000000/*- * Copyright (c) 2001 Alexey Zelkin * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _GNU_SOURCE #include #include #include #include #include #include #include "setlocale.h" #undef offsetoff #define _O(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER) #define _NLITEM(cat,memb) { { .cat = __get_##cat##_locale }, \ _O (struct lc_##cat##_T, memb) } #ifdef __HAVE_LOCALE_INFO_EXTENDED__ static struct _nl_item_t { union { const struct lc_ctype_T * (*ctype)(struct __locale_t *); const struct lc_time_T * (*time)(struct __locale_t *); const struct lc_numeric_T * (*numeric)(struct __locale_t *); const struct lc_monetary_T * (*monetary)(struct __locale_t *); const struct lc_messages_T * (*messages)(struct __locale_t *); void * (*base)(struct __locale_t *); }; _off_t offset; } nl_ext[] = { /* First element has an nl_item value of _NL_LOCALE_EXTENDED_FIRST_ENTRY */ _NLITEM (ctype, outdigits[0]), _NLITEM (ctype, outdigits[1]), _NLITEM (ctype, outdigits[2]), _NLITEM (ctype, outdigits[3]), _NLITEM (ctype, outdigits[4]), _NLITEM (ctype, outdigits[5]), _NLITEM (ctype, outdigits[6]), _NLITEM (ctype, outdigits[7]), _NLITEM (ctype, outdigits[8]), _NLITEM (ctype, outdigits[9]), _NLITEM (ctype, woutdigits[0]), _NLITEM (ctype, woutdigits[1]), _NLITEM (ctype, woutdigits[2]), _NLITEM (ctype, woutdigits[3]), _NLITEM (ctype, woutdigits[4]), _NLITEM (ctype, woutdigits[5]), _NLITEM (ctype, woutdigits[6]), _NLITEM (ctype, woutdigits[7]), _NLITEM (ctype, woutdigits[8]), _NLITEM (ctype, woutdigits[9]), _NLITEM (time, codeset), _NLITEM (time, wmon[1]), _NLITEM (time, wmon[2]), _NLITEM (time, wmon[3]), _NLITEM (time, wmon[4]), _NLITEM (time, wmon[5]), _NLITEM (time, wmon[6]), _NLITEM (time, wmon[7]), _NLITEM (time, wmon[8]), _NLITEM (time, wmon[9]), _NLITEM (time, wmon[10]), _NLITEM (time, wmon[11]), _NLITEM (time, wmon[12]), _NLITEM (time, wmonth[1]), _NLITEM (time, wmonth[2]), _NLITEM (time, wmonth[3]), _NLITEM (time, wmonth[4]), _NLITEM (time, wmonth[5]), _NLITEM (time, wmonth[6]), _NLITEM (time, wmonth[7]), _NLITEM (time, wmonth[8]), _NLITEM (time, wmonth[9]), _NLITEM (time, wmonth[10]), _NLITEM (time, wmonth[11]), _NLITEM (time, wmonth[12]), _NLITEM (time, wwday[1]), _NLITEM (time, wwday[2]), _NLITEM (time, wwday[3]), _NLITEM (time, wwday[4]), _NLITEM (time, wwday[5]), _NLITEM (time, wwday[6]), _NLITEM (time, wwday[7]), _NLITEM (time, wweekday[1]), _NLITEM (time, wweekday[2]), _NLITEM (time, wweekday[3]), _NLITEM (time, wweekday[4]), _NLITEM (time, wweekday[5]), _NLITEM (time, wweekday[6]), _NLITEM (time, wweekday[7]), _NLITEM (time, wX_fmt), _NLITEM (time, wx_fmt), _NLITEM (time, wc_fmt), _NLITEM (time, wam_pm[0]), _NLITEM (time, wam_pm[1]), _NLITEM (time, wdate_fmt), _NLITEM (time, wampm_fmt), _NLITEM (time, wera), _NLITEM (time, wera_d_fmt), _NLITEM (time, wera_d_t_fmt), _NLITEM (time, wera_t_fmt), _NLITEM (time, walt_digits), _NLITEM (numeric, codeset), _NLITEM (numeric, grouping), _NLITEM (numeric, wdecimal_point), _NLITEM (numeric, wthousands_sep), _NLITEM (monetary, int_curr_symbol), _NLITEM (monetary, currency_symbol), _NLITEM (monetary, mon_decimal_point), _NLITEM (monetary, mon_thousands_sep), _NLITEM (monetary, mon_grouping), _NLITEM (monetary, positive_sign), _NLITEM (monetary, negative_sign), _NLITEM (monetary, int_frac_digits), _NLITEM (monetary, frac_digits), _NLITEM (monetary, p_cs_precedes), _NLITEM (monetary, p_sep_by_space), _NLITEM (monetary, n_cs_precedes), _NLITEM (monetary, n_sep_by_space), _NLITEM (monetary, p_sign_posn), _NLITEM (monetary, n_sign_posn), _NLITEM (monetary, int_p_cs_precedes), _NLITEM (monetary, int_p_sep_by_space), _NLITEM (monetary, int_n_cs_precedes), _NLITEM (monetary, int_n_sep_by_space), _NLITEM (monetary, int_p_sign_posn), _NLITEM (monetary, int_n_sign_posn), _NLITEM (monetary, codeset), _NLITEM (monetary, wint_curr_symbol), _NLITEM (monetary, wcurrency_symbol), _NLITEM (monetary, wmon_decimal_point), _NLITEM (monetary, wmon_thousands_sep), _NLITEM (monetary, wpositive_sign), _NLITEM (monetary, wnegative_sign), _NLITEM (messages, codeset), _NLITEM (messages, wyesexpr), _NLITEM (messages, wnoexpr), _NLITEM (messages, wyesstr), _NLITEM (messages, wnostr), }; #endif /* __HAVE_LOCALE_INFO_EXTENDED__ */ #define _REL(BASE) ((int)item-BASE) char *nl_langinfo_l (nl_item item, struct __locale_t *locale) { char *ret, *cs; static char *csym = NULL; char *nptr; switch (item) { #ifdef __HAVE_LOCALE_INFO__ case _NL_MESSAGES_CODESET: ret = (char *) __locale_msgcharset(); goto do_codeset; #ifdef __HAVE_LOCALE_INFO_EXTENDED__ case _NL_TIME_CODESET: ret = (char *) __get_time_locale (locale)->codeset; goto do_codeset; case _NL_NUMERIC_CODESET: ret = (char *) __get_numeric_locale (locale)->codeset; goto do_codeset; case _NL_MONETARY_CODESET: ret = (char *) __get_monetary_locale (locale)->codeset; goto do_codeset; #ifdef __CYGWIN__ case _NL_COLLATE_CODESET: { ret = (char *) __get_collate_locale (locale)->codeset; goto do_codeset; } #endif /* __CYGWIN__ */ #endif /* __HAVE_LOCALE_INFO_EXTENDED__ */ #endif /* __HAVE_LOCALE_INFO__ */ case CODESET: #ifdef _MB_CAPABLE ret = (char *) __locale_charset (locale); #endif do_codeset: #ifdef __CYGWIN__ /* Convert charset to Linux compatible codeset string. */ if (ret[0] == 'A'/*SCII*/) ret = "ANSI_X3.4-1968"; else if (ret[0] == 'E') { if (strcmp (ret, "EUCJP") == 0) ret = "EUC-JP"; else if (strcmp (ret, "EUCKR") == 0) ret = "EUC-KR"; else if (strcmp (ret, "EUCCN") == 0) ret = "GB2312"; } else if (ret[0] == 'C'/*Pxxxx*/) { if (strcmp (ret + 2, "874") == 0) ret = "TIS-620"; else if (strcmp (ret + 2, "20866") == 0) ret = "KOI8-R"; else if (strcmp (ret + 2, "21866") == 0) ret = "KOI8-U"; else if (strcmp (ret + 2, "101") == 0) ret = "GEORGIAN-PS"; else if (strcmp (ret + 2, "102") == 0) ret = "PT154"; } else if (ret[0] == 'S'/*JIS*/) { /* Cygwin uses MSFT's implementation of SJIS, which differs in some codepoints from the real thing, especially 0x5c: yen sign instead of backslash, 0x7e: overline instead of tilde. We can't use the real SJIS since otherwise Win32 pathnames would become invalid. OTOH, if we return "SJIS" here, then libiconv will do mb<->wc conversion differently to our internal functions. Therefore we return what we really implement, CP932. This is handled fine by libiconv. */ ret = "CP932"; } #elif !defined (_MB_CAPABLE) ret = "US-ASCII"; #endif /* __CYGWIN__ */ break; case D_T_FMT: ret = (char *) __get_time_locale (locale)->c_fmt; break; case D_FMT: ret = (char *) __get_time_locale (locale)->x_fmt; break; case T_FMT: ret = (char *) __get_time_locale (locale)->X_fmt; break; case T_FMT_AMPM: ret = (char *) __get_time_locale (locale)->ampm_fmt; break; case AM_STR: ret = (char *) __get_time_locale (locale)->am_pm[0]; break; case PM_STR: ret = (char *) __get_time_locale (locale)->am_pm[1]; break; case DAY_1: case DAY_2: case DAY_3: case DAY_4: case DAY_5: case DAY_6: case DAY_7: ret = (char*) __get_time_locale (locale)->weekday[_REL(DAY_1)]; break; case ABDAY_1: case ABDAY_2: case ABDAY_3: case ABDAY_4: case ABDAY_5: case ABDAY_6: case ABDAY_7: ret = (char*) __get_time_locale (locale)->wday[_REL(ABDAY_1)]; break; case MON_1: case MON_2: case MON_3: case MON_4: case MON_5: case MON_6: case MON_7: case MON_8: case MON_9: case MON_10: case MON_11: case MON_12: ret = (char*) __get_time_locale (locale)->month[_REL(MON_1)]; break; case ABMON_1: case ABMON_2: case ABMON_3: case ABMON_4: case ABMON_5: case ABMON_6: case ABMON_7: case ABMON_8: case ABMON_9: case ABMON_10: case ABMON_11: case ABMON_12: ret = (char*) __get_time_locale (locale)->mon[_REL(ABMON_1)]; break; case ERA: ret = (char*) __get_time_locale (locale)->era; break; case ERA_D_FMT: ret = (char*) __get_time_locale (locale)->era_d_fmt; break; case ERA_D_T_FMT: ret = (char*) __get_time_locale (locale)->era_d_t_fmt; break; case ERA_T_FMT: ret = (char*) __get_time_locale (locale)->era_t_fmt; break; case ALT_DIGITS: ret = (char*) __get_time_locale (locale)->alt_digits; break; case _DATE_FMT: /* GNU extension */ ret = (char*) __get_time_locale (locale)->date_fmt; break; case RADIXCHAR: ret = (char*) __get_numeric_locale (locale)->decimal_point; break; case THOUSEP: ret = (char*) __get_numeric_locale (locale)->thousands_sep; break; case YESEXPR: ret = (char*) __get_messages_locale (locale)->yesexpr; break; case NOEXPR: ret = (char*) __get_messages_locale (locale)->noexpr; break; /* * All items marked with LEGACY are available, but not recomended * by SUSv2 to be used in portable applications since they're subject * to remove in future specification editions */ case YESSTR: /* LEGACY */ ret = (char*) __get_messages_locale (locale)->yesstr; break; case NOSTR: /* LEGACY */ ret = (char*) __get_messages_locale (locale)->nostr; break; case CRNCYSTR: ret = ""; cs = (char*) __get_monetary_locale (locale)->currency_symbol; if (*cs != '\0') { char pos = __localeconv_l (locale)->p_cs_precedes; if (pos == __localeconv_l (locale)->n_cs_precedes) { char psn = '\0'; if (pos == CHAR_MAX) { if (strcmp(cs, __get_monetary_locale (locale)->mon_decimal_point) == 0) psn = '.'; } else psn = pos ? '-' : '+'; if (psn != '\0') { int clen = strlen(cs); nptr = realloc(csym, clen + 2); if (!nptr && csym) free (csym); csym = nptr; if (csym != NULL) { *csym = psn; strcpy(csym + 1, cs); ret = csym; } } } } break; case D_MD_ORDER: /* local extension */ ret = (char *) __get_time_locale (locale)->md_order; break; #ifdef __HAVE_LOCALE_INFO__ case _NL_CTYPE_MB_CUR_MAX: ret = (char *) __get_ctype_locale (locale)->mb_cur_max; break; #endif default: /* Relies on the fact that LC_ALL is 0, and all other LC_ constants are in ascending order. */ if (item > NL_LOCALE_NAME(LC_ALL) && item < NL_LOCALE_NAME(_LC_LAST)) { return locale->categories[item - NL_LOCALE_NAME(LC_ALL)]; } #ifdef __HAVE_LOCALE_INFO_EXTENDED__ if (item > _NL_LOCALE_EXTENDED_FIRST_ENTRY && item < _NL_LOCALE_EXTENDED_LAST_ENTRY) { int idx = item - _NL_LOCALE_EXTENDED_FIRST_ENTRY - 1; return *(char **) ((char *) (*nl_ext[idx].base)(locale) + nl_ext[idx].offset); } #endif ret = ""; } return (ret); } char *nl_langinfo (nl_item item) { return nl_langinfo_l (item, __get_current_locale ()); } picolibc-1.7.4/newlib/libc/locale/setlocale.h000066400000000000000000000262621414576234500211060ustar00rootroot00000000000000/*- * Copyright (C) 1997 by Andrey A. Chernov, Moscow, Russia. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $FreeBSD: src/lib/libc/locale/setlocale.h,v 1.4 2001/12/20 18:28:52 phantom Exp $ */ #ifndef _SETLOCALE_H_ #define _SETLOCALE_H_ #include <_ansi.h> #include #include #include #include #include #include __BEGIN_DECLS extern struct __locale_t __global_locale; #define __get_current_locale() _locale #define __get_global_locale() (&__global_locale) #define ENCODING_LEN 31 #define CATEGORY_LEN 11 #define _LC_LAST 7 #ifdef __CYGWIN__ struct lc_collate_T { __uint32_t lcid; int (*mbtowc) (wchar_t *, const char *, size_t, mbstate_t *); char codeset[ENCODING_LEN + 1]; }; extern const struct lc_collate_T _C_collate_locale; #endif struct lc_ctype_T { const char *codeset; /* codeset for mbtowc conversion */ const char *mb_cur_max; #ifdef __HAVE_LOCALE_INFO_EXTENDED__ const char *outdigits[10]; const wchar_t *woutdigits[10]; #endif }; extern const struct lc_ctype_T _C_ctype_locale; struct lc_monetary_T { const char *int_curr_symbol; const char *currency_symbol; const char *mon_decimal_point; const char *mon_thousands_sep; const char *mon_grouping; const char *positive_sign; const char *negative_sign; const char *int_frac_digits; const char *frac_digits; const char *p_cs_precedes; const char *p_sep_by_space; const char *n_cs_precedes; const char *n_sep_by_space; const char *p_sign_posn; const char *n_sign_posn; #ifdef __HAVE_LOCALE_INFO_EXTENDED__ const char *int_p_cs_precedes; const char *int_p_sep_by_space; const char *int_n_cs_precedes; const char *int_n_sep_by_space; const char *int_p_sign_posn; const char *int_n_sign_posn; const char *codeset; /* codeset for mbtowc conversion */ const wchar_t *wint_curr_symbol; const wchar_t *wcurrency_symbol; const wchar_t *wmon_decimal_point; const wchar_t *wmon_thousands_sep; const wchar_t *wpositive_sign; const wchar_t *wnegative_sign; #endif }; extern const struct lc_monetary_T _C_monetary_locale; struct lc_numeric_T { const char *decimal_point; const char *thousands_sep; const char *grouping; #ifdef __HAVE_LOCALE_INFO_EXTENDED__ const char *codeset; /* codeset for mbtowc conversion */ const wchar_t *wdecimal_point; const wchar_t *wthousands_sep; #endif }; extern const struct lc_numeric_T _C_numeric_locale; struct lc_time_T { const char *mon[12]; const char *month[12]; const char *wday[7]; const char *weekday[7]; const char *X_fmt; const char *x_fmt; const char *c_fmt; const char *am_pm[2]; const char *date_fmt; const char *alt_month[12]; /* unused */ const char *md_order; const char *ampm_fmt; const char *era; const char *era_d_fmt; const char *era_d_t_fmt; const char *era_t_fmt; const char *alt_digits; #ifdef __HAVE_LOCALE_INFO_EXTENDED__ const char *codeset; /* codeset for mbtowc conversion */ const wchar_t *wmon[12]; const wchar_t *wmonth[12]; const wchar_t *wwday[7]; const wchar_t *wweekday[7]; const wchar_t *wX_fmt; const wchar_t *wx_fmt; const wchar_t *wc_fmt; const wchar_t *wam_pm[2]; const wchar_t *wdate_fmt; const wchar_t *wampm_fmt; const wchar_t *wera; const wchar_t *wera_d_fmt; const wchar_t *wera_d_t_fmt; const wchar_t *wera_t_fmt; const wchar_t *walt_digits; #endif }; extern const struct lc_time_T _C_time_locale; struct lc_messages_T { const char *yesexpr; const char *noexpr; const char *yesstr; const char *nostr; #ifdef __HAVE_LOCALE_INFO_EXTENDED__ const char *codeset; /* codeset for mbtowc conversion */ const wchar_t *wyesexpr; const wchar_t *wnoexpr; const wchar_t *wyesstr; const wchar_t *wnostr; #endif }; extern const struct lc_messages_T _C_messages_locale; struct __lc_cats { const void *ptr; char *buf; }; struct __locale_t { char categories[_LC_LAST][ENCODING_LEN + 1]; int (*wctomb) (char *, wchar_t, mbstate_t *); int (*mbtowc) (wchar_t *, const char *, size_t, mbstate_t *); int cjk_lang; const char *ctype_ptr; struct lconv lconv; #ifndef __HAVE_LOCALE_INFO__ char mb_cur_max[2]; char ctype_codeset[ENCODING_LEN + 1]; char message_codeset[ENCODING_LEN + 1]; #else struct __lc_cats lc_cat[_LC_LAST]; #endif }; #ifdef _MB_CAPABLE extern char *__loadlocale (struct __locale_t *, int, char *); extern const char *__get_locale_env(int); #endif /* _MB_CAPABLE */ extern struct lconv *__localeconv_l (struct __locale_t *locale); extern size_t _wcsnrtombs_l (char *, const wchar_t **, size_t, size_t, mbstate_t *, struct __locale_t *); #ifdef __HAVE_LOCALE_INFO__ #define NEWLIB_THREAD_LOCAL_LOCALE NEWLIB_THREAD_LOCAL #else #define NEWLIB_THREAD_LOCAL_LOCALE #endif extern NEWLIB_THREAD_LOCAL_LOCALE struct __locale_t *_locale; /* Only access fixed "C" locale using this function. Fake for !_MB_CAPABLE targets by returning ptr to globale locale. */ _ELIDABLE_INLINE struct __locale_t * __get_C_locale (void) { #ifndef _MB_CAPABLE return __get_global_locale (); #else extern const struct __locale_t __C_locale; return (struct __locale_t *) &__C_locale; #endif } #ifdef __CYGWIN__ _ELIDABLE_INLINE const struct lc_collate_T * __get_collate_locale (struct __locale_t *locale) { return (const struct lc_collate_T *) locale->lc_cat[LC_COLLATE].ptr; } _ELIDABLE_INLINE const struct lc_collate_T * __get_current_collate_locale (void) { return (const struct lc_collate_T *) _locale->lc_cat[LC_COLLATE].ptr; } #endif #ifdef __HAVE_LOCALE_INFO__ _ELIDABLE_INLINE const struct lc_ctype_T * __get_ctype_locale (struct __locale_t *locale) { return (const struct lc_ctype_T *) (locale)->lc_cat[LC_CTYPE].ptr; } _ELIDABLE_INLINE const struct lc_ctype_T * __get_current_ctype_locale (void) { return (const struct lc_ctype_T *) _locale->lc_cat[LC_CTYPE].ptr; } #endif _ELIDABLE_INLINE int __locale_mb_cur_max_l (struct __locale_t *locale) { #ifdef __HAVE_LOCALE_INFO__ return __get_ctype_locale (locale)->mb_cur_max[0]; #else return locale->mb_cur_max[0]; #endif } #ifdef __HAVE_LOCALE_INFO__ _ELIDABLE_INLINE const struct lc_monetary_T * __get_monetary_locale (struct __locale_t *locale) { return (const struct lc_monetary_T *) (locale)->lc_cat[LC_MONETARY].ptr; } _ELIDABLE_INLINE const struct lc_monetary_T * __get_current_monetary_locale (void) { return (const struct lc_monetary_T *) _locale->lc_cat[LC_MONETARY].ptr; } _ELIDABLE_INLINE const struct lc_numeric_T * __get_numeric_locale (struct __locale_t *locale) { return (const struct lc_numeric_T *) (locale)->lc_cat[LC_NUMERIC].ptr; } _ELIDABLE_INLINE const struct lc_numeric_T * __get_current_numeric_locale (void) { return (const struct lc_numeric_T *) _locale->lc_cat[LC_NUMERIC].ptr; } _ELIDABLE_INLINE const struct lc_time_T * __get_time_locale (struct __locale_t *locale) { return (const struct lc_time_T *) (locale)->lc_cat[LC_TIME].ptr; } _ELIDABLE_INLINE const struct lc_time_T * __get_current_time_locale (void) { return (const struct lc_time_T *) _locale->lc_cat[LC_TIME].ptr; } _ELIDABLE_INLINE const struct lc_messages_T * __get_messages_locale (struct __locale_t *locale) { return (const struct lc_messages_T *) (locale)->lc_cat[LC_MESSAGES].ptr; } _ELIDABLE_INLINE const struct lc_messages_T * __get_current_messages_locale (void) { return (const struct lc_messages_T *) _locale->lc_cat[LC_MESSAGES].ptr; } #else /* ! __HAVE_LOCALE_INFO__ */ _ELIDABLE_INLINE const struct lc_monetary_T * __get_monetary_locale (struct __locale_t *locale) { (void) locale; return &_C_monetary_locale; } _ELIDABLE_INLINE const struct lc_monetary_T * __get_current_monetary_locale (void) { return &_C_monetary_locale; } _ELIDABLE_INLINE const struct lc_numeric_T * __get_numeric_locale (struct __locale_t *locale) { (void) locale; return &_C_numeric_locale; } _ELIDABLE_INLINE const struct lc_numeric_T * __get_current_numeric_locale (void) { return &_C_numeric_locale; } _ELIDABLE_INLINE const struct lc_time_T * __get_time_locale (struct __locale_t *locale) { (void) locale; return &_C_time_locale; } _ELIDABLE_INLINE const struct lc_time_T * __get_current_time_locale (void) { return &_C_time_locale; } _ELIDABLE_INLINE const struct lc_messages_T * __get_messages_locale (struct __locale_t *locale) { (void) locale; return &_C_messages_locale; } _ELIDABLE_INLINE const struct lc_messages_T * __get_current_messages_locale (void) { return &_C_messages_locale; } #endif /* !__HAVE_LOCALE_INFO__ */ _ELIDABLE_INLINE const char * __locale_charset (struct __locale_t *locale) { (void) locale; #ifdef __HAVE_LOCALE_INFO__ return __get_ctype_locale (locale)->codeset; #else return locale->ctype_codeset; #endif } _ELIDABLE_INLINE const char * __current_locale_charset (void) { #ifdef __HAVE_LOCALE_INFO__ return __get_current_ctype_locale ()->codeset; #else return _locale->ctype_codeset; #endif } _ELIDABLE_INLINE const char * __locale_msgcharset (void) { #ifdef __HAVE_LOCALE_INFO__ #ifdef __HAVE_LOCALE_INFO_EXTENDED__ return (char *) __get_current_messages_locale ()->codeset; #else return (char *) __get_current_ctype_locale ()->codeset; #endif #else return (char *) _locale->message_codeset; #endif } _ELIDABLE_INLINE int __locale_cjk_lang (void) { return _locale->cjk_lang; } int __ctype_load_locale (struct __locale_t *, const char *, void *, const char *, int); int __monetary_load_locale (struct __locale_t *, const char *, void *, const char *); #ifdef __CYGWIN__ int __numeric_load_locale (struct __locale_t *, const char *, void *, const char *); int __time_load_locale (struct __locale_t *, const char *, void *, const char *); #endif int __messages_load_locale (struct __locale_t *, const char *, void *, const char *); #ifdef __CYGWIN__ int __collate_load_locale (struct __locale_t *, const char *, void *, const char *); extern void __set_charset_from_locale (const char *locale, char *charset); extern char *__set_locale_from_locale_alias (const char *, char *); #endif __END_DECLS #endif /* !_SETLOCALE_H_ */ picolibc-1.7.4/newlib/libc/locale/timelocal.c000066400000000000000000000112031414576234500210640ustar00rootroot00000000000000/*- * Copyright (c) 2001 Alexey Zelkin * Copyright (c) 1997 FreeBSD Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include #include #include "setlocale.h" #define LCTIME_SIZE (sizeof(struct lc_time_T) / sizeof(char *)) const struct lc_time_T _C_time_locale = { { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }, { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }, { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }, { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }, /* X_fmt */ "%H:%M:%S", /* * x_fmt * Since the C language standard calls for * "date, using locale's date format," anything goes. * Using just numbers (as here) makes Quakers happier; * it's also compatible with SVR4. */ "%m/%d/%y", /* * c_fmt */ "%a %b %e %H:%M:%S %Y", /* am pm */ { "AM", "PM" }, /* date_fmt */ "%a %b %e %H:%M:%S %Z %Y", /* alt_month * Standalone months forms for %OB */ { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }, /* md_order * Month / day order in dates */ "md", /* ampm_fmt * To determine 12-hour clock format time (empty, if N/A) */ "%I:%M:%S %p", /* era * Era. This and the following entries are used if the alternative * date format is specified in strftime */ "", /* era_d_fmt * Era date format used with the %Ex */ "", /* era_d_t_fmt * Era date/time format (%Ec) */ "", /* era_t_fmt * Era time format (%EX) */ "", /* alt_digits * Alternate digits used if %O format prefix is specified */ "" #ifdef __HAVE_LOCALE_INFO_EXTENDED__ , "ASCII", /* codeset */ { L"Jan", L"Feb", L"Mar", L"Apr", L"May", L"Jun", L"Jul", L"Aug", L"Sep", L"Oct", L"Nov", L"Dec" }, { L"January", L"February", L"March", L"April", L"May", L"June", L"July", L"August", L"September", L"October", L"November", L"December" }, { L"Sun", L"Mon", L"Tue", L"Wed", L"Thu", L"Fri", L"Sat" }, { L"Sunday", L"Monday", L"Tuesday", L"Wednesday", L"Thursday", L"Friday", L"Saturday" }, L"%H:%M:%S", L"%m/%d/%y", L"%a %b %e %H:%M:%S %Y", { L"AM", L"PM" }, L"%a %b %e %H:%M:%S %Z %Y", L"%I:%M:%S %p", L"", L"", L"", L"", L"" #endif }; #ifdef __CYGWIN__ int __time_load_locale (struct __locale_t *locale, const char *name, void *f_wctomb, const char *charset) { int ret; struct lc_time_T ti; char *bufp = NULL; extern int __set_lc_time_from_win (const char *, const struct lc_time_T *, struct lc_time_T *, char **, void *, const char *); ret = __set_lc_time_from_win (name, &_C_time_locale, &ti, &bufp, f_wctomb, charset); /* ret == -1: error, ret == 0: C/POSIX, ret > 0: valid */ if (ret >= 0) { struct lc_time_T *tip = NULL; if (ret > 0) { tip = (struct lc_time_T *) calloc (1, sizeof *tip); if (!tip) { free (bufp); return -1; } *tip = ti; } struct __lc_cats tmp = locale->lc_cat[LC_TIME]; locale->lc_cat[LC_TIME].ptr = ret == 0 ? &_C_time_locale : tip; locale->lc_cat[LC_TIME].buf = bufp; /* If buf is not NULL, both pointers have been alloc'ed */ if (tmp.buf) { free ((void *) tmp.ptr); free (tmp.buf); } ret = 0; } return (ret); } #endif picolibc-1.7.4/newlib/libc/locale/uselocale.c000066400000000000000000000066121414576234500210770ustar00rootroot00000000000000/* Copyright (c) 1996 - 2002 FreeBSD Project Copyright (c) 1991, 1993 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 4. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>---free resources allocated for a locale object INDEX uselocale INDEX _uselocale_r SYNOPSIS #include locale_t uselocale(locale_t <[locobj]>); locale_t _uselocale_r(void *<[reent]>, locale_t <[locobj]>); DESCRIPTION The <> function shall set the current locale for the current thread to the locale represented by newloc. The value for the newloc argument shall be one of the following: 1. A value returned by the <> or <> functions 2. The special locale object descriptor LC_GLOBAL_LOCALE 3. (locale_t) <<0>> Once the <> function has been called to install a thread-local locale, the behavior of every interface using data from the current locale shall be affected for the calling thread. The current locale for other threads shall remain unchanged. If the newloc argument is (locale_t) <<0>>, the object returned is the current locale or LC_GLOBAL_LOCALE if there has been no previous call to <> for the current thread. If the newloc argument is LC_GLOBAL_LOCALE, the thread shall use the global locale determined by the <> function. RETURNS Upon successful completion, the <> function shall return the locale handle from the previous call for the current thread, or LC_GLOBAL_LOCALE if there was no such previous call. Otherwise, <> shall return (locale_t) <<0>> and set errno to indicate the error. PORTABILITY <> is POSIX-1.2008. */ #define _DEFAULT_SOURCE #include #include #include "setlocale.h" #ifndef _REENT_ONLY struct __locale_t * uselocale (struct __locale_t *newloc) { struct __locale_t *current_locale; current_locale = _locale; if (!current_locale) current_locale = LC_GLOBAL_LOCALE; if (newloc == LC_GLOBAL_LOCALE) _locale = NULL; else if (newloc) _locale = newloc; return current_locale; } #endif picolibc-1.7.4/newlib/libc/machine/000077500000000000000000000000001414576234500171175ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/aarch64/000077500000000000000000000000001414576234500203475ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/aarch64/machine/000077500000000000000000000000001414576234500217535ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/aarch64/machine/_types.h000066400000000000000000000031631414576234500234320ustar00rootroot00000000000000/* Copyright (c) 2012 ARM Ltd All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the company may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _MACHINE__TYPES_H #define _MACHINE__TYPES_H #include #define __machine_ssize_t_defined typedef long signed int _ssize_t; #endif /* _MACHINE__TYPES_H */ picolibc-1.7.4/newlib/libc/machine/aarch64/machine/fenv-fp.h000066400000000000000000000076771414576234500235060ustar00rootroot00000000000000/*- * Copyright (c) 2004-2005 David Schultz * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $FreeBSD$ */ __fenv_static __inline int feclearexcept(int __excepts) { fexcept_t __r; __mrs_fpsr(__r); __r &= ~__excepts; __msr_fpsr(__r); return (0); } __fenv_static inline int fegetexceptflag(fexcept_t *__flagp, int __excepts) { fexcept_t __r; __mrs_fpsr(__r); *__flagp = __r & __excepts; return (0); } __fenv_static inline int fesetexceptflag(const fexcept_t *__flagp, int __excepts) { fexcept_t __r; __mrs_fpsr(__r); __r &= ~__excepts; __r |= *__flagp & __excepts; __msr_fpsr(__r); return (0); } __fenv_static inline int feraiseexcept(int __excepts) { fexcept_t __r; __mrs_fpsr(__r); __r |= __excepts; __msr_fpsr(__r); return (0); } __fenv_static inline int fetestexcept(int __excepts) { fexcept_t __r; __mrs_fpsr(__r); return (__r & __excepts); } __fenv_static inline int fegetround(void) { fenv_t __r; __mrs_fpcr(__r); return ((__r >> _ROUND_SHIFT) & _ROUND_MASK); } __fenv_static inline int fesetround(int __round) { fenv_t __r; if (__round & ~_ROUND_MASK) return (-1); __mrs_fpcr(__r); __r &= ~(_ROUND_MASK << _ROUND_SHIFT); __r |= __round << _ROUND_SHIFT; __msr_fpcr(__r); return (0); } __fenv_static inline int fegetenv(fenv_t *__envp) { fenv_t __r; __mrs_fpcr(__r); *__envp = __r & _ENABLE_MASK; __mrs_fpsr(__r); *__envp |= __r & (FE_ALL_EXCEPT | (_ROUND_MASK << _ROUND_SHIFT)); return (0); } __fenv_static inline int feholdexcept(fenv_t *__envp) { fenv_t __r; __mrs_fpcr(__r); *__envp = __r & _ENABLE_MASK; __r &= ~(_ENABLE_MASK); __msr_fpcr(__r); __mrs_fpsr(__r); *__envp |= __r & (FE_ALL_EXCEPT | (_ROUND_MASK << _ROUND_SHIFT)); __r &= ~(_ENABLE_MASK); __msr_fpsr(__r); return (0); } __fenv_static inline int fesetenv(const fenv_t *__envp) { __msr_fpcr((*__envp) & _ENABLE_MASK); __msr_fpsr((*__envp) & (FE_ALL_EXCEPT | (_ROUND_MASK << _ROUND_SHIFT))); return (0); } __fenv_static inline int feupdateenv(const fenv_t *__envp) { fexcept_t __r; __mrs_fpsr(__r); fesetenv(__envp); feraiseexcept(__r & FE_ALL_EXCEPT); return (0); } __fenv_static inline int feenableexcept(int __mask) { fenv_t __old_r, __new_r; __mrs_fpcr(__old_r); __new_r = __old_r | ((__mask & FE_ALL_EXCEPT) << _FPUSW_SHIFT); __msr_fpcr(__new_r); return ((__old_r >> _FPUSW_SHIFT) & FE_ALL_EXCEPT); } __fenv_static inline int fedisableexcept(int __mask) { fenv_t __old_r, __new_r; __mrs_fpcr(__old_r); __new_r = __old_r & ~((__mask & FE_ALL_EXCEPT) << _FPUSW_SHIFT); __msr_fpcr(__new_r); return ((__old_r >> _FPUSW_SHIFT) & FE_ALL_EXCEPT); } __fenv_static inline int fegetexcept(void) { fenv_t __r; __mrs_fpcr(__r); return ((__r & _ENABLE_MASK) >> _FPUSW_SHIFT); } picolibc-1.7.4/newlib/libc/machine/aarch64/memchr-stub.c000066400000000000000000000033171414576234500227450ustar00rootroot00000000000000/* Copyright (c) 2013, Linaro Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Linaro nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) # include "../../string/memchr.c" #else /* See memchr.S */ #endif picolibc-1.7.4/newlib/libc/machine/aarch64/memchr.S000066400000000000000000000125121414576234500217470ustar00rootroot00000000000000/* * memchr - find a character in a memory zone * * Copyright (c) 2014, ARM Limited * All rights Reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the company nor the names of its contributors * may be used to endorse or promote products derived from this * software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) /* See memchr-stub.c */ #else /* Assumptions: * * ARMv8-a, AArch64 * Neon Available. */ /* Arguments and results. */ #define srcin x0 #define chrin w1 #define cntin x2 #define result x0 #define src x3 #define tmp x4 #define wtmp2 w5 #define synd x6 #define soff x9 #define cntrem x10 #define vrepchr v0 #define vdata1 v1 #define vdata2 v2 #define vhas_chr1 v3 #define vhas_chr2 v4 #define vrepmask v5 #define vend v6 /* * Core algorithm: * * For each 32-byte chunk we calculate a 64-bit syndrome value, with two bits * per byte. For each tuple, bit 0 is set if the relevant byte matched the * requested character and bit 1 is not used (faster than using a 32bit * syndrome). Since the bits in the syndrome reflect exactly the order in which * things occur in the original string, counting trailing zeros allows to * identify exactly which byte has matched. */ .macro def_fn f p2align=0 .text .p2align \p2align .global \f .type \f, %function \f: .endm def_fn memchr /* Do not dereference srcin if no bytes to compare. */ cbz cntin, .Lzero_length /* * Magic constant 0x40100401 allows us to identify which lane matches * the requested byte. */ mov wtmp2, #0x0401 movk wtmp2, #0x4010, lsl #16 dup vrepchr.16b, chrin /* Work with aligned 32-byte chunks */ bic src, srcin, #31 dup vrepmask.4s, wtmp2 ands soff, srcin, #31 and cntrem, cntin, #31 b.eq .Lloop /* * Input string is not 32-byte aligned. We calculate the syndrome * value for the aligned 32 bytes block containing the first bytes * and mask the irrelevant part. */ ld1 {vdata1.16b, vdata2.16b}, [src], #32 sub tmp, soff, #32 adds cntin, cntin, tmp cmeq vhas_chr1.16b, vdata1.16b, vrepchr.16b cmeq vhas_chr2.16b, vdata2.16b, vrepchr.16b and vhas_chr1.16b, vhas_chr1.16b, vrepmask.16b and vhas_chr2.16b, vhas_chr2.16b, vrepmask.16b addp vend.16b, vhas_chr1.16b, vhas_chr2.16b /* 256->128 */ addp vend.16b, vend.16b, vend.16b /* 128->64 */ mov synd, vend.2d[0] /* Clear the soff*2 lower bits */ lsl tmp, soff, #1 lsr synd, synd, tmp lsl synd, synd, tmp /* The first block can also be the last */ b.ls .Lmasklast /* Have we found something already? */ cbnz synd, .Ltail .Lloop: ld1 {vdata1.16b, vdata2.16b}, [src], #32 subs cntin, cntin, #32 cmeq vhas_chr1.16b, vdata1.16b, vrepchr.16b cmeq vhas_chr2.16b, vdata2.16b, vrepchr.16b /* If we're out of data we finish regardless of the result */ b.ls .Lend /* Use a fast check for the termination condition */ orr vend.16b, vhas_chr1.16b, vhas_chr2.16b addp vend.2d, vend.2d, vend.2d mov synd, vend.2d[0] /* We're not out of data, loop if we haven't found the character */ cbz synd, .Lloop .Lend: /* Termination condition found, let's calculate the syndrome value */ and vhas_chr1.16b, vhas_chr1.16b, vrepmask.16b and vhas_chr2.16b, vhas_chr2.16b, vrepmask.16b addp vend.16b, vhas_chr1.16b, vhas_chr2.16b /* 256->128 */ addp vend.16b, vend.16b, vend.16b /* 128->64 */ mov synd, vend.2d[0] /* Only do the clear for the last possible block */ b.hi .Ltail .Lmasklast: /* Clear the (32 - ((cntrem + soff) % 32)) * 2 upper bits */ add tmp, cntrem, soff and tmp, tmp, #31 sub tmp, tmp, #32 neg tmp, tmp, lsl #1 lsl synd, synd, tmp lsr synd, synd, tmp .Ltail: /* Count the trailing zeros using bit reversing */ rbit synd, synd /* Compensate the last post-increment */ sub src, src, #32 /* Check that we have found a character */ cmp synd, #0 /* And count the leading zeros */ clz synd, synd /* Compute the potential result */ add result, src, synd, lsr #1 /* Select result or NULL */ csel result, xzr, result, eq ret .Lzero_length: mov result, #0 ret .size memchr, . - memchr #endif picolibc-1.7.4/newlib/libc/machine/aarch64/memcmp-stub.c000066400000000000000000000033171414576234500227500ustar00rootroot00000000000000/* Copyright (c) 2013, Linaro Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Linaro nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) # include "../../string/memcmp.c" #else /* See memcmp.S */ #endif picolibc-1.7.4/newlib/libc/machine/aarch64/memcmp.S000066400000000000000000000134641414576234500217610ustar00rootroot00000000000000/* memcmp - compare memory Copyright (c) 2018 Linaro Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Linaro nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) 2017 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) /* See memcmp-stub.c */ #else /* Assumptions: * * ARMv8-a, AArch64, unaligned accesses. */ #define L(l) .L ## l /* Parameters and result. */ #define src1 x0 #define src2 x1 #define limit x2 #define result w0 /* Internal variables. */ #define data1 x3 #define data1w w3 #define data1h x4 #define data2 x5 #define data2w w5 #define data2h x6 #define tmp1 x7 #define tmp2 x8 .macro def_fn f p2align=0 .text .p2align \p2align .global \f .type \f, %function \f: .endm def_fn memcmp p2align=6 subs limit, limit, 8 b.lo L(less8) ldr data1, [src1], 8 ldr data2, [src2], 8 cmp data1, data2 b.ne L(return) subs limit, limit, 8 b.gt L(more16) ldr data1, [src1, limit] ldr data2, [src2, limit] b L(return) L(more16): ldr data1, [src1], 8 ldr data2, [src2], 8 cmp data1, data2 bne L(return) /* Jump directly to comparing the last 16 bytes for 32 byte (or less) strings. */ subs limit, limit, 16 b.ls L(last_bytes) /* We overlap loads between 0-32 bytes at either side of SRC1 when we try to align, so limit it only to strings larger than 128 bytes. */ cmp limit, 96 b.ls L(loop16) /* Align src1 and adjust src2 with bytes not yet done. */ and tmp1, src1, 15 add limit, limit, tmp1 sub src1, src1, tmp1 sub src2, src2, tmp1 /* Loop performing 16 bytes per iteration using aligned src1. Limit is pre-decremented by 16 and must be larger than zero. Exit if <= 16 bytes left to do or if the data is not equal. */ .p2align 4 L(loop16): ldp data1, data1h, [src1], 16 ldp data2, data2h, [src2], 16 subs limit, limit, 16 ccmp data1, data2, 0, hi ccmp data1h, data2h, 0, eq b.eq L(loop16) cmp data1, data2 bne L(return) mov data1, data1h mov data2, data2h cmp data1, data2 bne L(return) /* Compare last 1-16 bytes using unaligned access. */ L(last_bytes): add src1, src1, limit add src2, src2, limit ldp data1, data1h, [src1] ldp data2, data2h, [src2] cmp data1, data2 bne L(return) mov data1, data1h mov data2, data2h cmp data1, data2 /* Compare data bytes and set return value to 0, -1 or 1. */ L(return): #ifndef __AARCH64EB__ rev data1, data1 rev data2, data2 #endif cmp data1, data2 L(ret_eq): cset result, ne cneg result, result, lo ret .p2align 4 /* Compare up to 8 bytes. Limit is [-8..-1]. */ L(less8): adds limit, limit, 4 b.lo L(less4) ldr data1w, [src1], 4 ldr data2w, [src2], 4 cmp data1w, data2w b.ne L(return) sub limit, limit, 4 L(less4): adds limit, limit, 4 beq L(ret_eq) L(byte_loop): ldrb data1w, [src1], 1 ldrb data2w, [src2], 1 subs limit, limit, 1 ccmp data1w, data2w, 0, ne /* NZCV = 0b0000. */ b.eq L(byte_loop) sub result, data1w, data2w ret .size memcmp, . - memcmp #endif picolibc-1.7.4/newlib/libc/machine/aarch64/memcpy-stub.c000066400000000000000000000033241414576234500227620ustar00rootroot00000000000000/* Copyright (c) 2012-2013, Linaro Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Linaro nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) # include "../../string/memcpy.c" #else /* See memcpy.S */ #endif picolibc-1.7.4/newlib/libc/machine/aarch64/memcpy.S000066400000000000000000000156561414576234500220020ustar00rootroot00000000000000/* Copyright (c) 2012-2013, Linaro Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Linaro nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) 2015 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Assumptions: * * ARMv8-a, AArch64, unaligned accesses. * */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) /* See memcpy-stub.c */ #else #define dstin x0 #define src x1 #define count x2 #define dst x3 #define srcend x4 #define dstend x5 #define A_l x6 #define A_lw w6 #define A_h x7 #define A_hw w7 #define B_l x8 #define B_lw w8 #define B_h x9 #define C_l x10 #define C_h x11 #define D_l x12 #define D_h x13 #define E_l src #define E_h count #define F_l srcend #define F_h dst #define tmp1 x9 #define L(l) .L ## l .macro def_fn f p2align=0 .text .p2align \p2align .global \f .type \f, %function \f: .endm /* Copies are split into 3 main cases: small copies of up to 16 bytes, medium copies of 17..96 bytes which are fully unrolled. Large copies of more than 96 bytes align the destination and use an unrolled loop processing 64 bytes per iteration. Small and medium copies read all data before writing, allowing any kind of overlap, and memmove tailcalls memcpy for these cases as well as non-overlapping copies. */ def_fn memcpy p2align=6 prfm PLDL1KEEP, [src] add srcend, src, count add dstend, dstin, count cmp count, 16 b.ls L(copy16) cmp count, 96 b.hi L(copy_long) /* Medium copies: 17..96 bytes. */ sub tmp1, count, 1 ldp A_l, A_h, [src] tbnz tmp1, 6, L(copy96) ldp D_l, D_h, [srcend, -16] tbz tmp1, 5, 1f ldp B_l, B_h, [src, 16] ldp C_l, C_h, [srcend, -32] stp B_l, B_h, [dstin, 16] stp C_l, C_h, [dstend, -32] 1: stp A_l, A_h, [dstin] stp D_l, D_h, [dstend, -16] ret .p2align 4 /* Small copies: 0..16 bytes. */ L(copy16): cmp count, 8 b.lo 1f ldr A_l, [src] ldr A_h, [srcend, -8] str A_l, [dstin] str A_h, [dstend, -8] ret .p2align 4 1: tbz count, 2, 1f ldr A_lw, [src] ldr A_hw, [srcend, -4] str A_lw, [dstin] str A_hw, [dstend, -4] ret /* Copy 0..3 bytes. Use a branchless sequence that copies the same byte 3 times if count==1, or the 2nd byte twice if count==2. */ 1: cbz count, 2f lsr tmp1, count, 1 ldrb A_lw, [src] ldrb A_hw, [srcend, -1] ldrb B_lw, [src, tmp1] strb A_lw, [dstin] strb B_lw, [dstin, tmp1] strb A_hw, [dstend, -1] 2: ret .p2align 4 /* Copy 64..96 bytes. Copy 64 bytes from the start and 32 bytes from the end. */ L(copy96): ldp B_l, B_h, [src, 16] ldp C_l, C_h, [src, 32] ldp D_l, D_h, [src, 48] ldp E_l, E_h, [srcend, -32] ldp F_l, F_h, [srcend, -16] stp A_l, A_h, [dstin] stp B_l, B_h, [dstin, 16] stp C_l, C_h, [dstin, 32] stp D_l, D_h, [dstin, 48] stp E_l, E_h, [dstend, -32] stp F_l, F_h, [dstend, -16] ret /* Align DST to 16 byte alignment so that we don't cross cache line boundaries on both loads and stores. There are at least 96 bytes to copy, so copy 16 bytes unaligned and then align. The loop copies 64 bytes per iteration and prefetches one iteration ahead. */ .p2align 4 L(copy_long): and tmp1, dstin, 15 bic dst, dstin, 15 ldp D_l, D_h, [src] sub src, src, tmp1 add count, count, tmp1 /* Count is now 16 too large. */ ldp A_l, A_h, [src, 16] stp D_l, D_h, [dstin] ldp B_l, B_h, [src, 32] ldp C_l, C_h, [src, 48] ldp D_l, D_h, [src, 64]! subs count, count, 128 + 16 /* Test and readjust count. */ b.ls 2f 1: stp A_l, A_h, [dst, 16] ldp A_l, A_h, [src, 16] stp B_l, B_h, [dst, 32] ldp B_l, B_h, [src, 32] stp C_l, C_h, [dst, 48] ldp C_l, C_h, [src, 48] stp D_l, D_h, [dst, 64]! ldp D_l, D_h, [src, 64]! subs count, count, 64 b.hi 1b /* Write the last full set of 64 bytes. The remainder is at most 64 bytes, so it is safe to always copy 64 bytes from the end even if there is just 1 byte left. */ 2: ldp E_l, E_h, [srcend, -64] stp A_l, A_h, [dst, 16] ldp A_l, A_h, [srcend, -48] stp B_l, B_h, [dst, 32] ldp B_l, B_h, [srcend, -32] stp C_l, C_h, [dst, 48] ldp C_l, C_h, [srcend, -16] stp D_l, D_h, [dst, 64] stp E_l, E_h, [dstend, -64] stp A_l, A_h, [dstend, -48] stp B_l, B_h, [dstend, -32] stp C_l, C_h, [dstend, -16] ret .size memcpy, . - memcpy #endif picolibc-1.7.4/newlib/libc/machine/aarch64/memmove-stub.c000066400000000000000000000033211414576234500231320ustar00rootroot00000000000000/* Copyright (c) 2013, Linaro Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Linaro nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) # include "../../string/memmove.c" #else /* See memmove.S */ #endif picolibc-1.7.4/newlib/libc/machine/aarch64/memmove.S000066400000000000000000000125251414576234500221450ustar00rootroot00000000000000/* Copyright (c) 2013, Linaro Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Linaro nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) 2015 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Assumptions: * * ARMv8-a, AArch64, unaligned accesses */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) /* See memmove-stub.c */ #else .macro def_fn f p2align=0 .text .p2align \p2align .global \f .type \f, %function \f: .endm /* Parameters and result. */ #define dstin x0 #define src x1 #define count x2 #define srcend x3 #define dstend x4 #define tmp1 x5 #define A_l x6 #define A_h x7 #define B_l x8 #define B_h x9 #define C_l x10 #define C_h x11 #define D_l x12 #define D_h x13 #define E_l count #define E_h tmp1 /* All memmoves up to 96 bytes are done by memcpy as it supports overlaps. Larger backwards copies are also handled by memcpy. The only remaining case is forward large copies. The destination is aligned, and an unrolled loop processes 64 bytes per iteration. */ def_fn memmove, 6 sub tmp1, dstin, src cmp count, 96 ccmp tmp1, count, 2, hi b.hs memcpy cbz tmp1, 3f add dstend, dstin, count add srcend, src, count /* Align dstend to 16 byte alignment so that we don't cross cache line boundaries on both loads and stores. There are at least 96 bytes to copy, so copy 16 bytes unaligned and then align. The loop copies 64 bytes per iteration and prefetches one iteration ahead. */ and tmp1, dstend, 15 ldp D_l, D_h, [srcend, -16] sub srcend, srcend, tmp1 sub count, count, tmp1 ldp A_l, A_h, [srcend, -16] stp D_l, D_h, [dstend, -16] ldp B_l, B_h, [srcend, -32] ldp C_l, C_h, [srcend, -48] ldp D_l, D_h, [srcend, -64]! sub dstend, dstend, tmp1 subs count, count, 128 b.ls 2f nop 1: stp A_l, A_h, [dstend, -16] ldp A_l, A_h, [srcend, -16] stp B_l, B_h, [dstend, -32] ldp B_l, B_h, [srcend, -32] stp C_l, C_h, [dstend, -48] ldp C_l, C_h, [srcend, -48] stp D_l, D_h, [dstend, -64]! ldp D_l, D_h, [srcend, -64]! subs count, count, 64 b.hi 1b /* Write the last full set of 64 bytes. The remainder is at most 64 bytes, so it is safe to always copy 64 bytes from the start even if there is just 1 byte left. */ 2: ldp E_l, E_h, [src, 48] stp A_l, A_h, [dstend, -16] ldp A_l, A_h, [src, 32] stp B_l, B_h, [dstend, -32] ldp B_l, B_h, [src, 16] stp C_l, C_h, [dstend, -48] ldp C_l, C_h, [src] stp D_l, D_h, [dstend, -64] stp E_l, E_h, [dstin, 48] stp A_l, A_h, [dstin, 32] stp B_l, B_h, [dstin, 16] stp C_l, C_h, [dstin] 3: ret .size memmove, . - memmove #endif picolibc-1.7.4/newlib/libc/machine/aarch64/memset-stub.c000066400000000000000000000033241414576234500227620ustar00rootroot00000000000000/* Copyright (c) 2012-2013, Linaro Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Linaro nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) # include "../../string/memset.c" #else /* See memset.S */ #endif picolibc-1.7.4/newlib/libc/machine/aarch64/memset.S000066400000000000000000000152071414576234500217720ustar00rootroot00000000000000/* Copyright (c) 2012-2013, Linaro Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Linaro nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) 2015 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Assumptions: * * ARMv8-a, AArch64, unaligned accesses * */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) /* See memset-stub.c */ #else #define dstin x0 #define val x1 #define valw w1 #define count x2 #define dst x3 #define dstend x4 #define tmp1 x5 #define tmp1w w5 #define tmp2 x6 #define tmp2w w6 #define zva_len x7 #define zva_lenw w7 #define L(l) .L ## l .macro def_fn f p2align=0 .text .p2align \p2align .global \f .type \f, %function \f: .endm def_fn memset p2align=6 dup v0.16B, valw add dstend, dstin, count cmp count, 96 b.hi L(set_long) cmp count, 16 b.hs L(set_medium) mov val, v0.D[0] /* Set 0..15 bytes. */ tbz count, 3, 1f str val, [dstin] str val, [dstend, -8] ret nop 1: tbz count, 2, 2f str valw, [dstin] str valw, [dstend, -4] ret 2: cbz count, 3f strb valw, [dstin] tbz count, 1, 3f strh valw, [dstend, -2] 3: ret /* Set 17..96 bytes. */ L(set_medium): str q0, [dstin] tbnz count, 6, L(set96) str q0, [dstend, -16] tbz count, 5, 1f str q0, [dstin, 16] str q0, [dstend, -32] 1: ret .p2align 4 /* Set 64..96 bytes. Write 64 bytes from the start and 32 bytes from the end. */ L(set96): str q0, [dstin, 16] stp q0, q0, [dstin, 32] stp q0, q0, [dstend, -32] ret .p2align 3 nop L(set_long): and valw, valw, 255 bic dst, dstin, 15 str q0, [dstin] cmp count, 256 ccmp valw, 0, 0, cs b.eq L(try_zva) L(no_zva): sub count, dstend, dst /* Count is 16 too large. */ sub dst, dst, 16 /* Dst is biased by -32. */ sub count, count, 64 + 16 /* Adjust count and bias for loop. */ 1: stp q0, q0, [dst, 32] stp q0, q0, [dst, 64]! L(tail64): subs count, count, 64 b.hi 1b 2: stp q0, q0, [dstend, -64] stp q0, q0, [dstend, -32] ret .p2align 3 L(try_zva): mrs tmp1, dczid_el0 tbnz tmp1w, 4, L(no_zva) and tmp1w, tmp1w, 15 cmp tmp1w, 4 /* ZVA size is 64 bytes. */ b.ne L(zva_128) /* Write the first and last 64 byte aligned block using stp rather than using DC ZVA. This is faster on some cores. */ L(zva_64): str q0, [dst, 16] stp q0, q0, [dst, 32] bic dst, dst, 63 stp q0, q0, [dst, 64] stp q0, q0, [dst, 96] sub count, dstend, dst /* Count is now 128 too large. */ sub count, count, 128+64+64 /* Adjust count and bias for loop. */ add dst, dst, 128 nop 1: dc zva, dst add dst, dst, 64 subs count, count, 64 b.hi 1b stp q0, q0, [dst, 0] stp q0, q0, [dst, 32] stp q0, q0, [dstend, -64] stp q0, q0, [dstend, -32] ret .p2align 3 L(zva_128): cmp tmp1w, 5 /* ZVA size is 128 bytes. */ b.ne L(zva_other) str q0, [dst, 16] stp q0, q0, [dst, 32] stp q0, q0, [dst, 64] stp q0, q0, [dst, 96] bic dst, dst, 127 sub count, dstend, dst /* Count is now 128 too large. */ sub count, count, 128+128 /* Adjust count and bias for loop. */ add dst, dst, 128 1: dc zva, dst add dst, dst, 128 subs count, count, 128 b.hi 1b stp q0, q0, [dstend, -128] stp q0, q0, [dstend, -96] stp q0, q0, [dstend, -64] stp q0, q0, [dstend, -32] ret L(zva_other): mov tmp2w, 4 lsl zva_lenw, tmp2w, tmp1w add tmp1, zva_len, 64 /* Max alignment bytes written. */ cmp count, tmp1 blo L(no_zva) sub tmp2, zva_len, 1 add tmp1, dst, zva_len add dst, dst, 16 subs count, tmp1, dst /* Actual alignment bytes to write. */ bic tmp1, tmp1, tmp2 /* Aligned dc zva start address. */ beq 2f 1: stp q0, q0, [dst], 64 stp q0, q0, [dst, -32] subs count, count, 64 b.hi 1b 2: mov dst, tmp1 sub count, dstend, tmp1 /* Remaining bytes to write. */ subs count, count, zva_len b.lo 4f 3: dc zva, dst add dst, dst, zva_len subs count, count, zva_len b.hs 3b 4: add count, count, zva_len sub dst, dst, 32 /* Bias dst for tail loop. */ b L(tail64) .size memset, . - memset #endif picolibc-1.7.4/newlib/libc/machine/aarch64/meson.build000066400000000000000000000047601414576234500225200ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard, # Copyright © 2020 Anthony Anderson # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # srcs_machine = [ 'memchr-stub.c', 'memchr.S', 'memcmp-stub.c', 'memcmp.S', 'memcpy-stub.c', 'memcpy.S', 'memmove-stub.c', 'memmove.S', 'memset-stub.c', 'memset.S', 'rawmemchr-stub.c', 'rawmemchr.S', 'setjmp.S', 'stpcpy-stub.c', 'stpcpy.S', 'strchr-stub.c', 'strchr.S', 'strchrnul-stub.c', 'strchrnul.S', 'strcmp-stub.c', 'strcmp.S', 'strcpy-stub.c', 'strcpy.S', 'strlen-stub.c', 'strlen.S', 'strncmp-stub.c', 'strncmp.S', 'strnlen-stub.c', 'strnlen.S', 'strchr-stub.c', 'strchr.S' ] subdir('sys') foreach target : targets value = get_variable('target_' + target) set_variable('lib_machine' + target, static_library('machine' + target, srcs_machine, pic: false, include_directories: inc, c_args: value[1] + arg_fnobuiltin)) endforeach picolibc-1.7.4/newlib/libc/machine/aarch64/rawmemchr-stub.c000066400000000000000000000033321414576234500234540ustar00rootroot00000000000000/* Copyright (c) 2015-2016, ARM Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the company nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) # include "../../string/rawmemchr.c" #else /* See rawmemchr.S. */ #endif picolibc-1.7.4/newlib/libc/machine/aarch64/rawmemchr.S000066400000000000000000000043701414576234500224640ustar00rootroot00000000000000/* Copyright (c) 2015-2016, ARM Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the company nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Assumptions: * * ARMv8-a, AArch64, unaligned accesses * */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) /* See rawmemchr-stub.c. */ #else #define L(l) .L ## l .macro def_fn f p2align=0 .text .p2align \p2align .global \f .type \f, %function \f: .endm /* Special case rawmemchr (s, 0) as strlen, otherwise tailcall memchr. Call strlen without setting up a full frame - it preserves x14/x15. */ def_fn rawmemchr p2align=5 .cfi_startproc cbz w1, L(do_strlen) mov x2, -1 b memchr L(do_strlen): mov x15, x30 .cfi_return_column x15 mov x14, x0 bl strlen add x0, x14, x0 ret x15 .cfi_endproc .size rawmemchr, . - rawmemchr #endif picolibc-1.7.4/newlib/libc/machine/aarch64/setjmp.S000066400000000000000000000050461414576234500220020ustar00rootroot00000000000000/* Copyright (c) 2011, 2012 ARM Ltd All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the company may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define GPR_LAYOUT \ REG_PAIR (x19, x20, 0); \ REG_PAIR (x21, x22, 16); \ REG_PAIR (x23, x24, 32); \ REG_PAIR (x25, x26, 48); \ REG_PAIR (x27, x28, 64); \ REG_PAIR (x29, x30, 80); \ REG_ONE (x16, 96) #define FPR_LAYOUT \ REG_PAIR ( d8, d9, 112); \ REG_PAIR (d10, d11, 128); \ REG_PAIR (d12, d13, 144); \ REG_PAIR (d14, d15, 160); // int setjmp (jmp_buf) .global setjmp .type setjmp, %function setjmp: #ifndef __LP64__ mov w0, w0 #endif mov x16, sp #define REG_PAIR(REG1, REG2, OFFS) stp REG1, REG2, [x0, OFFS] #define REG_ONE(REG1, OFFS) str REG1, [x0, OFFS] GPR_LAYOUT FPR_LAYOUT #undef REG_PAIR #undef REG_ONE mov w0, #0 ret .size setjmp, .-setjmp // void longjmp (jmp_buf, int) __attribute__ ((noreturn)) .global longjmp .type longjmp, %function longjmp: #ifndef __LP64__ mov w0, w0 #endif #define REG_PAIR(REG1, REG2, OFFS) ldp REG1, REG2, [x0, OFFS] #define REG_ONE(REG1, OFFS) ldr REG1, [x0, OFFS] GPR_LAYOUT FPR_LAYOUT #undef REG_PAIR #undef REG_ONE mov sp, x16 cmp w1, #0 cinc w0, w1, eq // use br not ret, as ret is guaranteed to mispredict br x30 .size longjmp, .-longjmp picolibc-1.7.4/newlib/libc/machine/aarch64/stpcpy-stub.c000066400000000000000000000033161414576234500230130ustar00rootroot00000000000000/* Copyright (c) 2015, ARM Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the company nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) # include "../../string/stpcpy.c" #else /* See stpcpy.S */ #endif picolibc-1.7.4/newlib/libc/machine/aarch64/stpcpy.S000066400000000000000000000033421414576234500220170ustar00rootroot00000000000000/* stpcpy - copy a string returning pointer to end. Copyright (c) 2015 ARM Ltd. All Rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the company nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This is just a wrapper that uses strcpy code with appropriate pre-defines. */ #define BUILD_STPCPY #include "strcpy.S" picolibc-1.7.4/newlib/libc/machine/aarch64/strchr-stub.c000066400000000000000000000033161414576234500227760ustar00rootroot00000000000000/* Copyright (c) 2014, ARM Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the company nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) # include "../../string/strchr.c" #else /* See strchr.S */ #endif picolibc-1.7.4/newlib/libc/machine/aarch64/strchr.S000066400000000000000000000132551414576234500220060ustar00rootroot00000000000000/* strchr - find a character in a string Copyright (c) 2014, ARM Limited All rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the company nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) /* See strchr-stub.c */ #else /* Assumptions: * * ARMv8-a, AArch64 * Neon Available. */ /* Arguments and results. */ #define srcin x0 #define chrin w1 #define result x0 #define src x2 #define tmp1 x3 #define wtmp2 w4 #define tmp3 x5 #define vrepchr v0 #define vdata1 v1 #define vdata2 v2 #define vhas_nul1 v3 #define vhas_nul2 v4 #define vhas_chr1 v5 #define vhas_chr2 v6 #define vrepmask_0 v7 #define vrepmask_c v16 #define vend1 v17 #define vend2 v18 /* Core algorithm. For each 32-byte hunk we calculate a 64-bit syndrome value, with two bits per byte (LSB is always in bits 0 and 1, for both big and little-endian systems). For each tuple, bit 0 is set iff the relevant byte matched the requested character; bit 1 is set iff the relevant byte matched the NUL end of string (we trigger off bit0 for the special case of looking for NUL). Since the bits in the syndrome reflect exactly the order in which things occur in the original string a count_trailing_zeros() operation will identify exactly which byte is causing the termination, and why. */ /* Locals and temporaries. */ .macro def_fn f p2align=0 .text .p2align \p2align .global \f .type \f, %function \f: .endm def_fn strchr /* Magic constant 0x40100401 to allow us to identify which lane matches the requested byte. Magic constant 0x80200802 used similarly for NUL termination. */ mov wtmp2, #0x0401 movk wtmp2, #0x4010, lsl #16 dup vrepchr.16b, chrin bic src, srcin, #31 /* Work with aligned 32-byte hunks. */ dup vrepmask_c.4s, wtmp2 ands tmp1, srcin, #31 add vrepmask_0.4s, vrepmask_c.4s, vrepmask_c.4s /* equiv: lsl #1 */ b.eq .Lloop /* Input string is not 32-byte aligned. Rather than forcing the padding bytes to a safe value, we calculate the syndrome for all the bytes, but then mask off those bits of the syndrome that are related to the padding. */ ld1 {vdata1.16b, vdata2.16b}, [src], #32 neg tmp1, tmp1 cmeq vhas_nul1.16b, vdata1.16b, #0 cmeq vhas_chr1.16b, vdata1.16b, vrepchr.16b cmeq vhas_nul2.16b, vdata2.16b, #0 cmeq vhas_chr2.16b, vdata2.16b, vrepchr.16b and vhas_nul1.16b, vhas_nul1.16b, vrepmask_0.16b and vhas_nul2.16b, vhas_nul2.16b, vrepmask_0.16b and vhas_chr1.16b, vhas_chr1.16b, vrepmask_c.16b and vhas_chr2.16b, vhas_chr2.16b, vrepmask_c.16b orr vend1.16b, vhas_nul1.16b, vhas_chr1.16b orr vend2.16b, vhas_nul2.16b, vhas_chr2.16b lsl tmp1, tmp1, #1 addp vend1.16b, vend1.16b, vend2.16b // 256->128 mov tmp3, #~0 addp vend1.16b, vend1.16b, vend2.16b // 128->64 lsr tmp1, tmp3, tmp1 mov tmp3, vend1.2d[0] bic tmp1, tmp3, tmp1 // Mask padding bits. cbnz tmp1, .Ltail .Lloop: ld1 {vdata1.16b, vdata2.16b}, [src], #32 cmeq vhas_nul1.16b, vdata1.16b, #0 cmeq vhas_chr1.16b, vdata1.16b, vrepchr.16b cmeq vhas_nul2.16b, vdata2.16b, #0 cmeq vhas_chr2.16b, vdata2.16b, vrepchr.16b /* Use a fast check for the termination condition. */ orr vend1.16b, vhas_nul1.16b, vhas_chr1.16b orr vend2.16b, vhas_nul2.16b, vhas_chr2.16b orr vend1.16b, vend1.16b, vend2.16b addp vend1.2d, vend1.2d, vend1.2d mov tmp1, vend1.2d[0] cbz tmp1, .Lloop /* Termination condition found. Now need to establish exactly why we terminated. */ and vhas_nul1.16b, vhas_nul1.16b, vrepmask_0.16b and vhas_nul2.16b, vhas_nul2.16b, vrepmask_0.16b and vhas_chr1.16b, vhas_chr1.16b, vrepmask_c.16b and vhas_chr2.16b, vhas_chr2.16b, vrepmask_c.16b orr vend1.16b, vhas_nul1.16b, vhas_chr1.16b orr vend2.16b, vhas_nul2.16b, vhas_chr2.16b addp vend1.16b, vend1.16b, vend2.16b // 256->128 addp vend1.16b, vend1.16b, vend2.16b // 128->64 mov tmp1, vend1.2d[0] .Ltail: /* Count the trailing zeros, by bit reversing... */ rbit tmp1, tmp1 /* Re-bias source. */ sub src, src, #32 clz tmp1, tmp1 /* And counting the leading zeros. */ /* Tmp1 is even if the target charager was found first. Otherwise we've found the end of string and we weren't looking for NUL. */ tst tmp1, #1 add result, src, tmp1, lsr #1 csel result, result, xzr, eq ret .size strchr, . - strchr #endif picolibc-1.7.4/newlib/libc/machine/aarch64/strchrnul-stub.c000066400000000000000000000033241414576234500235140ustar00rootroot00000000000000/* Copyright (c) 2014, ARM Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the company nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) # include "../../string/strchrnul.c" #else /* See strchrnul.S */ #endif picolibc-1.7.4/newlib/libc/machine/aarch64/strchrnul.S000066400000000000000000000120131414576234500225140ustar00rootroot00000000000000/* strchrnul - find a character or nul in a string Copyright (c) 2014, ARM Limited All rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the company nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) /* See strchrnul-stub.c */ #else /* Assumptions: * * ARMv8-a, AArch64 * Neon Available. */ /* Arguments and results. */ #define srcin x0 #define chrin w1 #define result x0 #define src x2 #define tmp1 x3 #define wtmp2 w4 #define tmp3 x5 #define vrepchr v0 #define vdata1 v1 #define vdata2 v2 #define vhas_nul1 v3 #define vhas_nul2 v4 #define vhas_chr1 v5 #define vhas_chr2 v6 #define vrepmask v7 #define vend1 v16 /* Core algorithm. For each 32-byte hunk we calculate a 64-bit syndrome value, with two bits per byte (LSB is always in bits 0 and 1, for both big and little-endian systems). For each tuple, bit 0 is set iff the relevant byte matched the requested character or nul. Since the bits in the syndrome reflect exactly the order in which things occur in the original string a count_trailing_zeros() operation will identify exactly which byte is causing the termination. */ /* Locals and temporaries. */ .macro def_fn f p2align=0 .text .p2align \p2align .global \f .type \f, %function \f: .endm def_fn strchrnul /* Magic constant 0x40100401 to allow us to identify which lane matches the termination condition. */ mov wtmp2, #0x0401 movk wtmp2, #0x4010, lsl #16 dup vrepchr.16b, chrin bic src, srcin, #31 /* Work with aligned 32-byte hunks. */ dup vrepmask.4s, wtmp2 ands tmp1, srcin, #31 b.eq .Lloop /* Input string is not 32-byte aligned. Rather than forcing the padding bytes to a safe value, we calculate the syndrome for all the bytes, but then mask off those bits of the syndrome that are related to the padding. */ ld1 {vdata1.16b, vdata2.16b}, [src], #32 neg tmp1, tmp1 cmeq vhas_nul1.16b, vdata1.16b, #0 cmeq vhas_chr1.16b, vdata1.16b, vrepchr.16b cmeq vhas_nul2.16b, vdata2.16b, #0 cmeq vhas_chr2.16b, vdata2.16b, vrepchr.16b orr vhas_chr1.16b, vhas_chr1.16b, vhas_nul1.16b orr vhas_chr2.16b, vhas_chr2.16b, vhas_nul2.16b and vhas_chr1.16b, vhas_chr1.16b, vrepmask.16b and vhas_chr2.16b, vhas_chr2.16b, vrepmask.16b lsl tmp1, tmp1, #1 addp vend1.16b, vhas_chr1.16b, vhas_chr2.16b // 256->128 mov tmp3, #~0 addp vend1.16b, vend1.16b, vend1.16b // 128->64 lsr tmp1, tmp3, tmp1 mov tmp3, vend1.2d[0] bic tmp1, tmp3, tmp1 // Mask padding bits. cbnz tmp1, .Ltail .Lloop: ld1 {vdata1.16b, vdata2.16b}, [src], #32 cmeq vhas_nul1.16b, vdata1.16b, #0 cmeq vhas_chr1.16b, vdata1.16b, vrepchr.16b cmeq vhas_nul2.16b, vdata2.16b, #0 cmeq vhas_chr2.16b, vdata2.16b, vrepchr.16b /* Use a fast check for the termination condition. */ orr vhas_chr1.16b, vhas_nul1.16b, vhas_chr1.16b orr vhas_chr2.16b, vhas_nul2.16b, vhas_chr2.16b orr vend1.16b, vhas_chr1.16b, vhas_chr2.16b addp vend1.2d, vend1.2d, vend1.2d mov tmp1, vend1.2d[0] cbz tmp1, .Lloop /* Termination condition found. Now need to establish exactly why we terminated. */ and vhas_chr1.16b, vhas_chr1.16b, vrepmask.16b and vhas_chr2.16b, vhas_chr2.16b, vrepmask.16b addp vend1.16b, vhas_chr1.16b, vhas_chr2.16b // 256->128 addp vend1.16b, vend1.16b, vend1.16b // 128->64 mov tmp1, vend1.2d[0] .Ltail: /* Count the trailing zeros, by bit reversing... */ rbit tmp1, tmp1 /* Re-bias source. */ sub src, src, #32 clz tmp1, tmp1 /* ... and counting the leading zeros. */ /* tmp1 is twice the offset into the fragment. */ add result, src, tmp1, lsr #1 ret .size strchrnul, . - strchrnul #endif picolibc-1.7.4/newlib/libc/machine/aarch64/strcmp-stub.c000066400000000000000000000033241414576234500230000ustar00rootroot00000000000000/* Copyright (c) 2012-2013, Linaro Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Linaro nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) # include "../../string/strcmp.c" #else /* See strcmp.S */ #endif picolibc-1.7.4/newlib/libc/machine/aarch64/strcmp.S000066400000000000000000000145271414576234500220140ustar00rootroot00000000000000/* Copyright (c) 2012-2018, Linaro Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Linaro nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Assumptions: * * ARMv8-a, AArch64 */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) /* See strcmp-stub.c */ #else .macro def_fn f p2align=0 .text .p2align \p2align .global \f .type \f, %function \f: .endm #define L(label) .L ## label #define REP8_01 0x0101010101010101 #define REP8_7f 0x7f7f7f7f7f7f7f7f #define REP8_80 0x8080808080808080 /* Parameters and result. */ #define src1 x0 #define src2 x1 #define result x0 /* Internal variables. */ #define data1 x2 #define data1w w2 #define data2 x3 #define data2w w3 #define has_nul x4 #define diff x5 #define syndrome x6 #define tmp1 x7 #define tmp2 x8 #define tmp3 x9 #define zeroones x10 #define pos x11 /* Start of performance-critical section -- one 64B cache line. */ def_fn strcmp p2align=6 eor tmp1, src1, src2 mov zeroones, #REP8_01 tst tmp1, #7 b.ne L(misaligned8) ands tmp1, src1, #7 b.ne L(mutual_align) /* NUL detection works on the principle that (X - 1) & (~X) & 0x80 (=> (X - 1) & ~(X | 0x7f)) is non-zero iff a byte is zero, and can be done in parallel across the entire word. */ L(loop_aligned): ldr data1, [src1], #8 ldr data2, [src2], #8 L(start_realigned): sub tmp1, data1, zeroones orr tmp2, data1, #REP8_7f eor diff, data1, data2 /* Non-zero if differences found. */ bic has_nul, tmp1, tmp2 /* Non-zero if NUL terminator. */ orr syndrome, diff, has_nul cbz syndrome, L(loop_aligned) /* End of performance-critical section -- one 64B cache line. */ L(end): #ifndef __AARCH64EB__ rev syndrome, syndrome rev data1, data1 /* The MS-non-zero bit of the syndrome marks either the first bit that is different, or the top bit of the first zero byte. Shifting left now will bring the critical information into the top bits. */ clz pos, syndrome rev data2, data2 lsl data1, data1, pos lsl data2, data2, pos /* But we need to zero-extend (char is unsigned) the value and then perform a signed 32-bit subtraction. */ lsr data1, data1, #56 sub result, data1, data2, lsr #56 ret #else /* For big-endian we cannot use the trick with the syndrome value as carry-propagation can corrupt the upper bits if the trailing bytes in the string contain 0x01. */ /* However, if there is no NUL byte in the dword, we can generate the result directly. We can't just subtract the bytes as the MSB might be significant. */ cbnz has_nul, 1f cmp data1, data2 cset result, ne cneg result, result, lo ret 1: /* Re-compute the NUL-byte detection, using a byte-reversed value. */ rev tmp3, data1 sub tmp1, tmp3, zeroones orr tmp2, tmp3, #REP8_7f bic has_nul, tmp1, tmp2 rev has_nul, has_nul orr syndrome, diff, has_nul clz pos, syndrome /* The MS-non-zero bit of the syndrome marks either the first bit that is different, or the top bit of the first zero byte. Shifting left now will bring the critical information into the top bits. */ lsl data1, data1, pos lsl data2, data2, pos /* But we need to zero-extend (char is unsigned) the value and then perform a signed 32-bit subtraction. */ lsr data1, data1, #56 sub result, data1, data2, lsr #56 ret #endif L(mutual_align): /* Sources are mutually aligned, but are not currently at an alignment boundary. Round down the addresses and then mask off the bytes that preceed the start point. */ bic src1, src1, #7 bic src2, src2, #7 lsl tmp1, tmp1, #3 /* Bytes beyond alignment -> bits. */ ldr data1, [src1], #8 neg tmp1, tmp1 /* Bits to alignment -64. */ ldr data2, [src2], #8 mov tmp2, #~0 #ifdef __AARCH64EB__ /* Big-endian. Early bytes are at MSB. */ lsl tmp2, tmp2, tmp1 /* Shift (tmp1 & 63). */ #else /* Little-endian. Early bytes are at LSB. */ lsr tmp2, tmp2, tmp1 /* Shift (tmp1 & 63). */ #endif orr data1, data1, tmp2 orr data2, data2, tmp2 b L(start_realigned) L(misaligned8): /* Align SRC1 to 8 bytes and then compare 8 bytes at a time, always checking to make sure that we don't access beyond page boundary in SRC2. */ tst src1, #7 b.eq L(loop_misaligned) L(do_misaligned): ldrb data1w, [src1], #1 ldrb data2w, [src2], #1 cmp data1w, #1 ccmp data1w, data2w, #0, cs /* NZCV = 0b0000. */ b.ne L(done) tst src1, #7 b.ne L(do_misaligned) L(loop_misaligned): /* Test if we are within the last dword of the end of a 4K page. If yes then jump back to the misaligned loop to copy a byte at a time. */ and tmp1, src2, #0xff8 eor tmp1, tmp1, #0xff8 cbz tmp1, L(do_misaligned) ldr data1, [src1], #8 ldr data2, [src2], #8 sub tmp1, data1, zeroones orr tmp2, data1, #REP8_7f eor diff, data1, data2 /* Non-zero if differences found. */ bic has_nul, tmp1, tmp2 /* Non-zero if NUL terminator. */ orr syndrome, diff, has_nul cbz syndrome, L(loop_misaligned) b L(end) L(done): sub result, data1, data2 ret .size strcmp, .-strcmp #endif picolibc-1.7.4/newlib/libc/machine/aarch64/strcpy-stub.c000066400000000000000000000033161414576234500230150ustar00rootroot00000000000000/* Copyright (c) 2014, ARM Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the company nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) # include "../../string/strcpy.c" #else /* See strcpy.S */ #endif picolibc-1.7.4/newlib/libc/machine/aarch64/strcpy.S000066400000000000000000000244411414576234500220240ustar00rootroot00000000000000/* strcpy/stpcpy - copy a string returning pointer to start/end. Copyright (c) 2013, 2014, 2015 ARM Ltd. All Rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the company nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) /* See strchr-stub.c */ #else /* Assumptions: * * ARMv8-a, AArch64, unaligned accesses, min page size 4k. */ /* To build as stpcpy, define BUILD_STPCPY before compiling this file. To test the page crossing code path more thoroughly, compile with -DSTRCPY_TEST_PAGE_CROSS - this will force all copies through the slower entry path. This option is not intended for production use. */ /* Arguments and results. */ #define dstin x0 #define srcin x1 /* Locals and temporaries. */ #define src x2 #define dst x3 #define data1 x4 #define data1w w4 #define data2 x5 #define data2w w5 #define has_nul1 x6 #define has_nul2 x7 #define tmp1 x8 #define tmp2 x9 #define tmp3 x10 #define tmp4 x11 #define zeroones x12 #define data1a x13 #define data2a x14 #define pos x15 #define len x16 #define to_align x17 #ifdef BUILD_STPCPY #define STRCPY stpcpy #else #define STRCPY strcpy #endif .macro def_fn f p2align=0 .text .p2align \p2align .global \f .type \f, %function \f: .endm /* NUL detection works on the principle that (X - 1) & (~X) & 0x80 (=> (X - 1) & ~(X | 0x7f)) is non-zero iff a byte is zero, and can be done in parallel across the entire word. */ #define REP8_01 0x0101010101010101 #define REP8_7f 0x7f7f7f7f7f7f7f7f #define REP8_80 0x8080808080808080 /* AArch64 systems have a minimum page size of 4k. We can do a quick page size check for crossing this boundary on entry and if we do not, then we can short-circuit much of the entry code. We expect early page-crossing strings to be rare (probability of 16/MIN_PAGE_SIZE ~= 0.4%), so the branch should be quite predictable, even with random strings. We don't bother checking for larger page sizes, the cost of setting up the correct page size is just not worth the extra gain from a small reduction in the cases taking the slow path. Note that we only care about whether the first fetch, which may be misaligned, crosses a page boundary - after that we move to aligned fetches for the remainder of the string. */ #ifdef STRCPY_TEST_PAGE_CROSS /* Make everything that isn't Qword aligned look like a page cross. */ #define MIN_PAGE_P2 4 #else #define MIN_PAGE_P2 12 #endif #define MIN_PAGE_SIZE (1 << MIN_PAGE_P2) def_fn STRCPY p2align=6 /* For moderately short strings, the fastest way to do the copy is to calculate the length of the string in the same way as strlen, then essentially do a memcpy of the result. This avoids the need for multiple byte copies and further means that by the time we reach the bulk copy loop we know we can always use DWord accesses. We expect strcpy to rarely be called repeatedly with the same source string, so branch prediction is likely to always be difficult - we mitigate against this by preferring conditional select operations over branches whenever this is feasible. */ and tmp2, srcin, #(MIN_PAGE_SIZE - 1) mov zeroones, #REP8_01 and to_align, srcin, #15 cmp tmp2, #(MIN_PAGE_SIZE - 16) neg tmp1, to_align /* The first fetch will straddle a (possible) page boundary iff srcin + 15 causes bit[MIN_PAGE_P2] to change value. A 16-byte aligned string will never fail the page align check, so will always take the fast path. */ b.gt .Lpage_cross .Lpage_cross_ok: ldp data1, data2, [srcin] #ifdef __AARCH64EB__ /* Because we expect the end to be found within 16 characters (profiling shows this is the most common case), it's worth swapping the bytes now to save having to recalculate the termination syndrome later. We preserve data1 and data2 so that we can re-use the values later on. */ rev tmp2, data1 sub tmp1, tmp2, zeroones orr tmp2, tmp2, #REP8_7f bics has_nul1, tmp1, tmp2 b.ne .Lfp_le8 rev tmp4, data2 sub tmp3, tmp4, zeroones orr tmp4, tmp4, #REP8_7f #else sub tmp1, data1, zeroones orr tmp2, data1, #REP8_7f bics has_nul1, tmp1, tmp2 b.ne .Lfp_le8 sub tmp3, data2, zeroones orr tmp4, data2, #REP8_7f #endif bics has_nul2, tmp3, tmp4 b.eq .Lbulk_entry /* The string is short (<=16 bytes). We don't know exactly how short though, yet. Work out the exact length so that we can quickly select the optimal copy strategy. */ .Lfp_gt8: rev has_nul2, has_nul2 clz pos, has_nul2 mov tmp2, #56 add dst, dstin, pos, lsr #3 /* Bits to bytes. */ sub pos, tmp2, pos #ifdef __AARCH64EB__ lsr data2, data2, pos #else lsl data2, data2, pos #endif str data2, [dst, #1] str data1, [dstin] #ifdef BUILD_STPCPY add dstin, dst, #8 #endif ret .Lfp_le8: rev has_nul1, has_nul1 clz pos, has_nul1 add dst, dstin, pos, lsr #3 /* Bits to bytes. */ subs tmp2, pos, #24 /* Pos in bits. */ b.lt .Lfp_lt4 #ifdef __AARCH64EB__ mov tmp2, #56 sub pos, tmp2, pos lsr data2, data1, pos lsr data1, data1, #32 #else lsr data2, data1, tmp2 #endif /* 4->7 bytes to copy. */ str data2w, [dst, #-3] str data1w, [dstin] #ifdef BUILD_STPCPY mov dstin, dst #endif ret .Lfp_lt4: cbz pos, .Lfp_lt2 /* 2->3 bytes to copy. */ #ifdef __AARCH64EB__ lsr data1, data1, #48 #endif strh data1w, [dstin] /* Fall-through, one byte (max) to go. */ .Lfp_lt2: /* Null-terminated string. Last character must be zero! */ strb wzr, [dst] #ifdef BUILD_STPCPY mov dstin, dst #endif ret .p2align 6 /* Aligning here ensures that the entry code and main loop all lies within one 64-byte cache line. */ .Lbulk_entry: sub to_align, to_align, #16 stp data1, data2, [dstin] sub src, srcin, to_align sub dst, dstin, to_align b .Lentry_no_page_cross /* The inner loop deals with two Dwords at a time. This has a slightly higher start-up cost, but we should win quite quickly, especially on cores with a high number of issue slots per cycle, as we get much better parallelism out of the operations. */ .Lmain_loop: stp data1, data2, [dst], #16 .Lentry_no_page_cross: ldp data1, data2, [src], #16 sub tmp1, data1, zeroones orr tmp2, data1, #REP8_7f sub tmp3, data2, zeroones orr tmp4, data2, #REP8_7f bic has_nul1, tmp1, tmp2 bics has_nul2, tmp3, tmp4 ccmp has_nul1, #0, #0, eq /* NZCV = 0000 */ b.eq .Lmain_loop /* Since we know we are copying at least 16 bytes, the fastest way to deal with the tail is to determine the location of the trailing NUL, then (re)copy the 16 bytes leading up to that. */ cmp has_nul1, #0 #ifdef __AARCH64EB__ /* For big-endian, carry propagation (if the final byte in the string is 0x01) means we cannot use has_nul directly. The easiest way to get the correct byte is to byte-swap the data and calculate the syndrome a second time. */ csel data1, data1, data2, ne rev data1, data1 sub tmp1, data1, zeroones orr tmp2, data1, #REP8_7f bic has_nul1, tmp1, tmp2 #else csel has_nul1, has_nul1, has_nul2, ne #endif rev has_nul1, has_nul1 clz pos, has_nul1 add tmp1, pos, #72 add pos, pos, #8 csel pos, pos, tmp1, ne add src, src, pos, lsr #3 add dst, dst, pos, lsr #3 ldp data1, data2, [src, #-32] stp data1, data2, [dst, #-16] #ifdef BUILD_STPCPY sub dstin, dst, #1 #endif ret .Lpage_cross: bic src, srcin, #15 /* Start by loading two words at [srcin & ~15], then forcing the bytes that precede srcin to 0xff. This means they never look like termination bytes. */ ldp data1, data2, [src] lsl tmp1, tmp1, #3 /* Bytes beyond alignment -> bits. */ tst to_align, #7 csetm tmp2, ne #ifdef __AARCH64EB__ lsl tmp2, tmp2, tmp1 /* Shift (tmp1 & 63). */ #else lsr tmp2, tmp2, tmp1 /* Shift (tmp1 & 63). */ #endif orr data1, data1, tmp2 orr data2a, data2, tmp2 cmp to_align, #8 csinv data1, data1, xzr, lt csel data2, data2, data2a, lt sub tmp1, data1, zeroones orr tmp2, data1, #REP8_7f sub tmp3, data2, zeroones orr tmp4, data2, #REP8_7f bic has_nul1, tmp1, tmp2 bics has_nul2, tmp3, tmp4 ccmp has_nul1, #0, #0, eq /* NZCV = 0000 */ b.eq .Lpage_cross_ok /* We now need to make data1 and data2 look like they've been loaded directly from srcin. Do a rotate on the 128-bit value. */ lsl tmp1, to_align, #3 /* Bytes->bits. */ neg tmp2, to_align, lsl #3 #ifdef __AARCH64EB__ lsl data1a, data1, tmp1 lsr tmp4, data2, tmp2 lsl data2, data2, tmp1 orr tmp4, tmp4, data1a cmp to_align, #8 csel data1, tmp4, data2, lt rev tmp2, data1 rev tmp4, data2 sub tmp1, tmp2, zeroones orr tmp2, tmp2, #REP8_7f sub tmp3, tmp4, zeroones orr tmp4, tmp4, #REP8_7f #else lsr data1a, data1, tmp1 lsl tmp4, data2, tmp2 lsr data2, data2, tmp1 orr tmp4, tmp4, data1a cmp to_align, #8 csel data1, tmp4, data2, lt sub tmp1, data1, zeroones orr tmp2, data1, #REP8_7f sub tmp3, data2, zeroones orr tmp4, data2, #REP8_7f #endif bic has_nul1, tmp1, tmp2 cbnz has_nul1, .Lfp_le8 bic has_nul2, tmp3, tmp4 b .Lfp_gt8 .size STRCPY, . - STRCPY #endif picolibc-1.7.4/newlib/libc/machine/aarch64/strlen-stub.c000066400000000000000000000033171414576234500230010ustar00rootroot00000000000000/* Copyright (c) 2013, Linaro Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Linaro nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) # include "../../string/strlen.c" #else /* See strlen.S */ #endif picolibc-1.7.4/newlib/libc/machine/aarch64/strlen.S000066400000000000000000000171151414576234500220070ustar00rootroot00000000000000/* Copyright (c) 2013-2015, Linaro Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Linaro nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) /* See strlen-stub.c */ #else /* Assumptions: * * ARMv8-a, AArch64, unaligned accesses, min page size 4k. */ /* To test the page crossing code path more thoroughly, compile with -DTEST_PAGE_CROSS - this will force all calls through the slower entry path. This option is not intended for production use. */ /* Arguments and results. */ #define srcin x0 #define len x0 /* Locals and temporaries. */ #define src x1 #define data1 x2 #define data2 x3 #define has_nul1 x4 #define has_nul2 x5 #define tmp1 x4 #define tmp2 x5 #define tmp3 x6 #define tmp4 x7 #define zeroones x8 #define L(l) .L ## l .macro def_fn f p2align=0 .text .p2align \p2align .global \f .type \f, %function \f: .endm /* NUL detection works on the principle that (X - 1) & (~X) & 0x80 (=> (X - 1) & ~(X | 0x7f)) is non-zero iff a byte is zero, and can be done in parallel across the entire word. A faster check (X - 1) & 0x80 is zero for non-NUL ASCII characters, but gives false hits for characters 129..255. */ #define REP8_01 0x0101010101010101 #define REP8_7f 0x7f7f7f7f7f7f7f7f #define REP8_80 0x8080808080808080 #ifdef TEST_PAGE_CROSS # define MIN_PAGE_SIZE 15 #else # define MIN_PAGE_SIZE 4096 #endif /* Since strings are short on average, we check the first 16 bytes of the string for a NUL character. In order to do an unaligned ldp safely we have to do a page cross check first. If there is a NUL byte we calculate the length from the 2 8-byte words using conditional select to reduce branch mispredictions (it is unlikely strlen will be repeatedly called on strings with the same length). If the string is longer than 16 bytes, we align src so don't need further page cross checks, and process 32 bytes per iteration using the fast NUL check. If we encounter non-ASCII characters, fallback to a second loop using the full NUL check. If the page cross check fails, we read 16 bytes from an aligned address, remove any characters before the string, and continue in the main loop using aligned loads. Since strings crossing a page in the first 16 bytes are rare (probability of 16/MIN_PAGE_SIZE ~= 0.4%), this case does not need to be optimized. AArch64 systems have a minimum page size of 4k. We don't bother checking for larger page sizes - the cost of setting up the correct page size is just not worth the extra gain from a small reduction in the cases taking the slow path. Note that we only care about whether the first fetch, which may be misaligned, crosses a page boundary. */ def_fn strlen p2align=6 and tmp1, srcin, MIN_PAGE_SIZE - 1 mov zeroones, REP8_01 cmp tmp1, MIN_PAGE_SIZE - 16 b.gt L(page_cross) ldp data1, data2, [srcin] #ifdef __AARCH64EB__ /* For big-endian, carry propagation (if the final byte in the string is 0x01) means we cannot use has_nul1/2 directly. Since we expect strings to be small and early-exit, byte-swap the data now so has_null1/2 will be correct. */ rev data1, data1 rev data2, data2 #endif sub tmp1, data1, zeroones orr tmp2, data1, REP8_7f sub tmp3, data2, zeroones orr tmp4, data2, REP8_7f bics has_nul1, tmp1, tmp2 bic has_nul2, tmp3, tmp4 ccmp has_nul2, 0, 0, eq beq L(main_loop_entry) /* Enter with C = has_nul1 == 0. */ csel has_nul1, has_nul1, has_nul2, cc mov len, 8 rev has_nul1, has_nul1 clz tmp1, has_nul1 csel len, xzr, len, cc add len, len, tmp1, lsr 3 ret /* The inner loop processes 32 bytes per iteration and uses the fast NUL check. If we encounter non-ASCII characters, use a second loop with the accurate NUL check. */ .p2align 4 L(main_loop_entry): bic src, srcin, 15 sub src, src, 16 L(main_loop): ldp data1, data2, [src, 32]! .Lpage_cross_entry: sub tmp1, data1, zeroones sub tmp3, data2, zeroones orr tmp2, tmp1, tmp3 tst tmp2, zeroones, lsl 7 bne 1f ldp data1, data2, [src, 16] sub tmp1, data1, zeroones sub tmp3, data2, zeroones orr tmp2, tmp1, tmp3 tst tmp2, zeroones, lsl 7 beq L(main_loop) add src, src, 16 1: /* The fast check failed, so do the slower, accurate NUL check. */ orr tmp2, data1, REP8_7f orr tmp4, data2, REP8_7f bics has_nul1, tmp1, tmp2 bic has_nul2, tmp3, tmp4 ccmp has_nul2, 0, 0, eq beq L(nonascii_loop) /* Enter with C = has_nul1 == 0. */ L(tail): #ifdef __AARCH64EB__ /* For big-endian, carry propagation (if the final byte in the string is 0x01) means we cannot use has_nul1/2 directly. The easiest way to get the correct byte is to byte-swap the data and calculate the syndrome a second time. */ csel data1, data1, data2, cc rev data1, data1 sub tmp1, data1, zeroones orr tmp2, data1, REP8_7f bic has_nul1, tmp1, tmp2 #else csel has_nul1, has_nul1, has_nul2, cc #endif sub len, src, srcin rev has_nul1, has_nul1 add tmp2, len, 8 clz tmp1, has_nul1 csel len, len, tmp2, cc add len, len, tmp1, lsr 3 ret L(nonascii_loop): ldp data1, data2, [src, 16]! sub tmp1, data1, zeroones orr tmp2, data1, REP8_7f sub tmp3, data2, zeroones orr tmp4, data2, REP8_7f bics has_nul1, tmp1, tmp2 bic has_nul2, tmp3, tmp4 ccmp has_nul2, 0, 0, eq bne L(tail) ldp data1, data2, [src, 16]! sub tmp1, data1, zeroones orr tmp2, data1, REP8_7f sub tmp3, data2, zeroones orr tmp4, data2, REP8_7f bics has_nul1, tmp1, tmp2 bic has_nul2, tmp3, tmp4 ccmp has_nul2, 0, 0, eq beq L(nonascii_loop) b L(tail) /* Load 16 bytes from [srcin & ~15] and force the bytes that precede srcin to 0x7f, so we ignore any NUL bytes before the string. Then continue in the aligned loop. */ L(page_cross): bic src, srcin, 15 ldp data1, data2, [src] lsl tmp1, srcin, 3 mov tmp4, -1 #ifdef __AARCH64EB__ /* Big-endian. Early bytes are at MSB. */ lsr tmp1, tmp4, tmp1 /* Shift (tmp1 & 63). */ #else /* Little-endian. Early bytes are at LSB. */ lsl tmp1, tmp4, tmp1 /* Shift (tmp1 & 63). */ #endif orr tmp1, tmp1, REP8_80 orn data1, data1, tmp1 orn tmp2, data2, tmp1 tst srcin, 8 csel data1, data1, tmp4, eq csel data2, data2, tmp2, eq b L(page_cross_entry) .size strlen, . - strlen #endif picolibc-1.7.4/newlib/libc/machine/aarch64/strncmp-stub.c000066400000000000000000000033211414576234500231530ustar00rootroot00000000000000/* Copyright (c) 2013, Linaro Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Linaro nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) # include "../../string/strncmp.c" #else /* See strncmp.S */ #endif picolibc-1.7.4/newlib/libc/machine/aarch64/strncmp.S000066400000000000000000000211311414576234500221570ustar00rootroot00000000000000/* Copyright (c) 2013, 2018, Linaro Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Linaro nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) /* See strcmp-stub.c */ #else /* Assumptions: * * ARMv8-a, AArch64 */ .macro def_fn f p2align=0 .text .p2align \p2align .global \f .type \f, %function \f: .endm #define REP8_01 0x0101010101010101 #define REP8_7f 0x7f7f7f7f7f7f7f7f #define REP8_80 0x8080808080808080 /* Parameters and result. */ #define src1 x0 #define src2 x1 #define limit x2 #define result x0 /* Internal variables. */ #define data1 x3 #define data1w w3 #define data2 x4 #define data2w w4 #define has_nul x5 #define diff x6 #define syndrome x7 #define tmp1 x8 #define tmp2 x9 #define tmp3 x10 #define zeroones x11 #define pos x12 #define limit_wd x13 #define mask x14 #define endloop x15 #define count mask .text .p2align 6 .rep 7 nop /* Pad so that the loop below fits a cache line. */ .endr def_fn strncmp cbz limit, .Lret0 eor tmp1, src1, src2 mov zeroones, #REP8_01 tst tmp1, #7 and count, src1, #7 b.ne .Lmisaligned8 cbnz count, .Lmutual_align /* Calculate the number of full and partial words -1. */ sub limit_wd, limit, #1 /* limit != 0, so no underflow. */ lsr limit_wd, limit_wd, #3 /* Convert to Dwords. */ /* NUL detection works on the principle that (X - 1) & (~X) & 0x80 (=> (X - 1) & ~(X | 0x7f)) is non-zero iff a byte is zero, and can be done in parallel across the entire word. */ /* Start of performance-critical section -- one 64B cache line. */ .Lloop_aligned: ldr data1, [src1], #8 ldr data2, [src2], #8 .Lstart_realigned: subs limit_wd, limit_wd, #1 sub tmp1, data1, zeroones orr tmp2, data1, #REP8_7f eor diff, data1, data2 /* Non-zero if differences found. */ csinv endloop, diff, xzr, pl /* Last Dword or differences. */ bics has_nul, tmp1, tmp2 /* Non-zero if NUL terminator. */ ccmp endloop, #0, #0, eq b.eq .Lloop_aligned /* End of performance-critical section -- one 64B cache line. */ /* Not reached the limit, must have found the end or a diff. */ tbz limit_wd, #63, .Lnot_limit /* Limit % 8 == 0 => all bytes significant. */ ands limit, limit, #7 b.eq .Lnot_limit lsl limit, limit, #3 /* Bits -> bytes. */ mov mask, #~0 #ifdef __AARCH64EB__ lsr mask, mask, limit #else lsl mask, mask, limit #endif bic data1, data1, mask bic data2, data2, mask /* Make sure that the NUL byte is marked in the syndrome. */ orr has_nul, has_nul, mask .Lnot_limit: orr syndrome, diff, has_nul #ifndef __AARCH64EB__ rev syndrome, syndrome rev data1, data1 /* The MS-non-zero bit of the syndrome marks either the first bit that is different, or the top bit of the first zero byte. Shifting left now will bring the critical information into the top bits. */ clz pos, syndrome rev data2, data2 lsl data1, data1, pos lsl data2, data2, pos /* But we need to zero-extend (char is unsigned) the value and then perform a signed 32-bit subtraction. */ lsr data1, data1, #56 sub result, data1, data2, lsr #56 ret #else /* For big-endian we cannot use the trick with the syndrome value as carry-propagation can corrupt the upper bits if the trailing bytes in the string contain 0x01. */ /* However, if there is no NUL byte in the dword, we can generate the result directly. We can't just subtract the bytes as the MSB might be significant. */ cbnz has_nul, 1f cmp data1, data2 cset result, ne cneg result, result, lo ret 1: /* Re-compute the NUL-byte detection, using a byte-reversed value. */ rev tmp3, data1 sub tmp1, tmp3, zeroones orr tmp2, tmp3, #REP8_7f bic has_nul, tmp1, tmp2 rev has_nul, has_nul orr syndrome, diff, has_nul clz pos, syndrome /* The MS-non-zero bit of the syndrome marks either the first bit that is different, or the top bit of the first zero byte. Shifting left now will bring the critical information into the top bits. */ lsl data1, data1, pos lsl data2, data2, pos /* But we need to zero-extend (char is unsigned) the value and then perform a signed 32-bit subtraction. */ lsr data1, data1, #56 sub result, data1, data2, lsr #56 ret #endif .Lmutual_align: /* Sources are mutually aligned, but are not currently at an alignment boundary. Round down the addresses and then mask off the bytes that precede the start point. We also need to adjust the limit calculations, but without overflowing if the limit is near ULONG_MAX. */ bic src1, src1, #7 bic src2, src2, #7 ldr data1, [src1], #8 neg tmp3, count, lsl #3 /* 64 - bits(bytes beyond align). */ ldr data2, [src2], #8 mov tmp2, #~0 sub limit_wd, limit, #1 /* limit != 0, so no underflow. */ #ifdef __AARCH64EB__ /* Big-endian. Early bytes are at MSB. */ lsl tmp2, tmp2, tmp3 /* Shift (count & 63). */ #else /* Little-endian. Early bytes are at LSB. */ lsr tmp2, tmp2, tmp3 /* Shift (count & 63). */ #endif and tmp3, limit_wd, #7 lsr limit_wd, limit_wd, #3 /* Adjust the limit. Only low 3 bits used, so overflow irrelevant. */ add limit, limit, count add tmp3, tmp3, count orr data1, data1, tmp2 orr data2, data2, tmp2 add limit_wd, limit_wd, tmp3, lsr #3 b .Lstart_realigned .p2align 6 /* Don't bother with dwords for up to 16 bytes. */ .Lmisaligned8: cmp limit, #16 b.hs .Ltry_misaligned_words .Lbyte_loop: /* Perhaps we can do better than this. */ ldrb data1w, [src1], #1 ldrb data2w, [src2], #1 subs limit, limit, #1 ccmp data1w, #1, #0, hi /* NZCV = 0b0000. */ ccmp data1w, data2w, #0, cs /* NZCV = 0b0000. */ b.eq .Lbyte_loop .Ldone: sub result, data1, data2 ret /* Align the SRC1 to a dword by doing a bytewise compare and then do the dword loop. */ .Ltry_misaligned_words: lsr limit_wd, limit, #3 cbz count, .Ldo_misaligned neg count, count and count, count, #7 sub limit, limit, count lsr limit_wd, limit, #3 .Lpage_end_loop: ldrb data1w, [src1], #1 ldrb data2w, [src2], #1 cmp data1w, #1 ccmp data1w, data2w, #0, cs /* NZCV = 0b0000. */ b.ne .Ldone subs count, count, #1 b.hi .Lpage_end_loop .Ldo_misaligned: /* Prepare ourselves for the next page crossing. Unlike the aligned loop, we fetch 1 less dword because we risk crossing bounds on SRC2. */ mov count, #8 subs limit_wd, limit_wd, #1 b.lo .Ldone_loop .Lloop_misaligned: and tmp2, src2, #0xff8 eor tmp2, tmp2, #0xff8 cbz tmp2, .Lpage_end_loop ldr data1, [src1], #8 ldr data2, [src2], #8 sub tmp1, data1, zeroones orr tmp2, data1, #REP8_7f eor diff, data1, data2 /* Non-zero if differences found. */ bics has_nul, tmp1, tmp2 /* Non-zero if NUL terminator. */ ccmp diff, #0, #0, eq b.ne .Lnot_limit subs limit_wd, limit_wd, #1 b.pl .Lloop_misaligned .Ldone_loop: /* We found a difference or a NULL before the limit was reached. */ and limit, limit, #7 cbz limit, .Lnot_limit /* Read the last word. */ sub src1, src1, 8 sub src2, src2, 8 ldr data1, [src1, limit] ldr data2, [src2, limit] sub tmp1, data1, zeroones orr tmp2, data1, #REP8_7f eor diff, data1, data2 /* Non-zero if differences found. */ bics has_nul, tmp1, tmp2 /* Non-zero if NUL terminator. */ ccmp diff, #0, #0, eq b.ne .Lnot_limit .Lret0: mov result, #0 ret .size strncmp, . - strncmp #endif picolibc-1.7.4/newlib/libc/machine/aarch64/strnlen-stub.c000066400000000000000000000033211414576234500231520ustar00rootroot00000000000000/* Copyright (c) 2013, Linaro Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Linaro nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) # include "../../string/strnlen.c" #else /* See strnlen.S */ #endif picolibc-1.7.4/newlib/libc/machine/aarch64/strnlen.S000066400000000000000000000134531414576234500221660ustar00rootroot00000000000000/* strnlen - calculate the length of a string with limit. Copyright (c) 2013, Linaro Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Linaro nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) /* See strlen-stub.c */ #else /* Assumptions: * * ARMv8-a, AArch64 */ /* Arguments and results. */ #define srcin x0 #define len x0 #define limit x1 /* Locals and temporaries. */ #define src x2 #define data1 x3 #define data2 x4 #define data2a x5 #define has_nul1 x6 #define has_nul2 x7 #define tmp1 x8 #define tmp2 x9 #define tmp3 x10 #define tmp4 x11 #define zeroones x12 #define pos x13 #define limit_wd x14 .macro def_fn f p2align=0 .text .p2align \p2align .global \f .type \f, %function \f: .endm #define REP8_01 0x0101010101010101 #define REP8_7f 0x7f7f7f7f7f7f7f7f #define REP8_80 0x8080808080808080 .text .p2align 6 .Lstart: /* Pre-pad to ensure critical loop begins an icache line. */ .rep 7 nop .endr /* Put this code here to avoid wasting more space with pre-padding. */ .Lhit_limit: mov len, limit ret def_fn strnlen cbz limit, .Lhit_limit mov zeroones, #REP8_01 bic src, srcin, #15 ands tmp1, srcin, #15 b.ne .Lmisaligned /* Calculate the number of full and partial words -1. */ sub limit_wd, limit, #1 /* Limit != 0, so no underflow. */ lsr limit_wd, limit_wd, #4 /* Convert to Qwords. */ /* NUL detection works on the principle that (X - 1) & (~X) & 0x80 (=> (X - 1) & ~(X | 0x7f)) is non-zero iff a byte is zero, and can be done in parallel across the entire word. */ /* The inner loop deals with two Dwords at a time. This has a slightly higher start-up cost, but we should win quite quickly, especially on cores with a high number of issue slots per cycle, as we get much better parallelism out of the operations. */ /* Start of critial section -- keep to one 64Byte cache line. */ .Lloop: ldp data1, data2, [src], #16 .Lrealigned: sub tmp1, data1, zeroones orr tmp2, data1, #REP8_7f sub tmp3, data2, zeroones orr tmp4, data2, #REP8_7f bic has_nul1, tmp1, tmp2 bic has_nul2, tmp3, tmp4 subs limit_wd, limit_wd, #1 orr tmp1, has_nul1, has_nul2 ccmp tmp1, #0, #0, pl /* NZCV = 0000 */ b.eq .Lloop /* End of critical section -- keep to one 64Byte cache line. */ orr tmp1, has_nul1, has_nul2 cbz tmp1, .Lhit_limit /* No null in final Qword. */ /* We know there's a null in the final Qword. The easiest thing to do now is work out the length of the string and return MIN (len, limit). */ sub len, src, srcin cbz has_nul1, .Lnul_in_data2 #ifdef __AARCH64EB__ mov data2, data1 #endif sub len, len, #8 mov has_nul2, has_nul1 .Lnul_in_data2: #ifdef __AARCH64EB__ /* For big-endian, carry propagation (if the final byte in the string is 0x01) means we cannot use has_nul directly. The easiest way to get the correct byte is to byte-swap the data and calculate the syndrome a second time. */ rev data2, data2 sub tmp1, data2, zeroones orr tmp2, data2, #REP8_7f bic has_nul2, tmp1, tmp2 #endif sub len, len, #8 rev has_nul2, has_nul2 clz pos, has_nul2 add len, len, pos, lsr #3 /* Bits to bytes. */ cmp len, limit csel len, len, limit, ls /* Return the lower value. */ ret .Lmisaligned: /* Deal with a partial first word. We're doing two things in parallel here; 1) Calculate the number of words (but avoiding overflow if limit is near ULONG_MAX) - to do this we need to work out limit + tmp1 - 1 as a 65-bit value before shifting it; 2) Load and mask the initial data words - we force the bytes before the ones we are interested in to 0xff - this ensures early bytes will not hit any zero detection. */ sub limit_wd, limit, #1 neg tmp4, tmp1 cmp tmp1, #8 and tmp3, limit_wd, #15 lsr limit_wd, limit_wd, #4 mov tmp2, #~0 ldp data1, data2, [src], #16 lsl tmp4, tmp4, #3 /* Bytes beyond alignment -> bits. */ add tmp3, tmp3, tmp1 #ifdef __AARCH64EB__ /* Big-endian. Early bytes are at MSB. */ lsl tmp2, tmp2, tmp4 /* Shift (tmp1 & 63). */ #else /* Little-endian. Early bytes are at LSB. */ lsr tmp2, tmp2, tmp4 /* Shift (tmp1 & 63). */ #endif add limit_wd, limit_wd, tmp3, lsr #4 orr data1, data1, tmp2 orr data2a, data2, tmp2 csinv data1, data1, xzr, le csel data2, data2, data2a, le b .Lrealigned .size strnlen, . - .Lstart /* Include pre-padding in size. */ #endif picolibc-1.7.4/newlib/libc/machine/aarch64/strrchr-stub.c000066400000000000000000000033201414576234500231530ustar00rootroot00000000000000/* Copyright (c) 2014, ARM Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the company nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) # include "../../string/strrchr.c" #else /* See strrchr.S */ #endif picolibc-1.7.4/newlib/libc/machine/aarch64/strrchr.S000066400000000000000000000145561414576234500221750ustar00rootroot00000000000000/* strrchr - find last instance of a character in a string Copyright (c) 2014, ARM Limited All rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the company nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) || !defined(__LP64__) /* See strchr-stub.c */ #else /* Assumptions: * * ARMv8-a, AArch64 * Neon Available. */ /* Arguments and results. */ #define srcin x0 #define chrin w1 #define result x0 #define src x2 #define tmp1 x3 #define wtmp2 w4 #define tmp3 x5 #define src_match x6 #define src_offset x7 #define const_m1 x8 #define tmp4 x9 #define nul_match x10 #define chr_match x11 #define vrepchr v0 #define vdata1 v1 #define vdata2 v2 #define vhas_nul1 v3 #define vhas_nul2 v4 #define vhas_chr1 v5 #define vhas_chr2 v6 #define vrepmask_0 v7 #define vrepmask_c v16 #define vend1 v17 #define vend2 v18 /* Core algorithm. For each 32-byte hunk we calculate a 64-bit syndrome value, with two bits per byte (LSB is always in bits 0 and 1, for both big and little-endian systems). For each tuple, bit 0 is set iff the relevant byte matched the requested character; bit 1 is set iff the relevant byte matched the NUL end of string (we trigger off bit0 for the special case of looking for NUL). Since the bits in the syndrome reflect exactly the order in which things occur in the original string a count_trailing_zeros() operation will identify exactly which byte is causing the termination, and why. */ /* Locals and temporaries. */ .macro def_fn f p2align=0 .text .p2align \p2align .global \f .type \f, %function \f: .endm def_fn strrchr /* Magic constant 0x40100401 to allow us to identify which lane matches the requested byte. Magic constant 0x80200802 used similarly for NUL termination. */ mov wtmp2, #0x0401 movk wtmp2, #0x4010, lsl #16 dup vrepchr.16b, chrin bic src, srcin, #31 /* Work with aligned 32-byte hunks. */ dup vrepmask_c.4s, wtmp2 mov src_offset, #0 ands tmp1, srcin, #31 add vrepmask_0.4s, vrepmask_c.4s, vrepmask_c.4s /* equiv: lsl #1 */ b.eq .Laligned /* Input string is not 32-byte aligned. Rather than forcing the padding bytes to a safe value, we calculate the syndrome for all the bytes, but then mask off those bits of the syndrome that are related to the padding. */ ld1 {vdata1.16b, vdata2.16b}, [src], #32 neg tmp1, tmp1 cmeq vhas_nul1.16b, vdata1.16b, #0 cmeq vhas_chr1.16b, vdata1.16b, vrepchr.16b cmeq vhas_nul2.16b, vdata2.16b, #0 cmeq vhas_chr2.16b, vdata2.16b, vrepchr.16b and vhas_nul1.16b, vhas_nul1.16b, vrepmask_0.16b and vhas_chr1.16b, vhas_chr1.16b, vrepmask_c.16b and vhas_nul2.16b, vhas_nul2.16b, vrepmask_0.16b and vhas_chr2.16b, vhas_chr2.16b, vrepmask_c.16b addp vhas_nul1.16b, vhas_nul1.16b, vhas_nul2.16b // 256->128 addp vhas_chr1.16b, vhas_chr1.16b, vhas_chr2.16b // 256->128 addp vhas_nul1.16b, vhas_nul1.16b, vhas_nul1.16b // 128->64 addp vhas_chr1.16b, vhas_chr1.16b, vhas_chr1.16b // 128->64 mov nul_match, vhas_nul1.2d[0] lsl tmp1, tmp1, #1 mov const_m1, #~0 mov chr_match, vhas_chr1.2d[0] lsr tmp3, const_m1, tmp1 bic nul_match, nul_match, tmp3 // Mask padding bits. bic chr_match, chr_match, tmp3 // Mask padding bits. cbnz nul_match, .Ltail .Lloop: cmp chr_match, #0 csel src_match, src, src_match, ne csel src_offset, chr_match, src_offset, ne .Laligned: ld1 {vdata1.16b, vdata2.16b}, [src], #32 cmeq vhas_nul1.16b, vdata1.16b, #0 cmeq vhas_chr1.16b, vdata1.16b, vrepchr.16b cmeq vhas_nul2.16b, vdata2.16b, #0 cmeq vhas_chr2.16b, vdata2.16b, vrepchr.16b addp vend1.16b, vhas_nul1.16b, vhas_nul2.16b // 256->128 and vhas_chr1.16b, vhas_chr1.16b, vrepmask_c.16b and vhas_chr2.16b, vhas_chr2.16b, vrepmask_c.16b addp vhas_chr1.16b, vhas_chr1.16b, vhas_chr2.16b // 256->128 addp vend1.16b, vend1.16b, vend1.16b // 128->64 addp vhas_chr1.16b, vhas_chr1.16b, vhas_chr1.16b // 128->64 mov nul_match, vend1.2d[0] mov chr_match, vhas_chr1.2d[0] cbz nul_match, .Lloop and vhas_nul1.16b, vhas_nul1.16b, vrepmask_0.16b and vhas_nul2.16b, vhas_nul2.16b, vrepmask_0.16b addp vhas_nul1.16b, vhas_nul1.16b, vhas_nul2.16b addp vhas_nul1.16b, vhas_nul1.16b, vhas_nul1.16b mov nul_match, vhas_nul1.2d[0] .Ltail: /* Work out exactly where the string ends. */ sub tmp4, nul_match, #1 eor tmp4, tmp4, nul_match ands chr_match, chr_match, tmp4 /* And pick the values corresponding to the last match. */ csel src_match, src, src_match, ne csel src_offset, chr_match, src_offset, ne /* Count down from the top of the syndrome to find the last match. */ clz tmp3, src_offset /* Src_match points beyond the word containing the match, so we can simply subtract half the bit-offset into the syndrome. Because we are counting down, we need to go back one more character. */ add tmp3, tmp3, #2 sub result, src_match, tmp3, lsr #1 /* But if the syndrome shows no match was found, then return NULL. */ cmp src_offset, #0 csel result, result, xzr, ne ret .size strrchr, . - strrchr #endif picolibc-1.7.4/newlib/libc/machine/aarch64/sys/000077500000000000000000000000001414576234500211655ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/aarch64/sys/fcntl.h000066400000000000000000000004711414576234500224460ustar00rootroot00000000000000#ifndef _SYS_FCNTL_H_ #define _SYS_FCNTL_H_ #include /* We want to support O_BINARY for the open syscall. For example, the Demon debug monitor has a separate flag value for "rb" vs "r". */ #define _FBINARY 0x10000 #define O_BINARY _FBINARY #endif /* _SYS_FCNTL_H_ */ picolibc-1.7.4/newlib/libc/machine/aarch64/sys/fenv.h000066400000000000000000000051661414576234500223040ustar00rootroot00000000000000/*- * Copyright (c) 2004-2005 David Schultz * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $FreeBSD$ */ #ifndef _FENV_H_ #define _FENV_H_ #include #ifndef __fenv_static #define __fenv_static static #endif typedef __uint64_t fenv_t; typedef __uint64_t fexcept_t; /* Exception flags */ #define FE_INVALID 0x00000001 #define FE_DIVBYZERO 0x00000002 #define FE_OVERFLOW 0x00000004 #define FE_UNDERFLOW 0x00000008 #define FE_INEXACT 0x00000010 #define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | \ FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW) /* * Rounding modes * * We can't just use the hardware bit values here, because that would * make FE_UPWARD and FE_DOWNWARD negative, which is not allowed. */ #define FE_TONEAREST 0x0 #define FE_UPWARD 0x1 #define FE_DOWNWARD 0x2 #define FE_TOWARDZERO 0x3 #define _ROUND_MASK (FE_TONEAREST | FE_DOWNWARD | \ FE_UPWARD | FE_TOWARDZERO) #define _ROUND_SHIFT 22 /* We need to be able to map status flag positions to mask flag positions */ #define _FPUSW_SHIFT 8 #define _ENABLE_MASK (FE_ALL_EXCEPT << _FPUSW_SHIFT) #define __mrs_fpcr(__r) __asm __volatile("mrs %0, fpcr" : "=r" (__r)) #define __msr_fpcr(__r) __asm __volatile("msr fpcr, %0" : : "r" (__r)) #define __mrs_fpsr(__r) __asm __volatile("mrs %0, fpsr" : "=r" (__r)) #define __msr_fpsr(__r) __asm __volatile("msr fpsr, %0" : : "r" (__r)) #endif /* !_FENV_H_ */ picolibc-1.7.4/newlib/libc/machine/aarch64/sys/meson.build000066400000000000000000000032321414576234500233270ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2020 Keith Packard, # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # inc_sys_headers_machine = [ 'fenv.h' ] install_headers(inc_sys_headers_machine, subdir:'sys' ) picolibc-1.7.4/newlib/libc/machine/amdgcn/000077500000000000000000000000001414576234500203505ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/amdgcn/abort.c000066400000000000000000000016011414576234500216210ustar00rootroot00000000000000/* * Support file for amdgcn in newlib. * Copyright (c) 2014-2017 Mentor Graphics. * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #include #include #include "exit-value.h" void __attribute__((noreturn)) abort (void) { write (2, "GCN Kernel Aborted\n", 19); exit_with_status_and_signal (0, SIGABRT); } picolibc-1.7.4/newlib/libc/machine/amdgcn/atexit.c000066400000000000000000000015761414576234500220230ustar00rootroot00000000000000/* * Support file for amdgcn in newlib. * Copyright (c) 2014-2017 Mentor Graphics. * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #include int atexit (void (*function)(void)) { /* Our current implementation of exit does not run functions registered with atexit, so fail here. */ abort (); return 1; } picolibc-1.7.4/newlib/libc/machine/amdgcn/exit-value.h000066400000000000000000000026311414576234500226060ustar00rootroot00000000000000/* * Support file for amdgcn in newlib. * Copyright (c) 2017 Mentor Graphics. * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #ifndef _AMDGCN_EXIT_VALUE_H_ #define _AMDGCN_EXIT_VALUE_H_ static inline void __attribute__((noreturn)) exit_with_int (int val) { /* Write the exit value to the conventional place. */ int *return_value; __asm__("s_load_dwordx2 %0, s[8:9], 16 glc\n\t" "s_waitcnt 0" : "=Sg"(return_value)); *return_value = val; /* Terminate the current kernel. */ __asm__("s_dcache_wb"); __asm__("s_endpgm"); __builtin_unreachable (); } static inline void __attribute__((noreturn)) exit_with_status_and_signal (int val, int signal) { if (signal == 0) val = val & 0xff; else { val = (128 + signal) & 0xff; signal = signal & 0xff; } exit_with_int ((0xffff << 16) | (signal << 8) | val); } #endif picolibc-1.7.4/newlib/libc/machine/amdgcn/exit.c000066400000000000000000000015021414576234500214630ustar00rootroot00000000000000/* * Support file for amdgcn in newlib. * Copyright (c) 2014-2017 Mentor Graphics. * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #include #include "exit-value.h" void __attribute__((noreturn)) exit (int val) { exit_with_status_and_signal (val, 0); } picolibc-1.7.4/newlib/libc/machine/amdgcn/getreent.c000066400000000000000000000055601414576234500223370ustar00rootroot00000000000000/* Copyright (c) 2014-2017 Mentor Graphics. The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply. */ /* get thread-specific reentrant pointer */ #include #include #include #include /* Copied from the HSA documentation. */ typedef struct hsa_signal_s { uint64_t handle; } hsa_signal_t; typedef struct hsa_kernel_dispatch_packet_s { uint16_t header ; uint16_t setup; uint16_t workgroup_size_x ; uint16_t workgroup_size_y ; uint16_t workgroup_size_z; uint16_t reserved0; uint32_t grid_size_x ; uint32_t grid_size_y ; uint32_t grid_size_z; uint32_t private_segment_size; uint32_t group_segment_size; uint64_t kernel_object; uint64_t reserved2; hsa_signal_t completion_signal; } hsa_kernel_dispatch_packet_t; struct _reent * __getreent (void) { /* Place the reent data at the top of the stack allocation. s[0:1] contains a 48-bit private segment base address. s11 contains the offset to the base of the stack. s[4:5] contains the dispatch pointer. WARNING: this code will break if s[0:1] is ever used for anything! */ const register unsigned long buffer_descriptor __asm__("s0"); unsigned long private_segment = buffer_descriptor & 0x0000ffffffffffff; const register unsigned int stack_offset __asm__("s11"); const register hsa_kernel_dispatch_packet_t *dispatch_ptr __asm__("s4"); struct data { int marker; struct _reent reent; } *data; unsigned long stack_base = private_segment + stack_offset; unsigned long stack_end = stack_base + dispatch_ptr->private_segment_size * 64; unsigned long addr = (stack_end - sizeof(struct data)) & ~7; data = (struct data *)addr; register long sp __asm__("s16"); if (sp >= addr) goto stackoverflow; /* Stash a marker in the unused upper 16 bits of s[0:1] to indicate that the reent data is initialized. */ const register unsigned int s1 __asm__("s1"); unsigned int marker = s1 >> 16; if (marker != 12345) { __asm__("s_and_b32\ts1, s1, 0xffff"); __asm__("s_or_b32\ts1, s1, (12345 << 16)"); data->marker = 12345; __builtin_memset (&data->reent, 0, sizeof(struct _reent)); _REENT_INIT_PTR_ZEROED (&data->reent); } else if (data->marker != 12345) goto stackoverflow; return &data->reent; stackoverflow: write (2, "GCN Stack Overflow!\n", 20); abort (); } picolibc-1.7.4/newlib/libc/machine/amdgcn/malloc_support.c000066400000000000000000000051351414576234500235630ustar00rootroot00000000000000/* * Support file for AMDGCN in newlib. * Copyright (c) 2017 Mentor Graphics. * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #include #include #include /* _sbrk_r expects us to use the real errno, not the reentrant one. */ #include #undef errno extern int errno; /* The runtime passes in heap space like this. */ struct heap { int64_t size; char data[0]; }; static char *__heap_ptr = (char*)-1; static char *__heap_end = (char*)-1; static int __heap_lock = 0; static void *__heap_lock_id = NULL; static int __heap_lock_cnt = 0; void * sbrk (ptrdiff_t nbytes) { if (__heap_ptr == (char *)-1) { /* Find the heap from kernargs. The kernargs pointer is in s[8:9]. This will break if the enable_sgpr_* flags are ever changed. */ char *kernargs; __asm__("s_mov_b64 %0, s[8:9]" : "=Sg"(kernargs)); /* The heap data is at kernargs[3]. */ struct heap *heap = *(struct heap **)(kernargs + 24); __heap_ptr = heap->data; __heap_end = __heap_ptr + heap->size; } if ((__heap_ptr + nbytes) >= __heap_end) { errno = ENOMEM; return (void*)-1; } char *base = __heap_ptr; __heap_ptr += nbytes; return base; } void __malloc_lock (struct _reent *reent) { void *id = reent; if (id == __heap_lock_id) { if (__heap_lock_cnt < 1) abort (); ++__heap_lock_cnt; return; } while (__sync_lock_test_and_set (&__heap_lock, 1)) /* A sleep seems like it should allow the wavefront to yeild (maybe?) Use the shortest possible sleep time of 1*64 cycles. */ __asm__ volatile ("s_sleep\t1" ::: "memory"); if (__heap_lock_id != NULL) abort (); if (__heap_lock_cnt != 0) abort (); __heap_lock_cnt = 1; __heap_lock_id = id; } void __malloc_unlock (struct _reent *reent) { void *id = reent; if (id != __heap_lock_id) abort (); if (__heap_lock_cnt < 1) abort (); --__heap_lock_cnt; if (__heap_lock_cnt > 0) return; __heap_lock_id = NULL; __sync_lock_release (&__heap_lock); } picolibc-1.7.4/newlib/libc/machine/amdgcn/signal.c000066400000000000000000000013651414576234500217760ustar00rootroot00000000000000/* Copyright (c) 2014-2017 Mentor Graphics. The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply. */ #include #include _sig_func_ptr signal (int sig, _sig_func_ptr func) { errno = EINVAL; return NULL; } picolibc-1.7.4/newlib/libc/machine/arc/000077500000000000000000000000001414576234500176645ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/arc/asm.h000066400000000000000000000052371414576234500206240ustar00rootroot00000000000000#ifndef ARC_NEWLIB_ASM_H #define ARC_NEWLIB_ASM_H /* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define _ENTRY(name) \ .text ` .balign 4 ` .globl name ` name: #define FUNC(name) .type name,@function #define ENDFUNC0(name) .Lfe_##name: .size name,.Lfe_##name-name #define ENDFUNC(name) ENDFUNC0 (name) #define ENTRY(name) _ENTRY (name) ` FUNC (name) #define add_l add #define bcc_l bcc #define bclr_l bclr #define beq_l beq #define bic_l bic #define b_l b #define bne_l bne #define breq_l breq #define brne_l brne #define j_l j #define ldb_l ldb #define ld_l ld #define mov_l mov #define or_l or #define st_l st #define stb_l stb #define sub_l sub #define tst_l tst #define extb_l extb #define bcc_s bhs_s /* Compatibility with older ARC GCC, that doesn't provide some of the preprocessor defines used by newlib for ARC. */ #if defined (__Xbarrel_shifter) && !defined (__ARC_BARREL_SHIFTER__) #define __ARC_BARREL_SHIFTER__ 1 #endif #if defined (__EM__) && !defined (__ARCEM__) #define __ARCEM__ 1 #endif #if defined (__HS__) && !defined (__ARCHS__) #define __ARCHS__ 1 #endif #if defined (__LL64__) && !defined (__ARC_LL64__) #define __ARC_LL64__ 1 #endif #endif /* ARC_NEWLIB_ASM_H */ picolibc-1.7.4/newlib/libc/machine/arc/memcmp-bs-norm.S000066400000000000000000000120221414576234500226360ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This implementation is optimized for performance. For code size a generic implementation of this function from newlib/libc/string/memcmp.c will be used. */ #if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) #include "asm.h" #if !defined (__ARC601__) && defined (__ARC_NORM__) \ && defined (__ARC_BARREL_SHIFTER__) #ifdef __LITTLE_ENDIAN__ #define WORD2 r2 #define SHIFT r3 #else /* BIG ENDIAN */ #define WORD2 r3 #define SHIFT r2 #endif ENTRY (memcmp) or r12,r0,r1 asl_s r12,r12,30 #if defined (__ARC700__) || defined (__ARCEM__) || defined (__ARCHS__) sub_l r3,r2,1 brls r2,r12,.Lbytewise #else brls.d r2,r12,.Lbytewise sub_s r3,r2,1 #endif ld r4,[r0,0] ld r5,[r1,0] lsr.f lp_count,r3,3 #ifdef __ARCEM__ /* A branch can't be the last instruction in a zero overhead loop. So we move the branch to the start of the loop, duplicate it after the end, and set up r12 so that the branch isn't taken initially. */ mov_s r12,WORD2 lpne .Loop_end brne WORD2,r12,.Lodd ld WORD2,[r0,4] #else lpne .Loop_end ld_s WORD2,[r0,4] #endif ld_s r12,[r1,4] brne r4,r5,.Leven ld.a r4,[r0,8] ld.a r5,[r1,8] #ifdef __ARCEM__ .Loop_end: brne WORD2,r12,.Lodd #else brne WORD2,r12,.Lodd #ifdef __ARCHS__ nop #endif .Loop_end: #endif asl_s SHIFT,SHIFT,3 bcc_s .Last_cmp brne r4,r5,.Leven ld r4,[r0,4] ld r5,[r1,4] #ifdef __LITTLE_ENDIAN__ #if defined (__ARC700__) || defined (__ARCEM__) || defined (__ARCHS__) nop_s ; one more load latency cycle .Last_cmp: xor r0,r4,r5 bset r0,r0,SHIFT sub_s r1,r0,1 bic_s r1,r1,r0 norm r1,r1 b.d .Leven_cmp and r1,r1,24 .Leven: xor r0,r4,r5 sub_s r1,r0,1 bic_s r1,r1,r0 norm r1,r1 ; slow track insn and r1,r1,24 .Leven_cmp: asl r2,r4,r1 asl r12,r5,r1 lsr_s r2,r2,1 lsr_s r12,r12,1 j_s.d [blink] sub r0,r2,r12 .balign 4 .Lodd: xor r0,WORD2,r12 sub_s r1,r0,1 bic_s r1,r1,r0 norm r1,r1 ; slow track insn and r1,r1,24 asl_s r2,r2,r1 asl_s r12,r12,r1 lsr_s r2,r2,1 lsr_s r12,r12,1 j_s.d [blink] sub r0,r2,r12 #else /* !__ARC700__ */ .balign 4 .Last_cmp: xor r0,r4,r5 b.d .Leven_cmp bset r0,r0,SHIFT .Lodd: mov_s r4,WORD2 mov_s r5,r12 .Leven: xor r0,r4,r5 .Leven_cmp: mov_s r1,0x80808080 ; uses long immediate sub_s r12,r0,1 bic_s r0,r0,r12 sub r0,r1,r0 xor_s r0,r0,r1 and r1,r5,r0 and r0,r4,r0 xor.f 0,r0,r1 sub_s r0,r0,r1 j_s.d [blink] mov.mi r0,r1 #endif /* !__ARC700__ */ #else /* BIG ENDIAN */ .Last_cmp: neg_s SHIFT,SHIFT lsr r4,r4,SHIFT lsr r5,r5,SHIFT ; slow track insn .Leven: sub.f r0,r4,r5 mov.ne r0,1 j_s.d [blink] bset.cs r0,r0,31 .Lodd: cmp_s WORD2,r12 #if defined (__ARC700__) || defined (__ARCEM__) || defined (__ARCHS__) mov_s r0,1 j_s.d [blink] bset.cs r0,r0,31 #else j_s.d [blink] rrc r0,2 #endif /* __ARC700__ || __ARCEM__ || __ARCHS__ */ #endif /* ENDIAN */ .balign 4 .Lbytewise: breq r2,0,.Lnil ldb r4,[r0,0] ldb r5,[r1,0] lsr.f lp_count,r3 #ifdef __ARCEM__ mov r12,r3 lpne .Lbyte_end brne r3,r12,.Lbyte_odd #else lpne .Lbyte_end #endif ldb_s r3,[r0,1] ldb_l r12,[r1,1] brne r4,r5,.Lbyte_even ldb.a r4,[r0,2] ldb.a r5,[r1,2] #ifdef __ARCEM__ .Lbyte_end: brne r3,r12,.Lbyte_odd #else brne r3,r12,.Lbyte_odd #ifdef __ARCHS__ nop #endif .Lbyte_end: #endif bcc_l .Lbyte_even brne r4,r5,.Lbyte_even ldb_s r3,[r0,1] ldb_s r12,[r1,1] .Lbyte_odd: j_s.d [blink] sub r0,r3,r12 .Lbyte_even: j_s.d [blink] sub r0,r4,r5 .Lnil: j_s.d [blink] mov_l r0,0 ENDFUNC (memcmp) #endif /* !__ARC601__ && __ARC_NORM__ && __ARC_BARREL_SHIFTER__ */ #endif /* !__OPTIMIZE_SIZE__ && !PREFER_SIZE_OVER_SPEED */ picolibc-1.7.4/newlib/libc/machine/arc/memcmp-stub.c000066400000000000000000000032401414576234500222600ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) # include "../../string/memcmp.c" #else /* See memcmp-*.S. */ #endif picolibc-1.7.4/newlib/libc/machine/arc/memcmp.S000066400000000000000000000076011414576234500212720ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This implementation is optimized for performance. For code size a generic implementation of this function from newlib/libc/string/memcmp.c will be used. */ #if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) #include "asm.h" #if defined (__ARC601__) || !defined (__ARC_NORM__) \ || !defined (__ARC_BARREL_SHIFTER__) /* Addresses are unsigned, and at 0 is the vector table, so it's OK to assume that we can subtract 8 from a source end address without underflow. */ ENTRY (memcmp) or r12,r0,r1 tst r12,3 breq r2,0,.Lnil add_s r3,r0,r2 /* This algorithm for big endian targets sometimes works incorrectly when sources are aligned. To be precise the last step is omitted. Just use a simple bytewise variant until the algorithm is reviewed and fixed. */ #ifdef __LITTLE_ENDIAN__ bne_s .Lbytewise #else /* BIG ENDIAN */ b_s .Lbytewise #endif /* ENDIAN */ sub r6,r3,8 ld r4,[r0,0] ld r5,[r1,0] 2: brhs r0,r6,.Loop_end ld_s r3,[r0,4] ld_s r12,[r1,4] brne r4,r5,.Leven ld.a r4,[r0,8] breq.d r3,r12,2b ld.a r5,[r1,8] #ifdef __LITTLE_ENDIAN__ mov_s r4,r3 b.d .Lodd mov_s r5,r12 #else /* BIG ENDIAN */ cmp_s r3,r12 j_s.d [blink] rrc r0,2 #endif /* ENDIAN */ .balign 4 .Loop_end: sub r3,r0,r6 brhs r3,4,.Last_cmp brne r4,r5,.Leven ld r4,[r0,4] ld r5,[r1,4] #ifdef __LITTLE_ENDIAN__ .balign 4 .Last_cmp: mov_l r0,24 add3 r2,r0,r2 xor r0,r4,r5 b.d .Leven_cmp bset r0,r0,r2 .Lodd: .Leven: xor r0,r4,r5 .Leven_cmp: mov_s r1,0x80808080 ; uses long immediate sub_s r12,r0,1 bic_s r0,r0,r12 sub r0,r1,r0 xor_s r0,r0,r1 and r1,r5,r0 and r0,r4,r0 #else /* BIG ENDIAN */ .Last_cmp: mov_s r3,0 sub3 r2,r3,r2 sub_s r3,r3,1 bclr r3,r3,r2 add_l r3,r3,1 and r0,r4,r3 and r1,r5,r3 .Leven: #endif /* ENDIAN */ xor.f 0,r0,r1 sub_s r0,r0,r1 j_s.d [blink] mov.mi r0,r1 .balign 4 .Lbytewise: ldb r4,[r0,0] ldb r5,[r1,0] sub r6,r3,2 3: brhs r0,r6,.Lbyte_end ldb_s r3,[r0,1] ldb_s r12,[r1,1] brne r4,r5,.Lbyte_even ldb.a r4,[r0,2] breq.d r3,r12,3b ldb.a r5,[r1,2] .Lbyte_odd: j_s.d [blink] sub r0,r3,r12 .balign 4 .Lbyte_end: bbit1 r2,0,.Lbyte_even brne r4,r5,.Lbyte_even ldb r4,[r0,1] ldb r5,[r1,1] .Lbyte_even: j_s.d [blink] sub r0,r4,r5 .Lnil: j_s.d [blink] mov_s r0,0 ENDFUNC (memcmp) #endif /* __ARC601__ || !__ARC_NORM__ || !__ARC_BARREL_SHIFTER__ */ #endif /* !__OPTIMIZE_SIZE__ && !PREFER_SIZE_OVER_SPEED */ picolibc-1.7.4/newlib/libc/machine/arc/memcpy-archs.S000066400000000000000000000171621414576234500224070ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This implementation is optimized for performance. For code size a generic implementation of this function from newlib/libc/string/memcpy.c will be used. */ #if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) #include "asm.h" #if defined (__ARCHS__) #ifdef __LITTLE_ENDIAN__ # define SHIFT_1(RX,RY,IMM) asl RX, RY, IMM ; << # define SHIFT_2(RX,RY,IMM) lsr RX, RY, IMM ; >> # define MERGE_1(RX,RY,IMM) asl RX, RY, IMM # define MERGE_2(RX,RY,IMM) # define EXTRACT_1(RX,RY,IMM) and RX, RY, 0xFFFF # define EXTRACT_2(RX,RY,IMM) lsr RX, RY, IMM #else # define SHIFT_1(RX,RY,IMM) lsr RX, RY, IMM ; >> # define SHIFT_2(RX,RY,IMM) asl RX, RY, IMM ; << # define MERGE_1(RX,RY,IMM) asl RX, RY, IMM ; << # define MERGE_2(RX,RY,IMM) asl RX, RY, IMM ; << # define EXTRACT_1(RX,RY,IMM) lsr RX, RY, IMM # define EXTRACT_2(RX,RY,IMM) lsr RX, RY, 0x08 #endif #ifdef __ARC_LL64__ # define PREFETCH_READ(RX) prefetch [RX, 56] # define PREFETCH_WRITE(RX) prefetchw [RX, 64] # define LOADX(DST,RX) ldd.ab DST, [RX, 8] # define STOREX(SRC,RX) std.ab SRC, [RX, 8] # define ZOLSHFT 5 # define ZOLAND 0x1F #else # define PREFETCH_READ(RX) prefetch [RX, 28] # define PREFETCH_WRITE(RX) prefetchw [RX, 32] # define LOADX(DST,RX) ld.ab DST, [RX, 4] # define STOREX(SRC,RX) st.ab SRC, [RX, 4] # define ZOLSHFT 4 # define ZOLAND 0xF #endif #ifdef __ARC_ALIGNED_ACCESS__ ENTRY (memcpy) prefetch [r1] ; Prefetch the read location prefetchw [r0] ; Prefetch the write location mov.f 0, r2 ; if size is zero jz.d [blink] mov r3, r0 ; don't clobber ret val ; if size <= 8 cmp r2, 8 bls.d @.Lsmallchunk mov.f lp_count, r2 and.f r4, r0, 0x03 rsub lp_count, r4, 4 lpnz @.Laligndestination ; LOOP BEGIN ldb.ab r5, [r1,1] sub r2, r2, 1 stb.ab r5, [r3,1] .Laligndestination: ; Check the alignment of the source and.f r4, r1, 0x03 bnz.d @.Lsourceunaligned ; CASE 0: Both source and destination are 32bit aligned ; Convert len to Dwords, unfold x4 lsr.f lp_count, r2, ZOLSHFT lpnz @.Lcopy32_64bytes ; LOOP START LOADX (r6, r1) PREFETCH_READ (r1) PREFETCH_WRITE (r3) LOADX (r8, r1) LOADX (r10, r1) LOADX (r4, r1) STOREX (r6, r3) STOREX (r8, r3) STOREX (r10, r3) STOREX (r4, r3) .Lcopy32_64bytes: and.f lp_count, r2, ZOLAND ;Last remaining 31 bytes .Lsmallchunk: lpnz @.Lcopyremainingbytes ; LOOP START ldb.ab r5, [r1,1] stb.ab r5, [r3,1] .Lcopyremainingbytes: j [blink] ; END CASE 0 .Lsourceunaligned: cmp r4, 2 beq.d @.LunalignedOffby2 sub r2, r2, 1 bhi.d @.LunalignedOffby3 ldb.ab r5, [r1, 1] ; CASE 1: The source is unaligned, off by 1 ; Hence I need to read 1 byte for a 16bit alignment ; and 2bytes to reach 32bit alignment ldh.ab r6, [r1, 2] sub r2, r2, 2 ; Convert to words, unfold x2 lsr.f lp_count, r2, 3 MERGE_1 (r6, r6, 8) MERGE_2 (r5, r5, 24) or r5, r5, r6 ; Both src and dst are aligned lpnz @.Lcopy8bytes_1 ; LOOP START ld.ab r6, [r1, 4] prefetch [r1, 28] ;Prefetch the next read location ld.ab r8, [r1,4] prefetchw [r3, 32] ;Prefetch the next write location SHIFT_1 (r7, r6, 24) or r7, r7, r5 SHIFT_2 (r5, r6, 8) SHIFT_1 (r9, r8, 24) or r9, r9, r5 SHIFT_2 (r5, r8, 8) st.ab r7, [r3, 4] st.ab r9, [r3, 4] .Lcopy8bytes_1: ; Write back the remaining 16bits EXTRACT_1 (r6, r5, 16) sth.ab r6, [r3, 2] ; Write back the remaining 8bits EXTRACT_2 (r5, r5, 16) stb.ab r5, [r3, 1] and.f lp_count, r2, 0x07 ;Last 8bytes lpnz @.Lcopybytewise_1 ; LOOP START ldb.ab r6, [r1,1] stb.ab r6, [r3,1] .Lcopybytewise_1: j [blink] .LunalignedOffby2: ; CASE 2: The source is unaligned, off by 2 ldh.ab r5, [r1, 2] sub r2, r2, 1 ; Both src and dst are aligned ; Convert to words, unfold x2 lsr.f lp_count, r2, 3 #ifdef __BIG_ENDIAN__ asl.nz r5, r5, 16 #endif lpnz @.Lcopy8bytes_2 ; LOOP START ld.ab r6, [r1, 4] prefetch [r1, 28] ;Prefetch the next read location ld.ab r8, [r1,4] prefetchw [r3, 32] ;Prefetch the next write location SHIFT_1 (r7, r6, 16) or r7, r7, r5 SHIFT_2 (r5, r6, 16) SHIFT_1 (r9, r8, 16) or r9, r9, r5 SHIFT_2 (r5, r8, 16) st.ab r7, [r3, 4] st.ab r9, [r3, 4] .Lcopy8bytes_2: #ifdef __BIG_ENDIAN__ lsr.nz r5, r5, 16 #endif sth.ab r5, [r3, 2] and.f lp_count, r2, 0x07 ;Last 8bytes lpnz @.Lcopybytewise_2 ; LOOP START ldb.ab r6, [r1,1] stb.ab r6, [r3,1] .Lcopybytewise_2: j [blink] .LunalignedOffby3: ; CASE 3: The source is unaligned, off by 3 ; Hence, I need to read 1byte for achieve the 32bit alignment ; Both src and dst are aligned ; Convert to words, unfold x2 lsr.f lp_count, r2, 3 #ifdef __BIG_ENDIAN__ asl.ne r5, r5, 24 #endif lpnz @.Lcopy8bytes_3 ; LOOP START ld.ab r6, [r1, 4] prefetch [r1, 28] ;Prefetch the next read location ld.ab r8, [r1,4] prefetchw [r3, 32] ;Prefetch the next write location SHIFT_1 (r7, r6, 8) or r7, r7, r5 SHIFT_2 (r5, r6, 24) SHIFT_1 (r9, r8, 8) or r9, r9, r5 SHIFT_2 (r5, r8, 24) st.ab r7, [r3, 4] st.ab r9, [r3, 4] .Lcopy8bytes_3: #ifdef __BIG_ENDIAN__ lsr.nz r5, r5, 24 #endif stb.ab r5, [r3, 1] and.f lp_count, r2, 0x07 ;Last 8bytes lpnz @.Lcopybytewise_3 ; LOOP START ldb.ab r6, [r1,1] stb.ab r6, [r3,1] .Lcopybytewise_3: j [blink] ENDFUNC (memcpy) #else ENTRY(memcpy) prefetch [r1] ; Prefetch the read location prefetchw [r0] ; Prefetch the write location mov.f 0, r2 ;;; if size is zero jz.d [blink] mov r3, r0 ; don't clobber ret val ;;; if size <= 8 cmp r2, 8 bls.d @.Lsmallchunk mov.f lp_count, r2 ;;; Convert len to Dwords, unfold x4 lsr.f lp_count, r2, ZOLSHFT lpnz @.Lcopyfast ;; LOOP START LOADX (r6, r1) PREFETCH_READ (r1) PREFETCH_WRITE (r3) LOADX (r8, r1) LOADX (r10, r1) LOADX (r4, r1) STOREX (r6, r3) STOREX (r8, r3) STOREX (r10, r3) STOREX (r4, r3) .Lcopyfast: #ifdef __ARC_LL64__ and r2, r2, ZOLAND ;Remaining 31 bytes lsr.f lp_count, r2, 3 ;Convert to 64-bit words. lpnz @.Lcopy64b ;; LOOP START ldd.ab r6,[r1,8] std.ab r6,[r3,8] .Lcopy64b: and.f lp_count, r2, 0x07 ; Last 7 bytes #else and.f lp_count, r2, ZOLAND #endif .Lsmallchunk: lpnz @.Lcopyremainingbytes ;; LOOP START ldb.ab r5, [r1,1] stb.ab r5, [r3,1] .Lcopyremainingbytes: j [blink] ENDFUNC(memcpy) #endif #endif /* __ARCHS__ */ #endif /* !__OPTIMIZE_SIZE__ && !PREFER_SIZE_OVER_SPEED */ picolibc-1.7.4/newlib/libc/machine/arc/memcpy-bs.S000066400000000000000000000064111414576234500217060ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This implementation is optimized for performance. For code size a generic implementation of this function from newlib/libc/string/memcpy.c will be used. */ #if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) #include "asm.h" #if !defined (__ARC601__) && !defined (__ARCHS__) \ && defined (__ARC_BARREL_SHIFTER__) /* Mostly optimized for ARC700, but not bad for ARC600 either. */ /* This memcpy implementation does not support objects of 1GB or larger - the check for alignment does not work then. */ /* We assume that most sources and destinations are aligned, and that also lengths are mostly a multiple of four, although to a lesser extent. */ ENTRY (memcpy) or r3,r0,r1 asl_s r3,r3,30 mov_s r5,r0 brls.d r2,r3,.Lcopy_bytewise sub.f r3,r2,1 ld_s r12,[r1,0] asr.f lp_count,r3,3 bbit0.d r3,2,.Lnox4 bmsk_s r2,r2,1 st.ab r12,[r5,4] ld.a r12,[r1,4] .Lnox4: lppnz .Lendloop ld_s r3,[r1,4] st.ab r12,[r5,4] ld.a r12,[r1,8] st.ab r3,[r5,4] .Lendloop: breq_l r2,0,.Last_store ld r3,[r5,0] #ifdef __LITTLE_ENDIAN__ add3 r2,-1,r2 ; uses long immediate xor_s r12,r12,r3 bmsk r12,r12,r2 xor_s r12,r12,r3 #else /* BIG ENDIAN */ sub3 r2,31,r2 ; uses long immediate xor_s r3,r3,r12 bmsk r3,r3,r2 xor_s r12,r12,r3 #endif /* ENDIAN */ .Last_store: j_s.d [blink] st r12,[r5,0] .balign 4 .Lcopy_bytewise: jcs [blink] ldb_s r12,[r1,0] lsr.f lp_count,r3 bcc_s .Lnox1 stb.ab r12,[r5,1] ldb.a r12,[r1,1] .Lnox1: lppnz .Lendbloop ldb_s r3,[r1,1] stb.ab r12,[r5,1] ldb.a r12,[r1,2] stb.ab r3,[r5,1] .Lendbloop: j_s.d [blink] stb r12,[r5,0] ENDFUNC (memcpy) #endif /* !__ARC601__ && !__ARCHS__ && __ARC_BARREL_SHIFTER__ */ #endif /* !__OPTIMIZE_SIZE__ && !PREFER_SIZE_OVER_SPEED */ picolibc-1.7.4/newlib/libc/machine/arc/memcpy-stub.c000066400000000000000000000032401414576234500222740ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) # include "../../string/memcpy.c" #else /* See memcpy-*.S. */ #endif picolibc-1.7.4/newlib/libc/machine/arc/memcpy.S000066400000000000000000000062751414576234500213140ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This implementation is optimized for performance. For code size a generic implementation of this function from newlib/libc/string/memcpy.c will be used. */ #if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) #include "asm.h" #if defined (__ARC601__) || \ (!defined (__ARC_BARREL_SHIFTER__) && !defined (__ARCHS__)) /* Adapted from memcpy-bs.S. */ /* We assume that most sources and destinations are aligned, and that also lengths are mostly a multiple of four, although to a lesser extent. */ ENTRY (memcpy) or r3,r0,r1 bmsk.f 0,r3,1 breq_s r2,0,.Lnil mov_s r5,r0 bne.d .Lcopy_bytewise add r6,r0,r2 sub_s r3,r2,1 ld_s r12,[r1,0] bbit0.d r3,2,.Lnox4 sub r6,r6,8 st.ab r12,[r5,4] ld.a r12,[r1,4] .Lnox4: brlo r2,9,.Lendloop .Lnox4a: ld_s r3,[r1,4] st.ab r12,[r5,8] ld.a r12,[r1,8] brlo.d r5,r6,.Lnox4a st r3,[r5,-4] .Lendloop: #ifdef __LITTLE_ENDIAN__ ld r3,[r5,0] add3 r2,-1,r2 ; uses long immediate xor_s r12,r12,r3 bmsk r12,r12,r2 xor_s r12,r12,r3 #else /* BIG ENDIAN */ bmsk_s r2,r2,1 breq_s r2,0,.Last_store ld r3,[r5,0] sub3 r2,31,r2 ; uses long immediate xor_s r3,r3,r12 bmsk r3,r3,r2 xor_s r12,r12,r3 #endif /* ENDIAN */ .Last_store: j_s.d [blink] st r12,[r5,0] .Lnil: j_s [blink] .balign 4 .Lcopy_bytewise: ldb_s r12,[r1,0] bbit1.d r2,0,.Lnox1 sub r6,r6,2 stb.ab r12,[r5,1] ldb.a r12,[r1,1] .Lnox1: brlo r2,3,.Lendbloop .Lnox1a: ldb_s r3,[r1,1] stb.ab r12,[r5,2] ldb.a r12,[r1,2] brlo.d r5,r6,.Lnox1a stb r3,[r5,-1] .Lendbloop: j_s.d [blink] stb r12,[r5,0] ENDFUNC (memcpy) #endif /* __ARC601__ || (!__ARC_BARREL_SHIFTER__ && !__ARCHS__) */ #endif /* !__OPTIMIZE_SIZE__ && !PREFER_SIZE_OVER_SPEED */ picolibc-1.7.4/newlib/libc/machine/arc/memset-archs.S000066400000000000000000000074261414576234500224110ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This implementation is optimized for performance. For code size a generic implementation of this function from newlib/libc/string/memset.c will be used. */ #if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) #include "asm.h" #ifdef __ARCHS__ #define USE_PREFETCH #ifdef USE_PREFETCH #define PREWRITE(A,B) prefetchw [(A),(B)] #else #define PREWRITE(A,B) prealloc [(A),(B)] #endif ENTRY (memset) prefetchw [r0] ; Prefetch the write location mov.f 0, r2 ; if size is zero jz.d [blink] mov r3, r0 ; don't clobber ret val ; if length < 8 brls.d.nt r2, 8, .Lsmallchunk mov.f lp_count,r2 and.f r4, r0, 0x03 rsub lp_count, r4, 4 lpnz @.Laligndestination ; LOOP BEGIN stb.ab r1, [r3,1] sub r2, r2, 1 .Laligndestination: ; Destination is aligned and r1, r1, 0xFF asl r4, r1, 8 or r4, r4, r1 asl r5, r4, 16 or r5, r5, r4 mov r4, r5 sub3 lp_count, r2, 8 cmp r2, 64 bmsk.hi r2, r2, 5 mov.ls lp_count, 0 add3.hi r2, r2, 8 ; Convert len to Dwords, unfold x8 lsr.f lp_count, lp_count, 6 lpnz @.Lset64bytes ; LOOP START PREWRITE (r3, 64) ;Prefetch the next write location #ifdef __ARC_LL64__ std.ab r4, [r3, 8] std.ab r4, [r3, 8] std.ab r4, [r3, 8] std.ab r4, [r3, 8] std.ab r4, [r3, 8] std.ab r4, [r3, 8] std.ab r4, [r3, 8] std.ab r4, [r3, 8] #else st.ab r4, [r3, 4] st.ab r4, [r3, 4] st.ab r4, [r3, 4] st.ab r4, [r3, 4] st.ab r4, [r3, 4] st.ab r4, [r3, 4] st.ab r4, [r3, 4] st.ab r4, [r3, 4] st.ab r4, [r3, 4] st.ab r4, [r3, 4] st.ab r4, [r3, 4] st.ab r4, [r3, 4] st.ab r4, [r3, 4] st.ab r4, [r3, 4] st.ab r4, [r3, 4] st.ab r4, [r3, 4] #endif .Lset64bytes: lsr.f lp_count, r2, 5 ;Last remaining max 124 bytes lpnz .Lset32bytes ; LOOP START prefetchw [r3, 32] ;Prefetch the next write location #ifdef __ARC_LL64__ std.ab r4, [r3, 8] std.ab r4, [r3, 8] std.ab r4, [r3, 8] std.ab r4, [r3, 8] #else st.ab r4, [r3, 4] st.ab r4, [r3, 4] st.ab r4, [r3, 4] st.ab r4, [r3, 4] st.ab r4, [r3, 4] st.ab r4, [r3, 4] st.ab r4, [r3, 4] st.ab r4, [r3, 4] #endif .Lset32bytes: and.f lp_count, r2, 0x1F ;Last remaining 31 bytes .Lsmallchunk: lpnz .Lcopy3bytes ; LOOP START stb.ab r1, [r3, 1] .Lcopy3bytes: j [blink] ENDFUNC (memset) #endif /* __ARCHS__ */ #endif /* !__OPTIMIZE_SIZE__ && !PREFER_SIZE_OVER_SPEED */ picolibc-1.7.4/newlib/libc/machine/arc/memset-bs.S000066400000000000000000000107201414576234500217040ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This implementation is optimized for performance. For code size a generic implementation of this function from newlib/libc/string/memset.c will be used. */ #if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) #include "asm.h" /* ARC HS has it's own implementation of memset, yet we want this function still to be compiled under "__dummy_memset" disguise, because strncpy function uses __strncpy_bzero as a second entry point into memset. Would be better to add __strncpy_bzero label to memset for ARC HS though, and even better would be to avoid a second entry point into function. ARC HS always has barrel-shifter, so this implementation will be always used for this purpose. */ #if !defined (__ARC601__) && defined (__ARC_BARREL_SHIFTER__) /* To deal with alignment/loop issues, SMALL must be at least 2. */ #define SMALL 7 .global __strncpy_bzero .hidden __strncpy_bzero /* __strncpy_bzero provides the following interface to strncpy: r0: return value r2: zeroing length r3: zeroing start address No attempt is made here for __strncpy_memset to speed up aligned cases, because the copying of a string presumably leaves start address and length alignment for the zeroing randomly distributed. */ #ifdef __ARCHS__ ENTRY (__dummy_memset) #else ENTRY (memset) #endif #if !defined (__ARC700__) && !defined (__ARCEM__) #undef SMALL #define SMALL 8 /* Even faster if aligned. */ brls.d r2,SMALL,.Ltiny #endif mov_s r3,r0 or r12,r0,r2 bmsk.f r12,r12,1 extb_s r1,r1 asl r12,r1,8 beq.d .Laligned or_s r1,r1,r12 #if defined (__ARC700__) || defined (__ARCEM__) brls r2,SMALL,.Ltiny #endif .Lnot_tiny: add_s r12,r2,r0 stb r1,[r12,-1] bclr_l r12,r12,0 stw r1,[r12,-2] bmsk.f r12,r3,1 add_s r2,r2,r12 sub.ne r2,r2,4 stb.ab r1,[r3,1] bclr_s r3,r3,0 stw.ab r1,[r3,2] bclr_s r3,r3,1 .Laligned: ; This code address should be aligned for speed. #if defined (__ARC700__) || defined (__ARCEM__) asl r12,r1,16 lsr.f lp_count,r2,2 or_s r1,r1,r12 lpne .Loop_end st.ab r1,[r3,4] .Loop_end: j_s [blink] #else /* !__ARC700 */ lsr.f lp_count,r2,3 asl r12,r1,16 or_s r1,r1,r12 lpne .Loop_end st.ab r1,[r3,4] st.ab r1,[r3,4] .Loop_end: jcc [blink] j_s.d [blink] st_s r1,[r3] #endif /* !__ARC700 */ #if defined (__ARC700__) || defined (__ARCEM__) .balign 4 __strncpy_bzero: brhi.d r2,17,.Lnot_tiny mov_l r1,0 .Ltiny: mov.f lp_count,r2 lpne .Ltiny_end stb.ab r1,[r3,1] .Ltiny_end: j_s [blink] #else /* !__ARC700__ */ #if SMALL > 8 FIXME #endif .balign 4 __strncpy_bzero: brhi.d r2,8,.Lnot_tiny mov_s r1,0 .Ltiny: sub_s r2,r2,11 sub1 r12,pcl,r2 j_s [r12] stb_s r1,[r3,7] stb_s r1,[r3,6] stb_s r1,[r3,5] stb_s r1,[r3,4] stb_s r1,[r3,3] stb_s r1,[r3,2] stb_s r1,[r3,1] stb_s r1,[r3] j_s [blink] #endif /* !__ARC700 */ #ifdef __ARCHS__ ENDFUNC (__dummy_memset) #else ENDFUNC (memset) #endif #endif /* !__ARC601__ && __ARC_BARREL_SHIFTER__ */ #endif /* !__OPTIMIZE_SIZE__ && !PREFER_SIZE_OVER_SPEED */ picolibc-1.7.4/newlib/libc/machine/arc/memset-stub.c000066400000000000000000000032401414576234500222740ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) # include "../../string/memset.c" #else /* See memset-*.S. */ #endif picolibc-1.7.4/newlib/libc/machine/arc/memset.S000066400000000000000000000065331414576234500213110ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This implementation is optimized for performance. For code size a generic implementation of this function from newlib/libc/string/memset.c will be used. */ #if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) #include "asm.h" #if defined (__ARC601__) \ || (!defined (__ARC_BARREL_SHIFTER__) && !defined (__ARCHS__)) /* To deal with alignment/loop issues, SMALL must be at least 2. */ #define SMALL 8 /* Even faster if aligned. */ .global __strncpy_bzero .hidden __strncpy_bzero /* __strncpy_bzero provides the following interface to strncpy: r0: return value r2: zeroing length r3: zeroing start address No attempt is made here for __strncpy_memset to speed up aligned cases, because the copying of a string presumably leaves start address and length alignment for the zeroing randomly distributed. */ ENTRY (memset) brls.d r2,SMALL,.Ltiny mov_s r3,r0 or r12,r0,r2 bmsk.f r12,r12,1 breq_s r1,0,.Lbzero mov r4,0 stb.a r1,[sp,-4] stb r1,[sp,1] stb r1,[sp,2] stb r1,[sp,3] ld.ab r1,[sp,4] .Lbzero: beq.d .Laligned .Lbzero2: add r6,r2,r3 .Lnot_tiny: stb r1,[r6,-1] bclr r12,r6,0 stw r1,[r12,-2] stb.ab r1,[r3,1] bclr_s r3,r3,0 stw.ab r1,[r3,2] bclr_s r3,r3,1 .Laligned: ; This code address should be aligned for speed. sub r6,r6,8 brlo.d r6,r3,.Loop_end sub r6,r6,8 3: st_l r1,[r3,4] brhs.d r6,r3,3b st.ab r1,[r3,8] .Loop_end: bic r12,r6,3 j_s.d [blink] st_s r1,[r12,12] .balign 4 __strncpy_bzero: brhi.d r2,8,.Lbzero2 mov_s r1,0 .Ltiny: sub_s r2,r2,11 sub1 r12,pcl,r2 j_s [r12] stb_s r1,[r3,7] stb_s r1,[r3,6] stb_s r1,[r3,5] stb_s r1,[r3,4] stb_s r1,[r3,3] stb_s r1,[r3,2] stb_s r1,[r3,1] stb_s r1,[r3] j_s [blink] ENDFUNC (memset) #endif /* __ARC601__ || (!__ARC_BARREL_SHIFTER__ && !__ARCHS__) */ #endif /* !__OPTIMIZE_SIZE__ && !PREFER_SIZE_OVER_SPEED */ picolibc-1.7.4/newlib/libc/machine/arc/setjmp.S000066400000000000000000000102241414576234500213110ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* ABI interface file these are the stack mappings for the registers as stored in the ABI for ARC */ .file "setjmp.S" ABIr13 = 0 ABIr14 = ABIr13 + 4 ABIr15 = ABIr14 + 4 ABIr16 = ABIr15 + 4 ABIr17 = ABIr16 + 4 ABIr18 = ABIr17 + 4 ABIr19 = ABIr18 + 4 ABIr20 = ABIr19 + 4 ABIr21 = ABIr20 + 4 ABIr22 = ABIr21 + 4 ABIr23 = ABIr22 + 4 ABIr24 = ABIr23 + 4 ABIr25 = ABIr24 + 4 ABIr26 = ABIr25 + 4 ABIr27 = ABIr26 + 4 ABIr28 = ABIr27 + 4 ABIr29 = ABIr28 + 4 ABIr30 = ABIr29 + 4 ABIr31 = ABIr30 + 4 ABIlpc = ABIr31 + 4 ABIlps = ABIlpc + 4 ABIlpe = ABIlps + 4 ABIflg = ABIlpe + 4 ABImlo = ABIflg + 4 ABImhi = ABImlo + 4 .text .align 4 .global setjmp .type setjmp,@function setjmp: st r13, [r0, ABIr13] st r14, [r0, ABIr14] st r15, [r0, ABIr15] st r16, [r0, ABIr16] st r17, [r0, ABIr17] st r18, [r0, ABIr18] st r19, [r0, ABIr19] st r20, [r0, ABIr20] st r21, [r0, ABIr21] st r22, [r0, ABIr22] st r23, [r0, ABIr23] st r24, [r0, ABIr24] st r25, [r0, ABIr25] st r26, [r0, ABIr26] st r27, [r0, ABIr27] st r28, [r0, ABIr28] st r29, [r0, ABIr29] st r30, [r0, ABIr30] st blink, [r0, ABIr31] st lp_count, [r0, ABIlpc] lr r2, [lp_start] lr r3, [lp_end] st r2, [r0, ABIlps] st r3, [r0, ABIlpe] #if (!defined (__ARC700__) && !defined (__ARCEM__) && !defined (__ARCHS__)) ; Till the configure changes are decided, and implemented, the code working on ; mlo/mhi and using mul64 should be disabled. ; st mlo, [r0, ABImlo] ; st mhi, [r0, ABImhi] lr r2, [status32] st r2, [r0, ABIflg] #endif j.d [blink] mov r0,0 .Lfe1: .size setjmp,.Lfe1-setjmp .align 4 .global longjmp .type longjmp,@function longjmp: ; load registers ld r13, [r0, ABIr13] ld r14, [r0, ABIr14] ld r15, [r0, ABIr15] ld r16, [r0, ABIr16] ld r17, [r0, ABIr17] ld r18, [r0, ABIr18] ld r19, [r0, ABIr19] ld r20, [r0, ABIr20] ld r21, [r0, ABIr21] ld r22, [r0, ABIr22] ld r23, [r0, ABIr23] ld r24, [r0, ABIr24] ld r25, [r0, ABIr25] ld r26, [r0, ABIr26] ld r27, [r0, ABIr27] ld r28, [r0, ABIr28] ld r3, [r0, ABIr29] mov r29, r3 ld r3, [r0, ABIr30] mov r30, r3 ld blink, [r0, ABIr31] ld r3, [r0, ABIlpc] mov lp_count, r3 ld r2, [r0, ABIlps] ld r3, [r0, ABIlpe] sr r2, [lp_start] sr r3, [lp_end] #if (!defined (__ARC700__) && !defined (__ARCEM__) && !defined (__ARCHS__)) ld r2, [r0, ABImlo] ld r3, [r0, ABImhi] ; We do not support restoring of mulhi and mlo registers, yet. ; mulu64 0,r2,1 ; restores mlo ; mov 0,mlo ; force multiply to finish ; sr r3, [mulhi] ld r2, [r0, ABIflg] flag r2 ; restore "status32" register #endif mov.f r1, r1 ; to avoid return 0 from longjmp mov.eq r1, 1 j.d [blink] mov r0,r1 .Lfe2: .size longjmp,.Lfe2-longjmp picolibc-1.7.4/newlib/libc/machine/arc/strchr-bs-norm.S000066400000000000000000000106711414576234500226750ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This implementation is optimized for performance. For code size a generic implementation of this function from newlib/libc/string/strchr.c will be used. */ #if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) /* ARC700 has a relatively long pipeline and branch prediction, so we want to avoid branches that are hard to predict. On the other hand, the presence of the norm instruction makes it easier to operate on whole words branch-free. */ #include "asm.h" #if (defined (__ARC700__) || defined (__ARCEM__) || defined (__ARCHS__)) \ && defined (__ARC_NORM__) && defined (__ARC_BARREL_SHIFTER__) ENTRY (strchr) extb_s r1,r1 asl r5,r1,8 bmsk r2,r0,1 or r5,r5,r1 mov_s r3,0x01010101 breq.d r2,r0,.Laligned asl r4,r5,16 sub_s r0,r0,r2 asl r7,r2,3 ld_s r2,[r0] #ifdef __LITTLE_ENDIAN__ asl r7,r3,r7 #else lsr r7,r3,r7 #endif or r5,r5,r4 ror r4,r3 sub r12,r2,r7 bic_s r12,r12,r2 and r12,r12,r4 brne.d r12,0,.Lfound0_ua xor r6,r2,r5 ld.a r2,[r0,4] sub r12,r6,r7 bic r12,r12,r6 #ifdef __LITTLE_ENDIAN__ and r7,r12,r4 breq r7,0,.Loop ; For speed, we want this branch to be unaligned. b_l .Lfound_char ; Likewise this one. #else and r12,r12,r4 breq_l r12,0,.Loop ; For speed, we want this branch to be unaligned. lsr_s r12,r12,7 bic r2,r7,r6 b.d .Lfound_char_b and_s r2,r2,r12 #endif ; /* We require this code address to be unaligned for speed... */ .Laligned: ld_s r2,[r0] or r5,r5,r4 ror r4,r3 ; /* ... so that this code address is aligned, for itself and ... */ .Loop: sub r12,r2,r3 bic_s r12,r12,r2 and r12,r12,r4 brne.d r12,0,.Lfound0 xor r6,r2,r5 ld.a r2,[r0,4] sub r12,r6,r3 bic r12,r12,r6 and r7,r12,r4 breq r7,0,.Loop /* ... so that this branch is unaligned. */ ; Found searched-for character. r0 has already advanced to next word. #ifdef __LITTLE_ENDIAN__ /* We only need the information about the first matching byte (i.e. the least significant matching byte) to be exact, hence there is no problem with carry effects. */ .Lfound_char: sub r3,r7,1 bic r3,r3,r7 norm r2,r3 sub_s r0,r0,1 asr_s r2,r2,3 j_l.d [blink] sub_s r0,r0,r2 .balign 4 .Lfound0_ua: mov_l r3,r7 .Lfound0: sub r3,r6,r3 bic r3,r3,r6 and r2,r3,r4 or_s r12,r12,r2 sub_s r3,r12,1 bic_s r3,r3,r12 norm r3,r3 add_s r0,r0,3 asr_s r12,r3,3 asl.f 0,r2,r3 sub_s r0,r0,r12 j_s.d [blink] mov.pl r0,0 #else /* BIG ENDIAN */ .Lfound_char: lsr r7,r7,7 bic r2,r7,r6 .Lfound_char_b: norm r2,r2 sub_s r0,r0,4 asr_s r2,r2,3 j_l.d [blink] add_s r0,r0,r2 .Lfound0_ua: mov_s r3,r7 .Lfound0: asl_s r2,r2,7 or r7,r6,r4 bic_s r12,r12,r2 sub r2,r7,r3 or r2,r2,r6 bic r12,r2,r12 bic.f r3,r4,r12 norm r3,r3 add.pl r3,r3,1 asr_s r12,r3,3 asl.f 0,r2,r3 add_s r0,r0,r12 j_s.d [blink] mov.mi r0,0 #endif /* ENDIAN */ ENDFUNC (strchr) #endif /* (__ARC700__ || __ARCEM__ || __ARCHS__) && __ARC_NORM__ && __ARC_BARREL_SHIFTER__ */ #endif /* !__OPTIMIZE_SIZE__ && !PREFER_SIZE_OVER_SPEED */ picolibc-1.7.4/newlib/libc/machine/arc/strchr-bs.S000066400000000000000000000121641414576234500217230ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This implementation is optimized for performance. For code size a generic implementation of this function from newlib/libc/string/strchr.c will be used. */ #if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) #include "asm.h" /* In order to search for a zero in a W, we calculate X := (W - 0x01010101) & ~W & 0x80808080; In the little endian case: If no byte in W is zero, X will be zero; otherwise, the least significant byte of X which is nonzero indicates the least significant byte of W that is zero. In the big endian case: X will be zero iff no byte in W is zero. If X is nonzero, to find out which is the most significant zero byte in W, we calculate: Y := ~(((W | 0x80808080) - 0x01010101) | W) & 0x80808080; Each byte in Y is 0x80 if the the corresponding byte in W is zero, otherwise that byte of Y is 0. */ #if defined (__ARC_BARREL_SHIFTER__) && \ (defined (__ARC600__) || (!defined (__ARC_NORM__) && !defined (__ARC601__))) ENTRY (strchr) bmsk.f r2,r0,1 mov_s r3,0x01010101 extb_s r1,r1 asl r5,r1,8 or r5,r5,r1 beq.d .Laligned asl r4,r5,16 sub_s r0,r0,r2 asl_s r2,r2,3 #ifdef __LITTLE_ENDIAN__ asl r7,r3,r2 #else lsr r7,r3,r2 #endif ld_s r2,[r0] or r5,r5,r4 ror r4,r3 sub r12,r2,r7 bic_s r12,r12,r2 and r12,r12,r4 brne.d r12,0,.Lfound0_ua xor r6,r2,r5 ld.a r2,[r0,4] sub r12,r6,r7 bic r12,r12,r6 #ifdef __LITTLE_ENDIAN__ and.f r7,r12,r4 sub r12,r2,r3 bic_s r12,r12,r2 beq.d .Loop and r12,r12,r4 b.d .Lfound_char_ua btst r7,7 #else and.f r8,r12,r4 sub r12,r2,r3 bic_s r12,r12,r2 beq.d .Loop and r12,r12,r4 bic r12,r7,r6 asl_s r12,r12,7 and.f r2,r8,r12 b.d .Lfound_char_ua sub_s r0,r0,4 #endif .balign 4 .Laligned: ld_s r2,[r0] or r5,r5,r4 ror r4,r3 sub r12,r2,r3 bic_s r12,r12,r2 and r12,r12,r4 .Loop: brne.d r12,0,.Lfound0 xor r6,r2,r5 ld.a r2,[r0,4] sub r12,r6,r3 bic r12,r12,r6 and.f r7,r12,r4 sub r12,r2,r3 bic_s r12,r12,r2 beq.d .Loop and r12,r12,r4 ; Found searched-for character. r0 has already advanced to next word. #ifdef __LITTLE_ENDIAN__ /* We only need the information about the first matching byte (i.e. the least significant matching byte) to be exact, hence there is no problem with carry effects. */ .Lfound_char: btst r7,7 .Lfound_char_ua: sub_s r0,r0,4 add.eq r0,r0,1 btst.eq r7,15 add.eq r0,r0,1 btst.eq r7,23 j_s.d [blink] add.eq r0,r0,1 .balign 4 .Lfound0_ua: mov_l r3,r7 .Lfound0: sub r2,r6,r3 bic r2,r2,r6 and r2,r2,r4 or r3,r12,r2 sub_s r12,r3,1 xor_s r3,r3,r12 tst_s r2,r3 lsr r2,r3,31 lsr r12,r3,16 jeq.d [blink] mov.eq r0,0 lsr r3,r3,8 sub_s r2,r2,r12 sub_s r2,r2,r3 bmsk_s r2,r2,1 j_s.d [blink] add_s r0,r0,r2 #else /* BIG ENDIAN */ .Lfound_char: asl r6,r6,7 sub_s r0,r0,4 bic.f r2,r7,r6 .Lfound_char_ua: add.pl r0,r0,1 jmi.d [blink] btst_s r2,23 add.eq r0,r0,1 btst.eq r2,15 j_s.d [blink] add.eq r0,r0,1 ; N.B. if we searched for a char zero and found it in the MSB, ; and ignored matches are identical, we will take the early exit ; like for an ordinary found zero - except for the extra stalls at jhi - ; but still compute the right result. .Lfound0_ua: mov_s r3,r7 .Lfound0: asl_s r2,r2,7 or r7,r6,r4 bic_s r12,r12,r2 sub r2,r7,r3 or r2,r2,r6 bic r2,r4,r2 cmp r12,r2 mov.hi r0,0 btst.ls r2,31 jhi.d [blink] add.eq r0,r0,1 btst.eq r2,23 add.eq r0,r0,1 btst.eq r2,15 j_s.d [blink] add.eq r0,r0,1 #endif /* ENDIAN */ ENDFUNC (strchr) #endif /* __ARC_BARREL_SHIFTER__ && (__ARC600__ || (!__ARC_NORM__ && !__ARC601__)) */ #endif /* !__OPTIMIZE_SIZE__ && !PREFER_SIZE_OVER_SPEED */ picolibc-1.7.4/newlib/libc/machine/arc/strchr-stub.c000066400000000000000000000032401414576234500223070ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) # include "../../string/strchr.c" #else /* See strchr-*.S. */ #endif picolibc-1.7.4/newlib/libc/machine/arc/strchr.S000066400000000000000000000122461414576234500213220ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This implementation is optimized for performance. For code size a generic implementation of this function from newlib/libc/string/strchr.c will be used. */ #if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) #include "asm.h" /* In order to search for a zero in a W, we calculate X := (W - 0x01010101) & ~W & 0x80808080; In the little endian case: If no byte in W is zero, X will be zero; otherwise, the least significant byte of X which is nonzero indicates the least significant byte of W that is zero. In the big endian case: X will be zero iff no byte in W is zero. If X is nonzero, to find out which is the most significant zero byte in W, we calculate: Y := ~(((W | 0x80808080) - 0x01010101) | W) & 0x80808080; Each byte in Y is 0x80 if the the corresponding byte in W is zero, otherwise that byte of Y is 0. */ #if defined (__ARC601__) || !defined (__ARC_BARREL_SHIFTER__) ENTRY (strchr) bmsk.f r2,r0,1 mov_s r3,0x01010101 extb_s r1,r1 mov r8,0 add3 r5,r8,r1 add3 r5,r8,r5 add2 r5,r1,r5 add3 r4,r8,r5 add3 r4,r8,r4 add3 r4,r8,r4 add3 r4,r8,r4 beq.d .Laligned add3 r4,r8,r4 sub_s r0,r0,r2 #ifdef __LITTLE_ENDIAN__ add3.f r2,-1,r2 bmsk r7,r3,r2 rsub.pl r7,r7,r3 #else mov_s r12,31 sub3 r2,r12,r2 bmsk r7,r3,r2 #endif ld_s r2,[r0] add1 r5,r5,r4 ror r4,r3 sub r12,r2,r7 bic_s r12,r12,r2 and r12,r12,r4 brne.d r12,0,.Lfound0_ua xor r6,r2,r5 ld.a r2,[r0,4] sub r12,r6,r7 bic r12,r12,r6 #ifdef __LITTLE_ENDIAN__ and.f r7,r12,r4 sub r12,r2,r3 bic_s r12,r12,r2 beq.d .Loop and r12,r12,r4 b.d .Lfound_char_ua btst r7,7 #else and.f r8,r12,r4 sub r12,r2,r3 bic_s r12,r12,r2 beq.d .Loop and r12,r12,r4 bic r12,r7,r6 bic r2,r3,r12 sub1 r2,r3,r2 sub_s r0,r0,4 b.d .Lfound_char_ua bic.f r2,r8,r2 #endif .balign 4 .Laligned: ld_s r2,[r0] add1 r5,r5,r4 ror r4,r3 sub r12,r2,r3 bic_s r12,r12,r2 and r12,r12,r4 .Loop: brne.d r12,0,.Lfound0 xor r6,r2,r5 ld.a r2,[r0,4] sub r12,r6,r3 bic r12,r12,r6 and.f r7,r12,r4 sub r12,r2,r3 bic_s r12,r12,r2 beq.d .Loop and r12,r12,r4 ; Found searched-for character. r0 has already advanced to next word. #ifdef __LITTLE_ENDIAN__ /* We only need the information about the first matching byte (i.e. the least significant matching byte) to be exact, hence there is no problem with carry effects. */ .Lfound_char: btst r7,7 .Lfound_char_ua: sub_s r0,r0,4 add.eq r0,r0,1 btst.eq r7,15 add.eq r0,r0,1 btst.eq r7,23 j_s.d [blink] add.eq r0,r0,1 .balign 4 .Lfound0_ua: mov_l r3,r7 .Lfound0: sub r2,r6,r3 bic r2,r2,r6 and r2,r2,r4 or r3,r12,r2 sub_s r12,r3,1 xor_s r3,r3,r12 cmp 0xffff,r3 ; cmp uses limm ; ARC600 would do: asl.f 0,r3,9 tst_s r2,r3 mov.eq r0,0 add.mi r0,r0,1 btst.ne r3,15 j_s.d [blink] adc.ne r0,r0,1 #else /* BIG ENDIAN */ .Lfound_char: and r2,r6,r3 sub1 r2,r3,r2 sub_s r0,r0,4 bic.f r2,r7,r2 .Lfound_char_ua: add.pl r0,r0,1 jmi.d [blink] btst_s r2,23 add.eq r0,r0,1 btst.eq r2,15 j_s.d [blink] add.eq r0,r0,1 ; N.B. if we searched for a char zero and found it in the MSB, ; and ignored matches are identical, we will take the early exit ; like for an ordinary found zero - except for the extra stalls at jhi - ; but still compute the right result. .Lfound0_ua: mov_s r3,r7 .Lfound0: and_s r2,r2,r3 sub1 r2,r3,r2 or r7,r6,r4 bic_s r12,r12,r2 sub r2,r7,r3 or r2,r2,r6 bic r2,r4,r2 cmp_s r12,r2 mov.hi r0,0 btst.ls r2,31 jhi.d [blink] add.eq r0,r0,1 btst.eq r2,23 add.eq r0,r0,1 btst.eq r2,15 j_s.d [blink] add.eq r0,r0,1 #endif /* ENDIAN */ ENDFUNC (strchr) #endif /* __ARC601__ || !__ARC_BARREL_SHIFTER__ */ #endif /* !__OPTIMIZE_SIZE__ && !PREFER_SIZE_OVER_SPEED */ picolibc-1.7.4/newlib/libc/machine/arc/strcmp-archs.S000066400000000000000000000056311414576234500224230ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This implementation is optimized for performance. For code size a generic implementation of this function from newlib/libc/string/strcmp.c will be used. */ #if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) #include "asm.h" #ifdef __ARCHS__ ENTRY (strcmp) or r2, r0, r1 bmsk_s r2, r2, 1 brne r2, 0, @.Lcharloop ; s1 and s2 are word aligned ld.ab r2, [r0, 4] mov_s r12, 0x01010101 ror r11, r12 .align 4 .LwordLoop: ld.ab r3, [r1, 4] ; Detect NULL char in str1 sub r4, r2, r12 ld.ab r5, [r0, 4] bic r4, r4, r2 and r4, r4, r11 brne.d.nt r4, 0, .LfoundNULL ; Check if the read locations are the same cmp r2, r3 beq.d .LwordLoop mov.eq r2, r5 ; A match is found, spot it out #ifdef __LITTLE_ENDIAN__ swape r3, r3 mov_s r0, 1 swape r2, r2 #else mov_s r0, 1 #endif cmp_s r2, r3 j_s.d [blink] bset.lo r0, r0, 31 .align 4 .LfoundNULL: #ifdef __BIG_ENDIAN__ swape r4, r4 swape r2, r2 swape r3, r3 #endif ; Find null byte ffs r0, r4 bmsk r2, r2, r0 bmsk r3, r3, r0 swape r2, r2 swape r3, r3 ; make the return value sub.f r0, r2, r3 mov.hi r0, 1 j_s.d [blink] bset.lo r0, r0, 31 .align 4 .Lcharloop: ldb.ab r2, [r0, 1] ldb.ab r3, [r1, 1] nop breq r2, 0, .Lcmpend breq r2, r3, .Lcharloop .align 4 .Lcmpend: j_s.d [blink] sub r0, r2, r3 ENDFUNC (strcmp) #endif /* __ARCHS__ */ #endif /* !__OPTIMIZE_SIZE__ && !PREFER_SIZE_OVER_SPEED */ picolibc-1.7.4/newlib/libc/machine/arc/strcmp-stub.c000066400000000000000000000032401414576234500223120ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) # include "../../string/strcmp.c" #else /* See strcmp-*.S. */ #endif picolibc-1.7.4/newlib/libc/machine/arc/strcmp.S000066400000000000000000000105271414576234500213250ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This implementation is optimized for performance. For code size a generic implementation of this function from newlib/libc/string/strcmp.c will be used. */ #if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) #include "asm.h" /* This is optimized primarily for the ARC700. It would be possible to speed up the loops by one cycle / word respective one cycle / byte by forcing double source 1 alignment, unrolling by a factor of two, and speculatively loading the second word / byte of source 1; however, that would increase the overhead for loop setup / finish, and strcmp might often terminate early. */ #ifndef __ARCHS__ ENTRY (strcmp) or r2,r0,r1 bmsk_s r2,r2,1 brne_l r2,0,.Lcharloop mov_s r12,0x01010101 ror r5,r12 .Lwordloop: ld.ab r2,[r0,4] ld.ab r3,[r1,4] nop_s sub r4,r2,r12 bic r4,r4,r2 and r4,r4,r5 brne_l r4,0,.Lfound0 breq r2,r3,.Lwordloop #ifdef __LITTLE_ENDIAN__ xor r0,r2,r3 ; mask for difference sub_s r1,r0,1 bic_s r0,r0,r1 ; mask for least significant difference bit sub r1,r5,r0 xor r0,r5,r1 ; mask for least significant difference byte and_s r2,r2,r0 and_s r3,r3,r0 #endif /* LITTLE ENDIAN */ cmp_s r2,r3 mov_s r0,1 j_s.d [blink] bset.lo r0,r0,31 .balign 4 #ifdef __LITTLE_ENDIAN__ .Lfound0: xor r0,r2,r3 ; mask for difference or r0,r0,r4 ; or in zero indicator sub_s r1,r0,1 bic_s r0,r0,r1 ; mask for least significant difference bit sub r1,r5,r0 xor r0,r5,r1 ; mask for least significant difference byte and_s r2,r2,r0 and_s r3,r3,r0 sub.f r0,r2,r3 mov.hi r0,1 j_s.d [blink] bset.lo r0,r0,31 #else /* BIG ENDIAN */ /* The zero-detection above can mis-detect 0x01 bytes as zeroes because of carry-propagateion from a lower significant zero byte. We can compensate for this by checking that bit0 is zero. This compensation is not necessary in the step where we get a low estimate for r2, because in any affected bytes we already have 0x00 or 0x01, which will remain unchanged when bit 7 is cleared. */ .balign 4 .Lfound0: #ifdef __ARC_BARREL_SHIFTER__ lsr r0,r4,8 lsr_s r1,r2 bic_s r2,r2,r0 ; get low estimate for r2 and get ... bic_s r0,r0,r1 ; or_s r3,r3,r0 ; ... high estimate r3 so that r2 > r3 will ... cmp_s r3,r2 ; ... be independent of trailing garbage or_s r2,r2,r0 ; likewise for r3 > r2 bic_s r3,r3,r0 rlc r0,0 ; r0 := r2 > r3 ? 1 : 0 cmp_s r2,r3 j_s.d [blink] bset.lo r0,r0,31 #else /* __ARC_BARREL_SHIFTER__ */ /* Fall through to .Lcharloop. */ sub_s r0,r0,4 sub_s r1,r1,4 #endif /* __ARC_BARREL_SHIFTER__ */ #endif /* ENDIAN */ .balign 4 .Lcharloop: ldb.ab r2,[r0,1] ldb.ab r3,[r1,1] nop_s breq_l r2,0,.Lcmpend breq r2,r3,.Lcharloop .Lcmpend: j_s.d [blink] sub r0,r2,r3 ENDFUNC (strcmp) #endif /* !__ARCHS__ */ #endif /* !__OPTIMIZE_SIZE__ && !PREFER_SIZE_OVER_SPEED */ picolibc-1.7.4/newlib/libc/machine/arc/strcpy-bs-arc600.S000066400000000000000000000065651414576234500227430ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This implementation is optimized for performance. For code size a generic implementation of this function from newlib/libc/string/strcpy.c will be used. */ #if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) #include "asm.h" #if defined (__ARC600__) && defined (__ARC_BARREL_SHIFTER__) /* If dst and src are 4 byte aligned, copy 8 bytes at a time. If the src is 4, but not 8 byte aligned, we first read 4 bytes to get it 8 byte aligned. Thus, we can do a little read-ahead, without dereferencing a cache line that we should not touch. Note that short and long instructions have been scheduled to avoid branch stalls. This version is optimized for the ARC600 pipeline. */ ENTRY (strcpy) or r2,r0,r1 bmsk.f 0,r2,1 mov r8,0x01010101 bne.d .Lcharloop mov_s r10,r0 ld_l r3,[r1,0] bbit0.d r1,2,.Loop_setup ror r12,r8 sub r2,r3,r8 bic_s r2,r2,r3 and_s r2,r2,r12 brne_s r2,0,.Lr3z st.ab r3,[r10,4] ld.a r3,[r1,4] .Loop_setup: ld.a r4,[r1,4] sub r2,r3,r8 and.f r2,r2,r12 sub r5,r4,r8 and.eq.f r5,r5,r12 b.d .Loop_start mov_s r6,r3 .balign 4 .Loop: ld.a r3,[r1,4] st r4,[r10,4] ld.a r4,[r1,4] sub r2,r3,r8 and.f r2,r2,r12 sub r5,r4,r8 and.eq.f r5,r5,r12 st.ab r6,[r10,8] mov r6,r3 .Loop_start: beq.d .Loop bic_s r2,r2,r3 brne.d r2,0,.Lr3z and r5,r5,r12 bic r5,r5,r4 breq.d r5,0,.Loop mov_s r3,r4 st.ab r6,[r10,4] #ifdef __LITTLE_ENDIAN__ .Lr3z: bmsk.f r1,r3,7 .Lr3z_loop: lsr_s r3,r3,8 stb.ab r1,[r10,1] bne.d .Lr3z_loop bmsk.f r1,r3,7 j_s [blink] #else .Lr3z: lsr.f r1,r3,24 .Lr3z_loop: asl_s r3,r3,8 stb.ab r1,[r10,1] bne.d .Lr3z_loop lsr.f r1,r3,24 j_s [blink] #endif .balign 4 .Lcharloop: ldb.ab r3,[r1,1] brne.d r3,0,.Lcharloop stb.ab r3,[r10,1] j [blink] ENDFUNC (strcpy) #endif /* __ARC600__ && __ARC_BARREL_SHIFTER__ */ #endif /* !__OPTIMIZE_SIZE__ && !PREFER_SIZE_OVER_SPEED */ picolibc-1.7.4/newlib/libc/machine/arc/strcpy-bs.S000066400000000000000000000063721414576234500217460ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This implementation is optimized for performance. For code size a generic implementation of this function from newlib/libc/string/strcpy.c will be used. */ #if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) #include "asm.h" #if (defined (__ARC700__) || defined (__ARCEM__) || defined (__ARCHS__)) \ && defined (__ARC_BARREL_SHIFTER__) /* If dst and src are 4 byte aligned, copy 8 bytes at a time. If the src is 4, but not 8 byte aligned, we first read 4 bytes to get it 8 byte aligned. Thus, we can do a little read-ahead, without dereferencing a cache line that we should not touch. Note that short and long instructions have been scheduled to avoid branch stalls. The beq_s to r3z could be made unaligned & long to avoid a stall there, but the it is not likely to be taken often, and it would also be likey to cost an unaligned mispredict at the next call. */ ENTRY (strcpy) or r2,r0,r1 bmsk_s r2,r2,1 brne.d r2,0,charloop mov_s r10,r0 ld_s r3,[r1,0] mov r8,0x01010101 bbit0.d r1,2,loop_start ror r12,r8 sub r2,r3,r8 bic_s r2,r2,r3 tst_s r2,r12 bne_l r3z mov_s r4,r3 .balign 4 loop: ld.a r3,[r1,4] st.ab r4,[r10,4] loop_start: ld.a r4,[r1,4] sub r2,r3,r8 bic_s r2,r2,r3 tst_l r2,r12 bne_l r3z st.ab r3,[r10,4] sub r2,r4,r8 bic r2,r2,r4 tst_l r2,r12 beq_l loop mov_s r3,r4 #ifdef __LITTLE_ENDIAN__ r3z: bmsk.f r1,r3,7 lsr_s r3,r3,8 #else r3z: lsr.f r1,r3,24 asl_s r3,r3,8 #endif bne.d r3z stb.ab r1,[r10,1] j_s [blink] .balign 4 charloop: ldb.ab r3,[r1,1] brne.d r3,0,charloop stb.ab r3,[r10,1] j [blink] ENDFUNC (strcpy) #endif /* (__ARC700__ || __ARCEM__ || __ARCHS__) && __ARC_BARREL_SHIFTER__ */ #endif /* !__OPTIMIZE_SIZE__ && !PREFER_SIZE_OVER_SPEED */ picolibc-1.7.4/newlib/libc/machine/arc/strcpy-stub.c000066400000000000000000000032401414576234500223260ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) # include "../../string/strcpy.c" #else /* See strcpy-*.S. */ #endif picolibc-1.7.4/newlib/libc/machine/arc/strcpy.S000066400000000000000000000055751414576234500213500ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This implementation is optimized for performance. For code size a generic implementation of this function from newlib/libc/string/strcpy.c will be used. */ #if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) #include "asm.h" #if defined (__ARC601__) || !defined (__ARC_BARREL_SHIFTER__) /* If dst and src are 4 byte aligned, copy 8 bytes at a time. If the src is 4, but not 8 byte aligned, we first read 4 bytes to get it 8 byte aligned. Thus, we can do a little read-ahead, without dereferencing a cache line that we should not touch. This version is a compromise between speed for the 601 pipeline and code size. */ ENTRY (strcpy) or r2,r0,r1 bmsk.f 0,r2,1 mov r8,0x01010101 bne.d .Lcharloop mov_s r10,r0 ld_s r3,[r1] bbit0.d r1,2,.Loop_start ror r12,r8 sub r2,r3,r8 bic_s r2,r2,r3 and_s r2,r2,r12 brne_s r2,0,.Lr3z mov r4,r3 sub_s r1,r1,4 .balign 4 .Loop: ld.a r3,[r1,8] st.ab r4,[r10,4] .Loop_start: ld r4,[r1,4] sub r2,r3,r8 bic_s r2,r2,r3 tst_s r2,r12 sub r5,r4,r8 bic r5,r5,r4 bne_s .Lr3z and r5,r5,r12 breq.d r5,0,.Loop st.ab r3,[r10,4] ;mov_s r3,r4 add_s r1,r1,4 .balign 4 .Lr3z: .Lcharloop: ldb.ab r3,[r1,1] brne.d r3,0,.Lcharloop stb.ab r3,[r10,1] j_s [blink] ENDFUNC (strcpy) #endif /* __ARC601__ || !__ARC_BARREL_SHIFTER__ */ #endif /* !__OPTIMIZE_SIZE__ && !PREFER_SIZE_OVER_SPEED */ picolibc-1.7.4/newlib/libc/machine/arc/strlen-bs-norm.S000066400000000000000000000063051414576234500226760ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This implementation is optimized for performance. For code size a generic implementation of this function from newlib/libc/string/strlen.c will be used. */ #if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) #include "asm.h" #if (defined (__ARC700__) || defined (__ARCEM__) || defined (__ARCHS__)) \ && defined (__ARC_NORM__) && defined (__ARC_BARREL_SHIFTER__) ENTRY (strlen) or r3,r0,7 ld r2,[r3,-7] ld.a r6,[r3,-3] mov r4,0x01010101 ; uses long immediate #ifdef __LITTLE_ENDIAN__ asl_s r1,r0,3 btst_s r0,2 asl r7,r4,r1 ror r5,r4 sub r1,r2,r7 bic_s r1,r1,r2 mov.eq r7,r4 sub r12,r6,r7 bic r12,r12,r6 or.eq r12,r12,r1 and r12,r12,r5 brne r12,0,.Learly_end #else /* BIG ENDIAN */ ror r5,r4 btst_s r0,2 mov_s r1,31 sub3 r7,r1,r0 sub r1,r2,r4 bic_s r1,r1,r2 bmsk r1,r1,r7 sub r12,r6,r4 bic r12,r12,r6 bmsk.ne r12,r12,r7 or.eq r12,r12,r1 and r12,r12,r5 brne r12,0,.Learly_end #endif /* ENDIAN */ .Loop: ld_s r2,[r3,4] ld.a r6,[r3,8] ; stall for load result sub r1,r2,r4 bic_s r1,r1,r2 sub r12,r6,r4 bic r12,r12,r6 or_l r12,r12,r1 and r12,r12,r5 breq_l r12,0,.Loop .Lend: and.f r1,r1,r5 sub.ne r3,r3,4 mov.eq r1,r12 #ifdef __LITTLE_ENDIAN__ sub_s r2,r1,1 bic_s r2,r2,r1 norm r1,r2 sub_s r0,r0,3 lsr_s r1,r1,3 sub r0,r3,r0 j_s.d [blink] sub_l r0,r0,r1 #else /* BIG ENDIAN */ lsr_s r1,r1,7 mov.eq r2,r6 bic_s r1,r1,r2 norm r1,r1 sub r0,r3,r0 lsr_s r1,r1,3 j_s.d [blink] add_l r0,r0,r1 #endif /* ENDIAN */ .Learly_end: b.d .Lend sub_s.ne r1,r1,r1 ENDFUNC (strlen) #endif /* (__ARC700__ || __ARCEM__ || __ARCHS__) && __ARC_NORM__ && __ARC_BARREL_SHIFTER__ */ #endif /* !__OPTIMIZE_SIZE__ && !PREFER_SIZE_OVER_SPEED */ picolibc-1.7.4/newlib/libc/machine/arc/strlen-bs.S000066400000000000000000000064311414576234500217250ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This implementation is optimized for performance. For code size a generic implementation of this function from newlib/libc/string/strlen.c will be used. */ #if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) #include "asm.h" #if (defined (__ARC600__) || !defined (__ARC_NORM__)) && !defined (__ARC601__) \ && defined (__ARC_BARREL_SHIFTER__) /* This code is optimized for the ARC600 pipeline. */ ENTRY (strlen) or r3,r0,7 ld r2,[r3,-7] ld.a r6,[r3,-3] mov r4,0x01010101 ; uses long immediate #ifdef __LITTLE_ENDIAN__ asl_s r1,r0,3 btst_s r0,2 asl r7,r4,r1 ror r5,r4 sub r1,r2,r7 bic_l r1,r1,r2 mov.eq r7,r4 sub r12,r6,r7 bic r12,r12,r6 or.eq r12,r12,r1 and r12,r12,r5 brne r12,0,.Learly_end #else /* BIG ENDIAN */ ror r5,r4 btst_s r0,2 mov_s r1,31 sub3 r7,r1,r0 sub r1,r2,r4 bic_l r1,r1,r2 bmsk r1,r1,r7 sub r12,r6,r4 bic r12,r12,r6 bmsk.ne r12,r12,r7 or.eq r12,r12,r1 and r12,r12,r5 brne r12,0,.Learly_end #endif /* ENDIAN */ .Loop: ld_s r2,[r3,4] ld.a r6,[r3,8] ; stall for load result sub r1,r2,r4 bic_s r1,r1,r2 sub r12,r6,r4 bic r12,r12,r6 or_s r12,r12,r1 and r12,r12,r5 breq_s r12,0,.Loop .Lend: and.f r1,r1,r5 sub.ne r3,r3,4 #ifdef __LITTLE_ENDIAN__ mov.eq r1,r12 asr.f 0,r1,8 bmsk.f 0,r1,15 sub r0,r3,r0 add.cc r0,r0,1 jne.d [blink] asl.f 0,r1,9 j_s.d [blink] sbc r0,r0,-2 #else /* BIG ENDIAN */ mov.eq r2,r6 asl_s r2,r2,7 mov.eq r1,r12 bic_s r1,r1,r2 asr.f 0,r1,16 sub r0,r3,r0 add.pl r0,r0,1 jne.d [blink] add.eq r0,r0,1 j_s.d [blink] add.cc r0,r0,1 #endif /* ENDIAN */ .balign 4 .Learly_end: b.d .Lend sub_s.ne r1,r1,r1 ENDFUNC (strlen) #endif /* (__ARC600__ || !__ARC_NORM__) && !__ARC601__ && __ARC_BARREL_SHIFTER__ */ #endif /* !__OPTIMIZE_SIZE__ && !PREFER_SIZE_OVER_SPEED */ picolibc-1.7.4/newlib/libc/machine/arc/strlen-stub.c000066400000000000000000000032401414576234500223110ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) # include "../../string/strlen.c" #else /* See strlen-*.S. */ #endif picolibc-1.7.4/newlib/libc/machine/arc/strlen.S000066400000000000000000000100571414576234500213220ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This implementation is optimized for performance. For code size a generic implementation of this function from newlib/libc/string/strlen.c will be used. */ #if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) #include "asm.h" #if defined(__ARC601__) || !defined (__ARC_BARREL_SHIFTER__) /* This code is optimized for the ARC601 pipeline without barrel shifter. */ ENTRY (strlen) or r3,r0,7 ld r2,[r3,-7] ld.a r6,[r3,-3] mov r4,0x01010101 ; uses long immediate #ifdef __LITTLE_ENDIAN__ bmsk.f 0,r0,1 mov_s r1,31 add3_s r1,r1,r0 bmsk r7,r4,r1 xor.ne r7,r7,r4 btst_s r0,2 ror r5,r4 sub r1,r2,r7 bic_s r1,r1,r2 mov.eq r7,r4 sub r12,r6,r7 bic r12,r12,r6 or.eq r12,r12,r1 and r12,r12,r5 brne r12,0,.Learly_end #else /* BIG ENDIAN */ add.f r1,r4,30 ; r1 mod 31 := -1; clear carry ror r5,r4 sub3 r7,r1,r0 btst_s r0,2 sub r1,r2,r4 bic_s r1,r1,r2 bmsk r1,r1,r7 sub r12,r6,r4 bic r12,r12,r6 bmsk.ne r12,r12,r7 or.eq r12,r12,r1 and r12,r12,r5 brne r12,0,.Learly_end #endif /* ENDIAN */ .Loop: ld_s r2,[r3,4] ld.a r6,[r3,8] ; stall for load result sub r1,r2,r4 bic_s r1,r1,r2 sub r12,r6,r4 bic r12,r12,r6 or_s r12,r12,r1 and r12,r12,r5 breq_s r12,0,.Loop .Lend: and.f r1,r1,r5 sub.ne r3,r3,4 #ifdef __LITTLE_ENDIAN__ mov.eq r1,r12 btst_s r1,7 sub r0,r3,r0 add.eq r0,r0,1 bmsk.f 0,r1,15 add.eq r0,r0,1 bmsk.f 0,r1,23 j_s.d [blink] add.eq r0,r0,1 #else /* BIG ENDIAN */ #ifdef __OPTIMIZE_SIZE__ 1: ldb_s r1,[r3] breq_s r1,0,0f ldb.a r1,[r3,1] breq_s r1,0,0f ldb.a r1,[r3,1] breq_s r1,0,0f add_s r3,r3,1 0: j_s.d [blink] sub r0,r3,r0 #define SPECIAL_EARLY_END .Learly_end: mov_s r3,r0 b_s 1b #elif 0 /* Need more information about pipeline to assess if this is faster. */ mov.eq r2,r6 and r2,r2,r5 sub1 r2,r4,r2 mov.eq r1,r12 bic.f r1,r1,r2 sub r0,r3,r0 add.pl r0,r0,1 btst.pl r1,23 add.eq r0,r0,1 btst.eq r1,15 j_s.d [blink] add.eq r0,r0,1 #else /* !__OPTIMIZE_SIZE__ */ /* Need carry clear here. */ mov.eq r2,r6 1: bmsk r1,r2,23 breq r1,r2,0f bmsk r2,r1,15 breq.d r1,r2,0f add_s r3,r3,1 cmp r2,0x100 add_s r3,r3,2 0: j_s.d [blink] sbc r0,r3,r0 #define SPECIAL_EARLY_END .Learly_end: sub_s.ne r1,r1,r1 mov_s r12,0 bset r12,r12,r7 sub1 r2,r2,r12 b.d .Lend sub1.ne r6,r6,r12 #endif /* !__OPTIMIZE_SIZE__ */ #endif /* ENDIAN */ #ifndef SPECIAL_EARLY_END .balign 4 .Learly_end: b.d .Lend sub_s.ne r1,r1,r1 #endif /* !SPECIAL_EARLY_END */ ENDFUNC (strlen) #endif /* __ARC601__ || !__ARC_BARREL_SHIFTER__*/ #endif /* !__OPTIMIZE_SIZE__ && !PREFER_SIZE_OVER_SPEED */ picolibc-1.7.4/newlib/libc/machine/arc/strncpy-bs.S000066400000000000000000000110231414576234500221110ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This implementation is optimized for performance. For code size a generic implementation of this function from newlib/libc/string/strncpy.c will be used. */ #if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) #include "asm.h" /* If dst and src are 4 byte aligned, copy 8 bytes at a time. If the src is 4, but not 8 byte aligned, we first read 4 bytes to get it 8 byte aligned. Thus, we can do a little read-ahead, without dereferencing a cache line that we should not touch. Note that short and long instructions have been scheduled to avoid branch stalls. The beq_s to r3z could be made unaligned & long to avoid a stall there, but the it is not likely to be taken often, and it would also be likey to cost an unaligned mispredict at the next call. */ #if !defined (__ARC601__) && defined (__ARC_BARREL_SHIFTER__) #if defined (__ARC700___) || defined (__ARCEM__) || defined (__ARCHS__) #define BRand(a,b,l) tst a,b ` bne_l l #else #define BRand(a,b,l) and a,a,b ` brne_s a,0,l #endif ENTRY (strncpy) cmp_s r2,8 or r12,r0,r1 bmsk.cc.f r12,r12,1 brne.d r12,0,.Lbytewise mov_s r10,r0 ld_s r3,[r1,0] mov r8,0x01010101 sub lp_count,r2,1 bbit0.d r1,2,.Loop_start ror r11,r8 sub r12,r3,r8 bic_l r12,r12,r3 BRand (r12,r11,.Lr3z) mov_s r4,r3 ld.a r3,[r1,4] sub lp_count,lp_count,4 st.ab r4,[r10,4] .balign 4 .Loop_start: lsr.f lp_count,lp_count,3 lpne .Loop_end ld.a r4,[r1,4] sub r12,r3,r8 bic_s r12,r12,r3 BRand (r12,r11,.Lr3z) st.ab r3,[r10,4] sub r12,r4,r8 bic r12,r12,r4 BRand (r12,r11,.Lr4z) ld.a r3,[r1,4] st.ab r4,[r10,4] .Loop_end: bcc_s .Lastword ld.a r4,[r1,4] sub r12,r3,r8 bic_s r12,r12,r3 BRand (r12,r11,.Lr3z) st.ab r3,[r10,4] mov_s r3,r4 .Lastword: and.f lp_count,r2,3 mov.eq lp_count,4 lp .Last_byte_end #ifdef __LITTLE_ENDIAN__ bmsk.f r1,r3,7 lsr.ne r3,r3,8 #else lsr.f r1,r3,24 asl.ne r3,r3,8 #endif stb.ab r1,[r10,1] .Last_byte_end: j_s [blink] .balign 4 .Lr4z: mov_l r3,r4 .Lr3z: #if defined (__ARC700__) || defined (__ARCEM__) || defined (__ARCHS__) #ifdef __LITTLE_ENDIAN__ bmsk.f r1,r3,7 lsr_s r3,r3,8 #else lsr.f r1,r3,24 asl_s r3,r3,8 #endif bne.d .Lr3z stb.ab r1,[r10,1] #else /* ! __ARC700__ */ #ifdef __LITTLE_ENDIAN__ bmsk.f r1,r3,7 .Lr3z_loop: lsr_s r3,r3,8 stb.ab r1,[r10,1] bne.d .Lr3z_loop bmsk.f r1,r3,7 #else lsr.f r1,r3,24 .Lr3z_loop: asl_s r3,r3,8 stb.ab r1,[r10,1] bne.d .Lr3z_loop lsr.f r1,r3,24 #endif /* ENDIAN */ #endif /* ! __ARC700__ */ .Lzero_rest: ; __strncpy_bzero requires: ; return value in r0 ; zeroing length in r2 ; zeroing start address in r3 mov_s r3,r10 add_s r2,r2,r0 b.d __strncpy_bzero sub_s r2,r2,r3 .balign 4 .Lbytewise: sub.f r2,r2,1 mov_l r3,r0 jcs [blink] .Lcharloop: ldb.ab r12,[r1,1] beq.d .Last_byte sub.f r2,r2,1 brne.d r12,0,.Lcharloop stb.ab r12,[r3,1] b.d __strncpy_bzero stb.ab r12,[r3,1] .Last_byte: j_s.d [blink] stb_l r12,[r3] ENDFUNC (strncpy) #endif /* !__ARC601__ && __ARC_BARREL_SHIFTER__ */ #endif /* !__OPTIMIZE_SIZE__ && !PREFER_SIZE_OVER_SPEED */ picolibc-1.7.4/newlib/libc/machine/arc/strncpy-stub.c000066400000000000000000000032421414576234500225060ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) # include "../../string/strncpy.c" #else /* See strncpy-*.S. */ #endif picolibc-1.7.4/newlib/libc/machine/arc/strncpy.S000066400000000000000000000072061414576234500215170ustar00rootroot00000000000000/* Copyright (c) 2015, Synopsys, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This implementation is optimized for performance. For code size a generic implementation of this function from newlib/libc/string/strncpy.c will be used. */ #if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) #include "asm.h" /* If dst and src are 4 byte aligned, copy 8 bytes at a time. If the src is 4, but not 8 byte aligned, we first read 4 bytes to get it 8 byte aligned. Thus, we can do a little read-ahead, without dereferencing a cache line that we should not touch. */ #if defined (__ARC601__) || !defined (__ARC_BARREL_SHIFTER__) #define BRand(a,b,l) and a,a,b ` brne_s a,0,l ENTRY (strncpy) cmp_s r2,8 or r12,r0,r1 bmsk.cc.f r12,r12,1 brne.d r12,0,.Lbytewise mov_s r10,r0 ld_s r3,[r1,0] mov r8,0x01010101 add r6,r0,r2 sub r6,r6,8 bbit0.d r1,2,.Loop_start ror r11,r8 sub r12,r3,r8 bic_l r12,r12,r3 BRand (r12,r11,.Lr3z) mov_s r4,r3 ld.a r3,[r1,4] st.ab r4,[r10,4] .balign 4 .Loop_start: brhs r10,r6,.Loop_end 1: ld.a r4,[r1,4] sub r12,r3,r8 bic_s r12,r12,r3 BRand (r12,r11,.Lr3z2) st.ab r3,[r10,8] sub r12,r4,r8 bic r12,r12,r4 BRand (r12,r11,.Lr4z) ld.a r3,[r1,4] brlo.d r10,r6,1b st r4,[r10,-4] .Loop_end: add r6,r6,4 brhs r10,r6,.Lastword sub r12,r3,r8 bic_s r12,r12,r3 BRand (r12,r11,.Lr3z) add_s r1,r1,4 st.ab r3,[r10,4] .Lastword: sub_s r2,r2,1 b.d .Lstart_charloop bmsk.f r2,r2,1 .balign 4 nop_s .Lr3z2: sub_s r1,r1,4 .Lr4z: .Lr3z: .balign 4 .Lr3z_loop: ldb.ab r3,[r1,1] brne.d r3,0,.Lr3z_loop stb.ab r3,[r10,1] .Lzero_rest: ; __strncpy_bzero requires: ; return value in r0 ; zeroing length in r2 ; zeroing start address in r3 mov_s r3,r10 add_s r2,r2,r0 b.d __strncpy_bzero sub_s r2,r2,r3 .balign 4 .Lbytewise: sub.f r2,r2,1 jcs [blink] .Lstart_charloop: mov_s r3,r10 .Lcharloop: ldb.ab r12,[r1,1] beq.d .Last_byte sub.f r2,r2,1 brne.d r12,0,.Lcharloop stb.ab r12,[r3,1] b.d __strncpy_bzero stb.ab r12,[r3,1] .Last_byte: j_s.d [blink] stb_s r12,[r3] ENDFUNC (strncpy) #endif /* __ARC601__ || !__ARC_BARREL_SHIFTER__ */ #endif /* !__OPTIMIZE_SIZE__ && !PREFER_SIZE_OVER_SPEED */ picolibc-1.7.4/newlib/libc/machine/arm/000077500000000000000000000000001414576234500176765ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/arm/acle-compat.h000066400000000000000000000125711414576234500222420ustar00rootroot00000000000000/* * Copyright (c) 2014 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef __ARM_ARCH /* ACLE standardises a set of pre-defines that describe the ARM architecture. These were mostly implemented in GCC around GCC-4.8; older versions have no, or only partial support. To provide a level of backwards compatibility we try to work out what the definitions should be, given the older pre-defines that GCC did produce. This isn't complete, but it should be enough for use by routines that depend on this header. */ /* No need to handle ARMv8, GCC had ACLE support before that. */ # ifdef __ARM_ARCH_7__ /* The common subset of ARMv7 in all profiles. */ # define __ARM_ARCH 7 # define __ARM_ARCH_ISA_THUMB 2 # define __ARM_FEATURE_CLZ # define __ARM_FEATURE_LDREX 7 # define __ARM_FEATURE_UNALIGNED # endif # if defined (__ARM_ARCH_7A__) || defined (__ARM_ARCH_7R__) # define __ARM_ARCH 7 # define __ARM_ARCH_ISA_THUMB 2 # define __ARM_ARCH_ISA_ARM # define __ARM_FEATURE_CLZ # define __ARM_FEATURE_SIMD32 # define __ARM_FEATURE_DSP # define __ARM_FEATURE_QBIT # define __ARM_FEATURE_SAT # define __ARM_FEATURE_LDREX 15 # define __ARM_FEATURE_UNALIGNED # ifdef __ARM_ARCH_7A__ # define __ARM_ARCH_PROFILE 'A' # else # define __ARM_ARCH_PROFILE 'R' # endif # endif # ifdef __ARM_ARCH_7EM__ # define __ARM_ARCH 7 # define __ARM_ARCH_ISA_THUMB 2 # define __ARM_FEATURE_CLZ # define __ARM_FEATURE_SIMD32 # define __ARM_FEATURE_DSP # define __ARM_FEATURE_QBIT # define __ARM_FEATURE_SAT # define __ARM_FEATURE_LDREX 7 # define __ARM_FEATURE_UNALIGNED # define __ARM_ARCH_PROFILE 'M' # endif # ifdef __ARM_ARCH_7M__ # define __ARM_ARCH 7 # define __ARM_ARCH_ISA_THUMB 2 # define __ARM_FEATURE_CLZ # define __ARM_FEATURE_QBIT # define __ARM_FEATURE_SAT # define __ARM_FEATURE_LDREX 7 # define __ARM_FEATURE_UNALIGNED # define __ARM_ARCH_PROFILE 'M' # endif # ifdef __ARM_ARCH_6T2__ # define __ARM_ARCH 6 # define __ARM_ARCH_ISA_THUMB 2 # define __ARM_ARCH_ISA_ARM # define __ARM_FEATURE_CLZ # define __ARM_FEATURE_SIMD32 # define __ARM_FEATURE_DSP # define __ARM_FEATURE_QBIT # define __ARM_FEATURE_SAT # define __ARM_FEATURE_LDREX 4 # define __ARM_FEATURE_UNALIGNED # endif # ifdef __ARM_ARCH_6M__ # define __ARM_ARCH 6 # define __ARM_ARCH_ISA_THUMB 1 # define __ARM_ARCH_PROFILE 'M' # endif # if defined (__ARM_ARCH_6__) || defined (__ARM_ARCH_6J__) \ || defined (__ARM_ARCH_6K__) || defined (__ARM_ARCH_6Z__) \ || defined (__ARM_ARCH_6ZK__) # define __ARM_ARCH 6 # define __ARM_ARCH_ISA_THUMB 1 # define __ARM_ARCH_ISA_ARM # define __ARM_FEATURE_CLZ # define __ARM_FEATURE_SIMD32 # define __ARM_FEATURE_DSP # define __ARM_FEATURE_QBIT # define __ARM_FEATURE_SAT # define __ARM_FEATURE_UNALIGNED # ifndef __thumb__ # if defined (__ARM_ARCH_6K__) || defined (__ARM_ARCH_6ZK__) # define __ARM_FEATURE_LDREX 15 # else # define __ARM_FEATURE_LDREX 4 # endif # endif # endif # if defined (__ARM_ARCH_5TE__) || defined (__ARM_ARCH_5E__) # define __ARM_ARCH 5 # define __ARM_ARCH_ISA_ARM # ifdef __ARM_ARCH_5TE__ # define __ARM_ARCH_ISA_THUMB 1 # endif # define __ARM_FEATURE_CLZ # define __ARM_FEATURE_DSP # endif # if defined (__ARM_ARCH_5T__) || defined (__ARM_ARCH_5__) # define __ARM_ARCH 5 # define __ARM_ARCH_ISA_ARM # ifdef __ARM_ARCH_5TE__ # define __ARM_ARCH_ISA_THUMB 1 # endif # define __ARM_FEATURE_CLZ # endif # ifdef __ARM_ARCH_4T__ # define __ARM_ARCH 4 # define __ARM_ARCH_ISA_ARM # define __ARM_ARCH_ISA_THUMB 1 # endif # ifdef __ARM_ARCH_4__ # define __ARM_ARCH 4 # define __ARM_ARCH_ISA_ARM # endif # if defined (__ARM_ARCH_3__) || defined (__ARM_ARCH_3M__) # define __ARM_ARCH 3 # define __ARM_ARCH_ISA_ARM # endif # ifdef __ARM_ARCH_2__ # define __ARM_ARCH 2 # define __ARM_ARCH_ISA_ARM # endif # ifdef __ARMEB__ # define __ARM_BIG_ENDIAN # endif /* If we still don't know what the target architecture is, then we're probably not using GCC. */ # ifndef __ARM_ARCH # error Unable to determine architecture version. # endif #endif /* __ARM_ARCH */ picolibc-1.7.4/newlib/libc/machine/arm/aeabi_memcpy-armv7a.S000066400000000000000000000243201414576234500236310ustar00rootroot00000000000000/* * Copyright (c) 2014 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "arm_asm.h" /* NOTE: This ifdef MUST match the one in aeabi_memcpy.c. */ #if !(defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) && \ defined (__ARM_ARCH_7A__) && defined (__ARM_FEATURE_UNALIGNED) && \ (defined (__ARM_NEON__) || !defined (__SOFTFP__)) .syntax unified .global __aeabi_memcpy .type __aeabi_memcpy, %function __aeabi_memcpy: /* Assumes that n >= 0, and dst, src are valid pointers. If there is at least 8 bytes to copy, use LDRD/STRD. If src and dst are misaligned with different offsets, first copy byte by byte until dst is aligned, and then copy using LDRD/STRD and shift if needed. When less than 8 left, copy a word and then byte by byte. */ /* Save registers (r0 holds the return value): optimized push {r0, r4, r5, lr}. To try and improve performance, stack layout changed, i.e., not keeping the stack looking like users expect (highest numbered register at highest address). */ push {r0, lr} strd r4, r5, [sp, #-8]! /* Get copying of tiny blocks out of the way first. */ /* Is there at least 4 bytes to copy? */ subs r2, r2, #4 blt copy_less_than_4 /* If n < 4. */ /* Check word alignment. */ ands ip, r0, #3 /* ip = last 2 bits of dst. */ bne dst_not_word_aligned /* If dst is not word-aligned. */ /* Get here if dst is word-aligned. */ ands ip, r1, #3 /* ip = last 2 bits of src. */ bne src_not_word_aligned /* If src is not word-aligned. */ word_aligned: /* Get here if source and dst both are word-aligned. The number of bytes remaining to copy is r2+4. */ /* Is there is at least 64 bytes to copy? */ subs r2, r2, #60 blt copy_less_than_64 /* If r2 + 4 < 64. */ /* First, align the destination buffer to 8-bytes, to make sure double loads and stores don't cross cache line boundary, as they are then more expensive even if the data is in the cache (require two load/store issue cycles instead of one). If only one of the buffers is not 8-bytes aligned, then it's more important to align dst than src, because there is more penalty for stores than loads that cross cacheline boundary. This check and realignment are only worth doing if there is a lot to copy. */ /* Get here if dst is word aligned, i.e., the 2 least significant bits are 0. If dst is not 2w aligned (i.e., the 3rd bit is not set in dst), then copy 1 word (4 bytes). */ ands r3, r0, #4 beq two_word_aligned /* If dst already two-word aligned. */ ldr r3, [r1], #4 str r3, [r0], #4 subs r2, r2, #4 blt copy_less_than_64 two_word_aligned: /* TODO: Align to cacheline (useful for PLD optimization). */ /* Every loop iteration copies 64 bytes. */ 1: .irp offset, #0, #8, #16, #24, #32, #40, #48, #56 ldrd r4, r5, [r1, \offset] strd r4, r5, [r0, \offset] .endr add r0, r0, #64 add r1, r1, #64 subs r2, r2, #64 bge 1b /* If there is more to copy. */ copy_less_than_64: /* Get here if less than 64 bytes to copy, -64 <= r2 < 0. Restore the count if there is more than 7 bytes to copy. */ adds r2, r2, #56 blt copy_less_than_8 /* Copy 8 bytes at a time. */ 2: ldrd r4, r5, [r1], #8 strd r4, r5, [r0], #8 subs r2, r2, #8 bge 2b /* If there is more to copy. */ copy_less_than_8: /* Get here if less than 8 bytes to copy, -8 <= r2 < 0. Check if there is more to copy. */ cmn r2, #8 beq return /* If r2 + 8 == 0. */ /* Restore the count if there is more than 3 bytes to copy. */ adds r2, r2, #4 blt copy_less_than_4 /* Copy 4 bytes. */ ldr r3, [r1], #4 str r3, [r0], #4 copy_less_than_4: /* Get here if less than 4 bytes to copy, -4 <= r2 < 0. */ /* Restore the count, check if there is more to copy. */ adds r2, r2, #4 beq return /* If r2 == 0. */ /* Get here with r2 is in {1,2,3}={01,10,11}. */ /* Logical shift left r2, insert 0s, update flags. */ lsls r2, r2, #31 /* Copy byte by byte. Condition ne means the last bit of r2 is 0. Condition cs means the second to last bit of r2 is set, i.e., r2 is 1 or 3. */ itt ne ldrbne r3, [r1], #1 strbne r3, [r0], #1 itttt cs ldrbcs r4, [r1], #1 ldrbcs r5, [r1] strbcs r4, [r0], #1 strbcs r5, [r0] return: /* Restore registers: optimized pop {r0, r4, r5, pc} */ ldrd r4, r5, [sp], #8 pop {r0, pc} /* This is the only return point of memcpy. */ dst_not_word_aligned: /* Get here when dst is not aligned and ip has the last 2 bits of dst, i.e., ip is the offset of dst from word. The number of bytes that remains to copy is r2 + 4, i.e., there are at least 4 bytes to copy. Write a partial word (0 to 3 bytes), such that dst becomes word-aligned. */ /* If dst is at ip bytes offset from a word (with 0 < ip < 4), then there are (4 - ip) bytes to fill up to align dst to the next word. */ rsb ip, ip, #4 /* ip = #4 - ip. */ cmp ip, #2 /* Copy byte by byte with conditionals. */ itt gt ldrbgt r3, [r1], #1 strbgt r3, [r0], #1 itt ge ldrbge r4, [r1], #1 strbge r4, [r0], #1 ldrb lr, [r1], #1 strb lr, [r0], #1 /* Update the count. ip holds the number of bytes we have just copied. */ subs r2, r2, ip /* r2 = r2 - ip. */ blt copy_less_than_4 /* If r2 < ip. */ /* Get here if there are more than 4 bytes to copy. Check if src is aligned. If beforehand src and dst were not word aligned but congruent (same offset), then now they are both word-aligned, and we can copy the rest efficiently (without shifting). */ ands ip, r1, #3 /* ip = last 2 bits of src. */ beq word_aligned /* If r1 is word-aligned. */ src_not_word_aligned: /* Get here when src is not word-aligned, but dst is word-aligned. The number of bytes that remains to copy is r2+4. */ /* Copy word by word using LDR when alignment can be done in hardware, i.e., SCTLR.A is set, supporting unaligned access in LDR and STR. */ subs r2, r2, #60 blt 8f 7: /* Copy 64 bytes in every loop iteration. */ .irp offset, #0, #4, #8, #12, #16, #20, #24, #28, #32, #36, #40, #44, #48, #52, #56, #60 ldr r3, [r1, \offset] str r3, [r0, \offset] .endr add r0, r0, #64 add r1, r1, #64 subs r2, r2, #64 bge 7b 8: /* Get here if less than 64 bytes to copy, -64 <= r2 < 0. Check if there is more than 3 bytes to copy. */ adds r2, r2, #60 blt copy_less_than_4 9: /* Get here if there is less than 64 but at least 4 bytes to copy, where the number of bytes to copy is r2+4. */ ldr r3, [r1], #4 str r3, [r0], #4 subs r2, r2, #4 bge 9b b copy_less_than_4 .syntax unified .global __aeabi_memcpy4 .type __aeabi_memcpy4, %function __aeabi_memcpy4: /* Assumes that both of its arguments are 4-byte aligned. */ push {r0, lr} strd r4, r5, [sp, #-8]! /* Is there at least 4 bytes to copy? */ subs r2, r2, #4 blt copy_less_than_4 /* If n < 4. */ bl word_aligned .syntax unified .global __aeabi_memcpy8 .type __aeabi_memcpy8, %function __aeabi_memcpy8: /* Assumes that both of its arguments are 8-byte aligned. */ push {r0, lr} strd r4, r5, [sp, #-8]! /* Is there at least 4 bytes to copy? */ subs r2, r2, #4 blt copy_less_than_4 /* If n < 4. */ /* Is there at least 8 bytes to copy? */ subs r2, r2, #4 blt copy_less_than_8 /* If n < 8. */ /* Is there at least 64 bytes to copy? */ subs r2, r2, #56 blt copy_less_than_64 /* if n + 8 < 64. */ bl two_word_aligned #endif picolibc-1.7.4/newlib/libc/machine/arm/aeabi_memset.c000066400000000000000000000043161414576234500224610ustar00rootroot00000000000000/* * Copyright (c) 2015 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include <_ansi.h> /* Support the alias for the __aeabi_memset which may assume memory alignment. */ void __aeabi_memset4 (void *dest, size_t n, int c) _ATTRIBUTE ((alias ("__aeabi_memset"))); void __aeabi_memset8 (void *dest, size_t n, int c) _ATTRIBUTE ((alias ("__aeabi_memset"))); /* Support the routine __aeabi_memset. Can't alias to memset because the arguments are in a different order */ /* *__attribute__((used)) added so that building with clang -flto * doesn't discard this function */ #undef memset void __attribute__((used)) __aeabi_memset (void *dest, size_t n, int c) { /*Note that relative to ANSI memset, __aeabi_memset hase the order of its second and third arguments reversed. */ memset (dest, c, n); } picolibc-1.7.4/newlib/libc/machine/arm/arm_asm.h000066400000000000000000000037661414576234500215020ustar00rootroot00000000000000/* * Copyright (c) 2009 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef ARM_ASM__H #define ARM_ASM__H #include "acle-compat.h" #if __ARM_ARCH >= 7 && defined (__ARM_ARCH_ISA_ARM) # define _ISA_ARM_7 #endif #if __ARM_ARCH >= 6 && defined (__ARM_ARCH_ISA_ARM) # define _ISA_ARM_6 #endif #if __ARM_ARCH >= 5 # define _ISA_ARM_5 #endif #if __ARM_ARCH >= 4 && __ARM_ARCH_ISA_THUMB >= 1 # define _ISA_ARM_4T #endif #if __ARM_ARCH >= 4 && __ARM_ARCH_ISA_THUMB == 0 # define _ISA_ARM_4 #endif #if __ARM_ARCH_ISA_THUMB >= 2 # define _ISA_THUMB_2 #endif #if __ARM_ARCH_ISA_THUMB >= 1 # define _ISA_THUMB_1 #endif #endif /* ARM_ASM__H */ picolibc-1.7.4/newlib/libc/machine/arm/bzero.c000066400000000000000000000034311414576234500211640ustar00rootroot00000000000000/* * Copyright (c) 2015 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "../../string/bzero.c" /* Support the alias for the __aeabi_memclr which may assume memory alignment. */ void __aeabi_memclr4 (void *dest, size_t n) _ATTRIBUTE ((alias ("bzero"))); void __aeabi_memclr8 (void *dest, size_t n) _ATTRIBUTE ((alias ("bzero"))); void __aeabi_memclr (void *dest, size_t n) _ATTRIBUTE ((alias ("bzero"))); picolibc-1.7.4/newlib/libc/machine/arm/machine/000077500000000000000000000000001414576234500213025ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/arm/machine/_endian.h000066400000000000000000000033551414576234500230560ustar00rootroot00000000000000/* ARM configuration file. Copyright (c) 2015 ARM Ltd. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the company may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef __MACHINE_ENDIAN_H__ #error "must be included via " #endif /* !__MACHINE_ENDIAN_H__ */ #define _LITTLE_ENDIAN 1234 #define _BIG_ENDIAN 4321 #define _PDP_ENDIAN 3412 #ifdef __ARMEB__ #define _BYTE_ORDER _BIG_ENDIAN #else #define _BYTE_ORDER _LITTLE_ENDIAN #endif picolibc-1.7.4/newlib/libc/machine/arm/machine/acle-compat.h000066400000000000000000000125711414576234500236460ustar00rootroot00000000000000/* * Copyright (c) 2014 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef __ARM_ARCH /* ACLE standardises a set of pre-defines that describe the ARM architecture. These were mostly implemented in GCC around GCC-4.8; older versions have no, or only partial support. To provide a level of backwards compatibility we try to work out what the definitions should be, given the older pre-defines that GCC did produce. This isn't complete, but it should be enough for use by routines that depend on this header. */ /* No need to handle ARMv8, GCC had ACLE support before that. */ # ifdef __ARM_ARCH_7__ /* The common subset of ARMv7 in all profiles. */ # define __ARM_ARCH 7 # define __ARM_ARCH_ISA_THUMB 2 # define __ARM_FEATURE_CLZ # define __ARM_FEATURE_LDREX 7 # define __ARM_FEATURE_UNALIGNED # endif # if defined (__ARM_ARCH_7A__) || defined (__ARM_ARCH_7R__) # define __ARM_ARCH 7 # define __ARM_ARCH_ISA_THUMB 2 # define __ARM_ARCH_ISA_ARM # define __ARM_FEATURE_CLZ # define __ARM_FEATURE_SIMD32 # define __ARM_FEATURE_DSP # define __ARM_FEATURE_QBIT # define __ARM_FEATURE_SAT # define __ARM_FEATURE_LDREX 15 # define __ARM_FEATURE_UNALIGNED # ifdef __ARM_ARCH_7A__ # define __ARM_ARCH_PROFILE 'A' # else # define __ARM_ARCH_PROFILE 'R' # endif # endif # ifdef __ARM_ARCH_7EM__ # define __ARM_ARCH 7 # define __ARM_ARCH_ISA_THUMB 2 # define __ARM_FEATURE_CLZ # define __ARM_FEATURE_SIMD32 # define __ARM_FEATURE_DSP # define __ARM_FEATURE_QBIT # define __ARM_FEATURE_SAT # define __ARM_FEATURE_LDREX 7 # define __ARM_FEATURE_UNALIGNED # define __ARM_ARCH_PROFILE 'M' # endif # ifdef __ARM_ARCH_7M__ # define __ARM_ARCH 7 # define __ARM_ARCH_ISA_THUMB 2 # define __ARM_FEATURE_CLZ # define __ARM_FEATURE_QBIT # define __ARM_FEATURE_SAT # define __ARM_FEATURE_LDREX 7 # define __ARM_FEATURE_UNALIGNED # define __ARM_ARCH_PROFILE 'M' # endif # ifdef __ARM_ARCH_6T2__ # define __ARM_ARCH 6 # define __ARM_ARCH_ISA_THUMB 2 # define __ARM_ARCH_ISA_ARM # define __ARM_FEATURE_CLZ # define __ARM_FEATURE_SIMD32 # define __ARM_FEATURE_DSP # define __ARM_FEATURE_QBIT # define __ARM_FEATURE_SAT # define __ARM_FEATURE_LDREX 4 # define __ARM_FEATURE_UNALIGNED # endif # ifdef __ARM_ARCH_6M__ # define __ARM_ARCH 6 # define __ARM_ARCH_ISA_THUMB 1 # define __ARM_ARCH_PROFILE 'M' # endif # if defined (__ARM_ARCH_6__) || defined (__ARM_ARCH_6J__) \ || defined (__ARM_ARCH_6K__) || defined (__ARM_ARCH_6Z__) \ || defined (__ARM_ARCH_6ZK__) # define __ARM_ARCH 6 # define __ARM_ARCH_ISA_THUMB 1 # define __ARM_ARCH_ISA_ARM # define __ARM_FEATURE_CLZ # define __ARM_FEATURE_SIMD32 # define __ARM_FEATURE_DSP # define __ARM_FEATURE_QBIT # define __ARM_FEATURE_SAT # define __ARM_FEATURE_UNALIGNED # ifndef __thumb__ # if defined (__ARM_ARCH_6K__) || defined (__ARM_ARCH_6ZK__) # define __ARM_FEATURE_LDREX 15 # else # define __ARM_FEATURE_LDREX 4 # endif # endif # endif # if defined (__ARM_ARCH_5TE__) || defined (__ARM_ARCH_5E__) # define __ARM_ARCH 5 # define __ARM_ARCH_ISA_ARM # ifdef __ARM_ARCH_5TE__ # define __ARM_ARCH_ISA_THUMB 1 # endif # define __ARM_FEATURE_CLZ # define __ARM_FEATURE_DSP # endif # if defined (__ARM_ARCH_5T__) || defined (__ARM_ARCH_5__) # define __ARM_ARCH 5 # define __ARM_ARCH_ISA_ARM # ifdef __ARM_ARCH_5TE__ # define __ARM_ARCH_ISA_THUMB 1 # endif # define __ARM_FEATURE_CLZ # endif # ifdef __ARM_ARCH_4T__ # define __ARM_ARCH 4 # define __ARM_ARCH_ISA_ARM # define __ARM_ARCH_ISA_THUMB 1 # endif # ifdef __ARM_ARCH_4__ # define __ARM_ARCH 4 # define __ARM_ARCH_ISA_ARM # endif # if defined (__ARM_ARCH_3__) || defined (__ARM_ARCH_3M__) # define __ARM_ARCH 3 # define __ARM_ARCH_ISA_ARM # endif # ifdef __ARM_ARCH_2__ # define __ARM_ARCH 2 # define __ARM_ARCH_ISA_ARM # endif # ifdef __ARMEB__ # define __ARM_BIG_ENDIAN # endif /* If we still don't know what the target architecture is, then we're probably not using GCC. */ # ifndef __ARM_ARCH # error Unable to determine architecture version. # endif #endif /* __ARM_ARCH */ picolibc-1.7.4/newlib/libc/machine/arm/machine/math.h000066400000000000000000000124431414576234500224100ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2020 Keith Packard * Copyright (c) 2017 embedded brains GmbH. All rights reserved Copyright (c) 2011, 2012 ARM Ltd. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _MACHINE_MATH_H_ #define _MACHINE_MATH_H_ #if defined(_HAVE_ATTRIBUTE_ALWAYS_INLINE) && defined(_HAVE_ATTRIBUTE_GNU_INLINE) #define __declare_arm_macro(type) extern __inline type __attribute((gnu_inline, always_inline)) #ifdef _WANT_MATH_ERRNO #include #endif #if (__ARM_FP & 0x8) && !defined(__SOFTFP__) /* * Double precision routines */ __declare_arm_macro(double) sqrt(double x) { double result; #ifdef _WANT_MATH_ERRNO if (x < 0) errno = EDOM; #endif #if __ARM_ARCH >= 6 __asm__("vsqrt.f64 %P0, %P1" : "=w" (result) : "w" (x)); #else /* VFP9 Erratum 760019, see GCC sources "gcc/config/arm/vfp.md" */ __asm__("vsqrt.f64 %P0, %P1" : "=&w" (result) : "w" (x)); #endif return result; } #if __ARM_ARCH >= 8 __declare_arm_macro(double) ceil (double x) { double result; __asm__ volatile ( "vrintp.f64\t%P0, %P1" : "=w" (result) : "w" (x) ); return result; } __declare_arm_macro(double) floor (double x) { double result; __asm__ volatile ("vrintm.f64\t%P0, %P1" : "=w" (result) : "w" (x)); return result; } __declare_arm_macro(double) nearbyint (double x) { double result; __asm__ volatile ("vrintr.f64\t%P0, %P1" : "=w" (result) : "w" (x)); return result; } __declare_arm_macro(double) rint (double x) { double result; __asm__ volatile ("vrintx.f64\t%P0, %P1" : "=w" (result) : "w" (x)); return result; } __declare_arm_macro(double) round (double x) { double result; __asm__ volatile ("vrinta.f64\t%P0, %P1" : "=w" (result) : "w" (x)); return result; } __declare_arm_macro(double) trunc (double x) { double result; __asm__ volatile ("vrintz.f64\t%P0, %P1" : "=w" (result) : "w" (x)); return result; } #endif /* __ARM_ARCH >= 8 */ #if HAVE_FAST_FMA __declare_arm_macro(double) fma (double x, double y, double z) { __asm__("vfma.f64 %P0, %P1, %P2" : "+w" (z) : "w" (x), "w" (y)); return z; } #endif #endif /* (__ARM_FP & 0x8) && !defined(__SOFTFP__) */ #if (__ARM_FP & 0x4) && !defined(__SOFTFP__) /* * Single precision functions */ __declare_arm_macro(float) sqrtf(float x) { float result; #ifdef _WANT_MATH_ERRNO if (x < 0) errno = EDOM; #endif #if __ARM_ARCH >= 6 __asm__("vsqrt.f32 %0, %1" : "=w" (result) : "w" (x)); #else /* VFP9 Erratum 760019, see GCC sources "gcc/config/arm/vfp.md" */ __asm__("vsqrt.f32 %0, %1" : "=&w" (result) : "w" (x)); #endif return result; } #if __ARM_ARCH >= 8 __declare_arm_macro(float) ceilf (float x) { float result; __asm__ volatile ( "vrintp.f32\t%0, %1" : "=t" (result) : "t" (x) ); return result; } __declare_arm_macro(float) floorf (float x) { float result; __asm__ volatile ( "vrintm.f32\t%0, %1" : "=t" (result) : "t" (x) ); return result; } __declare_arm_macro(float) nearbyintf (float x) { float result; __asm__ volatile ("vrintr.f32\t%0, %1" : "=t" (result) : "t" (x)); return result; } __declare_arm_macro(float) rintf (float x) { float result; __asm__ volatile ("vrintx.f32\t%0, %1" : "=t" (result) : "t" (x)); return result; } __declare_arm_macro(float) roundf (float x) { float result; __asm__ volatile ("vrinta.f32\t%0, %1" : "=t" (result) : "t" (x)); return result; } __declare_arm_macro(float) truncf (float x) { float result; __asm__ volatile ("vrintz.f32\t%0, %1" : "=t" (result) : "t" (x)); return result; } #endif /* __ARM_ARCH >= 8 */ #if HAVE_FAST_FMAF __declare_arm_macro(float) fmaf (float x, float y, float z) { __asm__("vfma.f32 %0, %1, %2" : "+t" (z) : "t" (x), "t" (y)); return z; } #endif #endif /* (__ARM_FP & 0x4) && !defined(__SOFTFP__) */ #undef __declare_arm_macro #endif /* have attributes */ #endif /* _MACHINE_MATH_H_ */ picolibc-1.7.4/newlib/libc/machine/arm/machine/meson.build000066400000000000000000000033241414576234500234460ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2020 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # inc_machine_headers_machine = [ 'acle-compat.h', '_endian.h', 'math.h', 'param.h', ] install_headers(inc_machine_headers_machine, subdir:'machine' ) picolibc-1.7.4/newlib/libc/machine/arm/machine/param.h000066400000000000000000000003201414576234500225460ustar00rootroot00000000000000/* Copyright (c) 2004 Jeff Johnston */ /* ARM configuration file; HZ is 100 rather than the default 60 */ #ifndef _MACHINE_PARAM_H # define _MACHINE_PARAM_H # define HZ (100) #endif picolibc-1.7.4/newlib/libc/machine/arm/memchr.S000066400000000000000000000267341414576234500213110ustar00rootroot00000000000000/* Copyright (c) 2010-2011, Linaro Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Linaro Limited nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Written by Dave Gilbert This memchr routine is optimised on a Cortex-A9 and should work on all ARMv7 processors. It has a fast path for short sizes, and has an optimised path for large data sets; the worst case is finding the match early in a large data set. */ /* Copyright (c) 2015 ARM Ltd. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Linaro nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ @ 2011-02-07 david.gilbert@linaro.org @ Extracted from local git a5b438d861 @ 2011-07-14 david.gilbert@linaro.org @ Import endianness fix from local git ea786f1b @ 2011-10-11 david.gilbert@linaro.org @ Import from cortex-strings bzr rev 63 @ Flip to ldrd (as suggested by Greta Yorsh) @ Make conditional on CPU type @ tidy @ This code requires armv6t2 or later. Uses Thumb2. .syntax unified #include "acle-compat.h" @ NOTE: This ifdef MUST match the one in memchr-stub.c #if defined (__ARM_NEON__) || defined (__ARM_NEON) #if __ARM_ARCH >= 8 && __ARM_ARCH_PROFILE == 'R' .arch armv8-r #else .arch armv7-a #endif .fpu neon /* Arguments */ #define srcin r0 #define chrin r1 #define cntin r2 /* Retval */ #define result r0 /* Live range does not overlap with srcin */ /* Working registers */ #define src r1 /* Live range does not overlap with chrin */ #define tmp r3 #define synd r0 /* No overlap with srcin or result */ #define soff r12 /* Working NEON registers */ #define vrepchr q0 #define vdata0 q1 #define vdata0_0 d2 /* Lower half of vdata0 */ #define vdata0_1 d3 /* Upper half of vdata0 */ #define vdata1 q2 #define vdata1_0 d4 /* Lower half of vhas_chr0 */ #define vdata1_1 d5 /* Upper half of vhas_chr0 */ #define vrepmask q3 #define vrepmask0 d6 #define vrepmask1 d7 #define vend q4 #define vend0 d8 #define vend1 d9 /* * Core algorithm: * * For each 32-byte chunk we calculate a 32-bit syndrome value, with one bit per * byte. Each bit is set if the relevant byte matched the requested character * and cleared otherwise. Since the bits in the syndrome reflect exactly the * order in which things occur in the original string, counting trailing zeros * allows to identify exactly which byte has matched. */ .text .thumb_func .align 4 .p2align 4,,15 .global memchr .type memchr,%function memchr: .cfi_sections .debug_frame .cfi_startproc /* Use a simple loop if there are less than 8 bytes to search. */ cmp cntin, #7 bhi .Llargestr and chrin, chrin, #0xff .Lsmallstr: subs cntin, cntin, #1 blo .Lnotfound /* Return not found if reached end. */ ldrb tmp, [srcin], #1 cmp tmp, chrin bne .Lsmallstr /* Loop again if not found. */ /* Otherwise fixup address and return. */ sub result, result, #1 bx lr .Llargestr: vdup.8 vrepchr, chrin /* Duplicate char across all lanes. */ /* * Magic constant 0x8040201008040201 allows us to identify which lane * matches the requested byte. */ movw tmp, #0x0201 movt tmp, #0x0804 lsl soff, tmp, #4 vmov vrepmask0, tmp, soff vmov vrepmask1, tmp, soff /* Work with aligned 32-byte chunks */ bic src, srcin, #31 ands soff, srcin, #31 beq .Lloopintro /* Go straight to main loop if it's aligned. */ /* * Input string is not 32-byte aligned. We calculate the syndrome * value for the aligned 32 bytes block containing the first bytes * and mask the irrelevant part. */ vld1.8 {vdata0, vdata1}, [src:256]! sub tmp, soff, #32 adds cntin, cntin, tmp vceq.i8 vdata0, vdata0, vrepchr vceq.i8 vdata1, vdata1, vrepchr vand vdata0, vdata0, vrepmask vand vdata1, vdata1, vrepmask vpadd.i8 vdata0_0, vdata0_0, vdata0_1 vpadd.i8 vdata1_0, vdata1_0, vdata1_1 vpadd.i8 vdata0_0, vdata0_0, vdata1_0 vpadd.i8 vdata0_0, vdata0_0, vdata0_0 vmov synd, vdata0_0[0] /* Clear the soff lower bits */ lsr synd, synd, soff lsl synd, synd, soff /* The first block can also be the last */ bls .Lmasklast /* Have we found something already? */ cbnz synd, .Ltail .Lloopintro: vpush {vend} /* 264/265 correspond to d8/d9 for q4 */ .cfi_adjust_cfa_offset 16 .cfi_rel_offset 264, 0 .cfi_rel_offset 265, 8 .p2align 3,,7 .Lloop: vld1.8 {vdata0, vdata1}, [src:256]! subs cntin, cntin, #32 vceq.i8 vdata0, vdata0, vrepchr vceq.i8 vdata1, vdata1, vrepchr /* If we're out of data we finish regardless of the result. */ bls .Lend /* Use a fast check for the termination condition. */ vorr vend, vdata0, vdata1 vorr vend0, vend0, vend1 vmov synd, tmp, vend0 orrs synd, synd, tmp /* We're not out of data, loop if we haven't found the character. */ beq .Lloop .Lend: vpop {vend} .cfi_adjust_cfa_offset -16 .cfi_restore 264 .cfi_restore 265 /* Termination condition found, let's calculate the syndrome value. */ vand vdata0, vdata0, vrepmask vand vdata1, vdata1, vrepmask vpadd.i8 vdata0_0, vdata0_0, vdata0_1 vpadd.i8 vdata1_0, vdata1_0, vdata1_1 vpadd.i8 vdata0_0, vdata0_0, vdata1_0 vpadd.i8 vdata0_0, vdata0_0, vdata0_0 vmov synd, vdata0_0[0] cbz synd, .Lnotfound bhi .Ltail .Lmasklast: /* Clear the (-cntin) upper bits to avoid out-of-bounds matches. */ neg cntin, cntin lsl synd, synd, cntin lsrs synd, synd, cntin it eq moveq src, #0 /* If no match, set src to 0 so the retval is 0. */ .Ltail: /* Count the trailing zeros using bit reversing */ rbit synd, synd /* Compensate the last post-increment */ sub src, src, #32 /* Count the leading zeros */ clz synd, synd /* Compute the potential result and return */ add result, src, synd bx lr .Lnotfound: /* Set result to NULL if not found and return */ mov result, #0 bx lr .cfi_endproc .size memchr, . - memchr #elif __ARM_ARCH_ISA_THUMB >= 2 && defined (__ARM_FEATURE_DSP) #if __ARM_ARCH_PROFILE == 'M' .arch armv7e-m #else .arch armv6t2 #endif @ this lets us check a flag in a 00/ff byte easily in either endianness #ifdef __ARMEB__ #define CHARTSTMASK(c) 1<<(31-(c*8)) #else #define CHARTSTMASK(c) 1<<(c*8) #endif .text .thumb @ --------------------------------------------------------------------------- .thumb_func .align 2 .p2align 4,,15 .global memchr .type memchr,%function memchr: @ r0 = start of memory to scan @ r1 = character to look for @ r2 = length @ returns r0 = pointer to character or NULL if not found and r1,r1,#0xff @ Don't trust the caller to pass a char cmp r2,#16 @ If short don't bother with anything clever blt 20f tst r0, #7 @ If it's already aligned skip the next bit beq 10f @ Work up to an aligned point 5: ldrb r3, [r0],#1 subs r2, r2, #1 cmp r3, r1 beq 50f @ If it matches exit found tst r0, #7 cbz r2, 40f @ If we run off the end, exit not found bne 5b @ If not aligned yet then do next byte 10: @ We are aligned, we know we have at least 8 bytes to work with push {r4,r5,r6,r7} orr r1, r1, r1, lsl #8 @ expand the match word across all bytes orr r1, r1, r1, lsl #16 bic r4, r2, #7 @ Number of double words to work with * 8 mvns r7, #0 @ all F's movs r3, #0 15: ldrd r5,r6,[r0],#8 subs r4, r4, #8 eor r5,r5, r1 @ r5,r6 have 00's where bytes match the target eor r6,r6, r1 uadd8 r5, r5, r7 @ Par add 0xff - sets GE bits for bytes!=0 sel r5, r3, r7 @ bytes are 00 for none-00 bytes, @ or ff for 00 bytes - NOTE INVERSION uadd8 r6, r6, r7 @ Par add 0xff - sets GE bits for bytes!=0 sel r6, r5, r7 @ chained....bytes are 00 for none-00 bytes @ or ff for 00 bytes - NOTE INVERSION cbnz r6, 60f bne 15b @ (Flags from the subs above) pop {r4,r5,r6,r7} and r1,r1,#0xff @ r1 back to a single character and r2,r2,#7 @ Leave the count remaining as the number @ after the double words have been done 20: cbz r2, 40f @ 0 length or hit the end already then not found 21: @ Post aligned section, or just a short call ldrb r3,[r0],#1 subs r2,r2,#1 eor r3,r3,r1 @ r3 = 0 if match - doesn't break flags from sub cbz r3, 50f bne 21b @ on r2 flags 40: movs r0,#0 @ not found bx lr 50: subs r0,r0,#1 @ found bx lr 60: @ We're here because the fast path found a hit @ now we have to track down exactly which word it was @ r0 points to the start of the double word after the one tested @ r5 has the 00/ff pattern for the first word, r6 has the chained value cmp r5, #0 itte eq moveq r5, r6 @ the end is in the 2nd word subeq r0,r0,#3 @ Points to 2nd byte of 2nd word subne r0,r0,#7 @ or 2nd byte of 1st word @ r0 currently points to the 2nd byte of the word containing the hit tst r5, # CHARTSTMASK(0) @ 1st character bne 61f adds r0,r0,#1 tst r5, # CHARTSTMASK(1) @ 2nd character ittt eq addeq r0,r0,#1 tsteq r5, # (3<<15) @ 2nd & 3rd character @ If not the 3rd must be the last one addeq r0,r0,#1 61: pop {r4,r5,r6,r7} subs r0,r0,#1 bx lr #else /* Defined in memchr.c. */ #endif picolibc-1.7.4/newlib/libc/machine/arm/memchr.c000066400000000000000000000035521414576234500213220ustar00rootroot00000000000000/* Copyright (c) 2015 ARM Ltd. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Linaro nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* The structure of the following #if #else #endif conditional chain must match the chain in memchr.S. */ #include "acle-compat.h" #if defined (__ARM_NEON__) || defined (__ARM_NEON) /* Defined in memchr.S. */ #elif __ARM_ARCH_ISA_THUMB >= 2 && defined (__ARM_FEATURE_DSP) /* Defined in memchr.S. */ #else # include "../../string/memchr.c" #endif picolibc-1.7.4/newlib/libc/machine/arm/memcpy-armv7a.S000066400000000000000000000363071414576234500225200ustar00rootroot00000000000000/* Copyright (c) 2013, Linaro Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Linaro Limited nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This memcpy routine is optimised for Cortex-A15 cores and takes advantage of VFP or NEON when built with the appropriate flags. Assumptions: ARMv6 (ARMv7-a if using Neon) ARM state Unaligned accesses LDRD/STRD support unaligned word accesses If compiled with GCC, this file should be enclosed within following pre-processing check: if defined (__ARM_ARCH_7A__) && defined (__ARM_FEATURE_UNALIGNED) */ .syntax unified /* This implementation requires ARM state. */ .arm #ifdef __ARM_NEON__ .fpu neon .arch armv7-a # define FRAME_SIZE 4 # define USE_VFP # define USE_NEON #elif !defined (__SOFTFP__) .arch armv6 .fpu vfpv2 # define FRAME_SIZE 32 # define USE_VFP #else .arch armv6 # define FRAME_SIZE 32 #endif /* Old versions of GAS incorrectly implement the NEON align semantics. */ #ifdef BROKEN_ASM_NEON_ALIGN #define ALIGN(addr, align) addr,:align #else #define ALIGN(addr, align) addr:align #endif #define PC_OFFSET 8 /* PC pipeline compensation. */ #define INSN_SIZE 4 /* Call parameters. */ #define dstin r0 #define src r1 #define count r2 /* Locals. */ #define tmp1 r3 #define dst ip #define tmp2 r10 #ifndef USE_NEON /* For bulk copies using GP registers. */ #define A_l r2 /* Call-clobbered. */ #define A_h r3 /* Call-clobbered. */ #define B_l r4 #define B_h r5 #define C_l r6 #define C_h r7 #define D_l r8 #define D_h r9 #endif /* Number of lines ahead to pre-fetch data. If you change this the code below will need adjustment to compensate. */ #define prefetch_lines 5 #ifdef USE_VFP .macro cpy_line_vfp vreg, base vstr \vreg, [dst, #\base] vldr \vreg, [src, #\base] vstr d0, [dst, #\base + 8] vldr d0, [src, #\base + 8] vstr d1, [dst, #\base + 16] vldr d1, [src, #\base + 16] vstr d2, [dst, #\base + 24] vldr d2, [src, #\base + 24] vstr \vreg, [dst, #\base + 32] vldr \vreg, [src, #\base + prefetch_lines * 64 - 32] vstr d0, [dst, #\base + 40] vldr d0, [src, #\base + 40] vstr d1, [dst, #\base + 48] vldr d1, [src, #\base + 48] vstr d2, [dst, #\base + 56] vldr d2, [src, #\base + 56] .endm .macro cpy_tail_vfp vreg, base vstr \vreg, [dst, #\base] vldr \vreg, [src, #\base] vstr d0, [dst, #\base + 8] vldr d0, [src, #\base + 8] vstr d1, [dst, #\base + 16] vldr d1, [src, #\base + 16] vstr d2, [dst, #\base + 24] vldr d2, [src, #\base + 24] vstr \vreg, [dst, #\base + 32] vstr d0, [dst, #\base + 40] vldr d0, [src, #\base + 40] vstr d1, [dst, #\base + 48] vldr d1, [src, #\base + 48] vstr d2, [dst, #\base + 56] vldr d2, [src, #\base + 56] .endm #endif .macro def_fn f p2align=0 .text .p2align \p2align .global \f .type \f, %function \f: .endm def_fn memcpy p2align=6 mov dst, dstin /* Preserve dstin, we need to return it. */ cmp count, #64 bge .Lcpy_not_short /* Deal with small copies quickly by dropping straight into the exit block. */ .Ltail63unaligned: #ifdef USE_NEON and tmp1, count, #0x38 rsb tmp1, tmp1, #(56 - PC_OFFSET + INSN_SIZE) add pc, pc, tmp1 vld1.8 {d0}, [src]! /* 14 words to go. */ vst1.8 {d0}, [dst]! vld1.8 {d0}, [src]! /* 12 words to go. */ vst1.8 {d0}, [dst]! vld1.8 {d0}, [src]! /* 10 words to go. */ vst1.8 {d0}, [dst]! vld1.8 {d0}, [src]! /* 8 words to go. */ vst1.8 {d0}, [dst]! vld1.8 {d0}, [src]! /* 6 words to go. */ vst1.8 {d0}, [dst]! vld1.8 {d0}, [src]! /* 4 words to go. */ vst1.8 {d0}, [dst]! vld1.8 {d0}, [src]! /* 2 words to go. */ vst1.8 {d0}, [dst]! tst count, #4 ldrne tmp1, [src], #4 strne tmp1, [dst], #4 #else /* Copy up to 15 full words of data. May not be aligned. */ /* Cannot use VFP for unaligned data. */ and tmp1, count, #0x3c add dst, dst, tmp1 add src, src, tmp1 rsb tmp1, tmp1, #(60 - PC_OFFSET/2 + INSN_SIZE/2) /* Jump directly into the sequence below at the correct offset. */ add pc, pc, tmp1, lsl #1 ldr tmp1, [src, #-60] /* 15 words to go. */ str tmp1, [dst, #-60] ldr tmp1, [src, #-56] /* 14 words to go. */ str tmp1, [dst, #-56] ldr tmp1, [src, #-52] str tmp1, [dst, #-52] ldr tmp1, [src, #-48] /* 12 words to go. */ str tmp1, [dst, #-48] ldr tmp1, [src, #-44] str tmp1, [dst, #-44] ldr tmp1, [src, #-40] /* 10 words to go. */ str tmp1, [dst, #-40] ldr tmp1, [src, #-36] str tmp1, [dst, #-36] ldr tmp1, [src, #-32] /* 8 words to go. */ str tmp1, [dst, #-32] ldr tmp1, [src, #-28] str tmp1, [dst, #-28] ldr tmp1, [src, #-24] /* 6 words to go. */ str tmp1, [dst, #-24] ldr tmp1, [src, #-20] str tmp1, [dst, #-20] ldr tmp1, [src, #-16] /* 4 words to go. */ str tmp1, [dst, #-16] ldr tmp1, [src, #-12] str tmp1, [dst, #-12] ldr tmp1, [src, #-8] /* 2 words to go. */ str tmp1, [dst, #-8] ldr tmp1, [src, #-4] str tmp1, [dst, #-4] #endif lsls count, count, #31 ldrhcs tmp1, [src], #2 ldrbne src, [src] /* Src is dead, use as a scratch. */ strhcs tmp1, [dst], #2 strbne src, [dst] bx lr .Lcpy_not_short: /* At least 64 bytes to copy, but don't know the alignment yet. */ str tmp2, [sp, #-FRAME_SIZE]! and tmp2, src, #7 and tmp1, dst, #7 cmp tmp1, tmp2 bne .Lcpy_notaligned #ifdef USE_VFP /* Magic dust alert! Force VFP on Cortex-A9. Experiments show that the FP pipeline is much better at streaming loads and stores. This is outside the critical loop. */ vmov.f32 s0, s0 #endif /* SRC and DST have the same mutual 32-bit alignment, but we may still need to pre-copy some bytes to get to natural alignment. We bring DST into full 64-bit alignment. */ lsls tmp2, dst, #29 beq 1f rsbs tmp2, tmp2, #0 sub count, count, tmp2, lsr #29 ldrmi tmp1, [src], #4 strmi tmp1, [dst], #4 lsls tmp2, tmp2, #2 ldrhcs tmp1, [src], #2 ldrbne tmp2, [src], #1 strhcs tmp1, [dst], #2 strbne tmp2, [dst], #1 1: subs tmp2, count, #64 /* Use tmp2 for count. */ blt .Ltail63aligned cmp tmp2, #512 bge .Lcpy_body_long .Lcpy_body_medium: /* Count in tmp2. */ #ifdef USE_VFP 1: vldr d0, [src, #0] subs tmp2, tmp2, #64 vldr d1, [src, #8] vstr d0, [dst, #0] vldr d0, [src, #16] vstr d1, [dst, #8] vldr d1, [src, #24] vstr d0, [dst, #16] vldr d0, [src, #32] vstr d1, [dst, #24] vldr d1, [src, #40] vstr d0, [dst, #32] vldr d0, [src, #48] vstr d1, [dst, #40] vldr d1, [src, #56] vstr d0, [dst, #48] add src, src, #64 vstr d1, [dst, #56] add dst, dst, #64 bge 1b tst tmp2, #0x3f beq .Ldone .Ltail63aligned: /* Count in tmp2. */ and tmp1, tmp2, #0x38 add dst, dst, tmp1 add src, src, tmp1 rsb tmp1, tmp1, #(56 - PC_OFFSET + INSN_SIZE) add pc, pc, tmp1 vldr d0, [src, #-56] /* 14 words to go. */ vstr d0, [dst, #-56] vldr d0, [src, #-48] /* 12 words to go. */ vstr d0, [dst, #-48] vldr d0, [src, #-40] /* 10 words to go. */ vstr d0, [dst, #-40] vldr d0, [src, #-32] /* 8 words to go. */ vstr d0, [dst, #-32] vldr d0, [src, #-24] /* 6 words to go. */ vstr d0, [dst, #-24] vldr d0, [src, #-16] /* 4 words to go. */ vstr d0, [dst, #-16] vldr d0, [src, #-8] /* 2 words to go. */ vstr d0, [dst, #-8] #else sub src, src, #8 sub dst, dst, #8 1: ldrd A_l, A_h, [src, #8] strd A_l, A_h, [dst, #8] ldrd A_l, A_h, [src, #16] strd A_l, A_h, [dst, #16] ldrd A_l, A_h, [src, #24] strd A_l, A_h, [dst, #24] ldrd A_l, A_h, [src, #32] strd A_l, A_h, [dst, #32] ldrd A_l, A_h, [src, #40] strd A_l, A_h, [dst, #40] ldrd A_l, A_h, [src, #48] strd A_l, A_h, [dst, #48] ldrd A_l, A_h, [src, #56] strd A_l, A_h, [dst, #56] ldrd A_l, A_h, [src, #64]! strd A_l, A_h, [dst, #64]! subs tmp2, tmp2, #64 bge 1b tst tmp2, #0x3f bne 1f ldr tmp2,[sp], #FRAME_SIZE bx lr 1: add src, src, #8 add dst, dst, #8 .Ltail63aligned: /* Count in tmp2. */ /* Copy up to 7 d-words of data. Similar to Ltail63unaligned, but we know that the src and dest are 32-bit aligned so we can use LDRD/STRD to improve efficiency. */ /* TMP2 is now negative, but we don't care about that. The bottom six bits still tell us how many bytes are left to copy. */ and tmp1, tmp2, #0x38 add dst, dst, tmp1 add src, src, tmp1 rsb tmp1, tmp1, #(56 - PC_OFFSET + INSN_SIZE) add pc, pc, tmp1 ldrd A_l, A_h, [src, #-56] /* 14 words to go. */ strd A_l, A_h, [dst, #-56] ldrd A_l, A_h, [src, #-48] /* 12 words to go. */ strd A_l, A_h, [dst, #-48] ldrd A_l, A_h, [src, #-40] /* 10 words to go. */ strd A_l, A_h, [dst, #-40] ldrd A_l, A_h, [src, #-32] /* 8 words to go. */ strd A_l, A_h, [dst, #-32] ldrd A_l, A_h, [src, #-24] /* 6 words to go. */ strd A_l, A_h, [dst, #-24] ldrd A_l, A_h, [src, #-16] /* 4 words to go. */ strd A_l, A_h, [dst, #-16] ldrd A_l, A_h, [src, #-8] /* 2 words to go. */ strd A_l, A_h, [dst, #-8] #endif tst tmp2, #4 ldrne tmp1, [src], #4 strne tmp1, [dst], #4 lsls tmp2, tmp2, #31 /* Count (tmp2) now dead. */ ldrhcs tmp1, [src], #2 ldrbne tmp2, [src] strhcs tmp1, [dst], #2 strbne tmp2, [dst] .Ldone: ldr tmp2, [sp], #FRAME_SIZE bx lr .Lcpy_body_long: /* Count in tmp2. */ /* Long copy. We know that there's at least (prefetch_lines * 64) bytes to go. */ #ifdef USE_VFP /* Don't use PLD. Instead, read some data in advance of the current copy position into a register. This should act like a PLD operation but we won't have to repeat the transfer. */ vldr d3, [src, #0] vldr d4, [src, #64] vldr d5, [src, #128] vldr d6, [src, #192] vldr d7, [src, #256] vldr d0, [src, #8] vldr d1, [src, #16] vldr d2, [src, #24] add src, src, #32 subs tmp2, tmp2, #prefetch_lines * 64 * 2 blt 2f 1: cpy_line_vfp d3, 0 cpy_line_vfp d4, 64 cpy_line_vfp d5, 128 add dst, dst, #3 * 64 add src, src, #3 * 64 cpy_line_vfp d6, 0 cpy_line_vfp d7, 64 add dst, dst, #2 * 64 add src, src, #2 * 64 subs tmp2, tmp2, #prefetch_lines * 64 bge 1b 2: cpy_tail_vfp d3, 0 cpy_tail_vfp d4, 64 cpy_tail_vfp d5, 128 add src, src, #3 * 64 add dst, dst, #3 * 64 cpy_tail_vfp d6, 0 vstr d7, [dst, #64] vldr d7, [src, #64] vstr d0, [dst, #64 + 8] vldr d0, [src, #64 + 8] vstr d1, [dst, #64 + 16] vldr d1, [src, #64 + 16] vstr d2, [dst, #64 + 24] vldr d2, [src, #64 + 24] vstr d7, [dst, #64 + 32] add src, src, #96 vstr d0, [dst, #64 + 40] vstr d1, [dst, #64 + 48] vstr d2, [dst, #64 + 56] add dst, dst, #128 add tmp2, tmp2, #prefetch_lines * 64 b .Lcpy_body_medium #else /* Long copy. Use an SMS style loop to maximize the I/O bandwidth of the core. We don't have enough spare registers to synthesise prefetching, so use PLD operations. */ /* Pre-bias src and dst. */ sub src, src, #8 sub dst, dst, #8 pld [src, #8] pld [src, #72] subs tmp2, tmp2, #64 pld [src, #136] ldrd A_l, A_h, [src, #8] strd B_l, B_h, [sp, #8] ldrd B_l, B_h, [src, #16] strd C_l, C_h, [sp, #16] ldrd C_l, C_h, [src, #24] strd D_l, D_h, [sp, #24] pld [src, #200] ldrd D_l, D_h, [src, #32]! b 1f .p2align 6 2: pld [src, #232] strd A_l, A_h, [dst, #40] ldrd A_l, A_h, [src, #40] strd B_l, B_h, [dst, #48] ldrd B_l, B_h, [src, #48] strd C_l, C_h, [dst, #56] ldrd C_l, C_h, [src, #56] strd D_l, D_h, [dst, #64]! ldrd D_l, D_h, [src, #64]! subs tmp2, tmp2, #64 1: strd A_l, A_h, [dst, #8] ldrd A_l, A_h, [src, #8] strd B_l, B_h, [dst, #16] ldrd B_l, B_h, [src, #16] strd C_l, C_h, [dst, #24] ldrd C_l, C_h, [src, #24] strd D_l, D_h, [dst, #32] ldrd D_l, D_h, [src, #32] bcs 2b /* Save the remaining bytes and restore the callee-saved regs. */ strd A_l, A_h, [dst, #40] add src, src, #40 strd B_l, B_h, [dst, #48] ldrd B_l, B_h, [sp, #8] strd C_l, C_h, [dst, #56] ldrd C_l, C_h, [sp, #16] strd D_l, D_h, [dst, #64] ldrd D_l, D_h, [sp, #24] add dst, dst, #72 tst tmp2, #0x3f bne .Ltail63aligned ldr tmp2, [sp], #FRAME_SIZE bx lr #endif .Lcpy_notaligned: pld [src] pld [src, #64] /* There's at least 64 bytes to copy, but there is no mutual alignment. */ /* Bring DST to 64-bit alignment. */ lsls tmp2, dst, #29 pld [src, #(2 * 64)] beq 1f rsbs tmp2, tmp2, #0 sub count, count, tmp2, lsr #29 ldrmi tmp1, [src], #4 strmi tmp1, [dst], #4 lsls tmp2, tmp2, #2 ldrbne tmp1, [src], #1 ldrhcs tmp2, [src], #2 strbne tmp1, [dst], #1 strhcs tmp2, [dst], #2 1: pld [src, #(3 * 64)] subs count, count, #64 ldrmi tmp2, [sp], #FRAME_SIZE bmi .Ltail63unaligned pld [src, #(4 * 64)] #ifdef USE_NEON vld1.8 {d0-d3}, [src]! vld1.8 {d4-d7}, [src]! subs count, count, #64 bmi 2f 1: pld [src, #(4 * 64)] vst1.8 {d0-d3}, [ALIGN (dst, 64)]! vld1.8 {d0-d3}, [src]! vst1.8 {d4-d7}, [ALIGN (dst, 64)]! vld1.8 {d4-d7}, [src]! subs count, count, #64 bpl 1b 2: vst1.8 {d0-d3}, [ALIGN (dst, 64)]! vst1.8 {d4-d7}, [ALIGN (dst, 64)]! ands count, count, #0x3f #else /* Use an SMS style loop to maximize the I/O bandwidth. */ sub src, src, #4 sub dst, dst, #8 subs tmp2, count, #64 /* Use tmp2 for count. */ ldr A_l, [src, #4] ldr A_h, [src, #8] strd B_l, B_h, [sp, #8] ldr B_l, [src, #12] ldr B_h, [src, #16] strd C_l, C_h, [sp, #16] ldr C_l, [src, #20] ldr C_h, [src, #24] strd D_l, D_h, [sp, #24] ldr D_l, [src, #28] ldr D_h, [src, #32]! b 1f .p2align 6 2: pld [src, #(5 * 64) - (32 - 4)] strd A_l, A_h, [dst, #40] ldr A_l, [src, #36] ldr A_h, [src, #40] strd B_l, B_h, [dst, #48] ldr B_l, [src, #44] ldr B_h, [src, #48] strd C_l, C_h, [dst, #56] ldr C_l, [src, #52] ldr C_h, [src, #56] strd D_l, D_h, [dst, #64]! ldr D_l, [src, #60] ldr D_h, [src, #64]! subs tmp2, tmp2, #64 1: strd A_l, A_h, [dst, #8] ldr A_l, [src, #4] ldr A_h, [src, #8] strd B_l, B_h, [dst, #16] ldr B_l, [src, #12] ldr B_h, [src, #16] strd C_l, C_h, [dst, #24] ldr C_l, [src, #20] ldr C_h, [src, #24] strd D_l, D_h, [dst, #32] ldr D_l, [src, #28] ldr D_h, [src, #32] bcs 2b /* Save the remaining bytes and restore the callee-saved regs. */ strd A_l, A_h, [dst, #40] add src, src, #36 strd B_l, B_h, [dst, #48] ldrd B_l, B_h, [sp, #8] strd C_l, C_h, [dst, #56] ldrd C_l, C_h, [sp, #16] strd D_l, D_h, [dst, #64] ldrd D_l, D_h, [sp, #24] add dst, dst, #72 ands count, tmp2, #0x3f #endif ldr tmp2, [sp], #FRAME_SIZE bne .Ltail63unaligned bx lr .size memcpy, . - memcpy picolibc-1.7.4/newlib/libc/machine/arm/memcpy-armv7m.S000066400000000000000000000177011414576234500225310ustar00rootroot00000000000000/* * Copyright (c) 2013 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This memcpy routine is optimised for Cortex-M3/M4 cores with/without unaligned access. If compiled with GCC, this file should be enclosed within following pre-processing check: if defined (__ARM_ARCH_7M__) || defined (__ARM_ARCH_7EM__) Prototype: void *memcpy (void *dst, const void *src, size_t count); The job will be done in 5 steps. Step 1: Align src/dest pointers, copy mis-aligned if fail to align both Step 2: Repeatedly copy big block size of __OPT_BIG_BLOCK_SIZE Step 3: Repeatedly copy big block size of __OPT_MID_BLOCK_SIZE Step 4: Copy word by word Step 5: Copy byte-to-byte Tunable options: __OPT_BIG_BLOCK_SIZE: Size of big block in words. Default to 64. __OPT_MID_BLOCK_SIZE: Size of big block in words. Default to 16. */ #ifndef __OPT_BIG_BLOCK_SIZE #define __OPT_BIG_BLOCK_SIZE (4 * 16) #endif #ifndef __OPT_MID_BLOCK_SIZE #define __OPT_MID_BLOCK_SIZE (4 * 4) #endif #if __OPT_BIG_BLOCK_SIZE == 16 #define BEGIN_UNROLL_BIG_BLOCK \ .irp offset, 0,4,8,12 #elif __OPT_BIG_BLOCK_SIZE == 32 #define BEGIN_UNROLL_BIG_BLOCK \ .irp offset, 0,4,8,12,16,20,24,28 #elif __OPT_BIG_BLOCK_SIZE == 64 #define BEGIN_UNROLL_BIG_BLOCK \ .irp offset, 0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60 #else #error "Illegal __OPT_BIG_BLOCK_SIZE" #endif #if __OPT_MID_BLOCK_SIZE == 8 #define BEGIN_UNROLL_MID_BLOCK \ .irp offset, 0,4 #elif __OPT_MID_BLOCK_SIZE == 16 #define BEGIN_UNROLL_MID_BLOCK \ .irp offset, 0,4,8,12 #else #error "Illegal __OPT_MID_BLOCK_SIZE" #endif #define END_UNROLL .endr .macro ASM_ALIAS new old .global \new .type \new, %function #if defined (__thumb__) .thumb_set \new, \old #else .set \new, \old #endif .endm .syntax unified .text .align 2 .global memcpy .thumb .thumb_func .type memcpy, %function ASM_ALIAS __aeabi_memcpy, memcpy ASM_ALIAS __aeabi_memcpy4, memcpy ASM_ALIAS __aeabi_memcpy8, memcpy memcpy: @ r0: dst @ r1: src @ r2: len #ifdef __ARM_FEATURE_UNALIGNED /* In case of UNALIGNED access supported, ip is not used in function body. */ mov ip, r0 #else push {r0} #endif orr r3, r1, r0 ands r3, r3, #3 bne .Lmisaligned_copy .Lbig_block: subs r2, __OPT_BIG_BLOCK_SIZE blo .Lmid_block /* Kernel loop for big block copy */ .align 2 .Lbig_block_loop: BEGIN_UNROLL_BIG_BLOCK #ifdef __ARM_ARCH_7EM__ ldr r3, [r1], #4 str r3, [r0], #4 END_UNROLL #else /* __ARM_ARCH_7M__ */ ldr r3, [r1, \offset] str r3, [r0, \offset] END_UNROLL adds r0, __OPT_BIG_BLOCK_SIZE adds r1, __OPT_BIG_BLOCK_SIZE #endif subs r2, __OPT_BIG_BLOCK_SIZE bhs .Lbig_block_loop .Lmid_block: adds r2, __OPT_BIG_BLOCK_SIZE - __OPT_MID_BLOCK_SIZE blo .Lcopy_word_by_word /* Kernel loop for mid-block copy */ .align 2 .Lmid_block_loop: BEGIN_UNROLL_MID_BLOCK #ifdef __ARM_ARCH_7EM__ ldr r3, [r1], #4 str r3, [r0], #4 END_UNROLL #else /* __ARM_ARCH_7M__ */ ldr r3, [r1, \offset] str r3, [r0, \offset] END_UNROLL adds r0, __OPT_MID_BLOCK_SIZE adds r1, __OPT_MID_BLOCK_SIZE #endif subs r2, __OPT_MID_BLOCK_SIZE bhs .Lmid_block_loop .Lcopy_word_by_word: adds r2, __OPT_MID_BLOCK_SIZE - 4 blo .Lcopy_less_than_4 /* Kernel loop for small block copy */ .align 2 .Lcopy_word_by_word_loop: ldr r3, [r1], #4 str r3, [r0], #4 subs r2, #4 bhs .Lcopy_word_by_word_loop .Lcopy_less_than_4: adds r2, #4 beq .Ldone lsls r2, r2, #31 itt ne ldrbne r3, [r1], #1 strbne r3, [r0], #1 bcc .Ldone #ifdef __ARM_FEATURE_UNALIGNED ldrh r3, [r1] strh r3, [r0] #else ldrb r3, [r1] strb r3, [r0] ldrb r3, [r1, #1] strb r3, [r0, #1] #endif /* __ARM_FEATURE_UNALIGNED */ .Ldone: #ifdef __ARM_FEATURE_UNALIGNED mov r0, ip #else pop {r0} #endif bx lr .align 2 .Lmisaligned_copy: #ifdef __ARM_FEATURE_UNALIGNED /* Define label DST_ALIGNED to BIG_BLOCK. It will go to aligned copy once destination is adjusted to aligned. */ #define Ldst_aligned Lbig_block /* Copy word by word using LDR when alignment can be done in hardware, i.e., SCTLR.A is set, supporting unaligned access in LDR and STR. */ cmp r2, #8 blo .Lbyte_copy /* if src is aligned, just go to the big block loop. */ lsls r3, r1, #30 beq .Ldst_aligned #else /* if len < 12, misalignment adjustment has more overhead than just byte-to-byte copy. Also, len must >=8 to guarantee code afterward work correctly. */ cmp r2, #12 blo .Lbyte_copy #endif /* __ARM_FEATURE_UNALIGNED */ /* Align dst only, not trying to align src. That is the because handling of aligned src and misaligned dst need more overhead than otherwise. By doing this the worst case is when initial src is aligned, additional up to 4 byte additional copy will executed, which is acceptable. */ ands r3, r0, #3 beq .Ldst_aligned rsb r3, #4 subs r2, r3 lsls r3, r3, #31 itt ne ldrbne r3, [r1], #1 strbne r3, [r0], #1 bcc .Ldst_aligned #ifdef __ARM_FEATURE_UNALIGNED ldrh r3, [r1], #2 strh r3, [r0], #2 b .Ldst_aligned #else ldrb r3, [r1], #1 strb r3, [r0], #1 ldrb r3, [r1], #1 strb r3, [r0], #1 /* Now that dst is aligned */ .Ldst_aligned: /* if r1 is aligned now, it means r0/r1 has the same misalignment, and they are both aligned now. Go aligned copy. */ ands r3, r1, #3 beq .Lbig_block /* dst is aligned, but src isn't. Misaligned copy. */ push {r4, r5} subs r2, #4 /* Backward r1 by misaligned bytes, to make r1 aligned. Since we need to restore r1 to unaligned address after the loop, we need keep the offset bytes to ip and sub it from r1 afterward. */ subs r1, r3 rsb ip, r3, #4 /* Pre-load on word */ ldr r4, [r1], #4 cmp r3, #2 beq .Lmisaligned_copy_2_2 cmp r3, #3 beq .Lmisaligned_copy_3_1 .macro mis_src_copy shift 1: #ifdef __ARM_BIG_ENDIAN lsls r4, r4, \shift #else lsrs r4, r4, \shift #endif ldr r3, [r1], #4 #ifdef __ARM_BIG_ENDIAN lsrs r5, r3, 32-\shift #else lsls r5, r3, 32-\shift #endif orr r4, r4, r5 str r4, [r0], #4 mov r4, r3 subs r2, #4 bhs 1b .endm .Lmisaligned_copy_1_3: mis_src_copy shift=8 b .Lsrc_misaligned_tail .Lmisaligned_copy_3_1: mis_src_copy shift=24 b .Lsrc_misaligned_tail .Lmisaligned_copy_2_2: /* For 2_2 misalignment, ldr is still faster than 2 x ldrh. */ mis_src_copy shift=16 .Lsrc_misaligned_tail: adds r2, #4 subs r1, ip pop {r4, r5} #endif /* __ARM_FEATURE_UNALIGNED */ .Lbyte_copy: subs r2, #4 blo .Lcopy_less_than_4 .Lbyte_copy_loop: subs r2, #1 ldrb r3, [r1], #1 strb r3, [r0], #1 bhs .Lbyte_copy_loop ldrb r3, [r1] strb r3, [r0] ldrb r3, [r1, #1] strb r3, [r0, #1] ldrb r3, [r1, #2] strb r3, [r0, #2] #ifdef __ARM_FEATURE_UNALIGNED mov r0, ip #else pop {r0} #endif bx lr .size memcpy, .-memcpy picolibc-1.7.4/newlib/libc/machine/arm/memcpy.S000066400000000000000000000036671414576234500213300ustar00rootroot00000000000000/* * Copyright (c) 2013-2015 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* The structure of the following #if #else #endif conditional chain must match the chain in memcpy-stub.c. */ #include "acle-compat.h" #if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) /* Defined in memcpy-stub.c. */ #elif (__ARM_ARCH >= 7 && __ARM_ARCH_PROFILE == 'A' \ && defined (__ARM_FEATURE_UNALIGNED)) #include "memcpy-armv7a.S" #elif __ARM_ARCH_ISA_THUMB == 2 && !__ARM_ARCH_ISA_ARM #include "memcpy-armv7m.S" #else /* Defined in memcpy-stub.c. */ #endif picolibc-1.7.4/newlib/libc/machine/arm/memcpy.c000066400000000000000000000050761414576234500213440ustar00rootroot00000000000000/* Copyright (c) 2015 ARM Ltd. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Linaro nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* The structure of the following #if #else #endif conditional chain must match the chain in memcpy.S. */ #include "acle-compat.h" #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) #define MEMCPY_FALLBACK #elif (__ARM_ARCH >= 7 && __ARM_ARCH_PROFILE == 'A' \ && defined (__ARM_FEATURE_UNALIGNED)) /* Defined in memcpy.S. */ #elif __ARM_ARCH_ISA_THUMB == 2 && !__ARM_ARCH_ISA_ARM /* Defined in memcpy.S. */ #elif defined (__ARM_ARCH_7A__) && defined (__ARM_FEATURE_UNALIGNED) && \ (defined (__ARM_NEON__) || !defined (__SOFTFP__)) /* Defined in aeabi_memcpy-armv7a.S */ #else #define MEMCPY_FALLBACK #endif #ifdef MEMCPY_FALLBACK # include "../../string/memcpy.c" void *__aeabi_memcpy4 (void *__restrict dest, const void * __restrict source, size_t n) _ATTRIBUTE ((alias ("memcpy"))); void *__aeabi_memcpy8 (void * __restrict dest, const void * __restrict source, size_t n) _ATTRIBUTE ((alias ("memcpy"))); void *__aeabi_memcpy (void * __restrict dest, const void * __restrict source, size_t n) _ATTRIBUTE ((alias ("memcpy"))); #endif picolibc-1.7.4/newlib/libc/machine/arm/memmove.c000066400000000000000000000040051414576234500215060ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2021 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "../../string/memmove.c" /* Support the alias for the __aeabi_memmove which may assume memory alignment. */ void *__aeabi_memmove4 (void *__restrict dest, const void *source, size_t n) _ATTRIBUTE ((alias ("memmove"))); void *__aeabi_memmove8 (void *dest, const void *source, size_t n) _ATTRIBUTE ((alias ("memmove"))); void *__aeabi_memmove (void *dest, const void *source, size_t n) _ATTRIBUTE ((alias ("memmove"))); picolibc-1.7.4/newlib/libc/machine/arm/memset-arm.S000066400000000000000000000046321414576234500220760ustar00rootroot00000000000000/* * Copyright (c) 2015 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ .arm .syntax unified .global memset .type memset, %function memset: tst r0, #3 stmfd sp!, {r4, lr} beq 10f cmp r2, #0 sub r2, r2, #1 beq 9f and ip, r1, #255 mov r3, r0 b 2f 1: cmp r2, #0 sub r2, r2, #1 beq 9f 2: strb ip, [r3], #1 tst r3, #3 bne 1b 3: cmp r2, #3 bls 7f and lr, r1, #255 orr lr, lr, lr, asl #8 cmp r2, #15 orr lr, lr, lr, asl #16 bls 5f mov r4, r2 add ip, r3, #16 4: sub r4, r4, #16 cmp r4, #15 str lr, [ip, #-16] str lr, [ip, #-12] str lr, [ip, #-8] str lr, [ip, #-4] add ip, ip, #16 bhi 4b sub ip, r2, #16 bic ip, ip, #15 and r2, r2, #15 add ip, ip, #16 cmp r2, #3 add r3, r3, ip bls 7f 5: mov r4, r3 mov ip, r2 6: sub ip, ip, #4 cmp ip, #3 str lr, [r4], #4 bhi 6b sub ip, r2, #4 bic ip, ip, #3 add ip, ip, #4 add r3, r3, ip and r2, r2, #3 7: cmp r2, #0 andne r1, r1, #255 addne r2, r3, r2 beq 9f 8: strb r1, [r3], #1 cmp r3, r2 bne 8b 9: ldmfd sp!, {r4, lr} bx lr 10: mov r3, r0 b 3b .size memset, . - memset picolibc-1.7.4/newlib/libc/machine/arm/memset-thumb.S000066400000000000000000000052141414576234500224330ustar00rootroot00000000000000/* * Copyright (c) 2015 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "acle-compat.h" .thumb .syntax unified .global memset .type memset, %function memset: push {r4, r5, r6, lr} lsls r3, r0, #30 beq 10f subs r4, r2, #1 cmp r2, #0 beq 9f lsls r5, r1, #24 lsrs r5, r5, #24 movs r3, r0 movs r6, #3 b 2f 1: subs r2, r4, #1 cmp r4, #0 beq 9f movs r4, r2 2: adds r3, r3, #1 subs r2, r3, #1 strb r5, [r2] tst r3, r6 bne 1b 3: cmp r4, #3 bls 7f movs r5, #255 ands r5, r1 lsls r2, r5, #8 orrs r5, r2 lsls r2, r5, #16 orrs r5, r2 cmp r4, #15 bls 5f movs r6, r4 subs r6, r6, #16 lsrs r6, r6, #4 adds r6, r6, #1 lsls r6, r6, #4 movs r2, r3 adds r3, r3, r6 4: str r5, [r2] str r5, [r2, #4] str r5, [r2, #8] str r5, [r2, #12] adds r2, r2, #16 cmp r3, r2 bne 4b movs r2, #15 ands r4, r2 cmp r4, #3 bls 7f 5: subs r6, r4, #4 lsrs r6, r6, #2 adds r6, r6, #1 lsls r6, r6, #2 movs r2, r3 adds r3, r3, r6 6: stmia r2!, {r5} cmp r3, r2 bne 6b movs r2, #3 ands r4, r2 7: cmp r4, #0 beq 9f lsls r1, r1, #24 lsrs r1, r1, #24 adds r4, r3, r4 8: strb r1, [r3] adds r3, r3, #1 cmp r4, r3 bne 8b 9: #if __ARM_ARCH >= 5 pop {r4, r5, r6, pc} #else pop {r4, r5, r6} pop {r2} bx r2 #endif 10: movs r3, r0 movs r4, r2 b 3b .size memset, . - memset picolibc-1.7.4/newlib/libc/machine/arm/memset-thumb2.S000066400000000000000000000046401414576234500225170ustar00rootroot00000000000000/* * Copyright (c) 2015 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ .thumb .syntax unified .global memset .type memset, %function memset: push {r4, r5, r6} lsls r4, r0, #30 beq 10f subs r4, r2, #1 cmp r2, #0 beq 9f uxtb r5, r1 mov r3, r0 b 2f 1: subs r2, r4, #1 cbz r4, 9f mov r4, r2 2: strb r5, [r3], #1 lsls r2, r3, #30 bne 1b 3: cmp r4, #3 bls 7f uxtb r5, r1 orr r5, r5, r5, lsl #8 cmp r4, #15 orr r5, r5, r5, lsl #16 bls 5f mov r6, r4 add r2, r3, #16 4: subs r6, r6, #16 cmp r6, #15 str r5, [r2, #-16] str r5, [r2, #-12] str r5, [r2, #-8] str r5, [r2, #-4] add r2, r2, #16 bhi 4b sub r2, r4, #16 bic r2, r2, #15 and r4, r4, #15 adds r2, r2, #16 cmp r4, #3 add r3, r3, r2 bls 7f 5: mov r6, r3 mov r2, r4 6: subs r2, r2, #4 cmp r2, #3 str r5, [r6], #4 bhi 6b subs r2, r4, #4 bic r2, r2, #3 adds r2, r2, #4 add r3, r3, r2 and r4, r4, #3 7: cbz r4, 9f uxtb r1, r1 add r4, r4, r3 8: strb r1, [r3], #1 cmp r3, r4 bne 8b 9: pop {r4, r5, r6} bx lr 10: mov r4, r2 mov r3, r0 b 3b .size memset, . - memset picolibc-1.7.4/newlib/libc/machine/arm/memset.S000066400000000000000000000033561414576234500213230ustar00rootroot00000000000000/* * Copyright (c) 2015 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* NOTE: This ifdef MUST match the one in memset.c. */ #if !defined (__SOFTFP__) && !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) # if defined (__thumb2__) # include "memset-thumb2.S" # elif defined (__thumb__) # include "memset-thumb.S" # else # include "memset-arm.S" # endif #endif picolibc-1.7.4/newlib/libc/machine/arm/memset.c000066400000000000000000000042171414576234500213400ustar00rootroot00000000000000/* * Copyright (c) 2015 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include <_ansi.h> /* According to the run-time ABI for the ARM Architecture, this function is allowed to corrupt only the integer core register permitted to be corrupted by the [AAPCS] (r0-r3, ip, lr, and CPSR). Therefore, we can't just simply use alias to support the function aeabi_memset for the targets with FP register. Instead, versions for these specific targets are written in assembler (in aeabi_memset-soft.S). */ /* NOTE: This ifdef MUST match the one in memset-soft.S. */ #if !defined (__SOFTFP__) && !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) /* Defined in memset-soft.S. */ #else #include "../../string/memset.c" #endif picolibc-1.7.4/newlib/libc/machine/arm/meson.build000066400000000000000000000041031414576234500220360ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # srcs_machine = [ 'setjmp.S', 'strcmp.S', 'strcpy.S', 'aeabi_memcpy-armv7a.S', 'aeabi_memset.c', 'bzero.c', 'memchr.c', 'memchr.S', 'memcpy.c', 'memcpy.S', 'memmove.c', 'memset.c', 'memset.S', 'strlen.c', 'strlen.S', ] subdir('sys') subdir('machine') foreach target : targets value = get_variable('target_' + target) set_variable('lib_machine' + target, static_library('machine' + target, srcs_machine, pic: false, include_directories: inc, c_args: value[1] + arg_fnobuiltin)) endforeach picolibc-1.7.4/newlib/libc/machine/arm/setjmp.S000066400000000000000000000124231414576234500213260ustar00rootroot00000000000000/* This is a simple version of setjmp and longjmp. Copyright (c) 1997 Nick Clifton, Cygnus Solutions */ #include "acle-compat.h" /* ANSI concatenation macros. */ #define CONCAT(a, b) CONCAT2(a, b) #define CONCAT2(a, b) a##b #ifndef __USER_LABEL_PREFIX__ #error __USER_LABEL_PREFIX__ not defined #endif #define SYM(x) CONCAT (__USER_LABEL_PREFIX__, x) #ifdef __ELF__ #define TYPE(x) .type SYM(x),function #define SIZE(x) .size SYM(x), . - SYM(x) #else #define TYPE(x) #define SIZE(x) #endif /* Arm/Thumb interworking support: The interworking scheme expects functions to use a BX instruction to return control to their parent. Since we need this code to work in both interworked and non-interworked environments as well as with older processors which do not have the BX instruction we do the following: Test the return address. If the bottom bit is clear perform an "old style" function exit. (We know that we are in ARM mode and returning to an ARM mode caller). Otherwise use the BX instruction to perform the function exit. We know that we will never attempt to perform the BX instruction on an older processor, because that kind of processor will never be interworked, and a return address with the bottom bit set will never be generated. In addition, we do not actually assemble the BX instruction as this would require us to tell the assembler that the processor is an ARM7TDMI and it would store this information in the binary. We want this binary to be able to be linked with binaries compiled for older processors however, so we do not want such information stored there. If we are running using the APCS-26 convention however, then we never test the bottom bit, because this is part of the processor status. Instead we just do a normal return, since we know that we cannot be returning to a Thumb caller - the Thumb does not support APCS-26. Function entry is much simpler. If we are compiling for the Thumb we just switch into ARM mode and then drop through into the rest of the function. The function exit code will take care of the restore to Thumb mode. For Thumb-2 do everything in Thumb mode. */ .syntax unified #if __ARM_ARCH_ISA_THUMB == 1 && !__ARM_ARCH_ISA_ARM /* ARMv6-M-like has to be implemented in Thumb mode. */ .thumb .thumb_func .globl SYM (setjmp) TYPE (setjmp) SYM (setjmp): /* Save registers in jump buffer. */ stmia r0!, {r4, r5, r6, r7} mov r1, r8 mov r2, r9 mov r3, r10 mov r4, fp mov r5, sp mov r6, lr stmia r0!, {r1, r2, r3, r4, r5, r6} subs r0, r0, #40 /* Restore callee-saved low regs. */ ldmia r0!, {r4, r5, r6, r7} /* Return zero. */ movs r0, #0 bx lr .thumb_func .globl SYM (longjmp) TYPE (longjmp) SYM (longjmp): /* Restore High regs. */ adds r0, r0, #16 ldmia r0!, {r2, r3, r4, r5, r6} mov r8, r2 mov r9, r3 mov r10, r4 mov fp, r5 mov sp, r6 ldmia r0!, {r3} /* lr */ /* Restore low regs. */ subs r0, r0, #40 ldmia r0!, {r4, r5, r6, r7} /* Return the result argument, or 1 if it is zero. */ movs r0, r1 bne 1f movs r0, #1 1: bx r3 #else #ifdef __APCS_26__ #define RET movs pc, lr #elif defined(__thumb2__) #define RET bx lr #else #define RET tst lr, #1; \ moveq pc, lr ; \ .word 0xe12fff1e /* bx lr */ #endif #ifdef __thumb2__ .macro COND where when i\where \when .endm #else .macro COND where when .endm #endif #if defined(__thumb2__) .macro MODE .thumb .thumb_func .endm .macro PROLOGUE name .endm #elif defined(__thumb__) #define MODE .thumb_func .macro PROLOGUE name .code 16 bx pc nop .code 32 SYM (.arm_start_of.\name): .endm #else /* Arm */ #define MODE .code 32 .macro PROLOGUE name .endm #endif .macro FUNC_START name .text .align 2 MODE .globl SYM (\name) TYPE (\name) SYM (\name): PROLOGUE \name .endm .macro FUNC_END name RET SIZE (\name) .endm /* -------------------------------------------------------------------- int setjmp (jmp_buf); -------------------------------------------------------------------- */ FUNC_START setjmp /* Save all the callee-preserved registers into the jump buffer. */ #ifdef __thumb2__ mov ip, sp stmea a1!, { v1-v7, fp, ip, lr } #else stmea a1!, { v1-v7, fp, ip, sp, lr } #endif #if 0 /* Simulator does not cope with FP instructions yet. */ #ifndef __SOFTFP__ /* Save the floating point registers. */ sfmea f4, 4, [a1] #endif #endif /* When setting up the jump buffer return 0. */ mov a1, #0 FUNC_END setjmp /* -------------------------------------------------------------------- volatile void longjmp (jmp_buf, int); -------------------------------------------------------------------- */ FUNC_START longjmp /* If we have stack extension code it ought to be handled here. */ /* Restore the registers, retrieving the state when setjmp() was called. */ #ifdef __thumb2__ ldmfd a1!, { v1-v7, fp, ip, lr } mov sp, ip #else ldmfd a1!, { v1-v7, fp, ip, sp, lr } #endif #if 0 /* Simulator does not cope with FP instructions yet. */ #ifndef __SOFTFP__ /* Restore floating point registers as well. */ lfmfd f4, 4, [a1] #endif #endif /* Put the return value into the integer result register. But if it is zero then return 1 instead. */ movs a1, a2 #ifdef __thumb2__ it eq #endif moveq a1, #1 FUNC_END longjmp #endif picolibc-1.7.4/newlib/libc/machine/arm/strcmp-arm-tiny.S000066400000000000000000000034131414576234500230710ustar00rootroot00000000000000/* * Copyright (c) 2012-2014 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Tiny version of strcmp in ARM state. Used only when optimizing for size. Also supports Thumb-2. */ .syntax unified def_fn strcmp .cfi_sections .debug_frame .cfi_startproc 1: ldrb r2, [r0], #1 ldrb r3, [r1], #1 cmp r2, #1 it cs cmpcs r2, r3 beq 1b 2: subs r0, r2, r3 bx lr .cfi_endproc .size strcmp, . - strcmp picolibc-1.7.4/newlib/libc/machine/arm/strcmp-armv4.S000066400000000000000000000233131414576234500223630ustar00rootroot00000000000000/* * Copyright (c) 2012-2014 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Basic ARM implementation. This should run on anything except for ARMv6-M, but there are better implementations for later revisions of the architecture. This version can support ARMv4T ARM/Thumb interworking. */ /* Parameters and result. */ #define src1 r0 #define src2 r1 #define result r0 /* Overlaps src1. */ /* Internal variables. */ #define data1 r2 #define data2 r3 #define magic1 r4 #define tmp2 r5 #define tmp1 r12 #define syndrome r12 /* Overlaps tmp1 */ /* For armv4t and newer, toolchains will transparently convert 'bx lr' to 'mov pc, lr' if needed. GCC has deprecated support for anything older than armv4t, but this should handle that corner case in case anyone needs it anyway */ .macro RETURN #if __ARM_ARCH <= 4 && __ARM_ARCH_ISA_THUMB == 0 mov pc, lr #else bx lr #endif .endm .arm def_fn strcmp .cfi_sections .debug_frame .cfi_startproc eor tmp1, src1, src2 tst tmp1, #3 /* Strings not at same byte offset from a word boundary. */ bne .Lstrcmp_unaligned ands tmp1, src1, #3 bic src1, src1, #3 bic src2, src2, #3 ldr data1, [src1], #4 ldreq data2, [src2], #4 beq 1f /* Although s1 and s2 have identical initial alignment, they are not currently word aligned. Rather than comparing bytes, make sure that any bytes fetched from before the addressed bytes are forced to 0xff. Then they will always compare equal. */ eor tmp1, tmp1, #3 mvn data2, #MSB lsl tmp1, tmp1, #3 S2LO tmp1, data2, tmp1 ldr data2, [src2], #4 orr data1, data1, tmp1 orr data2, data2, tmp1 1: /* Load the 'magic' constant 0x01010101. */ str r4, [sp, #-4]! .cfi_def_cfa_offset 4 .cfi_offset 4, -4 mov magic1, #1 orr magic1, magic1, magic1, lsl #8 orr magic1, magic1, magic1, lsl #16 .p2align 2 4: sub syndrome, data1, magic1 cmp data1, data2 /* check for any zero bytes in first word */ biceq syndrome, syndrome, data1 tsteq syndrome, magic1, lsl #7 ldreq data1, [src1], #4 ldreq data2, [src2], #4 beq 4b 2: /* There's a zero or a different byte in the word */ S2HI result, data1, #24 S2LO data1, data1, #8 cmp result, #1 cmpcs result, data2, S2HI #24 S2LOEQ data2, data2, #8 beq 2b /* On a big-endian machine, RESULT contains the desired byte in bits 0-7; on a little-endian machine they are in bits 24-31. In both cases the other bits in RESULT are all zero. For DATA2 the interesting byte is at the other end of the word, but the other bits are not necessarily zero. We need a signed result representing the differnece in the unsigned bytes, so for the little-endian case we can't just shift the interesting bits up. */ #ifdef __ARM_BIG_ENDIAN sub result, result, data2, lsr #24 #else and data2, data2, #255 rsb result, data2, result, lsr #24 #endif ldr r4, [sp], #4 .cfi_restore 4 .cfi_def_cfa_offset 0 RETURN #if 0 /* The assembly code below is based on the following alogrithm. */ #ifdef __ARM_BIG_ENDIAN #define RSHIFT << #define LSHIFT >> #else #define RSHIFT >> #define LSHIFT << #endif #define body(shift) \ mask = 0xffffffffU RSHIFT shift; \ data1 = *src1++; \ data2 = *src2++; \ do \ { \ tmp2 = data1 & mask; \ if (__builtin_expect(tmp2 != data2 RSHIFT shift, 0)) \ { \ data2 RSHIFT= shift; \ break; \ } \ if (__builtin_expect(((data1 - b1) & ~data1) & (b1 << 7), 0)) \ { \ /* See comment in assembler below re syndrome on big-endian */\ if ((((data1 - b1) & ~data1) & (b1 << 7)) & mask) \ data2 RSHIFT= shift; \ else \ { \ data2 = *src2; \ tmp2 = data1 RSHIFT (32 - shift); \ data2 = (data2 LSHIFT (32 - shift)) RSHIFT (32 - shift); \ } \ break; \ } \ data2 = *src2++; \ tmp2 ^= data1; \ if (__builtin_expect(tmp2 != data2 LSHIFT (32 - shift), 0)) \ { \ tmp2 = data1 >> (32 - shift); \ data2 = (data2 << (32 - shift)) RSHIFT (32 - shift); \ break; \ } \ data1 = *src1++; \ } while (1) const unsigned* src1; const unsigned* src2; unsigned data1, data2; unsigned mask; unsigned shift; unsigned b1 = 0x01010101; char c1, c2; unsigned tmp2; while (((unsigned) s1) & 3) { c1 = *s1++; c2 = *s2++; if (c1 == 0 || c1 != c2) return c1 - (int)c2; } src1 = (unsigned*) (((unsigned)s1) & ~3); src2 = (unsigned*) (((unsigned)s2) & ~3); tmp2 = ((unsigned) s2) & 3; if (tmp2 == 1) { body(8); } else if (tmp2 == 2) { body(16); } else { body (24); } do { #ifdef __ARM_BIG_ENDIAN c1 = (char) tmp2 >> 24; c2 = (char) data2 >> 24; #else /* not __ARM_BIG_ENDIAN */ c1 = (char) tmp2; c2 = (char) data2; #endif /* not __ARM_BIG_ENDIAN */ tmp2 RSHIFT= 8; data2 RSHIFT= 8; } while (c1 != 0 && c1 == c2); return c1 - c2; #endif /* 0 */ /* First of all, compare bytes until src1(sp1) is word-aligned. */ .Lstrcmp_unaligned: tst src1, #3 beq 2f ldrb data1, [src1], #1 ldrb data2, [src2], #1 cmp data1, #1 cmpcs data1, data2 beq .Lstrcmp_unaligned sub result, data1, data2 RETURN 2: stmfd sp!, {r4, r5} .cfi_def_cfa_offset 8 .cfi_offset 4, -8 .cfi_offset 5, -4 mov magic1, #1 orr magic1, magic1, magic1, lsl #8 orr magic1, magic1, magic1, lsl #16 ldr data1, [src1], #4 and tmp2, src2, #3 bic src2, src2, #3 ldr data2, [src2], #4 cmp tmp2, #2 beq .Loverlap2 bhi .Loverlap1 /* Critical inner Loop: Block with 3 bytes initial overlap */ .p2align 2 .Loverlap3: bic tmp2, data1, #MSB cmp tmp2, data2, S2LO #8 sub syndrome, data1, magic1 bic syndrome, syndrome, data1 bne 4f ands syndrome, syndrome, magic1, lsl #7 ldreq data2, [src2], #4 bne 5f eor tmp2, tmp2, data1 cmp tmp2, data2, S2HI #24 bne 6f ldr data1, [src1], #4 b .Loverlap3 4: S2LO data2, data2, #8 b .Lstrcmp_tail 5: #ifdef __ARM_BIG_ENDIAN /* The syndrome value may contain false ones if the string ends with the bytes 0x01 0x00. */ tst data1, #0xff000000 tstne data1, #0x00ff0000 tstne data1, #0x0000ff00 beq .Lstrcmp_done_equal #else bics syndrome, syndrome, #0xff000000 bne .Lstrcmp_done_equal #endif ldrb data2, [src2] S2LO tmp2, data1, #24 #ifdef __ARM_BIG_ENDIAN lsl data2, data2, #24 #endif b .Lstrcmp_tail 6: S2LO tmp2, data1, #24 and data2, data2, #LSB b .Lstrcmp_tail /* Critical inner Loop: Block with 2 bytes initial overlap. */ .p2align 2 .Loverlap2: S2HI tmp2, data1, #16 sub syndrome, data1, magic1 S2LO tmp2, tmp2, #16 bic syndrome, syndrome, data1 cmp tmp2, data2, S2LO #16 bne 4f ands syndrome, syndrome, magic1, lsl #7 ldreq data2, [src2], #4 bne 5f eor tmp2, tmp2, data1 cmp tmp2, data2, S2HI #16 bne 6f ldr data1, [src1], #4 b .Loverlap2 5: #ifdef __ARM_BIG_ENDIAN /* The syndrome value may contain false ones if the string ends with the bytes 0x01 0x00 */ tst data1, #0xff000000 tstne data1, #0x00ff0000 beq .Lstrcmp_done_equal #else lsls syndrome, syndrome, #16 bne .Lstrcmp_done_equal #endif ldrh data2, [src2] S2LO tmp2, data1, #16 #ifdef __ARM_BIG_ENDIAN lsl data2, data2, #16 #endif b .Lstrcmp_tail 6: S2HI data2, data2, #16 S2LO tmp2, data1, #16 4: S2LO data2, data2, #16 b .Lstrcmp_tail /* Critical inner Loop: Block with 1 byte initial overlap. */ .p2align 2 .Loverlap1: and tmp2, data1, #LSB cmp tmp2, data2, S2LO #24 sub syndrome, data1, magic1 bic syndrome, syndrome, data1 bne 4f ands syndrome, syndrome, magic1, lsl #7 ldreq data2, [src2], #4 bne 5f eor tmp2, tmp2, data1 cmp tmp2, data2, S2HI #8 bne 6f ldr data1, [src1], #4 b .Loverlap1 4: S2LO data2, data2, #24 b .Lstrcmp_tail 5: /* The syndrome value may contain false ones if the string ends with the bytes 0x01 0x00. */ tst data1, #LSB beq .Lstrcmp_done_equal ldr data2, [src2], #4 6: S2LO tmp2, data1, #8 bic data2, data2, #MSB b .Lstrcmp_tail .Lstrcmp_done_equal: mov result, #0 .cfi_remember_state ldmfd sp!, {r4, r5} .cfi_restore 4 .cfi_restore 5 .cfi_def_cfa_offset 0 RETURN .Lstrcmp_tail: .cfi_restore_state and r2, tmp2, #LSB and result, data2, #LSB cmp result, #1 cmpcs result, r2 S2LOEQ tmp2, tmp2, #8 S2LOEQ data2, data2, #8 beq .Lstrcmp_tail sub result, r2, result ldmfd sp!, {r4, r5} .cfi_restore 4 .cfi_restore 5 .cfi_def_cfa_offset 0 RETURN .cfi_endproc .size strcmp, . - strcmp picolibc-1.7.4/newlib/libc/machine/arm/strcmp-armv4t.S000066400000000000000000000037541414576234500225560ustar00rootroot00000000000000/* * Copyright (c) 2012-2014 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This version is only used when we want a very basic Thumb1 implementation or for size, otherwise we use the base ARMv4 version. This is also suitable for ARMv6-M. */ .thumb .syntax unified .arch armv4t .eabi_attribute Tag_also_compatible_with, "\006\013" /* ARMv6-M. */ .eabi_attribute Tag_ARM_ISA_use, 0 def_fn strcmp .cfi_sections .debug_frame .cfi_startproc 1: ldrb r2, [r0] ldrb r3, [r1] cmp r2, #0 beq 2f adds r0, r0, #1 adds r1, r1, #1 cmp r2, r3 beq 1b 2: subs r0, r2, r3 bx lr .cfi_endproc .size strcmp, . - strcmp picolibc-1.7.4/newlib/libc/machine/arm/strcmp-armv6.S000066400000000000000000000270131414576234500223660ustar00rootroot00000000000000/* * Copyright (c) 2012-2014 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Implementation of strcmp for ARMv6. Use ldrd to support wider loads, provided the data is sufficiently aligned. Use saturating arithmetic to optimize the compares. */ /* Build Options: STRCMP_NO_PRECHECK: Don't run a quick pre-check of the first byte in the string. If comparing completely random strings the pre-check will save time, since there is a very high probability of a mismatch in the first character: we save significant overhead if this is the common case. However, if strings are likely to be identical (eg because we're verifying a hit in a hash table), then this check is largely redundant. */ .arm /* Parameters and result. */ #define src1 r0 #define src2 r1 #define result r0 /* Overlaps src1. */ /* Internal variables. */ #define tmp1 r4 #define tmp2 r5 #define const_m1 r12 /* Additional internal variables for 64-bit aligned data. */ #define data1a r2 #define data1b r3 #define data2a r6 #define data2b r7 #define syndrome_a tmp1 #define syndrome_b tmp2 /* Additional internal variables for 32-bit aligned data. */ #define data1 r2 #define data2 r3 #define syndrome tmp2 /* Macro to compute and return the result value for word-aligned cases. */ .macro strcmp_epilogue_aligned synd d1 d2 restore_r6 #ifdef __ARM_BIG_ENDIAN /* If data1 contains a zero byte, then syndrome will contain a 1 in bit 7 of that byte. Otherwise, the highest set bit in the syndrome will highlight the first different bit. It is therefore sufficient to extract the eight bits starting with the syndrome bit. */ clz tmp1, \synd lsl r1, \d2, tmp1 .if \restore_r6 ldrd r6, r7, [sp, #8] .endif .cfi_restore 6 .cfi_restore 7 lsl \d1, \d1, tmp1 .cfi_remember_state lsr result, \d1, #24 ldrd r4, r5, [sp], #16 .cfi_restore 4 .cfi_restore 5 sub result, result, r1, lsr #24 bx lr #else /* To use the big-endian trick we'd have to reverse all three words. that's slower than this approach. */ rev \synd, \synd clz tmp1, \synd bic tmp1, tmp1, #7 lsr r1, \d2, tmp1 .cfi_remember_state .if \restore_r6 ldrd r6, r7, [sp, #8] .endif .cfi_restore 6 .cfi_restore 7 lsr \d1, \d1, tmp1 and result, \d1, #255 and r1, r1, #255 ldrd r4, r5, [sp], #16 .cfi_restore 4 .cfi_restore 5 sub result, result, r1 bx lr #endif .endm .text .p2align 5 .Lstrcmp_start_addr: #ifndef STRCMP_NO_PRECHECK .Lfastpath_exit: sub r0, r2, r3 bx lr #endif def_fn strcmp #ifndef STRCMP_NO_PRECHECK ldrb r2, [src1] ldrb r3, [src2] cmp r2, #1 cmpcs r2, r3 bne .Lfastpath_exit #endif .cfi_sections .debug_frame .cfi_startproc strd r4, r5, [sp, #-16]! .cfi_def_cfa_offset 16 .cfi_offset 4, -16 .cfi_offset 5, -12 orr tmp1, src1, src2 strd r6, r7, [sp, #8] .cfi_offset 6, -8 .cfi_offset 7, -4 mvn const_m1, #0 tst tmp1, #7 beq .Lloop_aligned8 .Lnot_aligned: eor tmp1, src1, src2 tst tmp1, #7 bne .Lmisaligned8 /* Deal with mutual misalignment by aligning downwards and then masking off the unwanted loaded data to prevent a difference. */ and tmp1, src1, #7 bic src1, src1, #7 and tmp2, tmp1, #3 bic src2, src2, #7 lsl tmp2, tmp2, #3 /* Bytes -> bits. */ ldrd data1a, data1b, [src1], #16 tst tmp1, #4 ldrd data2a, data2b, [src2], #16 /* In ARM code we can't use ORN, but with do have MVN with a register shift. */ mvn tmp1, const_m1, S2HI tmp2 orr data1a, data1a, tmp1 orr data2a, data2a, tmp1 beq .Lstart_realigned8 orr data1b, data1b, tmp1 mov data1a, const_m1 orr data2b, data2b, tmp1 mov data2a, const_m1 b .Lstart_realigned8 /* Unwind the inner loop by a factor of 2, giving 16 bytes per pass. */ .p2align 5,,12 /* Don't start in the tail bytes of a cache line. */ .p2align 2 /* Always word aligned. */ .Lloop_aligned8: ldrd data1a, data1b, [src1], #16 ldrd data2a, data2b, [src2], #16 .Lstart_realigned8: uadd8 syndrome_b, data1a, const_m1 /* Only want GE bits, */ eor syndrome_a, data1a, data2a sel syndrome_a, syndrome_a, const_m1 uadd8 syndrome_b, data1b, const_m1 /* Only want GE bits. */ eor syndrome_b, data1b, data2b sel syndrome_b, syndrome_b, const_m1 orrs syndrome_b, syndrome_b, syndrome_a /* Only need if s_a == 0 */ bne .Ldiff_found ldrd data1a, data1b, [src1, #-8] ldrd data2a, data2b, [src2, #-8] uadd8 syndrome_b, data1a, const_m1 /* Only want GE bits, */ eor syndrome_a, data1a, data2a sel syndrome_a, syndrome_a, const_m1 uadd8 syndrome_b, data1b, const_m1 /* Only want GE bits. */ eor syndrome_b, data1b, data2b sel syndrome_b, syndrome_b, const_m1 orrs syndrome_b, syndrome_b, syndrome_a /* Only need if s_a == 0 */ beq .Lloop_aligned8 .Ldiff_found: cmp syndrome_a, #0 bne .Ldiff_in_a .Ldiff_in_b: strcmp_epilogue_aligned syndrome_b, data1b, data2b 1 .Ldiff_in_a: .cfi_restore_state strcmp_epilogue_aligned syndrome_a, data1a, data2a 1 .cfi_restore_state .Lmisaligned8: tst tmp1, #3 bne .Lmisaligned4 ands tmp1, src1, #3 bne .Lmutual_align4 /* Unrolled by a factor of 2, to reduce the number of post-increment operations. */ .Lloop_aligned4: ldr data1, [src1], #8 ldr data2, [src2], #8 .Lstart_realigned4: uadd8 syndrome, data1, const_m1 /* Only need GE bits. */ eor syndrome, data1, data2 sel syndrome, syndrome, const_m1 cmp syndrome, #0 bne .Laligned4_done ldr data1, [src1, #-4] ldr data2, [src2, #-4] uadd8 syndrome, data1, const_m1 eor syndrome, data1, data2 sel syndrome, syndrome, const_m1 cmp syndrome, #0 beq .Lloop_aligned4 .Laligned4_done: strcmp_epilogue_aligned syndrome, data1, data2, 0 .Lmutual_align4: .cfi_restore_state /* Deal with mutual misalignment by aligning downwards and then masking off the unwanted loaded data to prevent a difference. */ lsl tmp1, tmp1, #3 /* Bytes -> bits. */ bic src1, src1, #3 ldr data1, [src1], #8 bic src2, src2, #3 ldr data2, [src2], #8 /* In ARM code we can't use ORN, but with do have MVN with a register shift. */ mvn tmp1, const_m1, S2HI tmp1 orr data1, data1, tmp1 orr data2, data2, tmp1 b .Lstart_realigned4 .Lmisaligned4: ands tmp1, src1, #3 beq .Lsrc1_aligned sub src2, src2, tmp1 bic src1, src1, #3 lsls tmp1, tmp1, #31 ldr data1, [src1], #4 beq .Laligned_m2 bcs .Laligned_m1 #ifdef STRCMP_NO_PRECHECK ldrb data2, [src2, #1] uxtb tmp1, data1, ror #BYTE1_OFFSET cmp tmp1, #1 cmpcs tmp1, data2 bne .Lmisaligned_exit .Laligned_m2: ldrb data2, [src2, #2] uxtb tmp1, data1, ror #BYTE2_OFFSET cmp tmp1, #1 cmpcs tmp1, data2 bne .Lmisaligned_exit .Laligned_m1: ldrb data2, [src2, #3] uxtb tmp1, data1, ror #BYTE3_OFFSET cmp tmp1, #1 cmpcs tmp1, data2 beq .Lsrc1_aligned #else /* STRCMP_NO_PRECHECK */ /* If we've done the pre-check, then we don't need to check the first byte again here. */ ldrb data2, [src2, #2] uxtb tmp1, data1, ror #BYTE2_OFFSET cmp tmp1, #1 cmpcs tmp1, data2 bne .Lmisaligned_exit .Laligned_m2: ldrb data2, [src2, #3] uxtb tmp1, data1, ror #BYTE3_OFFSET cmp tmp1, #1 cmpcs tmp1, data2 beq .Laligned_m1 #endif .Lmisaligned_exit: .cfi_remember_state sub result, tmp1, data2 ldr r4, [sp], #16 .cfi_restore 4 bx lr #ifndef STRCMP_NO_PRECHECK .Laligned_m1: add src2, src2, #4 #endif .Lsrc1_aligned: .cfi_restore_state /* src1 is word aligned, but src2 has no common alignment with it. */ ldr data1, [src1], #4 lsls tmp1, src2, #31 /* C=src2[1], Z=src2[0]. */ bic src2, src2, #3 ldr data2, [src2], #4 bhi .Loverlap1 /* C=1, Z=0 => src2[1:0] = 0b11. */ bcs .Loverlap2 /* C=1, Z=1 => src2[1:0] = 0b10. */ /* (overlap3) C=0, Z=0 => src2[1:0] = 0b01. */ .Loverlap3: bic tmp1, data1, #MSB uadd8 syndrome, data1, const_m1 eors syndrome, tmp1, data2, S2LO #8 sel syndrome, syndrome, const_m1 bne 4f cmp syndrome, #0 ldreq data2, [src2], #4 bne 5f eor tmp1, tmp1, data1 cmp tmp1, data2, S2HI #24 bne 6f ldr data1, [src1], #4 b .Loverlap3 4: S2LO data2, data2, #8 b .Lstrcmp_tail 5: bics syndrome, syndrome, #MSB bne .Lstrcmp_done_equal /* We can only get here if the MSB of data1 contains 0, so fast-path the exit. */ ldrb result, [src2] .cfi_remember_state ldrd r4, r5, [sp], #16 .cfi_restore 4 .cfi_restore 5 /* R6/7 Not used in this sequence. */ .cfi_restore 6 .cfi_restore 7 neg result, result bx lr 6: .cfi_restore_state S2LO data1, data1, #24 and data2, data2, #LSB b .Lstrcmp_tail .p2align 5,,12 /* Ensure at least 3 instructions in cache line. */ .Loverlap2: and tmp1, data1, const_m1, S2LO #16 uadd8 syndrome, data1, const_m1 eors syndrome, tmp1, data2, S2LO #16 sel syndrome, syndrome, const_m1 bne 4f cmp syndrome, #0 ldreq data2, [src2], #4 bne 5f eor tmp1, tmp1, data1 cmp tmp1, data2, S2HI #16 bne 6f ldr data1, [src1], #4 b .Loverlap2 4: S2LO data2, data2, #16 b .Lstrcmp_tail 5: ands syndrome, syndrome, const_m1, S2LO #16 bne .Lstrcmp_done_equal ldrh data2, [src2] S2LO data1, data1, #16 #ifdef __ARM_BIG_ENDIAN lsl data2, data2, #16 #endif b .Lstrcmp_tail 6: S2LO data1, data1, #16 and data2, data2, const_m1, S2LO #16 b .Lstrcmp_tail .p2align 5,,12 /* Ensure at least 3 instructions in cache line. */ .Loverlap1: and tmp1, data1, #LSB uadd8 syndrome, data1, const_m1 eors syndrome, tmp1, data2, S2LO #24 sel syndrome, syndrome, const_m1 bne 4f cmp syndrome, #0 ldreq data2, [src2], #4 bne 5f eor tmp1, tmp1, data1 cmp tmp1, data2, S2HI #8 bne 6f ldr data1, [src1], #4 b .Loverlap1 4: S2LO data2, data2, #24 b .Lstrcmp_tail 5: tst syndrome, #LSB bne .Lstrcmp_done_equal ldr data2, [src2] 6: S2LO data1, data1, #8 bic data2, data2, #MSB b .Lstrcmp_tail .Lstrcmp_done_equal: mov result, #0 .cfi_remember_state ldrd r4, r5, [sp], #16 .cfi_restore 4 .cfi_restore 5 /* R6/7 not used in this sequence. */ .cfi_restore 6 .cfi_restore 7 bx lr .Lstrcmp_tail: .cfi_restore_state #ifndef __ARM_BIG_ENDIAN rev data1, data1 rev data2, data2 /* Now everything looks big-endian... */ #endif uadd8 tmp1, data1, const_m1 eor tmp1, data1, data2 sel syndrome, tmp1, const_m1 clz tmp1, syndrome lsl data1, data1, tmp1 lsl data2, data2, tmp1 lsr result, data1, #24 ldrd r4, r5, [sp], #16 .cfi_restore 4 .cfi_restore 5 /* R6/7 not used in this sequence. */ .cfi_restore 6 .cfi_restore 7 sub result, result, data2, lsr #24 bx lr .cfi_endproc .size strcmp, . - .Lstrcmp_start_addr picolibc-1.7.4/newlib/libc/machine/arm/strcmp-armv6m.S000066400000000000000000000060631414576234500225450ustar00rootroot00000000000000/* * Copyright (c) 2014 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Implementation of strcmp for ARMv6m. This version is only used in ARMv6-M when we want an efficient implementation. Otherwize if the code size is preferred, strcmp-armv4t.S will be used. */ .thumb_func .syntax unified .arch armv6-m .macro DoSub n, label subs r0, r0, r1 #ifdef __ARM_BIG_ENDIAN lsrs r1, r4, \n #else lsls r1, r4, \n #endif orrs r1, r0 bne \label .endm .macro Byte_Test n, label lsrs r0, r2, \n lsrs r1, r3, \n DoSub \n, \label .endm .text def_fn strcmp .cfi_sections .debug_frame .cfi_startproc mov r2, r0 push {r4, r5, r6, lr} orrs r2, r1 lsls r2, r2, #30 bne 6f ldr r5, =0x01010101 lsls r6, r5, #7 1: ldmia r0!, {r2} ldmia r1!, {r3} subs r4, r2, r5 bics r4, r2 ands r4, r6 beq 3f #ifdef __ARM_BIG_ENDIAN Byte_Test #24, 4f Byte_Test #16, 4f Byte_Test #8, 4f b 7f 3: cmp r2, r3 beq 1b cmp r2, r3 #else uxtb r0, r2 uxtb r1, r3 DoSub #24, 2f uxth r0, r2 uxth r1, r3 DoSub #16, 2f lsls r0, r2, #8 lsls r1, r3, #8 lsrs r0, r0, #8 lsrs r1, r1, #8 DoSub #8, 2f lsrs r0, r2, #24 lsrs r1, r3, #24 subs r0, r0, r1 2: pop {r4, r5, r6, pc} 3: cmp r2, r3 beq 1b rev r0, r2 rev r1, r3 cmp r0, r1 #endif bls 5f movs r0, #1 4: pop {r4, r5, r6, pc} 5: movs r0, #0 mvns r0, r0 pop {r4, r5, r6, pc} 6: ldrb r2, [r0, #0] ldrb r3, [r1, #0] adds r0, #1 adds r1, #1 cmp r2, #0 beq 7f cmp r2, r3 bne 7f ldrb r2, [r0, #0] ldrb r3, [r1, #0] adds r0, #1 adds r1, #1 cmp r2, #0 beq 7f cmp r2, r3 beq 6b 7: subs r0, r2, r3 pop {r4, r5, r6, pc} .cfi_endproc .size strcmp, . - strcmp picolibc-1.7.4/newlib/libc/machine/arm/strcmp-armv7.S000066400000000000000000000273301414576234500223710ustar00rootroot00000000000000/* * Copyright (c) 2012-2014 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Implementation of strcmp for ARMv7 when DSP instructions are available. Use ldrd to support wider loads, provided the data is sufficiently aligned. Use saturating arithmetic to optimize the compares. */ /* Build Options: STRCMP_NO_PRECHECK: Don't run a quick pre-check of the first byte in the string. If comparing completely random strings the pre-check will save time, since there is a very high probability of a mismatch in the first character: we save significant overhead if this is the common case. However, if strings are likely to be identical (eg because we're verifying a hit in a hash table), then this check is largely redundant. */ /* This version uses Thumb-2 code. */ .thumb .syntax unified /* Parameters and result. */ #define src1 r0 #define src2 r1 #define result r0 /* Overlaps src1. */ /* Internal variables. */ #define tmp1 r4 #define tmp2 r5 #define const_m1 r12 /* Additional internal variables for 64-bit aligned data. */ #define data1a r2 #define data1b r3 #define data2a r6 #define data2b r7 #define syndrome_a tmp1 #define syndrome_b tmp2 /* Additional internal variables for 32-bit aligned data. */ #define data1 r2 #define data2 r3 #define syndrome tmp2 /* Macro to compute and return the result value for word-aligned cases. */ .macro strcmp_epilogue_aligned synd d1 d2 restore_r6 #ifdef __ARM_BIG_ENDIAN /* If data1 contains a zero byte, then syndrome will contain a 1 in bit 7 of that byte. Otherwise, the highest set bit in the syndrome will highlight the first different bit. It is therefore sufficient to extract the eight bits starting with the syndrome bit. */ clz tmp1, \synd lsl r1, \d2, tmp1 .if \restore_r6 ldrd r6, r7, [sp, #8] .endif .cfi_restore 6 .cfi_restore 7 lsl \d1, \d1, tmp1 .cfi_remember_state lsr result, \d1, #24 ldrd r4, r5, [sp], #16 .cfi_restore 4 .cfi_restore 5 sub result, result, r1, lsr #24 bx lr #else /* To use the big-endian trick we'd have to reverse all three words. that's slower than this approach. */ rev \synd, \synd clz tmp1, \synd bic tmp1, tmp1, #7 lsr r1, \d2, tmp1 .cfi_remember_state .if \restore_r6 ldrd r6, r7, [sp, #8] .endif .cfi_restore 6 .cfi_restore 7 lsr \d1, \d1, tmp1 and result, \d1, #255 and r1, r1, #255 ldrd r4, r5, [sp], #16 .cfi_restore 4 .cfi_restore 5 sub result, result, r1 bx lr #endif .endm .text .p2align 5 .Lstrcmp_start_addr: #ifndef STRCMP_NO_PRECHECK .Lfastpath_exit: sub r0, r2, r3 bx lr nop #endif def_fn strcmp #ifndef STRCMP_NO_PRECHECK ldrb r2, [src1] ldrb r3, [src2] cmp r2, #1 it cs cmpcs r2, r3 bne .Lfastpath_exit #endif .cfi_sections .debug_frame .cfi_startproc strd r4, r5, [sp, #-16]! .cfi_def_cfa_offset 16 .cfi_offset 4, -16 .cfi_offset 5, -12 orr tmp1, src1, src2 strd r6, r7, [sp, #8] .cfi_offset 6, -8 .cfi_offset 7, -4 mvn const_m1, #0 lsl r2, tmp1, #29 cbz r2, .Lloop_aligned8 .Lnot_aligned: eor tmp1, src1, src2 tst tmp1, #7 bne .Lmisaligned8 /* Deal with mutual misalignment by aligning downwards and then masking off the unwanted loaded data to prevent a difference. */ and tmp1, src1, #7 bic src1, src1, #7 and tmp2, tmp1, #3 bic src2, src2, #7 lsl tmp2, tmp2, #3 /* Bytes -> bits. */ ldrd data1a, data1b, [src1], #16 tst tmp1, #4 ldrd data2a, data2b, [src2], #16 /* In thumb code we can't use MVN with a register shift, but we do have ORN. */ S2HI tmp1, const_m1, tmp2 orn data1a, data1a, tmp1 orn data2a, data2a, tmp1 beq .Lstart_realigned8 orn data1b, data1b, tmp1 mov data1a, const_m1 orn data2b, data2b, tmp1 mov data2a, const_m1 b .Lstart_realigned8 /* Unwind the inner loop by a factor of 2, giving 16 bytes per pass. */ .p2align 5,,12 /* Don't start in the tail bytes of a cache line. */ .p2align 2 /* Always word aligned. */ .Lloop_aligned8: ldrd data1a, data1b, [src1], #16 ldrd data2a, data2b, [src2], #16 .Lstart_realigned8: uadd8 syndrome_b, data1a, const_m1 /* Only want GE bits, */ eor syndrome_a, data1a, data2a sel syndrome_a, syndrome_a, const_m1 cbnz syndrome_a, .Ldiff_in_a uadd8 syndrome_b, data1b, const_m1 /* Only want GE bits. */ eor syndrome_b, data1b, data2b sel syndrome_b, syndrome_b, const_m1 cbnz syndrome_b, .Ldiff_in_b ldrd data1a, data1b, [src1, #-8] ldrd data2a, data2b, [src2, #-8] uadd8 syndrome_b, data1a, const_m1 /* Only want GE bits, */ eor syndrome_a, data1a, data2a sel syndrome_a, syndrome_a, const_m1 uadd8 syndrome_b, data1b, const_m1 /* Only want GE bits. */ eor syndrome_b, data1b, data2b sel syndrome_b, syndrome_b, const_m1 /* Can't use CBZ for backwards branch. */ orrs syndrome_b, syndrome_b, syndrome_a /* Only need if s_a == 0 */ beq .Lloop_aligned8 .Ldiff_found: cbnz syndrome_a, .Ldiff_in_a .Ldiff_in_b: strcmp_epilogue_aligned syndrome_b, data1b, data2b 1 .Ldiff_in_a: .cfi_restore_state strcmp_epilogue_aligned syndrome_a, data1a, data2a 1 .cfi_restore_state .Lmisaligned8: tst tmp1, #3 bne .Lmisaligned4 ands tmp1, src1, #3 bne .Lmutual_align4 /* Unrolled by a factor of 2, to reduce the number of post-increment operations. */ .Lloop_aligned4: ldr data1, [src1], #8 ldr data2, [src2], #8 .Lstart_realigned4: uadd8 syndrome, data1, const_m1 /* Only need GE bits. */ eor syndrome, data1, data2 sel syndrome, syndrome, const_m1 cbnz syndrome, .Laligned4_done ldr data1, [src1, #-4] ldr data2, [src2, #-4] uadd8 syndrome, data1, const_m1 eor syndrome, data1, data2 sel syndrome, syndrome, const_m1 cmp syndrome, #0 beq .Lloop_aligned4 .Laligned4_done: strcmp_epilogue_aligned syndrome, data1, data2, 0 .Lmutual_align4: .cfi_restore_state /* Deal with mutual misalignment by aligning downwards and then masking off the unwanted loaded data to prevent a difference. */ lsl tmp1, tmp1, #3 /* Bytes -> bits. */ bic src1, src1, #3 ldr data1, [src1], #8 bic src2, src2, #3 ldr data2, [src2], #8 /* In thumb code we can't use MVN with a register shift, but we do have ORN. */ S2HI tmp1, const_m1, tmp1 orn data1, data1, tmp1 orn data2, data2, tmp1 b .Lstart_realigned4 .Lmisaligned4: ands tmp1, src1, #3 beq .Lsrc1_aligned sub src2, src2, tmp1 bic src1, src1, #3 lsls tmp1, tmp1, #31 ldr data1, [src1], #4 beq .Laligned_m2 bcs .Laligned_m1 #ifdef STRCMP_NO_PRECHECK ldrb data2, [src2, #1] uxtb tmp1, data1, ror #BYTE1_OFFSET subs tmp1, tmp1, data2 bne .Lmisaligned_exit cbz data2, .Lmisaligned_exit .Laligned_m2: ldrb data2, [src2, #2] uxtb tmp1, data1, ror #BYTE2_OFFSET subs tmp1, tmp1, data2 bne .Lmisaligned_exit cbz data2, .Lmisaligned_exit .Laligned_m1: ldrb data2, [src2, #3] uxtb tmp1, data1, ror #BYTE3_OFFSET subs tmp1, tmp1, data2 bne .Lmisaligned_exit add src2, src2, #4 cbnz data2, .Lsrc1_aligned #else /* STRCMP_NO_PRECHECK */ /* If we've done the pre-check, then we don't need to check the first byte again here. */ ldrb data2, [src2, #2] uxtb tmp1, data1, ror #BYTE2_OFFSET subs tmp1, tmp1, data2 bne .Lmisaligned_exit cbz data2, .Lmisaligned_exit .Laligned_m2: ldrb data2, [src2, #3] uxtb tmp1, data1, ror #BYTE3_OFFSET subs tmp1, tmp1, data2 bne .Lmisaligned_exit cbnz data2, .Laligned_m1 #endif .Lmisaligned_exit: .cfi_remember_state mov result, tmp1 ldr r4, [sp], #16 .cfi_restore 4 bx lr #ifndef STRCMP_NO_PRECHECK .Laligned_m1: add src2, src2, #4 #endif .Lsrc1_aligned: .cfi_restore_state /* src1 is word aligned, but src2 has no common alignment with it. */ ldr data1, [src1], #4 lsls tmp1, src2, #31 /* C=src2[1], Z=src2[0]. */ bic src2, src2, #3 ldr data2, [src2], #4 bhi .Loverlap1 /* C=1, Z=0 => src2[1:0] = 0b11. */ bcs .Loverlap2 /* C=1, Z=1 => src2[1:0] = 0b10. */ /* (overlap3) C=0, Z=0 => src2[1:0] = 0b01. */ .Loverlap3: bic tmp1, data1, #MSB uadd8 syndrome, data1, const_m1 eors syndrome, tmp1, data2, S2LO #8 sel syndrome, syndrome, const_m1 bne 4f cbnz syndrome, 5f ldr data2, [src2], #4 eor tmp1, tmp1, data1 cmp tmp1, data2, S2HI #24 bne 6f ldr data1, [src1], #4 b .Loverlap3 4: S2LO data2, data2, #8 b .Lstrcmp_tail 5: bics syndrome, syndrome, #MSB bne .Lstrcmp_done_equal /* We can only get here if the MSB of data1 contains 0, so fast-path the exit. */ ldrb result, [src2] .cfi_remember_state ldrd r4, r5, [sp], #16 .cfi_restore 4 .cfi_restore 5 /* R6/7 Not used in this sequence. */ .cfi_restore 6 .cfi_restore 7 neg result, result bx lr 6: .cfi_restore_state S2LO data1, data1, #24 and data2, data2, #LSB b .Lstrcmp_tail .p2align 5,,12 /* Ensure at least 3 instructions in cache line. */ .Loverlap2: and tmp1, data1, const_m1, S2LO #16 uadd8 syndrome, data1, const_m1 eors syndrome, tmp1, data2, S2LO #16 sel syndrome, syndrome, const_m1 bne 4f cbnz syndrome, 5f ldr data2, [src2], #4 eor tmp1, tmp1, data1 cmp tmp1, data2, S2HI #16 bne 6f ldr data1, [src1], #4 b .Loverlap2 4: S2LO data2, data2, #16 b .Lstrcmp_tail 5: ands syndrome, syndrome, const_m1, S2LO #16 bne .Lstrcmp_done_equal ldrh data2, [src2] S2LO data1, data1, #16 #ifdef __ARM_BIG_ENDIAN lsl data2, data2, #16 #endif b .Lstrcmp_tail 6: S2LO data1, data1, #16 and data2, data2, const_m1, S2LO #16 b .Lstrcmp_tail .p2align 5,,12 /* Ensure at least 3 instructions in cache line. */ .Loverlap1: and tmp1, data1, #LSB uadd8 syndrome, data1, const_m1 eors syndrome, tmp1, data2, S2LO #24 sel syndrome, syndrome, const_m1 bne 4f cbnz syndrome, 5f ldr data2, [src2], #4 eor tmp1, tmp1, data1 cmp tmp1, data2, S2HI #8 bne 6f ldr data1, [src1], #4 b .Loverlap1 4: S2LO data2, data2, #24 b .Lstrcmp_tail 5: tst syndrome, #LSB bne .Lstrcmp_done_equal ldr data2, [src2] 6: S2LO data1, data1, #8 bic data2, data2, #MSB b .Lstrcmp_tail .Lstrcmp_done_equal: mov result, #0 .cfi_remember_state ldrd r4, r5, [sp], #16 .cfi_restore 4 .cfi_restore 5 /* R6/7 not used in this sequence. */ .cfi_restore 6 .cfi_restore 7 bx lr .Lstrcmp_tail: .cfi_restore_state #ifndef __ARM_BIG_ENDIAN rev data1, data1 rev data2, data2 /* Now everything looks big-endian... */ #endif uadd8 tmp1, data1, const_m1 eor tmp1, data1, data2 sel syndrome, tmp1, const_m1 clz tmp1, syndrome lsl data1, data1, tmp1 lsl data2, data2, tmp1 lsr result, data1, #24 ldrd r4, r5, [sp], #16 .cfi_restore 4 .cfi_restore 5 /* R6/7 not used in this sequence. */ .cfi_restore 6 .cfi_restore 7 sub result, result, data2, lsr #24 bx lr .cfi_endproc .size strcmp, . - .Lstrcmp_start_addr picolibc-1.7.4/newlib/libc/machine/arm/strcmp-armv7m.S000066400000000000000000000217241414576234500225470ustar00rootroot00000000000000/* * Copyright (c) 2012-2014 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Very similar to the generic code, but uses Thumb2 as implemented in ARMv7-M. */ /* Parameters and result. */ #define src1 r0 #define src2 r1 #define result r0 /* Overlaps src1. */ /* Internal variables. */ #define data1 r2 #define data2 r3 #define tmp2 r5 #define tmp1 r12 #define syndrome r12 /* Overlaps tmp1 */ .thumb .syntax unified def_fn strcmp .cfi_sections .debug_frame .cfi_startproc eor tmp1, src1, src2 tst tmp1, #3 /* Strings not at same byte offset from a word boundary. */ bne .Lstrcmp_unaligned ands tmp1, src1, #3 bic src1, src1, #3 bic src2, src2, #3 ldr data1, [src1], #4 it eq ldreq data2, [src2], #4 beq 4f /* Although s1 and s2 have identical initial alignment, they are not currently word aligned. Rather than comparing bytes, make sure that any bytes fetched from before the addressed bytes are forced to 0xff. Then they will always compare equal. */ eor tmp1, tmp1, #3 mvn data2, #MSB lsl tmp1, tmp1, #3 S2LO tmp1, data2, tmp1 ldr data2, [src2], #4 orr data1, data1, tmp1 orr data2, data2, tmp1 .p2align 2 /* Critical loop. */ 4: sub syndrome, data1, #0x01010101 cmp data1, data2 /* check for any zero bytes in first word */ itttt eq biceq syndrome, syndrome, data1 tsteq syndrome, #0x80808080 ldreq data1, [src1], #4 ldreq data2, [src2], #4 beq 4b 2: /* There's a zero or a different byte in the word */ S2HI result, data1, #24 S2LO data1, data1, #8 cmp result, #1 it cs cmpcs result, data2, S2HI #24 it eq S2LOEQ data2, data2, #8 beq 2b /* On a big-endian machine, RESULT contains the desired byte in bits 0-7; on a little-endian machine they are in bits 24-31. In both cases the other bits in RESULT are all zero. For DATA2 the interesting byte is at the other end of the word, but the other bits are not necessarily zero. We need a signed result representing the differnece in the unsigned bytes, so for the little-endian case we can't just shift the interesting bits up. */ #ifdef __ARM_BIG_ENDIAN sub result, result, data2, lsr #24 #else and data2, data2, #255 lsrs result, result, #24 subs result, result, data2 #endif bx lr #if 0 /* The assembly code below is based on the following alogrithm. */ #ifdef __ARM_BIG_ENDIAN #define RSHIFT << #define LSHIFT >> #else #define RSHIFT >> #define LSHIFT << #endif #define body(shift) \ mask = 0xffffffffU RSHIFT shift; \ data1 = *src1++; \ data2 = *src2++; \ do \ { \ tmp2 = data1 & mask; \ if (__builtin_expect(tmp2 != data2 RSHIFT shift, 0)) \ { \ data2 RSHIFT= shift; \ break; \ } \ if (__builtin_expect(((data1 - b1) & ~data1) & (b1 << 7), 0)) \ { \ /* See comment in assembler below re syndrome on big-endian */\ if ((((data1 - b1) & ~data1) & (b1 << 7)) & mask) \ data2 RSHIFT= shift; \ else \ { \ data2 = *src2; \ tmp2 = data1 RSHIFT (32 - shift); \ data2 = (data2 LSHIFT (32 - shift)) RSHIFT (32 - shift); \ } \ break; \ } \ data2 = *src2++; \ tmp2 ^= data1; \ if (__builtin_expect(tmp2 != data2 LSHIFT (32 - shift), 0)) \ { \ tmp2 = data1 >> (32 - shift); \ data2 = (data2 << (32 - shift)) RSHIFT (32 - shift); \ break; \ } \ data1 = *src1++; \ } while (1) const unsigned* src1; const unsigned* src2; unsigned data1, data2; unsigned mask; unsigned shift; unsigned b1 = 0x01010101; char c1, c2; unsigned tmp2; while (((unsigned) s1) & 3) { c1 = *s1++; c2 = *s2++; if (c1 == 0 || c1 != c2) return c1 - (int)c2; } src1 = (unsigned*) (((unsigned)s1) & ~3); src2 = (unsigned*) (((unsigned)s2) & ~3); tmp2 = ((unsigned) s2) & 3; if (tmp2 == 1) { body(8); } else if (tmp2 == 2) { body(16); } else { body (24); } do { #ifdef __ARM_BIG_ENDIAN c1 = (char) tmp2 >> 24; c2 = (char) data2 >> 24; #else /* not __ARM_BIG_ENDIAN */ c1 = (char) tmp2; c2 = (char) data2; #endif /* not __ARM_BIG_ENDIAN */ tmp2 RSHIFT= 8; data2 RSHIFT= 8; } while (c1 != 0 && c1 == c2); return c1 - c2; #endif /* 0 */ /* First of all, compare bytes until src1(sp1) is word-aligned. */ .Lstrcmp_unaligned: tst src1, #3 beq 2f ldrb data1, [src1], #1 ldrb data2, [src2], #1 cmp data1, #1 it cs cmpcs data1, data2 beq .Lstrcmp_unaligned sub result, data1, data2 bx lr 2: stmfd sp!, {r5} .cfi_def_cfa_offset 4 .cfi_offset 5, -4 ldr data1, [src1], #4 and tmp2, src2, #3 bic src2, src2, #3 ldr data2, [src2], #4 cmp tmp2, #2 beq .Loverlap2 bhi .Loverlap1 /* Critical inner Loop: Block with 3 bytes initial overlap */ .p2align 2 .Loverlap3: bic tmp2, data1, #MSB cmp tmp2, data2, S2LO #8 sub syndrome, data1, #0x01010101 bic syndrome, syndrome, data1 bne 4f ands syndrome, syndrome, #0x80808080 it eq ldreq data2, [src2], #4 bne 5f eor tmp2, tmp2, data1 cmp tmp2, data2, S2HI #24 bne 6f ldr data1, [src1], #4 b .Loverlap3 4: S2LO data2, data2, #8 b .Lstrcmp_tail 5: #ifdef __ARM_BIG_ENDIAN /* The syndrome value may contain false ones if the string ends with the bytes 0x01 0x00. */ tst data1, #0xff000000 itt ne tstne data1, #0x00ff0000 tstne data1, #0x0000ff00 beq .Lstrcmp_done_equal #else bics syndrome, syndrome, #0xff000000 bne .Lstrcmp_done_equal #endif ldrb data2, [src2] S2LO tmp2, data1, #24 #ifdef __ARM_BIG_ENDIAN lsl data2, data2, #24 #endif b .Lstrcmp_tail 6: S2LO tmp2, data1, #24 and data2, data2, #LSB b .Lstrcmp_tail /* Critical inner Loop: Block with 2 bytes initial overlap. */ .p2align 2 .Loverlap2: S2HI tmp2, data1, #16 sub syndrome, data1, #0x01010101 S2LO tmp2, tmp2, #16 bic syndrome, syndrome, data1 cmp tmp2, data2, S2LO #16 bne 4f ands syndrome, syndrome, #0x80808080 it eq ldreq data2, [src2], #4 bne 5f eor tmp2, tmp2, data1 cmp tmp2, data2, S2HI #16 bne 6f ldr data1, [src1], #4 b .Loverlap2 5: #ifdef __ARM_BIG_ENDIAN /* The syndrome value may contain false ones if the string ends with the bytes 0x01 0x00 */ tst data1, #0xff000000 it ne tstne data1, #0x00ff0000 beq .Lstrcmp_done_equal #else lsls syndrome, syndrome, #16 bne .Lstrcmp_done_equal #endif ldrh data2, [src2] S2LO tmp2, data1, #16 #ifdef __ARM_BIG_ENDIAN lsl data2, data2, #16 #endif b .Lstrcmp_tail 6: S2HI data2, data2, #16 S2LO tmp2, data1, #16 4: S2LO data2, data2, #16 b .Lstrcmp_tail /* Critical inner Loop: Block with 1 byte initial overlap. */ .p2align 2 .Loverlap1: and tmp2, data1, #LSB cmp tmp2, data2, S2LO #24 sub syndrome, data1, #0x01010101 bic syndrome, syndrome, data1 bne 4f ands syndrome, syndrome, #0x80808080 it eq ldreq data2, [src2], #4 bne 5f eor tmp2, tmp2, data1 cmp tmp2, data2, S2HI #8 bne 6f ldr data1, [src1], #4 b .Loverlap1 4: S2LO data2, data2, #24 b .Lstrcmp_tail 5: /* The syndrome value may contain false ones if the string ends with the bytes 0x01 0x00. */ tst data1, #LSB beq .Lstrcmp_done_equal ldr data2, [src2], #4 6: S2LO tmp2, data1, #8 bic data2, data2, #MSB b .Lstrcmp_tail .Lstrcmp_done_equal: mov result, #0 .cfi_remember_state ldmfd sp!, {r5} .cfi_restore 5 .cfi_def_cfa_offset 0 bx lr .Lstrcmp_tail: .cfi_restore_state and r2, tmp2, #LSB and result, data2, #LSB cmp result, #1 it cs cmpcs result, r2 itt eq S2LOEQ tmp2, tmp2, #8 S2LOEQ data2, data2, #8 beq .Lstrcmp_tail sub result, r2, result ldmfd sp!, {r5} .cfi_restore 5 .cfi_def_cfa_offset 0 bx lr .cfi_endproc .size strcmp, . - strcmp picolibc-1.7.4/newlib/libc/machine/arm/strcmp.S000066400000000000000000000055131414576234500213360ustar00rootroot00000000000000/* * Copyright (c) 2012-2014 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Wrapper for the various implementations of strcmp. */ #include "acle-compat.h" #ifdef __ARM_BIG_ENDIAN #define S2LO lsl #define S2LOEQ lsleq #define S2HI lsr #define MSB 0x000000ff #define LSB 0xff000000 #define BYTE0_OFFSET 24 #define BYTE1_OFFSET 16 #define BYTE2_OFFSET 8 #define BYTE3_OFFSET 0 #else /* not __ARM_BIG_ENDIAN */ #define S2LO lsr #define S2LOEQ lsreq #define S2HI lsl #define BYTE0_OFFSET 0 #define BYTE1_OFFSET 8 #define BYTE2_OFFSET 16 #define BYTE3_OFFSET 24 #define MSB 0xff000000 #define LSB 0x000000ff #endif /* not __ARM_BIG_ENDIAN */ .macro def_fn f p2align=0 .text .p2align \p2align .global \f .type \f, %function \f: .endm #if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) \ || (__ARM_ARCH_ISA_THUMB == 1 && !__ARM_ARCH_ISA_ARM) # if defined (__thumb__) && !defined (__thumb2__) /* Thumb1 only variant. If size is preferred, use strcmp-armv4t.S. If speed is preferred, the strcmp function in strcmp-armv6m.S will be used. */ # if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) # include "strcmp-armv4t.S" # else # include "strcmp-armv6m.S" # endif # else # include "strcmp-arm-tiny.S" # endif #elif __ARM_ARCH_ISA_THUMB == 2 # ifdef __ARM_FEATURE_SIMD32 # include "strcmp-armv7.S" # else # include "strcmp-armv7m.S" # endif #elif __ARM_ARCH >= 6 # include "strcmp-armv6.S" #else # include "strcmp-armv4.S" #endif picolibc-1.7.4/newlib/libc/machine/arm/strcpy.S000066400000000000000000000105041414576234500213460ustar00rootroot00000000000000/* * Copyright (c) 2008 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "arm_asm.h" #ifdef __thumb2__ #define magic1(REG) #0x01010101 #define magic2(REG) #0x80808080 #else #define magic1(REG) REG #define magic2(REG) REG , lsl #7 #endif .syntax unified #ifdef __thumb__ .thumb #endif .text .global strcpy .type strcpy, %function strcpy: #if !(defined(__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) || \ (defined (__thumb__) && !defined (__thumb2__))) #ifdef _ISA_ARM_7 pld [r1] #endif eor r2, r0, r1 mov ip, r0 tst r2, #3 bne 4f tst r1, #3 bne 3f 5: #ifndef __thumb2__ str r5, [sp, #-4]! mov r5, #0x01 orr r5, r5, r5, lsl #8 orr r5, r5, r5, lsl #16 #endif str r4, [sp, #-4]! tst r1, #4 ldr r3, [r1], #4 beq 2f sub r2, r3, magic1(r5) bics r2, r2, r3 tst r2, magic2(r5) itt eq streq r3, [ip], #4 ldreq r3, [r1], #4 bne 1f /* Inner loop. We now know that r1 is 64-bit aligned, so we can safely fetch up to two words. This allows us to avoid load stalls. */ .p2align 2 2: #ifdef _ISA_ARM_7 pld [r1, #8] #endif ldr r4, [r1], #4 sub r2, r3, magic1(r5) bics r2, r2, r3 tst r2, magic2(r5) sub r2, r4, magic1(r5) bne 1f str r3, [ip], #4 bics r2, r2, r4 tst r2, magic2(r5) itt eq ldreq r3, [r1], #4 streq r4, [ip], #4 beq 2b mov r3, r4 1: #ifdef __ARMEB__ rors r3, r3, #24 #endif strb r3, [ip], #1 tst r3, #0xff #ifdef __ARMEL__ ror r3, r3, #8 #endif bne 1b ldr r4, [sp], #4 #ifndef __thumb2__ ldr r5, [sp], #4 #endif bx lr /* Strings have the same offset from word alignment, but it's not zero. */ 3: tst r1, #1 beq 1f ldrb r2, [r1], #1 strb r2, [ip], #1 cmp r2, #0 it eq bxeq lr 1: tst r1, #2 beq 5b ldrh r2, [r1], #2 #ifdef __ARMEB__ tst r2, #0xff00 iteet ne strhne r2, [ip], #2 lsreq r2, r2, #8 strbeq r2, [ip] tstne r2, #0xff #else tst r2, #0xff itet ne strhne r2, [ip], #2 strbeq r2, [ip] tstne r2, #0xff00 #endif bne 5b bx lr /* src and dst do not have a common word-alignement. Fall back to byte copying. */ 4: ldrb r2, [r1], #1 strb r2, [ip], #1 cmp r2, #0 bne 4b bx lr #elif !defined (__thumb__) || defined (__thumb2__) mov r3, r0 1: ldrb r2, [r1], #1 strb r2, [r3], #1 cmp r2, #0 bne 1b bx lr #else movs r3, r0 1: ldrb r2, [r1] adds r1, #1 strb r2, [r3] adds r3, #1 cmp r2, #0 bne 1b bx lr .size strcpy, . - strcpy #endif picolibc-1.7.4/newlib/libc/machine/arm/strlen-armv7.S000066400000000000000000000135551414576234500223740ustar00rootroot00000000000000/* Copyright (c) 2010-2011,2013 Linaro Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Linaro Limited nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Assumes: ARMv6T2 or ARMv7E-M, AArch32 */ /* Copyright (c) 2015 ARM Ltd. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Linaro nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "acle-compat.h" .macro def_fn f p2align=0 .text .p2align \p2align .global \f .type \f, %function \f: .endm #ifdef __ARMEB__ #define S2LO lsl #define S2HI lsr #else #define S2LO lsr #define S2HI lsl #endif /* This code requires Thumb. */ #if __ARM_ARCH_PROFILE == 'M' .arch armv7e-m #else .arch armv6t2 #endif .eabi_attribute Tag_ARM_ISA_use, 0 .thumb .syntax unified /* Parameters and result. */ #define srcin r0 #define result r0 /* Internal variables. */ #define src r1 #define data1a r2 #define data1b r3 #define const_m1 r12 #define const_0 r4 #define tmp1 r4 /* Overlaps const_0 */ #define tmp2 r5 def_fn strlen p2align=6 pld [srcin, #0] strd r4, r5, [sp, #-8]! bic src, srcin, #7 mvn const_m1, #0 ands tmp1, srcin, #7 /* (8 - bytes) to alignment. */ pld [src, #32] bne.w .Lmisaligned8 mov const_0, #0 mov result, #-8 .Lloop_aligned: /* Bytes 0-7. */ ldrd data1a, data1b, [src] pld [src, #64] add result, result, #8 .Lstart_realigned: uadd8 data1a, data1a, const_m1 /* Saturating GE<0:3> set. */ sel data1a, const_0, const_m1 /* Select based on GE<0:3>. */ uadd8 data1b, data1b, const_m1 sel data1b, data1a, const_m1 /* Only used if d1a == 0. */ cbnz data1b, .Lnull_found /* Bytes 8-15. */ ldrd data1a, data1b, [src, #8] uadd8 data1a, data1a, const_m1 /* Saturating GE<0:3> set. */ add result, result, #8 sel data1a, const_0, const_m1 /* Select based on GE<0:3>. */ uadd8 data1b, data1b, const_m1 sel data1b, data1a, const_m1 /* Only used if d1a == 0. */ cbnz data1b, .Lnull_found /* Bytes 16-23. */ ldrd data1a, data1b, [src, #16] uadd8 data1a, data1a, const_m1 /* Saturating GE<0:3> set. */ add result, result, #8 sel data1a, const_0, const_m1 /* Select based on GE<0:3>. */ uadd8 data1b, data1b, const_m1 sel data1b, data1a, const_m1 /* Only used if d1a == 0. */ cbnz data1b, .Lnull_found /* Bytes 24-31. */ ldrd data1a, data1b, [src, #24] add src, src, #32 uadd8 data1a, data1a, const_m1 /* Saturating GE<0:3> set. */ add result, result, #8 sel data1a, const_0, const_m1 /* Select based on GE<0:3>. */ uadd8 data1b, data1b, const_m1 sel data1b, data1a, const_m1 /* Only used if d1a == 0. */ cmp data1b, #0 beq .Lloop_aligned .Lnull_found: cmp data1a, #0 itt eq addeq result, result, #4 moveq data1a, data1b #ifndef __ARMEB__ rev data1a, data1a #endif clz data1a, data1a ldrd r4, r5, [sp], #8 add result, result, data1a, lsr #3 /* Bits -> Bytes. */ bx lr .Lmisaligned8: ldrd data1a, data1b, [src] and tmp2, tmp1, #3 rsb result, tmp1, #0 lsl tmp2, tmp2, #3 /* Bytes -> bits. */ tst tmp1, #4 pld [src, #64] S2HI tmp2, const_m1, tmp2 orn data1a, data1a, tmp2 itt ne ornne data1b, data1b, tmp2 movne data1a, const_m1 mov const_0, #0 b .Lstart_realigned .size strlen, . - strlen picolibc-1.7.4/newlib/libc/machine/arm/strlen-thumb1-Os.S000066400000000000000000000036161414576234500231140ustar00rootroot00000000000000/* Copyright (c) 2015 ARM Ltd. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Linaro nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ .macro def_fn f p2align=0 .text .p2align \p2align .global \f .type \f, %function \f: .endm .arch armv4t .eabi_attribute Tag_also_compatible_with, "\006\013" /* ARMv6-M. */ .eabi_attribute Tag_ARM_ISA_use, 0 .thumb .syntax unified def_fn strlen p2align=1 movs r3, #0 1: ldrb r2, [r0, r3] adds r3, r3, #1 cmp r2, #0 bne 1b subs r0, r3, #1 bx lr .size strlen, . - strlen picolibc-1.7.4/newlib/libc/machine/arm/strlen-thumb2-Os.S000066400000000000000000000037001414576234500231070ustar00rootroot00000000000000/* Copyright (c) 2015 ARM Ltd. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Linaro nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "acle-compat.h" .macro def_fn f p2align=0 .text .p2align \p2align .global \f .type \f, %function \f: .endm #if __ARM_ARCH_ISA_THUMB >= 2 && __ARM_ARCH >= 7 .arch armv7 #else .arch armv6t2 #endif .eabi_attribute Tag_ARM_ISA_use, 0 .thumb .syntax unified def_fn strlen p2align=1 mov r3, r0 1: ldrb r2, [r3], #1 cmp r2, #0 bne 1b subs r0, r3, r0 subs r0, #1 bx lr .size strlen, . - strlen picolibc-1.7.4/newlib/libc/machine/arm/strlen.S000066400000000000000000000040771414576234500213410ustar00rootroot00000000000000/* Copyright (c) 2015 ARM Ltd. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Linaro nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "acle-compat.h" #if defined __OPTIMIZE_SIZE__ || defined PREFER_SIZE_OVER_SPEED #if __ARM_ARCH_ISA_THUMB == 2 #include "strlen-thumb2-Os.S" #elif defined (__thumb__) #include "strlen-thumb1-Os.S" #else /* Implemented in strlen-stub.c. */ #endif #else /* defined __OPTIMIZE_SIZE__ || defined PREFER_SIZE_OVER_SPEED */ #if defined __thumb__ && ! defined __thumb2__ /* Implemented in strlen-stub.c. */ #elif __ARM_ARCH_ISA_THUMB >= 2 && defined __ARM_FEATURE_DSP #include "strlen-armv7.S" #else /* Implemented in strlen-stub.c. */ #endif #endif picolibc-1.7.4/newlib/libc/machine/arm/strlen.c000066400000000000000000000122461414576234500213560ustar00rootroot00000000000000/* * Copyright (c) 2008-2015 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "arm_asm.h" #include <_ansi.h> #include #include #if defined __OPTIMIZE_SIZE__ || defined PREFER_SIZE_OVER_SPEED #if __ARM_ARCH_ISA_THUMB == 2 /* Implemented in strlen.S. */ #elif defined (__thumb__) /* Implemented in strlen.S. */ #else #include "../../string/strlen.c" #endif #else /* defined __OPTIMIZE_SIZE__ || defined PREFER_SIZE_OVER_SPEED */ #if defined __thumb__ && ! defined __thumb2__ #include "../../string/strlen.c" #elif __ARM_ARCH_ISA_THUMB >= 2 && defined __ARM_FEATURE_DSP /* Implemented in strlen.S. */ #else #pragma GCC diagnostic ignored "-Wunused-parameter" size_t __attribute__((naked)) strlen (const char* str) { __asm__("len .req r0\n\t" "data .req r3\n\t" "addr .req r1\n\t" #ifdef _ISA_ARM_7 "pld [r0]\n\t" #endif /* Word-align address */ "bic addr, r0, #3\n\t" /* Get adjustment for start ... */ "ands len, r0, #3\n\t" "neg len, len\n\t" /* First word of data */ "ldr data, [addr], #4\n\t" /* Ensure bytes preceeding start ... */ "add ip, len, #4\n\t" "mov ip, ip, asl #3\n\t" "mvn r2, #0\n\t" /* ... are masked out */ #ifdef __thumb__ "itt ne\n\t" # ifdef __ARMEB__ "lslne r2, ip\n\t" # else "lsrne r2, ip\n\t" # endif "orrne data, data, r2\n\t" #else "it ne\n\t" # ifdef __ARMEB__ "orrne data, data, r2, lsl ip\n\t" # else "orrne data, data, r2, lsr ip\n\t" # endif #endif /* Magic const 0x01010101 */ #ifdef _ISA_ARM_7 "movw ip, #0x101\n\t" #else "mov ip, #0x1\n\t" "orr ip, ip, ip, lsl #8\n\t" #endif "orr ip, ip, ip, lsl #16\n" /* This is the main loop. We subtract one from each byte in the word: the sign bit changes iff the byte was zero or 0x80 -- we eliminate the latter case by anding the result with the 1-s complement of the data. */ "1:\n\t" /* test (data - 0x01010101) */ "sub r2, data, ip\n\t" /* ... & ~data */ "bic r2, r2, data\n\t" /* ... & 0x80808080 == 0? */ "ands r2, r2, ip, lsl #7\n\t" #ifdef _ISA_ARM_7 /* yes, get more data... */ "itt eq\n\t" "ldreq data, [addr], #4\n\t" /* and 4 more bytes */ "addeq len, len, #4\n\t" /* Unroll the loop a bit. */ "pld [addr, #8]\n\t" /* test (data - 0x01010101) */ "ittt eq\n\t" "subeq r2, data, ip\n\t" /* ... & ~data */ "biceq r2, r2, data\n\t" /* ... & 0x80808080 == 0? */ "andeqs r2, r2, ip, lsl #7\n\t" #endif "itt eq\n\t" /* yes, get more data... */ "ldreq data, [addr], #4\n\t" /* and 4 more bytes */ "addeq len, len, #4\n\t" "beq 1b\n\t" #ifdef __ARMEB__ "tst data, #0xff000000\n\t" "itttt ne\n\t" "addne len, len, #1\n\t" "tstne data, #0xff0000\n\t" "addne len, len, #1\n\t" "tstne data, #0xff00\n\t" "it ne\n\t" "addne len, len, #1\n\t" #else # ifdef _ISA_ARM_5 /* R2 is the residual sign bits from the above test. All we need to do now is establish the position of the first zero byte... */ /* Little-endian is harder, we need the number of trailing zeros / 8 */ # ifdef _ISA_ARM_7 "rbit r2, r2\n\t" "clz r2, r2\n\t" # else "rsb r1, r2, #0\n\t" "and r2, r2, r1\n\t" "clz r2, r2\n\t" "rsb r2, r2, #31\n\t" # endif "add len, len, r2, lsr #3\n\t" # else /* No CLZ instruction */ "tst data, #0xff\n\t" "itttt ne\n\t" "addne len, len, #1\n\t" "tstne data, #0xff00\n\t" "addne len, len, #1\n\t" "tstne data, #0xff0000\n\t" "it ne\n\t" "addne len, len, #1\n\t" # endif #endif "bx lr\n\t"); } #endif #endif picolibc-1.7.4/newlib/libc/machine/arm/sys/000077500000000000000000000000001414576234500205145ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/arm/sys/fenv.h000066400000000000000000000045361414576234500216330ustar00rootroot00000000000000/*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright (c) 2004-2005 David Schultz * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $FreeBSD$ */ #ifndef _SYS_FENV_H_ #define _SYS_FENV_H_ 1 #include #include #ifdef __cplusplus extern "C" { #endif typedef int fenv_t; typedef int fexcept_t; #if defined(__SOFTFP__) || (__ARM_FP & 0x8) == 0 #define PICOLIBC_DOUBLE_NOROUND #define PICOLIBC_DOUBLE_NOEXCEPT #endif #if defined(__SOFTFP__) || (__ARM_FP & 0x4) == 0 #define PICOLIBC_FLOAT_NOROUND #define PICOLIBC_FLOAT_NOEXCEPT #endif #ifndef __SOFTFP__ /* Exception flags */ #define FE_INVALID 0x0001 #define FE_DIVBYZERO 0x0002 #define FE_OVERFLOW 0x0004 #define FE_UNDERFLOW 0x0008 #define FE_INEXACT 0x0010 #define FE_DENORMAL 0x0080 #define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | \ FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW | FE_DENORMAL) /* Rounding modes */ #define FE_TONEAREST 0x00000000 #define FE_UPWARD 0x00400000 #define FE_DOWNWARD 0x00800000 #define FE_TOWARDZERO 0x00c00000 #endif #ifdef __cplusplus } #endif #endif /* _SYS_FENV_H_ */ picolibc-1.7.4/newlib/libc/machine/arm/sys/meson.build000066400000000000000000000032321414576234500226560ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2020 Keith Packard, # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # inc_sys_headers_machine = [ 'fenv.h' ] install_headers(inc_sys_headers_machine, subdir:'sys' ) picolibc-1.7.4/newlib/libc/machine/bfin/000077500000000000000000000000001414576234500200355ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/bfin/longjmp.S000066400000000000000000000044271414576234500216360ustar00rootroot00000000000000/* * longjmp for the Blackfin processor * * Copyright (C) 2006 Analog Devices, Inc. * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #define _ASM #define _SETJMP_H .text; .align 4; .globl _longjmp; .type _longjmp, STT_FUNC; _longjmp: P0 = R0; R0 = [P0 + 0x00]; [--SP] = R0; /* Put P0 on the stack */ P1 = [P0 + 0x04]; P2 = [P0 + 0x08]; P3 = [P0 + 0x0C]; P4 = [P0 + 0x10]; P5 = [P0 + 0x14]; FP = [P0 + 0x18]; R0 = [SP++]; /* Grab P0 from old stack */ SP = [P0 + 0x1C]; /* Update Stack Pointer */ [--SP] = R0; /* Put P0 on new stack */ [--SP] = R1; /* Put VAL arg on new stack */ R0 = [P0 + 0x20]; /* Data Registers */ R1 = [P0 + 0x24]; R2 = [P0 + 0x28]; R3 = [P0 + 0x2C]; R4 = [P0 + 0x30]; R5 = [P0 + 0x34]; R6 = [P0 + 0x38]; R7 = [P0 + 0x3C]; R0 = [P0 + 0x40]; ASTAT = R0; R0 = [P0 + 0x44]; /* Loop Counters */ LC0 = R0; R0 = [P0 + 0x48]; LC1 = R0; R0 = [P0 + 0x4C]; /* Accumulators */ A0.W = R0; R0 = [P0 + 0x50]; A0.X = R0; R0 = [P0 + 0x54]; A1.W = R0; R0 = [P0 + 0x58]; A1.X = R0; R0 = [P0 + 0x5C]; /* Index Registers */ I0 = R0; R0 = [P0 + 0x60]; I1 = R0; R0 = [P0 + 0x64]; I2 = R0; R0 = [P0 + 0x68]; I3 = R0; R0 = [P0 + 0x6C]; /* Modifier Registers */ M0 = R0; R0 = [P0 + 0x70]; M1 = R0; R0 = [P0 + 0x74]; M2 = R0; R0 = [P0 + 0x78]; M3 = R0; R0 = [P0 + 0x7C]; /* Length Registers */ L0 = R0; R0 = [P0 + 0x80]; L1 = R0; R0 = [P0 + 0x84]; L2 = R0; R0 = [P0 + 0x88]; L3 = R0; R0 = [P0 + 0x8C]; /* Base Registers */ B0 = R0; R0 = [P0 + 0x90]; B1 = R0; R0 = [P0 + 0x94]; B2 = R0; R0 = [P0 + 0x98]; B3 = R0; R0 = [P0 + 0x9C]; /* Return Address (PC) */ RETS = R0; R0 = [SP++]; P0 = [SP++]; CC = R0 == 0; IF !CC JUMP 1f; R0 = 1; 1: RTS; .size _longjmp, .-_longjmp; picolibc-1.7.4/newlib/libc/machine/bfin/setjmp.S000066400000000000000000000041341414576234500214650ustar00rootroot00000000000000/* * setjmp for the Blackfin processor * * Copyright (C) 2006 Analog Devices, Inc. * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #define _ASM #define _SETJMP_H .text; .align 4; .globl _setjmp; .type _setjmp, STT_FUNC; _setjmp: [--SP] = P0; /* Save P0 */ P0 = R0; R0 = [SP++]; [P0 + 0x00] = R0; /* Save saved P0 */ [P0 + 0x04] = P1; [P0 + 0x08] = P2; [P0 + 0x0C] = P3; [P0 + 0x10] = P4; [P0 + 0x14] = P5; [P0 + 0x18] = FP; /* Frame Pointer */ [P0 + 0x1C] = SP; /* Stack Pointer */ [P0 + 0x20] = P0; /* Data Registers */ [P0 + 0x24] = R1; [P0 + 0x28] = R2; [P0 + 0x2C] = R3; [P0 + 0x30] = R4; [P0 + 0x34] = R5; [P0 + 0x38] = R6; [P0 + 0x3C] = R7; R0 = ASTAT; [P0 + 0x40] = R0; R0 = LC0; /* Loop Counters */ [P0 + 0x44] = R0; R0 = LC1; [P0 + 0x48] = R0; R0 = A0.W; /* Accumulators */ [P0 + 0x4C] = R0; R0 = A0.X; [P0 + 0x50] = R0; R0 = A1.W; [P0 + 0x54] = R0; R0 = A1.X; [P0 + 0x58] = R0; R0 = I0; /* Index Registers */ [P0 + 0x5C] = R0; R0 = I1; [P0 + 0x60] = R0; R0 = I2; [P0 + 0x64] = R0; R0 = I3; [P0 + 0x68] = R0; R0 = M0; /* Modifier Registers */ [P0 + 0x6C] = R0; R0 = M1; [P0 + 0x70] = R0; R0 = M2; [P0 + 0x74] = R0; R0 = M3; [P0 + 0x78] = R0; R0 = L0; /* Length Registers */ [P0 + 0x7c] = R0; R0 = L1; [P0 + 0x80] = R0; R0 = L2; [P0 + 0x84] = R0; R0 = L3; [P0 + 0x88] = R0; R0 = B0; /* Base Registers */ [P0 + 0x8C] = R0; R0 = B1; [P0 + 0x90] = R0; R0 = B2; [P0 + 0x94] = R0; R0 = B3; [P0 + 0x98] = R0; R0 = RETS; [P0 + 0x9C] = R0; R0 = 0; RTS; .size _setjmp, .-_setjmp; picolibc-1.7.4/newlib/libc/machine/cr16/000077500000000000000000000000001414576234500176725ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/cr16/getenv.c000066400000000000000000000016371414576234500213350ustar00rootroot00000000000000/* getenv.c -- Implementation of the getenv() routine * * Copyright (c) 2004 National Semiconductor Corporation * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ /* getenv() is implemented as a low-level function, thus we only invoke here the system call. */ char * getenv (const char *name) { char *_getenv(const char *); return (_getenv (name)); } picolibc-1.7.4/newlib/libc/machine/cr16/setjmp.S000066400000000000000000000060601414576234500213220ustar00rootroot00000000000000 ############################################################################## # setjmp.S -- CR16 setjmp routine # # # /* Copyright (c) 2004 National Semiconductor Corporation */ # # # The authors hereby grant permission to use, copy, modify, distribute, # # and license this software and its documentation for any purpose, provided # # that existing copyright notices are retained in all copies and that this # # notice is included verbatim in any distributions. No written agreement, # # license, or royalty fee is required for any of the authorized uses. # # Modifications to this software may be copyrighted by their authors # # and need not follow the licensing terms described here, provided that # # the new terms are clearly indicated on the first page of each file where # # they apply. # # # # C library -- setjmp, longjmp # # longjmp(a,v) # # will generate a "return(v)" # # from the last call to # # setjmp(a) # # by restoring r7-ra, sp, # # and pc from 'a' # # and doing a return. (Makes sure that longjmp never returns 0). # ############################################################################## .text .file "setjmp.s" .align 4 .globl _setjmp .align 4 _setjmp: #r3, r2: .blkw storw r7, 0(r3,r2) addd $2, (r3,r2) storw r8, 0(r3,r2) addd $2, (r3,r2) storw r9, 0(r3,r2) addd $2, (r3,r2) storw r10, 0(r3,r2) addd $2, (r3,r2) storw r11, 0(r3,r2) addd $2, (r3,r2) stord (r12), 0(r3,r2) addd $4, (r3,r2) stord (r13), 0(r3,r2) addd $4, (r3,r2) stord (ra), 0(r3,r2) addd $4, (r3,r2) stord (sp), 0(r3,r2) movd $0,(r1,r0) jump (ra) .globl _longjmp _longjmp: #r3, r2: .blkw # pointer save area #r5, r4: .blkw # ret vlaue loadw 0(r3,r2), r7 addd $2, (r3,r2) loadw 0(r3,r2), r8 addd $2, (r3,r2) loadw 0(r3,r2), r9 addd $2, (r3,r2) loadw 0(r3,r2), r10 addd $2, (r3,r2) loadw 0(r3,r2), r11 addd $2, (r3,r2) loadd 0(r3,r2), (r12) addd $4, (r3,r2) loadd 0(r3,r2), (r13) addd $4, (r3,r2) loadd 0(r3,r2), (ra) addd $4, (r3,r2) loadd 0(r3,r2), (sp) #ifdef __INT32__ movd (r5,r4), (r1,r0) cmpd $0, (r5,r4) bne end1 movd $1, (r1,r0) #else movw r4, r0 cmpw $0, r4 bne end1 movw $1, r0 #endif end1: jump (ra) .align 4 picolibc-1.7.4/newlib/libc/machine/cr16/sys/000077500000000000000000000000001414576234500205105ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/cr16/sys/asm.h000066400000000000000000000261641414576234500214520ustar00rootroot00000000000000/* asm.h -- CR16 architecture intrinsic functions * * Copyright (c) 2012 National Semiconductor Corporation * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #ifndef _ASM #define _ASM /* Note that immediate input values are not checked for validity. It is the user's responsibility to use the intrinsic functions with appropriate immediate values. */ /* Addition Instructions */ #define _addb_(src, dest) __asm__("addb %1, %0" : "=r" (dest) : \ "ri" ((unsigned char)src), "0" (dest) : "cc") #define _addub_(src, dest) __asm__("addub %1, %0" : "=r" (dest) : \ "ri" ((unsigned char)src), "0" (dest) : "cc") #define _addw_(src, dest) __asm__("addw %1, %0" : "=r" (dest) : \ "ri" ((unsigned short)src), "0" (dest) : "cc") #define _adduw_(src, dest) __asm__("adduw %1, %0" : "=r" (dest) : \ "ri" ((unsigned short)src), "0" (dest) : "cc") #define _addd_(src, dest) __asm__("addd %1, %0" : "=r" (dest) : \ "ri" ((unsigned long)src), "0" (dest) : "cc") /* Add with Carry */ #define _addcb_(src, dest) __asm__("addcb %1, %0" : "=r" (dest) : \ "ri" ((unsigned char)src), "0" (dest) : "cc") #define _addcw_(src, dest) __asm__("addcw %1, %0" : "=r" (dest) : \ "ri" ((unsigned short)src), "0" (dest) : "cc") /* Bitwise Logical AND */ #define _andb_(src, dest) __asm__("andb %1,%0" : "=r" (dest) : \ "ri" ((unsigned char)src) , "0" (dest)) #define _andw_(src, dest) __asm__("andw %1,%0" : "=r" (dest) : \ "ri" ((unsigned short)src) , "0" (dest)) #define _andd_(src, dest) __asm__("andd %1,%0" : "=r" (dest) : \ "ri" ((unsigned long)src) , "0" (dest)) /* Arithmetic shift Instructions */ #define _ashub_(count, dest) __asm__("ashub %1,%0" : "=r" (dest) : \ "ri" ((char)count) , "0" (dest) ) #define _ashuw_(count, dest) __asm__("ashuw %1,%0" : "=r" (dest) : \ "ri" ((char)count) , "0" (dest) ) #define _ashud_(count, dest) __asm__("ashud %1,%0" : "=r" (dest) : \ "ri" ((char)count) , "0" (dest) ) /* cbit (clear bit) Instructions */ #define _cbitb_(pos, dest) __asm__("cbitb %1,%0" : "=mr" (dest) : \ "i" ((unsigned char)pos) , "0" (dest) : "cc") #define _cbitw_(pos, dest) __asm__("cbitw %1,%0" : "=mr" (dest) : \ "i" ((unsigned char)pos) , "0" (dest) : "cc") /* Compare Instructions */ #define _cmpb_(src1, src2) __asm__("cmpb %0,%1" : /* no output */ : \ "ri" ((unsigned char)src1) , "r" (src2) : "cc") #define _cmpw_(src1, src2) __asm__("cmpw %0,%1" : /* no output */ : \ "ri" ((unsigned short)src1) , "r" (src2) : "cc") #define _cmpd_(src1, src2) __asm__("cmpd %0,%1" : /* no output */ : \ "ri" ((unsigned long)src1) , "r" (src2) : "cc") /* Disable Inerrupts instructions */ #define _di_() __asm__ volatile ("di\n" : : : "cc") #define _disable_() __asm__ volatile ("di\n" : : : "cc") #define _disable_interrupt_() _di_ /* Enable Inerrupts instructions */ #define _ei_() __asm__ volatile ("ei\n" : : : "cc") #define _enable_() __asm__ volatile ("ei\n" : : : "cc") #define _enable_interrupt_() _ei_ /* Enable Inerrupts instructions and Wait */ #define _eiwait_() __asm__ volatile ("eiwait" : : : "cc") /* excp Instructions */ #define _excp_(vector) __asm__ volatile ("excp " # vector) /* lpr and lprd Instructions */ #define _lpr_(procreg, src) __asm__("lpr\t%0," procreg : \ /* no output */ : "r" (src) : "cc") #define _lprd_(procregd, src) __asm__("lprd\t%0," procregd : \ /* no output */ : "r" (src) : "cc") /* Left Shift Instructions */ #define _lshb_(count, dest) __asm__("lshb %1,%0" : "=r" (dest) : \ "ri" ((char)count) , "0" (dest) ) #define _lshw_(count, dest) __asm__("lshw %1,%0" : "=r" (dest) : \ "ri" ((char)count) , "0" (dest) ) #define _lshd_(count, dest) __asm__("lshd %1,%0" : "=r" (dest) : \ "ri" ((char)count) , "0" (dest) ) /* Load Instructions */ #define _loadb_(base, dest) __asm__("loadb %1,%0" : "=r" (dest) : \ "m" (base) , "0" (dest)) #define _loadw_(base, dest) __asm__("loadw %1,%0" : "=r" (dest) : \ "m" (base) , "0" (dest)) #define _loadd_(base, dest) __asm__("loadd %1,%0" : "=r" (dest) : \ "m" (base) , "0" (dest)) /* Load Multiple Instructions */ #define _loadm_(src, mask) __asm__("loadm %0,%1" : /* No output */ : \ "r" ((unsigned int)src) , "i" (mask)) #define _loadmp_(src, mask) __asm__("loadmp %0,%1" : /* No output */ : \ "r" ((unsigned int)src) , "i" (mask)) /* Multiply Accumulate Instrutions */ #define _macsw_(hi, lo, src1, src2) __asm__("macsw %1,%0" \ : =l (lo), =h (hi) \ : "r" ((short)src1) , "r" (src2)) #define _macuw_(hi, lo, src1, src2) __asm__("macuw %1,%0" \ : =l (lo), =h (hi) \ : "r" ((unsigned short)src1) , "r" (src2)) #define _macqw_(src1, src2) __asm__("macqw %1,%0" \ : =l (lo), =h (hi) \ :"r" ((short)src1) , "r" (src2)) /* Move Instructions */ #define _movb_(src, dest) __asm__("movb %1,%0" : "=r" (dest) : \ "ri" ((unsigned char)src) , "0" (dest)) #define _movw_(src, dest) __asm__("movw %1,%0" : "=r" (dest) : \ "ri" ((unsigned short)src) , "0" (dest)) #define _movd_(src, dest) __asm__("movd %1,%0" : "=r" (dest) : \ "ri" ((unsigned int)src) , "0" (dest)) #define _movxb_(src, dest) __asm__("movxb %1,%0" : "=r" (dest) : \ "r" (src), "0" (dest) ) #define _movzb_(src, dest) __asm__("movzb %1,%0" : "=r" (dest) : \ "r" (src), "0" (dest) ) #define _movxw_(src, dest) __asm__("movxw %1,%0" : "=r" (dest) : \ "r" (src), "0" (dest) ) #define _movzw_(src, dest) __asm__("movzw %1,%0" : "=r" (dest) : \ "r" (src), "0" (dest) ) /* Multiplication Instructions */ #define _mulb_(src, dest) __asm__("mulb %1,%0" : "=r" (dest) : \ "ri" ((char)src) , "0" (dest)) #define _mulw_(src, dest) __asm__("mulw %1,%0" : "=r" (dest) : \ "ri" ((short)src) , "0" (dest)) #define _mulsb_(src, dest) __asm__("mulsb %1,%0" : "=r" (dest) : \ "r" ((char)src) , "0" (dest)) #define _mulsw_(src, dest) __asm__("mulsw %1,%0" : "=r" (dest) : \ "r" ((short)src) , "0" (dest)) #define _muluw_(src, dest) __asm__("muluw %1,%0" : "=r" (dest) : \ "r" ((unsigned short)src) , "0" (dest)) /* nop Instruction */ #define _nop_() __asm__("nop") /* or Instructions */ #define _orb_(src, dest) __asm__("orb %1,%0" : "=r" (dest) : \ "ri" ((unsigned char)src) , "0" (dest)) #define _orw_(src, dest) __asm__("orw %1,%0" : "=r" (dest) : \ "ri" ((unsigned short)src) , "0" (dest)) #define _ord_(src, dest) __asm__("ord %1,%0" : "=r" (dest) : \ "ri" ((unsigned int)src) , "0" (dest)) /* retx Instruction */ #define _retx_() __asm__("retx") /* Set Bit Instructions */ #define _sbitb_(pos, dest) __asm__("sbitb %1,%0" : "=mr" (dest) : \ "i" ((unsigned char)pos) , "0" (dest) : "cc") #define _sbitw_(pos, dest) __asm__("sbitw %1,%0" : "=mr" (dest) : \ "i" ((unsigned char)pos) , "0" (dest) : "cc") /* spr and sprd Instructions */ #define _spr_(procreg, dest) __asm__("spr\t" procreg ",%0" : \ "=r" (dest) : /* no input */ "0" (dest) : "cc") #define _sprd_(procregd, dest) __asm__("sprd\t" procregd ",%0" : \ "=r" (dest) : /* no input */ "0" (dest) : "cc") /* Store Instructions */ #define _storb_(src, address) __asm__("storb %1,%0" : "=m" (address) : \ "ri" ((unsigned int)src)) #define _storw_(src, address) __asm__("storw %1,%0" : "=m" (address) : \ "ri" ((unsigned int)src)) #define _stord_(src, address) __asm__("stord %1,%0" : "=m" (address) : \ "ri" ((unsigned int)src)) /* Store Multiple Instructions */ #define _storm_(mask, src) __asm__("storm %1,%0" : /* No output here */ : \ "i" (mask) , "r" ((unsigned int)src)) #define _stormp_(mask, src) __asm__("stormp %1,%0" : /* No output here */ : \ "i" (mask) , "r" ((unsigned int)src)) /* Substruct Instructions */ #define _subb_(src, dest) __asm__("subb %1, %0" : "=r" (dest) : \ "ri" ((unsigned char)src), "0" (dest) : "cc") #define _subw_(src, dest) __asm__("subw %1, %0" : "=r" (dest) : \ "ri" ((unsigned short)src), "0" (dest) : "cc") #define _subd_(src, dest) __asm__("subd %1, %0" : "=r" (dest) : \ "ri" ((unsigned long)src), "0" (dest) : "cc") /* Substruct with Carry Instructions */ #define _subcb_(src, dest) __asm__("subcb %1, %0" : "=r" (dest) : \ "ri" ((unsigned char)src), "0" (dest) : "cc") #define _subcw_(src, dest) __asm__("subcw %1, %0" : "=r" (dest) : \ "ri" ((unsigned short)src), "0" (dest) : "cc") /* Test Bit Instructions */ #define _tbit_(offset, base) __asm__("tbit %0,%1" : /* no output */ : \ "ri" ((unsigned char)offset) , "r" (base) : "cc") #define _tbitb_(pos, dest) __asm__("tbitb %0,%1" : /* No output */ : \ "i" ((unsigned char)pos) , "m" (dest) : "cc") #define _tbitw_(pos, dest) __asm__("tbitw %0,%1" : /* No output */ : \ "i" ((unsigned char)pos) , "m" (dest) : "cc") /* wait Instruction*/ #define _wait_() __asm__ volatile ("wait" : : : "cc") /* xor Instructions */ #define _xorb_(src, dest) __asm__("xorb %1,%0" : "=r" (dest) : \ "ri" ((unsigned char)src) , "0" (dest)) #define _xorw_(src, dest) __asm__("xorw %1,%0" : "=r" (dest) : \ "ri" ((unsigned short)src) , "0" (dest)) #define _xord_(src, dest) __asm__("xord %1,%0" : "=r" (dest) : \ "ri" ((unsigned long)src) , "0" (dest)) #if !defined (__CR16C__) #define _di_() __asm__ volatile ("di\n" : : : "cc") #else /* In CR16C architecture the "nop" instruction is required after the di instruction in order to be sure the interrupts are indeed disabled. For details, refer the the CR16C Programmers Reference Manual. */ #define _di_() __asm__ volatile ("di\n\tnop" : : : "cc") #endif /* mtgpr Instruction */ #define _mtgpr_(src, gpr) \ __asm__ volatile ("movd\t%[_src], " gpr : /* no output */ \ : [_src] "ri" (src) \ : gpr ) /* mfgpr Instruction */ #define _mfgpr_(gpr, dest) \ __asm__ volatile ("movd\t" gpr ", %[_dest]" : [_dest] "=r" (dest) \ : /* no inputs */ ) /* set_i_bit Operation Definition */ #define set_i_bit() \ do \ { \ unsigned short tpsr; \ _spr_("psr", tpsr); \ tpsr |= 0x0800; \ _lpr_("psr",tpsr); \ } while(0) /* set_i_bit Macro Definition */ #define _enable_global_interrupt_ set_i_bit /* clear_i_bit Operation Definition */ #define clear_i_bit() \ do \ { \ unsigned short tpsr; \ _spr_("psr", tpsr); \ tpsr &= 0xf7ff; \ _lpr_("psr",tpsr); \ } while(0) /* clear_i_bit Macro Definition */ #define _disbale_global_interrupt_ clear_i_bit #define _save_asm_(x) \ __asm__ volatile (x ::: "memory","cc", \ "r0","r1","r2","r3","r4","r5","r6","r7", \ "r8","r9","r10","r11","r12","r13") #endif /* _ASM */ picolibc-1.7.4/newlib/libc/machine/cr16/sys/libh.h000066400000000000000000000024751414576234500216070ustar00rootroot00000000000000/* libh.h -- CR16 default handlers * * Copyright (c) 2004 National Semiconductor Corporation * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #ifndef _LIBH #define _LIBH /* These are the first 16 entries of the default dispatch table as defined in the CompactRISC architecture: Entry Function ----- -------- 0 NULL 1 nmi 2 NULL 3 NULL 4 NULL 5 svc 6 dvz 7 flg 8 bpt 9 trc 10 und 11 NULL 12 iad 13 NULL 14 dbg 15 ise */ extern void (* const _dispatch_table[])(void); /* Function prototypes */ void svc_handler(void); void dvz_handler(void); void flg_handler(void); void und_handler(void); void iad_handler(void); #endif /* _LIBH */ picolibc-1.7.4/newlib/libc/machine/cr16/sys/syscall.h000066400000000000000000000032241414576234500223340ustar00rootroot00000000000000/* syscall.h -- CR16 virtual I/O and trap service codes * * Copyright (c) 2004 National Semiconductor Corporation * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #ifndef _SYSCALL_H #define _SYSCALL_H #include /* SVC codes to pass to the debugger */ /* Virtual I/O services */ #define SVC_OPEN 0x401 #define SVC_CLOSE 0x402 #define SVC_READ 0x403 #define SVC_WRITE 0x404 #define SVC_LSEEK 0x405 #define SVC_RENAME 0x406 #define SVC_UNLINK 0x407 #define SVC_GETENV 0x408 /* Time service */ #define SVC_TIME 0x300 /* Start/end of program services */ #define SVC_EOP 0x410 /* Trap services */ #define SVC_SVC 0x505 #define SVC_DVZ 0x506 #define SVC_FLG 0x507 #define SVC_UND 0x50a #define SVC_IAD 0x50c /* Places the code of the requested service in R0, then transfers control to the debugger using the BPT exception. It is called from the start routine, VIO functions and the trap handlers. */ #define STRINGIFY(x) #x #define HOST_SERVICE(service) \ do { \ __asm__("movd\t$" STRINGIFY(service) ",(r1,r0)"); \ _excp_(svc); \ } while (0) #endif /* _SYSCALL_H */ picolibc-1.7.4/newlib/libc/machine/cris/000077500000000000000000000000001414576234500200575ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/cris/include/000077500000000000000000000000001414576234500215025ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/cris/include/pthread.h000066400000000000000000000057751414576234500233200ustar00rootroot00000000000000/* pthread.h dummy. Copyright (C) 2001, 2004, 2005 Axis Communications AB. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Neither the name of Axis Communications nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Simple fallback-include to enable thread-enabled exception support for libgcc, but with posix-interface to a default-dummy, so a posix library can optionally be linked in, which isn't possible if gthr-single.h is used. No other use is supported; *DO NOT* think this gives you a valid pthread interface to use in your applications. */ #ifndef _PTHREAD_FAKE #define _PTHREAD_FAKE #ifdef __cplusplus extern "C" { # ifndef __THROW # define __THROW throw () # endif #else # ifndef __THROW # define __THROW # endif #endif typedef int pthread_once_t; typedef unsigned int pthread_key_t; /* This must be layout-compatible with the linuxthreads type. */ typedef struct { int a, b; void *c; int d; struct { long int e; int f; } g; } pthread_mutex_t; /* This give bits equal to the linuxthreads initializer. */ #define PTHREAD_MUTEX_INITIALIZER \ {0, 0, 0, 0, {0, 0}} #define PTHREAD_ONCE_INIT 0 /* This isn't the right prototype, but it let's us get away with not defining a lot of datatypes. */ extern int pthread_create (void) __THROW; extern int pthread_once (pthread_once_t *, void (*) (void)) __THROW; extern int pthread_key_create (pthread_key_t *, void (*) (void *)) __THROW; extern int pthread_setspecific (pthread_key_t, const void *) __THROW; extern void *pthread_getspecific (pthread_key_t) __THROW; extern int pthread_mutex_lock (pthread_mutex_t *) __THROW; extern int pthread_key_delete (pthread_key_t) __THROW; extern int pthread_mutex_trylock (pthread_mutex_t *) __THROW; extern int pthread_mutex_unlock (pthread_mutex_t *) __THROW; #ifdef __cplusplus } #endif #undef __THROW #endif /* not _PTHREAD_FAKE */ picolibc-1.7.4/newlib/libc/machine/cris/libcdtor.c000066400000000000000000000060371414576234500220330ustar00rootroot00000000000000/* Call ctors and dtors from elinux a.out shared libraries. Copyright (C) 1999, 2000, 2003, 2004, 2005 Axis Communications. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Neither the name of Axis Communications nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ typedef void (*vfnp) (void); /* The guts of the _Libctors and _Libdtors is "optimized" away into empty functions when the definition is visible as well. Simplest solution is to emit the definitions as asm. We have no .previous directive in a.out, so we rely on the fact that everything in this file goes into the .text section. */ __asm__ ( ".text\n\t.global .$global.lib.ctors\n.$global.lib.ctors:\n\t.dword 0" ); __asm__ ( ".text\n\t.global .$global.lib.dtors\n.$global.lib.dtors:\n\t.dword 0" ); extern vfnp * const _Ctors __asm__(".$global.lib.ctors"); extern vfnp * const _Dtors __asm__(".$global.lib.dtors"); /* We better provide weak empty ctor and dtor lists, since they are not created if the main program does not have ctor/dtors. Because it's otherwise not used, GCC trunk "Mon Jul 25 22:33:14 UTC 2005" thinks it can remove defaultors, so we need to artificially mark it as used. FIXME: Perhaps a GCC bug. */ static vfnp const defaultors[] __attribute__ ((__used__)) = {0, 0}; extern vfnp * __CTOR_LIST__ __attribute__ ((weak, alias ("defaultors"))); extern vfnp * __DTOR_LIST__ __attribute__ ((weak, alias ("defaultors"))); void _Libctors (void) { const vfnp *firstor = _Ctors; const vfnp *ctors; /* Have to find the last ctor; they will run in opposite order as in the table. */ if (firstor != 0 && *firstor != 0) { for (ctors = firstor; *ctors != 0; ctors++) ; while (--ctors != firstor) { (**ctors)(); } (**ctors)(); } } void _Libdtors(void) { const vfnp *dtors = _Dtors; if (dtors) while (*dtors != 0) { (**dtors++) (); } } picolibc-1.7.4/newlib/libc/machine/cris/memcpy.c000066400000000000000000000160141414576234500215170ustar00rootroot00000000000000/* A memcpy for CRIS. Copyright (C) 1994-2005 Axis Communications. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Neither the name of Axis Communications nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FIXME: This file should really only be used for reference, as the result is somewhat depending on gcc generating what we expect rather than what we describe. An assembly file should be used instead. */ #include #include "../../string/local.h" /* Break even between movem and move16 is really at 38.7 * 2, but modulo 44, so up to the next multiple of 44, we use ordinary code. */ #define MEMCPY_BY_BLOCK_THRESHOLD (44 * 2) /* No name ambiguities in this file. */ __asm__ (".syntax no_register_prefix"); void * __inhibit_loop_to_libcall memcpy(void *__restrict pdst, const void *__restrict psrc, size_t pn) { /* Now we want the parameters put in special registers. Make sure the compiler is able to make something useful of this. As it is now: r10 -> r13; r11 -> r11 (nop); r12 -> r12 (nop). If gcc was allright, it really would need no temporaries, and no stack space to save stuff on. */ register void *return_dst __asm__ ("r10") = pdst; register unsigned char *dst __asm__ ("r13") = pdst; register unsigned const char *src __asm__ ("r11") = psrc; register int n __asm__ ("r12") = pn; /* When src is aligned but not dst, this makes a few extra needless cycles. I believe it would take as many to check that the re-alignment was unnecessary. */ if (((unsigned long) dst & 3) != 0 /* Don't align if we wouldn't copy more than a few bytes; so we don't have to check further for overflows. */ && n >= 3) { if ((unsigned long) dst & 1) { n--; *dst = *src; src++; dst++; } if ((unsigned long) dst & 2) { n -= 2; *(short *) dst = *(short *) src; src += 2; dst += 2; } } /* Decide which copying method to use. */ if (n >= MEMCPY_BY_BLOCK_THRESHOLD) { /* It is not optimal to tell the compiler about clobbering any registers; that will move the saving/restoring of those registers to the function prologue/epilogue, and make non-movem sizes suboptimal. */ __asm__ volatile ("\ ;; GCC does promise correct register allocations, but let's \n\ ;; make sure it keeps its promises. \n\ .ifnc %0-%1-%2,$r13-$r11-$r12 \n\ .error \"GCC reg alloc bug: %0-%1-%4 != $r13-$r12-$r11\" \n\ .endif \n\ \n\ ;; Save the registers we'll use in the movem process \n\ ;; on the stack. \n\ subq 11*4,sp \n\ movem r10,[sp] \n\ \n\ ;; Now we've got this: \n\ ;; r11 - src \n\ ;; r13 - dst \n\ ;; r12 - n \n\ \n\ ;; Update n for the first loop. \n\ subq 44,r12 \n\ 0: \n\ " #ifdef __arch_common_v10_v32 /* Cater to branch offset difference between v32 and v10. We assume the branch below has an 8-bit offset. */ " setf\n" #endif " movem [r11+],r10 \n\ subq 44,r12 \n\ bge 0b \n\ movem r10,[r13+] \n\ \n\ ;; Compensate for last loop underflowing n. \n\ addq 44,r12 \n\ \n\ ;; Restore registers from stack. \n\ movem [sp+],r10" /* Outputs. */ : "=r" (dst), "=r" (src), "=r" (n) /* Inputs. */ : "0" (dst), "1" (src), "2" (n)); } while (n >= 16) { *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; dst += 4; src += 4; n -= 16; } switch (n) { case 0: break; case 1: *dst = *src; break; case 2: *(short *) dst = *(short *) src; break; case 3: *(short *) dst = *(short *) src; dst += 2; src += 2; *dst = *src; break; case 4: *(long *) dst = *(long *) src; break; case 5: *(long *) dst = *(long *) src; dst += 4; src += 4; *dst = *src; break; case 6: *(long *) dst = *(long *) src; dst += 4; src += 4; *(short *) dst = *(short *) src; break; case 7: *(long *) dst = *(long *) src; dst += 4; src += 4; *(short *) dst = *(short *) src; dst += 2; src += 2; *dst = *src; break; case 8: *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; break; case 9: *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; dst += 4; src += 4; *dst = *src; break; case 10: *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; dst += 4; src += 4; *(short *) dst = *(short *) src; break; case 11: *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; dst += 4; src += 4; *(short *) dst = *(short *) src; dst += 2; src += 2; *dst = *src; break; case 12: *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; break; case 13: *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; dst += 4; src += 4; *dst = *src; break; case 14: *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; dst += 4; src += 4; *(short *) dst = *(short *) src; break; case 15: *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; dst += 4; src += 4; *(short *) dst = *(short *) src; dst += 2; src += 2; *dst = *src; break; } return return_dst; } picolibc-1.7.4/newlib/libc/machine/cris/memmove.c000066400000000000000000000170541414576234500216770ustar00rootroot00000000000000/* A memmove for CRIS. Copyright (C) 2000-2005 Axis Communications. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Neither the name of Axis Communications nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FIXME: This file should really only be used for reference, as the result is somewhat depending on gcc generating what we expect rather than what we describe. An assembly file should be used instead. Even worse, we base it on memcpy, on the assumption that overlapping moves are rare, and we will do no worse than the generic memmove. */ #include /* Break even between movem and move16 is really at 38.7 * 2, but modulo 44, so up to the next multiple of 44, we use ordinary code. */ #define MEMMOVE_BY_BLOCK_THRESHOLD (44 * 2) /* No name ambiguities in this file. */ __asm__ (".syntax no_register_prefix"); void * memmove(void *pdst, const void *psrc, size_t pn) { /* Now we want the parameters put in special registers. Make sure the compiler is able to make something useful of this. As it is now: r10 -> r13; r11 -> r11 (nop); r12 -> r12 (nop). If gcc was allright, it really would need no temporaries, and no stack space to save stuff on. */ register void *return_dst __asm__ ("r10") = pdst; register unsigned char *dst __asm__ ("r13") = pdst; register unsigned const char *src __asm__ ("r11") = psrc; register int n __asm__ ("r12") = pn; /* Check and handle overlap. */ if (src < dst && dst < src + n) { /* Destructive overlap. We could optimize this, but we don't (for the moment). */ src += n; dst += n; while (n--) { *--dst = *--src; } return return_dst; } /* Whew, no overlap. Proceed as with memcpy. We could call it instead of having a copy here. That would spoil some of the optimization, so we take the trouble with having two copies. */ /* When src is aligned but not dst, this makes a few extra needless cycles. I believe it would take as many to check that the re-alignment was unnecessary. */ if (((unsigned long) dst & 3) != 0 /* Don't align if we wouldn't copy more than a few bytes; so we don't have to check further for overflows. */ && n >= 3) { if ((unsigned long) dst & 1) { n--; *dst = *src; src++; dst++; } if ((unsigned long) dst & 2) { n -= 2; *(short *) dst = *(short *) src; src += 2; dst += 2; } } /* Decide which copying method to use. */ if (n >= MEMMOVE_BY_BLOCK_THRESHOLD) { /* It is not optimal to tell the compiler about clobbering any registers; that will move the saving/restoring of those registers to the function prologue/epilogue, and make non-movem sizes suboptimal. */ __asm__ volatile ("\ ;; GCC does promise correct register allocations, but let's \n\ ;; make sure it keeps its promises. \n\ .ifnc %0-%1-%2,$r13-$r11-$r12 \n\ .error \"GCC reg alloc bug: %0-%1-%4 != $r13-$r12-$r11\" \n\ .endif \n\ \n\ ;; Save the registers we'll use in the movem process \n\ ;; on the stack. \n\ subq 11*4,sp \n\ movem r10,[sp] \n\ \n\ ;; Now we've got this: \n\ ;; r11 - src \n\ ;; r13 - dst \n\ ;; r12 - n \n\ \n\ ;; Update n for the first loop. \n\ subq 44,r12 \n\ 0: \n\ " #ifdef __arch_common_v10_v32 /* Cater to branch offset difference between v32 and v10. We assume the branch below has an 8-bit offset. */ " setf\n" #endif " movem [r11+],r10 \n\ subq 44,r12 \n\ bge 0b \n\ movem r10,[r13+] \n\ \n\ ;; Compensate for last loop underflowing n. \n\ addq 44,r12 \n\ \n\ ;; Restore registers from stack. \n\ movem [sp+],r10" /* Outputs. */ : "=r" (dst), "=r" (src), "=r" (n) /* Inputs. */ : "0" (dst), "1" (src), "2" (n)); } while (n >= 16) { *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; dst += 4; src += 4; n -= 16; } switch (n) { case 0: break; case 1: *dst = *src; break; case 2: *(short *) dst = *(short *) src; break; case 3: *(short *) dst = *(short *) src; dst += 2; src += 2; *dst = *src; break; case 4: *(long *) dst = *(long *) src; break; case 5: *(long *) dst = *(long *) src; dst += 4; src += 4; *dst = *src; break; case 6: *(long *) dst = *(long *) src; dst += 4; src += 4; *(short *) dst = *(short *) src; break; case 7: *(long *) dst = *(long *) src; dst += 4; src += 4; *(short *) dst = *(short *) src; dst += 2; src += 2; *dst = *src; break; case 8: *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; break; case 9: *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; dst += 4; src += 4; *dst = *src; break; case 10: *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; dst += 4; src += 4; *(short *) dst = *(short *) src; break; case 11: *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; dst += 4; src += 4; *(short *) dst = *(short *) src; dst += 2; src += 2; *dst = *src; break; case 12: *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; break; case 13: *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; dst += 4; src += 4; *dst = *src; break; case 14: *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; dst += 4; src += 4; *(short *) dst = *(short *) src; break; case 15: *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; dst += 4; src += 4; *(long *) dst = *(long *) src; dst += 4; src += 4; *(short *) dst = *(short *) src; dst += 2; src += 2; *dst = *src; break; } return return_dst; } picolibc-1.7.4/newlib/libc/machine/cris/memset.c000066400000000000000000000164431414576234500215250ustar00rootroot00000000000000/* A memset for CRIS. Copyright (C) 1999-2005 Axis Communications. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Neither the name of Axis Communications nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FIXME: This file should really only be used for reference, as the result is somewhat depending on gcc generating what we expect rather than what we describe. An assembly file should be used instead. */ /* Note the multiple occurrence of the expression "12*4", including the asm. It is hard to get it into the asm in a good way. Thus better to expose the problem everywhere: no macro. */ /* Assuming one cycle per dword written or read (ok, not really true; the world is not ideal), and one cycle per instruction, then 43+3*(n/48-1) <= 24+24*(n/48-1) so n >= 45.7; n >= 0.9; we win on the first full 48-byte block to set. */ #define MEMSET_BY_BLOCK_THRESHOLD (1 * 48) /* No name ambiguities in this file. */ __asm__ (".syntax no_register_prefix"); void *memset(void *pdst, int c, unsigned int plen) { /* Now we want the parameters in special registers. Make sure the compiler does something usable with this. */ register char *return_dst __asm__ ("r10") = pdst; register int n __asm__ ("r12") = plen; register int lc __asm__ ("r11") = c; /* Most apps use memset sanely. Memsetting about 3..4 bytes or less get penalized here compared to the generic implementation. */ /* This is fragile performancewise at best. Check with newer GCC releases, if they compile cascaded "x |= x << 8" to sane code. */ __asm__("movu.b %0,r13 \n\ lslq 8,r13 \n\ move.b %0,r13 \n\ move.d r13,%0 \n\ lslq 16,r13 \n\ or.d r13,%0" : "=r" (lc) /* Inputs. */ : "0" (lc) /* Outputs. */ : "r13"); /* Trash. */ { register char *dst __asm__ ("r13") = pdst; if (((unsigned long) pdst & 3) != 0 /* Oops! n = 0 must be a valid call, regardless of alignment. */ && n >= 3) { if ((unsigned long) dst & 1) { *dst = (char) lc; n--; dst++; } if ((unsigned long) dst & 2) { *(short *) dst = lc; n -= 2; dst += 2; } } /* Decide which setting method to use. */ if (n >= MEMSET_BY_BLOCK_THRESHOLD) { /* It is not optimal to tell the compiler about clobbering any registers; that will move the saving/restoring of those registers to the function prologue/epilogue, and make non-block sizes suboptimal. */ __asm__ volatile ("\ ;; GCC does promise correct register allocations, but let's \n\ ;; make sure it keeps its promises. \n\ .ifnc %0-%1-%4,$r13-$r12-$r11 \n\ .error \"GCC reg alloc bug: %0-%1-%4 != $r13-$r12-$r11\" \n\ .endif \n\ \n\ ;; Save the registers we'll clobber in the movem process \n\ ;; on the stack. Don't mention them to gcc, it will only be \n\ ;; upset. \n\ subq 11*4,sp \n\ movem r10,[sp] \n\ \n\ move.d r11,r0 \n\ move.d r11,r1 \n\ move.d r11,r2 \n\ move.d r11,r3 \n\ move.d r11,r4 \n\ move.d r11,r5 \n\ move.d r11,r6 \n\ move.d r11,r7 \n\ move.d r11,r8 \n\ move.d r11,r9 \n\ move.d r11,r10 \n\ \n\ ;; Now we've got this: \n\ ;; r13 - dst \n\ ;; r12 - n \n\ \n\ ;; Update n for the first loop \n\ subq 12*4,r12 \n\ 0: \n\ " #ifdef __arch_common_v10_v32 /* Cater to branch offset difference between v32 and v10. We assume the branch below has an 8-bit offset. */ " setf\n" #endif " subq 12*4,r12 \n\ bge 0b \n\ movem r11,[r13+] \n\ \n\ ;; Compensate for last loop underflowing n. \n\ addq 12*4,r12 \n\ \n\ ;; Restore registers from stack. \n\ movem [sp+],r10" /* Outputs. */ : "=r" (dst), "=r" (n) /* Inputs. */ : "0" (dst), "1" (n), "r" (lc)); } /* An ad-hoc unroll, used for 4*12-1..16 bytes. */ while (n >= 16) { *(long *) dst = lc; dst += 4; *(long *) dst = lc; dst += 4; *(long *) dst = lc; dst += 4; *(long *) dst = lc; dst += 4; n -= 16; } switch (n) { case 0: break; case 1: *dst = (char) lc; break; case 2: *(short *) dst = (short) lc; break; case 3: *(short *) dst = (short) lc; dst += 2; *dst = (char) lc; break; case 4: *(long *) dst = lc; break; case 5: *(long *) dst = lc; dst += 4; *dst = (char) lc; break; case 6: *(long *) dst = lc; dst += 4; *(short *) dst = (short) lc; break; case 7: *(long *) dst = lc; dst += 4; *(short *) dst = (short) lc; dst += 2; *dst = (char) lc; break; case 8: *(long *) dst = lc; dst += 4; *(long *) dst = lc; break; case 9: *(long *) dst = lc; dst += 4; *(long *) dst = lc; dst += 4; *dst = (char) lc; break; case 10: *(long *) dst = lc; dst += 4; *(long *) dst = lc; dst += 4; *(short *) dst = (short) lc; break; case 11: *(long *) dst = lc; dst += 4; *(long *) dst = lc; dst += 4; *(short *) dst = (short) lc; dst += 2; *dst = (char) lc; break; case 12: *(long *) dst = lc; dst += 4; *(long *) dst = lc; dst += 4; *(long *) dst = lc; break; case 13: *(long *) dst = lc; dst += 4; *(long *) dst = lc; dst += 4; *(long *) dst = lc; dst += 4; *dst = (char) lc; break; case 14: *(long *) dst = lc; dst += 4; *(long *) dst = lc; dst += 4; *(long *) dst = lc; dst += 4; *(short *) dst = (short) lc; break; case 15: *(long *) dst = lc; dst += 4; *(long *) dst = lc; dst += 4; *(long *) dst = lc; dst += 4; *(short *) dst = (short) lc; dst += 2; *dst = (char) lc; break; } } return return_dst; } picolibc-1.7.4/newlib/libc/machine/cris/setjmp.c000066400000000000000000000137701414576234500215350ustar00rootroot00000000000000/* A setjmp.c for CRIS Copyright (C) 1993-2005 Axis Communications. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Neither the name of Axis Communications nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* For benefit of CRIS v0..v3, we save and restore CCR to be able to correctly handle DI/EI; otherwise there would be no reason to save it. Note also that the "move x,ccr" does NOT affect the DMA enable bits (E and D) of v0..v3. We do not save mof; it is call-clobbered. It also does not exist in v0..v8; it should be safe to read or write to it there, but better not. jmp_buf[0] - PC jmp_buf[1] - SP (R14) jmp_buf[2] - R13 jmp_buf[3] - R12 jmp_buf[4] - R11 jmp_buf[5] - R10 jmp_buf[6] - R9 jmp_buf[7] - R8 jmp_buf[8] - R7 jmp_buf[9] - R6 jmp_buf[10] - R5 jmp_buf[11] - R4 jmp_buf[12] - R3 jmp_buf[13] - R2 jmp_buf[14] - R1 jmp_buf[15] - R0 jmp_buf[16] - SRP jmp_buf[17] - CCR */ #include int setjmp (jmp_buf buf) { int ret; #if defined (__arch_common_v10_v32) || defined (__arch_v32) /* No offsets in the compatibility mode. Also, movem saves in different order on v10 than on v32, so we use single move instructions instead, this not being a speed-prioritized operation. And we don't save CCR or CCS; since long unuseful. */ __asm__ __volatile__ ("move.d %1,$r13 \n\ move 0f,$mof \n\ move $mof,[$r13+] \n\ move.d $sp,[$r13+] \n\ clear.d [$r13+] \n\ move.d $r12,[$r13+] \n\ move.d $r11,[$r13+] \n\ move.d $r10,[$r13+] \n\ moveq 1,$r9 \n\ move.d $r9,[$r13+] \n\ move.d $r8,[$r13+] \n\ move.d $r7,[$r13+] \n\ move.d $r6,[$r13+] \n\ move.d $r5,[$r13+] \n\ move.d $r4,[$r13+] \n\ move.d $r3,[$r13+] \n\ move.d $r2,[$r13+] \n\ move.d $r1,[$r13+] \n\ move.d $r0,[$r13+] \n\ move $srp,[$r13+] \n\ clear.d [$r13+] \n\ clear.d $r9 \n\ 0: \n\ move.d $r9,%0" /* Output. */ : "=&r" (ret) /* Input. */ : "r" (buf) /* Clobber. */ : "r9", "r13", "memory"); #else /* not __arch_common_v10_v32 or __arch_v32 */ #ifdef __PIC__ __asm__ __volatile__ ("moveq 1,$r9 \n\ movem $sp,[%1+1*4] \n\ move.d $pc,$r9 \n\ addq 0f-.,$r9 \n\ move.d $r9,[%1] \n\ move $srp,[%1+16*4] \n\ move $ccr,[%1+17*4] \n\ clear.d $r9 \n\ 0: \n\ move.d $r9,%0" /* Output. */ : "=&r" (ret) /* Input. */ : "r" (buf) /* Clobber. */ : "r9", "memory"); #else /* not PIC */ __asm__ __volatile__ ("moveq 1,$r9 \n\ movem $sp,[%1+1*4] \n\ move.d 0f,$r9 \n\ move.d $r9,[%1] \n\ move $srp,[%1+16*4] \n\ move $ccr,[%1+17*4] \n\ clear.d $r9 \n\ 0: \n\ move.d $r9,%0" /* Output. */ : "=&r" (ret) /* Input. */ : "r" (buf) /* Clobber. */ : "r9"); #endif /* not PIC */ #endif /* not __arch_common_v10_v32 or __arch_v32 */ return ret; } void longjmp(jmp_buf buf, int val) { #if defined (__arch_common_v10_v32) || defined (__arch_v32) __asm__ __volatile__ ("cmpq 0,%1 \n\ beq 0f \n\ move.d %0,$r13 ; In delay-slot. \n\ addq 6*4,$r13 \n\ move.d %1,[$r13] \n\ subq 6*4,$r13 \n\ 0:\n" #ifdef __arch_common_v10_v32 /* Cater to branch offset difference between v32 and v10. We assume the branch above is 8-bit. */ " setf\n" #endif " move [$r13+],$mof \n\ move.d [$r13+],$sp \n\ addq 4,$r13 \n\ move.d [$r13+],$r12 \n\ move.d [$r13+],$r11 \n\ move.d [$r13+],$r10 \n\ move.d [$r13+],$r9 \n\ move.d [$r13+],$r8 \n\ move.d [$r13+],$r7 \n\ move.d [$r13+],$r6 \n\ move.d [$r13+],$r5 \n\ move.d [$r13+],$r4 \n\ move.d [$r13+],$r3 \n\ move.d [$r13+],$r2 \n\ move.d [$r13+],$r1 \n\ move.d [$r13+],$r0 \n\ move [$r13+],$srp \n\ move $mof,$r13 \n\ jump $r13 \n\ setf" /* No outputs. */ : /* Inputs. */ : "r" (buf), "r" (val) : "r13", "memory"); #else /* not __arch_common_v10_v32 or __arch_v32 */ __asm__ __volatile__ ("move [%0+17*4],$ccr \n\ move [%0+16*4],$srp \n\ test.d %1 \n\ beq 0f \n\ nop \n\ move.d %1,[%0+6*4] ; Offset for r9. \n\ 0: \n\ movem [%0],$pc" /* No outputs. */ : /* Inputs. */ : "r" (buf), "r" (val) : "memory"); #endif /* not __arch_common_v10_v32 or __arch_v32 */ } picolibc-1.7.4/newlib/libc/machine/cris/sys/000077500000000000000000000000001414576234500206755ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/cris/sys/errno.h000066400000000000000000000213311414576234500221730ustar00rootroot00000000000000/* Copyright (C) 2001, 2004, 2005 Axis Communications AB. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Neither the name of Axis Communications nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This file is to be kept in sync with newlib/libc/include/sys/errno.h on which it is based, except values used or returned by syscalls must be those of the Linux/CRIS kernel. */ /* errno is not a global variable, because that would make using it non-reentrant. Instead, its address is returned by the function __errno. */ #ifndef _SYS_ERRNO_H_ #ifdef __cplusplus extern "C" { #endif #define _SYS_ERRNO_H_ #include #ifndef _REENT_ONLY #define errno (*__errno()) extern int *__errno (void); #endif /* Please don't use these variables directly. Use strerror instead. */ extern const char * const _sys_errlist[]; extern int _sys_nerr; #define __errno_r(ptr) ((ptr)->_errno) /* Adjusted to the linux asm/errno.h */ #define EPERM 1 /* Operation not permitted */ #define ENOENT 2 /* No such file or directory */ #define ESRCH 3 /* No such process */ #define EINTR 4 /* Interrupted system call */ #define EIO 5 /* I/O error */ #define ENXIO 6 /* No such device or address */ #define E2BIG 7 /* Arg list too long */ #define ENOEXEC 8 /* Exec format error */ #define EBADF 9 /* Bad file number */ #define ECHILD 10 /* No child processes */ #define EAGAIN 11 /* Try again */ #define ENOMEM 12 /* Out of memory */ #define EACCES 13 /* Permission denied */ #define EFAULT 14 /* Bad address */ #define ENOTBLK 15 /* Block device required */ #define EBUSY 16 /* Device or resource busy */ #define EEXIST 17 /* File exists */ #define EXDEV 18 /* Cross-device link */ #define ENODEV 19 /* No such device */ #define ENOTDIR 20 /* Not a directory */ #define EISDIR 21 /* Is a directory */ #define EINVAL 22 /* Invalid argument */ #define ENFILE 23 /* File table overflow */ #define EMFILE 24 /* Too many open files */ #define ENOTTY 25 /* Not a typewriter */ #define ETXTBSY 26 /* Text file busy */ #define EFBIG 27 /* File too large */ #define ENOSPC 28 /* No space left on device */ #define ESPIPE 29 /* Illegal seek */ #define EROFS 30 /* Read-only file system */ #define EMLINK 31 /* Too many links */ #define EPIPE 32 /* Broken pipe */ #define EDOM 33 /* Math argument out of domain of func */ #define ERANGE 34 /* Math result not representable */ #define EDEADLK 35 /* Resource deadlock would occur */ #define ENAMETOOLONG 36 /* File name too long */ #define ENOLCK 37 /* No record locks available */ #define ENOSYS 38 /* Function not implemented */ #define ENOTEMPTY 39 /* Directory not empty */ #define ELOOP 40 /* Too many symbolic links encountered */ #define EWOULDBLOCK EAGAIN /* Operation would block */ #define ENOMSG 42 /* No message of desired type */ #define EIDRM 43 /* Identifier removed */ #define ECHRNG 44 /* Channel number out of range */ #define EL2NSYNC 45 /* Level 2 not synchronized */ #define EL3HLT 46 /* Level 3 halted */ #define EL3RST 47 /* Level 3 reset */ #define ELNRNG 48 /* Link number out of range */ #define EUNATCH 49 /* Protocol driver not attached */ #define ENOCSI 50 /* No CSI structure available */ #define EL2HLT 51 /* Level 2 halted */ #define EBADE 52 /* Invalid exchange */ #define EBADR 53 /* Invalid request descriptor */ #define EXFULL 54 /* Exchange full */ #define ENOANO 55 /* No anode */ #define EBADRQC 56 /* Invalid request code */ #define EBADSLT 57 /* Invalid slot */ #define EDEADLOCK EDEADLK #define EBFONT 59 /* Bad font file format */ /* This is only used internally in newlib; not returned by the kernel. EBFONT seems the closest match for a "bad file format" error. */ #define EFTYPE EBFONT /* Inappropriate file type or format */ #define ENOSTR 60 /* Device not a stream */ #define ENODATA 61 /* No data available */ #define ETIME 62 /* Timer expired */ #define ENOSR 63 /* Out of streams resources */ #define ENONET 64 /* Machine is not on the network */ #define ENOPKG 65 /* Package not installed */ #define EREMOTE 66 /* Object is remote */ #define ENOLINK 67 /* Link has been severed */ #define EADV 68 /* Advertise error */ #define ESRMNT 69 /* Srmount error */ #define ECOMM 70 /* Communication error on send */ #define EPROTO 71 /* Protocol error */ #define EMULTIHOP 72 /* Multihop attempted */ #define EDOTDOT 73 /* RFS specific error */ #define EBADMSG 74 /* Not a data message */ #define EOVERFLOW 75 /* Value too large for defined data type */ #define ENOTUNIQ 76 /* Name not unique on network */ #define EBADFD 77 /* File descriptor in bad state */ #define EREMCHG 78 /* Remote address changed */ #define ELIBACC 79 /* Can not access a needed shared library */ #define ELIBBAD 80 /* Accessing a corrupted shared library */ #define ELIBSCN 81 /* .lib section in a.out corrupted */ #define ELIBMAX 82 /* Attempting to link in too many shared libraries */ #define ELIBEXEC 83 /* Cannot exec a shared library directly */ #define EILSEQ 84 /* Illegal byte sequence */ #define ERESTART 85 /* Interrupted system call should be restarted */ #define ESTRPIPE 86 /* Streams pipe error */ #define EUSERS 87 /* Too many users */ #define ENOTSOCK 88 /* Socket operation on non-socket */ #define EDESTADDRREQ 89 /* Destination address required */ #define EMSGSIZE 90 /* Message too long */ #define EPROTOTYPE 91 /* Protocol wrong type for socket */ #define ENOPROTOOPT 92 /* Protocol not available */ #define EPROTONOSUPPORT 93 /* Protocol not supported */ #define ESOCKTNOSUPPORT 94 /* Socket type not supported */ #define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */ #define EPFNOSUPPORT 96 /* Protocol family not supported */ #define EAFNOSUPPORT 97 /* Address family not supported by protocol */ #define EADDRINUSE 98 /* Address already in use */ #define EADDRNOTAVAIL 99 /* Cannot assign requested address */ #define ENETDOWN 100 /* Network is down */ #define ENETUNREACH 101 /* Network is unreachable */ #define ENETRESET 102 /* Network dropped connection because of reset */ #define ECONNABORTED 103 /* Software caused connection abort */ #define ECONNRESET 104 /* Connection reset by peer */ #define ENOBUFS 105 /* No buffer space available */ #define EISCONN 106 /* Transport endpoint is already connected */ #define ENOTCONN 107 /* Transport endpoint is not connected */ #define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */ #define ETOOMANYREFS 109 /* Too many references: cannot splice */ #define ETIMEDOUT 110 /* Connection timed out */ #define ECONNREFUSED 111 /* Connection refused */ #define EHOSTDOWN 112 /* Host is down */ #define EHOSTUNREACH 113 /* No route to host */ #define EALREADY 114 /* Operation already in progress */ #define EINPROGRESS 115 /* Operation now in progress */ #define ESTALE 116 /* Stale NFS file handle */ #define EUCLEAN 117 /* Structure needs cleaning */ #define ENOTNAM 118 /* Not a XENIX named type file */ #define ENAVAIL 119 /* No XENIX semaphores available */ #define EISNAM 120 /* Is a named type file */ #define EREMOTEIO 121 /* Remote I/O error */ #define EDQUOT 122 /* Quota exceeded */ #define ENOMEDIUM 123 /* No medium found */ #define EMEDIUMTYPE 124 /* Wrong medium type */ #define ECANCELED 125 /* Operation Canceled */ #define ENOKEY 126 /* Required key not available */ #define EKEYEXPIRED 127 /* Key has expired */ #define EKEYREVOKED 128 /* Key has been revoked */ #define EKEYREJECTED 129 /* Key was rejected by service */ #define EOWNERDEAD 130 /* Owner died */ #define ENOTRECOVERABLE 131 /* State not recoverable */ /* Widely known to be a synonym in Linux. */ #define ENOTSUP EOPNOTSUPP #define __ELASTERROR 2000 /* Users can add values starting here */ #ifdef __cplusplus } #endif #endif /* _SYS_ERRNO_H */ picolibc-1.7.4/newlib/libc/machine/cris/sys/fcntl.h000066400000000000000000000141631414576234500221610ustar00rootroot00000000000000/* Copyright (C) 2001, 2004, 2005 Axis Communications AB. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Neither the name of Axis Communications nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This file is to be kept in sync with newlib/libc/include/sys/fcntl.h, on which it is based, except values used or returned by syscalls must be those of the Linux/CRIS kernel. */ #ifndef _FCNTL_ #ifdef __cplusplus extern "C" { #endif #define _FCNTL_ #include <_ansi.h> #define _FOPEN (-1) /* from sys/file.h, kernel use only */ #define _FREAD 0x0001 /* read enabled */ #define _FWRITE 0x0002 /* write enabled */ #define _FNDELAY 0x0800 /* non blocking I/O (4.2 style) */ #define _FAPPEND 0x0400 /* append (writes guaranteed at the end) */ #define _FMARK 0x0010 /* internal; mark during gc() */ #define _FDEFER 0x0020 /* internal; defer for next gc pass */ #define _FASYNC 0x2000 /* signal pgrp when data ready */ #define _FCREAT 0x0040 /* open with file create */ #define _FTRUNC 0x0200 /* open with truncation */ #define _FEXCL 0x0080 /* error on open if file exists */ #define _FNBIO _FNONBLOCK /* non blocking I/O (sys5 style) */ #define _FSYNC 0x1000 /* do all writes synchronously */ #define _FNONBLOCK 0x0800 /* non blocking I/O (POSIX style) */ #define _FNOCTTY 0x0100 /* don't assign a ctty on this open */ #define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR) /* * Flag values for open(2) and fcntl(2) * The kernel adds 1 to the open modes to turn it into some * combination of FREAD and FWRITE. */ #define O_RDONLY 0 /* +1 == FREAD */ #define O_WRONLY 1 /* +1 == FWRITE */ #define O_RDWR 2 /* +1 == FREAD|FWRITE */ #define O_APPEND _FAPPEND #define O_CREAT _FCREAT #define O_TRUNC _FTRUNC #define O_EXCL _FEXCL /* O_SYNC _FSYNC not posix, defined below */ /* O_NDELAY _FNDELAY set in include/fcntl.h */ /* O_NDELAY _FNBIO set in 5include/fcntl.h */ #define O_NONBLOCK _FNONBLOCK #define O_NOCTTY _FNOCTTY #ifndef _POSIX_SOURCE #define O_SYNC _FSYNC /* * Flags that work for fcntl(fd, F_SETFL, FXXXX) */ #define FAPPEND _FAPPEND #define FSYNC _FSYNC #define FASYNC _FASYNC #define FNBIO _FNBIO #define FNONBIO _FNONBLOCK /* XXX fix to be NONBLOCK everywhere */ #define FNDELAY _FNDELAY /* * Flags that are disallowed for fcntl's (FCNTLCANT); * used for opens, internal state, or locking. */ #define FREAD _FREAD #define FWRITE _FWRITE #define FMARK _FMARK #define FDEFER _FDEFER #define FSHLOCK _FSHLOCK #define FEXLOCK _FEXLOCK /* * The rest of the flags, used only for opens */ #define FOPEN _FOPEN #define FCREAT _FCREAT #define FTRUNC _FTRUNC #define FEXCL _FEXCL #define FNOCTTY _FNOCTTY #endif /* !_POSIX_SOURCE */ /* XXX close on exec request; must match UF_EXCLOSE in user.h */ #define FD_CLOEXEC 1 /* posix */ /* fcntl(2) requests */ #define F_DUPFD 0 /* dup */ #define F_GETFD 1 /* get f_flags */ #define F_SETFD 2 /* set f_flags */ #define F_GETFL 3 /* more flags (cloexec) */ #define F_SETFL 4 #define F_GETLK 5 #define F_SETLK 6 #define F_SETLKW 7 #define F_SETOWN 8 /* for sockets. */ #define F_GETOWN 9 /* for sockets. */ /* for F_[GET|SET]FL */ #define FD_CLOEXEC 1 /* actually anything with low bit set goes */ /* for posix fcntl() and lockf() */ #define F_RDLCK 0 #define F_WRLCK 1 #define F_UNLCK 2 /* for old implementation of bsd flock () */ #define F_EXLCK 4 /* or 3 */ #define F_SHLCK 8 /* or 4 */ /* operations for bsd flock(), also used by the kernel implementation */ #define LOCK_SH 1 /* shared lock */ #define LOCK_EX 2 /* exclusive lock */ #define LOCK_NB 4 /* or'd with one of the above to prevent blocking */ #define LOCK_UN 8 /* remove lock */ /* file segment locking set data type - information passed to system by user */ struct flock { short l_type; /* F_RDLCK, F_WRLCK, or F_UNLCK */ short l_whence; /* flag to choose starting offset */ long l_start; /* relative offset, in bytes */ long l_len; /* length, in bytes; 0 means lock to EOF */ short l_pid; /* returned with F_GETLK */ short l_xxx; /* reserved for future use */ }; #ifndef _POSIX_SOURCE /* extended file segment locking set data type */ struct eflock { short l_type; /* F_RDLCK, F_WRLCK, or F_UNLCK */ short l_whence; /* flag to choose starting offset */ long l_start; /* relative offset, in bytes */ long l_len; /* length, in bytes; 0 means lock to EOF */ short l_pid; /* returned with F_GETLK */ short l_xxx; /* reserved for future use */ long l_rpid; /* Remote process id wanting this lock */ long l_rsys; /* Remote system id wanting this lock */ }; #endif /* !_POSIX_SOURCE */ #include #include /* sigh. for the mode bits for open/creat */ extern int open (const char *, int, ...); extern int creat (const char *, mode_t); extern int fcntl (int, int, ...); /* Provide _ prototypes for functions provided by some versions of newlib. */ #ifdef _COMPILING_NEWLIB extern int _open (const char *, int, ...); extern int _fcntl (int, int, ...); #ifdef __LARGE64_FILES extern int _open64 (const char *, int, ...); #endif #endif #ifdef __cplusplus } #endif #endif /* !_FCNTL_ */ picolibc-1.7.4/newlib/libc/machine/cris/sys/signal.h000066400000000000000000000072071414576234500223310ustar00rootroot00000000000000/* Copyright (C) 2001, 2004, 2005 Axis Communications AB. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Neither the name of Axis Communications nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This file is to be kept in sync (well, reasonably so, it's quite different) with newlib/libc/include/sys/signal.h on which it is based, except values used or returned by syscalls must be those of the Linux/CRIS kernel. */ /* sys/signal.h */ #ifndef _SYS_SIGNAL_H #define _SYS_SIGNAL_H #ifdef __cplusplus extern "C" { #endif #include "_ansi.h" typedef unsigned long sigset_t; /* Adjusted to linux, has unused sa_restorer field and unsigned long sa_flags; relatively unimportant though. */ /* Type of a signal handler. */ typedef void (*__sighandler_t)(int); /* The type used in newlib sources. */ typedef __sighandler_t _sig_func_ptr; struct sigaction { __sighandler_t sa_handler; sigset_t sa_mask; unsigned long sa_flags; void (*sa_restorer)(void); }; /* Adjusted to glibc; other values. */ #define SA_NOCLDSTOP 1 /* only value supported now for sa_flags */ #define SIG_SETMASK 2 /* set mask with sigprocmask() */ #define SIG_BLOCK 0 /* set of signals to block */ #define SIG_UNBLOCK 1 /* set of signals to, well, unblock */ /* These depend upon the type of sigset_t, which right now is always a long.. They're in the POSIX namespace, but are not ANSI. */ #define sigaddset(what,sig) (*(what) |= (1<<(sig))) #define sigemptyset(what) (*(what) = 0) int sigprocmask (int __how, const sigset_t *__a, sigset_t *__b); /* The first argument is really a pid_t, but that's just a typedef'd int, so let's avoid requiring sys/types only for this declaration. */ int kill (int, int); #define SIGHUP 1 #define SIGINT 2 #define SIGQUIT 3 #define SIGILL 4 #define SIGTRAP 5 #define SIGABRT 6 #define SIGIOT 6 #define SIGBUS 7 #define SIGFPE 8 #define SIGKILL 9 #define SIGUSR1 10 #define SIGSEGV 11 #define SIGUSR2 12 #define SIGPIPE 13 #define SIGALRM 14 #define SIGTERM 15 #define SIGSTKFLT 16 #define SIGCHLD 17 #define SIGCONT 18 #define SIGSTOP 19 #define SIGTSTP 20 #define SIGTTIN 21 #define SIGTTOU 22 #define SIGURG 23 #define SIGXCPU 24 #define SIGXFSZ 25 #define SIGVTALRM 26 #define SIGPROF 27 #define SIGWINCH 28 #define SIGIO 29 #define SIGPOLL SIGIO #define SIGPWR 30 #define NSIG 31 #ifdef __cplusplus } #endif #ifndef _SIGNAL_H_ /* Some applications take advantage of the fact that * and are equivalent in glibc. Allow for that here. */ #include #endif #endif /* _SYS_SIGNAL_H */ picolibc-1.7.4/newlib/libc/machine/crx/000077500000000000000000000000001414576234500177135ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/crx/getenv.c000066400000000000000000000016371414576234500213560ustar00rootroot00000000000000/* getenv.c -- Implementation of the getenv() routine * * Copyright (c) 2004 National Semiconductor Corporation * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ /* getenv() is implemented as a low-level function, thus we only invoke here the system call. */ char * getenv (const char *name) { char *_getenv(const char *); return (_getenv (name)); } picolibc-1.7.4/newlib/libc/machine/crx/setjmp.S000066400000000000000000000045731414576234500213520ustar00rootroot00000000000000 ############################################################################## # setjmp.S -- CRX setjmp routine # # # /* Copyright (c) 2004 National Semiconductor Corporation */ # # # The authors hereby grant permission to use, copy, modify, distribute, # # and license this software and its documentation for any purpose, provided # # that existing copyright notices are retained in all copies and that this # # notice is included verbatim in any distributions. No written agreement, # # license, or royalty fee is required for any of the authorized uses. # # Modifications to this software may be copyrighted by their authors # # and need not follow the licensing terms described here, provided that # # the new terms are clearly indicated on the first page of each file where # # they apply. # # # # C library -- setjmp, longjmp # # longjmp(a,v) # # will generate a "return(v)" # # from the last call to # # setjmp(a) # # by restoring r7-ra, sp, # # and pc from 'a' # # and doing a return. (Makes sure that longjmp never returns 0). # ############################################################################## .text .file "setjmp.s" .align 4 .globl _setjmp .align 4 _setjmp: #r2: .blkw storm r2,{r7,r8,r9,r10,r11,r12,r13,r14} stord sp,0(r2) movd $0,r0 jump ra .globl _longjmp _longjmp: #r2: .blkw # pointer save area #r3: .blkw # ret vlaue loadm r2, {r7,r8,r9,r10,r11,r12,r13,ra} loadd 0(r2), sp movd r3, r0 cmpd $0, r3 bne end1 movd $1, r0 end1: jump ra .align 4 picolibc-1.7.4/newlib/libc/machine/crx/sys/000077500000000000000000000000001414576234500205315ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/crx/sys/asm.h000066400000000000000000000471521414576234500214730ustar00rootroot00000000000000/* asm.h -- CRX architecture intrinsic functions * * Copyright (c) 2004 National Semiconductor Corporation * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #ifndef _ASM #define _ASM /* Note that immediate input values are not checked for validity. It is the user's responsibility to use the intrinsic functions with appropriate immediate values. */ /* Absolute Instructions */ #define _absb_(src, dest) __asm__("absb %1, %0" : "=r" (dest) : \ "r" ((char)src) , "0" (dest)) #define _absw_(src, dest) __asm__("absw %1,%0" : "=r" (dest) : \ "r" ((short)src) , "0" (dest)) #define _absd_(src, dest) __asm__("absd %1, %0" : "=r" (dest) : \ "r" ((int)src) , "0" (dest)) /* Addition Instructions */ #define _addb_(src, dest) __asm__("addb %1, %0" : "=r" (dest) : \ "ri" ((unsigned char)src), "0" (dest) : "cc") #define _addub_(src, dest) __asm__("addub %1, %0" : "=r" (dest) : \ "ri" ((unsigned char)src), "0" (dest) : "cc") #define _addw_(src, dest) __asm__("addw %1, %0" : "=r" (dest) : \ "ri" ((unsigned short)src), "0" (dest) : "cc") #define _adduw_(src, dest) __asm__("adduw %1, %0" : "=r" (dest) : \ "ri" ((unsigned short)src), "0" (dest) : "cc") #define _addd_(src, dest) __asm__("addd %1, %0" : "=r" (dest) : \ "ri" ((unsigned int)src), "0" (dest) : "cc") #define _addud_(src, dest) __asm__("addud %1, %0" : "=r" (dest) : \ "ri" ((unsigned int)src), "0" (dest) : "cc") /* Add with Carry */ #define _addcb_(src, dest) __asm__("addcb %1, %0" : "=r" (dest) : \ "ri" ((unsigned char)src), "0" (dest) : "cc") #define _addcw_(src, dest) __asm__("addcw %1, %0" : "=r" (dest) : \ "ri" ((unsigned short)src), "0" (dest) : "cc") #define _addcd_(src, dest) __asm__("addcd %1, %0" : "=r" (dest) : \ "ri" ((unsigned int)src), "0" (dest) : "cc") /* Q-format Add */ #define _addqb_(src, dest) __asm__("addqb %1, %0" : "=r" (dest) : \ "r" ((unsigned char)src), "0" (dest) : "cc") #define _addqw_(src, dest) __asm__("addqw %1, %0" : "=r" (dest) : \ "r" ((unsigned short)src), "0" (dest) : "cc") #define _addqd_(src, dest) __asm__("addqd %1, %0" : "=r" (dest) : \ "r" ((unsigned int)src), "0" (dest) : "cc") /* Bitwise Logical AND */ #define _andb_(src, dest) __asm__("andb %1,%0" : "=r" (dest) : \ "ri" ((unsigned char)src) , "0" (dest)) #define _andw_(src, dest) __asm__("andw %1,%0" : "=r" (dest) : \ "ri" ((unsigned short)src) , "0" (dest)) #define _andd_(src, dest) __asm__("andd %1,%0" : "=r" (dest) : \ "ri" ((unsigned int)src) , "0" (dest)) /* bswap Instruction */ #define _bswap_(src, dest) __asm__("bswap %1,%0" : "=r" (dest) : \ "r" ((unsigned int)src) , "0" (dest)) /* cbit (clear bit) Instructions */ #define _cbitb_(pos, dest) __asm__("cbitb %1,%0" : "=mr" (dest) : \ "i" ((unsigned char)pos) , "0" (dest) : "cc") #define _cbitw_(pos, dest) __asm__("cbitw %1,%0" : "=mr" (dest) : \ "i" ((unsigned char)pos) , "0" (dest) : "cc") #define _cbitd_(pos, dest) __asm__("cbitd %1,%0" : "=r" (dest) : \ "i" ((unsigned char)pos) , "0" (dest) : "cc") /* Compare Instructions */ #define _cmpb_(src1, src2) __asm__("cmpb %0,%1" : /* no output */ : \ "ri" ((unsigned char)src1) , "r" (src2) : "cc") #define _cmpw_(src1,src2) __asm__("cmpw %0,%1" : /* no output */ \ : "ri" ((unsigned short)src1) , "r" (src2) : "cc") #define _cmpd_(src1,src2) __asm__("cmpd %0,%1" : /* no output */ \ : "ri" ((unsigned int)src1) , "r" (src2) : "cc") /* cntl Count Leading Ones Instructions */ #define _cntl1b_(src, dest) __asm__("cntl1b %1,%0" : "=r" (dest) : \ "r" ((char)src) , "0" (dest)) #define _cntl1w_(src, dest) __asm__("cntl1w %1,%0" : "=r" (dest) : \ "r" ((short)src) , "0" (dest)) #define _cntl1d_(src, dest) __asm__("cntl1d %1,%0" : "=r" (dest) : \ "r" ((int)src) , "0" (dest)) /* cntl Count Leading Zeros Instructions */ #define _cntl0b_(src, dest) __asm__("cntl0b %1,%0" : "=r" (dest) : \ "r" ((char)src) , "0" (dest)) #define _cntl0w_(src, dest) __asm__("cntl0w %1,%0" : "=r" (dest) : \ "r" ((short)src) , "0" (dest)) #define _cntl0d_(src, dest) __asm__("cntl0d %1,%0" : "=r" (dest) : \ "r" ((int)src) , "0" (dest)) /* cntl Count Leading Signs Instructions */ #define _cntlsb_(src, dest) __asm__("cntlsb %1,%0" : "=r" (dest) : \ "r" ((char)src) , "0" (dest)) #define _cntlsw_(src, dest) __asm__("cntlsw %1,%0" : "=r" (dest) : \ "r" ((short)src) , "0" (dest)) #define _cntlsd_(src, dest) __asm__("cntlsd %1,%0" : "=r" (dest) : \ "r" ((int)src) , "0" (dest)) /* Disable Inerrupts instructions */ #define _di_() __asm__ volatile ("di\n" : : : "cc") #define _disable_() __asm__ volatile ("di\n" : : : "cc") /* Enable Inerrupts instructions */ #define _ei_() __asm__ volatile ("ei\n" : : : "cc") #define _enable_() __asm__ volatile ("ei\n" : : : "cc") /* Enable Inerrupts instructions and Wait */ #define _eiwait_() __asm__ volatile ("eiwait" : : : "cc") /* excp Instructions */ #define _excp_(vector) __asm__ volatile ("excp " # vector) /* getpid Instruction */ #define _getrfid_(dest) __asm__("getrfid %0" : "=r" (dest) : \ /* No input */ : "cc") /* Load Instructions */ #define _loadb_(base,dest) __asm__("loadb %1,%0" : "=r" (dest) : \ "m" (base) , "0" (dest)) #define _loadw_(base,dest) __asm__("loadw %1,%0" : "=r" (dest) : \ "m" (base) , "0" (dest)) #define _loadd_(base,dest) __asm__("loadd %1,%0" : "=r" (dest) : \ "m" (base) , "0" (dest)) /* Load Multiple Instructions */ #define _loadm_(src, mask) __asm__("loadm %0,%1" : /* No output */ : \ "r" ((unsigned int)src) , "i" (mask)) #define _loadmp_(src, mask) __asm__("loadmp %0,%1" : /* No output */ : \ "r" ((unsigned int)src) , "i" (mask)) /* Multiply Accumulate Instrutions */ #define _macsb_(hi, lo, src1, src2) __asm__("macsb %1,%0" \ : =l (lo), =h (hi) \ : "r" ((char)src1) , "r" (src2)) #define _macsw_(hi, lo, src1, src2) __asm__("macsw %1,%0" \ : =l (lo), =h (hi) \ : "r" ((short)src1) , "r" (src2)) #define _macsd_(hi, lo, src1, src2) __asm__("macsd %1,%0" \ : =l (lo), =h (hi) \ : "r" ((int)src1) , "r" (src2)) #define _macub_(hi, lo, src1, src2) __asm__("macub %1,%0" \ : =l (lo), =h (hi) \ :"r" ((unsigned char)src1) , "r" (src2)) #define _macuw_(hi, lo, src1, src2) __asm__("macuw %1,%0" \ : =l (lo), =h (hi) \ : "r" ((unsigned short)src1) , "r" (src2)) #define _macud_(hi, lo, src1, src2) __asm__("macud %1,%0" \ : =l (lo), =h (hi) \ : "r" ((unsigned int)src1) , "r" (src2)) /* Q-Format Multiply Accumulate Instrutions */ #define _macqb_(src1, src2) __asm__("macqb %1,%0" \ : =l (lo), =h (hi) \ :"r" ((char)src1) , "r" (src2)) #define _macqw_(src1, src2) __asm__("macqw %1,%0" \ : =l (lo), =h (hi) \ :"r" ((short)src1) , "r" (src2)) #define _macqd_(src1, src2) __asm__("macqd %1,%0" \ : =l (lo), =h (hi) \ :"r" ((int)src1) , "r" (src2)) /* Maximum Instructions */ #define _maxsb_(src, dest) __asm__("maxsb %1,%0" : "=r" (dest) : \ "r" ((char)src) , "0" (dest)) #define _maxsw_(src, dest) __asm__("maxsw %1,%0" : "=r" (dest) : \ "r" ((short)src) , "0" (dest)) #define _maxsd_(src, dest) __asm__("maxsd %1,%0" : "=r" (dest) : \ "r" ((int)src) , "0" (dest)) #define _maxub_(src, dest) __asm__("maxub %1,%0" : "=r" (dest) : \ "r" ((unsigned char)src) , "0" (dest)) #define _maxuw_(src, dest) __asm__("maxuw %1,%0" : "=r" (dest) : \ "r" ((unsigned short)src) , "0" (dest)) #define _maxud_(src, dest) __asm__("maxud %1,%0" : "=r" (dest) : \ "r" ((unsigned int)src) , "0" (dest)) /* Minimum Instructions */ #define _minsb_(src, dest) __asm__("minsb %1,%0" : "=r" (dest) : \ "r" ((char)src) , "0" (dest)) #define _minsw_(src, dest) __asm__("minsw %1,%0" : "=r" (dest) : \ "r" ((short)src) , "0" (dest)) #define _minsd_(src, dest) __asm__("minsd %1,%0" : "=r" (dest) : \ "r" ((int)src) , "0" (dest)) #define _minub_(src, dest) __asm__("minub %1,%0" : "=r" (dest) : \ "r" ((unsigned char)src) , "0" (dest)) #define _minuw_(src, dest) __asm__("minuw %1,%0" : "=r" (dest) : \ "r" ((unsigned short)src) , "0" (dest)) #define _minud_(src, dest) __asm__("minud %1,%0" : "=r" (dest) : \ "r" ((unsigned int)src) , "0" (dest)) /* Move Instructions */ #define _movb_(src, dest) __asm__("movb %1,%0" : "=r" (dest) : \ "ri" ((unsigned char)src) , "0" (dest)) #define _movw_(src, dest) __asm__("movw %1,%0" : "=r" (dest) : \ "ri" ((unsigned short)src) , "0" (dest)) #define _movd_(src, dest) __asm__("movd %1,%0" : "=r" (dest) : \ "ri" ((unsigned int)src) , "0" (dest)) /* mtpr and mfpr Insturctions */ #define _mtpr_(procregd, src) __asm__("mtpr\t%0," procregd : /* no output */ : \ "r" (src) : "cc") #define _mfpr_(procregd, dest) __asm__("mfpr\t" procregd ",%0" : "=r" (dest) : \ /* no input */ "0" (dest) : "cc") /* Multiplication Instructions */ #define _mulsbw_(src, dest) __asm__("mulsbw %1,%0" : "=r" (dest) : \ "r" ((char)src) , "0" (dest)) #define _mulubw_(src, dest) __asm__("mulubw %1,%0" : "=r" (dest) : \ "r" ((unsigned char)src) , "0" (dest)) #define _mulswd_(src, dest) __asm__("mulswd %1,%0" : "=r" (dest) : \ "r" ((short)src) , "0" (dest)) #define _muluwd_(src, dest) __asm__("muluwd %1,%0" : "=r" (dest) : \ "r" ((unsigned short)src) , "0" (dest)) #define _mulb_(src, dest) __asm__("mulb %1,%0" : "=r" (dest) : \ "ri" ((char)src) , "0" (dest)) #define _mulw_(src, dest) __asm__("mulw %1,%0" : "=r" (dest) : \ "ri" ((short)src) , "0" (dest)) #define _muld_(src, dest) __asm__("muld %1,%0" : "=r" (dest) : \ "ri" ((int)src) , "0" (dest)) #define _mullsd_(hi, lo, src1, src2) __asm__("mullsd %2,%3" \ : =l (lo), =h (hi) \ : "r" ((unsigned int)src1) , "r" ((unsigned int)src2)) #define _mullud_(hi, lo, src1, src2) __asm__("mullud %2,%3" \ : =l (lo), =h (hi) \ : "r" ((int)src1) , "r" ((int)src2)) /* Q-Format Multiplication Instructions */ #define _mulqb_(src, dest) __asm__("mulqb %1,%0" : "=r" (dest) : \ "r" ((char)src) , "0" (dest)) #define _mulqw_(src, dest) __asm__("mulqw %1,%0" : "=r" (dest) : \ "r" ((short)src) , "0" (dest)) /* nop Instruction */ #define _nop_() __asm__("nop") /* Negate Instructions */ #define _negb_(src, dest) __asm__("negb %1,%0" : "=r" (dest) : \ "r" ((char)src) , "0" (dest)) #define _negw_(src, dest) __asm__("negw %1,%0" : "=r" (dest) : \ "r" ((short)src) , "0" (dest)) #define _negd_(src, dest) __asm__("negd %1,%0" : "=r" (dest) : \ "r" ((int)src) , "0" (dest)) /* or Instructions */ #define _orb_(src, dest) __asm__("orb %1,%0" : "=r" (dest) : \ "ri" ((unsigned char)src) , "0" (dest)) #define _orw_(src, dest) __asm__("orw %1,%0" : "=r" (dest) : \ "ri" ((unsigned short)src) , "0" (dest)) #define _ord_(src, dest) __asm__("ord %1,%0" : "=r" (dest) : \ "ri" ((unsigned int)src) , "0" (dest)) /* Pop 1's Count Instructions */ #define _popcntb_(src, dest) __asm__("popcntb %1,%0" : "=r" (dest) : \ "r" ((char)src) , "0" (dest)) #define _popcntw_(src, dest) __asm__("popcntw %1,%0" : "=r" (dest) : \ "r" ((short)src) , "0" (dest)) #define _popcntd_(src, dest) __asm__("popcntd %1,%0" : "=r" (dest) : \ "r" ((int)src) , "0" (dest)) /* Rotate and Mask Instructions */ #define _ram_(shift, end, begin, dest, src) __asm__("ram %1, %2, %3, %0, %4" : \ "=r" (dest) : \ "i" ((unsigned char) shift), \ "i" (end), "i" (begin), \ "r" (src), "0" (dest)) #define _rim_(shift, end, begin, dest, src) __asm__("rim %1, %2, %3, %0, %4" : \ "=r" (dest) : \ "i" ((unsigned char) shift), \ "i" (end), "i" (begin), \ "r" (src), "0" (dest)) /* retx Instruction */ #define _retx_() __asm__("retx") /* Rotate Instructions */ #define _rotb_(shift, dest) __asm__("rotb %1,%0" : "=r" (dest) : \ "i" ((unsigned char)shift) , "0" (dest)) #define _rotw_(shift, dest) __asm__("rotw %1,%0" : "=r" (dest) : \ "i" ((unsigned char)shift) , "0" (dest)) #define _rotd_(shift, dest) __asm__("rotd %1,%0" : "=r" (dest) : \ "i" ((unsigned char)shift) , "0" (dest)) #define _rotlb_(shift, dest) __asm__("rotlb %1,%0" : "=r" (dest) : \ "r" ((unsigned char)shift) , "0" (dest)) #define _rotlw_(shift, dest) __asm__("rotlw %1,%0" : "=r" (dest) : \ "r" ((unsigned char)shift) , "0" (dest)) #define _rotld_(shift, dest) __asm__("rotld %1,%0" : "=r" (dest) : \ "r" ((unsigned char)shift) , "0" (dest)) #define _rotrb_(shift, dest) __asm__("rotrb %1,%0" : "=r" (dest) : \ "r" ((unsigned char)shift) , "0" (dest)) #define _rotrw_(shift, dest) __asm__("rotrw %1,%0" : "=r" (dest) : \ "r" ((unsigned char)shift) , "0" (dest)) #define _rotrd_(shift, dest) __asm__("rotrd %1,%0" : "=r" (dest) : \ "r" ((unsigned char)shift) , "0" (dest)) /* Set Bit Instructions */ #define _sbitb_(pos,dest) __asm__("sbitb %1,%0" : "=mr" (dest) : \ "i" ((unsigned char)pos) , "0" (dest) : "cc") #define _sbitw_(pos,dest) __asm__("sbitw %1,%0" : "=mr" (dest) : \ "i" ((unsigned char)pos) , "0" (dest) : "cc") #define _sbitd_(pos,dest) __asm__("sbitd %1,%0" : "=mr" (dest) : \ "i" ((unsigned char)pos) , "0" (dest) : "cc") /* setrfid Instruction */ #define _setrfid_(src) __asm__("setrfid %0" : /* No output */ : \ "r" (src) : "cc") /* Sign Extend Instructions */ #define _sextbw_(src, dest) __asm__("sextbw %1,%0" : "=r" (dest) : \ "r" ((char)src) , "0" (dest) ) #define _sextbd_(src, dest) __asm__("sextbd %1,%0" : "=r" (dest) : \ "r" ((char)src) , "0" (dest) ) #define _sextwd_(src, dest) __asm__("sextwd %1,%0" : "=r" (dest) : \ "r" ((short)src) , "0" (dest) ) /* Shift Left Logical Instructions */ #define _sllb_(src, dest) __asm__("sllb %1,%0" : "=r" (dest) : \ "ri" ((unsigned char)src) , "0" (dest)) #define _sllw_(src, dest) __asm__("sllw %1,%0" : "=r" (dest) : \ "ri" ((unsigned char)src) , "0" (dest)) #define _slld_(src, dest) __asm__("slld %1,%0" : "=r" (dest) : \ "ri" ((unsigned char)src) , "0" (dest)) /* Shift Right Arithmetic Instructions */ #define _srab_(src, dest) __asm__("srab %1,%0" : "=r" (dest) : \ "ri" ((unsigned char)src) , "0" (dest)) #define _sraw_(src, dest) __asm__("sraw %1,%0" : "=r" (dest) : \ "ri" ((unsigned char)src) , "0" (dest)) #define _srad_(src, dest) __asm__("srad %1,%0" : "=r" (dest) : \ "ri" ((unsigned char)src) , "0" (dest)) /* Shift Right Logical Instructions */ #define _srlb_(src, dest) __asm__("srlb %1,%0" : "=r" (dest) : \ "ri" ((unsigned char)src) , "0" (dest)) #define _srlw_(src, dest) __asm__("srlw %1,%0" : "=r" (dest) : \ "ri" ((unsigned char)src) , "0" (dest)) #define _srld_(src, dest) __asm__("srld %1,%0" : "=r" (dest) : \ "ri" ((unsigned char)src) , "0" (dest)) /* Store Instructions */ #define _storb_(src,address) __asm__("storb %1,%0" : "=m" (address) : \ "ri" ((unsigned int)src)) #define _storw_(src,address) __asm__("storw %1,%0" : "=m" (address) : \ "ri" ((unsigned int)src)) #define _stord_(src,address) __asm__("stord %1,%0" : "=m" (address) : \ "ri" ((unsigned int)src)) /* Store Multiple Instructions */ #define _storm_(mask, src) __asm__("storm %1,%0" : /* No output here */ : \ "i" (mask) , "r" ((unsigned int)src)) #define _stormp_(mask, src) __asm__("stormp %1,%0" : /* No output here */ : \ "i" (mask) , "r" ((unsigned int)src)) /* Substruct Instructions */ #define _subb_(src, dest) __asm__("subb %1, %0" : "=r" (dest) : \ "ri" ((unsigned char)src), "0" (dest) : "cc") #define _subw_(src, dest) __asm__("subw %1, %0" : "=r" (dest) : \ "ri" ((unsigned short)src), "0" (dest) : "cc") #define _subd_(src, dest) __asm__("subd %1, %0" : "=r" (dest) : \ "ri" ((unsigned int)src), "0" (dest) : "cc") /* Substruct with Carry Instructions */ #define _subcb_(src, dest) __asm__("subcb %1, %0" : "=r" (dest) : \ "ri" ((unsigned char)src), "0" (dest) : "cc") #define _subcw_(src, dest) __asm__("subcw %1, %0" : "=r" (dest) : \ "ri" ((unsigned short)src), "0" (dest) : "cc") #define _subcd_(src, dest) __asm__("subcd %1, %0" : "=r" (dest) : \ "ri" ((unsigned int)src), "0" (dest) : "cc") /* Q-Format Substruct Instructions */ #define _subqb_(src, dest) __asm__("subqw %1,%0" : "=r" (dest) : \ "r" ((char)src) , "0" (dest)) #define _subqw_(src, dest) __asm__("subqw %1,%0" : "=r" (dest) : \ "r" ((short)src) , "0" (dest)) #define _subqd_(src, dest) __asm__("subqd %1,%0" : "=r" (dest) : \ "r" ((short)src) , "0" (dest)) /* Test Bit Instructions */ #define _tbitb_(pos,dest) __asm__("tbitb %0,%1" : /* No output */ : \ "i" ((unsigned char)pos) , "rm" (dest) : "cc") #define _tbitw_(pos,dest) __asm__("tbitw %0,%1" : /* No output */ : \ "i" ((unsigned char)pos) , "rm" (dest) : "cc") #define _tbitd_(pos,dest) __asm__("tbitd %0,%1" : /* No output */ : \ "i" ((unsigned char)pos) , "rm" (dest) : "cc") /* wait Instruction*/ #define _wait_() __asm__ volatile ("wait" : : : "cc") /* xor Instructions */ #define _xorb_(src, dest) __asm__("xorb %1,%0" : "=r" (dest) : \ "ri" ((unsigned char)src) , "0" (dest)) #define _xorw_(src, dest) __asm__("xorw %1,%0" : "=r" (dest) : \ "ri" ((unsigned short)src) , "0" (dest)) #define _xord_(src, dest) __asm__("xord %1,%0" : "=r" (dest) : \ "ri" ((unsigned int)src) , "0" (dest)) /* Zero Extend Instructions */ #define _zextbw_(src, dest) __asm__("zextbw %1,%0" : "=r" (dest) : \ "r" ((unsigned char)src) , "0" (dest)) #define _zextbd_(src, dest) __asm__("zextbd %1,%0" : "=r" (dest) : \ "r" ((unsigned char)src) , "0" (dest)) #define _zextwd_(src, dest) __asm__("zextwd %1,%0" : "=r" (dest) : \ "r" ((unsigned short)src) , "0" (dest)) #define _save_asm_(x) \ __asm__ volatile (x ::: "memory","cc", \ "r0","r1","r2","r3","r4","r5","r6","r7", \ "r8","r9","r10","r11","r12","r13") #endif /* _ASM */ picolibc-1.7.4/newlib/libc/machine/crx/sys/libh.h000066400000000000000000000024741414576234500216270ustar00rootroot00000000000000/* libh.h -- CRX default handlers * * Copyright (c) 2004 National Semiconductor Corporation * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #ifndef _LIBH #define _LIBH /* These are the first 16 entries of the default dispatch table as defined in the CompactRISC architecture: Entry Function ----- -------- 0 NULL 1 nmi 2 NULL 3 NULL 4 NULL 5 svc 6 dvz 7 flg 8 bpt 9 trc 10 und 11 NULL 12 iad 13 NULL 14 dbg 15 ise */ extern void (* const _dispatch_table[])(void); /* Function prototypes */ void svc_handler(void); void dvz_handler(void); void flg_handler(void); void und_handler(void); void iad_handler(void); #endif /* _LIBH */ picolibc-1.7.4/newlib/libc/machine/crx/sys/syscall.h000066400000000000000000000032571414576234500223630ustar00rootroot00000000000000/* syscall.h -- CRX virtual I/O and trap service codes * * Copyright (c) 2004 National Semiconductor Corporation * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #ifndef _SYSCALL_H #define _SYSCALL_H #include /* SVC codes to pass to the debugger */ /* Virtual I/O services */ #define SVC_OPEN 0x401 #define SVC_CLOSE 0x402 #define SVC_READ 0x403 #define SVC_WRITE 0x404 #define SVC_LSEEK 0x405 #define SVC_RENAME 0x406 #define SVC_UNLINK 0x407 #define SVC_GETENV 0x408 /* Time service */ #define SVC_TIME 0x300 /* Start/end of program services */ #define SVC_EOP 0x410 /* Trap services */ #define SVC_SVC 0x505 #define SVC_DVZ 0x506 #define SVC_FLG 0x507 #define SVC_UND 0x50a #define SVC_IAD 0x50c /* Places the code of the requested service in R0, then transfers control to the debugger using the BPT exception. It is called from the start routine, VIO functions and the trap handlers. */ #define STRINGIFY(x) #x #define HOST_SERVICE(service) \ do { \ __asm__("movd\t$" STRINGIFY(service) ",r0"); \ _excp_(bpt); \ __asm__(".short\t0xFFFF"); \ } while (0) #endif /* _SYSCALL_H */ picolibc-1.7.4/newlib/libc/machine/csky/000077500000000000000000000000001414576234500200705ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/csky/meson.build000066400000000000000000000031601414576234500222320ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2020 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # srcs_machine = [ 'setjmp.S', ] src_machine = files(srcs_machine) picolibc-1.7.4/newlib/libc/machine/csky/setjmp.S000066400000000000000000000033721414576234500215230ustar00rootroot00000000000000/* Copyright (c) 2020 C-SKY Microsystems All rights reserved. This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the FreeBSD License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. A copy of this license is available at http://www.opensource.org/licenses. */ .section .text .align 3 .globl setjmp .type setjmp,@function .globl longjmp .type longjmp,@function setjmp: #if defined(__CK801__) stw r4, (r0, 0) stw r5, (r0, 4) stw r6, (r0, 8) stw r7, (r0, 12) stw r8, (r0, 16) stw r15, (r0, 20) stw sp, (r0, 24) #elif defined(__CK802__) stm r4-r11, (r0) stw r15, (r0, 32) stw sp, (r0, 36) #else stm r4-r11, (r0) stw r15, (r0, 32) stw r16, (r0, 36) stw r17, (r0, 40) stw r26, (r0, 44) stw r27, (r0, 48) stw r28, (r0, 52) stw r29, (r0, 56) stw r30, (r0, 60) stw r31, (r0, 64) stw sp, (r0, 68) #endif movi r0, 0 rts longjmp: #if defined(__CK801__) ldw r4, (r0, 0) ldw r5, (r0, 4) ldw r6, (r0, 8) ldw r7, (r0, 12) ldw r8, (r0, 16) ldw r15, (r0, 20) ldw sp, (r0, 24) #elif defined(__CK802__) ldm r4-r11, (r0) ldw r15, (r0, 32) ldw sp, (r0, 36) #else ldm r4-r11, (r0) ldw r15, (r0, 32) ldw r16, (r0, 36) ldw r17, (r0, 40) ldw r26, (r0, 44) ldw r27, (r0, 48) ldw r28, (r0, 52) ldw r29, (r0, 56) ldw r30, (r0, 60) ldw r31, (r0, 64) ldw sp, (r0, 68) #endif mov r0, r1 cmpnei r1, 0 bt 1f movi r0, 1 1: rts picolibc-1.7.4/newlib/libc/machine/d10v/000077500000000000000000000000001414576234500176715ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/d10v/setjmp.S000066400000000000000000000034751414576234500213300ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ ; setjmp/longjmp for D10V. The jmpbuf looks like this: ; ; Register jmpbuf offset ; R6 0x00 ; R7 0x02 ; R8 0x04 ; R9 0x06 ; R10 0x08 ; R11 0x0a ; R13 (return address) 0x0c ; R15 (SP) 0x0E .text .globl setjmp .type setjmp,@function .stabs "setjmp.S",100,0,0,setjmp .stabs "int:t(0,1)=r(0,1);-65536;65535;",128,0,0,0 .stabs "setjmp:F(0,1)",36,0,1,setjmp setjmp: ; Address of jmpbuf is passed in R0. Save the appropriate registers. st2w r6, @r0+ st2w r8, @r0+ st2w r10, @r0+ st r13, @r0+ st r15, @r0+ ; Return 0 to caller ldi r0, 0 jmp r13 .Lsetjmp: .size setjmp,.Lsetjmp-setjmp .stabs "",36,0,0,.Lsetjmp-setjmp .globl longjmp .type longjmp,@function .stabs "longjmp:F(0,1)",36,0,1,longjmp longjmp: ; Address of jmpbuf is in R0. Restore the registers. ld2w r6, @r0+ ld2w r8, @r0+ ld2w r10, @r0+ ld r13, @r0+ ld r15, @r0+ ; Value to return to caller is in R1. If caller attemped to return 0, ; return 1 instead. mv r0, r1 cmpeqi r0, 0 exef0t || ldi r0,1 jmp r13 .Llongjmp: .size longjmp,.Llongjmp-longjmp .stabs "",36,0,0,.Llongjmp-longjmp picolibc-1.7.4/newlib/libc/machine/d30v/000077500000000000000000000000001414576234500176735ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/d30v/setjmp.S000066400000000000000000000056161414576234500213310ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ ; setjmp/longjmp for D30V. .text .globl setjmp .type setjmp,@function .stabs "setjmp.S",100,0,0,setjmp .stabs "int:t(0,1)=r(0,1);-2147483648;2147483647;",128,0,0,0 .stabs "setjmp:F(0,1)",36,0,1,setjmp setjmp: ; Address of jmpbuf is passed in R2. Save the appropriate registers. st2w r26, @(r2+,r0) st2w r28, @(r2+,r0) st2w r30, @(r2+,r0) st2w r32, @(r2+,r0) st2w r34, @(r2+,r0) st2w r36, @(r2+,r0) st2w r38, @(r2+,r0) st2w r40, @(r2+,r0) st2w r42, @(r2+,r0) st2w r44, @(r2+,r0) st2w r46, @(r2+,r0) st2w r48, @(r2+,r0) st2w r50, @(r2+,r0) st2w r52, @(r2+,r0) st2w r54, @(r2+,r0) st2w r56, @(r2+,r0) st2w r58, @(r2+,r0) st2w r60, @(r2+,r0) st2w r62, @(r2+,r0) mvfacc r4, a1, 16 mvfacc r5, a1, 0 st2w r4, @(r2+,r0) mvfsys r4, psw mvfsys r5, rpt_c st2w r4, @(r2+,r0) mvfsys r4, rpt_s mvfsys r5, rpt_e st2w r4, @(r2+,r0) mvfsys r4, mod_s mvfsys r5, mod_e st2w r4, @(r2+,r0) ; Return 0 to caller add r2, r0, r0 jmp link .Lsetjmp: .size setjmp,.Lsetjmp-setjmp .stabs "",36,0,0,.Lsetjmp-setjmp .globl longjmp .type longjmp,@function .stabs "longjmp:F(0,1)",36,0,1,longjmp longjmp: ; Address of jmpbuf is in R2. Restore the registers. ld2w r26, @(r2+,r0) ld2w r28, @(r2+,r0) ld2w r30, @(r2+,r0) ld2w r32, @(r2+,r0) ld2w r34, @(r2+,r0) ld2w r36, @(r2+,r0) ld2w r38, @(r2+,r0) ld2w r40, @(r2+,r0) ld2w r42, @(r2+,r0) ld2w r44, @(r2+,r0) ld2w r46, @(r2+,r0) ld2w r48, @(r2+,r0) ld2w r50, @(r2+,r0) ld2w r52, @(r2+,r0) ld2w r54, @(r2+,r0) ld2w r56, @(r2+,r0) ld2w r58, @(r2+,r0) ld2w r60, @(r2+,r0) ld2w r62, @(r2+,r0) ld2w r4, @(r2+,r0) mvtacc a1, r4, r5 mvfsys r6, psw ld2w r4, @(r2+,r0) /* psw, rpt_c */ and r6, r6, 0xfcff /* set rp, md bits from setjmp, leave */ and r4, r4, 0x0300 /* all other psw bits the same */ or r4, r4, r6 mvtsys psw, r4 mvtsys rpt_c, r5 ld2w r4, @(r2+,r0) mvtsys rpt_s, r4 mvtsys rpt_e, r5 ld2w r4, @(r2+,r0) mvtsys mod_s, r4 mvtsys mod_e, r5 ; Value to return to caller is in R3. If caller attemped to return 0, ; return 1 instead. cmpeq f0, r3, 0 || add r2, r3, r0 jmp link || add/tx r2, r2, 1 .Llongjmp: .size longjmp,.Llongjmp-longjmp .stabs "",36,0,0,.Llongjmp-longjmp picolibc-1.7.4/newlib/libc/machine/epiphany/000077500000000000000000000000001414576234500207345ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/epiphany/setjmp.S000066400000000000000000000044251414576234500223670ustar00rootroot00000000000000/* setjmp and longjmp Copyright (c) 2011, Adapteva, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Adapteva nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ .file "setjmp.S" .section .text .align 4 .global _setjmp .type _setjmp, %function _setjmp: strd lr,[r0] strd r4,[r0,1] strd r6,[r0,2] strd r8,[r0,3] strd r10,[r0,4] strd r32,[r0,5] strd r34,[r0,6] strd r36,[r0,7] strd r38,[r0,8] str sp,[r0,18] mov r0,#0 rts .size _setjmp, .-_setjmp .global setjmp .set setjmp, _setjmp .global _longjmp _longjmp: ldrd lr,[r0] ; return address / r15 ldrd r4,[r0,1] ldrd r6,[r0,2] ldrd r8,[r0,3] ldrd r10,[r0,4] ldrd r32,[r0,5] ldrd r34,[r0,6] ldrd r36,[r0,7] ldrd r38,[r0,8] ldr sp,[r0,18] sub r1,r1,0 mov r0,#1 movne r0,r1 jr lr .size _longjmp, .-_longjmp .global longjmp .set longjmp, _longjmp picolibc-1.7.4/newlib/libc/machine/fr30/000077500000000000000000000000001414576234500176715ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/fr30/setjmp.S000066400000000000000000000027411414576234500213230ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ # setjmp/longjmp for FR30. The jmpbuf looks like this: # # Register jmpbuf offset # R8 0x00 # R9 0x04 # R10 0x08 # R11 0x0c # R12 0x10 # R13 0x14 # R14 (FP) 0x18 # R15 (SP) 0x1c # RP 0x20 .macro save reg st \reg,@r4 add #4,r4 .endm .macro restore reg ld @r4,\reg add #4,r4 .endm .text .global setjmp setjmp: save r8 save r9 save r10 save r11 save r12 save r13 save r14 save r15 mov RP,r5 st r5,@r4 # Return 0 to caller. ldi:8 #0,r4 ret .global longjmp longjmp: restore r8 restore r9 restore r10 restore r11 restore r12 restore r13 restore r14 restore r15 ld @r4,r4 mov r4,RP # If caller attempted to return 0, return 1 instead. mov r5,r4 or r4,r4 bne 1f ldi:8 #1,r4 1: ret picolibc-1.7.4/newlib/libc/machine/frv/000077500000000000000000000000001414576234500177145ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/frv/setjmp.S000066400000000000000000000050561414576234500213500ustar00rootroot00000000000000/* Copyright (c) 2002 Dave Brolley */ # setjmp/longjmp for Frv. The jmpbuf looks like this: # # Register jmpbuf offset # R16-R31 0x0-0x03c # R48-R63 0x40-0x7c # FR16-FR31 0x80-0xbc # FR48-FR63 0xc0-0xfc # LR 0x100 # SP 0x104 # FP 0x108 # # R8 contains the pointer to jmpbuf #include .text .global EXT(setjmp) .type EXT(setjmp),@function EXT(setjmp): stdi gr16, @(gr8,0) stdi gr18, @(gr8,8) stdi gr20, @(gr8,16) stdi gr22, @(gr8,24) stdi gr24, @(gr8,32) stdi gr26, @(gr8,40) stdi gr28, @(gr8,48) stdi gr30, @(gr8,56) #if __FRV_GPR__ != 32 stdi gr48, @(gr8,64) stdi gr50, @(gr8,72) stdi gr52, @(gr8,80) stdi gr54, @(gr8,88) stdi gr56, @(gr8,96) stdi gr58, @(gr8,104) stdi gr60, @(gr8,112) stdi gr62, @(gr8,120) #endif #if __FRV_FPR__ != 0 stdfi fr16, @(gr8,128) stdfi fr18, @(gr8,136) stdfi fr20, @(gr8,144) stdfi fr22, @(gr8,152) stdfi fr24, @(gr8,160) stdfi fr26, @(gr8,168) stdfi fr28, @(gr8,176) stdfi fr30, @(gr8,184) #if __FRV_FPR__ != 32 stdfi fr48, @(gr8,192) stdfi fr50, @(gr8,200) stdfi fr52, @(gr8,208) stdfi fr54, @(gr8,216) stdfi fr56, @(gr8,224) stdfi fr58, @(gr8,232) stdfi fr60, @(gr8,240) stdfi fr62, @(gr8,248) #endif #endif movsg lr, gr4 sti gr4, @(gr8,256) sti sp, @(gr8,260) sti fp, @(gr8,264) mov gr0,gr8 ret .Lend1: .size EXT(setjmp),.Lend1-EXT(setjmp) .global EXT(longjmp) .type EXT(longjmp),@function EXT(longjmp): lddi @(gr8,0), gr16 lddi @(gr8,8), gr18 lddi @(gr8,16), gr20 lddi @(gr8,24), gr22 lddi @(gr8,32), gr24 lddi @(gr8,40), gr26 lddi @(gr8,48), gr28 lddi @(gr8,56), gr30 #if __FRV_GPR__ != 32 lddi @(gr8,64), gr48 lddi @(gr8,72), gr50 lddi @(gr8,80), gr52 lddi @(gr8,88), gr54 lddi @(gr8,96), gr56 lddi @(gr8,104), gr58 lddi @(gr8,112), gr60 lddi @(gr8,120), gr62 #endif #if __FRV_FPR__ != 0 lddfi @(gr8,128), fr16 lddfi @(gr8,136), fr18 lddfi @(gr8,144), fr20 lddfi @(gr8,152), fr22 lddfi @(gr8,160), fr24 lddfi @(gr8,168), fr26 lddfi @(gr8,176), fr28 lddfi @(gr8,184), fr30 #if __FRV_FPR__ != 32 lddfi @(gr8,192), fr48 lddfi @(gr8,200), fr50 lddfi @(gr8,208), fr52 lddfi @(gr8,216), fr54 lddfi @(gr8,224), fr56 lddfi @(gr8,232), fr58 lddfi @(gr8,240), fr60 lddfi @(gr8,248), fr62 #endif #endif ldi @(gr8,256), gr4 movgs gr4,lr ldi @(gr8,260), sp ldi @(gr8,264), fp # Value to return is in r9. If zero, return 1 cmp gr9, gr0, icc0 setlos #1, gr8 ckne icc0, cc4 cmov gr9, gr8, cc4, 1 ret .Lend2: .size EXT(longjmp),.Lend2-EXT(longjmp) picolibc-1.7.4/newlib/libc/machine/ft32/000077500000000000000000000000001414576234500176755ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/ft32/memcpy.S000066400000000000000000000020621414576234500213130ustar00rootroot00000000000000/* A memcpy.c for FT32 Copyright (C) 2014 FTDI (support@ftdichip.com) The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply. */ .text .global memcpy .type memcpy,@function memcpy: ldk $r3,32764 1: cmp $r2,$r3 jmpc lte,2f memcpy.b $r0,$r1,$r3 add $r0,$r0,$r3 add $r1,$r1,$r3 sub $r2,$r2,$r3 jmp 1b 2: memcpy.b $r0,$r1,$r2 return .Lend2: .size memcpy,.Lend2-memcpy picolibc-1.7.4/newlib/libc/machine/ft32/memset.S000066400000000000000000000020261414576234500213130ustar00rootroot00000000000000/* A memset.c for FT32 Copyright (C) 2014 FTDI (support@ftdichip.com) The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply. */ .text .global memset .type memset,@function memset: ldk $r3,32764 1: cmp $r2,$r3 jmpc lte,2f memset.b $r0,$r1,$r3 add $r0,$r0,$r3 sub $r2,$r2,$r3 jmp 1b 2: memset.b $r0,$r1,$r2 return .Lend2: .size memset,.Lend2-memset picolibc-1.7.4/newlib/libc/machine/ft32/setjmp.S000066400000000000000000000053111414576234500213230ustar00rootroot00000000000000/* A setjmp.c for FT32 Copyright (C) 2014 FTDI (support@ftdichip.com) The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply. */ # setjmp/longjmp for FT32. # Total jumpbuf size is 108 bytes, or 27 words. # .text .global setjmp .type setjmp,@function setjmp: pop.l $r5 # return address in $r5 sti.l $r0,0,$r5 sti.l $r0,4,$r6 sti.l $r0,8,$r7 sti.l $r0,12,$r8 sti.l $r0,16,$r9 sti.l $r0,20,$r10 sti.l $r0,24,$r11 sti.l $r0,28,$r12 sti.l $r0,32,$r13 sti.l $r0,36,$r14 sti.l $r0,40,$r15 sti.l $r0,44,$r16 sti.l $r0,48,$r17 sti.l $r0,52,$r18 sti.l $r0,56,$r19 sti.l $r0,60,$r20 sti.l $r0,64,$r21 sti.l $r0,68,$r22 sti.l $r0,72,$r23 sti.l $r0,76,$r24 sti.l $r0,80,$r25 sti.l $r0,84,$r26 sti.l $r0,88,$r27 sti.l $r0,92,$r28 sti.l $r0,96,$r29 sti.l $r0,100,$r30 sti.l $r0,104,$r31 ldk.l $r0,0 jmpi $r5 .Lend1: .size setjmp,.Lend1-setjmp .global longjmp .type longjmp,@function longjmp: cmp.l $r1,0 jmpc nz,.nonz ldk.l $r1,1 .nonz: ldi.l $r5,$r0,0 ldi.l $r6,$r0,4 ldi.l $r7,$r0,8 ldi.l $r8,$r0,12 ldi.l $r9,$r0,16 ldi.l $r10,$r0,20 ldi.l $r11,$r0,24 ldi.l $r12,$r0,28 ldi.l $r13,$r0,32 ldi.l $r14,$r0,36 ldi.l $r15,$r0,40 ldi.l $r16,$r0,44 ldi.l $r17,$r0,48 ldi.l $r18,$r0,52 ldi.l $r19,$r0,56 ldi.l $r20,$r0,60 ldi.l $r21,$r0,64 ldi.l $r22,$r0,68 ldi.l $r23,$r0,72 ldi.l $r24,$r0,76 ldi.l $r25,$r0,80 ldi.l $r26,$r0,84 ldi.l $r27,$r0,88 ldi.l $r28,$r0,92 ldi.l $r29,$r0,96 ldi.l $r30,$r0,100 ldi.l $r31,$r0,104 move.l $r0,$r1 jmpi $r5 .Lend2: .size longjmp,.Lend2-longjmp picolibc-1.7.4/newlib/libc/machine/ft32/stpcmp.S000066400000000000000000000015421414576234500213310ustar00rootroot00000000000000/* A strlen.c for FT32 Copyright (C) 2014 FTDI (support@ftdichip.com) The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply. */ .text .global strlen .type strlen,@function strlen: strlen.b $r0,$r0 return .Lend2: .size strlen,.Lend2-strlen picolibc-1.7.4/newlib/libc/machine/ft32/strcmp.S000066400000000000000000000015461414576234500213370ustar00rootroot00000000000000/* A strcmp.c for FT32 Copyright (C) 2014 FTDI (support@ftdichip.com) The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply. */ .text .global strcmp .type strcmp,@function strcmp: strcmp.b $r0,$r0,$r1 return .Lend2: .size strcmp,.Lend2-strcmp picolibc-1.7.4/newlib/libc/machine/ft32/strcpy.S000066400000000000000000000015731414576234500213530ustar00rootroot00000000000000/* A strcpy.c for FT32 Copyright (C) 2014 FTDI (support@ftdichip.com) The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply. */ .text .global strcpy .type strcpy,@function strcpy: move.l $r5,$r0 stpcpy.b $r5,$r1 return .Lend2: .size strcpy,.Lend2-strcpy picolibc-1.7.4/newlib/libc/machine/ft32/strlen.S000066400000000000000000000015421414576234500213320ustar00rootroot00000000000000/* A strlen.c for FT32 Copyright (C) 2014 FTDI (support@ftdichip.com) The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply. */ .text .global strlen .type strlen,@function strlen: strlen.b $r0,$r0 return .Lend2: .size strlen,.Lend2-strlen picolibc-1.7.4/newlib/libc/machine/h8300/000077500000000000000000000000001414576234500176615ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/h8300/defines.h000066400000000000000000000053321414576234500214520ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #define A0 r0 #define A0L r0l #define A0H r0h #define A1 r1 #define A1L r1l #define A1H r1h #define A2 r2 #define A2L r2l #define A2H r2h #define A3 r3 #define A3L r3l #define A3H r3h #define S0 r4 #define S0L r4l #define S0H r4h #define S1 r5 #define S1L r5l #define S1H r5h #define S2 r6 #define S2L r6l #define S2H r6h #ifdef __H8300__ #define MOVP mov.w /* pointers are 16 bits */ #define ADDP add.w #define CMPP cmp.w #define PUSHP push #define POPP pop #define A0P r0 #define A1P r1 #define A2P r2 #define A3P r3 #define S0P r4 #define S1P r5 #define S2P r6 #endif /* __H8300__ */ #ifdef __H8300H__ #ifdef __NORMAL_MODE__ #define MOVP mov.w /* pointers are 16 bits */ #define ADDP add.w #define CMPP cmp.w #define PUSHP push #define POPP pop #define A0P r0 #define A1P r1 #define A2P r2 #define A3P r3 #define S0P r4 #define S1P r5 #define S2P r6 #else /* !__NORMAL_MODE__ */ #define MOVP mov.l /* pointers are 32 bits */ #define ADDP add.l #define CMPP cmp.l #define PUSHP push.l #define POPP pop.l #define A0P er0 #define A1P er1 #define A2P er2 #define A3P er3 #define S0P er4 #define S1P er5 #define S2P er6 #endif /* !__NORMAL_MODE__ */ #define A0E e0 #define A1E e1 #define A2E e2 #define A3E e3 #endif /* __H8300H__ */ #if defined (__H8300S__) || defined (__H8300SX__) #ifdef __NORMAL_MODE__ #define MOVP mov.w /* pointers are 16 bits */ #define ADDP add.w #define CMPP cmp.w #define PUSHP push #define POPP pop #define A0P r0 #define A1P r1 #define A2P r2 #define A3P r3 #define S0P r4 #define S1P r5 #define S2P r6 #else /* !__NORMAL_MODE__ */ #define MOVP mov.l /* pointers are 32 bits */ #define ADDP add.l #define CMPP cmp.l #define PUSHP push.l #define POPP pop.l #define A0P er0 #define A1P er1 #define A2P er2 #define A3P er3 #define S0P er4 #define S1P er5 #define S2P er6 #endif /* !__NORMAL_MODE__ */ #define A0E e0 #define A1E e1 #define A2E e2 #define A3E e3 #ifdef __NORMAL_MODE__ #define LEN(X) X #else #define LEN(X) e##X #endif #endif /* __H8300S__ */ picolibc-1.7.4/newlib/libc/machine/h8300/h8sx_strcpy.S000066400000000000000000000005511414576234500223040ustar00rootroot00000000000000/* Copyright (c) 2003 Richard Sandiford */ ; This file exists to provide a movsd implementation of strcpy(). ; Continue to use the generic version for targets other than h8sx. #ifdef __H8300SX__ #include "setarch.h" .global _strcpy _strcpy: stm.l er4-er6,@-er7 mov.l er0,er6 mov.l er1,er5 1: movsd 2f bra 1b 2: rts/l er4-er6 #endif picolibc-1.7.4/newlib/libc/machine/h8300/memcpy.S000066400000000000000000000077271414576234500213140ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include "setarch.h" #include "defines.h" #ifdef __H8300SX__ .global _memcpy _memcpy: stm.l er4-er6,@-er7 ; Set up source and destination pointers for movmd. mov.l er0,er6 mov.l er1,er5 ; See whether the copy is long enough to use the movmd.l code. ; Although the code can handle anything longer than 6 bytes, ; it can be more expensive than movmd.b for small moves. ; It's better to use a higher threshold to account for this. ; ; Note that the exact overhead of the movmd.l checks depends on ; the alignments of the length and pointers. They are faster when ; er0 & 3 == er1 & 3 == er2 & 3, faster still when these values ; are 0. This threshold is a compromise between the various cases. cmp #16,LEN(r2) blo simple ; movmd.l only works for even addresses. If one of the addresses ; is odd and the other is not, fall back on a simple move. bld #0,r5l bxor #0,r6l bcs simple ; Make the addresses even. bld #0,r5l bcc word_aligned mov.b @er5+,@er6+ sub #1,LEN(r2) word_aligned: ; See if copying one word would make the first operand longword ; aligned. Although this is only really worthwhile if it aligns ; the second operand as well, it's no worse if doesn't, so it ; hardly seems worth the overhead of a "band" check. bld #1,r6l bcc fast_copy mov.w @er5+,@er6+ sub #2,LEN(r2) fast_copy: ; Set (e)r4 to the number of longwords to copy. mov LEN(r2),LEN(r4) shlr #2,LEN(r4) #ifdef __NORMAL_MODE__ ; 16-bit pointers and size_ts: one movmd.l is enough. This code ; is never reached with r4 == 0. movmd.l and.w #3,r2 simple: mov.w r2,r4 beq quit movmd.b quit: rts/l er4-er6 #else ; Skip the first iteration if the number of longwords is divisible ; by 0x10000. mov.w r4,r4 beq fast_loop_next ; This loop copies r4 (!= 0) longwords the first time round and 65536 ; longwords on each iteration after that. fast_loop: movmd.l fast_loop_next: sub.w #1,e4 bhs fast_loop ; Mop up any left-over bytes. We could just fall through to the ; simple code after the "and" but the version below is quicker ; and only takes 10 more bytes. and.w #3,r2 beq quit mov.w r2,r4 movmd.b quit: rts/l er4-er6 simple: ; Simple bytewise copy. We need to handle all lengths, including zero. mov.w r2,r4 beq simple_loop_next simple_loop: movmd.b simple_loop_next: sub.w #1,e2 bhs simple_loop rts/l er4-er6 #endif #else .global _memcpy _memcpy: ; MOVP @(2/4,r7),A0P ; dst ; MOVP @(4/8,r7),A1P ; src ; MOVP @(6/12,r7),A2P ; len MOVP A0P,A3P ; keep copy of final dst ADDP A2P,A0P ; point to end of dst CMPP A0P,A3P ; see if anything to do beq quit ADDP A2P,A1P ; point to end of src ; lets see if we can do this in words or A0L,A2L ; or in the dst address or A3L,A2L ; or the length or A1L,A2L ; or the src address btst #0,A2L ; see if the lsb is zero bne byteloop wordloop: #ifdef __NORMAL_MODE__ sub #2,A1P #else subs #2,A1P ; point to word #endif mov.w @A1P,A2 ; get word mov.w A2,@-A0P ; save word CMPP A0P,A3P ; at the front again ? bne wordloop rts byteloop: #ifdef __NORMAL_MODE__ sub #1,A1P #else subs #1,A1P ; point to byte #endif mov.b @A1P,A2L ; get byte mov.b A2L,@-A0P ; save byte CMPP A0P,A3P ; at the front again ? bne byteloop ; return with A0 pointing to dst quit: rts #endif picolibc-1.7.4/newlib/libc/machine/h8300/memset.S000066400000000000000000000045441414576234500213060ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include "setarch.h" #include "defines.h" #if defined (__H8300SX__) .global _memset _memset: ; Use er3 is a temporary since er0 must remain unchanged on exit. mov.l er0,er3 ; Fill er1 with the byte to copy. mov.b r1l,r1h mov.w r1,e1 ; Account for any excess bytes and words that will be copied after ; the main loop. r2 >= 0 if there is a longword to copy. sub #4,LEN(r2) blo longs_done ; Copy one byte if doing so will make er3 word-aligned. ; This isn't needed for correctness but it makes the main loop ; slightly faster. bld #0,r3l bcc word_aligned mov.b r1l,@er3+ sub #1,LEN(r2) blo longs_done word_aligned: ; Likewise one word for longword alignment. bld #1,r3l bcc long_copy mov.w r1,@er3+ sub #2,LEN(r2) blo longs_done long_copy: ; Copy longwords. mov.l er1,@er3+ sub #4,LEN(r2) bhs long_copy longs_done: ; At this point, we need to copy r2 & 3 bytes. Copy a word ; if necessary. bld #1,r2l bcc words_done mov.w r1,@er3+ words_done: ; Copy a byte. bld #0,r2l bcc bytes_done mov.b r1l,@er3+ bytes_done: rts #else ; A0P pointer to cursor ; A1P thing to copy .global _memset _memset: ; MOVP @(2/4,r7),A2P ; dst ; MOVP @(4/8,r7),A1 ; src thing ; MOVP @(6/12,r7),A3P ; len MOVP A2P,A2P beq quit ; A3 points to the end of the area MOVP A0P,A3P ADDP A2P,A3P ; see if we can do it in words ; by oring in the start of the buffer to the end address or A0L,A2L btst #0,A2L bne byteloop ; we can do it a word at a time mov.b A1L,A1H wordloop: mov.w A1,@-A3P CMPP A3P,A0P bne wordloop quit: rts byteloop: mov.b A1L,@-A3P CMPP A3P,A0P bne byteloop rts #endif picolibc-1.7.4/newlib/libc/machine/h8300/reg_memcpy.S000066400000000000000000000024251414576234500221370ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include "setarch.h" #include "defines.h" ; dst A0 ; src A1 ; len A2 .global ___reg_memcpy ___reg_memcpy: MOVP A0P,A3P ; keep copy of result ADDP A2P,A0P ; point to end of dst ADDP A2P,A1P ; point to end of src CMPP A0P,A3P ; see if anything to do beq quit loop: #ifdef __NORMAL_MODE__ sub #1,A1P ; point to byte #else subs #1,A1P ; point to byte #endif mov.b @A1P,A2L ; get byte mov.b A2L,@-A0P ; save byte CMPP A0P,A3P ; at the front again ? bne loop ; return with A0 pointing to dst quit: rts picolibc-1.7.4/newlib/libc/machine/h8300/reg_memset.S000066400000000000000000000020731414576234500221360ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include "setarch.h" #include "defines.h" ; dst A0 ; src A1 ; len A2 .global ___reg_memset ___reg_memset: MOVP A0P,A3P MOVP A2P,A2P beq noset memloop: mov.b A1L,@A0P #ifdef __NORMAL_MODE__ add #1,A0P sub #1,A2P #else adds #1,A0P subs #1,A2P #endif MOVP A2P,A2P bne memloop noset: MOVP A3P,A0P rts picolibc-1.7.4/newlib/libc/machine/h8300/setarch.h000066400000000000000000000004551414576234500214670ustar00rootroot00000000000000/* Copyright (c) 2003 Kazu Hirata */ #ifdef __H8300H__ #ifdef __NORMAL_MODE__ .h8300hn #else .h8300h #endif #endif #ifdef __H8300S__ #ifdef __NORMAL_MODE__ .h8300sn #else .h8300s #endif #endif #ifdef __H8300SX__ #ifdef __NORMAL_MODE__ .h8300sxn #else .h8300sx #endif #endif picolibc-1.7.4/newlib/libc/machine/h8300/setjmp.S000066400000000000000000000034111414576234500213060ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include "setarch.h" .file "setjmp.S" .section .text .align 2 .global _setjmp _setjmp: #if defined(__H8300SX__) mov.l er7,@er0+ mov.l er6,@er0+ mov.l er5,@er0+ mov.l er4,@er0+ mov.l @sp,@er0 sub.l er0,er0 #elif defined(__H8300H__) || defined(__H8300S__) mov.l er7,@er0 mov.l er6,@(4,er0) mov.l er5,@(8,er0) mov.l er4,@(12,er0) mov.l @sp,er1 mov.l er1,@(16,er0) sub.l er0,er0 #else mov.w r7,@r0 mov.w r6,@(2,r0) mov.w r5,@(4,r0) mov.w r4,@(6,r0) mov.w @sp,r1 mov.w r1,@(8,r0) sub.w r0,r0 #endif rts .global _longjmp _longjmp: #if defined(__H8300H__) || defined (__H8300S__) || defined (__H8300SX__) mov.l @er0+,er7 mov.l @er0+,er6 mov.l @er0+,er5 mov.l @er0+,er4 #if defined(__H8300SX__) mov.l @er0,@sp #else mov.l @er0,er2 mov.l er2,@sp #endif #if (__INT_MAX__ <= 32767) mov.w r1,r0 #else mov.l er1,er0 #endif bne .L1 sub er0,er0 adds #1,er0 #else mov.w @r0+,r7 mov.w @r0+,r6 mov.w @r0+,r5 mov.w @r0+,r4 mov.w @r0,r2 mov.w r2,@sp mov.w r1,r0 bne .L1 mov.w #1,r0 #endif .L1: rts picolibc-1.7.4/newlib/libc/machine/h8300/strcmp.S000066400000000000000000000030071414576234500213150ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include "setarch.h" #include "defines.h" #if defined (__H8300SX__) .global _strcmp _strcmp: mov.l er0,er2 loop: mov.b @er2+,r0l beq eos sub.b @er1+,r0l beq loop exts.l #2,er0 rts eos: sub.b @er1,r0l exts.l #2,er0 rts #else .section .text .align 2 .global _strcmp _strcmp: MOVP A0P,A2P MOVP A1P,A3P .L5: mov.b @A2P+,A1L beq .L3 mov.b @A3P+,A0L cmp.b A0L,A1L beq .L5 #ifdef __NORMAL_MODE__ sub #1,A3P #else subs #1,A3P #endif .L3: mov.b @(-1,A2P),A0L mov.b @A3P,A1L sub.b A1L,A0L ; We have to sign extend the result to 32bits just in case ; we are using 32bit integers. #ifdef __H8300H__ exts.w r0 exts.l er0 #else #ifdef __H8300S__ exts.w r0 exts.l er0 #else bld #7,r0l subx r0h,r0h subx r1l,r1l subx r1h,r1h #endif #endif rts .end #endif picolibc-1.7.4/newlib/libc/machine/h8500/000077500000000000000000000000001414576234500176635ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/h8500/cmpsi.c000066400000000000000000000045111414576234500211430ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ union u { struct { short int msw; unsigned short lsw; } w; long l; }; union us { struct { short int msw; unsigned short lsw; } w; long l; }; int __cmpsi2(long arga, short int msw_b, unsigned short int lsw_b) { union u u; u.l = arga; if (u.w.msw != msw_b) { if (u.w.msw < msw_b) return 0; return 2; } if (u.w.lsw != lsw_b) { if (u.w.lsw < lsw_b) return 0; return 2; } return 1; } int __ucmpsi2(unsigned long arga, unsigned short int msw_b, unsigned short int lsw_b) { union us u; u.l = arga; if (u.w.msw != msw_b) { if (u.w.msw < msw_b) return 0; return 2; } if (u.w.lsw != lsw_b) { if (u.w.lsw < lsw_b) return 0; return 2; } return 1; } union pu { struct { char ignore; signed char msb; unsigned short lsw; } w; long l; }; union pun { struct { char ignore; unsigned char msb; unsigned short lsw; } w; long l; }; int __cmppsi2(long arga, long argb) { union pu a; union pu b; a.l = arga; b.l = argb; if (a.w.msb != b.w.msb) { if (a.w.msb < b.w.msb) return 0; return 2; } if (a.w.lsw != b.w.lsw) { if (a.w.lsw < b.w.lsw) return 0; return 2; } return 1; } int __ucmppsi2(long arga, long argb) { union pun a; union pun b; a.l = arga; b.l = argb; if (a.w.msb != b.w.msb) { if (a.w.msb < b.w.msb) return 0; return 2; } if (a.w.lsw != b.w.lsw) { if (a.w.lsw < b.w.lsw) return 0; return 2; } return 1; } picolibc-1.7.4/newlib/libc/machine/h8500/divhi3.S000066400000000000000000000024611414576234500212000ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ .title "H8/500 DIVIDE" !! 2 byte integer Divide code for the H8/500 !! !! Steve Chamberlain !! sac@cygnus.com !! !! !! args in r1 and r4, result in r0/r1 #if __CODE__==32 #define RET prts #else #define RET rts #endif .global __divmodhi4 __divmodhi4: clr.w r0 tst.w r1 ! neg arg1 bpl PU neg.w r1 NU: tst.w r4 bmi NN NP: divxu.w r4,r0 neg.w r0 neg.w r1 RET NN: neg.w r4 divxu.w r4,r0 neg.w r0 ! get rem sign right RET PU: tst.w r4 bpl PP PN: neg.w r4 divxu.w r4,r0 neg.w r1 RET PP: divxu.w r4,r0 ! rem in r0, q in r1 RET picolibc-1.7.4/newlib/libc/machine/h8500/divsi3.c000066400000000000000000000054041414576234500212330ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #define divnorm(num, den, sign) \ { \ if (num < 0) \ { \ num = -num; \ sign = 1; \ } \ else \ { \ sign = 0; \ } \ \ if (den < 0) \ { \ den = - den; \ sign = 1 - sign; \ } \ } unsigned long divmodsi4(int modwanted, unsigned long num, unsigned long den) { long int bit = 1; long int res = 0; long prevden; while (den < num && bit && !(den & (1L<<31))) { den <<=1; bit <<=1; } while (bit) { if (num >= den) { num -= den; res |= bit; } bit >>=1; den >>=1; } if (modwanted) return num; return res; } #define exitdiv(sign, res) if (sign) { res = - res;} return res; long __modsi3 (long numerator, long denominator) { int sign = 0; long dividend; long modul; if (numerator < 0) { numerator = -numerator; sign = 1; } if (denominator < 0) { denominator = -denominator; } modul = divmodsi4 (1, numerator, denominator); if (sign) return - modul; return modul; } long __divsi3 (long numerator, long denominator) { int sign; long dividend; long modul; divnorm (numerator, denominator, sign); dividend = divmodsi4 (0, numerator, denominator); exitdiv (sign, dividend); } long __umodsi3 (unsigned long numerator, unsigned long denominator) { long dividend; long modul; modul= divmodsi4 (1, numerator, denominator); return modul; } long __udivsi3 (unsigned long numerator, unsigned long denominator) { int sign; long dividend; long modul; dividend = divmodsi4 (0, numerator, denominator); return dividend; } #ifdef TEST main () { long int i, j, k, m; for (i = -10000; i < 10000; i += 8) { for (j = -10000; j < 10000; j += 11) { k = i / j; m = __divsi3 (i, j); if (k != m) printf ("fail %d %d %d %d\n", i, j, k, m); } } } #endif picolibc-1.7.4/newlib/libc/machine/h8500/mulhi3.c000066400000000000000000000016251414576234500212340ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ short __mulhi3(short a, short b) { int r; r = 0; while (a) { if (a & 1) { r += b; a>>=1; b<<=1; } } return r; } picolibc-1.7.4/newlib/libc/machine/h8500/mulsi3.c000066400000000000000000000027661414576234500212560ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ typedef union { struct { unsigned int msw; unsigned int lsw; } s; long v; } u; long __mulsi3(u a, u b) { int s; long pp1; long pp2; long r; if (a.s.msw == 0 && b.s.msw == 0) { return (long)a.s.lsw * b.s.lsw; } s = 0; if (a.v < 0) { s = 1; a.v = - a.v; } if (b.v < 0) { s = 1-s; b.v = - b.v; } pp1 = (long)a.s.lsw * b.s.lsw ; pp2 = (long)a.s.lsw * b.s.msw + (long)a.s.msw * b.s.lsw; pp1 += pp2 << 16; if (s) { pp1 = -pp1; } return pp1; } long __mulpsi3(long a, long b) { return a*b; } short __mulhi3(short a, short b) { int r; r = 0; while (a) { if (a & 1) { r += b; } b<<=1; a>>=1; } return r; } picolibc-1.7.4/newlib/libc/machine/h8500/negsi2.c000066400000000000000000000014471414576234500212240ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ long __negsi2(long x) { return ~x+1; } picolibc-1.7.4/newlib/libc/machine/h8500/psi.S000066400000000000000000000064671414576234500206170ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* convert psi to si inplace Note that `fp' below isn't a segment register. It's r6, the frame pointer. */ #if __CODE__==32 #define RET prts #else #define RET rts #endif #define EXTPSISI_SN(r_msw,r_lsw,sp) ; \ .global __extpsisi##r_msw ; \ __extpsisi##r_msw: ; \ mov r_msw,r_lsw ; \ stc sp,r_msw ; \ RET EXTPSISI_SN(r2,r3,dp) EXTPSISI_SN(r4,r5,ep) #define ADDPSI_AR_RN(sr,an,r_msw,r_lsw) \ .global __addpsi##an##r_msw ; \ __addpsi##an##r_msw: ; \ stc sr,@-sp ; \ add an,r_lsw ; \ addx @sp+,r_msw ; \ RET ADDPSI_AR_RN(dp,r2,r0,r1) ADDPSI_AR_RN(dp,r2,r3,r4) ADDPSI_AR_RN(ep,r4,r0,r1) ADDPSI_AR_RN(ep,r4,r1,r2) ADDPSI_AR_RN(ep,r4,r3,r4) ADDPSI_AR_RN(ep,r4,r5,fp) ADDPSI_AR_RN(tp,fp,r0,r1) #define ADDPSI_RN_AR(r_msw,r_lsw,sr,an,t_msw,t_lsw) \ .global __addpsi##r_msw##an ; \ __addpsi##r_msw##an: ; \ mov.w t_msw,@-sp ; \ mov.w t_lsw,@-sp ; \ stc sr,t_msw ; \ mov an,t_lsw ; \ add r_lsw,t_lsw ; \ addx r_msw,t_msw ; \ ldc t_msw,sr ; \ mov.w t_lsw,an ; \ mov.w @sp+,t_lsw ; \ mov.w @sp+,t_msw ; \ RET ADDPSI_RN_AR(r0,r1,dp,r2,r4,r5) ADDPSI_RN_AR(r0,r1,ep,r4,r2,r3) #define EXTPSIHI_RN_RN(rm,r_msw,r_lsw) ; \ .global __extpsihi##rm##r_msw ; \ __extpsihi##rm##r_msw: ; \ mov rm,r_lsw ; \ clr.w r_msw ; \ RET EXTPSIHI_RN_RN(r3,r0,r1) EXTPSIHI_RN_RN(r4,r0,r1) EXTPSIHI_RN_RN(r5,r0,r1) EXTPSIHI_RN_RN(r2,r0,r1) /* ifdefed out, because gcc doesn't like the # character in the above macro. The macro expands into an assembly languange comment anyways, so it serves no useful purpose. */ #if 0 #define EXTPSIHI_RN_SN(rm,r_msw,r_lsw) ; \ .global __extpsihi##rm##r_lsw ; \ __extpsihi##rm##r_lsw: ; \ mov rm,r_lsw ; \ ldc \#0,r_msw ; \ RET EXTPSIHI_RN_SN(r0,dp,r2) EXTPSIHI_RN_SN(r0,ep,r4) EXTPSIHI_RN_SN(r1,dp,r2) EXTPSIHI_RN_SN(r1,ep,r4) EXTPSIHI_RN_SN(r3,dp,r2) EXTPSIHI_RN_SN(r3,ep,r4) EXTPSIHI_RN_SN(r5,dp,r2) EXTPSIHI_RN_SN(r5,ep,r4) EXTPSIHI_RN_SN(r2,ep,r4) #endif #define EXTPSISI_RN(r_msw,r_lsw) ; \ .global __extpsisi##r_msw ; \ __extpsisi##r_msw: ; \ RET EXTPSISI_RN(r0,r1) #define ADDPSI_SA_SB(sa,ra,sb,rb) ; \ .global __addpsi##ra##rb ; \ __addpsi##ra##rb: ; \ mov.w r0,@-sp ; \ mov.w r1,@-sp ; \ stc sa,r0 ; \ stc sb,r1 ; \ add.w ra,rb ; \ addx r0,r1 ; \ ldc r1,sb ; \ mov.w @sp+,r1 ; \ mov.w @sp+,r0 ; \ RET ADDPSI_SA_SB(dp,r2,ep,r4) ADDPSI_SA_SB(ep,r4,dp,r2) ADDPSI_SA_SB(tp,fp,dp,r2) ADDPSI_SA_SB(tp,fp,ep,r4) ADDPSI_SA_SB(dp,r2,dp,r2) .global __addpsir0r0 __addpsir0r0: add.w r1,r1 addx r0,r0 RET picolibc-1.7.4/newlib/libc/machine/h8500/setjmp.S000066400000000000000000000020601414576234500213070ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ ! .file "setjmp.S" .section .text .global _setjmp _setjmp: mov.w r7,@r0+ mov.w r6,@r0+ mov.w r5,@r0+ mov.w @sp,r1 mov.w r1,@r0 clr.w r0 rts .global _longjmp _longjmp: mov.w @r0+,r7 mov.w @r0+,r6 mov.w @r0+,r5 mov.w @r0,r2 mov.w r2,@sp mov.w r1,r0 tst.w r0 bne .L1 mov.w #1,r0 .L1: rts picolibc-1.7.4/newlib/libc/machine/h8500/shifts.c000066400000000000000000000022701414576234500213300ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ int __ashrhi3(int a,int b) { return a>>b; } int __ashlhi3(int a,int b) { return a<>b; } long __ashrsi3(long a, int b) { return a>>b; } long __ashlsi3(long a,int b) { return a<>b; } picolibc-1.7.4/newlib/libc/machine/hppa/000077500000000000000000000000001414576234500200475ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/hppa/DEFS.h000066400000000000000000000106201414576234500207400ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include "pcc_prefix.s" #define BLANK #define BANNER(str) BLANK .VERSION str #define ENTRY(Name) BLANK M_ENTRY (Name,PROF_/**/Name) #define ENTRYC(Name) BLANK M_ENTRYC(Name,PROF_/**/Name) #define EXIT(Name) BLANK M_EXIT (Name,PROF_/**/Name) #define EXITC(Name) BLANK M_EXITC (Name,PROF_/**/Name) #if 0 #define TEXT_SEGMENT \ .SPACE $TEXT$ !\ .SUBSPA $CODE$ #define RO_SEGMENT \ .SPACE $TEXT$ !\ .SUBSPA $lit$ #define DATA_SEGMENT \ .SPACE $PRIVATE$ !\ .SUBSPA $data$ #define BSS_SEGMENT \ .SPACE $PRIVATE$ !\ .SUBSPA $bss$ #else #define TEXT_SEGMENT .text #define RO_SEGMENT .rodata #define DATA_SEGMENT .data #define BSS_SEGMENT .bss #endif #ifdef PROF ; ; All four argument registers are saved into caller save registers ; and restored after the call to _mcount. This is possible because ; the mcount routine does not modify them, so we can. Mcount takes ; 3 arguments; the first argument is the incoming 'rp', the second ; is the starting address of the profiled routine, and the third is ; the address of the PROF label (which is where mcount stores the ; profile data). ; #define M_ENTRY(name,prof) \ TEXT_SEGMENT !\ .label name !\ .PROC !\ .CALLINFO CALLER,SAVE_RP !\ .ENTRY !\ stw rp,-20(sp) !\ ldo 48(sp),sp !\ or arg0,r0,r19 !\ or arg1,r0,r20 !\ or arg2,r0,r21 !\ or arg3,r0,r22 !\ or rp,r0,arg0 !\ ldil L%name,r1 !\ ldo R%name(r1),arg1 !\ addil L%prof-$global$,dp !\ bl _mcount,rp !\ ldo R%prof-$global$(r1),arg2 !\ ldw -68(sp),rp !\ ldo -48(sp),sp !\ or r19,r0,arg0 !\ or r20,r0,arg1 !\ or r21,r0,arg2 !\ or r22,r0,arg3 !\ #define M_ENTRYC(name,prof) \ TEXT_SEGMENT !\ .label name !\ .PROC !\ .CALLINFO CALLER,SAVE_RP !\ .ENTRY !\ stw rp,-20(sp) !\ ldo 128(sp),sp !\ or arg0,r0,r19 !\ or arg1,r0,r20 !\ or arg2,r0,r21 !\ or arg3,r0,r22 !\ or rp,r0,arg0 !\ ldil L%name,r1 !\ ldo R%name(r1),arg1 !\ addil L%prof-$global$,dp !\ bl _mcount,rp !\ ldo R%prof-$global$(r1),arg2 !\ ldw -148(sp),rp !\ or r19,r0,arg0 !\ or r20,r0,arg1 !\ or r21,r0,arg2 !\ or r22,r0,arg3 !\ ; ; The HPUX profiler uses a word for each entrypoint to store the profiling ; information. The setup code passes the address to the _mcount routine. ; The EXIT macro defines a label (PROF_foo), and a word of storage. ; #define M_EXIT(name,prof) \ bv,n r0(rp) !\ .EXIT !\ .PROCEND !\ .EXPORT name,ENTRY !\ DATA_SEGMENT !\ .label prof !\ .WORD 0 !\ .IMPORT $global$,DATA !\ .IMPORT _mcount,CODE #define M_EXITC(name,prof) \ bv r0(rp) !\ ldo -128(sp),sp !\ .EXIT !\ .PROCEND !\ .EXPORT name,ENTRY !\ DATA_SEGMENT !\ .label prof !\ .WORD 0 !\ .IMPORT $global$,DATA !\ .IMPORT _mcount,CODE #else /* NOT profiling */ #define M_ENTRY(name,prof) \ TEXT_SEGMENT !\ .label name !\ .PROC !\ .CALLINFO !\ .ENTRY #define M_ENTRYC(name,prof) \ TEXT_SEGMENT !\ .label name !\ .PROC !\ .CALLINFO CALLER,SAVE_RP !\ .ENTRY !\ stw rp,-20(sp) !\ ldo 128(sp),sp #define M_EXIT(name,prof) \ bv,n r0(rp) !\ .EXIT !\ .PROCEND !\ .EXPORT name,ENTRY #define M_EXITC(name,prof) \ ldw -148(sp),rp !\ bv r0(rp) !\ ldo -128(sp),sp !\ .EXIT !\ .PROCEND !\ .EXPORT name,ENTRY #define ENTRY(Name) BLANK M_ENTRY (Name,PROF_/**/Name) #define ENTRYC(Name) BLANK M_ENTRYC(Name,PROF_/**/Name) #define EXIT(Name) BLANK M_EXIT (Name,PROF_/**/Name) #define EXITC(Name) BLANK M_EXITC (Name,PROF_/**/Name) #endif picolibc-1.7.4/newlib/libc/machine/hppa/memchr.S000066400000000000000000000024641414576234500214540ustar00rootroot00000000000000/* * (c) Copyright 1986 HEWLETT-PACKARD COMPANY * * To anyone who acknowledges that this file is provided "AS IS" * without any express or implied warranty: * permission to use, copy, modify, and distribute this file * for any purpose is hereby granted without fee, provided that * the above copyright notice and this notice appears in all * copies, and that the name of Hewlett-Packard Company not be * used in advertising or publicity pertaining to distribution * of the software without specific, written prior permission. * Hewlett-Packard Company makes no representations about the * suitability of this software for any purpose. */ /* SPECTRUM_ID: @(#)memchr.s 37.4 86/04/23 */ /* * memchr(s, c, n) * * returns pointer to first occurrence of char c * in first n characters of memory area s, * or null if c does not occur. */ #include "DEFS.h" #define FROM arg0 #define CHAR arg1 #define COUNT arg2 #define TEMP1 r19 ENTRY(memchr) comb,<= COUNT,r0,memchrexit /* return if count is zero */ copy r0,ret0 /* null if c not found in n chars */ depi 0,23,24,CHAR /* make char unsigned */ ldbs,ma 1(FROM),TEMP1 memchrloop: comb,=,n TEMP1,CHAR,memchrequal addib,<> -1,COUNT,memchrloop ldbs,ma 1(FROM),TEMP1 b,n memchrexit memchrequal: ldo -1(FROM),ret0 memchrexit: EXIT(memchr) picolibc-1.7.4/newlib/libc/machine/hppa/memcmp.S000066400000000000000000000157041414576234500214600ustar00rootroot00000000000000/* * (c) Copyright 1986 HEWLETT-PACKARD COMPANY * * To anyone who acknowledges that this file is provided "AS IS" * without any express or implied warranty: * permission to use, copy, modify, and distribute this file * for any purpose is hereby granted without fee, provided that * the above copyright notice and this notice appears in all * copies, and that the name of Hewlett-Packard Company not be * used in advertising or publicity pertaining to distribution * of the software without specific, written prior permission. * Hewlett-Packard Company makes no representations about the * suitability of this software for any purpose. */ /* memcmp(s1, s2, n) */ /* returns integer: < 0 iff s1 lexicographically less than s2 */ /* > 0 iff s1 lexicographically greater than s2 */ /* = 0 iff s1 lexicographically equal to s2 */ /* = 0 iff s1 lexicographically equal to s2 */ /* quit after n charachters */ #ifndef _NAMESPACE_CLEAN #define NOSECDEF /* prevents _memcmp from becoming primary entry */ #endif #include "DEFS.h" #define s1 26 #define s2 25 #define tmp1 19 #define s2word 20 #define tmp3 21 #define tmp7 22 #define s1word 29 #define save 1 #define tmp6 23 #define tmp5 28 #define count 24 ENTRY(memcmp) combt,<,n r0,count,search /*N <= 0 yields equality */ b done /**/ copy 0,ret0 /*return 0 (DELAY SLOT) */ search: combf,=,n s1,s2,findout /*s1 != s2? */ b done copy 0,ret0 /*return 0 (delay slot) */ findout: comibf,=,n 0,s1,checks1 /*s1 == NULL? */ ldbs 0(0,s2),ret0 /**/ b done /*quit */ sub 0,ret0,ret0 /*ret0 <- -*s2 */ checks1: comibf,=,n 0,s2,checkitout /*s2 == NULL? */ b done /* quit */ ldbs 0(0,s1),28 /* return *s1 */ checkitout: extru s2,31,2,tmp1 /* Extract the low two bits of the s2. */ extru s1,31,2,tmp5 /* Extract the low two bits of the s1 */ sub,= tmp5,tmp1,tmp3 /* Are s1 & s2 aligned with each other? */ b not_aligned /* It's more complicated (not_aligned) */ dep 0,31,2,s1 /* Compute word address of s1 (DELAY SLOT) */ dep 0,31,2,s2 /* Compute word address of s2 */ ldwm 4(0,s1),s1word /* get next s1 word s1+=4 */ combt,= tmp5,r0,skipmask /* skip masking, if we can */ ldwm 4(0,s2),s2word /* get next s2 word s2+=4 (DELAY SLOT) */ add tmp5,count,count /* bump count by the number of bytes */ /* we are going to mask */ sh3add tmp5,r0,save /* save now has number of bits to mask */ mtctl save,11 zvdepi -2,32,save /* load save with proper mask */ or save,s1word,s1word /* mask s1word (s1) */ or save,s2word,s2word /* mask s2word (s2) */ skipmask: combt,=,n s1word,s2word,checkN /* We may be done */ checkbyte: extru s1word,7,8,tmp3 /* get first byte (character) */ ckbyte2: extru s2word,7,8,tmp7 /* get first byte (character) */ combf,= tmp3,tmp7,done /* quit if first byte is not equal */ sub tmp3,tmp7,ret0 /* return difference (delay slot) */ addibt,<=,n -1,count,done /* have we checked N chars? ret0 == 0 */ extru s1word,15,8,tmp3 /* get second byte (character) */ extru s2word,15,8,tmp7 /* get second byte (character) */ combf,= tmp3,tmp7,done /* quit if second byte is not equal */ sub tmp3,tmp7,ret0 /* return difference (delay slot) */ addibt,<=,n -1,count,done /* have we checked N chars? */ extru s1word,23,8,tmp3 /* get third byte (character) */ extru s2word,23,8,tmp7 /* get third byte (character) */ combf,= tmp3,tmp7,done /* done if third byte is not equal */ sub tmp3,tmp7,ret0 /* return difference (delay slot) */ addibt,<=,n -1,count,done /* have we checked N chars? */ extru s1word,31,8,tmp3 /* get last byte (character) */ extru s2word,31,8,tmp7 /* get last byte (character) */ b done /* if we reach this point we know that */ sub tmp3,tmp7,ret0 /* the last character in the word is */ /* where the difference is, so return */ /* the difference and we're outta here */ checkN: addibt,<=,n -4,count,zero /* have we checked N chars? */ ldwm 4(0,s2),s2word /* get next s2 word s2+=4 */ b skipmask /* keep checking */ ldwm 4(0,s1),s1word /* get next s1 word s1+=4 */ not_aligned: dep r0,31,2,s2 /* Compute word address of s2 */ combt,<,n r0,tmp3,shifts1 /* Do we shift s1 or s2 */ sh3add tmp3,r0,tmp3 /* eight bits per byte so mul by 8 */ ldwm 4(0,s1),s1word /* get first word of s1 */ ldwm 4(0,s2),s2word /* get first word or s2 */ combt,=,n r0,tmp5,masks2 /* Do we need to mask beginning of s1 */ add tmp5,count,count /* bump count by the number of bytes */ /* we are going to mask */ sh3add tmp5,r0,save /* save now has number of bits to mask */ mtctl save,11 zvdepi -2,32,save /* load save with proper mask */ or save,s1word,s1word /**/ masks2: sh3add tmp1,r0,save /* save now has number of bits to mask */ mtctl save,11 zvdepi -2,32,save /* load save with proper mask */ or save,s2word,s2word /**/ subi 4,tmp1,tmp1 /* tmp1 now has the number of byte that */ /* are valid in s2word before the vshd */ mtctl tmp3,11 /* Move shift amount to CR11 */ more: combt,<=,n count,tmp1,chunk1 /* Can we do the vshd? */ ldwm 4(0,s2),tmp7 /* load second word to enable us to shift */ vshd s2word,tmp7,s2word /**/ combf,=,n s1word,s2word,ckbyte2 /**/ extru s1word,7,8,tmp3 /* get first byte (DELAY SLOT) */ addibt,<=,n -4,count,zero /* have we checked N chars? */ copy tmp7,s2word /**/ b more /* keep checking */ ldwm 4(0,s1),s1word /* get next s1 (DELAY SLOT) */ chunk1: vshd s2word,r0,s2word /* do an arithmetic shift left to position data */ b ckbyte2 /**/ extru s1word,7,8,tmp3 /**/ shifts1: sh3add tmp3,r0,tmp3 /* eight bits per byte so mul by 8 */ sub r0,tmp3,tmp3 /* Get negative value for left shift */ dep r0,31,2,s2 /* Compute word address of s2 */ ldwm 4(0,s2),s2word /* get first word of s2 */ ldwm 4(0,s1),s1word /* get first word or s1 */ combt,=,n r0,tmp1,masks1 /*Do we need to mask beginning of s2 */ add tmp1,count,count /*bump count by the number of bytes */ /* we are going to mask */ sh3add tmp1,r0,save /*save now has number of bits to mask */ mtctl save,11 zvdepi -2,32,save /*load save with proper mask */ or save,s2word,s2word /**/ masks1: sh3add tmp5,r0,save /*save now has number of bits to mask */ mtctl save,11 zvdepi -2,32,save /*load save with proper mask */ or save,s1word,s1word /**/ subi 4,tmp5,tmp5 /*tmp5 now has the number of byte that */ /*are valid in s1word before the vshd */ mtctl tmp3,11 /*Move shift amount to CR11 */ more1: combt,<=,n count,tmp5,chunk2 /*Can we do the vshd? */ ldwm 4(0,s1),tmp7 /*load second word to enable us to shift */ vshd s1word,tmp7,s1word /**/ combf,=,n s2word,s1word,ckbyte2 /**/ extru s1word,7,8,tmp3 /*get first byte (DELAY SLOT) */ addibt,<=,n -4,count,zero /*have we checked N chars? */ copy tmp7,s1word /**/ b more1 /*keep checking */ ldwm 4(0,s2),s2word /*get next s2 (DELAY SLOT) */ chunk2: vshd s1word,r0,s1word /**/ b ckbyte2 /**/ extru s1word,7,8,tmp3 /**/ zero: copy r0,ret0 done: EXIT(memcmp) picolibc-1.7.4/newlib/libc/machine/hppa/memcpy.S000066400000000000000000000146571414576234500215020ustar00rootroot00000000000000/* * (c) Copyright 1986 HEWLETT-PACKARD COMPANY * * To anyone who acknowledges that this file is provided "AS IS" * without any express or implied warranty: * permission to use, copy, modify, and distribute this file * for any purpose is hereby granted without fee, provided that * the above copyright notice and this notice appears in all * copies, and that the name of Hewlett-Packard Company not be * used in advertising or publicity pertaining to distribution * of the software without specific, written prior permission. * Hewlett-Packard Company makes no representations about the * suitability of this software for any purpose. */ /* HPUX_ID: @(#) $Revision$ */ /* * memcpy(s1, s2, n) * * Copy n characters from s2 to s1; returns s1. */ #define d_addr arg0 #define s_addr arg1 #define count arg2 #define tmp5 arg3 #define tmp1 r19 #define tmp2 r20 #define tmp3 r21 #define tmp4 r22 #define tmp6 r31 #include "DEFS.h" ENTRY(memcpy) comib,>= 5,count,byteloop /* If count is <= 6 don't get fancy.*/ movb,=,n d_addr,ret0,done /* The return value is defined to be the value of d_addr. DELAY SLOT */ /* if d_addr is null then exit */ extru s_addr,31,2,tmp1 /* Extract the low two bits of the source address. */ extru d_addr,31,2,tmp2 /* Extract the low two bits of the destination address. */ add count,tmp2,count /* pre increment the count to adjust for alignment of s1 */ comb,<> tmp2,tmp1,not_aligned /* see if s1 is aligned w.r.t. s2. */ dep 0,31,2,s_addr /* Compute the word address of the source. DELAY SLOT. */ /* aligned */ /* We will now begin the 16 byte at a time word move if count >= 16 ! */ /* Else we will branch to the 4 byte-at-a time word move ! */ addibt,<,n -16,count,chekchunk /* If count < 16 then we can't move 16 byte chunks ! */ /* actually we can legally move 13 or more bytes on the first loop. */ /* These loads and stores are done so as to prevent processor interlock. */ chunks: ldwm 16(0,s_addr),tmp1 /* tmp1 = *s_addr s_addr += 16 */ ldw -12(0,s_addr),tmp2 /* tmp2 = 2nd word */ ldw -8(0,s_addr),tmp3 /* tmp3 = 3rd word */ ldw -4(0,s_addr),tmp4 /* tmp4 = 4th word */ /* Now store the results ! */ stbys,b,m tmp1,4(0,d_addr) /* tmp1 = 1st word stored d_addr += 16 also take care of front porch. */ stwm tmp2,4(0,d_addr) /* tmp2 = 2nd word stored. */ stwm tmp3,4(0,d_addr) /* tmp3 = 3rd word stored. */ addibf,< -16,count,chunks /* If count is still >= 16 do another loop. */ stwm tmp4,4(0,d_addr) /* tmp4 = 4th word stored. DELAY SLOT */ chekchunk: addibt,<,n 12,count,back_porch /* since the count is already decremented by -16 we're testing */ /* to see if there are at least 4 bytes left ? */ subchunk: ldws,ma 4(s_addr),tmp1 /* tmp1 = *s_addr++ */ addibf,< -4,count,subchunk /* count -= 4 */ stbys,b,m tmp1,4(d_addr) /* *d_addr++ = tmp1 */ back_porch: addibt,=,n 4,count,done /* if count = 0 we're, of course, done ! */ ldws 0(s_addr),tmp1 /* load up the back_porch */ add d_addr,count,d_addr/* final store address is +1 too high ! */ bv 0(r2) /* return--were done. */ stbys,e tmp1,0(d_addr) /* kerplunk! whew ! */ /* Begin non_aligned code. (no refrence to politics) */ not_aligned: sub,>= tmp2,tmp1,tmp3 /* compute the shift quantity again and skip the load if tmp2 > tmp1. */ ldwm 4(0,s_addr),tmp1 /* load up the first word from the source. tmp1 = *s_addr++ */ zdep tmp3,28,29,tmp4 /* compute the number of bits to shift based on the number of bytes above. */ mtctl tmp4,11 /* load the shift count into cr11 = shift count register. */ addibt,<,n -16,count,chkchnk2 /* first step in pre adjustment of count for looping. */ chunk2: ldwm 16(0,s_addr),tmp2 /* get either first or second word . tmp2 = *s_addr++ */ ldw -12(s_addr),tmp3 ldw -8(s_addr),tmp4 ldw -4(s_addr),tmp5 vshd tmp1,tmp2,tmp6 /* position data ! */ stbys,b,m tmp6,4(0,d_addr) /* store ! */ vshd tmp2,tmp3,tmp6 /* position data ! */ stwm tmp6,4(0,d_addr) /* store ! */ vshd tmp3,tmp4,tmp6 /* position data ! */ stwm tmp6,4(0,d_addr) /* store ! */ vshd tmp4,tmp5,tmp6 /* position data ! */ stwm tmp6,4(0,d_addr) /* store the data ! */ addibf,< -16,count,chunk2 /* If count is still >= 16 do another loop. */ copy tmp5,tmp1 chkchnk2: addibt,<,n 12,count,bp_0 /* if we don't have 4 bytes left then do the back porch (bp_0) */ subchnk2: ldwm 4(0,s_addr),tmp2 /* get next word ! */ vshd tmp1,tmp2,tmp3 /* position data ! */ addibt,< -4,count,bp_1 /* decrement count and when count < 4 goto back_porch (bp_1) */ stbys,b,m tmp3,4(0,d_addr) /* store ! */ ldwm 4(0,s_addr),tmp1 /* get 4th word ! */ vshd tmp2,tmp1,tmp3 /* position data ! */ addib,>= -4,count,subchnk2 /* decrement count and when count <= 4 go to back porch (bp_2) */ stbys,b,m tmp3,4(0,d_addr) /* store the data ! */ bp_0: copy tmp1,tmp2 /* switch registers used in the shift process. */ bp_1: addibt,<=,n 4,count,done /* if count = -4 this implies that count = 0 -> done */ add d_addr,count,d_addr /* bump destination address to be +1 too high ! */ mfctl sar,tmp3 /* suppress final ldwm unless result used */ extru tmp3,28,2,tmp3 /* convert bitshift to byteshift */ sub,<= count,tmp3,r0 /* bytes unused if (count-byteshift <= 0*/ ldwm 4(0,s_addr),tmp1 /* get final word ! */ vshd tmp2,tmp1,tmp3 /* position data ! */ bv 0(r2) /* return */ stbys,e tmp3,0(0,d_addr) /* store the data ! */ /* here we do ye old byte-at-a-time moves. */ byteloop: comb,>=,n 0,count,done encore: ldbs,ma 1(s_addr),tmp1 addibf,= -1,count,encore stbs,ma tmp1,1(d_addr) done: EXIT(memcpy) picolibc-1.7.4/newlib/libc/machine/hppa/memset.S000066400000000000000000000046601414576234500214730ustar00rootroot00000000000000/* * (c) Copyright 1986 HEWLETT-PACKARD COMPANY * * To anyone who acknowledges that this file is provided "AS IS" * without any express or implied warranty: * permission to use, copy, modify, and distribute this file * for any purpose is hereby granted without fee, provided that * the above copyright notice and this notice appears in all * copies, and that the name of Hewlett-Packard Company not be * used in advertising or publicity pertaining to distribution * of the software without specific, written prior permission. * Hewlett-Packard Company makes no representations about the * suitability of this software for any purpose. */ /* SPECTRUM_ID: @(#)memset.s 37.4 86/08/25 */ /* * memset(s, c, n) * * Sets first n chars in memory area s to value of character c. * Returns s. */ #ifndef _NAMESPACE_CLEAN #define NOSECDEF /* prevent _memset from being defined as entry */ #endif #include "DEFS.h" #define TO arg0 #define FILLCHAR arg1 #define COUNT arg2 #define TMP r31 ENTRY(memset) comb,<= COUNT,r0,msexit /* return if count not positive */ copy TO,ret0 /* return value is start of copy */ comibf,<,n 5,COUNT,msbyteloop /* be straightforward */ dep FILLCHAR,23,8,FILLCHAR /* dup low byte */ dep FILLCHAR,15,16,FILLCHAR /* into high bytes */ add TO,COUNT,TMP /* TMP points just past fill area */ stbys,m FILLCHAR,0(TO) /* fill out first word */ /* * If we're pointing to high-order byte, no fill will happen, * but permissions will be checked. We don't want this (we * might be pointing at the beginning of a protected region), * so we branch around stbys if neither low bits are set. */ bb,<,n TMP,31,filend /* if low bit is set, stbys */ bb,>=,n TMP,30,endfil /* if next lowest bit isn't set */ /* (and lowest isn't, either) */ /* do not stbys */ filend: stbys,m,e FILLCHAR,0(TMP) /* fill out the last */ endfil: addi 4, TO, TO sub TMP,TO,COUNT /* will now divide by 4 */ comb,=,n COUNT,r0,msexit /* If count is zero ret. */ extru,<> COUNT,31,4,r1 b msquadloop depi 0,31,4,COUNT /* will now divide by 16 */ mswordloop: addib,<> -4,r1,mswordloop stws,ma FILLCHAR,4(TO) comb,=,n COUNT,r0,msexit /* If count is zero ret. */ msquadloop: stws,ma FILLCHAR,4(TO) stws,ma FILLCHAR,4(TO) stws,ma FILLCHAR,4(TO) addib,<> -16,COUNT,msquadloop stws,ma FILLCHAR,4(TO) b,n msexit msbyteloop: addib,<> -1,COUNT,msbyteloop stbs,ma FILLCHAR,1(TO) msexit: EXIT(memset) picolibc-1.7.4/newlib/libc/machine/hppa/pcc_prefix.s000066400000000000000000000162201414576234500223560ustar00rootroot00000000000000; ; (c) Copyright 1986 HEWLETT-PACKARD COMPANY ; ; To anyone who acknowledges that this file is provided "AS IS" ; without any express or implied warranty: ; permission to use, copy, modify, and distribute this file ; for any purpose is hereby granted without fee, provided that ; the above copyright notice and this notice appears in all ; copies, and that the name of Hewlett-Packard Company not be ; used in advertising or publicity pertaining to distribution ; of the software without specific, written prior permission. ; Hewlett-Packard Company makes no representations about the ; suitability of this software for any purpose. ; ; Standard Hardware Register Definitions for Use with Assembler ; version A.08.06 ; - fr16-31 added at Utah ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; Hardware General Registers r0: .equ 0 r1: .equ 1 r2: .equ 2 r3: .equ 3 r4: .equ 4 r5: .equ 5 r6: .equ 6 r7: .equ 7 r8: .equ 8 r9: .equ 9 r10: .equ 10 r11: .equ 11 r12: .equ 12 r13: .equ 13 r14: .equ 14 r15: .equ 15 r16: .equ 16 r17: .equ 17 r18: .equ 18 r19: .equ 19 r20: .equ 20 r21: .equ 21 r22: .equ 22 r23: .equ 23 r24: .equ 24 r25: .equ 25 r26: .equ 26 r27: .equ 27 r28: .equ 28 r29: .equ 29 r30: .equ 30 r31: .equ 31 ; Hardware Space Registers sr0: .equ 0 sr1: .equ 1 sr2: .equ 2 sr3: .equ 3 sr4: .equ 4 sr5: .equ 5 sr6: .equ 6 sr7: .equ 7 ; Hardware Floating Point Registers fr0: .equ 0 fr1: .equ 1 fr2: .equ 2 fr3: .equ 3 fr4: .equ 4 fr5: .equ 5 fr6: .equ 6 fr7: .equ 7 fr8: .equ 8 fr9: .equ 9 fr10: .equ 10 fr11: .equ 11 fr12: .equ 12 fr13: .equ 13 fr14: .equ 14 fr15: .equ 15 fr16: .equ 16 fr17: .equ 17 fr18: .equ 18 fr19: .equ 19 fr20: .equ 20 fr21: .equ 21 fr22: .equ 22 fr23: .equ 23 fr24: .equ 24 fr25: .equ 25 fr26: .equ 26 fr27: .equ 27 fr28: .equ 28 fr29: .equ 29 fr30: .equ 30 fr31: .equ 31 ; Hardware Control Registers cr0: .equ 0 rctr: .equ 0 ; Recovery Counter Register cr8: .equ 8 ; Protection ID 1 pidr1: .equ 8 cr9: .equ 9 ; Protection ID 2 pidr2: .equ 9 cr10: .equ 10 ccr: .equ 10 ; Coprocessor Confiquration Register cr11: .equ 11 sar: .equ 11 ; Shift Amount Register cr12: .equ 12 pidr3: .equ 12 ; Protection ID 3 cr13: .equ 13 pidr4: .equ 13 ; Protection ID 4 cr14: .equ 14 iva: .equ 14 ; Interrupt Vector Address cr15: .equ 15 eiem: .equ 15 ; External Interrupt Enable Mask cr16: .equ 16 itmr: .equ 16 ; Interval Timer cr17: .equ 17 pcsq: .equ 17 ; Program Counter Space queue cr18: .equ 18 pcoq: .equ 18 ; Program Counter Offset queue cr19: .equ 19 iir: .equ 19 ; Interruption Instruction Register cr20: .equ 20 isr: .equ 20 ; Interruption Space Register cr21: .equ 21 ior: .equ 21 ; Interruption Offset Register cr22: .equ 22 ipsw: .equ 22 ; Interrpution Processor Status Word cr23: .equ 23 eirr: .equ 23 ; External Interrupt Request cr24: .equ 24 ppda: .equ 24 ; Physcial Page Directory Address tr0: .equ 24 ; Temporary register 0 cr25: .equ 25 hta: .equ 25 ; Hash Table Address tr1: .equ 25 ; Temporary register 1 cr26: .equ 26 tr2: .equ 26 ; Temporary register 2 cr27: .equ 27 tr3: .equ 27 ; Temporary register 3 cr28: .equ 28 tr4: .equ 28 ; Temporary register 4 cr29: .equ 29 tr5: .equ 29 ; Temporary register 5 cr30: .equ 30 tr6: .equ 30 ; Temporary register 6 cr31: .equ 31 tr7: .equ 31 ; Temporary register 7 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; Procedure Call Convention ~ ; Register Definitions for Use with Assembler ~ ; version A.08.06 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; Software Architecture General Registers rp: .equ r2 ; return pointer mrp: .equ r31 ; millicode return pointer ret0: .equ r28 ; return value ret1: .equ r29 ; return value (high part of double) sl: .equ r29 ; static link sp: .equ r30 ; stack pointer dp: .equ r27 ; data pointer arg0: .equ r26 ; argument arg1: .equ r25 ; argument or high part of double argument arg2: .equ r24 ; argument arg3: .equ r23 ; argument or high part of double argument ;_____________________________________________________________________________ ; Software Architecture Space Registers ; sr0 ; return link form BLE sret: .equ sr1 ; return value sarg: .equ sr1 ; argument ; sr4 ; PC SPACE tracker ; sr5 ; process private data ;_____________________________________________________________________________ ; Software Architecture Pseudo Registers previous_sp: .equ 64 ; old stack pointer (locates previous frame) #if 0 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; Standard space and subspace definitions. version A.08.06 ; These are generally suitable for programs on HP_UX and HPE. ; Statements commented out are used when building such things as operating ; system kernels. ;;;;;;;;;;;;;;;; .SPACE $TEXT$, SPNUM=0,SORT=8 ; .subspa $FIRST$, QUAD=0,ALIGN=2048,ACCESS=0x2c,SORT=4,FIRST ; .subspa $REAL$, QUAD=0,ALIGN=8,ACCESS=0x2c,SORT=4,FIRST,LOCK .subspa $MILLICODE$, QUAD=0,ALIGN=8,ACCESS=0x2c,SORT=8 .subspa $LIT$, QUAD=0,ALIGN=8,ACCESS=0x2c,SORT=16 .subspa $CODE$, QUAD=0,ALIGN=8,ACCESS=0x2c,SORT=24 ; .subspa $UNWIND$, QUAD=0,ALIGN=4,ACCESS=0x2c,SORT=64 ; .subspa $RECOVER$, QUAD=0,ALIGN=4,ACCESS=0x2c,SORT=80 ; .subspa $RESERVED$, QUAD=0,ALIGN=8,ACCESS=0x73,SORT=82 ; .subspa $GATE$, QUAD=0,ALIGN=8,ACCESS=0x4c,SORT=84,CODE_ONLY ; Additional code subspaces should have ALIGN=8 for an interspace BV ; and should have SORT=24. ; ; For an incomplete executable (program bound to shared libraries), ; sort keys $GLOBAL$ -1 and $GLOBAL$ -2 are reserved for the $DLT$ ; and $PLT$ subspaces respectively. ;;;;;;;;;;;;;;; .SPACE $PRIVATE$, SPNUM=1,PRIVATE,SORT=16 .subspa $GLOBAL$, QUAD=1,ALIGN=8,ACCESS=0x1f,SORT=40 .import $global$ .subspa $SHORTDATA$, QUAD=1,ALIGN=8,ACCESS=0x1f,SORT=24 .subspa $DATA$, QUAD=1,ALIGN=8,ACCESS=0x1f,SORT=16 .subspa $PFA_COUNTER$, QUAD=1,ALIGN=4,ACCESS=0x1f,SORT=8 .subspa $SHORTBSS$, QUAD=1,ALIGN=8,ACCESS=0x1f,SORT=80,ZERO .subspa $BSS$, QUAD=1,ALIGN=8,ACCESS=0x1f,SORT=82,ZERO ; .subspa $PCB$, QUAD=1,ALIGN=8,ACCESS=0x10,SORT=82 ; .subspa $STACK$, QUAD=1,ALIGN=8,ACCESS=0x1f,SORT=82 ; .subspa $HEAP$, QUAD=1,ALIGN=8,ACCESS=0x1f,SORT=82 ;;;;;;;;;;;;;;;; ; .SPACE $PFA$, SPNUM=0,PRIVATE,UNLOADABLE,SORT=64 ; .subspa $PFA_ADDRESS$, ALIGN=4,ACCESS=0x2c,UNLOADABLE ;;;;;;;;;;;;;;;; ; .SPACE $DEBUG$, SPNUM=2,PRIVATE,UNLOADABLE,SORT=80 ; .subspa $HEADER$, ALIGN=4,ACCESS=0,UNLOADABLE,FIRST ; .subspa $GNTT$, ALIGN=4,ACCESS=0,UNLOADABLE ; .subspa $LNTT$, ALIGN=4,ACCESS=0,UNLOADABLE ; .subspa $SLT$, ALIGN=4,ACCESS=0,UNLOADABLE ; .subspa $VT$, ALIGN=4,ACCESS=0,UNLOADABLE ; To satisfy the copyright terms each .o will have a reference ; the the actual copyright. This will force the actual copyright ; message to be brought in from libgloss/hp-milli.s .space $PRIVATE$ .subspa $DATA$ #else .data #endif .import ___hp_free_copyright,data L$copyright .word ___hp_free_copyright picolibc-1.7.4/newlib/libc/machine/hppa/setjmp.S000066400000000000000000000101371414576234500214770ustar00rootroot00000000000000/* Copyright (c) 1995, 2002 Red Hat Incorporated. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * The name of Red Hat Incorporated may not be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Note I don't know an easy way to get the FP version into the traditional C library and the non-FP version into the soft-float library. Maybe we'll have to have -msoft-float trigger something like -DSOFT_FLOAT if this issue ever arises. */ #include "DEFS.h" #if 0 .SPACE $PRIVATE$ .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31 .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82 .SPACE $TEXT$ .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44 .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY .IMPORT $global$,DATA .IMPORT $$dyncall,MILLICODE ; gcc_compiled.: #endif TEXT_SEGMENT .align 4 .EXPORT setjmp,ENTRY,PRIV_LEV=3,ARGW0=GR,RTNVAL=GR setjmp .PROC .CALLINFO FRAME=64,NO_CALLS,SAVE_SP,ENTRY_GR=3 .ENTRY stwm %r30,4(%r26) stwm %r2,4(%r26) stwm %r3,4(%r26) stwm %r4,4(%r26) stwm %r5,4(%r26) stwm %r6,4(%r26) stwm %r7,4(%r26) stwm %r8,4(%r26) stwm %r9,4(%r26) stwm %r10,4(%r26) stwm %r11,4(%r26) stwm %r12,4(%r26) stwm %r13,4(%r26) stwm %r14,4(%r26) stwm %r15,4(%r26) stwm %r16,4(%r26) stwm %r17,4(%r26) stwm %r18,4(%r26) stwm %r27,4(%r26) #ifdef FP ; jmp_buf may only have a 4 byte alignment, so handle FP stores ; very carefully. fstds %fr12,-16(%r30) ldw -16(%r30),%r28 stwm %r28,4(%r26) ldw -12(%r30),%r28 stwm %r28,4(%r26) fstds %fr13,-16(%r30) ldw -16(%r30),%r28 stwm %r28,4(%r26) ldw -12(%r30),%r28 stwm %r28,4(%r26) fstds %fr14,-16(%r30) ldw -16(%r30),%r28 stwm %r28,4(%r26) ldw -12(%r30),%r28 stwm %r28,4(%r26) fstds %fr15,-16(%r30) ldw -16(%r30),%r28 stwm %r28,4(%r26) ldw -12(%r30),%r28 stwm %r28,4(%r26) #endif bv 0(%r2) copy %r0,%r28 .EXIT .PROCEND .align 4 .EXPORT longjmp,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,RTNVAL=GR longjmp .PROC .CALLINFO FRAME=64,NO_CALLS,SAVE_SP,ENTRY_GR=3 .ENTRY ldwm 4(%r26),%r30 ldwm 4(%r26),%r2 ldwm 4(%r26),%r3 ldwm 4(%r26),%r4 ldwm 4(%r26),%r5 ldwm 4(%r26),%r6 ldwm 4(%r26),%r7 ldwm 4(%r26),%r8 ldwm 4(%r26),%r9 ldwm 4(%r26),%r10 ldwm 4(%r26),%r11 ldwm 4(%r26),%r12 ldwm 4(%r26),%r13 ldwm 4(%r26),%r14 ldwm 4(%r26),%r15 ldwm 4(%r26),%r16 ldwm 4(%r26),%r17 ldwm 4(%r26),%r18 ldwm 4(%r26),%r27 #ifdef FP ldwm 4(%r26),%r28 stw %r28,-16(%r30) ldwm 4(%r26),%r28 stw %r28,-12(%r30) fldds -16(%r30),%fr12 ldwm 4(%r26),%r28 stw %r28,-16(%r30) ldwm 4(%r26),%r28 stw %r28,-12(%r30) fldds -16(%r30),%fr13 ldwm 4(%r26),%r28 stw %r28,-16(%r30) ldwm 4(%r26),%r28 stw %r28,-12(%r30) fldds -16(%r30),%fr14 ldwm 4(%r26),%r28 stw %r28,-16(%r30) ldwm 4(%r26),%r28 stw %r28,-12(%r30) fldds -16(%r30),%fr15 #endif comclr,<> %r0,%r25,%r0 ldi 1,%r25 bv 0(%r2) copy %r25,%r28 .EXIT .PROCEND picolibc-1.7.4/newlib/libc/machine/hppa/strcat.S000066400000000000000000000122111414576234500214700ustar00rootroot00000000000000/* * (c) Copyright 1986 HEWLETT-PACKARD COMPANY * * To anyone who acknowledges that this file is provided "AS IS" * without any express or implied warranty: * permission to use, copy, modify, and distribute this file * for any purpose is hereby granted without fee, provided that * the above copyright notice and this notice appears in all * copies, and that the name of Hewlett-Packard Company not be * used in advertising or publicity pertaining to distribution * of the software without specific, written prior permission. * Hewlett-Packard Company makes no representations about the * suitability of this software for any purpose. */ /* HPUX_ID: @(#) $Revision$ */ /* * strcat(s1, s2) * * Concatenate s2 on the end of s1. S1's space must be large enough. * Return s1. */ #include "DEFS.h" #define d_addr r26 #define s_addr r25 #define tmp6 r24 #define tmp1 r19 #define tmp2 r20 #define tmp3 r21 #define tmp4 r22 #define tmp5 arg3 #define save r1 ENTRY(strcat) comb,= r0,s_addr,done /* quit if s2=NULL */ copy d_addr,ret0 /* The return value is the value of d_addr. DELAY SLOT*/ /* First look for end of s1 (d_addr) */ extru d_addr,31,2,tmp1 /* Extract the low two bits of the dest address. */ combt,= tmp1,r0,dont_mask dep 0,31,2,d_addr /*set word alignment */ ldwm 4(d_addr),tmp2 sh3add tmp1,r0,save /* build mask based on tmp1 */ mtctl save,11 zvdepi -2,32,save or save,tmp2,tmp2 uxor,nbz tmp2,r0,save search: b,n found_end /* nullified under uxor conditions above and below */ dont_mask: ldwm 4(d_addr),tmp2 comib,tr r0,r0,search uxor,nbz tmp2,r0,save found_end: /* at this point d_addr points to word */ extru,<> save,7,8,r0 /* following word with null */ addib,tr,n -4,d_addr,begin_copy /*set d_addr to end of s1 */ extru,<> save,15,8,r0 addib,tr,n -3,d_addr,begin_copy extru,<> save,23,8,r0 addi -1,d_addr,d_addr addi -1,d_addr,d_addr begin_copy: extru s_addr,31,2,tmp1 /* Extract the low two bits of the source address. */ extru d_addr,31,2,tmp6 /* Extract the low two bits of the destination address. */ sub,= tmp6,tmp1,tmp3 /* Compute the shift quantity and don't branch if tmp6=tmp1. */ b not_aligned /* Not_aligned says that shifts Will be needed. */ dep 0,31,2,s_addr /* Compute the word address of the source. DELAY SLOT. */ /* aligned */ combt,= tmp6,r0,skip_mask ldwm 4(0,s_addr),tmp1 /* tmp1 = *s_addr s_addr += 4 (DELAY SLOT) */ sh3add tmp6,r0,save mtctl save,r11 zvdepi -2,32,save or save,tmp1,tmp1 uxor,nbz tmp1,r0,save b,n first_null /* special case: null in first word */ b,n skip_mask2 chunks: b,n null_found /* delay slot for uxor below */ skip_mask2: stbys,b,m tmp1,4(d_addr) ldwm 4(s_addr),tmp1 skip_mask: comib,tr 0,0,chunks uxor,nbz tmp1,r0,save /* Begin non_aligned code. */ not_aligned: sh3add,>= tmp3,r0,tmp4 /* compute the shift amt.and skip load if tmp6 > tmp1. */ ldwm 4(0,s_addr),tmp1 /* load up the first word from the source. tmp1 = *s_addr++ */ ldwm 4(0,s_addr),tmp2 /* get either first or second word from source. */ combt,= tmp6,r0,chunk2 /* don't mask if whole word is valid */ mtctl tmp4,11 /* load the shift count into cr11 = shift count register. */ vshd tmp1,tmp2,tmp3 /* position data ! (delay slot) */ sh3add tmp6,r0,save /* setup r1 */ mtctl save,r11 /* set-up cr11 for mask */ zvdepi -2,32,save or save, tmp3, tmp3 uxor,nbz tmp3,r0,save b,n first_null2 b did_mask mtctl tmp4,11 /* re-load the shift count into cr11 */ chunk2: vshd tmp1,tmp2,tmp3 uxor,nbz tmp3, r0, save b,n null_found did_mask: stbys,b,m tmp3,4(0,d_addr) /* store ! */ ldwm 4(0,s_addr),tmp1 /* get next word ! */ vshd tmp2,tmp1,tmp3 /* position data ! */ uxor,nbz tmp3, r0, save b,n null_found stwm tmp3,4(d_addr) comib,tr 0,0,chunk2 ldwm 4(s_addr),tmp2 null_found: /* adjust d_addr and store final word */ extru,<> save,7,8,r0 addib,tr,n 1,d_addr,store_final extru,<> save,15,8,r0 addib,tr,n 2,d_addr,store_final extru,<> save,23,8,r0 addib,tr 3,d_addr,store_final2 bv 0(r2) stw save,0(d_addr) store_final: bv 0(r2) store_final2: stbys,e save,0(d_addr) /* delay slot */ first_null: /* null found in first word of aligned (wrt d_addr) */ addi -4,s_addr,s_addr ldbx tmp6(s_addr),tmp4 add tmp6,s_addr,s_addr comib,= 0,tmp4,done stbs,ma tmp4,1(d_addr) ldbs 1(s_addr),tmp4 comib,= 0,tmp4,done stbs,ma tmp4,1(d_addr) bv 0(r2) /* done */ stbs 0,0(d_addr) first_null2: /* null found in first word of non-aligned (wrt d_addr) */ addibt,= -1,tmp6,check3 /* check last 3 bytes of word */ extru save,15,8,tmp4 addibt,=,n -1,tmp6,check2 /* check last 2 bytes */ bv 0(r2) stbys,b save, 0(d_addr) check3: combt,= tmp4,r0,done stbs,ma tmp4,1(d_addr) check2: extru,<> save,23,8,tmp4 bv 0(r2) stbs,ma tmp4,1(d_addr) bv 0(r2) stbs r0,0(d_addr) done: EXIT(strcat) picolibc-1.7.4/newlib/libc/machine/hppa/strcmp.S000066400000000000000000000215321414576234500215060ustar00rootroot00000000000000/* * (c) Copyright 1986 HEWLETT-PACKARD COMPANY * * To anyone who acknowledges that this file is provided "AS IS" * without any express or implied warranty: * permission to use, copy, modify, and distribute this file * for any purpose is hereby granted without fee, provided that * the above copyright notice and this notice appears in all * copies, and that the name of Hewlett-Packard Company not be * used in advertising or publicity pertaining to distribution * of the software without specific, written prior permission. * Hewlett-Packard Company makes no representations about the * suitability of this software for any purpose. */ /* strcmp Jerry Huck Edgar Circenis */ /* * strcmp(s1, s2) * * returns integer: < 0 iff s1 lexicographically less than s2 * > 0 iff s1 lexicographically greater than s2 * = 0 iff s1 lexicographically equal to s2 */ #include "DEFS.h" #define s1 26 #define s2 25 #define tmp1 19 #define s2word 20 #define tmp3 21 #define tmp7 22 #define s1word 23 #define save 1 #define tmp6 24 #define tmp5 28 ENTRY(strcmp) comb,=,n s1,s2,samestring comib,=,n 0,s1,s1isnull comib,=,n 0,s2,s2isnull /* Hope for word alignment. Pick up low two bits of each adress */ extru,<> s1,31,2,tmp1 ldwm 4(s1),s1word dep,= s2,29,2,tmp1 b,n case_analysis /* Start looping until null is found in s1 or they mis-compare */ loop: ldwm 4(s2),s2word loop_plus: uxor,nbz s1word,r0,r0 /* Null in this? */ b,n nullins1 comb,=,n s1word,s2word,loop ldwm 4(s1),s1word /* The words do not compare equal and s1 does not have a null. Need to treat words as unsigned and generate either a positive or negative return value */ wordcomparereturn: comclr,>> s1word,s2word,ret0 /*Set ret0 to 0 and skip if greater*/ ldi -2,ret0 /*Set ret0 to -2 when less */ bv r0(rp) addi 1,ret0,ret0 /*Fix return value to be -1 or +1 */ /* s1 has a null. s2 has not been checked. */ nullins1: /*If s2 has no nulls this is simple, but assume that it might and fix up s1 to allow the word comparision to work by scanning s1 and duplicating all the bytes in s2 below that byte into the remainder of s1. A remainder only exists if the zero byte is found in the upper three bytes */ extru,<> s1word,7,8,r0 /*in the first byte? */ dep,tr s2word,31,24,s1word /*copy low 3 bytes of *s2 into *s1 */ extru,<> s1word,15,8,r0 /*in the second byte? */ dep,tr s2word,31,16,s1word /*copy low 2 bytes of *s2 into *s1 */ extru,<> s1word,23,8,r0 /*in the third byte? */ dep s2word,31,8,s1word /*copy low 1 byte of *s2 into *s1 */ /* Do the normal unsigned compare and return */ comclr,<> s1word,s2word,ret0 /*Set ret0 to 0 and skip if not equal */ bv,n r0(rp) comclr,>> s1word,s2word,ret0 /*Set ret0 to 0 and skip if greater*/ ldi -2,ret0 /*Set ret0 to -2 when less */ bv r0(rp) addi 1,ret0,ret0 /*Fix return value to be -1 or +1 */ /* s1 and s2 are the same string and therefore equal */ samestring: bv r0(rp) copy r0,ret0 /* s1 is null. Treat as string of nulls. Therefore return the negative of s2's first byte. s2 cannot be zero. */ s1isnull: ldbs 0(0,s2),ret0 bv r0(rp) sub 0,ret0,ret0 /* s2 is null. Treat as string of nulls. Therefore return s1's first byte. s1 cannot be zero. */ s2isnull: bv r0(rp) ldbs 0(0,s1),ret0 case_analysis: blr tmp1,r0 nop /* Case statement for non-aligned cases (we've already checked the aligned case. NOTE: for non-aligned cases, the absolute shift value gets loaded into tmp3. */ /* S2 S1 */ nop /* 00 00 can't happen */ nop b shifts2 /* 00 01 */ ldi 8,tmp3 /* load shift count (delay slot) */ b shifts2 /* 00 10 */ ldi 16,tmp3 /* load shift count (delay slot) */ b shifts2 /* 00 11 */ ldi 24,tmp3 /* load shift count (delay slot) */ b shifts1_0 /* 01 00 */ ldi 8,tmp3 /* load shift count (delay slot) */ b eq_align1 /* 01 01 */ ldbs,ma 1(s1),s1word b shifts2 /* 01 10 */ ldi 8,tmp3 /* load shift count (delay slot) */ b shifts2 /* 01 11 */ ldi 16,tmp3 /* load shift count (delay slot) */ b shifts1_0 /* 10 00 */ ldi 16,tmp3 /* load shift count (delay slot) */ b shifts1 /* 10 01 */ ldi 8,tmp3 /* load shift count (delay slot) */ b eq_align2 /* 10 10 */ ldhs,ma 2(s1),s1word b shifts2 /* 10 11 */ ldi 8,tmp3 /* load shift count (delay slot) */ b shifts1_0 /* 11 00 */ ldi 24,tmp3 /* load shift count (delay slot) */ b shifts1 /* 11 01 */ ldi 16,tmp3 /* load shift count (delay slot) */ b shifts1 /* 11 10 */ ldi 8,tmp3 /* load shift count (delay slot) */ ldbs,ma 1(s1),s1word /* 11 11 */ ldbs,ma 1(s2),s2word sub,= s1word,s2word,ret0 /* if not equal, we can return now */ bv,n r0(rp) comclr,<> s1word,r0,ret0 bv,n r0(rp) b loop /* fall into main loop */ ldwm 4(s1),s1word eq_align1: ldbs,ma 1(s2),s2word sub,= s1word,s2word,ret0 /* if not equal, we can return now */ bv,n r0(rp) comclr,<> s1word,r0,ret0 bv,n r0(rp) /* fall through to half-word aligned case */ ldhs,ma 2(s1),s1word /* load next halfword */ eq_align2: ldhs,ma 2(s2),s2word /* load next halfword */ /* form the mask: 0xffff0000 and mask leading nulls in s1word and s2word so that we can fall into the main loop with word aligned data */ ldi 16,save mtctl save,r11 zvdepi -2,32,save or save,s1word,s1word b loop_plus /* fall into main loop */ or save,s2word,s2word /* s2's alignment is greater than s1's alignment, so we will shift s1 */ shifts1_0: addi -4,s1,s1 /* fix up s1 due to earlier read */ shifts1: extru s1,31,2,tmp1 extru s2,31,2,tmp5 dep r0,31,2,s1 /* Compute word address of s1 */ dep r0,31,2,s2 /* Compute word address of s2 */ ldwm 4(s1),s1word /* get first word of s1 */ ldwm 4(s2),s2word /* get first word of s2 */ combt,=,n r0,tmp1,masks2 /* Do we need to mask beginning of s1 */ sh3add tmp1,r0,save /* save now has number of bits to mask */ mtctl save,r11 zvdepi -2,32,save /* load save with proper mask */ or save,s1word,s1word masks2: sh3add tmp5,r0,save /* save now has number of bits to mask */ mtctl save,r11 zvdepi -2,32,save /* load save with proper mask */ or save,s2word,s2word ldi -1,tmp7 /* load tmp7 with 0xffffffff */ mtctl tmp3,r11 /* Move shift amount to CR11 */ more: uxor,nbz s1word,r0,r0 /* Is there a null in s1? */ b ends1 vshd tmp7,s1word,save combf,=,n save,s2word,cmps1 ldwm 4(s1),tmp7 ldwm 4(s2),s2word uxor,nbz tmp7,r0,r0 /* is there a null in s1? */ b ends1_0 vshd s1word,tmp7,save combf,=,n save,s2word,cmps1 ldwm 4(s1),s1word b more ldwm 4(s2),s2word cmps1: movb,tr save,s1word,wordcomparereturn nop ends1_0: copy tmp7,s1word /* move tmp7 to s1word */ ends1: combf,=,n save,s2word,nullins1 /* branch if no match */ copy save,s1word /* delay slot */ /* At this point, we know that we've read a null */ /* from s1, so we can't read more from s1 */ uxor,nbz save,r0,r0 /* are the strings equal? */ b,n samestring vshd s1word,r0,s1word b nullins1 ldwm 4(s2),s2word /* s1's alignment is greater than s2's alignment, so we will shift s2 */ shifts2: extru s1,31,2,tmp1 extru s2,31,2,tmp5 dep r0,31,2,s1 /* Compute word address of s1 */ dep r0,31,2,s2 /* Compute word address of s2 */ ldwm 4(s2),s2word /* get first word of s2 */ ldwm 4(s1),s1word /* get first word of s1 */ combt,=,n r0,tmp5,masks1 /* Do we need to mask beginning of s2 */ sh3add tmp5,r0,save /* save now has number of bits to mask */ mtctl save,r11 zvdepi -2,32,save /* load save with proper mask */ or save,s2word,s2word masks1: sh3add tmp1,r0,save /* save now has number of bits to mask */ mtctl save,r11 zvdepi -2,32,save /* load save with proper mask */ or save,s1word,s1word ldi -1,tmp7 /* load tmp7 with 0xffffffff */ mtctl tmp3,r11 /* Move shift amount to CR11 */ more1: uxor,nbz s2word,r0,r0 /* is there a null in s2? */ b ends2 vshd tmp7,s2word,save combf,=,n s1word,save,cmps2 ldwm 4(s2),tmp7 ldwm 4(s1),s1word uxor,nbz tmp7,r0,r0 /* is there a null in s2? */ b ends2_0 vshd s2word,tmp7,save combf,=,n s1word,save,cmps2 ldwm 4(s2),s2word b more1 ldwm 4(s1),s1word cmps2: movb,tr save,s2word,wordcomparereturn nop ends2_0: copy tmp7,s2word /* move tmp7 to s2word */ ends2: combf,=,n s1word,save,nullins1 /* branch if no match */ copy save,s2word /* delay slot */ /* At this point, we know that we've read a null */ /* from s2, so we can't read more from s2 */ uxor,nbz save,r0,r0 /* are the strings equal? */ b,n samestring vshd s2word,r0,s2word b nullins1 ldwm 4(s1),s1word EXIT(strcmp) picolibc-1.7.4/newlib/libc/machine/hppa/strcpy.S000066400000000000000000000237311414576234500215250ustar00rootroot00000000000000/* * (c) Copyright 1986 HEWLETT-PACKARD COMPANY * * To anyone who acknowledges that this file is provided "AS IS" * without any express or implied warranty: * permission to use, copy, modify, and distribute this file * for any purpose is hereby granted without fee, provided that * the above copyright notice and this notice appears in all * copies, and that the name of Hewlett-Packard Company not be * used in advertising or publicity pertaining to distribution * of the software without specific, written prior permission. * Hewlett-Packard Company makes no representations about the * suitability of this software for any purpose. */ /* A faster strcpy. by Jerry Huck (aligned case) Daryl Odnert (equal-alignment case) Edgar Circenis (non-aligned case) */ /* * strcpy(s1, s2) * * Copy string s2 to s1. s1 must be large enough. * return s1 */ #include "DEFS.h" #define d_addr r26 #define s_addr r25 #define tmp6 r24 #define tmp1 r19 #define evenside r19 #define tmp2 r20 #define oddside r20 #define tmp3 r21 #define tmp4 r22 #define tmp5 arg3 #define save r1 ENTRY(strcpy) /* Do some quick alignment checking on and fast path both word aligned */ extru,<> s_addr,31,2,tmp6 /*Is source word aligned? */ ldwm 4(0,s_addr),oddside /*Assume yes and guess that it is double-word aligned. */ dep,= d_addr,29,2,tmp6 /*Is target word aligned? */ b case_analysis copy d_addr,ret0 /* Both are aligned. First source word already loaded assuming that source was oddword aligned. Fall through (therefore fastest) code shuffles the registers to join the main loop */ bothaligned: bb,>= s_addr,29,twoatatime /*Branch if source was odd aligned*/ uxor,nbz oddside,r0,save /* Even aligned source. save holds that operand. Do one iteration of the main copy loop juggling the registers to avoid one copy. */ b,n nullfound ldwm 4(s_addr),oddside stwm save,4(d_addr) uxor,nbz oddside,r0,save b,n nullfound ldwm 4(s_addr),evenside stwm oddside,4(d_addr) uxor,nbz evenside,r0,save b,n nullfound ldwm 4(s_addr),oddside /* Main loop body. Entry expects evenside still to be stored, oddside just loaded. */ loop: stwm evenside,4(d_addr) uxor,nbz oddside,r0,save /* mid loop entry */ twoatatime: b,n nullfound ldwm 4(s_addr),evenside stwm oddside,4(d_addr) uxor,sbz evenside,r0,save b loop ldwm 4(s_addr),oddside /* fall through when null found in evenside. oddside actually loaded */ nullfound: /* adjust d_addr and store final word */ extru,<> save,7,8,r0 /* pick up leftmost byte */ addib,tr,n 1,d_addr,store_final extru,<> save,15,8,r0 addib,tr,n 2,d_addr,store_final extru,<> save,23,8,r0 addib,tr 3,d_addr,store_final2 bv 0(rp) stw save,0(d_addr) store_final: bv 0(rp) store_final2: stbys,e save,0(d_addr) /* delay slot */ case_analysis: blr tmp6,r0 nop /* NOTE: the delay slots for the non-aligned cases load a */ /* shift quantity which is TGT-SRC into tmp3. */ /* Note also, the case for both strings being word aligned */ /* is already checked before the BLR is executed, so that */ /* case can never occur. */ /* TGT SRC */ nop /* 00 00 can't happen */ nop b neg_aligned_copy /* 00 01 */ ldi -1,tmp3 /* load shift quantity. delay slot */ b neg_aligned_copy /* 00 10 */ ldi -2,tmp3 /* load shift quantity. delay slot */ b neg_aligned_copy /* 00 11 */ ldi -3,tmp3 /* load shift quantity. delay slot */ b pos_aligned_copy0 /* 01 00 */ ldi 1,tmp3 /* load shift quantity. delay slot */ b equal_alignment_1 /* 01 01 */ ldbs,ma 1(s_addr),tmp1 b neg_aligned_copy /* 01 10 */ ldi -1,tmp3 /* load shift quantity. delay slot */ b neg_aligned_copy /* 01 11 */ ldi -2,tmp3 /* load shift quantity. delay slot */ b pos_aligned_copy0 /* 10 00 */ ldi 2,tmp3 /* load shift quantity. delay slot */ b pos_aligned_copy /* 10 01 */ ldi 1,tmp3 /* load shift quantity. delay slot */ b equal_alignment_2 /* 10 10 */ ldhs,ma 2(s_addr),tmp1 b neg_aligned_copy /* 10 11 */ ldi -1,tmp3 /* load shift quantity. delay slot */ b pos_aligned_copy0 /* 11 00 */ ldi 3,tmp3 /* load shift quantity. delay slot */ b pos_aligned_copy /* 11 01 */ ldi 2,tmp3 /* load shift quantity. delay slot */ b pos_aligned_copy /* 11 10 */ ldi 1,tmp3 /* load shift quantity. delay slot */ ldbs,ma 1(s_addr),tmp1 /* 11 11 */ comiclr,<> r0,tmp1,r0 bv 0(rp) /* return if 1st byte was null */ stbs,ma tmp1,1(d_addr) /* store a byte to dst string */ b bothaligned /* can now goto word_aligned */ ldwm 4(s_addr),oddside /* load next word of source */ equal_alignment_1: comiclr,<> r0,tmp1,r0 /* nullify next if tmp1 <> 0 */ bv 0(rp) /* return if null byte found */ stbs,ma tmp1,1(d_addr) /* store a byte to dst string */ ldhs,ma 2(s_addr),tmp1 /* load next halfword */ equal_alignment_2: extru,<> tmp1,23,8,tmp6 /* look at left byte of halfword */ bv 0(rp) /* return if 1st byte was null */ stbs,ma tmp6,1(d_addr) extru,<> tmp1,31,8,r0 bv 0(rp) /* return if 2nd byte was null */ stbs,ma tmp1,1(d_addr) b bothaligned ldwm 4(s_addr),oddside /* load next word */ /* source and destination are not aligned, so we do it the hard way. */ /* target alignment is greater than source alignment */ pos_aligned_copy0: addi -4,s_addr,s_addr pos_aligned_copy: extru d_addr,31,2,tmp6 /* Extract low 2 bits of the dest addr */ extru s_addr,31,2,tmp1 /* Extract low 2 bits of the src addr */ dep r0,31,2,s_addr /* Compute word address of the source. */ sh3add tmp3,r0,tmp4 /* compute shift amt */ ldwm 4(0,s_addr),tmp2 /* get 1st source word */ sh3add tmp1,r0,save /* setup mask shift amount */ mtctl save,r11 /* set-up cr11 for mask */ zvdepi -2,32,save /* create mask */ or save,tmp2,tmp2 /* mask unused bytes in src */ ldi -1,tmp1 /* load tmp1 with 0xffffffff */ mtctl tmp4,r11 /* shift count -> shift count reg */ vshd tmp1,tmp2,tmp3 /* position data ! */ uxor,nbz tmp3,r0,save b,n first_null uxor,nbz tmp2,r0,save b nullfound1 mtctl tmp4,r11 /* re-load shift cnt (delay slot) */ b loop_entry ldwm 4(0,s_addr),tmp1 /* get next word. delay slot */ neg_aligned_copy: extru d_addr,31,2,tmp6 /* Extract low 2 bits of the dest addr */ extru s_addr,31,2,tmp2 /* Extract low 2 bits of the src addr */ dep r0,31,2,s_addr /* Compute word address of the source. */ sh3add tmp3,r0,tmp4 /* compute shift amt */ ldwm 4(0,s_addr),tmp1 /* load first word from source. */ /* check to see if next word can be read safely */ sh3add tmp2,r0,save mtctl save,r11 /* shift count -> shift count reg */ zvdepi -2,32,save or save, tmp1, tmp1 uxor,nbz tmp1,r0,save /* any nulls in first word? */ b first_null0 mtctl tmp4,r11 ldwm 4(0,s_addr),tmp2 /* load second word from source */ combt,= tmp6,r0,chunk1 /* don't mask if whole word valid */ vshd tmp1,tmp2,tmp3 /* position data ! */ sh3add tmp6,r0,save /* setup r1 */ mtctl save,r11 /* set-up cr11 for mask */ zvdepi -2,32,save or save, tmp3, tmp3 uxor,nbz tmp3,r0,save b,n first_null uxor,nbz tmp2,r0,save b nullfound1 mtctl tmp4,r11 /* re-load shift cnt (delay slot) */ b loop_entry ldwm 4(0,s_addr),tmp1 /* get next word. delay slot */ chunk1: uxor,nbz tmp2,r0,save b nullfound0 vshd tmp1,tmp2,tmp3 did_mask: ldwm 4(0,s_addr),tmp1 /* get next word ! */ loop_entry: stbys,b,m tmp3,4(0,d_addr) /* store ! */ uxor,nbz tmp1, r0, save b nullfound2 vshd tmp2,tmp1,tmp3 /* position data ! */ ldwm 4(s_addr),tmp2 stwm tmp3,4(d_addr) uxor,sbz tmp2,r0,save b did_mask nullfound0: vshd tmp1,tmp2,tmp3 /* delay slot */ uxor,nbz tmp3,r0,save b,n nullfound nullfound1: stbys,b,m tmp3,4(0,d_addr) b nullfound vshd tmp2,r0,save /* delay slot */ nullfound2: uxor,nbz tmp3,r0,save b,n nullfound stwm tmp3,4(d_addr) b nullfound /* notice that delay slot is in next routine */ first_null0: /* null found in first word of non-aligned (wrt d_addr) */ vshd tmp1,r0,save /* delay slot */ combt,= tmp6,r0,check4 extru save,7,8,tmp4 first_null: addibt,= -1,tmp6,check3 /* check last 3 bytes of word */ extru save,15,8,tmp4 addibt,=,n -1,tmp6,check2 /* check last 2 bytes */ bv 0(rp) /* null in last byte--store and exit */ stbys,b save, 0(d_addr) check4: combt,= tmp4,r0,done stbs,ma tmp4,1(d_addr) extru,<> save,15,8,tmp4 check3: combt,= tmp4,r0,done stbs,ma tmp4,1(d_addr) check2: extru,<> save,23,8,tmp4 bv 0(rp) stbs,ma tmp4,1(d_addr) bv 0(rp) stbs r0,0(d_addr) done: EXIT(strcpy) picolibc-1.7.4/newlib/libc/machine/hppa/strlen.S000066400000000000000000000064521414576234500215110ustar00rootroot00000000000000/* * (c) Copyright 1986 HEWLETT-PACKARD COMPANY * * To anyone who acknowledges that this file is provided "AS IS" * without any express or implied warranty: * permission to use, copy, modify, and distribute this file * for any purpose is hereby granted without fee, provided that * the above copyright notice and this notice appears in all * copies, and that the name of Hewlett-Packard Company not be * used in advertising or publicity pertaining to distribution * of the software without specific, written prior permission. * Hewlett-Packard Company makes no representations about the * suitability of this software for any purpose. */ /* HPUX_ID = "@(#) $Revision$" */ /* strlen(s): Return length of string s */ #define start arg0 #define end ret0 #define tmp1 arg1 #define tmp2 arg2 #include "DEFS.h" ENTRY(strlen) movb,=,n start,end,$null_ptr depi 0,31,2,end comb,<> start,end,$not_aligned ldws,ma 4(end),tmp1 comib,tr 0,0,$loop /* avoid INDIGO two register interlock */ uxor,nbz 0,tmp1,0 $not_aligned: /* ; Tricky code. The problem is that the value of of the word ; including the start of the string has some garbage bytes that ; may be 0. We don't want them to stop the string scan. So ; we make those bytes non-zero (and any old non-zero value ; will do). Notice that the end pointer has been rounded ; down to a word boundary, and then incremented to the next ; word by the time we get here. Therefore, (start-end) has ; one of the values (-3, -2, or -1). Use uaddcm to do the ; subtraction (instead of sub), and the result will be ; (-4, -3, or -2). Multiply this by 8, and put into the ; shift register (which truncates to the last 5 bits) and ; the value will be (0, 8, or 16). Use this as a bit position, ; and drop a mask down into tmp1. All the garbage bytes will ; have at least 1 bit affected by the vdepi, so all the garbage ; in this first word will be non-zero garbage. */ uaddcm start,end,tmp2 /* tmp2 <- { -4, -3, -2 } */ sh3add tmp2,0,tmp2 /* tmp2 <- { -32, -24, -16 } */ mtsar tmp2 /* sar <- { 0, 8, 16 } */ vdepi -1,32,tmp1 uxor,nbz 0,tmp1,0 $loop: b,n $end_loop ldws,ma 4(end),tmp1 comib,tr 0,0,$loop /* avoid INDIGO two register interlock */ uxor,nbz 0,tmp1,0 $end_loop: /* adjust the end pointer to one past the end of the string */ extru,<> tmp1,7,8,0 addib,tr,n -3,end,$out extru,<> tmp1,15,8,0 addib,tr,n -2,end,$out extru,<> tmp1,23,8,0 addi -1,end,end $out: bv 0(rp) /* ; tricky code. the end pointer is just beyond the terminating ; null byte, so the length is (end-start-1). use uaddcm ; to do this in 1 instruction */ uaddcm end,start,ret0 $null_ptr: EXIT(strlen) picolibc-1.7.4/newlib/libc/machine/hppa/strncat.S000066400000000000000000000203501414576234500216510ustar00rootroot00000000000000/* * (c) Copyright 1986 HEWLETT-PACKARD COMPANY * * To anyone who acknowledges that this file is provided "AS IS" * without any express or implied warranty: * permission to use, copy, modify, and distribute this file * for any purpose is hereby granted without fee, provided that * the above copyright notice and this notice appears in all * copies, and that the name of Hewlett-Packard Company not be * used in advertising or publicity pertaining to distribution * of the software without specific, written prior permission. * Hewlett-Packard Company makes no representations about the * suitability of this software for any purpose. */ /*HPUX_ID: @(#) $Revision$ */ /* strncat(s1,s2,n) : concatonate at most n characters from s2 onto s1 */ #include "DEFS.h" #define d_addr r26 #define s_addr r25 #define count r24 #define tmp1 r19 #define tmp2 r20 #define tmp3 r21 #define tmp4 r22 #define tmp5 arg3 #define tmp6 r31 #define save r1 #define tmp7 ret1 /* source offset-- reset to orig source addr if not aligned */ ENTRY(strncat) comb,= r0,s_addr,quit /* quit if s2=NULL */ copy d_addr,ret0 /* The return value is the value of d_addr. DELAY SLOT*/ /* First look for end of s1 (d_addr) */ extru d_addr,31,2,tmp1 /* Extract the low two bits of the dest address. */ combt,= tmp1,r0,dont_mask dep 0,31,2,d_addr /*set word alignment */ ldwm 4(d_addr),tmp2 sh3add tmp1,r0,save /* build mask based on tmp1 */ mtctl save,11 zvdepi -2,32,save or save,tmp2,tmp2 uxor,nbz tmp2,r0,save search: b,n found_end /* nullified under uxor conditions above and below */ dont_mask: ldwm 4(d_addr),tmp2 comib,tr r0,r0,search uxor,nbz tmp2,r0,save found_end: /* at this point d_addr points to word */ extru,<> save,7,8,r0 /* following word with null */ addib,tr,n -4,d_addr,begin_copy /*set d_addr to end of s1 */ extru,<> save,15,8,r0 addib,tr,n -3,d_addr,begin_copy extru,<> save,23,8,r0 addi -1,d_addr,d_addr addi -1,d_addr,d_addr begin_copy: addibt,<,n -4,count,byteloop /* If count is <= 4 don't get fancy.*/ extru s_addr,31,2,tmp4 /* Extract the low two bits of the source address.*/ extru d_addr,31,2,tmp5 /* Extract the low two bits of the destination address.*/ add count,tmp5,count /* pre increment the count by the byte address so that the count is*/ copy s_addr,tmp6 /* save original s_addr in case we find null in first word */ copy s_addr, tmp7 /* save s_addr in case we find null before first store */ comb,<> tmp5,tmp4,not_aligned /* branch if tmp5<>tmp4. */ dep 0,31,2,s_addr /* Compute the word address of the source. DELAY SLOT.*/ /* aligned*/ combt,= tmp5,r0,skip_mask ldwm 4(0,s_addr),tmp1 /* tmp1 = *s_addr s_addr += 4 (DELAY SLOT)*/ sh3add tmp5,r0,save /* compute mask in save*/ mtctl save,11 zvdepi -2,32,save or save,tmp1,tmp1 /* or mask with data*/ uxor,nbz tmp1,r0,save /* check for null*/ b,n null1 addibt,< -4,count,back_porch stbys,b,m tmp1,4(0,d_addr) /* store word (delay slot)*/ chunks: ldwm 4(0,s_addr),tmp1 /* get a word*/ skip_mask: uxor,nbz tmp1,r0,save /* check for null*/ b,n align_null1 addibf,< -4,count,chunks stbys,b,m tmp1,4(0,d_addr) /* store word (delay slot)*/ back_porch: /* last word to store*/ addibt,=,n 4,count,done /* if count = 0 we're, of course, done !*/ ldws 0(s_addr),tmp1 /* load up the back_porch*/ sh3add count,r0, save /* setup right mask based on count*/ mtctl save,r11 zvdepi -2,32,save /*save now has left-hand mask*/ uaddcm r0,save,save /*form right hand mask */ or tmp1,save,tmp1 /*and insert data*/ uxor,nbz tmp1,r0,save /* check for null*/ b,n null2 add d_addr,count,d_addr/* final store address is +1 too high !*/ b done stbys,e tmp1,0(d_addr) /* done */ /* Begin non_aligned code. */ not_aligned: sub,>= tmp5,tmp4,tmp6 /* compute the shift amt.and skip load if tmp5 > tmp4.*/ ldwm 4(0,s_addr),tmp1 /* load up the first word from the source. tmp1 = *s_addr++*/ zdep tmp6,28,29,tmp4 /* compute the number of bits to shift */ mtctl tmp4,11 /* load the shift count into cr11 = shift count register.*/ addibt,<,n -4,count,chkchnk2 /* first step in pre adjustment of count for looping.*/ ldwm 4(0,s_addr),tmp2 /* get either first or second word from source. */ combt,= tmp5,r0,skip_mask4 /* don't mask if whole word is valid*/ vshd tmp1,tmp2,tmp3 /* position data ! (delay slot)*/ sh3add tmp5,r0,save /* setup r1*/ mtctl save,r11 /* setup mask in save*/ zvdepi -2,32,save or save, tmp3, tmp3 mtctl tmp4,11 /* re-load the shift count into cr11 */ skip_mask4: uxor,nbz tmp3, r0, save b,n null4 /* special case for first word */ copy r0, tmp5 /* zero out tmp5 so we don't try to mask again*/ copy r0, tmp7 /* zero out tmp7 so we don't try to use original s_addr anymore */ b continue stbys,b,m tmp3,4(0,d_addr) /* store ! */ chunk2: ldwm 4(0,s_addr),tmp2 vshd tmp1,tmp2,tmp3 skip_mask2: uxor,nbz tmp3, r0, save b,n null3 stbys,b,m tmp3,4(0,d_addr) /* store ! */ continue: ldwm 4(0,s_addr),tmp1 /* get 2nd word ! */ vshd tmp2,tmp1,tmp3 /* position data ! */ uxor,nbz tmp3, r0, save b,n null3 addibf,< -8,count,chunk2 /* If count is still >= 8 do another loop.*/ stbys,b,m tmp3,4(0,d_addr) /* store !*/ chkchnk2: addibt,<,n 4,count,bp_0 /* if we don't have 4 bytes left then do the back porch (bp_0)*/ subchnk2: /* we have less than 8 chars to copy*/ ldwm 4(0,s_addr),tmp2 /* get next word !*/ combt,= tmp5,r0,skip_mask3 vshd tmp1,tmp2,tmp3 /* position data !*/ sh3add tmp5,r0,save /* setup r1*/ mtctl save,r11 /* setup mask in save*/ zvdepi -2,32,save or save, tmp3, tmp3 mtctl tmp4,11 /* restore shift value again */ skip_mask3: uxor,nbz tmp3,r0,save b,n null3 copy r0,tmp5 /* zero out tmp5 so null3 does correct alignment */ copy r0,tmp7 /* zero out tmp7 so we don't use orignal s_addr since no longer valid */ b bp_1 /* we now have less than 4 bytes to move*/ stbys,b,m tmp3,4(0,d_addr) /* store !*/ bp_0: copy tmp1,tmp2 /* switch registers for shift process */ addibt,<=,n 4,count,done /* if count = -4 this implies that count = 0 -> done */ bp_1: ldwm 4(0,s_addr),tmp1 /* get final word ! */ vshd tmp2,tmp1,tmp3 /* position data !*/ uxor,nbz tmp3,r0,save /* if no-byte-zero */ b,n bp_null /* don't goto no_null-find which null instead */ no_null: add d_addr,count,d_addr /* set up d_addr for stbys,e */ b done /* were done*/ stbys,e tmp3,0(0,d_addr) /* store the data !*/ /* here we do ye old byte-at-a-time moves.*/ align_null1: b byteloop addi -4,s_addr,s_addr null1: copy tmp6,s_addr /* restore orig s_addr (aligned only) */ byteloop: addibt,= 4,count,done null2: ldbs,ma 1(s_addr),tmp1 encore: combt,=,n tmp1,r0, done stbs,ma tmp1,1(d_addr) addibf,=,n -1,count,encore ldbs,ma 1(s_addr),tmp1 b,n done bp_null: addi -4,count,count /* fudge count 'cause byteloop will re-increment */ null3: /* not_aligned case reset s_addr and finish byte-wise */ combt,=,n r0,tmp7,null3a /* if tmp7 is not valid address then branch below */ b byteloop /* otherwise reset s_addr to tmp7 and finish */ copy tmp7, s_addr null3a: /* right shift target */ addibt,<,n 0,tmp6,null3b /* if left shifting */ sub r0,tmp6,tmp6 /* do null3b code */ addi -4,tmp6,tmp6 b byteloop add tmp6,s_addr,s_addr /* reset s_addr by 4 + shift_amt */ null3b: subi -8,tmp6,tmp6 add tmp5,tmp6,tmp6 /* adjust by the dest offset if this is our first store */ b byteloop add tmp6,s_addr,s_addr /* adjust s_addr by (8-shift_amt-dest_off) */ null4: add,> tmp6,r0,tmp6 /* if left shift */ b,n null3 /* then do null3 */ b byteloop addi -4,s_addr,s_addr /* adj source only by 4 */ done: bv 0(r2) stbs r0,0(d_addr) quit: EXIT(strncat) picolibc-1.7.4/newlib/libc/machine/hppa/strncmp.S000066400000000000000000000163541414576234500216720ustar00rootroot00000000000000/* * (c) Copyright 1986 HEWLETT-PACKARD COMPANY * * To anyone who acknowledges that this file is provided "AS IS" * without any express or implied warranty: * permission to use, copy, modify, and distribute this file * for any purpose is hereby granted without fee, provided that * the above copyright notice and this notice appears in all * copies, and that the name of Hewlett-Packard Company not be * used in advertising or publicity pertaining to distribution * of the software without specific, written prior permission. * Hewlett-Packard Company makes no representations about the * suitability of this software for any purpose. */ /* strcmp(s1, s2) */ /* returns integer: < 0 iff s1 lexicographically less than s2 */ /* > 0 iff s1 lexicographically greater than s2 */ /* = 0 iff s1 lexicographically equal to s2 */ /* = 0 iff s1 lexicographically equal to s2 */ /* quit after n charachters */ #include "DEFS.h" #define s1 26 #define s2 25 #define tmp1 19 #define s2word 20 #define tmp3 21 #define tmp7 22 #define s1word 29 #define save 1 #define tmp6 23 #define tmp5 28 #define count 24 ENTRY(strncmp) combt,<,n r0,count,search /* N <= 0 yields equality */ bv r0(rp) /* */ copy 0,ret0 /* return 0 (DELAY SLOT) */ search: combf,=,n s1,s2,findout /* s1 != s2? */ bv r0(rp) /* */ copy 0,ret0 /* return 0 (delay slot) */ findout: comibf,=,n 0,s1,checks1 /* s1 == NULL? */ ldbs 0(0,s2),ret0 /* */ bv r0(rp) /* */ subi 0,ret0,ret0 /* ret0 <- -*s2 */ checks1: comibf,=,n 0,s2,checkitout /* s2 == NULL? */ bv r0(rp) /* */ ldbs 0(0,s1),28 /* return *s1 */ checkitout: extru s2,31,2,tmp1 /* Extract the low two bits of the s2. */ extru s1,31,2,tmp5 /* Extract the low two bits of the s1 */ sub,= tmp5,tmp1,tmp3 /* Are s1 & s2 aligned with each other? */ b not_aligned /* It's more complicated (not_aligned) */ dep 0,31,2,s1 /* Compute word address of s1 (DELAY SLOT) */ dep 0,31,2,s2 /* Compute word address of s2 */ ldwm 4(0,s1),s1word /* get next s1 word s1+=4 */ combt,= tmp5,r0,skipmask /* skip masking, if we can */ ldwm 4(0,s2),s2word /* get next s2 word s2+=4 (DELAY SLOT) */ add tmp5,count,count /* bump count by the number of bytes */ /* we are going to mask */ sh3add tmp5,r0,save /* save now has number of bits to mask */ mtctl save,11 zvdepi -2,32,save /* load save with proper mask */ or save,s1word,s1word /* mask s1word (s1) */ or save,s2word,s2word /* mask s2word (s2) */ skipmask: combt,=,n s1word,s2word,chknulls /* are these words equal? */ checkbyte: extru s1word,7,8,tmp3 /* get first byte (character) */ ckbyte2: extru s2word,7,8,tmp7 /* get first byte (character) */ combf,= tmp3,tmp7,done /* quit if first byte is not equal */ sub tmp3,tmp7,ret0 /* return difference (delay slot) */ comibt,=,n 0,tmp3,done /* have we reached the end of string */ /* if so done ret0 already has zero */ addibt,<=,n -1,count,done /* have we checked N chars? ret0 == 0 */ extru s1word,15,8,tmp3 /* get second byte (character) */ extru s2word,15,8,tmp7 /* get second byte (character) */ combf,= tmp3,tmp7,done /* quit if second byte is not equal */ sub tmp3,tmp7,ret0 /* return difference (delay slot) */ comibt,=,n 0,tmp3,done /* have we reached the end of string */ /* if so done ret0 already has zero */ addibt,<=,n -1,count,done /* have we checked N chars? */ extru s1word,23,8,tmp3 /* get third byte (character) */ extru s2word,23,8,tmp7 /* get third byte (character) */ combf,= tmp3,tmp7,done /* done if third byte is not equal */ sub tmp3,tmp7,ret0 /* return difference (delay slot) */ comibt,=,n 0,tmp3,done /* have we reached the end of string */ /* if so done ret0 already has zero */ addibt,<=,n -1,count,done /* have we checked N chars? */ extru s1word,31,8,tmp3 /* get last byte (character) */ extru s2word,31,8,tmp7 /* get last byte (character) */ bv r0(rp) /* */ sub tmp3,tmp7,ret0 /* the last characters in the word is */ /* where the difference is, so return */ /* the difference and we're outta here */ chknulls: addibt,<=,n -4,count,zero /* have we checked N chars? */ uxor,nbz s1word,0,0 /* don't have to check s2 Just quit */ bv r0(rp) /* */ copy 0,28 /* return 0 */ ldwm 4(0,s2),s2word /* get next s2 word s2+=4 */ b skipmask /* keep checking */ ldwm 4(0,s1),s1word /* get next s1 word s1+=4 */ not_aligned: dep r0,31,2,s2 /* Compute word address of s2 */ combt,<,n r0,tmp3,shifts1 /* Do we shift s1 or s2 */ sh3add tmp3,r0,tmp3 /* eight bits per byte so mul by 8 */ ldwm 4(0,s1),s1word /* get first word of s1 */ ldwm 4(0,s2),s2word /* get first word or s2 */ combt,=,n r0,tmp5,masks2 /* Do we need to mask beginning of s1 */ add tmp5,count,count /* bump count by the number of bytes */ /* we are going to mask */ sh3add tmp5,r0,save /* save now has number of bits to mask */ mtctl save,11 zvdepi -2,32,save /* load save with proper mask */ or save,s1word,s1word /* */ masks2: sh3add tmp1,r0,save /* save now has number of bits to mask */ mtctl save,11 zvdepi -2,32,save /* load save with proper mask */ or save,s2word,s2word /* */ mtctl tmp3,11 /* Move shift amount to CR11 */ more: uxor,nbz s2word,r0,r0 /* Is there a null in first word */ b,n chunk1 /* */ ldwm 4(0,s2),tmp7 /* load second word to enable us to shift */ vshd s2word,tmp7,s2word /* */ combf,=,n s1word,s2word,ckbyte2 /* */ extru s1word,7,8,tmp3 /* get first byte (DELAY SLOT) */ addibt,<=,n -4,count,zero /* have we checked N chars? */ uxor,nbz s1word,0,0 /* even though they're equal we could be done */ b,n zero copy tmp7,s2word /* */ b more /* keep checking */ ldwm 4(0,s1),s1word /* get next s1 (DELAY SLOT) */ chunk1: vshd s2word,r0,s2word /* */ b ckbyte2 /* */ extru s1word,7,8,tmp3 /* */ shifts1: sh3add tmp3,r0,tmp3 /* eight bits per byte so mul by 4 */ sub r0,tmp3,tmp3 /* Get negative value for left shift */ ldwm 4(0,s2),s2word /* get first word of s2 */ ldwm 4(0,s1),s1word /* get first word or s1 */ combt,=,n r0,tmp1,masks1 /* Do we need to mask beginning of s2 */ add tmp1,count,count /* bump count by the number of bytes */ /* we are going to mask */ sh3add tmp1,r0,save /* save now has number of bits to mask */ mtctl save,11 zvdepi -2,32,save /* load save with proper mask */ or save,s2word,s2word /* */ masks1: sh3add tmp5,r0,save /* save now has number of bits to mask */ mtctl save,11 zvdepi -2,32,save /* load save with proper mask */ or save,s1word,s1word /* */ mtctl tmp3,11 /* Move shift amount to CR11 */ more1: uxor,nbz s1word,r0,r0 /* Is there a null in first byte */ b,n chunk2 /* */ ldwm 4(0,s1),tmp7 /* load second word to enable us to shift */ vshd s1word,tmp7,s1word /* */ combf,=,n s2word,s1word,ckbyte2 /* */ extru s1word,7,8,tmp3 /* get first byte (DELAY SLOT) */ addibt,<=,n -4,count,zero /* have we checked N chars? */ uxor,nbz s2word,0,0 /* even though they're equal we could be done */ b,n zero /* zero ret0 and quit */ copy tmp7,s1word /* */ b more1 /* keep checking */ ldwm 4(0,s2),s2word /* get next s2 (DELAY SLOT) */ chunk2: vshd s1word,r0,s1word /* */ b ckbyte2 /* */ extru s1word,7,8,tmp3 /* */ zero: copy r0,ret0 done: EXIT(strncmp) picolibc-1.7.4/newlib/libc/machine/hppa/strncpy.S000066400000000000000000000212171414576234500217000ustar00rootroot00000000000000/* * (c) Copyright 1986 HEWLETT-PACKARD COMPANY * * To anyone who acknowledges that this file is provided "AS IS" * without any express or implied warranty: * permission to use, copy, modify, and distribute this file * for any purpose is hereby granted without fee, provided that * the above copyright notice and this notice appears in all * copies, and that the name of Hewlett-Packard Company not be * used in advertising or publicity pertaining to distribution * of the software without specific, written prior permission. * Hewlett-Packard Company makes no representations about the * suitability of this software for any purpose. */ /* HPUX_ID: @(#) $Revision$ */ /* * strncpy(s1, s2, n) * * Copy s2 to s1, truncating or null-padding to always copy n bytes * return s1 */ #include "DEFS.h" #define d_addr r26 #define s_addr r25 #define count r24 #define tmp1 r19 #define tmp2 r20 #define tmp3 r21 #define tmp4 r22 #define tmp5 arg3 #define save r1 ENTRY(strncpy) combt,= s_addr,r0,pad_null_bytes1 /* if s2==NULL then pad nulls and exit */ copy d_addr,ret0 /* The return value is defined to be the value of d_addr. DELAY SLOT*/ addibt,<,n -4,count,byteloop /* If count is <= 4 don't get fancy.*/ extru s_addr,31,2,tmp1 /* Extract the low two bits of the source address.*/ extru d_addr,31,2,tmp5 /* Extract the low two bits of the destination address.*/ add count,tmp5,count /* pre increment the count by the byte address so that the count is*/ comb,<> tmp5,tmp1,not_aligned /* branch if tmp5<>tmp1. */ dep 0,31,2,s_addr /* Compute the word address of the source. DELAY SLOT.*/ /* aligned*/ combt,= tmp5,r0,skip_mask ldwm 4(0,s_addr),tmp1 /* tmp1 = *s_addr s_addr += 4 (DELAY SLOT)*/ sh3add tmp5,r0,save /* compute mask in save*/ mtctl save,11 zvdepi -2,32,save b skip_mask /* don't reload tmp1*/ or save,tmp1,tmp1 /* or mask with data*/ chunks: ldwm 4(0,s_addr),tmp1 /* get a word*/ skip_mask: uxor,nbz tmp1,r0,save /* check for null*/ b,n null1 addibf,< -4,count,chunks stbys,b,m tmp1,4(0,d_addr) /* store word (delay slot)*/ /* back_porch last word to store*/ addibt,=,n 4,count,done /* if count = 0 we're, of course, done !*/ ldws 0(s_addr),tmp1 /* load up the back_porch*/ add d_addr,count,d_addr/* final store address is +1 too high !*/ sh3add count,r0, save /* setup right mask based on count*/ mtctl save,r11 zvdepi -2,32,save /*save now has left-hand mask*/ uaddcm r0,save,save /*form right hand mask */ or tmp1,save,tmp1 /*and insert data*/ uxor,nbz tmp1,r0,save /* check for null*/ b,n null2 bv 0(r2) stbys,e tmp1,0(d_addr) /* done */ /* Begin non_aligned code. */ not_aligned: sub,>= tmp5,tmp1,tmp3 /* compute the shift amt.and skip load if tmp5 > tmp1.*/ ldwm 4(0,s_addr),tmp1 /* load up the first word from the source. tmp1 = *s_addr++*/ zdep tmp3,28,29,tmp4 /* compute the number of bits to shift */ mtctl tmp4,11 /* load the shift count into cr11 = shift count register.*/ addibt,<,n -4,count,chkchnk2 /* first step in pre adjustment of count for looping.*/ ldwm 4(0,s_addr),tmp2 /* get either first or second word from source. */ combt,= tmp5,r0,skip_mask2 /* don't mask if whole word is valid*/ vshd tmp1,tmp2,tmp3 /* position data ! (delay slot)*/ sh3add tmp5,r0,save /* setup r1*/ mtctl save,r11 /* setup mask in save*/ zvdepi -2,32,save or save, tmp3, tmp3 mtctl tmp4,11 /* re-load the shift count into cr11 */ b skip_mask2 copy r0, tmp5 /* zero out tmp5 so we don't try to mask again*/ chunk2: ldwm 4(0,s_addr),tmp2 vshd tmp1,tmp2,tmp3 skip_mask2: uxor,nbz tmp3, r0, save b,n null3 stbys,b,m tmp3,4(0,d_addr) /* store ! */ ldwm 4(0,s_addr),tmp1 /* get 2nd word ! */ vshd tmp2,tmp1,tmp3 /* position data ! */ uxor,nbz tmp3, r0, save b,n null4 addibf,< -8,count,chunk2 /* If count is still >= 8 do another loop.*/ stbys,b,m tmp3,4(0,d_addr) /* store !*/ chkchnk2: addibt,<,n 4,count,bp_0 /* if we don't have 4 bytes left then do the back porch (bp_0)*/ subchnk2: /* we have less than 8 chars to copy*/ ldwm 4(0,s_addr),tmp2 /* get next word !*/ combt,= tmp5,r0,skip_mask3 vshd tmp1,tmp2,tmp3 /* position data !*/ sh3add tmp5,r0,save /* setup r1*/ mtctl save,r11 /* setup mask in save*/ zvdepi -2,32,save or save, tmp3, tmp3 mtctl tmp4,11 /* restore shift value again */ copy r0, tmp5 /* zero out tmp5 so we don't try to mask again*/ skip_mask3: uxor,nbz tmp3,r0,save b,n null4 b bp_1 /* we now have less than 4 bytes to move*/ stbys,b,m tmp3,4(0,d_addr) /* store !*/ bp_0: copy tmp1,tmp2 /* switch registers used in the shift process.*/ addibt,<=,n 4,count,done /* if count = -4 this implies that count = 0 -> done */ bp_1: ldwm 4(0,s_addr),tmp1 /* get final word ! */ vshd tmp2,tmp1,tmp3 /* position data !*/ uxor,sbz tmp3,r0,save /* if some-byte-zero */ b no_null /* don't goto no_null-find which null instead */ add d_addr,count,d_addr /* get d_addr ready for stbys,e */ extru,<> save,7,8,r0 b found_null5 copy r0, tmp5 extru,<> save,15,8,r0 b found_null5 ldil 0x1FE000,tmp5 /* setup mask (FF000000)*/ extru,<> save,23,8,r0 b found_null5 ldil 0x1FFFE0,tmp5 /* setup mask (FFFF0000)*/ ldo -1(r0),tmp5 /* setup mask (FFFFFFFF)*/ found_null5: and tmp3,tmp5,tmp3 /* zero out tmp5 based on mask in tmp5*/ no_null: bv 0(r2) /* were done*/ stbys,e tmp3,0(0,d_addr) /* store the data !*/ /* here we do ye old byte-at-a-time moves.*/ byteloop: addibt,=,n 4,count,done comb,= 0,s_addr,done stbs r0,0(d_addr) /* store null in case s_addr == NULL */ ldbs,ma 1(s_addr),tmp1 encore: combt,=,n tmp1,r0, pad_null_bytes1 stbs,ma tmp1,1(d_addr) addibf,=,n -1,count,encore ldbs,ma 1(s_addr),tmp1 b,n done pnb_1: addibt,=,n 4,count,done /* if count was already 0 then we're done*/ pad_null_bytes1: combt,=,n count,r0,done /* if count==0 then exit */ pad_null_bytes2: addibf,= -1,count,pad_null_bytes2 stbs,ma r0,1(d_addr) b,n done pad_nulls: addibf,<=,n -4,count,pad_nulls stwm r0,4(d_addr) b,n pnb_1 null1: extru,<> save,7,8,r0 b found_null1 copy r0, tmp5 extru,<> save,15,8,r0 b found_null1 ldil 0x1FE000,tmp5 /* setup mask (FF000000)*/ extru,<> save,23,8,r0 b found_null1 ldil 0x1FFFE0,tmp5 /* setup mask (FFFF0000)*/ ldo -1(r0),tmp5 /* setup mask (FFFFFFFF)*/ found_null1: and tmp1,tmp5,tmp1 /*zero out tmp1 according to mask*/ b pad_nulls /* nullify remaining count bytes*/ stbys,b,m tmp1,4(0,d_addr) /* first word (account for alignment)*/ null2: /* back porch case. We have less than 4 bytes to go.*/ extru,<> save,7,8,r0 /* is null in 1st byte? */ b found_null2 copy r0, tmp5 extru,<> save,15,8,r0 /* is null in 2nd byte? */ b found_null2 ldil 0x1FE000,tmp5 /* setup mask (FF000000)*/ b found_null2 /* null must be in 3rd byte */ ldil 0x1FFFE0,tmp5 /* setup mask (FFFF0000)*/ found_null2: and tmp1,tmp5,tmp1 /*zero out tmp1 according to mask*/ bv 0(r2) /* we're done*/ stbys,e tmp1,0(0,d_addr) /* last word (back porch)*/ null3: /* not_aligned case where null is found in first of two words--adjust count*/ extru,<> save,7,8,r0 b found_null3 copy r0, tmp5 extru,<> save,15,8,r0 b found_null3 ldil 0x1FE000,tmp5 /* setup mask (FF000000)*/ extru,<> save,23,8,r0 b found_null3 ldil 0x1FFFE0,tmp5 /* setup mask (FFFF0000)*/ ldo -1(r0),tmp5 /* setup mask (FFFFFFFF)*/ found_null3: addi 4,count,count /* fix count since null is in first of two words*/ and tmp3,tmp5,tmp3 /*zero out tmp3 according to mask*/ b pad_nulls /* nullify remaining count bytes*/ stbys,b,m tmp3,4(d_addr) null4: /* not_aligned case where null is found in second of two words*/ extru,<> save,7,8,r0 b found_null4 copy r0, tmp5 extru,<> save,15,8,r0 b found_null4 ldil 0x1FE000,tmp5 /* setup mask (FF000000)*/ extru,<> save,23,8,r0 b found_null4 ldil 0x1FFFE0,tmp5 /* setup mask (FFFF0000)*/ ldo -1(r0),tmp5 /* setup mask (FFFFFFFF)*/ found_null4: and tmp3,tmp5,tmp3 /*zero out tmp4 according to mask*/ b pad_nulls /* nullify remaining count bytes*/ stbys,b,m tmp3,4(d_addr) done: EXIT(strncpy) picolibc-1.7.4/newlib/libc/machine/i386/000077500000000000000000000000001414576234500176105ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/i386/i386mach.h000066400000000000000000000047641414576234500213160ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* This file was based on the modified setjmp.S performed by * Joel Sherill (joel@OARcorp.com) which specified the use * of the __USER_LABEL_PREFIX__ and __REGISTER_PREFIX__ macros. ** ** This file is distributed WITHOUT ANY WARRANTY; without even the implied ** warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ /* These are predefined by new versions of GNU cpp. */ #ifndef __USER_LABEL_PREFIX__ #define __USER_LABEL_PREFIX__ _ #endif #define __REG_PREFIX__ % /* ANSI concatenation macros. */ #define CONCAT1(a, b) CONCAT2(a, b) #define CONCAT2(a, b) a##b /* Use the right prefix for global labels. */ #define SYM(x) CONCAT1(__USER_LABEL_PREFIX__, x) /* Use the right prefix for registers. */ #define REG(x) CONCAT1(__REG_PREFIX__, x) #define eax REG(eax) #define ebx REG(ebx) #define ecx REG(ecx) #define edx REG(edx) #define esi REG(esi) #define edi REG(edi) #define ebp REG(ebp) #define esp REG(esp) #define st0 REG(st) #define st1 REG(st(1)) #define st2 REG(st(2)) #define st3 REG(st(3)) #define st4 REG(st(4)) #define st5 REG(st(5)) #define st6 REG(st(6)) #define st7 REG(st(7)) #define ax REG(ax) #define bx REG(bx) #define cx REG(cx) #define dx REG(dx) #define ah REG(ah) #define bh REG(bh) #define ch REG(ch) #define dh REG(dh) #define al REG(al) #define bl REG(bl) #define cl REG(cl) #define dl REG(dl) #define mm1 REG(mm1) #define mm2 REG(mm2) #define mm3 REG(mm3) #define mm4 REG(mm4) #define mm5 REG(mm5) #define mm6 REG(mm6) #define mm7 REG(mm7) #ifdef _I386MACH_NEED_SOTYPE_FUNCTION #define SOTYPE_FUNCTION(sym) .type SYM(sym),@function #else #define SOTYPE_FUNCTION(sym) #endif #ifndef _I386MACH_DISABLE_HW_INTERRUPTS #define __CLI #define __STI #else #define __CLI cli #define __STI sti #endif picolibc-1.7.4/newlib/libc/machine/i386/machine/000077500000000000000000000000001414576234500212145ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/i386/machine/fastmath.h000066400000000000000000000076701414576234500232060ustar00rootroot00000000000000/* Copyright (c) 2007 Jeff Johnston */ #ifndef _MACHFASTMATH_H #define _MACHFASTMATH_H #if defined(__GNUC__) && __STDC__ - 0 > 0 #define __str1__(__x) #__x #define __str2__(__x) __str1__(__x) #define __U_L_PREFIX__ __str2__(__USER_LABEL_PREFIX__) __extension__ double atan2(double, double) __asm__(__U_L_PREFIX__ "_f_atan2"); __extension__ double exp(double) __asm__(__U_L_PREFIX__ "_f_exp"); __extension__ double frexp(double, int*) __asm__(__U_L_PREFIX__ "_f_frexp"); __extension__ double ldexp(double, int) __asm__(__U_L_PREFIX__ "_f_ldexp"); __extension__ double log(double) __asm__(__U_L_PREFIX__ "_f_log"); __extension__ double log10(double) __asm__(__U_L_PREFIX__ "_f_log10"); __extension__ double pow(double, double) __asm__(__U_L_PREFIX__ "_f_pow"); __extension__ double tan(double) __asm__(__U_L_PREFIX__ "_f_tan"); #if !defined(__STRICT_ANSI__) || defined(__cplusplus) || __STDC_VERSION__ >= 199901L __extension__ float atan2f(float, float) __asm__(__U_L_PREFIX__ "_f_atan2f"); __extension__ float expf(float) __asm__(__U_L_PREFIX__ "_f_expf"); __extension__ float frexpf(float, int*) __asm__(__U_L_PREFIX__ "_f_frexpf"); __extension__ float ldexpf(float, int) __asm__(__U_L_PREFIX__ "_f_ldexpf"); __extension__ long long llrint(double) __asm__(__U_L_PREFIX__ "_f_llrint"); __extension__ long long llrintf(float) __asm__(__U_L_PREFIX__ "_f_llrintf"); __extension__ long long llrintl(long double) __asm__(__U_L_PREFIX__ "_f_llrintl"); __extension__ float logf(float) __asm__(__U_L_PREFIX__ "_f_logf"); __extension__ float log10f(float) __asm__(__U_L_PREFIX__ "_f_log10f"); __extension__ long lrint(double) __asm__(__U_L_PREFIX__ "_f_lrint"); __extension__ long lrintf(float) __asm__(__U_L_PREFIX__ "_f_lrintf"); __extension__ long lrintl(long double) __asm__(__U_L_PREFIX__ "_f_lrintl"); __extension__ float powf(float, float) __asm__(__U_L_PREFIX__ "_f_powf"); __extension__ double rint(double) __asm__(__U_L_PREFIX__ "_f_rint"); __extension__ float rintf(float) __asm__(__U_L_PREFIX__ "_f_rintf"); __extension__ long double rintl(long double) __asm__(__U_L_PREFIX__ "_f_rintl"); __extension__ float tanf(float) __asm__(__U_L_PREFIX__ "_f_tanf"); #endif #else double EXFUN(_f_atan2,(double, double)); double EXFUN(_f_exp,(double)); double EXFUN(_f_frexp,(double, int*)); double EXFUN(_f_ldexp,(double, int)); double EXFUN(_f_log,(double)); double EXFUN(_f_log10,(double)); double EXFUN(_f_pow,(double, double)); #define atan2(__y,__x) _f_atan2((__y),(__x)) #define exp(__x) _f_exp(__x) #define frexp(__x,__p) _f_frexp((__x),(__p)) #define ldexp(__x,__e) _f_ldexp((__x),(__e)) #define log(__x) _f_log(__x) #define log10(__x) _f_log10(__x) #define pow(__x,__y) _f_pow((__x),(__y)) #ifndef __STRICT_ANSI__ float EXFUN(_f_atan2f,(float, float)); float EXFUN(_f_expf,(float)); float EXFUN(_f_frexpf,(float, int*)); float EXFUN(_f_ldexpf,(float, int)); long long EXFUN(_f_llrint,(double)); long long EXFUN(_f_llrintf,(float)); long long EXFUN(_f_llrintl,(long double)); float EXFUN(_f_logf,(float)); float EXFUN(_f_log10f,(float)); long EXFUN(_f_lrint,(double)); long EXFUN(_f_lrintf,(float)); long EXFUN(_f_lrintl,(long double)); float EXFUN(_f_powf,(float, float)); float EXFUN(_f_rint,(double)); double EXFUN(_f_rintf,(float)); long double EXFUN(_f_rintl,(long double)); #define atan2f(__y,__x) _f_atan2f((__y),(__x)) #define expf(__x) _f_expf(__x) #define frexpf(__x,__p) _f_frexpf((__x),(__p)) #define ldexpf(__x,__e) _f_ldexpf((__x),(__e)) #define llrint(__x) _f_llrint((__x)) #define llrintf(__x) _f_llrintf((__x)) #define llrintl(__x) _f_llrintl((__x)) #define logf(__x) _f_logf(__x) #define log10f(__x) _f_log10f(__x) #define lrint(__x) _f_lrint((__x)) #define lrintf(__x) _f_lrintf((__x)) #define lrintl(__x) _f_lrintl((__x)) #define powf(__x,y) _f_powf((__x),(__y)) #define rint(__x) _f_rint((__x)) #define rintf(__x) _f_rintf((__x)) #define rintl(__x) _f_rintl((__x)) #endif #endif /* GCC */ #endif /* _MACHFASTMATH_H */ picolibc-1.7.4/newlib/libc/machine/i386/machine/meson.build000066400000000000000000000032521414576234500233600ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2020 Keith Packard, # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # inc_machine_headers_machine = [ 'fastmath.h' ] install_headers(inc_machine_headers_machine, subdir:'machine' ) picolibc-1.7.4/newlib/libc/machine/i386/memchr.S000066400000000000000000000032431414576234500212110ustar00rootroot00000000000000/* * ==================================================== * Copyright (C) 1998, 2002, 2008 by Red Hat Inc. All rights reserved. * * Permission to use, copy, modify, and distribute this * software is freely granted, provided that this notice * is preserved. * ==================================================== */ #include "i386mach.h" .global SYM (memchr) SOTYPE_FUNCTION(memchr) SYM (memchr): #ifdef __iamcu__ pushl edi movl eax,edi movl edx,eax xorl edx,edx testl ecx,ecx jz L20 repnz scasb setnz dl decl edi decl edx andl edi,edx L20: movl edx,eax popl edi #else pushl ebp movl esp,ebp pushl edi movzbl 12(ebp),eax movl 16(ebp),ecx movl 8(ebp),edi xorl edx,edx testl ecx,ecx jz L20 #ifdef __OPTIMIZE_SIZE__ cld repnz scasb setnz dl decl edi #else /* !__OPTIMIZE_SIZE__ */ /* Do byte-wise checks until string is aligned. */ testl $3,edi je L5 cmpb (edi),al je L15 incl edi decl ecx je L20 testl $3,edi je L5 cmpb (edi),al je L15 incl edi decl ecx je L20 testl $3,edi je L5 cmpb (edi),al je L15 incl edi decl ecx je L20 /* Create a mask, then check a word at a time. */ L5: movb al,ah movl eax,edx sall $16,edx orl edx,eax pushl ebx .p2align 4,,7 L8: subl $4,ecx jc L9 movl (edi),edx addl $4,edi xorl eax,edx leal -16843009(edx),ebx notl edx andl edx,ebx testl $-2139062144,ebx je L8 subl $4,edi L9: popl ebx xorl edx,edx addl $4,ecx je L20 /* Final byte-wise checks. */ .p2align 4,,7 L10: cmpb (edi),al je L15 incl edi decl ecx jne L10 xorl edi,edi #endif /* !__OPTIMIZE_SIZE__ */ L15: decl edx andl edi,edx L20: movl edx,eax leal -4(ebp),esp popl edi leave #endif ret picolibc-1.7.4/newlib/libc/machine/i386/memcmp.S000066400000000000000000000033371414576234500212200ustar00rootroot00000000000000/* * ==================================================== * Copyright (C) 1998, 2002 by Red Hat Inc. All rights reserved. * * Permission to use, copy, modify, and distribute this * software is freely granted, provided that this notice * is preserved. * ==================================================== */ #include "i386mach.h" .global SYM (memcmp) SOTYPE_FUNCTION(memcmp) SYM (memcmp): #ifdef __iamcu__ pushl edi pushl esi movl eax,edi movl edx,esi cld /* check if length is zero in which case just return 0 */ xorl eax,eax testl ecx,ecx jz L4 /* compare any unaligned bytes or remainder bytes */ repz cmpsb /* set output to be < 0 if less than, 0 if equal, or > 0 if greater than */ xorl edx,edx movb -1(esi),dl movb -1(edi),al subl edx,eax L4: popl esi popl edi #else pushl ebp movl esp,ebp subl $16,esp pushl ebx pushl edi pushl esi movl 8(ebp),edi movl 12(ebp),esi movl 16(ebp),ecx cld /* check if length is zero in which case just return 0 */ xorl eax,eax testl ecx,ecx jz L4 #ifndef __OPTIMIZE_SIZE__ /* if aligned on long boundary, compare doublewords at a time first */ movl edi,eax orl esi,eax testb $3,al jne BYTECMP movl ecx,ebx shrl $2,ecx /* calculate number of long words to compare */ repz cmpsl jz L5 subl $4,esi subl $4,edi movl $4,ecx jmp BYTECMP L5: andl $3,ebx /* calculate number of remaining bytes */ movl ebx,ecx #endif /* not __OPTIMIZE_SIZE__ */ BYTECMP: /* compare any unaligned bytes or remainder bytes */ repz cmpsb /* set output to be < 0 if less than, 0 if equal, or > 0 if greater than */ L3: xorl edx,edx movb -1(esi),dl xorl eax,eax movb -1(edi),al subl edx,eax L4: leal -28(ebp),esp popl esi popl edi popl ebx leave #endif ret picolibc-1.7.4/newlib/libc/machine/i386/memcpy.S000066400000000000000000000022601414576234500212260ustar00rootroot00000000000000/* * ==================================================== * Copyright (C) 1998, 2002 by Red Hat Inc. All rights reserved. * * Permission to use, copy, modify, and distribute this * software is freely granted, provided that this notice * is preserved. * ==================================================== */ #include "i386mach.h" .global SYM (memcpy) SOTYPE_FUNCTION(memcpy) SYM (memcpy): #ifdef __iamcu__ pushl esi pushl edi movl eax,edi movl edx,esi rep movsb popl edi popl esi #else pushl ebp movl esp,ebp pushl esi pushl edi pushl ebx movl 8(ebp),edi movl 16(ebp),ecx movl 12(ebp),esi cld #ifndef __OPTIMIZE_SIZE__ cmpl $8,ecx jbe .L3 /* move any preceding bytes until destination address is long word aligned */ movl edi,edx movl ecx,ebx andl $3,edx jz .L11 movl $4,ecx subl edx,ecx andl $3,ecx subl ecx,ebx rep movsb mov ebx,ecx /* move bytes a long word at a time */ .L11: shrl $2,ecx .p2align 2 rep movsl movl ebx,ecx andl $3,ecx #endif /* !__OPTIMIZE_SIZE__ */ /* handle any remaining bytes */ .L3: rep movsb .L5: movl 8(ebp),eax leal -12(ebp),esp popl ebx popl edi popl esi leave #endif ret picolibc-1.7.4/newlib/libc/machine/i386/memmove.S000066400000000000000000000044161414576234500214060ustar00rootroot00000000000000/* * ==================================================== * Copyright (C) 1998, 2002 by Red Hat Inc. All rights reserved. * * Permission to use, copy, modify, and distribute this * software is freely granted, provided that this notice * is preserved. * ==================================================== */ #include "i386mach.h" .global SYM (memmove) SOTYPE_FUNCTION(memmove) SYM (memmove): #ifdef __iamcu__ pushl esi pushl edi movl eax,edi movl edx,esi cmp esi,edi ja .Lcopy_backward je .Lbwd_write_0bytes rep movsb popl edi popl esi ret .Lcopy_backward: lea -1(edi,ecx),edi lea -1(esi,ecx),esi std rep movsb cld .Lbwd_write_0bytes: popl edi popl esi #else pushl ebp movl esp,ebp pushl esi pushl edi pushl ebx movl 8(ebp),edi movl 16(ebp),ecx movl 12(ebp),esi /* check for destructive overlap (src < dst && dst < src + length) */ cld cmpl edi,esi jae .L2 leal -1(ecx,esi),ebx cmpl ebx,edi ja .L2 /* IF: destructive overlap, must copy backwards */ addl ecx,esi addl ecx,edi std #ifndef __OPTIMIZE_SIZE__ cmpl $8,ecx jbe .L13 .L18: /* move trailing bytes in reverse until destination address is long word aligned */ movl edi,edx movl ecx,ebx andl $3,edx jz .L21 movl edx,ecx decl esi decl edi subl ecx,ebx rep movsb mov ebx,ecx incl esi incl edi .L21: /* move bytes in reverse, a long word at a time */ shrl $2,ecx subl $4,esi subl $4,edi rep movsl addl $4,esi addl $4,edi movl ebx,ecx andl $3,ecx #endif /* !__OPTIMIZE_SIZE__ */ /* handle any remaining bytes not on a long word boundary */ .L13: decl esi decl edi .L15: rep movsb jmp .L5 .p2align 4,,7 /* ELSE: no destructive overlap so we copy forwards */ .L2: #ifndef __OPTIMIZE_SIZE__ cmpl $8,ecx jbe .L3 /* move any preceding bytes until destination address is long word aligned */ movl edi,edx movl ecx,ebx andl $3,edx jz .L11 movl $4,ecx subl edx,ecx andl $3,ecx subl ecx,ebx rep movsb mov ebx,ecx /* move bytes a long word at a time */ .L11: shrl $2,ecx .p2align 2 rep movsl movl ebx,ecx andl $3,ecx #endif /* !__OPTIMIZE_SIZE__ */ /* handle any remaining bytes */ .L3: rep movsb .L5: movl 8(ebp),eax cld leal -12(ebp),esp popl ebx popl edi popl esi leave #endif ret picolibc-1.7.4/newlib/libc/machine/i386/memset.S000066400000000000000000000030141414576234500212240ustar00rootroot00000000000000/* * ==================================================== * Copyright (C) 1998, 2002, 2008 by Red Hat Inc. All rights reserved. * * Permission to use, copy, modify, and distribute this * software is freely granted, provided that this notice * is preserved. * ==================================================== */ #include "i386mach.h" .global SYM (memset) SOTYPE_FUNCTION(memset) SYM (memset): #ifdef __iamcu__ pushl edi movl eax,edi movzbl dl,eax mov edi,edx rep stosb mov edx,eax popl edi #else pushl ebp movl esp,ebp pushl edi movl 8(ebp),edi movzbl 12(ebp),eax movl 16(ebp),ecx cld #ifndef __OPTIMIZE_SIZE__ /* Less than 16 bytes won't benefit from the 'rep stosl' loop. */ cmpl $16,ecx jbe .L19 testl $7,edi je .L10 /* It turns out that 8-byte aligned 'rep stosl' outperforms 4-byte aligned on some x86 platforms. */ movb al,(edi) incl edi decl ecx testl $7,edi je .L10 movb al,(edi) incl edi decl ecx testl $7,edi je .L10 movb al,(edi) incl edi decl ecx testl $7,edi je .L10 movb al,(edi) incl edi decl ecx testl $7,edi je .L10 movb al,(edi) incl edi decl ecx testl $7,edi je .L10 movb al,(edi) incl edi decl ecx testl $7,edi je .L10 movb al,(edi) incl edi decl ecx /* At this point, ecx>8 and edi%8==0. */ .L10: movb al,ah movl eax,edx sall $16,edx orl edx,eax movl ecx,edx shrl $2,ecx andl $3,edx rep stosl movl edx,ecx #endif /* not __OPTIMIZE_SIZE__ */ .L19: rep stosb movl 8(ebp),eax leal -4(ebp),esp popl edi leave #endif ret picolibc-1.7.4/newlib/libc/machine/i386/meson.build000066400000000000000000000033651414576234500217610ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # srcs_machine = [ 'memchr.S', 'memcmp.S', 'memcpy.S', 'memmove.S', 'memset.S', 'setjmp.S', 'strchr.S', 'strlen.S', ] subdir('machine') set_variable('src_machine', files(srcs_machine)) picolibc-1.7.4/newlib/libc/machine/i386/setjmp.S000066400000000000000000000044571414576234500212500ustar00rootroot00000000000000/* This is file is a merger of SETJMP.S and LONGJMP.S */ /* * This file was modified to use the __USER_LABEL_PREFIX__ and * __REGISTER_PREFIX__ macros defined by later versions of GNU cpp by * Joel Sherrill (joel@OARcorp.com) * Slight change: now includes i386mach.h for this (Werner Almesberger) * * Copyright (C) 1991 DJ Delorie * All rights reserved. * * Redistribution, modification, and use in source and binary forms is permitted * provided that the above copyright notice and following paragraph are * duplicated in all such forms. * * This file is distributed WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ /* ** jmp_buf: ** eax ebx ecx edx esi edi ebp esp eip ** 0 4 8 12 16 20 24 28 32 ** ** Intel MCU jmp_buf: ** ebx esi edi ebp esp eip ** 0 4 8 12 16 20 */ #include "i386mach.h" .global SYM (setjmp) .global SYM (longjmp) SOTYPE_FUNCTION(setjmp) SOTYPE_FUNCTION(longjmp) SYM (setjmp): #ifdef __iamcu__ /* Store EIP. */ movl 0(esp),ecx movl ecx,20(eax) movl ebx,0 (eax) movl esi,4 (eax) movl edi,8 (eax) movl ebp,12(eax) /* Skip return address, which will be pushed onto stack in longjmp, and store SP. */ leal 4(esp),ecx movl ecx,16(eax) xorl eax,eax #else pushl ebp movl esp,ebp pushl edi movl 8 (ebp),edi movl eax,0 (edi) movl ebx,4 (edi) movl ecx,8 (edi) movl edx,12 (edi) movl esi,16 (edi) movl -4 (ebp),eax movl eax,20 (edi) movl 0 (ebp),eax movl eax,24 (edi) movl esp,eax addl $12,eax movl eax,28 (edi) movl 4 (ebp),eax movl eax,32 (edi) popl edi movl $0,eax leave #endif ret SYM (longjmp): #ifdef __iamcu__ /* Check retval. */ testl edx,edx jne 0f incl edx 0: /* Restore stack first. */ movl 16(eax),esp /* Put return address on stack. */ pushl 20(eax) movl 0(eax),ebx movl 4(eax),esi movl 8(eax),edi movl 12(eax),ebp movl edx,eax #else pushl ebp movl esp,ebp movl 8(ebp),edi /* get jmp_buf */ movl 12(ebp),eax /* store retval in j->eax */ testl eax,eax jne 0f incl eax 0: movl eax,0(edi) movl 24(edi),ebp __CLI movl 28(edi),esp pushl 32(edi) movl 0(edi),eax movl 4(edi),ebx movl 8(edi),ecx movl 12(edi),edx movl 16(edi),esi movl 20(edi),edi __STI #endif ret picolibc-1.7.4/newlib/libc/machine/i386/strchr.S000066400000000000000000000054211414576234500212430ustar00rootroot00000000000000/* * ==================================================== * Copyright (C) 1998, 2002, 2008 by Red Hat Inc. All rights reserved. * * Permission to use, copy, modify, and distribute this * software is freely granted, provided that this notice * is preserved. * ==================================================== */ #include "i386mach.h" .global SYM (strchr) SOTYPE_FUNCTION(strchr) SYM (strchr): #ifdef __iamcu__ xorl ecx,ecx movb dl,cl /* loop while (*s && *s++ != c) */ leal -1(eax),eax L15: incl eax movb (eax),dl testb dl,dl je L14 cmpb cl,dl jne L15 L14: /* if (*s == c) return address otherwise return NULL */ cmpb cl,(eax) je L19 xorl eax,eax L19: ret #else pushl ebp movl esp,ebp pushl edi pushl ebx xorl ebx,ebx movl 8(ebp),edi addb 12(ebp),bl #ifndef __OPTIMIZE_SIZE__ /* Special case strchr(p,0). */ je L25 /* Do byte-wise checks until string is aligned. */ test $3,edi je L5 movl edi,eax movb (eax),cl testb cl,cl je L14 cmpb bl,cl je L19 incl edi test $3,edi je L5 movl edi,eax movb (eax),cl testb cl,cl je L14 cmpb bl,cl je L19 incl edi test $3,edi je L5 movl edi,eax movb (eax),cl testb cl,cl je L14 cmpb bl,cl je L19 incl edi /* create 4 byte mask which is just the desired byte repeated 4 times */ L5: movl ebx,ecx sall $8,ebx subl $4,edi orl ecx,ebx movl ebx,edx sall $16,ebx orl edx,ebx /* loop performing 4 byte mask checking for 0 byte or desired byte */ .p2align 4,,7 L10: addl $4,edi movl (edi),ecx leal -16843009(ecx),edx movl ecx,eax notl eax andl eax,edx testl $-2139062144,edx jne L9 xorl ebx,ecx leal -16843009(ecx),edx notl ecx andl ecx,edx testl $-2139062144,edx je L10 #endif /* not __OPTIMIZE_SIZE__ */ /* loop while (*s && *s++ != c) */ L9: leal -1(edi),eax .p2align 4,,7 L15: incl eax movb (eax),dl testb dl,dl je L14 cmpb bl,dl jne L15 L14: /* if (*s == c) return address otherwise return NULL */ cmpb bl,(eax) je L19 xorl eax,eax L19: leal -8(ebp),esp popl ebx popl edi leave ret #ifndef __OPTIMIZE_SIZE__ /* Special case strchr(p,0). */ #if 0 /* Hideous performance on modern machines. */ L25: cld movl $-1,ecx xor eax,eax repnz scasb leal -1(edi),eax jmp L19 #endif L25: /* Do byte-wise checks until string is aligned. */ test $3,edi je L26 movl edi,eax movb (eax),cl testb cl,cl je L19 incl edi test $3,edi je L26 movl edi,eax movb (eax),cl testb cl,cl je L19 incl edi test $3,edi je L26 movl edi,eax movb (eax),cl testb cl,cl je L19 incl edi L26: subl $4,edi /* loop performing 4 byte mask checking for desired 0 byte */ .p2align 4,,7 L27: addl $4,edi movl (edi),ecx leal -16843009(ecx),edx movl ecx,eax notl eax andl eax,edx testl $-2139062144,edx je L27 jmp L9 #endif /* !__OPTIMIZE_SIZE__ */ #endif /* __iamcu__ */ picolibc-1.7.4/newlib/libc/machine/i386/strlen.S000066400000000000000000000027231414576234500212470ustar00rootroot00000000000000/* * ==================================================== * Copyright (C) 1998, 2002, 2008 by Red Hat Inc. All rights reserved. * * Permission to use, copy, modify, and distribute this * software is freely granted, provided that this notice * is preserved. * ==================================================== */ #include "i386mach.h" .global SYM (strlen) SOTYPE_FUNCTION(strlen) SYM (strlen): pushl ebp movl esp,ebp pushl edi #ifdef __iamcu__ movl eax,edx #else movl 8(ebp),edx #endif #if defined __OPTIMIZE_SIZE__ || defined __iamcu__ cld movl edx,edi movl $4294967295,ecx xor eax,eax repnz scasb #else /* Modern x86 hardware is much faster at double-word manipulation than with bytewise repnz scasb. */ /* Do byte-wise checks until string is aligned. */ movl edx,edi test $3,edi je L5 movb (edi),cl incl edi testb cl,cl je L15 test $3,edi je L5 movb (edi),cl incl edi testb cl,cl je L15 test $3,edi je L5 movb (edi),cl incl edi testb cl,cl je L15 L5: subl $4,edi /* loop performing 4 byte mask checking for desired 0 byte */ .p2align 4,,7 L10: addl $4,edi movl (edi),ecx leal -16843009(ecx),eax notl ecx andl ecx,eax testl $-2139062144,eax je L10 /* Find which of four bytes is 0. */ notl ecx incl edi testb cl,cl je L15 incl edi shrl $8,ecx testb cl,cl je L15 incl edi shrl $8,ecx testb cl,cl je L15 incl edi #endif L15: subl edx,edi leal -1(edi),eax leal -4(ebp),esp popl edi leave ret picolibc-1.7.4/newlib/libc/machine/i960/000077500000000000000000000000001414576234500176065ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/i960/memccpy.S000066400000000000000000000113431414576234500213710ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ .file "memccpy.s" #ifdef __PIC .pic #endif #ifdef __PID .pid #endif /* * (c) copyright 1989,1993 Intel Corp., all rights reserved */ /* procedure memccpy (optimized assembler version for the 80960K series) dest_addr = memccpy (dest_addr, src_addr, char, len) copy len bytes pointed to by src_addr to the space pointed to by dest_addr, stopping if char is copied. If char is copied, return address of byte after char in dest string; else null. Undefined behavior will occur if the end of the source array is in the last two words of the program's allocated memory space. This is so because the routine fetches ahead. Disallowing the fetch ahead would impose a severe performance penalty. Undefined behavior will also occur if the source and destination strings overlap. Strategy: Fetch the source array by words and store them by words to the destination array, until there are fewer than three bytes left to copy. Then, using the last word of the source (the one that contains the remaining 0, 1, 2, or 3 bytes to be copied), store a byte at a time until Ldone. Tactics: 1) Do NOT try to fetch and store the words in a word aligned manner because, in my judgement, the performance degradation experienced due to non-aligned accesses does NOT outweigh the time and complexity added by the preamble and convoluted body that would be necessary to assure alignment. This is supported by the intuition that most source and destination arrays (even more true of most big source arrays) will be word aligned to begin with. 2) Rather than decrementing len to zero, I calculate the address of the byte after the last byte of the destination array, and quit when the destination byte pointer passes that. */ .globl _memccpy .leafproc _memccpy, __memccpy .align 2 _memccpy: #ifndef __PIC lda Lrett,g14 #else lda Lrett-(.+8)(ip),g14 #endif __memccpy: mov g14, g13 # preserve return address cmpibge 0,g3,Lexit_char_not_found addo g3,g1,g3 # compute beyond end of src ld (g1), g7 # fetch first word of source lda 0xff,g5 # mask for char and g5,g2,g2 # extract only char shlo 8,g2,g6 or g2,g6,g6 shlo 16,g6,g4 or g6,g4,g6 # word of char b Lwloop_b Lwloop_a: ld (g1), g7 # fetch ahead next word of source st g4, (g0) # store word to dest addo 4, g0, g0 # post-increment dest pointer Lwloop_b: # word copying loop addo 4, g1, g1 # pre-increment src pointer cmpo g3, g1 # is len <= 3 ? mov g7, g4 # keep a copy of the current word bl Lcloop_setup # quit word loop if less than 4 bytes scanbyte g6, g7 # check for char bno Lwloop_a # continue word loop if char not found. Lcloop_setup: subo 4, g1, g1 # back down src pointer cmpobe g1, g3, Lexit_char_not_found Lcloop_a: # character copying loop (len < 3) and g5,g4,g7 # check the byte against char cmpo g7,g2 stob g7,(g0) # store the byte addo 1, g0, g0 be Lexit_char_found addo 1,g1,g1 cmpo g1,g3 shro 8,g4,g4 # position next byte bne Lcloop_a Lexit_char_not_found: mov 0, g0 Lexit_char_found: lda 0,g14 bx (g13) # g0 = dest array address; g14 = 0 Lrett: ret /* end of memccpy */ picolibc-1.7.4/newlib/libc/machine/i960/memccpy_ca.S000066400000000000000000000176531414576234500220460ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ .file "mccpy_ca.s" #ifdef __PIC .pic #endif #ifdef __PID .pid #endif /* * (c) copyright 1989,1993 Intel Corp., all rights reserved */ /* procedure memccpy (optimized assembler version for the 80960CA) dest_addr = memccpy (dest_addr, src_addr, char, len) copy len bytes pointed to by src_addr to the space pointed to by dest_addr, stopping if char is copied. If char is copied, return address of byte after char in dest string; else null. Undefined behavior will occur if the end of the source array is in the last two words of the program's allocated memory space. This is so because the routine fetches ahead. Disallowing the fetch ahead would impose a severe performance penalty. Undefined behavior will also occur if the source and destination strings overlap. This program handles five cases: 1) both arguments start on a word boundary 2) neither are word aligned, but they are offset by the same amount 3) source is word aligned, destination is not 4) destination is word aligned, source is not 5) neither is word aligned, and they are offset by differing amounts At the time of this writing, only g0 thru g7 and g13 are available for use in this leafproc; other registers would have to be saved and restored. These nine registers, plus tricky use of g14 are sufficient to implement the routine. */ #if __i960_BIG_ENDIAN__ #define MSW g6 #define LSW g7 #else #define LSW g6 #define MSW g7 #endif .globl _memccpy .leafproc _memccpy, __memccpy .align 2 _memccpy: #ifndef __PIC lda Lrett,g14 #else lda Lrett-(.+8)(ip),g14 #endif __memccpy: notand g1,3,g5 # extract word addr of start of src lda (g14),g13 # preserve return address cmpibge.f 0,g3,Lexit_char_not_found # Lexit if # of bytes to move is <= 0 cmpo g5,g1 # check alignment of src ld (g5),LSW # fetch word containing at least first byte notand g0,3,g4 # extract word addr of start of dest lda 4(g5),g5 # advance src word addr shlo 24,g2,g2 # reduce char to single byte bne.f Lcase_245 # branch if src is NOT word aligned Lcase_13: cmpobe.t g0,g4,Lcase_1_setup # branch if dest word aligned Lcase_3: # src is word aligned; dest is not mov LSW,MSW # make copy of first word of src addo 4,g4,g1 # move dest word ptr to first word boundary lda 32,g14 # initialize shift count to zero Lcase_25: Lcase_3_cloop_at_start: # character copying loop for start of dest str cmpdeci 0,g3,g3 # is max_bytes exhausted? #if __i960_BIG_ENDIAN__ lda -8(g14),g14 # augment the shift counter #else lda 8(g14),g14 # augment the shift counter #endif be.f Lexit_char_not_found # Lexit if max_bytes is exhausted #if __i960_BIG_ENDIAN__ rotate 8,MSW,MSW # move next byte into position for extraction #endif shlo 24,MSW,g4 stob MSW,(g0) # store the byte in dest cmpo g4,g2 lda 1(g0),g0 # post-increment dest ptr #if ! __i960_BIG_ENDIAN__ shro 8,MSW,MSW # move next byte into position for extraction #endif be.f Lexit_char_found # Lexit if char found cmpobne.t g1,g0,Lcase_3_cloop_at_start # branch if reached word boundary ld (g5),MSW # fetch msw of operand for double shift Lcase_4: shro 8,g2,g4 or g4,g2,g1 shro 16,g1,g4 or g4,g1,g4 #if __i960_BIG_ENDIAN__ cmpobne 0,g14,Lcase_3_wloop Lcase_3_wloop2: cmpi g3,4 # less than four bytes to move? lda 4(g5),g5 # post-increment src word addr mov LSW,g1 # extract 4 bytes of src bl.f Lcase_13_cloop_setup # branch if < four bytes left to move scanbyte g4,g1 # branch if word has char in it bo.f Lcase_13_cloop_setup mov MSW,LSW # move msw to lsw ld (g5),MSW # pre-fetch msw of operand for double shift subi 4,g3,g3 # decrease max_byte count by the 4 bytes moved st g1,(g0) # store 4 bytes to dest addo 4,g0,g0 # post-increment dest ptr b Lcase_3_wloop2 #endif Lcase_3_wloop: cmpi g3,4 # less than four bytes to move? lda 4(g5),g5 # post-increment src word addr eshro g14,g6,g1 # extract 4 bytes of src bl.f Lcase_13_cloop_setup # branch if < four bytes left to move scanbyte g4,g1 # branch if word has char in it bo.f Lcase_13_cloop_setup mov MSW,LSW # move msw to lsw ld (g5),MSW # pre-fetch msw of operand for double shift subi 4,g3,g3 # decrease max_byte count by the 4 bytes moved st g1,(g0) # store 4 bytes to dest addo 4,g0,g0 # post-increment dest ptr b Lcase_3_wloop Lcase_1_setup: subo 4,g0,g0 # store is pre-incrementing; back up dest addr shro 8,g2,g4 or g4,g2,MSW shro 16,MSW,g4 or g4,MSW,g4 b Lcase_1 Lcase_1_wloop: # word copying loop subi 4,g3,g3 # decrease max_byte count by the 4 bytes moved ld (g5),LSW # pre-fetch next word of src addo 4,g5,g5 # post-increment src addr st g1,(g0) # store word in dest string Lcase_1: # src and dest are word aligned cmpi g3,4 # check for fewer than four bytes to move addo 4,g0,g0 # pre-increment dest addr lda (LSW),g1 # keep a copy of the src word bl.f Lcase_13_cloop_setup # branch if less than four bytes to copy scanbyte LSW,g4 # branch if char is not in foursome bno.t Lcase_1_wloop Lcase_13_cloop_setup: cmpibe.f 0,g3,Lexit_char_not_found # Lexit if max_bytes is exhausted Lcase_1_cloop: #if __i960_BIG_ENDIAN__ rotate 8,g1,g1 # move next byte into position for extraction #endif shlo 24,g1,g4 stob g1,(g0) # store the byte in dest cmpo g4,g2 lda 1(g0),g0 # post-increment dest byte addr subi 1,g3,g3 be.f Lexit_char_found # Lexit if char reached cmpi 0,g3 #if ! __i960_BIG_ENDIAN__ shro 8,g1,g1 # move next byte into position for extraction #endif bne.t Lcase_1_cloop # continue if len not exhausted Lexit_char_not_found: mov 0,g0 Lexit_char_found: lda 0,g14 bx (g13) # g0 = dest array address; g14 = 0 Lrett: ret Lcase_245: cmpo g0,g4 # check alignment of dest ld (g5),MSW # pre-fetch second half and 3,g1,g1 # compute shift count shlo 3,g1,g14 #if __i960_BIG_ENDIAN__ subo g14,0,g14 # adjust shift count for big endian #endif be.t Lcase_4 # branch if dest is word aligned or g4,g1,g1 # is src earlier in word, later, or sync w/ dst cmpo g0,g1 # < indicates first word of dest has more bytes /* than first word of source. */ eshro g14,g6,g4 # extract four bytes lda 4(g0),g1 # move dest word addr to first word boundary #if __i960_BIG_ENDIAN__ bge.f 1f #else bg.f 1f #endif mov MSW,LSW lda 4(g5),g5 # move src word addr to second word boundary 1: notand g1,3,g1 mov g4,MSW b Lcase_25 /* end of memccpy */ picolibc-1.7.4/newlib/libc/machine/i960/memchr.S000066400000000000000000000113431414576234500212070ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ .file "memchr.s" #ifdef __PIC .pic #endif #ifdef __PID .pid #endif /* * (c) copyright 1988,1993 Intel Corp., all rights reserved */ /* procedure memchr (optimized assembler version for the 80960K series) src_addr = memchr (src_addr, char, max_bytes) searching from src_addr for a span of max_bytes bytes, return a pointer to the first byte in the source array that contains the indicated char. Return null if the char is not found. Undefined behavior will occur if the last byte of the source array is in the last two words of the program's allocated memory space. This is so because memchr fetches ahead. Disallowing the fetch ahead would impose a severe performance penalty. Strategy: Fetch the source array by words and scanbyte the words for the char until either a word with the byte is found or max_bytes is exhausted. In the former case, move through the word to find the matching byte and return its memory address. In the latter case, return zero (null). Tactics: 1) Do NOT try to fetch the words in a word aligned manner because, in my judgement, the performance degradation experienced due to non-aligned accesses does NOT outweigh the time and complexity added by the preamble that would be necessary to assure alignment. This is supported by the intuition that most source arrays (even more true of most big source arrays) will be word aligned to begin with. 2) Rather than decrementing max_bytes to zero, I calculate the address of the byte after the last byte of the source array, and quit when the source byte pointer passes that. Refining, actually I calculate the address of the fifth byte after the last byte of the source array, because the source byte pointer is ahead of the actual examination point due to fetch ahead. */ .globl _memchr .globl __memchr .leafproc _memchr, __memchr .align 2 _memchr: #ifndef __PIC lda Lrett,g14 #else lda Lrett-(.+8)(ip),g14 #endif __memchr: mov g14,g13 # preserve return address lda 0xff,g7 # byte extraction mask and g1,g7,g1 # make char an 8-bit ordinal mov 0,g14 # conform to register linkage standard cmpibge 0,g2,Lnot_found # do nothing if max_bytes <= 0 addo 4,g0,g6 # post-increment src word pointer addo g2,g6,g2 # compute ending address from start and len ld (g0),g4 # fetch first word shlo 8,g1,g3 # broadcast the char to four bytes or g1,g3,g3 shlo 16,g3,g5 or g3,g5,g3 Lsearch_for_word_with_char: mov g4,g5 # keep a copy of word scanbyte g3,g5 # check for byte with char ld (g6),g4 # fetch next word of src bo Lsearch_for_char # branch if null found addo 4,g6,g6 # post-increment src word pointer cmpobge g2,g6,Lsearch_for_word_with_char # branch if max_bytes > 3 Lnot_found: mov 0,g0 # char not found. Return null bx (g13) # g0 = addr of char in src (or null); g14 = 0 Lrett: ret Lsearch_for_char: cmpobe.f g6,g2,Lnot_found # quit if max_bytes exhausted and g5,g7,g0 # extract byte cmpo g1,g0 # is it char? addo 1,g6,g6 # bump src byte ptr shro 8,g5,g5 # shift word to position next byte bne.t Lsearch_for_char subo 5,g6,g0 # back up the byte pointer bx (g13) /* end of memchr */ picolibc-1.7.4/newlib/libc/machine/i960/memchr_ca.S000066400000000000000000000123751414576234500216600ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ .file "memchr_ca.s" #ifdef __PIC .pic #endif #ifdef __PID .pid #endif /* * (c) copyright 1988,1993 Intel Corp., all rights reserved */ /* procedure memchr (optimized assembler version for the CA) src_addr = memchr (src_addr, char, max_bytes) searching from src_addr for max_bytes bytes, return a pointer to the first byte that contains the indicated byte in the source string. Return null if the byte is not found. Undefined behavior will occur if the end of the source string (i.e. the terminating null byte) is in the last two words of the program's allocated memory space. This is so because, in several cases, memchr will fetch ahead. Disallowing the fetch ahead would impose a severe performance penalty. This program handles two cases: 1) the argument starts on a word boundary 2) the argument doesn't start on a word boundary At the time of this writing, only g0 thru g7 and g13 are available for use in this leafproc; other registers would have to be saved and restored. These nine registers, plus tricky use of g14 are sufficient to implement the routine. The registers are used as follows: g0 src ptr; upon return it is a pointer to the matching byte, or null g1 char to seek g2 maximum number of bytes to check g3 char to seek, broadcast to all four bytes g4 word of the source string g5 copy of the word g6 mask to avoid unimportant bytes in first word g7 byte extraction mask g13 return address g14 */ .globl _memchr .globl __memchr .leafproc _memchr, __memchr .align 2 _memchr: #ifndef __PIC lda Lrett,g14 #else lda Lrett-(.+8)(ip),g14 #endif __memchr: mov g14,g13 # preserve return address lda 0xff,g7 # byte extraction mask and g1,g7,g1 # make char an 8-bit ordinal lda 0,g14 # conform to register linkage standard cmpibge.f 0,g2,Lnot_found # do nothing if max_bytes <= 0 addo g0,g2,g2 # compute ending address from start and len and g0,3,g6 # extract byte offset of src notand g0,3,g0 # extract word addr of start of src shlo 8,g1,g3 # broadcast the char to four bytes ld (g0),g4 # fetch word containing at least first byte or g1,g3,g3 shlo 16,g3,g5 cmpo g1,g7 # is char being sought 0xff? or g5,g3,g3 shlo 3,g6,g6 # get shift count for making mask for first word subi 1,0,g5 # mask initially all ones #if __i960_BIG_ENDIAN__ shro g6,g5,g5 # get mask for bytes needed from first word #else shlo g6,g5,g5 # get mask for bytes needed from first word #endif notor g4,g5,g4 # set unneeded bytes to all ones be.f Lsearch_for_0xff # branch if seeking 0xff Lsearch_for_word_with_char: scanbyte g3,g4 # check for byte with char lda 4(g0),g0 # pre-increment src word pointer mov g4,g5 # keep a copy of word ld (g0),g4 # fetch next word of src bo.f Lsearch_for_char # branch if null found cmpoble.t g0,g2,Lsearch_for_word_with_char # branch if not null Lnot_found: mov 0,g0 # char not found. Return null Lexit_code: bx (g13) # g0 = addr of char in src (or null); g14 = 0 Lrett: ret Lsearch_for_char: subo 4,g0,g0 # back up the byte pointer Lsearch_for_char.a: cmpobe.f g0,g2,Lnot_found # quit if max_bytes exhausted #if __i960_BIG_ENDIAN__ rotate 8,g5,g5 # shift word to position next byte #endif and g5,g7,g6 # extract byte cmpo g1,g6 # is it char? lda 1(g0),g0 # bump src byte ptr #if ! __i960_BIG_ENDIAN__ shro 8,g5,g5 # shift word to position next byte #endif bne.t Lsearch_for_char.a subo 1,g0,g0 # back up the byte pointer b Lexit_code Lsearch_for_0xff: lda 0xf0f0f0f0,g6 # make first comparison mask for char=-1 case. or g6,g5,g6 and g4,g6,g4 # make unimportant bytes of first word 0x0f b Lsearch_for_word_with_char /* end of memchr */ picolibc-1.7.4/newlib/libc/machine/i960/memcmp.S000066400000000000000000000110241414576234500212060ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ .file "memcmp.s" #ifdef __PIC .pic #endif #ifdef __PID .pid #endif /* * (c) copyright 1988,1993 Intel Corp., all rights reserved */ /* procedure memcmp (optimized assembler version for the 80960K series) result = memcmp (src1_addr, src2_addr, max_bytes) compare the byte array pointed to by src1_addr to the byte array pointed to by src2_addr. Return 0 iff the arrays are equal, -1 iff src1_addr is lexicographically less than src2_addr, and 1 iff it is lexicographically greater. Do not compare more than max_bytes bytes. Undefined behavior will occur if the end of either source array is in the last two words of the program's allocated memory space. This is so because memcmp fetches ahead. Disallowing the fetch ahead would impose a severe performance penalty. Strategy: Fetch the source strings by words and compare the words until either a differing word is found or max_bytes is exhausted. In the former case, move through the words to find the differing byte and return plus or minus one, appropriately. In the latter case, return zero (equality). Tactics: 1) Do NOT try to fetch the words in a word aligned manner because, in my judgement, the performance degradation experienced due to non-aligned accesses does NOT outweigh the time and complexity added by the preamble that would be necessary to assure alignment. This is supported by the intuition that most source arrays (even more true of most big source arrays) will be word aligned to begin with. 2) Rather than decrementing max_bytes to zero, I calculate the address of the byte after the last byte of the source_1 array, and quit when the source byte pointer passes that. */ .globl _memcmp .globl __memcmp .leafproc _memcmp,__memcmp .align 2 _memcmp: #ifndef __PIC lda .Lrett,g14 #else lda .Lrett-(.+8)(ip),g14 #endif __memcmp: mov g14,g13 # preserve return address ldconst 0,g14 # conform to register conventions cmpibge 0,g2,Lequal_exit # quit if max_bytes <= 0 addo g0,g2,g2 # calculate byte addr of byte after last in src1 .Lwloop: cmpo g0,g2 ld (g0), g5 # fetch word of source_1 bge Lequal_exit # quit (equal) if max_bytes exhausted ld (g1), g3 # fetch word of source_2 addo 4,g0,g0 # post-increment source_1 byte ptr addo 4,g1,g1 # post-increment source_2 byte ptr cmpobe g5,g3,.Lwloop # branch if source words are equal ldconst 0xff,g4 # byte extraction mask subo 4,g0,g0 # back up src1 pointer .Lcloop: and g4,g5,g7 # extract and compare individual bytes and g4,g3,g6 cmpobne g7,g6,.diff # branch if they are different shlo 8,g4,g4 # position mask for next extraction addo 1,g0,g0 cmpobl g0,g2,.Lcloop # quit if max_bytes is exhausted Lequal_exit: mov 0,g0 bx (g13) .Lrett: ret .diff: bl .neg # arrays differ at current byte. /* return 1 or -1 appropriately */ mov 1,g0 bx (g13) .neg: subi 1,0,g0 .Lexit: bx (g13) /* end or memcmp */ picolibc-1.7.4/newlib/libc/machine/i960/memcmp_ca.S000066400000000000000000000153411414576234500216570ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ .file "memcm_ca.s" #ifdef __PIC .pic #endif #ifdef __PID .pid #endif /* * (c) copyright 1988,1992,1993 Intel Corp., all rights reserved */ /* procedure memcmp (optimized assembler version for the CA) result = memcmp (src1_addr, src2_addr, max_bytes) compare the byte array pointed to by src1_addr to the byte array pointed to by src2_addr. Return 0 iff the arrays are equal, -1 if src1_addr is lexicly less than src2_addr, and 1 if it is lexicly greater. Do not compare more than max_bytes bytes. Undefined behavior will occur if the end of either source array is in the last word of the program's allocated memory space. This is so because, in several cases, memcmp will fetch ahead one word. Disallowing the fetch ahead would impose a severe performance penalty. This program handles five cases: 1) both arguments start on a word boundary 2) neither are word aligned, but they are offset by the same amount 3) source1 is word aligned, source2 is not 4) source2 is word aligned, source1 is not 5) neither is word aligned, and they are offset by differing amounts At the time of this writing, only g0 thru g7 and g14 are available for use in this leafproc; other registers would have to be saved and restored. These nine registers are sufficient to implement the routine. The registers are used as follows: g0 original src1 ptr; extracted word; return result g1 src2 ptr; byt extraction mask g2 maximum number of bytes to compare g3 src2 word ptr Little endian g4 lsw of src1 g5 msw of src1 g6 src2 word g7 src1 word ptr Big endian g4 msw of src1 g5 lsw of src1 g6 src1 word ptr g7 src2 word g13 return address g14 shift count */ #if __i960_BIG_ENDIAN__ #define MSW g4 #define LSW g5 #define SRC1 g6 #define SRC2 g7 #else #define LSW g4 #define MSW g5 #define SRC2 g6 #define SRC1 g7 #endif .globl _memcmp .globl __memcmp .leafproc _memcmp, __memcmp .align 2 _memcmp: #ifndef __PIC lda Lrett,g14 #else lda Lrett-(.+8)(ip),g14 #endif __memcmp: Lrestart: #if __i960_BIG_ENDIAN__ subo 1,g0,SRC1 notand SRC1,3,SRC1 # extract word addr of start of src1 #else notand g0,3,SRC1 # extract word addr of start of src1 #endif lda (g14),g13 # preserve return address cmpibge.f 0,g2,Lequal_exit # return equality if number bytes 0 notand g1,3,g3 # extract word addr of start of src2 ld (SRC1),LSW # fetch word with at least first byte of src1 cmpo g3,g1 # check alignment of src2 ld 4(SRC1),MSW # fetch second word of src1 shlo 3,g0,g14 # compute shift count for src1 #if __i960_BIG_ENDIAN__ subo g14,0,g14 # adjust shift count for big endian. #endif ld (g3),SRC2 # fetch word with at least first byte of src2 eshro g14,g4,LSW # extract word of src1 lda 8(SRC1),SRC1 # advance src1 word addr bne.f Lsrc2_unaligned # branch if src2 is NOT word aligned mov LSW,g0 # at least src2 is word aligned lda 0xff,g1 Lwloop: # word comparing loop cmpo SRC2,g0 # compare src1 and src2 words lda 4(g3),g3 # pre-increment src2 addr mov MSW,LSW # move msw of src1 to lsw ld (SRC1),MSW # pre-fetch next msw of src1 subi 4,g2,g2 # decrement maximum byte count bne.f Lcloop # branch if src1 and src2 unequal cmpi 0,g2 ld (g3),SRC2 # pre-fetch next word of src2 eshro g14,g4,g0 # extract word of src1 lda 4(SRC1),SRC1 # post-increment src1 addr bl.t Lwloop # branch if max_bytes not reached yet b Lequal_exit # strings were equal up through max_bytes Lcloop_setup: # setup for coming from Lsrc2_unaligned mov LSW,g0 # restore extracted src1 word subo 4,g2,g2 # make up for later re-incrementing lda 0xff,g1 # byte extraction mask Lcloop: # character comparing loop #if __i960_BIG_ENDIAN__ rotate 24,g1,g1 # shift mask for next byte #endif and SRC2,g1,g3 # extract next char of src2 and g0,g1,LSW # extract next char of src1 cmpobne.f LSW,g3,.diff # check for equality #if ! __i960_BIG_ENDIAN__ shlo 8,g1,g1 # shift mask for next byte #endif subi 1,g2,g2 # decrement character counter b Lcloop # branch if null not reached Lequal_exit: # words are equal up thru null byte mov 0,g14 # conform to register conventions lda 0,g0 # return zero, indicating equality bx (g13) # return Lrett: ret .diff: addo 4,g2,g2 # to make up for extra decrement in loop lda 0,g14 bl Lless_than_exit Lgreater_than_exit: cmpibge.f 0,g2,Lequal_exit # branch if difference is beyond max_bytes mov 1,g0 bx (g13) # g0 = 1 (src1 > src2) Lless_than_exit: cmpibge.f 0,g2,Lequal_exit # branch if difference is beyond max_bytes subi 1,0,g0 bx (g13) # g0 = -1 (src1 < src2) Lsrc2_unaligned: notor g1,3,g14 # first step in computing new src1 ptr ld 4(g3),SRC1 # fetch second word of src2 shlo 3,g1,MSW # compute shift count for src2 #if __i960_BIG_ENDIAN__ subo MSW,0,MSW #endif eshro MSW,g6,SRC2 # extract word of src2 cmpo LSW,SRC2 # compare src1 and src2 words lda 4(g3),g1 # set new src2 ptr bne.f Lcloop_setup # first four bytes differ subo g14,g0,g0 # second (final) step in computing new src1 ptr addi g14,g2,g2 # compute new max_bytes too lda (g13),g14 # prepare return pointer for Lrestart b Lrestart # continue with both string fetches shifted picolibc-1.7.4/newlib/libc/machine/i960/memcpy.S000066400000000000000000000133351414576234500212310ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ .file "memcpy.s" #ifdef __PIC .pic #endif #ifdef __PID .pid #endif /* * (c) copyright 1988,1993 Intel Corp., all rights reserved */ /* procedure memmove (optimized assembler version for the 80960K series) procedure memcpy (optimized assembler version for the 80960K series) dest_addr = memmove (dest_addr, src_addr, len) dest_addr = memcpy (dest_addr, src_addr, len) copy len bytes pointed to by src_addr to the space pointed to by dest_addr. Return the original dest_addr. These routines will work even if the arrays overlap. The standard requires this of memmove, but memcpy is allowed to fail if overlap is present. Nevertheless, it is implemented the same as memmove because the overhead is trifling. Undefined behavior will occur if the end of the source array is in the last two words of the program's allocated memory space. This is so because the routine fetches ahead. Disallowing the fetch ahead would impose a severe performance penalty. Strategy: Fetch the source array by words and store them by words to the destination array, until there are fewer than three bytes left to copy. Then, using the last word of the source (the one that contains the remaining 0, 1, 2, or 3 bytes to be copied), store a byte at a time until Ldone. Tactics: 1) Do NOT try to fetch and store the words in a word aligned manner because, in my judgement, the performance degradation experienced due to non-aligned accesses does NOT outweigh the time and complexity added by the preamble and convoluted body that would be necessary to assure alignment. This is supported by the intuition that most source and destination arrays (even more true of most big source arrays) will be word aligned to begin with. 2) For non-overlapping arrays, rather than decrementing len to zero, I calculate the address of the byte after the last byte of the destination array, and quit when the destination byte pointer passes that. 3) For overlapping arrays where the source starts at a lower address than the destination the move is performed in reverse order. 4) Overlapping arrays where the source starts at a higher address are treated like non-overlapping case. Where the two arrays exactly coincide, the routine is short-circuited; no move is Ldone at all. This costs only one cycle. */ .globl _memcpy, _memmove .globl __memcpy, __memmove .leafproc _memmove, __memmove .leafproc _memcpy, __memcpy .align 2 _memmove: _memcpy: #ifndef __PIC lda Lrett,g14 #else lda Lrett-(.+8)(ip),g14 #endif __memmove: __memcpy: mov g14, g13 # preserve return address cmpibge 0,g2,Lexit # exit if number of bytes to move is <= zero. cmpo g0,g1 # does start of dest overlap end of src? addo g2,g1,g3 be Lexit # no move necessary if src and dest are same concmpo g3,g0 addo g2, g0, g6 bg Lbackwards # if overlap, then do move backwards ld (g1), g7 # fetch first word of source mov g0, g5 b Lwloop_b Lwloop_a: ld (g1), g7 # fetch ahead next word of source st g4, (g5) # store word to dest addo 4, g5, g5 # post-increment dest pointer Lwloop_b: # word copying loop addo 4, g1, g1 # pre-increment src pointer cmpo g3, g1 # is len <= 3 ? mov g7, g4 # keep a copy of the current word bge Lwloop_a # loop if more than 3 bytes to move cmpobe g6, g5, Lexit # quit if no more bytes to move Lcloop_a: # character copying loop (len < 3) stob g4, (g5) # store a byte shro 8, g4, g4 # position next byte for storing addo 1, g5, g5 cmpobne g6, g5, Lcloop_a # quit if no more bytes to move Lexit: mov 0, g14 bx (g13) # g0 = dest array address; g14 = 0 Lrett: ret Lwloop.a: subo 4, g6, g6 # pre-decrement dest pointer st g7, (g6) # store word to dest Lbackwards: # word copying loop subo 4, g3, g3 # pre-decrement src pointer cmpo g1, g3 # is len <= 3? ld (g3), g7 # fetch ahead next word of source ble Lwloop.a # loop if more than 3 bytes to move cmpobe g6, g0, Lexit # quit if no more bytes to move Lcloop.a: subo 1, g6, g6 rotate 8, g7, g7 # position byte for storing stob g7, (g6) # store byte cmpobne g6, g0, Lcloop.a # quit if no more bytes to move b Lexit /* end of memmove */ picolibc-1.7.4/newlib/libc/machine/i960/memcpy_ca.S000066400000000000000000000277021414576234500216770ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ .file "memcp_ca.s" #ifdef __PIC .pic #endif #ifdef __PID .pid #endif /* * (c) copyright 1988,1992,1993 Intel Corp., all rights reserved */ /* procedure memmove (optimized assembler version for the CA) procedure memcpy (optimized assembler version for the CA) dest_addr = memmove (dest_addr, src_addr, len) dest_addr = memcpy (dest_addr, src_addr, len) copy len bytes pointed to by src_addr to the space pointed to by dest_addr. Return the original dest_addr. Memcpy will fail if the source and destination string overlap (in particular, if the end of the source is overlapped by the beginning of the destination). The behavior is undefined. This is acceptable according to the draft C standard. Memmove will not fail if overlap exists. Undefined behavior will also occur if the end of the source string (i.e. the terminating null byte) is in the last word of the program's allocated memory space. This is so because, in several cases, the routine will fetch ahead one word. Disallowing the fetch ahead would impose a severe performance penalty. This program handles five cases: 1) both arguments start on a word boundary 2) neither are word aligned, but they are offset by the same amount 3) source is word aligned, destination is not 4) destination is word aligned, source is not 5) neither is word aligned, and they are offset by differing amounts At the time of this writing, only g0 thru g7 and g13 are available for use in this leafproc; other registers would have to be saved and restored. These nine registers, plus tricky use of g14 are sufficient to implement the routine. The registers are used as follows: g0 dest ptr; not modified, so that it may be returned g1 src ptr; shift count g2 len g3 src ptr (word aligned) g4 dest ptr (word aligned) g5 -4 for Lbackwards move Little endian g6 lsw of double word for extraction of 4 bytes g7 msw of double word for extraction of 4 bytes Big endian g6 msw of double word for extraction of 4 bytes g7 lsw of double word for extraction of 4 bytes g13 return address g14 byte extracted. */ #if __i960_BIG_ENDIAN__ #define MSW g6 #define LSW g7 #else #define LSW g6 #define MSW g7 #endif .globl _memmove, _memcpy .globl __memmove, __memcpy .leafproc _memmove, __memmove .leafproc _memcpy, __memcpy .align 2 _memcpy: _memmove: #ifndef __PIC lda Lrett,g14 #else lda Lrett-(.+8)(ip),g14 #endif __memcpy: __memmove: cmpibge.f 0,g2,Lquick_exit # Lexit if number of bytes to move is <= zero. cmpo g0,g1 # if dest starts earlier than src ... lda (g14),g13 # preserve return address addo g2,g1,g5 # compute addr of byte after last byte of src be.f Lexit_code # no move necessary if src and dest are same concmpo g5,g0 # ... or if dest starts after end of src ... notand g1,3,g3 # extract word addr of start of src bg.f Lbackwards # ... then drop thru, else do move backwards cmpo g3,g1 # check alignment of src ld (g3),LSW # fetch word containing at least first byte notand g0,3,g4 # extract word addr of start of dest lda 4(g3),g3 # advance src word addr bne.f Lcase_245 # branch if src is NOT word aligned Lcase_13: cmpo g0,g4 # check alignment of dest subo 4,g4,g4 # store is pre-incrementing; back up dest addr be.t Lcase_1 # branch if dest word aligned Lcase_3: # src is word aligned; dest is not addo 8,g4,g4 # move dest word ptr to first word boundary lda (g0),g1 # copy dest byte ptr mov LSW,MSW # make copy of first word of src lda 32,g14 # initialize shift count to zero (mod 32) Lcase_25: Lcase_3_cloop_at_start: # character copying loop for start of dest str cmpdeci 0,g2,g2 # is max_bytes exhausted? be.f Lexit_code # Lexit if max_bytes is exhausted #if __i960_BIG_ENDIAN__ rotate 8,MSW,MSW # move next byte into position for extraction subo 8,g14,g14 # augment the shift counter stob MSW,(g1) # store the byte in dest #else addo 8,g14,g14 # augment the shift counter stob MSW,(g1) # store the byte in dest shro 8,MSW,MSW # move next byte into position for extraction #endif lda 1(g1),g1 # post-increment dest ptr cmpobne.t g1,g4,Lcase_3_cloop_at_start # branch if reached word boundary ld (g3),MSW # fetch msw of operand for double shift Lcase_4: Lcase_3_wloop: cmpi g2,4 # less than four bytes to move? lda 4(g3),g3 # post-increment src word addr eshro g14,g6,g1 # extract 4 bytes of src bl.f Lcase_3_cloop # branch if < four bytes left to move mov MSW,LSW # move msw to lsw ld (g3),MSW # pre-fetch msw of operand for double shift subi 4,g2,g2 # decrease max_byte count by the 4 bytes moved st g1,(g4) # store 4 bytes to dest addo 4,g4,g4 # post-increment dest ptr b Lcase_3_wloop Lcase_1_wloop: # word copying loop subi 4,g2,g2 # decrease max_byte count by the 4 bytes moved ld (g3),LSW # pre-fetch next word of src addo 4,g3,g3 # post-increment src addr st g1,(g4) # store word in dest string Lcase_1: # src and dest are word aligned cmpi g2,4 # check for fewer than four bytes to move addo 4,g4,g4 # pre-increment dest addr lda (LSW),g1 # keep a copy of the src word bge.t Lcase_1_wloop # branch if at least four bytes to copy Lcase_3_cloop: cmpibe.f 0,g2,Lexit_code # Lexit if max_bytes is exhausted Lcase_1_cloop: #if __i960_BIG_ENDIAN__ rotate 8,g1,g1 # move next byte into position for extraction #endif subi 1,g2,g2 stob g1,(g4) # store the byte in dest cmpi 0,g2 lda 1(g4),g4 # post-increment dest byte addr #if ! __i960_BIG_ENDIAN__ shro 8,g1,g1 # move next byte into position for extraction #endif bne.t Lcase_1_cloop # Lexit if max_bytes is exhausted Lexit_code: mov 0,g14 # conform to register conventions bx (g13) # g0 = addr of dest; g14 = 0 Lrett: ret Lcase_245: cmpo g0,g4 # check alignment of dest ld (g3),MSW # pre-fetch second half and 3,g1,g1 # compute shift count shlo 3,g1,g14 #if __i960_BIG_ENDIAN__ subo g14,0,g14 # adjust shift count for big endian #endif be.t Lcase_4 # branch if dest is word aligned or g4,g1,g1 # is src earlier in word, later, or sync w/ dst cmpo g0,g1 # < indicates first word of dest has more bytes lda 4(g4),g4 # move dest word addr to first word boundary eshro g14,g6,g5 # extract four bytes lda (g0),g1 #if __i960_BIG_ENDIAN__ bge.f 1f #else bg.f 1f #endif mov MSW,LSW lda 4(g3),g3 # move src word addr to second word boundary 1: mov g5,MSW b Lcase_25 Lbackwards: notand g5,3,MSW # extract word addr of byte after end of src cmpo MSW,g5 # check alignment of end of src subo 4,MSW,g3 # retreat src word addr addo g2,g0,g1 # compute addr of byte after end of dest notand g1,3,g4 # extract word addr of start of dest bne.f Lcase.245 # branch if src is NOT word aligned Lcase.13: cmpo g1,g4 # check alignment of dest ld (g3),MSW # fetch last word of src subo 4,g3,g3 # retreat src word addr be.t Lcase.1 # branch if dest word aligned Lcase.3: # src is word aligned; dest is not mov MSW,LSW # make copy of first word of src lda 32,g14 # initialize shift count to zero (mod 32) Lcase.25: Lcase.3_cloop_at_start: # character copying loop for start of dest str cmpdeci 0,g2,g2 # is max.bytes exhausted? be.f Lexit_code # Lexit if max_bytes is exhausted #if ! __i960_BIG_ENDIAN__ rotate 8,LSW,LSW # move next byte into position for storing #endif lda -1(g1),g1 # pre-decrement dest ptr cmpo g1,g4 # have we reached word boundary in dest yet? stob LSW,(g1) # store the byte in dest #if __i960_BIG_ENDIAN__ shro 8,LSW,LSW # move next byte into position for storing addo 8,g14,g14 # augment the shift counter #else subo 8,g14,g14 # augment the shift counter #endif bne.t Lcase.3_cloop_at_start # branch if reached word boundary? ld (g3),LSW # fetch lsw of operand for double shift #if __i960_BIG_ENDIAN__ cmpobne 0,g14,Lcase.3_wloop Lcase.3_wloop2: cmpi g2,4 # less than four bytes to move? lda -4(g3),g3 # post-decrement src word addr mov MSW,g1 # extract 4 bytes of src lda (LSW),MSW # move lsw to msw subo 4,g4,g4 # pre-decrement dest ptr bl.f Lcase.3_cloop # branch if < four bytes left to move ld (g3),LSW # pre-fetch lsw of operand for double shift subi 4,g2,g2 # decrease max.byte count by the 4 bytes moved st g1,(g4) # store 4 bytes to dest b Lcase.3_wloop2 #endif Lcase.4: Lcase.3_wloop: cmpi g2,4 # less than four bytes to move? lda -4(g3),g3 # post-decrement src word addr eshro g14,g6,g1 # extract 4 bytes of src lda (LSW),MSW # move lsw to msw subo 4,g4,g4 # pre-decrement dest ptr bl.f Lcase.3_cloop # branch if < four bytes left to move ld (g3),LSW # pre-fetch lsw of operand for double shift subi 4,g2,g2 # decrease max.byte count by the 4 bytes moved st g1,(g4) # store 4 bytes to dest b Lcase.3_wloop Lcase.1_wloop: # word copying loop subi 4,g2,g2 # decrease max.byte count by the 4 bytes moved ld (g3),MSW # pre-fetch next word of src subo 4,g3,g3 # post-decrement src addr st g1,(g4) # store word in dest string Lcase.1: # src and dest are word aligned cmpi g2,4 # check for fewer than four bytes to move subo 4,g4,g4 # pre-decrement dest addr lda (MSW),g1 # keep a copy of the src word bge.t Lcase.1_wloop # branch if at least four bytes to copy Lcase.3_cloop: cmpibe.f 0,g2,Lexit_code # Lexit if max_bytes is exhausted #if ! __i960_BIG_ENDIAN__ rotate 8,g1,g1 # move next byte into position for storing #endif lda 4(g4),g4 # pre-decremented dest addr 4 too much Lcase.1_cloop: subi 1,g4,g4 # pre-decrement dest byte addr cmpi g4,g0 # has dest ptr reached beginning of dest? stob g1,(g4) # store the byte in dest #if __i960_BIG_ENDIAN__ shro 8,g1,g1 # move next byte into position for storing #else rotate 8,g1,g1 # move next byte into position for storing #endif bne.t Lcase.1_cloop # Lexit if move is completed b Lexit_code Lcase.245: cmpo g1,g4 # check alignment of dest ld (MSW),MSW # pre-fetch word with at least last byte and 3,g5,g5 # compute shift count ld (g3),LSW # pre-fetch second to last word shlo 3,g5,g14 #if __i960_BIG_ENDIAN__ subo g14,0,g14 # adjust shift count for big endian #endif be.t Lcase.4 # branch if dest is word aligned or g4,g5,g5 # is src earlier in word, later, or sync w/ dst cmpo g1,g5 # < indicates last word of dest has less bytes eshro g14,g6,g5 # extract four bytes bl.t 1f mov LSW,MSW #if ! __i960_BIG_ENDIAN__ be.t 1f #endif subo 4,g3,g3 # move src word addr to second word boundary 1: mov g5,LSW b Lcase.25 Lquick_exit: mov g14,g13 b Lexit_code /* end of memmove */ picolibc-1.7.4/newlib/libc/machine/i960/memset.S000066400000000000000000000076011414576234500212300ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ .file "memset.s" #ifdef __PIC .pic #endif #ifdef __PID .pid #endif /* * (c) copyright 1989,1993 Intel Corp., all rights reserved */ /* procedure memset (optimized assembler version: 80960K series, 80960CA) dest_addr = memset (dest_addr, char, len) Fill len bytes pointed to by dest_addr with the value of char. Return the original address of dest_addr. This program avoids performing unaligned accesses. It stores from zero to seven bytes, and then stores aligned longwords, and then stores from zero to seven bytes, as necessary to store len bytes starting at dest_addr. At the time of this writing, only g0 thru g7 and g13 are available for use in this leafproc; other registers would have to be saved and restored. These nine registers, plus tricky use of g14 are sufficient to implement the routine. */ .globl _memset .globl __memset .leafproc _memset, __memset .align 2 _memset: #ifndef __PIC lda Lrett,g14 #else lda Lrett-(.+8)(ip),g14 #endif __memset: cmpo 7,g2 # are there fewer than seven characters to move? lda (g14),g13 # save return address notand g0,7,g3 # test for non-aligned dest_ptr lda 0,g14 # conform to register conventions shlo 24,g1,g4 # prepare word of char lda (g0),g6 # preserve dest_ptr for return shro 8,g4,g5 bge.f Lcloop_setup cmpo g3,g0 # is dest longword aligned lda 7(g3),g3 # bump dest_ptr to next longword boundary or g4,g5,g4 be.t Lwloop_setup Lbgn_cloop: cmpo g6,g3 # Have we reached longword boundary? stob g1,(g6) # store one byte of char subo 1,g2,g2 # decrement len lda 1(g6),g6 # increment dest_ptr bne.t Lbgn_cloop # loop if more bytes to store before longword cmpobge.f 7,g2,Lcloop Lwloop_setup: shro 16,g4,g5 or g4,g5,g4 mov g4,g5 # now have a longword of char Lwloop: cmpo 15,g2 # Do we have to store more longwords? stl g4,(g6) # Store longword of char subo 8,g2,g2 # Decrement len lda 8(g6),g6 # Increment dest_ptr bl.t Lwloop # loop if more longwords to store Lcloop_setup: cmpobge.t 0,g2,Lexit Lcloop: cmpo 1,g2 # Is len exhausted? stob g1,(g6) # Store byte subo 1,g2,g2 # Decrement len lda 1(g6),g6 # Increment dest_ptr bne.t Lcloop # loop if more bytes to store Lexit: bx (g13) Lrett: ret /* end of memset */ picolibc-1.7.4/newlib/libc/machine/i960/setjmp.S000066400000000000000000000075151414576234500212440ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ /******************************************************************************/ /* */ /* setjmp(), longjmp() */ /* */ /******************************************************************************/ .file "setjmp.as" .text /* .link_pix */ .align 4 .globl _setjmp _setjmp: flushreg andnot 0xf,pfp,g1 /* get pfp, mask out return status bits */ st g1, 0x58(g0) /* save fp of caller*/ /* save globals not killed by the calling convention */ stq g8, 0x40(g0) /* save g8-g11*/ st g12, 0x50(g0) /* save g12*/ st g14, 0x54(g0) /* save g14*/ /* save previous frame local registers */ ldq (g1), g4 /* get previous frame pfp, sp, rip, r3 */ stq g4, (g0) /* save pfp, sp, rip, r3 */ ldq 0x10(g1), g4 /* get previous frame r4-r7 */ stq g4, 0x10(g0) /* save r4-r7 */ ldq 0x20(g1), g4 /* get previous frame r8-r11 */ stq g4, 0x20(g0) /* save r8-r11 */ ldq 0x30(g1), g4 /* get previous frame r12-r15 */ stq g4, 0x30(g0) /* save r12-r15 */ mov 0, g0 /* return 0 */ ret /* * fake a return to the place that called the corresponding _setjmp */ .align 4 .globl _longjmp _longjmp: call 0f /* ensure there is at least one stack frame */ 0: flushreg /* do this before swapping stack */ ld 0x58(g0), pfp /* get fp of caller of setjmp */ /* restore local registers * the following code modifies the frame of the function which originally * called setjmp. */ ldq (g0), g4 /* get pfp, sp, rip, r3 */ stq g4, (pfp) /* restore pfp, sp, rip, r3 */ ldq 0x10(g0), g4 /* get r4-r7 */ stq g4, 0x10(pfp) /* restore r4-r7 */ ldq 0x20(g0), g4 /* get r8-r11 */ stq g4, 0x20(pfp) /* restore r8-r11 */ ldq 0x30(g0), g4 /* get r12-r15 */ stq g4, 0x30(pfp) /* restore r12-r15 */ /* restore global registers */ ldq 0x40(g0), g8 /* get old g8-g11 values */ ld 0x50(g0), g12 /* get old g12 value */ ld 0x54(g0), g14 /* get old g14 value */ mov g1, g0 /* get return value */ cmpo g0, 0 /* make sure it is not zero */ bne 0f mov 1, g0 /* return 1 by default */ 0: ret /* return to caller of _setjmp */ picolibc-1.7.4/newlib/libc/machine/i960/strchr.S000066400000000000000000000104141414576234500212370ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ .file "strchr.s" #ifdef __PIC .pic #endif #ifdef __PID .pid #endif /* * (c) copyright 1988,1993 Intel Corp., all rights reserved */ /* procedure strchr (optimized assembler version for the 80960K series) src_addr = strchr (src_addr, char) return a pointer to the first byte that contains the indicated byte in the source string. Return null if the byte is not found. Undefined behavior will occur if the end of the source string (i.e. the terminating null byte) is in the last two words of the program's allocated memory space. This is so because strchr fetches ahead. Disallowing the fetch ahead would impose a severe performance penalty. Strategy: Fetch the source string by words and scanbyte the words for the char until either a word with the byte is found or the null byte is encountered. In the former case, move through the word to find the matching byte and return its memory address. In the latter case, return zero (null). Tactics: 1) Do NOT try to fetch the words in a word aligned manner because, in my judgement, the performance degradation experienced due to non-aligned accesses does NOT outweigh the time and complexity added by the preamble that would be necessary to assure alignment. This is supported by the intuition that most source arrays (even more true of most big source arrays) will be word aligned to begin with. */ .globl _strchr .globl __strchr .leafproc _strchr, __strchr .align 2 _strchr: #ifndef __PIC lda Lrett,g14 #else lda Lrett-(.+8)(ip),g14 #endif __strchr: ld (g0),g4 # fetch first word lda 0xff,g7 # byte extraction mask and g1,g7,g1 # make char an 8-bit ordinal shlo 8,g1,g2 # broadcast the char to four bytes or g1,g2,g2 shlo 16,g2,g5 or g2,g5,g3 mov g14,g13 # preserve return address addo 4,g0,g0 # post-increment src pointer mov 0,g14 # conform to register linkage standard Lsearch_for_word_with_char_or_null: mov g4,g5 # copy word scanbyte g3,g5 # check for byte with char ld (g0),g4 # fetch next word of src bo Lsearch_for_char # branch if char found scanbyte 0,g5 # check for null byte addo 4,g0,g0 # post-increment src pointer bno Lsearch_for_word_with_char_or_null # branch if not null Lnot_found: mov 0,g0 # char not found. Return null Lexit_code: bx (g13) # g0 = addr of char in src (or null); g14 = 0 Lrett: ret Lsearch_for_char: subo 5,g0,g0 # back up the byte pointer Lsearch_for_char.a: and g5,g7,g6 # extract byte cmpo g1,g6 # is it char? addo 1,g0,g0 # bump src byte ptr shro 8,g5,g5 # shift word to position next byte be Lexit_code cmpobne 0,g6,Lsearch_for_char.a # quit if null comes before char b Lnot_found /* end of strchr */ picolibc-1.7.4/newlib/libc/machine/i960/strchr_ca.S000066400000000000000000000121621414576234500217040ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ .file "strch_ca.s" #ifdef __PIC .pic #endif #ifdef __PID .pid #endif /* * (c) copyright 1988,1993 Intel Corp., all rights reserved */ /* procedure strchr (optimized assembler version for the CA) src_addr = strchr (src_addr, char) return a pointer to the first byte that contains the indicated byte in the source string. Return null if the byte is not found. Undefined behavior will occur if the end of the source string (i.e. the terminating null byte) is in the last two words of the program's allocated memory space. This is so because, in several cases, strchr will fetch ahead. Disallowing the fetch ahead would impose a severe performance penalty. This program handles two cases: 1) the argument starts on a word boundary 2) the argument doesn't start on a word boundary At the time of this writing, only g0 thru g7 and g13 are available for use in this leafproc; other registers would have to be saved and restored. These nine registers, plus tricky use of g14 are sufficient to implement the routine. The registers are used as follows: g0 src ptr; upon return it is a pointer to the matching byte, or null g1 char to seek g2 mask to avoid unimportant bytes in first word g3 char to seek, broadcast to all four bytes g4 word of the source string g5 copy of the word g6 extracted character g7 byte extraction mask g13 return address g14 */ .globl _strchr .globl __strchr .leafproc _strchr, __strchr .align 2 _strchr: #ifndef __PIC lda Lrett,g14 #else lda Lrett-(.+8)(ip),g14 #endif __strchr: lda 0xff,g7 # byte extraction mask and g1,g7,g1 # make char an 8-bit ordinal shlo 8,g1,g2 # broadcast the char to four bytes or g1,g2,g2 shlo 16,g2,g4 cmpo g1,g7 # is char being sought 0xff? or g4,g2,g3 lda (g14),g13 # preserve return address notand g0,3,g5 # extract word addr of start of src lda 0,g14 # conform to register linkage standard and g0,3,g6 # extract byte offset of src ld (g5),g4 # fetch word containing at least first byte shlo 3,g6,g6 # get shift count for making mask for first word lda 4(g5),g0 # post-increment src word pointer subi 1,0,g5 # mask initially all ones #if __i960_BIG_ENDIAN__ shro g6,g5,g5 # get mask for bytes needed from first word #else shlo g6,g5,g5 # get mask for bytes needed from first word #endif notor g4,g5,g4 # set unneeded bytes to all ones be.f Lsearch_for_0xff # branch if seeking 0xff Lsearch_for_word_with_char_or_null: scanbyte g3,g4 # check for byte with char lda (g4),g5 # copy word ld (g0),g4 # fetch next word of src bo.f Lsearch_for_char # branch if null found scanbyte 0,g5 # check for null byte lda 4(g0),g0 # post-increment src word pointer bno.t Lsearch_for_word_with_char_or_null # branch if not null Lnot_found: mov 0,g0 # char not found. Return null Lexit_code: bx (g13) # g0 = addr of char in src (or null); g14 = 0 Lrett: ret Lsearch_for_char: subo 5,g0,g0 # back up the byte pointer Lsearch_for_char.a: #if __i960_BIG_ENDIAN__ rotate 8,g5,g5 # shift word to position next byte #endif and g5,g7,g6 # extract byte cmpo g1,g6 # is it char? lda 1(g0),g0 # bump src byte ptr #if ! __i960_BIG_ENDIAN__ shro 8,g5,g5 # shift word to position next byte #endif be.f Lexit_code cmpobne.t 0,g6,Lsearch_for_char.a # quit if null comes before char b Lnot_found Lsearch_for_0xff: lda 0xf0f0f0f0,g2 # make first comparison mask for char=-1 case. or g5,g2,g2 and g4,g2,g4 # make unimportant bytes of first word 0x0f b Lsearch_for_word_with_char_or_null /* end of strchr */ picolibc-1.7.4/newlib/libc/machine/i960/strcmp.S000066400000000000000000000104541414576234500212460ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ .file "strcmp.s" #ifdef __PIC .pic #endif #ifdef __PID .pid #endif /* * (c) copyright 1988,1993 Intel Corp., all rights reserved */ /* procedure strcmp (optimized assembler version for the 80960K Series) result = strcmp (src1_addr, src2_addr) compare the null terminated string pointed to by src1_addr to the string pointed to by src2_addr. Return 0 iff the strings are equal, -1 if src1_addr is lexicographically less than src2_addr, and 1 if it is lexicographically greater. Undefined behavior will occur if the end of either source string (i.e. the terminating null byte) is in the last two words of the program's allocated memory space. This is so because strcmp fetches ahead. Disallowing the fetch ahead would impose a severe performance penalty. Strategy: Fetch the source strings by words and compare the words until either differing words are found or the null byte is encountered. In either case, move through the word until either the differing byte if found, in which case return -1 or 1 appropriately; or the null byte is encountered, in which case, return zero (equality). Tactics: 1) Do NOT try to fetch the words in a word aligned manner because, in my judgement, the performance degradation experienced due to non-aligned accesses does NOT outweigh the time and complexity added by the preamble and convoluted body that would be necessary to assure alignment. This is supported by the intuition that many source strings will be word aligned to begin with. */ .globl _strcmp .globl __strcmp .leafproc _strcmp,__strcmp .align 2 _strcmp: #ifndef __PIC lda .Lrett,g14 #else lda .Lrett-(.+8)(ip),g14 #endif __strcmp: ld (g0), g5 # fetch first word of source_1 mov g14,g7 # preserve return address ldconst 0,g14 # conform to register conventions ldconst 0xff,g4 # byte extraction mask .Lwloop: addo 4,g0,g0 # post-increment source_1 byte ptr ld (g1), g3 # fetch word of source_2 scanbyte 0,g5 # does word have a null byte? mov g5,g2 # save a copy of the source_1 word be .Lcloop # branch if null byte encountered cmpo g2,g3 # are the source words the same? addo 4,g1,g1 # post-increment source_2 byte ptr ld (g0), g5 # fetch ahead next word of source_1 be .Lwloop # fall thru if words are unequal .Lcloop: and g4,g2,g5 # extract and compare individual bytes and g4,g3,g6 cmpobne g5,g6,.diff # if they differ, go return 1 or -1 cmpo 0,g6 # they are the same. Are they null? shlo 8,g4,g4 # position mask for next extraction bne .Lcloop # loop if null not encountered mov 0,g0 # return equality bx (g7) .Lrett: ret .diff: bl .neg mov 1,g0 bx (g7) .neg: subi 1,0,g0 .Lexit: bx (g7) picolibc-1.7.4/newlib/libc/machine/i960/strcmp_ca.S000066400000000000000000000175101414576234500217110ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ .file "strcm_ca.s" #ifdef __PIC .pic #endif #ifdef __PID .pid #endif /* * (c) copyright 1988,1993 Intel Corp., all rights reserved */ /* procedure strcmp (optimized assembler version for the CA) result = strcmp (src1_addr, src2_addr) compare the null terminated string pointed to by src1_addr to the string space pointed to by src2_addr. Return 0 iff the strings are equal, -1 if src1_addr is lexicly less than src2_addr, and 1 if it is lexicly greater. Undefined behavior will occur if the end of either source string (i.e. the terminating null byte) is in the last word of the program's allocated memory space. This is so because, in several cases, strcmp will fetch ahead one word. Disallowing the fetch ahead would impose a severe performance penalty. This program handles five cases: 1) both arguments start on a word boundary 2) neither are word aligned, but they are offset by the same amount 3) source1 is word aligned, source2 is not 4) source2 is word aligned, source1 is not 5) neither is word aligned, and they are offset by differing amounts At the time of this writing, only g0 thru g7 and g14 are available for use in this leafproc; other registers would have to be saved and restored. These nine registers are sufficient to implement the routine. The registers are used as follows: g0 original src1 ptr; return result g1 src2 ptr; 0xff -- byte extraction mask g2 src1 word ptr g3 src2 word ptr Little endian: g4 lsw of src1 g5 msw of src1 g6 src2 word g7 extracted src1 Big endian: g4 msw of src1 g5 lsw of src1 g6 extracted src1 g7 src2 word g13 return address g14 shift count */ #if __i960_BIG_ENDIAN__ #define MSW g4 #define LSW g5 #define SRC1 g6 #define SRC2 g7 #else #define LSW g4 #define MSW g5 #define SRC2 g6 #define SRC1 g7 #endif .globl _strcmp .globl __strcmp .leafproc _strcmp, __strcmp .align 2 _strcmp: #ifndef __PIC lda Lrett,g14 #else lda Lrett-(.+8)(ip),g14 #endif __strcmp: Lrestart: notand g0,3,g2 # extract word addr of start of src1 lda (g14),g13 # preserve return address #if __i960_BIG_ENDIAN__ cmpo g0,g2 # check alignment of src1 #endif ld (g2),LSW # fetch word with at least first byte of src1 notand g1,3,g3 # extract word addr of start of src2 ld 4(g2),MSW # fetch second word of src1 #if __i960_BIG_ENDIAN__ bne Lsrc1_unaligned # branch if src1 is unaligned cmpo g3,g1 # check alignment of src2 ld (g3),SRC2 # fetch word with at least first byte of src2 mov LSW,SRC1 # extract word of src1 lda 8(g2),g2 # advance src1 word addr bne.f Lsrc2_unaligned # branch if src2 is NOT word aligned /* src2 is word aligned */ Lwloop2: # word comparing loop cmpo SRC2,SRC1 # compare src1 and src2 words lda 0xff000000,g1 # byte extraction mask mov MSW,LSW # move msw of src1 to lsw ld (g2),MSW # pre-fetch next msw of src1 addo 4,g2,g2 # post-increment src1 addr lda 4(g3),g3 # pre-increment src2 addr bne.f Lcloop # branch if src1 and src2 unequal scanbyte 0,SRC1 # check for null byte in src1 word ld (g3),SRC2 # pre-fetch next word of src2 mov LSW,SRC1 # extract word of src1 lda 0,g0 # prepare to return zero, indicating equality bno.t Lwloop2 # branch if null byte not encountered /* words were equal and contained null byte */ mov 0,g14 # conform to register conventions bx (g13) # return Lsrc1_unaligned: #endif cmpo g3,g1 # check alignment of src2 ld (g3),SRC2 # fetch word with at least first byte of src2 shlo 3,g0,g14 # compute shift count for src1 #if __i960_BIG_ENDIAN__ subo g14,0,g14 # 32 - shift count for big endian. #endif eshro g14,g4,SRC1 # extract word of src1 lda 8(g2),g2 # advance src1 word addr bne.f Lsrc2_unaligned # branch if src2 is NOT word aligned /* at least src2 is word aligned */ Lwloop: # word comparing loop cmpo SRC2,SRC1 # compare src1 and src2 words #if __i960_BIG_ENDIAN__ lda 0xff000000,g1 # byte extraction mask #else lda 0xff,g1 # byte extraction mask #endif mov MSW,LSW # move msw of src1 to lsw ld (g2),MSW # pre-fetch next msw of src1 addo 4,g2,g2 # post-increment src1 addr lda 4(g3),g3 # pre-increment src2 addr bne.f Lcloop # branch if src1 and src2 unequal scanbyte 0,SRC1 # check for null byte in src1 word ld (g3),SRC2 # pre-fetch next word of src2 eshro g14,g4,SRC1 # extract word of src1 lda 0,g0 # prepare to return zero, indicating equality bno.t Lwloop # branch if null byte not encountered /* words were equal and contained null byte */ mov 0,g14 # conform to register conventions bx (g13) # return Lcloop_setup: # setup for coming from Lsrc2_unaligned mov LSW,SRC1 # restore extracted src1 word #if __i960_BIG_ENDIAN__ lda 0xff000000,g1 # byte extraction mask #else lda 0xff,g1 # byte extraction mask #endif Lcloop: # character comparing loop and SRC2,g1,g3 # extract next char of src2 and SRC1,g1,g0 # extract next char of src1 cmpobne.f g0,g3,.diff # check for equality cmpo 0,g0 # check for null byte #if __i960_BIG_ENDIAN__ shro 8,g1,g1 # shift mask for next byte #else shlo 8,g1,g1 # shift mask for next byte #endif bne.t Lcloop # branch if null not reached /* words are equal up thru null byte */ mov 0,g14 bx (g13) # g0 = 0 (src1 == src2) Lrett: ret .diff: mov 0,g14 bl Lless_than_exit Lgreater_than_exit: mov 1,g0 bx (g13) # g0 = 1 (src1 > src2) Lless_than_exit: subi 1,0,g0 bx (g13) # g0 = -1 (src1 < src2) Lsrc2_unaligned: mov SRC1,LSW # retain src1 extracted word ld 4(g3),SRC1 # fetch second word of src2 shlo 3,g1,MSW # compute shift count for src2 #if __i960_BIG_ENDIAN__ subo MSW,0,MSW # 32 - shift count for big endian. #endif eshro MSW,g6,SRC2 # extract word of src2 cmpo LSW,SRC2 # compare src1 and src2 words notor g1,3,MSW # first step in computing new src1 ptr lda 4(g3),g1 # set new src2 ptr bne.f Lcloop_setup # first four bytes differ scanbyte 0,LSW # check for null byte lda (g13),g14 # prepare return pointer for Lrestart subo MSW,g0,g0 # second (final) step in computing new src1 ptr bno.t Lrestart # if null byte not encountered, continue /* with both string fetches shifted such that */ /* src2 is now word aligned. */ mov 0,g14 # conform to register conventions. lda 0,g0 # return indicator of equality. bx (g13) picolibc-1.7.4/newlib/libc/machine/i960/strcpy.S000066400000000000000000000145141414576234500212630ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ .file "strcpy.s" #ifdef __PIC .pic #endif #ifdef __PID .pid #endif /* * (c) copyright 1988,1993 Intel Corp., all rights reserved */ /* procedure strcpy (optimized assembler version for the 80960K series) procedure strcat (optimized assembler version for the 80960K series) dest_addr = strcpy (dest_addr, src_addr) copy the null terminated string pointed to by src_addr to the string space pointed to by dest_addr. Return the original dest_addr. This routine will fail if the source and destination string overlap (in particular, if the end of the source is overlapped by the beginning of the destination). The behavior is undefined. This is acceptable according to the draft C standard. Undefined behavior will also occur if the end of the source string (i.e. the terminating null byte) is in the last two words of the program's allocated memory space. This is so because strcpy fetches ahead. Disallowing the fetch ahead would impose a severe performance penalty. Strategy: Fetch the source string and store the destination string by words until the null byte is encountered. When the word with the null byte is reached, store it by bytes up through the null byte only. Tactics: 1) Do NOT try to fetch and store the words in a word aligned manner because, in my judgement, the performance degradation experienced due to non-aligned accesses does NOT outweigh the time and complexity added by the preamble and convoluted body that would be necessary to assure alignment. This is supported by the intuition that most source and destination strings will be word aligned to begin with. procedure strcat dest_addr = strcat (dest_addr, src_addr) Appends the string pointed to by src_addr to the string pointed to by dest_addr. The first character of the source string is copied to the location initially occupied by the trailing null byte of the destination string. Thereafter, characters are copied from the source to the destination up thru the null byte that trails the source string. See the strcpy routine, above, for its caveats, as they apply here too. Strategy: Skip to the end (null byte) of the destination string, and then drop into the strcpy code. Tactics: Skipping to the null byte is Ldone by reading the destination string in long-words and scanbyte'ing them, then examining the bytes of the word that contains the null byte, until the address of the null byte is known. Then we drop into the strcpy routine. It is probable (approx. three out of four times) that the destination string as strcpy sees it will NOT be word aligned (i.e. that the null byte won't be the last byte of a word). But it is not worth the complication to that routine to force word aligned memory accesses to be gaurenteed. */ .globl _strcpy, _strcat .globl __strcpy, __strcat .leafproc _strcpy,__strcpy .leafproc _strcat,__strcat .align 2 _strcat: #ifndef __PIC lda Lrett,g14 #else lda Lrett-(.+8)(ip),g14 #endif __strcat: mov g14,g13 # preserve return address ldl (g0),g4 # fetch first two words addo 8,g0,g2 # post-increment src word pointer lda 0xff,g3 # byte extraction mask Lsearch_for_word_with_null_byte: scanbyte 0,g4 # check for null byte mov g5,g7 # copy second word bo.f Lsearch_for_null # branch if null found scanbyte 0,g7 # check for null byte ldl (g2),g4 # fetch next pair of word of src addo 8,g2,g2 # post-increment src word pointer bno Lsearch_for_word_with_null_byte # branch if null not found yet subo 4,g2,g2 # back up the byte pointer mov g7,g4 # move word with null to search word Lsearch_for_null: subo 9,g2,g5 # back up the byte pointer Lsearch_for_null.a: and g4,g3,g6 # extract byte cmpo 0,g6 # is it null? addo 1,g5,g5 # bump src byte ptr shro 8,g4,g4 # shift word to position next byte bne Lsearch_for_null.a b Lend_of_dest_found _strcpy: #ifndef __PIC lda Lrett,g14 #else lda Lrett-(.+8)(ip),g14 #endif __strcpy: mov g0, g5 Lend_of_dest_found: ld (g1), g2 # fetch first word of source mov g14,g6 # preserve return address lda 0xff, g3 # byte extraction mask = 0xff; Lwloop: # word copying loop addo 4, g1, g1 # post-increment source ptr scanbyte 0, g2 # does source word contain null byte? mov g2, g4 # save a copy of the source word be Lcloop # branch if null present ld (g1), g2 # pre-fetch next word of source st g4, (g5) # store current word addo 4, g5, g5 # post-increment dest ptr b Lwloop Lcloop: # character copying loop and g3, g4, g14 # extract next char shro 8, g4, g4 # position word for next byte extraction cmpo 0, g14 # is it null? stob g14, (g5) # store the byte addo 1, g5, g5 # post-increment dest ptr bne Lcloop # quit if null encountered bx (g6) # g0 = dest string address; g14 = 0 Lrett: ret picolibc-1.7.4/newlib/libc/machine/i960/strcpy_ca.S000066400000000000000000000233331414576234500217250ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ .file "strcp_ca.s" #ifdef __PIC .pic #endif #ifdef __PID .pid #endif /* * (c) copyright 1988,1993 Intel Corp., all rights reserved */ /* procedure strcpy (optimized assembler version for the CA) dest_addr = strcpy (dest_addr, src_addr) copy the null terminated string pointed to by src_addr to the string space pointed to by dest_addr. Return the original dest_addr. This routine will fail if the source and destination string overlap (in particular, if the end of the source is overlapped by the beginning of the destination). The behavior is undefined. This is acceptable according to the draft C standard. Undefined behavior will also occur if the end of the source string (i.e. the terminating null byte) is in the last word of the program's allocated memory space. This is so because, in several cases, strcpy will fetch ahead one word. Disallowing the fetch ahead would impose a severe performance penalty. This program handles five cases: 1) both arguments start on a word boundary 2) neither are word aligned, but they are offset by the same amount 3) source is word aligned, destination is not 4) destination is word aligned, source is not 5) neither is word aligned, and they are offset by differing amounts At the time of this writing, only g0 thru g7 and g13 are available for use in this leafproc; other registers would have to be saved and restored. These nine registers, plus tricky use of g14 are sufficient to implement the routine. The registers are used as follows: g0 original dest ptr; not modified, so that it may be returned. g1 src ptr; shift count g2 dest ptr; 4 bytes of src g3 src ptr (word aligned) g4 dest ptr (word aligned) g5 0xff -- byte extraction mask g6 lsw of double word for extraction of 4 bytes (little endian) msw of double word for extraction of 4 bytes (big endian) g7 msw of double word for extraction of 4 bytes (little endian) lsw of double word for extraction of 4 bytes (big endian) g13 return address g14 byte extracted. When reaches null byte, which is zero, we will be in conformance with register conventions, and can return to the caller with a clear conscience. procedure strcat dest_addr = strcat (dest_addr, src_addr) Appends the string pointed to by src_addr to the string pointed to by dest_addr. The first character of the source string is copied to the location initially occupied by the trailing null byte of the destination string. Thereafter, characters are copied from the source to the destination up thru the null byte that trails the source string. */ #if __i960_BIG_ENDIAN__ #define MSW g6 #define LSW g7 #else #define LSW g6 #define MSW g7 #endif .globl _strcpy, _strcat .globl __strcpy, __strcat .leafproc _strcpy, __strcpy .leafproc _strcat, __strcat .align 2 _strcat: #ifndef __PIC lda Lrett,g14 #else lda Lrett-(.+8)(ip),g14 #endif __strcat: notand g0,3,g4 # extract word addr of start of dest lda (g14),g13 # preserve return address and g0,3,LSW # extract byte offset of dest ld (g4),MSW # fetch word containing at least first byte shlo 3,LSW,g14 # get shift count for making mask for first word subi 1,0,LSW # mask initially all ones #if __i960_BIG_ENDIAN__ shro g14,LSW,LSW # get mask for bytes needed from first word lda 0xff000000,g5 # byte extraction mask #else shlo g14,LSW,LSW # get mask for bytes needed from first word lda 0xff,g5 # byte extraction mask #endif notor MSW,LSW,MSW # set unneeded bytes to all ones Lsearch_for_word_with_null: scanbyte 0,MSW # check for null byte lda 4(g4),g4 # post-increment dest word pointer mov MSW,LSW # keep a copy of current word ld (g4),MSW # fetch next word of dest bno.t Lsearch_for_word_with_null # branch if null not found yet and g5,LSW,g14 # extract byte cmpo 0,g14 # branch if null is first byte of word subo 4,g4,g4 # move dest word ptr back to word with null notand g1,3,g3 # extract word addr of start of src lda (g4),g2 # set dest byte ptr to 1st byte of word w/ null be.f Lcase_14 Lsearch_for_null: #if __i960_BIG_ENDIAN__ shro 8,g5,g5 # move mask down to next byte #else shlo 8,g5,g5 # move mask up to next byte #endif lda 1(g2),g2 # move dest byte ptr to next byte and g5,LSW,g14 # extract byte cmpobne.t 0,g14,Lsearch_for_null # branch if null is not yet found lda 0xff,g5 # byte extraction mask b Lcase_235.a _strcpy: #ifndef __PIC lda Lrett,g14 #else lda Lrett-(.+8)(ip),g14 #endif __strcpy: notand g0,3,g4 # extract word addr of start of dest lda (g14),g13 # preserve return address cmpo g0,g4 # check alignment of dest lda 0xff,g5 # load mask for byte extraction notand g1,3,g3 # extract word addr of start of src bne.f Lcase_235 # branch if dest is NOT word aligned Lcase_14: cmpo g3,g1 # check alignment of src ld (g3),LSW # fetch word containing at least first byte shlo 3,g1,g1 # compute shift count lda 4(g3),g3 # advance src word addr #if __i960_BIG_ENDIAN__ lda 0xff,g5 # byte extraction mask #endif bne.f Lcase_4 # branch if src is NOT word aligned Lcase_1: # src and dest are word aligned subo 4,g4,g4 # store is pre-incrementing; back up dest addr Lcase_1_wloop: # word copying loop scanbyte 0,LSW # check for null byte in src word lda (LSW),g2 # keep a copy of the src word addo 4,g4,g4 # pre-increment dest addr ld (g3),LSW # pre-fetch next word of src addo 4,g3,g3 # post-increment src addr bo.f Lcase_1_cloop # branch if word contains null byte st g2,(g4) # store word in dest string b Lcase_1_wloop Lcase_3_cloop: Lcase_1_cloop: # character copying loop #if __i960_BIG_ENDIAN__ rotate 8,g2,g2 # move next byte into position for extraction and g5,g2,g14 # extract next char #else and g5,g2,g14 # extract next char shro 8,g2,g2 # move next byte into position for extraction #endif cmpo 0,g14 # check for null byte stob g14,(g4) # store the byte in dest lda 1(g4),g4 # post-increment dest byte addr bne.t Lcase_1_cloop # branch if null not reached Lexit_code: bx (g13) # g0 = addr of dest; g14 = 0 Lrett: ret Lcase_3: # src is word aligned; dest is not addo 4,g4,g4 # move dest word ptr to first word boundary mov LSW,MSW # make copy of first word of src lda 0,g1 # initialize shift count to zero Lcase_25: Lcase_3_cloop_at_start: # character copying loop for start of dest str #if __i960_BIG_ENDIAN__ rotate 8,MSW,MSW # move next byte into position for extraction and g5,MSW,g14 # extract next char #else and g5,MSW,g14 # extract next char shro 8,MSW,MSW # move next byte into position for extraction #endif cmpo 0,g14 # check for null byte stob g14,(g2) # store the byte in dest lda 1(g2),g2 # post-increment dest ptr be.f Lexit_code # branch if null byte reached cmpo g2,g4 # have we reached word boundary in dest? lda 8(g1),g1 # augment the shift counter bne.t Lcase_3_cloop_at_start Lcase_4: ld (g3),MSW # fetch msw of operand for double shift #if __i960_BIG_ENDIAN__ subo g1,0,g1 # Adjust shift count for big endian. #endif Lcase_3_wloop: eshro g1,g6,g2 # extract 4 bytes of src lda 4(g3),g3 # post-increment src word addr scanbyte 0,g2 # check for null byte lda (MSW),LSW # move msw to lsw ld (g3),MSW # pre-fetch msw of operand for double shift bo.f Lcase_3_cloop # branch if word contains null byte st g2,(g4) # store 4 bytes to dest addo 4,g4,g4 # post-increment dest ptr b Lcase_3_wloop Lcase_235: lda (g0),g2 # copy dest ptr Lcase_235.a: cmpo g3,g1 # check alignment of src ld (g3),LSW # fetch word containing at least first byte and 3,g1,g14 # compute shift count lda 4(g3),g3 # advance src word addr shlo 3,g14,g1 be.t Lcase_3 # branch if dest is word aligned or g4,g14,g14 # is src earlier in word, later, or sync w/ dst ld (g3),MSW # pre-fetch second half cmpo g2,g14 # < indicates first word of dest has more bytes lda 4(g4),g4 # move dest word addr to first word boundary /* than first word of source. */ #if __i960_BIG_ENDIAN__ subo g1,0,g14 # Adjust shift count for big endian. eshro g14,g6,g14 # extract four bytes bge.f 1f #else eshro g1,g6,g14 # extract four bytes bg.f 1f #endif mov MSW,LSW lda 4(g3),g3 # move src word addr to second word boundary 1: mov g14,MSW b Lcase_25 /* end of strcpy */ picolibc-1.7.4/newlib/libc/machine/i960/strcspn.S000066400000000000000000000061531414576234500214330ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ .file "strcspn.s" #ifdef __PIC .pic #endif #ifdef __PID .pid #endif /* * (c) copyright 1989,1993 Intel Corp., all rights reserved */ /* procedure strcspn (optimized assembler version: 80960K series, 80960CA) len = strcspn (string, charset) Return the number of characters in the maximum leading segment of string which consists solely of characters NOT from charset. At the time of this writing, only g0 thru g7 and g13 are available for use in this leafproc; other registers would have to be saved and restored. These nine registers, plus tricky use of g14 are sufficient to implement the routine. */ .globl _strcspn .globl __strcspn .leafproc _strcspn, __strcspn .align 2 _strcspn: #ifndef __PIC lda Lrett,g14 #else lda Lrett-(.+8)(ip),g14 #endif __strcspn: mov g14,g13 # save return address lda (g0),g3 # copy string pointer mov 0,g14 # conform to register conventions Lnext_char: ldob (g3),g7 # fetch next character of string addo 1,g1,g2 # g2 will be the charset ptr ldob (g1),g6 # fetch first character of charset cmpobe.f 0,g7,Lexit # quit if at end of string Lscan_set: cmpo g6,g7 # is charset char same as string char? ldob (g2),g5 # fetch next charset char addo 1,g2,g2 # bump charset ptr be.f Lexit cmpo g6,0 # is charset exhausted? lda (g5),g6 bne.t Lscan_set # check next character of charset addo 1,g3,g3 # check next character of string b Lnext_char Lexit: subo g0,g3,g0 # compute string length bx (g13) Lrett: ret /* end of strcspn */ picolibc-1.7.4/newlib/libc/machine/i960/strdup.S000066400000000000000000000046601414576234500212610ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ .file "strdup.s" #ifdef __PIC .pic #endif #ifdef __PID .pid #endif /* * (c) copyright 1989,1993 Intel Corp., all rights reserved */ /* procedure strdup (optimized assembler version: 80960K series, 80960CA) dest_addr = strdup (src_addr) Allocate memory and copy thereto the string pointed to by src_addr. Return the address of the copy, or null if unable to perform the operation. */ .text .align 2 .globl _strdup _strdup: mov g0,r3 # Keep a copy of the original string addr callj _strlen # Determine how much to allocate addo 1,g0,g0 # Add one byte for the null byte at end callj _malloc # Allocate the storage cmpo 0,g0 mov r3,g1 # Original string addr is now src for copy bne.t _strcpy # Jump if allocation was successful ret # Return the null ptr otherwise /* end of strdup */ picolibc-1.7.4/newlib/libc/machine/i960/strlen.S000066400000000000000000000077161414576234500212540ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ .file "strlen.s" #ifdef __PIC .pic #endif #ifdef __PID .pid #endif /* * (c) copyright 1988,1993 Intel Corp., all rights reserved */ /* procedure strlen (optimized assembler version for the 80960K series) src_addr = strlen (src_addr) return the number of bytes that precede the null byte in the string pointed to by src_addr. Undefined behavior will occur if the end of the source string (i.e. the terminating null byte) is in the last four words of the program's allocated memory space. This is so because strlen fetches ahead several words. Disallowing the fetch ahead would impose a severe performance penalty. Strategy: Fetch the source array by long-words and scanbyte the words for the null byte until found. Examine the word in which the null byte is found, to determine its actual position, and return the length. Tactics: 1) Do NOT try to fetch the words in a word aligned manner because, in my judgement, the performance degradation experienced due to non-aligned accesses does NOT outweigh the time and complexity added by the preamble that would be necessary to assure alignment. This is supported by the intuition that many source strings will be word aligned to begin with. */ .globl _strlen .globl __strlen .leafproc _strlen, __strlen .align 2 _strlen: #ifndef __PIC lda Lrett,g14 #else lda Lrett-(.+8)(ip),g14 #endif __strlen: mov g14,g13 # preserve return address ldl (g0),g4 # fetch first two words addo 8,g0,g2 # post-increment src word pointer lda 0xff,g3 # byte extraction mask Lsearch_for_word_with_null_byte: scanbyte 0,g4 # check for null byte mov g5,g7 # copy second word bo.f Lsearch_for_null # branch if null found scanbyte 0,g7 # check for null byte ldl (g2),g4 # fetch next pair of word of src addo 8,g2,g2 # post-increment src word pointer bno Lsearch_for_word_with_null_byte # branch if null not found yet subo 4,g2,g2 # back up the byte pointer mov g7,g4 # move word with null to search word Lsearch_for_null: subo 9,g2,g2 # back up the byte pointer Lsearch_for_null.a: and g4,g3,g14 # extract byte cmpo 0,g14 # is it null? addo 1,g2,g2 # bump src byte ptr shro 8,g4,g4 # shift word to position next byte bne Lsearch_for_null.a Lexit_code: subo g0,g2,g0 # calculate string length bx (g13) # g0 = addr of src; g14 = 0 Lrett: ret /* end of strlen */ picolibc-1.7.4/newlib/libc/machine/i960/strlen_ca.S000066400000000000000000000117221414576234500217070ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ .file "strle_ca.s" #ifdef __PIC .pic #endif #ifdef __PID .pid #endif /* * (c) copyright 1988,1993 Intel Corp., all rights reserved */ /* procedure strlen (optimized assembler version for the CA) src_addr = strlen (src_addr) return the number of bytes that precede the null byte in the string pointed to by src_addr. Undefined behavior will occur if the end of the source string (i.e. the terminating null byte) is in the last four words of the program's allocated memory space. This is so because, in several cases, strlen will fetch ahead several words. Disallowing the fetch ahead would impose a severe performance penalty. This program handles two cases: 1) the argument starts on a word boundary 2) the argument doesn't start on a word boundary At the time of this writing, only g0 thru g7 and g13 are available for use in this leafproc; other registers would have to be saved and restored. These nine registers, plus tricky use of g14 are sufficient to implement the routine. The registers are used as follows: g0 original src ptr; upon return it is the byte count. g1 g2 src ptr g3 mask g4 even word of the source string g5 odd word of the source string g6 copy of even word, shift count g7 copy of odd word g13 return address g14 byte extracted. */ .globl _strlen .globl __strlen .leafproc _strlen, __strlen .align 2 _strlen: #ifndef __PIC lda Lrett,g14 #else lda Lrett-(.+8)(ip),g14 #endif __strlen: notand g0,3,g2 # extract word addr of start of src lda (g14),g13 # preserve return address and g0,3,g7 # extract byte offset of src ld (g2),g5 # fetch word containing at least first byte shlo 3,g7,g7 # get shift count for making mask for first word lda 4(g2),g2 # post-increment src word pointer subi 1,0,g3 # mask initially all ones chkbit 2,g2 # are we on an even word boundary or an odd one? #if __i960_BIG_ENDIAN__ shro g7,g3,g3 # get mask for bytes needed from first word notor g5,g3,g7 # set unneeded bytes to all ones lda 0xff000000,g3 # byte extraction mask #else shlo g7,g3,g3 # get mask for bytes needed from first word notor g5,g3,g7 # set unneeded bytes to all ones lda 0xff,g3 # byte extraction mask #endif bno.f Lodd_word # branch if first word is odd mov g7,g4 # move first word to copy thereof ld (g2),g5 # load odd word lda 4(g2),g2 # post-increment src word pointer Leven_word: scanbyte 0,g4 # check for null byte movl g4,g6 # copy both words Lodd_word: # trickery! if we branch here, following branch /* instruction will fall thru, as we want, */ /* effecting the load of g4 and g5 only. */ ldl (g2),g4 # fetch next pair of word of src bo.f Lsearch_for_null # branch if null found scanbyte 0,g7 # check for null byte lda 8(g2),g2 # post-increment src word pointer bno.t Leven_word # branch if null not found yet subo 4,g2,g2 # back up the byte pointer lda (g7),g6 # move odd word to search word Lsearch_for_null: subo 9,g2,g2 # back up the byte pointer Lsearch_for_null.a: and g6,g3,g14 # extract byte cmpo 0,g14 # is it null? lda 1(g2),g2 # bump src byte ptr #if __i960_BIG_ENDIAN__ shlo 8,g6,g6 # shift word to position next byte #else shro 8,g6,g6 # shift word to position next byte #endif bne.t Lsearch_for_null.a Lexit_code: subo g0,g2,g0 # calculate string length bx (g13) # g0 = addr of src; g14 = 0 Lrett: ret /* end of strlen */ picolibc-1.7.4/newlib/libc/machine/i960/strncat.S000066400000000000000000000132251414576234500214130ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ .file "strncat.s" #ifdef __PIC .pic #endif #ifdef __PID .pid #endif /* * (c) copyright 1988,1993 Intel Corp., all rights reserved */ /* procedure strncat (optimized assembler version for the 80960K Series) dest_addr = strncat (dest_addr, src_addr, max_bytes) append the null terminated string pointed to by src_addr to the null terminated string pointed to by dest_addr. Return the original dest_addr. If the source string is longer than max_bytes, then append only max_bytes bytes, and tack on a null byte on the end. This routine will fail if the source and destination string overlap (in particular, if the end of the source is overlapped by the beginning of the destination). The behavior is undefined. This is acceptable according to the draft C standard. Undefined behavior will also occur if the end of the source string (i.e. the terminating null byte) is in the last two words of the program's allocated memory space. This is so because strncat fetches ahead. Disallowing the fetch ahead would impose a severe performance penalty. Strategy: First, skip to the null byte in the destination string. Then fetch the source string by words and store them by words to the destination string, until there are fewer than three bytes left to copy. Then, using the last word of the source (the one that contains the remaining 0, 1, 2, or 3 bytes to be copied), store a byte at a time until Ldone. If, before exhausting the max_byte count, the null byte is encountered in the source string, then just copy up thru the null byte. Tactics: 1) Do NOT try to fetch and store the words in a word aligned manner because, in my judgement, the performance degradation experienced due to non-aligned accesses does NOT outweigh the time and complexity added by the preamble and convoluted body that would be necessary to assure alignment. */ .globl _strncat .globl __strncat .leafproc _strncat,__strncat .align 2 _strncat: #ifndef __PIC lda Lrett,g14 #else lda Lrett-(.+8)(ip),g14 #endif __strncat: mov g14,g6 cmpibge 0, g2, Lno_operation # Lexit early if max_bytes <= 0 mov g0, g5 Lskip_word_loop: ld (g5), g7 # fetch word of dest string addo 4, g5, g5 # post-increment dest ptr scanbyte 0, g7 # does it contain null byte? bno Lskip_word_loop # if not, loop subo 5, g5, g5 # adjust dest ptr lda 0xff, g3 # byte extraction mask = 0xff; Lskip_byte_loop: and g7, g3, g14 # extract byte of last word of dest string cmpo 0, g14 # is it null? addo 1, g5, g5 # adjust dest ptr shro 8, g7, g7 # position next byte for extraction bne Lskip_byte_loop # loop if null not found yet ld (g1), g7 # fetch first word of source string Lwloop: # word copying loop cmpo 4, g2 # max_bytes < 4 ? addo 4, g1, g1 # post-increment source ptr bge Lcloop.a # branch if less than 4 bytes to move scanbyte 0, g7 # is null byte reached yet? mov g7, g4 # keep a copy of the source word be Lcloop # branch if null byte reached ld (g1), g7 # pre-fetch next word of source subo 4, g2, g2 # reduce max_byte counter st g4, (g5) # store current word addo 4, g5, g5 # post-increment destination ptr b Lwloop Lcloop.b: addo 1, g5, g5 # post-increment destination ptr shro 8, g7, g7 # position next byte for extraction Lcloop: # character copying loop (max_byte > 3) and g3, g7, g4 # extract character cmpo 0, g4 # is it null? stob g4, (g5) # store it bne Lcloop.b # loop if null not encountered yet bx (g6) # g0 = dest string address; g14 = 0 Lrett: ret Lcloop.c: addo 1, g5, g5 # post-increment destination ptr shro 8, g7, g7 # position next byte for extraction Lcloop.a: # character copying loop (max_byte <= 3) cmpdeco 0,g2,g2 # max_byte == 0? and g3, g7, g4 # extract character be Ldone # store null and Lexit if max_byte exhausted cmpo 0, g4 # is it null? stob g4, (g5) # store it bne Lcloop.c # loop if null not encountered yet Ldone: stob g14, (g5) # store trailing null bx (g6) # g0 = dest string address; g14 = 0 Lno_operation: mov 0, g14 # conform to register conventions bx (g6) /* end of strncat */ picolibc-1.7.4/newlib/libc/machine/i960/strncat_ca.S000066400000000000000000000242671414576234500220660ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ .file "sncat_ca.s" #ifdef __PIC .pic #endif #ifdef __PID .pid #endif /* * (c) copyright 1988,1993 Intel Corp., all rights reserved */ /* procedure strncat (optimized assembler version for the CA) dest_addr = strncat (dest_addr, src_addr, max_bytes) append the null terminated string pointed to by src_addr to the null terminated string pointed to by dest_addr. Return the original dest_addr. If the source string is longer than max_bytes, then append only max_bytes bytes, and tack on a null byte on the end This routine will fail if the source and destination string overlap (in particular, if the end of the source is overlapped by the beginning of the destination). The behavior is undefined. This is acceptable according to the draft C standard. Undefined behavior will also occur if the end of the source string (i.e. the terminating null byte) is in the last word of the program's allocated memory space. This is so because, in several cases, strncat will fetch ahead one word. Disallowing the fetch ahead would impose a severe performance penalty. This program handles five cases: 1) both arguments start on a word boundary 2) neither are word aligned, but they are offset by the same amount 3) source is word aligned, destination is not 4) destination is word aligned, source is not 5) neither is word aligned, and they are offset by differing amounts At the time of this writing, only g0 thru g7 and g13 are available for use in this leafproc; other registers would have to be saved and restored. These nine registers, plus tricky use of g14 are sufficient to implement the routine. The registers are used as follows: g0 original dest ptr; not modified, so that it may be returned. g1 src ptr; shift count g2 max_bytes g3 src ptr (word aligned) g4 dest ptr (word aligned) g5 0xff -- byte extraction mask Little endian: g6 lsw of double word for extraction of 4 bytes g7 msw of double word for extraction of 4 bytes Big endian: g6 msw of double word for extraction of 4 bytes g7 lsw of double word for extraction of 4 bytes g13 return address g14 byte extracted. */ #if __i960_BIG_ENDIAN__ #define MSW g6 #define LSW g7 #else #define LSW g6 #define MSW g7 #endif .globl _strncat .globl __strncat .leafproc _strncat, __strncat .align 2 _strncat: #ifndef __PIC lda Lrett,g14 #else lda Lrett-(.+8)(ip),g14 #endif __strncat: notand g0,3,g4 # extract word addr of start of dest lda (g14),g13 # preserve return address cmpibge.f 0,g2,Lexit_code # Lexit if number of bytes to move is <= zero. and g0,3,LSW # extract byte offset of dest ld (g4),MSW # fetch word containing at least first byte shlo 3,LSW,g14 # get shift count for making mask for first word subi 1,0,LSW # mask initially all ones #if __i960_BIG_ENDIAN__ shro g14,LSW,LSW # get mask for bytes needed from first word #else shlo g14,LSW,LSW # get mask for bytes needed from first word #endif notor MSW,LSW,MSW # set unneeded bytes to all ones lda 0xff,g5 # byte extraction mask Lsearch_for_word_with_null: scanbyte 0,MSW # check for null byte lda 4(g4),g4 # post-increment dest word pointer mov MSW,LSW # keep a copy of current word ld (g4),MSW # fetch next word of dest bno.t Lsearch_for_word_with_null # branch if null not found yet #if __i960_BIG_ENDIAN__ shro 24,LSW,g14 # extract byte #else and g5,LSW,g14 # extract byte #endif cmpo 0,g14 # branch if null is first byte of word subo 4,g4,g4 # move dest word ptr to word with null notand g1,3,g3 # extract word addr of start of src bne.t Lsearch_for_null Lcase_14: cmpo g1,g3 # check alignment of source ld (g3),LSW # fetch first word of source shlo 3,g1,g14 # compute shift count lda 4(g3),g3 # post-increment src addr bne.f Lcase_4 # branch if source is unaligned Lcase_1: Lcase_1_wloop: # word copying loop cmpi g2,4 # check for fewer than four bytes to move lda (LSW),g1 # keep a copy of the src word bl.f Lcase_1_cloop # branch if fewer than four bytes to copy scanbyte 0,g1 # check for null byte in src word ld (g3),LSW # pre-fetch next word of src addo 4,g3,g3 # post-increment src addr bo.f Lcase_1_cloop # branch if word contains null byte subi 4,g2,g2 # decrease max_byte count by the 4 bytes moved st g1,(g4) # store word in dest string addo 4,g4,g4 # post-increment dest addr b Lcase_1_wloop Lcase_3_cloop: Lcase_1_cloop: # character copying loop (max_bytes <= 3) cmpdeci 0,g2,g2 # is max_bytes exhausted? #if __i960_BIG_ENDIAN__ rotate 8,g1,g1 # move next byte into position for extraction #endif and g5,g1,g14 # extract next char be.f Lstore_null # if max_bytes is exhausted, store null and quit cmpo 0,g14 # check for null byte stob g14,(g4) # store the byte in dest #if ! __i960_BIG_ENDIAN__ shro 8,g1,g1 # move next byte into position for extraction #endif lda 1(g4),g4 # post-increment dest byte addr bne.t Lcase_1_cloop # branch if null not reached bx (g13) # Lexit (g14 == 0) Lstore_null: mov 0,g14 # store null, and set g14 to zero stob g14,(g4) bx (g13) Lsearch_for_null: #if __i960_BIG_ENDIAN__ shlo 8,LSW,LSW # check next byte shro 24,LSW,g14 #else shlo 8,g5,g5 # move mask up to next byte and g5,LSW,g14 # extract byte #endif lda 1(g4),g4 # move dest byte ptr to next byte cmpobne.t 0,g14,Lsearch_for_null # branch if null is not yet found Lcase_235: cmpo g1,g3 # check alignment of src ld (g3),LSW # pre-fetch word with start of src and 3,g1,g1 # compute shift count lda 0xff,g5 # load mask for byte extraction shlo 3,g1,g14 lda 4(g3),g3 # post-increment src word counter be.t Lcase_3 # branch if src is word aligned and g4,3,MSW # extract byte offset for dest string cmpo MSW,g1 # < indicates first word of dest has more bytes /* than first word of source. */ ld (g3),MSW # fetch second word of src #if __i960_BIG_ENDIAN__ subo g14,0,g14 # adjust shift count for big endian #endif eshro g14,g6,g5 # extract four bytes #if __i960_BIG_ENDIAN__ bge.f 1f #else bg.f 1f #endif mov MSW,LSW lda 4(g3),g3 # move src word addr to second word boundary 1: mov g5,MSW lda 0xff,g5 b Lcase_25 Lcase_3: # src is word aligned; dest is not mov LSW,MSW # make copy of first word of src lda 32,g14 # initialize shift count to zero (mod 32) Lcase_25: Lcase_3_cloop_at_start: # character copying loop for start of dest str cmpdeci 0,g2,g2 # is max_bytes exhausted? #if __i960_BIG_ENDIAN__ shro 24,MSW,g5 # extract next char #else and g5,MSW,g5 # extract next char #endif be.f Lstore_null # Lexit if max_bytes is exhausted cmpo 0,g5 # check for null byte stob g5,(g4) # store the byte in dest addo 1,g4,g4 # post-increment dest ptr lda 0xff,g5 # re-initialize byte extraction mask notand g4,3,g1 # extract word address be.t Lexit_code # Lexit if null byte reached cmpo g1,g4 # have we reached word boundary in dest yet? #if __i960_BIG_ENDIAN__ lda -8(g14),g14 # augment the shift counter rotate 8,MSW,MSW # move next byte into position for extraction #else lda 8(g14),g14 # augment the shift counter shro 8,MSW,MSW # move next byte into position for extraction #endif bne.t Lcase_3_cloop_at_start # branch if reached word boundary? #if __i960_BIG_ENDIAN__ cmpo 0,g14 ld (g3),MSW # fetch msw of operand for double shift bne Lcase_3_wloop # branch if src is still unaligned. Lcase_3_wloop2: cmpi g2,4 # less than four bytes to move? mov LSW,g1 # extract 4 bytes of src lda 4(g3),g3 # post-increment src word addr bl.f Lcase_3_cloop # branch if < four bytes left to move scanbyte 0,g1 # check for null byte mov MSW,LSW # move msw to lsw ld (g3),MSW # pre-fetch msw of operand for double shift bo.f Lcase_3_cloop # branch if word contains null byte subi 4,g2,g2 # decrease max_byte count by the 4 bytes moved st g1,(g4) # store 4 bytes to dest addo 4,g4,g4 # post-increment dest ptr b Lcase_3_wloop2 Lcase_4: subo g14,0,g14 # adjust shift count for big endian #else Lcase_4: #endif ld (g3),MSW # fetch msw of operand for double shift Lcase_3_wloop: cmpi g2,4 # less than four bytes to move? eshro g14,g6,g1 # extract 4 bytes of src lda 4(g3),g3 # post-increment src word addr bl.f Lcase_3_cloop # branch if < four bytes left to move scanbyte 0,g1 # check for null byte mov MSW,LSW # move msw to lsw ld (g3),MSW # pre-fetch msw of operand for double shift bo.f Lcase_3_cloop # branch if word contains null byte subi 4,g2,g2 # decrease max_byte count by the 4 bytes moved st g1,(g4) # store 4 bytes to dest addo 4,g4,g4 # post-increment dest ptr b Lcase_3_wloop Lexit_code: mov 0,g14 # conform to register conventions bx (g13) # g0 = addr of dest; g14 = 0 Lrett: ret /* end of strncat */ picolibc-1.7.4/newlib/libc/machine/i960/strncmp.S000066400000000000000000000107421414576234500214240ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ .file "strncmp.s" #ifdef __PIC .pic #endif #ifdef __PID .pid #endif /* * (c) copyright 1988,1993 Intel Corp., all rights reserved */ /* procedure strncmp (optimized assembler version for the 80960K Series) result = strncmp (src1_addr, src2_addr, max_bytes) compare the null terminated string pointed to by src1_addr to the string pointed to by src2_addr. Return 0 iff the strings are equal, -1 if src1_addr is lexicographically less than src2_addr, and 1 if it is lexicographically greater. Do not compare more than max_bytes bytes. Undefined behavior will occur if the end of either source string (i.e. the terminating null byte) is in the last two words of the program's allocated memory space. This is so because strncmp will fetch ahead. Disallowing the fetch ahead would impose a severe performance penalty. Strategy: Fetch and compare the strings by words and go to a character comparison loop as soon as a pair of words differ. If the words are equal up through either the exhaustion of max_bytes or the presence of the null byte, return 0 (equality). Otherwise, the character comparator will return -1 or 1 for inequality, or 0 if the differing byte is after the null byte or after the exhaustion of max_bytes. Tactics: 1) Do NOT try to fetch the words in a word aligned manner because, in my judgement, the performance degradation experienced due to non-aligned accesses does NOT outweigh the time and complexity added by the preamble and convoluted body that would be necessary to assure alignment. */ .globl _strncmp .globl __strncmp .leafproc _strncmp,__strncmp .align 2 _strncmp: #ifndef __PIC lda .Lrett,g14 #else lda .Lrett-(.+8)(ip),g14 #endif __strncmp: mov g14,g13 ldconst 0,g14 cmpibge 0,g2,Lequal_exit # Lexit early if max_bytes <= 0 addo g2,g0,g2 .Lwloop: cmpo g0,g2 # are max_bytes exhausted? ld (g0), g5 # fetch word of source_1 bge Lequal_exit # Lexit (equality) if max_bytes exhausted ld (g1), g3 # fetch word of source_2 addo 4,g0,g0 # post-increment source_1 ptr scanbyte 0,g5 # is a null byte present? addo 4,g1,g1 # post-increment source_1 ptr be .Lcloop.a # perform char comparator if null byte found cmpobe g5,g3,.Lwloop # perform char comparator if words are unequal .Lcloop.a: subo 4,g0,g0 # adjust max_byte counter ldconst 0xff,g4 # byte extraction mask .Lcloop: and g4,g5,g7 # compare individual bytes and g4,g3,g6 cmpobne g7,g6,.diff # if different, return -1 or 1 cmpo 0,g6 # they are equal. are they null? shlo 8,g4,g4 # position mask to extract next byte be Lequal_exit # if they are null, Lexit (equality) addo 1,g0,g0 # is max_bytes exhausted? cmpobl g0,g2,.Lcloop # if not, loop. if so, Lexit (equality) Lequal_exit: mov 0,g0 bx (g13) .Lrett: ret .diff: bl .neg mov 1,g0 bx (g13) .neg: subi 1,0,g0 .Lexit: bx (g13) /* end of strncmp */ picolibc-1.7.4/newlib/libc/machine/i960/strncmp_ca.S000066400000000000000000000205401414576234500220640ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ .file "sncmp_ca.s" #ifdef __PIC .pic #endif #ifdef __PID .pid #endif /* * (c) copyright 1988,1993 Intel Corp., all rights reserved */ /* procedure strncmp (optimized assembler version for the CA) result = strncmp (src1_addr, src2_addr, max_bytes) compare the null terminated string pointed to by src1_addr to the string space pointed to by src2_addr. Return 0 iff the strings are equal, -1 if src1_addr is lexicly less than src2_addr, and 1 if it is lexicly greater. Do not compare more than max_bytes bytes. Undefined behavior will occur if the end of either source string (i.e. the terminating null byte) is in the last word of the program's allocated memory space. This is so because, in several cases, strncmp will fetch ahead one word. Disallowing the fetch ahead would impose a severe performance penalty. This program handles five cases: 1) both arguments start on a word boundary 2) neither are word aligned, but they are offset by the same amount 3) source1 is word aligned, source2 is not 4) source2 is word aligned, source1 is not 5) neither is word aligned, and they are offset by differing amounts At the time of this writing, only g0 thru g7 and g14 are available for use in this leafproc; other registers would have to be saved and restored. These nine registers are sufficient to implement the routine. The registers are used as follows: g0 original src1 ptr; extracted word; return result g1 src2 ptr; 0xff -- byte extraction mask g2 maximum number of bytes to compare g3 src2 word ptr Little endian: g4 lsw of src1 g5 msw of src1 g6 src2 word g7 src1 word ptr Big endian: g4 msw of src1 g5 lsw of src1 g6 src1 word ptr g7 src2 word g13 return address g14 shift count */ #if __i960_BIG_ENDIAN__ #define MSW g4 #define LSW g5 #define SRC1 g6 #define SRC2 g7 #else #define LSW g4 #define MSW g5 #define SRC2 g6 #define SRC1 g7 #endif .globl _strncmp .globl __strncmp .leafproc _strncmp, __strncmp .align 2 _strncmp: #ifndef __PIC lda Lrett,g14 #else lda Lrett-(.+8)(ip),g14 #endif __strncmp: Lrestart: notand g0,3,SRC1 # extract word addr of start of src1 lda (g14),g13 # preserve return address cmpibge.f 0,g2,Lequal_exit # return equality if number of bytes to /* compare is none. */ #if __i960_BIG_ENDIAN__ cmpo g0,SRC1 # check alignment of src1 #endif ld (SRC1),LSW # fetch word with at least first byte of src1 notand g1,3,g3 # extract word addr of start of src2 ld 4(SRC1),MSW # fetch second word of src1 #if __i960_BIG_ENDIAN__ bne Lsrc1_unaligned # branch if src1 is unaligned cmpo g3,g1 # check alignment of src2 ld (g3),SRC2 # fetch word with at least first byte of src2 shlo 3,g0,g14 # compute shift count for src1 subo g14,0,g14 # adjust shift count for big endian lda 8(SRC1),SRC1 # advance src1 word addr bne.f Lsrc2_unaligned # branch if src2 is NOT word aligned /* src2 is word aligned */ mov LSW,g0 Lwloop2: # word comparing loop cmpo SRC2,g0 # compare src1 and src2 words lda 0xff000000,g1 # byte extraction mask mov MSW,LSW # move msw of src1 to lsw ld (SRC1),MSW # pre-fetch next msw of src1 addo 4,SRC1,SRC1 # post-increment src1 addr lda 4(g3),g3 # pre-increment src2 addr bne.f Lcloop # branch if src1 and src2 unequal scanbyte 0,g0 # check for null byte in src1 word ld (g3),SRC2 # pre-fetch next word of src2 mov LSW,g0 # extract word of src1 subi 4,g2,g2 # decrement maximum byte count bo.f Lequal_exit # branch if null byte encountered cmpibl.t 0,g2,Lwloop2 # branch if max_bytes not reached yet b Lequal_exit # strings were equal up through max_bytes Lsrc1_unaligned: #endif cmpo g3,g1 # check alignment of src2 ld (g3),SRC2 # fetch word with at least first byte of src2 shlo 3,g0,g14 # compute shift count for src1 #if __i960_BIG_ENDIAN__ subo g14,0,g14 # adjust shift count for big endian #endif eshro g14,g4,LSW # extract word of src1 lda 8(SRC1),SRC1 # advance src1 word addr bne.f Lsrc2_unaligned # branch if src2 is NOT word aligned /* at least src2 is word aligned */ mov LSW,g0 Lwloop: # word comparing loop cmpo SRC2,g0 # compare src1 and src2 words #if __i960_BIG_ENDIAN__ lda 0xff000000,g1 # byte extraction mask #else lda 0xff,g1 # byte extraction mask #endif mov MSW,LSW # move msw of src1 to lsw ld (SRC1),MSW # pre-fetch next msw of src1 addo 4,SRC1,SRC1 # post-increment src1 addr lda 4(g3),g3 # pre-increment src2 addr bne.f Lcloop # branch if src1 and src2 unequal scanbyte 0,g0 # check for null byte in src1 word ld (g3),SRC2 # pre-fetch next word of src2 eshro g14,g4,g0 # extract word of src1 subi 4,g2,g2 # decrement maximum byte count bo.f Lequal_exit # branch if null byte encountered cmpibl.t 0,g2,Lwloop # branch if max_bytes not reached yet b Lequal_exit # strings were equal up through max_bytes Lcloop_setup: # setup for coming from Lsrc2_unaligned mov LSW,g0 # restore extracted src1 word #if __i960_BIG_ENDIAN__ lda 0xff000000,g1 # byte extraction mask #else lda 0xff,g1 # byte extraction mask #endif Lcloop: # character comparing loop and SRC2,g1,g3 # extract next char of src2 and g0,g1,LSW # extract next char of src1 cmpobne.f LSW,g3,.diff # check for equality cmpo 0,LSW # check for null byte #if __i960_BIG_ENDIAN__ shro 8,g1,g1 # shift mask for next byte #else shlo 8,g1,g1 # shift mask for next byte #endif subi 1,g2,g2 # decrement character counter bne.t Lcloop # branch if null not reached /* words are equal up thru null byte */ Lequal_exit: mov 0,g14 # conform to register conventions lda 0,g0 # return zero, indicating equality bx (g13) # return Lrett: ret .diff: mov 0,g14 bl Lless_than_exit Lgreater_than_exit: cmpibge.f 0,g2,Lequal_exit # branch if difference is beyond max_bytes mov 1,g0 bx (g13) # g0 = 1 (src1 > src2) Lless_than_exit: cmpibge.f 0,g2,Lequal_exit # branch if difference is beyond max_bytes subi 1,0,g0 bx (g13) # g0 = -1 (src1 < src2) Lsrc2_unaligned: notor g1,3,g14 # first step in computing new src1 ptr ld 4(g3),SRC1 # fetch second word of src2 shlo 3,g1,MSW # compute shift count for src2 #if __i960_BIG_ENDIAN__ subo MSW,0,MSW # adjust shift count for big endian #endif eshro MSW,g6,SRC2 # extract word of src2 cmpo LSW,SRC2 # compare src1 and src2 words lda 4(g3),g1 # set new src2 ptr bne.f Lcloop_setup # first four bytes differ scanbyte 0,LSW # check for null byte subo g14,g0,g0 # second (final) step in computing new src1 ptr addi g14,g2,g2 # compute new max_bytes too lda (g13),g14 # prepare return pointer for Lrestart bno.t Lrestart # if null byte not encountered, continue /* with both string fetches shifted such that*/ /* src2 is now word aligned.*/ mov 0,g14 # conform to register conventions. lda 0,g0 # return indicator of equality. bx (g13) picolibc-1.7.4/newlib/libc/machine/i960/strncpy.S000066400000000000000000000130531414576234500214360ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ .file "strncpy.s" #ifdef __PIC .pic #endif #ifdef __PID .pid #endif /* * (c) copyright 1988,1993 Intel Corp., all rights reserved */ /* procedure strncpy (optimized assembler version for the 80960K Series) dest_addr = strncpy (dest_addr, src_addr, max_bytes) copy the null terminated string pointed to by src_addr to the string pointed to by dest_addr. Return the original dest_addr. If the source string is shorter than max_bytes, then null-pad the destination string. If it is longer than max_bytes, the copy stops at max_bytes bytes (and no terminating null appears in the destination string). This routine will fail if the source and destination string overlap (in particular, if the end of the source is overlapped by the beginning of the destination). The behavior is undefined. This is acceptable according to the draft C standard. Undefined behavior will also occur if the end of the source string (i.e. the terminating null byte) is in the last two words of the program's allocated memory space. This is so because strncpy fetches ahead. Disallowing the fetch ahead would impose a severe performance penalty. Strategy: Fetch and store the strings by words and go to a character move loop as soon as a null byte is encountered. If max_bytes is exhausted first, then terminate after moving only max_bytes (with the last 0, 1, 2, or 3 bytes moved as single bytes, not as a word). Otherwise, the character move loop moves the last bytes or the source string, and then null-pads the destination string until max_bytes is exhausted. Tactics: 1) Do NOT try to fetch the words in a word aligned manner because, in my judgement, the performance degradation experienced due to non-aligned accesses does NOT outweigh the time and complexity added by the preamble and convoluted body that would be necessary to assure alignment. 2) When the null byte is encountered in a source word, null out the higher-numbered bytes in that word, store the word in the destination, and go to the word null-padder, which may eventually go to the byte null-padder. */ .globl _strncpy .globl __strncpy .leafproc _strncpy,__strncpy .align 2 _strncpy: #ifndef __PIC lda Lrett,g14 #else lda Lrett-(.+8)(ip),g14 #endif __strncpy: mov g14, g13 cmpibge 0,g2,Lexit # quit early if max_bytes <= 0 ld (g1), g7 # fetch the first word of the source mov g0, g5 lda 0xff, g3 # byte extraction mask addo g1, g2, g6 addo g2, g5, g2 Lwloop: # word copying loop addo 4, g1, g1 # post-increment source ptr cmpo g6, g1 # max_bytes < 4 ? mov g7, g4 # keep a copy of source word bl Lcloop.a # if less than four bytes to go, go to char loop scanbyte 0, g4 # null byte found? ld (g1), g7 # pre-fetch next word of the source be Lcloop.c # go to char loop if null encountered st g4, (g5) # store current word addo 4, g5, g5 # post-increment destination ptr b Lwloop Lcloop.a: # character copying loop (max_bytes < 3) and g3, g4, g14 # extract byte Lcloop.b: cmpo g2, g5 # max_bytes <= 0 ? shro 8, g4, g4 # position word to extract next byte be Lexit # exit if max_bytes exhausted cmpo 0, g14 # is it null? stob g14, (g5) # store it addo 1, g5, g5 # post-increment dest ptr bne Lcloop.a # branch if we are NOT null padding b Lcloop.b # branch if we are null padding Lexit: mov 0, g14 bx (g13) # g0 = dest string address; g14 = 0 Lrett: ret Lcloop.c: # character copying loop and g3, g4, g14 # extract byte cmpo 0, g14 # is it null? mov g3, g7 # save mask shlo 8, g3, g3 # shift mask to next byte position bne Lcloop.c # loop until null found subo 1, g7, g3 # mask to null pad after null byte and g3, g4, g4 # null-out stuff after null byte st g4, (g5) # store last part of src and first of null-pad subo 8,g2,g6 # adjust max_byte counter Lzwloop: cmpo g5, g6 # max_bytes < 4 ? addo 4, g5, g5 bg Lcloop.b # if so, goto character loop st g14, (g5) # store four null bytes b Lzwloop /* end of strncpy */ picolibc-1.7.4/newlib/libc/machine/i960/strncpy_ca.S000066400000000000000000000237351414576234500221110ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ .file "sncpy_ca.s" #ifdef __PIC .pic #endif #ifdef __PID .pid #endif /* * (c) copyright 1988,1993 Intel Corp., all rights reserved */ /* procedure strncpy (optimized assembler version for the CA) dest_addr = strncpy (dest_addr, src_addr, max_bytes) copy the null terminated string pointed to by src_addr to the string space pointed to by dest_addr. Return the original dest_addr. If the source string is shorter than max_bytes, then null-pad the destination string. This routine will fail if the source and destination string overlap (in particular, if the end of the source is overlapped by the beginning of the destination). The behavior is undefined. This is acceptable according to the draft C standard. Undefined behavior will also occur if the end of the source string (i.e. the terminating null byte) is in the last word of the program's allocated memory space. This is so because, in several cases, strcpy will fetch ahead one word. Disallowing the fetch ahead would impose a severe performance penalty. This program handles five cases: 1) both arguments start on a word boundary 2) neither are word aligned, but they are offset by the same amount 3) source is word aligned, destination is not 4) destination is word aligned, source is not 5) neither is word aligned, and they are offset by differing amounts At the time of this writing, only g0 thru g7 and g13 are available for use in this leafproc; other registers would have to be saved and restored. These nine registers, plus tricky use of g14 are sufficient to implement the routine. The registers are used as follows: g0 original dest ptr; not modified, so that it may be returned. g1 src ptr; shift count g2 max_bytes g3 src ptr (word aligned) g4 dest ptr (word aligned) g5 0xff -- byte extraction mask Little endian: g6 lsw of double word for extraction of 4 bytes g7 msw of double word for extraction of 4 bytes Big endian: g6 msw of double word for extraction of 4 bytes g7 lsw of double word for extraction of 4 bytes g13 return address g14 byte extracted. */ #if __i960_BIG_ENDIAN__ #define MSW g6 #define LSW g7 #else #define LSW g6 #define MSW g7 #endif .globl _strncpy .globl __strncpy .leafproc _strncpy, __strncpy .align 2 _strncpy: #ifndef __PIC lda Lrett,g14 #else lda Lrett-(.+8)(ip),g14 #endif __strncpy: notand g1,3,g3 # extract word addr of start of src lda (g14),g13 # preserve return address cmpibge.f 0,g2,Lexit_code # Lexit if number of bytes to move is <= zero. cmpo g3,g1 # check alignment of src ld (g3),LSW # fetch word containing at least first byte notand g0,3,g4 # extract word addr of start of dest lda 4(g3),g3 # advance src word addr bne.f Lcase_245 # branch if src is NOT word aligned Lcase_13: cmpo g0,g4 # check alignment of dest lda 0xff,g5 # load mask for byte extraction subo 4,g4,g4 # store is pre-incrementing; back up dest addr bne.f Lcase_3 # branch if dest not word aligned Lcase_1: # src and dest are word aligned Lcase_1_wloop: # word copying loop cmpi g2,4 # check for fewer than four bytes to move lda (LSW),g1 # keep a copy of the src word addo 4,g4,g4 # pre-increment dest addr bl.f Lcase_1_cloop.a # branch if fewer than four bytes to copy scanbyte 0,g1 # check for null byte in src word ld (g3),LSW # pre-fetch next word of src subi 4,g2,g2 # decrease max_byte count by the 4 bytes moved bo.f Lcase_1_cloop.c # branch if word contains null byte addo 4,g3,g3 # post-increment src addr st g1,(g4) # store word in dest string b Lcase_1_wloop Lcase_3_cloop.a: Lcase_1_cloop.a: # character copying loop (max_bytes <= 3) #if __i960_BIG_ENDIAN__ rotate 8,g1,g1 # move next byte into position for extraction #endif and g5,g1,g14 # extract next char Lcase_1_cloop.b: cmpdeci 0,g2,g2 # is max_bytes exhausted? be.f Lexit_code # Lexit if max_bytes is exhausted cmpo 0,g14 # check for null byte stob g14,(g4) # store the byte in dest #if ! __i960_BIG_ENDIAN__ shro 8,g1,g1 # move next byte into position for extraction #endif lda 1(g4),g4 # post-increment dest byte addr bne.t Lcase_1_cloop.a # branch if null not reached b Lcase_1_cloop.b Lexit_code: mov 0,g14 # conform to register conventions bx (g13) # g0 = addr of dest; g14 = 0 Lrett: ret Lcase_1_cloop.c: Lcase_3_cloop.c: #if __i960_BIG_ENDIAN__ rotate 24,g5,g5 # move mask into position for testing next byte #endif and g5,g1,g14 # extract next char cmpo 0,g14 # check for null byte #if ! __i960_BIG_ENDIAN__ lda (g5),LSW # keep a copy of the current mask shlo 8,g5,g5 # move mask into position for testing next byte #endif bne.t Lcase_1_cloop.c # branch if null not reached #if __i960_BIG_ENDIAN__ subo 1,g5,g5 # null pad. andnot g5,g1,g1 # last bytes to copy, and null pad rest of word #else subo 1,LSW,g5 # mask to get last bytes to copy, and null pad and g5,g1,g1 # last bytes to copy, and null pad rest of word #endif st g1,(g4) Lcase_1_zwloop: # zero word loop cmpi g2,4 # check for fewer than four bytes to move addo 4,g4,g4 # pre-increment dest addr bl.f Lcase_1_cloop.b # branch if fewer than four bytes to copy subo 4,g2,g2 # decrease max_byte count by the 4 bytes moved st g14,(g4) # store word in dest string b Lcase_1_zwloop Lcase_3: # src is word aligned; dest is not addo 8,g4,g4 # move dest word ptr to first word boundary lda (g0),g1 # copy dest byte ptr mov LSW,MSW # make copy of first word of src lda 32,g14 # initialize shift count to zero (mod 32) Lcase_25: Lcase_3_cloop_at_start: # character copying loop for start of dest str cmpdeci 0,g2,g2 # is max_bytes exhausted? #if __i960_BIG_ENDIAN__ shro 24,MSW,g5 # extract next char #else and g5,MSW,g5 # extract next char #endif be.f Lexit_code # Lexit if max_bytes is exhausted cmpo 0,g5 # check for null byte stob g5,(g1) # store the byte in dest addo 1,g1,g1 # post-increment dest ptr lda 0xff,g5 # re-initialize byte extraction mask bne.t 1f # drop thru if null byte reached (to pad) movl 0,g6 # blank out remainder of input buffer 1: cmpo g1,g4 # have we reached word boundary in dest yet? #if __i960_BIG_ENDIAN__ lda -8(g14),g14 # augment the shift counter rotate 8,MSW,MSW # move next byte into position for extraction #else lda 8(g14),g14 # augment the shift counter shro 8,MSW,MSW # move next byte into position for extraction #endif bne.t Lcase_3_cloop_at_start # branch if reached word boundary? ld (g3),MSW # fetch msw of operand for double shift Lcase_4: #if __i960_BIG_ENDIAN__ cmpobne 0,g14,Lcase_3_wloop # branch if src is still unaligned. Lcase_3_wloop2: cmpi g2,4 # less than four bytes to move? lda (LSW),g1 # extract 4 bytes of src lda 4(g3),g3 # post-increment src word addr bl.f Lcase_3_cloop.a # branch if < four bytes left to move scanbyte 0,g1 # check for null byte lda (MSW),LSW # move msw to lsw subi 4,g2,g2 # decrease max_byte count by the 4 bytes moved ld (g3),MSW # pre-fetch msw of operand for double shift bo.f Lcase_3_cloop.c # branch if word contains null byte st g1,(g4) # store 4 bytes to dest addo 4,g4,g4 # post-increment dest ptr b Lcase_3_wloop2 #endif Lcase_3_wloop: cmpi g2,4 # less than four bytes to move? eshro g14,g6,g1 # extract 4 bytes of src lda 4(g3),g3 # post-increment src word addr bl.f Lcase_3_cloop.a # branch if < four bytes left to move scanbyte 0,g1 # check for null byte lda (MSW),LSW # move msw to lsw subi 4,g2,g2 # decrease max_byte count by the 4 bytes moved ld (g3),MSW # pre-fetch msw of operand for double shift bo.f Lcase_3_cloop.c # branch if word contains null byte st g1,(g4) # store 4 bytes to dest addo 4,g4,g4 # post-increment dest ptr b Lcase_3_wloop Lcase_245: cmpo g0,g4 # check alignment of dest ld (g3),MSW # pre-fetch second half and 3,g1,g1 # compute shift count lda 0xff,g5 # load mask for byte extraction #if __i960_BIG_ENDIAN__ subo g1,4,g14 # adjust shift count for big endian. shlo 3,g14,g14 #else shlo 3,g1,g14 #endif be.t Lcase_4 # branch if dest is word aligned or g4,g1,g1 # is src earlier in word, later, or sync w/ dst cmpo g0,g1 # < indicates first word of dest has more bytes /* than first word of source. */ lda 4(g4),g4 # move dest word addr to first word boundary eshro g14,g6,g5 # extract four bytes lda (g0),g1 bg.f 1f mov MSW,LSW lda 4(g3),g3 # move src word addr to second word boundary 1: mov g5,MSW lda 0xff,g5 b Lcase_25 /* end of strncpy */ picolibc-1.7.4/newlib/libc/machine/i960/strpbrk.S000066400000000000000000000065531414576234500214320ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ /* * (c) copyright 1989,1993 Intel Corp., all rights reserved */ /* procedure strpbrk (optimized assembler version: 80960K series, 80960CA) char_addr = strpbrk (string, brkset_string) Return the address of the first character in string that is NOT in the brkset_string. Return NULL if none exists. At the time of this writing, only g0 thru g7 and g13 are available for use in this leafproc; other registers would have to be saved and restored. These nine registers, plus tricky use of g14 are sufficient to implement the routine. This routine stays out of g3 and g4 altogether. They may be used by the strtok routine, which calls this routine in an incestuous way. */ #ifdef __PIC .pic #endif #ifdef __PID .pid #endif .file "strprk.s" .globl _strpbrk .globl __strpbrk .leafproc _strpbrk, __strpbrk .align 2 _strpbrk: #ifdef __PIC lda Lrett-(.+8)(ip),g14 b __strpbrk #else lda Lrett,g14 b __strpbrk #endif Lrett: ret __strpbrk: Lnext_char_strpbrk: addo 1,g1,g2 # g2 will be the brkset ptr ldob (g0),g7 # fetch next character of string ldob (g1),g6 # fetch first character of brkset cmpobe.f 0,g7,Lexit_char_not_found # quit if at end of string Lscan_set_strpbrk: cmpo g6,g7 # is brkset char equal to string char? ldob (g2),g5 # fetch next brkset char addo 1,g2,g2 # bump brkset ptr be.f Lexit_char_found cmpo g6,0 # is brkset_string exhausted? lda (g5),g6 bne.t Lscan_set_strpbrk # check next character of brkset addo 1,g0,g0 # check next character of string b Lnext_char_strpbrk Lexit_char_not_found: mov 0,g0 # return null if brkset char not found in string Lexit_char_found: mov g14,g13 # save return address lda 0,g14 # conform to register conventions bx (g13) /* end of strpbrk */ picolibc-1.7.4/newlib/libc/machine/i960/strrchr.S000066400000000000000000000116271414576234500214300ustar00rootroot00000000000000/******************************************************************************* * * Copyright (c) 1993 Intel Corporation * * Intel hereby grants you permission to copy, modify, and distribute this * software and its documentation. Intel grants this permission provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation. In addition, Intel grants this permission provided that * you prominently mark as "not part of the original" any modifications * made to this software or documentation, and that the name of Intel * Corporation not be used in advertising or publicity pertaining to * distribution of the software or the documentation without specific, * written prior permission. * * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or * representations regarding the use of, or the results of the use of, * the software and documentation in terms of correctness, accuracy, * reliability, currentness, or otherwise; and you rely on the software, * documentation and results solely at your own risk. * * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. * ******************************************************************************/ .file "strrchr.s" #ifdef __i960_BIG_ENDIAN__ #error "This does not work in big-endian" #endif #ifdef __PIC .pic #endif #ifdef __PID .pid #endif /* * (c) copyright 1988,1993 Intel Corp., all rights reserved */ /* procedure strrchr (optimized assembler version for the 80960K series) src_addr = strrchr (src_addr, char) return a pointer to the last byte that contains the indicated byte in the source string. Return null if the byte is not found. Undefined behavior will occur if the end of the source string (i.e. the terminating null byte) is in the last two words of the program's allocated memory space. This is so because strrchr fetches ahead. Disallowing the fetch ahead would impose a severe performance penalty. Strategy: Fetch the source string by words and scanbyte the words for the char until either a word with the byte is found or the null byte is encountered. In the former case, move through the word to find the matching byte and save its memory address, then continue the search. In the latter case, return the saved address, or zero (null) if none was ever found to save. Tactics: 1) Do NOT try to fetch the words in a word aligned manner because, in my judgement, the performance degradation experienced due to non-aligned accesses does NOT outweigh the time and complexity added by the preamble that would be necessary to assure alignment. This is supported by the intuition that most source arrays (even more true of most big source arrays) will be word aligned to begin with. */ .globl _strrchr .globl __strrchr .leafproc _strrchr, __strrchr .align 2 _strrchr: #ifdef __PIC lda Lrett-(.+8)(ip),g14 #else lda Lrett,g14 #endif __strrchr: ld (g0),g4 # fetch first word lda 0xff,g7 # byte extraction mask and g1,g7,g1 # make char an 8-bit ordinal shlo 8,g1,g2 # broadcast the char to four bytes or g1,g2,g2 shlo 16,g2,g5 or g2,g5,g3 mov g14,g13 # preserve return address addo 4,g0,g2 # post-increment src pointer mov 1,g0 # prepare to return null pointer mov g3,g6 # prepare to return null pointer Lsearch_for_word_with_char_or_null: mov g4,g5 # copy word scanbyte 0,g5 # check for null byte ld (g2),g4 # fetch next word of src bo Lword_has_null # branch if null found scanbyte g3,g5 # check for byte with char addo 4,g2,g2 # post-increment src pointer bno Lsearch_for_word_with_char_or_null # branch if no copy of char mov g5,g6 # save word that has char in it (at least once) subo 4,g2,g0 # save addr of byte after word with char b Lsearch_for_word_with_char_or_null Lword_has_null: subo 4,g2,g2 # move src pointer back to word with null Lfind_null: addo 1,g2,g2 # advance src pointer to byte after current and g7,g5,g14 # extract next byte cmpo g1,g14 # is current byte char? shro 8,g5,g5 # position next byte for extraction bne 1f # skip if not char sought after mov g2,g0 # save addr of byte after char mov g3,g6 # save word of all char to short circuit search 1: cmpobne 0,g14,Lfind_null # is current byte null? Lfind_last_char: rotate 8,g6,g6 # position next highest byte and g7,g6,g5 # extract byte subo 1,g0,g0 # move pointer to that byte (or nullify) cmpobne g5,g1,Lfind_last_char # branch if not at char bx (g13) # g0 = addr of char in src (or null); g14 = 0 Lrett: ret /* end of strrchr */ picolibc-1.7.4/newlib/libc/machine/iq2000/000077500000000000000000000000001414576234500200325ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/iq2000/setjmp.S000066400000000000000000000015621414576234500214640ustar00rootroot00000000000000/* Copyright (c) 2003 Anthony Green */ /* This is a simple version of setjmp and longjmp for iq2000. */ /* int setjmp (jmp_buf); */ .globl setjmp .ent setjmp setjmp: sw r16,0(r4) /* rs0 */ sw r17,4(r4) /* rs1 */ sw r18,8(r4) /* rs2 */ sw r19,12(r4) /* rs3 */ sw r20,16(r4) /* rs4 */ sw r21,20(r4) /* rs5 */ sw r22,24(r4) /* rs6 */ sw r23,28(r4) /* rs7 */ sw r30,32(r4) /* rs8 */ sw r29,36(r4) sw r31,40(r4) move r2,r0 j r31 .end setjmp /* volatile void longjmp (jmp_buf, int); */ .globl longjmp .ent longjmp longjmp: lw r16,0(r4) /* rs0 */ lw r17,4(r4) /* rs1 */ lw r18,8(r4) /* rs2 */ lw r19,12(r4) /* rs3 */ lw r20,16(r4) /* rs4 */ lw r21,20(r4) /* rs5 */ lw r22,24(r4) /* rs6 */ lw r23,28(r4) /* rs7 */ lw r30,32(r4) /* rs8 */ lw r29,36(r4) lw r31,40(r4) bne r5,r0,1f li r5,1 1: move r2,r5 j r31 .end longjmp picolibc-1.7.4/newlib/libc/machine/lm32/000077500000000000000000000000001414576234500176745ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/lm32/setjmp.S000066400000000000000000000055761414576234500213370ustar00rootroot00000000000000/* * Copyright (c) 2008 Jon Beniston * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* setjmp/longjmp for LatticeMico32. */ .section .text .align 4 .globl setjmp .type setjmp,@function .globl longjmp .type longjmp,@function /* setjmp: save all callee saves into jmp_buf r1 - Address of jmp_buf */ setjmp: sw (r1+0), r11 sw (r1+4), r12 sw (r1+8), r13 sw (r1+12), r14 sw (r1+16), r15 sw (r1+20), r16 sw (r1+24), r17 sw (r1+28), r18 sw (r1+32), r19 sw (r1+36), r20 sw (r1+40), r21 sw (r1+44), r22 sw (r1+48), r23 sw (r1+52), r24 sw (r1+56), r25 sw (r1+60), gp sw (r1+64), fp sw (r1+68), sp sw (r1+72), ra mvi r1, 0 ret /* longjmp: restore all callee saves from jmp_buf r1 - Address of jmb_buf r2 - Value to return with */ .global longjmp .type longjmp,@function .align 4 longjmp: lw r11, (r1+0) lw r12, (r1+4) lw r13, (r1+8) lw r14, (r1+12) lw r15, (r1+16) lw r16, (r1+20) lw r17, (r1+24) lw r18, (r1+28) lw r19, (r1+32) lw r20, (r1+36) lw r21, (r1+40) lw r22, (r1+44) lw r23, (r1+48) lw r24, (r1+52) lw r25, (r1+56) lw gp, (r1+60) lw fp, (r1+64) lw sp, (r1+68) lw ra, (r1+72) mv r1, r2 ret picolibc-1.7.4/newlib/libc/machine/m32c/000077500000000000000000000000001414576234500176635ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/m32c/setjmp.S000066400000000000000000000075111414576234500213150ustar00rootroot00000000000000/* Copyright (c) 2005 Red Hat Incorporated. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of Red Hat Incorporated may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if defined(__r8c_cpu__) || defined(__m16c_cpu__) #define A16 1 #endif /* We implement setjmp/longjmp much like the way gcc implements exceptions - we create new stack frames, then switch to them and return. Thus, the two setjmp's below each push all the relevent registers, then copy the whole frame into the buffer (first $sp is moved, then smovf copies the frame itself), and the two longjmps restore $sp, copy the frame back into place, and issue the same return as the setjmp would have used. Since the sizes of registers differs between the 16 and 24 bit models, we provide separate implementations for each rather than trying to parameterize them. Jump buffer sizes: 21 bytes for 16 bit, 34 bytes for 24 bit. */ .text #ifdef A16 /* 16 bit versions */ .global _setjmp _setjmp: enter #0 pushm r1,r2,r3,a0,a1,sb,fb ; At this point, the stack looks like this: ; ... [pc:3] [oldfb:2] [r1:2] [r2:2] [r3:2] [a0:2] [a1:2] [sb:2] [fb:2] */ mov.w r1,a1 ; a1 is the destination of smovf mov.b #0,r1h stc sp,a0 ; r1h:a0 is the source of smovf mov.w a0,[a1] add.w #2,a1 mov.w #19,r3 ; plus two for sp later smovf.b ; Return 0 to caller. mov.w #0,r0 popm r1,r2,r3,a0,a1,sb,fb exitd .global _longjmp _longjmp: enter #0 mov.w r1,a0 ; pointer to jump buf mov.w r2,r0 ; setjmp's "new" return value mov.b #0,r1h ; r1h: a0 is the source, now jmpbuf mov.w [a0],a1 ; dest is new stack ldc a1,sp add.w #2,a0 mov.w #19,r3 smovf.b ;; now return to our caller with this newly restored frame popm r1,r2,r3,a0,a1,sb,fb exitd #else /* 24 bit versions */ .global _setjmp _setjmp: enter #0 pushm r1,r2,r3,a0,a1,sb,fb ; At this point, the stack looks like this: ; ... [jbuf:4] [pc:4] [oldfb:4] [r1:2] [r2:2] [r3:2] [a0:4] [a1:4] [sb:4] [fb:4] */ mov.l 8[fb],a1 ; a1 is the destination of smovf stc sp,a0 ; r1h:a0 is the source of smovf mov.l a0,[a1] add.l #4,a1 mov.w #30,r3 ; plus two for sp later smovf.b ; Return 0 to caller. mov.w #0,r0 popm r1,r2,r3,a0,a1,sb,fb exitd .global _longjmp _longjmp: enter #0 ; ... [rv:2] [jbuf:4] [pc:4] [oldfb:4] mov.l 8[fb],a0 ; pointer to jump buf mov.w 12[fb],r0 ; setjmp's "new" return value mov.l [a0],a1 ; dest is new stack ldc a1,sp add.l #4,a0 mov.w #30,r3 smovf.b ;; now return to our caller with this newly restored frame popm r1,r2,r3,a0,a1,sb,fb exitd #endif picolibc-1.7.4/newlib/libc/machine/m32r/000077500000000000000000000000001414576234500177025ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/m32r/setjmp.S000066400000000000000000000030361414576234500213320ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ # setjmp/longjmp for m32r. The jmpbuf looks like this: # # Register jmpbuf offset # reserved 0x00 # R8 0x04 # R9 0x08 # R10 0x0c # R11 0x10 # R12 0x14 # R13 (FP) 0x18 # R14 (LR) 0x1c # R15 (SP) 0x20 # reserved 0x24 .text .global setjmp setjmp: ;addi r0, #-4 ; commented out as first word is reserved ;st r1, @+r0 st r8, @+r0 st r9, @+r0 st r10, @+r0 st r11, @+r0 st r12, @+r0 st r13, @+r0 st r14, @+r0 st r15, @+r0 # Return 0 to caller. ldi r0, #0 jmp lr .global longjmp longjmp: addi r0, #4 ; first word is reserved ;ld r1, @r0+ ld r8, @r0+ ld r9, @r0+ ld r10, @r0+ ld r11, @r0+ ld r12, @r0+ ld r13, @r0+ ld r2, @r0+ ; return address ld r15, @r0+ # If caller attempted to return 0, return 1 instead. mv r0, r1 bnez r0, .Lnonzero ldi r0, #1 .Lnonzero: jmp r2 picolibc-1.7.4/newlib/libc/machine/m68hc11/000077500000000000000000000000001414576234500202065ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/m68hc11/setjmp.S000066400000000000000000000041361414576234500216400ustar00rootroot00000000000000/* setjmp/longjmp routines for M68HC11 & M68HC12. * Copyright (C) 1999, 2000, 2001, 2002 Stephane Carrez (stcarrez@nerim.fr) * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #if __INT__ == 32 # define val 4 # define INT32(X) X #else # define val 2 # define INT32(X) #endif #ifdef mc6811 # define REG(X) *X #else # define REG(X) X #endif .sect .text .global setjmp .global longjmp #ifdef mc6811 setjmp: xgdx tsy ldd 0,y std 0,x sty 2,x ldd REG(_.frame) std 4,x ldd REG(_.d1) std 6,x ldd REG(_.d2) std 8,x ldd REG(_.d3) std 10,x ldd REG(_.d4) std 12,x ldd REG(_.d5) std 14,x ldd REG(_.d6) std 16,x ldd REG(_.d7) std 18,x ldd REG(_.d8) std 20,x INT32( ldx #0) clra clrb rts #else setjmp: xgdx movw 0,sp,2,x+ sts 2,x+ movw _.frame,2,x+ movw _.d1,2,x+ movw _.d2,2,x+ movw _.d3,2,x+ movw _.d4,2,x+ movw _.d5,2,x+ movw _.d6,2,x+ movw _.d7,2,x+ movw _.d8,2,x+ INT32( ldx #0) clra clrb rts #endif #ifdef mc6811 longjmp: xgdx tsy ldd val,y bne do_jump ldd #1 do_jump: xgdy ldd 4,x std REG(_.frame) ldd 6,x std REG(_.d1) ldd 8,x std REG(_.d2) ldd 10,x std REG(_.d3) ldd 12,x std REG(_.d4) ldd 14,x std REG(_.d5) ldd 16,x std REG(_.d6) ldd 18,x std REG(_.d7) ldd 20,x std REG(_.d8) ldd 0,x ldx 2,x txs std 0,x INT32( ldx #0) xgdy rts #else longjmp: xgdx ldy val,sp bne do_jump ldy #1 do_jump: ldd 4,x+ movw 2,x+,_.frame movw 0,x,_.d1 movw 2,x,_.d2 movw 4,x,_.d3 movw 6,x,_.d4 movw 8,x,_.d5 movw 10,x,_.d6 movw 12,x,_.d7 movw 14,x,_.d8 ldx -4,x txs std 0,x INT32( ldx #0) xgdy rts #endif picolibc-1.7.4/newlib/libc/machine/m68k/000077500000000000000000000000001414576234500177045ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/m68k/m68kasm.h000066400000000000000000000015661414576234500213530ustar00rootroot00000000000000/* Copyright (c) 2008 Jeff Johnston */ /* These are predefined by new versions of GNU cpp. */ #ifndef __USER_LABEL_PREFIX__ #define __USER_LABEL_PREFIX__ _ #endif #ifndef __REGISTER_PREFIX__ #define __REGISTER_PREFIX__ #endif /* ANSI concatenation macros. */ #define CONCAT1(a, b) CONCAT2(a, b) #define CONCAT2(a, b) a ## b /* Use the right prefix for global labels. */ #define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x) /* Use the right prefix for registers. */ #define REG(x) CONCAT1 (__REGISTER_PREFIX__, x) #define d0 REG (d0) #define d1 REG (d1) #define d2 REG (d2) #define d3 REG (d3) #define d4 REG (d4) #define d5 REG (d5) #define d6 REG (d6) #define d7 REG (d7) #define a0 REG (a0) #define a1 REG (a1) #define a2 REG (a2) #define a3 REG (a3) #define a4 REG (a4) #define a5 REG (a5) #define a6 REG (a6) #define fp REG (fp) #define sp REG (sp) picolibc-1.7.4/newlib/libc/machine/m68k/memcpy.S000066400000000000000000000054131414576234500213250ustar00rootroot00000000000000/* a-memcpy.s -- memcpy, optimised for m68k asm * * Copyright (c) 2007 mocom software GmbH & Co KG) * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #include "m68kasm.h" #if defined (__mcoldfire__) || defined (__mc68010__) || defined (__mc68020__) || defined (__mc68030__) || defined (__mc68040__) || defined (__mc68060__) # define MISALIGNED_OK 1 #else # define MISALIGNED_OK 0 #endif .text .align 4 .globl SYM(memcpy) .type SYM(memcpy), @function /* memcpy, optimised * * strategy: * - no argument testing (the original memcpy from the GNU lib does * no checking either) * - make sure the destination pointer (the write pointer) is long word * aligned. This is the best you can do, because writing to unaligned * addresses can be the most costfull thing you could do. * - Once you have figured that out, we do a little loop unrolling * to further improve speed. */ SYM(memcpy): move.l 4(sp),a0 | dest ptr move.l 8(sp),a1 | src ptr move.l 12(sp),d1 | len cmp.l #8,d1 | if fewer than 8 bytes to transfer, blo .Lresidue | do not optimise #if !MISALIGNED_OK /* Goto .Lresidue if either dest or src is not 4-byte aligned */ move.l a0,d0 and.l #3,d0 bne .Lresidue move.l a1,d0 and.l #3,d0 bne .Lresidue #else /* MISALIGNED_OK */ /* align dest */ move.l a0,d0 | copy of dest neg.l d0 and.l #3,d0 | look for the lower two only beq 2f | is aligned? sub.l d0,d1 lsr.l #1,d0 | word align needed? bcc 1f move.b (a1)+,(a0)+ 1: lsr.l #1,d0 | long align needed? bcc 2f move.w (a1)+,(a0)+ 2: #endif /* !MISALIGNED_OK */ /* long word transfers */ move.l d1,d0 and.l #3,d1 | byte residue lsr.l #3,d0 bcc 1f | carry set for 4-byte residue move.l (a1)+,(a0)+ 1: lsr.l #1,d0 | number of 16-byte transfers bcc .Lcopy | carry set for 8-byte residue bra .Lcopy8 1: move.l (a1)+,(a0)+ move.l (a1)+,(a0)+ .Lcopy8: move.l (a1)+,(a0)+ move.l (a1)+,(a0)+ .Lcopy: #if !defined (__mcoldfire__) dbra d0,1b sub.l #0x10000,d0 #else subq.l #1,d0 #endif bpl 1b bra .Lresidue 1: move.b (a1)+,(a0)+ | move residue bytes .Lresidue: #if !defined (__mcoldfire__) dbra d1,1b | loop until done #else subq.l #1,d1 bpl 1b #endif move.l 4(sp),d0 | return value rts picolibc-1.7.4/newlib/libc/machine/m68k/memset.S000066400000000000000000000046761414576234500213370ustar00rootroot00000000000000/* a-memset.s -- memset, optimised for fido asm * * Copyright (c) 2007 mocom software GmbH & Co KG) * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #include "m68kasm.h" .text .align 4 .globl SYM(memset) .type SYM(memset), @function | memset, optimised | | strategy: | - no argument testing (the original memcpy from the GNU lib does | no checking either) | - make sure the destination pointer (the write pointer) is long word | aligned. This is the best you can do, because writing to unaligned | addresses can be the most costfull thing one could do. | - we fill long word wise if possible | | VG, 2006 | | bugfixes: | - distribution of byte value improved - in cases someone gives | non-byte value | - residue byte transfer was not working | | VG, April 2007 | SYM(memset): move.l 4(sp),a0 | dest ptr move.l 8(sp),d0 | value move.l 12(sp),d1 | len cmp.l #16,d1 blo .Lbset | below, byte fills | move.l d2,-(sp) | need a register move.b d0,d2 | distribute low byte to all byte in word lsl.l #8,d0 move.b d2,d0 move.w d0,d2 swap d0 | rotate 16 move.w d2,d0 | move.l a0,d2 | copy of src neg.l d2 | 1 2 3 ==> 3 2 1 and.l #3,d2 beq 2f | is aligned | sub.l d2,d1 | fix length lsr.l #1,d2 | word align needed? bcc 1f move.b d0,(a0)+ | fill byte 1: lsr.l #1,d2 | long align needed? bcc 2f move.w d0,(a0)+ | fill word 2: move.l d1,d2 | number of long transfers (at least 3) lsr.l #2,d2 subq.l #1,d2 1: move.l d0,(a0)+ | fill long words .Llset: #if !defined (__mcoldfire__) dbra d2,1b | loop until done sub.l #0x10000,d2 #else subq.l #1,d2 #endif bpl 1b and.l #3,d1 | residue byte transfers, fixed move.l (sp)+,d2 | restore d2 bra .Lbset 1: move.b d0,(a0)+ | fill residue bytes .Lbset: #if !defined (__mcoldfire__) dbra d1,1b | loop until done #else subq.l #1,d1 bpl 1b #endif move.l 4(sp),d0 | return value rts picolibc-1.7.4/newlib/libc/machine/m68k/setjmp.S000066400000000000000000000027161414576234500213400ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include "m68kasm.h" .global SYM (setjmp) .global SYM (longjmp) SYM (setjmp): moveal sp@(4),a0 movel sp@(0),a0@(12) movel sp,a0@(8) moveml d2-d7/a2-a6,a0@(20) clrl d0 rts SYM (longjmp): moveal sp@(4),a0 movel sp@(8),d0 bne 1f movel &1,d0 1: moveml a0@(20),d2-d7/a2-a6 moveal a0@(8),sp movel a0@(12),sp@ rts #ifdef M68881 .global SYM (setjmp_68881) .global SYM (longjmp_68881) SYM (setjmp_68881): moveal sp@(4),a0 movel sp@(0),a0@(12) movel sp,a0@(8) moveml d2-d7/a2-a6,a0@(20) fmovemx fp2-fp7,a0@(64) clrl d0 rts SYM (longjmp_68881): moveal sp@(4),a0 fmovemx a0@(64),fp2-fp7 movel sp@(8),d0 bne 1f movel &1,d0 1: moveml a0@(20),d2-d7/a2-a6 moveal a0@(8),sp movel a0@(12),sp@ rts #endif picolibc-1.7.4/newlib/libc/machine/m68k/strcpy.c000066400000000000000000000026631414576234500214030ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* * C library strcpy routine * * This routine has been optimized for the CPU32+. * It should run on all 68k machines. * * W. Eric Norum * Saskatchewan Accelerator Laboratory * University of Saskatchewan * Saskatoon, Saskatchewan, CANADA * eric@skatter.usask.ca */ #include /* * Copy bytes using CPU32+ loop mode if possible */ char * strcpy (char *to, const char *from) { char *pto = to; unsigned int n = 0xFFFF; __asm__ volatile ("1:\n" "\tmove.b (%0)+,(%1)+\n" #if defined(__mcpu32__) "\tdbeq %2,1b\n" #endif "\tbne.b 1b\n" : "=a" (from), "=a" (pto), "=d" (n) : "0" (from), "1" (pto), "2" (n) : "cc", "memory"); return to; } picolibc-1.7.4/newlib/libc/machine/m68k/strlen.c000066400000000000000000000026121414576234500213600ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* * C library strlen routine * * This routine has been optimized for the CPU32+. * It should run on all 68k machines. * * W. Eric Norum * Saskatchewan Accelerator Laboratory * University of Saskatchewan * Saskatoon, Saskatchewan, CANADA * eric@skatter.usask.ca */ #include /* * Test bytes using CPU32+ loop mode if possible. */ size_t strlen (const char *str) { unsigned int n = ~0; const char *cp = str; __asm__ volatile ("1:\n" "\ttst.b (%0)+\n" #if defined(__mcpu32__) "\tdbeq %1,1b\n" #endif "\tbne.b 1b\n" : "=a" (cp), "=d" (n) : "0" (cp), "1" (n) : "cc"); return (cp - str) - 1; } picolibc-1.7.4/newlib/libc/machine/m88k/000077500000000000000000000000001414576234500177065ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/m88k/setjmp.S000066400000000000000000000035061414576234500213400ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* This is a simple version of setjmp and longjmp. Ian Lance Taylor, Cygnus Support, 15 July 1993. */ /* We need to save the address of the return instruction, which is in r1, as well as general register r14 through r25. If we are compiling for the 88110 with the extended register file, we also need to save registers x22 through x29. The jmp_buf should be 52 bytes long in the one case, 84 bytes in the other. */ /* int setjmp (jmp_buf); */ globl _setjmp _setjmp: st r1,r2,0 st.d r14,r2,4 st.d r16,r2,12 st.d r18,r2,20 st.d r20,r2,28 st.d r22,r2,36 st.d r24,r2,44 #ifdef __m88110__ /* These instructions are just a guess, and gas doesn't support them anyhow. */ st.d x22,r2,52 st.d x24,r2,60 st.d x26,r2,68 st.d x28,r2,76 #endif jmp r1 global _longjmp _longjmp: ld r1,r2,0 ld.d r14,r2,4 ld.d r16,r2,12 ld.d r18,r2,20 ld.d r20,r2,28 ld.d r22,r2,36 ld.d r24,r2,44 #ifdef __m88110__ /* These instructions are just a guess, and gas doesn't support them anyhow. */ ld.d x22,r2,52 ld.d x24,r2,60 ld.d x26,r2,68 ld.d x28,r2,76 #endif jmp r1 picolibc-1.7.4/newlib/libc/machine/mep/000077500000000000000000000000001414576234500177005ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/mep/setjmp.S000066400000000000000000000040651414576234500213330ustar00rootroot00000000000000/* Copyright (c) 2003 DJ Delorie, Red Hat Inc. */ # # Setjmp/longjmp for MeP # # # 19 32-bit words in the jmpbuf: # $0 # $1 # ... # $15 # $pc # $hi # $lo # # Note that $0 is saved but not restored. It can't be restored # as it's the return value of setjmp, but we save it in case # some application wants to see it in the jmp_buf. Ideally, # we should not need to save anything that is call-clobbered, # but you never know what the user is going to tell gcc with -f # options. .noregerr .text .globl setjmp .type setjmp,@function setjmp: # $1 is the address of the buffer. We return 0 in $0. sw $0, ($1) sw $1, 4($1) sw $2, 8($1) sw $3, 12($1) sw $4, 16($1) sw $5, 20($1) sw $6, 24($1) sw $7, 28($1) sw $8, 32($1) sw $9, 36($1) sw $10, 40($1) sw $11, 44($1) sw $12, 48($1) sw $13, 52($1) sw $14, 56($1) sw $15, 60($1) ldc $0, $lp sw $0, 64($1) ldc $0, $opt sra $0, 24 and3 $0, $0, 3 beqz $0, sj_skip_hilo ldc $0, $hi sw $0, 68($1) ldc $0, $lo sw $0, 72($1) sj_skip_hilo: mov $0, 0 ret .globl longjmp .type longjmp,@function longjmp: # $1 is the address of the buffer. $2 is the value setjmp # returns. We do not faithfully restore $0 or $lp, because # the act of calling setjmp clobbered those anyway. bnez $2, rv_not_zero mov $2, 1 rv_not_zero: # We restore $sp first so we can save the return value there, # otherwise we'd need to have another unrestored register. lw $15, 60($1) add3 $sp, $sp, -4 sw $2, ($sp) # Now restore the general registers. lw $2, 8($1) lw $3, 12($1) lw $4, 16($1) lw $5, 20($1) lw $6, 24($1) lw $7, 28($1) lw $8, 32($1) lw $9, 36($1) lw $10, 40($1) lw $11, 44($1) lw $12, 48($1) lw $13, 52($1) lw $14, 56($1) # We restore $pc's value to $lp so that we can just ret later. lw $0, 64($1) stc $0, $lp ldc $0, $opt sra $0, 24 and3 $0, $0, 3 beqz $0, lj_skip_hilo lw $0, 68($1) stc $0, $hi lw $0, 72($1) stc $0, $lo lj_skip_hilo: # Restore $1 lw $1, 8($1) # Get the return value off the stack, and restore the stack. lw $0, ($sp) add3 $sp, $sp, 4 ret picolibc-1.7.4/newlib/libc/machine/microblaze/000077500000000000000000000000001414576234500212465ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/microblaze/abort.c000066400000000000000000000054771414576234500225360ustar00rootroot00000000000000/* Copyright (c) 2001, 2009 Xilinx, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of Xilinx nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* NetWare can not use this implementation of abort. It provides its own version of abort in clib.nlm. If we can not use clib.nlm, then we must write abort in sys/netware. */ #ifdef ABORT_PROVIDED int _dummy_abort = 1; #else /* FUNCTION <>---abnormal termination of a program INDEX abort SYNOPSIS #include void abort(void); DESCRIPTION Use <> to signal that your program has detected a condition it cannot deal with. Normally, <> ends your program's execution. Before terminating your program, <> raises the exception <> (using `<>'). If you have used <> to register an exception handler for this condition, that handler has the opportunity to retain control, thereby avoiding program termination. In this implementation, <> does not perform any stream- or file-related cleanup (the host environment may do so; if not, you can arrange for your program to do its own cleanup with a <> exception handler). RETURNS <> does not return to its caller. PORTABILITY ANSI C requires <>. Supporting OS subroutines required: <<_exit>> and optionally, <>. */ #include #include #include void abort (void) { #ifdef ABORT_MESSAGE write (2, "Abort called\n", sizeof ("Abort called\n")-1); #endif while (1) { exit(1); } } picolibc-1.7.4/newlib/libc/machine/microblaze/longjmp.S000066400000000000000000000053601414576234500230440ustar00rootroot00000000000000/* Copyright (c) 2001, 2009 Xilinx, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of Xilinx nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * longjmp - non-local jump to a saved stack context * args - r5 - jmp_buf * r6 - val * * jmpbuf frame structure * --------------------- * * +-------------+ + 0 * | r1 | * +-------------+ + 4 * | r13 | * | . | * | . | * | . | * | r31 | * +-------------+ + 80 * | . | * | . | */ .globl longjmp .section .text .align 2 .ent longjmp longjmp: lwi r1, r5, 0 lwi r13, r5, 4 lwi r14, r5, 8 lwi r15, r5, 12 lwi r16, r5, 16 lwi r17, r5, 20 lwi r18, r5, 24 lwi r19, r5, 28 lwi r20, r5, 32 lwi r21, r5, 36 lwi r22, r5, 40 lwi r23, r5, 44 lwi r24, r5, 48 lwi r25, r5, 52 lwi r26, r5, 56 lwi r27, r5, 60 lwi r28, r5, 64 lwi r29, r5, 68 lwi r30, r5, 72 lwi r31, r5, 76 rtsd r15, 8 or r3, r0, r6 .end longjmp picolibc-1.7.4/newlib/libc/machine/microblaze/mb_endian.h000066400000000000000000000012051414576234500233310ustar00rootroot00000000000000/* Copyright (c) 2013 Corinna Vinschen */ #ifndef _MB_ENDIAN_H #define _MB_ENDIAN_H /* Convenience macros for loading and store 4 bytes in a byte invariant way with * a singe instruction. Endianess affects this and we rely on MicroBlaze * load/store reverse instructions to do the trick on little-endian systems. */ #ifdef __LITTLE_ENDIAN__ #define LOAD4BYTES(rD,rA,rB) "\tlwr\t" rD ", " rA ", " rB "\n" #define STORE4BYTES(rD,rA,rB) "\tswr\t" rD ", " rA ", " rB "\n" #else #define LOAD4BYTES(rD,rA,rB) "\tlw\t" rD ", " rA ", " rB "\n" #define STORE4BYTES(rD,rA,rB) "\tsw\t" rD ", " rA ", " rB "\n" #endif #endif picolibc-1.7.4/newlib/libc/machine/microblaze/setjmp.S000066400000000000000000000053301414576234500226750ustar00rootroot00000000000000/* Copyright (c) 2001, 2009 Xilinx, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of Xilinx nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * setjmp - save stack context for non-local goto * args - r5 - jmp_buf * * jmpbuf frame structure * --------------------- * * +-------------+ + 0 * | r1 | * +-------------+ + 4 * | r13 | * | . | * | . | * | . | * | r31 | * +-------------+ + 80 * | . | * | . | */ .globl setjmp .section .text .align 2 .ent setjmp setjmp: swi r1, r5, 0 swi r13, r5, 4 swi r14, r5, 8 swi r15, r5, 12 swi r16, r5, 16 swi r17, r5, 20 swi r18, r5, 24 swi r19, r5, 28 swi r20, r5, 32 swi r21, r5, 36 swi r22, r5, 40 swi r23, r5, 44 swi r24, r5, 48 swi r25, r5, 52 swi r26, r5, 56 swi r27, r5, 60 swi r28, r5, 64 swi r29, r5, 68 swi r30, r5, 72 swi r31, r5, 76 rtsd r15, 8 or r3, r0, r0 .end setjmp picolibc-1.7.4/newlib/libc/machine/microblaze/strcmp.c000066400000000000000000000200541414576234500227230ustar00rootroot00000000000000/* Copyright (c) 2009 Xilinx, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of Xilinx nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. FUNCTION <>---character string compare INDEX strcmp SYNOPSIS #include int strcmp(const char *<[a]>, const char *<[b]>); DESCRIPTION <> compares the string at <[a]> to the string at <[b]>. RETURNS If <<*<[a]>>> sorts lexicographically after <<*<[b]>>>, <> returns a number greater than zero. If the two strings match, <> returns zero. If <<*<[a]>>> sorts lexicographically before <<*<[b]>>>, <> returns a number less than zero. PORTABILITY <> is ANSI C. <> requires no supporting OS subroutines. QUICKREF strcmp ansi pure */ #include #include /* Nonzero if either X or Y is not aligned on a "long" boundary. */ #define UNALIGNED(X, Y) \ (((long)X & (sizeof (long) - 1)) | ((long)Y & (sizeof (long) - 1))) /* DETECTNULL returns nonzero if (long)X contains a NULL byte. */ #if LONG_MAX == 2147483647L #define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) #else #if LONG_MAX == 9223372036854775807L #define DETECTNULL(X) (((X) - 0x0101010101010101) & ~(X) & 0x8080808080808080) #else #error long int is not a 32bit or 64bit type. #endif #endif #ifndef DETECTNULL #error long int is not a 32bit or 64bit byte #endif int strcmp (const char *s1, const char *s2) { #ifndef HAVE_HW_PCMP #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } return (*(unsigned char *) s1) - (*(unsigned char *) s2); #else unsigned long *a1; unsigned long *a2; /* If s1 or s2 are unaligned, then compare bytes. */ if (!UNALIGNED (s1, s2)) { /* If s1 and s2 are word-aligned, compare them a word at a time. */ a1 = (unsigned long*)s1; a2 = (unsigned long*)s2; while (*a1 == *a2) { /* To get here, *a1 == *a2, thus if we find a null in *a1, then the strings must be equal, so return zero. */ if (DETECTNULL (*a1)) return 0; a1++; a2++; } /* A difference was detected in last few bytes of s1, so search bytewise */ s1 = (char*)a1; s2 = (char*)a2; } while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } return (*(unsigned char *) s1) - (*(unsigned char *) s2); #endif /* not PREFER_SIZE_OVER_SPEED */ #else #include "mb_endian.h" __asm__ volatile (" \n\ or r9, r0, r0 /* Index register */\n\ check_alignment: \n\ andi r3, r5, 3 \n\ andi r4, r6, 3 \n\ bnei r3, try_align_args \n\ bnei r4, regular_strcmp /* At this point we don't have a choice */ \n\ cmp_loop: \n" LOAD4BYTES("r3", "r5", "r9") LOAD4BYTES("r4", "r6", "r9") " \n\ pcmpbf r7, r3, r0 /* See if there is Null byte */ \n\ bnei r7, end_cmp_loop /* IF yes (r7 > 0) use byte compares in end_cmp_loop */ \n\ cmpu r7, r4, r3 /* ELSE compare whole word */ \n\ bnei r7, end_cmp \n\ brid cmp_loop \n\ addik r9, r9, 4 /* delay slot */ \n\ end_cmp_loop: \n\ lbu r3, r5, r9 /* byte compare loop */ \n\ lbu r4, r6, r9 \n\ cmpu r7, r4, r3 /* Compare bytes */ \n\ bnei r7, end_cmp_early \n\ bneid r3, end_cmp_loop /* If reached null on one string, terminate */ \n\ addik r9, r9, 1 /* delay slot */ \n\ end_cmp_early: \n\ rtsd r15, 8 \n\ or r3, r0, r7 \n\ try_align_args: \n\ xor r7, r4, r3 \n\ bnei r7, regular_strcmp /* cannot align args */ \n\ rsubik r10, r3, 4 /* Number of initial bytes to align */ \n\ align_loop: \n\ lbu r3, r5, r9 \n\ lbu r4, r6, r9 \n\ cmpu r7, r4, r3 \n\ bnei r7, end_cmp \n\ beqi r3, end_cmp \n\ addik r10, r10, -1 \n\ beqid r10, cmp_loop \n\ addik r9, r9, 1 \n\ bri align_loop \n\ regular_strcmp: \n\ lbu r3, r5, r9 \n\ lbu r4, r6, r9 \n\ cmpu r7, r4, r3 \n\ bnei r7, end_cmp \n\ beqi r3, end_cmp \n\ brid regular_strcmp \n\ addik r9, r9, 1 \n\ end_cmp: \n\ rtsd r15, 8 \n\ or r3, r0, r7 /* Return strcmp result */"); #endif /* ! HAVE_HW_PCMP */ } picolibc-1.7.4/newlib/libc/machine/microblaze/strcpy.c000066400000000000000000000137441414576234500227470ustar00rootroot00000000000000/* Copyright (c) 2009 Xilinx, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of Xilinx nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. FUNCTION <>---copy string INDEX strcpy SYNOPSIS #include char *strcpy(char *restrict <[dst]>, const char *restrict <[src]>); DESCRIPTION <> copies the string pointed to by <[src]> (including the terminating null character) to the array pointed to by <[dst]>. RETURNS This function returns the initial value of <[dst]>. PORTABILITY <> is ANSI C. <> requires no supporting OS subroutines. QUICKREF strcpy ansi pure */ #include #include /*SUPPRESS 560*/ /*SUPPRESS 530*/ /* Nonzero if either X or Y is not aligned on a "long" boundary. */ #define UNALIGNED(X, Y) \ (((long)X & (sizeof (long) - 1)) | ((long)Y & (sizeof (long) - 1))) #if LONG_MAX == 2147483647L #define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) #else #if LONG_MAX == 9223372036854775807L /* Nonzero if X (a long int) contains a NULL byte. */ #define DETECTNULL(X) (((X) - 0x0101010101010101) & ~(X) & 0x8080808080808080) #else #error long int is not a 32bit or 64bit type. #endif #endif #ifndef DETECTNULL #error long int is not a 32bit or 64bit byte #endif char* strcpy (char *__restrict dst0, const char *__restrict src0) { #ifndef HAVE_HW_PCMP #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) char *s = dst0; while (*dst0++ = *src0++) ; return s; #else char *dst = dst0; const char *src = src0; long *aligned_dst; const long *aligned_src; /* If SRC or DEST is unaligned, then copy bytes. */ if (!UNALIGNED (src, dst)) { aligned_dst = (long*)dst; aligned_src = (long*)src; /* SRC and DEST are both "long int" aligned, try to do "long int" sized copies. */ while (!DETECTNULL(*aligned_src)) { *aligned_dst++ = *aligned_src++; } dst = (char*)aligned_dst; src = (char*)aligned_src; } while (*dst++ = *src++) ; return dst0; #endif /* not PREFER_SIZE_OVER_SPEED */ #else #include "mb_endian.h" __asm__ volatile (" \n\ or r9, r0, r0 /* Index register */ \n\ check_alignment: \n\ andi r3, r5, 3 \n\ andi r4, r6, 3 \n\ bnei r3, try_align_args \n\ bnei r4, regular_strcpy /* At this point we dont have a choice */ \n\ cpy_loop: \n" LOAD4BYTES("r3", "r6", "r9") " \n\ pcmpbf r4, r0, r3 \n\ bnei r4, cpy_bytes /* If r4 != 0, then null present within string */\n" STORE4BYTES("r3", "r5", "r9") " \n\ brid cpy_loop \n\ addik r9, r9, 4 \n\ cpy_bytes: \n\ lbu r3, r6, r9 \n\ sb r3, r5, r9 \n\ addik r4, r4, -1 \n\ bneid r4, cpy_bytes \n\ addik r9, r9, 1 /* delay slot */\n\ cpy_null: \n\ rtsd r15, 8 \n\ or r3, r0, r5 /* Return strcpy result */\n\ try_align_args: \n\ xor r7, r4, r3 \n\ bnei r7, regular_strcpy /* cannot align args */\n\ rsubik r10, r3, 4 /* Number of initial bytes to align */\n\ align_loop: \n\ lbu r3, r6, r9 \n\ sb r3, r5, r9 \n\ beqid r3, end_cpy /* Break if we have seen null character */\n\ addik r10, r10, -1 \n\ bneid r10, align_loop \n\ addik r9, r9, 1 \n\ bri cpy_loop \n\ regular_strcpy: \n\ lbu r3, r6, r9 \n\ sb r3, r5, r9 \n\ bneid r3, regular_strcpy \n\ addik r9, r9, 1 \n\ end_cpy: \n\ rtsd r15, 8 \n\ or r3, r0, r5 /* Return strcpy result */"); #endif /* ! HAVE_HW_PCMP */ } picolibc-1.7.4/newlib/libc/machine/microblaze/strlen.c000066400000000000000000000123001414576234500227150ustar00rootroot00000000000000/* Copyright (c) 2009 Xilinx, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of Xilinx nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. FUNCTION <>---character string length INDEX strlen SYNOPSIS #include size_t strlen(const char *<[str]>); DESCRIPTION The <> function works out the length of the string starting at <<*<[str]>>> by counting chararacters until it reaches a <> character. RETURNS <> returns the character count. PORTABILITY <> is ANSI C. <> requires no supporting OS subroutines. QUICKREF strlen ansi pure */ #include <_ansi.h> #include #include #define LBLOCKSIZE (sizeof (long)) #define UNALIGNED(X) ((long)X & (LBLOCKSIZE - 1)) #if LONG_MAX == 2147483647L #define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) #else #if LONG_MAX == 9223372036854775807L /* Nonzero if X (a long int) contains a NULL byte. */ #define DETECTNULL(X) (((X) - 0x0101010101010101) & ~(X) & 0x8080808080808080) #else #error long int is not a 32bit or 64bit type. #endif #endif #ifndef DETECTNULL #error long int is not a 32bit or 64bit byte #endif size_t strlen (const char *str) { #ifndef HAVE_HW_PCMP #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) const char *start = str; while (*str) str++; return str - start; #else const char *start = str; unsigned long *aligned_addr; if (!UNALIGNED (str)) { /* If the string is word-aligned, we can check for the presence of a null in each word-sized block. */ aligned_addr = (unsigned long*)str; while (!DETECTNULL (*aligned_addr)) aligned_addr++; /* Once a null is detected, we check each byte in that block for a precise position of the null. */ str = (char*)aligned_addr; } while (*str) str++; return str - start; #endif /* not PREFER_SIZE_OVER_SPEED */ #else #include "mb_endian.h" __asm__ volatile (" \n\ or r9, r0, r0 /* Index register */ \n\ check_alignment: \n\ andi r3, r5, 3 \n\ bnei r3, align_arg \n\ len_loop: \n" LOAD4BYTES("r3", "r5", "r9") " \n\ pcmpbf r4, r3, r0 \n\ bnei r4, end_len \n\ brid len_loop \n\ addik r9, r9, 4 \n\ end_len: \n\ lbu r3, r5, r9 \n\ beqi r3, done_len \n\ brid end_len \n\ addik r9, r9, 1 \n\ done_len: \n\ rtsd r15, 8 \n\ or r3, r0, r9 /* Return len */ \n\ align_arg: \n\ rsubik r10, r3, 4 \n\ align_loop: \n\ lbu r3, r5, r9 \n\ beqid r3, done_len \n\ addik r10, r10, -1 \n\ bneid r10, align_loop \n\ addik r9, r9, 1 \n\ bri len_loop"); #endif /* ! HAVE_HW_PCMP */ } picolibc-1.7.4/newlib/libc/machine/mips/000077500000000000000000000000001414576234500200675ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/mips/machine/000077500000000000000000000000001414576234500214735ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/mips/machine/asm.h000066400000000000000000000241601414576234500224270ustar00rootroot00000000000000/* * Copyright (c) 1996-2007 MIPS Technologies, Inc. * Copyright (C) 2009 CodeSourcery, LLC. * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above * copyright * notice, this list of conditions and the following disclaimer * in the documentation and/or other materials provided with * the distribution. * * Neither the name of MIPS Technologies Inc. nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * asm.h: various macros to help assembly language writers */ #ifndef _MIPS_ASM_H_ #define _MIPS_ASM_H_ /* ABI specific stack frame layout and manipulation. */ #if _MIPS_SIM==_ABIO32 && ! __mips64 /* Standard O32 */ #define SZREG 4 /* saved register size */ #define REG_S sw /* store saved register */ #define REG_L lw /* load saved register */ #define SZARG 4 /* argument register size */ #define NARGSAVE 4 /* arg register space on caller stack */ #define ALSZ 7 /* stack alignment - 1 */ #define ALMASK (~7) /* stack alignment mask */ #define LOG2_STACK_ALGN 3 /* log2(8) */ #define SZPTR 4 /* pointer size */ #define LOG2_SZPTR 2 /* log2(4) */ #define PTR_S sw /* store pointer */ #define PTR_L lw /* load pointer */ #define PTR_SUBU subu /* decrement pointer */ #define PTR_ADDU addu /* increment pointer */ #define PTR .word /* pointer type pseudo */ #elif _MIPS_SIM==_ABIO32 && __mips64 /* Algorithmics O32+64-bit */ #define SZREG 8 /* saved register size */ #define REG_S sd /* store saved register */ #define REG_L ld /* load saved register */ #define SZARG 4 /* argument register size */ #define NARGSAVE 4 /* arg register space on caller stack */ #define ALSZ 7 /* stack alignment - 1 */ #define ALMASK (~7) /* stack alignment mask */ #define LOG2_STACK_ALGN 3 /* log2(8) */ #define SZPTR 4 /* pointer size */ #define LOG2_SZPTR 2 /* log2(4) */ #define PTR_S sw /* store pointer */ #define PTR_L lw /* load pointer */ #define PTR_SUBU subu /* decrement pointer */ #define PTR_ADDU addu /* increment pointer */ #define PTR .word /* pointer type pseudo */ #elif _MIPS_SIM==_ABIO64 /* Cygnus O64 */ #define SZREG 8 /* saved register size */ #define REG_S sd /* store saved register */ #define REG_L ld /* load saved register */ #define SZARG 8 /* argument register size */ #define NARGSAVE 4 /* arg register space on caller stack */ #define ALSZ 7 /* stack alignment - 1 */ #define ALMASK (~7) /* stack alignment mask */ #define LOG2_STACK_ALGN 3 /* log2(8) */ #define SZPTR 4 /* pointer size */ #define LOG2_SZPTR 2 /* log2(4) */ #define PTR_S sw /* store pointer */ #define PTR_L lw /* load pointer */ #define PTR_SUBU subu /* decrement pointer */ #define PTR_ADDU addu /* increment pointer */ #define PTR .word /* pointer type pseudo */ #elif _MIPS_SIM==_ABIN32 /* Standard N32 */ #define SZREG 8 /* saved register size */ #define REG_S sd /* store saved register */ #define REG_L ld /* load saved register */ #define SZARG 8 /* argument register size */ #define NARGSAVE 0 /* arg register space on caller stack */ #define ALSZ 15 /* stack alignment - 1 */ #define ALMASK (~15) /* stack alignment mask */ #define LOG2_STACK_ALGN 4 /* log2(16) */ #define SZPTR 4 /* pointer size */ #define LOG2_SZPTR 2 /* log2(4) */ #define PTR_S sw /* store pointer */ #define PTR_L lw /* load pointer */ #define PTR_SUBU subu /* decrement pointer (SGI uses sub) */ #define PTR_ADDU addu /* increment pointer (SGI uses add) */ #define PTR .word /* pointer type pseudo */ #elif _MIPS_SIM==_ABI64 /* Standard N64 */ #define SZREG 8 /* saved register size */ #define REG_S sd /* store saved register */ #define REG_L ld /* load saved register */ #define SZARG 8 /* argument register size */ #define NARGSAVE 0 /* arg register space on caller stack */ #define ALSZ 15 /* stack alignment - 1 */ #define ALMASK (~15) /* stack alignment mask */ #define LOG2_STACK_ALGN 4 /* log2(16) */ #define SZPTR 8 /* pointer size */ #define LOG2_SZPTR 3 /* log2(8) */ #define PTR_S sd /* store pointer */ #define PTR_L ld /* load pointer */ #define PTR_SUBU dsubu /* decrement pointer */ #define PTR_ADDU daddu /* increment pointer */ #define PTR .dword /* pointer type pseudo */ #else #error Unknown ABI #endif /* Concatenate two names. */ #ifdef __STDC__ # define _ASMCONCAT(A, B) A ## B #else # define _ASMCONCAT(A, B) A/**/B #endif /* Name of reset code section. */ #ifndef _RESET_SECTION # define _RESET_SECTION .section .reset, "ax", @progbits #endif #ifndef _RESET_SECTION_NAMED /* No function section support for now, since binutils fails to cope with external branches. */ # define _RESET_SECTION_NAMED(name) .pushsection .reset, "ax", @progbits #endif /* Name of boot code section. */ #ifndef _BOOT_SECTION # define _BOOT_SECTION .section .boot, "ax", @progbits #endif #ifndef _BOOT_SECTION_NAMED /* No function section support for now, since binutils fails to cope with external branches. */ # define _BOOT_SECTION_NAMED(name) .pushsection .boot, "ax", @progbits #endif /* Name of standard code section. */ #ifndef _NORMAL_SECTION_UNNAMED # define _NORMAL_SECTION_UNNAMED .section .text, "ax", @progbits #endif #ifndef _NORMAL_SECTION_NAMED # ifdef _FUNCTION_SECTIONS_ # define _NORMAL_SECTION_NAMED(name) .pushsection .text ##.name, "ax", @progbits # else # define _NORMAL_SECTION_NAMED(name) .pushsection .text, "ax", @progbits # endif #endif /* Default code section. */ #ifndef _TEXT_SECTION_NAMED # if defined(_RESETCODE) # define _TEXT_SECTION_NAMED _RESET_SECTION_NAMED # elif defined(_BOOTCODE) # define _TEXT_SECTION_NAMED _BOOT_SECTION_NAMED # else # define _TEXT_SECTION_NAMED _NORMAL_SECTION_NAMED # endif #endif #ifndef _TEXT_SECTION # if defined(_RESETCODE) # define _TEXT_SECTION _RESET_SECTION # elif defined(_BOOTCODE) # define _TEXT_SECTION _BOOT_SECTION # else # define _TEXT_SECTION _NORMAL_SECTION_UNNAMED # endif _TEXT_SECTION #endif /* * Leaf functions declarations. */ /* Global leaf function. */ #define LEAF(name) \ _TEXT_SECTION_NAMED(name); \ .globl name; \ .balign 4; \ .ent name; \ name: /* Static/Local leaf function. */ #define SLEAF(name) \ _TEXT_SECTION_NAMED(name); \ .balign 4; \ .ent name; \ name: /* Weak leaf function. */ #define WLEAF(name) \ _TEXT_SECTION_NAMED(name); \ .weakext name; \ .balign 4; \ .ent name; \ name: /* Weak alias leaf function. */ #define ALEAF(name,alias) \ _TEXT_SECTION_NAMED(name); \ .weakext alias,name; \ .balign 4; \ .ent name; \ name: /* * Alternative function entrypoints. */ /* Global alternative entrypoint. */ #define AENT(name) \ .globl name; \ .balign 4; \ .aent name; \ name: #define XLEAF(name) AENT(name) /* Local/static alternative entrypoint. */ #define SAENT(name) \ .balign 4; \ .aent name; \ name: #define SXLEAF(name) SAENT(name) /* * Leaf functions declarations. */ /* Global nested function. */ #define NESTED(name, framesz, rareg) \ _TEXT_SECTION_NAMED(name); \ .globl name; \ .balign 4; \ .ent name; \ .frame sp, framesz, rareg; \ name: /* Static/Local nested function. */ #define SNESTED(name, framesz, rareg) \ _TEXT_SECTION_NAMED(name); \ .balign 4; \ .ent name; \ .frame sp, framesz, rareg; \ name: /* Weak nested function. */ #define WNESTED(name, framesz, rareg) \ _TEXT_SECTION_NAMED(name); \ .weakext name; \ .balign 4; \ .ent name; \ .frame sp, framesz, rareg; \ name: /* Weak alias nested function. */ #define ANESTED(name, alias, framesz, rareg) \ _TEXT_SECTION_NAMED(name); \ .weakext alias, name; \ .balign 4; \ .ent name; \ .frame sp, framesz, rareg; \ name: /* * Function termination */ #define END(name) \ .size name,.-name; \ .end name; \ .popsection #define SEND(name) END(name) #define WEND(name) END(name) #define AEND(name,alias) END(name) /* * Global data declaration. */ #define EXPORT(name) \ .globl name; \ .type name,@object; \ name: /* * Global data declaration with size. */ #define EXPORTS(name,sz) \ .globl name; \ .type name,@object; \ .size name,sz; \ name: /* * Weak data declaration with size. */ #define WEXPORT(name,sz) \ .weakext name; \ .type name,@object; \ .size name,sz; \ name: /* * Global data reference with size. */ #define IMPORT(name, size) \ .extern name,size /* * Global zeroed data. */ #define BSS(name,size) \ .type name,@object; \ .comm name,size /* * Local zeroed data. */ #define LBSS(name,size) \ .lcomm name,size /* * Insert call to _mcount if profiling. */ #ifdef __PROFILING__ #define _MCOUNT \ .set push; \ .set noat; \ move $1,$31; \ jal _mcount; \ .set pop #else #define _MCOUNT #endif #endif picolibc-1.7.4/newlib/libc/machine/mips/machine/fenv-fp.h000066400000000000000000000100261414576234500232040ustar00rootroot00000000000000/*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright (c) 2004-2005 David Schultz * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $FreeBSD$ */ __fenv_static inline int feclearexcept(int excepts) { fexcept_t fcsr; excepts &= FE_ALL_EXCEPT; __cfc1(fcsr); fcsr &= ~(excepts | (excepts << _FCSR_CAUSE_SHIFT)); __ctc1(fcsr); return (0); } __fenv_static inline int fegetexceptflag(fexcept_t *flagp, int excepts) { fexcept_t fcsr; excepts &= FE_ALL_EXCEPT; __cfc1(fcsr); *flagp = fcsr & excepts; return (0); } __fenv_static inline int fesetexceptflag(const fexcept_t *flagp, int excepts) { fexcept_t fcsr; excepts &= FE_ALL_EXCEPT; __cfc1(fcsr); fcsr &= ~excepts; fcsr |= *flagp & excepts; __ctc1(fcsr); return (0); } __fenv_static inline int feraiseexcept(int excepts) { fexcept_t fcsr; excepts &= FE_ALL_EXCEPT; __cfc1(fcsr); fcsr |= excepts | (excepts << _FCSR_CAUSE_SHIFT); __ctc1(fcsr); return (0); } __fenv_static inline int fetestexcept(int excepts) { fexcept_t fcsr; excepts &= FE_ALL_EXCEPT; __cfc1(fcsr); return (fcsr & excepts); } __fenv_static inline int fegetround(void) { fexcept_t fcsr; __cfc1(fcsr); return (fcsr & _ROUND_MASK); } __fenv_static inline int fesetround(int rounding_mode) { fexcept_t fcsr; if (rounding_mode & ~_ROUND_MASK) return (-1); __cfc1(fcsr); fcsr &= ~_ROUND_MASK; fcsr |= rounding_mode; __ctc1(fcsr); return (0); } __fenv_static inline int fegetenv(fenv_t *envp) { __cfc1(*envp); return (0); } __fenv_static inline int feholdexcept(fenv_t *envp) { fexcept_t fcsr; __cfc1(fcsr); *envp = fcsr; fcsr &= ~(FE_ALL_EXCEPT | _ENABLE_MASK); __ctc1(fcsr); return (0); } __fenv_static inline int fesetenv(const fenv_t *envp) { __ctc1(*envp); return (0); } __fenv_static inline int feupdateenv(const fenv_t *envp) { fexcept_t fcsr; __cfc1(fcsr); fesetenv(envp); feraiseexcept(fcsr); return (0); } #if __BSD_VISIBLE /* We currently provide no external definitions of the functions below. */ #ifdef __mips_soft_float int feenableexcept(int __mask); int fedisableexcept(int __mask); int fegetexcept(void); #else static inline int feenableexcept(int __mask) { fenv_t __old_fcsr, __new_fcsr; __cfc1(__old_fcsr); __new_fcsr = __old_fcsr | (__mask & FE_ALL_EXCEPT) << _ENABLE_SHIFT; __ctc1(__new_fcsr); return ((__old_fcsr >> _ENABLE_SHIFT) & FE_ALL_EXCEPT); } static inline int fedisableexcept(int __mask) { fenv_t __old_fcsr, __new_fcsr; __cfc1(__old_fcsr); __new_fcsr = __old_fcsr & ~((__mask & FE_ALL_EXCEPT) << _ENABLE_SHIFT); __ctc1(__new_fcsr); return ((__old_fcsr >> _ENABLE_SHIFT) & FE_ALL_EXCEPT); } static inline int fegetexcept(void) { fexcept_t fcsr; __cfc1(fcsr); return ((fcsr & _ENABLE_MASK) >> _ENABLE_SHIFT); } #endif /* !__mips_soft_float */ #endif /* __BSD_VISIBLE */picolibc-1.7.4/newlib/libc/machine/mips/machine/fenv-softfloat.h000066400000000000000000000074451414576234500246130ustar00rootroot00000000000000/*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright (c) 2004-2011 David Schultz * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $FreeBSD$ */ /* * This file implements the functionality of on platforms that * lack an FPU and use softfloat in libc for floating point. To use it, * you must write an that provides the following: * * - a typedef for fenv_t, which may be an integer or struct type * - a typedef for fexcept_t (XXX This file assumes fexcept_t is a * simple integer type containing the exception mask.) * - definitions of FE_* constants for the five exceptions and four * rounding modes in IEEE 754, as described in fenv(3) * - a definition, and the corresponding external symbol, for FE_DFL_ENV * - a macro __set_env(env, flags, mask, rnd), which sets the given fenv_t * from the exception flags, mask, and rounding mode * - macros __env_flags(env), __env_mask(env), and __env_round(env), which * extract fields from an fenv_t * - a definition of __fenv_static * * If the architecture supports an optional FPU, it's recommended that you * define fenv_t and fexcept_t to match the hardware ABI. Otherwise, it * doesn't matter how you define them. */ #include __fenv_static inline int feclearexcept(int excepts) { return (0); } __fenv_static inline int fegetexceptflag(fexcept_t *flagp, int excepts) { return (0); } __fenv_static inline int fesetexceptflag(const fexcept_t *flagp, int excepts) { return (0); } __fenv_static inline int feraiseexcept(int excepts) { return( excepts != 0 ); } __fenv_static inline int fetestexcept(int excepts) { return (0); } __fenv_static inline int fegetround(void) { #ifdef FE_TONEAREST return FE_TONEAREST; #else return 0; #endif } __fenv_static inline int fesetround(int rounding_mode) { return (0); } __fenv_static inline int fegetenv(fenv_t *envp) { return (0); } __fenv_static inline int feholdexcept(fenv_t *envp) { return (0); } __fenv_static inline int fesetenv(const fenv_t *envp) { return (0); } __fenv_static inline int feupdateenv(const fenv_t *envp) { #if defined FE_NOMASK_ENV && FE_ALL_EXCEPT != 0 if (envp == FE_NOMASK_ENV) return 1; #endif return (0); } #if __BSD_VISIBLE /* We currently provide no external definitions of the functions below. */ __fenv_static inline int feenableexcept(int __mask) { return (0); } __fenv_static inline int fedisableexcept(int __mask) { return (0); } __fenv_static inline int fegetexcept(void) { return (0); } #endif /* __BSD_VISIBLE */ picolibc-1.7.4/newlib/libc/machine/mips/machine/regdef.h000066400000000000000000000054011414576234500231000ustar00rootroot00000000000000/* * Copyright (c) 1996-2007 MIPS Technologies, Inc. * Copyright (C) 2009 CodeSourcery, LLC. * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above * copyright * notice, this list of conditions and the following disclaimer * in the documentation and/or other materials provided with * the distribution. * * Neither the name of MIPS Technologies Inc. nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * regdef.h : MIPS Rx000 symbolic register names for assembler */ #ifndef _MIPS_REGDEF_H_ #define _MIPS_REGDEF_H_ #define zero $0 #define AT $1 #define v0 $2 #define v1 $3 #define a0 $4 #define a1 $5 #define a2 $6 #define a3 $7 #if _MIPS_SIM==_ABIN32 || _MIPS_SIM==_ABI64 || _MIPS_SIM==_ABIEABI #define a4 $8 #define a5 $9 #define a6 $10 #define a7 $11 #define t0 $12 #define t1 $13 #define t2 $14 #define t3 $15 #define ta0 $8 /* alias for $a4 */ #define ta1 $9 /* alias for $a5 */ #define ta2 $10 /* alias for $a6 */ #define ta3 $11 /* alias for $a7 */ #else #define t0 $8 #define t1 $9 #define t2 $10 #define t3 $11 #define t4 $12 #define t5 $13 #define t6 $14 #define t7 $15 #define ta0 $12 /* alias for $t4 */ #define ta1 $13 /* alias for $t5 */ #define ta2 $14 /* alias for $t6 */ #define ta3 $15 /* alias for $t7 */ #endif #define s0 $16 #define s1 $17 #define s2 $18 #define s3 $19 #define s4 $20 #define s5 $21 #define s6 $22 #define s7 $23 #define s8 $30 /* == fp */ #define t8 $24 #define t9 $25 #define k0 $26 #define k1 $27 #define gp $28 #define sp $29 #define fp $30 #define ra $31 #endif picolibc-1.7.4/newlib/libc/machine/mips/memcpy.S000066400000000000000000000632641414576234500215200ustar00rootroot00000000000000/* * Copyright (c) 2012-2015 * MIPS Technologies, Inc., California. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the MIPS Technologies, Inc., nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE MIPS TECHNOLOGIES, INC. ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE MIPS TECHNOLOGIES, INC. BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifdef ANDROID_CHANGES # include "machine/asm.h" # include "machine/regdef.h" # define USE_MEMMOVE_FOR_OVERLAP # define PREFETCH_LOAD_HINT PREFETCH_HINT_LOAD_STREAMED # define PREFETCH_STORE_HINT PREFETCH_HINT_PREPAREFORSTORE #elif _LIBC # include # include # include # define PREFETCH_LOAD_HINT PREFETCH_HINT_LOAD_STREAMED # define PREFETCH_STORE_HINT PREFETCH_HINT_PREPAREFORSTORE #elif _COMPILING_NEWLIB # include "machine/asm.h" # include "machine/regdef.h" # define PREFETCH_LOAD_HINT PREFETCH_HINT_LOAD_STREAMED # define PREFETCH_STORE_HINT PREFETCH_HINT_PREPAREFORSTORE #else # include # include #endif /* Check to see if the MIPS architecture we are compiling for supports * prefetching. */ #if (__mips == 4) || (__mips == 5) || (__mips == 32) || (__mips == 64) # ifndef DISABLE_PREFETCH # define USE_PREFETCH # endif #endif #if defined(_MIPS_SIM) && ((_MIPS_SIM == _ABI64) || (_MIPS_SIM == _ABIN32)) # ifndef DISABLE_DOUBLE # define USE_DOUBLE # endif #endif #if __mips_isa_rev > 5 # if (PREFETCH_STORE_HINT == PREFETCH_HINT_PREPAREFORSTORE) # undef PREFETCH_STORE_HINT # define PREFETCH_STORE_HINT PREFETCH_HINT_STORE_STREAMED # endif # define R6_CODE #endif /* Some asm.h files do not have the L macro definition. */ #ifndef L # if _MIPS_SIM == _ABIO32 # define L(label) $L ## label # else # define L(label) .L ## label # endif #endif /* Some asm.h files do not have the PTR_ADDIU macro definition. */ #ifndef PTR_ADDIU # ifdef USE_DOUBLE # define PTR_ADDIU daddiu # else # define PTR_ADDIU addiu # endif #endif /* Some asm.h files do not have the PTR_SRA macro definition. */ #ifndef PTR_SRA # ifdef USE_DOUBLE # define PTR_SRA dsra # else # define PTR_SRA sra # endif #endif /* New R6 instructions that may not be in asm.h. */ #ifndef PTR_LSA # if _MIPS_SIM == _ABI64 # define PTR_LSA dlsa # else # define PTR_LSA lsa # endif #endif /* * Using PREFETCH_HINT_LOAD_STREAMED instead of PREFETCH_LOAD on load * prefetches appears to offer a slight preformance advantage. * * Using PREFETCH_HINT_PREPAREFORSTORE instead of PREFETCH_STORE * or PREFETCH_STORE_STREAMED offers a large performance advantage * but PREPAREFORSTORE has some special restrictions to consider. * * Prefetch with the 'prepare for store' hint does not copy a memory * location into the cache, it just allocates a cache line and zeros * it out. This means that if you do not write to the entire cache * line before writing it out to memory some data will get zero'ed out * when the cache line is written back to memory and data will be lost. * * Also if you are using this memcpy to copy overlapping buffers it may * not behave correctly when using the 'prepare for store' hint. If you * use the 'prepare for store' prefetch on a memory area that is in the * memcpy source (as well as the memcpy destination), then you will get * some data zero'ed out before you have a chance to read it and data will * be lost. * * If you are going to use this memcpy routine with the 'prepare for store' * prefetch you may want to set USE_MEMMOVE_FOR_OVERLAP in order to avoid * the problem of running memcpy on overlapping buffers. * * There are ifdef'ed sections of this memcpy to make sure that it does not * do prefetches on cache lines that are not going to be completely written. * This code is only needed and only used when PREFETCH_STORE_HINT is set to * PREFETCH_HINT_PREPAREFORSTORE. This code assumes that cache lines are * 32 bytes and if the cache line is larger it will not work correctly. */ #ifdef USE_PREFETCH # define PREFETCH_HINT_LOAD 0 # define PREFETCH_HINT_STORE 1 # define PREFETCH_HINT_LOAD_STREAMED 4 # define PREFETCH_HINT_STORE_STREAMED 5 # define PREFETCH_HINT_LOAD_RETAINED 6 # define PREFETCH_HINT_STORE_RETAINED 7 # define PREFETCH_HINT_WRITEBACK_INVAL 25 # define PREFETCH_HINT_PREPAREFORSTORE 30 /* * If we have not picked out what hints to use at this point use the * standard load and store prefetch hints. */ # ifndef PREFETCH_STORE_HINT # define PREFETCH_STORE_HINT PREFETCH_HINT_STORE # endif # ifndef PREFETCH_LOAD_HINT # define PREFETCH_LOAD_HINT PREFETCH_HINT_LOAD # endif /* * We double everything when USE_DOUBLE is true so we do 2 prefetches to * get 64 bytes in that case. The assumption is that each individual * prefetch brings in 32 bytes. */ # ifdef USE_DOUBLE # define PREFETCH_CHUNK 64 # define PREFETCH_FOR_LOAD(chunk, reg) \ pref PREFETCH_LOAD_HINT, (chunk)*64(reg); \ pref PREFETCH_LOAD_HINT, ((chunk)*64)+32(reg) # define PREFETCH_FOR_STORE(chunk, reg) \ pref PREFETCH_STORE_HINT, (chunk)*64(reg); \ pref PREFETCH_STORE_HINT, ((chunk)*64)+32(reg) # else # define PREFETCH_CHUNK 32 # define PREFETCH_FOR_LOAD(chunk, reg) \ pref PREFETCH_LOAD_HINT, (chunk)*32(reg) # define PREFETCH_FOR_STORE(chunk, reg) \ pref PREFETCH_STORE_HINT, (chunk)*32(reg) # endif /* MAX_PREFETCH_SIZE is the maximum size of a prefetch, it must not be less * than PREFETCH_CHUNK, the assumed size of each prefetch. If the real size * of a prefetch is greater than MAX_PREFETCH_SIZE and the PREPAREFORSTORE * hint is used, the code will not work correctly. If PREPAREFORSTORE is not * used then MAX_PREFETCH_SIZE does not matter. */ # define MAX_PREFETCH_SIZE 128 /* PREFETCH_LIMIT is set based on the fact that we never use an offset greater * than 5 on a STORE prefetch and that a single prefetch can never be larger * than MAX_PREFETCH_SIZE. We add the extra 32 when USE_DOUBLE is set because * we actually do two prefetches in that case, one 32 bytes after the other. */ # ifdef USE_DOUBLE # define PREFETCH_LIMIT (5 * PREFETCH_CHUNK) + 32 + MAX_PREFETCH_SIZE # else # define PREFETCH_LIMIT (5 * PREFETCH_CHUNK) + MAX_PREFETCH_SIZE # endif # if (PREFETCH_STORE_HINT == PREFETCH_HINT_PREPAREFORSTORE) \ && ((PREFETCH_CHUNK * 4) < MAX_PREFETCH_SIZE) /* We cannot handle this because the initial prefetches may fetch bytes that * are before the buffer being copied. We start copies with an offset * of 4 so avoid this situation when using PREPAREFORSTORE. */ #error "PREFETCH_CHUNK is too large and/or MAX_PREFETCH_SIZE is too small." # endif #else /* USE_PREFETCH not defined */ # define PREFETCH_FOR_LOAD(offset, reg) # define PREFETCH_FOR_STORE(offset, reg) #endif /* Allow the routine to be named something else if desired. */ #ifndef MEMCPY_NAME # define MEMCPY_NAME memcpy #endif /* We use these 32/64 bit registers as temporaries to do the copying. */ #define REG0 t0 #define REG1 t1 #define REG2 t2 #define REG3 t3 #if defined(_MIPS_SIM) && (_MIPS_SIM == _ABIO32 || _MIPS_SIM == _ABIO64) # define REG4 t4 # define REG5 t5 # define REG6 t6 # define REG7 t7 #else # define REG4 ta0 # define REG5 ta1 # define REG6 ta2 # define REG7 ta3 #endif /* We load/store 64 bits at a time when USE_DOUBLE is true. * The C_ prefix stands for CHUNK and is used to avoid macro name * conflicts with system header files. */ #ifdef USE_DOUBLE # define C_ST sd # define C_LD ld # if __MIPSEB # define C_LDHI ldl /* high part is left in big-endian */ # define C_STHI sdl /* high part is left in big-endian */ # define C_LDLO ldr /* low part is right in big-endian */ # define C_STLO sdr /* low part is right in big-endian */ # else # define C_LDHI ldr /* high part is right in little-endian */ # define C_STHI sdr /* high part is right in little-endian */ # define C_LDLO ldl /* low part is left in little-endian */ # define C_STLO sdl /* low part is left in little-endian */ # endif # define C_ALIGN dalign /* r6 align instruction */ #else # define C_ST sw # define C_LD lw # if __MIPSEB # define C_LDHI lwl /* high part is left in big-endian */ # define C_STHI swl /* high part is left in big-endian */ # define C_LDLO lwr /* low part is right in big-endian */ # define C_STLO swr /* low part is right in big-endian */ # else # define C_LDHI lwr /* high part is right in little-endian */ # define C_STHI swr /* high part is right in little-endian */ # define C_LDLO lwl /* low part is left in little-endian */ # define C_STLO swl /* low part is left in little-endian */ # endif # define C_ALIGN align /* r6 align instruction */ #endif /* Bookkeeping values for 32 vs. 64 bit mode. */ #ifdef USE_DOUBLE # define NSIZE 8 # define NSIZEMASK 0x3f # define NSIZEDMASK 0x7f #else # define NSIZE 4 # define NSIZEMASK 0x1f # define NSIZEDMASK 0x3f #endif #define UNIT(unit) ((unit)*NSIZE) #define UNITM1(unit) (((unit)*NSIZE)-1) #ifdef ANDROID_CHANGES LEAF(MEMCPY_NAME, 0) #else LEAF(MEMCPY_NAME) #endif .set nomips16 .set noreorder /* * Below we handle the case where memcpy is called with overlapping src and dst. * Although memcpy is not required to handle this case, some parts of Android * like Skia rely on such usage. We call memmove to handle such cases. */ #ifdef USE_MEMMOVE_FOR_OVERLAP PTR_SUBU t0,a0,a1 PTR_SRA t2,t0,31 xor t1,t0,t2 PTR_SUBU t0,t1,t2 sltu t2,t0,a2 beq t2,zero,L(memcpy) la t9,memmove jr t9 nop L(memcpy): #endif /* * If the size is less than 2*NSIZE (8 or 16), go to L(lastb). Regardless of * size, copy dst pointer to v0 for the return value. */ slti t2,a2,(2 * NSIZE) bne t2,zero,L(lasts) #if defined(RETURN_FIRST_PREFETCH) || defined(RETURN_LAST_PREFETCH) move v0,zero #else move v0,a0 #endif #ifndef R6_CODE /* * If src and dst have different alignments, go to L(unaligned), if they * have the same alignment (but are not actually aligned) do a partial * load/store to make them aligned. If they are both already aligned * we can start copying at L(aligned). */ xor t8,a1,a0 andi t8,t8,(NSIZE-1) /* t8 is a0/a1 word-displacement */ bne t8,zero,L(unaligned) PTR_SUBU a3, zero, a0 andi a3,a3,(NSIZE-1) /* copy a3 bytes to align a0/a1 */ beq a3,zero,L(aligned) /* if a3=0, it is already aligned */ PTR_SUBU a2,a2,a3 /* a2 is the remining bytes count */ C_LDHI t8,0(a1) PTR_ADDU a1,a1,a3 C_STHI t8,0(a0) PTR_ADDU a0,a0,a3 #else /* R6_CODE */ /* * Align the destination and hope that the source gets aligned too. If it * doesn't we jump to L(r6_unaligned*) to do unaligned copies using the r6 * align instruction. */ andi t8,a0,7 lapc t9,L(atable) PTR_LSA t9,t8,t9,2 jrc t9 L(atable): bc L(lb0) bc L(lb7) bc L(lb6) bc L(lb5) bc L(lb4) bc L(lb3) bc L(lb2) bc L(lb1) L(lb7): lb a3, 6(a1) sb a3, 6(a0) L(lb6): lb a3, 5(a1) sb a3, 5(a0) L(lb5): lb a3, 4(a1) sb a3, 4(a0) L(lb4): lb a3, 3(a1) sb a3, 3(a0) L(lb3): lb a3, 2(a1) sb a3, 2(a0) L(lb2): lb a3, 1(a1) sb a3, 1(a0) L(lb1): lb a3, 0(a1) sb a3, 0(a0) li t9,8 subu t8,t9,t8 PTR_SUBU a2,a2,t8 PTR_ADDU a0,a0,t8 PTR_ADDU a1,a1,t8 L(lb0): andi t8,a1,(NSIZE-1) lapc t9,L(jtable) PTR_LSA t9,t8,t9,2 jrc t9 L(jtable): bc L(aligned) bc L(r6_unaligned1) bc L(r6_unaligned2) bc L(r6_unaligned3) # ifdef USE_DOUBLE bc L(r6_unaligned4) bc L(r6_unaligned5) bc L(r6_unaligned6) bc L(r6_unaligned7) # endif #endif /* R6_CODE */ L(aligned): /* * Now dst/src are both aligned to (word or double word) aligned addresses * Set a2 to count how many bytes we have to copy after all the 64/128 byte * chunks are copied and a3 to the dst pointer after all the 64/128 byte * chunks have been copied. We will loop, incrementing a0 and a1 until a0 * equals a3. */ andi t8,a2,NSIZEDMASK /* any whole 64-byte/128-byte chunks? */ beq a2,t8,L(chkw) /* if a2==t8, no 64-byte/128-byte chunks */ PTR_SUBU a3,a2,t8 /* subtract from a2 the reminder */ PTR_ADDU a3,a0,a3 /* Now a3 is the final dst after loop */ /* When in the loop we may prefetch with the 'prepare to store' hint, * in this case the a0+x should not be past the "t0-32" address. This * means: for x=128 the last "safe" a0 address is "t0-160". Alternatively, * for x=64 the last "safe" a0 address is "t0-96" In the current version we * will use "prefetch hint,128(a0)", so "t0-160" is the limit. */ #if defined(USE_PREFETCH) && (PREFETCH_STORE_HINT == PREFETCH_HINT_PREPAREFORSTORE) PTR_ADDU t0,a0,a2 /* t0 is the "past the end" address */ PTR_SUBU t9,t0,PREFETCH_LIMIT /* t9 is the "last safe pref" address */ #endif PREFETCH_FOR_LOAD (0, a1) PREFETCH_FOR_LOAD (1, a1) PREFETCH_FOR_LOAD (2, a1) PREFETCH_FOR_LOAD (3, a1) #if defined(USE_PREFETCH) && (PREFETCH_STORE_HINT != PREFETCH_HINT_PREPAREFORSTORE) PREFETCH_FOR_STORE (1, a0) PREFETCH_FOR_STORE (2, a0) PREFETCH_FOR_STORE (3, a0) #endif #if defined(RETURN_FIRST_PREFETCH) && defined(USE_PREFETCH) # if PREFETCH_STORE_HINT == PREFETCH_HINT_PREPAREFORSTORE sltu v1,t9,a0 bgtz v1,L(skip_set) nop PTR_ADDIU v0,a0,(PREFETCH_CHUNK*4) L(skip_set): # else PTR_ADDIU v0,a0,(PREFETCH_CHUNK*1) # endif #endif #if defined(RETURN_LAST_PREFETCH) && defined(USE_PREFETCH) \ && (PREFETCH_STORE_HINT != PREFETCH_HINT_PREPAREFORSTORE) PTR_ADDIU v0,a0,(PREFETCH_CHUNK*3) # ifdef USE_DOUBLE PTR_ADDIU v0,v0,32 # endif #endif L(loop16w): C_LD t0,UNIT(0)(a1) #if defined(USE_PREFETCH) && (PREFETCH_STORE_HINT == PREFETCH_HINT_PREPAREFORSTORE) sltu v1,t9,a0 /* If a0 > t9 don't use next prefetch */ bgtz v1,L(skip_pref) #endif C_LD t1,UNIT(1)(a1) #ifndef R6_CODE PREFETCH_FOR_STORE (4, a0) PREFETCH_FOR_STORE (5, a0) #else PREFETCH_FOR_STORE (2, a0) #endif #if defined(RETURN_LAST_PREFETCH) && defined(USE_PREFETCH) PTR_ADDIU v0,a0,(PREFETCH_CHUNK*5) # ifdef USE_DOUBLE PTR_ADDIU v0,v0,32 # endif #endif L(skip_pref): C_LD REG2,UNIT(2)(a1) C_LD REG3,UNIT(3)(a1) C_LD REG4,UNIT(4)(a1) C_LD REG5,UNIT(5)(a1) C_LD REG6,UNIT(6)(a1) C_LD REG7,UNIT(7)(a1) #ifndef R6_CODE PREFETCH_FOR_LOAD (4, a1) #else PREFETCH_FOR_LOAD (3, a1) #endif C_ST t0,UNIT(0)(a0) C_ST t1,UNIT(1)(a0) C_ST REG2,UNIT(2)(a0) C_ST REG3,UNIT(3)(a0) C_ST REG4,UNIT(4)(a0) C_ST REG5,UNIT(5)(a0) C_ST REG6,UNIT(6)(a0) C_ST REG7,UNIT(7)(a0) C_LD t0,UNIT(8)(a1) C_LD t1,UNIT(9)(a1) C_LD REG2,UNIT(10)(a1) C_LD REG3,UNIT(11)(a1) C_LD REG4,UNIT(12)(a1) C_LD REG5,UNIT(13)(a1) C_LD REG6,UNIT(14)(a1) C_LD REG7,UNIT(15)(a1) #ifndef R6_CODE PREFETCH_FOR_LOAD (5, a1) #endif C_ST t0,UNIT(8)(a0) C_ST t1,UNIT(9)(a0) C_ST REG2,UNIT(10)(a0) C_ST REG3,UNIT(11)(a0) C_ST REG4,UNIT(12)(a0) C_ST REG5,UNIT(13)(a0) C_ST REG6,UNIT(14)(a0) C_ST REG7,UNIT(15)(a0) PTR_ADDIU a0,a0,UNIT(16) /* adding 64/128 to dest */ bne a0,a3,L(loop16w) PTR_ADDIU a1,a1,UNIT(16) /* adding 64/128 to src */ move a2,t8 /* Here we have src and dest word-aligned but less than 64-bytes or * 128 bytes to go. Check for a 32(64) byte chunk and copy if if there * is one. Otherwise jump down to L(chk1w) to handle the tail end of * the copy. */ L(chkw): PREFETCH_FOR_LOAD (0, a1) andi t8,a2,NSIZEMASK /* Is there a 32-byte/64-byte chunk. */ /* The t8 is the reminder count past 32-bytes */ beq a2,t8,L(chk1w) /* When a2=t8, no 32-byte chunk */ nop C_LD t0,UNIT(0)(a1) C_LD t1,UNIT(1)(a1) C_LD REG2,UNIT(2)(a1) C_LD REG3,UNIT(3)(a1) C_LD REG4,UNIT(4)(a1) C_LD REG5,UNIT(5)(a1) C_LD REG6,UNIT(6)(a1) C_LD REG7,UNIT(7)(a1) PTR_ADDIU a1,a1,UNIT(8) C_ST t0,UNIT(0)(a0) C_ST t1,UNIT(1)(a0) C_ST REG2,UNIT(2)(a0) C_ST REG3,UNIT(3)(a0) C_ST REG4,UNIT(4)(a0) C_ST REG5,UNIT(5)(a0) C_ST REG6,UNIT(6)(a0) C_ST REG7,UNIT(7)(a0) PTR_ADDIU a0,a0,UNIT(8) /* * Here we have less than 32(64) bytes to copy. Set up for a loop to * copy one word (or double word) at a time. Set a2 to count how many * bytes we have to copy after all the word (or double word) chunks are * copied and a3 to the dst pointer after all the (d)word chunks have * been copied. We will loop, incrementing a0 and a1 until a0 equals a3. */ L(chk1w): andi a2,t8,(NSIZE-1) /* a2 is the reminder past one (d)word chunks */ beq a2,t8,L(lastw) PTR_SUBU a3,t8,a2 /* a3 is count of bytes in one (d)word chunks */ PTR_ADDU a3,a0,a3 /* a3 is the dst address after loop */ /* copying in words (4-byte or 8-byte chunks) */ L(wordCopy_loop): C_LD REG3,UNIT(0)(a1) PTR_ADDIU a0,a0,UNIT(1) PTR_ADDIU a1,a1,UNIT(1) bne a0,a3,L(wordCopy_loop) C_ST REG3,UNIT(-1)(a0) /* If we have been copying double words, see if we can copy a single word before doing byte copies. We can have, at most, one word to copy. */ L(lastw): #ifdef USE_DOUBLE andi t8,a2,3 /* a2 is the remainder past 4 byte chunks. */ beq t8,a2,L(lastb) move a2,t8 lw REG3,0(a1) sw REG3,0(a0) PTR_ADDIU a0,a0,4 PTR_ADDIU a1,a1,4 #endif /* Copy the last 8 (or 16) bytes */ L(lastb): blez a2,L(leave) PTR_ADDU a3,a0,a2 /* a3 is the last dst address */ L(lastbloop): lb v1,0(a1) PTR_ADDIU a0,a0,1 PTR_ADDIU a1,a1,1 bne a0,a3,L(lastbloop) sb v1,-1(a0) L(leave): j ra nop /* We jump here with a memcpy of less than 8 or 16 bytes, depending on whether or not USE_DOUBLE is defined. Instead of just doing byte copies, check the alignment and size and use lw/sw if possible. Otherwise, do byte copies. */ L(lasts): andi t8,a2,3 beq t8,a2,L(lastb) andi t9,a0,3 bne t9,zero,L(lastb) andi t9,a1,3 bne t9,zero,L(lastb) PTR_SUBU a3,a2,t8 PTR_ADDU a3,a0,a3 L(wcopy_loop): lw REG3,0(a1) PTR_ADDIU a0,a0,4 PTR_ADDIU a1,a1,4 bne a0,a3,L(wcopy_loop) sw REG3,-4(a0) b L(lastb) move a2,t8 #ifndef R6_CODE /* * UNALIGNED case, got here with a3 = "negu a0" * This code is nearly identical to the aligned code above * but only the destination (not the source) gets aligned * so we need to do partial loads of the source followed * by normal stores to the destination (once we have aligned * the destination). */ L(unaligned): andi a3,a3,(NSIZE-1) /* copy a3 bytes to align a0/a1 */ beqz a3,L(ua_chk16w) /* if a3=0, it is already aligned */ PTR_SUBU a2,a2,a3 /* a2 is the remining bytes count */ C_LDHI v1,UNIT(0)(a1) C_LDLO v1,UNITM1(1)(a1) PTR_ADDU a1,a1,a3 C_STHI v1,UNIT(0)(a0) PTR_ADDU a0,a0,a3 /* * Now the destination (but not the source) is aligned * Set a2 to count how many bytes we have to copy after all the 64/128 byte * chunks are copied and a3 to the dst pointer after all the 64/128 byte * chunks have been copied. We will loop, incrementing a0 and a1 until a0 * equals a3. */ L(ua_chk16w): andi t8,a2,NSIZEDMASK /* any whole 64-byte/128-byte chunks? */ beq a2,t8,L(ua_chkw) /* if a2==t8, no 64-byte/128-byte chunks */ PTR_SUBU a3,a2,t8 /* subtract from a2 the reminder */ PTR_ADDU a3,a0,a3 /* Now a3 is the final dst after loop */ # if defined(USE_PREFETCH) && (PREFETCH_STORE_HINT == PREFETCH_HINT_PREPAREFORSTORE) PTR_ADDU t0,a0,a2 /* t0 is the "past the end" address */ PTR_SUBU t9,t0,PREFETCH_LIMIT /* t9 is the "last safe pref" address */ # endif PREFETCH_FOR_LOAD (0, a1) PREFETCH_FOR_LOAD (1, a1) PREFETCH_FOR_LOAD (2, a1) # if defined(USE_PREFETCH) && (PREFETCH_STORE_HINT != PREFETCH_HINT_PREPAREFORSTORE) PREFETCH_FOR_STORE (1, a0) PREFETCH_FOR_STORE (2, a0) PREFETCH_FOR_STORE (3, a0) # endif # if defined(RETURN_FIRST_PREFETCH) && defined(USE_PREFETCH) # if (PREFETCH_STORE_HINT == PREFETCH_HINT_PREPAREFORSTORE) sltu v1,t9,a0 bgtz v1,L(ua_skip_set) nop PTR_ADDIU v0,a0,(PREFETCH_CHUNK*4) L(ua_skip_set): # else PTR_ADDIU v0,a0,(PREFETCH_CHUNK*1) # endif # endif L(ua_loop16w): PREFETCH_FOR_LOAD (3, a1) C_LDHI t0,UNIT(0)(a1) C_LDHI t1,UNIT(1)(a1) C_LDHI REG2,UNIT(2)(a1) # if defined(USE_PREFETCH) && (PREFETCH_STORE_HINT == PREFETCH_HINT_PREPAREFORSTORE) sltu v1,t9,a0 bgtz v1,L(ua_skip_pref) # endif C_LDHI REG3,UNIT(3)(a1) PREFETCH_FOR_STORE (4, a0) PREFETCH_FOR_STORE (5, a0) L(ua_skip_pref): C_LDHI REG4,UNIT(4)(a1) C_LDHI REG5,UNIT(5)(a1) C_LDHI REG6,UNIT(6)(a1) C_LDHI REG7,UNIT(7)(a1) C_LDLO t0,UNITM1(1)(a1) C_LDLO t1,UNITM1(2)(a1) C_LDLO REG2,UNITM1(3)(a1) C_LDLO REG3,UNITM1(4)(a1) C_LDLO REG4,UNITM1(5)(a1) C_LDLO REG5,UNITM1(6)(a1) C_LDLO REG6,UNITM1(7)(a1) C_LDLO REG7,UNITM1(8)(a1) PREFETCH_FOR_LOAD (4, a1) C_ST t0,UNIT(0)(a0) C_ST t1,UNIT(1)(a0) C_ST REG2,UNIT(2)(a0) C_ST REG3,UNIT(3)(a0) C_ST REG4,UNIT(4)(a0) C_ST REG5,UNIT(5)(a0) C_ST REG6,UNIT(6)(a0) C_ST REG7,UNIT(7)(a0) C_LDHI t0,UNIT(8)(a1) C_LDHI t1,UNIT(9)(a1) C_LDHI REG2,UNIT(10)(a1) C_LDHI REG3,UNIT(11)(a1) C_LDHI REG4,UNIT(12)(a1) C_LDHI REG5,UNIT(13)(a1) C_LDHI REG6,UNIT(14)(a1) C_LDHI REG7,UNIT(15)(a1) C_LDLO t0,UNITM1(9)(a1) C_LDLO t1,UNITM1(10)(a1) C_LDLO REG2,UNITM1(11)(a1) C_LDLO REG3,UNITM1(12)(a1) C_LDLO REG4,UNITM1(13)(a1) C_LDLO REG5,UNITM1(14)(a1) C_LDLO REG6,UNITM1(15)(a1) C_LDLO REG7,UNITM1(16)(a1) PREFETCH_FOR_LOAD (5, a1) C_ST t0,UNIT(8)(a0) C_ST t1,UNIT(9)(a0) C_ST REG2,UNIT(10)(a0) C_ST REG3,UNIT(11)(a0) C_ST REG4,UNIT(12)(a0) C_ST REG5,UNIT(13)(a0) C_ST REG6,UNIT(14)(a0) C_ST REG7,UNIT(15)(a0) PTR_ADDIU a0,a0,UNIT(16) /* adding 64/128 to dest */ bne a0,a3,L(ua_loop16w) PTR_ADDIU a1,a1,UNIT(16) /* adding 64/128 to src */ move a2,t8 /* Here we have src and dest word-aligned but less than 64-bytes or * 128 bytes to go. Check for a 32(64) byte chunk and copy if if there * is one. Otherwise jump down to L(ua_chk1w) to handle the tail end of * the copy. */ L(ua_chkw): PREFETCH_FOR_LOAD (0, a1) andi t8,a2,NSIZEMASK /* Is there a 32-byte/64-byte chunk. */ /* t8 is the reminder count past 32-bytes */ beq a2,t8,L(ua_chk1w) /* When a2=t8, no 32-byte chunk */ nop C_LDHI t0,UNIT(0)(a1) C_LDHI t1,UNIT(1)(a1) C_LDHI REG2,UNIT(2)(a1) C_LDHI REG3,UNIT(3)(a1) C_LDHI REG4,UNIT(4)(a1) C_LDHI REG5,UNIT(5)(a1) C_LDHI REG6,UNIT(6)(a1) C_LDHI REG7,UNIT(7)(a1) C_LDLO t0,UNITM1(1)(a1) C_LDLO t1,UNITM1(2)(a1) C_LDLO REG2,UNITM1(3)(a1) C_LDLO REG3,UNITM1(4)(a1) C_LDLO REG4,UNITM1(5)(a1) C_LDLO REG5,UNITM1(6)(a1) C_LDLO REG6,UNITM1(7)(a1) C_LDLO REG7,UNITM1(8)(a1) PTR_ADDIU a1,a1,UNIT(8) C_ST t0,UNIT(0)(a0) C_ST t1,UNIT(1)(a0) C_ST REG2,UNIT(2)(a0) C_ST REG3,UNIT(3)(a0) C_ST REG4,UNIT(4)(a0) C_ST REG5,UNIT(5)(a0) C_ST REG6,UNIT(6)(a0) C_ST REG7,UNIT(7)(a0) PTR_ADDIU a0,a0,UNIT(8) /* * Here we have less than 32(64) bytes to copy. Set up for a loop to * copy one word (or double word) at a time. */ L(ua_chk1w): andi a2,t8,(NSIZE-1) /* a2 is the reminder past one (d)word chunks */ beq a2,t8,L(ua_smallCopy) PTR_SUBU a3,t8,a2 /* a3 is count of bytes in one (d)word chunks */ PTR_ADDU a3,a0,a3 /* a3 is the dst address after loop */ /* copying in words (4-byte or 8-byte chunks) */ L(ua_wordCopy_loop): C_LDHI v1,UNIT(0)(a1) C_LDLO v1,UNITM1(1)(a1) PTR_ADDIU a0,a0,UNIT(1) PTR_ADDIU a1,a1,UNIT(1) bne a0,a3,L(ua_wordCopy_loop) C_ST v1,UNIT(-1)(a0) /* Copy the last 8 (or 16) bytes */ L(ua_smallCopy): beqz a2,L(leave) PTR_ADDU a3,a0,a2 /* a3 is the last dst address */ L(ua_smallCopy_loop): lb v1,0(a1) PTR_ADDIU a0,a0,1 PTR_ADDIU a1,a1,1 bne a0,a3,L(ua_smallCopy_loop) sb v1,-1(a0) j ra nop #else /* R6_CODE */ # if __MIPSEB # define SWAP_REGS(X,Y) X, Y # define ALIGN_OFFSET(N) (N) # else # define SWAP_REGS(X,Y) Y, X # define ALIGN_OFFSET(N) (NSIZE-N) # endif # define R6_UNALIGNED_WORD_COPY(BYTEOFFSET) \ andi REG7, a2, (NSIZE-1);/* REG7 is # of bytes to by bytes. */ \ beq REG7, a2, L(lastb); /* Check for bytes to copy by word */ \ PTR_SUBU a3, a2, REG7; /* a3 is number of bytes to be copied in */ \ /* (d)word chunks. */ \ move a2, REG7; /* a2 is # of bytes to copy byte by byte */ \ /* after word loop is finished. */ \ PTR_ADDU REG6, a0, a3; /* REG6 is the dst address after loop. */ \ PTR_SUBU REG2, a1, t8; /* REG2 is the aligned src address. */ \ PTR_ADDU a1, a1, a3; /* a1 is addr of source after word loop. */ \ C_LD t0, UNIT(0)(REG2); /* Load first part of source. */ \ L(r6_ua_wordcopy##BYTEOFFSET): \ C_LD t1, UNIT(1)(REG2); /* Load second part of source. */ \ C_ALIGN REG3, SWAP_REGS(t1,t0), ALIGN_OFFSET(BYTEOFFSET); \ PTR_ADDIU a0, a0, UNIT(1); /* Increment destination pointer. */ \ PTR_ADDIU REG2, REG2, UNIT(1); /* Increment aligned source pointer.*/ \ move t0, t1; /* Move second part of source to first. */ \ bne a0, REG6,L(r6_ua_wordcopy##BYTEOFFSET); \ C_ST REG3, UNIT(-1)(a0); \ j L(lastb); \ nop /* We are generating R6 code, the destination is 4 byte aligned and the source is not 4 byte aligned. t8 is 1, 2, or 3 depending on the alignment of the source. */ L(r6_unaligned1): R6_UNALIGNED_WORD_COPY(1) L(r6_unaligned2): R6_UNALIGNED_WORD_COPY(2) L(r6_unaligned3): R6_UNALIGNED_WORD_COPY(3) # ifdef USE_DOUBLE L(r6_unaligned4): R6_UNALIGNED_WORD_COPY(4) L(r6_unaligned5): R6_UNALIGNED_WORD_COPY(5) L(r6_unaligned6): R6_UNALIGNED_WORD_COPY(6) L(r6_unaligned7): R6_UNALIGNED_WORD_COPY(7) # endif #endif /* R6_CODE */ .set at .set reorder END(MEMCPY_NAME) #ifndef ANDROID_CHANGES # ifdef _LIBC libc_hidden_builtin_def (MEMCPY_NAME) # endif #endif picolibc-1.7.4/newlib/libc/machine/mips/memset.S000066400000000000000000000325211414576234500215100ustar00rootroot00000000000000/* * Copyright (c) 2013 * MIPS Technologies, Inc., California. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the MIPS Technologies, Inc., nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE MIPS TECHNOLOGIES, INC. ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE MIPS TECHNOLOGIES, INC. BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifdef ANDROID_CHANGES # include "machine/asm.h" # include "machine/regdef.h" # define PREFETCH_STORE_HINT PREFETCH_HINT_PREPAREFORSTORE #elif _LIBC # include # include # include # define PREFETCH_STORE_HINT PREFETCH_HINT_PREPAREFORSTORE #elif _COMPILING_NEWLIB # include "machine/asm.h" # include "machine/regdef.h" # define PREFETCH_STORE_HINT PREFETCH_HINT_PREPAREFORSTORE #else # include # include #endif /* Check to see if the MIPS architecture we are compiling for supports prefetching. */ #if (__mips == 4) || (__mips == 5) || (__mips == 32) || (__mips == 64) # ifndef DISABLE_PREFETCH # define USE_PREFETCH # endif #endif #if defined(_MIPS_SIM) && ((_MIPS_SIM == _ABI64) || (_MIPS_SIM == _ABIN32)) # ifndef DISABLE_DOUBLE # define USE_DOUBLE # endif #endif #ifndef USE_DOUBLE # ifndef DISABLE_DOUBLE_ALIGN # define DOUBLE_ALIGN # endif #endif /* Some asm.h files do not have the L macro definition. */ #ifndef L # if _MIPS_SIM == _ABIO32 # define L(label) $L ## label # else # define L(label) .L ## label # endif #endif /* Some asm.h files do not have the PTR_ADDIU macro definition. */ #ifndef PTR_ADDIU # ifdef USE_DOUBLE # define PTR_ADDIU daddiu # else # define PTR_ADDIU addiu # endif #endif /* New R6 instructions that may not be in asm.h. */ #ifndef PTR_LSA # if _MIPS_SIM == _ABI64 # define PTR_LSA dlsa # else # define PTR_LSA lsa # endif #endif /* Using PREFETCH_HINT_PREPAREFORSTORE instead of PREFETCH_STORE or PREFETCH_STORE_STREAMED offers a large performance advantage but PREPAREFORSTORE has some special restrictions to consider. Prefetch with the 'prepare for store' hint does not copy a memory location into the cache, it just allocates a cache line and zeros it out. This means that if you do not write to the entire cache line before writing it out to memory some data will get zero'ed out when the cache line is written back to memory and data will be lost. There are ifdef'ed sections of this memcpy to make sure that it does not do prefetches on cache lines that are not going to be completely written. This code is only needed and only used when PREFETCH_STORE_HINT is set to PREFETCH_HINT_PREPAREFORSTORE. This code assumes that cache lines are less than MAX_PREFETCH_SIZE bytes and if the cache line is larger it will not work correctly. */ #ifdef USE_PREFETCH # define PREFETCH_HINT_STORE 1 # define PREFETCH_HINT_STORE_STREAMED 5 # define PREFETCH_HINT_STORE_RETAINED 7 # define PREFETCH_HINT_PREPAREFORSTORE 30 /* If we have not picked out what hints to use at this point use the standard load and store prefetch hints. */ # ifndef PREFETCH_STORE_HINT # define PREFETCH_STORE_HINT PREFETCH_HINT_STORE # endif /* We double everything when USE_DOUBLE is true so we do 2 prefetches to get 64 bytes in that case. The assumption is that each individual prefetch brings in 32 bytes. */ # ifdef USE_DOUBLE # define PREFETCH_CHUNK 64 # define PREFETCH_FOR_STORE(chunk, reg) \ pref PREFETCH_STORE_HINT, (chunk)*64(reg); \ pref PREFETCH_STORE_HINT, ((chunk)*64)+32(reg) # else # define PREFETCH_CHUNK 32 # define PREFETCH_FOR_STORE(chunk, reg) \ pref PREFETCH_STORE_HINT, (chunk)*32(reg) # endif /* MAX_PREFETCH_SIZE is the maximum size of a prefetch, it must not be less than PREFETCH_CHUNK, the assumed size of each prefetch. If the real size of a prefetch is greater than MAX_PREFETCH_SIZE and the PREPAREFORSTORE hint is used, the code will not work correctly. If PREPAREFORSTORE is not used than MAX_PREFETCH_SIZE does not matter. */ # define MAX_PREFETCH_SIZE 128 /* PREFETCH_LIMIT is set based on the fact that we never use an offset greater than 5 on a STORE prefetch and that a single prefetch can never be larger than MAX_PREFETCH_SIZE. We add the extra 32 when USE_DOUBLE is set because we actually do two prefetches in that case, one 32 bytes after the other. */ # ifdef USE_DOUBLE # define PREFETCH_LIMIT (5 * PREFETCH_CHUNK) + 32 + MAX_PREFETCH_SIZE # else # define PREFETCH_LIMIT (5 * PREFETCH_CHUNK) + MAX_PREFETCH_SIZE # endif # if (PREFETCH_STORE_HINT == PREFETCH_HINT_PREPAREFORSTORE) \ && ((PREFETCH_CHUNK * 4) < MAX_PREFETCH_SIZE) /* We cannot handle this because the initial prefetches may fetch bytes that are before the buffer being copied. We start copies with an offset of 4 so avoid this situation when using PREPAREFORSTORE. */ # error "PREFETCH_CHUNK is too large and/or MAX_PREFETCH_SIZE is too small." # endif #else /* USE_PREFETCH not defined */ # define PREFETCH_FOR_STORE(offset, reg) #endif #if __mips_isa_rev > 5 # if (PREFETCH_STORE_HINT == PREFETCH_HINT_PREPAREFORSTORE) # undef PREFETCH_STORE_HINT # define PREFETCH_STORE_HINT PREFETCH_HINT_STORE_STREAMED # endif # define R6_CODE #endif /* Allow the routine to be named something else if desired. */ #ifndef MEMSET_NAME # define MEMSET_NAME memset #endif /* We load/store 64 bits at a time when USE_DOUBLE is true. The C_ prefix stands for CHUNK and is used to avoid macro name conflicts with system header files. */ #ifdef USE_DOUBLE # define C_ST sd # if __MIPSEB # define C_STHI sdl /* high part is left in big-endian */ # else # define C_STHI sdr /* high part is right in little-endian */ # endif #else # define C_ST sw # if __MIPSEB # define C_STHI swl /* high part is left in big-endian */ # else # define C_STHI swr /* high part is right in little-endian */ # endif #endif /* Bookkeeping values for 32 vs. 64 bit mode. */ #ifdef USE_DOUBLE # define NSIZE 8 # define NSIZEMASK 0x3f # define NSIZEDMASK 0x7f #else # define NSIZE 4 # define NSIZEMASK 0x1f # define NSIZEDMASK 0x3f #endif #define UNIT(unit) ((unit)*NSIZE) #define UNITM1(unit) (((unit)*NSIZE)-1) #ifdef ANDROID_CHANGES LEAF(MEMSET_NAME,0) #else LEAF(MEMSET_NAME) #endif .set nomips16 .set noreorder /* If the size is less than 2*NSIZE (8 or 16), go to L(lastb). Regardless of size, copy dst pointer to v0 for the return value. */ slti t2,a2,(2 * NSIZE) bne t2,zero,L(lastb) move v0,a0 /* If memset value is not zero, we copy it to all the bytes in a 32 or 64 bit word. */ beq a1,zero,L(set0) /* If memset value is zero no smear */ PTR_SUBU a3,zero,a0 nop /* smear byte into 32 or 64 bit word */ #if ((__mips == 64) || (__mips == 32)) && (__mips_isa_rev >= 2) # ifdef USE_DOUBLE dins a1, a1, 8, 8 /* Replicate fill byte into half-word. */ dins a1, a1, 16, 16 /* Replicate fill byte into word. */ dins a1, a1, 32, 32 /* Replicate fill byte into dbl word. */ # else ins a1, a1, 8, 8 /* Replicate fill byte into half-word. */ ins a1, a1, 16, 16 /* Replicate fill byte into word. */ # endif #else # ifdef USE_DOUBLE and a1,0xff dsll t2,a1,8 or a1,t2 dsll t2,a1,16 or a1,t2 dsll t2,a1,32 or a1,t2 # else and a1,0xff sll t2,a1,8 or a1,t2 sll t2,a1,16 or a1,t2 # endif #endif /* If the destination address is not aligned do a partial store to get it aligned. If it is already aligned just jump to L(aligned). */ L(set0): #ifndef R6_CODE andi t2,a3,(NSIZE-1) /* word-unaligned address? */ beq t2,zero,L(aligned) /* t2 is the unalignment count */ PTR_SUBU a2,a2,t2 C_STHI a1,0(a0) PTR_ADDU a0,a0,t2 #else /* R6_CODE */ andi t2,a0,(NSIZE-1) lapc t9,L(atable) PTR_LSA t9,t2,t9,2 jrc t9 L(atable): bc L(aligned) # ifdef USE_DOUBLE bc L(lb7) bc L(lb6) bc L(lb5) bc L(lb4) # endif bc L(lb3) bc L(lb2) bc L(lb1) L(lb7): sb a1,6(a0) L(lb6): sb a1,5(a0) L(lb5): sb a1,4(a0) L(lb4): sb a1,3(a0) L(lb3): sb a1,2(a0) L(lb2): sb a1,1(a0) L(lb1): sb a1,0(a0) li t9,NSIZE subu t2,t9,t2 PTR_SUBU a2,a2,t2 PTR_ADDU a0,a0,t2 #endif /* R6_CODE */ L(aligned): /* If USE_DOUBLE is not set we may still want to align the data on a 16 byte boundry instead of an 8 byte boundry to maximize the opportunity of proAptiv chips to do memory bonding (combining two sequential 4 byte stores into one 8 byte store). We know there are at least 4 bytes left to store or we would have jumped to L(lastb) earlier in the code. */ #ifdef DOUBLE_ALIGN andi t2,a3,4 beq t2,zero,L(double_aligned) PTR_SUBU a2,a2,t2 sw a1,0(a0) PTR_ADDU a0,a0,t2 L(double_aligned): #endif /* Now the destination is aligned to (word or double word) aligned address Set a2 to count how many bytes we have to copy after all the 64/128 byte chunks are copied and a3 to the dest pointer after all the 64/128 byte chunks have been copied. We will loop, incrementing a0 until it equals a3. */ andi t8,a2,NSIZEDMASK /* any whole 64-byte/128-byte chunks? */ beq a2,t8,L(chkw) /* if a2==t8, no 64-byte/128-byte chunks */ PTR_SUBU a3,a2,t8 /* subtract from a2 the reminder */ PTR_ADDU a3,a0,a3 /* Now a3 is the final dst after loop */ /* When in the loop we may prefetch with the 'prepare to store' hint, in this case the a0+x should not be past the "t0-32" address. This means: for x=128 the last "safe" a0 address is "t0-160". Alternatively, for x=64 the last "safe" a0 address is "t0-96" In the current version we will use "prefetch hint,128(a0)", so "t0-160" is the limit. */ #if defined(USE_PREFETCH) \ && (PREFETCH_STORE_HINT == PREFETCH_HINT_PREPAREFORSTORE) PTR_ADDU t0,a0,a2 /* t0 is the "past the end" address */ PTR_SUBU t9,t0,PREFETCH_LIMIT /* t9 is the "last safe pref" address */ #endif #if defined(USE_PREFETCH) \ && (PREFETCH_STORE_HINT != PREFETCH_HINT_PREPAREFORSTORE) PREFETCH_FOR_STORE (1, a0) PREFETCH_FOR_STORE (2, a0) PREFETCH_FOR_STORE (3, a0) #endif L(loop16w): #if defined(USE_PREFETCH) \ && (PREFETCH_STORE_HINT == PREFETCH_HINT_PREPAREFORSTORE) sltu v1,t9,a0 /* If a0 > t9 don't use next prefetch */ bgtz v1,L(skip_pref) nop #endif #ifndef R6_CODE PREFETCH_FOR_STORE (4, a0) PREFETCH_FOR_STORE (5, a0) #else PREFETCH_FOR_STORE (2, a0) #endif L(skip_pref): C_ST a1,UNIT(0)(a0) C_ST a1,UNIT(1)(a0) C_ST a1,UNIT(2)(a0) C_ST a1,UNIT(3)(a0) C_ST a1,UNIT(4)(a0) C_ST a1,UNIT(5)(a0) C_ST a1,UNIT(6)(a0) C_ST a1,UNIT(7)(a0) C_ST a1,UNIT(8)(a0) C_ST a1,UNIT(9)(a0) C_ST a1,UNIT(10)(a0) C_ST a1,UNIT(11)(a0) C_ST a1,UNIT(12)(a0) C_ST a1,UNIT(13)(a0) C_ST a1,UNIT(14)(a0) C_ST a1,UNIT(15)(a0) PTR_ADDIU a0,a0,UNIT(16) /* adding 64/128 to dest */ bne a0,a3,L(loop16w) nop move a2,t8 /* Here we have dest word-aligned but less than 64-bytes or 128 bytes to go. Check for a 32(64) byte chunk and copy if if there is one. Otherwise jump down to L(chk1w) to handle the tail end of the copy. */ L(chkw): andi t8,a2,NSIZEMASK /* is there a 32-byte/64-byte chunk. */ /* the t8 is the reminder count past 32-bytes */ beq a2,t8,L(chk1w)/* when a2==t8, no 32-byte chunk */ nop C_ST a1,UNIT(0)(a0) C_ST a1,UNIT(1)(a0) C_ST a1,UNIT(2)(a0) C_ST a1,UNIT(3)(a0) C_ST a1,UNIT(4)(a0) C_ST a1,UNIT(5)(a0) C_ST a1,UNIT(6)(a0) C_ST a1,UNIT(7)(a0) PTR_ADDIU a0,a0,UNIT(8) /* Here we have less than 32(64) bytes to set. Set up for a loop to copy one word (or double word) at a time. Set a2 to count how many bytes we have to copy after all the word (or double word) chunks are copied and a3 to the dest pointer after all the (d)word chunks have been copied. We will loop, incrementing a0 until a0 equals a3. */ L(chk1w): andi a2,t8,(NSIZE-1) /* a2 is the reminder past one (d)word chunks */ beq a2,t8,L(lastb) PTR_SUBU a3,t8,a2 /* a3 is count of bytes in one (d)word chunks */ PTR_ADDU a3,a0,a3 /* a3 is the dst address after loop */ /* copying in words (4-byte or 8 byte chunks) */ L(wordCopy_loop): PTR_ADDIU a0,a0,UNIT(1) bne a0,a3,L(wordCopy_loop) C_ST a1,UNIT(-1)(a0) /* Copy the last 8 (or 16) bytes */ L(lastb): blez a2,L(leave) PTR_ADDU a3,a0,a2 /* a3 is the last dst address */ L(lastbloop): PTR_ADDIU a0,a0,1 bne a0,a3,L(lastbloop) sb a1,-1(a0) L(leave): j ra nop .set at .set reorder END(MEMSET_NAME) #ifndef ANDROID_CHANGES # ifdef _LIBC libc_hidden_builtin_def (MEMSET_NAME) # endif #endif picolibc-1.7.4/newlib/libc/machine/mips/setjmp.S000066400000000000000000000112161414576234500215160ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* This is a simple version of setjmp and longjmp for MIPS 32 and 64. Ian Lance Taylor, Cygnus Support, 13 May 1993. */ #ifdef __mips16 /* This file contains 32 bit assembly code. */ .set nomips16 #endif #define GPR_LAYOUT \ GPR_OFFSET ($16, 0); \ GPR_OFFSET ($17, 1); \ GPR_OFFSET ($18, 2); \ GPR_OFFSET ($19, 3); \ GPR_OFFSET ($20, 4); \ GPR_OFFSET ($21, 5); \ GPR_OFFSET ($22, 6); \ GPR_OFFSET ($23, 7); \ GPR_OFFSET ($29, 8); \ GPR_OFFSET ($30, 9); \ GPR_OFFSET ($31, 10) #define NUM_GPRS_SAVED 11 #ifdef __mips_hard_float #if _MIPS_SIM == _ABIN32 #define FPR_LAYOUT \ FPR_OFFSET ($f20, 0); \ FPR_OFFSET ($f22, 1); \ FPR_OFFSET ($f24, 2); \ FPR_OFFSET ($f26, 3); \ FPR_OFFSET ($f28, 4); \ FPR_OFFSET ($f30, 5); #elif _MIPS_SIM == _ABI64 #define FPR_LAYOUT \ FPR_OFFSET ($f24, 0); \ FPR_OFFSET ($f25, 1); \ FPR_OFFSET ($f26, 2); \ FPR_OFFSET ($f27, 3); \ FPR_OFFSET ($f28, 4); \ FPR_OFFSET ($f29, 5); \ FPR_OFFSET ($f30, 6); \ FPR_OFFSET ($f31, 7); #elif __mips_fpr == 0 || __mips_fpr == 64 /* This deals with the o32 FPXX and FP64 cases. Here we must use SDC1 and LDC1 to access the FPRs. These instructions require 8-byte aligned addresses. Unfortunately, the MIPS jmp_buf only guarantees 4-byte alignment and this cannot be increased without breaking compatibility with pre-existing objects built against newlib. There are 11 GPRS saved in the jmp_buf so a buffer that happens to be 8-byte aligned ends up leaving the FPR slots 4-byte aligned and an (only) 4-byte aligned buffer leads to the FPR slots being 8-byte aligned! To resolve this, we move the location of $31 to the last slot in the jmp_buf when the overall buffer is 8-byte aligned. $31 is simply loaded/stored twice to avoid adding complexity to the GPR_LAYOUT macro above as well as FPR_LAYOUT. The location of the last slot is index 22 which is calculated from there being 11 GPRs saved and then 12 FPRs saved so the index of the last FPR is 11+11. The base of the jmp_buf is modified in $4 to allow the FPR_OFFSET macros to just use the usual constant slot numbers regardless of whether the realignment happened or not. */ #define FPR_LAYOUT \ and $8, $4, 4; \ bne $8, $0, 1f; \ GPR_OFFSET ($31, 22); \ addiu $4, $4, -4; \ 1: \ FPR_OFFSET ($f20, 0); \ FPR_OFFSET ($f22, 2); \ FPR_OFFSET ($f24, 4); \ FPR_OFFSET ($f26, 6); \ FPR_OFFSET ($f28, 8); \ FPR_OFFSET ($f30, 10); #else /* Assuming _MIPS_SIM == _ABIO32 */ #define FPR_LAYOUT \ FPR_OFFSET ($f20, 0); \ FPR_OFFSET ($f21, 1); \ FPR_OFFSET ($f22, 2); \ FPR_OFFSET ($f23, 3); \ FPR_OFFSET ($f24, 4); \ FPR_OFFSET ($f25, 5); \ FPR_OFFSET ($f26, 6); \ FPR_OFFSET ($f27, 7); \ FPR_OFFSET ($f28, 8); \ FPR_OFFSET ($f29, 9); \ FPR_OFFSET ($f30, 10); \ FPR_OFFSET ($f31, 11); #endif #else #define FPR_LAYOUT #endif #ifdef __mips64 #define BYTES_PER_WORD 8 #define LOAD_GPR ld #define LOAD_FPR ldc1 #define STORE_GPR sd #define STORE_FPR sdc1 #else #define LOAD_GPR lw #define STORE_GPR sw #define BYTES_PER_WORD 4 #if __mips_fpr == 0 || __mips_fpr == 64 #define LOAD_FPR ldc1 #define STORE_FPR sdc1 #else #define LOAD_FPR lwc1 #define STORE_FPR swc1 #endif #endif #define GPOFF(INDEX) (INDEX * BYTES_PER_WORD) #define FPOFF(INDEX) ((INDEX + NUM_GPRS_SAVED) * BYTES_PER_WORD) /* int setjmp (jmp_buf); */ .globl setjmp .ent setjmp setjmp: .frame $sp,0,$31 #define GPR_OFFSET(REG, INDEX) STORE_GPR REG,GPOFF(INDEX)($4) #define FPR_OFFSET(REG, INDEX) STORE_FPR REG,FPOFF(INDEX)($4) GPR_LAYOUT FPR_LAYOUT #undef GPR_OFFSET #undef FPR_OFFSET move $2,$0 j $31 .end setjmp /* volatile void longjmp (jmp_buf, int); */ .globl longjmp .ent longjmp longjmp: .frame $sp,0,$31 #define GPR_OFFSET(REG, INDEX) LOAD_GPR REG,GPOFF(INDEX)($4) #define FPR_OFFSET(REG, INDEX) LOAD_FPR REG,FPOFF(INDEX)($4) GPR_LAYOUT FPR_LAYOUT #undef GPR_OFFSET #undef FPR_OFFSET bne $5,$0,1f li $5,1 1: move $2,$5 j $31 .end longjmp picolibc-1.7.4/newlib/libc/machine/mips/strcmp.S000066400000000000000000000136641414576234500215350ustar00rootroot00000000000000/* * Copyright (c) 2014 * Imagination Technologies Limited. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the MIPS Technologies, Inc., nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY IMAGINATION TECHNOLOGIES LIMITED ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL IMAGINATION TECHNOLOGIES LIMITED BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifdef ANDROID_CHANGES # include "machine/asm.h" # include "machine/regdef.h" #elif _LIBC # include # include # include #elif _COMPILING_NEWLIB # include "machine/asm.h" # include "machine/regdef.h" #else # include # include #endif /* Technically strcmp should not read past the end of the strings being compared. We will read a full word that may contain excess bits beyond the NULL string terminator but unless ENABLE_READAHEAD is set, we will not read the next word after the end of string. Setting ENABLE_READAHEAD will improve performance but is technically illegal based on the definition of strcmp. */ #ifdef ENABLE_READAHEAD # define DELAY_READ #else # define DELAY_READ nop #endif /* Testing on a little endian machine showed using CLZ was a performance loss, so we are not turning it on by default. */ #if defined(ENABLE_CLZ) && (__mips_isa_rev > 1) # define USE_CLZ #endif /* Some asm.h files do not have the L macro definition. */ #ifndef L # if _MIPS_SIM == _ABIO32 # define L(label) $L ## label # else # define L(label) .L ## label # endif #endif /* Some asm.h files do not have the PTR_ADDIU macro definition. */ #ifndef PTR_ADDIU # ifdef USE_DOUBLE # define PTR_ADDIU daddiu # else # define PTR_ADDIU addiu # endif #endif /* Allow the routine to be named something else if desired. */ #ifndef STRCMP_NAME # define STRCMP_NAME strcmp #endif #ifdef ANDROID_CHANGES LEAF(STRCMP_NAME, 0) #else LEAF(STRCMP_NAME) #endif .set nomips16 .set noreorder or t0, a0, a1 andi t0,0x3 bne t0, zero, L(byteloop) /* Both strings are 4 byte aligned at this point. */ lui t8, 0x0101 ori t8, t8, 0x0101 lui t9, 0x7f7f ori t9, 0x7f7f #define STRCMP32(OFFSET) \ lw v0, OFFSET(a0); \ lw v1, OFFSET(a1); \ subu t0, v0, t8; \ bne v0, v1, L(worddiff); \ nor t1, v0, t9; \ and t0, t0, t1; \ bne t0, zero, L(returnzero) L(wordloop): STRCMP32(0) DELAY_READ STRCMP32(4) DELAY_READ STRCMP32(8) DELAY_READ STRCMP32(12) DELAY_READ STRCMP32(16) DELAY_READ STRCMP32(20) DELAY_READ STRCMP32(24) DELAY_READ STRCMP32(28) PTR_ADDIU a0, a0, 32 b L(wordloop) PTR_ADDIU a1, a1, 32 L(returnzero): j ra move v0, zero L(worddiff): #ifdef USE_CLZ subu t0, v0, t8 nor t1, v0, t9 and t1, t0, t1 xor t0, v0, v1 or t0, t0, t1 # if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ wsbh t0, t0 rotr t0, t0, 16 # endif clz t1, t0 and t1, 0xf8 # if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ neg t1 addu t1, 24 # endif rotrv v0, v0, t1 rotrv v1, v1, t1 and v0, v0, 0xff and v1, v1, 0xff j ra subu v0, v0, v1 #else /* USE_CLZ */ # if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ andi t0, v0, 0xff beq t0, zero, L(wexit01) andi t1, v1, 0xff bne t0, t1, L(wexit01) srl t8, v0, 8 srl t9, v1, 8 andi t8, t8, 0xff beq t8, zero, L(wexit89) andi t9, t9, 0xff bne t8, t9, L(wexit89) srl t0, v0, 16 srl t1, v1, 16 andi t0, t0, 0xff beq t0, zero, L(wexit01) andi t1, t1, 0xff bne t0, t1, L(wexit01) srl t8, v0, 24 srl t9, v1, 24 # else /* __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ */ srl t0, v0, 24 beq t0, zero, L(wexit01) srl t1, v1, 24 bne t0, t1, L(wexit01) srl t8, v0, 16 srl t9, v1, 16 andi t8, t8, 0xff beq t8, zero, L(wexit89) andi t9, t9, 0xff bne t8, t9, L(wexit89) srl t0, v0, 8 srl t1, v1, 8 andi t0, t0, 0xff beq t0, zero, L(wexit01) andi t1, t1, 0xff bne t0, t1, L(wexit01) andi t8, v0, 0xff andi t9, v1, 0xff # endif /* __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ */ L(wexit89): j ra subu v0, t8, t9 L(wexit01): j ra subu v0, t0, t1 #endif /* USE_CLZ */ /* It might seem better to do the 'beq' instruction between the two 'lbu' instructions so that the nop is not needed but testing showed that this code is actually faster (based on glibc strcmp test). */ #define BYTECMP01(OFFSET) \ lbu v0, OFFSET(a0); \ lbu v1, OFFSET(a1); \ beq v0, zero, L(bexit01); \ nop; \ bne v0, v1, L(bexit01) #define BYTECMP89(OFFSET) \ lbu t8, OFFSET(a0); \ lbu t9, OFFSET(a1); \ beq t8, zero, L(bexit89); \ nop; \ bne t8, t9, L(bexit89) L(byteloop): BYTECMP01(0) BYTECMP89(1) BYTECMP01(2) BYTECMP89(3) BYTECMP01(4) BYTECMP89(5) BYTECMP01(6) BYTECMP89(7) PTR_ADDIU a0, a0, 8 b L(byteloop) PTR_ADDIU a1, a1, 8 L(bexit01): j ra subu v0, v0, v1 L(bexit89): j ra subu v0, t8, t9 .set at .set reorder END(STRCMP_NAME) #ifndef ANDROID_CHANGES # ifdef _LIBC libc_hidden_builtin_def (STRCMP_NAME) # endif #endif picolibc-1.7.4/newlib/libc/machine/mips/strlen.c000066400000000000000000000032471414576234500215500ustar00rootroot00000000000000/* * strlen.c -- strlen function. On at least some MIPS chips, a simple * strlen is faster than the 'optimized' C version. * * Copyright (c) 2001, 2002 Red Hat, Inc. * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #include #include /* MIPS16 needs to come first. */ #if defined(__mips16) size_t strlen (const char *str) { const char *start = str; while (*str++ != '\0') ; return str - start - 1; } #elif defined(__mips64) __asm__("" /* 64-bit MIPS targets */ " .set noreorder\n" " .set nomacro\n" " .globl strlen\n" " .ent strlen\n" "strlen:\n" " daddiu $2,$4,1\n" "\n" "1: lbu $3,0($4)\n" " bnez $3,1b\n" " daddiu $4,$4,1\n" "\n" " jr $31\n" " dsubu $2,$4,$2\n" " .end strlen\n" " .set macro\n" " .set reorder\n"); #else __asm__("" /* 32-bit MIPS targets */ " .set noreorder\n" " .set nomacro\n" " .globl strlen\n" " .ent strlen\n" "strlen:\n" " addiu $2,$4,1\n" "\n" "1: lbu $3,0($4)\n" #if defined(_R3000) " nop \n" #endif " bnez $3,1b\n" " addiu $4,$4,1\n" "\n" " jr $31\n" " subu $2,$4,$2\n" " .end strlen\n" " .set macro\n" " .set reorder\n"); #endif picolibc-1.7.4/newlib/libc/machine/mips/strncpy.c000066400000000000000000000140051414576234500217350ustar00rootroot00000000000000/* * strncpy.S -- strncmp function. On at least some MIPS chips, you get better * code by hand unrolling the loops, and by using store words to zero the * remainder of the buffer than the default newlib C version. * * Copyright (c) 2001 Red Hat, Inc. * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #include #include #include #include #if !defined(__GNUC__) || (__GNUC__ < 3) #define __builtin_expect(a,b) a #else #ifdef __mips64 /* Don't use limits test for the size of long, in order to allow the use of 64-bit stores on MIPS3 machines, even if -mlong32 was used. */ typedef unsigned word_type __attribute__ ((mode (DI))); #else typedef unsigned word_type __attribute__ ((mode (SI))); #endif typedef unsigned si_type __attribute__ ((mode (SI))); typedef unsigned hi_type __attribute__ ((mode (HI))); #ifndef UNROLL_FACTOR #define UNROLL_FACTOR 4 #elif (UNROLL_FACTOR != 2) && (UNROLL_FACTOR != 4) #error "UNROLL_FACTOR must be 2 or 4" #endif #endif char * strncpy (char *dst0, const char *src0, size_t count) { #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) || defined(__mips16) || !defined(__GNUC__) || (__GNUC__ < 3) char *dst, *end; const char *src; int ch; dst = dst0; src = src0; end = dst + count; while (dst != end) { *dst++ = ch = *src++; if (__builtin_expect (ch == '\0', 0)) { while (dst != end) *dst++ = '\0'; break; } } return dst0; #else unsigned char *dst; unsigned char *dst_end; unsigned char *end; const unsigned char *src; int ch0, ch1; #if UNROLL_FACTOR > 2 int ch2, ch3; #endif int ch; int odd_bytes; size_t long_count; dst = (unsigned char *)dst0; src = (unsigned const char *)src0; /* Take care of any odd bytes in the source data because we * want to unroll where we read ahead 2 or 4 bytes at a time and then * check each byte for the null terminator. This can result in * a segfault for the case where the source pointer is unaligned, * the null terminator is in valid memory, but reading 2 or 4 bytes at a * time blindly eventually goes outside of valid memory. */ while (((uintptr_t) src & (UNROLL_FACTOR - 1)) != 0 && count > 0) { *dst++ = ch = *src++; --count; if (ch == '\0') { end = dst + count; while (dst != end) *dst++ = '\0'; return dst0; } } if (__builtin_expect (count >= 4, 1)) { odd_bytes = (count & (UNROLL_FACTOR - 1)); count -= odd_bytes; do { ch0 = src[0]; ch1 = src[1]; #if UNROLL_FACTOR > 2 ch2 = src[2]; ch3 = src[3]; #endif src += UNROLL_FACTOR; count -= UNROLL_FACTOR; dst[0] = ch0; if (ch0 == '\0') goto found_null0; dst[1] = ch1; if (ch1 == '\0') goto found_null1; #if UNROLL_FACTOR > 2 dst[2] = ch2; if (ch2 == '\0') goto found_null2; dst[3] = ch3; if (ch3 == '\0') goto found_null3; #endif dst += UNROLL_FACTOR; } while (count); /* fall through, count == 0, no null found, deal with last bytes */ count = odd_bytes; } end = dst + count; while (dst != end) { *dst++ = ch = *src++; if (ch == '\0') { while (dst != end) *dst++ = '\0'; break; } } return dst0; /* Found null byte in first byte, count has been decremented by 4, null has been stored in dst[0]. */ found_null0: count++; /* add 1 to cover remaining byte */ dst -= 1; /* adjust dst += 4 gets correct ptr */ FALLTHROUGH; /* Found null byte in second byte, count has been decremented by 4, null has been stored in dst[1]. */ found_null1: #if UNROLL_FACTOR > 2 count++; /* add 1 to cover remaining byte */ dst -= 1; /* adjust dst += 4 gets correct ptr */ FALLTHROUGH; /* Found null byte in third byte, count has been decremented by 4, null has been stored in dst[2]. */ found_null2: count++; /* add 1 to cover remaining byte */ dst -= 1; /* adjust dst += 4 gets correct ptr */ FALLTHROUGH; /* Found null byte in fourth byte, count is accurate, dst has not been updated yet. */ found_null3: #endif count += odd_bytes; /* restore odd byte count */ dst += UNROLL_FACTOR; /* Zero fill remainder of the array. Unroll the loop, and use word/dword stores where we can. */ while (count && (((long)dst) & (sizeof (word_type) - 1)) != 0) { count--; *dst++ = 0; } while (count >= UNROLL_FACTOR*sizeof (word_type)) { count -= UNROLL_FACTOR*sizeof (word_type); dst += UNROLL_FACTOR*sizeof (word_type); #if UNROLL_FACTOR > 2 ((word_type *)(void *)dst)[-4] = 0; ((word_type *)(void *)dst)[-3] = 0; #endif ((word_type *)(void *)dst)[-2] = 0; ((word_type *)(void *)dst)[-1] = 0; } #if UNROLL_FACTOR > 2 if (count >= 2*sizeof (word_type)) { count -= 2*sizeof (word_type); ((word_type *)(void *)dst)[0] = 0; ((word_type *)(void *)dst)[1] = 0; dst += 2*sizeof (word_type); } #endif if (count >= sizeof (word_type)) { count -= sizeof (word_type); ((word_type *)(void *)dst)[0] = 0; dst += sizeof (word_type); } #ifdef __mips64 if (count >= sizeof (si_type)) { count -= sizeof (si_type); ((si_type *)(void *)dst)[0] = 0; dst += sizeof (si_type); } #endif if (count >= sizeof (hi_type)) { count -= sizeof (hi_type); ((hi_type *)(void *)dst)[0] = 0; dst += sizeof (hi_type); } if (count) *dst = '\0'; return dst0; #endif } picolibc-1.7.4/newlib/libc/machine/mips/sys/000077500000000000000000000000001414576234500207055ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/mips/sys/fenv.h000066400000000000000000000055411414576234500220210ustar00rootroot00000000000000/*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright (c) 2004-2005 David Schultz * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $FreeBSD$ */ #ifndef _SYS_FENV_H_ #define _SYS_FENV_H_ #include #ifndef __fenv_static #define __fenv_static static #endif typedef int fenv_t; typedef int fexcept_t; /* Exception flags */ #ifdef __mips_soft_float #define _FPUSW_SHIFT 16 #define FE_INVALID 0x0001 #define FE_DIVBYZERO 0x0002 #define FE_OVERFLOW 0x0004 #define FE_UNDERFLOW 0x0008 #define FE_INEXACT 0x0010 #else #define _FCSR_CAUSE_SHIFT 10 #define FE_INVALID 0x0040 #define FE_DIVBYZERO 0x0020 #define FE_OVERFLOW 0x0010 #define FE_UNDERFLOW 0x0008 #define FE_INEXACT 0x0004 #endif #define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | \ FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW) /* Rounding modes */ #define FE_TONEAREST 0x0000 #define FE_TOWARDZERO 0x0001 #define FE_UPWARD 0x0002 #define FE_DOWNWARD 0x0003 #define _ROUND_MASK (FE_TONEAREST | FE_DOWNWARD | \ FE_UPWARD | FE_TOWARDZERO) /* Default floating-point environment */ extern fenv_t _fe_dfl_env; #define FE_DFL_ENV ((const fenv_t *) &_fe_dfl_env) /* We need to be able to map status flag positions to mask flag positions */ #define _ENABLE_SHIFT 5 #define _ENABLE_MASK (FE_ALL_EXCEPT << _ENABLE_SHIFT) #if !defined(__mips_soft_float) && !defined(__mips_hard_float) #error compiler didnt set soft/hard float macros #endif #ifndef __mips_soft_float #define __cfc1(__fcsr) __asm __volatile("cfc1 %0, $31" : "=r" (__fcsr)) #define __ctc1(__fcsr) __asm __volatile("ctc1 %0, $31" :: "r" (__fcsr)) #endif #endif /* !_FENV_H_ */ picolibc-1.7.4/newlib/libc/machine/mn10200/000077500000000000000000000000001414576234500201145ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/mn10200/setjmp.S000066400000000000000000000022261414576234500215440ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ .file "setjmp.S" .section .text .align 1 .global _setjmp _setjmp: mov d0,a0 movx d2,(0,a0) movx d3,(4,a0) mov a1,(8,a0) mov a2,(12,a0) mov a3,(16,a0) movx (0,a3),d0 movx d0,(20,a0) sub d0,d0 rts .global _longjmp _longjmp: mov d0,a0 movx (0,a0),d2 movx (4,a0),d3 mov (8,a0),a1 mov (12,a0),a2 mov (16,a0),a3 movx (20,a0),d0 movx d0,(0,a3) cmp 0,d1 bne L1 mov 1,d1 L1: mov d1,d0 rts picolibc-1.7.4/newlib/libc/machine/mn10300/000077500000000000000000000000001414576234500201155ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/mn10300/memchr.S000066400000000000000000000051031414576234500215130ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ .file "memchr.S" .section .text .global _memchr .type _memchr,@function _memchr: movm [d2,d3,a2,a3],(sp) .Lend_of_prologue: mov d0,a0 mov d1,d2 mov (28,sp),a1 #ifndef __OPTIMIZE_SIZE__ cmp 3,a1 bls .L44 mov a0,d3 btst 3,d3 bne .L44 mov a0,a2 mov 0,a3 clr d1 setlb mov a3,d0 asl 8,d0 mov d2,a3 add d0,a3 inc d1 cmp 3,d1 lls cmp 3,a1 bls .L48 .L33: mov (a2),d0 mov a3,d3 xor d3,d0 mov d0,d1 not d1 add -16843009,d0 and d1,d0 btst -2139062144,d0 beq .L34 mov a2,a0 clr d1 setlb movbu (a0),d0 cmp d2,d0 beq .Lepilogue inc a0 inc d1 cmp 3,d1 lls .L34: add -4,a1 inc4 a2 cmp 3,a1 bhi .L33 .L48: mov a2,a0 .L44: #endif cmp 0,a1 beq .L50 setlb movbu (a0),d0 cmp d2,d0 beq .Lepilogue inc a0 sub 1,a1 lne .L50: mov 0,a0 .Lepilogue: ret [d2,d3,a2,a3],16 .Lend_of_memchr: .size _memchr, .Lend_of_memchr - _memchr .section .debug_frame,"",@progbits .Lstart_of_debug_frame: # Common Information Entry (CIE) .4byte .Lend_of_CIE - .Lstart_of_CIE # CIE Length .Lstart_of_CIE: .4byte 0xffffffff # CIE Identifier Tag .byte 0x1 # CIE Version .ascii "\0" # CIE Augmentation .uleb128 0x1 # CIE Code Alignment Factor .sleb128 -4 # CIE Data Alignment Factor .byte 0x32 # CIE RA Column .byte 0xc # DW_CFA_def_cfa .uleb128 0x9 .uleb128 0x0 .byte 0xb2 # DW_CFA_offset, column 0x32 .uleb128 0x0 .align 2 .Lend_of_CIE: # Frame Description Entry (FDE) .4byte .Lend_of_FDE - .Lstart_of_FDE # FDE Length .Lstart_of_FDE: .4byte .Lstart_of_debug_frame # FDE CIE offset .4byte _memchr # FDE initial location .4byte .Lend_of_memchr - _memchr # FDE address range .byte 0x4 # DW_CFA_advance_loc4 .4byte .Lend_of_prologue - _memchr .byte 0xe # DW_CFA_def_cfa_offset .uleb128 0x4 .byte 0x87 # DW_CFA_offset, column 0x7 .uleb128 0x1 .align 2 .Lend_of_FDE: picolibc-1.7.4/newlib/libc/machine/mn10300/memcmp.S000066400000000000000000000045161414576234500215250ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ .file "memcmp.S" .section .text .global _memcmp .type _memcmp,@function _memcmp: movm [d2,d3,a2,a3],(sp) .Lend_of_prologue: mov d0,a0 mov d1,a1 mov (28,sp),a2 #ifndef __OPTIMIZE_SIZE__ cmp 3,a2 bls .L22 mov a1,d2 or d2,d0 btst 3,d0 bne .L22 setlb mov (a0),d1 mov (a1),d0 cmp d0,d1 bne .L22 inc4 a0 inc4 a1 add -4,a2 cmp 3,a2 lhi .L22: #endif cmp 0,a2 beq .L24 setlb movbu (a0),d3 movbu (a1),d2 cmp d2,d3 beq .L23 mov d3,d0 sub d2,d0 jmp .Lepilogue .L23: inc a0 inc a1 sub 1,a2 lne .L24: clr d0 .Lepilogue: ret [d2,d3,a2,a3],16 .Lend_of_func: .size _memcmp, .Lend_of_func - _memcmp .section .debug_frame,"",@progbits .Lstart_of_debug_frame: # Common Information Entry (CIE) .4byte .Lend_of_CIE - .Lstart_of_CIE # CIE Length .Lstart_of_CIE: .4byte 0xffffffff # CIE Identifier Tag .byte 0x1 # CIE Version .ascii "\0" # CIE Augmentation .uleb128 0x1 # CIE Code Alignment Factor .sleb128 -4 # CIE Data Alignment Factor .byte 0x32 # CIE RA Column .byte 0xc # DW_CFA_def_cfa .uleb128 0x9 .uleb128 0x0 .byte 0xb2 # DW_CFA_offset, column 0x32 .uleb128 0x0 .align 2 .Lend_of_CIE: # Frame Description Entry (FDE) .4byte .Lend_of_FDE - .Lstart_of_FDE # FDE Length .Lstart_of_FDE: .4byte .Lstart_of_debug_frame # FDE CIE offset .4byte _memcmp # FDE initial location .4byte .Lend_of_func - _memcmp # FDE address range .byte 0x4 # DW_CFA_advance_loc4 .4byte .Lend_of_prologue - _memcmp .byte 0xe # DW_CFA_def_cfa_offset .uleb128 0x4 .byte 0x87 # DW_CFA_offset, column 0x7 .uleb128 0x1 .align 2 .Lend_of_FDE: picolibc-1.7.4/newlib/libc/machine/mn10300/memcpy.S000066400000000000000000000047721414576234500215450ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ .file "memcpy.S" .section .text .global _memcpy .type _memcpy,@function _memcpy: movm [d2,d3,a2,a3],(sp) .Lend_of_prologue: mov d0,d2 mov d1,a0 mov d2,a1 mov (28,sp),d1 #ifndef __OPTIMIZE_SIZE__ mov a0,d0 or d2,d0 btst 3,d0 bne .L37 cmp 15,d1 bls .L34 setlb mov (a0),d0 mov d0,(a1) inc4 a0 inc4 a1 mov (a0),d0 mov d0,(a1) inc4 a0 inc4 a1 mov (a0),d0 mov d0,(a1) inc4 a0 inc4 a1 mov (a0),d0 mov d0,(a1) inc4 a0 inc4 a1 add -16,d1 cmp 15,d1 lhi .L34: cmp 3,d1 bls .L37 setlb mov (a0),d0 mov d0,(a1) inc4 a0 inc4 a1 add -4,d1 cmp 3,d1 lhi .L37: #endif cmp 0,d1 beq .L36 setlb movbu (a0),d0 movbu d0,(a1) inc a0 inc a1 sub 1,d1 lne .L36: mov d2,a0 .Lepilogue: ret [d2,d3,a2,a3],16 .Lend_of_memcpy: .size _memcpy, .Lend_of_memcpy - _memcpy .section .debug_frame,"",@progbits .Lstart_of_debug_frame: # Common Information Entry (CIE) .4byte .Lend_of_CIE - .Lstart_of_CIE # CIE Length .Lstart_of_CIE: .4byte 0xffffffff # CIE Identifier Tag .byte 0x1 # CIE Version .ascii "\0" # CIE Augmentation .uleb128 0x1 # CIE Code Alignment Factor .sleb128 -4 # CIE Data Alignment Factor .byte 0x32 # CIE RA Column .byte 0xc # DW_CFA_def_cfa .uleb128 0x9 .uleb128 0x0 .byte 0xb2 # DW_CFA_offset, column 0x32 .uleb128 0x0 .align 2 .Lend_of_CIE: # Frame Description Entry (FDE) .4byte .Lend_of_FDE - .Lstart_of_FDE # FDE Length .Lstart_of_FDE: .4byte .Lstart_of_debug_frame # FDE CIE offset .4byte _memcpy # FDE initial location .4byte .Lend_of_memcpy - _memcpy # FDE address range .byte 0x4 # DW_CFA_advance_loc4 .4byte .Lend_of_prologue - _memcpy .byte 0xe # DW_CFA_def_cfa_offset .uleb128 0x4 .byte 0x87 # DW_CFA_offset, column 0x7 .uleb128 0x1 .align 2 .Lend_of_FDE: picolibc-1.7.4/newlib/libc/machine/mn10300/memset.S000066400000000000000000000050361414576234500215370ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ .file "memset.S" .section .text .global _memset .type _memset,@function _memset: movm [d2,d3,a2,a3], (sp) .Lend_of_prologue: mov d0, d3 mov d1, d2 mov (28, sp),a1 mov d3, a0 #ifndef __OPTIMIZE_SIZE__ cmp 3, a1 bls .L41 btst 3, d3 bne .L41 extbu d2 mov d2, d1 asl 8, d1 or d2, d1 mov d1, d0 asl 16, d0 or d0, d1 cmp 15, a1 bls .L36 setlb mov d1, (a0) inc4 a0 mov d1, (a0) inc4 a0 mov d1, (a0) inc4 a0 mov d1, (a0) inc4 a0 add -16, a1 cmp 15, a1 lhi .L36: cmp 3, a1 bls .L41 setlb mov d1, (a0) inc4 a0 add -4, a1 cmp 3, a1 lhi .L41: #endif cmp 0, a1 beq .Lepilogue setlb movbu d2, (a0) inc a0 sub 1, a1 lne .Lepilogue: mov d3,a0 ret [d2,d3,a2,a3], 16 .Lend_of_memset: .size _memset, .Lend_of_memset - _memset .section .debug_frame,"",@progbits .Lstart_of_debug_frame: # Common Information Entry (CIE) .4byte .Lend_of_CIE - .Lstart_of_CIE # CIE Length .Lstart_of_CIE: .4byte 0xffffffff # CIE Identifier Tag .byte 0x1 # CIE Version .ascii "\0" # CIE Augmentation .uleb128 0x1 # CIE Code Alignment Factor .sleb128 -4 # CIE Data Alignment Factor .byte 0x32 # CIE RA Column .byte 0xc # DW_CFA_def_cfa .uleb128 0x9 .uleb128 0x0 .byte 0xb2 # DW_CFA_offset, column 0x32 .uleb128 0x0 .align 2 .Lend_of_CIE: # Frame Description Entry (FDE) .4byte .Lend_of_FDE - .Lstart_of_FDE # FDE Length .Lstart_of_FDE: .4byte .Lstart_of_debug_frame # FDE CIE offset .4byte _memset # FDE initial location .4byte .Lend_of_memset - _memset # FDE address range .byte 0x4 # DW_CFA_advance_loc4 .4byte .Lend_of_prologue - _memset .byte 0xe # DW_CFA_def_cfa_offset .uleb128 0x4 .byte 0x87 # DW_CFA_offset, column 0x7 .uleb128 0x1 .align 2 .Lend_of_FDE: picolibc-1.7.4/newlib/libc/machine/mn10300/setjmp.S000066400000000000000000000040541414576234500215460ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ .file "setjmp.S" .section .text .align 1 .global _setjmp #ifdef __AM33__ #ifdef __AM33_2__ .am33_2 #else .am33 #endif #endif _setjmp: mov d0,a0 mov d2,(0,a0) mov d3,(4,a0) mov mdr,d1 mov d1,(8,a0) mov a2,(12,a0) mov a3,(16,a0) mov sp,a1 mov a1,(20,a0) #ifdef __AM33__ add 24,a0 mov r4,(a0+) mov r5,(a0+) mov r6,(a0+) mov r7,(a0+) #ifdef __AM33_2__ fmov fs4,(a0+) fmov fs5,(a0+) fmov fs6,(a0+) fmov fs7,(a0+) fmov fs8,(a0+) fmov fs9,(a0+) fmov fs10,(a0+) fmov fs11,(a0+) fmov fs12,(a0+) fmov fs13,(a0+) fmov fs14,(a0+) fmov fs15,(a0+) fmov fs16,(a0+) fmov fs17,(a0+) fmov fs18,(a0+) fmov fs19,(a0+) #endif #endif sub d0,d0 rets .global _longjmp _longjmp: mov d0,a0 mov (8,a0),d2 mov d2,mdr mov (0,a0),d2 mov (4,a0),d3 mov (12,a0),a2 mov (16,a0),a3 mov (20,a0),a1 mov a1,sp #ifdef __AM33__ add 24,a0 mov (a0+),r4 mov (a0+),r5 mov (a0+),r6 mov (a0+),r7 #ifdef __AM33_2__ fmov (a0+),fs4 fmov (a0+),fs5 fmov (a0+),fs6 fmov (a0+),fs7 fmov (a0+),fs8 fmov (a0+),fs9 fmov (a0+),fs10 fmov (a0+),fs11 fmov (a0+),fs12 fmov (a0+),fs13 fmov (a0+),fs14 fmov (a0+),fs15 fmov (a0+),fs16 fmov (a0+),fs17 fmov (a0+),fs18 fmov (a0+),fs19 #endif #endif cmp 0,d1 bne L1 mov 1,d1 L1: mov d1,d0 retf [],0 picolibc-1.7.4/newlib/libc/machine/mn10300/strchr.S000066400000000000000000000054151414576234500215530ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ .file "strchr.S" .section .text .global _strchr .type _strchr,@function _strchr: movm [d2,d3,a2,a3],(sp) add -12,sp .Lend_of_prologue: mov d0,a1 movbu d1,(7,sp) #ifndef __OPTIMIZE_SIZE__ btst 3,d0 bne .L20 clr d0 setlb mov sp,a2 mov d0,d3 add d3,a2 mov a2,a0 add 12,a0 movbu (7,sp),d3 movbu d3,(-4,a0) inc d0 cmp 3,d0 lls mov a1,a0 mov -16843009,a1 mov (a0),d2 mov a1,d1 add d2,d1 mov d2,d0 not d0 and d0,d1 mov -2139062144,d3 mov d3,(0,sp) btst -2139062144,d1 bne .L27 jmp .L38 .L28: inc4 a0 mov (a0),d2 mov a1,d1 add d2,d1 mov d2,d0 not d0 and d0,d1 mov (0,sp),d3 and d3,d1 bne .L27 .L38: mov (8,sp),d0 xor d2,d0 mov a1,d1 add d0,d1 not d0 and d0,d1 and d3,d1 beq .L28 .L27: mov a0,a1 .L20: #endif movbu (a1),d0 cmp 0,d0 beq .L32 movbu (7,sp),d1 setlb cmp d1,d0 beq .L36 inc a1 movbu (a1),d0 cmp 0,d0 lne .L32: movbu (7,sp),d0 movbu (a1),d3 cmp d0,d3 beq .L36 mov 0,a0 jmp .Lepilogue .L36: mov a1,a0 .Lepilogue: ret [d2,d3,a2,a3],28 .Lend_of_strchr: .size _strchr, .Lend_of_strchr - _strchr .section .debug_frame,"",@progbits .Lstart_of_debug_frame: # Common Information Entry (CIE) .4byte .Lend_of_CIE - .Lstart_of_CIE # CIE Length .Lstart_of_CIE: .4byte 0xffffffff # CIE Identifier Tag .byte 0x1 # CIE Version .ascii "\0" # CIE Augmentation .uleb128 0x1 # CIE Code Alignment Factor .sleb128 -4 # CIE Data Alignment Factor .byte 0x32 # CIE RA Column .byte 0xc # DW_CFA_def_cfa .uleb128 0x9 .uleb128 0x0 .byte 0xb2 # DW_CFA_offset, column 0x32 .uleb128 0x0 .align 2 .Lend_of_CIE: # Frame Description Entry (FDE) .4byte .Lend_of_FDE - .Lstart_of_FDE # FDE Length .Lstart_of_FDE: .4byte .Lstart_of_debug_frame # FDE CIE offset .4byte _strchr # FDE initial location .4byte .Lend_of_strchr - _strchr # FDE address range .byte 0x4 # DW_CFA_advance_loc4 .4byte .Lend_of_prologue - _strchr .byte 0xe # DW_CFA_def_cfa_offset .uleb128 0x4 .byte 0x87 # DW_CFA_offset, column 0x7 .uleb128 0x1 .align 2 .Lend_of_FDE: picolibc-1.7.4/newlib/libc/machine/mn10300/strcmp.S000066400000000000000000000046011414576234500215520ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ .file "strcmp.S" .section .text .global _strcmp .type _strcmp,@function _strcmp: movm [d2,d3,a2,a3],(sp) .Lend_of_prologue: mov d0,a0 mov d1,a1 #ifndef __OPTIMIZE_SIZE__ or d1,d0 btst 3,d0 bne .L11 mov (a0),d1 mov (a1),d0 cmp d0,d1 bne .L11 mov -16843009,d3 setlb mov (a0),d0 mov d3,d1 add d0,d1 not d0 and d0,d1 and -2139062144,d1 beq .L6 clr d0 jmp .Lepilogue .L6: inc4 a0 inc4 a1 mov (a0),d1 mov (a1),d0 cmp d0,d1 leq .L11: #endif setlb movbu (a1),d2 movbu (a0),d0 cmp 0,d0 beq .L9 cmp d2,d0 bne .L9 inc a0 inc a1 lra .L9: sub d2,d0 .Lepilogue: ret [d2,d3,a2,a3],16 .Lend_of_strcmp: .size _strcmp, .Lend_of_strcmp - _strcmp .section .debug_frame,"",@progbits .Lstart_of_debug_frame: # Common Information Entry (CIE) .4byte .Lend_of_CIE - .Lstart_of_CIE # CIE Length .Lstart_of_CIE: .4byte 0xffffffff # CIE Identifier Tag .byte 0x1 # CIE Version .ascii "\0" # CIE Augmentation .uleb128 0x1 # CIE Code Alignment Factor .sleb128 -4 # CIE Data Alignment Factor .byte 0x32 # CIE RA Column .byte 0xc # DW_CFA_def_cfa .uleb128 0x9 .uleb128 0x0 .byte 0xb2 # DW_CFA_offset, column 0x32 .uleb128 0x0 .align 2 .Lend_of_CIE: # Frame Description Entry (FDE) .4byte .Lend_of_FDE - .Lstart_of_FDE # FDE Length .Lstart_of_FDE: .4byte .Lstart_of_debug_frame # FDE CIE offset .4byte _strcmp # FDE initial location .4byte .Lend_of_strcmp - _strcmp # FDE address range .byte 0x4 # DW_CFA_advance_loc4 .4byte .Lend_of_prologue - _strcmp .byte 0xe # DW_CFA_def_cfa_offset .uleb128 0x4 .byte 0x87 # DW_CFA_offset, column 0x7 .uleb128 0x1 .align 2 .Lend_of_FDE: picolibc-1.7.4/newlib/libc/machine/mn10300/strcpy.S000066400000000000000000000045631414576234500215750ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ .file "strcpy.S" .section .text .global _strcpy .type _strcpy,@function _strcpy: movm [d2,d3,a2,a3],(sp) .Lend_of_prologue: mov d0,d3 mov d1,a0 mov d3,a1 mov a0,d0 #ifndef __OPTIMIZE_SIZE__ or d3,d0 btst 3,d0 bne .L2 mov (a0),d0 mov -16843009,a2 mov a2,d1 add d0,d1 not d0 and d0,d1 mov -2139062144,d2 btst -2139062144,d1 bne .L2 setlb mov (a0),d0 mov d0,(a1) inc4 a0 inc4 a1 mov (a0),d0 mov a2,d1 add d0,d1 not d0 and d0,d1 and d2,d1 leq .L2: #endif setlb movbu (a0),d0 movbu d0,(a1) inc a0 inc a1 cmp 0,d0 lne mov d3,a0 .Lepilogue: ret [d2,d3,a2,a3],16 .Lend_of_strcpy: .size _strcpy, .Lend_of_strcpy - _strcpy .section .debug_frame,"",@progbits .Lstart_of_debug_frame: # Common Information Entry (CIE) .4byte .Lend_of_CIE - .Lstart_of_CIE # CIE Length .Lstart_of_CIE: .4byte 0xffffffff # CIE Identifier Tag .byte 0x1 # CIE Version .ascii "\0" # CIE Augmentation .uleb128 0x1 # CIE Code Alignment Factor .sleb128 -4 # CIE Data Alignment Factor .byte 0x32 # CIE RA Column .byte 0xc # DW_CFA_def_cfa .uleb128 0x9 .uleb128 0x0 .byte 0xb2 # DW_CFA_offset, column 0x32 .uleb128 0x0 .align 2 .Lend_of_CIE: # Frame Description Entry (FDE) .4byte .Lend_of_FDE - .Lstart_of_FDE # FDE Length .Lstart_of_FDE: .4byte .Lstart_of_debug_frame # FDE CIE offset .4byte _strcpy # FDE initial location .4byte .Lend_of_strcpy - _strcpy # FDE address range .byte 0x4 # DW_CFA_advance_loc4 .4byte .Lend_of_prologue - _strcpy .byte 0xe # DW_CFA_def_cfa_offset .uleb128 0x4 .byte 0x87 # DW_CFA_offset, column 0x7 .uleb128 0x1 .align 2 .Lend_of_FDE: picolibc-1.7.4/newlib/libc/machine/mn10300/strlen.S000066400000000000000000000044641414576234500215600ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ .file "strlen.S" .section .text .global _strlen .type _strlen,@function _strlen: movm [d2,d3,a2,a3],(sp) .Lend_of_prologue: mov d0,a0 mov a0,a2 #ifndef __OPTIMIZE_SIZE__ btst 3,d0 bne .L21 mov (a0),d0 mov -16843009,a1 mov a1,d1 add d0,d1 not d0 and d0,d1 mov -2139062144,d2 btst -2139062144,d1 bne .L21 setlb inc4 a0 mov (a0),d0 mov a1,d1 add d0,d1 not d0 and d0,d1 and d2,d1 leq jmp .L21 #endif .L19: inc a0 .L21: movbu (a0),d3 cmp 0,d3 bne .L19 sub a2,a0 mov a0,d0 .Lepilogue: ret [d2,d3,a2,a3],16 .Lend_of_strlen: .size _strlen, .Lend_of_strlen - _strlen .section .debug_frame,"",@progbits .Lstart_of_debug_frame: # Common Information Entry (CIE) .4byte .Lend_of_CIE - .Lstart_of_CIE # CIE Length .Lstart_of_CIE: .4byte 0xffffffff # CIE Identifier Tag .byte 0x1 # CIE Version .ascii "\0" # CIE Augmentation .uleb128 0x1 # CIE Code Alignment Factor .sleb128 -4 # CIE Data Alignment Factor .byte 0x32 # CIE RA Column .byte 0xc # DW_CFA_def_cfa .uleb128 0x9 .uleb128 0x0 .byte 0xb2 # DW_CFA_offset, column 0x32 .uleb128 0x0 .align 2 .Lend_of_CIE: # Frame Description Entry (FDE) .4byte .Lend_of_FDE - .Lstart_of_FDE # FDE Length .Lstart_of_FDE: .4byte .Lstart_of_debug_frame # FDE CIE offset .4byte _strlen # FDE initial location .4byte .Lend_of_strlen - _strlen # FDE address range .byte 0x4 # DW_CFA_advance_loc4 .4byte .Lend_of_prologue - _strlen .byte 0xe # DW_CFA_def_cfa_offset .uleb128 0x4 .byte 0x87 # DW_CFA_offset, column 0x7 .uleb128 0x1 .align 2 .Lend_of_FDE: picolibc-1.7.4/newlib/libc/machine/moxie/000077500000000000000000000000001414576234500202405ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/moxie/setjmp.S000066400000000000000000000036731414576234500216770ustar00rootroot00000000000000/* A setjmp.c for Moxie Copyright (C) 2009, 2019 Anthony Green The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply. */ # setjmp/longjmp for moxie. The jmpbuf looks like this: # # Register jmpbuf offset # $r6 0x00 # $r7 0x04 # $r8 0x08 # $r9 0x0c # $r10 0x10 # $fp 0x14 # $sp 0x18 # stack frame fp 0x1c # stack frame ra 0x20 # stack frame sc 0x25 .text .global setjmp .type setjmp,@function setjmp: st.l ($r0), $r6 sto.l 0x04($r0), $r7 sto.l 0x08($r0), $r8 sto.l 0x0c($r0), $r9 sto.l 0x10($r0), $r10 sto.l 0x14($r0), $sp sto.l 0x18($r0), $fp ldo.l $r1, 0x00($fp) sto.l 0x1c($r0), $r1 ldo.l $r1, 0x04($fp) sto.l 0x20($r0), $r1 ldo.l $r1, 0x08($fp) sto.l 0x24($r0), $r1 xor $r0, $r0 ret .Lend1: .size setjmp,.Lend1-setjmp .global longjmp .type longjmp,@function longjmp: ldo.l $r6, 0x00($r0) ldo.l $r7, 0x04($r0) ldo.l $r8, 0x08($r0) ldo.l $r9, 0x0c($r0) ldo.l $r10, 0x10($r0) ldo.l $sp, 0x14($r0) ldo.l $fp, 0x18($r0) ldo.l $r2, 0x1c($r0) sto.l 0x0($fp), $r2 ldo.l $r2, 0x20($r0) sto.l 0x4($fp), $r2 ldo.l $r2, 0x24($r0) sto.l 0x8($fp), $r2 ldo.l $r2, 0x08($r0) mov $r0, $r1 xor $r2, $r2 cmp $r0, $r2 beq .Lreturn1 ret .Lreturn1: inc $r0, 1 ret .Lend2: .size longjmp,.Lend2-longjmp picolibc-1.7.4/newlib/libc/machine/msp430/000077500000000000000000000000001414576234500201455ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/msp430/setjmp.S000066400000000000000000000045321414576234500215770ustar00rootroot00000000000000/* Copyright (c) 2013 Red Hat, Inc. All rights reserved. This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the BSD License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. A copy of this license is available at http://www.opensource.org/licenses. Any Red Hat trademarks that are incorporated in the source code or documentation are not subject to the BSD License and may only be used or replicated with the express permission of Red Hat, Inc. */ # setjmp/longjmp for msp430. The jmpbuf looks like this: # # Register Jmpbuf offset # small large # r0 (pc) 0x00 0x00 # r1 (sp) 0x02 0x04 # r4 0x04 0x08 # r5 0x06 0x0c # r6 0x08 0x10 # r7 0x0a 0x14 # r8 0x0c 0x18 # r9 0x0e 0x1c # r10 0x10 0x20 .text .global setjmp setjmp: ; Upon entry r12 points to the jump buffer. ; Returns 0 to caller. #if defined __MSP430X_LARGE__ mova @r1, r13 mova r13, 0(r12) mova r1, 4(r12) mova r4, 8(r12) mova r5, 12(r12) mova r6, 16(r12) mova r7, 20(r12) mova r8, 24(r12) mova r9, 28(r12) mova r10, 32(r12) clr r12 reta #else ;; Get the return address off the stack mov.w @r1, r13 mov.w r13, 0(r12) mov.w r1, 2(r12) mov.w r4, 4(r12) mov.w r5, 6(r12) mov.w r6, 8(r12) mov.w r7, 10(r12) mov.w r8, 12(r12) mov.w r9, 14(r12) mov.w r10, 16(r12) clr r12 ret #endif .size setjmp , . - setjmp .global longjmp longjmp: ; Upon entry r12 points to the jump buffer and ; r13 contains the value to be returned by setjmp. #if defined __MSP430X_LARGE__ mova @r12+, r14 mova @r12+, r1 mova @r12+, r4 mova @r12+, r5 mova @r12+, r6 mova @r12+, r7 mova @r12+, r8 mova @r12+, r9 mova @r12+, r10 #else mov.w @r12+, r14 mov.w @r12+, r1 mov.w @r12+, r4 mov.w @r12+, r5 mov.w @r12+, r6 mov.w @r12+, r7 mov.w @r12+, r8 mov.w @r12+, r9 mov.w @r12+, r10 #endif ; If caller attempts to return 0, return 1 instead. cmp.w #0, r13 jne .Lnot_zero mov.w #1, r13 .Lnot_zero: mov.w r13, r12 #if defined __MSP430X_LARGE__ adda #4, r1 mova r14, r0 #else add.w #2, r1 mov.w r14, r0 #endif .size longjmp , . - longjmp picolibc-1.7.4/newlib/libc/machine/msp430/tiny-printf.c000066400000000000000000000203051414576234500225740ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * This code is derived from software contributed to Berkeley by * Chris Torek. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* * Copyright (c) 2012-2014 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if defined(LIBC_SCCS) && !defined(lint) /*static char *sccsid = "from: @(#)vfprintf.c 5.50 (Berkeley) 12/16/92";*/ static char *rcsid = "$Id$"; #endif /* LIBC_SCCS and not lint */ #include <_ansi.h> #include #include #include #include #include #include #include #include #include #include #include #include "../../stdio/local.h" #include "../../stdlib/local.h" #include "../../stdio/fvwrite.h" #include "../../stdio/nano-vfprintf_local.h" /* Bypass *putc* fns called by the default _sfputs_r to save code size. Among other things, this means there is no buffering of the string before it is sent to <>, but <> does its own buffering so we won't lose chars when buf is larger than sizeof(CIOBUF). */ int __tiny__sfputs_r (struct _reent *ptr, FILE *fp, const char *buf, size_t len) { return write (1, buf, len); } /* VFPRINTF_R from nano-vfprintf.c but: - No support for reentrancy - No support for streams - __SINGLE_THREAD__ assumed. - No STRING_ONLY variant (either way the formatted string would end up being sent to <> via <<__tiny__sfputs_r>>. Basically, format the string as normal, and send it to write. */ int __tiny_vfprintf_r (struct _reent *data, FILE * fp, const char *fmt0, va_list ap) { register char *fmt; /* Format string. */ register int n, m; /* Handy integers (short term usage). */ register char *cp; /* Handy char pointer (short term usage). */ const char *flag_chars; struct _prt_data_t prt_data; /* All data for decoding format string. */ va_list ap_copy; /* Output function pointer. */ int (*pfunc)(struct _reent *, FILE *, const char *, size_t len); pfunc = __tiny__sfputs_r; fmt = (char *)fmt0; prt_data.ret = 0; prt_data.blank = ' '; prt_data.zero = '0'; /* GCC PR 14577 at https://gcc.gnu.org/bugzilla/show_bug.cgi?id=14557 */ va_copy (ap_copy, ap); /* Scan the format for conversions (`%' character). */ for (;;) { cp = fmt; while (*fmt != '\0' && *fmt != '%') fmt += 1; if ((m = fmt - cp) != 0) { PRINT (cp, m); prt_data.ret += m; } if (*fmt == '\0') goto done; fmt++; /* Skip over '%'. */ prt_data.flags = 0; prt_data.width = 0; prt_data.prec = -1; prt_data.dprec = 0; prt_data.l_buf[0] = '\0'; #ifdef FLOATING_POINT prt_data.lead = 0; #endif /* The flags. */ /* * ``Note that 0 is taken as a flag, not as the * beginning of a field width.'' * -- ANSI X3J11 */ flag_chars = "#-0+ "; for (; cp = memchr (flag_chars, *fmt, 5); fmt++) prt_data.flags |= (1 << (cp - flag_chars)); if (prt_data.flags & SPACESGN) prt_data.l_buf[0] = ' '; /* * ``If the space and + flags both appear, the space * flag will be ignored.'' * -- ANSI X3J11 */ if (prt_data.flags & PLUSSGN) prt_data.l_buf[0] = '+'; /* The width. */ if (*fmt == '*') { /* * ``A negative field width argument is taken as a * - flag followed by a positive field width.'' * -- ANSI X3J11 * They don't exclude field widths read from args. */ prt_data.width = GET_ARG (n, ap_copy, int); if (prt_data.width < 0) { prt_data.width = -prt_data.width; prt_data.flags |= LADJUST; } fmt++; } else { for (; is_digit (*fmt); fmt++) prt_data.width = 10 * prt_data.width + to_digit (*fmt); } /* The precision. */ if (*fmt == '.') { fmt++; if (*fmt == '*') { fmt++; prt_data.prec = GET_ARG (n, ap_copy, int); if (prt_data.prec < 0) prt_data.prec = -1; } else { prt_data.prec = 0; for (; is_digit (*fmt); fmt++) prt_data.prec = 10 * prt_data.prec + to_digit (*fmt); } } /* The length modifiers. */ flag_chars = "hlL"; if ((cp = memchr (flag_chars, *fmt, 3)) != NULL) { prt_data.flags |= (SHORTINT << (cp - flag_chars)); fmt++; } /* The conversion specifiers. */ prt_data.code = *fmt++; cp = memchr ("efgEFG", prt_data.code, 6); #ifdef FLOATING_POINT /* If cp is not NULL, we are facing FLOATING POINT NUMBER. */ if (cp) { /* Consume floating point argument if _printf_float is not linked. */ if (_printf_float == NULL) { if (prt_data.flags & LONGDBL) GET_ARG (N, ap_copy, _LONG_DOUBLE); else GET_ARG (N, ap_copy, double); } else n = _printf_float (data, &prt_data, fp, pfunc, &ap_copy); } else #endif n = _printf_i (data, &prt_data, fp, pfunc, &ap_copy); if (n == -1) goto error; prt_data.ret += n; } done: error: va_end (ap_copy); return (__sferror (fp) ? EOF : prt_data.ret); } int __wrap_printf (const char *__restrict fmt, ...) { int ret; va_list ap; struct _reent *ptr = _REENT; va_start (ap, fmt); ret = __tiny_vfprintf_r (ptr, _stdout_r (ptr), fmt, ap); va_end (ap); return ret; } int printf (const char *__restrict fmt, ...) __attribute__ ((weak, alias ("__wrap_printf"))); picolibc-1.7.4/newlib/libc/machine/msp430/tiny-puts.c000066400000000000000000000017471414576234500222760ustar00rootroot00000000000000/* Copyright (c) 2014-2017 Mentor Graphics. The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply. */ #include #include #include #include int write (int fd, const char *buf, int len); int __wrap_puts (const char * s) { int res = write (1, s, strlen (s)); if (res == EOF) { write (1, "\n", 1); return EOF; } return write (1, "\n", 1); } int puts (const char * s) __attribute__ ((weak, alias ("__wrap_puts"))); picolibc-1.7.4/newlib/libc/machine/mt/000077500000000000000000000000001414576234500175375ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/mt/setjmp.S000066400000000000000000000030021414576234500211600ustar00rootroot00000000000000/* Copyright (c) 2005 Aldy Hernandez */ # setjmp/longjmp for mt. # # The jmpbuf looks like this: # # Register jmpbuf offset # R0 --- -- # R1 0x4 4 # R2 0x8 8 # R3 0xc 12 # R4 0x10 16 # R5 0x14 20 # R6 0x18 24 # R7 0x1c 28 # R8 0x20 32 # R9 ---- -- # R10 ---- -- # R11 0x2c 44 # R12 0x30 48 # R13 0x34 52 # R14 0x38 56 # R15 0x3c 60 # # R1 contains the pointer to jmpbuf .text .global setjmp .type setjmp ,@function setjmp: stw r1, r1, #4 or r0, r0, r0 stw r2, r1, #8 or r0, r0, r0 stw r3, r1, #12 or r0, r0, r0 stw r4, r1, #16 or r0, r0, r0 stw r5, r1, #20 or r0, r0, r0 stw r6, r1, #24 or r0, r0, r0 stw r7, r1, #28 or r0, r0, r0 stw r8, r1, #32 or r0, r0, r0 stw r11, r1, #44 or r0, r0, r0 stw r12, r1, #48 or r0, r0, r0 stw r13, r1, #52 or r0, r0, r0 stw r14, r1, #56 or r0, r0, r0 stw r15, r1, #60 jal r0, r14 addi r11, r0, #0 .Lend1: .size setjmp,.Lend1-setjmp .global longjmp .type longjmp,@function longjmp: or r9, r1, r1 or r11, r2, r2 ldw r1, r1, #4 or r0, r0, r0 ldw r2, r1, #8 or r0, r0, r0 ldw r3, r1, #12 or r0, r0, r0 ldw r4, r1, #16 or r0, r0, r0 ldw r5, r1, #20 or r0, r0, r0 ldw r6, r1, #24 or r0, r0, r0 ldw r7, r1, #28 or r0, r0, r0 ldw r8, r1, #32 or r0, r0, r0 ldw r12, r1, #48 or r0, r0, r0 ldw r13, r1, #52 or r0, r0, r0 ldw r14, r1, #56 or r0, r0, r0 ldw r15, r1, #60 brne r0, r11, .L01 or r0, r0, r0 addi r11, r0, #1 .L01: jal r0, r14 or r0, r0, r0 .Lend2: .size longjmp,.Lend2-longjmp2 picolibc-1.7.4/newlib/libc/machine/nds32/000077500000000000000000000000001414576234500200505ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/nds32/abort.c000066400000000000000000000041151414576234500213240ustar00rootroot00000000000000/* Copyright (c) 2013 Andes Technology Corporation. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of the company may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>---abnormal termination of a program INDEX abort SYNOPSIS #include void abort(void); DESCRIPTION Use <> to signal that your program has detected a condition it cannot deal with. Normally, <> ends your program's execution. In general implementation, <> raises the exception <>. But for nds32 target, currently it is not necessary for MCU platform. We can just call <<_exit>> to terminate program. RETURNS <> does not return to its caller. PORTABILITY ANSI C requires <>. Supporting OS subroutines required: <<_exit>>. */ #include void abort (void) { while (1) { _exit (1); } } picolibc-1.7.4/newlib/libc/machine/nds32/memcpy.S000066400000000000000000000052551414576234500214750ustar00rootroot00000000000000/* Copyright (c) 2013 Andes Technology Corporation. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of the company may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Function: memcpy - copy memory regions Syntax: void *memcpy(void *s1, const void *s2, size_t n); Description: The memcpy function copies n characters from the object pointed to by s2 into the object pointed to by s1. If copying takes place between objects that overlap, the behavior is undefined. Return value: The memcpy function returns the value of s1. */ .text .align 2 .globl memcpy .type memcpy, @function memcpy: /* Corner cases. If *s1 equals *s2 or size_t is zero, just go return. */ beq $r0, $r1, .Lend_memcpy beqz $r2, .Lend_memcpy /* Keep *s1 as return value. Set $r3 as how many words to copy. Set $r2 as how many bytes are less than a word. */ move $r5, $r0 srli $r3, $r2, 2 andi $r2, $r2, 3 beqz $r3, .Lbyte_copy .Lword_copy: /* Do the word copy $r3 times. Then, do the byte copy $r2 times. */ lmw.bim $r4, [$r1], $r4, 0 addi $r3, $r3, -1 smw.bim $r4, [$r5], $r4, 0 bnez $r3, .Lword_copy /* Loop again ? */ beqz $r2, .Lend_memcpy /* Fall THRU or go return ? */ .Lbyte_copy: /* Do the byte copy $r2 times. */ lbi.bi $r4, [$r1], 1 addi $r2, $r2, -1 sbi.bi $r4, [$r5], 1 bnez $r2, .Lbyte_copy /* Loop again ? */ .Lend_memcpy: ret .size memcpy, .-memcpy picolibc-1.7.4/newlib/libc/machine/nds32/memset.S000066400000000000000000000057231414576234500214750ustar00rootroot00000000000000/* Copyright (c) 2013 Andes Technology Corporation. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of the company may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Function: memset - fill memory with a constant byte Syntax: void *memset(void *s, int c, size_t n); Description: The memset function copies the value of c (converted to an unsigned char) into each of the first n characters of the object pointed to by s. Return value: The memset function returns the value of s. */ .text .align 2 .globl memset .type memset, @function memset: /* Corner case. If n is zero, just go return. */ beqz $r2, .Lend_memset /* Keep $r0 as return value. Set $r4 as how many words to copy. Set $r2 as how many bytes are less than a word. */ move $r5, $r0 srli $r4, $r2, 2 andi $r2, $r2, 3 beqz $r4, .Lbyte_set /* Set $r1 a word-size pattern composed of the value of c (converted to an unsigned char). Convert ??????ab to abababab. */ andi $r1, $r1, 0xff /* Set $r1 = 000000ab. */ slli $r3, $r1, 8 /* Set $r3 = 0000ab00. */ or $r1, $r1, $r3 /* Set $r1 = 0000abab. */ slli $r3, $r1, 16 /* Set $r3 = abab0000. */ or $r1, $r1, $r3 /* Set $r1 = abababab. */ .Lword_set: /* Do the word set $r4 times. Then, do the byte set $r2 times. */ addi $r4, $r4, -1 smw.bim $r1, [$r5], $r1 /* Set a word-size. */ bnez $r4, .Lword_set /* Loop again ? */ beqz $r2, .Lend_memset /* Fall THRU or go return ? */ .Lbyte_set: /* Do the byte set $r2 times. */ addi $r2, $r2, -1 sbi.p $r1, [$r5], 1 /* Set a byte-size. */ bnez $r2, .Lbyte_set /* Loop again ? */ .Lend_memset: ret .size memset, .-memset picolibc-1.7.4/newlib/libc/machine/nds32/setjmp.S000066400000000000000000000115561414576234500215060ustar00rootroot00000000000000/* Copyright (c) 2013 Andes Technology Corporation. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of the company may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The setjmp/longjmp for nds32. The usage of thirty-two 32-bit General Purpose Registers (GPR): $r28 : $fp $r29 : $gp $r30 : $lp $r31 : $sp caller-save registers: $r0 ~ $r5, $r16 ~ $r23 callee-save registers: $r6 ~ $r10, $r11 ~ $r14 reserved for assembler : $r15 reserved for other use : $r24, $r25, $r26, $r27 Save all callee-save registers and $fp, $gp, $lp and $sp is enough in theory. For debugging issue, the layout of jum_buf in here should be in sync with GDB. The $r16 ~ $r19 are used to store D0/D1, keep them for backward-compatible. */ /* int setjmp(jmp_buf env); */ .text .align 2 .global setjmp .type setjmp, @function setjmp: #if __NDS32_REDUCED_REGS__ smw.bim $r6, [$r0], $r10, #0b0000 addi $r0, $r0, #32 /* Leave room to keep jum_buf all the same. */ smw.bim $r31, [$r0], $r31, #0b1111 #else smw.bim $r6, [$r0], $r14, #0b0000 smw.bim $r16, [$r0], $r19, #0b1111 #endif #if __NDS32_EXT_FPU_SP__ || __NDS32_EXT_FPU_DP__ /* Extract $fpcfg.freg (b[3:2]), then save into jmp_buf. */ fmfcfg $r2 slli $r2, $r2, #28 srli $r2, $r2, #30 swi.bi $r2, [$r0], #4 /* Make sure $r0 is double-word-aligned. */ addi $r0, $r0, #7 bitci $r0, $r0, #7 /* Case switch according to $fpcfg.freg */ beqz $r2, .LCFG0_save /* Branch if $fpcfg.freg = 0b00. */ xori $r15, $r2, #0b10 beqz $r15, .LCFG2_save /* Branch $fpcfg.freg = 0b10. */ srli $r2, $r2, #0b01 beqz $r2, .LCFG1_save /* Branch if $fpcfg.freg = 0b01. */ /* Fall-through if $fpcfg.freg = 0b11. */ .LCFG3_save: fsdi.bi $fd31, [$r0], #8 fsdi.bi $fd29, [$r0], #8 fsdi.bi $fd27, [$r0], #8 fsdi.bi $fd25, [$r0], #8 fsdi.bi $fd23, [$r0], #8 fsdi.bi $fd21, [$r0], #8 fsdi.bi $fd19, [$r0], #8 fsdi.bi $fd17, [$r0], #8 .LCFG2_save: fsdi.bi $fd15, [$r0], #8 fsdi.bi $fd13, [$r0], #8 fsdi.bi $fd11, [$r0], #8 fsdi.bi $fd9, [$r0], #8 .LCFG1_save: fsdi.bi $fd7, [$r0], #8 fsdi.bi $fd5, [$r0], #8 .LCFG0_save: fsdi.bi $fd3, [$r0], #8 #endif /* Set return value to zero. */ movi $r0, 0 ret .size setjmp, .-setjmp /* void longjmp(jmp_buf env, int val); */ .text .align 2 .global longjmp .type longjmp, @function longjmp: #if __NDS32_REDUCED_REGS__ lmw.bim $r6, [$r0], $r10, #0b0000 addi $r0, $r0, #32 lmw.bim $r31, [$r0], $r31, #0b1111 #else lmw.bim $r6, [$r0], $r14, #0b0000 lmw.bim $r16, [$r0], $r19, #0b1111 #endif #if __NDS32_EXT_FPU_SP__ || __NDS32_EXT_FPU_DP__ /* Restore value of $fpcfg.freg (b[3:2]). */ lwi.bi $r2, [$r0], #4 /* Make sure $r0 is double-word-aligned. */ addi $r0, $r0, #7 bitci $r0, $r0, #7 /* Case switch according to $fpcfg.freg */ beqz $r2, .LCFG0_restore /* Branch if $fpcfg.freg = 0b00. */ xori $r15, $r2, #0b10 beqz $r15, .LCFG2_restore /* Branch $fpcfg.freg = 0b10. */ srli $r2, $r2, #0b01 beqz $r2, .LCFG1_restore /* Branch if $fpcfg.freg = 0b01. */ /* Fall-through if $fpcfg.freg = 0b11. */ .LCFG3_restore: fldi.bi $fd31, [$r0], #8 fldi.bi $fd29, [$r0], #8 fldi.bi $fd27, [$r0], #8 fldi.bi $fd25, [$r0], #8 fldi.bi $fd23, [$r0], #8 fldi.bi $fd21, [$r0], #8 fldi.bi $fd19, [$r0], #8 fldi.bi $fd17, [$r0], #8 .LCFG2_restore: fldi.bi $fd15, [$r0], #8 fldi.bi $fd13, [$r0], #8 fldi.bi $fd11, [$r0], #8 fldi.bi $fd9, [$r0], #8 .LCFG1_restore: fldi.bi $fd7, [$r0], #8 fldi.bi $fd5, [$r0], #8 .LCFG0_restore: fldi.bi $fd3, [$r0], #8 #endif /* Set val as return value. If the value val is 0, 1 will be returned instead. */ movi $r0, 1 cmovn $r0, $r1, $r1 /* r0=(r1!=0)? r1: r0 */ ret .size longjmp, .-longjmp picolibc-1.7.4/newlib/libc/machine/nds32/strcmp.S000066400000000000000000000066461414576234500215200ustar00rootroot00000000000000/* Copyright (c) 2013 Andes Technology Corporation. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of the company may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Function: strcmp - compare two strings. Syntax: int strcmp(const char *s1, const char *s2); Description: This function compares the two strings s1 and s2. It returns an integer less than, equal to, or greater than zero if s1 is found, respectively, to be less than, to match, or be greater than s2. Return value: strcmp returns an integer less than, equal to, or greater than zero if s1 (or the first n bytes thereof) is found, respectively, to be less than, to match, or be greater than s2. */ .text .align 2 .globl strcmp .type strcmp, @function strcmp: /* If s1 or s2 are unaligned, then compare bytes. */ or $r5, $r1, $r0 andi $r5, $r5, #3 bnez $r5, .Lbyte_mode /* If s1 and s2 are word-aligned, compare them a word at a time. */ lwi $r5, [$r0+(0)] lwi $r3, [$r1+(0)] bne $r5, $r3, .Lbyte_mode /* A difference was detected, so search bytewise. */ /* It's more efficient to set bit mask outside the word_mode loop. */ sethi $r4, hi20(0xFEFEFEFF) /* Set $r4 as -0x01010101. */ ori $r4, $r4, lo12(0xFEFEFEFF) sethi $r2, hi20(0x80808080) ori $r2, $r2, lo12(0x80808080) b .Ldetect_null .align 2 .Lword_mode: lmw.aim $r5, [$r0], $r5 lmw.aim $r3, [$r1], $r3 bne $r5, $r3, .Lbyte_mode .Ldetect_null: /* #define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) DETECTNULL returns nonzero if (long)X contains a NULL byte. */ nor $r3, $r5, $r5 /* r3 = ~(X) */ add $r5, $r5, $r4 /* r2 = ((X) - 0x01010101) */ and $r5, $r5, $r3 /* r2 = ~(X) & ((X) - 0x01010101) */ and $r5, $r5, $r2 /* r2= r2 & 0x80808080 */ beqz $r5, .Lword_mode /* No NULL byte, compare next word. */ /* To get here, *a1 == *a2, thus if we find a null in *a1, then the strings must be equal, so return zero. */ movi $r0, #0 ret .Lbyte_mode: /* Byte-mode compare. */ lbi.bi $r5, [$r0], #1 lbi.bi $r3, [$r1], #1 bne $r5, $r3, 1f /* Mismatch, done. */ bnez $r5, .Lbyte_mode 1: sub $r0, $r5, $r3 ret .size strcmp, .-strcmp picolibc-1.7.4/newlib/libc/machine/nds32/strcpy.S000066400000000000000000000054571414576234500215330ustar00rootroot00000000000000/* Copyright (c) 2013 Andes Technology Corporation. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of the company may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Function: strcpy - copy a string. Syntax: char *strcpy(char *dest, const char *src); Description: This function copies the string pointed to by src into the array point to by dest (include the teminating null character). Return value: strcpy returns the dest as given. */ .text .align 2 .globl strcpy .type strcpy, @function strcpy: move $r3, $r0 /* Keep r0 as reture value. */ /* If SRC or DEST is unaligned, then copy bytes. */ or $r2, $r1, $r0 andi $r2, $r2, #3 bnez $r2, .Lbyte_mode .Lword_mode: /* SRC and DEST are both "long int" aligned, try to do "long int" sized copies. */ /* #define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) DETECTNULL returns nonzero if (long)X contains a NULL byte. */ lwi $r2, [$r1+(0)] /* r2 is X */ sethi $r4, hi20(0xFEFEFEFF) ori $r4, $r4, lo12(0xFEFEFEFF) add $r4, $r2, $r4 /* r4 = ((X) - 0x01010101) */ nor $r5, $r2, $r2 /* r5 = ~(X) */ and $r4, $r5, $r4 /* r4 = ~(X) & ((X) - 0x01010101) */ sethi $r5, hi20(0x80808080) ori $r5, $r5, lo12(0x80808080) and $r4, $r4, $r5 /* r4 = r4 & 0x80808080 */ bnez $r4, .Lbyte_mode /* Contains a NULL byte. */ swi.bi $r2, [$r3], #4 addi $r1, $r1, #4 b .Lword_mode .Lbyte_mode: lbi.bi $r4, [$r1], #1 /* r4 <- *src++ */ sbi.bi $r4, [$r3], #1 /* r4 -> *dest++ */ bnez $r4, .Lbyte_mode ret .size strcpy, .-strcpy picolibc-1.7.4/newlib/libc/machine/necv70/000077500000000000000000000000001414576234500202215ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/necv70/fastmath.S000066400000000000000000000066471414576234500221710ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ .globl _fast_sin _fast_sin: fsin.l [ap],[ap] mov.d [ap],r0 ret #0 .globl _fast_sinf _fast_sinf: fsin.s [ap],[ap] mov.w [ap],r0 ret #0 .globl _fast_cos _fast_cos: fcos.l [ap],[ap] mov.d [ap],r0 ret #0 .globl _fast_cosf _fast_cosf: fcos.s [ap],[ap] mov.w [ap],r0 ret #0 .globl _fast_tan _fast_tan: ftan.l [ap],[ap] mov.d [ap],r0 ret #0 .globl _fast_tanf _fast_tanf: ftan.s [ap],[ap] mov.w [ap],r0 ret #0 .globl _fast_fabs _fast_fabs: fabs.l [ap],[ap] mov.d [ap],r0 ret #0 .globl _fast_fabsf _fast_fabsf: fabs.s [ap],[ap] mov.w [ap],r0 ret #0 .globl _fast_sqrt _fast_sqrt: fsqrt.l [ap],[ap] mov.d [ap],r0 ret #0 .globl _fast_sqrtf _fast_sqrtf: fsqrt.s [ap],[ap] mov.w [ap],r0 ret #0 .globl _fast_acos _fast_acos: facos.l [ap],[ap] mov.d [ap],r0 ret #0 .globl _fast_acosf _fast_acosf: facos.s [ap],[ap] mov.w [ap],r0 ret #0 .globl _fast_asin _fast_asin: fasin.l [ap],[ap] mov.d [ap],r0 ret #0 .globl _fast_asinf _fast_asinf: fasin.s [ap],[ap] mov.w [ap],r0 ret #0 .globl _fast_atan _fast_atan: fatan.l [ap],[ap] mov.d [ap],r0 ret #0 .globl _fast_atanf _fast_atanf: fatan.s [ap],[ap] mov.w [ap],r0 ret #0 .globl _fast_cosh _fast_cosh: fcosh.l [ap],[ap] mov.d [ap],r0 ret #0 .globl _fast_coshf _fast_coshf: fcosh.s [ap],[ap] mov.w [ap],r0 ret #0 .globl _fast_sinh _fast_sinh: fsin.l [ap],[ap] mov.d [ap],r0 ret #0 .globl _fast_sinhf _fast_sinhf: fsin.s [ap],[ap] mov.w [ap],r0 ret #0 .globl _fast_tanh _fast_tanh: ftanh.l [ap],[ap] mov.d [ap],r0 ret #0 .globl _fast_tanhf _fast_tanhf: ftanh.s [ap],[ap] mov.w [ap],r0 ret #0 .globl _fast_atanh _fast_atanh: fatanh.l [ap],[ap] mov.d [ap],r0 ret #0 .globl _fast_atanhf _fast_atanhf: fatanh.s [ap],[ap] mov.w [ap],r0 ret #0 .globl _fast_exp2 _fast_exp2: fexp2.l [ap],[ap] mov.d [ap],r0 ret #0 .globl _fast_exp2f _fast_exp2f: fexp2.s [ap],[ap] mov.w [ap],r0 ret #0 .globl _fast_exp10 _fast_exp10: fexp10.l [ap],[ap] mov.d [ap],r0 ret #0 .globl _fast_exp10f _fast_exp10f: fexp10.s [ap],[ap] mov.w [ap],r0 ret #0 .globl _fast_expe _fast_expe: fexpe.l [ap],[ap] mov.d [ap],r0 ret #0 .globl _fast_expef _fast_expef: fexpe.s [ap],[ap] mov.w [ap],r0 ret #0 .globl _fast_log2 _fast_log2: flog2.l [ap],[ap] mov.d [ap],r0 ret #0 .globl _fast_log2f _fast_log2f: flog2.s [ap],[ap] mov.w [ap],r0 ret #0 .globl _fast_log10 _fast_log10: flog10.l [ap],[ap] mov.d [ap],r0 ret #0 .globl _fast_log10f _fast_log10f: flog10.s [ap],[ap] mov.w [ap],r0 ret #0 .globl _fast_loge _fast_loge: floge.l [ap],[ap] mov.d [ap],r0 ret #0 .globl _fast_logef _fast_logef: floge.s [ap],[ap] mov.w [ap],r0 ret #0 picolibc-1.7.4/newlib/libc/machine/necv70/machine/000077500000000000000000000000001414576234500216255ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/necv70/machine/registers.h000066400000000000000000000020261414576234500240050ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ typedef struct { int fp_rounding:2; /* fp rounding control */ int integer_rounding:1; /* integer rounding */ int rfu:1; /* reserved */ int fp_trap:5; /* floating point trap bits */ int otm:1; int rfu2:3; int att:3; int rfu3:16; } v60_tkcw_type; picolibc-1.7.4/newlib/libc/machine/necv70/necv70.tex000066400000000000000000000074161414576234500220550ustar00rootroot00000000000000# #Copyright (c) 1990 The Regents of the University of California. #All rights reserved. # #Redistribution and use in source and binary forms are permitted #provided that the above copyright notice and this paragraph are #duplicated in all such forms and that any documentation, #and/or other materials related to such #distribution and use acknowledge that the software was developed #by the University of California, Berkeley. The name of the #University may not be used to endorse or promote products derived #from this software without specific prior written permission. #THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR #IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED #WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. # @node machine,,syscalls,Top @chapter NEC V70 Specific Functions The NEC V70 has machine instructions for fast IEEE floating-point arithmetic, including operations normally provided by the library. When you use the @file{/usr/include/fastmath.h} header file, the names of several library math functions are redefined to call the @code{fastmath} routine (using the corresponding V70 machine instructions) whenever possible. For example, @example #include double sqsin(x) double x; @{ return sin(x*x); @} @end example expands into the code @example @dots{} double sqsin(x) double x; @{ return fast_sin(x*x); @} @end example The library has an entry @code{fast_sin} which uses the machine instruction @code{fsin.l} to perform the operation. Note that the built-in instructions cannot set @code{errno} in the same way that the C coded functions do. Refer to a V70 instruction manual to see how errors are generated and handled. Also, the library provides true @code{float} entry points. The @code{fast_sinf} entry point really performs a @code{fsin.s} operation. Because of this, the instructions are only useful when using code compiled with an ANSI C compiler. The prototypes and definitions for the floating-point versions of the math library routines are only defined if compiling a module with an ANSI C compiler. @page @section Entry points The functions provided by @file{fastmath.h} are @example double fast_sin(double); /* fsin.l */ double fast_cos(double); /* fcos.l */ double fast_tan(double); /* ftan.l */ double fast_asin(double); /* fasin.l */ double fast_acos(double); /* facos.l */ double fast_atan(double); /* fatan.l */ double fast_sinh(double); /* fsinh.l */ double fast_cosh(double); /* fcosh.l */ double fast_tanh(double); /* ftanh.l */ double fast_asinh(double); /* fasinh.l */ double fast_acosh(double); /* facosh.l */ double fast_atanh(double); /* fatanh.l */ double fast_fabs(double); /* fabs.l */ double fast_sqrt(double); /* fsqrt.l */ double fast_exp2(double); /* fexp2.l */ double fast_exp10(double); /* fexp10.l */ double fast_expe(double); /* fexpe.l */ double fast_log10(double); /* flog10.l */ double fast_log2(double); /* flog2.l */ double fast_loge(double); /* floge.l */ float fast_sinf(float); /* fsin.s */ float fast_cosf(float); /* fcos.s */ float fast_tanf(float); /* ftan.s */ float fast_asinf(float); /* fasin.s */ float fast_acosf(float); /* facos.s */ float fast_atanf(float); /* fatan.s */ float fast_sinhf(float); /* fsinh.s */ float fast_coshf(float); /* fcosh.s */ float fast_tanhf(float); /* ftanh.s */ float fast_asinhf(float); /* fasinh.s */ float fast_acoshf(float); /* facosh.s */ float fast_atanhf(float); /* fatanh.s */ float fast_fabsf(float); /* fabs.s */ float fast_sqrtf(float); /* fsqrt.s */ float fast_exp2f(float); /* fexp2.s */ float fast_exp10f(float); /* fexp10.s */ float fast_expef(float); /* fexpe.s */ float fast_log10f(float); /* flog10.s */ float fast_log2f(float); /* flog2.s */ float fast_logef(float); /* floge.s */ @end example picolibc-1.7.4/newlib/libc/machine/necv70/setjmp.S000066400000000000000000000023561414576234500216550ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ .globl _setjmp _setjmp: mov.w [ap],r0 mov.d r15,[r0+] mov.d r17,[r0+] mov.d r19,[r0+] mov.d r21,[r0+] mov.d r23,[r0+] mov.w -0x4[ap],[r0+] mov.w fp,[r0+] mov.w ap,[r0+] mov.w -0x8[ap],[r0] xor.w r0,r0 ret #0x0 .globl _longjmp _longjmp: mov.w 0x4[ap],r0 mov.w [ap],r1 mov.d [r1+],r15 mov.d [r1+],r17 mov.d [r1+],r19 mov.d [r1+],r21 mov.d [r1+],r23 mov.d [r1+],ap mov.w [r1+],sp test.w r0 jne noz mov.w #0x1,r0 noz: jmp [0x0[r1]] picolibc-1.7.4/newlib/libc/machine/nios2/000077500000000000000000000000001414576234500201515ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/nios2/setjmp.s000066400000000000000000000046671414576234500216540ustar00rootroot00000000000000;/* ; * C library -- _setjmp, _longjmp ; * ; * _longjmp(a,v) ; * will generate a "return(v?v:1)" from ; * the last call to ; * _setjmp(a) ; * by unwinding the call stack. ; * The previous signal state is NOT restored. ; * ; * ; * Copyright (c) 2003 Altera Corporation ; * All rights reserved. ; * ; * Redistribution and use in source and binary forms, with or without ; * modification, are permitted provided that the following conditions ; * are met: ; * ; * o Redistributions of source code must retain the above copyright ; * notice, this list of conditions and the following disclaimer. ; * o Redistributions in binary form must reproduce the above copyright ; * notice, this list of conditions and the following disclaimer in the ; * documentation and/or other materials provided with the distribution. ; * o Neither the name of Altera Corporation nor the names of its ; * contributors may be used to endorse or promote products derived from ; * this software without specific prior written permission. ; * ; * THIS SOFTWARE IS PROVIDED BY ALTERA CORPORATION, THE COPYRIGHT HOLDER, ; * AND ITS CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, ; * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY ; * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ; * THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, ; * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, ; * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS ; * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ; * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR ; * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE ; * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ; */ .section .text .align 3 .globl setjmp .type setjmp,@function .globl longjmp .type longjmp,@function setjmp: stw r16, 0(r4) stw r17, 4(r4) stw r18, 8(r4) stw r19, 12(r4) stw r20, 16(r4) stw r21, 20(r4) stw r22, 24(r4) stw r23, 28(r4) stw gp, 32(r4) stw sp, 36(r4) stw fp, 40(r4) stw ra, 44(r4) mov r2, zero ret longjmp: ldw r16, 0(r4) ldw r17, 4(r4) ldw r18, 8(r4) ldw r19, 12(r4) ldw r20, 16(r4) ldw r21, 20(r4) ldw r22, 24(r4) ldw r23, 28(r4) ldw gp, 32(r4) ldw sp, 36(r4) ldw fp, 40(r4) ldw ra, 44(r4) mov r2, r5 bne r2, zero, 1f movi r2, 1 1: ret picolibc-1.7.4/newlib/libc/machine/nvptx/000077500000000000000000000000001414576234500202765ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/nvptx/abort.c000066400000000000000000000014411414576234500215510ustar00rootroot00000000000000/* * Support file for nvptx in newlib. * Copyright (c) 2014-2018 Mentor Graphics. * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #include void __attribute__((noreturn)) abort (void) { for (;;) __builtin_trap (); } picolibc-1.7.4/newlib/libc/machine/nvptx/assert.c000066400000000000000000000022031414576234500217400ustar00rootroot00000000000000/* * Support file for nvptx in newlib. * Copyright (c) 2016-2018 Mentor Graphics. * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #include #include #include #ifndef HAVE_ASSERT_FUNC /* func can be NULL, in which case no function information is given. */ void __assert_func (const char *file, int line, const char *func, const char *failedexpr) { abort(); /* NOTREACHED */ } #endif /* HAVE_ASSERT_FUNC */ void __assert (const char *file, int line, const char *failedexpr) { __assert_func (file, line, NULL, failedexpr); /* NOTREACHED */ } picolibc-1.7.4/newlib/libc/machine/nvptx/calloc.c000066400000000000000000000015451414576234500217040ustar00rootroot00000000000000/* * Support file for nvptx in newlib. * Copyright (c) 2014-2018 Mentor Graphics. * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #include #include void * calloc (size_t size, size_t len) { void *p = malloc (size * len); if (!p) return p; return memset (p, 0, len); } picolibc-1.7.4/newlib/libc/machine/nvptx/callocr.c000066400000000000000000000014571414576234500220700ustar00rootroot00000000000000/* * Support file for nvptx in newlib. * Copyright (c) 2014-2018 Mentor Graphics. * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #include void * _calloc_r (struct _reent *ptr, size_t size, size_t len) { return calloc (size, len); } picolibc-1.7.4/newlib/libc/machine/nvptx/clock.c000066400000000000000000000006321414576234500215360ustar00rootroot00000000000000/* clock.c * Support file for nvptx in newlib. */ #include clock_t clock () { unsigned long long now; #if __PTX_SM__ >= 310 asm volatile("mov.u64 %0, %%globaltimer;" : "=r"(now)); return now/((1000000000ull)/CLOCKS_PER_SEC); #else asm volatile("mov.u64 %0, %%clock64;" : "=r"(now)); // Assume a GPU base clock frequency of 1250MHz. return now/((1250000000ull)/CLOCKS_PER_SEC); #endif } picolibc-1.7.4/newlib/libc/machine/nvptx/exit.c000066400000000000000000000022611414576234500214140ustar00rootroot00000000000000/* * Support file for nvptx in newlib. * Copyright (c) 2014-2018 Mentor Graphics. * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #include /* Sadly, PTX doesn't support weak declarations, only weak definitions. Weakly define it here in case we're not using crt0 (for instance in offloading). You probably shouldn't be calling 'exit' in an offloaded region anyway, but that'd be a runtime error, not a link error. */ int *__attribute((weak)) __exitval_ptr; void __attribute__((noreturn)) exit (int status) { if (__exitval_ptr) *__exitval_ptr = status; for (;;) __asm__("exit;" ::: "memory"); } picolibc-1.7.4/newlib/libc/machine/nvptx/free.c000066400000000000000000000016261414576234500213700ustar00rootroot00000000000000/* * Support file for nvptx in newlib. * Copyright (c) 2016-2018 Mentor Graphics. * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #include /* The CUDA-provided free. */ void sys_free (void *) __asm__ ("free"); /* The user-visible free (renamed by compiler). */ void free (void *ptr) { if (ptr) sys_free ((long long *)ptr - 1); } picolibc-1.7.4/newlib/libc/machine/nvptx/malloc.c000066400000000000000000000017461414576234500217210ustar00rootroot00000000000000/* * Support file for nvptx in newlib. * Copyright (c) 2016-2018 Mentor Graphics. * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #include /* The CUDA-provided malloc. */ void *sys_malloc (size_t) __asm__ ("malloc"); /* The user-visible malloc (renamed by compiler). */ void *malloc (size_t size) { long long *ptr = sys_malloc (size + sizeof (long long)); if (ptr) *(size_t *)ptr++ = size; return ptr; } picolibc-1.7.4/newlib/libc/machine/nvptx/mallocr.c000066400000000000000000000015171414576234500220770ustar00rootroot00000000000000/* * Support file for nvptx in newlib. * Copyright (c) 2014-2018 Mentor Graphics. * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #include void *_malloc_r (struct _reent *r, size_t n) { return malloc (n); } void _free_r (struct _reent *r, void *p) { free (p); } picolibc-1.7.4/newlib/libc/machine/nvptx/misc.c000066400000000000000000000022451414576234500214000ustar00rootroot00000000000000/* * Support file for nvptx in newlib. * Copyright (c) 2014-2018 Mentor Graphics. * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #include #include #include #undef errno extern int errno; int close(int fd) { return -1; } int fstat (int fd, struct stat *buf) { return -1; } int isatty (int fd) { return fd == 1; } off_t lseek(int fd, off_t offset, int whence) { return 0; } int open (const char *pathname, int flags, ...) { return -1; } int read(int fd, void *buf, size_t count) { return 0; } void sync (void) { } int unlink (const char *pathname) { return -1; } picolibc-1.7.4/newlib/libc/machine/nvptx/printf.c000066400000000000000000000016221414576234500217450ustar00rootroot00000000000000/* * Support file for nvptx in newlib. * Copyright (c) 2015-2018 Mentor Graphics. * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #include extern int vprintf (const char *, va_list); int printf (const char *fmt, ...) { va_list args; int res; va_start (args, fmt); res = vprintf (fmt, args); va_end (args); return res; } picolibc-1.7.4/newlib/libc/machine/nvptx/putchar.c000066400000000000000000000016371414576234500221170ustar00rootroot00000000000000/* * Support file for nvptx in newlib. * Copyright (c) 2015-2018 Mentor Graphics. * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #include extern int vprintf (const char *, va_list); int putchar (int c) { unsigned valist[1]; c = (unsigned char)c; valist[0] = c; int ret = vprintf ("%c", valist); if (ret < 0) c = -1; return c; } picolibc-1.7.4/newlib/libc/machine/nvptx/puts.c000066400000000000000000000015451414576234500214420ustar00rootroot00000000000000/* * Support file for nvptx in newlib. * Copyright (c) 2015-2018 Mentor Graphics. * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #include extern int vprintf (const char *, va_list); int puts (const char *str) { void *valist[1]; valist[0] = str; return vprintf ("%s\n", valist); } picolibc-1.7.4/newlib/libc/machine/nvptx/realloc.c000066400000000000000000000020611414576234500220620ustar00rootroot00000000000000/* * Support file for nvptx in newlib. * Copyright (c) 2016-2018 Mentor Graphics. * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #include void * realloc (void *old_ptr, size_t new_size) { void *new_ptr = malloc (new_size); if (old_ptr && new_ptr) { size_t old_size = *(size_t *)((long long *)old_ptr - 1); size_t copy_size = old_size > new_size ? new_size : old_size; __builtin_memcpy (new_ptr, old_ptr, copy_size); free (old_ptr); } return new_ptr; } picolibc-1.7.4/newlib/libc/machine/nvptx/reallocr.c000066400000000000000000000014541414576234500222510ustar00rootroot00000000000000/* * Support file for nvptx in newlib. * Copyright (c) 2014-2018 Mentor Graphics. * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #include void *_realloc_r (struct _reent *r, void *p, size_t n) _NOTHROW { return realloc (p, n); } picolibc-1.7.4/newlib/libc/machine/nvptx/write.c000066400000000000000000000020131414576234500215700ustar00rootroot00000000000000/* * Support file for nvptx in newlib. * Copyright (c) 2014-2018 Mentor Graphics. * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #include #include #include #include _READ_WRITE_RETURN_TYPE write (int fd, const void *buf, size_t count) { size_t i; char *b = (char *)buf; if (fd != 1 && fd != 2) { errno = EBADF; return -1; } for (i = 0; i < count; i++) printf ("%c", b[i]); return count; } picolibc-1.7.4/newlib/libc/machine/or1k/000077500000000000000000000000001414576234500177735ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/or1k/setjmp.S000066400000000000000000000056451414576234500214330ustar00rootroot00000000000000/* Copyright (c) 2014, Hesham ALMatary All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ .align 4 .global setjmp .type setjmp,@function setjmp: l.sw 0(r3), r1 l.sw 4(r3), r2 /* Skip r3-r8 as they are not preserved across function calls */ l.sw 8(r3), r9 /* Skip r10 as it's preserved to be used by TLS */ /* Skip r11, setjmp always set it to 0 */ /* The following set if registers are preserved across function calls */ l.sw 12(r3), r14 l.sw 16(r3), r16 l.sw 20(r3), r18 l.sw 24(r3), r20 l.sw 28(r3), r22 l.sw 32(r3), r24 l.sw 36(r3), r26 l.sw 40(r3), r28 l.sw 44(r3), r30 /* Save Status Register */ l.mfspr r13, r0, 17 l.sw 48(r3), r13 /* Set result register to 0 and jump */ // Different cases for optional delay slot #if defined(__OR1K_NODELAY__) l.addi r11, r0, 0 l.jr r9 #elif defined(__OR1K_DELAY__) l.jr r9 l.addi r11, r0, 0 #else l.addi r11, r0, 0 l.jr r9 l.nop #endif .align 4 .global longjmp .type longjmp,@function longjmp: /* If the second argument to longjmp is zero, set return address to 1, otherwise set it to the value of the second argument */ l.addi r11, r0, 1 l.sfeq r4, r0 l.bf 1f l.nop l.addi r11, r4, 0 /* Load status register */ 1: l.lwz r15, 48(r3) l.mtspr r0, r15, 17 l.lwz r1, 0(r3) l.lwz r2, 4(r3) /* Skip r3-r8 as they are not preserved across function calls */ l.lwz r9, 8(r3) /* Skip r11 as it's always set by longjmp */ l.lwz r14, 12(r3) l.lwz r16, 16(r3) l.lwz r18, 20(r3) l.lwz r20, 24(r3) l.lwz r22, 28(r3) l.lwz r24, 32(r3) l.lwz r26, 36(r3) l.lwz r28, 40(r3) // Different cases for optional delay slot #if defined(__OR1K_NODELAY__) l.lwz r30, 44(r3) l.jr r9 #elif defined(__OR1K_DELAY__) l.jr r9 l.lwz r30, 44(r3) #else l.lwz r30, 44(r3) l.jr r9 l.nop #endif picolibc-1.7.4/newlib/libc/machine/powerpc/000077500000000000000000000000001414576234500205765ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/powerpc/atosfix16.c000066400000000000000000000047711414576234500225770ustar00rootroot00000000000000/* Copyright (c) 1984,2000 S.L. Moshier Permission to use, copy, modify, and distribute this software for any purpose without fee is hereby granted, provided that this entire notice is included in all copies of any software which is or includes a copy or modification of this software and in all copies of the supporting documentation for such software. THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. */ /* FUNCTION <>, <>, <>---string to signed fixed-point INDEX atosfix16 INDEX atosfix32 INDEX atosfix64 INDEX _atosfix16_r INDEX _atosfix32_r INDEX _atosfix64_r SYNOPSIS #include __int16_t atosfix16(const char *<[s]>); __int32_t atosfix32(const char *<[s]>); __int64_t atosfix32(const char *<[s]>); __int16_t _atosfix16_r(struct __reent *, const char *<[s]>); __int32_t _atosfix32_r(struct __reent *, const char *<[s]>); __int64_t _atosfix32_r(struct __reent *, const char *<[s]>); DESCRIPTION <> converts the initial portion of a string to a sign + 15-bit fraction fixed point value. <> converts the initial portion of a string to a sign + 31-bit fraction fixed point value. <> converts the initial portion of a string to a sign + 63-bit fraction fixed point value. <> is implemented as <> <> is implemented as <> <> is implemented as <> The alternate functions <<_atosfix16_r>>, <<_atosfix32_r>>, and <<_atosfix64_r>> are reentrant versions. The extra argument <[reent]> is a pointer to a reentrancy structure. RETURNS The functions return the converted value, if any. If no conversion was made, <<0>> is returned. If saturation occurs, <> is stored in errno. PORTABILITY <>, <>, and <> are non-standard. No supporting OS subroutines are directly required. The OS subroutines required by <> are used. */ /* * Jeff Johnston - 02/13/2002 */ #ifdef __SPE__ #include #include <_ansi.h> __int16_t _atosfix16_r (struct _reent *reent, const char *s) { return _strtosfix16_r (reent, s, NULL); } #ifndef _REENT_ONLY __int16_t atosfix16 (const char *s) { return strtosfix16 (s, NULL); } #endif /* !_REENT_ONLY */ #endif /* __SPE__ */ picolibc-1.7.4/newlib/libc/machine/powerpc/atosfix32.c000066400000000000000000000016711414576234500225710ustar00rootroot00000000000000/* Copyright (c) 1984,2000 S.L. Moshier Permission to use, copy, modify, and distribute this software for any purpose without fee is hereby granted, provided that this entire notice is included in all copies of any software which is or includes a copy or modification of this software and in all copies of the supporting documentation for such software. THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. */ /* * Jeff Johnston - 02/13/2002 */ #ifdef __SPE__ #include #include <_ansi.h> __int32_t _atosfix32_r (struct _reent *reent, const char *s) { return _strtosfix32_r (reent, s, NULL); } #ifndef _REENT_ONLY __int32_t atosfix32 (const char *s) { return strtosfix32 (s, NULL); } #endif /* !_REENT_ONLY */ #endif /* __SPE__ */ picolibc-1.7.4/newlib/libc/machine/powerpc/atosfix64.c000066400000000000000000000016721414576234500225770ustar00rootroot00000000000000/* Copyright (c) 1984,2000 S.L. Moshier Permission to use, copy, modify, and distribute this software for any purpose without fee is hereby granted, provided that this entire notice is included in all copies of any software which is or includes a copy or modification of this software and in all copies of the supporting documentation for such software. THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. */ /* * Jeff Johnston - 02/13/2002 */ #ifdef __SPE__ #include #include <_ansi.h> __int64_t _atosfix64_r (struct _reent *reent, const char *s) { return _strtosfix64_r (reent, s, NULL); } #ifndef _REENT_ONLY __int64_t atosfix64 (const char *s) { return strtosfix64 (s, NULL); } #endif /* !_REENT_ONLY */ #endif /* __SPE__ */ picolibc-1.7.4/newlib/libc/machine/powerpc/atoufix16.c000066400000000000000000000050111414576234500225650ustar00rootroot00000000000000/* Copyright (c) 1984,2000 S.L. Moshier Permission to use, copy, modify, and distribute this software for any purpose without fee is hereby granted, provided that this entire notice is included in all copies of any software which is or includes a copy or modification of this software and in all copies of the supporting documentation for such software. THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. */ /* FUNCTION <>, <>, <>---string to unsigned fixed-point INDEX atoufix16 INDEX atoufix32 INDEX atoufix64 INDEX _atoufix16_r INDEX _atoufix32_r INDEX _atoufix64_r SYNOPSIS #include __uint16_t atoufix16(const char *<[s]>); __uint32_t atoufix32(const char *<[s]>); __uint64_t atoufix32(const char *<[s]>); __uint16_t _atoufix16_r(struct __reent *, const char *<[s]>); __uint32_t _atoufix32_r(struct __reent *, const char *<[s]>); __uint64_t _atoufix32_r(struct __reent *, const char *<[s]>); DESCRIPTION <> converts the initial portion of a string to a 16-bit fraction unsigned fixed point value. <> converts the initial portion of a string to a 32-bit fraction unsigned fixed point value. <> converts the initial portion of a string to a 64-bit fraction unsigned fixed point value. <> is implemented as <> <> is implemented as <> <> is implemented as <> The alternate functions <<_atoufix16_r>>, <<_atoufix32_r>>, and <<_atoufix64_r>> are reentrant versions. The extra argument <[reent]> is a pointer to a reentrancy structure. RETURNS The functions return the converted value, if any. If no conversion was made, <<0>> is returned. If saturation occurs, <> is stored in errno. PORTABILITY <>, <>, and <> are non-standard. No supporting OS subroutines are directly required. The OS subroutines required by <> are used. */ /* * Jeff Johnston - 02/13/2002 */ #ifdef __SPE__ #include #include <_ansi.h> __uint16_t _atoufix16_r (struct _reent *reent, const char *s) { return _strtoufix16_r (reent, s, NULL); } #ifndef _REENT_ONLY __uint16_t atoufix16 (const char *s) { return strtoufix16 (s, NULL); } #endif /* !_REENT_ONLY */ #endif /* __SPE__ */ picolibc-1.7.4/newlib/libc/machine/powerpc/atoufix32.c000066400000000000000000000016741414576234500225760ustar00rootroot00000000000000/* Copyright (c) 1984,2000 S.L. Moshier Permission to use, copy, modify, and distribute this software for any purpose without fee is hereby granted, provided that this entire notice is included in all copies of any software which is or includes a copy or modification of this software and in all copies of the supporting documentation for such software. THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. */ /* * Jeff Johnston - 02/13/2002 */ #ifdef __SPE__ #include #include <_ansi.h> __uint32_t _atoufix32_r (struct _reent *reent, const char *s) { return _strtoufix32_r (reent, s, NULL); } #ifndef _REENT_ONLY __uint32_t atoufix32 (const char *s) { return strtoufix32 (s, NULL); } #endif /* !_REENT_ONLY */ #endif /* __SPE__ */ picolibc-1.7.4/newlib/libc/machine/powerpc/atoufix64.c000066400000000000000000000016731414576234500226020ustar00rootroot00000000000000/* Copyright (c) 1984,2000 S.L. Moshier Permission to use, copy, modify, and distribute this software for any purpose without fee is hereby granted, provided that this entire notice is included in all copies of any software which is or includes a copy or modification of this software and in all copies of the supporting documentation for such software. THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. */ /* * Jeff Johnston - 02/13/2002 */ #ifdef __SPE__ #include #include <_ansi.h> __uint64_t _atoufix64_r (struct _reent *reent, const char *s) { return _strtoufix64_r (reent, s, NULL); } #ifndef _REENT_ONLY __uint64_t atoufix64 (const char *s) { return strtoufix64 (s, NULL); } #endif /* !_REENT_ONLY */ #endif /* __SPE__ */ picolibc-1.7.4/newlib/libc/machine/powerpc/fix64.h000066400000000000000000000042301414576234500217060ustar00rootroot00000000000000/* Copyright (c) 1984,2000 S.L. Moshier Permission to use, copy, modify, and distribute this software for any purpose without fee is hereby granted, provided that this entire notice is included in all copies of any software which is or includes a copy or modification of this software and in all copies of the supporting documentation for such software. THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. */ #ifndef _FIX64_H_ #define _FIX64_H_ #include #include #include #include #include #ifdef __IEEE_LITTLE_ENDIAN #define IEEE_8087 #endif #ifdef __IEEE_BIG_ENDIAN #define IEEE_MC68k #endif #ifdef __Z8000__ #define Just_16 #endif #if defined(IEEE_8087) + defined(IEEE_MC68k) + defined(VAX) + defined(IBM) != 1 Exactly one of IEEE_8087, IEEE_MC68k, VAX, or IBM should be defined. #endif union long_double_union { long double ld; __uint32_t i[4]; }; typedef union long_double_union LONG_DOUBLE_UNION; extern void _simdstrtold (char *, char **, LONG_DOUBLE_UNION *); extern int _simdldcheck (LONG_DOUBLE_UNION *); #define SIMD_LDBL_MANT_DIG 113 #ifdef IEEE_8087 # define word0(x) (x.i[3]) # define word1(x) (x.i[2]) # define word2(x) (x.i[1]) # define word3(x) (x.i[0]) #else /* !IEEE_8087 */ # define word0(x) (x.i[0]) # define word1(x) (x.i[1]) # define word2(x) (x.i[2]) # define word3(x) (x.i[3]) #endif /* !IEEE_8087 */ #undef Exp_shift #define Exp_shift 16 #undef Exp_mask #define Exp_mask ((__uint32_t)0x7fff0000L) #undef Exp_msk1 #define Exp_msk1 ((__uint32_t)0x00010000L) #undef Bias #define Bias 16383 #undef Ebits #define Ebits 15 #undef Sign_bit #define Sign_bit ((__uint32_t)0x80000000L) #define init(x) {} union fix64_union { __uint64_t ll; __uint32_t j[2]; }; #ifdef __LITTLE_ENDIAN__ # define hiword(y) (y.j[1]) # define loword(y) (y.j[0]) #else /* __BIG_ENDIAN__ */ # define hiword(y) (y.j[0]) # define loword(y) (y.j[1]) #endif /* __BIG_ENDIAN__ */ #endif /* _FIX64_H_ */ picolibc-1.7.4/newlib/libc/machine/powerpc/machine/000077500000000000000000000000001414576234500222025ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/powerpc/machine/fenv-fp.h000066400000000000000000000102331414576234500237130ustar00rootroot00000000000000/*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright (c) 2004-2005 David Schultz * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $FreeBSD$ */ __fenv_static inline int feclearexcept(int excepts) { union __fpscr __r; if (excepts & FE_INVALID) excepts |= FE_ALL_INVALID; __mffs(&__r); __r.__bits.__reg &= ~excepts; __mtfsf(__r); return (0); } __fenv_static inline int fegetexceptflag(fexcept_t *flagp, int excepts) { union __fpscr __r; __mffs(&__r); *flagp = __r.__bits.__reg & excepts; return (0); } __fenv_static inline int fesetexceptflag(const fexcept_t *flagp, int excepts) { union __fpscr __r; if (excepts & FE_INVALID) excepts |= FE_ALL_EXCEPT; __mffs(&__r); __r.__bits.__reg &= ~excepts; __r.__bits.__reg |= *flagp & excepts; __mtfsf(__r); return (0); } __fenv_static inline int feraiseexcept(int excepts) { union __fpscr __r; if (excepts & FE_INVALID) excepts |= FE_VXSOFT; __mffs(&__r); __r.__bits.__reg |= excepts; __mtfsf(__r); return (0); } __fenv_static inline int fetestexcept(int excepts) { union __fpscr __r; __mffs(&__r); return (__r.__bits.__reg & excepts); } __fenv_static inline int fegetround(void) { union __fpscr __r; __mffs(&__r); return (__r.__bits.__reg & _ROUND_MASK); } __fenv_static inline int fesetround(int rounding_mode) { union __fpscr __r; if (rounding_mode & ~_ROUND_MASK) return (-1); __mffs(&__r); __r.__bits.__reg &= ~_ROUND_MASK; __r.__bits.__reg |= rounding_mode; __mtfsf(__r); return (0); } __fenv_static inline int fegetenv(fenv_t *envp) { union __fpscr __r; __mffs(&__r); *envp = __r.__bits.__reg; return (0); } __fenv_static inline int feholdexcept(fenv_t *envp) { union __fpscr __r; __mffs(&__r); *envp = __r.__bits.__reg; __r.__bits.__reg &= ~(FE_ALL_EXCEPT | _ENABLE_MASK); __mtfsf(__r); return (0); } __fenv_static inline int fesetenv(const fenv_t *envp) { union __fpscr __r; __r.__bits.__reg = *envp; __mtfsf(__r); return (0); } __fenv_static inline int feupdateenv(const fenv_t *envp) { union __fpscr __r; __mffs(&__r); __r.__bits.__reg &= FE_ALL_EXCEPT; __r.__bits.__reg |= *envp; __mtfsf(__r); return (0); } #if __BSD_VISIBLE /* We currently provide no external definitions of the functions below. */ static inline int feenableexcept(int __mask) { union __fpscr __r; fenv_t __oldmask; __mffs(&__r); __oldmask = __r.__bits.__reg; __r.__bits.__reg |= (__mask & FE_ALL_EXCEPT) >> _FPUSW_SHIFT; __mtfsf(__r); return ((__oldmask & _ENABLE_MASK) << _FPUSW_SHIFT); } static inline int fedisableexcept(int __mask) { union __fpscr __r; fenv_t __oldmask; __mffs(&__r); __oldmask = __r.__bits.__reg; __r.__bits.__reg &= ~((__mask & FE_ALL_EXCEPT) >> _FPUSW_SHIFT); __mtfsf(__r); return ((__oldmask & _ENABLE_MASK) << _FPUSW_SHIFT); } static inline int fegetexcept(void) { union __fpscr __r; __mffs(&__r); return ((__r.__bits.__reg & _ENABLE_MASK) << _FPUSW_SHIFT); } #endif /* __BSD_VISIBLE */ picolibc-1.7.4/newlib/libc/machine/powerpc/machine/malloc.h000066400000000000000000000037011414576234500236230ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _MACHMALLOC_H_ #define _MACHMALLOC_H_ # if defined(__ALTIVEC__) && 0 void *vec_calloc (size_t __nmemb, size_t __size); void *_vec_calloc_r (struct _reent *, size_t __nmemb, size_t __size); void vec_free (void *); #define _vec_freer _freer void *vec_malloc (size_t __size); #define _vec_mallocr _memalign_r void *vec_realloc (void *__r, size_t __size); void *_vec_realloc_r (struct _reent *, void *__r, size_t __size); # endif /* __ALTIVEC__ */ #endif /* _MACHMALLOC_H_ */ picolibc-1.7.4/newlib/libc/machine/powerpc/machine/stdlib.h000066400000000000000000000073371414576234500236460ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _MACHSTDLIB_H_ #define _MACHSTDLIB_H_ #ifndef __STRICT_ANSI__ # if defined(__ALTIVEC__) && 0 void *vec_calloc (size_t __nmemb, size_t __size); void *_vec_calloc_r (struct _reent *, size_t __nmemb, size_t __size); void vec_free (void *); #define _vec_freer _freer void *vec_malloc (size_t __size); #define _vec_mallocr _memalign_r void *vec_realloc (void *__r, size_t __size); void *_vec_realloc_r (struct _reent *, void *__r, size_t __size); # endif /* __ALTIVEC__ */ # if defined(__SPE__) && 0 #define __need_inttypes #include #ifdef __cplusplus extern "C" { #endif __int16_t atosfix16 (const char *__str); __int16_t _atosfix16_r (struct _reent *, const char *__str); __int32_t atosfix32 (const char *__str); __int32_t _atosfix32_r (struct _reent *, const char *__str); __int64_t atosfix64 (const char *__str); __int64_t _atosfix64_r (struct _reent *, const char *__str); __uint16_t atoufix16 (const char *__str); __uint16_t _atoufix16_r (struct _reent *, const char *__str); __uint32_t atoufix32 (const char *__str); __uint32_t _atoufix32_r (struct _reent *, const char *__str); __uint64_t atoufix64 (const char *__str); __uint64_t _atoufix64_r (struct _reent *, const char *__str); __int16_t strtosfix16 (const char *__str, char **__endptr); __int16_t _strtosfix16_r (struct _reent *, const char *__str, char **__endptr); __int32_t strtosfix32 (const char *__str, char **__endptr); __int32_t _strtosfix32_r (struct _reent *, const char *__str, char **__endptr); __int64_t strtosfix64 (const char *__str, char **__endptr); __int64_t _strtosfix64_r (struct _reent *, const char *__str, char **__endptr); __uint16_t strtoufix16 (const char *__str, char **__endptr); __uint16_t _strtoufix16_r (struct _reent *, const char *__str, char **__endptr); __uint32_t strtoufix32 (const char *__str, char **__endptr); __uint32_t _strtoufix32_r (struct _reent *, const char *__str, char **__endptr); __uint64_t strtoufix64 (const char *__str, char **__endptr); __uint64_t _strtoufix64_r (struct _reent *, const char *__str, char **__endptr); #ifdef __cplusplus } #endif # endif /* __SPE__ */ #endif /* !__STRICT_ANSI__ */ #endif /* _MACHSTDLIB_H_ */ picolibc-1.7.4/newlib/libc/machine/powerpc/meson.build000066400000000000000000000040521414576234500227410ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Ash Logan, Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # srcs_machine = [ # 'atosfix16.c', # 'atosfix32.c', # 'atosfix64.c', # 'atoufix16.c', # 'atoufix32.c', # 'atoufix64.c', 'setjmp.S', # 'strtosfix16.c', # 'strtosfix32.c', # 'strtosfix64.c', # 'strtoufix16.c', # 'strtoufix32.c', # 'strtoufix64.c', # 'ufix64toa.c', # These don't work with picolibc's stdio/malloc/locking # 'vec_calloc.c', # 'vec_free.c', # 'vec_malloc.c', # 'vec_mallocr.c', # 'vec_realloc.c', # 'vfprintf.c', # 'vfscanf.c', ] src_machine = files(srcs_machine) picolibc-1.7.4/newlib/libc/machine/powerpc/setjmp.S000066400000000000000000000206111414576234500222240ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* This is a simple version of setjmp and longjmp for the PowerPC. Ian Lance Taylor, Cygnus Support, 9 Feb 1994. Modified by Jeff Johnston, Red Hat Inc. 2 Oct 2001. */ #include "ppc-asm.h" #ifdef _LP64 #define STW std #define STWU stdu #define LWZ ld #define LWZU ldu #define OFFSET 8 #else #error 32-bit #define STW stw #define STWU stwu #define LWZ lwz #define LWZU lwzu #define OFFSET 4 #endif FUNC_START(setjmp) #ifdef __ALTIVEC__ addi 3,3,15 # align Altivec to 16 byte boundary #ifdef _LP64 rldicr 3,3,0,59 #else rlwinm 3,3,0,0,27 #endif #else addi 3,3,7 # align to 8 byte boundary #ifdef _LP64 rldicr 3,3,0,60 #else rlwinm 3,3,0,0,28 #endif #endif #if __SPE__ /* If we are E500, then save 64-bit registers. */ evstdd 1,0(3) # offset 0 evstdd 2,8(3) # offset 8 evstdd 13,16(3) # offset 16 evstdd 14,24(3) # offset 24 evstdd 15,32(3) # offset 32 evstdd 16,40(3) # offset 40 evstdd 17,48(3) # offset 48 evstdd 18,56(3) # offset 56 evstdd 19,64(3) # offset 64 evstdd 20,72(3) # offset 72 evstdd 21,80(3) # offset 80 evstdd 22,88(3) # offset 88 evstdd 23,96(3) # offset 96 evstdd 24,104(3) # offset 104 evstdd 25,112(3) # offset 112 evstdd 26,120(3) # offset 120 evstdd 27,128(3) # offset 128 evstdd 28,136(3) # offset 136 evstdd 29,144(3) # offset 144 evstdd 30,152(3) # offset 152 evstdd 31,160(3) # offset 160 /* Add 164 to r3 to account for the amount of data we just stored. Note that we are not adding 168 because the next store instruction uses an offset of 4. */ addi 3,3,164 #else STW 1,0(3) # offset 0 STWU 2,OFFSET(3) # offset 4 STWU 13,OFFSET(3) # offset 8 STWU 14,OFFSET(3) # offset 12 STWU 15,OFFSET(3) # offset 16 STWU 16,OFFSET(3) # offset 20 STWU 17,OFFSET(3) # offset 24 STWU 18,OFFSET(3) # offset 28 STWU 19,OFFSET(3) # offset 32 STWU 20,OFFSET(3) # offset 36 STWU 21,OFFSET(3) # offset 40 STWU 22,OFFSET(3) # offset 44 STWU 23,OFFSET(3) # offset 48 STWU 24,OFFSET(3) # offset 52 STWU 25,OFFSET(3) # offset 56 STWU 26,OFFSET(3) # offset 60 STWU 27,OFFSET(3) # offset 64 STWU 28,OFFSET(3) # offset 68 STWU 29,OFFSET(3) # offset 72 STWU 30,OFFSET(3) # offset 76 STWU 31,OFFSET(3) # offset 80 #endif /* From this point on until the end of this function, add 84 to the offset shown if __SPE__. This difference comes from the fact that we save 21 64-bit registers instead of 21 32-bit registers above. */ mflr 4 STWU 4,OFFSET(3) # offset 84 mfcr 4 STWU 4,OFFSET(3) # offset 88 # one word pad to get floating point aligned on 8 byte boundary /* Check whether we need to save FPRs. Checking __NO_FPRS__ on its own would be enough for GCC 4.1 and above, but older compilers only define _SOFT_FLOAT, so check both. */ #if !defined (__NO_FPRS__) && !defined (_SOFT_FLOAT) stfdu 14,8(3) # offset 96 stfdu 15,8(3) # offset 104 stfdu 16,8(3) # offset 112 stfdu 17,8(3) # offset 120 stfdu 18,8(3) # offset 128 stfdu 19,8(3) # offset 136 stfdu 20,8(3) # offset 144 stfdu 21,8(3) # offset 152 stfdu 22,8(3) # offset 160 stfdu 23,8(3) # offset 168 stfdu 24,8(3) # offset 176 stfdu 25,8(3) # offset 184 stfdu 26,8(3) # offset 192 stfdu 27,8(3) # offset 200 stfdu 28,8(3) # offset 208 stfdu 29,8(3) # offset 216 stfdu 30,8(3) # offset 224 stfdu 31,8(3) # offset 232 #endif /* This requires a total of 21 * 4 + 18 * 8 + 4 + 4 + 4 bytes == 60 * 4 bytes == 240 bytes. */ #ifdef __ALTIVEC__ /* save Altivec vrsave and vr20-vr31 registers */ mfspr 4,256 # vrsave register STWU 4,16(3) # offset 248 addi 3,3,8 stvx 20,0,3 # offset 256 addi 3,3,16 stvx 21,0,3 # offset 272 addi 3,3,16 stvx 22,0,3 # offset 288 addi 3,3,16 stvx 23,0,3 # offset 304 addi 3,3,16 stvx 24,0,3 # offset 320 addi 3,3,16 stvx 25,0,3 # offset 336 addi 3,3,16 stvx 26,0,3 # offset 352 addi 3,3,16 stvx 27,0,3 # offset 368 addi 3,3,16 stvx 28,0,3 # offset 384 addi 3,3,16 stvx 29,0,3 # offset 400 addi 3,3,16 stvx 30,0,3 # offset 416 addi 3,3,16 stvx 31,0,3 # offset 432 /* This requires a total of 240 + 8 + 8 + 12 * 16 == 448 bytes. */ #endif li 3,0 blr FUNC_END(setjmp) FUNC_START(longjmp) #ifdef __ALTIVEC__ addi 3,3,15 # align Altivec to 16 byte boundary #ifdef _LP64 rldicr 3,3,0,59 #else rlwinm 3,3,0,0,27 #endif #else addi 3,3,7 # align to 8 byte boundary #ifdef _LP64 rldicr 3,3,0,60 #else rlwinm 3,3,0,0,28 #endif #endif #if __SPE__ /* If we are E500, then restore 64-bit registers. */ evldd 1,0(3) # offset 0 evldd 2,8(3) # offset 8 evldd 13,16(3) # offset 16 evldd 14,24(3) # offset 24 evldd 15,32(3) # offset 32 evldd 16,40(3) # offset 40 evldd 17,48(3) # offset 48 evldd 18,56(3) # offset 56 evldd 19,64(3) # offset 64 evldd 20,72(3) # offset 72 evldd 21,80(3) # offset 80 evldd 22,88(3) # offset 88 evldd 23,96(3) # offset 96 evldd 24,104(3) # offset 104 evldd 25,112(3) # offset 112 evldd 26,120(3) # offset 120 evldd 27,128(3) # offset 128 evldd 28,136(3) # offset 136 evldd 29,144(3) # offset 144 evldd 30,152(3) # offset 152 evldd 31,160(3) # offset 160 /* Add 164 to r3 to account for the amount of data we just loaded. Note that we are not adding 168 because the next load instruction uses an offset of 4. */ addi 3,3,164 #else LWZ 1,0(3) # offset 0 LWZU 2,OFFSET(3) # offset 4 LWZU 13,OFFSET(3) # offset 8 LWZU 14,OFFSET(3) # offset 12 LWZU 15,OFFSET(3) # offset 16 LWZU 16,OFFSET(3) # offset 20 LWZU 17,OFFSET(3) # offset 24 LWZU 18,OFFSET(3) # offset 28 LWZU 19,OFFSET(3) # offset 32 LWZU 20,OFFSET(3) # offset 36 LWZU 21,OFFSET(3) # offset 40 LWZU 22,OFFSET(3) # offset 44 LWZU 23,OFFSET(3) # offset 48 LWZU 24,OFFSET(3) # offset 52 LWZU 25,OFFSET(3) # offset 56 LWZU 26,OFFSET(3) # offset 60 LWZU 27,OFFSET(3) # offset 64 LWZU 28,OFFSET(3) # offset 68 LWZU 29,OFFSET(3) # offset 72 LWZU 30,OFFSET(3) # offset 76 LWZU 31,OFFSET(3) # offset 80 #endif /* From this point on until the end of this function, add 84 to the offset shown if __SPE__. This difference comes from the fact that we restore 21 64-bit registers instead of 21 32-bit registers above. */ LWZU 5,OFFSET(3) # offset 84 mtlr 5 LWZU 5,OFFSET(3) # offset 88 mtcrf 255,5 # one word pad to get floating point aligned on 8 byte boundary /* Check whether we need to restore FPRs. Checking __NO_FPRS__ on its own would be enough for GCC 4.1 and above, but older compilers only define _SOFT_FLOAT, so check both. */ #if !defined (__NO_FPRS__) && !defined (_SOFT_FLOAT) lfdu 14,8(3) # offset 96 lfdu 15,8(3) # offset 104 lfdu 16,8(3) # offset 112 lfdu 17,8(3) # offset 120 lfdu 18,8(3) # offset 128 lfdu 19,8(3) # offset 136 lfdu 20,8(3) # offset 144 lfdu 21,8(3) # offset 152 lfdu 22,8(3) # offset 160 lfdu 23,8(3) # offset 168 lfdu 24,8(3) # offset 176 lfdu 25,8(3) # offset 184 lfdu 26,8(3) # offset 192 lfdu 27,8(3) # offset 200 lfdu 28,8(3) # offset 208 lfdu 29,8(3) # offset 216 lfdu 30,8(3) # offset 224 lfdu 31,8(3) # offset 232 #endif #ifdef __ALTIVEC__ /* restore Altivec vrsave and v20-v31 registers */ LWZU 5,16(3) # offset 248 mtspr 256,5 # vrsave addi 3,3,8 lvx 20,0,3 # offset 256 addi 3,3,16 lvx 21,0,3 # offset 272 addi 3,3,16 lvx 22,0,3 # offset 288 addi 3,3,16 lvx 23,0,3 # offset 304 addi 3,3,16 lvx 24,0,3 # offset 320 addi 3,3,16 lvx 25,0,3 # offset 336 addi 3,3,16 lvx 26,0,3 # offset 352 addi 3,3,16 lvx 27,0,3 # offset 368 addi 3,3,16 lvx 28,0,3 # offset 384 addi 3,3,16 lvx 29,0,3 # offset 400 addi 3,3,16 lvx 30,0,3 # offset 416 addi 3,3,16 lvx 31,0,3 # offset 432 #endif mr. 3,4 bclr+ 4,2 li 3,1 blr FUNC_END(longjmp) picolibc-1.7.4/newlib/libc/machine/powerpc/simdldtoa.c000066400000000000000000002110141414576234500227210ustar00rootroot00000000000000 /* Extended precision arithmetic functions for long double I/O. * This program has been placed in the public domain. */ #ifdef __SPE__ #include <_ansi.h> #include #include #include #include "mprec.h" #include "fix64.h" /* These are the externally visible entries. */ /* linux name: long double _IO_strtold (char *, char **); */ void _simdstrtold (char *, char **, LONG_DOUBLE_UNION *); char * _simdldtoa_r (struct _reent *, LONG_DOUBLE_UNION *, int, int, int *, int *, char **); /* Number of 16 bit words in external x type format */ #define NE 10 /* Number of 16 bit words in internal format */ #define NI (NE+3) /* Array offset to exponent */ #define E 1 /* Array offset to high guard word */ #define M 2 /* Number of bits of precision */ #define NBITS ((NI-4)*16) /* Maximum number of decimal digits in ASCII conversion * = NBITS*log10(2) */ #define NDEC (NBITS*8/27) /* The exponent of 1.0 */ #define EXONE (0x3fff) /* Maximum exponent digits - base 10 */ #define MAX_EXP_DIGITS 5 /* Control structure for long doublue conversion including rounding precision values. * rndprc can be set to 80 (if NE=6), 64, 56, 53, or 24 bits. */ typedef struct { int rlast; int rndprc; int rw; int re; int outexpon; unsigned short rmsk; unsigned short rmbit; unsigned short rebit; unsigned short rbit[NI]; unsigned short equot[NI]; } LDPARMS; static void esub(short unsigned int *a, short unsigned int *b, short unsigned int *c, LDPARMS *ldp); static void emul(short unsigned int *a, short unsigned int *b, short unsigned int *c, LDPARMS *ldp); static void ediv(short unsigned int *a, short unsigned int *b, short unsigned int *c, LDPARMS *ldp); static int ecmp(short unsigned int *a, short unsigned int *b); static int enormlz(short unsigned int *x); static int eshift(short unsigned int *x, int sc); static void eshup1(register short unsigned int *x); static void eshup8(register short unsigned int *x); static void eshup6(register short unsigned int *x); static void eshdn1(register short unsigned int *x); static void eshdn8(register short unsigned int *x); static void eshdn6(register short unsigned int *x); static void eneg(short unsigned int *x); static void emov(register short unsigned int *a, register short unsigned int *b); static void eclear(register short unsigned int *x); static void einfin(register short unsigned int *x, register LDPARMS *ldp); static void efloor(short unsigned int *x, short unsigned int *y, LDPARMS *ldp); static void etoasc(short unsigned int *x, char *string, int ndigs, int outformat, LDPARMS *ldp); #if SIMD_LDBL_MANT_DIG == 24 static void e24toe(short unsigned int *pe, short unsigned int *y, LDPARMS *ldp); #elif SIMD_LDBL_MANT_DIG == 53 static void e53toe(short unsigned int *pe, short unsigned int *y, LDPARMS *ldp); #elif SIMD_LDBL_MANT_DIG == 64 static void e64toe(short unsigned int *pe, short unsigned int *y, LDPARMS *ldp); #else static void e113toe(short unsigned int *pe, short unsigned int *y, LDPARMS *ldp); #endif /* econst.c */ /* e type constants used by high precision check routines */ #if NE == 10 /* 0.0 */ static unsigned short ezero[NE] = {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,}; /* 1.0E0 */ static unsigned short eone[NE] = {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0x3fff,}; #else /* 0.0 */ static unsigned short ezero[NE] = { 0, 0000000,0000000,0000000,0000000,0000000,}; /* 1.0E0 */ static unsigned short eone[NE] = { 0, 0000000,0000000,0000000,0100000,0x3fff,}; #endif /* Debugging routine for displaying errors */ #ifdef DEBUG /* Notice: the order of appearance of the following * messages is bound to the error codes defined * in mconf.h. */ static char *ermsg[7] = { "unknown", /* error code 0 */ "domain", /* error code 1 */ "singularity", /* et seq. */ "overflow", "underflow", "total loss of precision", "partial loss of precision" }; #define mtherr(name, code) printf( "\n%s %s error\n", name, ermsg[code] ); #else #define mtherr(name, code) #endif /* ieee.c * * Extended precision IEEE binary floating point arithmetic routines * * Numbers are stored in C language as arrays of 16-bit unsigned * short integers. The arguments of the routines are pointers to * the arrays. * * * External e type data structure, simulates Intel 8087 chip * temporary real format but possibly with a larger significand: * * NE-1 significand words (least significant word first, * most significant bit is normally set) * exponent (value = EXONE for 1.0, * top bit is the sign) * * * Internal data structure of a number (a "word" is 16 bits): * * ei[0] sign word (0 for positive, 0xffff for negative) * ei[1] biased exponent (value = EXONE for the number 1.0) * ei[2] high guard word (always zero after normalization) * ei[3] * to ei[NI-2] significand (NI-4 significand words, * most significant word first, * most significant bit is set) * ei[NI-1] low guard word (0x8000 bit is rounding place) * * * * Routines for external format numbers * * asctoe( string, e ) ASCII string to extended double e type * asctoe64( string, &d ) ASCII string to long double * asctoe53( string, &d ) ASCII string to double * asctoe24( string, &f ) ASCII string to single * asctoeg( string, e, prec, ldp ) ASCII string to specified precision * e24toe( &f, e, ldp ) IEEE single precision to e type * e53toe( &d, e, ldp ) IEEE double precision to e type * e64toe( &d, e, ldp ) IEEE long double precision to e type * e113toe( &d, e, ldp ) IEEE long double precision to e type * eabs(e) absolute value * eadd( a, b, c ) c = b + a * eclear(e) e = 0 * ecmp (a, b) Returns 1 if a > b, 0 if a == b, * -1 if a < b, -2 if either a or b is a NaN. * ediv( a, b, c, ldp ) c = b / a * efloor( a, b, ldp ) truncate to integer, toward -infinity * efrexp( a, exp, s ) extract exponent and significand * eifrac( e, &l, frac ) e to long integer and e type fraction * euifrac( e, &l, frac ) e to unsigned long integer and e type fraction * einfin( e, ldp ) set e to infinity, leaving its sign alone * eldexp( a, n, b ) multiply by 2**n * emov( a, b ) b = a * emul( a, b, c, ldp ) c = b * a * eneg(e) e = -e * eround( a, b ) b = nearest integer value to a * esub( a, b, c, ldp ) c = b - a * e24toasc( &f, str, n ) single to ASCII string, n digits after decimal * e53toasc( &d, str, n ) double to ASCII string, n digits after decimal * e64toasc( &d, str, n ) long double to ASCII string * etoasc(e,str,n,fmt,ldp)e to ASCII string, n digits after decimal * etoe24( e, &f ) convert e type to IEEE single precision * etoe53( e, &d ) convert e type to IEEE double precision * etoe64( e, &d ) convert e type to IEEE long double precision * ltoe( &l, e ) long (32 bit) integer to e type * ultoe( &l, e ) unsigned long (32 bit) integer to e type * eisneg( e ) 1 if sign bit of e != 0, else 0 * eisinf( e ) 1 if e has maximum exponent (non-IEEE) * or is infinite (IEEE) * eisnan( e ) 1 if e is a NaN * esqrt( a, b ) b = square root of a * * * Routines for internal format numbers * * eaddm( ai, bi ) add significands, bi = bi + ai * ecleaz(ei) ei = 0 * ecleazs(ei) set ei = 0 but leave its sign alone * ecmpm( ai, bi ) compare significands, return 1, 0, or -1 * edivm( ai, bi, ldp ) divide significands, bi = bi / ai * emdnorm(ai,l,s,exp,ldp) normalize and round off * emovi( a, ai ) convert external a to internal ai * emovo( ai, a, ldp ) convert internal ai to external a * emovz( ai, bi ) bi = ai, low guard word of bi = 0 * emulm( ai, bi, ldp ) multiply significands, bi = bi * ai * enormlz(ei) left-justify the significand * eshdn1( ai ) shift significand and guards down 1 bit * eshdn8( ai ) shift down 8 bits * eshdn6( ai ) shift down 16 bits * eshift( ai, n ) shift ai n bits up (or down if n < 0) * eshup1( ai ) shift significand and guards up 1 bit * eshup8( ai ) shift up 8 bits * eshup6( ai ) shift up 16 bits * esubm( ai, bi ) subtract significands, bi = bi - ai * * * The result is always normalized and rounded to NI-4 word precision * after each arithmetic operation. * * Exception flags are NOT fully supported. * * Define INFINITY in mconf.h for support of infinity; otherwise a * saturation arithmetic is implemented. * * Define NANS for support of Not-a-Number items; otherwise the * arithmetic will never produce a NaN output, and might be confused * by a NaN input. * If NaN's are supported, the output of ecmp(a,b) is -2 if * either a or b is a NaN. This means asking if(ecmp(a,b) < 0) * may not be legitimate. Use if(ecmp(a,b) == -1) for less-than * if in doubt. * Signaling NaN's are NOT supported; they are treated the same * as quiet NaN's. * * Denormals are always supported here where appropriate (e.g., not * for conversion to DEC numbers). */ /* * Revision history: * * 5 Jan 84 PDP-11 assembly language version * 6 Dec 86 C language version * 30 Aug 88 100 digit version, improved rounding * 15 May 92 80-bit long double support * 22 Nov 00 Revised to fit into newlib by Jeff Johnston * * Author: S. L. Moshier. * * Copyright (c) 1984,2000 S.L. Moshier * * Permission to use, copy, modify, and distribute this software for any * purpose without fee is hereby granted, provided that this entire notice * is included in all copies of any software which is or includes a copy * or modification of this software and in all copies of the supporting * documentation for such software. * * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED * WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION * OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS * SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. * */ #include /* #include "\usr\include\stdio.h" */ /*#include "ehead.h"*/ /*#include "mconf.h"*/ /* mconf.h * * Common include file for math routines * * * * SYNOPSIS: * * #include "mconf.h" * * * * DESCRIPTION: * * This file contains definitions for error codes that are * passed to the common error handling routine mtherr() * (which see). * * The file also includes a conditional assembly definition * for the type of computer arithmetic (IEEE, DEC, Motorola * IEEE, or UNKnown). * * For Digital Equipment PDP-11 and VAX computers, certain * IBM systems, and others that use numbers with a 56-bit * significand, the symbol DEC should be defined. In this * mode, most floating point constants are given as arrays * of octal integers to eliminate decimal to binary conversion * errors that might be introduced by the compiler. * * For computers, such as IBM PC, that follow the IEEE * Standard for Binary Floating Point Arithmetic (ANSI/IEEE * Std 754-1985), the symbol IBMPC should be defined. These * numbers have 53-bit significands. In this mode, constants * are provided as arrays of hexadecimal 16 bit integers. * * To accommodate other types of computer arithmetic, all * constants are also provided in a normal decimal radix * which one can hope are correctly converted to a suitable * format by the available C language compiler. To invoke * this mode, the symbol UNK is defined. * * An important difference among these modes is a predefined * set of machine arithmetic constants for each. The numbers * MACHEP (the machine roundoff error), MAXNUM (largest number * represented), and several other parameters are preset by * the configuration symbol. Check the file const.c to * ensure that these values are correct for your computer. * * For ANSI C compatibility, define ANSIC equal to 1. Currently * this affects only the atan2() function and others that use it. */ /* Constant definitions for math error conditions */ #define DOMAIN 1 /* argument domain error */ #define SING 2 /* argument singularity */ #define OVERFLOW 3 /* overflow range error */ #define UNDERFLOW 4 /* underflow range error */ #define TLOSS 5 /* total loss of precision */ #define PLOSS 6 /* partial loss of precision */ #define EDOM 33 #define ERANGE 34 typedef struct { double r; double i; }cmplx; /* Type of computer arithmetic */ #ifndef DEC #ifdef __IEEE_LITTLE_ENDIAN #define IBMPC 1 #else /* !__IEEE_LITTLE_ENDIAN */ #define MIEEE 1 #endif /* !__IEEE_LITTLE_ENDIAN */ #endif /* !DEC */ /* Define 1 for ANSI C atan2() function * See atan.c and clog.c. */ #define ANSIC 1 /*define VOLATILE volatile*/ #define VOLATILE #define NANS #define INFINITY /* NaN's require infinity support. */ #ifdef NANS #ifndef INFINITY #define INFINITY #endif #endif /* This handles 64-bit long ints. */ #define LONGBITS (8 * sizeof(long)) static void eaddm(short unsigned int *x, short unsigned int *y); static void esubm(short unsigned int *x, short unsigned int *y); static void emdnorm(short unsigned int *s, int lost, int subflg, long int exp, int rcntrl, LDPARMS *ldp); static int asctoeg(char *ss, short unsigned int *y, int oprec, LDPARMS *ldp); static void enan(short unsigned int *nan, int size); #if SIMD_LDBL_MANT_DIG == 24 static void toe24(short unsigned int *x, short unsigned int *y); #elif SIMD_LDBL_MANT_DIG == 53 static void toe53(short unsigned int *x, short unsigned int *y); #elif SIMD_LDBL_MANT_DIG == 64 static void toe64(short unsigned int *a, short unsigned int *b); #else static void toe113(short unsigned int *a, short unsigned int *b); #endif static void eiremain(short unsigned int *den, short unsigned int *num, LDPARMS *ldp); static int ecmpm(register short unsigned int *a, register short unsigned int *b); static int edivm(short unsigned int *den, short unsigned int *num, LDPARMS *ldp); static int emulm(short unsigned int *a, short unsigned int *b, LDPARMS *ldp); static int eisneg(short unsigned int *x); static int eisinf(short unsigned int *x); static void emovi(short unsigned int *a, short unsigned int *b); static void emovo(short unsigned int *a, short unsigned int *b, LDPARMS *ldp); static void emovz(register short unsigned int *a, register short unsigned int *b); static void ecleaz(register short unsigned int *xi); static void eadd1(short unsigned int *a, short unsigned int *b, short unsigned int *c, int subflg, LDPARMS *ldp); static int eisnan(short unsigned int *x); static int eiisnan(short unsigned int *x); #ifdef DEC static void etodec(), todec(), dectoe(); #endif /* ; Clear out entire external format number. ; ; unsigned short x[]; ; eclear( x ); */ static void eclear(register short unsigned int *x) { register int i; for( i=0; irndprc < NBITS ) { if (ldp->rndprc == 113) { *(x - 9) = 0; *(x - 8) = 0; } if( ldp->rndprc == 64 ) { *(x-5) = 0; } if( ldp->rndprc == 53 ) { *(x-4) = 0xf800; } else { *(x-4) = 0; *(x-3) = 0; *(x-2) = 0xff00; } } #endif } /* Move in external format number, * converting it to internal format. */ static void emovi(short unsigned int *a, short unsigned int *b) { register unsigned short *p, *q; int i; q = b; p = a + (NE-1); /* point to last word of external number */ /* get the sign bit */ if( *p & 0x8000 ) *q++ = 0xffff; else *q++ = 0; /* get the exponent */ *q = *p--; *q++ &= 0x7fff; /* delete the sign bit */ #ifdef INFINITY if( (*(q-1) & 0x7fff) == 0x7fff ) { #ifdef NANS if( eisnan(a) ) { *q++ = 0; for( i=3; i b ; 0 if a == b ; -1 if a < b */ static int ecmpm(register short unsigned int *a, register short unsigned int *b) { int i; a += M; /* skip up to significand area */ b += M; for( i=M; i *(--b) ) return(1); else return(-1); } /* ; Shift significand down by 1 bit */ static void eshdn1(register short unsigned int *x) { register unsigned short bits; int i; x += M; /* point to significand area */ bits = 0; for( i=M; i>= 1; if( bits & 2 ) *x |= 0x8000; bits <<= 1; ++x; } } /* ; Shift significand up by 1 bit */ static void eshup1(register short unsigned int *x) { register unsigned short bits; int i; x += NI-1; bits = 0; for( i=M; i>= 8; *x |= oldbyt; oldbyt = newbyt; ++x; } } /* ; Shift significand up by 8 bits */ static void eshup8(register short unsigned int *x) { int i; register unsigned short newbyt, oldbyt; x += NI-1; oldbyt = 0; for( i=M; i> 8; *x <<= 8; *x |= oldbyt; oldbyt = newbyt; --x; } } /* ; Shift significand up by 16 bits */ static void eshup6(register short unsigned int *x) { int i; register unsigned short *p; p = x + M; x += M + 1; for( i=M; i> 16) + (m >> 16) + *pp; *pp = (unsigned short )carry; *(pp-1) = carry >> 16; } } for( i=M; iequot; p = &equot[0]; *p++ = num[0]; *p++ = num[1]; for( i=M; i tdenm ) tquot = 0xffff; */ /* Multiply denominator by trial quotient digit. */ m16m( tquot, den, tprod ); /* The quotient digit may have been overestimated. */ if( ecmpm( tprod, num ) > 0 ) { tquot -= 1; esubm( den, tprod ); if( ecmpm( tprod, num ) > 0 ) { tquot -= 1; esubm( den, tprod ); } } /* if( ecmpm( tprod, num ) > 0 ) { eshow( "tprod", tprod ); eshow( "num ", num ); printf( "tnum = %08lx, tden = %04x, tquot = %04x\n", tnum, den[M+1], tquot ); } */ esubm( tprod, num ); /* if( ecmpm( num, den ) >= 0 ) { eshow( "num ", num ); eshow( "den ", den ); printf( "tnum = %08lx, tden = %04x, tquot = %04x\n", tnum, den[M+1], tquot ); } */ equot[i] = tquot; eshup6(num); } /* test for nonzero remainder after roundoff bit */ p = &num[M]; j = 0; for( i=M; iequot; equot[0] = b[0]; equot[1] = b[1]; for( i=M; i NBITS ) { ecleazs( s ); return; } #endif exp -= j; #ifndef INFINITY if( exp >= 32767L ) goto overf; #else if( (j > NBITS) && (exp < 32767L) ) { ecleazs( s ); return; } #endif if( exp < 0L ) { if( exp > (long )(-NBITS-1) ) { j = (int )exp; i = eshift( s, j ); if( i ) lost = 1; } else { ecleazs( s ); return; } } /* Round off, unless told not to by rcntrl. */ if( rcntrl == 0 ) goto mdfin; /* Set up rounding parameters if the control register changed. */ if( ldp->rndprc != ldp->rlast ) { ecleaz( ldp->rbit ); switch( ldp->rndprc ) { default: case NBITS: ldp->rw = NI-1; /* low guard word */ ldp->rmsk = 0xffff; ldp->rmbit = 0x8000; ldp->rebit = 1; ldp->re = ldp->rw - 1; break; case 113: ldp->rw = 10; ldp->rmsk = 0x7fff; ldp->rmbit = 0x4000; ldp->rebit = 0x8000; ldp->re = ldp->rw; break; case 64: ldp->rw = 7; ldp->rmsk = 0xffff; ldp->rmbit = 0x8000; ldp->rebit = 1; ldp->re = ldp->rw-1; break; /* For DEC arithmetic */ case 56: ldp->rw = 6; ldp->rmsk = 0xff; ldp->rmbit = 0x80; ldp->rebit = 0x100; ldp->re = ldp->rw; break; case 53: ldp->rw = 6; ldp->rmsk = 0x7ff; ldp->rmbit = 0x0400; ldp->rebit = 0x800; ldp->re = ldp->rw; break; case 24: ldp->rw = 4; ldp->rmsk = 0xff; ldp->rmbit = 0x80; ldp->rebit = 0x100; ldp->re = ldp->rw; break; } ldp->rbit[ldp->re] = ldp->rebit; ldp->rlast = ldp->rndprc; } /* Shift down 1 temporarily if the data structure has an implied * most significant bit and the number is denormal. * For rndprc = 64 or NBITS, there is no implied bit. * But Intel long double denormals lose one bit of significance even so. */ #if IBMPC if( (exp <= 0) && (ldp->rndprc != NBITS) ) #else if( (exp <= 0) && (ldp->rndprc != 64) && (ldp->rndprc != NBITS) ) #endif { lost |= s[NI-1] & 1; eshdn1(s); } /* Clear out all bits below the rounding bit, * remembering in r if any were nonzero. */ r = s[ldp->rw] & ldp->rmsk; if( ldp->rndprc < NBITS ) { i = ldp->rw + 1; while( i < NI ) { if( s[i] ) r |= 1; s[i] = 0; ++i; } } s[ldp->rw] &= ~ldp->rmsk; if( (r & ldp->rmbit) != 0 ) { if( r == ldp->rmbit ) { if( lost == 0 ) { /* round to even */ if( (s[ldp->re] & ldp->rebit) == 0 ) goto mddone; } else { if( subflg != 0 ) goto mddone; } } eaddm( ldp->rbit, s ); } mddone: #if IBMPC if( (exp <= 0) && (ldp->rndprc != NBITS) ) #else if( (exp <= 0) && (ldp->rndprc != 64) && (ldp->rndprc != NBITS) ) #endif { eshup1(s); } if( s[2] != 0 ) { /* overflow on roundoff */ eshdn1(s); exp += 1; } mdfin: s[NI-1] = 0; if( exp >= 32767L ) { #ifndef INFINITY overf: #endif #ifdef INFINITY s[1] = 32767; for( i=2; irndprc < 64) || (ldp->rndprc == 113) ) { s[ldp->rw] &= ~ldp->rmsk; if( ldp->rndprc == 24 ) { s[5] = 0; s[6] = 0; } } #endif return; } if( exp < 0 ) s[1] = 0; else s[1] = (unsigned short )exp; } /* ; Subtract external format numbers. ; ; unsigned short a[NE], b[NE], c[NE]; ; LDPARMS *ldp; ; esub( a, b, c, ldp ); c = b - a */ static void esub(short unsigned int *a, short unsigned int *b, short unsigned int *c, LDPARMS *ldp) { #ifdef NANS if( eisnan(a) ) { emov (a, c); return; } if( eisnan(b) ) { emov(b,c); return; } /* Infinity minus infinity is a NaN. * Test for subtracting infinities of the same sign. */ if( eisinf(a) && eisinf(b) && ((eisneg (a) ^ eisneg (b)) == 0)) { mtherr( "esub", DOMAIN ); enan( c, NBITS ); return; } #endif eadd1( a, b, c, 1, ldp ); } static void eadd1(short unsigned int *a, short unsigned int *b, short unsigned int *c, int subflg, LDPARMS *ldp) { unsigned short ai[NI], bi[NI], ci[NI]; int i, lost, j, k; long lt, lta, ltb; #ifdef INFINITY if( eisinf(a) ) { emov(a,c); if( subflg ) eneg(c); return; } if( eisinf(b) ) { emov(b,c); return; } #endif emovi( a, ai ); emovi( b, bi ); if( subflg ) ai[0] = ~ai[0]; /* compare exponents */ lta = ai[E]; ltb = bi[E]; lt = lta - ltb; if( lt > 0L ) { /* put the larger number in bi */ emovz( bi, ci ); emovz( ai, bi ); emovz( ci, ai ); ltb = bi[E]; lt = -lt; } lost = 0; if( lt != 0L ) { if( lt < (long )(-NBITS-1) ) goto done; /* answer same as larger addend */ k = (int )lt; lost = eshift( ai, k ); /* shift the smaller number down */ } else { /* exponents were the same, so must compare significands */ i = ecmpm( ai, bi ); if( i == 0 ) { /* the numbers are identical in magnitude */ /* if different signs, result is zero */ if( ai[0] != bi[0] ) { eclear(c); return; } /* if same sign, result is double */ /* double denomalized tiny number */ if( (bi[E] == 0) && ((bi[3] & 0x8000) == 0) ) { eshup1( bi ); goto done; } /* add 1 to exponent unless both are zero! */ for( j=1; j 0 ) { /* put the larger number in bi */ emovz( bi, ci ); emovz( ai, bi ); emovz( ci, ai ); } } if( ai[0] == bi[0] ) { eaddm( ai, bi ); subflg = 0; } else { esubm( ai, bi ); subflg = 1; } emdnorm( bi, lost, subflg, ltb, 64, ldp ); done: emovo( bi, c, ldp ); } /* ; Divide. ; ; unsigned short a[NE], b[NE], c[NE]; ; LDPARMS *ldp; ; ediv( a, b, c, ldp ); c = b / a */ static void ediv(short unsigned int *a, short unsigned int *b, short unsigned int *c, LDPARMS *ldp) { unsigned short ai[NI], bi[NI]; int i; long lt, lta, ltb; #ifdef NANS /* Return any NaN input. */ if( eisnan(a) ) { emov(a,c); return; } if( eisnan(b) ) { emov(b,c); return; } /* Zero over zero, or infinity over infinity, is a NaN. */ if( ((ecmp(a,ezero) == 0) && (ecmp(b,ezero) == 0)) || (eisinf (a) && eisinf (b)) ) { mtherr( "ediv", DOMAIN ); enan( c, NBITS ); return; } #endif /* Infinity over anything else is infinity. */ #ifdef INFINITY if( eisinf(b) ) { if( eisneg(a) ^ eisneg(b) ) *(c+(NE-1)) = 0x8000; else *(c+(NE-1)) = 0; einfin(c, ldp); return; } if( eisinf(a) ) { eclear(c); return; } #endif emovi( a, ai ); emovi( b, bi ); lta = ai[E]; ltb = bi[E]; if( bi[E] == 0 ) { /* See if numerator is zero. */ for( i=1; i 64 static void e113toe(short unsigned int *pe, short unsigned int *y, LDPARMS *ldp) { register unsigned short r; unsigned short *e, *p; unsigned short yy[NI]; int denorm, i; e = pe; denorm = 0; ecleaz(yy); #ifdef IBMPC e += 7; #endif r = *e; yy[0] = 0; if( r & 0x8000 ) yy[0] = 0xffff; r &= 0x7fff; #ifdef INFINITY if( r == 0x7fff ) { #ifdef NANS #ifdef IBMPC for( i=0; i<7; i++ ) { if( pe[i] != 0 ) { enan( y, NBITS ); return; } } #else /* !IBMPC */ for( i=1; i<8; i++ ) { if( pe[i] != 0 ) { enan( y, NBITS ); return; } } #endif /* !IBMPC */ #endif /* NANS */ eclear( y ); einfin( y, ldp ); if( *e & 0x8000 ) eneg(y); return; } #endif /* INFINITY */ yy[E] = r; p = &yy[M + 1]; #ifdef IBMPC for( i=0; i<7; i++ ) *p++ = *(--e); #else /* IBMPC */ ++e; for( i=0; i<7; i++ ) *p++ = *e++; #endif /* IBMPC */ /* If denormal, remove the implied bit; else shift down 1. */ if( r == 0 ) { yy[M] = 0; } else { yy[M] = 1; eshift( yy, -1 ); } emovo(yy,y,ldp); } /* move out internal format to ieee long double */ static void toe113(short unsigned int *a, short unsigned int *b) { register unsigned short *p, *q; unsigned short i; #ifdef NANS if( eiisnan(a) ) { enan( b, 113 ); return; } #endif p = a; #ifdef MIEEE q = b; #else q = b + 7; /* point to output exponent */ #endif /* If not denormal, delete the implied bit. */ if( a[E] != 0 ) { eshup1 (a); } /* combine sign and exponent */ i = *p++; #ifdef MIEEE if( i ) *q++ = *p++ | 0x8000; else *q++ = *p++; #else if( i ) *q-- = *p++ | 0x8000; else *q-- = *p++; #endif /* skip over guard word */ ++p; /* move the significand */ #ifdef MIEEE for (i = 0; i < 7; i++) *q++ = *p++; #else for (i = 0; i < 7; i++) *q-- = *p++; #endif } #endif /* SIMD_LDBL_MANT_DIG > 64 */ #if SIMD_LDBL_MANT_DIG == 64 static void e64toe(short unsigned int *pe, short unsigned int *y, LDPARMS *ldp) { unsigned short yy[NI]; unsigned short *p, *q, *e; int i; e = pe; p = yy; for( i=0; i>= 4; /* If zero exponent, then the significand is denormalized. * So, take back the understood high significand bit. */ if( r == 0 ) { denorm = 1; yy[M] &= ~0x10; } r += EXONE - 01777; yy[E] = r; p = &yy[M+1]; #ifdef IBMPC *p++ = *(--e); *p++ = *(--e); *p++ = *(--e); #else /* !IBMPC */ ++e; *p++ = *e++; *p++ = *e++; *p++ = *e++; #endif /* !IBMPC */ (void )eshift( yy, -5 ); if( denorm ) { /* if zero exponent, then normalize the significand */ if( (k = enormlz(yy)) > NBITS ) ecleazs(yy); else yy[E] -= (unsigned short )(k-1); } emovo( yy, y, ldp ); #endif /* !DEC */ } /* ; e type to IEEE double precision ; double d; ; unsigned short x[NE]; ; etoe53( x, &d ); */ #ifdef DEC static void etoe53( x, e ) unsigned short *x, *e; { etodec( x, e ); /* see etodec.c */ } static void toe53( x, y ) unsigned short *x, *y; { todec( x, y ); } #else static void toe53(short unsigned int *x, short unsigned int *y) { unsigned short i; unsigned short *p; #ifdef NANS if( eiisnan(x) ) { enan( y, 53 ); return; } #endif p = &x[0]; #ifdef IBMPC y += 3; #endif #ifdef DEC y += 3; #endif *y = 0; /* output high order */ if( *p++ ) *y = 0x8000; /* output sign bit */ i = *p++; if( i >= (unsigned int )2047 ) { /* Saturate at largest number less than infinity. */ #ifdef INFINITY *y |= 0x7ff0; #ifdef IBMPC *(--y) = 0; *(--y) = 0; *(--y) = 0; #else /* !IBMPC */ ++y; *y++ = 0; *y++ = 0; *y++ = 0; #endif /* IBMPC */ #else /* !INFINITY */ *y |= (unsigned short )0x7fef; #ifdef IBMPC *(--y) = 0xffff; *(--y) = 0xffff; *(--y) = 0xffff; #else /* !IBMPC */ ++y; *y++ = 0xffff; *y++ = 0xffff; *y++ = 0xffff; #endif #endif /* !INFINITY */ return; } if( i == 0 ) { (void )eshift( x, 4 ); } else { i <<= 4; (void )eshift( x, 5 ); } i |= *p++ & (unsigned short )0x0f; /* *p = xi[M] */ *y |= (unsigned short )i; /* high order output already has sign bit set */ #ifdef IBMPC *(--y) = *p++; *(--y) = *p++; *(--y) = *p; #else /* !IBMPC */ ++y; *y++ = *p++; *y++ = *p++; *y++ = *p++; #endif /* !IBMPC */ } #endif /* not DEC */ #endif /* SIMD_LDBL_MANT_DIG == 53 */ #if SIMD_LDBL_MANT_DIG == 24 /* ; Convert IEEE single precision to e type ; float d; ; unsigned short x[N+2]; ; dtox( &d, x ); */ void e24toe( short unsigned int *pe, short unsigned int *y, LDPARMS *ldp ) { register unsigned short r; register unsigned short *p, *e; unsigned short yy[NI]; int denorm, k; e = pe; denorm = 0; /* flag if denormalized number */ ecleaz(yy); #ifdef IBMPC e += 1; #endif #ifdef DEC e += 1; #endif r = *e; yy[0] = 0; if( r & 0x8000 ) yy[0] = 0xffff; yy[M] = (r & 0x7f) | 0200; r &= ~0x807f; /* strip sign and 7 significand bits */ #ifdef INFINITY if( r == 0x7f80 ) { #ifdef NANS #ifdef MIEEE if( ((pe[0] & 0x7f) != 0) || (pe[1] != 0) ) { enan( y, NBITS ); return; } #else /* !MIEEE */ if( ((pe[1] & 0x7f) != 0) || (pe[0] != 0) ) { enan( y, NBITS ); return; } #endif /* !MIEEE */ #endif /* NANS */ eclear( y ); einfin( y, ldp ); if( yy[0] ) eneg(y); return; } #endif r >>= 7; /* If zero exponent, then the significand is denormalized. * So, take back the understood high significand bit. */ if( r == 0 ) { denorm = 1; yy[M] &= ~0200; } r += EXONE - 0177; yy[E] = r; p = &yy[M+1]; #ifdef IBMPC *p++ = *(--e); #endif #ifdef DEC *p++ = *(--e); #endif #ifdef MIEEE ++e; *p++ = *e++; #endif (void )eshift( yy, -8 ); if( denorm ) { /* if zero exponent, then normalize the significand */ if( (k = enormlz(yy)) > NBITS ) ecleazs(yy); else yy[E] -= (unsigned short )(k-1); } emovo( yy, y, ldp ); } static void toe24(short unsigned int *x, short unsigned int *y) { unsigned short i; unsigned short *p; #ifdef NANS if( eiisnan(x) ) { enan( y, 24 ); return; } #endif p = &x[0]; #ifdef IBMPC y += 1; #endif #ifdef DEC y += 1; #endif *y = 0; /* output high order */ if( *p++ ) *y = 0x8000; /* output sign bit */ i = *p++; if( i >= 255 ) { /* Saturate at largest number less than infinity. */ #ifdef INFINITY *y |= (unsigned short )0x7f80; #ifdef IBMPC *(--y) = 0; #endif #ifdef DEC *(--y) = 0; #endif #ifdef MIEEE ++y; *y = 0; #endif #else /* !INFINITY */ *y |= (unsigned short )0x7f7f; #ifdef IBMPC *(--y) = 0xffff; #endif #ifdef DEC *(--y) = 0xffff; #endif #ifdef MIEEE ++y; *y = 0xffff; #endif #endif /* !INFINITY */ return; } if( i == 0 ) { (void )eshift( x, 7 ); } else { i <<= 7; (void )eshift( x, 8 ); } i |= *p++ & (unsigned short )0x7f; /* *p = xi[M] */ *y |= i; /* high order output already has sign bit set */ #ifdef IBMPC *(--y) = *p; #endif #ifdef DEC *(--y) = *p; #endif #ifdef MIEEE ++y; *y = *p; #endif } #endif /* SIMD_LDBL_MANT_DIG == 24 */ /* Compare two e type numbers. * * unsigned short a[NE], b[NE]; * ecmp( a, b ); * * returns +1 if a > b * 0 if a == b * -1 if a < b * -2 if either a or b is a NaN. */ static int ecmp(short unsigned int *a, short unsigned int *b) { unsigned short ai[NI], bi[NI]; register unsigned short *p, *q; register int i; int msign; #ifdef NANS if (eisnan (a) || eisnan (b)) return( -2 ); #endif emovi( a, ai ); p = ai; emovi( b, bi ); q = bi; if( *p != *q ) { /* the signs are different */ /* -0 equals + 0 */ for( i=1; i 0 ); return(0); /* equality */ diff: if( *(--p) > *(--q) ) return( msign ); /* p is bigger */ else return( -msign ); /* p is littler */ } /* ; Shift significand ; ; Shifts significand area up or down by the number of bits ; given by the variable sc. */ static int eshift(short unsigned int *x, int sc) { unsigned short lost; unsigned short *p; if( sc == 0 ) return( 0 ); lost = 0; p = x + NI-1; if( sc < 0 ) { sc = -sc; while( sc >= 16 ) { lost |= *p; /* remember lost bits */ eshdn6(x); sc -= 16; } while( sc >= 8 ) { lost |= *p & 0xff; eshdn8(x); sc -= 8; } while( sc > 0 ) { lost |= *p & 1; eshdn1(x); sc -= 1; } } else { while( sc >= 16 ) { eshup6(x); sc -= 16; } while( sc >= 8 ) { eshup8(x); sc -= 8; } while( sc > 0 ) { eshup1(x); sc -= 1; } } if( lost ) lost = 1; return( (int )lost ); } /* ; normalize ; ; Shift normalizes the significand area pointed to by argument ; shift count (up = positive) is returned. */ static int enormlz(short unsigned int *x) { register unsigned short *p; int sc; sc = 0; p = &x[M]; if( *p != 0 ) goto normdn; ++p; if( *p & 0x8000 ) return( 0 ); /* already normalized */ while( *p == 0 ) { eshup6(x); sc += 16; /* With guard word, there are NBITS+16 bits available. * return true if all are zero. */ if( sc > NBITS ) return( sc ); } /* see if high byte is zero */ while( (*p & 0xff00) == 0 ) { eshup8(x); sc += 8; } /* now shift 1 bit at a time */ while( (*p & 0x8000) == 0) { eshup1(x); sc += 1; if( sc > (NBITS+16) ) { mtherr( "enormlz", UNDERFLOW ); return( sc ); } } return( sc ); /* Normalize by shifting down out of the high guard word of the significand */ normdn: if( *p & 0xff00 ) { eshdn8(x); sc -= 8; } while( *p != 0 ) { eshdn1(x); sc -= 1; if( sc < -NBITS ) { mtherr( "enormlz", OVERFLOW ); return( sc ); } } return( sc ); } /* Convert e type number to decimal format ASCII string. * The constants are for 64 bit precision. */ #define NTEN 12 #define MAXP 4096 #if NE == 10 static unsigned short etens[NTEN + 1][NE] = { {0x6576, 0x4a92, 0x804a, 0x153f, 0xc94c, 0x979a, 0x8a20, 0x5202, 0xc460, 0x7525,}, /* 10**4096 */ {0x6a32, 0xce52, 0x329a, 0x28ce, 0xa74d, 0x5de4, 0xc53d, 0x3b5d, 0x9e8b, 0x5a92,}, /* 10**2048 */ {0x526c, 0x50ce, 0xf18b, 0x3d28, 0x650d, 0x0c17, 0x8175, 0x7586, 0xc976, 0x4d48,}, {0x9c66, 0x58f8, 0xbc50, 0x5c54, 0xcc65, 0x91c6, 0xa60e, 0xa0ae, 0xe319, 0x46a3,}, {0x851e, 0xeab7, 0x98fe, 0x901b, 0xddbb, 0xde8d, 0x9df9, 0xebfb, 0xaa7e, 0x4351,}, {0x0235, 0x0137, 0x36b1, 0x336c, 0xc66f, 0x8cdf, 0x80e9, 0x47c9, 0x93ba, 0x41a8,}, {0x50f8, 0x25fb, 0xc76b, 0x6b71, 0x3cbf, 0xa6d5, 0xffcf, 0x1f49, 0xc278, 0x40d3,}, {0x0000, 0x0000, 0x0000, 0x0000, 0xf020, 0xb59d, 0x2b70, 0xada8, 0x9dc5, 0x4069,}, {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0400, 0xc9bf, 0x8e1b, 0x4034,}, {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2000, 0xbebc, 0x4019,}, {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9c40, 0x400c,}, {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc800, 0x4005,}, {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa000, 0x4002,}, /* 10**1 */ }; static unsigned short emtens[NTEN + 1][NE] = { {0x2030, 0xcffc, 0xa1c3, 0x8123, 0x2de3, 0x9fde, 0xd2ce, 0x04c8, 0xa6dd, 0x0ad8,}, /* 10**-4096 */ {0x8264, 0xd2cb, 0xf2ea, 0x12d4, 0x4925, 0x2de4, 0x3436, 0x534f, 0xceae, 0x256b,}, /* 10**-2048 */ {0xf53f, 0xf698, 0x6bd3, 0x0158, 0x87a6, 0xc0bd, 0xda57, 0x82a5, 0xa2a6, 0x32b5,}, {0xe731, 0x04d4, 0xe3f2, 0xd332, 0x7132, 0xd21c, 0xdb23, 0xee32, 0x9049, 0x395a,}, {0xa23e, 0x5308, 0xfefb, 0x1155, 0xfa91, 0x1939, 0x637a, 0x4325, 0xc031, 0x3cac,}, {0xe26d, 0xdbde, 0xd05d, 0xb3f6, 0xac7c, 0xe4a0, 0x64bc, 0x467c, 0xddd0, 0x3e55,}, {0x2a20, 0x6224, 0x47b3, 0x98d7, 0x3f23, 0xe9a5, 0xa539, 0xea27, 0xa87f, 0x3f2a,}, {0x0b5b, 0x4af2, 0xa581, 0x18ed, 0x67de, 0x94ba, 0x4539, 0x1ead, 0xcfb1, 0x3f94,}, {0xbf71, 0xa9b3, 0x7989, 0xbe68, 0x4c2e, 0xe15b, 0xc44d, 0x94be, 0xe695, 0x3fc9,}, {0x3d4d, 0x7c3d, 0x36ba, 0x0d2b, 0xfdc2, 0xcefc, 0x8461, 0x7711, 0xabcc, 0x3fe4,}, {0xc155, 0xa4a8, 0x404e, 0x6113, 0xd3c3, 0x652b, 0xe219, 0x1758, 0xd1b7, 0x3ff1,}, {0xd70a, 0x70a3, 0x0a3d, 0xa3d7, 0x3d70, 0xd70a, 0x70a3, 0x0a3d, 0xa3d7, 0x3ff8,}, {0xcccd, 0xcccc, 0xcccc, 0xcccc, 0xcccc, 0xcccc, 0xcccc, 0xcccc, 0xcccc, 0x3ffb,}, /* 10**-1 */ }; #else static unsigned short etens[NTEN+1][NE] = { {0xc94c,0x979a,0x8a20,0x5202,0xc460,0x7525,},/* 10**4096 */ {0xa74d,0x5de4,0xc53d,0x3b5d,0x9e8b,0x5a92,},/* 10**2048 */ {0x650d,0x0c17,0x8175,0x7586,0xc976,0x4d48,}, {0xcc65,0x91c6,0xa60e,0xa0ae,0xe319,0x46a3,}, {0xddbc,0xde8d,0x9df9,0xebfb,0xaa7e,0x4351,}, {0xc66f,0x8cdf,0x80e9,0x47c9,0x93ba,0x41a8,}, {0x3cbf,0xa6d5,0xffcf,0x1f49,0xc278,0x40d3,}, {0xf020,0xb59d,0x2b70,0xada8,0x9dc5,0x4069,}, {0x0000,0x0000,0x0400,0xc9bf,0x8e1b,0x4034,}, {0x0000,0x0000,0x0000,0x2000,0xbebc,0x4019,}, {0x0000,0x0000,0x0000,0x0000,0x9c40,0x400c,}, {0x0000,0x0000,0x0000,0x0000,0xc800,0x4005,}, {0x0000,0x0000,0x0000,0x0000,0xa000,0x4002,}, /* 10**1 */ }; static unsigned short emtens[NTEN+1][NE] = { {0x2de4,0x9fde,0xd2ce,0x04c8,0xa6dd,0x0ad8,}, /* 10**-4096 */ {0x4925,0x2de4,0x3436,0x534f,0xceae,0x256b,}, /* 10**-2048 */ {0x87a6,0xc0bd,0xda57,0x82a5,0xa2a6,0x32b5,}, {0x7133,0xd21c,0xdb23,0xee32,0x9049,0x395a,}, {0xfa91,0x1939,0x637a,0x4325,0xc031,0x3cac,}, {0xac7d,0xe4a0,0x64bc,0x467c,0xddd0,0x3e55,}, {0x3f24,0xe9a5,0xa539,0xea27,0xa87f,0x3f2a,}, {0x67de,0x94ba,0x4539,0x1ead,0xcfb1,0x3f94,}, {0x4c2f,0xe15b,0xc44d,0x94be,0xe695,0x3fc9,}, {0xfdc2,0xcefc,0x8461,0x7711,0xabcc,0x3fe4,}, {0xd3c3,0x652b,0xe219,0x1758,0xd1b7,0x3ff1,}, {0x3d71,0xd70a,0x70a3,0x0a3d,0xa3d7,0x3ff8,}, {0xcccd,0xcccc,0xcccc,0xcccc,0xcccc,0x3ffb,}, /* 10**-1 */ }; #endif /* ASCII string outputs for unix */ #if 0 void _IO_ldtostr(x, string, ndigs, flags, fmt) long double *x; char *string; int ndigs; int flags; char fmt; { unsigned short w[NI]; char *t, *u; LDPARMS rnd; LDPARMS *ldp = &rnd; rnd.rlast = -1; rnd.rndprc = NBITS; if (sizeof(long double) == 16) e113toe( (unsigned short *)x, w, ldp ); else e64toe( (unsigned short *)x, w, ldp ); etoasc( w, string, ndigs, -1, ldp ); if( ndigs == 0 && flags == 0 ) { /* Delete the decimal point unless alternate format. */ t = string; while( *t != '.' ) ++t; u = t + 1; while( *t != '\0' ) *t++ = *u++; } if (*string == ' ') { t = string; u = t + 1; while( *t != '\0' ) *t++ = *u++; } if (fmt == 'E') { t = string; while( *t != 'e' ) ++t; *t = 'E'; } } #endif /* This routine will not return more than NDEC+1 digits. */ char * _simdldtoa_r (struct _reent *ptr, LONG_DOUBLE_UNION *d, int mode, int ndigits, int *decpt, int *sign, char **rve) { unsigned short e[NI]; char *s, *p; int i, j, k; LDPARMS rnd; LDPARMS *ldp = &rnd; char *outstr; rnd.rlast = -1; rnd.rndprc = NBITS; _REENT_CHECK_MP(ptr); /* reentrancy addition to use mprec storage pool */ if (_REENT_MP_RESULT(ptr)) { _REENT_MP_RESULT(ptr)->_k = _REENT_MP_RESULT_K(ptr); _REENT_MP_RESULT(ptr)->_maxwds = 1 << _REENT_MP_RESULT_K(ptr); Bfree (ptr, _REENT_MP_RESULT(ptr)); _REENT_MP_RESULT(ptr) = 0; } #if SIMD_LDBL_MANT_DIG == 24 e24toe( (unsigned short *)d, e, ldp ); #elif SIMD_LDBL_MANT_DIG == 53 e53toe( (unsigned short *)d, e, ldp ); #elif SIMD_LDBL_MANT_DIG == 64 e64toe( (unsigned short *)d, e, ldp ); #else e113toe( (unsigned short *)d, e, ldp ); #endif if( eisneg(e) ) *sign = 1; else *sign = 0; /* Mode 3 is "f" format. */ if( mode != 3 ) ndigits -= 1; /* Mode 0 is for %.999 format, which is supposed to give a minimum length string that will convert back to the same binary value. For now, just ask for 20 digits which is enough but sometimes too many. */ if( mode == 0 ) ndigits = 20; /* reentrancy addition to use mprec storage pool */ /* we want to have enough space to hold the formatted result */ i = ndigits + (mode == 3 ? (MAX_EXP_DIGITS + 1) : 1); j = sizeof (__ULong); for (_REENT_MP_RESULT_K(ptr) = 0; sizeof (_Bigint) - sizeof (__ULong) + j <= (unsigned)i; j <<= 1) _REENT_MP_RESULT_K(ptr)++; _REENT_MP_RESULT(ptr) = Balloc (ptr, _REENT_MP_RESULT_K(ptr)); outstr = (char *)_REENT_MP_RESULT(ptr); /* This sanity limit must agree with the corresponding one in etoasc, to keep straight the returned value of outexpon. */ if( ndigits > NDEC ) ndigits = NDEC; etoasc( e, outstr, ndigits, mode, ldp ); s = outstr; if( eisinf(e) || eisnan(e) ) { *decpt = 9999; goto stripspaces; } *decpt = ldp->outexpon + 1; /* Transform the string returned by etoasc into what the caller wants. */ /* Look for decimal point and delete it from the string. */ s = outstr; while( *s != '\0' ) { if( *s == '.' ) goto yesdecpt; ++s; } goto nodecpt; yesdecpt: /* Delete the decimal point. */ while( *s != '\0' ) { *s = *(s+1); ++s; } nodecpt: /* Back up over the exponent field. */ while( *s != 'E' && s > outstr) --s; *s = '\0'; stripspaces: /* Strip leading spaces and sign. */ p = outstr; while( *p == ' ' || *p == '-') ++p; /* Find new end of string. */ s = outstr; while( (*s++ = *p++) != '\0' ) ; --s; /* Strip trailing zeros. */ if( mode == 2 ) k = 1; else if( ndigits > ldp->outexpon ) k = ndigits; else k = ldp->outexpon; while( *(s-1) == '0' && ((s - outstr) > k)) *(--s) = '\0'; /* In f format, flush small off-scale values to zero. Rounding has been taken care of by etoasc. */ if( mode == 3 && ((ndigits + ldp->outexpon) < 0)) { s = outstr; *s = '\0'; *decpt = 0; } if( rve ) *rve = s; return outstr; } /* Routine used to tell if long double is NaN or Infinity or regular number. Returns: 0 = regular number 1 = Nan 2 = Infinity */ int _simdldcheck (LONG_DOUBLE_UNION *d) { unsigned short e[NI]; LDPARMS rnd; LDPARMS *ldp = &rnd; rnd.rlast = -1; rnd.rndprc = NBITS; #if SIMD_LDBL_MANT_DIG == 24 e24toe( (unsigned short *)d, e, ldp ); #elif SIMD_LDBL_MANT_DIG == 53 e53toe( (unsigned short *)d, e, ldp ); #elif SIMD_LDBL_MANT_DIG == 64 e64toe( (unsigned short *)d, e, ldp ); #else e113toe( (unsigned short *)d, e, ldp ); #endif if( (e[NE-1] & 0x7fff) == 0x7fff ) { #ifdef NANS if( eisnan(e) ) return( 1 ); #endif return( 2 ); } else return( 0 ); } /* _ldcheck */ static void etoasc(short unsigned int *x, char *string, int ndigits, int outformat, LDPARMS *ldp) { long digit; unsigned short y[NI], t[NI], u[NI], w[NI]; unsigned short *p, *r, *ten; unsigned short sign; int i, j, k, expon, rndsav, ndigs; char *s, *ss; unsigned short m; unsigned short *equot = ldp->equot; ndigs = ndigits; rndsav = ldp->rndprc; #ifdef NANS if( eisnan(x) ) { sprintf( string, " NaN " ); expon = 9999; goto bxit; } #endif ldp->rndprc = NBITS; /* set to full precision */ emov( x, y ); /* retain external format */ if( y[NE-1] & 0x8000 ) { sign = 0xffff; y[NE-1] &= 0x7fff; } else { sign = 0; } expon = 0; ten = &etens[NTEN][0]; emov( eone, t ); /* Test for zero exponent */ if( y[NE-1] == 0 ) { for( k=0; k>= 1; } while( m != 0 ); /* Rescale from integer significand */ u[NE-1] += y[NE-1] - (unsigned int )(EXONE + NBITS - 1); emov( u, y ); /* Find power of 10 */ emov( eone, t ); m = MAXP; p = &etens[0][0]; while( ecmp( ten, u ) <= 0 ) { if( ecmp( p, u ) <= 0 ) { ediv( p, u, u, ldp ); emul( p, t, t, ldp ); expon += (int )m; } m >>= 1; if( m == 0 ) break; p += NE; } } else { /* Number is less than 1.0 */ /* Pad significand with trailing decimal zeros. */ if( y[NE-1] == 0 ) { while( (y[NE-2] & 0x8000) == 0 ) { emul( ten, y, y, ldp ); expon -= 1; } } else { emovi( y, w ); for( i=0; i 0 ) { if( ecmp( p, w ) >= 0 ) { emul( r, w, w, ldp ); emul( r, t, t, ldp ); expon += k; } k /= 2; if( k == 0 ) break; p += NE; r += NE; } ediv( t, eone, t, ldp ); } isone: /* Find the first (leading) digit. */ emovi( t, w ); emovz( w, t ); emovi( y, w ); emovz( w, y ); eiremain( t, y, ldp ); digit = equot[NI-1]; while( (digit == 0) && (ecmp(y,ezero) != 0) ) { eshup1( y ); emovz( y, u ); eshup1( u ); eshup1( u ); eaddm( u, y ); eiremain( t, y, ldp ); digit = equot[NI-1]; expon -= 1; } s = string; if( sign ) *s++ = '-'; else *s++ = ' '; /* Examine number of digits requested by caller. */ if( outformat == 3 ) ndigs += expon; /* else if( ndigs < 0 ) ndigs = 0; */ if( ndigs > NDEC ) ndigs = NDEC; if( digit == 10 ) { *s++ = '1'; *s++ = '.'; if( ndigs > 0 ) { *s++ = '0'; ndigs -= 1; } expon += 1; if( ndigs < 0 ) { ss = s; goto doexp; } } else { *s++ = (char )digit + '0'; *s++ = '.'; } /* Generate digits after the decimal point. */ for( k=0; k<=ndigs; k++ ) { /* multiply current number by 10, without normalizing */ eshup1( y ); emovz( y, u ); eshup1( u ); eshup1( u ); eaddm( u, y ); eiremain( t, y, ldp ); *s++ = (char )equot[NI-1] + '0'; } digit = equot[NI-1]; --s; ss = s; /* round off the ASCII string */ if( digit > 4 ) { /* Test for critical rounding case in ASCII output. */ if( digit == 5 ) { emovo( y, t, ldp ); if( ecmp(t,ezero) != 0 ) goto roun; /* round to nearest */ if( (*(s-1) & 1) == 0 ) goto doexp; /* round to even */ } /* Round up and propagate carry-outs */ roun: --s; k = *s & 0x7f; /* Carry out to most significant digit? */ if( ndigs < 0 ) { /* This will print like "1E-6". */ *s = '1'; expon += 1; goto doexp; } else if( k == '.' ) { --s; k = *s; k += 1; *s = (char )k; /* Most significant digit carries to 10? */ if( k > '9' ) { expon += 1; *s = '1'; } goto doexp; } /* Round up and carry out from less significant digits */ k += 1; *s = (char )k; if( k > '9' ) { *s = '0'; goto roun; } } doexp: #ifdef __GO32__ if( expon >= 0 ) sprintf( ss, "e+%02d", expon ); else sprintf( ss, "e-%02d", -expon ); #else sprintf( ss, "E%d", expon ); #endif bxit: ldp->rndprc = rndsav; ldp->outexpon = expon; } /* ; ASCTOQ ; ASCTOQ.MAC LATEST REV: 11 JAN 84 ; SLM, 3 JAN 78 ; ; Convert ASCII string to quadruple precision floating point ; ; Numeric input is free field decimal number ; with max of 15 digits with or without ; decimal point entered as ASCII from teletype. ; Entering E after the number followed by a second ; number causes the second number to be interpreted ; as a power of 10 to be multiplied by the first number ; (i.e., "scientific" notation). ; ; Usage: ; asctoq( string, q ); */ void _simdstrtold (char *s, char **se, LONG_DOUBLE_UNION *x) { LDPARMS rnd; LDPARMS *ldp = &rnd; int lenldstr; rnd.rlast = -1; rnd.rndprc = NBITS; lenldstr = asctoeg( s, (unsigned short *)x, SIMD_LDBL_MANT_DIG, ldp ); if (se) *se = s + lenldstr; } #define REASONABLE_LEN 200 static int asctoeg(char *ss, short unsigned int *y, int oprec, LDPARMS *ldp) { unsigned short yy[NI], xt[NI], tt[NI]; int esign, decflg, sgnflg, nexp, exp, prec, lost; int k, trail, c, rndsav; long lexp; unsigned short nsign, *p; char *sp, *s, *lstr; int lenldstr; int mflag = 0; char tmpstr[REASONABLE_LEN]; /* Copy the input string. */ c = strlen (ss) + 2; if (c <= REASONABLE_LEN) lstr = tmpstr; else { lstr = (char *) calloc (c, 1); mflag = 1; } s = ss; lenldstr = 0; while( *s == ' ' ) /* skip leading spaces */ { ++s; ++lenldstr; } sp = lstr; for( k=0; krndprc; ldp->rndprc = NBITS; /* Set to full precision */ lost = 0; nsign = 0; decflg = 0; sgnflg = 0; nexp = 0; exp = 0; prec = 0; ecleaz( yy ); trail = 0; nxtcom: k = *s - '0'; if( (k >= 0) && (k <= 9) ) { /* Ignore leading zeros */ if( (prec == 0) && (decflg == 0) && (k == 0) ) goto donchr; /* Identify and strip trailing zeros after the decimal point. */ if( (trail == 0) && (decflg != 0) ) { sp = s; while( (*sp >= '0') && (*sp <= '9') ) ++sp; /* Check for syntax error */ c = *sp & 0x7f; if( (c != 'e') && (c != 'E') && (c != '\0') && (c != '\n') && (c != '\r') && (c != ' ') && (c != ',') ) goto error; --sp; while( *sp == '0' ) *sp-- = 'z'; trail = 1; if( *s == 'z' ) goto donchr; } /* If enough digits were given to more than fill up the yy register, * continuing until overflow into the high guard word yy[2] * guarantees that there will be a roundoff bit at the top * of the low guard word after normalization. */ if( yy[2] == 0 ) { if( decflg ) nexp += 1; /* count digits after decimal point */ eshup1( yy ); /* multiply current number by 10 */ emovz( yy, xt ); eshup1( xt ); eshup1( xt ); eaddm( xt, yy ); ecleaz( xt ); xt[NI-2] = (unsigned short )k; eaddm( xt, yy ); } else { /* Mark any lost non-zero digit. */ lost |= k; /* Count lost digits before the decimal point. */ if (decflg == 0) nexp -= 1; } prec += 1; goto donchr; } switch( *s ) { case 'z': break; case 'E': case 'e': goto expnt; case '.': /* decimal point */ if( decflg ) goto error; ++decflg; break; case '-': nsign = 0xffff; if( sgnflg ) goto error; ++sgnflg; break; case '+': if( sgnflg ) goto error; ++sgnflg; break; case ',': case ' ': case '\0': case '\n': case '\r': goto daldone; case 'i': case 'I': goto infinite; default: error: #ifdef NANS enan( yy, NI*16 ); #else mtherr( "asctoe", DOMAIN ); ecleaz(yy); #endif goto aexit; } donchr: ++s; goto nxtcom; /* Exponent interpretation */ expnt: esign = 1; exp = 0; ++s; /* check for + or - */ if( *s == '-' ) { esign = -1; ++s; } if( *s == '+' ) ++s; while( (*s >= '0') && (*s <= '9') ) { exp *= 10; exp += *s++ - '0'; if (exp > 4977) { if (esign < 0) goto zero; else goto infinite; } } if( esign < 0 ) exp = -exp; if( exp > 4932 ) { infinite: ecleaz(yy); yy[E] = 0x7fff; /* infinity */ goto aexit; } if( exp < -4977 ) { zero: ecleaz(yy); goto aexit; } daldone: nexp = exp - nexp; /* Pad trailing zeros to minimize power of 10, per IEEE spec. */ while( (nexp > 0) && (yy[2] == 0) ) { emovz( yy, xt ); eshup1( xt ); eshup1( xt ); eaddm( yy, xt ); eshup1( xt ); if( xt[2] != 0 ) break; nexp -= 1; emovz( xt, yy ); } if( (k = enormlz(yy)) > NBITS ) { ecleaz(yy); goto aexit; } lexp = (EXONE - 1 + NBITS) - k; emdnorm( yy, lost, 0, lexp, 64, ldp ); /* convert to external format */ /* Multiply by 10**nexp. If precision is 64 bits, * the maximum relative error incurred in forming 10**n * for 0 <= n <= 324 is 8.2e-20, at 10**180. * For 0 <= n <= 999, the peak relative error is 1.4e-19 at 10**947. * For 0 >= n >= -999, it is -1.55e-19 at 10**-435. */ lexp = yy[E]; if( nexp == 0 ) { k = 0; goto expdon; } esign = 1; if( nexp < 0 ) { nexp = -nexp; esign = -1; if( nexp > 4096 ) { /* Punt. Can't handle this without 2 divides. */ emovi( etens[0], tt ); lexp -= tt[E]; k = edivm( tt, yy, ldp ); lexp += EXONE; nexp -= 4096; } } p = &etens[NTEN][0]; emov( eone, xt ); exp = 1; do { if( exp & nexp ) emul( p, xt, xt, ldp ); p -= NE; exp = exp + exp; } while( exp <= MAXP ); emovi( xt, tt ); if( esign < 0 ) { lexp -= tt[E]; k = edivm( tt, yy, ldp ); lexp += EXONE; } else { lexp += tt[E]; k = emulm( tt, yy, ldp ); lexp -= EXONE - 1; } expdon: /* Round and convert directly to the destination type */ if( oprec == 53 ) lexp -= EXONE - 0x3ff; else if( oprec == 24 ) lexp -= EXONE - 0177; #ifdef DEC else if( oprec == 56 ) lexp -= EXONE - 0201; #endif ldp->rndprc = oprec; emdnorm( yy, k, 0, lexp, 64, ldp ); aexit: ldp->rndprc = rndsav; yy[0] = nsign; switch( oprec ) { #ifdef DEC case 56: todec( yy, y ); /* see etodec.c */ break; #endif #if SIMD_LDBL_MANT_DIG == 53 case 53: toe53( yy, y ); break; #elif SIMD_LDBL_MANT_DIG == 24 case 24: toe24( yy, y ); break; #elif SIMD_LDBL_MANT_DIG == 64 case 64: toe64( yy, y ); break; #elif SIMD_LDBL_MANT_DIG == 113 case 113: toe113( yy, y ); break; #else case NBITS: emovo( yy, y, ldp ); break; #endif } lenldstr += s - lstr; if (mflag) free (lstr); return lenldstr; } /* y = largest integer not greater than x * (truncated toward minus infinity) * * unsigned short x[NE], y[NE] * LDPARMS *ldp * * efloor( x, y, ldp ); */ static unsigned short bmask[] = { 0xffff, 0xfffe, 0xfffc, 0xfff8, 0xfff0, 0xffe0, 0xffc0, 0xff80, 0xff00, 0xfe00, 0xfc00, 0xf800, 0xf000, 0xe000, 0xc000, 0x8000, 0x0000, }; static void efloor(short unsigned int *x, short unsigned int *y, LDPARMS *ldp) { register unsigned short *p; int e, expon, i; unsigned short f[NE]; emov( x, f ); /* leave in external format */ expon = (int )f[NE-1]; e = (expon & 0x7fff) - (EXONE - 1); if( e <= 0 ) { eclear(y); goto isitneg; } /* number of bits to clear out */ e = NBITS - e; emov( f, y ); if( e <= 0 ) return; p = &y[0]; while( e >= 16 ) { *p++ = 0; e -= 16; } /* clear the remaining bits */ *p &= bmask[e]; /* truncate negatives toward minus infinity */ isitneg: if( (unsigned short )expon & (unsigned short )0x8000 ) { for( i=0; iequot; ld = den[E]; ld -= enormlz( den ); ln = num[E]; ln -= enormlz( num ); ecleaz( equot ); while( ln >= ld ) { if( ecmpm(den,num) <= 0 ) { esubm(den, num); j = 1; } else { j = 0; } eshup1(equot); equot[NI-1] |= j; eshup1(num); ln -= 1; } emdnorm( num, 0, 0, ln, 0, ldp ); } /* NaN bit patterns */ #ifdef MIEEE static unsigned short nan113[8] = { 0x7fff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff}; static unsigned short nan64[6] = {0x7fff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff}; static unsigned short nan53[4] = {0x7fff, 0xffff, 0xffff, 0xffff}; static unsigned short nan24[2] = {0x7fff, 0xffff}; #else /* !MIEEE */ static unsigned short nan113[8] = {0, 0, 0, 0, 0, 0, 0x8000, 0x7fff}; static unsigned short nan64[6] = {0, 0, 0, 0, 0xc000, 0x7fff}; static unsigned short nan53[4] = {0, 0, 0, 0x7ff8}; static unsigned short nan24[2] = {0, 0x7fc0}; #endif /* !MIEEE */ static void enan (short unsigned int *nan, int size) { int i, n; unsigned short *p; switch( size ) { #ifndef DEC case 113: n = 8; p = nan113; break; case 64: n = 6; p = nan64; break; case 53: n = 4; p = nan53; break; case 24: n = 2; p = nan24; break; case NBITS: for( i=0; i>, <>, <>---string to signed fixed point INDEX strtosfix16 INDEX strtosfix32 INDEX strtosfix64 INDEX _strtosfix16_r INDEX _strtosfix32_r INDEX _strtosfix64_r SYNOPSIS #include __int16 strtosfix16 (const char *<[s]>, char **<[ptr]>); __int32 strtosfix32 (const char *<[s]>, char **<[ptr]>); __int64 strtosfix64 (const char *<[s]>, char **<[ptr]>); __int16 _strtosfix16_r (void *<[reent]>, const char *<[s]>, char **<[ptr]>); __int32 _strtosfix32_r (void *<[reent]>, const char *<[s]>, char **<[ptr]>); __int64 _strtosfix64_r (void *<[reent]>, const char *<[s]>, char **<[ptr]>); DESCRIPTION The function <> converts the string <<*<[s]>>> to a fixed-point sign + 15-bits fraction representation. The function follows the same rules as <>. The substring converted is the longest initial subsequence of <[s]>, beginning with the first non-whitespace character, that has the format: .[+|-]<[digits]>[.][<[digits]>][(e|E)[+|-]<[digits]>] The substring contains no characters if <[s]> is empty, consists entirely of whitespace, or if the first non-whitespace character is something other than <<+>>, <<->>, <<.>>, or a digit. If the substring is empty, no conversion is done, and the value of <[s]> is stored in <<*<[ptr]>>>. Otherwise, the substring is converted, and a pointer to the final string (which will contain at least the terminating null character of <[s]>) is stored in <<*<[ptr]>>>. If you want no assignment to <<*<[ptr]>>>, pass a null pointer as <[ptr]>. <> is identical to <> except that it converts to fixed-point sign + 31-bits fraction representation. <> is also similar, except that it converts to fixed-point sign + 63-bit fraction format. The alternate functions <<_strtosfix16_r>>, <<_strtosfix32_r>>, and <<_strtosfix64_r>> are reentrant versions. The extra argument <[reent]> is a pointer to a reentrancy structure. RETURNS The functions return the converted substring value, if any. If no conversion can be performed, then 0 is returned. If the converted value is a NaN, 0 is returned and errno is set to <>. If the converted value exceeds the maximum positive fixed-point value, the output value is saturated to the maximum value and <> is stored in errno. If the converted value is less than the minimum fixed-point negative value, then the output is saturated to the minimum value and <> is stored in errno. Otherwise, the converted value is returned in the specified fixed-point format. PORTABILITY <>, <>, and <> are non-standard. The OS subroutines of <> are required. */ #ifdef __SPE__ #include <_ansi.h> #include #include #include #include #include "vfieeefp.h" /* * Convert a string to a fixed-point (sign + 15-bits) value. * * Ignores `locale' stuff. */ __int16_t _strtosfix16_r (struct _reent *rptr, const char *nptr, char **endptr) { union double_union dbl; unsigned long tmp, tmp2; int exp, negexp, sign; __int16_t result; dbl.d = _strtod_r (rptr, nptr, endptr); /* treat NAN as domain error, +/- infinity as saturation */ if (!finite(dbl.d)) { if (isnan (dbl.d)) { __errno_r(rptr) = EDOM; return 0; } __errno_r(rptr) = ERANGE; if (word0(dbl) & Sign_bit) return SHRT_MIN; return SHRT_MAX; } /* check for normal saturation */ if (dbl.d >= 1.0) { __errno_r(rptr) = ERANGE; return SHRT_MAX; } else if (dbl.d < -1.0) { __errno_r(rptr) = ERANGE; return SHRT_MIN; } /* otherwise we have normal number in range */ /* strip off sign and exponent */ sign = word0(dbl) & Sign_bit; exp = ((word0(dbl) & Exp_mask) >> Exp_shift) - Bias; negexp = -exp; if (negexp > 15) return 0; /* add in implicit normalized bit */ tmp = word0(dbl) | Exp_msk1; /* remove exponent and sign */ tmp <<= Ebits; if (negexp != 0) { /* perform rounding */ tmp2 = tmp + (1 << (negexp - 1)); result = (short)(tmp2 >> (negexp + 16)); /* check if rounding caused carry bit which must be added into result */ if (tmp2 < tmp) result |= (1 << (16 - negexp)); /* check if positive saturation has occurred because of rounding */ if (!sign && result < 0) { __errno_r(rptr) = ERANGE; return SHRT_MAX; } } else { /* we have -1.0, no rounding necessary */ return SHRT_MIN; } return sign ? -result : result; } #ifndef _REENT_ONLY __int16_t strtosfix16 (const char *s, char **ptr) { return _strtosfix16_r (_REENT, s, ptr); } #endif #endif /* __SPE__ */ picolibc-1.7.4/newlib/libc/machine/powerpc/strtosfix32.c000066400000000000000000000052521414576234500231600ustar00rootroot00000000000000/* Copyright (c) 1984,2000 S.L. Moshier Permission to use, copy, modify, and distribute this software for any purpose without fee is hereby granted, provided that this entire notice is included in all copies of any software which is or includes a copy or modification of this software and in all copies of the supporting documentation for such software. THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. */ #ifdef __SPE__ #include <_ansi.h> #include #include #include #include #include "vfieeefp.h" /* * Convert a string to a fixed-point (sign + 31-bits) value. * * Ignores `locale' stuff. */ __int32_t _strtosfix32_r (struct _reent *rptr, const char *nptr, char **endptr) { union double_union dbl; int exp, negexp, sign; unsigned long tmp, tmp2; long result = 0; dbl.d = _strtod_r (rptr, nptr, endptr); /* treat NAN as domain error, +/- infinity as saturation */ if (!finite(dbl.d)) { if (isnan (dbl.d)) { __errno_r(rptr) = EDOM; return 0; } __errno_r(rptr) = ERANGE; if (word0(dbl) & Sign_bit) return LONG_MIN; return LONG_MAX; } /* check for normal saturation */ if (dbl.d >= 1.0) { __errno_r(rptr) = ERANGE; return LONG_MAX; } else if (dbl.d < -1.0) { __errno_r(rptr) = ERANGE; return LONG_MIN; } /* otherwise we have normal number in range */ /* strip off sign and exponent */ sign = word0(dbl) & Sign_bit; exp = ((word0(dbl) & Exp_mask) >> Exp_shift) - Bias; negexp = -exp; if (negexp > 31) return 0; word0(dbl) &= ~(Exp_mask | Sign_bit); /* add in implicit normalized bit */ word0(dbl) |= Exp_msk1; /* shift so result is contained in single word */ tmp = word0(dbl) << Ebits; tmp |= ((unsigned long)word1(dbl) >> (32 - Ebits)); if (negexp != 0) { /* perform rounding */ tmp2 = tmp + (1 << (negexp - 1)); result = (long)(tmp2 >> negexp); /* check if rounding caused carry bit which must be added into result */ if (tmp2 < tmp) result |= (1 << (32 - negexp)); /* check if positive saturation has occurred because of rounding */ if (!sign && result < 0) { __errno_r(rptr) = ERANGE; return LONG_MAX; } } else { /* we have -1.0, no rounding necessary */ return LONG_MIN; } return sign ? -result : result; } #ifndef _REENT_ONLY __int32_t strtosfix32 (const char *s, char **ptr) { return _strtosfix32_r (_REENT, s, ptr); } #endif #endif /* __SPE__ */ picolibc-1.7.4/newlib/libc/machine/powerpc/strtosfix64.c000066400000000000000000000057201414576234500231650ustar00rootroot00000000000000/* Copyright (c) 1984,2000 S.L. Moshier Permission to use, copy, modify, and distribute this software for any purpose without fee is hereby granted, provided that this entire notice is included in all copies of any software which is or includes a copy or modification of this software and in all copies of the supporting documentation for such software. THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. */ #ifdef __SPE__ #include <_ansi.h> #include #include #include #include #include "fix64.h" /* * Convert a string to a fixed-point (sign + 63-bits) value. * * Ignores `locale' stuff. */ __int64_t _strtosfix64_r (struct _reent *rptr, const char *nptr, char **endptr) { union long_double_union ldbl; int exp, negexp, sign, ld_type; __uint64_t tmp, tmp2; __int64_t result = 0; init(ldbl); _simdstrtold ((char *)nptr, endptr, &ldbl); /* treat NAN as domain error, +/- infinity as saturation */ ld_type = _simdldcheck (&ldbl); if (ld_type != 0) { if (ld_type == 1) { __errno_r(rptr) = EDOM; return 0; } __errno_r(rptr) = ERANGE; if (word0(ldbl) & Sign_bit) return LONG_LONG_MIN; return LONG_LONG_MAX; } /* strip off sign and exponent */ sign = word0(ldbl) & Sign_bit; exp = ((word0(ldbl) & Exp_mask) >> Exp_shift) - Bias; negexp = -exp; if (negexp > 63) return 0; word0(ldbl) &= ~(Exp_mask | Sign_bit); /* add in implicit normalized bit */ word0(ldbl) |= Exp_msk1; /* shift so result is contained in single word */ tmp = word0(ldbl) << Ebits; tmp |= ((unsigned long)word1(ldbl) >> (32 - Ebits)); tmp <<= 32; if (Ebits < 32) tmp |= ((unsigned long)word1(ldbl) << Ebits); tmp |= ((unsigned long)word2(ldbl) >> (32 - Ebits)); /* check for saturation */ if (sign) { if (exp > 0 || (exp == 0 && tmp != 0x8000000000000000LL)) { __errno_r(rptr) = ERANGE; return LONG_LONG_MIN; } } else { if (exp >= 0) { __errno_r(rptr) = ERANGE; return LONG_LONG_MAX; } } /* otherwise we have normal number in range */ if (negexp != 0) { /* perform rounding */ tmp2 = tmp + (1 << (negexp - 1)); result = (long long)(tmp2 >> negexp); /* check if rounding caused carry bit which must be added into result */ if (tmp2 < tmp) result |= (1 << (64 - negexp)); /* check if positive saturation has occurred because of rounding */ if (!sign && result < 0) { __errno_r(rptr) = ERANGE; return LONG_LONG_MAX; } } else { /* we have -1.0, no rounding necessary */ return LONG_LONG_MIN; } return sign ? -result : result; } #ifndef _REENT_ONLY __int64_t strtosfix64 (const char *s, char **ptr) { return _strtosfix64_r (_REENT, s, ptr); } #endif #endif /* __SPE__ */ picolibc-1.7.4/newlib/libc/machine/powerpc/strtoufix16.c000066400000000000000000000121301414576234500231550ustar00rootroot00000000000000/* Copyright (c) 1984,2000 S.L. Moshier Permission to use, copy, modify, and distribute this software for any purpose without fee is hereby granted, provided that this entire notice is included in all copies of any software which is or includes a copy or modification of this software and in all copies of the supporting documentation for such software. THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. */ /* FUNCTION <>, <>, <>---string to signed fixed point INDEX strtoufix16 INDEX strtoufix32 INDEX strtoufix64 INDEX _strtoufix16_r INDEX _strtoufix32_r INDEX _strtoufix64_r SYNOPSIS #include __uint16_t strtoufix16 (const char *<[s]>, char **<[ptr]>); __uint32_t strtoufix32 (const char *<[s]>, char **<[ptr]>); __uint64_t strtoufix64 (const char *<[s]>, char **<[ptr]>); __uint16_t _strtoufix16_r (void *<[reent]>, const char *<[s]>, char **<[ptr]>); __uint32_t _strtoufix32_r (void *<[reent]>, const char *<[s]>, char **<[ptr]>); __uint64_t _strtoufix64_r (void *<[reent]>, const char *<[s]>, char **<[ptr]>); DESCRIPTION The function <> converts the string <<*<[s]>>> to a fixed-point 16-bits fraction representation. The function follows the same rules as <>. The substring converted is the longest initial subsequence of <[s]>, beginning with the first non-whitespace character, that has the format: .[+|-]<[digits]>[.][<[digits]>][(e|E)[+|-]<[digits]>] The substring contains no characters if <[s]> is empty, consists entirely of whitespace, or if the first non-whitespace character is something other than <<+>>, <<->>, <<.>>, or a digit. If the substring is empty, no conversion is done, and the value of <[s]> is stored in <<*<[ptr]>>>. Otherwise, the substring is converted, and a pointer to the final string (which will contain at least the terminating null character of <[s]>) is stored in <<*<[ptr]>>>. If you want no assignment to <<*<[ptr]>>>, pass a null pointer as <[ptr]>. <> is identical to <> except that it converts to fixed-point 32-bit fraction representation. <> is also similar, except that it converts to fixed-point 64-bit fraction. The alternate functions <<_strtoufix16_r>>, <<_strtoufix32_r>>, and <<_strtoufix64_r>> are reentrant versions. The extra argument <[reent]> is a pointer to a reentrancy structure. RETURNS The functions return the converted substring value, if any. If no conversion can be performed, then 0 is returned. If the converted value is a NaN, 0 is returned and errno is set to <>. If the converted value exceeds the maximum positive unsigned fixed-point value, the output value is saturated to the maximum value and <> is stored in errno. If the converted value is less than 0, then the output is saturated to 0 and <> is stored in errno. Otherwise, the converted value is returned in the specified fixed-point format. PORTABILITY <>, <>, and <> are non-standard. The OS subroutines of <> are required. */ #ifdef __SPE__ #include <_ansi.h> #include #include #include #include #include "vfieeefp.h" /* * Convert a string to a fixed-point 16-bit value. * * Ignores `locale' stuff. */ __uint16_t _strtoufix16_r (struct _reent *rptr, const char *nptr, char **endptr) { union double_union dbl; unsigned long tmp, tmp2, result; int exp, negexp; dbl.d = _strtod_r (rptr, nptr, endptr); /* treat NAN as domain error, +/- infinity as saturation */ if (!finite(dbl.d)) { if (isnan (dbl.d)) { __errno_r(rptr) = EDOM; return 0; } __errno_r(rptr) = ERANGE; if (word0(dbl) & Sign_bit) return 0; return USHRT_MAX; } /* check for normal saturation */ if (dbl.d >= 1.0) { __errno_r(rptr) = ERANGE; return USHRT_MAX; } else if (dbl.d < 0) { __errno_r(rptr) = ERANGE; return 0; } /* otherwise we have normal postive number in range */ /* strip off exponent */ exp = ((word0(dbl) & Exp_mask) >> Exp_shift) - Bias; negexp = -exp; if (negexp > 16) return 0; /* add in implicit normalized bit */ tmp = word0(dbl) | Exp_msk1; /* remove exponent and sign */ tmp <<= Ebits; /* perform rounding */ tmp2 = tmp + (1 << (negexp + 14)); result = tmp2 >> (negexp + 15); /* if rounding causes carry, must add carry bit in */ if (tmp2 < tmp) { if (negexp == 0) { /* we have overflow which means saturation */ __errno_r(rptr) = ERANGE; return USHRT_MAX; } result |= (1 << (16 - negexp)); } return (__uint16_t)result; } #ifndef _REENT_ONLY __uint16_t strtoufix16 (const char *s, char **ptr) { return _strtoufix16_r (_REENT, s, ptr); } #endif #endif /* __SPE__ */ picolibc-1.7.4/newlib/libc/machine/powerpc/strtoufix32.c000066400000000000000000000050541414576234500231620ustar00rootroot00000000000000/* Copyright (c) 1984,2000 S.L. Moshier Permission to use, copy, modify, and distribute this software for any purpose without fee is hereby granted, provided that this entire notice is included in all copies of any software which is or includes a copy or modification of this software and in all copies of the supporting documentation for such software. THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. */ #ifdef __SPE__ #include <_ansi.h> #include #include #include #include #include "vfieeefp.h" /* * Convert a string to a fixed-point 32-bit value. * * Ignores `locale' stuff. */ __uint32_t _strtoufix32_r (struct _reent *rptr, const char *nptr, char **endptr) { union double_union dbl; int exp, negexp; __uint32_t tmp, tmp2, result = 0; dbl.d = _strtod_r (rptr, nptr, endptr); /* treat NAN as domain error, +/- infinity as saturation */ if (!finite(dbl.d)) { if (isnan (dbl.d)) { __errno_r(rptr) = EDOM; return 0; } __errno_r(rptr) = ERANGE; if (word0(dbl) & Sign_bit) return 0; return ULONG_MAX; } /* check for normal saturation */ if (dbl.d >= 1.0) { __errno_r(rptr) = ERANGE; return ULONG_MAX; } else if (dbl.d < 0) { __errno_r(rptr) = ERANGE; return 0; } /* otherwise we have normal positive number in range */ /* strip off exponent */ exp = ((word0(dbl) & Exp_mask) >> Exp_shift) - Bias; negexp = -exp; if (negexp > 32) return 0; word0(dbl) &= ~(Exp_mask | Sign_bit); /* add in implicit normalized bit */ word0(dbl) |= Exp_msk1; /* shift so result is contained left-justified in word */ tmp = word0(dbl) << Ebits; tmp |= ((unsigned long)word1(dbl) >> (32 - Ebits)); /* perform rounding */ if (negexp > 1) { tmp2 = tmp + (1 << (negexp - 2)); result = (tmp2 >> (negexp - 1)); /* if rounding causes carry, add carry bit in */ if (tmp2 < tmp) result += 1 << (32 - negexp); } else { result = tmp + ((word1(dbl) & (1 << (32 - Ebits - 1))) != 0); /* if rounding causes carry, then saturation has occurred */ if (result < tmp) { __errno_r(rptr) = ERANGE; return ULONG_MAX; } } return result; } #ifndef _REENT_ONLY __uint32_t strtoufix32 (const char *s, char **ptr) { return _strtoufix32_r (_REENT, s, ptr); } #endif #endif /* __SPE__ */ picolibc-1.7.4/newlib/libc/machine/powerpc/strtoufix64.c000066400000000000000000000055661414576234500231770ustar00rootroot00000000000000/* Copyright (c) 1984,2000 S.L. Moshier Permission to use, copy, modify, and distribute this software for any purpose without fee is hereby granted, provided that this entire notice is included in all copies of any software which is or includes a copy or modification of this software and in all copies of the supporting documentation for such software. THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. */ #ifdef __SPE__ #include <_ansi.h> #include #include #include #include #include "fix64.h" /* * Convert a string to a fixed-point 64-bit unsigned value. * * Ignores `locale' stuff. */ __uint64_t _strtoufix64_r (struct _reent *rptr, const char *nptr, char **endptr) { union long_double_union ldbl; int exp, sign, negexp, ld_type; __uint64_t tmp, tmp2, result = 0; init(ldbl); _simdstrtold ((char *)nptr, endptr, &ldbl); /* treat NAN as domain error, +/- infinity as saturation */ ld_type = _simdldcheck (&ldbl); if (ld_type != 0) { if (ld_type == 1) { __errno_r(rptr) = EDOM; return 0; } __errno_r(rptr) = ERANGE; if (word0(ldbl) & Sign_bit) return 0; return ULONG_LONG_MAX; } /* strip off sign and exponent */ sign = word0(ldbl) & Sign_bit; exp = ((word0(ldbl) & Exp_mask) >> Exp_shift) - Bias; negexp = -exp; if (negexp > 63) return 0; word0(ldbl) &= ~(Exp_mask | Sign_bit); /* add in implicit normalized bit */ word0(ldbl) |= Exp_msk1; /* shift so result is contained in single word */ tmp = word0(ldbl) << Ebits; tmp |= ((unsigned long)word1(ldbl) >> (32 - Ebits)); tmp <<= 32; if (Ebits < 32) tmp |= ((unsigned long)word1(ldbl) << Ebits); tmp |= ((unsigned long)word2(ldbl) >> (32 - Ebits)); /* check for saturation */ if (sign) { __errno_r(rptr) = ERANGE; return 0; } else { if (exp > 0 || (exp == 0 && tmp >= 0x8000000000000000LL)) { __errno_r(rptr) = ERANGE; return ULONG_LONG_MAX; } } /* otherwise we have normal number in range */ if (negexp > 1) { tmp2 = tmp + (1 << (negexp - 2)); result = (tmp2 >> (negexp - 1)); /* if rounding causes carry, add carry bit in */ if (tmp2 < tmp) result += 1 << (64 - negexp); } else { if (Ebits < 32) { result = tmp + ((word2(ldbl) & (1 << (32 - Ebits - 1))) != 0); /* if rounding causes carry, then saturation has occurred */ if (result < tmp) { __errno_r(rptr) = ERANGE; return ULONG_LONG_MAX; } } else result = tmp; } return result; } #ifndef _REENT_ONLY __uint64_t strtoufix64 (const char *s, char **ptr) { return _strtoufix64_r (_REENT, s, ptr); } #endif #endif /* __SPE__ */ picolibc-1.7.4/newlib/libc/machine/powerpc/sys/000077500000000000000000000000001414576234500214145ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/powerpc/sys/fenv.h000066400000000000000000000101631414576234500225240ustar00rootroot00000000000000/*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright (c) 2004-2005 David Schultz * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $FreeBSD$ */ #ifndef _SYS_FENV_H_ #define _SYS_FENV_H_ #include #include #ifndef __fenv_static #define __fenv_static static #endif #ifdef __cplusplus extern "C" { #endif typedef int fenv_t; typedef int fexcept_t; /* Exception flags */ #define FE_INEXACT 0x02000000 #define FE_DIVBYZERO 0x04000000 #define FE_UNDERFLOW 0x08000000 #define FE_OVERFLOW 0x10000000 #define FE_INVALID 0x20000000 /* all types of invalid FP ops */ /* * The PowerPC architecture has extra invalid flags that indicate the * specific type of invalid operation occurred. These flags may be * tested, set, and cleared---but not masked---separately. All of * these bits are cleared when FE_INVALID is cleared, but only * FE_VXSOFT is set when FE_INVALID is explicitly set in software. */ #define FE_VXCVI 0x00000100 /* invalid integer convert */ #define FE_VXSQRT 0x00000200 /* square root of a negative */ #define FE_VXSOFT 0x00000400 /* software-requested exception */ #define FE_VXVC 0x00080000 /* ordered comparison involving NaN */ #define FE_VXIMZ 0x00100000 /* inf * 0 */ #define FE_VXZDZ 0x00200000 /* 0 / 0 */ #define FE_VXIDI 0x00400000 /* inf / inf */ #define FE_VXISI 0x00800000 /* inf - inf */ #define FE_VXSNAN 0x01000000 /* operation on a signalling NaN */ #define FE_ALL_INVALID (FE_VXCVI | FE_VXSQRT | FE_VXSOFT | FE_VXVC | \ FE_VXIMZ | FE_VXZDZ | FE_VXIDI | FE_VXISI | \ FE_VXSNAN | FE_INVALID) #define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | \ FE_ALL_INVALID | FE_OVERFLOW | FE_UNDERFLOW) /* Rounding modes */ #define FE_TONEAREST 0x0000 #define FE_TOWARDZERO 0x0001 #define FE_UPWARD 0x0002 #define FE_DOWNWARD 0x0003 #define _ROUND_MASK (FE_TONEAREST | FE_DOWNWARD | \ FE_UPWARD | FE_TOWARDZERO) /* Default floating-point environment */ extern fenv_t _fe_dfl_env; #define FE_DFL_ENV ((const fenv_t *) &_fe_dfl_env) /* We need to be able to map status flag positions to mask flag positions */ #define _FPUSW_SHIFT 22 #define _ENABLE_MASK ((FE_DIVBYZERO | FE_INEXACT | FE_INVALID | \ FE_OVERFLOW | FE_UNDERFLOW) >> _FPUSW_SHIFT) #ifndef _SOFT_FLOAT #ifdef __SPE__ #define __mffs(__env) \ __asm __volatile("mfspr %0, 512" : "=r" ((__env)->__bits.__reg)) #define __mtfsf(__env) \ __asm __volatile("mtspr 512,%0;isync" :: "r" ((__env).__bits.__reg)) #else #define __mffs(__env) \ __asm __volatile("mffs %0" : "=f" ((__env)->__d)) #define __mtfsf(__env) \ __asm __volatile("mtfsf 255,%0" :: "f" ((__env).__d)) #endif #else #define __mffs(__env) #define __mtfsf(__env) #endif union __fpscr { double __d; struct { #if _BYTE_ORDER == _LITTLE_ENDIAN fenv_t __reg; __uint32_t __junk; #else __uint32_t __junk; fenv_t __reg; #endif } __bits; }; #ifdef __cplusplus } #endif #endif /* !_SYS_FENV_H_ */ picolibc-1.7.4/newlib/libc/machine/powerpc/ufix64toa.c000066400000000000000000000050011414576234500225670ustar00rootroot00000000000000/* Copyright (c) 1984,2000 S.L. Moshier Permission to use, copy, modify, and distribute this software for any purpose without fee is hereby granted, provided that this entire notice is included in all copies of any software which is or includes a copy or modification of this software and in all copies of the supporting documentation for such software. THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. */ /* _ufix64toa_r: convert unsigned 64-bit fixed point to ASCII string. * * This routine converts an unsigned fixed-point number to long double format and * then calls _ldtoa_r to do the conversion. * * Written by Jeff Johnston. */ #ifdef __SPE__ #include <_ansi.h> #include #include #include #include #include "fix64.h" extern char *_simdldtoa_r (struct _reent *, LONG_DOUBLE_UNION *, int, int, int *, int *, char **); /* * Convert an unsigned fixed-point 64-bit value to string. * * Ignores `locale' stuff. */ char * _ufix64toa_r (struct _reent *rptr, __uint64_t value, int mode, int ndigits, int *decpt, int *sign, char **rve) { union long_double_union ldbl; union fix64_union fix64; unsigned long tmp; int exp, negexp; /* if input is 0, no additional work is needed */ if (value == 0) { ldbl.i[0] = ldbl.i[1] = ldbl.i[2] = ldbl.i[3] = 0; } else /* otherwise, we calculate long double equivalent of value */ { /* find exponent by locating most-significant one-bit */ fix64.ll = value; negexp = 1; if (hiword(fix64) == 0) { tmp = loword(fix64); negexp = 33; } else { tmp = hiword(fix64); negexp = 1; } while (negexp < 65) { if (tmp & 0x80000000) break; ++negexp; tmp <<= 1; } /* shift input appropriately */ fix64.ll = value << (negexp - 1 + (Exp_msk1 != 0)); /* build long double */ exp = -negexp + Bias; word0(ldbl) = (exp << Exp_shift); word1(ldbl) = hiword(fix64) << (32-Ebits-1); word2(ldbl) = loword(fix64) << (32-Ebits-1); word3(ldbl) = 0; if (Ebits+1 < 32) { word0(ldbl) |= hiword(fix64) >> (Ebits + 1); word1(ldbl) |= loword(fix64) >> (Ebits + 1); } } /* convert long double to character */ return _simdldtoa_r (rptr, &ldbl, mode, ndigits, decpt, sign, rve); } #endif /* __SPE__ */ picolibc-1.7.4/newlib/libc/machine/powerpc/vec_calloc.c000066400000000000000000000052241414576234500230370ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>---allocate space for arrays INDEX vec_calloc INDEX _vec_calloc_r SYNOPSIS #include void *vec_calloc(size_t <[n]>, size_t <[s]>); void *vec_calloc_r(void *<[reent]>, size_t , <[s]>); DESCRIPTION Use <> to request a block of memory sufficient to hold an array of <[n]> elements, each of which has size <[s]>. The memory allocated by <> comes out of the same memory pool used by <>, but the memory block is initialized to all zero bytes. (To avoid the overhead of initializing the space, use <> instead.) The alternate function <<_vec_calloc_r>> is reentrant. The extra argument <[reent]> is a pointer to a reentrancy structure. RETURNS If successful, a pointer to the newly allocated space. If unsuccessful, <>. PORTABILITY <> is an non-ANSI extension described in the AltiVec Programming Interface Manual. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #include #include #ifndef _REENT_ONLY void * vec_calloc (size_t n, size_t size) { return _vec_calloc_r (_REENT, n, size); } #endif picolibc-1.7.4/newlib/libc/machine/powerpc/vec_free.c000066400000000000000000000032451414576234500225240ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* vec_free.c - a wrapper for _free_r */ #include <_ansi.h> #include #include #ifndef _REENT_ONLY void vec_free (void *aptr) { _free_r (_REENT, aptr); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/powerpc/vec_malloc.c000066400000000000000000000120561414576234500230520ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>, <>---manage vector memory INDEX vec_malloc INDEX vec_realloc INDEX vec_free INDEX _vec_malloc_r INDEX _vec_realloc_r INDEX _vec_free_r SYNOPSIS #include void *vec_malloc(size_t <[nbytes]>); void *vec_realloc(void *<[aptr]>, size_t <[nbytes]>); void vec_free(void *<[aptr]>); void *_vec_malloc_r(void *<[reent]>, size_t <[nbytes]>); void *_vec_realloc_r(void *<[reent]>, void *<[aptr]>, size_t <[nbytes]>); void _vec_free_r(void *<[reent]>, void *<[aptr]>); DESCRIPTION These functions manage a pool of system memory that is 16-byte aligned.. Use <> to request allocation of an object with at least <[nbytes]> bytes of storage available and is 16-byte aligned. If the space is available, <> returns a pointer to a newly allocated block as its result. If you already have a block of storage allocated by <>, but you no longer need all the space allocated to it, you can make it smaller by calling <> with both the object pointer and the new desired size as arguments. <> guarantees that the contents of the smaller object match the beginning of the original object. Similarly, if you need more space for an object, use <> to request the larger size; again, <> guarantees that the beginning of the new, larger object matches the contents of the original object. When you no longer need an object originally allocated by <> or <> (or the related function <>), return it to the memory storage pool by calling <> with the address of the object as the argument. You can also use <> for this purpose by calling it with <<0>> as the <[nbytes]> argument. The alternate functions <<_vec_malloc_r>>, <<_vec_realloc_r>>, <<_vec_free_r>>, are reentrant versions. The extra argument <[reent]> is a pointer to a reentrancy structure. If you have multiple threads of execution which may call any of these routines, or if any of these routines may be called reentrantly, then you must provide implementations of the <<__vec_malloc_lock>> and <<__vec_malloc_unlock>> functions for your system. See the documentation for those functions. These functions operate by calling the function <<_sbrk_r>> or <>, which allocates space. You may need to provide one of these functions for your system. <<_sbrk_r>> is called with a positive value to allocate more space, and with a negative value to release previously allocated space if it is no longer required. @xref{Stubs}. RETURNS <> returns a pointer to the newly allocated space, if successful; otherwise it returns <>. If your application needs to generate empty objects, you may use <> for this purpose. <> returns a pointer to the new block of memory, or <> if a new block could not be allocated. <> is also the result when you use `<,0)>>' (which has the same effect as `<)>>'). You should always check the result of <>; successful vec_reallocation is not guaranteed even when you request a smaller object. <> does not return a result. PORTABILITY <>, <>, and <> are all extensions specified in the AltiVec Programming Interface Manual. Supporting OS subroutines required: <>. */ #include <_ansi.h> #include #include #include #ifndef _REENT_ONLY void * vec_malloc (size_t nbytes) /* get a block */ { return _memalign_r (_REENT, 16, nbytes); } #endif picolibc-1.7.4/newlib/libc/machine/powerpc/vec_mallocr.c000066400000000000000000000316651414576234500232430ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This code is based on mallocr.c written by Doug Lea which is released to the public domain. Any changes to libc/stdlib/mallocr.c should be reflected here as well. */ /* Preliminaries */ #ifndef __STD_C #ifdef __STDC__ #define __STD_C 1 #else #if __cplusplus #define __STD_C 1 #else #define __STD_C 0 #endif /*__cplusplus*/ #endif /*__STDC__*/ #endif /*__STD_C*/ #ifndef Void_t #if __STD_C #define Void_t void #else #define Void_t char #endif #endif /*Void_t*/ #if __STD_C #include /* for size_t */ #else #include #endif #ifdef __cplusplus extern "C" { #endif #include /* In newlib, all the publically visible routines take a reentrancy pointer. We don't currently do anything much with it, but we do pass it to the lock routine. */ #include #include #include #define MALLOC_LOCK __malloc_lock(reent_ptr) #define MALLOC_UNLOCK __malloc_unlock(reent_ptr) #ifdef SMALL_MEMORY #define malloc_getpagesize (128) #else #define malloc_getpagesize (4096) #endif #if __STD_C extern void __malloc_lock(struct _reent *); extern void __malloc_unlock(struct _reent *); #else extern void __malloc_lock(); extern void __malloc_unlock(); #endif #if __STD_C #define RARG struct _reent *reent_ptr, #define RONEARG struct _reent *reent_ptr #else #define RARG reent_ptr #define RONEARG reent_ptr #define RDECL struct _reent *reent_ptr; #endif #define RCALL reent_ptr, #define RONECALL reent_ptr /* Define MALLOC_LOCK and MALLOC_UNLOCK to C expressions to run to lock and unlock the malloc data structures. MALLOC_LOCK may be called recursively. */ #ifndef MALLOC_LOCK #define MALLOC_LOCK #endif #ifndef MALLOC_UNLOCK #define MALLOC_UNLOCK #endif /* INTERNAL_SIZE_T is the word-size used for internal bookkeeping of chunk sizes. On a 64-bit machine, you can reduce malloc overhead by defining INTERNAL_SIZE_T to be a 32 bit `unsigned int' at the expense of not being able to handle requests greater than 2^31. This limitation is hardly ever a concern; you are encouraged to set this. However, the default version is the same as size_t. */ #ifndef INTERNAL_SIZE_T #define INTERNAL_SIZE_T size_t #endif /* Following is needed on implementations whereby long > size_t. The problem is caused because the code performs subtractions of size_t values and stores the result in long values. In the case where long > size_t and the first value is actually less than the second value, the resultant value is positive. For example, (long)(x - y) where x = 0 and y is 1 ends up being 0x00000000FFFFFFFF which is 2*31 - 1 instead of 0xFFFFFFFFFFFFFFFF. This is due to the fact that assignment from unsigned to signed won't sign extend. */ #ifdef SIZE_T_SMALLER_THAN_LONG #define long_sub_size_t(x, y) ( (x < y) ? -((long)(y - x)) : (x - y) ); #else #define long_sub_size_t(x, y) ( (long)(x - y) ) #endif /* REALLOC_ZERO_BYTES_FREES should be set if a call to realloc with zero bytes should be the same as a call to free. Some people think it should. Otherwise, since this malloc returns a unique pointer for malloc(0), so does realloc(p, 0). */ /* The following macros are only invoked with (2n+1)-multiples of INTERNAL_SIZE_T units, with a positive integer n. This is exploited for fast inline execution when n is small. */ #define MALLOC_ZERO(charp, nbytes) \ do { \ INTERNAL_SIZE_T mzsz = (nbytes); \ if(mzsz <= 9*sizeof(mzsz)) { \ INTERNAL_SIZE_T* mz = (INTERNAL_SIZE_T*) (charp); \ if(mzsz >= 5*sizeof(mzsz)) { *mz++ = 0; \ *mz++ = 0; \ if(mzsz >= 7*sizeof(mzsz)) { *mz++ = 0; \ *mz++ = 0; \ if(mzsz >= 9*sizeof(mzsz)) { *mz++ = 0; \ *mz++ = 0; }}} \ *mz++ = 0; \ *mz++ = 0; \ *mz = 0; \ } else memset((charp), 0, mzsz); \ } while(0) #define MALLOC_COPY(dest,src,nbytes) \ do { \ INTERNAL_SIZE_T mcsz = (nbytes); \ if(mcsz <= 9*sizeof(mcsz)) { \ INTERNAL_SIZE_T* mcsrc = (INTERNAL_SIZE_T*) (src); \ INTERNAL_SIZE_T* mcdst = (INTERNAL_SIZE_T*) (dest); \ if(mcsz >= 5*sizeof(mcsz)) { *mcdst++ = *mcsrc++; \ *mcdst++ = *mcsrc++; \ if(mcsz >= 7*sizeof(mcsz)) { *mcdst++ = *mcsrc++; \ *mcdst++ = *mcsrc++; \ if(mcsz >= 9*sizeof(mcsz)) { *mcdst++ = *mcsrc++; \ *mcdst++ = *mcsrc++; }}} \ *mcdst++ = *mcsrc++; \ *mcdst++ = *mcsrc++; \ *mcdst = *mcsrc ; \ } else memcpy(dest, src, mcsz); \ } while(0) #define vECCALLOc _vec_calloc_r #define fREe _free_r #define mEMALIGn _memalign_r #define vECREALLOc _vec_realloc_r # #if __STD_C Void_t* vECREALLOc(RARG Void_t*, size_t); Void_t* vECCALLOc(RARG size_t, size_t); #else Void_t* vECREALLOc(); Void_t* vECCALLOc(); #endif #ifdef __cplusplus }; /* end of extern "C" */ #endif /* Type declarations */ struct malloc_chunk { INTERNAL_SIZE_T prev_size; /* Size of previous chunk (if free). */ INTERNAL_SIZE_T size; /* Size in bytes, including overhead. */ struct malloc_chunk* fd; /* double links -- used only if free. */ struct malloc_chunk* bk; }; typedef struct malloc_chunk* mchunkptr; /* sizes, alignments */ #define SIZE_SZ (sizeof(INTERNAL_SIZE_T)) #define MALLOC_ALIGN 16 #define MALLOC_ALIGNMENT 16 #define MALLOC_ALIGN_MASK (MALLOC_ALIGNMENT - 1) #define MINSIZE (sizeof(struct malloc_chunk)) /* conversion from malloc headers to user pointers, and back */ #define chunk2mem(p) ((Void_t*)((char*)(p) + 2*SIZE_SZ)) #define mem2chunk(mem) ((mchunkptr)((char*)(mem) - 2*SIZE_SZ)) /* pad request bytes into a usable size */ #define request2size(req) \ (((long)((req) + (SIZE_SZ + MALLOC_ALIGN_MASK)) < \ (long)(MINSIZE + MALLOC_ALIGN_MASK)) ? ((MINSIZE + MALLOC_ALIGN_MASK) & ~(MALLOC_ALIGN_MASK)) : \ (((req) + (SIZE_SZ + MALLOC_ALIGN_MASK)) & ~(MALLOC_ALIGN_MASK))) /* Check if m has acceptable alignment */ #define aligned_OK(m) (((unsigned long)((m)) & (MALLOC_ALIGN_MASK)) == 0) /* Physical chunk operations */ /* size field is or'ed with PREV_INUSE when previous adjacent chunk in use */ #define PREV_INUSE 0x1 /* size field is or'ed with IS_MMAPPED if the chunk was obtained with mmap() */ #define IS_MMAPPED 0x2 /* Bits to mask off when extracting size */ #define SIZE_BITS (PREV_INUSE|IS_MMAPPED) /* Ptr to next physical malloc_chunk. */ #define next_chunk(p) ((mchunkptr)( ((char*)(p)) + ((p)->size & ~PREV_INUSE) )) /* Ptr to previous physical malloc_chunk */ #define prev_chunk(p)\ ((mchunkptr)( ((char*)(p)) - ((p)->prev_size) )) /* Treat space at ptr + offset as a chunk */ #define chunk_at_offset(p, s) ((mchunkptr)(((char*)(p)) + (s))) /* Dealing with use bits */ /* extract p's inuse bit */ #define inuse(p)\ ((((mchunkptr)(((char*)(p))+((p)->size & ~PREV_INUSE)))->size) & PREV_INUSE) /* extract inuse bit of previous chunk */ #define prev_inuse(p) ((p)->size & PREV_INUSE) /* check for mmap()'ed chunk */ #define chunk_is_mmapped(p) ((p)->size & IS_MMAPPED) /* set/clear chunk as in use without otherwise disturbing */ #define set_inuse(p)\ ((mchunkptr)(((char*)(p)) + ((p)->size & ~PREV_INUSE)))->size |= PREV_INUSE #define clear_inuse(p)\ ((mchunkptr)(((char*)(p)) + ((p)->size & ~PREV_INUSE)))->size &= ~(PREV_INUSE) /* check/set/clear inuse bits in known places */ #define inuse_bit_at_offset(p, s)\ (((mchunkptr)(((char*)(p)) + (s)))->size & PREV_INUSE) #define set_inuse_bit_at_offset(p, s)\ (((mchunkptr)(((char*)(p)) + (s)))->size |= PREV_INUSE) #define clear_inuse_bit_at_offset(p, s)\ (((mchunkptr)(((char*)(p)) + (s)))->size &= ~(PREV_INUSE)) /* Dealing with size fields */ /* Get size, ignoring use bits */ #define chunksize(p) ((p)->size & ~(SIZE_BITS)) /* Set size at head, without disturbing its use bit */ #define set_head_size(p, s) ((p)->size = (((p)->size & PREV_INUSE) | (s))) /* Set size/use ignoring previous bits in header */ #define set_head(p, s) ((p)->size = (s)) #ifdef DEFINE_VECREALLOC #if __STD_C Void_t* vECREALLOc(RARG Void_t* oldmem, size_t bytes) #else Void_t* vECREALLOc(RARG oldmem, bytes) RDECL Void_t* oldmem; size_t bytes; #endif { INTERNAL_SIZE_T nb; /* padded request size */ mchunkptr oldp; /* chunk corresponding to oldmem */ INTERNAL_SIZE_T oldsize; /* its size */ mchunkptr newp; /* chunk to return */ INTERNAL_SIZE_T newsize; /* its size */ Void_t* newmem; /* corresponding user mem */ mchunkptr remainder; /* holds split off extra space from newp */ INTERNAL_SIZE_T remainder_size; /* its size */ #ifdef REALLOC_ZERO_BYTES_FREES if (bytes == 0) { fREe(RCALL oldmem); return 0; } #endif /* realloc of null is supposed to be same as malloc */ if (oldmem == 0) return mEMALIGn(RCALL 16, bytes); MALLOC_LOCK; newp = oldp = mem2chunk(oldmem); newsize = oldsize = chunksize(oldp); nb = request2size(bytes); if ((long)(oldsize) < (long)(nb)) { /* Must allocate */ newmem = mEMALIGn (RCALL 16, bytes); if (newmem == 0) /* propagate failure */ { MALLOC_UNLOCK; return 0; } /* copy, free, and exit */ MALLOC_COPY(newmem, oldmem, oldsize - SIZE_SZ); fREe(RCALL oldmem); MALLOC_UNLOCK; return newmem; } remainder_size = long_sub_size_t(newsize, nb); if (remainder_size >= (long)MINSIZE) /* split off remainder */ { remainder = chunk_at_offset(newp, nb); set_head_size(newp, nb); set_head(remainder, remainder_size | PREV_INUSE); set_inuse_bit_at_offset(remainder, remainder_size); fREe(RCALL chunk2mem(remainder)); /* let free() deal with it */ } else { set_head_size(newp, newsize); set_inuse_bit_at_offset(newp, newsize); } MALLOC_UNLOCK; return chunk2mem(newp); } #endif /* DEFINE_VECREALLOC */ #ifdef DEFINE_VECCALLOC /* calloc calls malloc, then zeroes out the allocated chunk. */ #if __STD_C Void_t* vECCALLOc(RARG size_t n, size_t elem_size) #else Void_t* vECCALLOc(RARG n, elem_size) RDECL size_t n; size_t elem_size; #endif { INTERNAL_SIZE_T sz = n * elem_size; Void_t* mem; mem = mEMALIGn (RCALL 16, sz); if (mem == 0) { return 0; } MALLOC_ZERO(mem, sz); return mem; } #endif /* DEFINE_VECCALLOC */ picolibc-1.7.4/newlib/libc/machine/powerpc/vec_realloc.c000066400000000000000000000033071414576234500232230ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* vec_realloc.c -- a wrapper for _vec_realloc_r. */ #include <_ansi.h> #include #include #ifndef _REENT_ONLY void * vec_realloc (void *ap, size_t nbytes) { return _vec_realloc_r (_REENT, ap, nbytes); } #endif picolibc-1.7.4/newlib/libc/machine/powerpc/vfprintf.c000066400000000000000000001030101414576234500225730ustar00rootroot00000000000000/* FUNCTION <>, <>, <>---format argument list INDEX vprintf INDEX vfprintf INDEX vsprintf INDEX vsnprintf SYNOPSIS #include #include int vprintf(const char *<[fmt]>, va_list <[list]>); int vfprintf(FILE *<[fp]>, const char *<[fmt]>, va_list <[list]>); int vsprintf(char *<[str]>, const char *<[fmt]>, va_list <[list]>); int vsnprintf(char *<[str]>, size_t <[size]>, const char *<[fmt]>, va_list <[list]>); int _vprintf_r(void *<[reent]>, const char *<[fmt]>, va_list <[list]>); int _vfprintf_r(void *<[reent]>, FILE *<[fp]>, const char *<[fmt]>, va_list <[list]>); int _vsprintf_r(void *<[reent]>, char *<[str]>, const char *<[fmt]>, va_list <[list]>); int _vsnprintf_r(void *<[reent]>, char *<[str]>, size_t <[size]>, const char *<[fmt]>, va_list <[list]>); DESCRIPTION <>, <>, <> and <> are (respectively) variants of <>, <>, <> and <>. They differ only in allowing their caller to pass the variable argument list as a <> object (initialized by <>) rather than directly accepting a variable number of arguments. RETURNS The return values are consistent with the corresponding functions: <> returns the number of bytes in the output string, save that the concluding <> is not counted. <> and <> return the number of characters transmitted. If an error occurs, <> and <> return <>. No error returns occur for <>. PORTABILITY ANSI C requires all three functions. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ /*- * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * This code is derived from software contributed to Berkeley by * Chris Torek. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #if defined(LIBC_SCCS) && !defined(lint) /*static char *sccsid = "from: @(#)vfprintf.c 5.50 (Berkeley) 12/16/92";*/ static char *rcsid = "$Id$"; #endif /* LIBC_SCCS and not lint */ /* * Actual printf innards. * * This code is large and complicated... */ #ifdef INTEGER_ONLY #define VFPRINTF vfiprintf #define _VFPRINTF_R _vfiprintf_r #else #define VFPRINTF vfprintf #define _VFPRINTF_R _vfprintf_r #ifndef NO_FLOATING_POINT #define FLOATING_POINT #endif #endif #include <_ansi.h> #include #include #include #include #include #include #include #ifdef __ALTIVEC__ #include #endif #include #include "local.h" #include "fvwrite.h" #include "vfieeefp.h" /* Currently a test is made to see if long double processing is warranted. This could be changed in the future should the _ldtoa_r code be preferred over _dtoa_r. */ #define _NO_LONGDBL #if defined _WANT_IO_LONG_DOUBLE && (LDBL_MANT_DIG > DBL_MANT_DIG) #undef _NO_LONGDBL #endif #define _NO_LONGLONG #if defined _WANT_IO_LONG_LONG && defined __GNUC__ # undef _NO_LONGLONG #endif #ifdef __ALTIVEC__ typedef union { vector int v; float f[4]; int i[16 / sizeof(int)]; long l[4]; short s[8]; signed char c[16]; } vec_16_byte_union; #endif /* __ALTIVEC__ */ /* * Flush out all the vectors defined by the given uio, * then reset it so that it can be reused. */ static int __sprint_r(rptr, fp, uio) struct _reent *rptr; FILE *fp; register struct __suio *uio; { register int err; if (uio->uio_resid == 0) { uio->uio_iovcnt = 0; return (0); } err = __sfvwrite_r(rptr, fp, uio); uio->uio_resid = 0; uio->uio_iovcnt = 0; return (err); } /* * Helper function for `fprintf to unbuffered unix file': creates a * temporary buffer. We only work on write-only files; this avoids * worries about ungetc buffers and so forth. */ static int __sbprintf_r(rptr, fp, fmt, ap) struct _reent *rptr; register FILE *fp; const char *fmt; va_list ap; { int ret; FILE fake; unsigned char buf[BUFSIZ]; /* copy the important variables */ fake._flags = fp->_flags & ~__SNBF; fake._file = fp->_file; fake._cookie = fp->_cookie; fake._write = fp->_write; /* set up the buffer */ fake._bf._base = fake._p = buf; fake._bf._size = fake._w = sizeof(buf); fake._lbfsize = 0; /* not actually used, but Just In Case */ /* do the work, then copy any error status */ ret = _VFPRINTF_R(rptr, &fake, fmt, ap); if (ret >= 0 && _fflush_r(rptr, &fake)) ret = EOF; if (fake._flags & __SERR) fp->_flags |= __SERR; return (ret); } #ifdef FLOATING_POINT #include #include #include "floatio.h" #define BUF (MAXEXP+MAXFRACT+1) /* + decimal point */ #define DEFPREC 6 #ifdef _NO_LONGDBL static char *cvt (struct _reent *, double, int, int, char *, int *, int, int *); #else static char *cvt (struct _reent *, _LONG_DOUBLE, int, int, char *, int *, int, int *); extern int _ldcheck (_LONG_DOUBLE *); #endif static int exponent (char *, int, int); #ifdef __SPE__ static char *cvt_ufix64 (struct _reent *, unsigned long long, int, int *, int *); #endif /* __SPE__ */ #else /* no FLOATING_POINT */ #define BUF 40 #endif /* FLOATING_POINT */ /* * Macros for converting digits to letters and vice versa */ #define to_digit(c) ((c) - '0') #define is_digit(c) ((unsigned)to_digit(c) <= 9) #define to_char(n) ((n) + '0') /* * Flags used during conversion. */ #define ALT 0x001 /* alternate form */ #define HEXPREFIX 0x002 /* add 0x or 0X prefix */ #define LADJUST 0x004 /* left adjustment */ #define LONGDBL 0x008 /* long double */ #define LONGINT 0x010 /* long integer */ #ifndef _NO_LONGLONG #define QUADINT 0x020 /* quad integer */ #else /* ifdef _NO_LONGLONG, make QUADINT equivalent to LONGINT, so that %lld behaves the same as %ld, not as %d, as expected if: sizeof (long long) = sizeof long > sizeof int */ #define QUADINT LONGINT #endif #define SHORTINT 0x040 /* short integer */ #define ZEROPAD 0x080 /* zero (as opposed to blank) pad */ #define FPT 0x100 /* Floating point number */ #define VECTOR 0x200 /* vector */ #define FIXEDPOINT 0x400 /* fixed-point */ int VFPRINTF (FILE * fp, const char *fmt0, va_list ap) { CHECK_INIT (_REENT, fp); return _VFPRINTF_R (_REENT, fp, fmt0, ap); } int _VFPRINTF_R (struct _reent *data, FILE * fp, const char *fmt0, va_list ap) { register char *fmt; /* format string */ register int ch; /* character from fmt */ register int n, m; /* handy integers (short term usage) */ register char *cp; /* handy char pointer (short term usage) */ register struct __siov *iovp;/* for PRINT macro */ register int flags; /* flags as above */ int ret; /* return value accumulator */ int width; /* width from format (%8d), or 0 */ int prec; /* precision from format (%.3d), or -1 */ char sign; /* sign prefix (' ', '+', '-', or \0) */ char old_sign; /* saved value of sign when looping for vectors */ int old_ch; /* saved value of ch when looping for vectors */ char *format_anchor; /* start of format to process */ wchar_t wc; #ifdef FLOATING_POINT char *decimal_point = localeconv()->decimal_point; char softsign; /* temporary negative sign for floats */ #ifdef _NO_LONGDBL union { int i; double d; } _double_ = {0}; #define _fpvalue (_double_.d) #else union { int i; _LONG_DOUBLE ld; } _long_double_ = {0}; #define _fpvalue (_long_double_.ld) int tmp; #endif int expt; /* integer value of exponent */ int expsize = 0; /* character count for expstr */ int ndig; /* actual number of digits returned by cvt */ char expstr[7]; /* buffer for exponent string */ #endif #ifndef _NO_LONGLONG #define quad_t long long #define u_quad_t unsigned long long #else #define quad_t long #define u_quad_t u_long #endif u_quad_t _uquad; /* integer arguments %[diouxX] */ enum { OCT, DEC, HEX } base;/* base for [diouxX] conversion */ int dprec; /* a copy of prec if [diouxX], 0 otherwise */ int realsz; /* field size expanded by dprec */ int size; /* size of converted field or string */ char *xdigs = NULL; /* digits for [xX] conversion */ #define NIOV 8 struct __suio uio; /* output information: summary */ struct __siov iov[NIOV];/* ... and individual io vectors */ char buf[BUF]; /* space for %c, %[diouxX], %[eEfgG] */ char ox[2]; /* space for 0x hex-prefix */ #ifdef __ALTIVEC__ char vec_sep; /* vector separator char */ int vec_print_count; /* number of vector chunks remaining */ vec_16_byte_union vec_tmp; #endif /* __ALTIVEC__ */ mbstate_t state; /* mbtowc calls from library must not change state */ /* * Choose PADSIZE to trade efficiency vs. size. If larger printf * fields occur frequently, increase PADSIZE and make the initialisers * below longer. */ #define PADSIZE 16 /* pad chunk size */ static const char blanks[PADSIZE] = {' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '}; static const char zeroes[PADSIZE] = {'0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'}; /* * BEWARE, these `goto error' on error, and PAD uses `n'. */ #define PRINT(ptr, len) { \ iovp->iov_base = (ptr); \ iovp->iov_len = (len); \ uio.uio_resid += (len); \ iovp++; \ if (++uio.uio_iovcnt >= NIOV) { \ if (__sprint_r(data, fp, &uio)) \ goto error; \ iovp = iov; \ } \ } #define PAD(howmany, with) { \ if ((n = (howmany)) > 0) { \ while (n > PADSIZE) { \ PRINT(with, PADSIZE); \ n -= PADSIZE; \ } \ PRINT(with, n); \ } \ } #define FLUSH() { \ if (uio.uio_resid && __sprint_r(data, fp, &uio)) \ goto error; \ uio.uio_iovcnt = 0; \ iovp = iov; \ } #ifdef __ALTIVEC__ #define GET_SHORT(ap) \ (flags&VECTOR ? \ (vec_print_count < 8 ? (short)vec_tmp.s[8 - vec_print_count] : \ (vec_tmp.v = va_arg(ap, vector int), (short)vec_tmp.s[0])) : \ (short)va_arg(ap, int)) #define GET_USHORT(ap) \ (flags&VECTOR ? \ (vec_print_count < 8 ? (u_short)vec_tmp.s[8 - vec_print_count] : \ (vec_tmp.v = va_arg(ap, vector int), (u_short)vec_tmp.s[0])) : \ (u_short)va_arg(ap, int)) #define GET_LONG(ap) \ (flags&VECTOR ? \ (vec_print_count < 4 ? (long)vec_tmp.l[4 - vec_print_count] : \ (vec_tmp.v = va_arg(ap, vector int), vec_tmp.l[0])) : \ va_arg(ap, long int)) #define GET_ULONG(ap) \ (flags&VECTOR ? \ (vec_print_count < 4 ? (u_long)vec_tmp.l[4 - vec_print_count] : \ (vec_tmp.v = va_arg(ap, vector int), (u_long)vec_tmp.l[0])) : \ (u_long)va_arg(ap, unsigned long int)) #define GET_INT(ap) \ (flags&VECTOR ? \ (vec_print_count < 16 ? \ vec_tmp.c[16 - vec_print_count] : \ (vec_tmp.v = va_arg(ap, vector int), (int)vec_tmp.c[0])) : \ va_arg(ap, int)) #define GET_UINT(ap) \ (flags&VECTOR ? \ (vec_print_count < 16 ? \ (u_int)((unsigned char)vec_tmp.c[16 - vec_print_count]) : \ (vec_tmp.v = va_arg(ap, vector int), (u_int)((unsigned char)vec_tmp.c[0]))) : \ (u_int)va_arg(ap, unsigned int)) #else /* !__ALTIVEC__ */ #define GET_SHORT(ap) ((short)va_arg(ap, int)) #define GET_USHORT(ap) ((u_short)va_arg(ap, int)) #define GET_LONG(ap) (va_arg(ap, long int)) #define GET_ULONG(ap) ((u_long)va_arg(ap, unsigned long int)) #define GET_INT(ap) ((int)va_arg(ap, int)) #define GET_UINT(ap) ((u_int)va_arg(ap, unsigned int)) #endif /* !__ALTIVEC__ */ #ifndef _NO_LONGLONG #define SARG() \ (flags&QUADINT ? va_arg(ap, quad_t) : \ flags&LONGINT ? GET_LONG(ap) : \ flags&SHORTINT ? (long)GET_SHORT(ap) : \ (long)GET_INT(ap)) #define UARG() \ (flags&QUADINT ? va_arg(ap, u_quad_t) : \ flags&LONGINT ? GET_ULONG(ap) : \ flags&SHORTINT ? (u_long)GET_USHORT(ap) : \ (u_long)GET_UINT(ap)) #ifdef __SPE__ #define SFPARG() \ (flags&LONGINT ? va_arg(ap, quad_t) : \ flags&SHORTINT ? (long)GET_SHORT(ap) : \ (long)va_arg(ap, int)) #define UFPARG() \ (flags&LONGINT ? va_arg(ap, u_quad_t) : \ flags&SHORTINT ? (u_long)GET_USHORT(ap) : \ (u_long)va_arg(ap, u_int)) #endif /* __SPE__ */ #else #define SARG() \ (flags&LONGINT ? GET_LONG(ap) : \ flags&SHORTINT ? (long)GET_SHORT(ap) : \ (long)GET_INT(ap)) #define UARG() \ (flags&LONGINT ? GET_ULONG(ap) : \ flags&SHORTINT ? (u_long)GET_USHORT(ap) : \ (u_long)GET_UINT(ap)) #ifdef __SPE__ #define SFPARG() \ (flags&LONGINT ? (va_arg(ap, long) << 32) : \ flags&SHORTINT ? (long)GET_SHORT(ap) : \ (long)va_arg(ap, int)) #define UFPARG() \ (flags&LONGINT ? (va_arg(ap, u_long) <<32) : \ flags&SHORTINT ? (u_long)GET_USHORT(ap) : \ (u_long)va_arg(ap, u_int)) #endif /* __SPE__ */ #endif memset (&state, '\0', sizeof (state)); /* sorry, fprintf(read_only_file, "") returns EOF, not 0 */ if (cantwrite (data, fp)) { _funlockfile (fp); return (EOF); } /* optimise fprintf(stderr) (and other unbuffered Unix files) */ if ((fp->_flags & (__SNBF|__SWR|__SRW)) == (__SNBF|__SWR) && fp->_file >= 0) return (__sbprintf_r(data, fp, fmt0, ap)); fmt = (char *)fmt0; uio.uio_iov = iovp = iov; uio.uio_resid = 0; uio.uio_iovcnt = 0; ret = 0; /* * Scan the format for conversions (`%' character). */ for (;;) { cp = fmt; while ((n = _mbtowc_r(data, &wc, fmt, MB_CUR_MAX, &state)) > 0) { fmt += n; if (wc == '%') { fmt--; break; } } if ((m = fmt - cp) != 0) { PRINT(cp, m); ret += m; } if (n <= 0) goto done; fmt++; /* skip over '%' */ flags = 0; dprec = 0; width = 0; prec = -1; sign = '\0'; old_sign = '\0'; #ifdef __ALTIVEC__ vec_print_count = 0; vec_sep = ' '; #endif /* __ALTIVEC__ */ format_anchor = fmt; rflag: ch = *fmt++; old_ch = ch; reswitch: switch (ch) { case ' ': /* * ``If the space and + flags both appear, the space * flag will be ignored.'' * -- ANSI X3J11 */ if (!sign) sign = ' '; goto rflag; case '#': flags |= ALT; goto rflag; case '*': /* * ``A negative field width argument is taken as a * - flag followed by a positive field width.'' * -- ANSI X3J11 * They don't exclude field widths read from args. */ if ((width = va_arg(ap, int)) >= 0) goto rflag; width = -width; FALLTHROUGH; case '-': flags |= LADJUST; goto rflag; case '+': sign = '+'; goto rflag; #ifdef __ALTIVEC__ case ',': case ';': case ':': case '_': if (vec_sep != ' ') { fmt = format_anchor; continue; } vec_sep = ch; goto rflag; #endif /* __ALTIVEC__ */ case '.': if ((ch = *fmt++) == '*') { n = va_arg(ap, int); prec = n < 0 ? -1 : n; goto rflag; } n = 0; while (is_digit(ch)) { n = 10 * n + to_digit(ch); ch = *fmt++; } prec = n < 0 ? -1 : n; goto reswitch; case '0': /* * ``Note that 0 is taken as a flag, not as the * beginning of a field width.'' * -- ANSI X3J11 */ flags |= ZEROPAD; goto rflag; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': n = 0; do { n = 10 * n + to_digit(ch); ch = *fmt++; } while (is_digit(ch)); width = n; goto reswitch; #ifdef FLOATING_POINT case 'L': #ifdef __ALTIVEC__ if (flags & VECTOR) { fmt = format_anchor; continue; } #endif /* __ALTIVEC__ */ flags |= LONGDBL; goto rflag; #endif case 'h': if (flags & LONGINT) { fmt = format_anchor; continue; } flags |= SHORTINT; #ifdef __ALTIVEC__ if (flags & VECTOR) vec_print_count = 8; #endif goto rflag; case 'l': if (flags & SHORTINT) { fmt = format_anchor; continue; } if (*fmt == 'l') { fmt++; flags |= QUADINT; flags &= ~VECTOR; } else { flags |= LONGINT; #ifdef __ALTIVEC__ if (flags & VECTOR) vec_print_count = 4; #endif } goto rflag; #ifdef __ALTIVEC__ case 'v': if (flags & VECTOR) { fmt = format_anchor; continue; } flags |= VECTOR; vec_print_count = (flags & SHORTINT) ? 8 : ((flags & LONGINT) ? 4 : 16); goto rflag; #endif case 'q': #ifdef __ALTIVEC__ if (flags & VECTOR) { fmt = format_anchor; continue; } #endif /* __ALTIVEC__ */ flags |= QUADINT; goto rflag; case 'c': #ifdef __ALTIVEC__ if (flags & VECTOR) { int k; vec_16_byte_union tmp; if (flags & (SHORTINT | LONGINT)) { fmt = format_anchor; continue; } tmp.v = va_arg(ap, vector int); cp = buf; for (k = 0; k < 15; ++k) { *cp++ = tmp.c[k]; if (vec_sep != ' ') *cp++ = vec_sep; } *cp++ = tmp.c[15]; size = cp - buf; cp = buf; vec_print_count = 0; } else #endif /* __ALTIVEC__ */ { *(cp = buf) = va_arg(ap, int); size = 1; } sign = '\0'; break; case 'D': flags |= LONGINT; FALLTHROUGH; case 'd': case 'i': #ifdef __ALTIVEC__ if (!(flags & VECTOR) && vec_sep != ' ') { fmt = format_anchor; continue; } #endif /* __ALTIVEC__ */ _uquad = SARG(); if ((quad_t)_uquad < 0) { _uquad = -(quad_t)_uquad; old_sign = sign; sign = '-'; } base = DEC; goto number; #ifdef FLOATING_POINT case 'e': case 'E': case 'f': case 'g': case 'G': if (prec == -1) { prec = DEFPREC; } else if ((ch == 'g' || ch == 'G') && prec == 0) { prec = 1; } #ifdef _NO_LONGDBL if (flags & LONGDBL) { _fpvalue = (double) va_arg(ap, _LONG_DOUBLE); #ifdef __ALTIVEC__ } else if (flags & VECTOR) { if (vec_print_count >= 4) { vec_print_count = 4; vec_tmp.v = va_arg(ap, vector int); } _fpvalue = (double)vec_tmp.f[4 - vec_print_count]; } else if (vec_sep != ' ') { fmt = format_anchor; continue; #endif /* __ALTIVEC__ */ } else { _fpvalue = va_arg(ap, double); } /* do this before tricky precision changes */ if (isinf(_fpvalue)) { if (_fpvalue < 0) { old_sign = sign; sign = '-'; } cp = "Inf"; size = 3; break; } if (isnan(_fpvalue)) { cp = "NaN"; size = 3; break; } #else /* !_NO_LONGDBL */ if (flags & LONGDBL) { _fpvalue = va_arg(ap, _LONG_DOUBLE); #ifdef __ALTIVEC__ } else if (flags & VECTOR) { if (vec_print_count >= 4) { vec_print_count = 4; vec_tmp.v = va_arg(ap, vector int); } _fpvalue = (_LONG_DOUBLE)k.f[4 - vec_print_count]; #endif /* __ALTIVEC__ */ } else { _fpvalue = (_LONG_DOUBLE)va_arg(ap, double); } /* do this before tricky precision changes */ tmp = _ldcheck (&_fpvalue); if (tmp == 2) { if (_fpvalue < 0) { old_sign = sign; sign = '-'; } cp = "Inf"; size = 3; break; } if (tmp == 1) { cp = "NaN"; size = 3; break; } #endif /* !_NO_LONGDBL */ flags |= FPT; cp = cvt(data, _fpvalue, prec, flags, &softsign, &expt, ch, &ndig); if (ch == 'g' || ch == 'G') { if (expt <= -4 || expt > prec) { old_ch = ch; ch = (ch == 'g') ? 'e' : 'E'; } else ch = 'g'; } if (ch <= 'e') { /* 'e' or 'E' fmt */ --expt; expsize = exponent(expstr, expt, ch); size = expsize + ndig; if (ndig > 1 || flags & ALT) ++size; } else if (ch == 'f') { /* f fmt */ if (expt > 0) { size = expt; if (prec || flags & ALT) size += prec + 1; } else /* "0.X" */ size = (prec || flags & ALT) ? prec + 2 : 1; } else if (expt >= ndig) { /* fixed g fmt */ size = expt; if (flags & ALT) ++size; } else size = ndig + (expt > 0 ? 1 : 2 - expt); if (softsign) { old_sign = sign; sign = '-'; } break; #endif /* FLOATING_POINT */ #ifdef __SPE__ case 'r': flags |= FIXEDPOINT; _uquad = SFPARG(); if ((quad_t)_uquad < 0) { sign = '-'; _uquad = -(quad_t)_uquad; } if (flags & SHORTINT) _uquad <<= (sizeof(quad_t) - sizeof(short)) * 8 + 1; else if (flags & LONGINT) _uquad <<= 1; else _uquad <<= (sizeof(quad_t) - sizeof(long)) * 8 + 1; if (_uquad == 0 && sign) { /* we have -1.0 which has to be handled special */ cp = "100000"; expt = 1; ndig = 6; break; } goto fixed_nosign; case 'R': flags |= FIXEDPOINT; _uquad = UFPARG(); if (flags & SHORTINT) _uquad <<= (sizeof(quad_t) - sizeof(short)) * 8; else if (!(flags & LONGINT)) _uquad <<= (sizeof(quad_t) - sizeof(long)) * 8; fixed_nosign: if (prec == -1) prec = DEFPREC; #ifndef _NO_LONGLONG cp = cvt_ufix64 (data, _uquad, prec, &expt, &ndig); #else cp = cvs_ufix32 (data, _uquad, prec, &expt, &ndig); #endif /* act like %f of format "0.X" */ size = prec + 2; break; #endif /* __SPE__ */ case 'n': #ifdef __ALTIVEC__ if (flags & VECTOR) { fmt = format_anchor; continue; } #endif /* __ALTIVEC__ */ #ifndef _NO_LONGLONG if (flags & QUADINT) *va_arg(ap, quad_t *) = ret; else #endif if (flags & LONGINT) *va_arg(ap, long *) = ret; else if (flags & SHORTINT) *va_arg(ap, short *) = ret; else *va_arg(ap, int *) = ret; continue; /* no output */ case 'O': flags |= LONGINT; FALLTHROUGH; case 'o': #ifdef __ALTIVEC__ if (!(flags & VECTOR) && vec_sep != ' ') { fmt = format_anchor; continue; } #endif /* __ALTIVEC__ */ _uquad = UARG(); base = OCT; goto nosign; case 'p': /* * ``The argument shall be a pointer to void. The * value of the pointer is converted to a sequence * of printable characters, in an implementation- * defined manner.'' * -- ANSI X3J11 */ /* NOSTRICT */ #ifdef __ALTIVEC__ if (flags & VECTOR) _uquad = UARG(); else if (vec_sep != ' ') { fmt = format_anchor; continue; } else #endif /* __ALTIVEC__ */ _uquad = (u_long)(unsigned _POINTER_INT)va_arg(ap, void *); base = HEX; xdigs = "0123456789abcdef"; flags |= HEXPREFIX; ch = 'x'; goto nosign; case 's': #ifdef __ALTIVEC__ if (flags & VECTOR) { fmt = format_anchor; continue; } #endif /* __ALTIVEC__ */ if ((cp = va_arg(ap, char *)) == NULL) cp = "(null)"; if (prec >= 0) { /* * can't use strlen; can only look for the * NUL in the first `prec' characters, and * strlen() will go further. */ char *p = memchr(cp, 0, prec); if (p != NULL) { size = p - cp; if (size > prec) size = prec; } else size = prec; } else size = strlen(cp); sign = '\0'; break; case 'U': flags |= LONGINT; FALLTHROUGH; case 'u': #ifdef __ALTIVEC__ if (!(flags & VECTOR) && vec_sep != ' ') { fmt = format_anchor; continue; } #endif /* __ALTIVEC__ */ _uquad = UARG(); base = DEC; goto nosign; case 'X': xdigs = "0123456789ABCDEF"; goto hex; case 'x': xdigs = "0123456789abcdef"; #ifdef __ALTIVEC__ if (!(flags & VECTOR) && vec_sep != ' ') { fmt = format_anchor; continue; } #endif /* __ALTIVEC__ */ hex: _uquad = UARG(); base = HEX; /* leading 0x/X only if non-zero */ if (flags & ALT && _uquad != 0) flags |= HEXPREFIX; /* unsigned conversions */ nosign: sign = '\0'; /* * ``... diouXx conversions ... if a precision is * specified, the 0 flag will be ignored.'' * -- ANSI X3J11 */ number: if ((dprec = prec) >= 0) flags &= ~ZEROPAD; /* * ``The result of converting a zero value with an * explicit precision of zero is no characters.'' * -- ANSI X3J11 */ cp = buf + BUF; if (_uquad != 0 || prec != 0) { /* * Unsigned mod is hard, and unsigned mod * by a constant is easier than that by * a variable; hence this switch. */ switch (base) { case OCT: do { *--cp = to_char(_uquad & 7); _uquad >>= 3; } while (_uquad); /* handle octal leading 0 */ if (flags & ALT && *cp != '0') *--cp = '0'; break; case DEC: /* many numbers are 1 digit */ while (_uquad >= 10) { *--cp = to_char(_uquad % 10); _uquad /= 10; } *--cp = to_char(_uquad); break; case HEX: do { *--cp = xdigs[_uquad & 15]; _uquad >>= 4; } while (_uquad); break; default: cp = "bug in vfprintf: bad base"; size = strlen(cp); goto skipsize; } } /* * ...result is to be converted to an 'alternate form'. * For o conversion, it increases the precision to force * the first digit of the result to be a zero." * -- ANSI X3J11 * * To demonstrate this case, compile and run: * printf ("%#.0o",0); */ else if (base == OCT && (flags & ALT)) *--cp = '0'; size = buf + BUF - cp; skipsize: break; default: /* "%?" prints ?, unless ? is NUL */ flags &= ~VECTOR; if (ch == '\0') goto done; /* pretend it was %c with argument ch */ cp = buf; *cp = ch; size = 1; sign = '\0'; break; } /* * All reasonable formats wind up here. At this point, `cp' * points to a string which (if not flags&LADJUST) should be * padded out to `width' places. If flags&ZEROPAD, it should * first be prefixed by any sign or other prefix; otherwise, * it should be blank padded before the prefix is emitted. * After any left-hand padding and prefixing, emit zeroes * required by a decimal [diouxX] precision, then print the * string proper, then emit zeroes required by any leftover * floating precision; finally, if LADJUST, pad with blanks. * * Compute actual size, so we know how much to pad. * size excludes decimal prec; realsz includes it. */ realsz = dprec > size ? dprec : size; if (sign) realsz++; else if (flags & HEXPREFIX) realsz+= 2; /* right-adjusting blank padding */ if ((flags & (LADJUST|ZEROPAD)) == 0) PAD(width - realsz, blanks); /* prefix */ if (sign) { PRINT(&sign, 1); } else if (flags & HEXPREFIX) { ox[0] = '0'; ox[1] = ch; PRINT(ox, 2); } /* right-adjusting zero padding */ if ((flags & (LADJUST|ZEROPAD)) == ZEROPAD) PAD(width - realsz, zeroes); /* leading zeroes from decimal precision */ PAD(dprec - size, zeroes); /* the string or number proper */ #ifdef FLOATING_POINT if ((flags & FPT) == 0) { #ifdef __SPE__ if (flags & FIXEDPOINT) { if (_uquad == 0 && !sign) { /* kludge for __dtoa irregularity */ PRINT("0", 1); if (expt < ndig || (flags & ALT) != 0) { PRINT(decimal_point, 1); PAD(ndig - 1, zeroes); } } else if (expt <= 0) { PRINT("0", 1); if(expt || ndig) { PRINT(decimal_point, 1); PAD(-expt, zeroes); PRINT(cp, ndig); } } else if (expt >= ndig) { PRINT(cp, ndig); PAD(expt - ndig, zeroes); if (flags & ALT) PRINT(".", 1); } else { PRINT(cp, expt); cp += expt; PRINT(".", 1); PRINT(cp, ndig-expt); } } else #endif /* __SPE__ */ PRINT(cp, size); } else { /* glue together f_p fragments */ if (ch >= 'f') { /* 'f' or 'g' */ if (_fpvalue == 0) { /* kludge for __dtoa irregularity */ PRINT("0", 1); if (expt < ndig || (flags & ALT) != 0) { PRINT(decimal_point, 1); PAD(ndig - 1, zeroes); } } else if (expt <= 0) { PRINT("0", 1); if(expt || ndig) { PRINT(decimal_point, 1); PAD(-expt, zeroes); PRINT(cp, ndig); } } else if (expt >= ndig) { PRINT(cp, ndig); PAD(expt - ndig, zeroes); if (flags & ALT) PRINT(".", 1); } else { PRINT(cp, expt); cp += expt; PRINT(".", 1); PRINT(cp, ndig-expt); } } else { /* 'e' or 'E' */ if (ndig > 1 || flags & ALT) { ox[0] = *cp++; ox[1] = '.'; PRINT(ox, 2); if (_fpvalue) { PRINT(cp, ndig-1); } else /* 0.[0..] */ /* __dtoa irregularity */ PAD(ndig - 1, zeroes); } else /* XeYYY */ PRINT(cp, 1); PRINT(expstr, expsize); } } #else PRINT(cp, size); #endif /* left-adjusting padding (always blank) */ if (flags & LADJUST) PAD(width - realsz, blanks); /* finally, adjust ret */ ret += width > realsz ? width : realsz; #ifdef __ALTIVEC__ if ((flags & VECTOR) && vec_print_count-- > 1) { /* add vector separator */ if (ch != 'c' || vec_sep != ' ') { PRINT(&vec_sep, 1); ret += 1; } FLUSH(); sign = old_sign; ch = old_ch; goto reswitch; } #endif /* __ALTIVEC__ */ FLUSH(); /* copy out the I/O vectors */ } done: FLUSH(); error: return (__sferror(fp) ? EOF : ret); /* NOTREACHED */ } #ifdef FLOATING_POINT #ifdef _NO_LONGDBL extern char *_dtoa_r (struct _reent *, double, int, int, int *, int *, char **); #else extern char *_ldtoa_r (struct _reent *, _LONG_DOUBLE, int, int, int *, int *, char **); #undef word0 #define word0(x) ldword0(x) #endif static char * cvt(data, value, ndigits, flags, sign, decpt, ch, length) struct _reent *data; #ifdef _NO_LONGDBL double value; #else _LONG_DOUBLE value; #endif int ndigits, flags, *decpt, ch, *length; char *sign; { int mode, dsgn; char *digits, *bp, *rve; #ifdef _NO_LONGDBL union double_union tmp; #else struct ldieee *ldptr; #endif if (ch == 'f') { mode = 3; /* ndigits after the decimal point */ } else { /* To obtain ndigits after the decimal point for the 'e' * and 'E' formats, round to ndigits + 1 significant * figures. */ if (ch == 'e' || ch == 'E') { ndigits++; } mode = 2; /* ndigits significant digits */ } #ifdef _NO_LONGDBL tmp.d = value; if (word0(tmp) & Sign_bit) { /* this will check for < 0 and -0.0 */ value = -value; *sign = '-'; } else *sign = '\000'; digits = _dtoa_r(data, value, mode, ndigits, decpt, &dsgn, &rve); #else /* !_NO_LONGDBL */ ldptr = (struct ldieee *)&value; if (ldptr->sign) { /* this will check for < 0 and -0.0 */ value = -value; *sign = '-'; } else *sign = '\000'; digits = _ldtoa_r(data, value, mode, ndigits, decpt, &dsgn, &rve); #endif /* !_NO_LONGDBL */ if ((ch != 'g' && ch != 'G') || flags & ALT) { /* Print trailing zeros */ bp = digits + ndigits; if (ch == 'f') { if (*digits == '0' && value) *decpt = -ndigits + 1; bp += *decpt; } if (value == 0) /* kludge for __dtoa irregularity */ rve = bp; while (rve < bp) *rve++ = '0'; } *length = rve - digits; return (digits); } static int exponent(p0, exp, fmtch) char *p0; int exp, fmtch; { register char *p, *t; char expbuf[40]; p = p0; *p++ = fmtch; if (exp < 0) { exp = -exp; *p++ = '-'; } else *p++ = '+'; t = expbuf + 40; if (exp > 9) { do { *--t = to_char(exp % 10); } while ((exp /= 10) > 9); *--t = to_char(exp); for (; t < expbuf + 40; *p++ = *t++); } else { *p++ = '0'; *p++ = to_char(exp); } return (p - p0); } #endif /* FLOATING_POINT */ #ifdef __SPE__ extern char *_ufix64toa_r (struct _reent *, unsigned long long, int, int, int *, int *, char **); static char * cvt_ufix64 (data, value, ndigits, decpt, length) struct _reent *data; unsigned long long value; int ndigits, *decpt, *length; { int dsgn; char *digits, *bp, *rve; /* treat the same as %f format and use mode=3 */ digits = _ufix64toa_r (data, value, 3, ndigits, decpt, &dsgn, &rve); /* print trailing zeroes */ bp = digits + ndigits; if (*digits == '0' && value) *decpt = -ndigits + 1; bp += *decpt; if (value == 0) /* kludge for __dtoa irregularity */ rve = bp; while (rve < bp) *rve++ = '0'; *length = rve - digits; return (digits); } #endif /* __SPE__ */ picolibc-1.7.4/newlib/libc/machine/powerpc/vfscanf.c000066400000000000000000000646661414576234500224120ustar00rootroot00000000000000/* FUNCTION <>, <>, <>---format argument list INDEX vscanf INDEX vfscanf INDEX vsscanf SYNOPSIS #include #include int vscanf(const char *restrict <[fmt]>, va_list <[list]>); int vfscanf(FILE *restrict <[fp]>, const char *restrict <[fmt]>, va_list <[list]>); int vsscanf(const char *restrict <[str]>, const char *restrict <[fmt]>, va_list <[list]>); int _vscanf_r(void *<[reent]>, const char *restrict <[fmt]>, va_list <[list]>); int _vfscanf_r(void *<[reent]>, FILE *restrict <[fp]>, const char *restrict <[fmt]>, va_list <[list]>); int _vsscanf_r(void *<[reent]>, const char *restrict <[str]>, const char *restrict <[fmt]>, va_list <[list]>); DESCRIPTION <>, <>, and <> are (respectively) variants of <>, <>, and <>. They differ only in allowing their caller to pass the variable argument list as a <> object (initialized by <>) rather than directly accepting a variable number of arguments. RETURNS The return values are consistent with the corresponding functions: <> returns the number of input fields successfully scanned, converted, and stored; the return value does not include scanned fields which were not stored. If <> attempts to read at end-of-file, the return value is <>. If no fields were stored, the return value is <<0>>. The routines <<_vscanf_r>>, <<_vfscanf_f>>, and <<_vsscanf_r>> are reentrant versions which take an additional first parameter which points to the reentrancy structure. PORTABILITY These are GNU extensions. Supporting OS subroutines required: */ /*- * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include <_ansi.h> #include #include #include #include #include #include #include #include #include #include "local.h" #ifndef NO_FLOATING_POINT #define FLOATING_POINT #endif #ifdef FLOATING_POINT #include /* Currently a test is made to see if long double processing is warranted. This could be changed in the future should the _ldtoa_r code be preferred over _dtoa_r. */ #define _NO_LONGDBL #if defined _WANT_IO_LONG_DOUBLE && (LDBL_MANT_DIG > DBL_MANT_DIG) #undef _NO_LONGDBL #endif #define _NO_LONGLONG #if defined _WANT_IO_LONG_LONG && defined __GNUC__ # undef _NO_LONGLONG #endif #include "floatio.h" #define BUF (MAXEXP+MAXFRACT+3) /* 3 = sign + decimal point + NUL */ /* An upper bound for how long a long prints in decimal. 4 / 13 approximates log (2). Add one char for roundoff compensation and one for the sign. */ #define MAX_LONG_LEN ((CHAR_BIT * sizeof (long) - 1) * 4 / 13 + 2) #else #define BUF 40 #endif /* * Flags used during conversion. */ #define LONG 0x01 /* l: long or double */ #define LONGDBL 0x02 /* L: long double or long long */ #define SHORT 0x04 /* h: short */ #define SUPPRESS 0x10 /* suppress assignment */ #define POINTER 0x20 /* weird %p pointer (`fake hex') */ #define NOSKIP 0x40 /* do not skip blanks */ /* * The following are used in numeric conversions only: * SIGNOK, NDIGITS, DPTOK, and EXPOK are for floating point; * SIGNOK, NDIGITS, PFXOK, and NZDIGITS are for integral. */ #define SIGNOK 0x80 /* +/- is (still) legal */ #define NDIGITS 0x100 /* no digits detected */ #define DPTOK 0x200 /* (float) decimal point is still legal */ #define EXPOK 0x400 /* (float) exponent (e+3, etc) still legal */ #define PFXOK 0x200 /* 0x prefix is (still) legal */ #define NZDIGITS 0x400 /* no zero digits detected */ #define NNZDIGITS 0x800 /* no non-zero digits detected */ #define VECTOR 0x2000 /* v: vector */ #define FIXEDPOINT 0x4000 /* r/R: fixed-point */ #define SIGNED 0x8000 /* r: signed fixed-point */ /* * Conversion types. */ #define CT_CHAR 0 /* %c conversion */ #define CT_CCL 1 /* %[...] conversion */ #define CT_STRING 2 /* %s conversion */ #define CT_INT 3 /* integer, i.e., strtol or strtoul */ #define CT_FLOAT 4 /* floating, i.e., strtod */ #if 0 #define u_char unsigned char #endif #define u_char char #define u_long unsigned long #ifndef _NO_LONGLONG typedef unsigned long long u_long_long; #endif typedef union { char c[16] __attribute__ ((__aligned__ (16))); short h[8]; long l[4]; int i[4]; float f[4]; } vec_union; /* * vfscanf */ #define BufferEmpty (fp->_r <= 0 && __srefill(fp)) #ifndef _REENT_ONLY int vfscanf (register FILE *__restrict fp, const char *__restrict fmt, va_list ap) { CHECK_INIT(_REENT, fp); return __svfscanf_r (_REENT, fp, fmt, ap); } int __svfscanf (fp, fmt0, ap) register FILE *fp; char const *fmt0; va_list ap; { return __svfscanf_r (_REENT, fp, fmt0, ap); } #endif /* !_REENT_ONLY */ int _vfscanf_r (struct _reent *data, register FILE *__restrict fp, const char *__restrict fmt, va_list ap) { return __svfscanf_r (data, fp, fmt, ap); } int __svfscanf_r (rptr, fp, fmt0, ap) struct _reent *rptr; register FILE *fp; char const *fmt0; va_list ap; { register u_char *fmt = (u_char *) fmt0; register int c; /* character from format, or conversion */ register int type; /* conversion type */ register size_t width; /* field width, or 0 */ register char *p; /* points into all kinds of strings */ register int n; /* handy integer */ register int flags; /* flags as defined above */ register char *p0; /* saves original value of p when necessary */ int orig_flags; /* saved flags used when processing vector */ int int_width; /* tmp area to store width when processing int */ int nassigned; /* number of fields assigned */ int nread; /* number of characters consumed from fp */ int base = 0; /* base argument to strtol/strtoul */ int nbytes = 1; /* number of bytes read from fmt string */ wchar_t wc; /* wchar to use to read format string */ char vec_sep; /* vector separator char */ char last_space_char; /* last white-space char eaten - needed for vec support */ int vec_read_count; /* number of vector items to read separately */ int looped; /* has vector processing looped */ u_long (*ccfn) () = 0; /* conversion function (strtol/strtoul) */ char ccltab[256]; /* character class table for %[...] */ char buf[BUF]; /* buffer for numeric conversions */ vec_union vec_buf; char *lptr; /* literal pointer */ #ifdef _MB_CAPABLE mbstate_t state; /* value to keep track of multibyte state */ #endif char *ch_dest; short *sp; int *ip; float *flp; _LONG_DOUBLE *ldp; double *dp; long *lp; #ifndef _NO_LONGLONG long long *llp; #else u_long _uquad; #endif /* `basefix' is used to avoid `if' tests in the integer scanner */ static const short basefix[17] = {10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; nassigned = 0; nread = 0; for (;;) { #ifndef _MB_CAPABLE wc = *fmt; #else memset (&state, '\0', sizeof (state)); nbytes = _mbtowc_r (rptr, &wc, fmt, MB_CUR_MAX, &state); #endif fmt += nbytes; if (wc == 0) return nassigned; if (nbytes == 1 && isspace (wc)) { for (;;) { if (BufferEmpty) return nassigned; if (!isspace (*fp->_p)) break; nread++, fp->_r--, fp->_p++; } continue; } if (wc != '%') goto literal; width = 0; flags = 0; vec_sep = ' '; vec_read_count = 0; looped = 0; /* * switch on the format. continue if done; break once format * type is derived. */ again: c = *fmt++; switch (c) { case '%': literal: lptr = fmt - nbytes; for (n = 0; n < nbytes; ++n) { if (BufferEmpty) goto input_failure; if (*fp->_p != *lptr) goto match_failure; fp->_r--, fp->_p++; nread++; ++lptr; } continue; case '*': flags |= SUPPRESS; goto again; case ',': case ';': case ':': case '_': if (flags == SUPPRESS || flags == 0) vec_sep = c; goto again; case 'l': if (flags & SHORT) continue; /* invalid format, don't process any further */ if (flags & LONG) { flags &= ~LONG; flags &= ~VECTOR; flags |= LONGDBL; } else { flags |= LONG; if (flags & VECTOR) vec_read_count = 4; } goto again; case 'L': flags |= LONGDBL; flags &= ~VECTOR; goto again; case 'h': flags |= SHORT; if (flags & LONG) continue; /* invalid format, don't process any further */ if (flags & VECTOR) vec_read_count = 8; goto again; #ifdef __ALTIVEC__ case 'v': flags |= VECTOR; vec_read_count = (flags & SHORT) ? 8 : ((flags & LONG) ? 4 : 16); goto again; #endif case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': width = width * 10 + c - '0'; goto again; /* * Conversions. Those marked `compat' are for * 4.[123]BSD compatibility. * * (According to ANSI, E and X formats are supposed to * the same as e and x. Sorry about that.) */ case 'D': /* compat */ flags |= LONG; FALLTHROUGH; case 'd': type = CT_INT; ccfn = (u_long (*)())_strtol_r; base = 10; break; case 'i': type = CT_INT; ccfn = (u_long (*)())_strtol_r; base = 0; break; case 'O': /* compat */ flags |= LONG; FALLTHROUGH; case 'o': type = CT_INT; ccfn = _strtoul_r; base = 8; break; case 'u': type = CT_INT; ccfn = _strtoul_r; base = 10; break; case 'X': /* compat XXX */ case 'x': flags |= PFXOK; /* enable 0x prefixing */ type = CT_INT; ccfn = _strtoul_r; base = 16; break; #ifdef FLOATING_POINT case 'E': /* compat XXX */ case 'G': /* compat XXX */ /* ANSI says that E,G and X behave the same way as e,g,x */ FALLTHROUGH; case 'e': case 'f': case 'g': type = CT_FLOAT; if (flags & VECTOR) vec_read_count = 4; break; # ifdef __SPE__ /* treat fixed-point like %f floating point */ case 'r': flags |= SIGNED; FALLTHROUGH; case 'R': flags |= FIXEDPOINT; type = CT_FLOAT; break; # endif #endif case 's': flags &= ~VECTOR; type = CT_STRING; break; case '[': fmt = __sccl (ccltab, fmt); flags |= NOSKIP; flags &= ~VECTOR; type = CT_CCL; break; case 'c': flags |= NOSKIP; type = CT_CHAR; if (flags & VECTOR) { /* not allowed to have h or l with c specifier */ if (flags & (LONG | SHORT)) continue; /* invalid format don't process any further */ width = 0; vec_read_count = 16; } break; case 'p': /* pointer format is like hex */ flags |= POINTER | PFXOK; type = CT_INT; ccfn = _strtoul_r; base = 16; break; case 'n': if (flags & SUPPRESS) /* ??? */ continue; flags &= ~VECTOR; if (flags & SHORT) { sp = va_arg (ap, short *); *sp = nread; } else if (flags & LONG) { lp = va_arg (ap, long *); *lp = nread; } #ifndef _NO_LONGLONG else if (flags & LONGDBL) { llp = va_arg (ap, long long*); *llp = nread; } #endif else { ip = va_arg (ap, int *); *ip = nread; } continue; /* * Disgusting backwards compatibility hacks. XXX */ case '\0': /* compat */ return EOF; default: /* compat */ if (isupper (c)) flags |= LONG; type = CT_INT; ccfn = (u_long (*)())_strtol_r; base = 10; break; } process: /* * We have a conversion that requires input. */ if (BufferEmpty) goto input_failure; /* * Consume leading white space, except for formats that * suppress this. */ last_space_char = '\0'; if ((flags & NOSKIP) == 0) { while (isspace (*fp->_p)) { last_space_char = *fp->_p; nread++; if (--fp->_r > 0) fp->_p++; else #ifndef CYGNUS_NEC if (__srefill (fp)) #endif goto input_failure; } /* * Note that there is at least one character in the * buffer, so conversions that do not set NOSKIP ca * no longer result in an input failure. */ } /* for vector formats process separator characters after first loop */ if (looped && (flags & VECTOR)) { flags = orig_flags; /* all formats other than default char have a separator char */ if (vec_sep != ' ' || type != CT_CHAR) { if (vec_sep == ' ' && last_space_char != ' ' || vec_sep != ' ' && *fp->_p != vec_sep) goto match_failure; if (vec_sep != ' ') { nread++; if (--fp->_r > 0) fp->_p++; else #ifndef CYGNUS_NEC if (__srefill (fp)) #endif goto input_failure; } } /* after eating the separator char, we must eat any white-space after the separator char that precedes the data to convert */ if ((flags & NOSKIP) == 0) { while (isspace (*fp->_p)) { last_space_char = *fp->_p; nread++; if (--fp->_r > 0) fp->_p++; else #ifndef CYGNUS_NEC if (__srefill (fp)) #endif goto input_failure; } } } else /* save to counter-act changes made to flags when processing */ orig_flags = flags; /* * Do the conversion. */ switch (type) { case CT_CHAR: /* scan arbitrary characters (sets NOSKIP) */ if (width == 0) width = 1; if (flags & SUPPRESS) { size_t sum = 0; for (;;) { if ((n = fp->_r) < (int)width) { sum += n; width -= n; fp->_p += n; #ifndef CYGNUS_NEC if (__srefill (fp)) { #endif if (sum == 0) goto input_failure; break; #ifndef CYGNUS_NEC } #endif } else { sum += width; fp->_r -= width; fp->_p += width; break; } } nread += sum; } else { int n = width; if (!looped) { if (flags & VECTOR) ch_dest = vec_buf.c; else ch_dest = va_arg (ap, char *); } #ifdef CYGNUS_NEC /* Kludge city for the moment */ if (fp->_r == 0) goto input_failure; while (n && fp->_r) { *ch_dest++ = *(fp->_p++); n--; fp->_r--; nread++; } #else size_t r = fread (ch_dest, 1, width, fp); if (r == 0) goto input_failure; nread += r; ch_dest += r; #endif if (!(flags & VECTOR)) nassigned++; } break; case CT_CCL: /* scan a (nonempty) character class (sets NOSKIP) */ if (width == 0) width = ~0; /* `infinity' */ /* take only those things in the class */ if (flags & SUPPRESS) { n = 0; while (ccltab[*fp->_p]) { n++, fp->_r--, fp->_p++; if (--width == 0) break; if (BufferEmpty) { if (n == 0) goto input_failure; break; } } if (n == 0) goto match_failure; } else { p0 = p = va_arg (ap, char *); while (ccltab[*fp->_p]) { fp->_r--; *p++ = *fp->_p++; if (--width == 0) break; if (BufferEmpty) { if (p == p0) goto input_failure; break; } } n = p - p0; if (n == 0) goto match_failure; *p = 0; nassigned++; } nread += n; break; case CT_STRING: /* like CCL, but zero-length string OK, & no NOSKIP */ if (width == 0) width = ~0; if (flags & SUPPRESS) { n = 0; while (!isspace (*fp->_p)) { n++, fp->_r--, fp->_p++; if (--width == 0) break; if (BufferEmpty) break; } nread += n; } else { p0 = p = va_arg (ap, char *); while (!isspace (*fp->_p)) { fp->_r--; *p++ = *fp->_p++; if (--width == 0) break; if (BufferEmpty) break; } *p = 0; nread += p - p0; nassigned++; } continue; case CT_INT: { unsigned int_width_left = 0; int skips = 0; int_width = width; #ifdef hardway if (int_width == 0 || int_width > sizeof (buf) - 1) #else /* size_t is unsigned, hence this optimisation */ if (int_width - 1 > sizeof (buf) - 2) #endif { int_width_left = width - (sizeof (buf) - 1); int_width = sizeof (buf) - 1; } flags |= SIGNOK | NDIGITS | NZDIGITS | NNZDIGITS; for (p = buf; int_width; int_width--) { c = *fp->_p; /* * Switch on the character; `goto ok' if we * accept it as a part of number. */ switch (c) { /* * The digit 0 is always legal, but is special. * For %i conversions, if no digits (zero or nonzero) * have been scanned (only signs), we will have base==0. * In that case, we should set it to 8 and enable 0x * prefixing. Also, if we have not scanned zero digits * before this, do not turn off prefixing (someone else * will turn it off if we have scanned any nonzero digits). */ case '0': if (! (flags & NNZDIGITS)) goto ok; if (base == 0) { base = 8; flags |= PFXOK; } if (flags & NZDIGITS) { flags &= ~(SIGNOK | NZDIGITS | NDIGITS); goto ok; } flags &= ~(SIGNOK | PFXOK | NDIGITS); if (int_width_left) { int_width_left--; int_width++; } ++skips; goto skip; /* 1 through 7 always legal */ case '1': case '2': case '3': case '4': case '5': case '6': case '7': base = basefix[base]; flags &= ~(SIGNOK | PFXOK | NDIGITS | NNZDIGITS); goto ok; /* digits 8 and 9 ok iff decimal or hex */ case '8': case '9': base = basefix[base]; if (base <= 8) break; /* not legal here */ flags &= ~(SIGNOK | PFXOK | NDIGITS | NNZDIGITS); goto ok; /* letters ok iff hex */ case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': /* no need to fix base here */ if (base <= 10) break; /* not legal here */ flags &= ~(SIGNOK | PFXOK | NDIGITS | NNZDIGITS); goto ok; /* sign ok only as first character */ case '+': case '-': if (flags & SIGNOK) { flags &= ~SIGNOK; goto ok; } break; /* x ok iff flag still set & 2nd char */ case 'x': case 'X': if (flags & PFXOK && p == buf + 1) { base = 16;/* if %i */ flags &= ~PFXOK; /* We must reset the NZDIGITS and NDIGITS flags that would have been unset by seeing the zero that preceded the X or x. */ flags |= NZDIGITS | NDIGITS; goto ok; } break; } /* * If we got here, c is not a legal character * for a number. Stop accumulating digits. */ break; ok: /* * c is legal: store it and look at the next. */ *p++ = c; skip: if (--fp->_r > 0) fp->_p++; else #ifndef CYGNUS_NEC if (__srefill (fp)) #endif break; /* EOF */ } /* * If we had only a sign, it is no good; push back the sign. * If the number ends in `x', it was [sign] '0' 'x', so push back * the x and treat it as [sign] '0'. */ if (flags & NDIGITS) { if (p > buf) (void) ungetc (*(u_char *)-- p, fp); goto match_failure; } c = ((u_char *) p)[-1]; if (c == 'x' || c == 'X') { --p; /*(void)*/ ungetc (c, fp); } if ((flags & SUPPRESS) == 0) { u_long res; *p = 0; res = (*ccfn) (rptr, buf, (char **) NULL, base); if ((flags & POINTER) && !(flags & VECTOR)) *(va_arg (ap, void **)) = (void *) (unsigned _POINTER_INT) res; else if (flags & SHORT) { if (!(flags & VECTOR)) sp = va_arg (ap, short *); else if (!looped) sp = vec_buf.h; *sp++ = res; } else if (flags & LONG) { if (!(flags & VECTOR)) lp = va_arg (ap, long *); else if (!looped) lp = vec_buf.l; *lp++ = res; } #ifndef _NO_LONGLONG else if (flags & LONGDBL) { u_long_long resll; if (ccfn == _strtoul_r) resll = _strtoull_r (rptr, buf, (char **) NULL, base); else resll = _strtoll_r (rptr, buf, (char **) NULL, base); llp = va_arg (ap, long long*); *llp = resll; } #endif else { if (!(flags & VECTOR)) { ip = va_arg (ap, int *); *ip++ = res; } else { if (!looped) ch_dest = vec_buf.c; *ch_dest++ = (char)res; } } if (!(flags & VECTOR)) nassigned++; } nread += p - buf + skips; break; } #ifdef FLOATING_POINT case CT_FLOAT: { /* scan a floating point number as if by strtod */ /* This code used to assume that the number of digits is reasonable. However, ANSI / ISO C makes no such stipulation; we have to get exact results even when there is an unreasonable amount of leading zeroes. */ long leading_zeroes = 0; long zeroes, exp_adjust; char *exp_start = NULL; unsigned fl_width = width; unsigned width_left = 0; #ifdef hardway if (fl_width == 0 || fl_width > sizeof (buf) - 1) #else /* size_t is unsigned, hence this optimisation */ if (fl_width - 1 > sizeof (buf) - 2) #endif { width_left = fl_width - (sizeof (buf) - 1); fl_width = sizeof (buf) - 1; } flags |= SIGNOK | NDIGITS | DPTOK | EXPOK; zeroes = 0; exp_adjust = 0; for (p = buf; fl_width; ) { c = *fp->_p; /* * This code mimicks the integer conversion * code, but is much simpler. */ switch (c) { case '0': if (flags & NDIGITS) { flags &= ~SIGNOK; zeroes++; if (width_left) { width_left--; fl_width++; } goto fskip; } /* Fall through. */ case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': flags &= ~(SIGNOK | NDIGITS); goto fok; case '+': case '-': if (flags & SIGNOK) { flags &= ~SIGNOK; goto fok; } break; case '.': if (flags & DPTOK) { flags &= ~(SIGNOK | DPTOK); leading_zeroes = zeroes; goto fok; } break; case 'e': case 'E': /* no exponent without some digits */ if ((flags & (NDIGITS | EXPOK)) == EXPOK || ((flags & EXPOK) && zeroes)) { if (! (flags & DPTOK)) { exp_adjust = zeroes - leading_zeroes; exp_start = p; } flags = (flags & ~(EXPOK | DPTOK)) | SIGNOK | NDIGITS; zeroes = 0; goto fok; } break; } break; fok: *p++ = c; fskip: fl_width--; ++nread; if (--fp->_r > 0) fp->_p++; else #ifndef CYGNUS_NEC if (__srefill (fp)) #endif break; /* EOF */ } if (zeroes) flags &= ~NDIGITS; /* * If no digits, might be missing exponent digits * (just give back the exponent) or might be missing * regular digits, but had sign and/or decimal point. */ if (flags & NDIGITS) { if (flags & EXPOK) { /* no digits at all */ while (p > buf) { ungetc (*(u_char *)-- p, fp); --nread; } goto match_failure; } /* just a bad exponent (e and maybe sign) */ c = *(u_char *)-- p; --nread; if (c != 'e' && c != 'E') { (void) ungetc (c, fp); /* sign */ c = *(u_char *)-- p; --nread; } (void) ungetc (c, fp); } if ((flags & SUPPRESS) == 0) { #ifdef _NO_LONGDBL double res; #else /* !_NO_LONG_DBL */ long double res; #endif /* !_NO_LONG_DBL */ long new_exp = 0; *p = 0; if ((flags & (DPTOK | EXPOK)) == EXPOK) { exp_adjust = zeroes - leading_zeroes; new_exp = -exp_adjust; exp_start = p; } else if (exp_adjust) new_exp = _strtol_r (rptr, (exp_start + 1), NULL, 10) - exp_adjust; if (exp_adjust) { /* If there might not be enough space for the new exponent, truncate some trailing digits to make room. */ if (exp_start >= buf + sizeof (buf) - MAX_LONG_LEN) exp_start = buf + sizeof (buf) - MAX_LONG_LEN - 1; sprintf (exp_start, "e%ld", new_exp); } #ifdef __SPE__ if (flags & FIXEDPOINT) { __uint64_t ufix64; if (flags & SIGNED) ufix64 = (__uint64_t)_strtosfix64_r (rptr, buf, NULL); else ufix64 = _strtoufix64_r (rptr, buf, NULL); if (flags & SHORT) { __uint16_t *sp = va_arg (ap, __uint16_t *); *sp = (__uint16_t)(ufix64 >> 48); } else if (flags & LONG) { __uint64_t *llp = va_arg (ap, __uint64_t *); *llp = ufix64; } else { __uint32_t *lp = va_arg (ap, __uint32_t *); *lp = (__uint32_t)(ufix64 >> 32); } nassigned++; break; } #endif /* __SPE__ */ #ifdef _NO_LONGDBL res = _strtod_r (rptr, buf, NULL); #else /* !_NO_LONGDBL */ res = _strtold_r (rptr, buf, NULL); #endif /* !_NO_LONGDBL */ if (flags & LONG) { dp = va_arg (ap, double *); *dp = res; } else if (flags & LONGDBL) { ldp = va_arg (ap, _LONG_DOUBLE *); *ldp = res; } else { if (!(flags & VECTOR)) flp = va_arg (ap, float *); else if (!looped) flp = vec_buf.f; *flp++ = res; } if (!(flags & VECTOR)) nassigned++; } break; } #endif /* FLOATING_POINT */ } if (vec_read_count-- > 1) { looped = 1; goto process; } if (flags & VECTOR) { int i; unsigned long *vp = va_arg (ap, unsigned long *); for (i = 0; i < 4; ++i) *vp++ = vec_buf.l[i]; nassigned++; } } input_failure: return nassigned ? nassigned : -1; match_failure: return nassigned; } picolibc-1.7.4/newlib/libc/machine/pru/000077500000000000000000000000001414576234500177255ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/pru/setjmp.s000066400000000000000000000033411414576234500214140ustar00rootroot00000000000000/* SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright (c) 2018-2019 Dimitar Dimitrov * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ .section .text .align 3 .globl setjmp .type setjmp,@function .globl longjmp .type longjmp,@function setjmp: sbbo r2, r14, 0, 4*12 /* SP, RA, FP, r5-r13 */ ldi r14, 0 ret longjmp: lbbo r2, r14, 0, 4*12 /* SP, RA, FP, r5-r13 */ mov r14, r15 /* copy second arg to return location */ qbne 1f, r14, 0 /* per stdC, we cannot return 0 */ ldi r14, 1 1: ret picolibc-1.7.4/newlib/libc/machine/riscv/000077500000000000000000000000001414576234500202455ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/riscv/ieeefp.c000066400000000000000000000054671414576234500216620ustar00rootroot00000000000000/* Copyright (c) 2017 SiFive Inc. All rights reserved. This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the FreeBSD License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. A copy of this license is available at http://www.opensource.org/licenses. */ #include #ifdef __riscv_flen static void fssr(unsigned value) { __asm__ volatile ("fscsr %0" :: "r"(value)); } static unsigned frsr(void) { unsigned value; __asm__ volatile ("frcsr %0" : "=r" (value)); return value; } static fp_rnd frm_fp_rnd (unsigned frm) { switch (frm) { case 0: return FP_RN; case 1: return FP_RZ; case 2: return FP_RM; case 3: return FP_RP; /* 4 ~ 7 is invalid value, so just retun FP_RP. */ default:return FP_RP; } } static fp_except frm_fp_except (unsigned except) { fp_except fp = 0; if (except & (1 << 0)) fp |= FP_X_IMP; if (except & (1 << 1)) fp |= FP_X_UFL; if (except & (1 << 2)) fp |= FP_X_OFL; if (except & (1 << 3)) fp |= FP_X_DX; if (except & (1 << 4)) fp |= FP_X_INV; return fp; } static unsigned frm_except(fp_except fp) { unsigned except = 0; if (fp & FP_X_IMP) except |= (1 << 0); if (fp & FP_X_UFL) except |= (1 << 1); if (fp & FP_X_OFL) except |= (1 << 2); if (fp & FP_X_DX) except |= (1 << 3); if (fp & FP_X_INV) except |= (1 << 4); return except; } #endif /* __riscv_flen */ fp_except fpgetmask(void) { return 0; } fp_rnd fpgetround(void) { #ifdef __riscv_flen unsigned rm = (frsr () >> 5) & 0x7; return frm_fp_rnd (rm); #else return FP_RZ; #endif /* __riscv_flen */ } fp_except fpgetsticky(void) { #ifdef __riscv_flen return frm_fp_except(frsr ()); #else return 0; #endif /* __riscv_flen */ } fp_except fpsetmask(fp_except mask) { (void) mask; return -1; } fp_rnd fpsetround(fp_rnd rnd_dir) { #ifdef __riscv_flen unsigned fsr = frsr (); unsigned rm = (fsr >> 5) & 0x7; unsigned new_rm; switch (rnd_dir) { case FP_RN: new_rm = 0; break; case FP_RZ: new_rm = 1; break; case FP_RM: new_rm = 2; break; case FP_RP: new_rm = 3; break; default: return -1; } fssr (new_rm << 5 | (fsr & 0x1f)); return frm_fp_rnd (rm); #else (void) rnd_dir; return -1; #endif /* __riscv_flen */ } fp_except fpsetsticky(fp_except sticky) { #ifdef __riscv_flen unsigned fsr = frsr (); fssr (frm_except(sticky) | (fsr & ~0x1f)); return frm_fp_except(fsr); #else (void) sticky; return -1; #endif /* __riscv_flen */ } fp_rdi fpgetroundtoi (void) { return 0; } fp_rdi fpsetroundtoi (fp_rdi rdi) { (void) rdi; return -1; } picolibc-1.7.4/newlib/libc/machine/riscv/machine/000077500000000000000000000000001414576234500216515ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/riscv/machine/math.h000066400000000000000000000157141414576234500227630ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2020 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _MACHINE_MATH_H_ #define _MACHINE_MATH_H_ #ifdef __riscv_flen #ifdef _WANT_MATH_ERRNO #include #endif #define FCLASS_NEG_INF (1 << 0) #define FCLASS_NEG_NORMAL (1 << 1) #define FCLASS_NEG_SUBNORMAL (1 << 2) #define FCLASS_NEG_ZERO (1 << 3) #define FCLASS_POS_ZERO (1 << 4) #define FCLASS_POS_SUBNORMAL (1 << 5) #define FCLASS_POS_NORMAL (1 << 6) #define FCLASS_POS_INF (1 << 7) #define FCLASS_SNAN (1 << 8) #define FCLASS_QNAN (1 << 9) #define FCLASS_INF (FCLASS_NEG_INF | FCLASS_POS_INF) #define FCLASS_ZERO (FCLASS_NEG_ZERO | FCLASS_POS_ZERO) #define FCLASS_NORMAL (FCLASS_NEG_NORMAL | FCLASS_POS_NORMAL) #define FCLASS_SUBNORMAL (FCLASS_NEG_SUBNORMAL | FCLASS_POS_SUBNORMAL) #define FCLASS_NAN (FCLASS_SNAN | FCLASS_QNAN) #endif /** * Not availabe for all compilers. * In case of absence, fall back to normal function calls */ #ifdef __GNUC_GNU_INLINE__ # define __declare_riscv_macro(type) extern __inline type __attribute((gnu_inline, always_inline)) # define __declare_riscv_macro_fclass(type) extern __inline type __attribute((gnu_inline, always_inline)) #else # define __declare_riscv_macro_fclass(type) static __inline type #endif /* We always need the fclass functions */ #if __riscv_flen >= 64 __declare_riscv_macro_fclass(long) _fclass_d(double x) { long fclass; __asm __volatile ("fclass.d\t%0, %1" : "=r" (fclass) : "f" (x)); return fclass; } #endif #if __riscv_flen >= 32 __declare_riscv_macro_fclass(long) _fclass_f(float x) { long fclass; __asm __volatile ("fclass.s\t%0, %1" : "=r" (fclass) : "f" (x)); return fclass; } #endif #undef declare_riscv_macro_fclass #ifdef __declare_riscv_macro #if __riscv_flen >= 64 /* Double-precision functions */ __declare_riscv_macro(double) copysign(double x, double y) { double result; __asm__("fsgnj.d\t%0, %1, %2" : "=f" (result) : "f" (x), "f" (y)); return result; } __declare_riscv_macro(double) fabs(double x) { double result; __asm__("fabs.d\t%0, %1" : "=f"(result) : "f"(x)); return result; } __declare_riscv_macro(double) fmax (double x, double y) { double result; __asm__("fmax.d\t%0, %1, %2" : "=f" (result) : "f" (x), "f" (y)); return result; } __declare_riscv_macro(double) fmin (double x, double y) { double result; __asm__("fmin.d\t%0, %1, %2" : "=f" (result) : "f" (x), "f" (y)); return result; } __declare_riscv_macro(int) finite(double x) { long fclass = _fclass_d (x); return (fclass & (FCLASS_INF|FCLASS_NAN)) == 0; } __declare_riscv_macro(int) __fpclassifyd (double x) { long fclass = _fclass_d (x); if (fclass & FCLASS_ZERO) return FP_ZERO; else if (fclass & FCLASS_NORMAL) return FP_NORMAL; else if (fclass & FCLASS_SUBNORMAL) return FP_SUBNORMAL; else if (fclass & FCLASS_INF) return FP_INFINITE; else return FP_NAN; } #ifndef isinf __declare_riscv_macro(int) isinf (double x) { long fclass = _fclass_d (x); return (fclass & FCLASS_INF); } #endif #ifndef isnan __declare_riscv_macro(int) isnan (double x) { long fclass = _fclass_d (x); return (fclass & FCLASS_NAN); } #endif __declare_riscv_macro(double) sqrt (double x) { double result; #ifdef _WANT_MATH_ERRNO if (x < 0) errno = EDOM; #endif __asm__("fsqrt.d %0, %1" : "=f" (result) : "f" (x)); return result; } #if HAVE_FAST_FMA __declare_riscv_macro(double) fma (double x, double y, double z) { double result; __asm__("fmadd.d %0, %1, %2, %3" : "=f" (result) : "f" (x), "f" (y), "f" (z)); return result; } #endif #endif /* __riscv_flen >= 64 */ #if __riscv_flen >= 32 /* Single-precision functions */ __declare_riscv_macro(float) copysignf(float x, float y) { float result; __asm__("fsgnj.s\t%0, %1, %2" : "=f" (result) : "f" (x), "f" (y)); return result; } __declare_riscv_macro(float) fabsf (float x) { float result; __asm__("fabs.s\t%0, %1" : "=f"(result) : "f"(x)); return result; } __declare_riscv_macro(float) fmaxf (float x, float y) { float result; __asm__("fmax.s\t%0, %1, %2" : "=f" (result) : "f" (x), "f" (y)); return result; } __declare_riscv_macro(float) fminf (float x, float y) { float result; __asm__("fmin.s\t%0, %1, %2" : "=f" (result) : "f" (x), "f" (y)); return result; } __declare_riscv_macro(int) finitef(float x) { long fclass = _fclass_f (x); return (fclass & (FCLASS_INF|FCLASS_NAN)) == 0; } __declare_riscv_macro(int) __fpclassifyf (float x) { long fclass = _fclass_f (x); if (fclass & FCLASS_ZERO) return FP_ZERO; else if (fclass & FCLASS_NORMAL) return FP_NORMAL; else if (fclass & FCLASS_SUBNORMAL) return FP_SUBNORMAL; else if (fclass & FCLASS_INF) return FP_INFINITE; else return FP_NAN; } __declare_riscv_macro(int) isinff (float x) { long fclass = _fclass_f (x); return (fclass & FCLASS_INF); } __declare_riscv_macro(int) isnanf (float x) { long fclass = _fclass_f (x); return (fclass & FCLASS_NAN); } __declare_riscv_macro(float) sqrtf (float x) { float result; #ifdef _WANT_MATH_ERRNO if (x < 0) errno = EDOM; #endif __asm__("fsqrt.s %0, %1" : "=f" (result) : "f" (x)); return result; } #if defined(HAVE_FAST_FMAF) __declare_riscv_macro(float) fmaf (float x, float y, float z) { float result; __asm__("fmadd.s %0, %1, %2, %3" : "=f" (result) : "f" (x), "f" (y), "f" (z)); return result; } #endif #endif /* __riscv_flen >= 32 */ #undef declare_riscv_macro #endif /* defined(declare_riscv_macro) */ #endif /* _MACHINE_MATH_H_ */ picolibc-1.7.4/newlib/libc/machine/riscv/machine/meson.build000066400000000000000000000032441414576234500240160ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2020 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # inc_machine_headers_machine = [ 'math.h' ] install_headers(inc_machine_headers_machine, subdir:'machine' ) picolibc-1.7.4/newlib/libc/machine/riscv/memcpy-asm.S000066400000000000000000000014761414576234500224510ustar00rootroot00000000000000/* Copyright (c) 2019 SiFive Inc. All rights reserved. This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the FreeBSD License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. A copy of this license is available at http://www.opensource.org/licenses. */ #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) .section .text.memcpy .global memcpy .type memcpy, @function memcpy: mv t1, a0 beqz a2, 2f 1: lb t2, 0(a1) sb t2, 0(t1) add a2, a2, -1 add t1, t1, 1 add a1, a1, 1 bnez a2, 1b 2: ret .size memcpy, .-memcpy #endif picolibc-1.7.4/newlib/libc/machine/riscv/memcpy.c000066400000000000000000000037661414576234500217170ustar00rootroot00000000000000/* Copyright (c) 2017 SiFive Inc. All rights reserved. This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the FreeBSD License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. A copy of this license is available at http://www.opensource.org/licenses. */ #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) //memcpy defined in memcpy-asm.S #else #include #include #include "../../string/local.h" #define unlikely(X) __builtin_expect (!!(X), 0) #undef memcpy void * __inhibit_loop_to_libcall memcpy(void *__restrict aa, const void *__restrict bb, size_t n) { #define BODY(a, b, t) { \ t tt = *b; \ a++, b++; \ *(a - 1) = tt; \ } char *a = (char *)aa; const char *b = (const char *)bb; char *end = a + n; uintptr_t msk = sizeof (long) - 1; if (unlikely ((((uintptr_t)a & msk) != ((uintptr_t)b & msk)) || n < sizeof (long))) { small: if (__builtin_expect (a < end, 1)) while (a < end) BODY (a, b, char); return aa; } if (unlikely (((uintptr_t)a & msk) != 0)) while ((uintptr_t)a & msk) BODY (a, b, char); long *la = (long *)a; const long *lb = (const long *)b; long *lend = (long *)((uintptr_t)end & ~msk); if (unlikely (lend - la > 8)) { while (lend - la > 8) { long b0 = *lb++; long b1 = *lb++; long b2 = *lb++; long b3 = *lb++; long b4 = *lb++; long b5 = *lb++; long b6 = *lb++; long b7 = *lb++; long b8 = *lb++; *la++ = b0; *la++ = b1; *la++ = b2; *la++ = b3; *la++ = b4; *la++ = b5; *la++ = b6; *la++ = b7; *la++ = b8; } } while (la < lend) BODY (la, lb, long); a = (char *)la; b = (const char *)lb; if (unlikely (a < end)) goto small; return aa; } #endif picolibc-1.7.4/newlib/libc/machine/riscv/memmove-stub.c000066400000000000000000000011701414576234500230300ustar00rootroot00000000000000/* Copyright (c) 2019 SiFive Inc. All rights reserved. This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the FreeBSD License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. A copy of this license is available at http://www.opensource.org/licenses. */ #if !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) #include "../../string/memmove.c" #endif picolibc-1.7.4/newlib/libc/machine/riscv/memmove.S000066400000000000000000000016501414576234500220400ustar00rootroot00000000000000/* Copyright (c) 2019 SiFive Inc. All rights reserved. This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the FreeBSD License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. A copy of this license is available at http://www.opensource.org/licenses. */ #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) .section .text.memmove .global memmove .type memmove, @function memmove: beqz a2, 2f mv t1, a0 li a3, 1 bgtu a1, a0, 1f li a3, -1 addi a4, a2 , -1 add t1, t1, a4 add a1, a1, a4 1: lb t2, 0(a1) sb t2, 0(t1) add a2, a2, -1 add t1, t1, a3 add a1, a1, a3 bnez a2, 1b 2: ret .size memmove, .-memmove #endif picolibc-1.7.4/newlib/libc/machine/riscv/memset.S000066400000000000000000000037151414576234500216710ustar00rootroot00000000000000/* Copyright (c) 2017 SiFive Inc. All rights reserved. This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the FreeBSD License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. A copy of this license is available at http://www.opensource.org/licenses. */ .section .text.memset .global memset .type memset, @function memset: #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) mv t1, a0 beqz a2, 2f 1: sb a1, 0(t1) add a2, a2, -1 add t1, t1, 1 bnez a2, 1b 2: ret #else li t1, 15 move a4, a0 bleu a2, t1, .Ltiny and a5, a4, 15 bnez a5, .Lmisaligned .Laligned: bnez a1, .Lwordify .Lwordified: and a3, a2, ~15 and a2, a2, 15 add a3, a3, a4 #if __riscv_xlen == 64 1:sd a1, 0(a4) sd a1, 8(a4) #else 1:sw a1, 0(a4) sw a1, 4(a4) sw a1, 8(a4) sw a1, 12(a4) #endif add a4, a4, 16 bltu a4, a3, 1b bnez a2, .Ltiny ret .Ltiny: sub a3, t1, a2 sll a3, a3, 2 1:auipc t0, %pcrel_hi(.Ltable) add a3, a3, t0 .option push .option norvc .Ltable_misaligned: jr a3, %pcrel_lo(1b) .Ltable: sb a1,14(a4) sb a1,13(a4) sb a1,12(a4) sb a1,11(a4) sb a1,10(a4) sb a1, 9(a4) sb a1, 8(a4) sb a1, 7(a4) sb a1, 6(a4) sb a1, 5(a4) sb a1, 4(a4) sb a1, 3(a4) sb a1, 2(a4) sb a1, 1(a4) sb a1, 0(a4) .option pop ret .Lwordify: and a1, a1, 0xFF sll a3, a1, 8 or a1, a1, a3 sll a3, a1, 16 or a1, a1, a3 #if __riscv_xlen == 64 sll a3, a1, 32 or a1, a1, a3 #endif j .Lwordified .Lmisaligned: sll a3, a5, 2 1:auipc t0, %pcrel_hi(.Ltable_misaligned) add a3, a3, t0 mv t0, ra jalr a3, %pcrel_lo(1b) mv ra, t0 add a5, a5, -16 sub a4, a4, a5 add a2, a2, a5 bleu a2, t1, .Ltiny j .Laligned #endif .size memset, .-memset picolibc-1.7.4/newlib/libc/machine/riscv/meson.build000066400000000000000000000040161414576234500224100ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # srcs_machine = [ 'ieeefp.c', 'memcpy-asm.S', 'memcpy.c', 'memmove.S', 'memmove-stub.c', 'memset.S', 'setjmp.S', 'strcmp.S', 'strcpy.c', 'strlen.c', ] has_ieeefp_funcs = true subdir('sys') subdir('machine') foreach target : targets value = get_variable('target_' + target) set_variable('lib_machine' + target, static_library('machine' + target, srcs_machine, pic: false, include_directories: inc, c_args: value[1] + arg_fnobuiltin)) endforeach picolibc-1.7.4/newlib/libc/machine/riscv/setjmp.S000066400000000000000000000051161414576234500216760ustar00rootroot00000000000000/* Copyright (c) 2017 SiFive Inc. All rights reserved. This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the FreeBSD License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. A copy of this license is available at http://www.opensource.org/licenses. */ #include /* int setjmp (jmp_buf); */ .section .text.setjmp .globl setjmp .type setjmp, @function setjmp: REG_S ra, 0*SZREG(a0) REG_S s0, 1*SZREG(a0) REG_S s1, 2*SZREG(a0) #ifndef __riscv_32e REG_S s2, 3*SZREG(a0) REG_S s3, 4*SZREG(a0) REG_S s4, 5*SZREG(a0) REG_S s5, 6*SZREG(a0) REG_S s6, 7*SZREG(a0) REG_S s7, 8*SZREG(a0) REG_S s8, 9*SZREG(a0) REG_S s9, 10*SZREG(a0) REG_S s10,11*SZREG(a0) REG_S s11,12*SZREG(a0) REG_S sp, 13*SZREG(a0) #else REG_S sp, 3*SZREG(a0) #endif #ifndef __riscv_float_abi_soft FREG_S fs0, 14*SZREG+ 0*SZFREG(a0) FREG_S fs1, 14*SZREG+ 1*SZFREG(a0) FREG_S fs2, 14*SZREG+ 2*SZFREG(a0) FREG_S fs3, 14*SZREG+ 3*SZFREG(a0) FREG_S fs4, 14*SZREG+ 4*SZFREG(a0) FREG_S fs5, 14*SZREG+ 5*SZFREG(a0) FREG_S fs6, 14*SZREG+ 6*SZFREG(a0) FREG_S fs7, 14*SZREG+ 7*SZFREG(a0) FREG_S fs8, 14*SZREG+ 8*SZFREG(a0) FREG_S fs9, 14*SZREG+ 9*SZFREG(a0) FREG_S fs10,14*SZREG+10*SZFREG(a0) FREG_S fs11,14*SZREG+11*SZFREG(a0) #endif li a0, 0 ret .size setjmp, .-setjmp /* volatile void longjmp (jmp_buf, int); */ .section .text.longjmp .globl longjmp .type longjmp, @function longjmp: REG_L ra, 0*SZREG(a0) REG_L s0, 1*SZREG(a0) REG_L s1, 2*SZREG(a0) #ifndef __riscv_32e REG_L s2, 3*SZREG(a0) REG_L s3, 4*SZREG(a0) REG_L s4, 5*SZREG(a0) REG_L s5, 6*SZREG(a0) REG_L s6, 7*SZREG(a0) REG_L s7, 8*SZREG(a0) REG_L s8, 9*SZREG(a0) REG_L s9, 10*SZREG(a0) REG_L s10,11*SZREG(a0) REG_L s11,12*SZREG(a0) REG_L sp, 13*SZREG(a0) #else REG_L sp, 3*SZREG(a0) #endif #ifndef __riscv_float_abi_soft FREG_L fs0, 14*SZREG+ 0*SZFREG(a0) FREG_L fs1, 14*SZREG+ 1*SZFREG(a0) FREG_L fs2, 14*SZREG+ 2*SZFREG(a0) FREG_L fs3, 14*SZREG+ 3*SZFREG(a0) FREG_L fs4, 14*SZREG+ 4*SZFREG(a0) FREG_L fs5, 14*SZREG+ 5*SZFREG(a0) FREG_L fs6, 14*SZREG+ 6*SZFREG(a0) FREG_L fs7, 14*SZREG+ 7*SZFREG(a0) FREG_L fs8, 14*SZREG+ 8*SZFREG(a0) FREG_L fs9, 14*SZREG+ 9*SZFREG(a0) FREG_L fs10,14*SZREG+10*SZFREG(a0) FREG_L fs11,14*SZREG+11*SZFREG(a0) #endif seqz a0, a1 add a0, a0, a1 # a0 = (a1 == 0) ? 1 : a1 ret .size longjmp, .-longjmp picolibc-1.7.4/newlib/libc/machine/riscv/strcmp.S000066400000000000000000000071171414576234500217070ustar00rootroot00000000000000/* Copyright (c) 2017 SiFive Inc. All rights reserved. This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the FreeBSD License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. A copy of this license is available at http://www.opensource.org/licenses. */ #include .section .text.strcmp .globl strcmp .type strcmp, @function strcmp: #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) 1: lbu a2, 0(a0) lbu a3, 0(a1) add a0, a0, 1 add a1, a1, 1 bne a2, a3, 2f bnez a2, 1b 2: sub a0, a2, a3 ret .size strcmp, .-strcmp #else or a4, a0, a1 li t2, -1 and a4, a4, SZREG-1 bnez a4, .Lmisaligned #if SZREG == 4 li a5, 0x7f7f7f7f #else ld a5, mask #endif .macro check_one_word i n REG_L a2, \i*SZREG(a0) REG_L a3, \i*SZREG(a1) and t0, a2, a5 or t1, a2, a5 add t0, t0, a5 or t0, t0, t1 bne t0, t2, .Lnull\i .if \i+1-\n bne a2, a3, .Lmismatch .else add a0, a0, \n*SZREG add a1, a1, \n*SZREG beq a2, a3, .Lloop # fall through to .Lmismatch .endif .endm .macro foundnull i n .ifne \i .Lnull\i: add a0, a0, \i*SZREG add a1, a1, \i*SZREG .ifeq \i-1 .Lnull0: .endif bne a2, a3, .Lmisaligned li a0, 0 ret .endif .endm .Lloop: # examine full words at a time, favoring strings of a couple dozen chars #if __riscv_xlen == 32 check_one_word 0 5 check_one_word 1 5 check_one_word 2 5 check_one_word 3 5 check_one_word 4 5 #else check_one_word 0 3 check_one_word 1 3 check_one_word 2 3 #endif # backwards branch to .Lloop contained above .Lmismatch: # words don't match, but a2 has no null byte. #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ #if __riscv_xlen == 64 sll a4, a2, 48 sll a5, a3, 48 bne a4, a5, .Lmismatch_upper sll a4, a2, 32 sll a5, a3, 32 bne a4, a5, .Lmismatch_upper #endif sll a4, a2, 16 sll a5, a3, 16 bne a4, a5, .Lmismatch_upper srl a4, a2, 8*SZREG-16 srl a5, a3, 8*SZREG-16 sub a0, a4, a5 and a1, a0, 0xff bnez a1, 1f ret .Lmismatch_upper: srl a4, a4, 8*SZREG-16 srl a5, a5, 8*SZREG-16 sub a0, a4, a5 and a1, a0, 0xff bnez a1, 1f ret 1:and a4, a4, 0xff and a5, a5, 0xff sub a0, a4, a5 ret #else #if __riscv_xlen == 64 srl a4, a2, 48 srl a5, a3, 48 bne a4, a5, .Lmismatch_lower srl a4, a2, 32 srl a5, a3, 32 bne a4, a5, .Lmismatch_lower #endif srl a4, a2, 16 srl a5, a3, 16 bne a4, a5, .Lmismatch_lower srl a4, a2, 8 srl a5, a3, 8 bne a4, a5, 1f and a4, a2, 0xff and a5, a3, 0xff 1:sub a0, a4, a5 ret .Lmismatch_lower: srl a2, a4, 8 srl a3, a5, 8 bne a2, a3, 1f and a2, a4, 0xff and a3, a5, 0xff 1:sub a0, a2, a3 ret #endif .Lmisaligned: # misaligned lbu a2, 0(a0) lbu a3, 0(a1) add a0, a0, 1 add a1, a1, 1 bne a2, a3, 1f bnez a2, .Lmisaligned 1: sub a0, a2, a3 ret # cases in which a null byte was detected #if __riscv_xlen == 32 foundnull 0 5 foundnull 1 5 foundnull 2 5 foundnull 3 5 foundnull 4 5 #else foundnull 0 3 foundnull 1 3 foundnull 2 3 #endif .size strcmp, .-strcmp #if SZREG == 8 .section .srodata.cst8,"aM",@progbits,8 .align 3 mask: .dword 0x7f7f7f7f7f7f7f7f #endif #endif picolibc-1.7.4/newlib/libc/machine/riscv/strcpy.c000066400000000000000000000032761414576234500217450ustar00rootroot00000000000000/* Copyright (c) 2017 SiFive Inc. All rights reserved. This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the FreeBSD License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. A copy of this license is available at http://www.opensource.org/licenses. */ #include #include #undef strcpy char *strcpy(char *dst, const char *src) { char *dst0 = dst; #if !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) int misaligned = ((uintptr_t)dst | (uintptr_t)src) & (sizeof (long) - 1); if (__builtin_expect(!misaligned, 1)) { long *ldst = (long *)dst; const long *lsrc = (const long *)src; while (!__libc_detect_null(*lsrc)) *ldst++ = *lsrc++; dst = (char *)ldst; src = (const char *)lsrc; char c0 = src[0]; char c1 = src[1]; char c2 = src[2]; if (!(*dst++ = c0)) return dst0; if (!(*dst++ = c1)) return dst0; char c3 = src[3]; if (!(*dst++ = c2)) return dst0; if (sizeof (long) == 4) goto out; char c4 = src[4]; if (!(*dst++ = c3)) return dst0; char c5 = src[5]; if (!(*dst++ = c4)) return dst0; char c6 = src[6]; if (!(*dst++ = c5)) return dst0; if (!(*dst++ = c6)) return dst0; out: *dst++ = 0; return dst0; } #endif /* not PREFER_SIZE_OVER_SPEED */ char ch; do { ch = *src; src++; dst++; *(dst - 1) = ch; } while (ch); return dst0; } picolibc-1.7.4/newlib/libc/machine/riscv/strlen.c000066400000000000000000000032771414576234500217310ustar00rootroot00000000000000/* Copyright (c) 2017 SiFive Inc. All rights reserved. This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the FreeBSD License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. A copy of this license is available at http://www.opensource.org/licenses. */ #include #include size_t strlen(const char *str) { const char *start = str; #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) while (*str++) ; return str - start - 1; #else if (__builtin_expect ((uintptr_t)str & (sizeof (long) - 1), 0)) do { char ch = *str; str++; if (!ch) return str - start - 1; } while ((uintptr_t)str & (sizeof (long) - 1)); unsigned long *ls = (unsigned long *)str; while (!__libc_detect_null (*ls++)) ; __asm__ volatile ("" : "+r"(ls)); /* prevent "optimization" */ str = (const char *)ls; size_t ret = str - start, sl = sizeof (long); char c0 = str[0 - sl], c1 = str[1 - sl], c2 = str[2 - sl], c3 = str[3 - sl]; if (c0 == 0) return ret + 0 - sl; if (c1 == 0) return ret + 1 - sl; if (c2 == 0) return ret + 2 - sl; if (sl == 4 || c3 == 0) return ret + 3 - sl; c0 = str[4 - sl], c1 = str[5 - sl], c2 = str[6 - sl], c3 = str[7 - sl]; if (c0 == 0) return ret + 4 - sl; if (c1 == 0) return ret + 5 - sl; if (c2 == 0) return ret + 6 - sl; return ret + 7 - sl; #endif /* not PREFER_SIZE_OVER_SPEED */ } picolibc-1.7.4/newlib/libc/machine/riscv/sys/000077500000000000000000000000001414576234500210635ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/riscv/sys/asm.h000066400000000000000000000025361414576234500220220ustar00rootroot00000000000000/* Copyright (c) 2017 SiFive Inc. All rights reserved. This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the FreeBSD License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. A copy of this license is available at http://www.opensource.org/licenses. */ #ifndef _SYS_ASM_H #define _SYS_ASM_H /* * Macros to handle different pointer/register sizes for 32/64-bit code */ #if __riscv_xlen == 64 # define PTRLOG 3 # define SZREG 8 # define REG_S sd # define REG_L ld #elif __riscv_xlen == 32 # define PTRLOG 2 # define SZREG 4 # define REG_S sw # define REG_L lw #else # error __riscv_xlen must equal 32 or 64 #endif #ifndef __riscv_float_abi_soft /* For ABI uniformity, reserve 8 bytes for floats, even if double-precision floating-point is not supported in hardware. */ # define SZFREG 8 # ifdef __riscv_float_abi_single # define FREG_L flw # define FREG_S fsw # elif defined(__riscv_float_abi_double) # define FREG_L fld # define FREG_S fsd # elif defined(__riscv_float_abi_quad) # define FREG_L flq # define FREG_S fsq # else # error unsupported FLEN # endif #endif #endif /* sys/asm.h */ picolibc-1.7.4/newlib/libc/machine/riscv/sys/fenv.h000066400000000000000000000052121414576234500221720ustar00rootroot00000000000000/* Copyright (c) 2017 SiFive Inc. All rights reserved. This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the FreeBSD License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. A copy of this license is available at http://www.opensource.org/licenses. */ #ifndef _SYS_FENV_H #define _SYS_FENV_H #include #ifdef __riscv_flen /* Per "The RISC-V Instruction Set Manual: Volume I: User-Level ISA: * Version 2.1", Section 8.2, "Floating-Point Control and Status * Register": * * Flag Mnemonic Flag Meaning * ------------- ----------------- * NV Invalid Operation * DZ Divide by Zero * OF Overflow * UF Underflow * NX Inexact */ #define FE_INVALID 0x00000010 #define FE_DIVBYZERO 0x00000008 #define FE_OVERFLOW 0x00000004 #define FE_UNDERFLOW 0x00000002 #define FE_INEXACT 0x00000001 #define FE_ALL_EXCEPT (FE_INVALID|FE_DIVBYZERO|FE_OVERFLOW|FE_UNDERFLOW|FE_INEXACT) /* Per "The RISC-V Instruction Set Manual: Volume I: User-Level ISA: * Version 2.1", Section 8.2, "Floating-Point Control and Status * Register": * * Rounding Mode Mnemonic Meaning Meaning * ------------- ---------------- ------- * 000 RNE Round to Nearest, ties to Even * 001 RTZ Round towards Zero * 010 RDN Round Down (towards −∞) * 011 RUP Round Up (towards +∞) * 100 RMM Round to Nearest, ties to Max Magnitude * 101 Invalid. Reserved for future use. * 110 Invalid. Reserved for future use. * 111 In instruction’s rm field, selects dynamic rounding mode; * In Rounding Mode register, Invalid */ #define FE_TONEAREST_MM 0x00000004 #define FE_UPWARD 0x00000003 #define FE_DOWNWARD 0x00000002 #define FE_TOWARDZERO 0x00000001 #define FE_TONEAREST 0x00000000 #define FE_RMODE_MASK 0x7 #endif /* Per "The RISC-V Instruction Set Manual: Volume I: User-Level ISA: * Version 2.1": * * "The F extension adds 32 floating-point registers, f0–f31, each 32 * bits wide, and a floating-point control and status register fcsr, * which contains the operating mode and exception status of the * floating-point unit." */ typedef size_t fenv_t; typedef size_t fexcept_t; #endif /* _SYS_FENV_H */ picolibc-1.7.4/newlib/libc/machine/riscv/sys/meson.build000066400000000000000000000032301414576234500232230ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # inc_sys_headers_machine = [ 'fenv.h' ] install_headers(inc_sys_headers_machine, subdir:'sys' ) picolibc-1.7.4/newlib/libc/machine/riscv/sys/string.h000066400000000000000000000014271414576234500225460ustar00rootroot00000000000000/* Copyright (c) 2017 SiFive Inc. All rights reserved. This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the FreeBSD License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. A copy of this license is available at http://www.opensource.org/licenses. */ #ifndef _SYS_STRING_H #define _SYS_STRING_H static __inline unsigned long __libc_detect_null(unsigned long w) { unsigned long mask = 0x7f7f7f7f; if (sizeof (long) == 8) mask = ((mask << 16) << 16) | mask; return ~(((w & mask) + mask) | w | mask); } #endif picolibc-1.7.4/newlib/libc/machine/rl78/000077500000000000000000000000001414576234500177135ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/rl78/setjmp.S000066400000000000000000000070551414576234500213500ustar00rootroot00000000000000/* Copyright (c) 2011 Red Hat Incorporated. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of Red Hat Incorporated may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifdef __RL78_G10__ ; clobberable r8 = 0xffec8 r9 = 0xffec9 r10 = 0xffeca r11 = 0xffecb r12 = 0xffecc r13 = 0xffecd r14 = 0xffece r15 = 0xffecf ; preserved r16 = 0xffed0 r17 = 0xffed1 r18 = 0xffed2 r19 = 0xffed3 r20 = 0xffed4 r21 = 0xffed5 r22 = 0xffed6 r23 = 0xffed7 #else ; clobberable r8 = 0xffef0 r9 = 0xffef1 r10 = 0xffef2 r11 = 0xffef3 r12 = 0xffef4 r13 = 0xffef5 r14 = 0xffef6 r15 = 0xffef7 ; preserved r16 = 0xffee8 r17 = 0xffee9 r18 = 0xffeea r19 = 0xffeeb r20 = 0xffeec r21 = 0xffeed r22 = 0xffeee r23 = 0xffeef #endif /* The jump buffer has the following structure: R0 .. R23 3*8 bytes SP 2 bytes ES 1 byte CS 1 byte PC 4 bytes */ .macro _saveb ofs,reg mov a,\reg mov [hl+\ofs],a .endm .macro _save ofs,reg movw ax,\reg movw [hl+\ofs],ax .endm .global _setjmp .type _setjmp, @function _setjmp: ;; R8 = setjmp (jmp_buf *[sp+4].w) ;; must return zero !! push ax push hl push ax movw ax, [sp+10] movw hl, ax pop ax movw [hl], ax _save 2, bc _save 4, de pop ax movw [hl+6], ax _save 8, r8 _save 10, r10 _save 12, r12 _save 14, r14 _save 16, r16 _save 18, r18 _save 20, r20 _save 22, r22 ;; The sp we have now includes one more pushed reg, plus $PC movw ax, sp addw ax, #6 movw [hl+24], ax _saveb 26, es _saveb 27, cs _save 28, [sp+2] _save 30, [sp+4] clrw ax movw r8, ax pop ax ret .size _setjmp, . - _setjmp .macro _loadb ofs,reg mov a,[hl+\ofs] mov \reg,a .endm .macro _load ofs,reg movw ax,[hl+\ofs] movw \reg,ax .endm .macro _push ofs movw ax,[hl+\ofs] push ax .endm .global _longjmp .type _longjmp, @function _longjmp: ;; noreturn longjmp (jmp_buf *[sp+4].w, int [sp+6].w) movw ax, [sp+6] cmpw ax,#0 sknz onew ax movw r8, ax movw ax, [sp+4] movw hl, ax movw ax, [hl+24] movw sp, ax ; this is the *new* stack _push 30 ; high half of PC _push 28 ; low half of PC _push 6 ; HL _push 0 ; AX _load 2, bc _load 4, de _load 10, r10 _load 12, r12 _load 14, r14 _load 16, r16 _load 18, r18 _load 20, r20 _load 22, r22 _loadb 26, es _loadb 27, cs pop ax pop hl ret ; pops PC (4 bytes) .size _longjmp, . - _longjmp picolibc-1.7.4/newlib/libc/machine/rx/000077500000000000000000000000001414576234500175505ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/rx/memchr.S000066400000000000000000000016441414576234500211540ustar00rootroot00000000000000/* Copyright (c) 2009 Nick Clifton */ .file "memchr.S" .section .text .global _memchr .type _memchr,@function _memchr: ;; R1: string pointer ;; R2: byte sought ;; R3: max number to scan #ifdef __RX_DISALLOW_STRING_INSNS__ mov.b r2, r2 ; The mov.b below sign extends as it loads, so make sure that r2 is sign-extended as well. 2: cmp #0, r3 beq 1f sub #1, r3 mov.b [r1+], r5 cmp r5, r2 bne 2b sub #1, r1 ; We have found a match, bit now R1 points to the byte after the match. 1: rts #else cmp #0, r3 ; If r3 is 0 suntil.b will do nothing and not set any flags... stz #1, r1 ; ...so store 1 into r1. It will be decremented by the SUB later. suntil.b ; Search until *r1 == r2 or r3 bytes have been examined. stnz #1, r1 ; If no match was found return NULL. sub #1, r1 ; suntil.b leaves r1 pointing at the address *after* the match. rts #endif .size _memchr, . - _memchr picolibc-1.7.4/newlib/libc/machine/rx/memcpy.S000066400000000000000000000013731414576234500211720ustar00rootroot00000000000000/* Copyright (c) 2009 Nick Clifton */ .file "memcpy.S" .section .text .global _memcpy .type _memcpy,@function _memcpy: #ifdef __RX_DISALLOW_STRING_INSNS__ /* Do not use the string instructions - they might prefetch bytes from outside of valid memory. This is particularly dangerous in I/O space. */ ;; FIXME: It would be more space efficient to just branch to _memmove... cmp #0, r3 ; If the count is zero, do nothing beq 1f mov r1, r14 ; Save a copy of DEST 2: mov.b [r2+], r5 mov.b r5, [r14+] sub #1, r3 bne 2b 1: rts #else mov r1, r4 ; Save a copy of DEST smovf ; Copy R2 (source) to R1 (dest). Stop after R3 bytes. mov r4, r1 ; Return DEST rts #endif .size _memcpy, . - _memcpy picolibc-1.7.4/newlib/libc/machine/rx/memmove.S000066400000000000000000000022601414576234500213410ustar00rootroot00000000000000/* Copyright (c) 2009 Nick Clifton */ .file "memmove.S" .section .text .global _memmove .type _memmove,@function _memmove: ;; R1: DEST ;; R2: SRC ;; R3: COUNT #ifdef __RX_DISALLOW_STRING_INSNS__ /* Do not use the string instructions - they might prefetch bytes from outside of valid memory. This is particularly dangerous in I/O space. */ cmp #0, r3 ; If the count is zero, do nothing beq 4f cmp r1, r2 blt 3f ; If SRC < DEST copy backwards mov r1, r14 ; Save a copy of DEST 5: mov.b [r2+], r5 mov.b r5, [r14+] sub #1, r3 bne 5b 4: rts 3: add r3, r1 add r3, r2 6: mov.b [-r2], r5 mov.b r5, [-r1] sub #1, r3 bne 6b rts #else mov r1, r4 ; Save a copy of DEST cmp r1, r2 blt 2f ; If SRC (r2) is less than DEST (r1) then copy backwards smovf 1: mov r4, r1 ; Return DEST rts 2: add r3, r1 ; The SMOVB instructions requires the DEST in r1 and the add r3, r2 ; SRC in r2 but it needs them to point the last bytes of sub #1, r2 ; the regions involved not the first bytes, hence these sub #1, r1 ; additions and subtractions. smovb bra 1b #endif /* SMOVF allowed. */ .size _memmove, . - _memmove picolibc-1.7.4/newlib/libc/machine/rx/mempcpy.S000066400000000000000000000010231414576234500213420ustar00rootroot00000000000000/* Copyright (c) 2009 Nick Clifton */ .file "mempcpy.S" .section .text .global _mempcpy .type _mempcpy,@function _mempcpy: #ifdef __RX_DISALLOW_STRING_INSNS__ /* Do not use the string instructions - they might prefetch bytes from outside of valid memory. This is particularly dangerous in I/O space. */ cmp #0, r3 ; If the count is zero, do nothing beq 2f 1: mov.b [r2+], r5 mov.b r5, [r1+] sub #1, r3 bne 1b 2: rts #else smovf rts #endif .size _mempcpy, . - _mempcpy picolibc-1.7.4/newlib/libc/machine/rx/memset.S000066400000000000000000000003261414576234500211670ustar00rootroot00000000000000/* Copyright (c) 2009 Nick Clifton */ .file "memset.S" .section .text .global _memset .type _memset,@function _memset: mov r1, r4 sstr.b mov r4, r1 rts .size _memset, . - _memset picolibc-1.7.4/newlib/libc/machine/rx/setjmp.S000066400000000000000000000037131414576234500212020ustar00rootroot00000000000000/* Copyright (c) 2009 Nick Clifton */ # setjmp/longjmp for Renesas RX. # # The jmpbuf looks like this: # # Register jmpbuf offset # R0 0x0 # R1 0x4 # R2 0x8 # R3 0xc # R4 0x10 # R5 0x14 # R6 0x18 # R7 0x1c # R8 0x20 # R9 0x24 # R10 0x28 # R11 0x2c # R12 0x30 # R13 0x34 # R14 0x38 # R15 0x3c # PC 0x40 # # R1 contains the pointer to jmpbuf: # # int R1 = setjmp (jmp_buf R1) # void longjmp (jmp_buf R1, int R2) # # The ABI allows for R1-R5 to be clobbered by functions. We must be # careful to always leave the stack in a usable state in case an # interrupt happens. .text .global _setjmp .type _setjmp, @function _setjmp: mov.l r0, [r1] ; save all the general registers mov.l r1, 0x4[r1] ; longjmp won't use this, but someone else might. mov.l r2, 0x8[r1] mov.l r3, 0xc[r1] mov.l r4, 0x10[r1] mov.l r5, 0x14[r1] mov.l r6, 0x18[r1] mov.l r7, 0x1c[r1] mov.l r8, 0x20[r1] mov.l r9, 0x24[r1] mov.l r10, 0x28[r1] mov.l r11, 0x2c[r1] mov.l r12, 0x30[r1] mov.l r13, 0x34[r1] mov.l r14, 0x38[r1] mov.l r15, 0x3c[r1] mov.l [r0], r2 ; get return address off the stack mov.l r2, 0x40[r1] ; PC mov #0, r1 ; Return 0. rts .Lend1: .size _setjmp, .Lend1 - _setjmp .global _longjmp .type _longjmp, @function _longjmp: tst r2, r2 ; Set the Z flag if r2 is 0. stz #1, r2 ; If the Z flag was set put 1 into the return register. mov r2, 4[r1] ; Put r2 (our return value) into the setjmp buffer as r1. mov.l [r1], r0 ; Restore the stack - there's a slot for PC mov.l 0x40[r1], r2 ; Get the saved PC mov.l r2, [r0] ; Overwrite the old return address mov.l 0x3c[r1], r15 mov.l 0x38[r1], r14 mov.l 0x34[r1], r13 mov.l 0x30[r1], r12 mov.l 0x2c[r1], r11 mov.l 0x28[r1], r10 mov.l 0x24[r1], r9 mov.l 0x20[r1], r8 mov.l 0x1c[r1], r7 mov.l 0x18[r1], r6 mov.l 0x14[r1], r5 mov.l 0x10[r1], r4 mov.l 0xc[r1], r3 mov.l 0x8[r1], r2 mov.l 0x4[r1], r1 ; This sets up the new return value rts .Lend2: .size _longjmp, .Lend2 - _longjmp picolibc-1.7.4/newlib/libc/machine/rx/strcat.S000066400000000000000000000021241414576234500211730ustar00rootroot00000000000000/* Copyright (c) 2009 Nick Clifton */ .file "strcat.S" .section .text .global _strcat .type _strcat,@function _strcat: ;; On entry: r1 => Destination ;; r2 => Source #ifdef __RX_DISALLOW_STRING_INSNS__ mov r1, r4 ; Save a copy of the dest pointer. 1: mov.b [r4+], r5 ; Find the NUL byte at the end of R4. cmp #0, r5 bne 1b sub #1, r4 ; Move R4 back to point at the NUL byte. 2: mov.b [r2+], r5 ; Copy bytes from R2 to R4 until we reach a NUL byte. mov.b r5, [r4+] cmp #0, r5 bne 2b rts #else mov r1, r4 ; Save a copy of the dest pointer. mov r2, r5 ; Save a copy of the source pointer. mov #0, r2 ; Search for the NUL byte. mov #-1, r3 ; Limit on the number of bytes examined. suntil.b ; Find the end of the destination string. sub #1, r1 ; suntil.b leaves r1 pointing to the byte beyond the match. mov #-1, r3 ; Set a limit on the number of bytes copied. mov r5, r2 ; Restore the source pointer. smovu ; Copy source to destination mov r4, r1 ; Return the original dest pointer. rts #endif .size _strcat, . - _strcat picolibc-1.7.4/newlib/libc/machine/rx/strcmp.S000066400000000000000000000013331414576234500212040ustar00rootroot00000000000000/* Copyright (c) 2009 Nick Clifton */ .file "strcmp.S" .section .text .global _strcmp .type _strcmp,@function _strcmp: #ifdef __RX_DISALLOW_STRING_INSNS__ 2: mov.b [r1+], r4 mov.b [r2+], r5 cmp #0, r4 beq 3f cmp #0, r5 beq 3f cmp r4, r5 beq 2b 3: and #0xff, r4 ; We need to perform an unsigned comparison of the bytes. and #0xff, r5 sub r5, r4, r1 rts #else mov #-1, r3 ; Strictly speaking this is incorrect, but I doubt if anyone will ever know. scmpu ; Perform the string comparison bnc 1f ; If Carry is not set skip over scne.L r1 ; Set result based on Z flag rts ; 1: ; mov #-1,r1 ; Carry not set, result should be negative rts ; #endif .size _strcmp, . - _strcmp picolibc-1.7.4/newlib/libc/machine/rx/strcpy.S000066400000000000000000000010101414576234500212100ustar00rootroot00000000000000/* Copyright (c) 2009 Nick Clifton */ .file "strcpy.S" .section .text .global _strcpy .type _strcpy,@function _strcpy: ;; R1: dest ;; R2: source #ifdef __RX_DISALLOW_STRING_INSNS__ mov r1, r4 ; Leave the destination address unchanged in the result register. 1: mov.b [r2+], r5 mov.b r5, [r4+] cmp #0, r5 bne 1b rts #else mov r1, r4 mov #-1, r3 ; Strictly speaking this is incorrect, but I doubt if anyone will ever know. smovu mov r4, r1 rts #endif .size _strcpy, . - _strcpy picolibc-1.7.4/newlib/libc/machine/rx/strlen.S000066400000000000000000000013261414576234500212050ustar00rootroot00000000000000/* Copyright (c) 2009 Nick Clifton */ .file "strlen.S" .section .text .global _strlen .type _strlen,@function _strlen: #ifdef __RX_DISALLOW_STRING_INSNS__ mov r1, r4 1: mov.b [r1+], r5 cmp #0, r5 bne 1b sub #1, r1 sub r4, r1 rts #else add #0, r1, r4 ; Save a copy of the string start address and set the condition flags. beq null_string ; Test for a NULL pointer. mov #-1, r3 ; Set a limit on the number of bytes examined. mov #0, r2 ; Stop searching when we find a NUL byte. suntil.b ; Search until *r1 == r2 sub #1, r1 ; suntil.b leaves r1 pointing to the byte beyond the match. null_string: sub r4, r1 ; Compute the length. rts #endif .size _strlen, . - _strlen picolibc-1.7.4/newlib/libc/machine/rx/strncat.S000066400000000000000000000035711414576234500213600ustar00rootroot00000000000000/* Copyright (c) 2009 Nick Clifton */ .file "strncat.S" .section .text .global _strncat .type _strncat,@function _strncat: ;; On entry: r1 => Destination ;; r2 => Source ;; r3 => Max number of bytes to copy #ifdef __RX_DISALLOW_STRING_INSNS__ cmp #0, r3 ; If max is zero we have nothing to do. beq 2f mov r1, r4 ; Leave the desintation pointer intact for the return value. 1: mov.b [r4+], r5 ; Find the NUL byte at the end of the destination. cmp #0, r5 bne 1b sub #1, r4 3: mov.b [r2+], r5 ; Copy bytes from the source into the destination ... mov.b r5, [r4+] cmp #0, r5 ; ... until we reach a NUL byte ... beq 2f sub #1, r3 bne 3b ; ... or we have copied N bytes. 2: rts #else mov r1, r4 ; Save a copy of the dest pointer. mov r2, r5 ; Save a copy of the source pointer. mov r3, r14 ; Save a copy of the byte count. mov #0, r2 ; Search for the NUL byte. mov #-1, r3 ; Search until we run out of memory. suntil.b ; Find the end of the destination string. sub #1, r1 ; suntil.b leaves r1 pointing to the byte beyond the NUL. mov r14, r3 ; Restore the limit on the number of bytes copied. mov r5, r2 ; Restore the source pointer. mov r1, r5 ; Save a copy of the dest pointer. smovu ; Copy source to destination. add #0, r14, r3 ; Restore the number of bytes to copy (again), but this time set the Z flag as well. beq 1f ; If we copied 0 bytes then we already know that the dest string is NUL terminated, so we do not have to do anything. mov #0, r2 ; Otherwise we must check to see if a NUL byte mov r5, r1 ; was included in the bytes that were copied. suntil.b beq 1f ; Z flag is set if a match was found. add r14, r5 ; Point at byte after end of copied bytes. mov.b #0, [r5] ; Store a NUL there. 1: mov r4, r1 ; Return the original dest pointer. rts #endif .size _strncat, . - _strncat picolibc-1.7.4/newlib/libc/machine/rx/strncmp.S000066400000000000000000000014531414576234500213650ustar00rootroot00000000000000/* Copyright (c) 2009 Nick Clifton */ .file "strncmp.S" .section .text .global _strncmp .type _strncmp,@function _strncmp: ;; R1: string1 ;; R2: string2 ;; R3: max number of bytes to compare #ifdef __RX_DISALLOW_STRING_INSNS__ cmp #0, r3 ; For a length of zero, return zero beq 4f 2: mov.b [r1+], r4 mov.b [r2+], r5 cmp #0, r4 beq 3f cmp #0, r5 beq 3f sub #1, r3 beq 3f cmp r4, r5 beq 2b 3: and #0xff, r4 ; We need to perform an unsigned comparison of the bytes. and #0xff, r5 sub r5, r4, r1 rts 4: mov #0, r1 rts #else scmpu ; Perform the string comparison bnc 1f ; If Carry is not set skip over scne.L r1 ; Set result based on Z flag rts ; 1: ; mov #-1,r1 ; Carry not set, result should be negative rts ; #endif .size _strncmp, . - _strncmp picolibc-1.7.4/newlib/libc/machine/rx/strncpy.S000066400000000000000000000020461414576234500214000ustar00rootroot00000000000000/* Copyright (c) 2009 Nick Clifton */ .file "strncpy.S" .section .text .global _strncpy .type _strncpy,@function _strncpy: #ifdef __RX_DISALLOW_STRING_INSNS__ cmp #0, r3 beq 3f mov r1, r4 ; Preserve R1 for the return value. 2: mov.b [r2+], r5 ; Copy bytes until... mov.b r5, [r4+] sub #1, r3 beq 3f ; ... our count reaches zero cmp #0, r5 bne 2b ; ... or we have written a NUL byte 4: mov.b r5, [r4+] ; Continue to write further NUL bytes sub #1, r3 bne 4b ; until the count reaches zero. 3: rts #else mov r1, r4 ; Save a copy of the dest pointer. mov r3, r5 ; Save a copy of the byte count smovu ; Copy the bytes cmp #0, r3 ; If we have copied the number of bytes requested beq 1f ; then skip the next bit: add r4, r5, r1 ; Point to the last byte that we are supposed to write. sub r3, r1 ; Subtract the number of bytes left to be written. mov #0, r2 ; Fill the remaining bytes with NULs, sstr.b 1: mov r4, r1 ; Return the destination pointer rts #endif .size _strncpy, . - _strncpy picolibc-1.7.4/newlib/libc/machine/sh/000077500000000000000000000000001414576234500175315ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/sh/asm.h000066400000000000000000000033451414576234500204670ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #ifdef __STDC__ # define _C_LABEL(x) _ ## x #else # define _C_LABEL(x) _/**/x #endif #define _ASM_LABEL(x) x #if __SH5__ # if __SH5__ == 32 && __SHMEDIA__ # define TEXT .section .text..SHmedia32, "ax" # else # define TEXT .text # endif # define _ENTRY(name) \ TEXT; .balign 8; .globl name; name: #else #define _ENTRY(name) \ .text; .align 2; .globl name; name: #endif /* __SH5__ */ #define ENTRY(name) \ _ENTRY(_C_LABEL(name)) #if (defined (__sh2__) || defined (__SH2E__) || defined (__sh3__) || defined (__SH3E__) \ || defined (__SH4_SINGLE__) || defined (__SH4__)) \ || defined (__SH4_SINGLE_ONLY__) || defined (__SH5__) || defined (__SH2A__) #define DELAYED_BRANCHES #define SL(branch, dest, in_slot, in_slot_arg2) \ branch##.s dest; in_slot, in_slot_arg2 #else #define SL(branch, dest, in_slot, in_slot_arg2) \ in_slot, in_slot_arg2; branch dest #endif #ifdef __LITTLE_ENDIAN__ #define SHHI shlld #define SHLO shlrd #else #define SHHI shlrd #define SHLO shlld #endif picolibc-1.7.4/newlib/libc/machine/sh/memcpy.S000066400000000000000000000170621414576234500211550ustar00rootroot00000000000000! ! Fast SH memcpy ! ! by Toshiyasu Morita (tm@netcom.com) ! hacked by J"orn Rernnecke (joern.rennecke@superh.com) ("o for o-umlaut) /* SH5 code Copyright 2002 SuperH Ltd. */ ! ! Entry: ARG0: destination pointer ! ARG1: source pointer ! ARG3: byte count ! ! Exit: RESULT: destination pointer ! any other registers in the range r0-r7: trashed ! ! Notes: Usually one wants to do small reads and write a longword, but ! unfortunately it is difficult in some cases to concatanate bytes ! into a longword on the SH, so this does a longword read and small ! writes. ! ! This implementation makes two assumptions about how it is called: ! ! 1.: If the byte count is nonzero, the address of the last byte to be ! copied is unsigned greater than the address of the first byte to ! be copied. This could be easily swapped for a signed comparison, ! but the algorithm used needs some comparison. ! ! 2.: When there are two or three bytes in the last word of an 11-or-more ! bytes memory chunk to b copied, the rest of the word can be read ! without side effects. ! This could be easily changed by increasing the minumum size of ! a fast memcpy and the amount subtracted from r7 before L_2l_loop be 2, ! however, this would cost a few extra cyles on average. ! For SHmedia, the assumption is that any quadword can be read in its ! enirety if at least one byte is included in the copy. ! #include "asm.h" ENTRY(memcpy) #if __SHMEDIA__ #define LDUAQ(P,O,D0,D1) ldlo.q P,O,D0; ldhi.q P,O+7,D1 #define STUAQ(P,O,D0,D1) stlo.q P,O,D0; sthi.q P,O+7,D1 #define LDUAL(P,O,D0,D1) ldlo.l P,O,D0; ldhi.l P,O+3,D1 #define STUAL(P,O,D0,D1) stlo.l P,O,D0; sthi.l P,O+3,D1 ld.b r3,0,r63 pta/l Large,tr0 movi 25,r0 bgeu/u r4,r0,tr0 nsb r4,r0 shlli r0,5,r0 movi (L1-L0+63*32 + 1) & 0xffff,r1 sub r1, r0, r0 L0: ptrel r0,tr0 add r2,r4,r5 ptabs r18,tr1 add r3,r4,r6 blink tr0,r63 .balign 8 L1: /* 0 byte memcpy */ blink tr1,r63 L4_7: /* 4..7 byte memcpy cntd. */ stlo.l r2, 0, r0 or r6, r7, r6 sthi.l r5, -1, r6 stlo.l r5, -4, r6 blink tr1,r63 L2_3: /* 2 or 3 byte memcpy cntd. */ st.b r5,-1,r6 blink tr1,r63 /* 1 byte memcpy */ ld.b r3,0,r0 st.b r2,0,r0 blink tr1,r63 L8_15: /* 8..15 byte memcpy cntd. */ stlo.q r2, 0, r0 or r6, r7, r6 sthi.q r5, -1, r6 stlo.q r5, -8, r6 blink tr1,r63 /* 2 or 3 byte memcpy */ ld.b r3,0,r0 ld.b r2,0,r63 ld.b r3,1,r1 st.b r2,0,r0 pta/l L2_3,tr0 ld.b r6,-1,r6 st.b r2,1,r1 blink tr0, r63 /* 4 .. 7 byte memcpy */ LDUAL (r3, 0, r0, r1) pta L4_7, tr0 ldlo.l r6, -4, r7 or r0, r1, r0 sthi.l r2, 3, r0 ldhi.l r6, -1, r6 blink tr0, r63 /* 8 .. 15 byte memcpy */ LDUAQ (r3, 0, r0, r1) pta L8_15, tr0 ldlo.q r6, -8, r7 or r0, r1, r0 sthi.q r2, 7, r0 ldhi.q r6, -1, r6 blink tr0, r63 /* 16 .. 24 byte memcpy */ LDUAQ (r3, 0, r0, r1) LDUAQ (r3, 8, r8, r9) or r0, r1, r0 sthi.q r2, 7, r0 or r8, r9, r8 sthi.q r2, 15, r8 ldlo.q r6, -8, r7 ldhi.q r6, -1, r6 stlo.q r2, 8, r8 stlo.q r2, 0, r0 or r6, r7, r6 sthi.q r5, -1, r6 stlo.q r5, -8, r6 blink tr1,r63 Large: ld.b r2, 0, r63 pta/l Loop_ua, tr1 ori r3, -8, r7 sub r2, r7, r22 sub r3, r2, r6 add r2, r4, r5 ldlo.q r3, 0, r0 addi r5, -16, r5 movi 64+8, r27 // could subtract r7 from that. stlo.q r2, 0, r0 sthi.q r2, 7, r0 ldx.q r22, r6, r0 bgtu/l r27, r4, tr1 addi r5, -48, r27 pta/l Loop_line, tr0 addi r6, 64, r36 addi r6, -24, r19 addi r6, -16, r20 addi r6, -8, r21 Loop_line: ldx.q r22, r36, r63 alloco r22, 32 addi r22, 32, r22 ldx.q r22, r19, r23 sthi.q r22, -25, r0 ldx.q r22, r20, r24 ldx.q r22, r21, r25 stlo.q r22, -32, r0 ldx.q r22, r6, r0 sthi.q r22, -17, r23 sthi.q r22, -9, r24 sthi.q r22, -1, r25 stlo.q r22, -24, r23 stlo.q r22, -16, r24 stlo.q r22, -8, r25 bgeu r27, r22, tr0 Loop_ua: addi r22, 8, r22 sthi.q r22, -1, r0 stlo.q r22, -8, r0 ldx.q r22, r6, r0 bgtu/l r5, r22, tr1 add r3, r4, r7 ldlo.q r7, -8, r1 sthi.q r22, 7, r0 ldhi.q r7, -1, r7 ptabs r18,tr1 stlo.q r22, 0, r0 or r1, r7, r1 sthi.q r5, 15, r1 stlo.q r5, 8, r1 blink tr1, r63 #else /* ! SHMEDIA, i.e. SH1 .. SH4 / SHcompact */ #ifdef __SH5__ #define DST r2 #define SRC r3 #define COUNT r4 #define TMP0 r5 #define TMP1 r6 #define RESULT r2 #else #define DST r4 #define SRC r5 #define COUNT r6 #define TMP0 r2 #define TMP1 r3 #define RESULT r0 #endif #ifdef __LITTLE_ENDIAN__ ! Little endian version copies with increasing addresses. mov DST,TMP1 ! Save return value mov #11,r0 ! Check if small number of bytes cmp/hs r0,COUNT ! COUNT becomes src end address SL(bf, L_small, add SRC,COUNT) mov #1,r1 tst r1,SRC ! check if source even SL(bt, L_even, mov COUNT,r7) mov.b @SRC+,r0 ! no, make it even. mov.b r0,@DST add #1,DST L_even: tst r1,DST ! check if destination is even add #-3,r7 SL(bf, L_odddst, mov #2,r1) tst r1,DST ! check if destination is 4-byte aligned mov DST,r0 SL(bt, L_al4dst, sub SRC,r0) mov.w @SRC+,TMP0 mov.w TMP0,@DST ! add #2,DST DST is dead here. L_al4dst: tst r1,SRC bt L_al4both mov.w @SRC+,r1 swap.w r1,r1 add #-6,r0 add #-6,r7 ! r7 := src end address minus 9. .align 2 L_2l_loop: mov.l @SRC+,TMP0 ! Read & write two longwords per iteration xtrct TMP0,r1 mov.l r1,@(r0,SRC) cmp/hs r7,SRC mov.l @SRC+,r1 xtrct r1,TMP0 mov.l TMP0,@(r0,SRC) bf L_2l_loop add #-2,SRC bra L_cleanup add #5,r0 L_al4both: add #-4,r0 .align 2 L_al4both_loop: mov.l @SRC+,DST ! Read longword, write longword per iteration cmp/hs r7,SRC SL(bf, L_al4both_loop, mov.l DST,@(r0,SRC)) bra L_cleanup add #3,r0 L_odddst: tst r1,SRC SL(bt, L_al4src, add #-1,DST) mov.w @SRC+,r0 mov.b r0,@(1,DST) shlr8 r0 mov.b r0,@(2,DST) add #2,DST L_al4src: .align 2 L_odd_loop: mov.l @SRC+,r0 ! Read longword, write byte, word, byte per iteration cmp/hs r7,SRC mov.b r0,@(1,DST) shlr8 r0 mov.w r0,@(2,DST) shlr16 r0 mov.b r0,@(4,DST) SL(bf, L_odd_loop, add #4,DST) .align 2 ! avoid nop in more frequently executed code. L_cleanup2: mov DST,r0 sub SRC,r0 L_cleanup: cmp/eq COUNT,SRC bt L_ready .align 2 L_cleanup_loop: mov.b @SRC+,r1 cmp/eq COUNT,SRC mov.b r1,@(r0,SRC) bf L_cleanup_loop L_ready: rts mov TMP1,RESULT L_small: bra L_cleanup2 add #-1,DST #else /* ! __LITTLE_ENDIAN__ */ ! Big endian version copies with decreasing addresses. mov DST,r0 add COUNT,r0 sub DST,SRC mov #11,r1 cmp/hs r1,COUNT SL(bf, L_small, add #-1,SRC) mov SRC,TMP1 add r0,TMP1 shlr TMP1 SL(bt, L_even, mov DST,r7) mov.b @(r0,SRC),TMP0 add #-1,TMP1 mov.b TMP0,@-r0 L_even: tst #1,r0 add #-1,SRC SL(bf, L_odddst, add #8,r7) tst #2,r0 bt L_al4dst add #-1,TMP1 mov.w @(r0,SRC),r1 mov.w r1,@-r0 L_al4dst: shlr TMP1 bt L_al4both mov.w @(r0,SRC),r1 swap.w r1,r1 add #4,r7 add #-4,SRC .align 2 L_2l_loop: mov.l @(r0,SRC),TMP0 xtrct TMP0,r1 mov.l r1,@-r0 cmp/hs r7,r0 mov.l @(r0,SRC),r1 xtrct r1,TMP0 mov.l TMP0,@-r0 bt L_2l_loop bra L_cleanup add #5,SRC nop ! avoid nop in executed code. L_al4both: add #-2,SRC .align 2 L_al4both_loop: mov.l @(r0,SRC),r1 cmp/hs r7,r0 SL(bt, L_al4both_loop, mov.l r1,@-r0) bra L_cleanup add #3,SRC nop ! avoid nop in executed code. L_odddst: shlr TMP1 bt L_al4src mov.w @(r0,SRC),r1 mov.b r1,@-r0 shlr8 r1 mov.b r1,@-r0 L_al4src: add #-2,SRC .align 2 L_odd_loop: mov.l @(r0,SRC),TMP0 cmp/hs r7,r0 mov.b TMP0,@-r0 shlr8 TMP0 mov.w TMP0,@-r0 shlr16 TMP0 mov.b TMP0,@-r0 bt L_odd_loop add #3,SRC L_cleanup: L_small: cmp/eq DST,r0 bt L_ready add #1,DST .align 2 L_cleanup_loop: mov.b @(r0,SRC),TMP0 cmp/eq DST,r0 mov.b TMP0,@-r0 bf L_cleanup_loop L_ready: rts mov r0,RESULT #endif /* ! __LITTLE_ENDIAN__ */ #endif /* ! SHMEDIA */ picolibc-1.7.4/newlib/libc/machine/sh/memset.S000066400000000000000000000061731414576234500211560ustar00rootroot00000000000000! ! Fast SH memset ! ! by Toshiyasu Morita (tm@netcom.com) ! ! SH5 code by J"orn Rennecke (joern.rennecke@superh.com) /* Copyright 2002 SuperH Ltd. */ ! #include "asm.h" ENTRY(memset) #if __SHMEDIA__ pta/l multiquad, tr0 ptabs r18, tr2 andi r2, -8, r25 add r2, r4, r5 addi r5, -1, r20 // calculate end address. andi r20, -8, r20 cmveq r4, r25, r20 bne/u r25, r20, tr0 // multiquad ! This sequence could clobber volatile objects that are in the same ! quadword as a very short char array. ! ldlo.q r2, 0, r7 ! shlli r4, 2, r4 ! movi -1, r8 ! SHHI r8, r4, r8 ! SHHI r8, r4, r8 ! mcmv r7, r8, r3 ! stlo.q r2, 0, r3 pta/l setlongs, tr0 movi 4, r8 bgeu/u r4, r8, tr0 pta/l endset, tr0 beqi/u r4, 0, tr0 st.b r2, 0, r3 beqi/u r4, 1, tr0 nop st.b r2, 1, r3 beqi/l r4, 2, tr0 st.b r2,2,r3 endset: blink tr2, r63 setlongs: mshflo.b r3, r3, r3 mperm.w r3, r63, r3 // Fill pattern now in every byte of r3 stlo.l r2, 0, r3 nop nop sthi.l r5, -1, r3 blink tr2, r63 multiquad: mshflo.b r3, r3, r3 mperm.w r3, r63, r3 // Fill pattern now in every byte of r3 pta/l lastquad, tr0 stlo.q r2, 0, r3 sub r20, r25, r24 movi 64, r9 beqi/u r24, 8, tr0 // lastquad pta/l loop, tr1 addi r20, -7*8, r8 // loop end address; This might overflow, so we need // to use a different test before we start the loop bgeu/u r24, r9, tr1// loop st.q r25, 8, r3 shlri r24, 4, r24 st.q r20, -8, r3 beqi/u r24, 1, tr0 // lastquad st.q r25, 16, r3 st.q r20, -16, r3 beqi/u r24, 2, tr0 // lastquad st.q r25, 24, r3 st.q r20, -24, r3 lastquad: sthi.q r5, -1, r3 blink tr2,r63 loop: alloco r25, 32 st.q r25, 8, r3 st.q r25, 16, r3 st.q r25, 24, r3 st.q r25, 32, r3 addi r25, 32, r25 bgeu/l r8, r25, tr1 // loop st.q r20, -40, r3 st.q r20, -32, r3 st.q r20, -24, r3 st.q r20, -16, r3 st.q r20, -8, r3 sthi.q r5, -1, r3 blink tr2,r63 #else /* ! SHMEDIA, i.e. SH1 .. SH4 / SHcompact */ ! Entry: r4: destination pointer ! r5: fill value ! r6: byte count ! ! Exit: r0-r3: trashed ! ! This assumes that the first four bytes of the address space (0..3) are ! reserved - usually by the linker script. Otherwise, we would had to check ! for the case of objects of the size 12..15 at address 0..3 . #ifdef __SH5__ #define DST r2 #define VAL r3 #define CNT r4 #define TMP r5 #else #define DST r4 #define VAL r5 #define CNT r6 #define TMP r2 #endif mov #12,r0 ! Check for small number of bytes cmp/gt CNT,r0 mov DST,r0 SL(bt, L_store_byte_loop_check0, add DST,CNT) tst #3,r0 ! Align destination SL(bt, L_dup_bytes, extu.b r5,r5) .balignw 4,0x0009 L_align_loop: mov.b VAL,@r0 add #1,r0 tst #3,r0 bf L_align_loop L_dup_bytes: swap.b VAL,TMP ! Duplicate bytes across longword or TMP,VAL swap.w VAL,TMP or TMP,VAL add #-16,CNT .balignw 4,0x0009 L_store_long_loop: mov.l VAL,@r0 ! Store double longs to memory cmp/hs CNT,r0 mov.l VAL,@(4,r0) SL(bf, L_store_long_loop, add #8,r0) add #16,CNT L_store_byte_loop_check0: cmp/eq CNT,r0 bt L_exit .balignw 4,0x0009 L_store_byte_loop: mov.b VAL,@r0 ! Store bytes to memory add #1,r0 cmp/eq CNT,r0 bf L_store_byte_loop L_exit: rts mov r4,r0 #endif /* ! SHMEDIA */ picolibc-1.7.4/newlib/libc/machine/sh/setjmp.S000066400000000000000000000105531414576234500211630ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* We want to pretend we're in SHmedia mode, even when assembling for SHcompact. */ #if __SH5__ == 32 && ! __SHMEDIA__ # undef __SHMEDIA__ # define __SHMEDIA__ 1 #endif #if __SHMEDIA__ .mode SHmedia #endif #include "asm.h" ENTRY(setjmp) #if __SH5__ ptabs r18, tr0 gettr tr5, r5 gettr tr6, r6 gettr tr7, r7 st.q r2, 0*8, r18 st.q r2, 1*8, r10 st.q r2, 2*8, r11 st.q r2, 3*8, r12 st.q r2, 4*8, r13 st.q r2, 5*8, r14 st.q r2, 6*8, r15 st.q r2, 7*8, r28 st.q r2, 8*8, r29 st.q r2, 9*8, r30 st.q r2, 10*8, r31 st.q r2, 11*8, r32 st.q r2, 12*8, r33 st.q r2, 13*8, r34 st.q r2, 14*8, r35 st.q r2, 15*8, r44 st.q r2, 16*8, r45 st.q r2, 17*8, r46 st.q r2, 18*8, r47 st.q r2, 19*8, r48 st.q r2, 20*8, r49 st.q r2, 21*8, r50 st.q r2, 22*8, r51 st.q r2, 23*8, r52 st.q r2, 24*8, r53 st.q r2, 25*8, r54 st.q r2, 26*8, r55 st.q r2, 27*8, r56 st.q r2, 28*8, r57 st.q r2, 29*8, r58 st.q r2, 30*8, r59 st.q r2, 31*8, r5 st.q r2, 32*8, r6 st.q r2, 33*8, r7 #if ! __SH4_NOFPU__ fst.d r2, 34*8, dr12 fst.d r2, 35*8, dr14 fst.d r2, 36*8, dr36 fst.d r2, 37*8, dr38 fst.d r2, 38*8, dr40 fst.d r2, 39*8, dr42 fst.d r2, 40*8, dr44 fst.d r2, 41*8, dr46 fst.d r2, 42*8, dr48 fst.d r2, 43*8, dr50 fst.d r2, 44*8, dr52 fst.d r2, 45*8, dr54 fst.d r2, 46*8, dr56 fst.d r2, 47*8, dr58 fst.d r2, 48*8, dr60 fst.d r2, 49*8, dr62 #endif movi 0, r2 blink tr0, r63 #else #if defined (__SH2E__) || defined (__SH3E__) || defined(__SH4_SINGLE__) || defined(__SH4__) || defined(__SH4_SINGLE_ONLY__) add #(13*4),r4 #else add #(9*4),r4 #endif sts.l pr,@-r4 #if defined (__SH2E__) || defined (__SH3E__) || defined(__SH4_SINGLE__) || defined(__SH4__) || defined(__SH4_SINGLE_ONLY__) fmov.s fr15,@-r4 ! call saved floating point registers fmov.s fr14,@-r4 fmov.s fr13,@-r4 fmov.s fr12,@-r4 #endif mov.l r15,@-r4 ! call saved integer registers mov.l r14,@-r4 mov.l r13,@-r4 mov.l r12,@-r4 mov.l r11,@-r4 mov.l r10,@-r4 mov.l r9,@-r4 mov.l r8,@-r4 rts mov #0,r0 #endif /* __SH5__ */ ENTRY(longjmp) #if __SH5__ ld.q r2, 0*8, r18 ptabs r18, tr0 ld.q r2, 1*8, r10 ld.q r2, 2*8, r11 ld.q r2, 3*8, r12 ld.q r2, 4*8, r13 ld.q r2, 5*8, r14 ld.q r2, 6*8, r15 ld.q r2, 7*8, r28 ld.q r2, 8*8, r29 ld.q r2, 9*8, r30 ld.q r2, 10*8, r31 ld.q r2, 11*8, r32 ld.q r2, 12*8, r33 ld.q r2, 13*8, r34 ld.q r2, 14*8, r35 ld.q r2, 15*8, r44 ld.q r2, 16*8, r45 ld.q r2, 17*8, r46 ld.q r2, 18*8, r47 ld.q r2, 19*8, r48 ld.q r2, 20*8, r49 ld.q r2, 21*8, r50 ld.q r2, 22*8, r51 ld.q r2, 23*8, r52 ld.q r2, 24*8, r53 ld.q r2, 25*8, r54 ld.q r2, 26*8, r55 ld.q r2, 27*8, r56 ld.q r2, 28*8, r57 ld.q r2, 29*8, r58 ld.q r2, 30*8, r59 ld.q r2, 31*8, r5 ld.q r2, 32*8, r6 ld.q r2, 33*8, r7 ptabs r5, tr5 ptabs r6, tr6 ptabs r7, tr7 #if ! __SH4_NOFPU__ fld.d r2, 34*8, dr12 fld.d r2, 35*8, dr14 fld.d r2, 36*8, dr36 fld.d r2, 37*8, dr38 fld.d r2, 38*8, dr40 fld.d r2, 39*8, dr42 fld.d r2, 40*8, dr44 fld.d r2, 41*8, dr46 fld.d r2, 42*8, dr48 fld.d r2, 43*8, dr50 fld.d r2, 44*8, dr52 fld.d r2, 45*8, dr54 fld.d r2, 46*8, dr56 fld.d r2, 47*8, dr58 fld.d r2, 48*8, dr60 fld.d r2, 49*8, dr62 #endif movi 1, r2 cmvne r3, r3, r2 blink tr0, r63 #else mov.l @r4+,r8 mov.l @r4+,r9 mov.l @r4+,r10 mov.l @r4+,r11 mov.l @r4+,r12 mov.l @r4+,r13 mov.l @r4+,r14 mov.l @r4+,r15 #if defined (__SH2E__) || defined (__SH3E__) || defined(__SH4_SINGLE__) || defined(__SH4__) || defined(__SH4_SINGLE_ONLY__) fmov.s @r4+,fr12 ! call saved floating point registers fmov.s @r4+,fr13 fmov.s @r4+,fr14 fmov.s @r4+,fr15 #endif lds.l @r4+,pr mov r5,r0 tst r0,r0 bf retr4 movt r0 retr4: rts nop #endif /* __SH5__ */ picolibc-1.7.4/newlib/libc/machine/sh/strcmp.S000066400000000000000000000100001414576234500211540ustar00rootroot00000000000000/* SH5 code Copyright 2002 SuperH Ltd. */ #include "asm.h" ENTRY(strcmp) #if __SHMEDIA__ ld.ub r2,0,r4 pt/l quickret0,tr0 ld.ub r3,0,r5 ptabs r18,tr2 beqi/u r4,0,tr0 ld.ub r2,1,r6 bne/u r4,r5,tr0 pt/l quickret1,tr1 ld.ub r3,1,r7 beqi/u r6,0,tr1 ld.ub r2,2,r4 bne/u r6,r7,tr1 ld.ub r3,2,r5 beqi/u r4,0,tr0 ld.ub r2,3,r6 bne/u r4,r5,tr0 ld.ub r3,3,r7 beqi/u r6,0,tr1 ld.ub r2,4,r4 bne/u r6,r7,tr1 ld.ub r3,4,r5 beqi/u r4,0,tr0 ld.ub r2,5,r6 bne/u r4,r5,tr0 ld.ub r3,5,r7 beqi/u r6,0,tr1 ld.ub r2,6,r4 bne/u r6,r7,tr1 ld.ub r3,6,r5 beqi/u r4,0,tr0 ld.ub r2,7,r6 bne/u r4,r5,tr0 ld.ub r3,7,r7 beqi/u r6,0,tr1 sub r3,r2,r3 bne/u r6,r7,tr1 andi r2,-8,r2 add r3,r2,r3 ldlo.q r3,8,r23 pt r23_zero,tr0 shlli r3,3,r22 sub r63,r22,r20 movi 0x101,r6 mperm.w r6,r63,r6 SHLO r6,r22,r7 msubs.ub r7,r23,r8 pt loop,tr1 bnei/u r8,0,tr0 // r23_zero pt found_zero,tr0 addi r3,15,r3 andi r3,-8,r3 sub r3,r2,r3 bne/l r7,r6,tr1 // loop /* The strings are aligned to each other. */ /* It is possible to have a loop with six cycles / iteration by re-ordering the exit conditions, but then it needs extra time and/or code to sort out the r4 != r5 case. */ pt al_loop,tr1 pt al_found_zero,tr0 al_loop: ld.q r2,8,r4 ldx.q r2,r3,r5 addi r2,8,r2 mcmpeq.b r63,r4,r8 pt cmp_quad,tr3 bnei/u r8,0,tr0 // al_found_zero beq/l r4,r5,tr1 // al_loop blink tr3,r63 // cmp_quad .balign 8 quickret0: sub r4,r5,r2 blink tr2,r63 quickret1: sub r6,r7,r2 blink tr2,r63 loop: ld.q r2,8,r4 ldx.q r2,r3,r19 addi r2,8,r2 msubs.ub r6,r4,r8 mcmpeq.b r63,r19,r9 SHHI r19,r20,r21 or r21,r23,r5 SHLO r19,r22,r23 bne/u r8,r9,tr0 // found_zero beq/l r4,r5,tr1 // loop cmp_quad: #ifdef __LITTLE_ENDIAN__ byterev r4,r4 byterev r5,r5 #endif cmpgtu r4,r5,r6 cmpgtu r5,r4,r7 sub r6,r7,r2 blink tr2,r63 found_zero: pt zero_now,tr0 pt cmp_quad,tr1 SHHI r9,r20,r7 bne/u r8,r7,tr0 // zero_now bne/u r4,r5,tr1 // cmp_quad SHLO r9,r22,r8 r23_zero: ld.q r2,8,r4 add r23,r63,r5 zero_now: al_found_zero: /* We konw that one of the values has at lest one zero, and r8 holds an 0x01 or 0xff mask for every zero found in one of the operands. If both operands have the first zero in the same place, this mask allows us to truncate the comparison to the valid bytes in the strings. If the first zero is in different places, it doesn't matter if some invalid bytes are included, since the comparison of the zero with the non-zero will determine the outcome. */ #ifdef __LITTLE_ENDIAN__ shlli r8,8,r8 addi r8,-1,r9 andc r9,r8,r8 and r8,r4,r4 and r8,r5,r5 #else shlri r8,1,r8 nsb r8,r8 addi r8,8,r8 andi r8,56,r8 sub r63,r8,r8 shlrd r4,r8,r4 shlrd r5,r8,r5 #endif #ifdef __LITTLE_ENDIAN__ byterev r4,r4 byterev r5,r5 #endif cmpgtu r4,r5,r6 cmpgtu r5,r4,r7 sub r6,r7,r2 blink tr2,r63 #else /* ! __SHMEDIA__, i.e. SH 1..4 / SHcompact */ #ifdef __SH5__ #define STR1 r2 #define STR2 r3 #define RESULT r2 #define TMP r4 #else ! Entry: r4: string1 ! r5: string2 ! Exit: r0: result ! r1-r2,r4-r5: clobbered #define STR1 r4 #define STR2 r5 #define RESULT r0 #define TMP r2 #endif /* __SH5__ */ mov STR1,r0 or STR2,r0 tst #3,r0 bf L_setup_char_loop mov #0,r0 #ifdef DELAYED_BRANCHES mov.l @STR1+,r1 .align 2 Longword_loop: mov.l @STR2+,TMP cmp/str r0,r1 bt Longword_loop_end cmp/eq r1,TMP bt.s Longword_loop mov.l @STR1+,r1 add #-4, STR1 Longword_loop_end: add #-4, STR1 add #-4, STR2 L_setup_char_loop: mov.b @STR1+,r0 .align 2 L_char_loop: mov.b @STR2+,r1 tst r0,r0 bt L_return cmp/eq r0,r1 bt.s L_char_loop mov.b @STR1+,r0 add #-2,STR1 mov.b @STR1,r0 #else /* ! DELAYED_BRANCHES */ .align 2 Longword_loop: mov.l @r4+,r1 mov.l @r5+,r2 cmp/str r0,r1 bt Longword_loop_end cmp/eq r1,r2 bt Longword_loop Longword_loop_end: add #-4, r4 add #-4, r5 .align 2 L_setup_char_loop: L_char_loop: mov.b @r4+,r0 mov.b @r5+,r1 tst r0,r0 bt L_return cmp/eq r0,r1 bt L_char_loop #endif L_return: extu.b r0,RESULT extu.b r1,r1 rts sub r1,RESULT #endif /* ! __SHMEDIA__ */ picolibc-1.7.4/newlib/libc/machine/sh/strcpy.S000066400000000000000000000047401414576234500212060ustar00rootroot00000000000000! Entry: arg0: destination ! arg1: source ! Exit: result: destination ! /* SH5 code Copyright 2002 SuperH Ltd. */ #include "asm.h" ENTRY(strcpy) #if __SHMEDIA__ pta/l shortstring,tr1 ldlo.q r3,0,r4 ptabs r18,tr4 shlli r3,3,r7 addi r2, 8, r0 mcmpeq.b r4,r63,r6 SHHI r6,r7,r6 bnei/u r6,0,tr1 // shortstring pta/l no_lddst, tr2 ori r3,-8,r23 sub r2, r23, r0 sub r3, r2, r21 addi r21, 8, r20 ldx.q r0, r21, r5 pta/l loop, tr0 ori r2,-8,r22 mcmpeq.b r5, r63, r6 bgt/u r22, r23, tr2 // no_lddst // r22 < r23 : Need to do a load from the destination. // r22 == r23 : Doesn't actually need to load from destination, // but still can be handled here. ldlo.q r2, 0, r9 movi -1, r8 SHLO r8, r7, r8 mcmv r4, r8, r9 stlo.q r2, 0, r9 beqi/l r6, 0, tr0 // loop add r5, r63, r4 addi r0, 8, r0 blink tr1, r63 // shortstring no_lddst: // r22 > r23: note that for r22 == r23 the sthi.q would clobber // bytes before the destination region. stlo.q r2, 0, r4 SHHI r4, r7, r4 sthi.q r0, -1, r4 beqi/l r6, 0, tr0 // loop add r5, r63, r4 addi r0, 8, r0 shortstring: #ifndef __LITTLE_ENDIAN__ pta/l shortstring2,tr1 byterev r4,r4 #endif shortstring2: st.b r0,-8,r4 andi r4,0xff,r5 shlri r4,8,r4 addi r0,1,r0 bnei/l r5,0,tr1 blink tr4,r63 // return .balign 8 loop: stlo.q r0, 0, r5 ldx.q r0, r20, r4 addi r0, 16, r0 sthi.q r0, -9, r5 mcmpeq.b r4, r63, r6 bnei/u r6, 0, tr1 // shortstring ldx.q r0, r21, r5 stlo.q r0, -8, r4 sthi.q r0, -1, r4 mcmpeq.b r5, r63, r6 beqi/l r6, 0, tr0 // loop add r5, r63, r4 addi r0, 8, r0 blink tr1, r63 // shortstring #else /* ! __SHMEDIA__, i.e. SH 1..4 / SHcompact */ #ifdef __SH5__ #define DST r2 #define SRC r3 #define TMP r4 #define RESULT R2 ! r0,r1,r3,r4: clobbered #else #define DST r4 #define SRC r5 #define TMP r2 #define RESULT r0 ! r1-r2,r5: clobbered #endif mov DST,r0 or SRC,r0 tst #3,r0 SL(bf, L_setup_char_loop, mov DST,r0) mov.l @SRC+,r1 mov #0,TMP cmp/str TMP,r1 SL(bt, Longword_loop_end, sub SRC,r0) .align 2 Longword_loop: mov.l r1,@(r0,SRC) mov.l @SRC+,r1 cmp/str TMP,r1 bt Longword_loop_end mov.l r1,@(r0,SRC) mov.l @SRC+,r1 cmp/str TMP,r1 bf Longword_loop Longword_loop_end: add #-4,SRC add #3,r0 .align 2 L_char_loop: mov.b @SRC+,r1 L_char_loop_start: tst r1,r1 SL(bf, L_char_loop, mov.b r1,@(r0,SRC)) rts mov DST,RESULT L_setup_char_loop: mov.b @SRC+,r1 bra L_char_loop_start sub SRC,r0 #endif /* ! __SHMEDIA__ */ picolibc-1.7.4/newlib/libc/machine/sh/strlen.S000066400000000000000000000025361414576234500211720ustar00rootroot00000000000000! Entry: arg0: string start address ! Exit: result: length ! /* Copyright 2002 SuperH Ltd. */ #include "asm.h" ENTRY(strlen) #if __SHMEDIA__ ldlo.q r2,0,r3 ptabs/l r18,tr0 pta/l loop,tr1 andi r2,-8,r0 shlli r2,3,r1 mcmpeq.b r3,r63,r3 SHHI r3,r1,r4 beqi/u r4,0,tr1 // loop #ifdef __LITTLE_ENDIAN__ movi -1,r2 addi r3,-1,r4 msad.ubq r3,r4,r2 #else shlri r3,1,r3 nsb r3,r3 shlri r3,3,r2 #endif blink tr0,r63 loop: ldlo.q r0,8,r3 addi r0,8,r0 ldlo.q r0,8,r63 mcmpeq.b r3,r63,r3 beqi/l r3,0,tr1 // loop sub r0,r2,r2 #ifdef __LITTLE_ENDIAN__ addi r3,-1,r4 addi r2,-1,r2 msad.ubq r3,r4,r2 #else shlri r3,1,r3 nsb r3,r3 shlri r3,3,r3 add r2,r3,r2 #endif blink tr0,r63 #else /* ! __SHMEDIA__, i.e. SH 1..4 / SHcompact */ #ifdef __SH5__ #define STR_INIT r2 #define STR_ORIG r0 #define STR_COPY STR_ORIG #define MASK r1 #define TMP r3 #define RESULT r2 ! r0,r1,r3: clobbered #else #define STR_INIT r4 #define STR_ORIG STR_INIT #define STR_COPY STR #define MASK r1 #define TMP r3 #define RESULT r0 ! r1,r3: clobbered #endif #define STR RESULT mov #3,MASK and STR_INIT,MASK tst MASK,MASK SL(bf, L_char_loop, mov STR_INIT, STR_COPY) L_word_loop: mov.l @STR+,TMP cmp/str MASK,TMP bf L_word_loop add #-4,STR L_char_loop: mov.b @STR+,TMP tst TMP,TMP bf L_char_loop add #-1,STR rts sub STR_ORIG,STR #endif /* ! __SHMEDIA__ */ picolibc-1.7.4/newlib/libc/machine/sh/strncpy.S000066400000000000000000000115211414576234500213570ustar00rootroot00000000000000/* Copyright 2003 SuperH Ltd. */ #include "asm.h" #ifdef __SH5__ #if __SHMEDIA__ #ifdef __LITTLE_ENDIAN__ #define ZPAD_MASK(src, dst) addi src, -1, dst #else #define ZPAD_MASK(src, dst) \ byterev src, dst; addi dst, -1, dst; byterev dst, dst #endif /* We assume that the destination is not in the first 16 bytes of memory. A typical linker script will put the text section first, and as this code is longer that 16 bytes, you have to get out of your way to put data there. */ ENTRY(strncpy) pt L_small, tr2 ldlo.q r3, 0, r0 shlli r3, 3, r19 mcmpeq.b r0, r63, r1 SHHI r1, r19, r7 add r2, r4, r20 addi r20, -8, r5 /* If the size is greater than 8, we know we can read beyond the first (possibly partial) quadword, and write out a full first and last (possibly unaligned and/or overlapping) quadword. */ bge/u r2, r5, tr2 // L_small pt L_found0, tr0 addi r2, 8, r22 bnei/u r7, 0, tr0 // L_found0 ori r3, -8, r38 pt L_end_early, tr1 sub r2, r38, r22 stlo.q r2, 0, r0 sthi.q r2, 7, r0 sub r3, r2, r6 ldx.q r22, r6, r0 /* Before each iteration, check that we can store in full the next quad we are about to fetch. */ addi r5, -8, r36 bgtu/u r22, r36, tr1 // L_end_early pt L_scan0, tr1 L_scan0: addi r22, 8, r22 mcmpeq.b r0, r63, r1 stlo.q r22, -8, r0 bnei/u r1, 0, tr0 // L_found0 sthi.q r22, -1, r0 ldx.q r22, r6, r0 bgeu/l r36, r22, tr1 // L_scan0 L_end: // At end; we might re-read a few bytes when we fetch the last quad. // branch mispredict, so load is ready now. mcmpeq.b r0, r63, r1 addi r22, 8, r22 bnei/u r1, 0, tr0 // L_found0 add r3, r4, r7 ldlo.q r7, -8, r1 ldhi.q r7, -1, r7 ptabs r18, tr0 stlo.q r22, -8, r0 or r1, r7, r1 mcmpeq.b r1, r63, r7 sthi.q r22, -1, r0 ZPAD_MASK (r7, r7) and r1, r7, r1 // mask out non-zero bytes after first zero byte stlo.q r20, -8, r1 sthi.q r20, -1, r1 blink tr0, r63 L_end_early: /* Check if we can store the current quad in full. */ pt L_end, tr1 add r3, r4, r7 bgtu/u r5, r22, tr1 // L_end // Not really unlikely, but gap is short. /* If not, that means we can just proceed to process the last quad. Two pipeline stalls are unavoidable, as we don't have enough ILP. */ ldlo.q r7, -8, r1 ldhi.q r7, -1, r7 ptabs r18, tr0 or r1, r7, r1 mcmpeq.b r1, r63, r7 ZPAD_MASK (r7, r7) and r1, r7, r1 // mask out non-zero bytes after first zero byte stlo.q r20, -8, r1 sthi.q r20, -1, r1 blink tr0, r63 L_found0: // r0: string to store, not yet zero-padding normalized. // r1: result of mcmpeq.b r0, r63, r1. // r22: store address plus 8. I.e. address where zero padding beyond the // string in r0 goes. // r20: store end address. // r5: store end address minus 8. pt L_write0_multiquad, tr0 ZPAD_MASK (r1, r1) and r0, r1, r0 // mask out non-zero bytes after first zero byte stlo.q r22, -8, r0 sthi.q r22, -1, r0 andi r22, -8, r1 // Check if zeros to write fit in one quad word. bgtu/l r5, r1, tr0 // L_write0_multiquad ptabs r18, tr1 sub r20, r22, r1 shlli r1, 2, r1 // Do shift in two steps so that 64 bit case is SHLO r0, r1, r0 // handled correctly. SHLO r0, r1, r0 sthi.q r20, -1, r0 blink tr1, r63 L_write0_multiquad: pt L_write0_loop, tr0 ptabs r18, tr1 stlo.q r22, 0, r63 sthi.q r20, -1, r63 addi r1, 8, r1 bgeu/l r5, r1, tr0 // L_write0_loop blink tr1, r63 L_write0_loop: st.q r1, 0 ,r63 addi r1, 8, r1 bgeu/l r5, r1, tr0 // L_write0_loop blink tr1, r63 L_small: // r0: string to store, not yet zero-padding normalized. // r1: result of mcmpeq.b r0, r63, r1. // r7: nonzero indicates relevant zero found r0. // r2: store address. // r3: read address. // r4: size, max 8 // r20: store end address. // r5: store end address minus 8. pt L_nohi, tr0 pt L_small_storelong, tr1 ptabs r18, tr2 sub r63, r4, r23 bnei/u r7, 0, tr0 // L_nohi ori r3, -8, r7 bge/l r23, r7, tr0 // L_nohi ldhi.q r3, 7, r1 or r0, r1, r0 mcmpeq.b r0, r63, r1 L_nohi: ZPAD_MASK (r1, r1) and r0, r1, r0 movi 4, r19 bge/u r4, r19, tr1 // L_small_storelong pt L_small_end, tr0 #ifndef __LITTLE_ENDIAN__ byterev r0, r0 #endif beqi/u r4, 0, tr0 // L_small_end st.b r2, 0, r0 beqi/u r4, 1, tr0 // L_small_end shlri r0, 8, r0 st.b r2, 1, r0 beqi/u r4, 2, tr0 // L_small_end shlri r0, 8, r0 st.b r2, 2, r0 L_small_end: blink tr2, r63 L_small_storelong: shlli r23, 3, r7 SHHI r0, r7, r1 #ifdef __LITTLE_ENDIAN__ shlri r1, 32, r1 #else shlri r0, 32, r0 #endif stlo.l r2, 0, r0 sthi.l r2, 3, r0 stlo.l r20, -4, r1 sthi.l r20, -1, r1 blink tr2, r63 #else /* SHcompact */ /* This code is optimized for size. Instruction selection is SH5 specific. SH4 should use a different version. */ ENTRY(strncpy) mov #0, r6 cmp/eq r4, r6 bt return mov r2, r5 add #-1, r5 add r5, r4 loop: bt/s found0 add #1, r5 mov.b @r3+, r1 found0: cmp/eq r5,r4 mov.b r1, @r5 bf/s loop cmp/eq r1, r6 return: rts nop #endif /* SHcompact */ #endif /* __SH5__ */ picolibc-1.7.4/newlib/libc/machine/shared_x86/000077500000000000000000000000001414576234500210725ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/shared_x86/meson.build000066400000000000000000000030721414576234500232360ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2021 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # subdir('sys') picolibc-1.7.4/newlib/libc/machine/shared_x86/sys/000077500000000000000000000000001414576234500217105ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/shared_x86/sys/fenv.h000066400000000000000000000141201414576234500230150ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2010-2019 Red Hat, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifndef _SYS_FENV_H #define _SYS_FENV_H 1 #include #ifdef __cplusplus extern "C" { #endif /* Primary sources: The Open Group Base Specifications Issue 6: http://www.opengroup.org/onlinepubs/000095399/basedefs/fenv.h.html C99 Language spec (draft n1256): Intel(R) 64 and IA-32 Architectures Software Developer's Manuals: http://www.intel.com/products/processor/manuals/ GNU C library manual pages: http://www.gnu.org/software/libc/manual/html_node/Control-Functions.html http://www.gnu.org/software/libc/manual/html_node/Rounding.html http://www.gnu.org/software/libc/manual/html_node/FP-Exceptions.html http://www.gnu.org/software/libc/manual/html_node/Status-bit-operations.html Linux online man page(s): http://linux.die.net/man/3/fegetexcept The documentation quotes these sources for reference. All definitions and code have been developed solely based on the information from these specs. */ /* Represents the entire floating-point environment. The floating-point environment refers collectively to any floating-point status flags and control modes supported by the implementation. In this implementation, the struct contains the state information from the fstenv/fnstenv instructions and a copy of the SSE MXCSR, since GCC uses SSE for a lot of floating-point operations. (Cygwin assumes i686 or above these days, as does the compiler.) */ typedef struct _fenv_t { struct _fpu_env_info { unsigned int _fpu_cw; /* low 16 bits only. */ unsigned int _fpu_sw; /* low 16 bits only. */ unsigned int _fpu_tagw; /* low 16 bits only. */ unsigned int _fpu_ipoff; unsigned int _fpu_ipsel; unsigned int _fpu_opoff; unsigned int _fpu_opsel; /* low 16 bits only. */ } _fpu; unsigned int _sse_mxcsr; } fenv_t; /* Represents the floating-point status flags collectively, including any status the implementation associates with the flags. A floating-point status flag is a system variable whose value is set (but never cleared) when a floating-point exception is raised, which occurs as a side effect of exceptional floating-point arithmetic to provide auxiliary information. A floating-point control mode is a system variable whose value may be set by the user to affect the subsequent behavior of floating-point arithmetic. */ typedef __uint32_t fexcept_t; /* The header shall define the following constants if and only if the implementation supports the floating-point exception by means of the floating-point functions feclearexcept(), fegetexceptflag(), feraiseexcept(), fesetexceptflag(), and fetestexcept(). Each expands to an integer constant expression with values such that bitwise-inclusive ORs of all combinations of the constants result in distinct values. */ #define FE_DIVBYZERO (1 << 2) #define FE_INEXACT (1 << 5) #define FE_INVALID (1 << 0) #define FE_OVERFLOW (1 << 3) #define FE_UNDERFLOW (1 << 4) /* The header shall define the following constant, which is simply the bitwise-inclusive OR of all floating-point exception constants defined above: */ /* in agreement w/ Linux the subnormal exception will always be masked */ #define FE_ALL_EXCEPT \ (FE_INEXACT | FE_UNDERFLOW | FE_OVERFLOW | FE_DIVBYZERO | FE_INVALID) /* The header shall define the following constants if and only if the implementation supports getting and setting the represented rounding direction by means of the fegetround() and fesetround() functions. Each expands to an integer constant expression whose values are distinct non-negative vales. */ #define FE_DOWNWARD (1) #define FE_TONEAREST (0) #define FE_TOWARDZERO (3) #define FE_UPWARD (2) /* Only Solaris and QNX implement fegetprec/fesetprec. As Solaris, use the values defined by http://www.open-std.org/jtc1/sc22//WG14/www/docs/n752.htm QNX defines different values. */ #if __MISC_VISIBLE #define FE_FLTPREC (0) #define FE_DBLPREC (2) #define FE_LDBLPREC (3) #endif /* Additional implementation-defined environments, with macro definitions beginning with FE_ and an uppercase letter,and having type "pointer to const-qualified fenv_t",may also be specified by the implementation. */ #if __GNU_VISIBLE /* If possible, the GNU C Library defines a macro FE_NOMASK_ENV which represents an environment where every exception raised causes a trap to occur. You can test for this macro using #ifdef. It is only defined if _GNU_SOURCE is defined. */ extern const fenv_t *_fe_nomask_env; #define FE_NOMASK_ENV (_fe_nomask_env) #endif #ifdef __CYGWIN__ #if __MISC_VISIBLE int fegetprec (void); int fesetprec (int __prec); #endif #endif /* __CYGWIN__ */ #ifdef __cplusplus } #endif #endif /* _FENV_H */ picolibc-1.7.4/newlib/libc/machine/shared_x86/sys/meson.build000066400000000000000000000032311414576234500240510ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2021 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # inc_sys_headers_machine = [ 'fenv.h' ] install_headers(inc_sys_headers_machine, subdir:'sys' ) picolibc-1.7.4/newlib/libc/machine/sparc/000077500000000000000000000000001414576234500202275ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/sparc/machine/000077500000000000000000000000001414576234500216335ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/sparc/machine/sparclet.h000066400000000000000000000024671414576234500236320ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* Various stuff for the sparclet processor. This file is in the public domain. */ #ifndef _MACHINE_SPARCLET_H_ #define _MACHINE_SPARCLET_H_ #ifdef __sparclet__ /* sparclet scan instruction */ extern __inline__ int scan (int a, int b) { int res; __asm__ ("scan %1,%2,%0" : "=r" (res) : "r" (a), "r" (b)); return res; } /* sparclet shuffle instruction */ extern __inline__ int shuffle (int a, int b) { int res; __asm__ ("shuffle %1,%2,%0" : "=r" (res) : "r" (a), "r" (b)); return res; } #endif /* __sparclet__ */ #endif /* _MACHINE_SPARCLET_H_ */ picolibc-1.7.4/newlib/libc/machine/sparc/scan.c000066400000000000000000000017511414576234500213230ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* Cover function to sparclet `scan' instruction. This file is in the public domain. */ #ifdef __sparclet__ int scan (int a, int b) { int res; __asm__ ("scan %1,%2,%0" : "=r" (res) : "r" (a), "r" (b)); return res; } #endif picolibc-1.7.4/newlib/libc/machine/sparc/setjmp.S000066400000000000000000000117771414576234500216720ustar00rootroot00000000000000/* * Copyright (c) 1992, 1993 * The Regents of the University of California. All rights reserved. * * Modified for incorporation into newlib by Joel Sherrill * (joel@OARcorp.com), On-Line Applications Research, 1995. * Did the following: * + merged in DEFS.h * + removed error check since it prevented using this setjmp * to "context switch" * + added the support for the "user label" and "register" prefix * * This software was developed by the Computer Systems Engineering group * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and * contributed to Berkeley. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * from: $Header$ */ #if defined(LIBC_SCCS) && !defined(lint) .asciz "@(#)_setjmp.s 8.1 (Berkeley) 6/4/93" #endif /* LIBC_SCCS and not lint */ /* * Recent versions of GNU cpp define variables which indicate the * need for underscores and percents. If not using GNU cpp or * the version does not support this, then you will obviously * have to define these as appropriate. */ #ifndef __USER_LABEL_PREFIX__ #define __USER_LABEL_PREFIX__ _ #endif #ifndef __REGISTER_PREFIX__ #define __REGISTER_PREFIX__ #endif /* ANSI concatenation macros. */ #define CONCAT1(a, b) CONCAT2(a, b) #define CONCAT2(a, b) a ## b /* Use the right prefix for global labels. */ #define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x) /********************************************************************* ********************************************************************* * Contents of DEFS.h * ********************************************************************* *********************************************************************/ #ifdef PROF #define ENTRY(x) \ .align 4; .globl SYM(x); .proc 1; SYM(x):; .data; .align 4; 1: .long 0; \ .text; save %sp,-96,%sp; sethi %hi(1b),%o0; call mcount; \ or %lo(1b),%o0,%o0; restore #else #define ENTRY(x) \ .align 4; .globl SYM(x); .proc 1; SYM(x): #endif /********************************************************************* ********************************************************************* * END of DEFS.h * ********************************************************************* *********************************************************************/ /* * C library -- _setjmp, _longjmp * * _longjmp(a,v) * will generate a "return(v?v:1)" from * the last call to * _setjmp(a) * by unwinding the call stack. * The previous signal state is NOT restored. */ /* #include "DEFS.h" */ ENTRY(setjmp) ENTRY(_setjmp) st %sp, [%o0] /* caller's stack pointer */ st %i7, [%o0+4] /* caller's return pc */ st %fp, [%o0+8] /* store caller's frame pointer */ st %o7, [%o0+12] retl clr %o0 ! return 0 ENTRY(longjmp) ENTRY(_longjmp) ta 0x03 /* flush registers */ addcc %o1, %g0, %g1 ! compute v ? v : 1 in a global register be,a 0f mov 1, %g1 0: ld [%o0], %sp /* caller's stack pointer */ ldd [%sp], %l0 ldd [%sp+8], %l2 ldd [%sp+16], %l4 ldd [%sp+24], %l6 ldd [%sp+32], %i0 ldd [%sp+40], %i2 ldd [%sp+48], %i4 ld [%o0+4], %i7 /* caller's return pc */ ld [%o0+8], %fp /* caller's frame pointer */ ld [%o0+12], %o7 jmp %o7 + 8 ! success, return %g1 mov %g1, %o0 picolibc-1.7.4/newlib/libc/machine/sparc/shuffle.c000066400000000000000000000017621414576234500220350ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* Cover function to sparclet `shuffle' instruction. This file is in the public domain. */ #ifdef __sparclet__ int shuffle (int a, int b) { int res; __asm__ ("shuffle %1,%2,%0" : "=r" (res) : "r" (a), "r" (b)); return res; } #endif picolibc-1.7.4/newlib/libc/machine/sparc/sys/000077500000000000000000000000001414576234500210455ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/sparc/sys/fenv.h000066400000000000000000000056111414576234500221570ustar00rootroot00000000000000/* $NetBSD: fenv.h,v 1.2 2017/01/14 12:00:13 martin Exp $ */ /*- * Copyright (c) 2004-2005 David Schultz * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $FreeBSD$ */ #ifndef _SYS_FENV_H_ #define _SYS_FENV_H_ #include #ifdef __arch64__ typedef uint64_t fenv_t; typedef uint64_t fexcept_t; #else typedef uint32_t fenv_t; typedef uint32_t fexcept_t; #endif /* * Exception flags * * Symbols are defined in such a way, to correspond to the accrued * exception bits (aexc) fields of FSR. */ #define FE_INEXACT 0x00000020 /* 0000100000 */ #define FE_DIVBYZERO 0x00000040 /* 0001000000 */ #define FE_UNDERFLOW 0x00000080 /* 0010000000 */ #define FE_OVERFLOW 0x00000100 /* 0100000000 */ #define FE_INVALID 0x00000200 /* 1000000000 */ #define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | \ FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW) /* * Rounding modes * * We can't just use the hardware bit values here, because that would * make FE_UPWARD and FE_DOWNWARD negative, which is not allowed. */ #define FE_TONEAREST 0 /* round to nearest representable number */ #define FE_TOWARDZERO 1 /* round to zero (truncate) */ #define FE_UPWARD 2 /* round toward positive infinity */ #define FE_DOWNWARD 3 /* round toward negative infinity */ #define _ROUND_MASK (FE_TONEAREST | FE_DOWNWARD | \ FE_UPWARD | FE_TOWARDZERO) #define _ROUND_SHIFT 30 /* Default floating-point environment */ extern const fenv_t *_fe_dfl_env; #define FE_DFL_ENV _fe_dfl_env /* We need to be able to map status flag positions to mask flag positions */ #define _FPUSW_SHIFT 18 #define _ENABLE_MASK (FE_ALL_EXCEPT << _FPUSW_SHIFT) #endif /* !_SYS_FENV_H_ */ picolibc-1.7.4/newlib/libc/machine/spu/000077500000000000000000000000001414576234500177265ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/spu/assert.c000066400000000000000000000020201414576234500213650ustar00rootroot00000000000000/* Copyright (c) 2008 Patrick Mansfield */ #include #include #include /* * SPU specific assert: just directly call exit(6), and use fprintf. That * way we do not pull in the abort, signal.o code, nor (the likely * otherwise unused) fiprintf. */ /* func can be NULL, in which case no function information is given. */ void __assert_func (const char *file, int line, const char *func, const char *failedexpr) { fprintf(stderr, "assertion \"%s\" failed: file \"%s\", line %d%s%s\n", failedexpr, file, line, func ? ", function: " : "", func ? func : ""); /* * On the SPU, we do not have signaling. Previously, standard newlib * abort code was used. That eventually leads to a kill(SIGABRT), and * for SPU too an exit(SIGABRT). SIGABRT was 6, so just use that value * here. */ exit(6); /* NOTREACHED */ } void __assert (const char *file, int line, const char *failedexpr) { __assert_func (file, line, NULL, failedexpr); /* NOTREACHED */ } picolibc-1.7.4/newlib/libc/machine/spu/c99ppe.h000066400000000000000000000075071414576234500212210ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #ifndef __ASSEMBLER__ #include #include #endif /* !__ASSEMBLER__ */ #define SPE_C99_SIGNALCODE 0x2100 #define SPE_C99_OP_SHIFT 24 #define SPE_C99_OP_MASK 0xff #define SPE_C99_DATA_MASK 0xffffff #define SPE_C99_CLEARERR 1 #define SPE_C99_FCLOSE 2 #define SPE_C99_FEOF 3 #define SPE_C99_FERROR 4 #define SPE_C99_FFLUSH 5 #define SPE_C99_FGETC 6 #define SPE_C99_FGETPOS 7 #define SPE_C99_FGETS 8 #define SPE_C99_FILENO 9 #define SPE_C99_FOPEN 10 //implemented #define SPE_C99_FPUTC 11 #define SPE_C99_FPUTS 12 #define SPE_C99_FREAD 13 #define SPE_C99_FREOPEN 14 #define SPE_C99_FSEEK 15 #define SPE_C99_FSETPOS 16 #define SPE_C99_FTELL 17 #define SPE_C99_FWRITE 18 #define SPE_C99_GETC 19 #define SPE_C99_GETCHAR 20 #define SPE_C99_GETS 21 #define SPE_C99_PERROR 22 #define SPE_C99_PUTC 23 #define SPE_C99_PUTCHAR 24 #define SPE_C99_PUTS 25 #define SPE_C99_REMOVE 26 #define SPE_C99_RENAME 27 #define SPE_C99_REWIND 28 #define SPE_C99_SETBUF 29 #define SPE_C99_SETVBUF 30 #define SPE_C99_SYSTEM 31 //not yet implemented in newlib #define SPE_C99_TMPFILE 32 #define SPE_C99_TMPNAM 33 #define SPE_C99_UNGETC 34 #define SPE_C99_VFPRINTF 35 #define SPE_C99_VFSCANF 36 #define SPE_C99_VPRINTF 37 #define SPE_C99_VSCANF 38 #define SPE_C99_VSNPRINTF 39 #define SPE_C99_VSPRINTF 40 #define SPE_C99_VSSCANF 41 #define SPE_C99_LAST_OPCODE 42 #define SPE_C99_NR_OPCODES ((SPE_C99_LAST_OPCODE - SPE_C99_CLEARERR) + 1) #define SPE_STDIN 1 #define SPE_STDOUT 2 #define SPE_STDERR 3 #define SPE_FOPEN_MAX FOPEN_MAX #ifdef __ASSEMBLER__ #define SPE_STACK_REGS 72 /* Number of registers preserved in stack in case of variable argument API. */ #else /* !__ASSEMBLER__ */ struct spe_reg128{ unsigned int slot[4]; }; void __sinit (struct _reent *); FILE *__sfp (struct _reent *); #define __sfp_free(fp) ( (fp)->_fp = 0 ) #define CHECK_INIT(ptr) \ do { if ((ptr) && !(ptr)->__sdidinit) __sinit (ptr); } while (0) #define CHECK_STD_INIT(ptr) /* currently, do nothing */ #define CHECK_STR_INIT(ptr) /* currently, do nothing */ #endif /* __ASSEMBLER__ */ picolibc-1.7.4/newlib/libc/machine/spu/calloc_ea.c000066400000000000000000000037201414576234500217760ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include "ea_internal.h" #include typedef struct { unsigned long long nmemb; unsigned int pad0[2]; unsigned long long length; unsigned int pad1[2]; } calloc_ea_t; COMPAT_EA_ALIAS (calloc_ea); __ea void * calloc_ea (size_ea_t nmemb, size_ea_t length) { calloc_ea_t args; args.nmemb = (unsigned long long) nmemb; args.length = (unsigned long long) length; __send_to_ppe (JSRE_LIBEA_SIGNALCODE, SPE_LIBEA_CALLOC, &args); return ull_to_eavoid (args.nmemb); } picolibc-1.7.4/newlib/libc/machine/spu/clearerr.c000066400000000000000000000033471414576234500217000ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include #include "c99ppe.h" #ifndef _REENT_ONLY void clearerr (FILE * fp) { int ret; CHECK_INIT(_REENT); ret = fp->_fp; __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_CLEARERR, &ret); return; } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/creat.c000066400000000000000000000005071414576234500211720ustar00rootroot00000000000000/* Copyright (c) 2007 Patrick Mansfield */ /* creat() "system call" */ /* copied from libc/posix/creat.c */ /* This is needed by f2c and therefore the SPEC benchmarks. */ #include int creat (const char *path, mode_t mode) { return open (path, O_WRONLY | O_CREAT | O_TRUNC, mode); } picolibc-1.7.4/newlib/libc/machine/spu/ea_internal.h000066400000000000000000000102621414576234500223610ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef __EA_INTERNAL_H #define __EA_INTERNAL_H #include #define JSRE_POSIX1_SIGNALCODE 0x2101 #define SPE_POSIX1_FTOK 0x05 #define SPE_POSIX1_MMAP 0x0b #define SPE_POSIX1_MUNMAP 0x0e /* implemented to here */ #define SPE_POSIX1_MREMAP 0x0c #define SPE_POSIX1_MSYNC 0x0d #define SPE_POSIX1_SHMGET 0x14 #define SPE_POSIX1_SHMCTL 0x12 #define SPE_POSIX1_SHMAT 0x11 #define SPE_POSIX1_SHMDT 0x13 #define SPE_POSIX1_SHM_OPEN 0x15 #define SPE_POSIX1_SHM_UNLINK 0x16 #define JSRE_LIBEA_SIGNALCODE 0x2105 #define SPE_LIBEA_CALLOC 0x01 #define SPE_LIBEA_FREE 0x02 #define SPE_LIBEA_MALLOC 0x03 #define SPE_LIBEA_REALLOC 0x04 #define SPE_LIBEA_POSIX_MEMALIGN 0x05 #define PAD_INT 3 #ifdef __EA64__ #define PAD_LONG 2 #else /* 32 bit */ #define PAD_LONG 3 #endif #define ROUND_UP_NEXT_128(x) (((x) + 128) & (~127)) #define ROUND_DOWN_128(x) ((x) & (~127)) /* Macro that generates an __ea alias. */ #ifdef __EA64__ #define COMPAT_EA_ALIAS(name) __asm__(".global\t__" #name "64\n\t.set\t__" #name "64," #name) #else #define COMPAT_EA_ALIAS(name) __asm__(".global\t__" #name "32\n\t.set\t__" #name "32," #name) #endif static inline __ea void* round_down_128_ea(__ea void* x) { size_ea_t tmp = (size_ea_t) x; tmp &= (~127); return (__ea void*)tmp; } static inline __ea void* round_up_next_128_ea(__ea void* x) { size_ea_t tmp = (size_ea_t) x; tmp += 128; tmp &= (~127); return (__ea void*)tmp; } #define __cache_fetch_dirty_all(x) \ __cache_fetch_dirty(round_down_128_ea(x), 128) /* please optimize, this hurts my eyes */ static inline size_t three_way_min(size_t x, size_t y, size_t z) { if (x < y) if (x < z) return x; else return z; else if (y < z) return y; else return z; } #undef eavoid_to_ul #define eavoid_to_ul(X) ({ \ unsigned long _y; \ __asm__ ("# %0 %1" : "=r" (_y) : "0" (X)); \ _y; \ }) #undef eavoid_to_ull #define eavoid_to_ull(X) ({ \ unsigned long long _y; \ __asm__ ("# %0 %1" : "=r" (_y) : "0" (X)); \ _y; \ }) #ifdef __EA32__ #undef ull_to_eavoid #define ull_to_eavoid(X) ({ \ __ea void* _y; \ unsigned long long X2; \ (X2) = (X) << 32;\ __asm__ ("# %0 %1" : "=r" (_y) : "0" (X2)); \ _y; \ }) #else /*__EA64__*/ #define ull_to_eavoid(X) ({ \ __ea void* _y; \ __asm__ ("# %0 %1" : "=r" (_y) : "0" (X)); \ _y; \ }) #endif #undef ul_to_eavoid #define ul_to_eavoid(X) ({ \ __ea void* _y; \ __asm__ ("# %0 %1" : "=r" (_y) : "0" (X)); \ _y; \ }) #endif /*__EA_INTERNAL_H*/ picolibc-1.7.4/newlib/libc/machine/spu/fclose.c000066400000000000000000000034201414576234500213440ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include <_ansi.h> #include #include "c99ppe.h" #ifndef _REENT_ONLY int fclose (FILE * fp) { int ret; CHECK_INIT(_REENT); ret = fp->_fp; ret = __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FCLOSE, &ret); __sfp_free(fp); return ret; } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/fdopen.c000066400000000000000000000032001414576234500213400ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2009 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #ifndef _REENT_ONLY /* Just a stub for now. */ FILE * fdopen (int fd, const char *mode) { errno = ENOSYS; return NULL; } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/feof.c000066400000000000000000000033421414576234500210130ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include #include "c99ppe.h" #ifndef _REENT_ONLY int feof (FILE * fp) { int result; CHECK_INIT(_REENT); result = fp->_fp; return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FEOF, &result); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/ferror.c000066400000000000000000000033461414576234500213770ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include #include "c99ppe.h" #ifndef _REENT_ONLY int ferror (FILE * fp) { int result; CHECK_INIT(_REENT); result = fp->_fp; return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FERROR, &result); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/fflush.c000066400000000000000000000033451414576234500213660ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include #include "c99ppe.h" #ifndef _REENT_ONLY int fflush (FILE * fp) { int result; CHECK_INIT(_REENT); result = fp->_fp; return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FFLUSH, &result); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/fgetc.c000066400000000000000000000033441414576234500211660ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include #include "c99ppe.h" #ifndef _REENT_ONLY int fgetc (FILE * fp) { int result; CHECK_INIT(_REENT); result = fp->_fp; return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FGETC, &result); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/fgetpos.c000066400000000000000000000035711414576234500215470ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include #include "c99ppe.h" typedef struct { int fp; unsigned int pad0[ 3 ]; _fpos_t * pos; } c99_fgetpos_t; #ifndef _REENT_ONLY int fgetpos (FILE *__restrict fp, _fpos_t *__restrict pos) { c99_fgetpos_t arg; CHECK_INIT(_REENT); arg.fp = fp->_fp; arg.pos = pos; return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FGETPOS, &arg); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/fgets.c000066400000000000000000000036561414576234500212140ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include #include "c99ppe.h" typedef struct { char *buf; unsigned int pad0[3]; int n; unsigned int pad1[3]; int fp; } c99_fgets_t; #ifndef _REENT_ONLY char * fgets (char *__restrict buf, int n, FILE *__restrict fp) { c99_fgets_t args; CHECK_INIT(_REENT); args.buf = buf; args.n = n; args.fp = fp->_fp; return (char*) __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FGETS, &args); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/fileno.c000066400000000000000000000033351414576234500213520ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include #include "c99ppe.h" #ifndef _REENT_ONLY int fileno (FILE *fp) { int ret; CHECK_INIT(_REENT); ret = fp->_fp; return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FILENO, &ret); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/fiprintf.S000066400000000000000000000030561414576234500216770ustar00rootroot00000000000000/* Copyright (c) 2007, Toshiba Corporation All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of Toshiba nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define fprintf fiprintf #include "fprintf.S" picolibc-1.7.4/newlib/libc/machine/spu/fiscanf.S000066400000000000000000000030531414576234500214640ustar00rootroot00000000000000/* Copyright (c) 2007, Toshiba Corporation All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of Toshiba nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define fscanf fiscanf #include "fscanf.S" picolibc-1.7.4/newlib/libc/machine/spu/fopen.c000066400000000000000000000042141414576234500212020ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include <_ansi.h> #include #include "c99ppe.h" typedef struct { const char* file; unsigned int pad0[ 3 ]; const char* mode; unsigned int pad1[ 3 ]; } c99_fopen_t; #ifndef _REENT_ONLY FILE * fopen (const char *__restrict file, const char *__restrict mode) { int ret; c99_fopen_t args; FILE *fp; struct _reent *ptr = _REENT; CHECK_INIT(ptr); fp = __sfp(ptr); if (!fp) { return NULL; } args.file = file; args.mode = mode; ret = __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FOPEN, &args); if (ret) { fp->_fp = ret; return fp; } else { __sfp_free(fp); return NULL; } } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/fprintf.S000066400000000000000000000043121414576234500215220ustar00rootroot00000000000000/* Copyright (c) 2007, Toshiba Corporation All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of Toshiba nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "c99ppe.h" .text .align 4 GLOBL fprintf .type fprintf, @function fprintf: stqd $0, 16($sp) /* save caller address */ il $2, 2 /* number of fixed arguments */ brsl $0, __stack_reg_va /* save register to the stack frame */ brsl $0, __check_init lqd $3, 16*2($sp) /* $3 <- saved FP on the stack frame */ lqd $2, 0($3) /* FP = fp->_fp */ rotqby $2, $2, $3 stqd $2, 16*2($sp) /* replace FP on the stack frame */ il $3, SPE_C99_SIGNALCODE il $4, SPE_C99_VFPRINTF ai $5, $sp, 16*2 /* data ($3 save address) */ brsl $0, __send_to_ppe il $2, 16*(SPE_STACK_REGS+2+2) a $sp, $sp, $2 lqd $0, 16($sp) /* load caller address */ bi $0 /* return to caller */ .size fprintf, .-fprintf picolibc-1.7.4/newlib/libc/machine/spu/fputc.c000066400000000000000000000036241414576234500212200ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include <_ansi.h> #include #include "c99ppe.h" typedef struct { int ch; unsigned int pad0[ 3 ]; int fp; unsigned int pad1[ 3 ]; } c99_fputc_t; #ifndef _REENT_ONLY int fputc (c, fp) int c; register FILE *fp; { c99_fputc_t args; CHECK_INIT(_REENT); args.ch = c; args.fp = fp->_fp; return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FPUTC, &args); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/fputs.c000066400000000000000000000036371414576234500212440ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include <_ansi.h> #include #include "c99ppe.h" typedef struct { const char* s; unsigned int pad0[ 3 ]; int fp; unsigned int pad1[ 3 ]; } c99_fputs_t; #ifndef _REENT_ONLY int fputs (char const *__restrict s, FILE *__restrict fp) { c99_fputs_t args; CHECK_INIT(_REENT); args.s = s; args.fp = fp->_fp; return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FPUTS, &args); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/fread.c000066400000000000000000000040371414576234500211570ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include <_ansi.h> #include #include "c99ppe.h" typedef struct { char* buf; unsigned int pad0[ 3 ]; size_t size; unsigned int pad1[ 3 ]; size_t count; unsigned int pad2[ 3 ]; int fp; } c99_fread_t; #ifndef _REENT_ONLY size_t fread (void *__restrict buf, size_t size, size_t count, FILE *__restrict fp) { c99_fread_t args; CHECK_INIT(_REENT); args.buf = buf; args.size = size; args.count = count; args.fp = fp->_fp; return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FREAD, &args); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/free_ea.c000066400000000000000000000036711414576234500214670ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include "ea_internal.h" #include #include extern void __cache_flush (void) __attribute__ ((weak)); COMPAT_EA_ALIAS (free_ea); void free_ea(__ea void *ptr) { unsigned long long ptr_arg; ptr_arg = (unsigned long long) (size_ea_t) ptr; /* Flush cache only if the application really uses the software cache. */ if (__cache_flush) __cache_flush (); __send_to_ppe(JSRE_LIBEA_SIGNALCODE, SPE_LIBEA_FREE , &ptr_arg); return; } picolibc-1.7.4/newlib/libc/machine/spu/freopen.c000066400000000000000000000041541414576234500215340ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include <_ansi.h> #include #include "c99ppe.h" typedef struct { const char *file; unsigned int pad0[ 3 ]; const char *mode; unsigned int pad1[ 3 ]; int fp; } c99_freopen_t; #ifndef _REENT_ONLY FILE * freopen (const char *__restrict file, const char *__restrict mode, FILE *__restrict fp) { int ret; c99_freopen_t args; CHECK_INIT(_REENT); args.file = file; args.mode = mode; args.fp = fp->_fp; ret = __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FREOPEN, &args); if (ret) { fp->_fp = ret; return fp; } else { __sfp_free(fp); return NULL; } } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/fscanf.S000066400000000000000000000043041414576234500213130ustar00rootroot00000000000000/* Copyright (c) 2007, Toshiba Corporation All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of Toshiba nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "c99ppe.h" .text .align 4 GLOBL fscanf .type fscanf, @function fscanf: stqd $0, 16($sp) /* save caller address */ il $2, 2 /* number of fixed arguments */ brsl $0, __stack_reg_va /* save register to the stack frame */ brsl $0, __check_init lqd $3, 16*2($sp) /* $3 <- saved FP on the stack frame */ lqd $2, 0($3) /* FP = fp->_fp */ rotqby $2, $2, $3 stqd $2, 16*2($sp) /* replace FP on the stack frame */ il $3, SPE_C99_SIGNALCODE il $4, SPE_C99_VFSCANF ai $5, $sp, 16*2 /* data ($3 save address) */ brsl $0, __send_to_ppe il $2, 16*(SPE_STACK_REGS+2+2) a $sp, $sp, $2 lqd $0, 16($sp) /* load caller address */ bi $0 /* return to caller */ .size fscanf, .-fscanf picolibc-1.7.4/newlib/libc/machine/spu/fseek.c000066400000000000000000000037231414576234500211740ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include <_ansi.h> #include #include "c99ppe.h" typedef struct { int fp; unsigned int pad0[ 3 ]; long offset; unsigned int pad1[ 3 ]; int whence; } c99_fseek_t; #ifndef _REENT_ONLY int fseek (register FILE *fp, long offset, int whence) { c99_fseek_t args; CHECK_INIT(_REENT); args.fp = fp->_fp; args.offset = offset; args.whence = whence; return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FSEEK, &args); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/fsetpos.c000066400000000000000000000036111414576234500215560ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include <_ansi.h> #include #include "c99ppe.h" typedef struct { int fp; unsigned int pad0[ 3 ]; const _fpos_t *pos; } c99_fsetpos_t; #ifndef _REENT_ONLY int fsetpos (FILE * iop, const _fpos_t * pos) { c99_fsetpos_t args; CHECK_INIT(_REENT); args.fp = iop->_fp; args.pos = pos; return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FSETPOS, &args); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/ftell.c000066400000000000000000000033361414576234500212050ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include #include "c99ppe.h" #ifndef _REENT_ONLY long ftell (FILE * fp) { long ret; CHECK_INIT(_REENT); ret = fp->_fp; return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FTELL, &ret); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/fwrite.c000066400000000000000000000040441414576234500213740ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include <_ansi.h> #include #include "c99ppe.h" #ifndef _REENT_ONLY typedef struct { const char* buf; unsigned int pad0[ 3 ]; size_t size; unsigned int pad1[ 3 ]; size_t count; unsigned int pad2[ 3 ]; int fp; } c99_fwrite_t; size_t fwrite (const void *__restrict buf, size_t size, size_t count, FILE * fp) { c99_fwrite_t args; CHECK_INIT(_REENT); args.buf = buf; args.size = size; args.count = count; args.fp = fp->_fp; return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_FWRITE, &args); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/getc.c000066400000000000000000000034231414576234500210160ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include #include "c99ppe.h" /* * A subroutine version of the macro getc. */ #ifndef _REENT_ONLY int getc (fp) FILE *fp; { int ret; CHECK_INIT(_REENT); ret = fp->_fp; return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_GETC, &ret); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/getchar.c000066400000000000000000000033301414576234500215060ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include #include "c99ppe.h" #undef getchar #ifndef _REENT_ONLY int getchar () { int ret; CHECK_STD_INIT(_REENT); return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_GETCHAR, &ret); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/gets.c000066400000000000000000000034061414576234500210370ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include #include "c99ppe.h" #ifndef _REENT_ONLY char * gets (buf) char *buf; { CHECK_STD_INIT(_REENT); /* The return value gets written over buf */ return (char*) __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_GETS, &buf); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/impure.c000066400000000000000000000010141414576234500213670ustar00rootroot00000000000000/* Copyright (c) 2008 Patrick Mansfield */ #include /* Note that there is a copy of this in sys/reent.h. */ #ifndef __ATTRIBUTE_IMPURE_PTR__ #define __ATTRIBUTE_IMPURE_PTR__ #endif #ifndef __ATTRIBUTE_IMPURE_DATA__ #define __ATTRIBUTE_IMPURE_DATA__ #endif struct _reent __ATTRIBUTE_IMPURE_DATA__ _impure_data = _REENT_INIT(_impure_data); struct _reent *__ATTRIBUTE_IMPURE_PTR__ _impure_ptr = &_impure_data; struct _reent *const __ATTRIBUTE_IMPURE_PTR__ _global_impure_ptr = &_impure_data; picolibc-1.7.4/newlib/libc/machine/spu/include/000077500000000000000000000000001414576234500213515ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/spu/include/ea.h000066400000000000000000000115451414576234500221150ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef __EA_H #define __EA_H #include #include #include #include #include /* * take this out when compiler support is common */ #if (!defined( __EA32__ ) && !defined( __EA64__ )) #warning "need __ea support in compiler to compile to take advantage of libea features" #define __ea #define __EA32__ #endif #ifdef __EA64__ typedef uint64_t size_ea_t; typedef int64_t ssize_ea_t; typedef uint64_t key_ea_t; #define MAP_FAILED_EA ((__ea void *) -1LL) #else typedef uint32_t size_ea_t; typedef int32_t ssize_ea_t; typedef uint32_t key_ea_t; #define MAP_FAILED_EA ((__ea void *) -1) #endif typedef __ea void * eaptr; struct iovec_ea { #ifdef __EA32__ unsigned int __pad1; /* 32 bit padding */ #endif /*__ea void *iov_base;*/ eaptr iov_base; /* Starting address */ #ifdef __EA32__ unsigned int __pad2; /* 32 bit padding */ #endif size_ea_t iov_len; /* Number of bytes */ }; /* Memory Mapping functions */ __ea void *mmap_ea (__ea void *start, size_ea_t length, int prot, int flags, int fd, off_t offset); int munmap_ea (__ea void *start, size_ea_t length); __ea void *mremap_ea (__ea void *old_address, size_ea_t old_size, size_ea_t new_size, unsigned long flags); int msync_ea (__ea void *start, size_ea_t length, int flags); /* EA memory mangement functions */ __ea void *calloc_ea (size_ea_t nmemb, size_ea_t length); void free_ea (__ea void *ptr); __ea void *malloc_ea (size_ea_t size); __ea void *realloc_ea (__ea void *ptr, size_ea_t size); int posix_memalign_ea (__ea void **memptr, size_ea_t alignment, size_ea_t size); /* String copying functions */ __ea void *memcpy_ea (__ea void *dest, __ea const void *src, size_ea_t n); __ea void *memmove_ea (__ea void *dest, __ea const void *src, size_ea_t n); __ea char *strcpy_ea (__ea char *dest, __ea const char *src); __ea char *strncpy_ea (__ea char *dest, __ea const char *src, size_ea_t n); /* Concatenation functions */ __ea char *strcat_ea (__ea char *dest, __ea const char *src); __ea char *strncat_ea (__ea char *dest, __ea const char *src, size_ea_t n); /* Comparison functions */ int memcmp_ea (__ea void *s1, __ea const void *s2, size_ea_t n); int strcmp_ea (__ea char *s1, __ea const char *s2); int strncmp_ea (__ea void *s1, __ea const void *s2, size_ea_t n3); /* Search functions*/ __ea void *memchr_ea (__ea const void *s, int c, size_ea_t n); __ea char *strchr_ea (__ea const char *s, int c); size_ea_t strcspn_ea (__ea const char *s, const char *reject); __ea char *strpbrk_ea (__ea const char *s, const char *accept); __ea char *strrchr_ea (__ea const char *s, int c); size_ea_t strspn_ea (__ea const char *s, const char *accept); __ea char * strstr_ea (__ea const char *s1, __ea const char *s2); /* Misc functions */ __ea void *memset_ea (__ea void *dest, int c, size_ea_t n); size_ea_t strlen_ea (__ea const char *s); /* Linux system call functions */ ssize_ea_t read_ea(int fd, __ea void *buf, size_ea_t count); ssize_ea_t pread_ea(int fd, __ea void *buf, size_ea_t count, off_t offset); ssize_ea_t readv_ea(int fd, struct iovec_ea *vector, int count); ssize_ea_t write_ea(int fd, __ea const void *buf, size_ea_t count); ssize_ea_t pwrite_ea(int fd, __ea const void *buf, size_ea_t count, off_t offset); ssize_ea_t writev_ea(int fd, struct iovec_ea *vector, int count); #if defined( __EA64__ ) && defined( __EA32__ ) #error __EA64__ and __EA32__ are both defined #endif #endif picolibc-1.7.4/newlib/libc/machine/spu/include/fenv.h000066400000000000000000000043031414576234500224600ustar00rootroot00000000000000/* (C) Copyright 2006, 2007 International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _FENV_H #define _FENV_H #include #ifdef __cplusplus extern "C" { #endif /* Exception */ void feclearexcept(int excepts); void fegetexceptflag(fexcept_t *flagp, int excepts); void feraiseexcept(int excepts); void fesetexceptflag(const fexcept_t *flagp, int excepts); int fetestexcept(int excepts); /* Rounding mode */ int fegetround(void); int fesetround(int rounding_mode); /* Float environment */ void fegetenv(fenv_t *envp); int feholdexcept(fenv_t *envp); void fesetenv(const fenv_t *envp); void feupdateenv(const fenv_t *envp); #ifdef __cplusplus } #endif #endif picolibc-1.7.4/newlib/libc/machine/spu/include/spu_timer.h000066400000000000000000000057011414576234500235340ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _SPU_TIMER_H_ #define _SPU_TIMER_H_ #ifdef __cplusplus extern "C" { #endif #include /* Clock services. */ extern void spu_clock_start (void); extern int spu_clock_stop (void); extern uint64_t spu_clock_read (void); /* Timer services. */ extern int spu_timer_alloc (int interval, void (*func) (int)); extern int spu_timer_free (int id); extern int spu_timer_start (int id); extern int spu_timer_stop (int id); extern unsigned spu_timebase (void); /* Interrupt services. */ extern void spu_slih_register (unsigned event_mask, unsigned (*slih) (unsigned)); extern unsigned spu_clock_slih (unsigned event_mask); /* Number of supported timers. */ #define SPU_TIMER_NTIMERS 4 /* Recommended minimun spu timer interval time from (cat /proc/cpuinfo) * QS20 100/14318000 = 6.98 usec * QS21/QS22 100/26666666 = 3.75 usec * PS3 100/79800000 = 1.25 usec */ #define SPU_TIMER_MIN_INTERVAL 100 /* Clock error codes. */ #define SPU_CLOCK_ERR_NOT_RUNNING -2 #define SPU_CLOCK_ERR_STILL_RUNNING -3 #define SPU_CLOCK_ERR_TIMERS_ACTIVE -4 /* Timer error codes. */ #define SPU_TIMER_ERR_INVALID_PARM -10 #define SPU_TIMER_ERR_NONE_FREE -11 #define SPU_TIMER_ERR_INVALID_ID -12 #define SPU_TIMER_ERR_ACTIVE -13 #define SPU_TIMER_ERR_NOT_ACTIVE -14 #define SPU_TIMER_ERR_NOCLOCK -15 #define SPU_TIMER_ERR_FREE -16 #define SPU_TIMER_ERR_NOT_STOPPED -17 #ifdef __cplusplus } #endif #endif picolibc-1.7.4/newlib/libc/machine/spu/iprintf.S000066400000000000000000000030531414576234500215260ustar00rootroot00000000000000/* Copyright (c) 2007, Toshiba Corporation All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of Toshiba nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define printf iprintf #include "printf.S" picolibc-1.7.4/newlib/libc/machine/spu/iscanf.S000066400000000000000000000030501414576234500213130ustar00rootroot00000000000000/* Copyright (c) 2007, Toshiba Corporation All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of Toshiba nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define scanf iscanf #include "scanf.S" picolibc-1.7.4/newlib/libc/machine/spu/machine/000077500000000000000000000000001414576234500213325ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/spu/machine/_types.h000066400000000000000000000042071414576234500230110ustar00rootroot00000000000000/* Copyright 2007 International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _MACHINE__TYPES_H #define _MACHINE__TYPES_H #include /* * fpos_t large enough for either 32 or 64 bit ppc glibc fpos_t. */ #define __machine_fpos_t_defined typedef struct { char __pos[16]; } _fpos_t; #ifdef __LARGE64_FILES #define __machine_fpos64_t_defined typedef _fpos_t _fpos64_t; #endif #define __machine_dev_t_defined typedef int __dev_t; #define __machine_uid_t_defined typedef unsigned int __uid_t; #define __machine_gid_t_defined typedef unsigned int __gid_t; #endif /* _MACHINE__TYPES_H */ picolibc-1.7.4/newlib/libc/machine/spu/malloc_ea.c000066400000000000000000000033701414576234500220110ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include "ea_internal.h" #include COMPAT_EA_ALIAS (malloc_ea); __ea void * malloc_ea (size_ea_t size) { unsigned long long sz; sz = (unsigned long long) size; __send_to_ppe (JSRE_LIBEA_SIGNALCODE, SPE_LIBEA_MALLOC, &sz); return ull_to_eavoid (sz); } picolibc-1.7.4/newlib/libc/machine/spu/memchr_ea.c000066400000000000000000000045421414576234500220170ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include "ea_internal.h" #include #include #include COMPAT_EA_ALIAS (memchr_ea); __ea void * memchr_ea (__ea const void *s, int c, size_ea_t n) { __ea void *curr_s = (__ea void *) s; void *local_s; size_ea_t left_in_cacheline; size_ea_t search_size; void *where; size_ea_t ret; while (n) { left_in_cacheline = ROUND_UP_NEXT_128 ((size_ea_t) curr_s) - (size_ea_t) curr_s; search_size = left_in_cacheline < n ? left_in_cacheline : n; local_s = __cache_fetch (curr_s); where = memchr (local_s, c, search_size); if (where) { ret = (size_ea_t) curr_s + ((size_ea_t) (int) where - (size_ea_t) (int) local_s); return (__ea void *) ret; } /* update values to take into account what we copied */ curr_s += search_size; n -= search_size; } /* if we got here n was initially 0 */ return NULL; } picolibc-1.7.4/newlib/libc/machine/spu/memcmp.c000066400000000000000000000036551414576234500213610ustar00rootroot00000000000000/* (C) Copyright 2008 International Business Machines Corporation All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include "strncmp.h" /* * Compare the two strings s1 and s2 of length n. Returns an integer less * than, equal to, or greater than zero if s1 is found, respectively, * to be less than, to match, or be greater than s2. */ int memcmp(const void *s1, const void *s2, size_t n) { vec_uint4 end_v; return _strncmp_internal (s1, s2, n, &end_v, 0 /* no zero check */); } picolibc-1.7.4/newlib/libc/machine/spu/memcmp_ea.c000066400000000000000000000047571414576234500220320ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include "ea_internal.h" #include #include COMPAT_EA_ALIAS (memcmp_ea); int memcmp_ea (__ea void *s1, __ea const void *s2, size_ea_t n) { __ea void *curr_s1 = s1; __ea void *curr_s2 = (__ea void *) s2; void *l_s1; void *l_s2; size_ea_t local_n; size_ea_t s2_n; size_ea_t s1_n; int ret; ret = 0; while (n) { l_s2 = __cache_fetch (curr_s2); l_s1 = __cache_fetch (curr_s1); /* * Use the smaller of the size left to compare (n), the space left in * s2 cacheline (s2_n), or the space left in the s1 cacheline (s1_n). */ s2_n = ROUND_UP_NEXT_128 ((size_ea_t) curr_s2) - (size_ea_t) curr_s2; s1_n = ROUND_UP_NEXT_128 ((size_ea_t) curr_s1) - (size_ea_t) curr_s1; local_n = three_way_min (s2_n, s1_n, n); ret = memcmp (l_s1, l_s2, local_n); if (ret) return ret; /* update values to take into account what we copied */ curr_s2 += local_n; curr_s1 += local_n; n -= local_n; } return ret; } picolibc-1.7.4/newlib/libc/machine/spu/memcpy.c000066400000000000000000000104041414576234500213630ustar00rootroot00000000000000/* (C) Copyright 2001,2006, International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include "../../string/local.h" /* Copy n bytes from memory area src to memory area dest. * The memory areas may not overlap. The memcpy subroutine * returns a pointer to dest. * * Faster implementation of this function can be implemented * either with prior knowledge of the alignment or special * casing specific optimal alignments. */ void * __inhibit_loop_to_libcall memcpy(void * __restrict__ dest, const void * __restrict__ src, size_t n) { int adjust, delta; unsigned int soffset1, doffset1, doffset2; vec_uchar16 *vSrc, *vDst; vec_uchar16 sdata1, sdata2, sdata, ddata, shuffle; vec_uchar16 mask, mask1, mask2, mask3; vSrc = (vec_uchar16 *)(src); vDst = (vec_uchar16 *)(dest); /* Handle any leading destination partial quadwords as * well a very short copy (ie, such that the n characters * all reside in a single (destination) quadword. */ soffset1 = (unsigned int)(src) & 15; doffset1 = (unsigned int)(dest) & 15; doffset2 = ((unsigned int)(dest) + n) & 15; /* Compute a shuffle pattern used to align the source string * with the alignment of the destination string. */ adjust = (int)spu_extract(spu_cmpgt(spu_promote(doffset1, 0), spu_promote(soffset1, 0)), 0); delta = (int)soffset1 - (int)doffset1; delta += adjust & 16; shuffle = (vec_uchar16)spu_add((vec_uint4)spu_splats((unsigned char)delta), VEC_LITERAL(vec_uint4, 0x00010203, 0x04050607, 0x08090A0B, 0x0C0D0E0F)); vSrc += adjust; sdata1 = *vSrc++; sdata2 = *vSrc++; ddata = *vDst; sdata = spu_shuffle(sdata1, sdata2, shuffle); /* Construct a series of masks used to data insert. The masks * contain 0 when the destination word is unchanged, 1 when it * must be replaced by source bytes. * * mask1 = mask for leading unchanged bytes * mask2 = mask for trailing unchange bytes * mask3 = mask indicating the more than one qword is being changed. */ mask = spu_splats((unsigned char)-1); mask1 = spu_rlmaskqwbyte(mask, -doffset1); mask2 = spu_slqwbyte(mask, 16-doffset2); mask3 = (vec_uchar16)spu_cmpgt(spu_splats((unsigned int)(doffset1 + n)), 15); *vDst++ = spu_sel(ddata, sdata, spu_and(mask1, spu_or(mask2, mask3))); n += doffset1; /* Handle complete destination quadwords */ while (n > 31) { sdata1 = sdata2; sdata2 = *vSrc++; *vDst++ = spu_shuffle(sdata1, sdata2, shuffle); n -= 16; } /* Handle any trailing partial (destination) quadwords */ mask = spu_and((vec_uchar16)spu_cmpgt(spu_splats((unsigned int)n), 16), mask2); *vDst = spu_sel(*vDst, spu_shuffle(sdata2, *vSrc, shuffle), mask); return (dest); } picolibc-1.7.4/newlib/libc/machine/spu/memcpy_ea.c000066400000000000000000000051111414576234500220270ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include "ea_internal.h" #include #include #include "../../string/local.h" COMPAT_EA_ALIAS (memcpy_ea); __ea void * __inhibit_loop_to_libcall memcpy_ea (__ea void *dest, __ea const void *src, size_ea_t n) { __ea void *curr_dest = dest; __ea const void *curr_src = src; void *l_dest; void *l_src; size_ea_t local_n; size_ea_t src_n; size_ea_t dst_n; while (n) { l_src = __cache_fetch ((__ea void *) curr_src); /* * use the smaller of the size left to copy (n), the space left in the * src cacheline (src_n), or the space left in the destination * cacheline (dst_n) */ src_n = ROUND_UP_NEXT_128 ((size_ea_t) curr_src) - (size_ea_t) curr_src; dst_n = ROUND_UP_NEXT_128 ((size_ea_t) curr_dest) - (size_ea_t) curr_dest; local_n = three_way_min (src_n, dst_n, n); l_dest = __cache_fetch_dirty (curr_dest, local_n); memcpy (l_dest, l_src, local_n); /* update values to take into account what we copied */ curr_src += local_n; curr_dest += local_n; n -= local_n; } return dest; } picolibc-1.7.4/newlib/libc/machine/spu/memmove.c000066400000000000000000000174511414576234500215470ustar00rootroot00000000000000/* (C) Copyright 2001,2006, International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include "vec_literal.h" /* Copy n bytes from memory area src to memory area dest. * Copying is performed as if the n characters pointed to * by src are first copied into a temporary array that does * not overlap the src and dest arrays. Then the n characters * of the temporary array are copied into the destination * array. The memmove subroutine returns a pointer to dest. */ void * memmove(void * __restrict__ dest, const void * __restrict__ src, size_t n) { int adjust, delta; unsigned int soffset1, soffset2, doffset1, doffset2; vec_uchar16 *vSrc, *vDst; vec_uchar16 sdata1, sdata2, sdata, ddata, shuffle; vec_uchar16 mask, mask1, mask2, mask3, one = spu_splats((unsigned char)-1); soffset1 = (unsigned int)(src) & 15; doffset1 = (unsigned int)(dest) & 15; doffset2 = ((unsigned int)(dest) + n) & 15; /* Construct a series of masks used to data insert. The masks * contains 0 bit when the destination word is unchanged, 1 when it * must be replaced by source bits. * * mask1 = mask for leading unchanged bytes * mask2 = mask for trailing unchange bytes * mask3 = mask indicating the more than one qword is being changed. */ mask = one; mask1 = spu_rlmaskqwbyte(mask, -doffset1); mask2 = spu_slqwbyte(mask, 16-doffset2); mask3 = (vec_uchar16)spu_cmpgt(spu_splats((unsigned int)(doffset1 + n)), 15); vDst = (vec_uchar16 *)(dest); delta = (int)soffset1 - (int)doffset1; /* The follow check only works if the SPU addresses are not * wrapped. No provisions have been made to correct for this * limitation. */ if (((unsigned int)dest - (unsigned int)src) >= (unsigned int)n) { /* Forward copy. Perform a memcpy. * * Handle any leading destination partial quadwords as * well a very short copy (ie, such that the n characters * all reside in a single (destination) quadword. */ vSrc = (vec_uchar16 *)(src); vDst = (vec_uchar16 *)(dest); /* Handle any leading destination partial quadwords as * well a very short copy (ie, such that the n characters * all reside in a single (destination) quadword. */ soffset1 = (unsigned int)(src) & 15; doffset1 = (unsigned int)(dest) & 15; doffset2 = ((unsigned int)(dest) + n) & 15; /* Compute a shuffle pattern used to align the source string * with the alignment of the destination string. */ adjust = (int)spu_extract(spu_cmpgt(spu_promote(doffset1, 0), spu_promote(soffset1, 0)), 0); delta = (int)soffset1 - (int)doffset1; delta += adjust & 16; shuffle = (vec_uchar16)spu_add((vec_uint4)spu_splats((unsigned char)delta), VEC_LITERAL(vec_uint4, 0x00010203, 0x04050607, 0x08090A0B, 0x0C0D0E0F)); vSrc += adjust; sdata1 = *vSrc++; sdata2 = *vSrc++; ddata = *vDst; sdata = spu_shuffle(sdata1, sdata2, shuffle); /* Construct a series of masks used to data insert. The masks * contain 0 when the destination word is unchanged, 1 when it * must be replaced by source bytes. * * mask1 = mask for leading unchanged bytes * mask2 = mask for trailing unchange bytes * mask3 = mask indicating the more than one qword is being changed. */ mask = one; mask1 = spu_rlmaskqwbyte(mask, -doffset1); mask2 = spu_slqwbyte(mask, 16-doffset2); mask3 = (vec_uchar16)spu_cmpgt(spu_splats((unsigned int)(doffset1 + n)), 15); *vDst++ = spu_sel(ddata, sdata, spu_and(mask1, spu_or(mask2, mask3))); n += doffset1; /* Handle complete destination quadwords */ while (n > 31) { sdata1 = sdata2; sdata2 = *vSrc++; *vDst++ = spu_shuffle(sdata1, sdata2, shuffle); n -= 16; } /* Handle any trailing partial (destination) quadwords */ mask = spu_and((vec_uchar16)spu_cmpgt(spu_splats((unsigned int)n), 16), mask2); *vDst = spu_sel(*vDst, spu_shuffle(sdata2, *vSrc, shuffle), mask); } else { /* Backward copy. * * Handle any leading destination partial quadwords as * well a very short copy (ie, such that the n characters * all reside in a single (destination) quadword. */ vSrc = (vec_uchar16 *)((unsigned int)src + n-1); vDst = (vec_uchar16 *)((unsigned int)dest + n-1); /* Handle any leading destination partial quadwords as * well a very short copy (ie, such that the n characters * all reside in a single (destination) quadword. */ soffset1 = (unsigned int)(src) & 15; soffset2 = (unsigned int)(vSrc) & 15; doffset1 = (unsigned int)(dest) & 15; doffset2 = (unsigned int)(vDst) & 15; /* Compute a shuffle pattern used to align the source string * with the alignment of the destination string. */ adjust = (int)spu_extract(spu_cmpgt(spu_promote(soffset2, 0), spu_promote(doffset2, 0)), 0); delta = (int)doffset2 - (int)soffset2; delta += adjust & 16; shuffle = (vec_uchar16)spu_sub(VEC_LITERAL(vec_uint4, 0x10111213, 0x14151617, 0x18191A1B, 0x1C1D1E1F), (vec_uint4)spu_splats((unsigned char)delta)); vSrc -= adjust; sdata2 = *vSrc--; sdata1 = *vSrc--; ddata = *vDst; sdata = spu_shuffle(sdata1, sdata2, shuffle); /* Construct a series of masks used to data insert. The masks * contain 0 when the destination word is unchanged, 1 when it * must be replaced by source bytes. * * mask1 = mask for leading unchanged bytes * mask2 = mask for trailing unchange bytes * mask3 = mask indicating the more than one qword is being changed. */ mask = one; mask1 = spu_rlmaskqwbyte(mask, -doffset1); mask2 = spu_slqwbyte(mask, 15-doffset2); mask3 = (vec_uchar16)spu_cmpgt(spu_splats((int)(doffset2 - n)), -2); *vDst-- = spu_sel(ddata, sdata, spu_and(mask2, spu_orc(mask1, mask3))); n -= doffset2 + 1; /* Handle complete destination quadwords */ while ((int)n > 15) { sdata2 = sdata1; sdata1 = *vSrc--; *vDst-- = spu_shuffle(sdata1, sdata2, shuffle); n -= 16; } /* Handle any trailing partial (destination) quadwords */ mask = spu_and((vec_uchar16)spu_cmpgt(spu_splats((int)n), 0), mask1); *vDst = spu_sel(*vDst, spu_shuffle(*vSrc, sdata1, shuffle), mask); } return (dest); } picolibc-1.7.4/newlib/libc/machine/spu/memmove_ea.c000066400000000000000000000050311414576234500222030ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include "ea_internal.h" #include #include COMPAT_EA_ALIAS (memmove_ea); __ea void * memmove_ea (__ea void *dest, __ea const void *src, size_ea_t n) { __ea void *curr_dest = dest; __ea void *curr_src; void *l_dest; void *l_src; size_ea_t local_n; size_ea_t src_n; size_ea_t dst_n; curr_src = (__ea void *) src; while (n) { l_src = __cache_fetch (curr_src); /* * use the smaller of the size left to copy (n), the space left in the * src cacheline (src_n), or the space left in the destination * cacheline (dst_n). */ src_n = ROUND_UP_NEXT_128 ((size_ea_t) curr_src) - (size_ea_t) curr_src; dst_n = ROUND_UP_NEXT_128 ((size_ea_t) curr_dest) - (size_ea_t) curr_dest; local_n = three_way_min (src_n, dst_n, n); l_dest = __cache_fetch_dirty (curr_dest, local_n); memmove (l_dest, l_src, local_n); /* update values to take into account what we copied */ curr_src += local_n; curr_dest += local_n; n -= local_n; } return dest; } picolibc-1.7.4/newlib/libc/machine/spu/memset.c000066400000000000000000000055761414576234500214010ustar00rootroot00000000000000/* (C) Copyright 2001,2006, International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include /* Fills the first n bytes of the memory area pointed to by s * with the constant byte c. Returns a pointer to the memory area s. */ void * memset(void *s, int c, size_t n) { int skip, cnt, i; vec_uchar16 *vs; vec_uchar16 vc, mask, one = spu_splats((unsigned char)-1); vs = (vec_uchar16 *)(s); vc = spu_splats((unsigned char)c); cnt = (int)(n); /* Handle any leading partial quadwords as well a * very short settings (ie, such that the n characters * all reside in a single quadword. */ skip = (int)(s) & 15; if (skip) { mask = spu_rlmaskqwbyte(one, -skip); cnt -= 16 - skip; if (cnt < 0) { mask = spu_and(mask, spu_slqwbyte(one, (unsigned int)(-cnt))); } *vs = spu_sel(*vs, vc, mask); vs++; } /* Handle 8 quadwords at a time */ for (i=127; i 0) { mask = spu_slqwbyte(one, (unsigned int)(16-cnt)); *vs = spu_sel(*vs, vc, mask); } return (s); } picolibc-1.7.4/newlib/libc/machine/spu/memset_ea.c000066400000000000000000000042061414576234500220330ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include "ea_internal.h" #include #include "../../string/local.h" COMPAT_EA_ALIAS (memset_ea); __ea void * __inhibit_loop_to_libcall memset_ea (__ea void *dest, int c, size_ea_t n) { __ea void *curr_dest = dest; void *l_dest; size_ea_t local_n; size_ea_t dst_n; while (n) { dst_n = ROUND_UP_NEXT_128 ((size_ea_t) curr_dest) - (size_ea_t) curr_dest; local_n = dst_n < n ? dst_n : n; l_dest = __cache_fetch_dirty (curr_dest, local_n); memset (l_dest, c, local_n); /* update values to take into account what we copied */ curr_dest += local_n; n -= local_n; } return dest; } picolibc-1.7.4/newlib/libc/machine/spu/mk_syscalls000066400000000000000000000117451414576234500222050ustar00rootroot00000000000000#!/usr/bin/perl -w # # (C) Copyright 2007 TOSHIBA CORPORATION # All Rights Reserved # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Toshiba nor the names of its # contributors may be used to endorse or promote products derived from this # software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. open(DEFS, "syscall.def"); while ($line = ) { next if ($line =~ /^#.*/); ($opcode, $name, $fp, $parms) = split(" ", $line); $filename = ">" . $name . ".S"; open(SOURCE, $filename); print SOURCE "\/\*\n"; print SOURCE " Copyright (c) 2007, Toshiba Corporation\n\n"; print SOURCE " All rights reserved.\n\n"; print SOURCE " Redistribution and use in source and binary forms, with or without\n"; print SOURCE " modification, are permitted provided that the following conditions are met:\n\n"; print SOURCE " \* Redistributions of source code must retain the above copyright notice,\n"; print SOURCE " this list of conditions and the following disclaimer.\n"; print SOURCE " \* Redistributions in binary form must reproduce the above copyright\n"; print SOURCE " notice, this list of conditions and the following disclaimer in the\n"; print SOURCE " documentation and/or other materials provided with the distribution.\n"; print SOURCE " \* Neither the names of Toshiba nor the names of its\n"; print SOURCE " contributors may be used to endorse or promote products derived from this\n"; print SOURCE " software without specific prior written permission.\n\n"; print SOURCE " THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n"; print SOURCE " AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n"; print SOURCE " IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n"; print SOURCE " ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n"; print SOURCE " LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n"; print SOURCE " CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n"; print SOURCE " SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n"; print SOURCE " INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n"; print SOURCE " CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n"; print SOURCE " ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n"; print SOURCE " POSSIBILITY OF SUCH DAMAGE.\n"; print SOURCE " \*\/\n\n"; print SOURCE "#include \"c99ppe.h\"\n\n"; print SOURCE " .text\n"; print SOURCE " .align 4\n"; print SOURCE " GLOBL ", $name, "\n"; print SOURCE " .type ", $name, ", \@function\n"; print SOURCE $name, ":\n"; print SOURCE " stqd \$0, 16(\$sp) \/\* save caller address \*\/\n"; print SOURCE " il \$2, ", $parms, " \/\* number of fixed arguments \*\/\n"; print SOURCE " brsl \$0, __stack_reg_va \/\* save register to the stack frame \*\/\n\n"; if ($fp > 0) { print SOURCE " brsl \$0, __check_init\n"; print SOURCE " lqd \$3, 16\*2(\$sp) \/\* \$3 <- saved FP on the stack frame \*\/\n"; print SOURCE " lqd \$2, 0(\$3) \/\* FP = fp->_fp \*\/\n"; print SOURCE " rotqby \$2, \$2, \$3\n"; print SOURCE " stqd \$2, 16\*2(\$sp) \/\* replace FP on the stack frame \*\/\n\n"; } print SOURCE " il \$3, SPE_C99_SIGNALCODE\n"; print SOURCE " il \$4, ", $opcode, "\n"; print SOURCE " ai \$5, \$sp, 16\*2 \/\* data (\$3 save address) \*\/\n"; print SOURCE " brsl \$0, __send_to_ppe\n\n"; print SOURCE " il \$2, 16\*(SPE_STACK_REGS+2+2)\n"; print SOURCE " a \$sp, \$sp, \$2\n"; print SOURCE " lqd \$0, 16(\$sp) \/\* load caller address \*\/\n"; print SOURCE " bi \$0 \/\* return to caller \*\/\n"; print SOURCE " .size ", $name, ", .-", $name, "\n"; close(SOURCE); } picolibc-1.7.4/newlib/libc/machine/spu/mmap_ea.c000066400000000000000000000045631414576234500215010ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include "ea_internal.h" #include COMPAT_EA_ALIAS (mmap_ea); __ea void *mmap_ea (__ea void *start, size_ea_t length, int prot, int flags, int fd, off_t offset) { #ifdef __EA64__ if (length > 0xffffffffULL) { errno = ENOMEM; return MAP_FAILED_EADDR; } else { return (__ea void *) mmap_eaddr ((unsigned long long) start, (size_t) length, prot, flags, fd, offset); } #else /* __EA32__ */ unsigned long long res; /* * mmap_eaddr returns 64 bits. For ea32, only the lower 32 bits can be * returned. */ res = mmap_eaddr ((unsigned long long) (unsigned int) start, length, prot, flags, fd, offset); if (res != MAP_FAILED_EADDR && res > 0xffffffffULL) { munmap_eaddr (res, length); errno = ENOMEM; res = MAP_FAILED_EADDR; } return (__ea void *) (int) res; #endif } picolibc-1.7.4/newlib/libc/machine/spu/mremap_ea.c000066400000000000000000000043611414576234500220240ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include "ea_internal.h" #include COMPAT_EA_ALIAS (mremap_ea); __ea void * mremap_ea (__ea void *old_address, size_ea_t old_size, size_ea_t new_size, unsigned long flags) { #ifdef __EA64__ return (__ea void *) mremap_eaddr ((unsigned long long) old_address, old_size, new_size, flags); #else /* __EA32__ */ unsigned long long res; res = mremap_eaddr ((unsigned long long) (unsigned int) old_address, old_size, new_size, flags); if (res != MAP_FAILED_EADDR && res > 0xffffffffULL) { /* * We cannot reliably undo the successful remap, so unmap the address. */ munmap_eaddr (res, new_size); errno = ENOMEM; res = MAP_FAILED_EADDR; } return (__ea void *) (int) res; #endif } picolibc-1.7.4/newlib/libc/machine/spu/msync_ea.c000066400000000000000000000033071414576234500216730ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include "ea_internal.h" #include COMPAT_EA_ALIAS (msync_ea); int msync_ea (__ea void *start, size_ea_t length, int flags) { return msync_eaddr ((unsigned long long) (size_ea_t) start, length, flags); } picolibc-1.7.4/newlib/libc/machine/spu/munmap_ea.c000066400000000000000000000032601414576234500220350ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include "ea_internal.h" #include COMPAT_EA_ALIAS (munmap_ea); int munmap_ea (__ea void *start, size_ea_t length) { return munmap_eaddr ((unsigned long long) (size_ea_t) start, length); } picolibc-1.7.4/newlib/libc/machine/spu/perror.c000066400000000000000000000035231414576234500214060ustar00rootroot00000000000000/* Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include "c99ppe.h" #ifndef _REENT_ONLY typedef struct { const char* str; unsigned int pad0[ 3 ]; int arg_errno; unsigned int pad1[ 3 ]; } c99_perror_t; void perror (const char *s) { c99_perror_t arg; CHECK_STD_INIT(_REENT); arg.str = s; arg.arg_errno = errno; __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_PERROR, &arg); return; } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/posix_memalign_ea.c000066400000000000000000000043761414576234500235640ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include "ea_internal.h" #include typedef struct { unsigned int memptr; unsigned int pad0[3]; unsigned long long align; unsigned int pad1[2]; unsigned long long size; unsigned int pad2[2]; } memalign_ea_t; COMPAT_EA_ALIAS (posix_memalign_ea); int posix_memalign_ea (__ea void **memptr, size_ea_t align, size_ea_t size) { memalign_ea_t arg; /* * Note that memptr is an LS address that will store an EA address. So, * it fits in 32 bits. * * The assist call will store 32 or 64 bits, depending on whether it's * 32 or 64 bit ppu code. */ arg.memptr = (unsigned int) memptr; arg.align = (unsigned long long) align; arg.size = (unsigned long long) size; return __send_to_ppe (JSRE_LIBEA_SIGNALCODE, SPE_LIBEA_POSIX_MEMALIGN, &arg); } picolibc-1.7.4/newlib/libc/machine/spu/pread_ea.c000066400000000000000000000040111414576234500216260ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Ken Werner */ #include "ea_internal.h" #include #include #include "sys/linux_syscalls.h" extern void __cache_flush (void) __attribute__ ((weak)); COMPAT_EA_ALIAS (pread_ea); ssize_ea_t pread_ea (int fd, __ea void *buf, size_ea_t count, off_t offset) { struct spu_syscall_block s = { __NR_pread64, { fd, (size_ea_t) buf, count, offset, 0, 0} }; /* Flush cache only if the application really uses the software cache. */ if (__cache_flush) __cache_flush (); return __linux_syscall (&s); } picolibc-1.7.4/newlib/libc/machine/spu/printf.S000066400000000000000000000040011414576234500213470ustar00rootroot00000000000000/* Copyright (c) 2007, Toshiba Corporation All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of Toshiba nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "c99ppe.h" .text .align 4 GLOBL printf .type printf, @function printf: stqd $0, 16($sp) /* save caller address */ il $2, 1 /* number of fixed arguments */ brsl $0, __stack_reg_va /* save register to the stack frame */ il $3, SPE_C99_SIGNALCODE il $4, SPE_C99_VPRINTF ai $5, $sp, 16*2 /* data ($3 save address) */ brsl $0, __send_to_ppe il $2, 16*(SPE_STACK_REGS+2+2) a $sp, $sp, $2 lqd $0, 16($sp) /* load caller address */ bi $0 /* return to caller */ .size printf, .-printf picolibc-1.7.4/newlib/libc/machine/spu/putc.c000066400000000000000000000036211414576234500210470ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include <_ansi.h> #include #include "c99ppe.h" typedef struct { int ch; unsigned int pad0[ 3 ]; int fp; unsigned int pad1[ 3 ]; } c99_putc_t; #ifndef _REENT_ONLY int putc (c, fp) int c; register FILE *fp; { c99_putc_t args; CHECK_INIT(_REENT); args.ch = c; args.fp = fp->_fp; return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_PUTC, &args); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/putchar.c000066400000000000000000000032761414576234500215500ustar00rootroot00000000000000/* Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include "c99ppe.h" #undef putchar #ifndef _REENT_ONLY int putchar (c) int c; { CHECK_STD_INIT(_REENT); /* c gets overwritten before return */ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_PUTCHAR, &c); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/puts.c000066400000000000000000000032571414576234500210740ustar00rootroot00000000000000/* Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include "c99ppe.h" #ifndef _REENT_ONLY int puts (char const * s) { CHECK_STD_INIT(_REENT); /* The return value gets written over s */ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_PUTS, &s); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/pwrite_ea.c000066400000000000000000000040221414576234500220470ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Ken Werner */ #include "ea_internal.h" #include #include #include "sys/linux_syscalls.h" extern void __cache_flush (void) __attribute__ ((weak)); COMPAT_EA_ALIAS (pwrite_ea); ssize_ea_t pwrite_ea (int fd, __ea const void *buf, size_ea_t count, off_t offset) { struct spu_syscall_block s = { __NR_pwrite64, { fd, (size_ea_t) buf, count, offset, 0, 0} }; /* Flush cache only if the application really uses the software cache. */ if (__cache_flush) __cache_flush (); return __linux_syscall (&s); } picolibc-1.7.4/newlib/libc/machine/spu/read_ea.c000066400000000000000000000037611414576234500214610ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Ken Werner */ #include "ea_internal.h" #include #include #include "sys/linux_syscalls.h" extern void __cache_flush (void) __attribute__ ((weak)); COMPAT_EA_ALIAS (read_ea); ssize_ea_t read_ea (int fd, __ea void *buf, size_ea_t count) { struct spu_syscall_block s = { __NR_read, { fd, (size_ea_t) buf, count, 0, 0, 0} }; /* Flush cache only if the application really uses the software cache. */ if (__cache_flush) __cache_flush (); return __linux_syscall (&s); } picolibc-1.7.4/newlib/libc/machine/spu/readv_ea.c000066400000000000000000000043171414576234500216450ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Ken Werner */ #include "ea_internal.h" #include #include #include "sys/linux_syscalls.h" extern void __cache_flush (void) __attribute__ ((weak)); COMPAT_EA_ALIAS (readv_ea); ssize_ea_t readv_ea (int fd, struct iovec_ea *vector, int count) { #ifdef __EA32__ int i; #endif struct spu_syscall_block s = { __NR_readv, { fd, (size_ea_t) (__ea void *) vector, count, 0, 0, 0} }; #ifdef __EA32__ for (i = 0; i < count; ++i) { vector[i].__pad1 = 0x0; /* 32 bit padding */ vector[i].__pad2 = 0x0; /* 32 bit padding */ } #endif /* Flush cache only if the application really uses the software cache. */ if (__cache_flush) __cache_flush (); return __linux_syscall (&s); } picolibc-1.7.4/newlib/libc/machine/spu/realloc_ea.c000066400000000000000000000037131414576234500221640ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include"ea_internal.h" #include typedef struct { unsigned long long ptr; unsigned int pad0[2]; unsigned long long size; unsigned int pad1[2]; } realloc_ea_t; COMPAT_EA_ALIAS (realloc_ea); __ea void * realloc_ea (__ea void *ptr, size_ea_t size) { realloc_ea_t args; args.ptr = (unsigned long long) (size_ea_t) ptr; args.size = (unsigned long long) size; __send_to_ppe (JSRE_LIBEA_SIGNALCODE, SPE_LIBEA_REALLOC, &args); return ull_to_eavoid (args.ptr); } picolibc-1.7.4/newlib/libc/machine/spu/remove.c000066400000000000000000000033131414576234500213670ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include #include "c99ppe.h" int remove (filename) const char *filename; { /* The return value gets written over buf */ return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_REMOVE, &filename); } picolibc-1.7.4/newlib/libc/machine/spu/rename.c000066400000000000000000000035551414576234500213510ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include <_ansi.h> #include #include "c99ppe.h" typedef struct { const char *old; unsigned int pad0[ 3 ]; const char *new; unsigned int pad1[ 3 ]; } c99_rename_t; int rename (old, new) const char *old; const char *new; { c99_rename_t args; args.old = old; args.new = new; return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_RENAME, &args); } picolibc-1.7.4/newlib/libc/machine/spu/rewind.c000066400000000000000000000033431414576234500213650ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include #include "c99ppe.h" #ifndef _REENT_ONLY void rewind (FILE * fp) { int ret; CHECK_INIT(_REENT); ret = fp->_fp; __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_REWIND, &ret); return; } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/scanf.S000066400000000000000000000037731414576234500211560ustar00rootroot00000000000000/* Copyright (c) 2007, Toshiba Corporation All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of Toshiba nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "c99ppe.h" .text .align 4 GLOBL scanf .type scanf, @function scanf: stqd $0, 16($sp) /* save caller address */ il $2, 1 /* number of fixed arguments */ brsl $0, __stack_reg_va /* save register to the stack frame */ il $3, SPE_C99_SIGNALCODE il $4, SPE_C99_VSCANF ai $5, $sp, 16*2 /* data ($3 save address) */ brsl $0, __send_to_ppe il $2, 16*(SPE_STACK_REGS+2+2) a $sp, $sp, $2 lqd $0, 16($sp) /* load caller address */ bi $0 /* return to caller */ .size scanf, .-scanf picolibc-1.7.4/newlib/libc/machine/spu/setbuf.c000066400000000000000000000036451414576234500213720ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include <_ansi.h> #include #include "c99ppe.h" typedef struct { int fp; unsigned int pad0[ 3 ]; char *buf; unsigned int pad1[ 3 ]; } c99_setbuf_t; #ifndef _REENT_ONLY void setbuf (FILE *__restrict fp, char *__restrict buf) { c99_setbuf_t args; CHECK_INIT(_REENT); args.fp = fp->_fp; args.buf = buf; __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_SETBUF, &args); return; } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/setjmp.S000066400000000000000000000102161414576234500213540ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2005, 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Andreas Neukoetter (ti95neuk@de.ibm.com) */ /* int setjmp( jmp_buf env ); */ .text .align 2 .global setjmp .type setjmp, @function setjmp: stqd $80, 2*16($3) stqd $81, 3*16($3) stqd $82, 4*16($3) stqd $83, 5*16($3) stqd $84, 6*16($3) stqd $85, 7*16($3) stqd $86, 8*16($3) stqd $87, 9*16($3) stqd $88, 10*16($3) stqd $89, 11*16($3) stqd $90, 12*16($3) stqd $91, 13*16($3) stqd $92, 14*16($3) stqd $93, 15*16($3) stqd $94, 16*16($3) stqd $95, 17*16($3) stqd $96, 18*16($3) stqd $97, 19*16($3) stqd $98, 20*16($3) stqd $99, 21*16($3) stqd $100, 22*16($3) stqd $101, 23*16($3) stqd $102, 24*16($3) stqd $103, 25*16($3) stqd $104, 26*16($3) stqd $105, 27*16($3) stqd $106, 28*16($3) stqd $107, 29*16($3) stqd $108, 30*16($3) stqd $109, 31*16($3) stqd $110, 32*16($3) stqd $111, 33*16($3) stqd $112, 34*16($3) stqd $113, 35*16($3) stqd $114, 36*16($3) stqd $115, 37*16($3) stqd $116, 38*16($3) stqd $117, 39*16($3) stqd $118, 40*16($3) stqd $119, 41*16($3) hbr setjmp_ret, $0 lnop # pipe1 bubble added for instruction fetch stqd $120, 42*16($3) stqd $121, 43*16($3) stqd $122, 44*16($3) stqd $123, 45*16($3) stqd $124, 46*16($3) stqd $125, 47*16($3) stqd $126, 48*16($3) stqd $127, 49*16($3) stqd $0, 0*16($3) stqd $1, 1*16($3) il $3, 0 setjmp_ret: bi $0 .size setjmp, .-setjmp /* int longjmp( jmp_buf env, int val ); */ .text .align 2 .global longjmp .type longjmp, @function longjmp: lr $127, $1 lqd $0, 0*16($3) lqd $1, 1*16($3) sf $126, $127, $1 rotqbyi $126, $126, 12 fsmbi $127, 0x0F00 and $126, $126, $127 a $1, $1, $126 # restore all the non-volatile registers lqd $80, 2*16($3) lqd $81, 3*16($3) lqd $82, 4*16($3) lqd $83, 5*16($3) lqd $84, 6*16($3) lqd $85, 7*16($3) lqd $86, 8*16($3) lqd $87, 9*16($3) lqd $88, 10*16($3) lqd $89, 11*16($3) lqd $90, 12*16($3) lqd $91, 13*16($3) lqd $92, 14*16($3) lqd $93, 15*16($3) lqd $94, 16*16($3) lqd $95, 17*16($3) lqd $96, 18*16($3) lqd $97, 19*16($3) lqd $98, 20*16($3) lqd $99, 21*16($3) lqd $100, 22*16($3) lqd $101, 23*16($3) lqd $102, 24*16($3) lqd $103, 25*16($3) lqd $104, 26*16($3) lqd $105, 27*16($3) lqd $106, 28*16($3) lqd $107, 29*16($3) lqd $108, 30*16($3) lqd $109, 31*16($3) hbr longjmp_ret, $0 lqd $110, 32*16($3) lqd $111, 33*16($3) lqd $112, 34*16($3) lqd $113, 35*16($3) lqd $114, 36*16($3) lqd $115, 37*16($3) lqd $116, 38*16($3) lqd $117, 39*16($3) lqd $118, 40*16($3) lqd $119, 41*16($3) lqd $120, 42*16($3) lqd $121, 43*16($3) lqd $122, 44*16($3) lqd $123, 45*16($3) lqd $124, 46*16($3) lqd $125, 47*16($3) ceqi $5, $4, 0 lqd $126, 48*16($3) lqd $127, 49*16($3) sf $3, $5, $4 longjmp_ret: bi $0 .size longjmp, .-longjmp picolibc-1.7.4/newlib/libc/machine/spu/setvbuf.c000066400000000000000000000040371414576234500215540ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include <_ansi.h> #include #include "c99ppe.h" typedef struct { int fp; unsigned int pad0[ 3 ]; char *buf; unsigned int pad1[ 3 ]; int mode; unsigned int pad2[ 3 ]; size_t size; unsigned int pad3[ 3 ]; } c99_setvbuf_t; #ifndef _REENT_ONLY int setvbuf (FILE * fp, char *buf, int mode, size_t size) { c99_setvbuf_t args; CHECK_INIT(_REENT); args.fp = fp->_fp; args.buf = buf; args.mode = mode; args.size = size; return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_SETVBUF, &args); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/siprintf.S000066400000000000000000000030561414576234500217140ustar00rootroot00000000000000/* Copyright (c) 2007, Toshiba Corporation All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of Toshiba nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define sprintf siprintf #include "sprintf.S" picolibc-1.7.4/newlib/libc/machine/spu/siscanf.S000066400000000000000000000030531414576234500215010ustar00rootroot00000000000000/* Copyright (c) 2007, Toshiba Corporation All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of Toshiba nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define sscanf siscanf #include "sscanf.S" picolibc-1.7.4/newlib/libc/machine/spu/sleep.c000066400000000000000000000006731414576234500212100ustar00rootroot00000000000000/* Copyright (c) 2008 Patrick Mansfield */ /* Copied from libc/posix/sleep.c, removed the check for HAVE_NANOSLEEP */ /* Written 2000 by Werner Almesberger */ #include #include #include unsigned sleep(unsigned seconds) { struct timespec ts; ts.tv_sec = seconds; ts.tv_nsec = 0; if (!nanosleep(&ts,&ts)) return 0; if (errno == EINTR) return ts.tv_sec; return -1; } picolibc-1.7.4/newlib/libc/machine/spu/sniprintf.S000066400000000000000000000030611414576234500220660ustar00rootroot00000000000000/* Copyright (c) 2007, Toshiba Corporation All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of Toshiba nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define snprintf sniprintf #include "snprintf.S" picolibc-1.7.4/newlib/libc/machine/spu/snprintf.S000066400000000000000000000040151414576234500217150ustar00rootroot00000000000000/* Copyright (c) 2007, Toshiba Corporation All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of Toshiba nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "c99ppe.h" .text .align 4 GLOBL snprintf .type snprintf, @function snprintf: stqd $0, 16($sp) /* save caller address */ il $2, 3 /* number of fixed arguments */ brsl $0, __stack_reg_va /* save register to the stack frame */ il $3, SPE_C99_SIGNALCODE il $4, SPE_C99_VSNPRINTF ai $5, $sp, 16*2 /* data ($3 save address) */ brsl $0, __send_to_ppe il $2, 16*(SPE_STACK_REGS+2+2) a $sp, $sp, $2 lqd $0, 16($sp) /* load caller address */ bi $0 /* return to caller */ .size snprintf, .-snprintf picolibc-1.7.4/newlib/libc/machine/spu/sprintf.S000066400000000000000000000040071414576234500215400ustar00rootroot00000000000000/* Copyright (c) 2007, Toshiba Corporation All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of Toshiba nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "c99ppe.h" .text .align 4 GLOBL sprintf .type sprintf, @function sprintf: stqd $0, 16($sp) /* save caller address */ il $2, 2 /* number of fixed arguments */ brsl $0, __stack_reg_va /* save register to the stack frame */ il $3, SPE_C99_SIGNALCODE il $4, SPE_C99_VSPRINTF ai $5, $sp, 16*2 /* data ($3 save address) */ brsl $0, __send_to_ppe il $2, 16*(SPE_STACK_REGS+2+2) a $sp, $sp, $2 lqd $0, 16($sp) /* load caller address */ bi $0 /* return to caller */ .size sprintf, .-sprintf picolibc-1.7.4/newlib/libc/machine/spu/spu-gmon.c000066400000000000000000000275171414576234500216530ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Ken Werner */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* Magic cookie. */ #define GMON_MAGIC_COOKIE "gmon" /* Version number. */ #define GMON_VERSION 1 /* Fraction of text space to allocate for histogram counters. */ #define HISTFRACTION 4 /* Histogram counter type. */ #define HISTCOUNTER unsigned short /* Fraction of text space to allocate for "from" hash buckets. HASHFRACTION is based on the minimum number of bytes of separation between two subroutine call points in the object code. */ #define HASHFRACTION 4 /* Percent of text space to allocate for tostructs with a minimum. */ #define ARCDENSITY 3 /* Minimal amount of arcs. */ #define MINARCS 50 /* Rounding macros. */ #define ROUNDDOWN(x,y) (((x)/(y))*(y)) #define ROUNDUP(x,y) ((((x)+(y)-1)/(y))*(y)) /* Sampling rate in Hertz. */ #define SAMPLE_INTERVAL 100 /* Tag definitions for the gmon.out sub headers. */ #define GMON_TAG_TIME_HIST 0 #define GMON_TAG_CG_ARC 1 struct tostruct { uintptr_t selfpc; long count; unsigned short link; }; struct gmon_hdr { char cookie[4]; int32_t version; char spare[3 * 4]; }; struct gmon_hist_hdr { uintptr_t low_pc; uintptr_t high_pc; int32_t hist_size; int32_t prof_rate; char dimen[15]; char dimen_abbrev; } __attribute__ ((packed)); struct rawarc { uintptr_t raw_frompc; uintptr_t raw_selfpc; long raw_count; } __attribute__ ((packed)); /* start and end of the text section */ extern char _start; extern char _etext; /* EAR entry for the starting address of SPE executable image. */ extern const unsigned long long _EAR_; __asm__ (".section .toe,\"a\",@nobits\n\r" ".align 4\n\r" ".type _EAR_, @object\n\r" ".size _EAR_, 16\n" "_EAR_: .space 16\n" ".previous"); /* froms are indexing tos */ static __ea unsigned short *froms; static __ea struct tostruct *tos = 0; static long tolimit = 0; static uintptr_t s_lowpc = 0; static uintptr_t s_highpc = 0; static unsigned long s_textsize = 0; static int fd; static int hist_size; static int timer_id; void __sample (int id) { unsigned int pc; unsigned int pc_backup; off_t offset; unsigned short val; if (id != timer_id) return; /* Fetch program counter. */ pc = spu_read_srr0 () & ~3; pc_backup = pc; if (pc < s_lowpc || pc > s_highpc) return; pc -= (uintptr_t) & _start; offset = pc / HISTFRACTION * sizeof (HISTCOUNTER) + sizeof (struct gmon_hdr) + 1 + sizeof (struct gmon_hist_hdr); /* Read, increment and write the counter. */ if (pread (fd, &val, 2, offset) != 2) { perror ("can't read the histogram"); return; } if (val < USHRT_MAX) ++val; if (pwrite (fd, &val, 2, offset) != 2) { perror ("can't write the histogram"); } } static void write_histogram (int fd) { struct gmon_hist_hdr hist_hdr; u_char tag = GMON_TAG_TIME_HIST; hist_hdr.low_pc = s_lowpc; hist_hdr.high_pc = s_highpc; hist_hdr.hist_size = hist_size / sizeof (HISTCOUNTER); /* Amount of bins. */ hist_hdr.prof_rate = 100; /* Hertz. */ strncpy (hist_hdr.dimen, "seconds", sizeof (hist_hdr.dimen)); hist_hdr.dimen_abbrev = 's'; struct iovec iov[2] = { {&tag, sizeof (tag)}, {&hist_hdr, sizeof (struct gmon_hist_hdr)} }; if (writev (fd, iov, 2) != sizeof (struct gmon_hist_hdr) + sizeof (tag)) perror ("can't write the histogram header"); /* Skip the already written histogram data. */ lseek (fd, hist_size, SEEK_CUR); } static void write_callgraph (int fd) { int fromindex, endfrom; uintptr_t frompc; int toindex; struct rawarc rawarc; u_char tag = GMON_TAG_CG_ARC; endfrom = s_textsize / (HASHFRACTION * sizeof (*froms)); for (fromindex = 0; fromindex < endfrom; ++fromindex) { if (froms[fromindex]) { frompc = s_lowpc + (fromindex * HASHFRACTION * sizeof (*froms)); for (toindex = froms[fromindex]; toindex != 0; toindex = tos[toindex].link) { rawarc.raw_frompc = frompc; rawarc.raw_selfpc = tos[toindex].selfpc; rawarc.raw_count = tos[toindex].count; struct iovec iov[2] = { {&tag, sizeof (tag)}, {&rawarc, sizeof (struct rawarc)} }; if (writev (fd, iov, 2) != sizeof (tag) + sizeof (struct rawarc)) perror ("can't write the callgraph"); } } } } void __mcleanup (void) { struct gmon_hdr ghdr; /* Disable sampling. */ spu_timer_stop (timer_id); spu_timer_free (timer_id); spu_clock_stop (); /* Jump to the beginning of the gmon.out file. */ if (lseek (fd, 0, SEEK_SET) == -1) { perror ("Cannot seek to the beginning of the gmon.out file."); close (fd); return; } /* Write the gmon.out header. */ memset (&ghdr, '\0', sizeof (struct gmon_hdr)); memcpy (&ghdr.cookie[0], GMON_MAGIC_COOKIE, sizeof (ghdr.cookie)); ghdr.version = GMON_VERSION; if (write (fd, &ghdr, sizeof (struct gmon_hdr)) == -1) { perror ("Cannot write the gmon header to the gmon.out file."); close (fd); return; } /* Write the sampling buffer (histogram). */ write_histogram (fd); /* Write the call graph. */ write_callgraph (fd); close (fd); } void __monstartup (unsigned long long spu_id) { char filename[64]; s_lowpc = ROUNDDOWN ((uintptr_t) & _start, HISTFRACTION * sizeof (HISTCOUNTER)); s_highpc = ROUNDUP ((uintptr_t) & _etext, HISTFRACTION * sizeof (HISTCOUNTER)); s_textsize = s_highpc - s_lowpc; hist_size = s_textsize / HISTFRACTION * sizeof (HISTCOUNTER); /* Allocate froms. */ froms = malloc_ea (s_textsize / HASHFRACTION); if (froms == NULL) { fprintf (stderr, "Cannot allocate ea memory for the froms array.\n"); return; } memset_ea (froms, 0, s_textsize / HASHFRACTION); /* Determine tolimit. */ tolimit = s_textsize * ARCDENSITY / 100; if (tolimit < MINARCS) tolimit = MINARCS; /* Allocate tos. */ tos = malloc_ea (tolimit * sizeof (struct tostruct)); if (tos == NULL) { fprintf (stderr, "Cannot allocate ea memory for the tos array.\n"); return; } memset_ea (tos, 0, tolimit * sizeof (struct tostruct)); /* Determine the gmon.out file name. */ if (spu_id) snprintf (filename, sizeof (filename), "gmon-%d-%llu-%llu.out", linux_getpid (), spu_id, _EAR_); else strncpy (filename, "gmon.out", sizeof (filename)); /* Open the gmon.out file. */ fd = open (filename, O_RDWR | O_CREAT | O_TRUNC, 0644); if (fd == -1) { char errstr[128]; snprintf (errstr, sizeof (errstr), "Cannot open file: %s", filename); perror (errstr); return; } /* Truncate the file up to the size where the histogram fits in. */ if (ftruncate (fd, sizeof (struct gmon_hdr) + 1 + sizeof (struct gmon_hist_hdr) + hist_size) == -1) { char errstr[128]; snprintf (errstr, sizeof (errstr), "Cannot truncate file: %s", filename); perror (errstr); return; } /* Start the histogram sampler. */ spu_slih_register (MFC_DECREMENTER_EVENT, spu_clock_slih); timer_id = spu_timer_alloc (spu_timebase () / SAMPLE_INTERVAL, __sample); spu_clock_start (); spu_timer_start (timer_id); atexit (__mcleanup); } void __mcount_internal (uintptr_t frompc, uintptr_t selfpc) { /* sefpc: the address of the function just entered. */ /* frompc: the caller of the function just entered. */ unsigned int mach_stat; __ea unsigned short *frompcindex; unsigned short toindex; __ea struct tostruct *top; __ea struct tostruct *prevtop; /* Save current state and disable interrupts. */ mach_stat = spu_readch(SPU_RdMachStat); spu_idisable (); /* Sanity checks. */ if (frompc < s_lowpc || frompc > s_highpc) goto done; frompc -= s_lowpc; if (frompc > s_textsize) goto done; /* frompc indexes into the froms array the value at that position indexes into the tos array. */ frompcindex = &froms[(frompc) / (HASHFRACTION * sizeof (*froms))]; toindex = *frompcindex; if (toindex == 0) { /* First time traversing this arc link of tos[0] incremented. */ toindex = ++tos[0].link; /* Sanity check. */ if (toindex >= tolimit) { --tos[0].link; goto done; } /* Save the index into the froms array for the next time we traverse this arc. */ *frompcindex = toindex; top = &tos[toindex]; /* Sets the address of the function just entered. */ top->selfpc = selfpc; top->count = 1; top->link = 0; goto done; } /* toindex points to a tostruct */ top = &tos[toindex]; if (top->selfpc == selfpc) { /* The arc is at front of the chain. This is the most common case. */ top->count++; goto done; } /* top->selfpc != selfpc The pc we have got is not the pc we already stored (i.e. multiple function calls to the same fuction within a function. The arc is not at front of the chain. */ for (;;) { if (top->link == 0) { /* We are at the end of the chain and selfpc was not found. Thus we create a new tostruct and link it to the head of the chain. */ toindex = ++tos[0].link; /* Sanity check. */ if (toindex >= tolimit) { --tos[0].link; goto done; } top = &tos[toindex]; top->selfpc = selfpc; top->count = 1; /* Link back to the old tos entry. */ top->link = *frompcindex; /* Store a link to the new top in the froms array which makes the current tos head of the chain. */ *frompcindex = toindex; goto done; } else { /* Otherwise check the next arc on the chain. */ prevtop = top; top = &tos[top->link]; if (top->selfpc == selfpc) { /* selfpc matches; increment its count. */ top->count++; /* Move it to the head of the chain. */ /* Save previous tos index. */ toindex = prevtop->link; /* Link the former to to the current tos. */ prevtop->link = top->link; /* Link back to the old tos entry. */ top->link = *frompcindex; /* Store a link to the new top in the froms array which makes the current tos head of the chain. */ *frompcindex = toindex; goto done; } } } done: /* Enable interrupts if necessary. */ if (__builtin_expect (mach_stat & 1, 0)) spu_ienable (); } picolibc-1.7.4/newlib/libc/machine/spu/spu-mcount.S000066400000000000000000000071561414576234500221750ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Ken Werner */ /* _mcount extracts the address of the function just entered and the address of the caller of that function and then calls __mcount_internal. The prologue calls mcount without saving any registers. The return address is stored in $75. The _mcount function has to: - create a new stack frame - save registers $2 to $75 on the stack - copy the two addresses ($0 and $75) into the argument registers $3 and $4 - call __mcount_internal - restore registers - return to $75 */ /* The following two convenience macros assist in the coding of the saving and restoring the register. saveregs first, last Saves registers from first to the last. restoreregs first, last Restores registers from last down to first. Note: first must be less than or equal to last. */ .macro saveregs first, last stqd $\first, \first*16($SP) .if \last-\first saveregs "(\first+1)",\last .endif .endm .macro restoreregs first, last lqd $\last, \last*16($SP) .if \last-\first restoreregs \first,"(\last-1)" .endif .endm /* _mcount needs to be resident since the overlay manager uses the scratch registers too. */ .text .align 3 /* 8 byte alignment. */ .global _mcount .type _mcount, @function _mcount: stqd $lr, 16($sp) /* Save link register in the callers stack frame. */ stqd $lr, -1216($sp) /* Store back pointer. */ il $lr, -1216 /* Push a new stack frame. */ a $sp, $sp, $lr /* Frame size: 16 * (74 + 2) = 1216. */ /* Save registers $2 to $75 on the stack. */ saveregs 2, 75 /* Bring the __mcount_internal arguments in place. */ lqd $3, 1232($sp) /* frompc (the link register). */ ori $4, $75, 0 /* selfpc (the gcc prologue puts "brsl $75, _mcount" in front of every function). */ brsl $lr, __mcount_internal /* Restore register $2 to $75 from the stack. */ restoreregs 2, 75 il $lr, 1216 a $sp, $sp, $lr /* Pop the stack frame. */ lqd $lr, 16($sp) /* Restore link register. */ bi $75 /* Branch to the called function. */ picolibc-1.7.4/newlib/libc/machine/spu/spu_clock_stop.c000066400000000000000000000050141414576234500231210ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* SPU clock stop library service. */ #include #include "spu_timer_internal.h" /* Stops the SPU clock: * decrements clock start count * when count is zero, disables the decrementer event and stops the decrementer Returns 0 on success and <0 on failure: * SPU_CLOCK_ERR_NOT_RUNNING - clock was already off * SPU_CLOCK_ERR_TIMERS_ACTIVE - active timers exist * SPU_CLOCK_ERR_STILL_RUNNING - start count was decremented but clock was not stopped */ int spu_clock_stop (void) { if (__spu_clock_startcnt == 0) return SPU_CLOCK_ERR_NOT_RUNNING; if (__spu_clock_startcnt == 1 && (__spu_timers_active || __spu_timers_handled)) return SPU_CLOCK_ERR_TIMERS_ACTIVE; /* Don't stop clock if the clock is still in use. */ if (--__spu_clock_startcnt != 0) return SPU_CLOCK_ERR_STILL_RUNNING; /* Clock stopped, stop decrementer. */ __disable_spu_decr (); /* Clock is enabled on clock start - restore to original state (saved at start). */ if (__likely (!__spu_clock_state_was_enabled)) { spu_idisable (); } return 0; } picolibc-1.7.4/newlib/libc/machine/spu/spu_clock_svcs.c000066400000000000000000000062721414576234500231210ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* SPU clock start and read library services. */ #include #include "spu_timer_internal.h" /* The software managed timebase value. */ volatile uint64_t __spu_tb_val __attribute__ ((aligned (16))); /* Timeout value of the current interval. */ volatile int __spu_tb_timeout __attribute__ ((aligned (16))); /* Clock start count (clock is running if >0). */ volatile unsigned __spu_clock_startcnt __attribute__ ((aligned (16))); /* Saved interrupt state from clock_start. */ volatile unsigned __spu_clock_state_was_enabled; /* Initializes the software managed timebase, enables the decrementer event, starts the decrementer and enables interrupts. Must be called before clock or timer services can be used. Should only be called by base app/lib code (not from an interrupt/timer handler). Returns with interrupts ENABLED. */ void spu_clock_start (void) { /* Increment clock start and return if it was already running. */ if (++__spu_clock_startcnt > 1) return; __spu_clock_state_was_enabled = spu_readch (SPU_RdMachStat) & 0x1; spu_idisable (); __spu_tb_timeout = CLOCK_START_VALUE; __spu_tb_val = 0; /* Disable, write, enable the decrementer. */ __enable_spu_decr (__spu_tb_timeout, __disable_spu_decr ()); spu_ienable (); return; } /* Returns a monotonically increasing, 64-bit counter, in timebase units, relative to the last call to spu_clock_start(). */ uint64_t spu_clock_read (void) { int64_t time; unsigned was_enabled; /* Return 0 if clock is off. */ if (__spu_clock_startcnt == 0) return 0LL; was_enabled = spu_readch (SPU_RdMachStat) & 0x1; spu_idisable (); time = __spu_tb_val + (__spu_tb_timeout - spu_readch (SPU_RdDec)); if (__likely (was_enabled)) spu_ienable (); return time; } picolibc-1.7.4/newlib/libc/machine/spu/spu_timebase.c000066400000000000000000000035241414576234500225560ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include /* This function queries /proc/cpuinfo and returns the SPU time base in Hertz. */ unsigned int spu_timebase (void) { FILE *f; unsigned tb = 0; char line[64]; if ((f = fopen ("/proc/cpuinfo", "r"))) { while (fgets (line, sizeof (line), f)) if (sscanf (line, "timebase : %u", &tb)) break; fclose (f); } return (tb); } picolibc-1.7.4/newlib/libc/machine/spu/spu_timer_flih.S000066400000000000000000000141641414576234500230710ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* First-level interrupt handler. */ /* The following two convenience macros assist in the coding of the saving and restoring the volatile register starting from register 2 up to register 79. saveregs first, last Saves registers from first to the last. restoreregs first, last Restores registers from last down to first. Note: first must be less than or equal to last. */ .macro saveregs first, last stqd $\first, -(STACK_SKIP+\first)*16($SP) .if \last-\first saveregs "(\first+1)",\last .endif .endm .macro restoreregs first, last lqd $\last, (82-\last)*16($SP) .if \last-\first restoreregs \first,"(\last-1)" .endif .endm .section .interrupt,"ax" .align 3 .type spu_flih, @function spu_flih: /* Adjust the stack pointer to skip the maximum register save area (STACK_SKIP quadword registers) in case an interrupt occurred while executing a leaf function that used the stack area without actually allocating its own stack frame. */ .set STACK_SKIP, 125 /* Save the current link register on a new stack frame for the normal spu_flih() version of this file. */ stqd $0, -(STACK_SKIP+80)*16($SP) stqd $SP, -(STACK_SKIP+82)*16($SP) /* Save back chain pointer. */ saveregs 2, 39 il $2, -(STACK_SKIP+82)*16 /* Stack frame size. */ rdch $3, $SPU_RdEventStat /* Read event status. */ rdch $6, $SPU_RdEventMask /* Read event mask. */ hbrp /* Open a slot for instruction prefetch. */ saveregs 40,59 clz $4, $3 /* Get first slih index. */ stqd $6, -(STACK_SKIP+1)*16($SP) /* Save event mask on stack. */ saveregs 60, 67 /* Do not disable/ack the decrementer event here. The timer library manages this and expects it to be enabled upon entry to the SLIH. */ il $7, 0x20 andc $5, $3, $7 andc $7, $6, $5 /* Clear event bits. */ saveregs 68, 69 wrch $SPU_WrEventAck, $3 /* Ack events(s) - include decrementer event. */ wrch $SPU_WrEventMask, $7 /* Disable event(s) - exclude decrementer event. */ saveregs 70, 79 a $SP, $SP, $2 /* Instantiate flih stack frame. */ next_event: /* Fetch and dispatch the event handler for the first non-zero event. The dispatch handler is indexed into the __spu_slih_handlers array using the count of zero off the event status as an index. */ ila $5, __spu_slih_handlers /* Slih array offset. */ shli $4, $4, 2 /* Slih entry offset. */ lqx $5, $4, $5 /* Load slih address. */ rotqby $5, $5, $4 /* Rotate to word 0. */ bisl $0, $5 /* Branch to slih. */ clz $4, $3 /* Get next slih index. */ brnz $3, next_event lqd $2, 81*16($SP) /* Read event mask from stack. */ restoreregs 40, 79 wrch $SPU_WrEventMask, $2 /* Restore event mask. */ hbrp /* Open a slot for instruction pre-fetch. */ restoreregs 2, 39 /* Restore the link register from the new stack frame for the normal spu_flih() version of this file. */ lqd $0, 2*16($SP) lqd $SP, 0*16($SP) /* restore stack pointer from back chain ptr. */ irete /* Return from interrupt and re-enable interrupts. */ .size spu_flih, .-spu_flih /* spu_slih_handlers[] Here we initialize 33 default event handlers. The first entry in this array corresponds to the event handler for the event associated with bit 0 of Channel 0 (External Event Status). The 32nd entry in this array corresponds to bit 31 of Channel 0 (DMA Tag Status Update Event). The 33rd entry in this array is a special case entry to handle "phantom events" which occur when the channel count for Channel 0 is 1, causing an asynchronous SPU interrupt, but the value returned for a read of Channel 0 is 0. The index calculated into this array by spu_flih() for this case is 32, hence the 33rd entry. */ .data .align 4 .extern __spu_default_slih .global __spu_slih_handlers .type __spu_slih_handlers, @object __spu_slih_handlers: .rept 33 .long __spu_default_slih .endr .size __spu_slih_handlers, .-__spu_slih_handlers picolibc-1.7.4/newlib/libc/machine/spu/spu_timer_free.c000066400000000000000000000054321414576234500231060ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* SPU timer free library service. */ #include #include "spu_timer_internal.h" /* Frees an allocated timer. The timer must be in the stopped state for this to succeed. Maybe be called: * after allocated, before it's started * after it's been explicitly stopped Returns 0 on success, timer sucessfully deallocated. Returns <0 on failure * SPU_TIMER_INVALID_ID - id out of range * SPU_TIMER_ERR_FREE - id in free state * SPU_TIMER_ERR_ACTIVE - id in handled or active state */ int spu_timer_free (int id) { spu_timer_t *t, **pn; unsigned was_enabled; if (id < 0 || id >= SPU_TIMER_NTIMERS) return SPU_TIMER_ERR_INVALID_ID; if (__spu_timers[id].state == SPU_TIMER_STOPPED) { was_enabled = spu_readch (SPU_RdMachStat) & 0x1; spu_idisable (); t = __spu_timers_stopped; pn = &__spu_timers_stopped; while (t && (t->id != id)) { pn = &t->next; t = t->next; } #ifdef SPU_TIMER_DEBUG if (!t) ABORT (); #endif *pn = t->next; /* Add timer back to free list (mask). */ __spu_timers_avail |= (1 << (id)); __spu_timers[id].state = SPU_TIMER_FREE; if (__likely (was_enabled)) spu_ienable (); return 0; } /* Handle invalid states. */ return (__spu_timers[id].state == SPU_TIMER_FREE) ? SPU_TIMER_ERR_FREE : SPU_TIMER_ERR_ACTIVE; } picolibc-1.7.4/newlib/libc/machine/spu/spu_timer_internal.h000066400000000000000000000107351414576234500240100ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Internal definitions for SPU timer library. */ #ifndef _SPU_TIMER_INTERNAL_H_ #define _SPU_TIMER_INTERNAL_H_ #include #include #include #include #ifdef SPU_TIMER_DEBUG #include #include #endif /* The timer state tells which list its on. */ typedef enum spu_timer_state { SPU_TIMER_FREE = 0, SPU_TIMER_ACTIVE = 1, SPU_TIMER_HANDLED = 2, SPU_TIMER_STOPPED = 3 } spu_timer_state_t; typedef struct spu_timer { int tmout __attribute__ ((__aligned__ (16))); /* Time until expiration (tb). */ int intvl __attribute__ ((__aligned__ (16))); /* Interval. */ int id __attribute__ ((__aligned__ (16))); spu_timer_state_t state __attribute__ ((__aligned__ (16))); void (*func) (int) __attribute__ ((__aligned__ (16))); /* Handler. */ struct spu_timer *next __attribute__ ((__aligned__ (16))); } spu_timer_t; /* Max decrementer value. */ #define DECR_MAX 0xFFFFFFFFU /* Arbitrary non-triggering value. */ #define CLOCK_START_VALUE 0x7FFFFFFF #define MIN_INTVL 1 #define MAX_INTVL INT_MAX /* Timers within 15 tics will expire together. */ #define TIMER_INTERVAL_WINDOW 15 /* Disables the decrementer and returns the saved event mask for a subsequent call to __enable_spu_decr. The decrementer interrupt is acknowledged in the flih when the event is received, but is required also as part of the procedure to stop the decrementer. */ static inline unsigned __disable_spu_decr (void) { unsigned mask = spu_readch (SPU_RdEventMask); spu_writech (SPU_WrEventMask, mask & ~MFC_DECREMENTER_EVENT); spu_writech (SPU_WrEventAck, MFC_DECREMENTER_EVENT); spu_sync_c (); return mask; } /* Writes and enables the decrementer, along with the given event mask. */ static inline void __enable_spu_decr (int val, unsigned mask) { spu_writech (SPU_WrDec, (val)); spu_writech (SPU_WrEventMask, mask | MFC_DECREMENTER_EVENT); spu_sync_c (); } /* These are shared between modules but are not inlined, to save space. */ extern void __spu_timer_start (int id, int reset); extern void __reset_spu_decr (int val); /* The timers. */ extern spu_timer_t __spu_timers[]; /* Active timer list. */ extern spu_timer_t *__spu_timers_active; /* Stopped (allocated) timer list. */ extern spu_timer_t *__spu_timers_stopped; /* List of timers being handled. */ extern spu_timer_t *__spu_timers_handled; /* Bitmask of available timers. */ extern unsigned __spu_timers_avail; /* The software managed timebase value. */ extern volatile uint64_t __spu_tb_val; /* Timeout value of the current interval. */ extern volatile int __spu_tb_timeout; /* Clock start count (clock is running if >0). */ extern volatile unsigned __spu_clock_startcnt; /* Saved interrupt state from clock_start. */ extern volatile unsigned __spu_clock_state_was_enabled; #define __likely(_c) __builtin_expect((_c), 1) #define __unlikely(_c) __builtin_expect((_c), 0) #define ABORT() \ {\ fprintf(stderr, "Internal error, aborting: %s:%d\n", __FILE__, __LINE__);\ assert(0);\ } #endif picolibc-1.7.4/newlib/libc/machine/spu/spu_timer_slih.c000066400000000000000000000203521414576234500231220ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Second Level Interrupt handler and related services for SPU timers. */ #include "spu_timer_internal.h" /* Resets decrementer to the specified value. Also updates software timebase to account for the time between the last decrementer reset and now. There are two cases: * Called by application to start a new timer. * Called by spu_clock to active the next timer. In both cases, the amount of time is the current interval timeout minus the current decrementer value. */ void __reset_spu_decr (int val) { /* The interrupt occurs when the msb goes from 0 to 1 or when the decrementer goes from 0 to -1. To be precisely accurate we should set the timer to the intverval -1, unless the interval passed in is 0 in which case it should be left at 0. */ int enable_val = (__likely (val)) ? val - 1 : 0; /* Decrementer must be stopped before writing it - minimize the time stopped. */ unsigned mask = __disable_spu_decr (); /* Perform tb correction before resettting the decrementer. the corrected value is the current timeout value minus the current decrementer value. Occasionally the read returns 0 - a second read will clear this condition. */ spu_readch (SPU_RdDec); int decval = spu_readch (SPU_RdDec); /* Restart decrementer with next timeout val. */ __enable_spu_decr (enable_val, mask); /* Update the timebase values before enabling for interrupts. */ __spu_tb_val += __spu_tb_timeout - decval; __spu_tb_timeout = enable_val; } /* Update software timebase and timeout value for the 'next to expire' timer. Called when starting a new timer so the timer list will have timeouts relative to the current time. */ static inline void __update_spu_tb_val (void) { int elapsed = __spu_tb_timeout - spu_readch (SPU_RdDec); #ifdef SPU_TIMER_DEBUG if (elapsed < 0) ABORT (); #endif __spu_tb_val += elapsed; /* Adjust the timeout for the timer next to expire. Note this could cause the timeout to go negative, if it was just about to expire when we called spu_timer_start. This is OK, since this can happen any time interrupts are disabled. We just schedule an immediate timeout in this case. */ if (__spu_timers_active) { __spu_timers_active->tmout -= elapsed; if (__spu_timers_active->tmout < 0) __spu_timers_active->tmout = 0; } } /* Add an allocated timer to the active list. The active list is sorted by timeout value. The timer at the head of the list is the timer that will expire next. The rest of the timers have a timeout value that is relative to the timer ahead of it on the list. This relative value is determined here, when the timer is added to the active list. When its position in the list is found, the timer's timeout value is set to its interval minus the sum of all the timeout values ahead of it. The timeout value for the timer following the newly added timer is then adjusted to a new relative value. If the newly added timer is at the head of the list, the decrementer is reset. This function is called by SLIH to restart multiple timers (reset == 0) or by spu_timer_start() to start a single timer (reset == 1). */ void __spu_timer_start (int id, int reset) { spu_timer_t *t; spu_timer_t **pn; spu_timer_t *start = &__spu_timers[id]; unsigned tmout_time = 0; unsigned my_intvl = start->intvl; unsigned was_enabled = spu_readch (SPU_RdMachStat) & 0x1; spu_idisable (); t = __spu_timers_active; pn = &__spu_timers_active; /* If the active list is empty, just add the timer with the timeout set to the interval. Otherwise find the place in the list for the timer, setting its timeout to its interval minus the sum of timeouts ahead of it. */ start->state = SPU_TIMER_ACTIVE; if (__likely (!t)) { __spu_timers_active = start; start->next = NULL; start->tmout = my_intvl; } else { /* Update swtb and timeout val of the next timer, so all times are relative to now. */ if (reset) __update_spu_tb_val (); while (t && (my_intvl >= (tmout_time + t->tmout))) { tmout_time += t->tmout; pn = &t->next;; t = t->next; } start->next = t; start->tmout = my_intvl - tmout_time; *pn = start; /* Adjust timeout for timer after us. */ if (t) t->tmout -= start->tmout; } if (reset && (__spu_timers_active == start)) __reset_spu_decr (__spu_timers_active->tmout); if (__unlikely (was_enabled)) spu_ienable (); } /* SLIH for decrementer. Manages software timebase and timers. Called by SPU FLIH. Assumes decrementer is still running (event not yet acknowledeged). */ unsigned int spu_clock_slih (unsigned status) { int decr_reset_val; spu_timer_t *active, *handled; unsigned was_enabled = spu_readch (SPU_RdMachStat) & 0x1; status &= ~MFC_DECREMENTER_EVENT; spu_idisable (); /* The decrementer has now expired. The decrementer event was acknowledged in the FLIH but not disabled. The decrementer will continue to run while we're running the clock/timer handler. The software clock keeps running, and accounts for all the time spent running handlers. Add the current timeout to the software timebase and set the timeout to DECR_MAX. This allows the "clock read" code to continue to work while we're in here, and gives us the most possible time to finish before another underflow. */ __spu_tb_val += __spu_tb_timeout; __spu_tb_timeout = DECR_MAX; /* For all timers that have the current timeout value, move them from the active list to the handled list and call their handlers. Note that the handled/stopped lists may be manipulated by the handlers if they wish to stop/free the timers. Note that only the first expired timer will reflect the real timeout value; the rest of the timers that had the same timeout value will have a relative value of zero. */ if (__spu_timers_active) { __spu_timers_active->tmout = 0; while ((active = __spu_timers_active) && (active->tmout <= TIMER_INTERVAL_WINDOW)) { __spu_timers_active = active->next; active->next = __spu_timers_handled; __spu_timers_handled = active; active->state = SPU_TIMER_HANDLED; (*active->func) (active->id); } } /* put the handled timers back on the list and restart decrementer. */ while ((handled = __spu_timers_handled) != NULL) { __spu_timers_handled = handled->next; __spu_timer_start (handled->id, 0); } /* Reset the decrementer before returning. If we have any active timers, we set it to the timeout value for the timer at the head of the list, else the default clock value. */ decr_reset_val = __spu_timers_active ? __spu_timers_active->tmout : CLOCK_START_VALUE; __reset_spu_decr (decr_reset_val); if (__likely (was_enabled)) spu_ienable (); return status; } picolibc-1.7.4/newlib/libc/machine/spu/spu_timer_slih_reg.c000066400000000000000000000052241414576234500237600ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Services for SLIH registration. */ #include #include #define SPU_EVENT_ID(_mask) \ (spu_extract(spu_cntlz(spu_promote(_mask, 0)), 0)) typedef unsigned (*spu_slih_t) (unsigned); extern spu_slih_t __spu_slih_handlers[]; /* This function is called whenever an event occurs for which no second level event handler was registered. The default event handler does nothing and zeros the most significant event bit indicating that the event was processed (when in reality, it was discarded). */ unsigned __spu_default_slih (unsigned events) { unsigned int mse; mse = 0x80000000 >> SPU_EVENT_ID (events); events &= ~mse; return (events); } /* Registers a SPU second level interrupt handler for the events specified by mask. The event mask consists of a set of bits corresponding to the event status bits (see channel 0 description). A mask containing multiple 1 bits will set the second level event handler for each of the events. */ void spu_slih_register (unsigned mask, spu_slih_t func) { unsigned int id; while (mask) { id = SPU_EVENT_ID (mask); __spu_slih_handlers[id] = (func) ? func : __spu_default_slih; mask &= ~(0x80000000 >> id); } } picolibc-1.7.4/newlib/libc/machine/spu/spu_timer_stop.c000066400000000000000000000064171414576234500231560ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* SPU timer stop library service. */ #include #include "spu_timer_internal.h" /* Stop a timer. Moves it from either the active or handled list to the stopped list. Returns 0 on sucess, timer was successfully stopped. Returns <0 - Failure: * SPU_TIMER_ERR_NOT_ACTIVE - timer was not active * SPU_TIMER_ERR_INVALID_ID - invalid timer id * SPU_TIMER_ERR_NOCLOCK - spu clock is not running */ int spu_timer_stop (int id) { spu_timer_t *t, **pn; unsigned was_enabled; if (id < 0 || id >= SPU_TIMER_NTIMERS) return SPU_TIMER_ERR_INVALID_ID; if (__spu_clock_startcnt == 0) return SPU_TIMER_ERR_NOCLOCK; /* Free or stopped states. */ if (__spu_timers[id].state == SPU_TIMER_ACTIVE || __spu_timers[id].state == SPU_TIMER_HANDLED) { was_enabled = spu_readch (SPU_RdMachStat) & 0x1; spu_idisable (); /* Timer is on either active list or handled list. */ t = (__spu_timers[id].state == SPU_TIMER_ACTIVE) ? __spu_timers_active : __spu_timers_handled; pn = (__spu_timers[id].state == SPU_TIMER_ACTIVE) ? &__spu_timers_active : &__spu_timers_handled; while (t && t->id != id) { pn = &t->next; t = t->next; } #ifdef SPU_TIMER_DEBUG if (!t) ABORT (); /* Internal error. */ #endif /* Fix timeout of next timer and decrementer if we were at the head of the active list. */ if (t->next) { t->next->tmout += t->tmout; if (__spu_timers_active == t) __reset_spu_decr (t->next->tmout); } else __reset_spu_decr (CLOCK_START_VALUE); *pn = t->next; /* Update this elements to pointer. */ t->next = __spu_timers_stopped; __spu_timers_stopped = t; __spu_timers[id].state = SPU_TIMER_STOPPED; if (__likely (was_enabled)) spu_ienable (); return 0; } return SPU_TIMER_ERR_NOT_ACTIVE; } picolibc-1.7.4/newlib/libc/machine/spu/spu_timer_svcs.c000066400000000000000000000076601414576234500231500ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* SPU timer start and alloc library services. */ #include #include "spu_timer_internal.h" /* The timers. */ spu_timer_t __spu_timers[SPU_TIMER_NTIMERS] __attribute__ ((aligned (16))); /* Active timer list. */ spu_timer_t *__spu_timers_active; /* Stopped (allocated) timer list. */ spu_timer_t *__spu_timers_stopped; /* List of timers being handled. */ spu_timer_t *__spu_timers_handled; /* Bitmask of available timers. */ unsigned __spu_timers_avail = ((1 << (SPU_TIMER_NTIMERS - 1)) + ((1 << (SPU_TIMER_NTIMERS - 1)) - 1)); /* Allocates an SPU interval timer and returns the timer ID. Must be called before starting a timer. interval specifies the expiration interval in timebase units. func specifies the function pointer to expiration handler. Returns the timer ID on success or <0 on Failure: * SPU_TIMER_ERR_NONE_FREE - no free timers to allocate * SPU_TIMER_ERR_INVALID_PARM - invalid parm */ int spu_timer_alloc (int interval, void (*func) (int)) { unsigned was_enabled; int id; if (interval < MIN_INTVL || interval > MAX_INTVL || func == NULL) return SPU_TIMER_ERR_INVALID_PARM; was_enabled = spu_readch (SPU_RdMachStat) & 0x1; /* Get id of next available timer. */ id = spu_extract ((spu_sub ((unsigned) 31, spu_cntlz (spu_promote (__spu_timers_avail, 0)))), 0); /* No timers avail. */ if (id == -1) return SPU_TIMER_ERR_NONE_FREE; /* Higher order bits represent lower timer ids. */ __spu_timers_avail &= ~(1 << (id)); id = (SPU_TIMER_NTIMERS - 1) - id; /* Initialize timer and put it on stopped list. */ (__spu_timers + id)->func = func; (__spu_timers + id)->intvl = interval; (__spu_timers + id)->id = id; (__spu_timers + id)->state = SPU_TIMER_STOPPED; spu_idisable (); (__spu_timers + id)->next = __spu_timers_stopped; __spu_timers_stopped = &__spu_timers[id]; if (__likely (was_enabled)) spu_ienable (); return id; } /* External interface for starting a timer. See description of __spu_timer_start(). Returns 0 on success and <0 on failure: * SPU_TIMER_ERR_INVALID_ID - invalid id * SPU_TIMER_ERR_NOCLOCK - clock is off * SPU_TIMER_ERR_NOT_STOPPED - timer not in stopped state */ int spu_timer_start (int id) { if (id < 0 || id >= SPU_TIMER_NTIMERS) return SPU_TIMER_ERR_INVALID_ID; if (__spu_clock_startcnt == 0) return SPU_TIMER_ERR_NOCLOCK; if (__spu_timers[id].state != SPU_TIMER_STOPPED) return SPU_TIMER_ERR_NOT_STOPPED; __spu_timer_start (id, 1); return 0; } picolibc-1.7.4/newlib/libc/machine/spu/sscanf.S000066400000000000000000000040011414576234500213220ustar00rootroot00000000000000/* Copyright (c) 2007, Toshiba Corporation All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of Toshiba nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "c99ppe.h" .text .align 4 GLOBL sscanf .type sscanf, @function sscanf: stqd $0, 16($sp) /* save caller address */ il $2, 2 /* number of fixed arguments */ brsl $0, __stack_reg_va /* save register to the stack frame */ il $3, SPE_C99_SIGNALCODE il $4, SPE_C99_VSSCANF ai $5, $sp, 16*2 /* data ($3 save address) */ brsl $0, __send_to_ppe il $2, 16*(SPE_STACK_REGS+2+2) a $sp, $sp, $2 lqd $0, 16($sp) /* load caller address */ bi $0 /* return to caller */ .size sscanf, .-sscanf picolibc-1.7.4/newlib/libc/machine/spu/stack_reg_va.S000066400000000000000000000132711414576234500225060ustar00rootroot00000000000000/* Copyright (c) 2007, Toshiba Corporation All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of Toshiba nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * This file contains code use to construct a PIC, spu side, syscall * function with variable parameters in accordance with the CBE ABI. * * This function is equivalent to constructing a va_list structure and * calling the va_list form of the function. Therefore, for example, * a printf function stack frame will look like this: * * | Stack | high memory * | Parms | * | | * |------------| * | Link Reg | * |------------| * | Back Chain |<-----. <---- input SP * |------------| | * | Reg 74 | | * |------------| | * | Reg 73 | | * |------------| | * // ... // | * |------------| | * | Reg 5 | | * |------------| | * | Reg 4 |<--. | * |------------| | | * va_list.| call_stack |------' * |------------| | * va_list.| next_arg |---' * |------------| * | format (r3)| <---- start of parameters * |------------| |------------| * | stack | | | * | code | |(Back Chain)| <---- output SP * | 1-3 qwords | <---- code_ptr `------------' * `------------' * low memory * * This was written in assembly so that it is smaller than what would * be produced by using va_start. */ #include "c99ppe.h" #define parms $2 /* Number of fixed arguments */ #define offset $67 #define flag $68 #define regdec $69 #define link $70 #define code_ptr $71 #define ptr $72 #define inst $73 #define tmp $74 .text .global __stack_reg_va .type __stack_reg_va, @function __stack_reg_va: /* Save registers 69-74 explicitly so that we have some * working registers. */ stqd $74, 16*(-1)($sp) stqd $73, 16*(-2)($sp) stqd $72, 16*(-3)($sp) stqd $71, 16*(-4)($sp) stqd $70, 16*(-5)($sp) stqd $69, 16*(-6)($sp) /* Construct self-modifying stack code that saves the remaining * volatile registers onto the stack. */ il regdec, -1 /* for decrement register value in save instruction */ shlqbyi regdec, regdec, 12 il tmp, -(SPE_STACK_REGS+2+3)*16 a code_ptr, $sp, tmp lqr tmp, save_regs_1 /* store stack code */ stqd tmp, 0(code_ptr) lqr inst, save_regs_2 ai ptr, $sp, 16*(-6) sync bisl link, code_ptr /* branch to the constructed stack code */ /* Adjust pointer so that it points to the first variable * argument on the stack. */ ai offset, parms, -1 /* offset = parms - 1 */ mpyi offset, offset, 16 /* offset = offset * 16 */ a ptr, ptr, offset /* ptr = ptr + offset */ /* Store the va_list to the parameter list. */ stqd $sp, 16*(-1)(ptr) stqd ptr, 16*(-2)(ptr) /* Make $3 store address. */ ai offset, parms, 2 /* offset = parms + 2 */ mpyi offset, offset, -16 /* offset = offset * -16 */ a ptr, ptr, offset /* ptr = ptr + offset */ /* Save all the fixed (non-variable arguments on the stack) */ ceqi flag, parms, 0x01 /* if(parms==1) flag=0xFFFFFFFF */ brnz flag, reg_3 /* if(flag!=0) jump */ ceqi flag, parms, 0x02 /* if(parms==2) flag=0xFFFFFFFF */ brnz flag, reg_4 /* if(flag!=0) jump */ stqd $5, 16*2(ptr) reg_4: stqd $4, 16*1(ptr) reg_3: stqd $3, 0(ptr) il $3, -16*(SPE_STACK_REGS+2+2) stqx $sp, $3, $sp /* save back chain */ a $sp, $sp, $3 bi $0 /* return to caller */ /***************************** stack code *********************************************/ /* The following code is copied into the stack for re-entract, * self-modified, code execution. This code copies the volatile * registers into a va_list parameter array. */ .balignl 16, 0 save_regs_1: stqd inst, 16(code_ptr) /* store instruction */ sync a inst, inst, regdec /* decrement register number in the instruction */ ceqbi tmp, inst, 3 /* if (reg-num == 3) tmp = 0x000000FF 000..0 */ save_regs_2: stqd $68, -16(ptr) ai ptr, ptr, -16 brz tmp, save_regs_1 /* if (tmp == 0) jump */ bi link /* finish to make va_list */ .size __stack_reg_va, .-__stack_reg_va picolibc-1.7.4/newlib/libc/machine/spu/stdio.c000066400000000000000000000044441414576234500212220ustar00rootroot00000000000000/* Copyright (C) 2007 Sony Computer Entertainment Inc. Copyright 2007 Sony Corp. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Kazunori Asayama */ #include #include "c99ppe.h" static FILE __fp[SPE_FOPEN_MAX]; FILE * __sfp (struct _reent *d) { int i; for (i = 0; i < SPE_FOPEN_MAX; i++) { if (!__fp[i]._fp) { return &__fp[i]; } } __errno_r(d) = EMFILE; return NULL; } static void __cleanup (struct _reent *s) { int i; for (i = 0; i < SPE_FOPEN_MAX; i++) { if (__fp[i]._fp) { fclose(&__fp[i]); } } } void __sinit (struct _reent *s) { s->__cleanup = __cleanup; s->__sdidinit = 1; s->_stdin = &s->__sf[0]; s->_stdin->_fp = SPE_STDIN; s->_stdout = &s->__sf[1]; s->_stdout->_fp = SPE_STDOUT; s->_stderr = &s->__sf[2]; s->_stderr->_fp = SPE_STDERR; } void __check_init (void) { CHECK_INIT(_REENT); } picolibc-1.7.4/newlib/libc/machine/spu/straddr.h000066400000000000000000000052761414576234500215540ustar00rootroot00000000000000/* (C) Copyright 2008 International Business Machines Corporation, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include "vec_literal.h" /* * Supply the inline _straddr for use by strncpy and strncat. * * _straddr: search the string s, and return the address of the first byte * containing zero. */ static inline char *_straddr(const char *s) { unsigned int cnt, cmp, skip, mask; vec_uchar16 *ptr, data; /* * Compensate for unaligned strings. */ ptr = (vec_uchar16 *)s; /* implicit (s & ~0xf) */ skip = (unsigned int)(ptr) & 0xf; /* * skip the first skip bytes starting at (s & ~0xf). */ mask = 0xFFFF >> skip; data = *ptr; cmp = spu_extract(spu_gather(spu_cmpeq(data, 0)), 0); cmp &= mask; cnt = spu_extract(spu_cntlz(spu_promote(cmp, 0)), 0); while (cnt == 32) { data = *++ptr; cnt = spu_extract(spu_cntlz(spu_gather(spu_cmpeq(data, 0))), 0); /* * The first 16 bits for gather on a byte vector are zero, so if cnt * is 32, none of the 16 bytes in data was zero. And, there are (cnt - * 16) non-zero bytes in data. */ } /* * The first non-zero byte is at ptr aligned down plus the number of * non-zero bytes seen. */ return ((char*) (((int) ptr & ~0xf) + (cnt - 16))); } picolibc-1.7.4/newlib/libc/machine/spu/strcat.c000066400000000000000000000040011414576234500213650ustar00rootroot00000000000000/* (C) Copyright 2008 International Business Machines Corporation, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include "straddr.h" #include "strcpy.h" /* * Appends the string pointed to by src (up to and including the /0 * character) to the array pointed to by dest overwriting the * /0 character at the end of dest. The strings may not overlap and * the dest string must have enough space for the result. */ char *strcat(char * __restrict__ dest, const char * __restrict__ src) { _strncpy(_straddr(dest), src, 0, 0, 0); return dest; } picolibc-1.7.4/newlib/libc/machine/spu/strcat_ea.c000066400000000000000000000037721414576234500220500ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include "ea_internal.h" #include COMPAT_EA_ALIAS (strcat_ea); /* * Maybe not the fastest thing ever since it reads through the data once on * strlen and once on memcpy, but it should work. */ __ea char * strcat_ea (__ea char *dest, __ea const char *src) { size_ea_t length_src; size_ea_t length_dest; __ea char *new_dest; length_src = strlen_ea (src); length_dest = strlen_ea (dest); new_dest = dest + length_dest; memcpy_ea ((__ea void *) new_dest, (__ea void *) src, length_src + 1); return dest; } picolibc-1.7.4/newlib/libc/machine/spu/strchr.c000066400000000000000000000056221414576234500214040ustar00rootroot00000000000000/* (C) Copyright 2001,2006, International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include /* Scans the string pointed to by s for the character c and * returns a pointer to the first occurance of c. If * c is not found, then NULL is returned. */ char *strchr(const char *s, int c) { unsigned int cmp, skip; vec_uchar16 *ptr, data, vc; vec_uint4 cmp_c, cmp_0; vec_uint4 result; vec_uint4 mask; vec_uint4 one = spu_splats(0xffffU); /* Scan memory array a quadword at a time. Skip leading * mis-aligned bytes. */ ptr = (vec_uchar16 *)s; skip = (unsigned int)(ptr) & 15; mask = spu_rlmask(one, -skip); vc = spu_splats((unsigned char)(c)); data = *ptr++; cmp_c = spu_and(spu_gather(spu_cmpeq(data, vc)), mask); cmp_0 = spu_and(spu_gather(spu_cmpeq(data, 0)), mask); cmp = spu_extract(spu_or(cmp_c, cmp_0), 0); while (cmp == 0) { data = *ptr++; cmp_c = spu_gather(spu_cmpeq(data, vc)); cmp_0 = spu_gather(spu_cmpeq(data, 0)); cmp = spu_extract(spu_or(cmp_c, cmp_0), 0); } /* Compute the location of the first character. If it is beyond * the end of the string, then return NULL. */ result = spu_add(spu_promote((unsigned int)ptr - (skip+32), 0), spu_cntlz(spu_promote(cmp, 0))); result = spu_andc(result, spu_cmpgt(cmp_0, cmp_c)); return ((char *)spu_extract(result, 0)); } picolibc-1.7.4/newlib/libc/machine/spu/strchr_ea.c000066400000000000000000000033211414576234500220430ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include "ea_internal.h" #include #include #include COMPAT_EA_ALIAS (strchr_ea); __ea char * strchr_ea (__ea const char *s, int c) { size_ea_t size; size = strlen_ea (s); return (char *) memchr_ea (s, c, size); } picolibc-1.7.4/newlib/libc/machine/spu/strcmp.c000066400000000000000000000067161414576234500214140ustar00rootroot00000000000000/* (C) Copyright 2001,2006, International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include "vec_literal.h" /* Compare the two strings s1 and s2. Return an integer less than, equal * to, or greater than zero if s1 is found, respectively, to be less than, * to match, or be greater than s2. */ int strcmp(const char *s1, const char *s2) { unsigned int offset1, offset2; vec_uint4 gt_v, lt_v, mask_v; vec_uint4 cnt1_v, cnt2_v; vec_uint4 end1_v, end2_v, end_v, neq_v; vec_uchar16 shuffle1, shuffle2; vec_uchar16 data1A, data1B, data1, data2A, data2B, data2; vec_uchar16 *ptr1, *ptr2; ptr1 = (vec_uchar16 *)s1; ptr2 = (vec_uchar16 *)s2; offset1 = (unsigned int)(ptr1) & 15; offset2 = (unsigned int)(ptr2) & 15; shuffle1 = (vec_uchar16)spu_add((vec_uint4)spu_splats((unsigned char)offset1), VEC_LITERAL(vec_uint4, 0x00010203, 0x04050607, 0x08090A0B, 0x0C0D0E0F)); shuffle2 = (vec_uchar16)spu_add((vec_uint4)spu_splats((unsigned char)offset2), VEC_LITERAL(vec_uint4, 0x00010203, 0x04050607, 0x08090A0B, 0x0C0D0E0F)); data1A = *ptr1++; data2A = *ptr2++; do { data1B = *ptr1++; data2B = *ptr2++; data1 = spu_shuffle(data1A, data1B, shuffle1); data2 = spu_shuffle(data2A, data2B, shuffle2); data1A = data1B; data2A = data2B; neq_v = spu_gather(spu_xor(spu_cmpeq(data1, data2), -1)); end1_v = spu_gather(spu_cmpeq(data1, 0)); end2_v = spu_gather(spu_cmpeq(data2, 0)); end_v = spu_or(end1_v, end2_v), 0; } while (spu_extract(spu_or(end_v, neq_v), 0) == 0); cnt1_v = spu_cntlz(end1_v); cnt2_v = spu_cntlz(end2_v); gt_v = spu_gather(spu_cmpgt(data1, data2)); lt_v = spu_gather(spu_cmpgt(data2, data1)); mask_v = spu_and(spu_cmpeq(cnt1_v, cnt2_v), spu_cmpeq(spu_rlmask(neq_v, (vec_int4)spu_add((vec_uint4)cnt1_v, -32)), 0)); gt_v = spu_sub(-1, spu_sl(spu_cmpgt(gt_v, lt_v), 1)); return (spu_extract(spu_andc(gt_v, mask_v), 0)); } picolibc-1.7.4/newlib/libc/machine/spu/strcmp_ea.c000066400000000000000000000053651414576234500220600ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include #include #include "ea_internal.h" #include "strncmp.h" #include COMPAT_EA_ALIAS (strcmp_ea); /* * It's not clear what is returned if both strings are equal to * each other up to the length of the shorter string. */ int strcmp_ea (__ea char *s1, __ea const char *s2) { __ea char *curr_s1 = (__ea char *) s1; __ea char *curr_s2 = (__ea char *) s2; void *l_s1; void *l_s2; size_ea_t s2_n; size_ea_t s1_n; int min; int ret; vec_uint4 end_v; while (1) { l_s2 = __cache_fetch (curr_s2); l_s1 = __cache_fetch (curr_s1); /* * Use the smaller of the the space left in s2 cacheline or * the space left in the s1 cacheline. */ s2_n = ROUND_UP_NEXT_128 ((size_ea_t) curr_s2) - (size_ea_t) curr_s2; s1_n = ROUND_UP_NEXT_128 ((size_ea_t) curr_s1) - (size_ea_t) curr_s1; min = MIN (s2_n, s1_n); ret = _strncmp_internal (l_s1, l_s2, min, &end_v, 1); /* * Only the first slot of end_v is set. */ if (ret || spu_extract (end_v, 0)) /* * If any NUL values were seen (end_v values of zero) we still have * to return ret, as it might not be zero. */ return ret; curr_s1 += min; curr_s2 += min; } } picolibc-1.7.4/newlib/libc/machine/spu/strcpy.c000066400000000000000000000036001414576234500214150ustar00rootroot00000000000000/* (C) Copyright 2008 International Business Machines Corporation, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include "strcpy.h" /* * Copy the string pointed to by src (up to and including the /0 * character) into the array pointed to by dest. If copy between * two arrays that overlap, then behavior is undefined. */ char * strcpy(char * __restrict__ dest, const char * __restrict__ src) { return _strncpy(dest, src, 0, 0, 0); } picolibc-1.7.4/newlib/libc/machine/spu/strcpy.h000066400000000000000000000147011414576234500214260ustar00rootroot00000000000000/* (C) Copyright 2008 International Business Machines Corporation, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include "vec_literal.h" #include /* * Supply an inline _strncpy for strcpy/cat and strncpy/cat. Relies on * checklen and lastzero code being optimized out when they are constant * zero values. */ static inline void * _strncpy(char * __restrict__ dest, const char * __restrict__ src, size_t maxlen, int checklen, int lastzero) { int adjust, offset, soffset, doffset, shift; vec_uchar16 *vsrc, *vdest; vec_uchar16 sdata1, sdata2, sdata, shuffle; vec_uchar16 mask1, maskzero, cmp0; vec_uint4 nonzeroes, gathered_cmp, vtmp, vtmp2; vec_uint4 curlen; /* assumes size_t is 4 bytes */ const vec_uint4 val31 = { 31, 31, 31, 31 }; const vec_uint4 val_0123 = { 0x00010203, 0x04050607, 0x08090A0B, 0x0C0D0E0F }; const vec_uchar16 all_ones = { 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff }; vsrc = (vec_uchar16 *) src; vdest = (vec_uchar16 *) dest; soffset = (int) src & 15; doffset = (int) dest & 15; if (checklen) { /* * Set curlen so it is the number of bytes we would copy if starting * from vdest & ~0xf. * * curlen could probably be replaced by comparing vdest plus some * offset to dest + maxlen, that would help mainly in the while loop * but would lose only one instruction (the curlen -= 16). */ curlen = spu_splats((unsigned int) (maxlen + doffset)); } /* * Setup a shuffle pattern to align the source string with the * alignment of the destination string. */ vtmp = spu_cmpgt(spu_promote(doffset, 0), spu_promote(soffset, 0)); adjust = spu_extract(vtmp, 0); offset = soffset - doffset; offset += adjust & 16; shuffle = spu_splats((unsigned char) offset); shuffle = (vec_uchar16) spu_add((vec_uint4) shuffle, val_0123); vsrc += adjust; sdata1 = *vsrc++; sdata2 = *vsrc++; sdata = spu_shuffle(sdata1, sdata2, shuffle); /* * mask out leading bytes */ mask1 = spu_rlmaskqwbyte(all_ones, -doffset); cmp0 = spu_and(mask1, spu_cmpeq(sdata, 0)); nonzeroes = spu_cntlz(spu_gather(cmp0)); /* * First element of nonzeroes - 15 is the number of leading non-zero * bytes plus 1 for the zero byte. */ if (checklen) { vtmp = spu_add(curlen, 15); vtmp2 = spu_cmpgt(nonzeroes, vtmp); nonzeroes = spu_sel(nonzeroes, vtmp, vtmp2); } vtmp = spu_cmpgt(nonzeroes, val31); /* * Note: using immediate (constant 31) vs a vector value (val31) does * not give different results, and we have to have a vector val31 for * the spu_sel below, so use val31 everywhere. */ vtmp = spu_sel(nonzeroes, val31, vtmp); /* * So vtmp is now min(nonzeroes, 31), the number of bytes + 16 that we * want to copy from the first 16 bytes of the source. */ if (checklen) { curlen = spu_sub(vtmp, curlen); curlen = spu_sub(15, curlen); } /* * We want a right shift 0xff with fill by ones of (vtmp - 15) bytes, but * that doesn't exist so use spu_slqwbyte and vtmp all ones left by * (31 - vtmp). Note: this can also use spu_rlqwbytebc with spu_rlqw. */ shift = spu_extract(spu_sub(val31, vtmp), 0); maskzero = spu_slqwbyte(all_ones, shift); maskzero = spu_and(mask1, maskzero); *vdest = spu_sel(*vdest, sdata, maskzero); vtmp = spu_cmpgt(nonzeroes, val31); if (checklen) { vtmp2 = spu_cmpgt(curlen, 0); vtmp = spu_and(vtmp, vtmp2); } if (spu_extract(vtmp, 0)) { sdata1 = sdata2; sdata2 = *vsrc++; sdata = spu_shuffle(sdata1, sdata2, shuffle); cmp0 = spu_cmpeq(sdata, 0); gathered_cmp = spu_gather(cmp0); /* * Copy 16 bytes at a time. */ while ((spu_extract(gathered_cmp, 0) == 0) && (!checklen || (spu_extract(curlen, 0) > 15))) { if (checklen) curlen = spu_add(curlen, -16); *++vdest = sdata; sdata1 = sdata2; sdata2 = *vsrc++; sdata = spu_shuffle(sdata1, sdata2, shuffle); cmp0 = spu_cmpeq(sdata, 0); gathered_cmp = spu_gather(cmp0); } /* * Copy 0 to 15 trailing bytes, either up to the smaller of curlen or * the number of non-zero bytes. */ nonzeroes = spu_cntlz(gathered_cmp); if (checklen) { vtmp = spu_add(curlen, 15); vtmp2 = spu_cmpgt(nonzeroes, vtmp); nonzeroes = spu_sel(nonzeroes, vtmp, vtmp2); curlen = spu_sub(nonzeroes, curlen); curlen = spu_sub(15, curlen); } shift = spu_extract(spu_sub(val31, nonzeroes), 0); maskzero = spu_slqwbyte(all_ones, shift); ++vdest; *vdest = spu_sel(*vdest, sdata, maskzero); } if (checklen && lastzero) { /* * For strncat. */ dest[maxlen - spu_extract(curlen, 0)] = '\0'; } /* Pad null bytes if the length of the "src" is less than "n" (strncpy). */ if (checklen && !lastzero && spu_extract(curlen, 0)) memset(dest + maxlen - spu_extract(curlen, 0), 0, spu_extract(curlen, 0)); return (dest); } picolibc-1.7.4/newlib/libc/machine/spu/strcpy_ea.c000066400000000000000000000035221414576234500220650ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include "ea_internal.h" #include COMPAT_EA_ALIAS (strcpy_ea); /* * Not the fastest since it reads through the data once on * strlen and once on memcpy. */ __ea char * strcpy_ea (__ea char *dest, __ea const char *src) { size_ea_t length; length = strlen_ea (src); memcpy_ea ((__ea void *) dest, (__ea void *) src, length + 1); return dest; } picolibc-1.7.4/newlib/libc/machine/spu/strcspn.c000066400000000000000000000065121414576234500215720ustar00rootroot00000000000000/* (C) Copyright 2001,2006, International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include "vec_literal.h" /* Computes the length of the maximum initial segement * of the string pointed to by s1 which consists entirely * of characters not contained in the string pointed to by s2. */ size_t strcspn(const char *s1, const char *s2) { size_t len, cnt; unsigned int offset; vec_uchar16 shuffle, match, initial_splat, splat; vec_uchar16 data1, data2, dataA, dataB, *ptr1, *ptr2; ptr1 = (vec_uchar16 *)s1; offset = (unsigned int)(s1) & 15; shuffle = (vec_uchar16)spu_add((vec_uint4)spu_splats((unsigned char) offset), VEC_LITERAL(vec_uint4, 0x0010203, 0x04050607, 0x08090A0B, 0x0C0D0E0F)); len = 0; dataA = *ptr1++; dataB = *ptr1++; initial_splat = spu_splats((unsigned char)((unsigned int)(s2) & 0xF)); /* For each quadword of the string s1. */ do { data1 = spu_shuffle(dataA, dataB, shuffle); ptr2 = (vec_uchar16 *)s2; data2 = *ptr2; data2 = spu_shuffle(data2, data2, initial_splat); ptr2 = (vec_uchar16 *)((unsigned int)(ptr2) + 1); splat = initial_splat; match = spu_cmpeq(data1, 0); /* For each character of s2, compare agains a quadword of s1, * accumulating match success in the variable match. */ while (spu_extract((vec_uint4)data2, 0)) { match = spu_or(match, spu_cmpeq(data1, data2)); splat = spu_and((vec_uchar16)(spu_add((vec_uint4)splat, VEC_SPLAT_U32(0x01010101))), 0xF); data2 = *ptr2; data2 = spu_shuffle(data2, data2, splat); ptr2 = (vec_uchar16 *)((unsigned int)(ptr2) + 1); } cnt = spu_extract(spu_cntlz(spu_gather(match)), 0); len = (len - 16) + cnt; dataA = dataB; dataB = *ptr1++; } while (cnt == 32); return (len); } picolibc-1.7.4/newlib/libc/machine/spu/strcspn_ea.c000066400000000000000000000040631414576234500222360ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include "ea_internal.h" #include #include #include COMPAT_EA_ALIAS (strcspn_ea); size_ea_t strcspn_ea (__ea const char *s, const char *reject) { size_ea_t s_length; size_ea_t found_length; __ea void *found_it; size_ea_t ret; size_t i; size_t rej_length; s_length = strlen_ea (s); rej_length = strlen (reject); ret = s_length; for (i = 0; i < rej_length; i++) { found_it = memchr_ea (s, reject[i], s_length); found_length = (size_ea_t) found_it - (size_ea_t) s; if (found_length < ret) ret = found_length; } return ret; } picolibc-1.7.4/newlib/libc/machine/spu/strlen.c000066400000000000000000000047541414576234500214130ustar00rootroot00000000000000/* (C) Copyright 2001,2006, International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include /* * Calculates the length of the string s, not including the terminating * \0 character. */ size_t strlen(const char *s) { unsigned int cnt, cmp, skip, mask; vec_uchar16 *ptr, data; /* * Compensate for initial mis-aligned string. */ ptr = (vec_uchar16 *)s; /* implicit 16 byte alignment when dereferenced */ skip = (unsigned int)(ptr) & 15; mask = 0xFFFF >> skip; data = *ptr; cmp = spu_extract(spu_gather(spu_cmpeq(data, 0)), 0); cmp &= mask; cnt = spu_extract(spu_cntlz(spu_promote(cmp, 0)), 0); while (cnt == 32) { data = *++ptr; cnt = spu_extract(spu_cntlz(spu_gather(spu_cmpeq(data, 0))), 0); } /* * The length is ptr aligned down to a 16 byte boundary, plus the offset * to the zero byte, minus the starting address s. */ return ((((int) ptr & ~0xf) + (cnt - 16)) - (int) s); } picolibc-1.7.4/newlib/libc/machine/spu/strlen_ea.c000066400000000000000000000043741414576234500220560ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include "ea_internal.h" #include #include #include COMPAT_EA_ALIAS (strlen_ea); size_ea_t strlen_ea (__ea const char *s) { __ea void *curr_s = (__ea void *) s; void *local_s; size_ea_t left_in_cacheline; void *where_null; size_ea_t length_of_string = 0; while (1) { left_in_cacheline = ROUND_UP_NEXT_128 ((size_ea_t) curr_s) - (size_ea_t) curr_s; local_s = __cache_fetch (curr_s); where_null = memchr (local_s, '\0', left_in_cacheline); if (where_null) { length_of_string += ((size_ea_t) (int) where_null - (size_ea_t) (int) local_s); return length_of_string; } /* update values to take into account what we copied */ curr_s += left_in_cacheline; length_of_string += left_in_cacheline; } } picolibc-1.7.4/newlib/libc/machine/spu/strncat.c000066400000000000000000000040341414576234500215510ustar00rootroot00000000000000/* (C) Copyright 2008 International Business Machines Corporation, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include "straddr.h" #include "strcpy.h" /* * Appends the string pointed to by src (up to and including the /0 * character) to the array pointed to by dest (overwriting the * /0 character at the end of dest. The strings may not overlap and * the dest string must have enough space for the result. */ char * strncat(char * __restrict__ dest, const char * __restrict__ src, size_t n) { _strncpy(_straddr(dest), src, n, 1, 1); return dest; } picolibc-1.7.4/newlib/libc/machine/spu/strncat_ea.c000066400000000000000000000042371414576234500222230ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include "ea_internal.h" #include COMPAT_EA_ALIAS (strncat_ea); /* * Not the fastest thing ever since it reads through the data once on * strlen and once on memcpy. */ __ea char * strncat_ea (__ea char *dest, __ea const char *src, size_ea_t n) { size_ea_t length_src; size_ea_t length_dest; __ea char *new_dest; size_ea_t smaller_length; length_src = strlen_ea (src); length_dest = strlen_ea (dest); new_dest = dest + length_dest; smaller_length = length_src < n ? length_src : n; memcpy_ea ((__ea void *) new_dest, (__ea void *) src, smaller_length); /* null out last character */ memset_ea ((__ea void *) (new_dest + smaller_length), 0, 1); return dest; } picolibc-1.7.4/newlib/libc/machine/spu/strncmp.c000066400000000000000000000040011414576234500215530ustar00rootroot00000000000000/* (C) Copyright 2001,2006, International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include "strncmp.h" /* * Compare the two strings s1 and s2 of length n. Returns an integer less * than, equal to, or greater than zero if s1 is found, respectively, * to be less than, to match, or be greater than s2. */ int strncmp(const char *s1, const char *s2, size_t n) { vec_uint4 end_v; return _strncmp_internal (s1, s2, n, &end_v, 1); } picolibc-1.7.4/newlib/libc/machine/spu/strncmp.h000066400000000000000000000127351414576234500215750ustar00rootroot00000000000000/* (C) Copyright 2001,2006,2008 International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include /* * Internal _strncmp_internal for strncmp and memcmp: * * Compare the two strings s1 and s2 of length n. Returns an integer less * than, equal to, or greater than zero if s1 is found, respectively, * to be less than, to match, or be greater than s2. Check for zero bytes * only if check_zeroes is set. In additin, the vector value *end_v will * contain all zeroes if we hit a NUL character that caused the comparison * to complete, *end_v is modified only if check_zeroes is set. */ static inline int _strncmp_internal(const char *s1, const char *s2, size_t n, vec_uint4 *end_v, int check_zeroes) { unsigned int offset1, offset2; vec_int4 n_v; vec_uint4 cnt1_v, cnt2_v, max_cnt_v; vec_uint4 gt_v, lt_v, mask_v, end1_v, end2_v, neq_v, tmp1_v; vec_uint4 shift_n_v, shift_eos_v, max_shift_v; vec_uchar16 shuffle1, shuffle2; vec_uchar16 data1A, data1B, data1, data2A, data2B, data2; vec_uchar16 *ptr1, *ptr2; data1 = data2 = spu_splats((unsigned char)0); ptr1 = (vec_uchar16 *)s1; ptr2 = (vec_uchar16 *)s2; offset1 = (unsigned int)(ptr1) & 15; offset2 = (unsigned int)(ptr2) & 15; shuffle1 = (vec_uchar16) spu_add((vec_uint4)spu_splats((unsigned char)offset1), ((vec_uint4) {0x00010203, 0x04050607, 0x08090A0B, 0x0C0D0E0F})); shuffle2 = (vec_uchar16) spu_add((vec_uint4)spu_splats((unsigned char)offset2), ((vec_uint4) {0x00010203, 0x04050607, 0x08090A0B, 0x0C0D0E0F})); data1A = *ptr1++; data2A = *ptr2++; n_v = spu_promote((int)n, 0); do { data1B = *ptr1++; data2B = *ptr2++; /* * Quadword align each of the input strings so that we operate on full * quadwords. */ data1 = spu_shuffle(data1A, data1B, shuffle1); data2 = spu_shuffle(data2A, data2B, shuffle2); data1A = data1B; data2A = data2B; neq_v = spu_gather(spu_xor(spu_cmpeq(data1, data2), -1)); if (check_zeroes) { end1_v = spu_gather(spu_cmpeq(data1, 0)); end2_v = spu_gather(spu_cmpeq(data2, 0)); *end_v = spu_or(end1_v, end2_v); } n_v = spu_add(n_v, -16); /* * Repeat until either * 1) the character count expired * 2) check_zeroes is set and a null character is discovered in one of * the input strings * 3) the strings do not compare equal */ if (check_zeroes) { tmp1_v = spu_or(*end_v, neq_v); tmp1_v = spu_cmpeq(tmp1_v, 0); } else { tmp1_v = spu_cmpeq(neq_v, 0); } tmp1_v = spu_and(tmp1_v, spu_cmpgt(n_v, 0)); } while (spu_extract(tmp1_v, 0)); /* * Construct a mask to eliminate characters that are not of interest * in the comparison. */ mask_v = spu_splats((unsigned int)0xFFFF); shift_n_v = spu_andc((__vector unsigned int)spu_sub(0, n_v), spu_cmpgt(n_v, -1)); if (check_zeroes) { cnt1_v = spu_cntlz(end1_v); cnt2_v = spu_cntlz(end2_v); max_cnt_v = spu_sel(cnt1_v, cnt2_v, spu_cmpgt(cnt2_v, cnt1_v)); shift_eos_v = spu_sub(32, max_cnt_v); max_shift_v = spu_sel(shift_n_v, shift_eos_v, spu_cmpgt(shift_eos_v, shift_n_v)); mask_v = spu_and(spu_sl(mask_v, spu_extract(max_shift_v, 0)), mask_v); } else { mask_v = spu_and(spu_sl(mask_v, spu_extract(shift_n_v, 0)), mask_v); } /* * Determine if greater then or less then in the case that they are * not equal. gt_v is either 1 (in the case s1 is greater then s2), or * -1 (in the case that s2 is greater then s1). * * There are no byte vector math instructions, so we can't subtract * data1 from data2. */ gt_v = spu_gather(spu_cmpgt(data1, data2)); lt_v = spu_gather(spu_cmpgt(data2, data1)); gt_v = spu_sub(-1, spu_sl(spu_cmpgt(gt_v, lt_v), 1)); /* * Construct a mask to be applied to gt_v if the strings are discovered * to be equal. */ mask_v = spu_cmpeq(spu_and(neq_v, mask_v), 0); return (spu_extract(spu_andc(gt_v, mask_v), 0)); } picolibc-1.7.4/newlib/libc/machine/spu/strncmp_ea.c000066400000000000000000000055641414576234500222370ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include #include "ea_internal.h" #include "strncmp.h" #include COMPAT_EA_ALIAS (strncmp_ea); int strncmp_ea (__ea void *s1, __ea const void *s2, size_ea_t n3) { __ea void *curr_s1 = (__ea void *) s1; __ea void *curr_s2 = (__ea void *) s2; void *l_s1; void *l_s2; int min; size_ea_t s2_n; size_ea_t s1_n; int ret; vec_uint4 end_v; ret = 0; /* in case n3 is 0 */ while (n3) { l_s2 = __cache_fetch (curr_s2); l_s1 = __cache_fetch (curr_s1); /* * Use the smaller of the size left to compare (n3), the space left in * s2 cacheline (s2_n), or the space left in the s1 cacheline (s1_n) */ s2_n = ROUND_UP_NEXT_128 ((size_ea_t) curr_s2) - (size_ea_t) curr_s2; s1_n = ROUND_UP_NEXT_128 ((size_ea_t) curr_s1) - (size_ea_t) curr_s1; min = three_way_min (s2_n, s1_n, n3); ret = _strncmp_internal (l_s1, l_s2, min, &end_v, 1); /* * Only the first slot of end_v is set. */ /* if (ret || spu_extract(spu_cmpeq(end_v, 0), 0)) { */ /* if (ret || spu_extract(spu_gather(spu_cmpeq(end_v, 0)), 0)) { */ if (ret || spu_extract (end_v, 0)) /* * If any NUL values were seen (end_v values of zero) we still have * to return ret, as it might not be zero. */ return ret; curr_s2 += min; curr_s1 += min; n3 -= min; } return ret; } picolibc-1.7.4/newlib/libc/machine/spu/strncpy.c000066400000000000000000000036161414576234500216020ustar00rootroot00000000000000/* (C) Copyright 2008 International Business Machines Corporation, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include "strcpy.h" /* * Copy the string up to n character from memory area src to memory area * dest. The memory areas may not overlap. The strncpy subroutine returns * a pointer to dest. */ char * strncpy(char * __restrict__ dest, const char * __restrict__ src, size_t n) { return _strncpy(dest, src, n, 1, 0); } picolibc-1.7.4/newlib/libc/machine/spu/strncpy_ea.c000066400000000000000000000040031414576234500222360ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include "ea_internal.h" #include COMPAT_EA_ALIAS (strncpy_ea); /* * Not the fastest since it reads through the data once on strlen and once * on memcpy. */ __ea char * strncpy_ea (__ea char *dest, __ea const char *src, size_ea_t n) { size_ea_t length = strlen_ea (src); if (length < n) { memcpy_ea ((__ea void *) dest, (__ea void *) src, length); memset_ea ((__ea void *) (dest + length), 0, n - length); } else { memcpy_ea ((__ea void *) dest, (__ea void *) src, n); } return dest; } picolibc-1.7.4/newlib/libc/machine/spu/strpbrk.c000066400000000000000000000070361414576234500215670ustar00rootroot00000000000000/* (C) Copyright 2001,2006, International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include "vec_literal.h" /* Locates the first occurance in string pointed to by s1 of * any character in the string pointed to by s2. A null pointer * is returned if no character in s2 occurs in s1. */ char * strpbrk(const char *s1, const char *s2) { unsigned int offset; vec_uint4 cnt; vec_uchar16 shuffle, match, initial_splat, splat, eos; vec_uchar16 data1, data2, dataA, dataB, *ptr1, *ptr2; ptr1 = (vec_uchar16 *)s1; offset = (unsigned int)(s1) & 15; shuffle = (vec_uchar16)spu_add((vec_uint4)spu_splats((unsigned char) offset), VEC_LITERAL(vec_uint4, 0x0010203, 0x04050607, 0x08090A0B, 0x0C0D0E0F)); dataA = *ptr1++; dataB = *ptr1++; initial_splat = spu_splats((unsigned char)((unsigned int)(s2) & 0xF)); /* For each quadword of the string s1. */ do { data1 = spu_shuffle(dataA, dataB, shuffle); eos = match = spu_cmpeq(data1, 0); ptr2 = (vec_uchar16 *)s2; data2 = *ptr2; data2 = spu_shuffle(data2, data2, initial_splat); ptr2 = (vec_uchar16 *)((unsigned int)(ptr2) + 1); splat = initial_splat; /* For each character of s2, compare agains a quadword of s1, * accumulating match success in the variable match. */ while (spu_extract((vec_uint4)data2, 0)) { match = spu_or(match, spu_cmpeq(data1, data2)); splat = spu_and((vec_uchar16)(spu_add((vec_uint4)splat, VEC_SPLAT_U32(0x01010101))), 0xF); data2 = *ptr2; data2 = spu_shuffle(data2, data2, splat); ptr2 = (vec_uchar16 *)((unsigned int)(ptr2) + 1); } cnt = spu_cntlz(spu_gather(match)); dataA = dataB; dataB = *ptr1++; } while (spu_extract(cnt, 0) == 32); /* Compute the first match pointer, zeroing it (NIL) if it is the end of * string. */ return ((char *)spu_extract(spu_andc(spu_add(spu_add(spu_promote((unsigned int)(ptr1), 0), -64), cnt), spu_cmpeq(cnt, spu_cntlz(spu_gather(eos)))), 0)); } picolibc-1.7.4/newlib/libc/machine/spu/strpbrk_ea.c000066400000000000000000000033611414576234500222310ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include "ea_internal.h" #include #include #include COMPAT_EA_ALIAS (strpbrk_ea); __ea char * strpbrk_ea (__ea const char *s, const char *accept) { size_ea_t where; where = strcspn_ea (s, accept); return (__ea char *) ((size_ea_t) s + where); } picolibc-1.7.4/newlib/libc/machine/spu/strrchr.c000066400000000000000000000076421414576234500215720ustar00rootroot00000000000000/* (C) Copyright 2001,2006, International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include "vec_literal.h" /* Scans the string pointed to by s for the character c and * returns a pointer to the last occurance of c. If * c is not found, then NULL is returned. */ char * strrchr(const char *s, int c) { int nskip; vec_uchar16 *ptr, data, vc; vec_uint4 cmp_c, cmp_0, cmp; vec_uint4 res_ptr, res_cmp; vec_uint4 mask, result; vec_uint4 one = spu_splats(0xffffU); /* Scan memory array a quadword at a time. Skip leading * mis-aligned bytes. */ ptr = (vec_uchar16 *)s; nskip = -((unsigned int)(ptr) & 15); mask = spu_rlmask(one, nskip); vc = spu_splats((unsigned char)(c)); data = *ptr++; ptr = (vec_uchar16 *)((unsigned int)ptr & ~15); cmp_c = spu_and(spu_gather(spu_cmpeq(data, vc)), mask); cmp_0 = spu_and(spu_gather(spu_cmpeq(data, 0)), mask); res_ptr = spu_splats(0U); res_cmp = spu_splats(0U); while (spu_extract(cmp_0, 0) == 0) { cmp = spu_cmpeq(cmp_c, 0); res_ptr = spu_sel(spu_promote((unsigned int)(ptr), 0), res_ptr, cmp); res_cmp = spu_sel(cmp_c, res_cmp, cmp); data = *ptr++; cmp_c = spu_gather(spu_cmpeq(data, vc)); cmp_0 = spu_gather(spu_cmpeq(data, 0)); cmp = spu_cmpeq(cmp_c, 0); } /* Compute the location of the last character before termination * character. * * First mask off compare results following the first termination character. */ mask = spu_sl(one, 31 - spu_extract(spu_cntlz(cmp_0), 0)); cmp_c = spu_and(cmp_c, mask); /* Conditionally update res_ptr and res_cmd if a match was found in the last * quadword. */ cmp = spu_cmpeq(cmp_c, 0); res_ptr = spu_sel(spu_promote((unsigned int)(ptr), 0), res_ptr, cmp); res_cmp = spu_sel(cmp_c, res_cmp, cmp); /* Bit reserve res_cmp for locating last occurance. */ mask = spu_cmpeq(res_cmp, 0); res_cmp = (vec_uint4)spu_maskb(spu_extract(res_cmp, 0)); res_cmp = spu_gather((vec_uchar16)spu_shuffle(res_cmp, res_cmp, VEC_LITERAL(vec_uchar16, 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0))); /* Compute the location (ptr) of the last occurance of c. If no * occurance was found (ie, element 0 of res_cmp == 0, then return * NULL. */ result = spu_sub(spu_add(res_ptr, 15), spu_cntlz(res_cmp)); result = spu_andc(result, mask); return ((char *)spu_extract(result, 0)); } picolibc-1.7.4/newlib/libc/machine/spu/strrchr_ea.c000066400000000000000000000056211414576234500222320ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include "ea_internal.h" #include #include #include static __ea char * similie_ls_to_ea (char *l1, __ea char *ea1, char *l2) { return (__ea char *) ((size_ea_t) ea1 + ((size_ea_t) (int) l2 - (size_ea_t) (int) l1)); } COMPAT_EA_ALIAS (strrchr_ea); __ea char * strrchr_ea (__ea const char *s, int c) { size_ea_t string_length; char *curr_ptr; __ea char *string_start_local; __ea char *end_of_string_ea; __ea char *start_of_cacheline_ea; char *start_of_cachline_local; string_start_local = __cache_fetch ((__ea char *) s); string_length = strlen_ea (s); end_of_string_ea = (__ea char *) s + string_length; start_of_cacheline_ea = round_down_128_ea (end_of_string_ea - 1); start_of_cachline_local = __cache_fetch (start_of_cacheline_ea); /*this next line should be the same cacheline, just the end of the string */ curr_ptr = __cache_fetch (end_of_string_ea - 1); while (1) { /*search backwards through this cachline */ while (curr_ptr >= start_of_cachline_local) { if (*curr_ptr == (char) c) return similie_ls_to_ea (start_of_cachline_local, start_of_cacheline_ea, curr_ptr); curr_ptr--; if (curr_ptr < string_start_local) return NULL; } /* iterate cacheline backwards */ start_of_cacheline_ea -= 128; start_of_cachline_local = __cache_fetch (start_of_cacheline_ea); curr_ptr = __cache_fetch (start_of_cacheline_ea + 128); } } picolibc-1.7.4/newlib/libc/machine/spu/strspn.c000066400000000000000000000065221414576234500214300ustar00rootroot00000000000000/* (C) Copyright 2001,2006, International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include "vec_literal.h" /* Computes the length of the maximum initial segement * of the string pointed to by s1 which consists entirely * of characters from the string pointed to by s2. */ size_t strspn(const char *s1, const char *s2) { size_t len, cnt; unsigned int offset; vec_uchar16 shuffle, match, initial_splat, splat; vec_uchar16 data1, data2, dataA, dataB, *ptr1, *ptr2; ptr1 = (vec_uchar16 *)s1; offset = (unsigned int)(s1) & 15; shuffle = (vec_uchar16)spu_add((vec_uint4)spu_splats((unsigned char) offset), VEC_LITERAL(vec_uint4, 0x0010203, 0x04050607, 0x08090A0B, 0x0C0D0E0F)); len = 0; dataA = *ptr1++; dataB = *ptr1++; initial_splat = spu_splats((unsigned char)((unsigned int)(s2) & 0xF)); /* For each quadword of the string s1. */ do { data1 = spu_shuffle(dataA, dataB, shuffle); match = spu_splats((unsigned char)0); ptr2 = (vec_uchar16 *)s2; data2 = *ptr2; data2 = spu_shuffle(data2, data2, initial_splat); ptr2 = (vec_uchar16 *)((unsigned int)(ptr2) + 1); splat = initial_splat; /* For each character of s2, compare agains a quadword of s1, * accumulating match success in the variable match. */ while (spu_extract((vec_uint4)data2, 0)) { match = spu_or(match, spu_cmpeq(data1, data2)); splat = spu_and((vec_uchar16)(spu_add((vec_uint4)splat, VEC_SPLAT_U32(0x01010101))), 0xF); data2 = *ptr2; data2 = spu_shuffle(data2, data2, splat); ptr2 = (vec_uchar16 *)((unsigned int)(ptr2) + 1); } cnt = spu_extract(spu_cntlz(spu_gather(spu_xor(match, -1))), 0); len = (len - 16) + cnt; dataA = dataB; dataB = *ptr1++; } while (cnt == 32); return (len); } picolibc-1.7.4/newlib/libc/machine/spu/strspn_ea.c000066400000000000000000000040151414576234500220700ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include "ea_internal.h" #include #include #include COMPAT_EA_ALIAS (strspn_ea); size_ea_t strspn_ea (__ea const char *s, const char *accept) { __ea void *curr_s = (__ea void *) s; char *local_s; size_ea_t length_of_string = 0; size_ea_t s_len; int i; s_len = strlen_ea (s); for (i = 0; i < s_len; i++) { local_s = (char *) __cache_fetch (curr_s); if (!strchr (accept, local_s[0])) { return length_of_string; } else { length_of_string++; curr_s++; } } return length_of_string; } picolibc-1.7.4/newlib/libc/machine/spu/strstr_ea.c000066400000000000000000000047241414576234500221070ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007, 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include "ea_internal.h" #include #include #include COMPAT_EA_ALIAS (strstr_ea); __ea char *strstr_ea (__ea const char *s1, __ea const char *s2) { __ea char *ret; __ea char *curr; size_ea_t s2_length; size_ea_t s1_length; int i; int found; ret = (__ea char *) s1; s2_length = strlen_ea (s2); s1_length = strlen_ea (s1); while (ret < (s1 + s1_length)) { /* search for first letter */ //temporary hack for broken 64 bit compiler ret = strchr_ea (ret, s2[0]); /*if we find it search for the rest */ if (ret) { found = 1; for (i = 1; i < s2_length; i++) { //temporary hack for broken 64 bit compiler curr = strchr_ea (ret, s2[i]); /* if the letter doesn't exist or isn't in the right spot we unfind */ if (!curr || (curr != (ret + i))) found = 0; } } if (found) { return ret; } else { ret++; } /*go back and try again with the rest of it */ } return NULL; } picolibc-1.7.4/newlib/libc/machine/spu/strxfrm.c000066400000000000000000000050631414576234500216030ustar00rootroot00000000000000/* (C) Copyright 2001,2006, International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #define min(a, b) (a) < (b) ? (a) : (b) /* The strxfrm() function transforms the src string into a form such that * the result of strcmp() on two strings that have been transformed with * strxfrm() is the same as the result of strcoll() on the two strings * before their transformation. The first n characters of the transformed * string are placed in dest. * * The strxfrm() function returns the number of bytes required to store * the transformed string in dest excluding the terminating character * If the value returned is n or more, the contents of dest are indeterminate. * * Note: Since this library/function only supports a single locale, no * transformation is performed. */ size_t strxfrm(char * __restrict__ dest, const char * __restrict__ src, size_t n) { size_t len; len = strlen(src); (void)memcpy((void *)dest, (void *)src, min(n,len + 1)); return len; } picolibc-1.7.4/newlib/libc/machine/spu/sys/000077500000000000000000000000001414576234500205445ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/spu/sys/custom_file.h000066400000000000000000000032101414576234500232220ustar00rootroot00000000000000/* Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef __CUSTOM_FILE_H__ #define __CUSTOM_FILE_H__ 1 /* * Cell SPE support */ struct __sFILE_spu { int _fp; /* pseudo FILE pointer on PPE */ }; typedef struct __sFILE_spu __FILE; #endif /* __CUSTOM_FILE_H__ */ picolibc-1.7.4/newlib/libc/machine/spu/sys/dirent.h000066400000000000000000000037231414576234500222070ustar00rootroot00000000000000/* Copyright 2007 International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _SYS_DIRENT_H #define _SYS_DIRENT_H #ifdef __cplusplus extern "C" { #endif #define MAXNAMLEN 255 struct dirent { ino_t d_ino; char d_name[MAXNAMLEN + 1]; }; typedef struct { unsigned long long ppc_dir; /* * Allow one readdir for each opendir, and store the data here. */ struct dirent dirent; } DIR; #ifdef __cplusplus } #endif #endif picolibc-1.7.4/newlib/libc/machine/spu/sys/errno.h000066400000000000000000000171111414576234500220430ustar00rootroot00000000000000/* Copyright (c) 2007 Patrick Mansfield */ /* * The SPU must have these values match those on the PPU linux side, so * the assisted calls (system or library ones) that set errno will use the * same values. * * This file is based on the CRIS file, with these modifications: * * EDEADLOCK - instead of EDEADLK (35) use 58 (for some reason ppc only does * this, it is not used by ppc kernel code nor glibc code). * * ECANCELED value of 125 added, in linux and posix value of 125, in generic * newlib errno.h, value of 140 * * ENOTSUP as EOPNOTSUPP (95) added, in linux and posix value 95, in * generic newlib errno.h, value of 134 */ /* This file is to be kept in sync with newlib/libc/include/sys/errno.h on which it is based, except values used or returned by syscalls must be those of the Linux ppc. */ #ifndef _SYS_ERRNO_H_ #ifdef __cplusplus extern "C" { #endif #define _SYS_ERRNO_H_ #include extern struct _reent _impure_data; #define errno (_impure_data._errno) /* Please don't use these variables directly. Use strerror instead. */ extern const char * const _sys_errlist[]; extern int _sys_nerr; #define __errno_r(ptr) ((ptr)->_errno) /* Adjusted to the linux asm/errno.h */ #define EPERM 1 /* Operation not permitted */ #define ENOENT 2 /* No such file or directory */ #define ESRCH 3 /* No such process */ #define EINTR 4 /* Interrupted system call */ #define EIO 5 /* I/O error */ #define ENXIO 6 /* No such device or address */ #define E2BIG 7 /* Arg list too long */ #define ENOEXEC 8 /* Exec format error */ #define EBADF 9 /* Bad file number */ #define ECHILD 10 /* No child processes */ #define EAGAIN 11 /* Try again */ #define ENOMEM 12 /* Out of memory */ #define EACCES 13 /* Permission denied */ #define EFAULT 14 /* Bad address */ #define ENOTBLK 15 /* Block device required */ #define EBUSY 16 /* Device or resource busy */ #define EEXIST 17 /* File exists */ #define EXDEV 18 /* Cross-device link */ #define ENODEV 19 /* No such device */ #define ENOTDIR 20 /* Not a directory */ #define EISDIR 21 /* Is a directory */ #define EINVAL 22 /* Invalid argument */ #define ENFILE 23 /* File table overflow */ #define EMFILE 24 /* Too many open files */ #define ENOTTY 25 /* Not a typewriter */ #define ETXTBSY 26 /* Text file busy */ #define EFBIG 27 /* File too large */ #define ENOSPC 28 /* No space left on device */ #define ESPIPE 29 /* Illegal seek */ #define EROFS 30 /* Read-only file system */ #define EMLINK 31 /* Too many links */ #define EPIPE 32 /* Broken pipe */ #define EDOM 33 /* Math argument out of domain of func */ #define ERANGE 34 /* Math result not representable */ #define EDEADLK 35 /* Resource deadlock would occur */ #define ENAMETOOLONG 36 /* File name too long */ #define ENOLCK 37 /* No record locks available */ #define ENOSYS 38 /* Function not implemented */ #define ENOTEMPTY 39 /* Directory not empty */ #define ELOOP 40 /* Too many symbolic links encountered */ #define EWOULDBLOCK EAGAIN /* Operation would block */ #define ENOMSG 42 /* No message of desired type */ #define EIDRM 43 /* Identifier removed */ #define ECHRNG 44 /* Channel number out of range */ #define EL2NSYNC 45 /* Level 2 not synchronized */ #define EL3HLT 46 /* Level 3 halted */ #define EL3RST 47 /* Level 3 reset */ #define ELNRNG 48 /* Link number out of range */ #define EUNATCH 49 /* Protocol driver not attached */ #define ENOCSI 50 /* No CSI structure available */ #define EL2HLT 51 /* Level 2 halted */ #define EBADE 52 /* Invalid exchange */ #define EBADR 53 /* Invalid request descriptor */ #define EXFULL 54 /* Exchange full */ #define ENOANO 55 /* No anode */ #define EBADRQC 56 /* Invalid request code */ #define EBADSLT 57 /* Invalid slot */ #define EDEADLOCK 58 #define EBFONT 59 /* Bad font file format */ /* This is only used internally in newlib; not returned by the kernel. EBFONT seems the closest match for a "bad file format" error. */ #define EFTYPE EBFONT /* Inappropriate file type or format */ #define ENOSTR 60 /* Device not a stream */ #define ENODATA 61 /* No data available */ #define ETIME 62 /* Timer expired */ #define ENOSR 63 /* Out of streams resources */ #define ENONET 64 /* Machine is not on the network */ #define ENOPKG 65 /* Package not installed */ #define EREMOTE 66 /* Object is remote */ #define ENOLINK 67 /* Link has been severed */ #define EADV 68 /* Advertise error */ #define ESRMNT 69 /* Srmount error */ #define ECOMM 70 /* Communication error on send */ #define EPROTO 71 /* Protocol error */ #define EMULTIHOP 72 /* Multihop attempted */ #define EDOTDOT 73 /* RFS specific error */ #define EBADMSG 74 /* Not a data message */ #define EOVERFLOW 75 /* Value too large for defined data type */ #define ENOTUNIQ 76 /* Name not unique on network */ #define EBADFD 77 /* File descriptor in bad state */ #define EREMCHG 78 /* Remote address changed */ #define ELIBACC 79 /* Can not access a needed shared library */ #define ELIBBAD 80 /* Accessing a corrupted shared library */ #define ELIBSCN 81 /* .lib section in a.out corrupted */ #define ELIBMAX 82 /* Attempting to link in too many shared libraries */ #define ELIBEXEC 83 /* Cannot exec a shared library directly */ #define EILSEQ 84 /* Illegal byte sequence */ #define ERESTART 85 /* Interrupted system call should be restarted */ #define ESTRPIPE 86 /* Streams pipe error */ #define EUSERS 87 /* Too many users */ #define ENOTSOCK 88 /* Socket operation on non-socket */ #define EDESTADDRREQ 89 /* Destination address required */ #define EMSGSIZE 90 /* Message too long */ #define EPROTOTYPE 91 /* Protocol wrong type for socket */ #define ENOPROTOOPT 92 /* Protocol not available */ #define EPROTONOSUPPORT 93 /* Protocol not supported */ #define ESOCKTNOSUPPORT 94 /* Socket type not supported */ #define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */ #define ENOTSUP EOPNOTSUPP #define EPFNOSUPPORT 96 /* Protocol family not supported */ #define EAFNOSUPPORT 97 /* Address family not supported by protocol */ #define EADDRINUSE 98 /* Address already in use */ #define EADDRNOTAVAIL 99 /* Cannot assign requested address */ #define ENETDOWN 100 /* Network is down */ #define ENETUNREACH 101 /* Network is unreachable */ #define ENETRESET 102 /* Network dropped connection because of reset */ #define ECONNABORTED 103 /* Software caused connection abort */ #define ECONNRESET 104 /* Connection reset by peer */ #define ENOBUFS 105 /* No buffer space available */ #define EISCONN 106 /* Transport endpoint is already connected */ #define ENOTCONN 107 /* Transport endpoint is not connected */ #define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */ #define ETOOMANYREFS 109 /* Too many references: cannot splice */ #define ETIMEDOUT 110 /* Connection timed out */ #define ECONNREFUSED 111 /* Connection refused */ #define EHOSTDOWN 112 /* Host is down */ #define EHOSTUNREACH 113 /* No route to host */ #define EALREADY 114 /* Operation already in progress */ #define EINPROGRESS 115 /* Operation now in progress */ #define ESTALE 116 /* Stale NFS file handle */ #define EUCLEAN 117 /* Structure needs cleaning */ #define ENOTNAM 118 /* Not a XENIX named type file */ #define ENAVAIL 119 /* No XENIX semaphores available */ #define EISNAM 120 /* Is a named type file */ #define EREMOTEIO 121 /* Remote I/O error */ #define EDQUOT 122 /* Quota exceeded */ #define ENOMEDIUM 123 /* No medium found */ #define EMEDIUMTYPE 124 /* Wrong medium type */ #define ECANCELED 125 /* Operation Canceled */ #define __ELASTERROR 2000 /* Users can add values starting here */ #ifdef __cplusplus } #endif #endif /* _SYS_ERRNO_H */ picolibc-1.7.4/newlib/libc/machine/spu/sys/fenv.h000066400000000000000000000126731414576234500216640ustar00rootroot00000000000000/* (C) Copyright 2006, 2007 International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _SYS_FENV_H #define _SYS_FENV_H /* * The exception macros are such that the functions to pack/unpack them * will map a 32 bit fenv_t from/to the 128 bit fpscr. * * Suffixes: * _SNGL: single precision * _DBL: double precision * _N: element number, no suffix for element 0. */ #define FE_OVERFLOW_SNGL 0x08000000 #define FE_UNDERFLOW_SNGL 0x04000000 #define FE_DIFF_SNGL 0x02000000 #define FE_DIVBYZERO_SNGL 0x00000040 #define FE_OVERFLOW_SNGL_1 0x00040000 #define FE_UNDERFLOW_SNGL_1 0x00020000 #define FE_DIFF_SNGL_1 0x00010000 #define FE_DIVBYZERO_SNGL_1 0x00000020 #define FE_OVERFLOW_SNGL_2 0x00000200 #define FE_UNDERFLOW_SNGL_2 0x00000100 #define FE_DIFF_SNGL_2 0x00000080 #define FE_DIVBYZERO_SNGL_2 0x00000010 #define FE_OVERFLOW_SNGL_3 0x00000004 #define FE_UNDERFLOW_SNGL_3 0x00000002 #define FE_DIFF_SNGL_3 0x00000001 #define FE_DIVBYZERO_SNGL_3 0x00000008 #define FE_ALL_EXCEPT_SNGL (FE_OVERFLOW_SNGL | FE_UNDERFLOW_SNGL \ | FE_DIFF_SNGL | FE_DIVBYZERO_SNGL) #define FE_ALL_EXCEPT_SNGL_1 (FE_OVERFLOW_SNGL_1 | FE_UNDERFLOW_SNGL_1 \ | FE_DIFF_SNGL_1 | FE_DIVBYZERO_SNGL_1) #define FE_ALL_EXCEPT_SNGL_2 (FE_OVERFLOW_SNGL_2 | FE_UNDERFLOW_SNGL_2 \ | FE_DIFF_SNGL_2 | FE_DIVBYZERO_SNGL_2) #define FE_ALL_EXCEPT_SNGL_3 (FE_OVERFLOW_SNGL_3 | FE_UNDERFLOW_SNGL_3 \ | FE_DIFF_SNGL_3 | FE_DIVBYZERO_SNGL_3) #define FE_OVERFLOW_DBL 0x01000000 #define FE_UNDERFLOW_DBL 0x00800000 #define FE_INEXACT_DBL 0x00400000 #define FE_INVALID_DBL 0x00200000 #define FE_NC_NAN_DBL 0x00100000 #define FE_NC_DENORM_DBL 0x00080000 #define FE_OVERFLOW_DBL_1 0x00008000 #define FE_UNDERFLOW_DBL_1 0x00004000 #define FE_INEXACT_DBL_1 0x00002000 #define FE_INVALID_DBL_1 0x00001000 #define FE_NC_NAN_DBL_1 0x00000800 #define FE_NC_DENORM_DBL_1 0x00000400 #define FE_ALL_EXCEPT_DBL (FE_OVERFLOW_DBL | FE_UNDERFLOW_DBL | \ FE_INEXACT_DBL | FE_INVALID_DBL | \ FE_NC_NAN_DBL | FE_NC_DENORM_DBL) #define FE_ALL_EXCEPT_DBL_1 (FE_OVERFLOW_DBL_1 | FE_UNDERFLOW_DBL_1 | \ FE_INEXACT_DBL_1 | FE_INVALID_DBL_1 | \ FE_NC_NAN_DBL_1 | FE_NC_DENORM_DBL_1) #define FE_ALL_EXCEPT (FE_ALL_EXCEPT_SNGL | FE_ALL_EXCEPT_SNGL_1 | \ FE_ALL_EXCEPT_SNGL_2 | FE_ALL_EXCEPT_SNGL_3 | \ FE_ALL_EXCEPT_DBL | FE_ALL_EXCEPT_DBL_1) /* * Warning: some of these are single and some double precision only, * because of the hardware implementation. */ #define FE_DIVBYZERO (FE_DIVBYZERO_SNGL | FE_DIVBYZERO_SNGL_1 | \ FE_DIVBYZERO_SNGL_2 | FE_DIVBYZERO_SNGL_3) #define FE_INEXACT (FE_INEXACT_DBL | FE_INEXACT_DBL_1) #define FE_INVALID (FE_INVALID_DBL | FE_INVALID_DBL_1) #define FE_NC_NAN (FE_NC_NAN_DBL | FE_NC_NAN_DBL_1) #define FE_NC_DENORM (FE_NC_DENORM_DBL | FE_NC_DENORM_DBL_1) /* * __FE_ROUND_ELE_n values are set so that they can easily be used as a * mask when setting the fpscr. These tell us whether we are setting the * round mode for a specific element (double precision floating point * only, so there are only two elements). */ #define __FE_ROUND_ELE_0 0xc00 #define __FE_ROUND_ELE_1 0x300 /* * The following map directly to round values in the fpscr. */ #define __FE_SPU_TONEAREST 0 #define __FE_SPU_TOWARDZERO 1 #define __FE_SPU_UPWARD 2 #define __FE_SPU_DOWNWARD 3 #define FE_TONEAREST (__FE_ROUND_ELE_0 | (__FE_SPU_TONEAREST << 2)) #define FE_TOWARDZERO (__FE_ROUND_ELE_0 | (__FE_SPU_TOWARDZERO << 2)) #define FE_UPWARD (__FE_ROUND_ELE_0 | (__FE_SPU_UPWARD << 2)) #define FE_DOWNWARD (__FE_ROUND_ELE_0 | (__FE_SPU_DOWNWARD << 2)) #define FE_TONEAREST_1 (__FE_ROUND_ELE_1 | __FE_SPU_TONEAREST) #define FE_TOWARDZERO_1 (__FE_ROUND_ELE_1 | __FE_SPU_TOWARDZERO) #define FE_UPWARD_1 (__FE_ROUND_ELE_1 | __FE_SPU_UPWARD) #define FE_DOWNWARD_1 (__FE_ROUND_ELE_1 | __FE_SPU_DOWNWARD) typedef unsigned int fexcept_t; typedef unsigned int fenv_t; extern fenv_t _fe_dfl_env; #define FE_DFL_ENV ((const fenv_t *) &_fe_dfl_env) #endif /* fenv.h */ picolibc-1.7.4/newlib/libc/machine/spu/sys/linux_syscalls.h000066400000000000000000000241071414576234500237750ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Ken Werner */ #ifndef __LINUX_SYSCALLS_H #define __LINUX_SYSCALLS_H #include /* The system call numbers. See kernel source file arch/powerpc/include/asm/unistd.h. */ #define __NR_read 3 #define __NR_write 4 #define __NR_open 5 #define __NR_close 6 #define __NR_waitpid 7 #define __NR_creat 8 #define __NR_link 9 #define __NR_unlink 10 #define __NR_chdir 12 #define __NR_time 13 #define __NR_mkdod 14 #define __NR_chmod 15 #define __NR_lchown 16 #define __NR_lseek 19 #define __NR_getpid 20 #define __NR_setuid 23 #define __NR_getuid 24 #define __NR_stime 25 #define __NR_alarm 27 #define __NR_access 33 #define __NR_nice 34 #define __NR_sync 36 #define __NR_kill 37 #define __NR_rename 38 #define __NR_mkdir 39 #define __NR_rmdir 40 #define __NR_dup 41 #define __NR_pipe 42 #define __NR_times 43 #define __NR_brk 45 #define __NR_setgid 46 #define __NR_getgid 47 #define __NR_geteuid 49 #define __NR_getegid 50 #define __NR_ioctl 54 #define __NR_fcntl 55 #define __NR_setpgid 57 #define __NR_umask 60 #define __NR_chroot 61 #define __NR_dup2 63 #define __NR_getppid 64 #define __NR_getpgrp 65 #define __NR_setsid 66 #define __NR_sgetmask 68 #define __NR_ssetmask 69 #define __NR_setreuid 70 #define __NR_setregid 71 #define __NR_sethostname 74 #define __NR_setrlimit 75 #define __NR_getrusage 77 #define __NR_gettimeofday 78 #define __NR_settimeofday 79 #define __NR_getgroups 80 #define __NR_setgroups 81 #define __NR_symlink 83 #define __NR_readlink 85 #define __NR_mmap 90 #define __NR_munmap 91 #define __NR_truncate 92 #define __NR_ftruncate 93 #define __NR_fchmod 94 #define __NR_fchown 95 #define __NR_getpriority 96 #define __NR_setpriority 97 #define __NR_socketcall 102 #define __NR_syslog 103 #define __NR_setitimer 104 #define __NR_getitimer 105 #define __NR_newstat 106 #define __NR_newlstat 107 #define __NR_newfstat 108 #define __NR_vhangup 111 #define __NR_wait4 114 #define __NR_sysinfo 116 #define __NR_fsync 118 #define __NR_setdomainname 121 #define __NR_newuname 122 #define __NR_adjtimex 124 #define __NR_mprotect 125 #define __NR_getpgid 132 #define __NR_fchdir 133 #define __NR_bdflush 134 #define __NR_personality 136 #define __NR_setfsuid 138 #define __NR_setfsgid 139 #define __NR__llseek 140 #define __NR_getdents 141 #define __NR__newselect 142 #define __NR_flock 143 #define __NR_msync 144 #define __NR_readv 145 #define __NR_writev 146 #define __NR_getsid 147 #define __NR_fdatasync 148 #define __NR_mlock 150 #define __NR_munlock 151 #define __NR_mlockall 152 #define __NR_munlockall 153 #define __NR_sched_setparam 154 #define __NR_sched_getparam 155 #define __NR_sched_setscheduler 156 #define __NR_sched_getscheduler 157 #define __NR_sched_yield 158 #define __NR_sched_get_priority_max 159 #define __NR_sched_get_priority_min 160 #define __NR_sched_rr_get_interval 161 #define __NR_nanosleep 162 #define __NR_mremap 163 #define __NR_setresuid 164 #define __NR_getresuid 165 #define __NR_poll 167 #define __NR_setresgid 169 #define __NR_getresgid 170 #define __NR_prctl 171 #define __NR_pread64 179 #define __NR_pwrite64 180 #define __NR_chown 181 #define __NR_getcwd 182 #define __NR_capget 183 #define __NR_capset 184 #define __NR_sendfile 185 #define __NR_getrlimit 190 #define __NR_readahead 191 #define __NR_getdents64 202 #define __NR_pivot_root 203 #define __NR_madvise 205 #define __NR_mincore 206 #define __NR_gettid 207 #define __NR_tkill 208 #define __NR_setxattr 209 #define __NR_lsetxattr 210 #define __NR_fsetxattr 211 #define __NR_getxattr 212 #define __NR_lgetxattr 213 #define __NR_fgetxattr 214 #define __NR_listxattr 215 #define __NR_llistxattr 216 #define __NR_flistxattr 217 #define __NR_removexattr 218 #define __NR_lremovexattr 219 #define __NR_fremovexattr 220 #define __NR_futex 221 #define __NR_sched_setaffinity 222 #define __NR_sched_getaffinity 223 #define __NR_io_setup 227 #define __NR_io_destroy 228 #define __NR_io_getevents 229 #define __NR_io_submit 230 #define __NR_io_cancel 231 #define __NR_fadvise64 233 #define __NR_epoll_create 236 #define __NR_epoll_ctl 237 #define __NR_epoll_wait 238 #define __NR_remap_file_pages 239 #define __NR_timer_create 240 #define __NR_timer_settime 241 #define __NR_timer_gettime 242 #define __NR_timer_getoverrun 243 #define __NR_timer_delete 244 #define __NR_clock_settime 245 #define __NR_clock_gettime 246 #define __NR_clock_getres 247 #define __NR_clock_nanosleep 248 #define __NR_tgkill 250 #define __NR_utimes 251 #define __NR_statfs64 252 #define __NR_fstatfs64 253 #define __NR_rtas 255 #define __NR_unshare 282 #define __NR_splice 283 #define __NR_tee 284 #define __NR_vmsplice 285 #define __NR_openat 286 #define __NR_mkdirat 287 #define __NR_mknodat 288 #define __NR_fchownat 289 #define __NR_futimesat 290 #define __NR_fstatat64 291 #define __NR_unlinkat 292 #define __NR_renameat 293 #define __NR_linkat 294 #define __NR_symlinkat 295 #define __NR_readlinkat 296 #define __NR_fchmodat 297 #define __NR_faccessat 298 #define __NR_get_robust_list 299 #define __NR_set_robust_list 300 #define __NR_move_pages 301 #define __NR_getcpu 302 #define __NR_utimensat 304 #define __NR_signalfd 305 #define __NR_timerfd 306 #define __NR_eventfd 307 #define __NR_sync_file_range2 308 #define __NR_fallocate 309 #define __NR_subpage_prot 310 #define __NR_timerfd_settime 311 #define __NR_timerfd_gettime 312 #define __NR_signalfd4 313 #define __NR_eventfd2 314 #define __NR_epoll_create1 315 #define __NR_dup3 316 #define __NR_pipe2 317 #define __NR_inotify_init1 318 /* System callbacks from the SPU. See kernel source file arch/powerpc/include/asm/spu.h. */ struct spu_syscall_block { unsigned long long nr_ret; /* System call nr and return value. */ unsigned long long parm[6]; /* System call arguments. */ }; #ifdef __cplusplus extern "C" { #endif /* Issues a Linux system call. */ int __linux_syscall (struct spu_syscall_block *s); /* Linux system calls. */ pid_t linux_getpid(void); pid_t linux_gettid(void); #ifdef __cplusplus } #endif #endif picolibc-1.7.4/newlib/libc/machine/spu/sys/mman.h000066400000000000000000000055111414576234500216470ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2007 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _MMAN_H_ #define _MMAN_H_ #include /* * Prots to 'mmap'. */ #define PROT_READ 0x1 #define PROT_WRITE 0x2 #define PROT_EXEC 0x4 #define PROT_NONE 0x0 /* * Flags to 'mmap'. */ #define MAP_SHARED 0x001 #define MAP_PRIVATE 0x002 #define MAP_FIXED 0x010 #define MAP_FILE 0x000 #define MAP_ANONYMOUS 0x020 #define MAP_ANON MAP_ANONYMOUS #define MAP_GROWSDOWN 0x0100 #define MAP_DENYWRITE 0x0800 #define MAP_EXECUTABLE 0x1000 #define MAP_LOCKED 0x0080 #define MAP_NORESERVE 0x0040 /* * Failed flag from 'mmap'. */ #define MAP_FAILED_EADDR ((unsigned long long) (-1LL)) /* * Flags to 'mremap'. */ #define MREMAP_MAYMOVE 1 /* * Flags to 'msync'. */ #define MS_ASYNC 1 #define MS_SYNC 4 #define MS_INVALIDATE 2 extern int shm_open(const char *name, int oflag, mode_t mode); extern int shm_unlink(const char * name); unsigned long long mmap_eaddr(unsigned long long start, size_t length, int prot, int flags, int fd, off_t offset); unsigned long long mremap_eaddr(unsigned long long old_addr, size_t old_size, size_t new_size, int flags); unsigned long long msync_eaddr(unsigned long long start, size_t length, int flags); unsigned long long munmap_eaddr(unsigned long long start, size_t length); #endif /* _MMAN_H_ */ picolibc-1.7.4/newlib/libc/machine/spu/sys/sched.h000066400000000000000000000003151414576234500220020ustar00rootroot00000000000000/* Copyright (c) 2007 Patrick Mansfield */ #ifndef _SYS_SCHED_H #define _SYS_SCHED_H #ifdef __cplusplus extern "C" { #endif int sched_yield(void); #ifdef __cplusplus } #endif #endif picolibc-1.7.4/newlib/libc/machine/spu/sys/syscall.h000066400000000000000000000004051414576234500223660ustar00rootroot00000000000000/* Copyright (c) 2007 Patrick Mansfield */ #ifndef _SYS_SYSCALL_H #define _SYS_SYSCALL_H #ifdef __cplusplus extern "C" { #endif int __send_to_ppe(unsigned int signalcode, unsigned int opcode, void *data); #ifdef __cplusplus } #endif #endif picolibc-1.7.4/newlib/libc/machine/spu/sys/uio.h000066400000000000000000000005731414576234500215160ustar00rootroot00000000000000/* Copyright (c) 2007 Patrick Mansfield */ #ifndef _SYS_UIO_H #define _SYS_UIO_H #include #ifdef __cplusplus extern "C" { #endif /* * Per POSIX */ struct iovec { void *iov_base; size_t iov_len; }; ssize_t readv(int, const struct iovec *, int); ssize_t writev(int, const struct iovec *, int); #ifdef __cplusplus }; #endif #endif picolibc-1.7.4/newlib/libc/machine/spu/sys/utime.h000066400000000000000000000004661414576234500220460ustar00rootroot00000000000000/* Copyright (c) 2007 Patrick Mansfield */ #ifndef _SYS_UTIME_H #define _SYS_UTIME_H #ifdef __cplusplus extern "C" { #endif /* * Per POSIX */ struct utimbuf { time_t actime; time_t modtime; }; int utime(const char *, const struct utimbuf *); #ifdef __cplusplus }; #endif #endif picolibc-1.7.4/newlib/libc/machine/spu/syscall.def000066400000000000000000000036241414576234500220650ustar00rootroot00000000000000# # (C) Copyright 2007 TOSHIBA CORPORATION # All Rights Reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the names of Toshiba nor the names of its # contributors may be used to endorse or promote products derived from this # software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # # # OPCODE NAME FP PARMS(Number of fixed arguments) # SPE_C99_VFPRINTF fprintf 1 2 SPE_C99_VFSCANF fscanf 1 2 SPE_C99_VPRINTF printf 0 1 SPE_C99_VSCANF scanf 0 1 SPE_C99_VSNPRINTF snprintf 0 3 SPE_C99_VSPRINTF sprintf 0 2 SPE_C99_VSSCANF sscanf 0 2 picolibc-1.7.4/newlib/libc/machine/spu/tmpfile.c000066400000000000000000000036171414576234500215410ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include #include "c99ppe.h" #ifndef _REENT_ONLY FILE * tmpfile (void) { int ret; FILE* fp; struct _reent *ptr = _REENT; CHECK_INIT(ptr); fp = __sfp(ptr); if (!fp) { return NULL; } ret = __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_TMPFILE, &ret); if (ret) { fp->_fp = ret; return fp; } else { __sfp_free(fp); return NULL; } } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/tmpnam.c000066400000000000000000000032611414576234500213700ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include #include "c99ppe.h" char * tmpnam (char *s) { /* The return value gets written over buf */ return (char*) __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_TMPNAM, &s); } picolibc-1.7.4/newlib/libc/machine/spu/ungetc.c000066400000000000000000000036271414576234500213670ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include <_ansi.h> #include #include "c99ppe.h" typedef struct { int c; unsigned int pad0[ 3 ]; int fp; unsigned int pad1[ 3 ]; } c99_ungetc_t; #ifndef _REENT_ONLY int ungetc (c, fp) int c; register FILE *fp; { c99_ungetc_t args; CHECK_INIT(_REENT); args.c = c; args.fp = fp->_fp; return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_UNGETC, &args); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/usleep.c000066400000000000000000000006651414576234500213760ustar00rootroot00000000000000/* Copied from libc/posix/usleep.c, removed the check for HAVE_NANOSLEEP */ /* Copyright (c) 2002 by Jeff Johnston */ #include #include #include int usleep(useconds_t useconds) { struct timespec ts; ts.tv_sec = (long int)useconds / 1000000; ts.tv_nsec = ((long int)useconds % 1000000) * 1000; if (!nanosleep(&ts,&ts)) return 0; if (errno == EINTR) return ts.tv_sec; return -1; } picolibc-1.7.4/newlib/libc/machine/spu/vec_literal.h000066400000000000000000000065571414576234500224050ustar00rootroot00000000000000/* (C) Copyright 2001,2006, International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _VEC_LITERAL_H_ #define _VEC_LITERAL_H_ /* This header files provides an abstraction for the various implementations * of vector literal construction. The two formats are: * * 1) Altivec styled using parenthesis * 2) C grammer friendly styled using curly braces * * The macro, VEC_LITERAL has been developed to provide some portability * in these two styles. To achieve true portability, user must specify all * elements of the vector being initialized. A single element can be provided * but only the first element guarenteed across both construction styles. * * The VEC_SPLAT_* macros have been provided for portability of vector literal * construction when all the elements of the vector contain the same value. */ /* Use curly brace style. */ #define VEC_LITERAL(_type, ...) ((_type){__VA_ARGS__}) #define VEC_SPLAT_U8(_val) ((__vector unsigned char){_val, _val, _val, _val, _val, _val, _val, _val, _val, _val, _val, _val, _val, _val, _val, _val}) #define VEC_SPLAT_S8(_val) ((__vector signed char){_val, _val, _val, _val, _val, _val, _val, _val, _val, _val, _val, _val, _val, _val, _val, _val}) #define VEC_SPLAT_U16(_val) ((__vector unsigned short){_val, _val, _val, _val, _val, _val, _val, _val}) #define VEC_SPLAT_S16(_val) ((__vector signed short){_val, _val, _val, _val, _val, _val, _val, _val}) #define VEC_SPLAT_U32(_val) ((__vector unsigned int){_val, _val, _val, _val}) #define VEC_SPLAT_S32(_val) ((__vector signed int){_val, _val, _val, _val}) #define VEC_SPLAT_F32(_val) ((__vector float){_val, _val, _val, _val}) #define VEC_SPLAT_U64(_val) ((__vector unsigned long long){_val, _val}) #define VEC_SPLAT_S64(_val) ((__vector signed long long){_val, _val}) #define VEC_SPLAT_F64(_val) ((__vector double){_val, _val}) #endif /* _VEC_LITERAL_H_ */ picolibc-1.7.4/newlib/libc/machine/spu/vfiprintf.c000066400000000000000000000001561414576234500221030ustar00rootroot00000000000000/* Copyright (c) 2007 Kazunori Asayama */ #define INTEGER_ONLY #include "vfprintf.c" picolibc-1.7.4/newlib/libc/machine/spu/vfiscanf.c000066400000000000000000000001551414576234500216720ustar00rootroot00000000000000/* Copyright (c) 2007 Kazunori Asayama */ #define INTEGER_ONLY #include "vfscanf.c" picolibc-1.7.4/newlib/libc/machine/spu/vfprintf.c000066400000000000000000000040701414576234500217310ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include <_ansi.h> #include #include "c99ppe.h" #include #ifdef INTEGER_ONLY # define vfprintf vfiprintf #endif typedef struct { int fp; unsigned int pad0[ 3 ]; char* fmt; unsigned int pad1[ 3 ]; va_list ap; } c99_vfprintf_t; #ifndef _REENT_ONLY int vfprintf (FILE *__restrict fp, const char *__restrict fmt0, va_list ap) { c99_vfprintf_t args; CHECK_INIT(_REENT); args.fp = fp->_fp; args.fmt = (char*) fmt0; va_copy(args.ap,ap); return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VFPRINTF, &args); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/vfscanf.c000066400000000000000000000040661414576234500215260ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include <_ansi.h> #include #include "c99ppe.h" #include #ifdef INTEGER_ONLY # define vfscanf vfiscanf #endif typedef struct { int fp; unsigned int pad0[ 3 ]; char* fmt; unsigned int pad1[ 3 ]; va_list ap; } c99_vfscanf_t; #ifndef _REENT_ONLY int vfscanf (FILE *__restrict fp, const char *__restrict fmt, va_list ap) { c99_vfscanf_t args; CHECK_INIT(_REENT); args.fp = fp->_fp; args.fmt = (char*) fmt; va_copy(args.ap,ap); return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VFSCANF, &args); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/viprintf.c000066400000000000000000000001541414576234500217330ustar00rootroot00000000000000/* Copyright (c) 2007 Kazunori Asayama */ #define INTEGER_ONLY #include "vprintf.c" picolibc-1.7.4/newlib/libc/machine/spu/viscanf.c000066400000000000000000000001541414576234500215230ustar00rootroot00000000000000/* Copyright (c) 2007 Kazunori Asayama */ #define INTEGER_ONLY #include "vscanf.c" picolibc-1.7.4/newlib/libc/machine/spu/vprintf.c000066400000000000000000000036301414576234500215640ustar00rootroot00000000000000/* Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include <_ansi.h> #include #include "c99ppe.h" #include #ifdef INTEGER_ONLY # define vprintf viprintf #endif typedef struct { const char* fmt; unsigned int pad0[ 3 ]; va_list ap; } c99_vprintf_t; #ifndef _REENT_ONLY int vprintf (const char *fmt, va_list ap) { c99_vprintf_t args; CHECK_STD_INIT(_REENT); args.fmt = fmt; va_copy(args.ap,ap); return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VPRINTF, &args); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/vscanf.c000066400000000000000000000037301414576234500213550ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include <_ansi.h> #include #include "c99ppe.h" #include #ifdef INTEGER_ONLY # define vscanf viscanf #endif typedef struct { char* fmt; unsigned int pad0[ 3 ]; va_list ap; } c99_vscanf_t; #ifndef _REENT_ONLY int vscanf (const char *fmt, va_list ap) { c99_vscanf_t args; CHECK_STD_INIT(_REENT); args.fmt = (char*) fmt; va_copy(args.ap,ap); return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSCANF, &args); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/vsiprintf.c000066400000000000000000000001561414576234500221200ustar00rootroot00000000000000/* Copyright (c) 2007 Kazunori Asayama */ #define INTEGER_ONLY #include "vsprintf.c" picolibc-1.7.4/newlib/libc/machine/spu/vsiscanf.c000066400000000000000000000001551414576234500217070ustar00rootroot00000000000000/* Copyright (c) 2007 Kazunori Asayama */ #define INTEGER_ONLY #include "vsscanf.c" picolibc-1.7.4/newlib/libc/machine/spu/vsniprintf.c000066400000000000000000000001571414576234500222770ustar00rootroot00000000000000/* Copyright (c) 2007 Kazunori Asayama */ #define INTEGER_ONLY #include "vsnprintf.c" picolibc-1.7.4/newlib/libc/machine/spu/vsnprintf.c000066400000000000000000000041221414576234500221220ustar00rootroot00000000000000/* Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include <_ansi.h> #include #include "c99ppe.h" #include #ifdef INTEGER_ONLY # define vsnprintf vsniprintf #endif typedef struct { char* str; unsigned int pad0[ 3 ]; size_t size; unsigned int pad1[ 3 ]; const char* fmt; unsigned int pad2[ 3 ]; va_list ap; } c99_vsnprintf_t; #ifndef _REENT_ONLY int vsnprintf (char *__restrict str, size_t size, const char *__restrict fmt, va_list ap) { c99_vsnprintf_t args; CHECK_STR_INIT(_REENT); args.str = str; args.size = size; args.fmt = fmt; va_copy(args.ap,ap); return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSNPRINTF, &args); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/vsprintf.c000066400000000000000000000040001414576234500217370ustar00rootroot00000000000000/* Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include <_ansi.h> #include #include "c99ppe.h" #include #ifdef INTEGER_ONLY # define vsprintf vsiprintf #endif typedef struct { char *str; unsigned int pad0[ 3 ]; char *fmt; unsigned int pad1[ 3 ]; va_list ap; } c99_vsprintf_t; #ifndef _REENT_ONLY int vsprintf (char *__restrict str, const char *__restrict fmt, va_list ap) { c99_vsprintf_t args; CHECK_STR_INIT(_REENT); args.str = str; args.fmt = (char*) fmt; va_copy(args.ap,ap); return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSPRINTF, &args); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/vsscanf.c000066400000000000000000000041151414576234500215360ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2006 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Joel Schopp */ #include <_ansi.h> #include #include "c99ppe.h" #include #ifdef INTEGER_ONLY # define vsscanf vsiscanf #endif typedef struct { const char *str; unsigned int pad0[ 3 ]; const char *fmt; unsigned int pad1[ 3 ]; va_list ap; } c99_vsscanf_t; #ifndef _REENT_ONLY int vsscanf (const char *__restrict str, const char *__restrict fmt, va_list ap) { c99_vsscanf_t args; CHECK_STR_INIT(_REENT); args.str = str; args.fmt = (char*) fmt; va_copy(args.ap,ap); return __send_to_ppe(SPE_C99_SIGNALCODE, SPE_C99_VSSCANF, &args); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/machine/spu/write_ea.c000066400000000000000000000037731414576234500217030ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Ken Werner */ #include "ea_internal.h" #include #include #include "sys/linux_syscalls.h" extern void __cache_flush (void) __attribute__ ((weak)); COMPAT_EA_ALIAS (write_ea); ssize_ea_t write_ea (int fd, __ea const void *buf, size_ea_t count) { struct spu_syscall_block s = { __NR_write, { fd, (size_ea_t) buf, count, 0, 0, 0} }; /* Flush cache only if the application really uses the software cache. */ if (__cache_flush) __cache_flush (); return __linux_syscall (&s); } picolibc-1.7.4/newlib/libc/machine/spu/writev_ea.c000066400000000000000000000043221414576234500220600ustar00rootroot00000000000000/* (C) Copyright IBM Corp. 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Author: Ken Werner */ #include "ea_internal.h" #include #include #include "sys/linux_syscalls.h" extern void __cache_flush (void) __attribute__ ((weak)); COMPAT_EA_ALIAS (writev_ea); ssize_ea_t writev_ea (int fd, struct iovec_ea *vector, int count) { #ifdef __EA32__ int i; #endif struct spu_syscall_block s = { __NR_writev, { fd, (size_ea_t) (__ea void *) vector, count, 0, 0, 0} }; #ifdef __EA32__ for (i = 0; i < count; ++i) { vector[i].__pad1 = 0x0; /* 32 bit padding */ vector[i].__pad2 = 0x0; /* 32 bit padding */ } #endif /* Flush cache only if the application really uses the software cache. */ if (__cache_flush) __cache_flush (); return __linux_syscall (&s); } picolibc-1.7.4/newlib/libc/machine/tic4x/000077500000000000000000000000001414576234500201525ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/tic4x/setjmp.S000066400000000000000000000027011414576234500216000ustar00rootroot00000000000000/* * Copyright (c) 2004 Michael Hayes . * * The author hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ /* setjmp/longjmp routines. */ .sect .text .global setjmp .global longjmp setjmp: pop r1 ldi sp, ar0 #ifndef _REGPARM ldi *ar0, ar2 #endif sti r4, *ar2++ sti r5, *ar2++ stf r6, *ar2++ stf r7, *ar2++ #ifdef _TMS320C4x sti r8, *ar2++ #endif sti ar3, *ar2++ sti ar4, *ar2++ sti ar5, *ar2++ sti ar6, *ar2++ sti ar7, *ar2++ bd r1 sti r1, *ar2++ sti ar0, *ar2 ldi 0, r0 longjmp: #ifndef _REGPARM ldi sp, ar0 ldi *-ar0(1), ar2 ldi *-ar0(2), r0 ldiz 1, r0 #else ldi r2, r0 ldiz 1, r0 #endif ldi *ar2++, r4 ldi *ar2++, r5 ldf *ar2++, r6 ldf *ar2++, r7 #ifdef _TMS320C4x ldi *ar2++, r8 #endif ldi *ar2++, ar3 ldi *ar2++, ar4 ldi *ar2++, ar5 ldi *ar2++, ar6 ldi *ar2++, ar7 ldi *ar2++, r1 ldi *ar2, sp b r1 .end picolibc-1.7.4/newlib/libc/machine/tic6x/000077500000000000000000000000001414576234500201545ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/tic6x/setjmp.S000066400000000000000000000075651414576234500216170ustar00rootroot00000000000000;****************************************************************************** ;* SETJMP v7.2.0I10181 * ;* * ;/* Copyright (c) 1996-2010 Texas Instruments Incorporated */ ;* http://www.ti.com/ * ;* * ;* Redistribution and use in source and binary forms, with or without * ;* modification, are permitted provided that the following conditions * ;* are met: * ;* * ;* Redistributions of source code must retain the above copyright * ;* notice, this list of conditions and the following disclaimer. * ;* * ;* Redistributions in binary form must reproduce the above copyright * ;* notice, this list of conditions and the following disclaimer in * ;* the documentation and/or other materials provided with the * ;* distribution. * ;* * ;* Neither the name of Texas Instruments Incorporated nor the names * ;* of its contributors may be used to endorse or promote products * ;* derived from this software without specific prior written * ;* permission. * ;* * ;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * ;* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * ;* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * ;* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * ;* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * ;* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * ;* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * ;* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * ;* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ;* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * ;* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ;* * ;****************************************************************************** .text .globl setjmp .type setjmp,%function setjmp: MV .L2X A4, B4 || STW .D1T2 B3, *+A4(48) STW .D1T1 A10, *+A4(0) || STW .D2T2 B10, *+B4(4) || RET .S2 B3 STW .D1T1 A11, *+A4(8) || STW .D2T2 B11, *+B4(12) STW .D1T1 A12, *+A4(16) || STW .D2T2 B12, *+B4(20) STW .D1T1 A13, *+A4(24) || STW .D2T2 B13, *+B4(28) STW .D1T1 A14, *+A4(32) || STW .D2T2 B14, *+B4(36) STW .D1T1 A15, *+A4(40) || STW .D2T2 B15, *+B4(44) || ZERO .S1 A4 .size setjmp, . - setjmp .globl longjmp .type longjmp,%function longjmp: LDW .D1T1 *+A4(48), A3 MV .L2X A4, B6 || MV .S1 A4, A6 || MV .D2 B4, B2 LDW .D1T1 *+A6(0), A10 || LDW .D2T2 *+B6(4), B10 || [B2] MV .L1X B4, A4 || [!B2] MVK .S1 1, A4 LDW .D1T1 *+A6(8), A11 || LDW .D2T2 *+B6(12), B11 LDW .D1T1 *+A6(16), A12 || LDW .D2T2 *+B6(20), B12 LDW .D1T1 *+A6(24), A13 || LDW .D2T2 *+B6(28), B13 LDW .D1T1 *+A6(32), A14 || LDW .D2T2 *+B6(36), B14 LDW .D1T1 *+A6(40), A15 || LDW .D2T2 *+B6(44), B15 || RET .S2X A3 NOP 5 .size longjmp, . - longjmp picolibc-1.7.4/newlib/libc/machine/tic80/000077500000000000000000000000001414576234500200465ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/tic80/setjmp.S000066400000000000000000000031161414576234500214750ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* These are predefined by new versions of GNU cpp. */ #ifndef __USER_LABEL_PREFIX__ #define __USER_LABEL_PREFIX__ _ #endif /* ANSI concatenation macros. */ #define CONCAT1(a, b) CONCAT2(a, b) #define CONCAT2(a, b) a ## b /* Use the right prefix for global labels. */ #define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x) .global SYM (setjmp) .global SYM (_setjmp) .global SYM (longjmp) .section .text,"x" .align 4 SYM (_setjmp): SYM (setjmp): st.d 0(r2),r20 st.d 8(r2),r22 st.d 16(r2),r24 st.d 24(r2),r26 st.d 32(r2),r28 st.d 40(r2),r30 st 48(r2),r1 jsr r31(r0),r0 addu 0,r0,r2 .section .text,"x" .align 4 SYM (longjmp): ld.d 0(r2),r20 ld.d 8(r2),r22 ld.d 16(r2),r24 ld.d 24(r2),r26 ld.d 32(r2),r28 ld.d 40(r2),r30 bcnd L1,r4,ne0.w ld 48(r2),r1 jsr r31(r0),r0 addu 1,r0,r2 L1: jsr r31(r0),r0 addu r4,r0,r2 picolibc-1.7.4/newlib/libc/machine/v850/000077500000000000000000000000001414576234500176215ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/v850/setjmp.S000066400000000000000000000026431414576234500212540ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ .file "setjmp.S" .section .text .align 1 .global _setjmp _setjmp: st.w r1,0[r6] st.w r3,4[r6] st.w r4,8[r6] st.w r20,12[r6] st.w r21,16[r6] st.w r22,20[r6] st.w r23,24[r6] st.w r24,28[r6] st.w r25,32[r6] st.w r26,36[r6] st.w r27,40[r6] st.w r28,44[r6] st.w r29,48[r6] st.w r30,52[r6] st.w r31,56[r6] mov r0, r10 jmp [r31] .global _longjmp _longjmp: ld.w 0[r6],r1 ld.w 4[r6],r3 ld.w 8[r6],r4 ld.w 12[r6],r20 ld.w 16[r6],r21 ld.w 20[r6],r22 ld.w 24[r6],r23 ld.w 28[r6],r24 ld.w 32[r6],r25 ld.w 36[r6],r26 ld.w 40[r6],r27 ld.w 44[r6],r28 ld.w 48[r6],r29 ld.w 52[r6],r30 ld.w 56[r6],r31 cmp r7, r0 jne 1f mov 1,r7 1: mov r7, r10 jmp [r31] picolibc-1.7.4/newlib/libc/machine/visium/000077500000000000000000000000001414576234500204335ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/visium/memcpy.c000066400000000000000000000452311414576234500220760ustar00rootroot00000000000000/* memcpy for the Visium processor. Copyright (c) 2015 Rolls-Royce Controls and Data Services Limited. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Rolls-Royce Controls and Data Services Limited nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This file must be kept in sync with libgcc/config/visium/memcpy.c */ #include #include "memcpy.h" #include "../../string/local.h" #define INST_BARRIER __asm__ __volatile__ ("":::"memory"); #define MOVE_32_OBJECTS(in,out) \ do { \ INST_BARRIER \ m0 = in [0]; \ m1 = in [1]; \ m2 = in [2]; \ m3 = in [3]; \ out [0] = m0; \ out [1] = m1; \ out [2] = m2; \ out [3] = m3; \ INST_BARRIER \ m0 = in [4]; \ m1 = in [5]; \ m2 = in [6]; \ m3 = in [7]; \ out [4] = m0; \ out [5] = m1; \ out [6] = m2; \ out [7] = m3; \ INST_BARRIER \ m0 = in [8]; \ m1 = in [9]; \ m2 = in [10]; \ m3 = in [11]; \ out [8] = m0; \ out [9] = m1; \ out [10] = m2; \ out [11] = m3; \ INST_BARRIER \ m0 = in [12]; \ m1 = in [13]; \ m2 = in [14]; \ m3 = in [15]; \ out [12] = m0; \ out [13] = m1; \ out [14] = m2; \ out [15] = m3; \ INST_BARRIER \ m0 = in [16]; \ m1 = in [17]; \ m2 = in [18]; \ m3 = in [19]; \ out [16] = m0; \ out [17] = m1; \ out [18] = m2; \ out [19] = m3; \ INST_BARRIER \ m0 = in [20]; \ m1 = in [21]; \ m2 = in [22]; \ m3 = in [23]; \ out [20] = m0; \ out [21] = m1; \ out [22] = m2; \ out [23] = m3; \ INST_BARRIER \ m0 = in [24]; \ m1 = in [25]; \ m2 = in [26]; \ m3 = in [27]; \ out [24] = m0; \ out [25] = m1; \ out [26] = m2; \ out [27] = m3; \ INST_BARRIER \ m0 = in [28]; \ m1 = in [29]; \ m2 = in [30]; \ m3 = in [31]; \ out [28] = m0; \ out [29] = m1; \ out [30] = m2; \ out [31] = m3; \ INST_BARRIER \ in += 32; \ out += 32; \ } while(0) #define MOVE_16_OBJECTS(in,out) \ do { \ INST_BARRIER \ m0 = in [0]; \ m1 = in [1]; \ m2 = in [2]; \ m3 = in [3]; \ out [0] = m0; \ out [1] = m1; \ out [2] = m2; \ out [3] = m3; \ INST_BARRIER \ m0 = in [4]; \ m1 = in [5]; \ m2 = in [6]; \ m3 = in [7]; \ out [4] = m0; \ out [5] = m1; \ out [6] = m2; \ out [7] = m3; \ INST_BARRIER \ m0 = in [8]; \ m1 = in [9]; \ m2 = in [10]; \ m3 = in [11]; \ out [8] = m0; \ out [9] = m1; \ out [10] = m2; \ out [11] = m3; \ INST_BARRIER \ m0 = in [12]; \ m1 = in [13]; \ m2 = in [14]; \ m3 = in [15]; \ out [12] = m0; \ out [13] = m1; \ out [14] = m2; \ out [15] = m3; \ INST_BARRIER \ in += 16; \ out += 16; \ } while(0) #define MOVE_12_OBJECTS(in,out) \ do { \ INST_BARRIER \ m0 = in [0]; \ m1 = in [1]; \ m2 = in [2]; \ m3 = in [3]; \ out [0] = m0; \ out [1] = m1; \ out [2] = m2; \ out [3] = m3; \ INST_BARRIER \ m0 = in [4]; \ m1 = in [5]; \ m2 = in [6]; \ m3 = in [7]; \ out [4] = m0; \ out [5] = m1; \ out [6] = m2; \ out [7] = m3; \ INST_BARRIER \ m0 = in [8]; \ m1 = in [9]; \ m2 = in [10]; \ m3 = in [11]; \ out [8] = m0; \ out [9] = m1; \ out [10] = m2; \ out [11] = m3; \ INST_BARRIER \ in += 12; \ out += 12; \ } while(0) #define MOVE_11_OBJECTS(in,out) \ do { \ INST_BARRIER \ m0 = in [0]; \ m1 = in [1]; \ m2 = in [2]; \ m3 = in [3]; \ out [0] = m0; \ out [1] = m1; \ out [2] = m2; \ out [3] = m3; \ INST_BARRIER \ m0 = in [4]; \ m1 = in [5]; \ m2 = in [6]; \ m3 = in [7]; \ out [4] = m0; \ out [5] = m1; \ out [6] = m2; \ out [7] = m3; \ INST_BARRIER \ m0 = in [8]; \ m1 = in [9]; \ m2 = in [10]; \ out [8] = m0; \ out [9] = m1; \ out [10] = m2; \ INST_BARRIER \ in += 11; \ out += 11; \ } while(0) #define MOVE_10_OBJECTS(in,out) \ do { \ INST_BARRIER \ m0 = in [0]; \ m1 = in [1]; \ m2 = in [2]; \ m3 = in [3]; \ out [0] = m0; \ out [1] = m1; \ out [2] = m2; \ out [3] = m3; \ INST_BARRIER \ m0 = in [4]; \ m1 = in [5]; \ m2 = in [6]; \ m3 = in [7]; \ out [4] = m0; \ m0 = in [8]; \ out [5] = m1; \ m1 = in [9]; \ out [6] = m2; \ out [7] = m3; \ out [8] = m0; \ out [9] = m1; \ INST_BARRIER \ in += 10; \ out += 10; \ } while(0) #define MOVE_9_OBJECTS(in,out) \ do { \ INST_BARRIER \ m0 = in [0]; \ m1 = in [1]; \ m2 = in [2]; \ m3 = in [3]; \ out [0] = m0; \ out [1] = m1; \ out [2] = m2; \ out [3] = m3; \ INST_BARRIER \ m0 = in [4]; \ m1 = in [5]; \ m2 = in [6]; \ m3 = in [7]; \ out [4] = m0; \ out [5] = m1; \ out [6] = m2; \ out [7] = m3; \ INST_BARRIER \ m0 = in [8]; \ out [8] = m0; \ in += 9; \ out += 9; \ } while(0) #define MOVE_8_OBJECTS(in,out) \ do { \ INST_BARRIER \ m0 = in [0]; \ m1 = in [1]; \ m2 = in [2]; \ m3 = in [3]; \ out [0] = m0; \ out [1] = m1; \ out [2] = m2; \ out [3] = m3; \ INST_BARRIER \ m0 = in [4]; \ m1 = in [5]; \ m2 = in [6]; \ m3 = in [7]; \ out [4] = m0; \ out [5] = m1; \ out [6] = m2; \ out [7] = m3; \ INST_BARRIER \ in += 8; \ out += 8; \ } while(0) #define MOVE_7_OBJECTS(in,out) \ do { \ INST_BARRIER \ m0 = in [0]; \ m1 = in [1]; \ m2 = in [2]; \ m3 = in [3]; \ out [0] = m0; \ out [1] = m1; \ out [2] = m2; \ out [3] = m3; \ INST_BARRIER \ m0 = in [4]; \ m1 = in [5]; \ m2 = in [6]; \ out [4] = m0; \ out [5] = m1; \ out [6] = m2; \ INST_BARRIER \ in += 7; \ out += 7; \ } while(0) #define MOVE_6_OBJECTS(in,out) \ do { \ INST_BARRIER \ m0 = in [0]; \ m1 = in [1]; \ m2 = in [2]; \ m3 = in [3]; \ out [0] = m0; \ INST_BARRIER \ m0 = in [4]; \ out [1] = m1; \ INST_BARRIER \ m1 = in [5]; \ out [2] = m2; \ out [3] = m3; \ out [4] = m0; \ out [5] = m1; \ INST_BARRIER \ in += 6; \ out += 6; \ } while(0) #define MOVE_5_OBJECTS(in,out) \ do { \ INST_BARRIER \ m0 = in [0]; \ m1 = in [1]; \ m2 = in [2]; \ m3 = in [3]; \ INST_BARRIER \ out [0] = m0; \ m0 = in [4]; \ INST_BARRIER \ out [1] = m1; \ out [2] = m2; \ out [3] = m3; \ out [4] = m0; \ INST_BARRIER \ in += 5; \ out += 5; \ } while(0) #define MOVE_4_OBJECTS(in,out) \ do { \ INST_BARRIER \ m0 = in [0]; \ m1 = in [1]; \ m2 = in [2]; \ m3 = in [3]; \ out [0] = m0; \ out [1] = m1; \ out [2] = m2; \ out [3] = m3; \ INST_BARRIER \ in += 4; \ out += 4; \ } while(0) #define MOVE_3_OBJECTS(in,out) \ do { \ INST_BARRIER \ m0 = in [0]; \ m1 = in [1]; \ m2 = in [2]; \ out [0] = m0; \ out [1] = m1; \ out [2] = m2; \ INST_BARRIER \ in += 3; \ out += 3; \ } while(0) #define MOVE_2_OBJECTS(in,out) \ do { \ INST_BARRIER \ m0 = in [0]; \ m1 = in [1]; \ out [0] = m0; \ out [1] = m1; \ INST_BARRIER \ in += 2; \ out += 2; \ } while(0) #define MOVE_1_OBJECT(in,out) \ do { \ INST_BARRIER \ m0 = in [0]; \ out [0] = m0; \ INST_BARRIER \ in += 1; \ out += 1; \ } while(0) static inline void __inhibit_loop_to_libcall __int_memcpy (void *__restrict s1, const void *__restrict s2, size_t n) { int value = n; int loop_var; const int *in = s2; int *out = s1; int count; int m0,m1,m2,m3; /* This code currently give a stall for any value with a 1->2 in the low 5 bits, i.e. 1,2, 33,34 ? not acceptable! */ switch (value & 0x1f) { case 0: break; case 1: MOVE_1_OBJECT (in, out); break; case 2: MOVE_2_OBJECTS (in, out); break; case 3: MOVE_3_OBJECTS (in, out); break; case 4: MOVE_4_OBJECTS (in, out); break; case 5: MOVE_5_OBJECTS (in, out); break; case 6: MOVE_6_OBJECTS (in, out); break; case 7: MOVE_7_OBJECTS (in, out); break; case 8: MOVE_8_OBJECTS (in, out); break; case 9: MOVE_9_OBJECTS (in, out); break; case 10: MOVE_10_OBJECTS (in, out); break; case 11: MOVE_11_OBJECTS (in, out); break; case 12: MOVE_12_OBJECTS (in, out); break; case 13: MOVE_9_OBJECTS (in, out); MOVE_4_OBJECTS (in, out); break; case 14: MOVE_12_OBJECTS (in, out); MOVE_2_OBJECTS (in, out); break; case 15: MOVE_11_OBJECTS (in, out); MOVE_4_OBJECTS (in, out); break; case 16: MOVE_16_OBJECTS (in, out); break; case 17: MOVE_11_OBJECTS (in, out); MOVE_6_OBJECTS (in, out); break; case 18: MOVE_9_OBJECTS (in, out); MOVE_9_OBJECTS (in, out); break; case 19: MOVE_16_OBJECTS (in, out); MOVE_3_OBJECTS (in, out); break; case 20: MOVE_16_OBJECTS (in, out); MOVE_4_OBJECTS (in, out); break; case 21: MOVE_16_OBJECTS (in, out); MOVE_5_OBJECTS (in, out); break; case 22: MOVE_16_OBJECTS (in, out); MOVE_6_OBJECTS (in, out); break; case 23: MOVE_16_OBJECTS (in, out); MOVE_7_OBJECTS (in, out); break; case 24: MOVE_16_OBJECTS (in, out); MOVE_8_OBJECTS (in, out); break; case 25: MOVE_16_OBJECTS (in, out); MOVE_9_OBJECTS (in, out); break; case 26: MOVE_16_OBJECTS (in, out); MOVE_10_OBJECTS (in, out); break; case 27: MOVE_16_OBJECTS (in, out); MOVE_11_OBJECTS (in, out); break; case 28: MOVE_16_OBJECTS (in, out); MOVE_8_OBJECTS (in, out); MOVE_4_OBJECTS (in, out); break; case 29: MOVE_16_OBJECTS (in, out); MOVE_9_OBJECTS (in, out); MOVE_4_OBJECTS (in, out); break; case 30: MOVE_16_OBJECTS (in, out); MOVE_12_OBJECTS (in, out); MOVE_2_OBJECTS (in, out); break; case 31: MOVE_16_OBJECTS (in, out); MOVE_11_OBJECTS (in, out); MOVE_4_OBJECTS (in, out); break; } /* This loop governs the asmptoptic behaviour of this algorithm, for long word copies. */ count = value >> 5; for (loop_var = 0; loop_var < count; loop_var++) MOVE_32_OBJECTS (in, out); } static inline void __inhibit_loop_to_libcall __shrt_int_memcpy (void *__restrict s1, const void *__restrict s2, size_t n) { int value = n; int loop_var; const short int *in = s2; int short *out = s1; int count; int m0,m1,m2,m3; /* This code currently give a stall for any value with a 1->2 in the low 5 bits, i.e. 1,2, 33,34 ? not acceptable! */ switch (value & 0x1f) { case 0: break; case 1: MOVE_1_OBJECT (in, out); break; case 2: MOVE_2_OBJECTS (in, out); break; case 3: MOVE_3_OBJECTS (in, out); break; case 4: MOVE_4_OBJECTS (in, out); break; case 5: MOVE_5_OBJECTS (in, out); break; case 6: MOVE_6_OBJECTS (in, out); break; case 7: MOVE_7_OBJECTS (in, out); break; case 8: MOVE_8_OBJECTS (in, out); break; case 9: MOVE_9_OBJECTS (in, out); break; case 10: MOVE_10_OBJECTS (in, out); break; case 11: MOVE_11_OBJECTS (in, out); break; case 12: MOVE_12_OBJECTS (in, out); break; case 13: MOVE_9_OBJECTS (in, out); MOVE_4_OBJECTS (in, out); break; case 14: MOVE_12_OBJECTS (in, out); MOVE_2_OBJECTS (in, out); break; case 15: MOVE_11_OBJECTS (in, out); MOVE_4_OBJECTS (in, out); break; case 16: MOVE_16_OBJECTS (in, out); break; case 17: MOVE_11_OBJECTS (in, out); MOVE_6_OBJECTS (in, out); break; case 18: MOVE_9_OBJECTS (in, out); MOVE_9_OBJECTS (in, out); break; case 19: MOVE_16_OBJECTS (in, out); MOVE_3_OBJECTS (in, out); break; case 20: MOVE_16_OBJECTS (in, out); MOVE_4_OBJECTS (in, out); break; case 21: MOVE_16_OBJECTS (in, out); MOVE_5_OBJECTS (in, out); break; case 22: MOVE_16_OBJECTS (in, out); MOVE_6_OBJECTS (in, out); break; case 23: MOVE_16_OBJECTS (in, out); MOVE_7_OBJECTS (in, out); break; case 24: MOVE_16_OBJECTS (in, out); MOVE_8_OBJECTS (in, out); break; case 25: MOVE_16_OBJECTS (in, out); MOVE_9_OBJECTS (in, out); break; case 26: MOVE_16_OBJECTS (in, out); MOVE_10_OBJECTS (in, out); break; case 27: MOVE_16_OBJECTS (in, out); MOVE_11_OBJECTS (in, out); break; case 28: MOVE_16_OBJECTS (in, out); MOVE_8_OBJECTS (in, out); MOVE_4_OBJECTS (in, out); break; case 29: MOVE_16_OBJECTS (in, out); MOVE_9_OBJECTS (in, out); MOVE_4_OBJECTS (in, out); break; case 30: MOVE_16_OBJECTS (in, out); MOVE_12_OBJECTS (in, out); MOVE_2_OBJECTS (in, out); break; case 31: MOVE_16_OBJECTS (in, out); MOVE_11_OBJECTS (in, out); MOVE_4_OBJECTS (in, out); break; } /* This loop governs the asmptoptic behaviour of this algorithm, for long word copies. */ count = value >> 5; for (loop_var = 0; loop_var < count; loop_var++) MOVE_32_OBJECTS (in, out); } static inline void __inhibit_loop_to_libcall __byte_memcpy (void *__restrict s1, const void *__restrict s2, size_t n) { int value = n; int loop_var; const char *in = s2; char *out = s1; int count; int m0,m1,m2,m3; /* This code currently give a stall for any value with a 1->2 in the low 5 bits, i.e. 1,2, 33,34 ? not acceptable! */ switch (value & 0x1f) { case 0: break; case 1: MOVE_1_OBJECT (in, out); break; case 2: MOVE_2_OBJECTS (in, out); break; case 3: MOVE_3_OBJECTS (in, out); break; case 4: MOVE_4_OBJECTS (in, out); break; case 5: MOVE_5_OBJECTS (in, out); break; case 6: MOVE_6_OBJECTS (in, out); break; case 7: MOVE_7_OBJECTS (in, out); break; case 8: MOVE_8_OBJECTS (in, out); break; case 9: MOVE_9_OBJECTS (in, out); break; case 10: MOVE_10_OBJECTS (in, out); break; case 11: MOVE_11_OBJECTS (in, out); break; case 12: MOVE_12_OBJECTS (in, out); break; case 13: MOVE_9_OBJECTS (in, out); MOVE_4_OBJECTS (in, out); break; case 14: MOVE_12_OBJECTS (in, out); MOVE_2_OBJECTS (in, out); break; case 15: MOVE_11_OBJECTS (in, out); MOVE_4_OBJECTS (in, out); break; case 16: MOVE_16_OBJECTS (in, out); break; case 17: MOVE_11_OBJECTS (in, out); MOVE_6_OBJECTS (in, out); break; case 18: MOVE_9_OBJECTS (in, out); MOVE_9_OBJECTS (in, out); break; case 19: MOVE_16_OBJECTS (in, out); MOVE_3_OBJECTS (in, out); break; case 20: MOVE_16_OBJECTS (in, out); MOVE_4_OBJECTS (in, out); break; case 21: MOVE_16_OBJECTS (in, out); MOVE_5_OBJECTS (in, out); break; case 22: MOVE_16_OBJECTS (in, out); MOVE_6_OBJECTS (in, out); break; case 23: MOVE_16_OBJECTS (in, out); MOVE_7_OBJECTS (in, out); break; case 24: MOVE_16_OBJECTS (in, out); MOVE_8_OBJECTS (in, out); break; case 25: MOVE_16_OBJECTS (in, out); MOVE_9_OBJECTS (in, out); break; case 26: MOVE_16_OBJECTS (in, out); MOVE_10_OBJECTS (in, out); break; case 27: MOVE_16_OBJECTS (in, out); MOVE_11_OBJECTS (in, out); break; case 28: MOVE_16_OBJECTS (in, out); MOVE_8_OBJECTS (in, out); MOVE_4_OBJECTS (in, out); break; case 29: MOVE_16_OBJECTS (in, out); MOVE_9_OBJECTS (in, out); MOVE_4_OBJECTS (in, out); break; case 30: MOVE_16_OBJECTS (in, out); MOVE_12_OBJECTS (in, out); MOVE_2_OBJECTS (in, out); break; case 31: MOVE_16_OBJECTS (in, out); MOVE_11_OBJECTS (in, out); MOVE_4_OBJECTS (in, out); break; } /* This loop governs the asmptoptic behaviour of this algorithm, for long word copies. */ count = value >> 5; for (loop_var = 0; loop_var < count; loop_var++) MOVE_32_OBJECTS (in, out); } /* Exposed interface. */ void * __inhibit_loop_to_libcall memcpy (void *__restrict s1, const void *__restrict s2, size_t n) { void *result = s1; /* None of the following handles copying zero bytes. */ if (n != 0) { unsigned test = (unsigned) s2 | (unsigned) s1 | (unsigned) n; if (test & 1) __byte_memcpy (s1, s2, n); else if (test & 2) __shrt_int_memcpy (s1, s2, n >> 1); else #ifdef __VISIUM_ARCH_BMI__ __asm__ __volatile__ ("bmd %0,%1,%2" : "+t" (s1), "+u" (s2), "+v" (n) : : "r4", "r5", "r6", "memory"); #else __int_memcpy (s1, s2, n >> 2); #endif /* __VISIUM_ARCH_BMI__ */ } return result; } picolibc-1.7.4/newlib/libc/machine/visium/memcpy.h000066400000000000000000000033241414576234500221000ustar00rootroot00000000000000/* memcpy for the Visium processor. Copyright (c) 2015 Rolls-Royce Controls and Data Services Limited. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Rolls-Royce Controls and Data Services Limited nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ void * memcpy (void *__restrict s1, const void *__restrict s2, size_t n); picolibc-1.7.4/newlib/libc/machine/visium/memmove.c000066400000000000000000000040401414576234500222420ustar00rootroot00000000000000/* memmove for the Visium processor. Copyright (c) 2015 Rolls-Royce Controls and Data Services Limited. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Rolls-Royce Controls and Data Services Limited nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include void * memmove (void *dst, const void *src, size_t len) { char *d = dst; const char *s = src; /* The overlap case is allegedly rare - with this implementation it will have a high penalty on the GR6. */ if (s < d && d < s + len) { s += len; d += len; while (len--) *--d = *--s; return dst; } return memcpy (dst, src, len); } picolibc-1.7.4/newlib/libc/machine/visium/memset.c000066400000000000000000000337721414576234500221050ustar00rootroot00000000000000/* memset for the Visium processor. Copyright (c) 2015 Rolls-Royce Controls and Data Services Limited. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Rolls-Royce Controls and Data Services Limited nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* This file must be kept in sync with libgcc/config/visium/memset.c */ #include #include "memset.h" #include "../../string/local.h" #define SET_32_OBJECTS(out) \ do { \ out [0] = m0; \ out [1] = m0; \ out [2] = m0; \ out [3] = m0; \ out [4] = m0; \ out [5] = m0; \ out [6] = m0; \ out [7] = m0; \ out [8] = m0; \ out [9] = m0; \ out [10] = m0; \ out [11] = m0; \ out [12] = m0; \ out [13] = m0; \ out [14] = m0; \ out [15] = m0; \ out [16] = m0; \ out [17] = m0; \ out [18] = m0; \ out [19] = m0; \ out [20] = m0; \ out [21] = m0; \ out [22] = m0; \ out [23] = m0; \ out [24] = m0; \ out [25] = m0; \ out [26] = m0; \ out [27] = m0; \ out [28] = m0; \ out [29] = m0; \ out [30] = m0; \ out [31] = m0; \ out += 32; \ } while(0) #define SET_16_OBJECTS(out) \ do { \ out [0] = m0; \ out [1] = m0; \ out [2] = m0; \ out [3] = m0; \ out [4] = m0; \ out [5] = m0; \ out [6] = m0; \ out [7] = m0; \ out [8] = m0; \ out [9] = m0; \ out [10] = m0; \ out [11] = m0; \ out [12] = m0; \ out [13] = m0; \ out [14] = m0; \ out [15] = m0; \ out += 16; \ } while(0) #define SET_12_OBJECTS(out) \ do { \ out [0] = m0; \ out [1] = m0; \ out [2] = m0; \ out [3] = m0; \ out [4] = m0; \ out [5] = m0; \ out [6] = m0; \ out [7] = m0; \ out [8] = m0; \ out [9] = m0; \ out [10] = m0; \ out [11] = m0; \ out += 12; \ } while(0) #define SET_11_OBJECTS(out) \ do { \ out [0] = m0; \ out [1] = m0; \ out [2] = m0; \ out [3] = m0; \ out [4] = m0; \ out [5] = m0; \ out [6] = m0; \ out [7] = m0; \ out [8] = m0; \ out [9] = m0; \ out [10] = m0; \ out += 11; \ } while(0) #define SET_10_OBJECTS(out) \ do { \ out [0] = m0; \ out [1] = m0; \ out [2] = m0; \ out [3] = m0; \ out [4] = m0; \ out [5] = m0; \ out [6] = m0; \ out [7] = m0; \ out [8] = m0; \ out [9] = m0; \ out += 10; \ } while(0) #define SET_9_OBJECTS(out) \ do { \ out [0] = m0; \ out [1] = m0; \ out [2] = m0; \ out [3] = m0; \ out [4] = m0; \ out [5] = m0; \ out [6] = m0; \ out [7] = m0; \ out [8] = m0; \ out += 9; \ } while(0) #define SET_8_OBJECTS(out) \ do { \ out [0] = m0; \ out [1] = m0; \ out [2] = m0; \ out [3] = m0; \ out [4] = m0; \ out [5] = m0; \ out [6] = m0; \ out [7] = m0; \ out += 8; \ } while(0) #define SET_7_OBJECTS(out) \ do { \ out [0] = m0; \ out [1] = m0; \ out [2] = m0; \ out [3] = m0; \ out [4] = m0; \ out [5] = m0; \ out [6] = m0; \ out += 7; \ } while(0) #define SET_6_OBJECTS(out) \ do { \ out [0] = m0; \ out [1] = m0; \ out [2] = m0; \ out [3] = m0; \ out [4] = m0; \ out [5] = m0; \ out += 6; \ } while(0) #define SET_5_OBJECTS(out) \ do { \ out [0] = m0; \ out [1] = m0; \ out [2] = m0; \ out [3] = m0; \ out [4] = m0; \ out += 5; \ } while(0) #define SET_4_OBJECTS(out) \ do { \ out [0] = m0; \ out [1] = m0; \ out [2] = m0; \ out [3] = m0; \ out += 4; \ } while(0) #define SET_3_OBJECTS(out) \ do { \ out [0] = m0; \ out [1] = m0; \ out [2] = m0; \ out += 3; \ } while(0) #define SET_2_OBJECTS(out) \ do { \ out [0] = m0; \ out [1] = m0; \ out += 2; \ } while(0) #define SET_1_OBJECT(out) \ do { \ out [0] = m0; \ out += 1; \ } while(0) static inline void __inhibit_loop_to_libcall __int_memset (void *__restrict s1, int val, size_t n) { int value = n; int loop_var; int *out = s1; int count; int m0 = val; /* This code currently give a stall for any value with a 1->2 in the low 5 bits, i.e. 1,2, 33,34 ? not acceptable! */ switch (value & 0x1f) { case 0: break; case 1: SET_1_OBJECT (out); break; case 2: SET_2_OBJECTS (out); break; case 3: SET_3_OBJECTS (out); break; case 4: SET_4_OBJECTS (out); break; case 5: SET_5_OBJECTS (out); break; case 6: SET_6_OBJECTS (out); break; case 7: SET_7_OBJECTS (out); break; case 8: SET_8_OBJECTS (out); break; case 9: SET_9_OBJECTS (out); break; case 10: SET_10_OBJECTS (out); break; case 11: SET_11_OBJECTS (out); break; case 12: SET_12_OBJECTS (out); break; case 13: SET_9_OBJECTS (out); SET_4_OBJECTS (out); break; case 14: SET_12_OBJECTS (out); SET_2_OBJECTS (out); break; case 15: SET_11_OBJECTS (out); SET_4_OBJECTS (out); break; case 16: SET_16_OBJECTS (out); break; case 17: SET_11_OBJECTS (out); SET_6_OBJECTS (out); break; case 18: SET_9_OBJECTS (out); SET_9_OBJECTS (out); break; case 19: SET_16_OBJECTS (out); SET_3_OBJECTS (out); break; case 20: SET_16_OBJECTS (out); SET_4_OBJECTS (out); break; case 21: SET_16_OBJECTS (out); SET_5_OBJECTS (out); break; case 22: SET_16_OBJECTS (out); SET_6_OBJECTS (out); break; case 23: SET_16_OBJECTS (out); SET_7_OBJECTS (out); break; case 24: SET_16_OBJECTS (out); SET_8_OBJECTS (out); break; case 25: SET_16_OBJECTS (out); SET_9_OBJECTS (out); break; case 26: SET_16_OBJECTS (out); SET_10_OBJECTS (out); break; case 27: SET_16_OBJECTS (out); SET_11_OBJECTS (out); break; case 28: SET_16_OBJECTS (out); SET_8_OBJECTS (out); SET_4_OBJECTS (out); break; case 29: SET_16_OBJECTS (out); SET_9_OBJECTS (out); SET_4_OBJECTS (out); break; case 30: SET_16_OBJECTS (out); SET_12_OBJECTS (out); SET_2_OBJECTS (out); break; case 31: SET_16_OBJECTS (out); SET_11_OBJECTS (out); SET_4_OBJECTS (out); break; } /* This loop governs the asmptoptic behaviour of this algorithm, for long word copies. */ count = value >> 5; for (loop_var = 0; loop_var < count; loop_var++) SET_32_OBJECTS (out); } static inline void __inhibit_loop_to_libcall __short_int_memset (void *__restrict s1, int val, size_t n) { int value = n; int loop_var; int short *out = s1; int count; int m0 = val; /* This code currently give a stall for any value with a 1->2 in the low 5 bits, i.e. 1,2, 33,34 ? not acceptable! */ switch (value & 0x1f) { case 0: break; case 1: SET_1_OBJECT (out); break; case 2: SET_2_OBJECTS (out); break; case 3: SET_3_OBJECTS (out); break; case 4: SET_4_OBJECTS (out); break; case 5: SET_5_OBJECTS (out); break; case 6: SET_6_OBJECTS (out); break; case 7: SET_7_OBJECTS (out); break; case 8: SET_8_OBJECTS (out); break; case 9: SET_9_OBJECTS (out); break; case 10: SET_10_OBJECTS (out); break; case 11: SET_11_OBJECTS (out); break; case 12: SET_12_OBJECTS (out); break; case 13: SET_9_OBJECTS (out); SET_4_OBJECTS (out); break; case 14: SET_12_OBJECTS (out); SET_2_OBJECTS (out); break; case 15: SET_11_OBJECTS (out); SET_4_OBJECTS (out); break; case 16: SET_16_OBJECTS (out); break; case 17: SET_11_OBJECTS (out); SET_6_OBJECTS (out); break; case 18: SET_9_OBJECTS (out); SET_9_OBJECTS (out); break; case 19: SET_16_OBJECTS (out); SET_3_OBJECTS (out); break; case 20: SET_16_OBJECTS (out); SET_4_OBJECTS (out); break; case 21: SET_16_OBJECTS (out); SET_5_OBJECTS (out); break; case 22: SET_16_OBJECTS (out); SET_6_OBJECTS (out); break; case 23: SET_16_OBJECTS (out); SET_7_OBJECTS (out); break; case 24: SET_16_OBJECTS (out); SET_8_OBJECTS (out); break; case 25: SET_16_OBJECTS (out); SET_9_OBJECTS (out); break; case 26: SET_16_OBJECTS (out); SET_10_OBJECTS (out); break; case 27: SET_16_OBJECTS (out); SET_11_OBJECTS (out); break; case 28: SET_16_OBJECTS (out); SET_8_OBJECTS (out); SET_4_OBJECTS (out); break; case 29: SET_16_OBJECTS (out); SET_9_OBJECTS (out); SET_4_OBJECTS (out); break; case 30: SET_16_OBJECTS (out); SET_12_OBJECTS (out); SET_2_OBJECTS (out); break; case 31: SET_16_OBJECTS (out); SET_11_OBJECTS (out); SET_4_OBJECTS (out); break; } /* This loop governs the asmptoptic behaviour of this algorithm, for long word copies. */ count = value >> 5; for (loop_var = 0; loop_var < count; loop_var++) SET_32_OBJECTS (out); } static inline void __inhibit_loop_to_libcall __byte_memset (void *__restrict s1, int val, size_t n) { int value = n; int loop_var; char *out = s1; int count; int m0 = val; /* This code currently give a stall for any value with a 1->2 in the low 5 bits, i.e. 1,2, 33,34 ? not acceptable! */ switch (value & 0x1f) { case 0: break; case 1: SET_1_OBJECT (out); break; case 2: SET_2_OBJECTS (out); break; case 3: SET_3_OBJECTS (out); break; case 4: SET_4_OBJECTS (out); break; case 5: SET_5_OBJECTS (out); break; case 6: SET_6_OBJECTS (out); break; case 7: SET_7_OBJECTS (out); break; case 8: SET_8_OBJECTS (out); break; case 9: SET_9_OBJECTS (out); break; case 10: SET_10_OBJECTS (out); break; case 11: SET_11_OBJECTS (out); break; case 12: SET_12_OBJECTS (out); break; case 13: SET_9_OBJECTS (out); SET_4_OBJECTS (out); break; case 14: SET_12_OBJECTS (out); SET_2_OBJECTS (out); break; case 15: SET_11_OBJECTS (out); SET_4_OBJECTS (out); break; case 16: SET_16_OBJECTS (out); break; case 17: SET_11_OBJECTS (out); SET_6_OBJECTS (out); break; case 18: SET_9_OBJECTS (out); SET_9_OBJECTS (out); break; case 19: SET_16_OBJECTS (out); SET_3_OBJECTS (out); break; case 20: SET_16_OBJECTS (out); SET_4_OBJECTS (out); break; case 21: SET_16_OBJECTS (out); SET_5_OBJECTS (out); break; case 22: SET_16_OBJECTS (out); SET_6_OBJECTS (out); break; case 23: SET_16_OBJECTS (out); SET_7_OBJECTS (out); break; case 24: SET_16_OBJECTS (out); SET_8_OBJECTS (out); break; case 25: SET_16_OBJECTS (out); SET_9_OBJECTS (out); break; case 26: SET_16_OBJECTS (out); SET_10_OBJECTS (out); break; case 27: SET_16_OBJECTS (out); SET_11_OBJECTS (out); break; case 28: SET_16_OBJECTS (out); SET_8_OBJECTS (out); SET_4_OBJECTS (out); break; case 29: SET_16_OBJECTS (out); SET_9_OBJECTS (out); SET_4_OBJECTS (out); break; case 30: SET_16_OBJECTS (out); SET_12_OBJECTS (out); SET_2_OBJECTS (out); break; case 31: SET_16_OBJECTS (out); SET_11_OBJECTS (out); SET_4_OBJECTS (out); break; } /* This loop governs the asmptoptic behaviour of this algorithm, for long word copies. */ count = value >> 5; for (loop_var = 0; loop_var < count; loop_var++) SET_32_OBJECTS (out); } /* Exposed interface. */ void * __inhibit_loop_to_libcall memset (void *s, int c, size_t n) { void *result = s; /* None of the following handles setting zero bytes. */ if (n != 0) { unsigned test = (unsigned) s | (unsigned) n; if (test & 1) __byte_memset (s, c, n); else if (test & 2) { short int sc = (short int) ((c << 8) + (char) c); __short_int_memset (s, sc, n >> 1); } else { int ic = (c << 24) + ((char) c << 16) + ((char) c << 8) + (char) c; __int_memset (s, ic, n >> 2); } } return result; } picolibc-1.7.4/newlib/libc/machine/visium/memset.h000066400000000000000000000032641414576234500221030ustar00rootroot00000000000000/* memset for the Visium processor. Copyright (c) 2015 Rolls-Royce Controls and Data Services Limited. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Rolls-Royce Controls and Data Services Limited nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ void * memset (void *s, int c, size_t n); picolibc-1.7.4/newlib/libc/machine/visium/setjmp.S000066400000000000000000000044521414576234500220660ustar00rootroot00000000000000/* setjmp/longjmp for the Visium processor. Copyright (c) 2015 Rolls-Royce Controls and Data Services Limited. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Rolls-Royce Controls and Data Services Limited nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ .text .globl setjmp .type setjmp, @function setjmp: write.l 0(r1),r11 write.l 1(r1),r12 write.l 2(r1),r13 write.l 3(r1),r14 write.l 4(r1),r15 write.l 5(r1),r16 write.l 6(r1),r17 write.l 7(r1),r18 write.l 8(r1),r19 write.l 9(r1),r21 write.l 10(r1),r22 write.l 11(r1),r23 bra tr,r21,r0 moviq r1,0 .size setjmp, .-setjmp .globl longjmp .type longjmp, @function longjmp: read.l r11,0(r1) read.l r12,1(r1) read.l r13,2(r1) read.l r14,3(r1) read.l r15,4(r1) read.l r16,5(r1) read.l r17,6(r1) read.l r18,7(r1) read.l r19,8(r1) read.l r21,9(r1) read.l r22,10(r1) read.l r23,11(r1) bra tr,r21,r0 move.l r1,r2 .size longjmp, .-longjmp picolibc-1.7.4/newlib/libc/machine/w65/000077500000000000000000000000001414576234500175405ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/w65/cmpsi.c000066400000000000000000000021561414576234500210230ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ union u { struct { short int msw; unsigned short lsw; } w; long l; }; int __cmpsi2(long arga, short int msw_b, unsigned short int lsw_b) { union u u; u.l = arga; if (u.w.msw != msw_b) { if (u.w.msw < msw_b) return 0; return 2; } if (u.w.lsw != lsw_b) { if (u.w.lsw < lsw_b) return 0; return 2; } return 1; } picolibc-1.7.4/newlib/libc/machine/w65/divsi3.c000066400000000000000000000054131414576234500211100ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #define divnorm(num, den, sign) \ { \ if (num < 0) \ { \ num = -num; \ sign = 1; \ } \ else \ { \ sign = 0; \ } \ \ if (den < 0) \ { \ den = - den; \ sign = 1 - sign; \ } \ } static unsigned long divmodsi4(int modwanted, unsigned long num, unsigned long den) { long int bit = 1; long int res = 0; long prevden; while (den < num && bit && !(den & (1L<<31))) { den <<=1; bit <<=1; } while (bit) { if (num >= den) { num -= den; res |= bit; } bit >>=1; den >>=1; } if (modwanted) return num; return res; } #define exitdiv(sign, res) if (sign) { res = - res;} return res; long __modsi3 (long numerator, long denominator) { int sign = 0; long dividend; long modul; if (numerator < 0) { numerator = -numerator; sign = 1; } if (denominator < 0) { denominator = -denominator; } modul = divmodsi4 (1, numerator, denominator); if (sign) return - modul; return modul; } long __divsi3 (long numerator, long denominator) { int sign; long dividend; long modul; divnorm (numerator, denominator, sign); dividend = divmodsi4 (0, numerator, denominator); exitdiv (sign, dividend); } long __umodsi3 (unsigned long numerator, unsigned long denominator) { long dividend; long modul; modul= divmodsi4 (1, numerator, denominator); return modul; } long __udivsi3 (unsigned long numerator, unsigned long denominator) { int sign; long dividend; long modul; dividend = divmodsi4 (0, numerator, denominator); return dividend; } #ifdef TEST main () { long int i, j, k, m; for (i = -10000; i < 10000; i += 8) { for (j = -10000; j < 10000; j += 11) { k = i / j; m = __divsi3 (i, j); if (k != m) printf ("fail %d %d %d %d\n", i, j, k, m); } } } #endif picolibc-1.7.4/newlib/libc/machine/w65/lshrhi.S000077500000000000000000000025211414576234500211600ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ .global ___lshrhi15 ___lshrhi15: lsr a .global ___lshrhi14 ___lshrhi14: lsr a .global ___lshrhi13 ___lshrhi13: lsr a .global ___lshrhi12 ___lshrhi12: lsr a .global ___lshrhi11 ___lshrhi11: lsr a .global ___lshrhi10 ___lshrhi10: lsr a .global ___lshrhi9 ___lshrhi9: lsr a .global ___lshrhi8 ___lshrhi8: lsr a .global ___lshrhi7 ___lshrhi7: lsr a .global ___lshrhi6 ___lshrhi6: lsr a .global ___lshrhi5 ___lshrhi5: lsr a .global ___lshrhi4 ___lshrhi4: lsr a .global ___lshrhi3 ___lshrhi3: lsr a .global ___lshrhi2 ___lshrhi2: lsr a lsr a rtl picolibc-1.7.4/newlib/libc/machine/w65/mulsi3.c000066400000000000000000000016521414576234500211240ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ long __mulsi3(unsigned long a, unsigned long b) { long res = 0; while (a) { if (a & 1) { res += b; } b <<= 1; a >>=1; } return res; } picolibc-1.7.4/newlib/libc/machine/w65/sdivhi3.S000077500000000000000000000021501414576234500212360ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ .global ___sdivhi3 ___sdivhi3: lda udv ply beq Lend !if positive result eor #0xFFFF !negate result inc a Lend: sta ___udivhi3 stx */ #if defined __thumb__ #include "../../string/memchr.c" #else #include #include "xscale.h" void * memchr (const void *start, int c, size_t len) { const char *str = start; if (len == 0) return 0; __asm__(PRELOADSTR ("%0") : : "r" (start)); c &= 0xff; #ifndef __OPTIMIZE_SIZE__ /* Skip unaligned part. */ if ((long)str & 3) { str--; do { if (*++str == c) return (void *)str; } while (((long)str & 3) != 0 && --len > 0); } if (len > 3) { unsigned int c2 = c + (c << 8); c2 += c2 << 16; /* Load two constants: R7 = 0xfefefeff [ == ~(0x80808080 << 1) ] R6 = 0x80808080 */ __asm__( "mov r6, #0x80\n\ add r6, r6, #0x8000\n\ add r6, r6, r6, lsl #16\n\ mvn r7, r6, lsl #1\n\ \n\ 0:\n\ cmp %1, #0x7\n\ bls 1f\n\ \n\ ldmia %0!, { r3, r9 }\n\ " PRELOADSTR ("%0") "\n\ sub %1, %1, #8\n\ eor r3, r3, %2\n\ eor r9, r9, %2\n\ add r2, r3, r7\n\ add r8, r9, r7\n\ bic r2, r2, r3\n\ bic r8, r8, r9\n\ and r1, r2, r6\n\ and r9, r8, r6\n\ orrs r1, r1, r9\n\ beq 0b\n\ \n\ add %1, %1, #8\n\ sub %0, %0, #8\n\ 1:\n\ cmp %1, #0x3\n\ bls 2f\n\ \n\ ldr r3, [%0], #4\n\ " PRELOADSTR ("%0") "\n\ sub %1, %1, #4\n\ eor r3, r3, %2\n\ add r2, r3, r7\n\ bic r2, r2, r3\n\ ands r1, r2, r6\n\ beq 1b\n\ \n\ sub %0, %0, #4\n\ add %1, %1, #4\n\ 2:\n\ " : "=&r" (str), "=&r" (len) : "r" (c2), "0" (str), "1" (len) : "r1", "r2", "r3", "r6", "r7", "r8", "r9", "cc"); } #endif while (len-- > 0) { if (*str == c) return (void *)str; str++; } return 0; } #endif picolibc-1.7.4/newlib/libc/machine/xscale/memcmp.c000066400000000000000000000101571414576234500220240ustar00rootroot00000000000000/* Copyright (c) 2000 Nick Clifton */ #if defined __thumb__ #include "../../string/memcmp.c" #else #include #include "xscale.h" int memcmp (const void * s1, const void * s2, size_t len) { int result; __asm__( #ifndef __OPTIMIZE_SIZE__ "\n\ cmp %2, #0x3 @ Is the length a multiple of four ?\n\ bls 6f @ no = goto SLOW CHECK\n\ and r2, %0, #0x3 @ get alignment of first pointer\n\ and r3, %1, #0x3 @ get alignment of second pointer\n\ cmp r2, r3 @ Do the two pointers share the same alignment ?\n\ bne 6f @ no = goto SLOW CHECK\n\ mov lr, %0 @ copy first pointer into LR\n\ mov r4, %1 @ copy second pointer into R4\n\ cmp r2, #0x0 @ Are we comparing word aligned pointers ?\n\ beq 3f @ yes = goto START WORD CHECK LOOP\n\ b 1f @ jump to LOOP TEST\n\ 0: @ LOOP START\n\ ldrb r2, [lr], #1 @ load byte from LR, post inc.\n\ " PRELOADSTR("lr") " @ preload\n\ ldrb r3, [r4], #1 @ load byte from R4, post inc.\n\ " PRELOADSTR("r4") " @ preload\n\ cmp r2, r3 @ are the two bytes the same ?\n\ bne 5f @ no = goto EXIT\n\ tst lr, #0x3 @ has the LR become word aligned ?\n\ bne 1f @ no = skip the next test\n\ cmp %2, #4 @ is the count >= 4 ?\n\ bhs 3f @ yes = goto START WORD CHECK LOOP\n\ 1: @ LOOP TEST\n\ sub %2, %2, #1 @ decrement count by one\n\ cmn %2, #0x1 @ has the count reached -1 ?\n\ bne 0b @ no = loop back to LOOP START\n\ b 4f @ goto PASS END\n\ \n\ 0: @ ??\n\ cmp %2, #0x7 @ Is the count a multiple of 8 ?\n\ bls 3f @ no = goto ???\n\ ldmia lr,{r2, r3} @ get two words from first pointer, post inc\n\ ldmia r4,{r5, r6} @ get two words from second pointer, post inc\n\ sub %2, %2, #0x4 @ decrement count by 4\n\ cmp r2, r5 @ has the count reached ????\n\ bne 1f @ no = goto\n\ sub %2, %2, #0x4 @ decrement the count by 4\n\ add lr, lr, #0x4 @ add 4 to first pointer\n\ add r4, r4, #0x4 @ add 4 to second pointer\n\ cmp r3, r6 @ ???\n\ beq 0b @ goto ???\n\ 1: @ ??\n\ add %2, %2, #0x4 @ Add four to count\n\ sub %0, lr, #0x4 @ decrement first pointer by 4\n\ sub %1, r4, #0x4 @ decrement second pointer by 4\n\ b 6f @ goto SLOW CHECK\n\ \n\ 3: @ START WORD CHECK LOOP\n\ cmp %2, #0x3 @ is the count <= 3 ?\n\ bls 1f @ yes = goto CHECK BYTES BY HAND\n\ ldr r2, [lr], #4 @ get word from LR, post inc\n\ ldr r3, [r4], #4 @ get word from R4, post inc\n\ sub %2, %2, #4 @ decrement count by 4\n\ cmp r2, r3 @ are the two words the same ?\n\ bne 1f @ no = goto CHECK WORD CONTENTS\n\ 0: @ WORD CHECK LOOP\n\ cmp %2, #0x3 @ is the count <= 3 ?\n\ bls 1f @ yes = goto CHECK BYTES BY HAND\n\ ldr r2, [lr], #4 @ load word from LR, post inc\n\ " PRELOADSTR("lr") " @ preload\n\ ldr r3, [r4], #4 @ load word from R4, post inc\n\ " PRELOADSTR("r4") " @ preload\n\ sub %2, %2, #4 @ decrement count by 4\n\ cmp r2, r3 @ are the two words the same ?\n\ beq 0b @ yes = goto WORD CHECK LOOP\n\ 1: @ CHECK BYTES BY HAND\n\ sub %0, lr, #0x4 @ move LR back a word and put into first pointer\n\ sub %1, r4, #0x4 @ move R4 back a word and put into second pointer\n\ add %2, %2, #4 @ increment the count by 4\n\ @ fall through into SLOW CHECK" #endif /* !__OPTIMIZE_SIZE__ */ "\n\ 6: @ SLOW CHECK\n\ sub %2, %2, #1 @ Decrement the count by one\n\ cmn %2, #0x1 @ Has the count reached -1 ?\n\ beq 4f @ Yes - we are finished, goto PASS END\n\ 0: @ LOOP1\n\ ldrb r2, [%0], #1 @ get byte from first pointer\n\ " PRELOADSTR("%0") " @ preload first pointer\n\ ldrb r3, [%1], #1 @ get byte from second pointer\n\ " PRELOADSTR("%1") " @ preload second pointer\n\ cmp r2, r3 @ compare the two loaded bytes\n\ bne 5f @ if they are not equal goto EXIT\n\ sub %2, %2, #1 @ decremented count by 1\n\ cmn %2, #0x1 @ has the count reached -1 ?\n\ bne 0b @ no = then go back to LOOP1\n\ 4: @ PASS END\n\ mov r3, r2 @ Default return value is 0\n\ 5: @ EXIT\n\ rsb %0, r3, r2 @ return difference between last two bytes loaded" : "=r" (result), "=&r" (s2), "=&r" (len) : "0" (s1), "1" (s2), "2" (len) : "r2", "r3", "r4", "r5", "r6", "cc", "lr"); return result; } #endif picolibc-1.7.4/newlib/libc/machine/xscale/memcpy.c000066400000000000000000000030531414576234500220350ustar00rootroot00000000000000/* Copyright (c) 2000 Nick Clifton */ #if defined __thumb__ #include "../../string/memcpy.c" #else #include #include "xscale.h" #include "../../string/local.h" void * __inhibit_loop_to_libcall memcpy (void *__restrict dst0, const void *__restrict src0, size_t len) { int dummy; __asm__ volatile ( #ifndef __OPTIMIZE_SIZE__ "cmp %2, #0x3\n\ bls 3f\n\ and lr, %1, #0x3\n\ and r3, %0, #0x3\n\ cmp lr, r3\n\ bne 3f\n\ cmp lr, #0x0\n\ beq 2f\n\ b 1f\n\ 0:\n\ ldrb r3, [%1], #1\n\ " PRELOADSTR ("%1") "\n\ tst %1, #0x3\n\ strb r3, [%0], #1\n\ beq 3f\n\ 1:\n\ sub %2, %2, #1\n\ cmn %2, #1\n\ bne 0b\n\ 2:\n\ cmp %2, #0xf\n\ bls 1f\n\ 0:\n\ ldmia %1!, { r3, r4, r5, lr }\n\ " PRELOADSTR ("%1") "\n\ \n\ sub %2, %2, #16\n\ cmp %2, #0xf\n\ stmia %0!, { r3, r4, r5, lr }\n\ bhi 0b\n\ 1:\n\ cmp %2, #0x7\n\ bls 1f\n\ 0:\n\ ldmia %1!, { r3, r4 }\n\ " PRELOADSTR ("%1") "\n\ \n\ sub %2, %2, #8\n\ cmp %2, #0x7\n\ stmia %0!, { r3, r4 }\n\ bhi 0b\n\ 1:\n\ cmp %2, #0x3\n\ bls 3f\n\ 0:\n\ sub %2, %2, #4\n\ ldr r3, [%1], #4\n\ " PRELOADSTR ("%1") "\n\ \n\ cmp %2, #0x3\n\ str r3, [%0], #4\n\ bhi 0b\n\ " #endif /* !__OPTIMIZE_SIZE__ */ "\n\ 3:\n\ " PRELOADSTR ("%1") "\n\ sub %2, %2, #1\n\ cmn %2, #1\n\ beq 1f\n\ 0:\n\ sub %2, %2, #1\n\ ldrb r3, [%1], #1\n\ " PRELOADSTR ("%1") "\n\ cmn %2, #1\n\ strb r3, [%0], #1\n\ bne 0b\n\ 1:" : "=&r" (dummy), "=&r" (src0), "=&r" (len) : "0" (dst0), "1" (src0), "2" (len) : "memory", "lr", "r3", "r4", "r5", "cc"); return dst0; } #endif picolibc-1.7.4/newlib/libc/machine/xscale/memmove.c000066400000000000000000000034711414576234500222140ustar00rootroot00000000000000/* Copyright (c) 2000 Nick Clifton */ #if defined __thumb__ #include "../../string/memmove.c" #else #include #include "xscale.h" static inline void * do_memcpy (void *dst0, const void *src0, size_t len) { int dummy; __asm__ volatile ( #ifndef __OPTIMIZE_SIZE__ "cmp %2, #0x3\n\ bls 3f\n\ and lr, %1, #0x3\n\ and r3, %0, #0x3\n\ cmp lr, r3\n\ bne 3f\n\ cmp lr, #0x0\n\ beq 2f\n\ b 1f\n\ 0:\n\ ldrb r3, [%1], #1\n\ " PRELOADSTR ("%1") "\n\ tst %1, #0x3\n\ strb r3, [%0], #1\n\ beq 3f\n\ 1:\n\ sub %2, %2, #1\n\ cmn %2, #1\n\ bne 0b\n\ 2:\n\ cmp %2, #0xf\n\ bls 1f\n\ 0:\n\ ldmia %1!, { r3, r4, r5, lr }\n\ " PRELOADSTR ("%1") "\n\ \n\ sub %2, %2, #16\n\ cmp %2, #0xf\n\ stmia %0!, { r3, r4, r5, lr }\n\ bhi 0b\n\ 1:\n\ cmp %2, #0x7\n\ bls 1f\n\ 0:\n\ ldmia %1!, { r3, r4 }\n\ " PRELOADSTR ("%1") "\n\ \n\ sub %2, %2, #8\n\ cmp %2, #0x7\n\ stmia %0!, { r3, r4 }\n\ bhi 0b\n\ 1:\n\ cmp %2, #0x3\n\ bls 3f\n\ 0:\n\ sub %2, %2, #4\n\ ldr r3, [%1], #4\n\ " PRELOADSTR ("%1") "\n\ \n\ cmp %2, #0x3\n\ str r3, [%0], #4\n\ bhi 0b\n\ " #endif /* !__OPTIMIZE_SIZE__ */ "\n\ 3:\n\ " PRELOADSTR ("%1") "\n\ sub %2, %2, #1\n\ cmn %2, #1\n\ beq 1f\n\ 0:\n\ sub %2, %2, #1\n\ ldrb r3, [%1], #1\n\ " PRELOADSTR ("%1") "\n\ cmn %2, #1\n\ strb r3, [%0], #1\n\ bne 0b\n\ 1:" : "=&r" (dummy), "=&r" (src0), "=&r" (len) : "0" (dst0), "1" (src0), "2" (len) : "memory", "lr", "r3", "r4", "r5", "cc"); return dst0; } void * memmove (void *dst, const void *src, size_t len) { char *d = dst; const char *s = src; if (s < d && d < s + len) { /* Destructive overlap...have to copy backwards. */ s += len; d += len; while (len--) *--d = *--s; return dst; } else return do_memcpy (dst, src, len); } #endif picolibc-1.7.4/newlib/libc/machine/xscale/memset.c000066400000000000000000000033421414576234500220360ustar00rootroot00000000000000/* Copyright (c) 2000 Nick Clifton */ #if defined __thumb__ #include "../../string/memset.c" #else #include #include "xscale.h" #include "../../string/local.h" void * __inhibit_loop_to_libcall memset (void *dst, int c, size_t len) { int dummy; __asm__ volatile ("tst %0, #0x3" #ifndef __OPTIMIZE_SIZE__ "\n\ beq 1f\n\ b 2f\n\ 0:\n\ strb %1, [%0], #1\n\ tst %0, #0x3\n\ beq 1f\n\ 2:\n\ movs r3, %2\n\ sub %2, %2, #1\n\ bne 0b\n\ # At this point we know that %2 == len == -1 (since the SUB has already taken\n\ # place). If we fall through to the 1: label (as the code used to do), the\n\ # CMP will detect this negative value and branch to the 2: label. This will\n\ # test %2 again, but this time against 0. The test will fail and the loop\n\ # at 2: will go on for (almost) ever. Hence the explicit branch to the end\n\ # of the hand written assembly code.\n\ b 4f\n\ 1:\n\ cmp %2, #0x3\n\ bls 2f\n\ and %1, %1, #0xff\n\ orr lr, %1, %1, asl #8\n\ cmp %2, #0xf\n\ orr lr, lr, lr, asl #16\n\ bls 1f\n\ mov r3, lr\n\ mov r4, lr\n\ mov r5, lr\n\ 0:\n\ sub %2, %2, #16\n\ stmia %0!, { r3, r4, r5, lr }\n\ cmp %2, #0xf\n\ bhi 0b\n\ 1:\n\ cmp %2, #0x7\n\ bls 1f\n\ mov r3, lr\n\ 0:\n\ sub %2, %2, #8\n\ stmia %0!, { r3, lr }\n\ cmp %2, #0x7\n\ bhi 0b\n\ 1:\n\ cmp %2, #0x3\n\ bls 2f\n\ 0:\n\ sub %2, %2, #4\n\ str lr, [%0], #4\n\ cmp %2, #0x3\n\ bhi 0b\n\ " #endif /* !__OPTIMIZE_SIZE__ */ "\n\ 2:\n\ movs r3, %2\n\ sub %2, %2, #1\n\ beq 4f\n\ 0:\n\ movs r3, %2\n\ sub %2, %2, #1\n\ strb %1, [%0], #1\n\ bne 0b\n\ 4:" : "=&r" (dummy), "=&r" (c), "=&r" (len) : "0" (dst), "1" (c), "2" (len) : "memory", "r3", "r4", "r5", "lr"); return dst; } #endif picolibc-1.7.4/newlib/libc/machine/xscale/setjmp.S000066400000000000000000000075551414576234500220400ustar00rootroot00000000000000/* This is a simple version of setjmp and longjmp. Copyright (c) 1997 Nick Clifton, Cygnus Solutions */ /* ANSI concatenation macros. */ #define CONCAT(a, b) CONCAT2(a, b) #define CONCAT2(a, b) a##b #ifndef __USER_LABEL_PREFIX__ #error __USER_LABEL_PREFIX__ not defined #endif #define SYM(x) CONCAT (__USER_LABEL_PREFIX__, x) #ifdef __ELF__ #define TYPE(x) .type SYM(x),function #define SIZE(x) .size SYM(x), . - SYM(x) #else #define TYPE(x) #define SIZE(x) #endif /* Arm/Thumb interworking support: The interworking scheme expects functions to use a BX instruction to return control to their parent. Since we need this code to work in both interworked and non-interworked environments as well as with older processors which do not have the BX instruction we do the following: Test the return address. If the bottom bit is clear perform an "old style" function exit. (We know that we are in ARM mode and returning to an ARM mode caller). Otherwise use the BX instruction to perform the function exit. We know that we will never attempt to perform the BX instruction on an older processor, because that kind of processor will never be interworked, and a return address with the bottom bit set will never be generated. In addition, we do not actually assemble the BX instruction as this would require us to tell the assembler that the processor is an ARM7TDMI and it would store this information in the binary. We want this binary to be able to be linked with binaries compiled for older processors however, so we do not want such information stored there. If we are running using the APCS-26 convention however, then we never test the bottom bit, because this is part of the processor status. Instead we just do a normal return, since we know that we cannot be returning to a Thumb caller - the Thumb does not support APCS-26. Function entry is much simpler. If we are compiling for the Thumb we just switch into ARM mode and then drop through into the rest of the function. The function exit code will take care of the restore to Thumb mode. */ #ifdef __APCS_26__ #define RET movs pc, lr #else #define RET tst lr, #1; \ moveq pc, lr ; \ .word 0xe12fff1e /* bx lr */ #endif #ifdef __thumb__ #define MODE .thumb_func .macro PROLOGUE name .code 16 bx pc nop .code 32 SYM (.arm_start_of.\name): .endm #else #define MODE .code 32 .macro PROLOGUE name .endm #endif .macro FUNC_START name .text .align 2 MODE .globl SYM (\name) TYPE (\name) SYM (\name): PROLOGUE \name .endm .macro FUNC_END name RET SIZE (\name) .endm /* -------------------------------------------------------------------- int setjmp (jmp_buf); -------------------------------------------------------------------- */ FUNC_START setjmp /* Save all the callee-preserved registers into the jump buffer. */ stmea a1!, { v1-v7, fp, ip, sp, lr } #if 0 /* Simulator does not cope with FP instructions yet. */ #ifndef __SOFTFP__ /* Save the floating point registers. */ sfmea f4, 4, [a1] #endif #endif /* When setting up the jump buffer return 0. */ mov a1, #0 FUNC_END setjmp /* -------------------------------------------------------------------- volatile void longjmp (jmp_buf, int); -------------------------------------------------------------------- */ FUNC_START longjmp /* If we have stack extension code it ought to be handled here. */ /* Restore the registers, retrieving the state when setjmp() was called. */ ldmfd a1!, { v1-v7, fp, ip, sp, lr } #if 0 /* Simulator does not cope with FP instructions yet. */ #ifndef __SOFTFP__ /* Restore floating point registers as well. */ lfmfd f4, 4, [a1] #endif #endif /* Put the return value into the integer result register. But if it is zero then return 1 instead. */ movs a1, a2 moveq a1, #1 FUNC_END longjmp picolibc-1.7.4/newlib/libc/machine/xscale/strchr.c000066400000000000000000000022751414576234500220550ustar00rootroot00000000000000/* Copyright (c) 2000 Nick Clifton */ #if defined __thumb__ #include "../../string/strchr.c" #else #include #include "xscale.h" char * strchr (const char *s, int c) { unsigned int c2; __asm__(PRELOADSTR ("%0") : : "r" (s)); c &= 0xff; #ifndef __OPTIMIZE_SIZE__ /* Skip unaligned part. */ if ((long)s & 3) { s--; do { int c2 = *++s; if (c2 == c) return (char *)s; if (c2 == '\0') return 0; } while (((long)s & 3) != 0); } c2 = c + (c << 8); c2 += c2 << 16; /* Load two constants: R6 = 0xfefefeff [ == ~(0x80808080 << 1) ] R5 = 0x80808080 */ __asm__(PRELOADSTR ("%0") "\n\ mov r5, #0x80\n\ add r5, r5, #0x8000\n\ add r5, r5, r5, lsl #16\n\ mvn r6, r5, lsl #1\n\ \n\ sub %0, %0, #4\n\ 0:\n\ ldr r1, [%0, #4]!\n\ " PRELOADSTR ("%0") "\n\ add r3, r1, r6\n\ bic r3, r3, r1\n\ ands r2, r3, r5\n\ bne 1f\n\ eor r2, r1, %1\n\ add r3, r2, r6\n\ bic r3, r3, r2\n\ ands r1, r3, r5\n\ beq 0b\n\ 1:" : "=&r" (s) : "r" (c2), "0" (s) : "r1", "r2", "r3", "r5", "r6", "cc"); #endif while (*s && *s != c) s++; if (*s == c) return (char *)s; return NULL; } #endif picolibc-1.7.4/newlib/libc/machine/xscale/strcmp.c000066400000000000000000000037171414576234500220620ustar00rootroot00000000000000/* Copyright (c) 2000 Nick Clifton */ #if defined __thumb__ #include "../../string/strcmp.c" #else #include #include "xscale.h" int strcmp (const char *s1, const char *s2) { __asm__(PRELOADSTR ("%0") : : "r" (s1)); __asm__(PRELOADSTR ("%0") : : "r" (s2)); #ifndef __OPTIMIZE_SIZE__ if (((long)s1 & 3) == ((long)s2 & 3)) { int result; /* Skip unaligned part. */ while ((long)s1 & 3) { if (*s1 == '\0' || *s1 != *s2) goto out; s1++; s2++; } /* Load two constants: lr = 0xfefefeff [ == ~(0x80808080 << 1) ] ip = 0x80808080 */ __asm__( "ldr r2, [%1, #0]\n\ ldr r3, [%2, #0]\n\ cmp r2, r3\n\ bne 2f\n\ \n\ mov ip, #0x80\n\ add ip, ip, #0x8000\n\ add ip, ip, ip, lsl #16\n\ mvn lr, ip, lsl #1\n\ \n\ 0:\n\ ldr r2, [%1, #0]\n\ add r3, r2, lr\n\ bic r3, r3, r2\n\ tst r3, ip\n\ beq 1f\n\ mov %0, #0x0\n\ b 3f\n\ 1:\n\ ldr r2, [%1, #4]!\n\ ldr r3, [%2, #4]!\n\ " PRELOADSTR("%1") "\n\ " PRELOADSTR("%2") "\n\ cmp r2, r3\n\ beq 0b" /* The following part could be done in a C loop as well, but it needs to be assembler to save some cycles in the case where the optimized loop above finds the strings to be equal. */ "\n\ 2:\n\ ldrb r2, [%1, #0]\n\ " PRELOADSTR("%1") "\n\ " PRELOADSTR("%2") "\n\ cmp r2, #0x0\n\ beq 1f\n\ ldrb r3, [%2, #0]\n\ cmp r2, r3\n\ bne 1f\n\ 0:\n\ ldrb r3, [%1, #1]!\n\ add %2, %2, #1\n\ ands ip, r3, #0xff\n\ beq 1f\n\ ldrb r3, [%2]\n\ cmp ip, r3\n\ beq 0b\n\ 1:\n\ ldrb lr, [%1, #0]\n\ ldrb ip, [%2, #0]\n\ rsb %0, ip, lr\n\ 3:\n\ " : "=r" (result), "=&r" (s1), "=&r" (s2) : "1" (s1), "2" (s2) : "lr", "ip", "r2", "r3", "cc"); return result; } #endif while (*s1 != '\0' && *s1 == *s2) { __asm__(PRELOADSTR("%0") : : "r" (s1)); __asm__(PRELOADSTR("%0") : : "r" (s2)); s1++; s2++; } out: return (*(unsigned char *) s1) - (*(unsigned char *) s2); } #endif picolibc-1.7.4/newlib/libc/machine/xscale/strcpy.c000066400000000000000000000022161414576234500220670ustar00rootroot00000000000000/* Copyright (c) 2000 Nick Clifton */ #if defined __thumb__ #include "../../string/strcpy.c" #else #include #include "xscale.h" char * strcpy (char *dest, const char *src) { char *dest0 = dest; __asm__(PRELOADSTR ("%0") : : "r" (src)); #ifndef __OPTIMIZE_SIZE__ if (((long)src & 3) == ((long)dest & 3)) { /* Skip unaligned part. */ while ((long)src & 3) { if (! (*dest++ = *src++)) return dest0; } /* Load two constants: R4 = 0xfefefeff [ == ~(0x80808080 << 1) ] R5 = 0x80808080 */ __asm__("mov r5, #0x80\n\ ldr r1, [%1, #0]\n\ add r5, r5, #0x8000\n\ add r5, r5, r5, lsl #16\n\ mvn r4, r5, lsl #1\n\ \n\ add r3, r1, r5\n\ bic r3, r3, r1\n\ ands r2, r3, r4\n\ bne 1f\n\ 0:\n\ ldr r3, [%1, #0]\n\ ldr r1, [%1, #4]!\n\ " PRELOADSTR("%1") "\n\ str r3, [%0], #4\n\ add r2, r1, r4\n\ bic r2, r2, r1\n\ ands r3, r2, r5\n\ beq 0b\n\ 1:" : "=&r" (dest), "=&r" (src) : "0" (dest), "1" (src) : "r1", "r2", "r3", "r4", "r5", "memory", "cc"); } #endif while (*dest++ = *src++) __asm__(PRELOADSTR ("%0") : : "r" (src)); return dest0; } #endif picolibc-1.7.4/newlib/libc/machine/xscale/strlen.c000066400000000000000000000031161414576234500220520ustar00rootroot00000000000000/* Copyright (c) 2000 Nick Clifton */ #if defined __thumb__ || defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) #include "../../string/strlen.c" #else #include #include "xscale.h" size_t strlen (const char *str) { const char *start = str; /* Skip unaligned part. */ if ((long)str & 3) { str--; do { if (*++str == '\0') goto out; } while ((long)str & 3); } /* Load two constants: R4 = 0xfefefeff [ == ~(0x80808080 << 1) ] R5 = 0x80808080 */ __asm__("mov r5, #0x80\n\ add r5, r5, #0x8000\n\ add r5, r5, r5, lsl #16\n\ mvn r4, r5, lsl #1\n\ " #if defined __ARM_ARCH_5__ || defined __ARM_ARCH_5T__ || defined __ARM_ARCH_5E__ || defined __ARM_ARCH_5TE__ " tst %0, #0x7\n\ ldreqd r6, [%0]\n\ beq 1f\n\ ldr r2, [%0]\n\ add r3, r2, r4\n\ bic r3, r3, r2\n\ ands r2, r3, r5\n\ bne 2f\n\ sub %0, %0, #4\n\ \n\ 0:\n\ ldrd r6, [%0, #8]!\n\ " PRELOADSTR ("%0") "\n\ 1:\n\ add r3, r6, r4\n\ add r2, r7, r4\n\ bic r3, r3, r6\n\ bic r2, r2, r7\n\ and r3, r3, r5\n\ and r2, r2, r5\n\ orrs r3, r2, r3\n\ beq 0b\n\ " #else " sub %0, %0, #4\n\ \n\ 0:\n\ ldr r6, [%0, #4]!\n\ " PRELOADSTR ("%0") "\n\ add r3, r6, r4\n\ bic r3, r3, r6\n\ ands r3, r3, r5\n\ beq 0b\n\ " #endif /* __ARM_ARCH_5[T][E]__ */ "\n\ 2:\n\ ldrb r3, [%0]\n\ cmp r3, #0x0\n\ beq 1f\n\ \n\ 0:\n\ ldrb r3, [%0, #1]!\n\ " PRELOADSTR ("%0") "\n\ cmp r3, #0x0\n\ bne 0b\n\ 1:\n\ " : "=r" (str) : "0" (str) : "r2", "r3", "r4", "r5", "r6", "r7"); out: return str - start; } #endif picolibc-1.7.4/newlib/libc/machine/xscale/xscale.h000066400000000000000000000012601414576234500220250ustar00rootroot00000000000000/* Copyright (c) 2000 Nick Clifton */ #ifndef __XSCALE_MACH_H__ #define __XSCALE_MACH_H__ /* These are predefined by new versions of GNU cpp. */ #ifndef __USER_LABEL_PREFIX__ #define __USER_LABEL_PREFIX__ _ #endif #ifndef __REGISTER_PREFIX__ #define __REGISTER_PREFIX__ #endif /* ANSI concatenation macros. */ #define CONCAT1(a, b) CONCAT2(a, b) #define CONCAT2(a, b) a##b /* Use the right prefix for global labels. */ #define SYM(x) CONCAT1(__USER_LABEL_PREFIX__, x) #ifdef __XSCALE__ #define PRELOAD(X) pld [X] #define PRELOADSTR(X) " pld [" X "]" #else #define PRELOAD(X) #define PRELOADSTR(X) "" #endif /* __XSCALE__ */ #endif /* !__XSCALE_MACH_H__ */ picolibc-1.7.4/newlib/libc/machine/xstormy16/000077500000000000000000000000001414576234500210135ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/xstormy16/mallocr.c000066400000000000000000000007621414576234500226150ustar00rootroot00000000000000/* Copyright (c) 2002 Geoffrey Keating */ #include #ifdef DEFINE_MALLOC void * _malloc_r (struct _reent *r, size_t sz) { return malloc (sz); } #endif #ifdef DEFINE_CALLOC void * _calloc_r (struct _reent *r, size_t a, size_t b) { return calloc (a, b); } #endif #ifdef DEFINE_FREE void _free_r (struct _reent *r, void *x) { free (x); } #endif #ifdef DEFINE_REALLOC void * _realloc_r (struct _reent *r, void *x, size_t sz) { return realloc (x, sz); } #endif picolibc-1.7.4/newlib/libc/machine/xstormy16/setjmp.S000066400000000000000000000017401414576234500224430ustar00rootroot00000000000000;; xstormy16 ;; Copyright (C) 2001 by Red Hat, Incorporated. All rights reserved. ;; ;; Permission to use, copy, modify, and distribute this software ;; is freely granted, provided that this notice is preserved. ;; .file "setjmp.S" .section .text .align 1 .global setjmp .type setjmp,@function setjmp: mov r0,r10 mov (r2++),r0 mov r0,r11 mov (r2++),r0 mov r0,r12 mov (r2++),r0 mov r0,r13 mov (r2++),r0 pop r0 ; PC high word pop r1 ; PC low word mov (r2++), r0 mov (r2++), r1 mov r3,sp mov (r2++),r3 mov.w r2,#0 mov r8, r0 mov r9, r1 jmp r8, r9 .size setjmp,.-setjmp .global longjmp .type longjmp,@function longjmp: mov r0,(r2++) mov r10,r0 mov r0,(r2++) mov r11,r0 mov r0,(r2++) mov r12,r0 mov r0,(r2++) mov r13,r0 mov r0,(r2++) mov r8, r0 mov r1,(r2++) mov r9, r1 mov r4,(r2++) mov sp,r4 ;; status arg (r3) to longjmp is return value ;; if it's zero, return 1 bnz r3, #0, 0f mov.w r3,#1 0: mov r2, r3 jmp r8,r9 .size longjmp,.-longjmp picolibc-1.7.4/newlib/libc/machine/xstormy16/tiny-malloc.c000066400000000000000000000365741414576234500234260ustar00rootroot00000000000000/* Copyright (c) 2002 Geoffrey Keating */ /* A replacement malloc with: - Much reduced code size; - Smaller RAM footprint; - The ability to handle downward-growing heaps; but - Slower; - Probably higher memory fragmentation; - Doesn't support threads (but, if it did support threads, it wouldn't need a global lock, only a compare-and-swap instruction); - Assumes the maximum alignment required is the alignment of a pointer; - Assumes that memory is already there and doesn't need to be allocated. * Synopsis of public routines malloc(size_t n); Return a pointer to a newly allocated chunk of at least n bytes, or null if no space is available. free(void* p); Release the chunk of memory pointed to by p, or no effect if p is null. realloc(void* p, size_t n); Return a pointer to a chunk of size n that contains the same data as does chunk p up to the minimum of (n, p's size) bytes, or null if no space is available. The returned pointer may or may not be the same as p. If p is null, equivalent to malloc. Unless the #define REALLOC_ZERO_BYTES_FREES below is set, realloc with a size argument of zero (re)allocates a minimum-sized chunk. memalign(size_t alignment, size_t n); Return a pointer to a newly allocated chunk of n bytes, aligned in accord with the alignment argument, which must be a power of two. Will fail if 'alignment' is too large. calloc(size_t unit, size_t quantity); Returns a pointer to quantity * unit bytes, with all locations set to zero. cfree(void* p); Equivalent to free(p). malloc_trim(size_t pad); Release all but pad bytes of freed top-most memory back to the system. Return 1 if successful, else 0. malloc_usable_size(void* p); Report the number usable allocated bytes associated with allocated chunk p. This may or may not report more bytes than were requested, due to alignment and minimum size constraints. malloc_stats(); Prints brief summary statistics on stderr. mallinfo() Returns (by copy) a struct containing various summary statistics. mallopt(int parameter_number, int parameter_value) Changes one of the tunable parameters described below. Returns 1 if successful in changing the parameter, else 0. Actually, returns 0 always, as no parameter can be changed. */ #ifdef __xstormy16__ #define MALLOC_DIRECTION -1 #endif #ifndef MALLOC_DIRECTION #define MALLOC_DIRECTION 1 #endif #include void* malloc(size_t); void free(void*); void* realloc(void*, size_t); void* memalign(size_t, size_t); void* valloc(size_t); void* pvalloc(size_t); void* calloc(size_t, size_t); void cfree(void*); int malloc_trim(size_t); size_t malloc_usable_size(void*); void malloc_stats(void); int mallopt(int, int); struct mallinfo mallinfo(void); typedef struct freelist_entry { size_t size; struct freelist_entry *next; } *fle; extern void * __malloc_end; extern fle __malloc_freelist; /* Return the number of bytes that need to be added to X to make it aligned to an ALIGN boundary. ALIGN must be a power of 2. */ #define M_ALIGN(x, align) (-(size_t)(x) & ((align) - 1)) /* Return the number of bytes that need to be subtracted from X to make it aligned to an ALIGN boundary. ALIGN must be a power of 2. */ #define M_ALIGN_SUB(x, align) ((size_t)(x) & ((align) - 1)) extern void __malloc_start; /* This is the minimum gap allowed between __malloc_end and the top of the stack. This is only checked for when __malloc_end is decreased; if instead the stack grows into the heap, silent data corruption will result. */ #define MALLOC_MINIMUM_GAP 32 #ifdef __xstormy16__ register void * stack_pointer __asm__("r15"); #define MALLOC_LIMIT stack_pointer #else #define MALLOC_LIMIT __builtin_frame_address (0) #endif #if MALLOC_DIRECTION < 0 #define CAN_ALLOC_P(required) \ (((size_t) __malloc_end - (size_t)MALLOC_LIMIT \ - MALLOC_MINIMUM_GAP) >= (required)) #else #define CAN_ALLOC_P(required) \ (((size_t)MALLOC_LIMIT - (size_t) __malloc_end \ - MALLOC_MINIMUM_GAP) >= (required)) #endif /* real_size is the size we actually have to allocate, allowing for overhead and alignment. */ #define REAL_SIZE(sz) \ ((sz) < sizeof (struct freelist_entry) - sizeof (size_t) \ ? sizeof (struct freelist_entry) \ : sz + sizeof (size_t) + M_ALIGN(sz, sizeof (size_t))) #ifdef DEFINE_MALLOC void * __malloc_end = &__malloc_start; fle __malloc_freelist; void * malloc (size_t sz) { fle *nextfree; fle block; /* real_size is the size we actually have to allocate, allowing for overhead and alignment. */ size_t real_size = REAL_SIZE (sz); /* Look for the first block on the freelist that is large enough. */ for (nextfree = &__malloc_freelist; *nextfree; nextfree = &(*nextfree)->next) { block = *nextfree; if (block->size >= real_size) { /* If the block found is just the right size, remove it from the free list. Otherwise, split it. */ if (block->size < real_size + sizeof (struct freelist_entry)) { *nextfree = block->next; return (void *)&block->next; } else { size_t newsize = block->size - real_size; fle newnext = block->next; *nextfree = (fle)((size_t)block + real_size); (*nextfree)->size = newsize; (*nextfree)->next = newnext; goto done; } } /* If this is the last block on the freelist, and it was too small, enlarge it. */ if (! block->next && __malloc_end == (void *)((size_t)block + block->size)) { size_t moresize = real_size - block->size; if (! CAN_ALLOC_P (moresize)) return NULL; *nextfree = NULL; if (MALLOC_DIRECTION < 0) { block = __malloc_end = (void *)((size_t)block - moresize); } else { __malloc_end = (void *)((size_t)block + real_size); } goto done; } } /* No free space at the end of the free list. Allocate new space and use that. */ if (! CAN_ALLOC_P (real_size)) return NULL; if (MALLOC_DIRECTION > 0) { block = __malloc_end; __malloc_end = (void *)((size_t)__malloc_end + real_size); } else { block = __malloc_end = (void *)((size_t)__malloc_end - real_size); } done: block->size = real_size; return (void *)&block->next; } #endif #ifdef DEFINE_FREE void free (void *block_p) { fle *nextfree; fle block = (fle)((size_t) block_p - offsetof (struct freelist_entry, next)); if (block_p == NULL) return; /* Look on the freelist to see if there's a free block just before or just after this block. */ for (nextfree = &__malloc_freelist; *nextfree; nextfree = &(*nextfree)->next) { fle thisblock = *nextfree; if ((size_t)thisblock + thisblock->size == (size_t) block) { thisblock->size += block->size; if (MALLOC_DIRECTION > 0 && thisblock->next && (size_t) block + block->size == (size_t) thisblock->next) { thisblock->size += thisblock->next->size; thisblock->next = thisblock->next->next; } return; } else if ((size_t) thisblock == (size_t) block + block->size) { if (MALLOC_DIRECTION < 0 && thisblock->next && (size_t) block == ((size_t) thisblock->next + thisblock->next->size)) { *nextfree = thisblock->next; thisblock->next->size += block->size + thisblock->size; } else { block->size += thisblock->size; block->next = thisblock->next; *nextfree = block; } return; } else if ((MALLOC_DIRECTION > 0 && (size_t) thisblock > (size_t) block) || (MALLOC_DIRECTION < 0 && (size_t) thisblock < (size_t) block)) break; } block->next = *nextfree; *nextfree = block; return; } #endif #ifdef DEFINE_REALLOC void * realloc (void *block_p, size_t sz) { fle block = (fle)((size_t) block_p - offsetof (struct freelist_entry, next)); size_t real_size = REAL_SIZE (sz); size_t old_real_size; if (block_p == NULL) return malloc (sz); old_real_size = block->size; /* Perhaps we need to allocate more space. */ if (old_real_size < real_size) { void *result; size_t old_size = old_real_size - sizeof (size_t); /* Need to allocate, copy, and free. */ result = malloc (sz); if (result == NULL) return NULL; memcpy (result, block_p, old_size < sz ? old_size : sz); free (block_p); return result; } /* Perhaps we can free some space. */ if (old_real_size - real_size >= sizeof (struct freelist_entry)) { fle newblock = (fle)((size_t)block + real_size); block->size = real_size; newblock->size = old_real_size - real_size; free (&newblock->next); } return block_p; } #endif #ifdef DEFINE_CALLOC void * calloc (size_t n, size_t elem_size) { void *result; size_t sz = n * elem_size; result = malloc (sz); if (result != NULL) memset (result, 0, sz); return result; } #endif #ifdef DEFINE_CFREE void cfree (void *p) { free (p); } #endif #ifdef DEFINE_MEMALIGN void * memalign (size_t align, size_t sz) { fle *nextfree; fle block; /* real_size is the size we actually have to allocate, allowing for overhead and alignment. */ size_t real_size = REAL_SIZE (sz); /* Some sanity checking on 'align'. */ if ((align & (align - 1)) != 0 || align <= 0) return NULL; /* Look for the first block on the freelist that is large enough. */ /* One tricky part is this: We want the result to be a valid pointer to free. That means that there has to be room for a size_t before the block. If there's additional space before the block, it should go on the freelist, or it'll be lost---we could add it to the size of the block before it in memory, but finding the previous block is expensive. */ for (nextfree = &__malloc_freelist; ; nextfree = &(*nextfree)->next) { size_t before_size; size_t old_size; /* If we've run out of free blocks, allocate more space. */ if (! *nextfree) { old_size = real_size; if (MALLOC_DIRECTION < 0) { old_size += M_ALIGN_SUB (((size_t)__malloc_end - old_size + sizeof (size_t)), align); if (! CAN_ALLOC_P (old_size)) return NULL; block = __malloc_end = (void *)((size_t)__malloc_end - old_size); } else { block = __malloc_end; old_size += M_ALIGN ((size_t)__malloc_end + sizeof (size_t), align); if (! CAN_ALLOC_P (old_size)) return NULL; __malloc_end = (void *)((size_t)__malloc_end + old_size); } *nextfree = block; block->size = old_size; block->next = NULL; } else { block = *nextfree; old_size = block->size; } before_size = M_ALIGN (&block->next, align); if (before_size != 0) before_size = sizeof (*block) + M_ALIGN (&(block+1)->next, align); /* If this is the last block on the freelist, and it is too small, enlarge it. */ if (! block->next && old_size < real_size + before_size && __malloc_end == (void *)((size_t)block + block->size)) { if (MALLOC_DIRECTION < 0) { size_t moresize = real_size - block->size; moresize += M_ALIGN_SUB ((size_t)&block->next - moresize, align); if (! CAN_ALLOC_P (moresize)) return NULL; block = __malloc_end = (void *)((size_t)block - moresize); block->next = NULL; block->size = old_size = old_size + moresize; before_size = 0; } else { if (! CAN_ALLOC_P (before_size + real_size - block->size)) return NULL; __malloc_end = (void *)((size_t)block + before_size + real_size); block->size = old_size = before_size + real_size; } /* Two out of the four cases below will now be possible; which two depends on MALLOC_DIRECTION. */ } if (old_size >= real_size + before_size) { /* This block will do. If there needs to be space before it, split the block. */ if (before_size != 0) { fle old_block = block; old_block->size = before_size; block = (fle)((size_t)block + before_size); /* If there's no space after the block, we're now nearly done; just make a note of the size required. Otherwise, we need to create a new free space block. */ if (old_size - before_size <= real_size + sizeof (struct freelist_entry)) { block->size = old_size - before_size; return (void *)&block->next; } else { fle new_block; new_block = (fle)((size_t)block + real_size); new_block->size = old_size - before_size - real_size; if (MALLOC_DIRECTION > 0) { new_block->next = old_block->next; old_block->next = new_block; } else { new_block->next = old_block; *nextfree = new_block; } goto done; } } else { /* If the block found is just the right size, remove it from the free list. Otherwise, split it. */ if (old_size <= real_size + sizeof (struct freelist_entry)) { *nextfree = block->next; return (void *)&block->next; } else { size_t newsize = old_size - real_size; fle newnext = block->next; *nextfree = (fle)((size_t)block + real_size); (*nextfree)->size = newsize; (*nextfree)->next = newnext; goto done; } } } } done: block->size = real_size; return (void *)&block->next; } #endif #ifdef DEFINE_VALLOC void * valloc (size_t sz) { return memalign (128, sz); } #endif #ifdef DEFINE_PVALLOC void * pvalloc (size_t sz) { return memalign (128, sz + M_ALIGN (sz, 128)); } #endif #ifdef DEFINE_MALLINFO #include "malloc.h" struct mallinfo mallinfo (void) { struct mallinfo r; fle fr; size_t free_size; size_t total_size; size_t free_blocks; memset (&r, 0, sizeof (r)); free_size = 0; free_blocks = 0; for (fr = __malloc_freelist; fr; fr = fr->next) { free_size += fr->size; free_blocks++; if (! fr->next) { int atend; if (MALLOC_DIRECTION > 0) atend = (void *)((size_t)fr + fr->size) == __malloc_end; else atend = (void *)fr == __malloc_end; if (atend) r.keepcost = fr->size; } } if (MALLOC_DIRECTION > 0) total_size = (char *)__malloc_end - (char *)&__malloc_start; else total_size = (char *)&__malloc_start - (char *)__malloc_end; #ifdef DEBUG /* Fixme: should walk through all the in-use blocks and see if they're valid. */ #endif r.arena = total_size; r.fordblks = free_size; r.uordblks = total_size - free_size; r.ordblks = free_blocks; return r; } #endif #ifdef DEFINE_MALLOC_STATS #include "malloc.h" #include void malloc_stats(void) { struct mallinfo i; FILE *fp; fp = stderr; i = mallinfo(); fprintf (fp, "malloc has reserved %u bytes between %p and %p\n", i.arena, &__malloc_start, __malloc_end); fprintf (fp, "there are %u bytes free in %u chunks\n", i.fordblks, i.ordblks); fprintf (fp, "of which %u bytes are at the end of the reserved space\n", i.keepcost); fprintf (fp, "and %u bytes are in use.\n", i.uordblks); } #endif #ifdef DEFINE_MALLOC_USABLE_SIZE size_t malloc_usable_size (void *block_p) { fle block = (fle)((size_t) block_p - offsetof (struct freelist_entry, next)); return block->size - sizeof (size_t); } #endif #ifdef DEFINE_MALLOPT int mallopt (int n, int v) { (void)n; (void)v; return 0; } #endif picolibc-1.7.4/newlib/libc/machine/xtensa/000077500000000000000000000000001414576234500204215ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/xtensa/machine/000077500000000000000000000000001414576234500220255ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/xtensa/machine/core-isa.h000066400000000000000000000461471414576234500237140ustar00rootroot00000000000000/* * xtensa/config/core-isa.h -- HAL definitions that are dependent on Xtensa * processor CORE configuration * * See , which includes this file, for more details. */ /* Xtensa processor core configuration information. Copyright (c) 1999-2010 Tensilica Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef _XTENSA_CORE_CONFIGURATION_H #define _XTENSA_CORE_CONFIGURATION_H /**************************************************************************** Parameters Useful for Any Code, USER or PRIVILEGED ****************************************************************************/ /* * Note: Macros of the form XCHAL_HAVE_*** have a value of 1 if the option is * configured, and a value of 0 otherwise. These macros are always defined. */ /*---------------------------------------------------------------------- ISA ----------------------------------------------------------------------*/ #define XCHAL_HAVE_BE 0 /* big-endian byte ordering */ #define XCHAL_HAVE_WINDOWED 0 /* windowed registers option */ #define XCHAL_NUM_AREGS 16 /* num of physical addr regs */ #define XCHAL_NUM_AREGS_LOG2 4 /* log2(XCHAL_NUM_AREGS) */ #define XCHAL_MAX_INSTRUCTION_SIZE 3 /* max instr bytes (3..8) */ #define XCHAL_HAVE_DEBUG 1 /* debug option */ #define XCHAL_HAVE_DENSITY 1 /* 16-bit instructions */ #define XCHAL_HAVE_LOOPS 0 /* zero-overhead loops */ #define XCHAL_HAVE_NSA 1 /* NSA/NSAU instructions */ #define XCHAL_HAVE_MINMAX 0 /* MIN/MAX instructions */ #define XCHAL_HAVE_SEXT 0 /* SEXT instruction */ #define XCHAL_HAVE_CLAMPS 0 /* CLAMPS instruction */ #define XCHAL_HAVE_MUL16 1 /* MUL16S/MUL16U instructions */ #define XCHAL_HAVE_MUL32 1 /* MULL instruction */ #define XCHAL_HAVE_MUL32_HIGH 0 /* MULUH/MULSH instructions */ #define XCHAL_HAVE_DIV32 0 /* QUOS/QUOU/REMS/REMU instructions */ #define XCHAL_HAVE_L32R 1 /* L32R instruction */ #define XCHAL_HAVE_ABSOLUTE_LITERALS 1 /* non-PC-rel (extended) L32R */ #define XCHAL_HAVE_CONST16 0 /* CONST16 instruction */ #define XCHAL_HAVE_ADDX 1 /* ADDX#/SUBX# instructions */ #define XCHAL_HAVE_WIDE_BRANCHES 0 /* B*.W18 or B*.W15 instr's */ #define XCHAL_HAVE_PREDICTED_BRANCHES 0 /* B[EQ/EQZ/NE/NEZ]T instr's */ #define XCHAL_HAVE_CALL4AND12 0 /* (obsolete option) */ #define XCHAL_HAVE_ABS 1 /* ABS instruction */ /*#define XCHAL_HAVE_POPC 0*/ /* POPC instruction */ /*#define XCHAL_HAVE_CRC 0*/ /* CRC instruction */ #define XCHAL_HAVE_RELEASE_SYNC 0 /* L32AI/S32RI instructions */ #define XCHAL_HAVE_S32C1I 0 /* S32C1I instruction */ #define XCHAL_HAVE_SPECULATION 0 /* speculation */ #define XCHAL_HAVE_FULL_RESET 1 /* all regs/state reset */ #define XCHAL_NUM_CONTEXTS 1 /* */ #define XCHAL_NUM_MISC_REGS 0 /* num of scratch regs (0..4) */ #define XCHAL_HAVE_TAP_MASTER 0 /* JTAG TAP control instr's */ #define XCHAL_HAVE_PRID 1 /* processor ID register */ #define XCHAL_HAVE_EXTERN_REGS 1 /* WER/RER instructions */ #define XCHAL_HAVE_MP_INTERRUPTS 0 /* interrupt distributor port */ #define XCHAL_HAVE_MP_RUNSTALL 0 /* core RunStall control port */ #define XCHAL_HAVE_THREADPTR 0 /* THREADPTR register */ #define XCHAL_HAVE_BOOLEANS 0 /* boolean registers */ #define XCHAL_HAVE_CP 0 /* CPENABLE reg (coprocessor) */ #define XCHAL_CP_MAXCFG 0 /* max allowed cp id plus one */ #define XCHAL_HAVE_MAC16 0 /* MAC16 package */ #define XCHAL_HAVE_VECTORFPU2005 0 /* vector floating-point pkg */ #define XCHAL_HAVE_FP 0 /* floating point pkg */ #define XCHAL_HAVE_DFP 0 /* double precision FP pkg */ #define XCHAL_HAVE_DFP_accel 0 /* double precision FP acceleration pkg */ #define XCHAL_HAVE_VECTRA1 0 /* Vectra I pkg */ #define XCHAL_HAVE_VECTRALX 0 /* Vectra LX pkg */ #define XCHAL_HAVE_HIFIPRO 0 /* HiFiPro Audio Engine pkg */ #define XCHAL_HAVE_HIFI2 0 /* HiFi2 Audio Engine pkg */ #define XCHAL_HAVE_CONNXD2 0 /* ConnX D2 pkg */ /*---------------------------------------------------------------------- MISC ----------------------------------------------------------------------*/ #define XCHAL_NUM_WRITEBUFFER_ENTRIES 1 /* size of write buffer */ #define XCHAL_INST_FETCH_WIDTH 4 /* instr-fetch width in bytes */ #define XCHAL_DATA_WIDTH 4 /* data width in bytes */ /* In T1050, applies to selected core load and store instructions (see ISA): */ #define XCHAL_UNALIGNED_LOAD_EXCEPTION 1 /* unaligned loads cause exc. */ #define XCHAL_UNALIGNED_STORE_EXCEPTION 1 /* unaligned stores cause exc.*/ #define XCHAL_UNALIGNED_LOAD_HW 0 /* unaligned loads work in hw */ #define XCHAL_UNALIGNED_STORE_HW 0 /* unaligned stores work in hw*/ #define XCHAL_SW_VERSION 800001 /* sw version of this header */ #define XCHAL_CORE_ID "lx106" /* alphanum core name (CoreID) set in the Xtensa Processor Generator */ #define XCHAL_BUILD_UNIQUE_ID 0x0002B6F6 /* 22-bit sw build ID */ /* * These definitions describe the hardware targeted by this software. */ #define XCHAL_HW_CONFIGID0 0xC28CDAFA /* ConfigID hi 32 bits*/ #define XCHAL_HW_CONFIGID1 0x1082B6F6 /* ConfigID lo 32 bits*/ #define XCHAL_HW_VERSION_NAME "LX3.0.1" /* full version name */ #define XCHAL_HW_VERSION_MAJOR 2300 /* major ver# of targeted hw */ #define XCHAL_HW_VERSION_MINOR 1 /* minor ver# of targeted hw */ #define XCHAL_HW_VERSION 230001 /* major*100+minor */ #define XCHAL_HW_REL_LX3 1 #define XCHAL_HW_REL_LX3_0 1 #define XCHAL_HW_REL_LX3_0_1 1 #define XCHAL_HW_CONFIGID_RELIABLE 1 /* If software targets a *range* of hardware versions, these are the bounds: */ #define XCHAL_HW_MIN_VERSION_MAJOR 2300 /* major v of earliest tgt hw */ #define XCHAL_HW_MIN_VERSION_MINOR 1 /* minor v of earliest tgt hw */ #define XCHAL_HW_MIN_VERSION 230001 /* earliest targeted hw */ #define XCHAL_HW_MAX_VERSION_MAJOR 2300 /* major v of latest tgt hw */ #define XCHAL_HW_MAX_VERSION_MINOR 1 /* minor v of latest tgt hw */ #define XCHAL_HW_MAX_VERSION 230001 /* latest targeted hw */ /*---------------------------------------------------------------------- CACHE ----------------------------------------------------------------------*/ #define XCHAL_ICACHE_LINESIZE 4 /* I-cache line size in bytes */ #define XCHAL_DCACHE_LINESIZE 4 /* D-cache line size in bytes */ #define XCHAL_ICACHE_LINEWIDTH 2 /* log2(I line size in bytes) */ #define XCHAL_DCACHE_LINEWIDTH 2 /* log2(D line size in bytes) */ #define XCHAL_ICACHE_SIZE 0 /* I-cache size in bytes or 0 */ #define XCHAL_DCACHE_SIZE 0 /* D-cache size in bytes or 0 */ #define XCHAL_DCACHE_IS_WRITEBACK 0 /* writeback feature */ #define XCHAL_DCACHE_IS_COHERENT 0 /* MP coherence feature */ #define XCHAL_HAVE_PREFETCH 0 /* PREFCTL register */ /**************************************************************************** Parameters Useful for PRIVILEGED (Supervisory or Non-Virtualized) Code ****************************************************************************/ #ifndef XTENSA_HAL_NON_PRIVILEGED_ONLY /*---------------------------------------------------------------------- CACHE ----------------------------------------------------------------------*/ #define XCHAL_HAVE_PIF 1 /* any outbound PIF present */ /* If present, cache size in bytes == (ways * 2^(linewidth + setwidth)). */ /* Number of cache sets in log2(lines per way): */ #define XCHAL_ICACHE_SETWIDTH 0 #define XCHAL_DCACHE_SETWIDTH 0 /* Cache set associativity (number of ways): */ #define XCHAL_ICACHE_WAYS 1 #define XCHAL_DCACHE_WAYS 1 /* Cache features: */ #define XCHAL_ICACHE_LINE_LOCKABLE 0 #define XCHAL_DCACHE_LINE_LOCKABLE 0 #define XCHAL_ICACHE_ECC_PARITY 0 #define XCHAL_DCACHE_ECC_PARITY 0 /* Cache access size in bytes (affects operation of SICW instruction): */ #define XCHAL_ICACHE_ACCESS_SIZE 1 #define XCHAL_DCACHE_ACCESS_SIZE 1 /* Number of encoded cache attr bits (see for decoded bits): */ #define XCHAL_CA_BITS 4 /*---------------------------------------------------------------------- INTERNAL I/D RAM/ROMs and XLMI ----------------------------------------------------------------------*/ #define XCHAL_NUM_INSTROM 1 /* number of core instr. ROMs */ #define XCHAL_NUM_INSTRAM 2 /* number of core instr. RAMs */ #define XCHAL_NUM_DATAROM 1 /* number of core data ROMs */ #define XCHAL_NUM_DATARAM 2 /* number of core data RAMs */ #define XCHAL_NUM_URAM 0 /* number of core unified RAMs*/ #define XCHAL_NUM_XLMI 1 /* number of core XLMI ports */ /* Instruction ROM 0: */ #define XCHAL_INSTROM0_VADDR 0x40200000 #define XCHAL_INSTROM0_PADDR 0x40200000 #define XCHAL_INSTROM0_SIZE 1048576 #define XCHAL_INSTROM0_ECC_PARITY 0 /* Instruction RAM 0: */ #define XCHAL_INSTRAM0_VADDR 0x40000000 #define XCHAL_INSTRAM0_PADDR 0x40000000 #define XCHAL_INSTRAM0_SIZE 1048576 #define XCHAL_INSTRAM0_ECC_PARITY 0 /* Instruction RAM 1: */ #define XCHAL_INSTRAM1_VADDR 0x40100000 #define XCHAL_INSTRAM1_PADDR 0x40100000 #define XCHAL_INSTRAM1_SIZE 1048576 #define XCHAL_INSTRAM1_ECC_PARITY 0 /* Data ROM 0: */ #define XCHAL_DATAROM0_VADDR 0x3FF40000 #define XCHAL_DATAROM0_PADDR 0x3FF40000 #define XCHAL_DATAROM0_SIZE 262144 #define XCHAL_DATAROM0_ECC_PARITY 0 /* Data RAM 0: */ #define XCHAL_DATARAM0_VADDR 0x3FFC0000 #define XCHAL_DATARAM0_PADDR 0x3FFC0000 #define XCHAL_DATARAM0_SIZE 262144 #define XCHAL_DATARAM0_ECC_PARITY 0 /* Data RAM 1: */ #define XCHAL_DATARAM1_VADDR 0x3FF80000 #define XCHAL_DATARAM1_PADDR 0x3FF80000 #define XCHAL_DATARAM1_SIZE 262144 #define XCHAL_DATARAM1_ECC_PARITY 0 /* XLMI Port 0: */ #define XCHAL_XLMI0_VADDR 0x3FF00000 #define XCHAL_XLMI0_PADDR 0x3FF00000 #define XCHAL_XLMI0_SIZE 262144 #define XCHAL_XLMI0_ECC_PARITY 0 /*---------------------------------------------------------------------- INTERRUPTS and TIMERS ----------------------------------------------------------------------*/ #define XCHAL_HAVE_INTERRUPTS 1 /* interrupt option */ #define XCHAL_HAVE_HIGHPRI_INTERRUPTS 1 /* med/high-pri. interrupts */ #define XCHAL_HAVE_NMI 1 /* non-maskable interrupt */ #define XCHAL_HAVE_CCOUNT 1 /* CCOUNT reg. (timer option) */ #define XCHAL_NUM_TIMERS 1 /* number of CCOMPAREn regs */ #define XCHAL_NUM_INTERRUPTS 15 /* number of interrupts */ #define XCHAL_NUM_INTERRUPTS_LOG2 4 /* ceil(log2(NUM_INTERRUPTS)) */ #define XCHAL_NUM_EXTINTERRUPTS 13 /* num of external interrupts */ #define XCHAL_NUM_INTLEVELS 2 /* number of interrupt levels (not including level zero) */ #define XCHAL_EXCM_LEVEL 1 /* level masked by PS.EXCM */ /* (always 1 in XEA1; levels 2 .. EXCM_LEVEL are "medium priority") */ /* Masks of interrupts at each interrupt level: */ #define XCHAL_INTLEVEL1_MASK 0x00003FFF #define XCHAL_INTLEVEL2_MASK 0x00000000 #define XCHAL_INTLEVEL3_MASK 0x00004000 #define XCHAL_INTLEVEL4_MASK 0x00000000 #define XCHAL_INTLEVEL5_MASK 0x00000000 #define XCHAL_INTLEVEL6_MASK 0x00000000 #define XCHAL_INTLEVEL7_MASK 0x00000000 /* Masks of interrupts at each range 1..n of interrupt levels: */ #define XCHAL_INTLEVEL1_ANDBELOW_MASK 0x00003FFF #define XCHAL_INTLEVEL2_ANDBELOW_MASK 0x00003FFF #define XCHAL_INTLEVEL3_ANDBELOW_MASK 0x00007FFF #define XCHAL_INTLEVEL4_ANDBELOW_MASK 0x00007FFF #define XCHAL_INTLEVEL5_ANDBELOW_MASK 0x00007FFF #define XCHAL_INTLEVEL6_ANDBELOW_MASK 0x00007FFF #define XCHAL_INTLEVEL7_ANDBELOW_MASK 0x00007FFF /* Level of each interrupt: */ #define XCHAL_INT0_LEVEL 1 #define XCHAL_INT1_LEVEL 1 #define XCHAL_INT2_LEVEL 1 #define XCHAL_INT3_LEVEL 1 #define XCHAL_INT4_LEVEL 1 #define XCHAL_INT5_LEVEL 1 #define XCHAL_INT6_LEVEL 1 #define XCHAL_INT7_LEVEL 1 #define XCHAL_INT8_LEVEL 1 #define XCHAL_INT9_LEVEL 1 #define XCHAL_INT10_LEVEL 1 #define XCHAL_INT11_LEVEL 1 #define XCHAL_INT12_LEVEL 1 #define XCHAL_INT13_LEVEL 1 #define XCHAL_INT14_LEVEL 3 #define XCHAL_DEBUGLEVEL 2 /* debug interrupt level */ #define XCHAL_HAVE_DEBUG_EXTERN_INT 1 /* OCD external db interrupt */ #define XCHAL_NMILEVEL 3 /* NMI "level" (for use with EXCSAVE/EPS/EPC_n, RFI n) */ /* Type of each interrupt: */ #define XCHAL_INT0_TYPE XTHAL_INTTYPE_EXTERN_LEVEL #define XCHAL_INT1_TYPE XTHAL_INTTYPE_EXTERN_LEVEL #define XCHAL_INT2_TYPE XTHAL_INTTYPE_EXTERN_LEVEL #define XCHAL_INT3_TYPE XTHAL_INTTYPE_EXTERN_LEVEL #define XCHAL_INT4_TYPE XTHAL_INTTYPE_EXTERN_LEVEL #define XCHAL_INT5_TYPE XTHAL_INTTYPE_EXTERN_LEVEL #define XCHAL_INT6_TYPE XTHAL_INTTYPE_TIMER #define XCHAL_INT7_TYPE XTHAL_INTTYPE_SOFTWARE #define XCHAL_INT8_TYPE XTHAL_INTTYPE_EXTERN_EDGE #define XCHAL_INT9_TYPE XTHAL_INTTYPE_EXTERN_EDGE #define XCHAL_INT10_TYPE XTHAL_INTTYPE_EXTERN_EDGE #define XCHAL_INT11_TYPE XTHAL_INTTYPE_EXTERN_EDGE #define XCHAL_INT12_TYPE XTHAL_INTTYPE_EXTERN_EDGE #define XCHAL_INT13_TYPE XTHAL_INTTYPE_EXTERN_EDGE #define XCHAL_INT14_TYPE XTHAL_INTTYPE_NMI /* Masks of interrupts for each type of interrupt: */ #define XCHAL_INTTYPE_MASK_UNCONFIGURED 0xFFFF8000 #define XCHAL_INTTYPE_MASK_SOFTWARE 0x00000080 #define XCHAL_INTTYPE_MASK_EXTERN_EDGE 0x00003F00 #define XCHAL_INTTYPE_MASK_EXTERN_LEVEL 0x0000003F #define XCHAL_INTTYPE_MASK_TIMER 0x00000040 #define XCHAL_INTTYPE_MASK_NMI 0x00004000 #define XCHAL_INTTYPE_MASK_WRITE_ERROR 0x00000000 /* Interrupt numbers assigned to specific interrupt sources: */ #define XCHAL_TIMER0_INTERRUPT 6 /* CCOMPARE0 */ #define XCHAL_TIMER1_INTERRUPT XTHAL_TIMER_UNCONFIGURED #define XCHAL_TIMER2_INTERRUPT XTHAL_TIMER_UNCONFIGURED #define XCHAL_TIMER3_INTERRUPT XTHAL_TIMER_UNCONFIGURED #define XCHAL_NMI_INTERRUPT 14 /* non-maskable interrupt */ /* Interrupt numbers for levels at which only one interrupt is configured: */ #define XCHAL_INTLEVEL3_NUM 14 /* (There are many interrupts each at level(s) 1.) */ /* * External interrupt vectors/levels. * These macros describe how Xtensa processor interrupt numbers * (as numbered internally, eg. in INTERRUPT and INTENABLE registers) * map to external BInterrupt pins, for those interrupts * configured as external (level-triggered, edge-triggered, or NMI). * See the Xtensa processor databook for more details. */ /* Core interrupt numbers mapped to each EXTERNAL interrupt number: */ #define XCHAL_EXTINT0_NUM 0 /* (intlevel 1) */ #define XCHAL_EXTINT1_NUM 1 /* (intlevel 1) */ #define XCHAL_EXTINT2_NUM 2 /* (intlevel 1) */ #define XCHAL_EXTINT3_NUM 3 /* (intlevel 1) */ #define XCHAL_EXTINT4_NUM 4 /* (intlevel 1) */ #define XCHAL_EXTINT5_NUM 5 /* (intlevel 1) */ #define XCHAL_EXTINT6_NUM 8 /* (intlevel 1) */ #define XCHAL_EXTINT7_NUM 9 /* (intlevel 1) */ #define XCHAL_EXTINT8_NUM 10 /* (intlevel 1) */ #define XCHAL_EXTINT9_NUM 11 /* (intlevel 1) */ #define XCHAL_EXTINT10_NUM 12 /* (intlevel 1) */ #define XCHAL_EXTINT11_NUM 13 /* (intlevel 1) */ #define XCHAL_EXTINT12_NUM 14 /* (intlevel 3) */ /*---------------------------------------------------------------------- EXCEPTIONS and VECTORS ----------------------------------------------------------------------*/ #define XCHAL_XEA_VERSION 2 /* Xtensa Exception Architecture number: 1 == XEA1 (old) 2 == XEA2 (new) 0 == XEAX (extern) */ #define XCHAL_HAVE_XEA1 0 /* Exception Architecture 1 */ #define XCHAL_HAVE_XEA2 1 /* Exception Architecture 2 */ #define XCHAL_HAVE_XEAX 0 /* External Exception Arch. */ #define XCHAL_HAVE_EXCEPTIONS 1 /* exception option */ #define XCHAL_HAVE_MEM_ECC_PARITY 0 /* local memory ECC/parity */ #define XCHAL_HAVE_VECTOR_SELECT 1 /* relocatable vectors */ #define XCHAL_HAVE_VECBASE 1 /* relocatable vectors */ #define XCHAL_VECBASE_RESET_VADDR 0x40000000 /* VECBASE reset value */ #define XCHAL_VECBASE_RESET_PADDR 0x40000000 #define XCHAL_RESET_VECBASE_OVERLAP 0 #define XCHAL_RESET_VECTOR0_VADDR 0x50000000 #define XCHAL_RESET_VECTOR0_PADDR 0x50000000 #define XCHAL_RESET_VECTOR1_VADDR 0x40000080 #define XCHAL_RESET_VECTOR1_PADDR 0x40000080 #define XCHAL_RESET_VECTOR_VADDR 0x50000000 #define XCHAL_RESET_VECTOR_PADDR 0x50000000 #define XCHAL_USER_VECOFS 0x00000050 #define XCHAL_USER_VECTOR_VADDR 0x40000050 #define XCHAL_USER_VECTOR_PADDR 0x40000050 #define XCHAL_KERNEL_VECOFS 0x00000030 #define XCHAL_KERNEL_VECTOR_VADDR 0x40000030 #define XCHAL_KERNEL_VECTOR_PADDR 0x40000030 #define XCHAL_DOUBLEEXC_VECOFS 0x00000070 #define XCHAL_DOUBLEEXC_VECTOR_VADDR 0x40000070 #define XCHAL_DOUBLEEXC_VECTOR_PADDR 0x40000070 #define XCHAL_INTLEVEL2_VECOFS 0x00000010 #define XCHAL_INTLEVEL2_VECTOR_VADDR 0x40000010 #define XCHAL_INTLEVEL2_VECTOR_PADDR 0x40000010 #define XCHAL_DEBUG_VECOFS XCHAL_INTLEVEL2_VECOFS #define XCHAL_DEBUG_VECTOR_VADDR XCHAL_INTLEVEL2_VECTOR_VADDR #define XCHAL_DEBUG_VECTOR_PADDR XCHAL_INTLEVEL2_VECTOR_PADDR #define XCHAL_NMI_VECOFS 0x00000020 #define XCHAL_NMI_VECTOR_VADDR 0x40000020 #define XCHAL_NMI_VECTOR_PADDR 0x40000020 #define XCHAL_INTLEVEL3_VECOFS XCHAL_NMI_VECOFS #define XCHAL_INTLEVEL3_VECTOR_VADDR XCHAL_NMI_VECTOR_VADDR #define XCHAL_INTLEVEL3_VECTOR_PADDR XCHAL_NMI_VECTOR_PADDR /*---------------------------------------------------------------------- DEBUG ----------------------------------------------------------------------*/ #define XCHAL_HAVE_OCD 1 /* OnChipDebug option */ #define XCHAL_NUM_IBREAK 1 /* number of IBREAKn regs */ #define XCHAL_NUM_DBREAK 1 /* number of DBREAKn regs */ #define XCHAL_HAVE_OCD_DIR_ARRAY 0 /* faster OCD option */ /*---------------------------------------------------------------------- MMU ----------------------------------------------------------------------*/ /* See core-matmap.h header file for more details. */ #define XCHAL_HAVE_TLBS 1 /* inverse of HAVE_CACHEATTR */ #define XCHAL_HAVE_SPANNING_WAY 1 /* one way maps I+D 4GB vaddr */ #define XCHAL_SPANNING_WAY 0 /* TLB spanning way number */ #define XCHAL_HAVE_IDENTITY_MAP 1 /* vaddr == paddr always */ #define XCHAL_HAVE_CACHEATTR 0 /* CACHEATTR register present */ #define XCHAL_HAVE_MIMIC_CACHEATTR 1 /* region protection */ #define XCHAL_HAVE_XLT_CACHEATTR 0 /* region prot. w/translation */ #define XCHAL_HAVE_PTP_MMU 0 /* full MMU (with page table [autorefill] and protection) usable for an MMU-based OS */ /* If none of the above last 4 are set, it's a custom TLB configuration. */ #define XCHAL_MMU_ASID_BITS 0 /* number of bits in ASIDs */ #define XCHAL_MMU_RINGS 1 /* number of rings (1..4) */ #define XCHAL_MMU_RING_BITS 0 /* num of bits in RING field */ #endif /* !XTENSA_HAL_NON_PRIVILEGED_ONLY */ #endif /* _XTENSA_CORE_CONFIGURATION_H */ picolibc-1.7.4/newlib/libc/machine/xtensa/machine/meson.build000066400000000000000000000032501414576234500241670ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2021 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # inc_machine_headers_machine = [ 'core-isa.h' ] install_headers(inc_machine_headers_machine, subdir:'machine' ) picolibc-1.7.4/newlib/libc/machine/xtensa/memcpy.S000066400000000000000000000143131414576234500220410ustar00rootroot00000000000000/* ANSI C standard library function memcpy. Copyright (c) 2002-2008 Tensilica Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "xtensa-asm.h" /* If the Xtensa Unaligned Load Exception option is not used, this code can run a few cycles faster by relying on the low address bits being ignored. However, if the code is then run with an Xtensa ISS client that checks for unaligned accesses, it will produce a lot of warning messages. Set this flag to disable the use of unaligned accesses and keep the ISS happy. */ #if XCHAL_UNALIGNED_LOAD_EXCEPTION || 1 #define UNALIGNED_ADDRESSES_CHECKED 1 #endif /* void *memcpy (void *dst, const void *src, size_t len) The algorithm is as follows: If the destination is unaligned, align it by conditionally copying 1- and/or 2-byte pieces. If the source is aligned, copy 16 bytes with a loop, and then finish up with 8, 4, 2, and 1-byte copies conditional on the length. Else (if source is unaligned), do the same, but use SRC to align the source data. This code tries to use fall-through branches for the common case of aligned source and destination and multiple of 4 (or 8) length. */ /* Byte by byte copy. */ .text .begin schedule .align XCHAL_INST_FETCH_WIDTH .literal_position __memcpy_aux: /* Skip bytes to get proper alignment for three-byte loop */ .skip XCHAL_INST_FETCH_WIDTH - 3 .Lbytecopy: #if XCHAL_HAVE_LOOPS loopnez a4, 2f #else beqz a4, 2f add a7, a3, a4 // a7 = end address for source #endif 1: l8ui a6, a3, 0 addi a3, a3, 1 s8i a6, a5, 0 addi a5, a5, 1 #if !XCHAL_HAVE_LOOPS bltu a3, a7, 1b #endif 2: leaf_return /* Destination is unaligned. */ .align 4 .Ldst1mod2: // dst is only byte aligned /* Do short copies byte-by-byte. */ bltui a4, 7, .Lbytecopy /* Copy 1 byte. */ l8ui a6, a3, 0 addi a3, a3, 1 addi a4, a4, -1 s8i a6, a5, 0 addi a5, a5, 1 /* Return to main algorithm if dst is now aligned. */ bbci.l a5, 1, .Ldstaligned .Ldst2mod4: // dst has 16-bit alignment /* Do short copies byte-by-byte. */ bltui a4, 6, .Lbytecopy /* Copy 2 bytes. */ l8ui a6, a3, 0 l8ui a7, a3, 1 addi a3, a3, 2 addi a4, a4, -2 s8i a6, a5, 0 s8i a7, a5, 1 addi a5, a5, 2 /* dst is now aligned; return to main algorithm. */ j .Ldstaligned .align 4 .global memcpy .type memcpy, @function memcpy: leaf_entry sp, 16 /* a2 = dst, a3 = src, a4 = len */ mov a5, a2 // copy dst so that a2 is return value bbsi.l a2, 0, .Ldst1mod2 bbsi.l a2, 1, .Ldst2mod4 .Ldstaligned: /* Get number of loop iterations with 16B per iteration. */ srli a7, a4, 4 /* Check if source is aligned. */ slli a8, a3, 30 bnez a8, .Lsrcunaligned /* Destination and source are word-aligned, use word copy. */ #if XCHAL_HAVE_LOOPS loopnez a7, 2f #else beqz a7, 2f slli a8, a7, 4 add a8, a8, a3 // a8 = end of last 16B source chunk #endif 1: l32i a6, a3, 0 l32i a7, a3, 4 s32i a6, a5, 0 l32i a6, a3, 8 s32i a7, a5, 4 l32i a7, a3, 12 s32i a6, a5, 8 addi a3, a3, 16 s32i a7, a5, 12 addi a5, a5, 16 #if !XCHAL_HAVE_LOOPS bltu a3, a8, 1b #endif /* Copy any leftover pieces smaller than 16B. */ 2: bbci.l a4, 3, 3f /* Copy 8 bytes. */ l32i a6, a3, 0 l32i a7, a3, 4 addi a3, a3, 8 s32i a6, a5, 0 s32i a7, a5, 4 addi a5, a5, 8 3: bbsi.l a4, 2, 4f bbsi.l a4, 1, 5f bbsi.l a4, 0, 6f leaf_return .align 4 /* Copy 4 bytes. */ 4: l32i a6, a3, 0 addi a3, a3, 4 s32i a6, a5, 0 addi a5, a5, 4 bbsi.l a4, 1, 5f bbsi.l a4, 0, 6f leaf_return /* Copy 2 bytes. */ 5: l16ui a6, a3, 0 addi a3, a3, 2 s16i a6, a5, 0 addi a5, a5, 2 bbsi.l a4, 0, 6f leaf_return /* Copy 1 byte. */ 6: l8ui a6, a3, 0 s8i a6, a5, 0 .Ldone: leaf_return /* Destination is aligned; source is unaligned. */ .align 4 .Lsrcunaligned: /* Avoid loading anything for zero-length copies. */ beqz a4, .Ldone /* Copy 16 bytes per iteration for word-aligned dst and unaligned src. */ ssa8 a3 // set shift amount from byte offset #if UNALIGNED_ADDRESSES_CHECKED srli a11, a8, 30 // save unalignment offset for below sub a3, a3, a11 // align a3 #endif l32i a6, a3, 0 // load first word #if XCHAL_HAVE_LOOPS loopnez a7, 2f #else beqz a7, 2f slli a10, a7, 4 add a10, a10, a3 // a10 = end of last 16B source chunk #endif 1: l32i a7, a3, 4 l32i a8, a3, 8 src_b a6, a6, a7 s32i a6, a5, 0 l32i a9, a3, 12 src_b a7, a7, a8 s32i a7, a5, 4 l32i a6, a3, 16 src_b a8, a8, a9 s32i a8, a5, 8 addi a3, a3, 16 src_b a9, a9, a6 s32i a9, a5, 12 addi a5, a5, 16 #if !XCHAL_HAVE_LOOPS bltu a3, a10, 1b #endif 2: bbci.l a4, 3, 3f /* Copy 8 bytes. */ l32i a7, a3, 4 l32i a8, a3, 8 src_b a6, a6, a7 s32i a6, a5, 0 addi a3, a3, 8 src_b a7, a7, a8 s32i a7, a5, 4 addi a5, a5, 8 mov a6, a8 3: bbci.l a4, 2, 4f /* Copy 4 bytes. */ l32i a7, a3, 4 addi a3, a3, 4 src_b a6, a6, a7 s32i a6, a5, 0 addi a5, a5, 4 mov a6, a7 4: #if UNALIGNED_ADDRESSES_CHECKED add a3, a3, a11 // readjust a3 with correct misalignment #endif bbsi.l a4, 1, 5f bbsi.l a4, 0, 6f leaf_return /* Copy 2 bytes. */ 5: l8ui a6, a3, 0 l8ui a7, a3, 1 addi a3, a3, 2 s8i a6, a5, 0 s8i a7, a5, 1 addi a5, a5, 2 bbsi.l a4, 0, 6f leaf_return /* Copy 1 byte. */ 6: l8ui a6, a3, 0 s8i a6, a5, 0 leaf_return .end schedule .size memcpy, . - memcpy picolibc-1.7.4/newlib/libc/machine/xtensa/memset.S000066400000000000000000000075041414576234500220450ustar00rootroot00000000000000/* ANSI C standard library function memset. Copyright (c) 2001-2008 Tensilica Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "xtensa-asm.h" /* void *memset (void *dst, int c, size_t length) The algorithm is as follows: Create a word with c in all byte positions. If the destination is aligned, set 16B chunks with a loop, and then finish up with 8B, 4B, 2B, and 1B stores conditional on the length. If the destination is unaligned, align it by conditionally setting 1B and/or 2B and then go to aligned case. This code tries to use fall-through branches for the common case of an aligned destination (except for the branches to the alignment labels). */ /* Byte-by-byte set. */ .text .begin schedule .align XCHAL_INST_FETCH_WIDTH .literal_position __memset_aux: /* Skip bytes to get proper alignment for three-byte loop */ .skip XCHAL_INST_FETCH_WIDTH - 3 .Lbyteset: #if XCHAL_HAVE_LOOPS loopnez a4, 2f #else beqz a4, 2f add a6, a5, a4 // a6 = ending address #endif 1: s8i a3, a5, 0 addi a5, a5, 1 #if !XCHAL_HAVE_LOOPS bltu a5, a6, 1b #endif 2: leaf_return /* Destination is unaligned. */ .align 4 .Ldst1mod2: // dst is only byte aligned /* Do short sizes byte-by-byte. */ bltui a4, 8, .Lbyteset /* Set 1 byte. */ s8i a3, a5, 0 addi a5, a5, 1 addi a4, a4, -1 /* Now retest if dst is aligned. */ _bbci.l a5, 1, .Ldstaligned .Ldst2mod4: // dst has 16-bit alignment /* Do short sizes byte-by-byte. */ bltui a4, 8, .Lbyteset /* Set 2 bytes. */ s16i a3, a5, 0 addi a5, a5, 2 addi a4, a4, -2 /* dst is now aligned; return to main algorithm */ j .Ldstaligned .align 4 .global memset .type memset, @function memset: leaf_entry sp, 16 /* a2 = dst, a3 = c, a4 = length */ /* Duplicate character into all bytes of word. */ extui a3, a3, 0, 8 slli a7, a3, 8 or a3, a3, a7 slli a7, a3, 16 or a3, a3, a7 mov a5, a2 // copy dst so that a2 is return value /* Check if dst is unaligned. */ _bbsi.l a2, 0, .Ldst1mod2 _bbsi.l a2, 1, .Ldst2mod4 .Ldstaligned: /* Get number of loop iterations with 16B per iteration. */ srli a7, a4, 4 /* Destination is word-aligned. */ #if XCHAL_HAVE_LOOPS loopnez a7, 2f #else beqz a7, 2f slli a6, a7, 4 add a6, a6, a5 // a6 = end of last 16B chunk #endif /* Set 16 bytes per iteration. */ 1: s32i a3, a5, 0 s32i a3, a5, 4 s32i a3, a5, 8 s32i a3, a5, 12 addi a5, a5, 16 #if !XCHAL_HAVE_LOOPS bltu a5, a6, 1b #endif /* Set any leftover pieces smaller than 16B. */ 2: bbci.l a4, 3, 3f /* Set 8 bytes. */ s32i a3, a5, 0 s32i a3, a5, 4 addi a5, a5, 8 3: bbci.l a4, 2, 4f /* Set 4 bytes. */ s32i a3, a5, 0 addi a5, a5, 4 4: bbci.l a4, 1, 5f /* Set 2 bytes. */ s16i a3, a5, 0 addi a5, a5, 2 5: bbci.l a4, 0, 6f /* Set 1 byte. */ s8i a3, a5, 0 6: leaf_return .end schedule .size memset, . - memset picolibc-1.7.4/newlib/libc/machine/xtensa/meson.build000066400000000000000000000033531414576234500225670ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Jonathan McDowell # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # srcs_machine = [ 'memcpy.S', 'memset.S', 'setjmp.S', 'strcmp.S', 'strcpy.S', 'strlen.S', 'strncpy.S', ] subdir('sys') subdir('machine') src_machine = files(srcs_machine) picolibc-1.7.4/newlib/libc/machine/xtensa/setjmp.S000066400000000000000000000154701414576234500220560ustar00rootroot00000000000000/* setjmp/longjmp functions for Xtensa. Copyright (c) 2001-2006 by Tensilica Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* Windowed ABI: This implementation relies heavily on the Xtensa register window mechanism. Setjmp flushes all the windows except its own to the stack and then copies registers from the save areas on the stack into the jmp_buf structure, along with the return address of the call to setjmp. Longjmp invalidates all the windows except its own, and then sets things up so that it will return to the right place, using a window underflow to automatically restore the registers. Note that it would probably be sufficient to only copy the registers from setjmp's caller into jmp_buf. However, we also copy the save area located at the stack pointer of setjmp's caller. This save area will typically remain intact until the longjmp call. The one exception is when there is an intervening alloca in setjmp's caller. This is certainly an unusual situation and is likely to cause problems in any case (the storage allocated on the stack cannot be safely accessed following the longjmp). As bad as it is, on most systems this situation would not necessarily lead to a catastrophic failure. If we did not preserve the extra save area on Xtensa, however, it would. When setjmp's caller returns after a longjmp, there will be a window underflow; an invalid return address or stack pointer in the save area will almost certainly lead to a crash. Keeping a copy of the extra save area in the jmp_buf avoids this with only a small additional cost. If setjmp and longjmp are ever time-critical, this could be removed. Call0 ABI: Much like other ABIs, this version just saves the necessary registers to the stack and restores them later. Much less needs to be done. */ #include "xtensa-asm.h" #define SYS_nop 0 #if XCHAL_HAVE_WINDOWED && !__XTENSA_CALL0_ABI__ /* int setjmp (jmp_buf env) */ .text .align 4 .literal_position .global setjmp .type setjmp, @function setjmp: entry sp, 16 /* Flush registers. */ mov a4, a2 // save a2 (jmp_buf) movi a2, SYS_nop syscall mov a2, a4 // restore a2 /* Copy the register save area at (sp - 16). */ addi a5, a1, -16 l32i a3, a5, 0 l32i a4, a5, 4 s32i a3, a2, 0 s32i a4, a2, 4 l32i a3, a5, 8 l32i a4, a5, 12 s32i a3, a2, 8 s32i a4, a2, 12 /* Copy 0-8 words from the register overflow area. */ extui a3, a0, 30, 2 blti a3, 2, .Lendsj l32i a7, a1, 4 slli a4, a3, 4 sub a5, a7, a4 addi a6, a2, 16 addi a7, a7, -16 // a7 = end of register overflow area .Lsjloop: l32i a3, a5, 0 l32i a4, a5, 4 s32i a3, a6, 0 s32i a4, a6, 4 l32i a3, a5, 8 l32i a4, a5, 12 s32i a3, a6, 8 s32i a4, a6, 12 addi a5, a5, 16 addi a6, a6, 16 blt a5, a7, .Lsjloop .Lendsj: /* Copy the register save area at sp. */ l32i a3, a1, 0 l32i a4, a1, 4 s32i a3, a2, 48 s32i a4, a2, 52 l32i a3, a1, 8 l32i a4, a1, 12 s32i a3, a2, 56 s32i a4, a2, 60 /* Save the return address, including the window size bits. */ s32i a0, a2, 64 movi a2, 0 retw .size setjmp, . - setjmp /* void longjmp (jmp_buf env, int val) */ .align 4 .literal_position .global longjmp .type longjmp, @function longjmp: entry sp, 16 /* a2 == &env, a3 == val */ #if XCHAL_MAYHAVE_ERRATUM_XEA1KWIN /* Using this register triggers early any overflow that a kernel-mode level-one interrupt might otherwise cause. */ # define AR_WB a15 #else /* Using this register is more efficient; it triggers less overflows. */ # define AR_WB a5 #endif /* Invalidate all but the current window; set WindowStart to (1 << WindowBase). */ rsr AR_WB, WINDOWBASE movi a4, 1 ssl AR_WB sll a4, a4 wsr a4, WINDOWSTART rsync /* Return to the return address of the setjmp, using the window size bits from the setjmp call so that the caller will be able to find the return value that we put in a2. */ l32i a0, a2, 64 /* Copy the first 4 saved registers from jmp_buf into the save area at the current sp so that the values will be restored to registers when longjmp returns. */ addi a7, a1, -16 l32i a4, a2, 0 l32i a5, a2, 4 s32i a4, a7, 0 s32i a5, a7, 4 l32i a4, a2, 8 l32i a5, a2, 12 s32i a4, a7, 8 s32i a5, a7, 12 /* Copy the remaining 0-8 saved registers. */ extui a7, a0, 30, 2 blti a7, 2, .Lendlj l32i a8, a2, 52 slli a4, a7, 4 sub a6, a8, a4 addi a5, a2, 16 addi a8, a8, -16 // a8 = end of register overflow area .Lljloop: l32i a7, a5, 0 l32i a4, a5, 4 s32i a7, a6, 0 s32i a4, a6, 4 l32i a7, a5, 8 l32i a4, a5, 12 s32i a7, a6, 8 s32i a4, a6, 12 addi a5, a5, 16 addi a6, a6, 16 blt a6, a8, .Lljloop .Lendlj: /* The 4 words saved from the register save area at the target's sp are copied back to the target procedure's save area. The only point of this is to prevent a catastrophic failure in case the contents were moved by an alloca after calling setjmp. This is a bit paranoid but it doesn't cost much. */ l32i a7, a2, 4 // load the target stack pointer addi a7, a7, -16 // find the destination save area l32i a4, a2, 48 l32i a5, a2, 52 s32i a4, a7, 0 s32i a5, a7, 4 l32i a4, a2, 56 l32i a5, a2, 60 s32i a4, a7, 8 s32i a5, a7, 12 /* Return val ? val : 1. */ movi a2, 1 movnez a2, a3, a3 retw .size longjmp, . - longjmp #else /* CALL0 ABI */ .text .align 4 .literal_position .global setjmp .type setjmp, @function setjmp: s32i a0, a2, 0 s32i a1, a2, 4 s32i a12, a2, 8 s32i a13, a2, 12 s32i a14, a2, 16 s32i a15, a2, 20 movi a2, 0 ret .size setjmp, . - setjmp .align 4 .literal_position .global longjmp .type longjmp, @function longjmp: l32i a0, a2, 0 l32i a12, a2, 8 l32i a13, a2, 12 l32i a14, a2, 16 l32i a15, a2, 20 l32i a1, a2, 4 /* Return val ? val : 1. */ movi a2, 1 movnez a2, a3, a3 ret .size longjmp, .-longjmp #endif /* CALL0 ABI */ picolibc-1.7.4/newlib/libc/machine/xtensa/strcmp.S000066400000000000000000000533111414576234500220600ustar00rootroot00000000000000/* ANSI C standard library function strcmp. Copyright (c) 2001-20012 Tensilica Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "xtensa-asm.h" #define MASK4 0x40404040 #if XCHAL_HAVE_L32R .literal .Lmask0, MASK0 .literal .Lmask1, MASK1 .literal .Lmask2, MASK2 .literal .Lmask3, MASK3 .literal .Lmask4, MASK4 #endif /* XCHAL_HAVE_L32R */ .text .align 4 .literal_position .global strcmp .type strcmp, @function strcmp: #if XCHAL_HAVE_L32R && XCHAL_HAVE_LOOPS && XCHAL_HAVE_DENSITY && __XTENSA_EL__ && XCHAL_HAVE_FLIX3 /* Fast version for FLIX3 Little Endian */ leaf_entry sp, 16 /* a2 = s1, a3 = s2 */ l8ui a8, a2, 0 // byte 0 from s1 l8ui a9, a3, 0 // byte 0 from s2 movi a10, 3 // mask movi a5, 0xfffffffc or a11, a2, a3 l32r a4, .Lmask0 // mask for byte 0 l32r a7, .Lmask4 addi a3, a3, -8 addi a2, a2, -8 and a5, a5, a2 bne.w18 a8, a9, .Lretdiff l32i a8, a5, 8 // get word from aligned variant of s1 bany.w18 a11, a10, .Lnot_aligned /* s1 is word-aligned; s2 is word-aligned. If the zero-overhead loop option is available, use an (almost) infinite zero-overhead loop with conditional exits so we only pay for taken branches when exiting the loop. */ /* New algorithm, relying on the fact that all normal ASCII is between 32 and 127. Rather than check all bytes for zero: Take one word (4 bytes). Call it w1. Shift w1 left by one into w1'. Or w1 and w1'. For all normal ASCII bit 6 will be 1; for zero it won't. Check that all 4 bit 6's (one for each byte) are one: If they are, we are definitely not done. If they are not, we are probably done, but need to check for zero. */ .Laligned: /* Loop forever */ 1: loop a0, .Laligned_done /* First unrolled loop body. */ l32i a9, a3, 8 // get word from s2 addi a3, a3, 8 // advance s2 pointer slli a5, a8, 1 or a10, a8, a5 {l32i a11, a2, 12 // get word from s1+4 bne.w18 a8, a9, .Lwne2} l32i a9, a3, 4 // get word from s2+4 bnall.w18 a10, a7, .Lprobeq /* Second unrolled loop body. */ slli a5, a11, 1 or a10, a11, a5 addi a2, a2, 8 // advance s1 pointer mov a8, a11 bne.w18 a11, a9, .Lwne2 l32i a8, a2, 8 // get word from s1 bnall.w18 a10, a7, .Lprobeq2 .Laligned_done: l32i a8, a2, 8 // get word from s1 j 1b .Lnot_aligned: xor a11, a2, a3 // compare low two bits of s1 and s2 bany a11, a10, .Lunaligned // if they have different alignment /* s1/s2 are not word-aligned. */ movi a5, 0xfffffffc addi a2, a2, 1 // advance s1 beqz a9, .Leq // bytes equal, if zero, strings are equal addi a3, a3, 1 // advance s2 and a6, a2, a5 l32i a8, a6, 8 // get word from s1 bnone a2, a10, .Laligned // if s1/s2 now aligned l8ui a8, a2, 8 // byte 1 from s1 l8ui a9, a3, 8 // byte 1 from s2 addi a2, a2, 1 // advance s1 bne a8, a9, .Lretdiff // if different, return difference beqz a8, .Leq // bytes equal, if zero, strings are equal addi a3, a3, 1 // advance s2 and a6, a2, a5 l32i a8, a6, 8 // get word from s1 bnone a2, a10, .Laligned // if s1/s2 now aligned l8ui a8, a2, 8 // byte 2 from s1 l8ui a9, a3, 8 // byte 2 from s2 addi a2, a2, 1 // advance s1 bne a8, a9, .Lretdiff // if different, return difference beqz a8, .Leq // bytes equal, if zero, strings are equal addi a3, a3, 1 // advance s2 l32i a8, a2, 8 // get word from s1 j .Laligned /* s1 and s2 have different alignment. If the zero-overhead loop option is available, use an (almost) infinite zero-overhead loop with conditional exits so we only pay for taken branches when exiting the loop. Note: It is important for this unaligned case to come before the code for aligned strings, because otherwise some of the branches above cannot reach and have to be transformed to branches around jumps. The unaligned code is smaller and the branches can reach over it. */ .Lunaligned: movi.n a8, 0 // set up for the maximum loop count loop a8, .Lretdiff // loop forever (almost anyway) l8ui a8, a2, 8 l8ui a9, a3, 8 addi a2, a2, 1 bne a8, a9, .Lretdiff addi a3, a3, 1 beqz a8, .Lretdiff .Lretdiff: sub a2, a8, a9 leaf_return .Lprobeq2: /* Adjust pointers to account for the loop unrolling. */ mov a8, a11 addi a2, a2, -4 addi a3, a3, 4 /* align (0 mod 4) */ .Lprobeq: /* Words are probably equal, but check for sure. If not, loop over the rest of string using normal algorithm. */ bnone a8, a4, .Leq // if byte 0 is zero l32r a5, .Lmask1 // mask for byte 1 l32r a6, .Lmask2 // mask for byte 2 bnone a8, a5, .Leq // if byte 1 is zero l32r a7, .Lmask3 // mask for byte 3 bnone a8, a6, .Leq // if byte 2 is zero bnone a8, a7, .Leq // if byte 3 is zero /* align (1 mod 4) */ addi.n a2, a2, 12 // advance s1 pointer addi.n a3, a3, 4 // advance s2 pointer /* align (1 mod 4) or (2 mod 4) */ 1: loop a0, .Lend // loop forever (a4 is bigger than max iters) l32i a11, a2, 0 // get word from s1 l32i a9, a3, 0 // get word from s2 addi a2, a2, 4 // advance s1 pointer bne a11, a9, .Lwne bnone a11, a4, .Leq // if byte 0 is zero bnone a11, a5, .Leq // if byte 1 is zero bnone a11, a6, .Leq // if byte 2 is zero bnone a11, a7, .Leq // if byte 3 is zero addi a3, a3, 4 // advance s2 pointer .Lend: j 1b /* Words are equal; some byte is zero. */ .Leq: movi a2, 0 // return equal leaf_return .Lwne2: /* Words are not equal. On big-endian processors, if none of the bytes are zero, the return value can be determined by a simple comparison. */ .Lwne: /* Words are not equal. */ xor a2, a8, a9 // get word with nonzero in byte that differs extui a10, a8, 0, 8 extui a11, a9, 0, 8 movi a5, MASK1 // mask for byte 1 bany.w18 a2, a4, .Ldiff0 // if byte 0 differs bnone.w18 a8, a4, .Leq // if byte 0 is zero movi a6, MASK2 // mask for byte 2 bany.w18 a2, a5, .Ldiff1 // if byte 1 differs extui a10, a8, 24, 8 bnone.w18 a8, a5, .Leq // if byte 1 is zero extui a11, a9, 24, 8 bany.w18 a2, a6, .Ldiff2 // if byte 2 differs sub a2, a10, a11 bnone.w18 a8, a6, .Leq // if byte 2 is zero /* Little-endian is a little more difficult because can't subtract whole words. */ .Ldiff3: /* Bytes 0-2 are equal; byte 3 is different. For little-endian need to have a sign bit for the difference. */ leaf_return .Ldiff0: /* Byte 0 is different. */ sub a2, a10, a11 leaf_return .Ldiff1: /* Byte 0 is equal; byte 1 is different. */ extui a10, a8, 8, 8 extui a11, a9, 8, 8 sub a2, a10, a11 leaf_return .Ldiff2: /* Bytes 0-1 are equal; byte 2 is different. */ extui a10, a8, 16, 8 extui a11, a9, 16, 8 sub a2, a10, a11 leaf_return #else #if XCHAL_HAVE_L32R && XCHAL_HAVE_LOOPS && XCHAL_HAVE_DENSITY && __XTENSA_EL__ && XCHAL_HAVE_PDX4 /* Fast version for FLIX3 Little Endian */ leaf_entry sp, 16 /* a2 = s1, a3 = s2 */ l8ui a8, a2, 0 // byte 0 from s1 l8ui a9, a3, 0 // byte 0 from s2 movi a10, 3 // mask movi a5, 0xfffffffc or a11, a2, a3 l32r a4, .Lmask0 // mask for byte 0 l32r a7, .Lmask4 addi a3, a3, -8 addi a2, a2, -8 and a5, a5, a2 bne.w15 a8, a9, .Lretdiff l32i a8, a5, 8 // get word from aligned variant of s1 bany.w15 a11, a10, .Lnot_aligned /* s1 is word-aligned; s2 is word-aligned. If the zero-overhead loop option is available, use an (almost) infinite zero-overhead loop with conditional exits so we only pay for taken branches when exiting the loop. */ /* New algorithm, relying on the fact that all normal ASCII is between 32 and 127. Rather than check all bytes for zero: Take one word (4 bytes). Call it w1. Shift w1 left by one into w1'. Or w1 and w1'. For all normal ASCII bit 6 will be 1; for zero it won't. Check that all 4 bit 6's (one for each byte) are one: If they are, we are definitely not done. If they are not, we are probably done, but need to check for zero. */ .Laligned: /* Loop forever */ 1: loop a0, .Laligned_done /* First unrolled loop body. */ l32i a9, a3, 8 // get word from s2 addi a3, a3, 8 // advance s2 pointer slli a5, a8, 1 or a10, a8, a5 { bne.w15 a8, a9, .Lwne2 l32i a11, a2, 12 // get word from s1+4 nop nop } l32i a9, a3, 4 // get word from s2+4 bnall.w15 a10, a7, .Lprobeq /* Second unrolled loop body. */ slli a5, a11, 1 or a10, a11, a5 addi a2, a2, 8 // advance s1 pointer mov a8, a11 bne.w15 a11, a9, .Lwne2 l32i a8, a2, 8 // get word from s1 bnall.w15 a10, a7, .Lprobeq2 .Laligned_done: l32i a8, a2, 8 // get word from s1 j 1b .Lnot_aligned: xor a11, a2, a3 // compare low two bits of s1 and s2 bany a11, a10, .Lunaligned // if they have different alignment /* s1/s2 are not word-aligned. */ movi a5, 0xfffffffc addi a2, a2, 1 // advance s1 beqz a9, .Leq // bytes equal, if zero, strings are equal addi a3, a3, 1 // advance s2 and a6, a2, a5 l32i a8, a6, 8 // get word from s1 bnone a2, a10, .Laligned // if s1/s2 now aligned l8ui a8, a2, 8 // byte 1 from s1 l8ui a9, a3, 8 // byte 1 from s2 addi a2, a2, 1 // advance s1 bne a8, a9, .Lretdiff // if different, return difference beqz a8, .Leq // bytes equal, if zero, strings are equal addi a3, a3, 1 // advance s2 and a6, a2, a5 l32i a8, a6, 8 // get word from s1 bnone a2, a10, .Laligned // if s1/s2 now aligned l8ui a8, a2, 8 // byte 2 from s1 l8ui a9, a3, 8 // byte 2 from s2 addi a2, a2, 1 // advance s1 bne a8, a9, .Lretdiff // if different, return difference beqz a8, .Leq // bytes equal, if zero, strings are equal addi a3, a3, 1 // advance s2 l32i a8, a2, 8 // get word from s1 j .Laligned /* s1 and s2 have different alignment. If the zero-overhead loop option is available, use an (almost) infinite zero-overhead loop with conditional exits so we only pay for taken branches when exiting the loop. Note: It is important for this unaligned case to come before the code for aligned strings, because otherwise some of the branches above cannot reach and have to be transformed to branches around jumps. The unaligned code is smaller and the branches can reach over it. */ .Lunaligned: movi.n a8, 0 // set up for the maximum loop count loop a8, .Lretdiff // loop forever (almost anyway) l8ui a8, a2, 8 l8ui a9, a3, 8 addi a2, a2, 1 bne a8, a9, .Lretdiff addi a3, a3, 1 beqz a8, .Lretdiff .Lretdiff: sub a2, a8, a9 leaf_return .Lprobeq2: /* Adjust pointers to account for the loop unrolling. */ mov a8, a11 addi a2, a2, -4 addi a3, a3, 4 /* align (0 mod 4) */ .Lprobeq: /* Words are probably equal, but check for sure. If not, loop over the rest of string using normal algorithm. */ bnone a8, a4, .Leq // if byte 0 is zero l32r a5, .Lmask1 // mask for byte 1 l32r a6, .Lmask2 // mask for byte 2 bnone a8, a5, .Leq // if byte 1 is zero l32r a7, .Lmask3 // mask for byte 3 bnone a8, a6, .Leq // if byte 2 is zero bnone a8, a7, .Leq // if byte 3 is zero /* align (1 mod 4) */ addi.n a2, a2, 12 // advance s1 pointer addi.n a3, a3, 4 // advance s2 pointer /* align (1 mod 4) or (2 mod 4) */ 1: loop a0, .Lend // loop forever (a4 is bigger than max iters) l32i a11, a2, 0 // get word from s1 l32i a9, a3, 0 // get word from s2 addi a2, a2, 4 // advance s1 pointer bne a11, a9, .Lwne bnone a11, a4, .Leq // if byte 0 is zero bnone a11, a5, .Leq // if byte 1 is zero bnone a11, a6, .Leq // if byte 2 is zero bnone a11, a7, .Leq // if byte 3 is zero addi a3, a3, 4 // advance s2 pointer .Lend: j 1b /* Words are equal; some byte is zero. */ .Leq: movi a2, 0 // return equal leaf_return .Lwne2: /* Words are not equal. On big-endian processors, if none of the bytes are zero, the return value can be determined by a simple comparison. */ .Lwne: /* Words are not equal. */ xor a2, a8, a9 // get word with nonzero in byte that differs extui a10, a8, 0, 8 extui a11, a9, 0, 8 movi a5, MASK1 // mask for byte 1 bany.w15 a2, a4, .Ldiff0 // if byte 0 differs bnone.w15 a8, a4, .Leq // if byte 0 is zero movi a6, MASK2 // mask for byte 2 bany.w15 a2, a5, .Ldiff1 // if byte 1 differs extui a10, a8, 24, 8 bnone.w15 a8, a5, .Leq // if byte 1 is zero extui a11, a9, 24, 8 bany.w15 a2, a6, .Ldiff2 // if byte 2 differs sub a2, a10, a11 bnone.w15 a8, a6, .Leq // if byte 2 is zero /* Little-endian is a little more difficult because can't subtract whole words. */ .Ldiff3: /* Bytes 0-2 are equal; byte 3 is different. For little-endian need to have a sign bit for the difference. */ leaf_return .Ldiff0: /* Byte 0 is different. */ sub a2, a10, a11 leaf_return .Ldiff1: /* Byte 0 is equal; byte 1 is different. */ extui a10, a8, 8, 8 extui a11, a9, 8, 8 sub a2, a10, a11 leaf_return .Ldiff2: /* Bytes 0-1 are equal; byte 2 is different. */ extui a10, a8, 16, 8 extui a11, a9, 16, 8 sub a2, a10, a11 leaf_return #else /* Not FLIX3 */ leaf_entry sp, 16 /* a2 = s1, a3 = s2 */ l8ui a8, a2, 0 // byte 0 from s1 l8ui a9, a3, 0 // byte 0 from s2 movi a10, 3 // mask bne a8, a9, .Lretdiff or a11, a2, a3 bnone a11, a10, .Laligned xor a11, a2, a3 // compare low two bits of s1 and s2 bany a11, a10, .Lunaligned // if they have different alignment /* s1/s2 are not word-aligned. */ addi a2, a2, 1 // advance s1 beqz a8, .Leq // bytes equal, if zero, strings are equal addi a3, a3, 1 // advance s2 bnone a2, a10, .Laligned // if s1/s2 now aligned l8ui a8, a2, 0 // byte 1 from s1 l8ui a9, a3, 0 // byte 1 from s2 addi a2, a2, 1 // advance s1 bne a8, a9, .Lretdiff // if different, return difference beqz a8, .Leq // bytes equal, if zero, strings are equal addi a3, a3, 1 // advance s2 bnone a2, a10, .Laligned // if s1/s2 now aligned l8ui a8, a2, 0 // byte 2 from s1 l8ui a9, a3, 0 // byte 2 from s2 addi a2, a2, 1 // advance s1 bne a8, a9, .Lretdiff // if different, return difference beqz a8, .Leq // bytes equal, if zero, strings are equal addi a3, a3, 1 // advance s2 j .Laligned /* s1 and s2 have different alignment. If the zero-overhead loop option is available, use an (almost) infinite zero-overhead loop with conditional exits so we only pay for taken branches when exiting the loop. Note: It is important for this unaligned case to come before the code for aligned strings, because otherwise some of the branches above cannot reach and have to be transformed to branches around jumps. The unaligned code is smaller and the branches can reach over it. */ .align 4 #if XCHAL_HAVE_LOOPS #if XCHAL_HAVE_DENSITY /* (2 mod 4) alignment for loop instruction */ #else /* (1 mod 4) alignment for loop instruction */ .byte 0 .byte 0 #endif #endif .Lunaligned: #if XCHAL_HAVE_LOOPS #if XCHAL_HAVE_DENSITY _movi.n a8, 0 // set up for the maximum loop count #else _movi a8, 0 // set up for the maximum loop count #endif loop a8, .Lretdiff // loop forever (almost anyway) #endif .Lnextbyte: l8ui a8, a2, 0 l8ui a9, a3, 0 addi a2, a2, 1 bne a8, a9, .Lretdiff addi a3, a3, 1 #if XCHAL_HAVE_LOOPS beqz a8, .Lretdiff #else bnez a8, .Lnextbyte #endif .Lretdiff: sub a2, a8, a9 leaf_return /* s1 is word-aligned; s2 is word-aligned. If the zero-overhead loop option is available, use an (almost) infinite zero-overhead loop with conditional exits so we only pay for taken branches when exiting the loop. */ /* New algorithm, relying on the fact that all normal ASCII is between 32 and 127. Rather than check all bytes for zero: Take one word (4 bytes). Call it w1. Shift w1 left by one into w1'. Or w1 and w1'. For all normal ASCII bit 6 will be 1; for zero it won't. Check that all 4 bit 6's (one for each byte) are one: If they are, we are definitely not done. If they are not, we are probably done, but need to check for zero. */ .align 4 #if XCHAL_HAVE_LOOPS #if !XCHAL_HAVE_L32R /* (2 mod 4) alignment for loop instruction */ .byte 0 .byte 0 #endif .Laligned: #if XCHAL_HAVE_L32R l32r a4, .Lmask0 // mask for byte 0 l32r a7, .Lmask4 #else const16 a4, MASK0@h const16 a4, MASK0@l const16 a7, MASK4@h const16 a7, MASK4@l #endif /* Loop forever */ 1: loop a0, .Laligned_done /* First unrolled loop body. */ l32i a8, a2, 0 // get word from s1 l32i a9, a3, 0 // get word from s2 slli a5, a8, 1 bne a8, a9, .Lwne2 or a9, a8, a5 bnall a9, a7, .Lprobeq /* Second unrolled loop body. */ l32i a8, a2, 4 // get word from s1+4 l32i a9, a3, 4 // get word from s2+4 slli a5, a8, 1 bne a8, a9, .Lwne2 or a9, a8, a5 bnall a9, a7, .Lprobeq2 addi a2, a2, 8 // advance s1 pointer addi a3, a3, 8 // advance s2 pointer .Laligned_done: j 1b .Lprobeq2: /* Adjust pointers to account for the loop unrolling. */ addi a2, a2, 4 addi a3, a3, 4 #else /* !XCHAL_HAVE_LOOPS */ .Laligned: movi a4, MASK0 // mask for byte 0 movi a7, MASK4 j .Lfirstword .Lnextword: addi a2, a2, 4 // advance s1 pointer addi a3, a3, 4 // advance s2 pointer .Lfirstword: l32i a8, a2, 0 // get word from s1 l32i a9, a3, 0 // get word from s2 slli a5, a8, 1 bne a8, a9, .Lwne2 or a9, a8, a5 ball a9, a7, .Lnextword #endif /* !XCHAL_HAVE_LOOPS */ /* align (0 mod 4) */ .Lprobeq: /* Words are probably equal, but check for sure. If not, loop over the rest of string using normal algorithm. */ bnone a8, a4, .Leq // if byte 0 is zero #if XCHAL_HAVE_L32R l32r a5, .Lmask1 // mask for byte 1 l32r a6, .Lmask2 // mask for byte 2 bnone a8, a5, .Leq // if byte 1 is zero l32r a7, .Lmask3 // mask for byte 3 bnone a8, a6, .Leq // if byte 2 is zero bnone a8, a7, .Leq // if byte 3 is zero /* align (1 mod 4) */ #else const16 a5, MASK1@h // mask for byte 1 const16 a5, MASK1@l bnone a8, a5, .Leq // if byte 1 is zero const16 a6, MASK2@h // mask for byte 2 const16 a6, MASK2@l bnone a8, a6, .Leq // if byte 2 is zero const16 a7, MASK3@h // mask for byte 3 const16 a7, MASK3@l bnone a8, a7, .Leq // if byte 3 is zero /* align (2 mod 4) */ #endif /* XCHAL_HAVE_L32R */ #if XCHAL_HAVE_DENSITY addi.n a2, a2, 4 // advance s1 pointer addi.n a3, a3, 4 // advance s2 pointer /* align (1 mod 4) or (2 mod 4) */ #else addi a2, a2, 4 // advance s1 pointer addi a3, a3, 4 // advance s2 pointer or a1, a1, a1 // nop #if !XCHAL_HAVE_L32R or a1, a1, a1 // nop #endif /* align (2 mod 4) */ #endif /* XCHAL_HAVE_DENSITY */ #if XCHAL_HAVE_LOOPS 1: loop a0, .Leq // loop forever (a4 is bigger than max iters) l32i a8, a2, 0 // get word from s1 l32i a9, a3, 0 // get word from s2 addi a2, a2, 4 // advance s1 pointer bne a8, a9, .Lwne bnone a8, a4, .Leq // if byte 0 is zero bnone a8, a5, .Leq // if byte 1 is zero bnone a8, a6, .Leq // if byte 2 is zero bnone a8, a7, .Leq // if byte 3 is zero addi a3, a3, 4 // advance s2 pointer j 1b #else /* !XCHAL_HAVE_LOOPS */ j .Lfirstword2 .Lnextword2: addi a3, a3, 4 // advance s2 pointer .Lfirstword2: l32i a8, a2, 0 // get word from s1 l32i a9, a3, 0 // get word from s2 addi a2, a2, 4 // advance s1 pointer bne a8, a9, .Lwne bnone a8, a4, .Leq // if byte 0 is zero bnone a8, a5, .Leq // if byte 1 is zero bnone a8, a6, .Leq // if byte 2 is zero bany a8, a7, .Lnextword2 // if byte 3 is zero #endif /* !XCHAL_HAVE_LOOPS */ /* Words are equal; some byte is zero. */ .Leq: movi a2, 0 // return equal leaf_return .Lwne2: /* Words are not equal. On big-endian processors, if none of the bytes are zero, the return value can be determined by a simple comparison. */ #ifdef __XTENSA_EB__ or a10, a8, a5 bnall a10, a7, .Lsomezero bgeu a8, a9, .Lposreturn movi a2, -1 leaf_return .Lposreturn: movi a2, 1 leaf_return .Lsomezero: // There is probably some zero byte. #endif /* __XTENSA_EB__ */ .Lwne: /* Words are not equal. */ xor a2, a8, a9 // get word with nonzero in byte that differs bany a2, a4, .Ldiff0 // if byte 0 differs movi a5, MASK1 // mask for byte 1 bnone a8, a4, .Leq // if byte 0 is zero bany a2, a5, .Ldiff1 // if byte 1 differs movi a6, MASK2 // mask for byte 2 bnone a8, a5, .Leq // if byte 1 is zero bany a2, a6, .Ldiff2 // if byte 2 differs bnone a8, a6, .Leq // if byte 2 is zero #ifdef __XTENSA_EB__ .Ldiff3: .Ldiff2: .Ldiff1: /* Byte 0 is equal (at least) and there is a difference before a zero byte. Just subtract words to get the return value. The high order equal bytes cancel, leaving room for the sign. */ sub a2, a8, a9 leaf_return .Ldiff0: /* Need to make room for the sign, so can't subtract whole words. */ extui a10, a8, 24, 8 extui a11, a9, 24, 8 sub a2, a10, a11 leaf_return #else /* !__XTENSA_EB__ */ /* Little-endian is a little more difficult because can't subtract whole words. */ .Ldiff3: /* Bytes 0-2 are equal; byte 3 is different. For little-endian need to have a sign bit for the difference. */ extui a10, a8, 24, 8 extui a11, a9, 24, 8 sub a2, a10, a11 leaf_return .Ldiff0: /* Byte 0 is different. */ extui a10, a8, 0, 8 extui a11, a9, 0, 8 sub a2, a10, a11 leaf_return .Ldiff1: /* Byte 0 is equal; byte 1 is different. */ extui a10, a8, 8, 8 extui a11, a9, 8, 8 sub a2, a10, a11 leaf_return .Ldiff2: /* Bytes 0-1 are equal; byte 2 is different. */ extui a10, a8, 16, 8 extui a11, a9, 16, 8 sub a2, a10, a11 leaf_return #endif /* !__XTENSA_EB */ #endif /* FLIX3*/ #endif /* FLIX3*/ .size strcmp, . - strcmp picolibc-1.7.4/newlib/libc/machine/xtensa/strcpy.S000066400000000000000000000136371414576234500221030ustar00rootroot00000000000000/* ANSI C standard library function strcpy. Copyright (c) 2001-2008 Tensilica Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "xtensa-asm.h" .text .begin schedule .align 4 .literal_position .global strcpy .type strcpy, @function strcpy: leaf_entry sp, 16 /* a2 = dst, a3 = src */ mov a10, a2 // leave dst in return value register movi a4, MASK0 movi a5, MASK1 movi a6, MASK2 movi a7, MASK3 bbsi.l a3, 0, .Lsrc1mod2 bbsi.l a3, 1, .Lsrc2mod4 .Lsrcaligned: /* Check if the destination is aligned. */ movi a8, 3 bnone a10, a8, .Laligned j .Ldstunaligned .Lsrc1mod2: // src address is odd l8ui a8, a3, 0 // get byte 0 addi a3, a3, 1 // advance src pointer s8i a8, a10, 0 // store byte 0 beqz a8, 1f // if byte 0 is zero addi a10, a10, 1 // advance dst pointer bbci.l a3, 1, .Lsrcaligned // if src is now word-aligned .Lsrc2mod4: // src address is 2 mod 4 l8ui a8, a3, 0 // get byte 0 /* 1-cycle interlock */ s8i a8, a10, 0 // store byte 0 beqz a8, 1f // if byte 0 is zero l8ui a8, a3, 1 // get byte 0 addi a3, a3, 2 // advance src pointer s8i a8, a10, 1 // store byte 0 addi a10, a10, 2 // advance dst pointer bnez a8, .Lsrcaligned 1: leaf_return /* dst is word-aligned; src is word-aligned. */ .align 4 #if XCHAL_HAVE_LOOPS #if XCHAL_HAVE_DENSITY /* (2 mod 4) alignment for loop instruction */ #else /* (1 mod 4) alignment for loop instruction */ .byte 0 .byte 0 #endif .Laligned: #if XCHAL_HAVE_DENSITY _movi.n a8, 0 // set up for the maximum loop count #else _movi a8, 0 // set up for the maximum loop count #endif loop a8, .Lz3 // loop forever (almost anyway) l32i a8, a3, 0 // get word from src addi a3, a3, 4 // advance src pointer bnone a8, a4, .Lz0 // if byte 0 is zero bnone a8, a5, .Lz1 // if byte 1 is zero bnone a8, a6, .Lz2 // if byte 2 is zero s32i a8, a10, 0 // store word to dst bnone a8, a7, .Lz3 // if byte 3 is zero addi a10, a10, 4 // advance dst pointer #else /* !XCHAL_HAVE_LOOPS */ 1: addi a10, a10, 4 // advance dst pointer .Laligned: l32i a8, a3, 0 // get word from src addi a3, a3, 4 // advance src pointer bnone a8, a4, .Lz0 // if byte 0 is zero bnone a8, a5, .Lz1 // if byte 1 is zero bnone a8, a6, .Lz2 // if byte 2 is zero s32i a8, a10, 0 // store word to dst bany a8, a7, 1b // if byte 3 is zero #endif /* !XCHAL_HAVE_LOOPS */ .Lz3: /* Byte 3 is zero. */ leaf_return .Lz0: /* Byte 0 is zero. */ #ifdef __XTENSA_EB__ movi a8, 0 #endif s8i a8, a10, 0 leaf_return .Lz1: /* Byte 1 is zero. */ #ifdef __XTENSA_EB__ extui a8, a8, 16, 16 #endif s16i a8, a10, 0 leaf_return .Lz2: /* Byte 2 is zero. */ #ifdef __XTENSA_EB__ extui a8, a8, 16, 16 #endif s16i a8, a10, 0 movi a8, 0 s8i a8, a10, 2 leaf_return #if 1 /* For now just use byte copy loop for the unaligned destination case. */ .align 4 #if XCHAL_HAVE_LOOPS #if XCHAL_HAVE_DENSITY /* (2 mod 4) alignment for loop instruction */ #else /* (1 mod 4) alignment for loop instruction */ .byte 0 .byte 0 #endif #endif .Ldstunaligned: #if XCHAL_HAVE_LOOPS #if XCHAL_HAVE_DENSITY _movi.n a8, 0 // set up for the maximum loop count #else _movi a8, 0 // set up for the maximum loop count #endif loop a8, 2f // loop forever (almost anyway) #endif 1: l8ui a8, a3, 0 addi a3, a3, 1 s8i a8, a10, 0 addi a10, a10, 1 #if XCHAL_HAVE_LOOPS beqz a8, 2f #else bnez a8, 1b #endif 2: leaf_return #else /* 0 */ /* This code is not functional yet. */ .Ldstunaligned: l32i a9, a2, 0 // load word from dst #ifdef __XTENSA_EB__ ssa8b a9 // rotate by dst alignment so that src a9, a9, a9 // shift in loop will put back in place ssa8l a9 // shift left by byte*8 #else ssa8l a9 // rotate by dst alignment so that src a9, a9, a9 // shift in loop will put back in place ssa8b a9 // shift left by 32-byte*8 #endif /* dst is word-aligned; src is unaligned. */ .Ldstunalignedloop: l32i a8, a3, 0 // get word from src /* 1-cycle interlock */ bnone a8, a4, .Lu0 // if byte 0 is zero bnone a8, a5, .Lu1 // if byte 1 is zero bnone a8, a6, .Lu2 // if byte 2 is zero src a9, a8, a9 // combine last word and this word s32i a9, a10, 0 // store word to dst bnone a8, a7, .Lu3 // if byte 3 is nonzero, iterate l32i a9, a3, 4 // get word from src addi a3, a3, 8 // advance src pointer bnone a9, a4, .Lu4 // if byte 0 is zero bnone a9, a5, .Lu5 // if byte 1 is zero bnone a9, a6, .Lu6 // if byte 2 is zero src a8, a9, a8 // combine last word and this word s32i a8, a10, 4 // store word to dst addi a10, a10, 8 // advance dst pointer bany a8, a7, .Ldstunalignedloop // if byte 3 is nonzero, iterate /* Byte 7 is zero. */ .Lu7: leaf_return .Lu0: /* Byte 0 is zero. */ #ifdef __XTENSA_EB__ movi a8, 0 #endif s8i a8, a10, 0 leaf_return .Lu1: /* Byte 1 is zero. */ #ifdef __XTENSA_EB__ extui a8, a8, 16, 16 #endif s16i a8, a10, 0 leaf_return .Lu2: /* Byte 2 is zero. */ s16i a8, a10, 0 movi a8, 0 s8i a8, a10, 2 leaf_return #endif /* 0 */ .end schedule .size strcpy, . - strcpy picolibc-1.7.4/newlib/libc/machine/xtensa/strlen.S000066400000000000000000000064231414576234500220610ustar00rootroot00000000000000/* ANSI C standard library function strlen. Copyright (c) 2001-2008 Tensilica Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "xtensa-asm.h" .text .begin schedule .align 4 .literal_position .global strlen .type strlen, @function strlen: leaf_entry sp, 16 /* a2 = s */ addi a3, a2, -4 // because we overincrement at the end movi a4, MASK0 movi a5, MASK1 movi a6, MASK2 movi a7, MASK3 bbsi.l a2, 0, .L1mod2 bbsi.l a2, 1, .L2mod4 j .Laligned .L1mod2: // address is odd l8ui a8, a3, 4 // get byte 0 addi a3, a3, 1 // advance string pointer beqz a8, .Lz3 // if byte 0 is zero bbci.l a3, 1, .Laligned // if string pointer is now word-aligned .L2mod4: // address is 2 mod 4 addi a3, a3, 2 // advance ptr for aligned access l32i a8, a3, 0 // get word with first two bytes of string bnone a8, a6, .Lz2 // if byte 2 (of word, not string) is zero bany a8, a7, .Laligned // if byte 3 (of word, not string) is nonzero /* Byte 3 is zero. */ addi a3, a3, 3 // point to zero byte sub a2, a3, a2 // subtract to get length leaf_return /* String is word-aligned. */ .align 4 #if XCHAL_HAVE_LOOPS #if XCHAL_HAVE_DENSITY /* (2 mod 4) alignment for loop instruction */ #else /* (1 mod 4) alignment for loop instruction */ .byte 0 .byte 0 #endif #endif .Laligned: #if XCHAL_HAVE_LOOPS #if XCHAL_HAVE_DENSITY _movi.n a8, 0 // set up for the maximum loop count #else _movi a8, 0 // set up for the maximum loop count #endif loop a8, .Lz3 // loop forever (almost anyway) #endif 1: l32i a8, a3, 4 // get next word of string addi a3, a3, 4 // advance string pointer bnone a8, a4, .Lz0 // if byte 0 is zero bnone a8, a5, .Lz1 // if byte 1 is zero bnone a8, a6, .Lz2 // if byte 2 is zero #if XCHAL_HAVE_LOOPS bnone a8, a7, .Lz3 // if byte 3 is zero #else bany a8, a7, 1b // repeat if byte 3 is non-zero #endif .Lz3: /* Byte 3 is zero. */ addi a3, a3, 3 // point to zero byte /* Fall through.... */ .Lz0: /* Byte 0 is zero. */ sub a2, a3, a2 // subtract to get length leaf_return .Lz1: /* Byte 1 is zero. */ addi a3, a3, 1 // point to zero byte sub a2, a3, a2 // subtract to get length leaf_return .Lz2: /* Byte 2 is zero. */ addi a3, a3, 2 // point to zero byte sub a2, a3, a2 // subtract to get length leaf_return .end schedule .size strlen, . - strlen picolibc-1.7.4/newlib/libc/machine/xtensa/strncpy.S000066400000000000000000000143531414576234500222550ustar00rootroot00000000000000/* ANSI C standard library function strncpy. Copyright (c) 2001-2008 Tensilica Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "xtensa-asm.h" .text .begin schedule .align 4 .literal_position __strncpy_aux: .Lsrc1mod2: // src address is odd l8ui a8, a3, 0 // get byte 0 addi a3, a3, 1 // advance src pointer s8i a8, a10, 0 // store byte 0 addi a4, a4, -1 // decrement n beqz a4, .Lret // if n is zero addi a10, a10, 1 // advance dst pointer beqz a8, .Lfill // if byte 0 is zero bbci.l a3, 1, .Lsrcaligned // if src is now word-aligned .Lsrc2mod4: // src address is 2 mod 4 l8ui a8, a3, 0 // get byte 0 addi a4, a4, -1 // decrement n s8i a8, a10, 0 // store byte 0 beqz a4, .Lret // if n is zero addi a10, a10, 1 // advance dst pointer beqz a8, .Lfill // if byte 0 is zero l8ui a8, a3, 1 // get byte 0 addi a3, a3, 2 // advance src pointer s8i a8, a10, 0 // store byte 0 addi a4, a4, -1 // decrement n beqz a4, .Lret // if n is zero addi a10, a10, 1 // advance dst pointer bnez a8, .Lsrcaligned j .Lfill .Lret: leaf_return .align 4 .global strncpy .type strncpy, @function strncpy: leaf_entry sp, 16 /* a2 = dst, a3 = src */ mov a10, a2 // leave dst in return value register beqz a4, .Lret // if n is zero movi a11, MASK0 movi a5, MASK1 movi a6, MASK2 movi a7, MASK3 bbsi.l a3, 0, .Lsrc1mod2 bbsi.l a3, 1, .Lsrc2mod4 .Lsrcaligned: /* Check if the destination is aligned. */ movi a8, 3 bnone a10, a8, .Laligned j .Ldstunaligned /* Fill the dst with zeros -- n is at least 1. */ .Lfill: movi a9, 0 bbsi.l a10, 0, .Lfill1mod2 bbsi.l a10, 1, .Lfill2mod4 .Lfillaligned: blti a4, 4, .Lfillcleanup /* Loop filling complete words with zero. */ #if XCHAL_HAVE_LOOPS srai a8, a4, 2 loop a8, 1f s32i a9, a10, 0 addi a10, a10, 4 1: slli a8, a8, 2 sub a4, a4, a8 #else /* !XCHAL_HAVE_LOOPS */ 1: s32i a9, a10, 0 addi a10, a10, 4 addi a4, a4, -4 bgei a4, 4, 1b #endif /* !XCHAL_HAVE_LOOPS */ beqz a4, 2f .Lfillcleanup: /* Fill leftover (1 to 3) bytes with zero. */ s8i a9, a10, 0 // store byte 0 addi a4, a4, -1 // decrement n addi a10, a10, 1 bnez a4, .Lfillcleanup 2: leaf_return .Lfill1mod2: // dst address is odd s8i a9, a10, 0 // store byte 0 addi a4, a4, -1 // decrement n beqz a4, 2b // if n is zero addi a10, a10, 1 // advance dst pointer bbci.l a10, 1, .Lfillaligned // if dst is now word-aligned .Lfill2mod4: // dst address is 2 mod 4 s8i a9, a10, 0 // store byte 0 addi a4, a4, -1 // decrement n beqz a4, 2b // if n is zero s8i a9, a10, 1 // store byte 1 addi a4, a4, -1 // decrement n beqz a4, 2b // if n is zero addi a10, a10, 2 // advance dst pointer j .Lfillaligned /* dst is word-aligned; src is word-aligned; n is at least 1. */ .align 4 #if XCHAL_HAVE_LOOPS #if XCHAL_HAVE_DENSITY /* (2 mod 4) alignment for loop instruction */ #else /* (1 mod 4) alignment for loop instruction */ .byte 0 .byte 0 #endif #endif .Laligned: #if XCHAL_HAVE_LOOPS #if XCHAL_HAVE_DENSITY _movi.n a8, 0 // set up for the maximum loop count #else _movi a8, 0 // set up for the maximum loop count #endif loop a8, 1f // loop forever (almost anyway) blti a4, 5, .Ldstunaligned // n is near limit; do one at a time l32i a8, a3, 0 // get word from src addi a3, a3, 4 // advance src pointer bnone a8, a11, .Lz0 // if byte 0 is zero bnone a8, a5, .Lz1 // if byte 1 is zero bnone a8, a6, .Lz2 // if byte 2 is zero s32i a8, a10, 0 // store word to dst addi a4, a4, -4 // decrement n addi a10, a10, 4 // advance dst pointer bnone a8, a7, .Lfill // if byte 3 is zero 1: #else /* !XCHAL_HAVE_LOOPS */ 1: blti a4, 5, .Ldstunaligned // n is near limit; do one at a time l32i a8, a3, 0 // get word from src addi a3, a3, 4 // advance src pointer bnone a8, a11, .Lz0 // if byte 0 is zero bnone a8, a5, .Lz1 // if byte 1 is zero bnone a8, a6, .Lz2 // if byte 2 is zero s32i a8, a10, 0 // store word to dst addi a4, a4, -4 // decrement n addi a10, a10, 4 // advance dst pointer bany a8, a7, 1b // no zeroes #endif /* !XCHAL_HAVE_LOOPS */ j .Lfill .Lz0: /* Byte 0 is zero. */ #ifdef __XTENSA_EB__ movi a8, 0 #endif s8i a8, a10, 0 addi a4, a4, -1 // decrement n addi a10, a10, 1 // advance dst pointer j .Lfill .Lz1: /* Byte 1 is zero. */ #ifdef __XTENSA_EB__ extui a8, a8, 16, 16 #endif s16i a8, a10, 0 addi a4, a4, -2 // decrement n addi a10, a10, 2 // advance dst pointer j .Lfill .Lz2: /* Byte 2 is zero. */ #ifdef __XTENSA_EB__ extui a8, a8, 16, 16 #endif s16i a8, a10, 0 movi a8, 0 s8i a8, a10, 2 addi a4, a4, -3 // decrement n addi a10, a10, 3 // advance dst pointer j .Lfill .align 4 #if XCHAL_HAVE_LOOPS #if XCHAL_HAVE_DENSITY /* (2 mod 4) alignment for loop instruction */ #else /* (1 mod 4) alignment for loop instruction */ .byte 0 .byte 0 #endif #endif .Ldstunaligned: #if XCHAL_HAVE_LOOPS #if XCHAL_HAVE_DENSITY _movi.n a8, 0 // set up for the maximum loop count #else _movi a8, 0 // set up for the maximum loop count #endif loop a8, 2f // loop forever (almost anyway) #endif 1: l8ui a8, a3, 0 addi a3, a3, 1 s8i a8, a10, 0 addi a4, a4, -1 beqz a4, 3f addi a10, a10, 1 #if XCHAL_HAVE_LOOPS beqz a8, 2f #else bnez a8, 1b #endif 2: j .Lfill 3: leaf_return .end schedule .size strncpy, . - strncpy picolibc-1.7.4/newlib/libc/machine/xtensa/sys/000077500000000000000000000000001414576234500212375ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/xtensa/sys/fenv.h000066400000000000000000000046251414576234500223550ustar00rootroot00000000000000/* Copyright (c) 2011 Tensilica Inc. ALL RIGHTS RESERVED. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL TENSILICA INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _SYS_FENV_H #define _SYS_FENV_H #ifdef __cplusplus extern "C" { #endif typedef unsigned long fenv_t; typedef unsigned long fexcept_t; #include #if XCHAL_HAVE_FP || XCHAL_HAVE_DFP #define FE_DIVBYZERO 0x08 #define FE_INEXACT 0x01 #define FE_INVALID 0x10 #define FE_OVERFLOW 0x04 #define FE_UNDERFLOW 0x02 #define FE_ALL_EXCEPT \ (FE_DIVBYZERO | \ FE_INEXACT | \ FE_INVALID | \ FE_OVERFLOW | \ FE_UNDERFLOW) #define FE_DOWNWARD 0x3 #define FE_TONEAREST 0x0 #define FE_TOWARDZERO 0x1 #define FE_UPWARD 0x2 #define _FE_EXCEPTION_FLAGS_OFFSET 7 #define _FE_EXCEPTION_FLAG_MASK (FE_ALL_EXCEPT << _FE_EXCEPTION_FLAGS_OFFSET) #define _FE_EXCEPTION_ENABLE_OFFSET 2 #define _FE_EXCEPTION_ENABLE_MASK (FE_ALL_EXCEPT << _FE_EXCEPTION_ENABLE_OFFSET) #define _FE_ROUND_MODE_OFFSET 0 #define _FE_ROUND_MODE_MASK (0x3 << _FE_ROUND_MODE_OFFSET) #define _FE_FLOATING_ENV_MASK (_FE_EXCEPTION_FLAG_MASK | _FE_EXCEPTION_ENABLE_MASK | _FE_ROUND_MODE_MASK) #endif #ifdef __cplusplus } #endif #endif picolibc-1.7.4/newlib/libc/machine/xtensa/sys/meson.build000066400000000000000000000032321414576234500234010ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2020 Keith Packard, # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # inc_sys_headers_machine = [ 'fenv.h' ] install_headers(inc_sys_headers_machine, subdir:'sys' ) picolibc-1.7.4/newlib/libc/machine/xtensa/xtensa-asm.h000066400000000000000000000040331414576234500226520ustar00rootroot00000000000000/* Copyright (c) 2006 Tensilica Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include # Define macros for leaf function entry and return, supporting either the # standard register windowed ABI or the non-windowed call0 ABI. These # macros do not allocate any extra stack space, so they only work for # leaf functions that do not need to spill anything to the stack. .macro leaf_entry reg, size #if XCHAL_HAVE_WINDOWED && !__XTENSA_CALL0_ABI__ entry \reg, \size #else /* do nothing */ #endif .endm .macro leaf_return #if XCHAL_HAVE_WINDOWED && !__XTENSA_CALL0_ABI__ retw #else ret #endif .endm .macro src_b r, w0, w1 #ifdef __XTENSA_EB__ src \r, \w0, \w1 #else src \r, \w1, \w0 #endif .endm .macro ssa8 r #ifdef __XTENSA_EB__ ssa8b \r #else ssa8l \r #endif .endm #if XCHAL_HAVE_BE #define MASK0 0xff000000 #define MASK1 0x00ff0000 #define MASK2 0x0000ff00 #define MASK3 0x000000ff #else #define MASK0 0x000000ff #define MASK1 0x0000ff00 #define MASK2 0x00ff0000 #define MASK3 0xff000000 #endif picolibc-1.7.4/newlib/libc/machine/z8k/000077500000000000000000000000001414576234500176335ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/machine/z8k/args.h000066400000000000000000000016051414576234500207420ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #ifdef __Z8001__ segm #define PARG_0 rr6 #else unsegm #define PARG_0 r7 #endif #define LARG_0 rr6 #define ARG_0 r7 #define LARG_1 rr4 picolibc-1.7.4/newlib/libc/machine/z8k/memcmp.S000066400000000000000000000055371414576234500212470ustar00rootroot00000000000000/* * memcmp routine for Z8000 * Copyright (C) 2004 Christian Groessler * * Permission to use, copy, modify, and distribute this file * for any purpose is hereby granted without fee, provided that * the above copyright notice and this notice appears in all * copies. * * This file is distributed WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ /* int memcmp(const void *b1, const void *b2, size_t length); */ name "memcmp.S" .text even global _memcmp _memcmp: #ifdef __Z8001__ segm #ifdef __STD_CALL__ ldl rr6,rr14(#4) ldl rr4,rr14(#8) ldl rr2,rr14(#12) #endif /* rr2 - length (high word ignored) * rr4 - b2 * rr6 - b1 */ clr r1 /* initialize return value */ testl rr2 jr z,finish bitb rl7,#0 /* odd b1? */ jr nz,testb2 bitb rl5,#0 /* odd b2? */ jr nz,odd_cmp /* b1 even, b2 odd */ jr t,even_cmp testb2: bitb rl5,#0 jr z,odd_cmp /* b2 even, b1 odd */ cpsib @rr6,@rr4,r3,eq jr z,beq /* bytes are the same */ jr t,byte_diff beq: jr ov,finish /* jump if r3 is zero now */ /* compare words */ even_cmp: ld r2,r3 /* remember length */ srl r3,#1 jr z,no_words cpsir @rr6,@rr4,r3,ne jr nz,no_words dec r7,#2 dec r5,#2 /* point to different bytes */ ldk r3,#2 jr t,odd_cmp no_words: bitb rl2,#0 /* odd length? */ jr z,finish cpsib @rr6,@rr4,r3,eq jr z,finish /* last bytes are the same */ jr t,byte_diff /* compare bytes */ odd_cmp: cpsirb @rr6,@rr4,r3,ne jr nz,finish byte_diff: dec r7,#1 dec r5,#1 /* point to different bytes */ ldb rl1,@rr6 clr r0 ldb rl0,@rr4 sub r1,r0 finish: /* set return value */ #ifdef __STD_CALL__ ld r7,r1 #else ld r2,r1 #endif #else /* above Z8001, below Z8002 */ unsegm #ifdef __STD_CALL__ ld r7,r15(#2) ld r6,r15(#4) ld r5,r15(#6) #endif /* r5 - length * r6 - b2 * r7 - b1 */ clr r1 /* initialize return value */ test r5 jr z,finish bitb rl7,#0 /* odd destination address? */ jr nz,testb2 bitb rl6,#0 /* odd source address? */ jr nz,odd_cmp /* b1 even, b2 odd */ jr t,even_cmp testb2: bitb rl6,#0 jr z,odd_cmp /* b2 even, b1 odd */ cpsib @r7,@r6,r5,eq jr z,beq /* bytes are the same */ jr t,byte_diff beq: jr ov,finish /* jump if r3 is zero now */ /* compare words */ even_cmp: ld r4,r5 /* remember length */ srl r5,#1 jr z,no_words cpsir @r7,@r6,r5,ne jr nz,no_words dec r7,#2 dec r6,#2 /* point to different bytes */ ldk r5,#2 jr t,odd_cmp no_words: bitb rl4,#0 /* odd length? */ jr z,finish cpsib @r7,@r6,r4,eq jr z,finish /* last bytes are the same */ jr t,byte_diff /* compare bytes */ odd_cmp: cpsirb @r7,@r6,r5,ne jr nz,finish byte_diff: dec r7,#1 dec r6,#1 /* point to different bytes */ ldb rl1,@r7 clr r0 ldb rl0,@r6 sub r1,r0 finish: #ifdef __STD_CALL__ ld r7,r1 #else ld r2,r1 #endif #endif /* Z8002 */ ret .end picolibc-1.7.4/newlib/libc/machine/z8k/memcpy.S000066400000000000000000000045721414576234500212610ustar00rootroot00000000000000/* * memcpy routine for Z8000 * Copyright (C) 2004 Christian Groessler * * Permission to use, copy, modify, and distribute this file * for any purpose is hereby granted without fee, provided that * the above copyright notice and this notice appears in all * copies. * * This file is distributed WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ /* void *memcpy(void *dest, const void *src, size_t length); */ name "memcpy.S" .text even global _memcpy global memmove_entry _memcpy: #ifdef __Z8001__ segm #ifdef __STD_CALL__ ldl rr6,rr14(#4) ldl rr4,rr14(#8) ldl rr2,rr14(#12) #else pushl @rr14,rr6 #endif /* rr2 - length (high word ignored) * rr4 - src * rr6 - dest */ testl rr2 jr z,finish memmove_entry: /* external entry point from memmove */ bitb rl7,#0 /* odd destination address? */ jr nz,testsrc bitb rl5,#0 /* odd source address? */ jr nz,odd_copy jr t,even_copy /* dest even, src odd */ testsrc: bitb rl5,#0 jr z,odd_copy /* src even, dest odd */ ldib @rr6,@rr4,r3 jr ov,finish /* jump if r3 is zero now */ /* copy words */ even_copy: ld r2,r3 /* remember length */ srl r3,#1 jr z,no_words ldir @rr6,@rr4,r3 no_words: bitb rl2,#0 /* odd length? */ jr z,finish ldib @rr6,@rr4,r2 /* yes, copy last byte */ jr finish /* copy bytes */ odd_copy: ldirb @rr6,@rr4,r3 finish: #ifdef __STD_CALL__ ldl rr6,rr14(#4) #else popl rr2,@rr14 #endif #else /* above Z8001, below Z8002 */ unsegm #ifdef __STD_CALL__ ld r7,r15(#2) ld r6,r15(#4) ld r5,r15(#6) #else ld r2,r7 /* buffer pointer return value */ #endif /* r5 - length * r6 - src * r7 - dest */ test r5 jr z,finish memmove_entry: /* external entry point from memmove */ bitb rl7,#0 /* odd destination address? */ jr nz,testsrc bitb rl6,#0 /* odd source address? */ jr nz,odd_copy jr t,even_copy /* dest even, src odd */ testsrc: bitb rl6,#0 jr z,odd_copy /* src even, dest odd */ ldib @r7,@r6,r5 jr ov,finish /* jump if r5 is zero now */ /* copy words */ even_copy: ld r4,r5 /* remember length */ srl r5,#1 jr z,no_words ldir @r7,@r6,r5 no_words: bitb rl4,#0 /* odd length? */ jr z,finish ldib @r7,@r6,r4 /* yes, copy last byte */ jr finish /* copy bytes */ odd_copy: ldirb @r7,@r6,r5 finish: #ifdef __STD_CALL__ ld r7,r15(#2) #endif #endif /* Z8002 */ ret .end picolibc-1.7.4/newlib/libc/machine/z8k/memmove.S000066400000000000000000000063521414576234500214320ustar00rootroot00000000000000/* * memmove routine for Z8000 * Copyright (C) 2004 Christian Groessler * * Permission to use, copy, modify, and distribute this file * for any purpose is hereby granted without fee, provided that * the above copyright notice and this notice appears in all * copies. * * This file is distributed WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ /* void *memmove(void *dest, const void *src, size_t length); */ name "memmove.S" .text even global _memmove _memmove: #ifdef __Z8001__ segm #ifdef __STD_CALL__ ldl rr6,rr14(#4) ldl rr4,rr14(#8) ldl rr2,rr14(#12) #else pushl @rr14,rr6 #endif /* rr2 - length (high word ignored) * rr4 - src * rr6 - dest */ testl rr2 jr z,finish /* check for destructive overlap (src < dest && dest < src + length) */ cpl rr6,rr4 jp ule,memmove_entry /* non-destructive, let memcpy do the work */ ldl rr0,rr2 addl rr0,rr4 /* rr0 = src + length */ cpl rr0,rr6 jp ult,memmove_entry /* non-destructive, let memcpy do the work */ /* set-up pointers to copy backwards, add (length - 1) */ addl rr4,rr2 /* src + length */ addl rr6,rr2 /* dest + length */ subl rr4,#1 subl rr6,#1 /* check alignment */ bitb rl7,#0 /* odd destination address? */ jr z,testsrc bitb rl5,#0 /* odd source address? */ jr z,odd_copy jr even_copy testsrc: bitb rl5,#0 jr nz,odd_copy /* src even, dest odd */ lddb @rr6,@rr4,r3 jr ov,finish /* jump if r5 is zero now */ /* copy words */ even_copy: ld r2,r3 /* remember length */ srl r3,#1 /* jr z,no_words it cannot be zero here */ dec r5,#1 dec r7,#1 lddr @rr6,@rr4,r3 no_words: bitb rl2,#0 /* odd length? */ jr z,finish inc r5,#1 inc r7,#1 lddb @rr6,@rr4,r2 /* yes, copy last byte */ jr finish /* copy bytes */ odd_copy: lddrb @rr6,@rr4,r3 finish: #ifdef __STD_CALL__ ldl rr6,rr14(#4) #else popl rr2,@rr14 #endif #else /* above Z8001, below Z8002 */ unsegm #ifdef __STD_CALL__ ld r7,r15(#2) ld r6,r15(#4) ld r5,r15(#6) #else ld r2,r7 /* buffer pointer return value */ #endif /* r5 - length * r6 - src * r7 - dest */ test r5 jr z,finish /* check for destructive overlap (src < dest && dest < src + length) */ cp r7,r6 jp ule,memmove_entry /* non-destructive, let memcpy do the work */ ld r0,r5 add r0,r6 /* r0 = src + length */ cp r0,r7 jp ult,memmove_entry /* non-destructive, let memcpy do the work */ /* set-up pointers to copy backwards, add (length - 1) */ add r6,r5 /* src + length */ add r7,r5 /* dest + length */ dec r6,#1 dec r7,#1 /* check alignment */ bitb rl7,#0 /* odd destination address? */ jr z,testsrc bitb rl6,#0 /* odd source address? */ jr z,odd_copy jr even_copy testsrc: bitb rl6,#0 jr nz,odd_copy /* src even, dest odd */ lddb @r7,@r6,r5 jr ov,finish /* jump if r5 is zero now */ /* copy words */ even_copy: ld r4,r5 /* remember length */ srl r5,#1 /* jr z,no_words it cannot be zero here */ dec r6,#1 dec r7,#1 lddr @r7,@r6,r5 no_words: bitb rl4,#0 /* odd length? */ jr z,finish inc r6,#1 inc r7,#1 lddb @r7,@r6,r4 /* yes, copy last byte */ jr finish /* copy bytes */ odd_copy: lddrb @r7,@r6,r5 finish: #ifdef __STD_CALL__ ld r7,r15(#2) #endif #endif /* Z8002 */ ret .end picolibc-1.7.4/newlib/libc/machine/z8k/memset.S000066400000000000000000000035641414576234500212610ustar00rootroot00000000000000/* * memset routine for Z8000 * Copyright (C) 2004 Christian Groessler * * Permission to use, copy, modify, and distribute this file * for any purpose is hereby granted without fee, provided that * the above copyright notice and this notice appears in all * copies. * * This file is distributed WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ /* void *memset(void *buffer, int value, size_t length); */ name "memset.S" .text even global _memset _memset: #ifdef __Z8001__ segm #ifdef __STD_CALL__ ldl rr6,rr14(#4) ld r5,rr14(#8) ldl rr2,rr14(#10) #else pushl @rr14,rr6 #endif /* rr2 - length * rl5 - value * rr6 - buffer */ testl rr2 jr z,finish ldb rh5,rl5 ld r1,r5 /* r1 contains value */ bit r7,#0 jr z,not_odd ldb @rr6,rl1 inc r7,#1 subl rr2,#1 jr z,finish not_odd:ld r0,r3 /* remember length */ srl r3,#1 jr z,no_words ldl rr4,rr6 ld @rr6,r1 inc r7,#2 dec r3,#1 jr z,no_words ldir @rr6,@rr4,r3 /* fill words */ no_words: bit r0,#0 /* one byte remaining? */ jr z,finish ldb @rr6,rl1 finish: #ifdef __STD_CALL__ ldl rr6,rr14(#4) #else popl rr2,@rr14 #endif #else /* above Z8001, below Z8002 */ unsegm #ifdef __STD_CALL__ ld r7,r15(#2) ld r6,r15(#4) ld r5,r15(#6) #else ld r2,r7 /* buffer pointer return value */ #endif /* r5 - length * r6 - value * r7 - buffer */ test r5 jr z,finish ldb rh6,rl6 ld r1,r6 /* r1 contains value */ bit r7,#0 jr z,not_odd ldb @r7,rl1 inc r7,#1 dec r5,#1 jr z,finish not_odd:ld r0,r5 /* remember length */ srl r5,#1 jr z,no_words ld r4,r7 ld @r7,r1 inc r7,#2 dec r5,#1 jr z,no_words ldir @r7,@r4,r5 /* fill words */ no_words: bit r0,#0 /* one byte remaining? */ jr z,finish ldb @r7,rl1 finish: #ifdef __STD_CALL__ ld r7,r15(#2) #endif #endif /* Z8002 */ ret .end picolibc-1.7.4/newlib/libc/machine/z8k/setjmp.S000066400000000000000000000051551414576234500212670ustar00rootroot00000000000000/* Copyright (c) 1990 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ .global _setjmp .global _longjmp #ifdef __Z8001__ segm #ifdef __STD_CALL__ _setjmp: ldl rr6,rr14(#4) ! get argument ldl rr2,@rr14 ! fetch pc ldl @rr6,rr2 ! save it ldl rr6(#16),rr8 ldl rr6(#4),rr10 ldl rr6(#8),rr12 ! remember frame pointer ldl rr6(#12),rr14 ! remember stack pointer ldk r7,#0 ret t _longjmp: ldl rr4,rr14(#4) ! get first argument ld r7,rr14(#8) ! get return value ldl rr8,rr4(#16) ldl rr10,rr4(#4) ldl rr12,rr4(#8) ! restore old frame pointer ldl rr14,rr4(#12) ! restore old stack pointer ldl rr4,@rr4 ! return address inc r15,#4 jp @rr4 #else /* above __STD_CALL_, below not */ _setjmp: ldl rr2,@rr14 ! fetch pc ldl @rr6,rr2 ! save it ldl rr6(16),rr8 ldl rr6(4),rr10 ldl rr6(8),rr12 ! and the other special regs ldl rr6(12),rr14 ldk r2,#0 ret t _longjmp: ld r2,r5 ! get return value ldl rr4,rr6(0) ldl rr8,rr6(16) ldl rr10,rr6(4) ldl rr12,rr6(8) ldl rr14,rr6(12) inc r15,#4 jp @rr4 #endif /* not __STD_CALL__ */ #else /* above Z8001, below Z8002 */ unseg #ifdef __STD_CALL__ _setjmp: ld r7,r15(#2) ! get argument ld r2,@r15 ! fetch pc ld @r7,r2 ! save it ldl r7(#14),rr8 ldl r7(#2),rr10 ldl r7(#6),rr12 ! remember frame pointer ldl r7(#10),rr14 ! remember stack pointer ldk r7,#0 ret t _longjmp: ld r4,r15(#2) ! get first argument (jmp_buf) ld r7,r15(#4) ! get return value ldl rr8,r4(#14) ldl rr10,r4(#2) ldl rr12,r4(#6) ! restore old frame pointer ldl rr14,r4(#10) ! restore old stack pointer ld r4,@r4 ! return address inc r15,#2 jp @r4 #else /* above __STD_CALL_, below not */ _setjmp: ld r2,@r15 ! fetch pc ld @r7,r2 ! save it ldl r7(4),rr10 ldl r7(8),rr12 ! and the other special regs ldl r7(12),rr14 ldk r2,#0 ret t _longjmp: ld r2,r6 ! get return value ld r4,@r7 ldl rr10,r7(4) ldl rr12,r7(8) ldl rr14,r7(12) inc r15,#2 jp @r4 #endif /* not __STD_CALL__ */ #endif /* Z8002 version */ picolibc-1.7.4/newlib/libc/meson.build000066400000000000000000000072271414576234500176650ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # shared_dirs = { 'i386': 'shared_x86', 'x86_64': 'shared_x86' } libdirs = ['argz', 'ctype', 'errno', 'iconv', 'misc', 'posix', 'search', 'signal', 'ssp', 'stdlib', 'string', 'time', 'xdr', 'locale'] if enable_picolib libdirs += 'picolib' endif if tinystdio libdirs += 'tinystdio' else libdirs += ['stdio', 'reent'] if newlib_stdio64 libdirs += 'stdio64' endif endif libnames = libdirs inc_sys_headers_machine = [] inc_machine_headers_machine = [] srcs_machine = [] machine_dir = 'machine' / host_cpu_family if fs.is_dir(machine_dir) if shared_dirs.has_key(host_cpu_family) shared_dir = 'machine' / shared_dirs[host_cpu_family] shared_inc_dir = shared_dir / 'include' if fs.is_dir(shared_inc_dir) inc = [include_directories(shared_inc_dir), inc] endif inc = [include_directories(shared_dir), inc] libdirs = [shared_dir] + libdirs endif machine_inc_dir = machine_dir / 'include' if fs.is_dir(machine_inc_dir) inc = [include_directories(machine_inc_dir), inc] endif inc = [include_directories(machine_dir), inc] libdirs = [machine_dir] + libdirs libnames = ['machine'] + libnames endif foreach libdir : libdirs subdir(libdir) endforeach src_cpart = [] foreach libname : libnames src_cpart += get_variable('src_' + libname, []) endforeach subdir('include') foreach target : targets value = get_variable('target_' + target) libobjs = [] libsrcs_target = [] foreach libname : libnames if is_variable('lib_' + libname + target) libobjs += get_variable('lib_' + libname + target).extract_all_objects(recursive:true) endif libsrcs_target += get_variable('src_' + libname + target, []) endforeach set_variable('src_cpart_' + target, libsrcs_target) if target == '' libcpart_name = 'cpart' else libcpart_name = 'cpart' + '_' + target endif local_lib_cpart_target = static_library(libcpart_name, pic: false, objects : libobjs, include_directories: inc, c_args: value[1] + ['-D_COMPILING_NEWLIB']) set_variable('lib_cpart' + target, local_lib_cpart_target) endforeach picolibc-1.7.4/newlib/libc/misc/000077500000000000000000000000001414576234500164465ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/misc/__dprintf.c000066400000000000000000000151441414576234500205630ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* Debugging printf, for debugging the library itself. We don't assume stdio is working. We do assume _write_r is working. */ #include <_ansi.h> #include #include "ctype.h" #include "string.h" #include "unctrl.h" #ifdef __STDC__ #include "stdarg.h" #else #include "varargs.h" #endif #if 0 static char *parse_number (); #endif static long get_number (char *, long, int); static void print_number (int, int, long); static void write_char (char c); static void write_string (const char *s); /* Non-zero for big-endian systems. */ static int big_endian_p; /* For now hardcode 2 (stderr) as the console file descriptor. May wish to let the caller pass in a file descriptor or some such but this is only for debugging purposes anyway. */ #define CONSOLE_FD 2 /* Standalone printf routine. The format string has been enhanced so that multiple values can be dumped without having to have a %-field for each one (say if you want to dump 20 words at a certain address). A modifier of `N' says the next argument is a count, and the one after that is a pointer. Example: __dprintf ("%Nx\n", 20, p); /-* print 20 ints at `p' *-/ Supported formats are: c d u x s p. All ints are retrieved a byte at a time so alignment issues are not a problem. This routine is used in situations where the only debugging capability is console output and was written to aid debugging newlib itself. We don't use printf ourselves as we may be debugging it. We do assume _write_r is working. */ void #ifdef __STDC__ __dprintf (const char *fmt, ...) #else __dprintf (fmt, va_alist) char *fmt; va_dcl #endif { va_list args; /* Which endian are we? */ { short tmp = 1; big_endian_p = *(char *) &tmp == 0; } #ifdef __STDC__ va_start (args, fmt); #else va_start (args); #endif while (*fmt) { char c, *p; int count; long l; if (*fmt != '%' || *++fmt == '%') { write_char (*fmt++); continue; } if (*fmt == 'N') { count = va_arg (args, int); p = va_arg (args, char *); ++fmt; c = *fmt++; while (--count >= 0) { switch (c) { case 'c' : write_string (unctrl (*p++)); break; case 'p' : print_number (16, 1, get_number (p, sizeof (char *), 1)); p += sizeof (char *); break; case 'd' : case 'u' : case 'x' : print_number (c == 'x' ? 16 : 10, c != 'd', get_number (p, sizeof (int), c != 'd')); p += sizeof (int); break; case 's' : write_string (*(char **) p); p += sizeof (char *); break; } if (count > 0) write_char (' '); } } else { switch (c = *fmt++) { case 'c' : c = va_arg (args, int); write_string (unctrl (c)); break; case 'p' : l = (_POINTER_INT) va_arg (args, char *); print_number (16, 1, l); break; case 'd' : case 'u' : case 'x' : l = va_arg (args, int); print_number (c == 'x' ? 16 : 10, c != 'd', l); break; case 's' : p = va_arg (args, char *); write_string (p); break; } } } va_end (args); } #if 0 /* Parse a positive decimal integer at S. FIXME: Was used in earlier version, but not currently used. Keep for now. */ static char * parse_number (s, p) char *s; long *p; { long x = 0; while (isdigit (*s)) { x = (x * 10) + (*s - '0'); ++s; } *p = x; return s; } #endif /* Fetch the number at S of SIZE bytes. */ static long get_number (char *s, long size, int unsigned_p) { long x; unsigned char *p = (unsigned char *) s; switch (size) { case 1 : x = *p; if (!unsigned_p) x = (x ^ 0x80) - 0x80; return x; case 2 : if (big_endian_p) x = (p[0] << 8) | p[1]; else x = (p[1] << 8) | p[0]; if (!unsigned_p) x = (x ^ 0x8000) - 0x8000; return x; case 4 : if (big_endian_p) x = ((long)p[0] << 24) | ((long)p[1] << 16) | (p[2] << 8) | p[3]; else x = ((long)p[3] << 24) | ((long)p[2] << 16) | (p[1] << 8) | p[0]; if (!unsigned_p) x = (x ^ 0x80000000L) - 0x80000000L; return x; #if 0 /* FIXME: Is there a standard mechanism for knowing if long longs exist? */ case 8 : #endif default : return 0; } } /* Print X in base BASE. */ static void print_number (int base, int unsigned_p, long n) { static char chars[16] = "0123456789abcdef"; char *p, buf[32]; unsigned long x; if (!unsigned_p && n < 0) { write_char ('-'); x = -n; } else x = n; p = buf + sizeof (buf); *--p = '\0'; do { *--p = chars[x % base]; x /= base; } while (x != 0); write_string (p); } /* Write C to the console. We go through the file descriptor directly because we can't assume stdio is working. */ static void write_char (char c) { write (CONSOLE_FD, &c, 1); } /* Write S to the console. We go through the file descriptor directly because we can't assume stdio is working. */ static void write_string (const char *s) { write (CONSOLE_FD, s, strlen (s)); } picolibc-1.7.4/newlib/libc/misc/ffs.c000066400000000000000000000047451414576234500174020ustar00rootroot00000000000000/* Copyright (c) 1981, 1993 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>---find first bit set in a word INDEX ffs SYNOPSIS #include int ffs(int <[word]>); DESCRIPTION <> returns the first bit set in a word. RETURNS <> returns 0 if <[c]> is 0, 1 if <[c]> is odd, 2 if <[c]> is a multiple of 2, etc. PORTABILITY <> is not ANSI C. No supporting OS subroutines are required. */ #include /* * GCC calls "ffs" for __builtin_ffs when the target doesn't have * custom code and INT_TYPE_SIZE < BITS_PER_WORD so we can't use that * builtin to implement ffs here. Instead, fall back to the ctz code * instead. */ #if defined(HAVE_BUILTIN_FFS) && defined(__GNUC__) && __INT_WIDTH__ != __LONG_WIDTH__ #undef HAVE_BUILTIN_FFS #endif int ffs(int i) { #ifdef HAVE_BUILTIN_FFS return (__builtin_ffs(i)); #elif defined(HAVE_BUILTIN_CTZ) if (i == 0) return 0; return __builtin_ctz((unsigned int)i) + 1; #else int r; if (!i) return 0; r = 0; for (;;) { if (((1 << r++) & i) != 0) break; } return r; #endif } picolibc-1.7.4/newlib/libc/misc/fini.c000066400000000000000000000017361414576234500175460ustar00rootroot00000000000000/* * Copyright (C) 2010 CodeSourcery, Inc. * * Permission to use, copy, modify, and distribute this file * for any purpose is hereby granted without fee, provided that * the above copyright notice and this notice appears in all * copies. * * This file is distributed WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ /* Handle ELF .{pre_init,init,fini}_array sections. */ #include #ifdef HAVE_INITFINI_ARRAY extern void (*__fini_array_start []) (void) __attribute__((weak)); extern void (*__fini_array_end []) (void) __attribute__((weak)); #ifdef HAVE_INIT_FINI extern void _fini (void) __attribute__((weak)); #endif /* Run all the cleanup routines. */ void __libc_fini_array (void) { size_t count; size_t i; count = __fini_array_end - __fini_array_start; for (i = count; i > 0; i--) __fini_array_start[i-1] (); #ifdef HAVE_INIT_FINI if (_fini) _fini (); #endif } #endif picolibc-1.7.4/newlib/libc/misc/init.c000066400000000000000000000024301414576234500175540ustar00rootroot00000000000000/* * Copyright (C) 2004 CodeSourcery, LLC * * Permission to use, copy, modify, and distribute this file * for any purpose is hereby granted without fee, provided that * the above copyright notice and this notice appears in all * copies. * * This file is distributed WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ /* Handle ELF .{pre_init,init,fini}_array sections. */ #include #ifdef HAVE_INITFINI_ARRAY /* These magic symbols are provided by the linker. */ extern void (*__preinit_array_start []) (void) __attribute__((weak)); extern void (*__preinit_array_end []) (void) __attribute__((weak)); extern void (*__init_array_start []) (void) __attribute__((weak)); extern void (*__init_array_end []) (void) __attribute__((weak)); #ifdef HAVE_INIT_FINI extern void _init (void) __attribute__((weak)); #endif /* Iterate over all the init routines. */ void __libc_init_array (void) { size_t count; size_t i; count = __preinit_array_end - __preinit_array_start; for (i = 0; i < count; i++) __preinit_array_start[i] (); #ifdef HAVE_INIT_FINI if (_init) _init (); #endif count = __init_array_end - __init_array_start; for (i = 0; i < count; i++) __init_array_start[i] (); } #endif picolibc-1.7.4/newlib/libc/misc/lock.c000066400000000000000000000071331414576234500175460ustar00rootroot00000000000000/* Copyright (c) 2016 Thomas Preud'homme */ /* FUNCTION <<__retarget_lock_init>>, <<__retarget_lock_init_recursive>>, <<__retarget_lock_close>>, <<__retarget_lock_close_recursive>>, <<__retarget_lock_acquire>>, <<__retarget_lock_acquire_recursive>>, <<__retarget_lock_try_acquire>>, <<__retarget_lock_try_acquire_recursive>>, <<__retarget_lock_release>>, <<__retarget_lock_release_recursive>>---locking routines INDEX __lock___sinit_recursive_mutex INDEX __lock___sfp_recursive_mutex INDEX __lock___atexit_recursive_mutex INDEX __lock___at_quick_exit_mutex INDEX __lock___malloc_recursive_mutex INDEX __lock___env_recursive_mutex INDEX __lock___tz_mutex INDEX __lock___arc4random_mutex INDEX __retarget_lock_init INDEX __retarget_lock_init_recursive INDEX __retarget_lock_close INDEX __retarget_lock_close_recursive INDEX __retarget_lock_acquire INDEX __retarget_lock_acquire_recursive INDEX __retarget_lock_try_acquire INDEX __retarget_lock_try_acquire_recursive INDEX __retarget_lock_release INDEX __retarget_lock_release_recursive SYNOPSIS #include struct __lock __lock___sinit_recursive_mutex; struct __lock __lock___sfp_recursive_mutex; struct __lock __lock___atexit_recursive_mutex; struct __lock __lock___at_quick_exit_mutex; struct __lock __lock___malloc_recursive_mutex; struct __lock __lock___env_recursive_mutex; struct __lock __lock___tz_mutex; struct __lock __lock___arc4random_mutex; void __retarget_lock_init (_LOCK_T * <[lock_ptr]>); void __retarget_lock_init_recursive (_LOCK_T * <[lock_ptr]>); void __retarget_lock_close (_LOCK_T <[lock]>); void __retarget_lock_close_recursive (_LOCK_T <[lock]>); void __retarget_lock_acquire (_LOCK_T <[lock]>); void __retarget_lock_acquire_recursive (_LOCK_T <[lock]>); int __retarget_lock_try_acquire (_LOCK_T <[lock]>); int __retarget_lock_try_acquire_recursive (_LOCK_T <[lock]>); void __retarget_lock_release (_LOCK_T <[lock]>); void __retarget_lock_release_recursive (_LOCK_T <[lock]>); DESCRIPTION Newlib was configured to allow the target platform to provide the locking routines and static locks at link time. As such, a dummy default implementation of these routines and static locks is provided for single-threaded application to link successfully out of the box on bare-metal systems. For multi-threaded applications the target platform is required to provide an implementation for @strong{all} these routines and static locks. If some routines or static locks are missing, the link will fail with doubly defined symbols. PORTABILITY These locking routines and static lock are newlib-specific. Supporting OS subroutines are required for linking multi-threaded applications. */ /* dummy lock routines and static locks for single-threaded apps */ #ifndef __SINGLE_THREAD__ #include struct __lock { char unused; }; struct __lock __lock___libc_recursive_mutex; void __retarget_lock_init (_LOCK_T *lock) { (void) lock; } void __retarget_lock_init_recursive(_LOCK_T *lock) { (void) lock; } void __retarget_lock_close(_LOCK_T lock) { (void) lock; } void __retarget_lock_close_recursive(_LOCK_T lock) { (void) lock; } void __retarget_lock_acquire (_LOCK_T lock) { (void) lock; } void __retarget_lock_acquire_recursive (_LOCK_T lock) { (void) lock; } int __retarget_lock_try_acquire(_LOCK_T lock) { (void) lock; return 1; } int __retarget_lock_try_acquire_recursive(_LOCK_T lock) { (void) lock; return 1; } void __retarget_lock_release (_LOCK_T lock) { (void) lock; } void __retarget_lock_release_recursive (_LOCK_T lock) { (void) lock; } #endif /* !defined(__SINGLE_THREAD__) */ picolibc-1.7.4/newlib/libc/misc/meson.build000066400000000000000000000037751414576234500206240ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # srcs_misc = [ '__dprintf.c', 'ffs.c', 'fini.c', 'init.c', 'lock.c', 'unctrl.c', ] srcs_misc_use = [] foreach file : srcs_misc s_file = fs.replace_suffix(file, '.S') if file in srcs_machine message('libc/misc/' + file + ': machine overrides generic') elif s_file in srcs_machine message('libc/misc/' + s_file + ': machine overrides generic') else srcs_misc_use += file endif endforeach src_misc = files(srcs_misc_use) picolibc-1.7.4/newlib/libc/misc/misc.tex000066400000000000000000000036021414576234500201240ustar00rootroot00000000000000# #Copyright (c) 1981, 1993 #The Regents of the University of California. All rights reserved. # #Redistribution and use in source and binary forms, with or without #modification, are permitted provided that the following conditions #are met: #1. Redistributions of source code must retain the above copyright #notice, this list of conditions and the following disclaimer. #2. Redistributions in binary form must reproduce the above copyright #notice, this list of conditions and the following disclaimer in the #documentation and/or other materials provided with the distribution. #3. Neither the name of the University nor the names of its contributors #may be used to endorse or promote products derived from this software #without specific prior written permission. # #THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND #ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE #IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE #ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE #FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL #DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS #OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) #HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT #LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY #OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF #SUCH DAMAGE. # @node Misc @chapter Miscellaneous Macros and Functions This chapter describes miscellaneous routines not covered elsewhere. @menu * ffs:: Return first bit set in a word * __retarget_lock_init:: Retargetable locking routines * unctrl:: Return printable representation of a character @end menu @page @include misc/ffs.def @page @include misc/lock.def @page @include misc/unctrl.def picolibc-1.7.4/newlib/libc/misc/unctrl.c000066400000000000000000000121541414576234500201240ustar00rootroot00000000000000/* FUNCTION <>---get printable representation of a character INDEX unctrl INDEX unctrllen SYNOPSIS #include char *unctrl(int <[c]>); int unctrllen(int <[c]>); DESCRIPTION <> is a macro which returns the printable representation of <[c]> as a string. <> is a macro which returns the length of the printable representation of <[c]>. RETURNS <> returns a string of the printable representation of <[c]>. <> returns the length of the string which is the printable representation of <[c]>. PORTABILITY <> and <> are not ANSI C. No supporting OS subroutines are required. */ /* * Copyright (c) 1981, 1993 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include <_ansi.h> #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)unctrl.c 8.1 (Berkeley) 6/4/93"; #endif /* LIBC_SCCS and not lint */ const char * const __unctrl[256] = { "^@", "^A", "^B", "^C", "^D", "^E", "^F", "^G", "^H", "^I", "^J", "^K", "^L", "^M", "^N", "^O", "^P", "^Q", "^R", "^S", "^T", "^U", "^V", "^W", "^X", "^Y", "^Z", "^[", "^\\", "^]", "^~", "^_", " ", "!", "\"", "#", "$", "%", "&", "'", "(", ")", "*", "+", ",", "-", ".", "/", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ":", ";", "<", "=", ">", "?", "@", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "[", "\\", "]", "^", "_", "`", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "{", "|", "}", "~", "^?", "0x80", "0x81", "0x82", "0x83", "0x84", "0x85", "0x86", "0x87", "0x88", "0x89", "0x8a", "0x8b", "0x8c", "0x8d", "0x8e", "0x8f", "0x90", "0x91", "0x92", "0x93", "0x94", "0x95", "0x96", "0x97", "0x98", "0x99", "0x9a", "0x9b", "0x9c", "0x9d", "0x9e", "0x9f", "0xa0", "0xa1", "0xa2", "0xa3", "0xa4", "0xa5", "0xa6", "0xa7", "0xa8", "0xa9", "0xaa", "0xab", "0xac", "0xad", "0xae", "0xaf", "0xb0", "0xb1", "0xb2", "0xb3", "0xb4", "0xb5", "0xb6", "0xb7", "0xb8", "0xb9", "0xba", "0xbb", "0xbc", "0xbd", "0xbe", "0xbf", "0xc0", "0xc1", "0xc2", "0xc3", "0xc4", "0xc5", "0xc6", "0xc7", "0xc8", "0xc9", "0xca", "0xcb", "0xcc", "0xcd", "0xce", "0xcf", "0xd0", "0xd1", "0xd2", "0xd3", "0xd4", "0xd5", "0xd6", "0xd7", "0xd8", "0xd9", "0xda", "0xdb", "0xdc", "0xdd", "0xde", "0xdf", "0xe0", "0xe1", "0xe2", "0xe3", "0xe4", "0xe5", "0xe6", "0xe7", "0xe8", "0xe9", "0xea", "0xeb", "0xec", "0xed", "0xee", "0xef", "0xf0", "0xf1", "0xf2", "0xf3", "0xf4", "0xf5", "0xf6", "0xf7", "0xf8", "0xf9", "0xfa", "0xfb", "0xfc", "0xfd", "0xfe", "0xff", }; const char __unctrllen[256] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, }; picolibc-1.7.4/newlib/libc/picolib/000077500000000000000000000000001414576234500171345ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/picolib/dso_handle.c000066400000000000000000000034221414576234500214010ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2019 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Part of the C++ ABI for handling dynamic shared objects during global * destruction. We don't have shared objects, so this is just a stub * to let C++ programs link */ void *__dso_handle; picolibc-1.7.4/newlib/libc/picolib/getauxval.c000066400000000000000000000034251414576234500213040ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2020 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include unsigned long getauxval(unsigned long type) { (void) type; errno = EINVAL; return 0; } __weak_reference(getauxval, __getauxval); picolibc-1.7.4/newlib/libc/picolib/inittls.c000066400000000000000000000043631414576234500207740ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2019 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include /* * The TLS block consists of initialized data immediately followed by * zero filled data * * These addresses must be defined by the loader configuration file */ extern char __tdata_source[]; /* Source of TLS initialization data (in ROM) */ extern char __tdata_size[]; /* Size of TLS initized data */ extern char __tbss_size[]; /* Size of TLS zero-filled data */ void _init_tls(void *__tls) { char *tls = __tls; /* Copy tls initialized data */ memcpy(tls, __tdata_source, (uintptr_t) __tdata_size); /* Clear tls zero data */ memset(tls + (uintptr_t) __tdata_size, '\0', (uintptr_t) __tbss_size); } picolibc-1.7.4/newlib/libc/picolib/machine/000077500000000000000000000000001414576234500205405ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/picolib/machine/aarch64/000077500000000000000000000000001414576234500217705ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/picolib/machine/aarch64/meson.build000066400000000000000000000031531414576234500241340ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2021 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # if thread_local_storage src_picolib += files('tls.c') endif picolibc-1.7.4/newlib/libc/picolib/machine/aarch64/tls.c000066400000000000000000000040231414576234500227350ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2020 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include /* This code is duplicated in picocrt/machine/aarch/crt0.c */ /* The size of the thread control block. * TLS relocations are generated relative to * a location this far *before* the first thread * variable (!) */ #if __SIZE_WIDTH__ == 32 #define TCB_SIZE 8 #else #define TCB_SIZE 16 #endif void _set_tls(void *tls) { __asm__ volatile("msr tpidr_el0, %0" : : "r" (tls - TCB_SIZE)); } picolibc-1.7.4/newlib/libc/picolib/machine/arm/000077500000000000000000000000001414576234500213175ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/picolib/machine/arm/arm_tls.h000066400000000000000000000032731414576234500231360ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2020 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #if (__ARM_FEATURE_COPROC & 1) && __ARM_ARCH_PROFILE != 'M' && __ARM_ARCH >= 6 #define ARM_TLS_CP15 #endif picolibc-1.7.4/newlib/libc/picolib/machine/arm/interrupt.c000066400000000000000000000104111414576234500235140ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2019 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #if __ARM_ARCH_PROFILE == 'M' #define STRINGIFY(x) #x /* Interrupt functions */ void arm_halt_isr(void); void arm_halt_isr(void) { for(;;); } void arm_ignore_isr(void); void arm_ignore_isr(void) { } #define isr(name) \ void arm_ ## name ## _isr(void) __attribute__ ((weak, alias("arm_ignore_isr"))); #define isr_halt(name) \ void arm_ ## name ## _isr(void) __attribute__ ((weak, alias("arm_halt_isr"))); isr(nmi); isr_halt(hardfault); isr_halt(memmanage); isr_halt(busfault); isr_halt(usagefault); isr(svc); isr(debugmon); isr(pendsv); isr(systick); void _start(void); extern uint8_t __stack[]; #define i(addr,name) [(addr)/4] = (void(*)(void)) arm_ ## name ## _isr __section(".data.init.enter") void (* const __weak_interrupt_vector[])(void) __attribute((aligned(128))) = { [0] = (void(*)(void))__stack, [1] = _start, i(0x08, nmi), i(0x0c, hardfault), i(0x10, memmanage), i(0x14, busfault), i(0x18, usagefault), i(0x2c, svc), i(0x30, debugmon), i(0x38, pendsv), i(0x3c, systick), }; __weak_reference(__weak_interrupt_vector, __interrupt_vector); #else void arm_halt_isr(void); void __attribute__((naked)) __section(".init") arm_halt_vector(void) { /* Loop forever. */ __asm__("1: b 1b"); } void arm_ignore_isr(void); void __attribute__((naked)) __section(".init") arm_ignore_vector(void) { /* Ignore the interrupt by returning */ __asm__("bx lr"); } #define vector(name) \ void arm_ ## name ## _vector(void) __attribute__ ((weak, alias("arm_ignore_vector"))) #define vector_halt(name) \ void arm_ ## name ## _vector(void) __attribute__ ((weak, alias("arm_halt_vector"))) vector_halt(undef); vector_halt(svc); vector_halt(prefetch_abort); vector_halt(data_abort); vector(not_used); vector(irq); vector(fiq); void __attribute__((naked)) __section(".text.init.enter") __weak_vector_table(void) { /* * Exception vector that lives at the * start of program text (usually 0x0) */ #if __ARM_ARCH_ISA_THUMB == 2 /* Thumb 2 processors start in thumb mode */ __asm__(".thumb"); __asm__("b.w _start"); __asm__("b.w arm_undef_vector"); __asm__("b.w arm_svc_vector"); __asm__("b.w arm_prefetch_abort_vector"); __asm__("b.w arm_data_abort_vector"); __asm__("b.w arm_not_used_vector"); __asm__("b.w arm_irq_vector"); __asm__("b.w arm_fiq_vector"); #else /* Thumb 1 and arm processors start in arm mode */ __asm__(".arm"); __asm__("b _start"); __asm__("b arm_undef_vector"); __asm__("b arm_svc_vector"); __asm__("b arm_prefetch_abort_vector"); __asm__("b arm_data_abort_vector"); __asm__("b arm_not_used_vector"); __asm__("b arm_irq_vector"); __asm__("b arm_fiq_vector"); #endif } __weak_reference(__weak_vector_table, __vector_table); #endif picolibc-1.7.4/newlib/libc/picolib/machine/arm/meson.build000066400000000000000000000032341414576234500234630ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2021 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # src_picolib += files('interrupt.c') if thread_local_storage src_picolib += files('tls.c', 'read_tp.S') endif picolibc-1.7.4/newlib/libc/picolib/machine/arm/read_tp.S000066400000000000000000000043341414576234500230650ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2020 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "arm_tls.h" /* * This cannot be a C ABI function as the compiler assumes that it * does not modify anything other than r0 and lr. */ .syntax unified .text .align 4 .p2align 4,,15 .global __aeabi_read_tp .type __aeabi_read_tp,%function #ifdef __thumb__ .thumb #endif __aeabi_read_tp: .cfi_sections .debug_frame .cfi_startproc #ifdef ARM_TLS_CP15 mrc 15, 0, r0, c13, c0, 3 #else /* Load the address of __tls */ ldr r0,1f /* Dereference to get the value of __tls */ ldr r0,[r0] #endif /* All done, return to caller */ bx lr .cfi_endproc /* Holds the address of __tls */ .align 2 #ifndef ARM_TLS_CP15 1: .word __tls #endif picolibc-1.7.4/newlib/libc/picolib/machine/arm/tls.c000066400000000000000000000041771414576234500222760ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2019 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include "arm_tls.h" /* This needs to be global so that __aeabi_read_tp can * refer to it in an asm statement */ #ifndef ARM_TLS_CP15 void *__tls; #endif /* The size of the thread control block. * TLS relocations are generated relative to * a location this far *before* the first thread * variable (!) */ #define TCB_SIZE 8 void _set_tls(void *tls) { #ifdef ARM_TLS_CP15 __asm__("mcr 15, 0, %0, cr13, cr0, 3" : : "r" (tls - TCB_SIZE)); #else __tls = (uint8_t *) tls - TCB_SIZE; #endif } picolibc-1.7.4/newlib/libc/picolib/machine/riscv/000077500000000000000000000000001414576234500216665ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/picolib/machine/riscv/meson.build000066400000000000000000000031531414576234500240320ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2021 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # if thread_local_storage src_picolib += files('tls.c') endif picolibc-1.7.4/newlib/libc/picolib/machine/riscv/tls.c000066400000000000000000000034161414576234500226400ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2019 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include /* This code is duplicated in picocrt/machine/riscv/crt0.c */ void _set_tls(void *tls) { __asm__("mv tp, %0" : : "r" (tls)); } picolibc-1.7.4/newlib/libc/picolib/meson.build000066400000000000000000000034521414576234500213020ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # srcs_picolib = [ 'picosbrk.c', 'dso_handle.c', 'getauxval.c' ] if thread_local_storage srcs_picolib += 'inittls.c' endif src_picolib = files(srcs_picolib) if fs.is_dir('machine' / host_cpu_family) subdir('machine' / host_cpu_family) endif picolibc-1.7.4/newlib/libc/picolib/picosbrk.c000066400000000000000000000036271414576234500211240ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2019 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #include extern char __heap_start[]; extern char __heap_end[]; static char *brk = __heap_start; void *sbrk(ptrdiff_t incr) { if (incr < 0) { if (brk - __heap_start < -incr) return (void *) -1; } else { if (__heap_end - brk < incr) return (void *) -1; } void *ret = brk; brk += incr; return ret; } picolibc-1.7.4/newlib/libc/posix/000077500000000000000000000000001414576234500166555ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/posix/basename.c000066400000000000000000000007741414576234500206040ustar00rootroot00000000000000#ifndef _NO_BASENAME /* Copyright 2005 Shaun Jackman * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #include #include char* basename (char *path) { char *p; if( path == NULL || *path == '\0' ) return "."; p = path + strlen(path) - 1; while( *p == '/' ) { if( p == path ) return path; *p-- = '\0'; } while( p >= path && *p != '/' ) p--; return p + 1; } #endif /* !_NO_BASENAME */ picolibc-1.7.4/newlib/libc/posix/cclass.h000066400000000000000000000045431414576234500203040ustar00rootroot00000000000000/*- * Copyright (c) 1992, 1993, 1994 Henry Spencer. * Copyright (c) 1992, 1993, 1994 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Henry Spencer. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)cclass.h 8.3 (Berkeley) 3/20/94 * $FreeBSD: src/lib/libc/regex/cclass.h,v 1.4 2002/03/22 23:41:56 obrien Exp $ */ typedef enum {CALNUM, CALPHA, CBLANK, CCNTRL, CDIGIT, CGRAPH, CLOWER, CPRINT, CPUNCT, CSPACE, CUPPER, CXDIGIT} citype; /* character-class table */ static struct cclass { char *name; citype fidx; } cclasses[] = { {"alnum", CALNUM}, {"alpha", CALPHA}, {"blank", CBLANK}, {"cntrl", CCNTRL}, {"digit", CDIGIT}, {"graph", CGRAPH}, {"lower", CLOWER}, {"print", CPRINT}, {"punct", CPUNCT}, {"space", CSPACE}, {"upper", CUPPER}, {"xdigit", CXDIGIT}, {0} }; picolibc-1.7.4/newlib/libc/posix/cname.h000066400000000000000000000076441414576234500201240ustar00rootroot00000000000000/*- * Copyright (c) 1992, 1993, 1994 Henry Spencer. * Copyright (c) 1992, 1993, 1994 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Henry Spencer. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)cname.h 8.3 (Berkeley) 3/20/94 * $FreeBSD: src/lib/libc/regex/cname.h,v 1.3 2002/03/22 23:41:56 obrien Exp $ */ /* character-name table */ static struct cname { char *name; char code; } cnames[] = { {"NUL", '\0'}, {"SOH", '\001'}, {"STX", '\002'}, {"ETX", '\003'}, {"EOT", '\004'}, {"ENQ", '\005'}, {"ACK", '\006'}, {"BEL", '\007'}, {"alert", '\007'}, {"BS", '\010'}, {"backspace", '\b'}, {"HT", '\011'}, {"tab", '\t'}, {"LF", '\012'}, {"newline", '\n'}, {"VT", '\013'}, {"vertical-tab", '\v'}, {"FF", '\014'}, {"form-feed", '\f'}, {"CR", '\015'}, {"carriage-return", '\r'}, {"SO", '\016'}, {"SI", '\017'}, {"DLE", '\020'}, {"DC1", '\021'}, {"DC2", '\022'}, {"DC3", '\023'}, {"DC4", '\024'}, {"NAK", '\025'}, {"SYN", '\026'}, {"ETB", '\027'}, {"CAN", '\030'}, {"EM", '\031'}, {"SUB", '\032'}, {"ESC", '\033'}, {"IS4", '\034'}, {"FS", '\034'}, {"IS3", '\035'}, {"GS", '\035'}, {"IS2", '\036'}, {"RS", '\036'}, {"IS1", '\037'}, {"US", '\037'}, {"space", ' '}, {"exclamation-mark", '!'}, {"quotation-mark", '"'}, {"number-sign", '#'}, {"dollar-sign", '$'}, {"percent-sign", '%'}, {"ampersand", '&'}, {"apostrophe", '\''}, {"left-parenthesis", '('}, {"right-parenthesis", ')'}, {"asterisk", '*'}, {"plus-sign", '+'}, {"comma", ','}, {"hyphen", '-'}, {"hyphen-minus", '-'}, {"period", '.'}, {"full-stop", '.'}, {"slash", '/'}, {"solidus", '/'}, {"zero", '0'}, {"one", '1'}, {"two", '2'}, {"three", '3'}, {"four", '4'}, {"five", '5'}, {"six", '6'}, {"seven", '7'}, {"eight", '8'}, {"nine", '9'}, {"colon", ':'}, {"semicolon", ';'}, {"less-than-sign", '<'}, {"equals-sign", '='}, {"greater-than-sign", '>'}, {"question-mark", '?'}, {"commercial-at", '@'}, {"left-square-bracket", '['}, {"backslash", '\\'}, {"reverse-solidus", '\\'}, {"right-square-bracket",']'}, {"circumflex", '^'}, {"circumflex-accent", '^'}, {"underscore", '_'}, {"low-line", '_'}, {"grave-accent", '`'}, {"left-brace", '{'}, {"left-curly-bracket", '{'}, {"vertical-line", '|'}, {"right-brace", '}'}, {"right-curly-bracket", '}'}, {"tilde", '~'}, {"DEL", '\177'}, {NULL, 0} }; picolibc-1.7.4/newlib/libc/posix/collate.c000066400000000000000000000134561414576234500204550ustar00rootroot00000000000000/*- * Copyright (c) 1995 Alex Tatmanjants * at Electronni Visti IA, Kiev, Ukraine. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _GNU_SOURCE #include #include "namespace.h" #include "rune.h" #include #include #include #include #include #include "sysexits.h" #include "un-namespace.h" #include "collate.h" extern char *_PathLocale; int __collate_load_error = 1; int __collate_substitute_nontrivial; char __collate_version[STR_LEN]; u_char __collate_substitute_table[UCHAR_MAX + 1][STR_LEN]; struct __collate_st_char_pri __collate_char_pri_table[UCHAR_MAX + 1]; struct __collate_st_chain_pri __collate_chain_pri_table[TABLE_SIZE]; #define FREAD(a, b, c, d) \ do { \ if (fread(a, b, c, d) != c) { \ fclose(d); \ return -1; \ } \ } while(0) void __collate_err(int ex, const char *f); int __collate_load_tables(char *encoding) { char buf[PATH_MAX]; FILE *fp; int i, save_load_error; save_load_error = __collate_load_error; __collate_load_error = 1; if (!encoding) { __collate_load_error = save_load_error; return -1; } if (!strcmp(encoding, "C") || !strcmp(encoding, "POSIX")) return 0; if (!_PathLocale) { __collate_load_error = save_load_error; return -1; } /* Range checking not needed, encoding has fixed size */ (void) strcpy(buf, _PathLocale); (void) strcat(buf, "/"); (void) strcat(buf, encoding); (void) strcat(buf, "/LC_COLLATE"); if ((fp = fopen(buf, "r")) == NULL) { __collate_load_error = save_load_error; return -1; } FREAD(__collate_version, sizeof(__collate_version), 1, fp); if (strcmp(__collate_version, COLLATE_VERSION) != 0) { fclose(fp); return -1; } FREAD(__collate_substitute_table, sizeof(__collate_substitute_table), 1, fp); FREAD(__collate_char_pri_table, sizeof(__collate_char_pri_table), 1, fp); FREAD(__collate_chain_pri_table, sizeof(__collate_chain_pri_table), 1, fp); fclose(fp); __collate_load_error = 0; __collate_substitute_nontrivial = 0; for (i = 0; i < UCHAR_MAX + 1; i++) { if (__collate_substitute_table[i][0] != i || __collate_substitute_table[i][1] != 0) { __collate_substitute_nontrivial = 1; break; } } return 0; } u_char * __collate_substitute(const u_char *s) { int dest_len, len, nlen; int delta = strlen((const char *) s); u_char *dest_str = NULL; if(s == NULL || *s == '\0') return __collate_strdup((u_char *) ""); delta += delta / 8; dest_str = (u_char *) malloc(dest_len = delta); if(dest_str == NULL) __collate_err(EX_OSERR, __FUNCTION__); len = 0; while(*s) { nlen = len + strlen((const char *) __collate_substitute_table[*s]); if (dest_len <= nlen) { dest_str = reallocf(dest_str, dest_len = nlen + delta); if(dest_str == NULL) __collate_err(EX_OSERR, __FUNCTION__); } strcpy((char *) dest_str + len, (const char *) __collate_substitute_table[*s++]); len = nlen; } return dest_str; } void __collate_lookup(const u_char *t, int *len, int *prim, int *sec) { struct __collate_st_chain_pri *p2; *len = 1; *prim = *sec = 0; for(p2 = __collate_chain_pri_table; p2->str[0]; p2++) { if(strncmp((const char *) t, (const char *) p2->str, strlen((const char *) p2->str)) == 0) { *len = strlen((const char *) p2->str); *prim = p2->prim; *sec = p2->sec; return; } } *prim = __collate_char_pri_table[*t].prim; *sec = __collate_char_pri_table[*t].sec; } u_char * __collate_strdup(u_char *s) { u_char *t = (u_char *) strdup((const char *) s); if (t == NULL) __collate_err(EX_OSERR, __FUNCTION__); return t; } void __collate_err(int ex, const char *f) { const char *s; int serrno = errno; /* Be careful to change write counts if you change the strings */ write(STDERR_FILENO, "collate_error: ", 15); write(STDERR_FILENO, f, strlen(f)); write(STDERR_FILENO, ": ", 2); s = strerror(serrno); write(STDERR_FILENO, s, strlen(s)); write(STDERR_FILENO, "\n", 1); exit(ex); } #ifdef COLLATE_DEBUG void __collate_print_tables() { int i; struct __collate_st_chain_pri *p2; printf("Substitute table:\n"); for (i = 0; i < UCHAR_MAX + 1; i++) if (i != *__collate_substitute_table[i]) printf("\t'%c' --> \"%s\"\n", i, __collate_substitute_table[i]); printf("Chain priority table:\n"); for (p2 = __collate_chain_pri_table; p2->str[0]; p2++) printf("\t\"%s\" : %d %d\n\n", p2->str, p2->prim, p2->sec); printf("Char priority table:\n"); for (i = 0; i < UCHAR_MAX + 1; i++) printf("\t'%c' : %d %d\n", i, __collate_char_pri_table[i].prim, __collate_char_pri_table[i].sec); } #endif picolibc-1.7.4/newlib/libc/posix/collate.h000066400000000000000000000046241414576234500204570ustar00rootroot00000000000000/*- * Copyright (c) 1995 Alex Tatmanjants * at Electronni Visti IA, Kiev, Ukraine. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $FreeBSD: src/lib/libc/locale/collate.h,v 1.11 2002/03/21 22:46:54 obrien Exp $ */ #ifndef _COLLATE_H_ #define _COLLATE_H_ #include #include #include #define STR_LEN 10 #define TABLE_SIZE 100 #define COLLATE_VERSION "1.0\n" struct __collate_st_char_pri { int prim, sec; }; struct __collate_st_chain_pri { u_char str[STR_LEN]; int prim, sec; }; extern int __collate_load_error; extern int __collate_substitute_nontrivial; extern char __collate_version[STR_LEN]; extern u_char __collate_substitute_table[UCHAR_MAX + 1][STR_LEN]; extern struct __collate_st_char_pri __collate_char_pri_table[UCHAR_MAX + 1]; extern struct __collate_st_chain_pri __collate_chain_pri_table[TABLE_SIZE]; __BEGIN_DECLS u_char *__collate_strdup(u_char *); u_char *__collate_substitute(const u_char *); int __collate_load_tables(char *); void __collate_lookup(const u_char *, int *, int *, int *); int __collate_range_cmp(int, int); #ifdef COLLATE_DEBUG void __collate_print_tables(void); #endif __END_DECLS #endif /* !_COLLATE_H_ */ picolibc-1.7.4/newlib/libc/posix/collcmp.c000066400000000000000000000046421414576234500204600ustar00rootroot00000000000000/* * Copyright (C) 1996 by Andrey A. Chernov, Moscow, Russia. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _GNU_SOURCE #include #define ASCII_COMPATIBLE_COLLATE /* see share/colldef */ #include #include "collate.h" #ifndef ASCII_COMPATIBLE_COLLATE #include #endif /* * Compare two characters converting collate information * into ASCII-compatible range, it allows to handle * "[a-z]"-type ranges with national characters. */ int __collate_range_cmp (int c1, int c2) { static char s1[2], s2[2]; int ret; #ifndef ASCII_COMPATIBLE_COLLATE int as1, as2, al1, al2; #endif c1 &= UCHAR_MAX; c2 &= UCHAR_MAX; if (c1 == c2) return (0); #ifndef ASCII_COMPATIBLE_COLLATE as1 = isascii(c1); as2 = isascii(c2); al1 = isalpha(c1); al2 = isalpha(c2); if (as1 || as2 || al1 || al2) { if ((as1 && as2) || (!al1 && !al2)) return (c1 - c2); if (al1 && !al2) { if (isupper(c1)) return ('A' - c2); else return ('a' - c2); } else if (al2 && !al1) { if (isupper(c2)) return (c1 - 'A'); else return (c1 - 'a'); } } #endif s1[0] = c1; s2[0] = c2; if ((ret = strcoll(s1, s2)) != 0) return (ret); return (c1 - c2); } picolibc-1.7.4/newlib/libc/posix/dirname.c000066400000000000000000000010571414576234500204430ustar00rootroot00000000000000#ifndef _NO_DIRNAME /* Copyright 2005 Shaun Jackman * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #include #include char * dirname (char *path) { char *p; if( path == NULL || *path == '\0' ) return "."; p = path + strlen(path) - 1; while( *p == '/' ) { if( p == path ) return path; *p-- = '\0'; } while( p >= path && *p != '/' ) p--; return p < path ? "." : p == path ? "/" : (*p = '\0', path); } #endif /* !_NO_DIRNAME */ picolibc-1.7.4/newlib/libc/posix/engine.c000066400000000000000000000710741414576234500202770ustar00rootroot00000000000000/*- * Copyright (c) 1992, 1993, 1994 Henry Spencer. * Copyright (c) 1992, 1993, 1994 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Henry Spencer. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)engine.c 8.5 (Berkeley) 3/20/94 */ #include #include <_ansi.h> /* * The matching engine and friends. This file is #included by regexec.c * after suitable #defines of a variety of macros used herein, so that * different state representations can be used without duplicating masses * of code. */ #ifdef SNAMES #define matcher smatcher #define fast sfast #define slow sslow #define dissect sdissect #define backref sbackref #define step sstep #define print sprint #define at sat #define match smat #endif #ifdef LNAMES #define matcher lmatcher #define fast lfast #define slow lslow #define dissect ldissect #define backref lbackref #define step lstep #define print lprint #define at lat #define match lmat #endif /* another structure passed up and down to avoid zillions of parameters */ struct match { struct re_guts *g; int eflags; regmatch_t *pmatch; /* [nsub+1] (0 element unused) */ char *offp; /* offsets work from here */ char *beginp; /* start of string -- virtual NUL precedes */ char *endp; /* end of string -- virtual NUL here */ char *coldp; /* can be no match starting before here */ char **lastpos; /* [nplus+1] */ STATEVARS; states st; /* current states */ states fresh; /* states for a fresh start */ states tmp; /* temporary */ states empty; /* empty set of states */ }; /* ========= begin header generated by ./mkh ========= */ #ifdef __cplusplus extern "C" { #endif /* === engine.c === */ static int matcher(struct re_guts *g, char *string, size_t nmatch, regmatch_t pmatch[], int eflags); static char *dissect(struct match *m, char *start, char *stop, sopno startst, sopno stopst); static char *backref(struct match *m, char *start, char *stop, sopno startst, sopno stopst, sopno lev); static char *fast(struct match *m, char *start, char *stop, sopno startst, sopno stopst); static char *slow(struct match *m, char *start, char *stop, sopno startst, sopno stopst); static states step(struct re_guts *g, sopno start, sopno stop, states bef, int ch, states aft); #define BOL (OUT+1) #define EOL (BOL+1) #define BOLEOL (BOL+2) #define NOTHING (BOL+3) #define BOW (BOL+4) #define EOW (BOL+5) #define CODEMAX (BOL+5) /* highest code used */ #define NONCHAR(c) ((c) > CHAR_MAX) #define NNONCHAR (CODEMAX-CHAR_MAX) #ifdef REDEBUG static void print(struct match *m, char *caption, states st, int ch, FILE *d); #endif #ifdef REDEBUG static void at(struct match *m, char *title, char *start, char *stop, sopno startst, sopno stopst); #endif #ifdef REDEBUG static char *pchar(int ch); #endif #ifdef __cplusplus } #endif /* ========= end header generated by ./mkh ========= */ #ifdef REDEBUG #define SP(t, s, c) print(m, t, s, c, stdout) #define AT(t, p1, p2, s1, s2) at(m, t, p1, p2, s1, s2) #define NOTE(str) { if (m->eflags®_TRACE) printf("=%s\n", (str)); } #else #define SP(t, s, c) /* nothing */ #define AT(t, p1, p2, s1, s2) /* nothing */ #define NOTE(s) /* nothing */ #endif /* - matcher - the actual matching engine == static int matcher(struct re_guts *g, char *string, \ == size_t nmatch, regmatch_t pmatch[], int eflags); */ static int /* 0 success, REG_NOMATCH failure */ matcher(struct re_guts *g, char *string, size_t nmatch, regmatch_t pmatch[], int eflags) { char *endp; size_t i; struct match mv; struct match *m = &mv; char *dp = NULL; const sopno gf = g->firststate+1; /* +1 for OEND */ const sopno gl = g->laststate; char *start; char *stop; /* Boyer-Moore algorithms variables */ char *pp; int cj, mj; char *mustfirst; char *mustlast; int *matchjump; int *charjump; /* simplify the situation where possible */ if (g->cflags®_NOSUB) nmatch = 0; if (eflags®_STARTEND) { start = string + pmatch[0].rm_so; stop = string + pmatch[0].rm_eo; } else { start = string; stop = start + strlen(start); } if (stop < start) return(REG_INVARG); /* prescreening; this does wonders for this rather slow code */ if (g->must != NULL) { if (g->charjump != NULL && g->matchjump != NULL) { mustfirst = g->must; mustlast = g->must + g->mlen - 1; charjump = g->charjump; matchjump = g->matchjump; pp = mustlast; for (dp = start+g->mlen-1; dp < stop;) { /* Fast skip non-matches */ while (dp < stop && charjump[(unsigned char) *dp]) dp += charjump[(unsigned char) *dp]; if (dp >= stop) break; /* Greedy matcher */ /* We depend on not being used for * for strings of length 1 */ while (*--dp == *--pp && pp != mustfirst); if (*dp == *pp) break; /* Jump to next possible match */ mj = matchjump[pp - mustfirst]; cj = charjump[(unsigned char) *dp]; dp += (cj < mj ? mj : cj); pp = mustlast; } if (pp != mustfirst) return(REG_NOMATCH); } else { for (dp = start; dp < stop; dp++) if (*dp == g->must[0] && stop - dp >= g->mlen && memcmp(dp, g->must, (size_t)g->mlen) == 0) break; if (dp == stop) /* we didn't find g->must */ return(REG_NOMATCH); } } /* match struct setup */ m->g = g; m->eflags = eflags; m->pmatch = NULL; m->lastpos = NULL; m->offp = string; m->beginp = start; m->endp = stop; STATESETUP(m, 4); SETUP(m->st); SETUP(m->fresh); SETUP(m->tmp); SETUP(m->empty); CLEAR(m->empty); /* Adjust start according to moffset, to speed things up */ if (g->moffset > -1) start = ((dp - g->moffset) < start) ? start : dp - g->moffset; /* this loop does only one repetition except for backrefs */ for (;;) { endp = fast(m, start, stop, gf, gl); if (endp == NULL) { /* a miss */ STATETEARDOWN(m); return(REG_NOMATCH); } if (nmatch == 0 && !g->backrefs) break; /* no further info needed */ /* where? */ assert(m->coldp != NULL); for (;;) { NOTE("finding start"); endp = slow(m, m->coldp, stop, gf, gl); if (endp != NULL) break; assert(m->coldp < m->endp); m->coldp++; } if (nmatch == 1 && !g->backrefs) break; /* no further info needed */ /* oh my, he wants the subexpressions... */ if (m->pmatch == NULL) m->pmatch = (regmatch_t *)malloc((m->g->nsub + 1) * sizeof(regmatch_t)); if (m->pmatch == NULL) { STATETEARDOWN(m); return(REG_ESPACE); } for (i = 1; i <= m->g->nsub; i++) m->pmatch[i].rm_so = m->pmatch[i].rm_eo = -1; if (!g->backrefs && !(m->eflags®_BACKR)) { NOTE("dissecting"); dp = dissect(m, m->coldp, endp, gf, gl); } else { if (g->nplus > 0 && m->lastpos == NULL) m->lastpos = (char **)malloc((g->nplus+1) * sizeof(char *)); if (g->nplus > 0 && m->lastpos == NULL) { free(m->pmatch); STATETEARDOWN(m); return(REG_ESPACE); } NOTE("backref dissect"); dp = backref(m, m->coldp, endp, gf, gl, (sopno)0); } if (dp != NULL) break; /* uh-oh... we couldn't find a subexpression-level match */ assert(g->backrefs); /* must be back references doing it */ assert(g->nplus == 0 || m->lastpos != NULL); for (;;) { if (dp != NULL || endp <= m->coldp) break; /* defeat */ NOTE("backoff"); endp = slow(m, m->coldp, endp-1, gf, gl); if (endp == NULL) break; /* defeat */ /* try it on a shorter possibility */ #ifndef NDEBUG for (i = 1; i <= m->g->nsub; i++) { assert(m->pmatch[i].rm_so == -1); assert(m->pmatch[i].rm_eo == -1); } #endif NOTE("backoff dissect"); dp = backref(m, m->coldp, endp, gf, gl, (sopno)0); } assert(dp == NULL || dp == endp); if (dp != NULL) /* found a shorter one */ break; /* despite initial appearances, there is no match here */ NOTE("false alarm"); start = m->coldp + 1; /* recycle starting later */ assert(start <= stop); } /* fill in the details if requested */ if (nmatch > 0) { pmatch[0].rm_so = m->coldp - m->offp; pmatch[0].rm_eo = endp - m->offp; } if (nmatch > 1) { assert(m->pmatch != NULL); for (i = 1; i < nmatch; i++) if (i <= m->g->nsub) pmatch[i] = m->pmatch[i]; else { pmatch[i].rm_so = -1; pmatch[i].rm_eo = -1; } } if (m->pmatch != NULL) free((char *)m->pmatch); if (m->lastpos != NULL) free((char *)m->lastpos); STATETEARDOWN(m); return(0); } /* - dissect - figure out what matched what, no back references == static char *dissect(struct match *m, char *start, \ == char *stop, sopno startst, sopno stopst); */ static char * /* == stop (success) always */ dissect(struct match *m, char *start, char *stop, sopno startst, sopno stopst) { int i; sopno ss; /* start sop of current subRE */ sopno es; /* end sop of current subRE */ char *sp; /* start of string matched by it */ char *stp; /* string matched by it cannot pass here */ char *rest; /* start of rest of string */ char *tail; /* string unmatched by rest of RE */ sopno ssub; /* start sop of subsubRE */ sopno esub; /* end sop of subsubRE */ char *ssp; /* start of string matched by subsubRE */ char *sep; /* end of string matched by subsubRE */ char *oldssp; /* previous ssp */ #if __GNUC_PREREQ (4, 6) /* dp is only used for assertion testing which, for some reason, is not recognized as usage. */ #pragma GCC diagnostic ignored "-Wunused-but-set-variable" #endif char *dp; AT("diss", start, stop, startst, stopst); sp = start; for (ss = startst; ss < stopst; ss = es) { /* identify end of subRE */ es = ss; switch (OP(m->g->strip[es])) { case OPLUS_: case OQUEST_: es += OPND(m->g->strip[es]); break; case OCH_: while (OP(m->g->strip[es]) != O_CH) es += OPND(m->g->strip[es]); break; } es++; /* figure out what it matched */ switch (OP(m->g->strip[ss])) { case OEND: assert(nope); break; case OCHAR: sp++; break; case OBOL: case OEOL: case OBOW: case OEOW: break; case OANY: case OANYOF: sp++; break; case OBACK_: case O_BACK: assert(nope); break; /* cases where length of match is hard to find */ case OQUEST_: stp = stop; for (;;) { /* how long could this one be? */ rest = slow(m, sp, stp, ss, es); assert(rest != NULL); /* it did match */ /* could the rest match the rest? */ tail = slow(m, rest, stop, es, stopst); if (tail == stop) break; /* yes! */ /* no -- try a shorter match for this one */ stp = rest - 1; assert(stp >= sp); /* it did work */ } ssub = ss + 1; esub = es - 1; /* did innards match? */ if (slow(m, sp, rest, ssub, esub) != NULL) { dp = dissect(m, sp, rest, ssub, esub); assert(dp == rest); } else /* no */ assert(sp == rest); sp = rest; break; case OPLUS_: stp = stop; for (;;) { /* how long could this one be? */ rest = slow(m, sp, stp, ss, es); assert(rest != NULL); /* it did match */ /* could the rest match the rest? */ tail = slow(m, rest, stop, es, stopst); if (tail == stop) break; /* yes! */ /* no -- try a shorter match for this one */ stp = rest - 1; assert(stp >= sp); /* it did work */ } ssub = ss + 1; esub = es - 1; ssp = sp; oldssp = ssp; for (;;) { /* find last match of innards */ sep = slow(m, ssp, rest, ssub, esub); if (sep == NULL || sep == ssp) break; /* failed or matched null */ oldssp = ssp; /* on to next try */ ssp = sep; } if (sep == NULL) { /* last successful match */ sep = ssp; ssp = oldssp; } assert(sep == rest); /* must exhaust substring */ assert(slow(m, ssp, sep, ssub, esub) == rest); dp = dissect(m, ssp, sep, ssub, esub); assert(dp == sep); sp = rest; break; case OCH_: stp = stop; for (;;) { /* how long could this one be? */ rest = slow(m, sp, stp, ss, es); assert(rest != NULL); /* it did match */ /* could the rest match the rest? */ tail = slow(m, rest, stop, es, stopst); if (tail == stop) break; /* yes! */ /* no -- try a shorter match for this one */ stp = rest - 1; assert(stp >= sp); /* it did work */ } ssub = ss + 1; esub = ss + OPND(m->g->strip[ss]) - 1; assert(OP(m->g->strip[esub]) == OOR1); for (;;) { /* find first matching branch */ if (slow(m, sp, rest, ssub, esub) == rest) break; /* it matched all of it */ /* that one missed, try next one */ assert(OP(m->g->strip[esub]) == OOR1); esub++; assert(OP(m->g->strip[esub]) == OOR2); ssub = esub + 1; esub += OPND(m->g->strip[esub]); if (OP(m->g->strip[esub]) == OOR2) esub--; else assert(OP(m->g->strip[esub]) == O_CH); } dp = dissect(m, sp, rest, ssub, esub); assert(dp == rest); sp = rest; break; case O_PLUS: case O_QUEST: case OOR1: case OOR2: case O_CH: assert(nope); break; case OLPAREN: i = OPND(m->g->strip[ss]); assert(0 < i && i <= m->g->nsub); m->pmatch[i].rm_so = sp - m->offp; break; case ORPAREN: i = OPND(m->g->strip[ss]); assert(0 < i && i <= m->g->nsub); m->pmatch[i].rm_eo = sp - m->offp; break; default: /* uh oh */ assert(nope); break; } } assert(sp == stop); return(sp); } /* - backref - figure out what matched what, figuring in back references == static char *backref(struct match *m, char *start, \ == char *stop, sopno startst, sopno stopst, sopno lev); */ static char * /* == stop (success) or NULL (failure) */ backref(struct match *m, char *start, char *stop, sopno startst, sopno stopst, sopno lev) /* PLUS nesting level */ { int i; sopno ss; /* start sop of current subRE */ char *sp; /* start of string matched by it */ sopno ssub; /* start sop of subsubRE */ sopno esub; /* end sop of subsubRE */ char *ssp; /* start of string matched by subsubRE */ char *dp; size_t len; int hard; sop s; regoff_t offsave; cset *cs; AT("back", start, stop, startst, stopst); sp = start; /* get as far as we can with easy stuff */ hard = 0; for (ss = startst; !hard && ss < stopst; ss++) switch (OP(s = m->g->strip[ss])) { case OCHAR: if (sp == stop || *sp++ != (char)OPND(s)) return(NULL); break; case OANY: if (sp == stop) return(NULL); sp++; break; case OANYOF: cs = &m->g->sets[OPND(s)]; if (sp == stop || !CHIN(cs, *sp++)) return(NULL); break; case OBOL: if ( (sp == m->beginp && !(m->eflags®_NOTBOL)) || (sp < m->endp && *(sp-1) == '\n' && (m->g->cflags®_NEWLINE)) ) { /* yes */ } else return(NULL); break; case OEOL: if ( (sp == m->endp && !(m->eflags®_NOTEOL)) || (sp < m->endp && *sp == '\n' && (m->g->cflags®_NEWLINE)) ) { /* yes */ } else return(NULL); break; case OBOW: if (( (sp == m->beginp && !(m->eflags®_NOTBOL)) || (sp < m->endp && *(sp-1) == '\n' && (m->g->cflags®_NEWLINE)) || (sp > m->beginp && !ISWORD(*(sp-1))) ) && (sp < m->endp && ISWORD(*sp)) ) { /* yes */ } else return(NULL); break; case OEOW: if (( (sp == m->endp && !(m->eflags®_NOTEOL)) || (sp < m->endp && *sp == '\n' && (m->g->cflags®_NEWLINE)) || (sp < m->endp && !ISWORD(*sp)) ) && (sp > m->beginp && ISWORD(*(sp-1))) ) { /* yes */ } else return(NULL); break; case O_QUEST: break; case OOR1: /* matches null but needs to skip */ ss++; s = m->g->strip[ss]; do { assert(OP(s) == OOR2); ss += OPND(s); } while (OP(s = m->g->strip[ss]) != O_CH); /* note that the ss++ gets us past the O_CH */ break; default: /* have to make a choice */ hard = 1; break; } if (!hard) { /* that was it! */ if (sp != stop) return(NULL); return(sp); } ss--; /* adjust for the for's final increment */ /* the hard stuff */ AT("hard", sp, stop, ss, stopst); s = m->g->strip[ss]; switch (OP(s)) { case OBACK_: /* the vilest depths */ i = OPND(s); assert(0 < i && i <= m->g->nsub); if (m->pmatch[i].rm_eo == -1) return(NULL); assert(m->pmatch[i].rm_so != -1); len = m->pmatch[i].rm_eo - m->pmatch[i].rm_so; assert(stop - m->beginp >= len); if (sp > stop - len) return(NULL); /* not enough left to match */ ssp = m->offp + m->pmatch[i].rm_so; if (memcmp(sp, ssp, len) != 0) return(NULL); while (m->g->strip[ss] != (sop) SOP(O_BACK, i)) ss++; return(backref(m, sp+len, stop, ss+1, stopst, lev)); break; case OQUEST_: /* to null or not */ dp = backref(m, sp, stop, ss+1, stopst, lev); if (dp != NULL) return(dp); /* not */ return(backref(m, sp, stop, ss+OPND(s)+1, stopst, lev)); break; case OPLUS_: assert(m->lastpos != NULL); assert(lev+1 <= m->g->nplus); m->lastpos[lev+1] = sp; return(backref(m, sp, stop, ss+1, stopst, lev+1)); break; case O_PLUS: if (sp == m->lastpos[lev]) /* last pass matched null */ return(backref(m, sp, stop, ss+1, stopst, lev-1)); /* try another pass */ m->lastpos[lev] = sp; dp = backref(m, sp, stop, ss-OPND(s)+1, stopst, lev); if (dp == NULL) return(backref(m, sp, stop, ss+1, stopst, lev-1)); else return(dp); break; case OCH_: /* find the right one, if any */ ssub = ss + 1; esub = ss + OPND(s) - 1; assert(OP(m->g->strip[esub]) == OOR1); for (;;) { /* find first matching branch */ dp = backref(m, sp, stop, ssub, esub, lev); if (dp != NULL) return(dp); /* that one missed, try next one */ if (OP(m->g->strip[esub]) == O_CH) return(NULL); /* there is none */ esub++; assert(OP(m->g->strip[esub]) == OOR2); ssub = esub + 1; esub += OPND(m->g->strip[esub]); if (OP(m->g->strip[esub]) == OOR2) esub--; else assert(OP(m->g->strip[esub]) == O_CH); } break; case OLPAREN: /* must undo assignment if rest fails */ i = OPND(s); assert(0 < i && i <= m->g->nsub); offsave = m->pmatch[i].rm_so; m->pmatch[i].rm_so = sp - m->offp; dp = backref(m, sp, stop, ss+1, stopst, lev); if (dp != NULL) return(dp); m->pmatch[i].rm_so = offsave; return(NULL); break; case ORPAREN: /* must undo assignment if rest fails */ i = OPND(s); assert(0 < i && i <= m->g->nsub); offsave = m->pmatch[i].rm_eo; m->pmatch[i].rm_eo = sp - m->offp; dp = backref(m, sp, stop, ss+1, stopst, lev); if (dp != NULL) return(dp); m->pmatch[i].rm_eo = offsave; return(NULL); break; default: /* uh oh */ assert(nope); break; } /* "can't happen" */ assert(nope); /* NOTREACHED */ return "shut up gcc"; } /* - fast - step through the string at top speed == static char *fast(struct match *m, char *start, \ == char *stop, sopno startst, sopno stopst); */ static char * /* where tentative match ended, or NULL */ fast(struct match *m, char *start, char *stop, sopno startst, sopno stopst) { states st = m->st; states fresh = m->fresh; states tmp = m->tmp; char *p = start; int c = (start == m->beginp) ? OUT : *(start-1); int lastc; /* previous c */ int flagch; int i; char *coldp; /* last p after which no match was underway */ CLEAR(st); SET1(st, startst); st = step(m->g, startst, stopst, st, NOTHING, st); ASSIGN(fresh, st); SP("start", st, *p); coldp = NULL; for (;;) { /* next character */ lastc = c; c = (p == m->endp) ? OUT : *p; if (EQ(st, fresh)) coldp = p; /* is there an EOL and/or BOL between lastc and c? */ flagch = '\0'; i = 0; if ( (lastc == '\n' && m->g->cflags®_NEWLINE) || (lastc == OUT && !(m->eflags®_NOTBOL)) ) { flagch = BOL; i = m->g->nbol; } if ( (c == '\n' && m->g->cflags®_NEWLINE) || (c == OUT && !(m->eflags®_NOTEOL)) ) { flagch = (flagch == BOL) ? BOLEOL : EOL; i += m->g->neol; } if (i != 0) { for (; i > 0; i--) st = step(m->g, startst, stopst, st, flagch, st); SP("boleol", st, c); } /* how about a word boundary? */ if ( (flagch == BOL || (lastc != OUT && !ISWORD(lastc))) && (c != OUT && ISWORD(c)) ) { flagch = BOW; } if ( (lastc != OUT && ISWORD(lastc)) && (flagch == EOL || (c != OUT && !ISWORD(c))) ) { flagch = EOW; } if (flagch == BOW || flagch == EOW) { st = step(m->g, startst, stopst, st, flagch, st); SP("boweow", st, c); } /* are we done? */ if (ISSET(st, stopst) || p == stop) break; /* NOTE BREAK OUT */ /* no, we must deal with this character */ ASSIGN(tmp, st); ASSIGN(st, fresh); assert(c != OUT); st = step(m->g, startst, stopst, tmp, c, st); SP("aft", st, c); assert(EQ(step(m->g, startst, stopst, st, NOTHING, st), st)); p++; } assert(coldp != NULL); m->coldp = coldp; if (ISSET(st, stopst)) return(p+1); else return(NULL); } /* - slow - step through the string more deliberately == static char *slow(struct match *m, char *start, \ == char *stop, sopno startst, sopno stopst); */ static char * /* where it ended */ slow(struct match *m, char *start, char *stop, sopno startst, sopno stopst) { states st = m->st; states empty = m->empty; states tmp = m->tmp; char *p = start; int c = (start == m->beginp) ? OUT : *(start-1); int lastc; /* previous c */ int flagch; int i; char *matchp; /* last p at which a match ended */ AT("slow", start, stop, startst, stopst); CLEAR(st); SET1(st, startst); SP("sstart", st, *p); st = step(m->g, startst, stopst, st, NOTHING, st); matchp = NULL; for (;;) { /* next character */ lastc = c; c = (p == m->endp) ? OUT : *p; /* is there an EOL and/or BOL between lastc and c? */ flagch = '\0'; i = 0; if ( (lastc == '\n' && m->g->cflags®_NEWLINE) || (lastc == OUT && !(m->eflags®_NOTBOL)) ) { flagch = BOL; i = m->g->nbol; } if ( (c == '\n' && m->g->cflags®_NEWLINE) || (c == OUT && !(m->eflags®_NOTEOL)) ) { flagch = (flagch == BOL) ? BOLEOL : EOL; i += m->g->neol; } if (i != 0) { for (; i > 0; i--) st = step(m->g, startst, stopst, st, flagch, st); SP("sboleol", st, c); } /* how about a word boundary? */ if ( (flagch == BOL || (lastc != OUT && !ISWORD(lastc))) && (c != OUT && ISWORD(c)) ) { flagch = BOW; } if ( (lastc != OUT && ISWORD(lastc)) && (flagch == EOL || (c != OUT && !ISWORD(c))) ) { flagch = EOW; } if (flagch == BOW || flagch == EOW) { st = step(m->g, startst, stopst, st, flagch, st); SP("sboweow", st, c); } /* are we done? */ if (ISSET(st, stopst)) matchp = p; if (EQ(st, empty) || p == stop) break; /* NOTE BREAK OUT */ /* no, we must deal with this character */ ASSIGN(tmp, st); ASSIGN(st, empty); assert(c != OUT); st = step(m->g, startst, stopst, tmp, c, st); SP("saft", st, c); assert(EQ(step(m->g, startst, stopst, st, NOTHING, st), st)); p++; } return(matchp); } /* - step - map set of states reachable before char to set reachable after == static states step(struct re_guts *g, sopno start, sopno stop, \ == states bef, int ch, states aft); == #define BOL (OUT+1) == #define EOL (BOL+1) == #define BOLEOL (BOL+2) == #define NOTHING (BOL+3) == #define BOW (BOL+4) == #define EOW (BOL+5) == #define CODEMAX (BOL+5) // highest code used == #define NONCHAR(c) ((c) > CHAR_MAX) == #define NNONCHAR (CODEMAX-CHAR_MAX) */ static states step(struct re_guts *g, sopno start, /* start state within strip */ sopno stop, /* state after stop state within strip */ states bef, /* states reachable before */ int ch, /* character or NONCHAR code */ states aft) /* states already known reachable after */ { cset *cs; sop s; sopno pc; onestate here; /* note, macros know this name */ sopno look; int i; for (pc = start, INIT(here, pc); pc != stop; pc++, INC(here)) { s = g->strip[pc]; switch (OP(s)) { case OEND: assert(pc == stop-1); break; case OCHAR: /* only characters can match */ assert(!NONCHAR(ch) || ch != (char)OPND(s)); if (ch == (char)OPND(s)) FWD(aft, bef, 1); break; case OBOL: if (ch == BOL || ch == BOLEOL) FWD(aft, bef, 1); break; case OEOL: if (ch == EOL || ch == BOLEOL) FWD(aft, bef, 1); break; case OBOW: if (ch == BOW) FWD(aft, bef, 1); break; case OEOW: if (ch == EOW) FWD(aft, bef, 1); break; case OANY: if (!NONCHAR(ch)) FWD(aft, bef, 1); break; case OANYOF: cs = &g->sets[OPND(s)]; if (!NONCHAR(ch) && CHIN(cs, ch)) FWD(aft, bef, 1); break; case OBACK_: /* ignored here */ case O_BACK: FWD(aft, aft, 1); break; case OPLUS_: /* forward, this is just an empty */ FWD(aft, aft, 1); break; case O_PLUS: /* both forward and back */ FWD(aft, aft, 1); i = ISSETBACK(aft, OPND(s)); BACK(aft, aft, OPND(s)); if (!i && ISSETBACK(aft, OPND(s))) { /* oho, must reconsider loop body */ pc -= OPND(s) + 1; INIT(here, pc); } break; case OQUEST_: /* two branches, both forward */ FWD(aft, aft, 1); FWD(aft, aft, OPND(s)); break; case O_QUEST: /* just an empty */ FWD(aft, aft, 1); break; case OLPAREN: /* not significant here */ case ORPAREN: FWD(aft, aft, 1); break; case OCH_: /* mark the first two branches */ FWD(aft, aft, 1); assert(OP(g->strip[pc+OPND(s)]) == OOR2); FWD(aft, aft, OPND(s)); break; case OOR1: /* done a branch, find the O_CH */ if (ISSTATEIN(aft, here)) { for (look = 1; OP(s = g->strip[pc+look]) != O_CH; look += OPND(s)) assert(OP(s) == OOR2); FWD(aft, aft, look); } break; case OOR2: /* propagate OCH_'s marking */ FWD(aft, aft, 1); if (OP(g->strip[pc+OPND(s)]) != O_CH) { assert(OP(g->strip[pc+OPND(s)]) == OOR2); FWD(aft, aft, OPND(s)); } break; case O_CH: /* just empty */ FWD(aft, aft, 1); break; default: /* ooooops... */ assert(nope); break; } } return(aft); } #ifdef REDEBUG /* - print - print a set of states == #ifdef REDEBUG == static void print(struct match *m, char *caption, states st, \ == int ch, FILE *d); == #endif */ static void print(struct match *m, char *caption, states st, int ch, FILE *d) { struct re_guts *g = m->g; int i; int first = 1; if (!(m->eflags®_TRACE)) return; fprintf(d, "%s", caption); if (ch != '\0') fprintf(d, " %s", pchar(ch)); for (i = 0; i < g->nstates; i++) if (ISSET(st, i)) { fprintf(d, "%s%d", (first) ? "\t" : ", ", i); first = 0; } fprintf(d, "\n"); } /* - at - print current situation == #ifdef REDEBUG == static void at(struct match *m, char *title, char *start, char *stop, \ == sopno startst, sopno stopst); == #endif */ static void at(struct match *m, char *title, char *start, char *stop, sopno startst, sopno stopst) { if (!(m->eflags®_TRACE)) return; printf("%s %s-", title, pchar(*start)); printf("%s ", pchar(*stop)); printf("%ld-%ld\n", (long)startst, (long)stopst); } #ifndef PCHARDONE #define PCHARDONE /* never again */ /* - pchar - make a character printable == #ifdef REDEBUG == static char *pchar(int ch); == #endif * * Is this identical to regchar() over in debug.c? Well, yes. But a * duplicate here avoids having a debugging-capable regexec.o tied to * a matching debug.o, and this is convenient. It all disappears in * the non-debug compilation anyway, so it doesn't matter much. */ static char * /* -> representation */ pchar(int ch) { static char pbuf[10]; if (isprint((uch)ch) || ch == ' ') sprintf(pbuf, "%c", ch); else sprintf(pbuf, "\\%o", ch); return(pbuf); } #endif #endif #undef matcher #undef fast #undef slow #undef dissect #undef backref #undef step #undef print #undef at #undef match picolibc-1.7.4/newlib/libc/posix/fnmatch.c000066400000000000000000000142141414576234500204430ustar00rootroot00000000000000/* * Copyright (c) 1989, 1993, 1994 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Guido van Rossum. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* * Function fnmatch() as specified in POSIX 1003.2-1992, section B.6. * Compares a filename or pathname to a pattern. */ #define _GNU_SOURCE #include #include #include #include #ifdef __HAVE_LOCALE_INFO__ #include "collate.h" #endif #define EOS '\0' #define RANGE_MATCH 1 #define RANGE_NOMATCH 0 #define RANGE_ERROR (-1) static int rangematch(const char *, char, int, char **); int fnmatch(const char *pattern, const char *string, int flags) { const char *stringstart; char *newp; char c, test; for (stringstart = string;;) switch (c = *pattern++) { case EOS: if ((flags & FNM_LEADING_DIR) && *string == '/') return (0); return (*string == EOS ? 0 : FNM_NOMATCH); case '?': if (*string == EOS) return (FNM_NOMATCH); if (*string == '/' && (flags & FNM_PATHNAME)) return (FNM_NOMATCH); if (*string == '.' && (flags & FNM_PERIOD) && (string == stringstart || ((flags & FNM_PATHNAME) && *(string - 1) == '/'))) return (FNM_NOMATCH); ++string; break; case '*': c = *pattern; /* Collapse multiple stars. */ while (c == '*') c = *++pattern; if (*string == '.' && (flags & FNM_PERIOD) && (string == stringstart || ((flags & FNM_PATHNAME) && *(string - 1) == '/'))) return (FNM_NOMATCH); /* Optimize for pattern with * at end or before /. */ if (c == EOS) if (flags & FNM_PATHNAME) return ((flags & FNM_LEADING_DIR) || strchr(string, '/') == NULL ? 0 : FNM_NOMATCH); else return (0); else if (c == '/' && flags & FNM_PATHNAME) { if ((string = strchr(string, '/')) == NULL) return (FNM_NOMATCH); break; } /* General case, use recursion. */ while ((test = *string) != EOS) { if (!fnmatch(pattern, string, flags & ~FNM_PERIOD)) return (0); if (test == '/' && flags & FNM_PATHNAME) break; ++string; } return (FNM_NOMATCH); case '[': if (*string == EOS) return (FNM_NOMATCH); if (*string == '/' && (flags & FNM_PATHNAME)) return (FNM_NOMATCH); if (*string == '.' && (flags & FNM_PERIOD) && (string == stringstart || ((flags & FNM_PATHNAME) && *(string - 1) == '/'))) return (FNM_NOMATCH); switch (rangematch(pattern, *string, flags, &newp)) { case RANGE_ERROR: goto norm; case RANGE_MATCH: pattern = newp; break; case RANGE_NOMATCH: return (FNM_NOMATCH); } ++string; break; case '\\': if (!(flags & FNM_NOESCAPE)) { if ((c = *pattern++) == EOS) { c = '\\'; --pattern; } } /* FALLTHROUGH */ default: norm: if (c == *string) ; else if ((flags & FNM_CASEFOLD) && (tolower((unsigned char)c) == tolower((unsigned char)*string))) ; else return (FNM_NOMATCH); string++; break; } /* NOTREACHED */ } static int rangematch(const char *pattern, char test, int flags, char **newp) { int negate, ok; char c, c2; /* * A bracket expression starting with an unquoted circumflex * character produces unspecified results (IEEE 1003.2-1992, * 3.13.2). This implementation treats it like '!', for * consistency with the regular expression syntax. * J.T. Conklin (conklin@ngai.kaleida.com) */ if ( (negate = (*pattern == '!' || *pattern == '^')) ) ++pattern; if (flags & FNM_CASEFOLD) test = tolower((unsigned char)test); /* * A right bracket shall lose its special meaning and represent * itself in a bracket expression if it occurs first in the list. * -- POSIX.2 2.8.3.2 */ ok = 0; c = *pattern++; do { if (c == '\\' && !(flags & FNM_NOESCAPE)) c = *pattern++; if (c == EOS) return (RANGE_ERROR); if (c == '/' && (flags & FNM_PATHNAME)) return (RANGE_NOMATCH); if (flags & FNM_CASEFOLD) c = tolower((unsigned char)c); if (*pattern == '-' && (c2 = *(pattern+1)) != EOS && c2 != ']') { pattern += 2; if (c2 == '\\' && !(flags & FNM_NOESCAPE)) c2 = *pattern++; if (c2 == EOS) return (RANGE_ERROR); if (flags & FNM_CASEFOLD) c2 = tolower((unsigned char)c2); if ( #ifdef __HAVE_LOCALE_INFO __collate_load_error ? c <= test && test <= c2 : __collate_range_cmp(c, test) <= 0 && __collate_range_cmp(test, c2) <= 0 #else c <= test && test <= c2 #endif ) ok = 1; } else if (c == test) ok = 1; } while ((c = *pattern++) != ']'); *newp = (char *)pattern; return (ok == negate ? RANGE_NOMATCH : RANGE_MATCH); } picolibc-1.7.4/newlib/libc/posix/ftw.c000066400000000000000000000026761414576234500176340ustar00rootroot00000000000000/* * Copyright © 2005-2020 Rich Felker, et al. * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include int ftw(const char *path, int (*fn)(const char *, const struct stat *, int), int fd_limit) { /* The following cast assumes that calling a function with one * argument more than it needs behaves as expected. This is * actually undefined, but works on all real-world machines. */ return nftw(path, (int (*)())fn, fd_limit, FTW_PHYS); } picolibc-1.7.4/newlib/libc/posix/meson.build000066400000000000000000000041561414576234500210250ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2020 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # srcs_posix = [ 'basename.c', 'dirname.c', 'fnmatch.c', 'regcomp.c', 'regerror.c', 'regexec.c', 'regfree.c', ] if newlib_locale_info srcs_posix += [ 'collate.c', 'collcmp.c', ] endif srcs_posix_use = [] foreach file : srcs_posix s_file = fs.replace_suffix(file, '.S') if file in srcs_machine message('libc/posix/' + file + ': machine overrides generic') elif s_file in srcs_machine message('libc/posix/' + s_file + ': machine overrides generic') else srcs_posix_use += file endif endforeach src_posix = files(srcs_posix_use) picolibc-1.7.4/newlib/libc/posix/namespace.h000066400000000000000000000127111414576234500207640ustar00rootroot00000000000000/* * Copyright (c) 2001 Daniel Eischen . * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $FreeBSD: src/lib/libc/include/namespace.h,v 1.9 2002/03/29 22:43:42 markm Exp $ */ #ifndef _NAMESPACE_H_ #define _NAMESPACE_H_ /* * Adjust names so that headers declare "hidden" names. */ /* * ISO C (C90) section. Most names in libc aren't in ISO C, so they * should be here. Most aren't here... */ #define err _err #define warn _warn /* * Prototypes for syscalls/functions that need to be overridden * in libc_r/libpthread. */ #define accept _accept #define __acl_aclcheck_fd ___acl_aclcheck_fd #define __acl_delete_fd ___acl_delete_fd #define __acl_get_fd ___acl_get_fd #define __acl_set_fd ___acl_set_fd #define bind _bind #define __cap_get_fd ___cap_get_fd #define __cap_set_fd ___cap_set_fd #define close _close #define connect _connect #define dup _dup #define dup2 _dup2 #define execve _execve #define fcntl _fcntl /*#define flock _flock */ #define fstat _fstat #define fstatfs _fstatfs #define fsync _fsync #define getdirentries _getdirentries #define getlogin _getlogin #define getpeername _getpeername #define getprogname _getprogname #define getsockname _getsockname #define getsockopt _getsockopt #define ioctl _ioctl /* #define kevent _kevent */ #define listen _listen #define nanosleep _nanosleep #define open _open #define poll _poll #define pthread_cond_signal _pthread_cond_signal #define pthread_cond_wait _pthread_cond_wait #define pthread_cond_init _pthread_cond_init #define pthread_exit _pthread_exit #define pthread_getspecific _pthread_getspecific #define pthread_key_create _pthread_key_create #define pthread_key_delete _pthread_key_delete #define pthread_main_np _pthread_main_np #define pthread_mutex_destroy _pthread_mutex_destroy #define pthread_mutex_init _pthread_mutex_init #define pthread_mutex_lock _pthread_mutex_lock #define pthread_mutex_trylock _pthread_mutex_trylock #define pthread_mutex_unlock _pthread_mutex_unlock #define pthread_mutexattr_init _pthread_mutexattr_init #define pthread_mutexattr_destroy _pthread_mutexattr_destroy #define pthread_mutexattr_settype _pthread_mutexattr_settype #define pthread_once _pthread_once #define pthread_rwlock_init _pthread_rwlock_init #define pthread_rwlock_rdlock _pthread_rwlock_rdlock #define pthread_rwlock_wrlock _pthread_rwlock_wrlock #define pthread_rwlock_unlock _pthread_rwlock_unlock #define pthread_self _pthread_self #define pthread_setspecific _pthread_setspecific #define pthread_sigmask _pthread_sigmask #define read _read #define readv _readv #define recvfrom _recvfrom #define recvmsg _recvmsg #define select _select #define sendmsg _sendmsg #define sendto _sendto #define setsockopt _setsockopt /*#define sigaction _sigaction*/ #define sigprocmask _sigprocmask #define sigsuspend _sigsuspend #define socket _socket #define socketpair _socketpair #define wait4 _wait4 /*#define write _write*/ #define writev _writev /* * Other hidden syscalls/functions that libc_r needs to override * but are not used internally by libc. * * XXX - When modifying libc to use one of the following, remove * the prototype from below and place it in the list above. */ #if 0 #define creat _creat #define fchflags _fchflags #define fchmod _fchmod #define fpathconf _fpathconf #define msync _msync #define nfssvc _nfssvc #define pause _pause #define pthread_rwlock_destroy _pthread_rwlock_destroy #define pthread_rwlock_tryrdlock _pthread_rwlock_tryrdlock #define pthread_rwlock_trywrlock _pthread_rwlock_trywrlock #define pthread_rwlockattr_init _pthread_rwlockattr_init #define pthread_rwlockattr_destroy _pthread_rwlockattr_destroy #define sched_yield _sched_yield #define sendfile _sendfile #define shutdown _shutdown #define sigaltstack _sigaltstack #define sigpending _sigpending #define sigreturn _sigreturn #define sigsetmask _sigsetmask #define sleep _sleep #define system _system #define tcdrain _tcdrain #define wait _wait #define waitpid _waitpid #endif #endif /* _NAMESPACE_H_ */ picolibc-1.7.4/newlib/libc/posix/nftw.c000066400000000000000000000077011414576234500200040ustar00rootroot00000000000000/* * Copyright © 2005-2020 Rich Felker, et al. * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include #include #include #include #include #include #include #include /* Pull in _STDIO_WITH_THREAD_CANCELLATION_SUPPORT */ #include "../stdio/local.h" struct history { struct history *chain; dev_t dev; ino_t ino; int level; int base; }; #undef dirfd #define dirfd(d) (*(int *)d) static int do_nftw(char *path, int (*fn)(const char *, const struct stat *, int, struct FTW *), int fd_limit, int flags, struct history *h) { size_t l = strlen(path), j = l && path[l-1]=='/' ? l-1 : l; struct stat st; struct history new; int type; int r; struct FTW lev; if ((flags & FTW_PHYS) ? lstat(path, &st) : stat(path, &st) < 0) { if (!(flags & FTW_PHYS) && errno==ENOENT && !lstat(path, &st)) type = FTW_SLN; else if (errno != EACCES) return -1; else type = FTW_NS; } else if (S_ISDIR(st.st_mode)) { if (access(path, R_OK) < 0) type = FTW_DNR; else if (flags & FTW_DEPTH) type = FTW_DP; else type = FTW_D; } else if (S_ISLNK(st.st_mode)) { if (flags & FTW_PHYS) type = FTW_SL; else type = FTW_SLN; } else { type = FTW_F; } if ((flags & FTW_MOUNT) && h && st.st_dev != h->dev) return 0; new.chain = h; new.dev = st.st_dev; new.ino = st.st_ino; new.level = h ? h->level+1 : 0; new.base = j+1; lev.level = new.level; if (h) { lev.base = h->base; } else { size_t k; for (k=j; k && path[k]=='/'; k--); for (; k && path[k-1]!='/'; k--); lev.base = k; } if (!(flags & FTW_DEPTH) && (r=fn(path, &st, type, &lev))) return r; for (; h; h = h->chain) if (h->dev == st.st_dev && h->ino == st.st_ino) return 0; if ((type == FTW_D || type == FTW_DP) && fd_limit) { DIR *d = opendir(path); if (d) { struct dirent *de; while ((de = readdir(d))) { if (de->d_name[0] == '.' && (!de->d_name[1] || (de->d_name[1]=='.' && !de->d_name[2]))) continue; if (strlen(de->d_name) >= PATH_MAX-l) { errno = ENAMETOOLONG; closedir(d); return -1; } path[j]='/'; strcpy(path+j+1, de->d_name); if ((r=do_nftw(path, fn, fd_limit-1, flags, &new))) { closedir(d); return r; } } closedir(d); } else if (errno != EACCES) { return -1; } } path[l] = 0; if ((flags & FTW_DEPTH) && (r=fn(path, &st, type, &lev))) return r; return 0; } int nftw(const char *path, int (*fn)(const char *, const struct stat *, int, struct FTW *), int fd_limit, int flags) { int r, cs; size_t l; char pathbuf[PATH_MAX+1]; if (fd_limit <= 0) return 0; l = strlen(path); if (l > PATH_MAX) { errno = ENAMETOOLONG; return -1; } memcpy(pathbuf, path, l+1); #ifdef _STDIO_WITH_THREAD_CANCELLATION_SUPPORT pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); #endif r = do_nftw(pathbuf, fn, fd_limit, flags, NULL); #ifdef _STDIO_WITH_THREAD_CANCELLATION_SUPPORT pthread_setcancelstate(cs, 0); #endif return r; } picolibc-1.7.4/newlib/libc/posix/regcomp.c000066400000000000000000001367461414576234500204760ustar00rootroot00000000000000/*- * Copyright (c) 1992, 1993, 1994 Henry Spencer. * Copyright (c) 1992, 1993, 1994 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Henry Spencer. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)regcomp.c 8.5 (Berkeley) 3/20/94 */ #define _GNU_SOURCE #include #include #include #include #include #include #ifdef __HAVE_LOCALE_INFO__ #include "collate.h" #endif #include "utils.h" #include "regex2.h" #include "cclass.h" #include "cname.h" /* * parse structure, passed up and down to avoid global variables and * other clumsinesses */ struct parse { char *next; /* next character in RE */ char *end; /* end of string (-> NUL normally) */ int error; /* has an error been seen? */ sop *strip; /* malloced strip */ sopno ssize; /* malloced strip size (allocated) */ sopno slen; /* malloced strip length (used) */ int ncsalloc; /* number of csets allocated */ struct re_guts *g; # define NPAREN 10 /* we need to remember () 1-9 for back refs */ sopno pbegin[NPAREN]; /* -> ( ([0] unused) */ sopno pend[NPAREN]; /* -> ) ([0] unused) */ }; /* ========= begin header generated by ./mkh ========= */ #ifdef __cplusplus extern "C" { #endif /* === regcomp.c === */ static void p_ere(struct parse *p, int stop); static void p_ere_exp(struct parse *p); static void p_str(struct parse *p); static void p_bre(struct parse *p, int end1, int end2); static int p_simp_re(struct parse *p, int starordinary); static int p_count(struct parse *p); static void p_bracket(struct parse *p); static void p_b_term(struct parse *p, cset *cs); static void p_b_cclass(struct parse *p, cset *cs); static void p_b_eclass(struct parse *p, cset *cs); static char p_b_symbol(struct parse *p); static char p_b_coll_elem(struct parse *p, int endc); static char othercase(int ch); static void bothcases(struct parse *p, int ch); static void ordinary(struct parse *p, int ch); static void nonnewline(struct parse *p); static void repeat(struct parse *p, sopno start, int from, int to); static int seterr(struct parse *p, int e); static cset *allocset(struct parse *p); static void freeset(struct parse *p, cset *cs); static int freezeset(struct parse *p, cset *cs); static int firstch(struct parse *p, cset *cs); static int nch(struct parse *p, cset *cs); #if used static void mcadd(struct parse *p, cset *cs, char *cp); static void mcsub(cset *cs, char *cp); static int mcin(cset *cs, char *cp); static char *mcfind(cset *cs, char *cp); #endif static void mcinvert(struct parse *p, cset *cs); static void mccase(struct parse *p, cset *cs); static int isinsets(struct re_guts *g, int c); static int samesets(struct re_guts *g, int c1, int c2); static void categorize(struct parse *p, struct re_guts *g); static sopno dupl(struct parse *p, sopno start, sopno finish); static void doemit(struct parse *p, sop op, size_t opnd); static void doinsert(struct parse *p, sop op, size_t opnd, sopno pos); static void dofwd(struct parse *p, sopno pos, sop value); static void enlarge(struct parse *p, sopno size); static void stripsnug(struct parse *p, struct re_guts *g); static void findmust(struct parse *p, struct re_guts *g); static int altoffset(sop *scan, int offset, int mccs); static void computejumps(struct parse *p, struct re_guts *g); static void computematchjumps(struct parse *p, struct re_guts *g); static sopno pluscount(struct parse *p, struct re_guts *g); #ifdef __cplusplus } #endif /* ========= end header generated by ./mkh ========= */ static char nuls[10]; /* place to point scanner in event of error */ /* * macros for use with parse structure * BEWARE: these know that the parse structure is named `p' !!! */ #define PEEK() (*p->next) #define PEEK2() (*(p->next+1)) #define MORE() (p->next < p->end) #define MORE2() (p->next+1 < p->end) #define SEE(c) (MORE() && PEEK() == (c)) #define SEETWO(a, b) (MORE() && MORE2() && PEEK() == (a) && PEEK2() == (b)) #define EAT(c) ((SEE(c)) ? (NEXT(), 1) : 0) #define EATTWO(a, b) ((SEETWO(a, b)) ? (NEXT2(), 1) : 0) #define NEXT() (p->next++) #define NEXT2() (p->next += 2) #define NEXTn(n) (p->next += (n)) #define GETNEXT() (*p->next++) #define SETERROR(e) seterr(p, (e)) #define REQUIRE(co, e) ((co) || SETERROR(e)) #define MUSTSEE(c, e) (REQUIRE(MORE() && PEEK() == (c), e)) #define MUSTEAT(c, e) (REQUIRE(MORE() && GETNEXT() == (c), e)) #define MUSTNOTSEE(c, e) (REQUIRE(!MORE() || PEEK() != (c), e)) #define EMIT(op, sopnd) doemit(p, (sop)(op), (size_t)(sopnd)) #define INSERT(op, pos) doinsert(p, (sop)(op), HERE()-(pos)+1, pos) #define AHEAD(pos) dofwd(p, pos, HERE()-(pos)) #define ASTERN(sop, pos) EMIT(sop, HERE()-pos) #define HERE() (p->slen) #define THERE() (p->slen - 1) #define THERETHERE() (p->slen - 2) #define DROP(n) (p->slen -= (n)) #ifndef NDEBUG static int never = 0; /* for use in asserts; shuts lint up */ #else #define never 0 /* some s have bugs too */ #endif /* Macro used by computejump()/computematchjump() */ #define MIN(a,b) ((a)<(b)?(a):(b)) /* - regcomp - interface for parser and compilation = extern int regcomp(regex_t *__restrict, const char *__restrict, int); = #define REG_BASIC 0000 = #define REG_EXTENDED 0001 = #define REG_ICASE 0002 = #define REG_NOSUB 0004 = #define REG_NEWLINE 0010 = #define REG_NOSPEC 0020 = #define REG_PEND 0040 = #define REG_DUMP 0200 */ int /* 0 success, otherwise REG_something */ regcomp(regex_t *__restrict preg, const char *__restrict pattern, int cflags) { struct parse pa; struct re_guts *g; struct parse *p = &pa; int i; size_t len; #ifdef REDEBUG # define GOODFLAGS(f) (f) #else # define GOODFLAGS(f) ((f)&~REG_DUMP) #endif cflags = GOODFLAGS(cflags); if ((cflags®_EXTENDED) && (cflags®_NOSPEC)) return(REG_INVARG); if (cflags®_PEND) { if (preg->re_endp < pattern) return(REG_INVARG); len = preg->re_endp - pattern; } else len = strlen((char *)pattern); /* do the mallocs early so failure handling is easy */ g = (struct re_guts *)malloc(sizeof(struct re_guts) + (NC-1)*sizeof(cat_t)); if (g == NULL) return(REG_ESPACE); p->ssize = len/(size_t)2*(size_t)3 + (size_t)1; /* ugh */ p->strip = (sop *)malloc(p->ssize * sizeof(sop)); p->slen = 0; if (p->strip == NULL) { free((char *)g); return(REG_ESPACE); } /* set things up */ p->g = g; p->next = (char *)pattern; /* convenience; we do not modify it */ p->end = p->next + len; p->error = 0; p->ncsalloc = 0; for (i = 0; i < NPAREN; i++) { p->pbegin[i] = 0; p->pend[i] = 0; } g->csetsize = NC; g->sets = NULL; g->setbits = NULL; g->ncsets = 0; g->cflags = cflags; g->iflags = 0; g->nbol = 0; g->neol = 0; g->must = NULL; g->moffset = -1; g->charjump = NULL; g->matchjump = NULL; g->mlen = 0; g->nsub = 0; g->ncategories = 1; /* category 0 is "everything else" */ g->categories = &g->catspace[-(CHAR_MIN)]; (void) memset((char *)g->catspace, 0, NC*sizeof(cat_t)); g->backrefs = 0; /* do it */ EMIT(OEND, 0); g->firststate = THERE(); if (cflags®_EXTENDED) p_ere(p, OUT); else if (cflags®_NOSPEC) p_str(p); else p_bre(p, OUT, OUT); EMIT(OEND, 0); g->laststate = THERE(); /* tidy up loose ends and fill things in */ categorize(p, g); stripsnug(p, g); findmust(p, g); /* only use Boyer-Moore algorithm if the pattern is bigger * than three characters */ if(g->mlen > 3) { computejumps(p, g); computematchjumps(p, g); if(g->matchjump == NULL && g->charjump != NULL) { free(g->charjump); g->charjump = NULL; } } g->nplus = pluscount(p, g); g->magic = MAGIC2; preg->re_nsub = g->nsub; preg->re_g = g; preg->re_magic = MAGIC1; #ifndef REDEBUG /* not debugging, so can't rely on the assert() in regexec() */ if (g->iflags&BAD) SETERROR(REG_ASSERT); #endif /* win or lose, we're done */ if (p->error != 0) /* lose */ regfree(preg); return(p->error); } /* - p_ere - ERE parser top level, concatenation and alternation == static void p_ere(struct parse *p, int stop); */ static void p_ere(struct parse *p, int stop) /* character this ERE should end at */ { char c; sopno prevback = 0; sopno prevfwd = 0; sopno conc; int first = 1; /* is this the first alternative? */ for (;;) { /* do a bunch of concatenated expressions */ conc = HERE(); while (MORE() && (c = PEEK()) != '|' && c != stop) p_ere_exp(p); (void)REQUIRE(HERE() != conc, REG_EMPTY); /* require nonempty */ if (!EAT('|')) break; /* NOTE BREAK OUT */ if (first) { INSERT(OCH_, conc); /* offset is wrong */ prevfwd = conc; prevback = conc; first = 0; } ASTERN(OOR1, prevback); prevback = THERE(); AHEAD(prevfwd); /* fix previous offset */ prevfwd = HERE(); EMIT(OOR2, 0); /* offset is very wrong */ } if (!first) { /* tail-end fixups */ AHEAD(prevfwd); ASTERN(O_CH, prevback); } assert(!MORE() || SEE(stop)); } /* - p_ere_exp - parse one subERE, an atom possibly followed by a repetition op == static void p_ere_exp(struct parse *p); */ static void p_ere_exp(struct parse *p) { char c; sopno pos; int count; int count2; sopno subno; int wascaret = 0; assert(MORE()); /* caller should have ensured this */ c = GETNEXT(); pos = HERE(); switch (c) { case '(': (void)REQUIRE(MORE(), REG_EPAREN); p->g->nsub++; subno = p->g->nsub; if (subno < NPAREN) p->pbegin[subno] = HERE(); EMIT(OLPAREN, subno); if (!SEE(')')) p_ere(p, ')'); if (subno < NPAREN) { p->pend[subno] = HERE(); assert(p->pend[subno] != 0); } EMIT(ORPAREN, subno); (void)MUSTEAT(')', REG_EPAREN); break; #ifndef POSIX_MISTAKE case ')': /* happens only if no current unmatched ( */ /* * You may ask, why the ifndef? Because I didn't notice * this until slightly too late for 1003.2, and none of the * other 1003.2 regular-expression reviewers noticed it at * all. So an unmatched ) is legal POSIX, at least until * we can get it fixed. */ SETERROR(REG_EPAREN); break; #endif case '^': EMIT(OBOL, 0); p->g->iflags |= USEBOL; p->g->nbol++; wascaret = 1; break; case '$': EMIT(OEOL, 0); p->g->iflags |= USEEOL; p->g->neol++; break; case '|': SETERROR(REG_EMPTY); break; case '*': case '+': case '?': SETERROR(REG_BADRPT); break; case '.': if (p->g->cflags®_NEWLINE) nonnewline(p); else EMIT(OANY, 0); break; case '[': p_bracket(p); break; case '\\': (void)REQUIRE(MORE(), REG_EESCAPE); c = GETNEXT(); ordinary(p, c); break; case '{': /* okay as ordinary except if digit follows */ (void)REQUIRE(!MORE() || !isdigit((uch)PEEK()), REG_BADRPT); FALLTHROUGH; default: ordinary(p, c); break; } if (!MORE()) return; c = PEEK(); /* we call { a repetition if followed by a digit */ if (!( c == '*' || c == '+' || c == '?' || (c == '{' && MORE2() && isdigit((uch)PEEK2())) )) return; /* no repetition, we're done */ NEXT(); (void)REQUIRE(!wascaret, REG_BADRPT); switch (c) { case '*': /* implemented as +? */ /* this case does not require the (y|) trick, noKLUDGE */ INSERT(OPLUS_, pos); ASTERN(O_PLUS, pos); INSERT(OQUEST_, pos); ASTERN(O_QUEST, pos); break; case '+': INSERT(OPLUS_, pos); ASTERN(O_PLUS, pos); break; case '?': /* KLUDGE: emit y? as (y|) until subtle bug gets fixed */ INSERT(OCH_, pos); /* offset slightly wrong */ ASTERN(OOR1, pos); /* this one's right */ AHEAD(pos); /* fix the OCH_ */ EMIT(OOR2, 0); /* offset very wrong... */ AHEAD(THERE()); /* ...so fix it */ ASTERN(O_CH, THERETHERE()); break; case '{': count = p_count(p); if (EAT(',')) { if (isdigit((uch)PEEK())) { count2 = p_count(p); (void)REQUIRE(count <= count2, REG_BADBR); } else /* single number with comma */ count2 = INFINITY; } else /* just a single number */ count2 = count; repeat(p, pos, count, count2); if (!EAT('}')) { /* error heuristics */ while (MORE() && PEEK() != '}') NEXT(); (void)REQUIRE(MORE(), REG_EBRACE); SETERROR(REG_BADBR); } break; } if (!MORE()) return; c = PEEK(); if (!( c == '*' || c == '+' || c == '?' || (c == '{' && MORE2() && isdigit((uch)PEEK2())) ) ) return; SETERROR(REG_BADRPT); } /* - p_str - string (no metacharacters) "parser" == static void p_str(struct parse *p); */ static void p_str(struct parse *p) { (void)REQUIRE(MORE(), REG_EMPTY); while (MORE()) ordinary(p, GETNEXT()); } /* - p_bre - BRE parser top level, anchoring and concatenation == static void p_bre(struct parse *p, int end1, \ == int end2); * Giving end1 as OUT essentially eliminates the end1/end2 check. * * This implementation is a bit of a kludge, in that a trailing $ is first * taken as an ordinary character and then revised to be an anchor. The * only undesirable side effect is that '$' gets included as a character * category in such cases. This is fairly harmless; not worth fixing. * The amount of lookahead needed to avoid this kludge is excessive. */ static void p_bre(struct parse *p, int end1, /* first terminating character */ int end2) /* second terminating character */ { sopno start = HERE(); int first = 1; /* first subexpression? */ int wasdollar = 0; if (EAT('^')) { EMIT(OBOL, 0); p->g->iflags |= USEBOL; p->g->nbol++; } while (MORE() && !SEETWO(end1, end2)) { wasdollar = p_simp_re(p, first); first = 0; } if (wasdollar) { /* oops, that was a trailing anchor */ DROP(1); EMIT(OEOL, 0); p->g->iflags |= USEEOL; p->g->neol++; } (void)REQUIRE(HERE() != start, REG_EMPTY); /* require nonempty */ } /* - p_simp_re - parse a simple RE, an atom possibly followed by a repetition == static int p_simp_re(struct parse *p, int starordinary); */ static int /* was the simple RE an unbackslashed $? */ p_simp_re(struct parse *p, int starordinary) /* is a leading * an ordinary character? */ { int c; int count; int count2; sopno pos; int i; sopno subno; # define BACKSL (1<g->cflags®_NEWLINE) nonnewline(p); else EMIT(OANY, 0); break; case '[': p_bracket(p); break; case BACKSL|'{': SETERROR(REG_BADRPT); break; case BACKSL|'(': p->g->nsub++; subno = p->g->nsub; if (subno < NPAREN) p->pbegin[subno] = HERE(); EMIT(OLPAREN, subno); /* the MORE here is an error heuristic */ if (MORE() && !SEETWO('\\', ')')) p_bre(p, '\\', ')'); if (subno < NPAREN) { p->pend[subno] = HERE(); assert(p->pend[subno] != 0); } EMIT(ORPAREN, subno); (void)REQUIRE(EATTWO('\\', ')'), REG_EPAREN); break; case BACKSL|')': /* should not get here -- must be user */ case BACKSL|'}': SETERROR(REG_EPAREN); break; case BACKSL|'1': case BACKSL|'2': case BACKSL|'3': case BACKSL|'4': case BACKSL|'5': case BACKSL|'6': case BACKSL|'7': case BACKSL|'8': case BACKSL|'9': i = (c&~BACKSL) - '0'; assert(i < NPAREN); if (p->pend[i] != 0) { assert(i <= p->g->nsub); EMIT(OBACK_, i); assert(p->pbegin[i] != 0); assert(OP(p->strip[p->pbegin[i]]) == OLPAREN); assert(OP(p->strip[p->pend[i]]) == ORPAREN); (void) dupl(p, p->pbegin[i]+1, p->pend[i]); EMIT(O_BACK, i); } else SETERROR(REG_ESUBREG); p->g->backrefs = 1; break; case '*': (void)REQUIRE(starordinary, REG_BADRPT); FALLTHROUGH; default: ordinary(p, (char)c); break; } if (EAT('*')) { /* implemented as +? */ /* this case does not require the (y|) trick, noKLUDGE */ INSERT(OPLUS_, pos); ASTERN(O_PLUS, pos); INSERT(OQUEST_, pos); ASTERN(O_QUEST, pos); } else if (EATTWO('\\', '{')) { count = p_count(p); if (EAT(',')) { if (MORE() && isdigit((uch)PEEK())) { count2 = p_count(p); (void)REQUIRE(count <= count2, REG_BADBR); } else /* single number with comma */ count2 = INFINITY; } else /* just a single number */ count2 = count; repeat(p, pos, count, count2); if (!EATTWO('\\', '}')) { /* error heuristics */ while (MORE() && !SEETWO('\\', '}')) NEXT(); (void)REQUIRE(MORE(), REG_EBRACE); SETERROR(REG_BADBR); } } else if (c == '$') /* $ (but not \$) ends it */ return(1); return(0); } /* - p_count - parse a repetition count == static int p_count(struct parse *p); */ static int /* the value */ p_count(struct parse *p) { int count = 0; int ndigits = 0; while (MORE() && isdigit((uch)PEEK()) && count <= DUPMAX) { count = count*10 + (GETNEXT() - '0'); ndigits++; } (void)REQUIRE(ndigits > 0 && count <= DUPMAX, REG_BADBR); return(count); } /* - p_bracket - parse a bracketed character list == static void p_bracket(struct parse *p); * * Note a significant property of this code: if the allocset() did SETERROR, * no set operations are done. */ static void p_bracket(struct parse *p) { cset *cs = allocset(p); int invert = 0; /* Dept of Truly Sickening Special-Case Kludges */ if (p->next + 5 < p->end && strncmp(p->next, "[:<:]]", 6) == 0) { EMIT(OBOW, 0); NEXTn(6); return; } if (p->next + 5 < p->end && strncmp(p->next, "[:>:]]", 6) == 0) { EMIT(OEOW, 0); NEXTn(6); return; } if (EAT('^')) invert++; /* make note to invert set at end */ if (EAT(']')) CHadd(cs, ']'); else if (EAT('-')) CHadd(cs, '-'); while (MORE() && PEEK() != ']' && !SEETWO('-', ']')) p_b_term(p, cs); if (EAT('-')) CHadd(cs, '-'); (void)MUSTEAT(']', REG_EBRACK); if (p->error != 0) /* don't mess things up further */ return; if (p->g->cflags®_ICASE) { int i; int ci; for (i = p->g->csetsize - 1; i >= 0; i--) if (CHIN(cs, i) && isalpha(i)) { ci = othercase(i); if (ci != i) CHadd(cs, ci); } if (cs->multis != NULL) mccase(p, cs); } if (invert) { int i; for (i = p->g->csetsize - 1; i >= 0; i--) if (CHIN(cs, i)) CHsub(cs, i); else CHadd(cs, i); if (p->g->cflags®_NEWLINE) CHsub(cs, '\n'); if (cs->multis != NULL) mcinvert(p, cs); } assert(cs->multis == NULL); /* xxx */ if (nch(p, cs) == 1) { /* optimize singleton sets */ ordinary(p, firstch(p, cs)); freeset(p, cs); } else EMIT(OANYOF, freezeset(p, cs)); } /* - p_b_term - parse one term of a bracketed character list == static void p_b_term(struct parse *p, cset *cs); */ static void p_b_term(struct parse *p, cset *cs) { char c; char start, finish; int i; /* classify what we've got */ switch ((MORE()) ? PEEK() : '\0') { case '[': c = (MORE2()) ? PEEK2() : '\0'; break; case '-': SETERROR(REG_ERANGE); return; /* NOTE RETURN */ break; default: c = '\0'; break; } switch (c) { case ':': /* character class */ NEXT2(); (void)REQUIRE(MORE(), REG_EBRACK); c = PEEK(); (void)REQUIRE(c != '-' && c != ']', REG_ECTYPE); p_b_cclass(p, cs); (void)REQUIRE(MORE(), REG_EBRACK); (void)REQUIRE(EATTWO(':', ']'), REG_ECTYPE); break; case '=': /* equivalence class */ NEXT2(); (void)REQUIRE(MORE(), REG_EBRACK); c = PEEK(); (void)REQUIRE(c != '-' && c != ']', REG_ECOLLATE); p_b_eclass(p, cs); (void)REQUIRE(MORE(), REG_EBRACK); (void)REQUIRE(EATTWO('=', ']'), REG_ECOLLATE); break; default: /* symbol, ordinary character, or range */ /* xxx revision needed for multichar stuff */ start = p_b_symbol(p); if (SEE('-') && MORE2() && PEEK2() != ']') { /* range */ NEXT(); if (EAT('-')) finish = '-'; else finish = p_b_symbol(p); } else finish = start; if (start == finish) CHadd(cs, start); else { #ifdef __HAVE_LOCALE_INFO__ if (__collate_load_error) { #endif (void)REQUIRE((uch)start <= (uch)finish, REG_ERANGE); for (i = (uch)start; i <= (uch)finish; i++) CHadd(cs, i); #ifdef __HAVE_LOCALE_INFO__ } else { (void)REQUIRE(__collate_range_cmp(start, finish) <= 0, REG_ERANGE); for (i = CHAR_MIN; i <= CHAR_MAX; i++) { if ( __collate_range_cmp(start, i) <= 0 && __collate_range_cmp(i, finish) <= 0 ) CHadd(cs, i); } } #endif } break; } } /* - p_b_cclass - parse a character-class name and deal with it == static void p_b_cclass(struct parse *p, cset *cs); */ static void p_b_cclass(struct parse *p, cset *cs) { int c; char *sp = p->next; struct cclass *cp; size_t len; while (MORE() && isalpha((uch)PEEK())) NEXT(); len = p->next - sp; for (cp = cclasses; cp->name != NULL; cp++) if (strncmp(cp->name, sp, len) == 0 && cp->name[len] == '\0') break; if (cp->name == NULL) { /* oops, didn't find it */ SETERROR(REG_ECTYPE); return; } switch (cp->fidx) { case CALNUM: for (c = CHAR_MIN; c <= CHAR_MAX; c++) if (isalnum((uch)c)) CHadd(cs, c); break; case CALPHA: for (c = CHAR_MIN; c <= CHAR_MAX; c++) if (isalpha((uch)c)) CHadd(cs, c); break; case CBLANK: for (c = CHAR_MIN; c <= CHAR_MAX; c++) if (isblank((uch)c)) CHadd(cs, c); break; case CCNTRL: for (c = CHAR_MIN; c <= CHAR_MAX; c++) if (iscntrl((uch)c)) CHadd(cs, c); break; case CDIGIT: for (c = CHAR_MIN; c <= CHAR_MAX; c++) if (isdigit((uch)c)) CHadd(cs, c); break; case CGRAPH: for (c = CHAR_MIN; c <= CHAR_MAX; c++) if (isgraph((uch)c)) CHadd(cs, c); break; case CLOWER: for (c = CHAR_MIN; c <= CHAR_MAX; c++) if (islower((uch)c)) CHadd(cs, c); break; case CPRINT: for (c = CHAR_MIN; c <= CHAR_MAX; c++) if (isprint((uch)c)) CHadd(cs, c); break; case CPUNCT: for (c = CHAR_MIN; c <= CHAR_MAX; c++) if (ispunct((uch)c)) CHadd(cs, c); break; case CSPACE: for (c = CHAR_MIN; c <= CHAR_MAX; c++) if (isspace((uch)c)) CHadd(cs, c); break; case CUPPER: for (c = CHAR_MIN; c <= CHAR_MAX; c++) if (isupper((uch)c)) CHadd(cs, c); break; case CXDIGIT: for (c = CHAR_MIN; c <= CHAR_MAX; c++) if (isxdigit((uch)c)) CHadd(cs, c); break; } #if 0 for (u = cp->multis; *u != '\0'; u += strlen(u) + 1) MCadd(p, cs, u); #endif } /* - p_b_eclass - parse an equivalence-class name and deal with it == static void p_b_eclass(struct parse *p, cset *cs); * * This implementation is incomplete. xxx */ static void p_b_eclass(struct parse *p, cset *cs) { char c; c = p_b_coll_elem(p, '='); CHadd(cs, c); } /* - p_b_symbol - parse a character or [..]ed multicharacter collating symbol == static char p_b_symbol(struct parse *p); */ static char /* value of symbol */ p_b_symbol(struct parse *p) { char value; (void)REQUIRE(MORE(), REG_EBRACK); if (!EATTWO('[', '.')) return(GETNEXT()); /* collating symbol */ value = p_b_coll_elem(p, '.'); (void)REQUIRE(EATTWO('.', ']'), REG_ECOLLATE); return(value); } /* - p_b_coll_elem - parse a collating-element name and look it up == static char p_b_coll_elem(struct parse *p, int endc); */ static char /* value of collating element */ p_b_coll_elem(struct parse *p, int endc) /* name ended by endc,']' */ { char *sp = p->next; struct cname *cp; int len; while (MORE() && !SEETWO(endc, ']')) NEXT(); if (!MORE()) { SETERROR(REG_EBRACK); return(0); } len = p->next - sp; for (cp = cnames; cp->name != NULL; cp++) if (strncmp(cp->name, sp, len) == 0 && cp->name[len] == '\0') return(cp->code); /* known name */ if (len == 1) return(*sp); /* single character */ SETERROR(REG_ECOLLATE); /* neither */ return(0); } /* - othercase - return the case counterpart of an alphabetic == static char othercase(int ch); */ static char /* if no counterpart, return ch */ othercase(int ch) { ch = (uch)ch; assert(isalpha(ch)); if (isupper(ch)) return(tolower(ch)); else if (islower(ch)) return(toupper(ch)); else /* peculiar, but could happen */ return(ch); } /* - bothcases - emit a dualcase version of a two-case character == static void bothcases(struct parse *p, int ch); * * Boy, is this implementation ever a kludge... */ static void bothcases(struct parse *p, int ch) { char *oldnext = p->next; char *oldend = p->end; char bracket[3]; ch = (uch)ch; assert(othercase(ch) != ch); /* p_bracket() would recurse */ p->next = bracket; p->end = bracket+2; bracket[0] = ch; bracket[1] = ']'; bracket[2] = '\0'; p_bracket(p); assert(p->next == bracket+2); p->next = oldnext; p->end = oldend; } /* - ordinary - emit an ordinary character == static void ordinary(struct parse *p, int ch); */ static void ordinary(struct parse *p, int ch) { cat_t *cap = p->g->categories; if ((p->g->cflags®_ICASE) && isalpha((uch)ch) && othercase(ch) != ch) bothcases(p, ch); else { EMIT(OCHAR, (uch)ch); if (cap[ch] == 0) cap[ch] = p->g->ncategories++; } } /* - nonnewline - emit REG_NEWLINE version of OANY == static void nonnewline(struct parse *p); * * Boy, is this implementation ever a kludge... */ static void nonnewline(struct parse *p) { char *oldnext = p->next; char *oldend = p->end; char bracket[4]; p->next = bracket; p->end = bracket+3; bracket[0] = '^'; bracket[1] = '\n'; bracket[2] = ']'; bracket[3] = '\0'; p_bracket(p); assert(p->next == bracket+3); p->next = oldnext; p->end = oldend; } /* - repeat - generate code for a bounded repetition, recursively if needed == static void repeat(struct parse *p, sopno start, int from, int to); */ static void repeat(struct parse *p, sopno start, /* operand from here to end of strip */ int from, /* repeated from this number */ int to) /* to this number of times (maybe INFINITY) */ { sopno finish = HERE(); # define N 2 # define INF 3 # define REP(f, t) ((f)*8 + (t)) # define MAP(n) (((n) <= 1) ? (n) : ((n) == INFINITY) ? INF : N) sopno copy; if (p->error != 0) /* head off possible runaway recursion */ return; assert(from <= to); switch (REP(MAP(from), MAP(to))) { case REP(0, 0): /* must be user doing this */ DROP(finish-start); /* drop the operand */ break; case REP(0, 1): /* as x{1,1}? */ case REP(0, N): /* as x{1,n}? */ case REP(0, INF): /* as x{1,}? */ /* KLUDGE: emit y? as (y|) until subtle bug gets fixed */ INSERT(OCH_, start); /* offset is wrong... */ repeat(p, start+1, 1, to); ASTERN(OOR1, start); AHEAD(start); /* ... fix it */ EMIT(OOR2, 0); AHEAD(THERE()); ASTERN(O_CH, THERETHERE()); break; case REP(1, 1): /* trivial case */ /* done */ break; case REP(1, N): /* as x?x{1,n-1} */ /* KLUDGE: emit y? as (y|) until subtle bug gets fixed */ INSERT(OCH_, start); ASTERN(OOR1, start); AHEAD(start); EMIT(OOR2, 0); /* offset very wrong... */ AHEAD(THERE()); /* ...so fix it */ ASTERN(O_CH, THERETHERE()); copy = dupl(p, start+1, finish+1); assert(copy == finish+4); repeat(p, copy, 1, to-1); break; case REP(1, INF): /* as x+ */ INSERT(OPLUS_, start); ASTERN(O_PLUS, start); break; case REP(N, N): /* as xx{m-1,n-1} */ copy = dupl(p, start, finish); repeat(p, copy, from-1, to-1); break; case REP(N, INF): /* as xx{n-1,INF} */ copy = dupl(p, start, finish); repeat(p, copy, from-1, to); break; default: /* "can't happen" */ SETERROR(REG_ASSERT); /* just in case */ break; } } /* - seterr - set an error condition == static int seterr(struct parse *p, int e); */ static int /* useless but makes type checking happy */ seterr(struct parse *p, int e) { if (p->error == 0) /* keep earliest error condition */ p->error = e; p->next = nuls; /* try to bring things to a halt */ p->end = nuls; return(0); /* make the return value well-defined */ } /* - allocset - allocate a set of characters for [] == static cset *allocset(struct parse *p); */ static cset * allocset(struct parse *p) { int no = p->g->ncsets++; size_t nc; size_t nbytes; cset *cs; size_t css = (size_t)p->g->csetsize; int i; if (no >= p->ncsalloc) { /* need another column of space */ p->ncsalloc += CHAR_BIT; nc = p->ncsalloc; assert(nc % CHAR_BIT == 0); nbytes = nc / CHAR_BIT * css; if (p->g->sets == NULL) p->g->sets = (cset *)malloc(nc * sizeof(cset)); else p->g->sets = (cset *)reallocf((char *)p->g->sets, nc * sizeof(cset)); if (p->g->setbits == NULL) p->g->setbits = (uch *)malloc(nbytes); else { p->g->setbits = (uch *)reallocf((char *)p->g->setbits, nbytes); /* xxx this isn't right if setbits is now NULL */ for (i = 0; i < no; i++) p->g->sets[i].ptr = p->g->setbits + css*(i/CHAR_BIT); } if (p->g->sets != NULL && p->g->setbits != NULL) (void) memset((char *)p->g->setbits + (nbytes - css), 0, css); else { no = 0; SETERROR(REG_ESPACE); /* caller's responsibility not to do set ops */ } } assert(p->g->sets != NULL); /* xxx */ cs = &p->g->sets[no]; cs->ptr = p->g->setbits + css*((no)/CHAR_BIT); cs->mask = 1 << ((no) % CHAR_BIT); cs->hash = 0; cs->smultis = 0; cs->multis = NULL; return(cs); } /* - freeset - free a now-unused set == static void freeset(struct parse *p, cset *cs); */ static void freeset(struct parse *p, cset *cs) { size_t i; cset *top = &p->g->sets[p->g->ncsets]; size_t css = (size_t)p->g->csetsize; for (i = 0; i < css; i++) CHsub(cs, i); if (cs == top-1) /* recover only the easy case */ p->g->ncsets--; } /* - freezeset - final processing on a set of characters == static int freezeset(struct parse *p, cset *cs); * * The main task here is merging identical sets. This is usually a waste * of time (although the hash code minimizes the overhead), but can win * big if REG_ICASE is being used. REG_ICASE, by the way, is why the hash * is done using addition rather than xor -- all ASCII [aA] sets xor to * the same value! */ static int /* set number */ freezeset(struct parse *p, cset *cs) { short h = cs->hash; size_t i; cset *top = &p->g->sets[p->g->ncsets]; cset *cs2; size_t css = (size_t)p->g->csetsize; /* look for an earlier one which is the same */ for (cs2 = &p->g->sets[0]; cs2 < top; cs2++) if (cs2->hash == h && cs2 != cs) { /* maybe */ for (i = 0; i < css; i++) if (!!CHIN(cs2, i) != !!CHIN(cs, i)) break; /* no */ if (i == css) break; /* yes */ } if (cs2 < top) { /* found one */ freeset(p, cs); cs = cs2; } return((int)(cs - p->g->sets)); } /* - firstch - return first character in a set (which must have at least one) == static int firstch(struct parse *p, cset *cs); */ static int /* character; there is no "none" value */ firstch(struct parse *p, cset *cs) { size_t i; size_t css = (size_t)p->g->csetsize; for (i = 0; i < css; i++) if (CHIN(cs, i)) return((char)i); assert(never); return(0); /* arbitrary */ } /* - nch - number of characters in a set == static int nch(struct parse *p, cset *cs); */ static int nch(struct parse *p, cset *cs) { size_t i; size_t css = (size_t)p->g->csetsize; int n = 0; for (i = 0; i < css; i++) if (CHIN(cs, i)) n++; return(n); } #if used /* - mcadd - add a collating element to a cset == static void mcadd(struct parse *p, cset *cs, \ == char *cp); */ static void mcadd(struct parse *p, cset *cs, char *cp) { size_t oldend = cs->smultis; cs->smultis += strlen(cp) + 1; if (cs->multis == NULL) cs->multis = malloc(cs->smultis); else cs->multis = reallocf(cs->multis, cs->smultis); if (cs->multis == NULL) { SETERROR(REG_ESPACE); return; } (void) strcpy(cs->multis + oldend - 1, cp); cs->multis[cs->smultis - 1] = '\0'; } /* - mcsub - subtract a collating element from a cset == static void mcsub(cset *cs, char *cp); */ static void mcsub(cset *cs, char *cp) { char *fp = mcfind(cs, cp); size_t len = strlen(fp); assert(fp != NULL); (void) memmove(fp, fp + len + 1, cs->smultis - (fp + len + 1 - cs->multis)); cs->smultis -= len; if (cs->smultis == 0) { free(cs->multis); cs->multis = NULL; return; } cs->multis = reallocf(cs->multis, cs->smultis); assert(cs->multis != NULL); } /* - mcin - is a collating element in a cset? == static int mcin(cset *cs, char *cp); */ static int mcin(cset *cs, char *cp) { return(mcfind(cs, cp) != NULL); } /* - mcfind - find a collating element in a cset == static char *mcfind(cset *cs, char *cp); */ static char * mcfind(cset *cs, char *cp) { char *p; if (cs->multis == NULL) return(NULL); for (p = cs->multis; *p != '\0'; p += strlen(p) + 1) if (strcmp(cp, p) == 0) return(p); return(NULL); } #endif /* - mcinvert - invert the list of collating elements in a cset == static void mcinvert(struct parse *p, cset *cs); * * This would have to know the set of possibilities. Implementation * is deferred. */ static void mcinvert(struct parse *p, cset *cs) { (void) p; (void) cs; assert(cs->multis == NULL); /* xxx */ } /* - mccase - add case counterparts of the list of collating elements in a cset == static void mccase(struct parse *p, cset *cs); * * This would have to know the set of possibilities. Implementation * is deferred. */ static void mccase(struct parse *p, cset *cs) { (void) p; (void) cs; assert(cs->multis == NULL); /* xxx */ } /* - isinsets - is this character in any sets? == static int isinsets(struct re_guts *g, int c); */ static int /* predicate */ isinsets(struct re_guts *g, int c) { uch *col; int i; int ncols = (g->ncsets+(CHAR_BIT-1)) / CHAR_BIT; unsigned uc = (uch)c; for (i = 0, col = g->setbits; i < ncols; i++, col += g->csetsize) if (col[uc] != 0) return(1); return(0); } /* - samesets - are these two characters in exactly the same sets? == static int samesets(struct re_guts *g, int c1, int c2); */ static int /* predicate */ samesets(struct re_guts *g, int c1, int c2) { uch *col; int i; int ncols = (g->ncsets+(CHAR_BIT-1)) / CHAR_BIT; unsigned uc1 = (uch)c1; unsigned uc2 = (uch)c2; for (i = 0, col = g->setbits; i < ncols; i++, col += g->csetsize) if (col[uc1] != col[uc2]) return(0); return(1); } /* - categorize - sort out character categories == static void categorize(struct parse *p, struct re_guts *g); */ static void categorize(struct parse *p, struct re_guts *g) { cat_t *cats = g->categories; int c; int c2; cat_t cat; /* avoid making error situations worse */ if (p->error != 0) return; for (c = CHAR_MIN; c <= CHAR_MAX; c++) if (cats[c] == 0 && isinsets(g, c)) { cat = g->ncategories++; cats[c] = cat; for (c2 = c+1; c2 <= CHAR_MAX; c2++) if (cats[c2] == 0 && samesets(g, c, c2)) cats[c2] = cat; } } /* - dupl - emit a duplicate of a bunch of sops == static sopno dupl(struct parse *p, sopno start, sopno finish); */ static sopno /* start of duplicate */ dupl(struct parse *p, sopno start, /* from here */ sopno finish) /* to this less one */ { sopno ret = HERE(); sopno len = finish - start; assert(finish >= start); if (len == 0) return(ret); enlarge(p, p->ssize + len); /* this many unexpected additions */ assert(p->ssize >= p->slen + len); (void) memcpy((char *)(p->strip + p->slen), (char *)(p->strip + start), (size_t)len*sizeof(sop)); p->slen += len; return(ret); } /* - doemit - emit a strip operator == static void doemit(struct parse *p, sop op, size_t opnd); * * It might seem better to implement this as a macro with a function as * hard-case backup, but it's just too big and messy unless there are * some changes to the data structures. Maybe later. */ static void doemit(struct parse *p, sop op, size_t opnd) { /* avoid making error situations worse */ if (p->error != 0) return; /* deal with oversize operands ("can't happen", more or less) */ assert(opnd < 1<slen >= p->ssize) enlarge(p, (p->ssize+1) / 2 * 3); /* +50% */ assert(p->slen < p->ssize); /* finally, it's all reduced to the easy case */ p->strip[p->slen++] = SOP(op, opnd); } /* - doinsert - insert a sop into the strip == static void doinsert(struct parse *p, sop op, size_t opnd, sopno pos); */ static void doinsert(struct parse *p, sop op, size_t opnd, sopno pos) { sopno sn; sop s; int i; /* avoid making error situations worse */ if (p->error != 0) return; sn = HERE(); EMIT(op, opnd); /* do checks, ensure space */ assert(HERE() == sn+1); s = p->strip[sn]; /* adjust paren pointers */ assert(pos > 0); for (i = 1; i < NPAREN; i++) { if (p->pbegin[i] >= pos) { p->pbegin[i]++; } if (p->pend[i] >= pos) { p->pend[i]++; } } memmove((char *)&p->strip[pos+1], (char *)&p->strip[pos], (HERE()-pos-1)*sizeof(sop)); p->strip[pos] = s; } /* - dofwd - complete a forward reference == static void dofwd(struct parse *p, sopno pos, sop value); */ static void dofwd(struct parse *p, sopno pos, sop value) { /* avoid making error situations worse */ if (p->error != 0) return; assert(value < 1<strip[pos] = OP(p->strip[pos]) | value; } /* - enlarge - enlarge the strip == static void enlarge(struct parse *p, sopno size); */ static void enlarge(struct parse *p, sopno size) { sop *sp; if (p->ssize >= size) return; sp = (sop *)realloc(p->strip, size*sizeof(sop)); if (sp == NULL) { SETERROR(REG_ESPACE); return; } p->strip = sp; p->ssize = size; } /* - stripsnug - compact the strip == static void stripsnug(struct parse *p, struct re_guts *g); */ static void stripsnug(struct parse *p, struct re_guts *g) { g->nstates = p->slen; g->strip = (sop *)realloc((char *)p->strip, p->slen * sizeof(sop)); if (g->strip == NULL) { SETERROR(REG_ESPACE); g->strip = p->strip; } } /* - findmust - fill in must and mlen with longest mandatory literal string == static void findmust(struct parse *p, struct re_guts *g); * * This algorithm could do fancy things like analyzing the operands of | * for common subsequences. Someday. This code is simple and finds most * of the interesting cases. * * Note that must and mlen got initialized during setup. */ static void findmust(struct parse *p, struct re_guts *g) { sop *scan; sop *start = NULL; sop *newstart = NULL; sopno newlen; sop s; char *cp; sopno i; int offset; int cs, mccs; /* avoid making error situations worse */ if (p->error != 0) return; /* Find out if we can handle OANYOF or not */ mccs = 0; for (cs = 0; cs < g->ncsets; cs++) if (g->sets[cs].multis != NULL) mccs = 1; /* find the longest OCHAR sequence in strip */ newlen = 0; offset = 0; g->moffset = 0; scan = g->strip + 1; do { s = *scan++; switch (OP(s)) { case OCHAR: /* sequence member */ if (newlen == 0) /* new sequence */ newstart = scan - 1; newlen++; break; case OPLUS_: /* things that don't break one */ case OLPAREN: case ORPAREN: break; case OQUEST_: /* things that must be skipped */ case OCH_: offset = altoffset(scan, offset, mccs); scan--; do { scan += OPND(s); s = *scan; /* assert() interferes w debug printouts */ if (OP(s) != O_QUEST && OP(s) != O_CH && OP(s) != OOR2) { g->iflags |= BAD; return; } } while (OP(s) != O_QUEST && OP(s) != O_CH); FALLTHROUGH; case OBOW: /* things that break a sequence */ case OEOW: case OBOL: case OEOL: case O_QUEST: case O_CH: case OEND: if (newlen > g->mlen) { /* ends one */ start = newstart; g->mlen = newlen; if (offset > -1) { g->moffset += offset; offset = newlen; } else g->moffset = offset; } else { if (offset > -1) offset += newlen; } newlen = 0; break; case OANY: if (newlen > g->mlen) { /* ends one */ start = newstart; g->mlen = newlen; if (offset > -1) { g->moffset += offset; offset = newlen; } else g->moffset = offset; } else { if (offset > -1) offset += newlen; } if (offset > -1) offset++; newlen = 0; break; case OANYOF: /* may or may not invalidate offset */ /* First, everything as OANY */ if (newlen > g->mlen) { /* ends one */ start = newstart; g->mlen = newlen; if (offset > -1) { g->moffset += offset; offset = newlen; } else g->moffset = offset; } else { if (offset > -1) offset += newlen; } if (offset > -1) offset++; newlen = 0; /* And, now, if we found out we can't deal with * it, make offset = -1. */ if (mccs) offset = -1; break; default: /* Anything here makes it impossible or too hard * to calculate the offset -- so we give up; * save the last known good offset, in case the * must sequence doesn't occur later. */ if (newlen > g->mlen) { /* ends one */ start = newstart; g->mlen = newlen; if (offset > -1) g->moffset += offset; else g->moffset = offset; } offset = -1; newlen = 0; break; } } while (OP(s) != OEND); if (g->mlen == 0) { /* there isn't one */ g->moffset = -1; return; } /* turn it into a character string */ g->must = malloc((size_t)g->mlen + 1); if (g->must == NULL) { /* argh; just forget it */ g->mlen = 0; g->moffset = -1; return; } cp = g->must; scan = start; for (i = g->mlen; i > 0; i--) { while (OP(s = *scan++) != OCHAR) continue; assert(cp < g->must + g->mlen); *cp++ = (char)OPND(s); } assert(cp == g->must + g->mlen); *cp++ = '\0'; /* just on general principles */ } /* - altoffset - choose biggest offset among multiple choices == static int altoffset(sop *scan, int offset, int mccs); * * Compute, recursively if necessary, the largest offset among multiple * re paths. */ static int altoffset(sop *scan, int offset, int mccs) { int largest; int try; sop s; /* If we gave up already on offsets, return */ if (offset == -1) return -1; largest = 0; try = 0; s = *scan++; while (OP(s) != O_QUEST && OP(s) != O_CH) { switch (OP(s)) { case OOR1: if (try > largest) largest = try; try = 0; break; case OQUEST_: case OCH_: try = altoffset(scan, try, mccs); if (try == -1) return -1; scan--; do { scan += OPND(s); s = *scan; if (OP(s) != O_QUEST && OP(s) != O_CH && OP(s) != OOR2) return -1; } while (OP(s) != O_QUEST && OP(s) != O_CH); /* We must skip to the next position, or we'll * leave altoffset() too early. */ scan++; break; case OANYOF: if (mccs) return -1; FALLTHROUGH; case OCHAR: case OANY: try++; case OBOW: case OEOW: case OLPAREN: case ORPAREN: case OOR2: break; default: try = -1; break; } if (try == -1) return -1; s = *scan++; } if (try > largest) largest = try; return largest+offset; } /* - computejumps - compute char jumps for BM scan == static void computejumps(struct parse *p, struct re_guts *g); * * This algorithm assumes g->must exists and is has size greater than * zero. It's based on the algorithm found on Computer Algorithms by * Sara Baase. * * A char jump is the number of characters one needs to jump based on * the value of the character from the text that was mismatched. */ static void computejumps(struct parse *p, struct re_guts *g) { int ch; int mindex; /* Avoid making errors worse */ if (p->error != 0) return; g->charjump = (int*) malloc((NC + 1) * sizeof(int)); if (g->charjump == NULL) /* Not a fatal error */ return; /* Adjust for signed chars, if necessary */ g->charjump = &g->charjump[-(CHAR_MIN)]; /* If the character does not exist in the pattern, the jump * is equal to the number of characters in the pattern. */ for (ch = CHAR_MIN; ch < (CHAR_MAX + 1); ch++) g->charjump[ch] = g->mlen; /* If the character does exist, compute the jump that would * take us to the last character in the pattern equal to it * (notice that we match right to left, so that last character * is the first one that would be matched). */ for (mindex = 0; mindex < g->mlen; mindex++) g->charjump[(unsigned char) g->must[mindex]] = g->mlen - mindex - 1; } /* - computematchjumps - compute match jumps for BM scan == static void computematchjumps(struct parse *p, struct re_guts *g); * * This algorithm assumes g->must exists and is has size greater than * zero. It's based on the algorithm found on Computer Algorithms by * Sara Baase. * * A match jump is the number of characters one needs to advance based * on the already-matched suffix. * Notice that all values here are minus (g->mlen-1), because of the way * the search algorithm works. */ static void computematchjumps(struct parse *p, struct re_guts *g) { int mindex; /* General "must" iterator */ int suffix; /* Keeps track of matching suffix */ int ssuffix; /* Keeps track of suffixes' suffix */ int* pmatches; /* pmatches[k] points to the next i * such that i+1...mlen is a substring * of k+1...k+mlen-i-1 */ /* Avoid making errors worse */ if (p->error != 0) return; pmatches = (int*) malloc(g->mlen * sizeof(unsigned int)); if (pmatches == NULL) { g->matchjump = NULL; return; } g->matchjump = (int*) malloc(g->mlen * sizeof(unsigned int)); if (g->matchjump == NULL) /* Not a fatal error */ return; /* Set maximum possible jump for each character in the pattern */ for (mindex = 0; mindex < g->mlen; mindex++) g->matchjump[mindex] = 2*g->mlen - mindex - 1; /* Compute pmatches[] */ for (mindex = g->mlen - 1, suffix = g->mlen; mindex >= 0; mindex--, suffix--) { pmatches[mindex] = suffix; /* If a mismatch is found, interrupting the substring, * compute the matchjump for that position. If no * mismatch is found, then a text substring mismatched * against the suffix will also mismatch against the * substring. */ while (suffix < g->mlen && g->must[mindex] != g->must[suffix]) { g->matchjump[suffix] = MIN(g->matchjump[suffix], g->mlen - mindex - 1); suffix = pmatches[suffix]; } } /* Compute the matchjump up to the last substring found to jump * to the beginning of the largest must pattern prefix matching * it's own suffix. */ for (mindex = 0; mindex <= suffix; mindex++) g->matchjump[mindex] = MIN(g->matchjump[mindex], g->mlen + suffix - mindex); ssuffix = pmatches[suffix]; while (suffix < g->mlen) { while (suffix <= ssuffix && suffix < g->mlen) { g->matchjump[suffix] = MIN(g->matchjump[suffix], g->mlen + ssuffix - suffix); suffix++; } if (suffix < g->mlen) ssuffix = pmatches[ssuffix]; } free(pmatches); } /* - pluscount - count + nesting == static sopno pluscount(struct parse *p, struct re_guts *g); */ static sopno /* nesting depth */ pluscount(struct parse *p, struct re_guts *g) { sop *scan; sop s; sopno plusnest = 0; sopno maxnest = 0; if (p->error != 0) return(0); /* there may not be an OEND */ scan = g->strip + 1; do { s = *scan++; switch (OP(s)) { case OPLUS_: plusnest++; break; case O_PLUS: if (plusnest > maxnest) maxnest = plusnest; plusnest--; break; } } while (OP(s) != OEND); if (plusnest != 0) g->iflags |= BAD; return(maxnest); } picolibc-1.7.4/newlib/libc/posix/regerror.c000066400000000000000000000123251414576234500206530ustar00rootroot00000000000000/*- * Copyright (c) 1992, 1993, 1994 Henry Spencer. * Copyright (c) 1992, 1993, 1994 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Henry Spencer. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)regerror.c 8.4 (Berkeley) 3/20/94 */ #ifndef _NO_REGEX #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)regerror.c 8.4 (Berkeley) 3/20/94"; #endif /* LIBC_SCCS and not lint */ #include #include #include #include #include #include #include #include "utils.h" /* ========= begin header generated by ./mkh ========= */ #ifdef __cplusplus extern "C" { #endif /* === regerror.c === */ static char *regatoi(const regex_t *preg, char *localbuf); #ifdef __cplusplus } #endif /* ========= end header generated by ./mkh ========= */ /* = #define REG_NOMATCH 1 = #define REG_BADPAT 2 = #define REG_ECOLLATE 3 = #define REG_ECTYPE 4 = #define REG_EESCAPE 5 = #define REG_ESUBREG 6 = #define REG_EBRACK 7 = #define REG_EPAREN 8 = #define REG_EBRACE 9 = #define REG_BADBR 10 = #define REG_ERANGE 11 = #define REG_ESPACE 12 = #define REG_BADRPT 13 = #define REG_EMPTY 14 = #define REG_ASSERT 15 = #define REG_INVARG 16 = #define REG_ATOI 255 // convert name to number (!) = #define REG_ITOA 0400 // convert number to name (!) */ static struct rerr { int code; char *name; char *explain; } rerrs[] = { {REG_NOMATCH, "REG_NOMATCH", "regexec() failed to match"}, {REG_BADPAT, "REG_BADPAT", "invalid regular expression"}, {REG_ECOLLATE, "REG_ECOLLATE", "invalid collating element"}, {REG_ECTYPE, "REG_ECTYPE", "invalid character class"}, {REG_EESCAPE, "REG_EESCAPE", "trailing backslash (\\)"}, {REG_ESUBREG, "REG_ESUBREG", "invalid backreference number"}, {REG_EBRACK, "REG_EBRACK", "brackets ([ ]) not balanced"}, {REG_EPAREN, "REG_EPAREN", "parentheses not balanced"}, {REG_EBRACE, "REG_EBRACE", "braces not balanced"}, {REG_BADBR, "REG_BADBR", "invalid repetition count(s)"}, {REG_ERANGE, "REG_ERANGE", "invalid character range"}, {REG_ESPACE, "REG_ESPACE", "out of memory"}, {REG_BADRPT, "REG_BADRPT", "repetition-operator operand invalid"}, {REG_EMPTY, "REG_EMPTY", "empty (sub)expression"}, {REG_ASSERT, "REG_ASSERT", "\"can't happen\" -- you found a bug"}, {REG_INVARG, "REG_INVARG", "invalid argument to regex routine"}, {0, "", "*** unknown regexp error code ***"} }; /* - regerror - the interface to error numbers = extern size_t regerror(int, const regex_t *__restrict, = char *__restrict, size_t); */ /* ARGSUSED */ size_t regerror(int errcode, const regex_t *__restrict preg, char *__restrict errbuf, size_t errbuf_size) { struct rerr *r; size_t len; int target = errcode &~ REG_ITOA; char *s; char convbuf[50]; if (errcode == REG_ATOI) s = regatoi(preg, convbuf); else { for (r = rerrs; r->code != 0; r++) if (r->code == target) break; if (errcode®_ITOA) { if (r->code != 0) (void) strcpy(convbuf, r->name); else sprintf(convbuf, "REG_0x%x", target); assert(strlen(convbuf) < sizeof(convbuf)); s = convbuf; } else s = r->explain; } len = strlen(s) + 1; if (errbuf_size > 0) { if (errbuf_size > len) (void) strcpy(errbuf, s); else { (void) strncpy(errbuf, s, errbuf_size-1); errbuf[errbuf_size-1] = '\0'; } } return(len); } /* - regatoi - internal routine to implement REG_ATOI == static char *regatoi(const regex_t *preg, char *localbuf); */ static char * regatoi(const regex_t *preg, char *localbuf) { struct rerr *r; for (r = rerrs; r->code != 0; r++) if (strcmp(r->name, preg->re_endp) == 0) break; if (r->code == 0) return("0"); sprintf(localbuf, "%d", r->code); return(localbuf); } #endif /* !_NO_REGEX */ picolibc-1.7.4/newlib/libc/posix/regex2.h000066400000000000000000000165311414576234500202300ustar00rootroot00000000000000/*- * Copyright (c) 1992, 1993, 1994 Henry Spencer. * Copyright (c) 1992, 1993, 1994 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Henry Spencer. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)regex2.h 8.4 (Berkeley) 3/20/94 * $FreeBSD: src/lib/libc/regex/regex2.h,v 1.6 2002/03/22 23:41:56 obrien Exp $ */ /* * First, the stuff that ends up in the outside-world include file = typedef off_t regoff_t; = typedef struct { = int re_magic; = size_t re_nsub; // number of parenthesized subexpressions = const char *re_endp; // end pointer for REG_PEND = struct re_guts *re_g; // none of your business :-) = } regex_t; = typedef struct { = regoff_t rm_so; // start of match = regoff_t rm_eo; // end of match = } regmatch_t; */ /* * internals of regex_t */ #define MAGIC1 ((('r'^0200)<<8) | 'e') /* * The internal representation is a *strip*, a sequence of * operators ending with an endmarker. (Some terminology etc. is a * historical relic of earlier versions which used multiple strips.) * Certain oddities in the representation are there to permit running * the machinery backwards; in particular, any deviation from sequential * flow must be marked at both its source and its destination. Some * fine points: * * - OPLUS_ and O_PLUS are *inside* the loop they create. * - OQUEST_ and O_QUEST are *outside* the bypass they create. * - OCH_ and O_CH are *outside* the multi-way branch they create, while * OOR1 and OOR2 are respectively the end and the beginning of one of * the branches. Note that there is an implicit OOR2 following OCH_ * and an implicit OOR1 preceding O_CH. * * In state representations, an operator's bit is on to signify a state * immediately *preceding* "execution" of that operator. */ typedef unsigned long sop; /* strip operator */ typedef long sopno; #define OPRMASK 0xf8000000L #define OPDMASK 0x07ffffffL #define OPSHIFT ((unsigned)27) #define OP(n) ((sop)(n)&OPRMASK) #define OPND(n) ((sop)(n)&OPDMASK) #define SOP(op, opnd) ((sop)(op)|(sop)(opnd)) /* operators meaning operand */ /* (back, fwd are offsets) */ #define OEND (1UL< uch [csetsize] */ uch mask; /* bit within array */ short hash; /* hash code */ size_t smultis; char *multis; /* -> char[smulti] ab\0cd\0ef\0\0 */ } cset; /* note that CHadd and CHsub are unsafe, and CHIN doesn't yield 0/1 */ #define CHadd(cs, c) ((cs)->ptr[(uch)(c)] |= (cs)->mask, (cs)->hash += (uch)(c)) #define CHsub(cs, c) ((cs)->ptr[(uch)(c)] &= ~(cs)->mask, (cs)->hash -= (uch)(c)) #define CHIN(cs, c) ((cs)->ptr[(uch)(c)] & (cs)->mask) #define MCadd(p, cs, cp) mcadd(p, cs, cp) /* regcomp() internal fns */ #define MCsub(p, cs, cp) mcsub(p, cs, cp) #define MCin(p, cs, cp) mcin(p, cs, cp) /* stuff for character categories */ typedef unsigned char cat_t; /* * main compiled-expression structure */ struct re_guts { int magic; # define MAGIC2 ((('R'^0200)<<8)|'E') sop *strip; /* malloced area for strip */ int csetsize; /* number of bits in a cset vector */ int ncsets; /* number of csets in use */ cset *sets; /* -> cset [ncsets] */ uch *setbits; /* -> uch[csetsize][ncsets/CHAR_BIT] */ int cflags; /* copy of regcomp() cflags argument */ sopno nstates; /* = number of sops */ sopno firststate; /* the initial OEND (normally 0) */ sopno laststate; /* the final OEND */ int iflags; /* internal flags */ # define USEBOL 01 /* used ^ */ # define USEEOL 02 /* used $ */ # define BAD 04 /* something wrong */ int nbol; /* number of ^ used */ int neol; /* number of $ used */ int ncategories; /* how many character categories */ cat_t *categories; /* ->catspace[-CHAR_MIN] */ char *must; /* match must contain this string */ int moffset; /* latest point at which must may be located */ int *charjump; /* Boyer-Moore char jump table */ int *matchjump; /* Boyer-Moore match jump table */ int mlen; /* length of must */ size_t nsub; /* copy of re_nsub */ int backrefs; /* does it use back references? */ sopno nplus; /* how deep does it nest +s? */ /* catspace must be last */ cat_t catspace[1]; /* actually [NC] */ }; /* misc utilities */ #define OUT (CHAR_MAX+1) /* a non-character value */ #define ISWORD(c) (isalnum((uch)(c)) || (c) == '_') picolibc-1.7.4/newlib/libc/posix/regexec.c000066400000000000000000000143221414576234500204450ustar00rootroot00000000000000/*- * Copyright (c) 1992, 1993, 1994 Henry Spencer. * Copyright (c) 1992, 1993, 1994 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Henry Spencer. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)regexec.c 8.3 (Berkeley) 3/20/94 */ #ifndef _NO_REGEX #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)regexec.c 8.3 (Berkeley) 3/20/94"; #endif /* LIBC_SCCS and not lint */ #include /* * the outer shell of regexec() * * This file includes engine.c *twice*, after muchos fiddling with the * macros that code uses. This lets the same code operate on two different * representations for state sets. */ #include #include #include #include #include #include #include #include "utils.h" #include "regex2.h" #ifndef NDEBUG static int nope = 0; /* for use in asserts; shuts lint up */ #endif /* macros for manipulating states, small version */ #define states long #define states1 states /* for later use in regexec() decision */ #define CLEAR(v) ((v) = 0) #define SET0(v, n) ((v) &= ~((unsigned long)1 << (n))) #define SET1(v, n) ((v) |= (unsigned long)1 << (n)) #define ISSET(v, n) (((v) & ((unsigned long)1 << (n))) != 0) #define ASSIGN(d, s) ((d) = (s)) #define EQ(a, b) ((a) == (b)) #define STATEVARS long dummy /* dummy version */ #define STATESETUP(m, n) /* nothing */ #define STATETEARDOWN(m) /* nothing */ #define SETUP(v) ((v) = 0) #define onestate long #define INIT(o, n) ((o) = (unsigned long)1 << (n)) #define INC(o) ((o) <<= 1) #define ISSTATEIN(v, o) (((v) & (o)) != 0) /* some abbreviations; note that some of these know variable names! */ /* do "if I'm here, I can also be there" etc without branches */ #define FWD(dst, src, n) ((dst) |= ((unsigned long)(src)&(here)) << (n)) #define BACK(dst, src, n) ((dst) |= ((unsigned long)(src)&(here)) >> (n)) #define ISSETBACK(v, n) (((v) & ((unsigned long)here >> (n))) != 0) /* function names */ #define SNAMES /* engine.c looks after details */ #include "engine.c" /* now undo things */ #undef states #undef CLEAR #undef SET0 #undef SET1 #undef ISSET #undef ASSIGN #undef EQ #undef STATEVARS #undef STATESETUP #undef STATETEARDOWN #undef SETUP #undef onestate #undef INIT #undef INC #undef ISSTATEIN #undef FWD #undef BACK #undef ISSETBACK #undef SNAMES /* macros for manipulating states, large version */ #define states char * #define CLEAR(v) memset(v, 0, m->g->nstates) #define SET0(v, n) ((v)[n] = 0) #define SET1(v, n) ((v)[n] = 1) #define ISSET(v, n) ((v)[n]) #define ASSIGN(d, s) memcpy(d, s, m->g->nstates) #define EQ(a, b) (memcmp(a, b, m->g->nstates) == 0) #define STATEVARS long vn; char *space #define STATESETUP(m, nv) { (m)->space = malloc((nv)*(m)->g->nstates); \ if ((m)->space == NULL) return(REG_ESPACE); \ (m)->vn = 0; } #define STATETEARDOWN(m) { free((m)->space); } #define SETUP(v) ((v) = &m->space[m->vn++ * m->g->nstates]) #define onestate long #define INIT(o, n) ((o) = (n)) #define INC(o) ((o)++) #define ISSTATEIN(v, o) ((v)[o]) /* some abbreviations; note that some of these know variable names! */ /* do "if I'm here, I can also be there" etc without branches */ #define FWD(dst, src, n) ((dst)[here+(n)] |= (src)[here]) #define BACK(dst, src, n) ((dst)[here-(n)] |= (src)[here]) #define ISSETBACK(v, n) ((v)[here - (n)]) /* function names */ #define LNAMES /* flag */ #include "engine.c" /* - regexec - interface for matching = extern int regexec(const regex_t *__restrict, const char *__restrict, = size_t, regmatch_t [__restrict], int); = #define REG_NOTBOL 00001 = #define REG_NOTEOL 00002 = #define REG_STARTEND 00004 = #define REG_TRACE 00400 // tracing of execution = #define REG_LARGE 01000 // force large representation = #define REG_BACKR 02000 // force use of backref code * * We put this here so we can exploit knowledge of the state representation * when choosing which matcher to call. Also, by this point the matchers * have been prototyped. */ int /* 0 success, REG_NOMATCH failure */ regexec(const regex_t *__restrict preg, const char *__restrict string, size_t nmatch, regmatch_t pmatch[__restrict], int eflags) { struct re_guts *g = preg->re_g; #ifdef REDEBUG # define GOODFLAGS(f) (f) #else # define GOODFLAGS(f) ((f)&(REG_NOTBOL|REG_NOTEOL|REG_STARTEND)) #endif if (preg->re_magic != MAGIC1 || g->magic != MAGIC2) return(REG_BADPAT); assert(!(g->iflags&BAD)); if (g->iflags&BAD) /* backstop for no-debug case */ return(REG_BADPAT); eflags = GOODFLAGS(eflags); if (g->nstates <= (sopno) (CHAR_BIT*sizeof(states1)) && !(eflags®_LARGE)) return(smatcher(g, (char *)string, nmatch, pmatch, eflags)); else return(lmatcher(g, (char *)string, nmatch, pmatch, eflags)); } #endif /* !_NO_REGEX */ picolibc-1.7.4/newlib/libc/posix/regfree.c000066400000000000000000000054061414576234500204450ustar00rootroot00000000000000/*- * Copyright (c) 1992, 1993, 1994 Henry Spencer. * Copyright (c) 1992, 1993, 1994 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Henry Spencer. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)regfree.c 8.3 (Berkeley) 3/20/94 */ #ifndef _NO_REGEX #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)regfree.c 8.3 (Berkeley) 3/20/94"; #endif /* LIBC_SCCS and not lint */ #include #include #include #include #include #include #include "utils.h" #include "regex2.h" /* - regfree - free everything = extern void regfree(regex_t *); */ void regfree(regex_t *preg) { struct re_guts *g; if (preg->re_magic != MAGIC1) /* oops */ return; /* nice to complain, but hard */ g = preg->re_g; if (g == NULL || g->magic != MAGIC2) /* oops again */ return; preg->re_magic = 0; /* mark it invalid */ g->magic = 0; /* mark it invalid */ if (g->strip != NULL) free((char *)g->strip); if (g->sets != NULL) free((char *)g->sets); if (g->setbits != NULL) free((char *)g->setbits); if (g->must != NULL) free(g->must); if (g->charjump != NULL) free(&g->charjump[CHAR_MIN]); if (g->matchjump != NULL) free(g->matchjump); free((char *)g); } #endif /* !_NO_REGEX */ picolibc-1.7.4/newlib/libc/posix/rune.h000066400000000000000000000047311414576234500200040ustar00rootroot00000000000000/*- * Copyright (c) 1993 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Paul Borman at Krystal Technologies. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)rune.h 8.1 (Berkeley) 6/27/93 * $FreeBSD: src/include/rune.h,v 1.2 2002/03/23 17:24:53 imp Exp $ */ #ifndef _RUNE_H_ #define _RUNE_H_ #include "runetype.h" #include #define _PATH_LOCALE "/usr/share/locale" #define _INVALID_RUNE _CurrentRuneLocale->invalid_rune #define __sgetrune _CurrentRuneLocale->sgetrune #define __sputrune _CurrentRuneLocale->sputrune #define sgetrune(s, n, r) (*__sgetrune)((s), (n), (r)) #define sputrune(c, s, n, r) (*__sputrune)((c), (s), (n), (r)) __BEGIN_DECLS char *mbrune(const char *, rune_t); char *mbrrune(const char *, rune_t); char *mbmb(const char *, char *); long fgetrune(FILE *); int fputrune(rune_t, FILE *); int fungetrune(rune_t, FILE *); int setrunelocale(char *); void setinvalidrune(rune_t); __END_DECLS #endif /*! _RUNE_H_ */ picolibc-1.7.4/newlib/libc/posix/runetype.h000066400000000000000000000066761414576234500207200ustar00rootroot00000000000000/*- * Copyright (c) 1993 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Paul Borman at Krystal Technologies. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)runetype.h 8.1 (Berkeley) 6/2/93 * $FreeBSD: src/include/runetype.h,v 1.5 2002/03/26 01:35:05 bde Exp $ */ #ifndef _RUNETYPE_H_ #define _RUNETYPE_H_ #include #include #include #ifdef _BSD_RUNE_T_ typedef _BSD_RUNE_T_ rune_t; #undef _BSD_RUNE_T_ #else typedef int rune_t; #endif #define _CACHED_RUNES (1 <<8 ) /* Must be a power of 2 */ #define _CRMASK (~(_CACHED_RUNES - 1)) /* * The lower 8 bits of runetype[] contain the digit value of the rune. */ typedef struct { rune_t min; /* First rune of the range */ rune_t max; /* Last rune (inclusive) of the range */ rune_t map; /* What first maps to in maps */ unsigned long *types; /* Array of types in range */ } _RuneEntry; typedef struct { int nranges; /* Number of ranges stored */ _RuneEntry *ranges; /* Pointer to the ranges */ } _RuneRange; typedef struct { char magic[8]; /* Magic saying what version we are */ char encoding[32]; /* ASCII name of this encoding */ rune_t (*sgetrune)(const char *, size_t, char const **); int (*sputrune)(rune_t, char *, size_t, char **); rune_t invalid_rune; unsigned long runetype[_CACHED_RUNES]; rune_t maplower[_CACHED_RUNES]; rune_t mapupper[_CACHED_RUNES]; /* * The following are to deal with Runes larger than _CACHED_RUNES - 1. * Their data is actually contiguous with this structure so as to make * it easier to read/write from/to disk. */ _RuneRange runetype_ext; _RuneRange maplower_ext; _RuneRange mapupper_ext; void *variable; /* Data which depends on the encoding */ int variable_len; /* how long that data is */ } _RuneLocale; #define _RUNE_MAGIC_1 "RuneMagi" /* Indicates version 0 of RuneLocale */ extern _RuneLocale _DefaultRuneLocale; extern _RuneLocale *_CurrentRuneLocale; #endif /* !_RUNETYPE_H_ */ picolibc-1.7.4/newlib/libc/posix/sysexits.h000066400000000000000000000121601414576234500207210ustar00rootroot00000000000000/* * Copyright (c) 1987, 1993 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)sysexits.h 8.1 (Berkeley) 6/2/93 */ #ifndef _SYSEXITS_H #define _SYSEXITS_H 1 /* * SYSEXITS.H -- Exit status codes for system programs. * * This include file attempts to categorize possible error * exit statuses for system programs, notably delivermail * and the Berkeley network. * * Error numbers begin at EX__BASE to reduce the possibility of * clashing with other exit statuses that random programs may * already return. The meaning of the codes is approximately * as follows: * * EX_USAGE -- The command was used incorrectly, e.g., with * the wrong number of arguments, a bad flag, a bad * syntax in a parameter, or whatever. * EX_DATAERR -- The input data was incorrect in some way. * This should only be used for user's data & not * system files. * EX_NOINPUT -- An input file (not a system file) did not * exist or was not readable. This could also include * errors like "No message" to a mailer (if it cared * to catch it). * EX_NOUSER -- The user specified did not exist. This might * be used for mail addresses or remote logins. * EX_NOHOST -- The host specified did not exist. This is used * in mail addresses or network requests. * EX_UNAVAILABLE -- A service is unavailable. This can occur * if a support program or file does not exist. This * can also be used as a catchall message when something * you wanted to do doesn't work, but you don't know * why. * EX_SOFTWARE -- An internal software error has been detected. * This should be limited to non-operating system related * errors as possible. * EX_OSERR -- An operating system error has been detected. * This is intended to be used for such things as "cannot * fork", "cannot create pipe", or the like. It includes * things like getuid returning a user that does not * exist in the passwd file. * EX_OSFILE -- Some system file (e.g., /etc/passwd, /etc/utmp, * etc.) does not exist, cannot be opened, or has some * sort of error (e.g., syntax error). * EX_CANTCREAT -- A (user specified) output file cannot be * created. * EX_IOERR -- An error occurred while doing I/O on some file. * EX_TEMPFAIL -- temporary failure, indicating something that * is not really an error. In sendmail, this means * that a mailer (e.g.) could not create a connection, * and the request should be reattempted later. * EX_PROTOCOL -- the remote system returned something that * was "not possible" during a protocol exchange. * EX_NOPERM -- You did not have sufficient permission to * perform the operation. This is not intended for * file system problems, which should use NOINPUT or * CANTCREAT, but rather for higher level permissions. */ #define EX_OK 0 /* successful termination */ #define EX__BASE 64 /* base value for error messages */ #define EX_USAGE 64 /* command line usage error */ #define EX_DATAERR 65 /* data format error */ #define EX_NOINPUT 66 /* cannot open input */ #define EX_NOUSER 67 /* addressee unknown */ #define EX_NOHOST 68 /* host name unknown */ #define EX_UNAVAILABLE 69 /* service unavailable */ #define EX_SOFTWARE 70 /* internal software error */ #define EX_OSERR 71 /* system error (e.g., can't fork) */ #define EX_OSFILE 72 /* critical OS file missing */ #define EX_CANTCREAT 73 /* can't create (user) output file */ #define EX_IOERR 74 /* input/output error */ #define EX_TEMPFAIL 75 /* temp failure; user is invited to retry */ #define EX_PROTOCOL 76 /* remote error in protocol */ #define EX_NOPERM 77 /* permission denied */ #define EX_CONFIG 78 /* configuration error */ #define EX__MAX 78 /* maximum listed value */ #endif /* sysexits.h */ picolibc-1.7.4/newlib/libc/posix/un-namespace.h000066400000000000000000000070641414576234500214110ustar00rootroot00000000000000/* * Copyright (c) 2001 Daniel Eischen . * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $FreeBSD: src/lib/libc/include/un-namespace.h,v 1.7 2002/03/29 22:43:42 markm Exp $ */ #ifndef _UN_NAMESPACE_H_ #define _UN_NAMESPACE_H_ #undef accept #undef __acl_aclcheck_fd #undef __acl_delete_fd #undef __acl_get_fd #undef __acl_set_fd #undef bind #undef __cap_get_fd #undef __cap_set_fd #undef close #undef connect #undef dup #undef dup2 #undef execve #undef fcntl #undef flock #undef fstat #undef fstatfs #undef fsync #undef getdirentries #undef getlogin #undef getpeername #undef getprogname #undef getsockname #undef getsockopt #undef ioctl #undef kevent #undef listen #undef nanosleep #undef open #undef pthread_getspecific #undef pthread_key_create #undef pthread_key_delete #undef pthread_mutex_destroy #undef pthread_mutex_init #undef pthread_mutex_lock #undef pthread_mutex_trylock #undef pthread_mutex_unlock #undef pthread_mutexattr_init #undef pthread_mutexattr_destroy #undef pthread_mutexattr_settype #undef pthread_once #undef pthread_self #undef pthread_setspecific #undef read #undef readv #undef recvfrom #undef recvmsg #undef select #undef sendmsg #undef sendto #undef setsockopt #undef sigaction #undef sigprocmask #undef sigsuspend #undef socket #undef socketpair #undef wait4 #undef write #undef writev #if 0 #undef creat #undef fchflags #undef fchmod #undef fpathconf #undef msync #undef nfssvc #undef pause #undef poll #undef pthread_rwlock_destroy #undef pthread_rwlock_init #undef pthread_rwlock_rdlock #undef pthread_rwlock_tryrdlock #undef pthread_rwlock_trywrlock #undef pthread_rwlock_unlock #undef pthread_rwlock_wrlock #undef pthread_rwlockattr_init #undef pthread_rwlockattr_destroy #undef sched_yield #undef sendfile #undef shutdown #undef sigaltstack #undef sigpending #undef sigreturn #undef sigsetmask #undef sleep #undef system #undef tcdrain #undef wait #undef waitpid #endif /* 0 */ #ifdef _SIGNAL_H_ int _sigaction(int, const struct sigaction *, struct sigaction *); #endif #ifdef _SYS_EVENT_H_ int _kevent(int, const struct kevent *, int, struct kevent *, int, const struct timespec *); #endif #ifdef _SYS_FCNTL_H_ int _flock(int, int); #endif #undef err #undef warn #endif /* _UN_NAMESPACE_H_ */ picolibc-1.7.4/newlib/libc/posix/utils.h000066400000000000000000000044251414576234500201730ustar00rootroot00000000000000/*- * Copyright (c) 1992, 1993, 1994 Henry Spencer. * Copyright (c) 1992, 1993, 1994 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Henry Spencer. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)utils.h 8.3 (Berkeley) 3/20/94 * $FreeBSD: src/lib/libc/regex/utils.h,v 1.2 2002/03/22 23:41:56 obrien Exp $ */ /* utility definitions */ #define DUPMAX _POSIX2_RE_DUP_MAX /* xxx is this right? */ #define INFINITY (DUPMAX + 1) #define NC (CHAR_MAX - CHAR_MIN + 1) typedef unsigned char uch; /* switch off assertions (if not already off) if no REDEBUG */ #ifndef REDEBUG #ifndef NDEBUG #define NDEBUG /* no assertions please */ #endif #endif #include /* for old systems with bcopy() but no memmove() */ #ifdef USEBCOPY #define memmove(d, s, c) bcopy(s, d, c) #endif picolibc-1.7.4/newlib/libc/reent/000077500000000000000000000000001414576234500166305ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/reent/getreent.c000066400000000000000000000005051414576234500206110ustar00rootroot00000000000000/* Copyright (c) 2002 Jeff Johnston */ /* default reentrant pointer when multithread enabled */ #ifdef GETREENT_PROVIDED int _dummy_getreent; #else #include <_ansi.h> #include #ifdef __getreent #undef __getreent #endif struct _reent * __getreent (void) { return _impure_ptr; } #endif picolibc-1.7.4/newlib/libc/reent/impure.c000066400000000000000000000034231414576234500202770ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include /* Note that there is a copy of this in sys/reent.h. */ #ifndef __ATTRIBUTE_IMPURE_PTR__ #define __ATTRIBUTE_IMPURE_PTR__ #endif #ifndef __ATTRIBUTE_IMPURE_DATA__ #define __ATTRIBUTE_IMPURE_DATA__ #endif /* Redeclare these symbols locally as weak so that the file containing their definitions (along with a lot of other stuff) isn't sucked in unless they are actually used by other compilation units. This is important to reduce image size for targets with very small amounts of memory. */ #ifdef _REENT_SMALL extern const struct __sFILE_fake __sf_fake_stdin _ATTRIBUTE ((weak)); extern const struct __sFILE_fake __sf_fake_stdout _ATTRIBUTE ((weak)); extern const struct __sFILE_fake __sf_fake_stderr _ATTRIBUTE ((weak)); #endif static struct _reent __ATTRIBUTE_IMPURE_DATA__ impure_data = _REENT_INIT (impure_data); #ifdef __CYGWIN__ extern struct _reent reent_data __attribute__ ((alias("impure_data"))); #endif struct _reent *__ATTRIBUTE_IMPURE_PTR__ _impure_ptr = &impure_data; struct _reent *const __ATTRIBUTE_IMPURE_PTR__ _global_impure_ptr = &impure_data; picolibc-1.7.4/newlib/libc/reent/meson.build000066400000000000000000000037341414576234500210010ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # srcs_reent = [ 'getreent.c', 'impure.c', 'reent.c', ] srcs_reent_use = [] foreach file : srcs_reent s_file = fs.replace_suffix(file, '.S') if file in srcs_machine message('libc/reent/' + file + ': machine overrides generic') elif s_file in srcs_machine message('libc/reent/' + s_file + ': machine overrides generic') else srcs_reent_use += file endif endforeach src_reent = files(srcs_reent_use) picolibc-1.7.4/newlib/libc/reent/reent.c000066400000000000000000000032371414576234500201160ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---definition of impure data. INDEX reent DESCRIPTION This module defines the impure data area used by the non-reentrant functions, such as strtok. */ #include #include #ifdef _REENT_ONLY #ifndef REENTRANT_SYSCALLS_PROVIDED #define REENTRANT_SYSCALLS_PROVIDED #endif #endif /* Interim cleanup code */ void cleanup_glue (struct _reent *ptr, struct _glue *glue) { /* Have to reclaim these in reverse order: */ if (glue->_next) cleanup_glue (ptr, glue->_next); free (glue); } void _reclaim_reent (struct _reent *ptr) { if (ptr != _impure_ptr) { #ifndef TINY_STDIO if (ptr->__sdidinit) { /* cleanup won't reclaim memory 'coz usually it's run before the program exits, and who wants to wait for that? */ ptr->__cleanup (ptr); if (ptr->__sglue._next) cleanup_glue (ptr, ptr->__sglue._next); } #endif /* Malloc memory not reclaimed; no good way to return memory anyway. */ } } picolibc-1.7.4/newlib/libc/reent/reent.tex000066400000000000000000000113461414576234500204740ustar00rootroot00000000000000# #Copyright (c) 1994 Cygnus Support. #All rights reserved. # #Redistribution and use in source and binary forms are permitted #provided that the above copyright notice and this paragraph are #duplicated in all such forms and that any documentation, #and/or other materials related to such #distribution and use acknowledge that the software was developed #at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to #endorse or promote products derived from this software without #specific prior written permission. #THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR #IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED #WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. # @node Reentrancy @chapter Reentrancy @cindex reentrancy Reentrancy is a characteristic of library functions which allows multiple processes to use the same address space with assurance that the values stored in those spaces will remain constant between calls. The Red Hat newlib implementation of the library functions ensures that whenever possible, these library functions are reentrant. However, there are some functions that can not be trivially made reentrant. Hooks have been provided to allow you to use these functions in a fully reentrant fashion. @findex _reent @findex reent.h @cindex reentrancy structure These hooks use the structure @code{_reent} defined in @file{reent.h}. A variable defined as @samp{struct _reent} is called a @dfn{reentrancy structure}. All functions which must manipulate global information are available in two versions. The first version has the usual name, and uses a single global instance of the reentrancy structure. The second has a different name, normally formed by prepending @samp{_} and appending @samp{_r}, and takes a pointer to the particular reentrancy structure to use. For example, the function @code{fopen} takes two arguments, @var{file} and @var{mode}, and uses the global reentrancy structure. The function @code{_fopen_r} takes the arguments, @var{struct_reent}, which is a pointer to an instance of the reentrancy structure, @var{file} and @var{mode}. There are two versions of @samp{struct _reent}, a normal one and one for small memory systems, controlled by the @code{_REENT_SMALL} definition from the (automatically included) @file{}. @cindex global reentrancy structure @findex _impure_ptr Each function which uses the global reentrancy structure uses the global variable @code{_impure_ptr}, which points to a reentrancy structure. This means that you have two ways to achieve reentrancy. Both require that each thread of execution control initialize a unique global variable of type @samp{struct _reent}: @enumerate @item @cindex extra argument, reentrant fns Use the reentrant versions of the library functions, after initializing a global reentrancy structure for each process. Use the pointer to this structure as the extra argument for all library functions. @item Ensure that each thread of execution control has a pointer to its own unique reentrancy structure in the global variable @code{_impure_ptr}, and call the standard library subroutines. @end enumerate @cindex list of reentrant functions @cindex reentrant function list The following functions are provided in both reentrant and non-reentrant versions. @example @exdent @emph{Equivalent for errno variable:} _errno_r @exdent @emph{Locale functions:} _localeconv_r _setlocale_r @exdent @emph{Equivalents for stdio variables:} _stdin_r _stdout_r _stderr_r @page @exdent @emph{Stdio functions:} _fdopen_r _perror_r _tempnam_r _fopen_r _putchar_r _tmpnam_r _getchar_r _puts_r _tmpfile_r _gets_r _remove_r _vfprintf_r _iprintf_r _rename_r _vsnprintf_r _mkstemp_r _snprintf_r _vsprintf_r _mktemp_t _sprintf_r @exdent @emph{Signal functions:} _init_signal_r _signal_r _kill_r __sigtramp_r _raise_r @exdent @emph{Stdlib functions:} _calloc_r _mblen_r _setenv_r _dtoa_r _mbstowcs_r _srand_r _free_r _mbtowc_r _strtod_r _getenv_r _memalign_r _strtol_r _mallinfo_r _mstats_r _strtoul_r _malloc_r _putenv_r _system_r _malloc_r _rand_r _wcstombs_r _malloc_stats_r _realloc_r _wctomb_r @exdent @emph{String functions:} _strdup_r _strtok_r @exdent @emph{System functions:} _close_r _link_r _unlink_r _execve_r _lseek_r _wait_r _fcntl_r _open_r _write_r _fork_r _read_r _fstat_r _sbrk_r _gettimeofday_r _stat_r _getpid_r _times_r @ifset STDIO64 @exdent @emph{Additional 64-bit I/O System functions:} _fstat64_r _lseek64_r _open64_r @end ifset @exdent @emph{Time function:} _asctime_r @end example picolibc-1.7.4/newlib/libc/search/000077500000000000000000000000001414576234500167605ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/search/bsd_qsort_r.c000066400000000000000000000001501414576234500214410ustar00rootroot00000000000000/* Copyright (c) 2014 Yaakov Selkowitz */ #define I_AM_QSORT_R #include "qsort.c" picolibc-1.7.4/newlib/libc/search/bsearch.c000066400000000000000000000075351414576234500205450ustar00rootroot00000000000000/* Copyright (c) 1991, 1993, 1994 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * bsearch.c * Original Author: G. Haley * Rewritten by: G. Noer * * Searches an array of nmemb members, the initial member of which is pointed * to by base, for a member that matches the object pointed to by key. The * contents of the array shall be in ascending order according to a comparison * function pointed to by compar. The function shall return an integer less * than, equal to or greater than zero if the first argument is considered to be * respectively less than, equal to or greater than the second. Returns a * pointer to the matching member of the array, or a null pointer if no match * is found. */ /* FUNCTION <>---binary search INDEX bsearch SYNOPSIS #include void *bsearch(const void *<[key]>, const void *<[base]>, size_t <[nmemb]>, size_t <[size]>, int (*<[compar]>)(const void *, const void *)); DESCRIPTION <> searches an array beginning at <[base]> for any element that matches <[key]>, using binary search. <[nmemb]> is the element count of the array; <[size]> is the size of each element. The array must be sorted in ascending order with respect to the comparison function <[compar]> (which you supply as the last argument of <>). You must define the comparison function <<(*<[compar]>)>> to have two arguments; its result must be negative if the first argument is less than the second, zero if the two arguments match, and positive if the first argument is greater than the second (where ``less than'' and ``greater than'' refer to whatever arbitrary ordering is appropriate). RETURNS Returns a pointer to an element of <[array]> that matches <[key]>. If more than one matching element is available, the result may point to any of them. PORTABILITY <> is ANSI. No supporting OS subroutines are required. */ #include void * bsearch (const void *key, const void *base, size_t nmemb, size_t size, int (*compar) (const void *, const void *)) { void *current; size_t lower = 0; size_t upper = nmemb; size_t index; int result; if (nmemb == 0 || size == 0) return NULL; while (lower < upper) { index = (lower + upper) / 2; current = (void *) (((char *) base) + (index * size)); result = compar (key, current); if (result < 0) upper = index; else if (result > 0) lower = index + 1; else return current; } return NULL; } picolibc-1.7.4/newlib/libc/search/db_local.h000066400000000000000000000165641414576234500207040ustar00rootroot00000000000000/*- * Copyright (c) 1990, 1993, 1994 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)db.h 8.7 (Berkeley) 6/16/94 * $FreeBSD: src/include/db.h,v 1.5 2002/03/26 01:35:05 bde Exp $ */ #ifndef _DB_H_ #define _DB_H_ #include #include #include #include #define RET_ERROR -1 /* Return values. */ #define RET_SUCCESS 0 #define RET_SPECIAL 1 #define MAX_PAGE_NUMBER 0xffffffff /* >= # of pages in a file */ typedef __uint32_t pgno_t; #define MAX_PAGE_OFFSET 65535 /* >= # of bytes in a page */ typedef __uint16_t indx_t; #define MAX_REC_NUMBER 0xffffffff /* >= # of records in a tree */ typedef __uint32_t recno_t; /* Key/data structure -- a Data-Base Thang. */ typedef struct { void *data; /* data */ size_t size; /* data length */ } DBT; /* Routine flags. */ #define R_CURSOR 1 /* del, put, seq */ #define __R_UNUSED 2 /* UNUSED */ #define R_FIRST 3 /* seq */ #define R_IAFTER 4 /* put (RECNO) */ #define R_IBEFORE 5 /* put (RECNO) */ #define R_LAST 6 /* seq (BTREE, RECNO) */ #define R_NEXT 7 /* seq */ #define R_NOOVERWRITE 8 /* put */ #define R_PREV 9 /* seq (BTREE, RECNO) */ #define R_SETCURSOR 10 /* put (RECNO) */ #define R_RECNOSYNC 11 /* sync (RECNO) */ typedef enum { DB_BTREE, DB_HASH, DB_RECNO } DBTYPE; /* * !!! * The following flags are included in the dbopen(3) call as part of the * open(2) flags. In order to avoid conflicts with the open flags, start * at the top of the 16 or 32-bit number space and work our way down. If * the open flags were significantly expanded in the future, it could be * a problem. Wish I'd left another flags word in the dbopen call. * * !!! * None of this stuff is implemented yet. The only reason that it's here * is so that the access methods can skip copying the key/data pair when * the DB_LOCK flag isn't set. */ #if UINT_MAX > 65535 #define DB_LOCK 0x20000000 /* Do locking. */ #define DB_SHMEM 0x40000000 /* Use shared memory. */ #define DB_TXN 0x80000000 /* Do transactions. */ #else #define DB_LOCK 0x2000 /* Do locking. */ #define DB_SHMEM 0x4000 /* Use shared memory. */ #define DB_TXN 0x8000 /* Do transactions. */ #endif /* Access method description structure. */ typedef struct __db { DBTYPE type; /* Underlying db type. */ int (*close)(struct __db *); int (*del)(const struct __db *, const DBT *, u_int); int (*get)(const struct __db *, const DBT *, DBT *, u_int); int (*put)(const struct __db *, DBT *, const DBT *, u_int); int (*seq)(const struct __db *, DBT *, DBT *, u_int); int (*sync)(const struct __db *, u_int); void *internal; /* Access method private. */ int (*fd)(const struct __db *); } DB; #define BTREEMAGIC 0x053162 #define BTREEVERSION 3 /* Structure used to pass parameters to the btree routines. */ typedef struct { #define R_DUP 0x01 /* duplicate keys */ u_long flags; u_int cachesize; /* bytes to cache */ int maxkeypage; /* maximum keys per page */ int minkeypage; /* minimum keys per page */ u_int psize; /* page size */ int (*compare) /* comparison function */ (const DBT *, const DBT *); size_t (*prefix) /* prefix function */ (const DBT *, const DBT *); int lorder; /* byte order */ } BTREEINFO; #define HASHMAGIC 0x061561L #define HASHVERSION 2 /* Structure used to pass parameters to the hashing routines. */ typedef struct { u_int bsize; /* bucket size */ u_int ffactor; /* fill factor */ u_int nelem; /* number of elements */ u_int cachesize; /* bytes to cache */ __uint32_t /* hash function */ (*hash)(const void *, size_t); int lorder; /* byte order */ } HASHINFO; /* Structure used to pass parameters to the record routines. */ typedef struct { #define R_FIXEDLEN 0x01 /* fixed-length records */ #define R_NOKEY 0x02 /* key not required */ #define R_SNAPSHOT 0x04 /* snapshot the input */ u_long flags; u_int cachesize; /* bytes to cache */ u_int psize; /* page size */ int lorder; /* byte order */ size_t reclen; /* record length (fixed-length records) */ u_char bval; /* delimiting byte (variable-length records */ char *bfname; /* btree file name */ } RECNOINFO; /* * Little endian <==> big endian 32-bit swap macros. * M_32_SWAP swap a memory location * P_32_SWAP swap a referenced memory location * P_32_COPY swap from one location to another */ #define M_32_SWAP(a) { \ __uint32_t _tmp = a; \ ((char *)&a)[0] = ((char *)&_tmp)[3]; \ ((char *)&a)[1] = ((char *)&_tmp)[2]; \ ((char *)&a)[2] = ((char *)&_tmp)[1]; \ ((char *)&a)[3] = ((char *)&_tmp)[0]; \ } #define P_32_SWAP(a) { \ __uint32_t _tmp = *(__uint32_t *)a; \ ((char *)a)[0] = ((char *)&_tmp)[3]; \ ((char *)a)[1] = ((char *)&_tmp)[2]; \ ((char *)a)[2] = ((char *)&_tmp)[1]; \ ((char *)a)[3] = ((char *)&_tmp)[0]; \ } #define P_32_COPY(a, b) { \ ((char *)&(b))[0] = ((char *)&(a))[3]; \ ((char *)&(b))[1] = ((char *)&(a))[2]; \ ((char *)&(b))[2] = ((char *)&(a))[1]; \ ((char *)&(b))[3] = ((char *)&(a))[0]; \ } /* * Little endian <==> big endian 16-bit swap macros. * M_16_SWAP swap a memory location * P_16_SWAP swap a referenced memory location * P_16_COPY swap from one location to another */ #define M_16_SWAP(a) { \ __uint16_t _tmp = a; \ ((char *)&a)[0] = ((char *)&_tmp)[1]; \ ((char *)&a)[1] = ((char *)&_tmp)[0]; \ } #define P_16_SWAP(a) { \ __uint16_t _tmp = *(__uint16_t *)a; \ ((char *)a)[0] = ((char *)&_tmp)[1]; \ ((char *)a)[1] = ((char *)&_tmp)[0]; \ } #define P_16_COPY(a, b) { \ ((char *)&(b))[0] = ((char *)&(a))[1]; \ ((char *)&(b))[1] = ((char *)&(a))[0]; \ } __BEGIN_DECLS DB *dbopen(const char *, int, int, DBTYPE, const void *); #ifdef __DBINTERFACE_PRIVATE DB *__bt_open(const char *, int, int, const BTREEINFO *, int); DB *__hash_open(const char *, int, int, int, const HASHINFO *); DB *__rec_open(const char *, int, int, const RECNOINFO *, int); void __dbpanic(DB *dbp); #endif __END_DECLS #endif /* !_DB_H_ */ picolibc-1.7.4/newlib/libc/search/extern.h000066400000000000000000000056651414576234500204520ustar00rootroot00000000000000/*- * Copyright (c) 1991, 1993, 1994 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)extern.h 8.4 (Berkeley) 6/16/94 * $FreeBSD: src/lib/libc/db/hash/extern.h,v 1.3 2002/03/22 09:18:22 obrien Exp $ */ BUFHEAD *__add_ovflpage(HTAB *, BUFHEAD *); int __addel(HTAB *, BUFHEAD *, const DBT *, const DBT *); int __big_delete(HTAB *, BUFHEAD *); int __big_insert(HTAB *, BUFHEAD *, const DBT *, const DBT *); int __big_keydata(HTAB *, BUFHEAD *, DBT *, DBT *, int); int __big_return(HTAB *, BUFHEAD *, int, DBT *, int); int __big_split(HTAB *, BUFHEAD *, BUFHEAD *, BUFHEAD *, int, __uint32_t, SPLIT_RETURN *); int __buf_free(HTAB *, int, int); void __buf_init(HTAB *, int); __uint32_t __call_hash(HTAB *, char *, int); int __delpair(HTAB *, BUFHEAD *, int); int __expand_table(HTAB *); int __find_bigpair(HTAB *, BUFHEAD *, int, char *, int); __uint16_t __find_last_page(HTAB *, BUFHEAD **); void __free_ovflpage(HTAB *, BUFHEAD *); BUFHEAD *__get_buf(HTAB *, __uint32_t, BUFHEAD *, int); int __get_page(HTAB *, char *, __uint32_t, int, int, int); int __ibitmap(HTAB *, int, int, int); __uint32_t __log2(__uint32_t); int __put_page(HTAB *, char *, __uint32_t, int, int); void __reclaim_buf(HTAB *, BUFHEAD *); int __split_page(HTAB *, __uint32_t, __uint32_t); /* Default hash routine. */ extern __uint32_t (*__default_hash)(const void *, size_t); #ifdef HASH_STATISTICS extern int hash_accesses, hash_collisions, hash_expansions, hash_overflows; #endif picolibc-1.7.4/newlib/libc/search/hash.c000066400000000000000000000603631414576234500200570ustar00rootroot00000000000000/*- * Copyright (c) 1990, 1993, 1994 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Margo Seltzer. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _DEFAULT_SOURCE #include #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)hash.c 8.9 (Berkeley) 6/16/94"; #endif /* LIBC_SCCS and not lint */ #include #include #include #include #include #include #include #include #include #ifdef DEBUG #include #endif #define __DBINTERFACE_PRIVATE /* activate prototypes from db_local.h */ #include "db_local.h" #include "hash.h" #include "page.h" #include "extern.h" static int alloc_segs(HTAB *, int); static int flush_meta(HTAB *); static int hash_access(HTAB *, ACTION, DBT *, DBT *); static int hash_close(DB *); static int hash_delete(const DB *, const DBT *, u_int); static int hash_fd(const DB *); static int hash_get(const DB *, const DBT *, DBT *, u_int); static int hash_put(const DB *, DBT *, const DBT *, u_int); static void *hash_realloc(SEGMENT **, int, int); static int hash_seq(const DB *, DBT *, DBT *, u_int); static int hash_sync(const DB *, u_int); static int hdestroy(HTAB *); static HTAB *init_hash(HTAB *, const char *, const HASHINFO *); static int init_htab(HTAB *, int); #if (BYTE_ORDER == LITTLE_ENDIAN) static void swap_header(HTAB *); static void swap_header_copy(HASHHDR *, HASHHDR *); #endif /* Macros for min/max. */ #ifndef MIN #define MIN(a,b) (((a)<(b))?(a):(b)) #endif #ifndef MAX #define MAX(a,b) (((a)>(b))?(a):(b)) #endif /* Fast arithmetic, relying on powers of 2, */ #define MOD(x, y) ((x) & ((y) - 1)) #define RETURN_ERROR(ERR, LOC) { save_errno = ERR; goto LOC; } /* Return values */ #define SUCCESS (0) #define ERROR (-1) #define ABNORMAL (1) #ifdef HASH_STATISTICS int hash_accesses, hash_collisions, hash_expansions, hash_overflows; #endif /************************** INTERFACE ROUTINES ***************************/ /* OPEN/CLOSE */ extern DB * __hash_open (const char *file, int flags, int mode, int dflags, const HASHINFO *info) /* Special directives for create */ { HTAB *hashp; (void) dflags; #ifdef __USE_INTERNAL_STAT64 struct stat64 statbuf; #else struct stat statbuf; #endif DB *dbp; int bpages, hdrsize, new_table, nsegs, save_errno; if ((flags & O_ACCMODE) == O_WRONLY) { errno = EINVAL; return (NULL); } if (!(hashp = (HTAB *)calloc(1, sizeof(HTAB)))) return (NULL); hashp->fp = -1; /* * Even if user wants write only, we need to be able to read * the actual file, so we need to open it read/write. But, the * field in the hashp structure needs to be accurate so that * we can check accesses. */ hashp->flags = flags; new_table = 0; if (!file || (flags & O_TRUNC) || #ifdef __USE_INTERNAL_STAT64 (stat64(file, &statbuf) && (errno == ENOENT))) { #else (stat(file, &statbuf) && (errno == ENOENT))) { #endif if (errno == ENOENT) errno = 0; /* Just in case someone looks at errno */ new_table = 1; } if (file) { if ((hashp->fp = open(file, flags, mode)) == -1) RETURN_ERROR(errno, error0); /* if the .db file is empty, and we had permission to create a new .db file, then reinitialize the database */ if ((flags & O_CREAT) && #ifdef __USE_INTERNAL_STAT64 fstat64(hashp->fp, &statbuf) == 0 && statbuf.st_size == 0) #else fstat(hashp->fp, &statbuf) == 0 && statbuf.st_size == 0) #endif new_table = 1; #ifdef HAVE_FCNTL (void)fcntl(hashp->fp, F_SETFD, 1); #endif } if (new_table) { if (!(hashp = init_hash(hashp, file, (HASHINFO *)info))) RETURN_ERROR(errno, error1); } else { /* Table already exists */ if (info && info->hash) hashp->hash = info->hash; else hashp->hash = __default_hash; hdrsize = read(hashp->fp, &hashp->hdr, sizeof(HASHHDR)); #if (BYTE_ORDER == LITTLE_ENDIAN) swap_header(hashp); #endif if (hdrsize == -1) RETURN_ERROR(errno, error1); if (hdrsize != sizeof(HASHHDR)) RETURN_ERROR(EFTYPE, error1); /* Verify file type, versions and hash function */ if (hashp->MAGIC != HASHMAGIC) RETURN_ERROR(EFTYPE, error1); #define OLDHASHVERSION 1 if (hashp->HASH_VERSION != HASHVERSION && hashp->HASH_VERSION != OLDHASHVERSION) RETURN_ERROR(EFTYPE, error1); if (hashp->hash(CHARKEY, sizeof(CHARKEY)) != hashp->H_CHARKEY) RETURN_ERROR(EFTYPE, error1); /* Check bucket size isn't too big for target int. */ if (hashp->BSIZE > INT_MAX) RETURN_ERROR(EFTYPE, error1); /* * Figure out how many segments we need. Max_Bucket is the * maximum bucket number, so the number of buckets is * max_bucket + 1. */ nsegs = (hashp->MAX_BUCKET + 1 + hashp->SGSIZE - 1) / hashp->SGSIZE; hashp->nsegs = 0; if (alloc_segs(hashp, nsegs)) /* * If alloc_segs fails, table will have been destroyed * and errno will have been set. */ return (NULL); /* Read in bitmaps */ bpages = (hashp->SPARES[hashp->OVFL_POINT] + (hashp->BSIZE << BYTE_SHIFT) - 1) >> (hashp->BSHIFT + BYTE_SHIFT); hashp->nmaps = bpages; (void)memset(&hashp->mapp[0], 0, bpages * sizeof(__uint32_t *)); } /* Initialize Buffer Manager */ if (info && info->cachesize) __buf_init(hashp, info->cachesize); else __buf_init(hashp, DEF_BUFSIZE); hashp->new_file = new_table; hashp->save_file = file && (hashp->flags & O_RDWR); hashp->cbucket = -1; if (!(dbp = (DB *)malloc(sizeof(DB)))) { save_errno = errno; hdestroy(hashp); errno = save_errno; return (NULL); } dbp->internal = hashp; dbp->close = hash_close; dbp->del = hash_delete; dbp->fd = hash_fd; dbp->get = hash_get; dbp->put = hash_put; dbp->seq = hash_seq; dbp->sync = hash_sync; dbp->type = DB_HASH; #ifdef DEBUG (void)fprintf(stderr, "%s\n%s%x\n%s%d\n%s%d\n%s%d\n%s%d\n%s%d\n%s%d\n%s%d\n%s%d\n%s%d\n%s%x\n%s%x\n%s%d\n%s%d\n", "init_htab:", "TABLE POINTER ", hashp, "BUCKET SIZE ", hashp->BSIZE, "BUCKET SHIFT ", hashp->BSHIFT, "DIRECTORY SIZE ", hashp->DSIZE, "SEGMENT SIZE ", hashp->SGSIZE, "SEGMENT SHIFT ", hashp->SSHIFT, "FILL FACTOR ", hashp->FFACTOR, "MAX BUCKET ", hashp->MAX_BUCKET, "OVFL POINT ", hashp->OVFL_POINT, "LAST FREED ", hashp->LAST_FREED, "HIGH MASK ", hashp->HIGH_MASK, "LOW MASK ", hashp->LOW_MASK, "NSEGS ", hashp->nsegs, "NKEYS ", hashp->NKEYS); #endif #ifdef HASH_STATISTICS hash_overflows = hash_accesses = hash_collisions = hash_expansions = 0; #endif return (dbp); error1: if (hashp != NULL) (void)close(hashp->fp); error0: free(hashp); errno = save_errno; return (NULL); } static int hash_close(DB *dbp) { HTAB *hashp; int retval; if (!dbp) return (ERROR); hashp = (HTAB *)dbp->internal; retval = hdestroy(hashp); free(dbp); return (retval); } static int hash_fd(const DB *dbp) { HTAB *hashp; if (!dbp) return (ERROR); hashp = (HTAB *)dbp->internal; if (hashp->fp == -1) { errno = ENOENT; return (-1); } return (hashp->fp); } /************************** LOCAL CREATION ROUTINES **********************/ static HTAB * init_hash(HTAB *hashp, const char *file, const HASHINFO *info) { #ifdef __USE_INTERNAL_STAT64 struct stat64 statbuf; #else struct stat statbuf; #endif int nelem; nelem = 1; hashp->NKEYS = 0; hashp->LORDER = DB_BYTE_ORDER; hashp->BSIZE = DEF_BUCKET_SIZE; hashp->BSHIFT = DEF_BUCKET_SHIFT; hashp->SGSIZE = DEF_SEGSIZE; hashp->SSHIFT = DEF_SEGSIZE_SHIFT; hashp->DSIZE = DEF_DIRSIZE; hashp->FFACTOR = DEF_FFACTOR; hashp->hash = __default_hash; memset(hashp->SPARES, 0, sizeof(hashp->SPARES)); memset(hashp->BITMAPS, 0, sizeof (hashp->BITMAPS)); /* Fix bucket size to be optimal for file system */ if (file != NULL) { #ifdef __USE_INTERNAL_STAT64 if (stat64(file, &statbuf)) #else if (stat(file, &statbuf)) #endif return (NULL); hashp->BSIZE = MIN(statbuf.st_blksize, MAX_BSIZE); hashp->BSHIFT = __log2(hashp->BSIZE); } if (info) { if (info->bsize) { /* Round pagesize up to power of 2 */ hashp->BSHIFT = __log2(info->bsize); hashp->BSIZE = 1 << hashp->BSHIFT; if (hashp->BSIZE > MAX_BSIZE) { errno = EINVAL; return (NULL); } } if (info->ffactor) hashp->FFACTOR = info->ffactor; if (info->hash) hashp->hash = info->hash; if (info->nelem) nelem = info->nelem; if (info->lorder) { if (info->lorder != DB_BIG_ENDIAN && info->lorder != DB_LITTLE_ENDIAN) { errno = EINVAL; return (NULL); } hashp->LORDER = info->lorder; } } /* init_htab should destroy the table and set errno if it fails */ if (init_htab(hashp, nelem)) return (NULL); else return (hashp); } /* * This calls alloc_segs which may run out of memory. Alloc_segs will destroy * the table and set errno, so we just pass the error information along. * * Returns 0 on No Error */ static int init_htab(HTAB *hashp, int nelem) { int nbuckets, nsegs; int l2; /* * Divide number of elements by the fill factor and determine a * desired number of buckets. Allocate space for the next greater * power of two number of buckets. */ nelem = (nelem - 1) / hashp->FFACTOR + 1; l2 = __log2(MAX(nelem, 2)); nbuckets = 1 << l2; hashp->SPARES[l2] = l2 + 1; hashp->SPARES[l2 + 1] = l2 + 1; hashp->OVFL_POINT = l2; hashp->LAST_FREED = 2; /* First bitmap page is at: splitpoint l2 page offset 1 */ if (__ibitmap(hashp, OADDR_OF(l2, 1), l2 + 1, 0)) return (-1); hashp->MAX_BUCKET = hashp->LOW_MASK = nbuckets - 1; hashp->HIGH_MASK = (nbuckets << 1) - 1; hashp->HDRPAGES = ((MAX(sizeof(HASHHDR), MINHDRSIZE) - 1) >> hashp->BSHIFT) + 1; nsegs = (nbuckets - 1) / hashp->SGSIZE + 1; nsegs = 1 << __log2(nsegs); if (nsegs > hashp->DSIZE) hashp->DSIZE = nsegs; return (alloc_segs(hashp, nsegs)); } /********************** DESTROY/CLOSE ROUTINES ************************/ /* * Flushes any changes to the file if necessary and destroys the hashp * structure, freeing all allocated space. */ static int hdestroy(HTAB *hashp) { int i, save_errno; save_errno = 0; #ifdef HASH_STATISTICS (void)fprintf(stderr, "hdestroy: accesses %ld collisions %ld\n", hash_accesses, hash_collisions); (void)fprintf(stderr, "hdestroy: expansions %ld\n", hash_expansions); (void)fprintf(stderr, "hdestroy: overflows %ld\n", hash_overflows); (void)fprintf(stderr, "keys %ld maxp %d segmentcount %d\n", hashp->NKEYS, hashp->MAX_BUCKET, hashp->nsegs); for (i = 0; i < NCACHED; i++) (void)fprintf(stderr, "spares[%d] = %d\n", i, hashp->SPARES[i]); #endif /* * Call on buffer manager to free buffers, and if required, * write them to disk. */ if (__buf_free(hashp, 1, hashp->save_file)) save_errno = errno; if (hashp->dir) { free(*hashp->dir); /* Free initial segments */ /* Free extra segments */ while (hashp->exsegs--) free(hashp->dir[--hashp->nsegs]); free(hashp->dir); } if (flush_meta(hashp) && !save_errno) save_errno = errno; /* Free Bigmaps */ for (i = 0; i < hashp->nmaps; i++) if (hashp->mapp[i]) free(hashp->mapp[i]); if (hashp->fp != -1) (void)close(hashp->fp); free(hashp); if (save_errno) { errno = save_errno; return (ERROR); } return (SUCCESS); } /* * Write modified pages to disk * * Returns: * 0 == OK * -1 ERROR */ static int hash_sync(const DB *dbp, u_int flags) { HTAB *hashp; if (flags != 0) { errno = EINVAL; return (ERROR); } if (!dbp) return (ERROR); hashp = (HTAB *)dbp->internal; if (!hashp->save_file) return (0); if (__buf_free(hashp, 0, 1) || flush_meta(hashp)) return (ERROR); hashp->new_file = 0; return (0); } /* * Returns: * 0 == OK * -1 indicates that errno should be set */ static int flush_meta(HTAB *hashp) { HASHHDR *whdrp; #if (BYTE_ORDER == LITTLE_ENDIAN) HASHHDR whdr; #endif int fp, i, wsize; if (!hashp->save_file) return (0); hashp->MAGIC = HASHMAGIC; hashp->HASH_VERSION = HASHVERSION; hashp->H_CHARKEY = hashp->hash(CHARKEY, sizeof(CHARKEY)); fp = hashp->fp; whdrp = &hashp->hdr; #if (BYTE_ORDER == LITTLE_ENDIAN) whdrp = &whdr; swap_header_copy(&hashp->hdr, whdrp); #endif if ((lseek(fp, (off_t)0, SEEK_SET) == -1) || ((wsize = write(fp, whdrp, sizeof(HASHHDR))) == -1)) return (-1); else if (wsize != sizeof(HASHHDR)) { errno = EFTYPE; hashp->error = errno; return (-1); } for (i = 0; i < NCACHED; i++) if (hashp->mapp[i]) if (__put_page(hashp, (char *)hashp->mapp[i], hashp->BITMAPS[i], 0, 1)) return (-1); return (0); } /*******************************SEARCH ROUTINES *****************************/ /* * All the access routines return * * Returns: * 0 on SUCCESS * 1 to indicate an external ERROR (i.e. key not found, etc) * -1 to indicate an internal ERROR (i.e. out of memory, etc) */ static int hash_get(const DB *dbp, const DBT *key, DBT *data, u_int flag) { HTAB *hashp; hashp = (HTAB *)dbp->internal; if (flag) { hashp->error = errno = EINVAL; return (ERROR); } return (hash_access(hashp, HASH_GET, (DBT *)key, data)); } static int hash_put(const DB *dbp, DBT *key, const DBT *data, u_int flag) { HTAB *hashp; hashp = (HTAB *)dbp->internal; if (flag && flag != R_NOOVERWRITE) { hashp->error = EINVAL; errno = EINVAL; return (ERROR); } if ((hashp->flags & O_ACCMODE) == O_RDONLY) { hashp->error = errno = EPERM; return (ERROR); } return (hash_access(hashp, flag == R_NOOVERWRITE ? HASH_PUTNEW : HASH_PUT, (DBT *)key, (DBT *)data)); } static int hash_delete(const DB *dbp, const DBT *key, u_int flag) /* Ignored */ { HTAB *hashp; hashp = (HTAB *)dbp->internal; if (flag && flag != R_CURSOR) { hashp->error = errno = EINVAL; return (ERROR); } if ((hashp->flags & O_ACCMODE) == O_RDONLY) { hashp->error = errno = EPERM; return (ERROR); } return (hash_access(hashp, HASH_DELETE, (DBT *)key, NULL)); } /* * Assume that hashp has been set in wrapper routine. */ static int hash_access(HTAB *hashp, ACTION action, DBT *key, DBT *val) { BUFHEAD *rbufp; BUFHEAD *bufp, *save_bufp; __uint16_t *bp; int n, ndx, off, size; char *kp; __uint16_t pageno; #ifdef HASH_STATISTICS hash_accesses++; #endif off = hashp->BSIZE; size = key->size; kp = (char *)key->data; rbufp = __get_buf(hashp, __call_hash(hashp, kp, size), NULL, 0); if (!rbufp) return (ERROR); save_bufp = rbufp; /* Pin the bucket chain */ rbufp->flags |= BUF_PIN; for (bp = (__uint16_t *)rbufp->page, n = *bp++, ndx = 1; ndx < n;) if (bp[1] >= REAL_KEY) { /* Real key/data pair */ if (size == off - *bp && memcmp(kp, rbufp->page + *bp, size) == 0) goto found; off = bp[1]; #ifdef HASH_STATISTICS hash_collisions++; #endif bp += 2; ndx += 2; } else if (bp[1] == OVFLPAGE) { rbufp = __get_buf(hashp, *bp, rbufp, 0); if (!rbufp) { save_bufp->flags &= ~BUF_PIN; return (ERROR); } /* FOR LOOP INIT */ bp = (__uint16_t *)rbufp->page; n = *bp++; ndx = 1; off = hashp->BSIZE; } else if (bp[1] < REAL_KEY) { if ((ndx = __find_bigpair(hashp, rbufp, ndx, kp, size)) > 0) goto found; if (ndx == -2) { bufp = rbufp; if (!(pageno = __find_last_page(hashp, &bufp))) { ndx = 0; rbufp = bufp; break; /* FOR */ } rbufp = __get_buf(hashp, pageno, bufp, 0); if (!rbufp) { save_bufp->flags &= ~BUF_PIN; return (ERROR); } /* FOR LOOP INIT */ bp = (__uint16_t *)rbufp->page; n = *bp++; ndx = 1; off = hashp->BSIZE; } else { save_bufp->flags &= ~BUF_PIN; return (ERROR); } } /* Not found */ switch (action) { case HASH_PUT: case HASH_PUTNEW: if (__addel(hashp, rbufp, key, val)) { save_bufp->flags &= ~BUF_PIN; return (ERROR); } else { save_bufp->flags &= ~BUF_PIN; return (SUCCESS); } case HASH_GET: case HASH_DELETE: default: save_bufp->flags &= ~BUF_PIN; return (ABNORMAL); } found: switch (action) { case HASH_PUTNEW: save_bufp->flags &= ~BUF_PIN; return (ABNORMAL); case HASH_GET: bp = (__uint16_t *)rbufp->page; if (bp[ndx + 1] < REAL_KEY) { if (__big_return(hashp, rbufp, ndx, val, 0)) return (ERROR); } else { val->data = (u_char *)rbufp->page + (int)bp[ndx + 1]; val->size = bp[ndx] - bp[ndx + 1]; } break; case HASH_PUT: if ((__delpair(hashp, rbufp, ndx)) || (__addel(hashp, rbufp, key, val))) { save_bufp->flags &= ~BUF_PIN; return (ERROR); } break; case HASH_DELETE: if (__delpair(hashp, rbufp, ndx)) return (ERROR); break; default: abort(); } save_bufp->flags &= ~BUF_PIN; return (SUCCESS); } static int hash_seq(const DB *dbp, DBT *key, DBT *data, u_int flag) { int32_t bucket; BUFHEAD *bufp; HTAB *hashp; __uint16_t *bp, ndx; hashp = (HTAB *)dbp->internal; if (flag && flag != R_FIRST && flag != R_NEXT) { hashp->error = errno = EINVAL; return (ERROR); } #ifdef HASH_STATISTICS hash_accesses++; #endif if ((hashp->cbucket < 0) || (flag == R_FIRST)) { hashp->cbucket = 0; hashp->cndx = 1; hashp->cpage = NULL; } for (bp = NULL; !bp || !bp[0]; ) { if (!(bufp = hashp->cpage)) { for (bucket = hashp->cbucket; bucket <= hashp->MAX_BUCKET; bucket++, hashp->cndx = 1) { bufp = __get_buf(hashp, bucket, NULL, 0); if (!bufp) return (ERROR); hashp->cpage = bufp; bp = (__uint16_t *)bufp->page; if (bp[0]) break; } hashp->cbucket = bucket; if (hashp->cbucket > hashp->MAX_BUCKET) { hashp->cbucket = -1; return (ABNORMAL); } } else bp = (__uint16_t *)hashp->cpage->page; #ifdef DEBUG assert(bp); assert(bufp); #endif while (bp[hashp->cndx + 1] == OVFLPAGE) { bufp = hashp->cpage = __get_buf(hashp, bp[hashp->cndx], bufp, 0); if (!bufp) return (ERROR); bp = (__uint16_t *)(bufp->page); hashp->cndx = 1; } if (!bp[0]) { hashp->cpage = NULL; ++hashp->cbucket; } } ndx = hashp->cndx; if (bp[ndx + 1] < REAL_KEY) { if (__big_keydata(hashp, bufp, key, data, 1)) return (ERROR); } else { key->data = (u_char *)hashp->cpage->page + bp[ndx]; key->size = (ndx > 1 ? bp[ndx - 1] : hashp->BSIZE) - bp[ndx]; data->data = (u_char *)hashp->cpage->page + bp[ndx + 1]; data->size = bp[ndx] - bp[ndx + 1]; ndx += 2; if (ndx > bp[0]) { hashp->cpage = NULL; hashp->cbucket++; hashp->cndx = 1; } else hashp->cndx = ndx; } return (SUCCESS); } /********************************* UTILITIES ************************/ /* * Returns: * 0 ==> OK * -1 ==> Error */ extern int __expand_table(HTAB *hashp) { int32_t old_bucket, new_bucket; int dirsize, new_segnum, spare_ndx; #ifdef HASH_STATISTICS hash_expansions++; #endif new_bucket = ++hashp->MAX_BUCKET; old_bucket = (hashp->MAX_BUCKET & hashp->LOW_MASK); new_segnum = new_bucket >> hashp->SSHIFT; /* Check if we need a new segment */ if (new_segnum >= hashp->nsegs) { /* Check if we need to expand directory */ if (new_segnum >= hashp->DSIZE) { /* Reallocate directory */ dirsize = hashp->DSIZE * sizeof(SEGMENT *); if (!hash_realloc(&hashp->dir, dirsize, dirsize << 1)) return (-1); hashp->DSIZE = dirsize << 1; } if ((hashp->dir[new_segnum] = (SEGMENT)calloc(hashp->SGSIZE, sizeof(SEGMENT))) == NULL) return (-1); hashp->exsegs++; hashp->nsegs++; } /* * If the split point is increasing (MAX_BUCKET's log base 2 * * increases), we need to copy the current contents of the spare * split bucket to the next bucket. */ spare_ndx = __log2(hashp->MAX_BUCKET + 1); if (spare_ndx > hashp->OVFL_POINT) { hashp->SPARES[spare_ndx] = hashp->SPARES[hashp->OVFL_POINT]; hashp->OVFL_POINT = spare_ndx; } if (new_bucket > hashp->HIGH_MASK) { /* Starting a new doubling */ hashp->LOW_MASK = hashp->HIGH_MASK; hashp->HIGH_MASK = new_bucket | hashp->LOW_MASK; } /* Relocate records to the new bucket */ return (__split_page(hashp, old_bucket, new_bucket)); } /* * If realloc guarantees that the pointer is not destroyed if the realloc * fails, then this routine can go away. */ static void * hash_realloc(SEGMENT **p_ptr, int oldsize, int newsize) { void *p; if ( (p = malloc(newsize)) ) { memmove(p, *p_ptr, oldsize); memset((char *)p + oldsize, 0, newsize - oldsize); free(*p_ptr); *p_ptr = p; } return (p); } extern __uint32_t __call_hash(HTAB *hashp, char *k, int len) { int32_t n, bucket; n = hashp->hash(k, len); bucket = n & hashp->HIGH_MASK; if (bucket > hashp->MAX_BUCKET) bucket = bucket & hashp->LOW_MASK; return (bucket); } /* * Allocate segment table. On error, destroy the table and set errno. * * Returns 0 on success */ static int alloc_segs(HTAB *hashp, int nsegs) { int i; SEGMENT store; int save_errno; if ((hashp->dir = (SEGMENT *)calloc(hashp->DSIZE, sizeof(SEGMENT *))) == NULL) { save_errno = errno; (void)hdestroy(hashp); errno = save_errno; return (-1); } /* Allocate segments */ if ((store = (SEGMENT)calloc(nsegs << hashp->SSHIFT, sizeof(SEGMENT))) == NULL) { save_errno = errno; (void)hdestroy(hashp); errno = save_errno; return (-1); } for (i = 0; i < nsegs; i++, hashp->nsegs++) hashp->dir[i] = &store[i << hashp->SSHIFT]; return (0); } #if (BYTE_ORDER == LITTLE_ENDIAN) /* * Hashp->hdr needs to be byteswapped. */ static void swap_header_copy(HASHHDR *srcp, HASHHDR *destp) { int i; P_32_COPY(srcp->magic, destp->magic); P_32_COPY(srcp->version, destp->version); P_32_COPY(srcp->lorder, destp->lorder); P_32_COPY(srcp->bsize, destp->bsize); P_32_COPY(srcp->bshift, destp->bshift); P_32_COPY(srcp->dsize, destp->dsize); P_32_COPY(srcp->ssize, destp->ssize); P_32_COPY(srcp->sshift, destp->sshift); P_32_COPY(srcp->ovfl_point, destp->ovfl_point); P_32_COPY(srcp->last_freed, destp->last_freed); P_32_COPY(srcp->max_bucket, destp->max_bucket); P_32_COPY(srcp->high_mask, destp->high_mask); P_32_COPY(srcp->low_mask, destp->low_mask); P_32_COPY(srcp->ffactor, destp->ffactor); P_32_COPY(srcp->nkeys, destp->nkeys); P_32_COPY(srcp->hdrpages, destp->hdrpages); P_32_COPY(srcp->h_charkey, destp->h_charkey); for (i = 0; i < NCACHED; i++) { P_32_COPY(srcp->spares[i], destp->spares[i]); P_16_COPY(srcp->bitmaps[i], destp->bitmaps[i]); } } static void swap_header(HTAB *hashp) { HASHHDR *hdrp; int i; hdrp = &hashp->hdr; M_32_SWAP(hdrp->magic); M_32_SWAP(hdrp->version); M_32_SWAP(hdrp->lorder); M_32_SWAP(hdrp->bsize); M_32_SWAP(hdrp->bshift); M_32_SWAP(hdrp->dsize); M_32_SWAP(hdrp->ssize); M_32_SWAP(hdrp->sshift); M_32_SWAP(hdrp->ovfl_point); M_32_SWAP(hdrp->last_freed); M_32_SWAP(hdrp->max_bucket); M_32_SWAP(hdrp->high_mask); M_32_SWAP(hdrp->low_mask); M_32_SWAP(hdrp->ffactor); M_32_SWAP(hdrp->nkeys); M_32_SWAP(hdrp->hdrpages); M_32_SWAP(hdrp->h_charkey); for (i = 0; i < NCACHED; i++) { M_32_SWAP(hdrp->spares[i]); M_16_SWAP(hdrp->bitmaps[i]); } } #endif picolibc-1.7.4/newlib/libc/search/hash.h000066400000000000000000000247631414576234500200700ustar00rootroot00000000000000/*- * Copyright (c) 1990, 1993, 1994 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Margo Seltzer. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)hash.h 8.3 (Berkeley) 5/31/94 * $FreeBSD: src/lib/libc/db/hash/hash.h,v 1.6 2002/03/21 22:46:26 obrien Exp $ */ #include #define __need_size_t #include #include /* Check that newlib understands the byte order of its target system. */ #ifndef _BYTE_ORDER #error _BYTE_ORDER not defined by sys/param.h #endif /* Define DB endianness constants based on target endianness. */ #define DB_LITTLE_ENDIAN 1234 #define DB_BIG_ENDIAN 4321 #if (_BYTE_ORDER == _LITTLE_ENDIAN) #define DB_BYTE_ORDER DB_LITTLE_ENDIAN #else #define DB_BYTE_ORDER DB_BIG_ENDIAN #endif /* Operations */ typedef enum { HASH_GET, HASH_PUT, HASH_PUTNEW, HASH_DELETE, HASH_FIRST, HASH_NEXT } ACTION; /* Buffer Management structures */ typedef struct _bufhead BUFHEAD; struct _bufhead { BUFHEAD *prev; /* LRU links */ BUFHEAD *next; /* LRU links */ BUFHEAD *ovfl; /* Overflow page buffer header */ __uint32_t addr; /* Address of this page */ char *page; /* Actual page data */ char flags; #define BUF_MOD 0x0001 #define BUF_DISK 0x0002 #define BUF_BUCKET 0x0004 #define BUF_PIN 0x0008 }; #define IS_BUCKET(X) ((X) & BUF_BUCKET) typedef BUFHEAD **SEGMENT; /* Hash Table Information */ typedef struct hashhdr { /* Disk resident portion */ int32_t magic; /* Magic NO for hash tables */ int32_t version; /* Version ID */ __uint32_t lorder; /* Byte Order */ int32_t bsize; /* Bucket/Page Size */ int32_t bshift; /* Bucket shift */ int32_t dsize; /* Directory Size */ int32_t ssize; /* Segment Size */ int32_t sshift; /* Segment shift */ int32_t ovfl_point; /* Where overflow pages are being * allocated */ int32_t last_freed; /* Last overflow page freed */ int32_t max_bucket; /* ID of Maximum bucket in use */ int32_t high_mask; /* Mask to modulo into entire table */ int32_t low_mask; /* Mask to modulo into lower half of * table */ int32_t ffactor; /* Fill factor */ int32_t nkeys; /* Number of keys in hash table */ int32_t hdrpages; /* Size of table header */ uint32_t h_charkey; /* value of hash(CHARKEY) */ #define NCACHED 32 /* number of bit maps and spare * points */ int32_t spares[NCACHED];/* spare pages for overflow */ __uint16_t bitmaps[NCACHED]; /* address of overflow page * bitmaps */ } HASHHDR; typedef struct htab { /* Memory resident data structure */ HASHHDR hdr; /* Header */ int nsegs; /* Number of allocated segments */ int exsegs; /* Number of extra allocated * segments */ __uint32_t /* Hash function */ (*hash)(const void *, size_t); int flags; /* Flag values */ int fp; /* File pointer */ char *tmp_buf; /* Temporary Buffer for BIG data */ char *tmp_key; /* Temporary Buffer for BIG keys */ BUFHEAD *cpage; /* Current page */ int32_t cbucket; /* Current bucket */ int cndx; /* Index of next item on cpage */ int error; /* Error Number -- for DBM * compatibility */ int new_file; /* Indicates if fd is backing store * or no */ int save_file; /* Indicates whether we need to flush * file at * exit */ __uint32_t *mapp[NCACHED]; /* Pointers to page maps */ int nmaps; /* Initial number of bitmaps */ int nbufs; /* Number of buffers left to * allocate */ BUFHEAD bufhead; /* Header of buffer lru list */ SEGMENT *dir; /* Hash Bucket directory */ } HTAB; /* * Constants */ #if INT_MAX == 32767 #define MAX_BSIZE 4096 #else #define MAX_BSIZE 65536 /* 2^16 */ #endif #define MIN_BUFFERS 6 #define MINHDRSIZE 512 #if INT_MAX == 32767 #define DEF_BUFSIZE 4096 #else #define DEF_BUFSIZE 65536 /* 64 K */ #endif #define DEF_BUCKET_SIZE 4096 #define DEF_BUCKET_SHIFT 12 /* log2(BUCKET) */ #define DEF_SEGSIZE 256 #define DEF_SEGSIZE_SHIFT 8 /* log2(SEGSIZE) */ #define DEF_DIRSIZE 256 #define DEF_FFACTOR 65536 #define MIN_FFACTOR 4 #define SPLTMAX 8 #define CHARKEY "%$sniglet^&" #define NUMKEY 1038583 #define BYTE_SHIFT 3 #define INT_TO_BYTE 2 #define INT_BYTE_SHIFT 5 #define ALL_SET ((__uint32_t)0xFFFFFFFF) #define ALL_CLEAR 0 #define PTROF(X) ((BUFHEAD *)((ptrdiff_t)(X)&~0x3)) #define ISMOD(X) ((__uint32_t)(ptrdiff_t)(X)&0x1) #define DOMOD(X) ((X) = (char *)((ptrdiff_t)(X)|0x1)) #define ISDISK(X) ((__uint32_t)(ptrdiff_t)(X)&0x2) #define DODISK(X) ((X) = (char *)((ptrdiff_t)(X)|0x2)) #define BITS_PER_MAP 32 /* Given the address of the beginning of a big map, clear/set the nth bit */ #define CLRBIT(A, N) ((A)[(N)/BITS_PER_MAP] &= ~(1<<((N)%BITS_PER_MAP))) #define SETBIT(A, N) ((A)[(N)/BITS_PER_MAP] |= (1<<((N)%BITS_PER_MAP))) #define ISSET(A, N) ((A)[(N)/BITS_PER_MAP] & (1<<((N)%BITS_PER_MAP))) /* Overflow management */ /* * Overflow page numbers are allocated per split point. At each doubling of * the table, we can allocate extra pages. So, an overflow page number has * the top 5 bits indicate which split point and the lower 11 bits indicate * which page at that split point is indicated (pages within split points are * numberered starting with 1). */ #define SPLITSHIFT 11 #define SPLITMASK 0x7FF #define SPLITNUM(N) (((__uint32_t)(N)) >> SPLITSHIFT) #define OPAGENUM(N) ((N) & SPLITMASK) #define OADDR_OF(S,O) ((__uint32_t)((__uint32_t)(S) << SPLITSHIFT) + (O)) #define BUCKET_TO_PAGE(B) \ (B) + hashp->HDRPAGES + ((B) ? hashp->SPARES[__log2((B)+1)-1] : 0) #define OADDR_TO_PAGE(B) \ BUCKET_TO_PAGE ( (1 << SPLITNUM((B))) -1 ) + OPAGENUM((B)); /* * page.h contains a detailed description of the page format. * * Normally, keys and data are accessed from offset tables in the top of * each page which point to the beginning of the key and data. There are * four flag values which may be stored in these offset tables which indicate * the following: * * * OVFLPAGE Rather than a key data pair, this pair contains * the address of an overflow page. The format of * the pair is: * OVERFLOW_PAGE_NUMBER OVFLPAGE * * PARTIAL_KEY This must be the first key/data pair on a page * and implies that page contains only a partial key. * That is, the key is too big to fit on a single page * so it starts on this page and continues on the next. * The format of the page is: * KEY_OFF PARTIAL_KEY OVFL_PAGENO OVFLPAGE * * KEY_OFF -- offset of the beginning of the key * PARTIAL_KEY -- 1 * OVFL_PAGENO - page number of the next overflow page * OVFLPAGE -- 0 * * FULL_KEY This must be the first key/data pair on the page. It * is used in two cases. * * Case 1: * There is a complete key on the page but no data * (because it wouldn't fit). The next page contains * the data. * * Page format it: * KEY_OFF FULL_KEY OVFL_PAGENO OVFL_PAGE * * KEY_OFF -- offset of the beginning of the key * FULL_KEY -- 2 * OVFL_PAGENO - page number of the next overflow page * OVFLPAGE -- 0 * * Case 2: * This page contains no key, but part of a large * data field, which is continued on the next page. * * Page format it: * DATA_OFF FULL_KEY OVFL_PAGENO OVFL_PAGE * * KEY_OFF -- offset of the beginning of the data on * this page * FULL_KEY -- 2 * OVFL_PAGENO - page number of the next overflow page * OVFLPAGE -- 0 * * FULL_KEY_DATA * This must be the first key/data pair on the page. * There are two cases: * * Case 1: * This page contains a key and the beginning of the * data field, but the data field is continued on the * next page. * * Page format is: * KEY_OFF FULL_KEY_DATA OVFL_PAGENO DATA_OFF * * KEY_OFF -- offset of the beginning of the key * FULL_KEY_DATA -- 3 * OVFL_PAGENO - page number of the next overflow page * DATA_OFF -- offset of the beginning of the data * * Case 2: * This page contains the last page of a big data pair. * There is no key, only the tail end of the data * on this page. * * Page format is: * DATA_OFF FULL_KEY_DATA * * DATA_OFF -- offset of the beginning of the data on * this page * FULL_KEY_DATA -- 3 * OVFL_PAGENO - page number of the next overflow page * OVFLPAGE -- 0 * * OVFL_PAGENO and OVFLPAGE are optional (they are * not present if there is no next page). */ #define OVFLPAGE 0 #define PARTIAL_KEY 1 #define FULL_KEY 2 #define FULL_KEY_DATA 3 #define REAL_KEY 4 /* Short hands for accessing structure */ #define BSIZE hdr.bsize #define BSHIFT hdr.bshift #define DSIZE hdr.dsize #define SGSIZE hdr.ssize #define SSHIFT hdr.sshift #define LORDER hdr.lorder #define OVFL_POINT hdr.ovfl_point #define LAST_FREED hdr.last_freed #define MAX_BUCKET hdr.max_bucket #define FFACTOR hdr.ffactor #define HIGH_MASK hdr.high_mask #define LOW_MASK hdr.low_mask #define NKEYS hdr.nkeys #define HDRPAGES hdr.hdrpages #define SPARES hdr.spares #define BITMAPS hdr.bitmaps #define HASH_VERSION hdr.version #define MAGIC hdr.magic #define NEXT_FREE hdr.next_free #define H_CHARKEY hdr.h_charkey picolibc-1.7.4/newlib/libc/search/hash_bigkey.c000066400000000000000000000376571414576234500214230ustar00rootroot00000000000000/*- * Copyright (c) 1990, 1993, 1994 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Margo Seltzer. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _DEFAULT_SOURCE #include #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)hash_bigkey.c 8.3 (Berkeley) 5/31/94"; #endif /* LIBC_SCCS and not lint */ #include /* * PACKAGE: hash * DESCRIPTION: * Big key/data handling for the hashing package. * * ROUTINES: * External * __big_keydata * __big_split * __big_insert * __big_return * __big_delete * __find_last_page * Internal * collect_key * collect_data */ #include #include #include #include #include #ifdef DEBUG #include #endif #include "db_local.h" #include "hash.h" #include "page.h" #include "extern.h" static size_t collect_key(HTAB *, BUFHEAD *, size_t, DBT *, int); static size_t collect_data(HTAB *, BUFHEAD *, size_t, int); /* * Big_insert * * You need to do an insert and the key/data pair is too big * * Returns: * 0 ==> OK *-1 ==> ERROR */ extern int __big_insert(HTAB *hashp, BUFHEAD *bufp, const DBT *key, const DBT *val) { __uint16_t *p; size_t key_size, n; size_t val_size; __uint16_t space, move_bytes, off; char *cp, *key_data, *val_data; cp = bufp->page; /* Character pointer of p. */ p = (__uint16_t *)cp; key_data = (char *)key->data; key_size = key->size; val_data = (char *)val->data; val_size = val->size; /* First move the Key */ for (space = FREESPACE(p) - BIGOVERHEAD; key_size; space = FREESPACE(p) - BIGOVERHEAD) { move_bytes = MIN(space, key_size); off = OFFSET(p) - move_bytes; memmove(cp + off, key_data, move_bytes); key_size -= move_bytes; key_data += move_bytes; n = p[0]; p[++n] = off; p[0] = ++n; FREESPACE(p) = off - PAGE_META(n); OFFSET(p) = off; p[n] = PARTIAL_KEY; bufp = __add_ovflpage(hashp, bufp); if (!bufp) return (-1); n = p[0]; if (!key_size) { if (FREESPACE(p)) { move_bytes = MIN(FREESPACE(p), val_size); off = OFFSET(p) - move_bytes; p[n] = off; memmove(cp + off, val_data, move_bytes); val_data += move_bytes; val_size -= move_bytes; p[n - 2] = FULL_KEY_DATA; FREESPACE(p) = FREESPACE(p) - move_bytes; OFFSET(p) = off; } else p[n - 2] = FULL_KEY; } p = (__uint16_t *)bufp->page; cp = bufp->page; bufp->flags |= BUF_MOD; } /* Now move the data */ for (space = FREESPACE(p) - BIGOVERHEAD; val_size; space = FREESPACE(p) - BIGOVERHEAD) { move_bytes = MIN(space, val_size); /* * Here's the hack to make sure that if the data ends on the * same page as the key ends, FREESPACE is at least one. */ if (space == val_size && val_size == val->size) move_bytes--; off = OFFSET(p) - move_bytes; memmove(cp + off, val_data, move_bytes); val_size -= move_bytes; val_data += move_bytes; n = p[0]; p[++n] = off; p[0] = ++n; FREESPACE(p) = off - PAGE_META(n); OFFSET(p) = off; if (val_size) { p[n] = FULL_KEY; bufp = __add_ovflpage(hashp, bufp); if (!bufp) return (-1); cp = bufp->page; p = (__uint16_t *)cp; } else p[n] = FULL_KEY_DATA; bufp->flags |= BUF_MOD; } return (0); } /* * Called when bufp's page contains a partial key (index should be 1) * * All pages in the big key/data pair except bufp are freed. We cannot * free bufp because the page pointing to it is lost and we can't get rid * of its pointer. * * Returns: * 0 => OK *-1 => ERROR */ extern int __big_delete(HTAB *hashp, BUFHEAD *bufp) { BUFHEAD *last_bfp, *rbufp; __uint16_t *bp, pageno; int key_done, n; rbufp = bufp; last_bfp = NULL; bp = (__uint16_t *)bufp->page; pageno = 0; key_done = 0; while (!key_done || (bp[2] != FULL_KEY_DATA)) { if (bp[2] == FULL_KEY || bp[2] == FULL_KEY_DATA) key_done = 1; /* * If there is freespace left on a FULL_KEY_DATA page, then * the data is short and fits entirely on this page, and this * is the last page. */ if (bp[2] == FULL_KEY_DATA && FREESPACE(bp)) break; pageno = bp[bp[0] - 1]; rbufp->flags |= BUF_MOD; rbufp = __get_buf(hashp, pageno, rbufp, 0); if (last_bfp) __free_ovflpage(hashp, last_bfp); last_bfp = rbufp; if (!rbufp) return (-1); /* Error. */ bp = (__uint16_t *)rbufp->page; } /* * If we get here then rbufp points to the last page of the big * key/data pair. Bufp points to the first one -- it should now be * empty pointing to the next page after this pair. Can't free it * because we don't have the page pointing to it. */ /* This is information from the last page of the pair. */ n = bp[0]; pageno = bp[n - 1]; /* Now, bp is the first page of the pair. */ bp = (__uint16_t *)bufp->page; if (n > 2) { /* There is an overflow page. */ bp[1] = pageno; bp[2] = OVFLPAGE; bufp->ovfl = rbufp->ovfl; } else /* This is the last page. */ bufp->ovfl = NULL; n -= 2; bp[0] = n; FREESPACE(bp) = hashp->BSIZE - PAGE_META(n); OFFSET(bp) = hashp->BSIZE - 1; bufp->flags |= BUF_MOD; if (rbufp) __free_ovflpage(hashp, rbufp); if (last_bfp != rbufp) __free_ovflpage(hashp, last_bfp); hashp->NKEYS--; return (0); } /* * Returns: * 0 = key not found * -1 = get next overflow page * -2 means key not found and this is big key/data * -3 error */ extern int __find_bigpair(HTAB *hashp, BUFHEAD *bufp, int ndx, char *key, int size) { __uint16_t *bp; char *p; int ksize; __uint16_t bytes; char *kkey; bp = (__uint16_t *)bufp->page; p = bufp->page; ksize = size; kkey = key; for (bytes = hashp->BSIZE - bp[ndx]; bytes <= size && bp[ndx + 1] == PARTIAL_KEY; bytes = hashp->BSIZE - bp[ndx]) { if (memcmp(p + bp[ndx], kkey, bytes)) return (-2); kkey += bytes; ksize -= bytes; bufp = __get_buf(hashp, bp[ndx + 2], bufp, 0); if (!bufp) return (-3); p = bufp->page; bp = (__uint16_t *)p; ndx = 1; } if (bytes != ksize || memcmp(p + bp[ndx], kkey, bytes)) { #ifdef HASH_STATISTICS ++hash_collisions; #endif return (-2); } else return (ndx); } /* * Given the buffer pointer of the first overflow page of a big pair, * find the end of the big pair * * This will set bpp to the buffer header of the last page of the big pair. * It will return the pageno of the overflow page following the last page * of the pair; 0 if there isn't any (i.e. big pair is the last key in the * bucket) */ extern __uint16_t __find_last_page(HTAB *hashp, BUFHEAD **bpp) { BUFHEAD *bufp; __uint16_t *bp, pageno; int n; bufp = *bpp; bp = (__uint16_t *)bufp->page; for (;;) { n = bp[0]; /* * This is the last page if: the tag is FULL_KEY_DATA and * either only 2 entries OVFLPAGE marker is explicit there * is freespace on the page. */ if (bp[2] == FULL_KEY_DATA && ((n == 2) || (bp[n] == OVFLPAGE) || (FREESPACE(bp)))) break; pageno = bp[n - 1]; bufp = __get_buf(hashp, pageno, bufp, 0); if (!bufp) return (0); /* Need to indicate an error! */ bp = (__uint16_t *)bufp->page; } *bpp = bufp; if (bp[0] > 2) return (bp[3]); else return (0); } /* * Return the data for the key/data pair that begins on this page at this * index (index should always be 1). */ extern int __big_return(HTAB *hashp, BUFHEAD *bufp, int ndx, DBT *val, int set_current) { BUFHEAD *save_p; __uint16_t *bp, len, off, save_addr; char *tp; bp = (__uint16_t *)bufp->page; while (bp[ndx + 1] == PARTIAL_KEY) { bufp = __get_buf(hashp, bp[bp[0] - 1], bufp, 0); if (!bufp) return (-1); bp = (__uint16_t *)bufp->page; ndx = 1; } if (bp[ndx + 1] == FULL_KEY) { bufp = __get_buf(hashp, bp[bp[0] - 1], bufp, 0); if (!bufp) return (-1); bp = (__uint16_t *)bufp->page; save_p = bufp; save_addr = save_p->addr; off = bp[1]; len = 0; } else if (!FREESPACE(bp)) { /* * This is a hack. We can't distinguish between * FULL_KEY_DATA that contains complete data or * incomplete data, so we require that if the data * is complete, there is at least 1 byte of free * space left. */ off = bp[bp[0]]; len = bp[1] - off; save_p = bufp; save_addr = bufp->addr; bufp = __get_buf(hashp, bp[bp[0] - 1], bufp, 0); if (!bufp) return (-1); bp = (__uint16_t *)bufp->page; } else { /* The data is all on one page. */ tp = (char *)bp; off = bp[bp[0]]; val->data = (u_char *)tp + off; val->size = bp[1] - off; if (set_current) { if (bp[0] == 2) { /* No more buckets in * chain */ hashp->cpage = NULL; hashp->cbucket++; hashp->cndx = 1; } else { hashp->cpage = __get_buf(hashp, bp[bp[0] - 1], bufp, 0); if (!hashp->cpage) return (-1); hashp->cndx = 1; if (!((__uint16_t *) hashp->cpage->page)[0]) { hashp->cbucket++; hashp->cpage = NULL; } } } return (0); } val->size = collect_data(hashp, bufp, len, set_current); if (val->size == (size_t) -1) return (-1); if (save_p->addr != save_addr) { /* We are pretty short on buffers. */ errno = EINVAL; /* OUT OF BUFFERS */ return (-1); } memmove(hashp->tmp_buf, (save_p->page) + off, len); val->data = (u_char *)hashp->tmp_buf; return (0); } /* * Count how big the total datasize is by recursing through the pages. Then * allocate a buffer and copy the data as you recurse up. */ static size_t collect_data(HTAB *hashp, BUFHEAD *bufp, size_t len, int set) { __uint16_t *bp; char *p; BUFHEAD *xbp; __uint16_t save_addr; size_t mylen, totlen; p = bufp->page; bp = (__uint16_t *)p; mylen = hashp->BSIZE - bp[1]; save_addr = bufp->addr; if (bp[2] == FULL_KEY_DATA) { /* End of Data */ totlen = len + mylen; if (hashp->tmp_buf) free(hashp->tmp_buf); if ((hashp->tmp_buf = (char *)malloc(totlen)) == NULL) return (-1); if (set) { hashp->cndx = 1; if (bp[0] == 2) { /* No more buckets in chain */ hashp->cpage = NULL; hashp->cbucket++; } else { hashp->cpage = __get_buf(hashp, bp[bp[0] - 1], bufp, 0); if (!hashp->cpage) return (-1); else if (!((__uint16_t *)hashp->cpage->page)[0]) { hashp->cbucket++; hashp->cpage = NULL; } } } } else { xbp = __get_buf(hashp, bp[bp[0] - 1], bufp, 0); if (!xbp || ((totlen = collect_data(hashp, xbp, len + mylen, set)) < 1)) return (-1); } if (bufp->addr != save_addr) { errno = EINVAL; /* Out of buffers. */ return (-1); } memmove(&hashp->tmp_buf[len], (bufp->page) + bp[1], mylen); return (totlen); } /* * Fill in the key and data for this big pair. */ extern int __big_keydata(HTAB *hashp, BUFHEAD *bufp, DBT *key, DBT *val, int set) { key->size = collect_key(hashp, bufp, 0, val, set); if (key->size == (size_t) -1) return (-1); key->data = (u_char *)hashp->tmp_key; return (0); } /* * Count how big the total key size is by recursing through the pages. Then * collect the data, allocate a buffer and copy the key as you recurse up. */ static size_t collect_key(HTAB *hashp, BUFHEAD *bufp, size_t len, DBT *val, int set) { BUFHEAD *xbp; char *p; size_t mylen, totlen; __uint16_t *bp, save_addr; p = bufp->page; bp = (__uint16_t *)p; mylen = hashp->BSIZE - bp[1]; save_addr = bufp->addr; totlen = len + mylen; if (bp[2] == FULL_KEY || bp[2] == FULL_KEY_DATA) { /* End of Key. */ if (hashp->tmp_key != NULL) free(hashp->tmp_key); if ((hashp->tmp_key = (char *)malloc(totlen)) == NULL) return (-1); if (__big_return(hashp, bufp, 1, val, set)) return (-1); } else { xbp = __get_buf(hashp, bp[bp[0] - 1], bufp, 0); if (!xbp || ((totlen = collect_key(hashp, xbp, totlen, val, set)) < 1)) return (-1); } if (bufp->addr != save_addr) { errno = EINVAL; /* MIS -- OUT OF BUFFERS */ return (-1); } memmove(&hashp->tmp_key[len], (bufp->page) + bp[1], mylen); return (totlen); } /* * Returns: * 0 => OK * -1 => error */ extern int __big_split( HTAB *hashp, BUFHEAD *op, /* Pointer to where to put keys that go in old bucket */ BUFHEAD *np, /* Pointer to new bucket page */ BUFHEAD *big_keyp, /* Pointer to first page containing the big key/data */ int addr, /* Address of big_keyp */ __uint32_t obucket, /* Old Bucket */ SPLIT_RETURN *ret) { BUFHEAD *tmpp; __uint16_t *tp; BUFHEAD *bp; DBT key, val; __uint32_t change; __uint16_t free_space, n, off; bp = big_keyp; /* Now figure out where the big key/data goes */ if (__big_keydata(hashp, big_keyp, &key, &val, 0)) return (-1); change = (__call_hash(hashp, key.data, key.size) != obucket); if ( (ret->next_addr = __find_last_page(hashp, &big_keyp)) ) { if (!(ret->nextp = __get_buf(hashp, ret->next_addr, big_keyp, 0))) return (-1);; } else ret->nextp = NULL; /* Now make one of np/op point to the big key/data pair */ #ifdef DEBUG assert(np->ovfl == NULL); #endif if (change) tmpp = np; else tmpp = op; tmpp->flags |= BUF_MOD; #ifdef DEBUG1 (void)fprintf(stderr, "BIG_SPLIT: %d->ovfl was %d is now %d\n", tmpp->addr, (tmpp->ovfl ? tmpp->ovfl->addr : 0), (bp ? bp->addr : 0)); #endif tmpp->ovfl = bp; /* one of op/np point to big_keyp */ tp = (__uint16_t *)tmpp->page; #ifdef DEBUG assert(FREESPACE(tp) >= OVFLSIZE); #endif n = tp[0]; off = OFFSET(tp); free_space = FREESPACE(tp); tp[++n] = (__uint16_t)addr; tp[++n] = OVFLPAGE; tp[0] = n; OFFSET(tp) = off; FREESPACE(tp) = free_space - OVFLSIZE; /* * Finally, set the new and old return values. BIG_KEYP contains a * pointer to the last page of the big key_data pair. Make sure that * big_keyp has no following page (2 elements) or create an empty * following page. */ ret->newp = np; ret->oldp = op; tp = (__uint16_t *)big_keyp->page; big_keyp->flags |= BUF_MOD; if (tp[0] > 2) { /* * There may be either one or two offsets on this page. If * there is one, then the overflow page is linked on normally * and tp[4] is OVFLPAGE. If there are two, tp[4] contains * the second offset and needs to get stuffed in after the * next overflow page is added. */ n = tp[4]; free_space = FREESPACE(tp); off = OFFSET(tp); tp[0] -= 2; FREESPACE(tp) = free_space + OVFLSIZE; OFFSET(tp) = off; tmpp = __add_ovflpage(hashp, big_keyp); if (!tmpp) return (-1); tp[4] = n; } else tmpp = big_keyp; if (change) ret->newp = tmpp; else ret->oldp = tmpp; return (0); } picolibc-1.7.4/newlib/libc/search/hash_buf.c000066400000000000000000000216251414576234500207110ustar00rootroot00000000000000/*- * Copyright (c) 1990, 1993, 1994 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Margo Seltzer. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _DEFAULT_SOURCE #include #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)hash_buf.c 8.5 (Berkeley) 7/15/94"; #endif /* LIBC_SCCS and not lint */ #include /* * PACKAGE: hash * * DESCRIPTION: * Contains buffer management * * ROUTINES: * External * __buf_init * __get_buf * __buf_free * __reclaim_buf * Internal * newbuf */ #include #include #include #include #ifdef DEBUG #include #endif #include "db_local.h" #include "hash.h" #include "page.h" #include "extern.h" static BUFHEAD *newbuf(HTAB *, __uint32_t, BUFHEAD *); /* Unlink B from its place in the lru */ #define BUF_REMOVE(B) { \ (B)->prev->next = (B)->next; \ (B)->next->prev = (B)->prev; \ } /* Insert B after P */ #define BUF_INSERT(B, P) { \ (B)->next = (P)->next; \ (B)->prev = (P); \ (P)->next = (B); \ (B)->next->prev = (B); \ } #define MRU hashp->bufhead.next #define LRU hashp->bufhead.prev #define MRU_INSERT(B) BUF_INSERT((B), &hashp->bufhead) #define LRU_INSERT(B) BUF_INSERT((B), LRU) /* Macros for min/max. */ #ifndef MIN #define MIN(a,b) (((a)<(b))?(a):(b)) #endif #ifndef MAX #define MAX(a,b) (((a)>(b))?(a):(b)) #endif /* * We are looking for a buffer with address "addr". If prev_bp is NULL, then * address is a bucket index. If prev_bp is not NULL, then it points to the * page previous to an overflow page that we are trying to find. * * CAVEAT: The buffer header accessed via prev_bp's ovfl field may no longer * be valid. Therefore, you must always verify that its address matches the * address you are seeking. */ extern BUFHEAD * __get_buf(HTAB *hashp, __uint32_t addr, BUFHEAD *prev_bp, int newpage) /* If prev_bp set, indicates a new overflow page. */ { BUFHEAD *bp; __uint32_t is_disk_mask; int is_disk, segment_ndx = 0; SEGMENT segp = NULL; is_disk = 0; is_disk_mask = 0; if (prev_bp) { bp = prev_bp->ovfl; if (!bp || (bp->addr != addr)) bp = NULL; if (!newpage) is_disk = BUF_DISK; } else { /* Grab buffer out of directory */ segment_ndx = addr & (hashp->SGSIZE - 1); /* valid segment ensured by __call_hash() */ segp = hashp->dir[addr >> hashp->SSHIFT]; #ifdef DEBUG assert(segp != NULL); #endif bp = PTROF(segp[segment_ndx]); is_disk_mask = ISDISK(segp[segment_ndx]); is_disk = is_disk_mask || !hashp->new_file; } if (!bp) { bp = newbuf(hashp, addr, prev_bp); if (!bp || __get_page(hashp, bp->page, addr, !prev_bp, is_disk, 0)) return (NULL); if (!prev_bp) segp[segment_ndx] = (BUFHEAD *)((ptrdiff_t)bp | (intptr_t)is_disk_mask); } else { BUF_REMOVE(bp); MRU_INSERT(bp); } return (bp); } /* * We need a buffer for this page. Either allocate one, or evict a resident * one (if we have as many buffers as we're allowed) and put this one in. * * If newbuf finds an error (returning NULL), it also sets errno. */ static BUFHEAD * newbuf(HTAB *hashp, __uint32_t addr, BUFHEAD *prev_bp) { BUFHEAD *bp; /* The buffer we're going to use */ BUFHEAD *xbp; /* Temp pointer */ BUFHEAD *next_xbp; SEGMENT segp; int segment_ndx; __uint16_t oaddr, *shortp; oaddr = 0; bp = LRU; /* * If LRU buffer is pinned, the buffer pool is too small. We need to * allocate more buffers. */ if (hashp->nbufs || (bp->flags & BUF_PIN)) { /* Allocate a new one */ if ((bp = (BUFHEAD *)malloc(sizeof(BUFHEAD))) == NULL) return (NULL); #ifdef PURIFY memset(bp, 0xff, sizeof(BUFHEAD)); #endif if ((bp->page = (char *)malloc(hashp->BSIZE)) == NULL) { free(bp); return (NULL); } #ifdef PURIFY memset(bp->page, 0xff, hashp->BSIZE); #endif if (hashp->nbufs) hashp->nbufs--; } else { /* Kick someone out */ BUF_REMOVE(bp); /* * If this is an overflow page with addr 0, it's already been * flushed back in an overflow chain and initialized. */ if ((bp->addr != 0) || (bp->flags & BUF_BUCKET)) { /* * Set oaddr before __put_page so that you get it * before bytes are swapped. */ shortp = (__uint16_t *)bp->page; if (shortp[0]) oaddr = shortp[shortp[0] - 1]; if ((bp->flags & BUF_MOD) && __put_page(hashp, bp->page, bp->addr, (int)IS_BUCKET(bp->flags), 0)) return (NULL); /* * Update the pointer to this page (i.e. invalidate it). * * If this is a new file (i.e. we created it at open * time), make sure that we mark pages which have been * written to disk so we retrieve them from disk later, * rather than allocating new pages. */ if (IS_BUCKET(bp->flags)) { segment_ndx = bp->addr & (hashp->SGSIZE - 1); segp = hashp->dir[bp->addr >> hashp->SSHIFT]; #ifdef DEBUG assert(segp != NULL); #endif if (hashp->new_file && ((bp->flags & BUF_MOD) || ISDISK(segp[segment_ndx]))) segp[segment_ndx] = (BUFHEAD *)BUF_DISK; else segp[segment_ndx] = NULL; } /* * Since overflow pages can only be access by means of * their bucket, free overflow pages associated with * this bucket. */ for (xbp = bp; xbp->ovfl;) { next_xbp = xbp->ovfl; xbp->ovfl = 0; xbp = next_xbp; /* Check that ovfl pointer is up date. */ if (IS_BUCKET(xbp->flags) || (oaddr != xbp->addr)) break; shortp = (__uint16_t *)xbp->page; if (shortp[0]) /* set before __put_page */ oaddr = shortp[shortp[0] - 1]; if ((xbp->flags & BUF_MOD) && __put_page(hashp, xbp->page, xbp->addr, 0, 0)) return (NULL); xbp->addr = 0; xbp->flags = 0; BUF_REMOVE(xbp); LRU_INSERT(xbp); } } } /* Now assign this buffer */ bp->addr = addr; #ifdef DEBUG1 (void)fprintf(stderr, "NEWBUF1: %d->ovfl was %d is now %d\n", bp->addr, (bp->ovfl ? bp->ovfl->addr : 0), 0); #endif bp->ovfl = NULL; if (prev_bp) { /* * If prev_bp is set, this is an overflow page, hook it in to * the buffer overflow links. */ #ifdef DEBUG1 (void)fprintf(stderr, "NEWBUF2: %d->ovfl was %d is now %d\n", prev_bp->addr, (prev_bp->ovfl ? bp->ovfl->addr : 0), (bp ? bp->addr : 0)); #endif prev_bp->ovfl = bp; bp->flags = 0; } else bp->flags = BUF_BUCKET; MRU_INSERT(bp); return (bp); } extern void __buf_init(HTAB *hashp, int nbytes) { BUFHEAD *bfp; int npages; bfp = &(hashp->bufhead); npages = (nbytes + hashp->BSIZE - 1) >> hashp->BSHIFT; npages = MAX(npages, MIN_BUFFERS); hashp->nbufs = npages; bfp->next = bfp; bfp->prev = bfp; /* * This space is calloc'd so these are already null. * * bfp->ovfl = NULL; * bfp->flags = 0; * bfp->page = NULL; * bfp->addr = 0; */ } extern int __buf_free(HTAB *hashp, int do_free, int to_disk) { BUFHEAD *bp; /* Need to make sure that buffer manager has been initialized */ if (!LRU) return (0); for (bp = LRU; bp != &hashp->bufhead;) { /* Check that the buffer is valid */ if (bp->addr || IS_BUCKET(bp->flags)) { if (to_disk && (bp->flags & BUF_MOD) && __put_page(hashp, bp->page, bp->addr, IS_BUCKET(bp->flags), 0)) return (-1); } /* Check if we are freeing stuff */ if (do_free) { if (bp->page) free(bp->page); BUF_REMOVE(bp); free(bp); bp = LRU; } else bp = bp->prev; } return (0); } extern void __reclaim_buf(HTAB *hashp, BUFHEAD *bp) { bp->ovfl = 0; bp->addr = 0; bp->flags = 0; BUF_REMOVE(bp); LRU_INSERT(bp); } picolibc-1.7.4/newlib/libc/search/hash_func.c000066400000000000000000000106211414576234500210620ustar00rootroot00000000000000/*- * Copyright (c) 1990, 1993 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Margo Seltzer. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _DEFAULT_SOURCE #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)hash_func.c 8.2 (Berkeley) 2/21/94"; #endif /* LIBC_SCCS and not lint */ #include #include #include "db_local.h" #include "hash.h" #include "page.h" #include "extern.h" #if 0 static __uint32_t hash1(const void *, size_t); static __uint32_t hash2(const void *, size_t); static __uint32_t hash3(const void *, size_t); #endif static __uint32_t hash4(const void *, size_t); /* Global default hash function */ __uint32_t (*__default_hash)(const void *, size_t) = hash4; /* * HASH FUNCTIONS * * Assume that we've already split the bucket to which this key hashes, * calculate that bucket, and check that in fact we did already split it. * * This came from ejb's hsearch. */ #define PRIME1 37 #define PRIME2 1048583 #if 0 static __uint32_t hash1(keyarg, len) const void *keyarg; size_t len; { const u_char *key; __uint32_t h; /* Convert string to integer */ for (key = keyarg, h = 0; len--;) h = h * PRIME1 ^ (*key++ - ' '); h %= PRIME2; return (h); } #endif /* * Phong's linear congruential hash */ #define dcharhash(h, c) ((h) = 0x63c63cd9*(h) + 0x9c39c33d + (c)) #if 0 static __uint32_t hash2(keyarg, len) const void *keyarg; size_t len; { const u_char *e, *key; __uint32_t h; u_char c; key = keyarg; e = key + len; for (h = 0; key != e;) { c = *key++; if (!c && key > e) break; dcharhash(h, c); } return (h); } #endif /* * This is INCREDIBLY ugly, but fast. We break the string up into 8 byte * units. On the first time through the loop we get the "leftover bytes" * (strlen % 8). On every other iteration, we perform 8 HASHC's so we handle * all 8 bytes. Essentially, this saves us 7 cmp & branch instructions. If * this routine is heavily used enough, it's worth the ugly coding. * * OZ's original sdbm hash */ #if 0 static __uint32_t hash3(keyarg, len) const void *keyarg; size_t len; { const u_char *key; size_t loop; __uint32_t h; #define HASHC h = *key++ + 65599 * h h = 0; key = keyarg; if (len > 0) { loop = (len + 8 - 1) >> 3; switch (len & (8 - 1)) { case 0: do { HASHC; FALLTHROUGH; case 7: HASHC; FALLTHROUGH; case 6: HASHC; FALLTHROUGH; case 5: HASHC; FALLTHROUGH; case 4: HASHC; FALLTHROUGH; case 3: HASHC; FALLTHROUGH; case 2: HASHC; FALLTHROUGH; case 1: HASHC; } while (--loop); } } return (h); } #endif /* Hash function from Chris Torek. */ static __uint32_t hash4(const void *keyarg, size_t len) { const u_char *key; __uint32_t h; #define HASH4a h = (h << 5) - h + *key++; #define HASH4b h = (h << 5) + h + *key++; #define HASH4 HASH4b h = 0; key = keyarg; while (len--) { HASH4; } return (h); } picolibc-1.7.4/newlib/libc/search/hash_log2.c000066400000000000000000000040171414576234500207740ustar00rootroot00000000000000/*- * Copyright (c) 1990, 1993, 1994 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Margo Seltzer. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _DEFAULT_SOURCE #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)hash_log2.c 8.2 (Berkeley) 5/31/94"; #endif /* LIBC_SCCS and not lint */ #include #include #include "db_local.h" __uint32_t __log2(__uint32_t num) { __uint32_t i, limit; limit = 1; for (i = 0; limit < num; limit = limit << 1, i++); return (i); } picolibc-1.7.4/newlib/libc/search/hash_page.c000066400000000000000000000551071414576234500210530ustar00rootroot00000000000000/*- * Copyright (c) 1990, 1993, 1994 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Margo Seltzer. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _DEFAULT_SOURCE #include #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)hash_page.c 8.7 (Berkeley) 8/16/94"; #endif /* LIBC_SCCS and not lint */ #include /* * PACKAGE: hashing * * DESCRIPTION: * Page manipulation for hashing package. * * ROUTINES: * * External * __get_page * __add_ovflpage * Internal * overflow_page * open_temp */ #include #include #include #include #include #include #include #include #ifdef DEBUG #include #endif #include "db_local.h" #include "hash.h" #include "page.h" #include "extern.h" static __uint32_t *fetch_bitmap(HTAB *, int); static __uint32_t first_free(__uint32_t); static int open_temp(HTAB *); static __uint16_t overflow_page(HTAB *); static void putpair(char *, const DBT *, const DBT *); static void squeeze_key(__uint16_t *, const DBT *, const DBT *); static int ugly_split (HTAB *, __uint32_t, BUFHEAD *, BUFHEAD *, int, int); #define PAGE_INIT(P) { \ ((__uint16_t *)(P))[0] = 0; \ ((__uint16_t *)(P))[1] = hashp->BSIZE - 3 * sizeof(__uint16_t); \ ((__uint16_t *)(P))[2] = hashp->BSIZE; \ } /* * This is called AFTER we have verified that there is room on the page for * the pair (PAIRFITS has returned true) so we go right ahead and start moving * stuff on. */ static void putpair(char *p, const DBT *key, const DBT *val) { __uint16_t *bp, n, off; bp = (__uint16_t *)p; /* Enter the key first. */ n = bp[0]; off = OFFSET(bp) - key->size; memmove(p + off, key->data, key->size); bp[++n] = off; /* Now the data. */ off -= val->size; memmove(p + off, val->data, val->size); bp[++n] = off; /* Adjust page info. */ bp[0] = n; bp[n + 1] = off - ((n + 3) * sizeof(__uint16_t)); bp[n + 2] = off; } /* * Returns: * 0 OK * -1 error */ extern int __delpair(HTAB *hashp, BUFHEAD *bufp, int ndx) { __uint16_t *bp, newoff; int n; __uint16_t pairlen; bp = (__uint16_t *)bufp->page; n = bp[0]; if (bp[ndx + 1] < REAL_KEY) return (__big_delete(hashp, bufp)); if (ndx != 1) newoff = bp[ndx - 1]; else newoff = hashp->BSIZE; pairlen = newoff - bp[ndx + 1]; if (ndx != (n - 1)) { /* Hard Case -- need to shuffle keys */ int i; char *src = bufp->page + (int)OFFSET(bp); char *dst = src + (int)pairlen; memmove(dst, src, bp[ndx + 1] - OFFSET(bp)); /* Now adjust the pointers */ for (i = ndx + 2; i <= n; i += 2) { if (bp[i + 1] == OVFLPAGE) { bp[i - 2] = bp[i]; bp[i - 1] = bp[i + 1]; } else { bp[i - 2] = bp[i] + pairlen; bp[i - 1] = bp[i + 1] + pairlen; } } } /* Finally adjust the page data */ bp[n] = OFFSET(bp) + pairlen; bp[n - 1] = bp[n + 1] + pairlen + 2 * sizeof(__uint16_t); bp[0] = n - 2; hashp->NKEYS--; bufp->flags |= BUF_MOD; return (0); } /* * Returns: * 0 ==> OK * -1 ==> Error */ extern int __split_page(HTAB *hashp, __uint32_t obucket, __uint32_t nbucket) { BUFHEAD *new_bufp, *old_bufp; __uint16_t *ino; char *np; DBT key, val; int n, ndx, retval; __uint16_t copyto, diff, off, moved; char *op; copyto = (__uint16_t)hashp->BSIZE; off = (__uint16_t)hashp->BSIZE; old_bufp = __get_buf(hashp, obucket, NULL, 0); if (old_bufp == NULL) return (-1); new_bufp = __get_buf(hashp, nbucket, NULL, 0); if (new_bufp == NULL) return (-1); old_bufp->flags |= (BUF_MOD | BUF_PIN); new_bufp->flags |= (BUF_MOD | BUF_PIN); ino = (__uint16_t *)(op = old_bufp->page); np = new_bufp->page; moved = 0; for (n = 1, ndx = 1; n < ino[0]; n += 2) { if (ino[n + 1] < REAL_KEY) { retval = ugly_split(hashp, obucket, old_bufp, new_bufp, (int)copyto, (int)moved); old_bufp->flags &= ~BUF_PIN; new_bufp->flags &= ~BUF_PIN; return (retval); } key.data = (u_char *)op + ino[n]; key.size = off - ino[n]; if (__call_hash(hashp, key.data, key.size) == obucket) { /* Don't switch page */ diff = copyto - off; if (diff) { copyto = ino[n + 1] + diff; memmove(op + copyto, op + ino[n + 1], off - ino[n + 1]); ino[ndx] = copyto + ino[n] - ino[n + 1]; ino[ndx + 1] = copyto; } else copyto = ino[n + 1]; ndx += 2; } else { /* Switch page */ val.data = (u_char *)op + ino[n + 1]; val.size = ino[n] - ino[n + 1]; putpair(np, &key, &val); moved += 2; } off = ino[n + 1]; } /* Now clean up the page */ ino[0] -= moved; FREESPACE(ino) = copyto - sizeof(__uint16_t) * (ino[0] + 3); OFFSET(ino) = copyto; #ifdef DEBUG3 (void)fprintf(stderr, "split %d/%d\n", ((__uint16_t *)np)[0] / 2, ((__uint16_t *)op)[0] / 2); #endif /* unpin both pages */ old_bufp->flags &= ~BUF_PIN; new_bufp->flags &= ~BUF_PIN; return (0); } /* * Called when we encounter an overflow or big key/data page during split * handling. This is special cased since we have to begin checking whether * the key/data pairs fit on their respective pages and because we may need * overflow pages for both the old and new pages. * * The first page might be a page with regular key/data pairs in which case * we have a regular overflow condition and just need to go on to the next * page or it might be a big key/data pair in which case we need to fix the * big key/data pair. * * Returns: * 0 ==> success * -1 ==> failure */ static int ugly_split(HTAB *hashp, __uint32_t obucket, /* Same as __split_page. */ BUFHEAD *old_bufp, BUFHEAD *new_bufp, int copyto, /* First byte on page which contains key/data values. */ int moved) /* Number of pairs moved to new page. */ { BUFHEAD *bufp; /* Buffer header for ino */ __uint16_t *ino; /* Page keys come off of */ __uint16_t *np; /* New page */ __uint16_t *op; /* Page keys go on to if they aren't moving */ BUFHEAD *last_bfp; /* Last buf header OVFL needing to be freed */ DBT key, val; SPLIT_RETURN ret; __uint16_t n, off, ov_addr, scopyto; char *cino; /* Character value of ino */ bufp = old_bufp; ino = (__uint16_t *)old_bufp->page; np = (__uint16_t *)new_bufp->page; op = (__uint16_t *)old_bufp->page; last_bfp = NULL; scopyto = (__uint16_t)copyto; /* ANSI */ n = ino[0] - 1; while (n < ino[0]) { if (ino[2] < REAL_KEY && ino[2] != OVFLPAGE) { if (__big_split(hashp, old_bufp, new_bufp, bufp, bufp->addr, obucket, &ret)) return (-1); old_bufp = ret.oldp; if (!old_bufp) return (-1); op = (__uint16_t *)old_bufp->page; new_bufp = ret.newp; if (!new_bufp) return (-1); np = (__uint16_t *)new_bufp->page; bufp = ret.nextp; if (!bufp) return (0); cino = (char *)bufp->page; ino = (__uint16_t *)cino; last_bfp = ret.nextp; } else if (ino[n + 1] == OVFLPAGE) { ov_addr = ino[n]; /* * Fix up the old page -- the extra 2 are the fields * which contained the overflow information. */ ino[0] -= (moved + 2); FREESPACE(ino) = scopyto - sizeof(__uint16_t) * (ino[0] + 3); OFFSET(ino) = scopyto; bufp = __get_buf(hashp, ov_addr, bufp, 0); if (!bufp) return (-1); ino = (__uint16_t *)bufp->page; n = 1; scopyto = hashp->BSIZE; moved = 0; if (last_bfp) __free_ovflpage(hashp, last_bfp); last_bfp = bufp; } /* Move regular sized pairs of there are any */ off = hashp->BSIZE; for (n = 1; (n < ino[0]) && (ino[n + 1] >= REAL_KEY); n += 2) { cino = (char *)ino; key.data = (u_char *)cino + ino[n]; key.size = off - ino[n]; val.data = (u_char *)cino + ino[n + 1]; val.size = ino[n] - ino[n + 1]; off = ino[n + 1]; if (__call_hash(hashp, key.data, key.size) == obucket) { /* Keep on old page */ if (PAIRFITS(op, (&key), (&val))) putpair((char *)op, &key, &val); else { old_bufp = __add_ovflpage(hashp, old_bufp); if (!old_bufp) return (-1); op = (__uint16_t *)old_bufp->page; putpair((char *)op, &key, &val); } old_bufp->flags |= BUF_MOD; } else { /* Move to new page */ if (PAIRFITS(np, (&key), (&val))) putpair((char *)np, &key, &val); else { new_bufp = __add_ovflpage(hashp, new_bufp); if (!new_bufp) return (-1); np = (__uint16_t *)new_bufp->page; putpair((char *)np, &key, &val); } new_bufp->flags |= BUF_MOD; } } } if (last_bfp) __free_ovflpage(hashp, last_bfp); return (0); } /* * Add the given pair to the page * * Returns: * 0 ==> OK * 1 ==> failure */ extern int __addel(HTAB *hashp, BUFHEAD *bufp, const DBT *key, const DBT *val) { __uint16_t *bp, *sop; int do_expand; bp = (__uint16_t *)bufp->page; do_expand = 0; while (bp[0] && (bp[2] < REAL_KEY || bp[bp[0]] < REAL_KEY)) /* Exception case */ if (bp[2] == FULL_KEY_DATA && bp[0] == 2) /* This is the last page of a big key/data pair and we need to add another page */ break; else if (bp[2] < REAL_KEY && bp[bp[0]] != OVFLPAGE) { bufp = __get_buf(hashp, bp[bp[0] - 1], bufp, 0); if (!bufp) return (-1); bp = (__uint16_t *)bufp->page; } else /* Try to squeeze key on this page */ if (FREESPACE(bp) > PAIRSIZE(key, val)) { squeeze_key(bp, key, val); return (0); } else { bufp = __get_buf(hashp, bp[bp[0] - 1], bufp, 0); if (!bufp) return (-1); bp = (__uint16_t *)bufp->page; } if (PAIRFITS(bp, key, val)) putpair(bufp->page, key, val); else { do_expand = 1; bufp = __add_ovflpage(hashp, bufp); if (!bufp) return (-1); sop = (__uint16_t *)bufp->page; if (PAIRFITS(sop, key, val)) putpair((char *)sop, key, val); else if (__big_insert(hashp, bufp, key, val)) return (-1); } bufp->flags |= BUF_MOD; /* * If the average number of keys per bucket exceeds the fill factor, * expand the table. */ hashp->NKEYS++; if (do_expand || (hashp->NKEYS / (hashp->MAX_BUCKET + 1) > hashp->FFACTOR)) return (__expand_table(hashp)); return (0); } /* * * Returns: * pointer on success * NULL on error */ extern BUFHEAD * __add_ovflpage(HTAB *hashp, BUFHEAD *bufp) { __uint16_t *sp; __uint16_t ndx, ovfl_num; #ifdef DEBUG1 int tmp1, tmp2; #endif sp = (__uint16_t *)bufp->page; /* Check if we are dynamically determining the fill factor */ if (hashp->FFACTOR == DEF_FFACTOR) { hashp->FFACTOR = sp[0] >> 1; if (hashp->FFACTOR < MIN_FFACTOR) hashp->FFACTOR = MIN_FFACTOR; } bufp->flags |= BUF_MOD; ovfl_num = overflow_page(hashp); #ifdef DEBUG1 tmp1 = bufp->addr; tmp2 = bufp->ovfl ? bufp->ovfl->addr : 0; #endif if (!ovfl_num || !(bufp->ovfl = __get_buf(hashp, ovfl_num, bufp, 1))) return (NULL); bufp->ovfl->flags |= BUF_MOD; #ifdef DEBUG1 (void)fprintf(stderr, "ADDOVFLPAGE: %d->ovfl was %d is now %d\n", tmp1, tmp2, bufp->ovfl->addr); #endif ndx = sp[0]; /* * Since a pair is allocated on a page only if there's room to add * an overflow page, we know that the OVFL information will fit on * the page. */ sp[ndx + 4] = OFFSET(sp); sp[ndx + 3] = FREESPACE(sp) - OVFLSIZE; sp[ndx + 1] = ovfl_num; sp[ndx + 2] = OVFLPAGE; sp[0] = ndx + 2; #ifdef HASH_STATISTICS hash_overflows++; #endif return (bufp->ovfl); } /* * Returns: * 0 indicates SUCCESS * -1 indicates FAILURE */ extern int __get_page(HTAB *hashp, char *p, __uint32_t bucket, int is_bucket, int is_disk, int is_bitmap) { int fd, page, size; int rsize; __uint16_t *bp; fd = hashp->fp; size = hashp->BSIZE; if ((fd == -1) || !is_disk) { PAGE_INIT(p); return (0); } if (is_bucket) page = BUCKET_TO_PAGE(bucket); else page = OADDR_TO_PAGE(bucket); if ((lseek(fd, (off_t)page << hashp->BSHIFT, SEEK_SET) == -1) || ((rsize = read(fd, p, size)) == -1)) return (-1); bp = (__uint16_t *)p; if (!rsize) bp[0] = 0; /* We hit the EOF, so initialize a new page */ else if (rsize != size) { errno = EFTYPE; return (-1); } if (!is_bitmap && !bp[0]) { PAGE_INIT(p); } else if (hashp->LORDER != DB_BYTE_ORDER) { int i, max; if (is_bitmap) { max = hashp->BSIZE >> 2; /* divide by 4 */ for (i = 0; i < max; i++) M_32_SWAP(((int *)p)[i]); } else { M_16_SWAP(bp[0]); max = bp[0] + 2; for (i = 1; i <= max; i++) M_16_SWAP(bp[i]); } } return (0); } /* * Write page p to disk * * Returns: * 0 ==> OK * -1 ==>failure */ extern int __put_page(HTAB *hashp, char *p, __uint32_t bucket, int is_bucket, int is_bitmap) { int fd, page, size; int wsize; size = hashp->BSIZE; if ((hashp->fp == -1) && open_temp(hashp)) return (-1); fd = hashp->fp; if (hashp->LORDER != DB_BYTE_ORDER) { int i; int max; if (is_bitmap) { max = hashp->BSIZE >> 2; /* divide by 4 */ for (i = 0; i < max; i++) M_32_SWAP(((int *)p)[i]); } else { max = ((__uint16_t *)p)[0] + 2; for (i = 0; i <= max; i++) M_16_SWAP(((__uint16_t *)p)[i]); } } if (is_bucket) page = BUCKET_TO_PAGE(bucket); else page = OADDR_TO_PAGE(bucket); if ((lseek(fd, (off_t)page << hashp->BSHIFT, SEEK_SET) == -1) || ((wsize = write(fd, p, size)) == -1)) /* Errno is set */ return (-1); if (wsize != size) { errno = EFTYPE; return (-1); } return (0); } #define BYTE_MASK ((1 << INT_BYTE_SHIFT) -1) /* * Initialize a new bitmap page. Bitmap pages are left in memory * once they are read in. */ extern int __ibitmap(HTAB *hashp, int pnum, int nbits, int ndx) { __uint32_t *ip; int clearbytes, clearints; if ((ip = (__uint32_t *)malloc(hashp->BSIZE)) == NULL) return (1); hashp->nmaps++; clearints = ((nbits - 1) >> INT_BYTE_SHIFT) + 1; clearbytes = clearints << INT_TO_BYTE; (void)memset((char *)ip, 0, clearbytes); (void)memset(((char *)ip) + clearbytes, 0xFF, hashp->BSIZE - clearbytes); ip[clearints - 1] = ALL_SET << (nbits & BYTE_MASK); SETBIT(ip, 0); hashp->BITMAPS[ndx] = (__uint16_t)pnum; hashp->mapp[ndx] = ip; return (0); } static __uint32_t first_free(__uint32_t map) { __uint32_t i, mask; mask = 0x1; for (i = 0; i < BITS_PER_MAP; i++) { if (!(mask & map)) return (i); mask = mask << 1; } return (i); } static __uint16_t overflow_page(HTAB *hashp) { __uint32_t *freep = NULL; int max_free, offset, splitnum; __uint16_t addr; int bit, first_page, free_bit, free_page, i, in_use_bits, j; #ifdef DEBUG2 int tmp1, tmp2; #endif splitnum = hashp->OVFL_POINT; max_free = hashp->SPARES[splitnum]; free_page = (max_free - 1) >> (hashp->BSHIFT + BYTE_SHIFT); free_bit = (max_free - 1) & ((hashp->BSIZE << BYTE_SHIFT) - 1); /* Look through all the free maps to find the first free block */ first_page = hashp->LAST_FREED >>(hashp->BSHIFT + BYTE_SHIFT); for ( i = first_page; i <= free_page; i++ ) { if (!(freep = (__uint32_t *)hashp->mapp[i]) && !(freep = fetch_bitmap(hashp, i))) return (0); if (i == free_page) in_use_bits = free_bit; else in_use_bits = (hashp->BSIZE << BYTE_SHIFT) - 1; if (i == first_page) { bit = hashp->LAST_FREED & ((hashp->BSIZE << BYTE_SHIFT) - 1); j = bit / BITS_PER_MAP; bit = bit & ~(BITS_PER_MAP - 1); } else { bit = 0; j = 0; } for (; bit <= in_use_bits; j++, bit += BITS_PER_MAP) if (freep[j] != ALL_SET) goto found; } /* No Free Page Found */ hashp->LAST_FREED = hashp->SPARES[splitnum]; hashp->SPARES[splitnum]++; offset = hashp->SPARES[splitnum] - (splitnum ? hashp->SPARES[splitnum - 1] : 0); #define OVMSG "HASH: Out of overflow pages. Increase page size\n" if (offset > SPLITMASK) { if (++splitnum >= NCACHED) { (void)write(STDERR_FILENO, OVMSG, sizeof(OVMSG) - 1); return (0); } hashp->OVFL_POINT = splitnum; hashp->SPARES[splitnum] = hashp->SPARES[splitnum-1]; hashp->SPARES[splitnum-1]--; offset = 1; } /* Check if we need to allocate a new bitmap page */ if (free_bit == (hashp->BSIZE << BYTE_SHIFT) - 1) { free_page++; if (free_page >= NCACHED) { (void)write(STDERR_FILENO, OVMSG, sizeof(OVMSG) - 1); return (0); } /* * This is tricky. The 1 indicates that you want the new page * allocated with 1 clear bit. Actually, you are going to * allocate 2 pages from this map. The first is going to be * the map page, the second is the overflow page we were * looking for. The init_bitmap routine automatically, sets * the first bit of itself to indicate that the bitmap itself * is in use. We would explicitly set the second bit, but * don't have to if we tell init_bitmap not to leave it clear * in the first place. */ if (__ibitmap(hashp, (int)OADDR_OF(splitnum, offset), 1, free_page)) return (0); hashp->SPARES[splitnum]++; #ifdef DEBUG2 free_bit = 2; #endif offset++; if (offset > SPLITMASK) { if (++splitnum >= NCACHED) { (void)write(STDERR_FILENO, OVMSG, sizeof(OVMSG) - 1); return (0); } hashp->OVFL_POINT = splitnum; hashp->SPARES[splitnum] = hashp->SPARES[splitnum-1]; hashp->SPARES[splitnum-1]--; offset = 0; } } else { /* * Free_bit addresses the last used bit. Bump it to address * the first available bit. */ free_bit++; SETBIT(freep, free_bit); } /* Calculate address of the new overflow page */ addr = OADDR_OF(splitnum, offset); #ifdef DEBUG2 (void)fprintf(stderr, "OVERFLOW_PAGE: ADDR: %d BIT: %d PAGE %d\n", addr, free_bit, free_page); #endif return (addr); found: bit = bit + first_free(freep[j]); SETBIT(freep, bit); #ifdef DEBUG2 tmp1 = bit; tmp2 = i; #endif /* * Bits are addressed starting with 0, but overflow pages are addressed * beginning at 1. Bit is a bit addressnumber, so we need to increment * it to convert it to a page number. */ bit = 1 + bit + (i * (hashp->BSIZE << BYTE_SHIFT)); if (bit >= hashp->LAST_FREED) hashp->LAST_FREED = bit - 1; /* Calculate the split number for this page */ for (i = 0; (i < splitnum) && (bit > hashp->SPARES[i]); i++); offset = (i ? bit - hashp->SPARES[i - 1] : bit); if (offset >= SPLITMASK) return (0); /* Out of overflow pages */ addr = OADDR_OF(i, offset); #ifdef DEBUG2 (void)fprintf(stderr, "OVERFLOW_PAGE: ADDR: %d BIT: %d PAGE %d\n", addr, tmp1, tmp2); #endif /* Allocate and return the overflow page */ return (addr); } /* * Mark this overflow page as free. */ extern void __free_ovflpage(HTAB *hashp, BUFHEAD *obufp) { __uint16_t addr; __uint32_t *freep; int bit_address, free_page, free_bit; __uint16_t ndx; addr = obufp->addr; #ifdef DEBUG1 (void)fprintf(stderr, "Freeing %d\n", addr); #endif ndx = (((__uint16_t)addr) >> SPLITSHIFT); bit_address = (ndx ? hashp->SPARES[ndx - 1] : 0) + (addr & SPLITMASK) - 1; if (bit_address < hashp->LAST_FREED) hashp->LAST_FREED = bit_address; free_page = (bit_address >> (hashp->BSHIFT + BYTE_SHIFT)); free_bit = bit_address & ((hashp->BSIZE << BYTE_SHIFT) - 1); if (!(freep = hashp->mapp[free_page])) freep = fetch_bitmap(hashp, free_page); #ifdef DEBUG /* * This had better never happen. It means we tried to read a bitmap * that has already had overflow pages allocated off it, and we * failed to read it from the file. */ if (!freep) assert(0); #endif CLRBIT(freep, free_bit); #ifdef DEBUG2 (void)fprintf(stderr, "FREE_OVFLPAGE: ADDR: %d BIT: %d PAGE %d\n", obufp->addr, free_bit, free_page); #endif __reclaim_buf(hashp, obufp); } /* * Returns: * 0 success * -1 failure */ static int open_temp(HTAB *hashp) { sigset_t set, oset; static char namestr[] = "_hashXXXXXX"; /* Block signals; make sure file goes away at process exit. */ (void)sigfillset(&set); (void)sigprocmask(SIG_BLOCK, &set, &oset); if ((hashp->fp = mkstemp(namestr)) != -1) { (void)unlink(namestr); #ifdef HAVE_FCNTL (void)fcntl(hashp->fp, F_SETFD, 1); #endif } (void)sigprocmask(SIG_SETMASK, &oset, (sigset_t *)NULL); return (hashp->fp != -1 ? 0 : -1); } /* * We have to know that the key will fit, but the last entry on the page is * an overflow pair, so we need to shift things. */ static void squeeze_key(__uint16_t *sp, const DBT *key, const DBT *val) { char *p; __uint16_t free_space, n, off, pageno; p = (char *)sp; n = sp[0]; free_space = FREESPACE(sp); off = OFFSET(sp); pageno = sp[n - 1]; off -= key->size; sp[n - 1] = off; memmove(p + off, key->data, key->size); off -= val->size; sp[n] = off; memmove(p + off, val->data, val->size); sp[0] = n + 2; sp[n + 1] = pageno; sp[n + 2] = OVFLPAGE; FREESPACE(sp) = free_space - PAIRSIZE(key, val); OFFSET(sp) = off; } static __uint32_t * fetch_bitmap(HTAB *hashp, int ndx) { if (ndx >= hashp->nmaps) return (NULL); if ((hashp->mapp[ndx] = (__uint32_t *)malloc(hashp->BSIZE)) == NULL) return (NULL); if (__get_page(hashp, (char *)hashp->mapp[ndx], hashp->BITMAPS[ndx], 0, 1, 1)) { free(hashp->mapp[ndx]); return (NULL); } return (hashp->mapp[ndx]); } #ifdef DEBUG4 int print_chain(addr) int addr; { BUFHEAD *bufp; short *bp, oaddr; (void)fprintf(stderr, "%d ", addr); bufp = __get_buf(hashp, addr, NULL, 0); bp = (short *)bufp->page; while (bp[0] && ((bp[bp[0]] == OVFLPAGE) || ((bp[0] > 2) && bp[2] < REAL_KEY))) { oaddr = bp[bp[0] - 1]; (void)fprintf(stderr, "%d ", (int)oaddr); bufp = __get_buf(hashp, (int)oaddr, bufp, 0); bp = (short *)bufp->page; } (void)fprintf(stderr, "\n"); } #endif picolibc-1.7.4/newlib/libc/search/hcreate.3000066400000000000000000000136341414576234500204660ustar00rootroot00000000000000.\" .\" Copyright (c) 1991, 1993, 1994 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" $FreeBSD: src/lib/libc/stdlib/hcreate.3,v 1.2 2001/07/09 15:54:36 ru Exp $ .\" .Dd May 8, 2001 .Os .Dt HCREATE 3 .Sh NAME .Nm hcreate , hdestroy , hsearch .Nd manage hash search table .Sh LIBRARY .Lb libc .Sh SYNOPSIS .In search.h .Ft int .Fn hcreate "size_t nel" .Ft void .Fn hdestroy void .Ft ENTRY * .Fn hsearch "ENTRY item" "ACTION action" .Sh DESCRIPTION The .Fn hcreate , .Fn hdestroy , and .Fn hsearch functions manage hash search tables. .Pp The .Fn hcreate function allocates sufficient space for the table, and the application should ensure it is called before .Fn hsearch is used. The .Fa nel argument is an estimate of the maximum number of entries that the table should contain. This number may be adjusted upward by the algorithm in order to obtain certain mathematically favorable circumstances. .Pp The .Fn hdestroy function disposes of the search table, and may be followed by another call to .Fn hcreate . After the call to .Fn hdestroy , the data can no longer be considered accessible. .Pp The .Fn hsearch function is a hash-table search routine. It returns a pointer into a hash table indicating the location at which an entry can be found. The .Fa item argument is a structure of type .Vt ENTRY (defined in the .Aq Pa search.h header) containing two pointers: .Fa item.key points to the comparison key (a .Vt "char *" ) , and .Fa item.data (a .Vt "void *" ) points to any other data to be associated with that key. The comparison function used by .Fn hsearch is .Xr strcmp 3 . The .Fa action argument is a member of an enumeration type .Vt ACTION indicating the disposition of the entry if it cannot be found in the table. .Dv ENTER indicates that the .Fa item should be inserted in the table at an appropriate point. .Dv FIND indicates that no entry should be made. Unsuccessful resolution is indicated by the return of a .Dv NULL pointer. .Sh RETURN VALUES The .Fn hcreate function returns 0 if it cannot allocate sufficient space for the table; otherwise, it returns non-zero. .Pp The .Fn hdestroy function does not return a value. .Pp The .Fn hsearch function returns a .Dv NULL pointer if either the .Fa action is .Dv FIND and the .Fa item could not be found or the .Fa action is .Dv ENTER and the table is full. .Sh ERRORS The .Fn hcreate and .Fn hsearch functions may fail if: .Bl -tag -width Er .It Bq Er ENOMEM Insufficient storage space is available. .El .Sh EXAMPLES The following example reads in strings followed by two numbers and stores them in a hash table, discarding duplicates. It then reads in strings and finds the matching entry in the hash table and prints it out. .Bd -literal #include #include #include struct info { /* This is the info stored in the table */ int age, room; /* other than the key. */ }; #define NUM_EMPL 5000 /* # of elements in search table. */ int main(void) { char string_space[NUM_EMPL*20]; /* Space to store strings. */ struct info info_space[NUM_EMPL]; /* Space to store employee info. */ char *str_ptr = string_space; /* Next space in string_space. */ struct info *info_ptr = info_space; /* Next space in info_space. */ ENTRY item; ENTRY *found_item; /* Name to look for in table. */ char name_to_find[30]; int i = 0; /* Create table; no error checking is performed. */ (void) hcreate(NUM_EMPL); while (scanf("%s%d%d", str_ptr, &info_ptr->age, &info_ptr->room) != EOF && i++ < NUM_EMPL) { /* Put information in structure, and structure in item. */ item.key = str_ptr; item.data = info_ptr; str_ptr += strlen(str_ptr) + 1; info_ptr++; /* Put item into table. */ (void) hsearch(item, ENTER); } /* Access table. */ item.key = name_to_find; while (scanf("%s", item.key) != EOF) { if ((found_item = hsearch(item, FIND)) != NULL) { /* If item is in the table. */ (void)printf("found %s, age = %d, room = %d\en", found_item->key, ((struct info *)found_item->data)->age, ((struct info *)found_item->data)->room); } else (void)printf("no such employee %s\en", name_to_find); } return 0; } .Ed .Sh SEE ALSO .Xr bsearch 3 , .Xr lsearch 3 , .Xr malloc 3 , .Xr strcmp 3 , .Xr tsearch 3 .Sh STANDARDS The .Fn hcreate , .Fn hdestroy , and .Fn hsearch functions conform to .St -xpg4.2 . .Sh HISTORY The .Fn hcreate , .Fn hdestroy , and .Fn hsearch functions first appeared in .At V . .Sh BUGS The interface permits the use of only one hash table at a time. picolibc-1.7.4/newlib/libc/search/hcreate.c000066400000000000000000000047311414576234500205440ustar00rootroot00000000000000/* $NetBSD: hcreate.c,v 1.2 2001/02/19 21:26:04 ross Exp $ */ /* * Copyright (c) 2001 Christopher G. Demetriou * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * <> */ /* * hcreate() / hsearch() / hdestroy() * * SysV/XPG4 hash table functions. * * Implementation done based on NetBSD manual page and Solaris manual page, * plus my own personal experience about how they're supposed to work. * * I tried to look at Knuth (as cited by the Solaris manual page), but * nobody had a copy in the office, so... */ #include #if 0 #if defined(LIBC_SCCS) && !defined(lint) __RCSID("$NetBSD: hcreate.c,v 1.2 2001/02/19 21:26:04 ross Exp $"); #endif /* LIBC_SCCS and not lint */ #endif #include #include #include #include #include static struct hsearch_data htab; int hcreate (size_t nel) { return hcreate_r (nel, &htab); } void hdestroy (void) { hdestroy_r (&htab); } ENTRY * hsearch (ENTRY item, ACTION action) { ENTRY *retval; hsearch_r (item, action, &retval, &htab); return retval; } picolibc-1.7.4/newlib/libc/search/hcreate_r.c000066400000000000000000000121121414576234500210550ustar00rootroot00000000000000/* $NetBSD: hcreate.c,v 1.2 2001/02/19 21:26:04 ross Exp $ */ /* * Copyright (c) 2001 Christopher G. Demetriou * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * <> */ /* * hcreate() / hsearch() / hdestroy() * * SysV/XPG4 hash table functions. * * Implementation done based on NetBSD manual page and Solaris manual page, * plus my own personal experience about how they're supposed to work. * * I tried to look at Knuth (as cited by the Solaris manual page), but * nobody had a copy in the office, so... */ #include #if 0 #if defined(LIBC_SCCS) && !defined(lint) __RCSID("$NetBSD: hcreate.c,v 1.2 2001/02/19 21:26:04 ross Exp $"); #endif /* LIBC_SCCS and not lint */ #endif #include #include #include #include #include #include /* * DO NOT MAKE THIS STRUCTURE LARGER THAN 32 BYTES (4 ptrs on 64-bit * ptr machine) without adjusting MAX_BUCKETS_LG2 below. */ struct internal_entry { SLIST_ENTRY(internal_entry) link; ENTRY ent; }; SLIST_HEAD(internal_head, internal_entry); #define MIN_BUCKETS_LG2 4 #define MIN_BUCKETS (1 << MIN_BUCKETS_LG2) /* * max * sizeof internal_entry must fit into size_t. * assumes internal_entry is <= 32 (2^5) bytes. */ #ifdef __MSP430X_LARGE__ /* 20-bit size_t. */ #define MAX_BUCKETS_LG2 (20 - 1 - 5) #else #define MAX_BUCKETS_LG2 (sizeof (size_t) * 8 - 1 - 5) #endif #define MAX_BUCKETS ((size_t)1 << MAX_BUCKETS_LG2) /* Default hash function, from db/hash/hash_func.c */ extern __uint32_t (*__default_hash)(const void *, size_t); int hcreate_r(size_t nel, struct hsearch_data *htab) { size_t idx; unsigned int p2; /* Make sure this this isn't called when a table already exists. */ if (htab->htable != NULL) { errno = EINVAL; return 0; } /* If nel is too small, make it min sized. */ if (nel < MIN_BUCKETS) nel = MIN_BUCKETS; /* If it's too large, cap it. */ if (nel > MAX_BUCKETS) nel = MAX_BUCKETS; /* If it's is not a power of two in size, round up. */ if ((nel & (nel - 1)) != 0) { for (p2 = 0; nel != 0; p2++) nel >>= 1; nel = 1 << p2; } /* Allocate the table. */ htab->htablesize = nel; htab->htable = malloc(htab->htablesize * sizeof htab->htable[0]); if (htab->htable == NULL) { errno = ENOMEM; return 0; } /* Initialize it. */ for (idx = 0; idx < htab->htablesize; idx++) SLIST_INIT(&(htab->htable[idx])); return 1; } void hdestroy_r(struct hsearch_data *htab) { #if 0 struct internal_entry *ie; size_t idx; #endif if (htab->htable == NULL) return; #if 0 for (idx = 0; idx < htab->htablesize; idx++) { while (!SLIST_EMPTY(&(htab->htable[idx]))) { ie = SLIST_FIRST(&(htab->htable[idx])); SLIST_REMOVE_HEAD(&(htab->htable[idx]), link); free(ie->ent.key); free(ie); } } #endif free(htab->htable); htab->htable = NULL; } int hsearch_r(ENTRY item, ACTION action, ENTRY **retval, struct hsearch_data *htab) { struct internal_head *head; struct internal_entry *ie; __uint32_t hashval; size_t len; len = strlen(item.key); hashval = (*__default_hash)(item.key, len); head = &(htab->htable[hashval & (htab->htablesize - 1)]); ie = SLIST_FIRST(head); while (ie != NULL) { if (strcmp(ie->ent.key, item.key) == 0) break; ie = SLIST_NEXT(ie, link); } if (ie != NULL) { *retval = &ie->ent; return 1; } else if (action == FIND) { *retval = NULL; return 0; } ie = malloc(sizeof *ie); if (ie == NULL) { *retval = NULL; return 0; } ie->ent.key = item.key; ie->ent.data = item.data; SLIST_INSERT_HEAD(head, ie, link); *retval = &ie->ent; return 1; } picolibc-1.7.4/newlib/libc/search/meson.build000066400000000000000000000037311414576234500211260ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # srcs_search = [ 'bsd_qsort_r.c', 'bsearch.c', 'hash_bigkey.c', 'hash_buf.c', 'hash.c', 'hash_func.c', 'hash_log2.c', 'hash_page.c', 'hcreate.c', 'hcreate_r.c', 'qsort.c', 'qsort_r.c', 'tdelete.c', 'tdestroy.c', 'tfind.c', 'tsearch.c', 'twalk.c', ] hdrs_search = [ 'db_local.h', 'extern.h', 'hash.h', 'page.h', ] src_search = files(srcs_search) picolibc-1.7.4/newlib/libc/search/ndbm.c000066400000000000000000000114221414576234500200440ustar00rootroot00000000000000/*- * SPDX-License-Identifier: BSD-3-Clause * * Copyright (c) 1990, 1993 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Margo Seltzer. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)ndbm.c 8.4 (Berkeley) 7/21/94"; #endif /* LIBC_SCCS and not lint */ #include __FBSDID("$FreeBSD$ : src/lib/libc/db/hash/ndbm.c Nov 20 19:49:47 2017 UTC by pfg - SVN Revision 326025"); /* * This package provides a dbm compatible interface to the new hashing * package described in db(3). */ #include #include #include #include #include #include "hash.h" #define __DBINTERFACE_PRIVATE /* activate prototypes from db_local.h */ #include "db_local.h" /* * Returns: * *DBM on success * NULL on failure */ extern DBM * dbm_open(const char *file, int flags, mode_t mode) { HASHINFO info; char path[MAXPATHLEN]; info.bsize = 4096; info.ffactor = 40; info.nelem = 1; info.cachesize = 0; info.hash = NULL; info.lorder = 0; if( strlen(file) >= sizeof(path) - strlen(DBM_SUFFIX)) { errno = ENAMETOOLONG; return(NULL); } (void)strcpy(path, file); (void)strcat(path, DBM_SUFFIX); return ((DBM *)__hash_open(path, flags, mode, 0, &info)); } extern void dbm_close(DBM *db) { (void)(db->close)(db); } /* * Returns: * DATUM on success * NULL on failure */ extern datum dbm_fetch(DBM *db, datum key) { datum retdata; int status; DBT dbtkey, dbtretdata; dbtkey.data = key.dptr; dbtkey.size = key.dsize; status = (db->get)(db, &dbtkey, &dbtretdata, 0); if (status) { dbtretdata.data = NULL; dbtretdata.size = 0; } retdata.dptr = dbtretdata.data; retdata.dsize = dbtretdata.size; return (retdata); } /* * Returns: * DATUM on success * NULL on failure */ extern datum dbm_firstkey(DBM *db) { int status; datum retkey; DBT dbtretkey, dbtretdata; status = (db->seq)(db, &dbtretkey, &dbtretdata, R_FIRST); if (status) dbtretkey.data = NULL; retkey.dptr = dbtretkey.data; retkey.dsize = dbtretkey.size; return (retkey); } /* * Returns: * DATUM on success * NULL on failure */ extern datum dbm_nextkey(DBM *db) { int status; datum retkey; DBT dbtretkey, dbtretdata; status = (db->seq)(db, &dbtretkey, &dbtretdata, R_NEXT); if (status) dbtretkey.data = NULL; retkey.dptr = dbtretkey.data; retkey.dsize = dbtretkey.size; return (retkey); } /* * Returns: * 0 on success * <0 failure */ extern int dbm_delete(DBM *db, datum key) { int status; DBT dbtkey; dbtkey.data = key.dptr; dbtkey.size = key.dsize; status = (db->del)(db, &dbtkey, 0); if (status) return (-1); else return (0); } /* * Returns: * 0 on success * <0 failure * 1 if DBM_INSERT and entry exists */ extern int dbm_store(DBM *db, datum key, datum data, int flags) { DBT dbtkey, dbtdata; dbtkey.data = key.dptr; dbtkey.size = key.dsize; dbtdata.data = data.dptr; dbtdata.size = data.dsize; return ((db->put)(db, &dbtkey, &dbtdata, (flags == DBM_INSERT) ? R_NOOVERWRITE : 0)); } extern int dbm_error(DBM *db) { HTAB *hp; hp = (HTAB *)db->internal; return (hp->error); } extern int dbm_clearerr(DBM *db) { HTAB *hp; hp = (HTAB *)db->internal; hp->error = 0; return (0); } extern int dbm_dirfno(DBM *db) { return(((HTAB *)db->internal)->fp); } picolibc-1.7.4/newlib/libc/search/page.h000066400000000000000000000066261414576234500200570ustar00rootroot00000000000000/*- * Copyright (c) 1990, 1993, 1994 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Margo Seltzer. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)page.h 8.2 (Berkeley) 5/31/94 * $FreeBSD: src/lib/libc/db/hash/page.h,v 1.2 2002/03/22 23:41:40 obrien Exp $ */ /* * Definitions for hashing page file format. */ /* * routines dealing with a data page * * page format: * +------------------------------+ * p | n | keyoff | datoff | keyoff | * +------------+--------+--------+ * | datoff | free | ptr | --> | * +--------+---------------------+ * | F R E E A R E A | * +--------------+---------------+ * | <---- - - - | data | * +--------+-----+----+----------+ * | key | data | key | * +--------+----------+----------+ * * Pointer to the free space is always: p[p[0] + 2] * Amount of free space on the page is: p[p[0] + 1] */ /* * How many bytes required for this pair? * 2 shorts in the table at the top of the page + room for the * key and room for the data * * We prohibit entering a pair on a page unless there is also room to append * an overflow page. The reason for this it that you can get in a situation * where a single key/data pair fits on a page, but you can't append an * overflow page and later you'd have to split the key/data and handle like * a big pair. * You might as well do this up front. */ #define PAIRSIZE(K,D) (2*sizeof(__uint16_t) + (K)->size + (D)->size) #define BIGOVERHEAD (4*sizeof(__uint16_t)) #define KEYSIZE(K) (4*sizeof(__uint16_t) + (K)->size); #define OVFLSIZE (2*sizeof(__uint16_t)) #define FREESPACE(P) ((P)[(P)[0]+1]) #define OFFSET(P) ((P)[(P)[0]+2]) #define PAIRFITS(P,K,D) \ (((P)[2] >= REAL_KEY) && \ (PAIRSIZE((K),(D)) + OVFLSIZE) <= FREESPACE((P))) #define PAGE_META(N) (((N)+3) * sizeof(__uint16_t)) typedef struct { BUFHEAD *newp; BUFHEAD *oldp; BUFHEAD *nextp; __uint16_t next_addr; } SPLIT_RETURN; picolibc-1.7.4/newlib/libc/search/qsort.c000066400000000000000000000240761414576234500203050ustar00rootroot00000000000000/* FUNCTION <>---sort an array INDEX qsort SYNOPSIS #include void qsort(void *<[base]>, size_t <[nmemb]>, size_t <[size]>, int (*<[compar]>)(const void *, const void *) ); DESCRIPTION <> sorts an array (beginning at <[base]>) of <[nmemb]> objects. <[size]> describes the size of each element of the array. You must supply a pointer to a comparison function, using the argument shown as <[compar]>. (This permits sorting objects of unknown properties.) Define the comparison function to accept two arguments, each a pointer to an element of the array starting at <[base]>. The result of <<(*<[compar]>)>> must be negative if the first argument is less than the second, zero if the two arguments match, and positive if the first argument is greater than the second (where ``less than'' and ``greater than'' refer to whatever arbitrary ordering is appropriate). The array is sorted in place; that is, when <> returns, the array elements beginning at <[base]> have been reordered. RETURNS <> does not return a result. PORTABILITY <> is required by ANSI (without specifying the sorting algorithm). */ /*- * Copyright (c) 1992, 1993 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include <_ansi.h> #include #include #ifndef __GNUC__ #define inline #endif #if defined(I_AM_QSORT_R) typedef int cmp_t(void *, const void *, const void *); #elif defined(I_AM_GNU_QSORT_R) typedef int cmp_t(const void *, const void *, void *); #else typedef int cmp_t(const void *, const void *); #endif static inline char *med3 (char *, char *, char *, cmp_t *, void *); static inline void swapfunc (char *, char *, int, int); #define min(a, b) (a) < (b) ? a : b /* * Qsort routine from Bentley & McIlroy's "Engineering a Sort Function". */ #define swapcode(TYPE, parmi, parmj, n) { \ long i = (n) / sizeof (TYPE); \ TYPE *pi = (TYPE *) (parmi); \ TYPE *pj = (TYPE *) (parmj); \ do { \ TYPE t = *pi; \ *pi++ = *pj; \ *pj++ = t; \ } while (--i > 0); \ } #define SWAPINIT(a, es) swaptype = ((char *)a - (char *)0) % sizeof(long) || \ es % sizeof(long) ? 2 : es == sizeof(long)? 0 : 1; static inline void swapfunc (char *a, char *b, int n, int swaptype) { if(swaptype <= 1) swapcode(long, a, b, n) else swapcode(char, a, b, n) } #define swap(a, b) \ if (swaptype == 0) { \ long t = *(long *)(a); \ *(long *)(a) = *(long *)(b); \ *(long *)(b) = t; \ } else \ swapfunc(a, b, es, swaptype) #define vecswap(a, b, n) if ((n) > 0) swapfunc(a, b, n, swaptype) #if defined(I_AM_QSORT_R) #define CMP(t, x, y) (cmp((t), (x), (y))) #elif defined(I_AM_GNU_QSORT_R) #define CMP(t, x, y) (cmp((x), (y), (t))) #else #define CMP(t, x, y) (cmp((x), (y))) #endif static inline char * med3 (char *a, char *b, char *c, cmp_t *cmp, void *thunk #if !defined(I_AM_QSORT_R) && !defined(I_AM_GNU_QSORT_R) __unused #endif ) { return CMP(thunk, a, b) < 0 ? (CMP(thunk, b, c) < 0 ? b : (CMP(thunk, a, c) < 0 ? c : a )) :(CMP(thunk, b, c) > 0 ? b : (CMP(thunk, a, c) < 0 ? a : c )); } /* * Classical function call recursion wastes a lot of stack space. Each * recursion level requires a full stack frame comprising all local variables * and additional space as dictated by the processor calling convention. * * This implementation instead stores the variables that are unique for each * recursion level in a parameter stack array, and uses iteration to emulate * recursion. Function call recursion is not used until the array is full. * * To ensure the stack consumption isn't worsened by this design, the size of * the parameter stack array is chosen to be similar to the stack frame * excluding the array. Each function call recursion level can handle this * number of iterative recursion levels. */ #define PARAMETER_STACK_LEVELS 8u #if defined(I_AM_QSORT_R) void __bsd_qsort_r (void *a, size_t n, size_t es, void *thunk, cmp_t *cmp) #elif defined(I_AM_GNU_QSORT_R) void qsort_r (void *a, size_t n, size_t es, cmp_t *cmp, void *thunk) #else #define thunk NULL void qsort (void *a, size_t n, size_t es, cmp_t *cmp) #endif { char *pa, *pb, *pc, *pd, *pl, *pm, *pn; size_t d, r; int cmp_result; int swaptype, swap_cnt; size_t recursion_level = 0; struct { void *a; size_t n; } parameter_stack[PARAMETER_STACK_LEVELS]; SWAPINIT(a, es); loop: swap_cnt = 0; if (n < 7) { /* Short arrays are insertion sorted. */ for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es) for (pl = pm; pl > (char *) a && CMP(thunk, pl - es, pl) > 0; pl -= es) swap(pl, pl - es); goto pop; } /* Select a pivot element, move it to the left. */ pm = (char *) a + (n / 2) * es; if (n > 7) { pl = a; pn = (char *) a + (n - 1) * es; if (n > 40) { d = (n / 8) * es; pl = med3(pl, pl + d, pl + 2 * d, cmp, thunk); pm = med3(pm - d, pm, pm + d, cmp, thunk); pn = med3(pn - 2 * d, pn - d, pn, cmp, thunk); } pm = med3(pl, pm, pn, cmp, thunk); } swap(a, pm); /* * Sort the array relative the pivot in four ranges as follows: * { elems == pivot, elems < pivot, elems > pivot, elems == pivot } */ pa = pb = (char *) a + es; pc = pd = (char *) a + (n - 1) * es; for (;;) { /* Scan left to right stopping at first element > pivot. */ while (pb <= pc && (cmp_result = CMP(thunk, pb, a)) <= 0) { /* Move elements == pivot to the left (to pa) */ if (cmp_result == 0) { swap_cnt = 1; swap(pa, pb); pa += es; } pb += es; } /* Scan right to left stopping at first element < pivot. */ while (pb <= pc && (cmp_result = CMP(thunk, pc, a)) >= 0) { /* Move elements == pivot to the right (to pd) */ if (cmp_result == 0) { swap_cnt = 1; swap(pc, pd); pd -= es; } pc -= es; } if (pb > pc) break; /* The scan has found two elements to swap with each other. */ swap(pb, pc); swap_cnt = 1; pb += es; pc -= es; } if (swap_cnt == 0) { /* Switch to insertion sort */ for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es) for (pl = pm; pl > (char *) a && CMP(thunk, pl - es, pl) > 0; pl -= es) swap(pl, pl - es); goto pop; } /* * Rearrange the array in three parts sorted like this: * { elements < pivot, elements == pivot, elements > pivot } */ pn = (char *) a + n * es; r = min(pa - (char *)a, pb - pa); vecswap(a, pb - r, r); r = min((size_t) (pd - pc), (size_t) (pn - pd) - es); vecswap(pb, pn - r, r); d = pb - pa; /* d = Size of left part. */ r = pd - pc; /* r = Size of right part. */ pn -= r; /* pn = Base of right part. */ /* * Check which of the left and right parts are larger. * Set (a, n) to (base, size) of the larger part. * Set (pa, r) to (base, size) of the smaller part. */ if (r > d) { /* Right part is the larger part */ pa = a; a = pn; n = r; r = d; } else { /* Left part is the larger part, or both are equal. */ pa = pn; n = d; } /* * The left and right parts each need further sorting if they * contain two elements or more. If both need sorting we use * recursion to sort the smaller part and save the larger part * to be sorted by iteration after the recursion. * Using recursion only for the smaller part guarantees a * recursion depth that is bounded to be less than (log2(n)). */ if (r > es) { /* Smaller part > 1 element. Both parts need sorting. */ if (recursion_level < PARAMETER_STACK_LEVELS) { /* * The smaller part needs to be recursively sorted * before the larger part is sorted. To avoid function * call recursion the parameters for the larger part * are pushed on the parameter_stack array. The smaller * part is sorted using iteration and the larger part * will be sorted when the parameter_stack is popped * after the smaller part has been sorted. */ parameter_stack[recursion_level].a = a; parameter_stack[recursion_level].n = n / es; recursion_level++; a = pa; n = r / es; goto loop; } else { /* * The parameter_stack array is full. The smaller part * is sorted using function call recursion. The larger * part will be sorted after the function call returns. */ #if defined(I_AM_QSORT_R) __bsd_qsort_r(pa, r / es, es, thunk, cmp); #elif defined(I_AM_GNU_QSORT_R) qsort_r(pa, r / es, es, cmp, thunk); #else qsort(pa, r / es, es, cmp); #endif } } if (n > es) { /* The larger part needs sorting. Iterate to sort. */ n = n / es; goto loop; } /* Both left and right parts are one element or less - level done. */ pop: if (recursion_level != 0) { recursion_level--; a = parameter_stack[recursion_level].a; n = parameter_stack[recursion_level].n; goto loop; } } picolibc-1.7.4/newlib/libc/search/qsort_r.c000066400000000000000000000032041414576234500206140ustar00rootroot00000000000000/* Copyright (c) 2014 Yaakov Selkowitz */ /* FUNCTION <>---sort an array INDEX qsort_r SYNOPSIS #define _BSD_SOURCE #include void qsort_r(void *<[base]>, size_t <[nmemb]>, size_t <[size]>, void *<[thunk]>, int (*<[compar]>)(void*, const void *, const void *)); #define _GNU_SOURCE #include void qsort_r(void *<[base]>, size_t <[nmemb]>, size_t <[size]>, int (*<[compar]>)(const void *, const void *, void *), void *<[thunk]>); DESCRIPTION <> sorts an array (beginning at <[base]>) of <[nmemb]> objects. <[size]> describes the size of each element of the array. You must supply a pointer to a comparison function, using the argument shown as <[compar]>. (This permits sorting objects of unknown properties.) There are two forms of this function, in each the comparison function is defined to accept three arguments, but in a different order. Two are pointers to an element of the array starting at <[base]>, and another being an arbitrary pointer <[thunk]>. The result of <<(*<[compar]>)>> must be negative if the first argument is less than the second, zero if the two arguments match, and positive if the first argument is greater than the second (where ``less than'' and ``greater than'' refer to whatever arbitrary ordering is appropriate). The array is sorted in place; that is, when <> returns, the array elements beginning at <[base]> have been reordered. RETURNS <> does not return a result. PORTABILITY <>, in various forms, appears in both BSD and glibc. */ #define _GNU_SOURCE #define I_AM_GNU_QSORT_R #include "qsort.c" picolibc-1.7.4/newlib/libc/search/tdelete.c000066400000000000000000000062571414576234500205640ustar00rootroot00000000000000/* Copyright (c) 1991, 1993, 1994 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* $NetBSD: tdelete.c,v 1.2 1999/09/16 11:45:37 lukem Exp $ */ /* * Tree search generalized from Knuth (6.2.2) Algorithm T just like * the AT&T man page says. * * The node_t structure is for internal use only, lint doesn't grok it. * * Written by reading the System V Interface Definition, not the code. * * Totally public domain. */ #include #if 0 #if defined(LIBC_SCCS) && !defined(lint) __RCSID("$NetBSD: tdelete.c,v 1.2 1999/09/16 11:45:37 lukem Exp $"); #endif /* LIBC_SCCS and not lint */ #endif #include #define _SEARCH_PRIVATE #include #include /* delete node with given key */ void * tdelete (const void *__restrict vkey, /* key to be deleted */ void **__restrict vrootp, /* address of the root of tree */ int (*compar)(const void *, const void *)) { node_t **rootp = (node_t **)vrootp; node_t *p, *q, *r; int cmp; if (rootp == NULL || (p = *rootp) == NULL) return NULL; while ((cmp = (*compar)(vkey, (*rootp)->key)) != 0) { p = *rootp; rootp = (cmp < 0) ? &(*rootp)->llink : /* follow llink branch */ &(*rootp)->rlink; /* follow rlink branch */ if (*rootp == NULL) return NULL; /* key not found */ } r = (*rootp)->rlink; /* D1: */ if ((q = (*rootp)->llink) == NULL) /* Left NULL? */ q = r; else if (r != NULL) { /* Right link is NULL? */ if (r->llink == NULL) { /* D2: Find successor */ r->llink = q; q = r; } else { /* D3: Find NULL link */ for (q = r->llink; q->llink != NULL; q = r->llink) r = q; r->llink = q->rlink; q->llink = (*rootp)->llink; q->rlink = (*rootp)->rlink; } } free(*rootp); /* D4: Free node */ *rootp = q; /* link parent to new node */ return p; } picolibc-1.7.4/newlib/libc/search/tdestroy.c000066400000000000000000000050611414576234500210030ustar00rootroot00000000000000/* Copyright (c) 1991, 1993, 1994 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* $NetBSD: tdelete.c,v 1.2 1999/09/16 11:45:37 lukem Exp $ */ /* * Tree search generalized from Knuth (6.2.2) Algorithm T just like * the AT&T man page says. * * The node_t structure is for internal use only, lint doesn't grok it. * * Written by reading the System V Interface Definition, not the code. * * Totally public domain. */ #include #if 0 #if defined(LIBC_SCCS) && !defined(lint) __RCSID("$NetBSD: tdelete.c,v 1.2 1999/09/16 11:45:37 lukem Exp $"); #endif /* LIBC_SCCS and not lint */ #endif #include #define _SEARCH_PRIVATE #include #include /* Walk the nodes of a tree */ static void trecurse(node_t *root, /* Root of the tree to be walked */ void (*free_action)(void *)) { if (root->llink != NULL) trecurse(root->llink, free_action); if (root->rlink != NULL) trecurse(root->rlink, free_action); (*free_action) ((void *) root->key); free(root); } void tdestroy (void *vrootp, void (*freefct)(void *)) { node_t *root = (node_t *) vrootp; if (root != NULL) trecurse(root, freefct); } picolibc-1.7.4/newlib/libc/search/tfind.c000066400000000000000000000051461414576234500202360ustar00rootroot00000000000000/* Copyright (c) 1991, 1993, 1994 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* $NetBSD: tfind.c,v 1.2 1999/09/16 11:45:37 lukem Exp $ */ /* * Tree search generalized from Knuth (6.2.2) Algorithm T just like * the AT&T man page says. * * The node_t structure is for internal use only, lint doesn't grok it. * * Written by reading the System V Interface Definition, not the code. * * Totally public domain. */ #include #if 0 #if defined(LIBC_SCCS) && !defined(lint) __RCSID("$NetBSD: tfind.c,v 1.2 1999/09/16 11:45:37 lukem Exp $"); #endif /* LIBC_SCCS and not lint */ #endif #include #define _SEARCH_PRIVATE #include #include /* find a node, or return 0 */ void * tfind (const void *vkey, /* key to be found */ void **vrootp, /* address of the tree root */ int (*compar)(const void *, const void *)) { node_t **rootp = (node_t **)vrootp; if (rootp == NULL) return NULL; while (*rootp != NULL) { /* T1: */ int r; if ((r = (*compar)(vkey, (*rootp)->key)) == 0) /* T2: */ return *rootp; /* key found */ rootp = (r < 0) ? &(*rootp)->llink : /* T3: follow left branch */ &(*rootp)->rlink; /* T4: follow right branch */ } return NULL; } picolibc-1.7.4/newlib/libc/search/tsearch.3000066400000000000000000000074041414576234500205020ustar00rootroot00000000000000.\" $NetBSD$ .\" Copyright (c) 1997 Todd C. Miller .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. The name of the author may not be used to endorse or promote products .\" derived from this software without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, .\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY .\" AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL .\" THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, .\" EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, .\" PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; .\" OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, .\" WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR .\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF .\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .\" OpenBSD: tsearch.3,v 1.2 1998/06/21 22:13:49 millert Exp .\" $FreeBSD: src/lib/libc/stdlib/tsearch.3,v 1.7 2001/09/07 14:46:36 asmodai Exp $ .\" .Dd June 15, 1997 .Dt TSEARCH 3 .Os .Sh NAME .Nm tsearch , tfind , tdelete , twalk .Nd manipulate binary search trees .Sh SYNOPSIS .In search.h .Ft void * .Fn tdelete "const void *key" "void **rootp" "int (*compar) (const void *, const void *)" .Ft void * .Fn tfind "const void *key" "void **rootp" "int (*compar) (const void *, const void *)" .Ft void * .Fn tsearch "const void *key" "void **rootp" "int (*compar) (const void *, const void *)" .Ft void .Fn twalk "const void *root" "void (*compar) (const void *, VISIT, int)" .Sh DESCRIPTION The .Fn tdelete , .Fn tfind , .Fn tsearch , and .Fn twalk functions manage binary search trees based on algorithms T and D from Knuth (6.2.2). The comparison function passed in by the user has the same style of return values as .Xr strcmp 3 . .Pp .Fn Tfind searches for the datum matched by the argument .Fa key in the binary tree rooted at .Fa rootp , returning a pointer to the datum if it is found and NULL if it is not. .Pp .Fn Tsearch is identical to .Fn tfind except that if no match is found, .Fa key is inserted into the tree and a pointer to it is returned. If .Fa rootp points to a NULL value a new binary search tree is created. .Pp .Fn Tdelete deletes a node from the specified binary search tree and returns a pointer to the parent of the node to be deleted. It takes the same arguments as .Fn tfind and .Fn tsearch . If the node to be deleted is the root of the binary search tree, .Fa rootp will be adjusted. .Pp .Fn Twalk walks the binary search tree rooted in .Fa root and calls the function .Fa action on each node. .Fa Action is called with three arguments: a pointer to the current node, a value from the enum .Sy "typedef enum { preorder, postorder, endorder, leaf } VISIT;" specifying the traversal type, and a node level (where level zero is the root of the tree). .Sh SEE ALSO .Xr bsearch 3 , .Xr hsearch 3 , .Xr lsearch 3 .Sh RETURN VALUES The .Fn tsearch function returns NULL if allocation of a new node fails (usually due to a lack of free memory). .Pp .Fn Tfind , .Fn tsearch , and .Fn tdelete return NULL if .Fa rootp is NULL or the datum cannot be found. .Pp The .Fn twalk function returns no value. picolibc-1.7.4/newlib/libc/search/tsearch.c000066400000000000000000000056111414576234500205600ustar00rootroot00000000000000/* Copyright (c) 1991, 1993, 1994 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* $NetBSD: tsearch.c,v 1.3 1999/09/16 11:45:37 lukem Exp $ */ /* * Tree search generalized from Knuth (6.2.2) Algorithm T just like * the AT&T man page says. * * The node_t structure is for internal use only, lint doesn't grok it. * * Written by reading the System V Interface Definition, not the code. * * Totally public domain. */ #include #if 0 #if defined(LIBC_SCCS) && !defined(lint) __RCSID("$NetBSD: tsearch.c,v 1.3 1999/09/16 11:45:37 lukem Exp $"); #endif /* LIBC_SCCS and not lint */ #endif #include #define _SEARCH_PRIVATE #include #include /* find or insert datum into search tree */ void * tsearch (const void *vkey, /* key to be located */ void **vrootp, /* address of tree root */ int (*compar)(const void *, const void *)) { node_t *q; node_t **rootp = (node_t **)vrootp; if (rootp == NULL) return NULL; while (*rootp != NULL) { /* Knuth's T1: */ int r; if ((r = (*compar)(vkey, (*rootp)->key)) == 0) /* T2: */ return *rootp; /* we found it! */ rootp = (r < 0) ? &(*rootp)->llink : /* T3: follow left branch */ &(*rootp)->rlink; /* T4: follow right branch */ } q = malloc(sizeof(node_t)); /* T5: key not found */ if (q != 0) { /* make new node */ *rootp = q; /* link new node to old */ /* LINTED const castaway ok */ q->key = (void *)vkey; /* initialize new node */ q->llink = q->rlink = NULL; } return q; } picolibc-1.7.4/newlib/libc/search/twalk.c000066400000000000000000000055351414576234500202560ustar00rootroot00000000000000/* Copyright (c) 1991, 1993, 1994 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* $NetBSD: twalk.c,v 1.1 1999/02/22 10:33:16 christos Exp $ */ /* * Tree search generalized from Knuth (6.2.2) Algorithm T just like * the AT&T man page says. * * The node_t structure is for internal use only, lint doesn't grok it. * * Written by reading the System V Interface Definition, not the code. * * Totally public domain. */ #include #if 0 #if defined(LIBC_SCCS) && !defined(lint) __RCSID("$NetBSD: twalk.c,v 1.1 1999/02/22 10:33:16 christos Exp $"); #endif /* LIBC_SCCS and not lint */ #endif #include #define _SEARCH_PRIVATE #include #include static void trecurse(const node_t *, void (*action)(const void *, VISIT, int), int level); /* Walk the nodes of a tree */ static void trecurse(const node_t *root, void (*action)(const void *, VISIT, int), int level) { if (root->llink == NULL && root->rlink == NULL) (*action)(root, leaf, level); else { (*action)(root, preorder, level); if (root->llink != NULL) trecurse(root->llink, action, level + 1); (*action)(root, postorder, level); if (root->rlink != NULL) trecurse(root->rlink, action, level + 1); (*action)(root, endorder, level); } } /* Walk the nodes of a tree */ void twalk (const void *vroot, /* Root of the tree to be walked */ void (*action)(const void *, VISIT, int)) { if (vroot != NULL && action != NULL) trecurse(vroot, action, 0); } picolibc-1.7.4/newlib/libc/signal/000077500000000000000000000000001414576234500167705ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/signal/meson.build000066400000000000000000000037451414576234500211430ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # srcs_signal = [ 'psignal.c', 'sig2str.c', 'signal.c', ] srcs_signal_use = [] foreach file : srcs_signal s_file = fs.replace_suffix(file, '.S') if file in srcs_machine message('libc/signal/' + file + ': machine overrides generic') elif s_file in srcs_machine message('libc/signal/' + s_file + ': machine overrides generic') else srcs_signal_use += file endif endforeach src_signal = files(srcs_signal_use) picolibc-1.7.4/newlib/libc/signal/psignal.c000066400000000000000000000027461414576234500206020ustar00rootroot00000000000000/* Copyright 2002, 2011 Red Hat Inc. */ /* FUNCTION <>---print a signal message on standard error INDEX psignal SYNOPSIS #include void psignal(int <[signal]>, const char *<[prefix]>); DESCRIPTION Use <> to print (on standard error) a signal message corresponding to the value of the signal number <[signal]>. Unless you use <> as the value of the argument <[prefix]>, the signal message will begin with the string at <[prefix]>, followed by a colon and a space (<<: >>). The remainder of the signal message is one of the strings described for <>. RETURNS <> returns no result. PORTABILITY POSIX.1-2008 requires <>, but the strings issued vary from one implementation to another. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #define WRITE_STR(str) \ { \ const char *p = (str); \ size_t len = strlen (p); \ while (len) \ { \ ssize_t len1 = write (fileno (stderr), p, len); \ if (len1 < 0) \ break; \ len -= len1; \ p += len1; \ } \ } void psignal (int sig, const char *s) { fflush (stderr); if (s != NULL && *s != '\0') { WRITE_STR (s); WRITE_STR (": "); } WRITE_STR (strsignal (sig)); #ifdef __SCLE WRITE_STR ((stderr->_flags & __SCLE) ? "\r\n" : "\n"); #else WRITE_STR ("\n"); #endif } picolibc-1.7.4/newlib/libc/signal/raise.c000066400000000000000000000042711414576234500202430ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* Embedded systems may want the simulated signals if no other form exists, but UNIX versions will want to use the host facilities. Define SIMULATED_SIGNALS when you want to use the simulated versions. */ /* FUNCTION <>---send a signal INDEX raise INDEX _raise_r SYNOPSIS #include int raise(int <[sig]>); int _raise_r(void *<[reent]>, int <[sig]>); DESCRIPTION Send the signal <[sig]> (one of the macros from `<>'). This interrupts your program's normal flow of execution, and allows a signal handler (if you've defined one, using <>) to take control. The alternate function <<_raise_r>> is a reentrant version. The extra argument <[reent]> is a pointer to a reentrancy structure. RETURNS The result is <<0>> if <[sig]> was successfully raised, <<1>> otherwise. However, the return value (since it depends on the normal flow of execution) may not be visible, unless the signal handler for <[sig]> terminates with a <> or unless <> is in effect for this signal. PORTABILITY ANSI C requires <>, but allows the full set of signal numbers to vary from one implementation to another. Required OS subroutines: <>, <>. */ #ifndef SIGNAL_PROVIDED int _dummy_raise; #else #include #include #ifndef _REENT_ONLY int raise (int sig) { return _raise_r (_REENT, sig); } #endif int _raise_r (struct _reent *reent, int sig) { return _kill_r (reent, _getpid_r (reent), sig); } #endif /* SIGNAL_PROVIDED */ picolibc-1.7.4/newlib/libc/signal/sig2str.c000066400000000000000000000177771414576234500205540ustar00rootroot00000000000000/* SPDX-License-Identifier: BSD-2-Clause */ /* * Copyright (C) 2021 Matthew Joyce * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>---Translate between signal number and name INDEX sig2str INDEX str2sig SYNOPSIS #include int sig2str(int <[signum]>, char *<[str]>); int str2sig(const char *restrict <[str]>, int *restrict <[pnum]>); DESCRIPTION The <> function translates the signal number specified by <[signum]> to a signal name and stores this string in the location specified by <[str]>. The application must ensure that <[str]> points to a location that can store the string including the terminating null byte. The symbolic constant <[SIG2STR_MAX]> defined in `<>' gives the maximum number of bytes required. The <> function translates the signal name in the string pointed to by <[str]> to a signal number and stores this value in the location specified by <[pnum]>. RETURNS <> returns <<0>> if <[signum]>> is a valid, supported signal number. Otherwise, it returns <<-1>>. <> returns <<0>> if it stores a value in the location pointed to by <[pnum]>. Otherwise it returns <<-1>>. */ #include #include #include #include #define SPACES_TO_N 6 /* Allows indexing to RT Signal number in str2sig */ #define NUM_OF_SIGS (sizeof(sig_array) / sizeof(sig_name_and_num)) typedef struct sig_name_and_num { const char *sig_name; const int sig_num; } sig_name_and_num; static const sig_name_and_num sig_array[] = { { "EXIT", 0 }, #ifdef SIGHUP { "HUP", SIGHUP }, #endif #ifdef SIGINT { "INT", SIGINT }, #endif #ifdef SIGQUIT { "QUIT", SIGQUIT }, #endif #ifdef SIGILL { "ILL", SIGILL }, #endif #ifdef SIGTRAP { "TRAP", SIGTRAP }, #endif #ifdef SIGABRT { "ABRT", SIGABRT }, #endif #ifdef SIGIOT { "IOT", SIGIOT}, #endif #ifdef SIGEMT { "EMT", SIGEMT }, #endif #ifdef SIGFPE { "FPE", SIGFPE }, #endif #ifdef SIGKILL { "KILL", SIGKILL }, #endif #ifdef SIGBUS { "BUS", SIGBUS }, #endif #ifdef SIGSEGV { "SEGV", SIGSEGV }, #endif #ifdef SIGSYS { "SYS", SIGSYS }, #endif #ifdef SIGPIPE { "PIPE", SIGPIPE }, #endif #ifdef SIGALRM { "ALRM", SIGALRM }, #endif #ifdef SIGTERM { "TERM", SIGTERM }, #endif #ifdef SIGURG { "URG", SIGURG }, #endif #ifdef SIGSTOP { "STOP", SIGSTOP }, #endif #ifdef SIGTSTP { "TSTP", SIGTSTP }, #endif #ifdef SIGCONT { "CONT", SIGCONT }, #endif #ifdef SIGCHLD { "CHLD", SIGCHLD }, #endif #ifdef SIGCLD { "CLD", SIGCLD }, #endif #ifdef SIGTTIN { "TTIN", SIGTTIN }, #endif #ifdef SIGTTOU { "TTOU", SIGTTOU }, #endif #ifdef SIGIO { "IO", SIGIO }, #endif #ifdef SIGPOLL { "POLL", SIGPOLL }, #endif #ifdef SIGWINCH { "WINCH", SIGWINCH }, #endif #ifdef SIGUSR1 { "USR1", SIGUSR1 }, #endif #ifdef SIGUSR2 { "USR2", SIGUSR2 }, #endif #ifdef SIGPWR { "PWR", SIGPWR }, #endif #ifdef SIGXCPU { "XCPU", SIGXCPU }, #endif #ifdef SIGXFSZ { "XFSZ", SIGXFSZ }, #endif #ifdef SIGVTALRM { "VTALRM", SIGVTALRM }, #endif #ifdef SIGPROF { "PROF", SIGPROF }, #endif #ifdef SIGLOST { "LOST", SIGLOST }, #endif /* The Issue 8 standard requires that SIGRTMIN and SIGRTMAX be included * as valid results to be saved from calls to sig2str/str2sig. */ #ifdef SIGRTMIN { "RTMIN", SIGRTMIN }, #endif #ifdef SIGRTMAX { "RTMAX", SIGRTMAX } #endif }; int sig2str(int signum, char *str) { const sig_name_and_num *sptr; #if defined (SIGRTMIN) && defined (SIGRTMAX) /* If signum falls in lower half of the real time signals range, define * the saved str value as "RTMIN+n" according to the Issue 8 standard */ if ((SIGRTMIN + 1) <= signum && signum <= (SIGRTMIN + SIGRTMAX) / 2) { sprintf(str, "RTMIN+%d", (signum-SIGRTMIN)); return 0; } /* If signum falls in upper half of the real time signals range, define * the saved str value as "RTMAX-m" according to the Issue 8 standard */ if ((((SIGRTMIN + SIGRTMAX) / 2) + 1) <= signum && signum <= (SIGRTMAX - 1)) { sprintf(str, "RTMAX-%d", (SIGRTMAX - signum)); return 0; } #endif /* Otherwise, search for signal matching signum in sig_array. If found, * save its string value in str. */ for (sptr = sig_array; sptr < &sig_array[NUM_OF_SIGS]; sptr++) { if (sptr->sig_num == signum) { strcpy(str, sptr->sig_name); return 0; } } /* If signum is not a recognized signal number, return -1 */ return -1; } int str2sig(const char *__restrict str, int *__restrict pnum) { char *endp; const sig_name_and_num *sptr; unsigned long is_valid_decimal; #if defined (SIGRTMIN) && defined (SIGRTMAX) /* i686 Cygwin only supports one RT signal. For this case, skip checks * for "RTMIN+n" and "RTMAX-m". */ if (SIGRTMIN != SIGRTMAX) { /* If str is in RT signal range, get number of of RT signal, save it as an * integer. */ if (strncmp(str, "RTMIN+", SPACES_TO_N) == 0) { unsigned long j = strtoul(&str[SPACES_TO_N], &endp, 10); /* If number is valid, save it in pnum. */ if (*endp == '\0') { if (1 <= j && j <= ((SIGRTMAX - SIGRTMIN)-1)) { *pnum = (SIGRTMIN + j); return 0; } return -1; } return -1; } /* If str is in RT signal range, get number of of RT signal, save it as an * integer. */ if (strncmp(str, "RTMAX-", SPACES_TO_N) == 0) { unsigned long j = strtoul(&str[SPACES_TO_N], &endp, 10); // and endptr null check /* If number is valid, save it in pnum. */ if (*endp == '\0') { if (1 <= j && j <= ((SIGRTMAX - SIGRTMIN)-1)) { *pnum = (SIGRTMAX - j); return 0; } return -1; } return -1; } } #endif /*If str is a valid signal name, save its corresponding number in pnum. */ for (sptr = sig_array; sptr < &sig_array[NUM_OF_SIGS]; sptr++) { if (strcmp(sptr->sig_name, str) == 0) { *pnum = sptr->sig_num; return 0; } } /* str was not found in sig_array. Check whether str is a string * representation of a valid integer. */ is_valid_decimal = strtoul(str, &endp, 10); if (*endp != '\0') { return -1; } /* If str is a representation of a decimal value, save its integer value * in pnum. */ if (1 <= is_valid_decimal && is_valid_decimal <= (NSIG - 1)) { *pnum = is_valid_decimal; return 0; } return -1; } picolibc-1.7.4/newlib/libc/signal/signal.c000066400000000000000000000107411414576234500204140ustar00rootroot00000000000000/* Copyright (c) 1994 Cygnus Support. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, and/or other materials related to such distribution and use acknowledge that the software was developed at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---specify handler subroutine for a signal INDEX signal SYNOPSIS #include void (*signal(int <[sig]>, void(*<[func]>)(int))) (int); DESCRIPTION <> provides a simple signal-handling implementation for embedded targets. <> allows you to request changed treatment for a particular signal <[sig]>. You can use one of the predefined macros <> (select system default handling) or <> (ignore this signal) as the value of <[func]>; otherwise, <[func]> is a function pointer that identifies a subroutine in your program as the handler for this signal. Some of the execution environment for signal handlers is unpredictable; notably, the only library function required to work correctly from within a signal handler is <> itself, and only when used to redefine the handler for the current signal value. Static storage is likewise unreliable for signal handlers, with one exception: if you declare a static storage location as `<>', then you may use that location in a signal handler to store signal values. If your signal handler terminates using <> (or implicit return), your program's execution continues at the point where it was when the signal was raised (whether by your program itself, or by an external event). Signal handlers can also use functions such as <> and <> to avoid returning. @c FIXME: do we have setjmp.h and assoc fns? RETURNS If your request for a signal handler cannot be honored, the result is <>; a specific error number is also recorded in <>. Otherwise, the result is the previous handler (a function pointer or one of the predefined macros). PORTABILITY ANSI C requires <>. No supporting OS subroutines are required to link with <>, but it will not have any useful effects, except for software generated signals, without an operating system that can actually raise exceptions. */ /* * signal.c * Original Author: G. Haley * * signal associates the function pointed to by func with the signal sig. When * a signal occurs, the value of func determines the action taken as follows: * if func is SIG_DFL, the default handling for that signal will occur; if func * is SIG_IGN, the signal will be ignored; otherwise, the default handling for * the signal is restored (SIG_DFL), and the function func is called with sig * as its argument. Returns the value of func for the previous call to signal * for the signal sig, or SIG_ERR if the request fails. */ #ifdef SIGNAL_PROVIDED int _dummy_simulated_signal; #else #define _DEFAULT_SOURCE #include #include #include #include #include <_syslist.h> #include /* signal info */ static NEWLIB_THREAD_LOCAL void (*(_sig_func[NSIG]))(int); _sig_func_ptr signal (int sig, _sig_func_ptr func) { _sig_func_ptr old_func; if (sig < 0 || sig >= NSIG) { errno = EINVAL; return SIG_ERR; } old_func = _sig_func[sig]; _sig_func[sig] = func; return old_func; } int raise (int sig) { _sig_func_ptr func; if (sig < 0 || sig >= NSIG) { errno = EINVAL; return -1; } func = _sig_func[sig]; if (func == SIG_DFL) return kill (getpid (), sig); else if (func == SIG_IGN) return 0; else if (func == SIG_ERR) { errno = EINVAL; return 1; } else { _sig_func[sig] = SIG_DFL; func (sig); return 0; } } int __sigtramp (int sig) { _sig_func_ptr func; if (sig < 0 || sig >= NSIG) { return -1; } func = _sig_func[sig]; if (func == SIG_DFL) return 1; else if (func == SIG_ERR) return 2; else if (func == SIG_IGN) return 3; else { _sig_func[sig] = SIG_DFL; func (sig); return 0; } } #endif /* !SIGNAL_PROVIDED */ picolibc-1.7.4/newlib/libc/signal/signal.tex000066400000000000000000000061461414576234500207760ustar00rootroot00000000000000# #Copyright (c) 1994 Cygnus Support. #All rights reserved. # #Redistribution and use in source and binary forms are permitted #provided that the above copyright notice and this paragraph are #duplicated in all such forms and that any documentation, #and/or other materials related to such #distribution and use acknowledge that the software was developed #at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to #endorse or promote products derived from this software without #specific prior written permission. #THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR #IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED #WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. @node Signals @chapter Signal Handling (@file{signal.h}) A @dfn{signal} is an event that interrupts the normal flow of control in your program. Your operating environment normally defines the full set of signals available (see @file{sys/signal.h}), as well as the default means of dealing with them---typically, either printing an error message and aborting your program, or ignoring the signal. All systems support at least the following signals: @table @code @item SIGABRT Abnormal termination of a program; raised by the @code{abort} function. @item SIGFPE A domain error in arithmetic, such as overflow, or division by zero. @item SIGILL Attempt to execute as a function data that is not executable. @item SIGINT Interrupt; an interactive attention signal. @item SIGSEGV An attempt to access a memory location that is not available. @item SIGTERM A request that your program end execution. @end table Two functions are available for dealing with asynchronous signals---one to allow your program to send signals to itself (this is called @dfn{raising} a signal), and one to specify subroutines (called @dfn{handlers} to handle particular signals that you anticipate may occur---whether raised by your own program or the operating environment. To support these functions, @file{signal.h} defines three macros: @table @code @item SIG_DFL Used with the @code{signal} function in place of a pointer to a handler subroutine, to select the operating environment's default handling of a signal. @item SIG_IGN Used with the @code{signal} function in place of a pointer to a handler, to ignore a particular signal. @item SIG_ERR Returned by the @code{signal} function in place of a pointer to a handler, to indicate that your request to set up a handler could not be honored for some reason. @end table @file{signal.h} also defines an integral type, @code{sig_atomic_t}. This type is not used in any function declarations; it exists only to allow your signal handlers to declare a static storage location where they may store a signal value. (Static storage is not otherwise reliable from signal handlers.) @menu * psignal:: Print a signal message to standard error * raise:: Send a signal * sig2str:: Translate between signal number and name * signal:: Specify handler subroutine for a signal @end menu @page @include signal/psignal.def @page @include signal/raise.def @page @include signal/sig2str.def @page @include signal/signal.def picolibc-1.7.4/newlib/libc/ssp/000077500000000000000000000000001414576234500163205ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/ssp/chk_fail.c000066400000000000000000000004641414576234500202300ustar00rootroot00000000000000/* Copyright 2017 Yaakov Selkowitz */ #include #include #include void __attribute__((__noreturn__)) __chk_fail(void) { char msg[] = "*** buffer overflow detected ***: terminated\n"; write (2, msg, strlen (msg)); raise (SIGABRT); _exit (127); } picolibc-1.7.4/newlib/libc/ssp/gets_chk.c000066400000000000000000000044571414576234500202650ustar00rootroot00000000000000/* $NetBSD: gets_chk.c,v 1.7 2013/10/04 20:49:16 christos Exp $ */ /*- * Copyright (c) 2006 The NetBSD Foundation, Inc. * All rights reserved. * * This code is derived from software contributed to The NetBSD Foundation * by Christos Zoulas. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #include __RCSID("$NetBSD: gets_chk.c,v 1.7 2013/10/04 20:49:16 christos Exp $"); /*LINTLIBRARY*/ #include #include #include #include #include #include extern char *__gets(char *); #undef gets #ifdef __NEWLIB__ #define __gets gets #endif char * __gets_chk(char * __restrict buf, size_t slen) { char *abuf; size_t len; if (slen >= (size_t)INT_MAX) return __gets(buf); if ((abuf = malloc(slen + 1)) == NULL) return __gets(buf); if (fgets(abuf, (int)(slen + 1), stdin) == NULL) { free(abuf); return NULL; } len = strlen(abuf); if (len > 0 && abuf[len - 1] == '\n') --len; if (len >= slen) __chk_fail(); (void)memcpy(buf, abuf, len); buf[len] = '\0'; free(abuf); return buf; } picolibc-1.7.4/newlib/libc/ssp/memcpy_chk.c000066400000000000000000000040131414576234500206010ustar00rootroot00000000000000/* $NetBSD: memcpy_chk.c,v 1.7 2015/05/13 19:57:16 joerg Exp $ */ /*- * Copyright (c) 2006 The NetBSD Foundation, Inc. * All rights reserved. * * This code is derived from software contributed to The NetBSD Foundation * by Christos Zoulas. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #include __RCSID("$NetBSD: memcpy_chk.c,v 1.7 2015/05/13 19:57:16 joerg Exp $"); /*LINTLIBRARY*/ #include #include #undef memcpy void *__memcpy_chk(void * __restrict, const void * __restrict, size_t, size_t); void * __memcpy_chk(void * __restrict dst, const void * __restrict src, size_t len, size_t slen) { if (len > slen) __chk_fail(); if (__ssp_overlap((const char *)src, (const char *)dst, len)) __chk_fail(); return memcpy(dst, src, len); } picolibc-1.7.4/newlib/libc/ssp/memmove_chk.c000066400000000000000000000036531414576234500207650ustar00rootroot00000000000000/* $NetBSD: memmove_chk.c,v 1.5 2014/09/17 00:39:28 joerg Exp $ */ /*- * Copyright (c) 2006 The NetBSD Foundation, Inc. * All rights reserved. * * This code is derived from software contributed to The NetBSD Foundation * by Christos Zoulas. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #include __RCSID("$NetBSD: memmove_chk.c,v 1.5 2014/09/17 00:39:28 joerg Exp $"); /*LINTLIBRARY*/ #include #include #undef memmove #undef __memmove_chk void *__memmove_chk(void *, const void *src, size_t, size_t); void * __memmove_chk(void *dst, const void *src, size_t len, size_t slen) { if (len > slen) __chk_fail(); return memmove(dst, src, len); } picolibc-1.7.4/newlib/libc/ssp/mempcpy_chk.c000066400000000000000000000033221414576234500207630ustar00rootroot00000000000000/* Copyright (c) 2006 The NetBSD Foundation, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define _GNU_SOURCE #include #include #include #undef mempcpy void *__mempcpy_chk(void * __restrict, const void * __restrict, size_t, size_t); void * __mempcpy_chk(void * __restrict dst, const void * __restrict src, size_t len, size_t slen) { if (len > slen) __chk_fail(); if (__ssp_overlap((const char *)src, (const char *)dst, len)) __chk_fail(); return mempcpy(dst, src, len); } picolibc-1.7.4/newlib/libc/ssp/memset_chk.c000066400000000000000000000036161414576234500206110ustar00rootroot00000000000000/* $NetBSD: memset_chk.c,v 1.5 2014/09/17 00:39:28 joerg Exp $ */ /*- * Copyright (c) 2006 The NetBSD Foundation, Inc. * All rights reserved. * * This code is derived from software contributed to The NetBSD Foundation * by Christos Zoulas. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #include __RCSID("$NetBSD: memset_chk.c,v 1.5 2014/09/17 00:39:28 joerg Exp $"); /*LINTLIBRARY*/ #include #include #undef memset void *__memset_chk(void * __restrict, int, size_t, size_t); void * __memset_chk(void * __restrict dst, int val, size_t len, size_t slen) { if (len > slen) __chk_fail(); return memset(dst, val, len); } picolibc-1.7.4/newlib/libc/ssp/meson.build000066400000000000000000000043751414576234500204730ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # srcs_ssp = [ 'chk_fail.c', 'gets_chk.c', 'memcpy_chk.c', 'memmove_chk.c', 'mempcpy_chk.c', 'memset_chk.c', 'snprintf_chk.c', 'sprintf_chk.c', 'stack_protector.c', 'stpcpy_chk.c', 'stpncpy_chk.c', 'strcat_chk.c', 'strcpy_chk.c', 'strncat_chk.c', 'strncpy_chk.c', 'vsnprintf_chk.c', 'vsprintf_chk.c', ] srcs_ssp_use = [] foreach file : srcs_ssp s_file = fs.replace_suffix(file, '.S') if file in srcs_machine message('libc/ssp/' + file + ': machine overrides generic') elif s_file in srcs_machine message('libc/ssp/' + s_file + ': machine overrides generic') else srcs_ssp_use += file endif endforeach src_ssp = files(srcs_ssp_use) picolibc-1.7.4/newlib/libc/ssp/snprintf_chk.c000066400000000000000000000040311414576234500211520ustar00rootroot00000000000000/* $NetBSD: snprintf_chk.c,v 1.5 2008/04/28 20:23:00 martin Exp $ */ /*- * Copyright (c) 2006 The NetBSD Foundation, Inc. * All rights reserved. * * This code is derived from software contributed to The NetBSD Foundation * by Christos Zoulas. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #include __RCSID("$NetBSD: snprintf_chk.c,v 1.5 2008/04/28 20:23:00 martin Exp $"); /*LINTLIBRARY*/ #include #include #include #include #undef vsnprintf /*ARGSUSED*/ int __snprintf_chk(char * __restrict buf, size_t len, int flags, size_t slen, const char * __restrict fmt, ...) { va_list ap; int rv; (void) flags; if (len > slen) __chk_fail(); va_start(ap, fmt); rv = vsnprintf(buf, len, fmt, ap); va_end(ap); return rv; } picolibc-1.7.4/newlib/libc/ssp/sprintf_chk.c000066400000000000000000000042051414576234500207770ustar00rootroot00000000000000/* $NetBSD: sprintf_chk.c,v 1.6 2009/02/05 05:40:36 lukem Exp $ */ /*- * Copyright (c) 2006 The NetBSD Foundation, Inc. * All rights reserved. * * This code is derived from software contributed to The NetBSD Foundation * by Christos Zoulas. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #include __RCSID("$NetBSD: sprintf_chk.c,v 1.6 2009/02/05 05:40:36 lukem Exp $"); /*LINTLIBRARY*/ #include #include #include #include #include #undef vsnprintf #undef vsprintf int /*ARGSUSED*/ __sprintf_chk(char * __restrict buf, int flags, size_t slen, const char * __restrict fmt, ...) { va_list ap; int rv; (void) flags; va_start(ap, fmt); if (slen > (size_t)INT_MAX) rv = vsprintf(buf, fmt, ap); else { if ((rv = vsnprintf(buf, slen, fmt, ap)) >= 0 && (size_t)rv >= slen) __chk_fail(); } va_end(ap); return rv; } picolibc-1.7.4/newlib/libc/ssp/ssp.tex000066400000000000000000000040001414576234500176410ustar00rootroot00000000000000@node Overflow Protection @chapter Overflow Protection @menu * Stack Smashing Protection:: Checks enabled with -fstack-protector* * Object Size Checking:: Checks enabled with _FORTIFY_SOURCE @end menu @node Stack Smashing Protection @section Stack Smashing Protection Stack Smashing Protection is a compiler feature which emits extra code to check for stack smashing attacks. It depends on a canary, which is initialized with the process, and functions for process termination when an overflow is detected. These are private entry points intended solely for use by the compiler, and are used when any of the @code{-fstack-protector}, @code{-fstack-protector-all}, @code{-fstack-protector-explicit}, or @code{-fstack-protector-strong} compiler flags are enabled. @node Object Size Checking @section Object Size Checking Object Size Checking is a feature which wraps certain functions with checks to prevent buffer overflows. These are enabled when compiling with optimization (@code{-O1} and higher) and @code{_FORTIFY_SOURCE} defined to 1, or for stricter checks, to 2. @cindex list of overflow protected functions The following functions use object size checking to detect buffer overflows when enabled: @example @exdent @emph{String functions:} bcopy memmove strcpy bzero mempcpy strcat explicit_bzero memset strncat memcpy stpcpy strncpy @exdent @emph{Wide Character String functions:} fgetws wcrtomb wcsrtombs fgetws_unlocked wcscat wmemcpy mbsnrtowcs wcscpy wmemmove mbsrtowcs wcsncat wmempcpy wcpcpy wcsncpy wmemset wcpncpy wcsnrtombs @exdent @emph{Stdio functions:} fgets fread_unlocked sprintf fgets_unlocked gets vsnprintf fread snprintf vsprintf @exdent @emph{Stdlib functions:} mbstowcs wcstombs wctomb @exdent @emph{System functions:} getcwd read ttyname_r pread readlink @end example picolibc-1.7.4/newlib/libc/ssp/stack_protector.c000066400000000000000000000027651414576234500217040ustar00rootroot00000000000000/* Copyright (c) 2017 Yaakov Selkowitz */ #include #include #include #include #include #include #include #if defined(__AMDGCN__) /* GCN does not support constructors, yet. */ uintptr_t __stack_chk_guard = 0x00000aff; /* 0, 0, '\n', 255 */ #else uintptr_t __stack_chk_guard = 0; int getentropy (void *, size_t) _ATTRIBUTE((__weak__)); void __attribute__((__constructor__)) __stack_chk_init (void) { if (__stack_chk_guard != 0) return; if (getentropy) { /* Use getentropy if available */ getentropy(&__stack_chk_guard, sizeof(__stack_chk_guard)); } else { /* If getentropy is not available, use the "terminator canary". */ ((unsigned char *)&__stack_chk_guard)[0] = 0; ((unsigned char *)&__stack_chk_guard)[1] = 0; ((unsigned char *)&__stack_chk_guard)[2] = '\n'; ((unsigned char *)&__stack_chk_guard)[3] = 255; } } #endif void __stack_chk_fail (void) __attribute__((__noreturn__)); #define STACK_CHK_MSG "*** stack smashing detected ***: terminated" void __attribute__((__noreturn__)) __stack_chk_fail_weak (void) { #ifdef TINY_STDIO puts(STACK_CHK_MSG); #else static const char msg[] = STACK_CHK_MSG "\n"; write (2, msg, sizeof(msg)-1); #endif raise (SIGABRT); _exit (127); } __weak_reference(__stack_chk_fail_weak, __stack_chk_fail); #ifdef __ELF__ void __attribute__((visibility ("hidden"))) __stack_chk_fail_local (void) { __stack_chk_fail(); } #endif picolibc-1.7.4/newlib/libc/ssp/stpcpy_chk.c000066400000000000000000000040621414576234500206350ustar00rootroot00000000000000/* $NetBSD: stpcpy_chk.c,v 1.6 2015/05/09 15:42:21 christos Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. * All rights reserved. * * This code is derived from software contributed to The NetBSD Foundation * by Christos Zoulas. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #include __RCSID("$NetBSD: stpcpy_chk.c,v 1.6 2015/05/09 15:42:21 christos Exp $"); /*LINTLIBRARY*/ #include #include #undef memcpy #if !__GNUC_PREREQ__(4, 8) char *__stpcpy_chk(char * __restrict, const char * __restrict, size_t); #endif char * __stpcpy_chk(char * __restrict dst, const char * __restrict src, size_t slen) { size_t len = strlen(src); if (len >= slen) __chk_fail(); if (__ssp_overlap(src, dst, len)) __chk_fail(); (void)memcpy(dst, src, len + 1); return dst + len; } picolibc-1.7.4/newlib/libc/ssp/stpncpy_chk.c000066400000000000000000000040651414576234500210160ustar00rootroot00000000000000/* $NetBSD: stpncpy_chk.c,v 1.3 2015/05/09 15:42:21 christos Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. * All rights reserved. * * This code is derived from software contributed to The NetBSD Foundation * by Christos Zoulas. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #define _DEFAULT_SOURCE #include __RCSID("$NetBSD: stpncpy_chk.c,v 1.3 2015/05/09 15:42:21 christos Exp $"); /*LINTLIBRARY*/ #include #include #undef stpncpy #if !__GNUC_PREREQ__(4, 8) char *__stpncpy_chk(char * __restrict, const char * __restrict, size_t, size_t); #endif char * __stpncpy_chk(char * __restrict dst, const char * __restrict src, size_t len, size_t slen) { if (len > slen) __chk_fail(); if (__ssp_overlap(src, dst, len)) __chk_fail(); return stpncpy(dst, src, len); } picolibc-1.7.4/newlib/libc/ssp/strcat_chk.c000066400000000000000000000040451414576234500206140ustar00rootroot00000000000000/* $NetBSD: strcat_chk.c,v 1.5 2014/09/17 00:39:28 joerg Exp $ */ /*- * Copyright (c) 2006 The NetBSD Foundation, Inc. * All rights reserved. * * This code is derived from software contributed to The NetBSD Foundation * by Christos Zoulas. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #include __RCSID("$NetBSD: strcat_chk.c,v 1.5 2014/09/17 00:39:28 joerg Exp $"); /*LINTLIBRARY*/ #include #include char *__strcat_chk(char * __restrict, const char * __restrict, size_t); char * __strcat_chk(char * __restrict dst, const char * __restrict src, size_t slen) { char *d; for (d = dst; *d; d++) { if (slen-- == 0) __chk_fail(); } while (*src) { if (slen-- == 0) __chk_fail(); *d++ = *src++; } if (slen-- == 0) __chk_fail(); *d = '\0'; return dst; } picolibc-1.7.4/newlib/libc/ssp/strcpy_chk.c000066400000000000000000000037751414576234500206510ustar00rootroot00000000000000/* $NetBSD: strcpy_chk.c,v 1.8 2015/05/09 15:42:21 christos Exp $ */ /*- * Copyright (c) 2006 The NetBSD Foundation, Inc. * All rights reserved. * * This code is derived from software contributed to The NetBSD Foundation * by Christos Zoulas. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #include __RCSID("$NetBSD: strcpy_chk.c,v 1.8 2015/05/09 15:42:21 christos Exp $"); /*LINTLIBRARY*/ #include #include #undef memcpy char *__strcpy_chk(char * __restrict, const char * __restrict, size_t); char * __strcpy_chk(char * __restrict dst, const char * __restrict src, size_t slen) { size_t len = strlen(src) + 1; if (len > slen) __chk_fail(); if (__ssp_overlap(src, dst, len)) __chk_fail(); return memcpy(dst, src, len); } picolibc-1.7.4/newlib/libc/ssp/strncat_chk.c000066400000000000000000000042771414576234500210010ustar00rootroot00000000000000/* $NetBSD: strncat_chk.c,v 1.5 2014/09/17 00:39:28 joerg Exp $ */ /*- * Copyright (c) 2006 The NetBSD Foundation, Inc. * All rights reserved. * * This code is derived from software contributed to The NetBSD Foundation * by Christos Zoulas. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #include __RCSID("$NetBSD: strncat_chk.c,v 1.5 2014/09/17 00:39:28 joerg Exp $"); /*LINTLIBRARY*/ #include #include #include char *__strncat_chk(char * __restrict, const char * __restrict, size_t, size_t); char * __strncat_chk(char * __restrict dst, const char * __restrict src, size_t len, size_t slen) { char *d; if (len == 0) return dst; if (len > slen) __chk_fail(); for (d = dst; *d; d++) { if (slen-- == 0) __chk_fail(); } do { if ((*d = *src++) == '\0') break; if (slen-- == 0) __chk_fail(); d++; } while (--len != 0); if (slen-- == 0) __chk_fail(); *d = '\0'; return dst; } picolibc-1.7.4/newlib/libc/ssp/strncpy_chk.c000066400000000000000000000037771414576234500210310ustar00rootroot00000000000000/* $NetBSD: strncpy_chk.c,v 1.6 2015/05/09 15:42:21 christos Exp $ */ /*- * Copyright (c) 2006 The NetBSD Foundation, Inc. * All rights reserved. * * This code is derived from software contributed to The NetBSD Foundation * by Christos Zoulas. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #include __RCSID("$NetBSD: strncpy_chk.c,v 1.6 2015/05/09 15:42:21 christos Exp $"); /*LINTLIBRARY*/ #include #include #undef strncpy char *__strncpy_chk(char * __restrict, const char * __restrict, size_t, size_t); char * __strncpy_chk(char * __restrict dst, const char * __restrict src, size_t len, size_t slen) { if (len > slen) __chk_fail(); if (__ssp_overlap(src, dst, len)) __chk_fail(); return strncpy(dst, src, len); } picolibc-1.7.4/newlib/libc/ssp/vsnprintf_chk.c000066400000000000000000000037231414576234500213470ustar00rootroot00000000000000/* $NetBSD: vsnprintf_chk.c,v 1.5 2008/04/28 20:23:00 martin Exp $ */ /*- * Copyright (c) 2006 The NetBSD Foundation, Inc. * All rights reserved. * * This code is derived from software contributed to The NetBSD Foundation * by Christos Zoulas. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #include __RCSID("$NetBSD: vsnprintf_chk.c,v 1.5 2008/04/28 20:23:00 martin Exp $"); /*LINTLIBRARY*/ #include #include #include #include #undef vsnprintf int __vsnprintf_chk(char * __restrict buf, size_t len, int flags, size_t slen, const char * __restrict fmt, va_list ap) { if (len > slen) __chk_fail(); (void) flags; return vsnprintf(buf, len, fmt, ap); } picolibc-1.7.4/newlib/libc/ssp/vsprintf_chk.c000066400000000000000000000041411414576234500211640ustar00rootroot00000000000000/* $NetBSD: vsprintf_chk.c,v 1.6 2009/02/05 05:39:38 lukem Exp $ */ /*- * Copyright (c) 2006 The NetBSD Foundation, Inc. * All rights reserved. * * This code is derived from software contributed to The NetBSD Foundation * by Christos Zoulas. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #include __RCSID("$NetBSD: vsprintf_chk.c,v 1.6 2009/02/05 05:39:38 lukem Exp $"); /*LINTLIBRARY*/ #include #include #include #include #include #undef vsprintf #undef vsnprintf /*ARGSUSED*/ int __vsprintf_chk(char * __restrict buf, int flags, size_t slen, const char * __restrict fmt, va_list ap) { int rv; (void) flags; if (slen > (size_t)INT_MAX) rv = vsprintf(buf, fmt, ap); else { if ((rv = vsnprintf(buf, slen, fmt, ap)) >= 0 && (size_t)rv >= slen) __chk_fail(); } return rv; } picolibc-1.7.4/newlib/libc/stdio/000077500000000000000000000000001414576234500166355ustar00rootroot00000000000000picolibc-1.7.4/newlib/libc/stdio/asiprintf.c000066400000000000000000000036621414576234500210070ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* This code was copied from asprintf.c */ /* doc in siprintf.c */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "local.h" int _asiprintf_r (struct _reent *ptr, char **strp, const char *fmt, ...) { int ret; va_list ap; FILE f; /* mark a zero-length reallocatable buffer */ f._flags = __SWR | __SSTR | __SMBF; f._bf._base = f._p = NULL; f._bf._size = f._w = 0; f._file = -1; /* No file. */ va_start (ap, fmt); ret = _svfiprintf_r (ptr, &f, fmt, ap); va_end (ap); if (ret >= 0) { *f._p = 0; *strp = (char *) f._bf._base; } return (ret); } #ifndef _REENT_ONLY int asiprintf (char **strp, const char *fmt, ...) { int ret; va_list ap; FILE f; /* mark a zero-length reallocatable buffer */ f._flags = __SWR | __SSTR | __SMBF; f._bf._base = f._p = NULL; f._bf._size = f._w = 0; f._file = -1; /* No file. */ va_start (ap, fmt); ret = _svfiprintf_r (_REENT, &f, fmt, ap); va_end (ap); if (ret >= 0) { *f._p = 0; *strp = (char *) f._bf._base; } return (ret); } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/asniprintf.c000066400000000000000000000045431414576234500211640ustar00rootroot00000000000000/* Copyright (C) 2007, 2008 Eric Blake * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ /* This code was derived from asprintf.c */ /* doc in siprintf.c */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include "local.h" char * _asniprintf_r (struct _reent *ptr, char *buf, size_t *lenp, const char *fmt, ...) { int ret; va_list ap; FILE f; size_t len = *lenp; if (buf && len) { /* mark an existing buffer, but allow allocation of larger string */ f._flags = __SWR | __SSTR | __SOPT; } else { /* mark a zero-length reallocatable buffer */ f._flags = __SWR | __SSTR | __SMBF; len = 0; buf = NULL; } f._bf._base = f._p = (unsigned char *) buf; /* For now, inherit the 32-bit signed limit of FILE._bf._size. FIXME - it would be nice to rewrite sys/reent.h to support size_t for _size. */ if (len > INT_MAX) { __errno_r(ptr) = EOVERFLOW; return NULL; } f._bf._size = f._w = len; f._file = -1; /* No file. */ va_start (ap, fmt); ret = _svfiprintf_r (ptr, &f, fmt, ap); va_end (ap); if (ret < 0) return NULL; *lenp = ret; *f._p = '\0'; return (char *) f._bf._base; } #ifndef _REENT_ONLY char * asniprintf (char *buf, size_t *lenp, const char *fmt, ...) { int ret; va_list ap; FILE f; size_t len = *lenp; struct _reent *ptr = _REENT; if (buf && len) { /* mark an existing buffer, but allow allocation of larger string */ f._flags = __SWR | __SSTR | __SOPT; } else { /* mark a zero-length reallocatable buffer */ f._flags = __SWR | __SSTR | __SMBF; len = 0; buf = NULL; } f._bf._base = f._p = (unsigned char *) buf; /* For now, inherit the 32-bit signed limit of FILE._bf._size. FIXME - it would be nice to rewrite sys/reent.h to support size_t for _size. */ if (len > INT_MAX) { __errno_r(ptr) = EOVERFLOW; return NULL; } f._bf._size = f._w = len; f._file = -1; /* No file. */ va_start (ap, fmt); ret = _svfiprintf_r (ptr, &f, fmt, ap); va_end (ap); if (ret < 0) return NULL; *lenp = ret; *f._p = '\0'; return (char *) f._bf._base; } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/asnprintf.c000066400000000000000000000052731414576234500210140ustar00rootroot00000000000000/* Copyright (C) 2007, 2008 Eric Blake * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ /* This code was derived from asprintf.c */ /* doc in sprintf.c */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include "local.h" char * _asnprintf_r (struct _reent *__restrict ptr, char *buf, size_t *lenp, const char *__restrict fmt, ...) { int ret; va_list ap; FILE f; size_t len = *lenp; if (buf && len) { /* mark an existing buffer, but allow allocation of larger string */ f._flags = __SWR | __SSTR | __SOPT; } else { /* mark a zero-length reallocatable buffer */ f._flags = __SWR | __SSTR | __SMBF; len = 0; buf = NULL; } f._bf._base = f._p = (unsigned char *) buf; /* For now, inherit the 32-bit signed limit of FILE._bf._size. FIXME - it would be nice to rewrite sys/reent.h to support size_t for _size. */ if (len > INT_MAX) { __errno_r(ptr) = EOVERFLOW; return NULL; } f._bf._size = f._w = len; f._file = -1; /* No file. */ va_start (ap, fmt); ret = _svfprintf_r (ptr, &f, fmt, ap); va_end (ap); if (ret < 0) return NULL; *lenp = ret; *f._p = '\0'; return (char *) f._bf._base; } #ifdef _NANO_FORMATTED_IO char * _asniprintf_r (struct _reent *, char *, size_t *, const char *, ...) _ATTRIBUTE ((__alias__("_asnprintf_r"))); #endif #ifndef _REENT_ONLY char * asnprintf (char *__restrict buf, size_t *__restrict lenp, const char *__restrict fmt, ...) { int ret; va_list ap; FILE f; size_t len = *lenp; struct _reent *ptr = _REENT; if (buf && len) { /* mark an existing buffer, but allow allocation of larger string */ f._flags = __SWR | __SSTR | __SOPT; } else { /* mark a zero-length reallocatable buffer */ f._flags = __SWR | __SSTR | __SMBF; len = 0; buf = NULL; } f._bf._base = f._p = (unsigned char *) buf; /* For now, inherit the 32-bit signed limit of FILE._bf._size. FIXME - it would be nice to rewrite sys/reent.h to support size_t for _size. */ if (len > INT_MAX) { __errno_r(ptr) = EOVERFLOW; return NULL; } f._bf._size = f._w = len; f._file = -1; /* No file. */ va_start (ap, fmt); ret = _svfprintf_r (ptr, &f, fmt, ap); va_end (ap); if (ret < 0) return NULL; *lenp = ret; *f._p = '\0'; return (char *) f._bf._base; } #ifdef _NANO_FORMATTED_IO char * asniprintf (char *, size_t *, const char *, ...) _ATTRIBUTE ((__alias__("asnprintf"))); #endif #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/asprintf.c000066400000000000000000000043501414576234500206310ustar00rootroot00000000000000/* * Copyright (c) 1990, 2007 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* This code was copied from sprintf.c */ /* doc in sprintf.c */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "local.h" int _asprintf_r (struct _reent *ptr, char **__restrict strp, const char *__restrict fmt, ...) { int ret; va_list ap; FILE f; /* mark a zero-length reallocatable buffer */ f._flags = __SWR | __SSTR | __SMBF; f._bf._base = f._p = NULL; f._bf._size = f._w = 0; f._file = -1; /* No file. */ va_start (ap, fmt); ret = _svfprintf_r (ptr, &f, fmt, ap); va_end (ap); if (ret >= 0) { *f._p = 0; *strp = (char *) f._bf._base; } return (ret); } #ifdef _NANO_FORMATTED_IO int _asiprintf_r (struct _reent *, char **, const char *, ...) _ATTRIBUTE ((__alias__("_asprintf_r"))); #endif #ifndef _REENT_ONLY int asprintf (char **__restrict strp, const char *__restrict fmt, ...) { int ret; va_list ap; FILE f; /* mark a zero-length reallocatable buffer */ f._flags = __SWR | __SSTR | __SMBF; f._bf._base = f._p = NULL; f._bf._size = f._w = 0; f._file = -1; /* No file. */ va_start (ap, fmt); ret = _svfprintf_r (_REENT, &f, fmt, ap); va_end (ap); if (ret >= 0) { *f._p = 0; *strp = (char *) f._bf._base; } return (ret); } #ifdef _NANO_FORMATTED_IO int asiprintf (char **, const char *, ...) _ATTRIBUTE ((__alias__("asprintf"))); #endif #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/clearerr.c000066400000000000000000000046641414576234500206120ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>, <>---clear file or stream error indicator INDEX clearerr INDEX clearerr_unlocked SYNOPSIS #include void clearerr(FILE *<[fp]>); #define _BSD_SOURCE #include void clearerr_unlocked(FILE *<[fp]>); DESCRIPTION The <> functions maintain an error indicator with each file pointer <[fp]>, to record whether any read or write errors have occurred on the associated file or stream. Similarly, it maintains an end-of-file indicator to record whether there is no more data in the file. Use <> to reset both of these indicators. See <> and <> to query the two indicators. <> is a non-thread-safe version of <>. <> may only safely be used within a scope protected by flockfile() (or ftrylockfile()) and funlockfile(). This function may safely be used in a multi-threaded program if and only if they are called while the invoking thread owns the (FILE *) object, as is the case after a successful call to the flockfile() or ftrylockfile() functions. If threads are disabled, then <> is equivalent to <>. RETURNS <> does not return a result. PORTABILITY ANSI C requires <>. <> is a BSD extension also provided by GNU libc. No supporting OS subroutines are required. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include "local.h" /* A subroutine version of the macro clearerr. */ #undef clearerr void clearerr (FILE * fp) { CHECK_INIT(_REENT, fp); _newlib_flockfile_start (fp); __sclearerr (fp); _newlib_flockfile_end (fp); } picolibc-1.7.4/newlib/libc/stdio/clearerr_u.c000066400000000000000000000031111414576234500211200ustar00rootroot00000000000000/* * Copyright (c) 2014 Red Hat, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include "local.h" /* A subroutine version of the macro clearerr_unlocked. */ #undef clearerr_unlocked void clearerr_unlocked (FILE * fp) { CHECK_INIT(_REENT, fp); __sclearerr (fp); } picolibc-1.7.4/newlib/libc/stdio/diprintf.c000066400000000000000000000032171414576234500206230ustar00rootroot00000000000000/* Copyright (C) 2005, 2007 Shaun Jackman * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ /* FUNCTION <>, <>---print to a file descriptor (integer only) INDEX diprintf INDEX _diprintf_r INDEX vdiprintf INDEX _vdiprintf_r SYNOPSIS #include #include int diprintf(int <[fd]>, const char *<[format]>, ...); int vdiprintf(int <[fd]>, const char *<[format]>, va_list <[ap]>); int _diprintf_r(struct _reent *<[ptr]>, int <[fd]>, const char *<[format]>, ...); int _vdiprintf_r(struct _reent *<[ptr]>, int <[fd]>, const char *<[format]>, va_list <[ap]>); DESCRIPTION <> and <> are similar to <> and <>, except that only integer format specifiers are processed. The functions <<_diprintf_r>> and <<_vdiprintf_r>> are simply reentrant versions of the functions above. RETURNS Similar to <> and <>. PORTABILITY This set of functions is an integer-only extension, and is not portable. Supporting OS subroutines required: <>, <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include int _diprintf_r (struct _reent *ptr, int fd, const char *format, ...) { va_list ap; int n; va_start (ap, format); n = _vdiprintf_r (ptr, fd, format, ap); va_end (ap); return n; } #ifndef _REENT_ONLY int diprintf (int fd, const char *format, ...) { va_list ap; int n; va_start (ap, format); n = _vdiprintf_r (_REENT, fd, format, ap); va_end (ap); return n; } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/dprintf.c000066400000000000000000000041711414576234500204520ustar00rootroot00000000000000/* Copyright 2005, 2007 Shaun Jackman * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ /* FUNCTION <>, <>---print to a file descriptor INDEX dprintf INDEX _dprintf_r INDEX vdprintf INDEX _vdprintf_r SYNOPSIS #include #include int dprintf(int <[fd]>, const char *restrict <[format]>, ...); int vdprintf(int <[fd]>, const char *restrict <[format]>, va_list <[ap]>); int _dprintf_r(struct _reent *<[ptr]>, int <[fd]>, const char *restrict <[format]>, ...); int _vdprintf_r(struct _reent *<[ptr]>, int <[fd]>, const char *restrict <[format]>, va_list <[ap]>); DESCRIPTION <> and <> allow printing a format, similarly to <>, but write to a file descriptor instead of to a <> stream. The functions <<_dprintf_r>> and <<_vdprintf_r>> are simply reentrant versions of the functions above. RETURNS The return value and errors are exactly as for <>, except that <> may also be set to <> if the heap is exhausted. PORTABILITY This function is originally a GNU extension in glibc and is not portable. Supporting OS subroutines required: <>, <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "local.h" int _dprintf_r (struct _reent *ptr, int fd, const char *__restrict format, ...) { va_list ap; int n; _REENT_SMALL_CHECK_INIT (ptr); va_start (ap, format); n = _vdprintf_r (ptr, fd, format, ap); va_end (ap); return n; } #ifdef _NANO_FORMATTED_IO int _diprintf_r (struct _reent *, int, const char *, ...) _ATTRIBUTE ((__alias__("_dprintf_r"))); #endif #ifndef _REENT_ONLY int dprintf (int fd, const char *__restrict format, ...) { va_list ap; int n; struct _reent *ptr = _REENT; _REENT_SMALL_CHECK_INIT (ptr); va_start (ap, format); n = _vdprintf_r (ptr, fd, format, ap); va_end (ap); return n; } #ifdef _NANO_FORMATTED_IO int diprintf (int, const char *, ...) _ATTRIBUTE ((__alias__("dprintf"))); #endif #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/fclose.c000066400000000000000000000066451414576234500202670ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---close a file INDEX fclose INDEX _fclose_r SYNOPSIS #include int fclose(FILE *<[fp]>); int _fclose_r(struct _reent *<[reent]>, FILE *<[fp]>); DESCRIPTION If the file or stream identified by <[fp]> is open, <> closes it, after first ensuring that any pending data is written (by calling <)>>). The alternate function <<_fclose_r>> is a reentrant version. The extra argument <[reent]> is a pointer to a reentrancy structure. RETURNS <> returns <<0>> if successful (including when <[fp]> is <> or not an open file); otherwise, it returns <>. PORTABILITY <> is required by ANSI C. Required OS subroutines: <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "local.h" int _fclose_r (struct _reent *rptr, register FILE * fp) { int r; if (fp == NULL) return (0); /* on NULL */ CHECK_INIT (rptr, fp); /* We can't use the _newlib_flockfile_XXX macros here due to the interlocked locking with the sfp_lock. */ #ifdef _STDIO_WITH_THREAD_CANCELLATION_SUPPORT int __oldcancel; pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &__oldcancel); #endif if (!(fp->_flags2 & __SNLK)) _flockfile (fp); if (fp->_flags == 0) /* not open! */ { if (!(fp->_flags2 & __SNLK)) _funlockfile (fp); #ifdef _STDIO_WITH_THREAD_CANCELLATION_SUPPORT pthread_setcancelstate (__oldcancel, &__oldcancel); #endif return (0); } #ifdef _STDIO_BSD_SEMANTICS /* BSD and Glibc systems only flush streams which have been written to. */ r = (fp->_flags & __SWR) ? __sflush_r (rptr, fp) : 0; #else /* Follow POSIX semantics exactly. Unconditionally flush to allow special handling for seekable read files to reposition file to last byte processed as opposed to last byte read ahead into the buffer. */ r = __sflush_r (rptr, fp); #endif if (fp->_close != NULL && fp->_close (rptr, fp->_cookie) < 0) r = EOF; if (fp->_flags & __SMBF) free ((char *) fp->_bf._base); if (HASUB (fp)) FREEUB (rptr, fp); if (HASLB (fp)) FREELB (rptr, fp); __sfp_lock_acquire (); fp->_flags = 0; /* release this FILE for reuse */ if (!(fp->_flags2 & __SNLK)) _funlockfile (fp); #ifndef __SINGLE_THREAD__ __lock_close_recursive (fp->_lock); #endif __sfp_lock_release (); #ifdef _STDIO_WITH_THREAD_CANCELLATION_SUPPORT pthread_setcancelstate (__oldcancel, &__oldcancel); #endif return (r); } #ifndef _REENT_ONLY int fclose (register FILE * fp) { return _fclose_r(_REENT, fp); } #endif picolibc-1.7.4/newlib/libc/stdio/fcloseall.c000066400000000000000000000035021414576234500207450ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---close all files INDEX fcloseall INDEX _fcloseall_r SYNOPSIS #include int fcloseall(void); int _fcloseall_r (struct _reent *<[ptr]>); DESCRIPTION <> closes all files in the current reentrancy struct's domain. The function <<_fcloseall_r>> is the same function, except the reentrancy struct is passed in as the <[ptr]> argument. This function is not recommended as it closes all streams, including the std streams. RETURNS <> returns <<0>> if all closes are successful. Otherwise, EOF is returned. PORTABILITY <> is a glibc extension. Required OS subroutines: <>, <>, <>, <>, <>, <>, <>. */ /* This file based upon fwalk.c. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "local.h" int _fcloseall_r (struct _reent *ptr) { return _fwalk_reent (ptr, _fclose_r); } #ifndef _REENT_ONLY int fcloseall (void) { return _fcloseall_r (_GLOBAL_REENT); } #endif picolibc-1.7.4/newlib/libc/stdio/fdopen.c000066400000000000000000000062411414576234500202570ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---turn open file into a stream INDEX fdopen INDEX _fdopen_r SYNOPSIS #include FILE *fdopen(int <[fd]>, const char *<[mode]>); FILE *_fdopen_r(struct _reent *<[reent]>, int <[fd]>, const char *<[mode]>); DESCRIPTION <> produces a file descriptor of type <>, from a descriptor for an already-open file (returned, for example, by the system subroutine <> rather than by <>). The <[mode]> argument has the same meanings as in <>. RETURNS File pointer or <>, as for <>. PORTABILITY <> is ANSI. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include "local.h" #include <_syslist.h> FILE * _fdopen_r (struct _reent *ptr, int fd, const char *mode) { register FILE *fp; int flags, oflags; #ifdef HAVE_FCNTL int fdflags, fdmode; #endif if ((flags = __sflags (ptr, mode, &oflags)) == 0) return 0; /* make sure the mode the user wants is a subset of the actual mode */ #ifdef HAVE_FCNTL if ((fdflags = fcntl (fd, F_GETFL, 0)) < 0) return 0; fdmode = fdflags & O_ACCMODE; if (fdmode != O_RDWR && (fdmode != (oflags & O_ACCMODE))) { __errno_r(ptr) = EBADF; return 0; } #endif if ((fp = __sfp (ptr)) == 0) return 0; _newlib_flockfile_start (fp); fp->_flags = flags; /* POSIX recommends setting the O_APPEND bit on fd to match append streams. Someone may later clear O_APPEND on fileno(fp), but the stream must still remain in append mode. Rely on __sflags setting __SAPP properly. */ #ifdef HAVE_FCNTL if ((oflags & O_APPEND) && !(fdflags & O_APPEND)) fcntl (fd, F_SETFL, fdflags | O_APPEND); #endif fp->_file = fd; fp->_cookie = (void *) fp; #undef _read #undef _write #undef _seek #undef _close fp->_read = __sread; fp->_write = __swrite; fp->_seek = __sseek; fp->_close = __sclose; #ifdef __SCLE /* Explicit given mode results in explicit setting mode on fd */ if (oflags & O_BINARY) setmode (fp->_file, O_BINARY); else if (oflags & O_TEXT) setmode (fp->_file, O_TEXT); if (__stextmode (fp->_file)) fp->_flags |= __SCLE; #endif _newlib_flockfile_end (fp); return fp; } #ifndef _REENT_ONLY FILE * fdopen (int fd, const char *mode) { return _fdopen_r (_REENT, fd, mode); } #endif picolibc-1.7.4/newlib/libc/stdio/feof.c000066400000000000000000000042251414576234500177230ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>, <>---test for end of file INDEX feof INDEX feof_unlocked SYNOPSIS #include int feof(FILE *<[fp]>); #define _BSD_SOURCE #include int feof_unlocked(FILE *<[fp]>); DESCRIPTION <> tests whether or not the end of the file identified by <[fp]> has been reached. <> is a non-thread-safe version of <>. <> may only safely be used within a scope protected by flockfile() (or ftrylockfile()) and funlockfile(). This function may safely be used in a multi-threaded program if and only if they are called while the invoking thread owns the (FILE *) object, as is the case after a successful call to the flockfile() or ftrylockfile() functions. If threads are disabled, then <> is equivalent to <>. RETURNS <> returns <<0>> if the end of file has not yet been reached; if at end of file, the result is nonzero. PORTABILITY <> is required by ANSI C. <> is a BSD extension also provided by GNU libc. No supporting OS subroutines are required. */ #define _DEFAULT_SOURCE #include #include "local.h" /* A subroutine version of the macro feof. */ #undef feof int feof (FILE * fp) { int result; CHECK_INIT(_REENT, fp); _newlib_flockfile_start (fp); result = __sfeof (fp); _newlib_flockfile_end (fp); return result; } picolibc-1.7.4/newlib/libc/stdio/feof_u.c000066400000000000000000000030541414576234500202460ustar00rootroot00000000000000/* * Copyright (c) 2014 Red Hat, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _DEFAULT_SOURCE #include #include "local.h" /* A subroutine version of the macro feof_unlocked. */ #undef feof_unlocked int feof_unlocked (FILE * fp) { CHECK_INIT(_REENT, fp); return __sfeof (fp); } picolibc-1.7.4/newlib/libc/stdio/ferror.c000066400000000000000000000047561414576234500203140ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>, <>---test whether read/write error has occurred INDEX ferror INDEX ferror_unlocked SYNOPSIS #include int ferror(FILE *<[fp]>); #define _BSD_SOURCE #include int ferror_unlocked(FILE *<[fp]>); DESCRIPTION The <> functions maintain an error indicator with each file pointer <[fp]>, to record whether any read or write errors have occurred on the associated file or stream. Use <> to query this indicator. See <> to reset the error indicator. <> is a non-thread-safe version of <>. <> may only safely be used within a scope protected by flockfile() (or ftrylockfile()) and funlockfile(). This function may safely be used in a multi-threaded program if and only if they are called while the invoking thread owns the (FILE *) object, as is the case after a successful call to the flockfile() or ftrylockfile() functions. If threads are disabled, then <> is equivalent to <>. RETURNS <> returns <<0>> if no errors have occurred; it returns a nonzero value otherwise. PORTABILITY ANSI C requires <>. <> is a BSD extension also provided by GNU libc. No supporting OS subroutines are required. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include "local.h" /* A subroutine version of the macro ferror. */ #undef ferror int ferror (FILE * fp) { int result; CHECK_INIT(_REENT, fp); _newlib_flockfile_start (fp); result = __sferror (fp); _newlib_flockfile_end (fp); return result; } picolibc-1.7.4/newlib/libc/stdio/ferror_u.c000066400000000000000000000031071414576234500206250ustar00rootroot00000000000000/* * Copyright (c) 2014 Red Hat, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include "local.h" /* A subroutine version of the macro ferror_unlocked. */ #undef ferror_unlocked int ferror_unlocked (FILE * fp) { CHECK_INIT(_REENT, fp); return __sferror (fp); } picolibc-1.7.4/newlib/libc/stdio/fflush.c000066400000000000000000000207361414576234500203000ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>, <>---flush buffered file output INDEX fflush INDEX fflush_unlocked INDEX _fflush_r INDEX _fflush_unlocked_r SYNOPSIS #include int fflush(FILE *<[fp]>); #define _BSD_SOURCE #include int fflush_unlocked(FILE *<[fp]>); #include int _fflush_r(struct _reent *<[reent]>, FILE *<[fp]>); #define _BSD_SOURCE #include int _fflush_unlocked_r(struct _reent *<[reent]>, FILE *<[fp]>); DESCRIPTION The <> output functions can buffer output before delivering it to the host system, in order to minimize the overhead of system calls. Use <> to deliver any such pending output (for the file or stream identified by <[fp]>) to the host system. If <[fp]> is <>, <> delivers pending output from all open files. Additionally, if <[fp]> is a seekable input stream visiting a file descriptor, set the position of the file descriptor to match next unread byte, useful for obeying POSIX semantics when ending a process without consuming all input from the stream. <> is a non-thread-safe version of <>. <> may only safely be used within a scope protected by flockfile() (or ftrylockfile()) and funlockfile(). This function may safely be used in a multi-threaded program if and only if they are called while the invoking thread owns the (FILE *) object, as is the case after a successful call to the flockfile() or ftrylockfile() functions. If threads are disabled, then <> is equivalent to <>. The alternate functions <<_fflush_r>> and <<_fflush_unlocked_r>> are reentrant versions, where the extra argument <[reent]> is a pointer to a reentrancy structure, and <[fp]> must not be NULL. RETURNS <> returns <<0>> unless it encounters a write error; in that situation, it returns <>. PORTABILITY ANSI C requires <>. The behavior on input streams is only specified by POSIX, and not all implementations follow POSIX rules. <> is a BSD extension also provided by GNU libc. No supporting OS subroutines are required. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" #ifdef __IMPL_UNLOCKED__ #define _fflush_r _fflush_unlocked_r #define fflush fflush_unlocked #endif #ifndef __IMPL_UNLOCKED__ /* Flush a single file, or (if fp is NULL) all files. */ /* Core function which does not lock file pointer. This gets called directly from __srefill. */ int __sflush_r (struct _reent *ptr, register FILE * fp) { register unsigned char *p; register _READ_WRITE_BUFSIZE_TYPE n; register _READ_WRITE_RETURN_TYPE t; short flags; flags = fp->_flags; if ((flags & __SWR) == 0) { #ifdef _FSEEK_OPTIMIZATION /* For a read stream, an fflush causes the next seek to be unoptimized (i.e. forces a system-level seek). This conforms to the POSIX and SUSv3 standards. */ fp->_flags |= __SNPT; #endif /* For a seekable stream with buffered read characters, we will attempt a seek to the current position now. A subsequent read will then get the next byte from the file rather than the buffer. This conforms to the POSIX and SUSv3 standards. Note that the standards allow this seek to be deferred until necessary, but we choose to do it here to make the change simpler, more contained, and less likely to miss a code scenario. */ if ((fp->_r > 0 || fp->_ur > 0) && fp->_seek != NULL) { int tmp_errno; #ifdef __LARGE64_FILES _fpos64_t curoff; #else _fpos_t curoff; #endif /* Save last errno and set errno to 0, so we can check if a device returns with a valid position -1. We restore the last errno if no other error condition has been encountered. */ tmp_errno = __errno_r(ptr); __errno_r(ptr) = 0; /* Get the physical position we are at in the file. */ if (fp->_flags & __SOFF) curoff = fp->_offset; else { /* We don't know current physical offset, so ask for it. Only ESPIPE and EINVAL are ignorable. */ #ifdef __LARGE64_FILES if (fp->_flags & __SL64) curoff = fp->_seek64 (ptr, fp->_cookie, 0, SEEK_CUR); else #endif curoff = fp->_seek (ptr, fp->_cookie, 0, SEEK_CUR); if (curoff == -1L && __errno_r(ptr) != 0) { int result = EOF; if (__errno_r(ptr) == ESPIPE || __errno_r(ptr) == EINVAL) { result = 0; __errno_r(ptr) = tmp_errno; } else fp->_flags |= __SERR; return result; } } if (fp->_flags & __SRD) { /* Current offset is at end of buffer. Compensate for characters not yet read. */ curoff -= fp->_r; if (HASUB (fp)) curoff -= fp->_ur; } /* Now physically seek to after byte last read. */ #ifdef __LARGE64_FILES if (fp->_flags & __SL64) curoff = fp->_seek64 (ptr, fp->_cookie, curoff, SEEK_SET); else #endif curoff = fp->_seek (ptr, fp->_cookie, curoff, SEEK_SET); if (curoff != -1 || __errno_r(ptr) == 0 || __errno_r(ptr) == ESPIPE || __errno_r(ptr) == EINVAL) { /* Seek successful or ignorable error condition. We can clear read buffer now. */ #ifdef _FSEEK_OPTIMIZATION fp->_flags &= ~__SNPT; #endif fp->_r = 0; fp->_p = fp->_bf._base; if ((fp->_flags & __SOFF) && (curoff != -1 || __errno_r(ptr) == 0)) fp->_offset = curoff; __errno_r(ptr) = tmp_errno; if (HASUB (fp)) FREEUB (ptr, fp); } else { fp->_flags |= __SERR; return EOF; } } return 0; } if ((p = fp->_bf._base) == NULL) { /* Nothing to flush. */ return 0; } n = fp->_p - p; /* write this much */ /* * Set these immediately to avoid problems with longjmp * and to allow exchange buffering (via setvbuf) in user * write function. */ fp->_p = p; fp->_w = flags & (__SLBF | __SNBF) ? 0 : fp->_bf._size; while (n > 0) { t = fp->_write (ptr, fp->_cookie, (char *) p, n); if (t <= 0) { fp->_flags |= __SERR; return EOF; } p += t; n -= t; } return 0; } #ifdef _STDIO_BSD_SEMANTICS /* Called from _cleanup_r. At exit time, we don't need file locking, and we don't want to move the underlying file pointer unless we're writing. */ int __sflushw_r (struct _reent *ptr, register FILE *fp) { return (fp->_flags & __SWR) ? __sflush_r (ptr, fp) : 0; } #endif #endif /* __IMPL_UNLOCKED__ */ int _fflush_r (struct _reent *ptr, register FILE * fp) { int ret; #ifdef _REENT_SMALL /* For REENT_SMALL platforms, it is possible we are being called for the first time on a std stream. This std stream can belong to a reentrant struct that is not _REENT. If CHECK_INIT gets called below based on _REENT, we will end up changing said file pointers to the equivalent std stream off of _REENT. This causes unexpected behavior if there is any data to flush on the _REENT std stream. There are two alternatives to fix this: 1) make a reentrant fflush or 2) simply recognize that this file has nothing to flush and return immediately before performing a CHECK_INIT. Choice 2 is implemented here due to its simplicity. */ if (fp->_bf._base == NULL) return 0; #endif /* _REENT_SMALL */ CHECK_INIT (ptr, fp); if (!fp->_flags) return 0; _newlib_flockfile_start (fp); ret = __sflush_r (ptr, fp); _newlib_flockfile_end (fp); return ret; } #ifndef _REENT_ONLY int fflush (register FILE * fp) { if (fp == NULL) return _fwalk_reent (_GLOBAL_REENT, _fflush_r); return _fflush_r (_REENT, fp); } #endif /* _REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/fflush_u.c000066400000000000000000000025711414576234500206210ustar00rootroot00000000000000/* * Copyright (c) 2014 Red Hat, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define __IMPL_UNLOCKED__ #include "fflush.c" picolibc-1.7.4/newlib/libc/stdio/fgetc.c000066400000000000000000000064651414576234500201040ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>, <>---get a character from a file or stream INDEX fgetc INDEX fgetc_unlocked INDEX _fgetc_r INDEX _fgetc_unlocked_r SYNOPSIS #include int fgetc(FILE *<[fp]>); #define _BSD_SOURCE #include int fgetc_unlocked(FILE *<[fp]>); #include int _fgetc_r(struct _reent *<[ptr]>, FILE *<[fp]>); #define _BSD_SOURCE #include int _fgetc_unlocked_r(struct _reent *<[ptr]>, FILE *<[fp]>); DESCRIPTION Use <> to get the next single character from the file or stream identified by <[fp]>. As a side effect, <> advances the file's current position indicator. For a macro version of this function, see <>. <> is a non-thread-safe version of <>. <> may only safely be used within a scope protected by flockfile() (or ftrylockfile()) and funlockfile(). This function may safely be used in a multi-threaded program if and only if they are called while the invoking thread owns the (FILE *) object, as is the case after a successful call to the flockfile() or ftrylockfile() functions. If threads are disabled, then <> is equivalent to <>. The functions <<_fgetc_r>> and <<_fgetc_unlocked_r>> are simply reentrant versions that are passed the additional reentrant structure pointer argument: <[ptr]>. RETURNS The next character (read as an <>, and cast to <>), unless there is no more data, or the host system reports a read error; in either of these situations, <> returns <>. You can distinguish the two situations that cause an <> result by using the <> and <> functions. PORTABILITY ANSI C requires <>. <> is a BSD extension also provided by GNU libc. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include "local.h" int _fgetc_r (struct _reent * ptr, FILE * fp) { int result; CHECK_INIT(ptr, fp); _newlib_flockfile_start (fp); result = __sgetc_r (ptr, fp); _newlib_flockfile_end (fp); return result; } #ifndef _REENT_ONLY int fgetc (FILE * fp) { #if !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) int result; struct _reent *reent = _REENT; CHECK_INIT(reent, fp); _newlib_flockfile_start (fp); result = __sgetc_r (reent, fp); _newlib_flockfile_end (fp); return result; #else return _fgetc_r (_REENT, fp); #endif } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/fgetc_u.c000066400000000000000000000034751414576234500204260ustar00rootroot00000000000000/* * Copyright (c) 2014 Red Hat, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include "local.h" int _fgetc_unlocked_r (struct _reent * ptr, FILE * fp) { CHECK_INIT(ptr, fp); return __sgetc_r (ptr, fp); } #ifndef _REENT_ONLY int fgetc_unlocked (FILE * fp) { #if !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) struct _reent *reent = _REENT; CHECK_INIT(reent, fp); return __sgetc_r (reent, fp); #else return _fgetc_unlocked_r (_REENT, fp); #endif } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/fgetpos.c000066400000000000000000000052671414576234500204620ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---record position in a stream or file INDEX fgetpos INDEX _fgetpos_r SYNOPSIS #include int fgetpos(FILE *restrict <[fp]>, fpos_t *restrict <[pos]>); int _fgetpos_r(struct _reent *<[ptr]>, FILE *restrict <[fp]>, fpos_t *restrict <[pos]>); DESCRIPTION Objects of type <> can have a ``position'' that records how much of the file your program has already read. Many of the <> functions depend on this position, and many change it as a side effect. You can use <> to report on the current position for a file identified by <[fp]>; <> will write a value representing that position at <<*<[pos]>>>. Later, you can use this value with <> to return the file to this position. In the current implementation, <> simply uses a character count to represent the file position; this is the same number that would be returned by <>. RETURNS <> returns <<0>> when successful. If <> fails, the result is <<1>>. Failure occurs on streams that do not support positioning; the global <> indicates this condition with the value <>. PORTABILITY <> is required by the ANSI C standard, but the meaning of the value it records is not specified beyond requiring that it be acceptable as an argument to <>. In particular, other conforming C implementations may return a different result from <> than what <> writes at <<*<[pos]>>>. No supporting OS subroutines are required. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include int _fgetpos_r (struct _reent * ptr, FILE *__restrict fp, _fpos_t *__restrict pos) { *pos = _ftell_r (ptr, fp); if (*pos != -1) { return 0; } return 1; } #ifndef _REENT_ONLY int fgetpos (FILE *__restrict fp, _fpos_t *__restrict pos) { return _fgetpos_r (_REENT, fp, pos); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/fgets.c000066400000000000000000000123431414576234500201140ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>, <>---get character string from a file or stream INDEX fgets INDEX fgets_unlocked INDEX _fgets_r INDEX _fgets_unlocked_r SYNOPSIS #include char *fgets(char *restrict <[buf]>, int <[n]>, FILE *restrict <[fp]>); #define _GNU_SOURCE #include char *fgets_unlocked(char *restrict <[buf]>, int <[n]>, FILE *restrict <[fp]>); #include char *_fgets_r(struct _reent *<[ptr]>, char *restrict <[buf]>, int <[n]>, FILE *restrict <[fp]>); #include char *_fgets_unlocked_r(struct _reent *<[ptr]>, char *restrict <[buf]>, int <[n]>, FILE *restrict <[fp]>); DESCRIPTION Reads at most <[n-1]> characters from <[fp]> until a newline is found. The characters including to the newline are stored in <[buf]>. The buffer is terminated with a 0. <> is a non-thread-safe version of <>. <> may only safely be used within a scope protected by flockfile() (or ftrylockfile()) and funlockfile(). This function may safely be used in a multi-threaded program if and only if they are called while the invoking thread owns the (FILE *) object, as is the case after a successful call to the flockfile() or ftrylockfile() functions. If threads are disabled, then <> is equivalent to <>. The functions <<_fgets_r>> and <<_fgets_unlocked_r>> are simply reentrant versions that are passed the additional reentrant structure pointer argument: <[ptr]>. RETURNS <> returns the buffer passed to it, with the data filled in. If end of file occurs with some data already accumulated, the data is returned with no other indication. If no data are read, NULL is returned instead. PORTABILITY <> should replace all uses of <>. Note however that <> returns all of the data, while <> removes the trailing newline (with no indication that it has done so.) <> is a GNU extension. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" #ifdef __IMPL_UNLOCKED__ #define _fgets_r _fgets_unlocked_r #define fgets fgets_unlocked #endif /* * Read at most n-1 characters from the given file. * Stop when a newline has been read, or the count runs out. * Return first argument, or NULL if no characters were read. */ char * _fgets_r (struct _reent * ptr, char *__restrict buf, int n, FILE *__restrict fp) { size_t len; char *s; unsigned char *p, *t; if (n < 2) /* sanity check */ return 0; s = buf; CHECK_INIT(ptr, fp); _newlib_flockfile_start (fp); #ifdef __SCLE if (fp->_flags & __SCLE) { int c = 0; /* Sorry, have to do it the slow way */ while (--n > 0 && (c = __sgetc_r (ptr, fp)) != EOF) { *s++ = c; if (c == '\n') break; } if (c == EOF && s == buf) { _newlib_flockfile_exit (fp); return NULL; } *s = 0; _newlib_flockfile_exit (fp); return buf; } #endif n--; /* leave space for NUL */ do { /* * If the buffer is empty, refill it. */ if ((len = fp->_r) <= 0) { if (__srefill_r (ptr, fp)) { /* EOF: stop with partial or no line */ if (s == buf) { _newlib_flockfile_exit (fp); return 0; } break; } len = fp->_r; } p = fp->_p; /* * Scan through at most n bytes of the current buffer, * looking for '\n'. If found, copy up to and including * newline, and stop. Otherwise, copy entire chunk * and loop. */ if (len > (size_t) n) /* n is always non-negative here */ len = (size_t) n; t = (unsigned char *) memchr ((void *) p, '\n', len); if (t != 0) { len = ++t - p; fp->_r -= len; fp->_p = t; (void) memcpy ((void *) s, (void *) p, len); s[len] = 0; _newlib_flockfile_exit (fp); return (buf); } fp->_r -= len; fp->_p += len; (void) memcpy ((void *) s, (void *) p, len); s += len; } while ((n -= len) != 0); *s = 0; _newlib_flockfile_end (fp); return buf; } #ifndef _REENT_ONLY char * fgets (char *__restrict buf, int n, FILE *__restrict fp) { return _fgets_r (_REENT, buf, n, fp); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/fgets_u.c000066400000000000000000000025701414576234500204410ustar00rootroot00000000000000/* * Copyright (c) 2014 Red Hat, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define __IMPL_UNLOCKED__ #include "fgets.c" picolibc-1.7.4/newlib/libc/stdio/fgetwc.c000066400000000000000000000122371414576234500202650ustar00rootroot00000000000000/*- * Copyright (c) 2002-2004 Tim J. Robbins. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* FUNCTION <>, <>, <>, <>---get a wide character from a file or stream INDEX fgetwc INDEX fgetwc_unlocked INDEX _fgetwc_r INDEX _fgetwc_unlocked_r INDEX getwc INDEX getwc_unlocked INDEX _getwc_r INDEX _getwc_unlocked_r SYNOPSIS #include #include wint_t fgetwc(FILE *<[fp]>); #define _GNU_SOURCE #include #include wint_t fgetwc_unlocked(FILE *<[fp]>); #include #include wint_t _fgetwc_r(struct _reent *<[ptr]>, FILE *<[fp]>); #include #include wint_t _fgetwc_unlocked_r(struct _reent *<[ptr]>, FILE *<[fp]>); #include #include wint_t getwc(FILE *<[fp]>); #define _GNU_SOURCE #include #include wint_t getwc_unlocked(FILE *<[fp]>); #include #include wint_t _getwc_r(struct _reent *<[ptr]>, FILE *<[fp]>); #include #include wint_t _getwc_unlocked_r(struct _reent *<[ptr]>, FILE *<[fp]>); DESCRIPTION Use <> to get the next wide character from the file or stream identified by <[fp]>. As a side effect, <> advances the file's current position indicator. <> is a non-thread-safe version of <>. <> may only safely be used within a scope protected by flockfile() (or ftrylockfile()) and funlockfile(). This function may safely be used in a multi-threaded program if and only if they are called while the invoking thread owns the (FILE *) object, as is the case after a successful call to the flockfile() or ftrylockfile() functions. If threads are disabled, then <> is equivalent to <>. The <> and <> functions or macros functions identically to <> and <>. It may be implemented as a macro, and may evaluate its argument more than once. There is no reason ever to use it. <<_fgetwc_r>>, <<_getwc_r>>, <<_fgetwc_unlocked_r>>, and <<_getwc_unlocked_r>> are simply reentrant versions of the above functions that are passed the additional reentrant structure pointer argument: <[ptr]>. RETURNS The next wide character cast to <>, unless there is no more data, or the host system reports a read error; in either of these situations, <> and <> return <>. You can distinguish the two situations that cause an <> result by using the <> and <> functions. PORTABILITY <> and <> are required by C99 and POSIX.1-2001. <> and <> are GNU extensions. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include "local.h" wint_t __fgetwc (struct _reent *ptr, register FILE *fp) { wchar_t wc; size_t nconv; if (fp->_r <= 0 && __srefill_r (ptr, fp)) return (WEOF); if (MB_CUR_MAX == 1) { /* Fast path for single-byte encodings. */ wc = *fp->_p++; fp->_r--; return (wc); } do { nconv = mbrtowc (&wc, (char *) fp->_p, fp->_r, &fp->_mbstate); if (nconv == (size_t)-1) break; else if (nconv == (size_t)-2) continue; else if (nconv == 0) { /* * Assume that the only valid representation of * the null wide character is a single null byte. */ fp->_p++; fp->_r--; return (L'\0'); } else { fp->_p += nconv; fp->_r -= nconv; return (wc); } } while (__srefill_r(ptr, fp) == 0); fp->_flags |= __SERR; errno = EILSEQ; return (WEOF); } wint_t _fgetwc_r (struct _reent *ptr, register FILE *fp) { wint_t r; _newlib_flockfile_start (fp); ORIENT(fp, 1); r = __fgetwc (ptr, fp); _newlib_flockfile_end (fp); return r; } wint_t fgetwc (FILE *fp) { struct _reent *reent = _REENT; CHECK_INIT(reent, fp); return _fgetwc_r (reent, fp); } picolibc-1.7.4/newlib/libc/stdio/fgetwc_u.c000066400000000000000000000032601414576234500206050ustar00rootroot00000000000000/* * Copyright (c) 2014 Red Hat, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" wint_t _fgetwc_unlocked_r (struct _reent *ptr, register FILE *fp) { ORIENT(fp, 1); return __fgetwc (ptr, fp); } wint_t fgetwc_unlocked (FILE *fp) { struct _reent *reent = _REENT; CHECK_INIT(reent, fp); return _fgetwc_unlocked_r (reent, fp); } picolibc-1.7.4/newlib/libc/stdio/fgetws.c000066400000000000000000000122051414576234500203000ustar00rootroot00000000000000/*- * Copyright (c) 2002-2004 Tim J. Robbins. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* FUNCTION <>, <>---get wide character string from a file or stream INDEX fgetws INDEX fgetws_unlocked INDEX _fgetws_r INDEX _fgetws_unlocked_r SYNOPSIS #include wchar_t *fgetws(wchar_t *__restrict <[ws]>, int <[n]>, FILE *__restrict <[fp]>); #define _GNU_SOURCE #include wchar_t *fgetws_unlocked(wchar_t *__restrict <[ws]>, int <[n]>, FILE *__restrict <[fp]>); #include wchar_t *_fgetws_r(struct _reent *<[ptr]>, wchar_t *<[ws]>, int <[n]>, FILE *<[fp]>); #include wchar_t *_fgetws_unlocked_r(struct _reent *<[ptr]>, wchar_t *<[ws]>, int <[n]>, FILE *<[fp]>); DESCRIPTION Reads at most <[n-1]> wide characters from <[fp]> until a newline is found. The wide characters including to the newline are stored in <[ws]>. The buffer is terminated with a 0. <> is a non-thread-safe version of <>. <> may only safely be used within a scope protected by flockfile() (or ftrylockfile()) and funlockfile(). This function may safely be used in a multi-threaded program if and only if they are called while the invoking thread owns the (FILE *) object, as is the case after a successful call to the flockfile() or ftrylockfile() functions. If threads are disabled, then <> is equivalent to <>. The <<_fgetws_r>> and <<_fgetws_unlocked_r>> functions are simply reentrant version of the above and are passed an additional reentrancy structure pointer: <[ptr]>. RETURNS <> returns the buffer passed to it, with the data filled in. If end of file occurs with some data already accumulated, the data is returned with no other indication. If no data are read, NULL is returned instead. PORTABILITY <> is required by C99 and POSIX.1-2001. <> is a GNU extension. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include "local.h" #ifdef __IMPL_UNLOCKED__ #define _fgetws_r _fgetws_unlocked_r #define fgetws fgetws_unlocked #endif wchar_t * _fgetws_r (struct _reent *ptr, wchar_t * ws, int n, FILE * fp) { wchar_t *wsp; size_t nconv; const char *src; unsigned char *nl; _newlib_flockfile_start (fp); ORIENT (fp, 1); if (n <= 0) { errno = EINVAL; goto error; } if (fp->_r <= 0 && __srefill_r (ptr, fp)) /* EOF */ goto error; wsp = ws; do { src = (char *) fp->_p; nl = memchr (fp->_p, '\n', fp->_r); nconv = mbsnrtowcs (wsp, &src, /* Read all bytes up to the next NL, or up to the end of the buffer if there is no NL. */ nl != NULL ? (nl - fp->_p + 1) : fp->_r, /* But never more than n - 1 wide chars. */ n - 1, &fp->_mbstate); if (nconv == (size_t) -1) /* Conversion error */ goto error; if (src == NULL) { /* * We hit a null byte. Increment the character count, * since mbsnrtowcs()'s return value doesn't include * the terminating null, then resume conversion * after the null. */ nconv++; src = memchr (fp->_p, '\0', fp->_r); src++; } fp->_r -= (unsigned char *) src - fp->_p; fp->_p = (unsigned char *) src; n -= nconv; wsp += nconv; } while (wsp[-1] != L'\n' && n > 1 && (fp->_r > 0 || __srefill_r (ptr, fp) == 0)); if (wsp == ws) /* EOF */ goto error; if (!mbsinit (&fp->_mbstate)) /* Incomplete character */ goto error; *wsp++ = L'\0'; _newlib_flockfile_exit (fp); return ws; error: _newlib_flockfile_end (fp); return NULL; } wchar_t * fgetws (wchar_t *__restrict ws, int n, FILE *__restrict fp) { struct _reent *reent = _REENT; CHECK_INIT (reent, fp); return _fgetws_r (reent, ws, n, fp); } picolibc-1.7.4/newlib/libc/stdio/fgetws_u.c000066400000000000000000000025711414576234500206310ustar00rootroot00000000000000/* * Copyright (c) 2014 Red Hat, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define __IMPL_UNLOCKED__ #include "fgetws.c" picolibc-1.7.4/newlib/libc/stdio/fileno.c000066400000000000000000000044331414576234500202610ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>, <>---return file descriptor associated with stream INDEX fileno INDEX fileno_unlocked SYNOPSIS #include int fileno(FILE *<[fp]>); #define _BSD_SOURCE #include int fileno_unlocked(FILE *<[fp]>); DESCRIPTION You can use <> to return the file descriptor identified by <[fp]>. <> is a non-thread-safe version of <>. <> may only safely be used within a scope protected by flockfile() (or ftrylockfile()) and funlockfile(). This function may safely be used in a multi-threaded program if and only if they are called while the invoking thread owns the (FILE *) object, as is the case after a successful call to the flockfile() or ftrylockfile() functions. If threads are disabled, then <> is equivalent to <>. RETURNS <> returns a non-negative integer when successful. If <[fp]> is not an open stream, <> returns -1. PORTABILITY <> is not part of ANSI C. POSIX requires <>. <> is a BSD extension also provided by GNU libc. Supporting OS subroutines required: none. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" int fileno (FILE * f) { int result; CHECK_INIT (_REENT, f); _newlib_flockfile_start (f); if (f->_flags) result = __sfileno (f); else { result = -1; __errno_r(_REENT) = EBADF; } _newlib_flockfile_end (f); return result; } picolibc-1.7.4/newlib/libc/stdio/fileno_u.c000066400000000000000000000032001414576234500205740ustar00rootroot00000000000000/* * Copyright (c) 2014 Red Hat, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" int fileno_unlocked (FILE * f) { int result; CHECK_INIT (_REENT, f); if (f->_flags) result = __sfileno (f); else { result = -1; __errno_r(_REENT) = EBADF; } return result; } picolibc-1.7.4/newlib/libc/stdio/findfp.c000066400000000000000000000200771414576234500202550ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* No user fns here. Pesch 15apr92. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include #include #include "local.h" #if defined(_REENT_SMALL) && !defined(_REENT_GLOBAL_STDIO_STREAMS) const struct __sFILE_fake __sf_fake_stdin = {_NULL, 0, 0, 0, 0, {_NULL, 0}, 0, _NULL}; const struct __sFILE_fake __sf_fake_stdout = {_NULL, 0, 0, 0, 0, {_NULL, 0}, 0, _NULL}; const struct __sFILE_fake __sf_fake_stderr = {_NULL, 0, 0, 0, 0, {_NULL, 0}, 0, _NULL}; #endif #ifdef _REENT_GLOBAL_STDIO_STREAMS __FILE __sf[3]; #endif #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) _NOINLINE_STATIC void #else static void #endif std (FILE *ptr, int flags, int file) { ptr->_p = 0; ptr->_r = 0; ptr->_w = 0; ptr->_flags = flags; ptr->_flags2 = 0; ptr->_file = file; ptr->_bf._base = 0; ptr->_bf._size = 0; ptr->_lbfsize = 0; memset (&ptr->_mbstate, 0, sizeof (_mbstate_t)); ptr->_cookie = ptr; ptr->_read = __sread; #ifndef __LARGE64_FILES ptr->_write = __swrite; #else /* __LARGE64_FILES */ ptr->_write = __swrite64; ptr->_seek64 = __sseek64; ptr->_flags |= __SL64; #endif /* __LARGE64_FILES */ ptr->_seek = __sseek; #ifdef _STDIO_CLOSE_PER_REENT_STD_STREAMS ptr->_close = __sclose; #else /* _STDIO_CLOSE_STD_STREAMS */ ptr->_close = NULL; #endif /* _STDIO_CLOSE_STD_STREAMS */ #if !defined(__SINGLE_THREAD__) && !(defined(_REENT_SMALL) && !defined(_REENT_GLOBAL_STDIO_STREAMS)) __lock_init_recursive (ptr->_lock); /* * #else * lock is already initialized in __sfp */ #endif #ifdef __SCLE if (__stextmode (ptr->_file)) ptr->_flags |= __SCLE; #endif } static inline void stdin_init(FILE *ptr) { std (ptr, __SRD, 0); } static inline void stdout_init(FILE *ptr) { /* On platforms that have true file system I/O, we can verify whether stdout is an interactive terminal or not, as part of __smakebuf on first use of the stream. For all other platforms, we will default to line buffered mode here. Technically, POSIX requires both stdin and stdout to be line-buffered, but tradition leaves stdin alone on systems without fcntl. */ #ifdef HAVE_FCNTL std (ptr, __SWR, 1); #else std (ptr, __SWR | __SLBF, 1); #endif } static inline void stderr_init(FILE *ptr) { /* POSIX requires stderr to be opened for reading and writing, even when the underlying fd 2 is write-only. */ std (ptr, __SRW | __SNBF, 2); } struct glue_with_file { struct _glue glue; FILE file; }; struct _glue * __sfmoreglue (struct _reent *d, register int n) { struct glue_with_file *g; (void) d; g = (struct glue_with_file *) malloc (sizeof (*g) + (n - 1) * sizeof (FILE)); if (g == NULL) return NULL; g->glue._next = NULL; g->glue._niobs = n; g->glue._iobs = &g->file; memset (&g->file, 0, n * sizeof (FILE)); return &g->glue; } /* * Find a free FILE for fopen et al. */ FILE * __sfp (struct _reent *d) { FILE *fp; int n; struct _glue *g; _newlib_sfp_lock_start (); if (!_GLOBAL_REENT->__sdidinit) __sinit (_GLOBAL_REENT); for (g = &_GLOBAL_REENT->__sglue;; g = g->_next) { for (fp = g->_iobs, n = g->_niobs; --n >= 0; fp++) if (fp->_flags == 0) goto found; if (g->_next == NULL && (g->_next = __sfmoreglue (d, NDYNAMIC)) == NULL) break; } _newlib_sfp_lock_exit (); __errno_r(d) = ENOMEM; return NULL; found: fp->_file = -1; /* no file */ fp->_flags = 1; /* reserve this slot; caller sets real flags */ fp->_flags2 = 0; #ifndef __SINGLE_THREAD__ __lock_init_recursive (fp->_lock); #endif _newlib_sfp_lock_end (); fp->_p = NULL; /* no current pointer */ fp->_w = 0; /* nothing to read or write */ fp->_r = 0; fp->_bf._base = NULL; /* no buffer */ fp->_bf._size = 0; fp->_lbfsize = 0; /* not line buffered */ memset (&fp->_mbstate, 0, sizeof (_mbstate_t)); /* fp->_cookie = ; */ /* caller sets cookie, _read/_write etc */ fp->_ub._base = NULL; /* no ungetc buffer */ fp->_ub._size = 0; fp->_lb._base = NULL; /* no line buffer */ fp->_lb._size = 0; return fp; } /* * exit() calls _cleanup() through *__cleanup, set whenever we * open or buffer a file. This chicanery is done so that programs * that do not use stdio need not link it all in. * * The name `_cleanup' is, alas, fairly well known outside stdio. */ void _cleanup_r (struct _reent *ptr) { int (*cleanup_func) (struct _reent *, FILE *); #ifdef _STDIO_BSD_SEMANTICS /* BSD and Glibc systems only flush streams which have been written to at exit time. Calling flush rather than close for speed, as on the aforementioned systems. */ cleanup_func = __sflushw_r; #else /* Otherwise close files and flush read streams, too. Note we call flush directly if "--enable-lite-exit" is in effect. */ #ifdef _LITE_EXIT cleanup_func = _fflush_r; #else cleanup_func = _fclose_r; #endif #endif #ifdef _REENT_GLOBAL_STDIO_STREAMS if (ptr->_stdin != &__sf[0]) (*cleanup_func) (ptr, ptr->_stdin); if (ptr->_stdout != &__sf[1]) (*cleanup_func) (ptr, ptr->_stdout); if (ptr->_stderr != &__sf[2]) (*cleanup_func) (ptr, ptr->_stderr); #endif (void) _fwalk_reent (ptr, cleanup_func); } #ifndef _REENT_ONLY void _cleanup (void) { _cleanup_r (_GLOBAL_REENT); } #endif /* * __sinit() is called whenever stdio's internal variables must be set up. */ void __sinit (struct _reent *s) { __sinit_lock_acquire (); if (s->__sdidinit) { __sinit_lock_release (); return; } /* make sure we clean up on exit */ s->__cleanup = _cleanup_r; /* conservative */ s->__sglue._next = NULL; #ifndef _REENT_SMALL # ifndef _REENT_GLOBAL_STDIO_STREAMS s->__sglue._niobs = 3; s->__sglue._iobs = &s->__sf[0]; # endif /* _REENT_GLOBAL_STDIO_STREAMS */ #else s->__sglue._niobs = 0; s->__sglue._iobs = NULL; /* Avoid infinite recursion when calling __sfp for _GLOBAL_REENT. The problem is that __sfp checks for _GLOBAL_REENT->__sdidinit and calls __sinit if it's 0. */ if (s == _GLOBAL_REENT) s->__sdidinit = 1; # ifndef _REENT_GLOBAL_STDIO_STREAMS s->_stdin = __sfp(s); s->_stdout = __sfp(s); s->_stderr = __sfp(s); # else /* _REENT_GLOBAL_STDIO_STREAMS */ s->_stdin = &__sf[0]; s->_stdout = &__sf[1]; s->_stderr = &__sf[2]; # endif /* _REENT_GLOBAL_STDIO_STREAMS */ #endif #ifdef _REENT_GLOBAL_STDIO_STREAMS if (__sf[0]._cookie == NULL) { _GLOBAL_REENT->__sglue._niobs = 3; _GLOBAL_REENT->__sglue._iobs = &__sf[0]; stdin_init (&__sf[0]); stdout_init (&__sf[1]); stderr_init (&__sf[2]); } #else /* _REENT_GLOBAL_STDIO_STREAMS */ stdin_init (s->_stdin); stdout_init (s->_stdout); stderr_init (s->_stderr); #endif /* _REENT_GLOBAL_STDIO_STREAMS */ s->__sdidinit = 1; __sinit_lock_release (); } #ifndef __SINGLE_THREAD__ /* Walkable file locking routine. */ static int __fp_lock (FILE * ptr) { if (!(ptr->_flags2 & __SNLK)) _flockfile (ptr); return 0; } /* Walkable file unlocking routine. */ static int __fp_unlock (FILE * ptr) { if (!(ptr->_flags2 & __SNLK)) _funlockfile (ptr); return 0; } void __fp_lock_all (void) { __sfp_lock_acquire (); (void) _fwalk (_REENT, __fp_lock); } void __fp_unlock_all (void) { (void) _fwalk (_REENT, __fp_unlock); __sfp_lock_release (); } #endif picolibc-1.7.4/newlib/libc/stdio/fiprintf.c000066400000000000000000000025041414576234500206230ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* doc in siprintf.c */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include int _fiprintf_r (struct _reent *ptr, FILE * fp, const char *fmt, ...) { int ret; va_list ap; va_start (ap, fmt); ret = _vfiprintf_r (ptr, fp, fmt, ap); va_end (ap); return ret; } #ifndef _REENT_ONLY int fiprintf (FILE * fp, const char *fmt, ...) { int ret; va_list ap; va_start (ap, fmt); ret = _vfiprintf_r (_REENT, fp, fmt, ap); va_end (ap); return ret; } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/fiscanf.c000066400000000000000000000024501414576234500204130ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" #ifndef _REENT_ONLY int fiscanf(FILE *fp, const char *fmt, ...) { int ret; va_list ap; va_start (ap, fmt); ret = __svfiscanf_r (_REENT, fp, fmt, ap); va_end (ap); return ret; } #endif /* !_REENT_ONLY */ int _fiscanf_r(struct _reent *ptr, FILE *fp, const char *fmt, ...) { int ret; va_list ap; va_start (ap, fmt); ret = __svfiscanf_r (ptr, fp, fmt, ap); va_end (ap); return (ret); } picolibc-1.7.4/newlib/libc/stdio/flags.c000066400000000000000000000042201414576234500200730ustar00rootroot00000000000000/* * Copyright (c) 1990 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* No user fns here. Pesch 15apr92 */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include /* * Return the (stdio) flags for a given mode. Store the flags * to be passed to an open() syscall through *optr. * Return 0 on error. */ int __sflags (struct _reent *ptr, register char *mode, int *optr) { register int ret, m, o; (void) ptr; switch (mode[0]) { case 'r': /* open for reading */ ret = __SRD; m = O_RDONLY; o = 0; break; case 'w': /* open for writing */ ret = __SWR; m = O_WRONLY; o = O_CREAT | O_TRUNC; break; case 'a': /* open for appending */ ret = __SWR | __SAPP; m = O_WRONLY; o = O_CREAT | O_APPEND; break; default: /* illegal mode */ __errno_r(ptr) = EINVAL; return (0); } while (*++mode) { switch (*mode) { case '+': ret = (ret & ~(__SRD | __SWR)) | __SRW; m = (m & ~O_ACCMODE) | O_RDWR; break; case 'b': #ifdef O_BINARY m |= O_BINARY; #endif break; #ifdef __CYGWIN__ case 't': m |= O_TEXT; break; #endif #if defined (O_CLOEXEC) && defined (_GLIBC_EXTENSION) case 'e': m |= O_CLOEXEC; break; #endif case 'x': m |= O_EXCL; break; default: break; } } *optr = m | o; return ret; } picolibc-1.7.4/newlib/libc/stdio/floatio.h000066400000000000000000000023521414576234500204450ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * %W% (Berkeley) %G% */ /* * Floating point scanf/printf (input/output) definitions. */ #ifdef _NO_LONGDBL /* 11-bit exponent (VAX G floating point) is 308 decimal digits */ #define MAXEXP 308 #else /* !_NO_LONGDBL */ /* 15-bit exponent (Intel extended floating point) is 4932 decimal digits */ #define MAXEXP 4932 #endif /* !_NO_LONGDBL */ /* 128 bit fraction takes up 39 decimal digits; max reasonable precision */ #define MAXFRACT 39 picolibc-1.7.4/newlib/libc/stdio/fmemopen.c000066400000000000000000000237761414576234500206260ustar00rootroot00000000000000/* Copyright (C) 2007 Eric Blake * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ /* FUNCTION <>---open a stream around a fixed-length string INDEX fmemopen SYNOPSIS #include FILE *fmemopen(void *restrict <[buf]>, size_t <[size]>, const char *restrict <[mode]>); DESCRIPTION <> creates a seekable <> stream that wraps a fixed-length buffer of <[size]> bytes starting at <[buf]>. The stream is opened with <[mode]> treated as in <>, where append mode starts writing at the first NUL byte. If <[buf]> is NULL, then <[size]> bytes are automatically provided as if by <>, with the initial size of 0, and <[mode]> must contain <<+>> so that data can be read after it is written. The stream maintains a current position, which moves according to bytes read or written, and which can be one past the end of the array. The stream also maintains a current file size, which is never greater than <[size]>. If <[mode]> starts with <>, the position starts at <<0>>, and file size starts at <[size]> if <[buf]> was provided. If <[mode]> starts with <>, the position and file size start at <<0>>, and if <[buf]> was provided, the first byte is set to NUL. If <[mode]> starts with <>, the position and file size start at the location of the first NUL byte, or else <[size]> if <[buf]> was provided. When reading, NUL bytes have no significance, and reads cannot exceed the current file size. When writing, the file size can increase up to <[size]> as needed, and NUL bytes may be embedded in the stream (see <> for an alternative that automatically enlarges the buffer). When the stream is flushed or closed after a write that changed the file size, a NUL byte is written at the current position if there is still room; if the stream is not also open for reading, a NUL byte is additionally written at the last byte of <[buf]> when the stream has exceeded <[size]>, so that a write-only <[buf]> is always NUL-terminated when the stream is flushed or closed (and the initial <[size]> should take this into account). It is not possible to seek outside the bounds of <[size]>. A NUL byte written during a flush is restored to its previous value when seeking elsewhere in the string. RETURNS The return value is an open FILE pointer on success. On error, <> is returned, and <> will be set to EINVAL if <[size]> is zero or <[mode]> is invalid, ENOMEM if <[buf]> was NULL and memory could not be allocated, or EMFILE if too many streams are already open. PORTABILITY This function is being added to POSIX 200x, but is not in POSIX 2001. Supporting OS subroutines required: <>. */ #define _DEFAULT_SOURCE #include #include #include #include #include "local.h" /* Describe details of an open memstream. */ typedef struct fmemcookie { void *storage; /* storage to free on close */ char *buf; /* buffer start */ size_t pos; /* current position */ size_t eof; /* current file size */ size_t max; /* maximum file size */ char append; /* nonzero if appending */ char writeonly; /* 1 if write-only */ char saved; /* saved character that lived at pos before write-only NUL */ } fmemcookie; /* Read up to non-zero N bytes into BUF from stream described by COOKIE; return number of bytes read (0 on EOF). */ static _READ_WRITE_RETURN_TYPE fmemreader (struct _reent *ptr, void *cookie, char *buf, _READ_WRITE_BUFSIZE_TYPE n) { fmemcookie *c = (fmemcookie *) cookie; /* Can't read beyond current size, but EOF condition is not an error. */ if (c->pos > c->eof) return 0; if (n >= c->eof - c->pos) n = c->eof - c->pos; memcpy (buf, c->buf + c->pos, n); c->pos += n; return n; } /* Write up to non-zero N bytes of BUF into the stream described by COOKIE, returning the number of bytes written or EOF on failure. */ static _READ_WRITE_RETURN_TYPE fmemwriter (struct _reent *ptr, void *cookie, const char *buf, _READ_WRITE_BUFSIZE_TYPE n) { fmemcookie *c = (fmemcookie *) cookie; int adjust = 0; /* true if at EOF, but still need to write NUL. */ /* Append always seeks to eof; otherwise, if we have previously done a seek beyond eof, ensure all intermediate bytes are NUL. */ if (c->append) c->pos = c->eof; else if (c->pos > c->eof) memset (c->buf + c->eof, '\0', c->pos - c->eof); /* Do not write beyond EOF; saving room for NUL on write-only stream. */ if (c->pos + n > c->max - c->writeonly) { adjust = c->writeonly; n = c->max - c->pos; } /* Now n is the number of bytes being modified, and adjust is 1 if the last byte is NUL instead of from buf. Write a NUL if write-only; or if read-write, eof changed, and there is still room. When we are within the file contents, remember what we overwrite so we can restore it if we seek elsewhere later. */ if (c->pos + n > c->eof) { c->eof = c->pos + n; if (c->eof - adjust < c->max) c->saved = c->buf[c->eof - adjust] = '\0'; } else if (c->writeonly) { if (n) { c->saved = c->buf[c->pos + n - adjust]; c->buf[c->pos + n - adjust] = '\0'; } else adjust = 0; } c->pos += n; if (n - adjust) memcpy (c->buf + c->pos - n, buf, n - adjust); else { __errno_r(ptr) = ENOSPC; return EOF; } return n; } /* Seek to position POS relative to WHENCE within stream described by COOKIE; return resulting position or fail with EOF. */ static _fpos_t fmemseeker (struct _reent *ptr, void *cookie, _fpos_t pos, int whence) { fmemcookie *c = (fmemcookie *) cookie; #ifndef __LARGE64_FILES off_t offset = (off_t) pos; #else /* __LARGE64_FILES */ _off64_t offset = (_off64_t) pos; #endif /* __LARGE64_FILES */ if (whence == SEEK_CUR) offset += c->pos; else if (whence == SEEK_END) offset += c->eof; if (offset < 0) { __errno_r(ptr) = EINVAL; offset = -1; } else if (offset > c->max) { __errno_r(ptr) = ENOSPC; offset = -1; } #ifdef __LARGE64_FILES else if ((_fpos_t) offset != offset) { __errno_r(ptr) = EOVERFLOW; offset = -1; } #endif /* __LARGE64_FILES */ else { if (c->writeonly && c->pos < c->eof) { c->buf[c->pos] = c->saved; c->saved = '\0'; } c->pos = offset; if (c->writeonly && c->pos < c->eof) { c->saved = c->buf[c->pos]; c->buf[c->pos] = '\0'; } } return (_fpos_t) offset; } /* Seek to position POS relative to WHENCE within stream described by COOKIE; return resulting position or fail with EOF. */ #ifdef __LARGE64_FILES static _fpos64_t fmemseeker64 (struct _reent *ptr, void *cookie, _fpos64_t pos, int whence) { _off64_t offset = (_off64_t) pos; fmemcookie *c = (fmemcookie *) cookie; if (whence == SEEK_CUR) offset += c->pos; else if (whence == SEEK_END) offset += c->eof; if (offset < 0) { __errno_r(ptr) = EINVAL; offset = -1; } else if (offset > c->max) { __errno_r(ptr) = ENOSPC; offset = -1; } else { if (c->writeonly && c->pos < c->eof) { c->buf[c->pos] = c->saved; c->saved = '\0'; } c->pos = offset; if (c->writeonly && c->pos < c->eof) { c->saved = c->buf[c->pos]; c->buf[c->pos] = '\0'; } } return (_fpos64_t) offset; } #endif /* __LARGE64_FILES */ /* Reclaim resources used by stream described by COOKIE. */ static int fmemcloser (struct _reent *ptr, void *cookie) { fmemcookie *c = (fmemcookie *) cookie; free (c->storage); return 0; } /* Open a memstream around buffer BUF of SIZE bytes, using MODE. Return the new stream, or fail with NULL. */ FILE * _fmemopen_r (struct _reent *ptr, void *__restrict buf, size_t size, const char *__restrict mode) { FILE *fp; fmemcookie *c; int flags; int dummy; if ((flags = __sflags (ptr, mode, &dummy)) == 0) return NULL; if (!size || !(buf || flags & __SRW)) { __errno_r(ptr) = EINVAL; return NULL; } if ((fp = __sfp (ptr)) == NULL) return NULL; if ((c = (fmemcookie *) malloc (sizeof *c + (buf ? 0 : size))) == NULL) { _newlib_sfp_lock_start (); fp->_flags = 0; /* release */ #ifndef __SINGLE_THREAD__ __lock_close_recursive (fp->_lock); #endif _newlib_sfp_lock_end (); return NULL; } c->storage = c; c->max = size; /* 9 modes to worry about. */ /* w/a, buf or no buf: Guarantee a NUL after any file writes. */ c->writeonly = (flags & __SWR) != 0; c->saved = '\0'; if (!buf) { /* r+/w+/a+, and no buf: file starts empty. */ c->buf = (char *) (c + 1); c->buf[0] = '\0'; c->pos = c->eof = 0; c->append = (flags & __SAPP) != 0; } else { c->buf = (char *) buf; switch (*mode) { case 'a': /* a/a+ and buf: position and size at first NUL. */ buf = memchr (c->buf, '\0', size); c->eof = c->pos = buf ? (char *) buf - c->buf : size; if (!buf && c->writeonly) /* a: guarantee a NUL within size even if no writes. */ c->buf[size - 1] = '\0'; c->append = 1; break; case 'r': /* r/r+ and buf: read at beginning, full size available. */ c->pos = c->append = 0; c->eof = size; break; case 'w': /* w/w+ and buf: write at beginning, truncate to empty. */ c->pos = c->append = c->eof = 0; *c->buf = '\0'; break; default: abort (); } } _newlib_flockfile_start (fp); fp->_file = -1; fp->_flags = flags; fp->_cookie = c; fp->_read = flags & (__SRD | __SRW) ? fmemreader : NULL; fp->_write = flags & (__SWR | __SRW) ? fmemwriter : NULL; fp->_seek = fmemseeker; #ifdef __LARGE64_FILES fp->_seek64 = fmemseeker64; fp->_flags |= __SL64; #endif fp->_close = fmemcloser; _newlib_flockfile_end (fp); return fp; } #ifndef _REENT_ONLY FILE * fmemopen (void *__restrict buf, size_t size, const char *__restrict mode) { return _fmemopen_r (_REENT, buf, size, mode); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/fopen.c000066400000000000000000000122071414576234500201120ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---open a file INDEX fopen INDEX _fopen_r SYNOPSIS #include FILE *fopen(const char *<[file]>, const char *<[mode]>); FILE *_fopen_r(struct _reent *<[reent]>, const char *<[file]>, const char *<[mode]>); DESCRIPTION <> initializes the data structures needed to read or write a file. Specify the file's name as the string at <[file]>, and the kind of access you need to the file with the string at <[mode]>. The alternate function <<_fopen_r>> is a reentrant version. The extra argument <[reent]> is a pointer to a reentrancy structure. Three fundamental kinds of access are available: read, write, and append. <<*<[mode]>>> must begin with one of the three characters `<>', `<>', or `<>', to select one of these: o+ o r Open the file for reading; the operation will fail if the file does not exist, or if the host system does not permit you to read it. o w Open the file for writing @emph{from the beginning} of the file: effectively, this always creates a new file. If the file whose name you specified already existed, its old contents are discarded. o a Open the file for appending data, that is writing from the end of file. When you open a file this way, all data always goes to the current end of file; you cannot change this using <>. o- Some host systems distinguish between ``binary'' and ``text'' files. Such systems may perform data transformations on data written to, or read from, files opened as ``text''. If your system is one of these, then you can append a `<>' to any of the three modes above, to specify that you are opening the file as a binary file (the default is to open the file as a text file). `<>', then, means ``read binary''; `<>', ``write binary''; and `<>', ``append binary''. To make C programs more portable, the `<>' is accepted on all systems, whether or not it makes a difference. Finally, you might need to both read and write from the same file. You can also append a `<<+>>' to any of the three modes, to permit this. (If you want to append both `<>' and `<<+>>', you can do it in either order: for example, <<"rb+">> means the same thing as <<"r+b">> when used as a mode string.) Use <<"r+">> (or <<"rb+">>) to permit reading and writing anywhere in an existing file, without discarding any data; <<"w+">> (or <<"wb+">>) to create a new file (or begin by discarding all data from an old one) that permits reading and writing anywhere in it; and <<"a+">> (or <<"ab+">>) to permit reading anywhere in an existing file, but writing only at the end. RETURNS <> returns a file pointer which you can use for other file operations, unless the file you requested could not be opened; in that situation, the result is <>. If the reason for failure was an invalid string at <[mode]>, <> is set to <>. PORTABILITY <> is required by ANSI C. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>, <>. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include #include #include #include "local.h" FILE * _fopen_r (struct _reent *ptr, const char *__restrict file, const char *__restrict mode) { register FILE *fp; register int f; int flags, oflags; if ((flags = __sflags (ptr, mode, &oflags)) == 0) return NULL; if ((fp = __sfp (ptr)) == NULL) return NULL; if ((f = open (file, oflags, 0666)) < 0) { _newlib_sfp_lock_start (); fp->_flags = 0; /* release */ #ifndef __SINGLE_THREAD__ __lock_close_recursive (fp->_lock); #endif _newlib_sfp_lock_end (); return NULL; } _newlib_flockfile_start (fp); fp->_file = f; fp->_flags = flags; fp->_cookie = (void *) fp; fp->_read = __sread; fp->_write = __swrite; fp->_seek = __sseek; fp->_close = __sclose; if (fp->_flags & __SAPP) _fseek_r (ptr, fp, 0, SEEK_END); #ifdef __SCLE if (__stextmode (fp->_file)) fp->_flags |= __SCLE; #endif _newlib_flockfile_end (fp); return fp; } #ifndef _REENT_ONLY FILE * fopen (const char *file, const char *mode) { return _fopen_r (_REENT, file, mode); } #endif picolibc-1.7.4/newlib/libc/stdio/fopencookie.c000066400000000000000000000155001414576234500213030ustar00rootroot00000000000000/* Copyright (C) 2007 Eric Blake * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ /* FUNCTION <>---open a stream with custom callbacks INDEX fopencookie SYNOPSIS #include FILE *fopencookie(const void *<[cookie]>, const char *<[mode]>, cookie_io_functions_t <[functions]>); DESCRIPTION <> creates a <> stream where I/O is performed using custom callbacks. The callbacks are registered via the structure: typedef ssize_t (*cookie_read_function_t)(void *_cookie, char *_buf, size_t _n); typedef ssize_t (*cookie_write_function_t)(void *_cookie, const char *_buf, size_t _n); typedef int (*cookie_seek_function_t)(void *_cookie, off_t *_off, int _whence); typedef int (*cookie_close_function_t)(void *_cookie); . typedef struct . { . cookie_read_function_t *read; . cookie_write_function_t *write; . cookie_seek_function_t *seek; . cookie_close_function_t *close; . } cookie_io_functions_t; The stream is opened with <[mode]> treated as in <>. The callbacks <[functions.read]> and <[functions.write]> may only be NULL when <[mode]> does not require them. <[functions.read]> should return -1 on failure, or else the number of bytes read (0 on EOF). It is similar to <>, except that <[cookie]> will be passed as the first argument. <[functions.write]> should return -1 on failure, or else the number of bytes written. It is similar to <>, except that <[cookie]> will be passed as the first argument. <[functions.seek]> should return -1 on failure, and 0 on success, with *<[_off]> set to the current file position. It is a cross between <> and <>, with the <[_whence]> argument interpreted in the same manner. A NULL <[functions.seek]> makes the stream behave similarly to a pipe in relation to stdio functions that require positioning. <[functions.close]> should return -1 on failure, or 0 on success. It is similar to <>, except that <[cookie]> will be passed as the first argument. A NULL <[functions.close]> merely flushes all data then lets <> succeed. A failed close will still invalidate the stream. Read and write I/O functions are allowed to change the underlying buffer on fully buffered or line buffered streams by calling <>. They are also not required to completely fill or empty the buffer. They are not, however, allowed to change streams from unbuffered to buffered or to change the state of the line buffering flag. They must also be prepared to have read or write calls occur on buffers other than the one most recently specified. RETURNS The return value is an open FILE pointer on success. On error, <> is returned, and <> will be set to EINVAL if a function pointer is missing or <[mode]> is invalid, ENOMEM if the stream cannot be created, or EMFILE if too many streams are already open. PORTABILITY This function is a newlib extension, copying the prototype from Linux. It is not portable. See also the <> interface from BSD. Supporting OS subroutines required: <>. */ #define _GNU_SOURCE #include #include #include #include "local.h" typedef struct fccookie { void *cookie; FILE *fp; cookie_read_function_t *readfn; cookie_write_function_t *writefn; cookie_seek_function_t *seekfn; cookie_close_function_t *closefn; } fccookie; static _READ_WRITE_RETURN_TYPE fcreader (struct _reent *ptr, void *cookie, char *buf, _READ_WRITE_BUFSIZE_TYPE n) { int result; fccookie *c = (fccookie *) cookie; errno = 0; if ((result = c->readfn (c->cookie, buf, n)) < 0 && errno) __errno_r(ptr) = errno; return result; } static _READ_WRITE_RETURN_TYPE fcwriter (struct _reent *ptr, void *cookie, const char *buf, _READ_WRITE_BUFSIZE_TYPE n) { int result; fccookie *c = (fccookie *) cookie; if (c->fp->_flags & __SAPP && c->fp->_seek) { #ifdef __LARGE64_FILES c->fp->_seek64 (ptr, cookie, 0, SEEK_END); #else c->fp->_seek (ptr, cookie, 0, SEEK_END); #endif } errno = 0; if ((result = c->writefn (c->cookie, buf, n)) < 0 && errno) __errno_r(ptr) = errno; return result; } static _fpos_t fcseeker (struct _reent *ptr, void *cookie, _fpos_t pos, int whence) { fccookie *c = (fccookie *) cookie; #ifndef __LARGE64_FILES off_t offset = (off_t) pos; #else /* __LARGE64_FILES */ _off64_t offset = (_off64_t) pos; #endif /* __LARGE64_FILES */ errno = 0; if (c->seekfn (c->cookie, &offset, whence) < 0 && errno) __errno_r(ptr) = errno; #ifdef __LARGE64_FILES else if ((_fpos_t)offset != offset) { __errno_r(ptr) = EOVERFLOW; offset = -1; } #endif /* __LARGE64_FILES */ return (_fpos_t) offset; } #ifdef __LARGE64_FILES static _fpos64_t fcseeker64 (struct _reent *ptr, void *cookie, _fpos64_t pos, int whence) { _off64_t offset; fccookie *c = (fccookie *) cookie; errno = 0; if (c->seekfn (c->cookie, &offset, whence) < 0 && errno) __errno_r(ptr) = errno; return (_fpos64_t) offset; } #endif /* __LARGE64_FILES */ static int fccloser (struct _reent *ptr, void *cookie) { int result = 0; fccookie *c = (fccookie *) cookie; if (c->closefn) { errno = 0; if ((result = c->closefn (c->cookie)) < 0 && errno) __errno_r(ptr) = errno; } free (c); return result; } FILE * _fopencookie_r (struct _reent *ptr, void *cookie, const char *mode, cookie_io_functions_t functions) { FILE *fp; fccookie *c; int flags; int dummy; if ((flags = __sflags (ptr, mode, &dummy)) == 0) return NULL; if (((flags & (__SRD | __SRW)) && !functions.read) || ((flags & (__SWR | __SRW)) && !functions.write)) { __errno_r(ptr) = EINVAL; return NULL; } if ((fp = __sfp (ptr)) == NULL) return NULL; if ((c = (fccookie *) malloc (sizeof *c)) == NULL) { _newlib_sfp_lock_start (); fp->_flags = 0; /* release */ #ifndef __SINGLE_THREAD__ __lock_close_recursive (fp->_lock); #endif _newlib_sfp_lock_end (); return NULL; } _newlib_flockfile_start (fp); fp->_file = -1; fp->_flags = flags; c->cookie = cookie; c->fp = fp; fp->_cookie = c; c->readfn = functions.read; fp->_read = fcreader; c->writefn = functions.write; fp->_write = fcwriter; c->seekfn = functions.seek; fp->_seek = functions.seek ? fcseeker : NULL; #ifdef __LARGE64_FILES fp->_seek64 = functions.seek ? fcseeker64 : NULL; fp->_flags |= __SL64; #endif c->closefn = functions.close; fp->_close = fccloser; _newlib_flockfile_end (fp); return fp; } #ifndef _REENT_ONLY FILE * fopencookie (void *cookie, const char *mode, cookie_io_functions_t functions) { return _fopencookie_r (_REENT, cookie, mode, functions); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/fprintf.c000066400000000000000000000031551414576234500204550ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* doc in sprintf.c */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include int _fprintf_r (struct _reent *ptr, FILE *__restrict fp, const char *__restrict fmt, ...) { int ret; va_list ap; va_start (ap, fmt); ret = _vfprintf_r (ptr, fp, fmt, ap); va_end (ap); return ret; } #ifdef _NANO_FORMATTED_IO int _fiprintf_r (struct _reent *, FILE *, const char *, ...) _ATTRIBUTE ((__alias__("_fprintf_r"))); #endif #ifndef _REENT_ONLY int fprintf (FILE *__restrict fp, const char *__restrict fmt, ...) { int ret; va_list ap; va_start (ap, fmt); ret = _vfprintf_r (_REENT, fp, fmt, ap); va_end (ap); return ret; } #ifdef _NANO_FORMATTED_IO int fiprintf (FILE *, const char *, ...) _ATTRIBUTE ((__alias__("fprintf"))); #endif #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/fpurge.c000066400000000000000000000042231414576234500202720ustar00rootroot00000000000000/* Copyright (C) 2009 Eric Blake * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ /* FUNCTION <>---discard pending file I/O INDEX fpurge INDEX _fpurge_r INDEX __fpurge SYNOPSIS #include int fpurge(FILE *<[fp]>); int _fpurge_r(struct _reent *<[reent]>, FILE *<[fp]>); #include #include void __fpurge(FILE *<[fp]>); DESCRIPTION Use <> to clear all buffers of the given stream. For output streams, this discards data not yet written to disk. For input streams, this discards any data from <> and any data retrieved from disk but not yet read via <>. This is more severe than <>, and generally is only needed when manually altering the underlying file descriptor of a stream. <<__fpurge>> behaves exactly like <> but does not return a value. The alternate function <<_fpurge_r>> is a reentrant version, where the extra argument <[reent]> is a pointer to a reentrancy structure, and <[fp]> must not be NULL. RETURNS <> returns <<0>> unless <[fp]> is not valid, in which case it returns <> and sets <>. PORTABILITY These functions are not portable to any standard. No supporting OS subroutines are required. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #ifndef __rtems__ #include #endif #include #include "local.h" /* Discard I/O from a single file. */ int _fpurge_r (struct _reent *ptr, register FILE * fp) { int t; CHECK_INIT (ptr, fp); _newlib_flockfile_start (fp); t = fp->_flags; if (!t) { __errno_r(ptr) = EBADF; _newlib_flockfile_exit (fp); return EOF; } fp->_p = fp->_bf._base; if ((t & __SWR) == 0) { fp->_r = 0; if (HASUB (fp)) FREEUB (ptr, fp); } else fp->_w = t & (__SLBF | __SNBF) ? 0 : fp->_bf._size; _newlib_flockfile_end (fp); return 0; } #ifndef _REENT_ONLY int fpurge (register FILE * fp) { return _fpurge_r (_REENT, fp); } #ifndef __rtems__ void __fpurge (register FILE * fp) { _fpurge_r (_REENT, fp); } #endif #endif /* _REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/fputc.c000066400000000000000000000067501414576234500201320ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>, <>---write a character on a stream or file INDEX fputc INDEX fputc_unlocked INDEX _fputc_r INDEX _fputc_unlocked_r SYNOPSIS #include int fputc(int <[ch]>, FILE *<[fp]>); #define _BSD_SOURCE #include int fputc_unlocked(int <[ch]>, FILE *<[fp]>); #include int _fputc_r(struct _rent *<[ptr]>, int <[ch]>, FILE *<[fp]>); #include int _fputc_unlocked_r(struct _rent *<[ptr]>, int <[ch]>, FILE *<[fp]>); DESCRIPTION <> converts the argument <[ch]> from an <> to an <>, then writes it to the file or stream identified by <[fp]>. If the file was opened with append mode (or if the stream cannot support positioning), then the new character goes at the end of the file or stream. Otherwise, the new character is written at the current value of the position indicator, and the position indicator oadvances by one. For a macro version of this function, see <>. <> is a non-thread-safe version of <>. <> may only safely be used within a scope protected by flockfile() (or ftrylockfile()) and funlockfile(). This function may safely be used in a multi-threaded program if and only if they are called while the invoking thread owns the (FILE *) object, as is the case after a successful call to the flockfile() or ftrylockfile() functions. If threads are disabled, then <> is equivalent to <>. The <<_fputc_r>> and <<_fputc_unlocked_r>> functions are simply reentrant versions of the above that take an additional reentrant structure argument: <[ptr]>. RETURNS If successful, <> returns its argument <[ch]>. If an error intervenes, the result is <>. You can use `<)>>' to query for errors. PORTABILITY <> is required by ANSI C. <> is a BSD extension also provided by GNU libc. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include "local.h" int _fputc_r (struct _reent *ptr, int ch, FILE * file) { int result; CHECK_INIT(ptr, file); _newlib_flockfile_start (file); result = _putc_r (ptr, ch, file); _newlib_flockfile_end (file); return result; } #ifndef _REENT_ONLY int fputc (int ch, FILE * file) { #if !defined(__OPTIMIZE_SIZE__) && !defined(PREFER_SIZE_OVER_SPEED) int result; struct _reent *reent = _REENT; CHECK_INIT(reent, file); _newlib_flockfile_start (file); result = _putc_r (reent, ch, file); _newlib_flockfile_end (file); return result; #else return _fputc_r (_REENT, ch, file); #endif } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/fputc_u.c000066400000000000000000000036001414576234500204450ustar00rootroot00000000000000/* * Copyright (c) 2014 Red Hat, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include "local.h" int _fputc_unlocked_r (struct _reent *ptr, int ch, FILE * file) { CHECK_INIT(ptr, file); return _putc_unlocked_r (ptr, ch, file); } #ifndef _REENT_ONLY int fputc_unlocked (int ch, FILE * file) { #if !defined(__OPTIMIZE_SIZE__) && !defined(PREFER_SIZE_OVER_SPEED) struct _reent *reent = _REENT; CHECK_INIT(reent, file); return _putc_unlocked_r (reent, ch, file); #else return _fputc_unlocked_r (_REENT, ch, file); #endif } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/fputs.c000066400000000000000000000073321414576234500201470ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>, <>---write a character string in a file or stream INDEX fputs INDEX fputs_unlocked INDEX _fputs_r INDEX _fputs_unlocked_r SYNOPSIS #include int fputs(const char *restrict <[s]>, FILE *restrict <[fp]>); #define _GNU_SOURCE #include int fputs_unlocked(const char *restrict <[s]>, FILE *restrict <[fp]>); #include int _fputs_r(struct _reent *<[ptr]>, const char *restrict <[s]>, FILE *restrict <[fp]>); #include int _fputs_unlocked_r(struct _reent *<[ptr]>, const char *restrict <[s]>, FILE *restrict <[fp]>); DESCRIPTION <> writes the string at <[s]> (but without the trailing null) to the file or stream identified by <[fp]>. <> is a non-thread-safe version of <>. <> may only safely be used within a scope protected by flockfile() (or ftrylockfile()) and funlockfile(). This function may safely be used in a multi-threaded program if and only if they are called while the invoking thread owns the (FILE *) object, as is the case after a successful call to the flockfile() or ftrylockfile() functions. If threads are disabled, then <> is equivalent to <>. <<_fputs_r>> and <<_fputs_unlocked_r>> are simply reentrant versions of the above that take an additional reentrant struct pointer argument: <[ptr]>. RETURNS If successful, the result is <<0>>; otherwise, the result is <>. PORTABILITY ANSI C requires <>, but does not specify that the result on success must be <<0>>; any non-negative value is permitted. <> is a GNU extension. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "fvwrite.h" #include "local.h" #ifdef __IMPL_UNLOCKED__ #define _fputs_r _fputs_unlocked_r #define fputs fputs_unlocked #endif /* * Write the given string to the given file. */ int _fputs_r (struct _reent * ptr, char const *__restrict s, FILE *__restrict fp) { #ifdef _FVWRITE_IN_STREAMIO int result; struct __suio uio; struct __siov iov; iov.iov_base = s; iov.iov_len = uio.uio_resid = strlen (s); uio.uio_iov = &iov; uio.uio_iovcnt = 1; CHECK_INIT(ptr, fp); _newlib_flockfile_start (fp); ORIENT (fp, -1); result = __sfvwrite_r (ptr, fp, &uio); _newlib_flockfile_end (fp); return result; #else const char *p = s; CHECK_INIT(ptr, fp); _newlib_flockfile_start (fp); ORIENT (fp, -1); /* Make sure we can write. */ if (cantwrite (ptr, fp)) goto error; while (*p) { if (__sputc_r (ptr, *p++, fp) == EOF) goto error; } _newlib_flockfile_exit (fp); return 0; error: _newlib_flockfile_end (fp); return EOF; #endif } #ifndef _REENT_ONLY int fputs (char const *__restrict s, FILE *__restrict fp) { return _fputs_r (_REENT, s, fp); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/fputs_u.c000066400000000000000000000025701414576234500204720ustar00rootroot00000000000000/* * Copyright (c) 2014 Red Hat, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define __IMPL_UNLOCKED__ #include "fputs.c" picolibc-1.7.4/newlib/libc/stdio/fputwc.c000066400000000000000000000123341414576234500203140ustar00rootroot00000000000000/*- * Copyright (c) 2002-2004 Tim J. Robbins. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* FUNCTION <>, <>, <>, <>---write a wide character on a stream or file INDEX fputwc INDEX fputwc_unlocked INDEX _fputwc_r INDEX _fputwc_unlocked_r INDEX putwc INDEX putwc_unlocked INDEX _putwc_r INDEX _putwc_unlocked_r SYNOPSIS #include #include wint_t fputwc(wchar_t <[wc]>, FILE *<[fp]>); #define _GNU_SOURCE #include #include wint_t fputwc_unlocked(wchar_t <[wc]>, FILE *<[fp]>); #include #include wint_t _fputwc_r(struct _reent *<[ptr]>, wchar_t <[wc]>, FILE *<[fp]>); #include #include wint_t _fputwc_unlocked_r(struct _reent *<[ptr]>, wchar_t <[wc]>, FILE *<[fp]>); #include #include wint_t putwc(wchar_t <[wc]>, FILE *<[fp]>); #define _GNU_SOURCE #include #include wint_t putwc_unlocked(wchar_t <[wc]>, FILE *<[fp]>); #include #include wint_t _putwc_r(struct _reent *<[ptr]>, wchar_t <[wc]>, FILE *<[fp]>); #include #include wint_t _putwc_unlocked_r(struct _reent *<[ptr]>, wchar_t <[wc]>, FILE *<[fp]>); DESCRIPTION <> writes the wide character argument <[wc]> to the file or stream identified by <[fp]>. If the file was opened with append mode (or if the stream cannot support positioning), then the new wide character goes at the end of the file or stream. Otherwise, the new wide character is written at the current value of the position indicator, and the position indicator oadvances by one. <> is a non-thread-safe version of <>. <> may only safely be used within a scope protected by flockfile() (or ftrylockfile()) and funlockfile(). This function may safely be used in a multi-threaded program if and only if they are called while the invoking thread owns the (FILE *) object, as is the case after a successful call to the flockfile() or ftrylockfile() functions. If threads are disabled, then <> is equivalent to <>. The <> and <> functions or macros function identically to <> and <>. They may be implemented as a macro, and may evaluate its argument more than once. There is no reason ever to use them. The <<_fputwc_r>>, <<_putwc_r>>, <<_fputwc_unlocked_r>>, and <<_putwc_unlocked_r>> functions are simply reentrant versions of the above that take an additional reentrant structure argument: <[ptr]>. RETURNS If successful, <> and <> return their argument <[wc]>. If an error intervenes, the result is <>. You can use `<)>>' to query for errors. PORTABILITY <> and <> are required by C99 and POSIX.1-2001. <> and <> are GNU extensions. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include #include "local.h" wint_t __fputwc (struct _reent *ptr, wchar_t wc, FILE *fp) { char buf[MB_LEN_MAX]; size_t i, len; if (MB_CUR_MAX == 1 && wc > 0 && wc <= UCHAR_MAX) { /* * Assume single-byte locale with no special encoding. * A more careful test would be to check * _CurrentRuneLocale->encoding. */ *buf = (unsigned char)wc; len = 1; } else { if ((len = wcrtomb (buf, wc, &fp->_mbstate)) == (size_t) -1) { fp->_flags |= __SERR; return WEOF; } } for (i = 0; i < len; i++) if (__sputc_r (ptr, (unsigned char) buf[i], fp) == EOF) return WEOF; return (wint_t) wc; } wint_t _fputwc_r (struct _reent *ptr, wchar_t wc, FILE *fp) { wint_t r; _newlib_flockfile_start (fp); ORIENT(fp, 1); r = __fputwc(ptr, wc, fp); _newlib_flockfile_end (fp); return r; } wint_t fputwc (wchar_t wc, FILE *fp) { struct _reent *reent = _REENT; CHECK_INIT(reent, fp); return _fputwc_r (reent, wc, fp); } picolibc-1.7.4/newlib/libc/stdio/fputwc_u.c000066400000000000000000000033101414576234500206320ustar00rootroot00000000000000/* * Copyright (c) 2014 Red Hat, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" wint_t _fputwc_unlocked_r (struct _reent *ptr, wchar_t wc, FILE *fp) { ORIENT(fp, 1); return __fputwc(ptr, wc, fp); } wint_t fputwc_unlocked (wchar_t wc, FILE *fp) { struct _reent *reent = _REENT; CHECK_INIT(reent, fp); return _fputwc_unlocked_r (reent, wc, fp); } picolibc-1.7.4/newlib/libc/stdio/fputws.c000066400000000000000000000111011414576234500203230ustar00rootroot00000000000000/*- * Copyright (c) 2002-2004 Tim J. Robbins. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* FUNCTION <>, <>---write a wide character string in a file or stream INDEX fputws INDEX fputws_unlocked INDEX _fputws_r INDEX _fputws_unlocked_r SYNOPSIS #include int fputws(const wchar_t *__restrict <[ws]>, FILE *__restrict <[fp]>); #define _GNU_SOURCE #include int fputws_unlocked(const wchar_t *__restrict <[ws]>, FILE *__restrict <[fp]>); #include int _fputws_r(struct _reent *<[ptr]>, const wchar_t *<[ws]>, FILE *<[fp]>); #include int _fputws_unlocked_r(struct _reent *<[ptr]>, const wchar_t *<[ws]>, FILE *<[fp]>); DESCRIPTION <> writes the wide character string at <[ws]> (but without the trailing null) to the file or stream identified by <[fp]>. <> is a non-thread-safe version of <>. <> may only safely be used within a scope protected by flockfile() (or ftrylockfile()) and funlockfile(). This function may safely be used in a multi-threaded program if and only if they are called while the invoking thread owns the (FILE *) object, as is the case after a successful call to the flockfile() or ftrylockfile() functions. If threads are disabled, then <> is equivalent to <>. <<_fputws_r>> and <<_fputws_unlocked_r>> are simply reentrant versions of the above that take an additional reentrant struct pointer argument: <[ptr]>. RETURNS If successful, the result is a non-negative integer; otherwise, the result is <<-1>> to indicate an error. PORTABILITY <> is required by C99 and POSIX.1-2001. <> is a GNU extension. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include "fvwrite.h" #include "local.h" #ifdef __IMPL_UNLOCKED__ #define _fputws_r _fputws_unlocked_r #define fputws fputws_unlocked #endif int _fputws_r (struct _reent *ptr, const wchar_t *ws, FILE *fp) { size_t nbytes; char buf[BUFSIZ]; #ifdef _FVWRITE_IN_STREAMIO struct __suio uio; struct __siov iov; _newlib_flockfile_start (fp); ORIENT (fp, 1); if (cantwrite (ptr, fp) != 0) goto error; uio.uio_iov = &iov; uio.uio_iovcnt = 1; iov.iov_base = buf; do { nbytes = _wcsrtombs_r(ptr, buf, &ws, sizeof (buf), &fp->_mbstate); if (nbytes == (size_t) -1) goto error; iov.iov_len = uio.uio_resid = nbytes; if (__sfvwrite_r(ptr, fp, &uio) != 0) goto error; } while (ws != NULL); _newlib_flockfile_exit (fp); return (0); error: _newlib_flockfile_end (fp); return (-1); #else _newlib_flockfile_start (fp); ORIENT (fp, 1); if (cantwrite (ptr, fp) != 0) goto error; do { size_t i = 0; nbytes = wcsrtombs (buf, &ws, sizeof (buf), &fp->_mbstate); if (nbytes == (size_t) -1) goto error; while (i < nbytes) { if (__sputc_r (ptr, buf[i], fp) == EOF) goto error; i++; } } while (ws != NULL); _newlib_flockfile_exit (fp); return (0); error: _newlib_flockfile_end (fp); return (-1); #endif } int fputws (const wchar_t *__restrict ws, FILE *__restrict fp) { struct _reent *reent = _REENT; CHECK_INIT (reent, fp); return _fputws_r (reent, ws, fp); } picolibc-1.7.4/newlib/libc/stdio/fputws_u.c000066400000000000000000000025711414576234500206620ustar00rootroot00000000000000/* * Copyright (c) 2014 Red Hat, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define __IMPL_UNLOCKED__ #include "fputws.c" picolibc-1.7.4/newlib/libc/stdio/fread.c000066400000000000000000000152701414576234500200670ustar00rootroot00000000000000/* * Copyright (c) 1990, 2007 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>, <>---read array elements from a file INDEX fread INDEX fread_unlocked INDEX _fread_r INDEX _fread_unlocked_r SYNOPSIS #include size_t fread(void *restrict <[buf]>, size_t <[size]>, size_t <[count]>, FILE *restrict <[fp]>); #define _BSD_SOURCE #include size_t fread_unlocked(void *restrict <[buf]>, size_t <[size]>, size_t <[count]>, FILE *restrict <[fp]>); #include size_t _fread_r(struct _reent *<[ptr]>, void *restrict <[buf]>, size_t <[size]>, size_t <[count]>, FILE *restrict <[fp]>); #include size_t _fread_unlocked_r(struct _reent *<[ptr]>, void *restrict <[buf]>, size_t <[size]>, size_t <[count]>, FILE *restrict <[fp]>); DESCRIPTION <> attempts to copy, from the file or stream identified by <[fp]>, <[count]> elements (each of size <[size]>) into memory, starting at <[buf]>. <> may copy fewer elements than <[count]> if an error, or end of file, intervenes. <> also advances the file position indicator (if any) for <[fp]> by the number of @emph{characters} actually read. <> is a non-thread-safe version of <>. <> may only safely be used within a scope protected by flockfile() (or ftrylockfile()) and funlockfile(). This function may safely be used in a multi-threaded program if and only if they are called while the invoking thread owns the (FILE *) object, as is the case after a successful call to the flockfile() or ftrylockfile() functions. If threads are disabled, then <> is equivalent to <>. <<_fread_r>> and <<_fread_unlocked_r>> are simply reentrant versions of the above that take an additional reentrant structure pointer argument: <[ptr]>. RETURNS The result of <> is the number of elements it succeeded in reading. PORTABILITY ANSI C requires <>. <> is a BSD extension also provided by GNU libc. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "local.h" #ifdef __IMPL_UNLOCKED__ #define _fread_r _fread_unlocked_r #define fread fread_unlocked #endif #ifdef __SCLE static size_t crlf_r (struct _reent * ptr, FILE * fp, char * buf, size_t count, int eof) { int r; char *s, *d, *e; if (count == 0) return 0; e = buf + count; for (s=d=buf; s_r < 0) fp->_r = 0; total = resid; p = buf; #if !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) /* Optimize unbuffered I/O. */ if (fp->_flags & __SNBF) { /* First copy any available characters from ungetc buffer. */ int copy_size = resid > (size_t) fp->_r ? fp->_r : (int) resid; (void) memcpy ((void *) p, (void *) fp->_p, (size_t) copy_size); fp->_p += copy_size; fp->_r -= copy_size; p += copy_size; resid -= copy_size; /* If still more data needed, free any allocated ungetc buffer. */ if (HASUB (fp) && resid > 0) FREEUB (ptr, fp); /* Finally read directly into user's buffer if needed. */ while (resid > 0) { int rc = 0; /* save fp buffering state */ void *old_base = fp->_bf._base; void * old_p = fp->_p; int old_size = fp->_bf._size; /* allow __refill to use user's buffer */ fp->_bf._base = (unsigned char *) p; fp->_bf._size = resid; fp->_p = (unsigned char *) p; rc = __srefill_r (ptr, fp); /* restore fp buffering back to original state */ fp->_bf._base = old_base; fp->_bf._size = old_size; fp->_p = old_p; resid -= fp->_r; p += fp->_r; fp->_r = 0; if (rc) { #ifdef __SCLE if (fp->_flags & __SCLE) { _newlib_flockfile_exit (fp); return crlf_r (ptr, fp, buf, total-resid, 1) / size; } #endif _newlib_flockfile_exit (fp); return (total - resid) / size; } } } else #endif /* !PREFER_SIZE_OVER_SPEED && !__OPTIMIZE_SIZE__ */ { while (resid > (size_t) (r = fp->_r)) { (void) memcpy ((void *) p, (void *) fp->_p, (size_t) r); fp->_p += r; /* fp->_r = 0 ... done in __srefill */ p += r; resid -= r; if (__srefill_r (ptr, fp)) { /* no more input: return partial result */ #ifdef __SCLE if (fp->_flags & __SCLE) { _newlib_flockfile_exit (fp); return crlf_r (ptr, fp, buf, total-resid, 1) / size; } #endif _newlib_flockfile_exit (fp); return (total - resid) / size; } } (void) memcpy ((void *) p, (void *) fp->_p, resid); fp->_r -= resid; fp->_p += resid; } /* Perform any CR/LF clean-up if necessary. */ #ifdef __SCLE if (fp->_flags & __SCLE) { _newlib_flockfile_exit (fp); return crlf_r(ptr, fp, buf, total, 0) / size; } #endif _newlib_flockfile_end (fp); return count; } #ifndef _REENT_ONLY size_t fread (void *__restrict buf, size_t size, size_t count, FILE *__restrict fp) { return _fread_r (_REENT, buf, size, count, fp); } #endif picolibc-1.7.4/newlib/libc/stdio/fread_u.c000066400000000000000000000025701414576234500204120ustar00rootroot00000000000000/* * Copyright (c) 2014 Red Hat, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define __IMPL_UNLOCKED__ #include "fread.c" picolibc-1.7.4/newlib/libc/stdio/freopen.c000066400000000000000000000151651414576234500204470ustar00rootroot00000000000000/* * Copyright (c) 1990, 2007 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---open a file using an existing file descriptor INDEX freopen INDEX _freopen_r SYNOPSIS #include FILE *freopen(const char *restrict <[file]>, const char *restrict <[mode]>, FILE *restrict <[fp]>); FILE *_freopen_r(struct _reent *<[ptr]>, const char *restrict <[file]>, const char *restrict <[mode]>, FILE *restrict <[fp]>); DESCRIPTION Use this variant of <> if you wish to specify a particular file descriptor <[fp]> (notably <>, <>, or <>) for the file. If <[fp]> was associated with another file or stream, <> closes that other file or stream (but ignores any errors while closing it). <[file]> and <[mode]> are used just as in <>. If <[file]> is <>, the underlying stream is modified rather than closed. The file cannot be given a more permissive access mode (for example, a <[mode]> of "w" will fail on a read-only file descriptor), but can change status such as append or binary mode. If modification is not possible, failure occurs. RETURNS If successful, the result is the same as the argument <[fp]>. If the file cannot be opened as specified, the result is <>. PORTABILITY ANSI C requires <>. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include #include #include #include "local.h" /* * Re-direct an existing, open (probably) file to some other file. */ FILE * _freopen_r (struct _reent *ptr, const char *__restrict file, const char *__restrict mode, register FILE *__restrict fp) { register int f; int flags, oflags, oflags2; int e = 0; CHECK_INIT (ptr, fp); /* We can't use the _newlib_flockfile_XXX macros here due to the interlocked locking with the sfp_lock. */ #ifdef _STDIO_WITH_THREAD_CANCELLATION_SUPPORT int __oldcancel; pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &__oldcancel); #endif oflags2 = fp->_flags2; if (!(oflags2 & __SNLK)) _flockfile (fp); if ((flags = __sflags (ptr, mode, &oflags)) == 0) { if (!(oflags2 & __SNLK)) _funlockfile (fp); #ifdef _STDIO_WITH_THREAD_CANCELLATION_SUPPORT pthread_setcancelstate (__oldcancel, &__oldcancel); #endif _fclose_r (ptr, fp); return NULL; } /* * Remember whether the stream was open to begin with, and * which file descriptor (if any) was associated with it. * If it was attached to a descriptor, defer closing it, * so that, e.g., freopen("/dev/stdin", "r", stdin) works. * This is unnecessary if it was not a Unix file. */ if (fp->_flags == 0) fp->_flags = __SEOF; /* hold on to it */ else { if (fp->_flags & __SWR) _fflush_r (ptr, fp); /* * If close is NULL, closing is a no-op, hence pointless. * If file is NULL, the file should not be closed. */ if (fp->_close != NULL && file != NULL) fp->_close (ptr, fp->_cookie); } /* * Now get a new descriptor to refer to the new file, or reuse the * existing file descriptor if file is NULL. */ if (file != NULL) { f = open ((char *) file, oflags, 0666); e = __errno_r(ptr); } else { #ifdef HAVE_FCNTL int oldflags; /* * Reuse the file descriptor, but only if the new access mode is * equal or less permissive than the old. F_SETFL correctly * ignores creation flags. */ f = fp->_file; if ((oldflags = fcntl (f, F_GETFL, 0)) == -1 || ! ((oldflags & O_ACCMODE) == O_RDWR || ((oldflags ^ oflags) & O_ACCMODE) == 0) || fcntl (f, F_SETFL, oflags) == -1) f = -1; #else /* We cannot modify without fcntl support. */ f = -1; #endif #ifdef __SCLE /* * F_SETFL doesn't change textmode. Don't mess with modes of ttys. */ if (0 <= f && ! _isatty_r (ptr, f) && setmode (f, oflags & (O_BINARY | O_TEXT)) == -1) f = -1; #endif if (f < 0) { e = EBADF; if (fp->_close != NULL) fp->_close (ptr, fp->_cookie); } } /* * Finish closing fp. Even if the open succeeded above, * we cannot keep fp->_base: it may be the wrong size. * This loses the effect of any setbuffer calls, * but stdio has always done this before. */ if (fp->_flags & __SMBF) free ((char *) fp->_bf._base); fp->_w = 0; fp->_r = 0; fp->_p = NULL; fp->_bf._base = NULL; fp->_bf._size = 0; fp->_lbfsize = 0; if (HASUB (fp)) FREEUB (ptr, fp); fp->_ub._size = 0; if (HASLB (fp)) FREELB (ptr, fp); fp->_lb._size = 0; fp->_flags &= ~__SORD; fp->_flags2 &= ~__SWID; memset (&fp->_mbstate, 0, sizeof (_mbstate_t)); if (f < 0) { /* did not get it after all */ __sfp_lock_acquire (); fp->_flags = 0; /* set it free */ __errno_r(ptr) = e; /* restore in case _close clobbered */ if (!(oflags2 & __SNLK)) _funlockfile (fp); #ifndef __SINGLE_THREAD__ __lock_close_recursive (fp->_lock); #endif __sfp_lock_release (); #ifdef _STDIO_WITH_THREAD_CANCELLATION_SUPPORT pthread_setcancelstate (__oldcancel, &__oldcancel); #endif return NULL; } fp->_flags = flags; fp->_file = f; fp->_cookie = (void *) fp; fp->_read = __sread; fp->_write = __swrite; fp->_seek = __sseek; fp->_close = __sclose; #ifdef __SCLE if (__stextmode (fp->_file)) fp->_flags |= __SCLE; #endif if (!(oflags2 & __SNLK)) _funlockfile (fp); #ifdef _STDIO_WITH_THREAD_CANCELLATION_SUPPORT pthread_setcancelstate (__oldcancel, &__oldcancel); #endif return fp; } #ifndef _REENT_ONLY FILE * freopen (const char *__restrict file, const char *__restrict mode, register FILE *__restrict fp) { return _freopen_r (_REENT, file, mode, fp); } #endif /*!_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/fscanf.c000066400000000000000000000031141414576234500202400ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" #ifndef _REENT_ONLY int fscanf(FILE *__restrict fp, const char *__restrict fmt, ...) { int ret; va_list ap; va_start (ap, fmt); ret = _vfscanf_r (_REENT, fp, fmt, ap); va_end (ap); return ret; } #ifdef _NANO_FORMATTED_IO int fiscanf (FILE *, const char *, ...) _ATTRIBUTE ((__alias__("fscanf"))); #endif #endif /* !_REENT_ONLY */ int _fscanf_r(struct _reent *ptr, FILE *__restrict fp, const char *__restrict fmt, ...) { int ret; va_list ap; va_start (ap, fmt); ret = _vfscanf_r (ptr, fp, fmt, ap); va_end (ap); return (ret); } #ifdef _NANO_FORMATTED_IO int _fiscanf_r (struct _reent *, FILE *, const char *, ...) _ATTRIBUTE ((__alias__("_fscanf_r"))); #endif picolibc-1.7.4/newlib/libc/stdio/fseek.c000066400000000000000000000060731414576234500201040ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>, <>---set file position INDEX fseek INDEX fseeko INDEX _fseek_r INDEX _fseeko_r SYNOPSIS #include int fseek(FILE *<[fp]>, long <[offset]>, int <[whence]>); int fseeko(FILE *<[fp]>, off_t <[offset]>, int <[whence]>); int _fseek_r(struct _reent *<[ptr]>, FILE *<[fp]>, long <[offset]>, int <[whence]>); int _fseeko_r(struct _reent *<[ptr]>, FILE *<[fp]>, off_t <[offset]>, int <[whence]>); DESCRIPTION Objects of type <> can have a ``position'' that records how much of the file your program has already read. Many of the <> functions depend on this position, and many change it as a side effect. You can use <>/<> to set the position for the file identified by <[fp]>. The value of <[offset]> determines the new position, in one of three ways selected by the value of <[whence]> (defined as macros in `<>'): <>---<[offset]> is the absolute file position (an offset from the beginning of the file) desired. <[offset]> must be positive. <>---<[offset]> is relative to the current file position. <[offset]> can meaningfully be either positive or negative. <>---<[offset]> is relative to the current end of file. <[offset]> can meaningfully be either positive (to increase the size of the file) or negative. See <>/<> to determine the current file position. RETURNS <>/<> return <<0>> when successful. On failure, the result is <>. The reason for failure is indicated in <>: either <> (the stream identified by <[fp]> doesn't support repositioning) or <> (invalid file position). PORTABILITY ANSI C requires <>. <> is defined by the Single Unix specification. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" int _fseek_r (struct _reent *ptr, register FILE *fp, long offset, int whence) { return _fseeko_r (ptr, fp, offset, whence); } #ifndef _REENT_ONLY int fseek (register FILE *fp, long offset, int whence) { return _fseek_r (_REENT, fp, offset, whence); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/fseeko.c000066400000000000000000000224161414576234500202620ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>, <>---set file position INDEX fseek INDEX fseeko INDEX _fseek_r INDEX _fseeko_r SYNOPSIS #include int fseek(FILE *<[fp]>, long <[offset]>, int <[whence]>) int fseeko(FILE *<[fp]>, off_t <[offset]>, int <[whence]>) int _fseek_r(struct _reent *<[ptr]>, FILE *<[fp]>, long <[offset]>, int <[whence]>) int _fseeko_r(struct _reent *<[ptr]>, FILE *<[fp]>, off_t <[offset]>, int <[whence]>) DESCRIPTION Objects of type <> can have a ``position'' that records how much of the file your program has already read. Many of the <> functions depend on this position, and many change it as a side effect. You can use <>/<> to set the position for the file identified by <[fp]>. The value of <[offset]> determines the new position, in one of three ways selected by the value of <[whence]> (defined as macros in `<>'): <>---<[offset]> is the absolute file position (an offset from the beginning of the file) desired. <[offset]> must be positive. <>---<[offset]> is relative to the current file position. <[offset]> can meaningfully be either positive or negative. <>---<[offset]> is relative to the current end of file. <[offset]> can meaningfully be either positive (to increase the size of the file) or negative. See <>/<> to determine the current file position. RETURNS <>/<> return <<0>> when successful. On failure, the result is <>. The reason for failure is indicated in <>: either <> (the stream identified by <[fp]> doesn't support repositioning) or <> (invalid file position). PORTABILITY ANSI C requires <>. <> is defined by the Single Unix specification. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include #include #include #include "local.h" #define POS_ERR (-(_fpos_t)1) /* * Seek the given file to the given offset. * `Whence' must be one of the three SEEK_* macros. */ int _fseeko_r (struct _reent *ptr, register FILE *fp, _off_t offset, int whence) { _fpos_t (*seekfn) (struct _reent *, void *, _fpos_t, int); #ifdef _FSEEK_OPTIMIZATION _fpos_t target; size_t n; #ifdef __USE_INTERNAL_STAT64 struct stat64 st; #else struct stat st; #endif #endif _fpos_t curoff = 0; int havepos; /* Make sure stdio is set up. */ CHECK_INIT (ptr, fp); _newlib_flockfile_start (fp); /* If we've been doing some writing, and we're in append mode then we don't really know where the filepos is. */ if (fp->_flags & __SAPP && fp->_flags & __SWR) { /* So flush the buffer and seek to the end. */ _fflush_r (ptr, fp); } /* Have to be able to seek. */ if ((seekfn = fp->_seek) == NULL) { __errno_r(ptr) = ESPIPE; /* ??? */ _newlib_flockfile_exit (fp); return EOF; } /* * Change any SEEK_CUR to SEEK_SET, and check `whence' argument. * After this, whence is either SEEK_SET or SEEK_END. */ switch (whence) { case SEEK_CUR: /* * In order to seek relative to the current stream offset, * we have to first find the current stream offset a la * ftell (see ftell for details). */ _fflush_r (ptr, fp); /* may adjust seek offset on append stream */ if (fp->_flags & __SOFF) curoff = fp->_offset; else { curoff = seekfn (ptr, fp->_cookie, (_fpos_t) 0, SEEK_CUR); if (curoff == -1L) { _newlib_flockfile_exit (fp); return EOF; } } if (fp->_flags & __SRD) { curoff -= fp->_r; if (HASUB (fp)) curoff -= fp->_ur; } else if (fp->_flags & __SWR && fp->_p != NULL) curoff += fp->_p - fp->_bf._base; offset += curoff; whence = SEEK_SET; havepos = 1; break; case SEEK_SET: case SEEK_END: havepos = 0; break; default: __errno_r(ptr) = EINVAL; _newlib_flockfile_exit (fp); return (EOF); } (void) havepos; /* * Can only optimise if: * reading (and not reading-and-writing); * not unbuffered; and * this is a `regular' Unix file (and hence seekfn==__sseek). * We must check __NBF first, because it is possible to have __NBF * and __SOPT both set. */ if (fp->_bf._base == NULL) __smakebuf_r (ptr, fp); #ifdef _FSEEK_OPTIMIZATION if (fp->_flags & (__SWR | __SRW | __SNBF | __SNPT)) goto dumb; if ((fp->_flags & __SOPT) == 0) { if (seekfn != __sseek || fp->_file < 0 #ifdef __USE_INTERNAL_STAT64 || _fstat64_r (ptr, fp->_file, &st) #else || _fstat_r (ptr, fp->_file, &st) #endif || (st.st_mode & S_IFMT) != S_IFREG) { fp->_flags |= __SNPT; goto dumb; } #ifdef HAVE_BLKSIZE fp->_blksize = st.st_blksize; #else fp->_blksize = 1024; #endif fp->_flags |= __SOPT; } /* * We are reading; we can try to optimise. * Figure out where we are going and where we are now. */ if (whence == SEEK_SET) target = offset; else { #ifdef __USE_INTERNAL_STAT64 if (_fstat64_r (ptr, fp->_file, &st)) #else if (_fstat_r (ptr, fp->_file, &st)) #endif goto dumb; target = st.st_size + offset; } if (!havepos) { if (fp->_flags & __SOFF) curoff = fp->_offset; else { curoff = seekfn (ptr, fp->_cookie, 0L, SEEK_CUR); if (curoff == POS_ERR) goto dumb; } curoff -= fp->_r; if (HASUB (fp)) curoff -= fp->_ur; } /* * Compute the number of bytes in the input buffer (pretending * that any ungetc() input has been discarded). Adjust current * offset backwards by this count so that it represents the * file offset for the first byte in the current input buffer. */ if (HASUB (fp)) { curoff += fp->_r; /* kill off ungetc */ n = fp->_up - fp->_bf._base; curoff -= n; n += fp->_ur; } else { n = fp->_p - fp->_bf._base; curoff -= n; n += fp->_r; } /* * If the target offset is within the current buffer, * simply adjust the pointers, clear EOF, undo ungetc(), * and return. */ if (target >= curoff && target < curoff + n) { register int o = target - curoff; fp->_p = fp->_bf._base + o; fp->_r = n - o; if (HASUB (fp)) FREEUB (ptr, fp); fp->_flags &= ~__SEOF; memset (&fp->_mbstate, 0, sizeof (_mbstate_t)); _newlib_flockfile_exit (fp); return 0; } /* * The place we want to get to is not within the current buffer, * but we can still be kind to the kernel copyout mechanism. * By aligning the file offset to a block boundary, we can let * the kernel use the VM hardware to map pages instead of * copying bytes laboriously. Using a block boundary also * ensures that we only read one block, rather than two. */ curoff = target & ~(fp->_blksize - 1); if (seekfn (ptr, fp->_cookie, curoff, SEEK_SET) == POS_ERR) goto dumb; fp->_r = 0; fp->_p = fp->_bf._base; if (HASUB (fp)) FREEUB (ptr, fp); fp->_flags &= ~__SEOF; n = target - curoff; if (n) { if (__srefill_r (ptr, fp) || fp->_r < n) goto dumb; fp->_p += n; fp->_r -= n; } memset (&fp->_mbstate, 0, sizeof (_mbstate_t)); _newlib_flockfile_exit (fp); return 0; /* * We get here if we cannot optimise the seek ... just * do it. Allow the seek function to change fp->_bf._base. */ dumb: #endif if (_fflush_r (ptr, fp) || seekfn (ptr, fp->_cookie, offset, whence) == POS_ERR) { _newlib_flockfile_exit (fp); return EOF; } /* success: clear EOF indicator and discard ungetc() data */ if (HASUB (fp)) FREEUB (ptr, fp); fp->_p = fp->_bf._base; fp->_r = 0; /* fp->_w = 0; *//* unnecessary (I think...) */ fp->_flags &= ~__SEOF; /* Reset no-optimization flag after successful seek. The no-optimization flag may be set in the case of a read stream that is flushed which by POSIX/SUSv3 standards, means that a corresponding seek must not optimize. The optimization is then allowed if no subsequent flush is performed. */ fp->_flags &= ~__SNPT; memset (&fp->_mbstate, 0, sizeof (_mbstate_t)); _newlib_flockfile_end (fp); return 0; } #ifndef _REENT_ONLY int fseeko (register FILE *fp, _off_t offset, int whence) { return _fseeko_r (_REENT, fp, offset, whence); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/fsetlocking.c000066400000000000000000000053651414576234500213220ustar00rootroot00000000000000/* * Copyright (c) 2014 Red Hat, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* FUNCTION <<__fsetlocking>>---set or query locking mode on FILE stream INDEX __fsetlocking SYNOPSIS #include #include int __fsetlocking(FILE *<[fp]>, int <[type]>); DESCRIPTION This function sets how the stdio functions handle locking of FILE <[fp]>. The following values describe <[type]>: <> is the default state, where stdio functions automatically lock and unlock the stream. <> means that automatic locking in stdio functions is disabled. Applications which set this take all responsibility for file locking themselves. <> returns the current locking mode without changing it. RETURNS <<__fsetlocking>> returns the current locking mode of <[fp]>. PORTABILITY This function originates from Solaris and is also provided by GNU libc. No supporting OS subroutines are required. */ #ifndef __rtems__ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" int __fsetlocking (FILE * fp, int type) { int result; CHECK_INIT(_REENT, fp); result = (fp->_flags2 & __SNLK) ? FSETLOCKING_BYCALLER : FSETLOCKING_INTERNAL; switch (type) { case FSETLOCKING_BYCALLER: fp->_flags2 |= __SNLK; break; case FSETLOCKING_INTERNAL: fp->_flags2 &= ~__SNLK; break; case FSETLOCKING_QUERY: default: break; } return result; } #endif /* __rtems__ */ picolibc-1.7.4/newlib/libc/stdio/fsetpos.c000066400000000000000000000045321414576234500204700ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---restore position of a stream or file INDEX fsetpos INDEX _fsetpos_r SYNOPSIS #include int fsetpos(FILE *<[fp]>, const fpos_t *<[pos]>); int _fsetpos_r(struct _reent *<[ptr]>, FILE *<[fp]>, const fpos_t *<[pos]>); DESCRIPTION Objects of type <> can have a ``position'' that records how much of the file your program has already read. Many of the <> functions depend on this position, and many change it as a side effect. You can use <> to return the file identified by <[fp]> to a previous position <<*<[pos]>>> (after first recording it with <>). See <> for a similar facility. RETURNS <> returns <<0>> when successful. If <> fails, the result is <<1>>. The reason for failure is indicated in <>: either <> (the stream identified by <[fp]> doesn't support repositioning) or <> (invalid file position). PORTABILITY ANSI C requires <>, but does not specify the nature of <<*<[pos]>>> beyond identifying it as written by <>. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include int _fsetpos_r (struct _reent * ptr, FILE * iop, const _fpos_t * pos) { int x = _fseek_r (ptr, iop, *pos, SEEK_SET); if (x != 0) return 1; return 0; } #ifndef _REENT_ONLY int fsetpos (FILE * iop, const _fpos_t * pos) { return _fsetpos_r (_REENT, iop, pos); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/ftell.c000066400000000000000000000060711414576234500201130ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>, <>---return position in a stream or file INDEX ftell INDEX ftello INDEX _ftell_r INDEX _ftello_r SYNOPSIS #include long ftell(FILE *<[fp]>); off_t ftello(FILE *<[fp]>); long _ftell_r(struct _reent *<[ptr]>, FILE *<[fp]>); off_t _ftello_r(struct _reent *<[ptr]>, FILE *<[fp]>); DESCRIPTION Objects of type <> can have a ``position'' that records how much of the file your program has already read. Many of the <> functions depend on this position, and many change it as a side effect. The result of <>/<> is the current position for a file identified by <[fp]>. If you record this result, you can later use it with <>/<> to return the file to this position. The difference between <> and <> is that <> returns <> and <> returns <>. In the current implementation, <>/<> simply uses a character count to represent the file position; this is the same number that would be recorded by <>. RETURNS <>/<> return the file position, if possible. If they cannot do this, they return <<-1L>>. Failure occurs on streams that do not support positioning; the global <> indicates this condition with the value <>. PORTABILITY <> is required by the ANSI C standard, but the meaning of its result (when successful) is not specified beyond requiring that it be acceptable as an argument to <>. In particular, other conforming C implementations may return a different result from <> than what <> records. <> is defined by the Single Unix specification. No supporting OS subroutines are required. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ /* * ftell: return current offset. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" long _ftell_r (struct _reent *ptr, register FILE * fp) { _fpos_t pos; pos = _ftello_r (ptr, fp); if ((long)pos != pos) { pos = -1; __errno_r(ptr) = EOVERFLOW; } return (long)pos; } #ifndef _REENT_ONLY long ftell (register FILE * fp) { return _ftell_r (_REENT, fp); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/ftello.c000066400000000000000000000105551414576234500202740ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>, <>---return position in a stream or file INDEX ftell INDEX ftello INDEX _ftell_r INDEX _ftello_r SYNOPSIS #include long ftell(FILE *<[fp]>); off_t ftello(FILE *<[fp]>); long _ftell_r(struct _reent *<[ptr]>, FILE *<[fp]>); off_t _ftello_r(struct _reent *<[ptr]>, FILE *<[fp]>); DESCRIPTION Objects of type <> can have a ``position'' that records how much of the file your program has already read. Many of the <> functions depend on this position, and many change it as a side effect. The result of <>/<> is the current position for a file identified by <[fp]>. If you record this result, you can later use it with <>/<> to return the file to this position. The difference between <> and <> is that <> returns <> and <> returns <>. In the current implementation, <>/<> simply uses a character count to represent the file position; this is the same number that would be recorded by <>. RETURNS <>/<> return the file position, if possible. If they cannot do this, they return <<-1L>>. Failure occurs on streams that do not support positioning; the global <> indicates this condition with the value <>. PORTABILITY <> is required by the ANSI C standard, but the meaning of its result (when successful) is not specified beyond requiring that it be acceptable as an argument to <>. In particular, other conforming C implementations may return a different result from <> than what <> records. <> is defined by the Single Unix specification. No supporting OS subroutines are required. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ /* * ftello: return current offset. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" _off_t _ftello_r (struct _reent * ptr, register FILE * fp) { _fpos_t pos; /* Ensure stdio is set up. */ CHECK_INIT (ptr, fp); _newlib_flockfile_start (fp); if (fp->_seek == NULL) { __errno_r(ptr) = ESPIPE; _newlib_flockfile_exit (fp); return (_off_t) -1; } /* Find offset of underlying I/O object, then adjust for buffered bytes. */ if (!(fp->_flags & __SRD) && (fp->_flags & __SWR) && fp->_p != NULL && fp->_p - fp->_bf._base > 0 && (fp->_flags & __SAPP)) { pos = fp->_seek (ptr, fp->_cookie, (_fpos_t) 0, SEEK_END); if (pos == (_fpos_t) -1) { _newlib_flockfile_exit (fp); return (_off_t) -1; } } else if (fp->_flags & __SOFF) pos = fp->_offset; else { pos = fp->_seek (ptr, fp->_cookie, (_fpos_t) 0, SEEK_CUR); if (pos == (_fpos_t) -1) { _newlib_flockfile_exit (fp); return (_off_t) -1; } } if (fp->_flags & __SRD) { /* * Reading. Any unread characters (including * those from ungetc) cause the position to be * smaller than that in the underlying object. */ pos -= fp->_r; if (HASUB (fp)) pos -= fp->_ur; } else if ((fp->_flags & __SWR) && fp->_p != NULL) { /* * Writing. Any buffered characters cause the * position to be greater than that in the * underlying object. */ pos += fp->_p - fp->_bf._base; } _newlib_flockfile_end (fp); return (_off_t) pos; } #ifndef _REENT_ONLY _off_t ftello (register FILE * fp) { return _ftello_r (_REENT, fp); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/funopen.c000066400000000000000000000165111414576234500204570ustar00rootroot00000000000000/* Copyright (C) 2007 Eric Blake * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ /* FUNCTION <>, <>, <>---open a stream with custom callbacks INDEX funopen INDEX fropen INDEX fwopen SYNOPSIS #include FILE *funopen(const void *<[cookie]>, int (*<[readfn]>) (void *cookie, char *buf, int n), int (*<[writefn]>) (void *cookie, const char *buf, int n), fpos_t (*<[seekfn]>) (void *cookie, fpos_t off, int whence), int (*<[closefn]>) (void *cookie)); FILE *fropen(const void *<[cookie]>, int (*<[readfn]>) (void *cookie, char *buf, int n)); FILE *fwopen(const void *<[cookie]>, int (*<[writefn]>) (void *cookie, const char *buf, int n)); DESCRIPTION <> creates a <> stream where I/O is performed using custom callbacks. At least one of <[readfn]> and <[writefn]> must be provided, which determines whether the stream behaves with mode <"r">, <"w">, or <"r+">. <[readfn]> should return -1 on failure, or else the number of bytes read (0 on EOF). It is similar to <>, except that rather than bounds a transaction size, and <[cookie]> will be passed as the first argument. A NULL <[readfn]> makes attempts to read the stream fail. <[writefn]> should return -1 on failure, or else the number of bytes written. It is similar to <>, except that rather than bounds a transaction size, and <[cookie]> will be passed as the first argument. A NULL <[writefn]> makes attempts to write the stream fail. <[seekfn]> should return (fpos_t)-1 on failure, or else the current file position. It is similar to <>, except that <[cookie]> will be passed as the first argument. A NULL <[seekfn]> makes the stream behave similarly to a pipe in relation to stdio functions that require positioning. This implementation assumes fpos_t and off_t are the same type. <[closefn]> should return -1 on failure, or 0 on success. It is similar to <>, except that <[cookie]> will be passed as the first argument. A NULL <[closefn]> merely flushes all data then lets <> succeed. A failed close will still invalidate the stream. Read and write I/O functions are allowed to change the underlying buffer on fully buffered or line buffered streams by calling <>. They are also not required to completely fill or empty the buffer. They are not, however, allowed to change streams from unbuffered to buffered or to change the state of the line buffering flag. They must also be prepared to have read or write calls occur on buffers other than the one most recently specified. The functions <> and <> are convenience macros around <> that only use the specified callback. RETURNS The return value is an open FILE pointer on success. On error, <> is returned, and <> will be set to EINVAL if a function pointer is missing, ENOMEM if the stream cannot be created, or EMFILE if too many streams are already open. PORTABILITY This function is a newlib extension, copying the prototype from BSD. It is not portable. See also the <> interface from Linux. Supporting OS subroutines required: <>. */ #define _DEFAULT_SOURCE #include #include #include #include "local.h" typedef int (*funread)(void *_cookie, char *_buf, _READ_WRITE_BUFSIZE_TYPE _n); typedef int (*funwrite)(void *_cookie, const char *_buf, _READ_WRITE_BUFSIZE_TYPE _n); #ifdef __LARGE64_FILES typedef _fpos64_t (*funseek)(void *_cookie, _fpos64_t _off, int _whence); #else typedef fpos_t (*funseek)(void *_cookie, fpos_t _off, int _whence); #endif typedef int (*funclose)(void *_cookie); typedef struct funcookie { void *cookie; funread readfn; funwrite writefn; funseek seekfn; funclose closefn; } funcookie; static _READ_WRITE_RETURN_TYPE funreader (struct _reent *ptr, void *cookie, char *buf, _READ_WRITE_BUFSIZE_TYPE n) { int result; funcookie *c = (funcookie *) cookie; errno = 0; if ((result = c->readfn (c->cookie, buf, n)) < 0 && errno) __errno_r(ptr) = errno; return result; } static _READ_WRITE_RETURN_TYPE funwriter (struct _reent *ptr, void *cookie, const char *buf, _READ_WRITE_BUFSIZE_TYPE n) { int result; funcookie *c = (funcookie *) cookie; errno = 0; if ((result = c->writefn (c->cookie, buf, n)) < 0 && errno) __errno_r(ptr) = errno; return result; } static _fpos_t funseeker (struct _reent *ptr, void *cookie, _fpos_t off, int whence) { funcookie *c = (funcookie *) cookie; #ifndef __LARGE64_FILES fpos_t result; errno = 0; if ((result = c->seekfn (c->cookie, (fpos_t) off, whence)) < 0 && errno) __errno_r(ptr) = errno; #else /* __LARGE64_FILES */ _fpos64_t result; errno = 0; if ((result = c->seekfn (c->cookie, (_fpos64_t) off, whence)) < 0 && errno) __errno_r(ptr) = errno; else if ((_fpos_t)result != result) { __errno_r(ptr) = EOVERFLOW; result = -1; } #endif /* __LARGE64_FILES */ return result; } #ifdef __LARGE64_FILES static _fpos64_t funseeker64 (struct _reent *ptr, void *cookie, _fpos64_t off, int whence) { _fpos64_t result; funcookie *c = (funcookie *) cookie; errno = 0; if ((result = c->seekfn (c->cookie, off, whence)) < 0 && errno) __errno_r(ptr) = errno; return result; } #endif /* __LARGE64_FILES */ static int funcloser (struct _reent *ptr, void *cookie) { int result = 0; funcookie *c = (funcookie *) cookie; if (c->closefn) { errno = 0; if ((result = c->closefn (c->cookie)) < 0 && errno) __errno_r(ptr) = errno; } free (c); return result; } FILE * _funopen_r (struct _reent *ptr, const void *cookie, funread readfn, funwrite writefn, funseek seekfn, funclose closefn) { FILE *fp; funcookie *c; if (!readfn && !writefn) { __errno_r(ptr) = EINVAL; return NULL; } if ((fp = __sfp (ptr)) == NULL) return NULL; if ((c = (funcookie *) malloc (sizeof *c)) == NULL) { _newlib_sfp_lock_start (); fp->_flags = 0; /* release */ #ifndef __SINGLE_THREAD__ __lock_close_recursive (fp->_lock); #endif _newlib_sfp_lock_end (); return NULL; } _newlib_flockfile_start (fp); fp->_file = -1; c->cookie = (void *) cookie; /* cast away const */ fp->_cookie = c; if (readfn) { c->readfn = readfn; fp->_read = funreader; if (writefn) { fp->_flags = __SRW; c->writefn = writefn; fp->_write = funwriter; } else { fp->_flags = __SRD; c->writefn = NULL; fp->_write = NULL; } } else { fp->_flags = __SWR; c->writefn = writefn; fp->_write = funwriter; c->readfn = NULL; fp->_read = NULL; } c->seekfn = seekfn; fp->_seek = seekfn ? funseeker : NULL; #ifdef __LARGE64_FILES fp->_seek64 = seekfn ? funseeker64 : NULL; fp->_flags |= __SL64; #endif c->closefn = closefn; fp->_close = funcloser; _newlib_flockfile_end (fp); return fp; } #ifndef _REENT_ONLY FILE * funopen (const void *cookie, funread readfn, funwrite writefn, funseek seekfn, funclose closefn) { return _funopen_r (_REENT, cookie, readfn, writefn, seekfn, closefn); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/fvwrite.c000066400000000000000000000154611414576234500204760ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* No user fns here. Pesch 15apr92. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include #include "local.h" #include "fvwrite.h" #define MIN(a, b) ((a) < (b) ? (a) : (b)) #define COPY(n) (void) memmove ((void *) fp->_p, (void *) p, (size_t) (n)) #define GETIOV(extra_work) \ while (len == 0) \ { \ extra_work; \ p = iov->iov_base; \ len = iov->iov_len; \ iov++; \ } /* * Write some memory regions. Return zero on success, EOF on error. * * This routine is large and unsightly, but most of the ugliness due * to the three different kinds of output buffering is handled here. */ int __sfvwrite_r (struct _reent *ptr, register FILE *fp, register struct __suio *uio) { register size_t len; register const char *p = NULL; register struct __siov *iov; register _READ_WRITE_RETURN_TYPE w, s; char *nl; int nlknown, nldist; if ((len = uio->uio_resid) == 0) return 0; /* make sure we can write */ if (cantwrite (ptr, fp)) return EOF; iov = uio->uio_iov; len = 0; #ifdef __SCLE if (fp->_flags & __SCLE) /* text mode */ { do { GETIOV (;); while (len > 0) { if (putc (*p, fp) == EOF) return EOF; p++; len--; uio->uio_resid--; } } while (uio->uio_resid > 0); return 0; } #endif if (fp->_flags & __SNBF) { /* * Unbuffered: Split buffer in the largest multiple of BUFSIZ < INT_MAX * as some legacy code may expect int instead of size_t. */ do { GETIOV (;); w = fp->_write (ptr, fp->_cookie, p, MIN (len, INT_MAX - INT_MAX % BUFSIZ)); if (w <= 0) goto err; p += w; len -= w; } while ((uio->uio_resid -= w) != 0); } else if ((fp->_flags & __SLBF) == 0) { /* * Fully buffered: fill partially full buffer, if any, * and then flush. If there is no partial buffer, write * one _bf._size byte chunk directly (without copying). * * String output is a special case: write as many bytes * as fit, but pretend we wrote everything. This makes * snprintf() return the number of bytes needed, rather * than the number used, and avoids its write function * (so that the write function can be invalid). If * we are dealing with the asprintf routines, we will * dynamically increase the buffer size as needed. */ do { GETIOV (;); w = fp->_w; if (fp->_flags & __SSTR) { if (len >= (size_t) w && fp->_flags & (__SMBF | __SOPT)) { /* must be asprintf family */ unsigned char *str; int curpos = (fp->_p - fp->_bf._base); /* Choose a geometric growth factor to avoid quadratic realloc behavior, but use a rate less than (1+sqrt(5))/2 to accomodate malloc overhead. asprintf EXPECTS us to overallocate, so that it can add a trailing \0 without reallocating. The new allocation should thus be max(prev_size*1.5, curpos+len+1). */ int newsize = fp->_bf._size * 3 / 2; if ((size_t) newsize < curpos + len + 1) newsize = curpos + len + 1; if (fp->_flags & __SOPT) { /* asnprintf leaves original buffer alone. */ str = (unsigned char *)malloc (newsize); if (!str) { __errno_r(ptr) = ENOMEM; goto err; } memcpy (str, fp->_bf._base, curpos); fp->_flags = (fp->_flags & ~__SOPT) | __SMBF; } else { str = (unsigned char *)realloc (fp->_bf._base, newsize); if (!str) { /* Free buffer which is no longer used and clear __SMBF flag to avoid double free in fclose. */ free (fp->_bf._base); fp->_flags &= ~__SMBF; /* Ensure correct errno, even if free changed it. */ __errno_r(ptr) = ENOMEM; goto err; } } fp->_bf._base = str; fp->_p = str + curpos; fp->_bf._size = newsize; w = len; fp->_w = newsize - curpos; } if (len < (size_t) w) w = len; COPY (w); /* copy MIN(fp->_w,len), */ fp->_w -= w; fp->_p += w; w = len; /* but pretend copied all */ } else if (fp->_p > fp->_bf._base || len < (size_t) fp->_bf._size) { /* pass through the buffer */ w = MIN (len, (size_t) w); COPY (w); fp->_w -= w; fp->_p += w; if (fp->_w == 0 && _fflush_r (ptr, fp)) goto err; } else { /* write directly */ w = ((int)MIN (len, INT_MAX)) / fp->_bf._size * fp->_bf._size; w = fp->_write (ptr, fp->_cookie, p, w); if (w <= 0) goto err; } p += w; len -= w; } while ((uio->uio_resid -= w) != 0); } else { /* * Line buffered: like fully buffered, but we * must check for newlines. Compute the distance * to the first newline (including the newline), * or `infinity' if there is none, then pretend * that the amount to write is MIN(len,nldist). */ nlknown = 0; nldist = 0; do { GETIOV (nlknown = 0); if (!nlknown) { nl = memchr ((void *) p, '\n', len); nldist = nl ? nl + 1 - p : (int) (len + 1); nlknown = 1; } s = MIN (len, (size_t) nldist); w = fp->_w + fp->_bf._size; if (fp->_p > fp->_bf._base && s > w) { COPY (w); /* fp->_w -= w; */ fp->_p += w; if (_fflush_r (ptr, fp)) goto err; } else if (s >= (w = fp->_bf._size)) { w = fp->_write (ptr, fp->_cookie, p, w); if (w <= 0) goto err; } else { w = s; COPY (w); fp->_w -= w; fp->_p += w; } if ((nldist -= w) == 0) { /* copied the newline: flush and forget */ if (_fflush_r (ptr, fp)) goto err; nlknown = 0; } p += w; len -= w; } while ((uio->uio_resid -= w) != 0); } return 0; err: fp->_flags |= __SERR; return EOF; } picolibc-1.7.4/newlib/libc/stdio/fvwrite.h000066400000000000000000000022121414576234500204710ustar00rootroot00000000000000/* * Copyright (c) 1990, 2007 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* %W% (Berkeley) %G% */ #include <_ansi.h> /* * I/O descriptors for __sfvwrite_r(). */ struct __siov { const void *iov_base; size_t iov_len; }; struct __suio { struct __siov *uio_iov; int uio_iovcnt; size_t uio_resid; }; extern int __sfvwrite_r (struct _reent *, FILE *, struct __suio *); extern int __swsetup_r (struct _reent *, FILE *); picolibc-1.7.4/newlib/libc/stdio/fwalk.c000066400000000000000000000047271414576234500201170ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* No user fns here. Pesch 15apr92. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "local.h" int _fwalk (struct _reent *ptr, register int (*function) (FILE *)) { register FILE *fp; register int n, ret = 0; register struct _glue *g; /* * It should be safe to walk the list without locking it; * new nodes are only added to the end and none are ever * removed. * * Avoid locking this list while walking it or else you will * introduce a potential deadlock in [at least] refill.c. */ for (g = &ptr->__sglue; g != NULL; g = g->_next) for (fp = g->_iobs, n = g->_niobs; --n >= 0; fp++) if (fp->_flags != 0 && fp->_flags != 1 && fp->_file != -1) ret |= (*function) (fp); return ret; } /* Special version of __fwalk where the function pointer is a reentrant I/O function (e.g. _fclose_r). */ int _fwalk_reent (struct _reent *ptr, register int (*reent_function) (struct _reent *, FILE *)) { register FILE *fp; register int n, ret = 0; register struct _glue *g; /* * It should be safe to walk the list without locking it; * new nodes are only added to the end and none are ever * removed. * * Avoid locking this list while walking it or else you will * introduce a potential deadlock in [at least] refill.c. */ for (g = &ptr->__sglue; g != NULL; g = g->_next) for (fp = g->_iobs, n = g->_niobs; --n >= 0; fp++) if (fp->_flags != 0 && fp->_flags != 1 && fp->_file != -1) ret |= (*reent_function) (ptr, fp); return ret; } picolibc-1.7.4/newlib/libc/stdio/fwide.c000066400000000000000000000063121414576234500201010ustar00rootroot00000000000000/* Copyright (c) 2002-2004 Tim J. Robbins. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>---set and determine the orientation of a FILE stream INDEX fwide INDEX _fwide_r SYNOPSIS #include int fwide(FILE *<[fp]>, int <[mode]>); int _fwide_r(struct _reent *<[ptr]>, FILE *<[fp]>, int <[mode]>); DESCRIPTION When <[mode]> is zero, the <> function determines the current orientation of <[fp]>. It returns a value > 0 if <[fp]> is wide-character oriented, i.e. if wide character I/O is permitted but char I/O is disallowed. It returns a value < 0 if <[fp]> is byte oriented, i.e. if char I/O is permitted but wide character I/O is disallowed. It returns zero if <[fp]> has no orientation yet; in this case the next I/O operation might change the orientation (to byte oriented if it is a char I/O operation, or to wide-character oriented if it is a wide character I/O operation). Once a stream has an orientation, it cannot be changed and persists until the stream is closed, unless the stream is re-opened with freopen, which removes the orientation of the stream. When <[mode]> is non-zero, the <> function first attempts to set <[fp]>'s orientation (to wide-character oriented if <[mode]> > 0, or to byte oriented if <[mode]> < 0). It then returns a value denoting the current orientation, as above. RETURNS The <> function returns <[fp]>'s orientation, after possibly changing it. A return value > 0 means wide-character oriented. A return value < 0 means byte oriented. A return value of zero means undecided. PORTABILITY C99, POSIX.1-2001. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include "local.h" int _fwide_r (struct _reent *ptr, FILE *fp, int mode) { int ret; CHECK_INIT(ptr, fp); _newlib_flockfile_start (fp); if (mode != 0) { ORIENT (fp, mode); } if (!(fp->_flags & __SORD)) ret = 0; else ret = (fp->_flags2 & __SWID) ? 1 : -1; _newlib_flockfile_end (fp); return ret; } int fwide (FILE *fp, int mode) { return _fwide_r (_REENT, fp, mode); } picolibc-1.7.4/newlib/libc/stdio/fwprintf.c000066400000000000000000000025611414576234500206440ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* doc in swprintf.c */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include int _fwprintf_r (struct _reent *ptr, FILE *fp, const wchar_t *fmt, ...) { int ret; va_list ap; va_start (ap, fmt); ret = _vfwprintf_r (ptr, fp, fmt, ap); va_end (ap); return ret; } #ifndef _REENT_ONLY int fwprintf (FILE *__restrict fp, const wchar_t *__restrict fmt, ...) { int ret; va_list ap; va_start (ap, fmt); ret = _vfwprintf_r (_REENT, fp, fmt, ap); va_end (ap); return ret; } #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/fwrite.c000066400000000000000000000114701414576234500203040ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>, <>---write array elements INDEX fwrite INDEX fwrite_unlocked INDEX _fwrite_r INDEX _fwrite_unlocked_r SYNOPSIS #include size_t fwrite(const void *restrict <[buf]>, size_t <[size]>, size_t <[count]>, FILE *restrict <[fp]>); #define _BSD_SOURCE #include size_t fwrite_unlocked(const void *restrict <[buf]>, size_t <[size]>, size_t <[count]>, FILE *restrict <[fp]>); #include size_t _fwrite_r(struct _reent *<[ptr]>, const void *restrict <[buf]>, size_t <[size]>, size_t <[count]>, FILE *restrict <[fp]>); #include size_t _fwrite_unlocked_r(struct _reent *<[ptr]>, const void *restrict <[buf]>, size_t <[size]>, size_t <[count]>, FILE *restrict <[fp]>); DESCRIPTION <> attempts to copy, starting from the memory location <[buf]>, <[count]> elements (each of size <[size]>) into the file or stream identified by <[fp]>. <> may copy fewer elements than <[count]> if an error intervenes. <> also advances the file position indicator (if any) for <[fp]> by the number of @emph{characters} actually written. <> is a non-thread-safe version of <>. <> may only safely be used within a scope protected by flockfile() (or ftrylockfile()) and funlockfile(). This function may safely be used in a multi-threaded program if and only if they are called while the invoking thread owns the (FILE *) object, as is the case after a successful call to the flockfile() or ftrylockfile() functions. If threads are disabled, then <> is equivalent to <>. <<_fwrite_r>> and <<_fwrite_unlocked_r>> are simply reentrant versions of the above that take an additional reentrant structure argument: <[ptr]>. RETURNS If <> succeeds in writing all the elements you specify, the result is the same as the argument <[count]>. In any event, the result is the number of complete elements that <> copied to the file. PORTABILITY ANSI C requires <>. <> is a BSD extension also provided by GNU libc. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #if 0 #include #endif #include "local.h" #if 1 #include "fvwrite.h" #endif #ifdef __IMPL_UNLOCKED__ #define _fwrite_r _fwrite_unlocked_r #define fwrite fwrite_unlocked #endif /* * Write `count' objects (each size `size') from memory to the given file. * Return the number of whole objects written. */ size_t _fwrite_r (struct _reent * ptr, const void *__restrict buf, size_t size, size_t count, FILE * __restrict fp) { size_t n; #ifdef _FVWRITE_IN_STREAMIO struct __suio uio; struct __siov iov; iov.iov_base = buf; uio.uio_resid = iov.iov_len = n = count * size; uio.uio_iov = &iov; uio.uio_iovcnt = 1; /* * The usual case is success (__sfvwrite_r returns 0); * skip the divide if this happens, since divides are * generally slow and since this occurs whenever size==0. */ CHECK_INIT(ptr, fp); _newlib_flockfile_start (fp); ORIENT (fp, -1); if (__sfvwrite_r (ptr, fp, &uio) == 0) { _newlib_flockfile_exit (fp); return count; } _newlib_flockfile_end (fp); return (n - uio.uio_resid) / size; #else size_t i = 0; const char *p = buf; n = count * size; CHECK_INIT (ptr, fp); _newlib_flockfile_start (fp); ORIENT (fp, -1); /* Make sure we can write. */ if (cantwrite (ptr, fp)) goto ret; while (i < n) { if (__sputc_r (ptr, p[i], fp) == EOF) break; i++; } ret: _newlib_flockfile_end (fp); return i / size; #endif } #ifndef _REENT_ONLY size_t fwrite (const void *__restrict buf, size_t size, size_t count, FILE * fp) { return _fwrite_r (_REENT, buf, size, count, fp); } #endif picolibc-1.7.4/newlib/libc/stdio/fwrite_u.c000066400000000000000000000025711414576234500206320ustar00rootroot00000000000000/* * Copyright (c) 2014 Red Hat, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define __IMPL_UNLOCKED__ #include "fwrite.c" picolibc-1.7.4/newlib/libc/stdio/fwscanf.c000066400000000000000000000025551414576234500204370ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* Doc in swscanf.c */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "local.h" #ifndef _REENT_ONLY int fwscanf (FILE *__restrict fp, const wchar_t *__restrict fmt, ...) { int ret; va_list ap; va_start (ap, fmt); ret = _vfwscanf_r (_REENT, fp, fmt, ap); va_end (ap); return ret; } #endif /* !_REENT_ONLY */ int _fwscanf_r (struct _reent *ptr, FILE *fp, const wchar_t *fmt, ...) { int ret; va_list ap; va_start (ap, fmt); ret = _vfwscanf_r (ptr, fp, fmt, ap); va_end (ap); return (ret); } picolibc-1.7.4/newlib/libc/stdio/getc.c000066400000000000000000000056301414576234500177270ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---read a character (macro) INDEX getc INDEX _getc_r SYNOPSIS #include int getc(FILE *<[fp]>); #include int _getc_r(struct _reent *<[ptr]>, FILE *<[fp]>); DESCRIPTION <> is a macro, defined in <>. You can use <> to get the next single character from the file or stream identified by <[fp]>. As a side effect, <> advances the file's current position indicator. For a subroutine version of this macro, see <>. The <<_getc_r>> function is simply the reentrant version of <> which passes an additional reentrancy structure pointer argument: <[ptr]>. RETURNS The next character (read as an <>, and cast to <>), unless there is no more data, or the host system reports a read error; in either of these situations, <> returns <>. You can distinguish the two situations that cause an <> result by using the <> and <> functions. PORTABILITY ANSI C requires <>; it suggests, but does not require, that <> be implemented as a macro. The standard explicitly permits macro implementations of <> to use the argument more than once; therefore, in a portable program, you should not use an expression with side effects as the <> argument. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include "local.h" /* * A subroutine version of the macro getc. */ #undef getc int _getc_r (struct _reent *ptr, register FILE *fp) { int result; CHECK_INIT (ptr, fp); _newlib_flockfile_start (fp); result = __sgetc_r (ptr, fp); _newlib_flockfile_end (fp); return result; } #ifndef _REENT_ONLY int getc (register FILE *fp) { int result; struct _reent *reent = _REENT; CHECK_INIT (reent, fp); _newlib_flockfile_start (fp); result = __sgetc_r (reent, fp); _newlib_flockfile_end (fp); return result; } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/getc_u.c000066400000000000000000000050241414576234500202500ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---non-thread-safe version of getc (macro) INDEX getc_unlocked INDEX _getc_unlocked_r SYNOPSIS #include int getc_unlocked(FILE *<[fp]>); #include int _getc_unlocked_r(FILE *<[fp]>); DESCRIPTION <> is a non-thread-safe version of <> declared in <>. <> may only safely be used within a scope protected by flockfile() (or ftrylockfile()) and funlockfile(). These functions may safely be used in a multi-threaded program if and only if they are called while the invoking thread owns the ( FILE *) object, as is the case after a successful call to the flockfile() or ftrylockfile() functions. If threads are disabled, then <> is equivalent to <>. The <<_getc_unlocked_r>> function is simply the reentrant version of <> which passes an additional reentrancy structure pointer argument: <[ptr]>. RETURNS See <>. PORTABILITY POSIX 1003.1 requires <>. <> may be implemented as a macro, so arguments should not have side-effects. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ #define _DEFAULT_SOURCE #include <_ansi.h> #include /* * A subroutine version of the macro getc_unlocked. */ #undef getc_unlocked int _getc_unlocked_r (struct _reent *ptr, register FILE *fp) { /* CHECK_INIT is called (eventually) by __srefill_r. */ return __sgetc_r (ptr, fp); } #ifndef _REENT_ONLY int getc_unlocked (register FILE *fp) { return __sgetc_r (_REENT, fp); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/getchar.c000066400000000000000000000047661414576234500204330ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---read a character (macro) INDEX getchar INDEX _getchar_r SYNOPSIS #include int getchar(void); int _getchar_r(struct _reent *<[reent]>); DESCRIPTION <> is a macro, defined in <>. You can use <> to get the next single character from the standard input stream. As a side effect, <> advances the standard input's current position indicator. The alternate function <<_getchar_r>> is a reentrant version. The extra argument <[reent]> is a pointer to a reentrancy structure. RETURNS The next character (read as an <>, and cast to <>), unless there is no more data, or the host system reports a read error; in either of these situations, <> returns <>. You can distinguish the two situations that cause an <> result by using `<>' and `<>'. PORTABILITY ANSI C requires <>; it suggests, but does not require, that <> be implemented as a macro. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ /* * A subroutine version of the macro getchar. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include "local.h" #undef getchar int _getchar_r (struct _reent *reent) { _REENT_SMALL_CHECK_INIT (reent); return _getc_r (reent, _stdin_r (reent)); } #ifndef _REENT_ONLY int getchar (void) { struct _reent *reent = _REENT; /* CHECK_INIT is called (eventually) by __srefill_r. */ _REENT_SMALL_CHECK_INIT (reent); return _getc_r (reent, _stdin_r (reent)); } #endif picolibc-1.7.4/newlib/libc/stdio/getchar_u.c000066400000000000000000000050261414576234500207450ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---non-thread-safe version of getchar (macro) INDEX getchar_unlocked INDEX _getchar_unlocked_r SYNOPSIS #include int getchar_unlocked(void); #include int _getchar_unlocked_r(struct _reent *<[ptr]>); DESCRIPTION <> is a non-thread-safe version of <> declared in <>. <> may only safely be used within a scope protected by flockfile() (or ftrylockfile()) and funlockfile(). These functions may safely be used in a multi-threaded program if and only if they are called while the invoking thread owns the ( FILE *) object, as is the case after a successful call to the flockfile() or ftrylockfile() functions. If threads are disabled, then <> is equivalent to <>. The <<_getchar_unlocked_r>> function is simply the reentrant version of <> which passes an addtional reentrancy structure pointer argument: <[ptr]>. RETURNS See <>. PORTABILITY POSIX 1003.1 requires <>. <> may be implemented as a macro. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ /* * A subroutine version of the macro getchar_unlocked. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #undef getchar_unlocked int _getchar_unlocked_r (struct _reent *ptr) { return _getc_unlocked_r (ptr, _stdin_r (ptr)); } #ifndef _REENT_ONLY int getchar_unlocked (void) { /* CHECK_INIT is called (eventually) by __srefill_r. */ return _getc_unlocked_r (_REENT, _stdin_r (_REENT)); } #endif picolibc-1.7.4/newlib/libc/stdio/getdelim.c000066400000000000000000000054651414576234500206050ustar00rootroot00000000000000/* Copyright 2002, Red Hat Inc. - all rights reserved */ /* FUNCTION <>---read a line up to a specified line delimiter INDEX getdelim SYNOPSIS #include int getdelim(char **<[bufptr]>, size_t *<[n]>, int <[delim]>, FILE *<[fp]>); DESCRIPTION <> reads a file <[fp]> up to and possibly including a specified delimiter <[delim]>. The line is read into a buffer pointed to by <[bufptr]> and designated with size *<[n]>. If the buffer is not large enough, it will be dynamically grown by <>. As the buffer is grown, the pointer to the size <[n]> will be updated. RETURNS <> returns <<-1>> if no characters were successfully read; otherwise, it returns the number of bytes successfully read. At end of file, the result is nonzero. PORTABILITY <> is a glibc extension. No supporting OS subroutines are directly required. */ #define _DEFAULT_SOURCE #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "local.h" #define MIN_LINE_SIZE 4 #define DEFAULT_LINE_SIZE 128 ssize_t __getdelim (char **bufptr, size_t *n, int delim, FILE *fp) { char *buf; char *ptr; size_t newsize, numbytes; int pos; int ch; int cont; if (fp == NULL || bufptr == NULL || n == NULL) { errno = EINVAL; return -1; } buf = *bufptr; if (buf == NULL || *n < MIN_LINE_SIZE) { buf = (char *)realloc (*bufptr, DEFAULT_LINE_SIZE); if (buf == NULL) { return -1; } *bufptr = buf; *n = DEFAULT_LINE_SIZE; } CHECK_INIT (_REENT, fp); _newlib_flockfile_start (fp); numbytes = *n; ptr = buf; cont = 1; while (cont) { /* fill buffer - leaving room for nul-terminator */ while (--numbytes > 0) { if ((ch = getc_unlocked (fp)) == EOF) { cont = 0; break; } else { *ptr++ = ch; if (ch == delim) { cont = 0; break; } } } if (cont) { /* Buffer is too small so reallocate a larger buffer. */ pos = ptr - buf; newsize = (*n << 1); buf = realloc (buf, newsize); if (buf == NULL) { cont = 0; break; } /* After reallocating, continue in new buffer */ *bufptr = buf; *n = newsize; ptr = buf + pos; numbytes = newsize - pos; } } _newlib_flockfile_end (fp); /* if no input data, return failure */ if (ptr == buf) return -1; /* otherwise, nul-terminate and return number of bytes read */ *ptr = '\0'; return (ssize_t)(ptr - buf); } picolibc-1.7.4/newlib/libc/stdio/getline.c000066400000000000000000000022071414576234500204310ustar00rootroot00000000000000/* Copyright 2002, Red Hat Inc. - all rights reserved */ /* FUNCTION <>---read a line from a file INDEX getline SYNOPSIS #include ssize_t getline(char **<[bufptr]>, size_t *<[n]>, FILE *<[fp]>); DESCRIPTION <> reads a file <[fp]> up to and possibly including the newline character. The line is read into a buffer pointed to by <[bufptr]> and designated with size *<[n]>. If the buffer is not large enough, it will be dynamically grown by <>. As the buffer is grown, the pointer to the size <[n]> will be updated. <> is equivalent to getdelim(bufptr, n, '\n', fp); RETURNS <> returns <<-1>> if no characters were successfully read, otherwise, it returns the number of bytes successfully read. at end of file, the result is nonzero. PORTABILITY <> is a glibc extension. No supporting OS subroutines are directly required. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include extern ssize_t __getdelim (char **, size_t *, int, FILE *); ssize_t __getline (char **lptr, size_t *n, FILE *fp) { return __getdelim (lptr, n, '\n', fp); } picolibc-1.7.4/newlib/libc/stdio/gets.c000066400000000000000000000052601414576234500177460ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---get character string (obsolete, use <> instead) INDEX gets INDEX _gets_r SYNOPSIS #include char *gets(char *<[buf]>); char *_gets_r(struct _reent *<[reent]>, char *<[buf]>); DESCRIPTION Reads characters from standard input until a newline is found. The characters up to the newline are stored in <[buf]>. The newline is discarded, and the buffer is terminated with a 0. This is a @emph{dangerous} function, as it has no way of checking the amount of space available in <[buf]>. One of the attacks used by the Internet Worm of 1988 used this to overrun a buffer allocated on the stack of the finger daemon and overwrite the return address, causing the daemon to execute code downloaded into it over the connection. The alternate function <<_gets_r>> is a reentrant version. The extra argument <[reent]> is a pointer to a reentrancy structure. RETURNS <> returns the buffer passed to it, with the data filled in. If end of file occurs with some data already accumulated, the data is returned with no other indication. If end of file occurs with no data in the buffer, NULL is returned. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include "local.h" char * _gets_r (struct _reent *ptr, char *buf) { register int c; register char *s = buf; FILE *fp; _REENT_SMALL_CHECK_INIT (ptr); fp = _stdin_r (ptr); CHECK_INIT (ptr, fp); _newlib_flockfile_start (fp); while ((c = __sgetc_r (ptr, fp)) != '\n') if (c == EOF) if (s == buf) { _newlib_flockfile_exit (fp); return NULL; } else break; else *s++ = c; *s = 0; _newlib_flockfile_end (fp); return buf; } #ifndef _REENT_ONLY #undef gets char * gets (char *buf) { return _gets_r (_REENT, buf); } #endif picolibc-1.7.4/newlib/libc/stdio/getw.c000066400000000000000000000036731414576234500177600ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---read a word (int) INDEX getw SYNOPSIS #include int getw(FILE *<[fp]>); DESCRIPTION <> is a function, defined in <>. You can use <> to get the next word from the file or stream identified by <[fp]>. As a side effect, <> advances the file's current position indicator. RETURNS The next word (read as an <>), unless there is no more data or the host system reports a read error; in either of these situations, <> returns <>. Since <> is a valid <>, you must use <> or <> to distinguish these situations. PORTABILITY <> is a remnant of K&R C; it is not part of any ISO C Standard. <> should be used instead. In fact, this implementation of <> is based upon <>. Supporting OS subroutines required: <>. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ #define _DEFAULT_SOURCE #include <_ansi.h> #include int getw (register FILE *fp) { int result; if (fread ((char*)&result, sizeof (result), 1, fp) != 1) return EOF; return result; } picolibc-1.7.4/newlib/libc/stdio/getwc.c000066400000000000000000000033011414576234500201070ustar00rootroot00000000000000/*- * Copyright (c) 2002 Tim J. Robbins. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" #undef getwc wint_t _getwc_r (struct _reent *ptr, FILE *fp) { return _fgetwc_r (ptr, fp); } /* * Synonym for fgetwc(). The only difference is that getwc(), if it is a * macro, may evaluate `fp' more than once. */ wint_t getwc (FILE *fp) { return fgetwc(fp); } picolibc-1.7.4/newlib/libc/stdio/getwc_u.c000066400000000000000000000034101414576234500204340ustar00rootroot00000000000000/* * Copyright (c) 2014 Red Hat, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _GNU_SOURCE #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" #undef getwc_unlocked wint_t _getwc_unlocked_r (struct _reent *ptr, FILE *fp) { return _fgetwc_unlocked_r (ptr, fp); } /* * Synonym for fgetwc_unlocked(). The only difference is that getwc(), if it is * a macro, may evaluate `fp' more than once. */ wint_t getwc_unlocked (FILE *fp) { return fgetwc_unlocked(fp); } picolibc-1.7.4/newlib/libc/stdio/getwchar.c000066400000000000000000000066631414576234500206200ustar00rootroot00000000000000/*- * Copyright (c) 2002 Tim J. Robbins. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* FUNCTION <>, <>---read a wide character from standard input INDEX getwchar INDEX getwchar_unlocked INDEX _getwchar_r INDEX _getwchar_unlocked_r SYNOPSIS #include wint_t getwchar(void); #define _GNU_SOURCE #include wint_t getwchar_unlocked(void); #include wint_t _getwchar_r(struct _reent *<[reent]>); #include wint_t _getwchar_unlocked_r(struct _reent *<[reent]>); DESCRIPTION <> function or macro is the wide character equivalent of the <> function. You can use <> to get the next wide character from the standard input stream. As a side effect, <> advances the standard input's current position indicator. <> is a non-thread-safe version of <>. <> may only safely be used within a scope protected by flockfile() (or ftrylockfile()) and funlockfile(). This function may safely be used in a multi-threaded program if and only if they are called while the invoking thread owns the (FILE *) object, as is the case after a successful call to the flockfile() or ftrylockfile() functions. If threads are disabled, then <> is equivalent to <>. The alternate functions <<_getwchar_r>> and <<_getwchar_unlocked_r>> are reentrant versions of the above. The extra argument <[reent]> is a pointer to a reentrancy structure. RETURNS The next wide character cast to <>, unless there is no more data, or the host system reports a read error; in either of these situations, <> returns <>. You can distinguish the two situations that cause an <> result by using `<>' and `<>'. PORTABILITY <> is required by C99. <> is a GNU extension. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" #undef getwchar wint_t _getwchar_r (struct _reent *ptr) { return _fgetwc_r (ptr, stdin); } /* * Synonym for fgetwc(stdin). */ wint_t getwchar (void) { _REENT_SMALL_CHECK_INIT (_REENT); return fgetwc (stdin); } picolibc-1.7.4/newlib/libc/stdio/getwchar_u.c000066400000000000000000000032761414576234500211410ustar00rootroot00000000000000/* * Copyright (c) 2014 Red Hat, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _GNU_SOURCE #include <_ansi.h> #include #include #include "local.h" #undef getwchar_unlocked wint_t _getwchar_unlocked_r (struct _reent *ptr) { return _fgetwc_unlocked_r (ptr, stdin); } /* * Synonym for fgetwc_unlocked(stdin). */ wint_t getwchar_unlocked (void) { _REENT_SMALL_CHECK_INIT (_REENT); return fgetwc_unlocked (stdin); } picolibc-1.7.4/newlib/libc/stdio/iprintf.c000066400000000000000000000026511414576234500204600ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* doc in siprintf.c */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" #ifndef _REENT_ONLY int iprintf (const char *fmt, ...) { int ret; va_list ap; struct _reent *ptr = _REENT; _REENT_SMALL_CHECK_INIT (ptr); va_start (ap, fmt); ret = _vfiprintf_r (ptr, _stdout_r (ptr), fmt, ap); va_end (ap); return ret; } #endif /* ! _REENT_ONLY */ int _iprintf_r (struct _reent *ptr, const char *fmt, ...) { int ret; va_list ap; _REENT_SMALL_CHECK_INIT (ptr); va_start (ap, fmt); ret = _vfiprintf_r (ptr, _stdout_r (ptr), fmt, ap); va_end (ap); return ret; } picolibc-1.7.4/newlib/libc/stdio/iscanf.c000066400000000000000000000025621414576234500202510ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" #ifndef _REENT_ONLY int iscanf(const char *fmt, ...) { int ret; va_list ap; _REENT_SMALL_CHECK_INIT (_REENT); va_start (ap, fmt); ret = __svfiscanf_r (_REENT, _stdin_r (_REENT), fmt, ap); va_end (ap); return ret; } #endif /* !_REENT_ONLY */ int _iscanf_r(struct _reent *ptr, const char *fmt, ...) { int ret; va_list ap; _REENT_SMALL_CHECK_INIT (ptr); va_start (ap, fmt); ret = __svfiscanf_r (ptr, _stdin_r (ptr), fmt, ap); va_end (ap); return (ret); } picolibc-1.7.4/newlib/libc/stdio/local.h000066400000000000000000000301301414576234500200750ustar00rootroot00000000000000/* * Copyright (c) 1990, 2007 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * %W% (UofMD/Berkeley) %G% */ /* * Information local to this implementation of stdio, * in particular, macros and private variables. */ #include <_ansi.h> #include #include #include #include #ifdef __SCLE # include #endif /* The following define determines if the per-reent stdin, stdout and stderr streams are closed during _reclaim_reent(). The stdin, stdout and stderr streams are initialized to use file descriptors 0, 1 and 2 respectively. In case _STDIO_CLOSE_PER_REENT_STD_STREAMS is defined these file descriptors will be closed via close() provided the owner of the reent structure triggerd the on demand reent initilization, see CHECK_INIT(). */ #if !defined(__tirtos__) #define _STDIO_CLOSE_PER_REENT_STD_STREAMS #endif /* The following macros are supposed to replace calls to _flockfile/_funlockfile and __sfp_lock_acquire/__sfp_lock_release. In case of multi-threaded environments using pthreads, it's not sufficient to lock the stdio functions against concurrent threads accessing the same data, the locking must also be secured against thread cancellation. The below macros have to be used in pairs. The _newlib_XXX_start macro starts with a opening curly brace, the _newlib_XXX_end macro ends with a closing curly brace, so the start macro and the end macro mark the code start and end of a critical section. In case the code leaves the critical section before reaching the end of the critical section's code end, use the appropriate _newlib_XXX_exit macro. */ #if !defined (__SINGLE_THREAD__) && defined (_POSIX_THREADS) \ && !defined (__rtems__) #define _STDIO_WITH_THREAD_CANCELLATION_SUPPORT #endif #if defined(__SINGLE_THREAD__) || defined(__IMPL_UNLOCKED__) # define _newlib_flockfile_start(_fp) # define _newlib_flockfile_exit(_fp) # define _newlib_flockfile_end(_fp) # define _newlib_sfp_lock_start() # define _newlib_sfp_lock_exit() # define _newlib_sfp_lock_end() #elif defined(_STDIO_WITH_THREAD_CANCELLATION_SUPPORT) #include /* Start a stream oriented critical section: */ # define _newlib_flockfile_start(_fp) \ { \ int __oldfpcancel; \ pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &__oldfpcancel); \ if (!(_fp->_flags2 & __SNLK)) \ _flockfile (_fp) /* Exit from a stream oriented critical section prematurely: */ # define _newlib_flockfile_exit(_fp) \ if (!(_fp->_flags2 & __SNLK)) \ _funlockfile (_fp); \ pthread_setcancelstate (__oldfpcancel, &__oldfpcancel); /* End a stream oriented critical section: */ # define _newlib_flockfile_end(_fp) \ if (!(_fp->_flags2 & __SNLK)) \ _funlockfile (_fp); \ pthread_setcancelstate (__oldfpcancel, &__oldfpcancel); \ } /* Start a stream list oriented critical section: */ # define _newlib_sfp_lock_start() \ { \ int __oldsfpcancel; \ pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &__oldsfpcancel); \ __sfp_lock_acquire () /* Exit from a stream list oriented critical section prematurely: */ # define _newlib_sfp_lock_exit() \ __sfp_lock_release (); \ pthread_setcancelstate (__oldsfpcancel, &__oldsfpcancel); /* End a stream list oriented critical section: */ # define _newlib_sfp_lock_end() \ __sfp_lock_release (); \ pthread_setcancelstate (__oldsfpcancel, &__oldsfpcancel); \ } #else /* !__SINGLE_THREAD__ && !__IMPL_UNLOCKED__ && !_STDIO_WITH_THREAD_CANCELLATION_SUPPORT */ # define _newlib_flockfile_start(_fp) \ { \ if (!(_fp->_flags2 & __SNLK)) \ _flockfile (_fp) # define _newlib_flockfile_exit(_fp) \ if (!(_fp->_flags2 & __SNLK)) \ _funlockfile(_fp); \ # define _newlib_flockfile_end(_fp) \ if (!(_fp->_flags2 & __SNLK)) \ _funlockfile(_fp); \ } # define _newlib_sfp_lock_start() \ { \ __sfp_lock_acquire () # define _newlib_sfp_lock_exit() \ __sfp_lock_release (); # define _newlib_sfp_lock_end() \ __sfp_lock_release (); \ } #endif /* __SINGLE_THREAD__ || __IMPL_UNLOCKED__ */ extern wint_t __fgetwc (struct _reent *, FILE *); extern wint_t __fputwc (struct _reent *, wchar_t, FILE *); extern u_char *__sccl (char *, u_char *fmt); extern int __svfscanf_r (struct _reent *,FILE *, const char *,va_list); extern int __ssvfscanf_r (struct _reent *,FILE *, const char *,va_list); extern int __svfiscanf_r (struct _reent *,FILE *, const char *,va_list); extern int __ssvfiscanf_r (struct _reent *,FILE *, const char *,va_list); extern int __svfwscanf_r (struct _reent *,FILE *, const wchar_t *,va_list); extern int __ssvfwscanf_r (struct _reent *,FILE *, const wchar_t *,va_list); extern int __svfiwscanf_r (struct _reent *,FILE *, const wchar_t *,va_list); extern int __ssvfiwscanf_r (struct _reent *,FILE *, const wchar_t *,va_list); int _svfprintf_r (struct _reent *, FILE *, const char *, va_list) _ATTRIBUTE ((__format__ (__printf__, 3, 0))); int _svfiprintf_r (struct _reent *, FILE *, const char *, va_list) _ATTRIBUTE ((__format__ (__printf__, 3, 0))); int _svfwprintf_r (struct _reent *, FILE *, const wchar_t *, va_list); int _svfiwprintf_r (struct _reent *, FILE *, const wchar_t *, va_list); extern FILE *__sfp (struct _reent *); extern int __sflags (struct _reent *,const char*, int*); extern int __sflush_r (struct _reent *,FILE *); #ifdef _STDIO_BSD_SEMANTICS extern int __sflushw_r (struct _reent *,FILE *); #endif extern int __srefill_r (struct _reent *,FILE *); extern _READ_WRITE_RETURN_TYPE __sread (struct _reent *, void *, char *, _READ_WRITE_BUFSIZE_TYPE); extern _READ_WRITE_RETURN_TYPE __seofread (struct _reent *, void *, char *, _READ_WRITE_BUFSIZE_TYPE); extern _READ_WRITE_RETURN_TYPE __swrite (struct _reent *, void *, const char *, _READ_WRITE_BUFSIZE_TYPE); extern _fpos_t __sseek (struct _reent *, void *, _fpos_t, int); extern int __sclose (struct _reent *, void *); extern int __stextmode (int); extern void __sinit (struct _reent *); extern void _cleanup_r (struct _reent *); extern void __smakebuf_r (struct _reent *, FILE *); extern int __swhatbuf_r (struct _reent *, FILE *, size_t *, int *); extern int _fwalk (struct _reent *, int (*)(FILE *)); extern int _fwalk_reent (struct _reent *, int (*)(struct _reent *, FILE *)); struct _glue * __sfmoreglue (struct _reent *,int n); extern int __submore (struct _reent *, FILE *); #ifdef __LARGE64_FILES extern _fpos64_t __sseek64 (struct _reent *, void *, _fpos64_t, int); extern _READ_WRITE_RETURN_TYPE __swrite64 (struct _reent *, void *, const char *, _READ_WRITE_BUFSIZE_TYPE); #endif /* Called by the main entry point fns to ensure stdio has been initialized. */ #if defined(_REENT_SMALL) && !defined(_REENT_GLOBAL_STDIO_STREAMS) #define CHECK_INIT(ptr, fp) \ do \ { \ struct _reent *_check_init_ptr = (ptr); \ if ((_check_init_ptr) && !(_check_init_ptr)->__sdidinit) \ __sinit (_check_init_ptr); \ if ((fp) == (FILE *)&__sf_fake_stdin) \ (fp) = _stdin_r(_check_init_ptr); \ else if ((fp) == (FILE *)&__sf_fake_stdout) \ (fp) = _stdout_r(_check_init_ptr); \ else if ((fp) == (FILE *)&__sf_fake_stderr) \ (fp) = _stderr_r(_check_init_ptr); \ } \ while (0) #else /* !_REENT_SMALL || _REENT_GLOBAL_STDIO_STREAMS */ #define CHECK_INIT(ptr, fp) \ do \ { \ struct _reent *_check_init_ptr = (ptr); \ if ((_check_init_ptr) && !(_check_init_ptr)->__sdidinit) \ __sinit (_check_init_ptr); \ } \ while (0) #endif /* !_REENT_SMALL || _REENT_GLOBAL_STDIO_STREAMS */ #define CHECK_STD_INIT(ptr) \ do \ { \ struct _reent *_check_init_ptr = (ptr); \ if ((_check_init_ptr) && !(_check_init_ptr)->__sdidinit) \ __sinit (_check_init_ptr); \ } \ while (0) /* Return true and set errno and stream error flag iff the given FILE cannot be written now. */ #define cantwrite(ptr, fp) \ ((((fp)->_flags & __SWR) == 0 || (fp)->_bf._base == NULL) && \ __swsetup_r(ptr, fp)) /* Test whether the given stdio file has an active ungetc buffer; release such a buffer, without restoring ordinary unread data. */ #define HASUB(fp) ((fp)->_ub._base != NULL) #define FREEUB(ptr, fp) { \ if ((fp)->_ub._base != (fp)->_ubuf) \ free((char *)(fp)->_ub._base); \ (fp)->_ub._base = NULL; \ } /* Test for an fgetline() buffer. */ #define HASLB(fp) ((fp)->_lb._base != NULL) #define FREELB(ptr, fp) { free((char *)(fp)->_lb._base); \ (fp)->_lb._base = NULL; } #ifdef _WIDE_ORIENT /* * Set the orientation for a stream. If o > 0, the stream has wide- * orientation. If o < 0, the stream has byte-orientation. */ #define ORIENT(fp,ori) \ do \ { \ if (!((fp)->_flags & __SORD)) \ { \ (fp)->_flags |= __SORD; \ if (ori > 0) \ (fp)->_flags2 |= __SWID; \ else \ (fp)->_flags2 &= ~__SWID; \ } \ } \ while (0) #else #define ORIENT(fp,ori) #endif /* WARNING: _dcvt is defined in the stdlib directory, not here! */ char *_dcvt (struct _reent *, char *, double, int, int, char, int); char *_sicvt (char *, short, char); char *_icvt (char *, int, char); char *_licvt (char *, long, char); #ifdef __GNUC__ char *_llicvt (char *, long long, char); #endif #define CVT_BUF_SIZE 128 #define NDYNAMIC 4 /* add four more whenever necessary */ #ifdef __SINGLE_THREAD__ #define __sfp_lock_acquire() #define __sfp_lock_release() #define __sinit_lock_acquire() #define __sinit_lock_release() #else #define __sfp_lock_acquire() __LIBC_LOCK() #define __sfp_lock_release() __LIBC_UNLOCK() #define __sinit_lock_acquire() __LIBC_LOCK() #define __sinit_lock_release() __LIBC_UNLOCK() #endif /* Types used in positional argument support in vfprinf/vfwprintf. The implementation is char/wchar_t dependent but the class and state tables are only defined once in vfprintf.c. */ typedef enum __packed { ZERO, /* '0' */ DIGIT, /* '1-9' */ DOLLAR, /* '$' */ MODFR, /* spec modifier */ SPEC, /* format specifier */ DOT, /* '.' */ STAR, /* '*' */ FLAG, /* format flag */ OTHER, /* all other chars */ MAX_CH_CLASS /* place-holder */ } __CH_CLASS; typedef enum __packed { START, /* start */ SFLAG, /* seen a flag */ WDIG, /* seen digits in width area */ WIDTH, /* processed width */ SMOD, /* seen spec modifier */ SDOT, /* seen dot */ VARW, /* have variable width specifier */ VARP, /* have variable precision specifier */ PREC, /* processed precision */ VWDIG, /* have digits in variable width specification */ VPDIG, /* have digits in variable precision specification */ DONE, /* done */ MAX_STATE, /* place-holder */ } __STATE; typedef enum __packed { NOOP, /* do nothing */ NUMBER, /* build a number from digits */ SKIPNUM, /* skip over digits */ GETMOD, /* get and process format modifier */ GETARG, /* get and process argument */ GETPW, /* get variable precision or width */ GETPWB, /* get variable precision or width and pushback fmt char */ GETPOS, /* get positional parameter value */ PWPOS, /* get positional parameter value for variable width or precision */ } __ACTION; extern const __CH_CLASS __chclass[256]; extern const __STATE __state_table[MAX_STATE][MAX_CH_CLASS]; extern const __ACTION __action_table[MAX_STATE][MAX_CH_CLASS]; picolibc-1.7.4/newlib/libc/stdio/makebuf.c000066400000000000000000000064501414576234500204200ustar00rootroot00000000000000/* * Copyright (c) 1990, 2007 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* No user fns here. Pesch 15apr92. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include #include "local.h" #define _DEFAULT_ASPRINTF_BUFSIZE 64 /* * Allocate a file buffer, or switch to unbuffered I/O. * Per the ANSI C standard, ALL tty devices default to line buffered. * * As a side effect, we set __SOPT or __SNPT (en/dis-able fseek * optimization) right after the _fstat() that finds the buffer size. */ void __smakebuf_r (struct _reent *ptr, register FILE *fp) { register void *p; int flags; size_t size; int couldbetty; if (fp->_flags & __SNBF) { fp->_bf._base = fp->_p = fp->_nbuf; fp->_bf._size = 1; return; } flags = __swhatbuf_r (ptr, fp, &size, &couldbetty); if ((p = malloc (size)) == NULL) { if (!(fp->_flags & __SSTR)) { fp->_flags = (fp->_flags & ~__SLBF) | __SNBF; fp->_bf._base = fp->_p = fp->_nbuf; fp->_bf._size = 1; } } else { ptr->__cleanup = _cleanup_r; fp->_flags |= __SMBF; fp->_bf._base = fp->_p = (unsigned char *) p; fp->_bf._size = size; if (couldbetty && isatty (fp->_file)) fp->_flags = (fp->_flags & ~__SNBF) | __SLBF; fp->_flags |= flags; } } /* * Internal routine to determine `proper' buffering for a file. */ int __swhatbuf_r (struct _reent *ptr, FILE *fp, size_t *bufsize, int *couldbetty) { #ifdef _FSEEK_OPTIMIZATION const int snpt = __SNPT; #else const int snpt = 0; #endif (void) ptr; #ifdef __USE_INTERNAL_STAT64 struct stat64 st; if (fp->_file < 0 || fstat64 (fp->_file, &st) < 0) #else struct stat st; if (fp->_file < 0 || fstat (fp->_file, &st) < 0) #endif { *couldbetty = 0; /* Check if we are be called by asprintf family for initial buffer. */ if (fp->_flags & __SMBF) *bufsize = _DEFAULT_ASPRINTF_BUFSIZE; else *bufsize = BUFSIZ; return (0); } /* could be a tty iff it is a character device */ *couldbetty = S_ISCHR(st.st_mode); #ifdef HAVE_BLKSIZE if (st.st_blksize > 0) { /* * Optimise fseek() only if it is a regular file. (The test for * __sseek is mainly paranoia.) It is safe to set _blksize * unconditionally; it will only be used if __SOPT is also set. */ *bufsize = st.st_blksize; fp->_blksize = st.st_blksize; return ((st.st_mode & S_IFMT) == S_IFREG ? __SOPT : snpt); } #endif *bufsize = BUFSIZ; return (snpt); } picolibc-1.7.4/newlib/libc/stdio/meson.build000066400000000000000000000132021414576234500207750ustar00rootroot00000000000000# # SPDX-License-Identifier: BSD-3-Clause # # Copyright © 2019 Keith Packard # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # subdir('sys') install_headers( 'stdio.h' ) general_srcs_stdio = [ 'clearerr.c', 'fclose.c', 'fdopen.c', 'feof.c', 'ferror.c', 'fflush.c', 'fgetc.c', 'fgetpos.c', 'fgets.c', 'fileno.c', 'findfp.c', 'flags.c', 'fopen.c', 'fprintf.c', 'fputc.c', 'fputs.c', 'fread.c', 'freopen.c', 'fscanf.c', 'fseek.c', 'fseeko.c', 'fsetpos.c', 'ftell.c', 'fvwrite.c', 'fwalk.c', 'fwrite.c', 'getc.c', 'getchar.c', 'getc_u.c', 'getchar_u.c', 'getdelim.c', 'getline.c', 'gets.c', 'makebuf.c', 'perror.c', 'printf.c', 'putc.c', 'putchar.c', 'putc_u.c', 'putchar_u.c', 'puts.c', 'refill.c', 'remove.c', 'rename.c', 'rewind.c', 'rget.c', 'scanf.c', 'sccl.c', 'setbuf.c', 'setbuffer.c', 'setlinebuf.c', 'setvbuf.c', 'snprintf.c', 'sprintf.c', 'sscanf.c', 'stdio.c', 'tmpfile.c', 'tmpnam.c', 'ungetc.c', 'vdprintf.c', 'vprintf.c', 'vscanf.c', 'vsnprintf.c', 'vsprintf.c', 'vsscanf.c', 'wbuf.c', 'wsetup.c', ] general_int_srcs_stdio = [ 'fiprintf.c', 'fiscanf.c', 'iprintf.c', 'iscanf.c', 'siprintf.c', 'siscanf.c', 'sniprintf.c', 'vdiprintf.c', 'vfprintf.c', 'vfwprintf.c', 'viprintf.c', 'viscanf.c', 'vsiprintf.c', 'vsiscanf.c', 'vsniprintf.c', ] if newlib_nano_formatted_io == false general_srcs_stdio += general_int_srcs_stdio endif elix_2_int_srcs_stdio = [ 'asiprintf.c', 'vasiprintf.c', ] elix_2_srcs_stdio = [ 'asprintf.c', 'fcloseall.c', 'fseeko.c', 'ftello.c', 'getw.c', 'mktemp.c', 'putw.c', 'vasprintf.c', ] if newlib_nano_formatted_io == false elix_2_srcs_stdio += elix_2_int_srcs_stdio endif elix_4_int_srcs_stdio = [ 'asniprintf.c', 'diprintf.c', 'vasniprintf.c', ] elix_4_srcs_stdio = [ 'asnprintf.c', 'clearerr_u.c', 'dprintf.c', 'feof_u.c', 'ferror_u.c', 'fflush_u.c', 'fgetc_u.c', 'fgets_u.c', 'fgetwc.c', 'fgetwc_u.c', 'fgetws.c', 'fgetws_u.c', 'fileno_u.c', 'fmemopen.c', 'fopencookie.c', 'fpurge.c', 'fputc_u.c', 'fputs_u.c', 'fputwc.c', 'fputwc_u.c', 'fputws.c', 'fputws_u.c', 'fread_u.c', 'fsetlocking.c', 'funopen.c', 'fwide.c', 'fwprintf.c', 'fwrite_u.c', 'fwscanf.c', 'getwc.c', 'getwc_u.c', 'getwchar.c', 'getwchar_u.c', 'open_memstream.c', 'putwc.c', 'putwc_u.c', 'putwchar.c', 'putwchar_u.c', 'stdio_ext.c', 'swprintf.c', 'swscanf.c', 'ungetwc.c', 'vasnprintf.c', 'vswprintf.c', 'vswscanf.c', 'vwprintf.c', 'vwscanf.c', 'wprintf.c', 'wscanf.c', ] if newlib_nano_formatted_io == false elix_4_srcs_stdio += elix_4_int_srcs_stdio endif elix_srcs_stdio = [] if newlib_elix_level >= 2 elix_srcs_stdio += elix_2_srcs_stdio endif if newlib_elix_level >= 4 elix_srcs_stdio += elix_4_srcs_stdio endif nano_printf_srcs_stdio = [ 'nano-svfprintf.c', 'nano-svfscanf.c', 'nano-vfprintf.c', 'nano-vfprintf_float.c', 'nano-vfprintf_i.c', 'nano-vfscanf.c', 'nano-vfscanf_float.c', 'nano-vfscanf_i.c', 'svfiwprintf.c', 'svfwprintf.c', 'vfiwprintf.c', 'svfiwscanf.c', 'svfwscanf.c', 'vfiwscanf.c', 'vfwscanf.c', ] std_printf_srcs_stdio = [ 'svfiprintf.c', 'svfprintf.c', 'svfiscanf.c', 'svfscanf.c', 'vfiprintf.c', 'vfscanf.c', 'vfiscanf.c', 'svfiwprintf.c', 'svfwprintf.c', 'vfiwprintf.c', 'svfiwscanf.c', 'svfwscanf.c', 'vfiwscanf.c', 'vfwscanf.c', ] srcs_stdio = general_srcs_stdio if newlib_nano_formatted_io == false srcs_stdio += general_int_srcs_stdio srcs_stdio += std_printf_srcs_stdio else srcs_stdio += nano_printf_srcs_stdio endif srcs_stdio += elix_srcs_stdio hdrs_stdio = [ 'floatio.h', 'fvwrite.h', 'local.h', 'nano-vfprintf_local.h', 'nano-vfscanf_local.h', 'stdio_ext.h', 'stdio.h', 'vfieeefp.h', ] srcs_stdio_use = [] foreach file : srcs_stdio s_file = fs.replace_suffix(file, '.S') if file in srcs_machine message('libc/stdio/' + file + ': machine overrides generic') elif s_file in srcs_machine message('libc/stdio/' + s_file + ': machine overrides generic') else srcs_stdio_use += file endif endforeach src_stdio = files(srcs_stdio_use) picolibc-1.7.4/newlib/libc/stdio/mktemp.c000066400000000000000000000222421414576234500203000ustar00rootroot00000000000000/* * Copyright (c) 1987 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that: (1) source distributions retain this entire copyright * notice and comment, and (2) distributions including binaries display * the following acknowledgement: ``This product includes software * developed by the University of California, Berkeley and its contributors'' * in the documentation or other materials provided with the distribution. * Neither the name of the University nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* This is file MKTEMP.C */ /* This file may have been modified by DJ Delorie (Jan 1991). If so, ** these modifications are Copyright (C) 1991 DJ Delorie. */ /* FUNCTION <>, <>, <>, <>, <>---generate unused file name <>---generate unused directory INDEX mktemp INDEX mkdtemp INDEX mkstemp INDEX mkstemps INDEX mkostemp INDEX mkostemps INDEX _mktemp_r INDEX _mkdtemp_r INDEX _mkstemp_r INDEX _mkstemps_r INDEX _mkostemp_r INDEX _mkostemps_r SYNOPSIS #include char *mktemp(char *<[path]>); char *mkdtemp(char *<[path]>); int mkstemp(char *<[path]>); int mkstemps(char *<[path]>, int <[suffixlen]>); int mkostemp(char *<[path]>, int <[flags]>); int mkostemps(char *<[path]>, int <[suffixlen]>, int <[flags]>); char *_mktemp_r(struct _reent *<[reent]>, char *<[path]>); char *_mkdtemp_r(struct _reent *<[reent]>, char *<[path]>); int *_mkstemp_r(struct _reent *<[reent]>, char *<[path]>); int *_mkstemps_r(struct _reent *<[reent]>, char *<[path]>, int <[len]>); int *_mkostemp_r(struct _reent *<[reent]>, char *<[path]>, int <[flags]>); int *_mkostemps_r(struct _reent *<[reent]>, char *<[path]>, int <[len]>, int <[flags]>); DESCRIPTION <>, <>, and <> attempt to generate a file name that is not yet in use for any existing file. <> and <> create the file and open it for reading and writing; <> simply generates the file name (making <> a security risk). <> and <> allow the addition of other <> flags, such as <>, <>, or <>. On platforms with a separate text mode, <> forces <>, while <> allows the choice between <>, <>, or 0 for default. <> attempts to create a directory instead of a file, with a permissions mask of 0700. You supply a simple pattern for the generated file name, as the string at <[path]>. The pattern should be a valid filename (including path information if you wish) ending with at least six `<>' characters. The generated filename will match the leading part of the name you supply, with the trailing `<>' characters replaced by some combination of digits and letters. With <>, the `<>' characters end <[suffixlen]> bytes before the end of the string. The alternate functions <<_mktemp_r>>, <<_mkdtemp_r>>, <<_mkstemp_r>>, <<_mkostemp_r>>, <<_mkostemps_r>>, and <<_mkstemps_r>> are reentrant versions. The extra argument <[reent]> is a pointer to a reentrancy structure. RETURNS <> returns the pointer <[path]> to the modified string representing an unused filename, unless it could not generate one, or the pattern you provided is not suitable for a filename; in that case, it returns <>. Be aware that there is an inherent race between generating the name and attempting to create a file by that name; you are advised to use <>. <> returns the pointer <[path]> to the modified string if the directory was created, otherwise it returns <>. <>, <>, <>, and <> return a file descriptor to the newly created file, unless it could not generate an unused filename, or the pattern you provided is not suitable for a filename; in that case, it returns <<-1>>. NOTES Never use <>. The generated filenames are easy to guess and there's a race between the test if the file exists and the creation of the file. In combination this makes <> prone to attacks and using it is a security risk. Whenever possible use <> instead. It doesn't suffer the race condition. PORTABILITY ANSI C does not require either <> or <>; the System V Interface Definition requires <> as of Issue 2. POSIX 2001 requires <>, and POSIX 2008 requires <> while deprecating <>. <>, <>, and <> are not standardized. Supporting OS subroutines required: <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include #include #include #include static int _gettemp (struct _reent *ptr, char *path, register int *doopen, int domkdir, size_t suffixlen, int flags) { register char *start, *trv; char *end; #ifdef __USE_INTERNAL_STAT64 struct stat64 sbuf; #else struct stat sbuf; #endif unsigned int pid; (void) ptr; pid = getpid (); for (trv = path; *trv; ++trv) /* extra X's get set to 0's */ continue; if (trv - path < (ptrdiff_t) suffixlen) { __errno_r(ptr) = EINVAL; return 0; } trv -= suffixlen; end = trv; while (path < trv && *--trv == 'X') { *trv = (pid % 10) + '0'; pid /= 10; } if (end - trv < 6) { __errno_r(ptr) = EINVAL; return 0; } /* * Check the target directory; if you have six X's and it * doesn't exist this runs for a *very* long time. */ for (start = trv + 1;; --trv) { if (trv <= path) break; if (*trv == '/') { *trv = '\0'; #ifdef __USE_INTERNAL_STAT64 if (stat64 (path, &sbuf)) #else if (stat (path, &sbuf)) #endif return (0); if (!(sbuf.st_mode & S_IFDIR)) { __errno_r(ptr) = ENOTDIR; return (0); } *trv = '/'; break; } } for (;;) { #if !defined _ELIX_LEVEL || _ELIX_LEVEL >= 4 if (domkdir) { #ifdef HAVE_MKDIR if (_mkdir_r (ptr, path, 0700) == 0) return 1; if (__errno_r(ptr) != EEXIST) return 0; #else /* !HAVE_MKDIR */ __errno_r(ptr) = ENOSYS; return 0; #endif /* !HAVE_MKDIR */ } else #endif /* _ELIX_LEVEL */ if (doopen) { if ((*doopen = open (path, O_CREAT | O_EXCL | O_RDWR | flags, 0600)) >= 0) return 1; if (__errno_r(ptr) != EEXIST) return 0; } #ifdef __USE_INTERNAL_STAT64 else if (stat64 (path, &sbuf)) #else else if (stat (path, &sbuf)) #endif return (__errno_r(ptr) == ENOENT ? 1 : 0); /* tricky little algorithm for backward compatibility */ for (trv = start;;) { if (trv == end) return 0; if (*trv == 'z') *trv++ = 'a'; else { /* Safe, since it only encounters 7-bit characters. */ if (isdigit ((unsigned char) *trv)) *trv = 'a'; else ++ * trv; break; } } } /*NOTREACHED*/ } #ifndef O_BINARY # define O_BINARY 0 #endif int _mkstemp_r (struct _reent *ptr, char *path) { int fd; return (_gettemp (ptr, path, &fd, 0, 0, O_BINARY) ? fd : -1); } #if !defined _ELIX_LEVEL || _ELIX_LEVEL >= 4 char * _mkdtemp_r (struct _reent *ptr, char *path) { return (_gettemp (ptr, path, (int *) NULL, 1, 0, 0) ? path : NULL); } int _mkstemps_r (struct _reent *ptr, char *path, int len) { int fd; return (_gettemp (ptr, path, &fd, 0, len, O_BINARY) ? fd : -1); } int _mkostemp_r (struct _reent *ptr, char *path, int flags) { int fd; return (_gettemp (ptr, path, &fd, 0, 0, flags & ~O_ACCMODE) ? fd : -1); } int _mkostemps_r (struct _reent *ptr, char *path, int len, int flags) { int fd; return (_gettemp (ptr, path, &fd, 0, len, flags & ~O_ACCMODE) ? fd : -1); } #endif /* _ELIX_LEVEL */ char * _mktemp_r (struct _reent *ptr, char *path) { return (_gettemp (ptr, path, (int *) NULL, 0, 0, 0) ? path : (char *) NULL); } #ifndef _REENT_ONLY int mkstemp (char *path) { int fd; return (_gettemp (_REENT, path, &fd, 0, 0, O_BINARY) ? fd : -1); } # if !defined _ELIX_LEVEL || _ELIX_LEVEL >= 4 char * mkdtemp (char *path) { return (_gettemp (_REENT, path, (int *) NULL, 1, 0, 0) ? path : NULL); } int mkstemps (char *path, int len) { int fd; return (_gettemp (_REENT, path, &fd, 0, len, O_BINARY) ? fd : -1); } int mkostemp (char *path, int flags) { int fd; return (_gettemp (_REENT, path, &fd, 0, 0, flags & ~O_ACCMODE) ? fd : -1); } int mkostemps (char *path, int len, int flags) { int fd; return (_gettemp (_REENT, path, &fd, 0, len, flags & ~O_ACCMODE) ? fd : -1); } # endif /* _ELIX_LEVEL */ char * mktemp (char *path) { return (_gettemp (_REENT, path, (int *) NULL, 0, 0, 0) ? path : (char *) NULL); } #endif /* ! defined (_REENT_ONLY) */ picolibc-1.7.4/newlib/libc/stdio/nano-svfprintf.c000066400000000000000000000031761414576234500217620ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2020 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #define STRING_ONLY #include "nano-vfprintf.c" picolibc-1.7.4/newlib/libc/stdio/nano-svfscanf.c000066400000000000000000000031761414576234500215520ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright © 2020 Keith Packard * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #define STRING_ONLY #include "nano-vfscanf.c" picolibc-1.7.4/newlib/libc/stdio/nano-vfprintf.c000066400000000000000000000420361414576234500215750ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * This code is derived from software contributed to Berkeley by * Chris Torek. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* * Copyright (c) 2012-2014 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>, <>, <>, <>, <>---format argument list INDEX vfprintf INDEX _vfprintf_r INDEX vprintf INDEX _vprintf_r INDEX vsprintf INDEX _vsprintf_r INDEX vsnprintf INDEX _vsnprintf_r INDEX vasprintf INDEX _vasprintf_r INDEX vasnprintf INDEX _vasnprintf_r SYNOPSIS #include #include int vprintf(const char *<[fmt]>, va_list <[list]>); int vfprintf(FILE *<[fp]>, const char *<[fmt]>, va_list <[list]>); int vsprintf(char *<[str]>, const char *<[fmt]>, va_list <[list]>); int vsnprintf(char *<[str]>, size_t <[size]>, const char *<[fmt]>, va_list <[list]>); int vasprintf(char **<[strp]>, const char *<[fmt]>, va_list <[list]>); char *vasnprintf(char *<[str]>, size_t *<[size]>, const char *<[fmt]>, va_list <[list]>); int _vprintf_r(struct _reent *<[reent]>, const char *<[fmt]>, va_list <[list]>); int _vfprintf_r(struct _reent *<[reent]>, FILE *<[fp]>, const char *<[fmt]>, va_list <[list]>); int _vsprintf_r(struct _reent *<[reent]>, char *<[str]>, const char *<[fmt]>, va_list <[list]>); int _vasprintf_r(struct _reent *<[reent]>, char **<[str]>, const char *<[fmt]>, va_list <[list]>); int _vsnprintf_r(struct _reent *<[reent]>, char *<[str]>, size_t <[size]>, const char *<[fmt]>, va_list <[list]>); char *_vasnprintf_r(struct _reent *<[reent]>, char *<[str]>, size_t *<[size]>, const char *<[fmt]>, va_list <[list]>); DESCRIPTION <>, <>, <>, <>, <>, and <> are (respectively) variants of <>, <>, <>, <>, <>, and <>. They differ only in allowing their caller to pass the variable argument list as a <> object (initialized by <>) rather than directly accepting a variable number of arguments. The caller is responsible for calling <>. <<_vprintf_r>>, <<_vfprintf_r>>, <<_vasprintf_r>>, <<_vsprintf_r>>, <<_vsnprintf_r>>, and <<_vasnprintf_r>> are reentrant versions of the above. RETURNS The return values are consistent with the corresponding functions. PORTABILITY ANSI C requires <>, <>, <>, and <>. The remaining functions are newlib extensions. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #if defined(LIBC_SCCS) && !defined(lint) /*static char *sccsid = "from: @(#)vfprintf.c 5.50 (Berkeley) 12/16/92";*/ static char *rcsid = "$Id$"; #endif /* LIBC_SCCS and not lint */ /* Actual printf innards. This code is large and complicated... */ #include #define VFPRINTF vfprintf #ifdef STRING_ONLY # define _VFPRINTF_R _svfprintf_r #else # define _VFPRINTF_R _vfprintf_r #endif #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include #include #include #include #include "local.h" #include "../stdlib/local.h" #include "fvwrite.h" #include "vfieeefp.h" #include "nano-vfprintf_local.h" /* The __ssputs_r function is shared between all versions of vfprintf and vfwprintf. */ #ifdef STRING_ONLY int __ssputs_r (struct _reent *ptr, FILE *fp, const char *buf, size_t len) { register int w; w = fp->_w; if (len >= w && fp->_flags & (__SMBF | __SOPT)) { /* Must be asprintf family. */ unsigned char *str; int curpos = (fp->_p - fp->_bf._base); /* Choose a geometric growth factor to avoid * quadratic realloc behavior, but use a rate less * than (1+sqrt(5))/2 to accomodate malloc * overhead. asprintf EXPECTS us to overallocate, so * that it can add a trailing \0 without * reallocating. The new allocation should thus be * max(prev_size*1.5, curpos+len+1). */ int newsize = fp->_bf._size * 3 / 2; if (newsize < curpos + len + 1) newsize = curpos + len + 1; if (fp->_flags & __SOPT) { /* asnprintf leaves original buffer alone. */ str = (unsigned char *)malloc (newsize); if (!str) { errno = ENOMEM; goto err; } memcpy (str, fp->_bf._base, curpos); fp->_flags = (fp->_flags & ~__SOPT) | __SMBF; } else { str = (unsigned char *)realloc (fp->_bf._base, newsize); if (!str) { /* Free unneeded buffer. */ free (fp->_bf._base); /* Ensure correct errno, even if free changed it. */ errno = ENOMEM; goto err; } } fp->_bf._base = str; fp->_p = str + curpos; fp->_bf._size = newsize; w = len; fp->_w = newsize - curpos; } if (len < w) w = len; (void)memmove ((void *) fp->_p, (void *) buf, (size_t) (w)); fp->_w -= w; fp->_p += w; return 0; err: fp->_flags |= __SERR; return EOF; } /* __ssprint_r is the original implementation of __SPRINT. In nano version formatted IO it is reimplemented as __ssputs_r for non-wide char output, but __ssprint_r cannot be discarded because it is used by a serial of functions like svfwprintf for wide char output. */ int __ssprint_r (struct _reent *ptr, FILE *fp, register struct __suio *uio) { register size_t len; register int w; register struct __siov *iov; register const char *p = NULL; iov = uio->uio_iov; len = 0; if (uio->uio_resid == 0) { uio->uio_iovcnt = 0; return (0); } do { while (len == 0) { p = iov->iov_base; len = iov->iov_len; iov++; } w = fp->_w; if (len >= w && fp->_flags & (__SMBF | __SOPT)) { /* Must be asprintf family. */ unsigned char *str; int curpos = (fp->_p - fp->_bf._base); /* Choose a geometric growth factor to avoid * quadratic realloc behavior, but use a rate less * than (1+sqrt(5))/2 to accomodate malloc * overhead. asprintf EXPECTS us to overallocate, so * that it can add a trailing \0 without * reallocating. The new allocation should thus be * max(prev_size*1.5, curpos+len+1). */ int newsize = fp->_bf._size * 3 / 2; if (newsize < curpos + len + 1) newsize = curpos + len + 1; if (fp->_flags & __SOPT) { /* asnprintf leaves original buffer alone. */ str = (unsigned char *)malloc (newsize); if (!str) { errno = ENOMEM; goto err; } memcpy (str, fp->_bf._base, curpos); fp->_flags = (fp->_flags & ~__SOPT) | __SMBF; } else { str = (unsigned char *)realloc (fp->_bf._base, newsize); if (!str) { /* Free unneeded buffer. */ free (fp->_bf._base); /* Ensure correct errno, even if free changed it. */ errno = ENOMEM; goto err; } } fp->_bf._base = str; fp->_p = str + curpos; fp->_bf._size = newsize; w = len; fp->_w = newsize - curpos; } if (len < w) w = len; (void)memmove ((void *) fp->_p, (void *) p, (size_t) (w)); fp->_w -= w; fp->_p += w; /* Pretend we copied all. */ w = len; p += w; len -= w; } while ((uio->uio_resid -= w) != 0); uio->uio_resid = 0; uio->uio_iovcnt = 0; return 0; err: fp->_flags |= __SERR; uio->uio_resid = 0; uio->uio_iovcnt = 0; return EOF; } #else /* As __ssputs_r, __sprint_r is used by output functions for wide char, like vfwprint. */ /* Flush out all the vectors defined by the given uio, then reset it so that it can be reused. */ int __sprint_r (struct _reent *ptr, FILE *fp, register struct __suio *uio) { register int err = 0; if (uio->uio_resid == 0) { uio->uio_iovcnt = 0; return 0; } #ifdef _WIDE_ORIENT if (fp->_flags2 & __SWID) { struct __siov *iov; wchar_t *p; int i, len; iov = uio->uio_iov; for (; uio->uio_resid != 0; uio->uio_resid -= len * sizeof (wchar_t), iov++) { p = (wchar_t *) iov->iov_base; len = iov->iov_len / sizeof (wchar_t); for (i = 0; i < len; i++) { if (_fputwc_r (ptr, p[i], fp) == WEOF) { err = -1; goto out; } } } } else #endif err = __sfvwrite_r(ptr, fp, uio); out: uio->uio_resid = 0; uio->uio_iovcnt = 0; return err; } _NOINLINE_STATIC int __sfputc_r (struct _reent *ptr, int c, FILE *fp) { if (--fp->_w >= 0 || (fp->_w >= fp->_lbfsize && (char)c != '\n')) return (*fp->_p++ = c); else return (__swbuf_r(ptr, c, fp)); } int __sfputs_r (struct _reent *ptr, FILE *fp, const char *buf, size_t len) { register int i; #ifdef _WIDE_ORIENT if (fp->_flags2 & __SWID) { wchar_t *p; p = (wchar_t *) buf; for (i = 0; i < (len / sizeof (wchar_t)); i++) { if (_fputwc_r (ptr, p[i], fp) == WEOF) return -1; } } else #endif { for (i = 0; i < len; i++) { /* Call __sfputc_r to skip _fputc_r. */ if (__sfputc_r (ptr, (int)buf[i], fp) == EOF) return -1; } } return (0); } #endif /* STRING_ONLY. */ int _VFPRINTF_R (struct _reent *, FILE *, const char *, va_list); #ifndef STRING_ONLY int VFPRINTF (FILE * fp, const char *fmt0, va_list ap) { int result; result = _VFPRINTF_R (_REENT, fp, fmt0, ap); return result; } int vfiprintf (FILE *, const char *, __VALIST) _ATTRIBUTE ((__alias__("vfprintf"))); #endif #ifdef STRING_ONLY # define __SPRINT __ssputs_r #else # define __SPRINT __sfputs_r #endif /* Do not need FLUSH for all sprintf functions. */ #ifdef STRING_ONLY # define FLUSH() #else # define FLUSH() #endif int _VFPRINTF_R (struct _reent *data, FILE * fp, const char *fmt0, va_list ap) { register char *fmt; /* Format string. */ register int n, m; /* Handy integers (short term usage). */ register char *cp; /* Handy char pointer (short term usage). */ const char *flag_chars; struct _prt_data_t prt_data; /* All data for decoding format string. */ va_list ap_copy; /* Output function pointer. */ int (*pfunc)(struct _reent *, FILE *, const char *, size_t len); pfunc = __SPRINT; #ifndef STRING_ONLY /* Initialize std streams if not dealing with sprintf family. */ CHECK_INIT (data, fp); _newlib_flockfile_start (fp); /* Sorry, fprintf(read_only_file, "") returns EOF, not 0. */ if (cantwrite (data, fp)) { _newlib_flockfile_exit (fp); return (EOF); } #else /* Create initial buffer if we are called by asprintf family. */ if (fp->_flags & __SMBF && !fp->_bf._base) { fp->_bf._base = fp->_p = malloc (64); if (!fp->_p) { errno = ENOMEM; return EOF; } fp->_bf._size = 64; } #endif fmt = (char *)fmt0; prt_data.ret = 0; prt_data.blank = ' '; prt_data.zero = '0'; /* GCC PR 14577 at https://gcc.gnu.org/bugzilla/show_bug.cgi?id=14557 */ va_copy (ap_copy, ap); /* Scan the format for conversions (`%' character). */ for (;;) { cp = fmt; while (*fmt != '\0' && *fmt != '%') fmt += 1; if ((m = fmt - cp) != 0) { PRINT (cp, m); prt_data.ret += m; } if (*fmt == '\0') goto done; fmt++; /* Skip over '%'. */ prt_data.flags = 0; prt_data.width = 0; prt_data.prec = -1; prt_data.dprec = 0; prt_data.l_buf[0] = '\0'; #ifdef FLOATING_POINT prt_data.lead = 0; #endif /* The flags. */ /* * ``Note that 0 is taken as a flag, not as the * beginning of a field width.'' * -- ANSI X3J11 */ flag_chars = "#-0+ "; for (; cp = memchr (flag_chars, *fmt, 5); fmt++) prt_data.flags |= (1 << (cp - flag_chars)); if (prt_data.flags & SPACESGN) prt_data.l_buf[0] = ' '; /* * ``If the space and + flags both appear, the space * flag will be ignored.'' * -- ANSI X3J11 */ if (prt_data.flags & PLUSSGN) prt_data.l_buf[0] = '+'; /* The width. */ if (*fmt == '*') { /* * ``A negative field width argument is taken as a * - flag followed by a positive field width.'' * -- ANSI X3J11 * They don't exclude field widths read from args. */ prt_data.width = GET_ARG (n, ap_copy, int); if (prt_data.width < 0) { prt_data.width = -prt_data.width; prt_data.flags |= LADJUST; } fmt++; } else { for (; is_digit (*fmt); fmt++) prt_data.width = 10 * prt_data.width + to_digit (*fmt); } /* The precision. */ if (*fmt == '.') { fmt++; if (*fmt == '*') { fmt++; prt_data.prec = GET_ARG (n, ap_copy, int); if (prt_data.prec < 0) prt_data.prec = -1; } else { prt_data.prec = 0; for (; is_digit (*fmt); fmt++) prt_data.prec = 10 * prt_data.prec + to_digit (*fmt); } } /* The length modifiers. */ flag_chars = "hlL"; if ((cp = memchr (flag_chars, *fmt, 3)) != NULL) { prt_data.flags |= (SHORTINT << (cp - flag_chars)); fmt++; } /* The conversion specifiers. */ prt_data.code = *fmt++; cp = memchr ("efgEFG", prt_data.code, 6); #ifdef FLOATING_POINT /* If cp is not NULL, we are facing FLOATING POINT NUMBER. */ if (cp) { /* Consume floating point argument if _printf_float is not linked. */ if (_printf_float == NULL) { if (prt_data.flags & LONGDBL) GET_ARG (N, ap_copy, _LONG_DOUBLE); else GET_ARG (N, ap_copy, double); } else n = _printf_float (data, &prt_data, fp, pfunc, &ap_copy); } else #endif n = _printf_i (data, &prt_data, fp, pfunc, &ap_copy); if (n == -1) goto error; prt_data.ret += n; } done: FLUSH (); error: #ifndef STRING_ONLY _newlib_flockfile_end (fp); #endif va_end (ap_copy); return (__sferror (fp) ? EOF : prt_data.ret); } #ifdef STRING_ONLY int _svfiprintf_r (struct _reent *, FILE *, const char *, __VALIST) _ATTRIBUTE ((__alias__("_svfprintf_r"))); #else int _vfiprintf_r (struct _reent *, FILE *, const char *, __VALIST) _ATTRIBUTE ((__alias__("_vfprintf_r"))); #endif picolibc-1.7.4/newlib/libc/stdio/nano-vfprintf_float.c000066400000000000000000000220401414576234500227530ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * This code is derived from software contributed to Berkeley by * Chris Torek. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include #include #include #include #include #include "local.h" #include "../stdlib/local.h" #include "fvwrite.h" #include "vfieeefp.h" #include "nano-vfprintf_local.h" char *__cvt (struct _reent *data, _PRINTF_FLOAT_TYPE value, int ndigits, int flags, char *sign, int *decpt, int ch, int *length, char *buf); int __exponent (char *p0, int exp, int fmtch); #ifdef FLOATING_POINT /* Using reentrant DATA, convert finite VALUE into a string of digits with no decimal point, using NDIGITS precision and FLAGS as guides to whether trailing zeros must be included. Set *SIGN to nonzero if VALUE was negative. Set *DECPT to the exponent plus one. Set *LENGTH to the length of the returned string. CH must be one of [aAeEfFgG]; if it is [aA], then the return string lives in BUF, otherwise the return value shares the mprec reentrant storage. */ char * __cvt (struct _reent *data, _PRINTF_FLOAT_TYPE value, int ndigits, int flags, char *sign, int *decpt, int ch, int *length, char *buf) { int mode, dsgn; char *digits, *bp, *rve; union double_union tmp; tmp.d = value; /* This will check for "< 0" and "-0.0". */ if (word0 (tmp) & Sign_bit) { value = -value; *sign = '-'; } else *sign = '\000'; if (ch == 'f' || ch == 'F') { /* Ndigits after the decimal point. */ mode = 3; } else { /* To obtain ndigits after the decimal point for the 'e' and 'E' formats, round to ndigits + 1 significant figures. */ if (ch == 'e' || ch == 'E') { ndigits++; } /* Ndigits significant digits. */ mode = 2; } digits = _DTOA (value, mode, ndigits, decpt, &dsgn, &rve); /* Print trailing zeros. */ if ((ch != 'g' && ch != 'G') || flags & ALT) { bp = digits + ndigits; if (ch == 'f' || ch == 'F') { if (*digits == '0' && value) *decpt = -ndigits + 1; bp += *decpt; } /* Kludge for __dtoa irregularity. */ if (value == 0) rve = bp; while (rve < bp) *rve++ = '0'; } *length = rve - digits; return (digits); } /* This function is copied from exponent in vfprintf.c with support for C99 formats removed. We don't use the original function in order to decouple nano implementation of formatted IO from the Newlib one. */ int __exponent (char *p0, int exp, int fmtch) { register char *p, *t; char expbuf[MAXEXPLEN]; #define isa 0 p = p0; *p++ = isa ? 'p' - 'a' + fmtch : fmtch; if (exp < 0) { exp = -exp; *p++ = '-'; } else *p++ = '+'; t = expbuf + MAXEXPLEN; if (exp > 9) { do { *--t = to_char (exp % 10); } while ((exp /= 10) > 9); *--t = to_char (exp); for (; t < expbuf + MAXEXPLEN; *p++ = *t++); } else { if (!isa) *p++ = '0'; *p++ = to_char (exp); } return (p - p0); } /* Decode and print floating point number specified by "eEfgG". */ int _printf_float (struct _reent *data, struct _prt_data_t *pdata, FILE * fp, int (*pfunc) (struct _reent *, FILE *, const char *, size_t len), va_list * ap) { #define _fpvalue (pdata->_double_) char *decimal_point = localeconv ()->decimal_point; size_t decp_len = strlen (decimal_point); /* Temporary negative sign for floats. */ char softsign; /* Integer value of exponent. */ int expt; /* Character count for expstr. */ int expsize = 0; /* Actual number of digits returned by cvt. */ int ndig = 0; char *cp; int n; /* Field size expanded by dprec(not for _printf_float). */ int realsz; char code = pdata->code; if (pdata->flags & LONGDBL) { _fpvalue = (double) GET_ARG (N, *ap, _LONG_DOUBLE); } else { _fpvalue = GET_ARG (N, *ap, double); } /* Do this before tricky precision changes. If the output is infinite or NaN, leading zeros are not permitted. Otherwise, scanf could not read what printf wrote. */ if (isinf (_fpvalue)) { if (_fpvalue < 0) pdata->l_buf[0] = '-'; if (code <= 'G') /* 'A', 'E', 'F', or 'G'. */ cp = "INF"; else cp = "inf"; pdata->size = 3; pdata->flags &= ~ZEROPAD; goto print_float; } if (isnan (_fpvalue)) { if (signbit (_fpvalue)) pdata->l_buf[0] = '-'; if (code <= 'G') /* 'A', 'E', 'F', or 'G'. */ cp = "NAN"; else cp = "nan"; pdata->size = 3; pdata->flags &= ~ZEROPAD; goto print_float; } if (pdata->prec == -1) { pdata->prec = DEFPREC; } else if ((code == 'g' || code == 'G') && pdata->prec == 0) { pdata->prec = 1; } pdata->flags |= FPT; cp = __cvt (data, _fpvalue, pdata->prec, pdata->flags, &softsign, &expt, code, &ndig, cp); if (code == 'g' || code == 'G') { if (expt <= -4 || expt > pdata->prec) /* 'e' or 'E'. */ code -= 2; else code = 'g'; } if (code <= 'e') { /* 'a', 'A', 'e', or 'E' fmt. */ --expt; expsize = __exponent (pdata->expstr, expt, code); pdata->size = expsize + ndig; if (ndig > 1 || pdata->flags & ALT) ++pdata->size; } else { if (code == 'f') { /* 'f' fmt. */ if (expt > 0) { pdata->size = expt; if (pdata->prec || pdata->flags & ALT) pdata->size += pdata->prec + 1; } else /* "0.X". */ pdata->size = (pdata->prec || pdata->flags & ALT) ? pdata->prec + 2 : 1; } else if (expt >= ndig) { /* Fixed g fmt. */ pdata->size = expt; if (pdata->flags & ALT) ++pdata->size; } else pdata->size = ndig + (expt > 0 ? 1 : 2 - expt); pdata->lead = expt; } if (softsign) pdata->l_buf[0] = '-'; print_float: if (_printf_common (data, pdata, &realsz, fp, pfunc) == -1) goto error; if ((pdata->flags & FPT) == 0) { PRINT (cp, pdata->size); } else { /* Glue together f_p fragments. */ if (code >= 'f') { /* 'f' or 'g'. */ if (_fpvalue == 0) { /* Kludge for __dtoa irregularity. */ PRINT ("0", 1); if (expt < ndig || pdata->flags & ALT) { PRINT (decimal_point, decp_len); PAD (ndig - 1, pdata->zero); } } else if (expt <= 0) { PRINT ("0", 1); if (expt || ndig || pdata->flags & ALT) { PRINT (decimal_point, decp_len); PAD (-expt, pdata->zero); PRINT (cp, ndig); } } else { char *convbuf = cp; PRINTANDPAD (cp, convbuf + ndig, pdata->lead, pdata->zero); cp += pdata->lead; if (expt < ndig || pdata->flags & ALT) PRINT (decimal_point, decp_len); PRINTANDPAD (cp, convbuf + ndig, ndig - expt, pdata->zero); } } else { /* 'a', 'A', 'e', or 'E'. */ if (ndig > 1 || pdata->flags & ALT) { PRINT (cp, 1); cp++; PRINT (decimal_point, decp_len); if (_fpvalue) { PRINT (cp, ndig - 1); } /* "0.[0..]". */ else /* __dtoa irregularity. */ PAD (ndig - 1, pdata->zero); } else /* "XeYYY". */ PRINT (cp, 1); PRINT (pdata->expstr, expsize); } } /* Left-adjusting padding (always blank). */ if (pdata->flags & LADJUST) PAD (pdata->width - realsz, pdata->blank); return (pdata->width > realsz ? pdata->width : realsz); error: return -1; #undef _fpvalue } #endif picolibc-1.7.4/newlib/libc/stdio/nano-vfprintf_i.c000066400000000000000000000160441414576234500221050ustar00rootroot00000000000000/* * Copyright (c) 2012-2014 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include #include #include #include #include "local.h" #include "../stdlib/local.h" #include "fvwrite.h" #include "vfieeefp.h" #include "nano-vfprintf_local.h" /* Decode and print non-floating point data. */ int _printf_common (struct _reent *data, struct _prt_data_t *pdata, int *realsz, FILE *fp, int (*pfunc)(struct _reent *, FILE *, const char *, size_t len)) { int n; /* * All reasonable formats wind up here. At this point, `cp' * points to a string which (if not flags&LADJUST) should be * padded out to `width' places. If flags&ZEROPAD, it should * first be prefixed by any sign or other prefix; otherwise, * it should be blank padded before the prefix is emitted. * After any left-hand padding and prefixing, emit zeroes * required by a decimal [diouxX] precision, then print the * string proper, then emit zeroes required by any leftover * floating precision; finally, if LADJUST, pad with blanks. * If flags&FPT, ch must be in [aAeEfg]. * * Compute actual size, so we know how much to pad. * size excludes decimal prec; realsz includes it. */ *realsz = pdata->dprec > pdata->size ? pdata->dprec : pdata->size; if (pdata->l_buf[0]) (*realsz)++; if (pdata->flags & HEXPREFIX) *realsz += 2; /* Right-adjusting blank padding. */ if ((pdata->flags & (LADJUST|ZEROPAD)) == 0) PAD (pdata->width - *realsz, pdata->blank); /* Prefix. */ n = 0; if (pdata->l_buf[0]) n++; if (pdata->flags & HEXPREFIX) { pdata->l_buf[n++] = '0'; pdata->l_buf[n++] = pdata->l_buf[2]; } PRINT (pdata->l_buf, n); n = pdata->width - *realsz; if ((pdata->flags & (LADJUST|ZEROPAD)) != ZEROPAD || n < 0) n = 0; if (pdata->dprec > pdata->size) n += pdata->dprec - pdata->size; PAD (n, pdata->zero); return 0; error: return -1; } int _printf_i (struct _reent *data, struct _prt_data_t *pdata, FILE *fp, int (*pfunc)(struct _reent *, FILE *, const char *, size_t len), va_list *ap) { /* Field size expanded by dprec. */ int realsz; u_quad_t _uquad; int base; int n; char *cp = pdata->buf + BUF; char *xdigs = "0123456789ABCDEF"; /* Decoding the conversion specifier. */ switch (pdata->code) { case 'c': *--cp = GET_ARG (N, *ap, int); pdata->size = 1; goto non_number_nosign; case 'd': case 'i': _uquad = SARG (pdata->flags); if ((long) _uquad < 0) { _uquad = -_uquad; pdata->l_buf[0] = '-'; } base = 10; goto number; case 'u': case 'o': _uquad = UARG (pdata->flags); base = (pdata->code == 'o') ? 8 : 10; goto nosign; case 'X': pdata->l_buf[2] = 'X'; goto hex; case 'p': /* * ``The argument shall be a pointer to void. The * value of the pointer is converted to a sequence * of printable characters, in an implementation- * defined manner.'' * -- ANSI X3J11 */ pdata->flags |= HEXPREFIX; if (sizeof (void*) > sizeof (int)) pdata->flags |= LONGINT; /* NOSTRICT. */ case 'x': pdata->l_buf[2] = 'x'; xdigs = "0123456789abcdef"; hex: _uquad = UARG (pdata->flags); base = 16; if (pdata->flags & ALT) pdata->flags |= HEXPREFIX; /* Leading 0x/X only if non-zero. */ if (_uquad == 0) pdata->flags &= ~HEXPREFIX; /* Unsigned conversions. */ nosign: pdata->l_buf[0] = '\0'; /* * ``... diouXx conversions ... if a precision is * specified, the 0 flag will be ignored.'' * -- ANSI X3J11 */ number: if ((pdata->dprec = pdata->prec) >= 0) pdata->flags &= ~ZEROPAD; /* * ``The result of converting a zero value with an * explicit precision of zero is no characters.'' * -- ANSI X3J11 */ if (_uquad != 0 || pdata->prec != 0) { do { *--cp = xdigs[_uquad % base]; _uquad /= base; } while (_uquad); } /* For 'o' conversion, '#' increases the precision to force the first digit of the result to be zero. */ if (base == 8 && (pdata->flags & ALT) && pdata->prec <= pdata->size) *--cp = '0'; pdata->size = pdata->buf + BUF - cp; break; case 'n': if (pdata->flags & LONGINT) *GET_ARG (N, *ap, long_ptr_t) = pdata->ret; else if (pdata->flags & SHORTINT) *GET_ARG (N, *ap, short_ptr_t) = pdata->ret; else *GET_ARG (N, *ap, int_ptr_t) = pdata->ret; case '\0': pdata->size = 0; break; case 's': cp = GET_ARG (N, *ap, char_ptr_t); /* Precision gives the maximum number of chars to be written from a string, and take prec == -1 into consideration. Use normal Newlib approach here to support case where cp is not nul-terminated. */ char *p = memchr (cp, 0, pdata->prec); if (p != NULL) pdata->prec = p - cp; pdata->size = pdata->prec; goto non_number_nosign; default: /* "%?" prints ?, unless ? is NUL. */ /* Pretend it was %c with argument ch. */ *--cp = pdata->code; pdata->size = 1; non_number_nosign: pdata->l_buf[0] = '\0'; break; } /* Output. */ n = _printf_common (data, pdata, &realsz, fp, pfunc); if (n == -1) goto error; PRINT (cp, pdata->size); /* Left-adjusting padding (always blank). */ if (pdata->flags & LADJUST) PAD (pdata->width - realsz, pdata->blank); return (pdata->width > realsz ? pdata->width : realsz); error: return -1; } picolibc-1.7.4/newlib/libc/stdio/nano-vfprintf_local.h000066400000000000000000000216271414576234500227570ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * This code is derived from software contributed to Berkeley by * Chris Torek. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* * Copyright (c) 2012-2014 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef VFPRINTF_LOCAL #define VFPRINTF_LOCAL #ifndef NO_FLOATING_POINT # define FLOATING_POINT #endif #define _NO_POS_ARGS #undef _WANT_IO_C99_FORMATS /* Currently a test is made to see if long double processing is warranted. This could be changed in the future should the __ldtoa code be preferred over __dtoa. */ #define _NO_LONGDBL #define _NO_LONGLONG #define _PRINTF_FLOAT_TYPE double #if defined (FLOATING_POINT) # include #endif #ifdef FLOATING_POINT # include /* For %La, an exponent of 15 bits occupies the exponent character, a sign, and up to 5 digits. */ # define MAXEXPLEN 7 # define DEFPREC 6 # define _DTOA __dtoa # define FREXP frexp #endif /* FLOATING_POINT. */ /* BUF must be big enough for the maximum %#llo (assuming long long is at most 64 bits, this would be 23 characters), the maximum multibyte character %C, and the maximum default precision of %La (assuming long double is at most 128 bits with 113 bits of mantissa, this would be 29 characters). %e, %f, and %g use reentrant storage shared with mprec. All other formats that use buf get by with fewer characters. Making BUF slightly bigger reduces the need for malloc in %.*a and %S, when large precision or long strings are processed. The bigger size of 100 bytes is used on systems which allow number strings using the locale's grouping character. Since that's a multibyte value, we should use a conservative value. */ #define BUF 40 #define quad_t long #define u_quad_t unsigned long typedef quad_t * quad_ptr_t; typedef void *void_ptr_t; typedef char * char_ptr_t; typedef long * long_ptr_t; typedef int * int_ptr_t; typedef short * short_ptr_t; /* Macros for converting digits to letters and vice versa. */ #define to_digit(c) ((c) - '0') #define is_digit(c) ((unsigned)to_digit (c) <= 9) #define to_char(n) ((n) + '0') /* Flags used during conversion. */ #define ALT 0x001 /* Alternate form. */ #define LADJUST 0x002 /* Left adjustment. */ #define ZEROPAD 0x004 /* Zero (as opposed to blank) pad. */ #define PLUSSGN 0x008 /* Plus sign flag. */ #define SPACESGN 0x010 /* Space flag. */ #define HEXPREFIX 0x020 /* Add 0x or 0X prefix. */ #define SHORTINT 0x040 /* Short integer. */ #define LONGINT 0x080 /* Long integer. */ #define LONGDBL 0x100 /* Long double. */ /* ifdef _NO_LONGLONG, make QUADINT equivalent to LONGINT, so that %lld behaves the same as %ld, not as %d, as expected if: sizeof (long long) = sizeof long > sizeof int. */ #define QUADINT LONGINT #define FPT 0x400 /* Floating point number. */ /* Define as 0, to make SARG and UARG occupy fewer instructions. */ # define CHARINT 0 /* Macros to support positional arguments. */ #define GET_ARG(n, ap, type) (va_arg ((ap), type)) /* To extend shorts properly, we need both signed and unsigned argument extraction methods. Also they should be used in nano-vfprintf_i.c and nano-vfprintf_float.c only, since ap is a pointer to va_list. */ #define SARG(flags) \ (flags&LONGINT ? GET_ARG (N, (*ap), long) : \ flags&SHORTINT ? (long)(short)GET_ARG (N, (*ap), int) : \ flags&CHARINT ? (long)(signed char)GET_ARG (N, (*ap), int) : \ (long)GET_ARG (N, (*ap), int)) #define UARG(flags) \ (flags&LONGINT ? GET_ARG (N, (*ap), u_long) : \ flags&SHORTINT ? (u_long)(u_short)GET_ARG (N, (*ap), int) : \ flags&CHARINT ? (u_long)(unsigned char)GET_ARG (N, (*ap), int) : \ (u_long)GET_ARG (N, (*ap), u_int)) /* BEWARE, these `goto error' on error. And they are used in more than one functions. Following macros are each referred about twice in printf for integer, so it is not worth to rewrite them into functions. This situation may change in the future. */ #define PRINT(ptr, len) { \ if (pfunc (data, fp, (ptr), (len)) == EOF) \ goto error; \ } #define PAD(howmany, ch) { \ int temp_i = 0; \ while (temp_i < (howmany)) \ { \ if (pfunc (data, fp, &(ch), 1) == EOF) \ goto error; \ temp_i++; \ } \ } #define PRINTANDPAD(p, ep, len, ch) { \ int temp_n = (ep) - (p); \ if (temp_n > (len)) \ temp_n = (len); \ if (temp_n > 0) \ PRINT((p), temp_n); \ PAD((len) - (temp_n > 0 ? temp_n : 0), (ch)); \ } /* All data needed to decode format string are kept in below struct. */ struct _prt_data_t { int flags; /* Flags. */ int prec; /* Precision. */ int dprec; /* Decimal precision. */ int width; /* Width. */ int size; /* Size of converted field or string. */ int ret; /* Return value accumulator. */ char code; /* Current conversion specifier. */ char blank; /* Blank character. */ char zero; /* Zero character. */ char buf[BUF]; /* Output buffer for non-floating point number. */ char l_buf[3]; /* Sign&hex_prefix, "+/-" and "0x/X". */ #ifdef FLOATING_POINT _PRINTF_FLOAT_TYPE _double_; /* Double value. */ char expstr[MAXEXPLEN]; /* Buffer for exponent string. */ int lead; /* The sig figs before decimal or group sep. */ #endif }; extern int _printf_common (struct _reent *data, struct _prt_data_t *pdata, int *realsz, FILE *fp, int (*pfunc)(struct _reent *, FILE *, const char *, size_t len)); extern int _printf_i (struct _reent *data, struct _prt_data_t *pdata, FILE *fp, int (*pfunc)(struct _reent *, FILE *, const char *, size_t len), va_list *ap); /* Make _printf_float weak symbol, so it won't be linked in if target program does not need it. */ extern int _printf_float (struct _reent *data, struct _prt_data_t *pdata, FILE *fp, int (*pfunc)(struct _reent *, FILE *, const char *, size_t len), va_list *ap) _ATTRIBUTE((__weak__)); #endif picolibc-1.7.4/newlib/libc/stdio/nano-vfscanf.c000066400000000000000000000301021414576234500213540ustar00rootroot00000000000000/*- * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* * Copyright (c) 2012-2014 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FUNCTION <>, <>, <>---format argument list INDEX vfscanf INDEX _vfscanf_r INDEX vscanf INDEX _vscanf_r INDEX vsscanf INDEX _vsscanf_r SYNOPSIS #include #include int vscanf(const char *<[fmt]>, va_list <[list]>); int vfscanf(FILE *<[fp]>, const char *<[fmt]>, va_list <[list]>); int vsscanf(const char *<[str]>, const char *<[fmt]>, va_list <[list]>); int _vscanf_r(struct _reent *<[reent]>, const char *<[fmt]>, va_list <[list]>); int _vfscanf_r(struct _reent *<[reent]>, FILE *<[fp]>, const char *<[fmt]>, va_list <[list]>); int _vsscanf_r(struct _reent *<[reent]>, const char *<[str]>, const char *<[fmt]>, va_list <[list]>); DESCRIPTION <>, <>, and <> are (respectively) variants of <>, <>, and <>. They differ only in allowing their caller to pass the variable argument list as a <> object (initialized by <>) rather than directly accepting a variable number of arguments. RETURNS The return values are consistent with the corresponding functions: <> returns the number of input fields successfully scanned, converted, and stored; the return value does not include scanned fields which were not stored. If <> attempts to read at end-of-file, the return value is <>. If no fields were stored, the return value is <<0>>. The routines <<_vscanf_r>>, <<_vfscanf_f>>, and <<_vsscanf_r>> are reentrant versions which take an additional first parameter which points to the reentrancy structure. PORTABILITY These are GNU extensions. Supporting OS subroutines required: */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include #include #include #include #include #include #include #include "local.h" #include "../stdlib/local.h" #include "nano-vfscanf_local.h" #define VFSCANF vfscanf #define _VFSCANF_R _vfscanf_r #define __SVFSCANF __svfscanf #ifdef STRING_ONLY # define __SVFSCANF_R __ssvfscanf_r #else # define __SVFSCANF_R __svfscanf_r #endif /* vfscanf. */ #ifndef STRING_ONLY #ifndef _REENT_ONLY int VFSCANF (register FILE *fp, const char *fmt, va_list ap) { CHECK_INIT(_REENT, fp); return __SVFSCANF_R (_REENT, fp, fmt, ap); } int vfiscanf (FILE *, const char *, __VALIST) _ATTRIBUTE ((__alias__("vfscanf"))); int __SVFSCANF (register FILE *fp, char const *fmt0, va_list ap) { return __SVFSCANF_R (_REENT, fp, fmt0, ap); } #endif int _VFSCANF_R (struct _reent *data, register FILE *fp, const char *fmt, va_list ap) { CHECK_INIT(data, fp); return __SVFSCANF_R (data, fp, fmt, ap); } int _vfiscanf_r (struct _reent *, FILE *, const char *, __VALIST) _ATTRIBUTE ((__alias__("_vfscanf_r"))); #endif /* !STRING_ONLY. */ #if defined (STRING_ONLY) /* When dealing with the sscanf family, we don't want to use the regular ungetc which will drag in file I/O items we don't need. So, we create our own trimmed-down version. */ int _sungetc_r (struct _reent *data, int c, register FILE *fp) { if (c == EOF) return (EOF); /* After ungetc, we won't be at eof anymore. */ fp->_flags &= ~__SEOF; c = (unsigned char) c; /* If we are in the middle of ungetc'ing, just continue. This may require expanding the current ungetc buffer. */ if (HASUB (fp)) { if (fp->_r >= fp->_ub._size && __submore (data, fp)) return EOF; *--fp->_p = c; fp->_r++; return c; } /* If we can handle this by simply backing up, do so, but never replace the original character. (This makes sscanf() work when scanning `const' data). */ if (fp->_bf._base != NULL && fp->_p > fp->_bf._base && fp->_p[-1] == c) { fp->_p--; fp->_r++; return c; } /* Create an ungetc buffer. Initially, we will use the `reserve' buffer. */ fp->_ur = fp->_r; fp->_up = fp->_p; fp->_ub._base = fp->_ubuf; fp->_ub._size = sizeof (fp->_ubuf); fp->_ubuf[sizeof (fp->_ubuf) - 1] = c; fp->_p = &fp->_ubuf[sizeof (fp->_ubuf) - 1]; fp->_r = 1; return c; } /* String only version of __srefill_r for sscanf family. */ int __ssrefill_r (struct _reent * ptr, register FILE * fp) { /* Our only hope of further input is the ungetc buffer. If there is anything in that buffer to read, return. */ if (HASUB (fp)) { FREEUB (ptr, fp); if ((fp->_r = fp->_ur) != 0) { fp->_p = fp->_up; return 0; } } /* Otherwise we are out of character input. */ fp->_p = fp->_bf._base; fp->_r = 0; fp->_flags |= __SEOF; return EOF; } #else int _sungetc_r (struct _reent *, int, register FILE *); int __ssrefill_r (struct _reent *, register FILE *); size_t _sfread_r (struct _reent *, void *buf, size_t, size_t, FILE *); #endif /* !STRING_ONLY. */ int __SVFSCANF_R (struct _reent *rptr, register FILE *fp, char const *fmt0, va_list ap) { register u_char *fmt = (u_char *) fmt0; register int c; /* Character from format, or conversion. */ register char *p; /* Points into all kinds of strings. */ char ccltab[256]; /* Character class table for %[...]. */ va_list ap_copy; int ret; char *cp; struct _scan_data_t scan_data; int (*scan_func)(struct _reent*, struct _scan_data_t*, FILE *, va_list *); _newlib_flockfile_start (fp); scan_data.nassigned = 0; scan_data.nread = 0; scan_data.ccltab = ccltab; scan_data.pfn_ungetc = _ungetc_r; scan_data.pfn_refill = __srefill_r; /* GCC PR 14577 at https://gcc.gnu.org/bugzilla/show_bug.cgi?id=14557 */ va_copy (ap_copy, ap); for (;;) { if (*fmt == 0) goto all_done; if (isspace (*fmt)) { while ((fp->_r > 0 || !scan_data.pfn_refill(rptr, fp)) && isspace (*fp->_p)) { scan_data.nread++; fp->_r--; fp->_p++; } fmt++; continue; } if ((c = *fmt++) != '%') goto literal; scan_data.width = 0; scan_data.flags = 0; if (*fmt == '*') { scan_data.flags |= SUPPRESS; fmt++; } for (; is_digit (*fmt); fmt++) scan_data.width = 10 * scan_data.width + to_digit (*fmt); /* The length modifiers. */ p = "hlL"; if ((cp = memchr (p, *fmt, 3)) != NULL) { scan_data.flags |= (SHORT << (cp - p)); fmt++; } /* Switch on the format. continue if done; break once format type is derived. */ c = *fmt++; switch (c) { case '%': literal: if ((fp->_r <= 0 && scan_data.pfn_refill(rptr, fp))) goto input_failure; if (*fp->_p != c) goto match_failure; fp->_r--, fp->_p++; scan_data.nread++; continue; case 'p': scan_data.flags |= POINTER; case 'x': case 'X': scan_data.flags |= PFXOK; scan_data.base = 16; goto number; case 'd': case 'u': scan_data.base = 10; goto number; case 'i': scan_data.base = 0; goto number; case 'o': scan_data.base = 8; number: scan_data.code = (c < 'o') ? CT_INT : CT_UINT; break; case '[': fmt = (u_char *) __sccl (ccltab, (unsigned char *) fmt); scan_data.flags |= NOSKIP; scan_data.code = CT_CCL; break; case 'c': scan_data.flags |= NOSKIP; scan_data.code = CT_CHAR; break; case 's': scan_data.code = CT_STRING; break; case 'n': if (scan_data.flags & SUPPRESS) /* ??? */ continue; if (scan_data.flags & SHORT) *GET_ARG (N, ap_copy, short *) = scan_data.nread; else if (scan_data.flags & LONG) *GET_ARG (N, ap_copy, long *) = scan_data.nread; else *GET_ARG (N, ap_copy, int *) = scan_data.nread; continue; /* Disgusting backwards compatibility hacks. XXX. */ case '\0': /* compat. */ _newlib_flockfile_exit (fp); va_end (ap_copy); return EOF; #ifdef FLOATING_POINT case 'e': case 'E': case 'f': case 'F': case 'g': case 'G': scan_data.code = CT_FLOAT; break; #endif default: /* compat. */ scan_data.code = CT_INT; scan_data.base = 10; break; } /* We have a conversion that requires input. */ if ((fp->_r <= 0 && scan_data.pfn_refill (rptr, fp))) goto input_failure; /* Consume leading white space, except for formats that suppress this. */ if ((scan_data.flags & NOSKIP) == 0) { while (isspace (*fp->_p)) { scan_data.nread++; if (--fp->_r > 0) fp->_p++; else if (scan_data.pfn_refill (rptr, fp)) goto input_failure; } /* Note that there is at least one character in the buffer, so conversions that do not set NOSKIP ca no longer result in an input failure. */ } ret = 0; if (scan_data.code < CT_INT) ret = _scanf_chars (rptr, &scan_data, fp, &ap_copy); else if (scan_data.code < CT_FLOAT) ret = _scanf_i (rptr, &scan_data, fp, &ap_copy); #ifdef FLOATING_POINT else if (_scanf_float) ret = _scanf_float (rptr, &scan_data, fp, &ap_copy); #endif if (ret == MATCH_FAILURE) goto match_failure; else if (ret == INPUT_FAILURE) goto input_failure; } input_failure: /* On read failure, return EOF failure regardless of matches; errno should have been set prior to here. On EOF failure (including invalid format string), return EOF if no matches yet, else number of matches made prior to failure. */ _newlib_flockfile_exit (fp); va_end (ap_copy); return scan_data.nassigned && !(fp->_flags & __SERR) ? scan_data.nassigned : EOF; match_failure: all_done: /* Return number of matches, which can be 0 on match failure. */ _newlib_flockfile_end (fp); va_end (ap_copy); return scan_data.nassigned; } #ifdef STRING_ONLY int __ssvfiscanf_r (struct _reent *, FILE *, const char *, __VALIST) _ATTRIBUTE ((__alias__("__ssvfscanf_r"))); #else int __svfiscanf_r (struct _reent *, FILE *, const char *, __VALIST) _ATTRIBUTE ((__alias__("__svfscanf_r"))); #endif picolibc-1.7.4/newlib/libc/stdio/nano-vfscanf_float.c000066400000000000000000000175731414576234500225620ustar00rootroot00000000000000/*- * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include #include #include #include #include #include #include #include "local.h" #include "../stdlib/local.h" #include "nano-vfscanf_local.h" #ifdef FLOATING_POINT int _scanf_float (struct _reent *rptr, struct _scan_data_t *pdata, FILE *fp, va_list *ap) { int c; char *p; float *flp; _LONG_DOUBLE *ldp; /* Scan a floating point number as if by strtod. */ /* This code used to assume that the number of digits is reasonable. However, ANSI / ISO C makes no such stipulation; we have to get exact results even when there is an unreasonable amount of leading zeroes. */ long leading_zeroes = 0; long zeroes, exp_adjust; char *exp_start = NULL; unsigned width_left = 0; char nancount = 0; char infcount = 0; #ifdef hardway if (pdata->width == 0 || pdata->width > BUF - 1) #else /* size_t is unsigned, hence this optimisation. */ if (pdata->width - 1 > BUF - 2) #endif { width_left = pdata->width - (BUF - 1); pdata->width = BUF - 1; } pdata->flags |= SIGNOK | NDIGITS | DPTOK | EXPOK; zeroes = 0; exp_adjust = 0; for (p = pdata->buf; pdata->width; ) { c = *fp->_p; /* This code mimicks the integer conversion code, but is much simpler. */ switch (c) { case '0': if (pdata->flags & NDIGITS) { pdata->flags &= ~SIGNOK; zeroes++; if (width_left) { width_left--; pdata->width++; } goto fskip; } /* Fall through. */ case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (nancount + infcount == 0) { pdata->flags &= ~(SIGNOK | NDIGITS); goto fok; } break; case '+': case '-': if (pdata->flags & SIGNOK) { pdata->flags &= ~SIGNOK; goto fok; } break; case 'n': case 'N': if (nancount == 0 && zeroes == 0 && (pdata->flags & (NDIGITS | DPTOK | EXPOK)) == (NDIGITS | DPTOK | EXPOK)) { pdata->flags &= ~(SIGNOK | DPTOK | EXPOK | NDIGITS); nancount = 1; goto fok; } if (nancount == 2) { nancount = 3; goto fok; } if (infcount == 1 || infcount == 4) { infcount++; goto fok; } break; case 'a': case 'A': if (nancount == 1) { nancount = 2; goto fok; } break; case 'i': case 'I': if (infcount == 0 && zeroes == 0 && (pdata->flags & (NDIGITS | DPTOK | EXPOK)) == (NDIGITS | DPTOK | EXPOK)) { pdata->flags &= ~(SIGNOK | DPTOK | EXPOK | NDIGITS); infcount = 1; goto fok; } if (infcount == 3 || infcount == 5) { infcount++; goto fok; } break; case 'f': case 'F': if (infcount == 2) { infcount = 3; goto fok; } break; case 't': case 'T': if (infcount == 6) { infcount = 7; goto fok; } break; case 'y': case 'Y': if (infcount == 7) { infcount = 8; goto fok; } break; case '.': if (pdata->flags & DPTOK) { pdata->flags &= ~(SIGNOK | DPTOK); leading_zeroes = zeroes; goto fok; } break; case 'e': case 'E': /* No exponent without some digits. */ if ((pdata->flags & (NDIGITS | EXPOK)) == EXPOK || ((pdata->flags & EXPOK) && zeroes)) { if (! (pdata->flags & DPTOK)) { exp_adjust = zeroes - leading_zeroes; exp_start = p; } pdata->flags = (pdata->flags & ~(EXPOK | DPTOK)) | SIGNOK | NDIGITS; zeroes = 0; goto fok; } break; } break; fok: *p++ = c; fskip: pdata->width--; ++pdata->nread; if (--fp->_r > 0) fp->_p++; else if (pdata->pfn_refill (rptr, fp)) /* "EOF". */ break; } if (zeroes) pdata->flags &= ~NDIGITS; /* We may have a 'N' or possibly even [sign] 'N' 'a' as the start of 'NaN', only to run out of chars before it was complete (or having encountered a non-matching char). So check here if we have an outstanding nancount, and if so put back the chars we did swallow and treat as a failed match. FIXME - we still don't handle NAN([0xdigits]). */ if (nancount - 1U < 2U) { /* "nancount && nancount < 3". */ /* Newlib's ungetc works even if we called __srefill in the middle of a partial parse, but POSIX does not guarantee that in all implementations of ungetc. */ while (p > pdata->buf) { pdata->pfn_ungetc (rptr, *--p, fp); /* "[-+nNaA]". */ --pdata->nread; } return MATCH_FAILURE; } /* Likewise for 'inf' and 'infinity'. But be careful that 'infinite' consumes only 3 characters, leaving the stream at the second 'i'. */ if (infcount - 1U < 7U) { /* "infcount && infcount < 8". */ if (infcount >= 3) /* valid 'inf', but short of 'infinity'. */ while (infcount-- > 3) { pdata->pfn_ungetc (rptr, *--p, fp); /* "[iInNtT]". */ --pdata->nread; } else { while (p > pdata->buf) { pdata->pfn_ungetc (rptr, *--p, fp); /* "[-+iInN]". */ --pdata->nread; } return MATCH_FAILURE; } } /* If no digits, might be missing exponent digits (just give back the exponent) or might be missing regular digits, but had sign and/or decimal point. */ if (pdata->flags & NDIGITS) { if (pdata->flags & EXPOK) { /* No digits at all. */ while (p > pdata->buf) { pdata->pfn_ungetc (rptr, *--p, fp); /* "[-+.]". */ --pdata->nread; } return MATCH_FAILURE; } /* Just a bad exponent (e and maybe sign). */ c = *--p; --pdata->nread; if (c != 'e' && c != 'E') { pdata->pfn_ungetc (rptr, c, fp); /* "[-+]". */ c = *--p; --pdata->nread; } pdata->pfn_ungetc (rptr, c, fp); /* "[eE]". */ } if ((pdata->flags & SUPPRESS) == 0) { double fp; long new_exp = 0; *p = 0; if ((pdata->flags & (DPTOK | EXPOK)) == EXPOK) { exp_adjust = zeroes - leading_zeroes; new_exp = -exp_adjust; exp_start = p; } else if (exp_adjust) new_exp = strtol ((exp_start + 1), NULL, 10) - exp_adjust; if (exp_adjust) { /* If there might not be enough space for the new exponent, truncate some trailing digits to make room. */ if (exp_start >= pdata->buf + BUF - MAX_LONG_LEN) exp_start = pdata->buf + BUF - MAX_LONG_LEN - 1; sprintf (exp_start, "e%ld", new_exp); } /* Current strtold routine is markedly slower than strtod. Only use it if we have a long double result. */ fp = strtod (pdata->buf, NULL); /* Do not support long double. */ if (pdata->flags & LONG) *GET_ARG (N, *ap, double *) = fp; else if (pdata->flags & LONGDBL) { ldp = GET_ARG (N, *ap, _LONG_DOUBLE *); *ldp = fp; } else { flp = GET_ARG (N, *ap, float *); if (isnan (fp)) *flp = nanf (""); else *flp = fp; } pdata->nassigned++; } return 0; } #endif picolibc-1.7.4/newlib/libc/stdio/nano-vfscanf_i.c000066400000000000000000000144761414576234500217040ustar00rootroot00000000000000/* * Copyright (c) 2012-2014 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include #include #include #include #include #include #include #include "local.h" #include "../stdlib/local.h" #include "nano-vfscanf_local.h" int _scanf_chars (struct _reent *rptr, struct _scan_data_t *pdata, FILE *fp, va_list *ap) { int n; char *p; if (pdata->width == 0) pdata->width = (pdata->code == CT_CHAR) ? 1 : (size_t)~0; n = 0; if ((pdata->flags & SUPPRESS) == 0) p = GET_ARG (N, *ap, char *); /* It's impossible to have EOF when we get here. */ while ((pdata->code == CT_CHAR) || (pdata->code == CT_CCL && pdata->ccltab[*fp->_p]) || (pdata->code == CT_STRING && !isspace (*fp->_p))) { n++; if ((pdata->flags & SUPPRESS) == 0) *p++ = *fp->_p; fp->_r--, fp->_p++; if (--pdata->width == 0) break; if ((fp->_r <= 0 && pdata->pfn_refill (rptr, fp))) break; } /* For CT_CHAR, it is impossible to have input_failure(n == 0) here. For CT_CCL, it is impossible to have input_failure here. For CT_STRING, it is possible to have empty string. */ if (n == 0 && pdata->code == CT_CCL) return MATCH_FAILURE; if ((pdata->flags & SUPPRESS) == 0) { pdata->nassigned++; if (pdata->code != CT_CHAR) *p = 0; } pdata->nread += n; return 0; } int _scanf_i (struct _reent *rptr, struct _scan_data_t *pdata, FILE *fp, va_list *ap) { #define CCFN_PARAMS (const char *, char **, int) /* Conversion function (strtol/strtoul). */ u_long (*ccfn)CCFN_PARAMS=0; char *p; int n; char *xdigits = "A-Fa-f8901234567]"; char *prefix_chars[3] = {"+-", "00", "xX"}; /* Scan an integer as if by strtol/strtoul. */ unsigned width_left = 0; int skips = 0; ccfn = (pdata->code == CT_INT) ? (u_long (*)CCFN_PARAMS)strtol : strtoul; #ifdef hardway if (pdata->width == 0 || pdata->width > BUF - 1) #else /* size_t is unsigned, hence this optimisation. */ if (pdata->width - 1 > BUF - 2) #endif { width_left = pdata->width - (BUF - 1); pdata->width = BUF - 1; } p = pdata->buf; pdata->flags |= NDIGITS | NZDIGITS | NNZDIGITS; /* Process [sign] [0] [xX] prefixes sequently. */ for (n = 0; n < 3; n++) { if (!memchr (prefix_chars[n], *fp->_p, 2)) continue; if (n == 1) { if (pdata->base == 0) { pdata->base = 8; pdata->flags |= PFXOK; } pdata->flags &= ~(NZDIGITS | NDIGITS); } else if (n == 2) { if ((pdata->flags & (PFXOK | NZDIGITS)) != PFXOK) continue; pdata->base = 16; /* We must reset the NZDIGITS and NDIGITS flags that would have been unset by seeing the zero that preceded the X or x. ??? It seems unnecessary to reset the NZDIGITS. */ pdata->flags |= NDIGITS; } if (pdata->width-- > 0) { *p++ = *fp->_p++; fp->_r--; if ((fp->_r <= 0 && pdata->pfn_refill (rptr, fp))) goto match_end; } } if (pdata->base == 0) pdata->base = 10; /* The check is un-necessary if xdigits points to exactly the string: "A-Fa-f8901234567]". The code is kept only for reading's sake. */ #if 0 if (pdata->base != 16) #endif xdigits = xdigits + 16 - pdata->base; /* Initilize ccltab according to pdata->base. */ __sccl (pdata->ccltab, (unsigned char *) xdigits); for (; pdata->width; pdata->width--) { n = *fp->_p; if (pdata->ccltab[n] == 0) break; else if (n == '0' && (pdata->flags & NNZDIGITS)) { ++skips; if (width_left) { width_left--; pdata->width++; } goto skip; } pdata->flags &= ~(NDIGITS | NNZDIGITS); /* Char is legal: store it and look at the next. */ *p++ = *fp->_p; skip: if (--fp->_r > 0) fp->_p++; else if (pdata->pfn_refill (rptr, fp)) /* "EOF". */ break; } /* If we had only a sign, it is no good; push back the sign. If the number ends in `x', it was [sign] '0' 'x', so push back the x and treat it as [sign] '0'. Use of ungetc here and below assumes ASCII encoding; we are only pushing back 7-bit characters, so casting to unsigned char is not necessary. */ match_end: if (pdata->flags & NDIGITS) { if (p > pdata->buf) pdata->pfn_ungetc (rptr, *--p, fp); /* "[-+xX]". */ if (p == pdata->buf) return MATCH_FAILURE; } if ((pdata->flags & SUPPRESS) == 0) { u_long ul; *p = 0; ul = (*ccfn) (pdata->buf, (char **) NULL, pdata->base); if (pdata->flags & POINTER) *GET_ARG (N, *ap, void **) = (void *) (uintptr_t) ul; else if (pdata->flags & SHORT) *GET_ARG (N, *ap, short *) = ul; else if (pdata->flags & LONG) *GET_ARG (N, *ap, long *) = ul; else *GET_ARG (N, *ap, int *) = ul; pdata->nassigned++; } pdata->nread += p - pdata->buf + skips; return 0; } picolibc-1.7.4/newlib/libc/stdio/nano-vfscanf_local.h000066400000000000000000000141631414576234500225440ustar00rootroot00000000000000/*- * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* * Copyright (c) 2012-2014 ARM Ltd * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the company may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef VFSCANF_LOCAL #define VFSCANF_LOCAL #ifndef NO_FLOATING_POINT #define FLOATING_POINT #endif #ifdef STRING_ONLY #undef _newlib_flockfile_start #undef _newlib_flockfile_exit #undef _newlib_flockfile_end #define _newlib_flockfile_start(x) {} #define _newlib_flockfile_exit(x) {} #define _newlib_flockfile_end(x) {} #define _ungetc_r _sungetc_r #define __srefill_r __ssrefill_r #endif #ifdef FLOATING_POINT #include #include /* Currently a test is made to see if long double processing is warranted. This could be changed in the future should the __ldtoa code be preferred over __dtoa. */ #define _NO_LONGDBL #include "floatio.h" #if ((MAXEXP+MAXFRACT+3) > MB_LEN_MAX) /* "3 = sign + decimal point + NUL". */ # define BUF (MAXEXP+MAXFRACT+3) #else # define BUF MB_LEN_MAX #endif /* An upper bound for how long a long prints in decimal. 4 / 13 approximates log (2). Add one char for roundoff compensation and one for the sign. */ #define MAX_LONG_LEN ((CHAR_BIT * sizeof (long) - 1) * 4 / 13 + 2) #else #define BUF 40 #endif #define _NO_LONGLONG #undef _WANT_IO_C99_FORMATS #undef _WANT_IO_POS_ARGS #define _NO_POS_ARGS /* Macros for converting digits to letters and vice versa. */ #define to_digit(c) ((c) - '0') #define is_digit(c) ((unsigned)to_digit (c) <= 9) #define to_char(n) ((n) + '0') /* * Flags used during conversion. */ #define SHORT 0x01 /* "h": short. */ #define LONG 0x02 /* "l": long or double. */ #define LONGDBL 0x04 /* "L/ll": long double or long long. */ #define CHAR 0x08 /* "hh": 8 bit integer. */ #define SUPPRESS 0x10 /* Suppress assignment. */ #define POINTER 0x20 /* Weird %p pointer (`fake hex'). */ #define NOSKIP 0x40 /* Do not skip blanks */ /* The following are used in numeric conversions only: SIGNOK, NDIGITS, DPTOK, and EXPOK are for floating point; SIGNOK, NDIGITS, PFXOK, and NZDIGITS are for integral. */ #define SIGNOK 0x80 /* "+/-" is (still) legal. */ #define NDIGITS 0x100 /* No digits detected. */ #define DPTOK 0x200 /* (Float) decimal point is still legal. */ #define EXPOK 0x400 /* (Float) exponent (e+3, etc) still legal. */ #define PFXOK 0x200 /* "0x" prefix is (still) legal. */ #define NZDIGITS 0x400 /* No zero digits detected. */ #define NNZDIGITS 0x800 /* No non-zero digits detected. */ /* Conversion types. */ #define CT_CHAR 0 /* "%c" conversion. */ #define CT_CCL 1 /* "%[...]" conversion. */ #define CT_STRING 2 /* "%s" conversion. */ #define CT_INT 3 /* Integer, i.e., strtol. */ #define CT_UINT 4 /* Unsigned integer, i.e., strtoul. */ #define CT_FLOAT 5 /* Floating, i.e., strtod. */ #define u_char unsigned char #define u_long unsigned long /* Macro to support positional arguments. */ #define GET_ARG(n, ap, type) (va_arg ((ap), type)) #define MATCH_FAILURE 1 #define INPUT_FAILURE 2 /* All data needed to decode format string are kept in below struct. */ struct _scan_data_t { int flags; /* Flags. */ int base; /* Base. */ size_t width; /* Width. */ int nassigned; /* Number of assignments so far. */ int nread; /* Number of chars read so far. */ char *ccltab; /* Table used for [ format. */ int code; /* Current conversion specifier. */ char buf[BUF]; /* Internal buffer for scan. */ /* Internal buffer for scan. */ int (*pfn_ungetc)(struct _reent*, int, FILE*); /* Internal buffer for scan. */ int (*pfn_refill)(struct _reent*, FILE*); }; extern int _scanf_chars (struct _reent *rptr, struct _scan_data_t *pdata, FILE *fp, va_list *ap); extern int _scanf_i (struct _reent *rptr, struct _scan_data_t *pdata, FILE *fp, va_list *ap); /* Make _scanf_float weak symbol, so it won't be linked in if target program does not need it. */ extern int _scanf_float (struct _reent *rptr, struct _scan_data_t *pdata, FILE *fp, va_list *ap) _ATTRIBUTE((__weak__)); #endif picolibc-1.7.4/newlib/libc/stdio/open_memstream.c000066400000000000000000000247721414576234500220300ustar00rootroot00000000000000/* Copyright (C) 2007 Eric Blake * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ /* FUNCTION <>, <>---open a write stream around an arbitrary-length string INDEX open_memstream INDEX open_wmemstream SYNOPSIS #include FILE *open_memstream(char **restrict <[buf]>, size_t *restrict <[size]>); #include FILE *open_wmemstream(wchar_t **restrict <[buf]>, size_t *restrict <[size]>); DESCRIPTION <> creates a seekable, byte-oriented <> stream that wraps an arbitrary-length buffer, created as if by <>. The current contents of *<[buf]> are ignored; this implementation uses *<[size]> as a hint of the maximum size expected, but does not fail if the hint was wrong. The parameters <[buf]> and <[size]> are later stored through following any call to <> or <>, set to the current address and usable size of the allocated string; although after fflush, the pointer is only valid until another stream operation that results in a write. Behavior is undefined if the user alters either *<[buf]> or *<[size]> prior to <>. <> is like <> just with the associated stream being wide-oriented. The size set in <[size]> in subsequent operations is the number of wide characters. The stream is write-only, since the user can directly read *<[buf]> after a flush; see <> for a way to wrap a string with a readable stream. The user is responsible for calling <> on the final *<[buf]> after <>. Any time the stream is flushed, a NUL byte is written at the current position (but is not counted in the buffer length), so that the string is always NUL-terminated after at most *<[size]> bytes (or wide characters in case of <>). However, data previously written beyond the current stream offset is not lost, and the NUL value written during a flush is restored to its previous value when seeking elsewhere in the string. RETURNS The return value is an open FILE pointer on success. On error, <> is returned, and <> will be set to EINVAL if <[buf]> or <[size]> is NULL, ENOMEM if memory could not be allocated, or EMFILE if too many streams are already open. PORTABILITY POSIX.1-2008 Supporting OS subroutines required: <>. */ #define _DEFAULT_SOURCE #include #include #include #include #include #include #include "local.h" #ifndef __LARGE64_FILES # define OFF_T off_t #else # define OFF_T _off64_t #endif /* Describe details of an open memstream. */ typedef struct memstream { void *storage; /* storage to free on close */ char **pbuf; /* pointer to the current buffer */ size_t *psize; /* pointer to the current size, smaller of pos or eof */ size_t pos; /* current position */ size_t eof; /* current file size */ size_t max; /* current malloc buffer size, always > eof */ union { char c; wchar_t w; } saved; /* saved character that lived at *psize before NUL */ int8_t wide; /* wide-oriented (>0) or byte-oriented (<0) */ } memstream; /* Write up to non-zero N bytes of BUF into the stream described by COOKIE, returning the number of bytes written or EOF on failure. */ static _READ_WRITE_RETURN_TYPE memwriter (struct _reent *ptr, void *cookie, const char *buf, _READ_WRITE_BUFSIZE_TYPE n) { memstream *c = (memstream *) cookie; char *cbuf = *c->pbuf; /* size_t is unsigned, but off_t is signed. Don't let stream get so big that user cannot do ftello. */ if (sizeof (OFF_T) == sizeof (size_t) && (ssize_t) (c->pos + n) < 0) { __errno_r(ptr) = EFBIG; return EOF; } /* Grow the buffer, if necessary. Choose a geometric growth factor to avoid quadratic realloc behavior, but use a rate less than (1+sqrt(5))/2 to accomodate malloc overhead. Overallocate, so that we can add a trailing \0 without reallocating. The new allocation should thus be max(prev_size*1.5, c->pos+n+1). */ if (c->pos + n >= c->max) { size_t newsize = c->max * 3 / 2; if (newsize < c->pos + n + 1) newsize = c->pos + n + 1; cbuf = realloc (cbuf, newsize); if (! cbuf) return EOF; /* errno already set to ENOMEM */ *c->pbuf = cbuf; c->max = newsize; } /* If we have previously done a seek beyond eof, ensure all intermediate bytes are NUL. */ if (c->pos > c->eof) memset (cbuf + c->eof, '\0', c->pos - c->eof); memcpy (cbuf + c->pos, buf, n); c->pos += n; /* If the user has previously written further, remember what the trailing NUL is overwriting. Otherwise, extend the stream. */ if (c->pos > c->eof) c->eof = c->pos; else if (c->wide > 0) c->saved.w = *(wchar_t *)(cbuf + c->pos); else c->saved.c = cbuf[c->pos]; cbuf[c->pos] = '\0'; *c->psize = (c->wide > 0) ? c->pos / sizeof (wchar_t) : c->pos; return n; } /* Seek to position POS relative to WHENCE within stream described by COOKIE; return resulting position or fail with EOF. */ static _fpos_t memseeker (struct _reent *ptr, void *cookie, _fpos_t pos, int whence) { memstream *c = (memstream *) cookie; OFF_T offset = (OFF_T) pos; if (whence == SEEK_CUR) offset += c->pos; else if (whence == SEEK_END) offset += c->eof; if (offset < 0) { __errno_r(ptr) = EINVAL; offset = -1; } else if ((size_t) offset != offset) { __errno_r(ptr) = ENOSPC; offset = -1; } #ifdef __LARGE64_FILES else if ((_fpos_t) offset != offset) { __errno_r(ptr) = EOVERFLOW; offset = -1; } #endif /* __LARGE64_FILES */ else { if (c->pos < c->eof) { if (c->wide > 0) *(wchar_t *)((*c->pbuf) + c->pos) = c->saved.w; else (*c->pbuf)[c->pos] = c->saved.c; c->saved.w = L'\0'; } c->pos = offset; if (c->pos < c->eof) { if (c->wide > 0) { c->saved.w = *(wchar_t *)((*c->pbuf) + c->pos); *(wchar_t *)((*c->pbuf) + c->pos) = L'\0'; *c->psize = c->pos / sizeof (wchar_t); } else { c->saved.c = (*c->pbuf)[c->pos]; (*c->pbuf)[c->pos] = '\0'; *c->psize = c->pos; } } else if (c->wide > 0) *c->psize = c->eof / sizeof (wchar_t); else *c->psize = c->eof; } return (_fpos_t) offset; } /* Seek to position POS relative to WHENCE within stream described by COOKIE; return resulting position or fail with EOF. */ #ifdef __LARGE64_FILES static _fpos64_t memseeker64 (struct _reent *ptr, void *cookie, _fpos64_t pos, int whence) { _off64_t offset = (_off64_t) pos; memstream *c = (memstream *) cookie; if (whence == SEEK_CUR) offset += c->pos; else if (whence == SEEK_END) offset += c->eof; if (offset < 0) { __errno_r(ptr) = EINVAL; offset = -1; } else if ((size_t) offset != offset) { __errno_r(ptr) = ENOSPC; offset = -1; } else { if (c->pos < c->eof) { if (c->wide > 0) *(wchar_t *)((*c->pbuf) + c->pos) = c->saved.w; else (*c->pbuf)[c->pos] = c->saved.c; c->saved.w = L'\0'; } c->pos = offset; if (c->pos < c->eof) { if (c->wide > 0) { c->saved.w = *(wchar_t *)((*c->pbuf) + c->pos); *(wchar_t *)((*c->pbuf) + c->pos) = L'\0'; *c->psize = c->pos / sizeof (wchar_t); } else { c->saved.c = (*c->pbuf)[c->pos]; (*c->pbuf)[c->pos] = '\0'; *c->psize = c->pos; } } else if (c->wide > 0) *c->psize = c->eof / sizeof (wchar_t); else *c->psize = c->eof; } return (_fpos64_t) offset; } #endif /* __LARGE64_FILES */ /* Reclaim resources used by stream described by COOKIE. */ static int memcloser (struct _reent *ptr, void *cookie) { memstream *c = (memstream *) cookie; char *buf; /* Be nice and try to reduce any unused memory. */ buf = realloc (*c->pbuf, c->wide > 0 ? (*c->psize + 1) * sizeof (wchar_t) : *c->psize + 1); if (buf) *c->pbuf = buf; free (c->storage); return 0; } /* Open a memstream that tracks a dynamic buffer in BUF and SIZE. Return the new stream, or fail with NULL. */ static FILE * internal_open_memstream_r (struct _reent *ptr, char **buf, size_t *size, int wide) { FILE *fp; memstream *c; if (!buf || !size) { __errno_r(ptr) = EINVAL; return NULL; } if ((fp = __sfp (ptr)) == NULL) return NULL; if ((c = (memstream *) malloc (sizeof *c)) == NULL) { _newlib_sfp_lock_start (); fp->_flags = 0; /* release */ #ifndef __SINGLE_THREAD__ __lock_close_recursive (fp->_lock); #endif _newlib_sfp_lock_end (); return NULL; } /* Use *size as a hint for initial sizing, but bound the initial malloc between 64 bytes (same as asprintf, to avoid frequent mallocs on small strings) and 64k bytes (to avoid overusing the heap if *size was garbage). */ c->max = *size; if (wide == 1) c->max *= sizeof(wchar_t); if (c->max < 64) c->max = 64; #if (SIZE_MAX >= 64 * 1024) else if (c->max > (size_t)64 * 1024) c->max = (size_t)64 * 1024; #endif *size = 0; *buf = malloc (c->max); if (!*buf) { _newlib_sfp_lock_start (); fp->_flags = 0; /* release */ #ifndef __SINGLE_THREAD__ __lock_close_recursive (fp->_lock); #endif _newlib_sfp_lock_end (); free (c); return NULL; } if (wide == 1) **((wchar_t **)buf) = L'\0'; else **buf = '\0'; c->storage = c; c->pbuf = buf; c->psize = size; c->pos = 0; c->eof = 0; c->saved.w = L'\0'; c->wide = (int8_t) wide; _newlib_flockfile_start (fp); fp->_file = -1; fp->_flags = __SWR; fp->_cookie = c; fp->_read = NULL; fp->_write = memwriter; fp->_seek = memseeker; #ifdef __LARGE64_FILES fp->_seek64 = memseeker64; fp->_flags |= __SL64; #endif fp->_close = memcloser; ORIENT (fp, wide); _newlib_flockfile_end (fp); return fp; } FILE * _open_memstream_r (struct _reent *ptr, char **buf, size_t *size) { return internal_open_memstream_r (ptr, buf, size, -1); } FILE * _open_wmemstream_r (struct _reent *ptr, wchar_t **buf, size_t *size) { return internal_open_memstream_r (ptr, (char **)buf, size, 1); } #ifndef _REENT_ONLY FILE * open_memstream (char **buf, size_t *size) { return _open_memstream_r (_REENT, buf, size); } FILE * open_wmemstream (wchar_t **buf, size_t *size) { return _open_wmemstream_r (_REENT, buf, size); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/perror.c000066400000000000000000000053651414576234500203230ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---print an error message on standard error INDEX perror INDEX _perror_r SYNOPSIS #include void perror(char *<[prefix]>); void _perror_r(struct _reent *<[reent]>, char *<[prefix]>); DESCRIPTION Use <> to print (on standard error) an error message corresponding to the current value of the global variable <>. Unless you use <> as the value of the argument <[prefix]>, the error message will begin with the string at <[prefix]>, followed by a colon and a space (<<: >>). The remainder of the error message is one of the strings described for <>. The alternate function <<_perror_r>> is a reentrant version. The extra argument <[reent]> is a pointer to a reentrancy structure. RETURNS <> returns no result. PORTABILITY ANSI C requires <>, but the strings issued vary from one implementation to another. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" #define WRITE_STR(str) \ { \ const char *p = (str); \ size_t len = strlen (p); \ while (len) \ { \ ssize_t len1 = write (fileno (fp), p, len); \ if (len1 < 0) \ break; \ len -= len1; \ p += len1; \ } \ } void _perror_r (struct _reent *ptr, const char *s) { char *error; int dummy; FILE *fp = _stderr_r (ptr); CHECK_INIT (ptr, fp); _newlib_flockfile_start(fp); _fflush_r (ptr, fp); if (s != NULL && *s != '\0') { WRITE_STR (s); WRITE_STR (": "); } if ((error = _strerror_r (__errno_r(ptr), 1, &dummy)) != NULL) WRITE_STR (error); #ifdef __SCLE WRITE_STR ((fp->_flags & __SCLE) ? "\r\n" : "\n"); #else WRITE_STR ("\n"); #endif fp->_flags &= ~__SOFF; _newlib_flockfile_end(fp); } #ifndef _REENT_ONLY void perror (const char *s) { _perror_r (_REENT, s); } #endif picolibc-1.7.4/newlib/libc/stdio/printf.c000066400000000000000000000032521414576234500203050ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* doc in sprintf.c */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" int _printf_r (struct _reent *ptr, const char *__restrict fmt, ...) { int ret; va_list ap; _REENT_SMALL_CHECK_INIT (ptr); va_start (ap, fmt); ret = _vfprintf_r (ptr, _stdout_r (ptr), fmt, ap); va_end (ap); return ret; } #ifdef _NANO_FORMATTED_IO int _iprintf_r (struct _reent *, const char *, ...) _ATTRIBUTE ((__alias__("_printf_r"))); #endif #ifndef _REENT_ONLY int printf (const char *__restrict fmt, ...) { int ret; va_list ap; struct _reent *ptr = _REENT; _REENT_SMALL_CHECK_INIT (ptr); va_start (ap, fmt); ret = _vfprintf_r (ptr, _stdout_r (ptr), fmt, ap); va_end (ap); return ret; } #ifdef _NANO_FORMATTED_IO int iprintf (const char *, ...) _ATTRIBUTE ((__alias__("printf"))); #endif #endif /* ! _REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/putc.c000066400000000000000000000062201414576234500177540ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---write a character (macro) INDEX putc INDEX _putc_r SYNOPSIS #include int putc(int <[ch]>, FILE *<[fp]>); #include int _putc_r(struct _reent *<[ptr]>, int <[ch]>, FILE *<[fp]>); DESCRIPTION <> is a macro, defined in <>. <> writes the argument <[ch]> to the file or stream identified by <[fp]>, after converting it from an <> to an <>. If the file was opened with append mode (or if the stream cannot support positioning), then the new character goes at the end of the file or stream. Otherwise, the new character is written at the current value of the position indicator, and the position indicator advances by one. For a subroutine version of this macro, see <>. The <<_putc_r>> function is simply the reentrant version of <> that takes an additional reentrant structure argument: <[ptr]>. RETURNS If successful, <> returns its argument <[ch]>. If an error intervenes, the result is <>. You can use `<)>>' to query for errors. PORTABILITY ANSI C requires <>; it suggests, but does not require, that <> be implemented as a macro. The standard explicitly permits macro implementations of <> to use the <[fp]> argument more than once; therefore, in a portable program, you should not use an expression with side effects as this argument. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include "local.h" /* * A subroutine version of the macro putc. */ #undef putc int _putc_r (struct _reent *ptr, int c, register FILE *fp) { int result; CHECK_INIT (ptr, fp); _newlib_flockfile_start (fp); result = __sputc_r (ptr, c, fp); _newlib_flockfile_end (fp); return result; } #ifndef _REENT_ONLY int putc (int c, register FILE *fp) { #if !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) int result; struct _reent *reent = _REENT; CHECK_INIT (reent, fp); _newlib_flockfile_start (fp); result = __sputc_r (reent, c, fp); _newlib_flockfile_end (fp); return result; #else return _putc_r (_REENT, c, fp); #endif } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/putc_u.c000066400000000000000000000052251414576234500203040ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---non-thread-safe version of putc (macro) INDEX putc_unlocked INDEX _putc_unlocked_r SYNOPSIS #include int putc_unlocked(int <[ch]>, FILE *<[fp]>); #include int _putc_unlocked_r(struct _reent *<[ptr]>, int <[ch]>, FILE *<[fp]>); DESCRIPTION <> is a non-thread-safe version of <> declared in <>. <> may only safely be used within a scope protected by flockfile() (or ftrylockfile()) and funlockfile(). These functions may safely be used in a multi-threaded program if and only if they are called while the invoking thread owns the ( FILE *) object, as is the case after a successful call to the flockfile() or ftrylockfile() functions. If threads are disabled, then <> is equivalent to <>. The function <<_putc_unlocked_r>> is simply the reentrant version of <> that takes an additional reentrant structure pointer argument: <[ptr]>. RETURNS See <>. PORTABILITY POSIX 1003.1 requires <>. <> may be implemented as a macro, so arguments should not have side-effects. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ #define _DEFAULT_SOURCE #include <_ansi.h> #include /* * A subroutine version of the macro putc_unlocked. */ #undef putc_unlocked int _putc_unlocked_r (struct _reent *ptr, int c, register FILE *fp) { /* CHECK_INIT is (eventually) called by __swbuf. */ return __sputc_r (ptr, c, fp); } #ifndef _REENT_ONLY int putc_unlocked (int c, register FILE *fp) { /* CHECK_INIT is (eventually) called by __swbuf. */ return __sputc_r (_REENT, c, fp); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/putchar.c000066400000000000000000000044011414576234500204460ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---write a character (macro) INDEX putchar INDEX _putchar_r SYNOPSIS #include int putchar(int <[ch]>); int _putchar_r(struct _reent *<[reent]>, int <[ch]>); DESCRIPTION <> is a macro, defined in <>. <> writes its argument to the standard output stream, after converting it from an <> to an <>. The alternate function <<_putchar_r>> is a reentrant version. The extra argument <[reent]> is a pointer to a reentrancy structure. RETURNS If successful, <> returns its argument <[ch]>. If an error intervenes, the result is <>. You can use `<>' to query for errors. PORTABILITY ANSI C requires <>; it suggests, but does not require, that <> be implemented as a macro. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ /* * A subroutine version of the macro putchar. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include "local.h" #undef putchar int _putchar_r (struct _reent *ptr, int c) { _REENT_SMALL_CHECK_INIT (ptr); return _putc_r (ptr, c, _stdout_r (ptr)); } #ifndef _REENT_ONLY int putchar (int c) { struct _reent *reent = _REENT; _REENT_SMALL_CHECK_INIT (reent); return _putc_r (reent, c, _stdout_r (reent)); } #endif picolibc-1.7.4/newlib/libc/stdio/putchar_u.c000066400000000000000000000044441414576234500210010ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---non-thread-safe version of putchar (macro) INDEX putchar_unlocked SYNOPSIS #include int putchar_unlocked(int <[ch]>); DESCRIPTION <> is a non-thread-safe version of <> declared in <>. <> may only safely be used within a scope protected by flockfile() (or ftrylockfile()) and funlockfile(). These functions may safely be used in a multi-threaded program if and only if they are called while the invoking thread owns the ( FILE *) object, as is the case after a successful call to the flockfile() or ftrylockfile() functions. If threads are disabled, then <> is equivalent to <>. RETURNS See <>. PORTABILITY POSIX 1003.1 requires <>. <> may be implemented as a macro. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ /* * A subroutine version of the macro putchar_unlocked. */ #define _DEFAULT_SOURCE #define _DEFAULT_SOURCE #include <_ansi.h> #include #undef putchar_unlocked int _putchar_unlocked_r (struct _reent *ptr, int c) { return putc_unlocked (c, _stdout_r (ptr)); } #ifndef _REENT_ONLY int putchar_unlocked (int c) { /* CHECK_INIT is (eventually) called by __swbuf. */ return _putchar_unlocked_r (_REENT, c); } #endif picolibc-1.7.4/newlib/libc/stdio/puts.c000066400000000000000000000060141414576234500177750ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---write a character string INDEX puts INDEX _puts_r SYNOPSIS #include int puts(const char *<[s]>); int _puts_r(struct _reent *<[reent]>, const char *<[s]>); DESCRIPTION <> writes the string at <[s]> (followed by a newline, instead of the trailing null) to the standard output stream. The alternate function <<_puts_r>> is a reentrant version. The extra argument <[reent]> is a pointer to a reentrancy structure. RETURNS If successful, the result is a nonnegative integer; otherwise, the result is <>. PORTABILITY ANSI C requires <>, but does not specify that the result on success must be <<0>>; any non-negative value is permitted. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "fvwrite.h" #include "local.h" /* * Write the given string to stdout, appending a newline. */ int _puts_r (struct _reent *ptr, const char * s) { #ifdef _FVWRITE_IN_STREAMIO int result; size_t c = strlen (s); struct __suio uio; struct __siov iov[2]; FILE *fp; iov[0].iov_base = s; iov[0].iov_len = c; iov[1].iov_base = "\n"; iov[1].iov_len = 1; uio.uio_resid = c + 1; uio.uio_iov = &iov[0]; uio.uio_iovcnt = 2; _REENT_SMALL_CHECK_INIT (ptr); fp = _stdout_r (ptr); CHECK_INIT (ptr, fp); _newlib_flockfile_start (fp); ORIENT (fp, -1); result = (__sfvwrite_r (ptr, fp, &uio) ? EOF : '\n'); _newlib_flockfile_end (fp); return result; #else int result = EOF; const char *p = s; FILE *fp; _REENT_SMALL_CHECK_INIT (ptr); fp = _stdout_r (ptr); CHECK_INIT (ptr, fp); _newlib_flockfile_start (fp); ORIENT (fp, -1); /* Make sure we can write. */ if (cantwrite (ptr, fp)) goto err; while (*p) { if (__sputc_r (ptr, *p++, fp) == EOF) goto err; } if (__sputc_r (ptr, '\n', fp) == EOF) goto err; result = '\n'; err: _newlib_flockfile_end (fp); return result; #endif } #ifndef _REENT_ONLY int puts (char const * s) { return _puts_r (_REENT, s); } #endif picolibc-1.7.4/newlib/libc/stdio/putw.c000066400000000000000000000032511414576234500200010ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---write a word (int) INDEX putw SYNOPSIS #include int putw(int <[w]>, FILE *<[fp]>); DESCRIPTION <> is a function, defined in <>. You can use <> to write a word to the file or stream identified by <[fp]>. As a side effect, <> advances the file's current position indicator. RETURNS Zero on success, <> on failure. PORTABILITY <> is a remnant of K&R C; it is not part of any ISO C Standard. <> should be used instead. In fact, this implementation of <> is based upon <>. Supporting OS subroutines required: <>. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ #include int putw (int w, register FILE *fp) { if (fwrite ((const char*)&w, sizeof (w), 1, fp) != 1) return EOF; return 0; } picolibc-1.7.4/newlib/libc/stdio/putwc.c000066400000000000000000000033431414576234500201460ustar00rootroot00000000000000/*- * Copyright (c) 2002 Tim J. Robbins. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" #undef putwc wint_t _putwc_r (struct _reent *ptr, wchar_t wc, FILE *fp) { return _fputwc_r (ptr, wc, fp); } /* * Synonym for fputwc(). The only difference is that putwc(), if it is a * macro, may evaluate `fp' more than once. */ wint_t putwc (wchar_t wc, FILE *fp) { return fputwc (wc, fp); } picolibc-1.7.4/newlib/libc/stdio/putwc_u.c000066400000000000000000000034641414576234500204760ustar00rootroot00000000000000/*- * Copyright (c) 2014 Red Hat, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _GNU_SOURCE #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" #undef putwc_unlocked wint_t _putwc_unlocked_r (struct _reent *ptr, wchar_t wc, FILE *fp) { return _fputwc_unlocked_r (ptr, wc, fp); } /* * Synonym for fputwc_unlocked(). The only difference is that putwc_unlocked(), * if it is a macro, may evaluate `fp' more than once. */ wint_t putwc_unlocked (wchar_t wc, FILE *fp) { return fputwc_unlocked (wc, fp); } picolibc-1.7.4/newlib/libc/stdio/putwchar.c000066400000000000000000000063441414576234500206450ustar00rootroot00000000000000/*- * Copyright (c) 2002 Tim J. Robbins. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* FUNCTION <>, <>---write a wide character to standard output INDEX putwchar INDEX putwchar_unlocked INDEX _putwchar_r INDEX _putwchar_unlocked_r SYNOPSIS #include wint_t putwchar(wchar_t <[wc]>); #include wint_t putwchar_unlocked(wchar_t <[wc]>); #include wint_t _putwchar_r(struct _reent *<[reent]>, wchar_t <[wc]>); #include wint_t _putwchar_unlocked_r(struct _reent *<[reent]>, wchar_t <[wc]>); DESCRIPTION The <> function or macro is the wide-character equivalent of the <> function. It writes the wide character wc to stdout. <> is a non-thread-safe version of <>. <> may only safely be used within a scope protected by flockfile() (or ftrylockfile()) and funlockfile(). This function may safely be used in a multi-threaded program if and only if they are called while the invoking thread owns the (FILE *) object, as is the case after a successful call to the flockfile() or ftrylockfile() functions. If threads are disabled, then <> is equivalent to <>. The alternate functions <<_putwchar_r>> and <<_putwchar_unlocked_r>> are reentrant versions of the above. The extra argument <[reent]> is a pointer to a reentrancy structure. RETURNS If successful, <> returns its argument <[wc]>. If an error intervenes, the result is <>. You can use `<>' to query for errors. PORTABILITY <> is required by C99. <> is a GNU extension. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" #undef putwchar wint_t _putwchar_r (struct _reent *ptr, wchar_t wc) { return _fputwc_r (ptr, wc, stdout); } /* * Synonym for fputwc(wc, stdout). */ wint_t putwchar (wchar_t wc) { _REENT_SMALL_CHECK_INIT (_REENT); return fputwc (wc, stdout); } picolibc-1.7.4/newlib/libc/stdio/putwchar_u.c000066400000000000000000000033701414576234500211650ustar00rootroot00000000000000/* * Copyright (c) 2014 Red Hat, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define _GNU_SOURCE #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" #undef putwchar_unlocked wint_t _putwchar_unlocked_r (struct _reent *ptr, wchar_t wc) { return _fputwc_unlocked_r (ptr, wc, stdout); } /* * Synonym for fputwc_unlocked(wc, stdout). */ wint_t putwchar_unlocked (wchar_t wc) { _REENT_SMALL_CHECK_INIT (_REENT); return fputwc_unlocked (wc, stdout); } picolibc-1.7.4/newlib/libc/stdio/refill.c000066400000000000000000000063031414576234500202600ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* No user fns here. Pesch 15apr92. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "local.h" static int lflush (FILE *fp) { if ((fp->_flags & (__SLBF | __SWR)) == (__SLBF | __SWR)) return fflush (fp); return 0; } /* * Refill a stdio buffer. * Return EOF on eof or error, 0 otherwise. */ int __srefill_r (struct _reent * ptr, register FILE * fp) { /* make sure stdio is set up */ CHECK_INIT (ptr, fp); ORIENT (fp, -1); fp->_r = 0; /* largely a convenience for callers */ #ifndef __CYGWIN__ /* SysV does not make this test; take it out for compatibility */ if (fp->_flags & __SEOF) return EOF; #endif /* if not already reading, have to be reading and writing */ if ((fp->_flags & __SRD) == 0) { if ((fp->_flags & __SRW) == 0) { __errno_r(ptr) = EBADF; fp->_flags |= __SERR; return EOF; } /* switch to reading */ if (fp->_flags & __SWR) { if (_fflush_r (ptr, fp)) return EOF; fp->_flags &= ~__SWR; fp->_w = 0; fp->_lbfsize = 0; } fp->_flags |= __SRD; } else { /* * We were reading. If there is an ungetc buffer, * we must have been reading from that. Drop it, * restoring the previous buffer (if any). If there * is anything in that buffer, return. */ if (HASUB (fp)) { FREEUB (ptr, fp); if ((fp->_r = fp->_ur) != 0) { fp->_p = fp->_up; return 0; } } } if (fp->_bf._base == NULL) __smakebuf_r (ptr, fp); /* * Before reading from a line buffered or unbuffered file, * flush all line buffered output files, per the ANSI C * standard. */ if (fp->_flags & (__SLBF | __SNBF)) { /* Ignore this file in _fwalk to avoid potential deadlock. */ short orig_flags = fp->_flags; fp->_flags = 1; (void) _fwalk (_GLOBAL_REENT, lflush); fp->_flags = orig_flags; /* Now flush this file without locking it. */ if ((fp->_flags & (__SLBF|__SWR)) == (__SLBF|__SWR)) __sflush_r (ptr, fp); } fp->_p = fp->_bf._base; fp->_r = fp->_read (ptr, fp->_cookie, (char *) fp->_p, fp->_bf._size); #ifndef __CYGWIN__ if (fp->_r <= 0) #else if (fp->_r > 0) fp->_flags &= ~__SEOF; else #endif { if (fp->_r == 0) fp->_flags |= __SEOF; else { fp->_r = 0; fp->_flags |= __SERR; } return EOF; } return 0; } picolibc-1.7.4/newlib/libc/stdio/remove.c000066400000000000000000000043051414576234500203000ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---delete a file's name INDEX remove INDEX _remove_r SYNOPSIS #include int remove(char *<[filename]>); int _remove_r(struct _reent *<[reent]>, char *<[filename]>); DESCRIPTION Use <> to dissolve the association between a particular filename (the string at <[filename]>) and the file it represents. After calling <> with a particular filename, you will no longer be able to open the file by that name. In this implementation, you may use <> on an open file without error; existing file descriptors for the file will continue to access the file's data until the program using them closes the file. The alternate function <<_remove_r>> is a reentrant version. The extra argument <[reent]> is a pointer to a reentrancy structure. RETURNS <> returns <<0>> if it succeeds, <<-1>> if it fails. PORTABILITY ANSI C requires <>, but only specifies that the result on failure be nonzero. The behavior of <> when you call it on an open file may vary among implementations. Supporting OS subroutine required: <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include int _remove_r (struct _reent *ptr, const char *filename) { (void) ptr; if (unlink (filename) == -1) return -1; return 0; } #ifndef _REENT_ONLY int remove (const char *filename) { return _remove_r (_REENT, filename); } #endif picolibc-1.7.4/newlib/libc/stdio/rename.c000066400000000000000000000035441414576234500202560ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---rename a file INDEX rename SYNOPSIS #include int rename(const char *<[old]>, const char *<[new]>); DESCRIPTION Use <> to establish a new name (the string at <[new]>) for a file now known by the string at <[old]>. After a successful <>, the file is no longer accessible by the string at <[old]>. If <> fails, the file named <<*<[old]>>> is unaffected. The conditions for failure depend on the host operating system. RETURNS The result is either <<0>> (when successful) or <<-1>> (when the file could not be renamed). PORTABILITY ANSI C requires <>, but only specifies that the result on failure be nonzero. The effects of using the name of an existing file as <<*<[new]>>> may vary from one implementation to another. Supporting OS subroutines required: <>, <>, or <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #ifndef _REENT_ONLY int rename (const char *old, const char *new) { return _rename_r (_REENT, old, new); } #endif picolibc-1.7.4/newlib/libc/stdio/rewind.c000066400000000000000000000033621414576234500202750ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---reinitialize a file or stream INDEX rewind INDEX _rewind_r SYNOPSIS #include void rewind(FILE *<[fp]>); void _rewind_r(struct _reent *<[ptr]>, FILE *<[fp]>); DESCRIPTION <> returns the file position indicator (if any) for the file or stream identified by <[fp]> to the beginning of the file. It also clears any error indicator and flushes any pending output. RETURNS <> does not return a result. PORTABILITY ANSI C requires <>. No supporting OS subroutines are required. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ #define _DEFAULT_SOURCE #include <_ansi.h> #include void _rewind_r (struct _reent * ptr, register FILE * fp) { (void) _fseek_r (ptr, fp, 0L, SEEK_SET); clearerr (fp); } #ifndef _REENT_ONLY void rewind (register FILE * fp) { _rewind_r (_REENT, fp); } #endif /* !_REENT_ONLY */ picolibc-1.7.4/newlib/libc/stdio/rget.c000066400000000000000000000033401414576234500177420ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* No user fns here. Pesch 15apr92. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "%W% (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" /* * Handle getc() when the buffer ran out: * Refill, then return the first character * in the newly-filled buffer. */ int __srget_r (struct _reent *ptr, register FILE *fp) { /* Ensure that any fake std stream is resolved before we call __srefill_r so we may access the true read buffer. */ CHECK_INIT(ptr, fp); if (__srefill_r (ptr, fp) == 0) { fp->_r--; return *fp->_p++; } return EOF; } /* This function isn't any longer declared in stdio.h, but it's required for backward compatibility with applications built against earlier dynamically built newlib libraries. */ int __srget (register FILE *fp) { return __srget_r (_REENT, fp); } picolibc-1.7.4/newlib/libc/stdio/scanf.c000066400000000000000000000032121414576234500200710ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" #ifndef _REENT_ONLY int scanf(const char *__restrict fmt, ...) { int ret; va_list ap; struct _reent *reent = _REENT; _REENT_SMALL_CHECK_INIT (reent); va_start (ap, fmt); ret = _vfscanf_r (reent, _stdin_r (reent), fmt, ap); va_end (ap); return ret; } #ifdef _NANO_FORMATTED_IO int iscanf (const char *, ...) _ATTRIBUTE ((__alias__("scanf"))); #endif #endif /* !_REENT_ONLY */ int _scanf_r(struct _reent *ptr, const char *__restrict fmt, ...) { int ret; va_list ap; _REENT_SMALL_CHECK_INIT (ptr); va_start (ap, fmt); ret = _vfscanf_r (ptr, _stdin_r (ptr), fmt, ap); va_end (ap); return (ret); } #ifdef _NANO_FORMATTED_IO int _iscanf_r (struct _reent *, const char *, ...) _ATTRIBUTE ((__alias__("_scanf_r"))); #endif picolibc-1.7.4/newlib/libc/stdio/sccl.c000066400000000000000000000065201414576234500177300ustar00rootroot00000000000000/*- * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* Split from vfscanf.c */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" /* * Fill in the given table from the scanset at the given format * (just after `['). Return a pointer to the character past the * closing `]'. The table has a 1 wherever characters should be * considered part of the scanset. */ u_char * __sccl (register char *tab, register u_char *fmt) { register int c, n, v; /* first `clear' the whole table */ c = *fmt++; /* first char hat => negated scanset */ if (c == '^') { v = 1; /* default => accept */ c = *fmt++; /* get new first char */ } else v = 0; /* default => reject */ /* should probably use memset here */ for (n = 0; n < 256; n++) tab[n] = v; if (c == 0) return fmt - 1; /* format ended before closing ] */ /* * Now set the entries corresponding to the actual scanset to the * opposite of the above. * * The first character may be ']' (or '-') without being special; the * last character may be '-'. */ v = 1 - v; for (;;) { tab[c] = v; /* take character c */ doswitch: n = *fmt++; /* and examine the next */ switch (n) { case 0: /* format ended too soon */ return fmt - 1; case '-': /* * A scanset of the form [01+-] is defined as `the digit 0, the * digit 1, the character +, the character -', but the effect of a * scanset such as [a-zA-Z0-9] is implementation defined. The V7 * Unix scanf treats `a-z' as `the letters a through z', but treats * `a-a' as `the letter a, the character -, and the letter a'. * * For compatibility, the `-' is not considerd to define a range if * the character following it is either a close bracket (required by * ANSI) or is not numerically greater than the character we just * stored in the table (c). */ n = *fmt; if (n == ']' || n < c) { c = '-'; break; /* resume the for(;;) */ } fmt++; do { /* fill in the range */ tab[++c] = v; } while (c < n); #if 1 /* XXX another disgusting compatibility hack */ /* * Alas, the V7 Unix scanf also treats formats such * as [a-c-e] as `the letters a through e'. This too * is permitted by the standard.... */ goto doswitch; #else c = *fmt++; if (c == 0) return fmt - 1; if (c == ']') return fmt; #endif break; case ']': /* end of scanset */ return fmt; default: /* just another character */ c = n; break; } } /* NOTREACHED */ } picolibc-1.7.4/newlib/libc/stdio/setbuf.c000066400000000000000000000046551414576234500203030ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---specify full buffering for a file or stream INDEX setbuf SYNOPSIS #include void setbuf(FILE *<[fp]>, char *<[buf]>); DESCRIPTION <> specifies that output to the file or stream identified by <[fp]> should be fully buffered. All output for this file will go to a buffer (of size <>, specified in `<>'). Output will be passed on to the host system only when the buffer is full, or when an input operation intervenes. You may, if you wish, supply your own buffer by passing a pointer to it as the argument <[buf]>. It must have size <>. You can also use <> as the value of <[buf]>, to signal that the <> function is to allocate the buffer. WARNINGS You may only use <> before performing any file operation other than opening the file. If you supply a non-null <[buf]>, you must ensure that the associated storage continues to be available until you close the stream identified by <[fp]>. RETURNS <> does not return a result. PORTABILITY Both ANSI C and the System V Interface Definition (Issue 2) require <>. However, they differ on the meaning of a <> buffer pointer: the SVID issue 2 specification says that a <> buffer pointer requests unbuffered output. For maximum portability, avoid <> buffer pointers. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include "local.h" void setbuf (FILE *__restrict fp, char *__restrict buf) { (void) setvbuf (fp, buf, buf ? _IOFBF : _IONBF, BUFSIZ); } picolibc-1.7.4/newlib/libc/stdio/setbuffer.c000066400000000000000000000045051414576234500207720ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* Modified copy of setbuf.c to support the setbuffer function defined as part of BSD. Modifications by Gareth Pearce, 2001. */ /* FUNCTION <>---specify full buffering for a file or stream with size INDEX setbuffer SYNOPSIS #include void setbuffer(FILE *<[fp]>, char *<[buf]>, int <[size]>); DESCRIPTION <> specifies that output to the file or stream identified by <[fp]> should be fully buffered. All output for this file will go to a buffer (of size <[size]>). Output will be passed on to the host system only when the buffer is full, or when an input operation intervenes. You may, if you wish, supply your own buffer by passing a pointer to it as the argument <[buf]>. It must have size <[size]>. You can also use <> as the value of <[buf]>, to signal that the <> function is to allocate the buffer. WARNINGS You may only use <> before performing any file operation other than opening the file. If you supply a non-null <[buf]>, you must ensure that the associated storage continues to be available until you close the stream identified by <[fp]>. RETURNS <> does not return a result. PORTABILITY This function comes from BSD not ANSI or POSIX. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include "local.h" void setbuffer (FILE * fp, char *buf, int size) { (void) setvbuf (fp, buf, buf ? _IOFBF : _IONBF, (size_t) size); } picolibc-1.7.4/newlib/libc/stdio/setlinebuf.c000066400000000000000000000035211414576234500211420ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* Modified copy of setbuf.c to support setlinebuf function defined as part of BSD. Modifications by Gareth Pearce, 2001. */ /* FUNCTION <>---specify line buffering for a file or stream INDEX setlinebuf SYNOPSIS #include void setlinebuf(FILE *<[fp]>); DESCRIPTION <> specifies that output to the file or stream identified by <[fp]> should be line buffered. This causes the file or stream to pass on output to the host system at every newline, as well as when the buffer is full, or when an input operation intervenes. WARNINGS You may only use <> before performing any file operation other than opening the file. RETURNS <> returns as per setvbuf. PORTABILITY This function comes from BSD not ANSI or POSIX. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include "local.h" int setlinebuf (FILE * fp) { return (setvbuf (fp, (char *) NULL, _IOLBF, (size_t) 0)); } picolibc-1.7.4/newlib/libc/stdio/setvbuf.c000066400000000000000000000137461414576234500204720ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>---specify file or stream buffering INDEX setvbuf SYNOPSIS #include int setvbuf(FILE *<[fp]>, char *<[buf]>, int <[mode]>, size_t <[size]>); DESCRIPTION Use <> to specify what kind of buffering you want for the file or stream identified by <[fp]>, by using one of the following values (from <>) as the <[mode]> argument: o+ o _IONBF Do not use a buffer: send output directly to the host system for the file or stream identified by <[fp]>. o _IOFBF Use full output buffering: output will be passed on to the host system only when the buffer is full, or when an input operation intervenes. o _IOLBF Use line buffering: pass on output to the host system at every newline, as well as when the buffer is full, or when an input operation intervenes. o- Use the <[size]> argument to specify how large a buffer you wish. You can supply the buffer itself, if you wish, by passing a pointer to a suitable area of memory as <[buf]>. Otherwise, you may pass <> as the <[buf]> argument, and <> will allocate the buffer. WARNINGS You may only use <> before performing any file operation other than opening the file. If you supply a non-null <[buf]>, you must ensure that the associated storage continues to be available until you close the stream identified by <[fp]>. RETURNS A <<0>> result indicates success, <> failure (invalid <[mode]> or <[size]> can cause failure). PORTABILITY Both ANSI C and the System V Interface Definition (Issue 2) require <>. However, they differ on the meaning of a <> buffer pointer: the SVID issue 2 specification says that a <> buffer pointer requests unbuffered output. For maximum portability, avoid <> buffer pointers. Both specifications describe the result on failure only as a nonzero value. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include "local.h" /* * Set one of the three kinds of buffering, optionally including a buffer. */ int setvbuf (register FILE * fp, char *buf, register int mode, register size_t size) { int ret = 0; struct _reent *reent = _REENT; size_t iosize; int ttyflag; CHECK_INIT (reent, fp); /* * Verify arguments. The `int' limit on `size' is due to this * particular implementation. Note, buf and size are ignored * when setting _IONBF. */ if (mode != _IONBF) if ((mode != _IOFBF && mode != _IOLBF) || (int)(_POINTER_INT) size < 0) return (EOF); /* * Write current buffer, if any; drop read count, if any. * Make sure putc() will not think fp is line buffered. * Free old buffer if it was from malloc(). Clear line and * non buffer flags, and clear malloc flag. */ _newlib_flockfile_start (fp); _fflush_r (reent, fp); if (HASUB(fp)) FREEUB(reent, fp); fp->_r = fp->_lbfsize = 0; if (fp->_flags & __SMBF) free ((void *) fp->_bf._base); fp->_flags &= ~(__SLBF | __SNBF | __SMBF | __SOPT | __SNPT | __SEOF); if (mode == _IONBF) goto nbf; /* * Find optimal I/O size for seek optimization. This also returns * a `tty flag' to suggest that we check isatty(fd), but we do not * care since our caller told us how to buffer. */ fp->_flags |= __swhatbuf_r (reent, fp, &iosize, &ttyflag); if (size == 0) { buf = NULL; size = iosize; } /* Allocate buffer if needed. */ if (buf == NULL) { if ((buf = malloc (size)) == NULL) { /* * Unable to honor user's request. We will return * failure, but try again with file system size. */ ret = EOF; if (size != iosize) { size = iosize; buf = malloc (size); } } if (buf == NULL) { /* No luck; switch to unbuffered I/O. */ nbf: fp->_flags |= __SNBF; fp->_w = 0; fp->_bf._base = fp->_p = fp->_nbuf; fp->_bf._size = 1; _newlib_flockfile_exit (fp); return (ret); } fp->_flags |= __SMBF; } /* * We're committed to buffering from here, so make sure we've * registered to flush buffers on exit. */ if (!reent->__sdidinit) __sinit(reent); #ifdef _FSEEK_OPTIMIZATION /* * Kill any seek optimization if the buffer is not the * right size. * * SHOULD WE ALLOW MULTIPLES HERE (i.e., ok iff (size % iosize) == 0)? */ if (size != iosize) fp->_flags |= __SNPT; #endif /* * Fix up the FILE fields, and set __cleanup for output flush on * exit (since we are buffered in some way). */ if (mode == _IOLBF) fp->_flags |= __SLBF; fp->_bf._base = fp->_p = (unsigned char *) buf; fp->_bf._size = size; /* fp->_lbfsize is still 0 */ if (fp->_flags & __SWR) { /* * Begin or continue writing: see __swsetup(). Note * that __SNBF is impossible (it was handled earlier). */ if (fp->_flags & __SLBF) { fp->_w = 0; fp->_lbfsize = -fp->_bf._size; } else fp->_w = size; } else { /* begin/continue reading, or stay in intermediate state */ fp->_w = 0; } _newlib_flockfile_end (fp); return 0; } picolibc-1.7.4/newlib/libc/stdio/siprintf.c000066400000000000000000000077351414576234500206530ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>, <>, <>, <>, <>, <>---format output (integer only) INDEX fiprintf INDEX _fiprintf_r INDEX iprintf INDEX _iprintf_r INDEX siprintf INDEX _siprintf_r INDEX sniprintf INDEX _sniprintf_r INDEX asiprintf INDEX _asiprintf_r INDEX asniprintf INDEX _asniprintf_r SYNOPSIS #include int iprintf(const char *<[format]>, ...); int fiprintf(FILE *<[fd]>, const char *<[format]> , ...); int siprintf(char *<[str]>, const char *<[format]>, ...); int sniprintf(char *<[str]>, size_t <[size]>, const char *<[format]>, ...); int asiprintf(char **<[strp]>, const char *<[format]>, ...); char *asniprintf(char *<[str]>, size_t *<[size]>, const char *<[format]>, ...); int _iprintf_r(struct _reent *<[ptr]>, const char *<[format]>, ...); int _fiprintf_r(struct _reent *<[ptr]>, FILE *<[fd]>, const char *<[format]>, ...); int _siprintf_r(struct _reent *<[ptr]>, char *<[str]>, const char *<[format]>, ...); int _sniprintf_r(struct _reent *<[ptr]>, char *<[str]>, size_t <[size]>, const char *<[format]>, ...); int _asiprintf_r(struct _reent *<[ptr]>, char **<[strp]>, const char *<[format]>, ...); char *_asniprintf_r(struct _reent *<[ptr]>, char *<[str]>, size_t *<[size]>, const char *<[format]>, ...); DESCRIPTION <>, <>, <>, <>, <>, and <> are the same as <>, <>, <>, <>, <>, and <>, respectively, except that they restrict usage to non-floating-point format specifiers. <<_iprintf_r>>, <<_fiprintf_r>>, <<_asiprintf_r>>, <<_siprintf_r>>, <<_sniprintf_r>>, <<_asniprintf_r>> are simply reentrant versions of the functions above. RETURNS Similar to <>, <>, <>, <>, <>, and <>. PORTABILITY <>, <>, <>, <>, <>, and <> are newlib extensions. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "local.h" int _siprintf_r (struct _reent *ptr, char *str, const char *fmt, ...) { int ret; va_list ap; FILE f; f._flags = __SWR | __SSTR; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = INT_MAX; f._file = -1; /* No file. */ va_start (ap, fmt); ret = _svfiprintf_r (ptr, &f, fmt, ap); va_end (ap); *f._p = 0; return (ret); } #ifndef _REENT_ONLY int siprintf (char *str, const char *fmt, ...) { int ret; va_list ap; FILE f; f._flags = __SWR | __SSTR; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = INT_MAX; f._file = -1; /* No file. */ va_start (ap, fmt); ret = _svfiprintf_r (_REENT, &f, fmt, ap); va_end (ap); *f._p = 0; return (ret); } #endif picolibc-1.7.4/newlib/libc/stdio/siscanf.c000066400000000000000000000067141414576234500204370ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>, <>, <>---scan and format non-floating input INDEX iscanf INDEX _iscanf_r INDEX fiscanf INDEX _fiscanf_r INDEX siscanf INDEX _siscanf_r SYNOPSIS #include int iscanf(const char *<[format]>, ...); int fiscanf(FILE *<[fd]>, const char *<[format]>, ...); int siscanf(const char *<[str]>, const char *<[format]>, ...); int _iscanf_r(struct _reent *<[ptr]>, const char *<[format]>, ...); int _fiscanf_r(struct _reent *<[ptr]>, FILE *<[fd]>, const char *<[format]>, ...); int _siscanf_r(struct _reent *<[ptr]>, const char *<[str]>, const char *<[format]>, ...); DESCRIPTION <>, <>, and <> are the same as <>, <>, and <> respectively, only that they restrict the available formats to non-floating-point format specifiers. The routines <<_iscanf_r>>, <<_fiscanf_r>>, and <<_siscanf_r>> are reentrant versions of <>, <>, and <> that take an additional first argument pointing to a reentrancy structure. RETURNS <> returns the number of input fields successfully scanned, converted and stored; the return value does not include scanned fields which were not stored. If <> attempts to read at end-of-file, the return value is <>. If no fields were stored, the return value is <<0>>. PORTABILITY <>, <>, and <> are newlib extensions. Supporting OS subroutines required: <>, <>, <>, <>, <>, <>, <>. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include "local.h" #ifndef _REENT_ONLY int siscanf (const char *str, const char *fmt, ...) { int ret; va_list ap; FILE f; f._flags = __SRD | __SSTR; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._r = strlen (str); f._read = __seofread; f._ub._base = NULL; f._lb._base = NULL; f._file = -1; /* No file. */ va_start (ap, fmt); ret = __ssvfiscanf_r (_REENT, &f, fmt, ap); va_end (ap); return ret; } #endif /* !_REENT_ONLY */ int _siscanf_r (struct _reent *ptr, const char *str, const char *fmt, ...) { int ret; va_list ap; FILE f; f._flags = __SRD | __SSTR; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._r = strlen (str); f._read = __seofread; f._ub._base = NULL; f._lb._base = NULL; f._file = -1; /* No file. */ va_start (ap, fmt); ret = __ssvfiscanf_r (ptr, &f, fmt, ap); va_end (ap); return ret; } picolibc-1.7.4/newlib/libc/stdio/sniprintf.c000066400000000000000000000042011414576234500210120ustar00rootroot00000000000000/* * Copyright (c) 1990, 2007 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* This code created by modifying snprintf.c so copyright inherited. */ /* doc in siprintf.c */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include "local.h" int _sniprintf_r (struct _reent *ptr, char *str, size_t size, const char *fmt, ...) { int ret; va_list ap; FILE f; if (size > INT_MAX) { __errno_r(ptr) = EOVERFLOW; return EOF; } f._flags = __SWR | __SSTR; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = (size > 0 ? size - 1 : 0); f._file = -1; /* No file. */ va_start (ap, fmt); ret = _svfiprintf_r (ptr, &f, fmt, ap); va_end (ap); if (ret < EOF) __errno_r(ptr) = EOVERFLOW; if (size > 0) *f._p = 0; return (ret); } #ifndef _REENT_ONLY int sniprintf (char *str, size_t size, const char *fmt, ...) { int ret; va_list ap; FILE f; struct _reent *ptr = _REENT; if (size > INT_MAX) { __errno_r(ptr) = EOVERFLOW; return EOF; } f._flags = __SWR | __SSTR; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = (size > 0 ? size - 1 : 0); f._file = -1; /* No file. */ va_start (ap, fmt); ret = _svfiprintf_r (ptr, &f, fmt, ap); va_end (ap); if (ret < EOF) __errno_r(ptr) = EOVERFLOW; if (size > 0) *f._p = 0; return (ret); } #endif picolibc-1.7.4/newlib/libc/stdio/snprintf.c000066400000000000000000000047551414576234500206570ustar00rootroot00000000000000/* * Copyright (c) 1990, 2007 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* doc in sprintf.c */ /* This code created by modifying sprintf.c so copyright inherited. */ #define _DEFAULT_SOURCE #include <_ansi.h> #include #include #include #include #include "local.h" int _snprintf_r (struct _reent *ptr, char *__restrict str, size_t size, const char *__restrict fmt, ...) { int ret; va_list ap; FILE f; if (size > INT_MAX) { __errno_r(ptr) = EOVERFLOW; return EOF; } f._flags = __SWR | __SSTR; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = (size > 0 ? size - 1 : 0); f._file = -1; /* No file. */ va_start (ap, fmt); ret = _svfprintf_r (ptr, &f, fmt, ap); va_end (ap); if (ret < EOF) __errno_r(ptr) = EOVERFLOW; if (size > 0) *f._p = 0; return (ret); } #ifdef _NANO_FORMATTED_IO int _sniprintf_r (struct _reent *, char *, size_t, const char *, ...) _ATTRIBUTE ((__alias__("_snprintf_r"))); #endif #ifndef _REENT_ONLY #undef snprintf int snprintf (char *__restrict str, size_t size, const char *__restrict fmt, ...) { int ret; va_list ap; FILE f; struct _reent *ptr = _REENT; if (size > INT_MAX) { __errno_r(ptr) = EOVERFLOW; return EOF; } f._flags = __SWR | __SSTR; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = (size > 0 ? size - 1 : 0); f._file = -1; /* No file. */ va_start (ap, fmt); ret = _svfprintf_r (ptr, &f, fmt, ap); va_end (ap); if (ret < EOF) __errno_r(ptr) = EOVERFLOW; if (size > 0) *f._p = 0; return (ret); } #ifdef _NANO_FORMATTED_IO int sniprintf (char *, size_t, const char *, ...) _ATTRIBUTE ((__alias__("snprintf"))); #endif #endif picolibc-1.7.4/newlib/libc/stdio/sprintf.c000066400000000000000000000475161414576234500205030ustar00rootroot00000000000000/* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * and/or other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ /* FUNCTION <>, <>, <>, <>, <>, <>---format output INDEX fprintf INDEX _fprintf_r INDEX printf INDEX _printf_r INDEX asprintf INDEX _asprintf_r INDEX sprintf INDEX _sprintf_r INDEX snprintf INDEX _snprintf_r INDEX asnprintf INDEX _asnprintf_r SYNOPSIS #include int printf(const char *restrict <[format]>, ...); int fprintf(FILE *restrict <[fd]>, const char *restrict <[format]>, ...); int sprintf(char *restrict <[str]>, const char *restrict <[format]>, ...); int snprintf(char *restrict <[str]>, size_t <[size]>, const char *restrict <[format]>, ...); int asprintf(char **restrict <[strp]>, const char *restrict <[format]>, ...); char *asnprintf(char *restrict <[str]>, size_t *restrict <[size]>, const char *restrict <[format]>, ...); int _printf_r(struct _reent *<[ptr]>, const char *restrict <[format]>, ...); int _fprintf_r(struct _reent *<[ptr]>, FILE *restrict <[fd]>, const char *restrict <[format]>, ...); int _sprintf_r(struct _reent *<[ptr]>, char *restrict <[str]>, const char *restrict <[format]>, ...); int _snprintf_r(struct _reent *<[ptr]>, char *restrict <[str]>, size_t <[size]>, const char *restrict <[format]>, ...); int _asprintf_r(struct _reent *<[ptr]>, char **restrict <[strp]>, const char *restrict <[format]>, ...); char *_asnprintf_r(struct _reent *<[ptr]>, char *restrict <[str]>, size_t *restrict <[size]>, const char *restrict <[format]>, ...); DESCRIPTION <> accepts a series of arguments, applies to each a format specifier from <<*<[format]>>>, and writes the formatted data to <>, without a terminating NUL character. The behavior of <> is undefined if there are not enough arguments for the format. <> returns when it reaches the end of the format string. If there are more arguments than the format requires, excess arguments are ignored. <> is like <>, except that output is directed to the stream <[fd]> rather than <>. <> is like <>, except that output is directed to the buffer <[str]>, and a terminating NUL is output. Behavior is undefined if more output is generated than the buffer can hold. <> is like <>, except that output is limited to at most <[size]> bytes, including the terminating <>. As a special case, if <[size]> is 0, <[str]> can be NULL, and <> merely calculates how many bytes would be printed. <> is like <>, except that the output is stored in a dynamically allocated buffer, <[pstr]>, which should be freed later with <>. <> is like <>, except that the return type is either the original <[str]> if it was large enough, or a dynamically allocated string if the output exceeds *<[size]>; the length of the result is returned in *<[size]>. When dynamic allocation occurs, the contents of the original <[str]> may have been modified. For <>, <>, and <>, the behavior is undefined if the output <<*<[str]>>> overlaps with one of the arguments. Behavior is also undefined if the argument for <<%n>> within <<*<[format]>>> overlaps another argument. <[format]> is a pointer to a character string containing two types of objects: ordinary characters (other than <<%>>), which are copied unchanged to the output, and conversion specifications, each of which is introduced by <<%>>. (To include <<%>> in the output, use <<%%>> in the format string.) A conversion specification has the following form: . %[<[pos]>][<[flags]>][<[width]>][.<[prec]>][<[size]>]<[type]> The fields of the conversion specification have the following meanings: O+ o <[pos]> Conversions normally consume arguments in the order that they are presented. However, it is possible to consume arguments out of order, and reuse an argument for more than one conversion specification (although the behavior is undefined if the same argument is requested with different types), by specifying <[pos]>, which is a decimal integer followed by '$'. The integer must be between 1 and from limits.h, and if argument <<%n$>> is requested, all earlier arguments must be requested somewhere within <[format]>. If positional parameters are used, then all conversion specifications except for <<%%>> must specify a position. This positional parameters method is a POSIX extension to the C standard definition for the functions. o <[flags]> <[flags]> is an optional sequence of characters which control output justification, numeric signs, decimal points, trailing zeros, and octal and hex prefixes. The flag characters are minus (<<->>), plus (<<+>>), space ( ), zero (<<0>>), sharp (<<#>>), and quote (<<'>>). They can appear in any combination, although not all flags can be used for all conversion specification types. o+ o ' A POSIX extension to the C standard. However, this implementation presently treats it as a no-op, which is the default behavior for the C locale, anyway. (If it did what it is supposed to, when <[type]> were <>, <>, <>, <>, <>, <>, or <>, the integer portion of the conversion would be formatted with thousands' grouping wide characters.) o - The result of the conversion is left justified, and the right is padded with blanks. If you do not use this flag, the result is right justified, and padded on the left. o + The result of a signed conversion (as determined by <[type]> of <>, <>, <>, <>, <>, <>, <>, <>, <>, or <>) will always begin with a plus or minus sign. (If you do not use this flag, positive values do not begin with a plus sign.) o " " (space) If the first character of a signed conversion specification is not a sign, or if a signed conversion results in no characters, the result will begin with a space. If the space ( ) flag and the plus (<<+>>) flag both appear, the space flag is ignored. o 0 If the <[type]> character is <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, or <>: leading zeros are used to pad the field width (following any indication of sign or base); no spaces are used for padding. If the zero (<<0>>) and minus (<<->>) flags both appear, the zero (<<0>>) flag will be ignored. For <>, <>, <>, <>, <>, and <> conversions, if a precision <[prec]> is specified, the zero (<<0>>) flag is ignored. Note that <<0>> is interpreted as a flag, not as the beginning of a field width. o # The result is to be converted to an alternative form, according to the <[type]> character. o- The alternative form output with the # flag depends on the <[type]> character: o+ o o Increases precision to force the first digit of the result to be a zero. o x A non-zero result will have a <<0x>> prefix. o X A non-zero result will have a <<0X>> prefix. o a, A, e, E, f, or F The result will always contain a decimal point even if no digits follow the point. (Normally, a decimal point appears only if a digit follows it.) Trailing zeros are removed. o g or G The result will always contain a decimal point even if no digits follow the point. Trailing zeros are not removed. o all others Undefined. o- o <[width]> <[width]> is an optional minimum field width. You can either specify it directly as a decimal integer, or indirectly by using instead an asterisk (<<*>>), in which case an <> argument is used as the field width. If positional arguments are used, then the width must also be specified positionally as <<*m$>>, with m as a decimal integer. Negative field widths are treated as specifying the minus (<<->>) flag for left justfication, along with a positive field width. The resulting format may be wider than the specified width. o <[prec]> <[prec]> is an optional field; if present, it is introduced with `<<.>>' (a period). You can specify the precision either directly as a decimal integer or indirectly by using an asterisk (<<*>>), in which case an <> argument is used as the precision. If positional arguments are used, then the precision must also be specified positionally as <<*m$>>, with m as a decimal integer. Supplying a negative precision is equivalent to omitting the precision. If only a period is specified the precision is zero. The effect depends on the conversion <[type]>. o+ o d, i, o, u, x, or X Minimum number of digits to appear. If no precision is given, defaults to 1. o a or A Number of digits to appear after the decimal point. If no precision is given, the precision defaults to the minimum needed for an exact representation. o e, E, f or F Number of digits to appear after the decimal point. If no precision is given, the precision defaults to 6. o g or G Maximum number of significant digits. A precision of 0 is treated the same as a precision of 1. If no precision is given, the precision defaults to 6. o s or S Maximum number of characters to print from the string. If no precision is given, the entire string is printed. o all others undefined. o- o <[size]> <[size]> is an optional modifier that changes the data type that the corresponding argument has. Behavior is unspecified if a size is given that does not match the <[type]>. o+ o hh With <>, <>, <>, <>, <>, or <>, specifies that the argument should be converted to a <> or <> before printing. With <>, specifies that the argument is a pointer to a <>. o h With <>, <>, <>, <>, <>, or <>, specifies that the argument should be converted to a <> or <> before printing. With <>, specifies that the argument is a pointer to a <>. o l With <>, <>, <>, <>, <>, or <>, specifies that the argument is a <> or <>. With <>, specifies that the argument has type <>. With <>, specifies that the argument is a pointer to <>. With <>, specifies that the argument is a pointer to a <>. With <>, <>, <>, <>, <>, <>, <>, or <>, has no effect (because of vararg promotion rules, there is no need to distinguish between <> and <>). o ll With <>, <>, <>, <>, <>, or <>, specifies that the argument is a <> or <>. With <>, specifies that the argument is a pointer to a <>. o j With <>, <>, <>, <>, <>, or <>, specifies that the argument is an <> or <>. With <>, specifies that the argument is a pointer to an <>. o z With <>, <>, <>, <>, <>, or <>, specifies that the argument is a <>. With <>, specifies that the argument is a pointer to a <>. o t With <>, <>, <>, <>, <>, or <>, specifies that the argument is a <>. With <>, specifies that the argument is a pointer to a <>. o L With <>, <>, <>, <>, <>, <>, <>, or <>, specifies that the argument is a <>. o- o <[type]> <[type]> specifies what kind of conversion <> performs. Here is a table of these: o+ o % Prints the percent character (<<%>>). o c Prints <[arg]> as single character. If the <> size specifier is in effect, a multibyte character is printed. o C Short for <<%lc>>. A POSIX extension to the C standard. o s Prints the elements of a pointer to <> until the precision or a null character is reached. If the <> size specifier is in effect, the pointer is to an array of <>, and the string is converted to multibyte characters before printing. o S Short for <<%ls>>. A POSIX extension to the C standard. o d or i Prints a signed decimal integer; takes an <>. Leading zeros are inserted as necessary to reach the precision. A value of 0 with a precision of 0 produces an empty string. o D Newlib extension, short for <<%ld>>. o o Prints an unsigned octal integer; takes an <>. Leading zeros are inserted as necessary to reach the precision. A value of 0 with a precision of 0 produces an empty string. o O Newlib extension, short for <<%lo>>. o u Prints an unsigned decimal integer; takes an <>. Leading zeros are inserted as necessary to reach the precision. A value of 0 with a precision of 0 produces an empty string. o U Newlib extension, short for <<%lu>>. o x Prints an unsigned hexadecimal integer (using <> as digits beyond <<9>>); takes an <>. Leading zeros are inserted as necessary to reach the precision. A value of 0 with a precision of 0 produces an empty string. o X Like <>, but uses <> as digits beyond <<9>>. o f Prints a signed value of the form <<[-]9999.9999>>, with the precision determining how many digits follow the decimal point; takes a <> (remember that <> promotes to <> as a vararg). The low order digit is rounded to even. If the precision results in at most DECIMAL_DIG digits, the result is rounded correctly; if more than DECIMAL_DIG digits are printed, the result is only guaranteed to round back to the original value. If the value is infinite, the result is <>, and no zero padding is performed. If the value is not a number, the result is <>, and no zero padding is performed. o F Like <>, but uses <> and <> for non-finite numbers. o e Prints a signed value of the form <<[-]9.9999e[+|-]999>>; takes a <>. The digit before the decimal point is non-zero if the value is non-zero. The precision determines how many digits appear between <<.>> and <>, and the exponent always contains at least two digits. The value zero has an exponent of zero. If the value is not finite, it is printed like <>. o E Like <>, but using <> to introduce the exponent, and like <> for non-finite values. o g Prints a signed value in either <> or <> form, based on the given value and precision---an exponent less than -4 or greater than the precision selects the <> form. Trailing zeros and the decimal point are printed only if necessary; takes a <>. o G Like <>, except use <> or <> form. o a Prints a signed value of the form <<[-]0x1.ffffp[+|-]9>>; takes a <>. The letters <> are used for digits beyond <<9>>. The precision determines how many digits appear after the decimal point. The exponent contains at least one digit, and is a decimal value representing the power of 2; a value of 0 has an exponent of 0. Non-finite values are printed like <>. o A Like <>, except uses <>, <